Merge "assertValidHtml for checking html in test cases."
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Fri, 17 Jan 2014 11:55:50 +0000 (11:55 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Fri, 17 Jan 2014 11:55:50 +0000 (11:55 +0000)
979 files changed:
.gitignore
.jshintignore
.travis.yml [new file with mode: 0644]
CREDITS
HISTORY
RELEASE-NOTES-1.22 [deleted file]
RELEASE-NOTES-1.23
api.php
composer-example.json
docs/hooks.txt
img_auth.php
includes/AjaxResponse.php
includes/Article.php
includes/AutoLoader.php
includes/Block.php
includes/CategoryViewer.php
includes/ChangeTags.php
includes/Collation.php
includes/Cookie.php
includes/DefaultSettings.php
includes/Defines.php
includes/EditPage.php
includes/Exception.php
includes/Export.php
includes/ForkController.php
includes/GitInfo.php
includes/GlobalFunctions.php
includes/HTMLForm.php [deleted file]
includes/Hooks.php
includes/Html.php
includes/HtmlFormatter.php
includes/HttpFunctions.php
includes/ImagePage.php
includes/Import.php
includes/LinkFilter.php
includes/Linker.php
includes/MagicWord.php
includes/Message.php
includes/Namespace.php
includes/OutputPage.php
includes/Pager.php
includes/Preferences.php
includes/PrefixSearch.php
includes/ProtectionForm.php
includes/ProxyTools.php [deleted file]
includes/QueryPage.php
includes/Revision.php
includes/Sanitizer.php
includes/Setup.php
includes/Skin.php
includes/SkinTemplate.php
includes/SpecialPage.php [deleted file]
includes/SpecialPageFactory.php [deleted file]
includes/Status.php
includes/StreamFile.php
includes/Title.php
includes/TitleArray.php
includes/User.php
includes/UserArray.php
includes/UserMailer.php
includes/WebRequest.php
includes/Wiki.php
includes/WikiError.php [deleted file]
includes/WikiFilePage.php
includes/WikiPage.php
includes/Xml.php
includes/ZhClient.php [deleted file]
includes/ZhConversion.php
includes/actions/HistoryAction.php
includes/actions/InfoAction.php
includes/actions/RawAction.php
includes/actions/RevisiondeleteAction.php
includes/actions/RollbackAction.php
includes/api/ApiBase.php
includes/api/ApiFeedContributions.php
includes/api/ApiFileRevert.php
includes/api/ApiMain.php
includes/api/ApiPageSet.php
includes/api/ApiParse.php
includes/api/ApiQuery.php
includes/api/ApiQueryAllCategories.php
includes/api/ApiQueryAllImages.php
includes/api/ApiQueryAllLinks.php
includes/api/ApiQueryAllPages.php
includes/api/ApiQueryBase.php
includes/api/ApiQueryCategoryMembers.php
includes/api/ApiQueryContributors.php [new file with mode: 0644]
includes/api/ApiQueryDeletedrevs.php
includes/api/ApiQueryFileRepoInfo.php
includes/api/ApiQueryFilearchive.php
includes/api/ApiQueryImageInfo.php
includes/api/ApiQueryLogEvents.php
includes/api/ApiQueryRandom.php
includes/api/ApiQueryRecentChanges.php
includes/api/ApiQueryRevisions.php
includes/api/ApiQuerySiteinfo.php
includes/api/ApiQueryUserContributions.php
includes/api/ApiQueryWatchlist.php
includes/api/ApiUnblock.php
includes/api/ApiUpload.php
includes/api/ApiUserrights.php
includes/api/ApiWatch.php
includes/cache/BacklinkCache.php
includes/cache/CacheDependency.php
includes/cache/FileCacheBase.php
includes/cache/LinkCache.php
includes/cache/LocalisationCache.php
includes/cache/MapCacheLRU.php [new file with mode: 0644]
includes/cache/MessageCache.php
includes/cache/UserCache.php
includes/changes/ChangesList.php
includes/changes/EnhancedChangesList.php
includes/changes/RecentChange.php
includes/clientpool/RedisConnectionPool.php
includes/content/TextContent.php
includes/content/TextContentHandler.php
includes/content/WikitextContent.php
includes/context/ContextSource.php
includes/context/DerivativeContext.php
includes/context/IContextSource.php
includes/context/RequestContext.php
includes/dao/DBAccessBase.php
includes/db/ChronologyProtector.php
includes/db/CloneDatabase.php
includes/db/Database.php
includes/db/DatabaseError.php
includes/db/DatabaseMssql.php
includes/db/DatabaseMysql.php
includes/db/DatabaseMysqlBase.php
includes/db/DatabaseMysqli.php
includes/db/DatabaseOracle.php
includes/db/DatabasePostgres.php
includes/db/DatabaseSqlite.php
includes/db/DatabaseUtility.php
includes/db/LBFactory.php
includes/db/LBFactoryMulti.php [new file with mode: 0644]
includes/db/LBFactorySingle.php [new file with mode: 0644]
includes/db/LBFactory_Multi.php [deleted file]
includes/db/LBFactory_Single.php [deleted file]
includes/db/LoadBalancer.php
includes/db/LoadMonitor.php
includes/db/ORMTable.php
includes/deferred/LinksUpdate.php
includes/deferred/SquidUpdate.php
includes/diff/DairikiDiff.php
includes/diff/DifferenceEngine.php
includes/externalstore/ExternalStoreDB.php
includes/filebackend/FSFile.php
includes/filebackend/FileBackend.php
includes/filebackend/FileBackendGroup.php
includes/filebackend/FileBackendMultiWrite.php
includes/filebackend/FileBackendStore.php
includes/filebackend/FileOp.php
includes/filebackend/MemoryFileBackend.php [new file with mode: 0644]
includes/filebackend/SwiftFileBackend.php
includes/filebackend/lockmanager/RedisLockManager.php
includes/filerepo/FSRepo.php
includes/filerepo/FileRepo.php
includes/filerepo/FileRepoStatus.php
includes/filerepo/ForeignAPIRepo.php
includes/filerepo/ForeignDBRepo.php
includes/filerepo/ForeignDBViaLBRepo.php
includes/filerepo/LocalRepo.php
includes/filerepo/NullRepo.php
includes/filerepo/RepoGroup.php
includes/filerepo/file/ArchivedFile.php
includes/filerepo/file/File.php
includes/filerepo/file/ForeignAPIFile.php
includes/filerepo/file/ForeignDBFile.php
includes/filerepo/file/LocalFile.php
includes/filerepo/file/OldLocalFile.php
includes/filerepo/file/UnregisteredLocalFile.php
includes/gallery/TraditionalImageGallery.php
includes/htmlform/HTMLApiField.php [new file with mode: 0644]
includes/htmlform/HTMLButtonField.php [new file with mode: 0644]
includes/htmlform/HTMLCheckField.php [new file with mode: 0644]
includes/htmlform/HTMLCheckMatrix.php [new file with mode: 0644]
includes/htmlform/HTMLEditTools.php [new file with mode: 0644]
includes/htmlform/HTMLFloatField.php [new file with mode: 0644]
includes/htmlform/HTMLForm.php [new file with mode: 0644]
includes/htmlform/HTMLFormField.php [new file with mode: 0644]
includes/htmlform/HTMLFormFieldRequiredOptionsException.php [new file with mode: 0644]
includes/htmlform/HTMLHiddenField.php [new file with mode: 0644]
includes/htmlform/HTMLInfoField.php [new file with mode: 0644]
includes/htmlform/HTMLIntField.php [new file with mode: 0644]
includes/htmlform/HTMLMultiSelectField.php [new file with mode: 0644]
includes/htmlform/HTMLNestedFilterable.php [new file with mode: 0644]
includes/htmlform/HTMLRadioField.php [new file with mode: 0644]
includes/htmlform/HTMLSelectAndOtherField.php [new file with mode: 0644]
includes/htmlform/HTMLSelectField.php [new file with mode: 0644]
includes/htmlform/HTMLSelectOrOtherField.php [new file with mode: 0644]
includes/htmlform/HTMLSubmitField.php [new file with mode: 0644]
includes/htmlform/HTMLTextAreaField.php [new file with mode: 0644]
includes/htmlform/HTMLTextField.php [new file with mode: 0644]
includes/installer/DatabaseInstaller.php
includes/installer/Installer.i18n.php
includes/installer/LocalSettingsGenerator.php
includes/installer/MysqlUpdater.php
includes/installer/OracleInstaller.php
includes/installer/OracleUpdater.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
includes/installer/WebInstallerOutput.php
includes/installer/WebInstallerPage.php
includes/interwiki/Interwiki.php
includes/job/Job.php
includes/job/JobQueueDB.php
includes/job/JobQueueFederated.php
includes/job/JobQueueGroup.php
includes/job/JobQueueRedis.php
includes/job/aggregator/JobQueueAggregatorRedis.php
includes/job/jobs/AssembleUploadChunksJob.php
includes/job/jobs/DoubleRedirectJob.php
includes/job/jobs/DuplicateJob.php
includes/job/jobs/EmaillingJob.php
includes/job/jobs/EnotifNotifyJob.php
includes/job/jobs/HTMLCacheUpdateJob.php
includes/job/jobs/NullJob.php
includes/job/jobs/PublishStashedFileJob.php
includes/job/jobs/RefreshLinksJob.php
includes/job/jobs/RefreshLinksJob2.php
includes/job/jobs/UploadFromUrlJob.php
includes/libs/CSSMin.php
includes/libs/HashRing.php [new file with mode: 0644]
includes/libs/MWMessagePack.php [new file with mode: 0644]
includes/libs/MappedIterator.php [new file with mode: 0644]
includes/libs/MultiHttpClient.php [new file with mode: 0644]
includes/libs/RunningStat.php [new file with mode: 0644]
includes/libs/ScopedCallback.php [new file with mode: 0644]
includes/libs/XmlTypeCheck.php
includes/logging/DeleteLogFormatter.php
includes/logging/LogEntry.php
includes/logging/LogEventsList.php
includes/logging/LogFormatter.php
includes/logging/LogPage.php
includes/logging/LogPager.php
includes/logging/MoveLogFormatter.php
includes/logging/NewUsersLogFormatter.php
includes/logging/PatrolLog.php
includes/logging/PatrolLogFormatter.php
includes/logging/RightsLogFormatter.php
includes/media/BMP.php
includes/media/Bitmap.php
includes/media/BitmapMetadataHandler.php
includes/media/Bitmap_ClientOnly.php
includes/media/DjVu.php
includes/media/DjVuImage.php
includes/media/Exif.php
includes/media/ExifBitmap.php
includes/media/FormatMetadata.php
includes/media/GIF.php
includes/media/GIFMetadataExtractor.php
includes/media/IPTC.php
includes/media/ImageHandler.php
includes/media/Jpeg.php
includes/media/JpegMetadataExtractor.php
includes/media/MediaHandler.php
includes/media/MediaTransformOutput.php
includes/media/PNG.php
includes/media/PNGMetadataExtractor.php
includes/media/SVG.php
includes/media/SVGMetadataExtractor.php
includes/media/Tiff.php
includes/media/XCF.php
includes/media/XMP.php
includes/media/XMPInfo.php
includes/media/XMPValidate.php
includes/normal/.gitignore [new file with mode: 0644]
includes/normal/Makefile
includes/normal/Utf8Case.php [deleted file]
includes/normal/Utf8CaseGenerate.php [deleted file]
includes/objectcache/DBABagOStuff.php [deleted file]
includes/objectcache/EhcacheBagOStuff.php [deleted file]
includes/objectcache/HashBagOStuff.php
includes/objectcache/MemcachedClient.php
includes/objectcache/RedisBagOStuff.php
includes/objectcache/SqlBagOStuff.php
includes/parser/CacheTime.php
includes/parser/CoreParserFunctions.php
includes/parser/LinkHolderArray.php
includes/parser/Parser.php
includes/parser/ParserCache.php
includes/parser/ParserOptions.php
includes/parser/ParserOutput.php
includes/parser/Preprocessor_DOM.php
includes/parser/Preprocessor_Hash.php
includes/profiler/Profiler.php
includes/profiler/ProfilerMwprof.php [new file with mode: 0644]
includes/profiler/ProfilerSimple.php
includes/rcfeed/IRCColourfulRCFeedFormatter.php
includes/rcfeed/JSONRCFeedFormatter.php
includes/rcfeed/MachineReadableRCFeedFormatter.php [new file with mode: 0644]
includes/rcfeed/RCFeedEngine.php
includes/rcfeed/RCFeedFormatter.php
includes/rcfeed/RedisPubSubFeedEngine.php
includes/rcfeed/UDPRCFeedEngine.php
includes/rcfeed/XMLRCFeedFormatter.php [new file with mode: 0644]
includes/resourceloader/ResourceLoader.php
includes/resourceloader/ResourceLoaderFileModule.php
includes/resourceloader/ResourceLoaderModule.php
includes/resourceloader/ResourceLoaderStartUpModule.php
includes/resourceloader/ResourceLoaderUserCSSPrefsModule.php
includes/resourceloader/ResourceLoaderUserGroupsModule.php
includes/resourceloader/ResourceLoaderUserOptionsModule.php
includes/resourceloader/ResourceLoaderWikiModule.php
includes/revisiondelete/RevisionDelete.php
includes/search/SearchEngine.php
includes/specialpage/FormSpecialPage.php [new file with mode: 0644]
includes/specialpage/IncludableSpecialPage.php [new file with mode: 0644]
includes/specialpage/RedirectSpecialPage.php [new file with mode: 0644]
includes/specialpage/SpecialPage.php [new file with mode: 0644]
includes/specialpage/SpecialPageFactory.php [new file with mode: 0644]
includes/specialpage/UnlistedSpecialPage.php [new file with mode: 0644]
includes/specials/SpecialAllpages.php
includes/specials/SpecialBlock.php
includes/specials/SpecialBlockList.php
includes/specials/SpecialBooksources.php
includes/specials/SpecialChangeEmail.php
includes/specials/SpecialChangePassword.php
includes/specials/SpecialConfirmemail.php
includes/specials/SpecialContributions.php
includes/specials/SpecialCreateAccount.php [new file with mode: 0644]
includes/specials/SpecialDeletedContributions.php
includes/specials/SpecialEditWatchlist.php
includes/specials/SpecialEmailuser.php
includes/specials/SpecialExpandTemplates.php
includes/specials/SpecialExport.php
includes/specials/SpecialFileDuplicateSearch.php
includes/specials/SpecialImport.php
includes/specials/SpecialJavaScriptTest.php
includes/specials/SpecialLinkSearch.php
includes/specials/SpecialListfiles.php
includes/specials/SpecialListusers.php
includes/specials/SpecialLonelypages.php
includes/specials/SpecialMIMEsearch.php
includes/specials/SpecialMergeHistory.php
includes/specials/SpecialMovepage.php
includes/specials/SpecialMyRedirectPages.php [new file with mode: 0644]
includes/specials/SpecialNewpages.php
includes/specials/SpecialPermanentLink.php [new file with mode: 0644]
includes/specials/SpecialPreferences.php
includes/specials/SpecialPrefixindex.php
includes/specials/SpecialProtectedpages.php
includes/specials/SpecialProtectedtitles.php
includes/specials/SpecialRandomInCategory.php
includes/specials/SpecialRandompage.php
includes/specials/SpecialRecentchanges.php
includes/specials/SpecialRecentchangeslinked.php
includes/specials/SpecialRedirect.php
includes/specials/SpecialRevisiondelete.php
includes/specials/SpecialSearch.php
includes/specials/SpecialSpecialpages.php
includes/specials/SpecialUndelete.php
includes/specials/SpecialUpload.php
includes/specials/SpecialUploadStash.php
includes/specials/SpecialUserlogin.php
includes/specials/SpecialUserrights.php
includes/specials/SpecialVersion.php
includes/specials/SpecialWantedcategories.php
includes/specials/SpecialWatchlist.php
includes/specials/SpecialWhatlinkshere.php
includes/specials/SpecialWithoutinterwiki.php
includes/templates/NoLocalSettings.php
includes/templates/Usercreate.php
includes/upload/UploadBase.php
includes/upload/UploadFromUrl.php
includes/utils/Cdb.php
includes/utils/HashRing.php [deleted file]
includes/utils/IP.php
includes/utils/MappedIterator.php [deleted file]
includes/utils/ScopedCallback.php [deleted file]
includes/utils/UIDGenerator.php
languages/Language.php
languages/LanguageConverter.php
languages/Names.php
languages/classes/LanguageBe_tarask.php
languages/classes/LanguageDsb.php
languages/classes/LanguageGv.php [deleted file]
languages/classes/LanguageHr.php [deleted file]
languages/classes/LanguageHsb.php
languages/classes/LanguageIu.php
languages/classes/LanguageKsh.php
languages/classes/LanguageRu.php
languages/classes/LanguageSr.php
languages/classes/LanguageSr_ec.php [deleted file]
languages/classes/LanguageSr_el.php [deleted file]
languages/classes/LanguageUk.php
languages/data/plurals-mediawiki.xml
languages/data/plurals.xml [changed mode: 0644->0755]
languages/messages/MessagesAb.php
languages/messages/MessagesAce.php
languages/messages/MessagesAeb.php
languages/messages/MessagesAf.php
languages/messages/MessagesAk.php
languages/messages/MessagesAln.php
languages/messages/MessagesAm.php
languages/messages/MessagesAn.php
languages/messages/MessagesAng.php
languages/messages/MessagesAnp.php
languages/messages/MessagesAr.php
languages/messages/MessagesArc.php
languages/messages/MessagesArn.php
languages/messages/MessagesAry.php
languages/messages/MessagesArz.php
languages/messages/MessagesAs.php
languages/messages/MessagesAst.php
languages/messages/MessagesAv.php
languages/messages/MessagesAvk.php
languages/messages/MessagesAy.php
languages/messages/MessagesAz.php
languages/messages/MessagesAzb.php
languages/messages/MessagesBa.php
languages/messages/MessagesBar.php
languages/messages/MessagesBbc_latn.php
languages/messages/MessagesBcc.php
languages/messages/MessagesBcl.php
languages/messages/MessagesBe.php
languages/messages/MessagesBe_tarask.php
languages/messages/MessagesBg.php
languages/messages/MessagesBho.php
languages/messages/MessagesBi.php
languages/messages/MessagesBjn.php
languages/messages/MessagesBm.php
languages/messages/MessagesBn.php
languages/messages/MessagesBo.php
languages/messages/MessagesBpy.php
languages/messages/MessagesBqi.php
languages/messages/MessagesBr.php
languages/messages/MessagesBrh.php
languages/messages/MessagesBs.php
languages/messages/MessagesBug.php
languages/messages/MessagesBxr.php
languages/messages/MessagesCa.php
languages/messages/MessagesCbk_zam.php
languages/messages/MessagesCdo.php
languages/messages/MessagesCe.php
languages/messages/MessagesCeb.php
languages/messages/MessagesCh.php
languages/messages/MessagesChr.php
languages/messages/MessagesCkb.php
languages/messages/MessagesCo.php
languages/messages/MessagesCps.php
languages/messages/MessagesCrh_cyrl.php
languages/messages/MessagesCrh_latn.php
languages/messages/MessagesCs.php
languages/messages/MessagesCsb.php
languages/messages/MessagesCu.php
languages/messages/MessagesCv.php
languages/messages/MessagesCy.php
languages/messages/MessagesDa.php
languages/messages/MessagesDe.php
languages/messages/MessagesDe_at.php
languages/messages/MessagesDe_ch.php
languages/messages/MessagesDe_formal.php
languages/messages/MessagesDiq.php
languages/messages/MessagesDsb.php
languages/messages/MessagesDtp.php
languages/messages/MessagesDv.php
languages/messages/MessagesDz.php
languages/messages/MessagesEe.php
languages/messages/MessagesEgl.php
languages/messages/MessagesEl.php
languages/messages/MessagesEml.php
languages/messages/MessagesEn.php
languages/messages/MessagesEn_ca.php
languages/messages/MessagesEn_gb.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/MessagesFf.php
languages/messages/MessagesFi.php
languages/messages/MessagesFit.php
languages/messages/MessagesFj.php
languages/messages/MessagesFo.php
languages/messages/MessagesFr.php
languages/messages/MessagesFrc.php
languages/messages/MessagesFrp.php
languages/messages/MessagesFrr.php
languages/messages/MessagesFur.php
languages/messages/MessagesFy.php
languages/messages/MessagesGa.php
languages/messages/MessagesGag.php
languages/messages/MessagesGan_hans.php
languages/messages/MessagesGan_hant.php
languages/messages/MessagesGd.php
languages/messages/MessagesGl.php
languages/messages/MessagesGlk.php
languages/messages/MessagesGn.php
languages/messages/MessagesGom_latn.php
languages/messages/MessagesGrc.php
languages/messages/MessagesGsw.php
languages/messages/MessagesGu.php
languages/messages/MessagesGv.php
languages/messages/MessagesHa.php
languages/messages/MessagesHak.php
languages/messages/MessagesHaw.php
languages/messages/MessagesHe.php
languages/messages/MessagesHi.php
languages/messages/MessagesHif_latn.php
languages/messages/MessagesHil.php
languages/messages/MessagesHr.php
languages/messages/MessagesHsb.php
languages/messages/MessagesHt.php
languages/messages/MessagesHu.php
languages/messages/MessagesHy.php
languages/messages/MessagesIa.php
languages/messages/MessagesId.php
languages/messages/MessagesIe.php
languages/messages/MessagesIg.php
languages/messages/MessagesIi.php
languages/messages/MessagesIk.php
languages/messages/MessagesIke_cans.php
languages/messages/MessagesIke_latn.php
languages/messages/MessagesIlo.php
languages/messages/MessagesInh.php
languages/messages/MessagesIo.php
languages/messages/MessagesIs.php
languages/messages/MessagesIt.php
languages/messages/MessagesJa.php
languages/messages/MessagesJam.php
languages/messages/MessagesJbo.php
languages/messages/MessagesJut.php
languages/messages/MessagesJv.php
languages/messages/MessagesKa.php
languages/messages/MessagesKaa.php
languages/messages/MessagesKab.php
languages/messages/MessagesKbd_cyrl.php
languages/messages/MessagesKg.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/MessagesKl.php
languages/messages/MessagesKm.php
languages/messages/MessagesKn.php
languages/messages/MessagesKo.php
languages/messages/MessagesKoi.php
languages/messages/MessagesKrc.php
languages/messages/MessagesKri.php
languages/messages/MessagesKrj.php
languages/messages/MessagesKs.php
languages/messages/MessagesKs_arab.php
languages/messages/MessagesKs_deva.php
languages/messages/MessagesKsh.php
languages/messages/MessagesKu_latn.php
languages/messages/MessagesKv.php
languages/messages/MessagesKw.php
languages/messages/MessagesKy.php
languages/messages/MessagesLa.php
languages/messages/MessagesLad.php
languages/messages/MessagesLb.php
languages/messages/MessagesLbe.php
languages/messages/MessagesLez.php
languages/messages/MessagesLfn.php
languages/messages/MessagesLg.php
languages/messages/MessagesLi.php
languages/messages/MessagesLij.php
languages/messages/MessagesLiv.php
languages/messages/MessagesLmo.php
languages/messages/MessagesLn.php
languages/messages/MessagesLo.php
languages/messages/MessagesLoz.php
languages/messages/MessagesLrc.php
languages/messages/MessagesLt.php
languages/messages/MessagesLtg.php
languages/messages/MessagesLus.php
languages/messages/MessagesLv.php
languages/messages/MessagesLzh.php
languages/messages/MessagesLzz.php
languages/messages/MessagesMai.php
languages/messages/MessagesMap_bms.php
languages/messages/MessagesMdf.php
languages/messages/MessagesMg.php
languages/messages/MessagesMhr.php
languages/messages/MessagesMi.php
languages/messages/MessagesMin.php
languages/messages/MessagesMk.php
languages/messages/MessagesMl.php
languages/messages/MessagesMn.php
languages/messages/MessagesMo.php
languages/messages/MessagesMr.php
languages/messages/MessagesMrj.php
languages/messages/MessagesMs.php
languages/messages/MessagesMt.php
languages/messages/MessagesMwl.php
languages/messages/MessagesMy.php
languages/messages/MessagesMyv.php
languages/messages/MessagesMzn.php
languages/messages/MessagesNa.php
languages/messages/MessagesNah.php
languages/messages/MessagesNan.php
languages/messages/MessagesNap.php
languages/messages/MessagesNb.php
languages/messages/MessagesNds.php
languages/messages/MessagesNds_nl.php
languages/messages/MessagesNe.php
languages/messages/MessagesNew.php
languages/messages/MessagesNiu.php
languages/messages/MessagesNl.php
languages/messages/MessagesNl_informal.php
languages/messages/MessagesNn.php
languages/messages/MessagesNov.php
languages/messages/MessagesNso.php
languages/messages/MessagesNv.php
languages/messages/MessagesNy.php
languages/messages/MessagesOc.php
languages/messages/MessagesOm.php
languages/messages/MessagesOr.php
languages/messages/MessagesOs.php
languages/messages/MessagesPa.php
languages/messages/MessagesPag.php
languages/messages/MessagesPam.php
languages/messages/MessagesPap.php
languages/messages/MessagesPcd.php
languages/messages/MessagesPdc.php
languages/messages/MessagesPdt.php
languages/messages/MessagesPfl.php
languages/messages/MessagesPi.php
languages/messages/MessagesPih.php
languages/messages/MessagesPl.php
languages/messages/MessagesPms.php
languages/messages/MessagesPnb.php
languages/messages/MessagesPnt.php
languages/messages/MessagesPrg.php
languages/messages/MessagesPs.php
languages/messages/MessagesPt.php
languages/messages/MessagesPt_br.php
languages/messages/MessagesQqq.php
languages/messages/MessagesQu.php
languages/messages/MessagesQug.php
languages/messages/MessagesRgn.php
languages/messages/MessagesRif.php
languages/messages/MessagesRm.php
languages/messages/MessagesRmy.php
languages/messages/MessagesRo.php
languages/messages/MessagesRoa_tara.php
languages/messages/MessagesRu.php
languages/messages/MessagesRue.php
languages/messages/MessagesRup.php
languages/messages/MessagesRuq_cyrl.php
languages/messages/MessagesRuq_latn.php
languages/messages/MessagesSa.php
languages/messages/MessagesSah.php
languages/messages/MessagesSat.php
languages/messages/MessagesSc.php
languages/messages/MessagesScn.php
languages/messages/MessagesSco.php
languages/messages/MessagesSd.php
languages/messages/MessagesSdc.php
languages/messages/MessagesSe.php
languages/messages/MessagesSei.php
languages/messages/MessagesSg.php
languages/messages/MessagesSgs.php
languages/messages/MessagesSh.php
languages/messages/MessagesShi.php
languages/messages/MessagesSi.php
languages/messages/MessagesSk.php
languages/messages/MessagesSl.php
languages/messages/MessagesSli.php
languages/messages/MessagesSm.php
languages/messages/MessagesSma.php
languages/messages/MessagesSn.php
languages/messages/MessagesSo.php
languages/messages/MessagesSq.php
languages/messages/MessagesSr_ec.php
languages/messages/MessagesSr_el.php
languages/messages/MessagesSrn.php
languages/messages/MessagesSs.php
languages/messages/MessagesSt.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/MessagesTcy.php
languages/messages/MessagesTe.php
languages/messages/MessagesTet.php
languages/messages/MessagesTg_cyrl.php
languages/messages/MessagesTg_latn.php
languages/messages/MessagesTh.php
languages/messages/MessagesTi.php
languages/messages/MessagesTk.php
languages/messages/MessagesTl.php
languages/messages/MessagesTly.php
languages/messages/MessagesTn.php
languages/messages/MessagesTo.php
languages/messages/MessagesTokipona.php
languages/messages/MessagesTpi.php
languages/messages/MessagesTr.php
languages/messages/MessagesTru.php
languages/messages/MessagesTs.php
languages/messages/MessagesTt_cyrl.php
languages/messages/MessagesTt_latn.php
languages/messages/MessagesTy.php
languages/messages/MessagesTyv.php
languages/messages/MessagesUdm.php
languages/messages/MessagesUg_arab.php
languages/messages/MessagesUg_latn.php
languages/messages/MessagesUk.php
languages/messages/MessagesUr.php
languages/messages/MessagesUz.php
languages/messages/MessagesVe.php
languages/messages/MessagesVec.php
languages/messages/MessagesVep.php
languages/messages/MessagesVi.php
languages/messages/MessagesVls.php
languages/messages/MessagesVmf.php
languages/messages/MessagesVo.php
languages/messages/MessagesVot.php
languages/messages/MessagesVro.php
languages/messages/MessagesWa.php
languages/messages/MessagesWar.php
languages/messages/MessagesWo.php
languages/messages/MessagesWuu.php
languages/messages/MessagesXal.php
languages/messages/MessagesXh.php
languages/messages/MessagesXmf.php
languages/messages/MessagesYi.php
languages/messages/MessagesYo.php
languages/messages/MessagesYue.php
languages/messages/MessagesZa.php
languages/messages/MessagesZea.php
languages/messages/MessagesZh_hans.php
languages/messages/MessagesZh_hant.php
languages/messages/MessagesZh_tw.php
languages/messages/MessagesZu.php
languages/utils/CLDRPluralRuleEvaluator.php
maintenance/Maintenance.php
maintenance/archives/patch-logging_user_text_time_index.sql [new file with mode: 0644]
maintenance/archives/patch-logging_user_text_type_time_index.sql [new file with mode: 0644]
maintenance/archives/patch-page_links_updated.sql [new file with mode: 0644]
maintenance/backupTextPass.inc
maintenance/cdb.php
maintenance/convertLinks.php
maintenance/copyFileBackend.php
maintenance/dictionary/mediawiki.dic
maintenance/doMaintenance.php
maintenance/edit.php
maintenance/eval.php
maintenance/findHooks.php
maintenance/fixDoubleRedirects.php
maintenance/fixExtLinksProtocolRelative.php
maintenance/generateJsonI18n.php [new file with mode: 0644]
maintenance/getConfiguration.php
maintenance/initEditCount.php
maintenance/jsduck/MetaTags.rb
maintenance/jsduck/categories.json
maintenance/jsduck/config.json
maintenance/language/generateNormalizerData.php [deleted file]
maintenance/language/generateNormalizerDataAr.php [new file with mode: 0644]
maintenance/language/generateNormalizerDataMl.php [new file with mode: 0644]
maintenance/language/generateUtf8Case.php [new file with mode: 0644]
maintenance/language/messageTypes.inc
maintenance/language/messages.inc
maintenance/language/zhtable/Makefile.py
maintenance/mergeMessageFileList.php
maintenance/mssql/tables.sql
maintenance/nextJobDB.php
maintenance/oracle/archives/patch-logging_user_text_time_index.sql [new file with mode: 0644]
maintenance/oracle/archives/patch-logging_user_text_type_time_index.sql [new file with mode: 0644]
maintenance/oracle/tables.sql
maintenance/parse.php
maintenance/postgres/tables.sql
maintenance/pruneFileCache.php
maintenance/rebuildImages.php
maintenance/rebuildrecentchanges.php
maintenance/runJobs.php
maintenance/showJobs.php
maintenance/sql.php
maintenance/storage/compressOld.php
maintenance/storage/fixBug20757.php
maintenance/tables.sql
maintenance/update.php
maintenance/updateSpecialPages.php
maintenance/userDupes.inc
resources/Makefile [new file with mode: 0644]
resources/README.txt [new file with mode: 0644]
resources/Resources.php
resources/jquery/jquery.client.js
resources/jquery/jquery.makeCollapsible.css
resources/jquery/jquery.makeCollapsible.js
resources/jquery/jquery.placeholder.js
resources/jquery/jquery.spinner.js
resources/jquery/jquery.suggestions.js
resources/mediawiki.action/mediawiki.action.edit.preview.js
resources/mediawiki.action/mediawiki.action.view.metadata.js
resources/mediawiki.action/mediawiki.action.view.redirectToFragment.js [new file with mode: 0644]
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.language/mediawiki.cldr.js
resources/mediawiki.language/mediawiki.language.init.js
resources/mediawiki.language/mediawiki.language.js
resources/mediawiki.language/mediawiki.language.months.js
resources/mediawiki.language/mediawiki.language.numbers.js
resources/mediawiki.less/mediawiki.mixins.less
resources/mediawiki.libs/CLDRPluralRuleParser.js
resources/mediawiki.libs/mediawiki.libs.jpegmeta.js
resources/mediawiki.page/mediawiki.page.ready.js
resources/mediawiki.page/mediawiki.page.startup.js
resources/mediawiki.page/mediawiki.page.watch.ajax.js
resources/mediawiki.special/mediawiki.special.block.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.changeslist.css
resources/mediawiki.special/mediawiki.special.changeslist.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.createAccount.css [deleted file]
resources/mediawiki.special/mediawiki.special.createAccount.js [deleted file]
resources/mediawiki.special/mediawiki.special.css
resources/mediawiki.special/mediawiki.special.preferences.css
resources/mediawiki.special/mediawiki.special.preferences.js
resources/mediawiki.special/mediawiki.special.userLogin.css [deleted file]
resources/mediawiki.special/mediawiki.special.userlogin.common.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.common.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.login.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.signup.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.userlogin.signup.js [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.version.css [new file with mode: 0644]
resources/mediawiki.special/mediawiki.special.vforms.css [deleted file]
resources/mediawiki.ui/components/default/buttons.less
resources/mediawiki.ui/components/default/forms.less
resources/mediawiki.ui/components/vector/buttons.less
resources/mediawiki.ui/default.less
resources/mediawiki.ui/styleguide.md [new file with mode: 0644]
resources/mediawiki.ui/vector.less
resources/mediawiki/images/arrow-collapsed-ltr.svg [new file with mode: 0644]
resources/mediawiki/images/arrow-collapsed-rtl.svg [new file with mode: 0644]
resources/mediawiki/images/arrow-expanded.svg [new file with mode: 0644]
resources/mediawiki/mediawiki.Title.js
resources/mediawiki/mediawiki.Uri.js
resources/mediawiki/mediawiki.hlist.css
resources/mediawiki/mediawiki.hlist.js
resources/mediawiki/mediawiki.icon.css [deleted file]
resources/mediawiki/mediawiki.icon.less [new file with mode: 0644]
resources/mediawiki/mediawiki.js
resources/mediawiki/mediawiki.searchSuggest.js
resources/oojs/oojs.js [new file with mode: 0644]
resources/package.json [new file with mode: 0644]
resources/scripts/nodecheck.sh [new file with mode: 0755]
resources/startup.js
resources/styleguide-template/index.html [new file with mode: 0644]
resources/styleguide-template/public/kss.less [new file with mode: 0644]
resources/styleguide-template/public/less.js [new file with mode: 0644]
serialized/.gitignore [new file with mode: 0644]
serialized/Makefile
serialized/serialize.php [deleted file]
skins/MonoBook.php
skins/Vector.php
skins/common/commonContent.css
skins/common/commonInterface.css
skins/common/commonPrint.css
skins/common/shared.css
skins/common/wikibits.js
skins/modern/main.css
skins/monobook/main.css
skins/vector/beta/screen.less [deleted file]
skins/vector/beta/variables.less [deleted file]
skins/vector/collapsibleNav.less [deleted file]
skins/vector/collapsibleTabs.js
skins/vector/components/collapsibleNav.less [new file with mode: 0644]
skins/vector/components/common.less [new file with mode: 0644]
skins/vector/components/externalLinks.less [new file with mode: 0644]
skins/vector/components/footer.less [new file with mode: 0644]
skins/vector/components/navigation.less [new file with mode: 0644]
skins/vector/components/notifications.less [new file with mode: 0644]
skins/vector/components/personalMenu.less [new file with mode: 0644]
skins/vector/components/search.less [new file with mode: 0644]
skins/vector/components/tabs.less [new file with mode: 0644]
skins/vector/components/watchstar.less [new file with mode: 0644]
skins/vector/externalLinks.less [deleted file]
skins/vector/images/audio-icon.svg [new file with mode: 0644]
skins/vector/images/document-icon.svg [new file with mode: 0644]
skins/vector/images/external-link-ltr-icon.svg [new file with mode: 0644]
skins/vector/images/external-link-rtl-icon.svg [new file with mode: 0644]
skins/vector/images/file-icon.svg [new file with mode: 0644]
skins/vector/images/lock-icon.svg [new file with mode: 0644]
skins/vector/images/mail-icon.svg [new file with mode: 0644]
skins/vector/images/news-icon.svg [new file with mode: 0644]
skins/vector/images/talk-icon.svg [new file with mode: 0644]
skins/vector/images/video-icon.svg [new file with mode: 0644]
skins/vector/screen-hd.less
skins/vector/screen.less [deleted file]
skins/vector/styles-beta.less [deleted file]
skins/vector/styles.less
skins/vector/variables.less
tests/TestsAutoLoader.php
tests/parser/parserTest.inc
tests/parser/parserTests.txt
tests/phpunit/MediaWikiTestCase.php
tests/phpunit/data/cssmin/green.gif [new file with mode: 0644]
tests/phpunit/data/cssmin/large.png [new file with mode: 0644]
tests/phpunit/data/cssmin/red.gif [new file with mode: 0644]
tests/phpunit/data/media/LoremIpsum.djvu [new file with mode: 0644]
tests/phpunit/data/media/README
tests/phpunit/data/media/Speech_bubbles.svg [new file with mode: 0644]
tests/phpunit/data/xmp/gps.result.php
tests/phpunit/includes/ExceptionTest.php
tests/phpunit/includes/HTMLCheckMatrixTest.php [deleted file]
tests/phpunit/includes/LinkFilterTest.php [new file with mode: 0644]
tests/phpunit/includes/LocalFileTest.php
tests/phpunit/includes/PreferencesTest.php
tests/phpunit/includes/ResourceLoaderModuleTest.php [new file with mode: 0644]
tests/phpunit/includes/RevisionStorageTest.php
tests/phpunit/includes/SpecialPageTest.php
tests/phpunit/includes/StatusTest.php
tests/phpunit/includes/TestUser.php
tests/phpunit/includes/TitleTest.php
tests/phpunit/includes/api/ApiBaseTest.php
tests/phpunit/includes/api/ApiQueryAllPagesTest.php [new file with mode: 0644]
tests/phpunit/includes/api/ApiWatchTest.php
tests/phpunit/includes/api/MockApiQueryBase.php [new file with mode: 0644]
tests/phpunit/includes/api/query/ApiQueryBasicTest.php
tests/phpunit/includes/api/query/ApiQueryContinueTestBase.php
tests/phpunit/includes/api/query/ApiQueryTest.php
tests/phpunit/includes/api/query/ApiQueryTestBase.php
tests/phpunit/includes/db/DatabaseMysqlBaseTest.php
tests/phpunit/includes/db/LBFactoryTest.php [new file with mode: 0644]
tests/phpunit/includes/filebackend/FileBackendTest.php
tests/phpunit/includes/filerepo/FileRepoTest.php
tests/phpunit/includes/filerepo/StoreBatchTest.php
tests/phpunit/includes/htmlform/HTMLCheckMatrixTest.php [new file with mode: 0644]
tests/phpunit/includes/jobqueue/RefreshLinksPartitionTest.php
tests/phpunit/includes/libs/CSSMinTest.php
tests/phpunit/includes/libs/HashRingTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/MWMessagePackTest.php [new file with mode: 0644]
tests/phpunit/includes/libs/RunningStatTest.php [new file with mode: 0644]
tests/phpunit/includes/logging/LogFormatterTest.php
tests/phpunit/includes/media/DjVuTest.php [new file with mode: 0644]
tests/phpunit/includes/media/ExifRotationTest.php
tests/phpunit/includes/media/FormatMetadataTest.php
tests/phpunit/includes/media/GIFTest.php
tests/phpunit/includes/media/JpegTest.php
tests/phpunit/includes/media/PNGTest.php
tests/phpunit/includes/media/SVGMetadataExtractorTest.php
tests/phpunit/includes/media/SVGTest.php
tests/phpunit/includes/parser/NewParserTest.php
tests/phpunit/includes/search/SearchEngineTest.php
tests/phpunit/includes/specials/SpecialListFilesTest.php [new file with mode: 0644]
tests/phpunit/includes/specials/SpecialSearchTest.php
tests/phpunit/includes/utils/HashRingTest.php [deleted file]
tests/phpunit/includes/utils/IPTest.php
tests/phpunit/includes/utils/UIDGeneratorTest.php
tests/phpunit/languages/LanguageBe_taraskTest.php
tests/phpunit/languages/LanguageBsTest.php
tests/phpunit/languages/LanguageGvTest.php
tests/phpunit/languages/LanguageHrTest.php
tests/phpunit/languages/LanguageHyTest.php
tests/phpunit/languages/LanguageLvTest.php
tests/phpunit/languages/LanguageMkTest.php
tests/phpunit/languages/LanguageRuTest.php
tests/phpunit/languages/LanguageSgsTest.php
tests/phpunit/languages/LanguageShTest.php
tests/phpunit/languages/LanguageSrTest.php
tests/phpunit/languages/LanguageUkTest.php
tests/phpunit/languages/utils/CLDRPluralRuleEvaluatorTest.php
tests/phpunit/mocks/filebackend/MockFileBackend.php
tests/phpunit/phpunit.php
tests/phpunit/skins/SideBarTest.php
tests/phpunit/suites/UploadFromUrlTestSuite.php
tests/qunit/QUnitTestResources.php
tests/qunit/suites/resources/jquery/jquery.client.test.js
tests/qunit/suites/resources/jquery/jquery.placeholder.test.js [new file with mode: 0644]
tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js
tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js
tests/qunit/suites/resources/startup.test.js

index 9c0c3b6..c7d6f66 100644 (file)
@@ -47,6 +47,9 @@ node_modules/
 /composer.lock
 /composer.json
 
+# MediaWiki UI documentation
+resources/mediawiki.ui/docs
+
 # Operating systems
 ## Mac OS X
 .DS_Store
@@ -62,3 +65,5 @@ Thumbs.db
 /favicon.ico
 /static*
 /tags
+/.htaccess
+/.htpasswd
index f740f13..db4ac44 100644 (file)
@@ -1,6 +1,10 @@
 # Generated documentation
 docs/html/
 docs/js/
+resources/mediawiki.ui/docs
+
+# kss template for mediawiki ui documentation
+resources/styleguide-template
 
 # third-party libs
 extensions/
@@ -24,6 +28,7 @@ resources/jquery.tipsy/
 resources/jquery.ui/
 resources/mediawiki.libs/
 resources/jquery.chosen/chosen.jquery.js
+resources/oojs/
 
 # github.com/jshint/jshint/issues/729
 tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js
diff --git a/.travis.yml b/.travis.yml
new file mode 100644 (file)
index 0000000..84fa456
--- /dev/null
@@ -0,0 +1,46 @@
+# Travis CI build configuration for MediaWiki
+# <https://travis-ci.org/wikimedia/mediawiki-core>
+#
+# The Wikimedia Foundation uses a self-hosted Jenkins instance to run unit
+# tests, but it tests code against the version of PHP that is deployed on
+# Wikimedia's production cluster. This Travis CI configuration is designed to
+# complement that setup by testing MediaWiki against HHVM.
+#
+language: php
+
+php:
+  - hhvm
+
+services:
+  - mysql
+
+branches:
+  # Test changes in master and in Wikimedia's production branches.
+  only:
+    - master
+    - /^wmf\/.*$/
+
+before_install:
+  - sudo apt-get install -qq djvulibre-bin tidy
+
+before_script:
+  # Initialise submodules, in case we're testing a Wikimedia production branch.
+  - git submodule update --init --recursive
+  # Travis CI's HHVM environment provides PHPUnit as a phar file, but
+  # MediaWiki's test suite only works if individual PHPUnit files are
+  # actual files on disk (bug 58881).
+  - composer require 'phpunit/phpunit=3.7.*'
+  - >
+      php maintenance/install.php testwiki admin
+      --pass travis
+      --dbname traviswiki
+      --dbuser travis
+      --dbpass ""
+      --scriptpath "/w"
+
+script:
+  - >
+      hhvm --php
+      -d include_path=".$(printf ':%s' vendor/phpunit/*)"
+      -d date.timezone="Etc/UTC"
+      tests/phpunit/phpunit.php
diff --git a/CREDITS b/CREDITS
index 01505b0..21db850 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -1,8 +1,11 @@
+{{int:version-credits-summary}}
+<!--
 MediaWiki 1.23 is a collaborative project released under the
 GNU General Public License v2. We would like to recognize the
 following names for their contribution to the product.
-
+-->
 <!-- Please notice that the following can be found parsed under Special:Version/Credits -->
+
 == Developers ==
 * Aaron Schulz
 * Alex Z.
diff --git a/HISTORY b/HISTORY
index 88cc906..672cb64 100644 (file)
--- a/HISTORY
+++ b/HISTORY
@@ -1,9 +1,535 @@
 Change notes from older releases. For current info see RELEASE-NOTES-1.23.
 
-== MediaWiki 1.21 ==
+== MediaWiki 1.22 ==
+
+=== Configuration changes in 1.22 ===
+* $wgRedirectScript was removed. It was unused.
+* Removed $wgLocalMessageCacheSerialized, it is now always true.
+* $wgVectorUseIconWatch is now enabled by default.
+* $wgCascadingRestrictionLevels was added.
+* ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
+  have been whitelisted inside of $wgUrlProtocols.
+* $wgDocType and $wgDTD have been removed and are no longer used for the DOCTYPE.
+* $wgHtml5 is no longer used by core. Setting it to false will no longer disable HTML5.
+  It is still set to true for extension compatibility but doing so in extensions is deprecated.
+* $wgXhtmlDefaultNamespace is no longer used by core. Setting it will no longer change the
+  xmlns used by MediaWiki. Reliance on this variable by extensions is deprecated.
+* $wgHandheldStyle was removed.
+* $wgHandheldForIPhone was removed.
+* $wgJsMimeType is no longer used by core. Most usage has been removed since
+  HTML output is now exclusively HTML5.
+* $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
+* $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the logging table.
+  default for $wgLogAutopatrol is true.
+* The 'edit' right no longer allows for editing a user's own CSS and JS.
+* New rights 'editmyusercss', 'editmyuserjs', 'viewmywatchlist',
+  'editmywatchlist', 'viewmyprivateinfo', 'editmyprivateinfo', and
+  'editmyoptions' restrict actions that were formerly allowed by default. They
+  have been added to the default for $wgGroupPermissions['*'].
+* The 'editprotected' right no longer allows bypassing of all page protection
+  restrictions. Any group using it for this purpose will now need to have all
+  the individual rights listed in $wgRestrictionTypes for the same effect.
+* The 'protect' and 'autoconfirmed' rights are no longer used for the default
+  page protection levels. The rights 'editprotected' and 'editsemiprotected'
+  are now used for this purpose instead.
+* (bug 40866) wgOldChangeTagsIndex removed.
+* $wgNoFollowDomainExceptions now only matches entire domains. For example,
+  an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
+* $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout times for
+  fetching the file during upload by url.
+* New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
+  default gallery mode.
+* New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
+* The checkbox for staying in HTTPS displayed on the login form when $wgSecureLogin is
+  enabled has been removed. Instead, whether the user stays in HTTPS will be determined
+  based on the user's preferences, and whether they came from HTTPS or not.
+* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort,
+  and $wgRC2UDPPrefix configuration options have been deprecated in favor of a
+  $wgRCFeeds configuration array. $wgRCFeeds makes both the format and
+  destination of recent change notifications customizable, and allows for
+  multiple destinations to be specified.
+* (bug 53862) portal-url, currentevents-url and helppage have been removed from the
+  default Sidebar.
+* The 'vector-simplesearch' preference is now enabled by default. Previously
+  it was only enabled if the Vector extension was installed.
+* The precise format of metric datagrams produced by the UDP profiler and stats counter
+  may now be specified as $wgUDPProfilerFormatString and $wgStatsFormatString,
+  respectively.
+* (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
+  $wgProxyMemcExpiry have been removed, along with the open proxy scanner
+  script they were added for.
+* Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
+
+=== New features in 1.22 ===
+* You can now install extensions using Composer.
+  See https://www.mediawiki.org/wiki/Composer
+* (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
+* (bug 33454) Language::sprintfDate now has a timezone parameter, and supports
+  the "eIOPTZ" formatting characters.
+* EditWarning: A warning is shown when an editor leaves the edit form without
+  saving (enabled by default, users can opt-out via the 'useeditwarning'
+  preference). This feature was moved from the Vector extension, and is now part
+  of core for all skins. Take care when upgrading that you don't use an older
+  version of the Vector extension as this feature may conflict.
+* New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
+  compact vertical form layout.
+* HTMLForm supports a new display format 'vform' which applies this compact vertical
+  layout and button styling. Special:PasswordReset uses this format.
+* New versions of login (Special:UserLogin) and create account
+  (Special:UserLogin/signup) forms using the "vform" compact vertical form layout.
+  These forms use new messages that assume a "Help logging in" link, see
+  https://www.mediawiki.org/wiki/Manual:Page_customizations;
+  https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists the
+  message key changes.
+* (bug 23343) Implemented ability to apply IP blocks to the contents of X-Forwarded-For headers
+  by adding a new configuration variable $wgApplyIpBlocksToXff (disabled by default).
+* The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
+  added.
+* (bug 25592) LogEventsList::showLogExtract() will now ignore various
+  Pager-related WebRequest parameters by default, as this is overwhelmingly
+  likely to be what was intended by users of the method. If any caller wishes
+  to use these parameters, the new param 'useRequestParams' may be set to true.
+* mw.util.addPortletLink: Tooltip is no longer required to be plain (without
+  an accesskey in it already). As such it now rountrips. Creating a link with a
+  message as tooltip, grabbing the title attribute and using it to create
+  another portlet will work as expected.
+* (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost
+  page without namespace.
+* BREAKING CHANGE: (bug 41729) Display editsection links next to headings. Also
+  change their class name from .editsection to .mw-editsection and place them at
+  the end of the heading element instead of the beginning. Client-side code and
+  screen-scrapers will have to be adjusted to handle both cases (old HTML will
+  still be visible on cached page renders until they are purged); extensions
+  using the DoEditSectionLink or EditSectionLink hooks might need adjustments as
+  well.
+* (bug 45535) introduced the new 'LanguageLinks' hook for manipulating the
+  language links associated with a page before display.
+* Chosen (http://harvesthq.github.io/chosen/) was added as module 'jquery.chosen'
+* HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
+* rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
+  of the specified languages instead of all of them.
+* New GetNewMessagesAlert hook allowing extensions to disable or modify the new
+  messages alert
+* New wgUserNewMsgRevisionId JS global for logged in users. This will be null
+  if the user has no new talk page messages. Otherwise it will be set to the
+  revision ID of the oldest new talk page message. This will allow gadgets and
+  extensions to create their own new message alerts on the client side.
+* mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
+* mediawiki.log: Implemented log.deprecate. This method defines a property and
+  uses ES5 getter/setter to emit a warning when they are used.
+* $wgCascadingRestrictionLevels was added, allowing one to specify restriction levels
+  which can be cascading (previously 'sysop' was hard-coded as the only one).
+* XHTML5 support has been improved. If you set $wgMimeType = 'application/xhtml+xml'
+  MediaWiki will try outputting markup acording to XHTML5 rules.
+* Altered hook 'ProtectionForm::save', adding the reason page protection is
+  changed as third parameter.
+* New hook 'TitleSquidURLs' for manipulating the list of URLs to be purged from
+  HTTP caches when a page is changed.
+* Changed the patrolling system to always show the link for patrolling in case the
+  current revision is patrollable. This also removed the usage of the rcid URI parameters.
+* Oracle DB backend now supports Database Resident Connection Pooling (DRCP).
+  Can be enabled by setting $wgDBOracleDRCP=true.
+  Requires Oracle DB 11gR1 or above, enabled DRCP inside the DB itself and a
+  propper connect string.
+  More about DRCP can be found at:
+  http://www.oracle-base.com/articles/11g/database-resident-connection-pool-11gr1.php
+* Add a new parameter $patrolFooterShown to hook ArticleViewFooter so the hook
+  handlers can take further action based on the status of the patrol footer
+* A new hook TitleQuickPermissions was added to allow overriding of quick
+  permissions in the Title class.
+* LinkCache singleton can now be altered or cleared, letting one to specify
+  another instance that does not rely on a database backend.
+* MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
+* (bug 43689) The lists of templates used on the page and hidden categories it
+  is a member of, shown below the edit form, are now collapsible (and collapsed
+  by default).
+* Parser profiling data, formerly only available in the "NewPP limit report"
+  HTML comment, is now also displayed at the bottom of page previews.
+* Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
+  ParserLimitReport hook.
+* New user rights have been added to increase granularity in rights management
+  for extensions such as OAuth:
+** editmyusercss controls whether a user may edit their own CSS subpages.
+** editmyuserjs controls whether a user may edit their own JS subpages.
+** viewmywatchlist controls whether a user may view their watchlist.
+** editmywatchlist controls whether a user may edit their watchlist.
+** viewmyprivateinfo controls whether a user may access their private
+   information (e.g. registered email address, real name).
+** editmyprivateinfo controls whether a user may change their private
+   information.
+** editmyoptions controls whether a user may change their preferences.
+* Add new hook AbortTalkPageEmailNotification, this will be used to determine
+  whether to send the regular talk page email notification
+* Action classes registered in $wgActions are now also supported in the form of
+  a callback (which returns an instance of Action) instead of providing the name
+  of a subclass of Action.
+* (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
+* Added $wgRecentChangesFlags for defining new flags for RecentChanges and
+  watchlists.
+* (bug 40518) mw.toolbar: Implemented mw.toolbar.addButtons for adding multiple
+ button objects in one call.
+* Rights used for the default protection levels ('sysop' and 'autoconfirmed')
+  are now used just for that purpose, instead of overloading other rights. This
+  allows easy granting of the ability to edit sysop-protected pages without
+  also granting the ability to protect and unprotect.
+* (bug 48256) Make brackets in section edit links accessible to CSS.
+  They are now wrapped in <span class="mw-editsection-bracket" />.
+* (bug 8480) Allow handler specific parameters in galleries (like page number)
+* jquery.client: Add detection for Opera 15 and Internet Explorer 11.
+* Change tags (used by the AbuseFilter extension) are now shown on diff pages.
+* Change tag lists (shown on recent changes, watchlist, user contributions,
+  history pages, diff pages) now include a link to Special:Tags to distinguish
+  them from edit summaries.
+* Added a new method and hook, User::isEveryoneAllowed() and
+  UserIsEveryoneAllowed, for use in situations where a "does everyone have this
+  right?" check is used to avoid more expensive checks.
+* (bug 14431) Display "(No difference)" instead of an empty diff (when comparing
+  revisions in the history or when previewing changes while editing).
+* New hook 'IsUploadAllowedFromUrl' is added which can be used to intercept uploads by
+  URL, useful for blacklisting specific URLs
+* (bug 21912) Watchlist token implementation has been refactored and
+  Special:ResetTokens was added to allow users to reset their tokens
+  instead of presenting them in Preferences.
+* Special:PrefixIndex now lets you strip the searched prefix from the displayed
+  titles. Given a list of articles named Bug1, Bug2, you can now transclude the
+  list of bug numbers using: {{Special:PrefixIndex/Bug|stripprefix=1}}.
+  The special page form received a new checkbox matching that option.
+* (bug 23580) Implement javascript callback interface "mw.hook".
+* (bug 30713) New mw.hook "wikipage.content".
+* (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
+  to be used.
+* $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
+* $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
+  too. Can be used whenever several multicast group could be interested by a
+  specific purge.
+* (bug 25931) Add Special:RandomInCategory.
+* mediawiki.util: addPortletLink now supports passing a jQuery object as nextnode.
+* <wbr> can now be used inside WikiText.
+* WebResponse::setcookie is much more featureful. Callers using PHP's
+  setcookie() or setrawcookie() should begin using this instead.
+* New hook WebResponseSetCookie, called from WebResponse::setcookie().
+* New hook ResetSessionID, called when the session id is reset.
+* Add a mode parameter to <gallery> tag with potential options of "traditional",
+  "nolines", "packed", "packed-overlay", or "packed-hover".
+* (bug 47399) A success message is now displayed after changing the password.
+* Make thumb.php give HTTP redirects for file redirects
+* (bug 30607) Special:ListFiles can now show old versions of files. Additionally
+  Special:AllMyUploads was introduced so the user can get a list of all things
+  they have ever uploaded, even if it was subsequently overriden.
+* Introduced Special:MyFiles and Special:AllMyFiles as an alias for Special:MyUploads
+  and Special:AllMyUploads respectively.
+* IPv6 addresses in X-Forwarded-For headers are now normalised before checking
+  against allowed proxy lists.
+* Add deferrable update support for callback/closure.
+* Add TitleMove hook before page renames.
+* Revision deletion backend code is moved out of SpecialRevisiondelete
+* Added {{REVISIONSIZE}} variable to get the current size of a revision.
+* Add support for the LESS stylesheet language to ResourceLoader. LESS is a
+  stylesheet language that compiles into CSS. ResourceLoader file modules may
+  include LESS style files; ResourceLoader will compile these files into CSS
+  before sending them to the client.
+** The $wgResourceLoaderLESSVars configuration variable is an associative array
+   mapping variable names to string CSS values. These variables are considered
+   declared for all LESS files. Additional variables may be registered by
+   adding keys to the array.
+** $wgResourceLoaderLESSFunctions is an associative array of custom LESS
+   function names to PHP callables. See <http://leafo.net/lessphp/docs/#custom_functions>
+   for more details regarding custom functions.
+** $wgResourceLoaderLESSImportPaths is an array of file system paths. Files
+   referenced in LESS '@import' statements are looked up here first.
+* ResourceLoader supports hashes as module cache invalidation trigger (instead
+  of or in addition to timestamps).
+* Added $wgExtensionEntryPointListFiles for use in mergeMessageFileList.php.
+* Added a hook, APIQuerySiteInfoStatisticsInfo, to allow extensions to modify
+  the output of the API query meta=siteinfo&siprop=statistics
+* Primary keys have been added to both the archive table and the externallinks
+  tables.
+* Added $wgEnableParserLimitReporting to control whether the NewPP limit report is
+  output in a HTML comment.
+* The 'UnwatchArticle' and 'WatchArticle' hooks now support a Status object
+  instead of just a boolean return value to abort the hook.
+* Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
+  with custom recentchanges entries to hook into the Watchlist without
+  clobbering each other.
+* A hidden, empty input field was added to the edit form, and any edit that fills
+  it in will be rejected. This prevents against the simplest form of spambots.
+  Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
+* populateRevisionLength.php maintenance script updated to also populate
+  archive.ar_len field.
+* (bug 43571) DatabaseMySQLBase learned to list views, optionally filtered by a
+  prefix. Also fixed PHPUnit test suite when using a MySQL backend containing
+  views.
+
+=== Bug fixes in 1.22 ===
+* (bug 47271) $wgContentHandlerUseDB should be set to false during the upgrade
+* Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
+  could still navigate to the page by entering the URL directly.
+* (bug 47138) Fixed a fatal error when a blocked user tries to automatically
+  create an account on login due external authentication in some circumstances.
+* (bug 23393) HTML <hN> headings containing line breaks are now handled
+  correctly.
+* (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
+  is now non-significant and not preserved in the HTML output.
+* (bug 47218) Special:BlockList now handles correctly user names with spaces
+  when passed as subpage.
+* Pager's properly validate which fields are allowed to be sorted on.
+* mw.util.tooltipAccessKeyRegexp: The regex now matches "option-" as well.
+  Support for Mac "option" was added in 1.16, but the regex was never updated.
+* (bug 46768) Usernames of blocking users now display correctly, even if numeric.
+* (bug 39590) Self-transclusions now show the most up to date result always
+  after save instead of being a revision behind.
+* A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
+  strings will now start with digits 0 and 8-f as often as they should.
+* (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
+* (bug 41545) Allow <kbd>, <samp>, and <var> to be nested like allowed in html.
+* PLURAL magic word no longer causes a PHP notice when no matching form exists.
+* (bug 36641) Patrol page links no longer show on non-existent revisions.
+* (bug 35810) Pages not linked from Special:RecentChanges or Special:NewPages
+  are patrollable now.
+* (bug 30213) JavaScript for search suggestions is now disabled when the API
+  is disabled, and AJAX patrolling and watching are now disabled when use of
+  the write API is not allowed.
+* (bug 48294) API: Fix chunk upload async mode.
+* (bug 46749) Broken files tracking category removed from pages if an image
+  with that name is uploaded.
+* (bug 14176) System messages that are empty were previously incorrectly treated
+  as non-existent, causing a fallback to the default. This stopped users from
+  overriding system messages to make them blank.
+* (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
+  'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
+  warning will instead be issued if 'title' is non-default, unless no props are
+  requested.
+* Special:Recentchangeslinked will now include upload log entries
+* (bug 41281) Fixed ugly output if file size could not be extracted for multi-page media.
+* (bug 50315) list=logevents API module will now output log entries by anonymous users.
+* (bug 38911) Handle headers with rowspan in jquery.tablesorter
+* (bug 658) Converted the table of contents on wiki pages from <table> to <div>
+  and adjusted skin CSS accordingly. The CSS was carefully crafted to be
+  backwards-compatible in all reasonable cases (uses of the __TOC__ magic word,
+  the #toc CSS id and the .toc CSS class). However, particularly bad abuse of
+  the id or the class can possibly break.
+* CSSJanus now supports rgb, hsl, rgba, and hsla color syntaxes.
+* Special:Listfiles can no longer be sorted by image name when filtering
+  by user in miser mode.
+* (bug 49074) CSSJanus: Handle values of border-radius correctly.
+* Handle relative inclusions ({{../name}}) in main namespace with subpages
+  enabled correctly (previously MediaWiki tried to include Template:Parent/name
+  instead of just Parent/name).
+* Added $wgAPIUselessQueryPages to allow extensions to flag their query pages
+  for non-inclusion in ApiQueryQueryPages.
+* (bug 50870) mediawiki.notification: Notification area should remain visible
+  when scrolled down.
+* (bug 13438) Special:MIMESearch no longer an expensive special page.
+* (bug 48342) Fixed a fatal error when $wgValidateAllHtml is set to true and
+  the function apache_request_headers() function is not available.
+* (bug 33399) LivePreview: Re-run wikipage content handlers
+  (jquery.makeCollapsible, jquery.tablesorter) after preview content is loaded.
+* (bug 51891) Fixed PHP notice on Special:PagesWithProp when no properties
+  are defined.
+* (bug 52006) Corrected documentation of $wgTranscludeCacheExpiry.
+* (bug 52077) The APIEditBeforeSave hook is giving the content of the whole
+  revision as second argument now, rather than just the current section.
+* (bug 49694) $wgSpamRegex is now also applied on the new section headline text
+  adding a new topic on a page
+* (bug 41756) Improve treatment of multiple comments on a blank line.
+* (bug 51064) Purge upstream caches when deleting file assets.
+* (bug 39012) File types with a mime that we do not know the extension for
+  can no longer be uploaded as an extension that we do know the mime type
+  for.
+* (bug 51742) Add data-sort-value for better sorting of hitcounts Special:Tags
+* (bug 26811) On DB error pages, server hostnames are now hidden when both
+  $wgShowHostnames and $wgShowSQLErrors are false.
+* (bug 6200) line breaks in <blockquote> are handled like they are in <div>
+* (bug 14931) Default character set now set to 'utf8' when a new MySQL
+  database is created.
+* (bug 47191) Fixed "Column 'si_title' cannot be part of FULLTEXT index"
+  MySQL error when installing using the binary character set option.
+* (bug 45288) Support mysqli PHP extension
+* (bug 55818) BREAKING CHANGE: Removed undocumented 'Debug' hook in wfDebug.
+  This resolves an infinite loop when using $wgDebugFunctionEntry = true.
+* (bug 56707) Correct tooltip of "Next n results" on query special pages.
+* (bug 56770) mw.util.addPortletLink: Check length before access array index.
+
+=== API changes in 1.22 ===
+* (bug 25553) The JSON output formatter now leaves forward slashes unescaped
+  to improve human readability of URLs and similar strings. Also, a "utf8"
+  option is now provided to use UTF-8 encoding instead of hex escape codes
+  for most non-ASCII characters.
+* (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
+  parameter has had no effect since MediaWiki 1.16, and so its removal is
+  unlikely to impact existing clients.
+* (bug 47216) action=query&meta=siteinfo&siprop=skins will now indicate which
+  skin is the default and which are unusable (e.g. listed in $wgSkipSkins).
+* (bug 25325) Added support for wlshow filtering (bots/anon/minor/patrolled)
+  to action=feedwatchlist.
+* WDDX formatted output will actually be formatted (and normal output will no
+  longer be), and will no longer choke on booleans.
+* action=opensearch no longer silently ignores the format parameter.
+* action=opensearch now supports format=jsonfm.
+* list=usercontribs&ucprop=ids will now include the parent revision id.
+* BREAKING CHANGE: action=parse no longer returns all langlinks for the page
+  with prop=langlinks by default. The new effectivelanglinks parameter will
+  request that the LanguageLinks hook be called to determine the effective
+  language links.
+* BREAKING CHANGE: list=allpages, list=langbacklinks, and prop=langlinks do not
+  apply the new LanguageLinks hook, and thus only consider language links
+  stored in the database.
+* (bug 47219) Allow specifying change type of Wikipedia feed items
+* prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
+* prop=info now adds the content model and page language of the title.
+* New upload log entries will now contain information on the relevant
+  image (sha1 and timestamp).
+* (bug 49239) action=parse now can parse in preview and section preview modes.
+* (bug 49259) action=patrol now accepts revision ids.
+* (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
+  honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
+  will now receive an error, rather than the previous behavior listing all
+  user blocks.
+* (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
+  rather than using the content model of the page "API".
+* action=watch no longer silently ignores hook abort.
+* (bug 50785) action=purge with forcelinkupdate=1 no longer queues refreshLinks
+  jobs in the job queue for link table updates of pages that use the given page
+  as a template. Instead, forcerecursivelinkupdate=1 is introduced and should
+  be used if that behaviour is desirable.
+* The 'debugLog' property (enabled by $wgDebugToolbar) no longer sets the log
+  entry values through ApiResult::content but directly. This changes the JSON
+  output from an array of objects with content in '*' to an array of strings
+  with the content.
+* (bug 51342) prop=imageinfo iicontinue now contains the dbkey, not the text
+  version of the title.
+* (bug 52538) action=edit will now use empty text instead of the contents
+  of section 0 when passed prependtext or appendtext with section=new.
+* Support for the 'gettoken' parameter to action=block and action=unblock,
+  deprecated since 1.20, has been removed.
+* (bug 49090) Token-getting functions will fail when using jsonp callbacks.
+* (bug 52699) action=upload returns normalized file name on warning
+  "exists-normalized" instead of filename to be uploaded to.
+* (bug 53884) action=edit will now return an error when the specified section
+  does not exist in the page.
+* Added meta=filerepoinfo API module for getting information about foreign
+  file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
+* The new query module list=allfileusages to enumerate file usages was added.
+
+=== Languages updated in 1.22===
+
+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.
+
+* Batak Toba (bbc-latn) added.
+* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
+
+=== Other changes in 1.22 ===
+* BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
+  has changed:
+** MediaWiki no longer supports PHP installations in which the native JSON
+   extension is missing or disabled.
+** XmlJsCode objects can no longer be nested inside objects or arrays.
+   (For Xml::encodeJsCall(), this individually applies to each argument.)
+** The sets of characters escaped by default, along with the precise escape
+   sequences used, have changed (except for the Xml::escapeJsString()
+   function, which is now deprecated).
+* BREAKING CHANGE: The Services_JSON class has been removed. If necessary,
+  be sure to upgrade affected extensions at the same time (e.g. Collection).
+* redirect.php was removed. It was unused.
+* ClickTracking integration was dropped from the mediaWiki.user.bucket
+  JavaScript function. The 'tracked' option is now ignored.
+* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
+  were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
+  LegacyTemplate classes that supported them were removed as well and are now a
+  part of the Nostalgia extension.
+* Event namespace used by jquery.makeCollapsible has been changed from
+  'mw-collapse' to 'mw-collapsible' for consistency with the module name.
+* BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
+  with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
+  $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
+  use AuthPlugin for external authentication/authorization needs.
+* The Quickbar feature of the legacy skin model and the last remnants of it
+  throughout the code base have been removed.
+* Externaledit/externaldiff preference was removed. Very few users used this
+  feature, and improper configuration can actually prevent a user from editing
+* Calling Linker methods using a skin will now output deprecation warnings.
+* (bug 46680) "Return to" links are no longer tagged with rel="next".
+* BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
+  accesskey character is now $6 instead of $5.
+* HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
+  added.
+* A new Special:Redirect page was added, providing lookup by revision ID,
+  user ID, or file name.  The old Special:Filepath page was reimplemented
+  to redirect through Special:Redirect.
+* Monobook: Removed the old conditional stylesheets for Opera 6, 7 and 9.
+* Support for XHTML 1.0 has been removed. MediaWiki now only outputs (X)HTML5.
+* wikibits: User-agent related globals have been deprecated. The following
+  properties now default to false and emit mw.log.warn: is_gecko, is_chrome_mac,
+  is_chrome, webkit_version, is_safari_win, is_safari, webkit_match, is_ff2,
+  ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs, opera7_bugs, opera6_bugs,
+  is_opera_95, is_opera_preseven, is_opera, and ie6_bugs.
+* (bug 48276) MediaWiki will now flash a confirmation message upon successfully
+  editing a page.
+* (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
+  properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
+  sajax_do_call and wfSupportsAjax.
+* BREAKING CHANGE: meta keywords are no longer supported. A <meta name="keywords"
+  will no longer be output and OutputPage::addKeyword no longer exists.
+* Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
+  deprecated since 1.19, have been removed.
+* (bug 50134) Hook functions are no longer required to return a value. When a
+  hook function does not return a value (or when it returns an explicit null),
+  processing continues. To abort the hook, a hook function must return an
+  explicit, boolean false or a string error message. Other falsey values are
+  tantamount to a 'return true' in earlier versions of MediaWiki.
+* BREAKING CHANGE: The EditSectionLink hook was removed after being
+  deprecated since MediaWiki 1.14. Use DoEditSectionLink instead.
+* (bug 48256) The 'editsection-brackets' optional message was removed.
+  Section edit links' brackets can now be customized using CSS by
+  styling span.mw-editsection-bracket.
+* The usePatrol function in ChangesList has been marked as deprecated.
+* (bug 50785) A "null edit", that is, a save action in which no changes to the
+  page text are made and no revision recorded, will no longer send refreshLinks
+  jobs to the job table to update pages which use the edited page as a template.
+* The LivePreviewPrepare and LivePreviewDone events triggered on "jQuery( mw )"
+  have been deprecated in favour of using mw.hook.
+* The 'showjumplinks' user preference has been removed, jump links are now
+  always included.
+* Methods RecentChange::notifyRC2UDP, RecentChange::sendToUDP, and
+  RecentChange::cleanupForIRC have been deprecated, as it is now the
+  responsibility of classes implementing the RCFeedFormatter and RCFeedEngine
+  interfaces to implement the formatting and delivery for recent change
+  notifications.
+* SpecialPrefixindex methods namespacePrefixForm() and showPrefixChunk() have
+  been made protected. They were accepting form variance arguments, this is now
+  using properties in the SpecialPrefixindex class.
+* (bug 50310) BREAKING CHANGE: wikibits: Drop support for mwCustomEditButtons.
+  It defaults to an empty array and emits mw.log.warn when accessed.
+* BREAKING CHANGE: Special:Disambiguations has been removed from MediaWiki core.
+  Functions related to disambiguation pages are now handled by the Disambiguator
+  extension (https://www.mediawiki.org/wiki/Extension:Disambiguator) (bug
+  35981).
+* BREAKING CHANGE: The 'mediawiki.legacy.wikiprintable' module has been removed.
+  The skins/common/wikiprintable.css file no longer exists. Return value of
+  Skin#commonPrintStylesheet is ignored. Please use the 'mediawiki.legacy.commonPrint'
+  module instead or base your skin on SkinTemplate.
+* (bug 49629) The hook ExtractThumbParamaters has been deprecated in favour
+  of media handler overriding MediaHandler::parseParamString.
+* (bug 46512) The collapsibleNav feature from the Vector extension has been moved
+  to the Vector skin in core.
+* SpecialRecentChanges::addRecentChangesJS() function has been renamed
+  to addModules() and made protected.
+* Methods WatchAction::doWatch and WatchAction::doUnwatch now return a Status
+  object instead of a boolean.
+* Information boxes (CSS classes errorbox, warningbox, successbox) have been
+  made more subtle.
+* BREAKING CHANGE: The module 'mediawiki.legacy.IEFixes' has been removed as it was
+  unused. The file skins/common/IEFixes.js remains but is only used by wikibits.
+  The file never contained any re-usable components. To use it in a skin, load
+  'mediawiki.legacy.wikibits' (which IEFixes depends on) and that will import
+  IEFixes automatically if user agent conditions are met.
+* Code specific to the Math extension was marked as deprecated.
+* mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
+  still works, but is deprecated.)
 
-MediaWiki 1.21 is an alpha-quality branch and is not recommended for use in
-production.
+== MediaWiki 1.21 ==
 
 === Configuration changes in 1.21 ===
 * (bug 29374) $wgVectorUseSimpleSearch is now enabled by default.
@@ -2781,7 +3307,7 @@ Other significant changes to MediaWiki's language support:
 * (bug 26253) $wgPostCommitUpdateList has been removed
 * The PHPUnit test suite has been removed from this release due to serious issues
   which should be resolved by the 1.18 release.
-* Oracle DB now uses the __destruct fuction to commit/close connection as it
+* Oracle DB now uses the __destruct function to commit/close connection as it
   doesn't commit on close if transation is triggered in OCI.
 
 == MediaWiki 1.16 ==
diff --git a/RELEASE-NOTES-1.22 b/RELEASE-NOTES-1.22
deleted file mode 100644 (file)
index 333696b..0000000
+++ /dev/null
@@ -1,600 +0,0 @@
-Security reminder: MediaWiki does not require PHP's register_globals. If you
-have it on, turn it '''off''' if you can.
-
-== MediaWiki 1.22 ==
-
-THIS IS NOT A RELEASE YET
-
-MediaWiki 1.22 is an alpha-quality branch and is not recommended for use in
-production.
-
-=== Configuration changes in 1.22 ===
-* $wgRedirectScript was removed. It was unused.
-* Removed $wgLocalMessageCacheSerialized, it is now always true.
-* $wgVectorUseIconWatch is now enabled by default.
-* $wgCascadingRestrictionLevels was added.
-* ftps, ssh, sftp, xmpp, sip, sips, tel, sms, bitcoin, magnet, urn, and geo
-  have been whitelisted inside of $wgUrlProtocols.
-* $wgDocType and $wgDTD have been removed and are no longer used for the DOCTYPE.
-* $wgHtml5 is no longer used by core. Setting it to false will no longer disable HTML5.
-  It is still set to true for extension compatibility but doing so in extensions is deprecated.
-* $wgXhtmlDefaultNamespace is no longer used by core. Setting it will no longer change the
-  xmlns used by MediaWiki. Reliance on this variable by extensions is deprecated.
-* $wgHandheldStyle was removed.
-* $wgHandheldForIPhone was removed.
-* $wgJsMimeType is no longer used by core. Most usage has been removed since
-  HTML output is now exclusively HTML5.
-* $wgDBOracleDRCP added. True enables persistent connection with DRCP on Oracle.
-* $wgLogAutopatrol added to allow disabling logging of autopatrol edits in the logging table.
-  default for $wgLogAutopatrol is true.
-* The 'edit' right no longer allows for editing a user's own CSS and JS.
-* New rights 'editmyusercss', 'editmyuserjs', 'viewmywatchlist',
-  'editmywatchlist', 'viewmyprivateinfo', 'editmyprivateinfo', and
-  'editmyoptions' restrict actions that were formerly allowed by default. They
-  have been added to the default for $wgGroupPermissions['*'].
-* The 'editprotected' right no longer allows bypassing of all page protection
-  restrictions. Any group using it for this purpose will now need to have all
-  the individual rights listed in $wgRestrictionTypes for the same effect.
-* The 'protect' and 'autoconfirmed' rights are no longer used for the default
-  page protection levels. The rights 'editprotected' and 'editsemiprotected'
-  are now used for this purpose instead.
-* (bug 40866) wgOldChangeTagsIndex removed.
-* $wgNoFollowDomainExceptions now only matches entire domains. For example,
-  an entry for 'bar.com' will still match 'foo.bar.com' but not 'foobar.com'.
-* $wgCopyUploadTimeout and $wgCopyUploadAsyncTimeout added to change the timeout times for
-  fetching the file during upload by url.
-* New key added to $wgGalleryOptions - $wgGalleryOptions['mode'] to set
-  default gallery mode.
-* New hook 'GalleryGetModes' to allow extensions to make new gallery modes.
-* The checkbox for staying in HTTPS displayed on the login form when $wgSecureLogin is
-  enabled has been removed. Instead, whether the user stays in HTTPS will be determined
-  based on the user's preferences, and whether they came from HTTPS or not.
-* $wgRC2UDPAddress, $wgRC2UDPInterwikiPrefix, $wgRC2UDPOmitBots, $wgRC2UDPPort,
-  and $wgRC2UDPPrefix configuration options have been deprecated in favor of a
-  $wgRCFeeds configuration array. $wgRCFeeds makes both the format and
-  destination of recent change notifications customizable, and allows for
-  multiple destinations to be specified.
-* (bug 53862) portal-url, currentevents-url and helppage have been removed from the
-  default Sidebar.
-* The 'vector-simplesearch' preference is now enabled by default. Previously
-  it was only enabled if the Vector extension was installed.
-* The precise format of metric datagrams produced by the UDP profiler and stats counter
-  may now be specified as $wgUDPProfilerFormatString and $wgStatsFormatString,
-  respectively.
-* (bug 54597) $wgBlockOpenProxies, $wgProxyPorts, $wgProxyScriptPath, and
-  $wgProxyMemcExpiry have been removed, along with the open proxy scanner
-  script they were added for.
-* Default value of $wgMaxShellMemory has been tripled (it's now 300 MB).
-
-=== New features in 1.22 ===
-* You can now install extensions using Composer.
-  See https://www.mediawiki.org/wiki/Composer
-* (bug 44525) mediawiki.jqueryMsg can now parse (whitelisted) HTML elements and attributes.
-* (bug 33454) Language::sprintfDate now has a timezone parameter, and supports
-  the "eIOPTZ" formatting characters.
-* EditWarning: A warning is shown when an editor leaves the edit form without
-  saving (enabled by default, users can opt-out via the 'useeditwarning'
-  preference). This feature was moved from the Vector extension, and is now part
-  of core for all skins. Take care when upgrading that you don't use an older
-  version of the Vector extension as this feature may conflict.
-* New 'mediawiki.ui' CSS module providing mw-ui-* styles for buttons and a
-  compact vertical form layout.
-* HTMLForm supports a new display format 'vform' which applies this compact vertical
-  layout and button styling. Special:PasswordReset uses this format.
-* New versions of login (Special:UserLogin) and create account
-  (Special:UserLogin/signup) forms using the "vform" compact vertical form layout.
-  These forms use new messages that assume a "Help logging in" link, see
-  https://www.mediawiki.org/wiki/Manual:Page_customizations;
-  https://www.mediawiki.org/wiki/Account_creation_user_experience/Strings lists the
-  message key changes.
-* (bug 23343) Implemented ability to apply IP blocks to the contents of X-Forwarded-For headers
-  by adding a new configuration variable $wgApplyIpBlocksToXff (disabled by default).
-* The new hook 'APIGetPossibleErrors' to modify the list of possible errors was
-  added.
-* (bug 25592) LogEventsList::showLogExtract() will now ignore various
-  Pager-related WebRequest parameters by default, as this is overwhelmingly
-  likely to be what was intended by users of the method. If any caller wishes
-  to use these parameters, the new param 'useRequestParams' may be set to true.
-* mw.util.addPortletLink: Tooltip is no longer required to be plain (without
-  an accesskey in it already). As such it now rountrips. Creating a link with a
-  message as tooltip, grabbing the title attribute and using it to create
-  another portlet will work as expected.
-* (bug 6747) {{ROOTPAGENAME}} introduced, contains the name of the topmost
-  page without namespace.
-* BREAKING CHANGE: (bug 41729) Display editsection links next to headings. Also
-  change their class name from .editsection to .mw-editsection and place them at
-  the end of the heading element instead of the beginning. Client-side code and
-  screen-scrapers will have to be adjusted to handle both cases (old HTML will
-  still be visible on cached page renders until they are purged); extensions
-  using the DoEditSectionLink or EditSectionLink hooks might need adjustments as
-  well.
-* (bug 45535) introduced the new 'LanguageLinks' hook for manipulating the
-  language links associated with a page before display.
-* Chosen (http://harvesthq.github.io/chosen/) was added as module 'jquery.chosen'
-* HTMLForm will turn multiselect checkboxes into a Chosen interface when setting cssclass 'mw-chosen'
-* rebuildLocalisationCache learned --lang option. Let you rebuild l10n caches
-  of the specified languages instead of all of them.
-* New GetNewMessagesAlert hook allowing extensions to disable or modify the new
-  messages alert
-* New wgUserNewMsgRevisionId JS global for logged in users. This will be null
-  if the user has no new talk page messages. Otherwise it will be set to the
-  revision ID of the oldest new talk page message. This will allow gadgets and
-  extensions to create their own new message alerts on the client side.
-* mediawiki.log: Added log.warn wrapper (uses console.warn and console.trace).
-* mediawiki.log: Implemented log.deprecate. This method defines a property and
-  uses ES5 getter/setter to emit a warning when they are used.
-* $wgCascadingRestrictionLevels was added, allowing one to specify restriction levels
-  which can be cascading (previously 'sysop' was hard-coded as the only one).
-* XHTML5 support has been improved. If you set $wgMimeType = 'application/xhtml+xml'
-  MediaWiki will try outputting markup acording to XHTML5 rules.
-* Altered hook 'ProtectionForm::save', adding the reason page protection is
-  changed as third parameter.
-* New hook 'TitleSquidURLs' for manipulating the list of URLs to be purged from
-  HTTP caches when a page is changed.
-* Changed the patrolling system to always show the link for patrolling in case the
-  current revision is patrollable. This also removed the usage of the rcid URI parameters.
-* Oracle DB backend now supports Database Resident Connection Pooling (DRCP).
-  Can be enabled by setting $wgDBOracleDRCP=true.
-  Requires Oracle DB 11gR1 or above, enabled DRCP inside the DB itself and a
-  propper connect string.
-  More about DRCP can be found at:
-  http://www.oracle-base.com/articles/11g/database-resident-connection-pool-11gr1.php
-* Add a new parameter $patrolFooterShown to hook ArticleViewFooter so the hook
-  handlers can take further action based on the status of the patrol footer
-* A new hook TitleQuickPermissions was added to allow overriding of quick
-  permissions in the Title class.
-* LinkCache singleton can now be altered or cleared, letting one to specify
-  another instance that does not rely on a database backend.
-* MediaWiki's PHPUnit tests can now use PHPUnit installed using composer --dev.
-* (bug 43689) The lists of templates used on the page and hidden categories it
-  is a member of, shown below the edit form, are now collapsible (and collapsed
-  by default).
-* Parser profiling data, formerly only available in the "NewPP limit report"
-  HTML comment, is now also displayed at the bottom of page previews.
-* Added ParserLimitReportPrepare and ParserLimitReportFormat hooks, deprecated
-  ParserLimitReport hook.
-* New user rights have been added to increase granularity in rights management
-  for extensions such as OAuth:
-** editmyusercss controls whether a user may edit their own CSS subpages.
-** editmyuserjs controls whether a user may edit their own JS subpages.
-** viewmywatchlist controls whether a user may view their watchlist.
-** editmywatchlist controls whether a user may edit their watchlist.
-** viewmyprivateinfo controls whether a user may access their private
-   information (e.g. registered email address, real name).
-** editmyprivateinfo controls whether a user may change their private
-   information.
-** editmyoptions controls whether a user may change their preferences.
-* Add new hook AbortTalkPageEmailNotification, this will be used to determine
-  whether to send the regular talk page email notification
-* Action classes registered in $wgActions are now also supported in the form of
-  a callback (which returns an instance of Action) instead of providing the name
-  of a subclass of Action.
-* (bug 46513) Vector: Add the collapsibleTabs script from the Vector extension.
-* Added $wgRecentChangesFlags for defining new flags for RecentChanges and
-  watchlists.
-* (bug 40518) mw.toolbar: Implemented mw.toolbar.addButtons for adding multiple
- button objects in one call.
-* Rights used for the default protection levels ('sysop' and 'autoconfirmed')
-  are now used just for that purpose, instead of overloading other rights. This
-  allows easy granting of the ability to edit sysop-protected pages without
-  also granting the ability to protect and unprotect.
-* (bug 48256) Make brackets in section edit links accessible to CSS.
-  They are now wrapped in <span class="mw-editsection-bracket" />.
-* (bug 8480) Allow handler specific parameters in galleries (like page number)
-* jquery.client: Add detection for Opera 15 and Internet Explorer 11.
-* Change tags (used by the AbuseFilter extension) are now shown on diff pages.
-* Change tag lists (shown on recent changes, watchlist, user contributions,
-  history pages, diff pages) now include a link to Special:Tags to distinguish
-  them from edit summaries.
-* Added a new method and hook, User::isEveryoneAllowed() and
-  UserIsEveryoneAllowed, for use in situations where a "does everyone have this
-  right?" check is used to avoid more expensive checks.
-* (bug 14431) Display "(No difference)" instead of an empty diff (when comparing
-  revisions in the history or when previewing changes while editing).
-* New hook 'IsUploadAllowedFromUrl' is added which can be used to intercept uploads by
-  URL, useful for blacklisting specific URLs
-* (bug 21912) Watchlist token implementation has been refactored and
-  Special:ResetTokens was added to allow users to reset their tokens
-  instead of presenting them in Preferences.
-* Special:PrefixIndex now lets you strip the searched prefix from the displayed
-  titles. Given a list of articles named Bug1, Bug2, you can now transclude the
-  list of bug numbers using: {{Special:PrefixIndex/Bug|stripprefix=1}}.
-  The special page form received a new checkbox matching that option.
-* (bug 23580) Implement javascript callback interface "mw.hook".
-* (bug 30713) New mw.hook "wikipage.content".
-* (bug 40430) jquery.placeholder gets a new parameter to set the attribute value
-  to be used.
-* $wgHTCPMulticastRouting renamed $wgHTCPRouting since it accepts unicast.
-* $wgHTCPRouting rules can now be passed an array of hosts/ports to send purge
-  too. Can be used whenever several multicast group could be interested by a
-  specific purge.
-* (bug 25931) Add Special:RandomInCategory.
-* mediawiki.util: addPortletLink now supports passing a jQuery object as nextnode.
-* <wbr> can now be used inside WikiText.
-* WebResponse::setcookie is much more featureful. Callers using PHP's
-  setcookie() or setrawcookie() should begin using this instead.
-* New hook WebResponseSetCookie, called from WebResponse::setcookie().
-* New hook ResetSessionID, called when the session id is reset.
-* Add a mode parameter to <gallery> tag with potential options of "traditional",
-  "nolines", "packed", "packed-overlay", or "packed-hover".
-* (bug 47399) A success message is now displayed after changing the password.
-* Make thumb.php give HTTP redirects for file redirects
-* (bug 30607) Special:ListFiles can now show old versions of files. Additionally
-  Special:AllMyUploads was introduced so the user can get a list of all things
-  they have ever uploaded, even if it was subsequently overriden.
-* Introduced Special:MyFiles and Special:AllMyFiles as an alias for Special:MyUploads
-  and Special:AllMyUploads respectively.
-* IPv6 addresses in X-Forwarded-For headers are now normalised before checking
-  against allowed proxy lists.
-* Add deferrable update support for callback/closure.
-* Add TitleMove hook before page renames.
-* Revision deletion backend code is moved out of SpecialRevisiondelete
-* Added {{REVISIONSIZE}} variable to get the current size of a revision.
-* Add support for the LESS stylesheet language to ResourceLoader. LESS is a
-  stylesheet language that compiles into CSS. ResourceLoader file modules may
-  include LESS style files; ResourceLoader will compile these files into CSS
-  before sending them to the client.
-** The $wgResourceLoaderLESSVars configuration variable is an associative array
-   mapping variable names to string CSS values. These variables are considered
-   declared for all LESS files. Additional variables may be registered by
-   adding keys to the array.
-** $wgResourceLoaderLESSFunctions is an associative array of custom LESS
-   function names to PHP callables. See <http://leafo.net/lessphp/docs/#custom_functions>
-   for more details regarding custom functions.
-** $wgResourceLoaderLESSImportPaths is an array of file system paths. Files
-   referenced in LESS '@import' statements are looked up here first.
-* ResourceLoader supports hashes as module cache invalidation trigger (instead
-  of or in addition to timestamps).
-* Added $wgExtensionEntryPointListFiles for use in mergeMessageFileList.php.
-* Added a hook, APIQuerySiteInfoStatisticsInfo, to allow extensions to modify
-  the output of the API query meta=siteinfo&siprop=statistics
-* Primary keys have been added to both the archive table and the externallinks
-  tables.
-* Added $wgEnableParserLimitReporting to control whether the NewPP limit report is
-  output in a HTML comment.
-* The 'UnwatchArticle' and 'WatchArticle' hooks now support a Status object
-  instead of just a boolean return value to abort the hook.
-* Added a hook, SpecialWatchlistGetNonRevisionTypes, to allow extensions
-  with custom recentchanges entries to hook into the Watchlist without
-  clobbering each other.
-* A hidden, empty input field was added to the edit form, and any edit that fills
-  it in will be rejected. This prevents against the simplest form of spambots.
-  Previously in the "SimpleAntiSpam" extension by Ryan Schmidt.
-* populateRevisionLength.php maintenance script updated to also populate
-  archive.ar_len field.
-* (bug 43571) DatabaseMySQLBase learned to list views, optionally filtered by a
-  prefix. Also fixed PHPUnit test suite when using a MySQL backend containing
-  views.
-
-=== Bug fixes in 1.22 ===
-* (bug 47271) $wgContentHandlerUseDB should be set to false during the upgrade
-* Disable Special:PasswordReset when $wgEnableEmail is false. Previously one
-  could still navigate to the page by entering the URL directly.
-* (bug 47138) Fixed a fatal error when a blocked user tries to automatically
-  create an account on login due external authentication in some circumstances.
-* (bug 23393) HTML <hN> headings containing line breaks are now handled
-  correctly.
-* (bug 45803) Whitespace within == Headline == syntax and within <hN> headings
-  is now non-significant and not preserved in the HTML output.
-* (bug 47218) Special:BlockList now handles correctly user names with spaces
-  when passed as subpage.
-* Pager's properly validate which fields are allowed to be sorted on.
-* mw.util.tooltipAccessKeyRegexp: The regex now matches "option-" as well.
-  Support for Mac "option" was added in 1.16, but the regex was never updated.
-* (bug 46768) Usernames of blocking users now display correctly, even if numeric.
-* (bug 39590) Self-transclusions now show the most up to date result always
-  after save instead of being a revision behind.
-* A bias in wfRandomString() toward digits 1-7 has been corrected. Generated
-  strings will now start with digits 0 and 8-f as often as they should.
-* (bug 45371) Removed Parser_LinkHooks and CoreLinkFunctions classes.
-* (bug 41545) Allow <kbd>, <samp>, and <var> to be nested like allowed in html.
-* PLURAL magic word no longer causes a PHP notice when no matching form exists.
-* (bug 36641) Patrol page links no longer show on non-existent revisions.
-* (bug 35810) Pages not linked from Special:RecentChanges or Special:NewPages
-  are patrollable now.
-* (bug 30213) JavaScript for search suggestions is now disabled when the API
-  is disabled, and AJAX patrolling and watching are now disabled when use of
-  the write API is not allowed.
-* (bug 48294) API: Fix chunk upload async mode.
-* (bug 46749) Broken files tracking category removed from pages if an image
-  with that name is uploaded.
-* (bug 14176) System messages that are empty were previously incorrectly treated
-  as non-existent, causing a fallback to the default. This stopped users from
-  overriding system messages to make them blank.
-* (bug 48319) action=parse no longer returns an error if passed none of 'oldid',
-  'pageid', 'page', 'title', and 'text' (e.g. if only passed 'summary'). A
-  warning will instead be issued if 'title' is non-default, unless no props are
-  requested.
-* Special:Recentchangeslinked will now include upload log entries
-* (bug 41281) Fixed ugly output if file size could not be extracted for multi-page media.
-* (bug 50315) list=logevents API module will now output log entries by anonymous users.
-* (bug 38911) Handle headers with rowspan in jquery.tablesorter
-* (bug 658) Converted the table of contents on wiki pages from <table> to <div>
-  and adjusted skin CSS accordingly. The CSS was carefully crafted to be
-  backwards-compatible in all reasonable cases (uses of the __TOC__ magic word,
-  the #toc CSS id and the .toc CSS class). However, particularly bad abuse of
-  the id or the class can possibly break.
-* CSSJanus now supports rgb, hsl, rgba, and hsla color syntaxes.
-* Special:Listfiles can no longer be sorted by image name when filtering
-  by user in miser mode.
-* (bug 49074) CSSJanus: Handle values of border-radius correctly.
-* Handle relative inclusions ({{../name}}) in main namespace with subpages
-  enabled correctly (previously MediaWiki tried to include Template:Parent/name
-  instead of just Parent/name).
-* Added $wgAPIUselessQueryPages to allow extensions to flag their query pages
-  for non-inclusion in ApiQueryQueryPages.
-* (bug 50870) mediawiki.notification: Notification area should remain visible
-  when scrolled down.
-* (bug 13438) Special:MIMESearch no longer an expensive special page.
-* (bug 48342) Fixed a fatal error when $wgValidateAllHtml is set to true and
-  the function apache_request_headers() function is not available.
-* (bug 33399) LivePreview: Re-run wikipage content handlers
-  (jquery.makeCollapsible, jquery.tablesorter) after preview content is loaded.
-* (bug 51891) Fixed PHP notice on Special:PagesWithProp when no properties
-  are defined.
-* (bug 52006) Corrected documentation of $wgTranscludeCacheExpiry.
-* (bug 52077) The APIEditBeforeSave hook is giving the content of the whole
-  revision as second argument now, rather than just the current section.
-* (bug 49694) $wgSpamRegex is now also applied on the new section headline text
-  adding a new topic on a page
-* (bug 41756) Improve treatment of multiple comments on a blank line.
-* (bug 51064) Purge upstream caches when deleting file assets.
-* (bug 39012) File types with a mime that we do not know the extension for
-  can no longer be uploaded as an extension that we do know the mime type
-  for.
-* (bug 51742) Add data-sort-value for better sorting of hitcounts Special:Tags
-* (bug 26811) On DB error pages, server hostnames are now hidden when both
-  $wgShowHostnames and $wgShowSQLErrors are false.
-* (bug 6200) line breaks in <blockquote> are handled like they are in <div>
-* (bug 14931) Default character set now set to 'utf8' when a new MySQL
-  database is created.
-* (bug 47191) Fixed "Column 'si_title' cannot be part of FULLTEXT index"
-  MySQL error when installing using the binary character set option.
-* (bug 45288) Support mysqli PHP extension
-* (bug 55818) BREAKING CHANGE: Removed undocumented 'Debug' hook in wfDebug.
-  This resolves an infinite loop when using $wgDebugFunctionEntry = true.
-* (bug 56707) Correct tooltip of "Next n results" on query special pages.
-* (bug 56770) mw.util.addPortletLink: Check length before access array index.
-
-=== API changes in 1.22 ===
-* (bug 25553) The JSON output formatter now leaves forward slashes unescaped
-  to improve human readability of URLs and similar strings. Also, a "utf8"
-  option is now provided to use UTF-8 encoding instead of hex escape codes
-  for most non-ASCII characters.
-* (bug 46626) xmldoublequote parameter was removed. Because of a bug, the
-  parameter has had no effect since MediaWiki 1.16, and so its removal is
-  unlikely to impact existing clients.
-* (bug 47216) action=query&meta=siteinfo&siprop=skins will now indicate which
-  skin is the default and which are unusable (e.g. listed in $wgSkipSkins).
-* (bug 25325) Added support for wlshow filtering (bots/anon/minor/patrolled)
-  to action=feedwatchlist.
-* WDDX formatted output will actually be formatted (and normal output will no
-  longer be), and will no longer choke on booleans.
-* action=opensearch no longer silently ignores the format parameter.
-* action=opensearch now supports format=jsonfm.
-* list=usercontribs&ucprop=ids will now include the parent revision id.
-* BREAKING CHANGE: action=parse no longer returns all langlinks for the page
-  with prop=langlinks by default. The new effectivelanglinks parameter will
-  request that the LanguageLinks hook be called to determine the effective
-  language links.
-* BREAKING CHANGE: list=allpages, list=langbacklinks, and prop=langlinks do not
-  apply the new LanguageLinks hook, and thus only consider language links
-  stored in the database.
-* (bug 47219) Allow specifying change type of Wikipedia feed items
-* prop=imageinfo now allows setting iiurlheight without setting iiurlwidth
-* prop=info now adds the content model and page language of the title.
-* New upload log entries will now contain information on the relevant
-  image (sha1 and timestamp).
-* (bug 49239) action=parse now can parse in preview and section preview modes.
-* (bug 49259) action=patrol now accepts revision ids.
-* (bug 48129) list=blocks&bkip= now correctly handles IPv6 CIDR ranges and
-  honors $wgBlockCIDRLimit. Note any clients passing invalid values to bkip
-  will now receive an error, rather than the previous behavior listing all
-  user blocks.
-* (bug 48201) action=parse&text=foo now assumes wikitext if no title is given,
-  rather than using the content model of the page "API".
-* action=watch no longer silently ignores hook abort.
-* (bug 50785) action=purge with forcelinkupdate=1 no longer queues refreshLinks
-  jobs in the job queue for link table updates of pages that use the given page
-  as a template. Instead, forcerecursivelinkupdate=1 is introduced and should
-  be used if that behaviour is desirable.
-* The 'debugLog' property (enabled by $wgDebugToolbar) no longer sets the log
-  entry values through ApiResult::content but directly. This changes the JSON
-  output from an array of objects with content in '*' to an array of strings
-  with the content.
-* (bug 51342) prop=imageinfo iicontinue now contains the dbkey, not the text
-  version of the title.
-* (bug 52538) action=edit will now use empty text instead of the contents
-  of section 0 when passed prependtext or appendtext with section=new.
-* Support for the 'gettoken' parameter to action=block and action=unblock,
-  deprecated since 1.20, has been removed.
-* (bug 49090) Token-getting functions will fail when using jsonp callbacks.
-* (bug 52699) action=upload returns normalized file name on warning
-  "exists-normalized" instead of filename to be uploaded to.
-* (bug 53884) action=edit will now return an error when the specified section
-  does not exist in the page.
-* Added meta=filerepoinfo API module for getting information about foreign
-  file repositories, and related ForeignAPIRepo methods getInfo and getApiUrl.
-* The new query module list=allfileusages to enumerate file usages was added.
-
-=== Languages updated in 1.22===
-
-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.
-
-* Batak Toba (bbc-latn) added.
-* (bug 46751) Made Buryat (Russia) (буряад) (bxr) fallback to Russian.
-
-=== Other changes in 1.22 ===
-* BREAKING CHANGE: Implementation of MediaWiki's JS and JSON value encoding
-  has changed:
-** MediaWiki no longer supports PHP installations in which the native JSON
-   extension is missing or disabled.
-** XmlJsCode objects can no longer be nested inside objects or arrays.
-   (For Xml::encodeJsCall(), this individually applies to each argument.)
-** The sets of characters escaped by default, along with the precise escape
-   sequences used, have changed (except for the Xml::escapeJsString()
-   function, which is now deprecated).
-* BREAKING CHANGE: The Services_JSON class has been removed. If necessary,
-  be sure to upgrade affected extensions at the same time (e.g. Collection).
-* redirect.php was removed. It was unused.
-* ClickTracking integration was dropped from the mediaWiki.user.bucket
-  JavaScript function. The 'tracked' option is now ignored.
-* BREAKING CHANGE: Legacy skins Simple, MySkin, Chick, Standard and Nostalgia
-  were all removed. (Nostalgia was moved to an extension.) The SkinLegacy and
-  LegacyTemplate classes that supported them were removed as well and are now a
-  part of the Nostalgia extension.
-* Event namespace used by jquery.makeCollapsible has been changed from
-  'mw-collapse' to 'mw-collapsible' for consistency with the module name.
-* BREAKING CHANGE: The "ExternalAuth" authentication subsystem was removed, along
-  with its associated globals of $wgExternalAuthType, $wgExternalAuthConf,
-  $wgAutocreatePolicy and $wgAllowPrefChange. Affected users are encouraged to
-  use AuthPlugin for external authentication/authorization needs.
-* The Quickbar feature of the legacy skin model and the last remnants of it
-  throughout the code base have been removed.
-* Externaledit/externaldiff preference was removed. Very few users used this
-  feature, and improper configuration can actually prevent a user from editing
-* Calling Linker methods using a skin will now output deprecation warnings.
-* (bug 46680) "Return to" links are no longer tagged with rel="next".
-* BREAKING CHANGE: mw.util.tooltipAccessKeyRegexp: The match group for the
-  accesskey character is now $6 instead of $5.
-* HipHop compiler (hphpc) support was removed. HipHop VM support (hhvm) was
-  added.
-* A new Special:Redirect page was added, providing lookup by revision ID,
-  user ID, or file name.  The old Special:Filepath page was reimplemented
-  to redirect through Special:Redirect.
-* Monobook: Removed the old conditional stylesheets for Opera 6, 7 and 9.
-* Support for XHTML 1.0 has been removed. MediaWiki now only outputs (X)HTML5.
-* wikibits: User-agent related globals have been deprecated. The following
-  properties now default to false and emit mw.log.warn: is_gecko, is_chrome_mac,
-  is_chrome, webkit_version, is_safari_win, is_safari, webkit_match, is_ff2,
-  ff2_bugs, is_ff2_win, is_ff2_x11, opera95_bugs, opera7_bugs, opera6_bugs,
-  is_opera_95, is_opera_preseven, is_opera, and ie6_bugs.
-* (bug 48276) MediaWiki will now flash a confirmation message upon successfully
-  editing a page.
-* (bug 40785) mediawiki.legacy.ajax has been marked as deprecated. The following
-  properties now emit mw.log.warn when accessed: sajax_debug, sajax_init_object,
-  sajax_do_call and wfSupportsAjax.
-* BREAKING CHANGE: meta keywords are no longer supported. A <meta name="keywords"
-  will no longer be output and OutputPage::addKeyword no longer exists.
-* Methods Title::userCanEditCssSubpage and Title::userCanEditJsSubpage,
-  deprecated since 1.19, have been removed.
-* (bug 50134) Hook functions are no longer required to return a value. When a
-  hook function does not return a value (or when it returns an explicit null),
-  processing continues. To abort the hook, a hook function must return an
-  explicit, boolean false or a string error message. Other falsey values are
-  tantamount to a 'return true' in earlier versions of MediaWiki.
-* BREAKING CHANGE: The EditSectionLink hook was removed after being
-  deprecated since MediaWiki 1.14. Use DoEditSectionLink instead.
-* (bug 48256) The 'editsection-brackets' optional message was removed.
-  Section edit links' brackets can now be customized using CSS by
-  styling span.mw-editsection-bracket.
-* The usePatrol function in ChangesList has been marked as deprecated.
-* (bug 50785) A "null edit", that is, a save action in which no changes to the
-  page text are made and no revision recorded, will no longer send refreshLinks
-  jobs to the job table to update pages which use the edited page as a template.
-* The LivePreviewPrepare and LivePreviewDone events triggered on "jQuery( mw )"
-  have been deprecated in favour of using mw.hook.
-* The 'showjumplinks' user preference has been removed, jump links are now
-  always included.
-* Methods RecentChange::notifyRC2UDP, RecentChange::sendToUDP, and
-  RecentChange::cleanupForIRC have been deprecated, as it is now the
-  responsibility of classes implementing the RCFeedFormatter and RCFeedEngine
-  interfaces to implement the formatting and delivery for recent change
-  notifications.
-* SpecialPrefixindex methods namespacePrefixForm() and showPrefixChunk() have
-  been made protected. They were accepting form variance arguments, this is now
-  using properties in the SpecialPrefixindex class.
-* (bug 50310) BREAKING CHANGE: wikibits: Drop support for mwCustomEditButtons.
-  It defaults to an empty array and emits mw.log.warn when accessed.
-* BREAKING CHANGE: Special:Disambiguations has been removed from MediaWiki core.
-  Functions related to disambiguation pages are now handled by the Disambiguator
-  extension (https://www.mediawiki.org/wiki/Extension:Disambiguator) (bug
-  35981).
-* BREAKING CHANGE: The 'mediawiki.legacy.wikiprintable' module has been removed.
-  The skins/common/wikiprintable.css file no longer exists. Return value of
-  Skin#commonPrintStylesheet is ignored. Please use the 'mediawiki.legacy.commonPrint'
-  module instead or base your skin on SkinTemplate.
-* (bug 49629) The hook ExtractThumbParamaters has been deprecated in favour
-  of media handler overriding MediaHandler::parseParamString.
-* (bug 46512) The collapsibleNav feature from the Vector extension has been moved
-  to the Vector skin in core.
-* SpecialRecentChanges::addRecentChangesJS() function has been renamed
-  to addModules() and made protected.
-* Methods WatchAction::doWatch and WatchAction::doUnwatch now return a Status
-  object instead of a boolean.
-* Information boxes (CSS classes errorbox, warningbox, successbox) have been
-  made more subtle.
-* BREAKING CHANGE: The module 'mediawiki.legacy.IEFixes' has been removed as it was
-  unused. The file skins/common/IEFixes.js remains but is only used by wikibits.
-  The file never contained any re-usable components. To use it in a skin, load
-  'mediawiki.legacy.wikibits' (which IEFixes depends on) and that will import
-  IEFixes automatically if user agent conditions are met.
-* Code specific to the Math extension was marked as deprecated.
-* mediawiki.util: mw.util.wikiGetlink has been renamed to getUrl. (The old name
-  still works, but is deprecated.)
-
-== Compatibility ==
-
-MediaWiki 1.22 requires PHP 5.3.2 or later.
-
-MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
-support for them is somewhat less mature. There is experimental support for
-Oracle.
-
-The supported versions are:
-
-* MySQL 5.0.2 or later
-* PostgreSQL 8.3 or later
-* SQLite 3.3.7 or later
-* Oracle 9.0.1 or later
-
-== Upgrading ==
-
-1.22 has several database changes since 1.21, and will not work without schema
-updates. Note that due to changes to some very large tables like the revision
-table, the schema update may take quite long (minutes on a medium sized site,
-many hours on a large site).
-
-If upgrading from before 1.11, and you are using a wiki as a commons
-repository, make sure that it is updated as well. Otherwise, errors may arise
-due to database schema changes.
-
-If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
-new database fields are filled with data.
-
-If you are upgrading from MediaWiki 1.4.x or earlier, you should upgrade to
-1.5 first. The upgrade script maintenance/upgrade1_5.php has been removed
-with MediaWiki 1.21.
-
-Don't forget to always back up your database before upgrading!
-
-See the file UPGRADE for more detailed upgrade instructions.
-
-For notes on 1.21.x and older releases, see HISTORY.
-
-== Online documentation ==
-
-Documentation for both end-users and site administrators is available on
-MediaWiki.org, and is covered under the GNU Free Documentation License (except
-for pages that explicitly state that their contents are in the public domain):
-
-       https://www.mediawiki.org/wiki/Documentation
-
-== Mailing list ==
-
-A mailing list is available for MediaWiki user support and discussion:
-
-       https://lists.wikimedia.org/mailman/listinfo/mediawiki-l
-
-A low-traffic announcements-only list is also available:
-
-       https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
-
-It's highly recommended that you sign up for one of these lists if you're
-going to run a public MediaWiki, so you can be notified of security fixes.
-
-== IRC help ==
-
-There's usually someone online in #mediawiki on irc.freenode.net.
index 2d89dd2..ca8c91b 100644 (file)
@@ -21,6 +21,14 @@ production.
 * $wgSquidServersNoPurge now supports the use of Classless Inter-Domain
   Routing (CIDR) notation to specify contiguous blocks of IPv4 and/or IPv6
   addresses that should be trusted to provide X-Forwarded-For headers.
+* Preferences 'watchcreations' and 'watchdefault' ("Add pages I create and files
+  I upload to my watchlist", "Add pages and files I edit to my watchlist") are
+  now enabled by default.
+* $wgLBFactoryConf: Class names have had underscores removed. The configuration
+  should be updated if LBFactory_Simple or LBFactory_Multi is configured.
+* $wgPasswordSenderName has been deprecated. To set a custom mailer name,
+  the system message 'emailsender' should be modified (default: "{{SITENAME}}").
+* $wgDBAhandler was removed as the only class using it was also removed
 
 === New features in 1.23 ===
 * ResourceLoader can utilize the Web Storage API to cache modules client-side.
@@ -37,8 +45,36 @@ production.
 * (bug 56033) Add content model to the page information.
 * Added Article::MissingArticleConditions hook to give extensions a chance to
   hide their (unrelated) log entries.
+* Added LonelyPagesQuery hook to let extensions modify the query used to
+  generate Special:LonelyPages.
 * Added $wgOpenSearchDefaultLimit defining the default number of entries to show
   on action=opensearch API call.
+* For namespaces with $wgNamespaceProtection (including the MediaWiki
+  namespace), the "protect" tab will be shown only if there are restriction
+  levels available that would restrict editing beyond what
+  $wgNamespaceProtection already applies. The protection form will offer only
+  those protection levels.
+* Added $wgAPIFormatModules, allowing extensions to add additional output
+  formatting modules for the API.
+* (bug 47812) The MediaWiki:Group-user.{css,js} pages can now be used to add
+  custom CSS or JavaScript enabled only for registered users.
+* (bug 52005) Special pages RecentChanges, RecentChangesLinked and Watchlist
+  now include a legend describing the symbols used in lists of changes.
+* Improved the accessibility of the tabs in Special:Preferences.
+* Added ApiBeforeMain hook, roughly equivalent to the BeforeInitialize hook:
+  it's called after everything is set up but before any major processing
+  happens.
+* The jquery.client module now performs a component-wise version comparison in
+  its #test method when strings are used in the browser map: version '1.10' is
+  now correctly considered larger than '1.2'. Using numbers in the version map
+  is not affected.
+* All API modules now support an assert parameter, which can either be
+  'user' or 'bot'. The API will throw an error if the user is not logged
+  in (user) or does not have the 'bot' userright (bot). Based off of the
+  AssertEdit extension by Steve Sanbeg.
+* WikitextContent will now render redirects with the expected "redirect"
+  header, rather than as an ordered list. Code calling Article::viewRedirect
+  can probably be changed to no longer special-case redirects.
 
 === Bug fixes in 1.23 ===
 * (bug 41759) The "updated since last visit" markers (on history pages, recent
@@ -53,21 +89,50 @@ production.
 * Classes TitleListDependency and TitleDependency have been removed, as they
   have been found unused in core and extensions for a long time.
 * (bug 57098) SpecialPasswordReset now obeys returnto parameter
-
-=== API changes in 1.23 ===
+* (bug 37812) ResourceLoader will notice when a module's definition changes and
+  recompile it accordingly.
+* (bug 57201) SpecialRecentChangesFilters hook is now executed for feeds.
+* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages
+  to appear blank or with missing text.
+* (bug 56931) Updated the plural rules to CLDR 24. They are in new format
+  which is detailed in UTS 35 Rev 33. The PHP parser and evaluator as well as
+  the JavaScript evaluator were updated to support the new format. Plural rules
+  for some languages have changed, most notably Russian. Affected software
+  messages have been updated and marked for review at translatewiki.net.
+* (bug 14323) Redirect pages, when viewed with redirect=no, no longer hide the
+  remaining page content.
+* (bug 23542) imagelinks now stores both the redirect and target (as
+  templatelinks does).
+* (bug 58167) The web installer no longer throws an exception when PHP is
+  compiled without support for MySQL yet with support for another DBMS.
+* (bug 56199) Raw option of parser functions must now match complete word,
+  to take effect.
+
+=== Web API changes in 1.23 ===
 * (bug 54884) action=parse&prop=categories now indicates hidden and missing
   categories.
 * action=query&meta=filerepoinfo now returns additional information for each
   repo.
-* EditPage::spamPage() was deprecated since 1.17 and has been removed.
-
-=== Languages updated in 1.23===
+* action=parse&prop=languageshtml was deprecated in 1.18 and will be removed in
+  MediaWiki 1.24.
+* action=parse now has disabletoc flag to disable table of contents in output.
+* (bug 25702) list=allcategories, list=allimages, list=alllinks, list=allpages,
+  list=deletedrevs and list=filearchive did not handle case-sensitivity
+  properly for all parameters.
+* ApiQueryBase::titlePartToKey allows an extra parameter that indicates the
+  namespace in order to properly capitalize the title part.
+* (bug 57874) action=feedcontributions no longer has one item more than limit.
+* All API modules now support an assert parameter. See the new features section
+  for more details.
+* Added prop=contributors to fetch the list of contributors to the page.
+
+=== Languages updated in 1.23 ===
 
 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.
 
-* Support was added for Northern Luri (lrc)
+* Support was added for Northern Luri (lrc).
 
 === Other changes in 1.23 ===
 * The rc_type field in the recentchanges table has been superseded by a new
@@ -82,8 +147,116 @@ changes to languages because of Bugzilla reports.
 * The global variable $wgArticle has been removed after a lengthy deprecation.
 * The global functions addButton and insertTags (for mw.toolbar.addButton and
   mw.toolbar.insertTags) now emits mw.log.warn when accessed.
-* User::getPageRenderingHash() was deprecated since 1.17 and has been removed.
 * The ExpandTemplates extension has been moved into MediaWiki core.
+* (bug 52812) Removed "Disable search suggestions" from Preference.
+* (bug 52809) Removed "Disable browser page caching" from Preference.
+* Three new modules intended for use by custom skins were added:
+  'skins.common.elements', 'skins.common.content', and 'skins.common.interface',
+  representing three levels of standard MediaWiki styling. Previously skin
+  creators wishing to use them had to refer to the file names of appropriate
+  files directly, which is now discouraged.
+* The modules 'skins.vector' and 'skins.monobook' have been renamed to
+  'skins.vector.styles' and 'skins.monobook.styles', respectively,
+  and their definition was changed not to include the common*.css files;
+  the two skins now load the 'skins.common.interface' module instead.
+* A page_links_updated field has been added to the page table.
+* SpecialPage::getTitle has been deprecated in favor of
+  SpecialPage::getPageTitle.
+* BREAKING CHANGE: Two potentially backwards-incompatible changes have been made
+  to the 'SpecialWatchlistQuery' hook's last parameter (array $values) to make
+  the hook more consistent with the 'SpecialRecentChangesQuery' one:
+** Several array keys have been renamed: hideMinor → hideminor,
+   hideBots → hidebots, hideAnons → hideanons, hideLiu → hideliu,
+   hidePatrolled → hidepatrolled, hideOwn → hidemyself.
+** The parameter value is now a FormOptions object, not a plain array (array
+   access operators should continue to work, as it implements the ArrayAccess
+   interface).
+* Option to mark hooks as deprecated has been added.
+
+==== Removed classes ====
+* TitleDependency (unused)
+* TitleListDependency (unused)
+* WikiError (deprecated in 1.17)
+* WikiXmlError (deprecated in 1.17)
+* WikiErrorMsg (deprecated in 1.17)
+
+==== Renamed classes ====
+* CdbReader_DBA to CdbReaderDBA
+* CdbReader_PHP to CdbReaderPHP
+* CdbWriter_DBA to CdbWriterDBA
+* CdbWriter_PHP to CdbWriterPHP
+* DiffOp_Add to DiffOpAdd
+* DiffOp_Change to DiffOpChange
+* DiffOp_Copy to DiffOpCopy
+* DiffOp_Delete to DiffOpDelete
+* HWLDF_WordAccumulator to HWLDFWordAccumulator
+* LBFactory_Fake to LBFactoryFake
+* LBFactory_Multi to LBFactoryMulti
+* LBFactory_Simple to LBFactorySimple
+* LBFactory_Single to LBFactorySingle
+* LCStore_Accel to LCStoreAccel
+* LCStore_CDB to LCStoreCDB
+* LCStore_DB to LCStoreDB
+* LCStore_Null to LCStoreNull
+* LoadBalancer_Single to LoadBalancerSingle
+* LoadMonitor_MySQL to LoadMonitorMySQL
+* LoadMonitor_Null to LoadMonitorNull
+* LocalisationCache_BulkLoad to LocalisationCacheBulkLoad
+* csvStatsOutput to CsvStatsOutput
+* extensionLanguages to ExtensionLanguages
+* languages to Languages
+* statsOutput to StatsOutput
+* textStatsOutput to TextStatsOutput
+* wikiStatsOutput to WikiStatsOutput
+
+==== Removed methods ====
+* ApiBase::getValidNamespaces() (deprecated in 1.17)
+* ApiMain::setCachePrivate() (deprecated in 1.17)
+* ApiMain::setVaryCookie (deprecated in 1.17)
+* CategoryViewer::addSubcategory() (deprecated in 1.17)
+* EditPage::spamPage() (deprecated since 1.17)
+* Exif::getFormattedData() (deprecated in 1.18)
+* Exif::makeFormattedData() (deprecated in 1.18)
+* Language::convertLinkToAllVariants() (deprecated in 1.17)
+* LanguageConverter::convertLinkToAllVariants() (deprecated in 1.17)
+* Linker::makeBrokenLink() (deprecated in 1.16)
+* Linker::makeBrokenLinkObj() (deprecated in 1.16)
+* Linker::makeColouredLinkObj() (deprecated in 1.16)
+* Linker::makeSizeLinkObj() (deprecated in 1.17)
+* ProfilerSimple::getCpuTime (deprecated in 1.20)
+* Revision::revText() (deprecated in 1.17)
+* SkinTemplate::jstext() (deprecated in 1.21)
+* SpecialPage::__call() (deprecated in 1.17)
+* SpecialPage::executePath() (deprecated in 1.18)
+* SpecialPage::exists() (deprecated in 1.18)
+* SpecialPage::file() (deprecated in 1.18)
+* SpecialPage::func() (deprecated in 1.18)
+* SpecialPage::getGroup() (deprecated in 1.18)
+* SpecialPage::getPage() (deprecated in 1.18)
+* SpecialPage::getPageByAlias() (deprecated in 1.18)
+* SpecialPage::getLocalNameFor() (deprecated in 1.18)
+* SpecialPage::getRegularPages() (deprecated in 1.18)
+* SpecialPage::getRestrictedPages() (deprecated in 1.18)
+* SpecialPage::getTitleForAlias() (deprecated in 1.18)
+* SpecialPage::getUsablePages() (deprecated in 1.18)
+* SpecialPage::includable() (deprecated in 1.18)
+* SpecialPage::init()
+* SpecialPage::initAliasList() (deprecated in 1.18)
+* SpecialPage::initList() (deprecated in 1.18)
+* SpecialPage::name() (deprecated in 1.18)
+* SpecialPage::removePage() (deprecated in 1.18)
+* SpecialPage::resolveAlias() (deprecated in 1.18)
+* SpecialPage::resolveAliasWithSubpage() (deprecated in 1.18)
+* SpecialPage::restriction() (deprecated in 1.18)
+* SpecialPage::setGroup() (deprecated in 1.18)
+* SpecialRecentChanges::feedSetup()
+* SpecialRevisionDelete::extractBitField() (deprecated in 1.22)
+* User::getPageRenderingHash() (deprecated in 1.17)
+* WebRequest::getFileSize() (deprecated in 1.17)
+* WebRequest::isPathInfoBad() (deprecated in 1.17)
+* WikiPage::quickEdit() (deprecated in 1.18)
+* WikiPage::useParserCache() (deprecated in 1.18)
+* WikiPage::viewUpdates() (deprecated in 1.18)
 
 == Compatibility ==
 
diff --git a/api.php b/api.php
index 8fab878..0d2312a 100644 (file)
--- a/api.php
+++ b/api.php
@@ -69,15 +69,23 @@ $wgTitle = Title::makeTitle( NS_MAIN, 'API' );
  */
 $processor = new ApiMain( RequestContext::getMain(), $wgEnableWriteAPI );
 
+// Last chance hook before executing the API
+wfRunHooks( 'ApiBeforeMain', array( &$processor ) );
+
 // Process data & print results
 $processor->execute();
 
+if ( function_exists( 'fastcgi_finish_request' ) ) {
+       fastcgi_finish_request();
+}
+
 // Execute any deferred updates
 DeferredUpdates::doUpdates();
 
 // Log what the user did, for book-keeping purposes.
 $endtime = microtime( true );
 wfProfileOut( 'api.php' );
+
 wfLogProfilingData();
 
 // Log the request
index 6c4d37f..cf63678 100644 (file)
@@ -3,9 +3,9 @@
                "php": ">=5.3.2"
        },
        "suggest": {
-               "ext-fileinfo": "*",
-               "ext-mbstring": "*",
-               "ext-wikidiff2": "*",
-               "ext-apc": "*"
+               "ext-fileinfo": "More accurate file type detection for uploaded files",
+               "ext-mbstring": "Faster unicode handling",
+               "ext-wikidiff2": "Faster diff generation",
+               "ext-apc": "Speed up MediaWiki with opcode caching (before PHP 5.5)"
        }
 }
index 15387f8..bbe1680 100644 (file)
@@ -347,6 +347,9 @@ $body: Body of the message
 this to extend core API modules.
 &$module: Module object
 
+'ApiBeforeMain': Before calling ApiMain's execute() method in api.php.
+&$main: ApiMain object
+
 'ApiCheckCanExecute': Called during ApiMain::checkCanExecute. Use to further
 authenticate and authorize API clients before executing the module. Return
 false and set a message to cancel the request.
@@ -1543,6 +1546,7 @@ cache.
 $cache: The LocalisationCache object
 $code: language code
 &$alldata: The localisation data from core and extensions
+&purgeBlobs: whether to purge/update the message blobs via MessageBlobStore::clear()
 
 'LocalisationChecksBlacklist': When fetching the blacklist of
 localisation checks.
@@ -1592,6 +1596,12 @@ $paramArray: Array of parameters that corresponds to logging.log_params field.
 &$revert: string that is displayed in the UI, similar to $comment.
 $time: timestamp of the log entry (added in 1.12)
 
+'LonelyPagesQuery': Allow extensions to modify the query used by
+Special:LonelyPages.
+&$tables: tables to join in the query
+&$conds: conditions for the query
+&$joinConds: join conditions for the query
+
 'MaintenanceRefreshLinksInit': before executing the refreshLinks.php maintenance
 script.
 $refreshLinks: RefreshLinks object
@@ -1789,7 +1799,8 @@ $queryInfo: the query parameters
 'PageRenderingHash': Alter the parser cache option hash key. A parser extension
 which depends on user options should install this hook and append its values to
 the key.
-$hash: reference to a hash key string which can be modified
+&$confstr: reference to a hash key string which can be modified
+$user: User (object) requesting the page
 
 'ParserAfterParse': Called from Parser::parse() just after the call to
 Parser::internalParse() returns.
@@ -1909,7 +1920,7 @@ that tests continue to run properly.
 my talk page, my contributions" etc).
 &$personal_urls: Array of link specifiers (see SkinTemplate.php)
 &$title: Title object representing the current page
-$skin: Skin object providing context (e.g. to check if the user is logged in, etc.)
+$skin: SkinTemplate object providing context (e.g. to check if the user is logged in, etc.)
 
 'PingLimiter': Allows extensions to override the results of User::pingLimiter().
 &$user : User performing the action
@@ -2200,8 +2211,14 @@ software.
 $software: The array of software in format 'name' => 'version'. See
   SpecialVersion::softwareInformation().
 
+'SpecialBlockModifyFormFields': Add more fields to Special:Block
+$sp: SpecialPage object, for context
+&$fields: Current HTMLForm fields
+
 'SpecialContributionsBeforeMainOutput': Before the form on Special:Contributions
-$id: User identifier
+$id: User id number, only provided for backwards-compatability
+$user: User object representing user contributions are being fetched for
+$sp: SpecialPage instance, providing context
 
 'SpecialListusersDefaultQuery': Called right before the end of
 UsersPager::getDefaultQuery().
@@ -2390,7 +2407,7 @@ $special: the special page object
 &$tables: array of tables to be queried
 &$join_conds: join conditions for the tables
 &$fields: array of query fields
-$values: array of variables with watchlist options
+$opts: A FormOptions object with watchlist options for the current request
 
 'SpecialWatchlistGetNonRevisionTypes': Called when building sql query for
 SpecialWatchlist. Allows extensions to register custom values they have
index c8759ec..72a7dab 100644 (file)
@@ -52,7 +52,7 @@ wfImageAuthMain();
 wfLogProfilingData();
 
 function wfImageAuthMain() {
-       global $wgImgAuthPublicTest, $wgRequest;
+       global $wgImgAuthPublicTest, $wgImgAuthUrlPathMap, $wgRequest;
 
        // See if this is a public Wiki (no protections).
        if ( $wgImgAuthPublicTest
@@ -77,14 +77,37 @@ function wfImageAuthMain() {
 
        // Check for bug 28235: QUERY_STRING overriding the correct extension
        $whitelist = array();
-       $dotPos = strrpos( $path, '.' );
-       if ( $dotPos !== false ) {
-               $whitelist[] = substr( $path, $dotPos + 1 );
+       $extension = FileBackend::extensionFromPath( $path );
+       if ( $extension != '' ) {
+               $whitelist[] = $extension;
        }
        if ( !$wgRequest->checkUrlExtension( $whitelist ) ) {
                return;
        }
 
+       // Various extensions may have their own backends that need access.
+       // Check if there is a special backend and storage base path for this file.
+       foreach ( $wgImgAuthUrlPathMap as $prefix => $storageDir ) {
+               $prefix = rtrim( $prefix, '/' ) . '/'; // implicit trailing slash
+               if ( strpos( $path, $prefix ) === 0 ) {
+                       $be = FileBackendGroup::singleton()->backendFromPath( $storageDir );
+                       $filename = $storageDir . substr( $path, strlen( $prefix ) ); // strip prefix
+                       // Check basic user authorization
+                       if ( !RequestContext::getMain()->getUser()->isAllowed( 'read' ) ) {
+                               wfForbidden( 'img-auth-accessdenied', 'img-auth-noread', $path );
+                               return;
+                       }
+                       if ( $be->fileExists( array( 'src' => $filename ) ) ) {
+                               wfDebugLog( 'img_auth', "Streaming `" . $filename . "`." );
+                               $be->streamFile( array( 'src' => $filename ),
+                                       array( 'Cache-Control: private', 'Vary: Cookie' ) );
+                       } else {
+                               wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $path );
+                       }
+                       return;
+               }
+       }
+
        // Get the local file repository
        $repo = RepoGroup::singleton()->getRepo( 'local' );
 
@@ -145,6 +168,7 @@ function wfForbidden( $msg1, $msg2 ) {
        $args = func_get_args();
        array_shift( $args );
        array_shift( $args );
+       $args = ( isset( $args[0] ) && is_array( $args[0] ) ) ? $args[0] : $args;
 
        $msgHdr = wfMessage( $msg1 )->escaped();
        $detailMsgKey = $wgImgAuthDetails ? $msg2 : 'badaccess-group0';
index d553652..037ef9a 100644 (file)
@@ -224,11 +224,6 @@ class AjaxResponse {
                        return false;
                }
 
-               if ( $wgUser->getOption( 'nocache' ) ) {
-                       wfDebug( "$fname: USER DISABLED CACHE\n", false );
-                       return false;
-               }
-
                $timestamp = wfTimestamp( TS_MW, $timestamp );
                $lastmod = wfTimestamp( TS_RFC2822, max( $timestamp, $wgUser->getTouched(), $wgCacheEpoch ) );
 
index ecbc59f..ce6407a 100644 (file)
@@ -684,26 +684,15 @@ class Article implements Page {
 
                                                # Allow extensions do their own custom view for certain pages
                                                $outputDone = true;
-                                       } else {
-                                               $content = $this->getContentObject();
-                                               $rt = $content ? $content->getRedirectChain() : null;
-                                               if ( $rt ) {
-                                                       wfDebug( __METHOD__ . ": showing redirect=no page\n" );
-                                                       # Viewing a redirect page (e.g. with parameter redirect=no)
-                                                       $outputPage->addHTML( $this->viewRedirect( $rt ) );
-                                                       # Parse just to get categories, displaytitle, etc.
-                                                       $this->mParserOutput = $content->getParserOutput( $this->getTitle(), $oldid, $parserOptions, false );
-                                                       $outputPage->addParserOutputNoText( $this->mParserOutput );
-                                                       $outputDone = true;
-                                               }
                                        }
                                        break;
                                case 4:
                                        # Run the parse, protected by a pool counter
                                        wfDebug( __METHOD__ . ": doing uncached parse\n" );
 
+                                       $content = $this->getContentObject();
                                        $poolArticleView = new PoolWorkArticleView( $this->getPage(), $parserOptions,
-                                               $this->getRevIdFetched(), $useParserCache, $this->getContentObject() );
+                                               $this->getRevIdFetched(), $useParserCache, $content );
 
                                        if ( !$poolArticleView->execute() ) {
                                                $error = $poolArticleView->getError();
@@ -722,6 +711,9 @@ class Article implements Page {
 
                                        $this->mParserOutput = $poolArticleView->getParserOutput();
                                        $outputPage->addParserOutput( $this->mParserOutput );
+                                       if ( $content->getRedirectTarget() ) {
+                                               $outputPage->addSubtitle( wfMessage( 'redirectpagesub' )->parse() );
+                                       }
 
                                        # Don't cache a dirty ParserOutput object
                                        if ( $poolArticleView->getIsDirty() ) {
@@ -989,9 +981,8 @@ class Article implements Page {
 
                                // Set the fragment if one was specified in the redirect
                                if ( strval( $this->getTitle()->getFragment() ) != '' ) {
-                                       $outputPage->addInlineScript( Xml::encodeJsCall(
-                                               'redirectToFragment', array( $this->getTitle()->getFragmentForURL() )
-                                       ) );
+                                       $outputPage->addJsConfigVars( 'wgRedirectToFragment', $this->getTitle()->getFragmentForURL() );
+                                       $outputPage->addModules( 'mediawiki.action.view.redirectToFragment' );
                                }
 
                                // Add a <link rel="canonical"> tag
@@ -1420,7 +1411,10 @@ class Article implements Page {
        }
 
        /**
-        * View redirect
+        * Return the HTML for the top of a redirect page
+        *
+        * Chances are you should just be using the ParserOutput from
+        * WikitextContent::getParserOutput instead of calling this for redirects.
         *
         * @param $target Title|Array of destination(s) to redirect
         * @param $appendSubtitle Boolean [optional]
@@ -1428,20 +1422,35 @@ class Article implements Page {
         * @return string containing HMTL with redirect link
         */
        public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) {
+               $lang = $this->getTitle()->getPageLanguage();
+               if ( $appendSubtitle ) {
+                       $out = $this->getContext()->getOutput();
+                       $out->addSubtitle( wfMessage( 'redirectpagesub' )->parse() );
+               }
+               return static::getRedirectHeaderHtml( $lang, $target, $forceKnown );
+       }
+
+       /**
+        * Return the HTML for the top of a redirect page
+        *
+        * Chances are you should just be using the ParserOutput from
+        * WikitextContent::getParserOutput instead of calling this for redirects.
+        *
+        * @since 1.23
+        * @param Language $lang
+        * @param Title|array $target destination(s) to redirect
+        * @param bool $forceKnown Should the image be shown as a bluelink regardless of existence?
+        * @return string containing HMTL with redirect link
+        */
+       public static function getRedirectHeaderHtml( Language $lang, $target, $forceKnown = false ) {
                global $wgStylePath;
 
                if ( !is_array( $target ) ) {
                        $target = array( $target );
                }
 
-               $lang = $this->getTitle()->getPageLanguage();
                $imageDir = $lang->getDir();
 
-               if ( $appendSubtitle ) {
-                       $out = $this->getContext()->getOutput();
-                       $out->addSubtitle( wfMessage( 'redirectpagesub' )->escaped() );
-               }
-
                // the loop prepends the arrow image before the link, so the first case needs to be outside
 
                /**
@@ -1552,8 +1561,8 @@ class Article implements Page {
                }
 
                if ( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'wpEditToken' ),
-                       array( 'delete', $this->getTitle()->getPrefixedText() ) ) )
-               {
+                       array( 'delete', $this->getTitle()->getPrefixedText() ) )
+               {
                        # Flag to hide all contents of the archived revisions
                        $suppress = $request->getVal( 'wpSuppress' ) && $user->isAllowed( 'suppressrevision' );
 
@@ -1611,6 +1620,10 @@ class Article implements Page {
                $outputPage->setPageTitle( wfMessage( 'delete-confirm', $this->getTitle()->getPrefixedText() ) );
                $outputPage->addBacklinkSubtitle( $this->getTitle() );
                $outputPage->setRobotPolicy( 'noindex,nofollow' );
+               if ( $this->getTitle()->getBacklinkCache()->hasLinks( 'pagelinks' ) ) {
+                       $outputPage->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+                               'deleting-backlinks-warning' );
+               }
                $outputPage->addWikiMsg( 'confirmdeletetext' );
 
                wfRunHooks( 'ArticleConfirmDelete', array( $this, $outputPage, &$reason ) );
index 60ee2a8..bab00f9 100644 (file)
@@ -50,6 +50,7 @@ $wgAutoloadLocalClasses = array(
        'ChangeTags' => 'includes/ChangeTags.php',
        'ChannelFeed' => 'includes/Feed.php',
        'Collation' => 'includes/Collation.php',
+       'CollationCkb' => 'includes/Collation.php',
        'ConcatenatedGzipHistoryBlob' => 'includes/HistoryBlob.php',
        'Cookie' => 'includes/Cookie.php',
        'CookieJar' => 'includes/Cookie.php',
@@ -84,7 +85,7 @@ $wgAutoloadLocalClasses = array(
        'FormlessAction' => 'includes/Action.php',
        'FormAction' => 'includes/Action.php',
        'FormOptions' => 'includes/FormOptions.php',
-       'FormSpecialPage' => 'includes/SpecialPage.php',
+       'FormSpecialPage' => 'includes/specialpage/FormSpecialPage.php',
        'GitInfo' => 'includes/GitInfo.php',
        'HistoryBlob' => 'includes/HistoryBlob.php',
        'HistoryBlobCurStub' => 'includes/HistoryBlob.php',
@@ -92,27 +93,27 @@ $wgAutoloadLocalClasses = array(
        'Hooks' => 'includes/Hooks.php',
        'Html' => 'includes/Html.php',
        'HtmlFormatter' => 'includes/HtmlFormatter.php',
-       'HTMLApiField' => 'includes/HTMLForm.php',
-       'HTMLButtonField' => 'includes/HTMLForm.php',
-       'HTMLCheckField' => 'includes/HTMLForm.php',
-       'HTMLCheckMatrix' => 'includes/HTMLForm.php',
-       'HTMLEditTools' => 'includes/HTMLForm.php',
-       'HTMLFloatField' => 'includes/HTMLForm.php',
-       'HTMLForm' => 'includes/HTMLForm.php',
-       'HTMLFormField' => 'includes/HTMLForm.php',
-       'HTMLFormFieldRequiredOptionsException' => 'includes/HTMLForm.php',
-       'HTMLHiddenField' => 'includes/HTMLForm.php',
-       'HTMLInfoField' => 'includes/HTMLForm.php',
-       'HTMLIntField' => 'includes/HTMLForm.php',
-       'HTMLNestedFilterable' => 'includes/HTMLForm.php',
-       'HTMLMultiSelectField' => 'includes/HTMLForm.php',
-       'HTMLRadioField' => 'includes/HTMLForm.php',
-       'HTMLSelectAndOtherField' => 'includes/HTMLForm.php',
-       'HTMLSelectField' => 'includes/HTMLForm.php',
-       'HTMLSelectOrOtherField' => 'includes/HTMLForm.php',
-       'HTMLSubmitField' => 'includes/HTMLForm.php',
-       'HTMLTextAreaField' => 'includes/HTMLForm.php',
-       'HTMLTextField' => 'includes/HTMLForm.php',
+       'HTMLApiField' => 'includes/htmlform/HTMLApiField.php',
+       'HTMLButtonField' => 'includes/htmlform/HTMLButtonField.php',
+       'HTMLCheckField' => 'includes/htmlform/HTMLCheckField.php',
+       'HTMLCheckMatrix' => 'includes/htmlform/HTMLCheckMatrix.php',
+       'HTMLEditTools' => 'includes/htmlform/HTMLEditTools.php',
+       'HTMLFloatField' => 'includes/htmlform/HTMLFloatField.php',
+       'HTMLForm' => 'includes/htmlform/HTMLForm.php',
+       'HTMLFormField' => 'includes/htmlform/HTMLFormField.php',
+       'HTMLFormFieldRequiredOptionsException' => 'includes/htmlform/HTMLFormFieldRequiredOptionsException.php',
+       'HTMLHiddenField' => 'includes/htmlform/HTMLHiddenField.php',
+       'HTMLInfoField' => 'includes/htmlform/HTMLInfoField.php',
+       'HTMLIntField' => 'includes/htmlform/HTMLIntField.php',
+       'HTMLNestedFilterable' => 'includes/htmlform/HTMLNestedFilterable.php',
+       'HTMLMultiSelectField' => 'includes/htmlform/HTMLMultiSelectField.php',
+       'HTMLRadioField' => 'includes/htmlform/HTMLRadioField.php',
+       'HTMLSelectAndOtherField' => 'includes/htmlform/HTMLSelectAndOtherField.php',
+       'HTMLSelectField' => 'includes/htmlform/HTMLSelectField.php',
+       'HTMLSelectOrOtherField' => 'includes/htmlform/HTMLSelectOrOtherField.php',
+       'HTMLSubmitField' => 'includes/htmlform/HTMLSubmitField.php',
+       'HTMLTextAreaField' => 'includes/htmlform/HTMLTextAreaField.php',
+       'HTMLTextField' => 'includes/htmlform/HTMLTextField.php',
        'Http' => 'includes/HttpFunctions.php',
        'HttpError' => 'includes/Exception.php',
        'ICacheHelper' => 'includes/CacheHelper.php',
@@ -124,7 +125,7 @@ $wgAutoloadLocalClasses = array(
        'ImageQueryPage' => 'includes/ImageQueryPage.php',
        'ImportStreamSource' => 'includes/Import.php',
        'ImportStringSource' => 'includes/Import.php',
-       'IncludableSpecialPage' => 'includes/SpecialPage.php',
+       'IncludableSpecialPage' => 'includes/specialpage/IncludableSpecialPage.php',
        'IndexPager' => 'includes/Pager.php',
        'Interwiki' => 'includes/interwiki/Interwiki.php',
        'LCStore' => 'includes/cache/LocalisationCache.php',
@@ -175,8 +176,8 @@ $wgAutoloadLocalClasses = array(
        'RawMessage' => 'includes/Message.php',
        'RdfMetaData' => 'includes/Metadata.php',
        'ReadOnlyError' => 'includes/Exception.php',
-       'RedirectSpecialArticle' => 'includes/SpecialPage.php',
-       'RedirectSpecialPage' => 'includes/SpecialPage.php',
+       'RedirectSpecialArticle' => 'includes/specialpage/RedirectSpecialPage.php',
+       'RedirectSpecialPage' => 'includes/specialpage/RedirectSpecialPage.php',
        'ReverseChronologicalPager' => 'includes/Pager.php',
        'RevisionItem' => 'includes/RevisionList.php',
        'RevisionItemBase' => 'includes/RevisionList.php',
@@ -190,17 +191,17 @@ $wgAutoloadLocalClasses = array(
        'SiteStatsInit' => 'includes/SiteStats.php',
        'Skin' => 'includes/Skin.php',
        'SkinTemplate' => 'includes/SkinTemplate.php',
-       'SpecialCreateAccount' => 'includes/SpecialPage.php',
-       'SpecialListAdmins' => 'includes/SpecialPage.php',
-       'SpecialListBots' => 'includes/SpecialPage.php',
-       'SpecialMycontributions' => 'includes/SpecialPage.php',
-       'SpecialMypage' => 'includes/SpecialPage.php',
-       'SpecialMytalk' => 'includes/SpecialPage.php',
-       'SpecialMyuploads' => 'includes/SpecialPage.php',
-       'SpecialAllMyUploads' => 'includes/SpecialPage.php',
-       'SpecialPage' => 'includes/SpecialPage.php',
-       'SpecialPageFactory' => 'includes/SpecialPageFactory.php',
-       'SpecialRedirectToSpecial' => 'includes/SpecialPage.php',
+       'SpecialCreateAccount' => 'includes/specials/SpecialCreateAccount.php',
+       'SpecialListAdmins' => 'includes/specials/SpecialListusers.php',
+       'SpecialListBots' => 'includes/specials/SpecialListusers.php',
+       'SpecialMycontributions' => 'includes/specials/SpecialMyRedirectPages.php',
+       'SpecialMypage' => 'includes/specials/SpecialMyRedirectPages.php',
+       'SpecialMytalk' => 'includes/specials/SpecialMyRedirectPages.php',
+       'SpecialMyuploads' => 'includes/specials/SpecialMyRedirectPages.php',
+       'SpecialAllMyUploads' => 'includes/specials/SpecialMyRedirectPages.php',
+       'SpecialPage' => 'includes/specialpage/SpecialPage.php',
+       'SpecialPageFactory' => 'includes/specialpage/SpecialPageFactory.php',
+       'SpecialRedirectToSpecial' => 'includes/specialpage/RedirectSpecialPage.php',
        'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
        'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
        'StatCounter' => 'includes/StatCounter.php',
@@ -216,7 +217,7 @@ $wgAutoloadLocalClasses = array(
        'TitleArray' => 'includes/TitleArray.php',
        'TitleArrayFromResult' => 'includes/TitleArray.php',
        'ThrottledError' => 'includes/Exception.php',
-       'UnlistedSpecialPage' => 'includes/SpecialPage.php',
+       'UnlistedSpecialPage' => 'includes/specialpage/UnlistedSpecialPage.php',
        'UploadSourceAdapter' => 'includes/Import.php',
        'UppercaseCollation' => 'includes/Collation.php',
        'User' => 'includes/User.php',
@@ -233,8 +234,6 @@ $wgAutoloadLocalClasses = array(
        'WebRequestUpload' => 'includes/WebRequest.php',
        'WebResponse' => 'includes/WebResponse.php',
        'WikiCategoryPage' => 'includes/WikiCategoryPage.php',
-       'WikiError' => 'includes/WikiError.php',
-       'WikiErrorMsg' => 'includes/WikiError.php',
        'WikiExporter' => 'includes/Export.php',
        'WikiFilePage' => 'includes/WikiFilePage.php',
        'WikiImporter' => 'includes/Import.php',
@@ -242,13 +241,11 @@ $wgAutoloadLocalClasses = array(
        'WikiRevision' => 'includes/Import.php',
        'WikiMap' => 'includes/WikiMap.php',
        'WikiReference' => 'includes/WikiMap.php',
-       'WikiXmlError' => 'includes/WikiError.php',
        'Xml' => 'includes/Xml.php',
        'XmlDumpWriter' => 'includes/Export.php',
        'XmlJsCode' => 'includes/Xml.php',
        'XMLReader2' => 'includes/Import.php',
        'XmlSelect' => 'includes/Xml.php',
-       'ZhClient' => 'includes/ZhClient.php',
 
        # includes/actions
        'CachedAction' => 'includes/actions/CachedAction.php',
@@ -332,6 +329,7 @@ $wgAutoloadLocalClasses = array(
        'ApiQueryCategoryInfo' => 'includes/api/ApiQueryCategoryInfo.php',
        'ApiQueryCategoryMembers' => 'includes/api/ApiQueryCategoryMembers.php',
        'ApiQueryContributions' => 'includes/api/ApiQueryUserContributions.php',
+       'ApiQueryContributors' => 'includes/api/ApiQueryContributors.php',
        'ApiQueryDeletedrevs' => 'includes/api/ApiQueryDeletedrevs.php',
        'ApiQueryDisabled' => 'includes/api/ApiQueryDisabled.php',
        'ApiQueryDuplicateFiles' => 'includes/api/ApiQueryDuplicateFiles.php',
@@ -390,6 +388,7 @@ $wgAutoloadLocalClasses = array(
        'HTMLFileCache' => 'includes/cache/HTMLFileCache.php',
        'LinkBatch' => 'includes/cache/LinkBatch.php',
        'LinkCache' => 'includes/cache/LinkCache.php',
+       'MapCacheLRU' => 'includes/cache/MapCacheLRU.php',
        'MessageCache' => 'includes/cache/MessageCache.php',
        'ObjectFileCache' => 'includes/cache/ObjectFileCache.php',
        'ProcessCacheLRU' => 'includes/cache/ProcessCacheLRU.php',
@@ -459,16 +458,16 @@ $wgAutoloadLocalClasses = array(
        'FakeResultWrapper' => 'includes/db/DatabaseUtility.php',
        'Field' => 'includes/db/DatabaseUtility.php',
        'LBFactory' => 'includes/db/LBFactory.php',
-       'LBFactory_Fake' => 'includes/db/LBFactory.php',
-       'LBFactory_Multi' => 'includes/db/LBFactory_Multi.php',
-       'LBFactory_Simple' => 'includes/db/LBFactory.php',
-       'LBFactory_Single' => 'includes/db/LBFactory_Single.php',
+       'LBFactoryFake' => 'includes/db/LBFactory.php',
+       'LBFactoryMulti' => 'includes/db/LBFactoryMulti.php',
+       'LBFactorySimple' => 'includes/db/LBFactory.php',
+       'LBFactorySingle' => 'includes/db/LBFactorySingle.php',
        'LikeMatch' => 'includes/db/DatabaseUtility.php',
        'LoadBalancer' => 'includes/db/LoadBalancer.php',
-       'LoadBalancer_Single' => 'includes/db/LBFactory_Single.php',
+       'LoadBalancerSingle' => 'includes/db/LBFactorySingle.php',
        'LoadMonitor' => 'includes/db/LoadMonitor.php',
-       'LoadMonitor_MySQL' => 'includes/db/LoadMonitor.php',
-       'LoadMonitor_Null' => 'includes/db/LoadMonitor.php',
+       'LoadMonitorMySQL' => 'includes/db/LoadMonitor.php',
+       'LoadMonitorNull' => 'includes/db/LoadMonitor.php',
        'MssqlField' => 'includes/db/DatabaseMssql.php',
        'MssqlResult' => 'includes/db/DatabaseMssql.php',
        'MySQLField' => 'includes/db/DatabaseMysqlBase.php',
@@ -532,6 +531,7 @@ $wgAutoloadLocalClasses = array(
        'FileBackendGroup' => 'includes/filebackend/FileBackendGroup.php',
        'FileBackend' => 'includes/filebackend/FileBackend.php',
        'FileBackendError' => 'includes/filebackend/FileBackend.php',
+       'FileBackendException' => 'includes/filebackend/FileBackend.php',
        'FileBackendStore' => 'includes/filebackend/FileBackendStore.php',
        'FileBackendStoreShardListIterator' => 'includes/filebackend/FileBackendStore.php',
        'FileBackendStoreShardDirIterator' => 'includes/filebackend/FileBackendStore.php',
@@ -544,6 +544,7 @@ $wgAutoloadLocalClasses = array(
        'FSFileBackendDirList' => 'includes/filebackend/FSFileBackend.php',
        'FSFileBackendFileList' => 'includes/filebackend/FSFileBackend.php',
        'FSFileOpHandle' => 'includes/filebackend/FSFileBackend.php',
+       'MemoryFileBackend' => 'includes/filebackend/MemoryFileBackend.php',
        'SwiftFileBackend' => 'includes/filebackend/SwiftFileBackend.php',
        'SwiftFileBackendList' => 'includes/filebackend/SwiftFileBackend.php',
        'SwiftFileBackendDirList' => 'includes/filebackend/SwiftFileBackend.php',
@@ -673,9 +674,11 @@ $wgAutoloadLocalClasses = array(
        'CSSJanus_Tokenizer' => 'includes/libs/CSSJanus.php',
        'CSSMin' => 'includes/libs/CSSMin.php',
        'GenericArrayObject' => 'includes/libs/GenericArrayObject.php',
+       'HashRing' => 'includes/libs/HashRing.php',
        'HttpStatus' => 'includes/libs/HttpStatus.php',
        'IEContentAnalyzer' => 'includes/libs/IEContentAnalyzer.php',
        'IEUrlExtension' => 'includes/libs/IEUrlExtension.php',
+       'MappedIterator' => 'includes/libs/MappedIterator.php',
        'JavaScriptMinifier' => 'includes/libs/JavaScriptMinifier.php',
        'JSCompilerContext' => 'includes/libs/jsminplus.php',
        'JSMinPlus' => 'includes/libs/jsminplus.php',
@@ -683,6 +686,10 @@ $wgAutoloadLocalClasses = array(
        'JSParser' => 'includes/libs/jsminplus.php',
        'JSToken' => 'includes/libs/jsminplus.php',
        'JSTokenizer' => 'includes/libs/jsminplus.php',
+       'MultiHttpClient' => 'includes/libs/MultiHttpClient.php',
+       'MWMessagePack' => 'includes/libs/MWMessagePack.php',
+       'RunningStat' => 'includes/libs/RunningStat.php',
+       'ScopedCallback' => 'includes/libs/ScopedCallback.php',
        'ScopedPHPTimeout' => 'includes/libs/ScopedPHPTimeout.php',
        'XmlTypeCheck' => 'includes/libs/XmlTypeCheck.php',
 
@@ -760,8 +767,6 @@ $wgAutoloadLocalClasses = array(
        # includes/objectcache
        'APCBagOStuff' => 'includes/objectcache/APCBagOStuff.php',
        'BagOStuff' => 'includes/objectcache/BagOStuff.php',
-       'DBABagOStuff' => 'includes/objectcache/DBABagOStuff.php',
-       'EhcacheBagOStuff' => 'includes/objectcache/EhcacheBagOStuff.php',
        'EmptyBagOStuff' => 'includes/objectcache/EmptyBagOStuff.php',
        'FakeMemCachedClient' => 'includes/objectcache/EmptyBagOStuff.php',
        'HashBagOStuff' => 'includes/objectcache/HashBagOStuff.php',
@@ -819,6 +824,7 @@ $wgAutoloadLocalClasses = array(
 
        # includes/profiler
        'Profiler' => 'includes/profiler/Profiler.php',
+       'ProfilerMwprof' => 'includes/profiler/ProfilerMwprof.php',
        'ProfilerSimple' => 'includes/profiler/ProfilerSimple.php',
        'ProfilerSimpleText' => 'includes/profiler/ProfilerSimpleText.php',
        'ProfilerSimpleTrace' => 'includes/profiler/ProfilerSimpleTrace.php',
@@ -833,6 +839,8 @@ $wgAutoloadLocalClasses = array(
        'RCFeedFormatter' => 'includes/rcfeed/RCFeedFormatter.php',
        'IRCColourfulRCFeedFormatter' => 'includes/rcfeed/IRCColourfulRCFeedFormatter.php',
        'JSONRCFeedFormatter' => 'includes/rcfeed/JSONRCFeedFormatter.php',
+       'XMLRCFeedFormatter' => 'includes/rcfeed/XMLRCFeedFormatter.php',
+       'MachineReadableRCFeedFormatter' => 'includes/rcfeed/MachineReadableRCFeedFormatter.php',
 
        # includes/resourceloader
        'ResourceLoader' => 'includes/resourceloader/ResourceLoader.php',
@@ -976,7 +984,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialNewpages' => 'includes/specials/SpecialNewpages.php',
        'SpecialPasswordReset' => 'includes/specials/SpecialPasswordReset.php',
        'SpecialPagesWithProp' => 'includes/specials/SpecialPagesWithProp.php',
-       'SpecialPermanentLink' => 'includes/SpecialPage.php',
+       'SpecialPermanentLink' => 'includes/specials/SpecialPermanentLink.php',
        'SpecialPreferences' => 'includes/specials/SpecialPreferences.php',
        'SpecialPrefixindex' => 'includes/specials/SpecialPrefixindex.php',
        'SpecialProtectedpages' => 'includes/specials/SpecialProtectedpages.php',
@@ -984,7 +992,7 @@ $wgAutoloadLocalClasses = array(
        'SpecialRandomInCategory' => 'includes/specials/SpecialRandomInCategory.php',
        'SpecialRandomredirect' => 'includes/specials/SpecialRandomredirect.php',
        'SpecialRecentChanges' => 'includes/specials/SpecialRecentchanges.php',
-       'SpecialRecentchangeslinked' => 'includes/specials/SpecialRecentchangeslinked.php',
+       'SpecialRecentChangesLinked' => 'includes/specials/SpecialRecentchangeslinked.php',
        'SpecialRedirect' => 'includes/specials/SpecialRedirect.php',
        'SpecialResetTokens' => 'includes/specials/SpecialResetTokens.php',
        'SpecialRevisionDelete' => 'includes/specials/SpecialRevisiondelete.php',
@@ -1061,16 +1069,13 @@ $wgAutoloadLocalClasses = array(
        'ConfEditorToken' => 'includes/utils/ConfEditor.php',
        'DoubleReplacer' => 'includes/utils/StringUtils.php',
        'ExplodeIterator' => 'includes/utils/StringUtils.php',
-       'HashRing' => 'includes/utils/HashRing.php',
        'HashtableReplacer' => 'includes/utils/StringUtils.php',
        'IP' => 'includes/utils/IP.php',
        'MWCryptRand' => 'includes/utils/MWCryptRand.php',
        'MWFunction' => 'includes/utils/MWFunction.php',
-       'MappedIterator' => 'includes/utils/MappedIterator.php',
        'RegexlikeReplacer' => 'includes/utils/StringUtils.php',
        'ReplacementArray' => 'includes/utils/StringUtils.php',
        'Replacer' => 'includes/utils/StringUtils.php',
-       'ScopedCallback' => 'includes/utils/ScopedCallback.php',
        'StringUtils' => 'includes/utils/StringUtils.php',
        'UIDGenerator' => 'includes/utils/UIDGenerator.php',
        'ZipDirectoryReader' => 'includes/utils/ZipDirectoryReader.php',
@@ -1151,9 +1156,6 @@ class AutoLoader {
         * autoload - take a class name and attempt to load it
         *
         * @param string $className name of class we're looking for.
-        * @return bool Returning false is important on failure as
-        * it allows Zend to try and look in other registered autoloaders
-        * as well.
         */
        static function autoload( $className ) {
                global $wgAutoloadClasses, $wgAutoloadLocalClasses,
@@ -1203,7 +1205,7 @@ class AutoLoader {
                        }
 
                        # Give up
-                       return false;
+                       return;
                }
 
                # Make an absolute path, this improves performance by avoiding some stat calls
@@ -1213,8 +1215,6 @@ class AutoLoader {
                }
 
                require $filename;
-
-               return true;
        }
 
        /**
index 9aeb99b..8673a3d 100644 (file)
@@ -63,8 +63,8 @@ class Block {
         */
        function __construct( $address = '', $user = 0, $by = 0, $reason = '',
                $timestamp = 0, $auto = 0, $expiry = '', $anonOnly = 0, $createAccount = 0, $enableAutoblock = 0,
-               $hideName = 0, $blockEmail = 0, $allowUsertalk = 0, $byText = '' )
-       {
+               $hideName = 0, $blockEmail = 0, $allowUsertalk = 0, $byText = ''
+       {
                if ( $timestamp === 0 ) {
                        $timestamp = wfTimestampNow();
                }
index 55d9c1e..4027bef 100644 (file)
@@ -181,15 +181,6 @@ class CategoryViewer extends ContextSource {
                        $this->getSubcategorySortChar( $cat->getTitle(), $sortkey );
        }
 
-       /**
-        * Add a subcategory to the internal lists, using a title object
-        * @deprecated since 1.17 kept for compatibility, use addSubcategoryObject instead
-        */
-       function addSubcategory( Title $title, $sortkey, $pageLength ) {
-               wfDeprecated( __METHOD__, '1.17' );
-               $this->addSubcategoryObject( Category::newFromTitle( $title ), $sortkey, $pageLength );
-       }
-
        /**
         * Get the character to be used for sorting subcategories.
         * If there's a link from Category:A to Category:B, the sortkey of the resulting
index fd94bea..53f2955 100644 (file)
@@ -184,17 +184,19 @@ class ChangeTags {
 
                // Figure out which conditions can be done.
                if ( in_array( 'recentchanges', $tables ) ) {
-                       $join_cond = 'rc_id';
+                       $join_cond = 'ct_rc_id=rc_id';
                } elseif ( in_array( 'logging', $tables ) ) {
-                       $join_cond = 'log_id';
+                       $join_cond = 'ct_log_id=log_id';
                } elseif ( in_array( 'revision', $tables ) ) {
-                       $join_cond = 'rev_id';
+                       $join_cond = 'ct_rev_id=rev_id';
+               } elseif ( in_array( 'archive', $tables ) ) {
+                       $join_cond = 'ct_rev_id=ar_rev_id';
                } else {
                        throw new MWException( 'Unable to determine appropriate JOIN condition for tagging.' );
                }
 
                $fields['ts_tags'] = wfGetDB( DB_SLAVE )->buildGroupConcatField(
-                       ',', 'change_tag', 'ct_tag', "ct_$join_cond=$join_cond"
+                       ',', 'change_tag', 'ct_tag', $join_cond
                );
 
                if ( $wgUseTagFilter && $filter_tag ) {
@@ -202,7 +204,7 @@ class ChangeTags {
                        // Add an INNER JOIN on change_tag
 
                        $tables[] = 'change_tag';
-                       $join_conds['change_tag'] = array( 'INNER JOIN', "ct_$join_cond=$join_cond" );
+                       $join_conds['change_tag'] = array( 'INNER JOIN', $join_cond );
                        $conds['ct_tag'] = $filter_tag;
                }
        }
index b0252c7..7204f31 100644 (file)
@@ -47,6 +47,8 @@ abstract class Collation {
                                return new IdentityCollation;
                        case 'uca-default':
                                return new IcuCollation( 'root' );
+                       case 'xx-uca-ckb':
+                               return new CollationCkb;
                        default:
                                $match = array();
                                if ( preg_match( '/^uca-([a-z@=-]+)$/', $collationName, $match ) ) {
@@ -149,9 +151,9 @@ class IdentityCollation extends Collation {
 }
 
 class IcuCollation extends Collation {
-       const FIRST_LETTER_VERSION = 1;
+       const FIRST_LETTER_VERSION = 2;
 
-       var $primaryCollator, $mainCollator, $locale;
+       var $primaryCollator, $mainCollator, $locale, $digitTransformLanguage;
        var $firstLetterData;
 
        /**
@@ -284,7 +286,12 @@ class IcuCollation extends Collation {
                        throw new MWException( 'An ICU collation was requested, ' .
                                'but the intl extension is not available.' );
                }
+
                $this->locale = $locale;
+               // Drop everything after the '@' in locale's name
+               $localeParts = explode( '@', $locale );
+               $this->digitTransformLanguage = Language::factory( $locale === 'root' ? 'en' : $localeParts[0] );
+
                $this->mainCollator = Collator::create( $locale );
                if ( !$this->mainCollator ) {
                        throw new MWException( "Invalid ICU locale specified for collation: $locale" );
@@ -319,9 +326,7 @@ class IcuCollation extends Collation {
 
                // Check for CJK
                $firstChar = mb_substr( $string, 0, 1, 'UTF-8' );
-               if ( ord( $firstChar ) > 0x7f
-                       && self::isCjk( utf8ToCodepoint( $firstChar ) ) )
-               {
+               if ( ord( $firstChar ) > 0x7f && self::isCjk( utf8ToCodepoint( $firstChar ) ) ) {
                        return $firstChar;
                }
 
@@ -347,7 +352,7 @@ class IcuCollation extends Collation {
                }
 
                $cache = wfGetCache( CACHE_ANYTHING );
-               $cacheKey = wfMemcKey( 'first-letters', $this->locale );
+               $cacheKey = wfMemcKey( 'first-letters', $this->locale, $this->digitTransformLanguage->getCode() );
                $cacheEntry = $cache->get( $cacheKey );
 
                if ( $cacheEntry && isset( $cacheEntry['version'] )
@@ -367,6 +372,12 @@ class IcuCollation extends Collation {
                        if ( isset( self::$tailoringFirstLetters['-' . $this->locale] ) ) {
                                $letters = array_diff( $letters, self::$tailoringFirstLetters['-' . $this->locale] );
                        }
+                       // Apply digit transforms
+                       $digits = array( '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' );
+                       $letters = array_diff( $letters, $digits );
+                       foreach ( $digits as $digit ) {
+                               $letters[] = $this->digitTransformLanguage->formatNum( $digit, true );
+                       }
                } else {
                        $letters = wfGetPrecompiledData( "first-letters-{$this->locale}.ser" );
                        if ( $letters === false ) {
@@ -606,3 +617,17 @@ class IcuCollation extends Collation {
                }
        }
 }
+
+/**
+ * Workaround for the lack of support of Sorani Kurdish / Central Kurdish language ('ckb') in ICU.
+ *
+ * Uses the same collation rules as Persian / Farsi ('fa'), but different characters for digits.
+ */
+class CollationCkb extends IcuCollation {
+       function __construct() {
+               // This will set $locale and collators, which affect the actual sorting order
+               parent::__construct( 'fa' );
+               // Override the 'fa' language set by parent constructor, which affects #getFirstLetterData()
+               $this->digitTransformLanguage = Language::factory( 'ckb' );
+       }
+}
index ecf4667..e0a11a2 100644 (file)
@@ -131,8 +131,14 @@ class Cookie {
                        }
 
                        if ( substr( $domain, 0, 1 ) == '.'
-                               && substr_compare( $originDomain, $domain, -strlen( $domain ),
-                                                                  strlen( $domain ), true ) != 0 ) {
+                               && substr_compare(
+                                       $originDomain,
+                                       $domain,
+                                       -strlen( $domain ),
+                                       strlen( $domain ),
+                                       true
+                               ) != 0
+                       ) {
                                return false;
                        }
                }
@@ -167,8 +173,15 @@ class Cookie {
                if ( $domain == $this->domain
                        || ( strlen( $domain ) > strlen( $this->domain )
                                && substr( $this->domain, 0, 1 ) == '.'
-                               && substr_compare( $domain, $this->domain, -strlen( $this->domain ),
-                                                                       strlen( $this->domain ), true ) == 0 ) ) {
+                               && substr_compare(
+                                       $domain,
+                                       $this->domain,
+                                       -strlen( $this->domain ),
+                                       strlen( $this->domain ),
+                                       true
+                               ) == 0
+                       )
+               ) {
                        return true;
                }
 
index e23aea4..a8f51fe 100644 (file)
@@ -361,6 +361,22 @@ $wgImgAuthDetails = false;
  */
 $wgImgAuthPublicTest = true;
 
+/**
+ * Map of relative URL directories to match to internal mwstore:// base storage paths.
+ * For img_auth.php requests, everything after "img_auth.php/" is checked to see
+ * if starts with any of the prefixes defined here. The prefixes should not overlap.
+ * The prefix that matches has a corresponding storage path, which the rest of the URL
+ * is assumed to be relative to. The file at that path (or a 404) is send to the client.
+ *
+ * Example:
+ * $wgImgAuthUrlPathMap['/timeline/'] = 'mwstore://local-fs/timeline-render/';
+ * The above maps ".../img_auth.php/timeline/X" to "mwstore://local-fs/timeline-render/".
+ * The name "local-fs" should correspond by name to an entry in $wgFileBackends.
+ *
+ * @see $wgFileBackends
+ */
+$wgImgAuthUrlPathMap = array();
+
 /**
  * File repository structures
  *
@@ -574,7 +590,7 @@ $wgCacheSharedUploads = true;
 
 /**
  * Allow for upload to be copied from an URL.
- * The timeout for copy uploads is set by $wgHTTPTimeout.
+ * The timeout for copy uploads is set by $wgCopyUploadTimeout.
  * You have to assign the user right 'upload_by_url' to a user group, to use this.
  */
 $wgAllowCopyUploads = false;
@@ -921,7 +937,8 @@ $wgSVGConverters = array(
        'ImageMagick' => '$path/convert -background white -thumbnail $widthx$height\! $input PNG:$output',
        'sodipodi' => '$path/sodipodi -z -w $width -f $input -e $output',
        'inkscape' => '$path/inkscape -z -w $width -f $input -e $output',
-       'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d $output $input',
+       'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d '
+               . '$output $input',
        'rsvg' => '$path/rsvg -w $width -h $height $input $output',
        'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output',
        'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ),
@@ -1302,6 +1319,8 @@ unset( $serverName ); # Don't leak local variables to global scope
 
 /**
  * Password reminder name
+ *
+ * @deprecated since 1.23; use the system message 'emailsender' instead.
  */
 $wgPasswordSenderName = 'MediaWiki Mail';
 
@@ -1659,10 +1678,10 @@ $wgDBservers = false;
  * The class identified here is responsible for reading $wgDBservers,
  * $wgDBserver, etc., so overriding it may cause those globals to be ignored.
  *
- * The LBFactory_Multi class is provided for this purpose, please see
- * includes/db/LBFactory_Multi.php for configuration information.
+ * The LBFactoryMulti class is provided for this purpose, please see
+ * includes/db/LBFactoryMulti.php for configuration information.
  */
-$wgLBFactoryConf = array( 'class' => 'LBFactory_Simple' );
+$wgLBFactoryConf = array( 'class' => 'LBFactorySimple' );
 
 /**
  * How long to wait for a slave to catch up to the master
@@ -1811,7 +1830,7 @@ $wgExternalStores = array();
  * );
  * @endcode
  *
- * Used by LBFactory_Simple, may be ignored if $wgLBFactoryConf is set to
+ * Used by LBFactorySimple, may be ignored if $wgLBFactoryConf is set to
  * another class.
  */
 $wgExternalServers = array();
@@ -1926,9 +1945,6 @@ $wgCacheDirectory = false;
  *   - CACHE_DB:         Store cache objects in the DB
  *   - CACHE_MEMCACHED:  MemCached, must specify servers in $wgMemCachedServers
  *   - CACHE_ACCEL:      APC, XCache or WinCache
- *   - CACHE_DBA:        Use PHP's DBA extension to store in a DBM-style
- *                       database. This is slow, and is not recommended for
- *                       anything other than debugging.
  *   - (other):          A string may be used which identifies a cache
  *                       configuration in $wgObjectCaches.
  *
@@ -1981,15 +1997,10 @@ $wgLanguageConverterCacheType = CACHE_ANYTHING;
  * the value is an associative array of parameters. The "class" parameter is the
  * class name which will be used. Alternatively, a "factory" parameter may be
  * given, giving a callable function which will generate a suitable cache object.
- *
- * The other parameters are dependent on the class used.
- * - CACHE_DBA uses $wgTmpDirectory by default. The 'dir' parameter let you
- *   overrides that.
  */
 $wgObjectCaches = array(
        CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
        CACHE_DB => array( 'class' => 'SqlBagOStuff', 'table' => 'objectcache' ),
-       CACHE_DBA => array( 'class' => 'DBABagOStuff' ),
 
        CACHE_ANYTHING => array( 'factory' => 'ObjectCache::newAnything' ),
        CACHE_ACCEL => array( 'factory' => 'ObjectCache::newAccelerator' ),
@@ -2009,12 +2020,6 @@ $wgObjectCaches = array(
  */
 $wgParserCacheExpireTime = 86400;
 
-/**
- * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php>
- * to use as CACHE_DBA backend.
- */
-$wgDBAhandler = 'db3';
-
 /**
  * Deprecated alias for $wgSessionsInObjectCache.
  *
@@ -3327,6 +3332,7 @@ $wgResourceLoaderLESSFunctions = array(
  */
 $wgResourceLoaderLESSImportPaths = array(
        "$IP/resources/mediawiki.less/",
+       "$IP/skins/vector/",
 );
 
 /**
@@ -3811,13 +3817,16 @@ $wgNoFollowNsExceptions = array();
  * (or any subdomains) will not be set to rel="nofollow" regardless of the
  * value of $wgNoFollowLinks.  For instance:
  *
- * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org' );
+ * $wgNoFollowDomainExceptions = array( 'en.wikipedia.org', 'wiktionary.org',
+ * 'mediawiki.org' );
  *
  * This would add rel="nofollow" to links to de.wikipedia.org, but not
  * en.wikipedia.org, wiktionary.org, en.wiktionary.org, us.en.wikipedia.org,
  * etc.
+ *
+ * Defaults to mediawiki.org for the links included in the software by default.
  */
-$wgNoFollowDomainExceptions = array();
+$wgNoFollowDomainExceptions = array( 'mediawiki.org' );
 
 /**
  * Allow DISPLAYTITLE to change title display
@@ -3974,7 +3983,6 @@ $wgDefaultUserOptions = array(
        'date' => 'default',
        'diffonly' => 0,
        'disablemail' => 0,
-       'disablesuggest' => 0,
        'editfont' => 'default',
        'editondblclick' => 0,
        'editsection' => 1,
@@ -3994,7 +4002,7 @@ $wgDefaultUserOptions = array(
        'math' => 1,
        'minordefault' => 0,
        'newpageshidepatrolled' => 0,
-       'nocache' => 0,
+       'nickname' => '',
        'noconvertlink' => 0,
        'norollbackdiff' => 0,
        'numberheadings' => 0,
@@ -4004,7 +4012,6 @@ $wgDefaultUserOptions = array(
        'rclimit' => 50,
        'rememberpassword' => 0,
        'rows' => 25,
-       'searchlimit' => 20,
        'showhiddencats' => 0,
        'shownumberswatching' => 1,
        'showtoc' => 1,
@@ -4016,8 +4023,8 @@ $wgDefaultUserOptions = array(
        'uselivepreview' => 0,
        'usenewrc' => 0,
        'vector-simplesearch' => 1,
-       'watchcreations' => 0,
-       'watchdefault' => 0,
+       'watchcreations' => 1,
+       'watchdefault' => 1,
        'watchdeletion' => 0,
        'watchlistdays' => 3.0,
        'watchlisthideanons' => 0,
@@ -5914,6 +5921,16 @@ $wgExtensionFunctions = array();
  * Variables defined in extensions will override conflicting variables defined
  * in the core.
  *
+ * Since MediaWiki 1.23, use of this variable to define messages is discouraged; instead, store
+ * messages in JSON format and use $wgMessagesDirs. For setting other variables than
+ * $messages, $wgExtensionMessagesFiles should still be used.
+ *
+ * If there is an entry in $wgMessagesDirs with the same key as one in
+ * $wgExtensionMessagesFiles, then any $messages variables set in the $wgExtensionMessagesFiles file
+ * will be ignored. This means an extension that only provides messages can be backwards compatible
+ * by using both $wgExtensionMessagesFiles and $wgMessagesDirs, and only one of the two
+ * will be used depending on what the version of MediaWiki supports.
+ *
  * @par Example:
  * @code
  *    $wgExtensionMessagesFiles['ConfirmEdit'] = __DIR__.'/ConfirmEdit.i18n.php';
@@ -5921,6 +5938,32 @@ $wgExtensionFunctions = array();
  */
 $wgExtensionMessagesFiles = array();
 
+/**
+ * Extension messages directories.
+ *
+ * Associative array mapping extension name to the path of the directory where message files can
+ * be found. The message files are expected to be JSON files named for their language code, e.g.
+ * en.json, de.json, etc. Extensions with messages in multiple places may specify an array of
+ * message directories.
+ *
+ * @par Simple example:
+ * @code
+ *    $wgMessagesDirs['ConfirmEdit'] = __DIR__ . '/i18n';
+ * @endcode
+ *
+ * @par Complex example:
+ * @code
+ *    $wgMessagesDirs['VisualEditor'] = array(
+ *        __DIR__ . '/i18n',
+ *        __DIR__ . '/modules/ve-core/i18n',
+ *        __DIR__ . '/modules/qunit/localisation',
+ *        __DIR__ . '/modules/oojs-ui/messages',
+ *    )
+ * @endcode
+ * @since 1.23
+ */
+$wgMessagesDirs = array();
+
 /**
  * Array of files with list(s) of extension entry points to be used in
  * maintenance/mergeMessageFileList.php
@@ -6074,9 +6117,19 @@ $wgJobClasses = array(
  * - Jobs that you would never want to run as part of a page rendering request.
  * - Jobs that you want to run on specialized machines ( like transcoding, or a particular
  *   machine on your cluster has 'outside' web access you could restrict uploadFromUrl )
+ * These settings should be global to all wikis.
  */
 $wgJobTypesExcludedFromDefaultQueue = array( 'AssembleUploadChunks', 'PublishStashedFile' );
 
+/**
+ * Map of job types to how many job "work items" should be run per second
+ * on each job runner process. The meaning of "work items" varies per job,
+ * but typically would be something like "pages to update". A single job
+ * may have a variable number of work items, as is the case with batch jobs.
+ * These settings should be global to all wikis.
+ */
+$wgJobBackoffThrottling = array();
+
 /**
  * Map of job types to configuration arrays.
  * This determines which queue class and storage system is used for each job type.
index 86c5520..015ea9c 100644 (file)
@@ -113,23 +113,33 @@ define( 'CACHE_NONE', 0 );       // Do not cache
 define( 'CACHE_DB', 1 );         // Store cache objects in the DB
 define( 'CACHE_MEMCACHED', 2 );  // MemCached, must specify servers in $wgMemCacheServers
 define( 'CACHE_ACCEL', 3 );      // APC, XCache or WinCache
-define( 'CACHE_DBA', 4 );        // Use PHP's DBA extension to store in a DBM-style database
 /**@}*/
 
 /**@{
  * Media types.
  * This defines constants for the value returned by File::getMediaType()
  */
-define( 'MEDIATYPE_UNKNOWN',    'UNKNOWN' );     // unknown format
-define( 'MEDIATYPE_BITMAP',     'BITMAP' );      // some bitmap image or image source (like psd, etc). Can't scale up.
-define( 'MEDIATYPE_DRAWING',    'DRAWING' );     // some vector drawing (SVG, WMF, PS, ...) or image source (oo-draw, etc). Can scale up.
-define( 'MEDIATYPE_AUDIO',      'AUDIO' );       // simple audio file (ogg, mp3, wav, midi, whatever)
-define( 'MEDIATYPE_VIDEO',      'VIDEO' );       // simple video file (ogg, mpg, etc; no not include formats here that may contain executable sections or scripts!)
-define( 'MEDIATYPE_MULTIMEDIA', 'MULTIMEDIA' );  // Scriptable Multimedia (flash, advanced video container formats, etc)
-define( 'MEDIATYPE_OFFICE',     'OFFICE' );      // Office Documents, Spreadsheets (office formats possibly containing apples, scripts, etc)
-define( 'MEDIATYPE_TEXT',       'TEXT' );        // Plain text (possibly containing program code or scripts)
-define( 'MEDIATYPE_EXECUTABLE', 'EXECUTABLE' );  // binary executable
-define( 'MEDIATYPE_ARCHIVE',    'ARCHIVE' );     // archive file (zip, tar, etc)
+// unknown format
+define( 'MEDIATYPE_UNKNOWN', 'UNKNOWN' );
+// some bitmap image or image source (like psd, etc). Can't scale up.
+define( 'MEDIATYPE_BITMAP', 'BITMAP' );
+// some vector drawing (SVG, WMF, PS, ...) or image source (oo-draw, etc). Can scale up.
+define( 'MEDIATYPE_DRAWING', 'DRAWING' );
+// simple audio file (ogg, mp3, wav, midi, whatever)
+define( 'MEDIATYPE_AUDIO', 'AUDIO' );
+// simple video file (ogg, mpg, etc;
+// no not include formats here that may contain executable sections or scripts!)
+define( 'MEDIATYPE_VIDEO', 'VIDEO' );
+// Scriptable Multimedia (flash, advanced video container formats, etc)
+define( 'MEDIATYPE_MULTIMEDIA', 'MULTIMEDIA' );
+// Office Documents, Spreadsheets (office formats possibly containing apples, scripts, etc)
+define( 'MEDIATYPE_OFFICE', 'OFFICE' );
+// Plain text (possibly containing program code or scripts)
+define( 'MEDIATYPE_TEXT', 'TEXT' );
+// binary executable
+define( 'MEDIATYPE_EXECUTABLE', 'EXECUTABLE' );
+// archive file (zip, tar, etc)
+define( 'MEDIATYPE_ARCHIVE', 'ARCHIVE' );
 /**@}*/
 
 /**@{
@@ -288,12 +298,20 @@ define( 'CONTENT_MODEL_TEXT', 'text' );
  * Extensions are free to use the below formats, or define their own.
  * It is recommended to stick with the conventions for MIME types.
  */
-define( 'CONTENT_FORMAT_WIKITEXT', 'text/x-wiki' ); // wikitext
-define( 'CONTENT_FORMAT_JAVASCRIPT', 'text/javascript' ); // for js pages
-define( 'CONTENT_FORMAT_CSS', 'text/css' );  // for css pages
-define( 'CONTENT_FORMAT_TEXT', 'text/plain' ); // for future use, e.g. with some plain-html messages.
-define( 'CONTENT_FORMAT_HTML', 'text/html' ); // for future use, e.g. with some plain-html messages.
-define( 'CONTENT_FORMAT_SERIALIZED', 'application/vnd.php.serialized' ); // for future use with the api and for extensions
-define( 'CONTENT_FORMAT_JSON', 'application/json' ); // for future use with the api, and for use by extensions
-define( 'CONTENT_FORMAT_XML', 'application/xml' ); // for future use with the api, and for use by extensions
+// wikitext
+define( 'CONTENT_FORMAT_WIKITEXT', 'text/x-wiki' );
+// for js pages
+define( 'CONTENT_FORMAT_JAVASCRIPT', 'text/javascript' );
+// for css pages
+define( 'CONTENT_FORMAT_CSS', 'text/css' );
+// for future use, e.g. with some plain-html messages.
+define( 'CONTENT_FORMAT_TEXT', 'text/plain' );
+// for future use, e.g. with some plain-html messages.
+define( 'CONTENT_FORMAT_HTML', 'text/html' );
+// for future use with the api and for extensions
+define( 'CONTENT_FORMAT_SERIALIZED', 'application/vnd.php.serialized' );
+// for future use with the api, and for use by extensions
+define( 'CONTENT_FORMAT_JSON', 'application/json' );
+// for future use with the api, and for use by extensions
+define( 'CONTENT_FORMAT_XML', 'application/xml' );
 /**@}*/
index ab5856a..7115eab 100644 (file)
@@ -319,6 +319,18 @@ class EditPage {
                }
        }
 
+       /**
+        * Returns if the given content model is editable.
+        *
+        * @param string $modelId The ID of the content model to test. Use CONTENT_MODEL_XXX constants.
+        * @return bool
+        * @throws MWException if $modelId has no known handler
+        */
+       public function isSupportedContentModel( $modelId ) {
+               return $this->allowNonTextContent ||
+                       ContentHandler::getForModelID( $modelId ) instanceof TextContentHandler;
+       }
+
        function submit() {
                $this->edit();
        }
@@ -457,9 +469,9 @@ class EditPage {
                # Ignore some permissions errors when a user is just previewing/viewing diffs
                $remove = array();
                foreach ( $permErrors as $error ) {
-                       if ( ( $this->preview || $this->diff ) &&
-                               ( $error[0] == 'blockedtext' || $error[0] == 'autoblockedtext' ) )
-                       {
+                       if ( ( $this->preview || $this->diff )
+                               && ( $error[0] == 'blockedtext' || $error[0] == 'autoblockedtext' )
+                       {
                                $remove[] = $error;
                        }
                }
@@ -567,10 +579,10 @@ class EditPage {
                } elseif ( ( $wgRequest->getVal( 'preload' ) !== null || $this->mTitle->exists() ) && $wgUser->getOption( 'previewonfirst' ) ) {
                        // Standard preference behavior
                        return true;
-               } elseif ( !$this->mTitle->exists() &&
-                       isset( $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] ) &&
-                       $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] )
-               {
+               } elseif ( !$this->mTitle->exists()
+                       && isset( $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()] )
+                       && $wgPreviewOnOpenNamespaces[$this->mTitle->getNamespace()]
+               {
                        // Categories are special
                        return true;
                } else {
@@ -613,6 +625,7 @@ class EditPage {
        /**
         * This function collects the form data and uses it to populate various member variables.
         * @param $request WebRequest
+        * @throws ErrorPageError
         */
        function importFormData( &$request ) {
                global $wgContLang, $wgUser;
@@ -728,9 +741,9 @@ class EditPage {
                        $this->watchthis = $request->getCheck( 'wpWatchthis' );
 
                        # Don't force edit summaries when a user is editing their own user or talk page
-                       if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK ) &&
-                               $this->mTitle->getText() == $wgUser->getName() )
-                       {
+                       if ( ( $this->mTitle->mNamespace == NS_USER || $this->mTitle->mNamespace == NS_USER_TALK )
+                               && $this->mTitle->getText() == $wgUser->getName()
+                       {
                                $this->allowBlankSummary = true;
                        } else {
                                $this->allowBlankSummary = $request->getBool( 'wpIgnoreBlankSummary' ) || !$wgUser->getOption( 'forceeditsummary' );
@@ -777,12 +790,17 @@ class EditPage {
                $this->bot = $request->getBool( 'bot', true );
                $this->nosummary = $request->getBool( 'nosummary' );
 
-               $content_handler = ContentHandler::getForTitle( $this->mTitle );
-               $this->contentModel = $request->getText( 'model', $content_handler->getModelID() ); #may be overridden by revision
-               $this->contentFormat = $request->getText( 'format', $content_handler->getDefaultFormat() ); #may be overridden by revision
+               $this->contentModel = $request->getText( 'model', $this->contentModel ); #may be overridden by revision
+               $this->contentFormat = $request->getText( 'format', $this->contentFormat ); #may be overridden by revision
 
+               if ( !ContentHandler::getForModelID( $this->contentModel )->isSupportedFormat( $this->contentFormat ) ) {
+                       throw new ErrorPageError(
+                               'editpage-notsupportedcontentformat-title',
+                               'editpage-notsupportedcontentformat-text',
+                               array( $this->contentFormat, ContentHandler::getLocalizedName( $this->contentModel ) )
+                       );
+               }
                #TODO: check if the desired model is allowed in this namespace, and if a transition from the page's current model to the new model is allowed
-               #TODO: check if the desired content model supports the given content format!
 
                $this->live = $request->getCheck( 'live' );
                $this->editintro = $request->getText( 'editintro',
@@ -1792,9 +1810,9 @@ class EditPage {
                        // Show the edit conflict page for certain recognized errors from doEdit(),
                        // but don't show it for errors from extension hooks
                        $errors = $doEditStatus->getErrorsArray();
-                       if ( in_array( $errors[0][0], array( 'edit-gone-missing', 'edit-conflict',
-                               'edit-already-exists' ) ) )
-                       {
+                       if ( in_array( $errors[0][0],
+                                       array( 'edit-gone-missing', 'edit-conflict', 'edit-already-exists' ) )
+                       {
                                $this->isConflict = true;
                                // Destroys data doEdit() put in $status->value but who cares
                                $doEditStatus->value = self::AS_END;
@@ -1913,12 +1931,10 @@ class EditPage {
        function getBaseRevision() {
                if ( !$this->mBaseRevision ) {
                        $db = wfGetDB( DB_MASTER );
-                       $baseRevision = Revision::loadFromTimestamp(
+                       $this->mBaseRevision = Revision::loadFromTimestamp(
                                $db, $this->mTitle, $this->edittime );
-                       return $this->mBaseRevision = $baseRevision;
-               } else {
-                       return $this->mBaseRevision;
                }
+               return $this->mBaseRevision;
        }
 
        /**
@@ -2128,9 +2144,9 @@ class EditPage {
                        return $content;
                }
 
-               if ( !$this->allowNonTextContent && !( $content instanceof TextContent ) ) {
-                       throw new MWException( "This content model can not be edited as text: "
-                                                               . ContentHandler::getLocalizedName( $content->getModel() ) );
+               if ( !$this->isSupportedContentModel( $content->getModel() ) ) {
+                       throw new MWException( 'This content model is not supported: '
+                               . ContentHandler::getLocalizedName( $content->getModel() ) );
                }
 
                return $content->serialize( $this->contentFormat );
@@ -2158,8 +2174,8 @@ class EditPage {
                $content = ContentHandler::makeContent( $text, $this->getTitle(),
                        $this->contentModel, $this->contentFormat );
 
-               if ( !$this->allowNonTextContent && !( $content instanceof TextContent ) ) {
-                       throw new MWException( "This content model can not be edited as text: "
+               if ( !$this->isSupportedContentModel( $content->getModel() ) ) {
+                       throw new MWException( 'This content model is not supported: '
                                . ContentHandler::getLocalizedName( $content->getModel() ) );
                }
 
@@ -2476,7 +2492,9 @@ class EditPage {
                        }
                }
 
-               if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
+               if ( $this->mTitle->isProtected( 'edit' ) &&
+                       MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== array( '' )
+               ) {
                        # Is the title semi-protected?
                        if ( $this->mTitle->isSemiProtected() ) {
                                $noticeMsg = 'semiprotectedpagewarning';
@@ -2678,7 +2696,9 @@ HTML
                        $attribs = array( 'style' => 'display:none;' );
                } else {
                        $classes = array(); // Textarea CSS
-                       if ( $this->mTitle->getNamespace() != NS_MEDIAWIKI && $this->mTitle->isProtected( 'edit' ) ) {
+                       if ( $this->mTitle->isProtected( 'edit' ) &&
+                               MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) !== array( '' )
+                       ) {
                                # Is the title semi-protected?
                                if ( $this->mTitle->isSemiProtected() ) {
                                        $classes[] = 'mw-textarea-sprotected';
@@ -3220,36 +3240,30 @@ HTML
                                }
                        }
 
-                       $rt = $content->getRedirectChain();
-                       if ( $rt ) {
-                               $previewHTML = $this->mArticle->viewRedirect( $rt, false );
-                       } else {
-
-                               # If we're adding a comment, we need to show the
-                               # summary as the headline
-                               if ( $this->section === "new" && $this->summary !== "" ) {
-                                       $content = $content->addSectionHeader( $this->summary );
-                               }
+                       # If we're adding a comment, we need to show the
+                       # summary as the headline
+                       if ( $this->section === "new" && $this->summary !== "" ) {
+                               $content = $content->addSectionHeader( $this->summary );
+                       }
 
-                               $hook_args = array( $this, &$content );
-                               ContentHandler::runLegacyHooks( 'EditPageGetPreviewText', $hook_args );
-                               wfRunHooks( 'EditPageGetPreviewContent', $hook_args );
+                       $hook_args = array( $this, &$content );
+                       ContentHandler::runLegacyHooks( 'EditPageGetPreviewText', $hook_args );
+                       wfRunHooks( 'EditPageGetPreviewContent', $hook_args );
 
-                               $parserOptions->enableLimitReport();
+                       $parserOptions->enableLimitReport();
 
-                               # For CSS/JS pages, we should have called the ShowRawCssJs hook here.
-                               # But it's now deprecated, so never mind
+                       # For CSS/JS pages, we should have called the ShowRawCssJs hook here.
+                       # But it's now deprecated, so never mind
 
-                               $content = $content->preSaveTransform( $this->mTitle, $wgUser, $parserOptions );
-                               $parserOutput = $content->getParserOutput( $this->getArticle()->getTitle(), null, $parserOptions );
+                       $content = $content->preSaveTransform( $this->mTitle, $wgUser, $parserOptions );
+                       $parserOutput = $content->getParserOutput( $this->getArticle()->getTitle(), null, $parserOptions );
 
-                               $previewHTML = $parserOutput->getText();
-                               $this->mParserOutput = $parserOutput;
-                               $wgOut->addParserOutputNoText( $parserOutput );
+                       $previewHTML = $parserOutput->getText();
+                       $this->mParserOutput = $parserOutput;
+                       $wgOut->addParserOutputNoText( $parserOutput );
 
-                               if ( count( $parserOutput->getWarnings() ) ) {
-                                       $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() );
-                               }
+                       if ( count( $parserOutput->getWarnings() ) ) {
+                               $note .= "\n\n" . implode( "\n\n", $parserOutput->getWarnings() );
                        }
                } catch ( MWContentSerializationException $ex ) {
                        $m = wfMessage( 'content-failed-to-parse', $this->contentModel, $this->contentFormat, $ex->getMessage() );
index 008be15..5377add 100644 (file)
@@ -38,8 +38,7 @@ class MWException extends Exception {
        function useOutputPage() {
                return $this->useMessageCache() &&
                        !empty( $GLOBALS['wgFullyInitialised'] ) &&
-                       !empty( $GLOBALS['wgOut'] ) &&
-                       !empty( $GLOBALS['wgTitle'] );
+                       !empty( $GLOBALS['wgOut'] );
        }
 
        /**
@@ -619,9 +618,9 @@ class MWExceptionHandler {
 
                                if ( $wgShowExceptionDetails ) {
                                        $message .= 'Original exception: ' . self::getLogMessage( $e ) .
-                                                "\nBacktrace:\n" . self::getRedactedTraceAsString( $e ) .
-                                                "\n\nException caught inside exception handler: " . self::getLogMessage( $e2 ) .
-                                                "\nBacktrace:\n" . self::getRedactedTraceAsString( $e2 );
+                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e ) .
+                                               "\n\nException caught inside exception handler: " . self::getLogMessage( $e2 ) .
+                                               "\nBacktrace:\n" . self::getRedactedTraceAsString( $e2 );
                                } else {
                                        $message .= "Exception caught inside exception handler.\n\n" .
                                                "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " .
index 3d34763..639ba28 100644 (file)
@@ -503,7 +503,8 @@ class XmlDumpWriter {
                        'xmlns'              => "http://www.mediawiki.org/xml/export-$ver/",
                        'xmlns:xsi'          => "http://www.w3.org/2001/XMLSchema-instance",
                        'xsi:schemaLocation' => "http://www.mediawiki.org/xml/export-$ver/ " .
-                                               "http://www.mediawiki.org/xml/export-$ver.xsd", #TODO: how do we get a new version up there?
+                               #TODO: how do we get a new version up there?
+                               "http://www.mediawiki.org/xml/export-$ver.xsd",
                        'version'            => $ver,
                        'xml:lang'           => $wgLanguageCode ),
                        null ) .
@@ -865,7 +866,7 @@ class XmlDumpWriter {
         * @since 1.18
         */
        public static function canonicalTitle( Title $title ) {
-               if ( $title->getInterwiki() ) {
+               if ( $title->isExternal() ) {
                        return $title->getPrefixedText();
                }
 
index ced45af..0582230 100644 (file)
  * @ingroup Maintenance
  */
 class ForkController {
-       var $children = array();
-       var $termReceived = false;
-       var $flags = 0, $procsToStart = 0;
+       protected $children = array(), $childNumber = 0;
+       protected $termReceived = false;
+       protected $flags = 0, $procsToStart = 0;
 
-       static $restartableSignals = array(
+       protected static $restartableSignals = array(
                SIGFPE,
                SIGILL,
                SIGSEGV,
@@ -137,6 +137,16 @@ class ForkController {
                return 'done';
        }
 
+       /**
+        * Get the number of the child currently running. Note, this
+        * is not the pid, but rather which of the total number of children
+        * we are
+        * @return int
+        */
+       public function getChildNumber() {
+               return $this->childNumber;
+       }
+
        protected function prepareEnvironment() {
                global $wgMemc;
                // Don't share DB, storage, or memcached connections
@@ -166,6 +176,7 @@ class ForkController {
 
                        if ( !$pid ) {
                                $this->initChild();
+                               $this->childNumber = $i;
                                return 'child';
                        } else {
                                // This is the parent process
index f49f9be..e0bd5cd 100644 (file)
@@ -143,8 +143,7 @@ class GitInfo {
                } else {
                        return (int)$commitDate;
                }
-
-        }
+       }
 
        /**
         * Return the name of the current branch, or HEAD if not found
index 1f23537..a638287 100644 (file)
@@ -965,8 +965,8 @@ function wfIsDebugRawPage() {
                || (
                        isset( $_SERVER['SCRIPT_NAME'] )
                        && substr( $_SERVER['SCRIPT_NAME'], -8 ) == 'load.php'
-               ) )
-       {
+               )
+       {
                $cache = true;
        } else {
                $cache = false;
@@ -1463,9 +1463,9 @@ function wfMsgForContent( $key ) {
        $args = func_get_args();
        array_shift( $args );
        $forcontent = true;
-       if ( is_array( $wgForceUIMsgAsContentMsg ) &&
-               in_array( $key, $wgForceUIMsgAsContentMsg ) )
-       {
+       if ( is_array( $wgForceUIMsgAsContentMsg )
+               && in_array( $key, $wgForceUIMsgAsContentMsg )
+       {
                $forcontent = false;
        }
        return wfMsgReal( $key, $args, true, $forcontent );
@@ -1486,9 +1486,9 @@ function wfMsgForContentNoTrans( $key ) {
        $args = func_get_args();
        array_shift( $args );
        $forcontent = true;
-       if ( is_array( $wgForceUIMsgAsContentMsg ) &&
-               in_array( $key, $wgForceUIMsgAsContentMsg ) )
-       {
+       if ( is_array( $wgForceUIMsgAsContentMsg )
+               && in_array( $key, $wgForceUIMsgAsContentMsg )
+       {
                $forcontent = false;
        }
        return wfMsgReal( $key, $args, true, $forcontent, false );
@@ -1622,18 +1622,19 @@ function wfMsgWikiHtml( $key ) {
  * @deprecated since 1.18
  *
  * @param string $key key of the message
- * @param array $options processing rules. Can take the following options:
- *   <i>parse</i>: parses wikitext to HTML
- *   <i>parseinline</i>: parses wikitext to HTML and removes the surrounding
+ * @param array $options processing rules.
+ *   Can take the following options:
+ *     parse: parses wikitext to HTML
+ *     parseinline: parses wikitext to HTML and removes the surrounding
  *       p's added by parser or tidy
- *   <i>escape</i>: filters message through htmlspecialchars
- *   <i>escapenoentities</i>: same, but allows entity references like &#160; through
- *   <i>replaceafter</i>: parameters are substituted after parsing or escaping
- *   <i>parsemag</i>: transform the message using magic phrases
- *   <i>content</i>: fetch message for content language instead of interface
- * Also can accept a single associative argument, of the form 'language' => 'xx':
- *   <i>language</i>: Language object or language code to fetch message for
- *       (overridden by <i>content</i>).
+ *     escape: filters message through htmlspecialchars
+ *     escapenoentities: same, but allows entity references like &#160; through
+ *     replaceafter: parameters are substituted after parsing or escaping
+ *     parsemag: transform the message using magic phrases
+ *     content: fetch message for content language instead of interface
+ *   Also can accept a single associative argument, of the form 'language' => 'xx':
+ *     language: Language object or language code to fetch message for
+ *       (overridden by content).
  * Behavior for conflicting options (e.g., parse+parseinline) is undefined.
  *
  * @return String
@@ -1993,11 +1994,11 @@ function wfClientAcceptsGzip( $force = false ) {
                        # @todo FIXME: We may want to blacklist some broken browsers
                        $m = array();
                        if ( preg_match(
-                               '/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/',
-                               $_SERVER['HTTP_ACCEPT_ENCODING'],
-                               $m )
-                       )
-                       {
+                                       '/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/',
+                                       $_SERVER['HTTP_ACCEPT_ENCODING'],
+                                       $m
+                               )
+                       {
                                if ( isset( $m[2] ) && ( $m[1] == 'q' ) && ( $m[2] == 0 ) ) {
                                        $result = false;
                                        return $result;
@@ -3240,7 +3241,7 @@ function wfUsePHP( $req_ver ) {
  * with releases
  *
  * Note: Due to the behavior of PHP's version_compare() which is used in this
- * fuction, if you want to allow the 'wmf' development versions add a 'c' (or
+ * function, if you want to allow the 'wmf' development versions add a 'c' (or
  * any single letter other than 'a', 'b' or 'p') as a post-fix to your
  * targeted version number. For example if you wanted to allow any variation
  * of 1.22 use `wfUseMW( '1.22c' )`. Using an 'a' or 'b' instead of 'c' will
@@ -3375,8 +3376,8 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1,
                28 => 's', 29 => 't', 30 => 'u', 31 => 'v', 32 => 'w', 33 => 'x',
                34 => 'y', 35 => 'z',
 
-               '0' => 0,  '1' => 1,  '2' => 2,  '3' => 3,  '4' => 4,  '5' => 5,
-               '6' => 6,  '7' => 7,  '8' => 8,  '9' => 9,  'a' => 10, 'b' => 11,
+               '0' => 0, '1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5,
+               '6' => 6, '7' => 7, '8' => 8, '9' => 9, 'a' => 10, 'b' => 11,
                'c' => 12, 'd' => 13, 'e' => 14, 'f' => 15, 'g' => 16, 'h' => 17,
                'i' => 18, 'j' => 19, 'k' => 20, 'l' => 21, 'm' => 22, 'n' => 23,
                'o' => 24, 'p' => 25, 'q' => 26, 'r' => 27, 's' => 28, 't' => 29,
@@ -4025,10 +4026,12 @@ function wfGetLangConverterCacheStorage() {
  *
  * @param string $event event name
  * @param array $args parameters passed to hook functions
+ * @param string|null $deprecatedVersion optionally mark hook as deprecated with version number
+ *
  * @return Boolean True if no handler aborted the hook
  */
-function wfRunHooks( $event, array $args = array() ) {
-       return Hooks::run( $event, $args );
+function wfRunHooks( $event, array $args = array(), $deprecatedVersion = null ) {
+       return Hooks::run( $event, $args, $deprecatedVersion );
 }
 
 /**
@@ -4160,3 +4163,56 @@ function wfCanIPUseHTTPS( $ip ) {
        wfRunHooks( 'CanIPUseHTTPS', array( $ip, &$canDo ) );
        return !!$canDo;
 }
+
+/**
+ * Work out the IP address based on various globals
+ * For trusted proxies, use the XFF client IP (first of the chain)
+ *
+ * @deprecated in 1.19; call $wgRequest->getIP() directly.
+ * @return string
+ */
+function wfGetIP() {
+       wfDeprecated( __METHOD__, '1.19' );
+       global $wgRequest;
+       return $wgRequest->getIP();
+}
+
+/**
+ * Checks if an IP is a trusted proxy provider.
+ * Useful to tell if X-Forwarded-For data is possibly bogus.
+ * Squid cache servers for the site are whitelisted.
+ *
+ * @param $ip String
+ * @return bool
+ */
+function wfIsTrustedProxy( $ip ) {
+       $trusted = wfIsConfiguredProxy( $ip );
+       wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
+       return $trusted;
+}
+
+/**
+ * Checks if an IP matches a proxy we've configured.
+ * @param $ip String
+ * @return bool
+ * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge
+ */
+function wfIsConfiguredProxy( $ip ) {
+       global $wgSquidServers, $wgSquidServersNoPurge;
+
+       // quick check of known proxy servers
+       $trusted = in_array( $ip, $wgSquidServers )
+               || in_array( $ip, $wgSquidServersNoPurge );
+
+       if ( !$trusted ) {
+               // slightly slower check to see if the ip is listed directly or in a CIDR
+               // block in $wgSquidServersNoPurge
+               foreach ( $wgSquidServersNoPurge as $block ) {
+                       if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) {
+                               $trusted = true;
+                               break;
+                       }
+               }
+       }
+       return $trusted;
+}
diff --git a/includes/HTMLForm.php b/includes/HTMLForm.php
deleted file mode 100644 (file)
index 1680fd6..0000000
+++ /dev/null
@@ -1,2965 +0,0 @@
-<?php
-/**
- * HTML form generation and submission handling.
- *
- * 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
- */
-
-/**
- * Object handling generic submission, CSRF protection, layout and
- * other logic for UI forms. in a reusable manner.
- *
- * In order to generate the form, the HTMLForm object takes an array
- * structure detailing the form fields available. Each element of the
- * array is a basic property-list, including the type of field, the
- * label it is to be given in the form, callbacks for validation and
- * 'filtering', and other pertinent information.
- *
- * Field types are implemented as subclasses of the generic HTMLFormField
- * object, and typically implement at least getInputHTML, which generates
- * the HTML for the input field to be placed in the table.
- *
- * You can find extensive documentation on the www.mediawiki.org wiki:
- *  - http://www.mediawiki.org/wiki/HTMLForm
- *  - http://www.mediawiki.org/wiki/HTMLForm/tutorial
- *
- * The constructor input is an associative array of $fieldname => $info,
- * where $info is an Associative Array with any of the following:
- *
- *     'class'               -- the subclass of HTMLFormField that will be used
- *                              to create the object.  *NOT* the CSS class!
- *     'type'                -- roughly translates into the <select> type attribute.
- *                              if 'class' is not specified, this is used as a map
- *                              through HTMLForm::$typeMappings to get the class name.
- *     'default'             -- default value when the form is displayed
- *     'id'                  -- HTML id attribute
- *     'cssclass'            -- CSS class
- *     'options'             -- varies according to the specific object.
- *     'label-message'       -- message key for a message to use as the label.
- *                              can be an array of msg key and then parameters to
- *                              the message.
- *     'label'               -- alternatively, a raw text message. Overridden by
- *                              label-message
- *     'help'                -- message text for a message to use as a help text.
- *     'help-message'        -- message key for a message to use as a help text.
- *                              can be an array of msg key and then parameters to
- *                              the message.
- *                              Overwrites 'help-messages' and 'help'.
- *     'help-messages'       -- array of message key. As above, each item can
- *                              be an array of msg key and then parameters.
- *                              Overwrites 'help'.
- *     'required'            -- passed through to the object, indicating that it
- *                              is a required field.
- *     'size'                -- the length of text fields
- *     'filter-callback      -- a function name to give you the chance to
- *                              massage the inputted value before it's processed.
- *                              @see HTMLForm::filter()
- *     'validation-callback' -- a function name to give you the chance
- *                              to impose extra validation on the field input.
- *                              @see HTMLForm::validate()
- *     'name'                -- By default, the 'name' attribute of the input field
- *                              is "wp{$fieldname}".  If you want a different name
- *                              (eg one without the "wp" prefix), specify it here and
- *                              it will be used without modification.
- *
- * Since 1.20, you can chain mutators to ease the form generation:
- * @par Example:
- * @code
- * $form = new HTMLForm( $someFields );
- * $form->setMethod( 'get' )
- *      ->setWrapperLegendMsg( 'message-key' )
- *      ->prepareForm()
- *      ->displayForm( '' );
- * @endcode
- * Note that you will have prepareForm and displayForm at the end. Other
- * methods call done after that would simply not be part of the form :(
- *
- * TODO: Document 'section' / 'subsection' stuff
- */
-class HTMLForm extends ContextSource {
-
-       // A mapping of 'type' inputs onto standard HTMLFormField subclasses
-       public static $typeMappings = array(
-               'api' => 'HTMLApiField',
-               'text' => 'HTMLTextField',
-               'textarea' => 'HTMLTextAreaField',
-               'select' => 'HTMLSelectField',
-               'radio' => 'HTMLRadioField',
-               'multiselect' => 'HTMLMultiSelectField',
-               'check' => 'HTMLCheckField',
-               'toggle' => 'HTMLCheckField',
-               'int' => 'HTMLIntField',
-               'float' => 'HTMLFloatField',
-               'info' => 'HTMLInfoField',
-               'selectorother' => 'HTMLSelectOrOtherField',
-               'selectandother' => 'HTMLSelectAndOtherField',
-               'submit' => 'HTMLSubmitField',
-               'hidden' => 'HTMLHiddenField',
-               'edittools' => 'HTMLEditTools',
-               'checkmatrix' => 'HTMLCheckMatrix',
-
-               // HTMLTextField will output the correct type="" attribute automagically.
-               // There are about four zillion other HTML5 input types, like url, but
-               // we don't use those at the moment, so no point in adding all of them.
-               'email' => 'HTMLTextField',
-               'password' => 'HTMLTextField',
-       );
-
-       protected $mMessagePrefix;
-
-       /** @var HTMLFormField[] */
-       protected $mFlatFields;
-
-       protected $mFieldTree;
-       protected $mShowReset = false;
-       protected $mShowSubmit = true;
-       public $mFieldData;
-
-       protected $mSubmitCallback;
-       protected $mValidationErrorMessage;
-
-       protected $mPre = '';
-       protected $mHeader = '';
-       protected $mFooter = '';
-       protected $mSectionHeaders = array();
-       protected $mSectionFooters = array();
-       protected $mPost = '';
-       protected $mId;
-       protected $mTableId = '';
-
-       protected $mSubmitID;
-       protected $mSubmitName;
-       protected $mSubmitText;
-       protected $mSubmitTooltip;
-
-       protected $mTitle;
-       protected $mMethod = 'post';
-
-       /**
-        * Form action URL. false means we will use the URL to set Title
-        * @since 1.19
-        * @var bool|string
-        */
-       protected $mAction = false;
-
-       protected $mUseMultipart = false;
-       protected $mHiddenFields = array();
-       protected $mButtons = array();
-
-       protected $mWrapperLegend = false;
-
-       /**
-        * If true, sections that contain both fields and subsections will
-        * render their subsections before their fields.
-        *
-        * Subclasses may set this to false to render subsections after fields
-        * instead.
-        */
-       protected $mSubSectionBeforeFields = true;
-
-       /**
-        * Format in which to display form. For viable options,
-        * @see $availableDisplayFormats
-        * @var String
-        */
-       protected $displayFormat = 'table';
-
-       /**
-        * Available formats in which to display the form
-        * @var Array
-        */
-       protected $availableDisplayFormats = array(
-               'table',
-               'div',
-               'raw',
-               'vform',
-       );
-
-       /**
-        * Build a new HTMLForm from an array of field attributes
-        * @param array $descriptor of Field constructs, as described above
-        * @param $context IContextSource available since 1.18, will become compulsory in 1.18.
-        *     Obviates the need to call $form->setTitle()
-        * @param string $messagePrefix a prefix to go in front of default messages
-        */
-       public function __construct( $descriptor, /*IContextSource*/ $context = null, $messagePrefix = '' ) {
-               if ( $context instanceof IContextSource ) {
-                       $this->setContext( $context );
-                       $this->mTitle = false; // We don't need them to set a title
-                       $this->mMessagePrefix = $messagePrefix;
-               } elseif ( is_null( $context ) && $messagePrefix !== '' ) {
-                       $this->mMessagePrefix = $messagePrefix;
-               } elseif ( is_string( $context ) && $messagePrefix === '' ) {
-                       // B/C since 1.18
-                       // it's actually $messagePrefix
-                       $this->mMessagePrefix = $context;
-               }
-
-               // Expand out into a tree.
-               $loadedDescriptor = array();
-               $this->mFlatFields = array();
-
-               foreach ( $descriptor as $fieldname => $info ) {
-                       $section = isset( $info['section'] )
-                               ? $info['section']
-                               : '';
-
-                       if ( isset( $info['type'] ) && $info['type'] == 'file' ) {
-                               $this->mUseMultipart = true;
-                       }
-
-                       $field = self::loadInputFromParameters( $fieldname, $info );
-                       // FIXME During field's construct, the parent form isn't available!
-                       // could add a 'parent' name-value to $info, could add a third parameter.
-                       $field->mParent = $this;
-
-                       // vform gets too much space if empty labels generate HTML.
-                       if ( $this->isVForm() ) {
-                               $field->setShowEmptyLabel( false );
-                       }
-
-                       $setSection =& $loadedDescriptor;
-                       if ( $section ) {
-                               $sectionParts = explode( '/', $section );
-
-                               while ( count( $sectionParts ) ) {
-                                       $newName = array_shift( $sectionParts );
-
-                                       if ( !isset( $setSection[$newName] ) ) {
-                                               $setSection[$newName] = array();
-                                       }
-
-                                       $setSection =& $setSection[$newName];
-                               }
-                       }
-
-                       $setSection[$fieldname] = $field;
-                       $this->mFlatFields[$fieldname] = $field;
-               }
-
-               $this->mFieldTree = $loadedDescriptor;
-       }
-
-       /**
-        * Set format in which to display the form
-        * @param string $format the name of the format to use, must be one of
-        *        $this->availableDisplayFormats
-        * @throws MWException
-        * @since 1.20
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setDisplayFormat( $format ) {
-               if ( !in_array( $format, $this->availableDisplayFormats ) ) {
-                       throw new MWException( 'Display format must be one of ' . print_r( $this->availableDisplayFormats, true ) );
-               }
-               $this->displayFormat = $format;
-               return $this;
-       }
-
-       /**
-        * Getter for displayFormat
-        * @since 1.20
-        * @return String
-        */
-       public function getDisplayFormat() {
-               return $this->displayFormat;
-       }
-
-       /**
-        * Test if displayFormat is 'vform'
-        * @since 1.22
-        * @return Bool
-        */
-       public function isVForm() {
-               return $this->displayFormat === 'vform';
-       }
-
-       /**
-        * Add the HTMLForm-specific JavaScript, if it hasn't been
-        * done already.
-        * @deprecated since 1.18 load modules with ResourceLoader instead
-        */
-       static function addJS() {
-               wfDeprecated( __METHOD__, '1.18' );
-       }
-
-       /**
-        * Initialise a new Object for the field
-        * @param $fieldname string
-        * @param string $descriptor input Descriptor, as described above
-        * @throws MWException
-        * @return HTMLFormField subclass
-        */
-       static function loadInputFromParameters( $fieldname, $descriptor ) {
-               if ( isset( $descriptor['class'] ) ) {
-                       $class = $descriptor['class'];
-               } elseif ( isset( $descriptor['type'] ) ) {
-                       $class = self::$typeMappings[$descriptor['type']];
-                       $descriptor['class'] = $class;
-               } else {
-                       $class = null;
-               }
-
-               if ( !$class ) {
-                       throw new MWException( "Descriptor with no class: " . print_r( $descriptor, true ) );
-               }
-
-               $descriptor['fieldname'] = $fieldname;
-
-               # TODO
-               # This will throw a fatal error whenever someone try to use
-               # 'class' to feed a CSS class instead of 'cssclass'. Would be
-               # great to avoid the fatal error and show a nice error.
-               $obj = new $class( $descriptor );
-
-               return $obj;
-       }
-
-       /**
-        * Prepare form for submission.
-        *
-        * @attention When doing method chaining, that should be the very last
-        * method call before displayForm().
-        *
-        * @throws MWException
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function prepareForm() {
-               # Check if we have the info we need
-               if ( !$this->mTitle instanceof Title && $this->mTitle !== false ) {
-                       throw new MWException( "You must call setTitle() on an HTMLForm" );
-               }
-
-               # Load data from the request.
-               $this->loadData();
-               return $this;
-       }
-
-       /**
-        * Try submitting, with edit token check first
-        * @return Status|boolean
-        */
-       function tryAuthorizedSubmit() {
-               $result = false;
-
-               $submit = false;
-               if ( $this->getMethod() != 'post' ) {
-                       $submit = true; // no session check needed
-               } elseif ( $this->getRequest()->wasPosted() ) {
-                       $editToken = $this->getRequest()->getVal( 'wpEditToken' );
-                       if ( $this->getUser()->isLoggedIn() || $editToken != null ) {
-                               // Session tokens for logged-out users have no security value.
-                               // However, if the user gave one, check it in order to give a nice
-                               // "session expired" error instead of "permission denied" or such.
-                               $submit = $this->getUser()->matchEditToken( $editToken );
-                       } else {
-                               $submit = true;
-                       }
-               }
-
-               if ( $submit ) {
-                       $result = $this->trySubmit();
-               }
-
-               return $result;
-       }
-
-       /**
-        * The here's-one-I-made-earlier option: do the submission if
-        * posted, or display the form with or without funky validation
-        * errors
-        * @return Bool or Status whether submission was successful.
-        */
-       function show() {
-               $this->prepareForm();
-
-               $result = $this->tryAuthorizedSubmit();
-               if ( $result === true || ( $result instanceof Status && $result->isGood() ) ) {
-                       return $result;
-               }
-
-               $this->displayForm( $result );
-               return false;
-       }
-
-       /**
-        * Validate all the fields, and call the submission callback
-        * function if everything is kosher.
-        * @throws MWException
-        * @return Mixed Bool true == Successful submission, Bool false
-        *     == No submission attempted, anything else == Error to
-        *     display.
-        */
-       function trySubmit() {
-               # Check for validation
-               foreach ( $this->mFlatFields as $fieldname => $field ) {
-                       if ( !empty( $field->mParams['nodata'] ) ) {
-                               continue;
-                       }
-                       if ( $field->validate(
-                                       $this->mFieldData[$fieldname],
-                                       $this->mFieldData )
-                               !== true
-                       ) {
-                               return isset( $this->mValidationErrorMessage )
-                                       ? $this->mValidationErrorMessage
-                                       : array( 'htmlform-invalid-input' );
-                       }
-               }
-
-               $callback = $this->mSubmitCallback;
-               if ( !is_callable( $callback ) ) {
-                       throw new MWException( 'HTMLForm: no submit callback provided. Use setSubmitCallback() to set one.' );
-               }
-
-               $data = $this->filterDataForSubmit( $this->mFieldData );
-
-               $res = call_user_func( $callback, $data, $this );
-
-               return $res;
-       }
-
-       /**
-        * Set a callback to a function to do something with the form
-        * once it's been successfully validated.
-        * @param string $cb function name.  The function will be passed
-        *       the output from HTMLForm::filterDataForSubmit, and must
-        *       return Bool true on success, Bool false if no submission
-        *       was attempted, or String HTML output to display on error.
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setSubmitCallback( $cb ) {
-               $this->mSubmitCallback = $cb;
-               return $this;
-       }
-
-       /**
-        * Set a message to display on a validation error.
-        * @param $msg Mixed String or Array of valid inputs to wfMessage()
-        *       (so each entry can be either a String or Array)
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setValidationErrorMessage( $msg ) {
-               $this->mValidationErrorMessage = $msg;
-               return $this;
-       }
-
-       /**
-        * Set the introductory message, overwriting any existing message.
-        * @param string $msg complete text of message to display
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setIntro( $msg ) {
-               $this->setPreText( $msg );
-               return $this;
-       }
-
-       /**
-        * Set the introductory message, overwriting any existing message.
-        * @since 1.19
-        * @param string $msg complete text of message to display
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setPreText( $msg ) {
-               $this->mPre = $msg;
-               return $this;
-       }
-
-       /**
-        * Add introductory text.
-        * @param string $msg complete text of message to display
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function addPreText( $msg ) {
-               $this->mPre .= $msg;
-               return $this;
-       }
-
-       /**
-        * Add header text, inside the form.
-        * @param string $msg complete text of message to display
-        * @param string $section The section to add the header to
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function addHeaderText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
-                       $this->mHeader .= $msg;
-               } else {
-                       if ( !isset( $this->mSectionHeaders[$section] ) ) {
-                               $this->mSectionHeaders[$section] = '';
-                       }
-                       $this->mSectionHeaders[$section] .= $msg;
-               }
-               return $this;
-       }
-
-       /**
-        * Set header text, inside the form.
-        * @since 1.19
-        * @param string $msg complete text of message to display
-        * @param $section The section to add the header to
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setHeaderText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
-                       $this->mHeader = $msg;
-               } else {
-                       $this->mSectionHeaders[$section] = $msg;
-               }
-               return $this;
-       }
-
-       /**
-        * Add footer text, inside the form.
-        * @param string $msg complete text of message to display
-        * @param string $section The section to add the footer text to
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function addFooterText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
-                       $this->mFooter .= $msg;
-               } else {
-                       if ( !isset( $this->mSectionFooters[$section] ) ) {
-                               $this->mSectionFooters[$section] = '';
-                       }
-                       $this->mSectionFooters[$section] .= $msg;
-               }
-               return $this;
-       }
-
-       /**
-        * Set footer text, inside the form.
-        * @since 1.19
-        * @param string $msg complete text of message to display
-        * @param string $section The section to add the footer text to
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setFooterText( $msg, $section = null ) {
-               if ( is_null( $section ) ) {
-                       $this->mFooter = $msg;
-               } else {
-                       $this->mSectionFooters[$section] = $msg;
-               }
-               return $this;
-       }
-
-       /**
-        * Add text to the end of the display.
-        * @param string $msg complete text of message to display
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function addPostText( $msg ) {
-               $this->mPost .= $msg;
-               return $this;
-       }
-
-       /**
-        * Set text at the end of the display.
-        * @param string $msg complete text of message to display
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setPostText( $msg ) {
-               $this->mPost = $msg;
-               return $this;
-       }
-
-       /**
-        * Add a hidden field to the output
-        * @param string $name field name.  This will be used exactly as entered
-        * @param string $value field value
-        * @param $attribs Array
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function addHiddenField( $name, $value, $attribs = array() ) {
-               $attribs += array( 'name' => $name );
-               $this->mHiddenFields[] = array( $value, $attribs );
-               return $this;
-       }
-
-       /**
-        * Add an array of hidden fields to the output
-        *
-        * @since 1.22
-        * @param array $fields Associative array of fields to add;
-        *        mapping names to their values
-        * @return HTMLForm $this for chaining calls
-        */
-       public function addHiddenFields( array $fields ) {
-               foreach ( $fields as $name => $value ) {
-                       $this->mHiddenFields[] = array( $value, array( 'name' => $name ) );
-               }
-               return $this;
-       }
-
-       /**
-        * Add a button to the form
-        * @param string $name field name.
-        * @param string $value field value
-        * @param string $id DOM id for the button (default: null)
-        * @param $attribs Array
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function addButton( $name, $value, $id = null, $attribs = null ) {
-               $this->mButtons[] = compact( 'name', 'value', 'id', 'attribs' );
-               return $this;
-       }
-
-       /**
-        * Display the form (sending to the context's OutputPage object), with an
-        * appropriate error message or stack of messages, and any validation errors, etc.
-        *
-        * @attention You should call prepareForm() before calling this function.
-        * Moreover, when doing method chaining this should be the very last method
-        * call just after prepareForm().
-        *
-        * @param $submitResult Mixed output from HTMLForm::trySubmit()
-        * @return Nothing, should be last call
-        */
-       function displayForm( $submitResult ) {
-               $this->getOutput()->addHTML( $this->getHTML( $submitResult ) );
-       }
-
-       /**
-        * Returns the raw HTML generated by the form
-        * @param $submitResult Mixed output from HTMLForm::trySubmit()
-        * @return string
-        */
-       function getHTML( $submitResult ) {
-               # For good measure (it is the default)
-               $this->getOutput()->preventClickjacking();
-               $this->getOutput()->addModules( 'mediawiki.htmlform' );
-               if ( $this->isVForm() ) {
-                       $this->getOutput()->addModuleStyles( 'mediawiki.ui' );
-                       // TODO should vertical form set setWrapperLegend( false )
-                       // to hide ugly fieldsets?
-               }
-
-               $html = ''
-                       . $this->getErrors( $submitResult )
-                       . $this->mHeader
-                       . $this->getBody()
-                       . $this->getHiddenFields()
-                       . $this->getButtons()
-                       . $this->mFooter
-               ;
-
-               $html = $this->wrapForm( $html );
-
-               return '' . $this->mPre . $html . $this->mPost;
-       }
-
-       /**
-        * Wrap the form innards in an actual "<form>" element
-        * @param string $html HTML contents to wrap.
-        * @return String wrapped HTML.
-        */
-       function wrapForm( $html ) {
-
-               # Include a <fieldset> wrapper for style, if requested.
-               if ( $this->mWrapperLegend !== false ) {
-                       $html = Xml::fieldset( $this->mWrapperLegend, $html );
-               }
-               # Use multipart/form-data
-               $encType = $this->mUseMultipart
-                       ? 'multipart/form-data'
-                       : 'application/x-www-form-urlencoded';
-               # Attributes
-               $attribs = array(
-                       'action' => $this->getAction(),
-                       'method' => $this->getMethod(),
-                       'class' => array( 'visualClear' ),
-                       'enctype' => $encType,
-               );
-               if ( !empty( $this->mId ) ) {
-                       $attribs['id'] = $this->mId;
-               }
-
-               if ( $this->isVForm() ) {
-                       array_push( $attribs['class'], 'mw-ui-vform', 'mw-ui-container' );
-               }
-               return Html::rawElement( 'form', $attribs, $html );
-       }
-
-       /**
-        * Get the hidden fields that should go inside the form.
-        * @return String HTML.
-        */
-       function getHiddenFields() {
-               global $wgArticlePath;
-
-               $html = '';
-               if ( $this->getMethod() == 'post' ) {
-                       $html .= Html::hidden( 'wpEditToken', $this->getUser()->getEditToken(), array( 'id' => 'wpEditToken' ) ) . "\n";
-                       $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
-               }
-
-               if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
-                       $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
-               }
-
-               foreach ( $this->mHiddenFields as $data ) {
-                       list( $value, $attribs ) = $data;
-                       $html .= Html::hidden( $attribs['name'], $value, $attribs ) . "\n";
-               }
-
-               return $html;
-       }
-
-       /**
-        * Get the submit and (potentially) reset buttons.
-        * @return String HTML.
-        */
-       function getButtons() {
-               $html = '<span class="mw-htmlform-submit-buttons">';
-
-               if ( $this->mShowSubmit ) {
-                       $attribs = array();
-
-                       if ( isset( $this->mSubmitID ) ) {
-                               $attribs['id'] = $this->mSubmitID;
-                       }
-
-                       if ( isset( $this->mSubmitName ) ) {
-                               $attribs['name'] = $this->mSubmitName;
-                       }
-
-                       if ( isset( $this->mSubmitTooltip ) ) {
-                               $attribs += Linker::tooltipAndAccesskeyAttribs( $this->mSubmitTooltip );
-                       }
-
-                       $attribs['class'] = array( 'mw-htmlform-submit' );
-
-                       if ( $this->isVForm() ) {
-                               // mw-ui-block is necessary because the buttons aren't necessarily in an
-                               // immediate child div of the vform.
-                               array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-big', 'mw-ui-primary', 'mw-ui-block' );
-                       }
-
-                       $html .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
-
-                       // Buttons are top-level form elements in table and div layouts,
-                       // but vform wants all elements inside divs to get spaced-out block
-                       // styling.
-                       if ( $this->isVForm() ) {
-                               $html = Html::rawElement( 'div', null, "\n$html\n" );
-                       }
-               }
-
-               if ( $this->mShowReset ) {
-                       $html .= Html::element(
-                               'input',
-                               array(
-                                       'type' => 'reset',
-                                       'value' => $this->msg( 'htmlform-reset' )->text()
-                               )
-                       ) . "\n";
-               }
-
-               foreach ( $this->mButtons as $button ) {
-                       $attrs = array(
-                               'type' => 'submit',
-                               'name' => $button['name'],
-                               'value' => $button['value']
-                       );
-
-                       if ( $button['attribs'] ) {
-                               $attrs += $button['attribs'];
-                       }
-
-                       if ( isset( $button['id'] ) ) {
-                               $attrs['id'] = $button['id'];
-                       }
-
-                       $html .= Html::element( 'input', $attrs );
-               }
-
-               $html .= '</span>';
-
-               return $html;
-       }
-
-       /**
-        * Get the whole body of the form.
-        * @return String
-        */
-       function getBody() {
-               return $this->displaySection( $this->mFieldTree, $this->mTableId );
-       }
-
-       /**
-        * Format and display an error message stack.
-        * @param $errors String|Array|Status
-        * @return String
-        */
-       function getErrors( $errors ) {
-               if ( $errors instanceof Status ) {
-                       if ( $errors->isOK() ) {
-                               $errorstr = '';
-                       } else {
-                               $errorstr = $this->getOutput()->parse( $errors->getWikiText() );
-                       }
-               } elseif ( is_array( $errors ) ) {
-                       $errorstr = $this->formatErrors( $errors );
-               } else {
-                       $errorstr = $errors;
-               }
-
-               return $errorstr
-                       ? Html::rawElement( 'div', array( 'class' => 'error' ), $errorstr )
-                       : '';
-       }
-
-       /**
-        * Format a stack of error messages into a single HTML string
-        * @param array $errors of message keys/values
-        * @return String HTML, a "<ul>" list of errors
-        */
-       public static function formatErrors( $errors ) {
-               $errorstr = '';
-
-               foreach ( $errors as $error ) {
-                       if ( is_array( $error ) ) {
-                               $msg = array_shift( $error );
-                       } else {
-                               $msg = $error;
-                               $error = array();
-                       }
-
-                       $errorstr .= Html::rawElement(
-                               'li',
-                               array(),
-                               wfMessage( $msg, $error )->parse()
-                       );
-               }
-
-               $errorstr = Html::rawElement( 'ul', array(), $errorstr );
-
-               return $errorstr;
-       }
-
-       /**
-        * Set the text for the submit button
-        * @param string $t plaintext.
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setSubmitText( $t ) {
-               $this->mSubmitText = $t;
-               return $this;
-       }
-
-       /**
-        * Set the text for the submit button to a message
-        * @since 1.19
-        * @param string $msg message key
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setSubmitTextMsg( $msg ) {
-               $this->setSubmitText( $this->msg( $msg )->text() );
-               return $this;
-       }
-
-       /**
-        * Get the text for the submit button, either customised or a default.
-        * @return string
-        */
-       function getSubmitText() {
-               return $this->mSubmitText
-                       ? $this->mSubmitText
-                       : $this->msg( 'htmlform-submit' )->text();
-       }
-
-       /**
-        * @param string $name Submit button name
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setSubmitName( $name ) {
-               $this->mSubmitName = $name;
-               return $this;
-       }
-
-       /**
-        * @param string $name Tooltip for the submit button
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setSubmitTooltip( $name ) {
-               $this->mSubmitTooltip = $name;
-               return $this;
-       }
-
-       /**
-        * Set the id for the submit button.
-        * @param $t String.
-        * @todo FIXME: Integrity of $t is *not* validated
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setSubmitID( $t ) {
-               $this->mSubmitID = $t;
-               return $this;
-       }
-
-       /**
-        * Stop a default submit button being shown for this form. This implies that an
-        * alternate submit method must be provided manually.
-        *
-        * @since 1.22
-        *
-        * @param bool $suppressSubmit Set to false to re-enable the button again
-        *
-        * @return HTMLForm $this for chaining calls
-        */
-       function suppressDefaultSubmit( $suppressSubmit = true ) {
-               $this->mShowSubmit = !$suppressSubmit;
-               return $this;
-       }
-
-       /**
-        * Set the id of the \<table\> or outermost \<div\> element.
-        *
-        * @since 1.22
-        * @param string $id new value of the id attribute, or "" to remove
-        * @return HTMLForm $this for chaining calls
-        */
-       public function setTableId( $id ) {
-               $this->mTableId = $id;
-               return $this;
-       }
-
-       /**
-        * @param string $id DOM id for the form
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setId( $id ) {
-               $this->mId = $id;
-               return $this;
-       }
-
-       /**
-        * Prompt the whole form to be wrapped in a "<fieldset>", with
-        * this text as its "<legend>" element.
-        * @param string|false $legend HTML to go inside the "<legend>" element, or
-        * false for no <legend>
-        *       Will be escaped
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setWrapperLegend( $legend ) {
-               $this->mWrapperLegend = $legend;
-               return $this;
-       }
-
-       /**
-        * Prompt the whole form to be wrapped in a "<fieldset>", with
-        * this message as its "<legend>" element.
-        * @since 1.19
-        * @param string $msg message key
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setWrapperLegendMsg( $msg ) {
-               $this->setWrapperLegend( $this->msg( $msg )->text() );
-               return $this;
-       }
-
-       /**
-        * Set the prefix for various default messages
-        * @todo currently only used for the "<fieldset>" legend on forms
-        * with multiple sections; should be used elsewhere?
-        * @param $p String
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setMessagePrefix( $p ) {
-               $this->mMessagePrefix = $p;
-               return $this;
-       }
-
-       /**
-        * Set the title for form submission
-        * @param $t Title of page the form is on/should be posted to
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function setTitle( $t ) {
-               $this->mTitle = $t;
-               return $this;
-       }
-
-       /**
-        * Get the title
-        * @return Title
-        */
-       function getTitle() {
-               return $this->mTitle === false
-                       ? $this->getContext()->getTitle()
-                       : $this->mTitle;
-       }
-
-       /**
-        * Set the method used to submit the form
-        * @param $method String
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setMethod( $method = 'post' ) {
-               $this->mMethod = $method;
-               return $this;
-       }
-
-       public function getMethod() {
-               return $this->mMethod;
-       }
-
-       /**
-        * @todo Document
-        * @param array[]|HTMLFormField[] $fields array of fields (either arrays or objects)
-        * @param string $sectionName ID attribute of the "<table>" tag for this section, ignored if empty
-        * @param string $fieldsetIDPrefix ID prefix for the "<fieldset>" tag of each subsection, ignored if empty
-        * @param boolean &$hasUserVisibleFields Whether the section had user-visible fields
-        * @return String
-        */
-       public function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '', &$hasUserVisibleFields = false ) {
-               $displayFormat = $this->getDisplayFormat();
-
-               $html = '';
-               $subsectionHtml = '';
-               $hasLabel = false;
-
-               switch ( $displayFormat ) {
-                       case 'table':
-                               $getFieldHtmlMethod = 'getTableRow';
-                               break;
-                       case 'vform':
-                               // Close enough to a div.
-                               $getFieldHtmlMethod = 'getDiv';
-                               break;
-                       default:
-                               $getFieldHtmlMethod = 'get' . ucfirst( $displayFormat );
-               }
-
-               foreach ( $fields as $key => $value ) {
-                       if ( $value instanceof HTMLFormField ) {
-                               $v = empty( $value->mParams['nodata'] )
-                                       ? $this->mFieldData[$key]
-                                       : $value->getDefault();
-                               $html .= $value->$getFieldHtmlMethod( $v );
-
-                               $labelValue = trim( $value->getLabel() );
-                               if ( $labelValue != '&#160;' && $labelValue !== '' ) {
-                                       $hasLabel = true;
-                               }
-
-                               if ( get_class( $value ) !== 'HTMLHiddenField' &&
-                                               get_class( $value ) !== 'HTMLApiField' ) {
-                                       $hasUserVisibleFields = true;
-                               }
-                       } elseif ( is_array( $value ) ) {
-                               $subsectionHasVisibleFields = false;
-                               $section = $this->displaySection( $value, "mw-htmlform-$key", "$fieldsetIDPrefix$key-", $subsectionHasVisibleFields );
-                               $legend = null;
-
-                               if ( $subsectionHasVisibleFields === true ) {
-                                       // Display the section with various niceties.
-                                       $hasUserVisibleFields = true;
-
-                                       $legend = $this->getLegend( $key );
-
-                                       if ( isset( $this->mSectionHeaders[$key] ) ) {
-                                               $section = $this->mSectionHeaders[$key] . $section;
-                                       }
-                                       if ( isset( $this->mSectionFooters[$key] ) ) {
-                                               $section .= $this->mSectionFooters[$key];
-                                       }
-
-                                       $attributes = array();
-                                       if ( $fieldsetIDPrefix ) {
-                                               $attributes['id'] = Sanitizer::escapeId( "$fieldsetIDPrefix$key" );
-                                       }
-                                       $subsectionHtml .= Xml::fieldset( $legend, $section, $attributes ) . "\n";
-                               } else {
-                                       // Just return the inputs, nothing fancy.
-                                       $subsectionHtml .= $section;
-                               }
-                       }
-               }
-
-               if ( $displayFormat !== 'raw' ) {
-                       $classes = array();
-
-                       if ( !$hasLabel ) { // Avoid strange spacing when no labels exist
-                               $classes[] = 'mw-htmlform-nolabel';
-                       }
-
-                       $attribs = array(
-                               'class' => implode( ' ', $classes ),
-                       );
-
-                       if ( $sectionName ) {
-                               $attribs['id'] = Sanitizer::escapeId( $sectionName );
-                       }
-
-                       if ( $displayFormat === 'table' ) {
-                               $html = Html::rawElement( 'table', $attribs,
-                                       Html::rawElement( 'tbody', array(), "\n$html\n" ) ) . "\n";
-                       } elseif ( $displayFormat === 'div' || $displayFormat === 'vform' ) {
-                               $html = Html::rawElement( 'div', $attribs, "\n$html\n" );
-                       }
-               }
-
-               if ( $this->mSubSectionBeforeFields ) {
-                       return $subsectionHtml . "\n" . $html;
-               } else {
-                       return $html . "\n" . $subsectionHtml;
-               }
-       }
-
-       /**
-        * Construct the form fields from the Descriptor array
-        */
-       function loadData() {
-               $fieldData = array();
-
-               foreach ( $this->mFlatFields as $fieldname => $field ) {
-                       if ( !empty( $field->mParams['nodata'] ) ) {
-                               continue;
-                       } elseif ( !empty( $field->mParams['disabled'] ) ) {
-                               $fieldData[$fieldname] = $field->getDefault();
-                       } else {
-                               $fieldData[$fieldname] = $field->loadDataFromRequest( $this->getRequest() );
-                       }
-               }
-
-               # Filter data.
-               foreach ( $fieldData as $name => &$value ) {
-                       $field = $this->mFlatFields[$name];
-                       $value = $field->filter( $value, $this->mFlatFields );
-               }
-
-               $this->mFieldData = $fieldData;
-       }
-
-       /**
-        * Stop a reset button being shown for this form
-        * @param bool $suppressReset set to false to re-enable the
-        *       button again
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       function suppressReset( $suppressReset = true ) {
-               $this->mShowReset = !$suppressReset;
-               return $this;
-       }
-
-       /**
-        * Overload this if you want to apply special filtration routines
-        * to the form as a whole, after it's submitted but before it's
-        * processed.
-        * @param $data
-        * @return
-        */
-       function filterDataForSubmit( $data ) {
-               return $data;
-       }
-
-       /**
-        * Get a string to go in the "<legend>" of a section fieldset.
-        * Override this if you want something more complicated.
-        * @param $key String
-        * @return String
-        */
-       public function getLegend( $key ) {
-               return $this->msg( "{$this->mMessagePrefix}-$key" )->text();
-       }
-
-       /**
-        * Set the value for the action attribute of the form.
-        * When set to false (which is the default state), the set title is used.
-        *
-        * @since 1.19
-        *
-        * @param string|bool $action
-        * @return HTMLForm $this for chaining calls (since 1.20)
-        */
-       public function setAction( $action ) {
-               $this->mAction = $action;
-               return $this;
-       }
-
-       /**
-        * Get the value for the action attribute of the form.
-        *
-        * @since 1.22
-        *
-        * @return string
-        */
-       public function getAction() {
-               global $wgScript, $wgArticlePath;
-
-               // If an action is alredy provided, return it
-               if ( $this->mAction !== false ) {
-                       return $this->mAction;
-               }
-
-               // Check whether we are in GET mode and $wgArticlePath contains a "?"
-               // meaning that getLocalURL() would return something like "index.php?title=...".
-               // As browser remove the query string before submitting GET forms,
-               // it means that the title would be lost. In such case use $wgScript instead
-               // and put title in an hidden field (see getHiddenFields()).
-               if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
-                       return $wgScript;
-               }
-
-               return $this->getTitle()->getLocalURL();
-       }
-}
-
-/**
- * The parent class to generate form fields.  Any field type should
- * be a subclass of this.
- */
-abstract class HTMLFormField {
-
-       protected $mValidationCallback;
-       protected $mFilterCallback;
-       protected $mName;
-       public $mParams;
-       protected $mLabel;      # String label.  Set on construction
-       protected $mID;
-       protected $mClass = '';
-       protected $mDefault;
-
-       /**
-        * @var bool If true will generate an empty div element with no label
-        * @since 1.22
-        */
-       protected $mShowEmptyLabels = true;
-
-       /**
-        * @var HTMLForm
-        */
-       public $mParent;
-
-       /**
-        * This function must be implemented to return the HTML to generate
-        * the input object itself.  It should not implement the surrounding
-        * table cells/rows, or labels/help messages.
-        * @param string $value the value to set the input to; eg a default
-        *       text for a text input.
-        * @return String valid HTML.
-        */
-       abstract function getInputHTML( $value );
-
-       /**
-        * Get a translated interface message
-        *
-        * This is a wrapper around $this->mParent->msg() if $this->mParent is set
-        * and wfMessage() otherwise.
-        *
-        * Parameters are the same as wfMessage().
-        *
-        * @return Message object
-        */
-       function msg() {
-               $args = func_get_args();
-
-               if ( $this->mParent ) {
-                       $callback = array( $this->mParent, 'msg' );
-               } else {
-                       $callback = 'wfMessage';
-               }
-
-               return call_user_func_array( $callback, $args );
-       }
-
-       /**
-        * Override this function to add specific validation checks on the
-        * field input.  Don't forget to call parent::validate() to ensure
-        * that the user-defined callback mValidationCallback is still run
-        * @param string $value the value the field was submitted with
-        * @param array $alldata the data collected from the form
-        * @return Mixed Bool true on success, or String error to display.
-        */
-       function validate( $value, $alldata ) {
-               if ( isset( $this->mParams['required'] ) && $this->mParams['required'] !== false && $value === '' ) {
-                       return $this->msg( 'htmlform-required' )->parse();
-               }
-
-               if ( isset( $this->mValidationCallback ) ) {
-                       return call_user_func( $this->mValidationCallback, $value, $alldata, $this->mParent );
-               }
-
-               return true;
-       }
-
-       function filter( $value, $alldata ) {
-               if ( isset( $this->mFilterCallback ) ) {
-                       $value = call_user_func( $this->mFilterCallback, $value, $alldata, $this->mParent );
-               }
-
-               return $value;
-       }
-
-       /**
-        * Should this field have a label, or is there no input element with the
-        * appropriate id for the label to point to?
-        *
-        * @return bool True to output a label, false to suppress
-        */
-       protected function needsLabel() {
-               return true;
-       }
-
-       /**
-        * Tell the field whether to generate a separate label element if its label
-        * is blank.
-        *
-        * @since 1.22
-        * @param bool $show Set to false to not generate a label.
-        * @return void
-        */
-       public function setShowEmptyLabel( $show ) {
-               $this->mShowEmptyLabels = $show;
-       }
-
-       /**
-        * Get the value that this input has been set to from a posted form,
-        * or the input's default value if it has not been set.
-        * @param $request WebRequest
-        * @return String the value
-        */
-       function loadDataFromRequest( $request ) {
-               if ( $request->getCheck( $this->mName ) ) {
-                       return $request->getText( $this->mName );
-               } else {
-                       return $this->getDefault();
-               }
-       }
-
-       /**
-        * Initialise the object
-        * @param array $params Associative Array. See HTMLForm doc for syntax.
-        *
-        * @since 1.22 The 'label' attribute no longer accepts raw HTML, use 'label-raw' instead
-        * @throws MWException
-        */
-       function __construct( $params ) {
-               $this->mParams = $params;
-
-               # Generate the label from a message, if possible
-               if ( isset( $params['label-message'] ) ) {
-                       $msgInfo = $params['label-message'];
-
-                       if ( is_array( $msgInfo ) ) {
-                               $msg = array_shift( $msgInfo );
-                       } else {
-                               $msg = $msgInfo;
-                               $msgInfo = array();
-                       }
-
-                       $this->mLabel = wfMessage( $msg, $msgInfo )->parse();
-               } elseif ( isset( $params['label'] ) ) {
-                       if ( $params['label'] === '&#160;' ) {
-                               // Apparently some things set &nbsp directly and in an odd format
-                               $this->mLabel = '&#160;';
-                       } else {
-                               $this->mLabel = htmlspecialchars( $params['label'] );
-                       }
-               } elseif ( isset( $params['label-raw'] ) ) {
-                       $this->mLabel = $params['label-raw'];
-               }
-
-               $this->mName = "wp{$params['fieldname']}";
-               if ( isset( $params['name'] ) ) {
-                       $this->mName = $params['name'];
-               }
-
-               $validName = Sanitizer::escapeId( $this->mName );
-               if ( $this->mName != $validName && !isset( $params['nodata'] ) ) {
-                       throw new MWException( "Invalid name '{$this->mName}' passed to " . __METHOD__ );
-               }
-
-               $this->mID = "mw-input-{$this->mName}";
-
-               if ( isset( $params['default'] ) ) {
-                       $this->mDefault = $params['default'];
-               }
-
-               if ( isset( $params['id'] ) ) {
-                       $id = $params['id'];
-                       $validId = Sanitizer::escapeId( $id );
-
-                       if ( $id != $validId ) {
-                               throw new MWException( "Invalid id '$id' passed to " . __METHOD__ );
-                       }
-
-                       $this->mID = $id;
-               }
-
-               if ( isset( $params['cssclass'] ) ) {
-                       $this->mClass = $params['cssclass'];
-               }
-
-               if ( isset( $params['validation-callback'] ) ) {
-                       $this->mValidationCallback = $params['validation-callback'];
-               }
-
-               if ( isset( $params['filter-callback'] ) ) {
-                       $this->mFilterCallback = $params['filter-callback'];
-               }
-
-               if ( isset( $params['flatlist'] ) ) {
-                       $this->mClass .= ' mw-htmlform-flatlist';
-               }
-
-               if ( isset( $params['hidelabel'] ) ) {
-                       $this->mShowEmptyLabels = false;
-               }
-       }
-
-       /**
-        * Get the complete table row for the input, including help text,
-        * labels, and whatever.
-        * @param string $value the value to set the input to.
-        * @return String complete HTML table row.
-        */
-       function getTableRow( $value ) {
-               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
-               $inputHtml = $this->getInputHTML( $value );
-               $fieldType = get_class( $this );
-               $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() );
-               $cellAttributes = array();
-
-               if ( !empty( $this->mParams['vertical-label'] ) ) {
-                       $cellAttributes['colspan'] = 2;
-                       $verticalLabel = true;
-               } else {
-                       $verticalLabel = false;
-               }
-
-               $label = $this->getLabelHtml( $cellAttributes );
-
-               $field = Html::rawElement(
-                       'td',
-                       array( 'class' => 'mw-input' ) + $cellAttributes,
-                       $inputHtml . "\n$errors"
-               );
-
-               if ( $verticalLabel ) {
-                       $html = Html::rawElement( 'tr',
-                               array( 'class' => 'mw-htmlform-vertical-label' ), $label );
-                       $html .= Html::rawElement( 'tr',
-                               array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
-                               $field );
-               } else {
-                       $html = Html::rawElement( 'tr',
-                               array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
-                               $label . $field );
-               }
-
-               return $html . $helptext;
-       }
-
-       /**
-        * Get the complete div for the input, including help text,
-        * labels, and whatever.
-        * @since 1.20
-        * @param string $value the value to set the input to.
-        * @return String complete HTML table row.
-        */
-       public function getDiv( $value ) {
-               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
-               $inputHtml = $this->getInputHTML( $value );
-               $fieldType = get_class( $this );
-               $helptext = $this->getHelpTextHtmlDiv( $this->getHelpText() );
-               $cellAttributes = array();
-               $label = $this->getLabelHtml( $cellAttributes );
-
-               $outerDivClass = array(
-                       'mw-input',
-                       'mw-htmlform-nolabel' => ( $label === '' )
-               );
-
-               $field = Html::rawElement(
-                       'div',
-                       array( 'class' => $outerDivClass ) + $cellAttributes,
-                       $inputHtml . "\n$errors"
-               );
-               $divCssClasses = array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass );
-               if ( $this->mParent->isVForm() ) {
-                       $divCssClasses[] = 'mw-ui-vform-div';
-               }
-               $html = Html::rawElement( 'div',
-                       array( 'class' => $divCssClasses ),
-                       $label . $field );
-               $html .= $helptext;
-               return $html;
-       }
-
-       /**
-        * Get the complete raw fields for the input, including help text,
-        * labels, and whatever.
-        * @since 1.20
-        * @param string $value the value to set the input to.
-        * @return String complete HTML table row.
-        */
-       public function getRaw( $value ) {
-               list( $errors, ) = $this->getErrorsAndErrorClass( $value );
-               $inputHtml = $this->getInputHTML( $value );
-               $helptext = $this->getHelpTextHtmlRaw( $this->getHelpText() );
-               $cellAttributes = array();
-               $label = $this->getLabelHtml( $cellAttributes );
-
-               $html = "\n$errors";
-               $html .= $label;
-               $html .= $inputHtml;
-               $html .= $helptext;
-               return $html;
-       }
-
-       /**
-        * Generate help text HTML in table format
-        * @since 1.20
-        * @param $helptext String|null
-        * @return String
-        */
-       public function getHelpTextHtmlTable( $helptext ) {
-               if ( is_null( $helptext ) ) {
-                       return '';
-               }
-
-               $row = Html::rawElement(
-                       'td',
-                       array( 'colspan' => 2, 'class' => 'htmlform-tip' ),
-                       $helptext
-               );
-               $row = Html::rawElement( 'tr', array(), $row );
-               return $row;
-       }
-
-       /**
-        * Generate help text HTML in div format
-        * @since 1.20
-        * @param $helptext String|null
-        * @return String
-        */
-       public function getHelpTextHtmlDiv( $helptext ) {
-               if ( is_null( $helptext ) ) {
-                       return '';
-               }
-
-               $div = Html::rawElement( 'div', array( 'class' => 'htmlform-tip' ), $helptext );
-               return $div;
-       }
-
-       /**
-        * Generate help text HTML formatted for raw output
-        * @since 1.20
-        * @param $helptext String|null
-        * @return String
-        */
-       public function getHelpTextHtmlRaw( $helptext ) {
-               return $this->getHelpTextHtmlDiv( $helptext );
-       }
-
-       /**
-        * Determine the help text to display
-        * @since 1.20
-        * @return String
-        */
-       public function getHelpText() {
-               $helptext = null;
-
-               if ( isset( $this->mParams['help-message'] ) ) {
-                       $this->mParams['help-messages'] = array( $this->mParams['help-message'] );
-               }
-
-               if ( isset( $this->mParams['help-messages'] ) ) {
-                       foreach ( $this->mParams['help-messages'] as $name ) {
-                               $helpMessage = (array)$name;
-                               $msg = $this->msg( array_shift( $helpMessage ), $helpMessage );
-
-                               if ( $msg->exists() ) {
-                                       if ( is_null( $helptext ) ) {
-                                               $helptext = '';
-                                       } else {
-                                               $helptext .= $this->msg( 'word-separator' )->escaped(); // some space
-                                       }
-                                       $helptext .= $msg->parse(); // Append message
-                               }
-                       }
-               }
-               elseif ( isset( $this->mParams['help'] ) ) {
-                       $helptext = $this->mParams['help'];
-               }
-               return $helptext;
-       }
-
-       /**
-        * Determine form errors to display and their classes
-        * @since 1.20
-        * @param string $value the value of the input
-        * @return Array
-        */
-       public function getErrorsAndErrorClass( $value ) {
-               $errors = $this->validate( $value, $this->mParent->mFieldData );
-
-               if ( $errors === true || ( !$this->mParent->getRequest()->wasPosted() && ( $this->mParent->getMethod() == 'post' ) ) ) {
-                       $errors = '';
-                       $errorClass = '';
-               } else {
-                       $errors = self::formatErrors( $errors );
-                       $errorClass = 'mw-htmlform-invalid-input';
-               }
-               return array( $errors, $errorClass );
-       }
-
-       function getLabel() {
-               return is_null( $this->mLabel ) ? '' : $this->mLabel;
-       }
-
-       function getLabelHtml( $cellAttributes = array() ) {
-               # Don't output a for= attribute for labels with no associated input.
-               # Kind of hacky here, possibly we don't want these to be <label>s at all.
-               $for = array();
-
-               if ( $this->needsLabel() ) {
-                       $for['for'] = $this->mID;
-               }
-
-               $labelValue = trim( $this->getLabel() );
-               $hasLabel = false;
-               if ( $labelValue !== '&#160;' && $labelValue !== '' ) {
-                       $hasLabel = true;
-               }
-
-               $displayFormat = $this->mParent->getDisplayFormat();
-               $html = '';
-
-               if ( $displayFormat === 'table' ) {
-                       $html = Html::rawElement( 'td', array( 'class' => 'mw-label' ) + $cellAttributes,
-                               Html::rawElement( 'label', $for, $labelValue )
-                       );
-               } elseif ( $hasLabel || $this->mShowEmptyLabels ) {
-                       if ( $displayFormat === 'div' ) {
-                               $html = Html::rawElement(
-                                       'div',
-                                       array( 'class' => 'mw-label' ) + $cellAttributes,
-                                       Html::rawElement( 'label', $for, $labelValue )
-                               );
-                       } else {
-                               $html = Html::rawElement( 'label', $for, $labelValue );
-                       }
-               }
-
-               return $html;
-       }
-
-       function getDefault() {
-               if ( isset( $this->mDefault ) ) {
-                       return $this->mDefault;
-               } else {
-                       return null;
-               }
-       }
-
-       /**
-        * Returns the attributes required for the tooltip and accesskey.
-        *
-        * @return array Attributes
-        */
-       public function getTooltipAndAccessKey() {
-               if ( empty( $this->mParams['tooltip'] ) ) {
-                       return array();
-               }
-               return Linker::tooltipAndAccesskeyAttribs( $this->mParams['tooltip'] );
-       }
-
-       /**
-        * flatten an array of options to a single array, for instance,
-        * a set of "<options>" inside "<optgroups>".
-        * @param array $options Associative Array with values either Strings
-        *       or Arrays
-        * @return Array flattened input
-        */
-       public static function flattenOptions( $options ) {
-               $flatOpts = array();
-
-               foreach ( $options as $value ) {
-                       if ( is_array( $value ) ) {
-                               $flatOpts = array_merge( $flatOpts, self::flattenOptions( $value ) );
-                       } else {
-                               $flatOpts[] = $value;
-                       }
-               }
-
-               return $flatOpts;
-       }
-
-       /**
-        * Formats one or more errors as accepted by field validation-callback.
-        * @param $errors String|Message|Array of strings or Message instances
-        * @return String html
-        * @since 1.18
-        */
-       protected static function formatErrors( $errors ) {
-               if ( is_array( $errors ) && count( $errors ) === 1 ) {
-                       $errors = array_shift( $errors );
-               }
-
-               if ( is_array( $errors ) ) {
-                       $lines = array();
-                       foreach ( $errors as $error ) {
-                               if ( $error instanceof Message ) {
-                                       $lines[] = Html::rawElement( 'li', array(), $error->parse() );
-                               } else {
-                                       $lines[] = Html::rawElement( 'li', array(), $error );
-                               }
-                       }
-                       return Html::rawElement( 'ul', array( 'class' => 'error' ), implode( "\n", $lines ) );
-               } else {
-                       if ( $errors instanceof Message ) {
-                               $errors = $errors->parse();
-                       }
-                       return Html::rawElement( 'span', array( 'class' => 'error' ), $errors );
-               }
-       }
-}
-
-class HTMLTextField extends HTMLFormField {
-       function getSize() {
-               return isset( $this->mParams['size'] )
-                       ? $this->mParams['size']
-                       : 45;
-       }
-
-       function getInputHTML( $value ) {
-               $attribs = array(
-                       'id' => $this->mID,
-                       'name' => $this->mName,
-                       'size' => $this->getSize(),
-                       'value' => $value,
-               ) + $this->getTooltipAndAccessKey();
-
-               if ( $this->mClass !== '' ) {
-                       $attribs['class'] = $this->mClass;
-               }
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
-
-               # TODO: Enforce pattern, step, required, readonly on the server side as
-               # well
-               $allowedParams = array( 'min', 'max', 'pattern', 'title', 'step',
-                       'placeholder', 'list', 'maxlength' );
-               foreach ( $allowedParams as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $attribs[$param] = $this->mParams[$param];
-                       }
-               }
-
-               foreach ( array( 'required', 'autofocus', 'multiple', 'readonly' ) as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $attribs[$param] = '';
-                       }
-               }
-
-               # Implement tiny differences between some field variants
-               # here, rather than creating a new class for each one which
-               # is essentially just a clone of this one.
-               if ( isset( $this->mParams['type'] ) ) {
-                       switch ( $this->mParams['type'] ) {
-                               case 'email':
-                                       $attribs['type'] = 'email';
-                                       break;
-                               case 'int':
-                                       $attribs['type'] = 'number';
-                                       break;
-                               case 'float':
-                                       $attribs['type'] = 'number';
-                                       $attribs['step'] = 'any';
-                                       break;
-                               # Pass through
-                               case 'password':
-                               case 'file':
-                                       $attribs['type'] = $this->mParams['type'];
-                                       break;
-                       }
-               }
-
-               return Html::element( 'input', $attribs );
-       }
-}
-class HTMLTextAreaField extends HTMLFormField {
-       const DEFAULT_COLS = 80;
-       const DEFAULT_ROWS = 25;
-
-       function getCols() {
-               return isset( $this->mParams['cols'] )
-                       ? $this->mParams['cols']
-                       : static::DEFAULT_COLS;
-       }
-
-       function getRows() {
-               return isset( $this->mParams['rows'] )
-                       ? $this->mParams['rows']
-                       : static::DEFAULT_ROWS;
-       }
-
-       function getInputHTML( $value ) {
-               $attribs = array(
-                       'id' => $this->mID,
-                       'name' => $this->mName,
-                       'cols' => $this->getCols(),
-                       'rows' => $this->getRows(),
-               ) + $this->getTooltipAndAccessKey();
-
-               if ( $this->mClass !== '' ) {
-                       $attribs['class'] = $this->mClass;
-               }
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
-
-               if ( !empty( $this->mParams['readonly'] ) ) {
-                       $attribs['readonly'] = 'readonly';
-               }
-
-               if ( isset( $this->mParams['placeholder'] ) ) {
-                       $attribs['placeholder'] = $this->mParams['placeholder'];
-               }
-
-               foreach ( array( 'required', 'autofocus' ) as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $attribs[$param] = '';
-                       }
-               }
-
-               return Html::element( 'textarea', $attribs, $value );
-       }
-}
-
-/**
- * A field that will contain a numeric value
- */
-class HTMLFloatField extends HTMLTextField {
-       function getSize() {
-               return isset( $this->mParams['size'] )
-                       ? $this->mParams['size']
-                       : 20;
-       }
-
-       function validate( $value, $alldata ) {
-               $p = parent::validate( $value, $alldata );
-
-               if ( $p !== true ) {
-                       return $p;
-               }
-
-               $value = trim( $value );
-
-               # http://dev.w3.org/html5/spec/common-microsyntaxes.html#real-numbers
-               # with the addition that a leading '+' sign is ok.
-               if ( !preg_match( '/^((\+|\-)?\d+(\.\d+)?(E(\+|\-)?\d+)?)?$/i', $value ) ) {
-                       return $this->msg( 'htmlform-float-invalid' )->parseAsBlock();
-               }
-
-               # The "int" part of these message names is rather confusing.
-               # They make equal sense for all numbers.
-               if ( isset( $this->mParams['min'] ) ) {
-                       $min = $this->mParams['min'];
-
-                       if ( $min > $value ) {
-                               return $this->msg( 'htmlform-int-toolow', $min )->parseAsBlock();
-                       }
-               }
-
-               if ( isset( $this->mParams['max'] ) ) {
-                       $max = $this->mParams['max'];
-
-                       if ( $max < $value ) {
-                               return $this->msg( 'htmlform-int-toohigh', $max )->parseAsBlock();
-                       }
-               }
-
-               return true;
-       }
-}
-
-/**
- * A field that must contain a number
- */
-class HTMLIntField extends HTMLFloatField {
-       function validate( $value, $alldata ) {
-               $p = parent::validate( $value, $alldata );
-
-               if ( $p !== true ) {
-                       return $p;
-               }
-
-               # http://dev.w3.org/html5/spec/common-microsyntaxes.html#signed-integers
-               # with the addition that a leading '+' sign is ok. Note that leading zeros
-               # are fine, and will be left in the input, which is useful for things like
-               # phone numbers when you know that they are integers (the HTML5 type=tel
-               # input does not require its value to be numeric).  If you want a tidier
-               # value to, eg, save in the DB, clean it up with intval().
-               if ( !preg_match( '/^((\+|\-)?\d+)?$/', trim( $value ) )
-               ) {
-                       return $this->msg( 'htmlform-int-invalid' )->parseAsBlock();
-               }
-
-               return true;
-       }
-}
-
-/**
- * A checkbox field
- */
-class HTMLCheckField extends HTMLFormField {
-       function getInputHTML( $value ) {
-               if ( !empty( $this->mParams['invert'] ) ) {
-                       $value = !$value;
-               }
-
-               $attr = $this->getTooltipAndAccessKey();
-               $attr['id'] = $this->mID;
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attr['disabled'] = 'disabled';
-               }
-
-               if ( $this->mClass !== '' ) {
-                       $attr['class'] = $this->mClass;
-               }
-
-               if ( $this->mParent->isVForm() ) {
-                       // Nest checkbox inside label.
-                       return Html::rawElement(
-                                       'label',
-                                       array(
-                                               'class' => 'mw-ui-checkbox-label'
-                                       ),
-                                       Xml::check(
-                                               $this->mName,
-                                               $value,
-                                               $attr
-                                       ) .
-                                       // Html:rawElement doesn't escape contents.
-                                       htmlspecialchars( $this->mLabel )
-                               );
-               } else {
-                       return Xml::check( $this->mName, $value, $attr ) . '&#160;' .
-                               Html::rawElement( 'label', array( 'for' => $this->mID ), $this->mLabel );
-               }
-       }
-
-       /**
-        * For a checkbox, the label goes on the right hand side, and is
-        * added in getInputHTML(), rather than HTMLFormField::getRow()
-        * @return String
-        */
-       function getLabel() {
-               return '&#160;';
-       }
-
-       /**
-        * checkboxes don't need a label.
-        */
-       protected function needsLabel() {
-               return false;
-       }
-
-       /**
-        * @param  $request WebRequest
-        * @return String
-        */
-       function loadDataFromRequest( $request ) {
-               $invert = false;
-               if ( isset( $this->mParams['invert'] ) && $this->mParams['invert'] ) {
-                       $invert = true;
-               }
-
-               // GetCheck won't work like we want for checks.
-               // Fetch the value in either one of the two following case:
-               // - we have a valid token (form got posted or GET forged by the user)
-               // - checkbox name has a value (false or true), ie is not null
-               if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName ) !== null ) {
-                       // XOR has the following truth table, which is what we want
-                       // INVERT VALUE | OUTPUT
-                       // true   true  | false
-                       // false  true  | true
-                       // false  false | false
-                       // true   false | true
-                       return $request->getBool( $this->mName ) xor $invert;
-               } else {
-                       return $this->getDefault();
-               }
-       }
-}
-
-/**
- * A checkbox matrix
- * Operates similarly to HTMLMultiSelectField, but instead of using an array of
- * options, uses an array of rows and an array of columns to dynamically
- * construct a matrix of options. The tags used to identify a particular cell
- * are of the form "columnName-rowName"
- *
- * Options:
- *   - columns
- *     - Required list of columns in the matrix.
- *   - rows
- *     - Required list of rows in the matrix.
- *   - force-options-on
- *     - Accepts array of column-row tags to be displayed as enabled but unavailable to change
- *   - force-options-off
- *     - Accepts array of column-row tags to be displayed as disabled but unavailable to change.
- *   - tooltips
- *     - Optional array mapping row label to tooltip content
- *   - tooltip-class
- *     - Optional CSS class used on tooltip container span. Defaults to mw-icon-question.
- */
-class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
-
-       static private $requiredParams = array(
-               // Required by underlying HTMLFormField
-               'fieldname',
-               // Required by HTMLCheckMatrix
-               'rows', 'columns'
-       );
-
-       public function __construct( $params ) {
-               $missing = array_diff( self::$requiredParams, array_keys( $params ) );
-               if ( $missing ) {
-                       throw new HTMLFormFieldRequiredOptionsException( $this, $missing );
-               }
-               parent::__construct( $params );
-       }
-
-       function validate( $value, $alldata ) {
-               $rows = $this->mParams['rows'];
-               $columns = $this->mParams['columns'];
-
-               // Make sure user-defined validation callback is run
-               $p = parent::validate( $value, $alldata );
-               if ( $p !== true ) {
-                       return $p;
-               }
-
-               // Make sure submitted value is an array
-               if ( !is_array( $value ) ) {
-                       return false;
-               }
-
-               // If all options are valid, array_intersect of the valid options
-               // and the provided options will return the provided options.
-               $validOptions = array();
-               foreach ( $rows as $rowTag ) {
-                       foreach ( $columns as $columnTag ) {
-                               $validOptions[] = $columnTag . '-' . $rowTag;
-                       }
-               }
-               $validValues = array_intersect( $value, $validOptions );
-               if ( count( $validValues ) == count( $value ) ) {
-                       return true;
-               } else {
-                       return $this->msg( 'htmlform-select-badoption' )->parse();
-               }
-       }
-
-       /**
-        * Build a table containing a matrix of checkbox options.
-        * The value of each option is a combination of the row tag and column tag.
-        * mParams['rows'] is an array with row labels as keys and row tags as values.
-        * mParams['columns'] is an array with column labels as keys and column tags as values.
-        * @param array $value of the options that should be checked
-        * @return String
-        */
-       function getInputHTML( $value ) {
-               $html = '';
-               $tableContents = '';
-               $attribs = array();
-               $rows = $this->mParams['rows'];
-               $columns = $this->mParams['columns'];
-
-               // If the disabled param is set, disable all the options
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
-
-               // Build the column headers
-               $headerContents = Html::rawElement( 'td', array(), '&#160;' );
-               foreach ( $columns as $columnLabel => $columnTag ) {
-                       $headerContents .= Html::rawElement( 'td', array(), $columnLabel );
-               }
-               $tableContents .= Html::rawElement( 'tr', array(), "\n$headerContents\n" );
-
-               $tooltipClass = 'mw-icon-question';
-               if ( isset( $this->mParams['tooltip-class'] ) ) {
-                       $tooltipClass = $this->mParams['tooltip-class'];
-               }
-
-               // Build the options matrix
-               foreach ( $rows as $rowLabel => $rowTag ) {
-                       // Append tooltip if configured
-                       if ( isset( $this->mParams['tooltips'][$rowLabel] ) ) {
-                               $tooltipAttribs = array(
-                                       'class' => "mw-htmlform-tooltip $tooltipClass",
-                                       'title' =>  $this->mParams['tooltips'][$rowLabel],
-                               );
-                               $rowLabel .= ' ' . Html::element( 'span', $tooltipAttribs, '' );
-                       }
-                       $rowContents = Html::rawElement( 'td', array(), $rowLabel );
-                       foreach ( $columns as $columnTag ) {
-                               $thisTag = "$columnTag-$rowTag";
-                               // Construct the checkbox
-                               $thisAttribs = array(
-                                       'id' => "{$this->mID}-$thisTag",
-                                       'value' => $thisTag,
-                               );
-                               $checked = in_array( $thisTag, (array)$value, true );
-                               if ( $this->isTagForcedOff( $thisTag ) ) {
-                                       $checked = false;
-                                       $thisAttribs['disabled'] = 1;
-                               } elseif ( $this->isTagForcedOn( $thisTag ) ) {
-                                       $checked = true;
-                                       $thisAttribs['disabled'] = 1;
-                               }
-                               $rowContents .= Html::rawElement(
-                                       'td',
-                                       array(),
-                                       Xml::check( "{$this->mName}[]", $checked, $attribs + $thisAttribs )
-                               );
-                       }
-                       $tableContents .= Html::rawElement( 'tr', array(), "\n$rowContents\n" );
-               }
-
-               // Put it all in a table
-               $html .= Html::rawElement( 'table', array( 'class' => 'mw-htmlform-matrix' ),
-                       Html::rawElement( 'tbody', array(), "\n$tableContents\n" ) ) . "\n";
-
-               return $html;
-       }
-
-       protected function isTagForcedOff( $tag ) {
-               return isset( $this->mParams['force-options-off'] )
-                       && in_array( $tag, $this->mParams['force-options-off'] );
-       }
-
-       protected function isTagForcedOn( $tag ) {
-               return isset( $this->mParams['force-options-on'] )
-                       && in_array( $tag, $this->mParams['force-options-on'] );
-       }
-
-       /**
-        * Get the complete table row for the input, including help text,
-        * labels, and whatever.
-        * We override this function since the label should always be on a separate
-        * line above the options in the case of a checkbox matrix, i.e. it's always
-        * a "vertical-label".
-        * @param string $value the value to set the input to
-        * @return String complete HTML table row
-        */
-       function getTableRow( $value ) {
-               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
-               $inputHtml = $this->getInputHTML( $value );
-               $fieldType = get_class( $this );
-               $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() );
-               $cellAttributes = array( 'colspan' => 2 );
-
-               $label = $this->getLabelHtml( $cellAttributes );
-
-               $field = Html::rawElement(
-                       'td',
-                       array( 'class' => 'mw-input' ) + $cellAttributes,
-                       $inputHtml . "\n$errors"
-               );
-
-               $html = Html::rawElement( 'tr',
-                       array( 'class' => 'mw-htmlform-vertical-label' ), $label );
-               $html .= Html::rawElement( 'tr',
-                       array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
-                       $field );
-
-               return $html . $helptext;
-       }
-
-       /**
-        * @param $request WebRequest
-        * @return Array
-        */
-       function loadDataFromRequest( $request ) {
-               if ( $this->mParent->getMethod() == 'post' ) {
-                       if ( $request->wasPosted() ) {
-                               // Checkboxes are not added to the request arrays if they're not checked,
-                               // so it's perfectly possible for there not to be an entry at all
-                               return $request->getArray( $this->mName, array() );
-                       } else {
-                               // That's ok, the user has not yet submitted the form, so show the defaults
-                               return $this->getDefault();
-                       }
-               } else {
-                       // This is the impossible case: if we look at $_GET and see no data for our
-                       // field, is it because the user has not yet submitted the form, or that they
-                       // have submitted it with all the options unchecked. We will have to assume the
-                       // latter, which basically means that you can't specify 'positive' defaults
-                       // for GET forms.
-                       return $request->getArray( $this->mName, array() );
-               }
-       }
-
-       function getDefault() {
-               if ( isset( $this->mDefault ) ) {
-                       return $this->mDefault;
-               } else {
-                       return array();
-               }
-       }
-
-       function filterDataForSubmit( $data ) {
-               $columns = HTMLFormField::flattenOptions( $this->mParams['columns'] );
-               $rows = HTMLFormField::flattenOptions( $this->mParams['rows'] );
-               $res = array();
-               foreach ( $columns as $column ) {
-                       foreach ( $rows as $row ) {
-                               // Make sure option hasn't been forced
-                               $thisTag = "$column-$row";
-                               if ( $this->isTagForcedOff( $thisTag ) ) {
-                                       $res[$thisTag] = false;
-                               } elseif ( $this->isTagForcedOn( $thisTag ) ) {
-                                       $res[$thisTag] = true;
-                               } else {
-                                       $res[$thisTag] = in_array( $thisTag, $data );
-                               }
-                       }
-               }
-
-               return $res;
-       }
-}
-
-/**
- * A select dropdown field.  Basically a wrapper for Xmlselect class
- */
-class HTMLSelectField extends HTMLFormField {
-       function validate( $value, $alldata ) {
-               $p = parent::validate( $value, $alldata );
-
-               if ( $p !== true ) {
-                       return $p;
-               }
-
-               $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
-
-               if ( in_array( $value, $validOptions ) ) {
-                       return true;
-               } else {
-                       return $this->msg( 'htmlform-select-badoption' )->parse();
-               }
-       }
-
-       function getInputHTML( $value ) {
-               $select = new XmlSelect( $this->mName, $this->mID, strval( $value ) );
-
-               # If one of the options' 'name' is int(0), it is automatically selected.
-               # because PHP sucks and thinks int(0) == 'some string'.
-               # Working around this by forcing all of them to strings.
-               foreach ( $this->mParams['options'] as &$opt ) {
-                       if ( is_int( $opt ) ) {
-                               $opt = strval( $opt );
-                       }
-               }
-               unset( $opt ); # PHP keeps $opt around as a reference, which is a bit scary
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $select->setAttribute( 'disabled', 'disabled' );
-               }
-
-               if ( $this->mClass !== '' ) {
-                       $select->setAttribute( 'class', $this->mClass );
-               }
-
-               $select->addOptions( $this->mParams['options'] );
-
-               return $select->getHTML();
-       }
-}
-
-/**
- * Select dropdown field, with an additional "other" textbox.
- */
-class HTMLSelectOrOtherField extends HTMLTextField {
-
-       function __construct( $params ) {
-               if ( !in_array( 'other', $params['options'], true ) ) {
-                       $msg = isset( $params['other'] ) ?
-                               $params['other'] :
-                               wfMessage( 'htmlform-selectorother-other' )->text();
-                       $params['options'][$msg] = 'other';
-               }
-
-               parent::__construct( $params );
-       }
-
-       static function forceToStringRecursive( $array ) {
-               if ( is_array( $array ) ) {
-                       return array_map( array( __CLASS__, 'forceToStringRecursive' ), $array );
-               } else {
-                       return strval( $array );
-               }
-       }
-
-       function getInputHTML( $value ) {
-               $valInSelect = false;
-
-               if ( $value !== false ) {
-                       $valInSelect = in_array(
-                               $value,
-                               HTMLFormField::flattenOptions( $this->mParams['options'] )
-                       );
-               }
-
-               $selected = $valInSelect ? $value : 'other';
-
-               $opts = self::forceToStringRecursive( $this->mParams['options'] );
-
-               $select = new XmlSelect( $this->mName, $this->mID, $selected );
-               $select->addOptions( $opts );
-
-               $select->setAttribute( 'class', 'mw-htmlform-select-or-other' );
-
-               $tbAttribs = array( 'id' => $this->mID . '-other', 'size' => $this->getSize() );
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $select->setAttribute( 'disabled', 'disabled' );
-                       $tbAttribs['disabled'] = 'disabled';
-               }
-
-               $select = $select->getHTML();
-
-               if ( isset( $this->mParams['maxlength'] ) ) {
-                       $tbAttribs['maxlength'] = $this->mParams['maxlength'];
-               }
-
-               if ( $this->mClass !== '' ) {
-                       $tbAttribs['class'] = $this->mClass;
-               }
-
-               $textbox = Html::input(
-                       $this->mName . '-other',
-                       $valInSelect ? '' : $value,
-                       'text',
-                       $tbAttribs
-               );
-
-               return "$select<br />\n$textbox";
-       }
-
-       /**
-        * @param  $request WebRequest
-        * @return String
-        */
-       function loadDataFromRequest( $request ) {
-               if ( $request->getCheck( $this->mName ) ) {
-                       $val = $request->getText( $this->mName );
-
-                       if ( $val == 'other' ) {
-                               $val = $request->getText( $this->mName . '-other' );
-                       }
-
-                       return $val;
-               } else {
-                       return $this->getDefault();
-               }
-       }
-}
-
-/**
- * Multi-select field
- */
-class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable {
-
-       function validate( $value, $alldata ) {
-               $p = parent::validate( $value, $alldata );
-
-               if ( $p !== true ) {
-                       return $p;
-               }
-
-               if ( !is_array( $value ) ) {
-                       return false;
-               }
-
-               # If all options are valid, array_intersect of the valid options
-               # and the provided options will return the provided options.
-               $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
-
-               $validValues = array_intersect( $value, $validOptions );
-               if ( count( $validValues ) == count( $value ) ) {
-                       return true;
-               } else {
-                       return $this->msg( 'htmlform-select-badoption' )->parse();
-               }
-       }
-
-       function getInputHTML( $value ) {
-               $html = $this->formatOptions( $this->mParams['options'], $value );
-
-               return $html;
-       }
-
-       function formatOptions( $options, $value ) {
-               $html = '';
-
-               $attribs = array();
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
-
-               foreach ( $options as $label => $info ) {
-                       if ( is_array( $info ) ) {
-                               $html .= Html::rawElement( 'h1', array(), $label ) . "\n";
-                               $html .= $this->formatOptions( $info, $value );
-                       } else {
-                               $thisAttribs = array( 'id' => "{$this->mID}-$info", 'value' => $info );
-
-                               $checkbox = Xml::check(
-                                       $this->mName . '[]',
-                                       in_array( $info, $value, true ),
-                                       $attribs + $thisAttribs );
-                               $checkbox .= '&#160;' . Html::rawElement( 'label', array( 'for' => "{$this->mID}-$info" ), $label );
-
-                               $html .= ' ' . Html::rawElement( 'div', array( 'class' => 'mw-htmlform-flatlist-item' ), $checkbox );
-                       }
-               }
-
-               return $html;
-       }
-
-       /**
-        * @param  $request WebRequest
-        * @return String
-        */
-       function loadDataFromRequest( $request ) {
-               if ( $this->mParent->getMethod() == 'post' ) {
-                       if ( $request->wasPosted() ) {
-                               # Checkboxes are just not added to the request arrays if they're not checked,
-                               # so it's perfectly possible for there not to be an entry at all
-                               return $request->getArray( $this->mName, array() );
-                       } else {
-                               # That's ok, the user has not yet submitted the form, so show the defaults
-                               return $this->getDefault();
-                       }
-               } else {
-                       # This is the impossible case: if we look at $_GET and see no data for our
-                       # field, is it because the user has not yet submitted the form, or that they
-                       # have submitted it with all the options unchecked? We will have to assume the
-                       # latter, which basically means that you can't specify 'positive' defaults
-                       # for GET forms.
-                       # @todo FIXME...
-                       return $request->getArray( $this->mName, array() );
-               }
-       }
-
-       function getDefault() {
-               if ( isset( $this->mDefault ) ) {
-                       return $this->mDefault;
-               } else {
-                       return array();
-               }
-       }
-
-       function filterDataForSubmit( $data ) {
-               $options = HTMLFormField::flattenOptions( $this->mParams['options'] );
-
-               $res = array();
-               foreach ( $options as $opt ) {
-                       $res["$opt"] = in_array( $opt, $data );
-               }
-
-               return $res;
-       }
-
-       protected function needsLabel() {
-               return false;
-       }
-}
-
-/**
- * Double field with a dropdown list constructed from a system message in the format
- *     * Optgroup header
- *     ** <option value>
- *     * New Optgroup header
- * Plus a text field underneath for an additional reason.  The 'value' of the field is
- * "<select>: <extra reason>", or "<extra reason>" if nothing has been selected in the
- * select dropdown.
- * @todo FIXME: If made 'required', only the text field should be compulsory.
- */
-class HTMLSelectAndOtherField extends HTMLSelectField {
-
-       function __construct( $params ) {
-               if ( array_key_exists( 'other', $params ) ) {
-               } elseif ( array_key_exists( 'other-message', $params ) ) {
-                       $params['other'] = wfMessage( $params['other-message'] )->plain();
-               } else {
-                       $params['other'] = null;
-               }
-
-               if ( array_key_exists( 'options', $params ) ) {
-                       # Options array already specified
-               } elseif ( array_key_exists( 'options-message', $params ) ) {
-                       # Generate options array from a system message
-                       $params['options'] = self::parseMessage(
-                               wfMessage( $params['options-message'] )->inContentLanguage()->plain(),
-                               $params['other']
-                       );
-               } else {
-                       # Sulk
-                       throw new MWException( 'HTMLSelectAndOtherField called without any options' );
-               }
-               $this->mFlatOptions = self::flattenOptions( $params['options'] );
-
-               parent::__construct( $params );
-       }
-
-       /**
-        * Build a drop-down box from a textual list.
-        * @param string $string message text
-        * @param string $otherName name of "other reason" option
-        * @return Array
-        * TODO: this is copied from Xml::listDropDown(), deprecate/avoid duplication?
-        */
-       public static function parseMessage( $string, $otherName = null ) {
-               if ( $otherName === null ) {
-                       $otherName = wfMessage( 'htmlform-selectorother-other' )->plain();
-               }
-
-               $optgroup = false;
-               $options = array( $otherName => 'other' );
-
-               foreach ( explode( "\n", $string ) as $option ) {
-                       $value = trim( $option );
-                       if ( $value == '' ) {
-                               continue;
-                       } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
-                               # A new group is starting...
-                               $value = trim( substr( $value, 1 ) );
-                               $optgroup = $value;
-                       } elseif ( substr( $value, 0, 2 ) == '**' ) {
-                               # groupmember
-                               $opt = trim( substr( $value, 2 ) );
-                               if ( $optgroup === false ) {
-                                       $options[$opt] = $opt;
-                               } else {
-                                       $options[$optgroup][$opt] = $opt;
-                               }
-                       } else {
-                               # groupless reason list
-                               $optgroup = false;
-                               $options[$option] = $option;
-                       }
-               }
-
-               return $options;
-       }
-
-       function getInputHTML( $value ) {
-               $select = parent::getInputHTML( $value[1] );
-
-               $textAttribs = array(
-                       'id' => $this->mID . '-other',
-                       'size' => $this->getSize(),
-               );
-
-               if ( $this->mClass !== '' ) {
-                       $textAttribs['class'] = $this->mClass;
-               }
-
-               foreach ( array( 'required', 'autofocus', 'multiple', 'disabled' ) as $param ) {
-                       if ( isset( $this->mParams[$param] ) ) {
-                               $textAttribs[$param] = '';
-                       }
-               }
-
-               $textbox = Html::input(
-                       $this->mName . '-other',
-                       $value[2],
-                       'text',
-                       $textAttribs
-               );
-
-               return "$select<br />\n$textbox";
-       }
-
-       /**
-        * @param  $request WebRequest
-        * @return Array("<overall message>","<select value>","<text field value>")
-        */
-       function loadDataFromRequest( $request ) {
-               if ( $request->getCheck( $this->mName ) ) {
-
-                       $list = $request->getText( $this->mName );
-                       $text = $request->getText( $this->mName . '-other' );
-
-                       if ( $list == 'other' ) {
-                               $final = $text;
-                       } elseif ( !in_array( $list, $this->mFlatOptions ) ) {
-                               # User has spoofed the select form to give an option which wasn't
-                               # in the original offer.  Sulk...
-                               $final = $text;
-                       } elseif ( $text == '' ) {
-                               $final = $list;
-                       } else {
-                               $final = $list . $this->msg( 'colon-separator' )->inContentLanguage()->text() . $text;
-                       }
-
-               } else {
-                       $final = $this->getDefault();
-
-                       $list = 'other';
-                       $text = $final;
-                       foreach ( $this->mFlatOptions as $option ) {
-                               $match = $option . $this->msg( 'colon-separator' )->inContentLanguage()->text();
-                               if ( strpos( $text, $match ) === 0 ) {
-                                       $list = $option;
-                                       $text = substr( $text, strlen( $match ) );
-                                       break;
-                               }
-                       }
-               }
-               return array( $final, $list, $text );
-       }
-
-       function getSize() {
-               return isset( $this->mParams['size'] )
-                       ? $this->mParams['size']
-                       : 45;
-       }
-
-       function validate( $value, $alldata ) {
-               # HTMLSelectField forces $value to be one of the options in the select
-               # field, which is not useful here.  But we do want the validation further up
-               # the chain
-               $p = parent::validate( $value[1], $alldata );
-
-               if ( $p !== true ) {
-                       return $p;
-               }
-
-               if ( isset( $this->mParams['required'] ) && $this->mParams['required'] !== false && $value[1] === '' ) {
-                       return $this->msg( 'htmlform-required' )->parse();
-               }
-
-               return true;
-       }
-}
-
-/**
- * Radio checkbox fields.
- */
-class HTMLRadioField extends HTMLFormField {
-
-       function validate( $value, $alldata ) {
-               $p = parent::validate( $value, $alldata );
-
-               if ( $p !== true ) {
-                       return $p;
-               }
-
-               if ( !is_string( $value ) && !is_int( $value ) ) {
-                       return false;
-               }
-
-               $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
-
-               if ( in_array( $value, $validOptions ) ) {
-                       return true;
-               } else {
-                       return $this->msg( 'htmlform-select-badoption' )->parse();
-               }
-       }
-
-       /**
-        * This returns a block of all the radio options, in one cell.
-        * @see includes/HTMLFormField#getInputHTML()
-        * @param $value String
-        * @return String
-        */
-       function getInputHTML( $value ) {
-               $html = $this->formatOptions( $this->mParams['options'], $value );
-
-               return $html;
-       }
-
-       function formatOptions( $options, $value ) {
-               $html = '';
-
-               $attribs = array();
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attribs['disabled'] = 'disabled';
-               }
-
-               # TODO: should this produce an unordered list perhaps?
-               foreach ( $options as $label => $info ) {
-                       if ( is_array( $info ) ) {
-                               $html .= Html::rawElement( 'h1', array(), $label ) . "\n";
-                               $html .= $this->formatOptions( $info, $value );
-                       } else {
-                               $id = Sanitizer::escapeId( $this->mID . "-$info" );
-                               $radio = Xml::radio(
-                                       $this->mName,
-                                       $info,
-                                       $info == $value,
-                                       $attribs + array( 'id' => $id )
-                               );
-                               $radio .= '&#160;' .
-                                               Html::rawElement( 'label', array( 'for' => $id ), $label );
-
-                               $html .= ' ' . Html::rawElement( 'div', array( 'class' => 'mw-htmlform-flatlist-item' ), $radio );
-                       }
-               }
-
-               return $html;
-       }
-
-       protected function needsLabel() {
-               return false;
-       }
-}
-
-/**
- * An information field (text blob), not a proper input.
- */
-class HTMLInfoField extends HTMLFormField {
-       public function __construct( $info ) {
-               $info['nodata'] = true;
-
-               parent::__construct( $info );
-       }
-
-       public function getInputHTML( $value ) {
-               return !empty( $this->mParams['raw'] ) ? $value : htmlspecialchars( $value );
-       }
-
-       public function getTableRow( $value ) {
-               if ( !empty( $this->mParams['rawrow'] ) ) {
-                       return $value;
-               }
-
-               return parent::getTableRow( $value );
-       }
-
-       /**
-        * @since 1.20
-        */
-       public function getDiv( $value ) {
-               if ( !empty( $this->mParams['rawrow'] ) ) {
-                       return $value;
-               }
-
-               return parent::getDiv( $value );
-       }
-
-       /**
-        * @since 1.20
-        */
-       public function getRaw( $value ) {
-               if ( !empty( $this->mParams['rawrow'] ) ) {
-                       return $value;
-               }
-
-               return parent::getRaw( $value );
-       }
-
-       protected function needsLabel() {
-               return false;
-       }
-}
-
-class HTMLHiddenField extends HTMLFormField {
-       public function __construct( $params ) {
-               parent::__construct( $params );
-
-               # Per HTML5 spec, hidden fields cannot be 'required'
-               # http://dev.w3.org/html5/spec/states-of-the-type-attribute.html#hidden-state
-               unset( $this->mParams['required'] );
-       }
-
-       public function getTableRow( $value ) {
-               $params = array();
-               if ( $this->mID ) {
-                       $params['id'] = $this->mID;
-               }
-
-               $this->mParent->addHiddenField(
-                       $this->mName,
-                       $this->mDefault,
-                       $params
-               );
-
-               return '';
-       }
-
-       /**
-        * @since 1.20
-        */
-       public function getDiv( $value ) {
-               return $this->getTableRow( $value );
-       }
-
-       /**
-        * @since 1.20
-        */
-       public function getRaw( $value ) {
-               return $this->getTableRow( $value );
-       }
-
-       public function getInputHTML( $value ) {
-               return '';
-       }
-}
-
-/**
- * Add a submit button inline in the form (as opposed to
- * HTMLForm::addButton(), which will add it at the end).
- */
-class HTMLSubmitField extends HTMLButtonField {
-       protected $buttonType = 'submit';
-}
-
-/**
- * Adds a generic button inline to the form. Does not do anything, you must add
- * click handling code in JavaScript. Use a HTMLSubmitField if you merely
- * wish to add a submit button to a form.
- *
- * @since 1.22
- */
-class HTMLButtonField extends HTMLFormField {
-       protected $buttonType = 'button';
-
-       public function __construct( $info ) {
-               $info['nodata'] = true;
-               parent::__construct( $info );
-       }
-
-       public function getInputHTML( $value ) {
-               $attr = array(
-                       'class' => 'mw-htmlform-submit ' . $this->mClass,
-                       'id' => $this->mID,
-               );
-
-               if ( !empty( $this->mParams['disabled'] ) ) {
-                       $attr['disabled'] = 'disabled';
-               }
-
-               return Html::input(
-                       $this->mName,
-                       $value,
-                       $this->buttonType,
-                       $attr
-               );
-       }
-
-       protected function needsLabel() {
-               return false;
-       }
-
-       /**
-        * Button cannot be invalid
-        * @param $value String
-        * @param $alldata Array
-        * @return Bool
-        */
-       public function validate( $value, $alldata ) {
-               return true;
-       }
-}
-
-class HTMLEditTools extends HTMLFormField {
-       public function getInputHTML( $value ) {
-               return '';
-       }
-
-       public function getTableRow( $value ) {
-               $msg = $this->formatMsg();
-
-               return '<tr><td></td><td class="mw-input">'
-                       . '<div class="mw-editTools">'
-                       . $msg->parseAsBlock()
-                       . "</div></td></tr>\n";
-       }
-
-       /**
-        * @since 1.20
-        */
-       public function getDiv( $value ) {
-               $msg = $this->formatMsg();
-               return '<div class="mw-editTools">' . $msg->parseAsBlock() . '</div>';
-       }
-
-       /**
-        * @since 1.20
-        */
-       public function getRaw( $value ) {
-               return $this->getDiv( $value );
-       }
-
-       protected function formatMsg() {
-               if ( empty( $this->mParams['message'] ) ) {
-                       $msg = $this->msg( 'edittools' );
-               } else {
-                       $msg = $this->msg( $this->mParams['message'] );
-                       if ( $msg->isDisabled() ) {
-                               $msg = $this->msg( 'edittools' );
-                       }
-               }
-               $msg->inContentLanguage();
-               return $msg;
-       }
-}
-
-class HTMLApiField extends HTMLFormField {
-       public function getTableRow( $value ) {
-               return '';
-       }
-
-       public function getDiv( $value ) {
-               return $this->getTableRow( $value );
-       }
-
-       public function getRaw( $value ) {
-               return $this->getTableRow( $value );
-       }
-
-       public function getInputHTML( $value ) {
-               return '';
-       }
-}
-
-interface HTMLNestedFilterable {
-       /**
-        * Support for seperating multi-option preferences into multiple preferences
-        * Due to lack of array support.
-        * @param $data array
-        */
-       function filterDataForSubmit( $data );
-}
-
-class HTMLFormFieldRequiredOptionsException extends MWException {
-       public function __construct( HTMLFormField $field, array $missing ) {
-               parent::__construct( sprintf(
-                       "Form type `%s` expected the following parameters to be set: %s",
-                       get_class( $field ),
-                       implode( ', ', $missing )
-               ) );
-       }
-}
index db47d31..785e717 100644 (file)
@@ -124,6 +124,7 @@ class Hooks {
         *
         * @param string $event Event name
         * @param array $args  Array of parameters passed to hook functions
+        * @param string|null $deprecatedVersion Optionally, mark hook as deprecated with version number
         * @return bool True if no handler aborted the hook
         *
         * @since 1.22 A hook function is not required to return a value for
@@ -132,7 +133,7 @@ class Hooks {
         * @throws MWException
         * @throws FatalError
         */
-       public static function run( $event, array $args = array() ) {
+       public static function run( $event, array $args = array(), $deprecatedVersion = null ) {
                wfProfileIn( 'hook: ' . $event );
                foreach ( self::getHandlers( $event ) as $hook ) {
                        // Turn non-array values into an array. (Can't use casting because of objects.)
@@ -195,6 +196,12 @@ class Hooks {
                        // Profile first in case the Profiler causes errors.
                        wfProfileIn( $func );
                        set_error_handler( 'Hooks::hookErrorHandler' );
+
+                       // mark hook as deprecated, if deprecation version is specified
+                       if ( $deprecatedVersion !== null ) {
+                               wfDeprecated( "$event hook (used in $func)", $deprecatedVersion );
+                       }
+
                        try {
                                $retval = call_user_func_array( $callback, $hook_args );
                        } catch ( MWHookException $e ) {
index 6977a69..0eb6474 100644 (file)
@@ -449,8 +449,8 @@ class Html {
                        // numbers to be entered in 'type="number"' fields, allow
                        // the special case 'step="any"'.
 
-                       if ( in_array( $key, array( 'max', 'min', 'pattern', 'required' ) ) ||
-                                $key === 'step' && $value !== 'any' ) {
+                       if ( in_array( $key, array( 'max', 'min', 'pattern', 'required' ) )
+                               || $key === 'step' && $value !== 'any' ) {
                                continue;
                        }
 
index 248a76f..c06fbbc 100644 (file)
@@ -306,14 +306,10 @@ class HtmlFormatter {
                } elseif ( strpos( $selector, '#' ) === 0 ) {
                        $type = 'ID';
                        $rawName = substr( $selector, 1 );
-               } elseif ( strpos( $selector, '.' ) !== 0 &&
-                       strpos( $selector, '.' ) !== false )
-               {
+               } elseif ( strpos( $selector, '.' ) !== 0 && strpos( $selector, '.' ) !== false ) {
                        $type = 'TAG_CLASS';
                        $rawName = $selector;
-               } elseif ( strpos( $selector, '[' ) === false
-                       && strpos( $selector, ']' ) === false )
-               {
+               } elseif ( strpos( $selector, '[' ) === false && strpos( $selector, ']' ) === false ) {
                        $type = 'TAG';
                        $rawName = $selector;
                } else {
index 78c2ac7..9093c83 100644 (file)
@@ -30,7 +30,7 @@
  * @ingroup HTTP
  */
 class Http {
-       static $httpEngine = false;
+       static public $httpEngine = false;
 
        /**
         * Perform an HTTP request
@@ -130,7 +130,8 @@ class Http {
                        $domainParts = array_reverse( $domainParts );
 
                        $domain = '';
-                       for ( $i = 0; $i < count( $domainParts ); $i++ ) {
+                       $countParts = count( $domainParts );
+                       for ( $i = 0; $i < $countParts; $i++ ) {
                                $domainPart = $domainParts[$i];
                                if ( $i == 0 ) {
                                        $domain = $domainPart;
@@ -294,8 +295,11 @@ class MWHttpRequest {
                                return new CurlHttpRequest( $url, $options );
                        case 'php':
                                if ( !wfIniGetBool( 'allow_url_fopen' ) ) {
-                                       throw new MWException( __METHOD__ . ': allow_url_fopen needs to be enabled for pure PHP' .
-                                               ' http requests to work. If possible, curl should be used instead. See http://php.net/curl.' );
+                                       throw new MWException( __METHOD__ . ': allow_url_fopen ' .
+                                               'needs to be enabled for pure PHP http requests to ' .
+                                               'work. If possible, curl should be used instead. See ' .
+                                               'http://php.net/curl.'
+                                       );
                                }
                                return new PhpHttpRequest( $url, $options );
                        default:
@@ -642,12 +646,16 @@ class MWHttpRequest {
        /**
         * Returns the final URL after all redirections.
         *
-        * Relative values of the "Location" header are incorrect as stated in RFC, however they do happen and modern browsers support them.
-        * This function loops backwards through all locations in order to build the proper absolute URI - Marooned at wikia-inc.com
+        * Relative values of the "Location" header are incorrect as
+        * stated in RFC, however they do happen and modern browsers
+        * support them.  This function loops backwards through all
+        * locations in order to build the proper absolute URI - Marooned
+        * at wikia-inc.com
         *
-        * Note that the multiple Location: headers are an artifact of CURL -- they
-        * shouldn't actually get returned this way. Rewrite this when bug 29232 is
-        * taken care of (high-level redirect handling rewrite).
+        * Note that the multiple Location: headers are an artifact of
+        * CURL -- they shouldn't actually get returned this way. Rewrite
+        * this when bug 29232 is taken care of (high-level redirect
+        * handling rewrite).
         *
         * @return string
         */
@@ -678,7 +686,8 @@ class MWHttpRequest {
                                } else {
                                        $url = parse_url( $this->url );
                                        if ( isset( $url['host'] ) ) {
-                                               return $url['scheme'] . '://' . $url['host'] . $locations[$countLocations - 1];
+                                               return $url['scheme'] . '://' . $url['host'] .
+                                                       $locations[$countLocations - 1];
                                        }
                                }
                        } else {
@@ -730,7 +739,12 @@ class CurlHttpRequest extends MWHttpRequest {
 
                $this->curlOptions[CURLOPT_PROXY] = $this->proxy;
                $this->curlOptions[CURLOPT_TIMEOUT] = $this->timeout;
-               $this->curlOptions[CURLOPT_CONNECTTIMEOUT_MS] = $this->connectTimeout * 1000;
+
+               // Only supported in curl >= 7.16.2
+               if ( defined( 'CURLOPT_CONNECTTIMEOUT_MS' ) ) {
+                       $this->curlOptions[CURLOPT_CONNECTTIMEOUT_MS] = $this->connectTimeout * 1000;
+               }
+
                $this->curlOptions[CURLOPT_HTTP_VERSION] = CURL_HTTP_VERSION_1_0;
                $this->curlOptions[CURLOPT_WRITEFUNCTION] = $this->callback;
                $this->curlOptions[CURLOPT_HEADERFUNCTION] = array( $this, "readHeader" );
@@ -842,8 +856,8 @@ class PhpHttpRequest extends MWHttpRequest {
                        $this->postData = wfArrayToCgi( $this->postData );
                }
 
-               if ( $this->parsedUrl['scheme'] != 'http' &&
-                        $this->parsedUrl['scheme'] != 'https' ) {
+               if ( $this->parsedUrl['scheme'] != 'http'
+                       && $this->parsedUrl['scheme'] != 'https' ) {
                        $this->status->fatal( 'http-invalid-scheme', $this->parsedUrl['scheme'] );
                }
 
index 4ea1712..a83217d 100644 (file)
@@ -262,7 +262,9 @@ class ImagePage extends Article {
                                # @todo FIXME: Why is this using escapeId for a class?!
                                $class = Sanitizer::escapeId( $v['id'] );
                                if ( $type == 'collapsed' ) {
-                                       $class .= ' collapsable'; // sic
+                                       // Handled by mediawiki.action.view.metadata module
+                                       // and skins/common/shared.css.
+                                       $class .= ' collapsable';
                                }
                                $r .= "<tr class=\"$class\">\n";
                                $r .= "<th>{$v['name']}</th>\n";
@@ -314,7 +316,12 @@ class ImagePage extends Article {
 
                        $renderLang = $request->getVal( 'lang' );
                        if ( !is_null( $renderLang ) ) {
-                               $params['lang'] = $renderLang;
+                               $handler = $this->displayImg->getHandler();
+                               if ( $handler && $handler->validateParam( 'lang', $renderLang ) ) {
+                                       $params['lang'] = $renderLang;
+                               } else {
+                                       $renderLang = null;
+                               }
                        }
 
                        $width_orig = $this->displayImg->getWidth( $page );
@@ -377,8 +384,8 @@ class ImagePage extends Article {
                                                // since that is added to the message separately, so
                                                // it can be denoted as the current size being shown.
                                                if ( $size[0] <= $width_orig && $size[1] <= $height_orig
-                                                       && $size[0] != $width && $size[1] != $height )
-                                               {
+                                                       && $size[0] != $width && $size[1] != $height
+                                               {
                                                        $sizeLink = $this->makeSizeLink( $params, $size[0], $size[1] );
                                                        if ( $sizeLink ) {
                                                                $otherSizes[] = $sizeLink;
@@ -525,6 +532,16 @@ EOT
                                );
                        }
 
+                       $renderLangOptions = $this->displayImg->getAvailableLanguages();
+                       if ( count( $renderLangOptions ) >= 1 ) {
+                               $currentLanguage = $renderLang;
+                               $defaultLang = $this->displayImg->getDefaultRenderLanguage();
+                               if ( is_null( $currentLanguage ) ) {
+                                       $currentLanguage = $defaultLang;
+                               }
+                               $out->addHtml( $this->doRenderLangOpt( $renderLangOptions, $currentLanguage, $defaultLang ) );
+                       }
+
                        // Add cannot animate thumbnail warning
                        if ( !$this->displayImg->canAnimateThumbIfAppropriate() ) {
                                // Include the extension so wiki admins can
@@ -715,7 +732,7 @@ EOT
 
                return $dbr->select(
                        array( 'imagelinks', 'page' ),
-                       array( 'page_namespace', 'page_title', 'page_is_redirect', 'il_to' ),
+                       array( 'page_namespace', 'page_title', 'il_to' ),
                        array( 'il_to' => $target, 'il_from = page_id' ),
                        __METHOD__,
                        array( 'LIMIT' => $limit + 1, 'ORDER BY' => 'il_from', )
@@ -726,13 +743,19 @@ EOT
                $limit = 100;
 
                $out = $this->getContext()->getOutput();
-               $res = $this->queryImageLinks( $this->getTitle()->getDBkey(), $limit + 1 );
+
                $rows = array();
                $redirects = array();
+               foreach ( $this->getTitle()->getRedirectsHere( NS_FILE ) as $redir ) {
+                       $redirects[$redir->getDBkey()] = array();
+                       $rows[] = (object)array(
+                               'page_namespace' => NS_FILE,
+                               'page_title' => $redir->getDBkey(),
+                       );
+               }
+
+               $res = $this->queryImageLinks( $this->getTitle()->getDBkey(), $limit + 1 );
                foreach ( $res as $row ) {
-                       if ( $row->page_is_redirect ) {
-                               $redirects[$row->page_title] = array();
-                       }
                        $rows[] = $row;
                }
                $count = count( $rows );
@@ -947,6 +970,72 @@ EOT
                        ? $wgImageLimits[$option]
                        : array( 800, 600 ); // if nothing is set, fallback to a hardcoded default
        }
+
+       /**
+        * Output a drop-down box for language options for the file
+        *
+        * @param Array $langChoices Array of string language codes
+        * @param String $curLang Language code file is being viewed in.
+        * @param String $defaultLang Language code that image is rendered in by default
+        * @return String HTML to insert underneath image.
+        */
+       protected function doRenderLangOpt( array $langChoices, $curLang, $defaultLang ) {
+               global $wgScript;
+               sort( $langChoices );
+               $curLang = wfBCP47( $curLang );
+               $defaultLang = wfBCP47( $defaultLang );
+               $opts = '';
+               $haveCurrentLang = false;
+               $haveDefaultLang = false;
+
+               // We make a list of all the language choices in the file.
+               // Additionally if the default language to render this file
+               // is not included as being in this file (for example, in svgs
+               // usually the fallback content is the english content) also
+               // include a choice for that. Last of all, if we're viewing
+               // the file in a language not on the list, add it as a choice.
+               foreach ( $langChoices as $lang ) {
+                       $code = wfBCP47( $lang );
+                       $name = Language::fetchLanguageName( $code, $this->getContext()->getLanguage()->getCode() );
+                       if ( $name !== '' ) {
+                               $display = wfMessage( 'img-lang-opt', $code, $name )->text();
+                       } else {
+                               $display = $code;
+                       }
+                       $opts .= "\n" . Xml::option( $display, $code, $curLang === $code );
+                       if ( $curLang === $code ) {
+                               $haveCurrentLang = true;
+                       }
+                       if ( $defaultLang === $code ) {
+                               $haveDefaultLang = true;
+                       }
+               }
+               if ( !$haveDefaultLang ) {
+                       // Its hard to know if the content is really in the default language, or
+                       // if its just unmarked content that could be in any language.
+                       $opts = Xml::option( wfMessage( 'img-lang-default' )->text(), $defaultLang, $defaultLang === $curLang ) . $opts;
+               }
+               if ( !$haveCurrentLang && $defaultLang !== $curLang ) {
+                       $name = Language::fetchLanguageName( $curLang, $this->getContext()->getLanguage()->getCode() );
+                       if ( $name !== '' ) {
+                               $display = wfMessage( 'img-lang-opt', $curLang, $name )->text();
+                       } else {
+                               $display = $curLang;
+                       }
+                       $opts = Xml::option( $display, $curLang, true ) . $opts;
+               }
+
+               $select = Html::rawElement( 'select', array( 'id' => 'mw-imglangselector', 'name' => 'lang' ), $opts );
+               $submit = Xml::submitButton( wfMessage( 'img-lang-go' )->text() );
+
+               $formContents = wfMessage( 'img-lang-info' )->rawParams( $select, $submit )->parse()
+                       . Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() );
+
+               $langSelectLine = Html::rawElement( 'div', array( 'id' => 'mw-imglangselector-line' ),
+                       Html::rawElement( 'form', array( 'action' => $wgScript ), $formContents )
+               );
+               return $langSelectLine;
+       }
 }
 
 /**
@@ -1203,8 +1292,8 @@ class ImageHistoryList extends ContextSource {
                $lang = $this->getLanguage();
                $user = $this->getUser();
                if ( $file->allowInlineDisplay() && $file->userCan( File::DELETED_FILE, $user )
-                       && !$file->isDeleted( File::DELETED_FILE ) )
-               {
+                       && !$file->isDeleted( File::DELETED_FILE )
+               {
                        $params = array(
                                'width' => '120',
                                'height' => '120',
index 8b7af02..721b94b 100644 (file)
@@ -1717,7 +1717,7 @@ class ImportStreamSource {
                        return Status::newFatal( 'import-noarticle' );
                }
                $link = Title::newFromText( "$interwiki:Special:Export/$page" );
-               if ( is_null( $link ) || $link->getInterwiki() == '' ) {
+               if ( is_null( $link ) || !$link->isExternal() ) {
                        return Status::newFatal( 'importbadinterwiki' );
                } else {
                        $params = array();
index d552c69..48d5cd8 100644 (file)
@@ -84,16 +84,28 @@ class LinkFilter {
         *
         * Asterisks in any other location are considered invalid.
         *
-        * @param string $filterEntry domainparts
-        * @param $prot        String: protocol
+        * This function does the same as wfMakeUrlIndexes(), except it also takes care
+        * of adding wildcards
+        *
+        * @param String $filterEntry domainparts
+        * @param String $protocol protocol (default http://)
         * @return Array to be passed to DatabaseBase::buildLike() or false on error
         */
-       public static function makeLikeArray( $filterEntry, $prot = 'http://' ) {
+       public static function makeLikeArray( $filterEntry, $protocol = 'http://' ) {
                $db = wfGetDB( DB_MASTER );
-               if ( substr( $filterEntry, 0, 2 ) == '*.' ) {
+
+               $target = $protocol . $filterEntry;
+               $bits = wfParseUrl( $target );
+
+               if ( $bits == false ) {
+                       // Unknown protocol?
+                       return false;
+               }
+
+               if ( substr( $bits['host'], 0, 2 ) == '*.' ) {
                        $subdomains = true;
-                       $filterEntry = substr( $filterEntry, 2 );
-                       if ( $filterEntry == '' ) {
+                       $bits['host'] = substr( $bits['host'], 2 );
+                       if ( $bits['host'] == '' ) {
                                // We don't want to make a clause that will match everything,
                                // that could be dangerous
                                return false;
@@ -101,52 +113,63 @@ class LinkFilter {
                } else {
                        $subdomains = false;
                }
-               // No stray asterisks, that could cause confusion
-               // It's not simple or efficient to handle it properly so we don't
-               // handle it at all.
-               if ( strpos( $filterEntry, '*' ) !== false ) {
-                       return false;
-               }
-               $slash = strpos( $filterEntry, '/' );
-               if ( $slash !== false ) {
-                       $path = substr( $filterEntry, $slash );
-                       $host = substr( $filterEntry, 0, $slash );
-               } else {
-                       $path = '/';
-                       $host = $filterEntry;
-               }
+
                // Reverse the labels in the hostname, convert to lower case
                // For emails reverse domainpart only
-               if ( $prot == 'mailto:' && strpos( $host, '@' ) ) {
+               if ( $bits['scheme'] === 'mailto' && strpos( $bits['host'], '@' ) ) {
                        // complete email address
-                       $mailparts = explode( '@', $host );
+                       $mailparts = explode( '@', $bits['host'] );
                        $domainpart = strtolower( implode( '.', array_reverse( explode( '.', $mailparts[1] ) ) ) );
-                       $host = $domainpart . '@' . $mailparts[0];
-                       $like = array( "$prot$host", $db->anyString() );
-               } elseif ( $prot == 'mailto:' ) {
-                       // domainpart of email address only. do not add '.'
-                       $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );
-                       $like = array( "$prot$host", $db->anyString() );
+                       $bits['host'] = $domainpart . '@' . $mailparts[0];
+               } elseif ( $bits['scheme'] === 'mailto' ) {
+                       // domainpart of email address only, do not add '.'
+                       $bits['host'] = strtolower( implode( '.', array_reverse( explode( '.', $bits['host'] ) ) ) );
                } else {
-                       $host = strtolower( implode( '.', array_reverse( explode( '.', $host ) ) ) );
-                       if ( substr( $host, -1, 1 ) !== '.' ) {
-                               $host .= '.';
+                       $bits['host'] = strtolower( implode( '.', array_reverse( explode( '.', $bits['host'] ) ) ) );
+                       if ( substr( $bits['host'], -1, 1 ) !== '.' ) {
+                               $bits['host'] .= '.';
                        }
-                       $like = array( "$prot$host" );
+               }
 
-                       if ( $subdomains ) {
-                               $like[] = $db->anyString();
-                       }
-                       if ( !$subdomains || $path !== '/' ) {
-                               $like[] = $path;
-                               $like[] = $db->anyString();
+               $like[] = $bits['scheme'] . $bits['delimiter'] . $bits['host'];
+
+               if ( $subdomains ) {
+                       $like[] = $db->anyString();
+               }
+
+               if ( isset( $bits['port'] ) ) {
+                       $like[] = ':' . $bits['port'];
+               }
+               if ( isset( $bits['path'] ) ) {
+                       $like[] = $bits['path'];
+               } elseif ( !$subdomains ) {
+                       $like[] = '/';
+               }
+               if ( isset( $bits['query'] ) ) {
+                       $like[] = '?' . $bits['query'];
+               }
+               if ( isset( $bits['fragment'] ) ) {
+                       $like[] = '#' . $bits['fragment'];
+               }
+
+               // Check for stray asterisks: asterisk only allowed at the start of the domain
+               foreach ( $like as $likepart ) {
+                       if ( !( $likepart instanceof LikeMatch ) && strpos( $likepart, '*' ) !== false ) {
+                               return false;
                        }
                }
+
+               if ( !( $like[count( $like ) - 1] instanceof LikeMatch ) ) {
+                       // Add wildcard at the end if there isn't one already
+                       $like[] = $db->anyString();
+               }
+
                return $like;
        }
 
        /**
-        * Filters an array returned by makeLikeArray(), removing everything past first pattern placeholder.
+        * Filters an array returned by makeLikeArray(), removing everything past first
+        * pattern placeholder.
         *
         * @param array $arr array to filter
         * @return array filtered array
index 895f0f2..5eda642 100644 (file)
@@ -159,9 +159,6 @@ class Linker {
         * link() replaces the old functions in the makeLink() family.
         *
         * @since 1.18 Method exists since 1.16 as non-static, made static in 1.18.
-        * You can call it using this if you want to keep compat with these:
-        * $linker = class_exists( 'DummyLinker' ) ? new DummyLinker() : new Linker();
-        * $linker->link( ... );
         *
         * @param $target        Title  Can currently only be a Title, but this may
         *   change to support Images, literal URLs, etc.
@@ -264,8 +261,8 @@ class Linker {
         */
        public static function linkKnown(
                $target, $html = null, $customAttribs = array(),
-               $query = array(), $options = array( 'known', 'noclasses' ) )
-       {
+               $query = array(), $options = array( 'known', 'noclasses' )
+       {
                return self::link( $target, $html, $customAttribs, $query, $options );
        }
 
@@ -393,29 +390,6 @@ class Linker {
                return htmlspecialchars( $target->getPrefixedText() );
        }
 
-       /**
-        * Generate either a normal exists-style link or a stub link, depending
-        * on the given page size.
-        *
-        * @param $size Integer
-        * @param $nt Title object.
-        * @param $text String
-        * @param $query String
-        * @param $trail String
-        * @param $prefix String
-        * @return string HTML of link
-        * @deprecated since 1.17
-        */
-       static function makeSizeLinkObj( $size, $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               global $wgUser;
-               wfDeprecated( __METHOD__, '1.17' );
-
-               $threshold = $wgUser->getStubThreshold();
-               $colour = ( $size < $threshold ) ? 'stub' : '';
-               // @todo FIXME: Replace deprecated makeColouredLinkObj by link()
-               return self::makeColouredLinkObj( $nt, $colour, $text, $query, $trail, $prefix );
-       }
-
        /**
         * Make appropriate markup for a link to the current article. This is currently rendered
         * as the bold link text. The calling sequence is the same as the other make*LinkObj static functions,
@@ -562,8 +536,8 @@ class Linker {
         * @return String: HTML for an image, with links, wrappers, etc.
         */
        public static function makeImageLink( /*Parser*/ $parser, Title $title, $file, $frameParams = array(),
-               $handlerParams = array(), $time = false, $query = "", $widthOption = null )
-       {
+               $handlerParams = array(), $time = false, $query = "", $widthOption = null
+       {
                $res = null;
                $dummy = new DummyLinker;
                if ( !wfRunHooks( 'ImageBeforeProduceHTML', array( &$dummy, &$title,
@@ -681,8 +655,7 @@ class Linker {
                                'valign' => isset( $fp['valign'] ) ? $fp['valign'] : false,
                                'img-class' => $fp['class'] );
                        if ( isset( $fp['border'] ) ) {
-                               // TODO: BUG? Both values are identical
-                               $params['img-class'] .= ( $params['img-class'] !== '' ) ? ' thumbborder' : 'thumbborder';
+                               $params['img-class'] .= ( $params['img-class'] !== '' ? ' ' : '' ) . 'thumbborder';
                        }
                        $params = self::getImageLinkMTOParams( $fp, $query, $parser ) + $params;
 
@@ -750,8 +723,8 @@ class Linker {
         * @return mixed
         */
        public static function makeThumbLinkObj( Title $title, $file, $label = '', $alt,
-               $align = 'right', $params = array(), $framed = false, $manualthumb = "" )
-       {
+               $align = 'right', $params = array(), $framed = false, $manualthumb = ""
+       {
                $frameParams = array(
                        'alt' => $alt,
                        'caption' => $label,
@@ -776,8 +749,8 @@ class Linker {
         * @return mixed
         */
        public static function makeThumbLink2( Title $title, $file, $frameParams = array(),
-               $handlerParams = array(), $time = false, $query = "" )
-       {
+               $handlerParams = array(), $time = false, $query = ""
+       {
                global $wgStylePath, $wgContLang;
                $exists = $file && $file->exists();
 
@@ -850,10 +823,10 @@ class Linker {
                if ( $page ) {
                        $url = wfAppendQuery( $url, array( 'page' => $page ) );
                }
-               if ( $manualthumb &&
-                    !isset( $fp['link-title'] ) &&
-                    !isset( $fp['link-url'] ) &&
-                    !isset( $fp['no-link'] ) ) {
+               if ( $manualthumb
+                       && !isset( $fp['link-title'] )
+                       && !isset( $fp['link-url'] )
+                       && !isset( $fp['no-link'] ) ) {
                        $fp['link-url'] = $url;
                }
 
@@ -871,7 +844,7 @@ class Linker {
                        $params = array(
                                'alt' => $fp['alt'],
                                'title' => $fp['title'],
-                               'img-class' => ( isset( $fp['class'] ) && $fp['class'] !== '' ) ? $fp['class'] . ' thumbimage' : 'thumbimage'
+                               'img-class' => ( isset( $fp['class'] ) && $fp['class'] !== '' ? $fp['class'] . ' ' : '' ) . 'thumbimage'
                        );
                        $params = self::getImageLinkMTOParams( $fp, $query ) + $params;
                        $s .= $thumb->toHtml( $params );
@@ -899,7 +872,7 @@ class Linker {
         * applicable.
         *
         * @param File $file
-        * @param MediaOutput $thumb
+        * @param MediaTransformOutput $thumb
         * @param array $hp image parameters
         */
        public static function processResponsiveImages( $file, $thumb, $hp ) {
@@ -916,11 +889,11 @@ class Linker {
 
                        $thumb15 = $file->transform( $hp15 );
                        $thumb20 = $file->transform( $hp20 );
-                       if ( $thumb15->url !== $thumb->url ) {
-                               $thumb->responsiveUrls['1.5'] = $thumb15->url;
+                       if ( $thumb15 && $thumb15->getUrl() !== $thumb->getUrl() ) {
+                               $thumb->responsiveUrls['1.5'] = $thumb15->getUrl();
                        }
-                       if ( $thumb20->url !== $thumb->url ) {
-                               $thumb->responsiveUrls['2'] = $thumb20->url;
+                       if ( $thumb20 && $thumb20->getUrl() !== $thumb->getUrl() ) {
+                               $thumb->responsiveUrls['2'] = $thumb20->getUrl();
                        }
                }
        }
@@ -1470,9 +1443,9 @@ class Linker {
 
                        $target = Title::newFromText( $linkTarget );
                        if ( $target ) {
-                               if ( $target->getText() == '' && $target->getInterwiki() === ''
-                                       && !self::$commentLocal && self::$commentContextTitle )
-                               {
+                               if ( $target->getText() == '' && !$target->isExternal()
+                                       && !self::$commentLocal && self::$commentContextTitle
+                               {
                                        $newTarget = clone ( self::$commentContextTitle );
                                        $newTarget->setFragment( '#' . $target->getFragment() );
                                        $target = $newTarget;
@@ -2161,7 +2134,8 @@ class Linker {
                }
 
                wfProfileOut( __METHOD__ );
-               return self::$accesskeycache[$name] = $accesskey;
+               self::$accesskeycache[$name] = $accesskey;
+               return self::$accesskeycache[$name];
        }
 
        /**
@@ -2244,32 +2218,6 @@ class Linker {
 
        /* Deprecated methods */
 
-       /**
-        * @deprecated since 1.16 Use link()
-        *
-        * This function is a shortcut to makeBrokenLinkObj(Title::newFromText($title),...). Do not call
-        * it if you already have a title object handy. See makeBrokenLinkObj for further documentation.
-        *
-        * @param string $title The text of the title
-        * @param string $text Link text
-        * @param string $query Optional query part
-        * @param string $trail Optional trail. Alphabetic characters at the start of this string will
-        *               be included in the link text. Other characters will be appended after
-        *               the end of the link.
-        * @return string
-        */
-       static function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
-               wfDeprecated( __METHOD__, '1.16' );
-
-               $nt = Title::newFromText( $title );
-               if ( $nt instanceof Title ) {
-                       return self::makeBrokenLinkObj( $nt, $text, $query, $trail );
-               } else {
-                       wfDebug( 'Invalid title passed to self::makeBrokenLink(): "' . $title . "\"\n" );
-                       return $text == '' ? $title : $text;
-               }
-       }
-
        /**
         * @deprecated since 1.16 Use link(); warnings since 1.21
         *
@@ -2343,63 +2291,6 @@ class Linker {
                return $ret;
        }
 
-       /**
-        * @deprecated since 1.16 Use link()
-        *
-        * Make a red link to the edit page of a given title.
-        *
-        * @param $title Title object of the target page
-        * @param $text  String: Link text
-        * @param string $query Optional query part
-        * @param string $trail Optional trail. Alphabetic characters at the start of this string will
-        *                      be included in the link text. Other characters will be appended after
-        *                      the end of the link.
-        * @param string $prefix Optional prefix
-        * @return string
-        */
-       static function makeBrokenLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               wfDeprecated( __METHOD__, '1.16' );
-
-               wfProfileIn( __METHOD__ );
-
-               list( $inside, $trail ) = self::splitTrail( $trail );
-               if ( $text === '' ) {
-                       $text = self::linkText( $title );
-               }
-
-               $ret = self::link( $title, "$prefix$text$inside", array(),
-                       wfCgiToArray( $query ), 'broken' ) . $trail;
-
-               wfProfileOut( __METHOD__ );
-               return $ret;
-       }
-
-       /**
-        * @deprecated since 1.16 Use link()
-        *
-        * Make a coloured link.
-        *
-        * @param $nt Title object of the target page
-        * @param $colour Integer: colour of the link
-        * @param $text   String:  link text
-        * @param $query  String:  optional query part
-        * @param $trail  String:  optional trail. Alphabetic characters at the start of this string will
-        *                      be included in the link text. Other characters will be appended after
-        *                      the end of the link.
-        * @param string $prefix Optional prefix
-        * @return string
-        */
-       static function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
-               wfDeprecated( __METHOD__, '1.16' );
-
-               if ( $colour != '' ) {
-                       $style = self::getInternalLinkAttributesObj( $nt, $text, $colour );
-               } else {
-                       $style = '';
-               }
-               return self::makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
-       }
-
        /**
         * Returns the attributes for the tooltip and access key.
         * @return array
index 427a1ad..377d406 100644 (file)
@@ -65,6 +65,7 @@ class MagicWord {
        var $mId, $mSynonyms, $mCaseSensitive;
        var $mRegex = '';
        var $mRegexStart = '';
+       var $mRegexStartToEnd = '';
        var $mBaseRegex = '';
        var $mVariableRegex = '';
        var $mVariableStartToEndRegex = '';
@@ -149,6 +150,7 @@ class MagicWord {
                'contentlanguage',
                'numberofadmins',
                'numberofviews',
+               'cascadingsources',
        );
 
        /* Array of caching hints for ParserCache */
@@ -338,6 +340,7 @@ class MagicWord {
                $case = $this->mCaseSensitive ? '' : 'iu';
                $this->mRegex = "/{$this->mBaseRegex}/{$case}";
                $this->mRegexStart = "/^(?:{$this->mBaseRegex})/{$case}";
+               $this->mRegexStartToEnd = "/^(?:{$this->mBaseRegex})$/{$case}";
                $this->mVariableRegex = str_replace( "\\$1", "(.*?)", $this->mRegex );
                $this->mVariableStartToEndRegex = str_replace( "\\$1", "(.*?)",
                        "/^(?:{$this->mBaseRegex})$/{$case}" );
@@ -404,6 +407,19 @@ class MagicWord {
                return $this->mRegexStart;
        }
 
+       /**
+        * Gets a regex matching the word from start to end of a string
+        *
+        * @return string
+        * @since 1.23
+        */
+       function getRegexStartToEnd() {
+               if ( $this->mRegexStartToEnd == '' ) {
+                       $this->initRegex();
+               }
+               return $this->mRegexStartToEnd;
+       }
+
        /**
         * regex without the slashes and what not
         *
@@ -438,6 +454,18 @@ class MagicWord {
                return (bool)preg_match( $this->getRegexStart(), $text );
        }
 
+       /**
+        * Returns true if the text matched the word
+        *
+        * @param $text string
+        *
+        * @return bool
+        * @since 1.23
+        */
+       function matchStartToEnd( $text ) {
+               return (bool)preg_match( $this->getRegexStartToEnd(), $text );
+       }
+
        /**
         * Returns NULL if there's no match, the value of $1 otherwise
         * The return code is the matched string, if there's no variable
@@ -709,7 +737,9 @@ class MagicWordArray {
                                $magic = MagicWord::get( $name );
                                $case = intval( $magic->isCaseSensitive() );
                                foreach ( $magic->getSynonyms() as $i => $syn ) {
-                                       $group = "(?P<{$i}_{$name}>" . preg_quote( $syn, '/' ) . ')';
+                                       // Group name must start with a non-digit in PCRE 8.34+
+                                       $it = strtr( $i, '0123456789', 'abcdefghij' );
+                                       $group = "(?P<{$it}_{$name}>" . preg_quote( $syn, '/' ) . ')';
                                        if ( $this->baseRegex[$case] === '' ) {
                                                $this->baseRegex[$case] = $group;
                                        } else {
index 57c6264..dd22844 100644 (file)
@@ -817,10 +817,12 @@ class Message {
                        } elseif ( isset( $param['bitrate'] ) ) {
                                return array( 'before', $this->language->formatBitrate( $param['bitrate'] ) );
                        } else {
-                               trigger_error(
-                                       "Invalid message parameter: " . htmlspecialchars( serialize( $param ) ),
-                                       E_USER_WARNING
-                               );
+                               $warning = 'Invalid parameter for message "' . $this->getKey() . '": ' .
+                                       htmlspecialchars( serialize( $param ) );
+                               trigger_error( $warning, E_USER_WARNING );
+                               $e = new Exception;
+                               wfDebugLog( 'Bug58676', $warning . "\n" . $e->getTraceAsString() );
+
                                return array( 'before', '[INVALID]' );
                        }
                } elseif ( $param instanceof Message ) {
@@ -841,7 +843,7 @@ class Message {
         */
        protected function parseText( $string ) {
                $out = MessageCache::singleton()->parse( $string, $this->title, /*linestart*/true, $this->interface, $this->language );
-               return is_object( $out ) ? $out->getText() : $out;
+               return $out instanceof ParserOutput ? $out->getText() : $out;
        }
 
        /**
index 5c8e63b..ce585ce 100644 (file)
@@ -433,4 +433,74 @@ class MWNamespace {
                        ? $wgNamespaceContentModels[$index]
                        : null;
        }
+
+       /**
+        * Determine which restriction levels it makes sense to use in a namespace,
+        * optionally filtered by a user's rights.
+        *
+        * @since 1.23
+        * @param int $index Index to check
+        * @param User $user User to check
+        * @return array
+        */
+       public static function getRestrictionLevels( $index, User $user = null ) {
+               global $wgNamespaceProtection, $wgRestrictionLevels;
+
+               if ( !isset( $wgNamespaceProtection[$index] ) ) {
+                       // All levels are valid if there's no namespace restriction.
+                       // But still filter by user, if necessary
+                       $levels = $wgRestrictionLevels;
+                       if ( $user ) {
+                               $levels = array_values( array_filter( $levels, function ( $level ) use ( $user ) {
+                                       $right = $level;
+                                       if ( $right == 'sysop' ) {
+                                               $right = 'editprotected'; // BC
+                                       }
+                                       if ( $right == 'autoconfirmed' ) {
+                                               $right = 'editsemiprotected'; // BC
+                                       }
+                                       return ( $right == '' || $user->isAllowed( $right ) );
+                               } ) );
+                       }
+                       return $levels;
+               }
+
+               // First, get the list of groups that can edit this namespace.
+               $namespaceGroups = array();
+               $combine = 'array_merge';
+               foreach ( (array)$wgNamespaceProtection[$index] as $right ) {
+                       if ( $right == 'sysop' ) {
+                               $right = 'editprotected'; // BC
+                       }
+                       if ( $right == 'autoconfirmed' ) {
+                               $right = 'editsemiprotected'; // BC
+                       }
+                       if ( $right != '' ) {
+                               $namespaceGroups = call_user_func( $combine, $namespaceGroups,
+                                       User::getGroupsWithPermission( $right ) );
+                               $combine = 'array_intersect';
+                       }
+               }
+
+               // Now, keep only those restriction levels where there is at least one
+               // group that can edit the namespace but would be blocked by the
+               // restriction.
+               $usableLevels = array( '' );
+               foreach ( $wgRestrictionLevels as $level ) {
+                       $right = $level;
+                       if ( $right == 'sysop' ) {
+                               $right = 'editprotected'; // BC
+                       }
+                       if ( $right == 'autoconfirmed' ) {
+                               $right = 'editsemiprotected'; // BC
+                       }
+                       if ( $right != '' && ( !$user || $user->isAllowed( $right ) ) &&
+                               array_diff( $namespaceGroups, User::getGroupsWithPermission( $right ) )
+                       ) {
+                               $usableLevels[] = $level;
+                       }
+               }
+
+               return $usableLevels;
+       }
 }
index f1c7d5b..9866e2c 100644 (file)
@@ -447,8 +447,8 @@ class OutputPage extends ContextSource {
                        if ( $module instanceof ResourceLoaderModule
                                && $module->getOrigin() <= $this->getAllowedModules( $type )
                                && ( is_null( $position ) || $module->getPosition() == $position )
-                               && ( !$this->mTarget || in_array( $this->mTarget, $module->getTargets() ) ) )
-                       {
+                               && ( !$this->mTarget || in_array( $this->mTarget, $module->getTargets() ) )
+                       {
                                $filteredModules[] = $val;
                        }
                }
@@ -687,10 +687,6 @@ class OutputPage extends ContextSource {
                        wfDebug( __METHOD__ . ": CACHE DISABLED\n", false );
                        return false;
                }
-               if ( $this->getUser()->getOption( 'nocache' ) ) {
-                       wfDebug( __METHOD__ . ": USER DISABLED CACHE\n", false );
-                       return false;
-               }
 
                $timestamp = wfTimestamp( TS_MW, $timestamp );
                $modifiedTimes = array(
@@ -2488,7 +2484,7 @@ $templates
                $userdir = $this->getLanguage()->getDir();
                $sitedir = $wgContLang->getDir();
 
-               $ret = Html::htmlHeader( array( 'lang' => $this->getLanguage()->getHtmlCode(), 'dir' => $userdir, 'class' => 'client-nojs' ) );
+               $ret = Html::htmlHeader( $sk->getHtmlElementAttributes() );
 
                if ( $this->getHTMLTitle() == '' ) {
                        $this->setHTMLTitle( $this->msg( 'pagetitle', $this->getPageTitle() )->inContentLanguage() );
@@ -2514,6 +2510,10 @@ $templates
 
                $ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
 
+               // Avoid Internet Explorer "compatibility view", so that
+               // jQuery can work correctly.
+               $ret .= Html::element( 'meta', array( 'http-equiv' => 'X-UA-Compatible', 'content' => 'IE=EDGE' ) );
+
                $ret .= implode( "\n", array(
                        $this->getHeadLinks(),
                        $this->buildCssLinks(),
index 4a14c7e..6a10e88 100644 (file)
@@ -267,6 +267,15 @@ abstract class IndexPager extends ContextSource implements Pager {
                }
        }
 
+       /**
+        * Get the current limit
+        *
+        * @return int
+        */
+       function getLimit() {
+               return $this->mLimit;
+       }
+
        /**
         * Set whether a row matching exactly the offset should be also included
         * in the result or not. By default this is not the case, but when the
@@ -650,8 +659,8 @@ abstract class IndexPager extends ContextSource implements Pager {
         * representing the result row $row. Rows will be concatenated and
         * returned by getBody()
         *
-        * @param $row Object: database row
-        * @return String
+        * @param array|stdClass $row Database row
+        * @return string
         */
        abstract function formatRow( $row );
 
index c9caf4f..5413f30 100644 (file)
@@ -403,7 +403,12 @@ class Preferences {
                }
 
                // show a preview of the old signature first
-               $oldsigWikiText = $wgParser->preSaveTransform( "~~~", $context->getTitle(), $user, ParserOptions::newFromContext( $context ) );
+               $oldsigWikiText = $wgParser->preSaveTransform(
+                       '~~~',
+                       $context->getTitle(),
+                       $user,
+                       ParserOptions::newFromContext( $context )
+               );
                $oldsigHTML = $context->getOutput()->parseInline( $oldsigWikiText, true, true );
                $defaultPreferences['oldsig'] = array(
                        'type' => 'info',
@@ -423,7 +428,8 @@ class Preferences {
                $defaultPreferences['fancysig'] = array(
                        'type' => 'toggle',
                        'label-message' => 'tog-fancysig',
-                       'help-message' => 'prefs-help-signature', // show general help about signature at the bottom of the section
+                       // show general help about signature at the bottom of the section
+                       'help-message' => 'prefs-help-signature',
                        'section' => 'personal/signature'
                );
 
@@ -682,8 +688,8 @@ class Preferences {
                        $minDiff = $tz[1];
                        $tzSetting = sprintf( '%+03d:%02d', floor( $minDiff / 60 ), abs( $minDiff ) % 60 );
                } elseif ( count( $tz ) > 1 && $tz[0] == 'ZoneInfo' &&
-                       !in_array( $tzOffset, HTMLFormField::flattenOptions( $tzOptions ) ) )
-               {
+                       !in_array( $tzOffset, HTMLFormField::flattenOptions( $tzOptions ) )
+               {
                        # Timezone offset can vary with DST
                        $userTZ = timezone_open( $tz[2] );
                        if ( $userTZ !== false ) {
@@ -742,7 +748,7 @@ class Preferences {
                }
 
                $defaultPreferences['stubthreshold'] = array(
-                       'type' => 'selectorother',
+                       'type' => 'select',
                        'section' => 'rendering/advancedrendering',
                        'options' => $stubThresholdOptions,
                        'size' => 20,
@@ -756,11 +762,6 @@ class Preferences {
                                'label-message' => 'tog-showtoc',
                        );
                }
-               $defaultPreferences['nocache'] = array(
-                       'type' => 'toggle',
-                       'label-message' => 'tog-nocache',
-                       'section' => 'rendering/advancedrendering',
-               );
                $defaultPreferences['showhiddencats'] = array(
                        'type' => 'toggle',
                        'section' => 'rendering/advancedrendering',
@@ -1046,14 +1047,6 @@ class Preferences {
        static function searchPreferences( $user, IContextSource $context, &$defaultPreferences ) {
                global $wgContLang, $wgVectorUseSimpleSearch;
 
-               ## Search #####################################
-               $defaultPreferences['searchlimit'] = array(
-                       'type' => 'int',
-                       'label-message' => 'resultsperpage',
-                       'section' => 'searchoptions/displaysearchoptions',
-                       'min' => 0,
-               );
-
                if ( $wgVectorUseSimpleSearch ) {
                        $defaultPreferences['vector-simplesearch'] = array(
                                'type' => 'toggle',
@@ -1062,12 +1055,6 @@ class Preferences {
                        );
                }
 
-               $defaultPreferences['disablesuggest'] = array(
-                       'type' => 'toggle',
-                       'label-message' => 'mwsuggest-disable',
-                       'section' => 'searchoptions/displaysearchoptions',
-               );
-
                $defaultPreferences['searcheverything'] = array(
                        'type' => 'toggle',
                        'label-message' => 'searcheverything-enable',
@@ -1146,7 +1133,10 @@ class Preferences {
                                $linkTools[] = Linker::link( $jsPage, $context->msg( 'prefs-custom-js' )->escaped() );
                        }
 
-                       $display = $sn . ' ' . $context->msg( 'parentheses', $context->getLanguage()->pipeList( $linkTools ) )->text();
+                       $display = $sn . ' ' . $context->msg(
+                               'parentheses',
+                               $context->getLanguage()->pipeList( $linkTools )
+                       )->text();
                        $ret[$display] = $skinkey;
                }
 
@@ -1237,8 +1227,13 @@ class Preferences {
                                $form->msg( 'badsiglength' )->numParams( $wgMaxSigChars )->text() );
                } elseif ( isset( $alldata['fancysig'] ) &&
                                $alldata['fancysig'] &&
-                               false === $wgParser->validateSig( $signature ) ) {
-                       return Xml::element( 'span', array( 'class' => 'error' ), $form->msg( 'badsig' )->text() );
+                               $wgParser->validateSig( $signature ) === false
+               ) {
+                       return Xml::element(
+                               'span',
+                               array( 'class' => 'error' ),
+                               $form->msg( 'badsig' )->text()
+                       );
                } else {
                        return true;
                }
@@ -1269,7 +1264,12 @@ class Preferences {
         * @param array $remove array of items to remove
         * @return HtmlForm
         */
-       static function getFormObject( $user, IContextSource $context, $formClass = 'PreferencesForm', array $remove = array() ) {
+       static function getFormObject(
+               $user,
+               IContextSource $context,
+               $formClass = 'PreferencesForm',
+               array $remove = array()
+       ) {
                $formDescriptor = Preferences::getPreferences( $user, $context );
                if ( count( $remove ) ) {
                        $removeKeys = array_flip( $remove );
@@ -1310,9 +1310,16 @@ class Preferences {
                $timestamp = MWTimestamp::getLocalInstance();
                // Check that $wgLocalTZoffset is the same as the local time zone offset
                if ( $wgLocalTZoffset == $timestamp->format( 'Z' ) / 60 ) {
-                       $server_tz_msg = $context->msg( 'timezoneuseserverdefault', $timestamp->getTimezone()->getName() )->text();
+                       $server_tz_msg = $context->msg(
+                               'timezoneuseserverdefault',
+                               $timestamp->getTimezone()->getName()
+                       )->text();
                } else {
-                       $tzstring = sprintf( '%+03d:%02d', floor( $wgLocalTZoffset / 60 ), abs( $wgLocalTZoffset ) % 60 );
+                       $tzstring = sprintf(
+                               '%+03d:%02d',
+                               floor( $wgLocalTZoffset / 60 ),
+                               abs( $wgLocalTZoffset ) % 60
+                       );
                        $server_tz_msg = $context->msg( 'timezoneuseserverdefault', $tzstring )->text();
                }
                $opt[$server_tz_msg] = "System|$wgLocalTZoffset";
index 3c464c5..780cae5 100644 (file)
@@ -44,7 +44,7 @@ class PrefixSearch {
 
                // Find a Title which is not an interwiki and is in NS_MAIN
                $title = Title::newFromText( $search );
-               if ( $title && $title->getInterwiki() == '' ) {
+               if ( $title && !$title->isExternal() ) {
                        $ns = array( $title->getNamespace() );
                        if ( $ns[0] == NS_MAIN ) {
                                $ns = $namespaces; // no explicit prefix, use default namespaces
@@ -57,7 +57,7 @@ class PrefixSearch {
                $title = Title::newFromText( $search . 'Dummy' );
                if ( $title && $title->getText() == 'Dummy'
                        && $title->getNamespace() != NS_MAIN
-                       && $title->getInterwiki() == '' ) {
+                       && !$title->isExternal() ) {
                        return self::searchBackend(
                                array( $title->getNamespace() ), '', $limit );
                }
index f10317a..d6cc8a3 100644 (file)
@@ -83,8 +83,8 @@ class ProtectionForm {
         */
        function loadData() {
                global $wgRequest, $wgUser;
-               global $wgRestrictionLevels;
 
+               $levels = MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace(), $wgUser );
                $this->mCascade = $this->mTitle->areRestrictionsCascading();
 
                $this->mReason = $wgRequest->getText( 'mwProtect-reason' );
@@ -132,21 +132,7 @@ class ProtectionForm {
                        }
 
                        $val = $wgRequest->getVal( "mwProtect-level-$action" );
-                       if ( isset( $val ) && in_array( $val, $wgRestrictionLevels ) ) {
-                               // Prevent users from setting levels that they cannot later unset
-                               if ( $val == 'sysop' ) {
-                                       // Special case, rewrite sysop to editprotected
-                                       if ( !$wgUser->isAllowed( 'editprotected' ) ) {
-                                               continue;
-                                       }
-                               } elseif ( $val == 'autoconfirmed' ) {
-                                       // Special case, rewrite autoconfirmed to editsemiprotected
-                                       if ( !$wgUser->isAllowed( 'editsemiprotected' ) ) {
-                                               continue;
-                                       }
-                               } elseif ( !$wgUser->isAllowed( $val ) ) {
-                                       continue;
-                               }
+                       if ( isset( $val ) && in_array( $val, $levels ) ) {
                                $this->mRestrictions[$action] = $val;
                        }
                }
@@ -189,7 +175,7 @@ class ProtectionForm {
        function execute() {
                global $wgRequest, $wgOut;
 
-               if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+               if ( MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace() ) === array( '' ) ) {
                        throw new ErrorPageError( 'protect-badnamespace-title', 'protect-badnamespace-text' );
                }
 
@@ -556,28 +542,13 @@ class ProtectionForm {
         * @return String: HTML fragment
         */
        function buildSelector( $action, $selected ) {
-               global $wgRestrictionLevels, $wgUser;
-
-               $levels = array();
-               foreach ( $wgRestrictionLevels as $key ) {
-                       //don't let them choose levels above their own (aka so they can still unprotect and edit the page). but only when the form isn't disabled
-                       if ( $key == 'sysop' ) {
-                               //special case, rewrite sysop to editprotected
-                               if ( !$wgUser->isAllowed( 'editprotected' ) && !$this->disabled ) {
-                                       continue;
-                               }
-                       } elseif ( $key == 'autoconfirmed' ) {
-                               //special case, rewrite autoconfirmed to editsemiprotected
-                               if ( !$wgUser->isAllowed( 'editsemiprotected' ) && !$this->disabled ) {
-                                       continue;
-                               }
-                       } else {
-                               if ( !$wgUser->isAllowed( $key ) && !$this->disabled ) {
-                                       continue;
-                               }
-                       }
-                       $levels[] = $key;
-               }
+               global $wgUser;
+
+               // If the form is disabled, display all relevant levels. Otherwise,
+               // just show the ones this user can use.
+               $levels = MWNamespace::getRestrictionLevels( $this->mTitle->getNamespace(),
+                       $this->disabled ? null : $wgUser
+               );
 
                $id = 'mwProtect-level-' . $action;
                $attribs = array(
diff --git a/includes/ProxyTools.php b/includes/ProxyTools.php
deleted file mode 100644 (file)
index a0f9e5f..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-/**
- * Functions for dealing with proxies.
- *
- * 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
- */
-
-/**
- * Extracts the XFF string from the request header
- * Note: headers are spoofable
- *
- * @deprecated in 1.19; use $wgRequest->getHeader( 'X-Forwarded-For' ) instead.
- * @return string
- */
-function wfGetForwardedFor() {
-       wfDeprecated( __METHOD__, '1.19' );
-       global $wgRequest;
-       return $wgRequest->getHeader( 'X-Forwarded-For' );
-}
-
-/**
- * Returns the browser/OS data from the request header
- * Note: headers are spoofable
- *
- * @deprecated in 1.18; use $wgRequest->getHeader( 'User-Agent' ) instead.
- * @return string
- */
-function wfGetAgent() {
-       wfDeprecated( __METHOD__, '1.18' );
-       global $wgRequest;
-       return $wgRequest->getHeader( 'User-Agent' );
-}
-
-/**
- * Work out the IP address based on various globals
- * For trusted proxies, use the XFF client IP (first of the chain)
- *
- * @deprecated in 1.19; call $wgRequest->getIP() directly.
- * @return string
- */
-function wfGetIP() {
-       wfDeprecated( __METHOD__, '1.19' );
-       global $wgRequest;
-       return $wgRequest->getIP();
-}
-
-/**
- * Checks if an IP is a trusted proxy provider.
- * Useful to tell if X-Forwarded-For data is possibly bogus.
- * Squid cache servers for the site are whitelisted.
- *
- * @param $ip String
- * @return bool
- */
-function wfIsTrustedProxy( $ip ) {
-       $trusted = wfIsConfiguredProxy( $ip );
-       wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
-       return $trusted;
-}
-
-/**
- * Checks if an IP matches a proxy we've configured.
- * @param $ip String
- * @return bool
- * @since 1.23 Supports CIDR ranges in $wgSquidServersNoPurge
- */
-function wfIsConfiguredProxy( $ip ) {
-       global $wgSquidServers, $wgSquidServersNoPurge;
-
-       // quick check of known proxy servers
-       $trusted = in_array( $ip, $wgSquidServers )
-               || in_array( $ip, $wgSquidServersNoPurge );
-
-       if ( !$trusted ) {
-               // slightly slower check to see if the ip is listed directly or in a CIDR
-               // block in $wgSquidServersNoPurge
-               foreach ( $wgSquidServersNoPurge as $block ) {
-                       if ( strpos( $block, '/' ) !== false && IP::isInRange( $ip, $block ) ) {
-                               $trusted = true;
-                               break;
-                       }
-               }
-       }
-       return $trusted;
-}
index 51b5706..654b616 100644 (file)
  */
 global $wgQueryPages; // not redundant
 $wgQueryPages = array(
-//         QueryPage subclass           Special page name         Limit (false for none, none for the default)
+//         QueryPage subclass, Special page name, Limit (false for none, none for the default)
 // ----------------------------------------------------------------------------
-       array( 'AncientPagesPage',              'Ancientpages'                  ),
-       array( 'BrokenRedirectsPage',           'BrokenRedirects'               ),
-       array( 'DeadendPagesPage',              'Deadendpages'                  ),
-       array( 'DoubleRedirectsPage',           'DoubleRedirects'               ),
-       array( 'FileDuplicateSearchPage',       'FileDuplicateSearch'           ),
-       array( 'LinkSearchPage',                'LinkSearch'                    ),
-       array( 'ListredirectsPage',             'Listredirects'                 ),
-       array( 'LonelyPagesPage',               'Lonelypages'                   ),
-       array( 'LongPagesPage',                 'Longpages'                     ),
-       array( 'MIMEsearchPage',                'MIMEsearch'                    ),
-       array( 'MostcategoriesPage',            'Mostcategories'                ),
-       array( 'MostimagesPage',                'Mostimages'                    ),
-       array( 'MostinterwikisPage',            'Mostinterwikis'                ),
-       array( 'MostlinkedCategoriesPage',      'Mostlinkedcategories'          ),
-       array( 'MostlinkedtemplatesPage',       'Mostlinkedtemplates'           ),
-       array( 'MostlinkedPage',                'Mostlinked'                    ),
-       array( 'MostrevisionsPage',             'Mostrevisions'                 ),
-       array( 'FewestrevisionsPage',           'Fewestrevisions'               ),
-       array( 'ShortPagesPage',                'Shortpages'                    ),
-       array( 'UncategorizedCategoriesPage',   'Uncategorizedcategories'       ),
-       array( 'UncategorizedPagesPage',        'Uncategorizedpages'            ),
-       array( 'UncategorizedImagesPage',       'Uncategorizedimages'           ),
-       array( 'UncategorizedTemplatesPage',    'Uncategorizedtemplates'        ),
-       array( 'UnusedCategoriesPage',          'Unusedcategories'              ),
-       array( 'UnusedimagesPage',              'Unusedimages'                  ),
-       array( 'WantedCategoriesPage',          'Wantedcategories'              ),
-       array( 'WantedFilesPage',               'Wantedfiles'                   ),
-       array( 'WantedPagesPage',               'Wantedpages'                   ),
-       array( 'WantedTemplatesPage',           'Wantedtemplates'               ),
-       array( 'UnwatchedPagesPage',            'Unwatchedpages'                ),
-       array( 'UnusedtemplatesPage',           'Unusedtemplates'               ),
-       array( 'WithoutInterwikiPage',          'Withoutinterwiki'              ),
+       array( 'AncientPagesPage', 'Ancientpages' ),
+       array( 'BrokenRedirectsPage', 'BrokenRedirects' ),
+       array( 'DeadendPagesPage', 'Deadendpages' ),
+       array( 'DoubleRedirectsPage', 'DoubleRedirects' ),
+       array( 'FileDuplicateSearchPage', 'FileDuplicateSearch' ),
+       array( 'LinkSearchPage', 'LinkSearch' ),
+       array( 'ListredirectsPage', 'Listredirects' ),
+       array( 'LonelyPagesPage', 'Lonelypages' ),
+       array( 'LongPagesPage', 'Longpages' ),
+       array( 'MIMEsearchPage', 'MIMEsearch' ),
+       array( 'MostcategoriesPage', 'Mostcategories' ),
+       array( 'MostimagesPage', 'Mostimages' ),
+       array( 'MostinterwikisPage', 'Mostinterwikis' ),
+       array( 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ),
+       array( 'MostlinkedtemplatesPage', 'Mostlinkedtemplates' ),
+       array( 'MostlinkedPage', 'Mostlinked' ),
+       array( 'MostrevisionsPage', 'Mostrevisions' ),
+       array( 'FewestrevisionsPage', 'Fewestrevisions' ),
+       array( 'ShortPagesPage', 'Shortpages' ),
+       array( 'UncategorizedCategoriesPage', 'Uncategorizedcategories' ),
+       array( 'UncategorizedPagesPage', 'Uncategorizedpages' ),
+       array( 'UncategorizedImagesPage', 'Uncategorizedimages' ),
+       array( 'UncategorizedTemplatesPage', 'Uncategorizedtemplates' ),
+       array( 'UnusedCategoriesPage', 'Unusedcategories' ),
+       array( 'UnusedimagesPage', 'Unusedimages' ),
+       array( 'WantedCategoriesPage', 'Wantedcategories' ),
+       array( 'WantedFilesPage', 'Wantedfiles' ),
+       array( 'WantedPagesPage', 'Wantedpages' ),
+       array( 'WantedTemplatesPage', 'Wantedtemplates' ),
+       array( 'UnwatchedPagesPage', 'Unwatchedpages' ),
+       array( 'UnusedtemplatesPage', 'Unusedtemplates' ),
+       array( 'WithoutInterwikiPage', 'Withoutinterwiki' ),
 );
 wfRunHooks( 'wgQueryPages', array( &$wgQueryPages ) );
 
@@ -155,7 +155,8 @@ abstract class QueryPage extends SpecialPage {
         */
        function getSQL() {
                /* Implement getQueryInfo() instead */
-               throw new MWException( "Bug in a QueryPage: doesn't implement getQueryInfo() nor getQuery() properly" );
+               throw new MWException( "Bug in a QueryPage: doesn't implement getQueryInfo() nor "
+                       . "getQuery() properly" );
        }
 
        /**
@@ -294,14 +295,11 @@ abstract class QueryPage extends SpecialPage {
 
                $fname = get_class( $this ) . '::recache';
                $dbw = wfGetDB( DB_MASTER );
-               $dbr = wfGetDB( DB_SLAVE, array( $this->getName(), __METHOD__, 'vslow' ) );
-               if ( !$dbw || !$dbr ) {
+               if ( !$dbw ) {
                        return false;
                }
 
                try {
-                       # Clear out any old cached data
-                       $dbw->delete( 'querycache', array( 'qc_type' => $this->getName() ), $fname );
                        # Do query
                        $res = $this->reallyDoQuery( $limit, false );
                        $num = false;
@@ -309,7 +307,7 @@ abstract class QueryPage extends SpecialPage {
                                $num = $res->numRows();
                                # Fetch results
                                $vals = array();
-                               while ( $res && $row = $dbr->fetchObject( $res ) ) {
+                               foreach ( $res as $row ) {
                                        if ( isset( $row->value ) ) {
                                                if ( $this->usesTimestamps() ) {
                                                        $value = wfTimestamp( TS_UNIX,
@@ -327,6 +325,9 @@ abstract class QueryPage extends SpecialPage {
                                                        'qc_value' => $value );
                                }
 
+                               $dbw->begin( __METHOD__ );
+                               # Clear out any old cached data
+                               $dbw->delete( 'querycache', array( 'qc_type' => $this->getName() ), $fname );
                                # Save results into the querycache table on the master
                                if ( count( $vals ) ) {
                                        $dbw->insert( 'querycache', $vals, __METHOD__ );
@@ -336,6 +337,7 @@ abstract class QueryPage extends SpecialPage {
                                $dbw->insert( 'querycache_info',
                                        array( 'qci_type' => $this->getName(), 'qci_timestamp' => $dbw->timestamp() ),
                                        $fname );
+                               $dbw->commit( __METHOD__ );
                        }
                } catch ( DBError $e ) {
                        if ( !$ignoreErrors ) {
@@ -347,6 +349,13 @@ abstract class QueryPage extends SpecialPage {
                return $num;
        }
 
+       /**
+        * Get a DB connection to be used for slow recache queries
+        */
+       function getRecacheDB() {
+               return wfGetDB( DB_SLAVE, array( $this->getName(), 'QueryPage::recache', 'vslow' ) );
+       }
+
        /**
         * Run the query and return the result
         * @param int|bool $limit Numerical limit or false for no limit
@@ -356,7 +365,7 @@ abstract class QueryPage extends SpecialPage {
         */
        function reallyDoQuery( $limit, $offset = false ) {
                $fname = get_class( $this ) . "::reallyDoQuery";
-               $dbr = wfGetDB( DB_SLAVE );
+               $dbr = $this->getRecacheDB();
                $query = $this->getQueryInfo();
                $order = $this->getOrderFields();
 
@@ -457,7 +466,7 @@ abstract class QueryPage extends SpecialPage {
        /**
         * This is the actual workhorse. It does everything needed to make a
         * real, honest-to-gosh query page.
-        * @para $par
+        * @param string $par
         * @return int
         */
        function execute( $par ) {
@@ -512,8 +521,13 @@ abstract class QueryPage extends SpecialPage {
 
                                # If updates on this page have been disabled, let the user know
                                # that the data set won't be refreshed for now
-                               if ( is_array( $wgDisableQueryPageUpdate ) && in_array( $this->getName(), $wgDisableQueryPageUpdate ) ) {
-                                       $out->wrapWikiMsg( "<div class=\"mw-querypage-no-updates\">\n$1\n</div>", 'querypage-no-updates' );
+                               if ( is_array( $wgDisableQueryPageUpdate )
+                                       && in_array( $this->getName(), $wgDisableQueryPageUpdate )
+                               ) {
+                                       $out->wrapWikiMsg(
+                                               "<div class=\"mw-querypage-no-updates\">\n$1\n</div>",
+                                               'querypage-no-updates'
+                                       );
                                }
                        }
                }
@@ -533,7 +547,7 @@ abstract class QueryPage extends SpecialPage {
                                        min( $this->numRows, $this->limit ), # do not show the one extra row, if exist
                                        $this->offset + 1 )->parseAsBlock() );
                                # Disable the "next" link when we reach the end
-                               $paging = $this->getLanguage()->viewPrevNext( $this->getTitle( $par ), $this->offset,
+                               $paging = $this->getLanguage()->viewPrevNext( $this->getPageTitle( $par ), $this->offset,
                                        $this->limit, $this->linkParameters(), ( $this->numRows <= $this->limit ) );
                                $out->addHTML( '<p>' . $paging . '</p>' );
                        } else {
@@ -735,7 +749,7 @@ abstract class QueryPage extends SpecialPage {
        }
 
        function feedUrl() {
-               return $this->getTitle()->getFullURL();
+               return $this->getPageTitle()->getFullURL();
        }
 }
 
index 4446173..1ad0b4a 100644 (file)
@@ -530,14 +530,14 @@ class Revision implements IDBAccessObject {
         */
        function __construct( $row ) {
                if ( is_object( $row ) ) {
-                       $this->mId        = intval( $row->rev_id );
-                       $this->mPage      = intval( $row->rev_page );
-                       $this->mTextId    = intval( $row->rev_text_id );
-                       $this->mComment   =         $row->rev_comment;
-                       $this->mUser      = intval( $row->rev_user );
+                       $this->mId = intval( $row->rev_id );
+                       $this->mPage = intval( $row->rev_page );
+                       $this->mTextId = intval( $row->rev_text_id );
+                       $this->mComment = $row->rev_comment;
+                       $this->mUser = intval( $row->rev_user );
                        $this->mMinorEdit = intval( $row->rev_minor_edit );
-                       $this->mTimestamp =         $row->rev_timestamp;
-                       $this->mDeleted   = intval( $row->rev_deleted );
+                       $this->mTimestamp = $row->rev_timestamp;
+                       $this->mDeleted = intval( $row->rev_deleted );
 
                        if ( !isset( $row->rev_parent_id ) ) {
                                $this->mParentId = null;
@@ -612,27 +612,31 @@ class Revision implements IDBAccessObject {
                                # also set text to null?
                        }
 
-                       $this->mId        = isset( $row['id']         ) ? intval( $row['id']         ) : null;
-                       $this->mPage      = isset( $row['page']       ) ? intval( $row['page']       ) : null;
-                       $this->mTextId    = isset( $row['text_id']    ) ? intval( $row['text_id']    ) : null;
-                       $this->mUserText  = isset( $row['user_text']  ) ? strval( $row['user_text']  ) : $wgUser->getName();
-                       $this->mUser      = isset( $row['user']       ) ? intval( $row['user']       ) : $wgUser->getId();
+                       $this->mId = isset( $row['id'] ) ? intval( $row['id'] ) : null;
+                       $this->mPage = isset( $row['page'] ) ? intval( $row['page'] ) : null;
+                       $this->mTextId = isset( $row['text_id'] ) ? intval( $row['text_id'] ) : null;
+                       $this->mUserText = isset( $row['user_text'] )
+                               ? strval( $row['user_text'] ) : $wgUser->getName();
+                       $this->mUser = isset( $row['user'] ) ? intval( $row['user'] ) : $wgUser->getId();
                        $this->mMinorEdit = isset( $row['minor_edit'] ) ? intval( $row['minor_edit'] ) : 0;
-                       $this->mTimestamp = isset( $row['timestamp']  ) ? strval( $row['timestamp']  ) : wfTimestampNow();
-                       $this->mDeleted   = isset( $row['deleted']    ) ? intval( $row['deleted']    ) : 0;
-                       $this->mSize      = isset( $row['len']        ) ? intval( $row['len']        ) : null;
-                       $this->mParentId  = isset( $row['parent_id']  ) ? intval( $row['parent_id']  ) : null;
-                       $this->mSha1      = isset( $row['sha1']  )      ? strval( $row['sha1']  )      : null;
-
-                       $this->mContentModel   = isset( $row['content_model']  )  ? strval( $row['content_model'] )  : null;
-                       $this->mContentFormat  = isset( $row['content_format']  ) ? strval( $row['content_format'] ) : null;
+                       $this->mTimestamp = isset( $row['timestamp'] )
+                               ? strval( $row['timestamp'] ) : wfTimestampNow();
+                       $this->mDeleted = isset( $row['deleted'] ) ? intval( $row['deleted'] ) : 0;
+                       $this->mSize = isset( $row['len'] ) ? intval( $row['len'] ) : null;
+                       $this->mParentId = isset( $row['parent_id'] ) ? intval( $row['parent_id'] ) : null;
+                       $this->mSha1 = isset( $row['sha1'] ) ? strval( $row['sha1'] ) : null;
+
+                       $this->mContentModel = isset( $row['content_model'] )
+                               ? strval( $row['content_model'] ) : null;
+                       $this->mContentFormat = isset( $row['content_format'] )
+                               ? strval( $row['content_format'] ) : null;
 
                        // Enforce spacing trimming on supplied text
-                       $this->mComment   = isset( $row['comment']    ) ?  trim( strval( $row['comment'] ) ) : null;
-                       $this->mText      = isset( $row['text']       ) ? rtrim( strval( $row['text']    ) ) : null;
-                       $this->mTextRow   = null;
+                       $this->mComment = isset( $row['comment'] ) ? trim( strval( $row['comment'] ) ) : null;
+                       $this->mText = isset( $row['text'] ) ? rtrim( strval( $row['text'] ) ) : null;
+                       $this->mTextRow = null;
 
-                       $this->mTitle     = isset( $row['title']      ) ? $row['title'] : null;
+                       $this->mTitle = isset( $row['title'] ) ? $row['title'] : null;
 
                        // if we have a Content object, override mText and mContentModel
                        if ( !empty( $row['content'] ) ) {
@@ -757,7 +761,8 @@ class Revision implements IDBAccessObject {
                if ( isset( $this->mTitle ) ) {
                        return $this->mTitle;
                }
-               if ( !is_null( $this->mId ) ) { //rev_id is defined as NOT NULL, but this revision may not yet have been inserted.
+               //rev_id is defined as NOT NULL, but this revision may not yet have been inserted.
+               if ( !is_null( $this->mId ) ) {
                        $dbr = wfGetDB( DB_SLAVE );
                        $row = $dbr->selectRow(
                                array( 'page', 'revision' ),
@@ -1005,17 +1010,6 @@ class Revision implements IDBAccessObject {
                }
        }
 
-       /**
-        * Alias for getText(Revision::FOR_THIS_USER)
-        *
-        * @deprecated since 1.17
-        * @return String
-        */
-       public function revText() {
-               wfDeprecated( __METHOD__, '1.17' );
-               return $this->getText( self::FOR_THIS_USER );
-       }
-
        /**
         * Fetch revision text without regard for view restrictions
         *
@@ -1081,7 +1075,8 @@ class Revision implements IDBAccessObject {
         * used to determine the content model to use. If no title is know, CONTENT_MODEL_WIKITEXT
         * is used as a last resort.
         *
-        * @return String the content model id associated with this revision, see the CONTENT_MODEL_XXX constants.
+        * @return String the content model id associated with this revision,
+        *     see the CONTENT_MODEL_XXX constants.
         **/
        public function getContentModel() {
                if ( !$this->mContentModel ) {
@@ -1100,7 +1095,8 @@ class Revision implements IDBAccessObject {
         * If no content format was stored in the database, the default format for this
         * revision's content model is returned.
         *
-        * @return String the content format id associated with this revision, see the CONTENT_FORMAT_XXX constants.
+        * @return String the content format id associated with this revision,
+        *     see the CONTENT_FORMAT_XXX constants.
         **/
        public function getContentFormat() {
                if ( !$this->mContentFormat ) {
@@ -1127,7 +1123,8 @@ class Revision implements IDBAccessObject {
                        $format = $this->getContentFormat();
 
                        if ( !$this->mContentHandler->isSupportedFormat( $format ) ) {
-                               throw new MWException( "Oops, the content format $format is not supported for this content model, $model" );
+                               throw new MWException( "Oops, the content format $format is not supported for "
+                                       . "this content model, $model" );
                        }
                }
 
@@ -1206,15 +1203,15 @@ class Revision implements IDBAccessObject {
        /**
          * Get revision text associated with an old or archive row
          * $row is usually an object from wfFetchRow(), both the flags and the text
-         * field must be included
+         * field must be included.
          *
-         * @param $row Object: the text data
-         * @param string $prefix table prefix (default 'old_')
-         * @param string|false $wiki the name of the wiki to load the revision text from
-         *         (same as the the wiki $row was loaded from) or false to indicate the local
-         *         wiki (this is the default). Otherwise, it must be a symbolic wiki database
-         *         identifier as understood by the LoadBalancer class.
-         * @return String: text the text requested or false on failure
+         * @param stdClass $row The text data
+         * @param string $prefix Table prefix (default 'old_')
+         * @param string|bool $wiki The name of the wiki to load the revision text from
+         *   (same as the the wiki $row was loaded from) or false to indicate the local
+         *   wiki (this is the default). Otherwise, it must be a symbolic wiki database
+         *   identifier as understood by the LoadBalancer class.
+         * @return string Text the text requested or false on failure
          */
        public static function getRevisionText( $row, $prefix = 'old_', $wiki = false ) {
                wfProfileIn( __METHOD__ );
@@ -1311,8 +1308,8 @@ class Revision implements IDBAccessObject {
 
                global $wgLegacyEncoding;
                if ( $text !== false && $wgLegacyEncoding
-                       && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) )
-               {
+                       && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags )
+               {
                        # Old revisions kept around in a legacy encoding?
                        # Upconvert on demand.
                        # ("utf8" checked for compatibility with some broken
@@ -1398,7 +1395,8 @@ class Revision implements IDBAccessObject {
 
                if ( $wgContentHandlerUseDB ) {
                        //NOTE: Store null for the default model and format, to save space.
-                       //XXX: Makes the DB sensitive to changed defaults. Make this behavior optional? Only in miser mode?
+                       //XXX: Makes the DB sensitive to changed defaults.
+                       // Make this behavior optional? Only in miser mode?
 
                        $model = $this->getContentModel();
                        $format = $this->getContentFormat();
@@ -1407,7 +1405,8 @@ class Revision implements IDBAccessObject {
 
                        if ( $title === null ) {
                                wfProfileOut( __METHOD__ );
-                               throw new MWException( "Insufficient information to determine the title of the revision's page!" );
+                               throw new MWException( "Insufficient information to determine the title of the "
+                                       . "revision's page!" );
                        }
 
                        $defaultModel = ContentHandler::getDefaultModelFor( $title );
@@ -1443,7 +1442,8 @@ class Revision implements IDBAccessObject {
                }
 
                if ( !$wgContentHandlerUseDB && $title ) {
-                       // if $wgContentHandlerUseDB is not set, all revisions must use the default content model and format.
+                       // if $wgContentHandlerUseDB is not set,
+                       // all revisions must use the default content model and format.
 
                        $defaultModel = ContentHandler::getDefaultModelFor( $title );
                        $defaultHandler = ContentHandler::getForModelID( $defaultModel );
@@ -1452,15 +1452,17 @@ class Revision implements IDBAccessObject {
                        if ( $this->getContentModel() != $defaultModel ) {
                                $t = $title->getPrefixedDBkey();
 
-                               throw new MWException( "Can't save non-default content model with \$wgContentHandlerUseDB disabled: "
-                                                                               . "model is $model , default for $t is $defaultModel" );
+                               throw new MWException( "Can't save non-default content model with "
+                                       . "\$wgContentHandlerUseDB disabled: model is $model, "
+                                       . "default for $t is $defaultModel" );
                        }
 
                        if ( $this->getContentFormat() != $defaultFormat ) {
                                $t = $title->getPrefixedDBkey();
 
-                               throw new MWException( "Can't use non-default content format with \$wgContentHandlerUseDB disabled: "
-                                                                               . "format is $format, default for $t is $defaultFormat" );
+                               throw new MWException( "Can't use non-default content format with "
+                                       . "\$wgContentHandlerUseDB disabled: format is $format, "
+                                       . "default for $t is $defaultFormat" );
                        }
                }
 
@@ -1722,8 +1724,8 @@ class Revision implements IDBAccessObject {
         *
         * @since 1.20
         *
-        * @param DatabaseBase|int $db the Database to perform the check on. May be given as a Database object or
-        *        a database identifier usable with wfGetDB.
+        * @param DatabaseBase|int $db the Database to perform the check on. May be given as a
+        *        Database object or a database identifier usable with wfGetDB.
         * @param int $pageId the ID of the page in question
         * @param int $userId the ID of the user in question
         * @param string $since look at edits since this time
index 3384af0..0de8cda 100644 (file)
@@ -355,12 +355,12 @@ class Sanitizer {
         * Cleans up HTML, removes dangerous tags and attributes, and
         * removes HTML comments
         * @private
-        * @param $text String
-        * @param $processCallback Callback to do any variable or parameter
-        *        replacements in HTML attribute values
-        * @param array $args for the processing callback
-        * @param array $extratags for any extra tags to include
-        * @param array $removetags for any tags (default or extra) to exclude
+        * @param string $text
+        * @param callable $processCallback Callback to do any variable or parameter
+        *   replacements in HTML attribute values
+        * @param array $args Arguments for the processing callback
+        * @param array $extratags For any extra tags to include
+        * @param array $removetags For any tags (default or extra) to exclude
         * @return string
         */
        static function removeHTMLtags( $text, $processCallback = null,
@@ -601,7 +601,7 @@ class Sanitizer {
         * trailing spaces and one of the newlines.
         *
         * @private
-        * @param $text String
+        * @param string $text
         * @return string
         */
        static function removeHTMLcomments( $text ) {
@@ -649,8 +649,8 @@ class Sanitizer {
         * where we may want to allow a tag within content but ONLY when it has
         * specific attributes set.
         *
-        * @param $params
-        * @param $element
+        * @param string $params
+        * @param string $element
         * @return bool
         */
        static function validateTag( $params, $element ) {
@@ -682,9 +682,9 @@ class Sanitizer {
         * - Unsafe style attributes are discarded
         * - Invalid id attributes are re-encoded
         *
-        * @param $attribs Array
-        * @param $element String
-        * @return Array
+        * @param array $attribs
+        * @param string $element
+        * @return array
         *
         * @todo Check for legal values where the DTD limits things.
         * @todo Check for unique id attribute :P
@@ -702,9 +702,9 @@ class Sanitizer {
         * - Unsafe style attributes are discarded
         * - Invalid id attributes are re-encoded
         *
-        * @param $attribs Array
+        * @param array $attribs
         * @param array $whitelist list of allowed attribute names
-        * @return Array
+        * @return array
         *
         * @todo Check for legal values where the DTD limits things.
         * @todo Check for unique id attribute :P
@@ -801,8 +801,8 @@ class Sanitizer {
         * will be combined (if they're both strings).
         *
         * @todo implement merging for other attributes such as style
-        * @param $a Array
-        * @param $b Array
+        * @param array $a
+        * @param array $b
         * @return array
         */
        static function mergeAttributes( $a, $b ) {
@@ -833,8 +833,8 @@ class Sanitizer {
         * clever input strings. These character references must
         * be escaped before the return value is embedded in HTML.
         *
-        * @param $value String
-        * @return String
+        * @param string $value
+        * @return string
         */
        static function checkCss( $value ) {
                // Decode character references like &#123;
@@ -867,7 +867,7 @@ class Sanitizer {
 
                // Normalize Halfwidth and Fullwidth Unicode block that IE6 might treat as ascii
                $value = preg_replace_callback(
-                       '/[ï¼\81½\9a]/u', // U+FF01 to U+FF5A
+                       '/[ï¼\81¼»ï¼½-ï½\9a]/u', // U+FF01 to U+FF5A, excluding U+FF3C (bug 58088)
                        function ( $matches ) {
                                $cp = utf8ToCodepoint( $matches[0] );
                                if ( $cp === false ) {
@@ -925,15 +925,25 @@ class Sanitizer {
                // Reject problematic keywords and control characters
                if ( preg_match( '/[\000-\010\013\016-\037\177]/', $value ) ) {
                        return '/* invalid control char */';
-               } elseif ( preg_match( '! expression | filter\s*: | accelerator\s*: | url\s*\( | image\s*\( | image-set\s*\( !ix', $value ) ) {
+               } elseif ( preg_match(
+                       '! expression
+                               | filter\s*:
+                               | accelerator\s*:
+                               | -o-link\s*:
+                               | -o-link-source\s*:
+                               | -o-replace\s*:
+                               | url\s*\(
+                               | image\s*\(
+                               | image-set\s*\(
+                       !ix', $value ) ) {
                        return '/* insecure input */';
                }
                return $value;
        }
 
        /**
-        * @param $matches array
-        * @return String
+        * @param array $matches
+        * @return string
         */
        static function cssDecodeCallback( $matches ) {
                if ( $matches[1] !== '' ) {
@@ -971,9 +981,9 @@ class Sanitizer {
         * - Unsafe style attributes are discarded
         * - Prepends space if there are attributes.
         *
-        * @param $text String
-        * @param $element String
-        * @return String
+        * @param string $text
+        * @param string $element
+        * @return string
         */
        static function fixTagAttributes( $text, $element ) {
                if ( trim( $text ) == '' ) {
@@ -988,8 +998,8 @@ class Sanitizer {
 
        /**
         * Encode an attribute value for HTML output.
-        * @param $text String
-        * @return HTML-encoded text fragment
+        * @param string $text
+        * @return string HTML-encoded text fragment
         */
        static function encodeAttribute( $text ) {
                $encValue = htmlspecialchars( $text, ENT_QUOTES );
@@ -1009,8 +1019,8 @@ class Sanitizer {
        /**
         * Encode an attribute value for HTML tags, with extra armoring
         * against further wiki processing.
-        * @param $text String
-        * @return HTML-encoded text fragment
+        * @param string $text
+        * @return string HTML-encoded text fragment
         */
        static function safeEncodeAttribute( $text ) {
                $encValue = Sanitizer::encodeAttribute( $text );
@@ -1053,9 +1063,9 @@ class Sanitizer {
         * (which don't work reliably in fragments cross-browser).
         *
         * @see http://www.w3.org/TR/html401/types.html#type-name Valid characters
-        *                                                          in the id and
-        *                                                          name attributes
-        * @see http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with the id attribute
+        *   in the id and name attributes
+        * @see http://www.w3.org/TR/html401/struct/links.html#h-12.2.3 Anchors with
+        *   the id attribute
         * @see http://www.whatwg.org/html/elements.html#the-id-attribute
         *   HTML5 definition of id attribute
         *
@@ -1068,7 +1078,7 @@ class Sanitizer {
         *   'legacy': Behave the way the old HTML 4-based ID escaping worked even
         *       if $wgExperimentalHtmlIds is used, so we can generate extra
         *       anchors and links won't break.
-        * @return String
+        * @return string
         */
        static function escapeId( $id, $options = array() ) {
                global $wgExperimentalHtmlIds;
@@ -1111,8 +1121,8 @@ class Sanitizer {
         *
         * @see http://www.w3.org/TR/CSS21/syndata.html Valid characters/format
         *
-        * @param $class String
-        * @return String
+        * @param string $class
+        * @return string
         */
        static function escapeClass( $class ) {
                // Convert ugly stuff to underscores and kill underscores in ugly places
@@ -1126,8 +1136,8 @@ class Sanitizer {
         * Given HTML input, escape with htmlspecialchars but un-escape entities.
         * This allows (generally harmless) entities like &#160; to survive.
         *
-        * @param string $html to escape
-        * @return String: escaped input
+        * @param string $html HTML to escape
+        * @return string: escaped input
         */
        static function escapeHtmlAllowEntities( $html ) {
                $html = Sanitizer::decodeCharReferences( $html );
@@ -1139,7 +1149,7 @@ class Sanitizer {
 
        /**
         * Regex replace callback for armoring links against further processing.
-        * @param $matches Array
+        * @param array $matches
         * @return string
         */
        private static function armorLinksCallback( $matches ) {
@@ -1151,8 +1161,8 @@ class Sanitizer {
         * a partial tag string. Attribute names are forces to lowercase,
         * character references are decoded to UTF-8 text.
         *
-        * @param $text String
-        * @return Array
+        * @param string $text
+        * @return array
         */
        public static function decodeTagAttributes( $text ) {
                if ( trim( $text ) == '' ) {
@@ -1187,8 +1197,8 @@ class Sanitizer {
         * Build a partial tag string from an associative array of attribute
         * names and values as returned by decodeTagAttributes.
         *
-        * @param $assoc_array Array
-        * @return String
+        * @param array $assoc_array
+        * @return string
         */
        public static function safeEncodeTagAttributes( $assoc_array ) {
                $attribs = array();
@@ -1205,9 +1215,9 @@ class Sanitizer {
         * Pick the appropriate attribute value from a match set from the
         * attribs regex matches.
         *
-        * @param $set Array
-        * @throws MWException
-        * @return String
+        * @param array $set
+        * @throws MWException when tag conditions are not met.
+        * @return string
         */
        private static function getTagAttributeCallback( $set ) {
                if ( isset( $set[6] ) ) {
@@ -1239,8 +1249,9 @@ class Sanitizer {
         * but note that we're not returning the value, but are returning
         * XML source fragments that will be slapped into output.
         *
-        * @param $text String
-        * @return String
+        * @param string $text
+        * @return string
+        * @todo Remove, unused?
         */
        private static function normalizeAttributeValue( $text ) {
                return str_replace( '"', '&quot;',
@@ -1249,8 +1260,8 @@ class Sanitizer {
        }
 
        /**
-        * @param $text string
-        * @return mixed
+        * @param string $text
+        * @return string
         */
        private static function normalizeWhitespace( $text ) {
                return preg_replace(
@@ -1264,8 +1275,8 @@ class Sanitizer {
         * by Parser::stripSectionName(), for use in the id's that are used for
         * section links.
         *
-        * @param $section String
-        * @return String
+        * @param string $section
+        * @return string
         */
        static function normalizeSectionNameWhitespace( $section ) {
                return trim( preg_replace( '/[ _]+/', ' ', $section ) );
@@ -1282,8 +1293,8 @@ class Sanitizer {
         * c. use lower cased "&#x", not "&#X"
         * d. fix or reject non-valid attributes
         *
-        * @param $text String
-        * @return String
+        * @param string $text
+        * @return string
         * @private
         */
        static function normalizeCharReferences( $text ) {
@@ -1293,8 +1304,8 @@ class Sanitizer {
                        $text );
        }
        /**
-        * @param $matches String
-        * @return String
+        * @param string $matches
+        * @return string
         */
        static function normalizeCharReferencesCallback( $matches ) {
                $ret = null;
@@ -1319,8 +1330,8 @@ class Sanitizer {
         * the HTML equivalent. Otherwise, returns HTML-escaped text of
         * pseudo-entity source (eg &amp;foo;)
         *
-        * @param $name String
-        * @return String
+        * @param string $name
+        * @return string
         */
        static function normalizeEntity( $name ) {
                if ( isset( self::$htmlEntityAliases[$name] ) ) {
@@ -1336,7 +1347,7 @@ class Sanitizer {
        }
 
        /**
-        * @param $codepoint
+        * @param int $codepoint
         * @return null|string
         */
        static function decCharReference( $codepoint ) {
@@ -1349,7 +1360,7 @@ class Sanitizer {
        }
 
        /**
-        * @param $codepoint
+        * @param int $codepoint
         * @return null|string
         */
        static function hexCharReference( $codepoint ) {
@@ -1363,8 +1374,8 @@ class Sanitizer {
 
        /**
         * Returns true if a given Unicode codepoint is a valid character in XML.
-        * @param $codepoint Integer
-        * @return Boolean
+        * @param int $codepoint
+        * @return bool
         */
        private static function validateCodepoint( $codepoint ) {
                return $codepoint == 0x09
@@ -1379,8 +1390,8 @@ class Sanitizer {
         * Decode any character references, numeric or named entities,
         * in the text and return a UTF-8 string.
         *
-        * @param $text String
-        * @return String
+        * @param string $text
+        * @return string
         */
        public static function decodeCharReferences( $text ) {
                return preg_replace_callback(
@@ -1396,8 +1407,8 @@ class Sanitizer {
         * This is useful for page titles, not for text to be displayed,
         * MediaWiki allows HTML entities to escape normalization as a feature.
         *
-        * @param string $text (already normalized, containing entities)
-        * @return String (still normalized, without entities)
+        * @param string $text Already normalized, containing entities
+        * @return string Still normalized, without entities
         */
        public static function decodeCharReferencesAndNormalize( $text ) {
                global $wgContLang;
@@ -1414,8 +1425,8 @@ class Sanitizer {
        }
 
        /**
-        * @param $matches String
-        * @return String
+        * @param string $matches
+        * @return string
         */
        static function decodeCharReferencesCallback( $matches ) {
                if ( $matches[1] != '' ) {
@@ -1432,8 +1443,8 @@ class Sanitizer {
        /**
         * Return UTF-8 string for a codepoint if that is a valid
         * character reference, otherwise U+FFFD REPLACEMENT CHARACTER.
-        * @param $codepoint Integer
-        * @return String
+        * @param int $codepoint
+        * @return string
         * @private
         */
        static function decodeChar( $codepoint ) {
@@ -1449,8 +1460,8 @@ class Sanitizer {
         * return the UTF-8 encoding of that character. Otherwise, returns
         * pseudo-entity source (eg "&foo;")
         *
-        * @param $name String
-        * @return String
+        * @param string $name
+        * @return string
         */
        static function decodeEntity( $name ) {
                if ( isset( self::$htmlEntityAliases[$name] ) ) {
@@ -1466,8 +1477,8 @@ class Sanitizer {
        /**
         * Fetch the whitelist of acceptable attributes for a given element name.
         *
-        * @param $element String
-        * @return Array
+        * @param string $element
+        * @return array
         */
        static function attributeWhitelist( $element ) {
                $list = Sanitizer::setupAttributeWhitelist();
@@ -1479,7 +1490,7 @@ class Sanitizer {
        /**
         * Foreach array key (an allowed HTML element), return an array
         * of allowed attributes
-        * @return Array
+        * @return array
         */
        static function setupAttributeWhitelist() {
                global $wgAllowRdfaAttributes, $wgAllowMicrodataAttributes;
@@ -1702,7 +1713,7 @@ class Sanitizer {
         * inclusion in HTML output as of 1.10!
         *
         * @param string $text HTML fragment
-        * @return String
+        * @return string
         */
        static function stripAllTags( $text ) {
                # Actual <tags>
@@ -1722,7 +1733,7 @@ class Sanitizer {
         *
         * Use for passing XHTML fragments to PHP's XML parsing functions
         *
-        * @return String
+        * @return string
         */
        static function hackDocType() {
                $out = "<!DOCTYPE html [\n";
@@ -1734,7 +1745,7 @@ class Sanitizer {
        }
 
        /**
-        * @param $url string
+        * @param string $url
         * @return mixed|string
         */
        static function cleanUrl( $url ) {
@@ -1781,7 +1792,7 @@ class Sanitizer {
        }
 
        /**
-        * @param $matches array
+        * @param array $matches
         * @return string
         */
        static function cleanUrlCallback( $matches ) {
@@ -1814,7 +1825,7 @@ class Sanitizer {
         * @since 1.18
         *
         * @param string $addr E-mail address
-        * @return Bool
+        * @return bool
         */
        public static function validateEmail( $addr ) {
                $result = null;
index 81dada2..531d1a4 100644 (file)
@@ -36,6 +36,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
 
 $fname = 'Setup.php';
 wfProfileIn( $fname );
+wfProfileIn( $fname  . '-defaults' );
 
 // Check to see if we are at the file scope
 if ( !isset( $wgVersion ) ) {
@@ -102,10 +103,10 @@ if ( isset( $wgFileStore['deleted']['directory'] ) ) {
        $wgDeletedDirectory = $wgFileStore['deleted']['directory'];
 }
 
-if ( isset( $wgFooterIcons['copyright'] ) &&
-       isset( $wgFooterIcons['copyright']['copyright'] ) &&
-       $wgFooterIcons['copyright']['copyright'] === array() )
-{
+if ( isset( $wgFooterIcons['copyright'] )
+       && isset( $wgFooterIcons['copyright']['copyright'] )
+       && $wgFooterIcons['copyright']['copyright'] === array()
+{
        if ( isset( $wgCopyrightIcon ) && $wgCopyrightIcon ) {
                $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
        } elseif ( $wgRightsIcon || $wgRightsText ) {
@@ -119,10 +120,10 @@ if ( isset( $wgFooterIcons['copyright'] ) &&
        }
 }
 
-if ( isset( $wgFooterIcons['poweredby'] ) &&
-       isset( $wgFooterIcons['poweredby']['mediawiki'] ) &&
-       $wgFooterIcons['poweredby']['mediawiki']['src'] === null )
-{
+if ( isset( $wgFooterIcons['poweredby'] )
+       && isset( $wgFooterIcons['poweredby']['mediawiki'] )
+       && $wgFooterIcons['poweredby']['mediawiki']['src'] === null
+{
        $wgFooterIcons['poweredby']['mediawiki']['src'] = "$wgStylePath/common/images/poweredby_mediawiki_88x31.png";
 }
 
@@ -247,11 +248,6 @@ foreach ( $wgForeignFileRepos as &$repo ) {
 }
 unset( $repo ); // no global pollution; destroy reference
 
-if ( is_null( $wgEnableAutoRotation ) ) {
-       // Only enable auto-rotation when the bitmap handler can rotate
-       $wgEnableAutoRotation = BitmapHandler::canRotate();
-}
-
 if ( $wgRCFilterByAge ) {
        # # Trim down $wgRCLinkDays so that it only lists links which are valid
        # # as determined by $wgRCMaxAge.
@@ -401,11 +397,15 @@ if ( $wgRC2UDPAddress ) {
        );
 }
 
+wfProfileOut( $fname  . '-defaults' );
+
 // Disable MWDebug for command line mode, this prevents MWDebug from eating up
 // all the memory from logging SQL queries on maintenance scripts
 global $wgCommandLineMode;
 if ( $wgDebugToolbar && !$wgCommandLineMode ) {
+       wfProfileIn( $fname . '-debugtoolbar' );
        MWDebug::init();
+       wfProfileOut( $fname . '-debugtoolbar' );
 }
 
 if ( !class_exists( 'AutoLoader' ) ) {
@@ -419,10 +419,10 @@ wfProfileOut( $fname . '-exception' );
 wfProfileIn( $fname . '-includes' );
 require_once "$IP/includes/normal/UtfNormalUtil.php";
 require_once "$IP/includes/GlobalFunctions.php";
-require_once "$IP/includes/ProxyTools.php";
 require_once "$IP/includes/normal/UtfNormalDefines.php";
 wfProfileOut( $fname . '-includes' );
 
+wfProfileIn( $fname . '-defaults2' );
 if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
        $wgSecureLogin = false;
        wfWarn( 'Secure login was enabled on a server that only supports HTTP or HTTPS. Disabling secure login.' );
@@ -431,7 +431,9 @@ if ( $wgSecureLogin && substr( $wgServer, 0, 2 ) !== '//' ) {
 # Now that GlobalFunctions is loaded, set defaults that depend
 # on it.
 if ( $wgTmpDirectory === false ) {
+       wfProfileIn( $fname . '-tempDir' );
        $wgTmpDirectory = wfTempDir();
+       wfProfileOut( $fname . '-tempDir' );
 }
 
 if ( $wgCanonicalServer === false ) {
@@ -455,6 +457,7 @@ if ( !$wgHTCPRouting && $wgHTCPMulticastAddress ) {
        );
 }
 
+wfProfileOut( $fname . '-defaults2' );
 wfProfileIn( $fname . '-misc1' );
 
 # Raise the memory limit if it's too low
index 750f319..6722cca 100644 (file)
@@ -243,9 +243,7 @@ abstract class Skin extends ContextSource {
                                        $modules['watch'][] = 'mediawiki.page.watch.ajax';
                                }
 
-                               if ( !$user->getOption( 'disablesuggest', false ) ) {
-                                       $modules['search'][] = 'mediawiki.searchSuggest';
-                               }
+                               $modules['search'][] = 'mediawiki.searchSuggest';
                        }
                }
 
@@ -455,6 +453,19 @@ abstract class Skin extends ContextSource {
                return "$numeric $type $name";
        }
 
+       /*
+        * Return values for <html> element
+        * @return array of associative name-to-value elements for <html> element
+        */
+       public function getHtmlElementAttributes() {
+               $lang = $this->getLanguage();
+               return array(
+                       'lang' => $lang->getHtmlCode(),
+                       'dir' => $lang->getDir(),
+                       'class' => 'client-nojs',
+               );
+       }
+
        /**
         * This will be called by OutputPage::headElement when it is creating the
         * "<body>" tag, skins can override it if they have a need to add in any
@@ -1419,14 +1430,14 @@ abstract class Skin extends ContextSource {
                                        'youhavenewmessagesfromusers',
                                        $newMessagesLink,
                                        $newMessagesDiffLink
-                               )->numParams( $nofAuthors );
+                               )->numParams( $nofAuthors, $plural );
                        } else {
                                // $nofAuthors === 11 signifies "11 or more" ("more than 10")
                                $newMessagesAlert = $this->msg(
                                        $nofAuthors > 10 ? 'youhavenewmessagesmanyusers' : 'youhavenewmessages',
                                        $newMessagesLink,
                                        $newMessagesDiffLink
-                               );
+                               )->numParams( $plural );
                        }
                        $newMessagesAlert = $newMessagesAlert->text();
                        # Disable Squid cache
index dde3f37..18e36ba 100644 (file)
@@ -247,7 +247,6 @@ class SkinTemplate extends Skin {
                }
 
                $out = $this->getOutput();
-               $user = $this->getUser();
 
                wfProfileIn( __METHOD__ . '-init' );
                $this->initPage( $out );
@@ -272,10 +271,9 @@ class SkinTemplate extends Skin {
         * initialize various variables and generate the template
         *
         * @since 1.23
-        * @param $out OutputPage
         * @return QuickTemplate the template to be executed by outputPage
         */
-       protected function prepareQuickTemplate( OutputPage $out = null ) {
+       protected function prepareQuickTemplate() {
                global $wgContLang, $wgScript, $wgStylePath,
                        $wgMimeType, $wgJsMimeType, $wgXhtmlNamespaces, $wgHtml5Version,
                        $wgDisableCounters, $wgSitename, $wgLogo, $wgMaxCredits,
@@ -286,6 +284,7 @@ class SkinTemplate extends Skin {
 
                $title = $this->getTitle();
                $request = $this->getRequest();
+               $out = $this->getOutput();
                $tpl = $this->setupTemplateForOutput();
 
                wfProfileIn( __METHOD__ . '-stuff-head' );
@@ -1039,7 +1038,9 @@ class SkinTemplate extends Skin {
                                        }
                                }
 
-                               if ( $title->getNamespace() !== NS_MEDIAWIKI && $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() ) {
+                               if ( $title->quickUserCan( 'protect', $user ) && $title->getRestrictionTypes() &&
+                                       MWNamespace::getRestrictionLevels( $title->getNamespace(), $user ) !== array( '' )
+                               ) {
                                        $mode = $title->isProtected() ? 'unprotect' : 'protect';
                                        $content_navigation['actions'][$mode] = array(
                                                'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
@@ -1402,15 +1403,6 @@ abstract class QuickTemplate {
                echo htmlspecialchars( $this->data[$str] );
        }
 
-       /**
-        * @private
-        * @deprecated since 1.21; use Xml::encodeJsVar() or Xml::encodeJsCall() instead
-        */
-       function jstext( $str ) {
-               wfDeprecated( __METHOD__, '1.21' );
-               echo Xml::escapeJsString( $this->data[$str] );
-       }
-
        /**
         * @private
         */
diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php
deleted file mode 100644 (file)
index f70a6dc..0000000
+++ /dev/null
@@ -1,1481 +0,0 @@
-<?php
-/**
- * Parent class for all special pages.
- *
- * 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 SpecialPage
- */
-
-/**
- * Parent special page class, also static functions for handling the special
- * page list.
- * @ingroup SpecialPage
- */
-class SpecialPage {
-       // The canonical name of this special page
-       // Also used for the default <h1> heading, @see getDescription()
-       protected $mName;
-
-       // The local name of this special page
-       private $mLocalName;
-
-       // Minimum user level required to access this page, or "" for anyone.
-       // Also used to categorise the pages in Special:Specialpages
-       private $mRestriction;
-
-       // Listed in Special:Specialpages?
-       private $mListed;
-
-       // Function name called by the default execute()
-       private $mFunction;
-
-       // File which needs to be included before the function above can be called
-       private $mFile;
-
-       // Whether or not this special page is being included from an article
-       protected $mIncluding;
-
-       // Whether the special page can be included in an article
-       protected $mIncludable;
-
-       /**
-        * Current request context
-        * @var IContextSource
-        */
-       protected $mContext;
-
-       /**
-        * Initialise the special page list
-        * This must be called before accessing SpecialPage::$mList
-        * @deprecated since 1.18
-        */
-       static function initList() {
-               wfDeprecated( __METHOD__, '1.18' );
-               // Noop
-       }
-
-       /**
-        * @deprecated since 1.18
-        */
-       static function initAliasList() {
-               wfDeprecated( __METHOD__, '1.18' );
-               // Noop
-       }
-
-       /**
-        * Given a special page alias, return the special page name.
-        * Returns false if there is no such alias.
-        *
-        * @param $alias String
-        * @return String or false
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function resolveAlias( $alias ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               list( $name, /*...*/ ) = SpecialPageFactory::resolveAlias( $alias );
-               return $name;
-       }
-
-       /**
-        * Given a special page name with a possible subpage, return an array
-        * where the first element is the special page name and the second is the
-        * subpage.
-        *
-        * @param $alias String
-        * @return Array
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function resolveAliasWithSubpage( $alias ) {
-               return SpecialPageFactory::resolveAlias( $alias );
-       }
-
-       /**
-        * Add a page to a certain display group for Special:SpecialPages
-        *
-        * @param $page Mixed: SpecialPage or string
-        * @param $group String
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function setGroup( $page, $group ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               SpecialPageFactory::setGroup( $page, $group );
-       }
-
-       /**
-        * Get the group that the special page belongs in on Special:SpecialPage
-        *
-        * @param $page SpecialPage
-        * @return string
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getGroup( &$page ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getGroup( $page );
-       }
-
-       /**
-        * Remove a special page from the list
-        * Formerly used to disable expensive or dangerous special pages. The
-        * preferred method is now to add a SpecialPage_initList hook.
-        * @deprecated since 1.18
-        *
-        * @param string $name the page to remove
-        */
-       static function removePage( $name ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               unset( SpecialPageFactory::getList()->$name );
-       }
-
-       /**
-        * Check if a given name exist as a special page or as a special page alias
-        *
-        * @param string $name name of a special page
-        * @return Boolean: true if a special page exists with this name
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function exists( $name ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::exists( $name );
-       }
-
-       /**
-        * Find the object with a given name and return it (or NULL)
-        *
-        * @param $name String
-        * @return SpecialPage object or null if the page doesn't exist
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getPage( $name ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getPage( $name );
-       }
-
-       /**
-        * Get a special page with a given localised name, or NULL if there
-        * is no such special page.
-        *
-        * @param $alias String
-        * @return SpecialPage object or null if the page doesn't exist
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getPageByAlias( $alias ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getPage( $alias );
-       }
-
-       /**
-        * Return categorised listable special pages which are available
-        * for the current user, and everyone.
-        *
-        * @param $user User object to check permissions, $wgUser will be used
-        *              if not provided
-        * @return array Associative array mapping page's name to its SpecialPage object
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getUsablePages( User $user = null ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getUsablePages( $user );
-       }
-
-       /**
-        * Return categorised listable special pages for all users
-        *
-        * @return array Associative array mapping page's name to its SpecialPage object
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getRegularPages() {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getRegularPages();
-       }
-
-       /**
-        * Return categorised listable special pages which are available
-        * for the current user, but not for everyone
-        *
-        * @return array Associative array mapping page's name to its SpecialPage object
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getRestrictedPages() {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getRestrictedPages();
-       }
-
-       /**
-        * Execute a special page path.
-        * The path may contain parameters, e.g. Special:Name/Params
-        * Extracts the special page name and call the execute method, passing the parameters
-        *
-        * Returns a title object if the page is redirected, false if there was no such special
-        * page, and true if it was successful.
-        *
-        * @param $title          Title object
-        * @param $context        IContextSource
-        * @param $including      Bool output is being captured for use in {{special:whatever}}
-        * @return Bool
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       public static function executePath( &$title, IContextSource &$context, $including = false ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::executePath( $title, $context, $including );
-       }
-
-       /**
-        * Get the local name for a specified canonical name
-        *
-        * @param $name String
-        * @param $subpage Mixed: boolean false, or string
-        *
-        * @return String
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getLocalNameFor( $name, $subpage = false ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getLocalNameFor( $name, $subpage );
-       }
-
-       /**
-        * Get a localised Title object for a specified special page name
-        *
-        * @param $name String
-        * @param string|Bool $subpage subpage string, or false to not use a subpage
-        * @param string $fragment the link fragment (after the "#")
-        * @throws MWException
-        * @return Title object
-        */
-       public static function getTitleFor( $name, $subpage = false, $fragment = '' ) {
-               $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
-               return Title::makeTitle( NS_SPECIAL, $name, $fragment );
-       }
-
-       /**
-        * Get a localised Title object for a page name with a possibly unvalidated subpage
-        *
-        * @param $name String
-        * @param string|Bool $subpage subpage string, or false to not use a subpage
-        * @return Title object or null if the page doesn't exist
-        */
-       public static function getSafeTitleFor( $name, $subpage = false ) {
-               $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
-               if ( $name ) {
-                       return Title::makeTitleSafe( NS_SPECIAL, $name );
-               } else {
-                       return null;
-               }
-       }
-
-       /**
-        * Get a title for a given alias
-        *
-        * @param $alias String
-        * @return Title or null if there is no such alias
-        * @deprecated since 1.18 call SpecialPageFactory method directly
-        */
-       static function getTitleForAlias( $alias ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return SpecialPageFactory::getTitleForAlias( $alias );
-       }
-
-       /**
-        * Default constructor for special pages
-        * Derivative classes should call this from their constructor
-        *     Note that if the user does not have the required level, an error message will
-        *     be displayed by the default execute() method, without the global function ever
-        *     being called.
-        *
-        *     If you override execute(), you can recover the default behavior with userCanExecute()
-        *     and displayRestrictionError()
-        *
-        * @param string $name Name of the special page, as seen in links and URLs
-        * @param string $restriction User right required, e.g. "block" or "delete"
-        * @param bool $listed Whether the page is listed in Special:Specialpages
-        * @param Callback|Bool $function Function called by execute(). By default
-        * it is constructed from $name
-        * @param string $file File which is included by execute(). It is also
-        * constructed from $name by default
-        * @param bool $includable Whether the page can be included in normal pages
-        */
-       public function __construct(
-               $name = '', $restriction = '', $listed = true,
-               $function = false, $file = 'default', $includable = false
-       ) {
-               $this->init( $name, $restriction, $listed, $function, $file, $includable );
-       }
-
-       /**
-        * Do the real work for the constructor, mainly so __call() can intercept
-        * calls to SpecialPage()
-        * @param string $name Name of the special page, as seen in links and URLs
-        * @param string $restriction User right required, e.g. "block" or "delete"
-        * @param bool $listed Whether the page is listed in Special:Specialpages
-        * @param Callback|Bool $function Function called by execute(). By default
-        * it is constructed from $name
-        * @param string $file File which is included by execute(). It is also
-        * constructed from $name by default
-        * @param bool $includable Whether the page can be included in normal pages
-        */
-       private function init( $name, $restriction, $listed, $function, $file, $includable ) {
-               $this->mName = $name;
-               $this->mRestriction = $restriction;
-               $this->mListed = $listed;
-               $this->mIncludable = $includable;
-               if ( !$function ) {
-                       $this->mFunction = 'wfSpecial' . $name;
-               } else {
-                       $this->mFunction = $function;
-               }
-               if ( $file === 'default' ) {
-                       $this->mFile = __DIR__ . "/specials/Special$name.php";
-               } else {
-                       $this->mFile = $file;
-               }
-       }
-
-       /**
-        * Use PHP's magic __call handler to get calls to the old PHP4 constructor
-        * because PHP E_STRICT yells at you for having __construct() and SpecialPage()
-        *
-        * @param string $fName Name of called method
-        * @param array $a Arguments to the method
-        * @throws MWException
-        * @deprecated since 1.17, call parent::__construct()
-        */
-       public function __call( $fName, $a ) {
-               // Deprecated messages now, remove in 1.19 or 1.20?
-               wfDeprecated( __METHOD__, '1.17' );
-
-               // Sometimes $fName is SpecialPage, sometimes it's specialpage. <3 PHP
-               if ( strtolower( $fName ) == 'specialpage' ) {
-                       $name = isset( $a[0] ) ? $a[0] : '';
-                       $restriction = isset( $a[1] ) ? $a[1] : '';
-                       $listed = isset( $a[2] ) ? $a[2] : true;
-                       $function = isset( $a[3] ) ? $a[3] : false;
-                       $file = isset( $a[4] ) ? $a[4] : 'default';
-                       $includable = isset( $a[5] ) ? $a[5] : false;
-                       $this->init( $name, $restriction, $listed, $function, $file, $includable );
-               } else {
-                       $className = get_class( $this );
-                       throw new MWException( "Call to undefined method $className::$fName" );
-               }
-       }
-
-       /**
-        * Get the name of this Special Page.
-        * @return String
-        */
-       function getName() {
-               return $this->mName;
-       }
-
-       /**
-        * Get the permission that a user must have to execute this page
-        * @return String
-        */
-       function getRestriction() {
-               return $this->mRestriction;
-       }
-
-       /**
-        * Get the file which will be included by SpecialPage::execute() if your extension is
-        * still stuck in the past and hasn't overridden the execute() method.  No modern code
-        * should want or need to know this.
-        * @return String
-        * @deprecated since 1.18
-        */
-       function getFile() {
-               wfDeprecated( __METHOD__, '1.18' );
-               return $this->mFile;
-       }
-
-       // @todo FIXME: Decide which syntax to use for this, and stick to it
-       /**
-        * Whether this special page is listed in Special:SpecialPages
-        * @since r3583 (v1.3)
-        * @return Bool
-        */
-       function isListed() {
-               return $this->mListed;
-       }
-       /**
-        * Set whether this page is listed in Special:Specialpages, at run-time
-        * @since r3583 (v1.3)
-        * @param $listed Bool
-        * @return Bool
-        */
-       function setListed( $listed ) {
-               return wfSetVar( $this->mListed, $listed );
-       }
-       /**
-        * Get or set whether this special page is listed in Special:SpecialPages
-        * @since r11308 (v1.6)
-        * @param $x Bool
-        * @return Bool
-        */
-       function listed( $x = null ) {
-               return wfSetVar( $this->mListed, $x );
-       }
-
-       /**
-        * Whether it's allowed to transclude the special page via {{Special:Foo/params}}
-        * @return Bool
-        */
-       public function isIncludable() {
-               return $this->mIncludable;
-       }
-
-       /**
-        * These mutators are very evil, as the relevant variables should not mutate.  So
-        * don't use them.
-        * @param $x Mixed
-        * @return Mixed
-        * @deprecated since 1.18
-        */
-       function name( $x = null ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return wfSetVar( $this->mName, $x );
-       }
-
-       /**
-        * These mutators are very evil, as the relevant variables should not mutate.  So
-        * don't use them.
-        * @param $x Mixed
-        * @return Mixed
-        * @deprecated since 1.18
-        */
-       function restriction( $x = null ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return wfSetVar( $this->mRestriction, $x );
-       }
-
-       /**
-        * These mutators are very evil, as the relevant variables should not mutate.  So
-        * don't use them.
-        * @param $x Mixed
-        * @return Mixed
-        * @deprecated since 1.18
-        */
-       function func( $x = null ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return wfSetVar( $this->mFunction, $x );
-       }
-
-       /**
-        * These mutators are very evil, as the relevant variables should not mutate.  So
-        * don't use them.
-        * @param $x Mixed
-        * @return Mixed
-        * @deprecated since 1.18
-        */
-       function file( $x = null ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return wfSetVar( $this->mFile, $x );
-       }
-
-       /**
-        * These mutators are very evil, as the relevant variables should not mutate.  So
-        * don't use them.
-        * @param $x Mixed
-        * @return Mixed
-        * @deprecated since 1.18
-        */
-       function includable( $x = null ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               return wfSetVar( $this->mIncludable, $x );
-       }
-
-       /**
-        * Whether the special page is being evaluated via transclusion
-        * @param $x Bool
-        * @return Bool
-        */
-       function including( $x = null ) {
-               return wfSetVar( $this->mIncluding, $x );
-       }
-
-       /**
-        * Get the localised name of the special page
-        */
-       function getLocalName() {
-               if ( !isset( $this->mLocalName ) ) {
-                       $this->mLocalName = SpecialPageFactory::getLocalNameFor( $this->mName );
-               }
-               return $this->mLocalName;
-       }
-
-       /**
-        * Is this page expensive (for some definition of expensive)?
-        * Expensive pages are disabled or cached in miser mode.  Originally used
-        * (and still overridden) by QueryPage and subclasses, moved here so that
-        * Special:SpecialPages can safely call it for all special pages.
-        *
-        * @return Boolean
-        */
-       public function isExpensive() {
-               return false;
-       }
-
-       /**
-        * Is this page cached?
-        * Expensive pages are cached or disabled in miser mode.
-        * Used by QueryPage and subclasses, moved here so that
-        * Special:SpecialPages can safely call it for all special pages.
-        *
-        * @return Boolean
-        * @since 1.21
-        */
-       public function isCached() {
-               return false;
-       }
-
-       /**
-        * Can be overridden by subclasses with more complicated permissions
-        * schemes.
-        *
-        * @return Boolean: should the page be displayed with the restricted-access
-        *   pages?
-        */
-       public function isRestricted() {
-               // DWIM: If anons can do something, then it is not restricted
-               return $this->mRestriction != '' && !User::groupHasPermission( '*', $this->mRestriction );
-       }
-
-       /**
-        * Checks if the given user (identified by an object) can execute this
-        * special page (as defined by $mRestriction).  Can be overridden by sub-
-        * classes with more complicated permissions schemes.
-        *
-        * @param $user User: the user to check
-        * @return Boolean: does the user have permission to view the page?
-        */
-       public function userCanExecute( User $user ) {
-               return $user->isAllowed( $this->mRestriction );
-       }
-
-       /**
-        * Output an error message telling the user what access level they have to have
-        */
-       function displayRestrictionError() {
-               throw new PermissionsError( $this->mRestriction );
-       }
-
-       /**
-        * Checks if userCanExecute, and if not throws a PermissionsError
-        *
-        * @since 1.19
-        */
-       public function checkPermissions() {
-               if ( !$this->userCanExecute( $this->getUser() ) ) {
-                       $this->displayRestrictionError();
-               }
-       }
-
-       /**
-        * If the wiki is currently in readonly mode, throws a ReadOnlyError
-        *
-        * @since 1.19
-        * @throws ReadOnlyError
-        */
-       public function checkReadOnly() {
-               if ( wfReadOnly() ) {
-                       throw new ReadOnlyError;
-               }
-       }
-
-       /**
-        * If the user is not logged in, throws UserNotLoggedIn error.
-        *
-        * Default error message includes a link to Special:Userlogin with properly set 'returnto' query
-        * parameter.
-        *
-        * @since 1.23
-        * @param string|Message $reasonMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
-        *     will be used as message keys. If a string is given, the message will also receive a
-        *     formatted login link (generated using the 'loginreqlink' message) as first parameter. If a
-        *     Message is given, it will be passed on verbatim.
-        * @param string|Message $titleMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
-        *     will be used as message keys.
-        * @throws UserNotLoggedIn
-        */
-       public function requireLogin( $reasonMsg = null, $titleMsg = null ) {
-               if ( $this->getUser()->isAnon() ) {
-                       // Use default messages if not given or explicit null passed
-                       if ( !$reasonMsg ) {
-                               $reasonMsg = 'exception-nologin-text-manual';
-                       }
-                       if ( !$titleMsg ) {
-                               $titleMsg = 'exception-nologin';
-                       }
-
-                       // Convert to Messages with current context
-                       if ( is_string( $reasonMsg ) ) {
-                               $loginreqlink = Linker::linkKnown(
-                                       SpecialPage::getTitleFor( 'Userlogin' ),
-                                       $this->msg( 'loginreqlink' )->escaped(),
-                                       array(),
-                                       array( 'returnto' => $this->getTitle()->getPrefixedText() )
-                               );
-                               $reasonMsg = $this->msg( $reasonMsg )->rawParams( $loginreqlink );
-                       }
-                       if ( is_string( $titleMsg ) ) {
-                               $titleMsg = $this->msg( $titleMsg );
-                       }
-
-                       throw new UserNotLoggedIn( $reasonMsg, $titleMsg );
-               }
-       }
-
-       /**
-        * Sets headers - this should be called from the execute() method of all derived classes!
-        */
-       function setHeaders() {
-               $out = $this->getOutput();
-               $out->setArticleRelated( false );
-               $out->setRobotPolicy( "noindex,nofollow" );
-               $out->setPageTitle( $this->getDescription() );
-       }
-
-       /**
-        * Entry point.
-        *
-        * @since 1.20
-        *
-        * @param $subPage string|null
-        */
-       final public function run( $subPage ) {
-               /**
-                * Gets called before @see SpecialPage::execute.
-                *
-                * @since 1.20
-                *
-                * @param $special SpecialPage
-                * @param $subPage string|null
-                */
-               wfRunHooks( 'SpecialPageBeforeExecute', array( $this, $subPage ) );
-
-               $this->beforeExecute( $subPage );
-               $this->execute( $subPage );
-               $this->afterExecute( $subPage );
-
-               /**
-                * Gets called after @see SpecialPage::execute.
-                *
-                * @since 1.20
-                *
-                * @param $special SpecialPage
-                * @param $subPage string|null
-                */
-               wfRunHooks( 'SpecialPageAfterExecute', array( $this, $subPage ) );
-       }
-
-       /**
-        * Gets called before @see SpecialPage::execute.
-        *
-        * @since 1.20
-        *
-        * @param $subPage string|null
-        */
-       protected function beforeExecute( $subPage ) {
-               // No-op
-       }
-
-       /**
-        * Gets called after @see SpecialPage::execute.
-        *
-        * @since 1.20
-        *
-        * @param $subPage string|null
-        */
-       protected function afterExecute( $subPage ) {
-               // No-op
-       }
-
-       /**
-        * Default execute method
-        * Checks user permissions, calls the function given in mFunction
-        *
-        * This must be overridden by subclasses; it will be made abstract in a future version
-        *
-        * @param $subPage string|null
-        */
-       public function execute( $subPage ) {
-               $this->setHeaders();
-               $this->checkPermissions();
-
-               $func = $this->mFunction;
-               // only load file if the function does not exist
-               if ( !is_callable( $func ) && $this->mFile ) {
-                       require_once $this->mFile;
-               }
-               $this->outputHeader();
-               call_user_func( $func, $subPage, $this );
-       }
-
-       /**
-        * Outputs a summary message on top of special pages
-        * Per default the message key is the canonical name of the special page
-        * May be overridden, i.e. by extensions to stick with the naming conventions
-        * for message keys: 'extensionname-xxx'
-        *
-        * @param string $summaryMessageKey message key of the summary
-        */
-       function outputHeader( $summaryMessageKey = '' ) {
-               global $wgContLang;
-
-               if ( $summaryMessageKey == '' ) {
-                       $msg = $wgContLang->lc( $this->getName() ) . '-summary';
-               } else {
-                       $msg = $summaryMessageKey;
-               }
-               if ( !$this->msg( $msg )->isDisabled() && !$this->including() ) {
-                       $this->getOutput()->wrapWikiMsg(
-                               "<div class='mw-specialpage-summary'>\n$1\n</div>", $msg );
-               }
-
-       }
-
-       /**
-        * Returns the name that goes in the \<h1\> in the special page itself, and
-        * also the name that will be listed in Special:Specialpages
-        *
-        * Derived classes can override this, but usually it is easier to keep the
-        * default behavior. Messages can be added at run-time, see
-        * MessageCache.php.
-        *
-        * @return String
-        */
-       function getDescription() {
-               return $this->msg( strtolower( $this->mName ) )->text();
-       }
-
-       /**
-        * Get a self-referential title object
-        *
-        * @param $subpage String|Bool
-        * @return Title object
-        */
-       function getTitle( $subpage = false ) {
-               return self::getTitleFor( $this->mName, $subpage );
-       }
-
-       /**
-        * Sets the context this SpecialPage is executed in
-        *
-        * @param $context IContextSource
-        * @since 1.18
-        */
-       public function setContext( $context ) {
-               $this->mContext = $context;
-       }
-
-       /**
-        * Gets the context this SpecialPage is executed in
-        *
-        * @return IContextSource|RequestContext
-        * @since 1.18
-        */
-       public function getContext() {
-               if ( $this->mContext instanceof IContextSource ) {
-                       return $this->mContext;
-               } else {
-                       wfDebug( __METHOD__ . " called and \$mContext is null. " .
-                               "Return RequestContext::getMain(); for sanity\n" );
-                       return RequestContext::getMain();
-               }
-       }
-
-       /**
-        * Get the WebRequest being used for this instance
-        *
-        * @return WebRequest
-        * @since 1.18
-        */
-       public function getRequest() {
-               return $this->getContext()->getRequest();
-       }
-
-       /**
-        * Get the OutputPage being used for this instance
-        *
-        * @return OutputPage
-        * @since 1.18
-        */
-       public function getOutput() {
-               return $this->getContext()->getOutput();
-       }
-
-       /**
-        * Shortcut to get the User executing this instance
-        *
-        * @return User
-        * @since 1.18
-        */
-       public function getUser() {
-               return $this->getContext()->getUser();
-       }
-
-       /**
-        * Shortcut to get the skin being used for this instance
-        *
-        * @return Skin
-        * @since 1.18
-        */
-       public function getSkin() {
-               return $this->getContext()->getSkin();
-       }
-
-       /**
-        * Shortcut to get user's language
-        *
-        * @deprecated since 1.19 Use getLanguage instead
-        * @return Language
-        * @since 1.18
-        */
-       public function getLang() {
-               wfDeprecated( __METHOD__, '1.19' );
-               return $this->getLanguage();
-       }
-
-       /**
-        * Shortcut to get user's language
-        *
-        * @return Language
-        * @since 1.19
-        */
-       public function getLanguage() {
-               return $this->getContext()->getLanguage();
-       }
-
-       /**
-        * Return the full title, including $par
-        *
-        * @return Title
-        * @since 1.18
-        */
-       public function getFullTitle() {
-               return $this->getContext()->getTitle();
-       }
-
-       /**
-        * Wrapper around wfMessage that sets the current context.
-        *
-        * @return Message
-        * @see wfMessage
-        */
-       public function msg( /* $args */ ) {
-               $message = call_user_func_array(
-                       array( $this->getContext(), 'msg' ),
-                       func_get_args()
-               );
-               // RequestContext passes context to wfMessage, and the language is set from
-               // the context, but setting the language for Message class removes the
-               // interface message status, which breaks for example usernameless gender
-               // invocations. Restore the flag when not including special page in content.
-               if ( $this->including() ) {
-                       $message->setInterfaceMessageFlag( false );
-               }
-               return $message;
-       }
-
-       /**
-        * Adds RSS/atom links
-        *
-        * @param $params array
-        */
-       protected function addFeedLinks( $params ) {
-               global $wgFeedClasses;
-
-               $feedTemplate = wfScript( 'api' );
-
-               foreach ( $wgFeedClasses as $format => $class ) {
-                       $theseParams = $params + array( 'feedformat' => $format );
-                       $url = wfAppendQuery( $feedTemplate, $theseParams );
-                       $this->getOutput()->addFeedLink( $format, $url );
-               }
-       }
-
-       /**
-        * Get the group that the special page belongs in on Special:SpecialPage
-        * Use this method, instead of getGroupName to allow customization
-        * of the group name from the wiki side
-        *
-        * @return string Group of this special page
-        * @since 1.21
-        */
-       public function getFinalGroupName() {
-               global $wgSpecialPageGroups;
-               $name = $this->getName();
-
-               // Allow overbidding the group from the wiki side
-               $msg = $this->msg( 'specialpages-specialpagegroup-' . strtolower( $name ) )->inContentLanguage();
-               if ( !$msg->isBlank() ) {
-                       $group = $msg->text();
-               } else {
-                       // Than use the group from this object
-                       $group = $this->getGroupName();
-
-                       // Group '-' is used as default to have the chance to determine,
-                       // if the special pages overrides this method,
-                       // if not overridden, $wgSpecialPageGroups is checked for b/c
-                       if ( $group === '-' && isset( $wgSpecialPageGroups[$name] ) ) {
-                               $group = $wgSpecialPageGroups[$name];
-                       }
-               }
-
-               // never give '-' back, change to 'other'
-               if ( $group === '-' ) {
-                       $group = 'other';
-               }
-
-               return $group;
-       }
-
-       /**
-        * Under which header this special page is listed in Special:SpecialPages
-        * See messages 'specialpages-group-*' for valid names
-        * This method defaults to group 'other'
-        *
-        * @return string
-        * @since 1.21
-        */
-       protected function getGroupName() {
-               // '-' used here to determine, if this group is overridden or has a hardcoded 'other'
-               // Needed for b/c in getFinalGroupName
-               return '-';
-       }
-}
-
-/**
- * Special page which uses an HTMLForm to handle processing.  This is mostly a
- * clone of FormAction.  More special pages should be built this way; maybe this could be
- * a new structure for SpecialPages
- */
-abstract class FormSpecialPage extends SpecialPage {
-       /**
-        * The sub-page of the special page.
-        * @var string
-        */
-       protected $par = null;
-
-       /**
-        * Get an HTMLForm descriptor array
-        * @return Array
-        */
-       abstract protected function getFormFields();
-
-       /**
-        * Add pre-text to the form
-        * @return String HTML which will be sent to $form->addPreText()
-        */
-       protected function preText() {
-               return '';
-       }
-
-       /**
-        * Add post-text to the form
-        * @return String HTML which will be sent to $form->addPostText()
-        */
-       protected function postText() {
-               return '';
-       }
-
-       /**
-        * Play with the HTMLForm if you need to more substantially
-        * @param $form HTMLForm
-        */
-       protected function alterForm( HTMLForm $form ) {
-       }
-
-       /**
-        * Get message prefix for HTMLForm
-        *
-        * @since 1.21
-        * @return string
-        */
-       protected function getMessagePrefix() {
-               return strtolower( $this->getName() );
-       }
-
-       /**
-        * Get the HTMLForm to control behavior
-        * @return HTMLForm|null
-        */
-       protected function getForm() {
-               $this->fields = $this->getFormFields();
-
-               $form = new HTMLForm( $this->fields, $this->getContext(), $this->getMessagePrefix() );
-               $form->setSubmitCallback( array( $this, 'onSubmit' ) );
-               // If the form is a compact vertical form, then don't output this ugly
-               // fieldset surrounding it.
-               // XXX Special pages can setDisplayFormat to 'vform' in alterForm(), but that
-               // is called after this.
-               if ( !$form->isVForm() ) {
-                       $form->setWrapperLegendMsg( $this->getMessagePrefix() . '-legend' );
-               }
-
-               $headerMsg = $this->msg( $this->getMessagePrefix() . '-text' );
-               if ( !$headerMsg->isDisabled() ) {
-                       $form->addHeaderText( $headerMsg->parseAsBlock() );
-               }
-
-               // Retain query parameters (uselang etc)
-               $params = array_diff_key(
-                       $this->getRequest()->getQueryValues(), array( 'title' => null ) );
-               $form->addHiddenField( 'redirectparams', wfArrayToCgi( $params ) );
-
-               $form->addPreText( $this->preText() );
-               $form->addPostText( $this->postText() );
-               $this->alterForm( $form );
-
-               // Give hooks a chance to alter the form, adding extra fields or text etc
-               wfRunHooks( "Special{$this->getName()}BeforeFormDisplay", array( &$form ) );
-
-               return $form;
-       }
-
-       /**
-        * Process the form on POST submission.
-        * @param  $data Array
-        * @return Bool|Array true for success, false for didn't-try, array of errors on failure
-        */
-       abstract public function onSubmit( array $data );
-
-       /**
-        * Do something exciting on successful processing of the form, most likely to show a
-        * confirmation message
-        * @since 1.22 Default is to do nothing
-        */
-       public function onSuccess() {
-       }
-
-       /**
-        * Basic SpecialPage workflow: get a form, send it to the user; get some data back,
-        *
-        * @param string $par Subpage string if one was specified
-        */
-       public function execute( $par ) {
-               $this->setParameter( $par );
-               $this->setHeaders();
-
-               // This will throw exceptions if there's a problem
-               $this->checkExecutePermissions( $this->getUser() );
-
-               $form = $this->getForm();
-               if ( $form->show() ) {
-                       $this->onSuccess();
-               }
-       }
-
-       /**
-        * Maybe do something interesting with the subpage parameter
-        * @param string $par
-        */
-       protected function setParameter( $par ) {
-               $this->par = $par;
-       }
-
-       /**
-        * Called from execute() to check if the given user can perform this action.
-        * Failures here must throw subclasses of ErrorPageError.
-        * @param $user User
-        * @throws UserBlockedError
-        * @return Bool true
-        */
-       protected function checkExecutePermissions( User $user ) {
-               $this->checkPermissions();
-
-               if ( $this->requiresUnblock() && $user->isBlocked() ) {
-                       $block = $user->getBlock();
-                       throw new UserBlockedError( $block );
-               }
-
-               if ( $this->requiresWrite() ) {
-                       $this->checkReadOnly();
-               }
-
-               return true;
-       }
-
-       /**
-        * Whether this action requires the wiki not to be locked
-        * @return Bool
-        */
-       public function requiresWrite() {
-               return true;
-       }
-
-       /**
-        * Whether this action cannot be executed by a blocked user
-        * @return Bool
-        */
-       public function requiresUnblock() {
-               return true;
-       }
-}
-
-/**
- * Shortcut to construct a special page which is unlisted by default
- * @ingroup SpecialPage
- */
-class UnlistedSpecialPage extends SpecialPage {
-       function __construct( $name, $restriction = '', $function = false, $file = 'default' ) {
-               parent::__construct( $name, $restriction, false, $function, $file );
-       }
-
-       public function isListed() {
-               return false;
-       }
-}
-
-/**
- * Shortcut to construct an includable special  page
- * @ingroup SpecialPage
- */
-class IncludableSpecialPage extends SpecialPage {
-       function __construct(
-               $name, $restriction = '', $listed = true, $function = false, $file = 'default'
-       ) {
-               parent::__construct( $name, $restriction, $listed, $function, $file, true );
-       }
-
-       public function isIncludable() {
-               return true;
-       }
-}
-
-/**
- * Shortcut to construct a special page alias.
- * @ingroup SpecialPage
- */
-abstract class RedirectSpecialPage extends UnlistedSpecialPage {
-
-       // Query parameters that can be passed through redirects
-       protected $mAllowedRedirectParams = array();
-
-       // Query parameters added by redirects
-       protected $mAddedRedirectParams = array();
-
-       public function execute( $par ) {
-               $redirect = $this->getRedirect( $par );
-               $query = $this->getRedirectQuery();
-               // Redirect to a page title with possible query parameters
-               if ( $redirect instanceof Title ) {
-                       $url = $redirect->getFullURL( $query );
-                       $this->getOutput()->redirect( $url );
-                       return $redirect;
-               } elseif ( $redirect === true ) {
-                       // Redirect to index.php with query parameters
-                       $url = wfAppendQuery( wfScript( 'index' ), $query );
-                       $this->getOutput()->redirect( $url );
-                       return $redirect;
-               } else {
-                       $class = get_class( $this );
-                       throw new MWException( "RedirectSpecialPage $class doesn't redirect!" );
-               }
-       }
-
-       /**
-        * If the special page is a redirect, then get the Title object it redirects to.
-        * False otherwise.
-        *
-        * @param string $par Subpage string
-        * @return Title|bool
-        */
-       abstract public function getRedirect( $par );
-
-       /**
-        * Return part of the request string for a special redirect page
-        * This allows passing, e.g. action=history to Special:Mypage, etc.
-        *
-        * @return String
-        */
-       public function getRedirectQuery() {
-               $params = array();
-
-               foreach ( $this->mAllowedRedirectParams as $arg ) {
-                       if ( $this->getRequest()->getVal( $arg, null ) !== null ) {
-                               $params[$arg] = $this->getRequest()->getVal( $arg );
-                       }
-               }
-
-               foreach ( $this->mAddedRedirectParams as $arg => $val ) {
-                       $params[$arg] = $val;
-               }
-
-               return count( $params )
-                       ? $params
-                       : false;
-       }
-}
-
-abstract class SpecialRedirectToSpecial extends RedirectSpecialPage {
-       // @todo FIXME: Visibility must be declared
-       var $redirName, $redirSubpage;
-
-       function __construct(
-               $name, $redirName, $redirSubpage = false,
-               $allowedRedirectParams = array(), $addedRedirectParams = array()
-       ) {
-               parent::__construct( $name );
-               $this->redirName = $redirName;
-               $this->redirSubpage = $redirSubpage;
-               $this->mAllowedRedirectParams = $allowedRedirectParams;
-               $this->mAddedRedirectParams = $addedRedirectParams;
-       }
-
-       public function getRedirect( $subpage ) {
-               if ( $this->redirSubpage === false ) {
-                       return SpecialPage::getTitleFor( $this->redirName, $subpage );
-               } else {
-                       return SpecialPage::getTitleFor( $this->redirName, $this->redirSubpage );
-               }
-       }
-}
-
-/**
- * ListAdmins --> ListUsers/sysop
- */
-class SpecialListAdmins extends SpecialRedirectToSpecial {
-       function __construct() {
-               parent::__construct( 'Listadmins', 'Listusers', 'sysop' );
-       }
-}
-
-/**
- * ListBots --> ListUsers/bot
- */
-class SpecialListBots extends SpecialRedirectToSpecial {
-       function __construct() {
-               parent::__construct( 'Listbots', 'Listusers', 'bot' );
-       }
-}
-
-/**
- * CreateAccount --> UserLogin/signup
- * @todo FIXME: This (and the rest of the login frontend) needs to die a horrible painful death
- */
-class SpecialCreateAccount extends SpecialRedirectToSpecial {
-       function __construct() {
-               parent::__construct( 'CreateAccount', 'Userlogin', 'signup', array( 'returnto', 'returntoquery', 'uselang' ) );
-       }
-
-       // No reason to hide this link on Special:Specialpages
-       public function isListed() {
-               return true;
-       }
-
-       protected function getGroupName() {
-               return 'login';
-       }
-}
-/**
- * SpecialMypage, SpecialMytalk and SpecialMycontributions special pages
- * are used to get user independent links pointing to the user page, talk
- * page and list of contributions.
- * This can let us cache a single copy of any generated content for all
- * users.
- */
-
-/**
- * Superclass for any RedirectSpecialPage which redirects the user
- * to a particular article (as opposed to user contributions, logs, etc.).
- *
- * For security reasons these special pages are restricted to pass on
- * the following subset of GET parameters to the target page while
- * removing all others:
- *
- * - useskin, uselang, printable: to alter the appearance of the resulting page
- *
- * - redirect: allows viewing one's user page or talk page even if it is a
- * redirect.
- *
- * - rdfrom: allows redirecting to one's user page or talk page from an
- * external wiki with the "Redirect from..." notice.
- *
- * - limit, offset: Useful for linking to history of one's own user page or
- * user talk page. For example, this would be a link to "the last edit to your
- * user talk page in the year 2010":
- * http://en.wikipedia.org/wiki/Special:MyPage?offset=20110000000000&limit=1&action=history
- *
- * - feed: would allow linking to the current user's RSS feed for their user
- * talk page:
- * http://en.wikipedia.org/w/index.php?title=Special:MyTalk&action=history&feed=rss
- *
- * - preloadtitle: Can be used to provide a default section title for a
- * preloaded new comment on one's own talk page.
- *
- * - summary : Can be used to provide a default edit summary for a preloaded
- * edit to one's own user page or talk page.
- *
- * - preview: Allows showing/hiding preview on first edit regardless of user
- * preference, useful for preloaded edits where you know preview wouldn't be
- * useful.
- *
- * - internaledit, externaledit, mode: Allows forcing the use of the
- * internal/external editor, e.g. to force the internal editor for
- * short/simple preloaded edits.
- *
- * - redlink: Affects the message the user sees if their talk page/user talk
- * page does not currently exist. Avoids confusion for newbies with no user
- * pages over why they got a "permission error" following this link:
- * http://en.wikipedia.org/w/index.php?title=Special:MyPage&redlink=1
- *
- * - debug: determines whether the debug parameter is passed to load.php,
- * which disables reformatting and allows scripts to be debugged. Useful
- * when debugging scripts that manipulate one's own user page or talk page.
- *
- * @par Hook extension:
- * Extensions can add to the redirect parameters list by using the hook
- * RedirectSpecialArticleRedirectParams
- *
- * This hook allows extensions which add GET parameters like FlaggedRevs to
- * retain those parameters when redirecting using special pages.
- *
- * @par Hook extension example:
- * @code
- *     $wgHooks['RedirectSpecialArticleRedirectParams'][] =
- *             'MyExtensionHooks::onRedirectSpecialArticleRedirectParams';
- *     public static function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
- *             $redirectParams[] = 'stable';
- *             return true;
- *     }
- * @endcode
- * @ingroup SpecialPage
- */
-abstract class RedirectSpecialArticle extends RedirectSpecialPage {
-       function __construct( $name ) {
-               parent::__construct( $name );
-               $redirectParams = array(
-                       'action',
-                       'redirect', 'rdfrom',
-                       # Options for preloaded edits
-                       'preload', 'editintro', 'preloadtitle', 'summary', 'nosummary',
-                       # Options for overriding user settings
-                       'preview', 'internaledit', 'externaledit', 'mode', 'minor', 'watchthis',
-                       # Options for history/diffs
-                       'section', 'oldid', 'diff', 'dir',
-                       'limit', 'offset', 'feed',
-                       # Misc options
-                       'redlink', 'debug',
-                       # Options for action=raw; missing ctype can break JS or CSS in some browsers
-                       'ctype', 'maxage', 'smaxage',
-               );
-
-               wfRunHooks( "RedirectSpecialArticleRedirectParams", array( &$redirectParams ) );
-               $this->mAllowedRedirectParams = $redirectParams;
-       }
-}
-
-/**
- * Shortcut to construct a special page pointing to current user user's page.
- * @ingroup SpecialPage
- */
-class SpecialMypage extends RedirectSpecialArticle {
-       function __construct() {
-               parent::__construct( 'Mypage' );
-       }
-
-       function getRedirect( $subpage ) {
-               if ( strval( $subpage ) !== '' ) {
-                       return Title::makeTitle( NS_USER, $this->getUser()->getName() . '/' . $subpage );
-               } else {
-                       return Title::makeTitle( NS_USER, $this->getUser()->getName() );
-               }
-       }
-}
-
-/**
- * Shortcut to construct a special page pointing to current user talk page.
- * @ingroup SpecialPage
- */
-class SpecialMytalk extends RedirectSpecialArticle {
-       function __construct() {
-               parent::__construct( 'Mytalk' );
-       }
-
-       function getRedirect( $subpage ) {
-               if ( strval( $subpage ) !== '' ) {
-                       return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() . '/' . $subpage );
-               } else {
-                       return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() );
-               }
-       }
-}
-
-/**
- * Shortcut to construct a special page pointing to current user contributions.
- * @ingroup SpecialPage
- */
-class SpecialMycontributions extends RedirectSpecialPage {
-       function __construct() {
-               parent::__construct( 'Mycontributions' );
-               $this->mAllowedRedirectParams = array( 'limit', 'namespace', 'tagfilter',
-                       'offset', 'dir', 'year', 'month', 'feed' );
-       }
-
-       function getRedirect( $subpage ) {
-               return SpecialPage::getTitleFor( 'Contributions', $this->getUser()->getName() );
-       }
-}
-
-/**
- * Redirect to Special:Listfiles?user=$wgUser
- */
-class SpecialMyuploads extends RedirectSpecialPage {
-       function __construct() {
-               parent::__construct( 'Myuploads' );
-               $this->mAllowedRedirectParams = array( 'limit', 'ilshowall', 'ilsearch' );
-       }
-
-       function getRedirect( $subpage ) {
-               return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
-       }
-}
-
-/**
- * Redirect Special:Listfiles?user=$wgUser&ilshowall=true
- */
-class SpecialAllMyUploads extends RedirectSpecialPage {
-       function __construct() {
-               parent::__construct( 'AllMyUploads' );
-               $this->mAllowedRedirectParams = array( 'limit', 'ilsearch' );
-       }
-
-       function getRedirect( $subpage ) {
-               $this->mAddedRedirectParams['ilshowall'] = 1;
-               return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
-       }
-}
-
-/**
- * Redirect from Special:PermanentLink/### to index.php?oldid=###
- */
-class SpecialPermanentLink extends RedirectSpecialPage {
-       function __construct() {
-               parent::__construct( 'PermanentLink' );
-               $this->mAllowedRedirectParams = array();
-       }
-
-       function getRedirect( $subpage ) {
-               $subpage = intval( $subpage );
-               if ( $subpage === 0 ) {
-                       # throw an error page when no subpage was given
-                       throw new ErrorPageError( 'nopagetitle', 'nopagetext' );
-               }
-               $this->mAddedRedirectParams['oldid'] = $subpage;
-               return true;
-       }
-}
diff --git a/includes/SpecialPageFactory.php b/includes/SpecialPageFactory.php
deleted file mode 100644 (file)
index 30eb129..0000000
+++ /dev/null
@@ -1,591 +0,0 @@
-<?php
-/**
- * Factory for handling the special page list and generating SpecialPage objects.
- *
- * 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 SpecialPage
- * @defgroup SpecialPage SpecialPage
- */
-
-/**
- * Factory for handling the special page list and generating SpecialPage objects.
- *
- * To add a special page in an extension, add to $wgSpecialPages either
- * an object instance or an array containing the name and constructor
- * parameters. The latter is preferred for performance reasons.
- *
- * The object instantiated must be either an instance of SpecialPage or a
- * sub-class thereof. It must have an execute() method, which sends the HTML
- * for the special page to $wgOut. The parent class has an execute() method
- * which distributes the call to the historical global functions. Additionally,
- * execute() also checks if the user has the necessary access privileges
- * and bails out if not.
- *
- * To add a core special page, use the similar static list in
- * SpecialPageFactory::$list. To remove a core static special page at runtime, use
- * a SpecialPage_initList hook.
- *
- * @ingroup SpecialPage
- * @since 1.17
- */
-class SpecialPageFactory {
-
-       /**
-        * List of special page names to the subclass of SpecialPage which handles them.
-        */
-       private static $list = array(
-               // Maintenance Reports
-               'BrokenRedirects'           => 'BrokenRedirectsPage',
-               'Deadendpages'              => 'DeadendpagesPage',
-               'DoubleRedirects'           => 'DoubleRedirectsPage',
-               'Longpages'                 => 'LongpagesPage',
-               'Ancientpages'              => 'AncientpagesPage',
-               'Lonelypages'               => 'LonelypagesPage',
-               'Fewestrevisions'           => 'FewestrevisionsPage',
-               'Withoutinterwiki'          => 'WithoutinterwikiPage',
-               'Protectedpages'            => 'SpecialProtectedpages',
-               'Protectedtitles'           => 'SpecialProtectedtitles',
-               'Shortpages'                => 'ShortpagesPage',
-               'Uncategorizedcategories'   => 'UncategorizedcategoriesPage',
-               'Uncategorizedimages'       => 'UncategorizedimagesPage',
-               'Uncategorizedpages'        => 'UncategorizedpagesPage',
-               'Uncategorizedtemplates'    => 'UncategorizedtemplatesPage',
-               'Unusedcategories'          => 'UnusedcategoriesPage',
-               'Unusedimages'              => 'UnusedimagesPage',
-               'Unusedtemplates'           => 'UnusedtemplatesPage',
-               'Unwatchedpages'            => 'UnwatchedpagesPage',
-               'Wantedcategories'          => 'WantedcategoriesPage',
-               'Wantedfiles'               => 'WantedfilesPage',
-               'Wantedpages'               => 'WantedpagesPage',
-               'Wantedtemplates'           => 'WantedtemplatesPage',
-
-               // List of pages
-               'Allpages'                  => 'SpecialAllpages',
-               'Prefixindex'               => 'SpecialPrefixindex',
-               'Categories'                => 'SpecialCategories',
-               'Listredirects'             => 'ListredirectsPage',
-               'PagesWithProp'             => 'SpecialPagesWithProp',
-
-               // Login/create account
-               'Userlogin'                 => 'LoginForm',
-               'CreateAccount'             => 'SpecialCreateAccount',
-
-               // Users and rights
-               'Block'                     => 'SpecialBlock',
-               'Unblock'                   => 'SpecialUnblock',
-               'BlockList'                 => 'SpecialBlockList',
-               'ChangePassword'            => 'SpecialChangePassword',
-               'PasswordReset'             => 'SpecialPasswordReset',
-               'DeletedContributions'      => 'DeletedContributionsPage',
-               'Preferences'               => 'SpecialPreferences',
-               'ResetTokens'               => 'SpecialResetTokens',
-               'Contributions'             => 'SpecialContributions',
-               'Listgrouprights'           => 'SpecialListGroupRights',
-               'Listusers'                 => 'SpecialListUsers',
-               'Listadmins'                => 'SpecialListAdmins',
-               'Listbots'                  => 'SpecialListBots',
-               'Activeusers'               => 'SpecialActiveUsers',
-               'Userrights'                => 'UserrightsPage',
-               'EditWatchlist'             => 'SpecialEditWatchlist',
-
-               // Recent changes and logs
-               'Newimages'                 => 'SpecialNewFiles',
-               'Log'                       => 'SpecialLog',
-               'Watchlist'                 => 'SpecialWatchlist',
-               'Newpages'                  => 'SpecialNewpages',
-               'Recentchanges'             => 'SpecialRecentChanges',
-               'Recentchangeslinked'       => 'SpecialRecentchangeslinked',
-               'Tags'                      => 'SpecialTags',
-
-               // Media reports and uploads
-               'Listfiles'                 => 'SpecialListFiles',
-               'Filepath'                  => 'SpecialFilepath',
-               'MIMEsearch'                => 'MIMEsearchPage',
-               'FileDuplicateSearch'       => 'FileDuplicateSearchPage',
-               'Upload'                    => 'SpecialUpload',
-               'UploadStash'               => 'SpecialUploadStash',
-
-               // Data and tools
-               'Statistics'                => 'SpecialStatistics',
-               'Allmessages'               => 'SpecialAllmessages',
-               'Version'                   => 'SpecialVersion',
-               'Lockdb'                    => 'SpecialLockdb',
-               'Unlockdb'                  => 'SpecialUnlockdb',
-
-               // Redirecting special pages
-               'LinkSearch'                => 'LinkSearchPage',
-               'Randompage'                => 'Randompage',
-               'RandomInCategory'          => 'SpecialRandomInCategory',
-               'Randomredirect'            => 'SpecialRandomredirect',
-
-               // High use pages
-               'Mostlinkedcategories'      => 'MostlinkedCategoriesPage',
-               'Mostimages'                => 'MostimagesPage',
-               'Mostinterwikis'            => 'MostinterwikisPage',
-               'Mostlinked'                => 'MostlinkedPage',
-               'Mostlinkedtemplates'       => 'MostlinkedTemplatesPage',
-               'Mostcategories'            => 'MostcategoriesPage',
-               'Mostrevisions'             => 'MostrevisionsPage',
-
-               // Page tools
-               'ComparePages'              => 'SpecialComparePages',
-               'Export'                    => 'SpecialExport',
-               'Import'                    => 'SpecialImport',
-               'Undelete'                  => 'SpecialUndelete',
-               'Whatlinkshere'             => 'SpecialWhatlinkshere',
-               'MergeHistory'              => 'SpecialMergeHistory',
-               'ExpandTemplates'           => 'SpecialExpandTemplates',
-
-               // Other
-               'Booksources'               => 'SpecialBookSources',
-
-               // Unlisted / redirects
-               'Blankpage'                 => 'SpecialBlankpage',
-               'Emailuser'                 => 'SpecialEmailUser',
-               'Movepage'                  => 'MovePageForm',
-               'Mycontributions'           => 'SpecialMycontributions',
-               'Mypage'                    => 'SpecialMypage',
-               'Mytalk'                    => 'SpecialMytalk',
-               'Myuploads'                 => 'SpecialMyuploads',
-               'AllMyUploads'              => 'SpecialAllMyUploads',
-               'PermanentLink'             => 'SpecialPermanentLink',
-               'Redirect'                  => 'SpecialRedirect',
-               'Revisiondelete'            => 'SpecialRevisionDelete',
-               'Specialpages'              => 'SpecialSpecialpages',
-               'Userlogout'                => 'SpecialUserlogout',
-       );
-
-       private static $aliases;
-
-       /**
-        * Get the special page list
-        *
-        * @return array
-        */
-       static function getList() {
-               global $wgSpecialPages;
-               global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
-               global $wgEnableEmail, $wgEnableJavaScriptTest;
-
-               if ( !is_object( self::$list ) ) {
-                       wfProfileIn( __METHOD__ );
-
-                       if ( !$wgDisableCounters ) {
-                               self::$list['Popularpages'] = 'PopularpagesPage';
-                       }
-
-                       if ( !$wgDisableInternalSearch ) {
-                               self::$list['Search'] = 'SpecialSearch';
-                       }
-
-                       if ( $wgEmailAuthentication ) {
-                               self::$list['Confirmemail'] = 'EmailConfirmation';
-                               self::$list['Invalidateemail'] = 'EmailInvalidation';
-                       }
-
-                       if ( $wgEnableEmail ) {
-                               self::$list['ChangeEmail'] = 'SpecialChangeEmail';
-                       }
-
-                       if ( $wgEnableJavaScriptTest ) {
-                               self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
-                       }
-
-                       // Add extension special pages
-                       self::$list = array_merge( self::$list, $wgSpecialPages );
-
-                       // Run hooks
-                       // This hook can be used to remove undesired built-in special pages
-                       wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
-
-                       // Cast to object: func()[$key] doesn't work, but func()->$key does
-                       settype( self::$list, 'object' );
-
-                       wfProfileOut( __METHOD__ );
-               }
-               return self::$list;
-       }
-
-       /**
-        * Initialise and return the list of special page aliases.  Returns an object with
-        * properties which can be accessed $obj->pagename - each property is an array of
-        * aliases; the first in the array is the canonical alias.  All registered special
-        * pages are guaranteed to have a property entry, and for that property array to
-        * contain at least one entry (English fallbacks will be added if necessary).
-        * @return Object
-        */
-       static function getAliasList() {
-               if ( !is_object( self::$aliases ) ) {
-                       global $wgContLang;
-                       $aliases = $wgContLang->getSpecialPageAliases();
-
-                       // Objects are passed by reference by default, need to create a copy
-                       $missingPages = clone self::getList();
-
-                       self::$aliases = array();
-                       foreach ( $aliases as $realName => $aliasList ) {
-                               foreach ( $aliasList as $alias ) {
-                                       self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
-                               }
-                               unset( $missingPages->$realName );
-                       }
-                       foreach ( $missingPages as $name => $stuff ) {
-                               self::$aliases[$wgContLang->caseFold( $name )] = $name;
-                       }
-
-                       // Cast to object: func()[$key] doesn't work, but func()->$key does
-                       self::$aliases = (object)self::$aliases;
-               }
-               return self::$aliases;
-       }
-
-       /**
-        * Given a special page name with a possible subpage, return an array
-        * where the first element is the special page name and the second is the
-        * subpage.
-        *
-        * @param $alias String
-        * @return Array( String, String|null ), or array( null, null ) if the page is invalid
-        */
-       public static function resolveAlias( $alias ) {
-               global $wgContLang;
-               $bits = explode( '/', $alias, 2 );
-
-               $caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
-               $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
-               if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
-                       $name = self::getAliasList()->$caseFoldedAlias;
-               } else {
-                       return array( null, null );
-               }
-
-               if ( !isset( $bits[1] ) ) { // bug 2087
-                       $par = null;
-               } else {
-                       $par = $bits[1];
-               }
-
-               return array( $name, $par );
-       }
-
-       /**
-        * Add a page to a certain display group for Special:SpecialPages
-        *
-        * @param $page Mixed: SpecialPage or string
-        * @param $group String
-        * @deprecated since 1.21 Override SpecialPage::getGroupName
-        */
-       public static function setGroup( $page, $group ) {
-               wfDeprecated( __METHOD__, '1.21' );
-
-               global $wgSpecialPageGroups;
-               $name = is_object( $page ) ? $page->getName() : $page;
-               $wgSpecialPageGroups[$name] = $group;
-       }
-
-       /**
-        * Get the group that the special page belongs in on Special:SpecialPage
-        *
-        * @param $page SpecialPage
-        * @return String
-        * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
-        */
-       public static function getGroup( &$page ) {
-               wfDeprecated( __METHOD__, '1.21' );
-
-               return $page->getFinalGroupName();
-       }
-
-       /**
-        * Check if a given name exist as a special page or as a special page alias
-        *
-        * @param string $name name of a special page
-        * @return Boolean: true if a special page exists with this name
-        */
-       public static function exists( $name ) {
-               list( $title, /*...*/ ) = self::resolveAlias( $name );
-               return property_exists( self::getList(), $title );
-       }
-
-       /**
-        * Find the object with a given name and return it (or NULL)
-        *
-        * @param string $name Special page name, may be localised and/or an alias
-        * @return SpecialPage|null SpecialPage object or null if the page doesn't exist
-        */
-       public static function getPage( $name ) {
-               list( $realName, /*...*/ ) = self::resolveAlias( $name );
-               if ( property_exists( self::getList(), $realName ) ) {
-                       $rec = self::getList()->$realName;
-                       if ( is_string( $rec ) ) {
-                               $className = $rec;
-                               return new $className;
-                       } elseif ( is_array( $rec ) ) {
-                               // @deprecated, officially since 1.18, unofficially since forever
-                               wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
-                               $className = array_shift( $rec );
-                               self::getList()->$realName = MWFunction::newObj( $className, $rec );
-                       }
-                       return self::getList()->$realName;
-               } else {
-                       return null;
-               }
-       }
-
-       /**
-        * Return categorised listable special pages which are available
-        * for the current user, and everyone.
-        *
-        * @param $user User object to check permissions, $wgUser will be used
-        *              if not provided
-        * @return Array( String => Specialpage )
-        */
-       public static function getUsablePages( User $user = null ) {
-               $pages = array();
-               if ( $user === null ) {
-                       global $wgUser;
-                       $user = $wgUser;
-               }
-               foreach ( self::getList() as $name => $rec ) {
-                       $page = self::getPage( $name );
-                       if ( $page ) { // not null
-                               $page->setContext( RequestContext::getMain() );
-                               if ( $page->isListed()
-                                       && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
-                               ) {
-                                       $pages[$name] = $page;
-                               }
-                       }
-               }
-               return $pages;
-       }
-
-       /**
-        * Return categorised listable special pages for all users
-        *
-        * @return Array( String => Specialpage )
-        */
-       public static function getRegularPages() {
-               $pages = array();
-               foreach ( self::getList() as $name => $rec ) {
-                       $page = self::getPage( $name );
-                       if ( $page->isListed() && !$page->isRestricted() ) {
-                               $pages[$name] = $page;
-                       }
-               }
-               return $pages;
-       }
-
-       /**
-        * Return categorised listable special pages which are available
-        * for the current user, but not for everyone
-        *
-        * @return Array( String => Specialpage )
-        */
-       public static function getRestrictedPages() {
-               global $wgUser;
-               $pages = array();
-               foreach ( self::getList() as $name => $rec ) {
-                       $page = self::getPage( $name );
-                       if (
-                               $page->isListed()
-                               && $page->isRestricted()
-                               && $page->userCanExecute( $wgUser )
-                       ) {
-                               $pages[$name] = $page;
-                       }
-               }
-               return $pages;
-       }
-
-       /**
-        * Execute a special page path.
-        * The path may contain parameters, e.g. Special:Name/Params
-        * Extracts the special page name and call the execute method, passing the parameters
-        *
-        * Returns a title object if the page is redirected, false if there was no such special
-        * page, and true if it was successful.
-        *
-        * @param $title          Title object
-        * @param $context        IContextSource
-        * @param $including      Bool output is being captured for use in {{special:whatever}}
-        *
-        * @return bool
-        */
-       public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
-               wfProfileIn( __METHOD__ );
-
-               // @todo FIXME: Redirects broken due to this call
-               $bits = explode( '/', $title->getDBkey(), 2 );
-               $name = $bits[0];
-               if ( !isset( $bits[1] ) ) { // bug 2087
-                       $par = null;
-               } else {
-                       $par = $bits[1];
-               }
-               $page = self::getPage( $name );
-               // Nonexistent?
-               if ( !$page ) {
-                       $context->getOutput()->setArticleRelated( false );
-                       $context->getOutput()->setRobotPolicy( 'noindex,nofollow' );
-
-                       global $wgSend404Code;
-                       if ( $wgSend404Code ) {
-                               $context->getOutput()->setStatusCode( 404 );
-                       }
-
-                       $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               // Page exists, set the context
-               $page->setContext( $context );
-
-               if ( !$including ) {
-                       // Redirect to canonical alias for GET commands
-                       // Not for POST, we'd lose the post data, so it's best to just distribute
-                       // the request. Such POST requests are possible for old extensions that
-                       // generate self-links without being aware that their default name has
-                       // changed.
-                       if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
-                               $query = $context->getRequest()->getQueryValues();
-                               unset( $query['title'] );
-                               $title = $page->getTitle( $par );
-                               $url = $title->getFullURL( $query );
-                               $context->getOutput()->redirect( $url );
-                               wfProfileOut( __METHOD__ );
-                               return $title;
-                       } else {
-                               $context->setTitle( $page->getTitle( $par ) );
-                       }
-
-               } elseif ( !$page->isIncludable() ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $page->including( $including );
-
-               // Execute special page
-               $profName = 'Special:' . $page->getName();
-               wfProfileIn( $profName );
-               $page->run( $par );
-               wfProfileOut( $profName );
-               wfProfileOut( __METHOD__ );
-               return true;
-       }
-
-       /**
-        * Just like executePath() but will override global variables and execute
-        * the page in "inclusion" mode. Returns true if the execution was
-        * successful or false if there was no such special page, or a title object
-        * if it was a redirect.
-        *
-        * Also saves the current $wgTitle, $wgOut, $wgRequest, $wgUser and $wgLang
-        * variables so that the special page will get the context it'd expect on a
-        * normal request, and then restores them to their previous values after.
-        *
-        * @param $title Title
-        * @param $context IContextSource
-        *
-        * @return String: HTML fragment
-        */
-       static function capturePath( Title $title, IContextSource $context ) {
-               global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
-
-               // Save current globals
-               $oldTitle = $wgTitle;
-               $oldOut = $wgOut;
-               $oldRequest = $wgRequest;
-               $oldUser = $wgUser;
-               $oldLang = $wgLang;
-
-               // Set the globals to the current context
-               $wgTitle = $title;
-               $wgOut = $context->getOutput();
-               $wgRequest = $context->getRequest();
-               $wgUser = $context->getUser();
-               $wgLang = $context->getLanguage();
-
-               // The useful part
-               $ret = self::executePath( $title, $context, true );
-
-               // And restore the old globals
-               $wgTitle = $oldTitle;
-               $wgOut = $oldOut;
-               $wgRequest = $oldRequest;
-               $wgUser = $oldUser;
-               $wgLang = $oldLang;
-
-               return $ret;
-       }
-
-       /**
-        * Get the local name for a specified canonical name
-        *
-        * @param $name String
-        * @param $subpage String|Bool
-        *
-        * @return String
-        */
-       static function getLocalNameFor( $name, $subpage = false ) {
-               global $wgContLang;
-               $aliases = $wgContLang->getSpecialPageAliases();
-
-               if ( isset( $aliases[$name][0] ) ) {
-                       $name = $aliases[$name][0];
-               } else {
-                       // Try harder in case someone misspelled the correct casing
-                       $found = false;
-                       foreach ( $aliases as $n => $values ) {
-                               if ( strcasecmp( $name, $n ) === 0 ) {
-                                       wfWarn( "Found alias defined for $n when searching for " .
-                                               "special page aliases for $name. Case mismatch?" );
-                                       $name = $values[0];
-                                       $found = true;
-                                       break;
-                               }
-                       }
-                       if ( !$found ) {
-                               wfWarn( "Did not find alias for special page '$name'. " .
-                                       "Perhaps no aliases are defined for it?" );
-                       }
-               }
-               if ( $subpage !== false && !is_null( $subpage ) ) {
-                       $name = "$name/$subpage";
-               }
-               return $wgContLang->ucfirst( $name );
-       }
-
-       /**
-        * Get a title for a given alias
-        *
-        * @param $alias String
-        *
-        * @return Title or null if there is no such alias
-        */
-       static function getTitleForAlias( $alias ) {
-               $name = self::resolveAlias( $alias );
-               if ( $name ) {
-                       return SpecialPage::getTitleFor( $name );
-               } else {
-                       return null;
-               }
-       }
-}
index 5f5ca74..e11ba03 100644 (file)
@@ -301,14 +301,15 @@ class Status {
        /**
         * Get the error message as HTML. This is done by parsing the wikitext error
         * message.
-        *
-        * @note: this does not perform a full wikitext to HTML conversion, it merely applies
-        *        a message transformation.
-        * @todo figure out whether that is actually The Right Thing.
+        * @param string $shortContext a short enclosing context message name, to
+        *        be used when there is a single error
+        * @param string $longContext a long enclosing context message name, for a list
+        * @return String
         */
        public function getHTML( $shortContext = false, $longContext = false ) {
                $text = $this->getWikiText( $shortContext, $longContext );
-               return MessageCache::singleton()->transform( $text, true );
+               $out = MessageCache::singleton()->parse( $text, null, true, true );
+               return $out instanceof ParserOutput ? $out->getText() : $out;
        }
 
        /**
index 1ad643a..ef82705 100644 (file)
@@ -185,8 +185,8 @@ class StreamFile {
                                return 'unknown/unknown';
                        }
                        if ( $wgCheckFileExtensions && $wgStrictFileExtensions
-                               && !UploadBase::checkFileExtensionList( $extList, $wgFileExtensions ) )
-                       {
+                               && !UploadBase::checkFileExtensionList( $extList, $wgFileExtensions )
+                       {
                                return 'unknown/unknown';
                        }
                        if ( $wgVerifyMimeType && in_array( strtolower( $type ), $wgMimeTypeBlacklist ) ) {
index c726e9d..f2de4b8 100644 (file)
  * @internal documentation reviewed 15 Mar 2010
  */
 class Title {
-       /** @name Static cache variables */
-       // @{
-       static private $titleCache = array();
-       // @}
+       /** @var MapCacheLRU */
+       static private $titleCache = null;
 
        /**
         * Title::newFromText maintains a cache to avoid expensive re-normalization of
@@ -61,7 +59,7 @@ class Title {
        var $mDbkeyform = '';             // /< Main part with underscores
        var $mUserCaseDBKey;              // /< DB key with the initial letter in the case specified by the user
        var $mNamespace = NS_MAIN;        // /< Namespace index, i.e. one of the NS_xxxx constants
-       var $mInterwiki = '';             // /< Interwiki prefix (or null string)
+       var $mInterwiki = '';             // /< Interwiki prefix
        var $mFragment;                   // /< Title fragment (i.e. the bit after the #)
        var $mArticleID = -1;             // /< Article ID, fetched from the link cache on demand
        var $mLatestID = false;           // /< ID of most recent revision
@@ -75,12 +73,12 @@ class Title {
        var $mHasCascadingRestrictions;   ///< Are cascading restrictions in effect on this page?
        var $mCascadeSources;             ///< Where are the cascading restrictions coming from on this page?
        var $mRestrictionsLoaded = false; ///< Boolean for initialisation on demand
-       var $mPrefixedText;               ///< Text form including namespace/interwiki, initialised on demand
+       var $mPrefixedText = null;        ///< Text form including namespace/interwiki, initialised on demand
        var $mTitleProtection;            ///< Cached value for getTitleProtection (create protection)
        # Don't change the following default, NS_MAIN is hardcoded in several
        # places.  See bug 696.
+       # Zero except in {{transclusion}} tags
        var $mDefaultNamespace = NS_MAIN; // /< Namespace index when there is no namespace
-                                                                         # Zero except in {{transclusion}} tags
        var $mWatched = null;             // /< Is $wgUser watching this page? null if unfilled, accessed through userIsWatching()
        var $mLength = -1;                // /< The page length, 0 for special pages
        var $mRedirect = null;            // /< Is the article at this title a redirect?
@@ -130,6 +128,8 @@ class Title {
                        throw new MWException( 'Title::newFromText given an object' );
                }
 
+               $cache = self::getTitleCache();
+
                /**
                 * Wiki pages often contain multiple links to the same page.
                 * Title normalization and parsing can become expensive on
@@ -138,8 +138,8 @@ class Title {
                 *
                 * In theory these are value objects and won't get changed...
                 */
-               if ( $defaultNamespace == NS_MAIN && isset( Title::$titleCache[$text] ) ) {
-                       return Title::$titleCache[$text];
+               if ( $defaultNamespace == NS_MAIN && $cache->has( $text ) ) {
+                       return $cache->get( $text );
                }
 
                # Convert things like &eacute; &#257; or &#x3017; into normalized (bug 14952) text
@@ -149,16 +149,9 @@ class Title {
                $t->mDbkeyform = str_replace( ' ', '_', $filteredText );
                $t->mDefaultNamespace = $defaultNamespace;
 
-               static $cachedcount = 0;
                if ( $t->secureAndSplit() ) {
                        if ( $defaultNamespace == NS_MAIN ) {
-                               if ( $cachedcount >= self::CACHE_MAX ) {
-                                       # Avoid memory leaks on mass operations...
-                                       Title::$titleCache = array();
-                                       $cachedcount = 0;
-                               }
-                               $cachedcount++;
-                               Title::$titleCache[$text] =& $t;
+                               $cache->set( $text, $t );
                        }
                        return $t;
                } else {
@@ -200,6 +193,16 @@ class Title {
                }
        }
 
+       /**
+        * @return MapCacheLRU
+        */
+       private static function getTitleCache() {
+               if ( self::$titleCache == null ) {
+                       self::$titleCache = new MapCacheLRU( self::CACHE_MAX );
+               }
+               return self::$titleCache;
+       }
+
        /**
         * Returns a list of fields that are to be selected for initializing Title objects or LinkCache entries.
         * Uses $wgContentHandlerUseDB to determine whether to include page_content_model.
@@ -682,7 +685,7 @@ class Title {
         * @return Bool TRUE if this is an in-project interwiki link or a wikilink, FALSE otherwise
         */
        public function isLocal() {
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        $iw = Interwiki::fetch( $this->mInterwiki );
                        if ( $iw ) {
                                return $iw->isLocal();
@@ -697,11 +700,11 @@ class Title {
         * @return Bool
         */
        public function isExternal() {
-               return ( $this->mInterwiki != '' );
+               return $this->mInterwiki !== '';
        }
 
        /**
-        * Get the interwiki prefix (or null string)
+        * Get the interwiki prefix
         *
         * @return String Interwiki prefix
         */
@@ -716,7 +719,7 @@ class Title {
         * @return Bool TRUE if this is transcludable
         */
        public function isTrans() {
-               if ( $this->mInterwiki == '' ) {
+               if ( !$this->isExternal() ) {
                        return false;
                }
 
@@ -729,7 +732,7 @@ class Title {
         * @return String the DB name
         */
        public function getTransWikiID() {
-               if ( $this->mInterwiki == '' ) {
+               if ( !$this->isExternal() ) {
                        return false;
                }
 
@@ -769,7 +772,12 @@ class Title {
         * @return String DB key
         */
        function getUserCaseDBKey() {
-               return $this->mUserCaseDBKey;
+               if ( !is_null( $this->mUserCaseDBKey ) ) {
+                       return $this->mUserCaseDBKey;
+               } else {
+                       // If created via makeTitle(), $this->mUserCaseDBKey is not set.
+                       return $this->mDbkeyform;
+               }
        }
 
        /**
@@ -822,7 +830,7 @@ class Title {
        public function getNsText() {
                global $wgContLang;
 
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        // This probably shouldn't even happen. ohh man, oh yuck.
                        // But for interwiki transclusion it sometimes does.
                        // Shit. Shit shit shit.
@@ -1006,7 +1014,7 @@ class Title {
         * @return Bool TRUE or FALSE
         */
        public function isMovable() {
-               if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->getInterwiki() != '' ) {
+               if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->isExternal() ) {
                        // Interwiki title or immovable namespace. Hooks don't get to override here
                        return false;
                }
@@ -1228,7 +1236,7 @@ class Title {
         */
        private function prefix( $name ) {
                $p = '';
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        $p = $this->mInterwiki . ':';
                }
 
@@ -1257,8 +1265,7 @@ class Title {
         * @return String the prefixed title, with spaces
         */
        public function getPrefixedText() {
-               // @todo FIXME: Bad usage of empty() ?
-               if ( empty( $this->mPrefixedText ) ) {
+               if ( $this->mPrefixedText === null ) {
                        $s = $this->prefix( $this->mTextform );
                        $s = str_replace( '_', ' ', $s );
                        $this->mPrefixedText = $s;
@@ -1548,9 +1555,9 @@ class Title {
                                $url = false;
                                $matches = array();
 
-                               if ( !empty( $wgActionPaths ) &&
-                                       preg_match( '/^(.*&|)action=([^&]*)(&(.*)|)$/', $query, $matches ) )
-                               {
+                               if ( !empty( $wgActionPaths )
+                                       && preg_match( '/^(.*&|)action=([^&]*)(&(.*)|)$/', $query, $matches )
+                               {
                                        $action = urldecode( $matches[2] );
                                        if ( isset( $wgActionPaths[$action] ) ) {
                                                $query = $matches[1];
@@ -1564,12 +1571,12 @@ class Title {
                                        }
                                }
 
-                               if ( $url === false &&
-                                       $wgVariantArticlePath &&
-                                       $wgContLang->getCode() === $this->getPageLanguage()->getCode() &&
-                                       $this->getPageLanguage()->hasVariants() &&
-                                       preg_match( '/^variant=([^&]*)$/', $query, $matches ) )
-                               {
+                               if ( $url === false
+                                       && $wgVariantArticlePath
+                                       && $wgContLang->getCode() === $this->getPageLanguage()->getCode()
+                                       && $this->getPageLanguage()->hasVariants()
+                                       && preg_match( '/^variant=([^&]*)$/', $query, $matches )
+                               {
                                        $variant = urldecode( $matches[1] );
                                        if ( $this->getPageLanguage()->hasVariant( $variant ) ) {
                                                // Only do the variant replacement if the given variant is a valid
@@ -1727,7 +1734,7 @@ class Title {
         *  interwiki link
         */
        public function getEditURL() {
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        return '';
                }
                $s = $this->getLocalURL( 'action=edit' );
@@ -2125,9 +2132,9 @@ class Title {
                                if ( $title_protection['pt_create_perm'] == 'autoconfirmed' ) {
                                        $title_protection['pt_create_perm'] = 'editsemiprotected'; // B/C
                                }
-                               if ( $title_protection['pt_create_perm'] == '' ||
-                                       !$user->isAllowed( $title_protection['pt_create_perm'] ) )
-                               {
+                               if ( $title_protection['pt_create_perm'] == ''
+                                       || !$user->isAllowed( $title_protection['pt_create_perm'] )
+                               {
                                        $errors[] = array( 'titleprotected', User::whoIs( $title_protection['pt_user'] ), $title_protection['pt_reason'] );
                                }
                        }
@@ -2148,8 +2155,8 @@ class Title {
                        }
                } elseif ( $action == 'delete' ) {
                        if ( $doExpensiveQueries && $wgDeleteRevisionsLimit
-                               && !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion() )
-                       {
+                               && !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion()
+                       {
                                $errors[] = array( 'delete-toobig', $wgLang->formatNum( $wgDeleteRevisionsLimit ) );
                        }
                }
@@ -2548,6 +2555,19 @@ class Title {
                return ( $sources > 0 );
        }
 
+       /**
+        * Determines whether cascading protection sources have already been loaded from
+        * the database.
+        *
+        * @param bool $getPages True to check if the pages are loaded, or false to check
+        * if the status is loaded.
+        * @return bool Whether or not the specified information has been loaded
+        * @since 1.23
+        */
+       public function areCascadeProtectionSourcesLoaded( $getPages = true ) {
+               return $getPages ? isset( $this->mCascadeSources ) : isset( $this->mHasCascadingRestrictions );
+       }
+
        /**
         * Cascading protection: Get the source of any cascading restrictions on this page.
         *
@@ -2648,6 +2668,17 @@ class Title {
                return array( $sources, $pagerestrictions );
        }
 
+       /**
+        * Accessor for mRestrictionsLoaded
+        *
+        * @return bool Whether or not the page's restrictions have already been
+        * loaded from the database
+        * @since 1.23
+        */
+       public function areRestrictionsLoaded() {
+               return $this->mRestrictionsLoaded;
+       }
+
        /**
         * Accessor/initialisation for mRestrictions
         *
@@ -2663,6 +2694,21 @@ class Title {
                                : array();
        }
 
+       /**
+        * Accessor/initialisation for mRestrictions
+        *
+        * @return Array of Arrays of Strings the first level indexed by
+        * action, the second level containing the names of the groups
+        * allowed to perform each action
+        * @since 1.23
+        */
+       public function getAllRestrictions() {
+               if ( !$this->mRestrictionsLoaded ) {
+                       $this->loadRestrictions();
+               }
+               return $this->mRestrictions;
+       }
+
        /**
         * Get the expiry time for the restriction against a given action
         *
@@ -2884,15 +2930,15 @@ class Title {
                # alone to cache the result.  There's no point in having it hanging
                # around uninitialized in every Title object; therefore we only add it
                # if needed and don't declare it statically.
-               if ( isset( $this->mHasSubpages ) ) {
-                       return $this->mHasSubpages;
+               if ( !isset( $this->mHasSubpages ) ) {
+                       $this->mHasSubpages = false;
+                       $subpages = $this->getSubpages( 1 );
+                       if ( $subpages instanceof TitleArray ) {
+                               $this->mHasSubpages = (bool)$subpages->count();
+                       }
                }
 
-               $subpages = $this->getSubpages( 1 );
-               if ( $subpages instanceof TitleArray ) {
-                       return $this->mHasSubpages = (bool)$subpages->count();
-               }
-               return $this->mHasSubpages = false;
+               return $this->mHasSubpages;
        }
 
        /**
@@ -2914,7 +2960,7 @@ class Title {
                if ( $limit > -1 ) {
                        $options['LIMIT'] = $limit;
                }
-               return $this->mSubpages = TitleArray::newFromResult(
+               $this->mSubpages = TitleArray::newFromResult(
                        $dbr->select( 'page',
                                array( 'page_id', 'page_namespace', 'page_title', 'page_is_redirect' ),
                                $conds,
@@ -2922,6 +2968,7 @@ class Title {
                                $options
                        )
                );
+               return $this->mSubpages;
        }
 
        /**
@@ -2982,7 +3029,8 @@ class Title {
         */
        public function getArticleID( $flags = 0 ) {
                if ( $this->getNamespace() < 0 ) {
-                       return $this->mArticleID = 0;
+                       $this->mArticleID = 0;
+                       return $this->mArticleID;
                }
                $linkCache = LinkCache::singleton();
                if ( $flags & self::GAID_FOR_UPDATE ) {
@@ -3011,7 +3059,8 @@ class Title {
                }
                # Calling getArticleID() loads the field from cache as needed
                if ( !$this->getArticleID( $flags ) ) {
-                       return $this->mRedirect = false;
+                       $this->mRedirect = false;
+                       return $this->mRedirect;
                }
 
                $linkCache = LinkCache::singleton();
@@ -3023,7 +3072,8 @@ class Title {
                        # LinkCache as appropriate, or use $flags = Title::GAID_FOR_UPDATE. If that flag is
                        # set, then LinkCache will definitely be up to date here, since getArticleID() forces
                        # LinkCache to refresh its data from the master.
-                       return $this->mRedirect = false;
+                       $this->mRedirect = false;
+                       return $this->mRedirect;
                }
 
                $this->mRedirect = (bool)$cached;
@@ -3044,13 +3094,15 @@ class Title {
                }
                # Calling getArticleID() loads the field from cache as needed
                if ( !$this->getArticleID( $flags ) ) {
-                       return $this->mLength = 0;
+                       $this->mLength = 0;
+                       return $this->mLength;
                }
                $linkCache = LinkCache::singleton();
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'length' );
                if ( $cached === null ) {
                        # Trust LinkCache's state over our own, as for isRedirect()
-                       return $this->mLength = 0;
+                       $this->mLength = 0;
+                       return $this->mLength;
                }
 
                $this->mLength = intval( $cached );
@@ -3070,14 +3122,16 @@ class Title {
                }
                # Calling getArticleID() loads the field from cache as needed
                if ( !$this->getArticleID( $flags ) ) {
-                       return $this->mLatestID = 0;
+                       $this->mLatestID = 0;
+                       return $this->mLatestID;
                }
                $linkCache = LinkCache::singleton();
                $linkCache->addLinkObj( $this );
                $cached = $linkCache->getGoodLinkFieldObj( $this, 'revision' );
                if ( $cached === null ) {
                        # Trust LinkCache's state over our own, as for isRedirect()
-                       return $this->mLatestID = 0;
+                       $this->mLatestID = 0;
+                       return $this->mLatestID;
                }
 
                $this->mLatestID = intval( $cached );
@@ -3163,10 +3217,6 @@ class Title {
                $dbkey = preg_replace( '/[ _\xA0\x{1680}\x{180E}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}]+/u', '_', $dbkey );
                $dbkey = trim( $dbkey, '_' );
 
-               if ( $dbkey == '' ) {
-                       return false;
-               }
-
                if ( strpos( $dbkey, UTF8_REPLACEMENT ) !== false ) {
                        # Contained illegal UTF-8 sequences or forbidden Unicode chars.
                        return false;
@@ -3176,12 +3226,16 @@ class Title {
 
                # Initial colon indicates main namespace rather than specified default
                # but should not create invalid {ns,title} pairs such as {0,Project:Foo}
-               if ( ':' == $dbkey[0] ) {
+               if ( $dbkey !== '' && ':' == $dbkey[0] ) {
                        $this->mNamespace = NS_MAIN;
                        $dbkey = substr( $dbkey, 1 ); # remove the colon but continue processing
                        $dbkey = trim( $dbkey, '_' ); # remove any subsequent whitespace
                }
 
+               if ( $dbkey == '' ) {
+                       return false;
+               }
+
                # Namespace or interwiki prefix
                $firstPass = true;
                $prefixRegexp = "/^(.+?)_*:_*(.*)$/S";
@@ -3216,8 +3270,8 @@ class Title {
 
                                        # Redundant interwiki prefix to the local wiki
                                        if ( $wgLocalInterwiki !== false
-                                               && 0 == strcasecmp( $this->mInterwiki, $wgLocalInterwiki ) )
-                                       {
+                                               && 0 == strcasecmp( $this->mInterwiki, $wgLocalInterwiki )
+                                       {
                                                if ( $dbkey == '' ) {
                                                        # Can't have an empty self-link
                                                        return false;
@@ -3242,7 +3296,7 @@ class Title {
                } while ( true );
 
                # We already know that some pages won't be in the database!
-               if ( $this->mInterwiki != '' || NS_SPECIAL == $this->mNamespace ) {
+               if ( $this->isExternal() || NS_SPECIAL == $this->mNamespace ) {
                        $this->mArticleID = 0;
                }
                $fragment = strstr( $dbkey, '#' );
@@ -3298,14 +3352,13 @@ class Title {
                # and [[Foo]] point to the same place.  Don't force it for interwikis, since the
                # other site might be case-sensitive.
                $this->mUserCaseDBKey = $dbkey;
-               if ( $this->mInterwiki == '' ) {
+               if ( !$this->isExternal() ) {
                        $dbkey = self::capitalize( $dbkey, $this->mNamespace );
                }
 
                # Can't make a link to a namespace alone... "empty" local links can only be
                # self-links with a fragment identifier.
-               # TODO: Why do we exclude NS_MAIN (bug 54044)
-               if ( $dbkey == '' && $this->mInterwiki == '' && $this->mNamespace != NS_MAIN ) {
+               if ( $dbkey == '' && !$this->isExternal() && $this->mNamespace != NS_MAIN ) {
                        return false;
                }
 
@@ -3524,6 +3577,13 @@ class Title {
                        }
                }
 
+               // If we are looking at a css/js user subpage, purge the action=raw.
+               if ( $this->isJsSubpage() ) {
+                       $urls[] = $this->getInternalUrl( 'action=raw&ctype=text/javascript' );
+               } elseif ( $this->isCssSubpage() ) {
+                       $urls[] = $this->getInternalUrl( 'action=raw&ctype=text/css' );
+               }
+
                wfRunHooks( 'TitleSquidURLs', array( $this, &$urls ) );
                return $urls;
        }
@@ -3575,7 +3635,7 @@ class Title {
                if ( !$this->isMovable() ) {
                        $errors[] = array( 'immobile-source-namespace', $this->getNsText() );
                }
-               if ( $nt->getInterwiki() != '' ) {
+               if ( $nt->isExternal() ) {
                        $errors[] = array( 'immobile-target-namespace-iw' );
                }
                if ( !$nt->isMovable() ) {
@@ -3877,6 +3937,7 @@ class Title {
 
                if ( $moveOverRedirect ) {
                        $newid = $nt->getArticleID();
+                       $newcontent = $newpage->getContent();
 
                        # Delete the old redirect. We don't save it to history since
                        # by definition if we've got here it's rather uninteresting.
@@ -3884,7 +3945,7 @@ class Title {
                        # a conflict on the unique namespace+title index...
                        $dbw->delete( 'page', array( 'page_id' => $newid ), __METHOD__ );
 
-                       $newpage->doDeleteUpdates( $newid );
+                       $newpage->doDeleteUpdates( $newid, $newcontent );
                }
 
                # Save a null revision in the page's history notifying of the move
@@ -3995,9 +4056,9 @@ class Title {
                        // We don't know whether this function was called before
                        // or after moving the root page, so check both
                        // $this and $nt
-                       if ( $oldSubpage->getArticleID() == $this->getArticleID() ||
-                                       $oldSubpage->getArticleID() == $nt->getArticleID() )
-                       {
+                       if ( $oldSubpage->getArticleID() == $this->getArticleID()
+                               || $oldSubpage->getArticleID() == $nt->getArticleID()
+                       {
                                // When moving a page to a subpage of itself,
                                // don't move it twice
                                continue;
@@ -4487,7 +4548,7 @@ class Title {
                        return $isKnown;
                }
 
-               if ( $this->mInterwiki != '' ) {
+               if ( $this->isExternal() ) {
                        return true;  // any interwiki link might be viewable, for all we know
                }
 
@@ -4642,7 +4703,8 @@ class Title {
                        return $this->mNotificationTimestamp[$uid];
                }
                if ( !$uid || !$wgShowUpdatedMarker || !$user->isAllowed( 'viewmywatchlist' ) ) {
-                       return $this->mNotificationTimestamp[$uid] = false;
+                       $this->mNotificationTimestamp[$uid] = false;
+                       return $this->mNotificationTimestamp[$uid];
                }
                // Don't cache too much!
                if ( count( $this->mNotificationTimestamp ) >= self::CACHE_MAX ) {
@@ -4696,7 +4758,7 @@ class Title {
         * Get all extant redirects to this Title
         *
         * @param int|Null $ns Single namespace to consider; NULL to consider all namespaces
-        * @return Array of Title redirects to this title
+        * @return Title[] Array of Title redirects to this title
         */
        public function getRedirectsHere( $ns = null ) {
                $redirs = array();
index 90fb861..cc130d2 100644 (file)
@@ -56,7 +56,7 @@ abstract class TitleArray implements Iterator {
        }
 }
 
-class TitleArrayFromResult extends TitleArray {
+class TitleArrayFromResult extends TitleArray implements Countable {
 
        /**
         * @var ResultWrapper
index a01444a..ca3f79b 100644 (file)
@@ -465,7 +465,7 @@ class User {
         * user_name and user_real_name are not provided because the whole row
         * will be loaded once more from the database when accessing them.
         *
-        * @param array $row A row from the user table
+        * @param stdClass $row A row from the user table
         * @param array $data Further data to load into the object (see User::loadFromRow for valid keys)
         * @return User
         */
@@ -1041,7 +1041,7 @@ class User {
        /**
         * Initialize this object from a row from the user table.
         *
-        * @param array $row Row from the user table to load.
+        * @param stdClass $row Row from the user table to load.
         * @param array $data Further user data to load into the object
         *
         *      user_groups             Array with groups out of the user_groups table
@@ -1307,8 +1307,8 @@ class User {
 
                // Proxy blocking
                if ( !$block instanceof Block && $ip !== null && !$this->isAllowed( 'proxyunbannable' )
-                       && !in_array( $ip, $wgProxyWhitelist ) )
-               {
+                       && !in_array( $ip, $wgProxyWhitelist )
+               {
                        // Local list
                        if ( self::isLocallyBlockedProxy( $ip ) ) {
                                $block = new Block;
@@ -1632,8 +1632,8 @@ class User {
                $blocked = $this->isBlocked( $bFromSlave );
                $allowUsertalk = ( $wgBlockAllowsUTEdit ? $this->mAllowUsertalk : false );
                // If a user's name is suppressed, they cannot make edits anywhere
-               if ( !$this->mHideName && $allowUsertalk && $title->getText() === $this->getName() &&
-                 $title->getNamespace() == NS_USER_TALK ) {
+               if ( !$this->mHideName && $allowUsertalk && $title->getText() === $this->getName()
+                       && $title->getNamespace() == NS_USER_TALK ) {
                        $blocked = false;
                        wfDebug( __METHOD__ . ": self-talk page, ignoring any blocks\n" );
                }
@@ -3078,9 +3078,7 @@ class User {
                // and when it does have to be executed, it can be on a slave
                // If this is the user's newtalk page, we always update the timestamp
                $force = '';
-               if ( $title->getNamespace() == NS_USER_TALK &&
-                       $title->getText() == $this->getName() )
-               {
+               if ( $title->getNamespace() == NS_USER_TALK && $title->getText() == $this->getName() ) {
                        $force = 'force';
                }
 
@@ -3612,9 +3610,9 @@ class User {
                        // Some wikis were converted from ISO 8859-1 to UTF-8, the passwords can't be converted
                        // Check for this with iconv
                        $cp1252Password = iconv( 'UTF-8', 'WINDOWS-1252//TRANSLIT', $password );
-                       if ( $cp1252Password != $password &&
-                               self::comparePasswords( $this->mPassword, $cp1252Password, $this->mId ) )
-                       {
+                       if ( $cp1252Password != $password
+                               && self::comparePasswords( $this->mPassword, $cp1252Password, $this->mId )
+                       {
                                return true;
                        }
                }
@@ -3779,8 +3777,9 @@ class User {
         */
        public function sendMail( $subject, $body, $from = null, $replyto = null ) {
                if ( is_null( $from ) ) {
-                       global $wgPasswordSender, $wgPasswordSenderName;
-                       $sender = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+                       global $wgPasswordSender;
+                       $sender = new MailAddress( $wgPasswordSender,
+                               wfMessage( 'emailsender' )->inContentLanguage()->text() );
                } else {
                        $sender = new MailAddress( $from );
                }
index 1f55ef3..90d1134 100644 (file)
@@ -47,8 +47,12 @@ abstract class UserArray implements Iterator {
                        return new ArrayIterator( array() );
                }
                $dbr = wfGetDB( DB_SLAVE );
-               $res = $dbr->select( 'user', '*', array( 'user_id' => $ids ),
-                       __METHOD__ );
+               $res = $dbr->select(
+                       'user',
+                       User::selectFields(),
+                       array( 'user_id' => array_unique( $ids ) ),
+                       __METHOD__
+               );
                return self::newFromResult( $res );
        }
 
@@ -61,7 +65,7 @@ abstract class UserArray implements Iterator {
        }
 }
 
-class UserArrayFromResult extends UserArray {
+class UserArrayFromResult extends UserArray implements Countable {
 
        /**
         * @var ResultWrapper
index 6157f78..e1d00d3 100644 (file)
@@ -120,6 +120,8 @@ class UserMailer {
        static function arrayToHeaderString( $headers, $endl = "\n" ) {
                $strings = array();
                foreach ( $headers as $name => $value ) {
+                       // Prevent header injection by stripping newlines from value
+                       $value = self::sanitizeHeaderValue( $value );
                        $strings[] = "$name: $value";
                }
                return implode( $endl, $strings );
@@ -393,13 +395,25 @@ class UserMailer {
                self::$mErrorString = preg_replace( '/^mail\(\)(\s*\[.*?\])?: /', '', $string );
        }
 
+       /**
+        * Strips bad characters from a header value to prevent PHP mail header injection attacks
+        * @param string $val String to be santizied
+        * @return string
+        */
+       public static function sanitizeHeaderValue( $val ) {
+               return strtr( $val, array( "\r" => '', "\n" => '' ) );
+       }
+
        /**
         * Converts a string into a valid RFC 822 "phrase", such as is used for the sender name
         * @param $phrase string
         * @return string
         */
        public static function rfc822Phrase( $phrase ) {
-               $phrase = strtr( $phrase, array( "\r" => '', "\n" => '', '"' => '' ) );
+               // Remove line breaks
+               $phrase = self::sanitizeHeaderValue( $phrase );
+               // Remove quotes
+               $phrase = str_replace( '"', '', $phrase );
                return '"' . $phrase . '"';
        }
 
@@ -630,11 +644,11 @@ class EmailNotification {
                                // Send updates to watchers other than the current editor
                                $userArray = UserArray::newFromIDs( $watchers );
                                foreach ( $userArray as $watchingUser ) {
-                                       if ( $watchingUser->getOption( 'enotifwatchlistpages' ) &&
-                                               ( !$minorEdit || $watchingUser->getOption( 'enotifminoredits' ) ) &&
-                                               $watchingUser->isEmailConfirmed() &&
-                                               $watchingUser->getID() != $userTalkId )
-                                       {
+                                       if ( $watchingUser->getOption( 'enotifwatchlistpages' )
+                                               && ( !$minorEdit || $watchingUser->getOption( 'enotifminoredits' ) )
+                                               && $watchingUser->isEmailConfirmed()
+                                               && $watchingUser->getID() != $userTalkId
+                                       {
                                                $this->compose( $watchingUser );
                                        }
                                }
@@ -672,9 +686,9 @@ class EmailNotification {
                                wfDebug( __METHOD__ . ": user talk page edited, but user does not exist\n" );
                        } elseif ( $targetUser->getId() == $editor->getId() ) {
                                wfDebug( __METHOD__ . ": user edited their own talk page, no notification sent\n" );
-                       } elseif ( $targetUser->getOption( 'enotifusertalkpages' ) &&
-                               ( !$minorEdit || $targetUser->getOption( 'enotifminoredits' ) ) )
-                       {
+                       } elseif ( $targetUser->getOption( 'enotifusertalkpages' )
+                               && ( !$minorEdit || $targetUser->getOption( 'enotifminoredits' ) )
+                       {
                                if ( !$targetUser->isEmailConfirmed() ) {
                                        wfDebug( __METHOD__ . ": talk page owner doesn't have validated email\n" );
                                } elseif ( !wfRunHooks( 'AbortTalkPageEmailNotification', array( $targetUser, $title ) ) ) {
@@ -694,7 +708,7 @@ class EmailNotification {
         * Generate the generic "this page has been changed" e-mail text.
         */
        private function composeCommonMailtext() {
-               global $wgPasswordSender, $wgPasswordSenderName, $wgNoReplyAddress;
+               global $wgPasswordSender, $wgNoReplyAddress;
                global $wgEnotifFromEditor, $wgEnotifRevealEditorAddress;
                global $wgEnotifImpersonal, $wgEnotifUseRealName;
 
@@ -779,11 +793,12 @@ class EmailNotification {
                # Reveal the page editor's address as REPLY-TO address only if
                # the user has not opted-out and the option is enabled at the
                # global configuration level.
-               $adminAddress = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+               $adminAddress = new MailAddress( $wgPasswordSender,
+                       wfMessage( 'emailsender' )->inContentLanguage()->text() );
                if ( $wgEnotifRevealEditorAddress
                        && ( $this->editor->getEmail() != '' )
-                       && $this->editor->getOption( 'enotifrevealaddr' ) )
-               {
+                       && $this->editor->getOption( 'enotifrevealaddr' )
+               {
                        $editorAddress = new MailAddress( $this->editor );
                        if ( $wgEnotifFromEditor ) {
                                $this->from = $editorAddress;
index 46cba52..b42564c 100644 (file)
@@ -113,8 +113,8 @@ class WebRequest {
                                $router->add( "$wgScript/$1" );
 
                                if ( isset( $_SERVER['SCRIPT_NAME'] )
-                                       && preg_match( '/\.php5?/', $_SERVER['SCRIPT_NAME'] ) )
-                               {
+                                       && preg_match( '/\.php5?/', $_SERVER['SCRIPT_NAME'] )
+                               {
                                        # Check for SCRIPT_NAME, we handle index.php explicitly
                                        # But we do have some other .php files such as img_auth.php
                                        # Don't let root article paths clober the parsing for them
@@ -210,7 +210,6 @@ class WebRequest {
                } else {
                        return 'http';
                }
-               return $arr;
        }
 
        /**
@@ -796,11 +795,12 @@ class WebRequest {
         * defaults if not given. The limit must be positive and is capped at 5000.
         * Offset must be positive but is not capped.
         *
-        * @param $deflimit Integer: limit to use if no input and the user hasn't set the option.
+        * @param int $deflimit limit to use if no input and the user hasn't set the option.
         * @param string $optionname to specify an option other than rclimit to pull from.
+        * @param int $hardlimit the maximum upper limit to allow, usually 5000
         * @return array first element is limit, second is offset
         */
-       public function getLimitOffset( $deflimit = 50, $optionname = 'rclimit' ) {
+       public function getLimitOffset( $deflimit = 50, $optionname = 'rclimit', $hardlimit = 5000 ) {
                global $wgUser;
 
                $limit = $this->getInt( 'limit', 0 );
@@ -813,8 +813,8 @@ class WebRequest {
                if ( $limit <= 0 ) {
                        $limit = $deflimit;
                }
-               if ( $limit > 5000 ) {
-                       $limit = 5000; # We have *some* limits...
+               if ( $limit > $hardlimit ) {
+                       $limit = $hardlimit; # We have *some* limits...
                }
 
                $offset = $this->getInt( 'offset', 0 );
@@ -836,19 +836,6 @@ class WebRequest {
                return $file->getTempName();
        }
 
-       /**
-        * Return the size of the upload, or 0.
-        *
-        * @deprecated since 1.17
-        * @param $key String:
-        * @return integer
-        */
-       public function getFileSize( $key ) {
-               wfDeprecated( __METHOD__, '1.17' );
-               $file = new WebRequestUpload( $this, $key );
-               return $file->getSize();
-       }
-
        /**
         * Return the upload error or 0
         *
@@ -1036,35 +1023,6 @@ HTML;
                return true;
        }
 
-       /**
-        * Returns true if the PATH_INFO ends with an extension other than a script
-        * extension. This could confuse IE for scripts that send arbitrary data which
-        * is not HTML but may be detected as such.
-        *
-        * Various past attempts to use the URL to make this check have generally
-        * run up against the fact that CGI does not provide a standard method to
-        * determine the URL. PATH_INFO may be mangled (e.g. if cgi.fix_pathinfo=0),
-        * but only by prefixing it with the script name and maybe some other stuff,
-        * the extension is not mangled. So this should be a reasonably portable
-        * way to perform this security check.
-        *
-        * Also checks for anything that looks like a file extension at the end of
-        * QUERY_STRING, since IE 6 and earlier will use this to get the file type
-        * if there was no dot before the question mark (bug 28235).
-        *
-        * @deprecated Use checkUrlExtension().
-        *
-        * @param $extWhitelist array
-        *
-        * @return bool
-        */
-       public function isPathInfoBad( $extWhitelist = array() ) {
-               wfDeprecated( __METHOD__, '1.17' );
-               global $wgScriptExtension;
-               $extWhitelist[] = ltrim( $wgScriptExtension, '.' );
-               return IEUrlExtension::areServerVarsBad( $_SERVER, $extWhitelist );
-       }
-
        /**
         * Parse the Accept-Language header sent by the client into an array
         * @return array array( languageCode => q-value ) sorted by q-value in descending order then
@@ -1463,14 +1421,6 @@ class FauxRequest extends WebRequest {
                return $this->session;
        }
 
-       /**
-        * @param array $extWhitelist
-        * @return bool
-        */
-       public function isPathInfoBad( $extWhitelist = array() ) {
-               return false;
-       }
-
        /**
         * FauxRequests shouldn't depend on raw request data (but that could be implemented here)
         * @return String
index 50bba7b..5fab9dc 100644 (file)
@@ -95,8 +95,8 @@ class MediaWiki {
                        // Check variant links so that interwiki links don't have to worry
                        // about the possible different language variants
                        if ( count( $wgContLang->getVariants() ) > 1
-                               && !is_null( $ret ) && $ret->getArticleID() == 0 )
-                       {
+                               && !is_null( $ret ) && $ret->getArticleID() == 0
+                       {
                                $wgContLang->findVariantLink( $title, $ret );
                        }
                }
@@ -117,11 +117,11 @@ class MediaWiki {
                }
 
                // Use the main page as default title if nothing else has been provided
-               if ( $ret === null && strval( $title ) === '' && $action !== 'delete' ) {
+               if ( $ret === null && strval( $title ) === '' && !$request->getCheck( 'curid' ) && $action !== 'delete' ) {
                        $ret = Title::newMainPage();
                }
 
-               if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) {
+               if ( $ret === null || ( $ret->getDBkey() == '' && !$ret->isExternal() ) ) {
                        $ret = SpecialPage::getTitleFor( 'Badtitle' );
                }
 
@@ -197,9 +197,9 @@ class MediaWiki {
                wfRunHooks( 'BeforeInitialize', array( &$title, &$unused, &$output, &$user, $request, $this ) );
 
                // Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
-               if ( is_null( $title ) || ( $title->getDBkey() == '' && $title->getInterwiki() == '' ) ||
-                       $title->isSpecial( 'Badtitle' ) )
-               {
+               if ( is_null( $title ) || ( $title->getDBkey() == '' && !$title->isExternal() )
+                       || $title->isSpecial( 'Badtitle' )
+               {
                        $this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
                        wfProfileOut( __METHOD__ );
                        throw new BadTitleError();
@@ -231,7 +231,7 @@ class MediaWiki {
                $pageView = false; // was an article or special page viewed?
 
                // Interwiki redirects
-               if ( $title->getInterwiki() != '' ) {
+               if ( $title->isExternal() ) {
                        $rdfrom = $request->getVal( 'rdfrom' );
                        if ( $rdfrom ) {
                                $url = $title->getFullURL( array( 'rdfrom' => $rdfrom ) );
@@ -242,8 +242,8 @@ class MediaWiki {
                        }
                        // Check for a redirect loop
                        if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url )
-                               && $title->isLocal() )
-                       {
+                               && $title->isLocal()
+                       {
                                // 301 so google et al report the target as the actual url.
                                $output->redirect( $url, 301 );
                        } else {
@@ -253,11 +253,11 @@ class MediaWiki {
                        }
                // Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant
                } elseif ( $request->getVal( 'action', 'view' ) == 'view' && !$request->wasPosted()
-                       && ( $request->getVal( 'title' ) === null ||
-                               $title->getPrefixedDBkey() != $request->getVal( 'title' ) )
+                       && ( $request->getVal( 'title' ) === null
+                               || $title->getPrefixedDBkey() != $request->getVal( 'title' ) )
                        && !count( $request->getValueNames( array( 'action', 'title' ) ) )
-                       && wfRunHooks( 'TestCanonicalRedirect', array( $request, $title, $output ) ) )
-               {
+                       && wfRunHooks( 'TestCanonicalRedirect', array( $request, $title, $output ) )
+               {
                        if ( $title->isSpecialPage() ) {
                                list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
                                if ( $name ) {
@@ -358,12 +358,12 @@ class MediaWiki {
                $action = $request->getVal( 'action', 'view' );
                $file = ( $title->getNamespace() == NS_FILE ) ? $article->getFile() : null;
                if ( ( $action == 'view' || $action == 'render' ) // ... for actions that show content
-                       && !$request->getVal( 'oldid' ) && // ... and are not old revisions
-                       !$request->getVal( 'diff' ) && // ... and not when showing diff
-                       $request->getVal( 'redirect' ) != 'no' && // ... unless explicitly told not to
+                       && !$request->getVal( 'oldid' ) // ... and are not old revisions
+                       && !$request->getVal( 'diff' ) // ... and not when showing diff
+                       && $request->getVal( 'redirect' ) != 'no' // ... unless explicitly told not to
                        // ... and the article is not a non-redirect image page with associated file
-                       !( is_object( $file ) && $file->exists() && !$file->getRedirected() ) )
-               {
+                       && !( is_object( $file ) && $file->exists() && !$file->getRedirected() )
+               {
                        // Give extensions a change to ignore/handle redirects as needed
                        $ignoreRedirect = $target = false;
 
@@ -420,8 +420,8 @@ class MediaWiki {
                $user = $this->context->getUser();
 
                if ( !wfRunHooks( 'MediaWikiPerformAction',
-                       array( $output, $page, $title, $user, $request, $this ) ) )
-               {
+                               array( $output, $page, $title, $user, $request, $this ) )
+               {
                        wfProfileOut( __METHOD__ );
                        return;
                }
@@ -458,6 +458,9 @@ class MediaWiki {
                try {
                        $this->checkMaxLag();
                        $this->main();
+                       if ( function_exists( 'fastcgi_finish_request' ) ) {
+                               fastcgi_finish_request();
+                       }
                        $this->restInPeace();
                } catch ( Exception $e ) {
                        MWExceptionHandler::handle( $e );
diff --git a/includes/WikiError.php b/includes/WikiError.php
deleted file mode 100644 (file)
index 08eb800..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-/**
- * MediaWiki error classes
- *
- * Copyright © 2005 Brion Vibber <brion@pobox.com>
- * 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
- */
-
-/**
- * Since PHP4 doesn't have exceptions, here's some error objects
- * loosely modeled on the standard PEAR_Error model...
- * @ingroup Exception
- */
-class WikiError {
-       /**
-        * @param $message string
-        *
-        * @deprecated since 1.17
-        */
-       function __construct( $message ) {
-               wfDeprecated( __METHOD__, '1.17' );
-               $this->mMessage = $message;
-       }
-
-       /**
-        * @return string Plaintext error message to display
-        */
-       function getMessage() {
-               return $this->mMessage;
-       }
-
-       /**
-        * In following PEAR_Error model this could be formatted differently,
-        * but so far it's not.
-        * @return string
-        */
-       function toString() {
-               return $this->getMessage();
-       }
-
-       /**
-        * Returns true if the given object is a WikiError-descended
-        * error object, false otherwise.
-        *
-        * @param $object mixed
-        * @return bool
-        *
-        * @deprecated since 1.17
-        */
-       public static function isError( $object ) {
-               wfDeprecated( __METHOD__, '1.17' );
-               if ( $object instanceof WikiError ) {
-                       return true;
-               } elseif ( $object instanceof Status ) {
-                       return !$object->isOK();
-               } else {
-                       return false;
-               }
-       }
-}
-
-/**
- * Localized error message object
- * @ingroup Exception
- */
-class WikiErrorMsg extends WikiError {
-       /**
-        * @param string $message wiki message name
-        * @param ... parameters to pass to wfMsg()
-        *
-        * @deprecated since 1.17
-        */
-       function __construct( $message/*, ... */ ) {
-               wfDeprecated( __METHOD__, '1.17' );
-               $args = func_get_args();
-               array_shift( $args );
-               $this->mMessage = wfMessage( $message )->rawParams( $args )->text();
-               $this->mMsgKey = $message;
-               $this->mMsgArgs = $args;
-       }
-
-       function getMessageKey() {
-               return $this->mMsgKey;
-       }
-
-       function getMessageArgs() {
-               return $this->mMsgArgs;
-       }
-}
-
-/**
- * Error class designed to handle errors involved with
- * XML parsing
- * @ingroup Exception
- */
-class WikiXmlError extends WikiError {
-       /**
-        * @param $parser resource
-        * @param $message string
-        * @param $context
-        * @param $offset Int
-        *
-        * @deprecated since 1.17
-        */
-       function __construct( $parser, $message = 'XML parsing error', $context = null, $offset = 0 ) {
-               wfDeprecated( __METHOD__, '1.17' );
-               $this->mXmlError = xml_get_error_code( $parser );
-               $this->mColumn = xml_get_current_column_number( $parser );
-               $this->mLine = xml_get_current_line_number( $parser );
-               $this->mByte = xml_get_current_byte_index( $parser );
-               $this->mContext = $this->_extractContext( $context, $offset );
-               $this->mMessage = $message;
-               xml_parser_free( $parser );
-               wfDebug( "WikiXmlError: " . $this->getMessage() . "\n" );
-       }
-
-       /** @return string */
-       function getMessage() {
-               // '$1 at line $2, col $3 (byte $4): $5',
-               return wfMessage( 'xml-error-string',
-                       $this->mMessage,
-                       $this->mLine,
-                       $this->mColumn,
-                       $this->mByte . $this->mContext,
-                       xml_error_string( $this->mXmlError ) )->escaped();
-       }
-
-       function _extractContext( $context, $offset ) {
-               if ( is_null( $context ) ) {
-                       return null;
-               } else {
-                       // Hopefully integer overflow will be handled transparently here
-                       $inlineOffset = $this->mByte - $offset;
-                       return '; "' . substr( $context, $inlineOffset, 16 ) . '"';
-               }
-       }
-}
index 2b192b0..817f0fa 100644 (file)
@@ -85,7 +85,8 @@ class WikiFilePage extends WikiPage {
                if ( $from == $to ) {
                        return null;
                }
-               return $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+               $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+               return $this->mRedirectTarget;
        }
 
        /**
@@ -142,7 +143,8 @@ class WikiFilePage extends WikiPage {
                }
                $hash = $this->mFile->getSha1();
                if ( !( $hash ) ) {
-                       return $this->mDupes = array();
+                       $this->mDupes = array();
+                       return $this->mDupes;
                }
                $dupes = RepoGroup::singleton()->findBySha1( $hash );
                // Remove duplicates with self and non matching file sizes
index 9507e5f..8c035aa 100644 (file)
@@ -51,7 +51,7 @@ class WikiPage implements Page, IDBAccessObject {
        /**@}}*/
 
        /** @var stdclass Map of cache fields (text, parser output, ect) for a proposed/new edit */
-       protected $mPreparedEdit = false;
+       public $mPreparedEdit = false;
 
        /**
         * @var int
@@ -83,6 +83,11 @@ class WikiPage implements Page, IDBAccessObject {
         */
        protected $mTouched = '19700101000000';
 
+       /**
+        * @var string
+        */
+       protected $mLinksUpdated = '19700101000000';
+
        /**
         * @var int|null
         */
@@ -241,6 +246,7 @@ class WikiPage implements Page, IDBAccessObject {
                $this->mRedirectTarget = null; // Title object if set
                $this->mLastRevision = null; // Latest revision
                $this->mTouched = '19700101000000';
+               $this->mLinksUpdated = '19700101000000';
                $this->mTimestamp = '';
                $this->mIsRedirect = false;
                $this->mLatest = false;
@@ -278,6 +284,7 @@ class WikiPage implements Page, IDBAccessObject {
                        'page_is_new',
                        'page_random',
                        'page_touched',
+                       'page_links_updated',
                        'page_latest',
                        'page_len',
                );
@@ -405,6 +412,7 @@ class WikiPage implements Page, IDBAccessObject {
                        $this->mId = intval( $data->page_id );
                        $this->mCounter = intval( $data->page_counter );
                        $this->mTouched = wfTimestamp( TS_MW, $data->page_touched );
+                       $this->mLinksUpdated = wfTimestampOrNull( TS_MW, $data->page_links_updated );
                        $this->mIsRedirect = intval( $data->page_is_redirect );
                        $this->mLatest = intval( $data->page_latest );
                        // Bug 37225: $latest may no longer match the cached latest Revision object.
@@ -533,6 +541,17 @@ class WikiPage implements Page, IDBAccessObject {
                return $this->mTouched;
        }
 
+       /**
+        * Get the page_links_updated field
+        * @return string|null containing GMT timestamp
+        */
+       public function getLinksTimestamp() {
+               if ( !$this->mDataLoaded ) {
+                       $this->loadPageData();
+               }
+               return $this->mLinksUpdated;
+       }
+
        /**
         * Get the page_latest field
         * @return integer rev_id of current revision
@@ -889,13 +908,15 @@ class WikiPage implements Page, IDBAccessObject {
 
                // rd_fragment and rd_interwiki were added later, populate them if empty
                if ( $row && !is_null( $row->rd_fragment ) && !is_null( $row->rd_interwiki ) ) {
-                       return $this->mRedirectTarget = Title::makeTitle(
+                       $this->mRedirectTarget = Title::makeTitle(
                                $row->rd_namespace, $row->rd_title,
                                $row->rd_fragment, $row->rd_interwiki );
+                       return $this->mRedirectTarget;
                }
 
                // This page doesn't have an entry in the redirect table
-               return $this->mRedirectTarget = $this->insertRedirect();
+               $this->mRedirectTarget = $this->insertRedirect();
+               return $this->mRedirectTarget;
        }
 
        /**
@@ -1660,7 +1681,8 @@ class WikiPage implements Page, IDBAccessObject {
         * @since 1.21
         */
        public function doEditContent( Content $content, $summary, $flags = 0, $baseRevId = false,
-                                                                  User $user = null, $serialisation_format = null ) {
+               User $user = null, $serialisation_format = null
+       ) {
                global $wgUser, $wgUseAutomaticEditSummaries, $wgUseRCPatrol, $wgUseNPPatrol;
 
                // Low-level sanity check
@@ -2016,6 +2038,11 @@ class WikiPage implements Page, IDBAccessObject {
                $user = is_null( $user ) ? $wgUser : $user;
                //XXX: check $user->getId() here???
 
+               // Use a sane default for $serialization_format, see bug 57026
+               if ( $serialization_format === null ) {
+                       $serialization_format = $content->getContentHandler()->getDefaultFormat();
+               }
+
                if ( $this->mPreparedEdit
                        && $this->mPreparedEdit->newContent
                        && $this->mPreparedEdit->newContent->equals( $content )
@@ -2253,8 +2280,8 @@ class WikiPage implements Page, IDBAccessObject {
                        return Status::newFatal( 'readonlytext', wfReadOnlyReason() );
                }
 
+               $this->loadPageData( 'fromdbmaster' );
                $restrictionTypes = $this->mTitle->getRestrictionTypes();
-
                $id = $this->getId();
 
                if ( !$cascade ) {
@@ -2767,6 +2794,11 @@ class WikiPage implements Page, IDBAccessObject {
                // Reparse any pages transcluding this page
                LinksUpdate::queueRecursiveJobsForTable( $this->mTitle, 'templatelinks' );
 
+               // Reparse any pages including this image
+               if ( $this->mTitle->getNamespace() == NS_FILE ) {
+                       LinksUpdate::queueRecursiveJobsForTable( $this->mTitle, 'imagelinks' );
+               }
+
                // Clear caches
                WikiPage::onArticleDelete( $this->mTitle );
 
@@ -3235,17 +3267,17 @@ class WikiPage implements Page, IDBAccessObject {
                        return;
                }
 
-               // templatelinks table may have become out of sync,
+               // templatelinks or imagelinks tables may have become out of sync,
                // especially if using variable-based transclusions.
                // For paranoia, check if things have changed and if
                // so apply updates to the database. This will ensure
                // that cascaded protections apply as soon as the changes
                // are visible.
 
-               // Get templates from templatelinks
+               // Get templates from templatelinks and images from imagelinks
                $id = $this->getId();
 
-               $tlTemplates = array();
+               $dbLinks = array();
 
                $dbr = wfGetDB( DB_SLAVE );
                $res = $dbr->select( array( 'templatelinks' ),
@@ -3255,21 +3287,35 @@ class WikiPage implements Page, IDBAccessObject {
                );
 
                foreach ( $res as $row ) {
-                       $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true;
+                       $dbLinks["{$row->tl_namespace}:{$row->tl_title}"] = true;
                }
 
-               // Get templates from parser output.
-               $poTemplates = array();
+               $dbr = wfGetDB( DB_SLAVE );
+               $res = $dbr->select( array( 'imagelinks' ),
+                       array( 'il_to' ),
+                       array( 'il_from' => $id ),
+                       __METHOD__
+               );
+
+               foreach ( $res as $row ) {
+                       $dbLinks[NS_FILE . ":{$row->il_to}"] = true;
+               }
+
+               // Get templates and images from parser output.
+               $poLinks = array();
                foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
                        foreach ( $templates as $dbk => $id ) {
-                               $poTemplates["$ns:$dbk"] = true;
+                               $poLinks["$ns:$dbk"] = true;
                        }
                }
+               foreach ( $parserOutput->getImages() as $dbk => $id ) {
+                       $poLinks[NS_FILE . ":$dbk"] = true;
+               }
 
                // Get the diff
-               $templates_diff = array_diff_key( $poTemplates, $tlTemplates );
+               $links_diff = array_diff_key( $poLinks, $dbLinks );
 
-               if ( count( $templates_diff ) > 0 ) {
+               if ( count( $links_diff ) > 0 ) {
                        // Whee, link updates time.
                        // Note: we are only interested in links here. We don't need to get other DataUpdate items from the parser output.
                        $u = new LinksUpdate( $this->mTitle, $parserOutput, false );
@@ -3373,35 +3419,6 @@ class WikiPage implements Page, IDBAccessObject {
                return $this->doUpdateRestrictions( $limit, $expiry, $cascade, $reason, $user )->isOK();
        }
 
-       /**
-        * @deprecated since 1.18
-        */
-       public function quickEdit( $text, $comment = '', $minor = 0 ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               global $wgUser;
-               $this->doQuickEdit( $text, $wgUser, $comment, $minor );
-       }
-
-       /**
-        * @deprecated since 1.18
-        */
-       public function viewUpdates() {
-               wfDeprecated( __METHOD__, '1.18' );
-               global $wgUser;
-               $this->doViewUpdates( $wgUser );
-       }
-
-       /**
-        * @deprecated since 1.18
-        * @param $oldid int
-        * @return bool
-        */
-       public function useParserCache( $oldid ) {
-               wfDeprecated( __METHOD__, '1.18' );
-               global $wgUser;
-               return $this->isParserCacheUsed( ParserOptions::newFromUser( $wgUser ), $oldid );
-       }
-
        /**
         * Returns a list of updates to be performed when this page is deleted. The updates should remove any information
         * about this page from secondary data stores such as links tables.
index ac0539d..45441fd 100644 (file)
@@ -500,34 +500,34 @@ class Xml {
                $options = self::option( $other, 'other', $selected === 'other' );
 
                foreach ( explode( "\n", $list ) as $option ) {
-                               $value = trim( $option );
-                               if ( $value == '' ) {
-                                       continue;
-                               } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
-                                       // A new group is starting ...
-                                       $value = trim( substr( $value, 1 ) );
-                                       if ( $optgroup ) {
-                                               $options .= self::closeElement( 'optgroup' );
-                                       }
-                                       $options .= self::openElement( 'optgroup', array( 'label' => $value ) );
-                                       $optgroup = true;
-                               } elseif ( substr( $value, 0, 2 ) == '**' ) {
-                                       // groupmember
-                                       $value = trim( substr( $value, 2 ) );
-                                       $options .= self::option( $value, $value, $selected === $value );
-                               } else {
-                                       // groupless reason list
-                                       if ( $optgroup ) {
-                                               $options .= self::closeElement( 'optgroup' );
-                                       }
-                                       $options .= self::option( $value, $value, $selected === $value );
-                                       $optgroup = false;
+                       $value = trim( $option );
+                       if ( $value == '' ) {
+                               continue;
+                       } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
+                               // A new group is starting ...
+                               $value = trim( substr( $value, 1 ) );
+                               if ( $optgroup ) {
+                                       $options .= self::closeElement( 'optgroup' );
                                }
+                               $options .= self::openElement( 'optgroup', array( 'label' => $value ) );
+                               $optgroup = true;
+                       } elseif ( substr( $value, 0, 2 ) == '**' ) {
+                               // groupmember
+                               $value = trim( substr( $value, 2 ) );
+                               $options .= self::option( $value, $value, $selected === $value );
+                       } else {
+                               // groupless reason list
+                               if ( $optgroup ) {
+                                       $options .= self::closeElement( 'optgroup' );
+                               }
+                               $options .= self::option( $value, $value, $selected === $value );
+                               $optgroup = false;
                        }
+               }
 
-                       if ( $optgroup ) {
-                               $options .= self::closeElement( 'optgroup' );
-                       }
+               if ( $optgroup ) {
+                       $options .= self::closeElement( 'optgroup' );
+               }
 
                $attribs = array();
 
diff --git a/includes/ZhClient.php b/includes/ZhClient.php
deleted file mode 100644 (file)
index c5955ae..0000000
+++ /dev/null
@@ -1,164 +0,0 @@
-<?php
-/**
- * Client for querying zhdaemon.
- *
- * 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
- */
-
-/**
- * Client for querying zhdaemon
- */
-class ZhClient {
-       var $mHost, $mPort, $mFP, $mConnected;
-
-       /**
-        * Constructor
-        *
-        * @param $host
-        * @param $port
-        *
-        * @return ZhClient
-        */
-       function __construct( $host, $port ) {
-               $this->mHost = $host;
-               $this->mPort = $port;
-               $this->mConnected = $this->connect();
-       }
-
-       /**
-        * Check if connection to zhdaemon is successful
-        *
-        * @return bool
-        */
-       function isconnected() {
-               return $this->mConnected;
-       }
-
-       /**
-        * Establish connection
-        *
-        * @access private
-        *
-        * @return bool
-        */
-       function connect() {
-               wfSuppressWarnings();
-               $errno = $errstr = '';
-               $this->mFP = fsockopen( $this->mHost, $this->mPort, $errno, $errstr, 30 );
-               wfRestoreWarnings();
-               return !$this->mFP;
-       }
-
-       /**
-        * Query the daemon and return the result
-        *
-        * @access private
-        *
-        * @return string
-        */
-       function query( $request ) {
-               if ( !$this->mConnected ) {
-                       return false;
-               }
-
-               fwrite( $this->mFP, $request );
-
-               $result = fgets( $this->mFP, 1024 );
-
-               list( $status, $len ) = explode( ' ', $result );
-               if ( $status == 'ERROR' ) {
-                       // $len is actually the error code...
-                       print "zhdaemon error $len<br />\n";
-                       return false;
-               }
-               $bytesread = 0;
-               $data = '';
-               while ( !feof( $this->mFP ) && $bytesread < $len ) {
-                       $str = fread( $this->mFP, $len - $bytesread );
-                       $bytesread += strlen( $str );
-                       $data .= $str;
-               }
-               // data should be of length $len. otherwise something is wrong
-               return strlen( $data ) == $len;
-       }
-
-       /**
-        * Convert the input to a different language variant
-        *
-        * @param string $text input text
-        * @param string $tolang language variant
-        * @return string the converted text
-        */
-       function convert( $text, $tolang ) {
-               $len = strlen( $text );
-               $q = "CONV $tolang $len\n$text";
-               $result = $this->query( $q );
-               if ( !$result ) {
-                       $result = $text;
-               }
-               return $result;
-       }
-
-       /**
-        * Convert the input to all possible variants
-        *
-        * @param string $text input text
-        * @return array langcode => converted_string
-        */
-       function convertToAllVariants( $text ) {
-               $len = strlen( $text );
-               $q = "CONV ALL $len\n$text";
-               $result = $this->query( $q );
-               if ( !$result ) {
-                       return false;
-               }
-               list( $infoline, $data ) = explode( '|', $result, 2 );
-               $info = explode( ';', $infoline );
-               $ret = array();
-               $i = 0;
-               foreach ( $info as $variant ) {
-                       list( $code, $len ) = explode( ' ', $variant );
-                       $ret[strtolower( $code )] = substr( $data, $i, $len );
-                       $i += $len;
-               }
-               return $ret;
-       }
-
-       /**
-        * Perform word segmentation
-        *
-        * @param string $text input text
-        * @return string segmented text
-        */
-       function segment( $text ) {
-               $len = strlen( $text );
-               $q = "SEG $len\n$text";
-               $result = $this->query( $q );
-               if ( !$result ) { // fallback to character based segmentation
-                       $result = $this->segment( $text );
-               }
-               return $result;
-       }
-
-       /**
-        * Close the connection
-        */
-       function close() {
-               fclose( $this->mFP );
-       }
-}
index df98836..a62df6c 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Simplified / Traditional Chinese conversion tables
  *
- * Automatically generated using code and data in includes/zhtable/
+ * Automatically generated using code and data in maintenance/language/zhtable/
  * Do not modify directly!
  *
  * @file
index e492bd4..8e800f9 100644 (file)
@@ -260,6 +260,7 @@ class HistoryAction extends FormlessAction {
                }
                $request = $this->getRequest();
 
+               /** @var RSSFeed|AtomFeed $feed */
                $feed = new $wgFeedClasses[$type](
                        $this->getTitle()->getPrefixedText() . ' - ' .
                        $this->msg( 'history-feed-title' )->inContentLanguage()->text(),
@@ -558,7 +559,7 @@ class HistoryPager extends ReverseChronologicalPager {
         *
         * @todo document some more, and maybe clean up the code (some params redundant?)
         *
-        * @param stdObject $row The database row corresponding to the previous line.
+        * @param stdClass $row The database row corresponding to the previous line.
         * @param mixed $next The database row corresponding to the next line
         *   (chronologically previous)
         * @param bool|string $notificationtimestamp
index 811e35d..a424b9d 100644 (file)
@@ -193,7 +193,7 @@ class InfoAction extends FormlessAction {
         * @return array
         */
        protected function pageInfo() {
-               global $wgContLang, $wgRCMaxAge, $wgMemc,
+               global $wgContLang, $wgRCMaxAge, $wgMemc, $wgMiserMode,
                        $wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit;
 
                $user = $this->getUser();
@@ -540,7 +540,11 @@ class InfoAction extends FormlessAction {
                ) {
                        $options = array( 'LIMIT' => $wgPageInfoTransclusionLimit );
                        $transcludedTemplates = $title->getTemplateLinksFrom( $options );
-                       $transcludedTargets = $title->getTemplateLinksTo( $options );
+                       if ( $wgMiserMode ) {
+                               $transcludedTargets = array();
+                       } else {
+                               $transcludedTargets = $title->getTemplateLinksTo( $options );
+                       }
 
                        // Page properties
                        $pageInfo['header-properties'] = array();
@@ -581,7 +585,7 @@ class InfoAction extends FormlessAction {
                                );
                        }
 
-                       if ( $pageCounts['transclusion']['to'] > 0 ) {
+                       if ( !$wgMiserMode && $pageCounts['transclusion']['to'] > 0 ) {
                                if ( $pageCounts['transclusion']['to'] > count( $transcludedTargets ) ) {
                                        $more = Linker::link(
                                                $whatLinksHere,
index a0116fb..bab2f93 100644 (file)
@@ -77,7 +77,8 @@ class RawAction extends FormlessAction {
 
                $contentType = $this->getContentType();
 
-               # Force caching for CSS and JS raw content, default: 5 minutes
+               # Force caching for CSS and JS raw content, default: 5 minutes.
+               # Note: If using a canonical url for userpage css/js, we send an HTCP purge.
                if ( $smaxage === null ) {
                        if ( $contentType == 'text/css' || $contentType == 'text/javascript' ) {
                                $smaxage = intval( $wgForcedRawSMaxage );
index 1803629..b6eeb7b 100644 (file)
@@ -49,7 +49,7 @@ class RevisiondeleteAction extends FormlessAction {
        public function show() {
                $special = SpecialPageFactory::getPage( 'Revisiondelete' );
                $special->setContext( $this->getContext() );
-               $special->getContext()->setTitle( $special->getTitle() );
+               $special->getContext()->setTitle( $special->getPageTitle() );
                $special->run( '' );
        }
 }
index d48a0ea..617f1c9 100644 (file)
@@ -62,6 +62,7 @@ class RollbackAction extends FormlessAction {
                        $this->getOutput()->addWikiMsgArray( $errMsg, $errArray );
 
                        if ( isset( $details['current'] ) ) {
+                               /** @var Revision $current */
                                $current = $details['current'];
 
                                if ( $current->getComment() != '' ) {
@@ -85,6 +86,7 @@ class RollbackAction extends FormlessAction {
                        throw new ErrorPageError( 'rollbackfailed', $error[0], array_slice( $error, 1 ) );
                }
 
+               /** @var Revision $current */
                $current = $details['current'];
                $target = $details['target'];
                $newId = $details['newid'];
index b6a7ca8..40edf4e 100644 (file)
@@ -861,17 +861,6 @@ abstract class ApiBase extends ContextSource {
                return !is_null( $x ) && $x !== false;
        }
 
-       /**
-        * @deprecated since 1.17 use MWNamespace::getValidNamespaces()
-        *
-        * @return array
-        */
-       public static function getValidNamespaces() {
-               wfDeprecated( __METHOD__, '1.17' );
-
-               return MWNamespace::getValidNamespaces();
-       }
-
        /**
         * Return true if we're to watch the page, false if not, null if no change.
         * @param string $watchlist Valid values: 'watch', 'unwatch', 'preferences', 'nochange'
index 27037cb..f90ba98 100644 (file)
@@ -41,7 +41,7 @@ class ApiFeedContributions extends ApiBase {
        public function execute() {
                $params = $this->extractRequestParams();
 
-               global $wgFeed, $wgFeedClasses, $wgSitename, $wgLanguageCode;
+               global $wgFeed, $wgFeedClasses, $wgFeedLimit, $wgSitename, $wgLanguageCode;
 
                if ( !$wgFeed ) {
                        $this->dieUsage( 'Syndication feeds are not available', 'feed-unavailable' );
@@ -81,9 +81,19 @@ class ApiFeedContributions extends ApiBase {
                        'showSizeDiff' => $params['showsizediff'],
                ) );
 
+               if ( $pager->getLimit() > $wgFeedLimit ) {
+                       $pager->setLimit( $wgFeedLimit );
+               }
+
                $feedItems = array();
                if ( $pager->getNumRows() > 0 ) {
+                       $count = 0;
+                       $limit = $pager->getLimit();
                        foreach ( $pager->mResult as $row ) {
+                               // ContribsPager selects one more row for navigation, skip that row
+                               if ( ++$count > $limit ) {
+                                       break;
+                               }
                                $feedItems[] = $this->feedItem( $row );
                        }
                }
index dc5e24e..a3fa5f9 100644 (file)
  * @ingroup API
  */
 class ApiFileRevert extends ApiBase {
-
-       /**
-        * @var File
-        */
+       /** @var LocalFile */
        protected $file;
+
+       /** @var string */
        protected $archiveName;
 
+       /** @var array */
        protected $params;
 
        public function execute() {
index 861fa82..ea61932 100644 (file)
@@ -292,16 +292,6 @@ class ApiMain extends ApiBase {
                $this->mCacheMode = $mode;
        }
 
-       /**
-        * @deprecated since 1.17 Private caching is now the default, so there is usually no
-        * need to call this function. If there is a need, you can use
-        * $this->setCacheMode('private')
-        */
-       public function setCachePrivate() {
-               wfDeprecated( __METHOD__, '1.17' );
-               $this->setCacheMode( 'private' );
-       }
-
        /**
         * Set directives (key/value pairs) for the Cache-Control header.
         * Boolean values will be formatted as such, by including or omitting
@@ -316,21 +306,6 @@ class ApiMain extends ApiBase {
                $this->mCacheControl = $directives + $this->mCacheControl;
        }
 
-       /**
-        * Make sure Vary: Cookie and friends are set. Use this when the output of a request
-        * may be cached for anons but may not be cached for logged-in users.
-        *
-        * WARNING: This function must be called CONSISTENTLY for a given URL. This means that a
-        * given URL must either always or never call this function; if it sometimes does and
-        * sometimes doesn't, stuff will break.
-        *
-        * @deprecated since 1.17 Use setCacheMode( 'anon-public-user-private' )
-        */
-       public function setVaryCookie() {
-               wfDeprecated( __METHOD__, '1.17' );
-               $this->setCacheMode( 'anon-public-user-private' );
-       }
-
        /**
         * Create an instance of an output formatter by its name
         *
@@ -744,7 +719,11 @@ class ApiMain extends ApiBase {
                                $this->dieUsageMsg( array( 'missingparam', 'token' ) );
                        }
 
-                       if ( !$this->getUser()->matchEditToken( $moduleParams['token'], $salt, $this->getContext()->getRequest() ) ) {
+                       if ( !$this->getUser()->matchEditToken(
+                               $moduleParams['token'],
+                               $salt,
+                               $this->getContext()->getRequest() )
+                       ) {
                                $this->dieUsageMsg( 'sessionfailure' );
                        }
                }
@@ -811,6 +790,28 @@ class ApiMain extends ApiBase {
                }
        }
 
+       /**
+        * Check asserts of the user's rights
+        * @param $params array
+        */
+       protected function checkAsserts( $params ) {
+               if ( isset( $params['assert'] ) ) {
+                       $user = $this->getUser();
+                       switch ( $params['assert'] ) {
+                               case 'user':
+                                       if ( $user->isAnon() ) {
+                                               $this->dieUsage( 'Assertion that the user is logged in failed', 'assertuserfailed' );
+                                       }
+                                       break;
+                               case 'bot':
+                                       if ( !$user->isAllowed( 'bot' ) ) {
+                                               $this->dieUsage( 'Assertion that the user has the bot right failed', 'assertbotfailed' );
+                                       }
+                                       break;
+                       }
+               }
+       }
+
        /**
         * Check POST for external response and setup result printer
         * @param $module ApiBase An Api module
@@ -853,6 +854,8 @@ class ApiMain extends ApiBase {
                        $this->setupExternalResponse( $module, $params );
                }
 
+               $this->checkAsserts( $params );
+
                // Execute
                $module->profileIn();
                $module->execute();
@@ -1042,6 +1045,9 @@ class ApiMain extends ApiBase {
                                ApiBase::PARAM_TYPE => 'integer',
                                ApiBase::PARAM_DFLT => 0
                        ),
+                       'assert' => array(
+                               ApiBase::PARAM_TYPE => array( 'user', 'bot' )
+                       ),
                        'requestid' => null,
                        'servedby' => false,
                        'origin' => null,
@@ -1067,6 +1073,7 @@ class ApiMain extends ApiBase {
                        ),
                        'smaxage' => 'Set the s-maxage header to this many seconds. Errors are never cached',
                        'maxage' => 'Set the max-age header to this many seconds. Errors are never cached',
+                       'assert' => 'Verify the user is logged in if set to "user", or has the bot userright if "bot"',
                        'requestid' => 'Request ID to distinguish requests. This will just be output back to you',
                        'servedby' => 'Include the hostname that served the request in the ' .
                                'results. Unconditionally shown on error',
@@ -1139,6 +1146,8 @@ class ApiMain extends ApiBase {
                        array( 'code' => 'unknown_action', 'info' => 'The API requires a valid action parameter' ),
                        array( 'code' => 'maxlag', 'info' => 'Waiting for host: x seconds lagged' ),
                        array( 'code' => 'maxlag', 'info' => 'Waiting for a database server: x seconds lagged' ),
+                       array( 'code' => 'assertuserfailed', 'info' => 'Assertion that the user is logged in failed' ),
+                       array( 'code' => 'assertbotfailed', 'info' => 'Assertion that the user has the bot right failed' ),
                ) );
        }
 
index e95e680..0d733a2 100644 (file)
@@ -308,7 +308,7 @@ class ApiPageSet extends ApiBase {
 
        /**
         * All Title objects provided.
-        * @return array of Title objects
+        * @return Title[]
         */
        public function getTitles() {
                return $this->mTitles;
@@ -324,7 +324,7 @@ class ApiPageSet extends ApiBase {
 
        /**
         * Title objects that were found in the database.
-        * @return array page_id (int) => Title (obj)
+        * @return Title[] Array page_id (int) => Title (obj)
         */
        public function getGoodTitles() {
                return $this->mGoodTitles;
@@ -341,7 +341,7 @@ class ApiPageSet extends ApiBase {
        /**
         * Title objects that were NOT found in the database.
         * The array's index will be negative for each item
-        * @return array of Title objects
+        * @return Title[]
         */
        public function getMissingTitles() {
                return $this->mMissingTitles;
@@ -350,7 +350,7 @@ class ApiPageSet extends ApiBase {
        /**
         * Titles that were deemed invalid by Title::newFromText()
         * The array's index will be unique and negative for each item
-        * @return array of strings (not Title objects)
+        * @return string[] Array of strings (not Title objects)
         */
        public function getInvalidTitles() {
                return $this->mInvalidTitles;
index ddc032d..464fde6 100644 (file)
@@ -176,11 +176,14 @@ class ApiParse extends ApiBase {
                        if ( !$titleObj || $titleObj->isExternal() ) {
                                $this->dieUsageMsg( array( 'invalidtitle', $title ) );
                        }
-                       if ( !$titleObj->canExist() ) {
-                               $this->dieUsage( "Namespace doesn't allow actual pages", 'pagecannotexist' );
-                       }
                        $wgTitle = $titleObj;
-                       $pageObj = WikiPage::factory( $titleObj );
+                       if ( $titleObj->canExist() ) {
+                               $pageObj = WikiPage::factory( $titleObj );
+                       } else {
+                               // Do like MediaWiki::initializeArticle()
+                               $article = Article::newFromTitle( $titleObj, $this->getContext() );
+                               $pageObj = $article->getPage();
+                       }
 
                        $popts = $this->makeParserOptions( $pageObj, $params );
 
@@ -249,6 +252,10 @@ class ApiParse extends ApiBase {
                        $result_array['redirects'] = $redirValues;
                }
 
+               if ( $params['disabletoc'] ) {
+                       $p_result->setTOCEnabled( false );
+               }
+
                if ( isset( $prop['text'] ) ) {
                        $result_array['text'] = array();
                        ApiResult::setContent( $result_array['text'], $p_result->getText() );
@@ -532,6 +539,9 @@ class ApiParse extends ApiBase {
         */
        private function languagesHtml( $languages ) {
                wfDeprecated( __METHOD__, '1.18' );
+               $this->setWarning( '"action=parse&prop=languageshtml" is deprecated ' .
+                       'and will be removed in MediaWiki 1.24. Use "prop=langlinks" ' .
+                       'to generate your own HTML.' );
 
                global $wgContLang, $wgHideInterlanguageLinks;
 
@@ -688,6 +698,7 @@ class ApiParse extends ApiBase {
                        'generatexml' => false,
                        'preview' => false,
                        'sectionpreview' => false,
+                       'disabletoc' => false,
                        'contentformat' => array(
                                ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
                        ),
@@ -716,7 +727,8 @@ class ApiParse extends ApiBase {
                                ' langlinks      - Gives the language links in the parsed wikitext',
                                ' categories     - Gives the categories in the parsed wikitext',
                                ' categorieshtml - Gives the HTML version of the categories',
-                               ' languageshtml  - Gives the HTML version of the language links',
+                               ' languageshtml  - DEPRECATED. Will be removed in MediaWiki 1.24.',
+                               '                  Gives the HTML version of the language links',
                                ' links          - Gives the internal links in the parsed wikitext',
                                ' templates      - Gives the templates in the parsed wikitext',
                                ' images         - Gives the images in the parsed wikitext',
@@ -749,6 +761,7 @@ class ApiParse extends ApiBase {
                        'generatexml' => "Generate XML parse tree (requires contentmodel=$wikitext)",
                        'preview' => 'Parse in preview mode',
                        'sectionpreview' => 'Parse in section preview mode (enables preview mode too)',
+                       'disabletoc' => 'Disable table of contents in output',
                        'contentformat' => array(
                                'Content serialization format used for the input text',
                                "Only valid when used with {$p}text",
@@ -795,7 +808,6 @@ class ApiParse extends ApiBase {
                                'code' => 'notwikitext',
                                'info' => 'The requested operation is only supported on wikitext content.'
                        ),
-                       array( 'code' => 'pagecannotexist', 'info' => "Namespace doesn't allow actual pages" ),
                ) );
        }
 
index cec1ca8..c054bc1 100644 (file)
@@ -44,6 +44,7 @@ class ApiQuery extends ApiBase {
        private static $QueryPropModules = array(
                'categories' => 'ApiQueryCategories',
                'categoryinfo' => 'ApiQueryCategoryInfo',
+               'contributors' => 'ApiQueryContributors',
                'duplicatefiles' => 'ApiQueryDuplicateFiles',
                'extlinks' => 'ApiQueryExternalLinks',
                'images' => 'ApiQueryImages',
index d0ab59e..6bf8075 100644 (file)
@@ -67,8 +67,8 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                }
 
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_CATEGORY ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_CATEGORY ) );
                $this->addWhereRange( 'cat_title', $dir, $from, $to );
 
                $min = $params['min'];
@@ -80,8 +80,9 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
                }
 
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'cat_title' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'cat_title' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], NS_CATEGORY ),
+                               $db->anyString() ) );
                }
 
                $this->addOption( 'LIMIT', $params['limit'] + 1 );
index 9f97cac..4095bd8 100644 (file)
@@ -132,13 +132,14 @@ class ApiQueryAllImages extends ApiQueryGeneratorBase {
                        }
 
                        // Image filters
-                       $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-                       $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+                       $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_FILE ) );
+                       $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_FILE ) );
                        $this->addWhereRange( 'img_name', ( $ascendingOrder ? 'newer' : 'older' ), $from, $to );
 
                        if ( isset( $params['prefix'] ) ) {
-                               $this->addWhere( 'img_name' .
-                                       $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                               $this->addWhere( 'img_name' . $db->buildLike(
+                                       $this->titlePartToKey( $params['prefix'], NS_FILE ),
+                                       $db->anyString() ) );
                        }
                } else {
                        // Check mutually exclusive params
index ff53d0f..5be304d 100644 (file)
@@ -148,15 +148,16 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
                }
 
                // 'continue' always overrides 'from'
-               $from = $continue || is_null( $params['from'] )
-                       ? null
-                       : $this->titlePartToKey( $params['from'] );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $continue || $params['from'] === null ? null :
+                       $this->titlePartToKey( $params['from'], $params['namespace'] ) );
+               $to = ( $params['to'] === null ? null :
+                       $this->titlePartToKey( $params['to'], $params['namespace'] ) );
                $this->addWhereRange( $pfx . $fieldTitle, 'newer', $from, $to );
 
+
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( $pfx . $fieldTitle .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( $pfx . $fieldTitle . $db->buildLike( $this->titlePartToKey(
+                               $params['prefix'], $params['namespace'] ), $db->anyString() ) );
                }
 
                $this->addFields( array( 'pl_title' => $pfx . $fieldTitle ) );
index 363d657..430dd51 100644 (file)
@@ -87,13 +87,14 @@ class ApiQueryAllPages extends ApiQueryGeneratorBase {
 
                $this->addWhereFld( 'page_namespace', $params['namespace'] );
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], $params['namespace'] ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], $params['namespace'] ) );
                $this->addWhereRange( 'page_title', $dir, $from, $to );
 
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'page_title' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'page_title' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], $params['namespace'] ),
+                               $db->anyString() ) );
                }
 
                if ( is_null( $resultPageSet ) ) {
index fcd3180..32a03f1 100644 (file)
@@ -480,12 +480,28 @@ abstract class ApiQueryBase extends ApiBase {
        }
 
        /**
-        * An alternative to titleToKey() that doesn't trim trailing spaces
+        * An alternative to titleToKey() that doesn't trim trailing spaces, and
+        * does not mangle the input if starts with something that looks like a
+        * namespace. It is advisable to pass the namespace parameter in order to
+        * handle per-namespace capitalization settings.
         * @param string $titlePart Title part with spaces
+        * @param $defaultNamespace int Namespace to assume
         * @return string Title part with underscores
         */
-       public function titlePartToKey( $titlePart ) {
-               return substr( $this->titleToKey( $titlePart . 'x' ), 0, -1 );
+       public function titlePartToKey( $titlePart, $defaultNamespace = NS_MAIN ) {
+               $t = Title::makeTitleSafe( $defaultNamespace, $titlePart . 'x' );
+               if ( !$t ) {
+                       $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
+               }
+               if ( $defaultNamespace != $t->getNamespace() || $t->isExternal() ) {
+                       // This can happen in two cases. First, if you call titlePartToKey with a title part
+                       // that looks like a namespace, but with $defaultNamespace = NS_MAIN. It would be very
+                       // difficult to handle such a case. Such cases cannot exist and are therefore treated
+                       // as invalid user input. The second case is when somebody specifies a title interwiki
+                       // prefix.
+                       $this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
+               }
+               return substr( $t->getDbKey(), 0, -1 );
        }
 
        /**
index 271558b..f7bd59a 100644 (file)
@@ -326,8 +326,8 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                global $wgMiserMode;
                $p = $this->getModulePrefix();
                $desc = array(
-                       'title' => "Which category to enumerate (required). Must include ' .
-                               'Category: prefix. Cannot be used together with {$p}pageid",
+                       'title' => "Which category to enumerate (required). Must include " .
+                               "'Category:' prefix. Cannot be used together with {$p}pageid",
                        'pageid' => "Page ID of the category to enumerate. Cannot be used together with {$p}title",
                        'prop' => array(
                                'What pieces of information to include',
@@ -345,15 +345,15 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
                        'dir' => 'In which direction to sort',
                        'start' => "Timestamp to start listing from. Can only be used with {$p}sort=timestamp",
                        'end' => "Timestamp to end listing at. Can only be used with {$p}sort=timestamp",
-                       'startsortkey' => "Sortkey to start listing from. Must be given in ' .
-                               'binary format. Can only be used with {$p}sort=sortkey",
-                       'endsortkey' => "Sortkey to end listing at. Must be given in binary ' .
-                               'format. Can only be used with {$p}sort=sortkey",
-                       'startsortkeyprefix' => "Sortkey prefix to start listing from. Can ' .
-                               'only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
-                       'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, ' .
-                               'if this value occurs it will not be included!). Can only be used with ' .
-                               '{$p}sort=sortkey. Overrides {$p}endsortkey",
+                       'startsortkey' => "Sortkey to start listing from. Must be given in " .
+                               "binary format. Can only be used with {$p}sort=sortkey",
+                       'endsortkey' => "Sortkey to end listing at. Must be given in binary " .
+                               "format. Can only be used with {$p}sort=sortkey",
+                       'startsortkeyprefix' => "Sortkey prefix to start listing from. Can " .
+                               "only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
+                       'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, " .
+                               "if this value occurs it will not be included!). Can only be used with " .
+                               "{$p}sort=sortkey. Overrides {$p}endsortkey",
                        'continue' => 'For large categories, give the value returned from previous query',
                        'limit' => 'The maximum number of pages to return.',
                );
diff --git a/includes/api/ApiQueryContributors.php b/includes/api/ApiQueryContributors.php
new file mode 100644 (file)
index 0000000..6b896e3
--- /dev/null
@@ -0,0 +1,287 @@
+<?php
+/**
+ * Query the list of contributors to a page
+ *
+ * Created on Nov 14, 2013
+ *
+ * Copyright © 2013 Brad Jorsch
+ *
+ * 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.23
+ */
+
+/**
+ * A query module to show contributors to a page
+ *
+ * @ingroup API
+ * @since 1.23
+ */
+class ApiQueryContributors extends ApiQueryBase {
+       /** We don't want to process too many pages at once (it hits cold
+        * database pages too heavily), so only do the first MAX_PAGES input pages
+        * in each API call (leaving the rest for continuation).
+        */
+       const MAX_PAGES = 100;
+
+       public function __construct( $query, $moduleName ) {
+               // "pc" is short for "page contributors", "co" was already taken by the
+               // GeoData extension's prop=coordinates.
+               parent::__construct( $query, $moduleName, 'pc' );
+       }
+
+       public function execute() {
+               $db = $this->getDB();
+               $params = $this->extractRequestParams();
+               $this->requireMaxOneParameter( $params, 'group', 'excludegroup', 'rights', 'excluderights' );
+
+               // Only operate on existing pages
+               $pages = array_keys( $this->getPageSet()->getGoodTitles() );
+
+               // Filter out already-processed pages
+               if ( $params['continue'] !== null ) {
+                       $cont = explode( '|', $params['continue'] );
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
+                       $cont_page = (int)$cont[0];
+                       $pages = array_filter( $pages, function ( $v ) use ( $cont_page ) {
+                               return $v >= $cont_page;
+                       } );
+               }
+               if ( !count( $pages ) ) {
+                       // Nothing to do
+                       return;
+               }
+
+               // Apply MAX_PAGES, leaving any over the limit for a continue.
+               sort( $pages );
+               $continuePages = null;
+               if ( count( $pages ) > self::MAX_PAGES ) {
+                       $continuePages = $pages[self::MAX_PAGES] . '|0';
+                       $pages = array_slice( $pages, 0, self::MAX_PAGES );
+               }
+
+               $result = $this->getResult();
+
+               // First, count anons
+               $this->addTables( 'revision' );
+               $this->addFields( array(
+                       'page' => 'rev_page',
+                       'anons' => 'COUNT(DISTINCT rev_user_text)',
+               ) );
+               $this->addWhereFld( 'rev_page', $pages );
+               $this->addWhere( 'rev_user = 0' );
+               $this->addWhere( $db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+               $this->addOption( 'GROUP BY', 'rev_page' );
+               $res = $this->select( __METHOD__ );
+               foreach ( $res as $row ) {
+                       $fit = $result->addValue( array( 'query', 'pages', $row->page ),
+                               'anoncontributors', $row->anons
+                       );
+                       if ( !$fit ) {
+                               // This not fitting isn't reasonable, so it probably means that
+                               // some other module used up all the space. Just set a dummy
+                               // continue and hope it works next time.
+                               $this->setContinueEnumParameter( 'continue',
+                                       $params['continue'] !== null ? $params['continue'] : '0|0'
+                               );
+                               return;
+                       }
+               }
+
+               // Next, add logged-in users
+               $this->resetQueryParams();
+               $this->addTables( 'revision' );
+               $this->addFields( array(
+                       'page' => 'rev_page',
+                       'user' => 'rev_user',
+                       'username' => 'MAX(rev_user_text)', // Non-MySQL databases don't like partial group-by
+               ) );
+               $this->addWhereFld( 'rev_page', $pages );
+               $this->addWhere( 'rev_user != 0' );
+               $this->addWhere( $db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' );
+               $this->addOption( 'GROUP BY', 'rev_page, rev_user' );
+               $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+               // Force a sort order to ensure that properties are grouped by page
+               // But only if pp_page is not constant in the WHERE clause.
+               if ( count( $pages ) > 1 ) {
+                       $this->addOption( 'ORDER BY', 'rev_page, rev_user' );
+               } else {
+                       $this->addOption( 'ORDER BY', 'rev_user' );
+               }
+
+               $limitGroups = array();
+               if ( $params['group'] ) {
+                       $excludeGroups = false;
+                       $limitGroups = $params['group'];
+               } elseif ( $params['excludegroup'] ) {
+                       $excludeGroups = true;
+                       $limitGroups = $params['excludegroup'];
+               } elseif ( $params['rights'] ) {
+                       $excludeGroups = false;
+                       foreach ( $params['rights'] as $r ) {
+                               $limitGroups = array_merge( $limitGroups, User::getGroupsWithPermission( $r ) );
+                       }
+
+                       // If no group has the rights requested, no need to query
+                       if ( !$limitGroups ) {
+                               if ( $continuePages !== null ) {
+                                       // But we still need to continue for the next page's worth
+                                       // of anoncontributors
+                                       $this->setContinueEnumParameter( 'continue', $continuePages );
+                               }
+                               return;
+                       }
+               } elseif ( $params['excluderights'] ) {
+                       $excludeGroups = true;
+                       foreach ( $params['excluderights'] as $r ) {
+                               $limitGroups = array_merge( $limitGroups, User::getGroupsWithPermission( $r ) );
+                       }
+               }
+
+               if ( $limitGroups ) {
+                       $limitGroups = array_unique( $limitGroups );
+                       $this->addTables( 'user_groups' );
+                       $this->addJoinConds( array( 'user_groups' => array(
+                               $excludeGroups ? 'LEFT OUTER JOIN' : 'INNER JOIN',
+                               array( 'ug_user=rev_user', 'ug_group' => $limitGroups )
+                       ) ) );
+                       $this->addWhereIf( 'ug_user IS NULL', $excludeGroups );
+               }
+
+               if ( $params['continue'] !== null ) {
+                       $cont = explode( '|', $params['continue'] );
+                       $this->dieContinueUsageIf( count( $cont ) != 2 );
+                       $cont_page = (int)$cont[0];
+                       $cont_user = (int)$cont[1];
+                       $this->addWhere(
+                               "rev_page > $cont_page OR " .
+                               "(rev_page = $cont_page AND " .
+                               "rev_user >= $cont_user)"
+                       );
+               }
+
+               $res = $this->select( __METHOD__ );
+               $count = 0;
+               foreach ( $res as $row ) {
+                       if ( ++$count > $params['limit'] ) {
+                               // We've reached the one extra which shows that
+                               // there are additional pages to be had. Stop here...
+                               $this->setContinueEnumParameter( 'continue', $row->page . '|' . $row->user );
+                               return;
+                       }
+
+                       $fit = $this->addPageSubItem( $row->page,
+                               array( 'userid' => $row->user, 'name' => $row->username ),
+                               'user'
+                       );
+                       if ( !$fit ) {
+                               $this->setContinueEnumParameter( 'continue', $row->page . '|' . $row->user );
+                               return;
+                       }
+               }
+
+               if ( $continuePages !== null ) {
+                       $this->setContinueEnumParameter( 'continue', $continuePages );
+               }
+       }
+
+       public function getCacheMode( $params ) {
+               return 'public';
+       }
+
+       public function getAllowedParams() {
+               $userGroups = User::getAllGroups();
+               $userRights = User::getAllRights();
+
+               return array(
+                       'group' => array(
+                               ApiBase::PARAM_TYPE => $userGroups,
+                               ApiBase::PARAM_ISMULTI => true,
+                       ),
+                       'excludegroup' => array(
+                               ApiBase::PARAM_TYPE => $userGroups,
+                               ApiBase::PARAM_ISMULTI => true,
+                       ),
+                       'rights' => array(
+                               ApiBase::PARAM_TYPE => $userRights,
+                               ApiBase::PARAM_ISMULTI => true,
+                       ),
+                       'excluderights' => array(
+                               ApiBase::PARAM_TYPE => $userRights,
+                               ApiBase::PARAM_ISMULTI => true,
+                       ),
+                       'limit' => array(
+                               ApiBase::PARAM_DFLT => 10,
+                               ApiBase::PARAM_TYPE => 'limit',
+                               ApiBase::PARAM_MIN => 1,
+                               ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+                               ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+                       ),
+                       'continue' => null,
+               );
+       }
+
+       public function getParamDescription() {
+               return array(
+                       'group' => array(
+                               'Limit users to given group name(s)',
+                               'Does not include implicit or auto-promoted groups like *, user, or autoconfirmed'
+                       ),
+                       'excludegroup' => array(
+                               'Exclude users in given group name(s)',
+                               'Does not include implicit or auto-promoted groups like *, user, or autoconfirmed'
+                       ),
+                       'rights' => array(
+                               'Limit users to those having given right(s)',
+                               'Does not include rights granted by implicit or auto-promoted groups ' .
+                                       'like *, user, or autoconfirmed'
+                       ),
+                       'excluderights' => array(
+                               'Limit users to those not having given right(s)',
+                               'Does not include rights granted by implicit or auto-promoted groups ' .
+                                       'like *, user, or autoconfirmed'
+                       ),
+                       'limit' => 'How many contributors to return',
+                       'continue' => 'When more results are available, use this to continue',
+               );
+       }
+
+       public function getPossibleErrors() {
+               return array_merge( parent::getPossibleErrors(),
+                       $this->getRequireMaxOneParameterErrorMessages(
+                               array( 'group', 'excludegroup', 'rights', 'excluderights' )
+                       )
+               );
+       }
+
+
+       public function getDescription() {
+               return 'Get the list of logged-in contributors and ' .
+                       'the count of anonymous contributors to a page';
+       }
+
+       public function getExamples() {
+               return array(
+                       'api.php?action=query&prop=contributors&titles=Main_Page',
+               );
+       }
+
+       public function getHelpUrls() {
+               return 'https://www.mediawiki.org/wiki/API:Properties#contributors_.2F_pc';
+       }
+}
index 35e78ac..4e4b2cc 100644 (file)
@@ -59,6 +59,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                $fld_sha1 = isset( $prop['sha1'] );
                $fld_content = isset( $prop['content'] );
                $fld_token = isset( $prop['token'] );
+               $fld_tags = isset( $prop['tags'] );
 
                // If we're in JSON callback mode, no tokens can be obtained
                if ( !is_null( $this->getMain()->getRequest()->getVal( 'callback' ) ) ) {
@@ -112,6 +113,22 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                $this->addFieldsIf( 'ar_len', $fld_len );
                $this->addFieldsIf( 'ar_sha1', $fld_sha1 );
 
+               if ( $fld_tags ) {
+                       $this->addTables( 'tag_summary' );
+                       $this->addJoinConds(
+                               array( 'tag_summary' => array( 'LEFT JOIN', array( 'ar_rev_id=ts_rev_id' ) ) )
+                       );
+                       $this->addFields( 'ts_tags' );
+               }
+
+               if ( !is_null( $params['tag'] ) ) {
+                       $this->addTables( 'change_tag' );
+                       $this->addJoinConds(
+                               array( 'change_tag' => array( 'INNER JOIN', array( 'ar_rev_id=ct_rev_id' ) ) )
+                       );
+                       $this->addWhereFld( 'ct_tag', $params['tag'] );
+               }
+
                if ( $fld_content ) {
                        $this->addTables( 'text' );
                        $this->addFields( array( 'ar_text', 'ar_text_id', 'old_text', 'old_flags' ) );
@@ -153,13 +170,14 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                } elseif ( $mode == 'all' ) {
                        $this->addWhereFld( 'ar_namespace', $params['namespace'] );
 
-                       $from = is_null( $params['from'] ) ? null : $this->titleToKey( $params['from'] );
-                       $to = is_null( $params['to'] ) ? null : $this->titleToKey( $params['to'] );
+                       $from = $params['from'] === null ? null : $this->titlePartToKey( $params['from'], $params['namespace'] );
+                       $to = $params['to'] === null ? null : $this->titlePartToKey( $params['to'], $params['namespace'] );
                        $this->addWhereRange( 'ar_title', $dir, $from, $to );
 
                        if ( isset( $params['prefix'] ) ) {
-                               $this->addWhere( 'ar_title' .
-                                       $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                               $this->addWhere( 'ar_title' . $db->buildLike(
+                                       $this->titlePartToKey( $params['prefix'], $params['namespace'] ),
+                                       $db->anyString() ) );
                        }
                }
 
@@ -264,6 +282,16 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                ApiResult::setContent( $rev, Revision::getRevisionText( $row ) );
                        }
 
+                       if ( $fld_tags ) {
+                               if ( $row->ts_tags ) {
+                                       $tags = explode( ',', $row->ts_tags );
+                                       $this->getResult()->setIndexedTagName( $tags, 'tag' );
+                                       $rev['tags'] = $tags;
+                               } else {
+                                       $rev['tags'] = array();
+                               }
+                       }
+
                        if ( !isset( $pageMap[$row->ar_namespace][$row->ar_title] ) ) {
                                $pageID = $newPageID++;
                                $pageMap[$row->ar_namespace][$row->ar_title] = $pageID;
@@ -313,6 +341,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                        'prefix' => null,
                        'continue' => null,
                        'unique' => false,
+                       'tag' => null,
                        'user' => array(
                                ApiBase::PARAM_TYPE => 'user'
                        ),
@@ -343,7 +372,8 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                        'len',
                                        'sha1',
                                        'content',
-                                       'token'
+                                       'token',
+                                       'tags'
                                ),
                                ApiBase::PARAM_ISMULTI => true
                        ),
@@ -372,12 +402,14 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
                                ' sha1           - Adds the SHA-1 (base 16) of the revision',
                                ' content        - Adds the content of the revision',
                                ' token          - Gives the edit token',
+                               ' tags           - Tags for the revision',
                        ),
                        'namespace' => 'Only list pages in this namespace (3)',
                        'user' => 'Only list revisions by this user',
                        'excludeuser' => 'Don\'t list revisions by this user',
                        'continue' => 'When more results are available, use this to continue (1, 3)',
                        'unique' => 'List only one revision for each page (3)',
+                       'tag' => 'Only list revisions tagged with this tag',
                );
        }
 
index 148c4dd..dffe301 100644 (file)
@@ -35,11 +35,7 @@ class ApiQueryFileRepoInfo extends ApiQueryBase {
 
        protected function getInitialisedRepoGroup() {
                $repoGroup = RepoGroup::singleton();
-
-               if ( !$repoGroup->reposInitialised ) {
-                       $repoGroup->initialiseRepos();
-               }
-
+               $repoGroup->initialiseRepos();
                return $repoGroup;
        }
 
@@ -55,7 +51,7 @@ class ApiQueryFileRepoInfo extends ApiQueryBase {
                        $repos[] = array_intersect_key( $repo->getInfo(), $props );
                } );
 
-               $repos[] = array_intersect_key( $repoGroup->localRepo->getInfo(), $props );
+               $repos[] = array_intersect_key( $repoGroup->getLocalRepo()->getInfo(), $props );
 
                $result = $this->getResult();
                $result->setIndexedTagName( $repos, 'repo' );
@@ -88,7 +84,7 @@ class ApiQueryFileRepoInfo extends ApiQueryBase {
 
                return array_values( array_unique( array_merge(
                        $props,
-                       array_keys( $repoGroup->localRepo->getInfo() )
+                       array_keys( $repoGroup->getLocalRepo()->getInfo() )
                ) ) );
        }
 
index f8f4558..e2c9964 100644 (file)
@@ -88,15 +88,16 @@ class ApiQueryFilearchive extends ApiQueryBase {
 
                // Image filters
                $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
-               $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
+               $from = ( $params['from'] === null ? null : $this->titlePartToKey( $params['from'], NS_FILE ) );
                if ( !is_null( $params['continue'] ) ) {
                        $from = $params['continue'];
                }
-               $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+               $to = ( $params['to'] === null ? null : $this->titlePartToKey( $params['to'], NS_FILE ) );
                $this->addWhereRange( 'fa_name', $dir, $from, $to );
                if ( isset( $params['prefix'] ) ) {
-                       $this->addWhere( 'fa_name' .
-                               $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
+                       $this->addWhere( 'fa_name' . $db->buildLike(
+                               $this->titlePartToKey( $params['prefix'], NS_FILE ),
+                               $db->anyString() ) );
                }
 
                $sha1Set = isset( $params['sha1'] );
index 86cba83..bf11a76 100644 (file)
@@ -385,6 +385,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        }
                }
 
+               $canonicaltitle = isset( $prop['canonicaltitle'] );
                $url = isset( $prop['url'] );
                $sha1 = isset( $prop['sha1'] );
                $meta = isset( $prop['metadata'] );
@@ -395,7 +396,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                $bitdepth = isset( $prop['bitdepth'] );
                $uploadwarning = isset( $prop['uploadwarning'] );
 
-               if ( ( $url || $sha1 || $meta || $mime || $mediatype || $archive || $bitdepth )
+               if ( ( $canonicaltitle || $url || $sha1 || $meta || $mime || $mediatype || $archive || $bitdepth )
                        && $file->isDeleted( File::DELETED_FILE )
                ) {
                        $vals['filehidden'] = '';
@@ -404,6 +405,10 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        return $vals;
                }
 
+               if ( $canonicaltitle ) {
+                       $vals['canonicaltitle'] = $file->getTitle()->getPrefixedText();
+               }
+
                if ( $url ) {
                        if ( !is_null( $thumbParams ) ) {
                                $mto = $file->transform( $thumbParams );
@@ -618,6 +623,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
                        'userid' =>         ' userid        - Add the user ID that uploaded the image version',
                        'comment' =>        ' comment       - Comment on the version',
                        'parsedcomment' =>  ' parsedcomment - Parse the comment on the version',
+                       'canonicaltitle' => ' canonicaltitle - Adds the canonical title of the image file',
                        'url' =>            ' url           - Gives URL to the image and the description page',
                        'size' =>           ' size          - Adds the size of the image in bytes ' .
                                'and the height, width and page count (if applicable)',
@@ -737,6 +743,12 @@ class ApiQueryImageInfo extends ApiQueryBase {
                                        ApiBase::PROP_NULLABLE => true
                                )
                        ),
+                       'canonicaltitle' => array(
+                               'canonicaltitle' => array(
+                                       ApiBase::PROP_TYPE => 'string',
+                                       ApiBase::PROP_NULLABLE => true
+                               )
+                       ),
                        'url' => array(
                                'filehidden' => 'boolean',
                                'thumburl' => array(
index 0d2f475..e4ce256 100644 (file)
@@ -72,7 +72,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        'page' => array( 'LEFT JOIN',
                                array( 'log_namespace=page_namespace',
                                        'log_title=page_title' ) ) ) );
-               $index = array( 'logging' => 'times' ); // default, may change
 
                $this->addFields( array(
                        'log_type',
@@ -102,7 +101,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN',
                                array( 'log_id=ct_log_id' ) ) ) );
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                if ( !is_null( $params['action'] ) ) {
@@ -111,7 +109,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $this->addWhereFld( 'log_action', $action );
                } elseif ( !is_null( $params['type'] ) ) {
                        $this->addWhereFld( 'log_type', $params['type'] );
-                       $index['logging'] = 'type_time';
                }
 
                $this->addTimestampWhereRange(
@@ -127,11 +124,11 @@ class ApiQueryLogEvents extends ApiQueryBase {
                $user = $params['user'];
                if ( !is_null( $user ) ) {
                        $userid = User::idFromName( $user );
-                       if ( !$userid ) {
-                               $this->dieUsage( "User name $user not found", 'param_user' );
+                       if ( $userid ) {
+                               $this->addWhereFld( 'log_user', $userid );
+                       } else {
+                               $this->addWhereFld( 'log_user_text', IP::sanitizeIP( $user ) );
                        }
-                       $this->addWhereFld( 'log_user', $userid );
-                       $index['logging'] = 'user_time';
                }
 
                $title = $params['title'];
@@ -142,9 +139,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        }
                        $this->addWhereFld( 'log_namespace', $titleObj->getNamespace() );
                        $this->addWhereFld( 'log_title', $titleObj->getDBkey() );
-
-                       // Use the title index in preference to the user index if there is a conflict
-                       $index['logging'] = is_null( $user ) ? 'page_time' : array( 'page_time', 'user_time' );
                }
 
                $prefix = $params['prefix'];
@@ -163,8 +157,6 @@ class ApiQueryLogEvents extends ApiQueryBase {
                        $this->addWhere( 'log_title ' . $db->buildLike( $title->getDBkey(), $db->anyString() ) );
                }
 
-               $this->addOption( 'USE INDEX', $index );
-
                // Paranoia: avoid brute force searches (bug 17342)
                if ( !is_null( $title ) ) {
                        $this->addWhere( $db->bitAnd( 'log_deleted', LogPage::DELETED_ACTION ) . ' = 0' );
@@ -307,18 +299,22 @@ class ApiQueryLogEvents extends ApiQueryBase {
 
                if ( $this->fld_ids ) {
                        $vals['logid'] = intval( $row->log_id );
-                       $vals['pageid'] = intval( $row->page_id );
                }
 
                if ( $this->fld_title || $this->fld_parsedcomment ) {
                        $title = Title::makeTitle( $row->log_namespace, $row->log_title );
                }
 
-               if ( $this->fld_title ) {
+               if ( $this->fld_title || $this->fld_ids ) {
                        if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
                                $vals['actionhidden'] = '';
                        } else {
-                               ApiQueryBase::addTitleInfo( $vals, $title );
+                               if ( $this->fld_title ) {
+                                       ApiQueryBase::addTitleInfo( $vals, $title );
+                               }
+                               if ( $this->fld_ids ) {
+                                       $vals['pageid'] = intval( $row->page_id );
+                               }
                        }
                }
 
index e990386..0d54ffe 100644 (file)
@@ -60,7 +60,6 @@ class ApiQueryRandom extends ApiQueryGeneratorBase {
                $this->addWhereFld( 'page_namespace', $namespace );
                $this->addWhereRange( 'page_random', 'newer', $randstr, null );
                $this->addWhereFld( 'page_is_redirect', $redirect );
-               $this->addOption( 'USE INDEX', 'page_random' );
                if ( is_null( $resultPageSet ) ) {
                        $this->addFields( array( 'page_id', 'page_title', 'page_namespace' ) );
                } else {
index b44565e..b298003 100644 (file)
@@ -198,7 +198,10 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        }
 
                        // Check permissions
-                       if ( isset( $show['patrolled'] ) || isset( $show['!patrolled'] ) || isset( $show['unpatrolled'] ) ) {
+                       if ( isset( $show['patrolled'] )
+                               || isset( $show['!patrolled'] )
+                               || isset( $show['unpatrolled'] )
+                       ) {
                                if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
                                        $this->dieUsage(
                                                'You need the patrol right to request the patrolled flag',
@@ -321,7 +324,6 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                        $this->addTables( 'change_tag' );
                        $this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN', array( 'rc_id=ct_rc_id' ) ) ) );
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                $this->token = $params['token'];
@@ -557,6 +559,7 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
 
                        return $retval;
                }
+
                switch ( $type ) {
                        case 'edit':
                                return RC_EDIT;
@@ -566,6 +569,8 @@ class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
                                return RC_LOG;
                        case 'external':
                                return RC_EXTERNAL;
+                       default:
+                               ApiBase::dieDebug( __METHOD__, "Unknown type '$type'" );
                }
        }
 
index 86351c0..ea992b3 100644 (file)
@@ -180,9 +180,6 @@ class ApiQueryRevisions extends ApiQueryBase {
                        $this->contentFormat = $params['contentformat'];
                }
 
-               // Possible indexes used
-               $index = array();
-
                $userMax = ( $this->fld_content ? ApiBase::LIMIT_SML1 : ApiBase::LIMIT_BIG1 );
                $botMax = ( $this->fld_content ? ApiBase::LIMIT_SML2 : ApiBase::LIMIT_BIG2 );
                $limit = $params['limit'];
@@ -210,7 +207,6 @@ class ApiQueryRevisions extends ApiQueryBase {
                                array( 'change_tag' => array( 'INNER JOIN', array( 'rev_id=ct_rev_id' ) ) )
                        );
                        $this->addWhereFld( 'ct_tag', $params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                if ( isset( $prop['content'] ) || !is_null( $this->difftotext ) ) {
@@ -379,7 +375,6 @@ class ApiQueryRevisions extends ApiQueryBase {
                }
 
                $this->addOption( 'LIMIT', $limit + 1 );
-               $this->addOption( 'USE INDEX', $index );
 
                $count = 0;
                $res = $this->select( __METHOD__ );
index 1c188da..dc76a2d 100644 (file)
@@ -99,6 +99,9 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                case 'protocols':
                                        $fit = $this->appendProtocols( $p );
                                        break;
+                               case 'defaultoptions':
+                                       $fit = $this->appendDefaultOptions( $p );
+                                       break;
                                default:
                                        ApiBase::dieDebug( __METHOD__, "Unknown prop=$p" );
                        }
@@ -196,7 +199,10 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                if ( $wgContLang->hasVariants() ) {
                        $variants = array();
                        foreach ( $wgContLang->getVariants() as $code ) {
-                               $variants[] = array( 'code' => $code );
+                               $variants[] = array(
+                                       'code' => $code,
+                                       'name' => $wgContLang->getVariantname( $code ),
+                               );
                        }
                        $data['variants'] = $variants;
                        $this->getResult()->setIndexedTagName( $data['variants'], 'lang' );
@@ -239,6 +245,18 @@ class ApiQuerySiteinfo extends ApiQueryBase {
 
                $data['maxuploadsize'] = UploadBase::getMaxUploadSize();
 
+               $data['thumblimits'] = $GLOBALS['wgThumbLimits'];
+               $this->getResult()->setIndexedTagName( $data['thumblimits'], 'limit' );
+               $data['imagelimits'] = array();
+               $this->getResult()->setIndexedTagName( $data['imagelimits'], 'limit' );
+               foreach ( $GLOBALS['wgImageLimits'] as $k => $limit ) {
+                       $data['imagelimits'][$k] = array( 'width' => $limit[0], 'height' => $limit[1] );
+               }
+
+               if ( !empty( $GLOBALS['wgFavicon'] ) ) {
+                       $data['favicon'] = $GLOBALS['wgFavicon'];
+               }
+
                wfRunHooks( 'APIQuerySiteInfoGeneralInfo', array( $this, &$data ) );
 
                return $this->getResult()->addValue( 'query', $property, $data );
@@ -536,6 +554,31 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                ) {
                                        $ret['version'] = 'r' . $m[1];
                                }
+                               if ( isset( $ext['path'] ) ) {
+                                       $extensionPath = dirname( $ext['path'] );
+                                       $gitInfo = new GitInfo( $extensionPath );
+                                       $vcsVersion = $gitInfo->getHeadSHA1();
+                                       if ( $vcsVersion !== false ) {
+                                               $ret['vcs-system'] = 'git';
+                                               $ret['vcs-version'] =  $vcsVersion;
+                                               $ret['vcs-url'] = $gitInfo->getHeadViewUrl();
+                                               $ret['vcs-date'] = wfTimestamp( TS_ISO_8601, $gitInfo->getHeadCommitDate() );
+                                       } else {
+                                               $svnInfo = SpecialVersion::getSvnInfo( $extensionPath );
+                                               if ( $svnInfo !== false ) {
+                                                       $ret['vcs-system'] = 'svn';
+                                                       $ret['vcs-version'] = $svnInfo['checkout-rev'];
+                                                       $ret['vcs-url'] = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
+                                               }
+                                       }
+                                       if ( SpecialVersion::getExtLicenseFileName( $extensionPath ) ) {
+                                               $ret['license-name'] = isset( $ext['license-name'] ) ? $ext['license-name'] : '';
+                                               $ret['license'] = SpecialPage::getTitleFor( 'Version', "License/{$ext['name']}" )->getLinkURL();
+                                       }
+                                       if ( SpecialVersion::getExtAuthorsFileName( $extensionPath ) ) {
+                                               $ret['credits'] = SpecialPage::getTitleFor( 'Version', "Credits/{$ext['name']}" )->getLinkURL();
+                                       }
+                               }
                                $data[] = $ret;
                        }
                }
@@ -633,6 +676,10 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                return $this->getResult()->addValue( 'query', $property, $protocols );
        }
 
+       public function appendDefaultOptions( $property ) {
+               return $this->getResult()->addValue( 'query', $property, User::getDefaultOptions() );
+       }
+
        private function formatParserTags( $item ) {
                return "<{$item}>";
        }
@@ -687,6 +734,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                        'showhooks',
                                        'variables',
                                        'protocols',
+                                       'defaultoptions',
                                )
                        ),
                        'filteriw' => array(
@@ -728,6 +776,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
                                ' showhooks             - Returns a list of all subscribed hooks (contents of $wgHooks)',
                                ' variables             - Returns a list of variable IDs',
                                ' protocols             - Returns a list of protocols that are allowed in external links.',
+                               ' defaultoptions        - Returns the default values for user preferences.',
                        ),
                        'filteriw' => 'Return only local or only nonlocal entries of the interwiki map',
                        'showalldb' => 'List all database servers, not just the one lagging the most',
index 6c7a57d..1c9a93c 100644 (file)
@@ -282,7 +282,6 @@ class ApiQueryContributions extends ApiQueryBase {
                                array( 'change_tag' => array( 'INNER JOIN', array( 'rev_id=ct_rev_id' ) ) )
                        );
                        $this->addWhereFld( 'ct_tag', $this->params['tag'] );
-                       $index['change_tag'] = 'change_tag_tag_id';
                }
 
                if ( $this->params['toponly'] ) {
index f9af75a..3465e48 100644 (file)
@@ -360,7 +360,11 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                return $vals;
        }
 
-       /* Copied from ApiQueryRecentChanges. */
+       /** Copied from ApiQueryRecentChanges.
+        *
+        * @param string $type
+        * @return string
+        */
        private function parseRCType( $type ) {
                if ( is_array( $type ) ) {
                        $retval = array();
@@ -370,6 +374,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
 
                        return $retval;
                }
+
                switch ( $type ) {
                        case 'edit':
                                return RC_EDIT;
@@ -379,6 +384,8 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
                                return RC_LOG;
                        case 'external':
                                return RC_EXTERNAL;
+                       default:
+                               ApiBase::dieDebug( __METHOD__, "Unknown type '$type'" );
                }
        }
 
index dabb8da..46e2f6e 100644 (file)
@@ -98,10 +98,10 @@ class ApiUnblock extends ApiBase {
                $p = $this->getModulePrefix();
 
                return array(
-                       'id' => "ID of the block you want to unblock (obtained through list=blocks). ' .
-                               'Cannot be used together with {$p}user",
-                       'user' => "Username, IP address or IP range you want to unblock. ' .
-                               'Cannot be used together with {$p}id",
+                       'id' => "ID of the block you want to unblock (obtained through list=blocks). " .
+                               "Cannot be used together with {$p}user",
+                       'user' => "Username, IP address or IP range you want to unblock. " .
+                               "Cannot be used together with {$p}id",
                        'token' => "An unblock token previously obtained through prop=info",
                        'reason' => 'Reason for unblock',
                );
index 1a642b9..7d0d78e 100644 (file)
  * @ingroup API
  */
 class ApiUpload extends ApiBase {
-
-       /**
-        * @var UploadBase
-        */
+       /** @var UploadBase */
        protected $mUpload = null;
 
        protected $mParams;
index be98a21..2bd7321 100644 (file)
@@ -61,10 +61,13 @@ class ApiUserrights extends ApiBase {
                }
 
                $params = $this->extractRequestParams();
+               $this->requireOnlyOneParameter( $params, 'user', 'userid' );
+
+               $user = isset( $params['user'] ) ? $params['user'] : '#' . $params['userid'];
 
                $form = new UserrightsPage;
                $form->setContext( $this->getContext() );
-               $status = $form->fetchUser( $params['user'] );
+               $status = $form->fetchUser( $user );
                if ( !$status->isOK() ) {
                        $this->dieStatus( $status );
                }
@@ -86,7 +89,9 @@ class ApiUserrights extends ApiBase {
                return array(
                        'user' => array(
                                ApiBase::PARAM_TYPE => 'string',
-                               ApiBase::PARAM_REQUIRED => true
+                       ),
+                       'userid' => array(
+                               ApiBase::PARAM_TYPE => 'integer',
                        ),
                        'add' => array(
                                ApiBase::PARAM_TYPE => User::getAllGroups(),
@@ -109,6 +114,7 @@ class ApiUserrights extends ApiBase {
        public function getParamDescription() {
                return array(
                        'user' => 'User name',
+                       'userid' => 'User id',
                        'add' => 'Add the user to these groups',
                        'remove' => 'Remove the user from these groups',
                        'token' => 'A userrights token previously retrieved through list=users',
@@ -130,7 +136,8 @@ class ApiUserrights extends ApiBase {
 
        public function getExamples() {
                return array(
-                       'api.php?action=userrights&user=FooBot&add=bot&remove=sysop|bureaucrat&token=123ABC'
+                       'api.php?action=userrights&user=FooBot&add=bot&remove=sysop|bureaucrat&token=123ABC',
+                       'api.php?action=userrights&userid=123&add=bot&remove=sysop|bureaucrat&token=123ABC'
                );
        }
 
index 7ad286f..759afd7 100644 (file)
@@ -43,7 +43,7 @@ class ApiWatch extends ApiBase {
                $params = $this->extractRequestParams();
                $title = Title::newFromText( $params['title'] );
 
-               if ( !$title || $title->isExternal() || !$title->canExist() ) {
+               if ( !$title || !$title->isWatchable() ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                }
 
index 8eed1a5..d2ec26e 100644 (file)
@@ -156,10 +156,10 @@ class BacklinkCache {
 
        /**
         * Get the backlinks for a given table. Cached in process memory only.
-        * @param $table String
-        * @param $startId Integer|false
-        * @param $endId Integer|false
-        * @param $max Integer|INF
+        * @param string $table
+        * @param int|bool $startId
+        * @param int|bool $endId
+        * @param int|INF $max
         * @return TitleArrayFromResult
         */
        public function getLinks( $table, $startId = false, $endId = false, $max = INF ) {
@@ -274,8 +274,6 @@ class BacklinkCache {
        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':
@@ -297,14 +295,9 @@ class BacklinkCache {
                                );
                                break;
                        case 'imagelinks':
-                               $conds = array(
-                                       'il_to' => $this->title->getDBkey(),
-                                       "page_id={$prefix}_from"
-                               );
-                               break;
                        case 'categorylinks':
                                $conds = array(
-                                       'cl_to' => $this->title->getDBkey(),
+                                       "{$prefix}_to" => $this->title->getDBkey(),
                                        "page_id={$prefix}_from"
                                );
                                break;
@@ -433,7 +426,7 @@ class BacklinkCache {
                        $cacheEntry['numRows'] += $partitions['numRows'];
                        $cacheEntry['batches'] = array_merge( $cacheEntry['batches'], $partitions['batches'] );
                        if ( count( $partitions['batches'] ) ) {
-                               list( $lStart, $lEnd ) = end( $partitions['batches'] );
+                               list( , $lEnd ) = end( $partitions['batches'] );
                                $start = $lEnd + 1; // pick up after this inclusive range
                        }
                } while ( $partitions['numRows'] >= $selectSize );
index b7d0a7c..28889b5 100644 (file)
  */
 class DependencyWrapper {
        private $value;
+       /** @var CacheDependency[] */
        private $deps;
 
        /**
         * Create an instance.
         * @param $value Mixed: the user-supplied value
-        * @param $deps Mixed: a dependency or dependency array. All dependencies
-        *        must be objects implementing CacheDependency.
+        * @param CacheDependency|CacheDependency[] $deps A dependency or dependency
+        *   array. All dependencies must be objects implementing CacheDependency.
         */
        function __construct( $value = false, $deps = array() ) {
                $this->value = $value;
index d33f3f6..0c00c6b 100644 (file)
@@ -153,6 +153,7 @@ abstract class FileCacheBase {
 
        /**
         * Save and compress text to the cache
+        * @param string $text
         * @return string compressed text
         */
        public function saveText( $text ) {
index 0d706c0..de2a728 100644 (file)
@@ -78,6 +78,7 @@ class LinkCache {
        /**
         * General accessor to get/set whether SELECT FOR UPDATE should be used
         *
+        * @param $update
         * @return bool
         */
        public function forUpdate( $update = null ) {
index f02e0a1..cba2ba7 100644 (file)
@@ -527,6 +527,36 @@ class LocalisationCache {
                return $data;
        }
 
+       /**
+        * Read a JSON file containing localisation messages.
+        * @param string $fileName Name of file to read
+        * @throws MWException if there is a syntax error in the JSON file
+        * @return array with a 'messages' key, or empty array if the file doesn't exist
+        */
+       protected function readJSONFile( $fileName ) {
+               wfProfileIn( __METHOD__ );
+               if ( !is_readable( $fileName ) ) {
+                       return array();
+               }
+
+               $json = file_get_contents( $fileName );
+               if ( $json === false ) {
+                       return array();
+               }
+               $data = FormatJson::decode( $json, true );
+               if ( $data === null ) {
+                       throw new MWException( __METHOD__ . ": Invalid JSON file: $fileName" );
+               }
+               // Remove keys starting with '@', they're reserved for metadata and non-message data
+               foreach ( $data as $key => $unused ) {
+                       if ( $key === '' || $key[0] === '@' ) {
+                               unset( $data[$key] );
+                       }
+               }
+               // The JSON format only supports messages, none of the other variables, so wrap the data
+               return array( 'messages' => $data );
+       }
+
        /**
         * Get the compiled plural rules for a given language from the XML files.
         * @since 1.20
@@ -609,6 +639,10 @@ class LocalisationCache {
                        $ruleElements = $ruleset->getElementsByTagName( "pluralRule" );
                        foreach ( $ruleElements as $elt ) {
                                $ruleType = $elt->getAttribute( 'count' );
+                               if ( $ruleType === 'other' ) {
+                                       // Don't record "other" rules, which have an empty condition
+                                       continue;
+                               }
                                $rules[] = $elt->nodeValue;
                                $ruleTypes[] = $ruleType;
                        }
@@ -736,7 +770,7 @@ class LocalisationCache {
         * @throws MWException
         */
        public function recache( $code ) {
-               global $wgExtensionMessagesFiles;
+               global $wgExtensionMessagesFiles, $wgMessagesDirs;
                wfProfileIn( __METHOD__ );
 
                if ( !$code ) {
@@ -810,11 +844,33 @@ class LocalisationCache {
                # like site-specific message overrides.
                wfProfileIn( __METHOD__ . '-extensions' );
                $allData = $initialData;
-               foreach ( $wgExtensionMessagesFiles as $fileName ) {
+               foreach ( $wgMessagesDirs as $dirs ) {
+                       foreach ( (array)$dirs as $dir ) {
+                               foreach ( $codeSequence as $csCode ) {
+                                       $fileName = "$dir/$csCode.json";
+                                       $data = $this->readJSONFile( $fileName );
+
+                                       foreach ( $data as $key => $item ) {
+                                               $this->mergeItem( $key, $allData[$key], $item );
+                                       }
+
+                                       $deps[] = new FileDependency( $fileName );
+                               }
+                       }
+               }
+
+               foreach ( $wgExtensionMessagesFiles as $extension => $fileName ) {
                        $data = $this->readPHPFile( $fileName, 'extension' );
                        $used = false;
 
                        foreach ( $data as $key => $item ) {
+                               if ( $key === 'messages' && isset( $wgMessagesDirs[$extension] ) ) {
+                                       # For backwards compatibility, ignore messages from extensions in
+                                       # $wgExtensionMessagesFiles that are also present in $wgMessagesDirs.
+                                       # This allows extensions to use both and be backwards compatible.
+                                       # Variables other than $messages still need to be supported though.
+                                       continue;
+                               }
                                if ( $this->mergeExtensionItem( $codeSequence, $key, $allData[$key], $item ) ) {
                                        $used = true;
                                }
@@ -833,6 +889,7 @@ class LocalisationCache {
 
                # Add cache dependencies for any referenced globals
                $deps['wgExtensionMessagesFiles'] = new GlobalDependency( 'wgExtensionMessagesFiles' );
+               $deps['wgMessagesDirs'] = new GlobalDependency( 'wgMessagesDirs' );
                $deps['version'] = new ConstantDependency( 'MW_LC_VERSION' );
 
                # Add dependencies to the cache entry
@@ -866,7 +923,8 @@ class LocalisationCache {
                        $allData['list'][$key] = array_keys( $allData[$key] );
                }
                # Run hooks
-               wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData ) );
+               $purgeBlobs = true;
+               wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData, &$purgeBlobs ) );
 
                if ( is_null( $allData['namespaceNames'] ) ) {
                        wfProfileOut( __METHOD__ );
@@ -901,7 +959,7 @@ class LocalisationCache {
                # Clear out the MessageBlobStore
                # HACK: If using a null (i.e. disabled) storage backend, we
                # can't write to the MessageBlobStore either
-               if ( !$this->store instanceof LCStoreNull ) {
+               if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
                        MessageBlobStore::clear();
                }
 
@@ -1174,9 +1232,16 @@ class LCStoreDB implements LCStore {
  * See Cdb.php and http://cr.yp.to/cdb.html
  */
 class LCStoreCDB implements LCStore {
+       /** @var CdbReader[] */
        private $readers;
+
+       /** @var CdbWriter */
        private $writer;
+
+       /** @var string Current language code */
        private $currentLang;
+
+       /** @var bool|string Cache directory. False if not set */
        private $directory;
 
        function __construct( $conf = array() ) {
@@ -1197,7 +1262,7 @@ class LCStoreCDB implements LCStore {
                        if ( file_exists( $fileName ) ) {
                                try {
                                        $this->readers[$code] = CdbReader::open( $fileName );
-                               } catch( CdbException $e ) {
+                               } catch ( CdbException $e ) {
                                        wfDebug( __METHOD__ . ": unable to open cdb file for reading" );
                                }
                        }
diff --git a/includes/cache/MapCacheLRU.php b/includes/cache/MapCacheLRU.php
new file mode 100644 (file)
index 0000000..8349f88
--- /dev/null
@@ -0,0 +1,123 @@
+<?php
+/**
+ * Per-process memory cache for storing items.
+ *
+ * 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
+ */
+
+/**
+ * Handles a simple LRU key/value map with a maximum number of entries
+ *
+ * Use ProcessCacheLRU if hierarchical purging is needed or objects can become stale
+ *
+ * @see ProcessCacheLRU
+ * @ingroup Cache
+ * @since 1.23
+ */
+class MapCacheLRU {
+       /** @var Array */
+       protected $cache = array(); // (key => value)
+
+       protected $maxCacheKeys; // integer; max entries
+
+       /**
+        * @param $maxKeys integer Maximum number of entries allowed (min 1).
+        * @throws MWException When $maxCacheKeys is not an int or =< 0.
+        */
+       public function __construct( $maxKeys ) {
+               if ( !is_int( $maxKeys ) || $maxKeys < 1 ) {
+                       throw new MWException( __METHOD__ . " must be given an integer and >= 1" );
+               }
+               $this->maxCacheKeys = $maxKeys;
+       }
+
+       /**
+        * Set a key/value pair.
+        * 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
+        * @param $value mixed
+        * @return void
+        */
+       public function set( $key, $value ) {
+               if ( isset( $this->cache[$key] ) ) {
+                       $this->ping( $key ); // push to top
+               } elseif ( count( $this->cache ) >= $this->maxCacheKeys ) {
+                       reset( $this->cache );
+                       $evictKey = key( $this->cache );
+                       unset( $this->cache[$evictKey] );
+               }
+               $this->cache[$key] = $value;
+       }
+
+       /**
+        * Check if a key exists
+        *
+        * @param $key string
+        * @return bool
+        */
+       public function has( $key ) {
+               return isset( $this->cache[$key] );
+       }
+
+       /**
+        * Get the value for a key.
+        * This returns null if the key is not set.
+        * If the item is already set, it will be pushed to the top of the cache.
+        *
+        * @param $key string
+        * @return mixed
+        */
+       public function get( $key ) {
+               if ( isset( $this->cache[$key] ) ) {
+                       $this->ping( $key ); // push to top
+                       return $this->cache[$key];
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * Clear one or several cache entries, or all cache entries
+        *
+        * @param $keys string|Array
+        * @return void
+        */
+       public function clear( $keys = null ) {
+               if ( $keys === null ) {
+                       $this->cache = array();
+               } else {
+                       foreach ( (array)$keys as $key ) {
+                               unset( $this->cache[$key] );
+                       }
+               }
+       }
+
+       /**
+        * Push an entry to the top of the cache
+        *
+        * @param $key string
+        */
+       protected function ping( $key ) {
+               $item = $this->cache[$key];
+               unset( $this->cache[$key] );
+               $this->cache[$key] = $item;
+       }
+}
index 8b52728..3dee806 100644 (file)
@@ -124,7 +124,7 @@ class MessageCache {
        }
 
        /**
-        * @param ObjectCache $memCached A cache instance. If none, fall back to CACHE_NONE.
+        * @param BagOStuff $memCached A cache instance. If none, fall back to CACHE_NONE.
         * @param bool $useDB
         * @param int $expiry Lifetime for cache. @see $mExpiry.
         */
index 2e4c1e9..cea3bf2 100644 (file)
@@ -66,6 +66,7 @@ class UserCache {
         *
         * @param integer $userId
         * @param string $ip
+        * @return string
         * @since 1.22
         */
        public function getUserName( $userId, $ip ) {
index a9c3a67..107e2c4 100644 (file)
@@ -161,8 +161,9 @@ class ChangesList extends ContextSource {
                $this->lastdate = '';
                $this->rclistOpen = false;
                $this->getOutput()->addModuleStyles( 'mediawiki.special.changeslist' );
+               $this->getOutput()->addModules( 'mediawiki.special.changeslist.js' );
 
-               return '';
+               return '<div class="mw-changeslist">';
        }
 
        /**
@@ -246,11 +247,9 @@ class ChangesList extends ContextSource {
         * @return String
         */
        public function endRecentChangesList() {
-               if ( $this->rclistOpen ) {
-                       return "</ul>\n";
-               } else {
-                       return '';
-               }
+               $out = $this->rclistOpen ? "</ul>\n" : '';
+               $out .= '</div>';
+               return $out;
        }
 
        /**
index 1727da0..cc299a9 100644 (file)
  */
 
 class EnhancedChangesList extends ChangesList {
-
+       /** @var array Array of array of RCCacheEntry */
        protected $rc_cache;
 
        /**
         * Add the JavaScript file for enhanced changeslist
-        * @return String
+        * @return string
         */
        public function beginRecentChangesList() {
                $this->rc_cache = array();
@@ -41,16 +41,17 @@ class EnhancedChangesList extends ChangesList {
                $this->getOutput()->addModules( array(
                        'jquery.makeCollapsible',
                        'mediawiki.icon',
+                       'mediawiki.special.changeslist.js',
                ) );
 
-               return '';
+               return '<div class="mw-changeslist">';
        }
 
        /**
         * Format a line for enhanced recentchange (aka with javascript and block of lines).
         *
-        * @param $baseRC RecentChange
-        * @param $watched bool
+        * @param RecentChange $baseRC
+        * @param bool $watched
         *
         * @return string
         */
@@ -89,6 +90,7 @@ class EnhancedChangesList extends ChangesList {
 
                // Page moves, very old style, not supported anymore
                if ( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) {
+                       $clink = '';
                // New unpatrolled pages
                } elseif ( $cacheEntry->unpatrolled && $type == RC_NEW ) {
                        $clink = Linker::linkKnown( $cacheEntry->getTitle() );
@@ -208,6 +210,7 @@ class EnhancedChangesList extends ChangesList {
 
        /**
         * Enhanced RC group
+        * @param RCCacheEntry[] $block
         * @return string
         */
        protected function recentChangesBlockGroup( $block ) {
@@ -220,7 +223,7 @@ class EnhancedChangesList extends ChangesList {
                if ( $block[0]->mAttribs['rc_log_type'] ) {
                        # Log entry
                        $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
-                               . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
+                               . $block[0]->mAttribs['rc_log_type'] );
                } else {
                        $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
                                . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
@@ -241,6 +244,7 @@ class EnhancedChangesList extends ChangesList {
                # Some catalyst variables...
                $namehidden = true;
                $allLogs = true;
+               $oldid = '';
                foreach ( $block as $rcObj ) {
                        $oldid = $rcObj->mAttribs['rc_last_oldid'];
                        if ( $rcObj->mAttribs['rc_type'] == RC_NEW ) {
@@ -340,6 +344,7 @@ class EnhancedChangesList extends ChangesList {
 
                $sinceLast = 0;
                $unvisitedOldid = null;
+               /** @var $rcObj RCCacheEntry */
                foreach ( $block as $rcObj ) {
                        // Same logic as below inside main foreach
                        if ( $rcObj->watched && $rcObj->mAttribs['rc_timestamp'] >= $rcObj->watched ) {
@@ -355,6 +360,8 @@ class EnhancedChangesList extends ChangesList {
                # Total change link
                $r .= ' ';
                $logtext = '';
+               /** @var $block0 RecentChange */
+               $block0 = $block[0];
                if ( !$allLogs ) {
                        if ( !ChangesList::userCan( $rcObj, Revision::DELETED_TEXT, $this->getUser() ) ) {
                                $logtext .= $nchanges[$n];
@@ -362,7 +369,7 @@ class EnhancedChangesList extends ChangesList {
                                $logtext .= $nchanges[$n];
                        } else {
                                $logtext .= Linker::link(
-                                       $block[0]->getTitle(),
+                                       $block0->getTitle(),
                                        $nchanges[$n],
                                        array(),
                                        $queryParams + array(
@@ -373,7 +380,7 @@ class EnhancedChangesList extends ChangesList {
                                );
                                if ( $sinceLast > 0 && $sinceLast < $n ) {
                                        $logtext .= $this->message['pipe-separator'] . Linker::link(
-                                               $block[0]->getTitle(),
+                                               $block0->getTitle(),
                                                $sinceLastVisitMsg[$sinceLast],
                                                array(),
                                                $queryParams + array(
@@ -389,7 +396,7 @@ class EnhancedChangesList extends ChangesList {
                # History
                if ( $allLogs ) {
                        // don't show history link for logs
-               } elseif ( $namehidden || !$block[0]->getTitle()->exists() ) {
+               } elseif ( $namehidden || !$block0->getTitle()->exists() ) {
                        $logtext .= $this->message['pipe-separator'] . $this->message['enhancedrc-history'];
                } else {
                        $params = $queryParams;
@@ -397,7 +404,7 @@ class EnhancedChangesList extends ChangesList {
 
                        $logtext .= $this->message['pipe-separator'] .
                                Linker::linkKnown(
-                                       $block[0]->getTitle(),
+                                       $block0->getTitle(),
                                        $this->message['enhancedrc-history'],
                                        array(),
                                        $params
@@ -432,7 +439,7 @@ class EnhancedChangesList extends ChangesList {
                }
 
                $r .= $users;
-               $r .= $this->numberofWatchingusers( $block[0]->numberofWatchingusers );
+               $r .= $this->numberofWatchingusers( $block0->numberofWatchingusers );
                $r .= '</td></tr>';
 
                # Sub-entries
@@ -523,10 +530,10 @@ class EnhancedChangesList extends ChangesList {
 
        /**
         * Generate HTML for an arrow or placeholder graphic
-        * @param string $dir one of '', 'd', 'l', 'r'
-        * @param string $alt text
-        * @param string $title text
-        * @return String: HTML "<img>" tag
+        * @param string $dir One of '', 'd', 'l', 'r'
+        * @param string $alt
+        * @param string $title
+        * @return string HTML "<img>" tag
         */
        protected function arrow( $dir, $alt = '', $title = '' ) {
                global $wgStylePath;
@@ -540,7 +547,7 @@ class EnhancedChangesList extends ChangesList {
        /**
         * Generate HTML for a right- or left-facing arrow,
         * depending on language direction.
-        * @return String: HTML "<img>" tag
+        * @return string HTML "<img>" tag
         */
        protected function sideArrow() {
                $dir = $this->getLanguage()->isRTL() ? 'l' : 'r';
@@ -551,7 +558,7 @@ class EnhancedChangesList extends ChangesList {
        /**
         * Generate HTML for a down-facing arrow
         * depending on language direction.
-        * @return String: HTML "<img>" tag
+        * @return string HTML "<img>" tag
         */
        protected function downArrow() {
                return $this->arrow( 'd', '-', $this->msg( 'rc-enhanced-hide' )->text() );
@@ -559,7 +566,7 @@ class EnhancedChangesList extends ChangesList {
 
        /**
         * Generate HTML for a spacer image
-        * @return String: HTML "<img>" tag
+        * @return string HTML "<img>" tag
         */
        protected function spacerArrow() {
                return $this->arrow( '', codepointToUtf8( 0xa0 ) ); // non-breaking space
@@ -568,8 +575,8 @@ class EnhancedChangesList extends ChangesList {
        /**
         * Enhanced RC ungrouped line.
         *
-        * @param $rcObj RecentChange
-        * @return String: a HTML formatted line (generated using $r)
+        * @param RecentChange|RCCacheEntry $rcObj
+        * @return string A HTML formatted line (generated using $r)
         */
        protected function recentChangesBlockLine( $rcObj ) {
                global $wgRCShowChangedSize;
@@ -582,8 +589,7 @@ class EnhancedChangesList extends ChangesList {
                $classes = array( 'mw-enhanced-rc' );
                if ( $logType ) {
                        # Log entry
-                       $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
-                               . $logType . '-' . $rcObj->mAttribs['rc_title'] );
+                       $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType );
                } else {
                        $classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
                                $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
@@ -689,6 +695,6 @@ class EnhancedChangesList extends ChangesList {
         * @return string
         */
        public function endRecentChangesList() {
-               return $this->recentChangesBlock() . parent::endRecentChangesList();
+               return $this->recentChangesBlock() . '</div>';
        }
 }
index 0ef71c4..f1f2578 100644 (file)
@@ -84,7 +84,7 @@ class RecentChange {
         */
        private $mPerformer = false;
 
-       public $numberofWatchingusers = 0; # Dummy to prevent error message in SpecialRecentchangeslinked
+       public $numberofWatchingusers = 0; # Dummy to prevent error message in SpecialRecentChangesLinked
        public $notificationtimestamp;
 
        /**
index 537deac..8a6718f 100644 (file)
@@ -210,7 +210,7 @@ class RedisConnectionPool {
                        }
                } catch ( RedisException $e ) {
                        $this->downServers[$server] = time() + self::SERVER_DOWN_TTL;
-                       wfDebugLog( 'redis', "Redis exception: " . $e->getMessage() . "\n" );
+                       wfDebugLog( 'redis', "Redis exception connecting to $server: " . $e->getMessage() . "\n" );
 
                        return false;
                }
index d03d61e..068b150 100644 (file)
@@ -38,7 +38,7 @@ class TextContent extends AbstractContent {
 
                if ( $text === null || $text === false ) {
                        wfWarn( "TextContent constructed with \$text = " . var_export( $text, true ) . "! "
-                               . "This may indicate an error in the caller's scope." );
+                               . "This may indicate an error in the caller's scope.", 2 );
 
                        $text = '';
                }
@@ -151,7 +151,7 @@ class TextContent extends AbstractContent {
                $text = $this->getNativeData();
                $pst = rtrim( $text );
 
-               return ( $text === $pst ) ? $this : new WikitextContent( $pst );
+               return ( $text === $pst ) ? $this : new static( $pst );
        }
 
        /**
index c4584ae..94b5c57 100644 (file)
  * @ingroup Content
  */
 class TextContentHandler extends ContentHandler {
+       // @codingStandardsIgnoreStart bug 57585
        public function __construct( $modelId = CONTENT_MODEL_TEXT,
                $formats = array( CONTENT_FORMAT_TEXT )
        ) {
                parent::__construct( $modelId, $formats );
        }
+       // @codingStandardsIgnoreEnd
 
        /**
         * Returns the content's text as-is.
index 1f96bdc..a92699b 100644 (file)
@@ -152,29 +152,27 @@ class WikitextContent extends TextContent {
        }
 
        /**
-        * Implement redirect extraction for wikitext.
-        *
-        * @return null|Title
+        * Extract the redirect target and the remaining text on the page.
         *
         * @note: migrated here from Title::newFromRedirectInternal()
         *
-        * @see Content::getRedirectTarget
-        * @see AbstractContent::getRedirectTarget
+        * @since 1.23
+        * @return array 2 elements: Title|null and string
         */
-       public function getRedirectTarget() {
+       protected function getRedirectTargetAndText() {
                global $wgMaxRedirects;
                if ( $wgMaxRedirects < 1 ) {
                        // redirects are disabled, so quit early
-                       return null;
+                       return array( null, $this->getNativeData() );
                }
                $redir = MagicWord::get( 'redirect' );
-               $text = trim( $this->getNativeData() );
+               $text = ltrim( $this->getNativeData() );
                if ( $redir->matchStartAndRemove( $text ) ) {
                        // Extract the first link and see if it's usable
                        // Ensure that it really does come directly after #REDIRECT
                        // Some older redirects included a colon, so don't freak about that!
                        $m = array();
-                       if ( preg_match( '!^\s*:?\s*\[{2}(.*?)(?:\|.*?)?\]{2}!', $text, $m ) ) {
+                       if ( preg_match( '!^\s*:?\s*\[{2}(.*?)(?:\|.*?)?\]{2}\s*!', $text, $m ) ) {
                                // Strip preceding colon used to "escape" categories, etc.
                                // and URL-decode links
                                if ( strpos( $m[1], '%' ) !== false ) {
@@ -184,14 +182,27 @@ class WikitextContent extends TextContent {
                                $title = Title::newFromText( $m[1] );
                                // If the title is a redirect to bad special pages or is invalid, return null
                                if ( !$title instanceof Title || !$title->isValidRedirectTarget() ) {
-                                       return null;
+                                       return array( null, $this->getNativeData() );
                                }
 
-                               return $title;
+                               return array( $title, substr( $text, strlen( $m[0] ) ) );
                        }
                }
 
-               return null;
+               return array( null, $this->getNativeData() );
+       }
+
+       /**
+        * Implement redirect extraction for wikitext.
+        *
+        * @return null|Title
+        *
+        * @see Content::getRedirectTarget
+        * @see AbstractContent::getRedirectTarget
+        */
+       public function getRedirectTarget() {
+               list( $title, ) = $this->getRedirectTargetAndText();
+               return $title;
        }
 
        /**
@@ -303,7 +314,21 @@ class WikitextContent extends TextContent {
                        $options = $this->getContentHandler()->makeParserOptions( 'canonical' );
                }
 
-               $po = $wgParser->parse( $this->getNativeData(), $title, $options, true, true, $revId );
+               list( $redir, $text ) = $this->getRedirectTargetAndText();
+               $po = $wgParser->parse( $text, $title, $options, true, true, $revId );
+
+               // Add redirect indicator at the top
+               if ( $redir ) {
+                       // Make sure to include the redirect link in pagelinks
+                       $po->addLink( $redir );
+                       if ( $generateHtml ) {
+                               $chain = $this->getRedirectChain();
+                               $po->setText(
+                                       Article::getRedirectHeaderHtml( $title->getPageLanguage(), $chain, false ) .
+                                       $po->getText()
+                               );
+                       }
+               }
 
                return $po;
        }
index 0a3f18f..186b8e6 100644 (file)
@@ -59,6 +59,16 @@ abstract class ContextSource implements IContextSource {
                $this->context = $context;
        }
 
+       /**
+        * Get the SiteConfiguration object
+        *
+        * @since 1.23
+        * @return SiteConfiguration
+        */
+       public function getConfig() {
+               return $this->getContext()->getConfig();
+       }
+
        /**
         * Get the WebRequest object
         *
index e96269d..2137757 100644 (file)
@@ -65,6 +65,11 @@ class DerivativeContext extends ContextSource {
         */
        private $skin;
 
+       /**
+        * @var SiteConfiguration
+        */
+       private $config;
+
        /**
         * Constructor
         * @param IContextSource $context Context to inherit from
@@ -73,6 +78,28 @@ class DerivativeContext extends ContextSource {
                $this->setContext( $context );
        }
 
+       /**
+        * Set the SiteConfiguration object
+        *
+        * @param SiteConfiguration $s
+        */
+       public function setConfig( SiteConfiguration $s ) {
+               $this->config = $s;
+       }
+
+       /**
+        * Get the SiteConfiguration object
+        *
+        * @return SiteConfiguration
+        */
+       public function getConfig() {
+               if ( !is_null( $this->config ) ) {
+                       return $this->config;
+               } else {
+                       return $this->getContext()->getConfig();
+               }
+       }
+
        /**
         * Set the WebRequest object
         *
index 35d5aed..6c5c0a2 100644 (file)
@@ -99,6 +99,14 @@ interface IContextSource {
         */
        public function getSkin();
 
+       /**
+        * Get the site configuration
+        *
+        * @since 1.23
+        * @return SiteConfiguration
+        */
+       public function getConfig();
+
        /**
         * Get a Message object with context set
         *
index 04879e2..5f91731 100644 (file)
@@ -63,6 +63,33 @@ class RequestContext implements IContextSource {
         */
        private $skin;
 
+       /**
+        * @var SiteConfiguration
+        */
+       private $config;
+
+       /**
+        * Set the SiteConfiguration object
+        *
+        * @param SiteConfiguration $c
+        */
+       public function setConfig( SiteConfiguration $c ) {
+               $this->config = $c;
+       }
+
+       /**
+        * Get the SiteConfiguration object
+        *
+        * @return SiteConfiguration
+        */
+       public function getConfig() {
+               if ( $this->config === null ) {
+                       global $wgConf;
+                       $this->config = $wgConf;
+               }
+               return $this->config;
+       }
+
        /**
         * Set the WebRequest object
         *
index a9f7b7f..2a0fde3 100644 (file)
@@ -2,7 +2,7 @@
 
 /**
  * Base class for objects that allow access to other wiki's databases using
- * the foreign database access mechanism implemented by LBFactory_multi.
+ * the foreign database access mechanism implemented by LBFactoryMulti.
  *
  * 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
index 3d1f453..0c7b612 100644 (file)
  * Kind of like Hawking's [[Chronology Protection Agency]].
  */
 class ChronologyProtector {
-       /** @var Array (DB master name => position) */
+       /** @var array (DB master name => position) */
        protected $startupPositions = array();
-       /** @var Array (DB master name => position) */
+
+       /** @var array (DB master name => position) */
        protected $shutdownPositions = array();
 
-       protected $initialized = false; // bool; whether the session data was loaded
+       /** @var bool Whether the session data was loaded */
+       protected $initialized = false;
 
        /**
         * Initialise a LoadBalancer to give it appropriate chronology protection.
@@ -41,7 +43,7 @@ class ChronologyProtector {
         * to that position by delaying execution. The delay may timeout and allow stale
         * data if no non-lagged slaves are available.
         *
-        * @param $lb LoadBalancer
+        * @param LoadBalancer $lb
         * @return void
         */
        public function initLB( LoadBalancer $lb ) {
@@ -67,7 +69,7 @@ class ChronologyProtector {
         * Notify the ChronologyProtector that the LoadBalancer is about to shut
         * down. Saves replication positions.
         *
-        * @param $lb LoadBalancer
+        * @param LoadBalancer $lb
         * @return void
         */
        public function shutdownLB( LoadBalancer $lb ) {
index 1e01d29..c5dc882 100644 (file)
  */
 
 class CloneDatabase {
-       /**
-        * Table prefix for cloning
-        * @var String
-        */
+       /** @var string Table prefix for cloning */
        private $newTablePrefix = '';
 
-       /**
-        * Current table prefix
-        * @var String
-        */
+       /** @var string Current table prefix */
        private $oldTablePrefix = '';
 
-       /**
-        * List of tables to be cloned
-        * @var Array
-        */
+       /** @var array List of tables to be cloned */
        private $tablesToClone = array();
 
-       /**
-        * Should we DROP tables containing the new names?
-        * @var Bool
-        */
+       /** @var bool Should we DROP tables containing the new names? */
        private $dropCurrentTables = true;
 
-       /**
-        * Whether to use temporary tables or not
-        * @var Bool
-        */
+       /** @var bool Whether to use temporary tables or not */
        private $useTemporaryTables = true;
 
        /**
         * Constructor
         *
-        * @param $db DatabaseBase A database subclass
+        * @param DatabaseBase $db A database subclass
         * @param array $tablesToClone An array of tables to clone, unprefixed
         * @param string $newTablePrefix Prefix to assign to the tables
         * @param string $oldTablePrefix Prefix on current tables, if not $wgDBprefix
-        * @param $dropCurrentTables bool
+        * @param bool $dropCurrentTables
         */
        public function __construct( DatabaseBase $db, array $tablesToClone,
                $newTablePrefix, $oldTablePrefix = '', $dropCurrentTables = true
@@ -128,7 +113,7 @@ class CloneDatabase {
        /**
         * Change the table prefix on all open DB connections/
         *
-        * @param $prefix
+        * @param string $prefix
         * @return void
         */
        public static function changePrefix( $prefix ) {
@@ -138,8 +123,8 @@ class CloneDatabase {
        }
 
        /**
-        * @param $lb LoadBalancer
-        * @param $prefix
+        * @param LoadBalancer $lb
+        * @param string $prefix
         * @return void
         */
        public static function changeLBPrefix( $lb, $prefix ) {
@@ -147,8 +132,8 @@ class CloneDatabase {
        }
 
        /**
-        * @param $db DatabaseBase
-        * @param $prefix
+        * @param DatabaseBase $db
+        * @param string $prefix
         * @return void
         */
        public static function changeDBPrefix( $db, $prefix ) {
index f70934b..90e658f 100644 (file)
@@ -57,18 +57,18 @@ interface DatabaseType {
         * member variables.
         * If no more rows are available, false is returned.
         *
-        * @param $res ResultWrapper|object as returned from DatabaseBase::query(), etc.
-        * @return object|bool
+        * @param ResultWrapper|stdClass $res Object as returned from DatabaseBase::query(), etc.
+        * @return stdClass|bool
         * @throws DBUnexpectedError Thrown if the database returns an error
         */
        function fetchObject( $res );
 
        /**
         * Fetch the next row from the given result object, in associative array
-        * form.  Fields are retrieved with $row['fieldname'].
+        * form. Fields are retrieved with $row['fieldname'].
         * If no more rows are available, false is returned.
         *
-        * @param $res ResultWrapper result object as returned from DatabaseBase::query(), etc.
+        * @param ResultWrapper $res Result object as returned from DatabaseBase::query(), etc.
         * @return array|bool
         * @throws DBUnexpectedError Thrown if the database returns an error
         */
@@ -77,7 +77,7 @@ interface DatabaseType {
        /**
         * Get the number of rows in a result object
         *
-        * @param $res Mixed: A SQL result
+        * @param mixed $res A SQL result
         * @return int
         */
        function numRows( $res );
@@ -86,7 +86,7 @@ interface DatabaseType {
         * Get the number of fields in a result object
         * @see http://www.php.net/mysql_num_fields
         *
-        * @param $res Mixed: A SQL result
+        * @param mixed $res A SQL result
         * @return int
         */
        function numFields( $res );
@@ -95,8 +95,8 @@ interface DatabaseType {
         * Get a field name in a result object
         * @see http://www.php.net/mysql_field_name
         *
-        * @param $res Mixed: A SQL result
-        * @param $n Integer
+        * @param mixed $res A SQL result
+        * @param int $n
         * @return string
         */
        function fieldName( $res, $n );
@@ -119,8 +119,8 @@ interface DatabaseType {
         * Change the position of the cursor in a result object
         * @see http://www.php.net/mysql_data_seek
         *
-        * @param $res Mixed: A SQL result
-        * @param $row Mixed: Either MySQL row or ResultWrapper
+        * @param mixed $res A SQL result
+        * @param int $row
         */
        function dataSeek( $res, $row );
 
@@ -144,8 +144,8 @@ interface DatabaseType {
         * mysql_fetch_field() wrapper
         * Returns false if the field doesn't exist
         *
-        * @param string $table table name
-        * @param string $field field name
+        * @param string $table Table name
+        * @param string $field Field name
         *
         * @return Field
         */
@@ -156,7 +156,7 @@ interface DatabaseType {
         * @param string $table Table name
         * @param string $index Index name
         * @param string $fname Calling function name
-        * @return Mixed: Database-specific index description class or false if the index does not exist
+        * @return mixed Database-specific index description class or false if the index does not exist
         */
        function indexInfo( $table, $index, $fname = __METHOD__ );
 
@@ -171,18 +171,18 @@ interface DatabaseType {
        /**
         * Wrapper for addslashes()
         *
-        * @param string $s to be slashed.
-        * @return string: slashed string.
+        * @param string $s String to be slashed.
+        * @return string Slashed string.
         */
        function strencode( $s );
 
        /**
         * Returns a wikitext link to the DB's website, e.g.,
-        *     return "[http://www.mysql.com/ MySQL]";
+        *   return "[http://www.mysql.com/ MySQL]";
         * Should at least contain plain text, if for some reason
         * your database has no website.
         *
-        * @return string: wikitext of a link to the server software's web site
+        * @return string Wikitext of a link to the server software's web site
         */
        function getSoftwareLink();
 
@@ -190,16 +190,16 @@ interface DatabaseType {
         * A string describing the current software version, like from
         * mysql_get_server_info().
         *
-        * @return string: Version information from the database server.
+        * @return string Version information from the database server.
         */
        function getServerVersion();
 
        /**
         * A string describing the current software version, and possibly
-        * other details in a user-friendly way.  Will be listed on Special:Version, etc.
+        * other details in a user-friendly way. Will be listed on Special:Version, etc.
         * Use getServerVersion() to get machine-friendly information.
         *
-        * @return string: Version information from the database server
+        * @return string Version information from the database server
         */
        function getServerInfo();
 }
@@ -218,8 +218,10 @@ interface IDatabase {
 abstract class DatabaseBase implements IDatabase, DatabaseType {
        /** Number of times to re-try an operation in case of deadlock */
        const DEADLOCK_TRIES = 4;
+
        /** Minimum time to wait before retry, in microseconds */
        const DEADLOCK_DELAY_MIN = 500000;
+
        /** Maximum time to wait before retry */
        const DEADLOCK_DELAY_MAX = 1500000;
 
@@ -233,6 +235,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        protected $mServer, $mUser, $mPassword, $mDBname;
 
+       /** @var resource Database connection */
        protected $mConn = null;
        protected $mOpened = false;
 
@@ -246,7 +249,6 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        protected $mForeign;
        protected $mErrorCount = 0;
        protected $mLBInfo = array();
-       protected $mFakeSlaveLag = null, $mFakeMaster = false;
        protected $mDefaultBigSelects = null;
        protected $mSchemaVars = false;
 
@@ -268,7 +270,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Remembers the function name given for starting the most recent transaction via begin().
         * Used to provide additional context for error reporting.
         *
-        * @var String
+        * @var string
         * @see DatabaseBase::mTrxLevel
         */
        private $mTrxFname = null;
@@ -276,7 +278,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Record if possible write queries were done in the last transaction started
         *
-        * @var Bool
+        * @var bool
         * @see DatabaseBase::mTrxLevel
         */
        private $mTrxDoneWrites = false;
@@ -284,7 +286,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Record if the current transaction was started implicitly due to DBO_TRX being set.
         *
-        * @var Bool
+        * @var bool
         * @see DatabaseBase::mTrxLevel
         */
        private $mTrxAutomatic = false;
@@ -299,19 +301,19 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Record if the current transaction was started implicitly by DatabaseBase::startAtomic
         *
-        * @var Bool
+        * @var bool
         */
        private $mTrxAutomaticAtomic = false;
 
        /**
         * @since 1.21
-        * @var file handle for upgrade
+        * @var resource File handle for upgrade
         */
        protected $fileHandle = null;
 
        /**
         * @since 1.22
-        * @var Process cache of VIEWs names in the database
+        * @var string[] Process cache of VIEWs names in the database
         */
        protected $allViews = null;
 
@@ -322,17 +324,17 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * A string describing the current software version, and possibly
-        * other details in a user-friendly way.  Will be listed on Special:Version, etc.
+        * other details in a user-friendly way. Will be listed on Special:Version, etc.
         * Use getServerVersion() to get machine-friendly information.
         *
-        * @return string: Version information from the database server
+        * @return string Version information from the database server
         */
        public function getServerInfo() {
                return $this->getServerVersion();
        }
 
        /**
-        * @return string: command delimiter used by this database engine
+        * @return string command delimiter used by this database engine
         */
        public function getDelimiter() {
                return $this->delimiter;
@@ -340,7 +342,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * Boolean, controls output of large amounts of debug information.
-        * @param $debug bool|null
+        * @param bool|null $debug
         *   - true to enable debugging
         *   - false to disable debugging
         *   - omitted or null to do nothing
@@ -369,8 +371,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * split up queries into batches using a LIMIT clause than to switch off
         * buffering.
         *
-        * @param $buffer null|bool
-        *
+        * @param null|bool $buffer
         * @return null|bool The previous value of the flag
         */
        public function bufferResults( $buffer = null ) {
@@ -390,8 +391,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * Do not use this function outside of the Database classes.
         *
-        * @param $ignoreErrors bool|null
-        *
+        * @param null|bool $ignoreErrors
         * @return bool The previous value of the flag.
         */
        public function ignoreErrors( $ignoreErrors = null ) {
@@ -431,7 +431,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Set the filehandle to copy write statements to.
         *
-        * @param $fh filehandle
+        * @param resource $fh File handle
         */
        public function setFileHandle( $fh ) {
                $this->fileHandle = $fh;
@@ -444,7 +444,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string $name The entry of the info array to get, or null to get the
         *   whole array
         *
-        * @return LoadBalancer|null
+        * @return array|mixed|null
         */
        public function getLBInfo( $name = null ) {
                if ( is_null( $name ) ) {
@@ -463,7 +463,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * the LB info array is set to that parameter. If it is called with two
         * parameters, the member with the given name is set to the given value.
         *
-        * @param $name
+        * @param string $name
         * @param $value
         */
        public function setLBInfo( $name, $value = null ) {
@@ -477,19 +477,19 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Set lag time in seconds for a fake slave
         *
-        * @param $lag int
+        * @param mixed $lag Valid values for this parameter are determined by the
+        *   subclass, but should be a PHP scalar or array that would be sensible
+        *   as part of $wgLBFactoryConf.
         */
        public function setFakeSlaveLag( $lag ) {
-               $this->mFakeSlaveLag = $lag;
        }
 
        /**
         * Make this connection a fake master
         *
-        * @param $enabled bool
+        * @param bool $enabled
         */
        public function setFakeMaster( $enabled = true ) {
-               $this->mFakeMaster = $enabled;
        }
 
        /**
@@ -569,7 +569,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * Return the last query that went through DatabaseBase::query()
-        * @return String
+        * @return string
         */
        public function lastQuery() {
                return $this->mLastQuery;
@@ -599,7 +599,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * Is a connection to the database open?
-        * @return Boolean
+        * @return bool
         */
        public function isOpen() {
                return $this->mOpened;
@@ -608,7 +608,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Set a flag for this connection
         *
-        * @param $flag Integer: DBO_* constants from Defines.php:
+        * @param int $flag DBO_* constants from Defines.php:
         *   - DBO_DEBUG: output some debug info (same as debug())
         *   - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
         *   - DBO_TRX: automatically start transactions
@@ -620,14 +620,20 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                global $wgDebugDBTransactions;
                $this->mFlags |= $flag;
                if ( ( $flag & DBO_TRX ) & $wgDebugDBTransactions ) {
-                       wfDebug( "Implicit transactions are now  disabled.\n" );
+                       wfDebug( "Implicit transactions are now disabled.\n" );
                }
        }
 
        /**
         * Clear a flag for this connection
         *
-        * @param $flag : same as setFlag()'s $flag param
+        * @param int $flag DBO_* constants from Defines.php:
+        *   - DBO_DEBUG: output some debug info (same as debug())
+        *   - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
+        *   - DBO_TRX: automatically start transactions
+        *   - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
+        *       and removes it in command line mode
+        *   - DBO_PERSISTENT: use persistant database connection
         */
        public function clearFlag( $flag ) {
                global $wgDebugDBTransactions;
@@ -640,8 +646,14 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Returns a boolean whether the flag $flag is set for this connection
         *
-        * @param $flag : same as setFlag()'s $flag param
-        * @return Boolean
+        * @param int $flag DBO_* constants from Defines.php:
+        *   - DBO_DEBUG: output some debug info (same as debug())
+        *   - DBO_NOBUFFER: don't buffer results (inverse of bufferResults())
+        *   - DBO_TRX: automatically start transactions
+        *   - DBO_DEFAULT: automatically sets DBO_TRX if not in command line mode
+        *       and removes it in command line mode
+        *   - DBO_PERSISTENT: use persistant database connection
+        * @return bool
         */
        public function getFlag( $flag ) {
                return !!( $this->mFlags & $flag );
@@ -650,8 +662,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * General read-only accessor
         *
-        * @param $name string
-        *
+        * @param string $name
         * @return string
         */
        public function getProperty( $name ) {
@@ -697,7 +708,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * DatabaseBase subclasses should not be constructed directly in external
         * code. DatabaseBase::factory() should be used instead.
         *
-        * @param array Parameters passed from DatabaseBase::factory()
+        * @param array $params Parameters passed from DatabaseBase::factory()
         */
        function __construct( $params = null ) {
                global $wgDBprefix, $wgCommandLineMode, $wgDebugDBTransactions;
@@ -782,7 +793,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string $dbType A possible DB type
         * @param array $p An array of options to pass to the constructor.
         *    Valid options are: host, user, password, dbname, flags, tablePrefix, driver
-        * @return DatabaseBase subclass or null
+        * @throws MWException If the database driver or extension cannot be found
+        * @return DatabaseBase|null DatabaseBase subclass or null
         */
        final public static function factory( $dbType, $p = array() ) {
                $canonicalDBTypes = array(
@@ -864,8 +876,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * @param $errno
-        * @param $errstr
-        * @access private
+        * @param string $errstr
         */
        public function connectionErrorHandler( $errno, $errstr ) {
                $this->mPHPError = $errstr;
@@ -876,7 +887,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * if it is open : commits any open transactions
         *
         * @throws MWException
-        * @return Bool operation success. true if already closed.
+        * @return bool Operation success. true if already closed.
         */
        public function close() {
                if ( count( $this->mTrxIdleCallbacks ) ) { // sanity
@@ -905,12 +916,12 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Closes underlying database connection
         * @since 1.20
-        * @return bool: Whether connection was closed successfully
+        * @return bool Whether connection was closed successfully
         */
        abstract protected function closeConnection();
 
        /**
-        * @param string $error fallback error message, used if none is given by DB
+        * @param string $error Fallback error message, used if none is given by DB
         * @throws DBConnectionError
         */
        function reportConnectionError( $error = 'Unknown error' ) {
@@ -926,8 +937,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * The DBMS-dependent part of query()
         *
-        * @param  $sql String: SQL query.
-        * @return ResultWrapper Result object to feed to fetchObject, fetchRow, ...; or false on failure
+        * @param string $sql SQL query.
+        * @return ResultWrapper|bool Result object to feed to fetchObject,
+        *   fetchRow, ...; or false on failure
         */
        abstract protected function doQuery( $sql );
 
@@ -935,8 +947,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Determine whether a query writes to the DB.
         * Should return true if unsure.
         *
-        * @param $sql string
-        *
+        * @param string $sql
         * @return bool
         */
        public function isWriteQuery( $sql ) {
@@ -956,13 +967,13 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * However, the query wrappers themselves should call this function.
         *
-        * @param  $sql        String: SQL query
-        * @param  $fname      String: Name of the calling function, for profiling/SHOW PROCESSLIST
+        * @param string $sql SQL query
+        * @param string $fname Name of the calling function, for profiling/SHOW PROCESSLIST
         *     comment (you can use __METHOD__ or add some extra info)
-        * @param  $tempIgnore Boolean:   Whether to avoid throwing an exception on errors...
+        * @param bool $tempIgnore Whether to avoid throwing an exception on errors...
         *     maybe best to catch the exception instead?
         * @throws MWException
-        * @return boolean|ResultWrapper. true for a successful write query, ResultWrapper object
+        * @return bool|ResultWrapper True for a successful write query, ResultWrapper object
         *     for a successful read query, or false on failure if $tempIgnore set
         */
        public function query( $sql, $fname = __METHOD__, $tempIgnore = false ) {
@@ -1013,7 +1024,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        Profiler::instance()->transactionWritingIn( $this->mServer, $this->mDBname );
                }
 
+               $queryProf = '';
+               $totalProf = '';
                $isMaster = !is_null( $this->getLBInfo( 'master' ) );
+
                if ( !Profiler::instance()->isStub() ) {
                        # generalizeSQL will probably cut down the query to reasonable
                        # logging size most of the time. The substr is really just a sanity check.
@@ -1089,11 +1103,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Report a query error. Log the error, and if neither the object ignore
         * flag nor the $tempIgnore flag is set, throw a DBQueryError.
         *
-        * @param $error String
-        * @param $errno Integer
-        * @param $sql String
-        * @param $fname String
-        * @param $tempIgnore Boolean
+        * @param string $error
+        * @param int $errno
+        * @param string $sql
+        * @param string $fname
+        * @param bool $tempIgnore
         * @throws DBQueryError
         */
        public function reportQueryError( $error, $errno, $sql, $fname, $tempIgnore = false ) {
@@ -1105,7 +1119,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                        wfDebug( "SQL ERROR (ignored): $error\n" );
                        $this->ignoreErrors( $ignore );
                } else {
-                       $sql1line = mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5*1024 );
+                       $sql1line = mb_substr( str_replace( "\n", "\\n", $sql ), 0, 5 * 1024 );
                        wfLogDBError( "$fname\t{$this->mServer}\t$errno\t$error\t$sql1line\n" );
                        wfDebug( "SQL ERROR: " . $error . "\n" );
                        throw new DBQueryError( $this, $error, $errno, $sql, $fname );
@@ -1121,21 +1135,22 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * & = filename; reads the file and inserts as a blob
         *     (we don't use this though...)
         *
-        * @param $sql string
-        * @param $func string
+        * @param string $sql
+        * @param string $func
         *
         * @return array
         */
        protected function prepare( $sql, $func = 'DatabaseBase::prepare' ) {
                /* MySQL doesn't support prepared statements (yet), so just
-                  pack up the query for reference. We'll manually replace
-                  the bits later. */
+                * pack up the query for reference. We'll manually replace
+                * the bits later.
+                */
                return array( 'query' => $sql, 'func' => $func );
        }
 
        /**
         * Free a prepared query, generated by prepare().
-        * @param $prepared
+        * @param string $prepared
         */
        protected function freePrepared( $prepared ) {
                /* No-op by default */
@@ -1144,7 +1159,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Execute a prepared query with the various arguments
         * @param string $prepared the prepared sql
-        * @param $args Mixed: Either an array here, or put scalars as varargs
+        * @param mixed $args Either an array here, or put scalars as varargs
         *
         * @return ResultWrapper
         */
@@ -1163,9 +1178,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * For faking prepared SQL statements on DBs that don't support it directly.
         *
-        * @param string $preparedQuery a 'preparable' SQL statement
-        * @param array $args of arguments to fill it with
-        * @return string executable SQL
+        * @param string $preparedQuery A 'preparable' SQL statement
+        * @param array $args of Arguments to fill it with
+        * @return string Executable SQL
         */
        public function fillPrepared( $preparedQuery, $args ) {
                reset( $args );
@@ -1180,9 +1195,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * The arguments should be in $this->preparedArgs and must not be touched
         * while we're doing this.
         *
-        * @param $matches Array
+        * @param array $matches
         * @throws DBUnexpectedError
-        * @return String
+        * @return string
         */
        protected function fillPreparedArg( $matches ) {
                switch ( $matches[1] ) {
@@ -1220,7 +1235,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * necessary to call this, just use unset() or let the variable holding
         * the result object go out of scope.
         *
-        * @param $res Mixed: A SQL result
+        * @param mixed $res A SQL result
         */
        public function freeResult( $res ) {
        }
@@ -1270,9 +1285,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Returns an optional USE INDEX clause to go after the table, and a
         * string to go at the end of the query.
         *
-        * @param array $options associative array of options to be turned into
-        *              an SQL query, valid keys are listed in the function.
-        * @return Array
+        * @param array $options Associative array of options to be turned into
+        *   an SQL query, valid keys are listed in the function.
+        * @return array
         * @see DatabaseBase::select()
         */
        public function makeSelectOptions( $options ) {
@@ -1354,7 +1369,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Returns an optional GROUP BY with an optional HAVING
         *
-        * @param array $options associative array of options
+        * @param array $options Associative array of options
         * @return string
         * @see DatabaseBase::select()
         * @since 1.21
@@ -1380,7 +1395,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Returns an optional ORDER BY
         *
-        * @param array $options associative array of options
+        * @param array $options Associative array of options
         * @return string
         * @see DatabaseBase::select()
         * @since 1.21
@@ -1406,9 +1421,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string|array $conds Conditions
         * @param string $fname Caller function name
         * @param array $options Query options
-        * @param $join_conds Array Join conditions
+        * @param array $join_conds Join conditions
         *
-        * @param $table string|array
+        * @param string|array $table
         *
         * May be either an array of table names, or a single string holding a table
         * name. If an array is given, table aliases can be specified, for example:
@@ -1423,7 +1438,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * added, and various other table name mappings to be performed.
         *
         *
-        * @param $vars string|array
+        * @param string|array $vars
         *
         * May be either a field name or an array of field names. The field names
         * can be complete fragments of SQL, for direct inclusion into the SELECT
@@ -1437,7 +1452,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * DBMS-independent.
         *
         *
-        * @param $conds string|array
+        * @param string|array $conds
         *
         * May be either a string containing a single condition, or an array of
         * conditions. If an array is given, the conditions constructed from each
@@ -1462,7 +1477,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *    - DatabaseBase::conditional()
         *
         *
-        * @param $options string|array
+        * @param string|array $options
         *
         * Optional: Array of query options. Boolean options are specified by
         * including them in the array as a string value with a numeric key, for
@@ -1518,7 +1533,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *    - SQL_NO_CACHE
         *
         *
-        * @param $join_conds string|array
+        * @param string|array $join_conds
         *
         * Optional associative array of table-specific join conditions. In the
         * most common case, this is unnecessary, since the join condition can be
@@ -1531,7 +1546,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         *    array( 'page' => array( 'LEFT JOIN', 'page_latest=rev_id' ) )
         *
-        * @return ResultWrapper. If the query returned no rows, a ResultWrapper
+        * @return ResultWrapper|bool If the query returned no rows, a ResultWrapper
         *   with no rows in it will be returned. If there was a query error, a
         *   DBQueryError exception will be thrown, except if the "ignore errors"
         *   option was set, in which case false will be returned.
@@ -1554,7 +1569,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string|array $conds Conditions
         * @param string $fname Caller function name
         * @param string|array $options Query options
-        * @param $join_conds string|array Join conditions
+        * @param string|array $join_conds Join conditions
         *
         * @return string SQL query string.
         * @see DatabaseBase::select()
@@ -1620,9 +1635,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param array $conds Conditions
         * @param string $fname Caller function name
         * @param string|array $options Query options
-        * @param $join_conds array|string Join conditions
+        * @param array|string $join_conds Join conditions
         *
-        * @return object|bool
+        * @return stdClass|bool
         */
        public function selectRow( $table, $vars, $conds, $fname = __METHOD__,
                $options = array(), $join_conds = array()
@@ -1657,12 +1672,12 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * Takes the same arguments as DatabaseBase::select().
         *
-        * @param string $table table name
-        * @param array|string $vars : unused
-        * @param array|string $conds : filters on the table
-        * @param string $fname function name for profiling
-        * @param array $options options for select
-        * @return Integer: row count
+        * @param string $table Table name
+        * @param string $vars Unused
+        * @param array|string $conds Filters on the table
+        * @param string $fname Function name for profiling
+        * @param array $options Options for select
+        * @return int Row count
         */
        public function estimateRowCount( $table, $vars = '*', $conds = '',
                $fname = __METHOD__, $options = array()
@@ -1710,10 +1725,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Determines whether a field exists in a table
         *
-        * @param string $table table name
-        * @param string $field filed to check on that table
-        * @param string $fname calling function name (optional)
-        * @return Boolean: whether $table has filed $field
+        * @param string $table Table name
+        * @param string $field Filed to check on that table
+        * @param string $fname Calling function name (optional)
+        * @return bool Whether $table has filed $field
         */
        public function fieldExists( $table, $field, $fname = __METHOD__ ) {
                $info = $this->fieldInfo( $table, $field );
@@ -1726,10 +1741,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Usually throws a DBQueryError on failure
         * If errors are explicitly ignored, returns NULL on failure
         *
-        * @param $table
-        * @param $index
-        * @param $fname string
-        *
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return bool|null
         */
        public function indexExists( $table, $index, $fname = __METHOD__ ) {
@@ -1748,9 +1762,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Query whether a given table exists
         *
-        * @param $table string
-        * @param $fname string
-        *
+        * @param string $table
+        * @param string $fname
         * @return bool
         */
        public function tableExists( $table, $fname = __METHOD__ ) {
@@ -1762,25 +1775,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
                return (bool)$res;
        }
 
-       /**
-        * mysql_field_type() wrapper
-        * @param $res
-        * @param $index
-        * @return string
-        */
-       public function fieldType( $res, $index ) {
-               if ( $res instanceof ResultWrapper ) {
-                       $res = $res->result;
-               }
-
-               return mysql_field_type( $res, $index );
-       }
-
        /**
         * Determines if a given index is unique
         *
-        * @param $table string
-        * @param $index string
+        * @param string $table
+        * @param string $index
         *
         * @return bool
         */
@@ -1797,7 +1796,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Helper for DatabaseBase::insert().
         *
-        * @param $options array
+        * @param array $options
         * @return string
         */
        protected function makeInsertOptions( $options ) {
@@ -1829,10 +1828,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *     possible to determine how many rows were successfully inserted using
         *     DatabaseBase::affectedRows().
         *
-        * @param $table   String Table name. This will be passed through
-        *                 DatabaseBase::tableName().
-        * @param $a       Array of rows to insert
-        * @param $fname   String Calling function name (use __METHOD__) for logs/profiling
+        * @param string $table Table name. This will be passed through
+        *   DatabaseBase::tableName().
+        * @param array $a Array of rows to insert
+        * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         * @param array $options of options
         *
         * @return bool
@@ -1916,25 +1915,20 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * UPDATE wrapper. Takes a condition array and a SET array.
         *
-        * @param $table  String name of the table to UPDATE. This will be passed through
-        *                DatabaseBase::tableName().
-        *
+        * @param string $table Name of the table to UPDATE. This will be passed through
+        *   DatabaseBase::tableName().
         * @param array $values An array of values to SET. For each array element,
-        *                the key gives the field name, and the value gives the data
-        *                to set that field to. The data will be quoted by
-        *                DatabaseBase::addQuotes().
-        *
-        * @param $conds  Array:  An array of conditions (WHERE). See
-        *                DatabaseBase::select() for the details of the format of
-        *                condition arrays. Use '*' to update all rows.
-        *
-        * @param $fname  String: The function name of the caller (from __METHOD__),
-        *                for logging and profiling.
-        *
+        *   the key gives the field name, and the value gives the data to set
+        *   that field to. The data will be quoted by DatabaseBase::addQuotes().
+        * @param array $conds An array of conditions (WHERE). See
+        *   DatabaseBase::select() for the details of the format of condition
+        *   arrays. Use '*' to update all rows.
+        * @param string $fname The function name of the caller (from __METHOD__),
+        *   for logging and profiling.
         * @param array $options An array of UPDATE options, can be:
-        *                   - IGNORE: Ignore unique key conflicts
-        *                   - LOW_PRIORITY: MySQL-specific, see MySQL manual.
-        * @return Boolean
+        *   - IGNORE: Ignore unique key conflicts
+        *   - LOW_PRIORITY: MySQL-specific, see MySQL manual.
+        * @return bool
         */
        function update( $table, $values, $conds, $fname = __METHOD__, $options = array() ) {
                $table = $this->tableName( $table );
@@ -1950,15 +1944,15 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * Makes an encoded list of strings from an array
-        * @param array $a containing the data
-        * @param int $mode Constant
-        *      - LIST_COMMA:          comma separated, no field names
-        *      - LIST_AND:            ANDed WHERE clause (without the WHERE). See
-        *        the documentation for $conds in DatabaseBase::select().
-        *      - LIST_OR:             ORed WHERE clause (without the WHERE)
-        *      - LIST_SET:            comma separated with field names, like a SET clause
-        *      - LIST_NAMES:          comma separated field names
         *
+        * @param array $a Containing the data
+        * @param int $mode Constant
+        *    - LIST_COMMA: Comma separated, no field names
+        *    - LIST_AND:   ANDed WHERE clause (without the WHERE). See the
+        *      documentation for $conds in DatabaseBase::select().
+        *    - LIST_OR:    ORed WHERE clause (without the WHERE)
+        *    - LIST_SET:   Comma separated with field names, like a SET clause
+        *    - LIST_NAMES: Comma separated field names
         * @throws MWException|DBUnexpectedError
         * @return string
         */
@@ -2022,9 +2016,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * The keys on each level may be either integers or strings.
         *
         * @param array $data organized as 2-d
-        *              array(baseKeyVal => array(subKeyVal => [ignored], ...), ...)
-        * @param string $baseKey field name to match the base-level keys to (eg 'pl_namespace')
-        * @param string $subKey field name to match the sub-level keys to (eg 'pl_title')
+        *    array(baseKeyVal => array(subKeyVal => [ignored], ...), ...)
+        * @param string $baseKey Field name to match the base-level keys to (eg 'pl_namespace')
+        * @param string $subKey Field name to match the sub-level keys to (eg 'pl_title')
         * @return Mixed: string SQL fragment, or false if no items in array.
         */
        public function makeWhereFrom2d( $data, $baseKey, $subKey ) {
@@ -2050,7 +2044,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Return aggregated value alias
         *
         * @param $valuedata
-        * @param $valuename string
+        * @param string $valuename
         *
         * @return string
         */
@@ -2059,7 +2053,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * @param $field
+        * @param string $field
         * @return string
         */
        public function bitNot( $field ) {
@@ -2067,8 +2061,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * @param $fieldLeft
-        * @param $fieldRight
+        * @param string $fieldLeft
+        * @param string $fieldRight
         * @return string
         */
        public function bitAnd( $fieldLeft, $fieldRight ) {
@@ -2076,8 +2070,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * @param  $fieldLeft
-        * @param  $fieldRight
+        * @param string $fieldLeft
+        * @param string $fieldRight
         * @return string
         */
        public function bitOr( $fieldLeft, $fieldRight ) {
@@ -2086,8 +2080,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * Build a concatenation list to feed into a SQL query
-        * @param array $stringList list of raw SQL expressions; caller is responsible for any quoting
-        * @return String
+        * @param array $stringList List of raw SQL expressions; caller is
+        *   responsible for any quoting
+        * @return string
         */
        public function buildConcat( $stringList ) {
                return 'CONCAT(' . implode( ',', $stringList ) . ')';
@@ -2106,7 +2101,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string $field Field name
         * @param string|array $conds Conditions
         * @param string|array $join_conds Join conditions
-        * @return String SQL text
+        * @return string SQL text
         * @since 1.23
         */
        public function buildGroupConcatField(
@@ -2127,7 +2122,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @return bool Success or failure
         */
        public function selectDB( $db ) {
-               # Stub.  Shouldn't cause serious problems if it's not overridden, but
+               # Stub. Shouldn't cause serious problems if it's not overridden, but
                # if your database engine supports a concept similar to MySQL's
                # databases you may as well.
                $this->mDBname = $db;
@@ -2159,12 +2154,12 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * themselves. Pass the canonical name to such functions. This is only needed
         * when calling query() directly.
         *
-        * @param string $name database table name
+        * @param string $name Database table name
         * @param string $format One of:
         *   quoted - Automatically pass the table name through addIdentifierQuotes()
         *            so that it can be used in a query.
         *   raw - Do not add identifier quotes to the table name
-        * @return String: full database name
+        * @return string Full database name
         */
        public function tableName( $name, $format = 'quoted' ) {
                global $wgSharedDB, $wgSharedPrefix, $wgSharedTables;
@@ -2290,8 +2285,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Gets an array of aliased table names
         *
-        * @param $tables array( [alias] => table )
-        * @return array of strings, see tableNameWithAlias()
+        * @param array $tables array( [alias] => table )
+        * @return string[] See tableNameWithAlias()
         */
        public function tableNamesWithAlias( $tables ) {
                $retval = array();
@@ -2324,8 +2319,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Gets an array of aliased field names
         *
-        * @param $fields array( [alias] => field )
-        * @return array of strings, see fieldNameWithAlias()
+        * @param array $fields array( [alias] => field )
+        * @return string[] See fieldNameWithAlias()
         */
        public function fieldNamesWithAlias( $fields ) {
                $retval = array();
@@ -2344,8 +2339,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * which might have a JOIN and/or USE INDEX clause
         *
         * @param array $tables ( [alias] => table )
-        * @param $use_index array Same as for select()
-        * @param $join_conds array Same as for select()
+        * @param array $use_index Same as for select()
+        * @param array $join_conds Same as for select()
         * @return string
         */
        protected function tableNamesWithUseIndexOrJOIN(
@@ -2403,8 +2398,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Get the name of an index in a given table
         *
-        * @param $index
-        *
+        * @param string $index
         * @return string
         */
        protected function indexName( $index ) {
@@ -2425,8 +2419,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Adds quotes and backslashes.
         *
-        * @param $s string
-        *
+        * @param string $s
         * @return string
         */
        public function addQuotes( $s ) {
@@ -2447,8 +2440,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Since MySQL is the odd one out here the double quotes are our generic
         * and we implement backticks in DatabaseMysql.
         *
-        * @param $s string
-        *
+        * @param string $s
         * @return string
         */
        public function addIdentifierQuotes( $s ) {
@@ -2459,16 +2451,15 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Returns if the given identifier looks quoted or not according to
         * the database convention for quoting identifiers .
         *
-        * @param $name string
-        *
-        * @return boolean
+        * @param string $name
+        * @return bool
         */
        public function isQuotedIdentifier( $name ) {
                return $name[0] == '"' && substr( $name, -1, 1 ) == '"';
        }
 
        /**
-        * @param $s string
+        * @param string $s
         * @return string
         */
        protected function escapeLikeInternal( $s ) {
@@ -2493,7 +2484,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *   $query .= $dbr->buildLike( $pattern );
         *
         * @since 1.16
-        * @return String: fully built LIKE statement
+        * @return string Fully built LIKE statement
         */
        public function buildLike() {
                $params = func_get_args();
@@ -2541,21 +2532,21 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Any implementation of this function should *not* involve reusing
         * sequence numbers created for rolled-back transactions.
         * See http://bugs.mysql.com/bug.php?id=30767 for details.
-        * @param $seqName string
-        * @return null
+        * @param string $seqName
+        * @return null|int
         */
        public function nextSequenceValue( $seqName ) {
                return null;
        }
 
        /**
-        * USE INDEX clause.  Unlikely to be useful for anything but MySQL.  This
+        * USE INDEX clause. Unlikely to be useful for anything but MySQL. This
         * is only needed because a) MySQL must be as efficient as possible due to
         * its use on Wikipedia, and b) MySQL 4.0 is kind of dumb sometimes about
-        * which index to pick.  Anyway, other databases might have different
-        * indexes on a given table.  So don't bother overriding this unless you're
+        * which index to pick. Anyway, other databases might have different
+        * indexes on a given table. So don't bother overriding this unless you're
         * MySQL.
-        * @param $index
+        * @param string $index
         * @return string
         */
        public function useIndexClause( $index ) {
@@ -2578,10 +2569,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * errors which wouldn't have occurred in MySQL.
         *
         * @param string $table The table to replace the row(s) in.
+        * @param array $uniqueIndexes Is an array of indexes. Each element may be either
+        *    a field name or an array of field names
         * @param array $rows Can be either a single row to insert, or multiple rows,
         *    in the same format as for DatabaseBase::insert()
-        * @param array $uniqueIndexes is an array of indexes. Each element may be either
-        *    a field name or an array of field names
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         */
        public function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
@@ -2636,7 +2627,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * statement.
         *
         * @param string $table Table name
-        * @param array $rows Rows to insert
+        * @param array|string $rows Row(s) to insert
         * @param string $fname Caller function name
         *
         * @return ResultWrapper
@@ -2687,21 +2678,20 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Usually throws a DBQueryError on failure. If errors are explicitly ignored,
         * returns success.
         *
+        * @since 1.22
+        *
         * @param string $table Table name. This will be passed through DatabaseBase::tableName().
         * @param array $rows A single row or list of rows to insert
         * @param array $uniqueIndexes List of single field names or field name tuples
-        * @param array $set An array of values to SET. For each array element,
-        *                the key gives the field name, and the value gives the data
-        *                to set that field to. The data will be quoted by
-        *                DatabaseBase::addQuotes().
+        * @param array $set An array of values to SET. For each array element, the
+        *   key gives the field name, and the value gives the data to set that
+        *   field to. The data will be quoted by DatabaseBase::addQuotes().
         * @param string $fname Calling function name (use __METHOD__) for logs/profiling
-        * @param array $options of options
-        *
+        * @throws Exception
         * @return bool
-        * @since 1.22
         */
-       public function upsert(
-               $table, array $rows, array $uniqueIndexes, array $set, $fname = __METHOD__
+       public function upsert( $table, array $rows, array $uniqueIndexes, array $set,
+               $fname = __METHOD__
        ) {
                if ( !count( $rows ) ) {
                        return true; // nothing to do
@@ -2762,14 +2752,13 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * DO NOT put the join condition in $conds.
         *
-        * @param $delTable   String: The table to delete from.
-        * @param $joinTable  String: The other table.
-        * @param $delVar     String: The variable to join on, in the first table.
-        * @param $joinVar    String: The variable to join on, in the second table.
-        * @param $conds      Array: Condition array of field names mapped to variables,
-        *                    ANDed together in the WHERE clause
-        * @param $fname      String: Calling function name (use __METHOD__) for
-        *                    logs/profiling
+        * @param string $delTable The table to delete from.
+        * @param string $joinTable The other table.
+        * @param string $delVar The variable to join on, in the first table.
+        * @param string$joinVar The variable to join on, in the second table.
+        * @param array $conds Condition array of field names mapped to variables,
+        *   ANDed together in the WHERE clause
+        * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         * @throws DBUnexpectedError
         */
        public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds,
@@ -2794,9 +2783,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Returns the size of a text field, or -1 for "unlimited"
         *
-        * @param $table string
-        * @param $field string
-        *
+        * @param string $table
+        * @param string $field
         * @return int
         */
        public function textFieldSize( $table, $field ) {
@@ -2818,7 +2806,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * A string to insert into queries to show that they're low-priority, like
-        * MySQL's LOW_PRIORITY.  If no such feature exists, return an empty
+        * MySQL's LOW_PRIORITY. If no such feature exists, return an empty
         * string and nothing bad should happen.
         *
         * @return string Returns the text of the low priority option if it is
@@ -2832,10 +2820,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * DELETE query wrapper.
         *
         * @param array $table Table name
-        * @param string|array $conds of conditions. See $conds in DatabaseBase::select() for
-        *               the format. Use $conds == "*" to delete all rows
+        * @param string|array $conds of conditions. See $conds in DatabaseBase::select()
+        *   for the format. Use $conds == "*" to delete all rows
         * @param string $fname name of the calling function
-        *
         * @throws DBUnexpectedError
         * @return bool|ResultWrapper
         */
@@ -2865,7 +2852,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @param string|array $srcTable May be either a table name, or an array of table names
         *    to include in a join.
         *
-        * @param array $varMap must be an associative array of the form
+        * @param array $varMap Must be an associative array of the form
         *    array( 'dest1' => 'source1', ...). Source items may be literals
         *    rather than field names, but strings should be quoted with
         *    DatabaseBase::addQuotes()
@@ -2889,10 +2876,12 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        ) {
                $destTable = $this->tableName( $destTable );
 
-               if ( is_array( $insertOptions ) ) {
-                       $insertOptions = implode( ' ', $insertOptions );
+               if ( !is_array( $insertOptions ) ) {
+                       $insertOptions = array( $insertOptions );
                }
 
+               $insertOptions = $this->makeInsertOptions( $insertOptions );
+
                if ( !is_array( $selectOptions ) ) {
                        $selectOptions = array( $selectOptions );
                }
@@ -2922,22 +2911,21 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * Construct a LIMIT query with optional offset.  This is used for query
-        * pages.  The SQL should be adjusted so that only the first $limit rows
-        * are returned.  If $offset is provided as well, then the first $offset
+        * Construct a LIMIT query with optional offset. This is used for query
+        * pages. The SQL should be adjusted so that only the first $limit rows
+        * are returned. If $offset is provided as well, then the first $offset
         * rows should be discarded, and the next $limit rows should be returned.
         * If the result of the query is not ordered, then the rows to be returned
         * are theoretically arbitrary.
         *
         * $sql is expected to be a SELECT, if that makes a difference.
         *
-        * The version provided by default works in MySQL and SQLite.  It will very
+        * The version provided by default works in MySQL and SQLite. It will very
         * likely need to be overridden for most other DBMSes.
         *
         * @param string $sql SQL query we will append the limit too
-        * @param $limit Integer the SQL limit
-        * @param $offset Integer|bool the SQL offset (default false)
-        *
+        * @param int $limit The SQL limit
+        * @param int|bool $offset The SQL offset (default false)
         * @throws DBUnexpectedError
         * @return string
         */
@@ -2965,8 +2953,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * This is used for providing overload point for other DB abstractions
         * not compatible with the MySQL syntax.
         * @param array $sqls SQL statements to combine
-        * @param $all Boolean: use UNION ALL
-        * @return String: SQL fragment
+        * @param bool $all Use UNION ALL
+        * @return string SQL fragment
         */
        public function unionQueries( $sqls, $all ) {
                $glue = $all ? ') UNION ALL (' : ') UNION (';
@@ -2975,13 +2963,13 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        }
 
        /**
-        * Returns an SQL expression for a simple conditional.  This doesn't need
+        * Returns an SQL expression for a simple conditional. This doesn't need
         * to be overridden unless CASE isn't supported in your DBMS.
         *
         * @param string|array $cond SQL expression which will result in a boolean value
         * @param string $trueVal SQL expression to return if true
         * @param string $falseVal SQL expression to return if false
-        * @return String: SQL fragment
+        * @return string SQL fragment
         */
        public function conditional( $cond, $trueVal, $falseVal ) {
                if ( is_array( $cond ) ) {
@@ -2995,9 +2983,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Returns a comand for str_replace function in SQL query.
         * Uses REPLACE() in MySQL
         *
-        * @param string $orig column to modify
-        * @param string $old column to seek
-        * @param string $new column to replace with
+        * @param string $orig Column to modify
+        * @param string $old Column to seek
+        * @param string $new Column to replace with
         *
         * @return string
         */
@@ -3120,41 +3108,14 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Wait for the slave to catch up to a given master position.
         *
-        * @param $pos DBMasterPos object
-        * @param $timeout Integer: the maximum number of seconds to wait for
+        * @param DBMasterPos $pos
+        * @param int $timeout The maximum number of seconds to wait for
         *   synchronisation
-        *
-        * @return integer: zero if the slave was past that position already,
+        * @return int Zzero if the slave was past that position already,
         *   greater than zero if we waited for some period of time, less than
         *   zero if we timed out.
         */
        public function masterPosWait( DBMasterPos $pos, $timeout ) {
-               wfProfileIn( __METHOD__ );
-
-               if ( !is_null( $this->mFakeSlaveLag ) ) {
-                       $wait = intval( ( $pos->pos - microtime( true ) + $this->mFakeSlaveLag ) * 1e6 );
-
-                       if ( $wait > $timeout * 1e6 ) {
-                               wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
-                               wfProfileOut( __METHOD__ );
-
-                               return -1;
-                       } elseif ( $wait > 0 ) {
-                               wfDebug( "Fake slave waiting $wait us\n" );
-                               usleep( $wait );
-                               wfProfileOut( __METHOD__ );
-
-                               return 1;
-                       } else {
-                               wfDebug( "Fake slave up to date ($wait us)\n" );
-                               wfProfileOut( __METHOD__ );
-
-                               return 0;
-                       }
-               }
-
-               wfProfileOut( __METHOD__ );
-
                # Real waits are implemented in the subclass.
                return 0;
        }
@@ -3162,31 +3123,21 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Get the replication position of this slave
         *
-        * @return DBMasterPos, or false if this is not a slave.
+        * @return DBMasterPos|bool False if this is not a slave.
         */
        public function getSlavePos() {
-               if ( !is_null( $this->mFakeSlaveLag ) ) {
-                       $pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
-                       wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
-
-                       return $pos;
-               } else {
-                       # Stub
-                       return false;
-               }
+               # Stub
+               return false;
        }
 
        /**
         * Get the position of this master
         *
-        * @return DBMasterPos, or false if this is not a master
+        * @return DBMasterPos|bool False if this is not a master
         */
        public function getMasterPos() {
-               if ( $this->mFakeMaster ) {
-                       return new MySQLMasterPos( 'fake', microtime( true ) );
-               } else {
-                       return false;
-               }
+               # Stub
+               return false;
        }
 
        /**
@@ -3353,7 +3304,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * will cause a warning, unless the current transaction was started
         * automatically because of the DBO_TRX flag.
         *
-        * @param $fname string
+        * @param string $fname
         * @throws DBError
         */
        final public function begin( $fname = __METHOD__ ) {
@@ -3405,7 +3356,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Issues the BEGIN command to the database server.
         *
         * @see DatabaseBase::begin()
-        * @param type $fname
+        * @param string $fname
         */
        protected function doBegin( $fname ) {
                $this->query( 'BEGIN', $fname );
@@ -3418,12 +3369,13 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * Nesting of transactions is not supported.
         *
-        * @param $fname string
+        * @param string $fname
         * @param string $flush Flush flag, set to 'flush' to disable warnings about
         *   explicitly committing implicit transactions, or calling commit when no
         *   transaction is in progress. This will silently break any ongoing
         *   explicit transaction. Only set the flush flag if you are sure that it
         *   is safe to ignore these warnings in your context.
+        * @throws DBUnexpectedError
         */
        final public function commit( $fname = __METHOD__, $flush = '' ) {
                if ( !$this->mTrxAtomicLevels->isEmpty() ) {
@@ -3460,7 +3412,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Issues the COMMIT command to the database server.
         *
         * @see DatabaseBase::commit()
-        * @param type $fname
+        * @param string $fname
         */
        protected function doCommit( $fname ) {
                if ( $this->mTrxLevel ) {
@@ -3475,7 +3427,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * No-op on non-transactional databases.
         *
-        * @param $fname string
+        * @param string $fname
         */
        final public function rollback( $fname = __METHOD__ ) {
                if ( !$this->mTrxLevel ) {
@@ -3494,7 +3446,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Issues the ROLLBACK command to the database server.
         *
         * @see DatabaseBase::rollback()
-        * @param type $fname
+        * @param string $fname
         */
        protected function doRollback( $fname ) {
                if ( $this->mTrxLevel ) {
@@ -3511,12 +3463,12 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * The table names passed to this function shall not be quoted (this
         * function calls addIdentifierQuotes when needed).
         *
-        * @param string $oldName name of table whose structure should be copied
-        * @param string $newName name of table to be created
-        * @param $temporary Boolean: whether the new table should be temporary
-        * @param string $fname calling function name
+        * @param string $oldName Name of table whose structure should be copied
+        * @param string $newName Name of table to be created
+        * @param bool $temporary Whether the new table should be temporary
+        * @param string $fname Calling function name
         * @throws MWException
-        * @return Boolean: true if operation was successful
+        * @return bool True if operation was successful
         */
        public function duplicateTableStructure( $oldName, $newName, $temporary = false,
                $fname = __METHOD__
@@ -3529,7 +3481,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * List all tables on the database
         *
         * @param string $prefix Only show tables with this prefix, e.g. mw_
-        * @param string $fname calling function name
+        * @param string $fname Calling function name
         * @throws MWException
         */
        function listTables( $prefix = null, $fname = __METHOD__ ) {
@@ -3562,7 +3514,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Differentiates between a TABLE and a VIEW
         *
-        * @param $name string: Name of the database-structure to test.
+        * @param string $name Name of the database-structure to test.
         * @throws MWException
         * @since 1.22
         */
@@ -3577,7 +3529,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * The result is unquoted, and needs to be passed through addQuotes()
         * before it can be included in raw SQL.
         *
-        * @param $ts string|int
+        * @param string|int $ts
         *
         * @return string
         */
@@ -3594,7 +3546,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * The result is unquoted, and needs to be passed through addQuotes()
         * before it can be included in raw SQL.
         *
-        * @param $ts string|int
+        * @param string|int $ts
         *
         * @return string
         */
@@ -3617,8 +3569,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * callers, so this is unnecessary in external code. For compatibility with
         * old code, ResultWrapper objects are passed through unaltered.
         *
-        * @param $result bool|ResultWrapper
-        *
+        * @param bool|ResultWrapper|resource $result
         * @return bool|ResultWrapper
         */
        public function resultObject( $result ) {
@@ -3640,7 +3591,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @return bool Success or failure
         */
        public function ping() {
-               # Stub.  Not essential to override.
+               # Stub. Not essential to override.
                return true;
        }
 
@@ -3654,7 +3605,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * @return int Database replication lag in seconds
         */
        public function getLag() {
-               return intval( $this->mFakeSlaveLag );
+               return 0;
        }
 
        /**
@@ -3671,7 +3622,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * don't allow simple quoted strings to be inserted. To insert into such
         * a field, pass the data through this function before passing it to
         * DatabaseBase::insert().
-        * @param $b string
+        *
+        * @param string $b
         * @return string
         */
        public function encodeBlob( $b ) {
@@ -3682,7 +3634,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Some DBMSs return a special placeholder object representing blob fields
         * in result objects. Pass the object through this function to return the
         * original string.
-        * @param $b string
+        *
+        * @param string $b
         * @return string
         */
        public function decodeBlob( $b ) {
@@ -3696,7 +3649,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *                     full-wiki dumps, where a single query reads out over
         *                     hours or days.
         *
-        * @param $options Array
+        * @param array $options
         * @return void
         */
        public function setSessionOptions( array $options ) {
@@ -3713,9 +3666,8 @@ abstract class DatabaseBase implements IDatabase, 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
+        * @param bool|callable $inputCallback Optional function called for each
+        *   complete line sent
         * @throws Exception|MWException
         * @return bool|string
         */
@@ -3752,7 +3704,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * it fails back to MySQL if no DB-specific patch can be found
         *
         * @param string $patch The name of the patch, like patch-something.sql
-        * @return String Full path to patch file
+        * @return string Full path to patch file
         */
        public function patchPath( $patch ) {
                global $IP;
@@ -3770,7 +3722,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * ones in $GLOBALS. If an array is set here, $GLOBALS will not be used at
         * all. If it's set to false, $GLOBALS will be used.
         *
-        * @param bool|array $vars mapping variable name to value.
+        * @param bool|array $vars Mapping variable name to value.
         */
        public function setSchemaVars( $vars ) {
                $this->mSchemaVars = $vars;
@@ -3782,11 +3734,11 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Returns true on success, error string or exception on failure (depending
         * on object's error ignore settings).
         *
-        * @param $fp Resource: File handle
-        * @param $lineCallback Callback: Optional function called before reading each query
-        * @param $resultCallback Callback: Optional function called for each MySQL result
+        * @param resource $fp File handle
+        * @param bool|callable $lineCallback Optional function called before reading each query
+        * @param bool|callable $resultCallback Optional function called for each MySQL result
         * @param string $fname Calling function name
-        * @param $inputCallback Callback: Optional function called for each complete query sent
+        * @param bool|callable $inputCallback Optional function called for each complete query sent
         * @return bool|string
         */
        public function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
@@ -3845,7 +3797,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * @param string $sql SQL assembled so far
         * @param string $newLine New line about to be added to $sql
-        * @return Bool Whether $newLine contains end of the statement
+        * @return bool Whether $newLine contains end of the statement
         */
        public function streamStatementEnd( &$sql, &$newLine ) {
                if ( $this->delimiter ) {
@@ -3874,7 +3826,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *   table options its use should be avoided.
         *
         * @param string $ins SQL statement to replace variables in
-        * @return String The new SQL statement with variables replaced
+        * @return string The new SQL statement with variables replaced
         */
        protected function replaceSchemaVars( $ins ) {
                $vars = $this->getSchemaVars();
@@ -3893,8 +3845,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Replace variables in sourced SQL
         *
-        * @param $ins string
-        *
+        * @param string $ins
         * @return string
         */
        protected function replaceVars( $ins ) {
@@ -3940,8 +3891,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Table name callback
         *
-        * @param $matches array
-        *
+        * @param array $matches
         * @return string
         */
        protected function tableNameCallback( $matches ) {
@@ -3951,8 +3901,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Index name callback
         *
-        * @param $matches array
-        *
+        * @param array $matches
         * @return string
         */
        protected function indexNameCallback( $matches ) {
@@ -3962,9 +3911,9 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Check to see if a named lock is available. This is non-blocking.
         *
-        * @param string $lockName name of lock to poll
-        * @param string $method name of method calling us
-        * @return Boolean
+        * @param string $lockName Name of lock to poll
+        * @param string $method Name of method calling us
+        * @return bool
         * @since 1.20
         */
        public function lockIsFree( $lockName, $method ) {
@@ -3977,10 +3926,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Abstracted from Filestore::lock() so child classes can implement for
         * their own needs.
         *
-        * @param string $lockName name of lock to aquire
-        * @param string $method name of method calling us
-        * @param $timeout Integer: timeout
-        * @return Boolean
+        * @param string $lockName Name of lock to aquire
+        * @param string $method Name of method calling us
+        * @param int $timeout
+        * @return bool
         */
        public function lock( $lockName, $method, $timeout = 5 ) {
                return true;
@@ -4003,11 +3952,10 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Lock specific tables
         *
-        * @param array $read of tables to lock for read access
-        * @param array $write of tables to lock for write access
-        * @param string $method name of caller
+        * @param array $read Array of tables to lock for read access
+        * @param array $write Array of tables to lock for write access
+        * @param string $method Name of caller
         * @param bool $lowPriority Whether to indicate writes to be LOW PRIORITY
-        *
         * @return bool
         */
        public function lockTables( $read, $write, $method, $lowPriority = true ) {
@@ -4017,8 +3965,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
        /**
         * Unlock specific tables
         *
-        * @param string $method the caller
-        *
+        * @param string $method The caller
         * @return bool
         */
        public function unlockTables( $method ) {
@@ -4027,8 +3974,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
 
        /**
         * Delete a table
-        * @param $tableName string
-        * @param $fName string
+        * @param string $tableName
+        * @param string $fName
         * @return bool|ResultWrapper
         * @since 1.18
         */
@@ -4048,7 +3995,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Get search engine class. All subclasses of this need to implement this
         * if they wish to use searching.
         *
-        * @return String
+        * @return string
         */
        public function getSearchEngine() {
                return 'SearchEngineDummy';
@@ -4059,7 +4006,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * keyword for timestamps in PostgreSQL, and works with CHAR(14) as well
         * because "i" sorts after all numbers.
         *
-        * @return String
+        * @return string
         */
        public function getInfinity() {
                return 'infinity';
@@ -4069,7 +4016,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Encode an expiry time into the DBMS dependent format
         *
         * @param string $expiry timestamp for expiry, or the 'infinity' string
-        * @return String
+        * @return string
         */
        public function encodeExpiry( $expiry ) {
                return ( $expiry == '' || $expiry == 'infinity' || $expiry == $this->getInfinity() )
@@ -4081,8 +4028,8 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         * Decode an expiry time into a DBMS independent format
         *
         * @param string $expiry DB timestamp field value for expiry
-        * @param $format integer: TS_* constant, defaults to TS_MW
-        * @return String
+        * @param int $format TS_* constant, defaults to TS_MW
+        * @return string
         */
        public function decodeExpiry( $expiry, $format = TS_MW ) {
                return ( $expiry == '' || $expiry == $this->getInfinity() )
@@ -4096,7 +4043,7 @@ abstract class DatabaseBase implements IDatabase, DatabaseType {
         *
         * This is a MySQL-specific feature.
         *
-        * @param $value Mixed: true for allow, false for deny, or "default" to
+        * @param bool|string $value True for allow, false for deny, or "default" to
         *   restore the initial value
         */
        public function setBigSelects( $value = true ) {
index 8be8530..b4c7365 100644 (file)
  * @ingroup Database
  */
 class DBError extends MWException {
-       /**
-        * @var DatabaseBase
-        */
+       /** @var DatabaseBase */
        public $db;
 
        /**
         * Construct a database error
-        * @param $db DatabaseBase object which threw the error
+        * @param DatabaseBase $db Object which threw the error
         * @param string $error A simple error message to be used for debugging
         */
        function __construct( DatabaseBase $db = null, $error ) {
@@ -90,8 +88,13 @@ class DBError extends MWException {
  * @ingroup Database
  */
 class DBConnectionError extends DBError {
+       /** @var string Error text */
        public $error;
 
+       /**
+        * @param DatabaseBase $db Object throwing the error
+        * @param string $error Error text
+        */
        function __construct( DatabaseBase $db = null, $error = 'unknown error' ) {
                $msg = 'DB connection error';
 
@@ -114,9 +117,11 @@ class DBConnectionError extends DBError {
        }
 
        /**
-        * @param $key
-        * @param $fallback
-        * @return string
+        * @param string $key
+        * @param string $fallback Unescaped alternative error text in case the
+        *   message cache cannot be used. Can contain parameters as in regular
+        *   messages, that should be passed as additional parameters.
+        * @return string Unprocessed plain error text with parameters replaced
         */
        function msg( $key, $fallback /*[, params...] */ ) {
                global $wgLang;
@@ -141,7 +146,7 @@ class DBConnectionError extends DBError {
        }
 
        /**
-        * @return string
+        * @return string Safe HTML
         */
        function getHTML() {
                global $wgShowDBErrorBacktrace, $wgShowHostnames, $wgShowSQLErrors;
@@ -192,6 +197,11 @@ class DBConnectionError extends DBError {
                }
        }
 
+       /**
+        * Output the exception report using HTML.
+        *
+        * @return void
+        */
        public function reportHTML() {
                global $wgUseFileCache;
 
@@ -270,21 +280,21 @@ EOT;
         * @return string
         */
        private function fileCachedPage() {
-               global $wgTitle, $wgOut, $wgRequest;
+               $context = RequestContext::getMain();
 
-               if ( $wgOut->isDisabled() ) {
+               if ( $context->getOutput()->isDisabled() ) {
                        // Done already?
                        return '';
                }
 
-               if ( $wgTitle ) {
-                       // use $wgTitle if we managed to set it
-                       $t = $wgTitle->getPrefixedDBkey();
+               if ( $context->getTitle() ) {
+                       // Use the main context's title if we managed to set it
+                       $t = $context->getTitle()->getPrefixedDBkey();
                } else {
                        // Fallback to the raw title URL param. We can't use the Title
                        // class is it may hit the interwiki table and give a DB error.
                        // We may get a cache miss due to not sanitizing the title though.
-                       $t = str_replace( ' ', '_', $wgRequest->getVal( 'title' ) );
+                       $t = str_replace( ' ', '_', $context->getRequest()->getVal( 'title' ) );
                        if ( $t == '' ) { // fallback to main page
                                $t = Title::newFromText(
                                        $this->msg( 'mainpage', 'Main Page' ) )->getPrefixedDBkey();
@@ -307,11 +317,11 @@ class DBQueryError extends DBError {
        public $error, $errno, $sql, $fname;
 
        /**
-        * @param $db DatabaseBase
-        * @param $error string
-        * @param $errno int|string
-        * @param $sql string
-        * @param $fname string
+        * @param DatabaseBase $db
+        * @param string $error
+        * @param int|string $errno
+        * @param string $sql
+        * @param string $fname
         */
        function __construct( DatabaseBase $db, $error, $errno, $sql, $fname ) {
                $message = "A database error has occurred. Did you forget to run " .
@@ -329,7 +339,7 @@ class DBQueryError extends DBError {
        }
 
        /**
-        * @return boolean
+        * @return bool
         */
        function isLoggable() {
                // Don't send to the exception log, already in dberror log
@@ -391,7 +401,7 @@ class DBQueryError extends DBError {
         * sites using this option probably don't care much about "security by obscurity". Of course,
         * if $wgShowSQLErrors is true, the SQL query *is* shown.
         *
-        * @return array: Keys are message keys; values are arrays of arguments for Html::element().
+        * @return array Keys are message keys; values are arrays of arguments for Html::element().
         *   Array will be empty if users are not allowed to see any of these details at all.
         */
        protected function getTechnicalDetails() {
@@ -416,7 +426,7 @@ class DBQueryError extends DBError {
 
        /**
         * @param string $key Message key
-        * @return string: English message text
+        * @return string English message text
         */
        private function getFallbackMessage( $key ) {
                $messages = array(
index 5a5eab1..9636da5 100644 (file)
  * @ingroup Database
  */
 class DatabaseMssql extends DatabaseBase {
-       var $mInsertId = null;
-       var $mLastResult = null;
-       var $mAffectedRows = null;
+       /** @var resource */
+       protected $mLastResult = null;
 
-       var $mPort;
+       /** @var int The number of rows affected as an integer */
+       protected $mAffectedRows = null;
+
+       /**
+        * @var int Post number for database
+        * @todo Unused and can be removed?
+        */
+       protected $mPort;
+
+       /** @var int */
+       private $mInsertId = null;
 
        function cascadingDeletes() {
                return true;
@@ -88,7 +97,7 @@ class DatabaseMssql extends DatabaseBase {
 
                # e.g. the class is being loaded
                if ( !strlen( $user ) ) {
-                       return;
+                       return null;
                }
 
                $this->close();
@@ -150,9 +159,13 @@ class DatabaseMssql extends DatabaseBase {
                return sqlsrv_close( $this->mConn );
        }
 
+       /**
+        * @param string $sql
+        * @return bool|MssqlResult
+        * @throws DBUnexpectedError
+        */
        protected function doQuery( $sql ) {
                wfDebug( "SQL: [$sql]\n" );
-               $this->offset = 0;
 
                // several extensions seem to think that all databases support limits
                // via LIMIT N after the WHERE clause well, MSSQL uses SELECT TOP N,
@@ -204,6 +217,9 @@ class DatabaseMssql extends DatabaseBase {
                return $res;
        }
 
+       /**
+        * @param mixed|ResultWrapper $res
+        */
        function freeResult( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -211,6 +227,10 @@ class DatabaseMssql extends DatabaseBase {
                $res->free();
        }
 
+       /**
+        * @param ResultWrapper|stdClass $res
+        * @return stdClass
+        */
        function fetchObject( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -220,6 +240,9 @@ class DatabaseMssql extends DatabaseBase {
                return $row;
        }
 
+       /**
+        * @return string
+        */
        function getErrors() {
                $strRet = '';
                $retErrors = sqlsrv_errors( SQLSRV_ERR_ALL );
@@ -236,6 +259,10 @@ class DatabaseMssql extends DatabaseBase {
                return $strRet;
        }
 
+       /**
+        * @param resource $res
+        * @return Blob
+        */
        function fetchRow( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -245,6 +272,10 @@ class DatabaseMssql extends DatabaseBase {
                return $row;
        }
 
+       /**
+        * @param mixed $res
+        * @return int
+        */
        function numRows( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -271,12 +302,17 @@ class DatabaseMssql extends DatabaseBase {
 
        /**
         * This must be called after nextSequenceVal
-        * @return null
+        * @return int|null
         */
        function insertId() {
                return $this->mInsertId;
        }
 
+       /**
+        * @param mixed $res
+        * @param int $row
+        * @return bool
+        */
        function dataSeek( $res, $row ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -309,16 +345,16 @@ class DatabaseMssql extends DatabaseBase {
        /**
         * SELECT wrapper
         *
-        * @param $table   Mixed: array or string, table name(s) (prefix auto-added)
-        * @param $vars    Mixed: array or string, field name(s) to be retrieved
-        * @param $conds   Mixed: array or string, condition(s) for WHERE
-        * @param $fname   String: calling function name (use __METHOD__) for logs/profiling
-        * @param array $options associative array of options (e.g.
+        * @param mixed $table Array or string, table name(s) (prefix auto-added)
+        * @param mixed $vars Array or string, field name(s) to be retrieved
+        * @param mixed $conds Array or string, condition(s) for WHERE
+        * @param string $fname Calling function name (use __METHOD__) for logs/profiling
+        * @param array $options Associative array of options (e.g.
         *   array('GROUP BY' => 'page_title')), see Database::makeSelectOptions
         *   code for list of supported stuff
-        * @param $join_conds Array: Associative array of table join conditions
+        * @param array $join_conds Associative array of table join conditions
         *   (optional) (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
-        * @return Mixed: database result resource (feed to Database::fetchObject
+        * @return mixed Database result resource (feed to Database::fetchObject
         *   or whatever), or false on failure
         */
        function select( $table, $vars, $conds = '', $fname = __METHOD__,
@@ -339,15 +375,15 @@ class DatabaseMssql extends DatabaseBase {
        /**
         * SELECT wrapper
         *
-        * @param $table   Mixed:  Array or string, table name(s) (prefix auto-added)
-        * @param $vars    Mixed:  Array or string, field name(s) to be retrieved
-        * @param $conds   Mixed:  Array or string, condition(s) for WHERE
-        * @param $fname   String: Calling function name (use __METHOD__) for logs/profiling
+        * @param mixed $table Array or string, table name(s) (prefix auto-added)
+        * @param mixed $vars Array or string, field name(s) to be retrieved
+        * @param mixed $conds Array or string, condition(s) for WHERE
+        * @param string $fname Calling function name (use __METHOD__) for logs/profiling
         * @param array $options Associative array of options (e.g. array('GROUP BY' => 'page_title')),
-        *                 see Database::makeSelectOptions code for list of supported stuff
-        * @param $join_conds Array: Associative array of table join conditions (optional)
-        *                    (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
-        * @return string, the SQL text
+        *   see Database::makeSelectOptions code for list of supported stuff
+        * @param array $join_conds Associative array of table join conditions (optional)
+        *    (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+        * @return string The SQL text
         */
        function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__,
                $options = array(), $join_conds = array()
@@ -365,6 +401,11 @@ class DatabaseMssql extends DatabaseBase {
         * This is not necessarily an accurate estimate, so use sparingly
         * Returns -1 if count cannot be found
         * Takes same arguments as Database::select()
+        * @param string $table
+        * @param string $vars
+        * @param string $conds
+        * @param string $fname
+        * @param array $options
         * @return int
         */
        function estimateRowCount( $table, $vars = '*', $conds = '',
@@ -388,6 +429,9 @@ class DatabaseMssql extends DatabaseBase {
        /**
         * Returns information about an index
         * If errors are explicitly ignored, returns NULL on failure
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return array|bool|null
         */
        function indexInfo( $table, $index, $fname = __METHOD__ ) {
@@ -598,6 +642,7 @@ class DatabaseMssql extends DatabaseBase {
                        throw new DBQueryError( $this, $this->getErrors(), $this->lastErrno(), /*$sql*/ '', $fname );
                } elseif ( $ret != null ) {
                        // remember number of rows affected
+                       // @todo FIXME: $ret type does not appear to be a resource
                        $this->mAffectedRows = sqlsrv_rows_affected( $ret );
 
                        return $ret;
@@ -608,7 +653,8 @@ class DatabaseMssql extends DatabaseBase {
 
        /**
         * Return the next in a sequence, save the value for retrieval via insertId()
-        * @return
+        * @param string $seqName
+        * @return int|null
         */
        function nextSequenceValue( $seqName ) {
                if ( !$this->tableExists( 'sequence_' . $seqName ) ) {
@@ -630,7 +676,8 @@ class DatabaseMssql extends DatabaseBase {
 
        /**
         * Return the current value of a sequence. Assumes it has ben nextval'ed in this session.
-        * @return
+        * @param string $seqName
+        * @return int|null
         */
        function currentSequenceValue( $seqName ) {
                $ret = sqlsrv_query( $this->mConn, "SELECT TOP 1 id FROM [sequence_$seqName] ORDER BY id DESC" );
@@ -644,7 +691,11 @@ class DatabaseMssql extends DatabaseBase {
                }
        }
 
-       # Returns the size of a text field, or -1 for "unlimited"
+       /**
+        * @param string $table
+        * @param string $field
+        * @return int Returns the size of a text field, or -1 for "unlimited"
+        */
        function textFieldSize( $table, $field ) {
                $table = $this->tableName( $table );
                $sql = "SELECT CHARACTER_MAXIMUM_LENGTH,DATA_TYPE FROM INFORMATION_SCHEMA.Columns
@@ -662,10 +713,11 @@ class DatabaseMssql extends DatabaseBase {
        /**
         * Construct a LIMIT query with optional offset
         * This is used for query pages
-        * $sql string SQL query we will append the limit too
-        * $limit integer the SQL limit
-        * $offset integer the SQL offset (default false)
-        * @return mixed|string
+        *
+        * @param string $sql SQL query we will append the limit too
+        * @param int $limit The SQL limit
+        * @param bool|int $offset The SQL offset (default false)
+        * @return array|string
         */
        function limitResult( $sql, $limit, $offset = false ) {
                if ( $offset === false || $offset == 0 ) {
@@ -687,11 +739,16 @@ class DatabaseMssql extends DatabaseBase {
                }
        }
 
-       // If there is a limit clause, parse it, strip it, and pass the remaining
-       // SQL through limitResult() with the appropriate parameters. Not the
-       // prettiest solution, but better than building a whole new parser. This
-       // exists becase there are still too many extensions that don't use dynamic
-       // sql generation.
+       /**
+        * If there is a limit clause, parse it, strip it, and pass the remaining
+        * SQL through limitResult() with the appropriate parameters. Not the
+        * prettiest solution, but better than building a whole new parser. This
+        * exists becase there are still too many extensions that don't use dynamic
+        * sql generation.
+        *
+        * @param string $sql
+        * @return array|mixed|string
+        */
        function LimitToTopN( $sql ) {
                // Matches: LIMIT {[offset,] row_count | row_count OFFSET offset}
                $pattern = '/\bLIMIT\s+((([0-9]+)\s*,\s*)?([0-9]+)(\s+OFFSET\s+([0-9]+))?)/i';
@@ -712,15 +769,21 @@ class DatabaseMssql extends DatabaseBase {
                return $sql;
        }
 
+       /**
+        * Timestamp in ISO 8601 format with no timezone: 1986-02-09T20:00:00Z
+        *
+        * @param int $ts Timestamp
+        * @return bool|string The same date in ISO 8601 format with no timezone or false
+        */
        function timestamp( $ts = 0 ) {
                return wfTimestamp( TS_ISO_8601, $ts );
        }
 
        /**
-        * @return string wikitext of a link to the server software's web site
+        * @return string Wikitext of a link to the server software's web site
         */
        public function getSoftwareLink() {
-               return "[http://www.microsoft.com/sql/ MS SQL Server]";
+               return "[{{int:version-db-mssql-url}} MS SQL Server]";
        }
 
        /**
@@ -736,6 +799,12 @@ class DatabaseMssql extends DatabaseBase {
                return $version;
        }
 
+       /**
+        * @param string $table
+        * @param string $fname
+        * @param bool $schema
+        * @return bool
+        */
        function tableExists( $table, $fname = __METHOD__, $schema = false ) {
                $res = sqlsrv_query( $this->mConn, "SELECT * FROM information_schema.tables
                        WHERE table_type='BASE TABLE' AND table_name = '$table'" );
@@ -753,6 +822,9 @@ class DatabaseMssql extends DatabaseBase {
 
        /**
         * Query whether a given column exists in the mediawiki schema
+        * @param string $table
+        * @param string $field
+        * @param string $fname
         * @return bool
         */
        function fieldExists( $table, $field, $fname = __METHOD__ ) {
@@ -817,7 +889,7 @@ class DatabaseMssql extends DatabaseBase {
         * Escapes a identifier for use inm SQL.
         * Throws an exception if it is invalid.
         * Reference: http://msdn.microsoft.com/en-us/library/aa224033%28v=SQL.80%29.aspx
-        * @param $identifier
+        * @param string $identifier
         * @throws MWException
         * @return string
         */
@@ -907,10 +979,12 @@ class DatabaseMssql extends DatabaseBase {
        }
 
        /**
-        * @private
+        * @param array $tables
+        * @param array $use_index
+        * @param array $join_conds
         * @return string
         */
-       function tableNamesWithUseIndexOrJOIN( $tables, $use_index = array(), $join_conds = array() ) {
+       protected function tableNamesWithUseIndexOrJOIN( $tables, $use_index = array(), $join_conds = array() ) {
                $ret = array();
                $retJOIN = array();
                $use_index_safe = is_array( $use_index ) ? $use_index : array();
@@ -971,11 +1045,9 @@ class DatabaseMssql extends DatabaseBase {
        }
 
        /**
-        * @private
-        *
         * @param array $options an associative array of options to be turned into
-        *                 an SQL query, valid keys are listed in the function.
-        * @return Array
+        *   an SQL query, valid keys are listed in the function.
+        * @return array
         */
        function makeSelectOptions( $options ) {
                $tailOpts = '';
@@ -1032,11 +1104,11 @@ class DatabaseMssql extends DatabaseBase {
  * @ingroup Database
  */
 class MssqlField implements Field {
-       private $name, $tablename, $default, $max_length, $nullable, $type;
+       private $name, $tableName, $default, $max_length, $nullable, $type;
 
        function __construct( $info ) {
                $this->name = $info['COLUMN_NAME'];
-               $this->tablename = $info['TABLE_NAME'];
+               $this->tableName = $info['TABLE_NAME'];
                $this->default = $info['COLUMN_DEFAULT'];
                $this->max_length = $info['CHARACTER_MAXIMUM_LENGTH'];
                $this->nullable = !( strtolower( $info['IS_NULLABLE'] ) == 'no' );
@@ -1076,7 +1148,21 @@ class MssqlField implements Field {
  * @ingroup Database
  */
 class MssqlResult {
+       /** @var int */
+       private $mCursor;
+
+       /** @var array */
+       private $mRows;
 
+       /** @var bool|int */
+       private $mNumFields;
+
+       /** @var array|bool */
+       private $mFieldMeta;
+
+       /**
+        * @param bool|resource $queryresult
+        */
        public function __construct( $queryresult = false ) {
                $this->mCursor = 0;
                $this->mRows = array();
@@ -1099,6 +1185,11 @@ class MssqlResult {
                sqlsrv_free_stmt( $queryresult );
        }
 
+       /**
+        * @param array $array
+        * @param stdClass $obj
+        * @return stdClass
+        */
        private function array_to_obj( $array, &$obj ) {
                foreach ( $array as $key => $value ) {
                        if ( is_array( $value ) ) {
index e253f91..dc4a67d 100644 (file)
@@ -29,8 +29,8 @@
  */
 class DatabaseMysql extends DatabaseMysqlBase {
        /**
-        * @param $sql string
-        * @return resource
+        * @param string $sql
+        * @return resource False on error
         */
        protected function doQuery( $sql ) {
                if ( $this->bufferResults() ) {
@@ -42,6 +42,11 @@ class DatabaseMysql extends DatabaseMysqlBase {
                return $ret;
        }
 
+       /**
+        * @param string $realServer
+        * @return bool|resource MySQL Database connection or false on failure to connect
+        * @throws DBConnectionError
+        */
        protected function mysqlConnect( $realServer ) {
                # Fail now
                # Otherwise we get a suppressed fatal error, which is very hard to track down
@@ -84,6 +89,7 @@ class DatabaseMysql extends DatabaseMysqlBase {
        }
 
        /**
+        * @param string $charset
         * @return bool
         */
        protected function mysqlSetCharset( $charset ) {
@@ -127,7 +133,7 @@ class DatabaseMysql extends DatabaseMysqlBase {
        }
 
        /**
-        * @param $db
+        * @param string $db
         * @return bool
         */
        function selectDB( $db ) {
@@ -171,6 +177,10 @@ class DatabaseMysql extends DatabaseMysqlBase {
                return mysql_field_name( $res, $n );
        }
 
+       protected function mysqlFieldType( $res, $n ) {
+               return mysql_field_type( $res, $n );
+       }
+
        protected function mysqlDataSeek( $res, $row ) {
                return mysql_data_seek( $res, $row );
        }
index 61b9a17..647a42a 100644 (file)
@@ -33,6 +33,11 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /** @var MysqlMasterPos */
        protected $lastKnownSlavePos;
 
+       /** @var null|int */
+       protected $mFakeSlaveLag = null;
+
+       protected $mFakeMaster = false;
+
        /**
         * @return string
         */
@@ -41,15 +46,15 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $server string
-        * @param $user string
-        * @param $password string
-        * @param $dbName string
+        * @param string $server
+        * @param string $user
+        * @param string $password
+        * @param string $dbName
+        * @throws Exception|DBConnectionError
         * @return bool
-        * @throws DBConnectionError
         */
        function open( $server, $user, $password, $dbName ) {
-               global $wgAllDBsAreLocalhost, $wgDBmysql5, $wgSQLMode;
+               global $wgAllDBsAreLocalhost, $wgSQLMode;
                wfProfileIn( __METHOD__ );
 
                # Debugging hack -- fake cluster
@@ -95,7 +100,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
                        wfProfileOut( __METHOD__ );
 
-                       return $this->reportConnectionError( $error );
+                       $this->reportConnectionError( $error );
                }
 
                if ( $dbName != '' ) {
@@ -109,17 +114,15 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
                                wfProfileOut( __METHOD__ );
 
-                               return $this->reportConnectionError( "Error selecting database $dbName" );
+                               $this->reportConnectionError( "Error selecting database $dbName" );
                        }
                }
 
-               // Tell the server we're communicating with it in UTF-8.
-               // This may engage various charset conversions.
-               if ( $wgDBmysql5 ) {
-                       $this->mysqlSetCharset( 'utf8' );
-               } else {
-                       $this->mysqlSetCharset( 'binary' );
+               // Tell the server what we're communicating with
+               if ( !$this->connectInitCharset() ) {
+                       $this->reportConnectionError( "Error setting character set" );
                }
+
                // Set SQL mode, default is turning them all off, can be overridden or skipped with null
                if ( is_string( $wgSQLMode ) ) {
                        $mode = $this->addQuotes( $wgSQLMode );
@@ -128,7 +131,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                        if ( !$success ) {
                                wfLogDBError( "Error setting sql_mode to $mode on server {$this->mServer}" );
                                wfProfileOut( __METHOD__ );
-                               return $this->reportConnectionError( "Error setting sql_mode to $mode" );
+                               $this->reportConnectionError( "Error setting sql_mode to $mode" );
                        }
                }
 
@@ -138,10 +141,26 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                return true;
        }
 
+       /**
+        * Set the character set information right after connection
+        * @return bool
+        */
+       protected function connectInitCharset() {
+               global $wgDBmysql5;
+
+               if ( $wgDBmysql5 ) {
+                       // Tell the server we're communicating with it in UTF-8.
+                       // This may engage various charset conversions.
+                       return $this->mysqlSetCharset( 'utf8' );
+               } else {
+                       return $this->mysqlSetCharset( 'binary' );
+               }
+       }
+
        /**
         * Open a connection to a MySQL server
         *
-        * @param $realServer string
+        * @param string $realServer
         * @return mixed Raw connection
         * @throws DBConnectionError
         */
@@ -156,7 +175,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        abstract protected function mysqlSetCharset( $charset );
 
        /**
-        * @param $res ResultWrapper
+        * @param ResultWrapper|resource $res
         * @throws DBUnexpectedError
         */
        function freeResult( $res ) {
@@ -174,14 +193,14 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Free result memory
         *
-        * @param $res Raw result
+        * @param resource $res Raw result
         * @return bool
         */
        abstract protected function mysqlFreeResult( $res );
 
        /**
-        * @param $res ResultWrapper
-        * @return object|bool
+        * @param ResultWrapper|resource $res
+        * @return stdClass|bool
         * @throws DBUnexpectedError
         */
        function fetchObject( $res ) {
@@ -210,13 +229,13 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Fetch a result row as an object
         *
-        * @param $res Raw result
+        * @param resource $res Raw result
         * @return stdClass
         */
        abstract protected function mysqlFetchObject( $res );
 
        /**
-        * @param $res ResultWrapper
+        * @param ResultWrapper|resource $res
         * @return array|bool
         * @throws DBUnexpectedError
         */
@@ -246,14 +265,14 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Fetch a result row as an associative and numeric array
         *
-        * @param $res Raw result
+        * @param resource $res Raw result
         * @return array
         */
        abstract protected function mysqlFetchArray( $res );
 
        /**
         * @throws DBUnexpectedError
-        * @param $res ResultWrapper
+        * @param ResultWrapper|resource $res
         * @return int
         */
        function numRows( $res ) {
@@ -275,13 +294,13 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Get number of rows in result
         *
-        * @param $res Raw result
+        * @param resource $res Raw result
         * @return int
         */
        abstract protected function mysqlNumRows( $res );
 
        /**
-        * @param $res ResultWrapper
+        * @param ResultWrapper|resource $res
         * @return int
         */
        function numFields( $res ) {
@@ -295,14 +314,14 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Get number of fields in result
         *
-        * @param $res Raw result
+        * @param resource $res Raw result
         * @return int
         */
        abstract protected function mysqlNumFields( $res );
 
        /**
-        * @param $res ResultWrapper
-        * @param $n string
+        * @param ResultWrapper|resource $res
+        * @param $n int
         * @return string
         */
        function fieldName( $res, $n ) {
@@ -316,15 +335,38 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Get the name of the specified field in a result
         *
-        * @param $res Raw result
+        * @param ResultWrapper|resource $res
         * @param $n int
         * @return string
         */
        abstract protected function mysqlFieldName( $res, $n );
 
        /**
-        * @param $res ResultWrapper
-        * @param $row
+        * mysql_field_type() wrapper
+        * @param ResultWrapper|resource $res
+        * @param $n int
+        * @return string
+        */
+       public function fieldType( $res, $n ) {
+               if ( $res instanceof ResultWrapper ) {
+                       $res = $res->result;
+               }
+
+               return $this->mysqlFieldType( $res, $n );
+       }
+
+       /**
+        * Get the type of the specified field in a result
+        *
+        * @param ResultWrapper|resource $res
+        * @param int $n
+        * @return string
+        */
+       abstract protected function mysqlFieldType( $res, $n );
+
+       /**
+        * @param ResultWrapper|resource $res
+        * @param int $row
         * @return bool
         */
        function dataSeek( $res, $row ) {
@@ -338,8 +380,8 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Move internal result pointer
         *
-        * @param $res Raw result
-        * @param $row int
+        * @param ResultWrapper|resource $res
+        * @param int $row
         * @return bool
         */
        abstract protected function mysqlDataSeek( $res, $row );
@@ -369,16 +411,16 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Returns the text of the error message from previous MySQL operation
         *
-        * @param $conn Raw connection
+        * @param resource $conn Raw connection
         * @return string
         */
        abstract protected function mysqlError( $conn = null );
 
        /**
-        * @param $table string
-        * @param $uniqueIndexes
-        * @param $rows array
-        * @param $fname string
+        * @param string $table
+        * @param array $uniqueIndexes
+        * @param array $rows
+        * @param string $fname
         * @return ResultWrapper
         */
        function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
@@ -390,12 +432,12 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * Returns estimated count, based on EXPLAIN output
         * Takes same arguments as Database::select()
         *
-        * @param $table string|array
-        * @param $vars string|array
-        * @param $conds string|array
-        * @param $fname string
-        * @param $options string|array
-        * @return int
+        * @param string|array $table
+        * @param string|array $vars
+        * @param string|array $conds
+        * @param string $fname
+        * @param string|array $options
+        * @return bool|int
         */
        public function estimateRowCount( $table, $vars = '*', $conds = '',
                $fname = __METHOD__, $options = array()
@@ -418,8 +460,8 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $table string
-        * @param $field string
+        * @param string $table
+        * @param string $field
         * @return bool|MySQLField
         */
        function fieldInfo( $table, $field ) {
@@ -442,8 +484,8 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Get column information from a result
         *
-        * @param $res Raw result
-        * @param $n int
+        * @param resource $res Raw result
+        * @param int $n
         * @return stdClass
         */
        abstract protected function mysqlFetchField( $res, $n );
@@ -452,9 +494,9 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * Get information about an index into an object
         * Returns false if the index does not exist
         *
-        * @param $table string
-        * @param $index string
-        * @param $fname string
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return bool|array|null False or null on failure
         */
        function indexInfo( $table, $index, $fname = __METHOD__ ) {
@@ -483,8 +525,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $s string
-        *
+        * @param string $s
         * @return string
         */
        function strencode( $s ) {
@@ -501,8 +542,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * MySQL uses `backticks` for identifier quoting instead of the sql standard "double quotes".
         *
-        * @param $s string
-        *
+        * @param string $s
         * @return string
         */
        public function addIdentifierQuotes( $s ) {
@@ -512,7 +552,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $name string
+        * @param string $name
         * @return bool
         */
        public function isQuotedIdentifier( $name ) {
@@ -543,6 +583,24 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         */
        abstract protected function mysqlPing();
 
+       /**
+        * Set lag time in seconds for a fake slave
+        *
+        * @param int $lag
+        */
+       public function setFakeSlaveLag( $lag ) {
+               $this->mFakeSlaveLag = $lag;
+       }
+
+       /**
+        * Make this connection a fake master
+        *
+        * @param bool $enabled
+        */
+       public function setFakeMaster( $enabled = true ) {
+               $this->mFakeMaster = $enabled;
+       }
+
        /**
         * Returns slave lag.
         *
@@ -622,11 +680,13 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
        /**
         * Wait for the slave to catch up to a given master position.
-        * @TODO: return values for this and base class are rubbish
+        * @todo Return values for this and base class are rubbish
         *
-        * @param $pos DBMasterPos object
-        * @param $timeout Integer: the maximum number of seconds to wait for synchronisation
-        * @return bool|string
+        * @param DBMasterPos|MySQLMasterPos $pos
+        * @param int $timeout The maximum number of seconds to wait for synchronisation
+        * @return int Zero if the slave was past that position already,
+        *   greater than zero if we waited for some period of time, less than
+        *   zero if we timed out.
         */
        function masterPosWait( DBMasterPos $pos, $timeout ) {
                if ( $this->lastKnownSlavePos && $this->lastKnownSlavePos->hasReached( $pos ) ) {
@@ -638,10 +698,25 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                $this->commit( __METHOD__, 'flush' );
 
                if ( !is_null( $this->mFakeSlaveLag ) ) {
-                       $status = parent::masterPosWait( $pos, $timeout );
-                       wfProfileOut( __METHOD__ );
+                       $wait = intval( ( $pos->pos - microtime( true ) + $this->mFakeSlaveLag ) * 1e6 );
+
+                       if ( $wait > $timeout * 1e6 ) {
+                               wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
+                               wfProfileOut( __METHOD__ );
+
+                               return -1;
+                       } elseif ( $wait > 0 ) {
+                               wfDebug( "Fake slave waiting $wait us\n" );
+                               usleep( $wait );
+                               wfProfileOut( __METHOD__ );
 
-                       return $status;
+                               return 1;
+                       } else {
+                               wfDebug( "Fake slave up to date ($wait us)\n" );
+                               wfProfileOut( __METHOD__ );
+
+                               return 0;
+                       }
                }
 
                # Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
@@ -670,7 +745,10 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         */
        function getSlavePos() {
                if ( !is_null( $this->mFakeSlaveLag ) ) {
-                       return parent::getSlavePos();
+                       $pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
+                       wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
+
+                       return $pos;
                }
 
                $res = $this->query( 'SHOW SLAVE STATUS', 'DatabaseBase::getSlavePos' );
@@ -694,7 +772,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         */
        function getMasterPos() {
                if ( $this->mFakeMaster ) {
-                       return parent::getMasterPos();
+                       return new MySQLMasterPos( 'fake', microtime( true ) );
                }
 
                $res = $this->query( 'SHOW MASTER STATUS', 'DatabaseBase::getMasterPos' );
@@ -708,7 +786,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $index
+        * @param string $index
         * @return string
         */
        function useIndexClause( $index ) {
@@ -726,11 +804,18 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * @return string
         */
        public function getSoftwareLink() {
-               return '[http://www.mysql.com/ MySQL]';
+               $version = $this->getServerVersion();
+               if ( strpos( $version, 'MariaDB' ) !== false ) {
+                       return '[{{int:version-db-mariadb-url}} MariaDB]';
+               } elseif ( strpos( $version, 'percona' ) !== false ) {
+                       return '[{{int:version-db-percona-url}} Percona Server]';
+               } else {
+                       return '[{{int:version-db-mysql-url}} MySQL]';
+               }
        }
 
        /**
-        * @param $options array
+        * @param array $options
         */
        public function setSessionOptions( array $options ) {
                if ( isset( $options['connTimeout'] ) ) {
@@ -740,6 +825,11 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
                }
        }
 
+       /**
+        * @param string $sql
+        * @param string $newLine
+        * @return bool
+        */
        public function streamStatementEnd( &$sql, &$newLine ) {
                if ( strtoupper( substr( $newLine, 0, 9 ) ) == 'DELIMITER' ) {
                        preg_match( '/^DELIMITER\s+(\S+)/', $newLine, $m );
@@ -755,7 +845,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         *
         * @param string $lockName name of lock to poll
         * @param string $method name of method calling us
-        * @return Boolean
+        * @return bool
         * @since 1.20
         */
        public function lockIsFree( $lockName, $method ) {
@@ -767,9 +857,9 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $lockName string
-        * @param $method string
-        * @param $timeout int
+        * @param string $lockName
+        * @param string $method
+        * @param int $timeout
         * @return bool
         */
        public function lock( $lockName, $method, $timeout = 5 ) {
@@ -789,8 +879,8 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * FROM MYSQL DOCS:
         * http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_release-lock
-        * @param $lockName string
-        * @param $method string
+        * @param string $lockName
+        * @param string $method
         * @return bool
         */
        public function unlock( $lockName, $method ) {
@@ -802,10 +892,10 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $read array
-        * @param $write array
-        * @param $method string
-        * @param $lowPriority bool
+        * @param array $read
+        * @param array $write
+        * @param string $method
+        * @param bool $lowPriority
         * @return bool
         */
        public function lockTables( $read, $write, $method, $lowPriority = true ) {
@@ -827,7 +917,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $method string
+        * @param string $method
         * @return bool
         */
        public function unlockTables( $method ) {
@@ -840,7 +930,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * Get search engine class. All subclasses of this
         * need to implement this if they wish to use searching.
         *
-        * @return String
+        * @return string
         */
        public function getSearchEngine() {
                return 'SearchMySQL';
@@ -848,7 +938,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
 
        /**
         * @param bool $value
-        * @return mixed
+        * @return mixed null|bool|ResultWrapper
         */
        public function setBigSelects( $value = true ) {
                if ( $value === 'default' ) {
@@ -898,11 +988,10 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
         * @param array $uniqueIndexes
         * @param array $set
         * @param string $fname
-        * @param array $options
         * @return bool
         */
-       public function upsert(
-               $table, array $rows, array $uniqueIndexes, array $set, $fname = __METHOD__
+       public function upsert( $table, array $rows, array $uniqueIndexes,
+               array $set, $fname = __METHOD__
        ) {
                if ( !count( $rows ) ) {
                        return true; // nothing to do
@@ -973,24 +1062,26 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        }
 
        /**
-        * @param $oldName
-        * @param $newName
-        * @param $temporary bool
-        * @param $fname string
+        * @param string $oldName
+        * @param string $newName
+        * @param bool $temporary
+        * @param string $fname
+        * @return bool
         */
        function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
                $tmp = $temporary ? 'TEMPORARY ' : '';
                $newName = $this->addIdentifierQuotes( $newName );
                $oldName = $this->addIdentifierQuotes( $oldName );
                $query = "CREATE $tmp TABLE $newName (LIKE $oldName)";
-               $this->query( $query, $fname );
+
+               return $this->query( $query, $fname );
        }
 
        /**
         * List all tables on the database
         *
         * @param string $prefix Only show tables with this prefix, e.g. mw_
-        * @param string $fname calling function name
+        * @param string $fname Calling function name
         * @return array
         */
        function listTables( $prefix = null, $fname = __METHOD__ ) {
@@ -1041,7 +1132,7 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Get status information from SHOW STATUS in an associative array
         *
-        * @param $which string
+        * @param string $which
         * @return array
         */
        function getMysqlStatus( $which = "%" ) {
@@ -1097,7 +1188,8 @@ abstract class DatabaseMysqlBase extends DatabaseBase {
        /**
         * Differentiates between a TABLE and a VIEW.
         *
-        * @param $name string: Name of the TABLE/VIEW to test
+        * @param string $name Name of the TABLE/VIEW to test
+        * @param string $prefix
         * @return bool
         * @since 1.22
         */
@@ -1180,7 +1272,11 @@ class MySQLField implements Field {
 }
 
 class MySQLMasterPos implements DBMasterPos {
-       var $file, $pos;
+       /** @var string */
+       public $file;
+
+       /** @var int timestamp */
+       public $pos;
 
        function __construct( $file, $pos ) {
                $this->file = $file;
index 9f18da3..d41f3e4 100644 (file)
@@ -30,7 +30,7 @@
  */
 class DatabaseMysqli extends DatabaseMysqlBase {
        /**
-        * @param $sql string
+        * @param string $sql
         * @return resource
         */
        protected function doQuery( $sql ) {
@@ -43,7 +43,13 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                return $ret;
        }
 
+       /**
+        * @param string $realServer
+        * @return bool|mysqli
+        * @throws DBConnectionError
+        */
        protected function mysqlConnect( $realServer ) {
+               global $wgDBmysql5;
                # Fail now
                # Otherwise we get a suppressed fatal error, which is very hard to track down
                if ( !function_exists( 'mysqli_init' ) ) {
@@ -63,8 +69,15 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                }
 
                $mysqli = mysqli_init();
-               $numAttempts = 2;
+               if ( $wgDBmysql5 ) {
+                       // Tell the server we're communicating with it in UTF-8.
+                       // This may engage various charset conversions.
+                       $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'utf8' );
+               } else {
+                       $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'binary' );
+               }
 
+               $numAttempts = 2;
                for ( $i = 0; $i < $numAttempts; $i++ ) {
                        if ( $i > 1 ) {
                                usleep( 1000 );
@@ -79,7 +92,13 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                return false;
        }
 
+       protected function connectInitCharset() {
+               // already done in mysqlConnect()
+               return true;
+       }
+
        /**
+        * @param string $charset
         * @return bool
         */
        protected function mysqlSetCharset( $charset ) {
@@ -123,7 +142,7 @@ class DatabaseMysqli extends DatabaseMysqlBase {
        }
 
        /**
-        * @param $db
+        * @param string $db
         * @return bool
         */
        function selectDB( $db ) {
@@ -139,12 +158,20 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                return $this->mConn->server_info;
        }
 
+       /**
+        * @param mysqli $res
+        * @return bool
+        */
        protected function mysqlFreeResult( $res ) {
                $res->free_result();
 
                return true;
        }
 
+       /**
+        * @param mysqli $res
+        * @return bool
+        */
        protected function mysqlFetchObject( $res ) {
                $object = $res->fetch_object();
                if ( $object === null ) {
@@ -154,6 +181,10 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                return $object;
        }
 
+       /**
+        * @param mysqli $res
+        * @return bool
+        */
        protected function mysqlFetchArray( $res ) {
                $array = $res->fetch_array();
                if ( $array === null ) {
@@ -163,14 +194,27 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                return $array;
        }
 
+       /**
+        * @param mysqli $res
+        * @return mixed
+        */
        protected function mysqlNumRows( $res ) {
                return $res->num_rows;
        }
 
+       /**
+        * @param mysqli $res
+        * @return mixed
+        */
        protected function mysqlNumFields( $res ) {
                return $res->field_count;
        }
 
+       /**
+        * @param mysqli $res
+        * @param int $n
+        * @return mixed
+        */
        protected function mysqlFetchField( $res, $n ) {
                $field = $res->fetch_field_direct( $n );
                $field->not_null = $field->flags & MYSQLI_NOT_NULL_FLAG;
@@ -182,16 +226,40 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                return $field;
        }
 
+       /**
+        * @param resource|ResultWrapper $res
+        * @param int $n
+        * @return mixed
+        */
        protected function mysqlFieldName( $res, $n ) {
                $field = $res->fetch_field_direct( $n );
 
                return $field->name;
        }
 
+       /**
+        * @param resource|ResultWrapper $res
+        * @param int $n
+        * @return mixed
+        */
+       protected function mysqlFieldType( $res, $n ) {
+               $field = $res->fetch_field_direct( $n );
+               return $field->type;
+       }
+
+       /**
+        * @param resource|ResultWrapper $res
+        * @param int $row
+        * @return mixed
+        */
        protected function mysqlDataSeek( $res, $row ) {
                return $res->data_seek( $row );
        }
 
+       /**
+        * @param mysqli $conn Optional connection object
+        * @return string
+        */
        protected function mysqlError( $conn = null ) {
                if ( $conn === null ) {
                        return mysqli_connect_error();
@@ -200,6 +268,11 @@ class DatabaseMysqli extends DatabaseMysqlBase {
                }
        }
 
+       /**
+        * Escapes special characters in a string for use in an SQL statement
+        * @param string $s
+        * @return string
+        */
        protected function mysqlRealEscapeString( $s ) {
                return $this->mConn->real_escape_string( $s );
        }
index 10715e4..d304444 100644 (file)
@@ -50,8 +50,8 @@ class ORAResult {
        }
 
        /**
-        * @param $db DatabaseBase
-        * @param $stmt
+        * @param DatabaseBase $db
+        * @param resource $stmt A valid OCI statement identifier
         * @param bool $unique
         */
        function __construct( &$db, $stmt, $unique = false ) {
@@ -186,18 +186,26 @@ class ORAField implements Field {
  * @ingroup Database
  */
 class DatabaseOracle extends DatabaseBase {
-       var $mInsertId = null;
-       var $mLastResult = null;
-       var $lastResult = null;
-       var $cursor = 0;
-       var $mAffectedRows;
+       /** @var resource */
+       protected $mLastResult = null;
 
-       var $ignore_DUP_VAL_ON_INDEX = false;
-       var $sequenceData = null;
+       /** @var int The number of rows affected as an integer */
+       protected $mAffectedRows;
 
-       var $defaultCharset = 'AL32UTF8';
+       /** @var int */
+       private $mInsertId = null;
 
-       var $mFieldInfoCache = array();
+       /** @var bool */
+       private $ignoreDupValOnIndex = false;
+
+       /** @var bool|array */
+       private $sequenceData = null;
+
+       /** @var string Character set for Oracle database */
+       private $defaultCharset = 'AL32UTF8';
+
+       /** @var array */
+       private $mFieldInfoCache = array();
 
        function __construct( $p = null ) {
                global $wgDBprefix;
@@ -302,7 +310,7 @@ class DatabaseOracle extends DatabaseBase {
                }
 
                if ( !strlen( $user ) ) { # e.g. the class is being loaded
-                       return;
+                       return null;
                }
 
                if ( $wgDBOracleDRCP ) {
@@ -409,7 +417,7 @@ class DatabaseOracle extends DatabaseBase {
 
                if ( !oci_execute( $stmt, $this->execFlags() ) ) {
                        $e = oci_error( $stmt );
-                       if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+                       if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
 
                                return false;
@@ -434,6 +442,10 @@ class DatabaseOracle extends DatabaseBase {
                return $this->query( $sql, $fname, true );
        }
 
+       /**
+        * Frees resources associated with the LOB descriptor
+        * @param ResultWrapper|resource $res
+        */
        function freeResult( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -442,6 +454,10 @@ class DatabaseOracle extends DatabaseBase {
                $res->free();
        }
 
+       /**
+        * @param ResultWrapper|stdClass $res
+        * @return mixed
+        */
        function fetchObject( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -480,12 +496,16 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * This must be called after nextSequenceVal
-        * @return null
+        * @return null|int
         */
        function insertId() {
                return $this->mInsertId;
        }
 
+       /**
+        * @param mixed $res
+        * @param int $row
+        */
        function dataSeek( $res, $row ) {
                if ( $res instanceof ORAResult ) {
                        $res->seek( $row );
@@ -521,6 +541,9 @@ class DatabaseOracle extends DatabaseBase {
        /**
         * Returns information about an index
         * If errors are explicitly ignored, returns NULL on failure
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return bool
         */
        function indexInfo( $table, $index, $fname = __METHOD__ ) {
@@ -541,7 +564,7 @@ class DatabaseOracle extends DatabaseBase {
                }
 
                if ( in_array( 'IGNORE', $options ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = true;
+                       $this->ignoreDupValOnIndex = true;
                }
 
                if ( !is_array( reset( $a ) ) ) {
@@ -554,7 +577,7 @@ class DatabaseOracle extends DatabaseBase {
                $retVal = true;
 
                if ( in_array( 'IGNORE', $options ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = false;
+                       $this->ignoreDupValOnIndex = false;
                }
 
                return $retVal;
@@ -595,6 +618,13 @@ class DatabaseOracle extends DatabaseBase {
                return $bind;
        }
 
+       /**
+        * @param string $table
+        * @param $row
+        * @param string $fname
+        * @return bool
+        * @throws DBUnexpectedError
+        */
        private function insertOneRow( $table, $row, $fname ) {
                global $wgContLang;
 
@@ -646,6 +676,7 @@ class DatabaseOracle extends DatabaseBase {
                                        return false;
                                }
                        } else {
+                               /** @var OCI_Lob[] $lob */
                                if ( ( $lob[$col] = oci_new_descriptor( $this->mConn, OCI_D_LOB ) ) === false ) {
                                        $e = oci_error( $stmt );
                                        throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
@@ -669,7 +700,7 @@ class DatabaseOracle extends DatabaseBase {
 
                if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
                        $e = oci_error( $stmt );
-                       if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+                       if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
 
                                return false;
@@ -692,7 +723,7 @@ class DatabaseOracle extends DatabaseBase {
                        oci_commit( $this->mConn );
                }
 
-               oci_free_statement( $stmt );
+               return oci_free_statement( $stmt );
        }
 
        function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
@@ -730,13 +761,13 @@ class DatabaseOracle extends DatabaseBase {
                $sql .= " $tailOpts";
 
                if ( in_array( 'IGNORE', $insertOptions ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = true;
+                       $this->ignoreDupValOnIndex = true;
                }
 
                $retval = $this->query( $sql, $fname );
 
                if ( in_array( 'IGNORE', $insertOptions ) ) {
-                       $this->ignore_DUP_VAL_ON_INDEX = false;
+                       $this->ignoreDupValOnIndex = false;
                }
 
                return $retval;
@@ -768,7 +799,9 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * Return the next in a sequence, save the value for retrieval via insertId()
-        * @return null
+        *
+        * @param string $seqName
+        * @return null|int
         */
        function nextSequenceValue( $seqName ) {
                $res = $this->query( "SELECT $seqName.nextval FROM dual" );
@@ -780,6 +813,8 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * Return sequence_name if table has a sequence
+        *
+        * @param string $table
         * @return bool
         */
        private function getSequenceData( $table ) {
@@ -810,7 +845,13 @@ class DatabaseOracle extends DatabaseBase {
                return ( isset( $this->sequenceData[$table] ) ) ? $this->sequenceData[$table] : false;
        }
 
-       # Returns the size of a text field, or -1 for "unlimited"
+       /**
+        * Returns the size of a text field, or -1 for "unlimited"
+        *
+        * @param string $table
+        * @param string $field
+        * @return mixed
+        */
        function textFieldSize( $table, $field ) {
                $fieldInfoData = $this->fieldInfo( $table, $field );
 
@@ -904,6 +945,10 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * Return aggregated value function call
+        *
+        * @param $valuedata
+        * @param string $valuename
+        * @return mixed
         */
        public function aggregateValue( $valuedata, $valuename = 'value' ) {
                return $valuedata;
@@ -927,7 +972,7 @@ class DatabaseOracle extends DatabaseBase {
         * @return string wikitext of a link to the server software's web site
         */
        public function getSoftwareLink() {
-               return '[http://www.oracle.com/ Oracle]';
+               return '[{{int:version-db-oracle-url}} Oracle]';
        }
 
        /**
@@ -948,6 +993,9 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * Query whether a given index exists
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return bool
         */
        function indexExists( $table, $index, $fname = __METHOD__ ) {
@@ -969,6 +1017,8 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * Query whether a given table exists (in the given schema, or the default mw one if not given)
+        * @param string $table
+        * @param string $fname
         * @return bool
         */
        function tableExists( $table, $fname = __METHOD__ ) {
@@ -994,8 +1044,8 @@ class DatabaseOracle extends DatabaseBase {
         * For internal calls. Use fieldInfo for normal usage.
         * Returns false if the field doesn't exist
         *
-        * @param $table Array
-        * @param $field String
+        * @param array|string $table
+        * @param string $field
         * @return ORAField|ORAResult
         */
        private function fieldInfoMulti( $table, $field ) {
@@ -1052,8 +1102,8 @@ class DatabaseOracle extends DatabaseBase {
 
        /**
         * @throws DBUnexpectedError
-        * @param  $table
-        * @param  $field
+        * @param  string $table
+        * @param  string $field
         * @return ORAField
         */
        function fieldInfo( $table, $field ) {
@@ -1088,7 +1138,16 @@ class DatabaseOracle extends DatabaseBase {
                }
        }
 
-       /* defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}'; */
+       /**
+        * defines must comply with ^define\s*([^\s=]*)\s*=\s?'\{\$([^\}]*)\}';
+        *
+        * @param resource $fp
+        * @param bool|string $lineCallback
+        * @param bool|callable $resultCallback
+        * @param string $fname
+        * @param bool|callable $inputCallback
+        * @return bool|string
+        */
        function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
                $fname = __METHOD__, $inputCallback = false ) {
                $cmd = '';
@@ -1263,10 +1322,8 @@ class DatabaseOracle extends DatabaseBase {
         * Returns an optional USE INDEX clause to go after the table, and a
         * string to go at the end of the query
         *
-        * @private
-        *
-        * @param array $options an associative array of options to be turned into
-        *              an SQL query, valid keys are listed in the function.
+        * @param array $options An associative array of options to be turned into
+        *   an SQL query, valid keys are listed in the function.
         * @return array
         */
        function makeSelectOptions( $options ) {
@@ -1335,6 +1392,15 @@ class DatabaseOracle extends DatabaseBase {
                return parent::delete( $table, $conds, $fname );
        }
 
+       /**
+        * @param string $table
+        * @param array $values
+        * @param array $conds
+        * @param string $fname
+        * @param array $options
+        * @return bool
+        * @throws DBUnexpectedError
+        */
        function update( $table, $values, $conds, $fname = __METHOD__, $options = array() ) {
                global $wgContLang;
 
@@ -1388,6 +1454,7 @@ class DatabaseOracle extends DatabaseBase {
                                        return false;
                                }
                        } else {
+                               /** @var OCI_Lob[] $lob */
                                if ( ( $lob[$col] = oci_new_descriptor( $this->mConn, OCI_D_LOB ) ) === false ) {
                                        $e = oci_error( $stmt );
                                        throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
@@ -1407,7 +1474,7 @@ class DatabaseOracle extends DatabaseBase {
 
                if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
                        $e = oci_error( $stmt );
-                       if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+                       if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
                                $this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
 
                                return false;
@@ -1430,7 +1497,7 @@ class DatabaseOracle extends DatabaseBase {
                        oci_commit( $this->mConn );
                }
 
-               oci_free_statement( $stmt );
+               return oci_free_statement( $stmt );
        }
 
        function bitNot( $field ) {
@@ -1446,9 +1513,6 @@ class DatabaseOracle extends DatabaseBase {
                return 'BITOR(' . $fieldLeft . ', ' . $fieldRight . ')';
        }
 
-       function setFakeMaster( $enabled = true ) {
-       }
-
        function getDBname() {
                return $this->mDBname;
        }
@@ -1472,4 +1536,4 @@ class DatabaseOracle extends DatabaseBase {
        public function getInfinity() {
                return '31-12-2030 12:00:00.000000';
        }
-} // end DatabaseOracle class
+}
index cfa2074..83d8cae 100644 (file)
@@ -26,9 +26,9 @@ class PostgresField implements Field {
                $has_default, $default;
 
        /**
-        * @param $db DatabaseBase
-        * @param  $table
-        * @param  $field
+        * @param DatabaseBase $db
+        * @param string $table
+        * @param string $field
         * @return null|PostgresField
         */
        static function fromText( $db, $table, $field ) {
@@ -135,8 +135,7 @@ SQL;
  * @ingroup Database
  */
 class PostgresTransactionState {
-
-       static $WATCHED = array(
+       private static $WATCHED = array(
                array(
                        "desc" => "%s: Connection state changed from %s -> %s\n",
                        "states" => array(
@@ -156,6 +155,12 @@ class PostgresTransactionState {
                )
        );
 
+       /** @var array */
+       private $mNewState;
+
+       /** @var array */
+       private $mCurrentState;
+
        public function __construct( $conn ) {
                $this->mConn = $conn;
                $this->update();
@@ -211,13 +216,15 @@ class PostgresTransactionState {
  * @since 1.19
  */
 class SavepointPostgres {
-       /**
-        * Establish a savepoint within a transaction
-        */
+       /** @var DatabaseBase Establish a savepoint within a transaction */
        protected $dbw;
        protected $id;
        protected $didbegin;
 
+       /**
+        * @param DatabaseBase $dbw
+        * @param $id
+        */
        public function __construct( $dbw, $id ) {
                $this->dbw = $dbw;
                $this->id = $id;
@@ -284,10 +291,26 @@ class SavepointPostgres {
  * @ingroup Database
  */
 class DatabasePostgres extends DatabaseBase {
-       var $mInsertId = null;
-       var $mLastResult = null;
-       var $numeric_version = null;
-       var $mAffectedRows = null;
+       /** @var resource */
+       protected $mLastResult = null;
+
+       /** @var int The number of rows affected as an integer */
+       protected $mAffectedRows = null;
+
+       /** @var int */
+       private $mInsertId = null;
+
+       /** @var float|string */
+       private $numericVersion = null;
+
+       /** @var string Connect string to open a PostgreSQL connection */
+       private $connectString;
+
+       /** @var PostgresTransactionState */
+       private $mTransactionState;
+
+       /** @var string */
+       private $mCoreSchema;
 
        function getType() {
                return 'postgres';
@@ -341,7 +364,7 @@ class DatabasePostgres extends DatabaseBase {
         * @param string $user
         * @param string $password
         * @param string $dbName
-        * @throws DBConnectionError
+        * @throws DBConnectionError|Exception
         * @return DatabaseBase|null
         */
        function open( $server, $user, $password, $dbName ) {
@@ -358,7 +381,7 @@ class DatabasePostgres extends DatabaseBase {
                global $wgDBport;
 
                if ( !strlen( $user ) ) { # e.g. the class is being loaded
-                       return;
+                       return null;
                }
 
                $this->mServer = $server;
@@ -429,7 +452,8 @@ class DatabasePostgres extends DatabaseBase {
        /**
         * Postgres doesn't support selectDB in the same way MySQL does. So if the
         * DB name doesn't match the open connection, open a new one
-        * @return
+        * @param string $db
+        * @return bool
         */
        function selectDB( $db ) {
                if ( $this->mDBname !== $db ) {
@@ -515,6 +539,10 @@ class DatabasePostgres extends DatabaseBase {
                return $this->query( $sql, $fname, true );
        }
 
+       /**
+        * @param stdClass|ResultWrapper $res
+        * @throws DBUnexpectedError
+        */
        function freeResult( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -527,6 +555,11 @@ class DatabasePostgres extends DatabaseBase {
                }
        }
 
+       /**
+        * @param ResultWrapper|stdClass $res
+        * @return stdClass
+        * @throws DBUnexpectedError
+        */
        function fetchObject( $res ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -602,12 +635,17 @@ class DatabasePostgres extends DatabaseBase {
         * Return the result of the last call to nextSequenceValue();
         * This must be called after nextSequenceValue().
         *
-        * @return integer|null
+        * @return int|null
         */
        function insertId() {
                return $this->mInsertId;
        }
 
+       /**
+        * @param mixed $res
+        * @param int $row
+        * @return bool
+        */
        function dataSeek( $res, $row ) {
                if ( $res instanceof ResultWrapper ) {
                        $res = $res->result;
@@ -654,6 +692,12 @@ class DatabasePostgres extends DatabaseBase {
         * This is not necessarily an accurate estimate, so use sparingly
         * Returns -1 if count cannot be found
         * Takes same arguments as Database::select()
+        *
+        * @param string $table
+        * @param string $vars
+        * @param string $conds
+        * @param string $fname
+        * @param array $options
         * @return int
         */
        function estimateRowCount( $table, $vars = '*', $conds = '',
@@ -676,6 +720,10 @@ class DatabasePostgres extends DatabaseBase {
        /**
         * Returns information about an index
         * If errors are explicitly ignored, returns NULL on failure
+        *
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return bool|null
         */
        function indexInfo( $table, $index, $fname = __METHOD__ ) {
@@ -697,7 +745,9 @@ class DatabasePostgres extends DatabaseBase {
         * Returns is of attributes used in index
         *
         * @since 1.19
-        * @return Array
+        * @param string $index
+        * @param bool|string $schema
+        * @return array
         */
        function indexAttributes( $index, $schema = false ) {
                if ( $schema === false ) {
@@ -765,11 +815,31 @@ __INDEXATTR__;
                if ( !$res ) {
                        return null;
                }
-               foreach ( $res as $row ) {
-                       return true;
+
+               return $res->numRows() > 0;
+       }
+
+       /**
+        * Change the FOR UPDATE option as necessary based on the join conditions. Then pass
+        * to the parent function to get the actual SQL text.
+        *
+        * In Postgres when using FOR UPDATE, only the main table and tables that are inner joined
+        * can be locked. That means tables in an outer join cannot be FOR UPDATE locked. Trying to do
+        * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly.
+        */
+       function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) {
+               $forUpdateKey = array_search( 'FOR UPDATE', $options );
+               if ( $forUpdateKey !== false && $join_conds ) {
+                       unset( $options[$forUpdateKey] );
+
+                       foreach ( $join_conds as $table => $join_cond ) {
+                               if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) {
+                                       $options['FOR UPDATE'][] = $table;
+                               }
+                       }
                }
 
-               return false;
+               return parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
        }
 
        /**
@@ -778,11 +848,10 @@ __INDEXATTR__;
         * $args may be a single associative array, or an array of these with numeric keys,
         * for multi-row insert (Postgres version 8.2 and above only).
         *
-        * @param $table   String: Name of the table to insert to.
-        * @param $args    Array: Items to insert into the table.
-        * @param $fname   String: Name of the function, for profiling
-        * @param string $options or Array. Valid options: IGNORE
-        *
+        * @param string $table Name of the table to insert to.
+        * @param array $args Items to insert into the table.
+        * @param string $fname Name of the function, for profiling
+        * @param array|string $options String or array. Valid options: IGNORE
         * @return bool Success of insert operation. IGNORE always returns true.
         */
        function insert( $table, $args, $fname = __METHOD__, $options = array() ) {
@@ -791,7 +860,7 @@ __INDEXATTR__;
                }
 
                $table = $this->tableName( $table );
-               if ( !isset( $this->numeric_version ) ) {
+               if ( !isset( $this->numericVersion ) ) {
                        $this->getServerVersion();
                }
 
@@ -820,7 +889,7 @@ __INDEXATTR__;
                $sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
 
                if ( $multi ) {
-                       if ( $this->numeric_version >= 8.2 && !$savepoint ) {
+                       if ( $this->numericVersion >= 8.2 && !$savepoint ) {
                                $first = true;
                                foreach ( $args as $row ) {
                                        if ( $first ) {
@@ -880,7 +949,7 @@ __INDEXATTR__;
                        }
                }
                if ( $savepoint ) {
-                       $olde = error_reporting( $olde );
+                       error_reporting( $olde );
                        $savepoint->commit();
 
                        // Set the affected row count for the whole operation
@@ -901,6 +970,14 @@ __INDEXATTR__;
         * $conds may be "*" to copy the whole table
         * srcTable may be an array of tables.
         * @todo FIXME: Implement this a little better (seperate select/insert)?
+        *
+        * @param string $destTable
+        * @param array|string $srcTable
+        * @param array $varMap
+        * @param array $conds
+        * @param string $fname
+        * @param array $insertOptions
+        * @param array $selectOptions
         * @return bool
         */
        function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = __METHOD__,
@@ -952,7 +1029,7 @@ __INDEXATTR__;
                                $savepoint->release();
                                $numrowsinserted++;
                        }
-                       $olde = error_reporting( $olde );
+                       error_reporting( $olde );
                        $savepoint->commit();
 
                        // Set the affected row count for the whole operation
@@ -984,7 +1061,9 @@ __INDEXATTR__;
 
        /**
         * Return the next in a sequence, save the value for retrieval via insertId()
-        * @return null
+        * 
+        * @param string $seqName
+        * @return int|null
         */
        function nextSequenceValue( $seqName ) {
                $safeseq = str_replace( "'", "''", $seqName );
@@ -997,7 +1076,9 @@ __INDEXATTR__;
 
        /**
         * Return the current value of a sequence. Assumes it has been nextval'ed in this session.
-        * @return
+        *
+        * @param string $seqName
+        * @return int
         */
        function currentSequenceValue( $seqName ) {
                $safeseq = str_replace( "'", "''", $seqName );
@@ -1074,10 +1155,10 @@ __INDEXATTR__;
         * This should really be handled by PHP PostgreSQL module
         *
         * @since 1.19
-        * @param $text   string: postgreql array returned in a text form like {a,b}
-        * @param $output string
-        * @param $limit  int
-        * @param $offset int
+        * @param string $text Postgreql array returned in a text form like {a,b}
+        * @param string $output
+        * @param int $limit
+        * @param int $offset
         * @return string
         */
        function pg_array_parse( $text, &$output, $limit = false, $offset = 1 ) {
@@ -1115,10 +1196,10 @@ __INDEXATTR__;
        }
 
        /**
-        * @return string wikitext of a link to the server software's web site
+        * @return string Wikitext of a link to the server software's web site
         */
        public function getSoftwareLink() {
-               return '[http://www.postgresql.org/ PostgreSQL]';
+               return '[{{int:version-db-postgres-url}} PostgreSQL]';
        }
 
        /**
@@ -1126,7 +1207,7 @@ __INDEXATTR__;
         * Needs transaction
         *
         * @since 1.19
-        * @return string return default schema for the current session
+        * @return string Default schema for the current session
         */
        function getCurrentSchema() {
                $res = $this->query( "SELECT current_schema()", __METHOD__ );
@@ -1162,7 +1243,7 @@ __INDEXATTR__;
         * Needs transaction
         *
         * @since 1.19
-        * @return array how to search for table names schemas for the current user
+        * @return array How to search for table names schemas for the current user
         */
        function getSearchPath() {
                $res = $this->query( "SHOW search_path", __METHOD__ );
@@ -1195,14 +1276,15 @@ __INDEXATTR__;
         * This will be also called by the installer after the schema is created
         *
         * @since 1.19
-        * @param $desired_schema string
+        *
+        * @param string $desiredSchema
         */
-       function determineCoreSchema( $desired_schema ) {
+       function determineCoreSchema( $desiredSchema ) {
                $this->begin( __METHOD__ );
-               if ( $this->schemaExists( $desired_schema ) ) {
-                       if ( in_array( $desired_schema, $this->getSchemas() ) ) {
-                               $this->mCoreSchema = $desired_schema;
-                               wfDebug( "Schema \"" . $desired_schema . "\" already in the search path\n" );
+               if ( $this->schemaExists( $desiredSchema ) ) {
+                       if ( in_array( $desiredSchema, $this->getSchemas() ) ) {
+                               $this->mCoreSchema = $desiredSchema;
+                               wfDebug( "Schema \"" . $desiredSchema . "\" already in the search path\n" );
                        } else {
                                /**
                                 * Prepend our schema (e.g. 'mediawiki') in front
@@ -1211,14 +1293,14 @@ __INDEXATTR__;
                                 */
                                $search_path = $this->getSearchPath();
                                array_unshift( $search_path,
-                                       $this->addIdentifierQuotes( $desired_schema ) );
+                                       $this->addIdentifierQuotes( $desiredSchema ) );
                                $this->setSearchPath( $search_path );
-                               $this->mCoreSchema = $desired_schema;
-                               wfDebug( "Schema \"" . $desired_schema . "\" added to the search path\n" );
+                               $this->mCoreSchema = $desiredSchema;
+                               wfDebug( "Schema \"" . $desiredSchema . "\" added to the search path\n" );
                        }
                } else {
                        $this->mCoreSchema = $this->getCurrentSchema();
-                       wfDebug( "Schema \"" . $desired_schema . "\" not found, using current \"" .
+                       wfDebug( "Schema \"" . $desiredSchema . "\" not found, using current \"" .
                                $this->mCoreSchema . "\"\n" );
                }
                /* Commit SET otherwise it will be rollbacked on error or IGNORE SELECT */
@@ -1239,26 +1321,29 @@ __INDEXATTR__;
         * @return string Version information from the database
         */
        function getServerVersion() {
-               if ( !isset( $this->numeric_version ) ) {
+               if ( !isset( $this->numericVersion ) ) {
                        $versionInfo = pg_version( $this->mConn );
                        if ( version_compare( $versionInfo['client'], '7.4.0', 'lt' ) ) {
                                // Old client, abort install
-                               $this->numeric_version = '7.3 or earlier';
+                               $this->numericVersion = '7.3 or earlier';
                        } elseif ( isset( $versionInfo['server'] ) ) {
                                // Normal client
-                               $this->numeric_version = $versionInfo['server'];
+                               $this->numericVersion = $versionInfo['server'];
                        } else {
                                // Bug 16937: broken pgsql extension from PHP<5.3
-                               $this->numeric_version = pg_parameter_status( $this->mConn, 'server_version' );
+                               $this->numericVersion = pg_parameter_status( $this->mConn, 'server_version' );
                        }
                }
 
-               return $this->numeric_version;
+               return $this->numericVersion;
        }
 
        /**
         * Query whether a given relation exists (in the given schema, or the
         * default mw one if not given)
+        * @param string $table
+        * @param array|string $types
+        * @param bool|string $schema
         * @return bool
         */
        function relationExists( $table, $types, $schema = false ) {
@@ -1283,6 +1368,9 @@ __INDEXATTR__;
        /**
         * For backward compatibility, this function checks both tables and
         * views.
+        * @param string $table
+        * @param string $fname
+        * @param bool|string $schema
         * @return bool
         */
        function tableExists( $table, $fname = __METHOD__, $schema = false ) {
@@ -1346,6 +1434,7 @@ SQL;
 
        /**
         * Query whether a given schema exists. Returns true if it does, false if it doesn't.
+        * @param string $schema
         * @return bool
         */
        function schemaExists( $schema ) {
@@ -1357,6 +1446,7 @@ SQL;
 
        /**
         * Returns true if a given role (i.e. user) exists, false otherwise.
+        * @param string $roleName
         * @return bool
         */
        function roleExists( $roleName ) {
@@ -1372,6 +1462,8 @@ SQL;
 
        /**
         * pg_field_type() wrapper
+        * @param ResultWrapper|resource $res ResultWrapper or PostgreSQL query result resource
+        * @param int $index Field number, starting from 0
         * @return string
         */
        function fieldType( $res, $index ) {
@@ -1383,7 +1475,7 @@ SQL;
        }
 
        /**
-        * @param $b
+        * @param string $b
         * @return Blob
         */
        function encodeBlob( $b ) {
@@ -1403,7 +1495,7 @@ SQL;
        }
 
        /**
-        * @param $s null|bool|Blob
+        * @param null|bool|Blob $s
         * @return int|string
         */
        function addQuotes( $s ) {
@@ -1422,21 +1514,18 @@ SQL;
         * Postgres specific version of replaceVars.
         * Calls the parent version in Database.php
         *
-        * @private
-        *
         * @param string $ins SQL string, read from a stream (usually tables.sql)
-        *
         * @return string SQL string
         */
        protected function replaceVars( $ins ) {
                $ins = parent::replaceVars( $ins );
 
-               if ( $this->numeric_version >= 8.3 ) {
+               if ( $this->numericVersion >= 8.3 ) {
                        // Thanks for not providing backwards-compatibility, 8.3
                        $ins = preg_replace( "/to_tsvector\s*\(\s*'default'\s*,/", 'to_tsvector(', $ins );
                }
 
-               if ( $this->numeric_version <= 8.1 ) { // Our minimum version
+               if ( $this->numericVersion <= 8.1 ) { // Our minimum version
                        $ins = str_replace( 'USING gin', 'USING gist', $ins );
                }
 
@@ -1446,10 +1535,8 @@ SQL;
        /**
         * Various select options
         *
-        * @private
-        *
         * @param array $options an associative array of options to be turned into
-        *              an SQL query, valid keys are listed in the function.
+        *   an SQL query, valid keys are listed in the function.
         * @return array
         */
        function makeSelectOptions( $options ) {
@@ -1473,9 +1560,12 @@ SQL;
                //              : false );
                //}
 
-               if ( isset( $noKeyOptions['FOR UPDATE'] ) ) {
+               if ( isset( $options['FOR UPDATE'] ) ) {
+                       $postLimitTail .= ' FOR UPDATE OF ' . implode( ', ', $options['FOR UPDATE'] );
+               } else if ( isset( $noKeyOptions['FOR UPDATE'] ) ) {
                        $postLimitTail .= ' FOR UPDATE';
                }
+
                if ( isset( $noKeyOptions['DISTINCT'] ) || isset( $noKeyOptions['DISTINCTROW'] ) ) {
                        $startOpts .= 'DISTINCT';
                }
@@ -1483,9 +1573,6 @@ SQL;
                return array( $startOpts, $useIndex, $preLimitTail, $postLimitTail );
        }
 
-       function setFakeMaster( $enabled = true ) {
-       }
-
        function getDBname() {
                return $this->mDBname;
        }
@@ -1527,9 +1614,9 @@ SQL;
         * Check to see if a named lock is available. This is non-blocking.
         * See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
         *
-        * @param string $lockName name of lock to poll
-        * @param string $method name of method calling us
-        * @return Boolean
+        * @param string $lockName Name of lock to poll
+        * @param string $method Name of method calling us
+        * @return bool
         * @since 1.20
         */
        public function lockIsFree( $lockName, $method ) {
@@ -1543,9 +1630,9 @@ SQL;
 
        /**
         * See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
-        * @param $lockName string
-        * @param $method string
-        * @param $timeout int
+        * @param string $lockName
+        * @param string $method
+        * @param int $timeout
         * @return bool
         */
        public function lock( $lockName, $method, $timeout = 5 ) {
@@ -1568,8 +1655,8 @@ SQL;
        /**
         * See http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKSFROM
         * PG DOCS: http://www.postgresql.org/docs/8.2/static/functions-admin.html#FUNCTIONS-ADVISORY-LOCKS
-        * @param $lockName string
-        * @param $method string
+        * @param string $lockName
+        * @param string $method
         * @return bool
         */
        public function unlock( $lockName, $method ) {
index 89f0818..5aaeb65 100644 (file)
  * @ingroup Database
  */
 class DatabaseSqlite extends DatabaseBase {
+       /** @var bool Whether full text is enabled */
        private static $fulltextEnabled = null;
 
-       var $mAffectedRows;
-       var $mLastResult;
-       var $mDatabaseFile;
-       var $mName;
+       /** @var string File name for SQLite database file */
+       public $mDatabaseFile;
+
+       /** @var int The number of rows affected as an integer */
+       protected $mAffectedRows;
+
+       /** @var resource */
+       protected $mLastResult;
 
        /**
-        * @var PDO
+        * @var string
+        * @todo Seems to serve no purpose. Remove?
         */
+       private $mName;
+
+       /** @var PDO */
        protected $mConn;
 
        function __construct( $p = null ) {
@@ -110,12 +119,13 @@ class DatabaseSqlite extends DatabaseBase {
        /**
         * Opens a database file
         *
-        * @param $fileName string
-        *
+        * @param string $fileName
         * @throws DBConnectionError
         * @return PDO|bool SQL connection or false if failed
         */
        function openFile( $fileName ) {
+               $err = false;
+
                $this->mDatabaseFile = $fileName;
                try {
                        if ( $this->mFlags & DBO_PERSISTENT ) {
@@ -127,10 +137,12 @@ class DatabaseSqlite extends DatabaseBase {
                } catch ( PDOException $e ) {
                        $err = $e->getMessage();
                }
+
                if ( !$this->mConn ) {
                        wfDebug( "DB connection error: $err\n" );
                        throw new DBConnectionError( $this, $err );
                }
+
                $this->mOpened = !!$this->mConn;
                # set error codes only, don't raise exceptions
                if ( $this->mOpened ) {
@@ -138,8 +150,10 @@ class DatabaseSqlite extends DatabaseBase {
                        # Enforce LIKE to be case sensitive, just like MySQL
                        $this->query( 'PRAGMA case_sensitive_like = 1' );
 
-                       return true;
+                       return $this->mConn;
                }
+
+               return false;
        }
 
        /**
@@ -156,7 +170,7 @@ class DatabaseSqlite extends DatabaseBase {
         * Generates a database file name. Explicitly public for installer.
         * @param string $dir Directory where database resides
         * @param string $dbName Database name
-        * @return String
+        * @return string
         */
        public static function generateFileName( $dir, $dbName ) {
                return "$dir/$dbName.sqlite";
@@ -182,7 +196,7 @@ class DatabaseSqlite extends DatabaseBase {
 
        /**
         * Returns version of currently supported SQLite fulltext search module or false if none present.
-        * @return String
+        * @return string
         */
        static function getFulltextSearchModule() {
                static $cachedResult = null;
@@ -206,12 +220,11 @@ class DatabaseSqlite extends DatabaseBase {
         * Attaches external database to our connection, see http://sqlite.org/lang_attach.html
         * for details.
         *
-        * @param string $name database name to be used in queries like
+        * @param string $name Database name to be used in queries like
         *   SELECT foo FROM dbname.table
-        * @param string $file database file name. If omitted, will be generated
+        * @param bool|string $file Database file name. If omitted, will be generated
         *   using $name and $wgSQLiteDataDir
-        * @param string $fname calling function name
-        *
+        * @param string $fname Calling function name
         * @return ResultWrapper
         */
        function attachDatabase( $name, $file = false, $fname = __METHOD__ ) {
@@ -228,7 +241,6 @@ class DatabaseSqlite extends DatabaseBase {
         * @see DatabaseBase::isWriteQuery()
         *
         * @param $sql string
-        *
         * @return bool
         */
        function isWriteQuery( $sql ) {
@@ -238,9 +250,8 @@ class DatabaseSqlite extends DatabaseBase {
        /**
         * SQLite doesn't allow buffered results or data seeking etc, so we'll use fetchAll as the result
         *
-        * @param $sql string
-        *
-        * @return ResultWrapper
+        * @param string $sql
+        * @return bool|ResultWrapper
         */
        protected function doQuery( $sql ) {
                $res = $this->mConn->query( $sql );
@@ -256,7 +267,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $res ResultWrapper
+        * @param ResultWrapper|mixed $res
         */
        function freeResult( $res ) {
                if ( $res instanceof ResultWrapper ) {
@@ -267,8 +278,8 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $res ResultWrapper
-        * @return object|bool
+        * @param ResultWrapper|array $res
+        * @return stdClass|bool
         */
        function fetchObject( $res ) {
                if ( $res instanceof ResultWrapper ) {
@@ -294,7 +305,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $res ResultWrapper
+        * @param ResultWrapper|mixed $res
         * @return array|bool
         */
        function fetchRow( $res ) {
@@ -316,8 +327,7 @@ class DatabaseSqlite extends DatabaseBase {
        /**
         * The PDO::Statement class implements the array interface so count() will work
         *
-        * @param $res ResultWrapper
-        *
+        * @param ResultWrapper|array $res
         * @return int
         */
        function numRows( $res ) {
@@ -327,7 +337,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $res ResultWrapper
+        * @param ResultWrapper $res
         * @return int
         */
        function numFields( $res ) {
@@ -337,7 +347,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $res ResultWrapper
+        * @param ResultWrapper $res
         * @param $n
         * @return bool
         */
@@ -355,8 +365,8 @@ class DatabaseSqlite extends DatabaseBase {
        /**
         * Use MySQL's naming (accounts for prefix etc) but remove surrounding backticks
         *
-        * @param $name
-        * @param $format String
+        * @param string $name
+        * @param string $format
         * @return string
         */
        function tableName( $name, $format = 'quoted' ) {
@@ -371,8 +381,7 @@ class DatabaseSqlite extends DatabaseBase {
        /**
         * Index names have DB scope
         *
-        * @param $index string
-        *
+        * @param string $index
         * @return string
         */
        function indexName( $index ) {
@@ -390,8 +399,8 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $res ResultWrapper
-        * @param $row
+        * @param ResultWrapper|array $res
+        * @param int $row
         */
        function dataSeek( $res, $row ) {
                if ( $res instanceof ResultWrapper ) {
@@ -444,6 +453,9 @@ class DatabaseSqlite extends DatabaseBase {
         * Returns false if the index does not exist
         * - if errors are explicitly ignored, returns NULL on failure
         *
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return array
         */
        function indexInfo( $table, $index, $fname = __METHOD__ ) {
@@ -464,9 +476,9 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $table
-        * @param $index
-        * @param $fname string
+        * @param string $table
+        * @param string $index
+        * @param string $fname
         * @return bool|null
         */
        function indexUnique( $table, $index, $fname = __METHOD__ ) {
@@ -493,8 +505,7 @@ class DatabaseSqlite extends DatabaseBase {
        /**
         * Filter the options used in SELECT statements
         *
-        * @param $options array
-        *
+        * @param array $options
         * @return array
         */
        function makeSelectOptions( $options ) {
@@ -508,17 +519,17 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $options array
+        * @param array $options
         * @return string
         */
-       function makeUpdateOptions( $options ) {
+       protected function makeUpdateOptions( $options ) {
                $options = self::fixIgnore( $options );
 
                return parent::makeUpdateOptions( $options );
        }
 
        /**
-        * @param $options array
+        * @param array $options
         * @return array
         */
        static function fixIgnore( $options ) {
@@ -533,7 +544,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $options array
+        * @param array $options
         * @return string
         */
        function makeInsertOptions( $options ) {
@@ -544,6 +555,10 @@ class DatabaseSqlite extends DatabaseBase {
 
        /**
         * Based on generic method (parent) with some prior SQLite-sepcific adjustments
+        * @param string $table
+        * @param array $a
+        * @param string $fname
+        * @param array $options
         * @return bool
         */
        function insert( $table, $a, $fname = __METHOD__, $options = array() ) {
@@ -567,10 +582,10 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $table
-        * @param $uniqueIndexes
-        * @param $rows
-        * @param $fname string
+        * @param string $table
+        * @param array $uniqueIndexes Unused
+        * @param string|array $rows
+        * @param string $fname
         * @return bool|ResultWrapper
         */
        function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ ) {
@@ -597,6 +612,8 @@ class DatabaseSqlite extends DatabaseBase {
         * Returns the size of a text field, or -1 for "unlimited"
         * In SQLite this is SQLITE_MAX_LENGTH, by default 1GB. No way to query it though.
         *
+        * @param string $table
+        * @param string $field
         * @return int
         */
        function textFieldSize( $table, $field ) {
@@ -611,8 +628,8 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $sqls
-        * @param $all
+        * @param string $sqls
+        * @param bool $all Whether to "UNION ALL" or not
         * @return string
         */
        function unionQueries( $sqls, $all ) {
@@ -646,7 +663,7 @@ class DatabaseSqlite extends DatabaseBase {
         * @return string wikitext of a link to the server software's web site
         */
        public function getSoftwareLink() {
-               return "[http://sqlite.org/ SQLite]";
+               return "[{{int:version-db-sqlite-url}} SQLite]";
        }
 
        /**
@@ -671,8 +688,8 @@ class DatabaseSqlite extends DatabaseBase {
         * Get information about a given field
         * Returns false if the field does not exist.
         *
-        * @param $table string
-        * @param $field string
+        * @param string $table
+        * @param string $field
         * @return SQLiteField|bool False on failure
         */
        function fieldInfo( $table, $field ) {
@@ -721,7 +738,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $s string
+        * @param string $s
         * @return string
         */
        function strencode( $s ) {
@@ -749,7 +766,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $s Blob|string
+        * @param Blob|string $s
         * @return string
         */
        function addQuotes( $s ) {
@@ -791,6 +808,7 @@ class DatabaseSqlite extends DatabaseBase {
 
        /**
         * No-op version of deadlockLoop
+        *
         * @return mixed
         */
        public function deadlockLoop( /*...*/ ) {
@@ -801,7 +819,7 @@ class DatabaseSqlite extends DatabaseBase {
        }
 
        /**
-        * @param $s string
+        * @param string $s
         * @return string
         */
        protected function replaceVars( $s ) {
@@ -857,8 +875,7 @@ class DatabaseSqlite extends DatabaseBase {
        /**
         * Build a concatenation list to feed into a SQL query
         *
-        * @param $stringList array
-        *
+        * @param string[] $stringList
         * @return string
         */
        function buildConcat( $stringList ) {
@@ -875,10 +892,10 @@ class DatabaseSqlite extends DatabaseBase {
 
        /**
         * @throws MWException
-        * @param $oldName
-        * @param $newName
-        * @param $temporary bool
-        * @param $fname string
+        * @param string $oldName
+        * @param string $newName
+        * @param bool $temporary
+        * @param string $fname
         * @return bool|ResultWrapper
         */
        function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = __METHOD__ ) {
@@ -910,7 +927,7 @@ class DatabaseSqlite extends DatabaseBase {
         * List all tables on the database
         *
         * @param string $prefix Only show tables with this prefix, e.g. mw_
-        * @param string $fname calling function name
+        * @param string $fname Calling function name
         *
         * @return array
         */
index de5be08..87687db 100644 (file)
@@ -51,6 +51,7 @@ class DBObject {
  * This allows us to distinguish a blob from a normal string and an array of strings
  */
 class Blob {
+       /** @var string */
        private $mData;
 
        function __construct( $data ) {
@@ -97,13 +98,23 @@ interface Field {
  * @ingroup Database
  */
 class ResultWrapper implements Iterator {
-       var $db, $result, $pos = 0, $currentRow = null;
+       /** @var resource */
+       public $result;
+
+       /** @var DatabaseBase */
+       protected $db;
+
+       /** @var int */
+       protected $pos = 0;
+
+       /** @var */
+       protected $currentRow = null;
 
        /**
         * Create a new result object from a result resource and a Database object
         *
         * @param DatabaseBase $database
-        * @param resource $result
+        * @param resource|ResultWrapper $result
         */
        function __construct( $database, $result ) {
                $this->db = $database;
@@ -118,7 +129,7 @@ class ResultWrapper implements Iterator {
        /**
         * Get the number of rows in a result object
         *
-        * @return integer
+        * @return int
         */
        function numRows() {
                return $this->db->numRows( $this );
@@ -140,7 +151,7 @@ class ResultWrapper implements Iterator {
         * Fetch the next row from the given result object, in associative array
         * form. Fields are retrieved with $row['fieldname'].
         *
-        * @return Array
+        * @return array
         * @throws DBUnexpectedError Thrown if the database returns an error
         */
        function fetchRow() {
@@ -160,7 +171,7 @@ class ResultWrapper implements Iterator {
         * Change the position of the cursor in a result object.
         * See mysql_data_seek()
         *
-        * @param $row integer
+        * @param int $row
         */
        function seek( $row ) {
                $this->db->dataSeek( $this, $row );
@@ -221,10 +232,17 @@ class ResultWrapper implements Iterator {
  * doesn't go anywhere near an actual database.
  */
 class FakeResultWrapper extends ResultWrapper {
-       var $result = array();
-       var $db = null; // And it's going to stay that way :D
-       var $pos = 0;
-       var $currentRow = null;
+       /** @var array */
+       public $result = array();
+
+       /** @var null And it's going to stay that way :D */
+       protected $db = null;
+
+       /** @var int */
+       protected $pos = 0;
+
+       /** @var array|stdClass|bool */
+       protected $currentRow = null;
 
        function __construct( $array ) {
                $this->result = $array;
@@ -284,6 +302,7 @@ class FakeResultWrapper extends ResultWrapper {
  * manually, use DatabaseBase::anyChar() and anyString() instead.
  */
 class LikeMatch {
+       /** @var string */
        private $str;
 
        /**
@@ -298,7 +317,7 @@ class LikeMatch {
        /**
         * Return the original stored string.
         *
-        * @return String
+        * @return string
         */
        public function toString() {
                return $this->str;
@@ -307,6 +326,8 @@ class LikeMatch {
 
 /**
  * An object representing a master or slave position in a replicated setup.
+ *
+ * The implementation details of this opaque type are up to the database subclass.
  */
 interface DBMasterPos {
 }
index 6e377ff..ae105e2 100644 (file)
  * @ingroup Database
  */
 abstract class LBFactory {
-       /**
-        * @var LBFactory
-        */
-       static $instance;
+       /** @var LBFactory */
+       protected static $instance;
 
        /**
         * Disables all access to the load balancer, will cause all database access
@@ -37,7 +35,7 @@ abstract class LBFactory {
         */
        public static function disableBackend() {
                global $wgLBFactoryConf;
-               self::$instance = new LBFactory_Fake( $wgLBFactoryConf );
+               self::$instance = new LBFactoryFake( $wgLBFactoryConf );
        }
 
        /**
@@ -46,15 +44,46 @@ abstract class LBFactory {
         * @return LBFactory
         */
        static function &singleton() {
+               global $wgLBFactoryConf;
+
                if ( is_null( self::$instance ) ) {
-                       global $wgLBFactoryConf;
-                       $class = $wgLBFactoryConf['class'];
+                       $class = self::getLBFactoryClass( $wgLBFactoryConf );
+
                        self::$instance = new $class( $wgLBFactoryConf );
                }
 
                return self::$instance;
        }
 
+       /**
+        * Returns the LBFactory class to use and the load balancer configuration.
+        *
+        * @param array $config (e.g. $wgLBFactoryConf)
+        * @return string class name
+        */
+       public static function getLBFactoryClass( array $config ) {
+               // For configuration backward compatibility after removing
+               // underscores from class names in MediaWiki 1.23.
+               $bcClasses = array(
+                       'LBFactory_Simple' => 'LBFactorySimple',
+                       'LBFactory_Single' => 'LBFactorySingle',
+                       'LBFactory_Multi' => 'LBFactoryMulti',
+                       'LBFactory_Fake' => 'LBFactoryFake',
+               );
+
+               $class = $config['class'];
+
+               if ( isset( $bcClasses[$class] ) ) {
+                       $class = $bcClasses[$class];
+                       wfDeprecated(
+                               '$wgLBFactoryConf must be updated. See RELEASE-NOTES for details',
+                               '1.23'
+                       );
+               }
+
+               return $class;
+       }
+
        /**
         * Shut down, close connections and destroy the cached instance.
         */
@@ -69,7 +98,7 @@ abstract class LBFactory {
        /**
         * Set the instance to be the given object
         *
-        * @param $instance LBFactory
+        * @param LBFactory $instance
         */
        static function setInstance( $instance ) {
                self::destroyInstance();
@@ -78,7 +107,7 @@ abstract class LBFactory {
 
        /**
         * Construct a factory based on a configuration array (typically from $wgLBFactoryConf)
-        * @param $conf
+        * @param array $conf
         */
        abstract function __construct( $conf );
 
@@ -86,7 +115,7 @@ abstract class LBFactory {
         * Create a new load balancer object. The resulting object will be untracked,
         * not chronology-protected, and the caller is responsible for cleaning it up.
         *
-        * @param string $wiki wiki ID, or false for the current wiki
+        * @param bool|string $wiki Wiki ID, or false for the current wiki
         * @return LoadBalancer
         */
        abstract function newMainLB( $wiki = false );
@@ -94,7 +123,7 @@ abstract class LBFactory {
        /**
         * Get a cached (tracked) load balancer object.
         *
-        * @param string $wiki wiki ID, or false for the current wiki
+        * @param bool|string $wiki Wiki ID, or false for the current wiki
         * @return LoadBalancer
         */
        abstract function getMainLB( $wiki = false );
@@ -104,9 +133,8 @@ abstract class LBFactory {
         * untracked, not chronology-protected, and the caller is responsible for
         * cleaning it up.
         *
-        * @param string $cluster external storage cluster, or false for core
-        * @param string $wiki wiki ID, or false for the current wiki
-        *
+        * @param string $cluster External storage cluster, or false for core
+        * @param bool|string $wiki Wiki ID, or false for the current wiki
         * @return LoadBalancer
         */
        abstract function newExternalLB( $cluster, $wiki = false );
@@ -115,8 +143,7 @@ abstract class LBFactory {
         * Get a cached (tracked) load balancer for external storage
         *
         * @param string $cluster external storage cluster, or false for core
-        * @param string $wiki wiki ID, or false for the current wiki
-        *
+        * @param bool|string $wiki Wiki ID, or false for the current wiki
         * @return LoadBalancer
         */
        abstract function &getExternalLB( $cluster, $wiki = false );
@@ -125,7 +152,8 @@ abstract class LBFactory {
         * Execute a function for each tracked load balancer
         * The callback is called with the load balancer as the first parameter,
         * and $params passed as the subsequent parameters.
-        * @param $callback string|array
+        *
+        * @param callable $callback
         * @param array $params
         */
        abstract function forEachLB( $callback, $params = array() );
@@ -139,8 +167,9 @@ abstract class LBFactory {
 
        /**
         * Call a method of each tracked load balancer
-        * @param $methodName string
-        * @param $args array
+        *
+        * @param string $methodName
+        * @param array $args
         */
        function forEachLBCallMethod( $methodName, $args = array() ) {
                $this->forEachLB( array( $this, 'callMethod' ), array( $methodName, $args ) );
@@ -148,8 +177,8 @@ abstract class LBFactory {
 
        /**
         * Private helper for forEachLBCallMethod
-        * @param $loadBalancer
-        * @param $methodName string
+        * @param LoadBalancer $loadBalancer
+        * @param string $methodName
         * @param $args
         */
        function callMethod( $loadBalancer, $methodName, $args ) {
@@ -167,23 +196,22 @@ abstract class LBFactory {
 /**
  * A simple single-master LBFactory that gets its configuration from the b/c globals
  */
-class LBFactory_Simple extends LBFactory {
+class LBFactorySimple extends LBFactory {
+       /** @var LoadBalancer */
+       protected $mainLB;
 
-       /**
-        * @var LoadBalancer
-        */
-       var $mainLB;
-       var $extLBs = array();
+       /** @var LoadBalancer[] */
+       protected $extLBs = array();
 
-       # Chronology protector
-       var $chronProt;
+       /** @var ChronologyProtector */
+       protected $chronProt;
 
        function __construct( $conf ) {
                $this->chronProt = new ChronologyProtector;
        }
 
        /**
-        * @param $wiki
+        * @param bool|string $wiki
         * @return LoadBalancer
         */
        function newMainLB( $wiki = false ) {
@@ -220,7 +248,7 @@ class LBFactory_Simple extends LBFactory {
        }
 
        /**
-        * @param $wiki
+        * @param bool|string $wiki
         * @return LoadBalancer
         */
        function getMainLB( $wiki = false ) {
@@ -235,8 +263,8 @@ class LBFactory_Simple extends LBFactory {
 
        /**
         * @throws MWException
-        * @param $cluster
-        * @param $wiki
+        * @param string $cluster
+        * @param bool|string $wiki
         * @return LoadBalancer
         */
        function newExternalLB( $cluster, $wiki = false ) {
@@ -251,8 +279,8 @@ class LBFactory_Simple extends LBFactory {
        }
 
        /**
-        * @param $cluster
-        * @param $wiki
+        * @param string $cluster
+        * @param bool|string $wiki
         * @return array
         */
        function &getExternalLB( $cluster, $wiki = false ) {
@@ -269,8 +297,9 @@ class LBFactory_Simple extends LBFactory {
         * Execute a function for each tracked load balancer
         * The callback is called with the load balancer as the first parameter,
         * and $params passed as the subsequent parameters.
-        * @param $callback
-        * @param $params array
+        *
+        * @param callable $callback
+        * @param array $params
         */
        function forEachLB( $callback, $params = array() ) {
                if ( isset( $this->mainLB ) ) {
@@ -299,7 +328,7 @@ class LBFactory_Simple extends LBFactory {
  * Call LBFactory::disableBackend() to start using this, and
  * LBFactory::enableBackend() to return to normal behavior
  */
-class LBFactory_Fake extends LBFactory {
+class LBFactoryFake extends LBFactory {
        function __construct( $conf ) {
        }
 
diff --git a/includes/db/LBFactoryMulti.php b/includes/db/LBFactoryMulti.php
new file mode 100644 (file)
index 0000000..3c1885f
--- /dev/null
@@ -0,0 +1,401 @@
+<?php
+/**
+ * Advanced generator of database load balancing objects for wiki farms.
+ *
+ * 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 Database
+ */
+
+/**
+ * A multi-wiki, multi-master factory for Wikimedia and similar installations.
+ * Ignores the old configuration globals
+ *
+ * Configuration:
+ *     sectionsByDB                A map of database names to section names.
+ *
+ *     sectionLoads                A 2-d map. For each section, gives a map of server names to
+ *                                 load ratios. For example:
+ *                                 array(
+ *                                     'section1' => array(
+ *                                         'db1' => 100,
+ *                                         'db2' => 100
+ *                                     )
+ *                                 )
+ *
+ *     serverTemplate              A server info associative array as documented for $wgDBservers.
+ *                                 The host, hostName and load entries will be overridden.
+ *
+ *     groupLoadsBySection         A 3-d map giving server load ratios for each section and group.
+ *                                 For example:
+ *                                 array(
+ *                                     'section1' => array(
+ *                                         'group1' => array(
+ *                                             'db1' => 100,
+ *                                             'db2' => 100
+ *                                         )
+ *                                     )
+ *                                 )
+ *
+ *     groupLoadsByDB              A 3-d map giving server load ratios by DB name.
+ *
+ *     hostsByName                 A map of hostname to IP address.
+ *
+ *     externalLoads               A map of external storage cluster name to server load map.
+ *
+ *     externalTemplateOverrides   A set of server info keys overriding serverTemplate for external
+ *                                 storage.
+ *
+ *     templateOverridesByServer   A 2-d map overriding serverTemplate and
+ *                                 externalTemplateOverrides on a server-by-server basis. Applies
+ *                                 to both core and external storage.
+ *
+ *     templateOverridesByCluster  A 2-d map overriding the server info by external storage cluster.
+ *
+ *     masterTemplateOverrides     An override array for all master servers.
+ *
+ *     readOnlyBySection           A map of section name to read-only message.
+ *                                 Missing or false for read/write.
+ *
+ * @ingroup Database
+ */
+class LBFactoryMulti extends LBFactory {
+       // Required settings
+
+       /** @var array A map of database names to section names */
+       protected $sectionsByDB;
+
+       /**
+        * @var array A 2-d map. For each section, gives a map of server names to
+        * load ratios
+        */
+       protected $sectionLoads;
+
+       /**
+        * @var array A server info associative array as documented for
+        * $wgDBservers. The host, hostName and load entries will be
+        * overridden
+        */
+       protected $serverTemplate;
+
+       // Optional settings
+
+       /** @var array A 3-d map giving server load ratios for each section and group */
+       protected $groupLoadsBySection = array();
+
+       /** @var array A 3-d map giving server load ratios by DB name */
+       protected $groupLoadsByDB = array();
+
+       /** @var array A map of hostname to IP address */
+       protected $hostsByName = array();
+
+       /** @var array A map of external storage cluster name to server load map */
+       protected $externalLoads = array();
+
+       /**
+        * @var array A set of server info keys overriding serverTemplate for
+        * external storage
+        */
+       protected $externalTemplateOverrides;
+
+       /**
+        * @var array A 2-d map overriding serverTemplate and
+        * externalTemplateOverrides on a server-by-server basis. Applies to both
+        * core and external storage
+        */
+       protected $templateOverridesByServer;
+
+       /** @var array A 2-d map overriding the server info by external storage cluster */
+       protected $templateOverridesByCluster;
+
+       /** @var array An override array for all master servers */
+       protected $masterTemplateOverrides;
+
+       /**
+        * @var array|bool A map of section name to read-only message. Missing or
+        * false for read/write
+        */
+       protected $readOnlyBySection = array();
+
+       // Other stuff
+
+       /** @var array Load balancer factory configuration */
+       protected $conf;
+
+       /** @var LoadBalancer[] */
+       protected $mainLBs = array();
+
+       /** @var LoadBalancer[] */
+       protected $extLBs = array();
+
+       /** @var string */
+       protected $lastWiki;
+
+       /** @var string */
+       protected $lastSection;
+
+       /**
+        * @param array $conf
+        * @throws MWException
+        */
+       function __construct( $conf ) {
+               $this->chronProt = new ChronologyProtector;
+               $this->conf = $conf;
+               $required = array( 'sectionsByDB', 'sectionLoads', 'serverTemplate' );
+               $optional = array( 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
+                       'externalLoads', 'externalTemplateOverrides', 'templateOverridesByServer',
+                       'templateOverridesByCluster', 'masterTemplateOverrides',
+                       'readOnlyBySection' );
+
+               foreach ( $required as $key ) {
+                       if ( !isset( $conf[$key] ) ) {
+                               throw new MWException( __CLASS__ . ": $key is required in configuration" );
+                       }
+                       $this->$key = $conf[$key];
+               }
+
+               foreach ( $optional as $key ) {
+                       if ( isset( $conf[$key] ) ) {
+                               $this->$key = $conf[$key];
+                       }
+               }
+
+               // Check for read-only mode
+               $section = $this->getSectionForWiki();
+               if ( !empty( $this->readOnlyBySection[$section] ) ) {
+                       global $wgReadOnly;
+                       $wgReadOnly = $this->readOnlyBySection[$section];
+               }
+       }
+
+       /**
+        * @param bool|string $wiki
+        * @return string
+        */
+       function getSectionForWiki( $wiki = false ) {
+               if ( $this->lastWiki === $wiki ) {
+                       return $this->lastSection;
+               }
+               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
+               if ( isset( $this->sectionsByDB[$dbName] ) ) {
+                       $section = $this->sectionsByDB[$dbName];
+               } else {
+                       $section = 'DEFAULT';
+               }
+               $this->lastSection = $section;
+               $this->lastWiki = $wiki;
+
+               return $section;
+       }
+
+       /**
+        * @param bool|string $wiki
+        * @return LoadBalancer
+        */
+       function newMainLB( $wiki = false ) {
+               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
+               $section = $this->getSectionForWiki( $wiki );
+               $groupLoads = array();
+               if ( isset( $this->groupLoadsByDB[$dbName] ) ) {
+                       $groupLoads = $this->groupLoadsByDB[$dbName];
+               }
+
+               if ( isset( $this->groupLoadsBySection[$section] ) ) {
+                       $groupLoads = array_merge_recursive( $groupLoads, $this->groupLoadsBySection[$section] );
+               }
+
+               return $this->newLoadBalancer(
+                       $this->serverTemplate,
+                       $this->sectionLoads[$section],
+                       $groupLoads
+               );
+       }
+
+       /**
+        * @param bool|string $wiki
+        * @return LoadBalancer
+        */
+       function getMainLB( $wiki = false ) {
+               $section = $this->getSectionForWiki( $wiki );
+               if ( !isset( $this->mainLBs[$section] ) ) {
+                       $lb = $this->newMainLB( $wiki, $section );
+                       $lb->parentInfo( array( 'id' => "main-$section" ) );
+                       $this->chronProt->initLB( $lb );
+                       $this->mainLBs[$section] = $lb;
+               }
+
+               return $this->mainLBs[$section];
+       }
+
+       /**
+        * @param string $cluster
+        * @param bool|string $wiki
+        * @throws MWException
+        * @return LoadBalancer
+        */
+       function newExternalLB( $cluster, $wiki = false ) {
+               if ( !isset( $this->externalLoads[$cluster] ) ) {
+                       throw new MWException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
+               }
+               $template = $this->serverTemplate;
+               if ( isset( $this->externalTemplateOverrides ) ) {
+                       $template = $this->externalTemplateOverrides + $template;
+               }
+               if ( isset( $this->templateOverridesByCluster[$cluster] ) ) {
+                       $template = $this->templateOverridesByCluster[$cluster] + $template;
+               }
+
+               return $this->newLoadBalancer( $template, $this->externalLoads[$cluster], array() );
+       }
+
+       /**
+        * @param string $cluster external storage cluster, or false for core
+        * @param bool|string $wiki Wiki ID, or false for the current wiki
+        * @return LoadBalancer
+        */
+       function &getExternalLB( $cluster, $wiki = false ) {
+               if ( !isset( $this->extLBs[$cluster] ) ) {
+                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $wiki );
+                       $this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
+                       $this->chronProt->initLB( $this->extLBs[$cluster] );
+               }
+
+               return $this->extLBs[$cluster];
+       }
+
+       /**
+        * Make a new load balancer object based on template and load array
+        *
+        * @param array $template
+        * @param array $loads
+        * @param array $groupLoads
+        * @return LoadBalancer
+        */
+       function newLoadBalancer( $template, $loads, $groupLoads ) {
+               global $wgMasterWaitTimeout;
+               $servers = $this->makeServerArray( $template, $loads, $groupLoads );
+               $lb = new LoadBalancer( array(
+                       'servers' => $servers,
+                       'masterWaitTimeout' => $wgMasterWaitTimeout
+               ) );
+
+               return $lb;
+       }
+
+       /**
+        * Make a server array as expected by LoadBalancer::__construct, using a template and load array
+        *
+        * @param array $template
+        * @param array $loads
+        * @param array $groupLoads
+        * @return array
+        */
+       function makeServerArray( $template, $loads, $groupLoads ) {
+               $servers = array();
+               $master = true;
+               $groupLoadsByServer = $this->reindexGroupLoads( $groupLoads );
+               foreach ( $groupLoadsByServer as $server => $stuff ) {
+                       if ( !isset( $loads[$server] ) ) {
+                               $loads[$server] = 0;
+                       }
+               }
+               foreach ( $loads as $serverName => $load ) {
+                       $serverInfo = $template;
+                       if ( $master ) {
+                               $serverInfo['master'] = true;
+                               if ( isset( $this->masterTemplateOverrides ) ) {
+                                       $serverInfo = $this->masterTemplateOverrides + $serverInfo;
+                               }
+                               $master = false;
+                       }
+                       if ( isset( $this->templateOverridesByServer[$serverName] ) ) {
+                               $serverInfo = $this->templateOverridesByServer[$serverName] + $serverInfo;
+                       }
+                       if ( isset( $groupLoadsByServer[$serverName] ) ) {
+                               $serverInfo['groupLoads'] = $groupLoadsByServer[$serverName];
+                       }
+                       if ( isset( $this->hostsByName[$serverName] ) ) {
+                               $serverInfo['host'] = $this->hostsByName[$serverName];
+                       } else {
+                               $serverInfo['host'] = $serverName;
+                       }
+                       $serverInfo['hostName'] = $serverName;
+                       $serverInfo['load'] = $load;
+                       $servers[] = $serverInfo;
+               }
+
+               return $servers;
+       }
+
+       /**
+        * Take a group load array indexed by group then server, and reindex it by server then group
+        * @param array $groupLoads
+        * @return array
+        */
+       function reindexGroupLoads( $groupLoads ) {
+               $reindexed = array();
+               foreach ( $groupLoads as $group => $loads ) {
+                       foreach ( $loads as $server => $load ) {
+                               $reindexed[$server][$group] = $load;
+                       }
+               }
+
+               return $reindexed;
+       }
+
+       /**
+        * Get the database name and prefix based on the wiki ID
+        * @param bool|string $wiki
+        * @return array
+        */
+       function getDBNameAndPrefix( $wiki = false ) {
+               if ( $wiki === false ) {
+                       global $wgDBname, $wgDBprefix;
+
+                       return array( $wgDBname, $wgDBprefix );
+               } else {
+                       return wfSplitWikiID( $wiki );
+               }
+       }
+
+       /**
+        * Execute a function for each tracked load balancer
+        * The callback is called with the load balancer as the first parameter,
+        * and $params passed as the subsequent parameters.
+        * @param callable $callback
+        * @param array $params
+        */
+       function forEachLB( $callback, $params = array() ) {
+               foreach ( $this->mainLBs as $lb ) {
+                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
+               }
+               foreach ( $this->extLBs as $lb ) {
+                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
+               }
+       }
+
+       function shutdown() {
+               foreach ( $this->mainLBs as $lb ) {
+                       $this->chronProt->shutdownLB( $lb );
+               }
+               foreach ( $this->extLBs as $extLB ) {
+                       $this->chronProt->shutdownLB( $extLB );
+               }
+               $this->chronProt->shutdown();
+               $this->commitMasterChanges();
+       }
+}
diff --git a/includes/db/LBFactorySingle.php b/includes/db/LBFactorySingle.php
new file mode 100644 (file)
index 0000000..66e9d12
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+/**
+ * Simple generator of database connections that always returns the same object.
+ *
+ * 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 Database
+ */
+
+/**
+ * An LBFactory class that always returns a single database object.
+ */
+class LBFactorySingle extends LBFactory {
+       /** @var LoadBalancerSingle */
+       protected $lb;
+
+       /**
+        * @param array $conf An associative array with one member:
+        *  - connection: The DatabaseBase connection object
+        */
+       function __construct( $conf ) {
+               $this->lb = new LoadBalancerSingle( $conf );
+       }
+
+       /**
+        * @param bool|string $wiki
+        * @return LoadBalancerSingle
+        */
+       function newMainLB( $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param bool|string $wiki
+        * @return LoadBalancerSingle
+        */
+       function getMainLB( $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param string $cluster External storage cluster, or false for core
+        * @param bool|string $wiki Wiki ID, or false for the current wiki
+        * @return LoadBalancerSingle
+        */
+       function newExternalLB( $cluster, $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param string $cluster external storage cluster, or false for core
+        * @param bool|string $wiki Wiki ID, or false for the current wiki
+        * @return LoadBalancerSingle
+        */
+       function &getExternalLB( $cluster, $wiki = false ) {
+               return $this->lb;
+       }
+
+       /**
+        * @param string|array $callback
+        * @param array $params
+        */
+       function forEachLB( $callback, $params = array() ) {
+               call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
+       }
+}
+
+/**
+ * Helper class for LBFactorySingle.
+ */
+class LoadBalancerSingle extends LoadBalancer {
+       /** @var DatabaseBase */
+       protected $db;
+
+       /**
+        * @param $params array
+        */
+       function __construct( $params ) {
+               $this->db = $params['connection'];
+               parent::__construct( array( 'servers' => array( array(
+                       'type' => $this->db->getType(),
+                       'host' => $this->db->getServer(),
+                       'dbname' => $this->db->getDBname(),
+                       'load' => 1,
+               ) ) ) );
+       }
+
+       /**
+        *
+        * @param string $server
+        * @param bool $dbNameOverride
+        *
+        * @return DatabaseBase
+        */
+       function reallyOpenConnection( $server, $dbNameOverride = false ) {
+               return $this->db;
+       }
+}
diff --git a/includes/db/LBFactory_Multi.php b/includes/db/LBFactory_Multi.php
deleted file mode 100644 (file)
index a37a560..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-<?php
-/**
- * Advanced generator of database load balancing objects for wiki farms.
- *
- * 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 Database
- */
-
-/**
- * A multi-wiki, multi-master factory for Wikimedia and similar installations.
- * Ignores the old configuration globals
- *
- * Configuration:
- *     sectionsByDB                A map of database names to section names
- *
- *     sectionLoads                A 2-d map. For each section, gives a map of server names to
- *                                 load ratios. For example:
- *                                 array(
- *                                     'section1' => array(
- *                                         'db1' => 100,
- *                                         'db2' => 100
- *                                     )
- *                                 )
- *
- *     serverTemplate              A server info associative array as documented for $wgDBservers.
- *                                 The host, hostName and load entries will be overridden.
- *
- *     groupLoadsBySection         A 3-d map giving server load ratios for each section and group.
- *                                 For example:
- *                                 array(
- *                                     'section1' => array(
- *                                         'group1' => array(
- *                                             'db1' => 100,
- *                                             'db2' => 100
- *                                         )
- *                                     )
- *                                 )
- *
- *     groupLoadsByDB              A 3-d map giving server load ratios by DB name.
- *
- *     hostsByName                 A map of hostname to IP address.
- *
- *     externalLoads               A map of external storage cluster name to server load map
- *
- *     externalTemplateOverrides   A set of server info keys overriding serverTemplate for external
- *                                 storage
- *
- *     templateOverridesByServer   A 2-d map overriding serverTemplate and
- *                                 externalTemplateOverrides on a server-by-server basis. Applies
- *                                 to both core and external storage.
- *
- *     templateOverridesByCluster  A 2-d map overriding the server info by external storage cluster
- *
- *     masterTemplateOverrides     An override array for all master servers.
- *
- *     readOnlyBySection           A map of section name to read-only message.
- *                                 Missing or false for read/write.
- *
- * @ingroup Database
- */
-class LBFactory_Multi extends LBFactory {
-       // Required settings
-       var $sectionsByDB, $sectionLoads, $serverTemplate;
-       // Optional settings
-       var $groupLoadsBySection = array(), $groupLoadsByDB = array(), $hostsByName = array();
-       var $externalLoads = array(), $externalTemplateOverrides, $templateOverridesByServer;
-       var $templateOverridesByCluster, $masterTemplateOverrides, $readOnlyBySection = array();
-       // Other stuff
-       var $conf, $mainLBs = array(), $extLBs = array();
-       var $lastWiki, $lastSection;
-
-       /**
-        * @param $conf array
-        * @throws MWException
-        */
-       function __construct( $conf ) {
-               $this->chronProt = new ChronologyProtector;
-               $this->conf = $conf;
-               $required = array( 'sectionsByDB', 'sectionLoads', 'serverTemplate' );
-               $optional = array( 'groupLoadsBySection', 'groupLoadsByDB', 'hostsByName',
-                       'externalLoads', 'externalTemplateOverrides', 'templateOverridesByServer',
-                       'templateOverridesByCluster', 'masterTemplateOverrides',
-                       'readOnlyBySection' );
-
-               foreach ( $required as $key ) {
-                       if ( !isset( $conf[$key] ) ) {
-                               throw new MWException( __CLASS__ . ": $key is required in configuration" );
-                       }
-                       $this->$key = $conf[$key];
-               }
-
-               foreach ( $optional as $key ) {
-                       if ( isset( $conf[$key] ) ) {
-                               $this->$key = $conf[$key];
-                       }
-               }
-
-               // Check for read-only mode
-               $section = $this->getSectionForWiki();
-               if ( !empty( $this->readOnlyBySection[$section] ) ) {
-                       global $wgReadOnly;
-                       $wgReadOnly = $this->readOnlyBySection[$section];
-               }
-       }
-
-       /**
-        * @param $wiki bool|string
-        * @return string
-        */
-       function getSectionForWiki( $wiki = false ) {
-               if ( $this->lastWiki === $wiki ) {
-                       return $this->lastSection;
-               }
-               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
-               if ( isset( $this->sectionsByDB[$dbName] ) ) {
-                       $section = $this->sectionsByDB[$dbName];
-               } else {
-                       $section = 'DEFAULT';
-               }
-               $this->lastSection = $section;
-               $this->lastWiki = $wiki;
-
-               return $section;
-       }
-
-       /**
-        * @param $wiki bool|string
-        * @return LoadBalancer
-        */
-       function newMainLB( $wiki = false ) {
-               list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
-               $section = $this->getSectionForWiki( $wiki );
-               $groupLoads = array();
-               if ( isset( $this->groupLoadsByDB[$dbName] ) ) {
-                       $groupLoads = $this->groupLoadsByDB[$dbName];
-               }
-
-               if ( isset( $this->groupLoadsBySection[$section] ) ) {
-                       $groupLoads = array_merge_recursive( $groupLoads, $this->groupLoadsBySection[$section] );
-               }
-
-               return $this->newLoadBalancer(
-                       $this->serverTemplate,
-                       $this->sectionLoads[$section],
-                       $groupLoads
-               );
-       }
-
-       /**
-        * @param $wiki bool|string
-        * @return LoadBalancer
-        */
-       function getMainLB( $wiki = false ) {
-               $section = $this->getSectionForWiki( $wiki );
-               if ( !isset( $this->mainLBs[$section] ) ) {
-                       $lb = $this->newMainLB( $wiki, $section );
-                       $lb->parentInfo( array( 'id' => "main-$section" ) );
-                       $this->chronProt->initLB( $lb );
-                       $this->mainLBs[$section] = $lb;
-               }
-
-               return $this->mainLBs[$section];
-       }
-
-       /**
-        * @param string $cluster
-        * @param bool $wiki
-        * @throws MWException
-        * @return LoadBalancer
-        */
-       function newExternalLB( $cluster, $wiki = false ) {
-               if ( !isset( $this->externalLoads[$cluster] ) ) {
-                       throw new MWException( __METHOD__ . ": Unknown cluster \"$cluster\"" );
-               }
-               $template = $this->serverTemplate;
-               if ( isset( $this->externalTemplateOverrides ) ) {
-                       $template = $this->externalTemplateOverrides + $template;
-               }
-               if ( isset( $this->templateOverridesByCluster[$cluster] ) ) {
-                       $template = $this->templateOverridesByCluster[$cluster] + $template;
-               }
-
-               return $this->newLoadBalancer( $template, $this->externalLoads[$cluster], array() );
-       }
-
-       /**
-        * @param $cluster
-        * @param $wiki
-        * @return LoadBalancer
-        */
-       function &getExternalLB( $cluster, $wiki = false ) {
-               if ( !isset( $this->extLBs[$cluster] ) ) {
-                       $this->extLBs[$cluster] = $this->newExternalLB( $cluster, $wiki );
-                       $this->extLBs[$cluster]->parentInfo( array( 'id' => "ext-$cluster" ) );
-                       $this->chronProt->initLB( $this->extLBs[$cluster] );
-               }
-
-               return $this->extLBs[$cluster];
-       }
-
-       /**
-        * Make a new load balancer object based on template and load array
-        *
-        * @param $template
-        * @param $loads array
-        * @param $groupLoads
-        * @return LoadBalancer
-        */
-       function newLoadBalancer( $template, $loads, $groupLoads ) {
-               global $wgMasterWaitTimeout;
-               $servers = $this->makeServerArray( $template, $loads, $groupLoads );
-               $lb = new LoadBalancer( array(
-                       'servers' => $servers,
-                       'masterWaitTimeout' => $wgMasterWaitTimeout
-               ) );
-
-               return $lb;
-       }
-
-       /**
-        * Make a server array as expected by LoadBalancer::__construct, using a template and load array
-        *
-        * @param $template
-        * @param $loads array
-        * @param $groupLoads
-        * @return array
-        */
-       function makeServerArray( $template, $loads, $groupLoads ) {
-               $servers = array();
-               $master = true;
-               $groupLoadsByServer = $this->reindexGroupLoads( $groupLoads );
-               foreach ( $groupLoadsByServer as $server => $stuff ) {
-                       if ( !isset( $loads[$server] ) ) {
-                               $loads[$server] = 0;
-                       }
-               }
-               foreach ( $loads as $serverName => $load ) {
-                       $serverInfo = $template;
-                       if ( $master ) {
-                               $serverInfo['master'] = true;
-                               if ( isset( $this->masterTemplateOverrides ) ) {
-                                       $serverInfo = $this->masterTemplateOverrides + $serverInfo;
-                               }
-                               $master = false;
-                       }
-                       if ( isset( $this->templateOverridesByServer[$serverName] ) ) {
-                               $serverInfo = $this->templateOverridesByServer[$serverName] + $serverInfo;
-                       }
-                       if ( isset( $groupLoadsByServer[$serverName] ) ) {
-                               $serverInfo['groupLoads'] = $groupLoadsByServer[$serverName];
-                       }
-                       if ( isset( $this->hostsByName[$serverName] ) ) {
-                               $serverInfo['host'] = $this->hostsByName[$serverName];
-                       } else {
-                               $serverInfo['host'] = $serverName;
-                       }
-                       $serverInfo['hostName'] = $serverName;
-                       $serverInfo['load'] = $load;
-                       $servers[] = $serverInfo;
-               }
-
-               return $servers;
-       }
-
-       /**
-        * Take a group load array indexed by group then server, and reindex it by server then group
-        * @param $groupLoads
-        * @return array
-        */
-       function reindexGroupLoads( $groupLoads ) {
-               $reindexed = array();
-               foreach ( $groupLoads as $group => $loads ) {
-                       foreach ( $loads as $server => $load ) {
-                               $reindexed[$server][$group] = $load;
-                       }
-               }
-
-               return $reindexed;
-       }
-
-       /**
-        * Get the database name and prefix based on the wiki ID
-        * @param $wiki bool
-        * @return array
-        */
-       function getDBNameAndPrefix( $wiki = false ) {
-               if ( $wiki === false ) {
-                       global $wgDBname, $wgDBprefix;
-
-                       return array( $wgDBname, $wgDBprefix );
-               } else {
-                       return wfSplitWikiID( $wiki );
-               }
-       }
-
-       /**
-        * Execute a function for each tracked load balancer
-        * The callback is called with the load balancer as the first parameter,
-        * and $params passed as the subsequent parameters.
-        * @param $callback
-        * @param $params array
-        */
-       function forEachLB( $callback, $params = array() ) {
-               foreach ( $this->mainLBs as $lb ) {
-                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
-               }
-               foreach ( $this->extLBs as $lb ) {
-                       call_user_func_array( $callback, array_merge( array( $lb ), $params ) );
-               }
-       }
-
-       function shutdown() {
-               foreach ( $this->mainLBs as $lb ) {
-                       $this->chronProt->shutdownLB( $lb );
-               }
-               foreach ( $this->extLBs as $extLB ) {
-                       $this->chronProt->shutdownLB( $extLB );
-               }
-               $this->chronProt->shutdown();
-               $this->commitMasterChanges();
-       }
-}
diff --git a/includes/db/LBFactory_Single.php b/includes/db/LBFactory_Single.php
deleted file mode 100644 (file)
index 7dca06d..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?php
-/**
- * Simple generator of database connections that always returns the same object.
- *
- * 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 Database
- */
-
-/**
- * An LBFactory class that always returns a single database object.
- */
-class LBFactory_Single extends LBFactory {
-       protected $lb;
-
-       /**
-        * @param array $conf An associative array with one member:
-        *  - connection: The DatabaseBase connection object
-        */
-       function __construct( $conf ) {
-               $this->lb = new LoadBalancer_Single( $conf );
-       }
-
-       /**
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function newMainLB( $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function getMainLB( $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $cluster
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function newExternalLB( $cluster, $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $cluster
-        * @param $wiki bool|string
-        *
-        * @return LoadBalancer_Single
-        */
-       function &getExternalLB( $cluster, $wiki = false ) {
-               return $this->lb;
-       }
-
-       /**
-        * @param $callback string|array
-        * @param $params array
-        */
-       function forEachLB( $callback, $params = array() ) {
-               call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
-       }
-}
-
-/**
- * Helper class for LBFactory_Single.
- */
-class LoadBalancer_Single extends LoadBalancer {
-
-       /**
-        * @var DatabaseBase
-        */
-       var $db;
-
-       /**
-        * @param $params array
-        */
-       function __construct( $params ) {
-               $this->db = $params['connection'];
-               parent::__construct( array( 'servers' => array( array(
-                       'type' => $this->db->getType(),
-                       'host' => $this->db->getServer(),
-                       'dbname' => $this->db->getDBname(),
-                       'load' => 1,
-               ) ) ) );
-       }
-
-       /**
-        *
-        * @param $server string
-        * @param $dbNameOverride bool
-        *
-        * @return DatabaseBase
-        */
-       function reallyOpenConnection( $server, $dbNameOverride = false ) {
-               return $this->db;
-       }
-}
index 9967cc0..7a49c78 100644 (file)
@@ -31,16 +31,20 @@ class LoadBalancer {
        private $mServers, $mConns, $mLoads, $mGroupLoads;
        private $mErrorConnection;
        private $mReadIndex, $mAllowLagged;
-       private $mWaitForPos, $mWaitTimeout;
+
+       /** @var bool|DBMasterPos False if not set */
+       private $mWaitForPos;
+
+       private $mWaitTimeout;
        private $mLaggedSlaveMode, $mLastError = 'Unknown error';
        private $mParentInfo, $mLagTimes;
        private $mLoadMonitorClass, $mLoadMonitor;
 
        /**
         * @param array $params with keys:
-        *    servers           Required. Array of server info structures.
-        *    masterWaitTimeout Replication lag wait timeout
-        *    loadMonitor       Name of a class used to fetch server lag and load.
+        *   servers           Required. Array of server info structures.
+        *   masterWaitTimeout Replication lag wait timeout
+        *   loadMonitor       Name of a class used to fetch server lag and load.
         * @throws MWException
         */
        function __construct( $params ) {
@@ -72,9 +76,9 @@ class LoadBalancer {
                } else {
                        $master = reset( $params['servers'] );
                        if ( isset( $master['type'] ) && $master['type'] === 'mysql' ) {
-                               $this->mLoadMonitorClass = 'LoadMonitor_MySQL';
+                               $this->mLoadMonitorClass = 'LoadMonitorMySQL';
                        } else {
-                               $this->mLoadMonitorClass = 'LoadMonitor_Null';
+                               $this->mLoadMonitorClass = 'LoadMonitorNull';
                        }
                }
 
@@ -108,7 +112,7 @@ class LoadBalancer {
        /**
         * Get or set arbitrary data used by the parent object, usually an LBFactory
         * @param $x
-        * @return Mixed
+        * @return mixed
         */
        function parentInfo( $x = null ) {
                return wfSetVar( $this->mParentInfo, $x );
@@ -120,8 +124,7 @@ class LoadBalancer {
         *
         * @deprecated since 1.21, use ArrayUtils::pickRandom()
         *
-        * @param $weights array
-        *
+        * @param array $weights
         * @return bool|int|string
         */
        function pickRandom( $weights ) {
@@ -129,8 +132,8 @@ class LoadBalancer {
        }
 
        /**
-        * @param $loads array
-        * @param $wiki bool
+        * @param array $loads
+        * @param bool|string $wiki Wiki to get non-lagged for
         * @return bool|int|string
         */
        function getRandomNonLagged( $loads, $wiki = false ) {
@@ -177,8 +180,8 @@ class LoadBalancer {
         * always return a consistent index during a given invocation
         *
         * Side effect: opens connections to databases
-        * @param $group bool
-        * @param $wiki bool
+        * @param bool|string $group
+        * @param bool|string $wiki
         * @throws MWException
         * @return bool|int|string
         */
@@ -338,7 +341,7 @@ class LoadBalancer {
 
        /**
         * Wait for a specified number of microseconds, and return the period waited
-        * @param $t int
+        * @param int $t
         * @return int
         */
        function sleep( $t ) {
@@ -354,7 +357,7 @@ class LoadBalancer {
         * Set the master wait position
         * If a DB_SLAVE connection has been opened already, waits
         * Otherwise sets a variable telling it to wait if such a connection is opened
-        * @param $pos DBMasterPos
+        * @param DBMasterPos $pos
         */
        public function waitFor( $pos ) {
                wfProfileIn( __METHOD__ );
@@ -372,7 +375,7 @@ class LoadBalancer {
 
        /**
         * Set the master wait position and wait for ALL slaves to catch up to it
-        * @param $pos DBMasterPos
+        * @param DBMasterPos $pos
         */
        public function waitForAll( $pos ) {
                wfProfileIn( __METHOD__ );
@@ -390,7 +393,7 @@ class LoadBalancer {
         * Get any open connection to a given server index, local or foreign
         * Returns false if there is no connection open
         *
-        * @param $i int
+        * @param int $i
         * @return DatabaseBase|bool False on failure
         */
        function getAnyOpenConnection( $i ) {
@@ -575,7 +578,7 @@ class LoadBalancer {
         *
         * @param integer $db
         * @param mixed $groups
-        * @param string $wiki
+        * @param bool|string $wiki
         * @return DBConnRef
         */
        public function getConnectionRef( $db, $groups = array(), $wiki = false ) {
@@ -591,7 +594,7 @@ class LoadBalancer {
         *
         * @param integer $db
         * @param mixed $groups
-        * @param string $wiki
+        * @param bool|string $wiki
         * @return DBConnRef
         */
        public function getLazyConnectionRef( $db, $groups = array(), $wiki = false ) {
@@ -607,7 +610,7 @@ class LoadBalancer {
         * error will be available via $this->mErrorConnection.
         *
         * @param $i Integer server index
-        * @param string $wiki wiki ID to open
+        * @param bool|string $wiki wiki ID to open
         * @return DatabaseBase
         *
         * @access private
@@ -998,7 +1001,7 @@ class LoadBalancer {
 
        /**
         * Disables/enables lag checks
-        * @param $mode null
+        * @param null|bool $mode
         * @return bool
         */
        function allowLagged( $mode = null ) {
@@ -1030,7 +1033,7 @@ class LoadBalancer {
 
        /**
         * Call a function with each open connection object
-        * @param $callback
+        * @param callable $callback
         * @param array $params
         */
        function forEachOpenConnection( $callback, $params = array() ) {
@@ -1050,8 +1053,7 @@ class LoadBalancer {
         * May attempt to open connections to slaves on the default DB. If there is
         * no lag, the maximum lag will be reported as -1.
         *
-        * @param string $wiki Wiki ID, or false for the default database
-        *
+        * @param bool|string $wiki Wiki ID, or false for the default database
         * @return array ( host, max lag, index of max lagged host )
         */
        function getMaxLag( $wiki = false ) {
@@ -1086,8 +1088,7 @@ class LoadBalancer {
         * Get lag time for each server
         * Results are cached for a short time in memcached, and indefinitely in the process cache
         *
-        * @param $wiki
-        *
+        * @param string|bool $wiki
         * @return array
         */
        function getLagTimes( $wiki = false ) {
@@ -1118,8 +1119,7 @@ class LoadBalancer {
         * function instead of Database::getLag() avoids a fatal error in this
         * case on many installations.
         *
-        * @param $conn DatabaseBase
-        *
+        * @param DatabaseBase $conn
         * @return int
         */
        function safeGetLag( $conn ) {
@@ -1148,14 +1148,16 @@ class LoadBalancer {
 class DBConnRef implements IDatabase {
        /** @var LoadBalancer */
        protected $lb;
+
        /** @var DatabaseBase|null */
        protected $conn;
-       /** @var Array|null */
+
+       /** @var array|null */
        protected $params;
 
        /**
-        * @param $lb LoadBalancer
-        * @param $conn DatabaseBase|array Connection or (server index, group, wiki ID) array
+        * @param LoadBalancer $lb
+        * @param DatabaseBase|array $conn Connection or (server index, group, wiki ID) array
         */
        public function __construct( LoadBalancer $lb, $conn ) {
                $this->lb = $lb;
index b293531..651c499 100644 (file)
@@ -37,7 +37,7 @@ interface LoadMonitor {
        /**
         * Perform pre-connection load ratio adjustment.
         * @param array $loads
-        * @param string|bool $group the selected query group. Default: false
+        * @param string|bool $group The selected query group. Default: false
         * @param string|bool $wiki Default: false
         */
        function scaleLoads( &$loads, $group = false, $wiki = false );
@@ -55,27 +55,23 @@ interface LoadMonitor {
         * to the running thread count. The threshold may be false, which indicates
         * that the sysadmin has not configured this feature.
         *
-        * @param $conn DatabaseBase
-        * @param $threshold Float
+        * @param DatabaseBase $conn
+        * @param float $threshold
         */
        function postConnectionBackoff( $conn, $threshold );
 
        /**
         * Return an estimate of replication lag for each server
         *
-        * @param $serverIndexes
-        * @param $wiki
+        * @param array $serverIndexes
+        * @param string $wiki
         *
         * @return array
         */
        function getLagTimes( $serverIndexes, $wiki );
 }
 
-/**
- * @todo FIXME: Should be  LoadMonitorNull per naming conventions.
- * PHP CodeSniffer Squiz.Classes.ValidClassName.NotCamelCaps
- */
-class LoadMonitor_Null implements LoadMonitor {
+class LoadMonitorNull implements LoadMonitor {
        function __construct( $parent ) {
        }
 
@@ -86,8 +82,8 @@ class LoadMonitor_Null implements LoadMonitor {
        }
 
        /**
-        * @param $serverIndexes
-        * @param $wiki
+        * @param array $serverIndexes
+        * @param string $wiki
         * @return array
         */
        function getLagTimes( $serverIndexes, $wiki ) {
@@ -100,13 +96,9 @@ class LoadMonitor_Null implements LoadMonitor {
  * Uses memcached to cache the replication lag for a short time
  *
  * @ingroup Database
- * @todo FIXME: Should be  LoadMonitorMySQL per naming conventions.
- * PHP CodeSniffer Squiz.Classes.ValidClassName.NotCamelCaps
  */
-class LoadMonitor_MySQL implements LoadMonitor {
-       /**
-        * @var LoadBalancer
-        */
+class LoadMonitorMySQL implements LoadMonitor {
+       /** @var LoadBalancer */
        public $parent;
 
        /**
@@ -117,16 +109,16 @@ class LoadMonitor_MySQL implements LoadMonitor {
        }
 
        /**
-        * @param $loads
-        * @param $group bool
-        * @param $wiki bool
+        * @param array $loads
+        * @param bool $group
+        * @param bool $wiki
         */
        function scaleLoads( &$loads, $group = false, $wiki = false ) {
        }
 
        /**
-        * @param $serverIndexes
-        * @param $wiki
+        * @param array $serverIndexes
+        * @param string $wiki
         * @return array
         */
        function getLagTimes( $serverIndexes, $wiki ) {
@@ -198,8 +190,8 @@ class LoadMonitor_MySQL implements LoadMonitor {
        }
 
        /**
-        * @param $conn DatabaseBase
-        * @param $threshold
+        * @param DatabaseBase|DatabaseMySQLBase $conn
+        * @param int $threshold
         * @return int
         */
        function postConnectionBackoff( $conn, $threshold ) {
index e47bc67..3f91e0a 100644 (file)
@@ -246,9 +246,9 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @param array $conditions
         * @param array $options
         * @param null|string $functionName
-        *
         * @return ResultWrapper
-        * @throws DBQueryError if the quey failed (even if the database was in ignoreErrors mode).
+        * @throws DBQueryError if the query failed (even if the database was in
+        *   ignoreErrors mode).
         */
        public function rawSelect( $fields = null, array $conditions = array(),
                array $options = array(), $functionName = null
@@ -378,7 +378,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @param array $options
         * @param string|null $functionName
         *
-        * @return ResultWrapper
+        * @return stdClass
         */
        public function rawSelectRow( array $fields, array $conditions = array(),
                array $options = array(), $functionName = null
@@ -825,7 +825,7 @@ class ORMTable extends DBAccessBase implements IORMTable {
         * @since 1.20
         *
         * @param stdClass $result
-        *
+        * @throws MWException
         * @return array
         */
        public function getFieldsFromDBResult( stdClass $result ) {
index 9cd7708..8c3b671 100644 (file)
@@ -218,6 +218,9 @@ class LinksUpdate extends SqlDataUpdate {
                $changed = $propertiesDeletes + array_diff_assoc( $this->mProperties, $existing );
                $this->invalidateProperties( $changed );
 
+               # Update the links table freshness for this title
+               $this->updateLinksTimestamp();
+
                # Refresh links of all pages including this page
                # This will be in a separate transaction
                if ( $this->mRecursive ) {
@@ -230,11 +233,15 @@ class LinksUpdate extends SqlDataUpdate {
        /**
         * Queue recursive jobs for this page
         *
-        * Which means do LinksUpdate on all templates
-        * that include the current page, using the job queue.
+        * Which means do LinksUpdate on all pages that include the current page,
+        * using the job queue.
         */
        function queueRecursiveJobs() {
                self::queueRecursiveJobsForTable( $this->mTitle, 'templatelinks' );
+               if ( $this->mTitle->getNamespace() == NS_FILE ) {
+                       // Process imagelinks in case the title is or was a redirect
+                       self::queueRecursiveJobsForTable( $this->mTitle, 'imagelinks' );
+               }
        }
 
        /**
@@ -411,6 +418,7 @@ class LinksUpdate extends SqlDataUpdate {
                foreach ( $diffs as $url => $dummy ) {
                        foreach ( wfMakeUrlIndexes( $url ) as $index ) {
                                $arr[] = array(
+                                       'el_id' => $this->mDb->nextSequenceValue( 'externallinks_el_id_seq' ),
                                        'el_from' => $this->mId,
                                        'el_to' => $url,
                                        'el_index' => $index,
@@ -855,6 +863,19 @@ class LinksUpdate extends SqlDataUpdate {
 
                return $result;
        }
+
+       /**
+        * Update links table freshness
+        */
+       protected function updateLinksTimestamp() {
+               if ( $this->mId ) {
+                       $this->mDb->update( 'page',
+                               array( 'page_links_updated' => $this->mDb->timestamp() ),
+                               array( 'page_id' => $this->mId ),
+                               __METHOD__
+                       );
+               }
+       }
 }
 
 /**
index bac9f10..85592e8 100644 (file)
@@ -216,6 +216,11 @@ class SquidUpdate {
 
                // Remove duplicate URLs from collection
                $urlArr = array_unique( $urlArr );
+               // Get sequential trx IDs for packet loss counting
+               $ids = UIDGenerator::newSequentialPerNodeIDs(
+                       'squidhtcppurge', 32, count( $urlArr ), UIDGenerator::QUICK_VOLATILE
+               );
+
                foreach ( $urlArr as $url ) {
                        if ( !is_string( $url ) ) {
                                wfProfileOut( __METHOD__ );
@@ -243,7 +248,8 @@ class SquidUpdate {
                        // Construct a minimal HTCP request diagram
                        // as per RFC 2756
                        // Opcode 'CLR', no response desired, no auth
-                       $htcpTransID = rand();
+                       $htcpTransID = current( $ids );
+                       next( $ids );
 
                        $htcpSpecifier = pack( 'na4na*na8n',
                                4, 'HEAD', strlen( $url ), $url,
index f80a4ad..c47eced 100644 (file)
@@ -836,6 +836,9 @@ class MappedDiff extends Diff {
  * @ingroup DifferenceEngine
  */
 class HWLDFWordAccumulator {
+       public $insClass = ' class="diffchange diffchange-inline"';
+       public $delClass = ' class="diffchange diffchange-inline"';
+
        private $lines = array();
        private $line = '';
        private $group = '';
@@ -847,10 +850,10 @@ class HWLDFWordAccumulator {
        private function flushGroup( $new_tag ) {
                if ( $this->group !== '' ) {
                        if ( $this->tag == 'ins' ) {
-                               $this->line .= '<ins class="diffchange diffchange-inline">' .
+                               $this->line .= "<ins{$this->insClass}>" .
                                        htmlspecialchars( $this->group ) . '</ins>';
                        } elseif ( $this->tag == 'del' ) {
-                               $this->line .= '<del class="diffchange diffchange-inline">' .
+                               $this->line .= "<del{$this->delClass}>" .
                                        htmlspecialchars( $this->group ) . '</del>';
                        } else {
                                $this->line .= htmlspecialchars( $this->group );
index 6e74f2c..b7601e9 100644 (file)
@@ -580,19 +580,8 @@ class DifferenceEngine extends ContextSource {
 
                                $parserOutput = $this->getParserOutput( $wikiPage, $this->mNewRev );
 
-                               # Also try to load it as a redirect
-                               $rt = $this->mNewContent ? $this->mNewContent->getRedirectTarget() : null;
-
-                               if ( $rt ) {
-                                       $article = Article::newFromTitle( $this->mNewPage, $this->getContext() );
-                                       $out->addHTML( $article->viewRedirect( $rt ) );
-
-                                       # WikiPage::getParserOutput() should not return false, but just in case
-                                       if ( $parserOutput ) {
-                                               # Show categories etc.
-                                               $out->addParserOutputNoText( $parserOutput );
-                                       }
-                               } elseif ( $parserOutput ) {
+                               # WikiPage::getParserOutput() should not return false, but just in case
+                               if ( $parserOutput ) {
                                        $out->addParserOutput( $parserOutput );
                                }
                        }
index 8c2147a..b7e5469 100644 (file)
@@ -37,7 +37,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
         */
        public function fetchFromURL( $url ) {
                list( $cluster, $id, $itemID ) = $this->parseURL( $url );
-               $ret =& $this->fetchBlob( $cluster, $id, $itemID );
+               $ret = $this->fetchBlob( $cluster, $id, $itemID );
 
                if ( $itemID !== false && $ret !== false ) {
                        return $ret->getItem( $itemID );
@@ -109,7 +109,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param string $cluster cluster name
         * @return LoadBalancer object
         */
-       function &getLoadBalancer( $cluster ) {
+       function getLoadBalancer( $cluster ) {
                $wiki = isset( $this->params['wiki'] ) ? $this->params['wiki'] : false;
 
                return wfGetLBFactory()->getExternalLB( $cluster, $wiki );
@@ -121,11 +121,11 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param string $cluster cluster name
         * @return DatabaseBase object
         */
-       function &getSlave( $cluster ) {
+       function getSlave( $cluster ) {
                global $wgDefaultExternalStore;
 
                $wiki = isset( $this->params['wiki'] ) ? $this->params['wiki'] : false;
-               $lb =& $this->getLoadBalancer( $cluster );
+               $lb = $this->getLoadBalancer( $cluster );
 
                if ( !in_array( "DB://" . $cluster, (array)$wgDefaultExternalStore ) ) {
                        wfDebug( "read only external store" );
@@ -143,9 +143,9 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param string $cluster cluster name
         * @return DatabaseBase object
         */
-       function &getMaster( $cluster ) {
+       function getMaster( $cluster ) {
                $wiki = isset( $this->params['wiki'] ) ? $this->params['wiki'] : false;
-               $lb =& $this->getLoadBalancer( $cluster );
+               $lb = $this->getLoadBalancer( $cluster );
 
                return $lb->getConnection( DB_MASTER, array(), $wiki );
        }
@@ -156,7 +156,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @param $db DatabaseBase
         * @return String: table name ('blobs' by default)
         */
-       function getTable( &$db ) {
+       function getTable( $db ) {
                $table = $db->getLBInfo( 'blobs table' );
                if ( is_null( $table ) ) {
                        $table = 'blobs';
@@ -175,7 +175,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
         * @return mixed
         * @private
         */
-       function &fetchBlob( $cluster, $id, $itemID ) {
+       function fetchBlob( $cluster, $id, $itemID ) {
                /**
                 * One-step cache variable to hold base blobs; operations that
                 * pull multiple revisions may often pull multiple times from
@@ -195,14 +195,14 @@ class ExternalStoreDB extends ExternalStoreMedium {
                wfDebugLog( 'ExternalStoreDB-cache',
                        "ExternalStoreDB::fetchBlob cache miss on $cacheID\n" );
 
-               $dbr =& $this->getSlave( $cluster );
+               $dbr = $this->getSlave( $cluster );
                $ret = $dbr->selectField( $this->getTable( $dbr ),
                        'blob_text', array( 'blob_id' => $id ), __METHOD__ );
                if ( $ret === false ) {
                        wfDebugLog( 'ExternalStoreDB',
                                "ExternalStoreDB::fetchBlob master fallback on $cacheID\n" );
                        // Try the master
-                       $dbw =& $this->getMaster( $cluster );
+                       $dbw = $this->getMaster( $cluster );
                        $ret = $dbw->selectField( $this->getTable( $dbw ),
                                'blob_text', array( 'blob_id' => $id ), __METHOD__ );
                        if ( $ret === false ) {
@@ -215,7 +215,7 @@ class ExternalStoreDB extends ExternalStoreMedium {
                        $ret = unserialize( $ret );
                }
 
-               $externalBlobCache = array( $cacheID => &$ret );
+               $externalBlobCache = array( $cacheID => $ret );
 
                return $ret;
        }
index 3a0aa97..047aefd 100644 (file)
@@ -37,12 +37,8 @@ class FSFile {
         * Sets up the file object
         *
         * @param string $path Path to temporary file on local disk
-        * @throws MWException
         */
        public function __construct( $path ) {
-               if ( FileBackend::isStoragePath( $path ) ) {
-                       throw new MWException( __METHOD__ . " given storage path `$path`." );
-               }
                $this->path = $path;
        }
 
index a6eda18..f5d63b9 100644 (file)
@@ -104,6 +104,10 @@ abstract class FileBackend {
        /** @var FileJournal */
        protected $fileJournal;
 
+       /** Flags for supported features */
+       const ATTR_HEADERS  = 1;
+       const ATTR_METADATA = 2;
+
        /**
         * Create a new backend instance from configuration.
         * This should only be called from within FileBackendGroup.
@@ -114,35 +118,40 @@ abstract class FileBackend {
         *                   This name should not be changed after use (e.g. with journaling).
         *                   Note that the name is *not* used in actual container names.
         *   - wikiId      : Prefix to container names that is unique to this backend.
-        *                   If not provided, this defaults to the current wiki ID.
         *                   It should only consist of alphanumberic, '-', and '_' characters.
         *                   This ID is what avoids collisions if multiple logical backends
         *                   use the same storage system, so this should be set carefully.
-        *   - lockManager : Registered name of a file lock manager to use.
-        *   - fileJournal : File journal configuration; see FileJournal::factory().
-        *                   Journals simply log changes to files stored in the backend.
+        *   - lockManager : LockManager object to use for any file locking.
+        *                   If not provided, then no file locking will be enforced.
+        *   - fileJournal : FileJournal object to use for logging changes to files.
+        *                   If not provided, then change journaling will be disabled.
         *   - readOnly    : Write operations are disallowed if this is a non-empty string.
         *                   It should be an explanation for the backend being read-only.
         *   - parallelize : When to do file operations in parallel (when possible).
         *                   Allowed values are "implicit", "explicit" and "off".
         *   - concurrency : How many file operations can be done in parallel.
-        * @throws MWException
+        * @throws FileBackendException
         */
        public function __construct( array $config ) {
                $this->name = $config['name'];
                if ( !preg_match( '!^[a-zA-Z0-9-_]{1,255}$!', $this->name ) ) {
-                       throw new MWException( "Backend name `{$this->name}` is invalid." );
+                       throw new FileBackendException( "Backend name `{$this->name}` is invalid." );
+               }
+               if ( !isset( $config['wikiId'] ) ) {
+                       $config['wikiId'] = wfWikiID();
+                       wfDeprecated( __METHOD__ . ' called without "wikiID".', '1.23' );
                }
-               $this->wikiId = isset( $config['wikiId'] )
-                       ? $config['wikiId']
-                       : wfWikiID(); // e.g. "my_wiki-en_"
-               $this->lockManager = ( $config['lockManager'] instanceof LockManager )
+               if ( isset( $config['lockManager'] ) && !is_object( $config['lockManager'] ) ) {
+                       $config['lockManager'] =
+                               LockManagerGroup::singleton( $config['wikiId'] )->get( $config['lockManager'] );
+                       wfDeprecated( __METHOD__ . ' called with non-object "lockManager".', '1.23' );
+               }
+               $this->wikiId = $config['wikiId']; // e.g. "my_wiki-en_"
+               $this->lockManager = isset( $config['lockManager'] )
                        ? $config['lockManager']
-                       : LockManagerGroup::singleton( $this->wikiId )->get( $config['lockManager'] );
+                       : new NullLockManager( array() );
                $this->fileJournal = isset( $config['fileJournal'] )
-                       ? ( ( $config['fileJournal'] instanceof FileJournal )
-                               ? $config['fileJournal']
-                               : FileJournal::factory( $config['fileJournal'], $this->name ) )
+                       ? $config['fileJournal']
                        : FileJournal::factory( array( 'class' => 'NullFileJournal' ), $this->name );
                $this->readOnly = isset( $config['readOnly'] )
                        ? (string)$config['readOnly']
@@ -195,6 +204,27 @@ abstract class FileBackend {
                return ( $this->readOnly != '' ) ? $this->readOnly : false;
        }
 
+       /**
+        * Get the a bitfield of extra features supported by the backend medium
+        *
+        * @return integer Bitfield of FileBackend::ATTR_* flags
+        * @since 1.23
+        */
+       public function getFeatures() {
+               return 0;
+       }
+
+       /**
+        * Check if the backend medium supports a field of extra features
+        *
+        * @return integer Bitfield of FileBackend::ATTR_* flags
+        * @return bool
+        * @since 1.23
+        */
+       final public function hasFeatures( $bitfield ) {
+               return ( $this->getFeatures() & $bitfield ) === $bitfield;
+       }
+
        /**
         * This is the main entry point into the backend for write operations.
         * Callers supply an ordered list of operations to perform as a transaction.
@@ -896,6 +926,26 @@ abstract class FileBackend {
         */
        abstract public function getFileContentsMulti( array $params );
 
+       /**
+        * Get metadata about a file at a storage path in the backend.
+        * If the file does not exist, then this returns false.
+        * Otherwise, the result is an associative array that includes:
+        *   - headers  : map of HTTP headers used for GET/HEAD requests (name => value)
+        *   - metadata : map of file metadata (name => value)
+        * Metadata keys and headers names will be returned in all lower-case.
+        * Additional values may be included for internal use only.
+        *
+        * Use FileBackend::hasFeatures() to check how well this is supported.
+        *
+        * @param array $params
+        * $params include:
+        *   - src    : source storage path
+        *   - latest : use the latest available data
+        * @return Array|bool Returns false on failure
+        * @since 1.23
+        */
+       abstract public function getFileXAttributes( array $params );
+
        /**
         * Get the size (bytes) of a file at a storage path in the backend.
         *
@@ -1360,7 +1410,7 @@ abstract class FileBackend {
         *
         * @param string $type One of (attachment, inline)
         * @param string $filename Suggested file name (should not contain slashes)
-        * @throws MWException
+        * @throws FileBackendError
         * @return string
         * @since 1.20
         */
@@ -1369,7 +1419,7 @@ abstract class FileBackend {
 
                $type = strtolower( $type );
                if ( !in_array( $type, array( 'inline', 'attachment' ) ) ) {
-                       throw new MWException( "Invalid Content-Disposition type '$type'." );
+                       throw new FileBackendError( "Invalid Content-Disposition type '$type'." );
                }
                $parts[] = $type;
 
@@ -1416,8 +1466,19 @@ abstract class FileBackend {
 }
 
 /**
+ * Generic file backend exception for checked and unexpected (e.g. config) exceptions
+ *
+ * @ingroup FileBackend
+ * @since 1.23
+ */
+class FileBackendException extends MWException {
+}
+
+/**
+ * File backend exception for checked exceptions (e.g. I/O errors)
+ *
  * @ingroup FileBackend
  * @since 1.22
  */
-class FileBackendError extends MWException {
+class FileBackendError extends FileBackendException {
 }
index 491424b..1b88db7 100644 (file)
@@ -113,18 +113,18 @@ class FileBackendGroup {
         * Register an array of file backend configurations
         *
         * @param array $configs
-        * @throws MWException
+        * @throws FileBackendException
         */
        protected function register( array $configs ) {
                foreach ( $configs as $config ) {
                        if ( !isset( $config['name'] ) ) {
-                               throw new MWException( "Cannot register a backend with no name." );
+                               throw new FileBackendException( "Cannot register a backend with no name." );
                        }
                        $name = $config['name'];
                        if ( isset( $this->backends[$name] ) ) {
-                               throw new MWException( "Backend with name `{$name}` already registered." );
+                               throw new FileBackendException( "Backend with name `{$name}` already registered." );
                        } elseif ( !isset( $config['class'] ) ) {
-                               throw new MWException( "Cannot register backend `{$name}` with no class." );
+                               throw new FileBackendException( "Backend with name `{$name}` has no class." );
                        }
                        $class = $config['class'];
 
@@ -142,16 +142,24 @@ class FileBackendGroup {
         *
         * @param string $name
         * @return FileBackend
-        * @throws MWException
+        * @throws FileBackendException
         */
        public function get( $name ) {
                if ( !isset( $this->backends[$name] ) ) {
-                       throw new MWException( "No backend defined with the name `$name`." );
+                       throw new FileBackendException( "No backend defined with the name `$name`." );
                }
                // Lazy-load the actual backend instance
                if ( !isset( $this->backends[$name]['instance'] ) ) {
                        $class = $this->backends[$name]['class'];
                        $config = $this->backends[$name]['config'];
+                       $config['wikiId'] = isset( $config['wikiId'] )
+                               ? $config['wikiId']
+                               : wfWikiID(); // e.g. "my_wiki-en_"
+                       $config['lockManager'] =
+                               LockManagerGroup::singleton( $config['wikiId'] )->get( $config['lockManager'] );
+                       $config['fileJournal'] = isset( $config['fileJournal'] )
+                               ? FileJournal::factory( $config['fileJournal'], $name )
+                               : FileJournal::factory( array( 'class' => 'NullFileJournal' ), $name );
                        $this->backends[$name]['instance'] = new $class( $config );
                }
 
@@ -163,11 +171,11 @@ class FileBackendGroup {
         *
         * @param string $name
         * @return array
-        * @throws MWException
+        * @throws FileBackendException
         */
        public function config( $name ) {
                if ( !isset( $this->backends[$name] ) ) {
-                       throw new MWException( "No backend defined with the name `$name`." );
+                       throw new FileBackendException( "No backend defined with the name `$name`." );
                }
                $class = $this->backends[$name]['class'];
 
index b3c46c6..1b2860a 100644 (file)
@@ -92,7 +92,7 @@ class FileBackendMultiWrite extends FileBackend {
         *   - noPushDirConts : (hack) Only apply directory functions to the master backend.
         *
         * @param array $config
-        * @throws MWException
+        * @throws FileBackendError
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
@@ -119,30 +119,30 @@ class FileBackendMultiWrite extends FileBackend {
                        }
                        $name = $config['name'];
                        if ( isset( $namesUsed[$name] ) ) { // don't break FileOp predicates
-                               throw new MWException( "Two or more backends defined with the name $name." );
+                               throw new FileBackendError( "Two or more backends defined with the name $name." );
                        }
                        $namesUsed[$name] = 1;
                        // Alter certain sub-backend settings for sanity
                        unset( $config['readOnly'] ); // use proxy backend setting
                        unset( $config['fileJournal'] ); // use proxy backend journal
+                       unset( $config['lockManager'] ); // lock under proxy backend
                        $config['wikiId'] = $this->wikiId; // use the proxy backend wiki ID
-                       $config['lockManager'] = 'nullLockManager'; // lock under proxy backend
                        if ( !empty( $config['isMultiMaster'] ) ) {
                                if ( $this->masterIndex >= 0 ) {
-                                       throw new MWException( 'More than one master backend defined.' );
+                                       throw new FileBackendError( 'More than one master backend defined.' );
                                }
                                $this->masterIndex = $index; // this is the "master"
                                $config['fileJournal'] = $this->fileJournal; // log under proxy backend
                        }
                        // Create sub-backend object
                        if ( !isset( $config['class'] ) ) {
-                               throw new MWException( 'No class given for a backend config.' );
+                               throw new FileBackendError( 'No class given for a backend config.' );
                        }
                        $class = $config['class'];
                        $this->backends[$index] = new $class( $config );
                }
                if ( $this->masterIndex < 0 ) { // need backends and must have a master
-                       throw new MWException( 'No master backend defined.' );
+                       throw new FileBackendError( 'No master backend defined.' );
                }
        }
 
@@ -567,6 +567,11 @@ class FileBackendMultiWrite extends FileBackend {
                return $this->backends[$this->masterIndex]->getFileStat( $realParams );
        }
 
+       public function getFileXAttributes( array $params ) {
+               $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
+               return $this->backends[$this->masterIndex]->getFileXAttributes( $realParams );
+       }
+
        public function getFileContentsMulti( array $params ) {
                $realParams = $this->substOpPaths( $params, $this->backends[$this->masterIndex] );
                $contentsM = $this->backends[$this->masterIndex]->getFileContentsMulti( $realParams );
@@ -645,6 +650,10 @@ class FileBackendMultiWrite extends FileBackend {
                return $this->backends[$this->masterIndex]->getFileList( $realParams );
        }
 
+       public function getFeatures() {
+               return $this->backends[$this->masterIndex]->getFeatures();
+       }
+
        public function clearCache( array $paths = null ) {
                foreach ( $this->backends as $backend ) {
                        $realPaths = is_array( $paths ) ? $this->substPaths( $paths, $backend ) : null;
index 2fe51c0..13f6436 100644 (file)
@@ -70,7 +70,7 @@ abstract class FileBackendStore extends FileBackend {
                        ? $config['mimeCallback']
                        : function ( $storagePath, $content, $fsPath ) {
                                // @TODO: handle the case of extension-less files using the contents
-                               return StreamFile::contentTypeFromPath( $storagePath ) ? : 'unknown/unknown';
+                               return StreamFile::contentTypeFromPath( $storagePath ) ?: 'unknown/unknown';
                        };
                $this->memCache = new EmptyBagOStuff(); // disabled by default
                $this->cheapCache = new ProcessCacheLRU( self::CACHE_CHEAP_SIZE );
@@ -655,10 +655,15 @@ abstract class FileBackendStore extends FileBackend {
                                $this->cheapCache->set( $path, 'sha1',
                                        array( 'hash' => $stat['sha1'], 'latest' => $latest ) );
                        }
+                       if ( isset( $stat['xattr'] ) ) { // some backends store headers/metadata
+                               $stat['xattr'] = self::normalizeXAttributes( $stat['xattr'] );
+                               $this->cheapCache->set( $path, 'xattr',
+                                       array( 'map' => $stat['xattr'], 'latest' => $latest ) );
+                       }
                } elseif ( $stat === false ) { // file does not exist
                        $this->cheapCache->set( $path, 'stat', $latest ? 'NOT_EXIST_LATEST' : 'NOT_EXIST' );
-                       $this->cheapCache->set( $path, 'sha1', // the SHA-1 must be false too
-                               array( 'hash' => false, 'latest' => $latest ) );
+                       $this->cheapCache->set( $path, 'xattr', array( 'map' => false, 'latest' => $latest ) );
+                       $this->cheapCache->set( $path, 'sha1', array( 'hash' => false, 'latest' => $latest ) );
                        wfDebug( __METHOD__ . ": File $path does not exist.\n" );
                } else { // an error occurred
                        wfDebug( __METHOD__ . ": Could not stat file $path.\n" );
@@ -697,6 +702,39 @@ abstract class FileBackendStore extends FileBackend {
                return $contents;
        }
 
+       final public function getFileXAttributes( array $params ) {
+               $path = self::normalizeStoragePath( $params['src'] );
+               if ( $path === null ) {
+                       return false; // invalid storage path
+               }
+               $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
+               $latest = !empty( $params['latest'] ); // use latest data?
+               if ( $this->cheapCache->has( $path, 'xattr', self::CACHE_TTL ) ) {
+                       $stat = $this->cheapCache->get( $path, 'xattr' );
+                       // If we want the latest data, check that this cached
+                       // value was in fact fetched with the latest available data.
+                       if ( !$latest || $stat['latest'] ) {
+                               return $stat['map'];
+                       }
+               }
+               wfProfileIn( __METHOD__ . '-miss' );
+               wfProfileIn( __METHOD__ . '-miss-' . $this->name );
+               $fields = $this->doGetFileXAttributes( $params );
+               $fields = is_array( $fields ) ? self::normalizeXAttributes( $fields ) : false;
+               wfProfileOut( __METHOD__ . '-miss-' . $this->name );
+               wfProfileOut( __METHOD__ . '-miss' );
+               $this->cheapCache->set( $path, 'xattr', array( 'map' => $fields, 'latest' => $latest ) );
+               return $fields;
+       }
+
+       /**
+        * @see FileBackendStore::getFileXAttributes()
+        * @return bool|string
+        */
+       protected function doGetFileXAttributes( array $params ) {
+               return array( 'headers' => array(), 'metadata' => array() ); // not supported
+       }
+
        final public function getFileSha1Base36( array $params ) {
                $path = self::normalizeStoragePath( $params['src'] );
                if ( $path === null ) {
@@ -965,7 +1003,7 @@ abstract class FileBackendStore extends FileBackend {
         *
         * @param array $ops Same format as doOperations()
         * @return array List of FileOp objects
-        * @throws MWException
+        * @throws FileBackendError
         */
        final public function getOperationsInternal( array $ops ) {
                $supportedOps = array(
@@ -989,7 +1027,7 @@ abstract class FileBackendStore extends FileBackend {
                                // Append the FileOp class
                                $performOps[] = new $class( $this, $params );
                        } else {
-                               throw new MWException( "Operation '$opName' is not supported." );
+                               throw new FileBackendError( "Operation '$opName' is not supported." );
                        }
                }
 
@@ -1091,7 +1129,7 @@ abstract class FileBackendStore extends FileBackend {
                // Perform the sync-only ops and build up op handles for the async ops...
                foreach ( $ops as $index => $params ) {
                        if ( !in_array( $params['op'], $supportedOps ) ) {
-                               throw new MWException( "Operation '{$params['op']}' is not supported." );
+                               throw new FileBackendError( "Operation '{$params['op']}' is not supported." );
                        }
                        $method = $params['op'] . 'Internal'; // e.g. "storeInternal"
                        $subStatus = $this->$method( array( 'async' => $async ) + $params );
@@ -1133,17 +1171,18 @@ abstract class FileBackendStore extends FileBackend {
         * to the order in which the handles where given.
         *
         * @param array $fileOpHandles
-        * @throws MWException
+        * @throws FileBackendError
         * @internal param array $handles List of FileBackendStoreOpHandle objects
         * @return array Map of Status objects
         */
        final public function executeOpHandlesInternal( array $fileOpHandles ) {
                $section = new ProfileSection( __METHOD__ . "-{$this->name}" );
+
                foreach ( $fileOpHandles as $fileOpHandle ) {
                        if ( !( $fileOpHandle instanceof FileBackendStoreOpHandle ) ) {
-                               throw new MWException( "Given a non-FileBackendStoreOpHandle object." );
+                               throw new FileBackendError( "Given a non-FileBackendStoreOpHandle object." );
                        } elseif ( $fileOpHandle->backend->getName() !== $this->getName() ) {
-                               throw new MWException( "Given a FileBackendStoreOpHandle for the wrong backend." );
+                               throw new FileBackendError( "Given a FileBackendStoreOpHandle for the wrong backend." );
                        }
                }
                $res = $this->doExecuteOpHandlesInternal( $fileOpHandles );
@@ -1157,12 +1196,12 @@ abstract class FileBackendStore extends FileBackend {
        /**
         * @see FileBackendStore::executeOpHandlesInternal()
         * @param array $fileOpHandles
-        * @throws MWException
+        * @throws FileBackendError
         * @return array List of corresponding Status objects
         */
        protected function doExecuteOpHandlesInternal( array $fileOpHandles ) {
                if ( count( $fileOpHandles ) ) {
-                       throw new MWException( "This backend supports no asynchronous operations." );
+                       throw new FileBackendError( "This backend supports no asynchronous operations." );
                }
 
                return array();
@@ -1624,10 +1663,33 @@ abstract class FileBackendStore extends FileBackend {
                                        $this->cheapCache->set( $path, 'sha1',
                                                array( 'hash' => $val['sha1'], 'latest' => $val['latest'] ) );
                                }
+                               if ( isset( $val['xattr'] ) ) { // some backends store headers/metadata
+                                       $val['xattr'] = self::normalizeXAttributes( $val['xattr'] );
+                                       $this->cheapCache->set( $path, 'xattr',
+                                               array( 'map' => $val['xattr'], 'latest' => $val['latest'] ) );
+                               }
                        }
                }
        }
 
+       /**
+        * Normalize file headers/metadata to the FileBackend::getFileXAttributes() format
+        *
+        * @param array $xattr
+        * @return array
+        * @since 1.22
+        */
+       final protected static function normalizeXAttributes( array $xattr ) {
+               $newXAttr = array( 'headers' => array(), 'metadata' => array() );
+               foreach ( $xattr['headers'] as $name => $value ) {
+                       $newXAttr['headers'][strtolower( $name )] = $value;
+               }
+               foreach ( $xattr['metadata'] as $name => $value ) {
+                       $newXAttr['metadata'][strtolower( $name )] = $value;
+               }
+               return $newXAttr;
+       }
+
        /**
         * Set the 'concurrency' option from a list of operation options
         *
index 538d9b4..4e03675 100644 (file)
@@ -74,7 +74,7 @@ abstract class FileOp {
         *
         * @param FileBackendStore $backend
         * @param array $params
-        * @throws MWException
+        * @throws FileBackendError
         */
        final public function __construct( FileBackendStore $backend, array $params ) {
                $this->backend = $backend;
@@ -83,7 +83,7 @@ abstract class FileOp {
                        if ( isset( $params[$name] ) ) {
                                $this->params[$name] = $params[$name];
                        } else {
-                               throw new MWException( "File operation missing parameter '$name'." );
+                               throw new FileBackendError( "File operation missing parameter '$name'." );
                        }
                }
                foreach ( $optional as $name ) {
@@ -645,7 +645,7 @@ class CopyFileOp extends FileOp {
                        $status = Status::newGood(); // nothing to do
                } elseif ( $this->params['src'] === $this->params['dst'] ) {
                        // Just update the destination file headers
-                       $headers = $this->getParam( 'headers' ) ? : array();
+                       $headers = $this->getParam( 'headers' ) ?: array();
                        $status = $this->backend->describeInternal( $this->setFlags( array(
                                'src' => $this->params['dst'], 'headers' => $headers
                        ) ) );
diff --git a/includes/filebackend/MemoryFileBackend.php b/includes/filebackend/MemoryFileBackend.php
new file mode 100644 (file)
index 0000000..6f40957
--- /dev/null
@@ -0,0 +1,260 @@
+<?php
+/**
+ * Simulation of a backend storage in memory.
+ *
+ * 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 FileBackend
+ * @author Aaron Schulz
+ */
+
+/**
+ * Simulation of a backend storage in memory.
+ *
+ * All data in the backend is automatically deleted at the end of PHP execution.
+ * Since the data stored here is volatile, this is only useful for staging or testing.
+ *
+ * @ingroup FileBackend
+ * @since 1.23
+ */
+class MemoryFileBackend extends FileBackendStore {
+       /** @var array Map of (file path => (data,mtime) */
+       protected $files = array();
+
+       public function isPathUsableInternal( $storagePath ) {
+               return true;
+       }
+
+       protected function doCreateInternal( array $params ) {
+               $status = Status::newGood();
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $params['content'],
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doStoreInternal( array $params ) {
+               $status = Status::newGood();
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               wfSuppressWarnings();
+               $data = file_get_contents( $params['src'] );
+               wfRestoreWarnings();
+               if ( $data === false ) { // source doesn't exist?
+                       $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $data,
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doCopyInternal( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+                       return $status;
+               }
+
+               $dst = $this->resolveHashKey( $params['dst'] );
+               if ( $dst === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['dst'] );
+                       return $status;
+               }
+
+               if ( !isset( $this->files[$src] ) ) {
+                       if ( empty( $params['ignoreMissingSource'] ) ) {
+                               $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+                       }
+                       return $status;
+               }
+
+               $this->files[$dst] = array(
+                       'data'  => $this->files[$src]['data'],
+                       'mtime' => wfTimestamp( TS_MW, time() )
+               );
+
+               return $status;
+       }
+
+       protected function doDeleteInternal( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       $status->fatal( 'backend-fail-invalidpath', $params['src'] );
+                       return $status;
+               }
+
+               if ( !isset( $this->files[$src] ) ) {
+                       if ( empty( $params['ignoreMissingSource'] ) ) {
+                               $status->fatal( 'backend-fail-delete', $params['src'] );
+                       }
+                       return $status;
+               }
+
+               unset( $this->files[$src] );
+
+               return $status;
+       }
+
+       protected function doGetFileStat( array $params ) {
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null ) {
+                       return null;
+               }
+
+               if ( isset( $this->files[$src] ) ) {
+                       return array(
+                               'mtime' => $this->files[$src]['mtime'],
+                               'size'  => strlen( $this->files[$src]['data'] ),
+                       );
+               }
+
+               return false;
+       }
+
+       protected function doGetLocalCopyMulti( array $params ) {
+               $tmpFiles = array(); // (path => TempFSFile)
+               foreach ( $params['srcs'] as $srcPath ) {
+                       $src = $this->resolveHashKey( $srcPath );
+                       if ( $src === null || !isset( $this->files[$src] ) ) {
+                               $fsFile = null;
+                       } else {
+                               // Create a new temporary file with the same extension...
+                               $ext = FileBackend::extensionFromPath( $src );
+                               $fsFile = TempFSFile::factory( 'localcopy_', $ext );
+                               if ( $fsFile ) {
+                                       $bytes = file_put_contents( $fsFile->getPath(), $this->files[$src]['data'] );
+                                       if ( $bytes !== strlen( $this->files[$src]['data'] ) ) {
+                                               $fsFile = null;
+                                       }
+                               }
+                       }
+                       $tmpFiles[$srcPath] = $fsFile;
+               }
+               return $tmpFiles;
+       }
+
+       protected function doStreamFile( array $params ) {
+               $status = Status::newGood();
+
+               $src = $this->resolveHashKey( $params['src'] );
+               if ( $src === null || !isset( $this->files[$src] ) ) {
+                       $status->fatal( 'backend-fail-stream', $params['src'] );
+                       return $status;
+               }
+
+               print $this->files[$src]['data'];
+
+               return $status;
+       }
+
+       protected function doDirectoryExists( $container, $dir, array $params ) {
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               return true;
+                       }
+               }
+               return false;
+       }
+
+       public function getDirectoryListInternal( $container, $dir, array $params ) {
+               $dirs = array();
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               $prefixLen = strlen( $prefix );
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               $relPath = substr( $path, $prefixLen );
+                               if ( $relPath === false ) {
+                                       continue;
+                               } elseif ( strpos( $relPath, '/' ) === false ) {
+                                       continue; // just a file
+                               }
+                               $parts = array_slice( explode( '/', $relPath ), 0, -1 ); // last part is file name
+                               if ( !empty( $params['topOnly'] ) ) {
+                                       $dirs[$parts[0]] = 1; // top directory
+                               } else {
+                                       $current = '';
+                                       foreach ( $parts as $part ) { // all directories
+                                               $dir = ( $current === '' ) ? $part : "$current/$part";
+                                               $dirs[$dir] = 1;
+                                               $current = $dir;
+                                       }
+                               }
+                       }
+               }
+               return array_keys( $dirs );
+       }
+
+       public function getFileListInternal( $container, $dir, array $params ) {
+               $files = array();
+               $prefix = rtrim( "$container/$dir", '/' ) . '/';
+               $prefixLen = strlen( $prefix );
+               foreach ( $this->files as $path => $data ) {
+                       if ( strpos( $path, $prefix ) === 0 ) {
+                               $relPath = substr( $path, $prefixLen );
+                               if ( $relPath === false ) {
+                                       continue;
+                               } elseif ( !empty( $params['topOnly'] ) && strpos( $relPath, '/' ) !== false ) {
+                                       continue;
+                               }
+                               $files[] = $relPath;
+                       }
+               }
+               return $files;
+       }
+
+       protected function directoriesAreVirtual() {
+               return true;
+       }
+
+       /**
+        * Get the absolute file system path for a storage path
+        *
+        * @param string $storagePath Storage path
+        * @return string|null
+        */
+       protected function resolveHashKey( $storagePath ) {
+               list( $fullCont, $relPath ) = $this->resolveStoragePathReal( $storagePath );
+               if ( $relPath === null ) {
+                       return null; // invalid
+               }
+               return ( $relPath !== '' ) ? "$fullCont/$relPath" : $fullCont;
+       }
+}
index dc2995f..b459b77 100644 (file)
 /**
  * @brief Class for an OpenStack Swift (or Ceph RGW) based file backend.
  *
- * This requires the SwiftCloudFiles MediaWiki extension, which includes
- * the php-cloudfiles library (https://github.com/rackspace/php-cloudfiles).
- * php-cloudfiles requires the curl, fileinfo, and mb_string PHP extensions.
- *
  * Status messages should avoid mentioning the Swift account name.
  * Likewise, error suppression should be used to avoid path disclosure.
  *
  * @since 1.19
  */
 class SwiftFileBackend extends FileBackendStore {
-       /** @var CF_Authentication Swift authentication handler */
-       protected $auth;
+       /** @var MultiHttpClient */
+       protected $http;
 
        /** @var int TTL in seconds */
        protected $authTTL;
 
-       /** @var string Shared secret value for making temp URLs */
-       protected $swiftTempUrlKey;
-
-       /** @var string Username to handle unauthenticated requests */
-       protected $swiftAnonUser;
+       /** @var string Authentication base URL (without version) */
+       protected $swiftAuthUrl;
 
-       /** @var bool Whether CloudFiles CDN is enabled */
-       protected $swiftUseCDN;
+       /** @var string Swift user (account:user) to authenticate as */
+       protected $swiftUser;
 
-       /** @var int How long to cache things in the CDN */
-       protected $swiftCDNExpiry;
+       /** @var string Secret key for user */
+       protected $swiftKey;
 
-       /** @var bool Whether object CDN purging is enabled */
-       protected $swiftCDNPurgable;
+       /** @var string Shared secret value for making temp URLs */
+       protected $swiftTempUrlKey;
 
-       // Rados Gateway specific options
-       /** @var string S3 access key */
+       /** @var string S3 access key (RADOS Gateway) */
        protected $rgwS3AccessKey;
 
-       /** @var string S3 authentication key */
+       /** @var string S3 authentication key (RADOS Gateway) */
        protected $rgwS3SecretKey;
 
-       /** @var CF_Connection Swift connection handle*/
-       protected $conn;
+       /** @var BagOStuff */
+       protected $srvCache;
 
-       /** @var int UNIX timestamp */
-       protected $sessionStarted = 0;
+       /** @var ProcessCacheLRU Container stat cache */
+       protected $containerStatCache;
 
-       /** @var CloudFilesException */
-       protected $connException;
+       /** @var array */
+       protected $authCreds;
 
        /** @var int UNIX timestamp */
-       protected $connErrorTime = 0;
+       protected $authSessionTimestamp = 0;
 
-       /** @var BagOStuff */
-       protected $srvCache;
-
-       /** @var ProcessCacheLRU */
-       protected $connContainerCache; // container object cache
+       /** @var int UNIX timestamp */
+       protected $authErrorTimestamp = null;
 
        /**
         * @see FileBackendStore::__construct()
@@ -92,16 +81,6 @@ class SwiftFileBackend extends FileBackendStore {
         *   - swiftAuthTTL       : Swift authentication TTL (seconds)
         *   - swiftTempUrlKey    : Swift "X-Account-Meta-Temp-URL-Key" value on the account.
         *                          Do not set this until it has been set in the backend.
-        *   - swiftAnonUser      : Swift user used for end-user requests (account:username).
-        *                          If set, then views of public containers are assumed to go
-        *                          through this user. If not set, then public containers are
-        *                          accessible to unauthenticated requests via ".r:*" in the ACL.
-        *   - swiftUseCDN        : Whether a Cloud Files Content Delivery Network is set up
-        *   - swiftCDNExpiry     : How long (in seconds) to store content in the CDN.
-        *                          If files may likely change, this should probably not exceed
-        *                          a few days. For example, deletions may take this long to apply.
-        *                          If object purging is enabled, however, this is not an issue.
-        *   - swiftCDNPurgable   : Whether object purge requests are allowed by the CDN.
         *   - shardViaHashLevels : Map of container names to sharding config with:
         *                             - base   : base of hash characters, 16 or 36
         *                             - levels : the number of hash levels (and digits)
@@ -110,12 +89,12 @@ class SwiftFileBackend extends FileBackendStore {
         *   - cacheAuthInfo      : Whether to cache authentication tokens in APC, XCache, ect.
         *                          If those are not available, then the main cache will be used.
         *                          This is probably insecure in shared hosting environments.
-        *   - rgwS3AccessKey     : Ragos Gateway S3 "access key" value on the account.
+        *   - rgwS3AccessKey     : Rados Gateway S3 "access key" value on the account.
         *                          Do not set this until it has been set in the backend.
         *                          This is used for generating expiring pre-authenticated URLs.
         *                          Only use this when using rgw and to work around
         *                          http://tracker.newdream.net/issues/3454.
-        *   - rgwS3SecretKey     : Ragos Gateway S3 "secret key" value on the account.
+        *   - rgwS3SecretKey     : Rados Gateway S3 "secret key" value on the account.
         *                          Do not set this until it has been set in the backend.
         *                          This is used for generating expiring pre-authenticated URLs.
         *                          Only use this when using rgw and to work around
@@ -123,48 +102,32 @@ class SwiftFileBackend extends FileBackendStore {
         */
        public function __construct( array $config ) {
                parent::__construct( $config );
-               if ( !class_exists( 'CF_Constants' ) ) {
-                       throw new MWException( 'SwiftCloudFiles extension not installed.' );
-               }
                // Required settings
-               $this->auth = new CF_Authentication(
-                       $config['swiftUser'],
-                       $config['swiftKey'],
-                       null, // account; unused
-                       $config['swiftAuthUrl']
-               );
+               $this->swiftAuthUrl = $config['swiftAuthUrl'];
+               $this->swiftUser = $config['swiftUser'];
+               $this->swiftKey = $config['swiftKey'];
                // Optional settings
                $this->authTTL = isset( $config['swiftAuthTTL'] )
                        ? $config['swiftAuthTTL']
                        : 5 * 60; // some sane number
-               $this->swiftAnonUser = isset( $config['swiftAnonUser'] )
-                       ? $config['swiftAnonUser']
-                       : '';
                $this->swiftTempUrlKey = isset( $config['swiftTempUrlKey'] )
                        ? $config['swiftTempUrlKey']
                        : '';
                $this->shardViaHashLevels = isset( $config['shardViaHashLevels'] )
                        ? $config['shardViaHashLevels']
                        : '';
-               $this->swiftUseCDN = isset( $config['swiftUseCDN'] )
-                       ? $config['swiftUseCDN']
-                       : false;
-               $this->swiftCDNExpiry = isset( $config['swiftCDNExpiry'] )
-                       ? $config['swiftCDNExpiry']
-                       : 12 * 3600; // 12 hours is safe (tokens last 24 hours per http://docs.openstack.org)
-               $this->swiftCDNPurgable = isset( $config['swiftCDNPurgable'] )
-                       ? $config['swiftCDNPurgable']
-                       : true;
                $this->rgwS3AccessKey = isset( $config['rgwS3AccessKey'] )
                        ? $config['rgwS3AccessKey']
                        : '';
                $this->rgwS3SecretKey = isset( $config['rgwS3SecretKey'] )
                        ? $config['rgwS3SecretKey']
                        : '';
+               // HTTP helper client
+               $this->http = new MultiHttpClient( array() );
                // Cache container information to mask latency
                $this->memCache = wfGetMainCache();
                // Process cache for container info
-               $this->connContainerCache = new ProcessCacheLRU( 300 );
+               $this->containerStatCache = new ProcessCacheLRU( 300 );
                // Cache auth token information to avoid RTTs
                if ( !empty( $config['cacheAuthInfo'] ) ) {
                        if ( PHP_SAPI === 'cli' ) {
@@ -176,16 +139,13 @@ class SwiftFileBackend extends FileBackendStore {
                                }
                        }
                }
-               $this->srvCache = $this->srvCache ? $this->srvCache : new EmptyBagOStuff();
+               $this->srvCache = $this->srvCache ?: new EmptyBagOStuff();
+       }
+
+       public function getFeatures() {
+               return ( FileBackend::ATTR_HEADERS | FileBackend::ATTR_METADATA );
        }
 
-       /**
-        * @see FileBackendStore::resolveContainerPath()
-        * @param string $container
-        * @param string $relStoragePath
-        * @return string|null Returns null when the URL encoded storage path is
-        *   longer than 1024 characters or not UTF-8 encoded.
-        */
        protected function resolveContainerPath( $container, $relStoragePath ) {
                if ( !mb_check_encoding( $relStoragePath, 'UTF-8' ) ) { // mb_string required by CF
                        return null; // not UTF-8, makes it hard to use CF and the swift HTTP API
@@ -202,48 +162,48 @@ class SwiftFileBackend extends FileBackendStore {
                        return false; // invalid
                }
 
-               try {
-                       $this->getContainer( $container );
-
-                       return true; // container exists
-               } catch ( NoSuchContainerException $e ) {
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, null, __METHOD__, array( 'path' => $storagePath ) );
-               }
-
-               return false;
+               return is_array( $this->getContainerStat( $container ) );
        }
 
        /**
+        * Sanitize and filter the custom headers from a $params array.
+        * We only allow certain Content- and X-Content- headers.
+        *
         * @param array $headers
-        * @return array
+        * @return array Sanitized value of 'headers' field in $params
         */
-       protected function sanitizeHdrs( array $headers ) {
-               // By default, Swift has annoyingly low maximum header value limits
-               if ( isset( $headers['Content-Disposition'] ) ) {
-                       $headers['Content-Disposition'] = $this->truncDisp( $headers['Content-Disposition'] );
+       protected function sanitizeHdrs( array $params ) {
+               $headers = array();
+
+               // Normalize casing, and strip out illegal headers
+               if ( isset( $params['headers'] )  ) {
+                       foreach ( $params['headers'] as $name => $value ) {
+                               $name = strtolower( $name );
+                               if ( preg_match( '/^content-(type|length)$/', $name ) ) {
+                                       continue; // blacklisted
+                               } elseif ( preg_match( '/^(x-)?content-/', $name ) ) {
+                                       $headers[$name] = $value; // allowed
+                               } elseif ( preg_match( '/^content-(disposition)/', $name ) ) {
+                                       $headers[$name] = $value; // allowed
+                               }
+                       }
                }
-
-               return $headers;
-       }
-
-       /**
-        * @param string $disposition Content-Disposition header value
-        * @return string Truncated Content-Disposition header value to meet Swift limits
-        */
-       protected function truncDisp( $disposition ) {
-               $res = '';
-               foreach ( explode( ';', $disposition ) as $part ) {
-                       $part = trim( $part );
-                       $new = ( $res === '' ) ? $part : "{$res};{$part}";
-                       if ( strlen( $new ) <= 255 ) {
-                               $res = $new;
-                       } else {
-                               break; // too long; sigh
+               // By default, Swift has annoyingly low maximum header value limits
+               if ( isset( $headers['content-disposition'] ) ) {
+                       $disposition = '';
+                       foreach ( explode( ';', $headers['content-disposition'] ) as $part ) {
+                               $part = trim( $part );
+                               $new = ( $disposition === '' ) ? $part : "{$disposition};{$part}";
+                               if ( strlen( $new ) <= 255 ) {
+                                       $disposition = $new;
+                               } else {
+                                       break; // too long; sigh
+                               }
                        }
+                       $headers['content-disposition'] = $disposition;
                }
 
-               return $res;
+               return $headers;
        }
 
        protected function doCreateInternal( array $params ) {
@@ -256,67 +216,44 @@ class SwiftFileBackend extends FileBackendStore {
                        return $status;
                }
 
-               // (a) Check the destination container and object
-               try {
-                       $dContObj = $this->getContainer( $dstCont );
-               } catch ( NoSuchContainerException $e ) {
-                       $status->fatal( 'backend-fail-create', $params['dst'] );
-
-                       return $status;
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
-                       return $status;
-               }
-
-               // (b) Get a SHA-1 hash of the object
                $sha1Hash = wfBaseConvert( sha1( $params['content'] ), 16, 36, 31 );
-
-               // (c) Actually create the object
-               try {
-                       // Create a fresh CF_Object with no fields preloaded.
-                       // We don't want to preserve headers, metadata, and such.
-                       $obj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
-                       $obj->setMetadataValues( array( 'Sha1base36' => $sha1Hash ) );
-                       // Manually set the ETag (https://github.com/rackspace/php-cloudfiles/issues/59).
-                       // The MD5 here will be checked within Swift against its own MD5.
-                       $obj->set_etag( md5( $params['content'] ) );
-                       // Use the same content type as StreamFile for security
-                       $obj->content_type = $this->getContentType( $params['dst'], $params['content'], null );
-                       // Set any other custom headers if requested
-                       if ( isset( $params['headers'] ) ) {
-                               $obj->headers += $this->sanitizeHdrs( $params['headers'] );
-                       }
-                       if ( !empty( $params['async'] ) ) { // deferred
-                               $op = $obj->write_async( $params['content'] );
-                               $status->value = new SwiftFileOpHandle( $this, $params, 'Create', $op );
-                               $status->value->affectedObjects[] = $obj;
-                       } else { // actually write the object in Swift
-                               $obj->write( $params['content'] );
-                               $this->purgeCDNCache( array( $obj ) );
+               $contentType = $this->getContentType( $params['dst'], $params['content'], null );
+
+               $reqs = array( array(
+                       'method'  => 'PUT',
+                       'url'     => array( $dstCont, $dstRel ),
+                       'headers' => array(
+                               'content-length'           => strlen( $params['content'] ),
+                               'etag'                     => md5( $params['content'] ),
+                               'content-type'             => $contentType,
+                               'x-object-meta-sha1base36' => $sha1Hash
+                       ) + $this->sanitizeHdrs( $params ),
+                       'body'    => $params['content']
+               ) );
+
+               $be = $this;
+               $method = __METHOD__;
+               $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+                       if ( $rcode === 201 ) {
+                               // good
+                       } elseif ( $rcode === 412 ) {
+                               $status->fatal( 'backend-fail-contenttype', $params['dst'] );
+                       } else {
+                               $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
                        }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( BadContentTypeException $e ) {
-                       $status->fatal( 'backend-fail-contenttype', $params['dst'] );
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+               };
+
+               $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+               if ( !empty( $params['async'] ) ) { // deferred
+                       $status->value = $opHandle;
+               } else { // actually write the object in Swift
+                       $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
                }
 
                return $status;
        }
 
-       /**
-        * @see SwiftFileBackend::doExecuteOpHandlesInternal()
-        */
-       protected function getResponseCreate( CF_Async_Op $cfOp, Status $status, array $params ) {
-               try {
-                       $cfOp->getLastResponse();
-               } catch ( BadContentTypeException $e ) {
-                       $status->fatal( 'backend-fail-contenttype', $params['dst'] );
-               }
-       }
-
        protected function doStoreInternal( array $params ) {
                $status = Status::newGood();
 
@@ -327,84 +264,57 @@ class SwiftFileBackend extends FileBackendStore {
                        return $status;
                }
 
-               // (a) Check the destination container and object
-               try {
-                       $dContObj = $this->getContainer( $dstCont );
-               } catch ( NoSuchContainerException $e ) {
-                       $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
-
-                       return $status;
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
-                       return $status;
-               }
-
-               // (b) Get a SHA-1 hash of the object
                wfSuppressWarnings();
                $sha1Hash = sha1_file( $params['src'] );
                wfRestoreWarnings();
                if ( $sha1Hash === false ) { // source doesn't exist?
-                       $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+                       $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
 
                        return $status;
                }
                $sha1Hash = wfBaseConvert( $sha1Hash, 16, 36, 31 );
+               $contentType = $this->getContentType( $params['dst'], null, $params['src'] );
 
-               // (c) Actually store the object
-               try {
-                       // Create a fresh CF_Object with no fields preloaded.
-                       // We don't want to preserve headers, metadata, and such.
-                       $obj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
-                       $obj->setMetadataValues( array( 'Sha1base36' => $sha1Hash ) );
-                       // The MD5 here will be checked within Swift against its own MD5.
-                       $obj->set_etag( md5_file( $params['src'] ) );
-                       // Use the same content type as StreamFile for security
-                       $obj->content_type = $this->getContentType( $params['dst'], null, $params['src'] );
-                       // Set any other custom headers if requested
-                       if ( isset( $params['headers'] ) ) {
-                               $obj->headers += $this->sanitizeHdrs( $params['headers'] );
-                       }
-                       if ( !empty( $params['async'] ) ) { // deferred
-                               wfSuppressWarnings();
-                               $fp = fopen( $params['src'], 'rb' );
-                               wfRestoreWarnings();
-                               if ( !$fp ) {
-                                       $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
-                               } else {
-                                       $op = $obj->write_async( $fp, filesize( $params['src'] ), true );
-                                       $status->value = new SwiftFileOpHandle( $this, $params, 'Store', $op );
-                                       $status->value->resourcesToClose[] = $fp;
-                                       $status->value->affectedObjects[] = $obj;
-                               }
-                       } else { // actually write the object in Swift
-                               $obj->load_from_filename( $params['src'], true ); // calls $obj->write()
-                               $this->purgeCDNCache( array( $obj ) );
-                       }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( BadContentTypeException $e ) {
-                       $status->fatal( 'backend-fail-contenttype', $params['dst'] );
-               } catch ( IOException $e ) {
-                       $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+               $handle = fopen( $params['src'], 'rb+' );
+               if ( $handle === false ) { // source doesn't exist?
+                       $status->fatal( 'backend-fail-store', $params['src'], $params['dst'] );
+
+                       return $status;
                }
 
-               return $status;
-       }
+               $reqs = array( array(
+                       'method'  => 'PUT',
+                       'url'     => array( $dstCont, $dstRel ),
+                       'headers' => array(
+                               'content-length'           => filesize( $params['src'] ),
+                               'etag'                     => md5_file( $params['src'] ),
+                               'content-type'             => $contentType,
+                               'x-object-meta-sha1base36' => $sha1Hash
+                       ) + $this->sanitizeHdrs( $params ),
+                       'body'    => $handle // resource
+               ) );
+
+               $be = $this;
+               $method = __METHOD__;
+               $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+                       if ( $rcode === 201 ) {
+                               // good
+                       } elseif ( $rcode === 412 ) {
+                               $status->fatal( 'backend-fail-contenttype', $params['dst'] );
+                       } else {
+                               $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
+                       }
+               };
 
-       /**
-        * @see SwiftFileBackend::doExecuteOpHandlesInternal()
-        */
-       protected function getResponseStore( CF_Async_Op $cfOp, Status $status, array $params ) {
-               try {
-                       $cfOp->getLastResponse();
-               } catch ( BadContentTypeException $e ) {
-                       $status->fatal( 'backend-fail-contenttype', $params['dst'] );
-               } catch ( IOException $e ) {
-                       $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+               $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+               if ( !empty( $params['async'] ) ) { // deferred
+                       $status->value = $opHandle;
+               } else { // actually write the object in Swift
+                       $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
                }
+
+               return $status;
        }
 
        protected function doCopyInternal( array $params ) {
@@ -424,62 +334,38 @@ class SwiftFileBackend extends FileBackendStore {
                        return $status;
                }
 
-               // (a) Check the source/destination containers and destination object
-               try {
-                       $sContObj = $this->getContainer( $srcCont );
-                       $dContObj = $this->getContainer( $dstCont );
-               } catch ( NoSuchContainerException $e ) {
-                       if ( empty( $params['ignoreMissingSource'] ) || isset( $sContObj ) ) {
+               $reqs = array( array(
+                       'method'  => 'PUT',
+                       'url'     => array( $dstCont, $dstRel ),
+                       'headers' => array(
+                               'x-copy-from' => '/' . rawurlencode( $srcCont ) .
+                                       '/' . str_replace( "%2F", "/", rawurlencode( $srcRel ) )
+                       ) + $this->sanitizeHdrs( $params ), // extra headers merged into object
+               ) );
+
+               $be = $this;
+               $method = __METHOD__;
+               $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+                       if ( $rcode === 201 ) {
+                               // good
+                       } elseif ( $rcode === 404 ) {
                                $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
+                       } else {
+                               $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
                        }
+               };
 
-                       return $status;
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
-                       return $status;
-               }
-
-               // (b) Actually copy the file to the destination
-               try {
-                       $dstObj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
-                       $hdrs = array(); // source file headers to override with new values
-                       // Set any other custom headers if requested
-                       if ( isset( $params['headers'] ) ) {
-                               $hdrs += $this->sanitizeHdrs( $params['headers'] );
-                       }
-                       if ( !empty( $params['async'] ) ) { // deferred
-                               $op = $sContObj->copy_object_to_async( $srcRel, $dContObj, $dstRel, null, $hdrs );
-                               $status->value = new SwiftFileOpHandle( $this, $params, 'Copy', $op );
-                               $status->value->affectedObjects[] = $dstObj;
-                       } else { // actually write the object in Swift
-                               $sContObj->copy_object_to( $srcRel, $dContObj, $dstRel, null, $hdrs );
-                               $this->purgeCDNCache( array( $dstObj ) );
-                       }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( NoSuchObjectException $e ) { // source object does not exist
-                       if ( empty( $params['ignoreMissingSource'] ) ) {
-                               $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
-                       }
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+               $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+               if ( !empty( $params['async'] ) ) { // deferred
+                       $status->value = $opHandle;
+               } else { // actually write the object in Swift
+                       $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
                }
 
                return $status;
        }
 
-       /**
-        * @see SwiftFileBackend::doExecuteOpHandlesInternal()
-        */
-       protected function getResponseCopy( CF_Async_Op $cfOp, Status $status, array $params ) {
-               try {
-                       $cfOp->getLastResponse();
-               } catch ( NoSuchObjectException $e ) { // source object does not exist
-                       $status->fatal( 'backend-fail-copy', $params['src'], $params['dst'] );
-               }
-       }
-
        protected function doMoveInternal( array $params ) {
                $status = Status::newGood();
 
@@ -497,65 +383,49 @@ class SwiftFileBackend extends FileBackendStore {
                        return $status;
                }
 
-               // (a) Check the source/destination containers and destination object
-               try {
-                       $sContObj = $this->getContainer( $srcCont );
-                       $dContObj = $this->getContainer( $dstCont );
-               } catch ( NoSuchContainerException $e ) {
-                       if ( empty( $params['ignoreMissingSource'] ) || isset( $sContObj ) ) {
-                               $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
-                       }
-
-                       return $status;
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
-                       return $status;
+               $reqs = array(
+                       array(
+                               'method'  => 'PUT',
+                               'url'     => array( $dstCont, $dstRel ),
+                               'headers' => array(
+                                       'x-copy-from' => '/' . rawurlencode( $srcCont ) .
+                                               '/' . str_replace( "%2F", "/", rawurlencode( $srcRel ) )
+                               ) + $this->sanitizeHdrs( $params ) // extra headers merged into object
+                       )
+               );
+               if ( "{$srcCont}/{$srcRel}" !== "{$dstCont}/{$dstRel}" ) {
+                       $reqs[] = array(
+                               'method'  => 'DELETE',
+                               'url'     => array( $srcCont, $srcRel ),
+                               'headers' => array()
+                       );
                }
 
-               // (b) Actually move the file to the destination
-               try {
-                       $srcObj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
-                       $dstObj = new CF_Object( $dContObj, $dstRel, false, false ); // skip HEAD
-                       $hdrs = array(); // source file headers to override with new values
-                       // Set any other custom headers if requested
-                       if ( isset( $params['headers'] ) ) {
-                               $hdrs += $this->sanitizeHdrs( $params['headers'] );
-                       }
-                       if ( !empty( $params['async'] ) ) { // deferred
-                               $op = $sContObj->move_object_to_async( $srcRel, $dContObj, $dstRel, null, $hdrs );
-                               $status->value = new SwiftFileOpHandle( $this, $params, 'Move', $op );
-                               $status->value->affectedObjects[] = $srcObj;
-                               $status->value->affectedObjects[] = $dstObj;
-                       } else { // actually write the object in Swift
-                               $sContObj->move_object_to( $srcRel, $dContObj, $dstRel, null, $hdrs );
-                               $this->purgeCDNCache( array( $srcObj ) );
-                               $this->purgeCDNCache( array( $dstObj ) );
-                       }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( NoSuchObjectException $e ) { // source object does not exist
-                       if ( empty( $params['ignoreMissingSource'] ) ) {
+               $be = $this;
+               $method = __METHOD__;
+               $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+                       if ( $request['method'] === 'PUT' && $rcode === 201 ) {
+                               // good
+                       } elseif ( $request['method'] === 'DELETE' && $rcode === 204 ) {
+                               // good
+                       } elseif ( $rcode === 404 ) {
                                $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
+                       } else {
+                               $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
                        }
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+               };
+
+               $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+               if ( !empty( $params['async'] ) ) { // deferred
+                       $status->value = $opHandle;
+               } else { // actually move the object in Swift
+                       $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
                }
 
                return $status;
        }
 
-       /**
-        * @see SwiftFileBackend::doExecuteOpHandlesInternal()
-        */
-       protected function getResponseMove( CF_Async_Op $cfOp, Status $status, array $params ) {
-               try {
-                       $cfOp->getLastResponse();
-               } catch ( NoSuchObjectException $e ) { // source object does not exist
-                       $status->fatal( 'backend-fail-move', $params['src'], $params['dst'] );
-               }
-       }
-
        protected function doDeleteInternal( array $params ) {
                $status = Status::newGood();
 
@@ -566,49 +436,38 @@ class SwiftFileBackend extends FileBackendStore {
                        return $status;
                }
 
-               try {
-                       $sContObj = $this->getContainer( $srcCont );
-                       $srcObj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
-                       if ( !empty( $params['async'] ) ) { // deferred
-                               $op = $sContObj->delete_object_async( $srcRel );
-                               $status->value = new SwiftFileOpHandle( $this, $params, 'Delete', $op );
-                               $status->value->affectedObjects[] = $srcObj;
-                       } else { // actually write the object in Swift
-                               $sContObj->delete_object( $srcRel );
-                               $this->purgeCDNCache( array( $srcObj ) );
-                       }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( NoSuchContainerException $e ) {
-                       if ( empty( $params['ignoreMissingSource'] ) ) {
-                               $status->fatal( 'backend-fail-delete', $params['src'] );
-                       }
-               } catch ( NoSuchObjectException $e ) {
-                       if ( empty( $params['ignoreMissingSource'] ) ) {
-                               $status->fatal( 'backend-fail-delete', $params['src'] );
+               $reqs = array(
+                       array(
+                               'method'  => 'DELETE',
+                               'url'     => array( $srcCont, $srcRel ),
+                               'headers' => array()
+               ) );
+
+               $be = $this;
+               $method = __METHOD__;
+               $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+                       if ( $rcode === 204 ) {
+                               // good
+                       } elseif ( $rcode === 404 ) {
+                               if ( empty( $params['ignoreMissingSource'] ) ) {
+                                       $status->fatal( 'backend-fail-delete', $params['src'] );
+                               }
+                       } else {
+                               $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
                        }
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+               };
+
+               $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+               if ( !empty( $params['async'] ) ) { // deferred
+                       $status->value = $opHandle;
+               } else { // actually delete the object in Swift
+                       $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
                }
 
                return $status;
        }
 
-       /**
-        * @see SwiftFileBackend::doExecuteOpHandlesInternal()
-        */
-       protected function getResponseDelete( CF_Async_Op $cfOp, Status $status, array $params ) {
-               try {
-                       $cfOp->getLastResponse();
-               } catch ( NoSuchContainerException $e ) {
-                       $status->fatal( 'backend-fail-delete', $params['src'] );
-               } catch ( NoSuchObjectException $e ) {
-                       if ( empty( $params['ignoreMissingSource'] ) ) {
-                               $status->fatal( 'backend-fail-delete', $params['src'] );
-                       }
-               }
-       }
-
        protected function doDescribeInternal( array $params ) {
                $status = Status::newGood();
 
@@ -619,25 +478,48 @@ class SwiftFileBackend extends FileBackendStore {
                        return $status;
                }
 
-               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...
-                       if ( isset( $params['headers'] ) ) {
-                               $srcObj->headers = $this->sanitizeHdrs( $params['headers'] ) + $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 ) {
+               // Fetch the old object headers/metadata...this should be in stat cache by now
+               $stat = $this->getFileStat( array( 'src' => $params['src'], 'latest' => 1 ) );
+               if ( $stat && !isset( $stat['xattr'] ) ) { // older cache entry
+                       $stat = $this->doGetFileStat( array( 'src' => $params['src'], 'latest' => 1 ) );
+               }
+               if ( !$stat ) {
                        $status->fatal( 'backend-fail-describe', $params['src'] );
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+
+                       return $status;
+               }
+
+               // POST clears prior headers, so we need to merge the changes in to the old ones
+               $metaHdrs = array();
+               foreach ( $stat['xattr']['metadata'] as $name => $value ) {
+                       $metaHdrs["x-object-meta-$name"] = $value;
+               }
+               $customHdrs = $this->sanitizeHdrs( $params ) + $stat['xattr']['headers'];
+
+               $reqs = array( array(
+                       'method'  => 'POST',
+                       'url'     => array( $srcCont, $srcRel ),
+                       'headers' => $metaHdrs + $customHdrs
+               ) );
+
+               $be = $this;
+               $method = __METHOD__;
+               $handler = function( array $request, Status $status ) use ( $be, $method, $params ) {
+                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $request['response'];
+                       if ( $rcode === 202 ) {
+                               // good
+                       } elseif ( $rcode === 404 ) {
+                               $status->fatal( 'backend-fail-describe', $params['src'] );
+                       } else {
+                               $be->onError( $status, $method, $params, $rerr, $rcode, $rdesc );
+                       }
+               };
+
+               $opHandle = new SwiftFileOpHandle( $this, $handler, $reqs );
+               if ( !empty( $params['async'] ) ) { // deferred
+                       $status->value = $opHandle;
+               } else { // actually change the object in Swift
+                       $status->merge( current( $this->doExecuteOpHandlesInternal( array( $opHandle ) ) ) );
                }
 
                return $status;
@@ -647,119 +529,61 @@ class SwiftFileBackend extends FileBackendStore {
                $status = Status::newGood();
 
                // (a) Check if container already exists
-               try {
-                       $this->getContainer( $fullCont );
-
-                       // NoSuchContainerException not thrown: container must exist
-                       return $status; // already exists
-               } catch ( NoSuchContainerException $e ) {
-                       // NoSuchContainerException thrown: container does not exist
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
+               $stat = $this->getContainerStat( $fullCont );
+               if ( is_array( $stat ) ) {
+                       return $status; // already there
+               } elseif ( $stat === null ) {
+                       $status->fatal( 'backend-fail-internal', $this->name );
                        return $status;
                }
 
-               // (b) Create container as needed
-               try {
-                       $contObj = $this->createContainer( $fullCont );
-                       if ( !empty( $params['noAccess'] ) ) {
-                               // Make container private to end-users...
-                               $status->merge( $this->doSecureInternal( $fullCont, $dir, $params ) );
-                       } else {
-                               // Make container public to end-users...
-                               $status->merge( $this->doPublishInternal( $fullCont, $dir, $params ) );
-                       }
-                       if ( $this->swiftUseCDN ) { // Rackspace style CDN
-                               $contObj->make_public( $this->swiftCDNExpiry );
-                       }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
-                       return $status;
+               // (b) Create container as needed with proper ACLs
+               if ( $stat === false ) {
+                       $params['op'] = 'prepare';
+                       $status->merge( $this->createContainer( $fullCont, $params ) );
                }
 
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doSecureInternal()
-        * @param string $fullCont
-        * @param string $dir
-        * @param array $params
-        * @return Status
-        */
        protected function doSecureInternal( $fullCont, $dir, array $params ) {
                $status = Status::newGood();
                if ( empty( $params['noAccess'] ) ) {
                        return $status; // nothing to do
                }
 
-               // Restrict container from end-users...
-               try {
-                       // doPrepareInternal() should have been called,
-                       // so the Swift container should already exist...
-                       $contObj = $this->getContainer( $fullCont ); // normally a cache hit
-                       // NoSuchContainerException not thrown: container must exist
-
+               $stat = $this->getContainerStat( $fullCont );
+               if ( is_array( $stat ) ) {
                        // Make container private to end-users...
                        $status->merge( $this->setContainerAccess(
-                               $contObj,
-                               array( $this->auth->username ), // read
-                               array( $this->auth->username ) // write
+                               $fullCont,
+                               array( $this->swiftUser ), // read
+                               array( $this->swiftUser ) // write
                        ) );
-                       if ( $this->swiftUseCDN && $contObj->is_public() ) { // Rackspace style CDN
-                               $contObj->make_private();
-                       }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+               } elseif ( $stat === false ) {
+                       $status->fatal( 'backend-fail-usable', $params['dir'] );
+               } else {
+                       $status->fatal( 'backend-fail-internal', $this->name );
                }
 
                return $status;
        }
 
-       /**
-        * @see FileBackendStore::doPublishInternal()
-        * @param string $fullCont
-        * @param string $dir
-        * @param array $params
-        * @return Status
-        */
        protected function doPublishInternal( $fullCont, $dir, array $params ) {
                $status = Status::newGood();
 
-               // Unrestrict container from end-users...
-               try {
-                       // doPrepareInternal() should have been called,
-                       // so the Swift container should already exist...
-                       $contObj = $this->getContainer( $fullCont ); // normally a cache hit
-                       // NoSuchContainerException not thrown: container must exist
-
+               $stat = $this->getContainerStat( $fullCont );
+               if ( is_array( $stat ) ) {
                        // Make container public to end-users...
-                       if ( $this->swiftAnonUser != '' ) {
-                               $status->merge( $this->setContainerAccess(
-                                       $contObj,
-                                       array( $this->auth->username, $this->swiftAnonUser ), // read
-                                       array( $this->auth->username, $this->swiftAnonUser ) // write
-                               ) );
-                       } else {
-                               $status->merge( $this->setContainerAccess(
-                                       $contObj,
-                                       array( $this->auth->username, '.r:*' ), // read
-                                       array( $this->auth->username ) // write
-                               ) );
-                       }
-                       if ( $this->swiftUseCDN && !$contObj->is_public() ) { // Rackspace style CDN
-                               $contObj->make_public();
-                       }
-               } catch ( CDNNotEnabledException $e ) {
-                       // CDN not enabled; nothing to see here
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+                       $status->merge( $this->setContainerAccess(
+                               $fullCont,
+                               array( $this->swiftUser, '.r:*' ), // read
+                               array( $this->swiftUser ) // write
+                       ) );
+               } elseif ( $stat === false ) {
+                       $status->fatal( 'backend-fail-usable', $params['dir'] );
+               } else {
+                       $status->fatal( 'backend-fail-internal', $this->name );
                }
 
                return $status;
@@ -774,29 +598,18 @@ class SwiftFileBackend extends FileBackendStore {
                }
 
                // (a) Check the container
-               try {
-                       $contObj = $this->getContainer( $fullCont, true );
-               } catch ( NoSuchContainerException $e ) {
+               $stat = $this->getContainerStat( $fullCont, true );
+               if ( $stat === false ) {
                        return $status; // ok, nothing to do
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
+               } elseif ( !is_array( $stat ) ) {
+                       $status->fatal( 'backend-fail-internal', $this->name );
                        return $status;
                }
 
                // (b) Delete the container if empty
-               if ( $contObj->object_count == 0 ) {
-                       try {
-                               $this->deleteContainer( $fullCont );
-                       } catch ( NoSuchContainerException $e ) {
-                               return $status; // race?
-                       } catch ( NonEmptyContainerException $e ) {
-                               return $status; // race? consistency delay?
-                       } catch ( CloudFilesException $e ) { // some other exception?
-                               $this->handleException( $e, $status, __METHOD__, $params );
-
-                               return $status;
-                       }
+               if ( $stat['count'] == 0 ) {
+                       $params['op'] = 'clean';
+                       $status->merge( $this->deleteContainer( $fullCont, $params ) );
                }
 
                return $status;
@@ -808,22 +621,51 @@ class SwiftFileBackend extends FileBackendStore {
                        return false; // invalid storage path
                }
 
-               $stat = false;
-               try {
-                       $contObj = $this->getContainer( $srcCont );
-                       $srcObj = $contObj->get_object( $srcRel, $this->headersFromParams( $params ) );
-                       $this->addMissingMetadata( $srcObj, $params['src'] );
+               $auth = $this->getAuthentication();
+               if ( !$auth ) {
+                       return null;
+               }
+
+               // (a) Check the container
+               $cstat = $this->getContainerStat( $srcCont, true );
+               if ( $cstat === false ) {
+                       return false; // ok, nothing to do
+               } elseif ( !is_array( $cstat ) ) {
+                       return null;
+               }
+
+               // (b) Check the file
+               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                       'method'  => 'HEAD',
+                       'url'     => $this->storageUrl( $auth, $srcCont, $srcRel ),
+                       'headers' => $this->authTokenHeaders( $auth ) + $this->headersFromParams( $params )
+               ) );
+               if ( $rcode === 200 || $rcode === 204 ) {
+                       // Update the object if it is missing some headers
+                       $rhdrs = $this->addMissingMetadata( $rhdrs, $params['src'] );
+                       // Fetch all of the custom metadata headers
+                       $metadata = array();
+                       foreach ( $rhdrs as $name => $value ) {
+                               if ( strpos( $name, 'x-object-meta-' ) === 0 ) {
+                                       $metadata[substr( $name, strlen( 'x-object-meta-' ) )] = $value;
+                               }
+                       }
+                       // Fetch all of the custom raw HTTP headers
+                       $headers = $this->sanitizeHdrs( array( 'headers' => $rhdrs ) );
                        $stat = array(
                                // Convert various random Swift dates to TS_MW
-                               'mtime' => $this->convertSwiftDate( $srcObj->last_modified, TS_MW ),
-                               'size' => (int)$srcObj->content_length,
-                               'sha1' => $srcObj->getMetadataValue( 'Sha1base36' )
+                               'mtime' => $this->convertSwiftDate( $rhdrs['last-modified'], TS_MW ),
+                               // Empty objects actually return no content-length header in Ceph
+                               'size'  => isset( $rhdrs['content-length'] ) ? (int)$rhdrs['content-length'] : 0,
+                               'sha1'  => $rhdrs[ 'x-object-meta-sha1base36'],
+                               'md5'   => ctype_xdigit( $rhdrs['etag'] ) ? $rhdrs['etag'] : null,
+                               'xattr' => array( 'metadata' => $metadata, 'headers' => $headers )
                        );
-               } catch ( NoSuchContainerException $e ) {
-               } catch ( NoSuchObjectException $e ) {
-               } catch ( CloudFilesException $e ) { // some other exception?
+               } elseif ( $rcode === 404 ) {
+                       $stat = false;
+               } else {
                        $stat = null;
-                       $this->handleException( $e, null, __METHOD__, $params );
+                       $this->onError( null, __METHOD__, $params, $rerr, $rcode, $rdesc );
                }
 
                return $stat;
@@ -837,28 +679,38 @@ class SwiftFileBackend extends FileBackendStore {
         * @param string $ts
         * @param int $format Output format (TS_* constant)
         * @return string
-        * @throws MWException
+        * @throws FileBackendError
         */
        protected function convertSwiftDate( $ts, $format = TS_MW ) {
-               $timestamp = new MWTimestamp( $ts );
-
-               return $timestamp->getTimestamp( $format );
+               try {
+                       $timestamp = new MWTimestamp( $ts );
+                       return $timestamp->getTimestamp( $format );
+               } catch ( MWException $e ) {
+                       throw new FileBackendError( $e->getMessage() );
+               }
        }
 
        /**
         * Fill in any missing object metadata and save it to Swift
         *
-        * @param CF_Object $obj
+        * @param array $objHdrs Object response headers
         * @param string $path Storage path to object
-        * @return bool Success
-        * @throws Exception cloudfiles exceptions
+        * @return array New headers
         */
-       protected function addMissingMetadata( CF_Object $obj, $path ) {
-               if ( $obj->getMetadataValue( 'Sha1base36' ) !== null ) {
-                       return true; // nothing to do
+       protected function addMissingMetadata( array $objHdrs, $path ) {
+               if ( isset( $objHdrs['x-object-meta-sha1base36'] ) ) {
+                       return $objHdrs; // nothing to do
                }
-               wfProfileIn( __METHOD__ );
+
+               $section = new ProfileSection( __METHOD__ );
                trigger_error( "$path was not stored with SHA-1 metadata.", E_USER_WARNING );
+
+               $auth = $this->getAuthentication();
+               if ( !$auth ) {
+                       $objHdrs['x-object-meta-sha1base36'] = false;
+                       return false; // failed
+               }
+
                $status = Status::newGood();
                $scopeLockS = $this->getScopedFileLocks( array( $path ), LockManager::LOCK_UW, $status );
                if ( $status->isOK() ) {
@@ -866,17 +718,21 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( $tmpFile ) {
                                $hash = $tmpFile->getSha1Base36();
                                if ( $hash !== false ) {
-                                       $obj->setMetadataValues( array( 'Sha1base36' => $hash ) );
-                                       $obj->sync_metadata(); // save to Swift
-                                       wfProfileOut( __METHOD__ );
-
-                                       return true; // success
+                                       $objHdrs['x-object-meta-sha1base36'] = $hash;
+                                       list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
+                                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                                               'method'  => 'POST',
+                                               'url'     => $this->storageUrl( $auth, $srcCont, $srcRel ),
+                                               'headers' => $this->authTokenHeaders( $auth ) + $objHdrs
+                                       ) );
+                                       if ( $rcode >= 200 && $rcode <= 299 ) {
+                                               return true; // success
+                                       }
                                }
                        }
                }
                trigger_error( "Unable to set SHA-1 metadata for $path", E_USER_WARNING );
-               $obj->setMetadataValues( array( 'Sha1base36' => false ) );
-               wfProfileOut( __METHOD__ );
+               $objHdrs['x-object-meta-sha1base36'] = false;
 
                return false; // failed
        }
@@ -884,91 +740,62 @@ class SwiftFileBackend extends FileBackendStore {
        protected function doGetFileContentsMulti( array $params ) {
                $contents = array();
 
+               $auth = $this->getAuthentication();
+
                $ep = array_diff_key( $params, array( 'srcs' => 1 ) ); // for error logging
                // Blindly create tmp files and stream to them, catching any exception if the file does
                // not exist. Doing stats here is useless and will loop infinitely in addMissingMetadata().
                foreach ( array_chunk( $params['srcs'], $params['concurrency'] ) as $pathBatch ) {
-                       $cfOps = array(); // (path => CF_Async_Op)
+                       $reqs = array(); // (path => op)
 
                        foreach ( $pathBatch as $path ) { // each path in this concurrent batch
                                list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
-                               if ( $srcRel === null ) {
+                               if ( $srcRel === null || !$auth ) {
                                        $contents[$path] = false;
                                        continue;
                                }
                                $data = false;
-                               try {
-                                       $sContObj = $this->getContainer( $srcCont );
-                                       $obj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
-                                       // Create a new temporary memory file...
-                                       $handle = fopen( 'php://temp', 'wb' );
-                                       if ( $handle ) {
-                                               $headers = $this->headersFromParams( $params );
-                                               if ( count( $pathBatch ) > 1 ) {
-                                                       $cfOps[$path] = $obj->stream_async( $handle, $headers );
-                                                       $cfOps[$path]->_file_handle = $handle; // close this later
-                                               } else {
-                                                       $obj->stream( $handle, $headers );
-                                                       rewind( $handle ); // start from the beginning
-                                                       $data = stream_get_contents( $handle );
-                                                       fclose( $handle );
-                                               }
-                                       } else {
-                                               $data = false;
-                                       }
-                               } catch ( NoSuchContainerException $e ) {
-                                       $data = false;
-                               } catch ( NoSuchObjectException $e ) {
-                                       $data = false;
-                               } catch ( CloudFilesException $e ) { // some other exception?
+                               // Create a new temporary memory file...
+                               $handle = fopen( 'php://temp', 'wb' );
+                               if ( $handle ) {
+                                       $reqs[$path] = array(
+                                               'method'  => 'GET',
+                                               'url'     => $this->storageUrl( $auth, $srcCont, $srcRel ),
+                                               'headers' => $this->authTokenHeaders( $auth )
+                                                       + $this->headersFromParams( $params ),
+                                               'stream'  => $handle,
+                                       );
+                               } else {
                                        $data = false;
-                                       $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
                                }
                                $contents[$path] = $data;
                        }
 
-                       $batch = new CF_Async_Op_Batch( $cfOps );
-                       $cfOps = $batch->execute();
-                       foreach ( $cfOps as $path => $cfOp ) {
-                               try {
-                                       $cfOp->getLastResponse();
-                                       rewind( $cfOp->_file_handle ); // start from the beginning
-                                       $contents[$path] = stream_get_contents( $cfOp->_file_handle );
-                               } catch ( NoSuchContainerException $e ) {
-                                       $contents[$path] = false;
-                               } catch ( NoSuchObjectException $e ) {
-                                       $contents[$path] = false;
-                               } catch ( CloudFilesException $e ) { // some other exception?
+                       $reqs = $this->http->runMulti( $reqs );
+                       foreach ( $reqs as $path => $op ) {
+                               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $op['response'];
+                               if ( $rcode >= 200 && $rcode <= 299 ) {
+                                       rewind( $op['stream'] ); // start from the beginning
+                                       $contents[$path] = stream_get_contents( $op['stream'] );
+                               } elseif ( $rcode === 404 ) {
                                        $contents[$path] = false;
-                                       $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
+                               } else {
+                                       $this->onError( null, __METHOD__,
+                                               array( 'src' => $path ) + $ep, $rerr, $rcode, $rdesc );
                                }
-                               fclose( $cfOp->_file_handle ); // close open handle
+                               fclose( $op['stream'] ); // close open handle
                        }
                }
 
                return $contents;
        }
 
-       /**
-        * @see FileBackendStore::doDirectoryExists()
-        * @param string $fullCont
-        * @param string $dir
-        * @param array $params
-        * @return bool|null
-        */
        protected function doDirectoryExists( $fullCont, $dir, array $params ) {
-               try {
-                       $container = $this->getContainer( $fullCont );
-                       $prefix = ( $dir == '' ) ? null : "{$dir}/";
-
-                       return ( count( $container->list_objects( 1, null, $prefix ) ) > 0 );
-               } catch ( NoSuchContainerException $e ) {
-                       return false;
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, null, __METHOD__,
-                               array( 'cont' => $fullCont, 'dir' => $dir ) );
+               $prefix = ( $dir == '' ) ? null : "{$dir}/";
+               $status = $this->objectListing( $fullCont, 'names', 1, null, $prefix );
+               if ( $status->isOk() ) {
+                       return ( count( $status->value ) );
                }
-
                return null; // error
        }
 
@@ -1012,63 +839,63 @@ class SwiftFileBackend extends FileBackendStore {
                }
 
                $section = new ProfileSection( __METHOD__ . '-' . $this->name );
-               try {
-                       $container = $this->getContainer( $fullCont );
-                       $prefix = ( $dir == '' ) ? null : "{$dir}/";
-                       // Non-recursive: only list dirs right under $dir
-                       if ( !empty( $params['topOnly'] ) ) {
-                               $objects = $container->list_objects( $limit, $after, $prefix, null, '/' );
-                               foreach ( $objects as $object ) { // files and directories
-                                       if ( substr( $object, -1 ) === '/' ) {
-                                               $dirs[] = $object; // directories end in '/'
-                                       }
+
+               $prefix = ( $dir == '' ) ? null : "{$dir}/";
+               // Non-recursive: only list dirs right under $dir
+               if ( !empty( $params['topOnly'] ) ) {
+                       $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix, '/' );
+                       if ( !$status->isOk() ) {
+                               return $dirs; // error
+                       }
+                       $objects = $status->value;
+                       foreach ( $objects as $object ) { // files and directories
+                               if ( substr( $object, -1 ) === '/' ) {
+                                       $dirs[] = $object; // directories end in '/'
                                }
-                       // Recursive: list all dirs under $dir and its subdirs
-                       } else {
-                               // Get directory from last item of prior page
-                               $lastDir = $this->getParentDir( $after ); // must be first page
-                               $objects = $container->list_objects( $limit, $after, $prefix );
-                               foreach ( $objects as $object ) { // files
-                                       $objectDir = $this->getParentDir( $object ); // directory of object
-                                       if ( $objectDir !== false && $objectDir !== $dir ) {
-                                               // Swift stores paths in UTF-8, using binary sorting.
-                                               // See function "create_container_table" in common/db.py.
-                                               // If a directory is not "greater" than the last one,
-                                               // then it was already listed by the calling iterator.
-                                               if ( strcmp( $objectDir, $lastDir ) > 0 ) {
-                                                       $pDir = $objectDir;
-                                                       do { // add dir and all its parent dirs
-                                                               $dirs[] = "{$pDir}/";
-                                                               $pDir = $this->getParentDir( $pDir );
-                                                       } while ( $pDir !== false // sanity
-                                                               && strcmp( $pDir, $lastDir ) > 0 // not done already
-                                                               && strlen( $pDir ) > strlen( $dir ) // within $dir
-                                                       );
-                                               }
-                                               $lastDir = $objectDir;
+                       }
+               // Recursive: list all dirs under $dir and its subdirs
+               } else {
+                       $getParentDir = function( $path ) {
+                               return ( strpos( $path, '/' ) !== false ) ? dirname( $path ) : false;
+                       };
+                       // Get directory from last item of prior page
+                       $lastDir = $getParentDir( $after ); // must be first page
+                       $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix );
+                       if ( !$status->isOk() ) {
+                               return $dirs; // error
+                       }
+                       $objects = $status->value;
+                       foreach ( $objects as $object ) { // files
+                               $objectDir = $getParentDir( $object ); // directory of object
+                               if ( $objectDir !== false && $objectDir !== $dir ) {
+                                       // Swift stores paths in UTF-8, using binary sorting.
+                                       // See function "create_container_table" in common/db.py.
+                                       // If a directory is not "greater" than the last one,
+                                       // then it was already listed by the calling iterator.
+                                       if ( strcmp( $objectDir, $lastDir ) > 0 ) {
+                                               $pDir = $objectDir;
+                                               do { // add dir and all its parent dirs
+                                                       $dirs[] = "{$pDir}/";
+                                                       $pDir = $getParentDir( $pDir );
+                                               } while ( $pDir !== false // sanity
+                                                       && strcmp( $pDir, $lastDir ) > 0 // not done already
+                                                       && strlen( $pDir ) > strlen( $dir ) // within $dir
+                                               );
                                        }
+                                       $lastDir = $objectDir;
                                }
                        }
-                       // Page on the unfiltered directory listing (what is returned may be filtered)
-                       if ( count( $objects ) < $limit ) {
-                               $after = INF; // avoid a second RTT
-                       } else {
-                               $after = end( $objects ); // update last item
-                       }
-               } catch ( NoSuchContainerException $e ) {
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, null, __METHOD__,
-                               array( 'cont' => $fullCont, 'dir' => $dir ) );
-                       throw new FileBackendError( "Got " . get_class( $e ) . " exception." );
+               }
+               // Page on the unfiltered directory listing (what is returned may be filtered)
+               if ( count( $objects ) < $limit ) {
+                       $after = INF; // avoid a second RTT
+               } else {
+                       $after = end( $objects ); // update last item
                }
 
                return $dirs;
        }
 
-       protected function getParentDir( $path ) {
-               return ( strpos( $path, '/' ) !== false ) ? dirname( $path ) : false;
-       }
-
        /**
         * Do not call this function outside of SwiftFileBackendFileList
         *
@@ -1087,43 +914,36 @@ class SwiftFileBackend extends FileBackendStore {
                }
 
                $section = new ProfileSection( __METHOD__ . '-' . $this->name );
-               try {
-                       $container = $this->getContainer( $fullCont );
-                       $prefix = ( $dir == '' ) ? null : "{$dir}/";
-
-                       // $objects will contain a list of unfiltered names or CF_Object items
-                       // Non-recursive: only list files right under $dir
-                       if ( !empty( $params['topOnly'] ) ) {
-                               if ( !empty( $params['adviseStat'] ) ) {
-                                       // Note: get_objects() does not include directories
-                                       $objects = $container->get_objects( $limit, $after, $prefix, null, '/' );
-                               } else {
-                                       // Note: list_objects() includes directories here
-                                       $objects = $container->list_objects( $limit, $after, $prefix, null, '/' );
-                               }
-                               $files = $this->buildFileObjectListing( $params, $dir, $objects );
-                       // Recursive: list all files under $dir and its subdirs
+
+               $prefix = ( $dir == '' ) ? null : "{$dir}/";
+               // $objects will contain a list of unfiltered names or CF_Object items
+               // Non-recursive: only list files right under $dir
+               if ( !empty( $params['topOnly'] ) ) {
+                       if ( !empty( $params['adviseStat'] ) ) {
+                               $status = $this->objectListing( $fullCont, 'info', $limit, $after, $prefix, '/' );
                        } else {
-                               // Note: get_objects()/list_objects() here only return file objects
-                               if ( !empty( $params['adviseStat'] ) ) {
-                                       $objects = $container->get_objects( $limit, $after, $prefix );
-                               } else {
-                                       $objects = $container->list_objects( $limit, $after, $prefix );
-                               }
-                               $files = $this->buildFileObjectListing( $params, $dir, $objects );
+                               $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix, '/' );
                        }
-                       // Page on the unfiltered object listing (what is returned may be filtered)
-                       if ( count( $objects ) < $limit ) {
-                               $after = INF; // avoid a second RTT
+               // Recursive: list all files under $dir and its subdirs
+               } else {
+                       if ( !empty( $params['adviseStat'] ) ) {
+                               $status = $this->objectListing( $fullCont, 'info', $limit, $after, $prefix );
                        } else {
-                               $after = end( $objects ); // update last item
-                               $after = is_object( $after ) ? $after->name : $after;
+                               $status = $this->objectListing( $fullCont, 'names', $limit, $after, $prefix );
                        }
-               } catch ( NoSuchContainerException $e ) {
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, null, __METHOD__,
-                               array( 'cont' => $fullCont, 'dir' => $dir ) );
-                       throw new FileBackendError( "Got " . get_class( $e ) . " exception." );
+               }
+               // Reformat this list into a list of (name, stat array or null) entries
+               if ( !$status->isOk() ) {
+                       return $files; // error
+               }
+               $objects = $status->value;
+               $files = $this->buildFileObjectListing( $params, $dir, $objects );
+               // Page on the unfiltered object listing (what is returned may be filtered)
+               if ( count( $objects ) < $limit ) {
+                       $after = INF; // avoid a second RTT
+               } else {
+                       $after = end( $objects ); // update last item
+                       $after = is_object( $after ) ? $after->name : $after;
                }
 
                return $files;
@@ -1142,10 +962,14 @@ class SwiftFileBackend extends FileBackendStore {
                $names = array();
                foreach ( $objects as $object ) {
                        if ( is_object( $object ) ) {
+                               if ( isset( $object->subdir ) || !isset( $object->name ) ) {
+                                       continue; // virtual directory entry; ignore
+                               }
                                $stat = array(
                                        // Convert various random Swift dates to TS_MW
-                                       'mtime' => $this->convertSwiftDate( $object->last_modified, TS_MW ),
-                                       'size' => (int)$object->content_length,
+                                       'mtime'  => $this->convertSwiftDate( $object->last_modified, TS_MW ),
+                                       'size'   => (int)$object->bytes,
+                                       'md5'    => ctype_xdigit( $object->hash ) ? $object->hash : null,
                                        'latest' => false // eventually consistent
                                );
                                $names[] = array( $object->name, $stat );
@@ -1168,6 +992,20 @@ class SwiftFileBackend extends FileBackendStore {
                $this->cheapCache->set( $path, 'stat', $val );
        }
 
+       protected function doGetFileXAttributes( array $params ) {
+               $stat = $this->getFileStat( $params );
+               if ( $stat ) {
+                       if ( !isset( $stat['xattr'] ) ) {
+                               // Stat entries filled by file listings don't include metadata/headers
+                               $this->clearCache( array( $params['src'] ) );
+                               $stat = $this->getFileStat( $params );
+                       }
+                       return $stat['xattr'];
+               } else {
+                       return false;
+               }
+       }
+
        protected function doGetFileSha1base36( array $params ) {
                $stat = $this->getFileStat( $params );
                if ( $stat ) {
@@ -1191,26 +1029,28 @@ class SwiftFileBackend extends FileBackendStore {
                        $status->fatal( 'backend-fail-invalidpath', $params['src'] );
                }
 
-               try {
-                       $cont = $this->getContainer( $srcCont );
-               } catch ( NoSuchContainerException $e ) {
+               $auth = $this->getAuthentication();
+               if ( !$auth || !is_array( $this->getContainerStat( $srcCont ) ) ) {
                        $status->fatal( 'backend-fail-stream', $params['src'] );
-
-                       return $status;
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
-
                        return $status;
                }
 
-               try {
-                       $output = fopen( 'php://output', 'wb' );
-                       $obj = new CF_Object( $cont, $srcRel, false, false ); // skip HEAD
-                       $obj->stream( $output, $this->headersFromParams( $params ) );
-               } catch ( NoSuchObjectException $e ) {
+               $handle = fopen( 'php://output', 'wb' );
+
+               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                       'method'  => 'GET',
+                       'url'     => $this->storageUrl( $auth, $srcCont, $srcRel ),
+                       'headers' => $this->authTokenHeaders( $auth )
+                               + $this->headersFromParams( $params ),
+                       'stream'  => $handle,
+               ) );
+
+               if ( $rcode >= 200 && $rcode <= 299 ) {
+                       // good
+               } elseif ( $rcode === 404 ) {
                        $status->fatal( 'backend-fail-stream', $params['src'] );
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, $status, __METHOD__, $params );
+               } else {
+                       $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
                }
 
                return $status;
@@ -1219,66 +1059,58 @@ class SwiftFileBackend extends FileBackendStore {
        protected function doGetLocalCopyMulti( array $params ) {
                $tmpFiles = array();
 
+               $auth = $this->getAuthentication();
+
                $ep = array_diff_key( $params, array( 'srcs' => 1 ) ); // for error logging
                // Blindly create tmp files and stream to them, catching any exception if the file does
                // not exist. Doing a stat here is useless causes infinite loops in addMissingMetadata().
                foreach ( array_chunk( $params['srcs'], $params['concurrency'] ) as $pathBatch ) {
-                       $cfOps = array(); // (path => CF_Async_Op)
+                       $reqs = array(); // (path => op)
 
                        foreach ( $pathBatch as $path ) { // each path in this concurrent batch
                                list( $srcCont, $srcRel ) = $this->resolveStoragePathReal( $path );
-                               if ( $srcRel === null ) {
+                               if ( $srcRel === null || !$auth ) {
                                        $tmpFiles[$path] = null;
                                        continue;
                                }
                                $tmpFile = null;
-                               try {
-                                       $sContObj = $this->getContainer( $srcCont );
-                                       $obj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
-                                       // Get source file extension
-                                       $ext = FileBackend::extensionFromPath( $path );
-                                       // Create a new temporary file...
-                                       $tmpFile = TempFSFile::factory( 'localcopy_', $ext );
-                                       if ( $tmpFile ) {
-                                               $handle = fopen( $tmpFile->getPath(), 'wb' );
-                                               if ( $handle ) {
-                                                       $headers = $this->headersFromParams( $params );
-                                                       if ( count( $pathBatch ) > 1 ) {
-                                                               $cfOps[$path] = $obj->stream_async( $handle, $headers );
-                                                               $cfOps[$path]->_file_handle = $handle; // close this later
-                                                       } else {
-                                                               $obj->stream( $handle, $headers );
-                                                               fclose( $handle );
-                                                       }
-                                               } else {
-                                                       $tmpFile = null;
-                                               }
+                               // Get source file extension
+                               $ext = FileBackend::extensionFromPath( $path );
+                               // Create a new temporary file...
+                               $tmpFile = TempFSFile::factory( 'localcopy_', $ext );
+                               if ( $tmpFile ) {
+                                       $handle = fopen( $tmpFile->getPath(), 'wb' );
+                                       if ( $handle ) {
+                                               $reqs[$path] = array(
+                                                       'method'  => 'GET',
+                                                       'url'     => $this->storageUrl( $auth, $srcCont, $srcRel ),
+                                                       'headers' => $this->authTokenHeaders( $auth )
+                                                               + $this->headersFromParams( $params ),
+                                                       'stream'  => $handle,
+                                               );
+                                       } else {
+                                               $tmpFile = null;
                                        }
-                               } catch ( NoSuchContainerException $e ) {
-                                       $tmpFile = null;
-                               } catch ( NoSuchObjectException $e ) {
-                                       $tmpFile = null;
-                               } catch ( CloudFilesException $e ) { // some other exception?
-                                       $tmpFile = null;
-                                       $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
                                }
                                $tmpFiles[$path] = $tmpFile;
                        }
 
-                       $batch = new CF_Async_Op_Batch( $cfOps );
-                       $cfOps = $batch->execute();
-                       foreach ( $cfOps as $path => $cfOp ) {
-                               try {
-                                       $cfOp->getLastResponse();
-                               } catch ( NoSuchContainerException $e ) {
-                                       $tmpFiles[$path] = null;
-                               } catch ( NoSuchObjectException $e ) {
-                                       $tmpFiles[$path] = null;
-                               } catch ( CloudFilesException $e ) { // some other exception?
+                       $reqs = $this->http->runMulti( $reqs );
+                       foreach ( $reqs as $path => $op ) {
+                               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $op['response'];
+                               fclose( $op['stream'] ); // close open handle
+                               if ( $rcode >= 200 && $rcode <= 299
+                                       // double check that the disk is not full/broken
+                                       && $tmpFiles[$path]->getSize() == $rhdrs['content-length']
+                               ) {
+                                       // good
+                               } elseif ( $rcode === 404 ) {
+                                       $tmpFiles[$path] = false;
+                               } else {
                                        $tmpFiles[$path] = null;
-                                       $this->handleException( $e, null, __METHOD__, array( 'src' => $path ) + $ep );
+                                       $this->onError( null, __METHOD__,
+                                               array( 'src' => $path ) + $ep, $rerr, $rcode, $rdesc );
                                }
-                               fclose( $cfOp->_file_handle ); // close open handle
                        }
                }
 
@@ -1293,39 +1125,45 @@ class SwiftFileBackend extends FileBackendStore {
                        if ( $srcRel === null ) {
                                return null; // invalid path
                        }
-                       try {
-                               $ttl = isset( $params['ttl'] ) ? $params['ttl'] : 86400;
-                               $sContObj = $this->getContainer( $srcCont );
-                               $obj = new CF_Object( $sContObj, $srcRel, false, false ); // skip HEAD
-                               if ( $this->swiftTempUrlKey != '' ) {
-                                       return $obj->get_temp_url( $this->swiftTempUrlKey, $ttl, "GET" );
-                               } else { // give S3 API URL for rgw
-                                       $expires = time() + $ttl;
-                                       // Path for signature starts with the bucket
-                                       $spath = '/' . rawurlencode( $srcCont ) . '/' .
-                                               str_replace( '%2F', '/', rawurlencode( $srcRel ) );
-                                       // Calculate the hash
-                                       $signature = base64_encode( hash_hmac(
-                                               'sha1',
-                                               "GET\n\n\n{$expires}\n{$spath}",
-                                               $this->rgwS3SecretKey,
-                                               true // raw
-                                       ) );
 
-                                       // See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html.
-                                       // Note: adding a newline for empty CanonicalizedAmzHeaders does not work.
-                                       return wfAppendQuery(
-                                               str_replace( '/swift/v1', '', // S3 API is the rgw default
-                                                       $sContObj->cfs_http->getStorageUrl() . $spath ),
-                                               array(
-                                                       'Signature' => $signature,
-                                                       'Expires' => $expires,
-                                                       'AWSAccessKeyId' => $this->rgwS3AccessKey )
-                                       );
-                               }
-                       } catch ( NoSuchContainerException $e ) {
-                       } catch ( CloudFilesException $e ) { // some other exception?
-                               $this->handleException( $e, null, __METHOD__, $params );
+                       $auth = $this->getAuthentication();
+                       if ( !$auth ) {
+                               return null;
+                       }
+
+                       $ttl = isset( $params['ttl'] ) ? $params['ttl'] : 86400;
+                       $expires = time() + $ttl;
+
+                       if ( $this->swiftTempUrlKey != '' ) {
+                               $url = $this->storageUrl( $auth, $srcCont, $srcRel );
+                               // Swift wants the signature based on the unencoded object name
+                               $contPath = parse_url( $this->storageUrl( $auth, $srcCont ), PHP_URL_PATH );
+                               $signature = hash_hmac( 'sha1',
+                                       "GET\n{$expires}\n{$contPath}/{$srcRel}",
+                                       $this->swiftTempUrlKey
+                               );
+                               return "{$url}?temp_url_sig={$signature}&temp_url_expires={$expires}";
+                       } else { // give S3 API URL for rgw
+                               // Path for signature starts with the bucket
+                               $spath = '/' . rawurlencode( $srcCont ) . '/' .
+                                       str_replace( '%2F', '/', rawurlencode( $srcRel ) );
+                               // Calculate the hash
+                               $signature = base64_encode( hash_hmac(
+                                       'sha1',
+                                       "GET\n\n\n{$expires}\n{$spath}",
+                                       $this->rgwS3SecretKey,
+                                       true // raw
+                               ) );
+                               // See http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html.
+                               // Note: adding a newline for empty CanonicalizedAmzHeaders does not work.
+                               return wfAppendQuery(
+                                       str_replace( '/swift/v1', '', // S3 API is the rgw default
+                                               $this->storageUrl( $auth ) . $spath ),
+                                       array(
+                                               'Signature' => $signature,
+                                               'Expires' => $expires,
+                                               'AWSAccessKeyId' => $this->rgwS3AccessKey )
+                               );
                        }
                }
 
@@ -1347,7 +1185,7 @@ class SwiftFileBackend extends FileBackendStore {
        protected function headersFromParams( array $params ) {
                $hdrs = array();
                if ( !empty( $params['latest'] ) ) {
-                       $hdrs[] = 'X-Newest: true';
+                       $hdrs['x-newest'] = 'true';
                }
 
                return $hdrs;
@@ -1356,24 +1194,45 @@ class SwiftFileBackend extends FileBackendStore {
        protected function doExecuteOpHandlesInternal( array $fileOpHandles ) {
                $statuses = array();
 
-               $cfOps = array(); // list of CF_Async_Op objects
+               $auth = $this->getAuthentication();
+               if ( !$auth ) {
+                       foreach ( $fileOpHandles as $index => $fileOpHandle ) {
+                               $statuses[$index] = Status::newFatal( 'backend-fail-connect', $this->name );
+                       }
+                       return $statuses;
+               }
+
+               // Split the HTTP requests into stages that can be done concurrently
+               $httpReqsByStage = array(); // map of (stage => index => HTTP request)
                foreach ( $fileOpHandles as $index => $fileOpHandle ) {
-                       $cfOps[$index] = $fileOpHandle->cfOp;
-               }
-               $batch = new CF_Async_Op_Batch( $cfOps );
-
-               $cfOps = $batch->execute();
-               foreach ( $cfOps as $index => $cfOp ) {
-                       $status = Status::newGood();
-                       $function = 'getResponse' . $fileOpHandles[$index]->call;
-                       try { // catch exceptions; update status
-                               $this->$function( $cfOp, $status, $fileOpHandles[$index]->params );
-                               $this->purgeCDNCache( $fileOpHandles[$index]->affectedObjects );
-                       } catch ( CloudFilesException $e ) { // some other exception?
-                               $this->handleException( $e, $status,
-                                       __CLASS__ . ":$function", $fileOpHandles[$index]->params );
+                       $reqs = $fileOpHandle->httpOp;
+                       // Convert the 'url' parameter to an actual URL using $auth
+                       foreach ( $reqs as $stage => &$req ) {
+                               list( $container, $relPath ) = $req['url'];
+                               $req['url'] = $this->storageUrl( $auth, $container, $relPath );
+                               $req['headers'] = isset( $req['headers'] ) ? $req['headers'] : array();
+                               $req['headers'] = $this->authTokenHeaders( $auth ) + $req['headers'];
+                               $httpReqsByStage[$stage][$index] = $req;
+                       }
+                       $statuses[$index] = Status::newGood();
+               }
+
+               // Run all requests for the first stage, then the next, and so on
+               for ( $stage = 0; $stage < count( $httpReqsByStage ); ++$stage ) {
+                       $httpReqs = $this->http->runMulti( $httpReqsByStage[$stage] );
+                       foreach ( $httpReqs as $index => $httpReq ) {
+                               // Run the callback for each request of this operation
+                               $callback = $fileOpHandles[$index]->callback;
+                               call_user_func_array( $callback, array( $httpReq, $statuses[$index] ) );
+                               // On failure, abort all remaining requests for this operation
+                               // (e.g. abort the DELETE request if the COPY request fails for a move)
+                               if ( !$statuses[$index]->isOK() ) {
+                                       $stages = count( $fileOpHandles[$index]->httpOp );
+                                       for ( $s = ( $stage + 1 ); $s < $stages; ++$s ) {
+                                               unset( $httpReqsByStage[$s][$index] );
+                                       }
+                               }
                        }
-                       $statuses[$index] = $status;
                }
 
                return $statuses;
@@ -1387,7 +1246,7 @@ class SwiftFileBackend extends FileBackendStore {
         * In general, we don't allow listings to end-users. It's not useful, isn't well-defined
         * (lists are truncated to 10000 item with no way to page), and is just a performance risk.
         *
-        * @param CF_Container $contObj Swift container
+        * @param string $container Resolved Swift container
         * @param array $readGrps List of the possible criteria for a request to have
         * access to read a container. Each item is one of the following formats:
         *   - account:user        : Grants access if the request is by the given user
@@ -1401,210 +1260,333 @@ class SwiftFileBackend extends FileBackendStore {
         *   - account:user       : Grants access if the request is by the given user
         * @return Status
         */
-       protected function setContainerAccess(
-               CF_Container $contObj, array $readGrps, array $writeGrps
-       ) {
-               $creds = $contObj->cfs_auth->export_credentials();
+       protected function setContainerAccess( $container, array $readGrps, array $writeGrps ) {
+               $status = Status::newGood();
+
+               $auth = $this->getAuthentication();
+               if ( !$auth ) {
+                       $status->fatal( 'backend-fail-connect', $this->name );
+                       return $status;
+               }
 
-               $url = $creds['storage_url'] . '/' . rawurlencode( $contObj->name );
+               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                       'method'  => 'POST',
+                       'url'     => $this->storageUrl( $auth, $container ),
+                       'headers' => $this->authTokenHeaders( $auth ) + array(
+                               'x-container-read'  => implode( ',', $readGrps ),
+                               'x-container-write' => implode( ',', $writeGrps )
+                       )
+               ) );
 
-               // Note: 10 second timeout consistent with php-cloudfiles
-               $req = MWHttpRequest::factory( $url, array( 'method' => 'POST', 'timeout' => 10 ) );
-               $req->setHeader( 'X-Auth-Token', $creds['auth_token'] );
-               $req->setHeader( 'X-Container-Read', implode( ',', $readGrps ) );
-               $req->setHeader( 'X-Container-Write', implode( ',', $writeGrps ) );
+               if ( $rcode != 204 && $rcode !== 202 ) {
+                       $status->fatal( 'backend-fail-internal', $this->name );
+               }
 
-               return $req->execute(); // should return 204
+               return $status;
        }
 
        /**
-        * Purge the CDN cache of affected objects if CDN caching is enabled.
-        * This is for Rackspace/Akamai CDNs.
+        * Get a Swift container stat array, possibly from process cache.
+        * Use $reCache if the file count or byte count is needed.
         *
-        * @param array $objects List of CF_Object items
+        * @param string $container Container name
+        * @param bool $bypassCache Bypass all caches and load from Swift
+        * @return array|bool|null False on 404, null on failure
         */
-       public function purgeCDNCache( array $objects ) {
-               if ( $this->swiftUseCDN && $this->swiftCDNPurgable ) {
-                       foreach ( $objects as $object ) {
-                               try {
-                                       $object->purge_from_cdn();
-                               } catch ( CDNNotEnabledException $e ) {
-                                       // CDN not enabled; nothing to see here
-                               } catch ( CloudFilesException $e ) {
-                                       $this->handleException( $e, null, __METHOD__,
-                                               array( 'cont' => $object->container->name, 'obj' => $object->name ) );
+       protected function getContainerStat( $container, $bypassCache = false ) {
+               if ( $bypassCache ) { // purge cache
+                       $this->containerStatCache->clear( $container );
+               } elseif ( !$this->containerStatCache->has( $container, 'stat' ) ) {
+                       $this->primeContainerCache( array( $container ) ); // check persistent cache
+               }
+               if ( !$this->containerStatCache->has( $container, 'stat' ) ) {
+                       $auth = $this->getAuthentication();
+                       if ( !$auth ) {
+                               return null;
+                       }
+
+                       list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                               'method'  => 'HEAD',
+                               'url'     => $this->storageUrl( $auth, $container ),
+                               'headers' => $this->authTokenHeaders( $auth )
+                       ) );
+
+                       if ( $rcode === 204 ) {
+                               $stat = array(
+                                       'count' => $rhdrs['x-container-object-count'],
+                                       'bytes' => $rhdrs['x-container-bytes-used']
+                               );
+                               if ( $bypassCache ) {
+                                       return $stat;
+                               } else {
+                                       $this->containerStatCache->set( $container, 'stat', $stat ); // cache it
                                }
+                       } elseif ( $rcode === 404 ) {
+                               return false;
+                       } else {
+                               $this->onError( null, __METHOD__,
+                                       array( 'cont' => $container ), $rerr, $rcode, $rdesc );
+                               return null;
                        }
                }
+
+               return $this->containerStatCache->get( $container, 'stat' );
        }
 
        /**
-        * Get an authenticated connection handle to the Swift proxy
+        * Create a Swift container
         *
-        * @throws CloudFilesException
-        * @throws CloudFilesException|Exception
-        * @return CF_Connection|bool False on failure
+        * @param string $container Container name
+        * @param array $params
+        * @return Status
         */
-       protected function getConnection() {
-               if ( $this->connException instanceof CloudFilesException ) {
-                       if ( ( time() - $this->connErrorTime ) < 60 ) {
-                               throw $this->connException; // failed last attempt; don't bother
-                       } else { // actually retry this time
-                               $this->connException = null;
-                               $this->connErrorTime = 0;
-                       }
+       protected function createContainer( $container, array $params ) {
+               $status = Status::newGood();
+
+               $auth = $this->getAuthentication();
+               if ( !$auth ) {
+                       $status->fatal( 'backend-fail-connect', $this->name );
+                       return $status;
                }
-               // Session keys expire after a while, so we renew them periodically
-               $reAuth = ( ( time() - $this->sessionStarted ) > $this->authTTL );
-               // Authenticate with proxy and get a session key...
-               if ( !$this->conn || $reAuth ) {
-                       $this->sessionStarted = 0;
-                       $this->connContainerCache->clear();
-                       $cacheKey = $this->getCredsCacheKey( $this->auth->username );
-                       $creds = $this->srvCache->get( $cacheKey ); // credentials
-                       if ( is_array( $creds ) ) { // cache hit
-                               $this->auth->load_cached_credentials(
-                                       $creds['auth_token'], $creds['storage_url'], $creds['cdnm_url'] );
-                               $this->sessionStarted = time() - ceil( $this->authTTL / 2 ); // skew for worst case
-                       } else { // cache miss
-                               try {
-                                       $this->auth->authenticate();
-                                       $creds = $this->auth->export_credentials();
-                                       $this->srvCache->add( $cacheKey, $creds, ceil( $this->authTTL / 2 ) ); // cache
-                                       $this->sessionStarted = time();
-                               } catch ( CloudFilesException $e ) {
-                                       $this->connException = $e; // don't keep re-trying
-                                       $this->connErrorTime = time();
-                                       throw $e; // throw it back
-                               }
-                       }
-                       if ( $this->conn ) { // re-authorizing?
-                               $this->conn->close(); // close active cURL handles in CF_Http object
-                       }
-                       $this->conn = new CF_Connection( $this->auth );
+
+               // @see SwiftFileBackend::setContainerAccess()
+               if ( empty( $params['noAccess'] ) ) {
+                       $readGrps = array( '.r:*', $this->swiftUser ); // public
+               } else {
+                       $readGrps = array( $this->swiftUser ); // private
+               }
+               $writeGrps = array( $this->swiftUser ); // sanity
+
+               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                       'method'  => 'PUT',
+                       'url'     => $this->storageUrl( $auth, $container ),
+                       'headers' => $this->authTokenHeaders( $auth ) + array(
+                               'x-container-read'  => implode( ',', $readGrps ),
+                               'x-container-write' => implode( ',', $writeGrps )
+                       )
+               ) );
+
+               if ( $rcode === 201 ) { // new
+                       // good
+               } elseif ( $rcode === 202 ) { // already there
+                       // this shouldn't really happen, but is OK
+               } else {
+                       $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
                }
 
-               return $this->conn;
+               return $status;
        }
 
        /**
-        * Close the connection to the Swift proxy
+        * Delete a Swift container
+        *
+        * @param string $container Container name
+        * @param array $params
+        * @return Status
         */
-       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();
+       protected function deleteContainer( $container, array $params ) {
+               $status = Status::newGood();
+
+               $auth = $this->getAuthentication();
+               if ( !$auth ) {
+                       $status->fatal( 'backend-fail-connect', $this->name );
+                       return $status;
+               }
+
+               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                       'method'  => 'DELETE',
+                       'url'     => $this->storageUrl( $auth, $container ),
+                       'headers' => $this->authTokenHeaders( $auth )
+               ) );
+
+               if ( $rcode >= 200 && $rcode <= 299 ) { // deleted
+                       $this->containerStatCache->clear( $container ); // purge
+               } elseif ( $rcode === 404 ) { // not there
+                       // this shouldn't really happen, but is OK
+               } elseif ( $rcode === 409 ) { // not empty
+                       $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc ); // race?
+               } else {
+                       $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
                }
+
+               return $status;
        }
 
        /**
-        * Get the cache key for a container
+        * Get a list of objects under a container.
+        * Either just the names or a list of stdClass objects with details can be returned.
         *
-        * @param string $username
-        * @return string
+        * @param string $fullCont
+        * @param string $type ('info' for a list of object detail maps, 'names' for names only)
+        * @param integer $limit
+        * @param string|null $after
+        * @param string|null $prefix
+        * @param string|null $delim
+        * @return Status With the list as value
         */
-       private function getCredsCacheKey( $username ) {
-               return wfMemcKey( 'backend', $this->getName(), 'usercreds', $username );
+       private function objectListing(
+               $fullCont, $type, $limit, $after = null, $prefix = null, $delim = null
+       ) {
+               $status = Status::newGood();
+
+               $auth = $this->getAuthentication();
+               if ( !$auth ) {
+                       $status->fatal( 'backend-fail-connect', $this->name );
+                       return $status;
+               }
+
+               $query = array( 'limit' => $limit );
+               if ( $type === 'info' ) {
+                       $query['format'] = 'json';
+               }
+               if ( $after !== null ) {
+                       $query['marker'] = $after;
+               }
+               if ( $prefix !== null ) {
+                       $query['prefix'] = $prefix;
+               }
+               if ( $delim !== null ) {
+                       $query['delimiter'] = $delim;
+               }
+
+               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                       'method'  => 'GET',
+                       'url'     => $this->storageUrl( $auth, $fullCont ),
+                       'query'   => $query,
+                       'headers' => $this->authTokenHeaders( $auth )
+               ) );
+
+               $params = array( 'cont' => $fullCont, 'prefix' => $prefix, 'delim' => $delim );
+               if ( $rcode === 200 ) { // good
+                       if ( $type === 'info' ) {
+                               $status->value = FormatJson::decode( trim( $rbody ) );
+                       } else {
+                               $status->value = explode( "\n", trim( $rbody ) );
+                       }
+               } elseif ( $rcode === 204 ) {
+                       $status->value = array(); // empty container
+               } elseif ( $rcode === 404 ) {
+                       $status->value = array(); // no container
+               } else {
+                       $this->onError( $status, __METHOD__, $params, $rerr, $rcode, $rdesc );
+               }
+
+               return $status;
+       }
+
+       protected function doPrimeContainerCache( array $containerInfo ) {
+               foreach ( $containerInfo as $container => $info ) {
+                       $this->containerStatCache->set( $container, 'stat', $info );
+               }
        }
 
        /**
-        * Get a Swift container object, possibly from process cache.
-        * Use $reCache if the file count or byte count is needed.
-        *
-        * @param string $container Container name
-        * @param bool $bypassCache Bypass all caches and load from Swift
-        * @return CF_Container
-        * @throws CloudFilesException
+        * @return array|null Credential map
         */
-       protected function getContainer( $container, $bypassCache = false ) {
-               $conn = $this->getConnection(); // Swift proxy connection
-               if ( $bypassCache ) { // purge cache
-                       $this->connContainerCache->clear( $container );
-               } elseif ( !$this->connContainerCache->has( $container, 'obj' ) ) {
-                       $this->primeContainerCache( array( $container ) ); // check persistent cache
-               }
-               if ( !$this->connContainerCache->has( $container, 'obj' ) ) {
-                       $contObj = $conn->get_container( $container );
-                       // NoSuchContainerException not thrown: container must exist
-                       $this->connContainerCache->set( $container, 'obj', $contObj ); // cache it
-                       if ( !$bypassCache ) {
-                               $this->setContainerCache( $container, // update persistent cache
-                                       array( 'bytes' => $contObj->bytes_used, 'count' => $contObj->object_count )
-                               );
+       protected function getAuthentication() {
+               if ( $this->authErrorTimestamp !== null ) {
+                       if ( ( time() - $this->authErrorTimestamp ) < 60 ) {
+                               return null; // failed last attempt; don't bother
+                       } else { // actually retry this time
+                               $this->authErrorTimestamp = null;
                        }
                }
+               // Session keys expire after a while, so we renew them periodically
+               $reAuth = ( ( time() - $this->authSessionTimestamp ) > $this->authTTL );
+               // Authenticate with proxy and get a session key...
+               if ( !$this->authCreds || $reAuth ) {
+                       $this->authSessionTimestamp = 0;
+                       $cacheKey = $this->getCredsCacheKey( $this->swiftUser );
+                       $creds = $this->srvCache->get( $cacheKey ); // credentials
+                       // Try to use the credential cache
+                       if ( isset( $creds['auth_token'] ) && isset( $creds['storage_url'] ) ) {
+                               $this->authCreds = $creds;
+                               // Skew the timestamp for worst case to avoid using stale credentials
+                               $this->authSessionTimestamp = time() - ceil( $this->authTTL / 2 );
+                       } else { // cache miss
+                               list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
+                                       'method'  => 'GET',
+                                       'url'     => "{$this->swiftAuthUrl}/v1.0",
+                                       'headers' => array(
+                                               'x-auth-user' => $this->swiftUser, 'x-auth-key' => $this->swiftKey )
+                               ) );
 
-               return $this->connContainerCache->get( $container, 'obj' );
+                               if ( $rcode >= 200 && $rcode <= 299 ) { // OK
+                                       $this->authCreds = array(
+                                               'auth_token'  => $rhdrs['x-auth-token'],
+                                               'storage_url' => $rhdrs['x-storage-url']
+                                       );
+                                       $this->authSessionTimestamp = time();
+                               } elseif ( $rcode === 401 ) {
+                                       $this->onError( null, __METHOD__, array(), "Authentication failed.", $rcode );
+                                       $this->authErrorTimestamp = time();
+                                       return null;
+                               } else {
+                                       $this->onError( null, __METHOD__, array(), "HTTP return code: $rcode", $rcode );
+                                       $this->authErrorTimestamp = time();
+                                       return null;
+                               }
+                       }
+               }
+               return $this->authCreds;
        }
 
        /**
-        * Create a Swift container
-        *
-        * @param string $container Container name
-        * @return CF_Container
-        * @throws CloudFilesException
+        * @param array $creds From getAuthentication()
+        * @param string $container
+        * @param string $object
+        * @return array
         */
-       protected function createContainer( $container ) {
-               $conn = $this->getConnection(); // Swift proxy connection
-               $contObj = $conn->create_container( $container );
-               $this->connContainerCache->set( $container, 'obj', $contObj ); // cache
-               return $contObj;
+       protected function storageUrl( array $creds, $container = null, $object = null ) {
+               $parts = array( $creds['storage_url'] );
+               if ( strlen( $container ) ) {
+                       $parts[] = rawurlencode( $container );
+               }
+               if ( strlen( $object ) ) {
+                       $parts[] = str_replace( "%2F", "/", rawurlencode( $object ) );
+               }
+               return implode( '/', $parts );
        }
 
        /**
-        * Delete a Swift container
-        *
-        * @param string $container Container name
-        * @throws CloudFilesException
+        * @param array $creds From getAuthentication()
+        * @return array
         */
-       protected function deleteContainer( $container ) {
-               $conn = $this->getConnection(); // Swift proxy connection
-               $this->connContainerCache->clear( $container ); // purge
-               $conn->delete_container( $container );
+       protected function authTokenHeaders( array $creds ) {
+               return array( 'x-auth-token' => $creds['auth_token'] );
        }
 
-       protected function doPrimeContainerCache( array $containerInfo ) {
-               try {
-                       $conn = $this->getConnection(); // Swift proxy connection
-                       foreach ( $containerInfo as $container => $info ) {
-                               $contObj = new CF_Container( $conn->cfs_auth, $conn->cfs_http,
-                                       $container, $info['count'], $info['bytes'] );
-                               $this->connContainerCache->set( $container, 'obj', $contObj );
-                       }
-               } catch ( CloudFilesException $e ) { // some other exception?
-                       $this->handleException( $e, null, __METHOD__, array() );
-               }
+       /**
+        * Get the cache key for a container
+        *
+        * @param string $username
+        * @return string
+        */
+       private function getCredsCacheKey( $username ) {
+               return wfMemcKey( 'backend', $this->getName(), 'usercreds', $username );
        }
 
        /**
         * Log an unexpected exception for this backend.
         * This also sets the Status object to have a fatal error.
         *
-        * @param Exception $e
-        * @param Status $status null
+        * @param Status $code null
         * @param string $func
         * @param array $params
+        * @param string $err Error string
+        * @param integer $status HTTP status
+        * @param string $desc HTTP status description
         */
-       protected function handleException( Exception $e, $status, $func, array $params ) {
+       public function onError( $status, $func, array $params, $err = '', $code = 0, $desc = '' ) {
                if ( $status instanceof Status ) {
-                       if ( $e instanceof AuthenticationException ) {
-                               $status->fatal( 'backend-fail-connect', $this->name );
-                       } else {
-                               $status->fatal( 'backend-fail-internal', $this->name );
-                       }
+                       $status->fatal( 'backend-fail-internal', $this->name );
                }
-               if ( $e->getMessage() ) {
-                       trigger_error( "$func: " . $e->getMessage(), E_USER_WARNING );
-               }
-               if ( $e instanceof InvalidResponseException ) { // possibly a stale token
-                       $this->srvCache->delete( $this->getCredsCacheKey( $this->auth->username ) );
-                       $this->closeConnection(); // force a re-connect and re-auth next time
+               if ( $code == 401 ) { // possibly a stale token
+                       $this->srvCache->delete( $this->getCredsCacheKey( $this->swiftUser ) );
                }
                wfDebugLog( 'SwiftBackend',
-                       get_class( $e ) . " in '{$func}' (given '" . FormatJson::encode( $params ) . "')" .
-                       ( $e->getMessage() ? ": {$e->getMessage()}" : "" )
+                       "HTTP $code ($desc) in '{$func}' (given '" . FormatJson::encode( $params ) . "')" .
+                       ( $err ? ": $err" : "" )
                );
        }
 }
@@ -1613,25 +1595,20 @@ class SwiftFileBackend extends FileBackendStore {
  * @see FileBackendStoreOpHandle
  */
 class SwiftFileOpHandle extends FileBackendStoreOpHandle {
-       /** @var CF_Async_Op */
-       public $cfOp;
-
-       /** @var array */
-       public $affectedObjects = array();
+       /** @var array List of Requests for MultiHttpClient */
+       public $httpOp;
+       /** @var Closure */
+       public $callback;
 
        /**
         * @param SwiftFileBackend $backend
-        * @param array $params
-        * @param string $call
-        * @param CF_Async_Op $cfOp
+        * @param Closure $callback Function that takes (HTTP request array, status)
+        * @param array $httpOp MultiHttpClient op
         */
-       public function __construct(
-               SwiftFileBackend $backend, array $params, $call, CF_Async_Op $cfOp
-       ) {
+       public function __construct( SwiftFileBackend $backend, Closure $callback, array $httpOp ) {
                $this->backend = $backend;
-               $this->params = $params;
-               $this->call = $call;
-               $this->cfOp = $cfOp;
+               $this->callback = $callback;
+               $this->httpOp = $httpOp;
        }
 }
 
@@ -1762,15 +1739,6 @@ class SwiftFileBackendDirList extends SwiftFileBackendList {
                return substr( current( $this->bufferIter ), $this->suffixStart, -1 );
        }
 
-       /**
-        * @see SwiftFileBackendList::pageFromList()
-        * @param string $container
-        * @param string $dir
-        * @param string $after
-        * @param int $limit
-        * @param array $params
-        * @return array
-        */
        protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
                return $this->backend->getDirListPageInternal( $container, $dir, $after, $limit, $params );
        }
@@ -1795,15 +1763,6 @@ class SwiftFileBackendFileList extends SwiftFileBackendList {
                return $relPath;
        }
 
-       /**
-        * @see SwiftFileBackendList::pageFromList()
-        * @param string $container
-        * @param string $dir
-        * @param string $after
-        * @param int $limit
-        * @param array $params
-        * @return array
-        */
        protected function pageFromList( $container, $dir, &$after, $limit, array $params ) {
                return $this->backend->getFileListPageInternal( $container, $dir, $after, $limit, $params );
        }
index 9d5612a..e37e567 100644 (file)
@@ -78,104 +78,78 @@ class RedisLockManager extends QuorumLockManager {
                $this->session = wfRandomString( 32 );
        }
 
-       // @TODO: change this code to work in one batch
        protected function getLocksOnServer( $lockSrv, array $pathsByType ) {
                $status = Status::newGood();
 
-               $lockedPaths = array();
-               foreach ( $pathsByType as $type => $paths ) {
-                       $status->merge( $this->doGetLocksOnServer( $lockSrv, $paths, $type ) );
-                       if ( $status->isOK() ) {
-                               $lockedPaths[$type] = isset( $lockedPaths[$type] )
-                                       ? array_merge( $lockedPaths[$type], $paths )
-                                       : $paths;
-                       } else {
-                               foreach ( $lockedPaths as $lType => $lPaths ) {
-                                       $status->merge( $this->doFreeLocksOnServer( $lockSrv, $lPaths, $lType ) );
-                               }
-                               break;
-                       }
-               }
-
-               return $status;
-       }
-
-       // @todo Change this code to work in one batch
-       protected function freeLocksOnServer( $lockSrv, array $pathsByType ) {
-               $status = Status::newGood();
-
-               foreach ( $pathsByType as $type => $paths ) {
-                       $status->merge( $this->doFreeLocksOnServer( $lockSrv, $paths, $type ) );
-               }
-
-               return $status;
-       }
-
-       protected function doGetLocksOnServer( $lockSrv, array $paths, $type ) {
-               $status = Status::newGood();
-
                $server = $this->lockServers[$lockSrv];
                $conn = $this->redisPool->getConnection( $server );
                if ( !$conn ) {
-                       foreach ( $paths as $path ) {
+                       foreach ( array_merge( array_values( $pathsByType ) ) as $path ) {
                                $status->fatal( 'lockmanager-fail-acquirelock', $path );
                        }
 
                        return $status;
                }
 
-               $keys = array_map( array( $this, 'recordKeyForPath' ), $paths ); // lock records
+               $pathsByKey = array(); // (type:hash => path) map
+               foreach ( $pathsByType as $type => $paths ) {
+                       $typeString = ( $type == LockManager::LOCK_SH ) ? 'SH' : 'EX';
+                       foreach ( $paths as $path ) {
+                               $pathsByKey[$this->recordKeyForPath( $path, $typeString )] = $path;
+                       }
+               }
 
                try {
                        static $script =
 <<<LUA
-                       if ARGV[1] ~= 'EX' and ARGV[1] ~= 'SH' then
-                               return redis.error_reply('Unrecognized lock type given (must be EX or SH)')
-                       end
                        local failed = {}
+                       -- Load input params (e.g. session, ttl, time of request)
+                       local rSession, rTTL, rTime = unpack(ARGV)
                        -- Check that all the locks can be acquired
-                       for i,resourceKey in ipairs(KEYS) do
+                       for i,requestKey in ipairs(KEYS) do
+                               local _, _, rType, resourceKey = string.find(requestKey,"(%w+):(%w+)$")
                                local keyIsFree = true
                                local currentLocks = redis.call('hKeys',resourceKey)
                                for i,lockKey in ipairs(currentLocks) do
+                                       -- Get the type and session of this lock
                                        local _, _, type, session = string.find(lockKey,"(%w+):(%w+)")
                                        -- Check any locks that are not owned by this session
-                                       if session ~= ARGV[2] then
-                                               local lockTimestamp = redis.call('hGet',resourceKey,lockKey)
-                                               if 1*lockTimestamp < ( ARGV[4] - ARGV[3] ) then
+                                       if session ~= rSession then
+                                               local lockExpiry = redis.call('hGet',resourceKey,lockKey)
+                                               if 1*lockExpiry < 1*rTime then
                                                        -- Lock is stale, so just prune it out
                                                        redis.call('hDel',resourceKey,lockKey)
-                                               elseif ARGV[1] == 'EX' or type == 'EX' then
+                                               elseif rType == 'EX' or type == 'EX' then
                                                        keyIsFree = false
                                                        break
                                                end
                                        end
                                end
                                if not keyIsFree then
-                                       failed[#failed+1] = resourceKey
+                                       failed[#failed+1] = requestKey
                                end
                        end
                        -- If all locks could be acquired, then do so
                        if #failed == 0 then
-                               for i,resourceKey in ipairs(KEYS) do
-                                       redis.call('hSet',resourceKey,ARGV[1] .. ':' .. ARGV[2],ARGV[4])
+                               for i,requestKey in ipairs(KEYS) do
+                                       local _, _, rType, resourceKey = string.find(requestKey,"(%w+):(%w+)$")
+                                       redis.call('hSet',resourceKey,rType .. ':' .. rSession,rTime + rTTL)
                                        -- In addition to invalidation logic, be sure to garbage collect
-                                       redis.call('expire',resourceKey,ARGV[3])
+                                       redis.call('expire',resourceKey,rTTL)
                                end
                        end
                        return failed
 LUA;
                        $res = $conn->luaEval( $script,
                                array_merge(
-                                       $keys, // KEYS[0], KEYS[1],...KEYS[N]
+                                       array_keys( $pathsByKey ), // KEYS[0], KEYS[1],...,KEYS[N]
                                        array(
-                                               $type === self::LOCK_SH ? 'SH' : 'EX', // ARGV[1]
-                                               $this->session, // ARGV[2]
-                                               $this->lockTTL, // ARGV[3]
-                                               time() // ARGV[4]
+                                               $this->session, // ARGV[1]
+                                               $this->lockTTL, // ARGV[2]
+                                               time() // ARGV[3]
                                        )
                                ),
-                               count( $keys ) # number of first argument(s) that are keys
+                               count( $pathsByKey ) # number of first argument(s) that are keys
                        );
                } catch ( RedisException $e ) {
                        $res = false;
@@ -183,11 +157,10 @@ LUA;
                }
 
                if ( $res === false ) {
-                       foreach ( $paths as $path ) {
+                       foreach ( array_merge( array_values( $pathsByType ) ) as $path ) {
                                $status->fatal( 'lockmanager-fail-acquirelock', $path );
                        }
                } else {
-                       $pathsByKey = array_combine( $keys, $paths );
                        foreach ( $res as $key ) {
                                $status->fatal( 'lockmanager-fail-acquirelock', $pathsByKey[$key] );
                        }
@@ -196,50 +169,55 @@ LUA;
                return $status;
        }
 
-       protected function doFreeLocksOnServer( $lockSrv, array $paths, $type ) {
+       protected function freeLocksOnServer( $lockSrv, array $pathsByType ) {
                $status = Status::newGood();
 
                $server = $this->lockServers[$lockSrv];
                $conn = $this->redisPool->getConnection( $server );
                if ( !$conn ) {
-                       foreach ( $paths as $path ) {
+                       foreach ( array_merge( array_values( $pathsByType ) ) as $path ) {
                                $status->fatal( 'lockmanager-fail-releaselock', $path );
                        }
 
                        return $status;
                }
 
-               $keys = array_map( array( $this, 'recordKeyForPath' ), $paths ); // lock records
+               $pathsByKey = array(); // (type:hash => path) map
+               foreach ( $pathsByType as $type => $paths ) {
+                       $typeString = ( $type == LockManager::LOCK_SH ) ? 'SH' : 'EX';
+                       foreach ( $paths as $path ) {
+                               $pathsByKey[$this->recordKeyForPath( $path, $typeString )] = $path;
+                       }
+               }
 
                try {
                        static $script =
 <<<LUA
-                       if ARGV[1] ~= 'EX' and ARGV[1] ~= 'SH' then
-                               return redis.error_reply('Unrecognized lock type given (must be EX or SH)')
-                       end
                        local failed = {}
-                       for i,resourceKey in ipairs(KEYS) do
-                               local released = redis.call('hDel',resourceKey,ARGV[1] .. ':' .. ARGV[2])
+                       -- Load input params (e.g. session)
+                       local rSession = unpack(ARGV)
+                       for i,requestKey in ipairs(KEYS) do
+                               local _, _, rType, resourceKey = string.find(requestKey,"(%w+):(%w+)$")
+                               local released = redis.call('hDel',resourceKey,rType .. ':' .. rSession)
                                if released > 0 then
                                        -- Remove the whole structure if it is now empty
                                        if redis.call('hLen',resourceKey) == 0 then
                                                redis.call('del',resourceKey)
                                        end
                                else
-                                       failed[#failed+1] = resourceKey
+                                       failed[#failed+1] = requestKey
                                end
                        end
                        return failed
 LUA;
                        $res = $conn->luaEval( $script,
                                array_merge(
-                                       $keys, // KEYS[0], KEYS[1],...KEYS[N]
+                                       array_keys( $pathsByKey ), // KEYS[0], KEYS[1],...,KEYS[N]
                                        array(
-                                               $type === self::LOCK_SH ? 'SH' : 'EX', // ARGV[1]
-                                               $this->session // ARGV[2]
+                                               $this->session, // ARGV[1]
                                        )
                                ),
-                               count( $keys ) # number of first argument(s) that are keys
+                               count( $pathsByKey ) # number of first argument(s) that are keys
                        );
                } catch ( RedisException $e ) {
                        $res = false;
@@ -247,11 +225,10 @@ LUA;
                }
 
                if ( $res === false ) {
-                       foreach ( $paths as $path ) {
+                       foreach ( array_merge( array_values( $pathsByType ) ) as $path ) {
                                $status->fatal( 'lockmanager-fail-releaselock', $path );
                        }
                } else {
-                       $pathsByKey = array_combine( $keys, $paths );
                        foreach ( $res as $key ) {
                                $status->fatal( 'lockmanager-fail-releaselock', $pathsByKey[$key] );
                        }
@@ -270,10 +247,12 @@ LUA;
 
        /**
         * @param string $path
+        * @param string $type One of (EX,SH)
         * @return string
         */
-       protected function recordKeyForPath( $path ) {
-               return implode( ':', array( __CLASS__, 'locks', $this->sha1Base36Absolute( $path ) ) );
+       protected function recordKeyForPath( $path, $type ) {
+               return implode( ':',
+                       array( __CLASS__, 'locks', "$type:" . $this->sha1Base36Absolute( $path ) ) );
        }
 
        /**
@@ -281,10 +260,13 @@ LUA;
         */
        function __destruct() {
                while ( count( $this->locksHeld ) ) {
+                       $pathsByType = array();
                        foreach ( $this->locksHeld as $path => $locks ) {
-                               $this->doUnlock( array( $path ), self::LOCK_EX );
-                               $this->doUnlock( array( $path ), self::LOCK_SH );
+                               foreach ( $locks as $type => $count ) {
+                                       $pathsByType[$type][] = $path;
+                               }
                        }
+                       $this->unlockByType( $pathsByType );
                }
        }
 }
index 046b97c..5896aba 100644 (file)
@@ -32,7 +32,7 @@
  */
 class FSRepo extends FileRepo {
        /**
-        * @param $info array
+        * @param array $info
         * @throws MWException
         */
        function __construct( array $info ) {
@@ -56,7 +56,8 @@ class FSRepo extends FileRepo {
                        // Get the FS backend configuration
                        $backend = new FSFileBackend( array(
                                'name' => $info['name'] . '-backend',
-                               'lockManager' => 'fsLockManager',
+                               'wikiId' => wfWikiID(),
+                               'lockManager' => LockManagerGroup::singleton( wfWikiID() )->get( 'fsLockManager' ),
                                'containerPaths' => array(
                                        "{$repoName}-public" => "{$directory}",
                                        "{$repoName}-temp" => "{$directory}/temp",
index 8611238..cab5690 100644 (file)
@@ -40,6 +40,15 @@ class FileRepo {
        const OVERWRITE_SAME = 4;
        const SKIP_LOCKING = 8;
 
+       const NAME_AND_TIME_ONLY = 1;
+
+       /** @var bool Whether to fetch commons image description pages and display
+        *    them on the local wiki */
+       public $fetchDescription;
+
+       /** @var int */
+       public $descriptionCacheExpiry;
+
        /** @var FileBackend */
        protected $backend;
 
@@ -70,9 +79,6 @@ class FileRepo {
        /** @var string Equivalent to $wgArticlePath, e.g. http://en.wikipedia.org/wiki/$1 */
        protected $articleUrl;
 
-       /** @var bool Whether to fetch commons image description pages and display them on the local wiki */
-       public $fetchDescription;
-
        /** @var bool Equivalent to $wgCapitalLinks (or $wgCapitalLinkOverrides[NS_FILE],
         *    determines whether filenames implicitly start with a capital letter.
         *    The current implementation may give incorrect description page links
@@ -87,9 +93,6 @@ class FileRepo {
         */
        protected $pathDisclosureProtection = 'simple';
 
-       /** @var int */
-       public $descriptionCacheExpiry;
-
        /** @var bool Public zone URL. */
        protected $url;
 
@@ -118,7 +121,7 @@ class FileRepo {
        protected $oldFileFactoryKey = false;
 
        /**
-        * @param $info array|null
+        * @param array|null $info
         * @throws MWException
         */
        public function __construct( array $info = null ) {
@@ -231,7 +234,7 @@ class FileRepo {
        /**
         * Determine if a string is an mwrepo:// URL
         *
-        * @param $url string
+        * @param string $url
         * @return bool
         */
        public static function isVirtualUrl( $url ) {
@@ -243,7 +246,7 @@ class FileRepo {
         * The suffix, if supplied, is considered to be unencoded, and will be
         * URL-encoded before being returned.
         *
-        * @param $suffix string|bool
+        * @param string|bool $suffix
         * @return string
         */
        public function getVirtualUrl( $suffix = false ) {
@@ -300,7 +303,7 @@ class FileRepo {
         * same host name as the wiki that is used for viewing thumbnails.
         *
         * @param string $zone one of: public, deleted, temp, thumb
-        * @return String or false
+        * @return string|bool String or false
         */
        public function getZoneHandlerUrl( $zone ) {
                if ( isset( $this->zones[$zone]['handlerUrl'] )
@@ -316,7 +319,7 @@ class FileRepo {
         * Get the backend storage path corresponding to a virtual URL.
         * Use this function wisely.
         *
-        * @param $url string
+        * @param string $url
         * @throws MWException
         * @return string
         */
@@ -343,8 +346,8 @@ class FileRepo {
        /**
         * The the storage container and base path of a zone
         *
-        * @param $zone string
-        * @return Array (container, base path) or (null, null)
+        * @param string $zone
+        * @return array (container, base path) or (null, null)
         */
        protected function getZoneLocation( $zone ) {
                if ( !isset( $this->zones[$zone] ) ) {
@@ -357,7 +360,7 @@ class FileRepo {
        /**
         * Get the storage path corresponding to one of the zones
         *
-        * @param $zone string
+        * @param string $zone
         * @return string|null Returns null if the zone is not defined
         */
        public function getZonePath( $zone ) {
@@ -376,12 +379,12 @@ class FileRepo {
        /**
         * Create a new File object from the local repository
         *
-        * @param $title Mixed: Title object or string
-        * @param $time Mixed: Time at which the image was uploaded.
-        *              If this is specified, the returned object will be an
-        *              instance of the repository's old file class instead of a
-        *              current file. Repositories not supporting version control
-        *              should return false if this parameter is set.
+        * @param Title|string $title Title object or string
+        * @param bool|string $time Time at which the image was uploaded. If this
+        *   is specified, the returned object will be an instance of the
+        *   repository's old file class instead of a current file. Repositories
+        *   not supporting version control should return false if this parameter
+        *   is set.
         * @return File|null A File, or null if passed an invalid Title
         */
        public function newFile( $title, $time = false ) {
@@ -405,17 +408,15 @@ class FileRepo {
         * Returns false if the file does not exist. Repositories not supporting
         * version control should return false if the time is specified.
         *
-        * @param $title Mixed: Title object or string
+        * @param Title|string $title Title object or string
         * @param array $options Associative array of options:
-        *     time:           requested time for a specific file version, or false for the
-        *                     current version. An image object will be returned which was
-        *                     created at the specified time (which may be archived or current).
-        *
-        *     ignoreRedirect: If true, do not follow file redirects
-        *
-        *     private:        If true, return restricted (deleted) files if the current
-        *                     user is allowed to view them. Otherwise, such files will not
-        *                     be found.
+        *   time:           requested time for a specific file version, or false for the
+        *                   current version. An image object will be returned which was
+        *                   created at the specified time (which may be archived or current).
+        *   ignoreRedirect: If true, do not follow file redirects
+        *   private:        If true, return restricted (deleted) files if the current
+        *                   user is allowed to view them. Otherwise, such files will not
+        *                   be found.
         * @return File|bool False on failure
         */
        public function findFile( $title, $options = array() ) {
@@ -473,9 +474,15 @@ class FileRepo {
         *     $findItem = array( 'title' => $title, 'private' => true );
         *     $findBatch = array( $findItem );
         *     $repo->findFiles( $findBatch );
-        * @return array
+        *
+        *    No title should appear in $items twice, as the result use titles as keys
+        * @param int $flags Supports:
+        *     - FileRepo::NAME_AND_TIME_ONLY : return a (search title => (title,timestamp)) map.
+        *       The search title uses the input titles; the other is the final post-redirect title.
+        *       All titles are returned as string DB keys and the inner array is associative.
+        * @return array Map of (file name => File objects) for matches
         */
-       public function findFiles( array $items ) {
+       public function findFiles( array $items, $flags = 0 ) {
                $result = array();
                foreach ( $items as $item ) {
                        if ( is_array( $item ) ) {
@@ -488,7 +495,15 @@ class FileRepo {
                        }
                        $file = $this->findFile( $title, $options );
                        if ( $file ) {
-                               $result[$file->getTitle()->getDBkey()] = $file;
+                               $searchName = File::normalizeTitle( $title )->getDBkey(); // must be valid
+                               if ( $flags & self::NAME_AND_TIME_ONLY ) {
+                                       $result[$searchName] = array(
+                                               'title'     => $file->getTitle()->getDBkey(),
+                                               'timestamp' => $file->getTimestamp()
+                                       );
+                               } else {
+                                       $result[$searchName] = $file;
+                               }
                        }
                }
 
@@ -500,7 +515,7 @@ class FileRepo {
         * Returns false if the file does not exist. Repositories not supporting
         * version control should return false if the time is specified.
         *
-        * @param string $sha1 base 36 SHA-1 hash
+        * @param string $sha1 Base 36 SHA-1 hash
         * @param array $options Option array, same as findFile().
         * @return File|bool False on failure
         */
@@ -535,7 +550,7 @@ class FileRepo {
         * SHA-1 content hash.
         *
         * STUB
-        * @param $hash
+        * @param string $hash SHA-1 hash
         * @return array
         */
        public function findBySha1( $hash ) {
@@ -604,8 +619,8 @@ class FileRepo {
        /**
         * Get the name of a file from its title object
         *
-        * @param $title Title
-        * @return String
+        * @param Title $title
+        * @return string
         */
        public function getNameFromTitle( Title $title ) {
                global $wgContLang;
@@ -655,8 +670,8 @@ class FileRepo {
        }
 
        /**
-        * @param $name
-        * @param $levels
+        * @param string $name
+        * @param int $levels
         * @return string
         */
        protected static function getHashPathForLevel( $name, $levels ) {
@@ -676,7 +691,7 @@ class FileRepo {
        /**
         * Get the number of hash directory levels
         *
-        * @return integer
+        * @return int
         */
        public function getHashLevels() {
                return $this->hashLevels;
@@ -694,7 +709,7 @@ class FileRepo {
        /**
         * Make an url to this repo
         *
-        * @param $query mixed Query string to append
+        * @param string $query Query string to append
         * @param string $entry Entry point; defaults to index
         * @return string|bool False on failure
         */
@@ -717,7 +732,7 @@ class FileRepo {
         * In particular, it uses the article paths as specified to the repository
         * constructor, whereas local repositories use the local Title functions.
         *
-        * @param $name string
+        * @param string $name
         * @return string
         */
        public function getDescriptionUrl( $name ) {
@@ -752,8 +767,8 @@ class FileRepo {
         * repository's file class, since it may return invalid results. User code
         * should use File::getDescriptionText().
         *
-        * @param string $name name of image to fetch
-        * @param string $lang language to fetch it in, if any.
+        * @param string $name Name of image to fetch
+        * @param string $lang Language to fetch it in, if any.
         * @return string
         */
        public function getDescriptionRenderUrl( $name, $lang = null ) {
@@ -793,15 +808,15 @@ class FileRepo {
        /**
         * Store a file to a given destination.
         *
-        * @param string $srcPath source file system path, storage path, or virtual URL
-        * @param string $dstZone destination zone
-        * @param string $dstRel destination relative path
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::DELETE_SOURCE     Delete the source file after upload
-        *     self::OVERWRITE         Overwrite an existing destination file instead of failing
-        *     self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
-        *                             same contents as the source
-        *     self::SKIP_LOCKING      Skip any file locking when doing the store
+        * @param string $srcPath Source file system path, storage path, or virtual URL
+        * @param string $dstZone Destination zone
+        * @param string $dstRel Destination relative path
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::DELETE_SOURCE     Delete the source file after upload
+        *   self::OVERWRITE         Overwrite an existing destination file instead of failing
+        *   self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
+        *                           same contents as the source
+        *   self::SKIP_LOCKING      Skip any file locking when doing the store
         * @return FileRepoStatus
         */
        public function store( $srcPath, $dstZone, $dstRel, $flags = 0 ) {
@@ -819,12 +834,12 @@ class FileRepo {
         * Store a batch of files
         *
         * @param array $triplets (src, dest zone, dest rel) triplets as per store()
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::DELETE_SOURCE     Delete the source file after upload
-        *     self::OVERWRITE         Overwrite an existing destination file instead of failing
-        *     self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
-        *                             same contents as the source
-        *     self::SKIP_LOCKING      Skip any file locking when doing the store
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::DELETE_SOURCE     Delete the source file after upload
+        *   self::OVERWRITE         Overwrite an existing destination file instead of failing
+        *   self::OVERWRITE_SAME    Overwrite the file if the destination exists and has the
+        *                           same contents as the source
+        *   self::SKIP_LOCKING      Skip any file locking when doing the store
         * @throws MWException
         * @return FileRepoStatus
         */
@@ -901,8 +916,8 @@ class FileRepo {
         * It will try to delete each file, but ignores any errors that may occur.
         *
         * @param array $files List of files to delete
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::SKIP_LOCKING      Skip any file locking when doing the deletions
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::SKIP_LOCKING      Skip any file locking when doing the deletions
         * @return FileRepoStatus
         */
        public function cleanupBatch( array $files, $flags = 0 ) {
@@ -1035,9 +1050,9 @@ class FileRepo {
         * file can later be disposed using FileRepo::freeTemp().
         *
         * @param string $originalName the base name of the file as specified
-        *     by the user. The file extension will be maintained.
-        * @param string $srcPath the current location of the file.
-        * @return FileRepoStatus object with the URL in the value.
+        *   by the user. The file extension will be maintained.
+        * @param string $srcPath The current location of the file.
+        * @return FileRepoStatus Object with the URL in the value.
         */
        public function storeTemp( $originalName, $srcPath ) {
                $this->assertWritableRepo(); // fail out if read-only
@@ -1056,8 +1071,8 @@ class FileRepo {
        /**
         * Remove a temporary file or mark it for garbage collection
         *
-        * @param string $virtualUrl the virtual URL returned by FileRepo::storeTemp()
-        * @return Boolean: true on success, false on failure
+        * @param string $virtualUrl The virtual URL returned by FileRepo::storeTemp()
+        * @return bool True on success, false on failure
         */
        public function freeTemp( $virtualUrl ) {
                $this->assertWritableRepo(); // fail out if read-only
@@ -1077,8 +1092,8 @@ class FileRepo {
         *
         * @param array $srcPaths Ordered list of source virtual URLs/storage paths
         * @param string $dstPath Target file system path
-        * @param $flags Integer: bitwise combination of the following flags:
-        *     self::DELETE_SOURCE     Delete the source files
+        * @param int $flags Bitwise combination of the following flags:
+        *   self::DELETE_SOURCE     Delete the source files
         * @return FileRepoStatus
         */
        public function concatenate( array $srcPaths, $dstPath, $flags = 0 ) {
@@ -1121,12 +1136,12 @@ class FileRepo {
         * Options to $options include:
         *   - headers : name/value map of HTTP headers to use in response to GET/HEAD requests
         *
-        * @param string $srcPath the source file system path, storage path, or URL
-        * @param string $dstRel the destination relative path
-        * @param string $archiveRel 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 string $srcPath The source file system path, storage path, or URL
+        * @param string $dstRel The destination relative path
+        * @param string $archiveRel The relative path where the existing file is to
+        *   be archived, if there is one. Relative to the public zone root.
+        * @param int $flags Bitfield, may be FileRepo::DELETE_SOURCE to indicate
+        *   that the source file should be deleted if possible
         * @param array $options Optional additional parameters
         * @return FileRepoStatus
         */
@@ -1153,9 +1168,9 @@ class FileRepo {
         * Publish a batch of files
         *
         * @param array $ntuples (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
+        *   (source, dest, archive, options) 4-tuples as per publish().
+        * @param int $flags Bitfield, may be FileRepo::DELETE_SOURCE to indicate
+        *   that the source files should be deleted if possible
         * @throws MWException
         * @return FileRepoStatus
         */
@@ -1341,9 +1356,9 @@ class FileRepo {
         * If no valid deletion archive exists, this may either delete the file
         * or throw an exception, depending on the preference of the repository
         *
-        * @param $srcRel Mixed: relative path for the file to be deleted
-        * @param $archiveRel Mixed: relative path for the archive location.
-        *        Relative to a private archive directory.
+        * @param mixed $srcRel Relative path for the file to be deleted
+        * @param mixed $archiveRel Relative path for the archive location.
+        *   Relative to a private archive directory.
         * @return FileRepoStatus object
         */
        public function delete( $srcRel, $archiveRel ) {
@@ -1362,10 +1377,10 @@ class FileRepo {
         * assumes a naming scheme in the deleted zone based on content hash, as
         * opposed to the public zone which is assumed to be unique.
         *
-        * @param array $sourceDestPairs of source/destination pairs. Each element
-        *        is a two-element array containing the source file path relative to the
-        *        public root in the first element, and the archive file path relative
-        *        to the deleted zone root in the second element.
+        * @param array $sourceDestPairs Array of source/destination pairs. Each element
+        *   is a two-element array containing the source file path relative to the
+        *   public root in the first element, and the archive file path relative
+        *   to the deleted zone root in the second element.
         * @throws MWException
         * @return FileRepoStatus
         */
@@ -1435,7 +1450,7 @@ class FileRepo {
         * Get a relative path for a deletion archive key,
         * e.g. s/z/a/ for sza251lrxrc1jad41h5mgilp8nysje52.jpg
         *
-        * @param $key string
+        * @param string $key
         * @throws MWException
         * @return string
         */
@@ -1455,7 +1470,7 @@ class FileRepo {
         * If a path is a virtual URL, resolve it to a storage path.
         * Otherwise, just return the path as it is.
         *
-        * @param $path string
+        * @param string $path
         * @return string
         * @throws MWException
         */
@@ -1471,7 +1486,7 @@ class FileRepo {
         * Get a local FS copy of a file with a given virtual URL/storage path.
         * Temporary files may be purged when the file object falls out of scope.
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return TempFSFile|null Returns null on failure
         */
        public function getLocalCopy( $virtualUrl ) {
@@ -1485,7 +1500,7 @@ class FileRepo {
         * The file is either an original or a copy. It should not be changed.
         * Temporary files may be purged when the file object falls out of scope.
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return FSFile|null Returns null on failure.
         */
        public function getLocalReference( $virtualUrl ) {
@@ -1498,7 +1513,7 @@ class FileRepo {
         * Get properties of a file with a given virtual URL/storage path.
         * Properties should ultimately be obtained via FSFile::getProps().
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return Array
         */
        public function getFileProps( $virtualUrl ) {
@@ -1510,7 +1525,7 @@ class FileRepo {
        /**
         * Get the timestamp of a file with a given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return string|bool False on failure
         */
        public function getFileTimestamp( $virtualUrl ) {
@@ -1522,7 +1537,7 @@ class FileRepo {
        /**
         * Get the size of a file with a given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return integer|bool False on failure
         */
        public function getFileSize( $virtualUrl ) {
@@ -1534,7 +1549,7 @@ class FileRepo {
        /**
         * Get the sha1 (base 36) of a file with a given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return string|bool
         */
        public function getFileSha1( $virtualUrl ) {
@@ -1546,7 +1561,7 @@ class FileRepo {
        /**
         * Attempt to stream a file with the given virtual URL/storage path
         *
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @param array $headers Additional HTTP headers to send on success
         * @return bool Success
         */
@@ -1562,7 +1577,7 @@ class FileRepo {
         * This only acts on the current version of files, not any old versions.
         * May use either the database or the filesystem.
         *
-        * @param $callback Array|string
+        * @param array|string $callback
         * @return void
         */
        public function enumFiles( $callback ) {
@@ -1573,7 +1588,7 @@ class FileRepo {
         * Call a callback function for every public file in the repository.
         * May use either the database or the filesystem.
         *
-        * @param $callback Array|string
+        * @param array|string $callback
         * @return void
         */
        protected function enumFilesInStorage( $callback ) {
@@ -1612,7 +1627,7 @@ class FileRepo {
        /**
         * Get a callback function to use for cleaning error message parameters
         *
-        * @return Array
+        * @return array
         */
        function getErrorCleanupFunction() {
                switch ( $this->pathDisclosureProtection ) {
@@ -1629,7 +1644,7 @@ class FileRepo {
        /**
         * Path disclosure protection function
         *
-        * @param $param string
+        * @param string $param
         * @return string
         */
        function paranoidClean( $param ) {
@@ -1639,7 +1654,7 @@ class FileRepo {
        /**
         * Path disclosure protection function
         *
-        * @param $param string
+        * @param string $param
         * @return string
         */
        function passThrough( $param ) {
@@ -1649,6 +1664,7 @@ class FileRepo {
        /**
         * Create a new fatal error
         *
+        * @param $message
         * @return FileRepoStatus
         */
        public function newFatal( $message /*, parameters...*/ ) {
@@ -1661,7 +1677,7 @@ class FileRepo {
        /**
         * Create a new good result
         *
-        * @param $value null|string
+        * @param null|string $value
         * @return FileRepoStatus
         */
        public function newGood( $value = null ) {
@@ -1673,8 +1689,8 @@ class FileRepo {
         * title object. If not, return false.
         * STUB
         *
-        * @param $title Title of image
-        * @return Bool
+        * @param Title $title Title of image
+        * @return bool
         */
        public function checkRedirect( Title $title ) {
                return false;
@@ -1685,7 +1701,7 @@ class FileRepo {
         * Doesn't do anything for repositories that don't support image redirects.
         *
         * STUB
-        * @param $title Title of image
+        * @param Title $title Title of image
         */
        public function invalidateImageRedirect( Title $title ) {
        }
@@ -1796,7 +1812,7 @@ class FileRepo {
        /**
         * Get an UploadStash associated with this repo.
         *
-        * @param $user User
+        * @param User $user
         * @return UploadStash
         */
        public function getUploadStash( User $user = null ) {
index 56fddf4..4be38bf 100644 (file)
@@ -54,7 +54,7 @@ class FileRepoStatus extends Status {
        }
 
        /**
-        * @param $repo FileRepo
+        * @param bool|FileRepo $repo
         */
        function __construct( $repo = false ) {
                if ( $repo ) {
index bb16c8b..8906834 100644 (file)
@@ -60,10 +60,10 @@ class ForeignAPIRepo extends FileRepo {
        protected $fileCacheExpiry = 2592000;
 
        /** @var array  */
-       private $mQueryCache = array();
+       protected $mFileExists = array();
 
        /** @var array  */
-       protected $mFileExists = array();
+       private $mQueryCache = array();
 
        /**
         * @param $info array|null
@@ -106,8 +106,8 @@ class ForeignAPIRepo extends FileRepo {
         * Per docs in FileRepo, this needs to return false if we don't support versioned
         * files. Well, we don't.
         *
-        * @param $title Title
-        * @param $time string|bool
+        * @param Title $title
+        * @param string|bool $time
         * @return File
         */
        function newFile( $title, $time = false ) {
@@ -119,7 +119,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $files array
+        * @param array $files
         * @return array
         */
        function fileExistsBatch( array $files ) {
@@ -174,7 +174,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $virtualUrl string
+        * @param string $virtualUrl
         * @return bool
         */
        function getFileProps( $virtualUrl ) {
@@ -182,7 +182,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $query array
+        * @param array $query
         * @return string
         */
        function fetchImageQuery( $query ) {
@@ -209,7 +209,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $data array
+        * @param array $data
         * @return bool|array
         */
        function getImageInfo( $data ) {
@@ -225,7 +225,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $hash string
+        * @param string $hash
         * @return array
         */
        function findBySha1( $hash ) {
@@ -249,11 +249,11 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $name string
-        * @param $width int
-        * @param $height int
-        * @param $result null
-        * @param $otherParams string
+        * @param string $name
+        * @param int $width
+        * @param int $height
+        * @param null $result
+        * @param string $otherParams
         * @return bool
         */
        function getThumbUrl( $name, $width = -1, $height = -1, &$result = null, $otherParams = '' ) {
@@ -277,10 +277,11 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $name string
-        * @param $width int
-        * @param $height int
-        * @param $otherParams string
+        * @param string $name
+        * @param int $width
+        * @param int $height
+        * @param string $otherParams
+        * @param string $lang Language code for language of error
         * @return bool|MediaTransformError
         * @since 1.22
         */
@@ -318,8 +319,8 @@ class ForeignAPIRepo extends FileRepo {
         * Otherwise retrieve remote thumb url, check for local file.
         *
         * @param string $name is a dbkey form of a title
-        * @param $width
-        * @param $height
+        * @param int $width
+        * @param int $height
         * @param string $params Other rendering parameters (page number, etc)
         *   from handler's makeParamString.
         * @return bool|string
@@ -414,7 +415,7 @@ class ForeignAPIRepo extends FileRepo {
 
        /**
         * @see FileRepo::getZoneUrl()
-        * @param $zone String
+        * @param string $zone
         * @param string|null $ext Optional file extension
         * @return String
         */
@@ -431,7 +432,7 @@ class ForeignAPIRepo extends FileRepo {
 
        /**
         * Get the local directory corresponding to one of the basic zones
-        * @param $zone string
+        * @param string $zone
         * @return bool|null|string
         */
        function getZonePath( $zone ) {
@@ -492,9 +493,9 @@ class ForeignAPIRepo extends FileRepo {
        /**
         * Like a Http:get request, but with custom User-Agent.
         * @see Http:get
-        * @param $url string
-        * @param $timeout string
-        * @param $options array
+        * @param string $url
+        * @param string $timeout
+        * @param array $options
         * @return bool|String
         */
        public static function httpGet( $url, $timeout = 'default', $options = array() ) {
@@ -529,9 +530,10 @@ class ForeignAPIRepo extends FileRepo {
 
        /**
         * HTTP GET request to a mediawiki API (with caching)
-        * @param $target string Used in cache key creation, mostly
-        * @param $query array The query parameters for the API request
-        * @param $cacheTTL int Time to live for the memcached caching
+        * @param string $target Used in cache key creation, mostly
+        * @param array $query The query parameters for the API request
+        * @param int $cacheTTL Time to live for the memcached caching
+        * @return null
         */
        public function httpGetCached( $target, $query, $cacheTTL = 3600 ) {
                if ( $this->mApiBase ) {
@@ -568,7 +570,7 @@ class ForeignAPIRepo extends FileRepo {
        }
 
        /**
-        * @param $callback Array|string
+        * @param array|string $callback
         * @throws MWException
         */
        function enumFiles( $callback ) {
index b38416f..92f017f 100644 (file)
  * @ingroup FileRepo
  */
 class ForeignDBRepo extends LocalRepo {
-       # Settings
+       /** @var string */
        protected $dbType;
+
+       /** @var string */
        protected $dbServer;
+
+       /** @var string */
        protected $dbUser;
+
+       /** @var string */
        protected $dbPassword;
+
+       /** @var string */
        protected $dbName;
+
+       /** @var string */
        protected $dbFlags;
+
+       /** @var string */
        protected $tablePrefix;
+
+       /** @var bool */
        protected $hasSharedCache;
 
        # Other stuff
@@ -43,7 +57,7 @@ class ForeignDBRepo extends LocalRepo {
        protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
 
        /**
-        * @param $info array|null
+        * @param array|null $info
         */
        function __construct( $info ) {
                parent::__construct( $info );
index ad63706..18f8d5d 100644 (file)
  * @ingroup FileRepo
  */
 class ForeignDBViaLBRepo extends LocalRepo {
+       /** @var string */
        protected $wiki;
+
+       /** @var string */
        protected $dbName;
+
+       /** @var string */
        protected $tablePrefix;
+
+       /** @var array */
        protected $fileFactory = array( 'ForeignDBFile', 'newFromTitle' );
+
+       /** @var array */
        protected $fileFromRowFactory = array( 'ForeignDBFile', 'newFromRow' );
 
        /**
-        * @param $info array|null
+        * @param array|null $info
         */
        function __construct( $info ) {
                parent::__construct( $info );
index a410eed..c5346aa 100644 (file)
  * @ingroup FileRepo
  */
 class LocalRepo extends FileRepo {
-       public $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' );
-
+       /** @var array */
        protected $fileFactory = array( 'LocalFile', 'newFromTitle' );
+
+       /** @var array */
        protected $fileFactoryKey = array( 'LocalFile', 'newFromKey' );
+
+       /** @var array */
        protected $fileFromRowFactory = array( 'LocalFile', 'newFromRow' );
+
+       /** @var array */
+       protected $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' );
+
+       /** @var array */
        protected $oldFileFactory = array( 'OldLocalFile', 'newFromTitle' );
+
+       /** @var array */
        protected $oldFileFactoryKey = array( 'OldLocalFile', 'newFromKey' );
 
        /**
         * @throws MWException
-        * @param $row
+        * @param array $row
         * @return LocalFile
         */
        function newFileFromRow( $row ) {
@@ -53,8 +63,8 @@ class LocalRepo extends FileRepo {
        }
 
        /**
-        * @param $title
-        * @param $archiveName
+        * @param Title $title
+        * @param string $archiveName
         * @return OldLocalFile
         */
        function newFromArchiveName( $title, $archiveName ) {
@@ -67,7 +77,7 @@ class LocalRepo extends FileRepo {
         * interleave database locks with file operations, which is potentially a
         * remote operation.
         *
-        * @param $storageKeys array
+        * @param array $storageKeys
         *
         * @return FileRepoStatus
         */
@@ -156,7 +166,7 @@ class LocalRepo extends FileRepo {
        /**
         * Checks if there is a redirect named as $title
         *
-        * @param $title Title of file
+        * @param Title $title Title of file
         * @return bool
         */
        function checkRedirect( Title $title ) {
@@ -209,7 +219,7 @@ class LocalRepo extends FileRepo {
         * Function link Title::getArticleID().
         * We can't say Title object, what database it should use, so we duplicate that function here.
         *
-        * @param $title Title
+        * @param Title $title
         * @return bool|int|mixed
         */
        protected function getArticleID( $title ) {
@@ -230,12 +240,129 @@ class LocalRepo extends FileRepo {
                return $id;
        }
 
+       public function findFiles( array $items, $flags = 0 ) {
+               $finalFiles = array(); // map of (DB key => corresponding File) for matches
+
+               $searchSet = array(); // map of (normalized DB key => search params)
+               foreach ( $items as $item ) {
+                       if ( is_array( $item ) ) {
+                               $title = File::normalizeTitle( $item['title'] );
+                               if ( $title ) {
+                                       $searchSet[$title->getDBkey()] = $item;
+                               }
+                       } else {
+                               $title = File::normalizeTitle( $item );
+                               if ( $title ) {
+                                       $searchSet[$title->getDBkey()] = array();
+                               }
+                       }
+               }
+
+               $fileMatchesSearch = function( File $file, array $search ) {
+                       // Note: file name comparison done elsewhere (to handle redirects)
+                       return (
+                               $file->exists() &&
+                               (
+                                       ( empty( $search['time'] ) && !$file->isOld() ) ||
+                                       ( !empty( $search['time'] ) && $search['time'] === $file->getTimestamp() )
+                               ) &&
+                               ( !empty( $search['private'] ) || !$file->isDeleted( File::DELETED_FILE ) ) &&
+                               $file->userCan( File::DELETED_FILE )
+                       );
+               };
+
+               $repo = $this;
+               $applyMatchingFiles = function( ResultWrapper $res, &$searchSet, &$finalFiles )
+                       use ( $repo, $fileMatchesSearch, $flags )
+               {
+                       global $wgContLang;
+                       $info = $repo->getInfo();
+                       foreach ( $res as $row ) {
+                               $file = $repo->newFileFromRow( $row );
+                               // There must have been a search for this DB key, but this has to handle the
+                               // cases were title capitalization is different on the client and repo wikis.
+                               $dbKeysLook = array( str_replace( ' ', '_', $file->getName() ) );
+                               if ( !empty( $info['initialCapital'] ) ) {
+                                       // Search keys for "hi.png" and "Hi.png" should use the "Hi.png file"
+                                       $dbKeysLook[] = $wgContLang->lcfirst( $file->getName() );
+                               }
+                               foreach ( $dbKeysLook as $dbKey ) {
+                                       if ( isset( $searchSet[$dbKey])
+                                               && $fileMatchesSearch( $file, $searchSet[$dbKey] )
+                                       ) {
+                                               $finalFiles[$dbKey] = ( $flags & FileRepo::NAME_AND_TIME_ONLY )
+                                                       ? array( 'title' => $dbKey, 'timestamp' => $file->getTimestamp() )
+                                                       : $file;
+                                               unset( $searchSet[$dbKey] );
+                                       }
+                               }
+                       }
+               };
+
+               $dbr = $this->getSlaveDB();
+
+               // Query image table
+               $imgNames = array();
+               foreach ( array_keys( $searchSet ) as $dbKey ) {
+                       $imgNames[] = $this->getNameFromTitle( File::normalizeTitle( $dbKey ) );
+               }
+               if ( count( $imgNames ) ) {
+                       $res = $dbr->select( 'image',
+                               LocalFile::selectFields(), array( 'img_name' => $imgNames ), __METHOD__ );
+                       $applyMatchingFiles( $res, $searchSet, $finalFiles );
+               }
+
+               // Query old image table
+               $oiConds = array(); // WHERE clause array for each file
+               foreach ( $searchSet as $dbKey => $search ) {
+                       if ( isset( $search['params']['time'] ) ) {
+                               $oiConds[] = $dbr->makeList(
+                                       array(
+                                               'oi_name' => $this->getNameFromTitle( File::normalizeTitle( $dbKey ) ),
+                                               'oi_timestamp' => $dbr->timestamp( $search['params']['time'] )
+                                       ),
+                                       LIST_AND
+                               );
+                       }
+               }
+               if ( count( $oiConds ) ) {
+                       $res = $dbr->select( 'oldimage',
+                               OldLocalFile::selectFields(), $dbr->makeList( $oiConds, LIST_OR ), __METHOD__ );
+                       $applyMatchingFiles( $res, $searchSet, $finalFiles );
+               }
+
+               // Check for redirects...
+               foreach ( $searchSet as $dbKey => $search ) {
+                       if ( !empty( $search['ignoreRedirect'] ) ) {
+                               continue;
+                       }
+                       $title = File::normalizeTitle( $dbKey );
+                       $redir = $this->checkRedirect( $title ); // hopefully hits memcached
+                       if ( $redir && $redir->getNamespace() == NS_FILE ) {
+                               $file = $this->newFile( $redir );
+                               if ( $file && $fileMatchesSearch( $file, $search ) ) {
+                                       $file->redirectedFrom( $title->getDBkey() );
+                                       if ( $flags & FileRepo::NAME_AND_TIME_ONLY ) {
+                                               $finalFiles[$dbKey] = array(
+                                                       'title'     => $file->getTitle()->getDBkey(),
+                                                       'timestamp' => $file->getTimestamp()
+                                               );
+                                       } else {
+                                               $finalFiles[$dbKey] = $file;
+                                       }
+                               }
+                       }
+               }
+
+               return $finalFiles;
+       }
+
        /**
         * Get an array or iterator of file objects for files that have a given
         * SHA-1 content hash.
         *
         * @param string $hash a sha1 hash to look for
-        * @return Array
+        * @return array
         */
        function findBySha1( $hash ) {
                $dbr = $this->getSlaveDB();
@@ -350,7 +477,7 @@ class LocalRepo extends FileRepo {
        /**
         * Invalidates image redirect cache related to that image
         *
-        * @param $title Title of page
+        * @param Title $title Title of page
         * @return void
         */
        function invalidateImageRedirect( Title $title ) {
index 29e4cad..f2b7395 100644 (file)
@@ -26,9 +26,8 @@
  * @ingroup FileRepo
  */
 class NullRepo extends FileRepo {
-
        /**
-        * @param $info array|null
+        * @param array|null $info
         */
        function __construct( $info ) {
        }
index 1a7ae34..33ab8ae 100644 (file)
@@ -30,15 +30,19 @@ class RepoGroup {
        /** @var LocalRepo */
        protected $localRepo;
 
+       /** @var FileRepo[] */
        protected $foreignRepos;
 
        /** @var bool */
        protected $reposInitialised = false;
 
+       /** @var array */
        protected $localInfo;
+
+       /** @var array */
        protected $foreignInfo;
 
-       /** @var array  */
+       /** @var ProcessCacheLRU  */
        protected $cache;
 
        /** @var RepoGroup */
@@ -76,7 +80,7 @@ class RepoGroup {
         * It's not enough to just create a superclass ... you have
         * to get people to call into it even though all they know is RepoGroup::singleton()
         *
-        * @param $instance RepoGroup
+        * @param RepoGroup $instance
         */
        static function setSingleton( $instance ) {
                self::$instance = $instance;
@@ -87,14 +91,14 @@ class RepoGroup {
         *
         * @param array $localInfo Associative array for local repo's info
         * @param array $foreignInfo of repository info arrays.
-        *     Each info array is an associative array with the 'class' member
-        *     giving the class name. The entire array is passed to the repository
-        *     constructor as the first parameter.
+        *   Each info array is an associative array with the 'class' member
+        *   giving the class name. The entire array is passed to the repository
+        *   constructor as the first parameter.
         */
        function __construct( $localInfo, $foreignInfo ) {
                $this->localInfo = $localInfo;
                $this->foreignInfo = $foreignInfo;
-               $this->cache = array();
+               $this->cache = new ProcessCacheLRU( self::MAX_CACHE_SIZE );
        }
 
        /**
@@ -103,18 +107,15 @@ class RepoGroup {
         *
         * @param $title Title|string Title object or string
         * @param array $options Associative array of options:
-        *     time:           requested time for an archived image, or false for the
-        *                     current version. An image object will be returned which was
-        *                     created at the specified time.
-        *
-        *     ignoreRedirect: If true, do not follow file redirects
-        *
-        *     private:        If true, return restricted (deleted) files if the current
-        *                     user is allowed to view them. Otherwise, such files will not
-        *                     be found.
-        *
-        *     bypassCache:    If true, do not use the process-local cache of File objects
-        * @return File object or false if it is not found
+        *   time:           requested time for an archived image, or false for the
+        *                   current version. An image object will be returned which was
+        *                   created at the specified time.
+        *   ignoreRedirect: If true, do not follow file redirects
+        *   private:        If true, return restricted (deleted) files if the current
+        *                   user is allowed to view them. Otherwise, such files will not
+        *                   be found.
+        *   bypassCache:    If true, do not use the process-local cache of File objects
+        * @return File|bool False if title is not found
         */
        function findFile( $title, $options = array() ) {
                if ( !is_array( $options ) ) {
@@ -136,13 +137,8 @@ class RepoGroup {
                ) {
                        $time = isset( $options['time'] ) ? $options['time'] : '';
                        $dbkey = $title->getDBkey();
-                       if ( isset( $this->cache[$dbkey][$time] ) ) {
-                               wfDebug( __METHOD__ . ": got File:$dbkey from process cache\n" );
-                               # Move it to the end of the list so that we can delete the LRU entry later
-                               $this->pingCache( $dbkey );
-
-                               # Return the entry
-                               return $this->cache[$dbkey][$time];
+                       if ( $this->cache->has( $dbkey, $time, 60 ) ) {
+                               return $this->cache->get( $dbkey, $time );
                        }
                        $useCache = true;
                } else {
@@ -165,18 +161,34 @@ class RepoGroup {
                $image = $image ? $image : false; // type sanity
                # Cache file existence or non-existence
                if ( $useCache && ( !$image || $image->isCacheable() ) ) {
-                       $this->trimCache();
-                       $this->cache[$dbkey][$time] = $image;
+                       $this->cache->set( $dbkey, $time, $image );
                }
 
                return $image;
        }
 
        /**
-        * @param $inputItems array
+        * Search repositories for many files at once.
+        *
+        * @param array $items An array of titles, or an array of findFile() options with
+        *    the "title" option giving the title. Example:
+        *
+        *     $findItem = array( 'title' => $title, 'private' => true );
+        *     $findBatch = array( $findItem );
+        *     $repo->findFiles( $findBatch );
+        *
+        *    No title should appear in $items twice, as the result use titles as keys
+        * @param int $flags Supports:
+        *     - FileRepo::NAME_AND_TIME_ONLY : return a (search title => (title,timestamp)) map.
+        *       The search title uses the input titles; the other is the final post-redirect title.
+        *       All titles are returned as string DB keys and the inner array is associative.
+        * @return array Map of (file name => File objects) for matches
+        *
+        * @param array $inputItems
+        * @param integer $flags
         * @return array
         */
-       function findFiles( $inputItems ) {
+       function findFiles( array $inputItems, $flags = 0 ) {
                if ( !$this->reposInitialised ) {
                        $this->initialiseRepos();
                }
@@ -192,7 +204,7 @@ class RepoGroup {
                        }
                }
 
-               $images = $this->localRepo->findFiles( $items );
+               $images = $this->localRepo->findFiles( $items, $flags );
 
                foreach ( $this->foreignRepos as $repo ) {
                        // Remove found files from $items
@@ -200,7 +212,7 @@ class RepoGroup {
                                unset( $items[$name] );
                        }
 
-                       $images = array_merge( $images, $repo->findFiles( $items ) );
+                       $images = array_merge( $images, $repo->findFiles( $items, $flags ) );
                }
 
                return $images;
@@ -220,6 +232,7 @@ class RepoGroup {
                if ( $redir ) {
                        return $redir;
                }
+
                foreach ( $this->foreignRepos as $repo ) {
                        $redir = $repo->checkRedirect( $title );
                        if ( $redir ) {
@@ -280,7 +293,7 @@ class RepoGroup {
         * Find all instances of files with this keys
         *
         * @param array $hashes base 36 SHA-1 hashes
-        * @return Array of array of File objects
+        * @return array of array of File objects
         */
        function findBySha1s( array $hashes ) {
                if ( !$this->reposInitialised ) {
@@ -301,7 +314,7 @@ class RepoGroup {
 
        /**
         * Get the repo instance with a given key.
-        * @param $index string|int
+        * @param string|int $index
         * @return bool|LocalRepo
         */
        function getRepo( $index ) {
@@ -319,7 +332,7 @@ class RepoGroup {
 
        /**
         * Get the repo instance by its name
-        * @param $name string
+        * @param string $name
         * @return bool
         */
        function getRepoByName( $name ) {
@@ -349,8 +362,8 @@ class RepoGroup {
         * Call a function for each foreign repo, with the repo object as the
         * first parameter.
         *
-        * @param $callback Callback: the function to call
-        * @param array $params optional additional parameters to pass to the function
+        * @param callable $callback The function to call
+        * @param array $params Optional additional parameters to pass to the function
         * @return bool
         */
        function forEachForeignRepo( $callback, $params = array() ) {
@@ -366,7 +379,7 @@ class RepoGroup {
 
        /**
         * Does the installation have any foreign repos set up?
-        * @return Boolean
+        * @return bool
         */
        function hasForeignRepos() {
                return (bool)$this->foreignRepos;
@@ -399,7 +412,7 @@ class RepoGroup {
 
        /**
         * Split a virtual URL into repo, zone and rel parts
-        * @param $url string
+        * @param string $url
         * @throws MWException
         * @return array containing repo, zone and rel
         */
@@ -417,7 +430,7 @@ class RepoGroup {
        }
 
        /**
-        * @param $fileName string
+        * @param string $fileName
         * @return array
         */
        function getFileProps( $fileName ) {
@@ -434,41 +447,15 @@ class RepoGroup {
                }
        }
 
-       /**
-        * Move a cache entry to the top (such as when accessed)
-        */
-       protected function pingCache( $key ) {
-               if ( isset( $this->cache[$key] ) ) {
-                       $tmp = $this->cache[$key];
-                       unset( $this->cache[$key] );
-                       $this->cache[$key] = $tmp;
-               }
-       }
-
-       /**
-        * Limit cache memory
-        */
-       protected function trimCache() {
-               while ( count( $this->cache ) >= self::MAX_CACHE_SIZE ) {
-                       reset( $this->cache );
-                       $key = key( $this->cache );
-                       wfDebug( __METHOD__ . ": evicting $key\n" );
-                       unset( $this->cache[$key] );
-               }
-       }
-
        /**
         * Clear RepoGroup process cache used for finding a file
-        * @param $title Title|null Title of the file or null to clear all files
+        * @param Title|null $title Title of the file or null to clear all files
         */
        public function clearCache( Title $title = null ) {
                if ( $title == null ) {
-                       $this->cache = array();
+                       $this->cache->clear();
                } else {
-                       $dbKey = $title->getDBkey();
-                       if ( isset( $this->cache[$dbKey] ) ) {
-                               unset( $this->cache[$dbKey] );
-                       }
+                       $this->cache->clear( $title->getDBkey() );
                }
        }
 }
index 91c2fb4..26699c4 100644 (file)
@@ -195,8 +195,7 @@ class ArchivedFile {
        /**
         * Loads a file object from the filearchive table
         *
-        * @param $row
-        *
+        * @param stdClass $row
         * @return ArchivedFile
         */
        public static function newFromRow( $row ) {
@@ -238,7 +237,7 @@ class ArchivedFile {
        /**
         * Load ArchivedFile object fields from a DB row.
         *
-        * @param $row Object database row
+        * @param stdClass $row Object database row
         * @since 1.21
         */
        public function loadFromRow( $row ) {
@@ -452,25 +451,36 @@ class ArchivedFile {
        }
 
        /**
-        * Return the user ID of the uploader.
+        * Returns ID or name of user who uploaded the file
         *
-        * @return int
+        * @note Prior to MediaWiki 1.23, this method always
+        *   returned the user id, and was inconsistent with
+        *   the rest of the file classes.
+        * @param string $type 'text' or 'id'
+        * @return int|string
+        * @throws MWException
         */
-       public function getUser() {
+       public function getUser( $type = 'text' ) {
                $this->load();
-               if ( $this->isDeleted( File::DELETED_USER ) ) {
-                       return 0;
-               } else {
+
+               if ( $type == 'text' ) {
+                       return $this->user_text;
+               } elseif ( $type == 'id' ) {
                        return $this->user;
                }
+
+               throw new MWException( "Unknown type '$type'." );
+
        }
 
        /**
         * Return the user name of the uploader.
         *
+        * @deprecated 1.23 Use getUser( 'text' ) instead.
         * @return string
         */
        public function getUserText() {
+               wfDeprecated( __METHOD__, '1.23' );
                $this->load();
                if ( $this->isDeleted( File::DELETED_USER ) ) {
                        return 0;
@@ -539,7 +549,7 @@ class ArchivedFile {
        /**
         * for file or revision rows
         *
-        * @param $field Integer: one of DELETED_* bitfield constants
+        * @param int $field One of DELETED_* bitfield constants
         * @return bool
         */
        public function isDeleted( $field ) {
@@ -551,8 +561,8 @@ class ArchivedFile {
        /**
         * Determine if the current user is allowed to view a particular
         * field of this FileStore image file, if it's marked as deleted.
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
+        * @param int $field
+        * @param null|User $user User object to check, or null to use $wgUser
         * @return bool
         */
        public function userCan( $field, User $user = null ) {
index cf4ddf5..c9e435e 100644 (file)
@@ -91,7 +91,7 @@ abstract class File {
         * The following member variables are not lazy-initialised
         */
 
-       /** @var FileRepo|bool */
+       /** @var FileRepo|LocalRepo|ForeignAPIRepo|bool */
        public $repo;
 
        /** @var Title|string|bool */
@@ -156,8 +156,8 @@ abstract class File {
         * may return false or throw exceptions if they are not set.
         * Most subclasses will want to call assertRepoDefined() here.
         *
-        * @param $title Title|string|bool
-        * @param $repo FileRepo|bool
+        * @param Title|string|bool $title
+        * @param FileRepo|bool $repo
         */
        function __construct( $title, $repo ) {
                if ( $title !== false ) { // subclasses may not use MW titles
@@ -171,7 +171,7 @@ abstract class File {
         * Given a string or Title object return either a
         * valid Title object with namespace NS_FILE or null
         *
-        * @param $title Title|string
+        * @param Title|string $title
         * @param string|bool $exception Use 'exception' to throw an error on bad titles
         * @throws MWException
         * @return Title|null
@@ -235,7 +235,7 @@ abstract class File {
        /**
         * Checks if file extensions are compatible
         *
-        * @param $old File Old file
+        * @param File $old Old file
         * @param string $new New name
         *
         * @return bool|null
@@ -275,10 +275,9 @@ abstract class File {
        /**
         * Callback for usort() to do file sorts by name
         *
-        * @param $a File
-        * @param $b File
-        *
-        * @return Integer: result of name comparison
+        * @param File $a
+        * @param File $b
+        * @return int Result of name comparison
         */
        public static function compare( File $a, File $b ) {
                return strcmp( $a->getName(), $b->getName() );
@@ -355,7 +354,7 @@ abstract class File {
         * Upload URL paths _may or may not_ be fully qualified, so
         * we check. Local paths are assumed to belong on $wgServer.
         *
-        * @return String
+        * @return string
         */
        public function getFullUrl() {
                return wfExpandUrl( $this->getUrl(), PROTO_RELATIVE );
@@ -436,9 +435,8 @@ abstract class File {
         * STUB
         * Overridden by LocalFile, UnregisteredLocalFile
         *
-        * @param $page int
-        *
-        * @return number
+        * @param int $page
+        * @return int|bool
         */
        public function getWidth( $page = 1 ) {
                return false;
@@ -451,9 +449,8 @@ abstract class File {
         * STUB
         * Overridden by LocalFile, UnregisteredLocalFile
         *
-        * @param $page int
-        *
-        * @return bool|number False on failure
+        * @param int $page
+        * @return bool|int False on failure
         */
        public function getHeight( $page = 1 ) {
                return false;
@@ -464,7 +461,6 @@ abstract class File {
         * STUB
         *
         * @param string $type 'text' or 'id'
-        *
         * @return string|int
         */
        public function getUser( $type = 'text' ) {
@@ -474,7 +470,7 @@ abstract class File {
        /**
         * Get the duration of a media file in seconds
         *
-        * @return number
+        * @return int
         */
        public function getLength() {
                $handler = $this->getHandler();
@@ -499,6 +495,42 @@ abstract class File {
                }
        }
 
+       /**
+        * Gives a (possibly empty) list of languages to render
+        * the file in.
+        *
+        * If the file doesn't have translations, or if the file
+        * format does not support that sort of thing, returns
+        * an empty array.
+        *
+        * @return Array
+        * @since 1.23
+        */
+       public function getAvailableLanguages() {
+               $handler = $this->getHandler();
+               if ( $handler ) {
+                       return $handler->getAvailableLanguages( $this );
+               } else {
+                       return array();
+               }
+       }
+
+       /**
+        * In files that support multiple language, what is the default language
+        * to use if none specified.
+        *
+        * @return String lang code, or null if filetype doesn't support multiple languages.
+        * @since 1.23
+        */
+       public function getDefaultRenderLanguage() {
+               $handler = $this->getHandler();
+               if ( $handler ) {
+                       return $handler->getDefaultRenderLanguage( $this );
+               } else {
+                       return null;
+               }
+       }
+
        /**
         * Will the thumbnail be animated if one would expect it to be.
         *
@@ -536,7 +568,7 @@ abstract class File {
         * Get handler-specific metadata
         * Overridden by LocalFile, UnregisteredLocalFile
         * STUB
-        * @return bool
+        * @return bool|array
         */
        public function getMetadata() {
                return false;
@@ -545,21 +577,25 @@ abstract class File {
        /**
         * Like getMetadata but returns a handler independent array of common values.
         * @see MediaHandler::getCommonMetaArray()
-        * @return Array or false if not supported
+        * @return array|bool Array or false if not supported
         * @since 1.23
         */
        public function getCommonMetaArray() {
                $handler = $this->getHandler();
 
+               if ( !$handler ) {
+                       return false;
+               }
                return $handler->getCommonMetaArray( $this );
        }
 
        /**
         * get versioned metadata
         *
-        * @param $metadata Mixed Array or String of (serialized) metadata
-        * @param $version integer version number.
-        * @return Array containing metadata, or what was passed to it on fail (unserializing if not array)
+        * @param array|string $metadata Array or string of (serialized) metadata
+        * @param int $version Version number.
+        * @return array Array containing metadata, or what was passed to it on fail
+        *   (unserializing if not array)
         */
        public function convertMetadataVersion( $metadata, $version ) {
                $handler = $this->getHandler();
@@ -757,7 +793,7 @@ abstract class File {
         *
         * Overridden by LocalFile to avoid unnecessary stat calls.
         *
-        * @return boolean Whether file exists in the repository.
+        * @return bool Whether file exists in the repository.
         */
        public function exists() {
                return $this->getPath() && $this->repo->fileExists( $this->path );
@@ -767,7 +803,7 @@ abstract class File {
         * Returns true if file exists in the repository and can be included in a page.
         * It would be unsafe to include private images, making public thumbnails inadvertently
         *
-        * @return boolean Whether file exists in the repository and is includable.
+        * @return bool Whether file exists in the repository and is includable.
         */
        public function isVisible() {
                return $this->exists();
@@ -793,7 +829,7 @@ abstract class File {
        /**
         * Get a ThumbnailImage which is the same size as the source
         *
-        * @param $handlerParams array
+        * @param array $handlerParams
         *
         * @return string
         */
@@ -815,7 +851,7 @@ abstract class File {
         * Otherwise, the format may be "<params>-<source>" or "<params>-thumbnail.<ext>".
         *
         * @param array $params handler-specific parameters
-        * @param $flags integer Bitfield that supports THUMB_* constants
+        * @param int $flags Bitfield that supports THUMB_* constants
         * @return string
         */
        public function thumbName( $params, $flags = 0 ) {
@@ -831,7 +867,6 @@ abstract class File {
         *
         * @param string $name
         * @param array $params Parameters which will be passed to MediaHandler::makeParamString
-        *
         * @return string
         */
        public function generateThumbName( $name, $params ) {
@@ -839,7 +874,7 @@ abstract class File {
                        return null;
                }
                $extension = $this->getExtension();
-               list( $thumbExt, $thumbMime ) = $this->handler->getThumbType(
+               list( $thumbExt, ) = $this->handler->getThumbType(
                        $extension, $this->getMimeType(), $params );
                $thumbName = $this->handler->makeParamString( $params ) . '-' . $name;
                if ( $thumbExt != $extension ) {
@@ -861,8 +896,8 @@ abstract class File {
         * specified, the generated image will be no bigger than width x height,
         * and will also have correct aspect ratio.
         *
-        * @param $width Integer: maximum width of the generated thumbnail
-        * @param $height Integer: maximum height of the image (optional)
+        * @param int $width Maximum width of the generated thumbnail
+        * @param int $height Maximum height of the image (optional)
         *
         * @return string
         */
@@ -872,7 +907,7 @@ abstract class File {
                        $params['height'] = $height;
                }
                $thumb = $this->transform( $params );
-               if ( is_null( $thumb ) || $thumb->isError() ) {
+               if ( !$thumb || $thumb->isError() ) {
                        return '';
                }
 
@@ -884,8 +919,8 @@ abstract class File {
         *
         * @param string $thumbPath Thumbnail storage path
         * @param string $thumbUrl Thumbnail URL
-        * @param $params Array
-        * @param $flags integer
+        * @param array $params
+        * @param int $flags
         * @return MediaTransformOutput
         */
        protected function transformErrorOutput( $thumbPath, $thumbUrl, $params, $flags ) {
@@ -904,8 +939,8 @@ abstract class File {
         * Transform a media file
         *
         * @param array $params an associative array of handler-specific parameters.
-        *                Typical keys are width, height and page.
-        * @param $flags Integer: a bitfield, may contain self::RENDER_NOW to force rendering
+        *   Typical keys are width, height and page.
+        * @param int $flags A bitfield, may contain self::RENDER_NOW to force rendering
         * @return MediaTransformOutput|bool False on failure
         */
        function transform( $params, $flags = 0 ) {
@@ -1053,7 +1088,8 @@ abstract class File {
        /**
         * Get a MediaHandler instance for this file
         *
-        * @return MediaHandler|boolean Registered MediaHandler for file's mime type or false if none found
+        * @return MediaHandler|bool Registered MediaHandler for file's MIME type
+        *   or false if none found
         */
        function getHandler() {
                if ( !isset( $this->handler ) ) {
@@ -1108,7 +1144,7 @@ abstract class File {
         * STUB
         * Overridden by LocalFile
         * @param array $options Options, which include:
-        *     'forThumbRefresh' : The purging is only to refresh thumbnails
+        *   'forThumbRefresh' : The purging is only to refresh thumbnails
         */
        function purgeCache( $options = array() ) {
        }
@@ -1147,7 +1183,7 @@ abstract class File {
         * Return a fragment of the history of file.
         *
         * STUB
-        * @param $limit integer Limit of rows to return
+        * @param int $limit Limit of rows to return
         * @param string $start timestamp Only revisions older than $start will be returned
         * @param string $end timestamp Only revisions newer than $end will be returned
         * @param bool $inc Include the endpoints of the time range
@@ -1229,7 +1265,6 @@ abstract class File {
         * thumbnail directory or a particular file if $suffix is specified
         *
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string
         */
        function getThumbRel( $suffix = false ) {
@@ -1257,7 +1292,6 @@ abstract class File {
         *
         * @param string $archiveName the timestamped name of an archived image
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string
         */
        function getArchiveThumbRel( $archiveName, $suffix = false ) {
@@ -1275,7 +1309,6 @@ abstract class File {
         * Get the path of the archived file.
         *
         * @param bool|string $suffix if not false, the name of an archived file.
-        *
         * @return string
         */
        function getArchivePath( $suffix = false ) {
@@ -1289,7 +1322,6 @@ abstract class File {
         *
         * @param string $archiveName the timestamped name of an archived image
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string
         */
        function getArchiveThumbPath( $archiveName, $suffix = false ) {
@@ -1302,8 +1334,7 @@ abstract class File {
        /**
         * Get the path of the thumbnail directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getThumbPath( $suffix = false ) {
@@ -1315,8 +1346,7 @@ abstract class File {
        /**
         * Get the path of the transcoded directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of a media file
-        *
+        * @param bool|string $suffix If not false, the name of a media file
         * @return string
         */
        function getTranscodedPath( $suffix = false ) {
@@ -1328,8 +1358,7 @@ abstract class File {
        /**
         * Get the URL of the archive directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of an archived file
-        *
+        * @param bool|string $suffix If not false, the name of an archived file
         * @return string
         */
        function getArchiveUrl( $suffix = false ) {
@@ -1349,8 +1378,7 @@ abstract class File {
         * Get the URL of the archived file's thumbs, or a particular thumb if $suffix is specified
         *
         * @param string $archiveName the timestamped name of an archived image
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getArchiveThumbUrl( $archiveName, $suffix = false ) {
@@ -1371,8 +1399,7 @@ abstract class File {
         * Get the URL of the zone directory, or a particular file if $suffix is specified
         *
         * @param string $zone name of requested zone
-        * @param bool|string $suffix if not false, the name of a file in zone
-        *
+        * @param bool|string $suffix If not false, the name of a file in zone
         * @return string path
         */
        function getZoneUrl( $zone, $suffix = false ) {
@@ -1390,7 +1417,6 @@ abstract class File {
         * Get the URL of the thumbnail directory, or a particular file if $suffix is specified
         *
         * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
         * @return string path
         */
        function getThumbUrl( $suffix = false ) {
@@ -1400,8 +1426,7 @@ abstract class File {
        /**
         * Get the URL of the transcoded directory, or a particular file if $suffix is specified
         *
-        * @param bool|string $suffix if not false, the name of a media file
-        *
+        * @param bool|string $suffix If not false, the name of a media file
         * @return string path
         */
        function getTranscodedUrl( $suffix = false ) {
@@ -1411,8 +1436,7 @@ abstract class File {
        /**
         * Get the public zone virtual URL for a current version source file
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getVirtualUrl( $suffix = false ) {
@@ -1428,8 +1452,7 @@ abstract class File {
        /**
         * Get the public zone virtual URL for an archived version source file
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getArchiveVirtualUrl( $suffix = false ) {
@@ -1447,8 +1470,7 @@ abstract class File {
        /**
         * Get the virtual URL for a thumbnail file or directory
         *
-        * @param bool|string $suffix if not false, the name of a thumbnail file
-        *
+        * @param bool|string $suffix If not false, the name of a thumbnail file
         * @return string
         */
        function getThumbVirtualUrl( $suffix = false ) {
@@ -1483,12 +1505,12 @@ abstract class File {
         * Overridden by LocalFile
         * @param $oldver
         * @param $desc
-        * @param $license string
-        * @param $copyStatus string
-        * @param $source string
-        * @param $watch bool
-        * @param $timestamp string|bool
-        * @param $user User object or null to use $wgUser
+        * @param string $license
+        * @param string $copyStatus
+        * @param string $source
+        * @param bool $watch
+        * @param string|bool $timestamp
+        * @param null|User $user User object or null to use $wgUser
         * @return bool
         * @throws MWException
         */
@@ -1510,12 +1532,11 @@ abstract class File {
         *   - headers : name/value map of HTTP headers to use in response to GET/HEAD requests
         *
         * @param string $srcPath 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 int $flags A bitwise combination of:
+        *   File::DELETE_SOURCE    Delete the source file, i.e. move rather than copy
         * @param array $options 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.
+        *   archive name, or an empty string if it was a new file.
         *
         * STUB
         * Overridden by LocalFile
@@ -1556,7 +1577,7 @@ abstract class File {
        /**
         * Returns the repository
         *
-        * @return FileRepo|bool
+        * @return FileRepo|LocalRepo|bool
         */
        function getRepo() {
                return $this->repo;
@@ -1576,8 +1597,7 @@ abstract class File {
         * Is this file a "deleted" file in a private archive?
         * STUB
         *
-        * @param integer $field one of DELETED_* bitfield constants
-        *
+        * @param int $field one of DELETED_* bitfield constants
         * @return bool
         */
        function isDeleted( $field ) {
@@ -1613,7 +1633,7 @@ abstract class File {
         * Cache purging is done; checks for validity
         * and logging are caller's responsibility
         *
-        * @param $target Title New file name
+        * @param Title $target New file name
         * @return FileRepoStatus object.
         */
        function move( $target ) {
@@ -1628,8 +1648,8 @@ abstract class File {
         *
         * Cache purging is done; logging is caller's responsibility.
         *
-        * @param $reason String
-        * @param $suppress Boolean: hide content from sysops?
+        * @param string $reason
+        * @param bool $suppress Hide content from sysops?
         * @return bool on success, false on some kind of failure
         * STUB
         * Overridden by LocalFile
@@ -1645,10 +1665,10 @@ abstract class File {
         * May throw database exceptions on error.
         *
         * @param array $versions set of record ids of deleted items to restore,
-        *                    or empty to restore all revisions.
+        *   or empty to restore all revisions.
         * @param bool $unsuppress remove restrictions on content upon restoration?
         * @return int|bool the number of file revisions restored if successful,
-        *         or false on failure
+        *   or false on failure
         * STUB
         * Overridden by LocalFile
         */
@@ -1661,7 +1681,7 @@ abstract class File {
         * e.g. DJVU or PDF. Note that this may be true even if the file in
         * question only has a single page.
         *
-        * @return Bool
+        * @return bool
         */
        function isMultipage() {
                return $this->getHandler() && $this->handler->isMultiPage( $this );
@@ -1688,9 +1708,9 @@ abstract class File {
        /**
         * Calculate the height of a thumbnail using the source and destination width
         *
-        * @param $srcWidth
-        * @param $srcHeight
-        * @param $dstWidth
+        * @param int $srcWidth
+        * @param int $srcHeight
+        * @param int $dstWidth
         *
         * @return int
         */
@@ -1708,7 +1728,7 @@ abstract class File {
         * can't be determined.
         *
         * @param string $fileName The filename
-        * @return Array
+        * @return array
         */
        function getImageSize( $fileName ) {
                if ( !$this->getHandler() ) {
@@ -1735,7 +1755,7 @@ abstract class File {
        /**
         * Get the HTML text of the description page, if available
         *
-        * @param $lang Language Optional language to fetch description in
+        * @param bool|Language $lang Optional language to fetch description in
         * @return string
         */
        function getDescriptionText( $lang = false ) {
@@ -1780,12 +1800,12 @@ abstract class File {
         * Get description of file revision
         * STUB
         *
-        * @param $audience Integer: one of:
-        *      File::FOR_PUBLIC       to be displayed to all users
-        *      File::FOR_THIS_USER    to be displayed to the given user
-        *      File::RAW              get the description regardless of permissions
-        * @param $user User object to check for, only if FOR_THIS_USER is passed
-        *              to the $audience parameter
+        * @param int $audience One of:
+        *   File::FOR_PUBLIC       to be displayed to all users
+        *   File::FOR_THIS_USER    to be displayed to the given user
+        *   File::RAW              get the description regardless of permissions
+        * @param User $user User object to check for, only if FOR_THIS_USER is
+        *   passed to the $audience parameter
         * @return string
         */
        function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
@@ -1834,9 +1854,9 @@ abstract class File {
         * Determine if the current user is allowed to view a particular
         * field of this file, if it's marked as deleted.
         * STUB
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
-        * @return Boolean
+        * @param int $field
+        * @param User $user User object to check, or null to use $wgUser
+        * @return bool
         */
        function userCan( $field, User $user = null ) {
                return true;
@@ -1846,8 +1866,8 @@ abstract class File {
         * Get an associative array containing information about a file in the local filesystem.
         *
         * @param string $path absolute local filesystem path
-        * @param $ext Mixed: the file extension, or true to extract it from the filename.
-        *             Set it to false to ignore the extension.
+        * @param string|bool $ext The file extension, or true to extract it from
+        *   the filename. Set it to false to ignore the extension.
         *
         * @return array
         * @deprecated since 1.19
@@ -1869,7 +1889,6 @@ abstract class File {
         * fairly neatly.
         *
         * @param $path string
-        *
         * @return bool|string False on failure
         * @deprecated since 1.19
         */
@@ -1882,7 +1901,7 @@ abstract class File {
        }
 
        /**
-        * @return Array HTTP header name/value map to use for HEAD/GET request responses
+        * @return array HTTP header name/value map to use for HEAD/GET request responses
         */
        function getStreamHeaders() {
                $handler = $this->getHandler();
@@ -1930,7 +1949,7 @@ abstract class File {
        }
 
        /**
-        * @return
+        * @return string
         */
        function getRedirected() {
                return $this->redirected;
@@ -1952,7 +1971,7 @@ abstract class File {
        }
 
        /**
-        * @param $from
+        * @param string $from
         * @return void
         */
        function redirectedFrom( $from ) {
@@ -1968,7 +1987,7 @@ abstract class File {
 
        /**
         * Check if this file object is small and can be cached
-        * @return boolean
+        * @return bool
         */
        public function isCacheable() {
                return true;
index 2f713a9..690d1b8 100644 (file)
@@ -34,7 +34,7 @@ class ForeignAPIFile extends File {
 
        /**
         * @param $title
-        * @param $repo ForeignApiRepo
+        * @param ForeignApiRepo $repo
         * @param $info
         * @param bool $exists
         */
@@ -48,8 +48,8 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @param $title Title
-        * @param $repo ForeignApiRepo
+        * @param Title $title
+        * @param ForeignApiRepo $repo
         * @return ForeignAPIFile|null
         */
        static function newFromTitle( Title $title, $repo ) {
@@ -150,7 +150,7 @@ class ForeignAPIFile extends File {
        // Info we can get from API...
 
        /**
-        * @param $page int
+        * @param int $page
         * @return int|number
         */
        public function getWidth( $page = 1 ) {
@@ -158,7 +158,7 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @param $page int
+        * @param int $page
         * @return int
         */
        public function getHeight( $page = 1 ) {
@@ -177,7 +177,8 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @return array|null extended metadata (see imageinfo API for format) or null on error
+        * @return array|null Extended metadata (see imageinfo API for format) or
+        *   null on error
         */
        public function getExtendedMetadata() {
                if ( isset( $this->mInfo['extmetadata'] ) ) {
@@ -188,7 +189,7 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @param $metadata array
+        * @param array $metadata
         * @return array
         */
        public static function parseMetadata( $metadata ) {
@@ -226,6 +227,8 @@ class ForeignAPIFile extends File {
        }
 
        /**
+        * @param int $audience
+        * @param User $user
         * @return null|string
         */
        public function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
@@ -242,7 +245,7 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @return bool|Mixed|string
+        * @return bool|string
         */
        function getTimestamp() {
                return wfTimestamp( TS_MW,
@@ -287,7 +290,7 @@ class ForeignAPIFile extends File {
 
        /**
         * Only useful if we're locally caching thumbs anyway...
-        * @param $suffix string
+        * @param string $suffix
         * @return null|string
         */
        function getThumbPath( $suffix = '' ) {
@@ -336,7 +339,7 @@ class ForeignAPIFile extends File {
        }
 
        /**
-        * @param $options array
+        * @param array $options
         */
        function purgeThumbnails( $options = array() ) {
                global $wgMemc;
index b7a5c35..36558c4 100644 (file)
@@ -28,9 +28,9 @@
  */
 class ForeignDBFile extends LocalFile {
        /**
-        * @param $title
-        * @param $repo
-        * @param $unused
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param null $unused
         * @return ForeignDBFile
         */
        static function newFromTitle( $title, $repo, $unused = null ) {
@@ -41,9 +41,8 @@ class ForeignDBFile extends LocalFile {
         * Create a ForeignDBFile from a title
         * Do not call this except from inside a repo class.
         *
-        * @param $row
-        * @param $repo
-        *
+        * @param stdClass $row
+        * @param FileRepo $repo
         * @return ForeignDBFile
         */
        static function newFromRow( $row, $repo ) {
@@ -55,10 +54,10 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $srcPath String
-        * @param $flags int
-        * @param $options Array
-        * @return \FileRepoStatus
+        * @param string $srcPath
+        * @param int $flags
+        * @param array $options
+        * @return FileRepoStatus
         * @throws MWException
         */
        function publish( $srcPath, $flags = 0, array $options = array() ) {
@@ -83,9 +82,9 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $versions array
-        * @param $unsuppress bool
-        * @return \FileRepoStatus
+        * @param array $versions
+        * @param bool $unsuppress
+        * @return FileRepoStatus
         * @throws MWException
         */
        function restore( $versions = array(), $unsuppress = false ) {
@@ -93,9 +92,9 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $reason string
-        * @param $suppress bool
-        * @return \FileRepoStatus
+        * @param string $reason
+        * @param bool $suppress
+        * @return FileRepoStatus
         * @throws MWException
         */
        function delete( $reason, $suppress = false ) {
@@ -103,8 +102,8 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $target Title
-        * @return \FileRepoStatus
+        * @param Title $target
+        * @return FileRepoStatus
         * @throws MWException
         */
        function move( $target ) {
@@ -120,7 +119,7 @@ class ForeignDBFile extends LocalFile {
        }
 
        /**
-        * @param $lang Language Optional language to fetch description in.
+        * @param bool|Language $lang Optional language to fetch description in.
         * @return string
         */
        function getDescriptionText( $lang = false ) {
index 3c15449..687c549 100644 (file)
@@ -46,44 +46,81 @@ define( 'MW_FILE_VERSION', 9 );
 class LocalFile extends File {
        const CACHE_FIELD_MAX_LEN = 1000;
 
-       /**#@+
-        * @private
-        */
-       var
-               $fileExists,       # does the file exist on disk? (loadFromXxx)
-               $historyLine,      # Number of line to return by nextHistoryLine() (constructor)
-               $historyRes,       # result of the query for the file's history (nextHistoryLine)
-               $width,            # \
-               $height,           #  |
-               $bits,             #   --- returned by getimagesize (loadFromXxx)
-               $attr,             # /
-               $media_type,       # MEDIATYPE_xxx (bitmap, drawing, audio...)
-               $mime,             # MIME type, determined by MimeMagic::guessMimeType
-               $major_mime,       # Major mime type
-               $minor_mime,       # Minor mime type
-               $size,             # Size in bytes (loadFromXxx)
-               $metadata,         # Handler-specific metadata
-               $timestamp,        # Upload timestamp
-               $sha1,             # SHA-1 base 36 content hash
-               $user, $user_text, # User, who uploaded the file
-               $description,      # Description of current revision of the file
-               $dataLoaded,       # Whether or not core data has been loaded from the database (loadFromXxx)
-               $extraDataLoaded,  # Whether or not lazy-loaded data has been loaded from the database
-               $upgraded,         # Whether the row was upgraded on load
-               $locked,           # True if the image row is locked
-               $lockedOwnTrx,     # True if the image row is locked with a lock initiated transaction
-               $missing,          # True if file is not present in file system. Not to be cached in memcached
-               $deleted;          # Bitfield akin to rev_deleted
-
-       /**#@-*/
-
-       /**
-        * @var LocalRepo
-        */
-       var $repo;
+       /** @var bool Does the file exist on disk? (loadFromXxx) */
+       protected $fileExists;
 
+       /** @var int image width */
+       protected $width;
+
+       /** @var int image height */
+       protected $height;
+
+       /** @var int Returned by getimagesize (loadFromXxx) */
+       protected $bits;
+
+       /** @var string MEDIATYPE_xxx (bitmap, drawing, audio...) */
+       protected $media_type;
+
+       /** @var string MIME type, determined by MimeMagic::guessMimeType */
+       protected $mime;
+
+       /** @var int Size in bytes (loadFromXxx) */
+       protected $size;
+
+       /** @var string Handler-specific metadata */
+       protected $metadata;
+
+       /** @var string SHA-1 base 36 content hash */
+       protected $sha1;
+
+       /** @var bool Whether or not core data has been loaded from the database (loadFromXxx) */
+       protected $dataLoaded;
+
+       /** @var bool Whether or not lazy-loaded data has been loaded from the database */
+       protected $extraDataLoaded;
+
+       /** @var int Bitfield akin to rev_deleted */
+       protected $deleted;
+
+       /** @var string */
        protected $repoClass = 'LocalRepo';
 
+       /** @var int Number of line to return by nextHistoryLine() (constructor) */
+       private $historyLine;
+
+       /** @var int Result of the query for the file's history (nextHistoryLine) */
+       private $historyRes;
+
+       /** @var string Major mime type */
+       private $major_mime;
+
+       /** @var string Minor mime type */
+       private $minor_mime;
+
+       /** @var string Upload timestamp */
+       private $timestamp;
+
+       /** @var int User ID of uploader */
+       private $user;
+
+       /** @var string User name of uploader */
+       private $user_text;
+
+       /** @var string Description of current revision of the file */
+       private $description;
+
+       /** @var bool Whether the row was upgraded on load */
+       private $upgraded;
+
+       /** @var bool True if the image row is locked */
+       private $locked;
+
+       /** @var bool True if the image row is locked with a lock initiated transaction */
+       private $lockedOwnTrx;
+
+       /** @var bool True if file is not present in file system. Not to be cached in memcached */
+       private $missing;
+
        const LOAD_ALL = 1; // integer; load all the lazy fields too (like metadata)
 
        /**
@@ -92,8 +129,8 @@ class LocalFile extends File {
         *
         * Note: $unused param is only here to avoid an E_STRICT
         *
-        * @param $title
-        * @param $repo
+        * @param Title $title
+        * @param FileRepo $repo
         * @param $unused
         *
         * @return LocalFile
@@ -106,8 +143,8 @@ class LocalFile extends File {
         * Create a LocalFile from a title
         * Do not call this except from inside a repo class.
         *
-        * @param $row
-        * @param $repo
+        * @param stdClass $row
+        * @param FileRepo $repo
         *
         * @return LocalFile
         */
@@ -124,9 +161,8 @@ class LocalFile extends File {
         * Do not call this except from inside a repo class.
         *
         * @param string $sha1 base-36 SHA-1
-        * @param $repo LocalRepo
+        * @param LocalRepo $repo
         * @param string|bool $timestamp MW_timestamp (optional)
-        *
         * @return bool|LocalFile
         */
        static function newFromKey( $sha1, $repo, $timestamp = false ) {
@@ -311,6 +347,7 @@ class LocalFile extends File {
        }
 
        /**
+        * @param string $prefix
         * @return array
         */
        function getLazyCacheFields( $prefix = 'img_' ) {
@@ -393,9 +430,10 @@ class LocalFile extends File {
        }
 
        /**
-        * @param Row $row
-        * @param $prefix string
-        * @return Array
+        * @param array $row Row
+        * @param string $prefix
+        * @throws MWException
+        * @return array
         */
        protected function unprefixRow( $row, $prefix = 'img_' ) {
                $array = (array)$row;
@@ -610,7 +648,7 @@ class LocalFile extends File {
        /**
         * Return the width of the image
         *
-        * @param $page int
+        * @param int $page
         * @return int
         */
        public function getWidth( $page = 1 ) {
@@ -637,7 +675,7 @@ class LocalFile extends File {
        /**
         * Return the height of the image
         *
-        * @param $page int
+        * @param int $page
         * @return int
         */
        public function getHeight( $page = 1 ) {
@@ -696,7 +734,7 @@ class LocalFile extends File {
        }
 
        /**
-        * Return the size of the image file, in bytes
+        * Returns the size of the image file, in bytes
         * @return int
         */
        public function getSize() {
@@ -716,7 +754,7 @@ class LocalFile extends File {
        }
 
        /**
-        * Return the type of the media in the file.
+        * Returns the type of the media in the file.
         * Use the value returned by this function with the MEDIATYPE_xxx constants.
         * @return string
         */
@@ -734,7 +772,7 @@ class LocalFile extends File {
 
        /**
         * Returns true if the file exists on disk.
-        * @return boolean Whether file exist on disk.
+        * @return bool Whether file exist on disk.
         */
        public function exists() {
                $this->load();
@@ -750,9 +788,9 @@ class LocalFile extends File {
 
        /**
         * Fix thumbnail files from 1.4 or before, with extreme prejudice
-        * @todo : do we still care about this? Perhaps a maintenance script
-        *        can be made instead. Enabling this code results in a serious
-        *        RTT regression for wikis without 404 handling.
+        * @todo Do we still care about this? Perhaps a maintenance script
+        *   can be made instead. Enabling this code results in a serious
+        *   RTT regression for wikis without 404 handling.
         */
        function migrateThumbFile( $thumbName ) {
                /* Old code for bug 2532
@@ -838,7 +876,7 @@ class LocalFile extends File {
        /**
         * Delete all previously generated thumbnails, refresh metadata in memcached and purge the squid.
         *
-        * @param Array $options An array potentially with the key forThumbRefresh.
+        * @param array $options An array potentially with the key forThumbRefresh.
         *
         * @note This used to purge old thumbnails by default as well, but doesn't anymore.
         */
@@ -857,7 +895,7 @@ class LocalFile extends File {
 
        /**
         * Delete cached transformed files for an archived version only.
-        * @param string $archiveName name of the archived file
+        * @param string $archiveName Name of the archived file
         */
        function purgeOldThumbnails( $archiveName ) {
                global $wgUseSquid;
@@ -893,8 +931,8 @@ class LocalFile extends File {
                // Delete thumbnails
                $files = $this->getThumbnails();
                // Always purge all files from squid regardless of handler filters
+               $urls = array();
                if ( $wgUseSquid ) {
-                       $urls = array();
                        foreach ( $files as $file ) {
                                $urls[] = $this->getThumbUrl( $file );
                        }
@@ -925,8 +963,8 @@ class LocalFile extends File {
 
        /**
         * Delete a list of thumbnails visible at urls
-        * @param string $dir base dir of the files.
-        * @param array $files of strings: relative filenames (to $dir)
+        * @param string $dir Base dir of the files.
+        * @param array $files Array of strings: relative filenames (to $dir)
         */
        protected function purgeThumbList( $dir, $files ) {
                $fileListDebug = strtr(
@@ -956,10 +994,10 @@ class LocalFile extends File {
        /** purgeEverything inherited */
 
        /**
-        * @param $limit null
-        * @param $start null
-        * @param $end null
-        * @param $inc bool
+        * @param int $limit Optional: Limit to number of results
+        * @param int $start Optional: Timestamp, start from
+        * @param int $end Optional: Timestamp, end at
+        * @param bool $inc
         * @return array
         */
        function getHistory( $limit = null, $start = null, $end = null, $inc = true ) {
@@ -994,11 +1032,7 @@ class LocalFile extends File {
                $r = array();
 
                foreach ( $res as $row ) {
-                       if ( $this->repo->oldFileFromRowFactory ) {
-                               $r[] = call_user_func( $this->repo->oldFileFromRowFactory, $row, $this->repo );
-                       } else {
-                               $r[] = OldLocalFile::newFromRow( $row, $this->repo );
-                       }
+                       $r[] = $this->repo->newFileFromRow( $row );
                }
 
                if ( $order == 'ASC' ) {
@@ -1009,7 +1043,7 @@ class LocalFile extends File {
        }
 
        /**
-        * Return the history of this file, line by line.
+        * Returns the history of this file, line by line.
         * starts with current version, then old versions.
         * uses $this->historyLine to check which line to return:
         *  0      return line for current version
@@ -1077,16 +1111,17 @@ class LocalFile extends File {
 
        /**
         * Upload a file and record it in the DB
-        * @param string $srcPath source storage path, virtual URL, or filesystem path
-        * @param string $comment upload description
-        * @param string $pageText text to use for the new description page,
-        *                  if a new description page is created
-        * @param $flags Integer|bool: flags for publish()
-        * @param array|bool $props File properties, if known. This can be used to reduce the
-        *               upload time when uploading virtual URLs for which the file info
-        *               is already known
-        * @param string|bool $timestamp timestamp for img_timestamp, or false to use the current time
-        * @param $user User|null: User object or null to use $wgUser
+        * @param string $srcPath Source storage path, virtual URL, or filesystem path
+        * @param string $comment Upload description
+        * @param string $pageText Text to use for the new description page,
+        *   if a new description page is created
+        * @param int|bool $flags Flags for publish()
+        * @param array|bool $props File properties, if known. This can be used to
+        *   reduce the upload time when uploading virtual URLs for which the file
+        *   info is already known
+        * @param string|bool $timestamp Timestamp for img_timestamp, or false to use the
+        *   current time
+        * @param User|null $user User object or null to use $wgUser
         *
         * @return FileRepoStatus object. On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
@@ -1145,14 +1180,14 @@ class LocalFile extends File {
 
        /**
         * Record a file upload in the upload log and the image table
-        * @param $oldver
-        * @param $desc string
-        * @param $license string
-        * @param $copyStatus string
-        * @param $source string
-        * @param $watch bool
-        * @param $timestamp string|bool
-        * @param $user User object or null to use $wgUser
+        * @param string $oldver
+        * @param string $desc
+        * @param string $license
+        * @param string $copyStatus
+        * @param string $source
+        * @param bool $watch
+        * @param string|bool $timestamp
+        * @param User|null $user User object or null to use $wgUser
         * @return bool
         */
        function recordUpload( $oldver, $desc, $license = '', $copyStatus = '', $source = '',
@@ -1177,16 +1212,16 @@ class LocalFile extends File {
 
        /**
         * Record a file upload in the upload log and the image table
-        * @param $oldver
-        * @param $comment string
-        * @param $pageText string
-        * @param $props bool|array
-        * @param $timestamp bool|string
-        * @param $user null|User
+        * @param string $oldver
+        * @param string $comment
+        * @param string $pageText
+        * @param bool|array $props
+        * @param string|bool $timestamp
+        * @param null|User $user
         * @return bool
         */
-       function recordUpload2(
-               $oldver, $comment, $pageText, $props = false, $timestamp = false, $user = null
+       function recordUpload2( $oldver, $comment, $pageText, $props = false, $timestamp = false,
+               $user = null
        ) {
                wfProfileIn( __METHOD__ );
 
@@ -1423,17 +1458,6 @@ class LocalFile extends File {
                        LinksUpdate::queueRecursiveJobsForTable( $this->getTitle(), 'imagelinks' );
                }
 
-               # Invalidate cache for all pages that redirects on this page
-               $redirs = $this->getTitle()->getRedirectsHere();
-
-               foreach ( $redirs as $redir ) {
-                       if ( !$reupload && $redir->getNamespace() === NS_FILE ) {
-                               LinksUpdate::queueRecursiveJobsForTable( $redir, 'imagelinks' );
-                       }
-                       $update = new HTMLCacheUpdate( $redir, 'imagelinks' );
-                       $update->doUpdate();
-               }
-
                wfProfileOut( __METHOD__ );
 
                return true;
@@ -1447,11 +1471,11 @@ class LocalFile extends File {
         * The archive name should be passed through to recordUpload for database
         * registration.
         *
-        * @param string $srcPath local filesystem path to the source image
-        * @param $flags Integer: a bitwise combination of:
+        * @param string $srcPath Local filesystem path to the source image
+        * @param int $flags A bitwise combination of:
         *     File::DELETE_SOURCE    Delete the source file, i.e. move rather than copy
         * @param array $options Optional additional parameters
-        * @return FileRepoStatus object. On success, the value member contains the
+        * @return FileRepoStatus On success, the value member contains the
         *     archive name, or an empty string if it was a new file.
         */
        function publish( $srcPath, $flags = 0, array $options = array() ) {
@@ -1465,12 +1489,12 @@ class LocalFile extends File {
         * The archive name should be passed through to recordUpload for database
         * registration.
         *
-        * @param string $srcPath local filesystem path to the source image
-        * @param string $dstRel target relative path
-        * @param $flags Integer: a bitwise combination of:
+        * @param string $srcPath Local filesystem path to the source image
+        * @param string $dstRel Target relative path
+        * @param int $flags A bitwise combination of:
         *     File::DELETE_SOURCE    Delete the source file, i.e. move rather than copy
         * @param array $options Optional additional parameters
-        * @return FileRepoStatus object. On success, the value member contains the
+        * @return FileRepoStatus 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, array $options = array() ) {
@@ -1510,8 +1534,8 @@ class LocalFile extends File {
         * Cache purging is done; checks for validity
         * and logging are caller's responsibility
         *
-        * @param $target Title New file name
-        * @return FileRepoStatus object.
+        * @param Title $target New file name
+        * @return FileRepoStatus
         */
        function move( $target ) {
                if ( $this->getRepo()->getReadOnlyReason() !== false ) {
@@ -1563,9 +1587,9 @@ class LocalFile extends File {
         *
         * Cache purging is done; logging is caller's responsibility.
         *
-        * @param $reason
-        * @param $suppress
-        * @return FileRepoStatus object.
+        * @param string $reason
+        * @param bool $suppress
+        * @return FileRepoStatus
         */
        function delete( $reason, $suppress = false ) {
                if ( $this->getRepo()->getReadOnlyReason() !== false ) {
@@ -1619,11 +1643,11 @@ class LocalFile extends File {
         *
         * Cache purging is done; logging is caller's responsibility.
         *
-        * @param $archiveName String
-        * @param $reason String
-        * @param $suppress Boolean
-        * @throws MWException or FSException on database or file store failure
-        * @return FileRepoStatus object.
+        * @param string $archiveName
+        * @param string $reason
+        * @param bool $suppress
+        * @throws MWException Exception on database or file store failure
+        * @return FileRepoStatus
         */
        function deleteOld( $archiveName, $reason, $suppress = false ) {
                global $wgUseSquid;
@@ -1659,8 +1683,8 @@ class LocalFile extends File {
         * May throw database exceptions on error.
         *
         * @param array $versions set of record ids of deleted items to restore,
-        *                    or empty to restore all revisions.
-        * @param $unsuppress Boolean
+        *   or empty to restore all revisions.
+        * @param bool $unsuppress
         * @return FileRepoStatus
         */
        function restore( $versions = array(), $unsuppress = false ) {
@@ -1695,7 +1719,7 @@ class LocalFile extends File {
 
        /**
         * Get the URL of the file description page.
-        * @return String
+        * @return string
         */
        function getDescriptionUrl() {
                return $this->title->getLocalURL();
@@ -1706,7 +1730,7 @@ class LocalFile extends File {
         * This is not used by ImagePage for local files, since (among other things)
         * it skips the parser cache.
         *
-        * @param $lang Language What language to get description in (Optional)
+        * @param Language $lang What language to get description in (Optional)
         * @return bool|mixed
         */
        function getDescriptionText( $lang = null ) {
@@ -1724,6 +1748,8 @@ class LocalFile extends File {
        }
 
        /**
+        * @param int $audience
+        * @param User $user
         * @return string
         */
        function getDescription( $audience = self::FOR_PUBLIC, User $user = null ) {
@@ -1787,7 +1813,8 @@ class LocalFile extends File {
        /**
         * Start a transaction and lock the image for update
         * Increments a reference counter if the lock is already held
-        * @return boolean True if the image exists, false otherwise
+        * @throws MWException
+        * @return bool True if the image exists, false otherwise
         */
        function lock() {
                $dbw = $this->repo->getMasterDB();
@@ -1855,19 +1882,31 @@ class LocalFile extends File {
  * @ingroup FileAbstraction
  */
 class LocalFileDeleteBatch {
+       /** @var LocalFile */
+       private $file;
 
-       /**
-        * @var LocalFile
-        */
-       var $file;
+       /** @var string */
+       private $reason;
+
+       /** @var array */
+       private $srcRels = array();
+
+       /** @var array */
+       private $archiveUrls = array();
+
+       /** @var array Items to be processed in the deletion batch */
+       private $deletionBatch;
+
+       /** @var bool Wether to suppress all suppressable fields when deleting */
+       private $suppress;
 
-       var $reason, $srcRels = array(), $archiveUrls = array(), $deletionBatch, $suppress;
-       var $status;
+       /** @var FileRepoStatus */
+       private $status;
 
        /**
-        * @param $file File
-        * @param $reason string
-        * @param $suppress bool
+        * @param File $file
+        * @param string $reason
+        * @param bool $suppress
         */
        function __construct( File $file, $reason = '', $suppress = false ) {
                $this->file = $file;
@@ -1881,7 +1920,7 @@ class LocalFileDeleteBatch {
        }
 
        /**
-        * @param $oldName string
+        * @param string $oldName
         */
        function addOld( $oldName ) {
                $this->srcRels[$oldName] = $this->file->getArchiveRel( $oldName );
@@ -1890,7 +1929,7 @@ class LocalFileDeleteBatch {
 
        /**
         * Add the old versions of the image to the batch
-        * @return Array List of archive names from old versions
+        * @return array List of archive names from old versions
         */
        function addOlds() {
                $archiveNames = array();
@@ -2201,16 +2240,24 @@ class LocalFileDeleteBatch {
  * @ingroup FileAbstraction
  */
 class LocalFileRestoreBatch {
-       /**
-        * @var LocalFile
-        */
-       var $file;
+       /** @var LocalFile */
+       private $file;
+
+       /** @var array List of file IDs to restore */
+       private $cleanupBatch;
 
-       var $cleanupBatch, $ids, $all, $unsuppress = false;
+       /** @var array List of file IDs to restore */
+       private $ids;
+
+       /** @var bool Add all revisions of the file  */
+       private $all;
+
+       /** @var bool Wether to remove all settings for suppressed fields  */
+       private $unsuppress = false;
 
        /**
-        * @param $file File
-        * @param $unsuppress bool
+        * @param File $file
+        * @param bool $unsuppress
         */
        function __construct( File $file, $unsuppress = false ) {
                $this->file = $file;
@@ -2476,7 +2523,7 @@ class LocalFileRestoreBatch {
 
        /**
         * Removes non-existent files from a store batch.
-        * @param $triplets array
+        * @param array $triplets
         * @return array
         */
        function removeNonexistentFiles( $triplets ) {
@@ -2498,7 +2545,7 @@ class LocalFileRestoreBatch {
 
        /**
         * Removes non-existent files from a cleanup batch.
-        * @param $batch array
+        * @param array $batch
         * @return array
         */
        function removeNonexistentFromCleanup( $batch ) {
@@ -2567,23 +2614,26 @@ class LocalFileRestoreBatch {
  * @ingroup FileAbstraction
  */
 class LocalFileMoveBatch {
+       /** @var LocalFile */
+       protected $file;
 
-       /**
-        * @var LocalFile
-        */
-       var $file;
+       /** @var Title */
+       protected $target;
 
-       /**
-        * @var Title
-        */
-       var $target;
+       /** @var   */
+       protected $cur;
 
-       var $cur, $olds, $oldCount, $archive;
+       /** @var   */
+       protected $olds;
 
-       /**
-        * @var DatabaseBase
-        */
-       var $db;
+       /** @var   */
+       protected $oldCount;
+
+       /** @var   */
+       protected $archive;
+
+       /** @var DatabaseBase */
+       protected $db;
 
        /**
         * @param File $file
@@ -2610,7 +2660,7 @@ class LocalFileMoveBatch {
 
        /**
         * Add the old versions of the image to the batch
-        * @return Array List of archive names from old versions
+        * @return array List of archive names from old versions
         */
        function addOlds() {
                $archiveBase = 'archive';
@@ -2787,7 +2837,7 @@ class LocalFileMoveBatch {
 
        /**
         * Removes non-existent files from move batch.
-        * @param $triplets array
+        * @param array $triplets
         * @return array
         */
        function removeNonexistentFiles( $triplets ) {
index ae4ad1c..d6c6a3c 100644 (file)
@@ -37,9 +37,9 @@ class OldLocalFile extends LocalFile {
        const MAX_CACHE_ROWS = 20;
 
        /**
-        * @param $title Title
-        * @param $repo FileRepo
-        * @param $time null
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param null|int $time Timestamp or null
         * @return OldLocalFile
         * @throws MWException
         */
@@ -53,9 +53,9 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $title Title
-        * @param $repo FileRepo
-        * @param $archiveName
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param string $archiveName
         * @return OldLocalFile
         */
        static function newFromArchiveName( $title, $repo, $archiveName ) {
@@ -63,8 +63,8 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $row
-        * @param $repo FileRepo
+        * @param stdClass $row
+        * @param FileRepo $repo
         * @return OldLocalFile
         */
        static function newFromRow( $row, $repo ) {
@@ -80,7 +80,7 @@ class OldLocalFile extends LocalFile {
         * Do not call this except from inside a repo class.
         *
         * @param string $sha1 base-36 SHA-1
-        * @param $repo LocalRepo
+        * @param LocalRepo $repo
         * @param string|bool $timestamp MW_timestamp (optional)
         *
         * @return bool|OldLocalFile
@@ -127,9 +127,9 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $title Title
-        * @param $repo FileRepo
-        * @param string $time timestamp or null to load by archive name
+        * @param Title $title
+        * @param FileRepo $repo
+        * @param string $time Timestamp or null to load by archive name
         * @param string $archiveName archive name or null to load by timestamp
         * @throws MWException
         */
@@ -150,7 +150,7 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @return String
+        * @return string
         */
        function getArchiveName() {
                if ( !isset( $this->archive_name ) ) {
@@ -233,7 +233,7 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $prefix string
+        * @param string $prefix
         * @return array
         */
        function getCacheFields( $prefix = 'img_' ) {
@@ -294,8 +294,8 @@ class OldLocalFile extends LocalFile {
        }
 
        /**
-        * @param $field Integer: one of DELETED_* bitfield constants
-        *               for file or revision rows
+        * @param int $field One of DELETED_* bitfield constants for file or
+        *   revision rows
         * @return bool
         */
        function isDeleted( $field ) {
@@ -318,8 +318,8 @@ class OldLocalFile extends LocalFile {
         * Determine if the current user is allowed to view a particular
         * field of this image file, if it's marked as deleted.
         *
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
+        * @param int $field
+        * @param User|null $user User object to check, or null to use $wgUser
         * @return bool
         */
        function userCan( $field, User $user = null ) {
@@ -333,12 +333,11 @@ class OldLocalFile extends LocalFile {
         *
         * @param string $srcPath File system path of the source file
         * @param string $archiveName Full archive name of the file, in the form
-        *     $timestamp!$filename, where $filename must match $this->getName()
-        *
-        * @param $timestamp string
-        * @param $comment string
-        * @param $user
-        * @param $flags int
+        *   $timestamp!$filename, where $filename must match $this->getName()
+        * @param string $timestamp
+        * @param string $comment
+        * @param User $user
+        * @param int $flags
         * @return FileRepoStatus
         */
        function uploadOld( $srcPath, $archiveName, $timestamp, $comment, $user, $flags = 0 ) {
@@ -365,9 +364,9 @@ class OldLocalFile extends LocalFile {
         *
         * @param string $srcPath File system path to the source file
         * @param string $archiveName The archive name of the file
-        * @param $timestamp string
+        * @param string $timestamp
         * @param string $comment Upload comment
-        * @param $user User User who did this upload
+        * @param User $user User who did this upload
         * @return bool
         */
        function recordOldUpload( $srcPath, $archiveName, $timestamp, $comment, $user ) {
index e7fa46e..782e23a 100644 (file)
  *
  * Read-only.
  *
- * TODO: Currently it doesn't really work in the repository role, there are
+ * @todo Currently it doesn't really work in the repository role, there are
  * lots of functions missing. It is used by the WebStore extension in the
  * standalone role.
  *
  * @ingroup FileAbstraction
  */
 class UnregisteredLocalFile extends File {
-       var $title, $path, $mime, $dims, $metadata;
+       /** @var Title  */
+       protected $title;
 
-       /**
-        * @var MediaHandler
-        */
-       var $handler;
+       /** @var string */
+       protected $path;
+
+       /** @var bool|string */
+       protected $mime;
+
+       /** @var array Dimension data */
+       protected $dims;
+
+       /** @var bool|string Handler-specific metadata which will be saved in the img_metadata field */
+       protected $metadata;
+
+       /** @var MediaHandler */
+       public $handler;
 
        /**
         * @param string $path Storage path
-        * @param $mime string
+        * @param string $mime
         * @return UnregisteredLocalFile
         */
        static function newFromPath( $path, $mime ) {
@@ -51,8 +62,8 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-        * @param $title
-        * @param $repo
+        * @param Title $title
+        * @param FileRepo $repo
         * @return UnregisteredLocalFile
         */
        static function newFromTitle( $title, $repo ) {
@@ -64,10 +75,10 @@ class UnregisteredLocalFile extends File {
         * A FileRepo object is not required here, unlike most other File classes.
         *
         * @throws MWException
-        * @param $title Title|bool
-        * @param $repo FileRepo|bool
-        * @param $path string|bool
-        * @param $mime string|bool
+        * @param Title|bool $title
+        * @param FileRepo|bool $repo
+        * @param string|bool $path
+        * @param string|bool $mime
         */
        function __construct( $title = false, $repo = false, $path = false, $mime = false ) {
                if ( !( $title && $repo ) && !$path ) {
@@ -96,7 +107,7 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-        * @param $page int
+        * @param int $page
         * @return bool
         */
        private function cachePageDimensions( $page = 1 ) {
@@ -111,8 +122,8 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-        * @param $page int
-        * @return number
+        * @param int $page
+        * @return int
         */
        function getWidth( $page = 1 ) {
                $dim = $this->cachePageDimensions( $page );
@@ -121,8 +132,8 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-        * @param $page int
-        * @return number
+        * @param int $page
+        * @return int
         */
        function getHeight( $page = 1 ) {
                $dim = $this->cachePageDimensions( $page );
@@ -143,8 +154,8 @@ class UnregisteredLocalFile extends File {
        }
 
        /**
-        * @param $filename String
-        * @return Array|bool
+        * @param string $filename
+        * @return array|bool
         */
        function getImageSize( $filename ) {
                if ( !$this->getHandler() ) {
@@ -195,7 +206,7 @@ class UnregisteredLocalFile extends File {
         * 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
+        * @param FSFile $fsFile
         * @return void
         */
        public function setLocalReference( FSFile $fsFile ) {
index 79a7015..cfedac7 100644 (file)
@@ -60,6 +60,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
                $lang = $this->getRenderLang();
                # Output each image...
                foreach ( $this->mImages as $pair ) {
+                       /** @var Title $nt */
                        $nt = $pair[0];
                        $text = $pair[1]; # "text" means "caption" here
                        $alt = $pair[2];
@@ -114,6 +115,7 @@ class TraditionalImageGallery extends ImageGalleryBase {
                                        . ( $this->getThumbPadding() + $this->mHeights ) . 'px;">'
                                        . htmlspecialchars( $img->getLastError() ) . '</div>';
                        } else {
+                               /** @var MediaTransformOutput $thumb */
                                $vpad = $this->getVPad( $this->mHeights, $thumb->getHeight() );
 
                                $imageParameters = array(
@@ -143,8 +145,10 @@ class TraditionalImageGallery extends ImageGalleryBase {
                                        . $thumb->toHtml( $imageParameters ) . '</div></div>';
 
                                // Call parser transform hook
-                               if ( $this->mParser && $img->getHandler() ) {
-                                       $img->getHandler()->parserTransformHook( $this->mParser, $img );
+                               /** @var MediaHandler $handler */
+                               $handler = $img->getHandler();
+                               if ( $this->mParser && $handler ) {
+                                       $handler->parserTransformHook( $this->mParser, $img );
                                }
                        }
 
diff --git a/includes/htmlform/HTMLApiField.php b/includes/htmlform/HTMLApiField.php
new file mode 100644 (file)
index 0000000..f988e62
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+
+class HTMLApiField extends HTMLFormField {
+       public function getTableRow( $value ) {
+               return '';
+       }
+
+       public function getDiv( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       public function getRaw( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       public function getInputHTML( $value ) {
+               return '';
+       }
+}
diff --git a/includes/htmlform/HTMLButtonField.php b/includes/htmlform/HTMLButtonField.php
new file mode 100644 (file)
index 0000000..c95d73b
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * Adds a generic button inline to the form. Does not do anything, you must add
+ * click handling code in JavaScript. Use a HTMLSubmitField if you merely
+ * wish to add a submit button to a form.
+ *
+ * @since 1.22
+ */
+class HTMLButtonField extends HTMLFormField {
+       protected $buttonType = 'button';
+
+       public function __construct( $info ) {
+               $info['nodata'] = true;
+               parent::__construct( $info );
+       }
+
+       public function getInputHTML( $value ) {
+               $attr = array(
+                       'class' => 'mw-htmlform-submit ' . $this->mClass,
+                       'id' => $this->mID,
+               );
+
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attr['disabled'] = 'disabled';
+               }
+
+               return Html::input( $this->mName, $value, $this->buttonType, $attr );
+       }
+
+       protected function needsLabel() {
+               return false;
+       }
+
+       /**
+        * Button cannot be invalid
+        *
+        * @param $value String
+        * @param $alldata Array
+        *
+        * @return Bool
+        */
+       public function validate( $value, $alldata ) {
+               return true;
+       }
+}
diff --git a/includes/htmlform/HTMLCheckField.php b/includes/htmlform/HTMLCheckField.php
new file mode 100644 (file)
index 0000000..105a884
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * A checkbox field
+ */
+class HTMLCheckField extends HTMLFormField {
+       function getInputHTML( $value ) {
+               if ( !empty( $this->mParams['invert'] ) ) {
+                       $value = !$value;
+               }
+
+               $attr = $this->getTooltipAndAccessKey();
+               $attr['id'] = $this->mID;
+
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attr['disabled'] = 'disabled';
+               }
+
+               if ( $this->mClass !== '' ) {
+                       $attr['class'] = $this->mClass;
+               }
+
+               if ( $this->mParent->isVForm() ) {
+                       // Nest checkbox inside label.
+                       return Html::rawElement( 'label',
+                               array(
+                                       'class' => 'mw-ui-checkbox-label'
+                               ),
+                               Xml::check( $this->mName, $value, $attr ) . // Html:rawElement doesn't escape contents.
+                               htmlspecialchars( $this->mLabel ) );
+               } else {
+                       return Xml::check( $this->mName, $value, $attr )
+                       . '&#160;'
+                       . Html::rawElement( 'label', array( 'for' => $this->mID ), $this->mLabel );
+               }
+       }
+
+       /**
+        * For a checkbox, the label goes on the right hand side, and is
+        * added in getInputHTML(), rather than HTMLFormField::getRow()
+        * @return String
+        */
+       function getLabel() {
+               return '&#160;';
+       }
+
+       /**
+        * checkboxes don't need a label.
+        */
+       protected function needsLabel() {
+               return false;
+       }
+
+       /**
+        * @param  $request WebRequest
+        *
+        * @return String
+        */
+       function loadDataFromRequest( $request ) {
+               $invert = false;
+               if ( isset( $this->mParams['invert'] ) && $this->mParams['invert'] ) {
+                       $invert = true;
+               }
+
+               // GetCheck won't work like we want for checks.
+               // Fetch the value in either one of the two following case:
+               // - we have a valid token (form got posted or GET forged by the user)
+               // - checkbox name has a value (false or true), ie is not null
+               if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName ) !== null ) {
+                       // XOR has the following truth table, which is what we want
+                       // INVERT VALUE | OUTPUT
+                       // true   true  | false
+                       // false  true  | true
+                       // false  false | false
+                       // true   false | true
+                       return $request->getBool( $this->mName ) xor $invert;
+               } else {
+                       return $this->getDefault();
+               }
+       }
+}
diff --git a/includes/htmlform/HTMLCheckMatrix.php b/includes/htmlform/HTMLCheckMatrix.php
new file mode 100644 (file)
index 0000000..323d2d9
--- /dev/null
@@ -0,0 +1,246 @@
+<?php
+
+/**
+ * A checkbox matrix
+ * Operates similarly to HTMLMultiSelectField, but instead of using an array of
+ * options, uses an array of rows and an array of columns to dynamically
+ * construct a matrix of options. The tags used to identify a particular cell
+ * are of the form "columnName-rowName"
+ *
+ * Options:
+ *   - columns
+ *     - Required list of columns in the matrix.
+ *   - rows
+ *     - Required list of rows in the matrix.
+ *   - force-options-on
+ *     - Accepts array of column-row tags to be displayed as enabled but unavailable to change
+ *   - force-options-off
+ *     - Accepts array of column-row tags to be displayed as disabled but unavailable to change.
+ *   - tooltips
+ *     - Optional array mapping row label to tooltip content
+ *   - tooltip-class
+ *     - Optional CSS class used on tooltip container span. Defaults to mw-icon-question.
+ */
+class HTMLCheckMatrix extends HTMLFormField implements HTMLNestedFilterable {
+       static private $requiredParams = array(
+               // Required by underlying HTMLFormField
+               'fieldname',
+               // Required by HTMLCheckMatrix
+               'rows',
+               'columns'
+       );
+
+       public function __construct( $params ) {
+               $missing = array_diff( self::$requiredParams, array_keys( $params ) );
+               if ( $missing ) {
+                       throw new HTMLFormFieldRequiredOptionsException( $this, $missing );
+               }
+               parent::__construct( $params );
+       }
+
+       function validate( $value, $alldata ) {
+               $rows = $this->mParams['rows'];
+               $columns = $this->mParams['columns'];
+
+               // Make sure user-defined validation callback is run
+               $p = parent::validate( $value, $alldata );
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               // Make sure submitted value is an array
+               if ( !is_array( $value ) ) {
+                       return false;
+               }
+
+               // If all options are valid, array_intersect of the valid options
+               // and the provided options will return the provided options.
+               $validOptions = array();
+               foreach ( $rows as $rowTag ) {
+                       foreach ( $columns as $columnTag ) {
+                               $validOptions[] = $columnTag . '-' . $rowTag;
+                       }
+               }
+               $validValues = array_intersect( $value, $validOptions );
+               if ( count( $validValues ) == count( $value ) ) {
+                       return true;
+               } else {
+                       return $this->msg( 'htmlform-select-badoption' )->parse();
+               }
+       }
+
+       /**
+        * Build a table containing a matrix of checkbox options.
+        * The value of each option is a combination of the row tag and column tag.
+        * mParams['rows'] is an array with row labels as keys and row tags as values.
+        * mParams['columns'] is an array with column labels as keys and column tags as values.
+        *
+        * @param array $value of the options that should be checked
+        *
+        * @return String
+        */
+       function getInputHTML( $value ) {
+               $html = '';
+               $tableContents = '';
+               $attribs = array();
+               $rows = $this->mParams['rows'];
+               $columns = $this->mParams['columns'];
+
+               // If the disabled param is set, disable all the options
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attribs['disabled'] = 'disabled';
+               }
+
+               // Build the column headers
+               $headerContents = Html::rawElement( 'td', array(), '&#160;' );
+               foreach ( $columns as $columnLabel => $columnTag ) {
+                       $headerContents .= Html::rawElement( 'td', array(), $columnLabel );
+               }
+               $tableContents .= Html::rawElement( 'tr', array(), "\n$headerContents\n" );
+
+               $tooltipClass = 'mw-icon-question';
+               if ( isset( $this->mParams['tooltip-class'] ) ) {
+                       $tooltipClass = $this->mParams['tooltip-class'];
+               }
+
+               // Build the options matrix
+               foreach ( $rows as $rowLabel => $rowTag ) {
+                       // Append tooltip if configured
+                       if ( isset( $this->mParams['tooltips'][$rowLabel] ) ) {
+                               $tooltipAttribs = array(
+                                       'class' => "mw-htmlform-tooltip $tooltipClass",
+                                       'title' => $this->mParams['tooltips'][$rowLabel],
+                               );
+                               $rowLabel .= ' ' . Html::element( 'span', $tooltipAttribs, '' );
+                       }
+                       $rowContents = Html::rawElement( 'td', array(), $rowLabel );
+                       foreach ( $columns as $columnTag ) {
+                               $thisTag = "$columnTag-$rowTag";
+                               // Construct the checkbox
+                               $thisAttribs = array(
+                                       'id' => "{$this->mID}-$thisTag",
+                                       'value' => $thisTag,
+                               );
+                               $checked = in_array( $thisTag, (array)$value, true );
+                               if ( $this->isTagForcedOff( $thisTag ) ) {
+                                       $checked = false;
+                                       $thisAttribs['disabled'] = 1;
+                               } elseif ( $this->isTagForcedOn( $thisTag ) ) {
+                                       $checked = true;
+                                       $thisAttribs['disabled'] = 1;
+                               }
+                               $rowContents .= Html::rawElement(
+                                       'td',
+                                       array(),
+                                       Xml::check( "{$this->mName}[]", $checked, $attribs + $thisAttribs )
+                               );
+                       }
+                       $tableContents .= Html::rawElement( 'tr', array(), "\n$rowContents\n" );
+               }
+
+               // Put it all in a table
+               $html .= Html::rawElement( 'table',
+                               array( 'class' => 'mw-htmlform-matrix' ),
+                               Html::rawElement( 'tbody', array(), "\n$tableContents\n" ) ) . "\n";
+
+               return $html;
+       }
+
+       protected function isTagForcedOff( $tag ) {
+               return isset( $this->mParams['force-options-off'] )
+                       && in_array( $tag, $this->mParams['force-options-off'] );
+       }
+
+       protected function isTagForcedOn( $tag ) {
+               return isset( $this->mParams['force-options-on'] )
+                       && in_array( $tag, $this->mParams['force-options-on'] );
+       }
+
+       /**
+        * Get the complete table row for the input, including help text,
+        * labels, and whatever.
+        * We override this function since the label should always be on a separate
+        * line above the options in the case of a checkbox matrix, i.e. it's always
+        * a "vertical-label".
+        *
+        * @param string $value the value to set the input to
+        *
+        * @return String complete HTML table row
+        */
+       function getTableRow( $value ) {
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() );
+               $cellAttributes = array( 'colspan' => 2 );
+
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $field = Html::rawElement(
+                       'td',
+                       array( 'class' => 'mw-input' ) + $cellAttributes,
+                       $inputHtml . "\n$errors"
+               );
+
+               $html = Html::rawElement( 'tr', array( 'class' => 'mw-htmlform-vertical-label' ), $label );
+               $html .= Html::rawElement( 'tr',
+                       array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
+                       $field );
+
+               return $html . $helptext;
+       }
+
+       /**
+        * @param $request WebRequest
+        *
+        * @return Array
+        */
+       function loadDataFromRequest( $request ) {
+               if ( $this->mParent->getMethod() == 'post' ) {
+                       if ( $request->wasPosted() ) {
+                               // Checkboxes are not added to the request arrays if they're not checked,
+                               // so it's perfectly possible for there not to be an entry at all
+                               return $request->getArray( $this->mName, array() );
+                       } else {
+                               // That's ok, the user has not yet submitted the form, so show the defaults
+                               return $this->getDefault();
+                       }
+               } else {
+                       // This is the impossible case: if we look at $_GET and see no data for our
+                       // field, is it because the user has not yet submitted the form, or that they
+                       // have submitted it with all the options unchecked. We will have to assume the
+                       // latter, which basically means that you can't specify 'positive' defaults
+                       // for GET forms.
+                       return $request->getArray( $this->mName, array() );
+               }
+       }
+
+       function getDefault() {
+               if ( isset( $this->mDefault ) ) {
+                       return $this->mDefault;
+               } else {
+                       return array();
+               }
+       }
+
+       function filterDataForSubmit( $data ) {
+               $columns = HTMLFormField::flattenOptions( $this->mParams['columns'] );
+               $rows = HTMLFormField::flattenOptions( $this->mParams['rows'] );
+               $res = array();
+               foreach ( $columns as $column ) {
+                       foreach ( $rows as $row ) {
+                               // Make sure option hasn't been forced
+                               $thisTag = "$column-$row";
+                               if ( $this->isTagForcedOff( $thisTag ) ) {
+                                       $res[$thisTag] = false;
+                               } elseif ( $this->isTagForcedOn( $thisTag ) ) {
+                                       $res[$thisTag] = true;
+                               } else {
+                                       $res[$thisTag] = in_array( $thisTag, $data );
+                               }
+                       }
+               }
+
+               return $res;
+       }
+}
diff --git a/includes/htmlform/HTMLEditTools.php b/includes/htmlform/HTMLEditTools.php
new file mode 100644 (file)
index 0000000..4f1b530
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+class HTMLEditTools extends HTMLFormField {
+       public function getInputHTML( $value ) {
+               return '';
+       }
+
+       public function getTableRow( $value ) {
+               $msg = $this->formatMsg();
+
+               return
+                       '<tr><td></td><td class="mw-input">' .
+                       '<div class="mw-editTools">' .
+                       $msg->parseAsBlock() .
+                       "</div></td></tr>\n";
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               $msg = $this->formatMsg();
+
+               return '<div class="mw-editTools">' . $msg->parseAsBlock() . '</div>';
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               return $this->getDiv( $value );
+       }
+
+       protected function formatMsg() {
+               if ( empty( $this->mParams['message'] ) ) {
+                       $msg = $this->msg( 'edittools' );
+               } else {
+                       $msg = $this->msg( $this->mParams['message'] );
+                       if ( $msg->isDisabled() ) {
+                               $msg = $this->msg( 'edittools' );
+                       }
+               }
+               $msg->inContentLanguage();
+
+               return $msg;
+       }
+}
diff --git a/includes/htmlform/HTMLFloatField.php b/includes/htmlform/HTMLFloatField.php
new file mode 100644 (file)
index 0000000..3b38fbe
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * A field that will contain a numeric value
+ */
+class HTMLFloatField extends HTMLTextField {
+       function getSize() {
+               return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 20;
+       }
+
+       function validate( $value, $alldata ) {
+               $p = parent::validate( $value, $alldata );
+
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               $value = trim( $value );
+
+               # http://dev.w3.org/html5/spec/common-microsyntaxes.html#real-numbers
+               # with the addition that a leading '+' sign is ok.
+               if ( !preg_match( '/^((\+|\-)?\d+(\.\d+)?(E(\+|\-)?\d+)?)?$/i', $value ) ) {
+                       return $this->msg( 'htmlform-float-invalid' )->parseAsBlock();
+               }
+
+               # The "int" part of these message names is rather confusing.
+               # They make equal sense for all numbers.
+               if ( isset( $this->mParams['min'] ) ) {
+                       $min = $this->mParams['min'];
+
+                       if ( $min > $value ) {
+                               return $this->msg( 'htmlform-int-toolow', $min )->parseAsBlock();
+                       }
+               }
+
+               if ( isset( $this->mParams['max'] ) ) {
+                       $max = $this->mParams['max'];
+
+                       if ( $max < $value ) {
+                               return $this->msg( 'htmlform-int-toohigh', $max )->parseAsBlock();
+                       }
+               }
+
+               return true;
+       }
+}
diff --git a/includes/htmlform/HTMLForm.php b/includes/htmlform/HTMLForm.php
new file mode 100644 (file)
index 0000000..0aea070
--- /dev/null
@@ -0,0 +1,1348 @@
+<?php
+
+/**
+ * HTML form generation and submission handling.
+ *
+ * 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
+ */
+
+/**
+ * Object handling generic submission, CSRF protection, layout and
+ * other logic for UI forms. in a reusable manner.
+ *
+ * In order to generate the form, the HTMLForm object takes an array
+ * structure detailing the form fields available. Each element of the
+ * array is a basic property-list, including the type of field, the
+ * label it is to be given in the form, callbacks for validation and
+ * 'filtering', and other pertinent information.
+ *
+ * Field types are implemented as subclasses of the generic HTMLFormField
+ * object, and typically implement at least getInputHTML, which generates
+ * the HTML for the input field to be placed in the table.
+ *
+ * You can find extensive documentation on the www.mediawiki.org wiki:
+ *  - http://www.mediawiki.org/wiki/HTMLForm
+ *  - http://www.mediawiki.org/wiki/HTMLForm/tutorial
+ *
+ * The constructor input is an associative array of $fieldname => $info,
+ * where $info is an Associative Array with any of the following:
+ *
+ *    'class'               -- the subclass of HTMLFormField that will be used
+ *                             to create the object.  *NOT* the CSS class!
+ *    'type'                -- roughly translates into the <select> type attribute.
+ *                             if 'class' is not specified, this is used as a map
+ *                             through HTMLForm::$typeMappings to get the class name.
+ *    'default'             -- default value when the form is displayed
+ *    'id'                  -- HTML id attribute
+ *    'cssclass'            -- CSS class
+ *    'options'             -- varies according to the specific object.
+ *    'label-message'       -- message key for a message to use as the label.
+ *                             can be an array of msg key and then parameters to
+ *                             the message.
+ *    'label'               -- alternatively, a raw text message. Overridden by
+ *                             label-message
+ *    'help'                -- message text for a message to use as a help text.
+ *    'help-message'        -- message key for a message to use as a help text.
+ *                             can be an array of msg key and then parameters to
+ *                             the message.
+ *                             Overwrites 'help-messages' and 'help'.
+ *    'help-messages'       -- array of message key. As above, each item can
+ *                             be an array of msg key and then parameters.
+ *                             Overwrites 'help'.
+ *    'required'            -- passed through to the object, indicating that it
+ *                             is a required field.
+ *    'size'                -- the length of text fields
+ *    'filter-callback      -- a function name to give you the chance to
+ *                             massage the inputted value before it's processed.
+ *                             @see HTMLForm::filter()
+ *    'validation-callback' -- a function name to give you the chance
+ *                             to impose extra validation on the field input.
+ *                             @see HTMLForm::validate()
+ *    'name'                -- By default, the 'name' attribute of the input field
+ *                             is "wp{$fieldname}".  If you want a different name
+ *                             (eg one without the "wp" prefix), specify it here and
+ *                             it will be used without modification.
+ *
+ * Since 1.20, you can chain mutators to ease the form generation:
+ * @par Example:
+ * @code
+ * $form = new HTMLForm( $someFields );
+ * $form->setMethod( 'get' )
+ *      ->setWrapperLegendMsg( 'message-key' )
+ *      ->prepareForm()
+ *      ->displayForm( '' );
+ * @endcode
+ * Note that you will have prepareForm and displayForm at the end. Other
+ * methods call done after that would simply not be part of the form :(
+ *
+ * @todo Document 'section' / 'subsection' stuff
+ */
+class HTMLForm extends ContextSource {
+       // A mapping of 'type' inputs onto standard HTMLFormField subclasses
+       public static $typeMappings = array(
+               'api' => 'HTMLApiField',
+               'text' => 'HTMLTextField',
+               'textarea' => 'HTMLTextAreaField',
+               'select' => 'HTMLSelectField',
+               'radio' => 'HTMLRadioField',
+               'multiselect' => 'HTMLMultiSelectField',
+               'check' => 'HTMLCheckField',
+               'toggle' => 'HTMLCheckField',
+               'int' => 'HTMLIntField',
+               'float' => 'HTMLFloatField',
+               'info' => 'HTMLInfoField',
+               'selectorother' => 'HTMLSelectOrOtherField',
+               'selectandother' => 'HTMLSelectAndOtherField',
+               'submit' => 'HTMLSubmitField',
+               'hidden' => 'HTMLHiddenField',
+               'edittools' => 'HTMLEditTools',
+               'checkmatrix' => 'HTMLCheckMatrix',
+               // HTMLTextField will output the correct type="" attribute automagically.
+               // There are about four zillion other HTML5 input types, like url, but
+               // we don't use those at the moment, so no point in adding all of them.
+               'email' => 'HTMLTextField',
+               'password' => 'HTMLTextField',
+       );
+
+       public $mFieldData;
+
+       protected $mMessagePrefix;
+
+       /** @var HTMLFormField[] */
+       protected $mFlatFields;
+
+       protected $mFieldTree;
+       protected $mShowReset = false;
+       protected $mShowSubmit = true;
+
+       protected $mSubmitCallback;
+       protected $mValidationErrorMessage;
+
+       protected $mPre = '';
+       protected $mHeader = '';
+       protected $mFooter = '';
+       protected $mSectionHeaders = array();
+       protected $mSectionFooters = array();
+       protected $mPost = '';
+       protected $mId;
+       protected $mTableId = '';
+
+       protected $mSubmitID;
+       protected $mSubmitName;
+       protected $mSubmitText;
+       protected $mSubmitTooltip;
+
+       protected $mTitle;
+       protected $mMethod = 'post';
+
+       /**
+        * Form action URL. false means we will use the URL to set Title
+        * @since 1.19
+        * @var bool|string
+        */
+       protected $mAction = false;
+
+       protected $mUseMultipart = false;
+       protected $mHiddenFields = array();
+       protected $mButtons = array();
+
+       protected $mWrapperLegend = false;
+
+       /**
+        * If true, sections that contain both fields and subsections will
+        * render their subsections before their fields.
+        *
+        * Subclasses may set this to false to render subsections after fields
+        * instead.
+        */
+       protected $mSubSectionBeforeFields = true;
+
+       /**
+        * Format in which to display form. For viable options,
+        * @see $availableDisplayFormats
+        * @var String
+        */
+       protected $displayFormat = 'table';
+
+       /**
+        * Available formats in which to display the form
+        * @var Array
+        */
+       protected $availableDisplayFormats = array(
+               'table',
+               'div',
+               'raw',
+               'vform',
+       );
+
+       /**
+        * Build a new HTMLForm from an array of field attributes
+        *
+        * @param array $descriptor of Field constructs, as described above
+        * @param $context IContextSource available since 1.18, will become compulsory in 1.18.
+        *     Obviates the need to call $form->setTitle()
+        * @param string $messagePrefix a prefix to go in front of default messages
+        */
+       public function __construct( $descriptor, /*IContextSource*/ $context = null,
+               $messagePrefix = ''
+       ) {
+               if ( $context instanceof IContextSource ) {
+                       $this->setContext( $context );
+                       $this->mTitle = false; // We don't need them to set a title
+                       $this->mMessagePrefix = $messagePrefix;
+               } elseif ( is_null( $context ) && $messagePrefix !== '' ) {
+                       $this->mMessagePrefix = $messagePrefix;
+               } elseif ( is_string( $context ) && $messagePrefix === '' ) {
+                       // B/C since 1.18
+                       // it's actually $messagePrefix
+                       $this->mMessagePrefix = $context;
+               }
+
+               // Expand out into a tree.
+               $loadedDescriptor = array();
+               $this->mFlatFields = array();
+
+               foreach ( $descriptor as $fieldname => $info ) {
+                       $section = isset( $info['section'] )
+                               ? $info['section']
+                               : '';
+
+                       if ( isset( $info['type'] ) && $info['type'] == 'file' ) {
+                               $this->mUseMultipart = true;
+                       }
+
+                       $field = self::loadInputFromParameters( $fieldname, $info );
+                       // FIXME During field's construct, the parent form isn't available!
+                       // could add a 'parent' name-value to $info, could add a third parameter.
+                       $field->mParent = $this;
+
+                       // vform gets too much space if empty labels generate HTML.
+                       if ( $this->isVForm() ) {
+                               $field->setShowEmptyLabel( false );
+                       }
+
+                       $setSection =& $loadedDescriptor;
+                       if ( $section ) {
+                               $sectionParts = explode( '/', $section );
+
+                               while ( count( $sectionParts ) ) {
+                                       $newName = array_shift( $sectionParts );
+
+                                       if ( !isset( $setSection[$newName] ) ) {
+                                               $setSection[$newName] = array();
+                                       }
+
+                                       $setSection =& $setSection[$newName];
+                               }
+                       }
+
+                       $setSection[$fieldname] = $field;
+                       $this->mFlatFields[$fieldname] = $field;
+               }
+
+               $this->mFieldTree = $loadedDescriptor;
+       }
+
+       /**
+        * Set format in which to display the form
+        *
+        * @param string $format the name of the format to use, must be one of
+        *        $this->availableDisplayFormats
+        *
+        * @throws MWException
+        * @since 1.20
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setDisplayFormat( $format ) {
+               if ( !in_array( $format, $this->availableDisplayFormats ) ) {
+                       throw new MWException( 'Display format must be one of ' .
+                               print_r( $this->availableDisplayFormats, true ) );
+               }
+               $this->displayFormat = $format;
+
+               return $this;
+       }
+
+       /**
+        * Getter for displayFormat
+        * @since 1.20
+        * @return String
+        */
+       public function getDisplayFormat() {
+               return $this->displayFormat;
+       }
+
+       /**
+        * Test if displayFormat is 'vform'
+        * @since 1.22
+        * @return Bool
+        */
+       public function isVForm() {
+               return $this->displayFormat === 'vform';
+       }
+
+       /**
+        * Add the HTMLForm-specific JavaScript, if it hasn't been
+        * done already.
+        * @deprecated since 1.18 load modules with ResourceLoader instead
+        */
+       static function addJS() {
+               wfDeprecated( __METHOD__, '1.18' );
+       }
+
+       /**
+        * Initialise a new Object for the field
+        *
+        * @param $fieldname string
+        * @param string $descriptor input Descriptor, as described above
+        *
+        * @throws MWException
+        * @return HTMLFormField subclass
+        */
+       static function loadInputFromParameters( $fieldname, $descriptor ) {
+               if ( isset( $descriptor['class'] ) ) {
+                       $class = $descriptor['class'];
+               } elseif ( isset( $descriptor['type'] ) ) {
+                       $class = self::$typeMappings[$descriptor['type']];
+                       $descriptor['class'] = $class;
+               } else {
+                       $class = null;
+               }
+
+               if ( !$class ) {
+                       throw new MWException( "Descriptor with no class: " . print_r( $descriptor, true ) );
+               }
+
+               $descriptor['fieldname'] = $fieldname;
+
+               # @todo This will throw a fatal error whenever someone try to use
+               # 'class' to feed a CSS class instead of 'cssclass'. Would be
+               # great to avoid the fatal error and show a nice error.
+               $obj = new $class( $descriptor );
+
+               return $obj;
+       }
+
+       /**
+        * Prepare form for submission.
+        *
+        * @attention When doing method chaining, that should be the very last
+        * method call before displayForm().
+        *
+        * @throws MWException
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function prepareForm() {
+               # Check if we have the info we need
+               if ( !$this->mTitle instanceof Title && $this->mTitle !== false ) {
+                       throw new MWException( "You must call setTitle() on an HTMLForm" );
+               }
+
+               # Load data from the request.
+               $this->loadData();
+
+               return $this;
+       }
+
+       /**
+        * Try submitting, with edit token check first
+        * @return Status|boolean
+        */
+       function tryAuthorizedSubmit() {
+               $result = false;
+
+               $submit = false;
+               if ( $this->getMethod() != 'post' ) {
+                       $submit = true; // no session check needed
+               } elseif ( $this->getRequest()->wasPosted() ) {
+                       $editToken = $this->getRequest()->getVal( 'wpEditToken' );
+                       if ( $this->getUser()->isLoggedIn() || $editToken != null ) {
+                               // Session tokens for logged-out users have no security value.
+                               // However, if the user gave one, check it in order to give a nice
+                               // "session expired" error instead of "permission denied" or such.
+                               $submit = $this->getUser()->matchEditToken( $editToken );
+                       } else {
+                               $submit = true;
+                       }
+               }
+
+               if ( $submit ) {
+                       $result = $this->trySubmit();
+               }
+
+               return $result;
+       }
+
+       /**
+        * The here's-one-I-made-earlier option: do the submission if
+        * posted, or display the form with or without funky validation
+        * errors
+        * @return Bool or Status whether submission was successful.
+        */
+       function show() {
+               $this->prepareForm();
+
+               $result = $this->tryAuthorizedSubmit();
+               if ( $result === true || ( $result instanceof Status && $result->isGood() ) ) {
+                       return $result;
+               }
+
+               $this->displayForm( $result );
+
+               return false;
+       }
+
+       /**
+        * Validate all the fields, and call the submission callback
+        * function if everything is kosher.
+        * @throws MWException
+        * @return Mixed Bool true == Successful submission, Bool false
+        *     == No submission attempted, anything else == Error to
+        *     display.
+        */
+       function trySubmit() {
+               # Check for validation
+               foreach ( $this->mFlatFields as $fieldname => $field ) {
+                       if ( !empty( $field->mParams['nodata'] ) ) {
+                               continue;
+                       }
+                       if ( $field->validate(
+                                       $this->mFieldData[$fieldname],
+                                       $this->mFieldData )
+                               !== true
+                       ) {
+                               return isset( $this->mValidationErrorMessage )
+                                       ? $this->mValidationErrorMessage
+                                       : array( 'htmlform-invalid-input' );
+                       }
+               }
+
+               $callback = $this->mSubmitCallback;
+               if ( !is_callable( $callback ) ) {
+                       throw new MWException( 'HTMLForm: no submit callback provided. Use ' .
+                               'setSubmitCallback() to set one.' );
+               }
+
+               $data = $this->filterDataForSubmit( $this->mFieldData );
+
+               $res = call_user_func( $callback, $data, $this );
+
+               return $res;
+       }
+
+       /**
+        * Set a callback to a function to do something with the form
+        * once it's been successfully validated.
+        *
+        * @param string $cb function name.  The function will be passed
+        *     the output from HTMLForm::filterDataForSubmit, and must
+        *     return Bool true on success, Bool false if no submission
+        *     was attempted, or String HTML output to display on error.
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setSubmitCallback( $cb ) {
+               $this->mSubmitCallback = $cb;
+
+               return $this;
+       }
+
+       /**
+        * Set a message to display on a validation error.
+        *
+        * @param $msg Mixed String or Array of valid inputs to wfMessage()
+        *     (so each entry can be either a String or Array)
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setValidationErrorMessage( $msg ) {
+               $this->mValidationErrorMessage = $msg;
+
+               return $this;
+       }
+
+       /**
+        * Set the introductory message, overwriting any existing message.
+        *
+        * @param string $msg complete text of message to display
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setIntro( $msg ) {
+               $this->setPreText( $msg );
+
+               return $this;
+       }
+
+       /**
+        * Set the introductory message, overwriting any existing message.
+        * @since 1.19
+        *
+        * @param string $msg complete text of message to display
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setPreText( $msg ) {
+               $this->mPre = $msg;
+
+               return $this;
+       }
+
+       /**
+        * Add introductory text.
+        *
+        * @param string $msg complete text of message to display
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function addPreText( $msg ) {
+               $this->mPre .= $msg;
+
+               return $this;
+       }
+
+       /**
+        * Add header text, inside the form.
+        *
+        * @param string $msg complete text of message to display
+        * @param string $section The section to add the header to
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function addHeaderText( $msg, $section = null ) {
+               if ( is_null( $section ) ) {
+                       $this->mHeader .= $msg;
+               } else {
+                       if ( !isset( $this->mSectionHeaders[$section] ) ) {
+                               $this->mSectionHeaders[$section] = '';
+                       }
+                       $this->mSectionHeaders[$section] .= $msg;
+               }
+
+               return $this;
+       }
+
+       /**
+        * Set header text, inside the form.
+        * @since 1.19
+        *
+        * @param string $msg complete text of message to display
+        * @param $section The section to add the header to
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setHeaderText( $msg, $section = null ) {
+               if ( is_null( $section ) ) {
+                       $this->mHeader = $msg;
+               } else {
+                       $this->mSectionHeaders[$section] = $msg;
+               }
+
+               return $this;
+       }
+
+       /**
+        * Add footer text, inside the form.
+        *
+        * @param string $msg complete text of message to display
+        * @param string $section The section to add the footer text to
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function addFooterText( $msg, $section = null ) {
+               if ( is_null( $section ) ) {
+                       $this->mFooter .= $msg;
+               } else {
+                       if ( !isset( $this->mSectionFooters[$section] ) ) {
+                               $this->mSectionFooters[$section] = '';
+                       }
+                       $this->mSectionFooters[$section] .= $msg;
+               }
+
+               return $this;
+       }
+
+       /**
+        * Set footer text, inside the form.
+        * @since 1.19
+        *
+        * @param string $msg complete text of message to display
+        * @param string $section The section to add the footer text to
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setFooterText( $msg, $section = null ) {
+               if ( is_null( $section ) ) {
+                       $this->mFooter = $msg;
+               } else {
+                       $this->mSectionFooters[$section] = $msg;
+               }
+
+               return $this;
+       }
+
+       /**
+        * Add text to the end of the display.
+        *
+        * @param string $msg complete text of message to display
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function addPostText( $msg ) {
+               $this->mPost .= $msg;
+
+               return $this;
+       }
+
+       /**
+        * Set text at the end of the display.
+        *
+        * @param string $msg complete text of message to display
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setPostText( $msg ) {
+               $this->mPost = $msg;
+
+               return $this;
+       }
+
+       /**
+        * Add a hidden field to the output
+        *
+        * @param string $name field name.  This will be used exactly as entered
+        * @param string $value field value
+        * @param $attribs Array
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function addHiddenField( $name, $value, $attribs = array() ) {
+               $attribs += array( 'name' => $name );
+               $this->mHiddenFields[] = array( $value, $attribs );
+
+               return $this;
+       }
+
+       /**
+        * Add an array of hidden fields to the output
+        *
+        * @since 1.22
+        *
+        * @param array $fields Associative array of fields to add;
+        *        mapping names to their values
+        *
+        * @return HTMLForm $this for chaining calls
+        */
+       public function addHiddenFields( array $fields ) {
+               foreach ( $fields as $name => $value ) {
+                       $this->mHiddenFields[] = array( $value, array( 'name' => $name ) );
+               }
+
+               return $this;
+       }
+
+       /**
+        * Add a button to the form
+        *
+        * @param string $name field name.
+        * @param string $value field value
+        * @param string $id DOM id for the button (default: null)
+        * @param $attribs Array
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function addButton( $name, $value, $id = null, $attribs = null ) {
+               $this->mButtons[] = compact( 'name', 'value', 'id', 'attribs' );
+
+               return $this;
+       }
+
+       /**
+        * Display the form (sending to the context's OutputPage object), with an
+        * appropriate error message or stack of messages, and any validation errors, etc.
+        *
+        * @attention You should call prepareForm() before calling this function.
+        * Moreover, when doing method chaining this should be the very last method
+        * call just after prepareForm().
+        *
+        * @param $submitResult Mixed output from HTMLForm::trySubmit()
+        *
+        * @return Nothing, should be last call
+        */
+       function displayForm( $submitResult ) {
+               $this->getOutput()->addHTML( $this->getHTML( $submitResult ) );
+       }
+
+       /**
+        * Returns the raw HTML generated by the form
+        *
+        * @param $submitResult Mixed output from HTMLForm::trySubmit()
+        *
+        * @return string
+        */
+       function getHTML( $submitResult ) {
+               # For good measure (it is the default)
+               $this->getOutput()->preventClickjacking();
+               $this->getOutput()->addModules( 'mediawiki.htmlform' );
+               if ( $this->isVForm() ) {
+                       $this->getOutput()->addModuleStyles( array(
+                               'mediawiki.ui',
+                               'mediawiki.ui.button',
+                       ) );
+                       // @todo Should vertical form set setWrapperLegend( false )
+                       // to hide ugly fieldsets?
+               }
+
+               $html = ''
+                       . $this->getErrors( $submitResult )
+                       . $this->mHeader
+                       . $this->getBody()
+                       . $this->getHiddenFields()
+                       . $this->getButtons()
+                       . $this->mFooter;
+
+               $html = $this->wrapForm( $html );
+
+               return '' . $this->mPre . $html . $this->mPost;
+       }
+
+       /**
+        * Wrap the form innards in an actual "<form>" element
+        *
+        * @param string $html HTML contents to wrap.
+        *
+        * @return String wrapped HTML.
+        */
+       function wrapForm( $html ) {
+
+               # Include a <fieldset> wrapper for style, if requested.
+               if ( $this->mWrapperLegend !== false ) {
+                       $html = Xml::fieldset( $this->mWrapperLegend, $html );
+               }
+               # Use multipart/form-data
+               $encType = $this->mUseMultipart
+                       ? 'multipart/form-data'
+                       : 'application/x-www-form-urlencoded';
+               # Attributes
+               $attribs = array(
+                       'action' => $this->getAction(),
+                       'method' => $this->getMethod(),
+                       'class' => array( 'visualClear' ),
+                       'enctype' => $encType,
+               );
+               if ( !empty( $this->mId ) ) {
+                       $attribs['id'] = $this->mId;
+               }
+
+               if ( $this->isVForm() ) {
+                       array_push( $attribs['class'], 'mw-ui-vform', 'mw-ui-container' );
+               }
+
+               return Html::rawElement( 'form', $attribs, $html );
+       }
+
+       /**
+        * Get the hidden fields that should go inside the form.
+        * @return String HTML.
+        */
+       function getHiddenFields() {
+               global $wgArticlePath;
+
+               $html = '';
+               if ( $this->getMethod() == 'post' ) {
+                       $html .= Html::hidden(
+                               'wpEditToken',
+                               $this->getUser()->getEditToken(),
+                               array( 'id' => 'wpEditToken' )
+                       ) . "\n";
+                       $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
+               }
+
+               if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() == 'get' ) {
+                       $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
+               }
+
+               foreach ( $this->mHiddenFields as $data ) {
+                       list( $value, $attribs ) = $data;
+                       $html .= Html::hidden( $attribs['name'], $value, $attribs ) . "\n";
+               }
+
+               return $html;
+       }
+
+       /**
+        * Get the submit and (potentially) reset buttons.
+        * @return String HTML.
+        */
+       function getButtons() {
+               $html = '<span class="mw-htmlform-submit-buttons">';
+
+               if ( $this->mShowSubmit ) {
+                       $attribs = array();
+
+                       if ( isset( $this->mSubmitID ) ) {
+                               $attribs['id'] = $this->mSubmitID;
+                       }
+
+                       if ( isset( $this->mSubmitName ) ) {
+                               $attribs['name'] = $this->mSubmitName;
+                       }
+
+                       if ( isset( $this->mSubmitTooltip ) ) {
+                               $attribs += Linker::tooltipAndAccesskeyAttribs( $this->mSubmitTooltip );
+                       }
+
+                       $attribs['class'] = array( 'mw-htmlform-submit' );
+
+                       if ( $this->isVForm() ) {
+                               // mw-ui-block is necessary because the buttons aren't necessarily in an
+                               // immediate child div of the vform.
+                               array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-big', 'mw-ui-primary', 'mw-ui-block' );
+                       }
+
+                       $html .= Xml::submitButton( $this->getSubmitText(), $attribs ) . "\n";
+
+                       // Buttons are top-level form elements in table and div layouts,
+                       // but vform wants all elements inside divs to get spaced-out block
+                       // styling.
+                       if ( $this->isVForm() ) {
+                               $html = Html::rawElement( 'div', null, "\n$html\n" );
+                       }
+               }
+
+               if ( $this->mShowReset ) {
+                       $html .= Html::element(
+                                       'input',
+                                       array(
+                                               'type' => 'reset',
+                                               'value' => $this->msg( 'htmlform-reset' )->text()
+                                       )
+                               ) . "\n";
+               }
+
+               foreach ( $this->mButtons as $button ) {
+                       $attrs = array(
+                               'type' => 'submit',
+                               'name' => $button['name'],
+                               'value' => $button['value']
+                       );
+
+                       if ( $button['attribs'] ) {
+                               $attrs += $button['attribs'];
+                       }
+
+                       if ( isset( $button['id'] ) ) {
+                               $attrs['id'] = $button['id'];
+                       }
+
+                       $html .= Html::element( 'input', $attrs );
+               }
+
+               $html .= '</span>';
+
+               return $html;
+       }
+
+       /**
+        * Get the whole body of the form.
+        * @return String
+        */
+       function getBody() {
+               return $this->displaySection( $this->mFieldTree, $this->mTableId );
+       }
+
+       /**
+        * Format and display an error message stack.
+        *
+        * @param $errors String|Array|Status
+        *
+        * @return String
+        */
+       function getErrors( $errors ) {
+               if ( $errors instanceof Status ) {
+                       if ( $errors->isOK() ) {
+                               $errorstr = '';
+                       } else {
+                               $errorstr = $this->getOutput()->parse( $errors->getWikiText() );
+                       }
+               } elseif ( is_array( $errors ) ) {
+                       $errorstr = $this->formatErrors( $errors );
+               } else {
+                       $errorstr = $errors;
+               }
+
+               return $errorstr
+                       ? Html::rawElement( 'div', array( 'class' => 'error' ), $errorstr )
+                       : '';
+       }
+
+       /**
+        * Format a stack of error messages into a single HTML string
+        *
+        * @param array $errors of message keys/values
+        *
+        * @return String HTML, a "<ul>" list of errors
+        */
+       public static function formatErrors( $errors ) {
+               $errorstr = '';
+
+               foreach ( $errors as $error ) {
+                       if ( is_array( $error ) ) {
+                               $msg = array_shift( $error );
+                       } else {
+                               $msg = $error;
+                               $error = array();
+                       }
+
+                       $errorstr .= Html::rawElement(
+                               'li',
+                               array(),
+                               wfMessage( $msg, $error )->parse()
+                       );
+               }
+
+               $errorstr = Html::rawElement( 'ul', array(), $errorstr );
+
+               return $errorstr;
+       }
+
+       /**
+        * Set the text for the submit button
+        *
+        * @param string $t plaintext.
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setSubmitText( $t ) {
+               $this->mSubmitText = $t;
+
+               return $this;
+       }
+
+       /**
+        * Set the text for the submit button to a message
+        * @since 1.19
+        *
+        * @param string $msg message key
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setSubmitTextMsg( $msg ) {
+               $this->setSubmitText( $this->msg( $msg )->text() );
+
+               return $this;
+       }
+
+       /**
+        * Get the text for the submit button, either customised or a default.
+        * @return string
+        */
+       function getSubmitText() {
+               return $this->mSubmitText
+                       ? $this->mSubmitText
+                       : $this->msg( 'htmlform-submit' )->text();
+       }
+
+       /**
+        * @param string $name Submit button name
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setSubmitName( $name ) {
+               $this->mSubmitName = $name;
+
+               return $this;
+       }
+
+       /**
+        * @param string $name Tooltip for the submit button
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setSubmitTooltip( $name ) {
+               $this->mSubmitTooltip = $name;
+
+               return $this;
+       }
+
+       /**
+        * Set the id for the submit button.
+        *
+        * @param $t String.
+        *
+        * @todo FIXME: Integrity of $t is *not* validated
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setSubmitID( $t ) {
+               $this->mSubmitID = $t;
+
+               return $this;
+       }
+
+       /**
+        * Stop a default submit button being shown for this form. This implies that an
+        * alternate submit method must be provided manually.
+        *
+        * @since 1.22
+        *
+        * @param bool $suppressSubmit Set to false to re-enable the button again
+        *
+        * @return HTMLForm $this for chaining calls
+        */
+       function suppressDefaultSubmit( $suppressSubmit = true ) {
+               $this->mShowSubmit = !$suppressSubmit;
+
+               return $this;
+       }
+
+       /**
+        * Set the id of the \<table\> or outermost \<div\> element.
+        *
+        * @since 1.22
+        *
+        * @param string $id new value of the id attribute, or "" to remove
+        *
+        * @return HTMLForm $this for chaining calls
+        */
+       public function setTableId( $id ) {
+               $this->mTableId = $id;
+
+               return $this;
+       }
+
+       /**
+        * @param string $id DOM id for the form
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setId( $id ) {
+               $this->mId = $id;
+
+               return $this;
+       }
+
+       /**
+        * Prompt the whole form to be wrapped in a "<fieldset>", with
+        * this text as its "<legend>" element.
+        *
+        * @param string|false $legend HTML to go inside the "<legend>" element, or
+        * false for no <legend>
+        *     Will be escaped
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setWrapperLegend( $legend ) {
+               $this->mWrapperLegend = $legend;
+
+               return $this;
+       }
+
+       /**
+        * Prompt the whole form to be wrapped in a "<fieldset>", with
+        * this message as its "<legend>" element.
+        * @since 1.19
+        *
+        * @param string $msg message key
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setWrapperLegendMsg( $msg ) {
+               $this->setWrapperLegend( $this->msg( $msg )->text() );
+
+               return $this;
+       }
+
+       /**
+        * Set the prefix for various default messages
+        * @todo Currently only used for the "<fieldset>" legend on forms
+        * with multiple sections; should be used elsewhere?
+        *
+        * @param $p String
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setMessagePrefix( $p ) {
+               $this->mMessagePrefix = $p;
+
+               return $this;
+       }
+
+       /**
+        * Set the title for form submission
+        *
+        * @param $t Title of page the form is on/should be posted to
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function setTitle( $t ) {
+               $this->mTitle = $t;
+
+               return $this;
+       }
+
+       /**
+        * Get the title
+        * @return Title
+        */
+       function getTitle() {
+               return $this->mTitle === false
+                       ? $this->getContext()->getTitle()
+                       : $this->mTitle;
+       }
+
+       /**
+        * Set the method used to submit the form
+        *
+        * @param $method String
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setMethod( $method = 'post' ) {
+               $this->mMethod = $method;
+
+               return $this;
+       }
+
+       public function getMethod() {
+               return $this->mMethod;
+       }
+
+       /**
+        * @todo Document
+        *
+        * @param array[]|HTMLFormField[] $fields Array of fields (either arrays or
+        *   objects).
+        * @param string $sectionName ID attribute of the "<table>" tag for this
+        *   section, ignored if empty.
+        * @param string $fieldsetIDPrefix ID prefix for the "<fieldset>" tag of
+        *   each subsection, ignored if empty.
+        * @param boolean &$hasUserVisibleFields Whether the section had user-visible fields.
+        *
+        * @return String
+        */
+       public function displaySection( $fields,
+               $sectionName = '',
+               $fieldsetIDPrefix = '',
+               &$hasUserVisibleFields = false ) {
+               $displayFormat = $this->getDisplayFormat();
+
+               $html = '';
+               $subsectionHtml = '';
+               $hasLabel = false;
+
+               switch ( $displayFormat ) {
+                       case 'table':
+                               $getFieldHtmlMethod = 'getTableRow';
+                               break;
+                       case 'vform':
+                               // Close enough to a div.
+                               $getFieldHtmlMethod = 'getDiv';
+                               break;
+                       default:
+                               $getFieldHtmlMethod = 'get' . ucfirst( $displayFormat );
+               }
+
+               foreach ( $fields as $key => $value ) {
+                       if ( $value instanceof HTMLFormField ) {
+                               $v = empty( $value->mParams['nodata'] )
+                                       ? $this->mFieldData[$key]
+                                       : $value->getDefault();
+                               $html .= $value->$getFieldHtmlMethod( $v );
+
+                               $labelValue = trim( $value->getLabel() );
+                               if ( $labelValue != '&#160;' && $labelValue !== '' ) {
+                                       $hasLabel = true;
+                               }
+
+                               if ( get_class( $value ) !== 'HTMLHiddenField' &&
+                                       get_class( $value ) !== 'HTMLApiField'
+                               ) {
+                                       $hasUserVisibleFields = true;
+                               }
+                       } elseif ( is_array( $value ) ) {
+                               $subsectionHasVisibleFields = false;
+                               $section =
+                                       $this->displaySection( $value,
+                                               "mw-htmlform-$key",
+                                               "$fieldsetIDPrefix$key-",
+                                               $subsectionHasVisibleFields );
+                               $legend = null;
+
+                               if ( $subsectionHasVisibleFields === true ) {
+                                       // Display the section with various niceties.
+                                       $hasUserVisibleFields = true;
+
+                                       $legend = $this->getLegend( $key );
+
+                                       if ( isset( $this->mSectionHeaders[$key] ) ) {
+                                               $section = $this->mSectionHeaders[$key] . $section;
+                                       }
+                                       if ( isset( $this->mSectionFooters[$key] ) ) {
+                                               $section .= $this->mSectionFooters[$key];
+                                       }
+
+                                       $attributes = array();
+                                       if ( $fieldsetIDPrefix ) {
+                                               $attributes['id'] = Sanitizer::escapeId( "$fieldsetIDPrefix$key" );
+                                       }
+                                       $subsectionHtml .= Xml::fieldset( $legend, $section, $attributes ) . "\n";
+                               } else {
+                                       // Just return the inputs, nothing fancy.
+                                       $subsectionHtml .= $section;
+                               }
+                       }
+               }
+
+               if ( $displayFormat !== 'raw' ) {
+                       $classes = array();
+
+                       if ( !$hasLabel ) { // Avoid strange spacing when no labels exist
+                               $classes[] = 'mw-htmlform-nolabel';
+                       }
+
+                       $attribs = array(
+                               'class' => implode( ' ', $classes ),
+                       );
+
+                       if ( $sectionName ) {
+                               $attribs['id'] = Sanitizer::escapeId( $sectionName );
+                       }
+
+                       if ( $displayFormat === 'table' ) {
+                               $html = Html::rawElement( 'table',
+                                               $attribs,
+                                               Html::rawElement( 'tbody', array(), "\n$html\n" ) ) . "\n";
+                       } elseif ( $displayFormat === 'div' || $displayFormat === 'vform' ) {
+                               $html = Html::rawElement( 'div', $attribs, "\n$html\n" );
+                       }
+               }
+
+               if ( $this->mSubSectionBeforeFields ) {
+                       return $subsectionHtml . "\n" . $html;
+               } else {
+                       return $html . "\n" . $subsectionHtml;
+               }
+       }
+
+       /**
+        * Construct the form fields from the Descriptor array
+        */
+       function loadData() {
+               $fieldData = array();
+
+               foreach ( $this->mFlatFields as $fieldname => $field ) {
+                       if ( !empty( $field->mParams['nodata'] ) ) {
+                               continue;
+                       } elseif ( !empty( $field->mParams['disabled'] ) ) {
+                               $fieldData[$fieldname] = $field->getDefault();
+                       } else {
+                               $fieldData[$fieldname] = $field->loadDataFromRequest( $this->getRequest() );
+                       }
+               }
+
+               # Filter data.
+               foreach ( $fieldData as $name => &$value ) {
+                       $field = $this->mFlatFields[$name];
+                       $value = $field->filter( $value, $this->mFlatFields );
+               }
+
+               $this->mFieldData = $fieldData;
+       }
+
+       /**
+        * Stop a reset button being shown for this form
+        *
+        * @param bool $suppressReset set to false to re-enable the
+        *     button again
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       function suppressReset( $suppressReset = true ) {
+               $this->mShowReset = !$suppressReset;
+
+               return $this;
+       }
+
+       /**
+        * Overload this if you want to apply special filtration routines
+        * to the form as a whole, after it's submitted but before it's
+        * processed.
+        *
+        * @param $data
+        *
+        * @return
+        */
+       function filterDataForSubmit( $data ) {
+               return $data;
+       }
+
+       /**
+        * Get a string to go in the "<legend>" of a section fieldset.
+        * Override this if you want something more complicated.
+        *
+        * @param $key String
+        *
+        * @return String
+        */
+       public function getLegend( $key ) {
+               return $this->msg( "{$this->mMessagePrefix}-$key" )->text();
+       }
+
+       /**
+        * Set the value for the action attribute of the form.
+        * When set to false (which is the default state), the set title is used.
+        *
+        * @since 1.19
+        *
+        * @param string|bool $action
+        *
+        * @return HTMLForm $this for chaining calls (since 1.20)
+        */
+       public function setAction( $action ) {
+               $this->mAction = $action;
+
+               return $this;
+       }
+
+       /**
+        * Get the value for the action attribute of the form.
+        *
+        * @since 1.22
+        *
+        * @return string
+        */
+       public function getAction() {
+               global $wgScript, $wgArticlePath;
+
+               // If an action is alredy provided, return it
+               if ( $this->mAction !== false ) {
+                       return $this->mAction;
+               }
+
+               // Check whether we are in GET mode and $wgArticlePath contains a "?"
+               // meaning that getLocalURL() would return something like "index.php?title=...".
+               // As browser remove the query string before submitting GET forms,
+               // it means that the title would be lost. In such case use $wgScript instead
+               // and put title in an hidden field (see getHiddenFields()).
+               if ( strpos( $wgArticlePath, '?' ) !== false && $this->getMethod() === 'get' ) {
+                       return $wgScript;
+               }
+
+               return $this->getTitle()->getLocalURL();
+       }
+}
diff --git a/includes/htmlform/HTMLFormField.php b/includes/htmlform/HTMLFormField.php
new file mode 100644 (file)
index 0000000..eeed907
--- /dev/null
@@ -0,0 +1,540 @@
+<?php
+
+/**
+ * The parent class to generate form fields.  Any field type should
+ * be a subclass of this.
+ */
+abstract class HTMLFormField {
+       public $mParams;
+
+       protected $mValidationCallback;
+       protected $mFilterCallback;
+       protected $mName;
+       protected $mLabel; # String label.  Set on construction
+       protected $mID;
+       protected $mClass = '';
+       protected $mDefault;
+
+       /**
+        * @var bool If true will generate an empty div element with no label
+        * @since 1.22
+        */
+       protected $mShowEmptyLabels = true;
+
+       /**
+        * @var HTMLForm
+        */
+       public $mParent;
+
+       /**
+        * This function must be implemented to return the HTML to generate
+        * the input object itself.  It should not implement the surrounding
+        * table cells/rows, or labels/help messages.
+        *
+        * @param string $value the value to set the input to; eg a default
+        *     text for a text input.
+        *
+        * @return string Valid HTML.
+        */
+       abstract function getInputHTML( $value );
+
+       /**
+        * Get a translated interface message
+        *
+        * This is a wrapper around $this->mParent->msg() if $this->mParent is set
+        * and wfMessage() otherwise.
+        *
+        * Parameters are the same as wfMessage().
+        *
+        * @return Message object
+        */
+       function msg() {
+               $args = func_get_args();
+
+               if ( $this->mParent ) {
+                       $callback = array( $this->mParent, 'msg' );
+               } else {
+                       $callback = 'wfMessage';
+               }
+
+               return call_user_func_array( $callback, $args );
+       }
+
+       /**
+        * Override this function to add specific validation checks on the
+        * field input.  Don't forget to call parent::validate() to ensure
+        * that the user-defined callback mValidationCallback is still run
+        *
+        * @param string $value The value the field was submitted with
+        * @param array $alldata The data collected from the form
+        *
+        * @return Mixed Bool true on success, or String error to display.
+        */
+       function validate( $value, $alldata ) {
+               if ( isset( $this->mParams['required'] )
+                       && $this->mParams['required'] !== false
+                       && $value === ''
+               ) {
+                       return $this->msg( 'htmlform-required' )->parse();
+               }
+
+               if ( isset( $this->mValidationCallback ) ) {
+                       return call_user_func( $this->mValidationCallback, $value, $alldata, $this->mParent );
+               }
+
+               return true;
+       }
+
+       function filter( $value, $alldata ) {
+               if ( isset( $this->mFilterCallback ) ) {
+                       $value = call_user_func( $this->mFilterCallback, $value, $alldata, $this->mParent );
+               }
+
+               return $value;
+       }
+
+       /**
+        * Should this field have a label, or is there no input element with the
+        * appropriate id for the label to point to?
+        *
+        * @return bool True to output a label, false to suppress
+        */
+       protected function needsLabel() {
+               return true;
+       }
+
+       /**
+        * Tell the field whether to generate a separate label element if its label
+        * is blank.
+        *
+        * @since 1.22
+        *
+        * @param bool $show Set to false to not generate a label.
+        * @return void
+        */
+       public function setShowEmptyLabel( $show ) {
+               $this->mShowEmptyLabels = $show;
+       }
+
+       /**
+        * Get the value that this input has been set to from a posted form,
+        * or the input's default value if it has not been set.
+        *
+        * @param WebRequest $request
+        * @return String the value
+        */
+       function loadDataFromRequest( $request ) {
+               if ( $request->getCheck( $this->mName ) ) {
+                       return $request->getText( $this->mName );
+               } else {
+                       return $this->getDefault();
+               }
+       }
+
+       /**
+        * Initialise the object
+        *
+        * @param array $params Associative Array. See HTMLForm doc for syntax.
+        *
+        * @since 1.22 The 'label' attribute no longer accepts raw HTML, use 'label-raw' instead
+        * @throws MWException
+        */
+       function __construct( $params ) {
+               $this->mParams = $params;
+
+               # Generate the label from a message, if possible
+               if ( isset( $params['label-message'] ) ) {
+                       $msgInfo = $params['label-message'];
+
+                       if ( is_array( $msgInfo ) ) {
+                               $msg = array_shift( $msgInfo );
+                       } else {
+                               $msg = $msgInfo;
+                               $msgInfo = array();
+                       }
+
+                       $this->mLabel = wfMessage( $msg, $msgInfo )->parse();
+               } elseif ( isset( $params['label'] ) ) {
+                       if ( $params['label'] === '&#160;' ) {
+                               // Apparently some things set &nbsp directly and in an odd format
+                               $this->mLabel = '&#160;';
+                       } else {
+                               $this->mLabel = htmlspecialchars( $params['label'] );
+                       }
+               } elseif ( isset( $params['label-raw'] ) ) {
+                       $this->mLabel = $params['label-raw'];
+               }
+
+               $this->mName = "wp{$params['fieldname']}";
+               if ( isset( $params['name'] ) ) {
+                       $this->mName = $params['name'];
+               }
+
+               $validName = Sanitizer::escapeId( $this->mName );
+               if ( $this->mName != $validName && !isset( $params['nodata'] ) ) {
+                       throw new MWException( "Invalid name '{$this->mName}' passed to " . __METHOD__ );
+               }
+
+               $this->mID = "mw-input-{$this->mName}";
+
+               if ( isset( $params['default'] ) ) {
+                       $this->mDefault = $params['default'];
+               }
+
+               if ( isset( $params['id'] ) ) {
+                       $id = $params['id'];
+                       $validId = Sanitizer::escapeId( $id );
+
+                       if ( $id != $validId ) {
+                               throw new MWException( "Invalid id '$id' passed to " . __METHOD__ );
+                       }
+
+                       $this->mID = $id;
+               }
+
+               if ( isset( $params['cssclass'] ) ) {
+                       $this->mClass = $params['cssclass'];
+               }
+
+               if ( isset( $params['validation-callback'] ) ) {
+                       $this->mValidationCallback = $params['validation-callback'];
+               }
+
+               if ( isset( $params['filter-callback'] ) ) {
+                       $this->mFilterCallback = $params['filter-callback'];
+               }
+
+               if ( isset( $params['flatlist'] ) ) {
+                       $this->mClass .= ' mw-htmlform-flatlist';
+               }
+
+               if ( isset( $params['hidelabel'] ) ) {
+                       $this->mShowEmptyLabels = false;
+               }
+       }
+
+       /**
+        * Get the complete table row for the input, including help text,
+        * labels, and whatever.
+        *
+        * @param string $value The value to set the input to.
+        *
+        * @return string Complete HTML table row.
+        */
+       function getTableRow( $value ) {
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlTable( $this->getHelpText() );
+               $cellAttributes = array();
+
+               if ( !empty( $this->mParams['vertical-label'] ) ) {
+                       $cellAttributes['colspan'] = 2;
+                       $verticalLabel = true;
+               } else {
+                       $verticalLabel = false;
+               }
+
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $field = Html::rawElement(
+                       'td',
+                       array( 'class' => 'mw-input' ) + $cellAttributes,
+                       $inputHtml . "\n$errors"
+               );
+
+               if ( $verticalLabel ) {
+                       $html = Html::rawElement( 'tr', array( 'class' => 'mw-htmlform-vertical-label' ), $label );
+                       $html .= Html::rawElement( 'tr',
+                               array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
+                               $field );
+               } else {
+                       $html =
+                               Html::rawElement( 'tr',
+                                       array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
+                                       $label . $field );
+               }
+
+               return $html . $helptext;
+       }
+
+       /**
+        * Get the complete div for the input, including help text,
+        * labels, and whatever.
+        * @since 1.20
+        *
+        * @param string $value The value to set the input to.
+        *
+        * @return string Complete HTML table row.
+        */
+       public function getDiv( $value ) {
+               list( $errors, $errorClass ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $fieldType = get_class( $this );
+               $helptext = $this->getHelpTextHtmlDiv( $this->getHelpText() );
+               $cellAttributes = array();
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $outerDivClass = array(
+                       'mw-input',
+                       'mw-htmlform-nolabel' => ( $label === '' )
+               );
+
+               $field = Html::rawElement(
+                       'div',
+                       array( 'class' => $outerDivClass ) + $cellAttributes,
+                       $inputHtml . "\n$errors"
+               );
+               $divCssClasses = array( "mw-htmlform-field-$fieldType", $this->mClass, $errorClass );
+               if ( $this->mParent->isVForm() ) {
+                       $divCssClasses[] = 'mw-ui-vform-div';
+               }
+               $html = Html::rawElement( 'div', array( 'class' => $divCssClasses ), $label . $field );
+               $html .= $helptext;
+
+               return $html;
+       }
+
+       /**
+        * Get the complete raw fields for the input, including help text,
+        * labels, and whatever.
+        * @since 1.20
+        *
+        * @param string $value The value to set the input to.
+        *
+        * @return string Complete HTML table row.
+        */
+       public function getRaw( $value ) {
+               list( $errors, ) = $this->getErrorsAndErrorClass( $value );
+               $inputHtml = $this->getInputHTML( $value );
+               $helptext = $this->getHelpTextHtmlRaw( $this->getHelpText() );
+               $cellAttributes = array();
+               $label = $this->getLabelHtml( $cellAttributes );
+
+               $html = "\n$errors";
+               $html .= $label;
+               $html .= $inputHtml;
+               $html .= $helptext;
+
+               return $html;
+       }
+
+       /**
+        * Generate help text HTML in table format
+        * @since 1.20
+        *
+        * @param string|null $helptext
+        * @return string
+        */
+       public function getHelpTextHtmlTable( $helptext ) {
+               if ( is_null( $helptext ) ) {
+                       return '';
+               }
+
+               $row = Html::rawElement( 'td', array( 'colspan' => 2, 'class' => 'htmlform-tip' ), $helptext );
+               $row = Html::rawElement( 'tr', array(), $row );
+
+               return $row;
+       }
+
+       /**
+        * Generate help text HTML in div format
+        * @since 1.20
+        *
+        * @param string|null $helptext
+        *
+        * @return String
+        */
+       public function getHelpTextHtmlDiv( $helptext ) {
+               if ( is_null( $helptext ) ) {
+                       return '';
+               }
+
+               $div = Html::rawElement( 'div', array( 'class' => 'htmlform-tip' ), $helptext );
+
+               return $div;
+       }
+
+       /**
+        * Generate help text HTML formatted for raw output
+        * @since 1.20
+        *
+        * @param string|null $helptext
+        * @return String
+        */
+       public function getHelpTextHtmlRaw( $helptext ) {
+               return $this->getHelpTextHtmlDiv( $helptext );
+       }
+
+       /**
+        * Determine the help text to display
+        * @since 1.20
+        * @return string
+        */
+       public function getHelpText() {
+               $helptext = null;
+
+               if ( isset( $this->mParams['help-message'] ) ) {
+                       $this->mParams['help-messages'] = array( $this->mParams['help-message'] );
+               }
+
+               if ( isset( $this->mParams['help-messages'] ) ) {
+                       foreach ( $this->mParams['help-messages'] as $name ) {
+                               $helpMessage = (array)$name;
+                               $msg = $this->msg( array_shift( $helpMessage ), $helpMessage );
+
+                               if ( $msg->exists() ) {
+                                       if ( is_null( $helptext ) ) {
+                                               $helptext = '';
+                                       } else {
+                                               $helptext .= $this->msg( 'word-separator' )->escaped(); // some space
+                                       }
+                                       $helptext .= $msg->parse(); // Append message
+                               }
+                       }
+               } elseif ( isset( $this->mParams['help'] ) ) {
+                       $helptext = $this->mParams['help'];
+               }
+
+               return $helptext;
+       }
+
+       /**
+        * Determine form errors to display and their classes
+        * @since 1.20
+        *
+        * @param string $value The value of the input
+        * @return array
+        */
+       public function getErrorsAndErrorClass( $value ) {
+               $errors = $this->validate( $value, $this->mParent->mFieldData );
+
+               if ( $errors === true ||
+                       ( !$this->mParent->getRequest()->wasPosted() && $this->mParent->getMethod() === 'post' )
+               ) {
+                       $errors = '';
+                       $errorClass = '';
+               } else {
+                       $errors = self::formatErrors( $errors );
+                       $errorClass = 'mw-htmlform-invalid-input';
+               }
+
+               return array( $errors, $errorClass );
+       }
+
+       function getLabel() {
+               return is_null( $this->mLabel ) ? '' : $this->mLabel;
+       }
+
+       function getLabelHtml( $cellAttributes = array() ) {
+               # Don't output a for= attribute for labels with no associated input.
+               # Kind of hacky here, possibly we don't want these to be <label>s at all.
+               $for = array();
+
+               if ( $this->needsLabel() ) {
+                       $for['for'] = $this->mID;
+               }
+
+               $labelValue = trim( $this->getLabel() );
+               $hasLabel = false;
+               if ( $labelValue !== '&#160;' && $labelValue !== '' ) {
+                       $hasLabel = true;
+               }
+
+               $displayFormat = $this->mParent->getDisplayFormat();
+               $html = '';
+
+               if ( $displayFormat === 'table' ) {
+                       $html =
+                               Html::rawElement( 'td',
+                                       array( 'class' => 'mw-label' ) + $cellAttributes,
+                                       Html::rawElement( 'label', $for, $labelValue ) );
+               } elseif ( $hasLabel || $this->mShowEmptyLabels ) {
+                       if ( $displayFormat === 'div' ) {
+                               $html =
+                                       Html::rawElement( 'div',
+                                               array( 'class' => 'mw-label' ) + $cellAttributes,
+                                               Html::rawElement( 'label', $for, $labelValue ) );
+                       } else {
+                               $html = Html::rawElement( 'label', $for, $labelValue );
+                       }
+               }
+
+               return $html;
+       }
+
+       function getDefault() {
+               if ( isset( $this->mDefault ) ) {
+                       return $this->mDefault;
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * Returns the attributes required for the tooltip and accesskey.
+        *
+        * @return array Attributes
+        */
+       public function getTooltipAndAccessKey() {
+               if ( empty( $this->mParams['tooltip'] ) ) {
+                       return array();
+               }
+
+               return Linker::tooltipAndAccesskeyAttribs( $this->mParams['tooltip'] );
+       }
+
+       /**
+        * flatten an array of options to a single array, for instance,
+        * a set of "<options>" inside "<optgroups>".
+        *
+        * @param array $options Associative Array with values either Strings
+        *     or Arrays
+        * @return array Flattened input
+        */
+       public static function flattenOptions( $options ) {
+               $flatOpts = array();
+
+               foreach ( $options as $value ) {
+                       if ( is_array( $value ) ) {
+                               $flatOpts = array_merge( $flatOpts, self::flattenOptions( $value ) );
+                       } else {
+                               $flatOpts[] = $value;
+                       }
+               }
+
+               return $flatOpts;
+       }
+
+       /**
+        * Formats one or more errors as accepted by field validation-callback.
+        *
+        * @param string|Message|array $errors String|Message|Array of strings or Message instances
+        * @return string HTML
+        * @since 1.18
+        */
+       protected static function formatErrors( $errors ) {
+               if ( is_array( $errors ) && count( $errors ) === 1 ) {
+                       $errors = array_shift( $errors );
+               }
+
+               if ( is_array( $errors ) ) {
+                       $lines = array();
+                       foreach ( $errors as $error ) {
+                               if ( $error instanceof Message ) {
+                                       $lines[] = Html::rawElement( 'li', array(), $error->parse() );
+                               } else {
+                                       $lines[] = Html::rawElement( 'li', array(), $error );
+                               }
+                       }
+
+                       return Html::rawElement( 'ul', array( 'class' => 'error' ), implode( "\n", $lines ) );
+               } else {
+                       if ( $errors instanceof Message ) {
+                               $errors = $errors->parse();
+                       }
+
+                       return Html::rawElement( 'span', array( 'class' => 'error' ), $errors );
+               }
+       }
+}
diff --git a/includes/htmlform/HTMLFormFieldRequiredOptionsException.php b/includes/htmlform/HTMLFormFieldRequiredOptionsException.php
new file mode 100644 (file)
index 0000000..76f5286
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+
+class HTMLFormFieldRequiredOptionsException extends MWException {
+       public function __construct( HTMLFormField $field, array $missing ) {
+               parent::__construct( sprintf( "Form type `%s` expected the following parameters to be set: %s",
+                       get_class( $field ),
+                       implode( ', ', $missing ) ) );
+       }
+}
diff --git a/includes/htmlform/HTMLHiddenField.php b/includes/htmlform/HTMLHiddenField.php
new file mode 100644 (file)
index 0000000..003ccfe
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+class HTMLHiddenField extends HTMLFormField {
+       public function __construct( $params ) {
+               parent::__construct( $params );
+
+               # Per HTML5 spec, hidden fields cannot be 'required'
+               # http://dev.w3.org/html5/spec/states-of-the-type-attribute.html#hidden-state
+               unset( $this->mParams['required'] );
+       }
+
+       public function getTableRow( $value ) {
+               $params = array();
+               if ( $this->mID ) {
+                       $params['id'] = $this->mID;
+               }
+
+               $this->mParent->addHiddenField( $this->mName, $this->mDefault, $params );
+
+               return '';
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               return $this->getTableRow( $value );
+       }
+
+       public function getInputHTML( $value ) {
+               return '';
+       }
+}
diff --git a/includes/htmlform/HTMLInfoField.php b/includes/htmlform/HTMLInfoField.php
new file mode 100644 (file)
index 0000000..cff8202
--- /dev/null
@@ -0,0 +1,50 @@
+<?php
+
+/**
+ * An information field (text blob), not a proper input.
+ */
+class HTMLInfoField extends HTMLFormField {
+       public function __construct( $info ) {
+               $info['nodata'] = true;
+
+               parent::__construct( $info );
+       }
+
+       public function getInputHTML( $value ) {
+               return !empty( $this->mParams['raw'] ) ? $value : htmlspecialchars( $value );
+       }
+
+       public function getTableRow( $value ) {
+               if ( !empty( $this->mParams['rawrow'] ) ) {
+                       return $value;
+               }
+
+               return parent::getTableRow( $value );
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getDiv( $value ) {
+               if ( !empty( $this->mParams['rawrow'] ) ) {
+                       return $value;
+               }
+
+               return parent::getDiv( $value );
+       }
+
+       /**
+        * @since 1.20
+        */
+       public function getRaw( $value ) {
+               if ( !empty( $this->mParams['rawrow'] ) ) {
+                       return $value;
+               }
+
+               return parent::getRaw( $value );
+       }
+
+       protected function needsLabel() {
+               return false;
+       }
+}
diff --git a/includes/htmlform/HTMLIntField.php b/includes/htmlform/HTMLIntField.php
new file mode 100644 (file)
index 0000000..28876e2
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * A field that must contain a number
+ */
+class HTMLIntField extends HTMLFloatField {
+       function validate( $value, $alldata ) {
+               $p = parent::validate( $value, $alldata );
+
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               # http://dev.w3.org/html5/spec/common-microsyntaxes.html#signed-integers
+               # with the addition that a leading '+' sign is ok. Note that leading zeros
+               # are fine, and will be left in the input, which is useful for things like
+               # phone numbers when you know that they are integers (the HTML5 type=tel
+               # input does not require its value to be numeric).  If you want a tidier
+               # value to, eg, save in the DB, clean it up with intval().
+               if ( !preg_match( '/^((\+|\-)?\d+)?$/', trim( $value ) )
+               ) {
+                       return $this->msg( 'htmlform-int-invalid' )->parseAsBlock();
+               }
+
+               return true;
+       }
+}
diff --git a/includes/htmlform/HTMLMultiSelectField.php b/includes/htmlform/HTMLMultiSelectField.php
new file mode 100644 (file)
index 0000000..6b0396d
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+
+/**
+ * Multi-select field
+ */
+class HTMLMultiSelectField extends HTMLFormField implements HTMLNestedFilterable {
+       function validate( $value, $alldata ) {
+               $p = parent::validate( $value, $alldata );
+
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               if ( !is_array( $value ) ) {
+                       return false;
+               }
+
+               # If all options are valid, array_intersect of the valid options
+               # and the provided options will return the provided options.
+               $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
+
+               $validValues = array_intersect( $value, $validOptions );
+               if ( count( $validValues ) == count( $value ) ) {
+                       return true;
+               } else {
+                       return $this->msg( 'htmlform-select-badoption' )->parse();
+               }
+       }
+
+       function getInputHTML( $value ) {
+               $html = $this->formatOptions( $this->mParams['options'], $value );
+
+               return $html;
+       }
+
+       function formatOptions( $options, $value ) {
+               $html = '';
+
+               $attribs = array();
+
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attribs['disabled'] = 'disabled';
+               }
+
+               foreach ( $options as $label => $info ) {
+                       if ( is_array( $info ) ) {
+                               $html .= Html::rawElement( 'h1', array(), $label ) . "\n";
+                               $html .= $this->formatOptions( $info, $value );
+                       } else {
+                               $thisAttribs = array( 'id' => "{$this->mID}-$info", 'value' => $info );
+
+                               $checkbox = Xml::check(
+                                       $this->mName . '[]',
+                                       in_array( $info, $value, true ),
+                                       $attribs + $thisAttribs
+                               );
+                               $checkbox .= '&#160;' . Html::rawElement(
+                                       'label',
+                                       array( 'for' => "{$this->mID}-$info" ),
+                                       $label
+                               );
+
+                               $html .= ' ' . Html::rawElement(
+                                       'div',
+                                       array( 'class' => 'mw-htmlform-flatlist-item' ),
+                                       $checkbox
+                               );
+                       }
+               }
+
+               return $html;
+       }
+
+       /**
+        * @param  $request WebRequest
+        *
+        * @return String
+        */
+       function loadDataFromRequest( $request ) {
+               if ( $this->mParent->getMethod() == 'post' ) {
+                       if ( $request->wasPosted() ) {
+                               # Checkboxes are just not added to the request arrays if they're not checked,
+                               # so it's perfectly possible for there not to be an entry at all
+                               return $request->getArray( $this->mName, array() );
+                       } else {
+                               # That's ok, the user has not yet submitted the form, so show the defaults
+                               return $this->getDefault();
+                       }
+               } else {
+                       # This is the impossible case: if we look at $_GET and see no data for our
+                       # field, is it because the user has not yet submitted the form, or that they
+                       # have submitted it with all the options unchecked? We will have to assume the
+                       # latter, which basically means that you can't specify 'positive' defaults
+                       # for GET forms.
+                       # @todo FIXME...
+                       return $request->getArray( $this->mName, array() );
+               }
+       }
+
+       function getDefault() {
+               if ( isset( $this->mDefault ) ) {
+                       return $this->mDefault;
+               } else {
+                       return array();
+               }
+       }
+
+       function filterDataForSubmit( $data ) {
+               $options = HTMLFormField::flattenOptions( $this->mParams['options'] );
+
+               $res = array();
+               foreach ( $options as $opt ) {
+                       $res["$opt"] = in_array( $opt, $data );
+               }
+
+               return $res;
+       }
+
+       protected function needsLabel() {
+               return false;
+       }
+}
diff --git a/includes/htmlform/HTMLNestedFilterable.php b/includes/htmlform/HTMLNestedFilterable.php
new file mode 100644 (file)
index 0000000..f6f3ad5
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+
+interface HTMLNestedFilterable {
+       /**
+        * Support for seperating multi-option preferences into multiple preferences
+        * Due to lack of array support.
+        *
+        * @param $data array
+        */
+       function filterDataForSubmit( $data );
+}
diff --git a/includes/htmlform/HTMLRadioField.php b/includes/htmlform/HTMLRadioField.php
new file mode 100644 (file)
index 0000000..51e7cdd
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+/**
+ * Radio checkbox fields.
+ */
+class HTMLRadioField extends HTMLFormField {
+       function validate( $value, $alldata ) {
+               $p = parent::validate( $value, $alldata );
+
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               if ( !is_string( $value ) && !is_int( $value ) ) {
+                       return false;
+               }
+
+               $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
+
+               if ( in_array( $value, $validOptions ) ) {
+                       return true;
+               } else {
+                       return $this->msg( 'htmlform-select-badoption' )->parse();
+               }
+       }
+
+       /**
+        * This returns a block of all the radio options, in one cell.
+        * @see includes/HTMLFormField#getInputHTML()
+        *
+        * @param $value String
+        *
+        * @return String
+        */
+       function getInputHTML( $value ) {
+               $html = $this->formatOptions( $this->mParams['options'], $value );
+
+               return $html;
+       }
+
+       function formatOptions( $options, $value ) {
+               $html = '';
+
+               $attribs = array();
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attribs['disabled'] = 'disabled';
+               }
+
+               # @todo Should this produce an unordered list perhaps?
+               foreach ( $options as $label => $info ) {
+                       if ( is_array( $info ) ) {
+                               $html .= Html::rawElement( 'h1', array(), $label ) . "\n";
+                               $html .= $this->formatOptions( $info, $value );
+                       } else {
+                               $id = Sanitizer::escapeId( $this->mID . "-$info" );
+                               $radio = Xml::radio( $this->mName, $info, $info == $value, $attribs + array( 'id' => $id ) );
+                               $radio .= '&#160;' . Html::rawElement( 'label', array( 'for' => $id ), $label );
+
+                               $html .= ' ' . Html::rawElement(
+                                       'div',
+                                       array( 'class' => 'mw-htmlform-flatlist-item' ),
+                                       $radio
+                               );
+                       }
+               }
+
+               return $html;
+       }
+
+       protected function needsLabel() {
+               return false;
+       }
+}
diff --git a/includes/htmlform/HTMLSelectAndOtherField.php b/includes/htmlform/HTMLSelectAndOtherField.php
new file mode 100644 (file)
index 0000000..7b2e865
--- /dev/null
@@ -0,0 +1,167 @@
+<?php
+
+/**
+ * Double field with a dropdown list constructed from a system message in the format
+ *     * Optgroup header
+ *     ** <option value>
+ *     * New Optgroup header
+ * Plus a text field underneath for an additional reason.  The 'value' of the field is
+ * "<select>: <extra reason>", or "<extra reason>" if nothing has been selected in the
+ * select dropdown.
+ * @todo FIXME: If made 'required', only the text field should be compulsory.
+ */
+class HTMLSelectAndOtherField extends HTMLSelectField {
+       function __construct( $params ) {
+               if ( array_key_exists( 'other', $params ) ) {
+               } elseif ( array_key_exists( 'other-message', $params ) ) {
+                       $params['other'] = wfMessage( $params['other-message'] )->plain();
+               } else {
+                       $params['other'] = null;
+               }
+
+               if ( array_key_exists( 'options', $params ) ) {
+                       # Options array already specified
+               } elseif ( array_key_exists( 'options-message', $params ) ) {
+                       # Generate options array from a system message
+                       $params['options'] =
+                               self::parseMessage( wfMessage( $params['options-message'] )->inContentLanguage()->plain(),
+                                       $params['other'] );
+               } else {
+                       # Sulk
+                       throw new MWException( 'HTMLSelectAndOtherField called without any options' );
+               }
+               $this->mFlatOptions = self::flattenOptions( $params['options'] );
+
+               parent::__construct( $params );
+       }
+
+       /**
+        * Build a drop-down box from a textual list.
+        *
+        * @param string $string message text
+        * @param string $otherName name of "other reason" option
+        *
+        * @return Array
+        * @todo This is copied from Xml::listDropDown(), deprecate/avoid duplication?
+        */
+       public static function parseMessage( $string, $otherName = null ) {
+               if ( $otherName === null ) {
+                       $otherName = wfMessage( 'htmlform-selectorother-other' )->plain();
+               }
+
+               $optgroup = false;
+               $options = array( $otherName => 'other' );
+
+               foreach ( explode( "\n", $string ) as $option ) {
+                       $value = trim( $option );
+                       if ( $value == '' ) {
+                               continue;
+                       } elseif ( substr( $value, 0, 1 ) == '*' && substr( $value, 1, 1 ) != '*' ) {
+                               # A new group is starting...
+                               $value = trim( substr( $value, 1 ) );
+                               $optgroup = $value;
+                       } elseif ( substr( $value, 0, 2 ) == '**' ) {
+                               # groupmember
+                               $opt = trim( substr( $value, 2 ) );
+                               if ( $optgroup === false ) {
+                                       $options[$opt] = $opt;
+                               } else {
+                                       $options[$optgroup][$opt] = $opt;
+                               }
+                       } else {
+                               # groupless reason list
+                               $optgroup = false;
+                               $options[$option] = $option;
+                       }
+               }
+
+               return $options;
+       }
+
+       function getInputHTML( $value ) {
+               $select = parent::getInputHTML( $value[1] );
+
+               $textAttribs = array(
+                       'id' => $this->mID . '-other',
+                       'size' => $this->getSize(),
+               );
+
+               if ( $this->mClass !== '' ) {
+                       $textAttribs['class'] = $this->mClass;
+               }
+
+               foreach ( array( 'required', 'autofocus', 'multiple', 'disabled' ) as $param ) {
+                       if ( isset( $this->mParams[$param] ) ) {
+                               $textAttribs[$param] = '';
+                       }
+               }
+
+               $textbox = Html::input( $this->mName . '-other', $value[2], 'text', $textAttribs );
+
+               return "$select<br />\n$textbox";
+       }
+
+       /**
+        * @param  $request WebRequest
+        *
+        * @return Array("<overall message>","<select value>","<text field value>")
+        */
+       function loadDataFromRequest( $request ) {
+               if ( $request->getCheck( $this->mName ) ) {
+
+                       $list = $request->getText( $this->mName );
+                       $text = $request->getText( $this->mName . '-other' );
+
+                       if ( $list == 'other' ) {
+                               $final = $text;
+                       } elseif ( !in_array( $list, $this->mFlatOptions ) ) {
+                               # User has spoofed the select form to give an option which wasn't
+                               # in the original offer.  Sulk...
+                               $final = $text;
+                       } elseif ( $text == '' ) {
+                               $final = $list;
+                       } else {
+                               $final = $list . $this->msg( 'colon-separator' )->inContentLanguage()->text() . $text;
+                       }
+               } else {
+                       $final = $this->getDefault();
+
+                       $list = 'other';
+                       $text = $final;
+                       foreach ( $this->mFlatOptions as $option ) {
+                               $match = $option . $this->msg( 'colon-separator' )->inContentLanguage()->text();
+                               if ( strpos( $text, $match ) === 0 ) {
+                                       $list = $option;
+                                       $text = substr( $text, strlen( $match ) );
+                                       break;
+                               }
+                       }
+               }
+
+               return array( $final, $list, $text );
+       }
+
+       function getSize() {
+               return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
+       }
+
+       function validate( $value, $alldata ) {
+               # HTMLSelectField forces $value to be one of the options in the select
+               # field, which is not useful here.  But we do want the validation further up
+               # the chain
+               $p = parent::validate( $value[1], $alldata );
+
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               if ( isset( $this->mParams['required'] )
+                       && $this->mParams['required'] !== false
+                       && $value[1] === ''
+               ) {
+                       return $this->msg( 'htmlform-required' )->parse();
+               }
+
+               return true;
+       }
+}
diff --git a/includes/htmlform/HTMLSelectField.php b/includes/htmlform/HTMLSelectField.php
new file mode 100644 (file)
index 0000000..d2dd432
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * A select dropdown field.  Basically a wrapper for Xmlselect class
+ */
+class HTMLSelectField extends HTMLFormField {
+       function validate( $value, $alldata ) {
+               $p = parent::validate( $value, $alldata );
+
+               if ( $p !== true ) {
+                       return $p;
+               }
+
+               $validOptions = HTMLFormField::flattenOptions( $this->mParams['options'] );
+
+               if ( in_array( $value, $validOptions ) ) {
+                       return true;
+               } else {
+                       return $this->msg( 'htmlform-select-badoption' )->parse();
+               }
+       }
+
+       function getInputHTML( $value ) {
+               $select = new XmlSelect( $this->mName, $this->mID, strval( $value ) );
+
+               # If one of the options' 'name' is int(0), it is automatically selected.
+               # because PHP sucks and thinks int(0) == 'some string'.
+               # Working around this by forcing all of them to strings.
+               foreach ( $this->mParams['options'] as &$opt ) {
+                       if ( is_int( $opt ) ) {
+                               $opt = strval( $opt );
+                       }
+               }
+               unset( $opt ); # PHP keeps $opt around as a reference, which is a bit scary
+
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $select->setAttribute( 'disabled', 'disabled' );
+               }
+
+               if ( $this->mClass !== '' ) {
+                       $select->setAttribute( 'class', $this->mClass );
+               }
+
+               $select->addOptions( $this->mParams['options'] );
+
+               return $select->getHTML();
+       }
+}
diff --git a/includes/htmlform/HTMLSelectOrOtherField.php b/includes/htmlform/HTMLSelectOrOtherField.php
new file mode 100644 (file)
index 0000000..4e322d4
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * Select dropdown field, with an additional "other" textbox.
+ */
+class HTMLSelectOrOtherField extends HTMLTextField {
+       function __construct( $params ) {
+               if ( !in_array( 'other', $params['options'], true ) ) {
+                       $msg =
+                               isset( $params['other'] )
+                                       ? $params['other']
+                                       : wfMessage( 'htmlform-selectorother-other' )->text();
+                       $params['options'][$msg] = 'other';
+               }
+
+               parent::__construct( $params );
+       }
+
+       static function forceToStringRecursive( $array ) {
+               if ( is_array( $array ) ) {
+                       return array_map( array( __CLASS__, 'forceToStringRecursive' ), $array );
+               } else {
+                       return strval( $array );
+               }
+       }
+
+       function getInputHTML( $value ) {
+               $valInSelect = false;
+
+               if ( $value !== false ) {
+                       $valInSelect = in_array( $value, HTMLFormField::flattenOptions( $this->mParams['options'] ) );
+               }
+
+               $selected = $valInSelect ? $value : 'other';
+
+               $opts = self::forceToStringRecursive( $this->mParams['options'] );
+
+               $select = new XmlSelect( $this->mName, $this->mID, $selected );
+               $select->addOptions( $opts );
+
+               $select->setAttribute( 'class', 'mw-htmlform-select-or-other' );
+
+               $tbAttribs = array( 'id' => $this->mID . '-other', 'size' => $this->getSize() );
+
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $select->setAttribute( 'disabled', 'disabled' );
+                       $tbAttribs['disabled'] = 'disabled';
+               }
+
+               $select = $select->getHTML();
+
+               if ( isset( $this->mParams['maxlength'] ) ) {
+                       $tbAttribs['maxlength'] = $this->mParams['maxlength'];
+               }
+
+               if ( $this->mClass !== '' ) {
+                       $tbAttribs['class'] = $this->mClass;
+               }
+
+               $textbox = Html::input( $this->mName . '-other', $valInSelect ? '' : $value, 'text', $tbAttribs );
+
+               return "$select<br />\n$textbox";
+       }
+
+       /**
+        * @param  $request WebRequest
+        *
+        * @return String
+        */
+       function loadDataFromRequest( $request ) {
+               if ( $request->getCheck( $this->mName ) ) {
+                       $val = $request->getText( $this->mName );
+
+                       if ( $val == 'other' ) {
+                               $val = $request->getText( $this->mName . '-other' );
+                       }
+
+                       return $val;
+               } else {
+                       return $this->getDefault();
+               }
+       }
+}
diff --git a/includes/htmlform/HTMLSubmitField.php b/includes/htmlform/HTMLSubmitField.php
new file mode 100644 (file)
index 0000000..653c08c
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+
+/**
+ * Add a submit button inline in the form (as opposed to
+ * HTMLForm::addButton(), which will add it at the end).
+ */
+class HTMLSubmitField extends HTMLButtonField {
+       protected $buttonType = 'submit';
+}
diff --git a/includes/htmlform/HTMLTextAreaField.php b/includes/htmlform/HTMLTextAreaField.php
new file mode 100644 (file)
index 0000000..89e7be2
--- /dev/null
@@ -0,0 +1,47 @@
+<?php
+
+class HTMLTextAreaField extends HTMLFormField {
+       const DEFAULT_COLS = 80;
+       const DEFAULT_ROWS = 25;
+
+       function getCols() {
+               return isset( $this->mParams['cols'] ) ? $this->mParams['cols'] : static::DEFAULT_COLS;
+       }
+
+       function getRows() {
+               return isset( $this->mParams['rows'] ) ? $this->mParams['rows'] : static::DEFAULT_ROWS;
+       }
+
+       function getInputHTML( $value ) {
+               $attribs = array(
+                               'id' => $this->mID,
+                               'name' => $this->mName,
+                               'cols' => $this->getCols(),
+                               'rows' => $this->getRows(),
+                       ) + $this->getTooltipAndAccessKey();
+
+               if ( $this->mClass !== '' ) {
+                       $attribs['class'] = $this->mClass;
+               }
+
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attribs['disabled'] = 'disabled';
+               }
+
+               if ( !empty( $this->mParams['readonly'] ) ) {
+                       $attribs['readonly'] = 'readonly';
+               }
+
+               if ( isset( $this->mParams['placeholder'] ) ) {
+                       $attribs['placeholder'] = $this->mParams['placeholder'];
+               }
+
+               foreach ( array( 'required', 'autofocus' ) as $param ) {
+                       if ( isset( $this->mParams[$param] ) ) {
+                               $attribs[$param] = '';
+                       }
+               }
+
+               return Html::element( 'textarea', $attribs, $value );
+       }
+}
diff --git a/includes/htmlform/HTMLTextField.php b/includes/htmlform/HTMLTextField.php
new file mode 100644 (file)
index 0000000..fe962f4
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+
+class HTMLTextField extends HTMLFormField {
+       function getSize() {
+               return isset( $this->mParams['size'] ) ? $this->mParams['size'] : 45;
+       }
+
+       function getInputHTML( $value ) {
+               $attribs = array(
+                               'id' => $this->mID,
+                               'name' => $this->mName,
+                               'size' => $this->getSize(),
+                               'value' => $value,
+                       ) + $this->getTooltipAndAccessKey();
+
+               if ( $this->mClass !== '' ) {
+                       $attribs['class'] = $this->mClass;
+               }
+
+               if ( !empty( $this->mParams['disabled'] ) ) {
+                       $attribs['disabled'] = 'disabled';
+               }
+
+               # @todo Enforce pattern, step, required, readonly on the server side as
+               # well
+               $allowedParams = array(
+                       'min',
+                       'max',
+                       'pattern',
+                       'title',
+                       'step',
+                       'placeholder',
+                       'list',
+                       'maxlength'
+               );
+               foreach ( $allowedParams as $param ) {
+                       if ( isset( $this->mParams[$param] ) ) {
+                               $attribs[$param] = $this->mParams[$param];
+                       }
+               }
+
+               foreach ( array( 'required', 'autofocus', 'multiple', 'readonly' ) as $param ) {
+                       if ( isset( $this->mParams[$param] ) ) {
+                               $attribs[$param] = '';
+                       }
+               }
+
+               # Implement tiny differences between some field variants
+               # here, rather than creating a new class for each one which
+               # is essentially just a clone of this one.
+               if ( isset( $this->mParams['type'] ) ) {
+                       switch ( $this->mParams['type'] ) {
+                               case 'email':
+                                       $attribs['type'] = 'email';
+                                       break;
+                               case 'int':
+                                       $attribs['type'] = 'number';
+                                       break;
+                               case 'float':
+                                       $attribs['type'] = 'number';
+                                       $attribs['step'] = 'any';
+                                       break;
+                               # Pass through
+                               case 'password':
+                               case 'file':
+                                       $attribs['type'] = $this->mParams['type'];
+                                       break;
+                       }
+               }
+
+               return Html::element( 'input', $attribs );
+       }
+}
index b4f2194..321884b 100644 (file)
@@ -260,7 +260,7 @@ abstract class DatabaseInstaller {
                if ( !$status->isOK() ) {
                        throw new MWException( __METHOD__ . ': unexpected DB connection error' );
                }
-               LBFactory::setInstance( new LBFactory_Single( array(
+               LBFactory::setInstance( new LBFactorySingle( array(
                        'connection' => $status->value ) ) );
        }
 
index ac768a0..3ba91d4 100644 (file)
@@ -74,7 +74,7 @@ This program is free software; you can redistribute it and/or modify it under th
 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 <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. or [http://www.gnu.org/copyleft/gpl.html read it online].",
+You should have received <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, or [http://www.gnu.org/copyleft/gpl.html read it online].",
        'config-sidebar'                  => "* [//www.mediawiki.org MediaWiki home]
 * [//www.mediawiki.org/wiki/Help:Contents User's Guide]
 * [//www.mediawiki.org/wiki/Manual:Contents Administrator's Guide]
@@ -100,9 +100,8 @@ You should [//www.mediawiki.org/wiki/Unicode_normalization_considerations upgrad
        'config-no-db'                    => 'Could not find a suitable database driver! You need to install a database driver for PHP.
 The following database types are supported: $1.
 
-If you are on shared hosting, ask your hosting provider to install a suitable database driver.
-If you compiled PHP yourself, reconfigure it with a database client enabled, for example using <code>./configure --with-mysql</code>.
-If you installed PHP from a Debian or Ubuntu package, then you also need install the php5-mysql module.',
+If you compiled PHP yourself, reconfigure it with a database client enabled, for example, using <code>./configure --with-mysqli</code>.
+If you installed PHP from a Debian or Ubuntu package, then you also need to install, for example, the <code>php5-mysql</code> package.',
        'config-outdated-sqlite'          => "'''Warning:''' you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
        'config-no-fts3'                  => "'''Warning:''' SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
        'config-register-globals'         => "'''Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.'''
@@ -224,7 +223,7 @@ In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fiel
 This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
 In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately,
 but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
-       'config-mysql-old'                => 'MySQL $1 or later is required, you have $2.',
+       'config-mysql-old'                => 'MySQL $1 or later is required. You have $2.',
        'config-db-port'                  => 'Database port:',
        'config-db-schema'                => 'Schema for MediaWiki:',
        'config-db-schema-help'           => 'This schema will usually be fine.
@@ -243,7 +242,7 @@ That includes raw user data (email addresses, hashed passwords) as well as delet
 Consider putting the database somewhere else altogether, for example in <code>/var/lib/mediawiki/yourwiki</code>.",
        'config-oracle-def-ts'            => 'Default tablespace:',
        'config-oracle-temp-ts'           => 'Temporary tablespace:',
-       'config-type-mysql'               => 'MySQL',
+       'config-type-mysql'               => 'MySQL (or compatible)',
        'config-type-postgres'            => 'PostgreSQL',
        'config-type-sqlite'              => 'SQLite',
        'config-type-oracle'              => 'Oracle',
@@ -252,10 +251,10 @@ Consider putting the database somewhere else altogether, for example in <code>/v
 $1
 
 If you do not see the database system you are trying to use listed below, then follow the instructions linked above to enable support.',
-       'config-support-mysql'            => '* $1 is the primary target for MediaWiki and is best supported ([http://www.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])',
-       'config-support-postgres'         => '* $1 is a popular open source database system as an alternative to MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). There may be some minor outstanding bugs, and it is not recommended for use in a production environment.',
-       'config-support-sqlite'           => '* $1 is a lightweight database system which is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
-       'config-support-oracle'           => '* $1 is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
+       'config-dbsupport-mysql'          => '* [{{int:version-db-mysql-url}} MySQL] is the primary target for MediaWiki and is best supported. MediaWiki also works with [{{int:version-db-mariadb-url}} MariaDB] and [{{int:version-db-percona-url}} Percona Server], which are MySQL compatible. ([http://www.php.net/manual/en/mysqli.installation.php How to compile PHP with MySQL support])',
+       'config-dbsupport-postgres'       => '* [{{int:version-db-postgres-url}} PostgreSQL] is a popular open source database system as an alternative to MySQL. There may be some minor outstanding bugs, and it is not recommended for use in a production environment. ([http://www.php.net/manual/en/pgsql.installation.php How to compile PHP with PostgreSQL support])',
+       'config-dbsupport-sqlite'         => '* [{{int:version-db-sqlite-url}} SQLite] is a lightweight database system that is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
+       'config-dbsupport-oracle'         => '* [{{int:version-db-oracle-url}} Oracle] is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
        'config-header-mysql'             => 'MySQL settings',
        'config-header-postgres'          => 'PostgreSQL settings',
        'config-header-sqlite'            => 'SQLite settings',
@@ -277,7 +276,7 @@ Check the host, username and password and try again.',
 Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).',
        'config-db-sys-create-oracle' => 'Installer only supports using a SYSDBA account for creating a new account.',
        'config-db-sys-user-exists-oracle' => 'User account "$1" already exists. SYSDBA can only be used for creating of a new account!',
-       'config-postgres-old'             => 'PostgreSQL $1 or later is required, you have $2.',
+       'config-postgres-old'             => 'PostgreSQL $1 or later is required. You have $2.',
        'config-sqlite-name-help'         => 'Choose a name that identifies your wiki.
 Do not use spaces or hyphens.
 This will be used for the SQLite data file name.',
@@ -340,7 +339,7 @@ The account you specify here must already exist.',
 
 If your MySQL installation supports InnoDB, it is highly recommended that you choose that instead.
 If your MySQL installation does not support InnoDB, maybe it's time for an upgrade.",
-       'config-mysql-only-myisam-dep'    => "'''Warning:''' MyISAM is the only available storage engine for MySQL, which is not recommended for use with MediaWiki, because:
+       'config-mysql-only-myisam-dep'    => "'''Warning:''' MyISAM is the only available storage engine for MySQL on this machine, and this is not recommended for use with MediaWiki, because:
 * it barely supports concurrency due to table locking
 * it is more prone to corruption than other engines
 * the MediaWiki codebase does not always handle MyISAM as it should
@@ -499,7 +498,7 @@ If you do not know the port, the default is 11211.',
        'config-extensions'               => 'Extensions',
        'config-extensions-help'          => 'The extensions listed above were detected in your <code>./extensions</code> directory.
 
-They may require additional configuration, but you can enable them now',
+They may require additional configuration, but you can enable them now.',
        'config-install-alreadydone'      => "'''Warning:''' You seem to have already installed MediaWiki and are trying to install it again.
 Please proceed to the next page.",
        'config-install-begin'            => 'By pressing "{{int:config-continue}}", you will begin the installation of MediaWiki.
@@ -640,7 +639,7 @@ See also:
 * {{msg-mw|config-env-php}}',
        'config-unicode-pure-php-warning' => 'PECL is the name of a group producing standard pieces of software for PHP, and intl is the name of their library handling some aspects of internationalization.',
        'config-unicode-update-warning' => "ICU is a body producing standard software tools for support of Unicode and other internationalization aspects. This message warns the system administrator installing MediaWiki that the server's software is not up-to-date and MediaWiki will have problems handling some characters.",
-       'config-no-db' => '{{doc-important|Do not translate "<code>./configure --with-mysql</code>" and "<code>php5-mysql</code>".}}
+       'config-no-db' => '{{doc-important|Do not translate "<code>./configure --with-mysqli</code>" and "<code>php5-mysql</code>".}}
 Parameters:
 * $1 is comma separated list of database types supported by MediaWiki.',
        'config-outdated-sqlite' => 'Used as warning. Parameters:
@@ -704,12 +703,12 @@ Message shown when PHP parameter <code>suhosin.get.max_value_length</code> is be
 * $2 - error message',
        'config-sqlite-dir-help' => '{{doc-important|Do not translate <code>.htaccess</code> and <code>/var/lib/mediawiki/yourwiki</code>.}}
 Used in help box.',
-       'config-type-mysql' => '{{optional}}',
+       'config-type-mysql' => '"Or compatible" refers to several database systems that are compatible with MySQL, as explained in {{msg-mw|config-dbsupport-mysql}}, and thus also work with this choice of database type.',
        'config-type-postgres' => '{{optional}}',
        'config-type-sqlite' => '{{optional}}',
        'config-type-oracle' => '{{optional}}',
        'config-support-info' => 'Parameters:
-* $1 - a list of DBMSs that MediaWiki supports, composed with other config-type-* and config-support-* messages.',
+* $1 - a list of DBMSs that MediaWiki supports, composed with config-dbsupport-* messages.',
        'config-support-mysql' => 'Parameters:
 * $1 - a link to the MySQL home page having the anchor text "MySQL".',
        'config-support-postgres' => 'Parameters:
@@ -718,6 +717,10 @@ Used in help box.',
 * $1 - a link to the SQLite home page having the anchor text "SQLite".',
        'config-support-oracle' => 'Parameters:
 * $1 - a link to the Oracle home page, the anchor text of which is "Oracle".',
+       'config-dbsupport-mysql' => 'Used in {{msg-mw|config-support-info}}.',
+       'config-dbsupport-postgres' => 'Used in {{msg-mw|config-support-info}}.',
+       'config-dbsupport-sqlite' => 'Used in {{msg-mw|config-support-info}}.',
+       'config-dbsupport-oracle' => 'Used in {{msg-mw|config-support-info}}.',
        'config-invalid-db-server-oracle' => 'Used as error message. Parameters:
 * $1 - database server name
 See also:
index 301db14..68664c9 100644 (file)
@@ -210,6 +210,7 @@ class LocalSettingsGenerator {
                }
 
                $groupRights = '';
+               $noFollow = '';
                if ( $this->groupPermissions ) {
                        $groupRights .= "# The following permissions were set based on your choice in the installer\n";
                        foreach ( $this->groupPermissions as $group => $rightArr ) {
@@ -220,6 +221,16 @@ class LocalSettingsGenerator {
                                                wfBoolToStr( $perm ) . ";\n";
                                }
                        }
+                       if ( $this->groupPermissions['*']['edit'] === false
+                               && $this->groupPermissions['*']['createaccount'] === false
+                               && $this->groupPermissions['*']['read'] !== false ) {
+                               $noFollow = "\n# Set \$wgNoFollowLinks to true if you open up your wiki to editing by\n"
+                                       . "# the general public and wish to apply nofollow to external links as a\n"
+                                       . "# deterrent to spammers. Nofollow is not a comprehensive anti-spam solution\n"
+                                       . "# and open wikis will generally require other anti-spam measures; for more\n"
+                                       . "# information, see https://www.mediawiki.org/wiki/Manual:Combating_spam\n"
+                                       . "\$wgNoFollowLinks = false;";
+                       }
                }
 
                $serverSetting = "";
@@ -277,7 +288,7 @@ ${serverSetting}
 
 ## The relative URL path to the logo.  Make sure you change this from the default,
 ## or else you'll overwrite your logo when you upgrade!
-\$wgLogo             = \"{$this->values['wgLogo']}\";
+\$wgLogo = \"{$this->values['wgLogo']}\";
 
 ## UPO means: this is also a user preference option
 
@@ -353,6 +364,6 @@ ${serverSetting}
 # Path to the GNU diff3 utility. Used for conflict resolution.
 \$wgDiff3 = \"{$this->values['wgDiff3']}\";
 
-{$groupRights}";
+{$groupRights}{$noFollow}";
        }
 }
index 29b7a47..9dfbff8 100644 (file)
@@ -40,6 +40,7 @@ class MysqlUpdater extends DatabaseUpdater {
                        array( 'doIndexUpdate' ),
                        array( 'addTable', 'hitcounter', 'patch-hitcounter.sql' ),
                        array( 'addField', 'recentchanges', 'rc_type', 'patch-rc_type.sql' ),
+                       array( 'addIndex', 'recentchanges', 'new_name_timestamp', 'patch-rc-newindex.sql' ),
 
                        // 1.3
                        array( 'addField', 'user', 'user_real_name', 'patch-user-realname.sql' ),
@@ -242,7 +243,12 @@ class MysqlUpdater extends DatabaseUpdater {
                                'patch-iwlinks-from-title-index.sql' ),
                        array( 'addField', 'archive', 'ar_id', 'patch-archive-ar_id.sql' ),
                        array( 'addField', 'externallinks', 'el_id', 'patch-externallinks-el_id.sql' ),
+
+                       // 1.23
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_type_time',  'patch-logging_user_text_type_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_time',  'patch-logging_user_text_time_index.sql' ),
+                       array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
                );
        }
 
@@ -388,6 +394,16 @@ class MysqlUpdater extends DatabaseUpdater {
                                'wl_notificationtimestamp' => 'wl_notificationtimestamp'
                        ), array( 'NOT (wl_namespace & 1)' ), __METHOD__, 'IGNORE' );
                $this->output( "done.\n" );
+
+               $this->output( "Adding missing watchlist subject page rows... " );
+               $this->db->insertSelect( 'watchlist', 'watchlist',
+                       array(
+                               'wl_user' => 'wl_user',
+                               'wl_namespace' => 'wl_namespace & ~1',
+                               'wl_title' => 'wl_title',
+                               'wl_notificationtimestamp' => 'wl_notificationtimestamp'
+                       ), array( 'wl_namespace & 1' ), __METHOD__, 'IGNORE' );
+               $this->output( "done.\n" );
        }
 
        function doSchemaRestructuring() {
index 113dce6..9e692ea 100644 (file)
@@ -91,12 +91,12 @@ class OracleInstaller extends DatabaseInstaller {
 
        public function submitConnectForm() {
                // Get variables from the request
-               $newValues = $this->setVarsFromRequest(
+               $newValues = $this->setVarsFromRequest( array(
                        'wgDBserver',
                        'wgDBprefix',
                        'wgDBuser',
                        'wgDBpassword'
-               );
+               ) );
                $this->parent->setVar( 'wgDBname', $this->getVar( 'wgDBuser' ) );
 
                // Validate them
index 7b6f49c..88e5fbd 100644 (file)
@@ -93,6 +93,10 @@ class OracleUpdater extends DatabaseUpdater {
                        array( 'modifyField', 'user_former_groups', 'ufg_group',
                                'patch-ufg_group-length-increase-255.sql' ),
 
+                       //1.23
+                       array( 'addIndex', 'logging', 'i06',  'patch-logging_user_text_type_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'i07',  'patch-logging_user_text_time_index.sql' ),
+
                        // KEEP THIS AT THE BOTTOM!!
                        array( 'doRebuildDuplicateFunction' ),
 
index cea4d78..fa58a62 100644 (file)
@@ -259,6 +259,8 @@ class PostgresUpdater extends DatabaseUpdater {
                        array( 'addPgIndex', 'job', 'job_cmd_token', '(job_cmd, job_token, job_random)' ),
                        array( 'addPgIndex', 'job', 'job_cmd_token_id', '(job_cmd, job_token, job_id)' ),
                        array( 'addPgIndex', 'filearchive', 'fa_sha1', '(fa_sha1)' ),
+                       array( 'addPgIndex', 'logging', 'logging_user_text_type_time', '(log_user_text, log_type, log_timestamp)' ),
+                       array( 'addPgIndex', 'logging', 'logging_user_text_time', '(log_user_text, log_timestamp)' ),
 
                        array( 'checkIndex', 'pagelink_unique', array(
                                array( 'pl_from', 'int4_ops', 'btree', 0 ),
@@ -398,8 +400,9 @@ class PostgresUpdater extends DatabaseUpdater {
                        # end
                        array( 'tsearchFixes' ),
 
-                       // 1.22
-                       array( 'addPgField', 'recentchanges', 'rc_source',            "TEXT NOT NULL DEFAULT ''" ),
+                       // 1.23
+                       array( 'addPgField', 'recentchanges', 'rc_source', "TEXT NOT NULL DEFAULT ''" ),
+                       array( 'addPgField', 'page', 'page_links_updated', "TIMESTAMPTZ NULL" ),
                );
        }
 
index 954c298..3db3758 100644 (file)
@@ -115,12 +115,17 @@ class SqliteUpdater extends DatabaseUpdater {
                        array( 'addIndex', 'page_props', 'pp_propname_page',
                                'patch-page_props-propname-page-index.sql' ),
                        array( 'addIndex', 'image', 'img_media_mime', 'patch-img_media_mime-index.sql' ),
+
+                       // 1.22
                        array( 'addIndex', 'iwlinks', 'iwl_prefix_from_title', 'patch-iwlinks-from-title-index.sql' ),
                        array( 'addField', 'archive', 'ar_id', 'patch-archive-ar_id.sql' ),
                        array( 'addField', 'externallinks', 'el_id', 'patch-externallinks-el_id.sql' ),
 
-                       // 1.22
+                       // 1.23
                        array( 'addField', 'recentchanges', 'rc_source', 'patch-rc_source.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_type_time',  'patch-logging_user_text_type_time_index.sql' ),
+                       array( 'addIndex', 'logging', 'log_user_text_time',  'patch-logging_user_text_time_index.sql' ),
+                       array( 'addField', 'page', 'page_links_updated', 'patch-page_links_updated.sql' ),
                );
        }
 
index 00a4ff8..25634ba 100644 (file)
@@ -117,7 +117,8 @@ class WebInstallerOutput {
                // and loaded as one file.
                $moduleNames = array(
                        'mediawiki.legacy.shared',
-                       'skins.vector',
+                       'skins.common.interface',
+                       'skins.vector.styles',
                        'mediawiki.legacy.config',
                );
 
index 1c95d9a..d4b3d65 100644 (file)
@@ -454,7 +454,9 @@ class WebInstaller_Welcome extends WebInstallerPage {
 }
 
 class WebInstaller_DBConnect extends WebInstallerPage {
-
+       /**
+        * @return string|void When string, "skip" or "continue"
+        */
        public function execute() {
                if ( $this->getVar( '_ExistingDBSettings' ) ) {
                        return 'skip';
@@ -479,12 +481,11 @@ class WebInstaller_DBConnect extends WebInstallerPage {
                $settings = '';
                $defaultType = $this->getVar( 'wgDBtype' );
 
-               // Messages: config-support-mysql, config-support-postgres, config-support-oracle,
-               // config-support-sqlite
+               // Messages: config-dbsupport-mysql, config-dbsupport-postgres, config-dbsupport-oracle,
+               // config-dbsupport-sqlite
                $dbSupport = '';
-               foreach ( $this->parent->getDBTypes() as $type ) {
-                       $link = DatabaseBase::factory( $type )->getSoftwareLink();
-                       $dbSupport .= wfMessage( "config-support-$type", $link )->plain() . "\n";
+               foreach ( Installer::getDBTypes() as $type ) {
+                       $dbSupport .= wfMessage( "config-dbsupport-$type" )->plain() . "\n";
                }
                $this->addHTML( $this->parent->getInfoBox(
                        wfMessage( 'config-support-info', trim( $dbSupport ) )->text() ) );
index 3c237bf..09283f2 100644 (file)
@@ -31,7 +31,25 @@ class Interwiki {
        protected static $smCache = array();
        const CACHE_LIMIT = 100; // 0 means unlimited, any other value is max number of entries.
 
-       protected $mPrefix, $mURL, $mAPI, $mWikiID, $mLocal, $mTrans;
+       /** @var string The interwiki prefix, (e.g. "Meatball", or the language prefix "de") */
+       protected $mPrefix;
+
+       /** @var string The URL of the wiki, with "$1" as a placeholder for an article name. */
+       protected $mURL;
+
+       /** @var string The URL of the file api.php  */
+       protected $mAPI;
+
+       /** @var string The name of the database (for a connection to be established
+        *    with wfGetLB( 'wikiid' ))
+        */
+       protected $mWikiID;
+
+       /** @var bool whether the wiki is in this project */
+       protected $mLocal;
+
+       /** @var bool Whether interwiki transclusions are allowed */
+       protected $mTrans;
 
        public function __construct( $prefix = null, $url = '', $api = '', $wikiId = '', $local = 0,
                $trans = 0
@@ -52,6 +70,7 @@ class Interwiki {
         */
        public static function isValidInterwiki( $prefix ) {
                $result = self::fetch( $prefix );
+
                return (bool)$result;
        }
 
@@ -63,13 +82,16 @@ class Interwiki {
         */
        public static function fetch( $prefix ) {
                global $wgContLang;
+
                if ( $prefix == '' ) {
                        return null;
                }
+
                $prefix = $wgContLang->lc( $prefix );
                if ( isset( self::$smCache[$prefix] ) ) {
                        return self::$smCache[$prefix];
                }
+
                global $wgInterwikiCache;
                if ( $wgInterwikiCache ) {
                        $iw = Interwiki::getInterwikiCached( $prefix );
@@ -79,11 +101,14 @@ class Interwiki {
                                $iw = false;
                        }
                }
+
                if ( self::CACHE_LIMIT && count( self::$smCache ) >= self::CACHE_LIMIT ) {
                        reset( self::$smCache );
                        unset( self::$smCache[key( self::$smCache )] );
                }
+
                self::$smCache[$prefix] = $iw;
+
                return $iw;
        }
 
@@ -107,6 +132,7 @@ class Interwiki {
                } else {
                        $s = false;
                }
+
                return $s;
        }
 
@@ -160,12 +186,12 @@ class Interwiki {
         * Load the interwiki, trying first memcached then the DB
         *
         * @param string $prefix The interwiki prefix
-        * @return bool If $prefix is valid
+        * @return Interwiki|bool Interwiki if $prefix is valid, otherwise false
         */
        protected static function load( $prefix ) {
                global $wgMemc, $wgInterwikiExpiry;
 
-               $iwData = false;
+               $iwData = array();
                if ( !wfRunHooks( 'InterwikiLoadPrefix', array( $prefix, &$iwData ) ) ) {
                        return Interwiki::loadFromArray( $iwData );
                }
@@ -174,11 +200,13 @@ class Interwiki {
                        $key = wfMemcKey( 'interwiki', $prefix );
                        $iwData = $wgMemc->get( $key );
                        if ( $iwData === '!NONEXISTENT' ) {
-                               return false; // negative cache hit
+                               // negative cache hit
+                               return false;
                        }
                }
 
-               if ( $iwData && is_array( $iwData ) ) { // is_array is hack for old keys
+               // is_array is hack for old keys
+               if ( $iwData && is_array( $iwData ) ) {
                        $iw = Interwiki::loadFromArray( $iwData );
                        if ( $iw ) {
                                return $iw;
@@ -187,8 +215,13 @@ class Interwiki {
 
                $db = wfGetDB( DB_SLAVE );
 
-               $row = $db->fetchRow( $db->select( 'interwiki', self::selectFields(), array( 'iw_prefix' => $prefix ),
-                       __METHOD__ ) );
+               $row = $db->fetchRow( $db->select(
+                       'interwiki',
+                       self::selectFields(),
+                       array( 'iw_prefix' => $prefix ),
+                       __METHOD__
+               ) );
+
                $iw = Interwiki::loadFromArray( $row );
                if ( $iw ) {
                        $mc = array(
@@ -198,11 +231,13 @@ class Interwiki {
                                'iw_trans' => $iw->mTrans
                        );
                        $wgMemc->add( $key, $mc, $wgInterwikiExpiry );
+
                        return $iw;
-               } else {
-                       $wgMemc->add( $key, '!NONEXISTENT', $wgInterwikiExpiry ); // negative cache hit
                }
 
+               // negative cache hit
+               $wgMemc->add( $key, '!NONEXISTENT', $wgInterwikiExpiry );
+
                return false;
        }
 
@@ -223,6 +258,7 @@ class Interwiki {
 
                        return $iw;
                }
+
                return false;
        }
 
@@ -318,10 +354,12 @@ class Interwiki {
                        self::selectFields(),
                        $where, __METHOD__, array( 'ORDER BY' => 'iw_prefix' )
                );
+
                $retval = array();
                foreach ( $res as $row ) {
                        $retval[] = (array)$row;
                }
+
                return $retval;
        }
 
@@ -337,9 +375,9 @@ class Interwiki {
 
                if ( $wgInterwikiCache ) {
                        return self::getAllPrefixesCached( $local );
-               } else {
-                       return self::getAllPrefixesDB( $local );
                }
+
+               return self::getAllPrefixesDB( $local );
        }
 
        /**
@@ -356,6 +394,7 @@ class Interwiki {
                if ( $title !== null ) {
                        $url = str_replace( "$1", wfUrlencode( $title ), $url );
                }
+
                return $url;
        }
 
@@ -404,6 +443,7 @@ class Interwiki {
         */
        public function getName() {
                $msg = wfMessage( 'interwiki-name-' . $this->mPrefix )->inContentLanguage();
+
                return !$msg->exists() ? '' : $msg;
        }
 
@@ -414,6 +454,7 @@ class Interwiki {
         */
        public function getDescription() {
                $msg = wfMessage( 'interwiki-desc-' . $this->mPrefix )->inContentLanguage();
+
                return !$msg->exists() ? '' : $msg;
        }
 
index 3f44a91..067ede1 100644 (file)
@@ -28,9 +28,6 @@
  * @ingroup JobQueue
  */
 abstract class Job {
-       /** @var int Job identifier */
-       public $id;
-
        /** @var string */
        public $command;
 
@@ -69,16 +66,15 @@ abstract class Job {
         * @param string $command Job command
         * @param Title $title Associated title
         * @param array|bool $params Job parameters
-        * @param int $id Job identifier
         * @throws MWException
         * @return Job
         */
-       public static function factory( $command, Title $title, $params = false, $id = 0 ) {
+       public static function factory( $command, Title $title, $params = false ) {
                global $wgJobClasses;
                if ( isset( $wgJobClasses[$command] ) ) {
                        $class = $wgJobClasses[$command];
 
-                       return new $class( $title, $params, $id );
+                       return new $class( $title, $params );
                }
                throw new MWException( "Invalid job command `{$command}`" );
        }
@@ -145,26 +141,16 @@ abstract class Job {
         * @param $command
         * @param $title
         * @param $params array|bool
-        * @param $id int
         */
-       public function __construct( $command, $title, $params = false, $id = 0 ) {
+       public function __construct( $command, $title, $params = false ) {
                $this->command = $command;
                $this->title = $title;
                $this->params = $params;
-               $this->id = $id;
 
                // expensive jobs may set this to true
                $this->removeDuplicates = false;
        }
 
-       /**
-        * @return int May be 0 for jobs stored outside the DB
-        * @deprecated since 1.22
-        */
-       public function getId() {
-               return $this->id;
-       }
-
        /**
         * @return string
         */
@@ -211,6 +197,15 @@ abstract class Job {
                return true;
        }
 
+       /**
+        * @return integer Number of actually "work items" handled in this job
+        * @see $wgJobBackoffThrottling
+        * @since 1.23
+        */
+       public function workItemCount() {
+               return 1;
+       }
+
        /**
         * Subclasses may need to override this to make duplication detection work.
         * The resulting map conveys everything that makes the job unique. This is
@@ -241,7 +236,9 @@ abstract class Job {
        /**
         * @see JobQueue::deduplicateRootJob()
         * @param string $key A key that identifies the task
-        * @return array
+        * @return array Map of:
+        *   - rootJobSignature : hash (e.g. SHA1) that identifies the task
+        *   - rootJobTimestamp : TS_MW timestamp of this instance of the task
         * @since 1.21
         */
        public static function newRootJobParams( $key ) {
index b795695..e7a269a 100644 (file)
@@ -324,7 +324,6 @@ class JobQueueDB extends JobQueue {
                                $job = Job::factory( $row->job_cmd, $title,
                                        self::extractBlob( $row->job_params ), $row->job_id );
                                $job->metadata['id'] = $row->job_id;
-                               $job->id = $row->job_id; // XXX: work around broken subclasses
                                break; // done
                        } while ( true );
                } catch ( DBError $e ) {
@@ -359,7 +358,7 @@ class JobQueueDB extends JobQueue {
                                // Instead, this uses job_random to pick a row (possibly checking both directions).
                                $ineq = $gte ? '>=' : '<=';
                                $dir = $gte ? 'ASC' : 'DESC';
-                               $row = $dbw->selectRow( 'job', '*', // find a random job
+                               $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
                                        array(
                                                'job_cmd' => $this->type,
                                                'job_token' => '', // unclaimed
@@ -376,7 +375,7 @@ class JobQueueDB extends JobQueue {
                                // Bug 42614: "ORDER BY job_random" with a job_random inequality causes high CPU
                                // in MySQL if there are many rows for some reason. This uses a small OFFSET
                                // instead of job_random for reducing excess claim retries.
-                               $row = $dbw->selectRow( 'job', '*', // find a random job
+                               $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
                                        array(
                                                'job_cmd' => $this->type,
                                                'job_token' => '', // unclaimed
@@ -460,7 +459,7 @@ class JobQueueDB extends JobQueue {
                        }
                        // Fetch any row that we just reserved...
                        if ( $dbw->affectedRows() ) {
-                               $row = $dbw->selectRow( 'job', '*',
+                               $row = $dbw->selectRow( 'job', self::selectFields(),
                                        array( 'job_cmd' => $this->type, 'job_token' => $uuid ), __METHOD__
                                );
                                if ( !$row ) { // raced out by duplicate job removal
@@ -590,17 +589,15 @@ class JobQueueDB extends JobQueue {
                $dbr = $this->getSlaveDB();
                try {
                        return new MappedIterator(
-                               $dbr->select( 'job', '*',
+                               $dbr->select( 'job', self::selectFields(),
                                        array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
                                function ( $row ) use ( $dbr ) {
                                        $job = Job::factory(
                                                $row->job_cmd,
                                                Title::makeTitle( $row->job_namespace, $row->job_title ),
-                                               strlen( $row->job_params ) ? unserialize( $row->job_params ) : false,
-                                               $row->job_id
+                                               strlen( $row->job_params ) ? unserialize( $row->job_params ) : false
                                        );
                                        $job->metadata['id'] = $row->job_id;
-                                       $job->id = $row->job_id; // XXX: work around broken subclasses
                                        return $job;
                                }
                        );
@@ -827,4 +824,25 @@ class JobQueueDB extends JobQueue {
        protected function throwDBException( DBError $e ) {
                throw new JobQueueError( get_class( $e ) . ": " . $e->getMessage() );
        }
+
+       /**
+        * Return the list of job fields that should be selected.
+        * @since 1.23
+        * @return array
+        */
+       public static function selectFields() {
+               return array(
+                       'job_id',
+                       'job_cmd',
+                       'job_namespace',
+                       'job_title',
+                       'job_timestamp',
+                       'job_params',
+                       'job_random',
+                       'job_attempts',
+                       'job_token',
+                       'job_token_timestamp',
+                       'job_sha1',
+               );
+       }
 }
index 589bed6..9502148 100644 (file)
@@ -150,21 +150,20 @@ class JobQueueFederated extends JobQueue {
                        return false;
                }
 
+               $empty = true;
+               $failed = 0;
                foreach ( $this->partitionQueues as $queue ) {
                        try {
-                               if ( !$queue->doIsEmpty() ) {
-                                       $this->cache->add( $key, 'false', self::CACHE_TTL_LONG );
-
-                                       return false;
-                               }
+                               $empty = $empty && $queue->doIsEmpty();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
-               $this->cache->add( $key, 'true', self::CACHE_TTL_LONG );
-
-               return true;
+               $this->cache->add( $key, $empty ? 'true' : 'false', self::CACHE_TTL_LONG );
+               return $empty;
        }
 
        protected function doGetSize() {
@@ -196,14 +195,16 @@ class JobQueueFederated extends JobQueue {
                        return $count;
                }
 
-               $count = 0;
+               $failed = 0;
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $count += $queue->$method();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                $this->cache->set( $key, $count, self::CACHE_TTL_SHORT );
 
@@ -275,7 +276,7 @@ class JobQueueFederated extends JobQueue {
                        } else {
                                $partitionRing = $partitionRing->newWithoutLocation( $partition ); // blacklist
                                if ( !$partitionRing ) {
-                                       throw new JobQueueError( "Could not insert job(s), all partitions are down." );
+                                       throw new JobQueueError( "Could not insert job(s), no partitions available." );
                                }
                                $jobsLeft = array_merge( $jobsLeft, $jobBatch ); // not inserted
                        }
@@ -297,7 +298,7 @@ class JobQueueFederated extends JobQueue {
                        } else {
                                $partitionRing = $partitionRing->newWithoutLocation( $partition ); // blacklist
                                if ( !$partitionRing ) {
-                                       throw new JobQueueError( "Could not insert job(s), all partitions are down." );
+                                       throw new JobQueueError( "Could not insert job(s), no partitions available." );
                                }
                                $jobsLeft = array_merge( $jobsLeft, $jobBatch ); // not inserted
                        }
@@ -316,6 +317,7 @@ class JobQueueFederated extends JobQueue {
 
                $partitionsTry = $this->partitionMap; // (partition => weight)
 
+               $failed = 0;
                while ( count( $partitionsTry ) ) {
                        $partition = ArrayUtils::pickRandom( $partitionsTry );
                        if ( $partition === false ) {
@@ -327,8 +329,9 @@ class JobQueueFederated extends JobQueue {
                        try {
                                $job = $queue->pop();
                        } catch ( JobQueueError $e ) {
-                               $job = false;
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
+                               $job = false;
                        }
                        if ( $job ) {
                                $job->metadata['QueuePartition'] = $partition;
@@ -338,6 +341,7 @@ class JobQueueFederated extends JobQueue {
                                unset( $partitionsTry[$partition] ); // blacklist partition
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                $this->cache->set( $key, 'true', JobQueueDB::CACHE_TTL_LONG );
 
@@ -381,25 +385,32 @@ class JobQueueFederated extends JobQueue {
        }
 
        protected function doDelete() {
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $queue->doDelete();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
+               return true;
        }
 
        protected function doWaitForBackups() {
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
                                $queue->waitForBackups();
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
        }
 
        protected function doGetPeriodicTasks() {
@@ -463,6 +474,7 @@ class JobQueueFederated extends JobQueue {
        protected function doGetSiblingQueuesWithJobs( array $types ) {
                $result = array();
 
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
@@ -476,16 +488,18 @@ class JobQueueFederated extends JobQueue {
                                        break; // short-circuit
                                }
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                return array_values( $result );
        }
 
        protected function doGetSiblingQueueSizes( array $types ) {
                $result = array();
-
+               $failed = 0;
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
                        try {
@@ -498,13 +512,28 @@ class JobQueueFederated extends JobQueue {
                                        return null; // not supported on all partitions; bail
                                }
                        } catch ( JobQueueError $e ) {
+                               ++$failed;
                                MWExceptionHandler::logException( $e );
                        }
                }
+               $this->throwErrorIfAllPartitionsDown( $failed );
 
                return $result;
        }
 
+       /**
+        * Throw an error if no partitions available
+        *
+        * @param int $down The number of up partitions down
+        * @return void
+        * @throws JobQueueError
+        */
+       protected function throwErrorIfAllPartitionsDown( $down ) {
+               if ( $down >= count( $this->partitionQueues ) ) {
+                       throw new JobQueueError( 'No queue partitions available.' );
+               }
+       }
+
        public function setTestingPrefix( $key ) {
                /** @var JobQueue $queue */
                foreach ( $this->partitionQueues as $queue ) {
index a3ec8a7..d71df15 100644 (file)
@@ -44,7 +44,6 @@ class JobQueueGroup {
        const TYPE_ANY = 2; // integer; any job
 
        const USE_CACHE = 1; // integer; use process or persistent cache
-       const USE_PRIORITY = 2; // integer; respect deprioritization
 
        const PROC_CACHE_TTL = 15; // integer; seconds
 
@@ -149,21 +148,21 @@ class JobQueueGroup {
         * This pops a job off a queue as specified by $wgJobTypeConf and
         * updates the aggregate job queue information cache as needed.
         *
-        * @param int|string $qtype JobQueueGroup::TYPE_DEFAULT or type string
+        * @param int|string $qtype JobQueueGroup::TYPE_* constant or job type string
         * @param int $flags Bitfield of JobQueueGroup::USE_* constants
+        * @param array $blacklist List of job types to ignore
         * @return Job|bool Returns false on failure
         */
-       public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0 ) {
+       public function pop( $qtype = self::TYPE_DEFAULT, $flags = 0, array $blacklist = array() ) {
+               $job = false;
+
                if ( is_string( $qtype ) ) { // specific job type
-                       if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $qtype ) ) {
-                               return false; // back off
-                       }
-                       $job = $this->get( $qtype )->pop();
-                       if ( !$job ) {
-                               JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
+                       if ( !in_array( $qtype, $blacklist ) ) {
+                               $job = $this->get( $qtype )->pop();
+                               if ( !$job ) {
+                                       JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $qtype );
+                               }
                        }
-
-                       return $job;
                } else { // any job in the "default" jobs types
                        if ( $flags & self::USE_CACHE ) {
                                if ( !$this->cache->has( 'queues-ready', 'list', self::PROC_CACHE_TTL ) ) {
@@ -177,23 +176,22 @@ class JobQueueGroup {
                        if ( $qtype == self::TYPE_DEFAULT ) {
                                $types = array_intersect( $types, $this->getDefaultQueueTypes() );
                        }
+
+                       $types = array_diff( $types, $blacklist ); // avoid selected types
                        shuffle( $types ); // avoid starvation
 
                        foreach ( $types as $type ) { // for each queue...
-                               if ( ( $flags & self::USE_PRIORITY ) && $this->isQueueDeprioritized( $type ) ) {
-                                       continue; // back off
-                               }
                                $job = $this->get( $type )->pop();
                                if ( $job ) { // found
-                                       return $job;
+                                       break;
                                } else { // not found
                                        JobQueueAggregator::singleton()->notifyQueueEmpty( $this->wiki, $type );
                                        $this->cache->clear( 'queues-ready' );
                                }
                        }
-
-                       return false; // no jobs found
                }
+
+               return $job;
        }
 
        /**
@@ -330,32 +328,6 @@ class JobQueueGroup {
                return $this->coalescedQueues;
        }
 
-       /**
-        * Check if jobs should not be popped of a queue right now.
-        * This is only used for performance, such as to avoid spamming
-        * the queue with many sub-jobs before they actually get run.
-        *
-        * @param string $type
-        * @return bool
-        */
-       public function isQueueDeprioritized( $type ) {
-               if ( $this->cache->has( 'isDeprioritized', $type, 5 ) ) {
-                       return $this->cache->get( 'isDeprioritized', $type );
-               }
-               if ( $type === 'refreshLinks2' ) {
-                       // Don't keep converting refreshLinksPartition => refreshLinks jobs if the
-                       // later jobs have not been done yet. This helps throttle queue spam.
-                       // @TODO: this is mostly a WMF-specific hack and should be removed when
-                       // refreshLinks2 jobs are drained.
-                       $deprioritized = !$this->get( 'refreshLinks' )->getSize() > 10000;
-                       $this->cache->set( 'isDeprioritized', $type, $deprioritized );
-
-                       return $deprioritized;
-               }
-
-               return false;
-       }
-
        /**
         * Execute any due periodic queue maintenance tasks for all queues.
         *
@@ -392,6 +364,10 @@ class JobQueueGroup {
                                        }
                                }
                        }
+                       // The tasks may have recycled jobs or release delayed jobs into the queue
+                       if ( isset( $tasksRun[$type] ) && !$queue->isEmpty() ) {
+                               JobQueueAggregator::singleton()->notifyQueueNonEmpty( $this->wiki, $type );
+                       }
                }
 
                $wgMemc->merge( $key, function ( $cache, $key, $lastRuns ) use ( $tasksRun ) {
index e8c475d..9b9fe2d 100644 (file)
@@ -251,23 +251,24 @@ class JobQueueRedis extends JobQueue {
                }
                static $script =
 <<<LUA
+               local kUnclaimed, kSha1ById, kIdBySha1, kDelayed, kData = unpack(KEYS)
                if #ARGV % 4 ~= 0 then return redis.error_reply('Unmatched arguments') end
                local pushed = 0
                for i = 1,#ARGV,4 do
                        local id,sha1,rtimestamp,blob = ARGV[i],ARGV[i+1],ARGV[i+2],ARGV[i+3]
-                       if sha1 == '' or redis.call('hExists',KEYS[3],sha1) == 0 then
+                       if sha1 == '' or redis.call('hExists',kIdBySha1,sha1) == 0 then
                                if 1*rtimestamp > 0 then
                                        -- Insert into delayed queue (release time as score)
-                                       redis.call('zAdd',KEYS[4],rtimestamp,id)
+                                       redis.call('zAdd',kDelayed,rtimestamp,id)
                                else
                                        -- Insert into unclaimed queue
-                                       redis.call('lPush',KEYS[1],id)
+                                       redis.call('lPush',kUnclaimed,id)
                                end
                                if sha1 ~= '' then
-                                       redis.call('hSet',KEYS[2],id,sha1)
-                                       redis.call('hSet',KEYS[3],sha1,id)
+                                       redis.call('hSet',kSha1ById,id,sha1)
+                                       redis.call('hSet',kIdBySha1,sha1,id)
                                end
-                               redis.call('hSet',KEYS[5],id,blob)
+                               redis.call('hSet',kData,id,blob)
                                pushed = pushed + 1
                        end
                end
@@ -343,16 +344,17 @@ LUA;
        protected function popAndDeleteBlob( RedisConnRef $conn ) {
                static $script =
 <<<LUA
+               local kUnclaimed, kSha1ById, kIdBySha1, kData = unpack(KEYS)
                -- Pop an item off the queue
-               local id = redis.call('rpop',KEYS[1])
+               local id = redis.call('rpop',kUnclaimed)
                if not id then return false end
                -- Get the job data and remove it
-               local item = redis.call('hGet',KEYS[4],id)
-               redis.call('hDel',KEYS[4],id)
+               local item = redis.call('hGet',kData,id)
+               redis.call('hDel',kData,id)
                -- Allow new duplicates of this job
-               local sha1 = redis.call('hGet',KEYS[2],id)
-               if sha1 then redis.call('hDel',KEYS[3],sha1) end
-               redis.call('hDel',KEYS[2],id)
+               local sha1 = redis.call('hGet',kSha1ById,id)
+               if sha1 then redis.call('hDel',kIdBySha1,sha1) end
+               redis.call('hDel',kSha1ById,id)
                -- Return the job data
                return item
 LUA;
@@ -375,17 +377,18 @@ LUA;
        protected function popAndAcquireBlob( RedisConnRef $conn ) {
                static $script =
 <<<LUA
+               local kUnclaimed, kSha1ById, kIdBySha1, kClaimed, kAttempts, kData = unpack(KEYS)
                -- Pop an item off the queue
-               local id = redis.call('rPop',KEYS[1])
+               local id = redis.call('rPop',kUnclaimed)
                if not id then return false end
                -- Allow new duplicates of this job
-               local sha1 = redis.call('hGet',KEYS[2],id)
-               if sha1 then redis.call('hDel',KEYS[3],sha1) end
-               redis.call('hDel',KEYS[2],id)
+               local sha1 = redis.call('hGet',kSha1ById,id)
+               if sha1 then redis.call('hDel',kIdBySha1,sha1) end
+               redis.call('hDel',kSha1ById,id)
                -- Mark the jobs as claimed and return it
-               redis.call('zAdd',KEYS[4],ARGV[1],id)
-               redis.call('hIncrBy',KEYS[5],id,1)
-               return redis.call('hGet',KEYS[6],id)
+               redis.call('zAdd',kClaimed,ARGV[1],id)
+               redis.call('hIncrBy',kAttempts,id,1)
+               return redis.call('hGet',kData,id)
 LUA;
                return $conn->luaEval( $script,
                        array(
@@ -416,11 +419,12 @@ LUA;
                        try {
                                static $script =
 <<<LUA
+                               local kClaimed, kAttempts, kData = unpack(KEYS)
                                -- Unmark the job as claimed
-                               redis.call('zRem',KEYS[1],ARGV[1])
-                               redis.call('hDel',KEYS[2],ARGV[1])
+                               redis.call('zRem',kClaimed,ARGV[1])
+                               redis.call('hDel',kAttempts,ARGV[1])
                                -- Delete the job data itself
-                               return redis.call('hDel',KEYS[3],ARGV[1])
+                               return redis.call('hDel',kData,ARGV[1])
 LUA;
                                $res = $conn->luaEval( $script,
                                        array(
@@ -636,12 +640,13 @@ LUA;
                try {
                        static $script =
 <<<LUA
+                       local kDelayed, kUnclaimed = unpack(KEYS)
                        -- Get the list of ready delayed jobs, sorted by readiness
-                       local ids = redis.call('zRangeByScore',KEYS[1],0,ARGV[1])
+                       local ids = redis.call('zRangeByScore',kDelayed,0,ARGV[1])
                        -- Migrate the jobs from the "delayed" set to the "unclaimed" list
                        for k,id in ipairs(ids) do
-                               redis.call('lPush',KEYS[2],id)
-                               redis.call('zRem',KEYS[1],id)
+                               redis.call('lPush',kUnclaimed,id)
+                               redis.call('zRem',kDelayed,id)
                        end
                        return #ids
 LUA;
@@ -680,33 +685,34 @@ LUA;
                        $now = time();
                        static $script =
 <<<LUA
+                       local kClaimed, kAttempts, kUnclaimed, kData, kAbandoned = unpack(KEYS)
                        local released,abandoned,pruned = 0,0,0
                        -- Get all non-dead jobs that have an expired claim on them.
                        -- The score for each item is the last claim timestamp (UNIX).
-                       local staleClaims = redis.call('zRangeByScore',KEYS[1],0,ARGV[1])
+                       local staleClaims = redis.call('zRangeByScore',kClaimed,0,ARGV[1])
                        for k,id in ipairs(staleClaims) do
-                               local timestamp = redis.call('zScore',KEYS[1],id)
-                               local attempts = redis.call('hGet',KEYS[2],id)
+                               local timestamp = redis.call('zScore',kClaimed,id)
+                               local attempts = redis.call('hGet',kAttempts,id)
                                if attempts < ARGV[3] then
                                        -- Claim expired and retries left: re-enqueue the job
-                                       redis.call('lPush',KEYS[3],id)
-                                       redis.call('hIncrBy',KEYS[2],id,1)
+                                       redis.call('lPush',kUnclaimed,id)
+                                       redis.call('hIncrBy',kAttempts,id,1)
                                        released = released + 1
                                else
                                        -- Claim expired and no retries left: mark the job as dead
-                                       redis.call('zAdd',KEYS[5],timestamp,id)
+                                       redis.call('zAdd',kAbandoned,timestamp,id)
                                        abandoned = abandoned + 1
                                end
-                               redis.call('zRem',KEYS[1],id)
+                               redis.call('zRem',kClaimed,id)
                        end
                        -- Get all of the dead jobs that have been marked as dead for too long.
                        -- The score for each item is the last claim timestamp (UNIX).
-                       local deadClaims = redis.call('zRangeByScore',KEYS[5],0,ARGV[2])
+                       local deadClaims = redis.call('zRangeByScore',kAbandoned,0,ARGV[2])
                        for k,id in ipairs(deadClaims) do
                                -- Stale and out of retries: remove any traces of the job
-                               redis.call('zRem',KEYS[5],id)
-                               redis.call('hDel',KEYS[2],id)
-                               redis.call('hDel',KEYS[4],id)
+                               redis.call('zRem',kAbandoned,id)
+                               redis.call('hDel',kAttempts,id)
+                               redis.call('hDel',kData,id)
                                pruned = pruned + 1
                        end
                        return {released,abandoned,pruned}
@@ -770,7 +776,7 @@ LUA;
                        'title' => $job->getTitle()->getDBkey(),
                        'params' => $job->getParams(),
                        // Some jobs cannot run until a "release timestamp"
-                       'rtimestamp' => $job->getReleaseTimestamp() ? : 0,
+                       'rtimestamp' => $job->getReleaseTimestamp() ?: 0,
                        // Additional job metadata
                        'uuid' => UIDGenerator::newRawUUIDv4( UIDGenerator::QUICK_RAND ),
                        'sha1' => $job->ignoreDuplicates()
index 057a587..c654933 100644 (file)
@@ -104,10 +104,12 @@ class JobQueueAggregatorRedis extends JobQueueAggregator {
                                }
                        } else { // cache miss
                                // Avoid duplicated effort
+                               $rand = wfRandomString( 32 );
                                $conn->multi( Redis::MULTI );
-                               $conn->setnx( $this->getReadyQueueKey() . ":lock", 1 );
-                               $conn->expire( $this->getReadyQueueKey() . ":lock", 3600 );
+                               $conn->setex( "{$rand}:lock", 3600, 1 );
+                               $conn->renamenx( "{$rand}:lock", $this->getReadyQueueKey() . ":lock" );
                                if ( $conn->exec() !== array( true, true ) ) { // lock
+                                       $conn->delete( "{$rand}:lock" );
                                        return array(); // already in progress
                                }
 
index eff16b9..19b0558 100644 (file)
@@ -27,8 +27,8 @@
  * @ingroup Upload
  */
 class AssembleUploadChunksJob extends Job {
-       public function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'AssembleUploadChunks', $title, $params, $id );
+       public function __construct( $title, $params ) {
+               parent::__construct( 'AssembleUploadChunks', $title, $params );
                $this->removeDuplicates = true;
        }
 
index f5f0d63..94b56ef 100644 (file)
@@ -86,8 +86,8 @@ class DoubleRedirectJob extends Job {
         * @param array|bool $params
         * @param int $id
         */
-       function __construct( $title, $params = false, $id = 0 ) {
-               parent::__construct( 'fixDoubleRedirect', $title, $params, $id );
+       function __construct( $title, $params = false ) {
+               parent::__construct( 'fixDoubleRedirect', $title, $params );
                $this->reason = $params['reason'];
                $this->redirTitle = Title::newFromText( $params['redirTitle'] );
        }
@@ -197,7 +197,7 @@ class DoubleRedirectJob extends Job {
                        }
                        $seenTitles[$titleText] = true;
 
-                       if ( $title->getInterwiki() ) {
+                       if ( $title->isExternal() ) {
                                // If the target is interwiki, we have to break early (bug 40352).
                                // Otherwise it will look up a row in the local page table
                                // with the namespace/page of the interwiki target which can cause
index 7e5bd3c..b0a6ef7 100644 (file)
@@ -32,10 +32,9 @@ final class DuplicateJob extends Job {
         *
         * @param Title $title
         * @param array $params job parameters
-        * @param $id Integer: job id
         */
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'duplicate', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'duplicate', $title, $params );
        }
 
        /**
@@ -45,7 +44,7 @@ final class DuplicateJob extends Job {
         * @return Job
         */
        public static function newFromJob( Job $job ) {
-               $djob = new self( $job->getTitle(), $job->getParams(), $job->id );
+               $djob = new self( $job->getTitle(), $job->getParams() );
                $djob->command = $job->getType();
                $djob->params = is_array( $djob->params ) ? $djob->params : array();
                $djob->params = array( 'isDuplicate' => true ) + $djob->params;
index f24cebb..df8ae63 100644 (file)
@@ -28,8 +28,8 @@
  * @ingroup JobQueue
  */
 class EmaillingJob extends Job {
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'sendMail', Title::newMainPage(), $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'sendMail', Title::newMainPage(), $params );
        }
 
        function run() {
index 97a7af6..1ed99a5 100644 (file)
@@ -27,8 +27,8 @@
  * @ingroup JobQueue
  */
 class EnotifNotifyJob extends Job {
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'enotifNotify', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'enotifNotify', $title, $params );
        }
 
        function run() {
index 8885e25..61d100c 100644 (file)
  */
 
 /**
- * Job wrapper for HTMLCacheUpdate. Gets run whenever a related
- * job gets called from the queue.
+ * Job to purge the cache for all pages that link to or use another page or file
  *
- * 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.
+ * This job comes in a few variants:
+ *   - a) Recursive jobs to purge caches for backlink pages for a given title.
+ *        These jobs have have (recursive:true,table:<table>) set.
+ *   - b) Jobs to purge caches for a set of titles (the job title is ignored).
+ *           These jobs have have (pages:(<page ID>:(<namespace>,<title>),...) set.
  *
  * @ingroup JobQueue
  */
 class HTMLCacheUpdateJob extends Job {
-       /** @var BacklinkCache */
-       protected $blCache;
-
-       /** @var int Number of rows to update per job, see $wgUpdateRowsPerJob */
-       protected $rowsPerJob;
-
-       /** @var int Number of rows to update per query, see $wgUpdateRowsPerQuery */
-       protected $rowsPerQuery;
-
-       /**
-        * Construct a job
-        * @param Title $title The title linked to
-        * @param array $params job parameters (table, start and end page_ids)
-        * @param int $id Job id
-        */
-       function __construct( $title, $params, $id = 0 ) {
-               global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery;
-
-               parent::__construct( 'htmlCacheUpdate', $title, $params, $id );
-
-               $this->rowsPerJob = $wgUpdateRowsPerJob;
-               $this->rowsPerQuery = $wgUpdateRowsPerQuery;
-               $this->blCache = $title->getBacklinkCache();
+       function __construct( $title, $params = '' ) {
+               parent::__construct( 'htmlCacheUpdate', $title, $params );
+               // Base backlink purge jobs can be de-duplicated
+               $this->removeDuplicates = ( !isset( $params['range'] ) && !isset( $params['pages'] ) );
        }
 
-       public function run() {
-               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();
-               }
-       }
+       function run() {
+               global $wgUpdateRowsPerJob, $wgUpdateRowsPerQuery, $wgMaxBacklinksInvalidate;
 
-       /**
-        * Update all of the backlinks
-        */
-       protected function doFullUpdate() {
-               global $wgMaxBacklinksInvalidate;
+               static $expected = array( 'recursive', 'pages' ); // new jobs have one of these
 
-               # Get an estimate of the number of rows from the BacklinkCache
-               $max = max( $this->rowsPerJob * 2, $wgMaxBacklinksInvalidate ) + 1;
-               $numRows = $this->blCache->getNumLinks( $this->params['table'], $max );
-               if ( $wgMaxBacklinksInvalidate !== false && $numRows > $wgMaxBacklinksInvalidate ) {
-                       wfDebug( "Skipped HTML cache invalidation of {$this->title->getPrefixedText()}." );
-
-                       return true;
-               }
-
-               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 );
+               $oldRangeJob = false;
+               if ( !array_intersect( array_keys( $this->params ), $expected ) ) {
+                       // B/C for older job params formats that lack these fields:
+                       // a) base jobs with just ("table") and b) range jobs with ("table","start","end")
+                       if ( isset( $this->params['start'] ) && isset( $this->params['end'] ) ) {
+                               $oldRangeJob = true;
                        } else {
-                               $this->invalidateTitles( $titleArray ); // just do the query
+                               $this->params['recursive'] = true; // base job
                        }
                }
 
-               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;
-       }
+               // Job to purge all (or a range of) backlink pages for a page
+               if ( !empty( $this->params['recursive'] ) ) {
+                       // @TODO: try to use delayed jobs if possible?
+                       if ( !isset( $this->params['range'] ) && $wgMaxBacklinksInvalidate !== false ) {
+                               $numRows = $this->title->getBacklinkCache()->getNumLinks(
+                                       $this->params['table'], $wgMaxBacklinksInvalidate );
+                               if ( $numRows > $wgMaxBacklinksInvalidate ) {
+                                       return true;
+                               }
+                       }
+                       // Convert this into no more than $wgUpdateRowsPerJob HTMLCacheUpdateJob per-title
+                       // jobs and possibly a recursive HTMLCacheUpdateJob job for the rest of the backlinks
+                       $jobs = BacklinkJobUtils::partitionBacklinkJob(
+                               $this,
+                               $wgUpdateRowsPerJob,
+                               $wgUpdateRowsPerQuery, // jobs-per-title
+                               // Carry over information for de-duplication
+                               array( 'params' => $this->getRootJobParams() )
+                       );
+                       JobQueueGroup::singleton()->push( $jobs );
+               // Job to purge pages for for a set of titles
+               } elseif ( isset( $this->params['pages'] ) ) {
+                       $this->invalidateTitles( $this->params['pages'] );
+               // B/C for job to purge a range of backlink pages for a given page
+               } elseif ( $oldRangeJob ) {
+                       $titleArray = $this->title->getBacklinkCache()->getLinks(
+                               $this->params['table'], $this->params['start'], $this->params['end'] );
+
+                       $pages = array(); // same format BacklinkJobUtils uses
+                       foreach ( $titleArray as $tl ) {
+                               $pages[$tl->getArticleId()] = array( $tl->getNamespace(), $tl->getDbKey() );
+                       }
 
-       /**
-        * 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 array|TitleArrayFromResult $titleArray
-        * @param array $rootJobParams
-        */
-       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;
-               /** @var Title $title */
-               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 = array();
+                       foreach ( array_chunk( $pages, $wgUpdateRowsPerJob ) as $pageChunk ) {
                                $jobs[] = new HTMLCacheUpdateJob( $this->title,
                                        array(
                                                'table' => $this->params['table'],
-                                               'start' => $start,
-                                               'end' => $id - 1
-                                       ) + $rootJobParams // carry over information for de-duplication
+                                               'pages' => $pageChunk
+                                       ) + $this->getRootJobParams() // 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 );
                }
+
+               return true;
        }
 
        /**
-        * @param array $rootJobParams
+        * @param array $pages Map of (page ID => (namespace, DB key)) entries
         */
-       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
-               }
+       protected function invalidateTitles( array $pages ) {
+               global $wgUpdateRowsPerQuery, $wgUseFileCache, $wgUseSquid;
 
-               $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
-                       );
+               // Get all page IDs in this query into an array
+               $pageIds = array_keys( $pages );
+               if ( !$pageIds ) {
+                       return;
                }
 
-               JobQueueGroup::singleton()->push( $jobs );
-       }
-
-       /**
-        * Invalidate an array (or iterator) of Title objects, right now
-        * @param array|TitleArrayFromResult $titleArray
-        */
-       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();
-               /** @var Title $title */
-               foreach ( $titleArray as $title ) {
-                       $ids[] = $title->getArticleID();
-               }
-
-               if ( !$ids ) {
-                       return;
-               }
-
-               # Don't invalidated pages that were already invalidated
+               // 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 ) {
+               // Update page_touched (skipping pages already touched since the root job).
+               // Check $wgUpdateRowsPerQuery for sanity; batch jobs are sized by that already.
+               foreach ( array_chunk( $pageIds, $wgUpdateRowsPerQuery ) as $batch ) {
                        $dbw->update( 'page',
                                array( 'page_touched' => $timestamp ),
                                array( 'page_id' => $batch ) + $touchedCond,
                                __METHOD__
                        );
                }
-
-               # Update squid
+               // Get the list of affected pages (races only mean something else did the purge)
+               $titleArray = TitleArray::newFromResult( $dbw->select(
+                       'page',
+                       array( 'page_namespace', 'page_title' ),
+                       array( 'page_id' => $pageIds, 'page_touched' => $timestamp ),
+                       __METHOD__
+               ) );
+
+               // Update squid
                if ( $wgUseSquid ) {
                        $u = SquidUpdate::newFromTitles( $titleArray );
                        $u->doUpdate();
                }
 
-               # Update file cache
+               // Update file cache
                if ( $wgUseFileCache ) {
                        foreach ( $titleArray as $title ) {
                                HTMLFileCache::clearFileCache( $title );
                        }
                }
        }
+
+       public function workItemCount() {
+               return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1;
+       }
 }
index f62419c..b2d6a9a 100644 (file)
@@ -48,10 +48,9 @@ class NullJob extends Job {
        /**
         * @param Title $title
         * @param array $params job parameters (lives, usleep)
-        * @param int $id Job id
         */
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'null', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'null', $title, $params );
                if ( !isset( $this->params['lives'] ) ) {
                        $this->params['lives'] = 1;
                }
index 88ac9cf..d7667f3 100644 (file)
@@ -27,8 +27,8 @@
  * @ingroup Upload
  */
 class PublishStashedFileJob extends Job {
-       public function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'PublishStashedFile', $title, $params, $id );
+       public function __construct( $title, $params ) {
+               parent::__construct( 'PublishStashedFile', $title, $params );
                $this->removeDuplicates = true;
        }
 
index 0372d85..78ac84d 100644 (file)
  * Job to update link tables for pages
  *
  * This job comes in a few variants:
- *   - a) Recursive jobs to update links for backlink pages for a given title
- *   - b) Jobs to update links for a set of titles (the job title is ignored)
- *   - c) Jobs to update links for a single title (the job title)
+ *   - a) Recursive jobs to update links for backlink pages for a given title.
+ *        These jobs have have (recursive:true,table:<table>) set.
+ *   - b) Jobs to update links for a set of pages (the job title is ignored).
+ *           These jobs have have (pages:(<page ID>:(<namespace>,<title>),...) set.
+ *   - c) Jobs to update links for a single page (the job title)
+ *        These jobs need no extra fields set.
  *
  * @ingroup JobQueue
  */
 class RefreshLinksJob extends Job {
-       const VERSION = 1;
-
-       function __construct( $title, $params = '', $id = 0 ) {
-               parent::__construct( 'refreshLinks', $title, $params, $id );
-               $this->params['version'] = self::VERSION;
+       function __construct( $title, $params = '' ) {
+               parent::__construct( 'refreshLinks', $title, $params );
                // Base backlink update jobs and per-title update jobs can be de-duplicated.
                // If template A changes twice before any jobs run, a clean queue will have:
                //              (A base, A base)
@@ -59,13 +59,8 @@ class RefreshLinksJob extends Job {
        function run() {
                global $wgUpdateRowsPerJob;
 
-               if ( is_null( $this->title ) ) {
-                       $this->setLastError( "Invalid page title" );
-                       return false;
-               }
-
                // Job to update all (or a range of) backlink pages for a page
-               if ( isset( $this->params['recursive'] ) ) {
+               if ( !empty( $this->params['recursive'] ) ) {
                        // Carry over information for de-duplication
                        $extraParams = $this->getRootJobParams();
                        // Avoid slave lag when fetching templates.
@@ -97,7 +92,7 @@ class RefreshLinksJob extends Job {
                        }
                // Job to update link tables for a given title
                } else {
-                       $this->runForTitle( $this->mTitle );
+                       $this->runForTitle( $this->title );
                }
 
                return true;
@@ -119,20 +114,42 @@ class RefreshLinksJob extends Job {
                        wfGetLB()->waitFor( $this->params['masterPos'] );
                }
 
+               // Fetch the current revision...
                $revision = Revision::newFromTitle( $title, false, Revision::READ_NORMAL );
                if ( !$revision ) {
                        $this->setLastError( "refreshLinks: Article not found {$title->getPrefixedDBkey()}" );
                        return false; // XXX: what if it was just deleted?
                }
-
                $content = $revision->getContent( Revision::RAW );
                if ( !$content ) {
                        // If there is no content, pretend the content is empty
                        $content = $revision->getContentHandler()->makeEmptyContent();
                }
 
-               // Revision ID must be passed to the parser output to get revision variables correct
-               $parserOutput = $content->getParserOutput( $title, $revision->getId(), null, false );
+               $parserOutput = false;
+               // If page_touched changed after this root job (with a good slave lag skew factor),
+               // then it is likely that any views of the pages already resulted in re-parses which
+               // are now in cache. This can be reused to avoid expensive parsing in some cases.
+               if ( isset( $this->params['rootJobTimestamp'] ) ) {
+                       $page = WikiPage::factory( $title );
+                       $skewedTimestamp = wfTimestamp( TS_UNIX, $this->params['rootJobTimestamp'] ) + 5;
+                       if ( $page->getLinksTimestamp() > wfTimestamp( TS_MW, $skewedTimestamp ) ) {
+                               // Something already updated the backlinks since this job was made
+                               return true;
+                       }
+                       if ( $page->getTouched() > wfTimestamp( TS_MW, $skewedTimestamp ) ) {
+                               $parserOptions = $page->makeParserOptions( 'canonical' );
+                               $parserOutput = ParserCache::singleton()->getDirty( $page, $parserOptions );
+                               if ( $parserOutput && $parserOutput->getCacheTime() <= $skewedTimestamp ) {
+                                       $parserOutput = false; // too stale
+                               }
+                       }
+               }
+               // Fetch the current revision and parse it if necessary...
+               if ( $parserOutput == 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 );
@@ -157,4 +174,8 @@ class RefreshLinksJob extends Job {
 
                return $info;
        }
+
+       public function workItemCount() {
+               return isset( $this->params['pages'] ) ? count( $this->params['pages'] ) : 1;
+       }
 }
index 332f625..77e3b3f 100644 (file)
@@ -29,8 +29,8 @@
  * @deprecated 1.23
  */
 class RefreshLinksJob2 extends Job {
-       function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'refreshLinks2', $title, $params, $id );
+       function __construct( $title, $params ) {
+               parent::__construct( 'refreshLinks2', $title, $params );
                // Base jobs for large templates can easily be de-duplicated
                $this->removeDuplicates = !isset( $params['start'] ) && !isset( $params['end'] );
        }
index 15d523f..2cdac57 100644 (file)
@@ -39,8 +39,8 @@ class UploadFromUrlJob extends Job {
        /** @var User */
        protected $user;
 
-       public function __construct( $title, $params, $id = 0 ) {
-               parent::__construct( 'uploadFromUrl', $title, $params, $id );
+       public function __construct( $title, $params ) {
+               parent::__construct( 'uploadFromUrl', $title, $params );
        }
 
        public function run() {
index 4f142fc..318448a 100644 (file)
@@ -38,7 +38,8 @@ class CSSMin {
         * which when base64 encoded will result in a 1/3 increase in size.
         */
        const EMBED_SIZE_LIMIT = 24576;
-       const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*)(?P<query>\??[^\)\'"]*)[\'"]?\s*\)';
+       const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*?)(?P<query>\?[^\)\'"]*?|)[\'"]?\s*\)';
+       const EMBED_REGEX = '\/\*\s*\@embed\s*\*\/';
 
        /* Protected Static Members */
 
@@ -52,6 +53,7 @@ class CSSMin {
                'tif' => 'image/tiff',
                'tiff' => 'image/tiff',
                'xbm' => 'image/x-xbitmap',
+               'svg' => 'image/svg+xml',
        );
 
        /* Static Methods */
@@ -140,8 +142,26 @@ class CSSMin {
        }
 
        /**
-        * Remaps CSS URL paths and automatically embeds data URIs for URL rules
-        * preceded by an /* @embed * / comment
+        * Build a CSS 'url()' value for the given URL, quoting parentheses (and other funny characters)
+        * and escaping quotes as necessary.
+        *
+        * @param string $url URL to process
+        * @return string 'url()' value, usually just `"url($url)"`, quoted/escaped if necessary
+        */
+       public static function buildUrlValue( $url ) {
+               // The list below has been crafted to match URLs such as:
+               //   scheme://user@domain:port/~user/fi%20le.png?query=yes&really=y+s
+               //   data:image/png;base64,R0lGODlh/+==
+               if ( preg_match( '!^[\w\d:@/~.%+;,?&=-]+$!', $url ) ) {
+                       return "url($url)";
+               } else {
+                       return 'url("' . strtr( $url, array( '\\' => '\\\\', '"' => '\\"' ) ) . '")';
+               }
+       }
+
+       /**
+        * Remaps CSS URL paths and automatically embeds data URIs for CSS rules or url() values
+        * preceded by an / * @embed * / comment.
         *
         * @param string $source CSS data to remap
         * @param string $local File path where the source was read from
@@ -150,89 +170,119 @@ class CSSMin {
         * @return string Remapped CSS data
         */
        public static function remap( $source, $local, $remote, $embedData = true ) {
-               $pattern = '/((?P<embed>\s*\/\*\s*\@embed\s*\*\/)(?P<pre>[^\;\}]*))?' .
-                       self::URL_REGEX . '(?P<post>[^;]*)[\;]?/';
-               $offset = 0;
-               while ( preg_match( $pattern, $source, $match, PREG_OFFSET_CAPTURE, $offset ) ) {
-                       // Skip fully-qualified URLs and data URIs
-                       $urlScheme = parse_url( $match['file'][0], PHP_URL_SCHEME );
-                       if ( $urlScheme ) {
-                               // Move the offset to the end of the match, leaving it alone
-                               $offset = $match[0][1] + strlen( $match[0][0] );
-                               continue;
-                       }
-                       // URLs with absolute paths like /w/index.php need to be expanded
-                       // to absolute URLs but otherwise left alone
-                       if ( $match['file'][0] !== '' && $match['file'][0][0] === '/' ) {
-                               // Replace the file path with an expanded (possibly protocol-relative) URL
-                               // ...but only if wfExpandUrl() is even available.
-                               // This will not be the case if we're running outside of MW
-                               $lengthIncrease = 0;
-                               if ( function_exists( 'wfExpandUrl' ) ) {
-                                       $expanded = wfExpandUrl( $match['file'][0], PROTO_RELATIVE );
-                                       $origLength = strlen( $match['file'][0] );
-                                       $lengthIncrease = strlen( $expanded ) - $origLength;
-                                       $source = substr_replace( $source, $expanded,
-                                               $match['file'][1], $origLength
-                                       );
-                               }
-                               // Move the offset to the end of the match, leaving it alone
-                               $offset = $match[0][1] + strlen( $match[0][0] ) + $lengthIncrease;
-                               continue;
+               // High-level overview:
+               // * For each CSS rule in $source that includes at least one url() value:
+               //   * Check for an @embed comment at the start indicating that all URIs should be embedded
+               //   * For each url() value:
+               //     * Check for an @embed comment directly preceding the value
+               //     * If either @embed comment exists:
+               //       * Embedding the URL as data: URI, if it's possible / allowed
+               //       * Otherwise remap the URL to work in generated stylesheets
+
+               // Guard against trailing slashes, because "some/remote/../foo.png"
+               // resolves to "some/remote/foo.png" on (some?) clients (bug 27052).
+               if ( substr( $remote, -1 ) == '/' ) {
+                       $remote = substr( $remote, 0, -1 );
+               }
+
+               // Note: This will not correctly handle cases where ';', '{' or '}' appears in the rule itself,
+               // e.g. in a quoted string. You are advised not to use such characters in file names.
+               // We also match start/end of the string to be consistent in edge-cases ('@import url(…)').
+               $pattern = '/(?:^|[;{])\K[^;{}]*' . CSSMin::URL_REGEX . '[^;}]*(?=[;}]|$)/';
+               return preg_replace_callback( $pattern, function ( $matchOuter ) use ( $local, $remote, $embedData ) {
+                       $rule = $matchOuter[0];
+
+                       // Check for global @embed comment and remove it
+                       $embedAll = false;
+                       $rule = preg_replace( '/^(\s*)' . CSSMin::EMBED_REGEX . '\s*/', '$1', $rule, 1, $embedAll );
+
+                       // Build two versions of current rule: with remapped URLs and with embedded data: URIs (where possible)
+                       $pattern = '/(?P<embed>' . CSSMin::EMBED_REGEX . '\s*|)' . CSSMin::URL_REGEX . '/';
+
+                       $ruleWithRemapped = preg_replace_callback( $pattern, function ( $match ) use ( $local, $remote ) {
+                               $remapped = CSSMin::remapOne( $match['file'], $match['query'], $local, $remote, false );
+                               return CSSMin::buildUrlValue( $remapped );
+                       }, $rule );
+
+                       if ( $embedData ) {
+                               $ruleWithEmbedded = preg_replace_callback( $pattern, function ( $match ) use ( $embedAll, $local, $remote ) {
+                                       $embed = $embedAll || $match['embed'];
+                                       $embedded = CSSMin::remapOne( $match['file'], $match['query'], $local, $remote, $embed );
+                                       return CSSMin::buildUrlValue( $embedded );
+                               }, $rule );
                        }
 
-                       // Guard against double slashes, because "some/remote/../foo.png"
-                       // resolves to "some/remote/foo.png" on (some?) clients (bug 27052).
-                       if ( substr( $remote, -1 ) == '/' ) {
-                               $remote = substr( $remote, 0, -1 );
+                       if ( $embedData && $ruleWithEmbedded !== $ruleWithRemapped ) {
+                               // Build 2 CSS properties; one which uses a base64 encoded data URI in place
+                               // of the @embed comment to try and retain line-number integrity, and the
+                               // other with a remapped an versioned URL and an Internet Explorer hack
+                               // making it ignored in all browsers that support data URIs
+                               return "$ruleWithEmbedded;$ruleWithRemapped!ie";
+                       } else {
+                               // No reason to repeat twice
+                               return $ruleWithRemapped;
                        }
+               }, $source );
 
-                       // Shortcuts
-                       $embed = $match['embed'][0];
-                       $pre = $match['pre'][0];
-                       $post = $match['post'][0];
-                       $query = $match['query'][0];
-                       $url = "{$remote}/{$match['file'][0]}";
-                       $file = "{$local}/{$match['file'][0]}";
+               return $source;
+       }
+
+       /**
+        * Remap or embed a CSS URL path.
+        *
+        * @param string $file URL to remap/embed
+        * @param string $query
+        * @param string $local File path where the source was read from
+        * @param string $remote URL path to the file
+        * @param bool $embed Whether to do any data URI embedding
+        * @return string Remapped/embedded URL data
+        */
+       public static function remapOne( $file, $query, $local, $remote, $embed ) {
+               // The full URL possibly with query, as passed to the 'url()' value in CSS
+               $url = $file . $query;
 
-                       $replacement = false;
+               // Skip fully-qualified and protocol-relative URLs and data URIs
+               $urlScheme = substr( $url, 0, 2 ) === '//' || parse_url( $url, PHP_URL_SCHEME );
+               if ( $urlScheme ) {
+                       return $url;
+               }
+
+               // URLs with absolute paths like /w/index.php need to be expanded
+               // to absolute URLs but otherwise left alone
+               if ( $url !== '' && $url[0] === '/' ) {
+                       // Replace the file path with an expanded (possibly protocol-relative) URL
+                       // ...but only if wfExpandUrl() is even available.
+                       // This will not be the case if we're running outside of MW
+                       if ( function_exists( 'wfExpandUrl' ) ) {
+                               return wfExpandUrl( $url, PROTO_RELATIVE );
+                       } else {
+                               return $url;
+                       }
+               }
 
-                       if ( $local !== false && file_exists( $file ) ) {
+               if ( $local === false ) {
+                       // Assume that all paths are relative to $remote, and make them absolute
+                       return $remote . '/' . $url;
+               } else {
+                       // We drop the query part here and instead make the path relative to $remote
+                       $url = "{$remote}/{$file}";
+                       // Path to the actual file on the filesystem
+                       $localFile = "{$local}/{$file}";
+                       if ( file_exists( $localFile ) ) {
                                // Add version parameter as a time-stamp in ISO 8601 format,
                                // using Z for the timezone, meaning GMT
-                               $url .= '?' . gmdate( 'Y-m-d\TH:i:s\Z', round( filemtime( $file ), -2 ) );
-                               // Embedding requires a bit of extra processing, so let's skip that if we can
-                               if ( $embedData && $embed && $match['embed'][1] > 0 ) {
-                                       $data = self::encodeImageAsDataURI( $file );
+                               $url .= '?' . gmdate( 'Y-m-d\TH:i:s\Z', round( filemtime( $localFile ), -2 ) );
+                               if ( $embed ) {
+                                       $data = self::encodeImageAsDataURI( $localFile );
                                        if ( $data !== false ) {
-                                               // Build 2 CSS properties; one which uses a base64 encoded data URI in place
-                                               // of the @embed comment to try and retain line-number integrity, and the
-                                               // other with a remapped an versioned URL and an Internet Explorer hack
-                                               // making it ignored in all browsers that support data URIs
-                                               $replacement = "{$pre}url({$data}){$post};{$pre}url({$url}){$post}!ie;";
+                                               return $data;
                                        }
                                }
-                               if ( $replacement === false ) {
-                                       // Assume that all paths are relative to $remote, and make them absolute
-                                       $replacement = "{$embed}{$pre}url({$url}){$post};";
-                               }
-                       } elseif ( $local === false ) {
-                               // Assume that all paths are relative to $remote, and make them absolute
-                               $replacement = "{$embed}{$pre}url({$url}{$query}){$post};";
                        }
-                       if ( $replacement !== false ) {
-                               // Perform replacement on the source
-                               $source = substr_replace(
-                                       $source, $replacement, $match[0][1], strlen( $match[0][0] )
-                               );
-                               // Move the offset to the end of the replacement in the source
-                               $offset = $match[0][1] + strlen( $replacement );
-                               continue;
-                       }
-                       // Move the offset to the end of the match, leaving it alone
-                       $offset = $match[0][1] + strlen( $match[0][0] );
+                       // If any of these conditions failed (file missing, we don't want to embed it
+                       // or it's not embeddable), return the URL (possibly with ?timestamp part)
+                       return $url;
                }
-               return $source;
        }
 
        /**
diff --git a/includes/libs/HashRing.php b/includes/libs/HashRing.php
new file mode 100644 (file)
index 0000000..6925c7f
--- /dev/null
@@ -0,0 +1,147 @@
+<?php
+/**
+ * Convenience class for weighted consistent hash rings.
+ *
+ * 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
+ */
+
+/**
+ * Convenience class for weighted consistent hash rings
+ *
+ * @since 1.22
+ */
+class HashRing {
+       /** @var Array (location => weight) */
+       protected $sourceMap = array();
+       /** @var Array (location => (start, end)) */
+       protected $ring = array();
+
+       const RING_SIZE = 268435456; // 2^28
+
+       /**
+        * @param array $map (location => weight)
+        */
+       public function __construct( array $map ) {
+               $map = array_filter( $map, function ( $w ) {
+                       return $w > 0;
+               } );
+               if ( !count( $map ) ) {
+                       throw new UnexpectedValueException( "Ring is empty or all weights are zero." );
+               }
+               $this->sourceMap = $map;
+               // Sort the locations based on the hash of their names
+               $hashes = array();
+               foreach ( $map as $location => $weight ) {
+                       $hashes[$location] = sha1( $location );
+               }
+               uksort( $map, function ( $a, $b ) use ( $hashes ) {
+                       return strcmp( $hashes[$a], $hashes[$b] );
+               } );
+               // Fit the map to weight-proportionate one with a space of size RING_SIZE
+               $sum = array_sum( $map );
+               $standardMap = array();
+               foreach ( $map as $location => $weight ) {
+                       $standardMap[$location] = (int)floor( $weight / $sum * self::RING_SIZE );
+               }
+               // Build a ring of RING_SIZE spots, with each location at a spot in location hash order
+               $index = 0;
+               foreach ( $standardMap as $location => $weight ) {
+                       // Location covers half-closed interval [$index,$index + $weight)
+                       $this->ring[$location] = array( $index, $index + $weight );
+                       $index += $weight;
+               }
+               // Make sure the last location covers what is left
+               end( $this->ring );
+               $this->ring[key( $this->ring )][1] = self::RING_SIZE;
+       }
+
+       /**
+        * Get the location of an item on the ring
+        *
+        * @param string $item
+        * @return string Location
+        */
+       public function getLocation( $item ) {
+               $locations = $this->getLocations( $item, 1 );
+
+               return $locations[0];
+       }
+
+       /**
+        * Get the location of an item on the ring, as well as the next clockwise locations
+        *
+        * @param string $item
+        * @param integer $limit Maximum number of locations to return
+        * @return array List of locations
+        */
+       public function getLocations( $item, $limit ) {
+               $locations = array();
+               $primaryLocation = null;
+               $spot = hexdec( substr( sha1( $item ), 0, 7 ) ); // first 28 bits
+               foreach ( $this->ring as $location => $range ) {
+                       if ( count( $locations ) >= $limit ) {
+                               break;
+                       }
+                       // The $primaryLocation is the location the item spot is in.
+                       // After that is reached, keep appending the next locations.
+                       if ( ( $range[0] <= $spot && $spot < $range[1] ) || $primaryLocation !== null ) {
+                               if ( $primaryLocation === null ) {
+                                       $primaryLocation = $location;
+                               }
+                               $locations[] = $location;
+                       }
+               }
+               // If more locations are requested, wrap-around and keep adding them
+               reset( $this->ring );
+               while ( count( $locations ) < $limit ) {
+                       list( $location, ) = each( $this->ring );
+                       if ( $location === $primaryLocation ) {
+                               break; // don't go in circles
+                       }
+                       $locations[] = $location;
+               }
+
+               return $locations;
+       }
+
+       /**
+        * Get the map of locations to weight (ignores 0-weight items)
+        *
+        * @return array
+        */
+       public function getLocationWeights() {
+               return $this->sourceMap;
+       }
+
+       /**
+        * Get a new hash ring with a location removed from the ring
+        *
+        * @param string $location
+        * @return HashRing|bool Returns false if no non-zero weighted spots are left
+        */
+       public function newWithoutLocation( $location ) {
+               $map = $this->sourceMap;
+               unset( $map[$location] );
+               if ( count( $map ) ) {
+                       return new self( $map );
+               }
+
+               return false;
+       }
+}
diff --git a/includes/libs/MWMessagePack.php b/includes/libs/MWMessagePack.php
new file mode 100644 (file)
index 0000000..c61e8f8
--- /dev/null
@@ -0,0 +1,188 @@
+<?php
+/**
+ * MessagePack serializer
+ *
+ * MessagePack is a space-efficient binary data interchange format. This
+ * class provides a pack() method that encodes native PHP values as MessagePack
+ * binary strings. The implementation is derived from msgpack-php.
+ *
+ * Copyright (c) 2013 Ori Livneh <ori@wikimedia.org>
+ * Copyright (c) 2011 OnlineCity <https://github.com/onlinecity/msgpack-php>.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * @see <http://msgpack.org/>
+ * @see <http://wiki.msgpack.org/display/MSGPACK/Format+specification>
+ *
+ * @since 1.23
+ * @file
+ */
+class MWMessagePack {
+
+       /** @var boolean|null Whether current system is bigendian. **/
+       public static $bigendian = null;
+
+       /**
+        * Encode a value using MessagePack
+        *
+        * This method supports null, boolean, integer, float, string and array
+        * (both indexed and associative) types. Object serialization is not
+        * supported.
+        *
+        * @param mixed $value
+        * @return string
+        * @throws InvalidArgumentException if $value is an unsupported type or too long a string
+        */
+       public static function pack( $value ) {
+               if ( self::$bigendian === null ) {
+                       self::$bigendian = pack( 'S', 1 ) === pack( 'n', 1 );
+               }
+
+               switch ( gettype( $value ) ) {
+               case 'NULL':
+                       return "\xC0";
+
+               case 'boolean':
+                       return $value ? "\xC3" : "\xC2";
+
+               case 'double':
+               case 'float':
+                       return self::$bigendian
+                               ? "\xCB" . pack( 'd', $value )
+                               : "\xCB" . strrev( pack( 'd', $value ) );
+
+               case 'string':
+                       $length = strlen( $value );
+                       if ( $length < 32 ) {
+                               return pack( 'Ca*', 0xA0 | $length, $value );
+                       } elseif ( $length <= 0xFFFF ) {
+                               return pack( 'Cna*', 0xDA, $length, $value );
+                       } elseif ( $length <= 0xFFFFFFFF ) {
+                               return pack( 'CNa*', 0xDB, $length, $value );
+                       }
+                       throw new InvalidArgumentException( __METHOD__ . ": string too long (length: $length; max: 4294967295)" );
+
+               case 'integer':
+                       if ( $value >= 0 ) {
+                               if ( $value <= 0x7F ) {
+                                       // positive fixnum
+                                       return chr( $value );
+                               }
+                               if ( $value <= 0xFF ) {
+                                       // uint8
+                                       return pack( 'CC', 0xCC, $value );
+                               }
+                               if ( $value <= 0xFFFF ) {
+                                       // uint16
+                                       return pack( 'Cn', 0xCD, $value );
+                               }
+                               if ( $value <= 0xFFFFFFFF ) {
+                                       // uint32
+                                       return pack( 'CN', 0xCE, $value );
+                               }
+                               if ( $value <= 0xFFFFFFFFFFFFFFFF ) {
+                                       // uint64
+                                       $hi = ( $value & 0xFFFFFFFF00000000 ) >> 32;
+                                       $lo = $value & 0xFFFFFFFF;
+                                       return self::$bigendian
+                                               ? pack( 'CNN', 0xCF, $lo, $hi )
+                                               : pack( 'CNN', 0xCF, $hi, $lo );
+                               }
+                       } else {
+                               if ( $value >= -32 ) {
+                                       // negative fixnum
+                                       return pack( 'c', $value );
+                               }
+                               if ( $value >= -0x80 ) {
+                                       // int8
+                                       return pack( 'Cc', 0xD0, $value );
+                               }
+                               if ( $value >= -0x8000 ) {
+                                       // int16
+                                       $p = pack( 's', $value );
+                                       return self::$bigendian
+                                               ? pack( 'Ca2', 0xD1, $p )
+                                               : pack( 'Ca2', 0xD1, strrev( $p ) );
+                               }
+                               if ( $value >= -0x80000000 ) {
+                                       // int32
+                                       $p = pack( 'l', $value );
+                                       return self::$bigendian
+                                               ? pack( 'Ca4', 0xD2, $p )
+                                               : pack( 'Ca4', 0xD2, strrev( $p ) );
+                               }
+                               if ( $value >= -0x8000000000000000 ) {
+                                       // int64
+                                       // pack() does not support 64-bit ints either so pack into two 32-bits
+                                       $p1 = pack( 'l', $value & 0xFFFFFFFF );
+                                       $p2 = pack( 'l', ( $value >> 32 ) & 0xFFFFFFFF );
+                                       return self::$bigendian
+                                               ? pack( 'Ca4a4', 0xD3, $p1, $p2 )
+                                               : pack( 'Ca4a4', 0xD3, strrev( $p2 ), strrev( $p1 ) );
+                               }
+                       }
+                       throw new InvalidArgumentException( __METHOD__ . ": invalid integer '$value'" );
+
+               case 'array':
+                       $buffer = '';
+                       $length = count( $value );
+                       if ( $length > 0xFFFFFFFF ) {
+                               throw new InvalidArgumentException( __METHOD__ . ": array too long (length: $length, max: 4294967295)" );
+                       }
+
+                       $index = 0;
+                       foreach ( $value as $k => $v ) {
+                               if ( $index !== $k || $index === $length ) {
+                                       break;
+                               } else {
+                                       $index++;
+                               }
+                       }
+                       $associative = $index !== $length;
+
+                       if ( $associative ) {
+                               if ( $length < 16 ) {
+                                       $buffer .= pack( 'C', 0x80 | $length );
+                               } elseif ( $length <= 0xFFFF ) {
+                                       $buffer .= pack( 'Cn', 0xDE, $length );
+                               } else {
+                                       $buffer .= pack( 'CN', 0xDF, $length );
+                               }
+                               foreach ( $value as $k => $v ) {
+                                       $buffer .= self::pack( $k );
+                                       $buffer .= self::pack( $v );
+                               }
+                       } else {
+                               if ( $length < 16 ) {
+                                       $buffer .= pack( 'C', 0x90 | $length );
+                               } elseif ( $length <= 0xFFFF ) {
+                                       $buffer .= pack( 'Cn', 0xDC, $length );
+                               } else {
+                                       $buffer .= pack( 'CN', 0xDD, $length );
+                               }
+                               foreach ( $value as $v ) {
+                                       $buffer .= self::pack( $v );
+                               }
+                       }
+                       return $buffer;
+
+               default:
+                       throw new InvalidArgumentException( __METHOD__ . ': unsupported type ' . gettype( $value ) );
+               }
+       }
+}
diff --git a/includes/libs/MappedIterator.php b/includes/libs/MappedIterator.php
new file mode 100644 (file)
index 0000000..7fdde8a
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+/**
+ * Convenience class for generating iterators from iterators.
+ *
+ * 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
+ */
+
+/**
+ * Convenience class for generating iterators from iterators.
+ *
+ * @since 1.21
+ */
+class MappedIterator extends FilterIterator {
+       /** @var callable */
+       protected $vCallback;
+       /** @var callable */
+       protected $aCallback;
+       /** @var array */
+       protected $cache = array();
+
+       protected $rewound = false; // boolean; whether rewind() has been called
+
+       /**
+        * Build an new iterator from a base iterator by having the former wrap the
+        * later, returning the result of "value" callback for each current() invocation.
+        * The callback takes the result of current() on the base iterator as an argument.
+        * The keys of the base iterator are reused verbatim.
+        *
+        * An "accept" callback can also be provided which will be called for each value in
+        * the base iterator (post-callback) and will return true if that value should be
+        * included in iteration of the MappedIterator (otherwise it will be filtered out).
+        *
+        * @param Iterator|Array $iter
+        * @param callable $vCallback Value transformation callback
+        * @param array $options Options map (includes "accept") (since 1.22)
+        * @throws UnexpectedValueException
+        */
+       public function __construct( $iter, $vCallback, array $options = array() ) {
+               if ( is_array( $iter ) ) {
+                       $baseIterator = new ArrayIterator( $iter );
+               } elseif ( $iter instanceof Iterator ) {
+                       $baseIterator = $iter;
+               } else {
+                       throw new UnexpectedValueException( "Invalid base iterator provided." );
+               }
+               parent::__construct( $baseIterator );
+               $this->vCallback = $vCallback;
+               $this->aCallback = isset( $options['accept'] ) ? $options['accept'] : null;
+       }
+
+       public function next() {
+               $this->cache = array();
+               parent::next();
+       }
+
+       public function rewind() {
+               $this->rewound = true;
+               $this->cache = array();
+               parent::rewind();
+       }
+
+       public function accept() {
+               $value = call_user_func( $this->vCallback, $this->getInnerIterator()->current() );
+               $ok = ( $this->aCallback ) ? call_user_func( $this->aCallback, $value ) : true;
+               if ( $ok ) {
+                       $this->cache['current'] = $value;
+               }
+
+               return $ok;
+       }
+
+       public function key() {
+               $this->init();
+
+               return parent::key();
+       }
+
+       public function valid() {
+               $this->init();
+
+               return parent::valid();
+       }
+
+       public function current() {
+               $this->init();
+               if ( parent::valid() ) {
+                       return $this->cache['current'];
+               } else {
+                       return null; // out of range
+               }
+       }
+
+       /**
+        * Obviate the usual need for rewind() before using a FilterIterator in a manual loop
+        */
+       protected function init() {
+               if ( !$this->rewound ) {
+                       $this->rewind();
+               }
+       }
+}
diff --git a/includes/libs/MultiHttpClient.php b/includes/libs/MultiHttpClient.php
new file mode 100644 (file)
index 0000000..0675b38
--- /dev/null
@@ -0,0 +1,303 @@
+<?php
+
+/**
+ * Class to handle concurrent HTTP requests
+ *
+ * HTTP request maps use the following format:
+ *   - method   : GET/HEAD/PUT/POST/DELETE
+ *   - url      : HTTP/HTTPS URL
+ *   - query    : <query parameter field/value associative array> (uses RFC 3986)
+ *   - headers  : <header name/value associative array>
+ *   - body     : source to get the HTTP request body from;
+ *                this can simply be a string (always), a resource for
+ *                PUT requests, and a field/value array for POST request;
+ *                array bodies are encoded as multipart/form-data and strings
+ *                use application/x-www-form-urlencoded (headers sent automatically)
+ *   - stream   : resource to stream the HTTP response body to
+ *
+ * @author Aaron Schulz
+ * @since 1.23
+ */
+class MultiHttpClient {
+       /** @var resource */
+       protected $multiHandle = null; // curl_multi handle
+       /** @var string|null SSL certificates path  */
+       protected $caBundlePath;
+       /** @var integer */
+       protected $connTimeout;
+       /** @var integer */
+       protected $reqTimeout;
+
+       /**
+        * @param array $options
+        */
+       public function __construct( array $options ) {
+               if ( isset( $options['caBundlePath'] ) ) {
+                       $this->caBundlePath = $options['caBundlePath'];
+                       if ( !file_exists( $this->caBundlePath ) ) {
+                               throw new Exception( "Cannot find CA bundle: " . $this->caBundlePath );
+                       }
+               }
+               static $defaults = array( 'connTimeout' => 10, 'reqTimeout' => 300 );
+               foreach ( $defaults as $key => $default ) {
+                       $this->$key = isset( $options[$key] ) ? $options[$key] : $default;
+               }
+       }
+
+       /**
+        * Execute an HTTP(S) request
+        *
+        * This method returns a response map of:
+        *   - code    : HTTP response code or 0 if there was a serious cURL error
+        *   - reason  : HTTP response reason (empty if there was a serious cURL error)
+        *   - headers : <header name/value associative array>
+        *   - body    : HTTP response body or resource (if "stream" was set)
+        *   - err     : Any cURL error string
+        * The map also stores integer-indexed copies of these values. This lets callers do:
+        *      <code>
+        *              list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $req;
+        *  </code>
+        * @param array $req HTTP request array
+        * @return array Response array for request
+        */
+       public function run( array $req ) {
+               $req = $this->runMulti( array( $req ) );
+               return $req[0]['response'];
+       }
+
+       /**
+        * Execute a set of HTTP(S) request concurrently
+        *
+        * The maps are returned by this method with the 'response' field set to a map of:
+        *   - code    : HTTP response code or 0 if there was a serious cURL error
+        *   - reason  : HTTP response reason (empty if there was a serious cURL error)
+        *   - headers : <header name/value associative array>
+        *   - body    : HTTP response body or resource (if "stream" was set)
+        *   - err     : Any cURL error string
+        * The map also stores integer-indexed copies of these values. This lets callers do:
+        *      <code>
+        *              list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $req;
+        *  </code>
+        * All headers in the 'headers' field are normalized to use lower case names.
+        * This is true for the request headers and the response headers.
+        *
+        * @param array $req Map of HTTP request arrays
+        * @return array $reqs With response array populated for each
+        */
+       public function runMulti( array $reqs ) {
+               $multiHandle = $this->getCurlMulti();
+
+               // Normalize $reqs and add all of the required cURL handles...
+               $handles = array();
+               foreach ( $reqs as $index => &$req ) {
+                       $req['response'] = array(
+                               'code'     => 0,
+                               'reason'   => '',
+                               'headers'  => array(),
+                               'body'     => '',
+                               'error'    => ''
+                       );
+                       if ( !isset( $req['method'] ) ) {
+                               throw new Exception( "Request has no 'method' field set." );
+                       } elseif ( !isset( $req['url'] ) ) {
+                               throw new Exception( "Request has no 'url' field set." );
+                       }
+                       $req['query'] = isset( $req['query'] ) ? $req['query'] : array();
+                       $headers = array(); // normalized headers
+                       if ( isset( $req['headers'] ) ) {
+                               foreach ( $req['headers'] as $name => $value ) {
+                                       $headers[strtolower( $name )] = $value;
+                               }
+                       }
+                       $req['headers'] = $headers;
+                       if ( !isset( $req['body'] ) ) {
+                               $req['body'] = '';
+                               $req['headers']['content-length'] = 0;
+                       }
+                       $handles[$index] = $this->getCurlHandle( $req );
+                       if ( count( $reqs ) > 1 ) {
+                               // https://github.com/guzzle/guzzle/issues/349
+                               curl_setopt( $handles[$index], CURLOPT_FORBID_REUSE, true );
+                       }
+                       curl_multi_add_handle( $multiHandle, $handles[$index] );
+               }
+
+               // Execute the cURL handles concurrently...
+               $active = null; // handles still being processed
+               do {
+                       // Do any available work...
+                       do {
+                               $mrc = curl_multi_exec( $multiHandle, $active );
+                       } while ( $mrc == CURLM_CALL_MULTI_PERFORM );
+                       // Wait (if possible) for available work...
+                       if ( $active > 0 && $mrc == CURLM_OK ) {
+                               if ( curl_multi_select( $multiHandle, 10 ) == -1 ) {
+                                       // PHP bug 63411; http://curl.haxx.se/libcurl/c/curl_multi_fdset.html
+                                       usleep( 5000 ); // 5ms
+                               }
+                       }
+               } while ( $active > 0 && $mrc == CURLM_OK );
+
+               // Remove all of the added cURL handles and check for errors...
+               foreach ( $reqs as $index => &$req ) {
+                       $ch = $handles[$index];
+                       curl_multi_remove_handle( $multiHandle, $ch );
+                       if ( curl_errno( $ch ) !== 0 ) {
+                               $req['error'] = "(curl error: " . curl_errno( $ch ) . ") " . curl_error( $ch );
+                       }
+                       // For convenience with the list() operator
+                       $req['response'][0] = $req['response']['code'];
+                       $req['response'][1] = $req['response']['reason'];
+                       $req['response'][2] = $req['response']['headers'];
+                       $req['response'][3] = $req['response']['body'];
+                       $req['response'][4] = $req['response']['error'];
+                       curl_close( $ch );
+                       // Close any string wrapper file handles
+                       if ( isset( $req['_closeHandle'] ) ) {
+                               fclose( $req['_closeHandle'] );
+                               unset( $req['_closeHandle'] );
+                       }
+               }
+
+               return $reqs;
+       }
+
+       /**
+        * @param array $req HTTP request map
+        * @return resource
+        */
+       protected function getCurlHandle( array &$req ) {
+               $ch = curl_init();
+
+               curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, $this->connTimeout );
+               curl_setopt( $ch, CURLOPT_TIMEOUT, $this->reqTimeout );
+               curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1 );
+               curl_setopt( $ch, CURLOPT_MAXREDIRS, 4 );
+               curl_setopt( $ch, CURLOPT_HEADER, 0 );
+               if ( !is_null( $this->caBundlePath ) ) {
+                       curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, true );
+                       curl_setopt( $ch, CURLOPT_CAINFO, $this->caBundlePath );
+               }
+               curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
+
+               $url = $req['url'];
+               // PHP_QUERY_RFC3986 is PHP 5.4+ only
+               $query = str_replace(
+                       array( '+', '%7E' ),
+                       array( '%20', '~' ),
+                       http_build_query( $req['query'], '', '&' )
+               );
+               if ( $query != '' ) {
+                       $url .= strpos( $req['url'], '?' ) === false ? "?$query" : "&$query";
+               }
+               curl_setopt( $ch, CURLOPT_URL, $url );
+
+               curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, $req['method'] );
+               if ( $req['method'] === 'HEAD' ) {
+                       curl_setopt( $ch, CURLOPT_NOBODY, 1 );
+               }
+
+               if ( $req['method'] === 'PUT' ) {
+                       curl_setopt( $ch, CURLOPT_PUT, 1 );
+                       if ( is_resource( $req['body'] ) ) {
+                               curl_setopt( $ch, CURLOPT_INFILE, $req['body'] );
+                               if ( isset( $req['headers']['content-length'] ) ) {
+                                       curl_setopt( $ch, CURLOPT_INFILESIZE, $req['headers']['content-length'] );
+                               } elseif ( isset( $req['headers']['transfer-encoding'] ) &&
+                                       $req['headers']['transfer-encoding'] === 'chunks'
+                               ) {
+                                       curl_setopt( $ch, CURLOPT_UPLOAD, true );
+                               } else {
+                                       throw new Exception( "Missing 'Content-Length' or 'Transfer-Encoding' header." );
+                               }
+                       } elseif ( $req['body'] !== '' ) {
+                               $fp = fopen( "php://temp", "wb+" );
+                               fwrite( $fp, $req['body'], strlen( $req['body'] ) );
+                               rewind( $fp );
+                               curl_setopt( $ch, CURLOPT_INFILE, $fp );
+                               curl_setopt( $ch, CURLOPT_INFILESIZE, strlen( $req['body'] ) );
+                               $req['_closeHandle'] = $fp; // remember to close this later
+                       } else {
+                               curl_setopt( $ch, CURLOPT_INFILESIZE, 0 );
+                       }
+                       curl_setopt( $ch, CURLOPT_READFUNCTION,
+                               function ( $ch, $fd, $length ) {
+                                       $data = fread( $fd, $length );
+                                       $len = strlen( $data );
+                                       return $data;
+                               }
+                       );
+               } elseif ( $req['method'] === 'POST' ) {
+                       curl_setopt( $ch, CURLOPT_POST, 1 );
+                       curl_setopt( $ch, CURLOPT_POSTFIELDS, $req['body'] );
+               } else {
+                       if ( is_resource( $req['body'] ) || $req['body'] !== '' ) {
+                               throw new Exception( "HTTP body specified for a non PUT/POST request." );
+                       }
+                       $req['headers']['content-length'] = 0;
+               }
+
+               $headers = array();
+               foreach ( $req['headers'] as $name => $value ) {
+                       if ( strpos( $name, ': ' ) ) {
+                               throw new Exception( "Headers cannot have ':' in the name." );
+                       }
+                       $headers[] = $name . ': ' . trim( $value );
+               }
+               curl_setopt( $ch, CURLOPT_HTTPHEADER, $headers );
+
+               curl_setopt( $ch, CURLOPT_HEADERFUNCTION,
+                       function ( $ch, $header ) use ( &$req ) {
+                               $length = strlen( $header );
+                               $matches = array();
+                               if ( preg_match( "/^(HTTP\/1\.[01]) (\d{3}) (.*)/", $header, $matches ) ) {
+                                       $req['response']['code'] = (int)$matches[2];
+                                       $req['response']['reason'] = trim( $matches[3] );
+                                       return $length;
+                               }
+                               if ( strpos( $header, ":" ) === false ) {
+                                       return $length;
+                               }
+                               list( $name, $value ) = explode( ":", $header, 2 );
+                               $req['response']['headers'][strtolower( $name )] = trim( $value );
+                               return $length;
+                       }
+               );
+
+               if ( isset( $req['stream'] ) ) {
+                       // Don't just use CURLOPT_FILE as that might give:
+                       // curl_setopt(): cannot represent a stream of type Output as a STDIO FILE*
+                       // The callback here handles both normal files and php://temp handles.
+                       curl_setopt( $ch, CURLOPT_WRITEFUNCTION,
+                               function ( $ch, $data ) use ( &$req ) {
+                                       return fwrite( $req['stream'], $data );
+                               }
+                       );
+               } else {
+                       curl_setopt( $ch, CURLOPT_WRITEFUNCTION,
+                               function ( $ch, $data ) use ( &$req ) {
+                                       $req['response']['body'] .= $data;
+                                       return strlen( $data );
+                               }
+                       );
+               }
+
+               return $ch;
+       }
+
+       /**
+        * @return resource
+        */
+       protected function getCurlMulti() {
+               if ( !$this->multiHandle ) {
+                       $this->multiHandle = curl_multi_init();
+               }
+               return $this->multiHandle;
+       }
+
+       function __destruct() {
+               if ( $this->multiHandle ) {
+                       curl_multi_close( $this->multiHandle );
+               }
+       }
+}
diff --git a/includes/libs/RunningStat.php b/includes/libs/RunningStat.php
new file mode 100644 (file)
index 0000000..dda5254
--- /dev/null
@@ -0,0 +1,176 @@
+<?php
+/**
+ * Compute running mean, variance, and extrema of a stream of numbers.
+ *
+ * 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 Profiler
+ */
+
+// Needed due to PHP non-bug <https://bugs.php.net/bug.php?id=49828>.
+define( 'NEGATIVE_INF', -INF );
+
+/**
+ * Represents a running summary of a stream of numbers.
+ *
+ * RunningStat instances are accumulator-like objects that provide a set of
+ * continuously-updated summary statistics for a stream of numbers, without
+ * requiring that each value be stored. The measures it provides are the
+ * arithmetic mean, variance, standard deviation, and extrema (min and max);
+ * together they describe the central tendency and statistical dispersion of a
+ * set of values.
+ *
+ * One RunningStat instance can be merged into another; the resultant
+ * RunningStat has the state it would have had if it had accumulated each
+ * individual point. This allows data to be summarized in parallel and in
+ * stages without loss of fidelity.
+ *
+ * Based on a C++ implementation by John D. Cook:
+ *  <http://www.johndcook.com/standard_deviation.html>
+ *  <http://www.johndcook.com/skewness_kurtosis.html>
+ *
+ * The in-line documentation for this class incorporates content from the
+ * English Wikipedia articles "Variance", "Algorithms for calculating
+ * variance", and "Standard deviation".
+ *
+ * @since 1.23
+ */
+class RunningStat implements Countable {
+
+       /** @var int Number of samples. **/
+       public $n = 0;
+
+       /** @var float The first moment (or mean, or expected value). **/
+       public $m1 = 0.0;
+
+       /** @var float The second central moment (or variance). **/
+       public $m2 = 0.0;
+
+       /** @var float The least value in the the set. **/
+       public $min = INF;
+
+       /** @var float The most value in the set. **/
+       public $max = NEGATIVE_INF;
+
+       /**
+        * Count the number of accumulated values.
+        * @return int Number of values
+        */
+       public function count() {
+               return $this->n;
+       }
+
+       /**
+        * Add a number to the data set.
+        * @param int|float $x Value to add
+        */
+       public function push( $x ) {
+               $x = (float) $x;
+
+               $this->min = min( $this->min, $x );
+               $this->max = max( $this->max, $x );
+
+               $n1 = $this->n;
+               $this->n += 1;
+               $delta = $x - $this->m1;
+               $delta_n = $delta / $this->n;
+               $this->m1 += $delta_n;
+               $this->m2 += $delta * $delta_n * $n1;
+       }
+
+       /**
+        * Get the mean, or expected value.
+        *
+        * The arithmetic mean is the sum of all measurements divided by the number
+        * of observations in the data set.
+        *
+        * @return float Mean
+        */
+       public function getMean() {
+               return $this->m1;
+       }
+
+       /**
+        * Get the estimated variance.
+        *
+        * Variance measures how far a set of numbers is spread out. A small
+        * variance indicates that the data points tend to be very close to the
+        * mean (and hence to each other), while a high variance indicates that the
+        * data points are very spread out from the mean and from each other.
+        *
+        * @return float Estimated variance
+        */
+       public function getVariance() {
+               if ( $this->n === 0 ) {
+                       // The variance of the empty set is undefined.
+                       return NAN;
+               } elseif ( $this->n === 1 ) {
+                       return 0.0;
+               } else {
+                       return $this->m2 / ( $this->n - 1.0 );
+               }
+       }
+
+       /**
+        * Get the estimated stanard deviation.
+        *
+        * The standard deviation of a statistical population is the square root of
+        * its variance. It shows shows how much variation from the mean exists. In
+        * addition to expressing the variability of a population, the standard
+        * deviation is commonly used to measure confidence in statistical conclusions.
+        *
+        * @return float Estimated standard deviation
+        */
+       public function getStdDev() {
+               return sqrt( $this->getVariance() );
+       }
+
+       /**
+        * Merge another RunningStat instance into this instance.
+        *
+        * This instance then has the state it would have had if all the data had
+        * been accumulated by it alone.
+        *
+        * @param RunningStat RunningStat instance to merge into this one
+        */
+       public function merge( RunningStat $other ) {
+               // If the other RunningStat is empty, there's nothing to do.
+               if ( $other->n === 0 ) {
+                       return;
+               }
+
+               // If this RunningStat is empty, copy values from other RunningStat.
+               if ( $this->n === 0 ) {
+                       $this->n = $other->n;
+                       $this->m1 = $other->m1;
+                       $this->m2 = $other->m2;
+                       $this->min = $other->min;
+                       $this->max = $other->max;
+                       return;
+               }
+
+               $n = $this->n + $other->n;
+               $delta = $other->m1 - $this->m1;
+               $delta2 = $delta * $delta;
+
+               $this->m1 = ( ( $this->n * $this->m1 ) + ( $other->n * $other->m1 ) ) / $n;
+               $this->m2 = $this->m2 + $other->m2 + ( $delta2 * $this->n * $other->n / $n );
+               $this->min = min( $this->min, $other->min );
+               $this->max = max( $this->max, $other->max );
+               $this->n = $n;
+       }
+}
diff --git a/includes/libs/ScopedCallback.php b/includes/libs/ScopedCallback.php
new file mode 100644 (file)
index 0000000..631b651
--- /dev/null
@@ -0,0 +1,73 @@
+<?php
+/**
+ * This file deals with RAII style scoped callbacks.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Class for asserting that a callback happens when an dummy object leaves scope
+ *
+ * @since 1.21
+ */
+class ScopedCallback {
+       /** @var callable */
+       protected $callback;
+
+       /**
+        * @param callable $callback
+        * @throws Exception
+        */
+       public function __construct( $callback ) {
+               if ( !is_callable( $callback ) ) {
+                       throw new InvalidArgumentException( "Provided callback is not valid." );
+               }
+               $this->callback = $callback;
+       }
+
+       /**
+        * Trigger a scoped callback and destroy it.
+        * This is the same is just setting it to null.
+        *
+        * @param ScopedCallback $sc
+        */
+       public static function consume( ScopedCallback &$sc = null ) {
+               $sc = null;
+       }
+
+       /**
+        * Destroy a scoped callback without triggering it
+        *
+        * @param ScopedCallback $sc
+        */
+       public static function cancel( ScopedCallback &$sc = null ) {
+               if ( $sc ) {
+                       $sc->callback = null;
+               }
+               $sc = null;
+       }
+
+       /**
+        * Trigger the callback when this leaves scope
+        */
+       function __destruct() {
+               if ( $this->callback !== null ) {
+                       call_user_func( $this->callback );
+               }
+       }
+}
index 92ca7d8..eb98a4a 100644 (file)
@@ -39,6 +39,13 @@ class XmlTypeCheck {
         */
        public $rootElement = '';
 
+       /**
+        * Additional parsing options
+        */
+       private $parserOptions = array(
+               'processing_instruction_handler' => '',
+       );
+
        /**
         * @param string $input a filename or string containing the XML element
         * @param callable $filterCallback (optional)
@@ -48,9 +55,13 @@ class XmlTypeCheck {
         *        Filter should return 'true' to toggle on $this->filterMatch
         * @param boolean $isFile (optional) indicates if the first parameter is a
         *        filename (default, true) or if it is a string (false)
+        * @param array $options list of additional parsing options:
+        *        processing_instruction_handler: Callback for xml_set_processing_instruction_handler
         */
-       function __construct( $input, $filterCallback = null, $isFile = true ) {
+       function __construct( $input, $filterCallback = null, $isFile = true, $options = array() ) {
                $this->filterCallback = $filterCallback;
+               $this->parserOptions = array_merge( $this->parserOptions, $options );
+
                if ( $isFile ) {
                        $this->validateFromFile( $input );
                } else {
@@ -107,6 +118,12 @@ class XmlTypeCheck {
                // case folding violates XML standard, turn it off
                xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
                xml_set_element_handler( $parser, array( $this, 'rootElementOpen' ), false );
+               if ( $this->parserOptions['processing_instruction_handler'] ) {
+                       xml_set_processing_instruction_handler(
+                               $parser,
+                               array( $this, 'processingInstructionHandler' )
+                       );
+               }
                return $parser;
        }
 
@@ -181,4 +198,16 @@ class XmlTypeCheck {
                        $this->filterMatch = true;
                }
        }
+
+       /**
+        * @param $parser
+        * @param $target
+        * @param $data
+        */
+       private function processingInstructionHandler( $parser, $target, $data ) {
+               if ( call_user_func( $this->parserOptions['processing_instruction_handler'], $target, $data ) ) {
+                       // Filter hit!
+                       $this->filterMatch = true;
+               }
+       }
 }
index 01528b7..b658ac1 100644 (file)
@@ -36,6 +36,7 @@ class DeleteLogFormatter extends LogFormatter {
                                return "$key-legacy";
                        }
                }
+
                return $key;
        }
 
@@ -47,11 +48,14 @@ class DeleteLogFormatter extends LogFormatter {
                $params = parent::getMessageParameters();
                $subtype = $this->entry->getSubtype();
                if ( in_array( $subtype, array( 'event', 'revision' ) ) ) {
-                       // $params[3] here is 'revision' for page revisions, 'oldimage' for file versions, or a comma-separated list of log_ids for log entries.
-                       // $subtype here is 'revision' for page revisions and file versions, or 'event' for log entries.
-                       if (
-                               ( $subtype === 'event' && count( $params ) === 6 ) ||
-                               ( $subtype === 'revision' && isset( $params[3] ) && ( $params[3] === 'revision' || $params[3] === 'oldimage' ) )
+                       // $params[3] here is 'revision' for page revisions, 'oldimage' for
+                       // file versions, or a comma-separated list of log_ids for log
+                       // entries. $subtype here is 'revision' for page revisions and file
+                       // versions, or 'event' for log entries.
+                       if ( ( $subtype === 'event' && count( $params ) === 6 )
+                               || ( $subtype === 'revision' && isset( $params[3] )
+                                       && ( $params[3] === 'revision' || $params[3] === 'oldimage' )
+                               )
                        ) {
                                $paramStart = $subtype === 'revision' ? 4 : 3;
 
@@ -74,19 +78,24 @@ class DeleteLogFormatter extends LogFormatter {
                                $newParams[3] = $changeText;
                                $count = count( explode( ',', $params[$paramStart] ) );
                                $newParams[4] = $this->context->getLanguage()->formatNum( $count );
-                               return $this->parsedParametersDeleteLog = $newParams;
+
+                               $this->parsedParametersDeleteLog = $newParams;
+                               return $this->parsedParametersDeleteLog;
                        } else {
-                               return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+                               $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+                               return $this->parsedParametersDeleteLog;
                        }
                }
 
-               return $this->parsedParametersDeleteLog = $params;
+               $this->parsedParametersDeleteLog = $params;
+               return $this->parsedParametersDeleteLog;
        }
 
        protected function parseBitField( $string ) {
                // Input is like ofield=2134 or just the number
                if ( strpos( $string, 'field=' ) === 1 ) {
                        list( , $field ) = explode( '=', $string );
+
                        return (int)$field;
                } else {
                        return (int)$string;
@@ -95,102 +104,106 @@ class DeleteLogFormatter extends LogFormatter {
 
        public function getActionLinks() {
                $user = $this->context->getUser();
-               if ( !$user->isAllowed( 'deletedhistory' ) || $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
+               if ( !$user->isAllowed( 'deletedhistory' )
+                       || $this->entry->isDeleted( LogPage::DELETED_ACTION )
+               ) {
                        return '';
                }
 
                switch ( $this->entry->getSubtype() ) {
-               case 'delete': // Show undelete link
-                       if ( $user->isAllowed( 'undelete' ) ) {
-                               $message = 'undeletelink';
-                       } else {
-                               $message = 'undeleteviewlink';
-                       }
-                       $revert = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Undelete' ),
-                               $this->msg( $message )->escaped(),
-                               array(),
-                               array( 'target' => $this->entry->getTarget()->getPrefixedDBkey() )
-                       );
-                       return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
-
-               case 'revision': // If an edit was hidden from a page give a review link to the history
-                       $params = $this->extractParameters();
-                       if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
-                               return '';
-                       }
-
-                       // Different revision types use different URL params...
-                       $key = $params[3];
-                       // This is a CSV of the IDs
-                       $ids = explode( ',', $params[4] );
-
-                       $links = array();
-
-                       // If there's only one item, we can show a diff link
-                       if ( count( $ids ) == 1 ) {
-                               // Live revision diffs...
-                               if ( $key == 'oldid' || $key == 'revision' ) {
-                                       $links[] = Linker::linkKnown(
-                                               $this->entry->getTarget(),
-                                               $this->msg( 'diff' )->escaped(),
-                                               array(),
-                                               array(
-                                                       'diff' => intval( $ids[0] ),
-                                                       'unhide' => 1
-                                               )
-                                       );
-                               // Deleted revision diffs...
-                               } elseif ( $key == 'artimestamp' || $key == 'archive' ) {
-                                       $links[] = Linker::linkKnown(
-                                               SpecialPage::getTitleFor( 'Undelete' ),
-                                               $this->msg( 'diff' )->escaped(),
-                                               array(),
-                                               array(
-                                                       'target' => $this->entry->getTarget()->getPrefixedDBkey(),
-                                                       'diff' => 'prev',
-                                                       'timestamp' => $ids[0]
-                                               )
-                                       );
+                       case 'delete': // Show undelete link
+                               if ( $user->isAllowed( 'undelete' ) ) {
+                                       $message = 'undeletelink';
+                               } else {
+                                       $message = 'undeleteviewlink';
+                               }
+                               $revert = Linker::linkKnown(
+                                       SpecialPage::getTitleFor( 'Undelete' ),
+                                       $this->msg( $message )->escaped(),
+                                       array(),
+                                       array( 'target' => $this->entry->getTarget()->getPrefixedDBkey() )
+                               );
+
+                               return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
+
+                       case 'revision': // If an edit was hidden from a page give a review link to the history
+                               $params = $this->extractParameters();
+                               if ( !isset( $params[3] ) || !isset( $params[4] ) ) {
+                                       return '';
                                }
-                       }
-
-                       // View/modify link...
-                       $links[] = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Revisiondelete' ),
-                               $this->msg( 'revdel-restore' )->escaped(),
-                               array(),
-                               array(
-                                       'target' => $this->entry->getTarget()->getPrefixedText(),
-                                       'type' => $key,
-                                       'ids' => implode( ',', $ids ),
-                               )
-                       );
 
-                       return $this->msg( 'parentheses' )->rawParams(
-                               $this->context->getLanguage()->pipeList( $links ) )->escaped();
+                               // Different revision types use different URL params...
+                               $key = $params[3];
+                               // This is a CSV of the IDs
+                               $ids = explode( ',', $params[4] );
+
+                               $links = array();
+
+                               // If there's only one item, we can show a diff link
+                               if ( count( $ids ) == 1 ) {
+                                       // Live revision diffs...
+                                       if ( $key == 'oldid' || $key == 'revision' ) {
+                                               $links[] = Linker::linkKnown(
+                                                       $this->entry->getTarget(),
+                                                       $this->msg( 'diff' )->escaped(),
+                                                       array(),
+                                                       array(
+                                                               'diff' => intval( $ids[0] ),
+                                                               'unhide' => 1
+                                                       )
+                                               );
+                                               // Deleted revision diffs...
+                                       } elseif ( $key == 'artimestamp' || $key == 'archive' ) {
+                                               $links[] = Linker::linkKnown(
+                                                       SpecialPage::getTitleFor( 'Undelete' ),
+                                                       $this->msg( 'diff' )->escaped(),
+                                                       array(),
+                                                       array(
+                                                               'target' => $this->entry->getTarget()->getPrefixedDBkey(),
+                                                               'diff' => 'prev',
+                                                               'timestamp' => $ids[0]
+                                                       )
+                                               );
+                                       }
+                               }
 
-               case 'event': // Hidden log items, give review link
-                       $params = $this->extractParameters();
-                       if ( !isset( $params[3] ) ) {
+                               // View/modify link...
+                               $links[] = Linker::linkKnown(
+                                       SpecialPage::getTitleFor( 'Revisiondelete' ),
+                                       $this->msg( 'revdel-restore' )->escaped(),
+                                       array(),
+                                       array(
+                                               'target' => $this->entry->getTarget()->getPrefixedText(),
+                                               'type' => $key,
+                                               'ids' => implode( ',', $ids ),
+                                       )
+                               );
+
+                               return $this->msg( 'parentheses' )->rawParams(
+                                       $this->context->getLanguage()->pipeList( $links ) )->escaped();
+
+                       case 'event': // Hidden log items, give review link
+                               $params = $this->extractParameters();
+                               if ( !isset( $params[3] ) ) {
+                                       return '';
+                               }
+                               // This is a CSV of the IDs
+                               $query = $params[3];
+                               // Link to each hidden object ID, $params[1] is the url param
+                               $revert = Linker::linkKnown(
+                                       SpecialPage::getTitleFor( 'Revisiondelete' ),
+                                       $this->msg( 'revdel-restore' )->escaped(),
+                                       array(),
+                                       array(
+                                               'target' => $this->entry->getTarget()->getPrefixedText(),
+                                               'type' => 'logging',
+                                               'ids' => $query
+                                       )
+                               );
+
+                               return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
+                       default:
                                return '';
-                       }
-                       // This is a CSV of the IDs
-                       $query = $params[3];
-                       // Link to each hidden object ID, $params[1] is the url param
-                       $revert = Linker::linkKnown(
-                               SpecialPage::getTitleFor( 'Revisiondelete' ),
-                               $this->msg( 'revdel-restore' )->escaped(),
-                               array(),
-                               array(
-                                       'target' => $this->entry->getTarget()->getPrefixedText(),
-                                       'type' => 'logging',
-                                       'ids' => $query
-                               )
-                       );
-                       return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
-               default:
-                       return '';
                }
        }
 }
index a1cb3a7..71b4fc2 100644 (file)
@@ -33,7 +33,6 @@
  * @since 1.19
  */
 interface LogEntry {
-
        /**
         * The main log type.
         * @return string
@@ -100,7 +99,6 @@ interface LogEntry {
  * @since 1.19
  */
 abstract class LogEntryBase implements LogEntry {
-
        public function getFullType() {
                return $this->getType() . '/' . $this->getSubtype();
        }
@@ -117,7 +115,6 @@ abstract class LogEntryBase implements LogEntry {
        public function isLegacy() {
                return false;
        }
-
 }
 
 /**
@@ -160,12 +157,13 @@ class DatabaseLogEntry extends LogEntryBase {
        /**
         * Constructs new LogEntry from database result row.
         * Supports rows from both logging and recentchanges table.
-        * @param $row
+        * @param stdClass|array $row
         * @return DatabaseLogEntry
         */
        public static function newFromRow( $row ) {
-               if ( is_array( $row ) && isset( $row['rc_logid'] ) ) {
-                       return new RCDatabaseLogEntry( (object)$row );
+               $row = (object)$row;
+               if ( isset( $row->rc_logid ) ) {
+                       return new RCDatabaseLogEntry( $row );
                } else {
                        return new self( $row );
                }
@@ -173,10 +171,17 @@ class DatabaseLogEntry extends LogEntryBase {
 
        // Non-static->
 
-       /// Database result row.
+       /** @var stdClass Database result row. */
        protected $row;
+
+       /** @var User */
        protected $performer;
 
+       /** @var bool Whether the parameters for this log entry are stored in new
+        *    or old format.
+        */
+       protected $legacy;
+
        protected function __construct( $row ) {
                $this->row = $row;
        }
@@ -202,6 +207,7 @@ class DatabaseLogEntry extends LogEntryBase {
        public function isLegacy() {
                // This does the check
                $this->getParameters();
+
                return $this->legacy;
        }
 
@@ -229,6 +235,7 @@ class DatabaseLogEntry extends LogEntryBase {
                                $this->legacy = true;
                        }
                }
+
                return $this->params;
        }
 
@@ -246,6 +253,7 @@ class DatabaseLogEntry extends LogEntryBase {
                                $this->performer = User::newFromName( $userText, false );
                        }
                }
+
                return $this->performer;
        }
 
@@ -253,6 +261,7 @@ class DatabaseLogEntry extends LogEntryBase {
                $namespace = $this->row->log_namespace;
                $page = $this->row->log_title;
                $title = Title::makeTitle( $namespace, $page );
+
                return $title;
        }
 
@@ -267,7 +276,6 @@ class DatabaseLogEntry extends LogEntryBase {
        public function getDeleted() {
                return $this->row->log_deleted;
        }
-
 }
 
 class RCDatabaseLogEntry extends DatabaseLogEntry {
@@ -301,6 +309,7 @@ class RCDatabaseLogEntry extends DatabaseLogEntry {
                                $this->performer = User::newFromName( $userText, false );
                        }
                }
+
                return $this->performer;
        }
 
@@ -308,6 +317,7 @@ class RCDatabaseLogEntry extends DatabaseLogEntry {
                $namespace = $this->row->rc_namespace;
                $page = $this->row->rc_title;
                $title = Title::makeTitle( $namespace, $page );
+
                return $title;
        }
 
@@ -322,7 +332,6 @@ class RCDatabaseLogEntry extends DatabaseLogEntry {
        public function getDeleted() {
                return $this->row->rc_deleted;
        }
-
 }
 
 /**
@@ -331,15 +340,35 @@ class RCDatabaseLogEntry extends DatabaseLogEntry {
  * @since 1.19
  */
 class ManualLogEntry extends LogEntryBase {
-       protected $type; ///!< @var string
-       protected $subtype; ///!< @var string
-       protected $parameters = array(); ///!< @var array
-       protected $relations = array(); ///!< @var array
-       protected $performer; ///!< @var User
-       protected $target; ///!< @var Title
-       protected $timestamp; ///!< @var string
-       protected $comment = ''; ///!< @var string
-       protected $deleted; ///!< @var int
+       /** @var string Type of log entry */
+       protected $type;
+
+       /** @var string Sub type of log entry */
+       protected $subtype;
+
+       /** @var array Parameters for log entry */
+       protected $parameters = array();
+
+       /** @var array */
+       protected $relations = array();
+
+       /** @var User Performer of the action for the log entry */
+       protected $performer;
+
+       /** @var Title Target title for the log entry */
+       protected $target;
+
+       /** @var string Timestamp of creation of the log entry */
+       protected $timestamp;
+
+       /** @var string Comment for the log entry */
+       protected $comment = '';
+
+       /** @var int Deletion state of the log entry */
+       protected $deleted;
+
+       /** @var int ID of the log entry */
+       protected $id;
 
        /**
         * Constructor.
@@ -378,7 +407,7 @@ class ManualLogEntry extends LogEntryBase {
         * Declare arbitrary tag/value relations to this log entry.
         * These can be used to filter log entries later on.
         *
-        * @param array Map of (tag => (list of values))
+        * @param array $relations Map of (tag => (list of values))
         * @since 1.22
         */
        public function setRelations( array $relations ) {
@@ -443,7 +472,8 @@ class ManualLogEntry extends LogEntryBase {
        /**
         * Inserts the entry into the logging table.
         * @param IDatabase $dbw
-        * @return int If of the log entry
+        * @return int ID of the log entry
+        * @throws MWException
         */
        public function insert( IDatabase $dbw = null ) {
                global $wgContLang;
@@ -484,8 +514,8 @@ class ManualLogEntry extends LogEntryBase {
                        }
                        foreach ( $values as $value ) {
                                $rows[] = array(
-                                       'ls_field'  => $tag,
-                                       'ls_value'  => $value,
+                                       'ls_field' => $tag,
+                                       'ls_value' => $value,
                                        'ls_log_id' => $this->id
                                );
                        }
@@ -520,6 +550,7 @@ class ManualLogEntry extends LogEntryBase {
                                $ip = $user->getName();
                        }
                }
+
                return RecentChange::newLogEntry(
                        $this->getTimestamp(),
                        $logpage,
@@ -534,7 +565,6 @@ class ManualLogEntry extends LogEntryBase {
                        $newId,
                        $formatter->getIRCActionComment() // Used for IRC feeds
                );
-
        }
 
        /**
@@ -589,6 +619,7 @@ class ManualLogEntry extends LogEntryBase {
 
        public function getTimestamp() {
                $ts = $this->timestamp !== null ? $this->timestamp : wfTimestampNow();
+
                return wfTimestamp( TS_MW, $ts );
        }
 
@@ -599,5 +630,4 @@ class ManualLogEntry extends LogEntryBase {
        public function getDeleted() {
                return (int)$this->deleted;
        }
-
 }
index c27b57a..ead418d 100644 (file)
@@ -40,10 +40,11 @@ class LogEventsList extends ContextSource {
         * The first two parameters used to be $skin and $out, but now only a context
         * is needed, that's why there's a second unused parameter.
         *
-        * @param $context IContextSource Context to use; formerly it was Skin object.
-        * @param $unused void Unused; used to be an OutputPage object.
-        * @param int $flags flags; can be a combinaison of self::NO_ACTION_LINK,
-        *        self::NO_EXTRA_USER_LINKS or self::USE_REVDEL_CHECKBOXES.
+        * @param IContextSource|Skin $context Context to use; formerly it was
+        *   a Skin object. Use of Skin is deprecated.
+        * @param null $unused Unused; used to be an OutputPage object.
+        * @param int $flags Can be a combination of self::NO_ACTION_LINK,
+        *   self::NO_EXTRA_USER_LINKS or self::USE_REVDEL_CHECKBOXES.
         */
        public function __construct( $context, $unused = null, $flags = 0 ) {
                if ( $context instanceof IContextSource ) {
@@ -60,15 +61,16 @@ class LogEventsList extends ContextSource {
         * Deprecated alias for getTitle(); do not use.
         *
         * @deprecated in 1.20; use getTitle() instead.
-        * @return Title object
+        * @return Title
         */
        public function getDisplayTitle() {
+               wfDeprecated( __METHOD__, '1.20' );
                return $this->getTitle();
        }
 
        /**
         * Set page title and show header for this log type
-        * @param $type Array
+        * @param array $type
         * @deprecated in 1.19
         */
        public function showHeader( $type ) {
@@ -88,17 +90,18 @@ class LogEventsList extends ContextSource {
        /**
         * Show options for the log list
         *
-        * @param string $types or Array
-        * @param $user String
-        * @param $page String
-        * @param $pattern String
-        * @param $year Integer: year
-        * @param $month Integer: month
-        * @param $filter: array
-        * @param $tagFilter: array?
+        * @param array|string $types
+        * @param string $user
+        * @param string $page
+        * @param string $pattern
+        * @param int $year Year
+        * @param int $month Month
+        * @param array $filter
+        * @param string $tagFilter Tag to select by default
         */
-       public function showOptions( $types = array(), $user = '', $page = '', $pattern = '', $year = '',
-               $month = '', $filter = null, $tagFilter = '' ) {
+       public function showOptions( $types = array(), $user = '', $page = '', $pattern = '', $year = 0,
+               $month = 0, $filter = null, $tagFilter = ''
+       ) {
                global $wgScript, $wgMiserMode;
 
                $title = SpecialPage::getTitleFor( 'Log' );
@@ -122,7 +125,7 @@ class LogEventsList extends ContextSource {
                }
 
                // date menu
-               $html .= Xml::tags( 'p', null, Xml::dateMenu( $year, $month ) );
+               $html .= Xml::tags( 'p', null, Xml::dateMenu( (int)$year, (int)$month ) );
 
                // Tag filter
                if ( $tagSelector ) {
@@ -147,8 +150,8 @@ class LogEventsList extends ContextSource {
        }
 
        /**
-        * @param $filter Array
-        * @return String: Formatted HTML
+        * @param array $filter
+        * @return string Formatted HTML
         */
        private function getFilterLinks( $filter ) {
                // show/hide links
@@ -176,6 +179,7 @@ class LogEventsList extends ContextSource {
                        $links[$type] = $this->msg( "log-show-hide-{$type}" )->rawParams( $link )->escaped();
                        $hiddens .= Html::hidden( "hide_{$type}_log", $val ) . "\n";
                }
+
                // Build links
                return '<small>' . $this->getLanguage()->pipeList( $links ) . '</small>' . $hiddens;
        }
@@ -191,17 +195,19 @@ class LogEventsList extends ContextSource {
                        unset( $this->mDefaultQuery['month'] );
                        unset( $this->mDefaultQuery['year'] );
                }
+
                return $this->mDefaultQuery;
        }
 
        /**
-        * @param $queryTypes Array
-        * @return String: Formatted HTML
+        * @param array $queryTypes
+        * @return string Formatted HTML
         */
        private function getTypeMenu( $queryTypes ) {
                $queryType = count( $queryTypes ) == 1 ? $queryTypes[0] : '';
                $selector = $this->getTypeSelector();
                $selector->setDefault( $queryType );
+
                return $selector->getHtml();
        }
 
@@ -238,23 +244,35 @@ class LogEventsList extends ContextSource {
        }
 
        /**
-        * @param $user String
-        * @return String: Formatted HTML
+        * @param string $user
+        * @return string Formatted HTML
         */
        private function getUserInput( $user ) {
-               return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( $this->msg( 'specialloguserlabel' )->text(), 'user', 'mw-log-user', 15, $user ) .
-                       '</span>';
+               $label = Xml::inputLabel(
+                       $this->msg( 'specialloguserlabel' )->text(),
+                       'user',
+                       'mw-log-user',
+                       15,
+                       $user
+               );
+
+               return '<span style="white-space: nowrap">' . $label . '</span>';
        }
 
        /**
-        * @param $title String
-        * @return String: Formatted HTML
+        * @param string $title
+        * @return string Formatted HTML
         */
        private function getTitleInput( $title ) {
-               return '<span style="white-space: nowrap">' .
-                       Xml::inputLabel( $this->msg( 'speciallogtitlelabel' )->text(), 'page', 'mw-log-page', 20, $title ) .
-                       '</span>';
+               $label = Xml::inputLabel(
+                       $this->msg( 'speciallogtitlelabel' )->text(),
+                       'page',
+                       'mw-log-page',
+                       20,
+                       $title
+               );
+
+               return '<span style="white-space: nowrap">' . $label .  '</span>';
        }
 
        /**
@@ -268,7 +286,7 @@ class LogEventsList extends ContextSource {
        }
 
        /**
-        * @param $types
+        * @param array $types
         * @return string
         */
        private function getExtraInputs( $types ) {
@@ -281,6 +299,7 @@ class LogEventsList extends ContextSource {
                        return Xml::inputLabel( $this->msg( 'revdelete-offender' )->text(), 'offender',
                                'mw-log-offender', 20, $offender );
                }
+
                return '';
        }
 
@@ -299,8 +318,8 @@ class LogEventsList extends ContextSource {
        }
 
        /**
-        * @param $row Row: a single row from the result set
-        * @return String: Formatted HTML list item
+        * @param stdClass $row A single row from the result set
+        * @return string Formatted HTML list item
         */
        public function logLine( $row ) {
                $entry = DatabaseLogEntry::newFromRow( $row );
@@ -339,12 +358,15 @@ class LogEventsList extends ContextSource {
        }
 
        /**
-        * @param $row Row
+        * @param stdClass $row Row
         * @return string
         */
        private function getShowHideLinks( $row ) {
-               if ( ( $this->flags == self::NO_ACTION_LINK ) // we don't want to see the links
-                       || $row->log_type == 'suppress' ) { // no one can hide items from the suppress log
+               // We don't want to see the links and
+               // no one can hide items from the suppress log.
+               if ( ( $this->flags == self::NO_ACTION_LINK )
+                       || $row->log_type == 'suppress'
+               ) {
                        return '';
                }
                $del = '';
@@ -353,14 +375,21 @@ class LogEventsList extends ContextSource {
                if ( $user->isAllowed( 'deletedhistory' ) ) {
                        $canHide = $user->isAllowed( 'deletelogentry' );
                        if ( $row->log_deleted || $canHide ) {
-                               if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES ) { // Show checkboxes instead of links.
-                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
+                               // Show checkboxes instead of links.
+                               if ( $canHide && $this->flags & self::USE_REVDEL_CHECKBOXES ) {
+                                       // If event was hidden from sysops
+                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) {
                                                $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
                                        } else {
-                                               $del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
+                                               $del = Xml::check(
+                                                       'showhiderevisions',
+                                                       false,
+                                                       array( 'name' => 'ids[' . $row->log_id . ']' )
+                                               );
                                        }
                                } else {
-                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) { // If event was hidden from sysops
+                                       // If event was hidden from sysops
+                                       if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED, $user ) ) {
                                                $del = Linker::revDeleteLinkDisabled( $canHide );
                                        } else {
                                                $query = array(
@@ -368,20 +397,25 @@ class LogEventsList extends ContextSource {
                                                        'type' => 'logging',
                                                        'ids' => $row->log_id,
                                                );
-                                               $del = Linker::revDeleteLink( $query, self::isDeleted( $row, LogPage::DELETED_RESTRICTED ), $canHide );
+                                               $del = Linker::revDeleteLink(
+                                                       $query,
+                                                       self::isDeleted( $row, LogPage::DELETED_RESTRICTED ),
+                                                       $canHide
+                                               );
                                        }
                                }
                        }
                }
+
                return $del;
        }
 
        /**
-        * @param $row Row
-        * @param $type Mixed: string/array
-        * @param $action Mixed: string/array
-        * @param $right string
-        * @return Boolean
+        * @param stdClass $row Row
+        * @param string|array $type
+        * @param string|array $action
+        * @param string $right
+        * @return bool
         */
        public static function typeAction( $row, $type, $action, $right = '' ) {
                $match = is_array( $type ) ?
@@ -394,6 +428,7 @@ class LogEventsList extends ContextSource {
                                $match = $wgUser->isAllowed( $right );
                        }
                }
+
                return $match;
        }
 
@@ -401,10 +436,10 @@ class LogEventsList extends ContextSource {
         * Determine if the current user is allowed to view a particular
         * field of this log row, if it's marked as deleted.
         *
-        * @param $row Row
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
-        * @return Boolean
+        * @param stdClass $row Row
+        * @param int $field
+        * @param User $user User to check, or null to use $wgUser
+        * @return bool
         */
        public static function userCan( $row, $field, User $user = null ) {
                return self::userCanBitfield( $row->log_deleted, $field, $user );
@@ -414,10 +449,10 @@ class LogEventsList extends ContextSource {
         * Determine if the current user is allowed to view a particular
         * field of this log row, if it's marked as deleted.
         *
-        * @param $bitfield Integer (current field)
-        * @param $field Integer
-        * @param $user User object to check, or null to use $wgUser
-        * @return Boolean
+        * @param int $bitfield Current field
+        * @param int $field
+        * @param User $user User to check, or null to use $wgUser
+        * @return bool
         */
        public static function userCanBitfield( $bitfield, $field, User $user = null ) {
                if ( $bitfield & $field ) {
@@ -431,16 +466,17 @@ class LogEventsList extends ContextSource {
                                global $wgUser;
                                $user = $wgUser;
                        }
+
                        return $user->isAllowed( $permission );
-               } else {
-                       return true;
                }
+
+               return true;
        }
 
        /**
-        * @param $row Row
-        * @param $field Integer: one of DELETED_* bitfield constants
-        * @return Boolean
+        * @param stdClass $row Row
+        * @param int $field One of DELETED_* bitfield constants
+        * @return bool
         */
        public static function isDeleted( $row, $field ) {
                return ( $row->log_deleted & $field ) == $field;
@@ -449,7 +485,7 @@ class LogEventsList extends ContextSource {
        /**
         * Show log extract. Either with text and a box (set $msgKey) or without (don't set $msgKey)
         *
-        * @param $out OutputPage|String-by-reference
+        * @param OutputPage|string $out By-reference
         * @param string|array $types Log types to show
         * @param string|Title $page The page title to show log entries for
         * @param string $user The user who made the log entries
@@ -466,7 +502,7 @@ class LogEventsList extends ContextSource {
         * - wrap String Wrap the message in html (usually something like "<div ...>$1</div>").
         * - flags Integer display flags (NO_ACTION_LINK,NO_EXTRA_USER_LINKS)
         * - useRequestParams boolean Set true to use Pager-related parameters in the WebRequest
-        * @return Integer Number of total log items (not limited by $lim)
+        * @return int Number of total log items (not limited by $lim)
         */
        public static function showLogExtract(
                &$out, $types = array(), $page = '', $user = '', $param = array()
@@ -511,17 +547,28 @@ class LogEventsList extends ContextSource {
                        $pager->mOffset = "";
                        $pager->mIsBackwards = false;
                }
+
                if ( isset( $param['offset'] ) ) { # Tell pager to ignore WebRequest offset
                        $pager->setOffset( $param['offset'] );
                }
+
                if ( $lim > 0 ) {
                        $pager->mLimit = $lim;
                }
+
                $logBody = $pager->getBody();
                $s = '';
+
                if ( $logBody ) {
                        if ( $msgKey[0] ) {
-                               $s = '<div class="mw-warning-with-logexcerpt">';
+                               $dir = $context->getLanguage()->getDir();
+                               $lang = $context->getLanguage()->getCode();
+
+                               $s = Xml::openElement( 'div', array(
+                                       'class' => "mw-warning-with-logexcerpt mw-content-$dir",
+                                       'dir' => $dir,
+                                       'lang' => $lang,
+                               ) );
 
                                if ( count( $msgKey ) == 1 ) {
                                        $s .= $context->msg( $msgKey[0] )->parseAsBlock();
@@ -538,6 +585,7 @@ class LogEventsList extends ContextSource {
                        $s = Html::rawElement( 'div', array( 'class' => 'mw-warning-logempty' ),
                                $context->msg( 'logempty' )->parse() );
                }
+
                if ( $pager->getNumRows() > $pager->mLimit ) { # Show "Full log" link
                        $urlParam = array();
                        if ( $page instanceof Title ) {
@@ -545,16 +593,20 @@ class LogEventsList extends ContextSource {
                        } elseif ( $page != '' ) {
                                $urlParam['page'] = $page;
                        }
+
                        if ( $user != '' ) {
                                $urlParam['user'] = $user;
                        }
+
                        if ( !is_array( $types ) ) { # Make it an array, if it isn't
                                $types = array( $types );
                        }
+
                        # If there is exactly one log type, we can link to Special:Log?type=foo
                        if ( count( $types ) == 1 ) {
                                $urlParam['type'] = $types[0];
                        }
+
                        $s .= Linker::link(
                                SpecialPage::getTitleFor( 'Log' ),
                                $context->msg( 'log-fulllog' )->escaped(),
@@ -562,6 +614,7 @@ class LogEventsList extends ContextSource {
                                $urlParam
                        );
                }
+
                if ( $logBody && $msgKey[0] ) {
                        $s .= '</div>';
                }
@@ -586,10 +639,10 @@ class LogEventsList extends ContextSource {
        /**
         * SQL clause to skip forbidden log types for this user
         *
-        * @param $db DatabaseBase
-        * @param $audience string, public/user
-        * @param $user User object to check, or null to use $wgUser
-        * @return Mixed: string or false
+        * @param DatabaseBase $db
+        * @param string $audience Public/user
+        * @param User $user User to check, or null to use $wgUser
+        * @return string|bool String on success, false on failure.
         */
        public static function getExcludeClause( $db, $audience = 'public', User $user = null ) {
                global $wgLogRestrictions;
@@ -613,6 +666,7 @@ class LogEventsList extends ContextSource {
                } elseif ( $hiddenLogs ) {
                        return 'log_type NOT IN (' . $db->makeList( $hiddenLogs ) . ')';
                }
+
                return false;
        }
 }
index 8f60aee..9e7f056 100644 (file)
@@ -39,7 +39,7 @@ class LogFormatter {
 
        /**
         * Constructs a new formatter suitable for given entry.
-        * @param $entry LogEntry
+        * @param LogEntry $entry
         * @return LogFormatter
         */
        public static function newFromEntry( LogEntry $entry ) {
@@ -74,7 +74,7 @@ class LogFormatter {
 
        // Nonstatic->
 
-       /// @var LogEntry
+       /** @var LogEntryBase */
        protected $entry;
 
        /// Integer constant for handling log_deleted
@@ -88,10 +88,11 @@ class LogFormatter {
         * be included in page history or send to IRC feed. Links are replaced
         * with plaintext or with [[pagename]] kind of syntax, that is parsed
         * by page histories and IRC feeds.
-        * @var boolean
+        * @var string
         */
        protected $plaintext = false;
 
+       /** @var string */
        protected $irctext = false;
 
        protected function __construct( LogEntry $entry ) {
@@ -101,7 +102,7 @@ class LogFormatter {
 
        /**
         * Replace the default context
-        * @param $context IContextSource
+        * @param IContextSource $context
         */
        public function setContext( IContextSource $context ) {
                $this->context = $context;
@@ -111,7 +112,7 @@ class LogFormatter {
         * Set the visibility restrictions for displaying content.
         * If set to public, and an item is deleted, then it will be replaced
         * with a placeholder even if the context user is allowed to view it.
-        * @param $audience integer self::FOR_THIS_USER or self::FOR_PUBLIC
+        * @param int $audience self::FOR_THIS_USER or self::FOR_PUBLIC
         */
        public function setAudience( $audience ) {
                $this->audience = ( $audience == self::FOR_THIS_USER )
@@ -121,7 +122,7 @@ class LogFormatter {
 
        /**
         * Check if a log item can be displayed
-        * @param $field integer LogPage::DELETED_* constant
+        * @param int $field LogPage::DELETED_* constant
         * @return bool
         */
        protected function canView( $field ) {
@@ -137,7 +138,7 @@ class LogFormatter {
         * If set to true, will produce user tool links after
         * the user name. This should be replaced with generic
         * CSS/JS solution.
-        * @param $value boolean
+        * @param bool $value
         */
        public function setShowUserToolLinks( $value ) {
                $this->linkFlood = $value;
@@ -148,12 +149,13 @@ class LogFormatter {
         * Usually you also want to set extraneous request context
         * to avoid formatting for any particular user.
         * @see getActionText()
-        * @return string text
+        * @return string Plain text
         */
        public function getPlainActionText() {
                $this->plaintext = true;
                $text = $this->getActionText();
                $this->plaintext = false;
+
                return $text;
        }
 
@@ -224,15 +226,19 @@ class LogFormatter {
                                                $text = wfMessage( 'undeletedarticle' )
                                                        ->rawParams( $target )->inContentLanguage()->escaped();
                                                break;
+                                       // @codingStandardsIgnoreStart Long line
                                        //case 'revision': // Revision deletion
                                        //case 'event': // Log deletion
-                                               // see https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/LogPage.php?&pathrev=97044&r1=97043&r2=97044
+                                       // see https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/LogPage.php?&pathrev=97044&r1=97043&r2=97044
                                        //default:
+                                       // @codingStandardsIgnoreEnd
                                }
                                break;
 
                        case 'patrol':
+                               // @codingStandardsIgnoreStart Long line
                                // https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/PatrolLog.php?&pathrev=97495&r1=97494&r2=97495
+                               // @codingStandardsIgnoreEnd
                                // Create a diff link to the patrolled revision
                                if ( $entry->getSubtype() === 'patrol' ) {
                                        $diffLink = htmlspecialchars(
@@ -247,18 +253,18 @@ class LogFormatter {
 
                        case 'protect':
                                switch ( $entry->getSubtype() ) {
-                               case 'protect':
-                                       $text = wfMessage( 'protectedarticle' )
-                                               ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
-                                       break;
-                               case 'unprotect':
-                                       $text = wfMessage( 'unprotectedarticle' )
-                                               ->rawParams( $target )->inContentLanguage()->escaped();
-                                       break;
-                               case 'modify':
-                                       $text = wfMessage( 'modifiedarticleprotection' )
-                                               ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
-                                       break;
+                                       case 'protect':
+                                               $text = wfMessage( 'protectedarticle' )
+                                                       ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
+                                               break;
+                                       case 'unprotect':
+                                               $text = wfMessage( 'unprotectedarticle' )
+                                                       ->rawParams( $target )->inContentLanguage()->escaped();
+                                               break;
+                                       case 'modify':
+                                               $text = wfMessage( 'modifiedarticleprotection' )
+                                                       ->rawParams( $target . ' ' . $parameters[0] )->inContentLanguage()->escaped();
+                                               break;
                                }
                                break;
 
@@ -316,8 +322,7 @@ class LogFormatter {
                                                break;
                                }
                                break;
-
-                       // case 'suppress' --private log -- aaron  (sign your messages so we know who to blame in a few years :-D)
+                       // case 'suppress' --private log -- aaron  (so we know who to blame in a few years :-D)
                        // default:
                }
                if ( is_null( $text ) ) {
@@ -326,6 +331,7 @@ class LogFormatter {
 
                $this->plaintext = false;
                $this->irctext = false;
+
                return $text;
        }
 
@@ -353,12 +359,13 @@ class LogFormatter {
        /**
         * Returns a sentence describing the log action. Usually
         * a Message object is returned, but old style log types
-        * and entries might return pre-escaped html string.
-        * @return Message|string pre-escaped html
+        * and entries might return pre-escaped HTML string.
+        * @return Message|string Pre-escaped HTML
         */
        protected function getActionMessage() {
                $message = $this->msg( $this->getMessageKey() );
                $message->params( $this->getMessageParameters() );
+
                return $message;
        }
 
@@ -367,7 +374,7 @@ class LogFormatter {
         * Default is logentry-TYPE-SUBTYPE for modern logs. Legacy log
         * types will use custom keys, and subclasses can also alter the
         * key depending on the entry itself.
-        * @return string message key
+        * @return string Message key
         */
        protected function getMessageKey() {
                $type = $this->entry->getType();
@@ -421,6 +428,7 @@ class LogFormatter {
                                }
                        }
                }
+
                return $params;
        }
 
@@ -446,7 +454,9 @@ class LogFormatter {
 
                // Bad things happens if the numbers are not in correct order
                ksort( $params );
-               return $this->parsedParameters = $params;
+
+               $this->parsedParameters = $params;
+               return $this->parsedParameters;
        }
 
        /**
@@ -472,7 +482,7 @@ class LogFormatter {
         *     * number: Format value as number
         * @param string $value The parameter value that should
         *                      be formated
-        * @return string or Message::numParam or Message::rawParam
+        * @return string|Message::numParam|Message::rawParam
         *         Formated value
         * @since 1.21
         */
@@ -524,10 +534,10 @@ class LogFormatter {
        /**
         * Helper to make a link to the page, taking the plaintext
         * value in consideration.
-        * @param $title Title the page
-        * @param array $parameters query parameters
+        * @param Title $title The page
+        * @param array $parameters Query parameters
         * @throws MWException
-        * @return String
+        * @return string
         */
        protected function makePageLink( Title $title = null, $parameters = array() ) {
                if ( !$this->plaintext ) {
@@ -538,6 +548,7 @@ class LogFormatter {
                        }
                        $link = '[[' . $title->getPrefixedText() . ']]';
                }
+
                return $link;
        }
 
@@ -545,7 +556,7 @@ class LogFormatter {
         * Provides the name of the user who performed the log action.
         * Used as part of log action message or standalone, depending
         * which parts of the log entry has been hidden.
-        * @return String
+        * @return string
         */
        public function getPerformerElement() {
                if ( $this->canView( LogPage::DELETED_USER ) ) {
@@ -582,8 +593,8 @@ class LogFormatter {
 
        /**
         * Helper method for displaying restricted element.
-        * @param $message string
-        * @return string HTML or wikitext
+        * @param string $message
+        * @return string HTML or wiki text
         */
        protected function getRestrictedElement( $message ) {
                if ( $this->plaintext ) {
@@ -592,26 +603,27 @@ class LogFormatter {
 
                $content = $this->msg( $message )->escaped();
                $attribs = array( 'class' => 'history-deleted' );
+
                return Html::rawElement( 'span', $attribs, $content );
        }
 
        /**
         * Helper method for styling restricted element.
-        * @param $content string
-        * @return string HTML or wikitext
+        * @param string $content
+        * @return string HTML or wiki text
         */
        protected function styleRestricedElement( $content ) {
                if ( $this->plaintext ) {
                        return $content;
                }
                $attribs = array( 'class' => 'history-deleted' );
+
                return Html::rawElement( 'span', $attribs, $content );
        }
 
        /**
         * Shortcut for wfMessage which honors local context.
-        * @todo Would it be better to require replacing the global context instead?
-        * @param $key string
+        * @param string $key
         * @return Message
         */
        protected function msg( $key ) {
@@ -635,18 +647,19 @@ class LogFormatter {
                                );
                        }
                }
+
                return $element;
        }
 
        /**
-        * @return Array of titles that should be preloaded with LinkBatch.
+        * @return array of titles that should be preloaded with LinkBatch.
         */
        public function getPreloadTitles() {
                return array();
        }
 
        /**
-        * @return Output of getMessageParameters() for testing
+        * @return array Output of getMessageParameters() for testing
         */
        public function getMessageParametersForTesting() {
                // This function was added because getMessageParameters() is
@@ -654,7 +667,6 @@ class LogFormatter {
                // problems with extensions
                return $this->getMessageParameters();
        }
-
 }
 
 /**
@@ -667,7 +679,6 @@ class LogFormatter {
  * @since 1.19
  */
 class LegacyLogFormatter extends LogFormatter {
-
        /**
         * Backward compatibility for extension changing the comment from
         * the LogLine hook. This will be set by the first call on getComment(),
@@ -727,7 +738,8 @@ class LegacyLogFormatter extends LogFormatter {
                }
 
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
-                       return $this->revert = '';
+                       $this->revert = '';
+                       return $this->revert;
                }
 
                $title = $this->entry->getTarget();
@@ -735,7 +747,9 @@ class LegacyLogFormatter extends LogFormatter {
                $subtype = $this->entry->getSubtype();
 
                // Show unblock/change block link
-               if ( ( $type == 'block' || $type == 'suppress' ) && ( $subtype == 'block' || $subtype == 'reblock' ) ) {
+               if ( ( $type == 'block' || $type == 'suppress' )
+                       && ( $subtype == 'block' || $subtype == 'reblock' )
+               ) {
                        if ( !$this->context->getUser()->isAllowed( 'block' ) ) {
                                return '';
                        }
@@ -750,10 +764,13 @@ class LegacyLogFormatter extends LogFormatter {
                                        $this->msg( 'change-blocklink' )->escaped()
                                )
                        );
+
                        return $this->msg( 'parentheses' )->rawParams(
                                $this->context->getLanguage()->pipeList( $links ) )->escaped();
                // Show change protection link
-               } elseif ( $type == 'protect' && ( $subtype == 'protect' || $subtype == 'modify' || $subtype == 'unprotect' ) ) {
+               } elseif ( $type == 'protect'
+                       && ( $subtype == 'protect' || $subtype == 'modify' || $subtype == 'unprotect' )
+               ) {
                        $links = array(
                                Linker::link( $title,
                                        $this->msg( 'hist' )->escaped(),
@@ -772,6 +789,7 @@ class LegacyLogFormatter extends LogFormatter {
                                        array( 'action' => 'protect' )
                                );
                        }
+
                        return $this->msg( 'parentheses' )->rawParams(
                                $this->context->getLanguage()->pipeList( $links ) )->escaped();
                // Show unmerge link
@@ -791,6 +809,7 @@ class LegacyLogFormatter extends LogFormatter {
                                        'mergepoint' => $params[4]
                                )
                        );
+
                        return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
                }
 
@@ -813,4 +832,3 @@ class LegacyLogFormatter extends LogFormatter {
                return $this->revert;
        }
 }
-
index bdae366..f5798e2 100644 (file)
@@ -34,32 +34,51 @@ class LogPage {
        const DELETED_COMMENT = 2;
        const DELETED_USER = 4;
        const DELETED_RESTRICTED = 8;
+
        // Convenience fields
        const SUPPRESSED_USER = 12;
        const SUPPRESSED_ACTION = 9;
-       /* @access private */
-       var $type, $action, $comment, $params;
 
-       /**
-        * @var User
-        */
-       var $doer;
+       /** @var bool */
+       public $updateRecentChanges;
 
-       /**
-        * @var Title
+       /** @var bool */
+       public $sendToUDP;
+
+       /** @var string Plaintext version of the message for IRC */
+       private $ircActionText;
+
+       /** @var string Plaintext version of the message */
+       private $actionText;
+
+       /** @var string One of '', 'block', 'protect', 'rights', 'delete',
+        *    'upload', 'move'
         */
-       var $target;
+       private $type;
+
+       /** @var string One of '', 'block', 'protect', 'rights', 'delete',
+        *   'upload', 'move', 'move_redir' */
+       private $action;
 
-       /* @access public */
-       var $updateRecentChanges, $sendToUDP;
+       /** @var string Comment associated with action */
+       private $comment;
+
+       /** @var string Blob made of a parameters array */
+       private $params;
+
+       /** @var User The user doing the action */
+       private $doer;
+
+       /** @var Title */
+       private $target;
 
        /**
         * Constructor
         *
-        * @param string $type one of '', 'block', 'protect', 'rights', 'delete',
-        *               'upload', 'move'
-        * @param $rc Boolean: whether to update recent changes as well as the logging table
-        * @param string $udp pass 'UDP' to send to the UDP feed if NOT sent to RC
+        * @param string $type One of '', 'block', 'protect', 'rights', 'delete',
+        *   'upload', 'move'
+        * @param bool $rc Whether to update recent changes as well as the logging table
+        * @param string $udp Pass 'UDP' to send to the UDP feed if NOT sent to RC
         */
        public function __construct( $type, $rc = true, $udp = 'skipUDP' ) {
                $this->type = $type;
@@ -76,6 +95,7 @@ class LogPage {
                $dbw = wfGetDB( DB_MASTER );
                $log_id = $dbw->nextSequenceValue( 'logging_log_id_seq' );
 
+               // @todo FIXME private/protected/public property?
                $this->timestamp = $now = wfTimestampNow();
                $data = array(
                        'log_id' => $log_id,
@@ -116,8 +136,9 @@ class LogPage {
                                $this->type, $this->action, $this->target, $this->comment,
                                $this->params, $newId, $this->getRcCommentIRC()
                        );
-                       $rc->notifyRC2UDP();
+                       $rc->notifyRCFeeds();
                }
+
                return $newId;
        }
 
@@ -171,18 +192,19 @@ class LogPage {
        /**
         * Get the list of valid log types
         *
-        * @return Array of strings
+        * @return array of strings
         */
        public static function validTypes() {
                global $wgLogTypes;
+
                return $wgLogTypes;
        }
 
        /**
         * Is $type a valid log type
         *
-        * @param string $type log type to check
-        * @return Boolean
+        * @param string $type Log type to check
+        * @return bool
         */
        public static function isLogType( $type ) {
                return in_array( $type, LogPage::validTypes() );
@@ -191,13 +213,15 @@ class LogPage {
        /**
         * Get the name for the given log type
         *
-        * @param string $type logtype
-        * @return String: log name
+        * @param string $type Log type
+        * @return string Log name
         * @deprecated in 1.19, warnings in 1.21. Use getName()
         */
        public static function logName( $type ) {
                global $wgLogNames;
 
+               wfDeprecated( __METHOD__, '1.21' );
+
                if ( isset( $wgLogNames[$type] ) ) {
                        return str_replace( '_', ' ', wfMessage( $wgLogNames[$type] )->text() );
                } else {
@@ -211,11 +235,14 @@ class LogPage {
         *
         * @todo handle missing log types
         * @param string $type logtype
-        * @return String: headertext of this logtype
+        * @return string Header text of this logtype
         * @deprecated in 1.19, warnings in 1.21. Use getDescription()
         */
        public static function logHeader( $type ) {
                global $wgLogHeaders;
+
+               wfDeprecated( __METHOD__, '1.21' );
+
                return wfMessage( $wgLogHeaders[$type] )->parse();
        }
 
@@ -225,16 +252,16 @@ class LogPage {
         *
         * @param string $type log type
         * @param string $action log action
-        * @param $title Mixed: Title object or null
-        * @param $skin Mixed: Skin object or null. If null, we want to use the wiki
-        *              content language, since that will go to the IRC feed.
+        * @param Title|null $title Title object or null
+        * @param Skin|null $skin Skin object or null. If null, we want to use the wiki
+        *   content language, since that will go to the IRC feed.
         * @param array $params parameters
-        * @param $filterWikilinks Boolean: whether to filter wiki links
-        * @return HTML string
+        * @param bool $filterWikilinks Whether to filter wiki links
+        * @return string HTML
         */
        public static function actionText( $type, $action, $title = null, $skin = null,
-               $params = array(), $filterWikilinks = false )
-       {
+               $params = array(), $filterWikilinks = false
+       {
                global $wgLang, $wgContLang, $wgLogActions;
 
                if ( is_null( $skin ) ) {
@@ -254,7 +281,8 @@ class LogPage {
                                $titleLink = self::getTitleLink( $type, $langObjOrNull, $title, $params );
 
                                if ( count( $params ) == 0 ) {
-                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $titleLink )->inLanguage( $langObj )->escaped();
+                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $titleLink )
+                                               ->inLanguage( $langObj )->escaped();
                                } else {
                                        $details = '';
                                        array_unshift( $params, $titleLink );
@@ -286,11 +314,16 @@ class LogPage {
 
                                                // Cascading flag...
                                                if ( $params[2] ) {
-                                                       $details .= ' [' . wfMessage( 'protect-summary-cascade' )->inLanguage( $langObj )->text() . ']';
+                                                       $text = wfMessage( 'protect-summary-cascade' )
+                                                               ->inLanguage( $langObj )->text();
+                                                       $details .= ' ';
+                                                       $details .= wfMessage( 'brackets', $text )->inLanguage( $langObj )->text();
+
                                                }
                                        }
 
-                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $params )->inLanguage( $langObj )->escaped() . $details;
+                                       $rv = wfMessage( $wgLogActions[$key] )->rawParams( $params )
+                                                       ->inLanguage( $langObj )->escaped() . $details;
                                }
                        }
                } else {
@@ -324,12 +357,12 @@ class LogPage {
        }
 
        /**
-        * TODO document
-        * @param  $type String
-        * @param  $lang Language or null
-        * @param  $title Title
-        * @param  $params Array
-        * @return String
+        * @todo Document
+        * @param  string $type
+        * @param  Language|null $lang
+        * @param  Title $title
+        * @param  array $params
+        * @return string
         */
        protected static function getTitleLink( $type, $lang, $title, &$params ) {
                if ( !$lang ) {
@@ -407,11 +440,12 @@ class LogPage {
        /**
         * Add a log entry
         *
-        * @param string $action one of '', 'block', 'protect', 'rights', 'delete', 'upload', 'move', 'move_redir'
-        * @param $target Title object
+        * @param string $action one of '', 'block', 'protect', 'rights', 'delete',
+        *   'upload', 'move', 'move_redir'
+        * @param Title $target Title object
         * @param string $comment description associated
         * @param array $params parameters passed later to wfMessage function
-        * @param $doer User object: the user doing the action
+        * @param null|int|User $doer The user doing the action. null for $wgUser
         *
         * @return int log_id of the inserted log entry
         */
@@ -464,10 +498,10 @@ class LogPage {
        /**
         * Add relations to log_search table
         *
-        * @param $field String
-        * @param $values Array
-        * @param $logid Integer
-        * @return Boolean
+        * @param string $field
+        * @param array $values
+        * @param int $logid
+        * @return bool
         */
        public function addRelations( $field, $values, $logid ) {
                if ( !strlen( $field ) || empty( $values ) ) {
@@ -493,8 +527,8 @@ class LogPage {
        /**
         * Create a blob from a parameter array
         *
-        * @param $params Array
-        * @return String
+        * @param array $params
+        * @return string
         */
        public static function makeParamBlob( $params ) {
                return implode( "\n", $params );
@@ -503,8 +537,8 @@ class LogPage {
        /**
         * Extract a parameter array from a blob
         *
-        * @param $blob String
-        * @return Array
+        * @param string $blob
+        * @return array
         */
        public static function extractParams( $blob ) {
                if ( $blob === '' ) {
@@ -519,8 +553,8 @@ class LogPage {
         * into a more readable (and translated) form
         *
         * @param string $flags Flags to format
-        * @param $lang Language object to use
-        * @return String
+        * @param Language $lang
+        * @return string
         */
        public static function formatBlockFlags( $flags, $lang ) {
                $flags = trim( $flags );
@@ -528,10 +562,12 @@ class LogPage {
                        return ''; //nothing to do
                }
                $flags = explode( ',', $flags );
+               $flagsCount = count( $flags );
 
-               for ( $i = 0; $i < count( $flags ); $i++ ) {
+               for ( $i = 0; $i < $flagsCount; $i++ ) {
                        $flags[$i] = self::formatBlockFlag( $flags[$i], $lang );
                }
+
                return wfMessage( 'parentheses' )->inLanguage( $lang )
                        ->rawParams( $lang->commaList( $flags ) )->escaped();
        }
@@ -540,8 +576,8 @@ class LogPage {
         * Translate a block log flag if possible
         *
         * @param int $flag Flag to translate
-        * @param $lang Language object to use
-        * @return String
+        * @param Language $lang Language object to use
+        * @return string
         */
        public static function formatBlockFlag( $flag, $lang ) {
                static $messages = array();
@@ -598,6 +634,7 @@ class LogPage {
                } else {
                        $key = 'log-description-' . $this->type;
                }
+
                return wfMessage( $key );
        }
 
@@ -614,6 +651,7 @@ class LogPage {
                        // '' always returns true with $user->isAllowed()
                        $restriction = '';
                }
+
                return $restriction;
        }
 
@@ -624,7 +662,7 @@ class LogPage {
         */
        public function isRestricted() {
                $restriction = $this->getRestriction();
+
                return $restriction !== '' && $restriction !== '*';
        }
-
 }
index a11dcb7..900ece9 100644 (file)
  * @ingroup Pager
  */
 class LogPager extends ReverseChronologicalPager {
+       /** @var array Log types */
        private $types = array();
+
+       /** @var string Events limited to those by performer when set */
        private $performer = '';
+
+       /** @var string|Title Events limited to those about Title when set */
        private $title = '';
+
+       /** @var string */
        private $pattern = '';
+
+       /** @var string */
        private $typeCGI = '';
+
+       /** @var LogEventsList  */
        public $mLogEventsList;
 
        /**
@@ -59,6 +70,8 @@ class LogPager extends ReverseChronologicalPager {
                $this->limitTitle( $title, $pattern );
                $this->getDateCond( $year, $month );
                $this->mTagFilter = $tagFilter;
+
+               $this->mDb = wfGetDB( DB_SLAVE, 'logpager' );
        }
 
        public function getDefaultQuery() {
@@ -67,6 +80,7 @@ class LogPager extends ReverseChronologicalPager {
                $query['user'] = $this->performer;
                $query['month'] = $this->mMonth;
                $query['year'] = $this->mYear;
+
                return $query;
        }
 
@@ -87,6 +101,7 @@ class LogPager extends ReverseChronologicalPager {
                                }
                        }
                }
+
                return $filters;
        }
 
@@ -94,7 +109,7 @@ class LogPager extends ReverseChronologicalPager {
         * Set the log reader to return only entries of the given type.
         * Type restrictions enforced here
         *
-        * @param string $types or array: Log types ('upload', 'delete', etc);
+        * @param string|array $types Log types ('upload', 'delete', etc);
         *   empty string means no restriction
         */
        private function limitType( $types ) {
@@ -139,43 +154,42 @@ class LogPager extends ReverseChronologicalPager {
         * Set the log reader to return only entries by the given user.
         *
         * @param string $name (In)valid user name
-        * @return bool
+        * @return void
         */
        private function limitPerformer( $name ) {
                if ( $name == '' ) {
-                       return false;
+                       return;
                }
                $usertitle = Title::makeTitleSafe( NS_USER, $name );
                if ( is_null( $usertitle ) ) {
-                       return false;
+                       return;
                }
                /* Fetch userid at first, if known, provides awesome query plan afterwards */
                $userid = User::idFromName( $name );
                if ( !$userid ) {
-                       /* It should be nicer to abort query at all,
-                          but for now it won't pass anywhere behind the optimizer */
-                       $this->mConds[] = "NULL";
+                       $this->mConds['log_user_text'] = IP::sanitizeIP( $name );
                } else {
                        $this->mConds['log_user'] = $userid;
-                       // Paranoia: avoid brute force searches (bug 17342)
-                       $user = $this->getUser();
-                       if ( !$user->isAllowed( 'deletedhistory' ) ) {
-                               $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0';
-                       } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
-                               $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
-                                       ' != ' . LogPage::SUPPRESSED_USER;
-                       }
-                       $this->performer = $usertitle->getText();
                }
+               // Paranoia: avoid brute force searches (bug 17342)
+               $user = $this->getUser();
+               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                       $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::DELETED_USER ) . ' = 0';
+               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       $this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
+                               ' != ' . LogPage::SUPPRESSED_USER;
+               }
+
+               $this->performer = $usertitle->getText();
        }
 
        /**
         * Set the log reader to return only entries affecting the given page.
         * (For the block and rights logs, this is a user page.)
         *
-        * @param string $page or Title object: Title name
-        * @param $pattern String
-        * @return bool
+        * @param string|Title $page Title name
+        * @param string $pattern
+        * @return void
         */
        private function limitTitle( $page, $pattern ) {
                global $wgMiserMode;
@@ -185,7 +199,7 @@ class LogPager extends ReverseChronologicalPager {
                } else {
                        $title = Title::newFromText( $page );
                        if ( strlen( $page ) == 0 || !$title instanceof Title ) {
-                               return false;
+                               return;
                        }
                }
 
@@ -245,8 +259,8 @@ class LogPager extends ReverseChronologicalPager {
                        $index['log_search'] = 'ls_field_val';
                        $index['logging'] = 'PRIMARY';
                        if ( !$this->hasEqualsClause( 'ls_field' )
-                               || !$this->hasEqualsClause( 'ls_value' ) )
-                       {
+                               || !$this->hasEqualsClause( 'ls_value' )
+                       {
                                # Since (ls_field,ls_value,ls_logid) is unique, if the condition is
                                # to match a specific (ls_field,ls_value) tuple, then there will be
                                # no duplicate log rows. Otherwise, we need to remove the duplicates.
@@ -269,6 +283,7 @@ class LogPager extends ReverseChronologicalPager {
                # Add ChangeTags filter query
                ChangeTags::modifyDisplayQuery( $info['tables'], $info['fields'], $info['conds'],
                        $info['join_conds'], $info['options'], $this->mTagFilter );
+
                return $info;
        }
 
@@ -306,6 +321,7 @@ class LogPager extends ReverseChronologicalPager {
                        $this->mResult->seek( 0 );
                }
                wfProfileOut( __METHOD__ );
+
                return '';
        }
 
index 0978f97..3913016 100644 (file)
@@ -31,6 +31,7 @@
 class MoveLogFormatter extends LogFormatter {
        public function getPreloadTitles() {
                $params = $this->extractParameters();
+
                return array( Title::newFromText( $params[3] ) );
        }
 
@@ -40,6 +41,7 @@ class MoveLogFormatter extends LogFormatter {
                if ( isset( $params[4] ) && $params[4] === '1' ) {
                        $key .= '-noredirect';
                }
+
                return $key;
        }
 
@@ -49,14 +51,15 @@ class MoveLogFormatter extends LogFormatter {
                $newname = $this->makePageLink( Title::newFromText( $params[3] ) );
                $params[2] = Message::rawParam( $oldname );
                $params[3] = Message::rawParam( $newname );
+
                return $params;
        }
 
        public function getActionLinks() {
                if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) // Action is hidden
                        || $this->entry->getSubtype() !== 'move'
-                       || !$this->context->getUser()->isAllowed( 'move' ) )
-               {
+                       || !$this->context->getUser()->isAllowed( 'move' )
+               {
                        return '';
                }
 
@@ -77,6 +80,7 @@ class MoveLogFormatter extends LogFormatter {
                                'wpMovetalk' => 0
                        )
                );
+
                return $this->msg( 'parentheses' )->rawParams( $revert )->escaped();
        }
 }
index 602728b..c870d51 100644 (file)
@@ -41,6 +41,7 @@ class NewUsersLogFormatter extends LogFormatter {
                        $params[2] = Message::rawParam( $this->makeUserLink( $target ) );
                        $params[3] = $target->getName();
                }
+
                return $params;
        }
 
@@ -51,6 +52,7 @@ class NewUsersLogFormatter extends LogFormatter {
                        # not needed and can contain incorrect links
                        return '';
                }
+
                return parent::getComment();
        }
 
@@ -60,6 +62,7 @@ class NewUsersLogFormatter extends LogFormatter {
                        //add the user talk to LinkBatch for the userLink
                        return array( Title::makeTitle( NS_USER_TALK, $this->entry->getTarget()->getText() ) );
                }
+
                return array();
        }
 }
index bb76d5a..bcef433 100644 (file)
  * logs of patrol events
  */
 class PatrolLog {
-
        /**
         * Record a log event for a change being patrolled
         *
-        * @param $rc Mixed: change identifier or RecentChange object
-        * @param $auto Boolean: was this patrol event automatic?
-        * @param $user User: user performing the action or null to use $wgUser
+        * @param mixed $rc Change identifier or RecentChange object
+        * @param bool $auto Was this patrol event automatic?
+        * @param User $user User performing the action or null to use $wgUser
         *
         * @return bool
         */
@@ -65,15 +64,16 @@ class PatrolLog {
                if ( !$auto ) {
                        $entry->publish( $logid, 'udp' );
                }
+
                return true;
        }
 
        /**
         * Prepare log parameters for a patrolled change
         *
-        * @param $change RecentChange to represent
-        * @param $auto Boolean: whether the patrol event was automatic
-        * @return Array
+        * @param RecentChange $change RecentChange to represent
+        * @param bool $auto Whether the patrol event was automatic
+        * @return array
         */
        private static function buildParams( $change, $auto ) {
                return array(
@@ -82,5 +82,4 @@ class PatrolLog {
                        '6::auto' => (int)$auto
                );
        }
-
 }
index 507039b..2abaf17 100644 (file)
@@ -35,6 +35,7 @@ class PatrolLogFormatter extends LogFormatter {
                if ( isset( $params[5] ) && $params[5] ) {
                        $key .= '-auto';
                }
+
                return $key;
        }
 
@@ -58,6 +59,7 @@ class PatrolLogFormatter extends LogFormatter {
                }
 
                $params[3] = Message::rawParam( $revlink );
+
                return $params;
        }
 }
index d3daf6e..ac252ae 100644 (file)
@@ -55,6 +55,7 @@ class RightsLogFormatter extends LogFormatter {
                if ( !isset( $params[3] ) && !isset( $params[4] ) ) {
                        $key .= '-legacy';
                }
+
                return $key;
        }
 
index 99b7741..967b017 100644 (file)
@@ -28,9 +28,8 @@
  * @ingroup Media
  */
 class BmpHandler extends BitmapHandler {
-
        /**
-        * @param $file
+        * @param File $file
         * @return bool
         */
        function mustRender( $file ) {
@@ -40,9 +39,9 @@ class BmpHandler extends BitmapHandler {
        /**
         * Render files as PNG
         *
-        * @param $text
-        * @param $mime
-        * @param $params
+        * @param string $text
+        * @param string $mime
+        * @param array $params
         * @return array
         */
        function getThumbType( $text, $mime, $params = null ) {
@@ -53,7 +52,7 @@ class BmpHandler extends BitmapHandler {
         * Get width and height from the bmp header.
         *
         * @param $image
-        * @param $filename
+        * @param string $filename
         * @return array
         */
        function getImageSize( $image, $filename ) {
@@ -75,6 +74,7 @@ class BmpHandler extends BitmapHandler {
                } catch ( MWException $e ) {
                        return false;
                }
+
                return array( $w[1], $h[1] );
        }
 }
index 4959687..1be04a7 100644 (file)
@@ -28,7 +28,7 @@
  */
 class BitmapHandler extends ImageHandler {
        /**
-        * @param $image File
+        * @param File $image
         * @param array $params Transform parameters. Entries with the keys 'width'
         * and 'height' are the respective screen width and height, while the keys
         * 'physicalWidth' and 'physicalHeight' indicate the thumbnail dimensions.
@@ -57,13 +57,18 @@ class BitmapHandler extends ImageHandler {
 
                # Check if the file is smaller than the maximum image area for thumbnailing
                $checkImageAreaHookResult = null;
-               wfRunHooks( 'BitmapHandlerCheckImageArea', array( $image, &$params, &$checkImageAreaHookResult ) );
+               wfRunHooks(
+                       'BitmapHandlerCheckImageArea',
+                       array( $image, &$params, &$checkImageAreaHookResult )
+               );
+
                if ( is_null( $checkImageAreaHookResult ) ) {
                        global $wgMaxImageArea;
 
-                       if ( $srcWidth * $srcHeight > $wgMaxImageArea &&
-                                       !( $image->getMimeType() == 'image/jpeg' &&
-                                               self::getScalerType( false, false ) == 'im' ) ) {
+                       if ( $srcWidth * $srcHeight > $wgMaxImageArea
+                               && !( $image->getMimeType() == 'image/jpeg'
+                                       && self::getScalerType( false, false ) == 'im' )
+                       ) {
                                # Only ImageMagick can efficiently downsize jpg images without loading
                                # the entire file in memory
                                return false;
@@ -96,14 +101,15 @@ class BitmapHandler extends ImageHandler {
                        $width = $params['physicalWidth'];
                        $height = $params['physicalHeight'];
                }
+
                return array( $width, $height );
        }
 
        /**
-        * @param $image File
-        * @param  $dstPath
-        * @param  $dstUrl
-        * @param  $params
+        * @param File $image
+        * @param string $dstPath
+        * @param string $dstUrl
+        * @param array $params
         * @param int $flags
         * @return MediaTransformError|ThumbnailImage|TransformParameterError
         */
@@ -121,8 +127,9 @@ class BitmapHandler extends ImageHandler {
                        'clientWidth' => $params['width'],
                        'clientHeight' => $params['height'],
                        # Comment as will be added to the Exif of the thumbnail
-                       'comment' => isset( $params['descriptionUrl'] ) ?
-                               "File source: {$params['descriptionUrl']}" : '',
+                       'comment' => isset( $params['descriptionUrl'] )
+                               ? "File source: {$params['descriptionUrl']}"
+                               : '',
                        # Properties of the original image
                        'srcWidth' => $image->getWidth(),
                        'srcHeight' => $image->getHeight(),
@@ -134,14 +141,17 @@ class BitmapHandler extends ImageHandler {
                # Determine scaler type
                $scaler = self::getScalerType( $dstPath );
 
-               wfDebug( __METHOD__ . ": creating {$scalerParams['physicalDimensions']} thumbnail at $dstPath using scaler $scaler\n" );
+               wfDebug( __METHOD__ . ": creating {$scalerParams['physicalDimensions']} " .
+                       "thumbnail at $dstPath using scaler $scaler\n" );
 
                if ( !$image->mustRender() &&
-                               $scalerParams['physicalWidth'] == $scalerParams['srcWidth']
-                               && $scalerParams['physicalHeight'] == $scalerParams['srcHeight'] ) {
+                       $scalerParams['physicalWidth'] == $scalerParams['srcWidth']
+                       && $scalerParams['physicalHeight'] == $scalerParams['srcHeight']
+               ) {
 
                        # normaliseParams (or the user) wants us to return the unscaled image
                        wfDebug( __METHOD__ . ": returning unscaled image\n" );
+
                        return $this->getClientScalingThumbnailImage( $image, $scalerParams );
                }
 
@@ -157,12 +167,15 @@ class BitmapHandler extends ImageHandler {
                                'width' => $scalerParams['clientWidth'],
                                'height' => $scalerParams['clientHeight']
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, false, $params );
                }
 
                # Try to make a target path for the thumbnail
                if ( !wfMkdirParents( dirname( $dstPath ), null, __METHOD__ ) ) {
-                       wfDebug( __METHOD__ . ": Unable to create thumbnail destination directory, falling back to client scaling\n" );
+                       wfDebug( __METHOD__ . ": Unable to create thumbnail destination " .
+                               "directory, falling back to client scaling\n" );
+
                        return $this->getClientScalingThumbnailImage( $image, $scalerParams );
                }
 
@@ -172,6 +185,7 @@ class BitmapHandler extends ImageHandler {
                        wfDebugLog( 'thumbnail',
                                sprintf( 'Thumbnail failed on %s: could not get local copy of "%s"',
                                        wfHostname(), $image->getName() ) );
+
                        return new MediaTransformError( 'thumbnail_error',
                                $scalerParams['clientWidth'], $scalerParams['clientHeight'] );
                }
@@ -187,6 +201,7 @@ class BitmapHandler extends ImageHandler {
                switch ( $scaler ) {
                        case 'hookaborted':
                                # Handled by the hook above
+                               /** @var MediaTransformOutput $mto */
                                $err = $mto->isError() ? $mto : false;
                                break;
                        case 'im':
@@ -220,6 +235,7 @@ class BitmapHandler extends ImageHandler {
                                'width' => $scalerParams['clientWidth'],
                                'height' => $scalerParams['clientHeight']
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                }
        }
@@ -228,7 +244,9 @@ class BitmapHandler extends ImageHandler {
         * Returns which scaler type should be used. Creates parent directories
         * for $dstPath and returns 'client' on error
         *
-        * @return string client,im,custom,gd
+        * @param string $dstPath
+        * @param bool $checkDstPath
+        * @return string One of client, im, custom, gd, imext
         */
        protected static function getScalerType( $dstPath, $checkDstPath = true ) {
                global $wgUseImageResize, $wgUseImageMagick, $wgCustomConvertCommand;
@@ -249,6 +267,7 @@ class BitmapHandler extends ImageHandler {
                } else {
                        $scaler = 'client';
                }
+
                return $scaler;
        }
 
@@ -256,32 +275,32 @@ class BitmapHandler extends ImageHandler {
         * Get a ThumbnailImage that respresents an image that will be scaled
         * client side
         *
-        * @param $image File File associated with this thumbnail
+        * @param File $image File associated with this thumbnail
         * @param array $scalerParams Array with scaler params
         * @return ThumbnailImage
         *
-        * @todo fixme: no rotation support
+        * @todo FIXME: No rotation support
         */
        protected function getClientScalingThumbnailImage( $image, $scalerParams ) {
                $params = array(
                        'width' => $scalerParams['clientWidth'],
                        'height' => $scalerParams['clientHeight']
                );
+
                return new ThumbnailImage( $image, $image->getURL(), null, $params );
        }
 
        /**
         * Transform an image using ImageMagick
         *
-        * @param $image File File associated with this thumbnail
+        * @param File $image File associated with this thumbnail
         * @param array $params Array with scaler params
         *
         * @return MediaTransformError Error object if error occurred, false (=no error) otherwise
         */
        protected function transformImageMagick( $image, $params ) {
                # use ImageMagick
-               global $wgSharpenReductionThreshold, $wgSharpenParameter,
-                       $wgMaxAnimatedGifArea,
+               global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
                        $wgImageMagickTempDir, $wgImageMagickConvertCommand;
 
                $quality = '';
@@ -294,15 +313,15 @@ class BitmapHandler extends ImageHandler {
                        $quality = "-quality 80"; // 80%
                        # Sharpening, see bug 6193
                        if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
-                                       / ( $params['srcWidth'] + $params['srcHeight'] )
-                                       < $wgSharpenReductionThreshold ) {
+                               / ( $params['srcWidth'] + $params['srcHeight'] )
+                               < $wgSharpenReductionThreshold
+                       ) {
                                $sharpen = "-sharpen " . wfEscapeShellArg( $wgSharpenParameter );
                        }
                        if ( version_compare( $this->getMagickVersion(), "6.5.6" ) >= 0 ) {
                                // JPEG decoder hint to reduce memory, available since IM 6.5.6-2
                                $decoderHint = "-define jpeg:size={$params['physicalDimensions']}";
                        }
-
                } elseif ( $params['mimeType'] == 'image/png' ) {
                        $quality = "-quality 95"; // zlib 9, adaptive filtering
 
@@ -311,7 +330,6 @@ class BitmapHandler extends ImageHandler {
                                // Extract initial frame only; we're so big it'll
                                // be a total drag. :P
                                $scene = 0;
-
                        } elseif ( $this->isAnimatedImage( $image ) ) {
                                // Coalesce is needed to scale animated GIFs properly (bug 1017).
                                $animation_pre = '-coalesce';
@@ -363,7 +381,8 @@ class BitmapHandler extends ImageHandler {
 
                if ( $retval !== 0 ) {
                        $this->logErrorForExternalProcess( $retval, $err, $cmd );
-                       return $this->getMediaTransformError( $params, $err );
+
+                       return $this->getMediaTransformError( $params, "$err\nError code: $retval" );
                }
 
                return false; # No error
@@ -372,7 +391,7 @@ class BitmapHandler extends ImageHandler {
        /**
         * Transform an image using the Imagick PHP extension
         *
-        * @param $image File File associated with this thumbnail
+        * @param File $image File associated with this thumbnail
         * @param array $params Array with scaler params
         *
         * @return MediaTransformError Error object if error occurred, false (=no error) otherwise
@@ -387,8 +406,9 @@ class BitmapHandler extends ImageHandler {
                        if ( $params['mimeType'] == 'image/jpeg' ) {
                                // Sharpening, see bug 6193
                                if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
-                                               / ( $params['srcWidth'] + $params['srcHeight'] )
-                                               < $wgSharpenReductionThreshold ) {
+                                       / ( $params['srcWidth'] + $params['srcHeight'] )
+                                       < $wgSharpenReductionThreshold
+                               ) {
                                        // Hack, since $wgSharpenParamater is written specifically for the command line convert
                                        list( $radius, $sigma ) = explode( 'x', $wgSharpenParameter );
                                        $im->sharpenImage( $radius, $sigma );
@@ -437,19 +457,17 @@ class BitmapHandler extends ImageHandler {
                                return $this->getMediaTransformError( $params,
                                        "Unable to write thumbnail to {$params['dstPath']}" );
                        }
-
                } catch ( ImagickException $e ) {
                        return $this->getMediaTransformError( $params, $e->getMessage() );
                }
 
                return false;
-
        }
 
        /**
         * Transform an image using a custom command
         *
-        * @param $image File File associated with this thumbnail
+        * @param File $image File associated with this thumbnail
         * @param array $params Array with scaler params
         *
         * @return MediaTransformError Error object if error occurred, false (=no error) otherwise
@@ -473,23 +491,13 @@ class BitmapHandler extends ImageHandler {
 
                if ( $retval !== 0 ) {
                        $this->logErrorForExternalProcess( $retval, $err, $cmd );
+
                        return $this->getMediaTransformError( $params, $err );
                }
+
                return false; # No error
        }
 
-       /**
-        * Log an error that occurred in an external process
-        *
-        * @param $retval int
-        * @param $err int
-        * @param $cmd string
-        */
-       protected function logErrorForExternalProcess( $retval, $err, $cmd ) {
-               wfDebugLog( 'thumbnail',
-                       sprintf( 'thumbnail failed on %s: error %d "%s" from "%s"',
-                                       wfHostname(), $retval, trim( $err ), $cmd ) );
-       }
        /**
         * Get a MediaTransformError with error 'thumbnail_error'
         *
@@ -499,13 +507,13 @@ class BitmapHandler extends ImageHandler {
         */
        public function getMediaTransformError( $params, $errMsg ) {
                return new MediaTransformError( 'thumbnail_error', $params['clientWidth'],
-                                       $params['clientHeight'], $errMsg );
+                       $params['clientHeight'], $errMsg );
        }
 
        /**
         * Transform an image using the built in GD library
         *
-        * @param $image File File associated with this thumbnail
+        * @param File $image File associated with this thumbnail
         * @param array $params Array with scaler params
         *
         * @return MediaTransformError Error object if error occurred, false (=no error) otherwise
@@ -517,16 +525,18 @@ class BitmapHandler extends ImageHandler {
                # input routine for this.
 
                $typemap = array(
-                       'image/gif'          => array( 'imagecreatefromgif',  'palette',   'imagegif'  ),
-                       'image/jpeg'         => array( 'imagecreatefromjpeg', 'truecolor', array( __CLASS__, 'imageJpegWrapper' ) ),
-                       'image/png'          => array( 'imagecreatefrompng',  'bits',      'imagepng'  ),
-                       'image/vnd.wap.wbmp' => array( 'imagecreatefromwbmp', 'palette',   'imagewbmp'  ),
-                       'image/xbm'          => array( 'imagecreatefromxbm',  'palette',   'imagexbm'  ),
+                       'image/gif' => array( 'imagecreatefromgif', 'palette', 'imagegif' ),
+                       'image/jpeg' => array( 'imagecreatefromjpeg', 'truecolor',
+                               array( __CLASS__, 'imageJpegWrapper' ) ),
+                       'image/png' => array( 'imagecreatefrompng', 'bits', 'imagepng' ),
+                       'image/vnd.wap.wbmp' => array( 'imagecreatefromwbmp', 'palette', 'imagewbmp' ),
+                       'image/xbm' => array( 'imagecreatefromxbm', 'palette', 'imagexbm' ),
                );
                if ( !isset( $typemap[$params['mimeType']] ) ) {
                        $err = 'Image type not supported';
                        wfDebug( "$err\n" );
                        $errMsg = wfMessage( 'thumbnail_image-type' )->text();
+
                        return $this->getMediaTransformError( $params, $errMsg );
                }
                list( $loader, $colorStyle, $saveType ) = $typemap[$params['mimeType']];
@@ -535,6 +545,7 @@ class BitmapHandler extends ImageHandler {
                        $err = "Incomplete GD library configuration: missing function $loader";
                        wfDebug( "$err\n" );
                        $errMsg = wfMessage( 'thumbnail_gd-library', $loader )->text();
+
                        return $this->getMediaTransformError( $params, $errMsg );
                }
 
@@ -542,6 +553,7 @@ class BitmapHandler extends ImageHandler {
                        $err = "File seems to be missing: {$params['srcPath']}";
                        wfDebug( "$err\n" );
                        $errMsg = wfMessage( 'thumbnail_image-missing', $params['srcPath'] )->text();
+
                        return $this->getMediaTransformError( $params, $errMsg );
                }
 
@@ -589,7 +601,8 @@ class BitmapHandler extends ImageHandler {
        /**
         * Escape a string for ImageMagick's property input (e.g. -set -comment)
         * See InterpretImageProperties() in magick/property.c
-        * @return mixed|string
+        * @param string $s
+        * @return string
         */
        function escapeMagickProperty( $s ) {
                // Double the backslashes
@@ -600,6 +613,7 @@ class BitmapHandler extends ImageHandler {
                if ( strlen( $s ) > 0 && ( $s[0] === '-' || $s[0] === '@' ) ) {
                        $s = '\\' . $s;
                }
+
                return $s;
        }
 
@@ -636,10 +650,13 @@ class BitmapHandler extends ImageHandler {
        /**
         * Escape a string for ImageMagick's output filename. See
         * InterpretImageFilename() in magick/image.c.
+        * @param string $path The file path
+        * @param bool|string $scene The scene specification, or false if there is none
         * @return string
         */
        function escapeMagickOutput( $path, $scene = false ) {
                $path = str_replace( '%', '%%', $path );
+
                return $this->escapeMagickPath( $path, $scene );
        }
 
@@ -673,6 +690,7 @@ class BitmapHandler extends ImageHandler {
                } else {
                        $path .= "[$scene]";
                }
+
                return $path;
        }
 
@@ -680,7 +698,7 @@ class BitmapHandler extends ImageHandler {
         * Retrieve the version of the installed ImageMagick
         * You can use PHPs version_compare() to use this value
         * Value is cached for one hour.
-        * @return String representing the IM version.
+        * @return string Representing the IM version.
         */
        protected function getMagickVersion() {
                global $wgMemc;
@@ -695,11 +713,14 @@ class BitmapHandler extends ImageHandler {
                        $x = preg_match( '/Version: ImageMagick ([0-9]*\.[0-9]*\.[0-9]*)/', $return, $matches );
                        if ( $x != 1 ) {
                                wfDebug( __METHOD__ . ": ImageMagick version check failed\n" );
+
                                return null;
                        }
                        $wgMemc->set( "imagemagick-version", $matches[1], 3600 );
+
                        return $matches[1];
                }
+
                return $cache;
        }
 
@@ -733,9 +754,24 @@ class BitmapHandler extends ImageHandler {
        }
 
        /**
-        * @param $file File
+        * @see $wgEnableAutoRotation
+        * @return bool Whether auto rotation is enabled
+        */
+       public static function autoRotateEnabled() {
+               global $wgEnableAutoRotation;
+
+               if ( $wgEnableAutoRotation === null ) {
+                       // Only enable auto-rotation when the bitmap handler can rotate
+                       $wgEnableAutoRotation = BitmapHandler::canRotate();
+               }
+
+               return $wgEnableAutoRotation;
+       }
+
+       /**
+        * @param File $file
         * @param array $params Rotate parameters.
-        *      'rotation' clockwise rotation in degrees, allowed are multiples of 90
+        *   'rotation' clockwise rotation in degrees, allowed are multiples of 90
         * @since 1.21
         * @return bool
         */
@@ -755,12 +791,15 @@ class BitmapHandler extends ImageHandler {
                                wfDebug( __METHOD__ . ": running ImageMagick: $cmd\n" );
                                wfProfileIn( 'convert' );
                                $retval = 0;
+                               // @todo FIXME: Undefined variable %env
                                $err = wfShellExecWithStderr( $cmd, $retval, $env );
                                wfProfileOut( 'convert' );
                                if ( $retval !== 0 ) {
                                        $this->logErrorForExternalProcess( $retval, $err, $cmd );
+
                                        return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
                                }
+
                                return false;
                        case 'imext':
                                $im = new Imagick();
@@ -774,6 +813,7 @@ class BitmapHandler extends ImageHandler {
                                        return new MediaTransformError( 'thumbnail_error', 0, 0,
                                                "Unable to write image to {$params['dstPath']}" );
                                }
+
                                return false;
                        default:
                                return new MediaTransformError( 'thumbnail_error', 0, 0,
@@ -785,7 +825,7 @@ class BitmapHandler extends ImageHandler {
         * Rerurns whether the file needs to be rendered. Returns true if the
         * file requires rotation and we are able to rotate it.
         *
-        * @param $file File
+        * @param File $file
         * @return bool
         */
        public function mustRender( $file ) {
index 00b4298..2a393db 100644 (file)
  * This sort of acts as an intermediary between MediaHandler::getMetadata
  * and the various metadata extractors.
  *
- * @todo other image formats.
+ * @todo Other image formats.
  * @ingroup Media
  */
 class BitmapMetadataHandler {
-
+       /** @var array */
        private $metadata = array();
+
+       /** @var array Metadata priority */
        private $metaPriority = array(
                20 => array( 'other' ),
                40 => array( 'native' ),
@@ -44,6 +46,8 @@ class BitmapMetadataHandler {
                100 => array( 'iptc-bad-hash' ),
                120 => array( 'exif' ),
        );
+
+       /** @var string */
        private $iptcType = 'iptc-no-hash';
 
        /**
@@ -76,8 +80,8 @@ class BitmapMetadataHandler {
         *
         * Parameters are passed to the Exif class.
         *
-        * @param $filename string
-        * @param $byteOrder string
+        * @param string $filename
+        * @param string $byteOrder
         */
        function getExif( $filename, $byteOrder ) {
                global $wgShowEXIF;
@@ -89,11 +93,12 @@ class BitmapMetadataHandler {
                        }
                }
        }
+
        /** Add misc metadata. Warning: atm if the metadata category
         * doesn't have a priority, it will be silently discarded.
         *
         * @param array $metaArray array of metadata values
-        * @param string $type type. defaults to other. if two things have the same type they're merged
+        * @param string $type Type. defaults to other. if two things have the same type they're merged
         */
        function addMetadata( $metaArray, $type = 'other' ) {
                if ( isset( $this->metadata[$type] ) ) {
@@ -111,7 +116,7 @@ class BitmapMetadataHandler {
         *
         * This function is generally called by the media handlers' getMetadata()
         *
-        * @return Array metadata array
+        * @return array Metadata array
         */
        function getMetadataArray() {
                // this seems a bit ugly... This is all so its merged in right order
@@ -138,13 +143,14 @@ class BitmapMetadataHandler {
                                }
                        }
                }
+
                return $temp;
        }
 
        /** Main entry point for jpeg's.
         *
         * @param string $filename filename (with full path)
-        * @return array metadata result array.
+        * @return array Metadata result array.
         * @throws MWException on invalid file.
         */
        static function Jpeg( $filename ) {
@@ -168,7 +174,6 @@ class BitmapMetadataHandler {
                                 * is not well tested and a bit fragile.
                                 */
                                $xmp->parseExtended( $xmpExt );
-
                        }
                        $res = $xmp->getResults();
                        foreach ( $res as $type => $array ) {
@@ -178,6 +183,7 @@ class BitmapMetadataHandler {
                if ( isset( $seg['byteOrder'] ) ) {
                        $meta->getExif( $filename, $seg['byteOrder'] );
                }
+
                return $meta->getMetadataArray();
        }
 
@@ -186,15 +192,17 @@ class BitmapMetadataHandler {
         * merge the png various tEXt chunks to that
         * are interesting, but for now it only does XMP
         *
-        * @param string $filename full path to file
-        * @return Array Array for storage in img_metadata.
+        * @param string $filename Full path to file
+        * @return array Array for storage in img_metadata.
         */
        public static function PNG( $filename ) {
                $showXMP = function_exists( 'xml_parser_create_ns' );
 
                $meta = new self();
                $array = PNGMetadataExtractor::getMetadata( $filename );
-               if ( isset( $array['text']['xmp']['x-default'] ) && $array['text']['xmp']['x-default'] !== '' && $showXMP ) {
+               if ( isset( $array['text']['xmp']['x-default'] )
+                       && $array['text']['xmp']['x-default'] !== '' && $showXMP
+               ) {
                        $xmp = new XMPReader();
                        $xmp->parse( $array['text']['xmp']['x-default'] );
                        $xmpRes = $xmp->getResults();
@@ -207,6 +215,7 @@ class BitmapMetadataHandler {
                unset( $array['text'] );
                $array['metadata'] = $meta->getMetadataArray();
                $array['metadata']['_MW_PNG_VERSION'] = PNGMetadataExtractor::VERSION;
+
                return $array;
        }
 
@@ -216,7 +225,7 @@ class BitmapMetadataHandler {
         * XMP and image comment.
         *
         * @param string $filename full path to file
-        * @return Array metadata array
+        * @return array Metadata array
         */
        public static function GIF( $filename ) {
 
@@ -234,7 +243,6 @@ class BitmapMetadataHandler {
                        foreach ( $xmpRes as $type => $xmpSection ) {
                                $meta->addMetadata( $xmpSection, $type );
                        }
-
                }
 
                unset( $baseArray['comment'] );
@@ -242,6 +250,7 @@ class BitmapMetadataHandler {
 
                $baseArray['metadata'] = $meta->getMetadataArray();
                $baseArray['metadata']['_MW_GIF_VERSION'] = GIFMetadataExtractor::VERSION;
+
                return $baseArray;
        }
 
@@ -251,13 +260,12 @@ class BitmapMetadataHandler {
         * but needs some further processing because PHP's exif support
         * is stupid...)
         *
-        * @todo Add XMP support, so this function actually makes
-        * sense to put here.
+        * @todo Add XMP support, so this function actually makes sense to put here.
         *
         * The various exceptions this throws are caught later.
-        * @param $filename String
+        * @param string $filename
         * @throws MWException
-        * @return Array The metadata.
+        * @return array The metadata.
         */
        public static function Tiff( $filename ) {
                if ( file_exists( $filename ) ) {
@@ -269,6 +277,7 @@ class BitmapMetadataHandler {
                        $data = $exif->getFilteredData();
                        if ( $data ) {
                                $data['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+
                                return $data;
                        } else {
                                throw new MWException( "Could not extract data from tiff file $filename" );
@@ -277,12 +286,13 @@ class BitmapMetadataHandler {
                        throw new MWException( "File doesn't exist - $filename" );
                }
        }
+
        /**
         * Read the first 2 bytes of a tiff file to figure out
         * Little Endian or Big Endian. Needed for exif stuff.
         *
         * @param string $filename The filename
-        * @return String 'BE' or 'LE' or false
+        * @return string 'BE' or 'LE' or false
         */
        static function getTiffByteOrder( $filename ) {
                $fh = fopen( $filename, 'rb' );
index 63af255..15ec794 100644 (file)
@@ -30,7 +30,6 @@
  * @ingroup Media
  */
 class BitmapHandler_ClientOnly extends BitmapHandler {
-
        /**
         * @param $image File
         * @param  $params
@@ -41,10 +40,10 @@ class BitmapHandler_ClientOnly extends BitmapHandler {
        }
 
        /**
-        * @param $image File
-        * @param  $dstPath
-        * @param  $dstUrl
-        * @param  $params
+        * @param File $image
+        * @param string $dstPath
+        * @param string $dstUrl
+        * @param array $params
         * @param int $flags
         * @return ThumbnailImage|TransformParameterError
         */
@@ -52,6 +51,7 @@ class BitmapHandler_ClientOnly extends BitmapHandler {
                if ( !$this->normaliseParams( $image, $params ) ) {
                        return new TransformParameterError( $params );
                }
+
                return new ThumbnailImage( $image, $image->getURL(), $image->getLocalRefPath(), $params );
        }
 }
index b9e89d9..7da5a4c 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class DjVuHandler extends ImageHandler {
-
        /**
         * @return bool
         */
@@ -35,6 +34,7 @@ class DjVuHandler extends ImageHandler {
                global $wgDjvuRenderer, $wgDjvuDump, $wgDjvuToXML;
                if ( !$wgDjvuRenderer || ( !$wgDjvuDump && !$wgDjvuToXML ) ) {
                        wfDebug( "DjVu is disabled, please set \$wgDjvuRenderer and \$wgDjvuDump\n" );
+
                        return false;
                } else {
                        return true;
@@ -42,7 +42,7 @@ class DjVuHandler extends ImageHandler {
        }
 
        /**
-        * @param $file
+        * @param File $file
         * @return bool
         */
        function mustRender( $file ) {
@@ -50,7 +50,7 @@ class DjVuHandler extends ImageHandler {
        }
 
        /**
-        * @param $file
+        * @param File $file
         * @return bool
         */
        function isMultiPage( $file ) {
@@ -68,8 +68,8 @@ class DjVuHandler extends ImageHandler {
        }
 
        /**
-        * @param $name
-        * @param $value
+        * @param string $name
+        * @param mixed $value
         * @return bool
         */
        function validateParam( $name, $value ) {
@@ -85,7 +85,7 @@ class DjVuHandler extends ImageHandler {
        }
 
        /**
-        * @param $params
+        * @param array $params
         * @return bool|string
         */
        function makeParamString( $params ) {
@@ -93,11 +93,12 @@ class DjVuHandler extends ImageHandler {
                if ( !isset( $params['width'] ) ) {
                        return false;
                }
+
                return "page{$page}-{$params['width']}px";
        }
 
        /**
-        * @param $str
+        * @param string $str
         * @return array|bool
         */
        function parseParamString( $str ) {
@@ -110,7 +111,7 @@ class DjVuHandler extends ImageHandler {
        }
 
        /**
-        * @param $params
+        * @param array $params
         * @return array
         */
        function getScriptParams( $params ) {
@@ -121,10 +122,10 @@ class DjVuHandler extends ImageHandler {
        }
 
        /**
-        * @param $image File
-        * @param  $dstPath
-        * @param  $dstUrl
-        * @param  $params
+        * @param File $image
+        * @param string $dstPath
+        * @param string $dstUrl
+        * @param array $params
         * @param int $flags
         * @return MediaTransformError|ThumbnailImage|TransformParameterError
         */
@@ -137,6 +138,7 @@ class DjVuHandler extends ImageHandler {
                if ( !$xml ) {
                        $width = isset( $params['width'] ) ? $params['width'] : 0;
                        $height = isset( $params['height'] ) ? $params['height'] : 0;
+
                        return new MediaTransformError( 'thumbnail_error', $width, $height,
                                wfMessage( 'djvu_no_xml' )->text() );
                }
@@ -162,6 +164,7 @@ class DjVuHandler extends ImageHandler {
                                'height' => $height,
                                'page' => $page
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                }
 
@@ -192,9 +195,7 @@ class DjVuHandler extends ImageHandler {
 
                $removed = $this->removeBadFile( $dstPath, $retval );
                if ( $retval != 0 || $removed ) {
-                       wfDebugLog( 'thumbnail',
-                               sprintf( 'thumbnail failed on %s: error %d "%s" from "%s"',
-                                       wfHostname(), $retval, trim( $err ), $cmd ) );
+                       $this->logErrorForExternalProcess( $retval, $err, $cmd );
                        return new MediaTransformError( 'thumbnail_error', $width, $height, $err );
                } else {
                        $params = array(
@@ -202,6 +203,7 @@ class DjVuHandler extends ImageHandler {
                                'height' => $height,
                                'page' => $page
                        );
+
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
                }
        }
@@ -209,6 +211,8 @@ class DjVuHandler extends ImageHandler {
        /**
         * Cache an instance of DjVuImage in an Image object, return that instance
         *
+        * @param File $image
+        * @param string $path
         * @return DjVuImage
         */
        function getDjVuImage( $image, $path ) {
@@ -219,23 +223,28 @@ class DjVuHandler extends ImageHandler {
                } else {
                        $deja = $image->dejaImage;
                }
+
                return $deja;
        }
 
        /**
         * Cache a document tree for the DjVu XML metadata
-        * @param $image File
-        * @param $gettext Boolean: DOCUMENT (Default: false)
-        * @return bool
+        * @param File $image
+        * @param bool $gettext DOCUMENT (Default: false)
+        * @return bool|SimpleXMLElement
         */
        function getMetaTree( $image, $gettext = false ) {
-               if ( isset( $image->dejaMetaTree ) ) {
+               if ( $gettext && isset( $image->djvuTextTree ) ) {
+                       return $image->djvuTextTree;
+               }
+               if ( !$gettext && isset( $image->dejaMetaTree ) ) {
                        return $image->dejaMetaTree;
                }
 
                $metadata = $image->getMetadata();
                if ( !$this->isMetadataValid( $image, $metadata ) ) {
                        wfDebug( "DjVu XML metadata is invalid or missing, should have been fixed in upgradeRow\n" );
+
                        return false;
                }
                wfProfileIn( __METHOD__ );
@@ -247,8 +256,11 @@ class DjVuHandler extends ImageHandler {
                        $image->djvuTextTree = false;
                        $tree = new SimpleXMLElement( $metadata );
                        if ( $tree->getName() == 'mw-djvu' ) {
+                               /** @var SimpleXMLElement $b */
                                foreach ( $tree->children() as $b ) {
                                        if ( $b->getName() == 'DjVuTxt' ) {
+                                               // @todo File::djvuTextTree and File::dejaMetaTree are declared
+                                               // dynamically. Add a public File::$data to facilitate this?
                                                $image->djvuTextTree = $b;
                                        } elseif ( $b->getName() == 'DjVuXML' ) {
                                                $image->dejaMetaTree = $b;
@@ -269,6 +281,11 @@ class DjVuHandler extends ImageHandler {
                }
        }
 
+       /**
+        * @param File $image
+        * @param string $path
+        * @return bool|array False on failure
+        */
        function getImageSize( $image, $path ) {
                return $this->getDjVuImage( $image, $path )->getImageSize();
        }
@@ -280,11 +297,13 @@ class DjVuHandler extends ImageHandler {
                        $magic = MimeMagic::singleton();
                        $mime = $magic->guessTypesForExtension( $wgDjvuOutputExtension );
                }
+
                return array( $wgDjvuOutputExtension, $mime );
        }
 
        function getMetadata( $image, $path ) {
                wfDebug( "Getting DjVu metadata for $path\n" );
+
                return $this->getDjVuImage( $image, $path )->retrieveMetaData();
        }
 
@@ -301,6 +320,7 @@ class DjVuHandler extends ImageHandler {
                if ( !$tree ) {
                        return false;
                }
+
                return count( $tree->xpath( '//OBJECT' ) );
        }
 
@@ -321,6 +341,11 @@ class DjVuHandler extends ImageHandler {
                }
        }
 
+       /**
+        * @param File $image
+        * @param int $page Page number to get information for
+        * @return bool|string Page text or false when no text found.
+        */
        function getPageText( $image, $page ) {
                $tree = $this->getMetaTree( $image, true );
                if ( !$tree ) {
@@ -330,11 +355,10 @@ class DjVuHandler extends ImageHandler {
                $o = $tree->BODY[0]->PAGE[$page - 1];
                if ( $o ) {
                        $txt = $o['value'];
+
                        return $txt;
                } else {
                        return false;
                }
-
        }
-
 }
index 54efe7a..1197552 100644 (file)
  * @ingroup Media
  */
 class DjVuImage {
+       /**
+        * @const DJVUTXT_MEMORY_LIMIT Memory limit for the DjVu description software
+        */
+       const DJVUTXT_MEMORY_LIMIT = 300000;
+
        /**
         * Constructor
         *
@@ -43,17 +48,13 @@ class DjVuImage {
                $this->mFilename = $filename;
        }
 
-       /**
-        * @const DJVUTXT_MEMORY_LIMIT Memory limit for the DjVu description software
-        */
-       const DJVUTXT_MEMORY_LIMIT = 300000;
-
        /**
         * Check if the given file is indeed a valid DjVu image file
         * @return bool
         */
        public function isValid() {
                $info = $this->getInfo();
+
                return $info !== false;
        }
 
@@ -71,6 +72,7 @@ class DjVuImage {
                        return array( $width, $height, 'DjVu',
                                "width=\"$width\" height=\"$height\"" );
                }
+
                return false;
        }
 
@@ -82,8 +84,11 @@ class DjVuImage {
        function dump() {
                $file = fopen( $this->mFilename, 'rb' );
                $header = fread( $file, 12 );
-               // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+               // @todo FIXME: Would be good to replace this extract() call with
+               // something that explicitly initializes local variables.
                extract( unpack( 'a4magic/a4chunk/NchunkLength', $header ) );
+               /** @var string $chunk
+                *  @var string $chunkLength */
                echo "$chunk $chunkLength\n";
                $this->dumpForm( $file, $chunkLength, 1 );
                fclose( $file );
@@ -98,8 +103,11 @@ class DjVuImage {
                        if ( $chunkHeader == '' ) {
                                break;
                        }
-                       // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+                       // @todo FIXME: Would be good to replace this extract() call with
+                       // something that explicitly initializes local variables.
                        extract( unpack( 'a4chunk/NchunkLength', $chunkHeader ) );
+                       /** @var string $chunk
+                        *  @var string $chunkLength */
                        echo str_repeat( ' ', $indent * 4 ) . "$chunk $chunkLength\n";
 
                        if ( $chunk == 'FORM' ) {
@@ -120,6 +128,7 @@ class DjVuImage {
                wfRestoreWarnings();
                if ( $file === false ) {
                        wfDebug( __METHOD__ . ": missing or failed file read\n" );
+
                        return false;
                }
 
@@ -129,9 +138,14 @@ class DjVuImage {
                if ( strlen( $header ) < 16 ) {
                        wfDebug( __METHOD__ . ": too short file header\n" );
                } else {
-                       // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+                       // @todo FIXME: Would be good to replace this extract() call with
+                       // something that explicitly initializes local variables.
                        extract( unpack( 'a4magic/a4form/NformLength/a4subtype', $header ) );
 
+                       /** @var string $magic
+                        *  @var string $subtype
+                        *  @var string $formLength
+                        *  @var string $formType */
                        if ( $magic != 'AT&T' ) {
                                wfDebug( __METHOD__ . ": not a DjVu file\n" );
                        } elseif ( $subtype == 'DJVU' ) {
@@ -145,6 +159,7 @@ class DjVuImage {
                        }
                }
                fclose( $file );
+
                return $info;
        }
 
@@ -153,8 +168,12 @@ class DjVuImage {
                if ( strlen( $header ) < 8 ) {
                        return array( false, 0 );
                } else {
-                       // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+                       // @todo FIXME: Would be good to replace this extract() call with
+                       // something that explicitly initializes local variables.
                        extract( unpack( 'a4chunk/Nlength', $header ) );
+
+                       /** @var string $chunk
+                        *  @var string $length */
                        return array( $chunk, $length );
                }
        }
@@ -182,6 +201,7 @@ class DjVuImage {
                                $subtype = fread( $file, 4 );
                                if ( $subtype == 'DJVU' ) {
                                        wfDebug( __METHOD__ . ": found first subpage\n" );
+
                                        return $this->getPageInfo( $file, $length );
                                }
                                $this->skipChunk( $file, $length - 4 );
@@ -192,6 +212,7 @@ class DjVuImage {
                } while ( $length != 0 && !feof( $file ) && ftell( $file ) - $start < $formLength );
 
                wfDebug( __METHOD__ . ": multi-page DJVU file contained no pages\n" );
+
                return false;
        }
 
@@ -199,20 +220,24 @@ class DjVuImage {
                list( $chunk, $length ) = $this->readChunk( $file );
                if ( $chunk != 'INFO' ) {
                        wfDebug( __METHOD__ . ": expected INFO chunk, got '$chunk'\n" );
+
                        return false;
                }
 
                if ( $length < 9 ) {
                        wfDebug( __METHOD__ . ": INFO should be 9 or 10 bytes, found $length\n" );
+
                        return false;
                }
                $data = fread( $file, $length );
                if ( strlen( $data ) < $length ) {
                        wfDebug( __METHOD__ . ": INFO chunk cut off\n" );
+
                        return false;
                }
 
-               // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+               // @todo FIXME: Would be good to replace this extract() call with
+               // something that explicitly initializes local variables.
                extract( unpack(
                        'nwidth/' .
                        'nheight/' .
@@ -220,8 +245,16 @@ class DjVuImage {
                        'Cmajor/' .
                        'vresolution/' .
                        'Cgamma', $data ) );
+
                # Newer files have rotation info in byte 10, but we don't use it yet.
 
+               /** @var string $width
+                *  @var string $height
+                *  @var string $major
+                *  @var string $minor
+                *  @var string $resolution
+                *  @var string $length
+                *  @var string $gamma */
                return array(
                        'width' => $width,
                        'height' => $height,
@@ -284,17 +317,21 @@ EOR;
                        }
                }
                wfProfileOut( __METHOD__ );
+
                return $xml;
        }
 
        function pageTextCallback( $matches ) {
                # Get rid of invalid UTF-8, strip control characters
-               return '<PAGE value="' . htmlspecialchars( UtfNormal::cleanUp( $matches[1] ) ) . '" />';
+               $val = htmlspecialchars( UtfNormal::cleanUp( stripcslashes( $matches[1] ) ) );
+               $val = str_replace( array( "\n", '�' ), array( '&#10;', '' ), $val );
+               return '<PAGE value="' . $val . '" />';
        }
 
        /**
         * Hack to temporarily work around djvutoxml bug
-        * @return bool|string
+        * @param $dump
+        * @return string
         */
        function convertDumpToXML( $dump ) {
                if ( strval( $dump ) == '' ) {
@@ -334,6 +371,7 @@ EOT;
 
                                if ( preg_match( '/^ *DIRM.*indirect/', $line ) ) {
                                        wfDebug( "Indirect multi-page DjVu document, bad for server!\n" );
+
                                        return false;
                                }
                                if ( preg_match( '/^ *FORM:DJVU/', $line ) ) {
@@ -352,6 +390,7 @@ EOT;
                }
 
                $xml .= "</BODY>\n</DjVuXML>\n";
+
                return $xml;
        }
 
@@ -367,8 +406,13 @@ EOT;
                                break;
                        }
 
-                       if ( preg_match( '/^ *INFO *\[\d*\] *DjVu *(\d+)x(\d+), *\w*, *(\d+) *dpi, *gamma=([0-9.-]+)/', $line, $m ) ) {
-                               $xml .= Xml::tags( 'OBJECT',
+                       if ( preg_match(
+                               '/^ *INFO *\[\d*\] *DjVu *(\d+)x(\d+), *\w*, *(\d+) *dpi, *gamma=([0-9.-]+)/',
+                               $line,
+                               $m
+                       ) ) {
+                               $xml .= Xml::tags(
+                                       'OBJECT',
                                        array(
                                                #'data' => '',
                                                #'type' => 'image/x.djvu',
@@ -377,13 +421,15 @@ EOT;
                                                #'usemap' => '',
                                        ),
                                        "\n" .
-                                       Xml::element( 'PARAM', array( 'name' => 'DPI', 'value' => $m[3] ) ) . "\n" .
-                                       Xml::element( 'PARAM', array( 'name' => 'GAMMA', 'value' => $m[4] ) ) . "\n"
+                                               Xml::element( 'PARAM', array( 'name' => 'DPI', 'value' => $m[3] ) ) . "\n" .
+                                               Xml::element( 'PARAM', array( 'name' => 'GAMMA', 'value' => $m[4] ) ) . "\n"
                                ) . "\n";
+
                                return true;
                        }
                        $line = strtok( "\n" );
                }
+
                # Not found
                return false;
        }
index 50dd266..844aef2 100644 (file)
  * @ingroup Media
  */
 class Exif {
+       /** An 8-bit (1-byte) unsigned integer. */
+       const BYTE = 1;
 
-       const BYTE = 1; //!< An 8-bit (1-byte) unsigned integer.
-       const ASCII = 2; //!< An 8-bit byte containing one 7-bit ASCII code. The final byte is terminated with NULL.
-       const SHORT = 3; //!< A 16-bit (2-byte) unsigned integer.
-       const LONG = 4; //!< A 32-bit (4-byte) unsigned integer.
-       const RATIONAL = 5; //!< Two LONGs. The first LONG is the numerator and the second LONG expresses the denominator
-       const SHORT_OR_LONG = 6; //!< A 16-bit (2-byte) or 32-bit (4-byte) unsigned integer.
-       const UNDEFINED = 7; //!< An 8-bit byte that can take any value depending on the field definition
-       const SLONG = 9; //!< A 32-bit (4-byte) signed integer (2's complement notation),
-       const SRATIONAL = 10; //!< Two SLONGs. The first SLONG is the numerator and the second SLONG is the denominator.
-       const IGNORE = -1; // A fake value for things we don't want or don't support.
-
-       //@{
-       /* @var array
-        * @private
+       /** An 8-bit byte containing one 7-bit ASCII code.
+        *  The final byte is terminated with NULL.
         */
+       const ASCII = 2;
 
-       /**
-        * Exif tags grouped by category, the tagname itself is the key and the type
-        * is the value, in the case of more than one possible value type they are
-        * separated by commas.
-        */
-       var $mExifTags;
+       /** A 16-bit (2-byte) unsigned integer. */
+       const SHORT = 3;
 
-       /**
-        * The raw Exif data returned by exif_read_data()
-        */
-       var $mRawExifData;
+       /** A 32-bit (4-byte) unsigned integer. */
+       const LONG = 4;
 
-       /**
-        * A Filtered version of $mRawExifData that has been pruned of invalid
-        * tags and tags that contain content they shouldn't contain according
-        * to the Exif specification
+       /** Two LONGs. The first LONG is the numerator and the second LONG expresses
+        *  the denominator
         */
-       var $mFilteredExifData;
+       const RATIONAL = 5;
 
-       /**
-        * Filtered and formatted Exif data, see FormatMetadata::getFormattedData()
-        */
-       var $mFormattedExifData;
+       /** A 16-bit (2-byte) or 32-bit (4-byte) unsigned integer. */
+       const SHORT_OR_LONG = 6;
 
-       //@}
+       /** An 8-bit byte that can take any value depending on the field definition */
+       const UNDEFINED = 7;
 
-       //@{
-       /* @var string
-        * @private
-        */
+       /** A 32-bit (4-byte) signed integer (2's complement notation), */
+       const SLONG = 9;
 
-       /**
-        * The file being processed
+       /** Two SLONGs. The first SLONG is the numerator and the second SLONG is
+        *  the denominator.
         */
-       var $file;
+       const SRATIONAL = 10;
 
-       /**
-        * The basename of the file being processed
+       /** A fake value for things we don't want or don't support. */
+       const IGNORE = -1;
+
+       /** @var array Exif tags grouped by category, the tagname itself is the key
+        *    and the type is the value, in the case of more than one possible value
+        *    type they are separated by commas.
         */
-       var $basename;
+       private $mExifTags;
 
-       /**
-        * The private log to log to, e.g. 'exif'
+       /** @var array The raw Exif data returned by exif_read_data() */
+       private $mRawExifData;
+
+       /** @var array A Filtered version of $mRawExifData that has been pruned
+        *    of invalid tags and tags that contain content they shouldn't contain
+        *    according to the Exif specification
         */
-       var $log = false;
+       private $mFilteredExifData;
 
-       /**
-        * The byte order of the file. Needed because php's
-        * extension doesn't fully process some obscure props.
+       /** @var string The file being processed */
+       private $file;
+
+       /** @var string The basename of the file being processed */
+       private $basename;
+
+       /** @var string The private log to log to, e.g. 'exif' */
+       private $log = false;
+
+       /** @var string The byte order of the file. Needed because php's extension
+        *    doesn't fully process some obscure props.
         */
        private $byteOrder;
-       //@}
 
        /**
         * Constructor
         *
-        * @param string $file filename.
-        * @param string $byteOrder Type of byte ordering either 'BE' (Big Endian) or 'LE' (Little Endian). Default ''.
+        * @param string $file Filename.
+        * @param string $byteOrder Type of byte ordering either 'BE' (Big Endian)
+        *   or 'LE' (Little Endian). Default ''.
         * @throws MWException
         * @todo FIXME: The following are broke:
-        * SubjectArea. Need to test the more obscure tags.
-        *
-        * DigitalZoomRatio = 0/0 is rejected. need to determine if that's valid.
-        * possibly should treat 0/0 = 0. need to read exif spec on that.
+        *   SubjectArea. Need to test the more obscure tags.
+        *   DigitalZoomRatio = 0/0 is rejected. need to determine if that's valid.
+        *   Possibly should treat 0/0 = 0. need to read exif spec on that.
         */
        function __construct( $file, $byteOrder = '' ) {
                /**
@@ -125,122 +120,123 @@ class Exif {
                        # TIFF Rev. 6.0 Attribute Information (p22)
                        'IFD0' => array(
                                # Tags relating to image structure
-                               'ImageWidth' => Exif::SHORT_OR_LONG,            # Image width
-                               'ImageLength' => Exif::SHORT_OR_LONG,           # Image height
-                               'BitsPerSample' => array( Exif::SHORT, 3 ),             # Number of bits per component
+                               'ImageWidth' => Exif::SHORT_OR_LONG, # Image width
+                               'ImageLength' => Exif::SHORT_OR_LONG, # Image height
+                               'BitsPerSample' => array( Exif::SHORT, 3 ), # Number of bits per component
                                # "When a primary image is JPEG compressed, this designation is not"
                                # "necessary and is omitted." (p23)
-                               'Compression' => Exif::SHORT,                           # Compression scheme #p23
-                               'PhotometricInterpretation' => Exif::SHORT,             # Pixel composition #p23
-                               'Orientation' => Exif::SHORT,                           # Orientation of image #p24
-                               'SamplesPerPixel' => Exif::SHORT,                       # Number of components
-                               'PlanarConfiguration' => Exif::SHORT,                   # Image data arrangement #p24
-                               'YCbCrSubSampling' => array( Exif::SHORT, 2 ),          # Subsampling ratio of Y to C #p24
-                               'YCbCrPositioning' => Exif::SHORT,                      # Y and C positioning #p24-25
-                               'XResolution' => Exif::RATIONAL,                        # Image resolution in width direction
-                               'YResolution' => Exif::RATIONAL,                        # Image resolution in height direction
-                               'ResolutionUnit' => Exif::SHORT,                        # Unit of X and Y resolution #(p26)
+                               'Compression' => Exif::SHORT, # Compression scheme #p23
+                               'PhotometricInterpretation' => Exif::SHORT, # Pixel composition #p23
+                               'Orientation' => Exif::SHORT, # Orientation of image #p24
+                               'SamplesPerPixel' => Exif::SHORT, # Number of components
+                               'PlanarConfiguration' => Exif::SHORT, # Image data arrangement #p24
+                               'YCbCrSubSampling' => array( Exif::SHORT, 2 ), # Subsampling ratio of Y to C #p24
+                               'YCbCrPositioning' => Exif::SHORT, # Y and C positioning #p24-25
+                               'XResolution' => Exif::RATIONAL, # Image resolution in width direction
+                               'YResolution' => Exif::RATIONAL, # Image resolution in height direction
+                               'ResolutionUnit' => Exif::SHORT, # Unit of X and Y resolution #(p26)
 
                                # Tags relating to recording offset
-                               'StripOffsets' => Exif::SHORT_OR_LONG,                  # Image data location
-                               'RowsPerStrip' => Exif::SHORT_OR_LONG,                  # Number of rows per strip
-                               'StripByteCounts' => Exif::SHORT_OR_LONG,               # Bytes per compressed strip
-                               'JPEGInterchangeFormat' => Exif::SHORT_OR_LONG,         # Offset to JPEG SOI
-                               'JPEGInterchangeFormatLength' => Exif::SHORT_OR_LONG,   # Bytes of JPEG data
+                               'StripOffsets' => Exif::SHORT_OR_LONG, # Image data location
+                               'RowsPerStrip' => Exif::SHORT_OR_LONG, # Number of rows per strip
+                               'StripByteCounts' => Exif::SHORT_OR_LONG, # Bytes per compressed strip
+                               'JPEGInterchangeFormat' => Exif::SHORT_OR_LONG, # Offset to JPEG SOI
+                               'JPEGInterchangeFormatLength' => Exif::SHORT_OR_LONG, # Bytes of JPEG data
 
                                # Tags relating to image data characteristics
-                               'TransferFunction' => Exif::IGNORE,                     # Transfer function
-                               'WhitePoint' => array( Exif::RATIONAL, 2 ),             # White point chromaticity
-                               'PrimaryChromaticities' => array( Exif::RATIONAL, 6 ),  # Chromaticities of primarities
-                               'YCbCrCoefficients' => array( Exif::RATIONAL, 3 ),      # Color space transformation matrix coefficients #p27
-                               'ReferenceBlackWhite' => array( Exif::RATIONAL, 6 ),    # Pair of black and white reference values
+                               'TransferFunction' => Exif::IGNORE, # Transfer function
+                               'WhitePoint' => array( Exif::RATIONAL, 2 ), # White point chromaticity
+                               'PrimaryChromaticities' => array( Exif::RATIONAL, 6 ), # Chromaticities of primarities
+                               # Color space transformation matrix coefficients #p27
+                               'YCbCrCoefficients' => array( Exif::RATIONAL, 3 ),
+                               'ReferenceBlackWhite' => array( Exif::RATIONAL, 6 ), # Pair of black and white reference values
 
                                # Other tags
-                               'DateTime' => Exif::ASCII,                              # File change date and time
-                               'ImageDescription' => Exif::ASCII,                      # Image title
-                               'Make' => Exif::ASCII,                                  # Image input equipment manufacturer
-                               'Model' => Exif::ASCII,                                 # Image input equipment model
-                               'Software' => Exif::ASCII,                              # Software used
-                               'Artist' => Exif::ASCII,                                # Person who created the image
-                               'Copyright' => Exif::ASCII,                             # Copyright holder
+                               'DateTime' => Exif::ASCII, # File change date and time
+                               'ImageDescription' => Exif::ASCII, # Image title
+                               'Make' => Exif::ASCII, # Image input equipment manufacturer
+                               'Model' => Exif::ASCII, # Image input equipment model
+                               'Software' => Exif::ASCII, # Software used
+                               'Artist' => Exif::ASCII, # Person who created the image
+                               'Copyright' => Exif::ASCII, # Copyright holder
                        ),
 
                        # Exif IFD Attribute Information (p30-31)
                        'EXIF' => array(
-                               # TODO: NOTE: Nonexistence of this field is taken to mean nonconformance
+                               # @todo NOTE: Nonexistence of this field is taken to mean nonconformance
                                # to the Exif 2.1 AND 2.2 standards
-                               'ExifVersion' => Exif::UNDEFINED,                       # Exif version
-                               'FlashPixVersion' => Exif::UNDEFINED,                   # Supported Flashpix version #p32
+                               'ExifVersion' => Exif::UNDEFINED, # Exif version
+                               'FlashPixVersion' => Exif::UNDEFINED, # Supported Flashpix version #p32
 
                                # Tags relating to Image Data Characteristics
-                               'ColorSpace' => Exif::SHORT,                            # Color space information #p32
+                               'ColorSpace' => Exif::SHORT, # Color space information #p32
 
                                # Tags relating to image configuration
-                               'ComponentsConfiguration' => Exif::UNDEFINED,                   # Meaning of each component #p33
-                               'CompressedBitsPerPixel' => Exif::RATIONAL,                     # Image compression mode
-                               'PixelYDimension' => Exif::SHORT_OR_LONG,               # Valid image width
-                               'PixelXDimension' => Exif::SHORT_OR_LONG,               # Valid image height
+                               'ComponentsConfiguration' => Exif::UNDEFINED, # Meaning of each component #p33
+                               'CompressedBitsPerPixel' => Exif::RATIONAL, # Image compression mode
+                               'PixelYDimension' => Exif::SHORT_OR_LONG, # Valid image width
+                               'PixelXDimension' => Exif::SHORT_OR_LONG, # Valid image height
 
                                # Tags relating to related user information
-                               'MakerNote' => Exif::IGNORE,                            # Manufacturer notes
-                               'UserComment' => Exif::UNDEFINED,                       # User comments #p34
+                               'MakerNote' => Exif::IGNORE, # Manufacturer notes
+                               'UserComment' => Exif::UNDEFINED, # User comments #p34
 
                                # Tags relating to related file information
-                               'RelatedSoundFile' => Exif::ASCII,                      # Related audio file
+                               'RelatedSoundFile' => Exif::ASCII, # Related audio file
 
                                # Tags relating to date and time
-                               'DateTimeOriginal' => Exif::ASCII,                      # Date and time of original data generation #p36
-                               'DateTimeDigitized' => Exif::ASCII,                     # Date and time of original data generation
-                               'SubSecTime' => Exif::ASCII,                            # DateTime subseconds
-                               'SubSecTimeOriginal' => Exif::ASCII,                    # DateTimeOriginal subseconds
-                               'SubSecTimeDigitized' => Exif::ASCII,                   # DateTimeDigitized subseconds
+                               'DateTimeOriginal' => Exif::ASCII, # Date and time of original data generation #p36
+                               'DateTimeDigitized' => Exif::ASCII, # Date and time of original data generation
+                               'SubSecTime' => Exif::ASCII, # DateTime subseconds
+                               'SubSecTimeOriginal' => Exif::ASCII, # DateTimeOriginal subseconds
+                               'SubSecTimeDigitized' => Exif::ASCII, # DateTimeDigitized subseconds
 
                                # Tags relating to picture-taking conditions (p31)
-                               'ExposureTime' => Exif::RATIONAL,                       # Exposure time
-                               'FNumber' => Exif::RATIONAL,                            # F Number
-                               'ExposureProgram' => Exif::SHORT,                       # Exposure Program #p38
-                               'SpectralSensitivity' => Exif::ASCII,                   # Spectral sensitivity
-                               'ISOSpeedRatings' => Exif::SHORT,                       # ISO speed rating
+                               'ExposureTime' => Exif::RATIONAL, # Exposure time
+                               'FNumber' => Exif::RATIONAL, # F Number
+                               'ExposureProgram' => Exif::SHORT, # Exposure Program #p38
+                               'SpectralSensitivity' => Exif::ASCII, # Spectral sensitivity
+                               'ISOSpeedRatings' => Exif::SHORT, # ISO speed rating
                                'OECF' => Exif::IGNORE,
                                # Optoelectronic conversion factor. Note: We don't have support for this atm.
-                               'ShutterSpeedValue' => Exif::SRATIONAL,                 # Shutter speed
-                               'ApertureValue' => Exif::RATIONAL,                      # Aperture
-                               'BrightnessValue' => Exif::SRATIONAL,                   # Brightness
-                               'ExposureBiasValue' => Exif::SRATIONAL,                 # Exposure bias
-                               'MaxApertureValue' => Exif::RATIONAL,                   # Maximum land aperture
-                               'SubjectDistance' => Exif::RATIONAL,                    # Subject distance
-                               'MeteringMode' => Exif::SHORT,                          # Metering mode #p40
-                               'LightSource' => Exif::SHORT,                           # Light source #p40-41
-                               'Flash' => Exif::SHORT,                                 # Flash #p41-42
-                               'FocalLength' => Exif::RATIONAL,                        # Lens focal length
-                               'SubjectArea' => array( Exif::SHORT, 4 ),               # Subject area
-                               'FlashEnergy' => Exif::RATIONAL,                        # Flash energy
-                               'SpatialFrequencyResponse' => Exif::IGNORE,             # Spatial frequency response. Not supported atm.
-                               'FocalPlaneXResolution' => Exif::RATIONAL,              # Focal plane X resolution
-                               'FocalPlaneYResolution' => Exif::RATIONAL,              # Focal plane Y resolution
-                               'FocalPlaneResolutionUnit' => Exif::SHORT,              # Focal plane resolution unit #p46
-                               'SubjectLocation' => array( Exif::SHORT, 2 ),           # Subject location
-                               'ExposureIndex' => Exif::RATIONAL,                      # Exposure index
-                               'SensingMethod' => Exif::SHORT,                         # Sensing method #p46
-                               'FileSource' => Exif::UNDEFINED,                        # File source #p47
-                               'SceneType' => Exif::UNDEFINED,                         # Scene type #p47
-                               'CFAPattern' => Exif::IGNORE,                           # CFA pattern. not supported atm.
-                               'CustomRendered' => Exif::SHORT,                        # Custom image processing #p48
-                               'ExposureMode' => Exif::SHORT,                          # Exposure mode #p48
-                               'WhiteBalance' => Exif::SHORT,                          # White Balance #p49
-                               'DigitalZoomRatio' => Exif::RATIONAL,                   # Digital zoom ration
-                               'FocalLengthIn35mmFilm' => Exif::SHORT,                 # Focal length in 35 mm film
-                               'SceneCaptureType' => Exif::SHORT,                      # Scene capture type #p49
-                               'GainControl' => Exif::SHORT,                           # Scene control #p49-50
-                               'Contrast' => Exif::SHORT,                              # Contrast #p50
-                               'Saturation' => Exif::SHORT,                            # Saturation #p50
-                               'Sharpness' => Exif::SHORT,                             # Sharpness #p50
+                               'ShutterSpeedValue' => Exif::SRATIONAL, # Shutter speed
+                               'ApertureValue' => Exif::RATIONAL, # Aperture
+                               'BrightnessValue' => Exif::SRATIONAL, # Brightness
+                               'ExposureBiasValue' => Exif::SRATIONAL, # Exposure bias
+                               'MaxApertureValue' => Exif::RATIONAL, # Maximum land aperture
+                               'SubjectDistance' => Exif::RATIONAL, # Subject distance
+                               'MeteringMode' => Exif::SHORT, # Metering mode #p40
+                               'LightSource' => Exif::SHORT, # Light source #p40-41
+                               'Flash' => Exif::SHORT, # Flash #p41-42
+                               'FocalLength' => Exif::RATIONAL, # Lens focal length
+                               'SubjectArea' => array( Exif::SHORT, 4 ), # Subject area
+                               'FlashEnergy' => Exif::RATIONAL, # Flash energy
+                               'SpatialFrequencyResponse' => Exif::IGNORE, # Spatial frequency response. Not supported atm.
+                               'FocalPlaneXResolution' => Exif::RATIONAL, # Focal plane X resolution
+                               'FocalPlaneYResolution' => Exif::RATIONAL, # Focal plane Y resolution
+                               'FocalPlaneResolutionUnit' => Exif::SHORT, # Focal plane resolution unit #p46
+                               'SubjectLocation' => array( Exif::SHORT, 2 ), # Subject location
+                               'ExposureIndex' => Exif::RATIONAL, # Exposure index
+                               'SensingMethod' => Exif::SHORT, # Sensing method #p46
+                               'FileSource' => Exif::UNDEFINED, # File source #p47
+                               'SceneType' => Exif::UNDEFINED, # Scene type #p47
+                               'CFAPattern' => Exif::IGNORE, # CFA pattern. not supported atm.
+                               'CustomRendered' => Exif::SHORT, # Custom image processing #p48
+                               'ExposureMode' => Exif::SHORT, # Exposure mode #p48
+                               'WhiteBalance' => Exif::SHORT, # White Balance #p49
+                               'DigitalZoomRatio' => Exif::RATIONAL, # Digital zoom ration
+                               'FocalLengthIn35mmFilm' => Exif::SHORT, # Focal length in 35 mm film
+                               'SceneCaptureType' => Exif::SHORT, # Scene capture type #p49
+                               'GainControl' => Exif::SHORT, # Scene control #p49-50
+                               'Contrast' => Exif::SHORT, # Contrast #p50
+                               'Saturation' => Exif::SHORT, # Saturation #p50
+                               'Sharpness' => Exif::SHORT, # Sharpness #p50
                                'DeviceSettingDescription' => Exif::IGNORE,
                                # Device settings description. This could maybe be supported. Need to find an
                                # example file that uses this to see if it has stuff of interest in it.
-                               'SubjectDistanceRange' => Exif::SHORT,                  # Subject distance range #p51
+                               'SubjectDistanceRange' => Exif::SHORT, # Subject distance range #p51
 
-                               'ImageUniqueID' => Exif::ASCII,                         # Unique image ID
+                               'ImageUniqueID' => Exif::ASCII, # Unique image ID
                        ),
 
                        # GPS Attribute Information (p52)
@@ -248,38 +244,38 @@ class Exif {
                                'GPSVersion' => Exif::UNDEFINED,
                                # Should be an array of 4 Exif::BYTE's. However php treats it as an undefined
                                # Note exif standard calls this GPSVersionID, but php doesn't like the id suffix
-                               'GPSLatitudeRef' => Exif::ASCII,                        # North or South Latitude #p52-53
-                               'GPSLatitude' => array( Exif::RATIONAL, 3 ),            # Latitude
-                               'GPSLongitudeRef' => Exif::ASCII,                       # East or West Longitude #p53
-                               'GPSLongitude' => array( Exif::RATIONAL, 3 ),           # Longitude
+                               'GPSLatitudeRef' => Exif::ASCII, # North or South Latitude #p52-53
+                               'GPSLatitude' => array( Exif::RATIONAL, 3 ), # Latitude
+                               'GPSLongitudeRef' => Exif::ASCII, # East or West Longitude #p53
+                               'GPSLongitude' => array( Exif::RATIONAL, 3 ), # Longitude
                                'GPSAltitudeRef' => Exif::UNDEFINED,
                                # Altitude reference. Note, the exif standard says this should be an EXIF::Byte,
                                # but php seems to disagree.
-                               'GPSAltitude' => Exif::RATIONAL,                        # Altitude
-                               'GPSTimeStamp' => array( Exif::RATIONAL, 3 ),           # GPS time (atomic clock)
-                               'GPSSatellites' => Exif::ASCII,                         # Satellites used for measurement
-                               'GPSStatus' => Exif::ASCII,                             # Receiver status #p54
-                               'GPSMeasureMode' => Exif::ASCII,                        # Measurement mode #p54-55
-                               'GPSDOP' => Exif::RATIONAL,                             # Measurement precision
-                               'GPSSpeedRef' => Exif::ASCII,                           # Speed unit #p55
-                               'GPSSpeed' => Exif::RATIONAL,                           # Speed of GPS receiver
-                               'GPSTrackRef' => Exif::ASCII,                           # Reference for direction of movement #p55
-                               'GPSTrack' => Exif::RATIONAL,                           # Direction of movement
-                               'GPSImgDirectionRef' => Exif::ASCII,                    # Reference for direction of image #p56
-                               'GPSImgDirection' => Exif::RATIONAL,                    # Direction of image
-                               'GPSMapDatum' => Exif::ASCII,                           # Geodetic survey data used
-                               'GPSDestLatitudeRef' => Exif::ASCII,                    # Reference for latitude of destination #p56
-                               'GPSDestLatitude' => array( Exif::RATIONAL, 3 ),        # Latitude destination
-                               'GPSDestLongitudeRef' => Exif::ASCII,                   # Reference for longitude of destination #p57
-                               'GPSDestLongitude' => array( Exif::RATIONAL, 3 ),       # Longitude of destination
-                               'GPSDestBearingRef' => Exif::ASCII,                     # Reference for bearing of destination #p57
-                               'GPSDestBearing' => Exif::RATIONAL,                     # Bearing of destination
-                               'GPSDestDistanceRef' => Exif::ASCII,                    # Reference for distance to destination #p57-58
-                               'GPSDestDistance' => Exif::RATIONAL,                    # Distance to destination
-                               'GPSProcessingMethod' => Exif::UNDEFINED,               # Name of GPS processing method
-                               'GPSAreaInformation' => Exif::UNDEFINED,                # Name of GPS area
-                               'GPSDateStamp' => Exif::ASCII,                          # GPS date
-                               'GPSDifferential' => Exif::SHORT,                       # GPS differential correction
+                               'GPSAltitude' => Exif::RATIONAL, # Altitude
+                               'GPSTimeStamp' => array( Exif::RATIONAL, 3 ), # GPS time (atomic clock)
+                               'GPSSatellites' => Exif::ASCII, # Satellites used for measurement
+                               'GPSStatus' => Exif::ASCII, # Receiver status #p54
+                               'GPSMeasureMode' => Exif::ASCII, # Measurement mode #p54-55
+                               'GPSDOP' => Exif::RATIONAL, # Measurement precision
+                               'GPSSpeedRef' => Exif::ASCII, # Speed unit #p55
+                               'GPSSpeed' => Exif::RATIONAL, # Speed of GPS receiver
+                               'GPSTrackRef' => Exif::ASCII, # Reference for direction of movement #p55
+                               'GPSTrack' => Exif::RATIONAL, # Direction of movement
+                               'GPSImgDirectionRef' => Exif::ASCII, # Reference for direction of image #p56
+                               'GPSImgDirection' => Exif::RATIONAL, # Direction of image
+                               'GPSMapDatum' => Exif::ASCII, # Geodetic survey data used
+                               'GPSDestLatitudeRef' => Exif::ASCII, # Reference for latitude of destination #p56
+                               'GPSDestLatitude' => array( Exif::RATIONAL, 3 ), # Latitude destination
+                               'GPSDestLongitudeRef' => Exif::ASCII, # Reference for longitude of destination #p57
+                               'GPSDestLongitude' => array( Exif::RATIONAL, 3 ), # Longitude of destination
+                               'GPSDestBearingRef' => Exif::ASCII, # Reference for bearing of destination #p57
+                               'GPSDestBearing' => Exif::RATIONAL, # Bearing of destination
+                               'GPSDestDistanceRef' => Exif::ASCII, # Reference for distance to destination #p57-58
+                               'GPSDestDistance' => Exif::RATIONAL, # Distance to destination
+                               'GPSProcessingMethod' => Exif::UNDEFINED, # Name of GPS processing method
+                               'GPSAreaInformation' => Exif::UNDEFINED, # Name of GPS area
+                               'GPSDateStamp' => Exif::ASCII, # GPS date
+                               'GPSDifferential' => Exif::SHORT, # GPS differential correction
                        ),
                );
 
@@ -302,14 +298,15 @@ class Exif {
                        $data = exif_read_data( $this->file, 0, true );
                        wfRestoreWarnings();
                } else {
-                       throw new MWException( "Internal error: exif_read_data not present. \$wgShowEXIF may be incorrectly set or not checked by an extension." );
+                       throw new MWException( "Internal error: exif_read_data not present. " .
+                               "\$wgShowEXIF may be incorrectly set or not checked by an extension." );
                }
                /**
                 * exif_read_data() will return false on invalid input, such as
                 * when somebody uploads a file called something.jpeg
                 * containing random gibberish.
                 */
-               $this->mRawExifData = $data ? $data : array();
+               $this->mRawExifData = $data ?: array();
                $this->makeFilteredData();
                $this->collapseData();
                $this->debugFile( __FUNCTION__, false );
@@ -371,15 +368,17 @@ class Exif {
                $this->exifGPStoNumber( 'GPSLongitude' );
                $this->exifGPStoNumber( 'GPSDestLongitude' );
 
-               if ( isset( $this->mFilteredExifData['GPSAltitude'] ) && isset( $this->mFilteredExifData['GPSAltitudeRef'] ) ) {
-
-                       // We know altitude data is a <num>/<denom> from the validation functions ran earlier.
-                       // But multiplying such a string by -1 doesn't work well, so convert.
+               if ( isset( $this->mFilteredExifData['GPSAltitude'] )
+                       && isset( $this->mFilteredExifData['GPSAltitudeRef'] )
+               ) {
+                       // We know altitude data is a <num>/<denom> from the validation
+                       // functions ran earlier. But multiplying such a string by -1
+                       // doesn't work well, so convert.
                        list( $num, $denom ) = explode( '/', $this->mFilteredExifData['GPSAltitude'] );
                        $this->mFilteredExifData['GPSAltitude'] = $num / $denom;
 
                        if ( $this->mFilteredExifData['GPSAltitudeRef'] === "\1" ) {
-                               $this->mFilteredExifData['GPSAltitude'] *= - 1;
+                               $this->mFilteredExifData['GPSAltitude'] *= -1;
                        }
                        unset( $this->mFilteredExifData['GPSAltitudeRef'] );
                }
@@ -397,7 +396,9 @@ class Exif {
                if ( isset( $this->mFilteredExifData['ComponentsConfiguration'] ) ) {
                        $val = $this->mFilteredExifData['ComponentsConfiguration'];
                        $ccVals = array();
-                       for ( $i = 0; $i < strlen( $val ); $i++ ) {
+
+                       $strLen = strlen( $val );
+                       for ( $i = 0; $i < $strLen; $i++ ) {
                                $ccVals[$i] = ord( substr( $val, $i, 1 ) );
                        }
                        $ccVals['_type'] = 'ol'; //this is for formatting later.
@@ -414,12 +415,15 @@ class Exif {
                if ( isset( $this->mFilteredExifData['GPSVersion'] ) ) {
                        $val = $this->mFilteredExifData['GPSVersion'];
                        $newVal = '';
-                       for ( $i = 0; $i < strlen( $val ); $i++ ) {
+
+                       $strLen = strlen( $val );
+                       for ( $i = 0; $i < $strLen; $i++ ) {
                                if ( $i !== 0 ) {
                                        $newVal .= '.';
                                }
                                $newVal .= ord( substr( $val, $i, 1 ) );
                        }
+
                        if ( $this->byteOrder === 'LE' ) {
                                // Need to reverse the string
                                $newVal2 = '';
@@ -432,8 +436,8 @@ class Exif {
                        }
                        unset( $this->mFilteredExifData['GPSVersion'] );
                }
-
        }
+
        /**
         * Do userComment tags and similar. See pg. 34 of exif standard.
         * basically first 8 bytes is charset, rest is value.
@@ -448,6 +452,7 @@ class Exif {
 
                                $this->debug( $this->mFilteredExifData[$prop], __FUNCTION__, false );
                                unset( $this->mFilteredExifData[$prop] );
+
                                return;
                        }
                        $charCode = substr( $this->mFilteredExifData[$prop], 0, 8 );
@@ -488,6 +493,7 @@ class Exif {
                                //only whitespace.
                                $this->debug( $this->mFilteredExifData[$prop], __FUNCTION__, "$prop: Is only whitespace" );
                                unset( $this->mFilteredExifData[$prop] );
+
                                return;
                        }
 
@@ -495,28 +501,32 @@ class Exif {
                        $this->mFilteredExifData[$prop] = $val;
                }
        }
+
        /**
         * Convert an Exif::UNDEFINED from a raw binary string
         * to its value. This is sometimes needed depending on
         * the type of UNDEFINED field
-        * @param string $prop name of property
+        * @param string $prop Name of property
         */
        private function exifPropToOrd( $prop ) {
                if ( isset( $this->mFilteredExifData[$prop] ) ) {
                        $this->mFilteredExifData[$prop] = ord( $this->mFilteredExifData[$prop] );
                }
        }
+
        /**
         * Convert gps in exif form to a single floating point number
         * for example 10 degress 20`40`` S -> -10.34444
-        * @param string $prop a gps coordinate exif tag name (like GPSLongitude)
+        * @param string $prop A GPS coordinate exif tag name (like GPSLongitude)
         */
        private function exifGPStoNumber( $prop ) {
                $loc =& $this->mFilteredExifData[$prop];
                $dir =& $this->mFilteredExifData[$prop . 'Ref'];
                $res = false;
 
-               if ( isset( $loc ) && isset( $dir ) && ( $dir === 'N' || $dir === 'S' || $dir === 'E' || $dir === 'W' ) ) {
+               if ( isset( $loc ) && isset( $dir )
+                       && ( $dir === 'N' || $dir === 'S' || $dir === 'E' || $dir === 'W' )
+               ) {
                        list( $num, $denom ) = explode( '/', $loc[0] );
                        $res = $num / $denom;
                        list( $num, $denom ) = explode( '/', $loc[1] );
@@ -525,7 +535,7 @@ class Exif {
                        $res += ( $num / $denom ) * ( 1 / 3600 );
 
                        if ( $dir === 'S' || $dir === 'W' ) {
-                               $res *= - 1; // make negative
+                               $res *= -1; // make negative
                        }
                }
 
@@ -540,17 +550,6 @@ class Exif {
                }
        }
 
-       /**
-        * Use FormatMetadata to create formatted values for display to user
-        * (is this ever used?)
-        *
-        * @deprecated since 1.18
-        */
-       function makeFormattedData() {
-               wfDeprecated( __METHOD__, '1.18' );
-               $this->mFormattedExifData = FormatMetadata::getFormattedData(
-                       $this->mFilteredExifData );
-       }
        /**#@-*/
 
        /**#@+
@@ -571,21 +570,6 @@ class Exif {
                return $this->mFilteredExifData;
        }
 
-       /**
-        * Get $this->mFormattedExifData
-        *
-        * This returns the data for display to user.
-        * Its unclear if this is ever used.
-        *
-        * @deprecated since 1.18
-        */
-       function getFormattedData() {
-               wfDeprecated( __METHOD__, '1.18' );
-               if ( !$this->mFormattedExifData ) {
-                       $this->makeFormattedData();
-               }
-               return $this->mFormattedExifData;
-       }
        /**#@-*/
 
        /**
@@ -607,23 +591,23 @@ class Exif {
        /**#@+
         * Validates if a tag value is of the type it should be according to the Exif spec
         *
-        * @private
-        *
-        * @param $in Mixed: the input value to check
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isByte( $in ) {
                if ( !is_array( $in ) && sprintf( '%d', $in ) == $in && $in >= 0 && $in <= 255 ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
 
        /**
-        * @param $in
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isASCII( $in ) {
@@ -633,11 +617,13 @@ class Exif {
 
                if ( preg_match( "/[^\x0a\x20-\x7e]/", $in ) ) {
                        $this->debug( $in, __FUNCTION__, 'found a character not in our whitelist' );
+
                        return false;
                }
 
                if ( preg_match( '/^\s*$/', $in ) ) {
                        $this->debug( $in, __FUNCTION__, 'input consisted solely of whitespace' );
+
                        return false;
                }
 
@@ -645,93 +631,110 @@ class Exif {
        }
 
        /**
-        * @param $in
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isShort( $in ) {
                if ( !is_array( $in ) && sprintf( '%d', $in ) == $in && $in >= 0 && $in <= 65536 ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
 
        /**
-        * @param $in
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isLong( $in ) {
                if ( !is_array( $in ) && sprintf( '%d', $in ) == $in && $in >= 0 && $in <= 4294967296 ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
 
        /**
-        * @param $in
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isRational( $in ) {
                $m = array();
-               if ( !is_array( $in ) && preg_match( '/^(\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m ) ) { # Avoid division by zero
+
+               # Avoid division by zero
+               if ( !is_array( $in )
+                       && preg_match( '/^(\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m )
+               ) {
                        return $this->isLong( $m[1] ) && $this->isLong( $m[2] );
                } else {
                        $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
+
                        return false;
                }
        }
 
        /**
-        * @param $in
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isUndefined( $in ) {
                $this->debug( $in, __FUNCTION__, true );
+
                return true;
        }
 
        /**
-        * @param $in
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isSlong( $in ) {
                if ( $this->isLong( abs( $in ) ) ) {
                        $this->debug( $in, __FUNCTION__, true );
+
                        return true;
                } else {
                        $this->debug( $in, __FUNCTION__, false );
+
                        return false;
                }
        }
 
        /**
-        * @param $in
+        * @param mixed $in The input value to check
         * @return bool
         */
        private function isSrational( $in ) {
                $m = array();
-               if ( !is_array( $in ) && preg_match( '/^(-?\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m ) ) { # Avoid division by zero
+
+               # Avoid division by zero
+               if ( !is_array( $in ) &&
+                       preg_match( '/^(-?\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m )
+               ) {
                        return $this->isSlong( $m[0] ) && $this->isSlong( $m[1] );
                } else {
                        $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
+
                        return false;
                }
        }
+
        /**#@-*/
 
        /**
         * Validates if a tag has a legal value according to the Exif spec
         *
-        * @private
         * @param string $section section where tag is located.
         * @param string $tag the tag to check.
-        * @param $val Mixed: the value of the tag.
-        * @param $recursive Boolean: true if called recursively for array types.
+        * @param mixed $val The value of the tag.
+        * @param bool $recursive True if called recursively for array types.
         * @return bool
         */
        private function validate( $section, $tag, $val, $recursive = false ) {
@@ -747,6 +750,7 @@ class Exif {
                $count = count( $val );
                if ( $ecount != $count ) {
                        $this->debug( $val, __FUNCTION__, "Expected $ecount elements for $tag but got $count" );
+
                        return false;
                }
                if ( $count > 1 ) {
@@ -755,42 +759,54 @@ class Exif {
                                        return false;
                                }
                        }
+
                        return true;
                }
                // Does not work if not typecast
                switch ( (string)$etype ) {
                        case (string)Exif::BYTE:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isByte( $val );
                        case (string)Exif::ASCII:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isASCII( $val );
                        case (string)Exif::SHORT:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isShort( $val );
                        case (string)Exif::LONG:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isLong( $val );
                        case (string)Exif::RATIONAL:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isRational( $val );
                        case (string)Exif::SHORT_OR_LONG:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isShort( $val ) || $this->isLong( $val );
                        case (string)Exif::UNDEFINED:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isUndefined( $val );
                        case (string)Exif::SLONG:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isSlong( $val );
                        case (string)Exif::SRATIONAL:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return $this->isSrational( $val );
                        case (string)Exif::IGNORE:
                                $this->debug( $val, __FUNCTION__, $debug );
+
                                return false;
                        default:
                                $this->debug( $val, __FUNCTION__, "The tag '$tag' is unknown" );
+
                                return false;
                }
        }
@@ -798,11 +814,9 @@ class Exif {
        /**
         * Convenience function for debugging output
         *
-        * @private
-        *
-        * @param $in Mixed:
-        * @param $fname String:
-        * @param $action Mixed: , default NULL.
+        * @param mixed $in Arrays will be processed with print_r().
+        * @param string $fname Function name to log.
+        * @param string|bool|null $action Default null.
         */
        private function debug( $in, $fname, $action = null ) {
                if ( !$this->log ) {
@@ -828,10 +842,8 @@ class Exif {
        /**
         * Convenience function for debugging output
         *
-        * @private
-        *
         * @param string $fname the name of the function calling this function
-        * @param $io Boolean: Specify whether we're beginning or ending
+        * @param bool $io Specify whether we're beginning or ending
         */
        private function debugFile( $fname, $io ) {
                if ( !$this->log ) {
index d3fa36d..4bbafc1 100644 (file)
@@ -28,7 +28,6 @@
  * @ingroup Media
  */
 class ExifBitmapHandler extends BitmapHandler {
-
        const BROKEN_FILE = '-1'; // error extracting metadata
        const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata.
 
@@ -76,9 +75,15 @@ class ExifBitmapHandler extends BitmapHandler {
                        }
                }
                $metadata['MEDIAWIKI_EXIF_VERSION'] = 1;
+
                return $metadata;
        }
 
+       /**
+        * @param $image
+        * @param array $metadata
+        * @return bool|int
+        */
        function isMetadataValid( $image, $metadata ) {
                global $wgShowEXIF;
                if ( !$wgShowEXIF ) {
@@ -89,6 +94,7 @@ class ExifBitmapHandler extends BitmapHandler {
                        # Old special value indicating that there is no Exif data in the file.
                        # or that there was an error well extracting the metadata.
                        wfDebug( __METHOD__ . ": back-compat version\n" );
+
                        return self::METADATA_COMPATIBLE;
                }
                if ( $metadata === self::BROKEN_FILE ) {
@@ -97,25 +103,28 @@ class ExifBitmapHandler extends BitmapHandler {
                wfSuppressWarnings();
                $exif = unserialize( $metadata );
                wfRestoreWarnings();
-               if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) ||
-                       $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version() )
-               {
-                       if ( isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) &&
-                               $exif['MEDIAWIKI_EXIF_VERSION'] == 1 )
-                       {
+               if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] )
+                       || $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version()
+               {
+                       if ( isset( $exif['MEDIAWIKI_EXIF_VERSION'] )
+                               && $exif['MEDIAWIKI_EXIF_VERSION'] == 1
+                       {
                                //back-compatible but old
                                wfDebug( __METHOD__ . ": back-compat version\n" );
+
                                return self::METADATA_COMPATIBLE;
                        }
                        # Wrong (non-compatible) version
                        wfDebug( __METHOD__ . ": wrong version\n" );
+
                        return self::METADATA_BAD;
                }
+
                return self::METADATA_GOOD;
        }
 
        /**
-        * @param $image File
+        * @param File $image
         * @return array|bool
         */
        function formatMetadata( $image ) {
@@ -129,10 +138,10 @@ class ExifBitmapHandler extends BitmapHandler {
 
        public function getCommonMetaArray( File $file ) {
                $metadata = $file->getMetadata();
-               if ( $metadata === self::OLD_BROKEN_FILE ||
-                       $metadata === self::BROKEN_FILE ||
-                       $this->isMetadataValid( $file, $metadata ) === self::METADATA_BAD )
-               {
+               if ( $metadata === self::OLD_BROKEN_FILE
+                       || $metadata === self::BROKEN_FILE
+                       || $this->isMetadataValid( $file, $metadata ) === self::METADATA_BAD
+               {
                        // So we don't try and display metadata from PagedTiffHandler
                        // for example when using InstantCommons.
                        return array();
@@ -160,12 +169,11 @@ class ExifBitmapHandler extends BitmapHandler {
         * @return array
         */
        function getImageSize( $image, $path ) {
-               global $wgEnableAutoRotation;
                $gis = parent::getImageSize( $image, $path );
 
                // Don't just call $image->getMetadata(); FSFile::getPropsFromPath() calls us with a bogus object.
                // This may mean we read EXIF data twice on initial upload.
-               if ( $wgEnableAutoRotation ) {
+               if ( BitmapHandler::autoRotateEnabled() ) {
                        $meta = $this->getMetadata( $image, $path );
                        $rotation = $this->getRotationForExif( $meta );
                } else {
@@ -177,6 +185,7 @@ class ExifBitmapHandler extends BitmapHandler {
                        $gis[0] = $gis[1];
                        $gis[1] = $width;
                }
+
                return $gis;
        }
 
@@ -193,12 +202,12 @@ class ExifBitmapHandler extends BitmapHandler {
         * @return int 0, 90, 180 or 270
         */
        public function getRotation( $file ) {
-               global $wgEnableAutoRotation;
-               if ( !$wgEnableAutoRotation ) {
+               if ( !BitmapHandler::autoRotateEnabled() ) {
                        return 0;
                }
 
                $data = $file->getMetadata();
+
                return $this->getRotationForExif( $data );
        }
 
@@ -208,8 +217,7 @@ class ExifBitmapHandler extends BitmapHandler {
         *
         * @param string $data
         * @return int 0, 90, 180 or 270
-        * @todo FIXME orientation can include flipping as well; see if this is an
-        * issue!
+        * @todo FIXME: Orientation can include flipping as well; see if this is an issue!
         */
        protected function getRotationForExif( $data ) {
                if ( !$data ) {
@@ -231,6 +239,7 @@ class ExifBitmapHandler extends BitmapHandler {
                                        return 0;
                        }
                }
+
                return 0;
        }
 }
index 390b217..adaba76 100644 (file)
  * is already a large number of messages using the 'exif' prefix.
  *
  * @ingroup Media
- * @since 1.23 the class extends ContextSource and various formerly-public internal methods are private
+ * @since 1.23 the class extends ContextSource and various formerly-public
+ *   internal methods are private
  */
 class FormatMetadata extends ContextSource {
-
        /**
         * Only output a single language for multi-language fields
-        * @var boolean
+        * @var bool
         * @since 1.23
         */
        protected $singleLang = false;
@@ -57,7 +57,7 @@ class FormatMetadata extends ContextSource {
        /**
         * Trigger only outputting single language for multilanguage fields
         *
-        * @param Boolean $val
+        * @param bool $val
         * @since 1.23
         */
        public function setSingleLanguage( $val ) {
@@ -73,8 +73,8 @@ class FormatMetadata extends ContextSource {
         * This is the usual entry point for this class.
         *
         * @param array $tags the Exif data to format ( as returned by
-        *                    Exif::getFilteredData() or BitmapMetadataHandler )
-        * @param IContextSource $context Context to use (optional)
+        *   Exif::getFilteredData() or BitmapMetadataHandler )
+        * @param bool|IContextSource $context Context to use (optional)
         * @return array
         */
        public static function getFormattedData( $tags, $context = false ) {
@@ -82,6 +82,7 @@ class FormatMetadata extends ContextSource {
                if ( $context ) {
                        $obj->setContext( $context );
                }
+
                return $obj->makeFormattedData( $tags );
        }
 
@@ -92,7 +93,7 @@ class FormatMetadata extends ContextSource {
         * formats Exif (and other metadata) values into human readable form.
         *
         * @param array $tags the Exif data to format ( as returned by
-        *                    Exif::getFilteredData() or BitmapMetadataHandler )
+        *   Exif::getFilteredData() or BitmapMetadataHandler )
         * @return array
         * @since 1.23
         */
@@ -166,719 +167,830 @@ class FormatMetadata extends ContextSource {
                        foreach ( $vals as &$val ) {
 
                                switch ( $tag ) {
-                               case 'Compression':
-                                       switch ( $val ) {
-                                       case 1: case 2: case 3: case 4:
-                                       case 5: case 6: case 7: case 8:
-                                       case 32773: case 32946: case 34712:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'Compression':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 8:
+                                                       case 32773:
+                                                       case 32946:
+                                                       case 34712:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'PhotometricInterpretation':
-                                       switch ( $val ) {
-                                       case 2: case 6:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'PhotometricInterpretation':
+                                               switch ( $val ) {
+                                                       case 2:
+                                                       case 6:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Orientation':
-                                       switch ( $val ) {
-                                       case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'Orientation':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 8:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'PlanarConfiguration':
-                                       switch ( $val ) {
-                                       case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
-                                               break;
-                                       }
-                                       break;
-
-                               // TODO: YCbCrSubSampling
-                               case 'YCbCrPositioning':
-                                       switch ( $val ) {
-                                       case 1:
-                                       case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'PlanarConfiguration':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
-
-                               case 'XResolution':
-                               case 'YResolution':
-                                       switch ( $resolutionunit ) {
-                                               case 2:
-                                                       $val = $this->exifMsg( 'XYResolution', 'i', $this->formatNum( $val ) );
-                                                       break;
-                                               case 3:
-                                                       $val = $this->exifMsg( 'XYResolution', 'c', $this->formatNum( $val ) );
-                                                       break;
-                                               default:
-                                                       /* If not recognized, display as is. */
-                                                       break;
-                                       }
-                                       break;
-
-                               // TODO: YCbCrCoefficients  #p27 (see annex E)
-                               case 'ExifVersion': case 'FlashpixVersion':
-                                       $val = "$val" / 100;
-                                       break;
 
-                               case 'ColorSpace':
-                                       switch ( $val ) {
-                                       case 1: case 65535:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       // TODO: YCbCrSubSampling
+                                       case 'YCbCrPositioning':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'ComponentsConfiguration':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 5: case 6:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'XResolution':
+                                       case 'YResolution':
+                                               switch ( $resolutionunit ) {
+                                                       case 2:
+                                                               $val = $this->exifMsg( 'XYResolution', 'i', $this->formatNum( $val ) );
+                                                               break;
+                                                       case 3:
+                                                               $val = $this->exifMsg( 'XYResolution', 'c', $this->formatNum( $val ) );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       // TODO: YCbCrCoefficients  #p27 (see annex E)
+                                       case 'ExifVersion':
+                                       case 'FlashpixVersion':
+                                               $val = "$val" / 100;
                                                break;
-                                       }
-                                       break;
-
-                               case 'DateTime':
-                               case 'DateTimeOriginal':
-                               case 'DateTimeDigitized':
-                               case 'DateTimeReleased':
-                               case 'DateTimeExpires':
-                               case 'GPSDateStamp':
-                               case 'dc-date':
-                               case 'DateTimeMetadata':
-                                       if ( $val == '0000:00:00 00:00:00' || $val == '    :  :     :  :  ' ) {
-                                               $val = $this->msg( 'exif-unknowndate' )->text();
-                                       } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d):(?:\d\d)$/D', $val ) ) {
-                                               // Full date.
-                                               $time = wfTimestamp( TS_MW, $val );
-                                               if ( $time && intval( $time ) > 0 ) {
-                                                       $val = $this->getLanguage()->timeanddate( $time );
-                                               }
-                                       } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d)$/D', $val ) ) {
-                                               // No second field. Still format the same
-                                               // since timeanddate doesn't include seconds anyways,
-                                               // but second still available in api
-                                               $time = wfTimestamp( TS_MW, $val . ':00' );
-                                               if ( $time && intval( $time ) > 0 ) {
-                                                       $val = $this->getLanguage()->timeanddate( $time );
-                                               }
-                                       } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d)$/D', $val ) ) {
-                                               // If only the date but not the time is filled in.
-                                               $time = wfTimestamp( TS_MW, substr( $val, 0, 4 )
-                                                       . substr( $val, 5, 2 )
-                                                       . substr( $val, 8, 2 )
-                                                       . '000000' );
-                                               if ( $time && intval( $time ) > 0 ) {
-                                                       $val = $this->getLanguage()->date( $time );
-                                               }
-                                       }
-                                       // else it will just output $val without formatting it.
-                                       break;
 
-                               case 'ExposureProgram':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'ColorSpace':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 65535:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'ComponentsConfiguration':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SubjectDistance':
-                                       $val = $this->exifMsg( $tag, '', $this->formatNum( $val ) );
-                                       break;
+                                       case 'DateTime':
+                                       case 'DateTimeOriginal':
+                                       case 'DateTimeDigitized':
+                                       case 'DateTimeReleased':
+                                       case 'DateTimeExpires':
+                                       case 'GPSDateStamp':
+                                       case 'dc-date':
+                                       case 'DateTimeMetadata':
+                                               if ( $val == '0000:00:00 00:00:00' || $val == '    :  :     :  :  ' ) {
+                                                       $val = $this->msg( 'exif-unknowndate' )->text();
+                                               } elseif ( preg_match(
+                                                       '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d):(?:\d\d)$/D',
+                                                       $val
+                                               ) ) {
+                                                       // Full date.
+                                                       $time = wfTimestamp( TS_MW, $val );
+                                                       if ( $time && intval( $time ) > 0 ) {
+                                                               $val = $this->getLanguage()->timeanddate( $time );
+                                                       }
+                                               } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d)$/D', $val ) ) {
+                                                       // No second field. Still format the same
+                                                       // since timeanddate doesn't include seconds anyways,
+                                                       // but second still available in api
+                                                       $time = wfTimestamp( TS_MW, $val . ':00' );
+                                                       if ( $time && intval( $time ) > 0 ) {
+                                                               $val = $this->getLanguage()->timeanddate( $time );
+                                                       }
+                                               } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d)$/D', $val ) ) {
+                                                       // If only the date but not the time is filled in.
+                                                       $time = wfTimestamp( TS_MW, substr( $val, 0, 4 )
+                                                               . substr( $val, 5, 2 )
+                                                               . substr( $val, 8, 2 )
+                                                               . '000000' );
+                                                       if ( $time && intval( $time ) > 0 ) {
+                                                               $val = $this->getLanguage()->date( $time );
+                                                       }
+                                               }
+                                               // else it will just output $val without formatting it.
+                                               break;
 
-                               case 'MeteringMode':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 255:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'ExposureProgram':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 8:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'SubjectDistance':
+                                               $val = $this->exifMsg( $tag, '', $this->formatNum( $val ) );
                                                break;
-                                       }
-                                       break;
-
-                               case 'LightSource':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4: case 9: case 10: case 11:
-                                       case 12: case 13: case 14: case 15: case 17: case 18: case 19: case 20:
-                                       case 21: case 22: case 23: case 24: case 255:
-                                               $val = $this->exifMsg( $tag, $val );
+
+                                       case 'MeteringMode':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 6:
+                                                       case 7:
+                                                       case 255:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'LightSource':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 9:
+                                                       case 10:
+                                                       case 11:
+                                                       case 12:
+                                                       case 13:
+                                                       case 14:
+                                                       case 15:
+                                                       case 17:
+                                                       case 18:
+                                                       case 19:
+                                                       case 20:
+                                                       case 21:
+                                                       case 22:
+                                                       case 23:
+                                                       case 24:
+                                                       case 255:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
-
-                               case 'Flash':
-                                       $flashDecode = array(
-                                               'fired' => $val & bindec( '00000001' ),
-                                               'return' => ( $val & bindec( '00000110' ) ) >> 1,
-                                               'mode' => ( $val & bindec( '00011000' ) ) >> 3,
-                                               'function' => ( $val & bindec( '00100000' ) ) >> 5,
-                                               'redeye' => ( $val & bindec( '01000000' ) ) >> 6,
+
+                                       case 'Flash':
+                                               $flashDecode = array(
+                                                       'fired' => $val & bindec( '00000001' ),
+                                                       'return' => ( $val & bindec( '00000110' ) ) >> 1,
+                                                       'mode' => ( $val & bindec( '00011000' ) ) >> 3,
+                                                       'function' => ( $val & bindec( '00100000' ) ) >> 5,
+                                                       'redeye' => ( $val & bindec( '01000000' ) ) >> 6,
 //                                             'reserved' => ($val & bindec( '10000000' )) >> 7,
-                                       );
-                                       $flashMsgs = array();
-                                       # We do not need to handle unknown values since all are used.
-                                       foreach ( $flashDecode as $subTag => $subValue ) {
-                                               # We do not need any message for zeroed values.
-                                               if ( $subTag != 'fired' && $subValue == 0 ) {
-                                                       continue;
+                                               );
+                                               $flashMsgs = array();
+                                               # We do not need to handle unknown values since all are used.
+                                               foreach ( $flashDecode as $subTag => $subValue ) {
+                                                       # We do not need any message for zeroed values.
+                                                       if ( $subTag != 'fired' && $subValue == 0 ) {
+                                                               continue;
+                                                       }
+                                                       $fullTag = $tag . '-' . $subTag;
+                                                       $flashMsgs[] = $this->exifMsg( $fullTag, $subValue );
                                                }
-                                               $fullTag = $tag . '-' . $subTag;
-                                               $flashMsgs[] = $this->exifMsg( $fullTag, $subValue );
-                                       }
-                                       $val = $this->getLanguage()->commaList( $flashMsgs );
-                                       break;
-
-                               case 'FocalPlaneResolutionUnit':
-                                       switch ( $val ) {
-                                       case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                               $val = $this->getLanguage()->commaList( $flashMsgs );
                                                break;
-                                       }
-                                       break;
 
-                               case 'SensingMethod':
-                                       switch ( $val ) {
-                                       case 1: case 2: case 3: case 4: case 5: case 7: case 8:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'FocalPlaneResolutionUnit':
+                                               switch ( $val ) {
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'FileSource':
-                                       switch ( $val ) {
-                                       case 3:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'SensingMethod':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                       case 5:
+                                                       case 7:
+                                                       case 8:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SceneType':
-                                       switch ( $val ) {
-                                       case 1:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'FileSource':
+                                               switch ( $val ) {
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'CustomRendered':
-                                       switch ( $val ) {
-                                       case 0: case 1:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'SceneType':
+                                               switch ( $val ) {
+                                                       case 1:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'ExposureMode':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'CustomRendered':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'WhiteBalance':
-                                       switch ( $val ) {
-                                       case 0: case 1:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'ExposureMode':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'WhiteBalance':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SceneCaptureType':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'SceneCaptureType':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GainControl':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                       case 4:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'GainControl':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3: case 4:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'Contrast':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'Saturation':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Contrast':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'Sharpness':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'SubjectDistanceRange':
+                                               switch ( $val ) {
+                                                       case 0:
+                                                       case 1:
+                                                       case 2:
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Saturation':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       //The GPS...Ref values are kept for compatibility, probably won't be reached.
+                                       case 'GPSLatitudeRef':
+                                       case 'GPSDestLatitudeRef':
+                                               switch ( $val ) {
+                                                       case 'N':
+                                                       case 'S':
+                                                               $val = $this->exifMsg( 'GPSLatitude', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GPSLongitudeRef':
+                                       case 'GPSDestLongitudeRef':
+                                               switch ( $val ) {
+                                                       case 'E':
+                                                       case 'W':
+                                                               $val = $this->exifMsg( 'GPSLongitude', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'Sharpness':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'GPSAltitude':
+                                               if ( $val < 0 ) {
+                                                       $val = $this->exifMsg( 'GPSAltitude', 'below-sealevel', $this->formatNum( -$val, 3 ) );
+                                               } else {
+                                                       $val = $this->exifMsg( 'GPSAltitude', 'above-sealevel', $this->formatNum( $val, 3 ) );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GPSStatus':
+                                               switch ( $val ) {
+                                                       case 'A':
+                                                       case 'V':
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'SubjectDistanceRange':
-                                       switch ( $val ) {
-                                       case 0: case 1: case 2: case 3:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'GPSMeasureMode':
+                                               switch ( $val ) {
+                                                       case 2:
+                                                       case 3:
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'GPSTrackRef':
+                                       case 'GPSImgDirectionRef':
+                                       case 'GPSDestBearingRef':
+                                               switch ( $val ) {
+                                                       case 'T':
+                                                       case 'M':
+                                                               $val = $this->exifMsg( 'GPSDirection', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
-
-                               //The GPS...Ref values are kept for compatibility, probably won't be reached.
-                               case 'GPSLatitudeRef':
-                               case 'GPSDestLatitudeRef':
-                                       switch ( $val ) {
-                                       case 'N': case 'S':
-                                               $val = $this->exifMsg( 'GPSLatitude', $val );
+
+                                       case 'GPSLatitude':
+                                       case 'GPSDestLatitude':
+                                               $val = $this->formatCoords( $val, 'latitude' );
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'GPSLongitude':
+                                       case 'GPSDestLongitude':
+                                               $val = $this->formatCoords( $val, 'longitude' );
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSLongitudeRef':
-                               case 'GPSDestLongitudeRef':
-                                       switch ( $val ) {
-                                       case 'E': case 'W':
-                                               $val = $this->exifMsg( 'GPSLongitude', $val );
-                                               break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'GPSSpeedRef':
+                                               switch ( $val ) {
+                                                       case 'K':
+                                                       case 'M':
+                                                       case 'N':
+                                                               $val = $this->exifMsg( 'GPSSpeed', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSAltitude':
-                                       if ( $val < 0 ) {
-                                               $val = $this->exifMsg( 'GPSAltitude', 'below-sealevel', $this->formatNum( -$val, 3 ) );
-                                       } else {
-                                               $val = $this->exifMsg( 'GPSAltitude', 'above-sealevel', $this->formatNum( $val, 3 ) );
-                                       }
-                                       break;
+                                       case 'GPSDestDistanceRef':
+                                               switch ( $val ) {
+                                                       case 'K':
+                                                       case 'M':
+                                                       case 'N':
+                                                               $val = $this->exifMsg( 'GPSDestDistance', $val );
+                                                               break;
+                                                       default:
+                                                               /* If not recognized, display as is. */
+                                                               break;
+                                               }
+                                               break;
 
-                               case 'GPSStatus':
-                                       switch ( $val ) {
-                                       case 'A': case 'V':
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'GPSDOP':
+                                               // See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+                                               if ( $val <= 2 ) {
+                                                       $val = $this->exifMsg( $tag, 'excellent', $this->formatNum( $val ) );
+                                               } elseif ( $val <= 5 ) {
+                                                       $val = $this->exifMsg( $tag, 'good', $this->formatNum( $val ) );
+                                               } elseif ( $val <= 10 ) {
+                                                       $val = $this->exifMsg( $tag, 'moderate', $this->formatNum( $val ) );
+                                               } elseif ( $val <= 20 ) {
+                                                       $val = $this->exifMsg( $tag, 'fair', $this->formatNum( $val ) );
+                                               } else {
+                                                       $val = $this->exifMsg( $tag, 'poor', $this->formatNum( $val ) );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       // This is not in the Exif standard, just a special
+                                       // case for our purposes which enables wikis to wikify
+                                       // the make, model and software name to link to their articles.
+                                       case 'Make':
+                                       case 'Model':
+                                               $val = $this->exifMsg( $tag, '', $val );
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSMeasureMode':
-                                       switch ( $val ) {
-                                       case 2: case 3:
-                                               $val = $this->exifMsg( $tag, $val );
+                                       case 'Software':
+                                               if ( is_array( $val ) ) {
+                                                       //if its a software, version array.
+                                                       $val = $this->msg( 'exif-software-version-value', $val[0], $val[1] )->text();
+                                               } else {
+                                                       $val = $this->exifMsg( $tag, '', $val );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'ExposureTime':
+                                               // Show the pretty fraction as well as decimal version
+                                               $val = $this->msg( 'exif-exposuretime-format',
+                                                       $this->formatFraction( $val ), $this->formatNum( $val ) )->text();
                                                break;
-                                       }
-                                       break;
-
-                               case 'GPSTrackRef':
-                               case 'GPSImgDirectionRef':
-                               case 'GPSDestBearingRef':
-                                       switch ( $val ) {
-                                       case 'T': case 'M':
-                                               $val = $this->exifMsg( 'GPSDirection', $val );
+                                       case 'ISOSpeedRatings':
+                                               // If its = 65535 that means its at the
+                                               // limit of the size of Exif::short and
+                                               // is really higher.
+                                               if ( $val == '65535' ) {
+                                                       $val = $this->exifMsg( $tag, 'overflow' );
+                                               } else {
+                                                       $val = $this->formatNum( $val );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'FNumber':
+                                               $val = $this->msg( 'exif-fnumber-format',
+                                                       $this->formatNum( $val ) )->text();
                                                break;
-                                       }
-                                       break;
-
-                               case 'GPSLatitude':
-                               case 'GPSDestLatitude':
-                                       $val = $this->formatCoords( $val, 'latitude' );
-                                       break;
-                               case 'GPSLongitude':
-                               case 'GPSDestLongitude':
-                                       $val = $this->formatCoords( $val, 'longitude' );
-                                       break;
-
-                               case 'GPSSpeedRef':
-                                       switch ( $val ) {
-                                       case 'K': case 'M': case 'N':
-                                               $val = $this->exifMsg( 'GPSSpeed', $val );
+
+                                       case 'FocalLength':
+                                       case 'FocalLengthIn35mmFilm':
+                                               $val = $this->msg( 'exif-focallength-format',
+                                                       $this->formatNum( $val ) )->text();
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+
+                                       case 'MaxApertureValue':
+                                               if ( strpos( $val, '/' ) !== false ) {
+                                                       // need to expand this earlier to calculate fNumber
+                                                       list( $n, $d ) = explode( '/', $val );
+                                                       if ( is_numeric( $n ) && is_numeric( $d ) ) {
+                                                               $val = $n / $d;
+                                                       }
+                                               }
+                                               if ( is_numeric( $val ) ) {
+                                                       $fNumber = pow( 2, $val / 2 );
+                                                       if ( $fNumber !== false ) {
+                                                               $val = $this->msg( 'exif-maxaperturevalue-value',
+                                                                       $this->formatNum( $val ),
+                                                                       $this->formatNum( $fNumber, 2 )
+                                                               )->text();
+                                                       }
+                                               }
                                                break;
-                                       }
-                                       break;
 
-                               case 'GPSDestDistanceRef':
-                                       switch ( $val ) {
-                                       case 'K': case 'M': case 'N':
-                                               $val = $this->exifMsg( 'GPSDestDistance', $val );
+                                       case 'iimCategory':
+                                               switch ( strtolower( $val ) ) {
+                                                       // See pg 29 of IPTC photo
+                                                       // metadata standard.
+                                                       case 'ace':
+                                                       case 'clj':
+                                                       case 'dis':
+                                                       case 'fin':
+                                                       case 'edu':
+                                                       case 'evn':
+                                                       case 'hth':
+                                                       case 'hum':
+                                                       case 'lab':
+                                                       case 'lif':
+                                                       case 'pol':
+                                                       case 'rel':
+                                                       case 'sci':
+                                                       case 'soi':
+                                                       case 'spo':
+                                                       case 'war':
+                                                       case 'wea':
+                                                               $val = $this->exifMsg(
+                                                                       'iimcategory',
+                                                                       $val
+                                                               );
+                                               }
                                                break;
-                                       default:
-                                               /* If not recognized, display as is. */
+                                       case 'SubjectNewsCode':
+                                               // Essentially like iimCategory.
+                                               // 8 (numeric) digit hierarchical
+                                               // classification. We decode the
+                                               // first 2 digits, which provide
+                                               // a broad category.
+                                               $val = $this->convertNewsCode( $val );
                                                break;
-                                       }
-                                       break;
-
-                               case 'GPSDOP':
-                                       // See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
-                                       if ( $val <= 2 ) {
-                                               $val = $this->exifMsg( $tag, 'excellent', $this->formatNum( $val ) );
-                                       } elseif ( $val <= 5 ) {
-                                               $val = $this->exifMsg( $tag, 'good', $this->formatNum( $val ) );
-                                       } elseif ( $val <= 10 ) {
-                                               $val = $this->exifMsg( $tag, 'moderate', $this->formatNum( $val ) );
-                                       } elseif ( $val <= 20 ) {
-                                               $val = $this->exifMsg( $tag, 'fair', $this->formatNum( $val ) );
-                                       } else {
-                                               $val = $this->exifMsg( $tag, 'poor', $this->formatNum( $val ) );
-                                       }
-                                       break;
-
-                               // This is not in the Exif standard, just a special
-                               // case for our purposes which enables wikis to wikify
-                               // the make, model and software name to link to their articles.
-                               case 'Make':
-                               case 'Model':
-                                       $val = $this->exifMsg( $tag, '', $val );
-                                       break;
-
-                               case 'Software':
-                                       if ( is_array( $val ) ) {
-                                               //if its a software, version array.
-                                               $val = $this->msg( 'exif-software-version-value', $val[0], $val[1] )->text();
-                                       } else {
-                                               $val = $this->exifMsg( $tag, '', $val );
-                                       }
-                                       break;
-
-                               case 'ExposureTime':
-                                       // Show the pretty fraction as well as decimal version
-                                       $val = $this->msg( 'exif-exposuretime-format',
-                                               $this->formatFraction( $val ), $this->formatNum( $val ) )->text();
-                                       break;
-                               case 'ISOSpeedRatings':
-                                       // If its = 65535 that means its at the
-                                       // limit of the size of Exif::short and
-                                       // is really higher.
-                                       if ( $val == '65535' ) {
-                                               $val = $this->exifMsg( $tag, 'overflow' );
-                                       } else {
-                                               $val = $this->formatNum( $val );
-                                       }
-                                       break;
-                               case 'FNumber':
-                                       $val = $this->msg( 'exif-fnumber-format',
-                                               $this->formatNum( $val ) )->text();
-                                       break;
-
-                               case 'FocalLength': case 'FocalLengthIn35mmFilm':
-                                       $val = $this->msg( 'exif-focallength-format',
-                                               $this->formatNum( $val ) )->text();
-                                       break;
-
-                               case 'MaxApertureValue':
-                                       if ( strpos( $val, '/' ) !== false ) {
-                                               // need to expand this earlier to calculate fNumber
-                                               list( $n, $d ) = explode( '/', $val );
-                                               if ( is_numeric( $n ) && is_numeric( $d ) ) {
-                                                       $val = $n / $d;
+                                       case 'Urgency':
+                                               // 1-8 with 1 being highest, 5 normal
+                                               // 0 is reserved, and 9 is 'user-defined'.
+                                               $urgency = '';
+                                               if ( $val == 0 || $val == 9 ) {
+                                                       $urgency = 'other';
+                                               } elseif ( $val < 5 && $val > 1 ) {
+                                                       $urgency = 'high';
+                                               } elseif ( $val == 5 ) {
+                                                       $urgency = 'normal';
+                                               } elseif ( $val <= 8 && $val > 5 ) {
+                                                       $urgency = 'low';
                                                }
-                                       }
-                                       if ( is_numeric( $val ) ) {
-                                               $fNumber = pow( 2, $val / 2 );
-                                               if ( $fNumber !== false ) {
-                                                       $val = $this->msg( 'exif-maxaperturevalue-value',
-                                                               $this->formatNum( $val ),
-                                                               $this->formatNum( $fNumber, 2 )
-                                                       )->text();
-                                               }
-                                       }
-                                       break;
-
-                               case 'iimCategory':
-                                       switch ( strtolower( $val ) ) {
-                                               // See pg 29 of IPTC photo
-                                               // metadata standard.
-                                               case 'ace': case 'clj':
-                                               case 'dis': case 'fin':
-                                               case 'edu': case 'evn':
-                                               case 'hth': case 'hum':
-                                               case 'lab': case 'lif':
-                                               case 'pol': case 'rel':
-                                               case 'sci': case 'soi':
-                                               case 'spo': case 'war':
-                                               case 'wea':
-                                                       $val = $this->exifMsg(
-                                                               'iimcategory',
-                                                               $val
+
+                                               if ( $urgency !== '' ) {
+                                                       $val = $this->exifMsg( 'urgency',
+                                                               $urgency, $val
                                                        );
-                                       }
-                                       break;
-                               case 'SubjectNewsCode':
-                                       // Essentially like iimCategory.
-                                       // 8 (numeric) digit hierarchical
-                                       // classification. We decode the
-                                       // first 2 digits, which provide
-                                       // a broad category.
-                                       $val = $this->convertNewsCode( $val );
-                                       break;
-                               case 'Urgency':
-                                       // 1-8 with 1 being highest, 5 normal
-                                       // 0 is reserved, and 9 is 'user-defined'.
-                                       $urgency = '';
-                                       if ( $val == 0 || $val == 9 ) {
-                                               $urgency = 'other';
-                                       } elseif ( $val < 5 && $val > 1 ) {
-                                               $urgency = 'high';
-                                       } elseif ( $val == 5 ) {
-                                               $urgency = 'normal';
-                                       } elseif ( $val <= 8 && $val > 5 ) {
-                                               $urgency = 'low';
-                                       }
+                                               }
+                                               break;
 
-                                       if ( $urgency !== '' ) {
-                                               $val = $this->exifMsg( 'urgency',
-                                                       $urgency, $val
-                                               );
-                                       }
-                                       break;
-
-                               // Things that have a unit of pixels.
-                               case 'OriginalImageHeight':
-                               case 'OriginalImageWidth':
-                               case 'PixelXDimension':
-                               case 'PixelYDimension':
-                               case 'ImageWidth':
-                               case 'ImageLength':
-                                       $val = $this->formatNum( $val ) . ' ' . $this->msg( 'unit-pixel' )->text();
-                                       break;
-
-                               // Do not transform fields with pure text.
-                               // For some languages the formatNum()
-                               // conversion results to wrong output like
-                               // foo,bar@example,com or foo٫bar@example٫com.
-                               // Also some 'numeric' things like Scene codes
-                               // are included here as we really don't want
-                               // commas inserted.
-                               case 'ImageDescription':
-                               case 'Artist':
-                               case 'Copyright':
-                               case 'RelatedSoundFile':
-                               case 'ImageUniqueID':
-                               case 'SpectralSensitivity':
-                               case 'GPSSatellites':
-                               case 'GPSVersionID':
-                               case 'GPSMapDatum':
-                               case 'Keywords':
-                               case 'WorldRegionDest':
-                               case 'CountryDest':
-                               case 'CountryCodeDest':
-                               case 'ProvinceOrStateDest':
-                               case 'CityDest':
-                               case 'SublocationDest':
-                               case 'WorldRegionCreated':
-                               case 'CountryCreated':
-                               case 'CountryCodeCreated':
-                               case 'ProvinceOrStateCreated':
-                               case 'CityCreated':
-                               case 'SublocationCreated':
-                               case 'ObjectName':
-                               case 'SpecialInstructions':
-                               case 'Headline':
-                               case 'Credit':
-                               case 'Source':
-                               case 'EditStatus':
-                               case 'FixtureIdentifier':
-                               case 'LocationDest':
-                               case 'LocationDestCode':
-                               case 'Writer':
-                               case 'JPEGFileComment':
-                               case 'iimSupplementalCategory':
-                               case 'OriginalTransmissionRef':
-                               case 'Identifier':
-                               case 'dc-contributor':
-                               case 'dc-coverage':
-                               case 'dc-publisher':
-                               case 'dc-relation':
-                               case 'dc-rights':
-                               case 'dc-source':
-                               case 'dc-type':
-                               case 'Lens':
-                               case 'SerialNumber':
-                               case 'CameraOwnerName':
-                               case 'Label':
-                               case 'Nickname':
-                               case 'RightsCertificate':
-                               case 'CopyrightOwner':
-                               case 'UsageTerms':
-                               case 'WebStatement':
-                               case 'OriginalDocumentID':
-                               case 'LicenseUrl':
-                               case 'MorePermissionsUrl':
-                               case 'AttributionUrl':
-                               case 'PreferredAttributionName':
-                               case 'PNGFileComment':
-                               case 'Disclaimer':
-                               case 'ContentWarning':
-                               case 'GIFFileComment':
-                               case 'SceneCode':
-                               case 'IntellectualGenre':
-                               case 'Event':
-                               case 'OrginisationInImage':
-                               case 'PersonInImage':
-
-                                       $val = htmlspecialchars( $val );
-                                       break;
-
-                               case 'ObjectCycle':
-                                       switch ( $val ) {
-                                       case 'a': case 'p': case 'b':
-                                               $val = $this->exifMsg( $tag, $val );
+                                       // Things that have a unit of pixels.
+                                       case 'OriginalImageHeight':
+                                       case 'OriginalImageWidth':
+                                       case 'PixelXDimension':
+                                       case 'PixelYDimension':
+                                       case 'ImageWidth':
+                                       case 'ImageLength':
+                                               $val = $this->formatNum( $val ) . ' ' . $this->msg( 'unit-pixel' )->text();
                                                break;
-                                       default:
+
+                                       // Do not transform fields with pure text.
+                                       // For some languages the formatNum()
+                                       // conversion results to wrong output like
+                                       // foo,bar@example,com or foo٫bar@example٫com.
+                                       // Also some 'numeric' things like Scene codes
+                                       // are included here as we really don't want
+                                       // commas inserted.
+                                       case 'ImageDescription':
+                                       case 'Artist':
+                                       case 'Copyright':
+                                       case 'RelatedSoundFile':
+                                       case 'ImageUniqueID':
+                                       case 'SpectralSensitivity':
+                                       case 'GPSSatellites':
+                                       case 'GPSVersionID':
+                                       case 'GPSMapDatum':
+                                       case 'Keywords':
+                                       case 'WorldRegionDest':
+                                       case 'CountryDest':
+                                       case 'CountryCodeDest':
+                                       case 'ProvinceOrStateDest':
+                                       case 'CityDest':
+                                       case 'SublocationDest':
+                                       case 'WorldRegionCreated':
+                                       case 'CountryCreated':
+                                       case 'CountryCodeCreated':
+                                       case 'ProvinceOrStateCreated':
+                                       case 'CityCreated':
+                                       case 'SublocationCreated':
+                                       case 'ObjectName':
+                                       case 'SpecialInstructions':
+                                       case 'Headline':
+                                       case 'Credit':
+                                       case 'Source':
+                                       case 'EditStatus':
+                                       case 'FixtureIdentifier':
+                                       case 'LocationDest':
+                                       case 'LocationDestCode':
+                                       case 'Writer':
+                                       case 'JPEGFileComment':
+                                       case 'iimSupplementalCategory':
+                                       case 'OriginalTransmissionRef':
+                                       case 'Identifier':
+                                       case 'dc-contributor':
+                                       case 'dc-coverage':
+                                       case 'dc-publisher':
+                                       case 'dc-relation':
+                                       case 'dc-rights':
+                                       case 'dc-source':
+                                       case 'dc-type':
+                                       case 'Lens':
+                                       case 'SerialNumber':
+                                       case 'CameraOwnerName':
+                                       case 'Label':
+                                       case 'Nickname':
+                                       case 'RightsCertificate':
+                                       case 'CopyrightOwner':
+                                       case 'UsageTerms':
+                                       case 'WebStatement':
+                                       case 'OriginalDocumentID':
+                                       case 'LicenseUrl':
+                                       case 'MorePermissionsUrl':
+                                       case 'AttributionUrl':
+                                       case 'PreferredAttributionName':
+                                       case 'PNGFileComment':
+                                       case 'Disclaimer':
+                                       case 'ContentWarning':
+                                       case 'GIFFileComment':
+                                       case 'SceneCode':
+                                       case 'IntellectualGenre':
+                                       case 'Event':
+                                       case 'OrginisationInImage':
+                                       case 'PersonInImage':
+
                                                $val = htmlspecialchars( $val );
                                                break;
-                                       }
-                                       break;
-                               case 'Copyrighted':
-                                       switch ( $val ) {
-                                       case 'True': case 'False':
-                                               $val = $this->exifMsg( $tag, $val );
+
+                                       case 'ObjectCycle':
+                                               switch ( $val ) {
+                                                       case 'a':
+                                                       case 'p':
+                                                       case 'b':
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                                       default:
+                                                               $val = htmlspecialchars( $val );
+                                                               break;
+                                               }
+                                               break;
+                                       case 'Copyrighted':
+                                               switch ( $val ) {
+                                                       case 'True':
+                                                       case 'False':
+                                                               $val = $this->exifMsg( $tag, $val );
+                                                               break;
+                                               }
+                                               break;
+                                       case 'Rating':
+                                               if ( $val == '-1' ) {
+                                                       $val = $this->exifMsg( $tag, 'rejected' );
+                                               } else {
+                                                       $val = $this->formatNum( $val );
+                                               }
                                                break;
-                                       }
-                                       break;
-                               case 'Rating':
-                                       if ( $val == '-1' ) {
-                                               $val = $this->exifMsg( $tag, 'rejected' );
-                                       } else {
-                                               $val = $this->formatNum( $val );
-                                       }
-                                       break;
 
-                               case 'LanguageCode':
-                                       $lang = Language::fetchLanguageName( strtolower( $val ), $this->getLanguage()->getCode() );
-                                       if ( $lang ) {
-                                               $val = htmlspecialchars( $lang );
-                                       } else {
-                                               $val = htmlspecialchars( $val );
-                                       }
-                                       break;
+                                       case 'LanguageCode':
+                                               $lang = Language::fetchLanguageName( strtolower( $val ), $this->getLanguage()->getCode() );
+                                               if ( $lang ) {
+                                                       $val = htmlspecialchars( $lang );
+                                               } else {
+                                                       $val = htmlspecialchars( $val );
+                                               }
+                                               break;
 
-                               default:
-                                       $val = $this->formatNum( $val );
-                                       break;
+                                       default:
+                                               $val = $this->formatNum( $val );
+                                               break;
                                }
                        }
                        // End formatting values, start flattening arrays.
                        $vals = $this->flattenArrayReal( $vals, $type );
-
                }
+
                return $tags;
        }
 
        /**
         * Flatten an array, using the content language for any messages.
         *
-        * @param array $vals array of values
+        * @param array $vals Array of values
         * @param string $type Type of array (either lang, ul, ol).
-        *     lang = language assoc array with keys being the lang code
-        *     ul = unordered list, ol = ordered list
-        *     type can also come from the '_type' member of $vals.
-        * @param $noHtml Boolean If to avoid returning anything resembling
-        *     html. (Ugly hack for backwards compatibility with old mediawiki).
-        * @param IContextSource $context
+        *   lang = language assoc array with keys being the lang code
+        *   ul = unordered list, ol = ordered list
+        *   type can also come from the '_type' member of $vals.
+        * @param bool $noHtml If to avoid returning anything resembling HTML.
+        *   (Ugly hack for backwards compatibility with old MediaWiki).
+        * @param bool|IContextSource $context
         * @return String single value (in wiki-syntax).
         * @since 1.23
         */
-       public static function flattenArrayContentLang( $vals, $type = 'ul', $noHtml = false, $context = false ) {
+       public static function flattenArrayContentLang( $vals, $type = 'ul',
+               $noHtml = false, $context = false
+       ) {
                global $wgContLang;
                $obj = new FormatMetadata;
                if ( $context ) {
@@ -887,6 +999,7 @@ class FormatMetadata extends ContextSource {
                $context = new DerivativeContext( $obj->getContext() );
                $context->setLanguage( $wgContLang );
                $obj->setContext( $context );
+
                return $obj->flattenArrayReal( $vals, $type, $noHtml );
        }
 
@@ -895,19 +1008,20 @@ class FormatMetadata extends ContextSource {
         *
         * @param array $vals array of values
         * @param string $type Type of array (either lang, ul, ol).
-        *     lang = language assoc array with keys being the lang code
-        *     ul = unordered list, ol = ordered list
-        *     type can also come from the '_type' member of $vals.
-        * @param $noHtml Boolean If to avoid returning anything resembling
-        *     html. (Ugly hack for backwards compatibility with old mediawiki).
-        * @param IContextSource $context
-        * @return String single value (in wiki-syntax).
+        *   lang = language assoc array with keys being the lang code
+        *   ul = unordered list, ol = ordered list
+        *   type can also come from the '_type' member of $vals.
+        * @param bool $noHtml If to avoid returning anything resembling HTML.
+        *   (Ugly hack for backwards compatibility with old MediaWiki).
+        * @param bool|IContextSource $context
+        * @return string Single value (in wiki-syntax).
         */
        public static function flattenArray( $vals, $type = 'ul', $noHtml = false, $context = false ) {
                $obj = new FormatMetadata;
                if ( $context ) {
                        $obj->setContext( $context );
                }
+
                return $obj->flattenArrayReal( $vals, $type, $noHtml );
        }
 
@@ -922,8 +1036,8 @@ class FormatMetadata extends ContextSource {
         *     lang = language assoc array with keys being the lang code
         *     ul = unordered list, ol = ordered list
         *     type can also come from the '_type' member of $vals.
-        * @param $noHtml Boolean If to avoid returning anything resembling
-        *     html. (Ugly hack for backwards compatibility with old mediawiki).
+        * @param $noHtml Boolean If to avoid returning anything resembling HTML.
+        *   (Ugly hack for backwards compatibility with old mediawiki).
         * @return String single value (in wiki-syntax).
         * @since 1.23
         */
@@ -939,102 +1053,103 @@ class FormatMetadata extends ContextSource {
 
                if ( !is_array( $vals ) ) {
                        return $vals; // do nothing if not an array;
-               }
-               elseif ( count( $vals ) === 1 && $type !== 'lang' ) {
+               } elseif ( count( $vals ) === 1 && $type !== 'lang' ) {
                        return $vals[0];
-               }
-               elseif ( count( $vals ) === 0 ) {
+               } elseif ( count( $vals ) === 0 ) {
                        wfDebug( __METHOD__ . " metadata array with 0 elements!\n" );
+
                        return ""; // paranoia. This should never happen
-               }
-               /* @todo FIXME: This should hide some of the list entries if there are
-                * say more than four. Especially if a field is translated into 20
-                * languages, we don't want to show them all by default
-                */
-               else {
+               } else {
+                       /* @todo FIXME: This should hide some of the list entries if there are
+                        * say more than four. Especially if a field is translated into 20
+                        * languages, we don't want to show them all by default
+                        */
                        switch ( $type ) {
-                       case 'lang':
-                               // Display default, followed by ContLang,
-                               // followed by the rest in no particular
-                               // order.
-
-                               // Todo: hide some items if really long list.
-
-                               $content = '';
-
-                               $priorityLanguages = $this->getPriorityLanguages();
-                               $defaultItem = false;
-                               $defaultLang = false;
-
-                               // If default is set, save it for later,
-                               // as we don't know if it's equal to
-                               // one of the lang codes. (In xmp
-                               // you specify the language for a
-                               // default property by having both
-                               // a default prop, and one in the language
-                               // that are identical)
-                               if ( isset( $vals['x-default'] ) ) {
-                                       $defaultItem = $vals['x-default'];
-                                       unset( $vals['x-default'] );
-                               }
-                               foreach ( $priorityLanguages as $pLang ) {
-                                       if ( isset( $vals[$pLang] ) ) {
-                                               $isDefault = false;
-                                               if ( $vals[$pLang] === $defaultItem ) {
-                                                       $defaultItem = false;
-                                                       $isDefault = true;
+                               case 'lang':
+                                       // Display default, followed by ContLang,
+                                       // followed by the rest in no particular
+                                       // order.
+
+                                       // Todo: hide some items if really long list.
+
+                                       $content = '';
+
+                                       $priorityLanguages = $this->getPriorityLanguages();
+                                       $defaultItem = false;
+                                       $defaultLang = false;
+
+                                       // If default is set, save it for later,
+                                       // as we don't know if it's equal to
+                                       // one of the lang codes. (In xmp
+                                       // you specify the language for a
+                                       // default property by having both
+                                       // a default prop, and one in the language
+                                       // that are identical)
+                                       if ( isset( $vals['x-default'] ) ) {
+                                               $defaultItem = $vals['x-default'];
+                                               unset( $vals['x-default'] );
+                                       }
+                                       foreach ( $priorityLanguages as $pLang ) {
+                                               if ( isset( $vals[$pLang] ) ) {
+                                                       $isDefault = false;
+                                                       if ( $vals[$pLang] === $defaultItem ) {
+                                                               $defaultItem = false;
+                                                               $isDefault = true;
+                                                       }
+                                                       $content .= $this->langItem(
+                                                               $vals[$pLang], $pLang,
+                                                               $isDefault, $noHtml );
+
+                                                       unset( $vals[$pLang] );
+
+                                                       if ( $this->singleLang ) {
+                                                               return Html::rawElement( 'span',
+                                                                       array( 'lang' => $pLang ), $vals[$pLang] );
+                                                       }
                                                }
-                                               $content .= $this->langItem(
-                                                       $vals[$pLang], $pLang,
-                                                       $isDefault, $noHtml );
-
-                                               unset( $vals[$pLang] );
+                                       }
 
+                                       // Now do the rest.
+                                       foreach ( $vals as $lang => $item ) {
+                                               if ( $item === $defaultItem ) {
+                                                       $defaultLang = $lang;
+                                                       continue;
+                                               }
+                                               $content .= $this->langItem( $item,
+                                                       $lang, false, $noHtml );
                                                if ( $this->singleLang ) {
                                                        return Html::rawElement( 'span',
-                                                               array( 'lang' => $pLang ), $vals[$pLang] );
+                                                               array( 'lang' => $lang ), $item );
                                                }
                                        }
-                               }
-
-                               // Now do the rest.
-                               foreach ( $vals as $lang => $item ) {
-                                       if ( $item === $defaultItem ) {
-                                               $defaultLang = $lang;
-                                               continue;
-                                       }
-                                       $content .= $this->langItem( $item,
-                                               $lang, false, $noHtml );
-                                       if ( $this->singleLang ) {
-                                               return Html::rawElement( 'span',
-                                                       array( 'lang' => $lang ), $item );
+                                       if ( $defaultItem !== false ) {
+                                               $content = $this->langItem( $defaultItem,
+                                                               $defaultLang, true, $noHtml ) .
+                                                       $content;
+                                               if ( $this->singleLang ) {
+                                                       return $defaultItem;
+                                               }
                                        }
-                               }
-                               if ( $defaultItem !== false ) {
-                                       $content = $this->langItem( $defaultItem,
-                                               $defaultLang, true, $noHtml ) .
-                                               $content;
-                                       if ( $this->singleLang ) {
-                                               return $defaultItem;
+                                       if ( $noHtml ) {
+                                               return $content;
                                        }
-                               }
-                               if ( $noHtml ) {
-                                       return $content;
-                               }
-                               return '<ul class="metadata-langlist">' .
+
+                                       return '<ul class="metadata-langlist">' .
                                        $content .
                                        '</ul>';
-                       case 'ol':
-                               if ( $noHtml ) {
-                                       return "\n#" . implode( "\n#", $vals );
-                               }
-                               return "<ol><li>" . implode( "</li>\n<li>", $vals ) . '</li></ol>';
-                       case 'ul':
-                       default:
-                               if ( $noHtml ) {
-                                       return "\n*" . implode( "\n*", $vals );
-                               }
-                               return "<ul><li>" . implode( "</li>\n<li>", $vals ) . '</li></ul>';
+                               case 'ol':
+                                       if ( $noHtml ) {
+                                               return "\n#" . implode( "\n#", $vals );
+                                       }
+
+                                       return "<ol><li>" . implode( "</li>\n<li>", $vals ) . '</li></ol>';
+                               case 'ul':
+                               default:
+                                       if ( $noHtml ) {
+                                               return "\n*" . implode( "\n*", $vals );
+                                       }
+
+                                       return "<ul><li>" . implode( "</li>\n<li>", $vals ) . '</li></ul>';
                        }
                }
        }
@@ -1043,11 +1158,11 @@ class FormatMetadata extends ContextSource {
         *
         * @param string $value value (this is not escaped)
         * @param string $lang lang code of item or false
-        * @param $default Boolean if it is default value.
-        * @param $noHtml Boolean If to avoid html (for back-compat)
+        * @param bool $default If it is default value.
+        * @param bool $noHtml If to avoid html (for back-compat)
         * @throws MWException
-        * @return string language item (Note: despite how this looks,
-        * this is treated as wikitext not html).
+        * @return string Language item (Note: despite how this looks, this is
+        *   treated as wikitext, not as HTML).
         */
        private function langItem( $value, $lang, $default = false, $noHtml = false ) {
                if ( $lang === false && $default === false ) {
@@ -1067,6 +1182,7 @@ class FormatMetadata extends ContextSource {
                        if ( $noHtml ) {
                                return $msg->text() . "\n\n";
                        } /* else */
+
                        return '<li class="mw-metadata-lang-default">'
                                . $msg->text()
                                . "</li>\n";
@@ -1098,18 +1214,17 @@ class FormatMetadata extends ContextSource {
                $item .= '" lang="' . $lang . '">';
                $item .= $msg->text();
                $item .= "</li>\n";
+
                return $item;
        }
 
        /**
         * Convenience function for getFormattedData()
         *
-        * @private
-        *
-        * @param string $tag the tag name to pass on
-        * @param string $val the value of the tag
-        * @param string $arg an argument to pass ($1)
-        * @param string $arg2 a 2nd argument to pass ($2)
+        * @param string $tag The tag name to pass on
+        * @param string $val The value of the tag
+        * @param string $arg An argument to pass ($1)
+        * @param string $arg2 A 2nd argument to pass ($2)
         * @return string The text content of "exif-$tag-$val" message in lower case
         */
        private function exifMsg( $tag, $val, $arg = null, $arg2 = null ) {
@@ -1118,6 +1233,7 @@ class FormatMetadata extends ContextSource {
                if ( $val === '' ) {
                        $val = 'value';
                }
+
                return $this->msg( $wgContLang->lc( "exif-$tag-$val" ), $arg, $arg2 )->text();
        }
 
@@ -1125,8 +1241,8 @@ class FormatMetadata extends ContextSource {
         * Format a number, convert numbers from fractions into floating point
         * numbers, joins arrays of numbers with commas.
         *
-        * @param $num Mixed: the value to format
-        * @param $round float|int|bool digits to round to or false.
+        * @param mixed $num The value to format
+        * @param float|int|bool $round Digits to round to or false.
         * @return mixed A floating point number or whatever we were fed
         */
        private function formatNum( $num, $round = false ) {
@@ -1136,6 +1252,7 @@ class FormatMetadata extends ContextSource {
                        foreach ( $num as $number ) {
                                $out[] = $this->formatNum( $number );
                        }
+
                        return $this->getLanguage()->commaList( $out );
                }
                if ( preg_match( '/^(-?\d+)\/(\d+)$/', $num, $m ) ) {
@@ -1153,6 +1270,7 @@ class FormatMetadata extends ContextSource {
                        if ( is_numeric( $num ) && $round !== false ) {
                                $num = round( $num, $round );
                        }
+
                        return $this->getLanguage()->formatNum( $num );
                }
        }
@@ -1160,9 +1278,7 @@ class FormatMetadata extends ContextSource {
        /**
         * Format a rational number, reducing fractions
         *
-        * @private
-        *
-        * @param $num Mixed: the value to format
+        * @param mixed $num The value to format
         * @return mixed A floating point number or whatever we were fed
         */
        private function formatFraction( $num ) {
@@ -1176,14 +1292,15 @@ class FormatMetadata extends ContextSource {
                                return $this->formatNum( $numerator / $gcd ) . '/' . $this->formatNum( $denominator / $gcd );
                        }
                }
+
                return $this->formatNum( $num );
        }
 
        /**
         * Calculate the greatest common divisor of two integers.
         *
-        * @param $a Integer: Numerator
-        * @param $b Integer: Denominator
+        * @param int $a Numerator
+        * @param int $b Denominator
         * @return int
         * @private
         */
@@ -1203,6 +1320,7 @@ class FormatMetadata extends ContextSource {
                        $a = $b;
                        $b = $remainder;
                }
+
                return $a;
        }
 
@@ -1281,6 +1399,7 @@ class FormatMetadata extends ContextSource {
                        $catMsg = $this->exifMsg( 'iimcategory', $cat );
                        $val = $this->exifMsg( 'subjectnewscode', '', $val, $catMsg );
                }
+
                return $val;
        }
 
@@ -1288,8 +1407,8 @@ class FormatMetadata extends ContextSource {
         * Format a coordinate value, convert numbers from floating point
         * into degree minute second representation.
         *
-        * @param int $coord degrees, minutes and seconds
-        * @param string $type latitude or longitude (for if its a NWS or E)
+        * @param int $coord Degrees, minutes and seconds
+        * @param string $type Latitude or longitude (for if its a NWS or E)
         * @return mixed A floating point number or whatever we were fed
         */
        private function formatCoords( $coord, $type ) {
@@ -1324,16 +1443,15 @@ class FormatMetadata extends ContextSource {
        /**
         * Format the contact info field into a single value.
         *
-        * @param array $vals array with fields of the ContactInfo
-        *    struct defined in the IPTC4XMP spec. Or potentially
-        *    an array with one element that is a free form text
-        *    value from the older iptc iim 1:118 prop.
-        *
         * This function might be called from
         * JpegHandler::convertMetadataVersion which is why it is
         * public.
         *
-        * @return String of html-ish looking wikitext
+        * @param array $vals Array with fields of the ContactInfo
+        *    struct defined in the IPTC4XMP spec. Or potentially
+        *    an array with one element that is a free form text
+        *    value from the older iptc iim 1:118 prop.
+        * @return string HTML-ish looking wikitext
         * @since 1.23 no longer static
         */
        public function collapseContactInfo( $vals ) {
@@ -1358,6 +1476,7 @@ class FormatMetadata extends ContextSource {
                        foreach ( $vals as &$val ) {
                                $val = htmlspecialchars( $val );
                        }
+
                        return $this->flattenArrayReal( $vals );
                } else {
                        // We have a real ContactInfo field.
@@ -1408,10 +1527,10 @@ class FormatMetadata extends ContextSource {
                                                        $emails[] = $finalEmail;
                                                } else {
                                                        $emails[] = '[mailto:'
-                                                       . $finalEmail
-                                                       . ' <span class="email">'
-                                                       . $finalEmail
-                                                       . '</span>]';
+                                                               . $finalEmail
+                                                               . ' <span class="email">'
+                                                               . $finalEmail
+                                                               . '</span>]';
                                                }
                                        }
                                }
@@ -1440,6 +1559,7 @@ class FormatMetadata extends ContextSource {
                                        . htmlspecialchars( $vals['CiUrlWork'] )
                                        . '</span>';
                        }
+
                        return $this->msg( 'exif-contact-value', $email, $url,
                                $street, $city, $region, $postal, $country,
                                $tel )->text();
@@ -1462,6 +1582,7 @@ class FormatMetadata extends ContextSource {
                        }
                }
                $fields = array_map( 'strtolower', $fields );
+
                return $fields;
        }
 
@@ -1480,13 +1601,14 @@ class FormatMetadata extends ContextSource {
                // If revision deleted, exit immediately
                if ( $file->isDeleted( File::DELETED_FILE ) ) {
                        wfProfileOut( __METHOD__ );
+
                        return array();
                }
 
                $cacheKey = wfMemcKey(
                        'getExtendedMetadata',
                        $this->getLanguage()->getCode(),
-                       (int) $this->singleLang,
+                       (int)$this->singleLang,
                        $file->getSha1()
                );
 
@@ -1513,6 +1635,7 @@ class FormatMetadata extends ContextSource {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $extendedMetadata;
        }
 
@@ -1529,7 +1652,8 @@ class FormatMetadata extends ContextSource {
                // If this is a remote file accessed via an API request, we already
                // have remote metadata so we just ignore any local one
                if ( $file instanceof ForeignAPIFile ) {
-                       // in case of error we pretend no metadata - this will get cached. Might or might not be a good idea.
+                       // In case of error we pretend no metadata - this will get cached.
+                       // Might or might not be a good idea.
                        return $file->getExtendedMetadata() ?: array();
                }
 
@@ -1556,7 +1680,7 @@ class FormatMetadata extends ContextSource {
                                $name = $text;
                        }
 
-                       $fileMetadata[ 'ObjectName' ] = array(
+                       $fileMetadata['ObjectName'] = array(
                                'value' => $name,
                                'source' => 'mediawiki-metadata',
                        );
@@ -1574,6 +1698,7 @@ class FormatMetadata extends ContextSource {
                }
 
                wfProfileOut( __METHOD__ );
+
                return $fileMetadata;
        }
 
@@ -1587,7 +1712,9 @@ class FormatMetadata extends ContextSource {
         * @return array [<property name> => ['value' => <value>]], or [] on error
         * @since 1.23
         */
-       protected function getExtendedMetadataFromHook( File $file, array $extendedMetadata, &$maxCacheTime ) {
+       protected function getExtendedMetadataFromHook( File $file, array $extendedMetadata,
+               &$maxCacheTime
+       ) {
                wfProfileIn( __METHOD__ );
 
                wfRunHooks( 'GetExtendedMetadata', array(
@@ -1600,12 +1727,13 @@ class FormatMetadata extends ContextSource {
 
                $visible = array_flip( self::getVisibleFields() );
                foreach ( $extendedMetadata as $key => $value ) {
-                       if ( !isset( $visible[ strtolower( $key ) ] ) ) {
+                       if ( !isset( $visible[strtolower( $key )] ) ) {
                                $extendedMetadata[$key]['hidden'] = '';
                        }
                }
 
                wfProfileOut( __METHOD__ );
+
                return $extendedMetadata;
        }
 
@@ -1617,8 +1745,7 @@ class FormatMetadata extends ContextSource {
         * @return mixed value in best language, null if there were no languages at all
         * @since 1.23
         */
-       protected function resolveMultilangValue( $value )
-       {
+       protected function resolveMultilangValue( $value ) {
                if (
                        !is_array( $value )
                        || !isset( $value['_type'] )
@@ -1732,10 +1859,15 @@ class FormatMetadata extends ContextSource {
         * @return array
         * @since 1.23
         */
-       protected function getPriorityLanguages()
-       {
-               $priorityLanguages = Language::getFallbacksIncludingSiteLanguage( $this->getLanguage()->getCode() );
-               $priorityLanguages = array_merge( (array) $this->getLanguage()->getCode(), $priorityLanguages[0], $priorityLanguages[1] );
+       protected function getPriorityLanguages() {
+               $priorityLanguages =
+                       Language::getFallbacksIncludingSiteLanguage( $this->getLanguage()->getCode() );
+               $priorityLanguages = array_merge(
+                       (array)$this->getLanguage()->getCode(),
+                       $priorityLanguages[0],
+                       $priorityLanguages[1]
+               );
+
                return $priorityLanguages;
        }
 }
@@ -1747,12 +1879,13 @@ class FormatMetadata extends ContextSource {
  *
  */
 class FormatExif {
-       var $meta;
+       /** @var array */
+       private $meta;
 
        /**
-        * @param $meta array
+        * @param array $meta
         */
-       function FormatExif( $meta ) {
+       function __construct( $meta ) {
                wfDeprecated( __METHOD__, '1.18' );
                $this->meta = $meta;
        }
index 19635da..bde889c 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class GIFHandler extends BitmapHandler {
-
        const BROKEN_FILE = '0'; // value to store in img_metadata if error extracting metadata.
 
        function getMetadata( $image, $filename ) {
@@ -36,6 +35,7 @@ class GIFHandler extends BitmapHandler {
                } catch ( Exception $e ) {
                        // Broken file?
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+
                        return self::BROKEN_FILE;
                }
 
@@ -43,7 +43,7 @@ class GIFHandler extends BitmapHandler {
        }
 
        /**
-        * @param $image File
+        * @param File $image
         * @return array|bool
         */
        function formatMetadata( $image ) {
@@ -71,18 +71,21 @@ class GIFHandler extends BitmapHandler {
                        return array();
                }
                unset( $meta['metadata']['_MW_GIF_VERSION'] );
+
                return $meta['metadata'];
        }
 
        /**
-        * @param $image File
-        * @todo unittests
+        * @todo Add unit tests
+        *
+        * @param File$image
         * @return bool
         */
        function getImageArea( $image ) {
                $ser = $image->getMetadata();
                if ( $ser ) {
                        $metadata = unserialize( $ser );
+
                        return $image->getWidth() * $image->getHeight() * $metadata['frameCount'];
                } else {
                        return $image->getWidth() * $image->getHeight();
@@ -90,7 +93,7 @@ class GIFHandler extends BitmapHandler {
        }
 
        /**
-        * @param $image File
+        * @param File $image
         * @return bool
         */
        function isAnimatedImage( $image ) {
@@ -101,6 +104,7 @@ class GIFHandler extends BitmapHandler {
                                return true;
                        }
                }
+
                return false;
        }
 
@@ -112,6 +116,7 @@ class GIFHandler extends BitmapHandler {
        function canAnimateThumbnail( $file ) {
                global $wgMaxAnimatedGifArea;
                $answer = $this->getImageArea( $file ) <= $wgMaxAnimatedGifArea;
+
                return $answer;
        }
 
@@ -131,19 +136,23 @@ class GIFHandler extends BitmapHandler {
 
                if ( !$data || !is_array( $data ) ) {
                        wfDebug( __METHOD__ . " invalid GIF metadata\n" );
+
                        return self::METADATA_BAD;
                }
 
                if ( !isset( $data['metadata']['_MW_GIF_VERSION'] )
-                       || $data['metadata']['_MW_GIF_VERSION'] != GIFMetadataExtractor::VERSION ) {
+                       || $data['metadata']['_MW_GIF_VERSION'] != GIFMetadataExtractor::VERSION
+               ) {
                        wfDebug( __METHOD__ . " old but compatible GIF metadata\n" );
+
                        return self::METADATA_COMPATIBLE;
                }
+
                return self::METADATA_GOOD;
        }
 
        /**
-        * @param $image File
+        * @param File $image
         * @return string
         */
        function getLongDesc( $image ) {
index 887afa3..178b0bf 100644 (file)
  * @ingroup Media
  */
 class GIFMetadataExtractor {
-       static $gif_frame_sep;
-       static $gif_extension_sep;
-       static $gif_term;
+       /** @var string */
+       private static $gifFrameSep;
+
+       /** @var string */
+       private static $gifExtensionSep;
+
+       /** @var string */
+       private static $gifTerm;
 
        const VERSION = 1;
 
@@ -45,13 +50,13 @@ class GIFMetadataExtractor {
 
        /**
         * @throws Exception
-        * @param $filename string
+        * @param string $filename
         * @return array
         */
        static function getMetadata( $filename ) {
-               self::$gif_frame_sep = pack( "C", ord( "," ) );
-               self::$gif_extension_sep = pack( "C", ord( "!" ) );
-               self::$gif_term = pack( "C", ord( ";" ) );
+               self::$gifFrameSep = pack( "C", ord( "," ) );
+               self::$gifExtensionSep = pack( "C", ord( "!" ) );
+               self::$gifTerm = pack( "C", ord( ";" ) );
 
                $frameCount = 0;
                $duration = 0.0;
@@ -93,7 +98,7 @@ class GIFMetadataExtractor {
                while ( !feof( $fh ) ) {
                        $buf = fread( $fh, 1 );
 
-                       if ( $buf == self::$gif_frame_sep ) {
+                       if ( $buf == self::$gifFrameSep ) {
                                // Found a frame
                                $frameCount++;
 
@@ -108,7 +113,7 @@ class GIFMetadataExtractor {
                                self::readGCT( $fh, $bpp );
                                fread( $fh, 1 );
                                self::skipBlock( $fh );
-                       } elseif ( $buf == self::$gif_extension_sep ) {
+                       } elseif ( $buf == self::$gifExtensionSep ) {
                                $buf = fread( $fh, 1 );
                                if ( strlen( $buf ) < 1 ) {
                                        throw new Exception( "Ran out of input" );
@@ -163,8 +168,8 @@ class GIFMetadataExtractor {
 
                                        $commentCount = count( $comment );
                                        if ( $commentCount === 0
-                                               || $comment[$commentCount - 1] !== $data )
-                                       {
+                                               || $comment[$commentCount - 1] !== $data
+                                       {
                                                // Some applications repeat the same comment on each
                                                // frame of an animated GIF image, so if this comment
                                                // is identical to the last, only extract once.
@@ -217,15 +222,14 @@ class GIFMetadataExtractor {
                                                $xmp = self::readBlock( $fh, true );
 
                                                if ( substr( $xmp, -257, 3 ) !== "\x01\xFF\xFE"
-                                                       || substr( $xmp, -4 ) !== "\x03\x02\x01\x00" )
-                                               {
+                                                       || substr( $xmp, -4 ) !== "\x03\x02\x01\x00"
+                                               {
                                                        // this is just a sanity check.
                                                        throw new Exception( "XMP does not have magic trailer!" );
                                                }
 
                                                // strip out trailer.
                                                $xmp = substr( $xmp, 0, -257 );
-
                                        } else {
                                                // unrecognized extension block
                                                fseek( $fh, -( $blockLength + 1 ), SEEK_CUR );
@@ -235,7 +239,7 @@ class GIFMetadataExtractor {
                                } else {
                                        self::skipBlock( $fh );
                                }
-                       } elseif ( $buf == self::$gif_term ) {
+                       } elseif ( $buf == self::$gifTerm ) {
                                break;
                        } else {
                                if ( strlen( $buf ) < 1 ) {
@@ -257,20 +261,21 @@ class GIFMetadataExtractor {
        }
 
        /**
-        * @param $fh
-        * @param $bpp
+        * @param resource $fh
+        * @param int $bpp
         * @return void
         */
        static function readGCT( $fh, $bpp ) {
                if ( $bpp > 0 ) {
-                       for ( $i = 1; $i <= pow( 2, $bpp ); ++$i ) {
+                       $max = pow( 2, $bpp );
+                       for ( $i = 1; $i <= $max; ++$i ) {
                                fread( $fh, 3 );
                        }
                }
        }
 
        /**
-        * @param $data
+        * @param string $data
         * @throws Exception
         * @return int
         */
@@ -289,7 +294,7 @@ class GIFMetadataExtractor {
        }
 
        /**
-        * @param $fh
+        * @param resource $fh
         * @throws Exception
         */
        static function skipBlock( $fh ) {
@@ -313,8 +318,8 @@ class GIFMetadataExtractor {
         * saying how long the sub-block is, followed by the sub-block.
         * The entire block is terminated by a sub-block of length
         * 0.
-        * @param $fh FileHandle
-        * @param $includeLengths Boolean Include the length bytes of the
+        * @param resource $fh File handle
+        * @param bool $includeLengths Include the length bytes of the
         *  sub-blocks in the returned value. Normally this is false,
         *  except XMP is weird and does a hack where you need to keep
         *  these length bytes.
@@ -341,7 +346,7 @@ class GIFMetadataExtractor {
                        $data .= fread( $fh, ord( $subLength ) );
                        $subLength = fread( $fh, 1 );
                }
+
                return $data;
        }
-
 }
index dc163ac..503b968 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class IPTC {
-
        /**
         * This takes the results of iptcparse() and puts it into a
         * form that can be handled by mediawiki. Generally called from
@@ -36,13 +35,13 @@ class IPTC {
         * @see http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf
         *
         * @param string $rawData app13 block from jpeg containing iptc/iim data
-        * @return Array iptc metadata array
+        * @return array IPTC metadata array
         */
        static function parse( $rawData ) {
                $parsed = iptcparse( $rawData );
                $data = array();
                if ( !is_array( $parsed ) ) {
-                               return $data;
+                       return $data;
                }
 
                $c = '';
@@ -85,7 +84,8 @@ class IPTC {
                                                $titles = array();
                                        }
 
-                                       for ( $i = 0; $i < count( $titles ); $i++ ) {
+                                       $titleCount = count( $titles );
+                                       for ( $i = 0; $i < $titleCount; $i++ ) {
                                                if ( isset( $bylines[$i] ) ) {
                                                        // theoretically this should always be set
                                                        // but doesn't hurt to be careful.
@@ -300,7 +300,7 @@ class IPTC {
                                                wfDebugLog( 'iptc', 'IPTC: '
                                                        . '2:04 too short. '
                                                        . 'Ignoring.' );
-                                                       break;
+                                               break;
                                        }
                                        $extracted = substr( $con[0], 4 );
                                        $data['IntellectualGenre'] = $extracted;
@@ -315,9 +315,7 @@ class IPTC {
                                        foreach ( $codes as $ic ) {
                                                $fields = explode( ':', $ic, 3 );
 
-                                               if ( count( $fields ) < 2 ||
-                                                       $fields[0] !== 'IPTC' )
-                                               {
+                                               if ( count( $fields ) < 2 || $fields[0] !== 'IPTC' ) {
                                                        wfDebugLog( 'IPTC', 'IPTC: '
                                                                . 'Invalid 2:12 - ' . $ic );
                                                        break;
@@ -341,11 +339,11 @@ class IPTC {
                                        break;
 
                                default:
-                                       wfDebugLog( 'iptc', "Unsupported iptc tag: $tag. Value: " . implode( ',', $val ));
+                                       wfDebugLog( 'iptc', "Unsupported iptc tag: $tag. Value: " . implode( ',', $val ) );
                                        break;
                        }
-
                }
+
                return $data;
        }
 
@@ -355,8 +353,8 @@ class IPTC {
         * @todo Potentially this should also capture the timezone offset.
         * @param array $date The date tag
         * @param array $time The time tag
-        * @param $c
-        * @return String Date in exif format.
+        * @param string $c The charset
+        * @return string Date in EXIF format.
         */
        private static function timeHelper( $date, $time, $c ) {
                if ( count( $date ) === 1 ) {
@@ -387,12 +385,14 @@ class IPTC {
                        // April, but the year and day is unknown. We don't process these
                        // types of incomplete dates atm.
                        wfDebugLog( 'iptc', "IPTC: invalid time ( $time ) or date ( $date )" );
+
                        return null;
                }
 
-               $unixTS = wfTimestamp( TS_UNIX, $date . substr( $time, 0, 6 ));
+               $unixTS = wfTimestamp( TS_UNIX, $date . substr( $time, 0, 6 ) );
                if ( $unixTS === false ) {
                        wfDebugLog( 'iptc', "IPTC: can't convert date to TS_UNIX: $date $time." );
+
                        return null;
                }
 
@@ -400,12 +400,13 @@ class IPTC {
                        + ( intval( substr( $time, 9, 2 ) ) * 60 );
 
                if ( substr( $time, 6, 1 ) === '-' ) {
-                       $tz = - $tz;
+                       $tz = -$tz;
                }
 
                $finalTimestamp = wfTimestamp( TS_EXIF, $unixTS + $tz );
                if ( $finalTimestamp === false ) {
                        wfDebugLog( 'iptc', "IPTC: can't make final timestamp. Date: " . ( $unixTS + $tz ) );
+
                        return null;
                }
                if ( $dateOnly ) {
@@ -434,9 +435,10 @@ class IPTC {
 
                return $data;
        }
+
        /**
         * Helper function of a helper function to convert charset for iptc values.
-        * @param $data Mixed String or Array: The iptc string
+        * @param string|array $data The IPTC string
         * @param string $charset The charset
         *
         * @return string
@@ -461,6 +463,7 @@ class IPTC {
                                return self::convIPTCHelper( $oldData, 'Windows-1252' );
                        }
                }
+
                return trim( $data );
        }
 
index b6586d0..4dd79a8 100644 (file)
@@ -27,9 +27,8 @@
  * @ingroup Media
  */
 abstract class ImageHandler extends MediaHandler {
-
        /**
-        * @param $file File
+        * @param File $file
         * @return bool
         */
        function canRender( $file ) {
@@ -60,6 +59,7 @@ abstract class ImageHandler extends MediaHandler {
                } else {
                        throw new MWException( 'No width specified to ' . __METHOD__ );
                }
+
                # Removed for ProofreadPage
                #$width = intval( $width );
                return "{$width}px";
@@ -79,8 +79,8 @@ abstract class ImageHandler extends MediaHandler {
        }
 
        /**
-        * @param $image File
-        * @param  $params
+        * @param File $image
+        * @param array $params
         * @return bool
         */
        function normaliseParams( $image, &$params ) {
@@ -140,20 +140,22 @@ abstract class ImageHandler extends MediaHandler {
                }
 
                if ( !$this->validateThumbParams( $params['physicalWidth'],
-                               $params['physicalHeight'], $srcWidth, $srcHeight, $mimeType ) ) {
+                       $params['physicalHeight'], $srcWidth, $srcHeight, $mimeType )
+               ) {
                        return false;
                }
+
                return true;
        }
 
        /**
         * Validate thumbnail parameters and fill in the correct height
         *
-        * @param $width Integer: specified width (input/output)
-        * @param $height Integer: height (output only)
-        * @param $srcWidth Integer: width of the source image
-        * @param $srcHeight Integer: height of the source image
-        * @param $mimeType
+        * @param int $width Specified width (input/output)
+        * @param int $height Height (output only)
+        * @param int $srcWidth Width of the source image
+        * @param int $srcHeight Height of the source image
+        * @param string $mimeType Unused
         * @return bool False to indicate that an error should be returned to the user.
         */
        function validateThumbParams( &$width, &$height, $srcWidth, $srcHeight, $mimeType ) {
@@ -162,10 +164,12 @@ abstract class ImageHandler extends MediaHandler {
                # Sanity check $width
                if ( $width <= 0 ) {
                        wfDebug( __METHOD__ . ": Invalid destination width: $width\n" );
+
                        return false;
                }
                if ( $srcWidth <= 0 ) {
                        wfDebug( __METHOD__ . ": Invalid source width: $srcWidth\n" );
+
                        return false;
                }
 
@@ -174,14 +178,15 @@ abstract class ImageHandler extends MediaHandler {
                        # Force height to be at least 1 pixel
                        $height = 1;
                }
+
                return true;
        }
 
        /**
-        * @param $image File
-        * @param  $script
-        * @param  $params
-        * @return bool|ThumbnailImage
+        * @param File $image
+        * @param string $script
+        * @param array $params
+        * @return bool|MediaTransformOutput
         */
        function getScriptedTransform( $image, $script, $params ) {
                if ( !$this->normaliseParams( $image, $params ) ) {
@@ -198,8 +203,10 @@ abstract class ImageHandler extends MediaHandler {
                wfSuppressWarnings();
                $gis = getimagesize( $path );
                wfRestoreWarnings();
+
                return $gis;
        }
+
        /**
         * Function that returns the number of pixels to be thumbnailed.
         * Intended for animated GIFs to multiply by the number of frames.
@@ -214,19 +221,20 @@ abstract class ImageHandler extends MediaHandler {
        }
 
        /**
-        * @param $file File
+        * @param File $file
         * @return string
         */
        function getShortDesc( $file ) {
                global $wgLang;
                $nbytes = htmlspecialchars( $wgLang->formatSize( $file->getSize() ) );
-               $widthheight = wfMessage( 'widthheight' )->numParams( $file->getWidth(), $file->getHeight() )->escaped();
+               $widthheight = wfMessage( 'widthheight' )
+                       ->numParams( $file->getWidth(), $file->getHeight() )->escaped();
 
                return "$widthheight ($nbytes)";
        }
 
        /**
-        * @param $file File
+        * @param File $file
         * @return string
         */
        function getLongDesc( $file ) {
@@ -236,25 +244,28 @@ abstract class ImageHandler extends MediaHandler {
                if ( $pages === false || $pages <= 1 ) {
                        $msg = wfMessage( 'file-info-size' )->numParams( $file->getWidth(),
                                $file->getHeight() )->params( $size,
-                               $file->getMimeType() )->parse();
+                                       $file->getMimeType() )->parse();
                } else {
                        $msg = wfMessage( 'file-info-size-pages' )->numParams( $file->getWidth(),
                                $file->getHeight() )->params( $size,
-                               $file->getMimeType() )->numParams( $pages )->parse();
+                                       $file->getMimeType() )->numParams( $pages )->parse();
                }
+
                return $msg;
        }
 
        /**
-        * @param $file File
+        * @param File $file
         * @return string
         */
        function getDimensionsString( $file ) {
                $pages = $file->pageCount();
                if ( $pages > 1 ) {
-                       return wfMessage( 'widthheightpage' )->numParams( $file->getWidth(), $file->getHeight(), $pages )->text();
+                       return wfMessage( 'widthheightpage' )
+                               ->numParams( $file->getWidth(), $file->getHeight(), $pages )->text();
                } else {
-                       return wfMessage( 'widthheight' )->numParams( $file->getWidth(), $file->getHeight() )->text();
+                       return wfMessage( 'widthheight' )
+                               ->numParams( $file->getWidth(), $file->getHeight() )->text();
                }
        }
 }
index fa76366..ee7eff8 100644 (file)
@@ -31,7 +31,6 @@
  * @ingroup Media
  */
 class JpegHandler extends ExifBitmapHandler {
-
        function getMetadata( $image, $filename ) {
                try {
                        $meta = BitmapMetadataHandler::Jpeg( $filename );
@@ -40,10 +39,11 @@ class JpegHandler extends ExifBitmapHandler {
                                throw new MWException( 'Metadata array is not an array' );
                        }
                        $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+
                        return serialize( $meta );
-               }
-               catch ( MWException $e ) {
-                       // BitmapMetadataHandler throws an exception in certain exceptional cases like if file does not exist.
+               } catch ( MWException $e ) {
+                       // BitmapMetadataHandler throws an exception in certain exceptional
+                       // cases like if file does not exist.
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
 
                        /* This used to use 0 (ExifBitmapHandler::OLD_BROKEN_FILE) for the cases
@@ -55,14 +55,15 @@ class JpegHandler extends ExifBitmapHandler {
                         * Thus switch to using -1 to denote only a broken file, and use an array with only
                         * MEDIAWIKI_EXIF_VERSION to denote no props.
                         */
+
                        return ExifBitmapHandler::BROKEN_FILE;
                }
        }
 
        /**
-        * @param $file File
+        * @param File $file
         * @param array $params Rotate parameters.
-        *      'rotation' clockwise rotation in degrees, allowed are multiples of 90
+        *    'rotation' clockwise rotation in degrees, allowed are multiples of 90
         * @since 1.21
         * @return bool
         */
@@ -79,16 +80,18 @@ class JpegHandler extends ExifBitmapHandler {
                        wfDebug( __METHOD__ . ": running jpgtran: $cmd\n" );
                        wfProfileIn( 'jpegtran' );
                        $retval = 0;
+                       // @todo FIXME Undefined variable $env
                        $err = wfShellExecWithStderr( $cmd, $retval, $env );
                        wfProfileOut( 'jpegtran' );
                        if ( $retval !== 0 ) {
                                $this->logErrorForExternalProcess( $retval, $err, $cmd );
+
                                return new MediaTransformError( 'thumbnail_error', 0, 0, $err );
                        }
+
                        return false;
                } else {
                        return parent::rotate( $file, $params );
                }
        }
-
 }
index c7030eb..a0f8524 100644 (file)
@@ -30,8 +30,8 @@
  * @ingroup Media
  */
 class JpegMetadataExtractor {
-
        const MAX_JPEG_SEGMENTS = 200;
+
        // the max segment is a sanity check.
        // A jpeg file should never even remotely have
        // that many segments. Your average file has about 10.
@@ -44,7 +44,7 @@ class JpegMetadataExtractor {
         * and those can't extract xmp on files containing both exif and xmp data
         *
         * @param string $filename name of jpeg file
-        * @return Array of interesting segments.
+        * @return array of interesting segments.
         * @throws MWException if given invalid file.
         */
        static function segmentSplitter( $filename ) {
@@ -83,7 +83,8 @@ class JpegMetadataExtractor {
                                throw new MWException( 'Too many jpeg segments. Aborting' );
                        }
                        if ( $buffer !== "\xFF" ) {
-                               throw new MWException( "Error reading jpeg file marker. Expected 0xFF but got " . bin2hex( $buffer ) );
+                               throw new MWException( "Error reading jpeg file marker. " .
+                                       "Expected 0xFF but got " . bin2hex( $buffer ) );
                        }
 
                        $buffer = fread( $fh, 1 );
@@ -113,7 +114,6 @@ class JpegMetadataExtractor {
                                } else {
                                        wfDebug( __METHOD__ . " Ignoring JPEG comment as is garbage.\n" );
                                }
-
                        } elseif ( $buffer === "\xE1" ) {
                                // APP1 section (Exif, XMP, and XMP extended)
                                // only extract if XMP is enabled.
@@ -160,7 +160,6 @@ class JpegMetadataExtractor {
                                }
                                fseek( $fh, $size['int'] - 2, SEEK_CUR );
                        }
-
                }
                // shouldn't get here.
                throw new MWException( "Reached end of jpeg file unexpectedly" );
@@ -168,9 +167,9 @@ class JpegMetadataExtractor {
 
        /**
         * Helper function for jpegSegmentSplitter
-        * @param &$fh FileHandle for jpeg file
+        * @param resource &$fh File handle for JPEG file
         * @throws MWException
-        * @return string data content of segment.
+        * @return string Data content of segment.
         */
        private static function jpegExtractMarker( &$fh ) {
                $size = wfUnpack( "nint", fread( $fh, 2 ), 2 );
@@ -181,6 +180,7 @@ class JpegMetadataExtractor {
                if ( strlen( $segment ) !== $size['int'] - 2 ) {
                        throw new MWException( "Segment shorter than expected" );
                }
+
                return $segment;
        }
 
@@ -195,7 +195,8 @@ class JpegMetadataExtractor {
         *
         * @param string $app13 photoshop psir app13 block from jpg.
         * @throws MWException (It gets caught next level up though)
-        * @return String if the iptc hash is good or not.
+        * @return string If the iptc hash is good or not. One of 'iptc-no-hash',
+        *   'iptc-good-hash', 'iptc-bad-hash'.
         */
        public static function doPSIR( $app13 ) {
                if ( !$app13 ) {
@@ -275,7 +276,6 @@ class JpegMetadataExtractor {
                                $lenData['len']++;
                        }
                        $offset += $lenData['len'];
-
                }
 
                if ( !$realHash || !$recordedHash ) {
index 56dcae0..ee11599 100644 (file)
@@ -32,21 +32,24 @@ abstract class MediaHandler {
        const METADATA_BAD = false;
        const METADATA_COMPATIBLE = 2; // for old but backwards compatible.
        /**
-        * Instance cache
+        * Max length of error logged by logErrorForExternalProcess()
         */
-       static $handlers = array();
+       const MAX_ERR_LOG_SIZE = 65535;
+
+       /** @var MediaHandler[] Instance cache with array of MediaHandler */
+       protected static $handlers = array();
 
        /**
         * Get a MediaHandler for a given MIME type from the instance cache
         *
         * @param string $type
-        *
         * @return MediaHandler
         */
        static function getHandler( $type ) {
                global $wgMediaHandlers;
                if ( !isset( $wgMediaHandlers[$type] ) ) {
                        wfDebug( __METHOD__ . ": no handler found for $type.\n" );
+
                        return false;
                }
                $class = $wgMediaHandlers[$type];
@@ -56,6 +59,7 @@ abstract class MediaHandler {
                                self::$handlers[$class] = false;
                        }
                }
+
                return self::$handlers[$class];
        }
 
@@ -71,7 +75,7 @@ abstract class MediaHandler {
         * If you return false, the parser will do something quiet and forgiving.
         *
         * @param string $name
-        * @param $value
+        * @param mixed $value
         */
        abstract function validateParam( $name, $value );
 
@@ -95,8 +99,8 @@ abstract class MediaHandler {
         * Changes the parameter array as necessary, ready for transformation.
         * Should be idempotent.
         * Returns false if the parameters are unacceptable and the transform should fail
-        * @param $image
-        * @param $params
+        * @param File $image
+        * @param array $params
         */
        abstract function normaliseParams( $image, &$params );
 
@@ -106,7 +110,8 @@ abstract class MediaHandler {
         *
         * @param File $image The image object, or false if there isn't one
         * @param string $path the filename
-        * @return array Follow the format of PHP getimagesize() internal function. See http://www.php.net/getimagesize
+        * @return array Follow the format of PHP getimagesize() internal function.
+        *   See http://www.php.net/getimagesize
         */
        abstract function getImageSize( $image, $path );
 
@@ -140,6 +145,7 @@ abstract class MediaHandler {
        static function getMetadataVersion() {
                $version = array( '2' ); // core metadata version
                wfRunHooks( 'GetMetadataVersion', array( &$version ) );
+
                return implode( ';', $version );
        }
 
@@ -149,7 +155,7 @@ abstract class MediaHandler {
         * By default just returns $metadata, but can be used to allow
         * media handlers to convert between metadata versions.
         *
-        * @param mixed|string|array $metadata Metadata array (serialized if string)
+        * @param string|array $metadata Metadata array (serialized if string)
         * @param int $version Target version
         * @return array Serialized metadata in specified version, or $metadata on fail.
         */
@@ -160,14 +166,16 @@ abstract class MediaHandler {
                        wfSuppressWarnings();
                        $ret = unserialize( $metadata );
                        wfRestoreWarnings();
+
                        return $ret;
                }
+
                return $metadata;
        }
 
        /**
         * Get a string describing the type of metadata, for display purposes.
-        * @param $image
+        * @param File $image
         * @return string
         */
        function getMetadataType( $image ) {
@@ -181,6 +189,8 @@ abstract class MediaHandler {
         * MediaHandler::METADATA_GOOD for if the metadata is a-ok,
         * MediaHanlder::METADATA_COMPATIBLE if metadata is old but backwards
         * compatible (which may or may not trigger a metadata reload).
+        * @param File $image
+        * @param array $metadata
         * @return bool
         */
        function isMetadataValid( $image, $metadata ) {
@@ -216,7 +226,6 @@ abstract class MediaHandler {
         * this interface, it should return an empty array, not false.
         *
         * @param File $file
-        *
         * @return array|bool False if interface not supported
         * @since 1.23
         */
@@ -231,7 +240,10 @@ abstract class MediaHandler {
         * Used when the repository has a thumbnailScriptUrl option configured.
         *
         * Return false to fall back to the regular getTransform().
-        * @return bool
+        * @param File $image
+        * @param string $script
+        * @param array $params
+        * @return bool|ThumbnailImage
         */
        function getScriptedTransform( $image, $script, $params ) {
                return false;
@@ -242,7 +254,7 @@ abstract class MediaHandler {
         * actually do the transform.
         *
         * @param File $image The image object
-        * @param string $dstPath filesystem destination path
+        * @param string $dstPath Filesystem destination path
         * @param string $dstUrl Destination URL to use in output HTML
         * @param array $params Arbitrary set of parameters validated by $this->validateParam()
         * @return MediaTransformOutput
@@ -256,12 +268,11 @@ abstract class MediaHandler {
         * transform unless $flags contains self::TRANSFORM_LATER.
         *
         * @param File $image The image object
-        * @param string $dstPath filesystem destination path
-        * @param string $dstUrl destination URL to use in output HTML
-        * @param array $params arbitrary set of parameters validated by $this->validateParam()
+        * @param string $dstPath Filesystem destination path
+        * @param string $dstUrl Destination URL to use in output HTML
+        * @param array $params Arbitrary set of parameters validated by $this->validateParam()
         *   Note: These parameters have *not* gone through $this->normaliseParams()
         * @param int $flags A bitfield, may contain self::TRANSFORM_LATER
-        *
         * @return MediaTransformOutput
         */
        abstract function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 );
@@ -270,7 +281,7 @@ abstract class MediaHandler {
         * Get the thumbnail extension and MIME type for a given source MIME type
         *
         * @param string $ext Extension of original file
-        * @param string $mime Mime type of original file
+        * @param string $mime MIME type of original file
         * @param array $params Handler specific rendering parameters
         * @return array thumbnail extension and MIME type
         */
@@ -292,6 +303,7 @@ abstract class MediaHandler {
 
        /**
         * Get useful response headers for GET/HEAD requests for a file with the given metadata
+        *
         * @param mixed $metadata Result of the getMetadata() function of this handler for a file
         * @return array
         */
@@ -301,6 +313,8 @@ abstract class MediaHandler {
 
        /**
         * True if the handled types can be transformed
+        *
+        * @param File $file
         * @return bool
         */
        function canRender( $file ) {
@@ -310,6 +324,8 @@ abstract class MediaHandler {
        /**
         * True if handled types cannot be displayed directly in a browser
         * but can be rendered
+        *
+        * @param File $file
         * @return bool
         */
        function mustRender( $file ) {
@@ -318,6 +334,8 @@ abstract class MediaHandler {
 
        /**
         * True if the type has multi-page capabilities
+        *
+        * @param File $file
         * @return bool
         */
        function isMultiPage( $file ) {
@@ -326,6 +344,8 @@ abstract class MediaHandler {
 
        /**
         * Page count for a multi-page document, false if unsupported or unknown
+        *
+        * @param File $file
         * @return bool
         */
        function pageCount( $file ) {
@@ -334,6 +354,8 @@ abstract class MediaHandler {
 
        /**
         * The material is vectorized and thus scaling is lossless
+        *
+        * @param File $file
         * @return bool
         */
        function isVectorized( $file ) {
@@ -344,6 +366,8 @@ abstract class MediaHandler {
         * The material is an image, and is animated.
         * In particular, video material need not return true.
         * @note Before 1.20, this was a method of ImageHandler only
+        *
+        * @param File $file
         * @return bool
         */
        function isAnimatedImage( $file ) {
@@ -353,6 +377,8 @@ abstract class MediaHandler {
        /**
         * If the material is animated, we can animate the thumbnail
         * @since 1.20
+        *
+        * @param File $file
         * @return bool If material is not animated, handler may return any value.
         */
        function canAnimateThumbnail( $file ) {
@@ -379,8 +405,8 @@ abstract class MediaHandler {
         *
         * @note For non-paged media, use getImageSize.
         *
-        * @param $image File
-        * @param $page What page to get dimensions of
+        * @param File $image
+        * @param int $page What page to get dimensions of
         * @return array|bool
         */
        function getPageDimensions( $image, $page ) {
@@ -398,12 +424,39 @@ abstract class MediaHandler {
        /**
         * Generic getter for text layer.
         * Currently overloaded by PDF and DjVu handlers
-        * @return bool
+        * @param File $image
+        * @param int $page Page number to get information for
+        * @return bool|string Page text or false when no text found or if
+        *   unsupported.
         */
        function getPageText( $image, $page ) {
                return false;
        }
 
+       /**
+        * Get the text of the entire document.
+        * @param File $file
+        * @return bool|string The text of the document or false if unsupported.
+        */
+       public function getEntireText( File $file ) {
+               $numPages = $file->pageCount();
+               if ( !$numPages ) {
+                       // Not a multipage document
+                       return $this->getPageText( $file, 1 );
+               }
+               $document = '';
+               for ( $i = 1; $i <= $numPages; $i++ ) {
+                       $curPage = $this->getPageText( $file, $i );
+                       if ( is_string( $curPage ) ) {
+                               $document .= $curPage . "\n";
+                       }
+               }
+               if ( $document !== '' ) {
+                       return $document;
+               }
+               return false;
+       }
+
        /**
         * Get an array structure that looks like this:
         *
@@ -424,12 +477,12 @@ abstract class MediaHandler {
         */
 
        /**
-        * @todo FIXME: I don't really like this interface, it's not very flexible
-        * I think the media handler should generate HTML instead. It can do
-        * all the formatting according to some standard. That makes it possible
-        * to do things like visual indication of grouped and chained streams
-        * in ogg container files.
-        * @return bool
+        * @todo FIXME: This interface is not very flexible. The media handler
+        * should generate HTML instead. It can do all the formatting according
+        * to some standard. That makes it possible to do things like visual
+        * indication of grouped and chained streams in ogg container files.
+        * @param File $image
+        * @return array|bool
         */
        function formatMetadata( $image ) {
                return false;
@@ -441,7 +494,7 @@ abstract class MediaHandler {
         *
         * This is used by the media handlers that use the FormatMetadata class
         *
-        * @param array $metadataArray metadata array
+        * @param array $metadataArray Metadata array
         * @return array for use displaying metadata.
         */
        function formatMetadataHelper( $metadataArray ) {
@@ -462,6 +515,7 @@ abstract class MediaHandler {
                                $value
                        );
                }
+
                return $result;
        }
 
@@ -470,9 +524,8 @@ abstract class MediaHandler {
         * the metadata table is collapsed.
         *
         * @return array of strings
-        * @access protected
         */
-       function visibleMetadataFields() {
+       protected function visibleMetadataFields() {
                return FormatMetadata::getVisibleFields();
        }
 
@@ -481,21 +534,21 @@ abstract class MediaHandler {
         * That array is then used to generate the table of metadata values
         * on the image page
         *
-        * @param &$array Array An array containing elements for each type of visibility
-        * and each of those elements being an array of metadata items. This function adds
-        * a value to that array.
+        * @param array &$array An array containing elements for each type of visibility
+        *   and each of those elements being an array of metadata items. This function adds
+        *   a value to that array.
         * @param string $visibility ('visible' or 'collapsed') if this value is hidden
-        * by default.
-        * @param string $type type of metadata tag (currently always 'exif')
-        * @param string $id the name of the metadata tag (like 'artist' for example).
-        * its name in the table displayed is the message "$type-$id" (Ex exif-artist ).
-        * @param string $value thingy goes into a wikitext table; it used to be escaped but
-        * that was incompatible with previous practise of customized display
-        * with wikitext formatting via messages such as 'exif-model-value'.
-        * So the escaping is taken back out, but generally this seems a confusing
-        * interface.
-        * @param string $param value to pass to the message for the name of the field
-        * as $1. Currently this parameter doesn't seem to ever be used.
+        *   by default.
+        * @param string $type Type of metadata tag (currently always 'exif')
+        * @param string $id The name of the metadata tag (like 'artist' for example).
+        *   its name in the table displayed is the message "$type-$id" (Ex exif-artist ).
+        * @param string $value Thingy goes into a wikitext table; it used to be escaped but
+        *   that was incompatible with previous practise of customized display
+        *   with wikitext formatting via messages such as 'exif-model-value'.
+        *   So the escaping is taken back out, but generally this seems a confusing
+        *   interface.
+        * @param bool|string $param Value to pass to the message for the name of the field
+        *   as $1. Currently this parameter doesn't seem to ever be used.
         *
         * Note, everything here is passed through the parser later on (!)
         */
@@ -522,22 +575,24 @@ abstract class MediaHandler {
        /**
         * Used instead of getLongDesc if there is no handler registered for file.
         *
-        * @param $file File
+        * @param File $file
         * @return string
         */
        function getShortDesc( $file ) {
                global $wgLang;
+
                return htmlspecialchars( $wgLang->formatSize( $file->getSize() ) );
        }
 
        /**
         * Short description. Shown on Special:Search results.
         *
-        * @param $file File
+        * @param File $file
         * @return string
         */
        function getLongDesc( $file ) {
                global $wgLang;
+
                return wfMessage( 'file-info', htmlspecialchars( $wgLang->formatSize( $file->getSize() ) ),
                        $file->getMimeType() )->parse();
        }
@@ -545,22 +600,24 @@ abstract class MediaHandler {
        /**
         * Long description. Shown under image on image description page surounded by ().
         *
-        * @param $file File
+        * @param File $file
         * @return string
         */
        static function getGeneralShortDesc( $file ) {
                global $wgLang;
+
                return $wgLang->formatSize( $file->getSize() );
        }
 
        /**
         * Used instead of getShortDesc if there is no handler registered for file.
         *
-        * @param $file File
+        * @param File $file
         * @return string
         */
        static function getGeneralLongDesc( $file ) {
                global $wgLang;
+
                return wfMessage( 'file-info', $wgLang->formatSize( $file->getSize() ),
                        $file->getMimeType() )->parse();
        }
@@ -568,10 +625,10 @@ abstract class MediaHandler {
        /**
         * Calculate the largest thumbnail width for a given original file size
         * such that the thumbnail's height is at most $maxHeight.
-        * @param $boxWidth Integer Width of the thumbnail box.
-        * @param $boxHeight Integer Height of the thumbnail box.
-        * @param $maxHeight Integer Maximum height expected for the thumbnail.
-        * @return Integer.
+        * @param int $boxWidth Width of the thumbnail box.
+        * @param int $boxHeight Height of the thumbnail box.
+        * @param int $maxHeight Maximum height expected for the thumbnail.
+        * @return int
         */
        public static function fitBoxWidth( $boxWidth, $boxHeight, $maxHeight ) {
                $idealWidth = $boxWidth * $maxHeight / $boxHeight;
@@ -603,7 +660,8 @@ abstract class MediaHandler {
         * @param Parser $parser
         * @param File $file
         */
-       function parserTransformHook( $parser, $file ) {}
+       function parserTransformHook( $parser, $file ) {
+       }
 
        /**
         * File validation hook called on upload.
@@ -642,9 +700,11 @@ abstract class MediaHandler {
                                                sprintf( 'Removing bad %d-byte thumbnail "%s". unlink() failed',
                                                        $thumbstat['size'], $dstPath ) );
                                }
+
                                return true;
                        }
                }
+
                return false;
        }
 
@@ -685,11 +745,57 @@ abstract class MediaHandler {
         *
         * For files we don't know, we return 0.
         *
-        * @param $file File
+        * @param File $file
         * @return int 0, 90, 180 or 270
         */
        public function getRotation( $file ) {
                return 0;
        }
 
+       /**
+        * Log an error that occurred in an external process
+        *
+        * Moved from BitmapHandler to MediaHandler with MediaWiki 1.23
+        *
+        * @since 1.23
+        * @param int $retval
+        * @param string $err Error reported by command. Anything longer than
+        * MediaHandler::MAX_ERR_LOG_SIZE is stripped off.
+        * @param string $cmd
+        */
+       protected function logErrorForExternalProcess( $retval, $err, $cmd ) {
+               # Keep error output limited (bug 57985)
+               $errMessage = trim( substr( $err, 0, self::MAX_ERR_LOG_SIZE ) );
+
+               wfDebugLog( 'thumbnail',
+                       sprintf( 'thumbnail failed on %s: error %d "%s" from "%s"',
+                                       wfHostname(), $retval, $errMessage, $cmd ) );
+       }
+
+       /**
+        * Get list of languages file can be viewed in.
+        *
+        * @param File $file
+        * @return Array Array of language codes, or empty array if unsupported.
+        * @since 1.23
+        */
+       public function getAvailableLanguages( File $file ) {
+               return array();
+       }
+
+       /**
+        * On file types that support renderings in multiple languages,
+        * which language is used by default if unspecified.
+        *
+        * If getAvailableLanguages returns a non-empty array, this must return
+        * a valid language code. Otherwise can return null if files of this
+        * type do not support alternative language renderings.
+        *
+        * @param File $file
+        * @return String language code or null if multi-language not supported for filetype.
+        * @since 1.23
+        */
+       public function getDefaultRenderLanguage( File $file ) {
+               return null;
+       }
 }
index c49d3f2..41b09e6 100644 (file)
  * @ingroup Media
  */
 abstract class MediaTransformOutput {
-       /**
-        * @var File
+       /** @var array Associative array mapping optional supplementary image files
+        *  from pixel density (eg 1.5 or 2) to additional URLs.
         */
-       var $file;
+       public $responsiveUrls = array();
 
-       var $width, $height, $url, $page, $path, $lang;
+       /** @var File object */
+       protected $file;
 
-       /**
-        * @var array Associative array mapping optional supplementary image files
-        * from pixel density (eg 1.5 or 2) to additional URLs.
-        */
-       public $responsiveUrls = array();
+       /** @var int Image width */
+       protected $width;
+
+       /** @var int Image height */
+       protected $height;
+
+       /** @var string URL path to the thumb */
+       protected $url;
+
+       /** @var bool|string */
+       protected $page;
+
+       /** @var bool|string Filesystem path to the thumb  */
+       protected $path;
+
+       /** @var bool|string Language code, false if not set */
+       protected $lang;
 
+       /** @var bool|string Permanent storage path  */
        protected $storagePath = false;
 
        /**
-        * @return integer Width of the output box
+        * @return int Width of the output box
         */
        public function getWidth() {
                return $this->width;
        }
 
        /**
-        * @return integer Height of the output box
+        * @return int Height of the output box
         */
        public function getHeight() {
                return $this->height;
@@ -123,7 +137,7 @@ abstract class MediaTransformOutput {
         * thumbnail is to be handled client-side only, or if
         * transformation was deferred via TRANSFORM_LATER.
         *
-        * @return Bool
+        * @return bool
         */
        public function hasFile() {
                // If TRANSFORM_LATER, $this->path will be false.
@@ -135,7 +149,7 @@ abstract class MediaTransformOutput {
         * Check if the output thumbnail is the same as the source.
         * This can occur if the requested width was bigger than the source.
         *
-        * @return Bool
+        * @return bool
         */
        public function fileIsSource() {
                return ( !$this->isError() && $this->path === null );
@@ -156,6 +170,7 @@ abstract class MediaTransformOutput {
                        $be = $this->file->getRepo()->getBackend();
                        // The temp file will be process cached by FileBackend
                        $fsFile = $be->getLocalReference( array( 'src' => $this->path ) );
+
                        return $fsFile ? $fsFile->getPath() : false;
                } else {
                        return $this->path; // may return false
@@ -166,13 +181,14 @@ abstract class MediaTransformOutput {
         * Stream the file if there were no errors
         *
         * @param array $headers Additional HTTP headers to send on success
-        * @return Bool success
+        * @return bool Success
         */
        public function streamFile( $headers = array() ) {
                if ( !$this->path ) {
                        return false;
                } elseif ( FileBackend::isStoragePath( $this->path ) ) {
                        $be = $this->file->getRepo()->getBackend();
+
                        return $be->streamFile( array( 'src' => $this->path, 'headers' => $headers ) )->isOK();
                } else { // FS-file
                        return StreamFile::stream( $this->getLocalCopyPath(), $headers );
@@ -182,9 +198,8 @@ abstract class MediaTransformOutput {
        /**
         * Wrap some XHTML text in an anchor tag with the given attributes
         *
-        * @param $linkAttribs array
-        * @param $contents string
-        *
+        * @param array $linkAttribs
+        * @param string $contents
         * @return string
         */
        protected function linkWrap( $linkAttribs, $contents ) {
@@ -197,7 +212,7 @@ abstract class MediaTransformOutput {
 
        /**
         * @param $title string
-        * @param $params string|array Query parameters to add
+        * @param string|array $params Query parameters to add
         * @return array
         */
        public function getDescLinkAttribs( $title = null, $params = array() ) {
@@ -224,6 +239,7 @@ abstract class MediaTransformOutput {
                if ( $title ) {
                        $attribs['title'] = $title;
                }
+
                return $attribs;
        }
 }
@@ -241,11 +257,10 @@ class ThumbnailImage extends MediaTransformOutput {
         * $parameters should include, as a minimum, (file) 'width' and 'height'.
         * It may also include a 'page' parameter for multipage files.
         *
-        * @param $file File object
+        * @param File $file
         * @param string $url URL path to the thumb
-        * @param $path String|bool|null: filesystem path to the thumb
+        * @param string|bool $path Filesystem path to the thumb
         * @param array $parameters Associative array of parameters
-        * @private
         */
        function __construct( $file, $url, $path = false, $parameters = array() ) {
                # Previous parameters:
@@ -300,6 +315,8 @@ class ThumbnailImage extends MediaTransformOutput {
         *     desc-query   String, description link query params
         *     override-width     Override width attribute. Should generally not set
         *     override-height    Override height attribute. Should generally not set
+        *     no-dimensions      Boolean, skip width and height attributes (useful if
+        *                        set in CSS)
         *     custom-url-link    Custom URL to link to
         *     custom-title-link  Custom Title object to link to
         *     custom target-link Value of the target attribute, for custom-target-link
@@ -336,13 +353,17 @@ class ThumbnailImage extends MediaTransformOutput {
                                $linkAttribs['rel'] = $options['parser-extlink-rel'];
                        }
                } elseif ( !empty( $options['custom-title-link'] ) ) {
+                       /** @var Title $title */
                        $title = $options['custom-title-link'];
                        $linkAttribs = array(
                                'href' => $title->getLinkURL(),
                                'title' => empty( $options['title'] ) ? $title->getFullText() : $options['title']
                        );
                } elseif ( !empty( $options['desc-link'] ) ) {
-                       $linkAttribs = $this->getDescLinkAttribs( empty( $options['title'] ) ? null : $options['title'], $query );
+                       $linkAttribs = $this->getDescLinkAttribs(
+                               empty( $options['title'] ) ? null : $options['title'],
+                               $query
+                       );
                } elseif ( !empty( $options['file-link'] ) ) {
                        $linkAttribs = array( 'href' => $this->file->getURL() );
                } else {
@@ -352,9 +373,11 @@ class ThumbnailImage extends MediaTransformOutput {
                $attribs = array(
                        'alt' => $alt,
                        'src' => $this->url,
-                       'width' => $this->width,
-                       'height' => $this->height
                );
+               if ( empty( $options['no-dimensions'] ) ) {
+                       $attribs['width'] = $this->width;
+                       $attribs['height'] = $this->height;
+               }
                if ( !empty( $options['valign'] ) ) {
                        $attribs['style'] = "vertical-align: {$options['valign']}";
                }
@@ -377,7 +400,6 @@ class ThumbnailImage extends MediaTransformOutput {
 
                return $this->linkWrap( $linkAttribs, Xml::element( 'img', $attribs ) );
        }
-
 }
 
 /**
@@ -386,7 +408,11 @@ class ThumbnailImage extends MediaTransformOutput {
  * @ingroup Media
  */
 class MediaTransformError extends MediaTransformOutput {
-       var $htmlMsg, $textMsg, $width, $height, $url, $path;
+       /** @var string HTML formatted version of the error */
+       private $htmlMsg;
+
+       /** @var string Plain text formatted version of the error */
+       private $textMsg;
 
        function __construct( $msg, $width, $height /*, ... */ ) {
                $args = array_slice( func_get_args(), 3 );
index d2c17ef..968db10 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class PNGHandler extends BitmapHandler {
-
        const BROKEN_FILE = '0';
 
        /**
@@ -41,6 +40,7 @@ class PNGHandler extends BitmapHandler {
                } catch ( Exception $e ) {
                        // Broken file?
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+
                        return self::BROKEN_FILE;
                }
 
@@ -48,7 +48,7 @@ class PNGHandler extends BitmapHandler {
        }
 
        /**
-        * @param $image File
+        * @param File $image
         * @return array|bool
         */
        function formatMetadata( $image ) {
@@ -63,7 +63,7 @@ class PNGHandler extends BitmapHandler {
        /**
         * Get a file type independent array of metadata.
         *
-        * @param $image File
+        * @param File $image
         * @return array The metadata array
         */
        public function getCommonMetaArray( File $image ) {
@@ -77,11 +77,12 @@ class PNGHandler extends BitmapHandler {
                        return array();
                }
                unset( $meta['metadata']['_MW_PNG_VERSION'] );
+
                return $meta['metadata'];
        }
 
        /**
-        * @param $image File
+        * @param File $image
         * @return bool
         */
        function isAnimatedImage( $image ) {
@@ -92,11 +93,13 @@ class PNGHandler extends BitmapHandler {
                                return true;
                        }
                }
+
                return false;
        }
+
        /**
         * We do not support making APNG thumbnails, so always false
-        * @param $image File
+        * @param File $image
         * @return bool false
         */
        function canAnimateThumbnail( $image ) {
@@ -120,19 +123,23 @@ class PNGHandler extends BitmapHandler {
 
                if ( !$data || !is_array( $data ) ) {
                        wfDebug( __METHOD__ . " invalid png metadata\n" );
+
                        return self::METADATA_BAD;
                }
 
                if ( !isset( $data['metadata']['_MW_PNG_VERSION'] )
-                       || $data['metadata']['_MW_PNG_VERSION'] != PNGMetadataExtractor::VERSION ) {
+                       || $data['metadata']['_MW_PNG_VERSION'] != PNGMetadataExtractor::VERSION
+               ) {
                        wfDebug( __METHOD__ . " old but compatible png metadata\n" );
+
                        return self::METADATA_COMPATIBLE;
                }
+
                return self::METADATA_GOOD;
        }
 
        /**
-        * @param $image File
+        * @param File $image
         * @return string
         */
        function getLongDesc( $image ) {
@@ -166,5 +173,4 @@ class PNGHandler extends BitmapHandler {
 
                return $wgLang->commaList( $info );
        }
-
 }
index 845d212..30376f1 100644 (file)
  * @ingroup Media
  */
 class PNGMetadataExtractor {
-       static $png_sig;
-       static $CRC_size;
-       static $text_chunks;
+       /** @var string */
+       private static $pngSig;
+
+       /** @var int */
+       private static $crcSize;
+
+       /** @var array */
+       private static $textChunks;
 
        const VERSION = 1;
        const MAX_CHUNK_SIZE = 3145728; // 3 megabytes
 
        static function getMetadata( $filename ) {
-               self::$png_sig = pack( "C8", 137, 80, 78, 71, 13, 10, 26, 10 );
-               self::$CRC_size = 4;
+               self::$pngSig = pack( "C8", 137, 80, 78, 71, 13, 10, 26, 10 );
+               self::$crcSize = 4;
                /* based on list at http://owl.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData
                 * and http://www.w3.org/TR/PNG/#11keywords
                 */
-               self::$text_chunks = array(
+               self::$textChunks = array(
                        'xml:com.adobe.xmp' => 'xmp',
                        # Artist is unofficial. Author is the recommended
                        # keyword in the PNG spec. However some people output
                        # Artist so support both.
-                       'artist'      => 'Artist',
-                       'model'       => 'Model',
-                       'make'        => 'Make',
-                       'author'      => 'Artist',
-                       'comment'     => 'PNGFileComment',
+                       'artist' => 'Artist',
+                       'model' => 'Model',
+                       'make' => 'Make',
+                       'author' => 'Artist',
+                       'comment' => 'PNGFileComment',
                        'description' => 'ImageDescription',
-                       'title'       => 'ObjectName',
-                       'copyright'   => 'Copyright',
+                       'title' => 'ObjectName',
+                       'copyright' => 'Copyright',
                        # Source as in original device used to make image
                        # not as in who gave you the image
-                       'source'      => 'Model',
-                       'software'    => 'Software',
-                       'disclaimer'  => 'Disclaimer',
-                       'warning'     => 'ContentWarning',
-                       'url'         => 'Identifier', # Not sure if this is best mapping. Maybe WebStatement.
-                       'label'       => 'Label',
+                       'source' => 'Model',
+                       'software' => 'Software',
+                       'disclaimer' => 'Disclaimer',
+                       'warning' => 'ContentWarning',
+                       'url' => 'Identifier', # Not sure if this is best mapping. Maybe WebStatement.
+                       'label' => 'Label',
                        'creation time' => 'DateTimeDigitized',
                        /* Other potentially useful things - Document */
                );
@@ -90,7 +95,7 @@ class PNGMetadataExtractor {
 
                // Check for the PNG header
                $buf = fread( $fh, 8 );
-               if ( $buf != self::$png_sig ) {
+               if ( $buf != self::$pngSig ) {
                        throw new Exception( __METHOD__ . ": Not a valid PNG file; header: $buf" );
                }
 
@@ -181,9 +186,9 @@ class PNGMetadataExtractor {
 
                                        // Theoretically should be case-sensitive, but in practise...
                                        $items[1] = strtolower( $items[1] );
-                                       if ( !isset( self::$text_chunks[$items[1]] ) ) {
+                                       if ( !isset( self::$textChunks[$items[1]] ) ) {
                                                // Only extract textual chunks on our list.
-                                               fseek( $fh, self::$CRC_size, SEEK_CUR );
+                                               fseek( $fh, self::$crcSize, SEEK_CUR );
                                                continue;
                                        }
 
@@ -203,26 +208,23 @@ class PNGMetadataExtractor {
                                                        if ( $items[5] === false ) {
                                                                // decompression failed
                                                                wfDebug( __METHOD__ . ' Error decompressing iTxt chunk - ' . $items[1] . "\n" );
-                                                               fseek( $fh, self::$CRC_size, SEEK_CUR );
+                                                               fseek( $fh, self::$crcSize, SEEK_CUR );
                                                                continue;
                                                        }
-
                                                } else {
                                                        wfDebug( __METHOD__ . ' Skipping compressed png iTXt chunk due to lack of zlib,'
                                                                . " or potentially invalid compression method\n" );
-                                                       fseek( $fh, self::$CRC_size, SEEK_CUR );
+                                                       fseek( $fh, self::$crcSize, SEEK_CUR );
                                                        continue;
                                                }
                                        }
-                                       $finalKeyword = self::$text_chunks[$items[1]];
+                                       $finalKeyword = self::$textChunks[$items[1]];
                                        $text[$finalKeyword][$items[3]] = $items[5];
                                        $text[$finalKeyword]['_type'] = 'lang';
-
                                } else {
                                        // Error reading iTXt chunk
                                        throw new Exception( __METHOD__ . ": Read error on iTXt chunk" );
                                }
-
                        } elseif ( $chunk_type == 'tEXt' ) {
                                $buf = self::read( $fh, $chunk_size );
 
@@ -238,9 +240,9 @@ class PNGMetadataExtractor {
 
                                // Theoretically should be case-sensitive, but in practise...
                                $keyword = strtolower( $keyword );
-                               if ( !isset( self::$text_chunks[ $keyword ] ) ) {
+                               if ( !isset( self::$textChunks[$keyword] ) ) {
                                        // Don't recognize chunk, so skip.
-                                       fseek( $fh, self::$CRC_size, SEEK_CUR );
+                                       fseek( $fh, self::$crcSize, SEEK_CUR );
                                        continue;
                                }
                                wfSuppressWarnings();
@@ -251,10 +253,9 @@ class PNGMetadataExtractor {
                                        throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
                                }
 
-                               $finalKeyword = self::$text_chunks[$keyword];
+                               $finalKeyword = self::$textChunks[$keyword];
                                $text[$finalKeyword]['x-default'] = $content;
                                $text[$finalKeyword]['_type'] = 'lang';
-
                        } elseif ( $chunk_type == 'zTXt' ) {
                                if ( function_exists( 'gzuncompress' ) ) {
                                        $buf = self::read( $fh, $chunk_size );
@@ -271,16 +272,16 @@ class PNGMetadataExtractor {
                                        // Theoretically should be case-sensitive, but in practise...
                                        $keyword = strtolower( $keyword );
 
-                                       if ( !isset( self::$text_chunks[ $keyword ] ) ) {
+                                       if ( !isset( self::$textChunks[$keyword] ) ) {
                                                // Don't recognize chunk, so skip.
-                                               fseek( $fh, self::$CRC_size, SEEK_CUR );
+                                               fseek( $fh, self::$crcSize, SEEK_CUR );
                                                continue;
                                        }
                                        $compression = substr( $postKeyword, 0, 1 );
                                        $content = substr( $postKeyword, 1 );
                                        if ( $compression !== "\x00" ) {
                                                wfDebug( __METHOD__ . " Unrecognized compression method in zTXt ($keyword). Skipping.\n" );
-                                               fseek( $fh, self::$CRC_size, SEEK_CUR );
+                                               fseek( $fh, self::$crcSize, SEEK_CUR );
                                                continue;
                                        }
 
@@ -291,7 +292,7 @@ class PNGMetadataExtractor {
                                        if ( $content === false ) {
                                                // decompression failed
                                                wfDebug( __METHOD__ . ' Error decompressing zTXt chunk - ' . $keyword . "\n" );
-                                               fseek( $fh, self::$CRC_size, SEEK_CUR );
+                                               fseek( $fh, self::$crcSize, SEEK_CUR );
                                                continue;
                                        }
 
@@ -303,10 +304,9 @@ class PNGMetadataExtractor {
                                                throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
                                        }
 
-                                       $finalKeyword = self::$text_chunks[$keyword];
+                                       $finalKeyword = self::$textChunks[$keyword];
                                        $text[$finalKeyword]['x-default'] = $content;
                                        $text[$finalKeyword]['_type'] = 'lang';
-
                                } else {
                                        wfDebug( __METHOD__ . " Cannot decompress zTXt chunk due to lack of zlib. Skipping.\n" );
                                        fseek( $fh, $chunk_size, SEEK_CUR );
@@ -332,7 +332,6 @@ class PNGMetadataExtractor {
                                if ( $exifTime ) {
                                        $text['DateTime'] = $exifTime;
                                }
-
                        } elseif ( $chunk_type == 'pHYs' ) {
                                // how big pixels are (dots per meter).
                                if ( $chunk_size !== 9 ) {
@@ -359,13 +358,12 @@ class PNGMetadataExtractor {
                                                // 3 = dots per cm (from Exif).
                                        }
                                }
-
                        } elseif ( $chunk_type == "IEND" ) {
                                break;
                        } else {
                                fseek( $fh, $chunk_size, SEEK_CUR );
                        }
-                       fseek( $fh, self::$CRC_size, SEEK_CUR );
+                       fseek( $fh, self::$crcSize, SEEK_CUR );
                }
                fclose( $fh );
 
@@ -399,6 +397,7 @@ class PNGMetadataExtractor {
                                }
                        }
                }
+
                return array(
                        'frameCount' => $frameCount,
                        'loopCount' => $loopCount,
@@ -407,21 +406,22 @@ class PNGMetadataExtractor {
                        'bitDepth' => $bitDepth,
                        'colorType' => $colorType,
                );
-
        }
+
        /**
         * Read a chunk, checking to make sure its not too big.
         *
-        * @param $fh resource The file handle
-        * @param $size Integer size in bytes.
+        * @param resource $fh The file handle
+        * @param int $size Size in bytes.
         * @throws Exception if too big.
-        * @return String The chunk.
+        * @return string The chunk.
         */
        private static function read( $fh, $size ) {
                if ( $size > self::MAX_CHUNK_SIZE ) {
                        throw new Exception( __METHOD__ . ': Chunk size of ' . $size .
                                ' too big. Max size is: ' . self::MAX_CHUNK_SIZE );
                }
+
                return fread( $fh, $size );
        }
 }
index d6f8483..ce7fcbb 100644 (file)
 class SvgHandler extends ImageHandler {
        const SVG_METADATA_VERSION = 2;
 
-       /**
-        * A list of metadata tags that can be converted
-        * to the commonly used exif tags. This allows messages
-        * to be reused, and consistent tag names for {{#formatmetadata:..}}
+       /** @var array A list of metadata tags that can be converted
+        *  to the commonly used exif tags. This allows messages
+        *  to be reused, and consistent tag names for {{#formatmetadata:..}}
         */
        private static $metaConversion = array(
                'originalwidth' => 'ImageWidth',
@@ -45,6 +44,7 @@ class SvgHandler extends ImageHandler {
                global $wgSVGConverters, $wgSVGConverter;
                if ( !isset( $wgSVGConverters[$wgSVGConverter] ) ) {
                        wfDebug( "\$wgSVGConverter is invalid, disabling SVG rendering.\n" );
+
                        return false;
                } else {
                        return true;
@@ -60,11 +60,11 @@ class SvgHandler extends ImageHandler {
        }
 
        /**
-        * @param $file File
+        * @param File $file
         * @return bool
         */
        function isAnimatedImage( $file ) {
-               # TODO: detect animated SVGs
+               # @todo Detect animated SVGs
                $metadata = $file->getMetadata();
                if ( $metadata ) {
                        $metadata = $this->unpackMetadata( $metadata );
@@ -72,9 +72,47 @@ class SvgHandler extends ImageHandler {
                                return $metadata['animated'];
                        }
                }
+
                return false;
        }
 
+       /**
+        * Which languages (systemLanguage attribute) is supported.
+        *
+        * @note This list is not guaranteed to be exhaustive.
+        * To avoid OOM errors, we only look at first bit of a file.
+        * Thus all languages on this list are present in the file,
+        * but its possible for the file to have a language not on
+        * this list.
+        *
+        * @param File $file
+        * @return Array of language codes, or empty if no language switching supported.
+        */
+       public function getAvailableLanguages( File $file ) {
+               $metadata = $file->getMetadata();
+               $langList = array();
+               if ( $metadata ) {
+                       $metadata = $this->unpackMetadata( $metadata );
+                       if ( isset( $metadata['translations'] ) ) {
+                               foreach ( $metadata['translations'] as $lang => $langType ) {
+                                       if ( $langType === SvgReader::LANG_FULL_MATCH ) {
+                                               $langList[] = $lang;
+                                       }
+                               }
+                       }
+               }
+               return $langList;
+       }
+
+       /**
+        * What language to render file in if none selected.
+        *
+        * @return String language code.
+        */
+       public function getDefaultRenderLanguage( File $file ) {
+               return 'en';
+       }
+
        /**
         * We do not support making animated svg thumbnails
         */
@@ -83,8 +121,8 @@ class SvgHandler extends ImageHandler {
        }
 
        /**
-        * @param $image File
-        * @param  $params
+        * @param File $image
+        * @param array $params
         * @return bool
         */
        function normaliseParams( $image, &$params ) {
@@ -108,14 +146,15 @@ class SvgHandler extends ImageHandler {
                                $params['physicalHeight'] = $wgSVGMaxSize;
                        }
                }
+
                return true;
        }
 
        /**
-        * @param $image File
-        * @param  $dstPath
-        * @param  $dstUrl
-        * @param  $params
+        * @param File $image
+        * @param string $dstPath
+        * @param string $dstUrl
+        * @param array $params
         * @param int $flags
         * @return bool|MediaTransformError|ThumbnailImage|TransformParameterError
         */
@@ -127,7 +166,7 @@ class SvgHandler extends ImageHandler {
                $clientHeight = $params['height'];
                $physicalWidth = $params['physicalWidth'];
                $physicalHeight = $params['physicalHeight'];
-               $lang = isset( $params['lang'] ) ? $params['lang'] : 'en';
+               $lang = isset( $params['lang'] ) ? $params['lang'] : $this->getDefaultRenderLanguage( $image );
 
                if ( $flags & self::TRANSFORM_LATER ) {
                        return new ThumbnailImage( $image, $dstUrl, $dstPath, $params );
@@ -136,6 +175,7 @@ class SvgHandler extends ImageHandler {
                $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 );
                }
 
@@ -160,7 +200,7 @@ class SvgHandler extends ImageHandler {
         * @param string $dstPath
         * @param string $width
         * @param string $height
-        * @param string $lang Language code of the language to render the SVG in
+        * @param bool|string $lang Language code of the language to render the SVG in
         * @throws MWException
         * @return bool|MediaTransformError
         */
@@ -204,10 +244,10 @@ class SvgHandler extends ImageHandler {
                }
                $removed = $this->removeBadFile( $dstPath, $retval );
                if ( $retval != 0 || $removed ) {
-                       wfDebugLog( 'thumbnail', sprintf( 'thumbnail failed on %s: error %d "%s" from "%s"',
-                                       wfHostname(), $retval, trim( $err ), $cmd ) );
+                       $this->logErrorForExternalProcess( $retval, $err, $cmd );
                        return new MediaTransformError( 'thumbnail_error', $width, $height, $err );
                }
+
                return true;
        }
 
@@ -226,9 +266,9 @@ class SvgHandler extends ImageHandler {
        }
 
        /**
-        * @param $file File
-        * @param  $path
-        * @param bool $metadata
+        * @param File $file
+        * @param string $path Unused
+        * @param bool|array $metadata
         * @return array
         */
        function getImageSize( $file, $path, $metadata = false ) {
@@ -239,7 +279,7 @@ class SvgHandler extends ImageHandler {
 
                if ( isset( $metadata['width'] ) && isset( $metadata['height'] ) ) {
                        return array( $metadata['width'], $metadata['height'], 'SVG',
-                                       "width=\"{$metadata['width']}\" height=\"{$metadata['height']}\"" );
+                               "width=\"{$metadata['width']}\" height=\"{$metadata['height']}\"" );
                } else { // error
                        return array( 0, 0, 'SVG', "width=\"0\" height=\"0\"" );
                }
@@ -255,7 +295,7 @@ class SvgHandler extends ImageHandler {
         * a "nominal" resolution, and not a fixed one,
         * as well as so animation can be denoted.
         *
-        * @param $file File
+        * @param File $file
         * @return string
         */
        function getLongDesc( $file ) {
@@ -279,6 +319,11 @@ class SvgHandler extends ImageHandler {
                return $msg->parse();
        }
 
+       /**
+        * @param File $file
+        * @param string $filename
+        * @return string Serialised metadata
+        */
        function getMetadata( $file, $filename ) {
                $metadata = array( 'version' => self::SVG_METADATA_VERSION );
                try {
@@ -291,6 +336,7 @@ class SvgHandler extends ImageHandler {
                        );
                        wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
                }
+
                return serialize( $metadata );
        }
 
@@ -318,16 +364,18 @@ class SvgHandler extends ImageHandler {
                        // Old but compatible
                        return self::METADATA_COMPATIBLE;
                }
+
                return self::METADATA_GOOD;
        }
 
-       function visibleMetadataFields() {
+       protected function visibleMetadataFields() {
                $fields = array( 'objectname', 'imagedescription' );
+
                return $fields;
        }
 
        /**
-        * @param $file File
+        * @param File $file
         * @return array|bool
         */
        function formatMetadata( $file ) {
@@ -344,7 +392,7 @@ class SvgHandler extends ImageHandler {
                        return false;
                }
 
-               /* TODO: add a formatter
+               /* @todo Add a formatter
                $format = new FormatSVG( $metadata );
                $formatted = $format->getFormattedData();
                */
@@ -369,12 +417,13 @@ class SvgHandler extends ImageHandler {
                                $value
                        );
                }
+
                return $showMeta ? $result : false;
        }
 
        /**
         * @param string $name Parameter name
-        * @param $string $value Parameter value
+        * @param mixed $value Parameter value
         * @return bool Validity
         */
        function validateParam( $name, $value ) {
@@ -383,12 +432,15 @@ class SvgHandler extends ImageHandler {
                        return ( $value > 0 );
                } elseif ( $name == 'lang' ) {
                        // Validate $code
-                       if ( !Language::isValidBuiltinCode( $value ) ) {
+                       if ( $value === '' || !Language::isValidBuiltinCode( $value ) ) {
                                wfDebug( "Invalid user language code\n" );
+
                                return false;
                        }
+
                        return true;
                }
+
                // Only lang, width and height are acceptable keys
                return false;
        }
@@ -406,6 +458,7 @@ class SvgHandler extends ImageHandler {
                if ( !isset( $params['width'] ) ) {
                        return false;
                }
+
                return "$lang{$params['width']}px";
        }
 
@@ -425,14 +478,16 @@ class SvgHandler extends ImageHandler {
        }
 
        /**
-        * @param $params
+        * @param array $params
         * @return array
         */
        function getScriptParams( $params ) {
-               return array(
-                       'width' => $params['width'],
-                       'lang' => $params['lang'],
-               );
+               $scriptParams = array( 'width' => $params['width'] );
+               if ( isset( $params['lang'] ) ) {
+                       $scriptParams['lang'] = $params['lang'];
+               }
+
+               return $scriptParams;
        }
 
        public function getCommonMetaArray( File $file ) {
@@ -457,6 +512,7 @@ class SvgHandler extends ImageHandler {
                                $stdMetadata[$tag] = $value;
                        }
                }
+
                return $stdMetadata;
        }
 }
index 831e043..361eb94 100644 (file)
@@ -31,6 +31,7 @@
 class SVGMetadataExtractor {
        static function getMetadata( $filename ) {
                $svg = new SVGReader( $filename );
+
                return $svg->getMetadata();
        }
 }
@@ -42,10 +43,19 @@ class SVGReader {
        const DEFAULT_WIDTH = 512;
        const DEFAULT_HEIGHT = 512;
        const NS_SVG = 'http://www.w3.org/2000/svg';
+       const LANG_PREFIX_MATCH = 1;
+       const LANG_FULL_MATCH = 2;
 
+       /** @var null|XMLReader */
        private $reader = null;
+
+       /** @var bool */
        private $mDebug = false;
+
+       /** @var array */
        private $metadata = array();
+       private $languages = array();
+       private $languagePrefixes = array();
 
        /**
         * Constructor
@@ -148,7 +158,9 @@ class SVGReader {
 
                        $this->debug( "$tag" );
 
-                       if ( $isSVG && $tag == 'svg' && $type == XmlReader::END_ELEMENT && $this->reader->depth <= $exitDepth ) {
+                       if ( $isSVG && $tag == 'svg' && $type == XmlReader::END_ELEMENT
+                               && $this->reader->depth <= $exitDepth
+                       ) {
                                break;
                        } elseif ( $isSVG && $tag == 'title' ) {
                                $this->readField( $tag, 'title' );
@@ -164,10 +176,8 @@ class SVGReader {
                        } elseif ( $tag !== '#text' ) {
                                $this->debug( "Unhandled top-level XML tag $tag" );
 
-                               if ( !isset( $this->metadata['animated'] ) ) {
-                                       // Recurse into children of current tag, looking for animation.
-                                       $this->animateFilter( $tag );
-                               }
+                               // Recurse into children of current tag, looking for animation and languages.
+                               $this->animateFilterAndLang( $tag );
                        }
 
                        // Goto next element, which is sibling of current (Skip children).
@@ -176,14 +186,16 @@ class SVGReader {
 
                $this->reader->close();
 
+               $this->metadata['translations'] = $this->languages + $this->languagePrefixes;
+
                return true;
        }
 
        /**
         * Read a textelement from an element
         *
-        * @param string $name of the element that we are reading from
-        * @param string $metafield that we will fill with the result
+        * @param string $name Name of the element that we are reading from
+        * @param string $metafield Field that we will fill with the result
         */
        private function readField( $name, $metafield = null ) {
                $this->debug( "Read field $metafield" );
@@ -192,7 +204,10 @@ class SVGReader {
                }
                $keepReading = $this->reader->read();
                while ( $keepReading ) {
-                       if ( $this->reader->localName == $name && $this->reader->namespaceURI == self::NS_SVG && $this->reader->nodeType == XmlReader::END_ELEMENT ) {
+                       if ( $this->reader->localName == $name
+                               && $this->reader->namespaceURI == self::NS_SVG
+                               && $this->reader->nodeType == XmlReader::END_ELEMENT
+                       ) {
                                break;
                        } elseif ( $this->reader->nodeType == XmlReader::TEXT ) {
                                $this->metadata[$metafield] = trim( $this->reader->value );
@@ -204,7 +219,7 @@ class SVGReader {
        /**
         * Read an XML snippet from an element
         *
-        * @param string $metafield that we will fill with the result
+        * @param string $metafield Field that we will fill with the result
         * @throws MWException
         */
        private function readXml( $metafield = null ) {
@@ -212,21 +227,24 @@ class SVGReader {
                if ( !$metafield || $this->reader->nodeType != XmlReader::ELEMENT ) {
                        return;
                }
-               // TODO: find and store type of xml snippet. metadata['metadataType'] = "rdf"
+               // @todo Find and store type of xml snippet. metadata['metadataType'] = "rdf"
                if ( method_exists( $this->reader, 'readInnerXML' ) ) {
                        $this->metadata[$metafield] = trim( $this->reader->readInnerXML() );
                } else {
-                       throw new MWException( "The PHP XMLReader extension does not come with readInnerXML() method. Your libxml is probably out of date (need 2.6.20 or later)." );
+                       throw new MWException( "The PHP XMLReader extension does not come " .
+                               "with readInnerXML() method. Your libxml is probably out of " .
+                               "date (need 2.6.20 or later)." );
                }
                $this->reader->next();
        }
 
        /**
-        * Filter all children, looking for animate elements
+        * Filter all children, looking for animated elements.
+        * Also get a list of languages that can be targeted.
         *
-        * @param string $name of the element that we are reading from
+        * @param string $name Name of the element that we are reading from
         */
-       private function animateFilter( $name ) {
+       private function animateFilterAndLang( $name ) {
                $this->debug( "animate filter for tag $name" );
                if ( $this->reader->nodeType != XmlReader::ELEMENT ) {
                        return;
@@ -238,9 +256,38 @@ class SVGReader {
                $keepReading = $this->reader->read();
                while ( $keepReading ) {
                        if ( $this->reader->localName == $name && $this->reader->depth <= $exitDepth
-                               && $this->reader->nodeType == XmlReader::END_ELEMENT ) {
+                               && $this->reader->nodeType == XmlReader::END_ELEMENT
+                       ) {
                                break;
-                       } elseif ( $this->reader->namespaceURI == self::NS_SVG && $this->reader->nodeType == XmlReader::ELEMENT ) {
+                       } elseif ( $this->reader->namespaceURI == self::NS_SVG
+                               && $this->reader->nodeType == XmlReader::ELEMENT
+                       ) {
+
+                               $sysLang = $this->reader->getAttribute( 'systemLanguage' );
+                               if ( !is_null( $sysLang ) && $sysLang !== '' ) {
+                                       // See http://www.w3.org/TR/SVG/struct.html#SystemLanguageAttribute
+                                       $langList = explode( ',', $sysLang );
+                                       foreach ( $langList as $langItem ) {
+                                               $langItem = trim( $langItem );
+                                               if ( Language::isWellFormedLanguageTag( $langItem ) ) {
+                                                       $this->languages[$langItem] = self::LANG_FULL_MATCH;
+                                               }
+                                               // Note, the standard says that any prefix should work,
+                                               // here we do only the initial prefix, since that will catch
+                                               // 99% of cases, and we are going to compare against fallbacks.
+                                               // This differs mildly from how the spec says languages should be
+                                               // handled, however it matches better how the MediaWiki language
+                                               // preference is generally handled.
+                                               $dash = strpos( $langItem, '-' );
+                                               // Intentionally checking both !false and > 0 at the same time.
+                                               if ( $dash ) {
+                                                       $itemPrefix = substr( $langItem, 0, $dash );
+                                                       if ( Language::isWellFormedLanguageTag( $itemPrefix ) ) {
+                                                               $this->languagePrefixes[$itemPrefix] = self::LANG_PREFIX_MATCH;
+                                                       }
+                                               }
+                                       }
+                               }
                                switch ( $this->reader->localName ) {
                                        case 'script':
                                                // Normally we disallow files with
@@ -261,6 +308,7 @@ class SVGReader {
                }
        }
 
+       // @todo FIXME: Unused, remove?
        private function throwXmlError( $err ) {
                $this->debug( "FAILURE: $err" );
                wfDebug( "SVGReader XML error: $err\n" );
@@ -272,10 +320,12 @@ class SVGReader {
                }
        }
 
+       // @todo FIXME: Unused, remove?
        private function warn( $data ) {
                wfDebug( "SVGReader: $data\n" );
        }
 
+       // @todo FIXME: Unused, remove?
        private function notice( $data ) {
                wfDebug( "SVGReader WARN: $data\n" );
        }
@@ -333,8 +383,8 @@ class SVGReader {
         * http://www.w3.org/TR/SVG11/coords.html#UnitIdentifiers
         *
         * @param string $length CSS/SVG length.
-        * @param $viewportSize: Float optional scale for percentage units...
-        * @return float: length in pixels
+        * @param float|int $viewportSize Optional scale for percentage units...
+        * @return float Length in pixels
         */
        static function scaleSVGUnit( $length, $viewportSize = 512 ) {
                static $unitLength = array(
@@ -347,7 +397,7 @@ class SVGReader {
                        'em' => 16.0, // fake it?
                        'ex' => 12.0, // fake it?
                        '' => 1.0, // "User units" pixels by default
-                       );
+               );
                $matches = array();
                if ( preg_match( '/^\s*(\d+(?:\.\d+)?)(em|ex|px|pt|pc|cm|mm|in|%|)\s*$/', $length, $matches ) ) {
                        $length = floatval( $matches[1] );
index 55acb12..6964170 100644 (file)
@@ -27,7 +27,6 @@
  * @ingroup Media
  */
 class TiffHandler extends ExifBitmapHandler {
-
        /**
         * Conversion to PNG for inline display can be disabled here...
         * Note scaling should work with ImageMagick, but may not with GD scaling.
@@ -36,12 +35,12 @@ class TiffHandler extends ExifBitmapHandler {
         * InstantCommons will have thumbnails managed from the remote instance,
         * so we can skip this check.
         *
-        * @param $file
-        *
+        * @param File $file
         * @return bool
         */
        function canRender( $file ) {
                global $wgTiffThumbnailType;
+
                return (bool)$wgTiffThumbnailType
                        || $file->getRepo() instanceof ForeignAPIRepo;
        }
@@ -50,8 +49,7 @@ class TiffHandler extends ExifBitmapHandler {
         * Browsers don't support TIFF inline generally...
         * For inline display, we need to convert to PNG.
         *
-        * @param $file
-        *
+        * @param File $file
         * @return bool
         */
        function mustRender( $file ) {
@@ -59,13 +57,14 @@ class TiffHandler extends ExifBitmapHandler {
        }
 
        /**
-        * @param $ext
-        * @param $mime
-        * @param $params
+        * @param string $ext
+        * @param string $mime
+        * @param array $params
         * @return bool
         */
        function getThumbType( $ext, $mime, $params = null ) {
                global $wgTiffThumbnailType;
+
                return $wgTiffThumbnailType;
        }
 
@@ -85,12 +84,13 @@ class TiffHandler extends ExifBitmapHandler {
                                        throw new MWException( 'Metadata array is not an array' );
                                }
                                $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+
                                return serialize( $meta );
-                       }
-                       catch ( MWException $e ) {
+                       } catch ( MWException $e ) {
                                // BitmapMetadataHandler throws an exception in certain exceptional
                                // cases like if file does not exist.
                                wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+
                                return ExifBitmapHandler::BROKEN_FILE;
                        }
                } else {
index e77d384..41e6f03 100644 (file)
@@ -33,9 +33,8 @@
  * @ingroup Media
  */
 class XCFHandler extends BitmapHandler {
-
        /**
-        * @param $file
+        * @param File $file
         * @return bool
         */
        function mustRender( $file ) {
@@ -45,9 +44,9 @@ class XCFHandler extends BitmapHandler {
        /**
         * Render files as PNG
         *
-        * @param $ext
-        * @param $mime
-        * @param $params
+        * @param string $ext
+        * @param string $mime
+        * @param array $params
         * @return array
         */
        function getThumbType( $ext, $mime, $params = null ) {
@@ -57,8 +56,8 @@ class XCFHandler extends BitmapHandler {
        /**
         * Get width and height from the XCF header.
         *
-        * @param $image
-        * @param $filename
+        * @param File $image
+        * @param string $filename
         * @return array
         */
        function getImageSize( $image, $filename ) {
@@ -103,12 +102,12 @@ class XCFHandler extends BitmapHandler {
                #        (enum GimpImageBaseType in libgimpbase/gimpbaseenums.h)
                try {
                        $header = wfUnpack(
-                                 "A9magic"     # A: space padded
-                               . "/a5version"  # a: zero padded
-                               . "/Nwidth"     # \
-                               . "/Nheight"    # N: unsigned long 32bit big endian
-                               . "/Nbase_type" # /
-                       , $binaryHeader
+                               "A9magic" . # A: space padded
+                                       "/a5version" . # a: zero padded
+                                       "/Nwidth" . # \
+                                       "/Nheight" . # N: unsigned long 32bit big endian
+                                       "/Nbase_type", # /
+                               $binaryHeader
                        );
                } catch ( MWException $mwe ) {
                        return false;
@@ -117,26 +116,29 @@ class XCFHandler extends BitmapHandler {
                # Check values
                if ( $header['magic'] !== 'gimp xcf' ) {
                        wfDebug( __METHOD__ . " '$filename' has invalid magic signature.\n" );
+
                        return false;
                }
                # TODO: we might want to check for sane values of width and height
 
-               wfDebug( __METHOD__ . ": canvas size of '$filename' is {$header['width']} x {$header['height']} px\n" );
+               wfDebug( __METHOD__ .
+                       ": canvas size of '$filename' is {$header['width']} x {$header['height']} px\n" );
 
                # Forge a return array containing metadata information just like getimagesize()
                # See PHP documentation at: http://www.php.net/getimagesize
                $metadata = array();
                $metadata[0] = $header['width'];
                $metadata[1] = $header['height'];
-               $metadata[2] = null;   # IMAGETYPE constant, none exist for XCF.
+               $metadata[2] = null; # IMAGETYPE constant, none exist for XCF.
                $metadata[3] = sprintf(
                        'height="%s" width="%s"', $header['height'], $header['width']
                );
                $metadata['mime'] = 'image/x-xcf';
                $metadata['channels'] = null;
-               $metadata['bits'] = 8;  # Always 8-bits per color
+               $metadata['bits'] = 8; # Always 8-bits per color
 
-               assert( '7 == count($metadata); # return array must contains 7 elements just like getimagesize() return' );
+               assert( '7 == count($metadata); ' .
+                       '# return array must contains 7 elements just like getimagesize() return' );
 
                return $metadata;
        }
@@ -144,6 +146,8 @@ class XCFHandler extends BitmapHandler {
        /**
         * Must use "im" for XCF
         *
+        * @param string $dstPath
+        * @param bool $checkDstPath
         * @return string
         */
        protected static function getScalerType( $dstPath, $checkDstPath = true ) {
index 3b31053..08d416a 100644 (file)
  *
  * The public methods one would call in this class are
  * - parse( $content )
- *     Reads in xmp content.
- *     Can potentially be called multiple times with partial data each time.
+ *    Reads in xmp content.
+ *    Can potentially be called multiple times with partial data each time.
  * - parseExtended( $content )
- *     Reads XMPExtended blocks (jpeg files only).
+ *    Reads XMPExtended blocks (jpeg files only).
  * - getResults
- *     Outputs a results array.
+ *    Outputs a results array.
  *
  * Note XMP kind of looks like rdf. They are not the same thing - XMP is
  * encoded as a specific subset of rdf. This class can read XMP. It cannot
  *
  */
 class XMPReader {
+       /** @var array XMP item configuration array */
+       protected $items;
+
+       /** @var array Array to hold the current element (and previous element, and so on) */
+       private $curItem = array();
+
+       /** @var bool|string The structure name when processing nested structures. */
+       private $ancestorStruct = false;
+
+       /** @var bool|string Temporary holder for character data that appears in xmp doc. */
+       private $charContent = false;
+
+       /** @var array Stores the state the xmpreader is in (see MODE_FOO constants) */
+       private $mode = array();
+
+       /** @var array Array to hold results */
+       private $results = array();
+
+       /** @var bool If we're doing a seq or bag. */
+       private $processingArray = false;
 
-       private $curItem = array();        // array to hold the current element (and previous element, and so on)
-       private $ancestorStruct = false;   // the structure name when processing nested structures.
-       private $charContent = false;      // temporary holder for character data that appears in xmp doc.
-       private $mode = array();           // stores the state the xmpreader is in (see MODE_FOO constants)
-       private $results = array();        // array to hold results
-       private $processingArray = false;  // if we're doing a seq or bag.
-       private $itemLang = false;         // used for lang alts only
+       /** @var bool|string Used for lang alts only */
+       private $itemLang = false;
 
+       /** @var resource A resource handle for the XML parser */
        private $xmlParser;
+
+       /** @var bool|string Character set like 'UTF-8' */
        private $charset = false;
-       private $extendedXMPOffset = 0;
 
-       protected $items;
+       /** @var int */
+       private $extendedXMPOffset = 0;
 
        /**
         * These are various mode constants.
@@ -105,8 +123,8 @@ class XMPReader {
                $this->items = XMPInfo::getItems();
 
                $this->resetXMLParser();
-
        }
+
        /**
         * Main use is if a single item has multiple xmp documents describing it.
         * For example in jpeg's with extendedXMP
@@ -142,7 +160,7 @@ class XMPReader {
         * the array, and transform any metadata that is special-cased.
         *
         * @return Array array of results as an array of arrays suitable for
-        *      FormatMetadata::getFormattedData().
+        *    FormatMetadata::getFormattedData().
         */
        public function getResults() {
                // xmp-special is for metadata that affects how stuff
@@ -237,10 +255,10 @@ class XMPReader {
         * debug log, blanks result array and returns false.
         *
         * @param string $content XMP data
-        * @param $allOfIt Boolean: If this is all the data (true) or if its split up (false). Default true
-        * @param $reset Boolean: does xml parser need to be reset. Default false
+        * @param bool $allOfIt If this is all the data (true) or if its split up (false). Default true
+        * @param bool $reset Does xml parser need to be reset. Default false
         * @throws MWException
-        * @return Boolean success.
+        * @return bool Success.
         */
        public function parse( $content, $allOfIt = true, $reset = false ) {
                if ( $reset ) {
@@ -301,8 +319,10 @@ class XMPReader {
                } catch ( MWException $e ) {
                        wfDebugLog( 'XMP', 'XMP parse error: ' . $e );
                        $this->results = array();
+
                        return false;
                }
+
                return true;
        }
 
@@ -311,36 +331,43 @@ class XMPReader {
         * @todo In serious need of testing
         * @see http://www.adobe.ge/devnet/xmp/pdfs/XMPSpecificationPart3.pdf XMP spec part 3 page 20
         * @param string $content XMPExtended block minus the namespace signature
-        * @return Boolean If it succeeded.
+        * @return bool If it succeeded.
         */
        public function parseExtended( $content ) {
                // @todo FIXME: This is untested. Hard to find example files
                // or programs that make such files..
                $guid = substr( $content, 0, 32 );
                if ( !isset( $this->results['xmp-special']['HasExtendedXMP'] )
-                       || $this->results['xmp-special']['HasExtendedXMP'] !== $guid ) {
-                       wfDebugLog( 'XMP', __METHOD__ . " Ignoring XMPExtended block due to wrong guid (guid= '$guid')" );
+                       || $this->results['xmp-special']['HasExtendedXMP'] !== $guid
+               ) {
+                       wfDebugLog( 'XMP', __METHOD__ .
+                               " Ignoring XMPExtended block due to wrong guid (guid= '$guid')" );
+
                        return false;
                }
                $len = unpack( 'Nlength/Noffset', substr( $content, 32, 8 ) );
 
                if ( !$len || $len['length'] < 4 || $len['offset'] < 0 || $len['offset'] > $len['length'] ) {
                        wfDebugLog( 'XMP', __METHOD__ . 'Error reading extended XMP block, invalid length or offset.' );
+
                        return false;
                }
 
-               // we're not very robust here. we should accept it in the wrong order. To quote
-               // the xmp standard:
-               // "A JPEG writer should write the ExtendedXMP marker segments in order, immediately following the
-               // StandardXMP. However, the JPEG standard does not require preservation of marker segment order. A
-               // robust JPEG reader should tolerate the marker segments in any order."
+               // we're not very robust here. we should accept it in the wrong order.
+               // To quote the XMP standard:
+               // "A JPEG writer should write the ExtendedXMP marker segments in order,
+               // immediately following the StandardXMP. However, the JPEG standard
+               // does not require preservation of marker segment order. A robust JPEG
+               // reader should tolerate the marker segments in any order."
                //
-               // otoh the probability that an image will have more than 128k of metadata is rather low...
-               // so the probability that it will have > 128k, and be in the wrong order is very low...
+               // otoh the probability that an image will have more than 128k of
+               // metadata is rather low... so the probability that it will have
+               // > 128k, and be in the wrong order is very low...
 
                if ( $len['offset'] !== $this->extendedXMPOffset ) {
                        wfDebugLog( 'XMP', __METHOD__ . 'Ignoring XMPExtended block due to wrong order. (Offset was '
                                . $len['offset'] . ' but expected ' . $this->extendedXMPOffset . ')' );
+
                        return false;
                }
 
@@ -361,6 +388,7 @@ class XMPReader {
                }
 
                wfDebugLog( 'XMP', __METHOD__ . 'Parsing a XMPExtended block' );
+
                return $this->parse( $actualContent, $atEnd );
        }
 
@@ -376,7 +404,7 @@ class XMPReader {
         * <exif:DigitalZoomRatio>0/10</exif:DigitalZoomRatio>
         * and are processing the 0/10 bit.
         *
-        * @param $parser XMLParser reference to the xml parser
+        * @param XMLParser $parser XMLParser reference to the xml parser
         * @param string $data Character data
         * @throws MWException on invalid data
         */
@@ -407,7 +435,6 @@ class XMPReader {
                } else {
                        $this->charContent .= $data;
                }
-
        }
 
        /** When we hit a closing element in MODE_IGNORE
@@ -436,7 +463,7 @@ class XMPReader {
         * Or it could be if we hit the end element of a property
         * of a compound data structure (like a member of an array).
         *
-        * @param string $elm namespace, space, and tag name.
+        * @param string $elm Namespace, space, and tag name.
         */
        private function endElementModeSimple( $elm ) {
                if ( $this->charContent !== false ) {
@@ -453,7 +480,6 @@ class XMPReader {
                }
                array_shift( $this->curItem );
                array_shift( $this->mode );
-
        }
 
        /**
@@ -471,7 +497,7 @@ class XMPReader {
         *
         * This method is called when we hit the "</exif:ISOSpeedRatings>" tag.
         *
-        * @param string $elm namespace . space . tag name.
+        * @param string $elm Namespace . space . tag name.
         * @throws MWException
         */
        private function endElementNested( $elm ) {
@@ -482,7 +508,8 @@ class XMPReader {
                        && !( $elm === self::NS_RDF . ' Description'
                                && $this->mode[0] === self::MODE_STRUCT )
                ) {
-                       throw new MWException( "nesting mismatch. got a </$elm> but expected a </" . $this->curItem[0] . '>' );
+                       throw new MWException( "nesting mismatch. got a </$elm> but expected a </" .
+                               $this->curItem[0] . '>' );
                }
 
                // Validate structures.
@@ -499,7 +526,6 @@ class XMPReader {
                        if ( !isset( $this->results['xmp-' . $info['map_group']][$finalName] ) ) {
                                // This can happen if all the members of the struct failed validation.
                                wfDebugLog( 'XMP', __METHOD__ . " <$ns:$tag> has no valid members." );
-
                        } elseif ( is_callable( $validate ) ) {
                                $val =& $this->results['xmp-' . $info['map_group']][$finalName];
                                call_user_func_array( $validate, array( $info, &$val, false ) );
@@ -538,7 +564,7 @@ class XMPReader {
         * (For comparison, we call endElementModeSimple when we
         * hit the "</rdf:li>")
         *
-        * @param string $elm namespace . ' ' . element name
+        * @param string $elm Namespace . ' ' . element name
         * @throws MWException
         */
        private function endElementModeLi( $elm ) {
@@ -552,6 +578,7 @@ class XMPReader {
 
                if ( !isset( $this->results['xmp-' . $info['map_group']][$finalName] ) ) {
                        wfDebugLog( 'XMP', __METHOD__ . " Empty compund element $finalName." );
+
                        return;
                }
 
@@ -564,7 +591,6 @@ class XMPReader {
                        if ( $info['mode'] === self::MODE_LANG ) {
                                $this->results['xmp-' . $info['map_group']][$finalName]['_type'] = 'lang';
                        }
-
                } else {
                        throw new MWException( __METHOD__ . " expected </rdf:seq> or </rdf:bag> but instead got $elm." );
                }
@@ -578,13 +604,14 @@ class XMPReader {
         * Qualifiers aren't all that common, and we don't do anything
         * with them.
         *
-        * @param string $elm namespace and element
+        * @param string $elm Namespace and element
         */
        private function endElementModeQDesc( $elm ) {
 
                if ( $elm === self::NS_RDF . ' value' ) {
                        list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
                        $this->saveValue( $ns, $tag, $this->charContent );
+
                        return;
                } else {
                        array_shift( $this->mode );
@@ -601,15 +628,15 @@ class XMPReader {
         * Ignores the outer wrapping elements that are optional in
         * xmp and have no meaning.
         *
-        * @param $parser XMLParser
-        * @param string $elm namespace . ' ' . element name
+        * @param XMLParser $parser
+        * @param string $elm Namespace . ' ' . element name
         * @throws MWException
         */
        function endElement( $parser, $elm ) {
                if ( $elm === ( self::NS_RDF . ' RDF' )
                        || $elm === 'adobe:ns:meta/ xmpmeta'
-                       || $elm === 'adobe:ns:meta/ xapmeta' )
-               {
+                       || $elm === 'adobe:ns:meta/ xapmeta'
+               {
                        // ignore these.
                        return;
                }
@@ -626,6 +653,7 @@ class XMPReader {
                        // that forgets the namespace on some things.
                        // (Luckily they are unimportant things).
                        wfDebugLog( 'XMP', __METHOD__ . " Encountered </$elm> which has no namespace. Skipping." );
+
                        return;
                }
 
@@ -684,7 +712,7 @@ class XMPReader {
         * in which case we add it to the item stack, so we can ignore things
         * that are nested, correctly.
         *
-        * @param string $elm namespace . ' ' . tag name
+        * @param string $elm Namespace . ' ' . tag name
         */
        private function startElementModeIgnore( $elm ) {
                if ( $elm === $this->curItem[0] ) {
@@ -697,7 +725,7 @@ class XMPReader {
         *  Start element in MODE_BAG (unordered array)
         * this should always be <rdf:Bag>
         *
-        * @param string $elm namespace . ' ' . tag
+        * @param string $elm Namespace . ' ' . tag
         * @throws MWException if we have an element that's not <rdf:Bag>
         */
        private function startElementModeBag( $elm ) {
@@ -706,14 +734,13 @@ class XMPReader {
                } else {
                        throw new MWException( "Expected <rdf:Bag> but got $elm." );
                }
-
        }
 
        /**
         * Start element in MODE_SEQ (ordered array)
         * this should always be <rdf:Seq>
         *
-        * @param string $elm namespace . ' ' . tag
+        * @param string $elm Namespace . ' ' . tag
         * @throws MWException if we have an element that's not <rdf:Seq>
         */
        private function startElementModeSeq( $elm ) {
@@ -727,7 +754,6 @@ class XMPReader {
                } else {
                        throw new MWException( "Expected <rdf:Seq> but got $elm." );
                }
-
        }
 
        /**
@@ -741,7 +767,7 @@ class XMPReader {
         * which are really only used for thumbnails, which
         * we don't care about.
         *
-        * @param string $elm namespace . ' ' . tag
+        * @param string $elm Namespace . ' ' . tag
         * @throws MWException if we have an element that's not <rdf:Alt>
         */
        private function startElementModeLang( $elm ) {
@@ -750,7 +776,6 @@ class XMPReader {
                } else {
                        throw new MWException( "Expected <rdf:Seq> but got $elm." );
                }
-
        }
 
        /**
@@ -767,7 +792,7 @@ class XMPReader {
         *
         * This method is called when processing the <rdf:Description> element
         *
-        * @param string $elm namespace and tag names separated by space.
+        * @param string $elm Namespace and tag names separated by space.
         * @param array $attribs Attributes of the element.
         * @throws MWException
         */
@@ -784,15 +809,14 @@ class XMPReader {
                } elseif ( $elm === self::NS_RDF . ' value' ) {
                        // This should not be here.
                        throw new MWException( __METHOD__ . ' Encountered <rdf:value> where it was unexpected.' );
-
                } else {
                        // something else we don't recognize, like a qualifier maybe.
-                       wfDebugLog( 'XMP', __METHOD__ . " Encountered element <$elm> where only expecting character data as value of " . $this->curItem[0] );
+                       wfDebugLog( 'XMP', __METHOD__ .
+                               " Encountered element <$elm> where only expecting character data as value of " .
+                               $this->curItem[0] );
                        array_unshift( $this->mode, self::MODE_IGNORE );
                        array_unshift( $this->curItem, $elm );
-
                }
-
        }
 
        /**
@@ -806,7 +830,7 @@ class XMPReader {
         *   </exif:DigitalZoomRatio>
         * Called when processing the <rdf:value> or <foo:someQualifier>.
         *
-        * @param string $elm namespace and tag name separated by a space.
+        * @param string $elm Namespace and tag name separated by a space.
         *
         */
        private function startElementModeQDesc( $elm ) {
@@ -846,6 +870,7 @@ class XMPReader {
 
                                        array_unshift( $this->mode, self::MODE_IGNORE );
                                        array_unshift( $this->curItem, $ns . ' ' . $tag );
+
                                        return;
                                }
                                $mode = $this->items[$ns][$tag]['mode'];
@@ -865,9 +890,9 @@ class XMPReader {
                                wfDebugLog( 'XMP', __METHOD__ . " Ignoring unrecognized element <$ns:$tag>." );
                                array_unshift( $this->mode, self::MODE_IGNORE );
                                array_unshift( $this->curItem, $ns . ' ' . $tag );
+
                                return;
                        }
-
                }
                // process attributes
                $this->doAttribs( $attribs );
@@ -887,9 +912,9 @@ class XMPReader {
         * <exif:Flash rdf:parseType='Resource'> <exif:Fired>True</exif:Fired>
         *  <exif:Mode>1</exif:Mode></exif:Flash>
         *
-        * @param string $ns namespace
-        * @param string $tag tag name (no ns)
-        * @param array $attribs array of attribs w/ values.
+        * @param string $ns Namespace
+        * @param string $tag Tag name (no ns)
+        * @param array $attribs Array of attribs w/ values.
         * @throws MWException
         */
        private function startElementModeStruct( $ns, $tag, $attribs ) {
@@ -897,8 +922,8 @@ class XMPReader {
 
                        if ( isset( $this->items[$ns][$tag] ) ) {
                                if ( isset( $this->items[$ns][$this->ancestorStruct]['children'] )
-                                       && !isset( $this->items[$ns][$this->ancestorStruct]['children'][$tag] ) )
-                               {
+                                       && !isset( $this->items[$ns][$this->ancestorStruct]['children'][$tag] )
+                               {
                                        // This assumes that we don't have inter-namespace nesting
                                        // which we don't in all the properties we're interested in.
                                        throw new MWException( " <$tag> appeared nested in <" . $this->ancestorStruct
@@ -909,14 +934,15 @@ class XMPReader {
                                if ( $this->charContent !== false ) {
                                        // Something weird.
                                        // Should not happen in valid XMP.
-                                       throw new MWException( "tag <$tag> nested in non-whitespace characters (" . $this->charContent . ")." );
+                                       throw new MWException( "tag <$tag> nested in non-whitespace characters (" .
+                                               $this->charContent . ")." );
                                }
                        } else {
                                array_unshift( $this->mode, self::MODE_IGNORE );
                                array_unshift( $this->curItem, $elm );
+
                                return;
                        }
-
                }
 
                if ( $ns === self::NS_RDF && $tag === 'Description' ) {
@@ -935,7 +961,7 @@ class XMPReader {
         *   </rdf:Seq> </exif:ISOSpeedRatings>
         * This method is called when we hit the <rdf:li> element.
         *
-        * @param string $elm namespace . ' ' . tagname
+        * @param string $elm Namespace . ' ' . tagname
         * @param array $attribs Attributes. (needed for BAGSTRUCTS)
         * @throws MWException if gets a tag other than <rdf:li>
         */
@@ -965,7 +991,6 @@ class XMPReader {
                                ? $this->items[$curNS][$curTag]['map_name'] : $curTag;
 
                        $this->doAttribs( $attribs );
-
                } else {
                        // Normal BAG or SEQ containing simple values.
                        array_unshift( $this->mode, self::MODE_SIMPLE );
@@ -974,7 +999,6 @@ class XMPReader {
                        array_unshift( $this->curItem, $this->curItem[0] );
                        $this->processingArray = true;
                }
-
        }
 
        /**
@@ -987,17 +1011,17 @@ class XMPReader {
         *
         * This method is called when we hit the <rdf:li> element.
         *
-        * @param string $elm namespace . ' ' . tag
-        * @param array $attribs array of elements (most importantly xml:lang)
-        * @throws MWException if gets a tag other than <rdf:li> or if no xml:lang
+        * @param string $elm Namespace . ' ' . tag
+        * @param array $attribs Array of elements (most importantly xml:lang)
+        * @throws MWException If gets a tag other than <rdf:li> or if no xml:lang
         */
        private function startElementModeLiLang( $elm, $attribs ) {
                if ( $elm !== self::NS_RDF . ' li' ) {
                        throw new MWException( __METHOD__ . " <rdf:li> expected but got $elm." );
                }
                if ( !isset( $attribs[self::NS_XML . ' lang'] )
-                       || !preg_match( '/^[-A-Za-z0-9]{2,}$/D', $attribs[self::NS_XML . ' lang'] ) )
-               {
+                       || !preg_match( '/^[-A-Za-z0-9]{2,}$/D', $attribs[self::NS_XML . ' lang'] )
+               {
                        throw new MWException( __METHOD__
                                . " <rdf:li> did not contain, or has invalid xml:lang attribute in lang alternative" );
                }
@@ -1018,16 +1042,16 @@ class XMPReader {
         * Also does some initial set up for the wrapper element
         *
         * @param $parser XMLParser
-        * @param string $elm namespace "<space>" element
-        * @param array $attribs attribute name => value
+        * @param string $elm Namespace "<space>" element
+        * @param array $attribs Attribute name => value
         * @throws MWException
         */
        function startElement( $parser, $elm, $attribs ) {
 
                if ( $elm === self::NS_RDF . ' RDF'
                        || $elm === 'adobe:ns:meta/ xmpmeta'
-                       || $elm === 'adobe:ns:meta/ xapmeta' )
-               {
+                       || $elm === 'adobe:ns:meta/ xapmeta'
+               {
                        /* ignore. */
                        return;
                } elseif ( $elm === self::NS_RDF . ' Description' ) {
@@ -1049,6 +1073,7 @@ class XMPReader {
                if ( strpos( $elm, ' ' ) === false ) {
                        // This probably shouldn't happen.
                        wfDebugLog( 'XMP', __METHOD__ . " Encountered <$elm> which has no namespace. Skipping." );
+
                        return;
                }
 
@@ -1097,6 +1122,7 @@ class XMPReader {
                }
        }
 
+       // @codingStandardsIgnoreStart Long line that cannot be broken
        /**
         * Process attributes.
         * Simple values can be stored as either a tag or attribute
@@ -1109,18 +1135,18 @@ class XMPReader {
         * <rdf:Description rdf:about="" xmlns:exif="http://ns.adobe.com/exif/1.0/" exif:DigitalZoomRatio="0/10">
         * @endcode
         *
-        * @param array $attribs attribute=>value array.
+        * @param array $attribs Array attribute=>value
         * @throws MWException
         */
+       // @codingStandardsIgnoreEnd
        private function doAttribs( $attribs ) {
-
                // first check for rdf:parseType attribute, as that can change
                // how the attributes are interperted.
 
                if ( isset( $attribs[self::NS_RDF . ' parseType'] )
                        && $attribs[self::NS_RDF . ' parseType'] === 'Resource'
-                       && $this->mode[0] === self::MODE_SIMPLE )
-               {
+                       && $this->mode[0] === self::MODE_SIMPLE
+               {
                        // this is equivalent to having an inner rdf:Description
                        $this->mode[0] = self::MODE_QDESC;
                }
@@ -1158,9 +1184,9 @@ class XMPReader {
         * $this->processingArray to determine what name to
         * save the value under. (in addition to $tag).
         *
-        * @param string $ns namespace of tag this is for
-        * @param string $tag tag name
-        * @param string $val value to save
+        * @param string $ns Namespace of tag this is for
+        * @param string $tag Tag name
+        * @param string $val Value to save
         */
        private function saveValue( $ns, $tag, $val ) {
 
@@ -1177,6 +1203,7 @@ class XMPReader {
                                // is to be consistent between here and validating structures.
                                if ( is_null( $val ) ) {
                                        wfDebugLog( 'XMP', __METHOD__ . " <$ns:$tag> failed validation." );
+
                                        return;
                                }
                        } else {
index afc9ece..3700556 100644 (file)
@@ -27,9 +27,8 @@
  * extract.
  */
 class XMPInfo {
-
-       /** get the items array
-        * @return Array XMP item configuration array.
+       /** Get the items array
+        * @return array XMP item configuration array.
         */
        public static function getItems() {
                if ( !self::$ranHooks ) {
@@ -38,6 +37,7 @@ class XMPInfo {
                        wfRunHooks( 'XMPGetInfo', array( &self::$items ) );
                        self::$ranHooks = true; // Only want to do this once.
                }
+
                return self::$items;
        }
 
@@ -53,382 +53,388 @@ class XMPInfo {
         * each containing an array of tags
         * each tag is an array of information about the
         * tag, including:
-        *       * map_group - what group (used for precedence during conflicts)
-        *       * mode - What type of item (self::MODE_SIMPLE usually, see above for all values)
-        *       * validate - method to validate input. Could also post-process the input. A string value is assumed to be a static method of XMPValidate. Can also take a array( 'className', 'methodName' ).
-        *       * choices  - array of potential values (format of 'value' => true ). Only used with validateClosed
-        *      * rangeLow and rangeHigh - alternative to choices for numeric ranges. Again for validateClosed only.
-        *       * children - for MODE_STRUCT items, allowed children.
-        *      * structPart - Indicates that this element can only appear as a member of a structure.
+        *   * map_group - What group (used for precedence during conflicts).
+        *   * mode - What type of item (self::MODE_SIMPLE usually, see above for
+        *     all values).
+        *   * validate - Method to validate input. Could also post-process the
+        *     input. A string value is assumed to be a static method of
+        *     XMPValidate. Can also take a array( 'className', 'methodName' ).
+        *   * choices - Array of potential values (format of 'value' => true ).
+        *     Only used with validateClosed.
+        *   * rangeLow and rangeHigh - Alternative to choices for numeric ranges.
+        *     Again for validateClosed only.
+        *   * children - For MODE_STRUCT items, allowed children.
+        *   * structPart - Indicates that this element can only appear as a member
+        *     of a structure.
         *
-        * currently this just has a bunch of exif values as this class is only half-done
+        * Currently this just has a bunch of EXIF values as this class is only half-done.
         */
        static private $items = array(
                'http://ns.adobe.com/exif/1.0/' => array(
                        'ApertureValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'BrightnessValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'CompressedBitsPerPixel' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'DigitalZoomRatio' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ExposureBiasValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ExposureIndex' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ExposureTime' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FlashEnergy' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
                        'FNumber' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FocalLength' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FocalPlaneXResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'FocalPlaneYResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSAltitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
                        'GPSDestBearing' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSDestDistance' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSDOP' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSImgDirection' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSSpeed' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'GPSTrack' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
-                       'MaxApertureValue'  => array(
+                       'MaxApertureValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        'ShutterSpeedValue' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
-                       'SubjectDistance'   => array(
+                       'SubjectDistance' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational'
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational'
                        ),
                        /* Flash */
-                       'Flash'             => array(
-                               'mode'      => XMPReader::MODE_STRUCT,
-                               'children'  => array(
-                                       'Fired'      => true,
-                                       'Function'   => true,
-                                       'Mode'       => true,
+                       'Flash' => array(
+                               'mode' => XMPReader::MODE_STRUCT,
+                               'children' => array(
+                                       'Fired' => true,
+                                       'Function' => true,
+                                       'Mode' => true,
                                        'RedEyeMode' => true,
-                                       'Return'     => true,
+                                       'Return' => true,
                                ),
-                               'validate'  => 'validateFlash',
+                               'validate' => 'validateFlash',
                                'map_group' => 'exif',
                        ),
-                       'Fired'             => array(
+                       'Fired' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateBoolean',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'validate' => 'validateBoolean',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
-                       'Function'          => array(
+                       'Function' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateBoolean',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'validate' => 'validateBoolean',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
-                       'Mode'              => array(
+                       'Mode' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateClosed',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'choices'   => array( '0' => true, '1' => true,
-                                               '2' => true, '3' => true ),
-                               'structPart'=> true,
+                               'validate' => 'validateClosed',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'choices' => array( '0' => true, '1' => true,
+                                       '2' => true, '3' => true ),
+                               'structPart' => true,
                        ),
-                       'Return'            => array(
+                       'Return' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateClosed',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'choices'   => array( '0' => true,
-                                               '2' => true, '3' => true ),
-                               'structPart'=> true,
+                               'validate' => 'validateClosed',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'choices' => array( '0' => true,
+                                       '2' => true, '3' => true ),
+                               'structPart' => true,
                        ),
-                       'RedEyeMode'        => array(
+                       'RedEyeMode' => array(
                                'map_group' => 'exif',
-                               'validate'  => 'validateBoolean',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'validate' => 'validateBoolean',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        /* End Flash */
-                       'ISOSpeedRatings'   => array(
+                       'ISOSpeedRatings' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger'
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger'
                        ),
                        /* end rational things */
-                       'ColorSpace'   => array(
+                       'ColorSpace' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '65535' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '65535' => true ),
                        ),
-                       'ComponentsConfiguration'   => array(
+                       'ComponentsConfiguration' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '2' => true, '3' => true, '4' => true,
-                                               '5' => true, '6' => true )
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '2' => true, '3' => true, '4' => true,
+                                       '5' => true, '6' => true )
                        ),
-                       'Contrast'          => array(
+                       'Contrast' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true, '2' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true, '2' => true )
                        ),
-                       'CustomRendered'    => array(
+                       'CustomRendered' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true )
                        ),
-                       'DateTimeOriginal'  => array(
+                       'DateTimeOriginal' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
                        'DateTimeDigitized' => array( /* xmp:CreateDate */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
                        /* todo: there might be interesting information in
                         * exif:DeviceSettingDescription, but need to find an
                         * example
                         */
-                       'ExifVersion'       => array(
+                       'ExifVersion' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'ExposureMode'      => array(
+                       'ExposureMode' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 2,
                        ),
-                       'ExposureProgram'   => array(
+                       'ExposureProgram' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 8,
                        ),
-                       'FileSource'        => array(
+                       'FileSource' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '3' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '3' => true )
                        ),
-                       'FlashpixVersion'   => array(
+                       'FlashpixVersion' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'FocalLengthIn35mmFilm' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
                        'FocalPlaneResolutionUnit' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '3' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '3' => true ),
                        ),
-                       'GainControl'       => array(
+                       'GainControl' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 4,
                        ),
                        /* this value is post-processed out later */
-                       'GPSAltitudeRef'    => array(
+                       'GPSAltitudeRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true ),
                        ),
                        'GPSAreaInformation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'GPSDestBearingRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'T' => true, 'M' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'T' => true, 'M' => true ),
                        ),
                        'GPSDestDistanceRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'K' => true, 'M' => true,
-                                               'N' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'K' => true, 'M' => true,
+                                       'N' => true ),
                        ),
-                       'GPSDestLatitude'   => array(
+                       'GPSDestLatitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSDestLongitude'  => array(
+                       'GPSDestLongitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSDifferential'   => array(
+                       'GPSDifferential' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true ),
                        ),
                        'GPSImgDirectionRef' => array(
-                               'map_group'  => 'exif',
-                               'mode'       => XMPReader::MODE_SIMPLE,
-                               'validate'   => 'validateClosed',
-                               'choices'    => array( 'T' => true, 'M' => true ),
+                               'map_group' => 'exif',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'T' => true, 'M' => true ),
                        ),
-                       'GPSLatitude'       => array(
+                       'GPSLatitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSLongitude'      => array(
+                       'GPSLongitude' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateGPS',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateGPS',
                        ),
-                       'GPSMapDatum'       => array(
+                       'GPSMapDatum' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'GPSMeasureMode'    => array(
+                       'GPSMeasureMode' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '3' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '3' => true )
                        ),
                        'GPSProcessingMethod' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'GPSSatellites'     => array(
+                       'GPSSatellites' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'GPSSpeedRef'       => array(
+                       'GPSSpeedRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'K' => true, 'M' => true,
-                                               'N' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'K' => true, 'M' => true,
+                                       'N' => true ),
                        ),
-                       'GPSStatus'         => array(
+                       'GPSStatus' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'A' => true, 'V' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'A' => true, 'V' => true )
                        ),
-                       'GPSTimeStamp'      => array(
+                       'GPSTimeStamp' => array(
                                'map_group' => 'exif',
                                // Note: in exif, GPSDateStamp does not include
                                // the time, where here it does.
-                               'map_name'  => 'GPSDateStamp',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'map_name' => 'GPSDateStamp',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
-                       'GPSTrackRef'       => array(
+                       'GPSTrackRef' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( 'T' => true, 'M' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( 'T' => true, 'M' => true )
                        ),
-                       'GPSVersionID'      => array(
+                       'GPSVersionID' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'ImageUniqueID'     => array(
+                       'ImageUniqueID' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'LightSource'       => array(
+                       'LightSource' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
                                /* can't use a range, as it skips... */
-                               'choices'   => array( '0' => true, '1' => true,
+                               'choices' => array( '0' => true, '1' => true,
                                        '2' => true, '3' => true, '4' => true,
                                        '9' => true, '10' => true, '11' => true,
                                        '12' => true, '13' => true,
@@ -440,217 +446,217 @@ class XMPInfo {
                                        '255' => true,
                                ),
                        ),
-                       'MeteringMode'      => array(
+                       'MeteringMode' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 6,
-                               'choices'   => array( '255' => true ),
+                               'choices' => array( '255' => true ),
                        ),
                        /* Pixel(X|Y)Dimension are rather useless, but for
                         * completeness since we do it with exif.
                         */
-                       'PixelXDimension'   => array(
+                       'PixelXDimension' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'PixelYDimension'   => array(
+                       'PixelYDimension' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'Saturation'        => array(
+                       'Saturation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 2,
                        ),
-                       'SceneCaptureType'  => array(
+                       'SceneCaptureType' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 3,
                        ),
-                       'SceneType'         => array(
+                       'SceneType' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true ),
                        ),
                        // Note, 6 is not valid SensingMethod.
-                       'SensingMethod'     => array(
+                       'SensingMethod' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 1,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 1,
                                'rangeHigh' => 5,
-                               'choices'   => array( '7' => true, 8 => true ),
+                               'choices' => array( '7' => true, 8 => true ),
                        ),
-                       'Sharpness'         => array(
+                       'Sharpness' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 2,
                        ),
                        'SpectralSensitivity' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        // This tag should perhaps be displayed to user better.
-                       'SubjectArea'       => array(
+                       'SubjectArea' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger',
                        ),
                        'SubjectDistanceRange' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'rangeLow'  => 0,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'rangeLow' => 0,
                                'rangeHigh' => 3,
                        ),
-                       'SubjectLocation'   => array(
+                       'SubjectLocation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger',
                        ),
-                       'UserComment'       => array(
+                       'UserComment' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'mode' => XMPReader::MODE_LANG,
                        ),
-                       'WhiteBalance'      => array(
+                       'WhiteBalance' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '0' => true, '1' => true )
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '0' => true, '1' => true )
                        ),
                ),
                'http://ns.adobe.com/tiff/1.0/' => array(
-                       'Artist'            => array(
+                       'Artist' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'BitsPerSample'     => array(
+                       'BitsPerSample' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateInteger',
                        ),
-                       'Compression'       => array(
+                       'Compression' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '6' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '6' => true ),
                        ),
                        /* this prop should not be used in XMP. dc:rights is the correct prop */
-                       'Copyright'         => array(
+                       'Copyright' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'mode' => XMPReader::MODE_LANG,
                        ),
-                       'DateTime'          => array( /* proper prop is xmp:ModifyDate */
+                       'DateTime' => array( /* proper prop is xmp:ModifyDate */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateDate',
                        ),
-                       'ImageDescription'  => array( /* proper one is dc:description */
+                       'ImageDescription' => array( /* proper one is dc:description */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'mode' => XMPReader::MODE_LANG,
                        ),
-                       'ImageLength'       => array(
+                       'ImageLength' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'ImageWidth'        => array(
+                       'ImageWidth' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'Make'              => array(
+                       'Make' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'Model'             => array(
+                       'Model' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        /**** Do not extract this property
                         * It interferes with auto exif rotation.
                         * 'Orientation'       => array(
-                        *      'map_group' => 'exif',
-                        *      'mode'      => XMPReader::MODE_SIMPLE,
-                        *      'validate'  => 'validateClosed',
-                        *      'choices'   => array( '1' => true, '2' => true, '3' => true, '4' => true, 5 => true,
-                        *                      '6' => true, '7' => true, '8' => true ),
+                        *    'map_group' => 'exif',
+                        *    'mode'      => XMPReader::MODE_SIMPLE,
+                        *    'validate'  => 'validateClosed',
+                        *    'choices'   => array( '1' => true, '2' => true, '3' => true, '4' => true, 5 => true,
+                        *            '6' => true, '7' => true, '8' => true ),
                         *),
                         ******/
                        'PhotometricInterpretation' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '6' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '6' => true ),
                        ),
                        'PlanerConfiguration' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '2' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '2' => true ),
                        ),
                        'PrimaryChromaticities' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
                        'ReferenceBlackWhite' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
-                       'ResolutionUnit'    => array(
+                       'ResolutionUnit' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '2' => true, '3' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '2' => true, '3' => true ),
                        ),
-                       'SamplesPerPixel'   => array(
+                       'SamplesPerPixel' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
                        ),
-                       'Software'          => array( /* see xmp:CreatorTool */
+                       'Software' => array( /* see xmp:CreatorTool */
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        /* ignore TransferFunction */
-                       'WhitePoint'        => array(
+                       'WhitePoint' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
-                       'XResolution'       => array(
+                       'XResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
-                       'YResolution'       => array(
+                       'YResolution' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRational',
                        ),
                        'YCbCrCoefficients' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateRational',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateRational',
                        ),
-                       'YCbCrPositioning'  => array(
+                       'YCbCrPositioning' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateClosed',
-                               'choices'   => array( '1' => true, '2' => true ),
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateClosed',
+                               'choices' => array( '1' => true, '2' => true ),
                        ),
                        /********
                         * Disable extracting this property (bug 31944)
@@ -663,170 +669,170 @@ class XMPInfo {
                         * just disable this prop for now, until such
                         * XMPReader is more graceful (bug 32172)
                         * 'YCbCrSubSampling'  => array(
-                        *      'map_group' => 'exif',
-                        *      'mode'      => XMPReader::MODE_SEQ,
-                        *      'validate'  => 'validateClosed',
-                        *      'choices'   => array( '1' => true, '2' => true ),
+                        *    'map_group' => 'exif',
+                        *    'mode'      => XMPReader::MODE_SEQ,
+                        *    'validate'  => 'validateClosed',
+                        *    'choices'   => array( '1' => true, '2' => true ),
                         * ),
                         */
                ),
                'http://ns.adobe.com/exif/1.0/aux/' => array(
-                       'Lens'              => array(
+                       'Lens' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'SerialNumber'      => array(
+                       'SerialNumber' => array(
                                'map_group' => 'exif',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'OwnerName'         => array(
+                       'OwnerName' => array(
                                'map_group' => 'exif',
-                               'map_name'  => 'CameraOwnerName',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CameraOwnerName',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                ),
                'http://purl.org/dc/elements/1.1/' => array(
-                       'title'             => array(
+                       'title' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'ObjectName',
-                               'mode'      => XMPReader::MODE_LANG
+                               'map_name' => 'ObjectName',
+                               'mode' => XMPReader::MODE_LANG
                        ),
-                       'description'       => array(
+                       'description' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'ImageDescription',
-                               'mode'      => XMPReader::MODE_LANG
+                               'map_name' => 'ImageDescription',
+                               'mode' => XMPReader::MODE_LANG
                        ),
-                       'contributor'       => array(
+                       'contributor' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-contributor',
-                               'mode'      => XMPReader::MODE_BAG
+                               'map_name' => 'dc-contributor',
+                               'mode' => XMPReader::MODE_BAG
                        ),
-                       'coverage'          => array(
+                       'coverage' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-coverage',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'dc-coverage',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'creator'           => array(
+                       'creator' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Artist', //map with exif Artist, iptc byline (2:80)
-                               'mode'      => XMPReader::MODE_SEQ,
+                               'map_name' => 'Artist', //map with exif Artist, iptc byline (2:80)
+                               'mode' => XMPReader::MODE_SEQ,
                        ),
-                       'date'              => array(
+                       'date' => array(
                                'map_group' => 'general',
                                // Note, not mapped with other date properties, as this type of date is
                                // non-specific: "A point or period of time associated with an event in
                                //  the lifecycle of the resource"
-                               'map_name'  => 'dc-date',
-                               'mode'      => XMPReader::MODE_SEQ,
-                               'validate'  => 'validateDate',
+                               'map_name' => 'dc-date',
+                               'mode' => XMPReader::MODE_SEQ,
+                               'validate' => 'validateDate',
                        ),
                        /* Do not extract dc:format, as we've got better ways to determine mimetype */
-                       'identifier'        => array(
+                       'identifier' => array(
                                'map_group' => 'deprecated',
-                               'map_name'  => 'Identifier',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'Identifier',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'language'          => array(
+                       'language' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'LanguageCode', /* mapped with iptc 2:135 */
-                               'mode'      => XMPReader::MODE_BAG,
-                               'validate'  => 'validateLangCode',
+                               'map_name' => 'LanguageCode', /* mapped with iptc 2:135 */
+                               'mode' => XMPReader::MODE_BAG,
+                               'validate' => 'validateLangCode',
                        ),
-                       'publisher'         => array(
+                       'publisher' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-publisher',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'dc-publisher',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        // for related images/resources
-                       'relation'          => array(
+                       'relation' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-relation',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'dc-relation',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
-                       'rights'            => array(
+                       'rights' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Copyright',
-                               'mode'      => XMPReader::MODE_LANG,
+                               'map_name' => 'Copyright',
+                               'mode' => XMPReader::MODE_LANG,
                        ),
                        // Note: source is not mapped with iptc source, since iptc
                        // source describes the source of the image in terms of a person
                        // who provided the image, where this is to describe an image that the
                        // current one is based on.
-                       'source'            => array(
+                       'source' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-source',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'dc-source',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
-                       'subject'           => array(
+                       'subject' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Keywords', /* maps to iptc 2:25 */
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'Keywords', /* maps to iptc 2:25 */
+                               'mode' => XMPReader::MODE_BAG,
                        ),
-                       'type'              => array(
+                       'type' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'dc-type',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'dc-type',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                ),
                'http://ns.adobe.com/xap/1.0/' => array(
                        'CreateDate' => array(
                                'map_group' => 'general',
                                'map_name' => 'DateTimeDigitized',
-                               'mode'     => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                                'validate' => 'validateDate',
                        ),
                        'CreatorTool' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Software',
-                               'mode'      => XMPReader::MODE_SIMPLE
+                               'map_name' => 'Software',
+                               'mode' => XMPReader::MODE_SIMPLE
                        ),
                        'Identifier' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        'Label' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'ModifyDate' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'DateTime',
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'DateTime',
+                               'validate' => 'validateDate',
                        ),
                        'MetadataDate' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                                // map_name to be consistent with other date names.
-                               'map_name'  => 'DateTimeMetadata',
-                               'validate'  => 'validateDate',
+                               'map_name' => 'DateTimeMetadata',
+                               'validate' => 'validateDate',
                        ),
                        'Nickname' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Rating' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateRating',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateRating',
                        ),
                ),
                'http://ns.adobe.com/xap/1.0/rights/' => array(
                        'Certificate' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'RightsCertificate',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'RightsCertificate',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Marked' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'Copyrighted',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateBoolean',
+                               'map_name' => 'Copyrighted',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateBoolean',
                        ),
                        'Owner' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'CopyrightOwner',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'map_name' => 'CopyrightOwner',
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        // this seems similar to dc:rights.
                        'UsageTerms' => array(
@@ -844,7 +850,7 @@ class XMPInfo {
                        // as well do this too.
                        'OriginalDocumentID' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        // It might also be useful to do xmpMM:LastURL
                        // and xmpMM:DerivedFrom as you can potentially,
@@ -855,31 +861,31 @@ class XMPInfo {
                ),
                'http://creativecommons.org/ns#' => array(
                        'license' => array(
-                               'map_name'  => 'LicenseUrl',
+                               'map_name' => 'LicenseUrl',
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'morePermissions' => array(
-                               'map_name'  => 'MorePermissionsUrl',
+                               'map_name' => 'MorePermissionsUrl',
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'attributionURL' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'AttributionUrl',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'AttributionUrl',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'attributionName' => array(
                                'map_group' => 'general',
-                               'map_name'  => 'PreferredAttributionName',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'PreferredAttributionName',
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                ),
                //Note, this property affects how jpeg metadata is extracted.
                'http://ns.adobe.com/xmp/note/' => array(
                        'HasExtendedXMP' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                ),
                /* Note, in iptc schemas, the legacy properties are denoted
@@ -890,41 +896,41 @@ class XMPInfo {
                'http://ns.adobe.com/photoshop/1.0/' => array(
                        'City' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'CityDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CityDest',
                        ),
                        'Country' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'CountryDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CountryDest',
                        ),
                        'State' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'ProvinceOrStateDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'ProvinceOrStateDest',
                        ),
                        'DateCreated' => array(
                                'map_group' => 'deprecated',
                                // marking as deprecated as the xmp prop preferred
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'DateTimeOriginal',
-                               'validate'  => 'validateDate',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'DateTimeOriginal',
+                               'validate' => 'validateDate',
                                // note this prop is an XMP, not IPTC date
                        ),
                        'CaptionWriter' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'Writer',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'Writer',
                        ),
                        'Instructions' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'SpecialInstructions',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'SpecialInstructions',
                        ),
                        'TransmissionReference' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'OriginalTransmissionRef',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'OriginalTransmissionRef',
                        ),
                        'AuthorsPosition' => array(
                                /* This corresponds with 2:85
@@ -932,46 +938,46 @@ class XMPInfo {
                                 * handled weirdly to correspond
                                 * with iptc/exif. */
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE
+                               'mode' => XMPReader::MODE_SIMPLE
                        ),
                        'Credit' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Source' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Urgency' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'Category' => array(
                                // Note, this prop is deprecated, but in general
                                // group since it doesn't have a replacement.
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'iimCategory',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'iimCategory',
                        ),
                        'SupplementalCategories' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'map_name'  => 'iimSupplementalCategory',
+                               'mode' => XMPReader::MODE_BAG,
+                               'map_name' => 'iimSupplementalCategory',
                        ),
                        'Headline' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE
+                               'mode' => XMPReader::MODE_SIMPLE
                        ),
                ),
                'http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/' => array(
                        'CountryCode' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'CountryCodeDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'CountryCodeDest',
                        ),
                        'IntellectualGenre' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        // Note, this is a six digit code.
                        // See: http://cv.iptc.org/newscodes/scene/
@@ -979,9 +985,9 @@ class XMPInfo {
                        // we just show the number.
                        'Scene' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'validate'  => 'validateInteger',
-                               'map_name'  => 'SceneCode',
+                               'mode' => XMPReader::MODE_BAG,
+                               'validate' => 'validateInteger',
+                               'map_name' => 'SceneCode',
                        ),
                        /* Note: SubjectCode should be an 8 ascii digits.
                         * it is not really an integer (has leading 0's,
@@ -990,14 +996,14 @@ class XMPInfo {
                         */
                        'SubjectCode' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'map_name'  => 'SubjectNewsCode',
-                               'validate'  => 'validateInteger'
+                               'mode' => XMPReader::MODE_BAG,
+                               'map_name' => 'SubjectNewsCode',
+                               'validate' => 'validateInteger'
                        ),
                        'Location' => array(
                                'map_group' => 'deprecated',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'map_name'  => 'SublocationDest',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'map_name' => 'SublocationDest',
                        ),
                        'CreatorContactInfo' => array(
                                /* Note this maps to 2:118 in iim
@@ -1007,94 +1013,94 @@ class XMPInfo {
                                 * is more structured.
                                 */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_STRUCT,
-                               'map_name'  => 'Contact',
-                               'children'  => array(
+                               'mode' => XMPReader::MODE_STRUCT,
+                               'map_name' => 'Contact',
+                               'children' => array(
                                        'CiAdrExtadr' => true,
-                                       'CiAdrCity'   => true,
-                                       'CiAdrCtry'   => true,
+                                       'CiAdrCity' => true,
+                                       'CiAdrCtry' => true,
                                        'CiEmailWork' => true,
-                                       'CiTelWork'   => true,
-                                       'CiAdrPcode'  => true,
+                                       'CiTelWork' => true,
+                                       'CiAdrPcode' => true,
                                        'CiAdrRegion' => true,
-                                       'CiUrlWork'   => true,
+                                       'CiUrlWork' => true,
                                ),
                        ),
                        'CiAdrExtadr' => array( /* address */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrCity' => array( /* city */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrCtry' => array( /* country */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiEmailWork' => array( /* email (possibly separated by ',') */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiTelWork' => array( /* telephone */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrPcode' => array( /* postal code */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiAdrRegion' => array( /* province/state */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CiUrlWork' => array( /* url. Multiple may be separated by comma. */
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        /* End contact info struct properties */
                ),
                'http://iptc.org/std/Iptc4xmpExt/2008-02-29/' => array(
                        'Event' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
+                               'mode' => XMPReader::MODE_SIMPLE,
                        ),
                        'OrganisationInImageName' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
-                               'map_name'  => 'OrganisationInImage'
+                               'mode' => XMPReader::MODE_BAG,
+                               'map_name' => 'OrganisationInImage'
                        ),
                        'PersonInImage' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_BAG,
+                               'mode' => XMPReader::MODE_BAG,
                        ),
                        'MaxAvailHeight' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
-                               'map_name'  => 'OriginalImageHeight',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
+                               'map_name' => 'OriginalImageHeight',
                        ),
                        'MaxAvailWidth' => array(
                                'map_group' => 'general',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'validate'  => 'validateInteger',
-                               'map_name'  => 'OriginalImageWidth',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'validate' => 'validateInteger',
+                               'map_name' => 'OriginalImageWidth',
                        ),
                        // LocationShown and LocationCreated are handled
                        // specially because they are hierarchical, but we
                        // also want to merge with the old non-hierarchical.
                        'LocationShown' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_BAGSTRUCT,
-                               'children'  => array(
+                               'mode' => XMPReader::MODE_BAGSTRUCT,
+                               'children' => array(
                                        'WorldRegion' => true,
                                        'CountryCode' => true, /* iso code */
                                        'CountryName' => true,
@@ -1105,8 +1111,8 @@ class XMPInfo {
                        ),
                        'LocationCreated' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_BAGSTRUCT,
-                               'children'  => array(
+                               'mode' => XMPReader::MODE_BAGSTRUCT,
+                               'children' => array(
                                        'WorldRegion' => true,
                                        'CountryCode' => true, /* iso code */
                                        'CountryName' => true,
@@ -1117,35 +1123,35 @@ class XMPInfo {
                        ),
                        'WorldRegion' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CountryCode' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'CountryName' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
-                               'map_name'  => 'Country',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
+                               'map_name' => 'Country',
                        ),
                        'ProvinceState' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
-                               'map_name'  => 'ProvinceOrState',
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
+                               'map_name' => 'ProvinceOrState',
                        ),
                        'City' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
                        'Sublocation' => array(
                                'map_group' => 'special',
-                               'mode'      => XMPReader::MODE_SIMPLE,
-                               'structPart'=> true,
+                               'mode' => XMPReader::MODE_SIMPLE,
+                               'structPart' => true,
                        ),
 
                        /* Other props that might be interesting but
index 87f8abf..4362217 100644 (file)
@@ -28,7 +28,7 @@
  * Each of these functions take the same parameters
  * * an info array which is a subset of the XMPInfo::items array
  * * A value (passed as reference) to validate. This can be either a
- *     simple value or an array
+ *    simple value or an array
  * * A boolean to determine if this is validating a simple or complex values
  *
  * It should be noted that when an array is being validated, typically the validation
  */
 class XMPValidate {
        /**
-        * function to validate boolean properties ( True or False )
+        * Function to validate boolean properties ( True or False )
         *
-        * @param array $info information about current property
-        * @param &$val Mixed current value to validate
-        * @param $standalone Boolean if this is a simple property or array
+        * @param array $info Information about current property
+        * @param mixed &$val Current value to validate
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateBoolean( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -57,15 +57,14 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected True or False but got $val" );
                        $val = null;
                }
-
        }
 
        /**
         * function to validate rational properties ( 12/10 )
         *
-        * @param array $info information about current property
-        * @param &$val Mixed current value to validate
-        * @param $standalone Boolean if this is a simple property or array
+        * @param array $info Information about current property
+        * @param mixed &$val Current value to validate
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateRational( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -76,7 +75,6 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected rational but got $val" );
                        $val = null;
                }
-
        }
 
        /**
@@ -85,9 +83,9 @@ class XMPValidate {
         * if its outside of range put it into range.
         *
         * @see MWG spec
-        * @param array $info information about current property
-        * @param &$val Mixed current value to validate
-        * @param $standalone Boolean if this is a simple property or array
+        * @param array $info Information about current property
+        * @param mixed &$val Current value to validate
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateRating( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -99,6 +97,7 @@ class XMPValidate {
                ) {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected rating but got $val" );
                        $val = null;
+
                        return;
                } else {
                        $nVal = (float)$val;
@@ -108,11 +107,13 @@ class XMPValidate {
                                // as -1 is meant as a special reject rating.
                                wfDebugLog( 'XMP', __METHOD__ . " Rating too low, setting to -1 (Rejected)" );
                                $val = '-1';
+
                                return;
                        }
                        if ( $nVal > 5 ) {
                                wfDebugLog( 'XMP', __METHOD__ . " Rating too high, setting to 5" );
                                $val = '5';
+
                                return;
                        }
                }
@@ -121,9 +122,9 @@ class XMPValidate {
        /**
         * function to validate integers
         *
-        * @param array $info information about current property
-        * @param &$val Mixed current value to validate
-        * @param $standalone Boolean if this is a simple property or array
+        * @param array $info Information about current property
+        * @param mixed &$val Current value to validate
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateInteger( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -134,16 +135,15 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected integer but got $val" );
                        $val = null;
                }
-
        }
 
        /**
         * function to validate properties with a fixed number of allowed
         * choices. (closed choice)
         *
-        * @param array $info information about current property
+        * @param array $info Information about current property
         * @param &$val Mixed current value to validate
-        * @param $standalone Boolean if this is a simple property or array
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateClosed( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -171,9 +171,9 @@ class XMPValidate {
        /**
         * function to validate and modify flash structure
         *
-        * @param array $info information about current property
+        * @param array $info Information about current property
         * @param &$val Mixed current value to validate
-        * @param $standalone Boolean if this is a simple property or array
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateFlash( $info, &$val, $standalone ) {
                if ( $standalone ) {
@@ -205,9 +205,9 @@ class XMPValidate {
         * @see rfc 3066
         * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart1.pdf page 30 (section 8.2.2.5)
         *
-        * @param array $info information about current property
+        * @param array $info Information about current property
         * @param &$val Mixed current value to validate
-        * @param $standalone Boolean if this is a simple property or array
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateLangCode( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -219,7 +219,6 @@ class XMPValidate {
                        wfDebugLog( 'XMP', __METHOD__ . " Expected Lang code but got $val" );
                        $val = null;
                }
-
        }
 
        /**
@@ -233,11 +232,11 @@ class XMPValidate {
         * YYYY-MM-DDThh:mm:ssTZD
         * YYYY-MM-DDThh:mm:ss.sTZD
         *
-        * @param array $info information about current property
-        * @param &$val Mixed current value to validate. Converts to TS_EXIF as a side-effect.
-        *      in cases where there's only a partial date, it will give things like
-        *      2011:04.
-        * @param $standalone Boolean if this is a simple property or array
+        * @param array $info Information about current property
+        * @param mixed &$val Current value to validate. Converts to TS_EXIF as a side-effect.
+        *    in cases where there's only a partial date, it will give things like
+        *    2011:04.
+        * @param bool $standalone If this is a simple property or array
         */
        public static function validateDate( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -245,11 +244,14 @@ class XMPValidate {
                        return;
                }
                $res = array();
+               // @codingStandardsIgnoreStart Long line that cannot be broken
                if ( !preg_match(
                        /* ahh! scary regex... */
                        '/^([0-3]\d{3})(?:-([01]\d)(?:-([0-3]\d)(?:T([0-2]\d):([0-6]\d)(?::([0-6]\d)(?:\.\d+)?)?([-+]\d{2}:\d{2}|Z)?)?)?)?$/D',
                        $val, $res )
                ) {
+                       // @codingStandardsIgnoreEnd
+
                        wfDebugLog( 'XMP', __METHOD__ . " Expected date but got $val" );
                        $val = null;
                } else {
@@ -270,6 +272,7 @@ class XMPValidate {
                        if ( $res[1] === '0000' ) {
                                wfDebugLog( 'XMP', __METHOD__ . " Invalid date (year 0): $val" );
                                $val = null;
+
                                return;
                        }
 
@@ -282,6 +285,7 @@ class XMPValidate {
                                if ( isset( $res[3] ) ) {
                                        $val .= ':' . $res[3];
                                }
+
                                return;
                        }
 
@@ -292,6 +296,7 @@ class XMPValidate {
                                if ( isset( $res[6] ) && $res[6] !== '' ) {
                                        $val .= ':' . $res[6];
                                }
+
                                return;
                        }
 
@@ -320,7 +325,6 @@ class XMPValidate {
                                $val = substr( $val, 0, -3 );
                        }
                }
-
        }
 
        /** function to validate, and more importantly
@@ -330,10 +334,10 @@ class XMPValidate {
         * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart2.pdf
         *        section 1.2.7.4 on page 23
         *
-        * @param array $info unused (info about prop)
-        * @param &$val String GPS string in either DDD,MM,SSk or
-        *           or DDD,MM.mmk form
-        * @param $standalone Boolean if its a simple prop (should always be true)
+        * @param array $info Unused (info about prop)
+        * @param string &$val GPS string in either DDD,MM,SSk or
+        *   or DDD,MM.mmk form
+        * @param bool $standalone If its a simple prop (should always be true)
         */
        public static function validateGPS( $info, &$val, $standalone ) {
                if ( !$standalone ) {
@@ -352,6 +356,7 @@ class XMPValidate {
                                $coord = -$coord;
                        }
                        $val = $coord;
+
                        return;
                } elseif ( preg_match(
                        '/(\d{1,3}),(\d{1,2}(?:.\d*)?)([NWSE])/D',
@@ -363,12 +368,13 @@ class XMPValidate {
                                $coord = -$coord;
                        }
                        $val = $coord;
-                       return;
 
+                       return;
                } else {
                        wfDebugLog( 'XMP', __METHOD__
                                . " Expected GPSCoordinate, but got $val." );
                        $val = null;
+
                        return;
                }
        }
diff --git a/includes/normal/.gitignore b/includes/normal/.gitignore
new file mode 100644 (file)
index 0000000..0dea457
--- /dev/null
@@ -0,0 +1,7 @@
+/CompositionExclusions.txt
+/DerivedNormalizationProps.txt
+/NormalizationCorrections.txt
+/NormalizationTest.txt
+/UTF-8-test.txt
+/UnicodeData.txt
+/testdata
index 66348ee..76cb68b 100644 (file)
@@ -16,14 +16,11 @@ PHP=php
 FETCH=wget
 #FETCH=fetch
 
-all : UtfNormalData.inc Utf8Case.php
+all : UtfNormalData.inc
 
 UtfNormalData.inc : UtfNormalGenerate.php UtfNormalUtil.php UnicodeData.txt CompositionExclusions.txt NormalizationCorrections.txt DerivedNormalizationProps.txt
        $(PHP) UtfNormalGenerate.php
 
-Utf8Case.php : Utf8CaseGenerate.php UtfNormalUtil.php UnicodeData.txt
-       $(PHP) Utf8CaseGenerate.php
-
 test : testutf8 UtfNormalTest.php UtfNormalData.inc NormalizationTest.txt
        $(PHP) UtfNormalTest.php
 
diff --git a/includes/normal/Utf8Case.php b/includes/normal/Utf8Case.php
deleted file mode 100644 (file)
index abc56e4..0000000
+++ /dev/null
@@ -1,2109 +0,0 @@
-<?php
-/**
- * Simple 1:1 upper/lowercase switching arrays for utf-8 text.
- * Won't get context-sensitive things yet.
- *
- * Hack for bugs in ucfirst() and company
- *
- * These are pulled from memcached if possible, as this is faster than filling
- * up a big array manually.
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Translation array to get upper case character
- */
-$wikiUpperChars = array(
-       'a' => 'A',
-       'b' => 'B',
-       'c' => 'C',
-       'd' => 'D',
-       'e' => 'E',
-       'f' => 'F',
-       'g' => 'G',
-       'h' => 'H',
-       'i' => 'I',
-       'j' => 'J',
-       'k' => 'K',
-       'l' => 'L',
-       'm' => 'M',
-       'n' => 'N',
-       'o' => 'O',
-       'p' => 'P',
-       'q' => 'Q',
-       'r' => 'R',
-       's' => 'S',
-       't' => 'T',
-       'u' => 'U',
-       'v' => 'V',
-       'w' => 'W',
-       'x' => 'X',
-       'y' => 'Y',
-       'z' => 'Z',
-       'µ' => 'Μ',
-       'à' => 'À',
-       'á' => 'Á',
-       'â' => 'Â',
-       'ã' => 'Ã',
-       'ä' => 'Ä',
-       'å' => 'Å',
-       'æ' => 'Æ',
-       'ç' => 'Ç',
-       'è' => 'È',
-       'é' => 'É',
-       'ê' => 'Ê',
-       'ë' => 'Ë',
-       'ì' => 'Ì',
-       'í' => 'Í',
-       'î' => 'Î',
-       'ï' => 'Ï',
-       'ð' => 'Ð',
-       'ñ' => 'Ñ',
-       'ò' => 'Ò',
-       'ó' => 'Ó',
-       'ô' => 'Ô',
-       'õ' => 'Õ',
-       'ö' => 'Ö',
-       'ø' => 'Ø',
-       'ù' => 'Ù',
-       'ú' => 'Ú',
-       'û' => 'Û',
-       'ü' => 'Ü',
-       'ý' => 'Ý',
-       'þ' => 'Þ',
-       'ÿ' => 'Ÿ',
-       'ā' => 'Ā',
-       'ă' => 'Ă',
-       'ą' => 'Ą',
-       'ć' => 'Ć',
-       'ĉ' => 'Ĉ',
-       'ċ' => 'Ċ',
-       'č' => 'Č',
-       'ď' => 'Ď',
-       'đ' => 'Đ',
-       'ē' => 'Ē',
-       'ĕ' => 'Ĕ',
-       'ė' => 'Ė',
-       'ę' => 'Ę',
-       'ě' => 'Ě',
-       'ĝ' => 'Ĝ',
-       'ğ' => 'Ğ',
-       'ġ' => 'Ġ',
-       'ģ' => 'Ģ',
-       'ĥ' => 'Ĥ',
-       'ħ' => 'Ħ',
-       'ĩ' => 'Ĩ',
-       'ī' => 'Ī',
-       'ĭ' => 'Ĭ',
-       'į' => 'Į',
-       'ı' => 'I',
-       'ij' => 'IJ',
-       'ĵ' => 'Ĵ',
-       'ķ' => 'Ķ',
-       'ĺ' => 'Ĺ',
-       'ļ' => 'Ļ',
-       'ľ' => 'Ľ',
-       'ŀ' => 'Ŀ',
-       'ł' => 'Ł',
-       'ń' => 'Ń',
-       'ņ' => 'Ņ',
-       'ň' => 'Ň',
-       'ŋ' => 'Ŋ',
-       'ō' => 'Ō',
-       'ŏ' => 'Ŏ',
-       'ő' => 'Ő',
-       'œ' => 'Œ',
-       'ŕ' => 'Ŕ',
-       'ŗ' => 'Ŗ',
-       'ř' => 'Ř',
-       'ś' => 'Ś',
-       'ŝ' => 'Ŝ',
-       'ş' => 'Ş',
-       'š' => 'Š',
-       'ţ' => 'Ţ',
-       'ť' => 'Ť',
-       'ŧ' => 'Ŧ',
-       'ũ' => 'Ũ',
-       'ū' => 'Ū',
-       'ŭ' => 'Ŭ',
-       'ů' => 'Ů',
-       'ű' => 'Ű',
-       'ų' => 'Ų',
-       'ŵ' => 'Ŵ',
-       'ŷ' => 'Ŷ',
-       'ź' => 'Ź',
-       'ż' => 'Ż',
-       'ž' => 'Ž',
-       'ſ' => 'S',
-       'ƀ' => 'Ƀ',
-       'ƃ' => 'Ƃ',
-       'ƅ' => 'Ƅ',
-       'ƈ' => 'Ƈ',
-       'ƌ' => 'Ƌ',
-       'ƒ' => 'Ƒ',
-       'ƕ' => 'Ƕ',
-       'ƙ' => 'Ƙ',
-       'ƚ' => 'Ƚ',
-       'ƞ' => 'Ƞ',
-       'ơ' => 'Ơ',
-       'ƣ' => 'Ƣ',
-       'ƥ' => 'Ƥ',
-       'ƨ' => 'Ƨ',
-       'ƭ' => 'Ƭ',
-       'ư' => 'Ư',
-       'ƴ' => 'Ƴ',
-       'ƶ' => 'Ƶ',
-       'ƹ' => 'Ƹ',
-       'ƽ' => 'Ƽ',
-       'ƿ' => 'Ƿ',
-       'Dž' => 'DŽ',
-       'dž' => 'DŽ',
-       'Lj' => 'LJ',
-       'lj' => 'LJ',
-       'Nj' => 'NJ',
-       'nj' => 'NJ',
-       'ǎ' => 'Ǎ',
-       'ǐ' => 'Ǐ',
-       'ǒ' => 'Ǒ',
-       'ǔ' => 'Ǔ',
-       'ǖ' => 'Ǖ',
-       'ǘ' => 'Ǘ',
-       'ǚ' => 'Ǚ',
-       'ǜ' => 'Ǜ',
-       'ǝ' => 'Ǝ',
-       'ǟ' => 'Ǟ',
-       'ǡ' => 'Ǡ',
-       'ǣ' => 'Ǣ',
-       'ǥ' => 'Ǥ',
-       'ǧ' => 'Ǧ',
-       'ǩ' => 'Ǩ',
-       'ǫ' => 'Ǫ',
-       'ǭ' => 'Ǭ',
-       'ǯ' => 'Ǯ',
-       'Dz' => 'DZ',
-       'dz' => 'DZ',
-       'ǵ' => 'Ǵ',
-       'ǹ' => 'Ǹ',
-       'ǻ' => 'Ǻ',
-       'ǽ' => 'Ǽ',
-       'ǿ' => 'Ǿ',
-       'ȁ' => 'Ȁ',
-       'ȃ' => 'Ȃ',
-       'ȅ' => 'Ȅ',
-       'ȇ' => 'Ȇ',
-       'ȉ' => 'Ȉ',
-       'ȋ' => 'Ȋ',
-       'ȍ' => 'Ȍ',
-       'ȏ' => 'Ȏ',
-       'ȑ' => 'Ȑ',
-       'ȓ' => 'Ȓ',
-       'ȕ' => 'Ȕ',
-       'ȗ' => 'Ȗ',
-       'ș' => 'Ș',
-       'ț' => 'Ț',
-       'ȝ' => 'Ȝ',
-       'ȟ' => 'Ȟ',
-       'ȣ' => 'Ȣ',
-       'ȥ' => 'Ȥ',
-       'ȧ' => 'Ȧ',
-       'ȩ' => 'Ȩ',
-       'ȫ' => 'Ȫ',
-       'ȭ' => 'Ȭ',
-       'ȯ' => 'Ȯ',
-       'ȱ' => 'Ȱ',
-       'ȳ' => 'Ȳ',
-       'ȼ' => 'Ȼ',
-       'ȿ' => 'Ȿ',
-       'ɀ' => 'Ɀ',
-       'ɂ' => 'Ɂ',
-       'ɇ' => 'Ɇ',
-       'ɉ' => 'Ɉ',
-       'ɋ' => 'Ɋ',
-       'ɍ' => 'Ɍ',
-       'ɏ' => 'Ɏ',
-       'ɐ' => 'Ɐ',
-       'ɑ' => 'Ɑ',
-       'ɒ' => 'Ɒ',
-       'ɓ' => 'Ɓ',
-       'ɔ' => 'Ɔ',
-       'ɖ' => 'Ɖ',
-       'ɗ' => 'Ɗ',
-       'ə' => 'Ə',
-       'ɛ' => 'Ɛ',
-       'ɠ' => 'Ɠ',
-       'ɣ' => 'Ɣ',
-       'ɥ' => 'Ɥ',
-       'ɨ' => 'Ɨ',
-       'ɩ' => 'Ɩ',
-       'ɫ' => 'Ɫ',
-       'ɯ' => 'Ɯ',
-       'ɱ' => 'Ɱ',
-       'ɲ' => 'Ɲ',
-       'ɵ' => 'Ɵ',
-       'ɽ' => 'Ɽ',
-       'ʀ' => 'Ʀ',
-       'ʃ' => 'Ʃ',
-       'ʈ' => 'Ʈ',
-       'ʉ' => 'Ʉ',
-       'ʊ' => 'Ʊ',
-       'ʋ' => 'Ʋ',
-       'ʌ' => 'Ʌ',
-       'ʒ' => 'Ʒ',
-       'ͅ' => 'Ι',
-       'ͱ' => 'Ͱ',
-       'ͳ' => 'Ͳ',
-       'ͷ' => 'Ͷ',
-       'ͻ' => 'Ͻ',
-       'ͼ' => 'Ͼ',
-       'ͽ' => 'Ͽ',
-       'ά' => 'Ά',
-       'έ' => 'Έ',
-       'ή' => 'Ή',
-       'ί' => 'Ί',
-       'α' => 'Α',
-       'β' => 'Β',
-       'γ' => 'Γ',
-       'δ' => 'Δ',
-       'ε' => 'Ε',
-       'ζ' => 'Ζ',
-       'η' => 'Η',
-       'θ' => 'Θ',
-       'ι' => 'Ι',
-       'κ' => 'Κ',
-       'λ' => 'Λ',
-       'μ' => 'Μ',
-       'ν' => 'Ν',
-       'ξ' => 'Ξ',
-       'ο' => 'Ο',
-       'π' => 'Π',
-       'ρ' => 'Ρ',
-       'ς' => 'Σ',
-       'σ' => 'Σ',
-       'τ' => 'Τ',
-       'υ' => 'Υ',
-       'φ' => 'Φ',
-       'χ' => 'Χ',
-       'ψ' => 'Ψ',
-       'ω' => 'Ω',
-       'ϊ' => 'Ϊ',
-       'ϋ' => 'Ϋ',
-       'ό' => 'Ό',
-       'ύ' => 'Ύ',
-       'ώ' => 'Ώ',
-       'ϐ' => 'Β',
-       'ϑ' => 'Θ',
-       'ϕ' => 'Φ',
-       'ϖ' => 'Π',
-       'ϗ' => 'Ϗ',
-       'ϙ' => 'Ϙ',
-       'ϛ' => 'Ϛ',
-       'ϝ' => 'Ϝ',
-       'ϟ' => 'Ϟ',
-       'ϡ' => 'Ϡ',
-       'ϣ' => 'Ϣ',
-       'ϥ' => 'Ϥ',
-       'ϧ' => 'Ϧ',
-       'ϩ' => 'Ϩ',
-       'ϫ' => 'Ϫ',
-       'ϭ' => 'Ϭ',
-       'ϯ' => 'Ϯ',
-       'ϰ' => 'Κ',
-       'ϱ' => 'Ρ',
-       'ϲ' => 'Ϲ',
-       'ϵ' => 'Ε',
-       'ϸ' => 'Ϸ',
-       'ϻ' => 'Ϻ',
-       'а' => 'А',
-       'б' => 'Б',
-       'в' => 'В',
-       'г' => 'Г',
-       'д' => 'Д',
-       'е' => 'Е',
-       'ж' => 'Ж',
-       'з' => 'З',
-       'и' => 'И',
-       'й' => 'Й',
-       'к' => 'К',
-       'л' => 'Л',
-       'м' => 'М',
-       'н' => 'Н',
-       'о' => 'О',
-       'п' => 'П',
-       'р' => 'Р',
-       'с' => 'С',
-       'т' => 'Т',
-       'у' => 'У',
-       'ф' => 'Ф',
-       'х' => 'Х',
-       'ц' => 'Ц',
-       'ч' => 'Ч',
-       'ш' => 'Ш',
-       'щ' => 'Щ',
-       'ъ' => 'Ъ',
-       'ы' => 'Ы',
-       'ь' => 'Ь',
-       'э' => 'Э',
-       'ю' => 'Ю',
-       'я' => 'Я',
-       'ѐ' => 'Ѐ',
-       'ё' => 'Ё',
-       'ђ' => 'Ђ',
-       'ѓ' => 'Ѓ',
-       'є' => 'Є',
-       'ѕ' => 'Ѕ',
-       'і' => 'І',
-       'ї' => 'Ї',
-       'ј' => 'Ј',
-       'љ' => 'Љ',
-       'њ' => 'Њ',
-       'ћ' => 'Ћ',
-       'ќ' => 'Ќ',
-       'ѝ' => 'Ѝ',
-       'ў' => 'Ў',
-       'џ' => 'Џ',
-       'ѡ' => 'Ѡ',
-       'ѣ' => 'Ѣ',
-       'ѥ' => 'Ѥ',
-       'ѧ' => 'Ѧ',
-       'ѩ' => 'Ѩ',
-       'ѫ' => 'Ѫ',
-       'ѭ' => 'Ѭ',
-       'ѯ' => 'Ѯ',
-       'ѱ' => 'Ѱ',
-       'ѳ' => 'Ѳ',
-       'ѵ' => 'Ѵ',
-       'ѷ' => 'Ѷ',
-       'ѹ' => 'Ѹ',
-       'ѻ' => 'Ѻ',
-       'ѽ' => 'Ѽ',
-       'ѿ' => 'Ѿ',
-       'ҁ' => 'Ҁ',
-       'ҋ' => 'Ҋ',
-       'ҍ' => 'Ҍ',
-       'ҏ' => 'Ҏ',
-       'ґ' => 'Ґ',
-       'ғ' => 'Ғ',
-       'ҕ' => 'Ҕ',
-       'җ' => 'Җ',
-       'ҙ' => 'Ҙ',
-       'қ' => 'Қ',
-       'ҝ' => 'Ҝ',
-       'ҟ' => 'Ҟ',
-       'ҡ' => 'Ҡ',
-       'ң' => 'Ң',
-       'ҥ' => 'Ҥ',
-       'ҧ' => 'Ҧ',
-       'ҩ' => 'Ҩ',
-       'ҫ' => 'Ҫ',
-       'ҭ' => 'Ҭ',
-       'ү' => 'Ү',
-       'ұ' => 'Ұ',
-       'ҳ' => 'Ҳ',
-       'ҵ' => 'Ҵ',
-       'ҷ' => 'Ҷ',
-       'ҹ' => 'Ҹ',
-       'һ' => 'Һ',
-       'ҽ' => 'Ҽ',
-       'ҿ' => 'Ҿ',
-       'ӂ' => 'Ӂ',
-       'ӄ' => 'Ӄ',
-       'ӆ' => 'Ӆ',
-       'ӈ' => 'Ӈ',
-       'ӊ' => 'Ӊ',
-       'ӌ' => 'Ӌ',
-       'ӎ' => 'Ӎ',
-       'ӏ' => 'Ӏ',
-       'ӑ' => 'Ӑ',
-       'ӓ' => 'Ӓ',
-       'ӕ' => 'Ӕ',
-       'ӗ' => 'Ӗ',
-       'ә' => 'Ә',
-       'ӛ' => 'Ӛ',
-       'ӝ' => 'Ӝ',
-       'ӟ' => 'Ӟ',
-       'ӡ' => 'Ӡ',
-       'ӣ' => 'Ӣ',
-       'ӥ' => 'Ӥ',
-       'ӧ' => 'Ӧ',
-       'ө' => 'Ө',
-       'ӫ' => 'Ӫ',
-       'ӭ' => 'Ӭ',
-       'ӯ' => 'Ӯ',
-       'ӱ' => 'Ӱ',
-       'ӳ' => 'Ӳ',
-       'ӵ' => 'Ӵ',
-       'ӷ' => 'Ӷ',
-       'ӹ' => 'Ӹ',
-       'ӻ' => 'Ӻ',
-       'ӽ' => 'Ӽ',
-       'ӿ' => 'Ӿ',
-       'ԁ' => 'Ԁ',
-       'ԃ' => 'Ԃ',
-       'ԅ' => 'Ԅ',
-       'ԇ' => 'Ԇ',
-       'ԉ' => 'Ԉ',
-       'ԋ' => 'Ԋ',
-       'ԍ' => 'Ԍ',
-       'ԏ' => 'Ԏ',
-       'ԑ' => 'Ԑ',
-       'ԓ' => 'Ԓ',
-       'ԕ' => 'Ԕ',
-       'ԗ' => 'Ԗ',
-       'ԙ' => 'Ԙ',
-       'ԛ' => 'Ԛ',
-       'ԝ' => 'Ԝ',
-       'ԟ' => 'Ԟ',
-       'ԡ' => 'Ԡ',
-       'ԣ' => 'Ԣ',
-       'ԥ' => 'Ԥ',
-       'ԧ' => 'Ԧ',
-       'ա' => 'Ա',
-       'բ' => 'Բ',
-       'գ' => 'Գ',
-       'դ' => 'Դ',
-       'ե' => 'Ե',
-       'զ' => 'Զ',
-       'է' => 'Է',
-       'ը' => 'Ը',
-       'թ' => 'Թ',
-       'ժ' => 'Ժ',
-       'ի' => 'Ի',
-       'լ' => 'Լ',
-       'խ' => 'Խ',
-       'ծ' => 'Ծ',
-       'կ' => 'Կ',
-       'հ' => 'Հ',
-       'ձ' => 'Ձ',
-       'ղ' => 'Ղ',
-       'ճ' => 'Ճ',
-       'մ' => 'Մ',
-       'յ' => 'Յ',
-       'ն' => 'Ն',
-       'շ' => 'Շ',
-       'ո' => 'Ո',
-       'չ' => 'Չ',
-       'պ' => 'Պ',
-       'ջ' => 'Ջ',
-       'ռ' => 'Ռ',
-       'ս' => 'Ս',
-       'վ' => 'Վ',
-       'տ' => 'Տ',
-       'ր' => 'Ր',
-       'ց' => 'Ց',
-       'ւ' => 'Ւ',
-       'փ' => 'Փ',
-       'ք' => 'Ք',
-       'օ' => 'Օ',
-       'ֆ' => 'Ֆ',
-       'ᵹ' => 'Ᵹ',
-       'ᵽ' => 'Ᵽ',
-       'ḁ' => 'Ḁ',
-       'ḃ' => 'Ḃ',
-       'ḅ' => 'Ḅ',
-       'ḇ' => 'Ḇ',
-       'ḉ' => 'Ḉ',
-       'ḋ' => 'Ḋ',
-       'ḍ' => 'Ḍ',
-       'ḏ' => 'Ḏ',
-       'ḑ' => 'Ḑ',
-       'ḓ' => 'Ḓ',
-       'ḕ' => 'Ḕ',
-       'ḗ' => 'Ḗ',
-       'ḙ' => 'Ḙ',
-       'ḛ' => 'Ḛ',
-       'ḝ' => 'Ḝ',
-       'ḟ' => 'Ḟ',
-       'ḡ' => 'Ḡ',
-       'ḣ' => 'Ḣ',
-       'ḥ' => 'Ḥ',
-       'ḧ' => 'Ḧ',
-       'ḩ' => 'Ḩ',
-       'ḫ' => 'Ḫ',
-       'ḭ' => 'Ḭ',
-       'ḯ' => 'Ḯ',
-       'ḱ' => 'Ḱ',
-       'ḳ' => 'Ḳ',
-       'ḵ' => 'Ḵ',
-       'ḷ' => 'Ḷ',
-       'ḹ' => 'Ḹ',
-       'ḻ' => 'Ḻ',
-       'ḽ' => 'Ḽ',
-       'ḿ' => 'Ḿ',
-       'ṁ' => 'Ṁ',
-       'ṃ' => 'Ṃ',
-       'ṅ' => 'Ṅ',
-       'ṇ' => 'Ṇ',
-       'ṉ' => 'Ṉ',
-       'ṋ' => 'Ṋ',
-       'ṍ' => 'Ṍ',
-       'ṏ' => 'Ṏ',
-       'ṑ' => 'Ṑ',
-       'ṓ' => 'Ṓ',
-       'ṕ' => 'Ṕ',
-       'ṗ' => 'Ṗ',
-       'ṙ' => 'Ṙ',
-       'ṛ' => 'Ṛ',
-       'ṝ' => 'Ṝ',
-       'ṟ' => 'Ṟ',
-       'ṡ' => 'Ṡ',
-       'ṣ' => 'Ṣ',
-       'ṥ' => 'Ṥ',
-       'ṧ' => 'Ṧ',
-       'ṩ' => 'Ṩ',
-       'ṫ' => 'Ṫ',
-       'ṭ' => 'Ṭ',
-       'ṯ' => 'Ṯ',
-       'ṱ' => 'Ṱ',
-       'ṳ' => 'Ṳ',
-       'ṵ' => 'Ṵ',
-       'ṷ' => 'Ṷ',
-       'ṹ' => 'Ṹ',
-       'ṻ' => 'Ṻ',
-       'ṽ' => 'Ṽ',
-       'ṿ' => 'Ṿ',
-       'ẁ' => 'Ẁ',
-       'ẃ' => 'Ẃ',
-       'ẅ' => 'Ẅ',
-       'ẇ' => 'Ẇ',
-       'ẉ' => 'Ẉ',
-       'ẋ' => 'Ẋ',
-       'ẍ' => 'Ẍ',
-       'ẏ' => 'Ẏ',
-       'ẑ' => 'Ẑ',
-       'ẓ' => 'Ẓ',
-       'ẕ' => 'Ẕ',
-       'ẛ' => 'Ṡ',
-       'ạ' => 'Ạ',
-       'ả' => 'Ả',
-       'ấ' => 'Ấ',
-       'ầ' => 'Ầ',
-       'ẩ' => 'Ẩ',
-       'ẫ' => 'Ẫ',
-       'ậ' => 'Ậ',
-       'ắ' => 'Ắ',
-       'ằ' => 'Ằ',
-       'ẳ' => 'Ẳ',
-       'ẵ' => 'Ẵ',
-       'ặ' => 'Ặ',
-       'ẹ' => 'Ẹ',
-       'ẻ' => 'Ẻ',
-       'ẽ' => 'Ẽ',
-       'ế' => 'Ế',
-       'ề' => 'Ề',
-       'ể' => 'Ể',
-       'ễ' => 'Ễ',
-       'ệ' => 'Ệ',
-       'ỉ' => 'Ỉ',
-       'ị' => 'Ị',
-       'ọ' => 'Ọ',
-       'ỏ' => 'Ỏ',
-       'ố' => 'Ố',
-       'ồ' => 'Ồ',
-       'ổ' => 'Ổ',
-       'ỗ' => 'Ỗ',
-       'ộ' => 'Ộ',
-       'ớ' => 'Ớ',
-       'ờ' => 'Ờ',
-       'ở' => 'Ở',
-       'ỡ' => 'Ỡ',
-       'ợ' => 'Ợ',
-       'ụ' => 'Ụ',
-       'ủ' => 'Ủ',
-       'ứ' => 'Ứ',
-       'ừ' => 'Ừ',
-       'ử' => 'Ử',
-       'ữ' => 'Ữ',
-       'ự' => 'Ự',
-       'ỳ' => 'Ỳ',
-       'ỵ' => 'Ỵ',
-       'ỷ' => 'Ỷ',
-       'ỹ' => 'Ỹ',
-       'ỻ' => 'Ỻ',
-       'ỽ' => 'Ỽ',
-       'ỿ' => 'Ỿ',
-       'ἀ' => 'Ἀ',
-       'ἁ' => 'Ἁ',
-       'ἂ' => 'Ἂ',
-       'ἃ' => 'Ἃ',
-       'ἄ' => 'Ἄ',
-       'ἅ' => 'Ἅ',
-       'ἆ' => 'Ἆ',
-       'ἇ' => 'Ἇ',
-       'ἐ' => 'Ἐ',
-       'ἑ' => 'Ἑ',
-       'ἒ' => 'Ἒ',
-       'ἓ' => 'Ἓ',
-       'ἔ' => 'Ἔ',
-       'ἕ' => 'Ἕ',
-       'ἠ' => 'Ἠ',
-       'ἡ' => 'Ἡ',
-       'ἢ' => 'Ἢ',
-       'ἣ' => 'Ἣ',
-       'ἤ' => 'Ἤ',
-       'ἥ' => 'Ἥ',
-       'ἦ' => 'Ἦ',
-       'ἧ' => 'Ἧ',
-       'ἰ' => 'Ἰ',
-       'ἱ' => 'Ἱ',
-       'ἲ' => 'Ἲ',
-       'ἳ' => 'Ἳ',
-       'ἴ' => 'Ἴ',
-       'ἵ' => 'Ἵ',
-       'ἶ' => 'Ἶ',
-       'ἷ' => 'Ἷ',
-       'ὀ' => 'Ὀ',
-       'ὁ' => 'Ὁ',
-       'ὂ' => 'Ὂ',
-       'ὃ' => 'Ὃ',
-       'ὄ' => 'Ὄ',
-       'ὅ' => 'Ὅ',
-       'ὑ' => 'Ὑ',
-       'ὓ' => 'Ὓ',
-       'ὕ' => 'Ὕ',
-       'ὗ' => 'Ὗ',
-       'ὠ' => 'Ὠ',
-       'ὡ' => 'Ὡ',
-       'ὢ' => 'Ὢ',
-       'ὣ' => 'Ὣ',
-       'ὤ' => 'Ὤ',
-       'ὥ' => 'Ὥ',
-       'ὦ' => 'Ὦ',
-       'ὧ' => 'Ὧ',
-       'ὰ' => 'Ὰ',
-       'ά' => 'Ά',
-       'ὲ' => 'Ὲ',
-       'έ' => 'Έ',
-       'ὴ' => 'Ὴ',
-       'ή' => 'Ή',
-       'ὶ' => 'Ὶ',
-       'ί' => 'Ί',
-       'ὸ' => 'Ὸ',
-       'ό' => 'Ό',
-       'ὺ' => 'Ὺ',
-       'ύ' => 'Ύ',
-       'ὼ' => 'Ὼ',
-       'ώ' => 'Ώ',
-       'ᾀ' => 'ᾈ',
-       'ᾁ' => 'ᾉ',
-       'ᾂ' => 'ᾊ',
-       'ᾃ' => 'ᾋ',
-       'ᾄ' => 'ᾌ',
-       'ᾅ' => 'ᾍ',
-       'ᾆ' => 'ᾎ',
-       'ᾇ' => 'ᾏ',
-       'ᾐ' => 'ᾘ',
-       'ᾑ' => 'ᾙ',
-       'ᾒ' => 'ᾚ',
-       'ᾓ' => 'ᾛ',
-       'ᾔ' => 'ᾜ',
-       'ᾕ' => 'ᾝ',
-       'ᾖ' => 'ᾞ',
-       'ᾗ' => 'ᾟ',
-       'ᾠ' => 'ᾨ',
-       'ᾡ' => 'ᾩ',
-       'ᾢ' => 'ᾪ',
-       'ᾣ' => 'ᾫ',
-       'ᾤ' => 'ᾬ',
-       'ᾥ' => 'ᾭ',
-       'ᾦ' => 'ᾮ',
-       'ᾧ' => 'ᾯ',
-       'ᾰ' => 'Ᾰ',
-       'ᾱ' => 'Ᾱ',
-       'ᾳ' => 'ᾼ',
-       'ι' => 'Ι',
-       'ῃ' => 'ῌ',
-       'ῐ' => 'Ῐ',
-       'ῑ' => 'Ῑ',
-       'ῠ' => 'Ῠ',
-       'ῡ' => 'Ῡ',
-       'ῥ' => 'Ῥ',
-       'ῳ' => 'ῼ',
-       'ⅎ' => 'Ⅎ',
-       'ⅰ' => 'Ⅰ',
-       'ⅱ' => 'Ⅱ',
-       'ⅲ' => 'Ⅲ',
-       'ⅳ' => 'Ⅳ',
-       'ⅴ' => 'Ⅴ',
-       'ⅵ' => 'Ⅵ',
-       'ⅶ' => 'Ⅶ',
-       'ⅷ' => 'Ⅷ',
-       'ⅸ' => 'Ⅸ',
-       'ⅹ' => 'Ⅹ',
-       'ⅺ' => 'Ⅺ',
-       'ⅻ' => 'Ⅻ',
-       'ⅼ' => 'Ⅼ',
-       'ⅽ' => 'Ⅽ',
-       'ⅾ' => 'Ⅾ',
-       'ⅿ' => 'Ⅿ',
-       'ↄ' => 'Ↄ',
-       'ⓐ' => 'Ⓐ',
-       'ⓑ' => 'Ⓑ',
-       'ⓒ' => 'Ⓒ',
-       'ⓓ' => 'Ⓓ',
-       'ⓔ' => 'Ⓔ',
-       'ⓕ' => 'Ⓕ',
-       'ⓖ' => 'Ⓖ',
-       'ⓗ' => 'Ⓗ',
-       'ⓘ' => 'Ⓘ',
-       'ⓙ' => 'Ⓙ',
-       'ⓚ' => 'Ⓚ',
-       'ⓛ' => 'Ⓛ',
-       'ⓜ' => 'Ⓜ',
-       'ⓝ' => 'Ⓝ',
-       'ⓞ' => 'Ⓞ',
-       'ⓟ' => 'Ⓟ',
-       'ⓠ' => 'Ⓠ',
-       'ⓡ' => 'Ⓡ',
-       'ⓢ' => 'Ⓢ',
-       'ⓣ' => 'Ⓣ',
-       'ⓤ' => 'Ⓤ',
-       'ⓥ' => 'Ⓥ',
-       'ⓦ' => 'Ⓦ',
-       'ⓧ' => 'Ⓧ',
-       'ⓨ' => 'Ⓨ',
-       'ⓩ' => 'Ⓩ',
-       'ⰰ' => 'Ⰰ',
-       'ⰱ' => 'Ⰱ',
-       'ⰲ' => 'Ⰲ',
-       'ⰳ' => 'Ⰳ',
-       'ⰴ' => 'Ⰴ',
-       'ⰵ' => 'Ⰵ',
-       'ⰶ' => 'Ⰶ',
-       'ⰷ' => 'Ⰷ',
-       'ⰸ' => 'Ⰸ',
-       'ⰹ' => 'Ⰹ',
-       'ⰺ' => 'Ⰺ',
-       'ⰻ' => 'Ⰻ',
-       'ⰼ' => 'Ⰼ',
-       'ⰽ' => 'Ⰽ',
-       'ⰾ' => 'Ⰾ',
-       'ⰿ' => 'Ⰿ',
-       'ⱀ' => 'Ⱀ',
-       'ⱁ' => 'Ⱁ',
-       'ⱂ' => 'Ⱂ',
-       'ⱃ' => 'Ⱃ',
-       'ⱄ' => 'Ⱄ',
-       'ⱅ' => 'Ⱅ',
-       'ⱆ' => 'Ⱆ',
-       'ⱇ' => 'Ⱇ',
-       'ⱈ' => 'Ⱈ',
-       'ⱉ' => 'Ⱉ',
-       'ⱊ' => 'Ⱊ',
-       'ⱋ' => 'Ⱋ',
-       'ⱌ' => 'Ⱌ',
-       'ⱍ' => 'Ⱍ',
-       'ⱎ' => 'Ⱎ',
-       'ⱏ' => 'Ⱏ',
-       'ⱐ' => 'Ⱐ',
-       'ⱑ' => 'Ⱑ',
-       'ⱒ' => 'Ⱒ',
-       'ⱓ' => 'Ⱓ',
-       'ⱔ' => 'Ⱔ',
-       'ⱕ' => 'Ⱕ',
-       'ⱖ' => 'Ⱖ',
-       'ⱗ' => 'Ⱗ',
-       'ⱘ' => 'Ⱘ',
-       'ⱙ' => 'Ⱙ',
-       'ⱚ' => 'Ⱚ',
-       'ⱛ' => 'Ⱛ',
-       'ⱜ' => 'Ⱜ',
-       'ⱝ' => 'Ⱝ',
-       'ⱞ' => 'Ⱞ',
-       'ⱡ' => 'Ⱡ',
-       'ⱥ' => 'Ⱥ',
-       'ⱦ' => 'Ⱦ',
-       'ⱨ' => 'Ⱨ',
-       'ⱪ' => 'Ⱪ',
-       'ⱬ' => 'Ⱬ',
-       'ⱳ' => 'Ⱳ',
-       'ⱶ' => 'Ⱶ',
-       'ⲁ' => 'Ⲁ',
-       'ⲃ' => 'Ⲃ',
-       'ⲅ' => 'Ⲅ',
-       'ⲇ' => 'Ⲇ',
-       'ⲉ' => 'Ⲉ',
-       'ⲋ' => 'Ⲋ',
-       'ⲍ' => 'Ⲍ',
-       'ⲏ' => 'Ⲏ',
-       'ⲑ' => 'Ⲑ',
-       'ⲓ' => 'Ⲓ',
-       'ⲕ' => 'Ⲕ',
-       'ⲗ' => 'Ⲗ',
-       'ⲙ' => 'Ⲙ',
-       'ⲛ' => 'Ⲛ',
-       'ⲝ' => 'Ⲝ',
-       'ⲟ' => 'Ⲟ',
-       'ⲡ' => 'Ⲡ',
-       'ⲣ' => 'Ⲣ',
-       'ⲥ' => 'Ⲥ',
-       'ⲧ' => 'Ⲧ',
-       'ⲩ' => 'Ⲩ',
-       'ⲫ' => 'Ⲫ',
-       'ⲭ' => 'Ⲭ',
-       'ⲯ' => 'Ⲯ',
-       'ⲱ' => 'Ⲱ',
-       'ⲳ' => 'Ⲳ',
-       'ⲵ' => 'Ⲵ',
-       'ⲷ' => 'Ⲷ',
-       'ⲹ' => 'Ⲹ',
-       'ⲻ' => 'Ⲻ',
-       'ⲽ' => 'Ⲽ',
-       'ⲿ' => 'Ⲿ',
-       'ⳁ' => 'Ⳁ',
-       'ⳃ' => 'Ⳃ',
-       'ⳅ' => 'Ⳅ',
-       'ⳇ' => 'Ⳇ',
-       'ⳉ' => 'Ⳉ',
-       'ⳋ' => 'Ⳋ',
-       'ⳍ' => 'Ⳍ',
-       'ⳏ' => 'Ⳏ',
-       'ⳑ' => 'Ⳑ',
-       'ⳓ' => 'Ⳓ',
-       'ⳕ' => 'Ⳕ',
-       'ⳗ' => 'Ⳗ',
-       'ⳙ' => 'Ⳙ',
-       'ⳛ' => 'Ⳛ',
-       'ⳝ' => 'Ⳝ',
-       'ⳟ' => 'Ⳟ',
-       'ⳡ' => 'Ⳡ',
-       'ⳣ' => 'Ⳣ',
-       'ⳬ' => 'Ⳬ',
-       'ⳮ' => 'Ⳮ',
-       'ⴀ' => 'Ⴀ',
-       'ⴁ' => 'Ⴁ',
-       'ⴂ' => 'Ⴂ',
-       'ⴃ' => 'Ⴃ',
-       'ⴄ' => 'Ⴄ',
-       'ⴅ' => 'Ⴅ',
-       'ⴆ' => 'Ⴆ',
-       'ⴇ' => 'Ⴇ',
-       'ⴈ' => 'Ⴈ',
-       'ⴉ' => 'Ⴉ',
-       'ⴊ' => 'Ⴊ',
-       'ⴋ' => 'Ⴋ',
-       'ⴌ' => 'Ⴌ',
-       'ⴍ' => 'Ⴍ',
-       'ⴎ' => 'Ⴎ',
-       'ⴏ' => 'Ⴏ',
-       'ⴐ' => 'Ⴐ',
-       'ⴑ' => 'Ⴑ',
-       'ⴒ' => 'Ⴒ',
-       'ⴓ' => 'Ⴓ',
-       'ⴔ' => 'Ⴔ',
-       'ⴕ' => 'Ⴕ',
-       'ⴖ' => 'Ⴖ',
-       'ⴗ' => 'Ⴗ',
-       'ⴘ' => 'Ⴘ',
-       'ⴙ' => 'Ⴙ',
-       'ⴚ' => 'Ⴚ',
-       'ⴛ' => 'Ⴛ',
-       'ⴜ' => 'Ⴜ',
-       'ⴝ' => 'Ⴝ',
-       'ⴞ' => 'Ⴞ',
-       'ⴟ' => 'Ⴟ',
-       'ⴠ' => 'Ⴠ',
-       'ⴡ' => 'Ⴡ',
-       'ⴢ' => 'Ⴢ',
-       'ⴣ' => 'Ⴣ',
-       'ⴤ' => 'Ⴤ',
-       'ⴥ' => 'Ⴥ',
-       'ꙁ' => 'Ꙁ',
-       'ꙃ' => 'Ꙃ',
-       'ꙅ' => 'Ꙅ',
-       'ꙇ' => 'Ꙇ',
-       'ꙉ' => 'Ꙉ',
-       'ꙋ' => 'Ꙋ',
-       'ꙍ' => 'Ꙍ',
-       'ꙏ' => 'Ꙏ',
-       'ꙑ' => 'Ꙑ',
-       'ꙓ' => 'Ꙓ',
-       'ꙕ' => 'Ꙕ',
-       'ꙗ' => 'Ꙗ',
-       'ꙙ' => 'Ꙙ',
-       'ꙛ' => 'Ꙛ',
-       'ꙝ' => 'Ꙝ',
-       'ꙟ' => 'Ꙟ',
-       'ꙡ' => 'Ꙡ',
-       'ꙣ' => 'Ꙣ',
-       'ꙥ' => 'Ꙥ',
-       'ꙧ' => 'Ꙧ',
-       'ꙩ' => 'Ꙩ',
-       'ꙫ' => 'Ꙫ',
-       'ꙭ' => 'Ꙭ',
-       'ꚁ' => 'Ꚁ',
-       'ꚃ' => 'Ꚃ',
-       'ꚅ' => 'Ꚅ',
-       'ꚇ' => 'Ꚇ',
-       'ꚉ' => 'Ꚉ',
-       'ꚋ' => 'Ꚋ',
-       'ꚍ' => 'Ꚍ',
-       'ꚏ' => 'Ꚏ',
-       'ꚑ' => 'Ꚑ',
-       'ꚓ' => 'Ꚓ',
-       'ꚕ' => 'Ꚕ',
-       'ꚗ' => 'Ꚗ',
-       'ꜣ' => 'Ꜣ',
-       'ꜥ' => 'Ꜥ',
-       'ꜧ' => 'Ꜧ',
-       'ꜩ' => 'Ꜩ',
-       'ꜫ' => 'Ꜫ',
-       'ꜭ' => 'Ꜭ',
-       'ꜯ' => 'Ꜯ',
-       'ꜳ' => 'Ꜳ',
-       'ꜵ' => 'Ꜵ',
-       'ꜷ' => 'Ꜷ',
-       'ꜹ' => 'Ꜹ',
-       'ꜻ' => 'Ꜻ',
-       'ꜽ' => 'Ꜽ',
-       'ꜿ' => 'Ꜿ',
-       'ꝁ' => 'Ꝁ',
-       'ꝃ' => 'Ꝃ',
-       'ꝅ' => 'Ꝅ',
-       'ꝇ' => 'Ꝇ',
-       'ꝉ' => 'Ꝉ',
-       'ꝋ' => 'Ꝋ',
-       'ꝍ' => 'Ꝍ',
-       'ꝏ' => 'Ꝏ',
-       'ꝑ' => 'Ꝑ',
-       'ꝓ' => 'Ꝓ',
-       'ꝕ' => 'Ꝕ',
-       'ꝗ' => 'Ꝗ',
-       'ꝙ' => 'Ꝙ',
-       'ꝛ' => 'Ꝛ',
-       'ꝝ' => 'Ꝝ',
-       'ꝟ' => 'Ꝟ',
-       'ꝡ' => 'Ꝡ',
-       'ꝣ' => 'Ꝣ',
-       'ꝥ' => 'Ꝥ',
-       'ꝧ' => 'Ꝧ',
-       'ꝩ' => 'Ꝩ',
-       'ꝫ' => 'Ꝫ',
-       'ꝭ' => 'Ꝭ',
-       'ꝯ' => 'Ꝯ',
-       'ꝺ' => 'Ꝺ',
-       'ꝼ' => 'Ꝼ',
-       'ꝿ' => 'Ꝿ',
-       'ꞁ' => 'Ꞁ',
-       'ꞃ' => 'Ꞃ',
-       'ꞅ' => 'Ꞅ',
-       'ꞇ' => 'Ꞇ',
-       'ꞌ' => 'Ꞌ',
-       'ꞑ' => 'Ꞑ',
-       'ꞡ' => 'Ꞡ',
-       'ꞣ' => 'Ꞣ',
-       'ꞥ' => 'Ꞥ',
-       'ꞧ' => 'Ꞧ',
-       'ꞩ' => 'Ꞩ',
-       'a' => 'A',
-       'b' => 'B',
-       'c' => 'C',
-       'd' => 'D',
-       'e' => 'E',
-       'f' => 'F',
-       'g' => 'G',
-       'h' => 'H',
-       'i' => 'I',
-       'j' => 'J',
-       'k' => 'K',
-       'l' => 'L',
-       'm' => 'M',
-       'n' => 'N',
-       'o' => 'O',
-       'p' => 'P',
-       'q' => 'Q',
-       'r' => 'R',
-       's' => 'S',
-       't' => 'T',
-       'u' => 'U',
-       'v' => 'V',
-       'w' => 'W',
-       'x' => 'X',
-       'y' => 'Y',
-       'z' => 'Z',
-       '𐐨' => '𐐀',
-       '𐐩' => '𐐁',
-       '𐐪' => '𐐂',
-       '𐐫' => '𐐃',
-       '𐐬' => '𐐄',
-       '𐐭' => '𐐅',
-       '𐐮' => '𐐆',
-       '𐐯' => '𐐇',
-       '𐐰' => '𐐈',
-       '𐐱' => '𐐉',
-       '𐐲' => '𐐊',
-       '𐐳' => '𐐋',
-       '𐐴' => '𐐌',
-       '𐐵' => '𐐍',
-       '𐐶' => '𐐎',
-       '𐐷' => '𐐏',
-       '𐐸' => '𐐐',
-       '𐐹' => '𐐑',
-       '𐐺' => '𐐒',
-       '𐐻' => '𐐓',
-       '𐐼' => '𐐔',
-       '𐐽' => '𐐕',
-       '𐐾' => '𐐖',
-       '𐐿' => '𐐗',
-       '𐑀' => '𐐘',
-       '𐑁' => '𐐙',
-       '𐑂' => '𐐚',
-       '𐑃' => '𐐛',
-       '𐑄' => '𐐜',
-       '𐑅' => '𐐝',
-       '𐑆' => '𐐞',
-       '𐑇' => '𐐟',
-       '𐑈' => '𐐠',
-       '𐑉' => '𐐡',
-       '𐑊' => '𐐢',
-       '𐑋' => '𐐣',
-       '𐑌' => '𐐤',
-       '𐑍' => '𐐥',
-       '𐑎' => '𐐦',
-       '𐑏' => '𐐧'
-);
-
-/**
- * Translation array to get lower case character
- */
-$wikiLowerChars = array(
-       'A' => 'a',
-       'B' => 'b',
-       'C' => 'c',
-       'D' => 'd',
-       'E' => 'e',
-       'F' => 'f',
-       'G' => 'g',
-       'H' => 'h',
-       'I' => 'i',
-       'J' => 'j',
-       'K' => 'k',
-       'L' => 'l',
-       'M' => 'm',
-       'N' => 'n',
-       'O' => 'o',
-       'P' => 'p',
-       'Q' => 'q',
-       'R' => 'r',
-       'S' => 's',
-       'T' => 't',
-       'U' => 'u',
-       'V' => 'v',
-       'W' => 'w',
-       'X' => 'x',
-       'Y' => 'y',
-       'Z' => 'z',
-       'À' => 'à',
-       'Á' => 'á',
-       'Â' => 'â',
-       'Ã' => 'ã',
-       'Ä' => 'ä',
-       'Å' => 'å',
-       'Æ' => 'æ',
-       'Ç' => 'ç',
-       'È' => 'è',
-       'É' => 'é',
-       'Ê' => 'ê',
-       'Ë' => 'ë',
-       'Ì' => 'ì',
-       'Í' => 'í',
-       'Î' => 'î',
-       'Ï' => 'ï',
-       'Ð' => 'ð',
-       'Ñ' => 'ñ',
-       'Ò' => 'ò',
-       'Ó' => 'ó',
-       'Ô' => 'ô',
-       'Õ' => 'õ',
-       'Ö' => 'ö',
-       'Ø' => 'ø',
-       'Ù' => 'ù',
-       'Ú' => 'ú',
-       'Û' => 'û',
-       'Ü' => 'ü',
-       'Ý' => 'ý',
-       'Þ' => 'þ',
-       'Ā' => 'ā',
-       'Ă' => 'ă',
-       'Ą' => 'ą',
-       'Ć' => 'ć',
-       'Ĉ' => 'ĉ',
-       'Ċ' => 'ċ',
-       'Č' => 'č',
-       'Ď' => 'ď',
-       'Đ' => 'đ',
-       'Ē' => 'ē',
-       'Ĕ' => 'ĕ',
-       'Ė' => 'ė',
-       'Ę' => 'ę',
-       'Ě' => 'ě',
-       'Ĝ' => 'ĝ',
-       'Ğ' => 'ğ',
-       'Ġ' => 'ġ',
-       'Ģ' => 'ģ',
-       'Ĥ' => 'ĥ',
-       'Ħ' => 'ħ',
-       'Ĩ' => 'ĩ',
-       'Ī' => 'ī',
-       'Ĭ' => 'ĭ',
-       'Į' => 'į',
-       'İ' => 'i',
-       'IJ' => 'ij',
-       'Ĵ' => 'ĵ',
-       'Ķ' => 'ķ',
-       'Ĺ' => 'ĺ',
-       'Ļ' => 'ļ',
-       'Ľ' => 'ľ',
-       'Ŀ' => 'ŀ',
-       'Ł' => 'ł',
-       'Ń' => 'ń',
-       'Ņ' => 'ņ',
-       'Ň' => 'ň',
-       'Ŋ' => 'ŋ',
-       'Ō' => 'ō',
-       'Ŏ' => 'ŏ',
-       'Ő' => 'ő',
-       'Œ' => 'œ',
-       'Ŕ' => 'ŕ',
-       'Ŗ' => 'ŗ',
-       'Ř' => 'ř',
-       'Ś' => 'ś',
-       'Ŝ' => 'ŝ',
-       'Ş' => 'ş',
-       'Š' => 'š',
-       'Ţ' => 'ţ',
-       'Ť' => 'ť',
-       'Ŧ' => 'ŧ',
-       'Ũ' => 'ũ',
-       'Ū' => 'ū',
-       'Ŭ' => 'ŭ',
-       'Ů' => 'ů',
-       'Ű' => 'ű',
-       'Ų' => 'ų',
-       'Ŵ' => 'ŵ',
-       'Ŷ' => 'ŷ',
-       'Ÿ' => 'ÿ',
-       'Ź' => 'ź',
-       'Ż' => 'ż',
-       'Ž' => 'ž',
-       'Ɓ' => 'ɓ',
-       'Ƃ' => 'ƃ',
-       'Ƅ' => 'ƅ',
-       'Ɔ' => 'ɔ',
-       'Ƈ' => 'ƈ',
-       'Ɖ' => 'ɖ',
-       'Ɗ' => 'ɗ',
-       'Ƌ' => 'ƌ',
-       'Ǝ' => 'ǝ',
-       'Ə' => 'ə',
-       'Ɛ' => 'ɛ',
-       'Ƒ' => 'ƒ',
-       'Ɠ' => 'ɠ',
-       'Ɣ' => 'ɣ',
-       'Ɩ' => 'ɩ',
-       'Ɨ' => 'ɨ',
-       'Ƙ' => 'ƙ',
-       'Ɯ' => 'ɯ',
-       'Ɲ' => 'ɲ',
-       'Ɵ' => 'ɵ',
-       'Ơ' => 'ơ',
-       'Ƣ' => 'ƣ',
-       'Ƥ' => 'ƥ',
-       'Ʀ' => 'ʀ',
-       'Ƨ' => 'ƨ',
-       'Ʃ' => 'ʃ',
-       'Ƭ' => 'ƭ',
-       'Ʈ' => 'ʈ',
-       'Ư' => 'ư',
-       'Ʊ' => 'ʊ',
-       'Ʋ' => 'ʋ',
-       'Ƴ' => 'ƴ',
-       'Ƶ' => 'ƶ',
-       'Ʒ' => 'ʒ',
-       'Ƹ' => 'ƹ',
-       'Ƽ' => 'ƽ',
-       'DŽ' => 'dž',
-       'Dž' => 'dž',
-       'LJ' => 'lj',
-       'Lj' => 'lj',
-       'NJ' => 'nj',
-       'Nj' => 'nj',
-       'Ǎ' => 'ǎ',
-       'Ǐ' => 'ǐ',
-       'Ǒ' => 'ǒ',
-       'Ǔ' => 'ǔ',
-       'Ǖ' => 'ǖ',
-       'Ǘ' => 'ǘ',
-       'Ǚ' => 'ǚ',
-       'Ǜ' => 'ǜ',
-       'Ǟ' => 'ǟ',
-       'Ǡ' => 'ǡ',
-       'Ǣ' => 'ǣ',
-       'Ǥ' => 'ǥ',
-       'Ǧ' => 'ǧ',
-       'Ǩ' => 'ǩ',
-       'Ǫ' => 'ǫ',
-       'Ǭ' => 'ǭ',
-       'Ǯ' => 'ǯ',
-       'DZ' => 'dz',
-       'Dz' => 'dz',
-       'Ǵ' => 'ǵ',
-       'Ƕ' => 'ƕ',
-       'Ƿ' => 'ƿ',
-       'Ǹ' => 'ǹ',
-       'Ǻ' => 'ǻ',
-       'Ǽ' => 'ǽ',
-       'Ǿ' => 'ǿ',
-       'Ȁ' => 'ȁ',
-       'Ȃ' => 'ȃ',
-       'Ȅ' => 'ȅ',
-       'Ȇ' => 'ȇ',
-       'Ȉ' => 'ȉ',
-       'Ȋ' => 'ȋ',
-       'Ȍ' => 'ȍ',
-       'Ȏ' => 'ȏ',
-       'Ȑ' => 'ȑ',
-       'Ȓ' => 'ȓ',
-       'Ȕ' => 'ȕ',
-       'Ȗ' => 'ȗ',
-       'Ș' => 'ș',
-       'Ț' => 'ț',
-       'Ȝ' => 'ȝ',
-       'Ȟ' => 'ȟ',
-       'Ƞ' => 'ƞ',
-       'Ȣ' => 'ȣ',
-       'Ȥ' => 'ȥ',
-       'Ȧ' => 'ȧ',
-       'Ȩ' => 'ȩ',
-       'Ȫ' => 'ȫ',
-       'Ȭ' => 'ȭ',
-       'Ȯ' => 'ȯ',
-       'Ȱ' => 'ȱ',
-       'Ȳ' => 'ȳ',
-       'Ⱥ' => 'ⱥ',
-       'Ȼ' => 'ȼ',
-       'Ƚ' => 'ƚ',
-       'Ⱦ' => 'ⱦ',
-       'Ɂ' => 'ɂ',
-       'Ƀ' => 'ƀ',
-       'Ʉ' => 'ʉ',
-       'Ʌ' => 'ʌ',
-       'Ɇ' => 'ɇ',
-       'Ɉ' => 'ɉ',
-       'Ɋ' => 'ɋ',
-       'Ɍ' => 'ɍ',
-       'Ɏ' => 'ɏ',
-       'Ͱ' => 'ͱ',
-       'Ͳ' => 'ͳ',
-       'Ͷ' => 'ͷ',
-       'Ά' => 'ά',
-       'Έ' => 'έ',
-       'Ή' => 'ή',
-       'Ί' => 'ί',
-       'Ό' => 'ό',
-       'Ύ' => 'ύ',
-       'Ώ' => 'ώ',
-       'Α' => 'α',
-       'Β' => 'β',
-       'Γ' => 'γ',
-       'Δ' => 'δ',
-       'Ε' => 'ε',
-       'Ζ' => 'ζ',
-       'Η' => 'η',
-       'Θ' => 'θ',
-       'Ι' => 'ι',
-       'Κ' => 'κ',
-       'Λ' => 'λ',
-       'Μ' => 'μ',
-       'Ν' => 'ν',
-       'Ξ' => 'ξ',
-       'Ο' => 'ο',
-       'Π' => 'π',
-       'Ρ' => 'ρ',
-       'Σ' => 'σ',
-       'Τ' => 'τ',
-       'Υ' => 'υ',
-       'Φ' => 'φ',
-       'Χ' => 'χ',
-       'Ψ' => 'ψ',
-       'Ω' => 'ω',
-       'Ϊ' => 'ϊ',
-       'Ϋ' => 'ϋ',
-       'Ϗ' => 'ϗ',
-       'Ϙ' => 'ϙ',
-       'Ϛ' => 'ϛ',
-       'Ϝ' => 'ϝ',
-       'Ϟ' => 'ϟ',
-       'Ϡ' => 'ϡ',
-       'Ϣ' => 'ϣ',
-       'Ϥ' => 'ϥ',
-       'Ϧ' => 'ϧ',
-       'Ϩ' => 'ϩ',
-       'Ϫ' => 'ϫ',
-       'Ϭ' => 'ϭ',
-       'Ϯ' => 'ϯ',
-       'ϴ' => 'θ',
-       'Ϸ' => 'ϸ',
-       'Ϲ' => 'ϲ',
-       'Ϻ' => 'ϻ',
-       'Ͻ' => 'ͻ',
-       'Ͼ' => 'ͼ',
-       'Ͽ' => 'ͽ',
-       'Ѐ' => 'ѐ',
-       'Ё' => 'ё',
-       'Ђ' => 'ђ',
-       'Ѓ' => 'ѓ',
-       'Є' => 'є',
-       'Ѕ' => 'ѕ',
-       'І' => 'і',
-       'Ї' => 'ї',
-       'Ј' => 'ј',
-       'Љ' => 'љ',
-       'Њ' => 'њ',
-       'Ћ' => 'ћ',
-       'Ќ' => 'ќ',
-       'Ѝ' => 'ѝ',
-       'Ў' => 'ў',
-       'Џ' => 'џ',
-       'А' => 'а',
-       'Б' => 'б',
-       'В' => 'в',
-       'Г' => 'г',
-       'Д' => 'д',
-       'Е' => 'е',
-       'Ж' => 'ж',
-       'З' => 'з',
-       'И' => 'и',
-       'Й' => 'й',
-       'К' => 'к',
-       'Л' => 'л',
-       'М' => 'м',
-       'Н' => 'н',
-       'О' => 'о',
-       'П' => 'п',
-       'Р' => 'р',
-       'С' => 'с',
-       'Т' => 'т',
-       'У' => 'у',
-       'Ф' => 'ф',
-       'Х' => 'х',
-       'Ц' => 'ц',
-       'Ч' => 'ч',
-       'Ш' => 'ш',
-       'Щ' => 'щ',
-       'Ъ' => 'ъ',
-       'Ы' => 'ы',
-       'Ь' => 'ь',
-       'Э' => 'э',
-       'Ю' => 'ю',
-       'Я' => 'я',
-       'Ѡ' => 'ѡ',
-       'Ѣ' => 'ѣ',
-       'Ѥ' => 'ѥ',
-       'Ѧ' => 'ѧ',
-       'Ѩ' => 'ѩ',
-       'Ѫ' => 'ѫ',
-       'Ѭ' => 'ѭ',
-       'Ѯ' => 'ѯ',
-       'Ѱ' => 'ѱ',
-       'Ѳ' => 'ѳ',
-       'Ѵ' => 'ѵ',
-       'Ѷ' => 'ѷ',
-       'Ѹ' => 'ѹ',
-       'Ѻ' => 'ѻ',
-       'Ѽ' => 'ѽ',
-       'Ѿ' => 'ѿ',
-       'Ҁ' => 'ҁ',
-       'Ҋ' => 'ҋ',
-       'Ҍ' => 'ҍ',
-       'Ҏ' => 'ҏ',
-       'Ґ' => 'ґ',
-       'Ғ' => 'ғ',
-       'Ҕ' => 'ҕ',
-       'Җ' => 'җ',
-       'Ҙ' => 'ҙ',
-       'Қ' => 'қ',
-       'Ҝ' => 'ҝ',
-       'Ҟ' => 'ҟ',
-       'Ҡ' => 'ҡ',
-       'Ң' => 'ң',
-       'Ҥ' => 'ҥ',
-       'Ҧ' => 'ҧ',
-       'Ҩ' => 'ҩ',
-       'Ҫ' => 'ҫ',
-       'Ҭ' => 'ҭ',
-       'Ү' => 'ү',
-       'Ұ' => 'ұ',
-       'Ҳ' => 'ҳ',
-       'Ҵ' => 'ҵ',
-       'Ҷ' => 'ҷ',
-       'Ҹ' => 'ҹ',
-       'Һ' => 'һ',
-       'Ҽ' => 'ҽ',
-       'Ҿ' => 'ҿ',
-       'Ӏ' => 'ӏ',
-       'Ӂ' => 'ӂ',
-       'Ӄ' => 'ӄ',
-       'Ӆ' => 'ӆ',
-       'Ӈ' => 'ӈ',
-       'Ӊ' => 'ӊ',
-       'Ӌ' => 'ӌ',
-       'Ӎ' => 'ӎ',
-       'Ӑ' => 'ӑ',
-       'Ӓ' => 'ӓ',
-       'Ӕ' => 'ӕ',
-       'Ӗ' => 'ӗ',
-       'Ә' => 'ә',
-       'Ӛ' => 'ӛ',
-       'Ӝ' => 'ӝ',
-       'Ӟ' => 'ӟ',
-       'Ӡ' => 'ӡ',
-       'Ӣ' => 'ӣ',
-       'Ӥ' => 'ӥ',
-       'Ӧ' => 'ӧ',
-       'Ө' => 'ө',
-       'Ӫ' => 'ӫ',
-       'Ӭ' => 'ӭ',
-       'Ӯ' => 'ӯ',
-       'Ӱ' => 'ӱ',
-       'Ӳ' => 'ӳ',
-       'Ӵ' => 'ӵ',
-       'Ӷ' => 'ӷ',
-       'Ӹ' => 'ӹ',
-       'Ӻ' => 'ӻ',
-       'Ӽ' => 'ӽ',
-       'Ӿ' => 'ӿ',
-       'Ԁ' => 'ԁ',
-       'Ԃ' => 'ԃ',
-       'Ԅ' => 'ԅ',
-       'Ԇ' => 'ԇ',
-       'Ԉ' => 'ԉ',
-       'Ԋ' => 'ԋ',
-       'Ԍ' => 'ԍ',
-       'Ԏ' => 'ԏ',
-       'Ԑ' => 'ԑ',
-       'Ԓ' => 'ԓ',
-       'Ԕ' => 'ԕ',
-       'Ԗ' => 'ԗ',
-       'Ԙ' => 'ԙ',
-       'Ԛ' => 'ԛ',
-       'Ԝ' => 'ԝ',
-       'Ԟ' => 'ԟ',
-       'Ԡ' => 'ԡ',
-       'Ԣ' => 'ԣ',
-       'Ԥ' => 'ԥ',
-       'Ԧ' => 'ԧ',
-       'Ա' => 'ա',
-       'Բ' => 'բ',
-       'Գ' => 'գ',
-       'Դ' => 'դ',
-       'Ե' => 'ե',
-       'Զ' => 'զ',
-       'Է' => 'է',
-       'Ը' => 'ը',
-       'Թ' => 'թ',
-       'Ժ' => 'ժ',
-       'Ի' => 'ի',
-       'Լ' => 'լ',
-       'Խ' => 'խ',
-       'Ծ' => 'ծ',
-       'Կ' => 'կ',
-       'Հ' => 'հ',
-       'Ձ' => 'ձ',
-       'Ղ' => 'ղ',
-       'Ճ' => 'ճ',
-       'Մ' => 'մ',
-       'Յ' => 'յ',
-       'Ն' => 'ն',
-       'Շ' => 'շ',
-       'Ո' => 'ո',
-       'Չ' => 'չ',
-       'Պ' => 'պ',
-       'Ջ' => 'ջ',
-       'Ռ' => 'ռ',
-       'Ս' => 'ս',
-       'Վ' => 'վ',
-       'Տ' => 'տ',
-       'Ր' => 'ր',
-       'Ց' => 'ց',
-       'Ւ' => 'ւ',
-       'Փ' => 'փ',
-       'Ք' => 'ք',
-       'Օ' => 'օ',
-       'Ֆ' => 'ֆ',
-       'Ⴀ' => 'ⴀ',
-       'Ⴁ' => 'ⴁ',
-       'Ⴂ' => 'ⴂ',
-       'Ⴃ' => 'ⴃ',
-       'Ⴄ' => 'ⴄ',
-       'Ⴅ' => 'ⴅ',
-       'Ⴆ' => 'ⴆ',
-       'Ⴇ' => 'ⴇ',
-       'Ⴈ' => 'ⴈ',
-       'Ⴉ' => 'ⴉ',
-       'Ⴊ' => 'ⴊ',
-       'Ⴋ' => 'ⴋ',
-       'Ⴌ' => 'ⴌ',
-       'Ⴍ' => 'ⴍ',
-       'Ⴎ' => 'ⴎ',
-       'Ⴏ' => 'ⴏ',
-       'Ⴐ' => 'ⴐ',
-       'Ⴑ' => 'ⴑ',
-       'Ⴒ' => 'ⴒ',
-       'Ⴓ' => 'ⴓ',
-       'Ⴔ' => 'ⴔ',
-       'Ⴕ' => 'ⴕ',
-       'Ⴖ' => 'ⴖ',
-       'Ⴗ' => 'ⴗ',
-       'Ⴘ' => 'ⴘ',
-       'Ⴙ' => 'ⴙ',
-       'Ⴚ' => 'ⴚ',
-       'Ⴛ' => 'ⴛ',
-       'Ⴜ' => 'ⴜ',
-       'Ⴝ' => 'ⴝ',
-       'Ⴞ' => 'ⴞ',
-       'Ⴟ' => 'ⴟ',
-       'Ⴠ' => 'ⴠ',
-       'Ⴡ' => 'ⴡ',
-       'Ⴢ' => 'ⴢ',
-       'Ⴣ' => 'ⴣ',
-       'Ⴤ' => 'ⴤ',
-       'Ⴥ' => 'ⴥ',
-       'Ḁ' => 'ḁ',
-       'Ḃ' => 'ḃ',
-       'Ḅ' => 'ḅ',
-       'Ḇ' => 'ḇ',
-       'Ḉ' => 'ḉ',
-       'Ḋ' => 'ḋ',
-       'Ḍ' => 'ḍ',
-       'Ḏ' => 'ḏ',
-       'Ḑ' => 'ḑ',
-       'Ḓ' => 'ḓ',
-       'Ḕ' => 'ḕ',
-       'Ḗ' => 'ḗ',
-       'Ḙ' => 'ḙ',
-       'Ḛ' => 'ḛ',
-       'Ḝ' => 'ḝ',
-       'Ḟ' => 'ḟ',
-       'Ḡ' => 'ḡ',
-       'Ḣ' => 'ḣ',
-       'Ḥ' => 'ḥ',
-       'Ḧ' => 'ḧ',
-       'Ḩ' => 'ḩ',
-       'Ḫ' => 'ḫ',
-       'Ḭ' => 'ḭ',
-       'Ḯ' => 'ḯ',
-       'Ḱ' => 'ḱ',
-       'Ḳ' => 'ḳ',
-       'Ḵ' => 'ḵ',
-       'Ḷ' => 'ḷ',
-       'Ḹ' => 'ḹ',
-       'Ḻ' => 'ḻ',
-       'Ḽ' => 'ḽ',
-       'Ḿ' => 'ḿ',
-       'Ṁ' => 'ṁ',
-       'Ṃ' => 'ṃ',
-       'Ṅ' => 'ṅ',
-       'Ṇ' => 'ṇ',
-       'Ṉ' => 'ṉ',
-       'Ṋ' => 'ṋ',
-       'Ṍ' => 'ṍ',
-       'Ṏ' => 'ṏ',
-       'Ṑ' => 'ṑ',
-       'Ṓ' => 'ṓ',
-       'Ṕ' => 'ṕ',
-       'Ṗ' => 'ṗ',
-       'Ṙ' => 'ṙ',
-       'Ṛ' => 'ṛ',
-       'Ṝ' => 'ṝ',
-       'Ṟ' => 'ṟ',
-       'Ṡ' => 'ṡ',
-       'Ṣ' => 'ṣ',
-       'Ṥ' => 'ṥ',
-       'Ṧ' => 'ṧ',
-       'Ṩ' => 'ṩ',
-       'Ṫ' => 'ṫ',
-       'Ṭ' => 'ṭ',
-       'Ṯ' => 'ṯ',
-       'Ṱ' => 'ṱ',
-       'Ṳ' => 'ṳ',
-       'Ṵ' => 'ṵ',
-       'Ṷ' => 'ṷ',
-       'Ṹ' => 'ṹ',
-       'Ṻ' => 'ṻ',
-       'Ṽ' => 'ṽ',
-       'Ṿ' => 'ṿ',
-       'Ẁ' => 'ẁ',
-       'Ẃ' => 'ẃ',
-       'Ẅ' => 'ẅ',
-       'Ẇ' => 'ẇ',
-       'Ẉ' => 'ẉ',
-       'Ẋ' => 'ẋ',
-       'Ẍ' => 'ẍ',
-       'Ẏ' => 'ẏ',
-       'Ẑ' => 'ẑ',
-       'Ẓ' => 'ẓ',
-       'Ẕ' => 'ẕ',
-       'ẞ' => 'ß',
-       'Ạ' => 'ạ',
-       'Ả' => 'ả',
-       'Ấ' => 'ấ',
-       'Ầ' => 'ầ',
-       'Ẩ' => 'ẩ',
-       'Ẫ' => 'ẫ',
-       'Ậ' => 'ậ',
-       'Ắ' => 'ắ',
-       'Ằ' => 'ằ',
-       'Ẳ' => 'ẳ',
-       'Ẵ' => 'ẵ',
-       'Ặ' => 'ặ',
-       'Ẹ' => 'ẹ',
-       'Ẻ' => 'ẻ',
-       'Ẽ' => 'ẽ',
-       'Ế' => 'ế',
-       'Ề' => 'ề',
-       'Ể' => 'ể',
-       'Ễ' => 'ễ',
-       'Ệ' => 'ệ',
-       'Ỉ' => 'ỉ',
-       'Ị' => 'ị',
-       'Ọ' => 'ọ',
-       'Ỏ' => 'ỏ',
-       'Ố' => 'ố',
-       'Ồ' => 'ồ',
-       'Ổ' => 'ổ',
-       'Ỗ' => 'ỗ',
-       'Ộ' => 'ộ',
-       'Ớ' => 'ớ',
-       'Ờ' => 'ờ',
-       'Ở' => 'ở',
-       'Ỡ' => 'ỡ',
-       'Ợ' => 'ợ',
-       'Ụ' => 'ụ',
-       'Ủ' => 'ủ',
-       'Ứ' => 'ứ',
-       'Ừ' => 'ừ',
-       'Ử' => 'ử',
-       'Ữ' => 'ữ',
-       'Ự' => 'ự',
-       'Ỳ' => 'ỳ',
-       'Ỵ' => 'ỵ',
-       'Ỷ' => 'ỷ',
-       'Ỹ' => 'ỹ',
-       'Ỻ' => 'ỻ',
-       'Ỽ' => 'ỽ',
-       'Ỿ' => 'ỿ',
-       'Ἀ' => 'ἀ',
-       'Ἁ' => 'ἁ',
-       'Ἂ' => 'ἂ',
-       'Ἃ' => 'ἃ',
-       'Ἄ' => 'ἄ',
-       'Ἅ' => 'ἅ',
-       'Ἆ' => 'ἆ',
-       'Ἇ' => 'ἇ',
-       'Ἐ' => 'ἐ',
-       'Ἑ' => 'ἑ',
-       'Ἒ' => 'ἒ',
-       'Ἓ' => 'ἓ',
-       'Ἔ' => 'ἔ',
-       'Ἕ' => 'ἕ',
-       'Ἠ' => 'ἠ',
-       'Ἡ' => 'ἡ',
-       'Ἢ' => 'ἢ',
-       'Ἣ' => 'ἣ',
-       'Ἤ' => 'ἤ',
-       'Ἥ' => 'ἥ',
-       'Ἦ' => 'ἦ',
-       'Ἧ' => 'ἧ',
-       'Ἰ' => 'ἰ',
-       'Ἱ' => 'ἱ',
-       'Ἲ' => 'ἲ',
-       'Ἳ' => 'ἳ',
-       'Ἴ' => 'ἴ',
-       'Ἵ' => 'ἵ',
-       'Ἶ' => 'ἶ',
-       'Ἷ' => 'ἷ',
-       'Ὀ' => 'ὀ',
-       'Ὁ' => 'ὁ',
-       'Ὂ' => 'ὂ',
-       'Ὃ' => 'ὃ',
-       'Ὄ' => 'ὄ',
-       'Ὅ' => 'ὅ',
-       'Ὑ' => 'ὑ',
-       'Ὓ' => 'ὓ',
-       'Ὕ' => 'ὕ',
-       'Ὗ' => 'ὗ',
-       'Ὠ' => 'ὠ',
-       'Ὡ' => 'ὡ',
-       'Ὢ' => 'ὢ',
-       'Ὣ' => 'ὣ',
-       'Ὤ' => 'ὤ',
-       'Ὥ' => 'ὥ',
-       'Ὦ' => 'ὦ',
-       'Ὧ' => 'ὧ',
-       'ᾈ' => 'ᾀ',
-       'ᾉ' => 'ᾁ',
-       'ᾊ' => 'ᾂ',
-       'ᾋ' => 'ᾃ',
-       'ᾌ' => 'ᾄ',
-       'ᾍ' => 'ᾅ',
-       'ᾎ' => 'ᾆ',
-       'ᾏ' => 'ᾇ',
-       'ᾘ' => 'ᾐ',
-       'ᾙ' => 'ᾑ',
-       'ᾚ' => 'ᾒ',
-       'ᾛ' => 'ᾓ',
-       'ᾜ' => 'ᾔ',
-       'ᾝ' => 'ᾕ',
-       'ᾞ' => 'ᾖ',
-       'ᾟ' => 'ᾗ',
-       'ᾨ' => 'ᾠ',
-       'ᾩ' => 'ᾡ',
-       'ᾪ' => 'ᾢ',
-       'ᾫ' => 'ᾣ',
-       'ᾬ' => 'ᾤ',
-       'ᾭ' => 'ᾥ',
-       'ᾮ' => 'ᾦ',
-       'ᾯ' => 'ᾧ',
-       'Ᾰ' => 'ᾰ',
-       'Ᾱ' => 'ᾱ',
-       'Ὰ' => 'ὰ',
-       'Ά' => 'ά',
-       'ᾼ' => 'ᾳ',
-       'Ὲ' => 'ὲ',
-       'Έ' => 'έ',
-       'Ὴ' => 'ὴ',
-       'Ή' => 'ή',
-       'ῌ' => 'ῃ',
-       'Ῐ' => 'ῐ',
-       'Ῑ' => 'ῑ',
-       'Ὶ' => 'ὶ',
-       'Ί' => 'ί',
-       'Ῠ' => 'ῠ',
-       'Ῡ' => 'ῡ',
-       'Ὺ' => 'ὺ',
-       'Ύ' => 'ύ',
-       'Ῥ' => 'ῥ',
-       'Ὸ' => 'ὸ',
-       'Ό' => 'ό',
-       'Ὼ' => 'ὼ',
-       'Ώ' => 'ώ',
-       'ῼ' => 'ῳ',
-       'Ω' => 'ω',
-       'K' => 'k',
-       'Å' => 'å',
-       'Ⅎ' => 'ⅎ',
-       'Ⅰ' => 'ⅰ',
-       'Ⅱ' => 'ⅱ',
-       'Ⅲ' => 'ⅲ',
-       'Ⅳ' => 'ⅳ',
-       'Ⅴ' => 'ⅴ',
-       'Ⅵ' => 'ⅵ',
-       'Ⅶ' => 'ⅶ',
-       'Ⅷ' => 'ⅷ',
-       'Ⅸ' => 'ⅸ',
-       'Ⅹ' => 'ⅹ',
-       'Ⅺ' => 'ⅺ',
-       'Ⅻ' => 'ⅻ',
-       'Ⅼ' => 'ⅼ',
-       'Ⅽ' => 'ⅽ',
-       'Ⅾ' => 'ⅾ',
-       'Ⅿ' => 'ⅿ',
-       'Ↄ' => 'ↄ',
-       'Ⓐ' => 'ⓐ',
-       'Ⓑ' => 'ⓑ',
-       'Ⓒ' => 'ⓒ',
-       'Ⓓ' => 'ⓓ',
-       'Ⓔ' => 'ⓔ',
-       'Ⓕ' => 'ⓕ',
-       'Ⓖ' => 'ⓖ',
-       'Ⓗ' => 'ⓗ',
-       'Ⓘ' => 'ⓘ',
-       'Ⓙ' => 'ⓙ',
-       'Ⓚ' => 'ⓚ',
-       'Ⓛ' => 'ⓛ',
-       'Ⓜ' => 'ⓜ',
-       'Ⓝ' => 'ⓝ',
-       'Ⓞ' => 'ⓞ',
-       'Ⓟ' => 'ⓟ',
-       'Ⓠ' => 'ⓠ',
-       'Ⓡ' => 'ⓡ',
-       'Ⓢ' => 'ⓢ',
-       'Ⓣ' => 'ⓣ',
-       'Ⓤ' => 'ⓤ',
-       'Ⓥ' => 'ⓥ',
-       'Ⓦ' => 'ⓦ',
-       'Ⓧ' => 'ⓧ',
-       'Ⓨ' => 'ⓨ',
-       'Ⓩ' => 'ⓩ',
-       'Ⰰ' => 'ⰰ',
-       'Ⰱ' => 'ⰱ',
-       'Ⰲ' => 'ⰲ',
-       'Ⰳ' => 'ⰳ',
-       'Ⰴ' => 'ⰴ',
-       'Ⰵ' => 'ⰵ',
-       'Ⰶ' => 'ⰶ',
-       'Ⰷ' => 'ⰷ',
-       'Ⰸ' => 'ⰸ',
-       'Ⰹ' => 'ⰹ',
-       'Ⰺ' => 'ⰺ',
-       'Ⰻ' => 'ⰻ',
-       'Ⰼ' => 'ⰼ',
-       'Ⰽ' => 'ⰽ',
-       'Ⰾ' => 'ⰾ',
-       'Ⰿ' => 'ⰿ',
-       'Ⱀ' => 'ⱀ',
-       'Ⱁ' => 'ⱁ',
-       'Ⱂ' => 'ⱂ',
-       'Ⱃ' => 'ⱃ',
-       'Ⱄ' => 'ⱄ',
-       'Ⱅ' => 'ⱅ',
-       'Ⱆ' => 'ⱆ',
-       'Ⱇ' => 'ⱇ',
-       'Ⱈ' => 'ⱈ',
-       'Ⱉ' => 'ⱉ',
-       'Ⱊ' => 'ⱊ',
-       'Ⱋ' => 'ⱋ',
-       'Ⱌ' => 'ⱌ',
-       'Ⱍ' => 'ⱍ',
-       'Ⱎ' => 'ⱎ',
-       'Ⱏ' => 'ⱏ',
-       'Ⱐ' => 'ⱐ',
-       'Ⱑ' => 'ⱑ',
-       'Ⱒ' => 'ⱒ',
-       'Ⱓ' => 'ⱓ',
-       'Ⱔ' => 'ⱔ',
-       'Ⱕ' => 'ⱕ',
-       'Ⱖ' => 'ⱖ',
-       'Ⱗ' => 'ⱗ',
-       'Ⱘ' => 'ⱘ',
-       'Ⱙ' => 'ⱙ',
-       'Ⱚ' => 'ⱚ',
-       'Ⱛ' => 'ⱛ',
-       'Ⱜ' => 'ⱜ',
-       'Ⱝ' => 'ⱝ',
-       'Ⱞ' => 'ⱞ',
-       'Ⱡ' => 'ⱡ',
-       'Ɫ' => 'ɫ',
-       'Ᵽ' => 'ᵽ',
-       'Ɽ' => 'ɽ',
-       'Ⱨ' => 'ⱨ',
-       'Ⱪ' => 'ⱪ',
-       'Ⱬ' => 'ⱬ',
-       'Ɑ' => 'ɑ',
-       'Ɱ' => 'ɱ',
-       'Ɐ' => 'ɐ',
-       'Ɒ' => 'ɒ',
-       'Ⱳ' => 'ⱳ',
-       'Ⱶ' => 'ⱶ',
-       'Ȿ' => 'ȿ',
-       'Ɀ' => 'ɀ',
-       'Ⲁ' => 'ⲁ',
-       'Ⲃ' => 'ⲃ',
-       'Ⲅ' => 'ⲅ',
-       'Ⲇ' => 'ⲇ',
-       'Ⲉ' => 'ⲉ',
-       'Ⲋ' => 'ⲋ',
-       'Ⲍ' => 'ⲍ',
-       'Ⲏ' => 'ⲏ',
-       'Ⲑ' => 'ⲑ',
-       'Ⲓ' => 'ⲓ',
-       'Ⲕ' => 'ⲕ',
-       'Ⲗ' => 'ⲗ',
-       'Ⲙ' => 'ⲙ',
-       'Ⲛ' => 'ⲛ',
-       'Ⲝ' => 'ⲝ',
-       'Ⲟ' => 'ⲟ',
-       'Ⲡ' => 'ⲡ',
-       'Ⲣ' => 'ⲣ',
-       'Ⲥ' => 'ⲥ',
-       'Ⲧ' => 'ⲧ',
-       'Ⲩ' => 'ⲩ',
-       'Ⲫ' => 'ⲫ',
-       'Ⲭ' => 'ⲭ',
-       'Ⲯ' => 'ⲯ',
-       'Ⲱ' => 'ⲱ',
-       'Ⲳ' => 'ⲳ',
-       'Ⲵ' => 'ⲵ',
-       'Ⲷ' => 'ⲷ',
-       'Ⲹ' => 'ⲹ',
-       'Ⲻ' => 'ⲻ',
-       'Ⲽ' => 'ⲽ',
-       'Ⲿ' => 'ⲿ',
-       'Ⳁ' => 'ⳁ',
-       'Ⳃ' => 'ⳃ',
-       'Ⳅ' => 'ⳅ',
-       'Ⳇ' => 'ⳇ',
-       'Ⳉ' => 'ⳉ',
-       'Ⳋ' => 'ⳋ',
-       'Ⳍ' => 'ⳍ',
-       'Ⳏ' => 'ⳏ',
-       'Ⳑ' => 'ⳑ',
-       'Ⳓ' => 'ⳓ',
-       'Ⳕ' => 'ⳕ',
-       'Ⳗ' => 'ⳗ',
-       'Ⳙ' => 'ⳙ',
-       'Ⳛ' => 'ⳛ',
-       'Ⳝ' => 'ⳝ',
-       'Ⳟ' => 'ⳟ',
-       'Ⳡ' => 'ⳡ',
-       'Ⳣ' => 'ⳣ',
-       'Ⳬ' => 'ⳬ',
-       'Ⳮ' => 'ⳮ',
-       'Ꙁ' => 'ꙁ',
-       'Ꙃ' => 'ꙃ',
-       'Ꙅ' => 'ꙅ',
-       'Ꙇ' => 'ꙇ',
-       'Ꙉ' => 'ꙉ',
-       'Ꙋ' => 'ꙋ',
-       'Ꙍ' => 'ꙍ',
-       'Ꙏ' => 'ꙏ',
-       'Ꙑ' => 'ꙑ',
-       'Ꙓ' => 'ꙓ',
-       'Ꙕ' => 'ꙕ',
-       'Ꙗ' => 'ꙗ',
-       'Ꙙ' => 'ꙙ',
-       'Ꙛ' => 'ꙛ',
-       'Ꙝ' => 'ꙝ',
-       'Ꙟ' => 'ꙟ',
-       'Ꙡ' => 'ꙡ',
-       'Ꙣ' => 'ꙣ',
-       'Ꙥ' => 'ꙥ',
-       'Ꙧ' => 'ꙧ',
-       'Ꙩ' => 'ꙩ',
-       'Ꙫ' => 'ꙫ',
-       'Ꙭ' => 'ꙭ',
-       'Ꚁ' => 'ꚁ',
-       'Ꚃ' => 'ꚃ',
-       'Ꚅ' => 'ꚅ',
-       'Ꚇ' => 'ꚇ',
-       'Ꚉ' => 'ꚉ',
-       'Ꚋ' => 'ꚋ',
-       'Ꚍ' => 'ꚍ',
-       'Ꚏ' => 'ꚏ',
-       'Ꚑ' => 'ꚑ',
-       'Ꚓ' => 'ꚓ',
-       'Ꚕ' => 'ꚕ',
-       'Ꚗ' => 'ꚗ',
-       'Ꜣ' => 'ꜣ',
-       'Ꜥ' => 'ꜥ',
-       'Ꜧ' => 'ꜧ',
-       'Ꜩ' => 'ꜩ',
-       'Ꜫ' => 'ꜫ',
-       'Ꜭ' => 'ꜭ',
-       'Ꜯ' => 'ꜯ',
-       'Ꜳ' => 'ꜳ',
-       'Ꜵ' => 'ꜵ',
-       'Ꜷ' => 'ꜷ',
-       'Ꜹ' => 'ꜹ',
-       'Ꜻ' => 'ꜻ',
-       'Ꜽ' => 'ꜽ',
-       'Ꜿ' => 'ꜿ',
-       'Ꝁ' => 'ꝁ',
-       'Ꝃ' => 'ꝃ',
-       'Ꝅ' => 'ꝅ',
-       'Ꝇ' => 'ꝇ',
-       'Ꝉ' => 'ꝉ',
-       'Ꝋ' => 'ꝋ',
-       'Ꝍ' => 'ꝍ',
-       'Ꝏ' => 'ꝏ',
-       'Ꝑ' => 'ꝑ',
-       'Ꝓ' => 'ꝓ',
-       'Ꝕ' => 'ꝕ',
-       'Ꝗ' => 'ꝗ',
-       'Ꝙ' => 'ꝙ',
-       'Ꝛ' => 'ꝛ',
-       'Ꝝ' => 'ꝝ',
-       'Ꝟ' => 'ꝟ',
-       'Ꝡ' => 'ꝡ',
-       'Ꝣ' => 'ꝣ',
-       'Ꝥ' => 'ꝥ',
-       'Ꝧ' => 'ꝧ',
-       'Ꝩ' => 'ꝩ',
-       'Ꝫ' => 'ꝫ',
-       'Ꝭ' => 'ꝭ',
-       'Ꝯ' => 'ꝯ',
-       'Ꝺ' => 'ꝺ',
-       'Ꝼ' => 'ꝼ',
-       'Ᵹ' => 'ᵹ',
-       'Ꝿ' => 'ꝿ',
-       'Ꞁ' => 'ꞁ',
-       'Ꞃ' => 'ꞃ',
-       'Ꞅ' => 'ꞅ',
-       'Ꞇ' => 'ꞇ',
-       'Ꞌ' => 'ꞌ',
-       'Ɥ' => 'ɥ',
-       'Ꞑ' => 'ꞑ',
-       'Ꞡ' => 'ꞡ',
-       'Ꞣ' => 'ꞣ',
-       'Ꞥ' => 'ꞥ',
-       'Ꞧ' => 'ꞧ',
-       'Ꞩ' => 'ꞩ',
-       'A' => 'a',
-       'B' => 'b',
-       'C' => 'c',
-       'D' => 'd',
-       'E' => 'e',
-       'F' => 'f',
-       'G' => 'g',
-       'H' => 'h',
-       'I' => 'i',
-       'J' => 'j',
-       'K' => 'k',
-       'L' => 'l',
-       'M' => 'm',
-       'N' => 'n',
-       'O' => 'o',
-       'P' => 'p',
-       'Q' => 'q',
-       'R' => 'r',
-       'S' => 's',
-       'T' => 't',
-       'U' => 'u',
-       'V' => 'v',
-       'W' => 'w',
-       'X' => 'x',
-       'Y' => 'y',
-       'Z' => 'z',
-       '𐐀' => '𐐨',
-       '𐐁' => '𐐩',
-       '𐐂' => '𐐪',
-       '𐐃' => '𐐫',
-       '𐐄' => '𐐬',
-       '𐐅' => '𐐭',
-       '𐐆' => '𐐮',
-       '𐐇' => '𐐯',
-       '𐐈' => '𐐰',
-       '𐐉' => '𐐱',
-       '𐐊' => '𐐲',
-       '𐐋' => '𐐳',
-       '𐐌' => '𐐴',
-       '𐐍' => '𐐵',
-       '𐐎' => '𐐶',
-       '𐐏' => '𐐷',
-       '𐐐' => '𐐸',
-       '𐐑' => '𐐹',
-       '𐐒' => '𐐺',
-       '𐐓' => '𐐻',
-       '𐐔' => '𐐼',
-       '𐐕' => '𐐽',
-       '𐐖' => '𐐾',
-       '𐐗' => '𐐿',
-       '𐐘' => '𐑀',
-       '𐐙' => '𐑁',
-       '𐐚' => '𐑂',
-       '𐐛' => '𐑃',
-       '𐐜' => '𐑄',
-       '𐐝' => '𐑅',
-       '𐐞' => '𐑆',
-       '𐐟' => '𐑇',
-       '𐐠' => '𐑈',
-       '𐐡' => '𐑉',
-       '𐐢' => '𐑊',
-       '𐐣' => '𐑋',
-       '𐐤' => '𐑌',
-       '𐐥' => '𐑍',
-       '𐐦' => '𐑎',
-       '𐐧' => '𐑏'
-);
diff --git a/includes/normal/Utf8CaseGenerate.php b/includes/normal/Utf8CaseGenerate.php
deleted file mode 100644 (file)
index adc3ef2..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-<?php
-/**
- * This script generates Utf8Case.php from the Unicode Character Database
- * and supplementary files.
- *
- * Copyright © 2004,2008 Brion Vibber <brion@pobox.com>
- * 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
- * @ingroup UtfNormal
- */
-
-if( PHP_SAPI != 'cli' ) {
-       die( "Run me from the command line please.\n" );
-}
-
-require_once 'UtfNormalDefines.php';
-require_once 'UtfNormalUtil.php';
-
-$in = fopen("UnicodeData.txt", "rt" );
-if( !$in ) {
-       print "Can't open UnicodeData.txt for reading.\n";
-       print "If necessary, fetch this file from the internet:\n";
-       print "http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n";
-       exit(-1);
-}
-$wikiUpperChars = array();
-$wikiLowerChars = array();
-
-print "Reading character definitions...\n";
-while( false !== ($line = fgets( $in ) ) ) {
-       $columns = explode(';', $line);
-       $codepoint = $columns[0];
-       $name = $columns[1];
-       $simpleUpper = $columns[12];
-       $simpleLower = $columns[13];
-
-       $source = codepointToUtf8( hexdec( $codepoint ) );
-       if( $simpleUpper ) {
-               $wikiUpperChars[$source] = codepointToUtf8( hexdec( $simpleUpper ) );
-       }
-       if( $simpleLower ) {
-               $wikiLowerChars[$source] = codepointToUtf8( hexdec( $simpleLower ) );
-       }
-}
-fclose( $in );
-
-$out = fopen( "Utf8Case.php", "wt" );
-if( $out ) {
-       $outUpperChars = escapeArray( $wikiUpperChars );
-       $outLowerChars = escapeArray( $wikiLowerChars );
-       $outdata = "<" . "?php
-/**
- * Simple 1:1 upper/lowercase switching arrays for utf-8 text.
- * Won't get context-sensitive things yet.
- *
- * Hack for bugs in ucfirst() and company
- *
- * These are pulled from memcached if possible, as this is faster than filling
- * up a big array manually.
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Translation array to get upper case character
- */
-\$wikiUpperChars = $outUpperChars;
-
-/**
- * Translation array to get lower case character
- */
-\$wikiLowerChars = $outLowerChars;\n";
-       fputs( $out, $outdata );
-       fclose( $out );
-       print "Wrote out Utf8Case.php\n";
-} else {
-       print "Can't create file Utf8Case.php\n";
-       exit(-1);
-}
-
-
-function escapeArray( $arr ) {
-       return "array(\n" .
-               implode( ",\n",
-                       array_map( "escapeLine",
-                               array_keys( $arr ),
-                               array_values( $arr ) ) ) .
-               "\n)";
-}
-
-function escapeLine( $key, $val ) {
-       $encKey = escapeSingleString( $key );
-       $encVal = escapeSingleString( $val );
-       return "\t'$encKey' => '$encVal'";
-}
diff --git a/includes/objectcache/DBABagOStuff.php b/includes/objectcache/DBABagOStuff.php
deleted file mode 100644 (file)
index c82b3aa..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-<?php
-/**
- * Object caching using DBA backend.
- *
- * 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
- */
-
-/**
- * Cache that uses DBA as a backend.
- * Slow due to the need to constantly open and close the file to avoid holding
- * writer locks. Intended for development use only,  as a memcached workalike
- * for systems that don't have it.
- *
- * On construction you can pass array( 'dir' => '/some/path' ); as a parameter
- * to override the default DBA files directory (wfTempDir()).
- *
- * @ingroup Cache
- */
-class DBABagOStuff extends BagOStuff {
-       var $mHandler, $mFile, $mReader, $mWriter, $mDisabled;
-
-       /**
-        * @param $params array
-        */
-       public function __construct( $params ) {
-               global $wgDBAhandler;
-
-               if ( !isset( $params['dir'] ) ) {
-                       $params['dir'] = wfTempDir();
-               }
-
-               $this->mFile = $params['dir'] . '/mw-cache-' . wfWikiID() . '.db';
-               wfDebug( __CLASS__ . ": using cache file {$this->mFile}\n" );
-               $this->mHandler = $wgDBAhandler;
-       }
-
-       /**
-        * Encode value and expiry for storage
-        * @param $value
-        * @param $expiry
-        *
-        * @return string
-        */
-       protected function encode( $value, $expiry ) {
-               # Convert to absolute time
-               $expiry = $this->convertExpiry( $expiry );
-
-               return sprintf( '%010u', intval( $expiry ) ) . ' ' . serialize( $value );
-       }
-
-       /**
-        * @param $blob string
-        * @return array list containing value first and expiry second
-        */
-       protected function decode( $blob ) {
-               if ( !is_string( $blob ) ) {
-                       return array( false, 0 );
-               } else {
-                       return array(
-                               unserialize( substr( $blob, 11 ) ),
-                               intval( substr( $blob, 0, 10 ) )
-                       );
-               }
-       }
-
-       /**
-        * @return resource
-        */
-       protected function getReader() {
-               if ( file_exists( $this->mFile ) ) {
-                       $handle = dba_open( $this->mFile, 'rl', $this->mHandler );
-               } else {
-                       $handle = $this->getWriter();
-               }
-
-               if ( !$handle ) {
-                       wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
-               }
-
-               return $handle;
-       }
-
-       /**
-        * @return resource
-        */
-       protected function getWriter() {
-               $handle = dba_open( $this->mFile, 'cl', $this->mHandler );
-
-               if ( !$handle ) {
-                       wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
-               }
-
-               return $handle;
-       }
-
-       /**
-        * @param $key string
-        * @param $casToken[optional] mixed
-        * @return mixed
-        */
-       public function get( $key, &$casToken = null ) {
-               wfProfileIn( __METHOD__ );
-               wfDebug( __METHOD__ . "($key)\n" );
-
-               $handle = $this->getReader();
-               if ( !$handle ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $val = dba_fetch( $key, $handle );
-               list( $val, $expiry ) = $this->decode( $val );
-
-               # Must close ASAP because locks are held
-               dba_close( $handle );
-
-               if ( $val !== false && $expiry && $expiry < time() ) {
-                       # Key is expired, delete it
-                       $handle = $this->getWriter();
-                       dba_delete( $key, $handle );
-                       dba_close( $handle );
-                       wfDebug( __METHOD__ . ": $key expired\n" );
-                       $val = false;
-               }
-
-               $casToken = $val;
-
-               wfProfileOut( __METHOD__ );
-
-               return $val;
-       }
-
-       /**
-        * @param $key string
-        * @param $value mixed
-        * @param $exptime int
-        * @return bool
-        */
-       public function set( $key, $value, $exptime = 0 ) {
-               wfProfileIn( __METHOD__ );
-               wfDebug( __METHOD__ . "($key)\n" );
-
-               $blob = $this->encode( $value, $exptime );
-
-               $handle = $this->getWriter();
-               if ( !$handle ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $ret = dba_replace( $key, $blob, $handle );
-               dba_close( $handle );
-
-               wfProfileOut( __METHOD__ );
-               return $ret;
-       }
-
-       /**
-        * @param $casToken mixed
-        * @param $key string
-        * @param $value mixed
-        * @param $exptime int
-        * @return bool
-        */
-       public function cas( $casToken, $key, $value, $exptime = 0 ) {
-               wfProfileIn( __METHOD__ );
-               wfDebug( __METHOD__ . "($key)\n" );
-
-               $blob = $this->encode( $value, $exptime );
-
-               $handle = $this->getWriter();
-               if ( !$handle ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               // DBA is locked to any other write connection, so we can safely
-               // compare the current & previous value before saving new value
-               $val = dba_fetch( $key, $handle );
-               list( $val, $exptime ) = $this->decode( $val );
-               if ( $casToken !== $val ) {
-                       dba_close( $handle );
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $ret = dba_replace( $key, $blob, $handle );
-               dba_close( $handle );
-
-               wfProfileOut( __METHOD__ );
-               return $ret;
-       }
-
-       /**
-        * @param $key string
-        * @param $time int
-        * @return bool
-        */
-       public function delete( $key, $time = 0 ) {
-               wfProfileIn( __METHOD__ );
-               wfDebug( __METHOD__ . "($key)\n" );
-
-               $handle = $this->getWriter();
-               if ( !$handle ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $ret = !dba_exists( $key, $handle ) || dba_delete( $key, $handle );
-               dba_close( $handle );
-
-               wfProfileOut( __METHOD__ );
-               return $ret;
-       }
-
-       /**
-        * @param $key string
-        * @param $value mixed
-        * @param $exptime int
-        * @return bool
-        */
-       public function add( $key, $value, $exptime = 0 ) {
-               wfProfileIn( __METHOD__ );
-
-               $blob = $this->encode( $value, $exptime );
-
-               $handle = $this->getWriter();
-
-               if ( !$handle ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $ret = dba_insert( $key, $blob, $handle );
-
-               # Insert failed, check to see if it failed due to an expired key
-               if ( !$ret ) {
-                       list( , $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
-
-                       if ( $expiry && $expiry < time() ) {
-                               # Yes expired, delete and try again
-                               dba_delete( $key, $handle );
-                               $ret = dba_insert( $key, $blob, $handle );
-                               # This time if it failed then it will be handled by the caller like any other race
-                       }
-               }
-
-               dba_close( $handle );
-
-               wfProfileOut( __METHOD__ );
-               return $ret;
-       }
-
-       /**
-        * @param $key string
-        * @param $step integer
-        * @return integer|bool
-        */
-       public function incr( $key, $step = 1 ) {
-               wfProfileIn( __METHOD__ );
-
-               $handle = $this->getWriter();
-
-               if ( !$handle ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               list( $value, $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
-               if ( $value !== false ) {
-                       if ( $expiry && $expiry < time() ) {
-                               # Key is expired, delete it
-                               dba_delete( $key, $handle );
-                               wfDebug( __METHOD__ . ": $key expired\n" );
-                               $value = false;
-                       } else {
-                               $value += $step;
-                               $blob = $this->encode( $value, $expiry );
-
-                               $ret = dba_replace( $key, $blob, $handle );
-                               $value = $ret ? $value : false;
-                       }
-               }
-
-               dba_close( $handle );
-
-               wfProfileOut( __METHOD__ );
-
-               return ( $value === false ) ? false : (int)$value;
-       }
-}
diff --git a/includes/objectcache/EhcacheBagOStuff.php b/includes/objectcache/EhcacheBagOStuff.php
deleted file mode 100644 (file)
index 960668f..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-<?php
-/**
- * Object caching using the Ehcache RESTful web service.
- *
- * 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
- */
-
-/**
- * Client for the Ehcache RESTful web service - http://ehcache.org/documentation/cache_server.html
- * TODO: Simplify configuration and add to the installer.
- *
- * @ingroup Cache
- */
-class EhcacheBagOStuff extends BagOStuff {
-       var $servers, $cacheName, $connectTimeout, $timeout, $curlOptions,
-               $requestData, $requestDataPos;
-
-       var $curls = array();
-
-       /**
-        * @param $params array
-        * @throws MWException
-        */
-       function __construct( $params ) {
-               if ( !defined( 'CURLOPT_TIMEOUT_MS' ) ) {
-                       throw new MWException( __CLASS__ . ' requires curl version 7.16.2 or later.' );
-               }
-               if ( !extension_loaded( 'zlib' ) ) {
-                       throw new MWException( __CLASS__ . ' requires the zlib extension' );
-               }
-               if ( !isset( $params['servers'] ) ) {
-                       throw new MWException( __METHOD__ . ': servers parameter is required' );
-               }
-               $this->servers = $params['servers'];
-               $this->cacheName = isset( $params['cache'] ) ? $params['cache'] : 'mw';
-               $this->connectTimeout = isset( $params['connectTimeout'] )
-                       ? $params['connectTimeout'] : 1;
-               $this->timeout = isset( $params['timeout'] ) ? $params['timeout'] : 1;
-               $this->curlOptions = array(
-                       CURLOPT_CONNECTTIMEOUT_MS => intval( $this->connectTimeout * 1000 ),
-                       CURLOPT_TIMEOUT_MS => intval( $this->timeout * 1000 ),
-                       CURLOPT_RETURNTRANSFER => 1,
-                       CURLOPT_CUSTOMREQUEST => 'GET',
-                       CURLOPT_POST => 0,
-                       CURLOPT_POSTFIELDS => '',
-                       CURLOPT_HTTPHEADER => array(),
-               );
-       }
-
-       /**
-        * @param $key string
-        * @param $casToken[optional] mixed
-        * @return bool|mixed
-        */
-       public function get( $key, &$casToken = null ) {
-               wfProfileIn( __METHOD__ );
-               $response = $this->doItemRequest( $key );
-               if ( !$response || $response['http_code'] == 404 ) {
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-               if ( $response['http_code'] >= 300 ) {
-                       wfDebug( __METHOD__ . ": GET failure, got HTTP {$response['http_code']}\n" );
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-               $body = $response['body'];
-               $type = $response['content_type'];
-               if ( $type == 'application/vnd.php.serialized+deflate' ) {
-                       $body = gzinflate( $body );
-                       if ( !$body ) {
-                               wfDebug( __METHOD__ . ": error inflating $key\n" );
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-                       $data = unserialize( $body );
-               } elseif ( $type == 'application/vnd.php.serialized' ) {
-                       $data = unserialize( $body );
-               } else {
-                       wfDebug( __METHOD__ . ": unknown content type \"$type\"\n" );
-                       wfProfileOut( __METHOD__ );
-                       return false;
-               }
-
-               $casToken = $body;
-
-               wfProfileOut( __METHOD__ );
-               return $data;
-       }
-
-       /**
-        * @param $key string
-        * @param $value mixed
-        * @param $expiry int
-        * @return bool
-        */
-       public function set( $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
-               $expiry = $this->convertExpiry( $expiry );
-               $ttl = $expiry ? $expiry - time() : 2147483647;
-               $blob = serialize( $value );
-               if ( strlen( $blob ) > 100 ) {
-                       $blob = gzdeflate( $blob );
-                       $contentType = 'application/vnd.php.serialized+deflate';
-               } else {
-                       $contentType = 'application/vnd.php.serialized';
-               }
-
-               $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
-
-               if ( $code == 404 ) {
-                       // Maybe the cache does not exist yet, let's try creating it
-                       if ( !$this->createCache( $key ) ) {
-                               wfDebug( __METHOD__ . ": cache creation failed\n" );
-                               wfProfileOut( __METHOD__ );
-                               return false;
-                       }
-                       $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
-               }
-
-               $result = false;
-               if ( !$code ) {
-                       wfDebug( __METHOD__ . ": PUT failure for key $key\n" );
-               } elseif ( $code >= 300 ) {
-                       wfDebug( __METHOD__ . ": PUT failure for key $key: HTTP $code\n" );
-               } else {
-                       $result = true;
-               }
-
-               wfProfileOut( __METHOD__ );
-               return $result;
-       }
-
-       /**
-        * @param $casToken mixed
-        * @param $key string
-        * @param $value mixed
-        * @param $exptime int
-        * @return bool
-        */
-       public function cas( $casToken, $key, $value, $exptime = 0 ) {
-               // Not sure if we can implement CAS for ehcache. There appears to be CAS-support per
-               // http://ehcache.org/documentation/get-started/consistency-options#cas-cache-operations,
-               // but I can't find any docs for our current implementation.
-               throw new MWException( "CAS is not implemented in " . __CLASS__ );
-       }
-
-       /**
-        * @param $key string
-        * @param $time int
-        * @return bool
-        */
-       public function delete( $key, $time = 0 ) {
-               wfProfileIn( __METHOD__ );
-               $response = $this->doItemRequest( $key,
-                       array( CURLOPT_CUSTOMREQUEST => 'DELETE' ) );
-               $code = isset( $response['http_code'] ) ? $response['http_code'] : 0;
-               if ( !$response || ( $code != 404 && $code >= 300 ) ) {
-                       wfDebug( __METHOD__ . ": DELETE failure for key $key\n" );
-                       $result = false;
-               } else {
-                       $result = true;
-               }
-               wfProfileOut( __METHOD__ );
-               return $result;
-       }
-
-       /**
-        * @see BagOStuff::merge()
-        * @return bool success
-        */
-       public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
-               return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
-       }
-
-       /**
-        * @param $key string
-        * @return string
-        */
-       protected function getCacheUrl( $key ) {
-               if ( count( $this->servers ) == 1 ) {
-                       $server = reset( $this->servers );
-               } else {
-                       // Use consistent hashing
-                       $hashes = array();
-                       foreach ( $this->servers as $server ) {
-                               $hashes[$server] = md5( $server . '/' . $key );
-                       }
-                       asort( $hashes );
-                       reset( $hashes );
-                       $server = key( $hashes );
-               }
-               return "http://$server/ehcache/rest/{$this->cacheName}";
-       }
-
-       /**
-        * Get a cURL handle for the given cache URL.
-        * We cache the handles to allow keepalive.
-        */
-       protected function getCurl( $cacheUrl ) {
-               if ( !isset( $this->curls[$cacheUrl] ) ) {
-                       $this->curls[$cacheUrl] = curl_init();
-               }
-               return $this->curls[$cacheUrl];
-       }
-
-       /**
-        * @param $key string
-        * @param $data
-        * @param $type
-        * @param $ttl
-        * @return int
-        */
-       protected function attemptPut( $key, $data, $type, $ttl ) {
-               // In initial benchmarking, it was 30 times faster to use CURLOPT_POST
-               // than CURLOPT_UPLOAD with CURLOPT_READFUNCTION. This was because
-               // CURLOPT_UPLOAD was pushing the request headers first, then waiting
-               // for an ACK packet, then sending the data, whereas CURLOPT_POST just
-               // sends the headers and the data in a single send().
-               $response = $this->doItemRequest( $key,
-                       array(
-                               CURLOPT_POST => 1,
-                               CURLOPT_CUSTOMREQUEST => 'PUT',
-                               CURLOPT_POSTFIELDS => $data,
-                               CURLOPT_HTTPHEADER => array(
-                                       'Content-Type: ' . $type,
-                                       'ehcacheTimeToLiveSeconds: ' . $ttl
-                               )
-                       )
-               );
-               if ( !$response ) {
-                       return 0;
-               } else {
-                       return $response['http_code'];
-               }
-       }
-
-       /**
-        * @param $key string
-        * @return bool
-        */
-       protected function createCache( $key ) {
-               wfDebug( __METHOD__ . ": creating cache for $key\n" );
-               $response = $this->doCacheRequest( $key,
-                       array(
-                               CURLOPT_POST => 1,
-                               CURLOPT_CUSTOMREQUEST => 'PUT',
-                               CURLOPT_POSTFIELDS => '',
-                       ) );
-               if ( !$response ) {
-                       wfDebug( __CLASS__ . ": failed to create cache for $key\n" );
-                       return false;
-               }
-               return ( $response['http_code'] == 201 /* created */
-                       || $response['http_code'] == 409 /* already there */ );
-       }
-
-       /**
-        * @param $key string
-        * @param $curlOptions array
-        * @return array|bool|mixed
-        */
-       protected function doCacheRequest( $key, $curlOptions = array() ) {
-               $cacheUrl = $this->getCacheUrl( $key );
-               $curl = $this->getCurl( $cacheUrl );
-               return $this->doRequest( $curl, $cacheUrl, $curlOptions );
-       }
-
-       /**
-        * @param $key string
-        * @param $curlOptions array
-        * @return array|bool|mixed
-        */
-       protected function doItemRequest( $key, $curlOptions = array() ) {
-               $cacheUrl = $this->getCacheUrl( $key );
-               $curl = $this->getCurl( $cacheUrl );
-               $url = $cacheUrl . '/' . rawurlencode( $key );
-               return $this->doRequest( $curl, $url, $curlOptions );
-       }
-
-       /**
-        * @param $curl
-        * @param $url string
-        * @param $curlOptions array
-        * @return array|bool|mixed
-        * @throws MWException
-        */
-       protected function doRequest( $curl, $url, $curlOptions = array() ) {
-               if ( array_diff_key( $curlOptions, $this->curlOptions ) ) {
-                       // var_dump( array_diff_key( $curlOptions, $this->curlOptions ) );
-                       throw new MWException( __METHOD__ . ": to prevent options set in one doRequest() " .
-                               "call from affecting subsequent doRequest() calls, only options listed " .
-                               "in \$this->curlOptions may be specified in the \$curlOptions parameter." );
-               }
-               $curlOptions += $this->curlOptions;
-               $curlOptions[CURLOPT_URL] = $url;
-
-               curl_setopt_array( $curl, $curlOptions );
-               $result = curl_exec( $curl );
-               if ( $result === false ) {
-                       wfDebug( __CLASS__ . ": curl error: " . curl_error( $curl ) . "\n" );
-                       return false;
-               }
-               $info = curl_getinfo( $curl );
-               $info['body'] = $result;
-               return $info;
-       }
-}
index d061eff..bc5167d 100644 (file)
@@ -64,7 +64,7 @@ class HashBagOStuff extends BagOStuff {
                        return false;
                }
 
-               $casToken = $this->bag[$key][0];
+               $casToken = serialize( $this->bag[$key][0] );
 
                return $this->bag[$key][0];
        }
@@ -88,7 +88,7 @@ class HashBagOStuff extends BagOStuff {
         * @return bool
         */
        function cas( $casToken, $key, $value, $exptime = 0 ) {
-               if ( $this->get( $key ) === $casToken ) {
+               if ( serialize( $this->get( $key ) ) === $casToken ) {
                        return $this->set( $key, $value, $exptime );
                }
 
index e5f60b5..79c5187 100644 (file)
@@ -729,7 +729,7 @@ class MWMemcached {
         * @access  private
         */
        function _connect_sock( &$sock, $host ) {
-               list( $ip, $port ) = explode( ':', $host );
+               list( $ip, $port ) = preg_split('/:(?=\d)/' , $host );
                $sock = false;
                $timeout = $this->_connect_timeout;
                $errno = $errstr = null;
@@ -1026,9 +1026,9 @@ class MWMemcached {
 
                $len = strlen( $val );
 
-               if ( $this->_have_zlib && $this->_compress_enable &&
-                       $this->_compress_threshold && $len >= $this->_compress_threshold )
-               {
+               if ( $this->_have_zlib && $this->_compress_enable
+                       && $this->_compress_threshold && $len >= $this->_compress_threshold
+               {
                        $c_val = gzcompress( $val, 9 );
                        $c_len = strlen( $c_val );
 
index 135e0e8..3c97480 100644 (file)
@@ -55,7 +55,7 @@ class RedisBagOStuff extends BagOStuff {
         *     flap, for example if it is in swap death.
         */
        function __construct( $params ) {
-               $redisConf = array( 'serializer' => 'php' );
+               $redisConf = array( 'serializer' => 'none' ); // manage that in this class
                foreach ( array( 'connectTimeout', 'persistent', 'password' ) as $opt ) {
                        if ( isset( $params[$opt] ) ) {
                                $redisConf[$opt] = $params[$opt];
@@ -72,38 +72,39 @@ class RedisBagOStuff extends BagOStuff {
        }
 
        public function get( $key, &$casToken = null ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                try {
-                       $result = $conn->get( $key );
+                       $value = $conn->get( $key );
+                       $casToken = $value;
+                       $result = $this->unserialize( $value );
                } catch ( RedisException $e ) {
                        $result = false;
                        $this->handleException( $server, $conn, $e );
                }
-               $casToken = $result;
+
                $this->logRequest( 'get', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function set( $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                $expiry = $this->convertToRelative( $expiry );
                try {
-                       if ( !$expiry ) {
-                               // No expiry, that is very different from zero expiry in Redis
-                               $result = $conn->set( $key, $value );
+                       if ( $expiry ) {
+                               $result = $conn->setex( $key, $expiry, $this->serialize( $value ) );
                        } else {
-                               $result = $conn->setex( $key, $expiry, $value );
+                               // No expiry, that is very different from zero expiry in Redis
+                               $result = $conn->set( $key, $this->serialize( $value ) );
                        }
                } catch ( RedisException $e ) {
                        $result = false;
@@ -111,41 +112,33 @@ class RedisBagOStuff extends BagOStuff {
                }
 
                $this->logRequest( 'set', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function cas( $casToken, $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                $expiry = $this->convertToRelative( $expiry );
                try {
                        $conn->watch( $key );
 
-                       if ( $this->get( $key ) !== $casToken ) {
-                               wfProfileOut( __METHOD__ );
+                       if ( $this->serialize( $this->get( $key ) ) !== $casToken ) {
+                               $conn->unwatch();
                                return false;
                        }
 
+                       // multi()/exec() will fail atomically if the key changed since watch()
                        $conn->multi();
-
-                       if ( !$expiry ) {
-                               // No expiry, that is very different from zero expiry in Redis
-                               $conn->set( $key, $value );
+                       if ( $expiry ) {
+                               $conn->setex( $key, $expiry, $this->serialize( $value ) );
                        } else {
-                               $conn->setex( $key, $expiry, $value );
+                               // No expiry, that is very different from zero expiry in Redis
+                               $conn->set( $key, $this->serialize( $value ) );
                        }
-
-                       /*
-                        * multi()/exec() (transactional mode) allows multiple values to
-                        * be set/get at once and will return an array of results, in
-                        * the order they were set/get. In this case, we only set 1
-                        * value, which should (in case of success) result in true.
-                        */
                        $result = ( $conn->exec() == array( true ) );
                } catch ( RedisException $e ) {
                        $result = false;
@@ -153,15 +146,14 @@ class RedisBagOStuff extends BagOStuff {
                }
 
                $this->logRequest( 'cas', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function delete( $key, $time = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                try {
@@ -172,13 +164,14 @@ class RedisBagOStuff extends BagOStuff {
                        $result = false;
                        $this->handleException( $server, $conn, $e );
                }
+
                $this->logRequest( 'delete', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function getMulti( array $keys ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                $batches = array();
                $conns = array();
                foreach ( $keys as $key ) {
@@ -204,7 +197,7 @@ class RedisBagOStuff extends BagOStuff {
                                }
                                foreach ( $batchResult as $i => $value ) {
                                        if ( $value !== false ) {
-                                               $result[$batchKeys[$i]] = $value;
+                                               $result[$batchKeys[$i]] = $this->unserialize( $value );
                                        }
                                }
                        } catch ( RedisException $e ) {
@@ -214,29 +207,32 @@ class RedisBagOStuff extends BagOStuff {
 
                $this->debug( "getMulti for " . count( $keys ) . " keys " .
                        "returned " . count( $result ) . " results" );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
        public function add( $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                $expiry = $this->convertToRelative( $expiry );
                try {
-                       $result = $conn->setnx( $key, $value );
-                       if ( $result && $expiry ) {
+                       if ( $expiry ) {
+                               $conn->multi();
+                               $conn->setnx( $key, $this->serialize( $value ) );
                                $conn->expire( $key, $expiry );
+                               $result = ( $conn->exec() == array( true, true ) );
+                       } else {
+                               $result = $conn->setnx( $key, $this->serialize( $value ) );
                        }
                } catch ( RedisException $e ) {
                        $result = false;
                        $this->handleException( $server, $conn, $e );
                }
+
                $this->logRequest( 'add', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
@@ -245,23 +241,22 @@ class RedisBagOStuff extends BagOStuff {
         * with WATCH or scripting, but this function is rarely used.
         */
        public function replace( $key, $value, $expiry = 0 ) {
-               wfProfileIn( __METHOD__ );
+               $section = new ProfileSection( __METHOD__ );
+
                list( $server, $conn ) = $this->getConnection( $key );
                if ( !$conn ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
                if ( !$conn->exists( $key ) ) {
-                       wfProfileOut( __METHOD__ );
                        return false;
                }
 
                $expiry = $this->convertToRelative( $expiry );
                try {
                        if ( !$expiry ) {
-                               $result = $conn->set( $key, $value );
+                               $result = $conn->set( $key, $this->serialize( $value ) );
                        } else {
-                               $result = $conn->setex( $key, $expiry, $value );
+                               $result = $conn->setex( $key, $expiry, $this->serialize( $value ) );
                        }
                } catch ( RedisException $e ) {
                        $result = false;
@@ -269,10 +264,57 @@ class RedisBagOStuff extends BagOStuff {
                }
 
                $this->logRequest( 'replace', $key, $server, $result );
-               wfProfileOut( __METHOD__ );
                return $result;
        }
 
+       /**
+        * Non-atomic implementation of incr().
+        *
+        * Probably all callers actually want incr() to atomically initialise
+        * values to zero if they don't exist, as provided by the Redis INCR
+        * command. But we are constrained by the memcached-like interface to
+        * return null in that case. Once the key exists, further increments are
+        * atomic.
+        */
+       public function incr( $key, $value = 1 ) {
+               $section = new ProfileSection( __METHOD__ );
+
+               list( $server, $conn ) = $this->getConnection( $key );
+               if ( !$conn ) {
+                       return false;
+               }
+               if ( !$conn->exists( $key ) ) {
+                       return null;
+               }
+               try {
+                       $result = $this->unserialize( $conn->incrBy( $key, $value ) );
+               } catch ( RedisException $e ) {
+                       $result = false;
+                       $this->handleException( $server, $conn, $e );
+               }
+
+               $this->logRequest( 'incr', $key, $server, $result );
+               return $result;
+       }
+
+       /**
+        * @param mixed $data
+        * @return string
+        */
+       protected function serialize( $data ) {
+               // Ignore digit strings and ints so INCR/DECR work
+               return ( is_int( $data ) || ctype_digit( $data ) ) ? $data : serialize( $data );
+       }
+
+       /**
+        * @param string $data
+        * @return mixed
+        */
+       protected function unserialize( $data ) {
+               // Ignore digit strings and ints so INCR/DECR work
+               return ( is_int( $data ) || ctype_digit( $data ) ) ? $data : unserialize( $data );
+       }
+
        /**
         * Get a Redis object with a connection suitable for fetching the specified key
         * @return Array (server, RedisConnRef) or (false, false)
index 919b8b3..e845b55 100644 (file)
@@ -114,8 +114,8 @@ class SqlBagOStuff extends BagOStuff {
 
                        # Don't keep timing out trying to connect for each call if the DB is down
                        if ( isset( $this->connFailureErrors[$serverIndex] )
-                               && ( time() - $this->connFailureTimes[$serverIndex] ) < 60 )
-                       {
+                               && ( time() - $this->connFailureTimes[$serverIndex] ) < 60
+                       {
                                throw $this->connFailureErrors[$serverIndex];
                        }
 
@@ -678,8 +678,8 @@ class SqlBagOStuff extends BagOStuff {
                for ( $serverIndex = 0; $serverIndex < $this->numServers; $serverIndex++ ) {
                        $db = $this->getDB( $serverIndex );
                        if ( $db->getType() !== 'mysql'
-                               || version_compare( $db->getServerVersion(), '4.1.0', '<' ) )
-                       {
+                               || version_compare( $db->getServerVersion(), '4.1.0', '<' )
+                       {
                                throw new MWException( __METHOD__ . ' is not supported on this DB server' );
                        }
 
index a4203b0..e1b3f28 100644 (file)
@@ -37,18 +37,37 @@ class CacheTime {
                $mCacheExpiry = null,         # Seconds after which the object should expire, use 0 for uncachable. Used in ParserCache.
                $mContainsOldMagic;           # Boolean variable indicating if the input contained variables like {{CURRENTDAY}}
 
-       function getCacheTime()              { return $this->mCacheTime; }
+       /**
+        * @return string TS_MW timestamp
+        */
+       function getCacheTime() {
+               return wfTimestamp( TS_MW, $this->mCacheTime );
+       }
 
-       function containsOldMagic()          { return $this->mContainsOldMagic; }
-       function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); }
+       /**
+        * @return bool
+        */
+       function containsOldMagic() {
+               return $this->mContainsOldMagic;
+       }
+
+       /**
+        * @param $com bool
+        * @return bool
+        */
+       function setContainsOldMagic( $com ) {
+               return wfSetVar( $this->mContainsOldMagic, $com );
+       }
 
        /**
         * setCacheTime() sets the timestamp expressing when the page has been rendered.
-        * This doesn not control expiry, see updateCacheExpiry() for that!
+        * This does not control expiry, see updateCacheExpiry() for that!
         * @param $t string
         * @return string
         */
-       function setCacheTime( $t )          { return wfSetVar( $this->mCacheTime, $t ); }
+       function setCacheTime( $t ) {
+               return wfSetVar( $this->mCacheTime, $t );
+       }
 
        /**
         * Sets the number of seconds after which this object should expire.
index f57d412..35e8bf8 100644 (file)
@@ -38,77 +38,34 @@ class CoreParserFunctions {
                #  function callback,
                #  optional SFH_NO_HASH to omit the hash from calls (e.g. {{int:...}}
                #    instead of {{#int:...}})
+               $noHashFunctions = array(
+                       'ns', 'nse', 'urlencode', 'lcfirst', 'ucfirst', 'lc', 'uc',
+                       'localurl', 'localurle', 'fullurl', 'fullurle', 'canonicalurl',
+                       'canonicalurle', 'formatnum', 'grammar', 'gender', 'plural',
+                       'numberofpages', 'numberofusers', 'numberofactiveusers',
+                       'numberofarticles', 'numberoffiles', 'numberofadmins',
+                       'numberingroup', 'numberofedits', 'numberofviews', 'language',
+                       'padleft', 'padright', 'anchorencode', 'defaultsort', 'filepath',
+                       'pagesincategory', 'pagesize', 'protectionlevel',
+                       'namespacee', 'namespacenumber', 'talkspace', 'talkspacee',
+                       'subjectspace', 'subjectspacee', 'pagename', 'pagenamee',
+                       'fullpagename', 'fullpagenamee', 'rootpagename', 'rootpagenamee',
+                       'basepagename', 'basepagenamee', 'subpagename', 'subpagenamee',
+                       'talkpagename', 'talkpagenamee', 'subjectpagename',
+                       'subjectpagenamee', 'pageid', 'revisionid', 'revisionday',
+                       'revisionday2', 'revisionmonth', 'revisionmonth1', 'revisionyear',
+                       'revisiontimestamp', 'revisionuser', 'cascadingsources',
+               );
+               foreach ( $noHashFunctions as $func ) {
+                       $parser->setFunctionHook( $func, array( __CLASS__, $func ), SFH_NO_HASH );
+               }
 
-               $parser->setFunctionHook( 'int',              array( __CLASS__, 'intFunction'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'ns',               array( __CLASS__, 'ns'               ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'nse',              array( __CLASS__, 'nse'              ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'urlencode',        array( __CLASS__, 'urlencode'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'lcfirst',          array( __CLASS__, 'lcfirst'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'ucfirst',          array( __CLASS__, 'ucfirst'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'lc',               array( __CLASS__, 'lc'               ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'uc',               array( __CLASS__, 'uc'               ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'localurl',         array( __CLASS__, 'localurl'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'localurle',        array( __CLASS__, 'localurle'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullurl',          array( __CLASS__, 'fullurl'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullurle',         array( __CLASS__, 'fullurle'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'canonicalurl',     array( __CLASS__, 'canonicalurl'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'canonicalurle',    array( __CLASS__, 'canonicalurle'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'formatnum',        array( __CLASS__, 'formatnum'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'grammar',          array( __CLASS__, 'grammar'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'gender',           array( __CLASS__, 'gender'           ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'plural',           array( __CLASS__, 'plural'           ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofpages',    array( __CLASS__, 'numberofpages'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofusers',    array( __CLASS__, 'numberofusers'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofactiveusers', array( __CLASS__, 'numberofactiveusers' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofarticles', array( __CLASS__, 'numberofarticles' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberoffiles',    array( __CLASS__, 'numberoffiles'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofadmins',   array( __CLASS__, 'numberofadmins'   ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberingroup',    array( __CLASS__, 'numberingroup'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofedits',    array( __CLASS__, 'numberofedits'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'numberofviews',    array( __CLASS__, 'numberofviews'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'language',         array( __CLASS__, 'language'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'padleft',          array( __CLASS__, 'padleft'          ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'padright',         array( __CLASS__, 'padright'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'anchorencode',     array( __CLASS__, 'anchorencode'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'special',          array( __CLASS__, 'special'          ) );
-               $parser->setFunctionHook( 'speciale',         array( __CLASS__, 'speciale'         ) );
-               $parser->setFunctionHook( 'defaultsort',      array( __CLASS__, 'defaultsort'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'filepath',         array( __CLASS__, 'filepath'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagesincategory',  array( __CLASS__, 'pagesincategory'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagesize',         array( __CLASS__, 'pagesize'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'protectionlevel',  array( __CLASS__, 'protectionlevel'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'namespace',        array( __CLASS__, 'mwnamespace'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'namespacee',       array( __CLASS__, 'namespacee'       ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'namespacenumber',  array( __CLASS__, 'namespacenumber'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkspace',        array( __CLASS__, 'talkspace'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkspacee',       array( __CLASS__, 'talkspacee'       ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectspace',     array( __CLASS__, 'subjectspace'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectspacee',    array( __CLASS__, 'subjectspacee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagename',         array( __CLASS__, 'pagename'         ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'pagenamee',        array( __CLASS__, 'pagenamee'        ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullpagename',     array( __CLASS__, 'fullpagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'fullpagenamee',    array( __CLASS__, 'fullpagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'rootpagename',     array( __CLASS__, 'rootpagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'rootpagenamee',    array( __CLASS__, 'rootpagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'basepagename',     array( __CLASS__, 'basepagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'basepagenamee',    array( __CLASS__, 'basepagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subpagename',      array( __CLASS__, 'subpagename'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subpagenamee',     array( __CLASS__, 'subpagenamee'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkpagename',     array( __CLASS__, 'talkpagename'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'talkpagenamee',    array( __CLASS__, 'talkpagenamee'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectpagename',  array( __CLASS__, 'subjectpagename'  ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'subjectpagenamee', array( __CLASS__, 'subjectpagenamee' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'tag',              array( __CLASS__, 'tagObj'           ), SFH_OBJECT_ARGS );
-               $parser->setFunctionHook( 'formatdate',       array( __CLASS__, 'formatDate'       ) );
-               $parser->setFunctionHook( 'pageid',           array( __CLASS__, 'pageid'           ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionid',       array( __CLASS__, 'revisionid'       ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionday',      array( __CLASS__, 'revisionday'      ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionday2',     array( __CLASS__, 'revisionday2'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionmonth',    array( __CLASS__, 'revisionmonth'    ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionmonth1',   array( __CLASS__, 'revisionmonth1'   ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionyear',     array( __CLASS__, 'revisionyear'     ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisiontimestamp', array( __CLASS__, 'revisiontimestamp' ), SFH_NO_HASH );
-               $parser->setFunctionHook( 'revisionuser',     array( __CLASS__, 'revisionuser'     ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'namespace',  array( __CLASS__, 'mwnamespace' ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'int',        array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
+               $parser->setFunctionHook( 'special',    array( __CLASS__, 'special'     ) );
+               $parser->setFunctionHook( 'speciale',   array( __CLASS__, 'speciale'    ) );
+               $parser->setFunctionHook( 'tag',        array( __CLASS__, 'tagObj'      ), SFH_OBJECT_ARGS );
+               $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate'  ) );
 
                if ( $wgAllowDisplayTitle ) {
                        $parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), SFH_NO_HASH );
@@ -247,12 +204,29 @@ class CoreParserFunctions {
                return $parser->markerSkipCallback( $s, array( $wgContLang, 'uc' ) );
        }
 
-       static function localurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getLocalURL', $s, $arg ); }
-       static function localurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeLocalURL', $s, $arg ); }
-       static function fullurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getFullURL', $s, $arg ); }
-       static function fullurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeFullURL', $s, $arg ); }
-       static function canonicalurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getCanonicalURL', $s, $arg ); }
-       static function canonicalurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeCanonicalURL', $s, $arg ); }
+       static function localurl( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'getLocalURL', $s, $arg );
+       }
+
+       static function localurle( $parser, $s = '', $arg = null ) {
+               return htmlspecialchars( self::urlFunction( 'getLocalURL', $s, $arg ) );
+       }
+
+       static function fullurl( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'getFullURL', $s, $arg );
+       }
+
+       static function fullurle( $parser, $s = '', $arg = null ) {
+               return htmlspecialchars( self::urlFunction( 'getFullURL', $s, $arg ) );
+       }
+
+       static function canonicalurl( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'getCanonicalURL', $s, $arg );
+       }
+
+       static function canonicalurle( $parser, $s = '', $arg = null ) {
+               return self::urlFunction( 'escapeCanonicalURL', $s, $arg );
+       }
 
        static function urlFunction( $func, $s = '', $arg = null ) {
                $title = Title::newFromText( $s );
@@ -428,11 +402,12 @@ class CoreParserFunctions {
         * @return boolean true on successful match
         */
        private static function matchAgainstMagicword( $magicword, $value ) {
-               if ( strval( $value ) === '' ) {
+               $value = trim( strval( $value ) );
+               if ( $value === '' ) {
                        return false;
                }
                $mwObject = MagicWord::get( $magicword );
-               return $mwObject->match( $value );
+               return $mwObject->matchStartToEnd( $value );
        }
 
        static function formatRaw( $num, $raw ) {
@@ -729,7 +704,10 @@ class CoreParserFunctions {
        }
 
        /**
-        * Returns the requested protection level for the current page
+        * Returns the requested protection level for the current page. This
+        * is an expensive parser function and can't be called too many times
+        * per page, unless the protection levels for the given title have
+        * already been retrieved
         *
         * @param Parser $parser
         * @param string $type
@@ -742,10 +720,13 @@ class CoreParserFunctions {
                if ( !( $titleObject instanceof Title ) ) {
                        $titleObject = $parser->mTitle;
                }
-               $restrictions = $titleObject->getRestrictions( strtolower( $type ) );
-               # Title::getRestrictions returns an array, its possible it may have
-               # multiple values in the future
-               return implode( $restrictions, ',' );
+               if ( $titleObject->areRestrictionsLoaded() || $parser->incrementExpensiveFunctionCount() ) {
+                       $restrictions = $titleObject->getRestrictions( strtolower( $type ) );
+                       # Title::getRestrictions returns an array, its possible it may have
+                       # multiple values in the future
+                       return implode( $restrictions, ',' );
+               }
+               return '';
        }
 
        /**
@@ -1011,10 +992,34 @@ class CoreParserFunctions {
                // Use title from parser to have correct pageid after edit
                if ( $t->equals( $parser->getTitle() ) ) {
                        $t = $parser->getTitle();
+                       return $t->getArticleID();
+               }
+
+               // These can't have ids
+               if ( !$t->canExist() || $t->isExternal() ) {
+                       return 0;
+               }
+
+               // Check the link cache, maybe something already looked it up.
+               $linkCache = LinkCache::singleton();
+               $pdbk = $t->getPrefixedDBkey();
+               $id = $linkCache->getGoodLinkID( $pdbk );
+               if ( $id != 0 ) {
+                       $parser->mOutput->addLink( $t, $id );
+                       return $id;
+               }
+               if ( $linkCache->isBadLink( $pdbk ) ) {
+                       $parser->mOutput->addLink( $t, 0 );
+                       return $id;
+               }
+
+               // We need to load it from the DB, so mark expensive
+               if ( $parser->incrementExpensiveFunctionCount() ) {
+                       $id = $t->getArticleID();
+                       $parser->mOutput->addLink( $t, $id );
+                       return $id;
                }
-               // fetch pageid from cache/database and return the value
-               $pageid = $t->getArticleID();
-               return $pageid ? $pageid : '';
+               return null;
        }
 
        /**
@@ -1144,4 +1149,35 @@ class CoreParserFunctions {
                $rev = self::getCachedRevisionObject( $parser, $t );
                return $rev ? $rev->getUserText() : '';
        }
+
+       /**
+        * Returns the sources of any cascading protection acting on a specified page.
+        * Pages will not return their own title unless they transclude themselves.
+        * This is an expensive parser function and can't be called too many times per page,
+        * unless cascading protection sources for the page have already been loaded.
+        *
+        * @param Parser $parser
+        * @param string $title
+        *
+        * @return string
+        * @since 1.23
+        */
+       public static function cascadingsources( $parser, $title = '' ) {
+               $titleObject = Title::newFromText( $title );
+               if ( !( $titleObject instanceof Title ) ) {
+                       $titleObject = $parser->mTitle;
+               }
+               if ( $titleObject->areCascadeProtectionSourcesLoaded()
+                       || $parser->incrementExpensiveFunctionCount()
+               ) {
+                       $names = array();
+                       $sources = $titleObject->getCascadeProtectionSources();
+                       foreach ( $sources[0] as $sourceTitle ) {
+                               $names[] = $sourceTitle->getPrefixedText();
+                       }
+                       return implode( $names, '|' );
+               }
+               return '';
+       }
+
 }
index b629776..40c0a89 100644 (file)
@@ -160,8 +160,8 @@ class LinkHolderArray {
                $pos = 0;
                while ( $pos < strlen( $text ) ) {
                        if ( !preg_match( '/<!--LINK (\d+):(\d+)-->/',
-                               $text, $m, PREG_OFFSET_CAPTURE, $pos ) )
-                       {
+                               $text, $m, PREG_OFFSET_CAPTURE, $pos )
+                       {
                                break;
                        }
                        $ns = $m[1][0];
index 2df3160..cdf5e98 100644 (file)
@@ -420,8 +420,8 @@ class Parser {
                 * d) it is an interface message (which is in the user language)
                 */
                if ( !( $options->getDisableContentConversion()
-                               || isset( $this->mDoubleUnderscores['nocontentconvert'] ) ) )
-               {
+                       || isset( $this->mDoubleUnderscores['nocontentconvert'] ) )
+               {
                        if ( !$this->mOptions->getInterfaceMessage() ) {
                                # The position of the convert() call should not be changed. it
                                # assumes that the links are all replaced and the only thing left
@@ -438,10 +438,10 @@ class Parser {
                 * automatic link conversion.
                 */
                if ( !( $options->getDisableTitleConversion()
-                               || isset( $this->mDoubleUnderscores['nocontentconvert'] )
-                               || isset( $this->mDoubleUnderscores['notitleconvert'] )
-                               || $this->mOutput->getDisplayTitle() !== false ) )
-               {
+                       || isset( $this->mDoubleUnderscores['nocontentconvert'] )
+                       || isset( $this->mDoubleUnderscores['notitleconvert'] )
+                       || $this->mOutput->getDisplayTitle() !== false )
+               {
                        $convruletitle = $this->getConverterLanguage()->getConvRuleTitle();
                        if ( $convruletitle ) {
                                $this->mOutput->setTitleText( $convruletitle );
@@ -1696,9 +1696,9 @@ class Parser {
        public static function getExternalLinkRel( $url = false, $title = null ) {
                global $wgNoFollowLinks, $wgNoFollowNsExceptions, $wgNoFollowDomainExceptions;
                $ns = $title ? $title->getNamespace() : false;
-               if ( $wgNoFollowLinks && !in_array( $ns, $wgNoFollowNsExceptions ) &&
-                               !wfMatchesDomainList( $url, $wgNoFollowDomainExceptions ) )
-               {
+               if ( $wgNoFollowLinks && !in_array( $ns, $wgNoFollowNsExceptions )
+                       && !wfMatchesDomainList( $url, $wgNoFollowDomainExceptions )
+               {
                        return 'nofollow';
                }
                return null;
@@ -1788,14 +1788,14 @@ class Parser {
                        $imagematch = false;
                }
                if ( $this->mOptions->getAllowExternalImages()
-                        || ( $imagesexception && $imagematch ) ) {
+                       || ( $imagesexception && $imagematch ) ) {
                        if ( preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
                                # Image found
                                $text = Linker::makeExternalImage( $url );
                        }
                }
                if ( !$text && $this->mOptions->getEnableImageWhitelist()
-                        && preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
+                       && preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
                        $whitelist = explode( "\n", wfMessage( 'external_image_whitelist' )->inContentLanguage()->text() );
                        foreach ( $whitelist as $entry ) {
                                # Sanitize the regex fragment, make it case-insensitive, ignore blank entries/comments
@@ -1928,11 +1928,10 @@ class Parser {
                                # Still some problems for cases where the ] is meant to be outside punctuation,
                                # and no image is in sight. See bug 2095.
                                #
-                               if ( $text !== '' &&
-                                       substr( $m[3], 0, 1 ) === ']' &&
-                                       strpos( $text, '[' ) !== false
-                               )
-                               {
+                               if ( $text !== ''
+                                       && substr( $m[3], 0, 1 ) === ']'
+                                       && strpos( $text, '[' ) !== false
+                               ) {
                                        $text .= ']'; # so that replaceExternalLinks($text) works later
                                        $m[3] = substr( $m[3], 1 );
                                }
@@ -2110,7 +2109,6 @@ class Parser {
 
                                        /**
                                         * Strip the whitespace Category links produce, see bug 87
-                                        * @todo We might want to use trim($tmp, "\n") here.
                                         */
                                        $s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail;
 
@@ -2942,7 +2940,7 @@ class Parser {
                                $value = ( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
                                break;
                        case 'currentdayname':
-                               $value = $pageLang->getWeekdayName( MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
+                               $value = $pageLang->getWeekdayName( (int)MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
                                break;
                        case 'currentyear':
                                $value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'Y' ), true );
@@ -2962,7 +2960,7 @@ class Parser {
                                $value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'w' ) );
                                break;
                        case 'localdayname':
-                               $value = $pageLang->getWeekdayName( MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
+                               $value = $pageLang->getWeekdayName( (int)MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
                                break;
                        case 'localyear':
                                $value = $pageLang->formatNum( MWTimestamp::getLocalInstance( $ts )->format( 'Y' ), true );
@@ -3033,13 +3031,13 @@ class Parser {
                        case 'contentlanguage':
                                global $wgLanguageCode;
                                return $wgLanguageCode;
+                       case 'cascadingsources':
+                               $value = CoreParserFunctions::cascadingsources( $this );
+                               break;
                        default:
                                $ret = null;
-                               if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) ) ) {
-                                       return $ret;
-                               } else {
-                                       return null;
-                               }
+                               wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) );
+                               return $ret;
                }
 
                if ( $index ) {
@@ -3084,8 +3082,6 @@ class Parser {
         * cache may be implemented at a later date which takes further advantage of these strict
         * dependency requirements.
         *
-        * @private
-        *
         * @return PPNode
         */
        function preprocessToDom( $text, $flags = 0 ) {
@@ -3387,8 +3383,8 @@ class Parser {
                        if ( !$title->isExternal() ) {
                                if ( $title->isSpecialPage()
                                        && $this->mOptions->getAllowSpecialInclusion()
-                                       && $this->ot['html'] )
-                               {
+                                       && $this->ot['html']
+                               {
                                        // Pass the template arguments as URL parameters.
                                        // "uselang" will have no effect since the Language object
                                        // is forced to the one defined in ParserOptions.
@@ -3506,8 +3502,8 @@ class Parser {
                        $text = wfEscapeWikiText( $text );
                } elseif ( is_string( $text )
                        && !$piece['lineStart']
-                       && preg_match( '/^(?:{\\||:|;|#|\*)/', $text ) )
-               {
+                       && preg_match( '/^(?:{\\||:|;|#|\*)/', $text )
+               {
                        # Bug 529: if the template begins with a table or block-level
                        # element, it should be treated as beginning a new line.
                        # This behavior is somewhat controversial.
@@ -3841,12 +3837,7 @@ class Parser {
                if ( $file && !$title->equals( $file->getTitle() ) ) {
                        # Update fetched file title
                        $title = $file->getTitle();
-                       if ( is_null( $file->getRedirectedTitle() ) ) {
-                               # This file was not a redirect, but the title does not match.
-                               # Register under the new name because otherwise the link will
-                               # get lost.
-                               $this->mOutput->addImage( $title->getDBkey(), $time, $sha1 );
-                       }
+                       $this->mOutput->addImage( $title->getDBkey(), $time, $sha1 );
                }
                return array( $file, $title );
        }
@@ -3947,11 +3938,10 @@ class Parser {
                $object = false;
                $text = $frame->getArgument( $argName );
                if ( $text === false && $parts->getLength() > 0
-                 && (
-                       $this->ot['html']
-                       || $this->ot['pre']
-                       || ( $this->ot['wiki'] && $frame->isTemplate() )
-                 )
+                       && ( $this->ot['html']
+                               || $this->ot['pre']
+                               || ( $this->ot['wiki'] && $frame->isTemplate() )
+                       )
                ) {
                        # No match in frame, use the supplied default
                        $object = $parts->item( 0 )->getChildren();
@@ -5432,10 +5422,10 @@ class Parser {
                $params['frame']['caption'] = $caption;
 
                # Will the image be presented in a frame, with the caption below?
-               $imageIsFramed = isset( $params['frame']['frame'] ) ||
-                                                isset( $params['frame']['framed'] ) ||
-                                                isset( $params['frame']['thumbnail'] ) ||
-                                                isset( $params['frame']['manualthumb'] );
+               $imageIsFramed = isset( $params['frame']['frame'] )
+                       || isset( $params['frame']['framed'] )
+                       || isset( $params['frame']['thumbnail'] )
+                       || isset( $params['frame']['manualthumb'] );
 
                # In the old days, [[Image:Foo|text...]] would set alt text.  Later it
                # came to also set the caption, ordinary text after the image -- which
index 7043b4a..9eaa3e2 100644 (file)
@@ -27,8 +27,6 @@
  */
 class ParserCache {
        private $mMemc;
-       const try116cache = false; /* Only useful $wgParserCacheExpireTime after updating to 1.17 */
-
        /**
         * Get an instance of this object
         *
@@ -146,7 +144,7 @@ class ParserCache {
                        $usedOptions = $optionsKey->mUsedOptions;
                        wfDebug( "Parser cache options found.\n" );
                } else {
-                       if ( !$useOutdated && !self::try116cache ) {
+                       if ( !$useOutdated ) {
                                return false;
                        }
                        $usedOptions = ParserOptions::legacyOptions();
@@ -186,12 +184,6 @@ class ParserCache {
                }
 
                $value = $this->mMemc->get( $parserOutputKey );
-               if ( self::try116cache && !$value && strpos( $value, '*' ) !== -1 ) {
-                       wfDebug( "New format parser cache miss.\n" );
-                       $parserOutputKey = $this->getParserOutputKey( $article,
-                               $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) );
-                       $value = $this->mMemc->get( $parserOutputKey );
-               }
                if ( !$value ) {
                        wfDebug( "ParserOutput cache miss.\n" );
                        wfIncrStats( "pcache_miss_absent" );
@@ -221,11 +213,11 @@ class ParserCache {
 
        /**
         * @param ParserOutput $parserOutput
-        * @param Article $article
+        * @param WikiPage $page
         * @param ParserOptions $popts
         * @param string $cacheTime Time when the cache was generated
         */
-       public function save( $parserOutput, $article, $popts, $cacheTime = null ) {
+       public function save( $parserOutput, $page, $popts, $cacheTime = null ) {
                $expire = $parserOutput->getCacheExpiry();
                if ( $expire > 0 ) {
                        $cacheTime = $cacheTime ?: wfTimestampNow();
@@ -239,11 +231,11 @@ class ParserCache {
 
                        $optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
 
-                       $parserOutputKey = $this->getParserOutputKey( $article,
-                               $popts->optionsHash( $optionsKey->mUsedOptions, $article->getTitle() ) );
+                       $parserOutputKey = $this->getParserOutputKey( $page,
+                               $popts->optionsHash( $optionsKey->mUsedOptions, $page->getTitle() ) );
 
                        // Save the timestamp so that we don't have to load the revision row on view
-                       $parserOutput->setTimestamp( $article->getTimestamp() );
+                       $parserOutput->setTimestamp( $page->getTimestamp() );
 
                        $parserOutput->mText .= "\n<!-- Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n -->\n";
                        wfDebug( "Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n" );
@@ -252,7 +244,7 @@ class ParserCache {
                        $this->mMemc->set( $parserOutputKey, $parserOutput, $expire );
 
                        // ...and its pointer
-                       $this->mMemc->set( $this->getOptionsKey( $article ), $optionsKey, $expire );
+                       $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
                } else {
                        wfDebug( "Parser output was marked as uncacheable and has not been saved.\n" );
                }
index 8393216..c4e9a1c 100644 (file)
@@ -571,7 +571,7 @@ class ParserOptions {
 
                // Give a chance for extensions to modify the hash, if they have
                // extra options or other effects on the parser cache.
-               wfRunHooks( 'PageRenderingHash', array( &$confstr ) );
+               wfRunHooks( 'PageRenderingHash', array( &$confstr, $this->getUser() ) );
 
                // Make it a valid memcached key fragment
                $confstr = str_replace( ' ', '_', $confstr );
index 2950227..8cd978b 100644 (file)
@@ -59,8 +59,8 @@ class ParserOutput extends CacheTime {
        const EDITSECTION_REGEX = '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#';
 
        function __construct( $text = '', $languageLinks = array(), $categoryLinks = array(),
-               $containsOldMagic = false, $titletext = '' )
-       {
+               $containsOldMagic = false, $titletext = ''
+       {
                $this->mText = $text;
                $this->mLanguageLinks = $languageLinks;
                $this->mCategories = $categoryLinks;
@@ -279,10 +279,10 @@ class ParserOutput extends CacheTime {
         * @throws MWException if given invalid input
         */
        function addInterwikiLink( $title ) {
-               $prefix = $title->getInterwiki();
-               if ( $prefix == '' ) {
+               if ( !$title->isExternal() ) {
                        throw new MWException( 'Non-interwiki link passed, internal parser error.' );
                }
+               $prefix = $title->getInterwiki();
                if ( !isset( $this->mInterwikiLinks[$prefix] ) ) {
                        $this->mInterwikiLinks[$prefix] = array();
                }
index 57020a1..6b2a874 100644 (file)
@@ -399,14 +399,14 @@ class Preprocessor_DOM implements Preprocessor {
                                                // the overall start. That's not how Sanitizer::removeHTMLcomments() did it, but
                                                // it's a possible beneficial b/c break.
                                                if ( $wsStart > 0 && substr( $text, $wsStart - 1, 1 ) == "\n"
-                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n" )
-                                               {
+                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n"
+                                               {
                                                        // Remove leading whitespace from the end of the accumulator
                                                        // Sanity check first though
                                                        $wsLength = $i - $wsStart;
                                                        if ( $wsLength > 0
-                                                               && strspn( $accum, " \t", -$wsLength ) === $wsLength )
-                                                       {
+                                                               && strspn( $accum, " \t", -$wsLength ) === $wsLength
+                                                       {
                                                                $accum = substr( $accum, 0, -$wsLength );
                                                        }
 
@@ -475,8 +475,8 @@ class Preprocessor_DOM implements Preprocessor {
                                        $attrEnd = $tagEndPos;
                                        // Find closing tag
                                        if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
-                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
-                                       {
+                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
+                                       {
                                                $inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
                                                $i = $matches[0][1] + strlen( $matches[0][0] );
                                                $close = '<close>' . htmlspecialchars( $matches[0][0] ) . '</close>';
@@ -1141,8 +1141,8 @@ class PPFrame_DOM implements PPFrame {
                                        # Remove it in HTML, pre+remove and STRIP_COMMENTS modes
                                        if ( $this->parser->ot['html']
                                                || ( $this->parser->ot['pre'] && $this->parser->mOptions->getRemoveComments() )
-                                               || ( $flags & PPFrame::STRIP_COMMENTS ) )
-                                       {
+                                               || ( $flags & PPFrame::STRIP_COMMENTS )
+                                       {
                                                $out .= '';
                                        }
                                        # Add a strip marker in PST mode so that pstPass2() can run some old-fashioned regexes on the result
index 2fc5e11..c2ab54e 100644 (file)
@@ -326,15 +326,15 @@ class Preprocessor_Hash implements Preprocessor {
                                                // the overall start. That's not how Sanitizer::removeHTMLcomments() did it, but
                                                // it's a possible beneficial b/c break.
                                                if ( $wsStart > 0 && substr( $text, $wsStart - 1, 1 ) == "\n"
-                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n" )
-                                               {
+                                                       && substr( $text, $wsEnd + 1, 1 ) == "\n"
+                                               {
                                                        // Remove leading whitespace from the end of the accumulator
                                                        // Sanity check first though
                                                        $wsLength = $i - $wsStart;
                                                        if ( $wsLength > 0
                                                                && $accum->lastNode instanceof PPNode_Hash_Text
-                                                               && strspn( $accum->lastNode->value, " \t", -$wsLength ) === $wsLength )
-                                                       {
+                                                               && strspn( $accum->lastNode->value, " \t", -$wsLength ) === $wsLength
+                                                       {
                                                                $accum->lastNode->value = substr( $accum->lastNode->value, 0, -$wsLength );
                                                        }
 
@@ -404,8 +404,8 @@ class Preprocessor_Hash implements Preprocessor {
                                        $attrEnd = $tagEndPos;
                                        // Find closing tag
                                        if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
-                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
-                                       {
+                                                       $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 )
+                                       {
                                                $inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
                                                $i = $matches[0][1] + strlen( $matches[0][0] );
                                                $close = $matches[0][0];
@@ -1062,8 +1062,8 @@ class PPFrame_Hash implements PPFrame {
                                        # Remove it in HTML, pre+remove and STRIP_COMMENTS modes
                                        if ( $this->parser->ot['html']
                                                || ( $this->parser->ot['pre'] && $this->parser->mOptions->getRemoveComments() )
-                                               || ( $flags & PPFrame::STRIP_COMMENTS ) )
-                                       {
+                                               || ( $flags & PPFrame::STRIP_COMMENTS )
+                                       {
                                                $out .= '';
                                        }
                                        # Add a strip marker in PST mode so that pstPass2() can run some old-fashioned regexes on the result
@@ -1654,8 +1654,8 @@ class PPNode_Hash_Tree implements PPNode {
                        if ( $child->name === 'name' ) {
                                $bits['name'] = $child;
                                if ( $child->firstChild instanceof PPNode_Hash_Attr
-                                       && $child->firstChild->name === 'index' )
-                               {
+                                       && $child->firstChild->name === 'index'
+                               {
                                        $bits['index'] = $child->firstChild->value;
                                }
                        } elseif ( $child->name === 'value' ) {
index 2282a3a..235a5ad 100644 (file)
@@ -283,8 +283,8 @@ class Profiler {
                        return; // short-circuit
                // @TODO: hardcoded check is a tad janky (what about FOR UPDATE?)
                } elseif ( !preg_match( '/^query-m: (?!SELECT)/', $method )
-                       && $realtime < $this->mDBLockThreshold )
-               {
+                       && $realtime < $this->mDBLockThreshold
+               {
                        return; // not a DB master query nor slow enough
                }
                $now = microtime( true );
diff --git a/includes/profiler/ProfilerMwprof.php b/includes/profiler/ProfilerMwprof.php
new file mode 100644 (file)
index 0000000..e81c6ec
--- /dev/null
@@ -0,0 +1,190 @@
+<?php
+/**
+ * Profiler class for Mwprof.
+ *
+ * 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 Profiler
+ */
+
+/**
+ * Profiler class for Mwprof.
+ *
+ * Mwprof is a high-performance MediaWiki profiling data collector, designed to
+ * collect profiling data from multiple hosts running in tandem. This class
+ * serializes profiling samples into MessagePack arrays and sends them to an
+ * Mwprof instance via UDP.
+ *
+ * @see https://github.com/wikimedia/operations-software-mwprof
+ * @since 1.23
+ */
+class ProfilerMwprof extends Profiler {
+
+       // Message types
+
+       const TYPE_SINGLE  = 1;
+       const TYPE_RUNNING = 2;
+
+       /**
+        * Indicate that this Profiler subclass is persistent.
+        *
+        * Called by Parser::braceSubstitution. If true, the parser will not
+        * generate per-title profiling sections, to avoid overloading the
+        * profiling data collector.
+        *
+        * @return bool true
+        */
+       public function isPersistent() {
+               return true;
+       }
+
+       /**
+        * Start a profiling section.
+        *
+        * Marks the beginning of the function or code-block that should be time
+        * and logged under some specific name.
+        *
+        * @param string $inName Section to start
+        */
+       public function profileIn( $inName ) {
+               $this->mWorkStack[] = array( $inName, count( $this->mWorkStack ),
+                       $this->getTime(), $this->getTime( 'cpu' ) );
+       }
+
+       /**
+        * Produce an empty function report.
+        *
+        * ProfileMwprof does not provide a function report.
+        *
+        * @return string Empty string.
+        */
+       public function getFunctionReport() {
+               return '';
+       }
+
+       /**
+        * Close a profiling section.
+        *
+        * Marks the end of the function or code-block that should be timed and
+        * logged under some specific name.
+        *
+        * @param string $outName Section to close
+        */
+       public function profileOut( $outName ) {
+               list( $inName, $inCount, $inWall, $inCpu ) = array_pop( $this->mWorkStack );
+
+               // Check for unbalanced profileIn / profileOut calls.
+               // Bad entries are logged but not sent.
+               if ( $inName !== $outName ) {
+                       wfDebugLog( 'ProfilerUnbalanced', json_encode( array( $inName, $outName ) ) );
+                       return;
+               }
+
+               $elapsedCpu = $this->getTime( 'cpu' ) - $inCpu;
+               $elapsedWall = $this->getTime() - $inWall;
+               $this->updateEntry( $outName, $elapsedCpu, $elapsedWall );
+               $this->updateTrxProfiling( $outName, $elapsedWall );
+       }
+
+       /**
+        * Update an entry with timing data.
+        *
+        * @param string $name Section name
+        * @param float $elapsedCpu elapsed CPU time
+        * @param float $elapsedWall elapsed wall-clock time
+        */
+       public function updateEntry( $name, $elapsedCpu, $elapsedWall ) {
+               // If this is the first measurement for this entry, store plain values.
+               // Many profiled functions will only be called once per request.
+               if ( !isset( $this->mCollated[$name] ) ) {
+                       $this->mCollated[$name] = array(
+                               'cpu'   => $elapsedCpu,
+                               'wall'  => $elapsedWall,
+                               'count' => 1,
+                       );
+                       return;
+               }
+
+               $entry = &$this->mCollated[$name];
+
+               // If it's the second measurement, convert the plain values to
+               // RunningStat instances, so we can push the incoming values on top.
+               if ( $entry['count'] === 1 ) {
+                       $cpu = new RunningStat();
+                       $cpu->push( $entry['cpu'] );
+                       $entry['cpu'] = $cpu;
+
+                       $wall = new RunningStat();
+                       $wall->push( $entry['wall'] );
+                       $entry['wall'] = $wall;
+               }
+
+               $entry['count']++;
+               $entry['cpu']->push( $elapsedCpu );
+               $entry['wall']->push( $elapsedWall );
+       }
+
+       /**
+        * Serialize profiling data and send to a profiling data aggregator.
+        *
+        * Individual entries are represented as arrays and then encoded using
+        * MessagePack, an efficient binary data-interchange format. Encoded
+        * entries are accumulated into a buffer and sent in batch via UDP to the
+        * profiling data aggregator.
+        */
+       public function logData() {
+               global $wgUDPProfilerHost, $wgUDPProfilerPort;
+
+               $this->close();
+
+               $sock = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
+               socket_connect( $sock, $wgUDPProfilerHost, $wgUDPProfilerPort );
+               $bufferLength = 0;
+               $buffer = '';
+               foreach ( $this->mCollated as $name => $entry ) {
+                       $count = $entry['count'];
+                       $cpu = $entry['cpu'];
+                       $wall = $entry['wall'];
+
+                       if ( $count === 1 ) {
+                               $data = array( self::TYPE_SINGLE, $name, $cpu, $wall );
+                       } else {
+                               $data = array( self::TYPE_RUNNING, $name, $count,
+                                       $cpu->m1, $cpu->m2, $cpu->min, $cpu->max,
+                                       $wall->m1, $wall->m2, $wall->min, $wall->max );
+                       }
+
+                       $encoded = MWMessagePack::pack( $data );
+                       $length = strlen( $encoded );
+
+                       // If adding this entry would cause the size of the buffer to
+                       // exceed the standard ethernet MTU size less the UDP header,
+                       // send all pending data and reset the buffer. Otherwise, continue
+                       // accumulating entries into the current buffer.
+                       if ( $length + $bufferLength > 1450 ) {
+                               socket_send( $sock, $buffer, $bufferLength, 0 );
+                               $buffer = '';
+                               $bufferLength = 0;
+                       }
+                       $buffer .= $encoded;
+                       $bufferLength += $length;
+               }
+               if ( $bufferLength !== 0 ) {
+                       socket_send( $sock, $buffer, $bufferLength, 0 );
+               }
+       }
+}
index 805c60f..ee92c17 100644 (file)
 class ProfilerSimple extends Profiler {
        var $mMinimumTime = 0;
 
-       var $zeroEntry = array( 'cpu' => 0.0, 'cpu_sq' => 0.0, 'real' => 0.0, 'real_sq' => 0.0, 'count' => 0 );
        var $errorEntry;
 
+       public function getZeroEntry() {
+               return array(
+                       'cpu'     => 0.0,
+                       'cpu_sq'  => 0.0,
+                       'real'    => 0.0,
+                       'real_sq' => 0.0,
+                       'count'   => 0
+               );
+       }
+
+       public function getErrorEntry() {
+               $entry = $this->getZeroEntry();
+               $entry['count'] = 1;
+               return $entry;
+       }
+
+       public function updateEntry( $name, $elapsedCpu, $elapsedReal ) {
+               $entry =& $this->mCollated[$name];
+               if ( !is_array( $entry ) ) {
+                       $entry = $this->getZeroEntry();
+                       $this->mCollated[$name] =& $entry;
+               }
+               $entry['cpu'] += $elapsedCpu;
+               $entry['cpu_sq'] += $elapsedCpu * $elapsedCpu;
+               $entry['real'] += $elapsedReal;
+               $entry['real_sq'] += $elapsedReal * $elapsedReal;
+               $entry['count']++;
+       }
+
        public function isPersistent() {
                /* Implement in output subclasses */
                return false;
        }
 
        protected function addInitialStack() {
-               $this->errorEntry = $this->zeroEntry;
-               $this->errorEntry['count'] = 1;
+               $this->errorEntry = $this->getErrorEntry();
 
                $initialTime = $this->getInitialTime();
                $initialCpu = $this->getInitialTime( 'cpu' );
@@ -88,19 +115,9 @@ class ProfilerSimple extends Profiler {
                                $this->debug( "$message\n" );
                                $this->mCollated[$message] = $this->errorEntry;
                        }
-                       $entry =& $this->mCollated[$functionname];
                        $elapsedcpu = $this->getTime( 'cpu' ) - $octime;
                        $elapsedreal = $this->getTime() - $ortime;
-                       if ( !is_array( $entry ) ) {
-                               $entry = $this->zeroEntry;
-                               $this->mCollated[$functionname] =& $entry;
-                       }
-                       $entry['cpu'] += $elapsedcpu;
-                       $entry['cpu_sq'] += $elapsedcpu * $elapsedcpu;
-                       $entry['real'] += $elapsedreal;
-                       $entry['real_sq'] += $elapsedreal * $elapsedreal;
-                       $entry['count']++;
-
+                       $this->updateEntry( $functionname, $elapsedcpu, $elapsedreal );
                        $this->updateTrxProfiling( $functionname, $elapsedreal );
                }
        }
@@ -113,21 +130,4 @@ class ProfilerSimple extends Profiler {
        public function logData() {
                /* Implement in subclasses */
        }
-
-       /**
-        * Get the actual CPU time or the initial one if $ru is set.
-        *
-        * @deprecated in 1.20
-        * @return float|null
-        */
-       function getCpuTime( $ru = null ) {
-               wfDeprecated( __METHOD__, '1.20' );
-
-               if ( $ru === null ) {
-                       return $this->getTime( 'cpu' );
-               } else {
-                       # It theory we should use $ru here, but it always $wgRUstart that is passed here
-                       return $this->getInitialTime( 'cpu' );
-               }
-       }
 }
index 507369f..ddbb548 100644 (file)
@@ -1,7 +1,32 @@
 <?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
+ */
+
+/**
+ * Generates a colourful notification intended for humans on IRC.
+ *
+ * @since 1.22
+ */
+
 class IRCColourfulRCFeedFormatter implements RCFeedFormatter {
        /**
-        * Generates a colourful notification intended for humans on IRC.
         * @see RCFeedFormatter::getLine
         */
        public function getLine( array $feed, RecentChange $rc, $actionComment ) {
index 144ec95..98d3f02 100644 (file)
@@ -1,90 +1,32 @@
 <?php
 
-class JSONRCFeedFormatter implements RCFeedFormatter {
-       /**
-        * Generates a notification that can be easily interpreted by a machine.
-        * @see RCFeedFormatter::getLine
-        */
-       public function getLine( array $feed, RecentChange $rc, $actionComment ) {
-               global $wgCanonicalServer, $wgScriptPath, $wgDBname;
-               $attrib = $rc->getAttributes();
-
-               $packet = array(
-                       // Usually, RC ID is exposed only for patrolling purposes,
-                       // but there is no real reason not to expose it in other cases,
-                       // and I can see how this may be potentially useful for clients.
-                       'id' => $attrib['rc_id'],
-                       'type' => $attrib['rc_type'],
-                       'namespace' => $rc->getTitle()->getNamespace(),
-                       'title' => $rc->getTitle()->getPrefixedText(),
-                       'comment' => $attrib['rc_comment'],
-                       'timestamp' => (int)wfTimestamp( TS_UNIX, $attrib['rc_timestamp'] ),
-                       'user' => $attrib['rc_user_text'],
-                       'bot' => (bool)$attrib['rc_bot'],
-               );
-
-               if ( isset( $feed['channel'] ) ) {
-                       $packet['channel'] = $feed['channel'];
-               }
-
-               $type = $attrib['rc_type'];
-               if ( $type == RC_EDIT || $type == RC_NEW ) {
-                       global $wgUseRCPatrol, $wgUseNPPatrol;
-
-                       $packet['minor'] = $attrib['rc_minor'];
-                       if ( $wgUseRCPatrol || ( $type == RC_NEW && $wgUseNPPatrol ) ) {
-                               $packet['patrolled'] = $attrib['rc_patrolled'];
-                       }
-               }
-
-               switch ( $type ) {
-                       case RC_EDIT:
-                               $packet['length'] = array( 'old' => $attrib['rc_old_len'], 'new' => $attrib['rc_new_len'] );
-                               $packet['revision'] = array( 'old' => $attrib['rc_last_oldid'], 'new' => $attrib['rc_this_oldid'] );
-                               break;
-
-                       case RC_NEW:
-                               $packet['length'] = array( 'old' => null, 'new' => $attrib['rc_new_len'] );
-                               $packet['revision'] = array( 'old' => null, 'new' => $attrib['rc_this_oldid'] );
-                               break;
-
-                       case RC_LOG:
-                               $packet['log_type'] = $attrib['rc_log_type'];
-                               $packet['log_action'] = $attrib['rc_log_action'];
-                               if ( $attrib['rc_params'] ) {
-                                       wfSuppressWarnings();
-                                       $params = unserialize( $attrib['rc_params'] );
-                                       wfRestoreWarnings();
-                                       if (
-                                               // If it's an actual serialised false...
-                                               $attrib['rc_params'] == serialize( false ) ||
-                                               // Or if we did not get false back when trying to unserialise
-                                               $params !== false
-                                       ) {
-                                               // From ApiQueryLogEvents::addLogParams
-                                               $logParams = array();
-                                               // Keys like "4::paramname" can't be used for output so we change them to "paramname"
-                                               foreach ( $params as $key => $value ) {
-                                                       if ( strpos( $key, ':' ) === false ) {
-                                                               $logParams[$key] = $value;
-                                                               continue;
-                                                       }
-                                                       $logParam = explode( ':', $key, 3 );
-                                                       $logParams[$logParam[2]] = $value;
-                                               }
-                                               $packet['log_params'] = $logParams;
-                                       } else {
-                                               $packet['log_params'] = explode( "\n", $attrib['rc_params'] );
-                                       }
-                               }
-                               $packet['log_action_comment'] = $actionComment;
-                               break;
-               }
-
-               $packet['server_url'] = $wgCanonicalServer;
-               $packet['server_script_path'] = $wgScriptPath ?: '/';
-               $packet['wiki'] = $wgDBname;
-
+/**
+ * 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
+ */
+
+/**
+ * Formats a notification into the JSON format (http://www.json.org)
+ *
+ * @since 1.22
+ */
+class JSONRCFeedFormatter extends MachineReadableRCFeedFormatter {
+
+       protected function formatArray( array $packet ) {
                return FormatJson::encode( $packet );
        }
 }
diff --git a/includes/rcfeed/MachineReadableRCFeedFormatter.php b/includes/rcfeed/MachineReadableRCFeedFormatter.php
new file mode 100644 (file)
index 0000000..9321f52
--- /dev/null
@@ -0,0 +1,128 @@
+<?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
+ */
+
+/**
+ * Abstract class so there can be multiple formatters outputting the same data
+ *
+ * @since 1.23
+ */
+abstract class MachineReadableRCFeedFormatter implements RCFeedFormatter {
+
+       /**
+        * Take the packet and return the formatted string
+        * @param array $packet
+        * @return string
+        */
+       abstract protected function formatArray( array $packet );
+
+       /**
+        * Generates a notification that can be easily interpreted by a machine.
+        * @see RCFeedFormatter::getLine
+        */
+       public function getLine( array $feed, RecentChange $rc, $actionComment ) {
+               global $wgCanonicalServer, $wgScriptPath;
+               $attrib = $rc->getAttributes();
+
+               $packet = array(
+                       // Usually, RC ID is exposed only for patrolling purposes,
+                       // but there is no real reason not to expose it in other cases,
+                       // and I can see how this may be potentially useful for clients.
+                       'id' => $attrib['rc_id'],
+                       'type' => $attrib['rc_type'],
+                       'namespace' => $rc->getTitle()->getNamespace(),
+                       'title' => $rc->getTitle()->getPrefixedText(),
+                       'comment' => $attrib['rc_comment'],
+                       'timestamp' => (int)wfTimestamp( TS_UNIX, $attrib['rc_timestamp'] ),
+                       'user' => $attrib['rc_user_text'],
+                       'bot' => (bool)$attrib['rc_bot'],
+               );
+
+               if ( isset( $feed['channel'] ) ) {
+                       $packet['channel'] = $feed['channel'];
+               }
+
+               $type = $attrib['rc_type'];
+               if ( $type == RC_EDIT || $type == RC_NEW ) {
+                       global $wgUseRCPatrol, $wgUseNPPatrol;
+
+                       $packet['minor'] = $attrib['rc_minor'];
+                       if ( $wgUseRCPatrol || ( $type == RC_NEW && $wgUseNPPatrol ) ) {
+                               $packet['patrolled'] = $attrib['rc_patrolled'];
+                       }
+               }
+
+               switch ( $type ) {
+                       case RC_EDIT:
+                               $packet['length'] = array(
+                                       'old' => $attrib['rc_old_len'],
+                                       'new' => $attrib['rc_new_len']
+                               );
+                               $packet['revision'] = array(
+                                       'old' => $attrib['rc_last_oldid'],
+                                       'new' => $attrib['rc_this_oldid']
+                               );
+                               break;
+
+                       case RC_NEW:
+                               $packet['length'] = array( 'old' => null, 'new' => $attrib['rc_new_len'] );
+                               $packet['revision'] = array( 'old' => null, 'new' => $attrib['rc_this_oldid'] );
+                               break;
+
+                       case RC_LOG:
+                               $packet['log_type'] = $attrib['rc_log_type'];
+                               $packet['log_action'] = $attrib['rc_log_action'];
+                               if ( $attrib['rc_params'] ) {
+                                       wfSuppressWarnings();
+                                       $params = unserialize( $attrib['rc_params'] );
+                                       wfRestoreWarnings();
+                                       if (
+                                               // If it's an actual serialised false...
+                                               $attrib['rc_params'] == serialize( false ) ||
+                                               // Or if we did not get false back when trying to unserialise
+                                               $params !== false
+                                       ) {
+                                               // From ApiQueryLogEvents::addLogParams
+                                               $logParams = array();
+                                               // Keys like "4::paramname" can't be used for output so we change them to "paramname"
+                                               foreach ( $params as $key => $value ) {
+                                                       if ( strpos( $key, ':' ) === false ) {
+                                                               $logParams[$key] = $value;
+                                                               continue;
+                                                       }
+                                                       $logParam = explode( ':', $key, 3 );
+                                                       $logParams[$logParam[2]] = $value;
+                                               }
+                                               $packet['log_params'] = $logParams;
+                                       } else {
+                                               $packet['log_params'] = explode( "\n", $attrib['rc_params'] );
+                                       }
+                               }
+                               $packet['log_action_comment'] = $actionComment;
+                               break;
+               }
+
+               $packet['server_url'] = $wgCanonicalServer;
+               $packet['server_script_path'] = $wgScriptPath ?: '/';
+               $packet['wiki'] = wfWikiID();
+
+               return $this->formatArray( $packet );
+       }
+}
index f733bcb..022e317 100644 (file)
@@ -1,4 +1,29 @@
 <?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
+ */
+
+/**
+ * Interface for RC feed engines, which send formatted notifications
+ *
+ * @since 1.22
+ */
 interface RCFeedEngine {
        /**
         * Sends some text to the specified live feed.
index 6c9f804..2f15659 100644 (file)
@@ -1,7 +1,32 @@
 <?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
+ */
+
+/**
+ * Interface for RC feed formatters
+ *
+ * @since 1.22
+ */
 interface RCFeedFormatter {
        /**
-        * Formats the line for the live feed.
+        * Formats the line to be sent by an engine
         *
         * @param array $feed The feed, as configured in an associative array.
         * @param RecentChange $rc The RecentChange object showing what sort
index 4bcc133..b9023b6 100644 (file)
@@ -1,23 +1,48 @@
 <?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
+ */
+
+/**
+ * Emit a recent change notification via Redis Pub/Sub
+ *
+ * If the feed URI contains a path component, it will be used to generate a
+ * channel name by stripping the leading slash and replacing any remaining
+ * slashes with '.'. If no path component is present, the channel is set to
+ * 'rc'. If the URI contains a query string, its parameters will be parsed
+ * as RedisConnectionPool options.
+ *
+ * @example
+ * $wgRCFeeds['redis'] = array(
+ *      'formatter' => 'JSONRCFeedFormatter',
+ *      'uri'       => "redis://127.0.0.1:6379/rc.$wgDBname",
+ * );
+ *
+ * @since 1.22
+ */
 class RedisPubSubFeedEngine implements RCFeedEngine {
+
        /**
-        * Emit a recent change notification via Redis Pub/Sub
-        *
-        * If the feed URI contains a path component, it will be used to generate a
-        * channel name by stripping the leading slash and replacing any remaining
-        * slashes with '.'. If no path component is present, the channel is set to
-        * 'rc'. If the URI contains a query string, its parameters will be parsed
-        * as RedisConnectionPool options.
-        *
-        * @example $wgRCFeeds['redis'] = array(
-        *      'formatter' => 'JSONRCFeedFormatter',
-        *      'uri'       => "redis://127.0.0.1:6379/rc.$wgDBname",
-        * );
-        *
-        * @since 1.22
+        * @see RCFeedEngine::send
         */
        public function send( array $feed, $line ) {
-               $parsed = parse_url( $feed['uri'] );
+               $parsed = wfParseUrl( $feed['uri'] );
                $server = $parsed['host'];
                $options = array( 'serializer' => 'none' );
                $channel = 'rc';
@@ -36,6 +61,11 @@ class RedisPubSubFeedEngine implements RCFeedEngine {
                }
                $pool = RedisConnectionPool::singleton( $options );
                $conn = $pool->getConnection( $server );
-               $conn->publish( $channel, $line );
+               if ( $conn !== false ) {
+                       $conn->publish( $channel, $line );
+                       return true;
+               } else {
+                       return false;
+               }
        }
 }
index beeb73b..8554670 100644 (file)
@@ -1,7 +1,31 @@
 <?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
+ */
+
+/**
+ * Sends the notification to the specified host in a UDP packet.
+ * @since 1.22
+ */
+
 class UDPRCFeedEngine implements RCFeedEngine {
        /**
-        * Sends the notification to the specified host in a UDP packet.
         * @see RCFeedEngine::send
         */
        public function send( array $feed, $line ) {
diff --git a/includes/rcfeed/XMLRCFeedFormatter.php b/includes/rcfeed/XMLRCFeedFormatter.php
new file mode 100644 (file)
index 0000000..d572426
--- /dev/null
@@ -0,0 +1,30 @@
+<?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.23
+ */
+class XMLRCFeedFormatter extends MachineReadableRCFeedFormatter {
+
+       protected function formatArray( array $packet ) {
+               return ApiFormatXml::recXmlPrint( 'recentchange', $packet, 0 );
+       }
+}
index f529568..08b1ac1 100644 (file)
@@ -141,9 +141,7 @@ class ResourceLoader {
 
                // For empty/whitespace-only data or for unknown filters, don't perform
                // any caching or processing
-               if ( trim( $data ) === ''
-                       || !in_array( $filter, array( 'minify-js', 'minify-css' ) ) )
-               {
+               if ( trim( $data ) === '' || !in_array( $filter, array( 'minify-js', 'minify-css' ) ) ) {
                        wfProfileOut( __METHOD__ );
                        return $data;
                }
@@ -1132,11 +1130,11 @@ class ResourceLoader {
        public static function inDebugMode() {
                global $wgRequest, $wgResourceLoaderDebug;
                static $retval = null;
-               if ( !is_null( $retval ) ) {
-                       return $retval;
+               if ( is_null( $retval ) ) {
+                       $retval = $wgRequest->getFuzzyBool( 'debug',
+                               $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
                }
-               return $retval = $wgRequest->getFuzzyBool( 'debug',
-                       $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
+               return $retval;
        }
 
        /**
index 8183999..eaff86f 100644 (file)
@@ -241,7 +241,11 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                                case 'dependencies':
                                case 'messages':
                                case 'targets':
-                                       $this->{$member} = (array)$option;
+                                       // Normalise
+                                       $option = array_values( array_unique( (array)$option ) );
+                                       sort( $option );
+
+                                       $this->{$member} = $option;
                                        break;
                                // Single strings
                                case 'group':
@@ -450,21 +454,57 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                // If a module is nothing but a list of dependencies, we need to avoid
                // giving max() an empty array
                if ( count( $files ) === 0 ) {
+                       $this->modifiedTime[$context->getHash()] = 1;
                        wfProfileOut( __METHOD__ );
-                       return $this->modifiedTime[$context->getHash()] = 1;
+                       return $this->modifiedTime[$context->getHash()];
                }
 
                wfProfileIn( __METHOD__ . '-filemtime' );
                $filesMtime = max( array_map( array( __CLASS__, 'safeFilemtime' ), $files ) );
                wfProfileOut( __METHOD__ . '-filemtime' );
+
                $this->modifiedTime[$context->getHash()] = max(
                        $filesMtime,
-                       $this->getMsgBlobMtime( $context->getLanguage() ) );
+                       $this->getMsgBlobMtime( $context->getLanguage() ),
+                       $this->getDefinitionMtime( $context )
+               );
 
                wfProfileOut( __METHOD__ );
                return $this->modifiedTime[$context->getHash()];
        }
 
+       /**
+        * Get the definition summary for this module.
+        *
+        * @return Array
+        */
+       public function getDefinitionSummary( ResourceLoaderContext $context ) {
+               $summary = array(
+                       'class' => get_class( $this ),
+               );
+               foreach ( array(
+                       'scripts',
+                       'debugScripts',
+                       'loaderScripts',
+                       'styles',
+                       'languageScripts',
+                       'skinScripts',
+                       'skinStyles',
+                       'dependencies',
+                       'messages',
+                       'targets',
+                       'group',
+                       'position',
+                       'localBasePath',
+                       'remoteBasePath',
+                       'debugRaw',
+                       'raw',
+               ) as $member ) {
+                       $summary[$member] = $this->{$member};
+               };
+               return $summary;
+       }
+
        /* Protected Methods */
 
        /**
@@ -538,8 +578,8 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
                        return $list[$key];
                } elseif ( is_string( $fallback )
                        && isset( $list[$fallback] )
-                       && is_array( $list[$fallback] ) )
-               {
+                       && is_array( $list[$fallback] )
+               {
                        return $list[$fallback];
                }
                return array();
index 11264fc..429bcec 100644 (file)
@@ -398,7 +398,8 @@ abstract class ResourceLoaderModule {
         * Helper method for calculating when the module's hash (if it has one) changed.
         *
         * @param ResourceLoaderContext $context
-        * @return integer: UNIX timestamp or 0 if there is no hash provided
+        * @return integer: UNIX timestamp or 0 if no hash was provided
+        *  by getModifiedHash()
         */
        public function getHashMtime( ResourceLoaderContext $context ) {
                $hash = $this->getModifiedHash( $context );
@@ -407,7 +408,7 @@ abstract class ResourceLoaderModule {
                }
 
                $cache = wfGetCache( CACHE_ANYTHING );
-               $key = wfMemcKey( 'resourceloader', 'modulemodifiedhash', $this->getName() );
+               $key = wfMemcKey( 'resourceloader', 'modulemodifiedhash', $this->getName(), $hash );
 
                $data = $cache->get( $key );
                if ( is_array( $data ) && $data['hash'] === $hash ) {
@@ -425,8 +426,10 @@ abstract class ResourceLoaderModule {
        }
 
        /**
-        * Get the last modification timestamp of the message blob for this
-        * module in a given language.
+        * Get the hash for whatever this module may contain.
+        *
+        * This is the method subclasses should implement if they want to make
+        * use of getHashMTime() inside getModifiedTime().
         *
         * @param ResourceLoaderContext $context
         * @return string|null: Hash
@@ -435,6 +438,81 @@ abstract class ResourceLoaderModule {
                return null;
        }
 
+       /**
+        * Helper method for calculating when this module's definition summary was last changed.
+        *
+        * @return integer: UNIX timestamp or 0 if no definition summary was provided
+        *  by getDefinitionSummary()
+        */
+       public function getDefinitionMtime( ResourceLoaderContext $context ) {
+               wfProfileIn( __METHOD__ );
+               $summary = $this->getDefinitionSummary( $context );
+               if ( $summary === null ) {
+                       wfProfileOut( __METHOD__ );
+                       return 0;
+               }
+
+               $hash = md5( json_encode( $summary ) );
+
+               $cache = wfGetCache( CACHE_ANYTHING );
+
+               // Embed the hash itself in the cache key. This allows for a few nifty things:
+               // - During deployment, servers with old and new versions of the code communicating
+               //   with the same memcached will not override the same key repeatedly increasing
+               //   the timestamp.
+               // - In case of the definition changing and then changing back in a short period of time
+               //   (e.g. in case of a revert or a corrupt server) the old timestamp and client-side cache
+               //   url will be re-used.
+               // - If different context-combinations (e.g. same skin, same language or some combination
+               //   thereof) result in the same definition, they will use the same hash and timestamp.
+               $key = wfMemcKey( 'resourceloader', 'moduledefinition', $this->getName(), $hash );
+
+               $data = $cache->get( $key );
+               if ( is_int( $data ) && $data > 0 ) {
+                       // We've seen this hash before, re-use the timestamp of when we first saw it.
+                       wfProfileOut( __METHOD__ );
+                       return $data;
+               }
+
+               wfDebugLog( 'resourceloader', __METHOD__ . ": New definition hash for module {$this->getName()} in context {$context->getHash()}: $hash." );
+
+               $timestamp = time();
+               $cache->set( $key, $timestamp );
+
+               wfProfileOut( __METHOD__ );
+               return $timestamp;
+       }
+
+       /**
+        * Get the definition summary for this module.
+        *
+        * This is the method subclasses should implement if they want to make
+        * use of getDefinitionMTime() inside getModifiedTime().
+        *
+        * Return an array containing values from all significant properties of this
+        * module's definition. Be sure to include things that are explicitly ordered,
+        * in their actaul order (bug 37812).
+        *
+        * Avoid including things that are insiginificant (e.g. order of message
+        * keys is insignificant and should be sorted to avoid unnecessary cache
+        * invalidation).
+        *
+        * Avoid including things already considered by other methods inside your
+        * getModifiedTime(), such as file mtime timestamps.
+        *
+        * Serialisation is done using json_encode, which means object state is not
+        * taken into account when building the hash. This data structure must only
+        * contain arrays and scalars as values (avoid object instances) which means
+        * it requires abstraction.
+        *
+        * @return Array|null
+        */
+       public function getDefinitionSummary( ResourceLoaderContext $context ) {
+               return array(
+                       'class' => get_class( $this ),
+               );
+       }
+
        /**
         * Check whether this module is known to be empty. If a child class
         * has an easy and cheap way to determine that this module is
index b38f448..d0c3068 100644 (file)
@@ -84,6 +84,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        'wgMainPageTitle' => $mainPage->getPrefixedText(),
                        'wgFormattedNamespaces' => $wgContLang->getFormattedNamespaces(),
                        'wgNamespaceIds' => $namespaceIds,
+                       'wgContentNamespaces' => MWNamespace::getContentNamespaces(),
                        'wgSiteName' => $wgSitename,
                        'wgFileExtensions' => array_values( array_unique( $wgFileExtensions ) ),
                        'wgDBname' => $wgDBname,
@@ -272,7 +273,8 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
                        $module = $loader->getModule( $name );
                        $time = max( $time, $module->getModifiedTime( $context ) );
                }
-               return $this->modifiedTime[$hash] = $time;
+               $this->modifiedTime[$hash] = $time;
+               return $this->modifiedTime[$hash];
        }
 
        /* Methods */
index bda8653..a9d1076 100644 (file)
@@ -41,12 +41,12 @@ class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
                $hash = $context->getHash();
-               if ( isset( $this->modifiedTime[$hash] ) ) {
-                       return $this->modifiedTime[$hash];
+               if ( !isset( $this->modifiedTime[$hash] ) ) {
+                       global $wgUser;
+                       $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
                }
 
-               global $wgUser;
-               return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+               return $this->modifiedTime[$hash];
        }
 
        /**
@@ -71,8 +71,8 @@ class ResourceLoaderUserCSSPrefsModule extends ResourceLoaderModule {
                                ( $options['underline'] ? 'underline' : 'none' ) . "; }";
                } else {
                        # The scripts of these languages are very hard to read with underlines
-                       $rules[] = 'a:lang(ar), a:lang(ckb), a:lang(kk-arab), ' .
-                       'a:lang(mzn), a:lang(ps), a:lang(ur) { text-decoration: none; }';
+                       $rules[] = 'a:lang(ar), a:lang(kk-arab), a:lang(mzn), ' .
+                       'a:lang(ps), a:lang(ur) { text-decoration: none; }';
                }
                if ( $options['justify'] ) {
                        $rules[] = "#article, #bodyContent, #mw_content { text-align: justify; }\n";
index 9004267..6757d39 100644 (file)
@@ -59,7 +59,7 @@ class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
 
                $pages = array();
                foreach ( $user->getEffectiveGroups() as $group ) {
-                       if ( in_array( $group, array( '*', 'user' ) ) ) {
+                       if ( $group == '*' ) {
                                continue;
                        }
                        if ( $wgUseSiteJs ) {
index 1df8c56..3686bea 100644 (file)
@@ -43,12 +43,12 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
         */
        public function getModifiedTime( ResourceLoaderContext $context ) {
                $hash = $context->getHash();
-               if ( isset( $this->modifiedTime[$hash] ) ) {
-                       return $this->modifiedTime[$hash];
+               if ( !isset( $this->modifiedTime[$hash] ) ) {
+                       global $wgUser;
+                       $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
                }
 
-               global $wgUser;
-               return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+               return $this->modifiedTime[$hash];
        }
 
        /**
index 3f10ae5..2653f76 100644 (file)
@@ -180,10 +180,26 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
                if ( count( $mtimes ) ) {
                        $modifiedTime = max( $modifiedTime, max( $mtimes ) );
                }
-               $modifiedTime = max( $modifiedTime, $this->getMsgBlobMtime( $context->getLanguage() ) );
+               $modifiedTime = max(
+                       $modifiedTime,
+                       $this->getMsgBlobMtime( $context->getLanguage() ),
+                       $this->getDefinitionMtime( $context )
+               );
                return $modifiedTime;
        }
 
+       /**
+        * Get the definition summary for this module.
+        *
+        * @return Array
+        */
+       public function getDefinitionSummary( ResourceLoaderContext $context ) {
+               return array(
+                       'class' => get_class( $this ),
+                       'pages' => $this->getPages( $context ),
+               );
+       }
+
        /**
         * @param $context ResourceLoaderContext
         * @return bool
index 7185087..0c887e4 100644 (file)
@@ -669,8 +669,9 @@ class RevDel_FileItem extends RevDel_Item {
         */
        protected function getUserTools() {
                if ( $this->file->userCan( Revision::DELETED_USER, $this->list->getUser() ) ) {
-                       $link = Linker::userLink( $this->file->user, $this->file->user_text ) .
-                               Linker::userToolLinks( $this->file->user, $this->file->user_text );
+                       $uid = $this->file->getUser( 'id' );
+                       $name = $this->file->getUser( 'text' );
+                       $link = Linker::userLink( $uid, $name ) . Linker::userToolLinks( $uid, $name );
                } else {
                        $link = $this->list->msg( 'rev-deleted-user' )->escaped();
                }
@@ -688,7 +689,7 @@ class RevDel_FileItem extends RevDel_Item {
         */
        protected function getComment() {
                if ( $this->file->userCan( File::DELETED_COMMENT, $this->list->getUser() ) ) {
-                       $block = Linker::commentBlock( $this->file->description );
+                       $block = Linker::commentBlock( $this->file->getDescription() );
                } else {
                        $block = ' ' . $this->list->msg( 'rev-deleted-comment' )->escaped();
                }
index 71c05d8..9ebe5e7 100644 (file)
@@ -36,6 +36,7 @@ class SearchEngine {
        var $searchTerms = array();
        var $namespaces = array( NS_MAIN );
        var $showRedirects = false;
+       protected $showSuggestion = true;
 
        /// Feature values
        protected $features = array();
@@ -304,6 +305,17 @@ class SearchEngine {
                $this->namespaces = $namespaces;
        }
 
+       /**
+        * Set whether the searcher should try to build a suggestion.  Note: some searchers
+        * don't support building a suggestion in the first place and others don't respect
+        * this flag.
+        *
+        * @param boolean $showSuggestion should the searcher try to build suggestions
+        */
+       function setShowSuggestion( $showSuggestion ) {
+               $this->showSuggestion = $showSuggestion;
+       }
+
        /**
         * Parse some common prefixes: all (search everything)
         * or namespace names
@@ -485,11 +497,10 @@ class SearchEngine {
         */
        public static function getSearchTypes() {
                global $wgSearchType, $wgSearchTypeAlternatives;
-               static $alternatives = null;
-               if ( $alternatives === null ) {
-                       $alternatives = $wgSearchTypeAlternatives ?: array();
-                       array_unshift( $alternatives, $wgSearchType );
-               }
+
+               $alternatives = $wgSearchTypeAlternatives ?: array();
+               array_unshift( $alternatives, $wgSearchType );
+
                return $alternatives;
        }
 
@@ -751,18 +762,22 @@ class SearchResult {
        /**
         * @var Revision
         */
-       var $mRevision = null;
-       var $mImage = null;
+       protected $mRevision = null;
+
+       /**
+        * @var File
+        */
+       protected $mImage = null;
 
        /**
         * @var Title
         */
-       var $mTitle;
+       protected $mTitle;
 
        /**
         * @var String
         */
-       var $mText;
+       protected $mText;
 
        /**
         * Return a new SearchResult and initializes it with a title.
@@ -829,10 +844,7 @@ class SearchResult {
         * @return Boolean
         */
        function isBrokenTitle() {
-               if ( is_null( $this->mTitle ) ) {
-                       return true;
-               }
-               return false;
+               return is_null( $this->mTitle );
        }
 
        /**
@@ -851,6 +863,14 @@ class SearchResult {
                return $this->mTitle;
        }
 
+       /**
+        * Get the file for this page, if one exists
+        * @return File|null
+        */
+       function getFile() {
+               return $this->mImage;
+       }
+
        /**
         * @return float|null if not supported
         */
diff --git a/includes/specialpage/FormSpecialPage.php b/includes/specialpage/FormSpecialPage.php
new file mode 100644 (file)
index 0000000..90f82e0
--- /dev/null
@@ -0,0 +1,192 @@
+<?php
+/**
+ * Special page which uses an HTMLForm to handle processing.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Special page which uses an HTMLForm to handle processing.  This is mostly a
+ * clone of FormAction.  More special pages should be built this way; maybe this could be
+ * a new structure for SpecialPages.
+ *
+ * @ingroup SpecialPage
+ */
+abstract class FormSpecialPage extends SpecialPage {
+       /**
+        * The sub-page of the special page.
+        * @var string
+        */
+       protected $par = null;
+
+       /**
+        * Get an HTMLForm descriptor array
+        * @return Array
+        */
+       abstract protected function getFormFields();
+
+       /**
+        * Add pre-text to the form
+        * @return String HTML which will be sent to $form->addPreText()
+        */
+       protected function preText() {
+               return '';
+       }
+
+       /**
+        * Add post-text to the form
+        * @return String HTML which will be sent to $form->addPostText()
+        */
+       protected function postText() {
+               return '';
+       }
+
+       /**
+        * Play with the HTMLForm if you need to more substantially
+        * @param $form HTMLForm
+        */
+       protected function alterForm( HTMLForm $form ) {
+       }
+
+       /**
+        * Get message prefix for HTMLForm
+        *
+        * @since 1.21
+        * @return string
+        */
+       protected function getMessagePrefix() {
+               return strtolower( $this->getName() );
+       }
+
+       /**
+        * Get the HTMLForm to control behavior
+        * @return HTMLForm|null
+        */
+       protected function getForm() {
+               $this->fields = $this->getFormFields();
+
+               $form = new HTMLForm( $this->fields, $this->getContext(), $this->getMessagePrefix() );
+               $form->setSubmitCallback( array( $this, 'onSubmit' ) );
+               // If the form is a compact vertical form, then don't output this ugly
+               // fieldset surrounding it.
+               // XXX Special pages can setDisplayFormat to 'vform' in alterForm(), but that
+               // is called after this.
+               if ( !$form->isVForm() ) {
+                       $form->setWrapperLegendMsg( $this->getMessagePrefix() . '-legend' );
+               }
+
+               $headerMsg = $this->msg( $this->getMessagePrefix() . '-text' );
+               if ( !$headerMsg->isDisabled() ) {
+                       $form->addHeaderText( $headerMsg->parseAsBlock() );
+               }
+
+               // Retain query parameters (uselang etc)
+               $params = array_diff_key(
+                       $this->getRequest()->getQueryValues(), array( 'title' => null ) );
+               $form->addHiddenField( 'redirectparams', wfArrayToCgi( $params ) );
+
+               $form->addPreText( $this->preText() );
+               $form->addPostText( $this->postText() );
+               $this->alterForm( $form );
+
+               // Give hooks a chance to alter the form, adding extra fields or text etc
+               wfRunHooks( "Special{$this->getName()}BeforeFormDisplay", array( &$form ) );
+
+               return $form;
+       }
+
+       /**
+        * Process the form on POST submission.
+        * @param  $data Array
+        * @return Bool|Array true for success, false for didn't-try, array of errors on failure
+        */
+       abstract public function onSubmit( array $data );
+
+       /**
+        * Do something exciting on successful processing of the form, most likely to show a
+        * confirmation message
+        * @since 1.22 Default is to do nothing
+        */
+       public function onSuccess() {
+       }
+
+       /**
+        * Basic SpecialPage workflow: get a form, send it to the user; get some data back,
+        *
+        * @param string $par Subpage string if one was specified
+        */
+       public function execute( $par ) {
+               $this->setParameter( $par );
+               $this->setHeaders();
+
+               // This will throw exceptions if there's a problem
+               $this->checkExecutePermissions( $this->getUser() );
+
+               $form = $this->getForm();
+               if ( $form->show() ) {
+                       $this->onSuccess();
+               }
+       }
+
+       /**
+        * Maybe do something interesting with the subpage parameter
+        * @param string $par
+        */
+       protected function setParameter( $par ) {
+               $this->par = $par;
+       }
+
+       /**
+        * Called from execute() to check if the given user can perform this action.
+        * Failures here must throw subclasses of ErrorPageError.
+        * @param $user User
+        * @throws UserBlockedError
+        * @return Bool true
+        */
+       protected function checkExecutePermissions( User $user ) {
+               $this->checkPermissions();
+
+               if ( $this->requiresUnblock() && $user->isBlocked() ) {
+                       $block = $user->getBlock();
+                       throw new UserBlockedError( $block );
+               }
+
+               if ( $this->requiresWrite() ) {
+                       $this->checkReadOnly();
+               }
+
+               return true;
+       }
+
+       /**
+        * Whether this action requires the wiki not to be locked
+        * @return Bool
+        */
+       public function requiresWrite() {
+               return true;
+       }
+
+       /**
+        * Whether this action cannot be executed by a blocked user
+        * @return Bool
+        */
+       public function requiresUnblock() {
+               return true;
+       }
+}
diff --git a/includes/specialpage/IncludableSpecialPage.php b/includes/specialpage/IncludableSpecialPage.php
new file mode 100644 (file)
index 0000000..2f7f69c
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+/**
+ * Shortcut to construct an includable special page.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Shortcut to construct an includable special page.
+ *
+ * @ingroup SpecialPage
+ */
+class IncludableSpecialPage extends SpecialPage {
+       function __construct(
+               $name, $restriction = '', $listed = true, $function = false, $file = 'default'
+       ) {
+               parent::__construct( $name, $restriction, $listed, $function, $file, true );
+       }
+
+       public function isIncludable() {
+               return true;
+       }
+}
diff --git a/includes/specialpage/RedirectSpecialPage.php b/includes/specialpage/RedirectSpecialPage.php
new file mode 100644 (file)
index 0000000..eb8557a
--- /dev/null
@@ -0,0 +1,206 @@
+<?php
+/**
+ * Shortcuts to construct a special page alias.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Shortcut to construct a special page alias.
+ *
+ * @ingroup SpecialPage
+ */
+abstract class RedirectSpecialPage extends UnlistedSpecialPage {
+
+       // Query parameters that can be passed through redirects
+       protected $mAllowedRedirectParams = array();
+
+       // Query parameters added by redirects
+       protected $mAddedRedirectParams = array();
+
+       public function execute( $par ) {
+               $redirect = $this->getRedirect( $par );
+               $query = $this->getRedirectQuery();
+               // Redirect to a page title with possible query parameters
+               if ( $redirect instanceof Title ) {
+                       $url = $redirect->getFullURL( $query );
+                       $this->getOutput()->redirect( $url );
+                       return $redirect;
+               } elseif ( $redirect === true ) {
+                       // Redirect to index.php with query parameters
+                       $url = wfAppendQuery( wfScript( 'index' ), $query );
+                       $this->getOutput()->redirect( $url );
+                       return $redirect;
+               } else {
+                       $class = get_class( $this );
+                       throw new MWException( "RedirectSpecialPage $class doesn't redirect!" );
+               }
+       }
+
+       /**
+        * If the special page is a redirect, then get the Title object it redirects to.
+        * False otherwise.
+        *
+        * @param string $par Subpage string
+        * @return Title|bool
+        */
+       abstract public function getRedirect( $par );
+
+       /**
+        * Return part of the request string for a special redirect page
+        * This allows passing, e.g. action=history to Special:Mypage, etc.
+        *
+        * @return String
+        */
+       public function getRedirectQuery() {
+               $params = array();
+
+               foreach ( $this->mAllowedRedirectParams as $arg ) {
+                       if ( $this->getRequest()->getVal( $arg, null ) !== null ) {
+                               $params[$arg] = $this->getRequest()->getVal( $arg );
+                       }
+               }
+
+               foreach ( $this->mAddedRedirectParams as $arg => $val ) {
+                       $params[$arg] = $val;
+               }
+
+               return count( $params )
+                       ? $params
+                       : false;
+       }
+}
+
+/**
+ * @ingroup SpecialPage
+ */
+abstract class SpecialRedirectToSpecial extends RedirectSpecialPage {
+       // @todo FIXME: Visibility must be declared
+       var $redirName, $redirSubpage;
+
+       function __construct(
+               $name, $redirName, $redirSubpage = false,
+               $allowedRedirectParams = array(), $addedRedirectParams = array()
+       ) {
+               parent::__construct( $name );
+               $this->redirName = $redirName;
+               $this->redirSubpage = $redirSubpage;
+               $this->mAllowedRedirectParams = $allowedRedirectParams;
+               $this->mAddedRedirectParams = $addedRedirectParams;
+       }
+
+       public function getRedirect( $subpage ) {
+               if ( $this->redirSubpage === false ) {
+                       return SpecialPage::getTitleFor( $this->redirName, $subpage );
+               } else {
+                       return SpecialPage::getTitleFor( $this->redirName, $this->redirSubpage );
+               }
+       }
+}
+
+/**
+ * Superclass for any RedirectSpecialPage which redirects the user
+ * to a particular article (as opposed to user contributions, logs, etc.).
+ *
+ * For security reasons these special pages are restricted to pass on
+ * the following subset of GET parameters to the target page while
+ * removing all others:
+ *
+ * - useskin, uselang, printable: to alter the appearance of the resulting page
+ *
+ * - redirect: allows viewing one's user page or talk page even if it is a
+ * redirect.
+ *
+ * - rdfrom: allows redirecting to one's user page or talk page from an
+ * external wiki with the "Redirect from..." notice.
+ *
+ * - limit, offset: Useful for linking to history of one's own user page or
+ * user talk page. For example, this would be a link to "the last edit to your
+ * user talk page in the year 2010":
+ * http://en.wikipedia.org/wiki/Special:MyPage?offset=20110000000000&limit=1&action=history
+ *
+ * - feed: would allow linking to the current user's RSS feed for their user
+ * talk page:
+ * http://en.wikipedia.org/w/index.php?title=Special:MyTalk&action=history&feed=rss
+ *
+ * - preloadtitle: Can be used to provide a default section title for a
+ * preloaded new comment on one's own talk page.
+ *
+ * - summary : Can be used to provide a default edit summary for a preloaded
+ * edit to one's own user page or talk page.
+ *
+ * - preview: Allows showing/hiding preview on first edit regardless of user
+ * preference, useful for preloaded edits where you know preview wouldn't be
+ * useful.
+ *
+ * - internaledit, externaledit, mode: Allows forcing the use of the
+ * internal/external editor, e.g. to force the internal editor for
+ * short/simple preloaded edits.
+ *
+ * - redlink: Affects the message the user sees if their talk page/user talk
+ * page does not currently exist. Avoids confusion for newbies with no user
+ * pages over why they got a "permission error" following this link:
+ * http://en.wikipedia.org/w/index.php?title=Special:MyPage&redlink=1
+ *
+ * - debug: determines whether the debug parameter is passed to load.php,
+ * which disables reformatting and allows scripts to be debugged. Useful
+ * when debugging scripts that manipulate one's own user page or talk page.
+ *
+ * @par Hook extension:
+ * Extensions can add to the redirect parameters list by using the hook
+ * RedirectSpecialArticleRedirectParams
+ *
+ * This hook allows extensions which add GET parameters like FlaggedRevs to
+ * retain those parameters when redirecting using special pages.
+ *
+ * @par Hook extension example:
+ * @code
+ *     $wgHooks['RedirectSpecialArticleRedirectParams'][] =
+ *             'MyExtensionHooks::onRedirectSpecialArticleRedirectParams';
+ *     public static function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
+ *             $redirectParams[] = 'stable';
+ *             return true;
+ *     }
+ * @endcode
+ *
+ * @ingroup SpecialPage
+ */
+abstract class RedirectSpecialArticle extends RedirectSpecialPage {
+       function __construct( $name ) {
+               parent::__construct( $name );
+               $redirectParams = array(
+                       'action',
+                       'redirect', 'rdfrom',
+                       # Options for preloaded edits
+                       'preload', 'editintro', 'preloadtitle', 'summary', 'nosummary',
+                       # Options for overriding user settings
+                       'preview', 'internaledit', 'externaledit', 'mode', 'minor', 'watchthis',
+                       # Options for history/diffs
+                       'section', 'oldid', 'diff', 'dir',
+                       'limit', 'offset', 'feed',
+                       # Misc options
+                       'redlink', 'debug',
+                       # Options for action=raw; missing ctype can break JS or CSS in some browsers
+                       'ctype', 'maxage', 'smaxage',
+               );
+
+               wfRunHooks( "RedirectSpecialArticleRedirectParams", array( &$redirectParams ) );
+               $this->mAllowedRedirectParams = $redirectParams;
+       }
+}
diff --git a/includes/specialpage/SpecialPage.php b/includes/specialpage/SpecialPage.php
new file mode 100644 (file)
index 0000000..e5ce48f
--- /dev/null
@@ -0,0 +1,675 @@
+<?php
+/**
+ * Parent class for all special pages.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Parent class for all special pages.
+ *
+ * Includes some static functions for handling the special page list deprecated
+ * in favor of SpecialPageFactory.
+ *
+ * @todo Turn this into a real ContextSource
+ * @ingroup SpecialPage
+ */
+class SpecialPage {
+       // The canonical name of this special page
+       // Also used for the default <h1> heading, @see getDescription()
+       protected $mName;
+
+       // The local name of this special page
+       private $mLocalName;
+
+       // Minimum user level required to access this page, or "" for anyone.
+       // Also used to categorise the pages in Special:Specialpages
+       private $mRestriction;
+
+       // Listed in Special:Specialpages?
+       private $mListed;
+
+       // Function name called by the default execute()
+       private $mFunction;
+
+       // File which needs to be included before the function above can be called
+       private $mFile;
+
+       // Whether or not this special page is being included from an article
+       protected $mIncluding;
+
+       // Whether the special page can be included in an article
+       protected $mIncludable;
+
+       /**
+        * Current request context
+        * @var IContextSource
+        */
+       protected $mContext;
+
+       /**
+        * Get a localised Title object for a specified special page name
+        *
+        * @param string $name
+        * @param string|bool $subpage Subpage string, or false to not use a subpage
+        * @param string $fragment The link fragment (after the "#")
+        * @return Title
+        * @throws MWException
+        */
+       public static function getTitleFor( $name, $subpage = false, $fragment = '' ) {
+               $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
+               return Title::makeTitle( NS_SPECIAL, $name, $fragment );
+       }
+
+       /**
+        * Get a localised Title object for a page name with a possibly unvalidated subpage
+        *
+        * @param string $name
+        * @param string|bool $subpage Subpage string, or false to not use a subpage
+        * @return Title|null Title object or null if the page doesn't exist
+        */
+       public static function getSafeTitleFor( $name, $subpage = false ) {
+               $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
+               if ( $name ) {
+                       return Title::makeTitleSafe( NS_SPECIAL, $name );
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * Default constructor for special pages
+        * Derivative classes should call this from their constructor
+        *     Note that if the user does not have the required level, an error message will
+        *     be displayed by the default execute() method, without the global function ever
+        *     being called.
+        *
+        *     If you override execute(), you can recover the default behavior with userCanExecute()
+        *     and displayRestrictionError()
+        *
+        * @param string $name Name of the special page, as seen in links and URLs
+        * @param string $restriction User right required, e.g. "block" or "delete"
+        * @param bool $listed Whether the page is listed in Special:Specialpages
+        * @param callable|bool $function Function called by execute(). By default
+        *   it is constructed from $name
+        * @param string $file File which is included by execute(). It is also
+        *   constructed from $name by default
+        * @param bool $includable Whether the page can be included in normal pages
+        */
+       public function __construct(
+               $name = '', $restriction = '', $listed = true,
+               $function = false, $file = 'default', $includable = false
+       ) {
+               $this->mName = $name;
+               $this->mRestriction = $restriction;
+               $this->mListed = $listed;
+               $this->mIncludable = $includable;
+               if ( !$function ) {
+                       $this->mFunction = 'wfSpecial' . $name;
+               } else {
+                       $this->mFunction = $function;
+               }
+               if ( $file === 'default' ) {
+                       $this->mFile = __DIR__ . "/specials/Special$name.php";
+               } else {
+                       $this->mFile = $file;
+               }
+       }
+
+       /**
+        * Get the name of this Special Page.
+        * @return string
+        */
+       function getName() {
+               return $this->mName;
+       }
+
+       /**
+        * Get the permission that a user must have to execute this page
+        * @return string
+        */
+       function getRestriction() {
+               return $this->mRestriction;
+       }
+
+       /**
+        * Get the file which will be included by SpecialPage::execute() if your extension is
+        * still stuck in the past and hasn't overridden the execute() method.  No modern code
+        * should want or need to know this.
+        * @return string
+        * @deprecated since 1.18
+        */
+       function getFile() {
+               wfDeprecated( __METHOD__, '1.18' );
+               return $this->mFile;
+       }
+
+       // @todo FIXME: Decide which syntax to use for this, and stick to it
+       /**
+        * Whether this special page is listed in Special:SpecialPages
+        * @since r3583 (v1.3)
+        * @return bool
+        */
+       function isListed() {
+               return $this->mListed;
+       }
+       /**
+        * Set whether this page is listed in Special:Specialpages, at run-time
+        * @since 1.3
+        * @param bool $listed
+        * @return bool
+        */
+       function setListed( $listed ) {
+               return wfSetVar( $this->mListed, $listed );
+       }
+       /**
+        * Get or set whether this special page is listed in Special:SpecialPages
+        * @since 1.6
+        * @param bool $x
+        * @return bool
+        */
+       function listed( $x = null ) {
+               return wfSetVar( $this->mListed, $x );
+       }
+
+       /**
+        * Whether it's allowed to transclude the special page via {{Special:Foo/params}}
+        * @return bool
+        */
+       public function isIncludable() {
+               return $this->mIncludable;
+       }
+
+       /**
+        * Whether the special page is being evaluated via transclusion
+        * @param bool $x
+        * @return bool
+        */
+       function including( $x = null ) {
+               return wfSetVar( $this->mIncluding, $x );
+       }
+
+       /**
+        * Get the localised name of the special page
+        * @return string
+        */
+       function getLocalName() {
+               if ( !isset( $this->mLocalName ) ) {
+                       $this->mLocalName = SpecialPageFactory::getLocalNameFor( $this->mName );
+               }
+               return $this->mLocalName;
+       }
+
+       /**
+        * Is this page expensive (for some definition of expensive)?
+        * Expensive pages are disabled or cached in miser mode.  Originally used
+        * (and still overridden) by QueryPage and subclasses, moved here so that
+        * Special:SpecialPages can safely call it for all special pages.
+        *
+        * @return bool
+        */
+       public function isExpensive() {
+               return false;
+       }
+
+       /**
+        * Is this page cached?
+        * Expensive pages are cached or disabled in miser mode.
+        * Used by QueryPage and subclasses, moved here so that
+        * Special:SpecialPages can safely call it for all special pages.
+        *
+        * @return bool
+        * @since 1.21
+        */
+       public function isCached() {
+               return false;
+       }
+
+       /**
+        * Can be overridden by subclasses with more complicated permissions
+        * schemes.
+        *
+        * @return bool Should the page be displayed with the restricted-access
+        *   pages?
+        */
+       public function isRestricted() {
+               // DWIM: If anons can do something, then it is not restricted
+               return $this->mRestriction != '' && !User::groupHasPermission( '*', $this->mRestriction );
+       }
+
+       /**
+        * Checks if the given user (identified by an object) can execute this
+        * special page (as defined by $mRestriction).  Can be overridden by sub-
+        * classes with more complicated permissions schemes.
+        *
+        * @param User $user The user to check
+        * @return bool Does the user have permission to view the page?
+        */
+       public function userCanExecute( User $user ) {
+               return $user->isAllowed( $this->mRestriction );
+       }
+
+       /**
+        * Output an error message telling the user what access level they have to have
+        * @throws PermissionsError
+        */
+       function displayRestrictionError() {
+               throw new PermissionsError( $this->mRestriction );
+       }
+
+       /**
+        * Checks if userCanExecute, and if not throws a PermissionsError
+        *
+        * @since 1.19
+        * @return void
+        * @throws PermissionsError
+        */
+       public function checkPermissions() {
+               if ( !$this->userCanExecute( $this->getUser() ) ) {
+                       $this->displayRestrictionError();
+               }
+       }
+
+       /**
+        * If the wiki is currently in readonly mode, throws a ReadOnlyError
+        *
+        * @since 1.19
+        * @return void
+        * @throws ReadOnlyError
+        */
+       public function checkReadOnly() {
+               if ( wfReadOnly() ) {
+                       throw new ReadOnlyError;
+               }
+       }
+
+       /**
+        * If the user is not logged in, throws UserNotLoggedIn error.
+        *
+        * Default error message includes a link to Special:Userlogin with properly set 'returnto' query
+        * parameter.
+        *
+        * @since 1.23
+        * @param string|Message $reasonMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
+        *     will be used as message keys. If a string is given, the message will also receive a
+        *     formatted login link (generated using the 'loginreqlink' message) as first parameter. If a
+        *     Message is given, it will be passed on verbatim.
+        * @param string|Message $titleMsg [optional] Passed on to UserNotLoggedIn constructor. Strings
+        *     will be used as message keys.
+        * @throws UserNotLoggedIn
+        */
+       public function requireLogin( $reasonMsg = null, $titleMsg = null ) {
+               if ( $this->getUser()->isAnon() ) {
+                       // Use default messages if not given or explicit null passed
+                       if ( !$reasonMsg ) {
+                               $reasonMsg = 'exception-nologin-text-manual';
+                       }
+                       if ( !$titleMsg ) {
+                               $titleMsg = 'exception-nologin';
+                       }
+
+                       // Convert to Messages with current context
+                       if ( is_string( $reasonMsg ) ) {
+                               $loginreqlink = Linker::linkKnown(
+                                       SpecialPage::getTitleFor( 'Userlogin' ),
+                                       $this->msg( 'loginreqlink' )->escaped(),
+                                       array(),
+                                       array( 'returnto' => $this->getPageTitle()->getPrefixedText() )
+                               );
+                               $reasonMsg = $this->msg( $reasonMsg )->rawParams( $loginreqlink );
+                       }
+                       if ( is_string( $titleMsg ) ) {
+                               $titleMsg = $this->msg( $titleMsg );
+                       }
+
+                       throw new UserNotLoggedIn( $reasonMsg, $titleMsg );
+               }
+       }
+
+       /**
+        * Sets headers - this should be called from the execute() method of all derived classes!
+        */
+       function setHeaders() {
+               $out = $this->getOutput();
+               $out->setArticleRelated( false );
+               $out->setRobotPolicy( "noindex,nofollow" );
+               $out->setPageTitle( $this->getDescription() );
+       }
+
+       /**
+        * Entry point.
+        *
+        * @since 1.20
+        *
+        * @param string|null $subPage
+        */
+       final public function run( $subPage ) {
+               /**
+                * Gets called before @see SpecialPage::execute.
+                *
+                * @since 1.20
+                *
+                * @param SpecialPage $this
+                * @param string|null $subPage
+                */
+               wfRunHooks( 'SpecialPageBeforeExecute', array( $this, $subPage ) );
+
+               $this->beforeExecute( $subPage );
+               $this->execute( $subPage );
+               $this->afterExecute( $subPage );
+
+               /**
+                * Gets called after @see SpecialPage::execute.
+                *
+                * @since 1.20
+                *
+                * @param SpecialPage $this
+                * @param string|null $subPage
+                */
+               wfRunHooks( 'SpecialPageAfterExecute', array( $this, $subPage ) );
+       }
+
+       /**
+        * Gets called before @see SpecialPage::execute.
+        *
+        * @since 1.20
+        *
+        * @param string|null $subPage
+        */
+       protected function beforeExecute( $subPage ) {
+               // No-op
+       }
+
+       /**
+        * Gets called after @see SpecialPage::execute.
+        *
+        * @since 1.20
+        *
+        * @param string|null $subPage
+        */
+       protected function afterExecute( $subPage ) {
+               // No-op
+       }
+
+       /**
+        * Default execute method
+        * Checks user permissions, calls the function given in mFunction
+        *
+        * This must be overridden by subclasses; it will be made abstract in a future version
+        *
+        * @param string|null $subPage
+        */
+       public function execute( $subPage ) {
+               $this->setHeaders();
+               $this->checkPermissions();
+
+               $func = $this->mFunction;
+               // only load file if the function does not exist
+               if ( !is_callable( $func ) && $this->mFile ) {
+                       require_once $this->mFile;
+               }
+               $this->outputHeader();
+               call_user_func( $func, $subPage, $this );
+       }
+
+       /**
+        * Outputs a summary message on top of special pages
+        * Per default the message key is the canonical name of the special page
+        * May be overridden, i.e. by extensions to stick with the naming conventions
+        * for message keys: 'extensionname-xxx'
+        *
+        * @param string $summaryMessageKey Message key of the summary
+        */
+       function outputHeader( $summaryMessageKey = '' ) {
+               global $wgContLang;
+
+               if ( $summaryMessageKey == '' ) {
+                       $msg = $wgContLang->lc( $this->getName() ) . '-summary';
+               } else {
+                       $msg = $summaryMessageKey;
+               }
+               if ( !$this->msg( $msg )->isDisabled() && !$this->including() ) {
+                       $this->getOutput()->wrapWikiMsg(
+                               "<div class='mw-specialpage-summary'>\n$1\n</div>", $msg );
+               }
+
+       }
+
+       /**
+        * Returns the name that goes in the \<h1\> in the special page itself, and
+        * also the name that will be listed in Special:Specialpages
+        *
+        * Derived classes can override this, but usually it is easier to keep the
+        * default behavior.
+        *
+        * @return string
+        */
+       function getDescription() {
+               return $this->msg( strtolower( $this->mName ) )->text();
+       }
+
+       /**
+        * Get a self-referential title object
+        *
+        * @param string|bool $subpage
+        * @return Title
+        * @deprecated in 1.23, use SpecialPage::getPageTitle
+        */
+       function getTitle( $subpage = false ) {
+               wfDeprecated( __METHOD__, '1.23' );
+               return $this->getPageTitle( $subpage );
+       }
+
+       /**
+        * Get a self-referential title object
+        *
+        * @param string|bool $subpage
+        * @return Title
+        * @since 1.23
+        */
+       function getPageTitle( $subpage = false ) {
+               return self::getTitleFor( $this->mName, $subpage );
+       }
+
+       /**
+        * Sets the context this SpecialPage is executed in
+        *
+        * @param IContextSource $context
+        * @since 1.18
+        */
+       public function setContext( $context ) {
+               $this->mContext = $context;
+       }
+
+       /**
+        * Gets the context this SpecialPage is executed in
+        *
+        * @return IContextSource|RequestContext
+        * @since 1.18
+        */
+       public function getContext() {
+               if ( $this->mContext instanceof IContextSource ) {
+                       return $this->mContext;
+               } else {
+                       wfDebug( __METHOD__ . " called and \$mContext is null. " .
+                               "Return RequestContext::getMain(); for sanity\n" );
+                       return RequestContext::getMain();
+               }
+       }
+
+       /**
+        * Get the WebRequest being used for this instance
+        *
+        * @return WebRequest
+        * @since 1.18
+        */
+       public function getRequest() {
+               return $this->getContext()->getRequest();
+       }
+
+       /**
+        * Get the OutputPage being used for this instance
+        *
+        * @return OutputPage
+        * @since 1.18
+        */
+       public function getOutput() {
+               return $this->getContext()->getOutput();
+       }
+
+       /**
+        * Shortcut to get the User executing this instance
+        *
+        * @return User
+        * @since 1.18
+        */
+       public function getUser() {
+               return $this->getContext()->getUser();
+       }
+
+       /**
+        * Shortcut to get the skin being used for this instance
+        *
+        * @return Skin
+        * @since 1.18
+        */
+       public function getSkin() {
+               return $this->getContext()->getSkin();
+       }
+
+       /**
+        * Shortcut to get user's language
+        *
+        * @deprecated since 1.19 Use getLanguage instead
+        * @return Language
+        * @since 1.18
+        */
+       public function getLang() {
+               wfDeprecated( __METHOD__, '1.19' );
+               return $this->getLanguage();
+       }
+
+       /**
+        * Shortcut to get user's language
+        *
+        * @return Language
+        * @since 1.19
+        */
+       public function getLanguage() {
+               return $this->getContext()->getLanguage();
+       }
+
+       /**
+        * Return the full title, including $par
+        *
+        * @return Title
+        * @since 1.18
+        */
+       public function getFullTitle() {
+               return $this->getContext()->getTitle();
+       }
+
+       /**
+        * Wrapper around wfMessage that sets the current context.
+        *
+        * @return Message
+        * @see wfMessage
+        */
+       public function msg( /* $args */ ) {
+               $message = call_user_func_array(
+                       array( $this->getContext(), 'msg' ),
+                       func_get_args()
+               );
+               // RequestContext passes context to wfMessage, and the language is set from
+               // the context, but setting the language for Message class removes the
+               // interface message status, which breaks for example usernameless gender
+               // invocations. Restore the flag when not including special page in content.
+               if ( $this->including() ) {
+                       $message->setInterfaceMessageFlag( false );
+               }
+               return $message;
+       }
+
+       /**
+        * Adds RSS/atom links
+        *
+        * @param array $params
+        */
+       protected function addFeedLinks( $params ) {
+               global $wgFeedClasses;
+
+               $feedTemplate = wfScript( 'api' );
+
+               foreach ( $wgFeedClasses as $format => $class ) {
+                       $theseParams = $params + array( 'feedformat' => $format );
+                       $url = wfAppendQuery( $feedTemplate, $theseParams );
+                       $this->getOutput()->addFeedLink( $format, $url );
+               }
+       }
+
+       /**
+        * Get the group that the special page belongs in on Special:SpecialPage
+        * Use this method, instead of getGroupName to allow customization
+        * of the group name from the wiki side
+        *
+        * @return string Group of this special page
+        * @since 1.21
+        */
+       public function getFinalGroupName() {
+               global $wgSpecialPageGroups;
+               $name = $this->getName();
+
+               // Allow overbidding the group from the wiki side
+               $msg = $this->msg( 'specialpages-specialpagegroup-' . strtolower( $name ) )->inContentLanguage();
+               if ( !$msg->isBlank() ) {
+                       $group = $msg->text();
+               } else {
+                       // Than use the group from this object
+                       $group = $this->getGroupName();
+
+                       // Group '-' is used as default to have the chance to determine,
+                       // if the special pages overrides this method,
+                       // if not overridden, $wgSpecialPageGroups is checked for b/c
+                       if ( $group === '-' && isset( $wgSpecialPageGroups[$name] ) ) {
+                               $group = $wgSpecialPageGroups[$name];
+                       }
+               }
+
+               // never give '-' back, change to 'other'
+               if ( $group === '-' ) {
+                       $group = 'other';
+               }
+
+               return $group;
+       }
+
+       /**
+        * Under which header this special page is listed in Special:SpecialPages
+        * See messages 'specialpages-group-*' for valid names
+        * This method defaults to group 'other'
+        *
+        * @return string
+        * @since 1.21
+        */
+       protected function getGroupName() {
+               // '-' used here to determine, if this group is overridden or has a hardcoded 'other'
+               // Needed for b/c in getFinalGroupName
+               return '-';
+       }
+}
diff --git a/includes/specialpage/SpecialPageFactory.php b/includes/specialpage/SpecialPageFactory.php
new file mode 100644 (file)
index 0000000..dcf5f67
--- /dev/null
@@ -0,0 +1,591 @@
+<?php
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * 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 SpecialPage
+ * @defgroup SpecialPage SpecialPage
+ */
+
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * To add a special page in an extension, add to $wgSpecialPages either
+ * an object instance or an array containing the name and constructor
+ * parameters. The latter is preferred for performance reasons.
+ *
+ * The object instantiated must be either an instance of SpecialPage or a
+ * sub-class thereof. It must have an execute() method, which sends the HTML
+ * for the special page to $wgOut. The parent class has an execute() method
+ * which distributes the call to the historical global functions. Additionally,
+ * execute() also checks if the user has the necessary access privileges
+ * and bails out if not.
+ *
+ * To add a core special page, use the similar static list in
+ * SpecialPageFactory::$list. To remove a core static special page at runtime, use
+ * a SpecialPage_initList hook.
+ *
+ * @ingroup SpecialPage
+ * @since 1.17
+ */
+class SpecialPageFactory {
+       /**
+        * List of special page names to the subclass of SpecialPage which handles them.
+        */
+       private static $list = array(
+               // Maintenance Reports
+               'BrokenRedirects'           => 'BrokenRedirectsPage',
+               'Deadendpages'              => 'DeadendpagesPage',
+               'DoubleRedirects'           => 'DoubleRedirectsPage',
+               'Longpages'                 => 'LongpagesPage',
+               'Ancientpages'              => 'AncientpagesPage',
+               'Lonelypages'               => 'LonelypagesPage',
+               'Fewestrevisions'           => 'FewestrevisionsPage',
+               'Withoutinterwiki'          => 'WithoutinterwikiPage',
+               'Protectedpages'            => 'SpecialProtectedpages',
+               'Protectedtitles'           => 'SpecialProtectedtitles',
+               'Shortpages'                => 'ShortpagesPage',
+               'Uncategorizedcategories'   => 'UncategorizedcategoriesPage',
+               'Uncategorizedimages'       => 'UncategorizedimagesPage',
+               'Uncategorizedpages'        => 'UncategorizedpagesPage',
+               'Uncategorizedtemplates'    => 'UncategorizedtemplatesPage',
+               'Unusedcategories'          => 'UnusedcategoriesPage',
+               'Unusedimages'              => 'UnusedimagesPage',
+               'Unusedtemplates'           => 'UnusedtemplatesPage',
+               'Unwatchedpages'            => 'UnwatchedpagesPage',
+               'Wantedcategories'          => 'WantedcategoriesPage',
+               'Wantedfiles'               => 'WantedfilesPage',
+               'Wantedpages'               => 'WantedpagesPage',
+               'Wantedtemplates'           => 'WantedtemplatesPage',
+
+               // List of pages
+               'Allpages'                  => 'SpecialAllpages',
+               'Prefixindex'               => 'SpecialPrefixindex',
+               'Categories'                => 'SpecialCategories',
+               'Listredirects'             => 'ListredirectsPage',
+               'PagesWithProp'             => 'SpecialPagesWithProp',
+
+               // Login/create account
+               'Userlogin'                 => 'LoginForm',
+               'CreateAccount'             => 'SpecialCreateAccount',
+
+               // Users and rights
+               'Block'                     => 'SpecialBlock',
+               'Unblock'                   => 'SpecialUnblock',
+               'BlockList'                 => 'SpecialBlockList',
+               'ChangePassword'            => 'SpecialChangePassword',
+               'PasswordReset'             => 'SpecialPasswordReset',
+               'DeletedContributions'      => 'DeletedContributionsPage',
+               'Preferences'               => 'SpecialPreferences',
+               'ResetTokens'               => 'SpecialResetTokens',
+               'Contributions'             => 'SpecialContributions',
+               'Listgrouprights'           => 'SpecialListGroupRights',
+               'Listusers'                 => 'SpecialListUsers',
+               'Listadmins'                => 'SpecialListAdmins',
+               'Listbots'                  => 'SpecialListBots',
+               'Userrights'                => 'UserrightsPage',
+               'EditWatchlist'             => 'SpecialEditWatchlist',
+
+               // Recent changes and logs
+               'Newimages'                 => 'SpecialNewFiles',
+               'Log'                       => 'SpecialLog',
+               'Watchlist'                 => 'SpecialWatchlist',
+               'Newpages'                  => 'SpecialNewpages',
+               'Recentchanges'             => 'SpecialRecentChanges',
+               'Recentchangeslinked'       => 'SpecialRecentChangesLinked',
+               'Tags'                      => 'SpecialTags',
+
+               // Media reports and uploads
+               'Listfiles'                 => 'SpecialListFiles',
+               'Filepath'                  => 'SpecialFilepath',
+               'MIMEsearch'                => 'MIMEsearchPage',
+               'FileDuplicateSearch'       => 'FileDuplicateSearchPage',
+               'Upload'                    => 'SpecialUpload',
+               'UploadStash'               => 'SpecialUploadStash',
+
+               // Data and tools
+               'Statistics'                => 'SpecialStatistics',
+               'Allmessages'               => 'SpecialAllmessages',
+               'Version'                   => 'SpecialVersion',
+               'Lockdb'                    => 'SpecialLockdb',
+               'Unlockdb'                  => 'SpecialUnlockdb',
+
+               // Redirecting special pages
+               'LinkSearch'                => 'LinkSearchPage',
+               'Randompage'                => 'Randompage',
+               'RandomInCategory'          => 'SpecialRandomInCategory',
+               'Randomredirect'            => 'SpecialRandomredirect',
+
+               // High use pages
+               'Mostlinkedcategories'      => 'MostlinkedCategoriesPage',
+               'Mostimages'                => 'MostimagesPage',
+               'Mostinterwikis'            => 'MostinterwikisPage',
+               'Mostlinked'                => 'MostlinkedPage',
+               'Mostlinkedtemplates'       => 'MostlinkedTemplatesPage',
+               'Mostcategories'            => 'MostcategoriesPage',
+               'Mostrevisions'             => 'MostrevisionsPage',
+
+               // Page tools
+               'ComparePages'              => 'SpecialComparePages',
+               'Export'                    => 'SpecialExport',
+               'Import'                    => 'SpecialImport',
+               'Undelete'                  => 'SpecialUndelete',
+               'Whatlinkshere'             => 'SpecialWhatlinkshere',
+               'MergeHistory'              => 'SpecialMergeHistory',
+               'ExpandTemplates'           => 'SpecialExpandTemplates',
+
+               // Other
+               'Booksources'               => 'SpecialBookSources',
+
+               // Unlisted / redirects
+               'Blankpage'                 => 'SpecialBlankpage',
+               'Emailuser'                 => 'SpecialEmailUser',
+               'Movepage'                  => 'MovePageForm',
+               'Mycontributions'           => 'SpecialMycontributions',
+               'Mypage'                    => 'SpecialMypage',
+               'Mytalk'                    => 'SpecialMytalk',
+               'Myuploads'                 => 'SpecialMyuploads',
+               'AllMyUploads'              => 'SpecialAllMyUploads',
+               'PermanentLink'             => 'SpecialPermanentLink',
+               'Redirect'                  => 'SpecialRedirect',
+               'Revisiondelete'            => 'SpecialRevisionDelete',
+               'Specialpages'              => 'SpecialSpecialpages',
+               'Userlogout'                => 'SpecialUserlogout',
+       );
+
+       private static $aliases;
+
+       /**
+        * Get the special page list
+        *
+        * @return array
+        */
+       static function getList() {
+               global $wgSpecialPages;
+               global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
+               global $wgEnableEmail, $wgEnableJavaScriptTest;
+               global $wgMiserMode;
+
+               if ( !is_object( self::$list ) ) {
+                       wfProfileIn( __METHOD__ );
+
+                       if ( !$wgDisableCounters ) {
+                               self::$list['Popularpages'] = 'PopularpagesPage';
+                       }
+
+                       if ( !$wgDisableInternalSearch ) {
+                               self::$list['Search'] = 'SpecialSearch';
+                       }
+
+                       if ( $wgEmailAuthentication ) {
+                               self::$list['Confirmemail'] = 'EmailConfirmation';
+                               self::$list['Invalidateemail'] = 'EmailInvalidation';
+                       }
+
+                       if ( $wgEnableEmail ) {
+                               self::$list['ChangeEmail'] = 'SpecialChangeEmail';
+                       }
+
+                       if ( $wgEnableJavaScriptTest ) {
+                               self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
+                       }
+
+                       if ( !$wgMiserMode ) {
+                               self::$list['Activeusers'] = 'SpecialActiveUsers';
+                       }
+
+                       // Add extension special pages
+                       self::$list = array_merge( self::$list, $wgSpecialPages );
+
+                       // Run hooks
+                       // This hook can be used to remove undesired built-in special pages
+                       wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
+
+                       // Cast to object: func()[$key] doesn't work, but func()->$key does
+                       settype( self::$list, 'object' );
+
+                       wfProfileOut( __METHOD__ );
+               }
+               return self::$list;
+       }
+
+       /**
+        * Initialise and return the list of special page aliases.  Returns an object with
+        * properties which can be accessed $obj->pagename - each property is an array of
+        * aliases; the first in the array is the canonical alias.  All registered special
+        * pages are guaranteed to have a property entry, and for that property array to
+        * contain at least one entry (English fallbacks will be added if necessary).
+        * @return Object
+        */
+       static function getAliasList() {
+               if ( !is_object( self::$aliases ) ) {
+                       global $wgContLang;
+                       $aliases = $wgContLang->getSpecialPageAliases();
+
+                       // Objects are passed by reference by default, need to create a copy
+                       $missingPages = clone self::getList();
+
+                       self::$aliases = array();
+                       foreach ( $aliases as $realName => $aliasList ) {
+                               foreach ( $aliasList as $alias ) {
+                                       self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
+                               }
+                               unset( $missingPages->$realName );
+                       }
+                       foreach ( $missingPages as $name => $stuff ) {
+                               self::$aliases[$wgContLang->caseFold( $name )] = $name;
+                       }
+
+                       // Cast to object: func()[$key] doesn't work, but func()->$key does
+                       self::$aliases = (object)self::$aliases;
+               }
+               return self::$aliases;
+       }
+
+       /**
+        * Given a special page name with a possible subpage, return an array
+        * where the first element is the special page name and the second is the
+        * subpage.
+        *
+        * @param string $alias
+        * @return array Array( String, String|null ), or array( null, null ) if the page is invalid
+        */
+       public static function resolveAlias( $alias ) {
+               global $wgContLang;
+               $bits = explode( '/', $alias, 2 );
+
+               $caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
+               $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
+               if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
+                       $name = self::getAliasList()->$caseFoldedAlias;
+               } else {
+                       return array( null, null );
+               }
+
+               if ( !isset( $bits[1] ) ) { // bug 2087
+                       $par = null;
+               } else {
+                       $par = $bits[1];
+               }
+
+               return array( $name, $par );
+       }
+
+       /**
+        * Add a page to a certain display group for Special:SpecialPages
+        *
+        * @param SpecialPage|string $page
+        * @param string $group
+        * @deprecated since 1.21 Override SpecialPage::getGroupName
+        */
+       public static function setGroup( $page, $group ) {
+               wfDeprecated( __METHOD__, '1.21' );
+
+               global $wgSpecialPageGroups;
+               $name = is_object( $page ) ? $page->getName() : $page;
+               $wgSpecialPageGroups[$name] = $group;
+       }
+
+       /**
+        * Get the group that the special page belongs in on Special:SpecialPage
+        *
+        * @param SpecialPage $page
+        * @return string
+        * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
+        */
+       public static function getGroup( &$page ) {
+               wfDeprecated( __METHOD__, '1.21' );
+
+               return $page->getFinalGroupName();
+       }
+
+       /**
+        * Check if a given name exist as a special page or as a special page alias
+        *
+        * @param string $name Name of a special page
+        * @return bool True if a special page exists with this name
+        */
+       public static function exists( $name ) {
+               list( $title, /*...*/ ) = self::resolveAlias( $name );
+               return property_exists( self::getList(), $title );
+       }
+
+       /**
+        * Find the object with a given name and return it (or NULL)
+        *
+        * @param string $name Special page name, may be localised and/or an alias
+        * @return SpecialPage|null SpecialPage object or null if the page doesn't exist
+        */
+       public static function getPage( $name ) {
+               list( $realName, /*...*/ ) = self::resolveAlias( $name );
+               if ( property_exists( self::getList(), $realName ) ) {
+                       $rec = self::getList()->$realName;
+                       if ( is_string( $rec ) ) {
+                               $className = $rec;
+                               return new $className;
+                       } elseif ( is_array( $rec ) ) {
+                               // @deprecated, officially since 1.18, unofficially since forever
+                               wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
+                               $className = array_shift( $rec );
+                               self::getList()->$realName = MWFunction::newObj( $className, $rec );
+                       }
+                       return self::getList()->$realName;
+               } else {
+                       return null;
+               }
+       }
+
+       /**
+        * Return categorised listable special pages which are available
+        * for the current user, and everyone.
+        *
+        * @param $user User object to check permissions, $wgUser will be used if
+        *   if not provided
+        * @return array ( string => Specialpage )
+        */
+       public static function getUsablePages( User $user = null ) {
+               $pages = array();
+               if ( $user === null ) {
+                       global $wgUser;
+                       $user = $wgUser;
+               }
+               foreach ( self::getList() as $name => $rec ) {
+                       $page = self::getPage( $name );
+                       if ( $page ) { // not null
+                               $page->setContext( RequestContext::getMain() );
+                               if ( $page->isListed()
+                                       && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
+                               ) {
+                                       $pages[$name] = $page;
+                               }
+                       }
+               }
+               return $pages;
+       }
+
+       /**
+        * Return categorised listable special pages for all users
+        *
+        * @return array ( string => Specialpage )
+        */
+       public static function getRegularPages() {
+               $pages = array();
+               foreach ( self::getList() as $name => $rec ) {
+                       $page = self::getPage( $name );
+                       if ( $page->isListed() && !$page->isRestricted() ) {
+                               $pages[$name] = $page;
+                       }
+               }
+               return $pages;
+       }
+
+       /**
+        * Return categorised listable special pages which are available
+        * for the current user, but not for everyone
+        *
+        * @return array ( string => Specialpage )
+        */
+       public static function getRestrictedPages() {
+               global $wgUser;
+               $pages = array();
+               foreach ( self::getList() as $name => $rec ) {
+                       $page = self::getPage( $name );
+                       if (
+                               $page->isListed()
+                               && $page->isRestricted()
+                               && $page->userCanExecute( $wgUser )
+                       ) {
+                               $pages[$name] = $page;
+                       }
+               }
+               return $pages;
+       }
+
+       /**
+        * Execute a special page path.
+        * The path may contain parameters, e.g. Special:Name/Params
+        * Extracts the special page name and call the execute method, passing the parameters
+        *
+        * Returns a title object if the page is redirected, false if there was no such special
+        * page, and true if it was successful.
+        *
+        * @param Title $title
+        * @param IContextSource $context
+        * @param bool $including Bool output is being captured for use in {{special:whatever}}
+        *
+        * @return bool
+        */
+       public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
+               wfProfileIn( __METHOD__ );
+
+               // @todo FIXME: Redirects broken due to this call
+               $bits = explode( '/', $title->getDBkey(), 2 );
+               $name = $bits[0];
+               if ( !isset( $bits[1] ) ) { // bug 2087
+                       $par = null;
+               } else {
+                       $par = $bits[1];
+               }
+               $page = self::getPage( $name );
+               // Nonexistent?
+               if ( !$page ) {
+                       $context->getOutput()->setArticleRelated( false );
+                       $context->getOutput()->setRobotPolicy( 'noindex,nofollow' );
+
+                       global $wgSend404Code;
+                       if ( $wgSend404Code ) {
+                               $context->getOutput()->setStatusCode( 404 );
+                       }
+
+                       $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               // Page exists, set the context
+               $page->setContext( $context );
+
+               if ( !$including ) {
+                       // Redirect to canonical alias for GET commands
+                       // Not for POST, we'd lose the post data, so it's best to just distribute
+                       // the request. Such POST requests are possible for old extensions that
+                       // generate self-links without being aware that their default name has
+                       // changed.
+                       if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
+                               $query = $context->getRequest()->getQueryValues();
+                               unset( $query['title'] );
+                               $title = $page->getPageTitle( $par );
+                               $url = $title->getFullURL( $query );
+                               $context->getOutput()->redirect( $url );
+                               wfProfileOut( __METHOD__ );
+                               return $title;
+                       } else {
+                               $context->setTitle( $page->getPageTitle( $par ) );
+                       }
+
+               } elseif ( !$page->isIncludable() ) {
+                       wfProfileOut( __METHOD__ );
+                       return false;
+               }
+
+               $page->including( $including );
+
+               // Execute special page
+               $profName = 'Special:' . $page->getName();
+               wfProfileIn( $profName );
+               $page->run( $par );
+               wfProfileOut( $profName );
+               wfProfileOut( __METHOD__ );
+               return true;
+       }
+
+       /**
+        * Just like executePath() but will override global variables and execute
+        * the page in "inclusion" mode. Returns true if the execution was
+        * successful or false if there was no such special page, or a title object
+        * if it was a redirect.
+        *
+        * Also saves the current $wgTitle, $wgOut, $wgRequest, $wgUser and $wgLang
+        * variables so that the special page will get the context it'd expect on a
+        * normal request, and then restores them to their previous values after.
+        *
+        * @param Title $title
+        * @param IContextSource $context
+        * @return string HTML fragment
+        */
+       static function capturePath( Title $title, IContextSource $context ) {
+               global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
+
+               // Save current globals
+               $oldTitle = $wgTitle;
+               $oldOut = $wgOut;
+               $oldRequest = $wgRequest;
+               $oldUser = $wgUser;
+               $oldLang = $wgLang;
+
+               // Set the globals to the current context
+               $wgTitle = $title;
+               $wgOut = $context->getOutput();
+               $wgRequest = $context->getRequest();
+               $wgUser = $context->getUser();
+               $wgLang = $context->getLanguage();
+
+               // The useful part
+               $ret = self::executePath( $title, $context, true );
+
+               // And restore the old globals
+               $wgTitle = $oldTitle;
+               $wgOut = $oldOut;
+               $wgRequest = $oldRequest;
+               $wgUser = $oldUser;
+               $wgLang = $oldLang;
+
+               return $ret;
+       }
+
+       /**
+        * Get the local name for a specified canonical name
+        *
+        * @param string $name
+        * @param string|bool $subpage
+        * @return string
+        */
+       static function getLocalNameFor( $name, $subpage = false ) {
+               global $wgContLang;
+               $aliases = $wgContLang->getSpecialPageAliases();
+
+               if ( isset( $aliases[$name][0] ) ) {
+                       $name = $aliases[$name][0];
+               } else {
+                       // Try harder in case someone misspelled the correct casing
+                       $found = false;
+                       foreach ( $aliases as $n => $values ) {
+                               if ( strcasecmp( $name, $n ) === 0 ) {
+                                       wfWarn( "Found alias defined for $n when searching for " .
+                                               "special page aliases for $name. Case mismatch?" );
+                                       $name = $values[0];
+                                       $found = true;
+                                       break;
+                               }
+                       }
+                       if ( !$found ) {
+                               wfWarn( "Did not find alias for special page '$name'. " .
+                                       "Perhaps no aliases are defined for it?" );
+                       }
+               }
+               if ( $subpage !== false && !is_null( $subpage ) ) {
+                       $name = "$name/$subpage";
+               }
+               return $wgContLang->ucfirst( $name );
+       }
+
+       /**
+        * Get a title for a given alias
+        *
+        * @param string $alias
+        * @return Title|null Title or null if there is no such alias
+        */
+       static function getTitleForAlias( $alias ) {
+               $name = self::resolveAlias( $alias );
+               if ( $name ) {
+                       return SpecialPage::getTitleFor( $name );
+               } else {
+                       return null;
+               }
+       }
+}
diff --git a/includes/specialpage/UnlistedSpecialPage.php b/includes/specialpage/UnlistedSpecialPage.php
new file mode 100644 (file)
index 0000000..f5e2ccf
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Shortcut to construct a special page which is unlisted by default.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Shortcut to construct a special page which is unlisted by default.
+ *
+ * @ingroup SpecialPage
+ */
+class UnlistedSpecialPage extends SpecialPage {
+       function __construct( $name, $restriction = '', $function = false, $file = 'default' ) {
+               parent::__construct( $name, $restriction, false, $function, $file );
+       }
+
+       public function isListed() {
+               return false;
+       }
+}
index 388705d..1e2d557 100644 (file)
@@ -123,7 +123,7 @@ class SpecialAllpages extends IncludableSpecialPage {
         */
        function namespaceForm( $namespace = NS_MAIN, $from = '', $to = '', $hideredirects = false ) {
                global $wgScript;
-               $t = $this->getTitle();
+               $t = $this->getPageTitle();
 
                $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
                $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
@@ -302,7 +302,7 @@ class SpecialAllpages extends IncludableSpecialPage {
                                        $nsForm .
                                        '</td>
                                                        <td class="mw-allpages-nav">' .
-                                       Linker::link( $this->getTitle(), $this->msg( 'allpages' )->escaped(),
+                                       Linker::link( $this->getPageTitle(), $this->msg( 'allpages' )->escaped(),
                                                array(), array(), 'known' ) .
                                        "</td>
                                                </tr>" .
@@ -346,7 +346,7 @@ class SpecialAllpages extends IncludableSpecialPage {
                        $queryParams['hideredirects'] = 1;
                }
 
-               $url = $this->getTitle()->getLocalURL( $queryParams );
+               $url = $this->getPageTitle()->getLocalURL( $queryParams );
                $inlink = Html::element( 'a', array( 'href' => $url ), $inpointf );
                $outlink = Html::element( 'a', array( 'href' => $url ), $outpointf );
 
@@ -480,7 +480,7 @@ class SpecialAllpages extends IncludableSpecialPage {
                                }
                        }
 
-                       $self = $this->getTitle();
+                       $self = $this->getPageTitle();
 
                        $nsForm = $this->namespaceForm( $namespace, $from, $to, $hideredirects );
                        $out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ) .
index 3b73a37..1aa8006 100644 (file)
@@ -221,6 +221,9 @@ class SpecialBlock extends FormSpecialPage {
 
                $this->maybeAlterFormDefaults( $a );
 
+               // Allow extensions to add more fields
+               wfRunHooks( 'SpecialBlockModifyFormFields', array( $this, &$a ) );
+
                return $a;
        }
 
@@ -293,14 +296,14 @@ class SpecialBlock extends FormSpecialPage {
                if ( $this->requestedHideUser ) {
                        $fields['Confirm']['type'] = 'check';
                        unset( $fields['Confirm']['default'] );
-                       $this->preErrors[] = 'ipb-confirmhideuser';
+                       $this->preErrors[] = array( 'ipb-confirmhideuser', 'ipb-confirmaction' );
                }
 
                # Or if the user is trying to block themselves
                if ( (string)$this->target === $this->getUser()->getName() ) {
                        $fields['Confirm']['type'] = 'check';
                        unset( $fields['Confirm']['default'] );
-                       $this->preErrors[] = 'ipb-blockingself';
+                       $this->preErrors[] = array( 'ipb-blockingself', 'ipb-confirmaction' );
                }
        }
 
@@ -627,7 +630,7 @@ class SpecialBlock extends FormSpecialPage {
                        if ( $target === $performer->getName() &&
                                ( $data['PreviousTarget'] !== $target || !$data['Confirm'] )
                        ) {
-                               return array( 'ipb-blockingself' );
+                               return array( 'ipb-blockingself', 'ipb-confirmaction' );
                        }
                } elseif ( $type == Block::TYPE_RANGE ) {
                        $userId = 0;
@@ -675,7 +678,7 @@ class SpecialBlock extends FormSpecialPage {
                                # Disallow hiding users with many edits for performance.
                                return array( 'ipb_hide_invalid' );
                        } elseif ( !$data['Confirm'] ) {
-                               return array( 'ipb-confirmhideuser' );
+                               return array( 'ipb-confirmhideuser', 'ipb-confirmaction' );
                        }
                }
 
index f1992c0..4e7043d 100644 (file)
@@ -97,7 +97,7 @@ class SpecialBlockList extends SpecialPage {
                        ),
                );
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new HTMLForm( $fields, $context );
                $form->setMethod( 'get' );
                $form->setWrapperLegendMsg( 'ipblocklist-legend' );
@@ -230,7 +230,7 @@ class BlockListPager extends TablePager {
        function getFieldNames() {
                static $headers = null;
 
-               if ( $headers == array() ) {
+               if ( $headers === null ) {
                        $headers = array(
                                'ipb_timestamp' => 'blocklist-timestamp',
                                'ipb_target' => 'blocklist-target',
@@ -455,8 +455,6 @@ class BlockListPager extends TablePager {
 
 /**
  * Items per page dropdown. Essentially a crap workaround for bug 32603.
- *
- * @todo Do not release 1.19 with this.
  */
 class HTMLBlockedUsersItemSelect extends HTMLSelectField {
        /**
index 5ad961c..d19968f 100644 (file)
@@ -120,7 +120,7 @@ class SpecialBookSources extends SpecialPage {
                $form = Html::openElement( 'fieldset' ) . "\n";
                $form .= Html::element( 'legend', array(), $this->msg( 'booksources-search-legend' )->text() ) . "\n";
                $form .= Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n";
-               $form .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
+               $form .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) . "\n";
                $form .= '<p>' . Xml::inputLabel( $this->msg( 'booksources-isbn' )->text(), 'isbn', 'isbn', 20, $this->isbn, array( 'autofocus' => true ) );
                $form .= '&#160;' . Xml::submitButton( $this->msg( 'booksources-go' )->text() ) . "</p>\n";
                $form .= Html::closeElement( 'form' ) . "\n";
@@ -188,6 +188,6 @@ class SpecialBookSources extends SpecialPage {
        }
 
        protected function getGroupName() {
-               return 'other';
+               return 'wiki';
        }
 }
index e1531cc..d9ef5d7 100644 (file)
@@ -148,7 +148,7 @@ class SpecialChangeEmail extends UnlistedSpecialPage {
                                Xml::openElement( 'form',
                                        array(
                                                'method' => 'post',
-                                               'action' => $this->getTitle()->getLocalURL(),
+                                               'action' => $this->getPageTitle()->getLocalURL(),
                                                'id' => 'mw-changeemail-form' ) ) . "\n" .
                                Html::hidden( 'token', $user->getEditToken() ) . "\n" .
                                Html::hidden( 'returnto', $this->getRequest()->getVal( 'returnto' ) ) . "\n" .
index 43a4d2c..d54828a 100644 (file)
  *
  * @ingroup SpecialPage
  */
-class SpecialChangePassword extends UnlistedSpecialPage {
+class SpecialChangePassword extends FormSpecialPage {
 
-       protected $mUserName, $mOldpass, $mNewpass, $mRetype, $mDomain;
+       protected $mUserName, $mDomain;
 
        public function __construct() {
                parent::__construct( 'ChangePassword', 'editmyprivateinfo' );
+               $this->listed( false );
        }
 
        /**
         * Main execution point
         */
        function execute( $par ) {
-               global $wgAuth;
-
-               $this->setHeaders();
-               $this->outputHeader();
                $this->getOutput()->disallowUserJs();
 
-               $request = $this->getRequest();
+               parent::execute( $par );
+       }
 
-               if ( !$request->wasPosted() ) {
+       protected function checkExecutePermissions( User $user ) {
+               parent::checkExecutePermissions( $user );
+
+               if ( !$this->getRequest()->wasPosted() ) {
                        $this->requireLogin( 'resetpass-no-info' );
                }
+       }
 
-               $this->mUserName = trim( $request->getVal( 'wpName' ) );
-               $this->mOldpass = $request->getVal( 'wpPassword' );
-               $this->mNewpass = $request->getVal( 'wpNewPassword' );
-               $this->mRetype = $request->getVal( 'wpRetype' );
-               $this->mDomain = $request->getVal( 'wpDomain' );
+       protected function getFormFields() {
+               global $wgCookieExpiration;
 
                $user = $this->getUser();
+               $request = $this->getRequest();
 
-               if ( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
-                       $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
-                       if ( !$titleObj instanceof Title ) {
-                               $titleObj = Title::newMainPage();
-                       }
-                       $query = $request->getVal( 'returntoquery' );
-                       $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+               $oldpassMsg = $user->isLoggedIn() ? 'oldpassword' : 'resetpass-temp-password';
+
+               $fields = array(
+                       'Name' => array(
+                               'type' => 'info',
+                               'label-message' => 'username',
+                               'default' => $request->getVal( 'wpName', $user->getName() ),
+                       ),
+                       'Password' => array(
+                               'type' => 'password',
+                               'label-message' => $oldpassMsg,
+                       ),
+                       'NewPassword' => array(
+                               'type' => 'password',
+                               'label-message' => 'newpassword',
+                       ),
+                       'Retype' => array(
+                               'type' => 'password',
+                               'label-message' => 'retypenew',
+                       ),
+               );
 
-                       return;
+               $extraFields = array();
+               wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
+               foreach ( $extraFields as $extra ) {
+                       list( $name, $label, $type, $default ) = $extra;
+                       $fields[$name] = array(
+                               'type' => $type,
+                               'name' => $name,
+                               'label-message' => $label,
+                               'default' => $default,
+                       );
                }
 
-               $this->checkReadOnly();
-               $this->checkPermissions();
-
-               if ( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
-                       try {
-                               $this->mDomain = $wgAuth->getDomain();
-                               if ( !$wgAuth->allowPasswordChange() ) {
-                                       $this->error( $this->msg( 'resetpass_forbidden' )->text() );
-
-                                       return;
-                               }
-
-                               $this->attemptReset( $this->mNewpass, $this->mRetype );
-
-                               if ( $user->isLoggedIn() ) {
-                                       $this->getOutput()->wrapWikiMsg(
-                                                       "<div class=\"successbox\">\n$1\n</div>",
-                                                       'changepassword-success'
-                                       );
-                                       $this->getOutput()->returnToMain();
-                               } else {
-                                       LoginForm::setLoginToken();
-                                       $token = LoginForm::getLoginToken();
-                                       $data = array(
-                                               'action' => 'submitlogin',
-                                               'wpName' => $this->mUserName,
-                                               'wpDomain' => $this->mDomain,
-                                               'wpLoginToken' => $token,
-                                               'wpPassword' => $request->getVal( 'wpNewPassword' ),
-                                       ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
-                                       $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
-                                       $login->setContext( $this->getContext() );
-                                       $login->execute( null );
-                               }
-
-                               return;
-                       } catch ( PasswordError $e ) {
-                               $this->error( $e->getMessage() );
-                       }
+               if ( !$user->isLoggedIn() ) {
+                       $fields['Remember'] = array(
+                               'type' => 'check',
+                               'label' => $this->msg( 'remembermypassword' )
+                                               ->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )
+                                               ->text(),
+                               'default' => $request->getVal( 'wpRemember' ),
+                       );
                }
-               $this->showForm();
+
+               return $fields;
        }
 
-       /**
-        * @param $msg string
-        */
-       function error( $msg ) {
-               $this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $msg ) );
+       protected function alterForm( HTMLForm $form ) {
+               $form->setId( 'mw-resetpass-form' );
+               $form->setTableId( 'mw-resetpass-table' );
+               $form->setWrapperLegendMsg( 'resetpass_header' );
+               $form->setSubmitTextMsg(
+                       $this->getUser()->isLoggedIn()
+                               ? 'resetpass-submit-loggedin'
+                               : 'resetpass_submit'
+               );
+               $form->addButton( 'wpCancel',  $this->msg( 'resetpass-submit-cancel' )->text() );
+               $form->setHeaderText( $this->msg( 'resetpass_text' )->parseAsBlock() );
+               $form->addHiddenFields(
+                       $this->getRequest()->getValues( 'wpName', 'wpDomain', 'returnto', 'returntoquery' ) );
        }
 
-       function showForm() {
-               global $wgCookieExpiration;
+       public function onSubmit( array $data ) {
+               global $wgAuth;
 
-               $user = $this->getUser();
-               if ( !$this->mUserName ) {
-                       $this->mUserName = $user->getName();
-               }
-               $rememberMe = '';
-               if ( !$user->isLoggedIn() ) {
-                       $rememberMe = '<tr>' .
-                               '<td></td>' .
-                               '<td class="mw-input">' .
-                               Xml::checkLabel(
-                                       $this->msg( 'remembermypassword' )->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )->text(),
-                                       'wpRemember', 'wpRemember',
-                                       $this->getRequest()->getCheck( 'wpRemember' ) ) .
-                               '</td>' .
-                               '</tr>';
-                       $submitMsg = 'resetpass_submit';
-                       $oldpassMsg = 'resetpass-temp-password';
-               } else {
-                       $oldpassMsg = 'oldpassword';
-                       $submitMsg = 'resetpass-submit-loggedin';
-               }
-               $extraFields = array();
-               wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
-               $prettyFields = array(
-                       array( 'wpName', 'username', 'text', $this->mUserName ),
-                       array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
-                       array( 'wpNewPassword', 'newpassword', 'password', null ),
-                       array( 'wpRetype', 'retypenew', 'password', null ),
-               );
-               $prettyFields = array_merge( $prettyFields, $extraFields );
-               $hiddenFields = array(
-                       'token' => $user->getEditToken(),
-                       'wpName' => $this->mUserName,
-                       'wpDomain' => $this->mDomain,
-               ) + $this->getRequest()->getValues( 'returnto', 'returntoquery' );
-               $hiddenFieldsStr = '';
-               foreach ( $hiddenFields as $fieldname => $fieldvalue ) {
-                       $hiddenFieldsStr .= Html::hidden( $fieldname, $fieldvalue ) . "\n";
+               $request = $this->getRequest();
+
+               if ( $request->getCheck( 'wpLoginToken' ) ) {
+                       // This comes from Special:Userlogin when logging in with a temporary password
+                       return false;
                }
-               $this->getOutput()->addHTML(
-                       Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
-                               Xml::openElement( 'form',
-                                       array(
-                                               'method' => 'post',
-                                               'action' => $this->getTitle()->getLocalURL(),
-                                               'id' => 'mw-resetpass-form' ) ) . "\n" .
-                               $hiddenFieldsStr .
-                               $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
-                               Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
-                               $this->pretty( $prettyFields ) . "\n" .
-                               $rememberMe .
-                               "<tr>\n" .
-                               "<td></td>\n" .
-                               '<td class="mw-input">' .
-                               Xml::submitButton( $this->msg( $submitMsg )->text() ) .
-                               Xml::submitButton( $this->msg( 'resetpass-submit-cancel' )->text(), array( 'name' => 'wpCancel' ) ) .
-                               "</td>\n" .
-                               "</tr>\n" .
-                               Xml::closeElement( 'table' ) .
-                               Xml::closeElement( 'form' ) .
-                               Xml::closeElement( 'fieldset' ) . "\n"
-               );
-       }
 
-       /**
-        * @param $fields array
-        * @return string
-        */
-       function pretty( $fields ) {
-               $out = '';
-               foreach ( $fields as $list ) {
-                       list( $name, $label, $type, $value ) = $list;
-                       if ( $type == 'text' ) {
-                               $field = htmlspecialchars( $value );
-                       } else {
-                               $attribs = array( 'id' => $name );
-                               if ( $name == 'wpNewPassword' || $name == 'wpRetype' ) {
-                                       $attribs = array_merge( $attribs,
-                                               User::passwordChangeInputAttribs() );
-                               }
-                               if ( $name == 'wpPassword' ) {
-                                       $attribs[] = 'autofocus';
-                               }
-                               $field = Html::input( $name, $value, $type, $attribs );
+               if ( $request->getCheck( 'wpCancel' ) ) {
+                       $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
+                       if ( !$titleObj instanceof Title ) {
+                               $titleObj = Title::newMainPage();
                        }
-                       $out .= "<tr>\n";
-                       $out .= "\t<td class='mw-label'>";
+                       $query = $request->getVal( 'returntoquery' );
+                       $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+                       return true;
+               }
 
-                       if ( $type != 'text' ) {
-                               $out .= Xml::label( $this->msg( $label )->text(), $name );
-                       } else {
-                               $out .= $this->msg( $label )->escaped();
+               try {
+                       $this->mUserName = $request->getVal( 'wpName', $this->getUser()->getName() );
+                       $this->mDomain = $wgAuth->getDomain();
+
+                       if ( !$wgAuth->allowPasswordChange() ) {
+                               throw new ErrorPageError( 'changepassword', 'resetpass_forbidden' );
                        }
 
-                       $out .= "</td>\n";
-                       $out .= "\t<td class='mw-input'>";
-                       $out .= $field;
-                       $out .= "</td>\n";
-                       $out .= "</tr>";
+                       $this->attemptReset( $data['Password'], $data['NewPassword'], $data['Retype'] );
+
+                       return true;
+               } catch ( PasswordError $e ) {
+                       return $e->getMessage();
                }
+       }
 
-               return $out;
+       public function onSuccess() {
+               if ( $this->getUser()->isLoggedIn() ) {
+                       $this->getOutput()->wrapWikiMsg(
+                               "<div class=\"successbox\">\n$1\n</div>",
+                               'changepassword-success'
+                       );
+                       $this->getOutput()->returnToMain();
+               } else {
+                       $request = $this->getRequest();
+                       LoginForm::setLoginToken();
+                       $token = LoginForm::getLoginToken();
+                       $data = array(
+                               'action' => 'submitlogin',
+                               'wpName' => $this->mUserName,
+                               'wpDomain' => $this->mDomain,
+                               'wpLoginToken' => $token,
+                               'wpPassword' => $request->getVal( 'wpNewPassword' ),
+                       ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
+                       $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
+                       $login->setContext( $this->getContext() );
+                       $login->execute( null );
+               }
        }
 
        /**
         * @throws PasswordError when cannot set the new password because requirements not met.
         */
-       protected function attemptReset( $newpass, $retype ) {
+       protected function attemptReset( $oldpass, $newpass, $retype ) {
                global $wgPasswordAttemptThrottle;
 
                $isSelf = ( $this->mUserName === $this->getUser()->getName() );
@@ -258,12 +212,12 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                }
 
                $abortMsg = 'resetpass-abort-generic';
-               if ( !wfRunHooks( 'AbortChangePassword', array( $user, $this->mOldpass, $newpass, &$abortMsg ) ) ) {
+               if ( !wfRunHooks( 'AbortChangePassword', array( $user, $oldpass, $newpass, &$abortMsg ) ) ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'abortreset' ) );
                        throw new PasswordError( $this->msg( $abortMsg )->text() );
                }
 
-               if ( !$user->checkTemporaryPassword( $this->mOldpass ) && !$user->checkPassword( $this->mOldpass ) ) {
+               if ( !$user->checkTemporaryPassword( $oldpass ) && !$user->checkPassword( $oldpass ) ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
                        throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
                }
@@ -274,9 +228,8 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                }
 
                try {
-                       $user->setPassword( $this->mNewpass );
+                       $user->setPassword( $newpass );
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'success' ) );
-                       $this->mNewpass = $this->mOldpass = $this->mRetype = '';
                } catch ( PasswordError $e ) {
                        wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'error' ) );
                        throw new PasswordError( $e->getMessage() );
@@ -291,6 +244,10 @@ class SpecialChangePassword extends UnlistedSpecialPage {
                $user->saveSettings();
        }
 
+       public function requiresUnblock() {
+               return false;
+       }
+
        protected function getGroupName() {
                return 'users';
        }
index bef155c..d771589 100644 (file)
@@ -101,7 +101,7 @@ class EmailConfirmation extends UnlistedSpecialPage {
                        $out->addWikiMsg( 'confirmemail_text' );
                        $form = Html::openElement(
                                'form',
-                               array( 'method' => 'post', 'action' => $this->getTitle()->getLocalURL() )
+                               array( 'method' => 'post', 'action' => $this->getPageTitle()->getLocalURL() )
                        ) . "\n";
                        $form .= Html::hidden( 'token', $user->getEditToken() ) . "\n";
                        $form .= Xml::submitButton( $this->msg( 'confirmemail_send' )->text() ) . "\n";
index af6a35b..6b56c2f 100644 (file)
@@ -98,10 +98,10 @@ class SpecialContributions extends SpecialPage {
                        $this->getSkin()->setRelevantUser( $userObj );
                } else {
                        $out->addSubtitle( $this->msg( 'sp-contributions-newbies-sub' ) );
-                       $out->setHTMLTitle(
-                               $this->msg( 'pagetitle', $this->msg( 'sp-contributions-newbies-title' ) )
-                                       ->inContentLanguage()->plain()
-                       );
+                       $out->setHTMLTitle( $this->msg(
+                               'pagetitle',
+                               $this->msg( 'sp-contributions-newbies-title' )->plain()
+                       )->inContentLanguage() );
                }
 
                if ( ( $ns = $request->getVal( 'namespace', null ) ) !== null && $ns !== '' ) {
@@ -168,7 +168,7 @@ class SpecialContributions extends SpecialPage {
                // Add RSS/atom links
                $this->addFeedLinks( array( 'action' => 'feedcontributions', 'user' => $target ) );
 
-               if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id ) ) ) {
+               if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id, $userObj, $this ) ) ) {
                        $out->addHTML( $this->getForm() );
 
                        $pager = new ContribsPager( $this->getContext(), array(
@@ -354,7 +354,7 @@ class SpecialContributions extends SpecialPage {
        protected function getForm() {
                global $wgScript;
 
-               $this->opts['title'] = $this->getTitle()->getPrefixedText();
+               $this->opts['title'] = $this->getPageTitle()->getPrefixedText();
                if ( !isset( $this->opts['target'] ) ) {
                        $this->opts['target'] = '';
                } else {
diff --git a/includes/specials/SpecialCreateAccount.php b/includes/specials/SpecialCreateAccount.php
new file mode 100644 (file)
index 0000000..63d4ec9
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Redirect page: Special:CreateAccount --> Special:UserLogin/signup.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Redirect page: Special:CreateAccount --> Special:UserLogin/signup.
+ * @todo FIXME: This (and the rest of the login frontend) needs to die a horrible painful death
+ *
+ * @ingroup SpecialPage
+ */
+
+class SpecialCreateAccount extends SpecialRedirectToSpecial {
+       function __construct() {
+               parent::__construct( 'CreateAccount', 'Userlogin', 'signup', array( 'returnto', 'returntoquery', 'uselang' ) );
+       }
+
+       // No reason to hide this link on Special:Specialpages
+       public function isListed() {
+               return true;
+       }
+
+       protected function getGroupName() {
+               return 'login';
+       }
+}
index 9b9888a..d148a50 100644 (file)
@@ -495,7 +495,7 @@ class DeletedContributionsPage extends SpecialPage {
        function getForm( $options ) {
                global $wgScript;
 
-               $options['title'] = $this->getTitle()->getPrefixedText();
+               $options['title'] = $this->getPageTitle()->getPrefixedText();
                if ( !isset( $options['target'] ) ) {
                        $options['target'] = '';
                } else {
index daa56b3..98d5fea 100644 (file)
@@ -534,7 +534,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                }
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new EditWatchlistNormalHTMLForm( $fields, $context );
                $form->setSubmitTextMsg( 'watchlistedit-normal-submit' );
                # Used message keys: 'accesskey-watchlistedit-normal-submit', 'tooltip-watchlistedit-normal-submit'
@@ -598,7 +598,7 @@ class SpecialEditWatchlist extends UnlistedSpecialPage {
                        ),
                );
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle( 'raw' ) ); // Reset subpage
+               $context->setTitle( $this->getPageTitle( 'raw' ) ); // Reset subpage
                $form = new HTMLForm( $fields, $context );
                $form->setSubmitTextMsg( 'watchlistedit-raw-submit' );
                # Used message keys: 'accesskey-watchlistedit-raw-submit', 'tooltip-watchlistedit-raw-submit'
index 2e90d99..6695c82 100644 (file)
@@ -149,7 +149,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                $this->mTargetObj = $ret;
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new HTMLForm( $this->getFormFields(), $context );
                // By now we are supposed to be sure that $this->mTarget is a user name
                $form->addPreText( $this->msg( 'emailpagetext', $this->mTarget )->parse() );
@@ -260,7 +260,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                        'form',
                        array( 'method' => 'get', 'action' => $wgScript, 'id' => 'askusername' )
                ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                        Xml::openElement( 'fieldset' ) .
                        Html::rawElement( 'legend', null, $this->msg( 'emailtarget' )->parse() ) .
                        Xml::inputLabel(
@@ -330,9 +330,10 @@ class SpecialEmailUser extends UnlistedSpecialPage {
                        // This is a bit ugly, but will serve to differentiate
                        // wiki-borne mails from direct mails and protects against
                        // SPF and bounce problems with some mailers (see below).
-                       global $wgPasswordSender, $wgPasswordSenderName;
+                       global $wgPasswordSender;
 
-                       $mailFrom = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+                       $mailFrom = new MailAddress( $wgPasswordSender,
+                               wfMessage( 'emailsender' )->inContentLanguage()->text() );
                        $replyTo = $from;
                } else {
                        // Put the sending user's e-mail address in the From: header.
index b566b91..7241105 100644 (file)
@@ -32,6 +32,9 @@ class SpecialExpandTemplates extends SpecialPage {
        /** @var boolean whether or not to show the XML parse tree */
        protected $generateXML;
 
+       /** @var boolean whether or not to show the raw HTML code */
+       protected $generateRawHtml;
+
        /** @var boolean whether or not to remove comments in the expanded wikitext */
        protected $removeComments;
 
@@ -58,10 +61,11 @@ class SpecialExpandTemplates extends SpecialPage {
                $title = Title::newFromText( $titleStr );
 
                if ( !$title ) {
-                       $title = $this->getTitle();
+                       $title = $this->getPageTitle();
                }
                $input = $request->getText( 'wpInput' );
                $this->generateXML = $request->getBool( 'wpGenerateXml' );
+               $this->generateRawHtml = $request->getBool( 'wpGenerateRawHtml' );
 
                if ( strlen( $input ) ) {
                        $this->removeComments = $request->getBool( 'wpRemoveComments', false );
@@ -93,7 +97,7 @@ class SpecialExpandTemplates extends SpecialPage {
                $out->addWikiMsg( 'expand_templates_intro' );
                $out->addHTML( $this->makeForm( $titleStr, $input ) );
 
-               if( $output !== false ) {
+               if ( $output !== false ) {
                        if ( $this->generateXML && strlen( $output ) > 0 ) {
                                $out->addHTML( $this->makeOutput( $xml, 'expand_templates_xml_output' ) );
                        }
@@ -108,12 +112,20 @@ class SpecialExpandTemplates extends SpecialPage {
                                );
                        }
 
-                       if( ( $wgUseTidy && $options->getTidy() ) || $wgAlwaysUseTidy ) {
+                       if ( ( $wgUseTidy && $options->getTidy() ) || $wgAlwaysUseTidy ) {
                                $tmp = MWTidy::tidy( $tmp );
                        }
 
                        $out->addHTML( $tmp );
-                       $this->showHtmlPreview( $title, $output, $out );
+
+                       $rawhtml = $this->generateHtml( $title, $output );
+
+                       if ( $this->generateRawHtml && strlen( $rawhtml ) > 0 ) {
+                               $out->addHTML( $this->makeOutput( $rawhtml, 'expand_templates_html_output' ) );
+                       }
+
+                       $this->showHtmlPreview( $title, $rawhtml, $out );
+
                }
 
        }
@@ -126,8 +138,8 @@ class SpecialExpandTemplates extends SpecialPage {
         * @return string
         */
        private function makeForm( $title, $input ) {
-               $self = $this->getTitle();
-               $form  = Xml::openElement(
+               $self = $this->getPageTitle();
+               $form = Xml::openElement(
                        'form',
                        array( 'method' => 'post', 'action' => $self->getLocalUrl() )
                );
@@ -171,6 +183,12 @@ class SpecialExpandTemplates extends SpecialPage {
                        'generate_xml',
                        $this->generateXML
                ) . '</p>';
+               $form .= '<p>' . Xml::checkLabel(
+                       $this->msg( 'expand_templates_generate_rawhtml' )->text(),
+                       'wpGenerateRawHtml',
+                       'generate_rawhtml',
+                       $this->generateRawHtml
+               ) . '</p>';
                $form .= '<p>' . Xml::submitButton(
                        $this->msg( 'expand_templates_ok' )->text(),
                        array( 'accesskey' => 's' )
@@ -202,28 +220,42 @@ class SpecialExpandTemplates extends SpecialPage {
        }
 
        /**
-        * Render the supplied wiki text and append to the page as a preview
+        * Renders the supplied wikitext as html
         *
         * @param Title $title
         * @param string $text
-        * @param OutputPage $out
+        * @return string
         */
-       private function showHtmlPreview( Title $title, $text, OutputPage $out ) {
+       private function generateHtml( Title $title, $text ) {
                global $wgParser;
 
                $popts = ParserOptions::newFromContext( $this->getContext() );
                $popts->setTargetLanguage( $title->getPageLanguage() );
                $pout = $wgParser->parse( $text, $title, $popts );
-               $lang = $title->getPageViewLanguage();
 
+               return $pout->getText();
+       }
+
+       /**
+        * Wraps the provided html code in a div and outputs it to the page
+        *
+        * @param Title $title
+        * @param string $html
+        * @param OutputPage $out
+        */
+       private function showHtmlPreview( Title $title, $html, OutputPage $out ) {
+               $lang = $title->getPageViewLanguage();
                $out->addHTML( "<h2>" . $this->msg( 'expand_templates_preview' )->escaped() . "</h2>\n" );
                $out->addHTML( Html::openElement( 'div', array(
                        'class' => 'mw-content-' . $lang->getDir(),
                        'dir' => $lang->getDir(),
                        'lang' => $lang->getHtmlCode(),
                ) ) );
-
-               $out->addHTML( $pout->getText() );
+               $out->addHTML( $html );
                $out->addHTML( Html::closeElement( 'div' ) );
        }
+
+       protected function getGroupName() {
+               return 'wiki';
+       }
 }
index 61ed34d..6fb5e8c 100644 (file)
@@ -185,7 +185,7 @@ class SpecialExport extends SpecialPage {
                $out->addWikiMsg( 'exporttext' );
 
                $form = Xml::openElement( 'form', array( 'method' => 'post',
-                       'action' => $this->getTitle()->getLocalURL( 'action=submit' ) ) );
+                       'action' => $this->getPageTitle()->getLocalURL( 'action=submit' ) ) );
                $form .= Xml::inputLabel(
                        $this->msg( 'export-addcattext' )->text(),
                        'catname',
@@ -315,7 +315,7 @@ class SpecialExport extends SpecialPage {
                        foreach ( explode( "\n", $page ) as $pageName ) {
                                $pageName = trim( $pageName );
                                $title = Title::newFromText( $pageName );
-                               if ( $title && $title->getInterwiki() == '' && $title->getText() !== '' ) {
+                               if ( $title && !$title->isExternal() && $title->getText() !== '' ) {
                                        // Only record each page once!
                                        $pageSet[$title->getPrefixedText()] = true;
                                }
index 4c6593b..9cf5a73 100644 (file)
@@ -117,7 +117,7 @@ class FileDuplicateSearchPage extends QueryPage {
                                'form',
                                array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => $wgScript )
                        ) . "\n" .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) . "\n" .
                                Html::openElement( 'fieldset' ) . "\n" .
                                Html::element( 'legend', null, $this->msg( 'fileduplicatesearch-legend' )->text() ) . "\n" .
                                Xml::inputLabel(
index 1bc6c92..2ac34eb 100644 (file)
@@ -64,11 +64,11 @@ class SpecialImport extends SpecialPage {
                # @todo FIXME: Title::checkSpecialsAndNSPermissions() has a very wierd expectation of what
                # getUserPermissionsErrors() might actually be used for, hence the 'ns-specialprotected'
                $errors = wfMergeErrorArrays(
-                       $this->getTitle()->getUserPermissionsErrors(
+                       $this->getPageTitle()->getUserPermissionsErrors(
                                'import', $user, true,
                                array( 'ns-specialprotected', 'badaccess-group0', 'badaccess-groups' )
                        ),
-                       $this->getTitle()->getUserPermissionsErrors(
+                       $this->getPageTitle()->getUserPermissionsErrors(
                                'importupload', $user, true,
                                array( 'ns-specialprotected', 'badaccess-group0', 'badaccess-groups' )
                        )
@@ -203,7 +203,7 @@ class SpecialImport extends SpecialPage {
        private function showForm() {
                global $wgImportSources, $wgExportMaxLinkDepth;
 
-               $action = $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) );
+               $action = $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) );
                $user = $this->getUser();
                $out = $this->getOutput();
 
index 7069d52..57d314f 100644 (file)
@@ -68,7 +68,7 @@ class SpecialJavaScriptTest extends SpecialPage {
                                $this->msg( "javascripttest-$framework-name" )->plain()
                        ) );
                        $out->setSubtitle( $this->msg( 'javascripttest-backlink' )
-                               ->rawParams( Linker::linkKnown( $this->getTitle() ) ) );
+                               ->rawParams( Linker::linkKnown( $this->getPageTitle() ) ) );
                        $this->{self::$frameworks[$framework]}();
                } else {
                        // Framework not found, display error
@@ -97,7 +97,7 @@ class SpecialJavaScriptTest extends SpecialPage {
                                'li',
                                array(),
                                Linker::link(
-                                       $this->getTitle( $framework ),
+                                       $this->getPageTitle( $framework ),
                                        // Message: javascripttest-qunit-name
                                        $this->msg( "javascripttest-$framework-name" )->escaped()
                                )
index ed6e2a4..0b5b825 100644 (file)
@@ -62,28 +62,19 @@ class LinkSearchPage extends QueryPage {
                }
 
                $target2 = $target;
-               $protocol = '';
-               $pr_sl = strpos( $target2, '//' );
-               $pr_cl = strpos( $target2, ':' );
-               if ( $pr_sl ) {
-                       // For protocols with '//'
-                       $protocol = substr( $target2, 0, $pr_sl + 2 );
-                       $target2 = substr( $target2, $pr_sl + 2 );
-               } elseif ( !$pr_sl && $pr_cl ) {
-                       // For protocols without '//' like 'mailto:'
-                       $protocol = substr( $target2, 0, $pr_cl + 1 );
-                       $target2 = substr( $target2, $pr_cl + 1 );
-               } elseif ( $target2 != '' ) {
-                       // default
-                       $protocol = 'http://';
-               }
-               if ( $protocol != '' && !in_array( $protocol, $protocols_list ) ) {
-                       // Unsupported protocol, show original search request
-                       $target2 = $target;
-                       // Since links with unsupported protocols don't end up in
-                       // externallinks, assume $protocol is actually part of a link
-                       // containing ':' or '//' and default to http as above.
-                       $protocol = 'http://';
+               // Get protocol, default is http://
+               $protocol = 'http://';
+               $bits = wfParseUrl( $target );
+               if ( isset( $bits['scheme'] ) && isset( $bits['delimiter'] ) ) {
+                       $protocol = $bits['scheme'] . $bits['delimiter'];
+                       // Make sure wfParseUrl() didn't make some well-intended correction in the
+                       // protocol
+                       if ( strcasecmp( $protocol, substr( $target, 0, strlen( $protocol ) ) ) === 0 ) {
+                               $target2 = substr( $target, strlen( $protocol ) );
+                       } else {
+                               // If it did, let LinkFilter::makeLikeArray() handle this
+                               $protocol = '';
+                       }
                }
 
                $out->addWikiMsg(
@@ -95,7 +86,7 @@ class LinkSearchPage extends QueryPage {
                        'form',
                        array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $wgScript )
                ) . "\n" .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) . "\n" .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) . "\n" .
                        Html::openElement( 'fieldset' ) . "\n" .
                        Html::element( 'legend', array(), $this->msg( 'linksearch' )->text() ) . "\n" .
                        Xml::inputLabel(
@@ -148,18 +139,26 @@ class LinkSearchPage extends QueryPage {
        /**
         * Return an appropriately formatted LIKE query and the clause
         *
-        * @param string $query
-        * @param string $prot
+        * @param String $query Search pattern to search for
+        * @param String $prot Protocol, e.g. 'http://'
+        *
         * @return array
         */
        static function mungeQuery( $query, $prot ) {
                $field = 'el_index';
-               $rv = LinkFilter::makeLikeArray( $query, $prot );
+               $dbr = wfGetDB( DB_SLAVE );
+
+               if ( $query === '*' && $prot !== '' ) {
+                       // Allow queries like 'ftp://*' to find all ftp links
+                       $rv = array( $prot, $dbr->anyString() );
+               } else {
+                       $rv = LinkFilter::makeLikeArray( $query, $prot );
+               }
+
                if ( $rv === false ) {
                        // LinkFilter doesn't handle wildcard in IP, so we'll have to munge here.
                        $pattern = '/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/';
                        if ( preg_match( $pattern, $query ) ) {
-                               $dbr = wfGetDB( DB_SLAVE );
                                $rv = array( $prot . rtrim( $query, " \t*" ), $dbr->anyString() );
                                $field = 'el_to';
                        }
@@ -230,6 +229,9 @@ class LinkSearchPage extends QueryPage {
 
        /**
         * Override to check query validity.
+        *
+        * @param mixed $offset Numerical offset or false for no offset
+        * @param mixed $limit Numerical limit or false for no limit
         */
        function doQuery( $offset = false, $limit = false ) {
                list( $this->mMungedQuery, ) = LinkSearchPage::mungeQuery( $this->mQuery, $this->mProt );
index 7484995..ba3e73f 100644 (file)
@@ -33,6 +33,7 @@ class SpecialListFiles extends IncludableSpecialPage {
                if ( $this->including() ) {
                        $userName = $par;
                        $search = '';
+                       $showAll = false;
                } else {
                        $userName = $this->getRequest()->getText( 'user', $par );
                        $search = $this->getRequest()->getText( 'ilsearch', '' );
@@ -386,6 +387,20 @@ class ImageListPager extends TablePager {
                UserCache::singleton()->doQuery( $userIds, array( 'userpage' ), __METHOD__ );
        }
 
+       /**
+        * @param string $field
+        * @param string $value
+        * @return Message|string|int The return type depends on the value of $field:
+        *   - thumb: string
+        *   - img_timestamp: string
+        *   - img_name: string
+        *   - img_user_text: string
+        *   - img_size: string
+        *   - img_description: string
+        *   - count: int
+        *   - top: Message
+        * @throws MWException
+        */
        function formatValue( $field, $value ) {
                switch ( $field ) {
                        case 'thumb':
@@ -445,6 +460,8 @@ class ImageListPager extends TablePager {
                        case 'top':
                                // Messages: listfiles-latestversion-yes, listfiles-latestversion-no
                                return $this->msg( 'listfiles-latestversion-' . $value );
+                       default:
+                               throw new MWException( "Unknown field '$field'" );
                }
        }
 
index 8cd9173..f69e177 100644 (file)
@@ -403,3 +403,25 @@ class SpecialListUsers extends IncludableSpecialPage {
                return 'users';
        }
 }
+
+/**
+ * Redirect page: Special:ListAdmins --> Special:ListUsers/sysop.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialListAdmins extends SpecialRedirectToSpecial {
+       function __construct() {
+               parent::__construct( 'Listadmins', 'Listusers', 'sysop' );
+       }
+}
+
+/**
+ * Redirect page: Special:ListBots --> Special:ListUsers/bot.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialListBots extends SpecialRedirectToSpecial {
+       function __construct() {
+               parent::__construct( 'Listbots', 'Listusers', 'bot' );
+       }
+}
index 7c7771d..f533234 100644 (file)
@@ -49,36 +49,40 @@ class LonelyPagesPage extends PageQueryPage {
        }
 
        function getQueryInfo() {
-               return array(
-                       'tables' => array(
-                               'page', 'pagelinks',
-                               'templatelinks'
+               $tables = array( 'page', 'pagelinks', 'templatelinks' );
+               $conds = array(
+                       'pl_namespace IS NULL',
+                       'page_namespace' => MWNamespace::getContentNamespaces(),
+                       'page_is_redirect' => 0,
+                       'tl_namespace IS NULL'
+               );
+               $joinConds = array(
+                       'pagelinks' => array(
+                               'LEFT JOIN', array(
+                                       'pl_namespace = page_namespace',
+                                       'pl_title = page_title'
+                               )
                        ),
+                       'templatelinks' => array(
+                               'LEFT JOIN', array(
+                                       'tl_namespace = page_namespace',
+                                       'tl_title = page_title'
+                               )
+                       )
+               );
+
+               // Allow extensions to modify the query
+               wfRunHooks( 'LonelyPagesQuery', array( &$tables, &$conds, &$joinConds ) );
+
+               return array(
+                       'tables' => $tables,
                        'fields' => array(
                                'namespace' => 'page_namespace',
                                'title' => 'page_title',
                                'value' => 'page_title'
                        ),
-                       'conds' => array(
-                               'pl_namespace IS NULL',
-                               'page_namespace' => MWNamespace::getContentNamespaces(),
-                               'page_is_redirect' => 0,
-                               'tl_namespace IS NULL'
-                       ),
-                       'join_conds' => array(
-                               'pagelinks' => array(
-                                       'LEFT JOIN', array(
-                                               'pl_namespace = page_namespace',
-                                               'pl_title = page_title'
-                                       )
-                               ),
-                               'templatelinks' => array(
-                                       'LEFT JOIN', array(
-                                               'tl_namespace = page_namespace',
-                                               'tl_title = page_title'
-                                       )
-                               )
-                       )
+                       'conds' => $conds,
+                       'join_conds' => $joinConds
                );
        }
 
index 3eeae31..dd78c4c 100644 (file)
@@ -112,7 +112,7 @@ class MIMEsearchPage extends QueryPage {
                                array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => $wgScript )
                        ) .
                                Xml::openElement( 'fieldset' ) .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                                Xml::element( 'legend', null, $this->msg( 'mimesearch' )->text() ) .
                                Xml::inputLabel( $this->msg( 'mimetype' )->text(), 'mime', 'mime', 20, $mime ) .
                                ' ' .
index fb5ea65..f799fc5 100644 (file)
@@ -142,7 +142,7 @@ class SpecialMergeHistory extends SpecialPage {
                                '<fieldset>' .
                                Xml::element( 'legend', array(),
                                        $this->msg( 'mergehistory-box' )->text() ) .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                                Html::hidden( 'submitted', '1' ) .
                                Html::hidden( 'mergepoint', $this->mTimestamp ) .
                                Xml::openElement( 'table' ) .
@@ -171,7 +171,7 @@ class SpecialMergeHistory extends SpecialPage {
                $haveRevisions = $revisions && $revisions->getNumRows() > 0;
 
                $out = $this->getOutput();
-               $titleObj = $this->getTitle();
+               $titleObj = $this->getPageTitle();
                $action = $titleObj->getLocalURL( array( 'action' => 'submit' ) );
                # Start the form here
                $top = Xml::openElement(
index 253e6cc..b29b3f9 100644 (file)
@@ -281,7 +281,7 @@ class MovePageForm extends UnlistedSpecialPage {
                                'form',
                                array(
                                        'method' => 'post',
-                                       'action' => $this->getTitle()->getLocalURL( 'action=submit' ),
+                                       'action' => $this->getPageTitle()->getLocalURL( 'action=submit' ),
                                        'id' => 'movepage'
                                )
                        ) .
@@ -351,7 +351,16 @@ class MovePageForm extends UnlistedSpecialPage {
                        );
                }
 
-               if ( $user->isAllowed( 'suppressredirect' ) && $handler->supportsRedirects() ) {
+               if ( $user->isAllowed( 'suppressredirect' ) ) {
+                       if ( $handler->supportsRedirects() ) {
+                               $isChecked = $this->leaveRedirect;
+                               $options = array();
+                       } else {
+                               $isChecked = false;
+                               $options = array(
+                                       'disabled' => 'disabled'
+                               );
+                       }
                        $out->addHTML( "
                                <tr>
                                        <td></td>
@@ -360,7 +369,8 @@ class MovePageForm extends UnlistedSpecialPage {
                                                $this->msg( 'move-leave-redirect' )->text(),
                                                'wpLeaveRedirect',
                                                'wpLeaveRedirect',
-                                               $this->leaveRedirect
+                                               $isChecked,
+                                               $options
                                        ) .
                                        "</td>
                                </tr>"
diff --git a/includes/specials/SpecialMyRedirectPages.php b/includes/specials/SpecialMyRedirectPages.php
new file mode 100644 (file)
index 0000000..41119f9
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Special pages that are used to get user independent links pointing to
+ * current user's pages (user page, talk page, contributions, etc.).
+ * This can let us cache a single copy of some generated content for all
+ * users or be linked in wikitext help pages.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Special page pointing to current user's user page.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMypage extends RedirectSpecialArticle {
+       function __construct() {
+               parent::__construct( 'Mypage' );
+       }
+
+       function getRedirect( $subpage ) {
+               if ( strval( $subpage ) !== '' ) {
+                       return Title::makeTitle( NS_USER, $this->getUser()->getName() . '/' . $subpage );
+               } else {
+                       return Title::makeTitle( NS_USER, $this->getUser()->getName() );
+               }
+       }
+}
+
+/**
+ * Special page pointing to current user's talk page.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMytalk extends RedirectSpecialArticle {
+       function __construct() {
+               parent::__construct( 'Mytalk' );
+       }
+
+       function getRedirect( $subpage ) {
+               if ( strval( $subpage ) !== '' ) {
+                       return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() . '/' . $subpage );
+               } else {
+                       return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() );
+               }
+       }
+}
+
+/**
+ * Special page pointing to current user's contributions.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMycontributions extends RedirectSpecialPage {
+       function __construct() {
+               parent::__construct( 'Mycontributions' );
+               $this->mAllowedRedirectParams = array( 'limit', 'namespace', 'tagfilter',
+                       'offset', 'dir', 'year', 'month', 'feed' );
+       }
+
+       function getRedirect( $subpage ) {
+               return SpecialPage::getTitleFor( 'Contributions', $this->getUser()->getName() );
+       }
+}
+
+/**
+ * Special page pointing to current user's uploaded files.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialMyuploads extends RedirectSpecialPage {
+       function __construct() {
+               parent::__construct( 'Myuploads' );
+               $this->mAllowedRedirectParams = array( 'limit', 'ilshowall', 'ilsearch' );
+       }
+
+       function getRedirect( $subpage ) {
+               return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
+       }
+}
+
+/**
+ * Special page pointing to current user's uploaded files (including old versions).
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialAllMyUploads extends RedirectSpecialPage {
+       function __construct() {
+               parent::__construct( 'AllMyUploads' );
+               $this->mAllowedRedirectParams = array( 'limit', 'ilsearch' );
+       }
+
+       function getRedirect( $subpage ) {
+               $this->mAddedRedirectParams['ilshowall'] = 1;
+               return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
+       }
+}
index 43d4855..1e631f9 100644 (file)
@@ -194,7 +194,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                $changed = $this->opts->getChangedValues();
                unset( $changed['offset'] ); // Reset offset if query type changes
 
-               $self = $this->getTitle();
+               $self = $this->getPageTitle();
                foreach ( $filters as $key => $msg ) {
                        $onoff = 1 - $this->opts->getValue( $key );
                        $link = Linker::link( $self, $showhide[$onoff], array(),
@@ -233,7 +233,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                }
 
                $form = Xml::openElement( 'form', array( 'action' => $wgScript ) ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                        Xml::fieldset( $this->msg( 'newpages' )->text() ) .
                        Xml::openElement( 'table', array( 'id' => 'mw-newpages-table' ) ) .
                        '<tr>
@@ -430,7 +430,7 @@ class SpecialNewpages extends IncludableSpecialPage {
                $feed = new $wgFeedClasses[$type](
                        $this->feedTitle(),
                        $this->msg( 'tagline' )->text(),
-                       $this->getTitle()->getFullURL()
+                       $this->getPageTitle()->getFullURL()
                );
 
                $pager = new NewPagesPager( $this, $this->opts );
@@ -524,15 +524,14 @@ class NewPagesPager extends ReverseChronologicalPager {
                $username = $this->opts->getValue( 'username' );
                $user = Title::makeTitleSafe( NS_USER, $username );
 
+               $rcIndexes = array();
+
                if ( $namespace !== false ) {
                        if ( $this->opts->getValue( 'invert' ) ) {
                                $conds[] = 'rc_namespace != ' . $this->mDb->addQuotes( $namespace );
                        } else {
                                $conds['rc_namespace'] = $namespace;
                        }
-                       $rcIndexes = array( 'new_name_timestamp' );
-               } else {
-                       $rcIndexes = array( 'rc_timestamp' );
                }
 
                # $wgEnableNewpagesUserFilter - temp WMF hack
@@ -572,11 +571,17 @@ class NewPagesPager extends ReverseChronologicalPager {
                wfRunHooks( 'SpecialNewpagesConditions',
                        array( &$this, $this->opts, &$conds, &$tables, &$fields, &$join_conds ) );
 
+               $options = array();
+
+               if ( $rcIndexes ) {
+                       $options = array( 'USE INDEX' => array( 'recentchanges' => $rcIndexes ) );
+               }
+
                $info = array(
                        'tables' => $tables,
                        'fields' => $fields,
                        'conds' => $conds,
-                       'options' => array( 'USE INDEX' => array( 'recentchanges' => $rcIndexes ) ),
+                       'options' => $options,
                        'join_conds' => $join_conds
                );
 
diff --git a/includes/specials/SpecialPermanentLink.php b/includes/specials/SpecialPermanentLink.php
new file mode 100644 (file)
index 0000000..6c2ffe9
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Redirect from Special:PermanentLink/### to index.php?oldid=###.
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Redirect from Special:PermanentLink/### to index.php?oldid=###.
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialPermanentLink extends RedirectSpecialPage {
+       function __construct() {
+               parent::__construct( 'PermanentLink' );
+               $this->mAllowedRedirectParams = array();
+       }
+
+       function getRedirect( $subpage ) {
+               $subpage = intval( $subpage );
+               if ( $subpage === 0 ) {
+                       # throw an error page when no subpage was given
+                       throw new ErrorPageError( 'nopagetitle', 'nopagetext' );
+               }
+               $this->mAddedRedirectParams['oldid'] = $subpage;
+               return true;
+       }
+}
index 51454f6..4cfd445 100644 (file)
@@ -69,7 +69,7 @@ class SpecialPreferences extends SpecialPage {
                $this->getOutput()->addWikiMsg( 'prefs-reset-intro' );
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle( 'reset' ) ); // Reset subpage
+               $context->setTitle( $this->getPageTitle( 'reset' ) ); // Reset subpage
                $htmlForm = new HTMLForm( array(), $context, 'prefs-restore' );
 
                $htmlForm->setSubmitTextMsg( 'restoreprefs' );
@@ -88,7 +88,7 @@ class SpecialPreferences extends SpecialPage {
                $user->resetOptions( 'all', $this->getContext() );
                $user->saveSettings();
 
-               $url = $this->getTitle()->getFullURL( 'success' );
+               $url = $this->getPageTitle()->getFullURL( 'success' );
 
                $this->getOutput()->redirect( $url );
 
index 28d07ff..c6307f0 100644 (file)
@@ -101,7 +101,7 @@ class SpecialPrefixindex extends SpecialAllpages {
 
                $out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
                $out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
-               $out .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
+               $out .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                $out .= Xml::openElement( 'fieldset' );
                $out .= Xml::element( 'legend', null, $this->msg( 'allpages' )->text() );
                $out .= Xml::openElement( 'table', array( 'id' => 'nsselect', 'class' => 'allpages' ) );
@@ -249,7 +249,7 @@ class SpecialPrefixindex extends SpecialAllpages {
                        $out2 = '';
                } else {
                        $nsForm = $this->namespacePrefixForm( $namespace, $prefix );
-                       $self = $this->getTitle();
+                       $self = $this->getPageTitle();
                        $out2 = Xml::openElement( 'table', array( 'id' => 'mw-prefixindex-nav-table' ) ) .
                                '<tr>
                                        <td>' .
index 3de6ea2..09284d0 100644 (file)
@@ -52,6 +52,7 @@ class SpecialProtectedpages extends SpecialPage {
                $ns = $request->getIntOrNull( 'namespace' );
                $indefOnly = $request->getBool( 'indefonly' ) ? 1 : 0;
                $cascadeOnly = $request->getBool( 'cascadeonly' ) ? 1 : 0;
+               $noRedirect = $request->getBool( 'noredirect' ) ? 1 : 0;
 
                $pager = new ProtectedPagesPager(
                        $this,
@@ -62,7 +63,8 @@ class SpecialProtectedpages extends SpecialPage {
                        $sizetype,
                        $size,
                        $indefOnly,
-                       $cascadeOnly
+                       $cascadeOnly,
+                       $noRedirect
                );
 
                $this->getOutput()->addHTML( $this->showOptions(
@@ -72,7 +74,8 @@ class SpecialProtectedpages extends SpecialPage {
                        $sizetype,
                        $size,
                        $indefOnly,
-                       $cascadeOnly
+                       $cascadeOnly,
+                       $noRedirect
                ) );
 
                if ( $pager->getNumRows() ) {
@@ -186,21 +189,22 @@ class SpecialProtectedpages extends SpecialPage {
        }
 
        /**
-        * @param $namespace Integer
-        * @param string $type restriction type
-        * @param string $level restriction level
+        * @param int $namespace
+        * @param string $type Restriction type
+        * @param string $level Restriction level
         * @param string $sizetype "min" or "max"
-        * @param $size Integer
-        * @param $indefOnly Boolean: only indefinie protection
-        * @param $cascadeOnly Boolean: only cascading protection
+        * @param int $size
+        * @param bool $indefOnly Only indefinite protection
+        * @param bool $cascadeOnly Only cascading protection
+        * @param bool $noRedirect Don't show redirects
         * @return String: input form
         */
        protected function showOptions( $namespace, $type = 'edit', $level, $sizetype,
-               $size, $indefOnly, $cascadeOnly
+               $size, $indefOnly, $cascadeOnly, $noRedirect
        ) {
                global $wgScript;
 
-               $title = $this->getTitle();
+               $title = $this->getPageTitle();
 
                return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
                        Xml::openElement( 'fieldset' ) .
@@ -212,6 +216,7 @@ class SpecialProtectedpages extends SpecialPage {
                        "<br /><span style='white-space: nowrap'>" .
                        $this->getExpiryCheck( $indefOnly ) . "&#160;\n" .
                        $this->getCascadeCheck( $cascadeOnly ) . "&#160;\n" .
+                       $this->getRedirectCheck( $noRedirect ) . "&#160;\n" .
                        "</span><br /><span style='white-space: nowrap'>" .
                        $this->getSizeLimit( $sizetype, $size ) . "&#160;\n" .
                        "</span>" .
@@ -269,6 +274,19 @@ class SpecialProtectedpages extends SpecialPage {
                ) . "\n";
        }
 
+       /**
+        * @param bool $noRedirect
+        * @return string Formatted HTML
+        */
+       protected function getRedirectCheck( $noRedirect ) {
+               return Xml::checkLabel(
+                       $this->msg( 'protectedpages-noredirect' )->text(),
+                       'noredirect',
+                       'noredirect',
+                       $noRedirect
+               ) . "\n";
+       }
+
        /**
         * @param string $sizetype "min" or "max"
         * @param mixed $size
@@ -372,10 +390,10 @@ class SpecialProtectedpages extends SpecialPage {
  */
 class ProtectedPagesPager extends AlphabeticPager {
        public $mForm, $mConds;
-       private $type, $level, $namespace, $sizetype, $size, $indefonly;
+       private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect;
 
        function __construct( $form, $conds = array(), $type, $level, $namespace,
-               $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false
+               $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false
        ) {
                $this->mForm = $form;
                $this->mConds = $conds;
@@ -386,6 +404,7 @@ class ProtectedPagesPager extends AlphabeticPager {
                $this->size = intval( $size );
                $this->indefonly = (bool)$indefonly;
                $this->cascadeonly = (bool)$cascadeonly;
+               $this->noredirect = (bool)$noredirect;
                parent::__construct( $form->getContext() );
        }
 
@@ -406,8 +425,8 @@ class ProtectedPagesPager extends AlphabeticPager {
 
        function getQueryInfo() {
                $conds = $this->mConds;
-               $conds[] = '(pr_expiry>' . $this->mDb->addQuotes( $this->mDb->timestamp() ) .
-                       'OR pr_expiry IS NULL)';
+               $conds[] = 'pr_expiry > ' . $this->mDb->addQuotes( $this->mDb->timestamp() ) .
+                       'OR pr_expiry IS NULL';
                $conds[] = 'page_id=pr_page';
                $conds[] = 'pr_type=' . $this->mDb->addQuotes( $this->type );
 
@@ -424,6 +443,9 @@ class ProtectedPagesPager extends AlphabeticPager {
                if ( $this->cascadeonly ) {
                        $conds[] = 'pr_cascade = 1';
                }
+               if ( $this->noredirect ) {
+                       $conds[] = 'page_is_redirect = 0';
+               }
 
                if ( $this->level ) {
                        $conds[] = 'pr_level=' . $this->mDb->addQuotes( $this->level );
index 078e7b1..c3ebd80 100644 (file)
@@ -135,7 +135,7 @@ class SpecialProtectedtitles extends SpecialPage {
        function showOptions( $namespace, $type = 'edit', $level ) {
                global $wgScript;
                $action = htmlspecialchars( $wgScript );
-               $title = $this->getTitle();
+               $title = $this->getPageTitle();
                $special = htmlspecialchars( $title->getPrefixedDBkey() );
 
                return "<form action=\"$action\" method=\"get\">\n" .
index 14123a8..4e2f0e7 100644 (file)
@@ -101,7 +101,7 @@ class SpecialRandomInCategory extends SpecialPage {
 
                        $msg = $this->msg( 'randomincategory-selectcategory' );
                        $form = Html::rawElement( 'form', array( 'action' => $wgScript ),
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                                $msg->rawParams( $input, $submit )->parse()
                        );
                        $this->getOutput()->addHtml( $form );
index c94d2b3..086193e 100644 (file)
@@ -144,7 +144,6 @@ class RandomPage extends SpecialPage {
                        ), $this->extra ),
                        'options' => array(
                                'ORDER BY' => 'page_random',
-                               'USE INDEX' => 'page_random',
                                'LIMIT' => 1,
                        ),
                        'join_conds' => array()
index d306744..90abe1c 100644 (file)
  *
  * @ingroup SpecialPage
  */
-class SpecialRecentChanges extends IncludableSpecialPage {
+class SpecialRecentChanges extends SpecialPage {
        var $rcOptions, $rcSubpage;
        protected $customFilters;
 
-       public function __construct( $name = 'Recentchanges' ) {
-               parent::__construct( $name );
+       /**
+        * The feed format to output as (either 'rss' or 'atom'), or null if no
+        * feed output was requested
+        *
+        * @var string $feedFormat
+        */
+       protected $feedFormat;
+
+       public function __construct( $name = 'Recentchanges', $restriction = '' ) {
+               parent::__construct( $name, $restriction );
+       }
+
+       public function isIncludable() {
+               return true;
        }
 
        /**
@@ -69,28 +81,41 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         * Create a FormOptions object with options as specified by the user
         *
         * @param array $parameters
-        *
         * @return FormOptions
         */
        public function setup( $parameters ) {
-               $opts = $this->getDefaultOptions();
+               global $wgFeedLimit;
 
+               $opts = $this->getDefaultOptions();
                foreach ( $this->getCustomFilters() as $key => $params ) {
                        $opts->add( $key, $params['default'] );
                }
 
-               $opts->fetchValuesFromRequest( $this->getRequest() );
+               $opts = $this->fetchOptionsFromRequest( $opts );
 
                // Give precedence to subpage syntax
                if ( $parameters !== null ) {
                        $this->parseParameters( $parameters, $opts );
                }
 
-               $opts->validateIntBounds( 'limit', 0, 5000 );
+               $opts->validateIntBounds( 'limit', 0, $this->feedFormat ? $wgFeedLimit : 5000 );
 
                return $opts;
        }
 
+       /**
+        * Fetch values for a FormOptions object from the WebRequest associated with this instance.
+        *
+        * Intended for subclassing, e.g. to add a backwards-compatibility layer.
+        *
+        * @param FormOptions $parameters
+        * @return FormOptions
+        */
+       protected function fetchOptionsFromRequest( $opts ) {
+               $opts->fetchValuesFromRequest( $this->getRequest() );
+               return $opts;
+       }
+
        /**
         * Get custom show/hide filters
         *
@@ -105,31 +130,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                return $this->customFilters;
        }
 
-       /**
-        * Create a FormOptions object specific for feed requests and return it
-        *
-        * @return FormOptions
-        */
-       public function feedSetup() {
-               global $wgFeedLimit;
-               $opts = $this->getDefaultOptions();
-               $opts->fetchValuesFromRequest( $this->getRequest() );
-               $opts->validateIntBounds( 'limit', 0, $wgFeedLimit );
-
-               return $opts;
-       }
-
        /**
         * Get the current FormOptions for this request
         */
        public function getOptions() {
                if ( $this->rcOptions === null ) {
-                       if ( $this->including() ) {
-                               $isFeed = false;
-                       } else {
-                               $isFeed = (bool)$this->getRequest()->getVal( 'feed' );
-                       }
-                       $this->rcOptions = $isFeed ? $this->feedSetup() : $this->setup( $this->rcSubpage );
+                       $this->rcOptions = $this->setup( $this->rcSubpage );
                }
 
                return $this->rcOptions;
@@ -142,12 +148,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         */
        public function execute( $subpage ) {
                $this->rcSubpage = $subpage;
-               $feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
+               $this->feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
 
                # 10 seconds server-side caching max
                $this->getOutput()->setSquidMaxage( 10 );
                # Check if the client has a cached version
-               $lastmod = $this->checkLastModified( $feedFormat );
+               $lastmod = $this->checkLastModified( $this->feedFormat );
                if ( $lastmod === false ) {
                        return;
                }
@@ -168,7 +174,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        return;
                }
 
-               if ( !$feedFormat ) {
+               if ( !$this->feedFormat ) {
                        $batch = new LinkBatch;
                        foreach ( $rows as $row ) {
                                $batch->add( NS_USER, $row->rc_user_text );
@@ -177,8 +183,8 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        }
                        $batch->execute();
                }
-               if ( $feedFormat ) {
-                       list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
+               if ( $this->feedFormat ) {
+                       list( $changesFeed, $formatter ) = $this->getFeedObject( $this->feedFormat );
                        /** @var ChangesFeed $changesFeed */
                        $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
                } else {
@@ -199,7 +205,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                $formatter = $changesFeed->getFeedObject(
                        $this->msg( 'recentchanges' )->inContentLanguage()->text(),
                        $this->msg( 'recentchanges-feed-description' )->inContentLanguage()->text(),
-                       $this->getTitle()->getFullURL()
+                       $this->getPageTitle()->getFullURL()
                );
 
                return array( $changesFeed, $formatter );
@@ -381,9 +387,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
        public function doMainQuery( $conds, $opts ) {
                $tables = array( 'recentchanges' );
                $join_conds = array();
-               $query_options = array(
-                       'USE INDEX' => array( 'recentchanges' => 'rc_timestamp' )
-               );
+               $query_options = array();
 
                $uid = $this->getUser()->getId();
                $dbr = wfGetDB( DB_SLAVE );
@@ -605,7 +609,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $out .= Html::hidden( $key, $value );
                }
 
-               $t = $this->getTitle();
+               $t = $this->getPageTitle();
                $out .= Html::hidden( 'title', $t->getPrefixedText() );
                $form = Xml::tags( 'form', array( 'action' => $wgScript ), $out );
                $panel[] = $form;
@@ -655,7 +659,9 @@ class SpecialRecentChanges extends IncludableSpecialPage {
        }
 
        /**
-        * Return the legend displayed within the fieldset
+        * Return the legend displayed within the fieldset.
+        *
+        * This method is also called from SpecialWatchlist.
         *
         * @param $context the object available as $this in non-static functions
         * @return string
@@ -664,7 +670,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                global $wgRecentChangesFlags;
                $user = $context->getUser();
                # The legend showing what the letters and stuff mean
-               $legend = Xml::openElement( 'dl', array( 'class' => 'mw-changeslist-legend' ) ) . "\n";
+               $legend = Xml::openElement( 'dl' ) . "\n";
                # Iterates through them and gets the messages for both letter and tooltip
                $legendItems = $wgRecentChangesFlags;
                if ( !$user->useRCPatrol() ) {
@@ -700,6 +706,14 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $context->msg( 'recentchanges-label-plusminus' )->text()
                ) . "\n";
                $legend .= Xml::closeElement( 'dl' ) . "\n";
+
+               # Collapsibility
+               $legend =
+                       '<div class="mw-changeslist-legend">' .
+                               $context->msg( 'recentchanges-legend-heading' )->parse() .
+                               '<div class="mw-collapsible-content">' . $legend . '</div>' .
+                       '</div>';
+
                return $legend;
        }
 
@@ -864,7 +878,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
                        $text = '<strong>' . $text . '</strong>';
                }
 
-               return Linker::linkKnown( $this->getTitle(), $text, array(), $params );
+               return Linker::linkKnown( $this->getPageTitle(), $text, array(), $params );
        }
 
        /**
@@ -964,9 +978,11 @@ class SpecialRecentChanges extends IncludableSpecialPage {
         * Add page-specific modules.
         */
        protected function addModules() {
-               $this->getOutput()->addModules( array(
-                       'mediawiki.special.recentchanges',
-               ) );
+               $out = $this->getOutput();
+               $out->addModules( 'mediawiki.special.recentchanges' );
+               // This modules include styles and behavior for the legend box, load it unconditionally
+               $out->addModuleStyles( 'mediawiki.special.changeslist' );
+               $out->addModules( 'mediawiki.special.changeslist.js' );
        }
 
        protected function getGroupName() {
index f37ea20..9a9cd13 100644 (file)
@@ -26,7 +26,7 @@
  *
  * @ingroup SpecialPage
  */
-class SpecialRecentchangeslinked extends SpecialRecentChanges {
+class SpecialRecentChangesLinked extends SpecialRecentChanges {
        var $rclTargetTitle;
 
        function __construct() {
@@ -44,19 +44,13 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
                $opts['target'] = $par;
        }
 
-       public function feedSetup() {
-               $opts = parent::feedSetup();
-               $opts['target'] = $this->getRequest()->getVal( 'target' );
-               return $opts;
-       }
-
        public function getFeedObject( $feedFormat ) {
                $feed = new ChangesFeed( $feedFormat, false );
                $feedObj = $feed->getFeedObject(
                        $this->msg( 'recentchangeslinked-title', $this->getTargetTitle()->getPrefixedText() )
                                ->inContentLanguage()->text(),
                        $this->msg( 'recentchangeslinked-feed' )->inContentLanguage()->text(),
-                       $this->getTitle()->getFullURL()
+                       $this->getPageTitle()->getFullURL()
                );
                return array( $feed, $feedObj );
        }
@@ -71,7 +65,7 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
                }
                $outputPage = $this->getOutput();
                $title = Title::newFromURL( $target );
-               if ( !$title || $title->getInterwiki() != '' ) {
+               if ( !$title || $title->isExternal() ) {
                        $outputPage->addHtml( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )->parse() . '</div>' );
                        return false;
                }
index f05dacb..8ec6f85 100644 (file)
@@ -135,6 +135,25 @@ class SpecialRedirect extends FormSpecialPage {
                ) );
        }
 
+       /**
+        * Handle Special:Redirect/page/xxx (by redirecting to index.php?curid=xxx)
+        *
+        * @return string|null url to redirect to, or null if $mValue is invalid.
+        */
+       function dispatchPage() {
+               $curid = $this->mValue;
+               if ( !ctype_digit( $curid ) ) {
+                       return null;
+               }
+               $curid = (int)$curid;
+               if ( $curid === 0 ) {
+                       return null;
+               }
+               return wfAppendQuery( wfScript( 'index' ), array(
+                       'curid' => $curid
+               ) );
+       }
+
        /**
         * Use appropriate dispatch* method to obtain a redirection URL,
         * and either: redirect, set a 404 error code and error message,
@@ -155,6 +174,9 @@ class SpecialRedirect extends FormSpecialPage {
                case 'revision':
                        $url = $this->dispatchRevision();
                        break;
+               case 'page':
+                       $url = $this->dispatchPage();
+                       break;
                default:
                        $this->getOutput()->setStatusCode( 404 );
                        $url = null;
@@ -177,8 +199,10 @@ class SpecialRedirect extends FormSpecialPage {
                $mp = $this->getMessagePrefix();
                $ns = array(
                        // subpage => message
-                       // Messages: redirect-user, redirect-revision, redirect-file
+                       // Messages: redirect-user, redirect-page, redirect-revision,
+                       // redirect-file
                        'user' => $mp . '-user',
+                       'page' => $mp . '-page',
                        'revision' => $mp . '-revision',
                        'file' => $mp . '-file',
                );
index 87705a8..804f7a9 100644 (file)
@@ -272,7 +272,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $this->getOutput()->addHTML(
                                Xml::openElement( 'form', array(
                                        'method' => 'POST',
-                                       'action' => $this->getTitle()->getLocalURL( array(
+                                       'action' => $this->getPageTitle()->getLocalURL( array(
                                                        'target' => $this->targetObj->getPrefixedDBkey(),
                                                        'file' => $archiveName,
                                                        'token' => $user->getEditToken( $archiveName ),
@@ -357,7 +357,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                // Show form if the user can submit
                if ( $this->mIsAllowed ) {
                        $out = Xml::openElement( 'form', array( 'method' => 'post',
-                                       'action' => $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) ),
+                                       'action' => $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) ),
                                        'id' => 'mw-revdel-form-revisions' ) ) .
                                Xml::fieldset( $this->msg( 'revdelete-legend' )->text() ) .
                                $this->buildCheckBoxes() .
@@ -438,7 +438,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                        $list->reset();
                        $bitfield = $list->current()->getBits(); // existing field
                        if ( $this->submitClicked ) {
-                               $bitfield = $this->extractBitfield( $this->extractBitParams(), $bitfield );
+                               $bitfield = RevisionDeleter::extractBitfield( $this->extractBitParams(), $bitfield );
                        }
                        foreach ( $this->checks as $item ) {
                                list( $message, $name, $field ) = $item;
@@ -557,17 +557,6 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
                return $bitfield;
        }
 
-       /**
-        * Put together a rev_deleted bitfield
-        * @deprecated since 1.22, use RevisionDeleter::extractBitfield instead
-        * @param array $bitPars extractBitParams() params
-        * @param int $oldfield current bitfield
-        * @return array
-        */
-       public static function extractBitfield( $bitPars, $oldfield ) {
-               return RevisionDeleter::extractBitfield( $bitPars, $oldfield );
-       }
-
        /**
         * Do the write operations. Simple wrapper for RevDel_*List::setVisibility().
         * @param $bitfield
index 08e438f..802efeb 100644 (file)
@@ -37,7 +37,6 @@ class SpecialSearch extends SpecialPage {
         * null|string
         */
        protected $profile;
-       function getProfile() { return $this->profile; }
 
        /// Search engine
        protected $searchEngine;
@@ -60,7 +59,6 @@ class SpecialSearch extends SpecialPage {
         * @var array
         */
        protected $namespaces;
-       function getNamespaces() { return $this->namespaces; }
 
        /**
         * @var bool
@@ -89,7 +87,7 @@ class SpecialSearch extends SpecialPage {
                $out = $this->getOutput();
                $out->allowClickjacking();
                $out->addModuleStyles( array(
-                       'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui'
+                       'mediawiki.special', 'mediawiki.special.search', 'mediawiki.ui', 'mediawiki.ui.button'
                ) );
 
                // Strip underscores from title parameter; most of the time we'll want
@@ -107,8 +105,8 @@ class SpecialSearch extends SpecialPage {
 
                if ( $request->getVal( 'fulltext' )
                        || !is_null( $request->getVal( 'offset' ) )
-                       || !is_null( $request->getVal( 'searchx' ) ) )
-               {
+                       || !is_null( $request->getVal( 'searchx' ) )
+               {
                        $this->showResults( $search );
                } else {
                        $this->goResult( $search );
@@ -122,7 +120,7 @@ class SpecialSearch extends SpecialPage {
         */
        public function load() {
                $request = $this->getRequest();
-               list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, 'searchlimit' );
+               list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, '', 500 );
                $this->mPrefix = $request->getVal( 'prefix', '' );
 
                $user = $this->getUser();
@@ -255,6 +253,8 @@ class SpecialSearch extends SpecialPage {
                }
 
                $t = Title::newFromText( $term );
+               $showSuggestion = $t === null || !$t->isKnown();
+               $search->setShowSuggestion( $showSuggestion );
 
                // fetch search results
                $rewritten = $search->replacePrefixes( $term );
@@ -271,7 +271,7 @@ class SpecialSearch extends SpecialPage {
                }
 
                // did you mean... suggestions
-               if ( $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
+               if ( $showSuggestion && $textMatches && !$textStatus && $textMatches->hasSuggestion() ) {
                        $st = SpecialPage::getTitleFor( 'Search' );
 
                        # mirror Go/Search behavior of original request ..
@@ -376,8 +376,8 @@ class SpecialSearch extends SpecialPage {
                // prev/next links
                if ( $num || $this->offset ) {
                        // Show the create link ahead
-                       $this->showCreateLink( $t );
-                       $prevnext = $this->getLanguage()->viewPrevNext( $this->getTitle(), $this->offset, $this->limit,
+                       $this->showCreateLink( $t, $num );
+                       $prevnext = $this->getLanguage()->viewPrevNext( $this->getPageTitle(), $this->offset, $this->limit,
                                $this->powerSearchOptions() + array( 'search' => $term ),
                                max( $titleMatchesNum, $textMatchesNum ) < $this->limit
                        );
@@ -422,7 +422,7 @@ class SpecialSearch extends SpecialPage {
                        } else {
                                $out->wrapWikiMsg( "<p class=\"mw-search-nonefound\">\n$1</p>",
                                        array( 'search-nonefound', wfEscapeWikiText( $term ) ) );
-                               $this->showCreateLink( $t );
+                               $this->showCreateLink( $t, $num );
                        }
                }
                $out->addHtml( "</div>" );
@@ -436,8 +436,9 @@ class SpecialSearch extends SpecialPage {
 
        /**
         * @param $t Title
+        * @param int $num The number of search results found
         */
-       protected function showCreateLink( $t ) {
+       protected function showCreateLink( $t, $num ) {
                // show direct page/create link if applicable
 
                // Check DBkey !== '' in case of fragment link only.
@@ -455,7 +456,7 @@ class SpecialSearch extends SpecialPage {
                } else {
                        $messageName = 'searchmenu-new-nocreate';
                }
-               $params = array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) );
+               $params = array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ), Message::numParam( $num ) );
                wfRunHooks( 'SpecialSearchCreateLink', array( $t, &$params ) );
 
                // Extensions using the hook might still return an empty $messageName
@@ -477,7 +478,7 @@ class SpecialSearch extends SpecialPage {
                if ( strval( $term ) !== '' ) {
                        $out->setPageTitle( $this->msg( 'searchresults' ) );
                        $out->setHTMLTitle( $this->msg( 'pagetitle' )
-                               ->rawParams( $this->msg( 'searchresults-title' )->rawParams( $term ) )
+                               ->rawParams( $this->msg( 'searchresults-title' )->rawParams( $term )->text() )
                                ->inContentLanguage()->text()
                        );
                }
@@ -688,7 +689,8 @@ class SpecialSearch extends SpecialPage {
 
                // Include a thumbnail for media files...
                if ( $t->getNamespace() == NS_FILE ) {
-                       $img = wfFindFile( $t );
+                       $img = $result->getFile();
+                       $img = $img ?: wfFindFile( $t );
                        if ( $img ) {
                                $thumb = $img->transform( array( 'width' => 120, 'height' => 120 ) );
                                if ( $thumb ) {
@@ -1090,7 +1092,7 @@ class SpecialSearch extends SpecialPage {
         * @return string
         */
        protected function shortDialog( $term ) {
-               $out = Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
+               $out = Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                $out .= Html::hidden( 'profile', $this->profile ) . "\n";
                // Term box
                $out .= Html::input( 'search', $term, 'search', array(
@@ -1135,7 +1137,7 @@ class SpecialSearch extends SpecialPage {
                return Xml::element(
                        'a',
                        array(
-                               'href' => $this->getTitle()->getLocalURL( $stParams ),
+                               'href' => $this->getPageTitle()->getLocalURL( $stParams ),
                                'title' => $tooltip
                        ),
                        $label
@@ -1188,6 +1190,22 @@ class SpecialSearch extends SpecialPage {
                return $this->searchEngine;
        }
 
+       /**
+        * Current search profile.
+        * @return null|string
+        */
+       function getProfile() {
+               return $this->profile;
+       }
+
+       /**
+        * Current namespaces.
+        * @return array
+        */
+       function getNamespaces() {
+               return $this->namespaces;
+       }
+
        /**
         * Users of hook SpecialSearchSetupEngine can use this to
         * add more params to links to not lose selection when
index 0042b43..3ed3ac3 100644 (file)
@@ -68,7 +68,7 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
                                        $groups[$group] = array();
                                }
                                $groups[$group][$page->getDescription()] = array(
-                                       $page->getTitle(),
+                                       $page->getPageTitle(),
                                        $page->isRestricted(),
                                        $page->isCached()
                                );
index d4aed11..0dd5a0c 100644 (file)
@@ -124,6 +124,8 @@ class PageArchive {
 
                $dbr = wfGetDB( DB_SLAVE );
 
+               $tables = array( 'archive' );
+
                $fields = array(
                        'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text',
                        'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id', 'ar_sha1',
@@ -134,12 +136,28 @@ class PageArchive {
                        $fields[] = 'ar_content_model';
                }
 
-               $res = $dbr->select( 'archive',
+               $conds = array( 'ar_namespace' => $this->title->getNamespace(),
+                               'ar_title' => $this->title->getDBkey() );
+
+               $options = array( 'ORDER BY' => 'ar_timestamp DESC' );
+
+               $join_conds = array();
+
+               ChangeTags::modifyDisplayQuery(
+                       $tables,
                        $fields,
-                       array( 'ar_namespace' => $this->title->getNamespace(),
-                               'ar_title' => $this->title->getDBkey() ),
+                       $conds,
+                       $join_conds,
+                       $options
+               );
+
+               $res = $dbr->select( $tables,
+                       $fields,
+                       $conds,
                        __METHOD__,
-                       array( 'ORDER BY' => 'ar_timestamp DESC' ) );
+                       $options,
+                       $join_conds
+               );
 
                return $dbr->resultObject( $res );
        }
@@ -791,7 +809,7 @@ class SpecialUndelete extends SpecialPage {
                $out->addHTML(
                        Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
                                Xml::fieldset( $this->msg( 'undelete-search-box' )->text() ) .
-                               Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
+                               Html::hidden( 'title', $this->getPageTitle()->getPrefixedDBkey() ) .
                                Html::rawElement(
                                        'label',
                                        array( 'for' => 'prefix' ),
@@ -831,7 +849,7 @@ class SpecialUndelete extends SpecialPage {
 
                $out->addWikiMsg( 'undeletepagetext', $this->getLanguage()->formatNum( $result->numRows() ) );
 
-               $undelete = $this->getTitle();
+               $undelete = $this->getPageTitle();
                $out->addHTML( "<ul>\n" );
                foreach ( $result as $row ) {
                        $title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
@@ -914,7 +932,7 @@ class SpecialUndelete extends SpecialPage {
                }
 
                $link = Linker::linkKnown(
-                       $this->getTitle( $this->mTargetObj->getPrefixedDBkey() ),
+                       $this->getPageTitle( $this->mTargetObj->getPrefixedDBkey() ),
                        htmlspecialchars( $this->mTargetObj->getPrefixedText() )
                );
 
@@ -997,7 +1015,7 @@ class SpecialUndelete extends SpecialPage {
                                        'style' => 'clear: both' ) ) .
                                Xml::openElement( 'form', array(
                                        'method' => 'post',
-                                       'action' => $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) ) ) ) .
+                                       'action' => $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) ) ) ) .
                                Xml::element( 'input', array(
                                        'type' => 'hidden',
                                        'name' => 'target',
@@ -1032,26 +1050,19 @@ class SpecialUndelete extends SpecialPage {
 
                $diffEngine = $currentRev->getContentHandler()->createDifferenceEngine( $diffContext );
                $diffEngine->showDiffStyle();
-               $this->getOutput()->addHTML( "<div>" .
-                       "<table style='width: 98%;' cellpadding='0' cellspacing='4' class='diff'>" .
-                       "<col class='diff-marker' />" .
-                       "<col class='diff-content' />" .
-                       "<col class='diff-marker' />" .
-                       "<col class='diff-content' />" .
-                       "<tr>" .
-                       "<td colspan='2' style='width: 50%; text-align: center' class='diff-otitle'>" .
-                       $this->diffHeader( $previousRev, 'o' ) .
-                       "</td>\n" .
-                       "<td colspan='2' style='width: 50%;  text-align: center' class='diff-ntitle'>" .
-                       $this->diffHeader( $currentRev, 'n' ) .
-                       "</td>\n" .
-                       "</tr>" .
-                       $diffEngine->generateContentDiffBody(
-                               $previousRev->getContent( Revision::FOR_THIS_USER, $this->getUser() ),
-                               $currentRev->getContent( Revision::FOR_THIS_USER, $this->getUser() ) ) .
-                       "</table>" .
-                       "</div>\n"
+
+               $formattedDiff = $diffEngine->generateContentDiffBody(
+                       $previousRev->getContent( Revision::FOR_THIS_USER, $this->getUser() ),
+                       $currentRev->getContent( Revision::FOR_THIS_USER, $this->getUser() )
                );
+
+               $formattedDiff = $diffEngine->addHeader(
+                       $formattedDiff,
+                       $this->diffHeader( $previousRev, 'o' ),
+                       $this->diffHeader( $currentRev, 'n' )
+               );
+
+               $this->getOutput()->addHTML( "<div>$formattedDiff</div>\n" );
        }
 
        /**
@@ -1063,7 +1074,7 @@ class SpecialUndelete extends SpecialPage {
                $isDeleted = !( $rev->getId() && $rev->getTitle() );
                if ( $isDeleted ) {
                        /// @todo FIXME: $rev->getTitle() is null for deleted revs...?
-                       $targetPage = $this->getTitle();
+                       $targetPage = $this->getPageTitle();
                        $targetQuery = array(
                                'target' => $this->mTargetObj->getPrefixedText(),
                                'timestamp' => wfTimestamp( TS_MW, $rev->getTimestamp() )
@@ -1083,6 +1094,18 @@ class SpecialUndelete extends SpecialPage {
                        $rdel = " $rdel";
                }
 
+               $minor = $rev->isMinor() ? ChangesList::flag( 'minor' ) : '';
+
+               $tags = wfGetDB( DB_SLAVE )->selectField(
+                       'tag_summary',
+                       'ts_tags',
+                       array( 'ts_rev_id' => $rev->getId() ),
+                       __METHOD__
+               );
+               $tagSummary = ChangeTags::formatSummaryRow( $tags, 'deleteddiff' );
+
+               // FIXME This is reimplementing DifferenceEngine#getRevisionHeader
+               // and partially #showDiffPage, but worse
                return '<div id="mw-diff-' . $prefix . 'title1"><strong>' .
                        Linker::link(
                                $targetPage,
@@ -1100,7 +1123,10 @@ class SpecialUndelete extends SpecialPage {
                        Linker::revUserTools( $rev ) . '<br />' .
                        '</div>' .
                        '<div id="mw-diff-' . $prefix . 'title3">' .
-                       Linker::revComment( $rev ) . $rdel . '<br />' .
+                       $minor . Linker::revComment( $rev ) . $rdel . '<br />' .
+                       '</div>' .
+                       '<div id="mw-diff-' . $prefix . 'title5">' .
+                       $tagSummary[0] . '<br />' .
                        '</div>';
        }
 
@@ -1119,7 +1145,7 @@ class SpecialUndelete extends SpecialPage {
                $out->addHTML(
                        Xml::openElement( 'form', array(
                                        'method' => 'POST',
-                                       'action' => $this->getTitle()->getLocalURL( array(
+                                       'action' => $this->getPageTitle()->getLocalURL( array(
                                                'target' => $this->mTarget,
                                                'file' => $key,
                                                'token' => $user->getEditToken( $key ),
@@ -1207,7 +1233,7 @@ class SpecialUndelete extends SpecialPage {
                }
 
                if ( $this->mAllowed ) {
-                       $action = $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) );
+                       $action = $this->getPageTitle()->getLocalURL( array( 'action' => 'submit' ) );
                        # Start the form here
                        $top = Xml::openElement(
                                'form',
@@ -1338,7 +1364,7 @@ class SpecialUndelete extends SpecialPage {
                // Build page & diff links...
                $user = $this->getUser();
                if ( $this->mCanView ) {
-                       $titleObj = $this->getTitle();
+                       $titleObj = $this->getPageTitle();
                        # Last link
                        if ( !$rev->userCan( Revision::DELETED_TEXT, $this->getUser() ) ) {
                                $pageLink = htmlspecialchars( $this->getLanguage()->userTimeAndDate( $ts, $user ) );
@@ -1367,6 +1393,9 @@ class SpecialUndelete extends SpecialPage {
                // User links
                $userLink = Linker::revUserTools( $rev );
 
+               // Minor edit
+               $minor = $rev->isMinor() ? ChangesList::flag( 'minor' ) : '';
+
                // Revision text size
                $size = $row->ar_len;
                if ( !is_null( $size ) ) {
@@ -1376,14 +1405,21 @@ class SpecialUndelete extends SpecialPage {
                // Edit summary
                $comment = Linker::revComment( $rev );
 
+               // Tags
+               $attribs = array();
+               list( $tagSummary, $classes ) = ChangeTags::formatSummaryRow( $row->ts_tags, 'deletedhistory' );
+               if ( $classes ) {
+                       $attribs['class'] = implode( ' ', $classes );
+               }
+
                // Revision delete links
                $revdlink = Linker::getRevDeleteLink( $user, $rev, $this->mTargetObj );
 
-               $revisionRow = $this->msg( 'undelete-revisionrow' )
-                       ->rawParams( $checkBox, $revdlink, $last, $pageLink, $userLink, $revTextSize, $comment )
+               $revisionRow = $this->msg( 'undelete-revision-row' )
+                       ->rawParams( $checkBox, $revdlink, $last, $pageLink, $userLink, $minor, $revTextSize, $comment, $tagSummary )
                        ->escaped();
 
-               return "<li>$revisionRow</li>";
+               return Xml::tags( 'li', $attribs, $revisionRow ) . "\n";
        }
 
        private function formatFileRow( $row ) {
@@ -1394,7 +1430,7 @@ class SpecialUndelete extends SpecialPage {
                if ( $this->mAllowed && $row->fa_storage_key ) {
                        $checkBox = Xml::check( 'fileid' . $row->fa_id );
                        $key = urlencode( $row->fa_storage_key );
-                       $pageLink = $this->getFileLink( $file, $this->getTitle(), $ts, $key );
+                       $pageLink = $this->getFileLink( $file, $this->getPageTitle(), $ts, $key );
                } else {
                        $checkBox = '';
                        $pageLink = $this->getLanguage()->userTimeAndDate( $ts, $user );
index 0700c49..27ba78e 100644 (file)
@@ -220,7 +220,7 @@ class SpecialUpload extends SpecialPage {
        protected function getUploadForm( $message = '', $sessionKey = '', $hideIgnoreWarning = false ) {
                # Initialize form
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new UploadForm( array(
                        'watch' => $this->getWatchCheck(),
                        'forreupload' => $this->mForReUpload,
@@ -328,10 +328,10 @@ class SpecialUpload extends SpecialPage {
                # mDestWarningAck is set when some javascript has shown the warning
                # to the user. mForReUpload is set when the user clicks the "upload a
                # new version" link.
-               if ( !$warnings || ( count( $warnings ) == 1 &&
-                       isset( $warnings['exists'] ) &&
-                       ( $this->mDestWarningAck || $this->mForReUpload ) ) )
-               {
+               if ( !$warnings || ( count( $warnings ) == 1
+                       && isset( $warnings['exists'] )
+                       && ( $this->mDestWarningAck || $this->mForReUpload ) )
+               {
                        return false;
                }
 
@@ -348,9 +348,14 @@ class SpecialUpload extends SpecialPage {
                        } elseif ( $warning == 'duplicate' ) {
                                $msg = $this->getDupeWarning( $args );
                        } elseif ( $warning == 'duplicate-archive' ) {
-                               $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate',
-                                               Title::makeTitle( NS_FILE, $args )->getPrefixedText() )->parse()
-                                       . "</li>\n";
+                               if ( $args === '' ) {
+                                       $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate-notitle' )->parse()
+                                               . "</li>\n";
+                               } else {
+                                       $msg = "\t<li>" . $this->msg( 'file-deleted-duplicate',
+                                                       Title::makeTitle( NS_FILE, $args )->getPrefixedText() )->parse()
+                                               . "</li>\n";
+                               }
                        } else {
                                if ( $args === true ) {
                                        $args = array();
@@ -1107,10 +1112,8 @@ class UploadSourceField extends HTMLTextField {
         * @return string
         */
        function getLabelHtml( $cellAttributes = array() ) {
-               $id = $this->mParams['id'];
-               $label = Html::rawElement( 'label', array( 'for' => $id ), $this->mLabel );
-
                if ( !empty( $this->mParams['radio'] ) ) {
+                       $id = "wpSourceType{$this->mParams['upload-type']}";
                        $attribs = array(
                                'name' => 'wpSourceType',
                                'type' => 'radio',
@@ -1120,9 +1123,12 @@ class UploadSourceField extends HTMLTextField {
                        if ( !empty( $this->mParams['checked'] ) ) {
                                $attribs['checked'] = 'checked';
                        }
+                       $label = Html::rawElement( 'label', array( 'for' => $id ), $this->mLabel );
                        $label .= Html::element( 'input', $attribs );
+               } else {
+                       $id = $this->mParams['id'];
+                       $label = Html::rawElement( 'label', array( 'for' => $id ), $this->mLabel );
                }
-
                return Html::rawElement( 'td', array( 'class' => 'mw-label' ) + $cellAttributes, $label );
        }
 
index 1373df1..37bfa39 100644 (file)
@@ -346,7 +346,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                // this design is extremely dubious, but supposedly HTMLForm is our standard now?
 
                $context = new DerivativeContext( $this->getContext() );
-               $context->setTitle( $this->getTitle() ); // Remove subpage
+               $context->setTitle( $this->getPageTitle() ); // Remove subpage
                $form = new HTMLForm( array(
                        'Clear' => array(
                                'type' => 'hidden',
@@ -362,7 +362,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
 
                // show the files + form, if there are any, or just say there are none
                $refreshHtml = Html::element( 'a',
-                       array( 'href' => $this->getTitle()->getLocalURL() ),
+                       array( 'href' => $this->getPageTitle()->getLocalURL() ),
                        $this->msg( 'uploadstash-refresh' )->text() );
                $files = $this->stash->listFiles();
                if ( $files && count( $files ) ) {
@@ -372,7 +372,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
                                // TODO: Use Linker::link or even construct the list in plain wikitext
                                $fileListItemsHtml .= Html::rawElement( 'li', array(),
                                        Html::element( 'a', array( 'href' =>
-                                               $this->getTitle( "file/$file" )->getLocalURL() ), $file )
+                                               $this->getPageTitle( "file/$file" )->getLocalURL() ), $file )
                                );
                        }
                        $this->getOutput()->addHtml( Html::rawElement( 'ul', array(), $fileListItemsHtml ) );
index 9764c9f..8e5ef58 100644 (file)
@@ -318,7 +318,7 @@ class LoginForm extends SpecialPage {
                        # Confirm that the account was created
                        $out->setPageTitle( $this->msg( 'accountcreated' ) );
                        $out->addWikiMsg( 'accountcreatedtext', $u->getName() );
-                       $out->addReturnTo( $this->getTitle() );
+                       $out->addReturnTo( $this->getPageTitle() );
                        wfRunHooks( 'AddNewAccount', array( $u, false ) );
                        $u->addNewUserLogEntry( 'create2', $this->mReason );
                }
@@ -390,7 +390,7 @@ class LoginForm extends SpecialPage {
                }
 
                # Include checks that will include GlobalBlocking (Bug 38333)
-               $permErrors = $this->getTitle()->getUserPermissionsErrors( 'createaccount', $currentUser, true );
+               $permErrors = $this->getPageTitle()->getUserPermissionsErrors( 'createaccount', $currentUser, true );
                if ( count( $permErrors ) ) {
                                throw new PermissionsError( 'createaccount', $permErrors );
                }
@@ -507,9 +507,12 @@ class LoginForm extends SpecialPage {
                $u->setOption( 'rememberpassword', $this->mRemember ? 1 : 0 );
                $u->saveSettings();
 
-               # Update user count
+               // Update user count
                DeferredUpdates::addUpdate( new SiteStatsUpdate( 0, 0, 0, 0, 1 ) );
 
+               // Watch user's userpage and talk page
+               $u->addWatch( $u->getUserPage(), WatchedItem::IGNORE_USER_RIGHTS );
+
                return Status::newGood( $u );
        }
 
@@ -853,7 +856,9 @@ class LoginForm extends SpecialPage {
        function resetLoginForm( $error ) {
                $this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $error ) );
                $reset = new SpecialChangePassword();
-               $reset->setContext( $this->getContext() );
+               $derivative = new DerivativeContext( $this->getContext() );
+               $derivative->setTitle( $reset->getPageTitle() );
+               $reset->setContext( $derivative );
                $reset->execute( null );
        }
 
@@ -977,14 +982,23 @@ class LoginForm extends SpecialPage {
                # haven't bothered to log out before trying to create an account to
                # evade it, but we'll leave that to their guilty conscience to figure
                # out.
+               $errorParams = array(
+                       $block->getTarget(),
+                       $block->mReason ? $block->mReason : $this->msg( 'blockednoreason' )->text(),
+                       $block->getByName()
+               );
+
+               if ( $block->getType() === Block::TYPE_RANGE ) {
+                       $errorMessage = 'cantcreateaccount-range-text';
+                       $errorParams[] = $this->getRequest()->getIP();
+               } else {
+                       $errorMessage = 'cantcreateaccount-text';
+               }
+
                throw new ErrorPageError(
                        'cantcreateaccounttitle',
-                       'cantcreateaccount-text',
-                       array(
-                               $block->getTarget(),
-                               $block->mReason ? $block->mReason : $this->msg( 'blockednoreason' )->text(),
-                               $block->getByName()
-                       )
+                       $errorMessage,
+                       $errorParams
                );
        }
 
@@ -1063,7 +1077,7 @@ class LoginForm extends SpecialPage {
                global $wgAuth, $wgEmailConfirmToEdit, $wgCookieExpiration;
                global $wgSecureLogin, $wgPasswordResetRoutes;
 
-               $titleObj = $this->getTitle();
+               $titleObj = $this->getPageTitle();
                $user = $this->getUser();
                $out = $this->getOutput();
 
@@ -1091,33 +1105,45 @@ class LoginForm extends SpecialPage {
                        }
                }
 
-               if ( $this->mType == 'signup' ) {
-                       $template = new UsercreateTemplate();
+               // Generic styles and scripts for both login and signup form
+               $out->addModuleStyles( array(
+                       'mediawiki.ui',
+                       'mediawiki.ui.button',
+                       'mediawiki.special.userlogin.common.styles'
+               ) );
+               $out->addModules( array(
+                       'mediawiki.special.userlogin.common.js'
+               ) );
 
-                       $out->addModuleStyles( array(
-                               'mediawiki.ui',
-                               'mediawiki.special.createaccount'
-                       ) );
+               if ( $this->mType == 'signup' ) {
                        // XXX hack pending RL or JS parse() support for complex content messages
                        // https://bugzilla.wikimedia.org/show_bug.cgi?id=25349
                        $out->addJsConfigVars( 'wgCreateacctImgcaptchaHelp',
                                $this->msg( 'createacct-imgcaptcha-help' )->parse() );
+
+                       // Additional styles and scripts for signup form
                        $out->addModules( array(
-                               'mediawiki.special.createaccount.js'
+                               'mediawiki.special.userlogin.signup.js'
+                       ) );
+                       $out->addModuleStyles( array(
+                               'mediawiki.special.userlogin.signup.styles'
                        ) );
+
+                       $template = new UsercreateTemplate();
+
                        // Must match number of benefits defined in messages
                        $template->set( 'benefitCount', 3 );
 
                        $q = 'action=submitlogin&type=signup';
                        $linkq = 'type=login';
                } else {
-                       $template = new UserloginTemplate();
-
+                       // Additional styles for login form
                        $out->addModuleStyles( array(
-                               'mediawiki.ui',
-                               'mediawiki.special.userlogin'
+                               'mediawiki.special.userlogin.login.styles'
                        ) );
 
+                       $template = new UserloginTemplate();
+
                        $q = 'action=submitlogin&type=login';
                        $linkq = 'type=signup';
                }
@@ -1272,7 +1298,7 @@ class LoginForm extends SpecialPage {
         */
        public static function setLoginToken() {
                global $wgRequest;
-               // Generate a token directly instead of using $user->editToken()
+               // Generate a token directly instead of using $user->getEditToken()
                // because the latter reuses $_SESSION['wsEditToken']
                $wgRequest->setSessionData( 'wsLoginToken', MWCryptRand::generateHex( 32 ) );
        }
@@ -1407,7 +1433,7 @@ class LoginForm extends SpecialPage {
                $attr['lang'] = $attr['hreflang'] = $targetLanguage->getHtmlCode();
 
                return Linker::linkKnown(
-                       $this->getTitle(),
+                       $this->getPageTitle(),
                        htmlspecialchars( $text ),
                        $attr,
                        $query
index 4501736..014408e 100644 (file)
@@ -174,7 +174,7 @@ class UserrightsPage extends SpecialPage {
        }
 
        function getSuccessURL() {
-               return $this->getTitle( $this->mTarget )->getFullURL( array( 'success' => 1 ) );
+               return $this->getPageTitle( $this->mTarget )->getFullURL( array( 'success' => 1 ) );
        }
 
        /**
@@ -405,7 +405,7 @@ class UserrightsPage extends SpecialPage {
                global $wgScript;
                $this->getOutput()->addHTML(
                        Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'name' => 'uluser', 'id' => 'mw-userrights-form1' ) ) .
-                       Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+                       Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() ) .
                        Xml::fieldset( $this->msg( 'userrights-lookup-user' )->text() ) .
                        Xml::inputLabel( $this->msg( 'userrights-user-editname' )->text(), 'user', 'username', 30, str_replace( '_', ' ', $this->mTarget ), array( 'autofocus' => true ) ) . ' ' .
                        Xml::submitButton( $this->msg( 'editusergroup' )->text() ) .
@@ -490,7 +490,7 @@ class UserrightsPage extends SpecialPage {
                );
 
                $this->getOutput()->addHTML(
-                       Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalURL(), 'name' => 'editGroup', 'id' => 'mw-userrights-form2' ) ) .
+                       Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getPageTitle()->getLocalURL(), 'name' => 'editGroup', 'id' => 'mw-userrights-form2' ) ) .
                        Html::hidden( 'user', $this->mTarget ) .
                        Html::hidden( 'wpEditToken', $this->getUser()->getEditToken( $this->mTarget ) ) .
                        Html::hidden( 'conflictcheck-originalgroups', implode( ',', $user->getGroups() ) ) . // Conflict detection
index 5ba785f..8d7bd54 100644 (file)
@@ -48,41 +48,88 @@ class SpecialVersion extends SpecialPage {
         * main()
         */
        public function execute( $par ) {
-               global $wgSpecialVersionShowHooks, $IP;
+               global $IP, $wgExtensionCredits;
 
                $this->setHeaders();
                $this->outputHeader();
                $out = $this->getOutput();
                $out->allowClickjacking();
 
-               if ( $par !== 'Credits' ) {
-                       $text =
-                               $this->getMediaWikiCredits() .
-                               $this->softwareInformation() .
-                               $this->getEntryPointInfo() .
-                               $this->getExtensionCredits();
-                       if ( $wgSpecialVersionShowHooks ) {
-                               $text .= $this->getWgHooks();
+               // Explode the sub page information into useful bits
+               $parts = explode( '/', (string)$par );
+               if ( isset( $parts[1] ) ) {
+                       $extName = str_replace( '_', ' ', $parts[1] );
+                       $extNode = null;
+                       // Find it!
+                       foreach ( $wgExtensionCredits as $group => $extensions ) {
+                               foreach ( $extensions as $ext ) {
+                                       if ( isset( $ext['name'] ) && ( $ext['name'] === $extName ) ) {
+                                               $extNode = &$ext;
+                                               break 2;
+                                       }
+                               }
                        }
-
-                       $out->addWikiText( $text );
-                       $out->addHTML( $this->IPInfo() );
-
-                       if ( $this->getRequest()->getVal( 'easteregg' ) ) {
-                               // TODO: put something interesting here
+                       if ( !$extNode ) {
+                               $out->setStatusCode( 404 );
                        }
                } else {
-                       // Credits sub page
-
-                       // Header
-                       $out->addHTML( wfMessage( 'version-credits-summary' )->parseAsBlock() );
+                       $extName = 'MediaWiki';
+               }
 
-                       $wikiText = file_get_contents( $IP . '/CREDITS' );
+               // Now figure out what to do
+               switch ( strtolower( $parts[0] ) ) {
+                       case 'credits':
+                               $wikiText = '{{int:version-credits-not-found}}';
+                               if ( $extName === 'MediaWiki' ) {
+                                       $wikiText = file_get_contents( $IP . '/CREDITS' );
+                               } elseif ( ( $extNode !== null ) && isset( $extNode['path'] ) ) {
+                                       $file = $this->getExtAuthorsFileName( dirname( $extNode['path'] ) );
+                                       if ( $file ) {
+                                               $wikiText = file_get_contents( $file );
+                                       }
+                               }
 
-                       // Take everything from the first section onwards, to remove the (not localized) header
-                       $wikiText = substr( $wikiText, strpos( $wikiText, '==' ) );
+                               $out->setPageTitle( $this->msg( 'version-credits-title', $extName ) );
+                               $out->addWikiText( $wikiText );
+                               break;
+
+                       case 'license':
+                               $wikiText = '{{int:version-license-not-found}}';
+                               if ( $extName === 'MediaWiki' ) {
+                                       $wikiText = file_get_contents( $IP . '/COPYING' );
+                               } elseif ( ( $extNode !== null ) && isset( $extNode['path'] ) ) {
+                                       $file = $this->getExtLicenseFileName( dirname( $extNode['path'] ) );
+                                       if ( $file ) {
+                                               $wikiText = file_get_contents( $file );
+                                               if ( !isset( $extNode['license-name'] ) ) {
+                                                       // If the developer did not explicitly set license-name they probably
+                                                       // are unaware that we're now sucking this file in and thus it's probably
+                                                       // not wikitext friendly.
+                                                       $wikiText = "<pre>$wikiText</pre>";
+                                               }
+                                       }
+                               }
 
-                       $out->addWikiText( $wikiText );
+                               $out->setPageTitle( $this->msg( 'version-license-title', $extName ) );
+                               $out->addWikiText( $wikiText );
+                               break;
+
+                       default:
+                               $out->addModules( 'mediawiki.special.version' );
+                               $out->addWikiText(
+                                       $this->getMediaWikiCredits() .
+                                       $this->softwareInformation() .
+                                       $this->getEntryPointInfo()
+                               );
+                               $out->addHtml(
+                                       $this->getExtensionCredits() .
+                                       $this->getParserTags() .
+                                       $this->getParserFunctionHooks()
+                               );
+                               $out->addWikiText( $this->getWgHooks() );
+                               $out->addHTML( $this->IPInfo() );
+
+                               break;
                }
        }
 
@@ -298,7 +345,7 @@ class SpecialVersion extends SpecialPage {
 
                $gitHeadCommitDate = $gitInfo->getHeadCommitDate();
                if ( $gitHeadCommitDate ) {
-                       $shortSHA1 .= "<br/>" . $wgLang->timeanddate( $gitHeadCommitDate, true );
+                       $shortSHA1 .= Html::element( 'br' ) . $wgLang->timeanddate( $gitHeadCommitDate, true );
                }
 
                return self::getwgVersionLinked() . " $shortSHA1";
@@ -355,9 +402,9 @@ class SpecialVersion extends SpecialPage {
         * @return String: Wikitext
         */
        function getExtensionCredits() {
-               global $wgExtensionCredits, $wgExtensionFunctions, $wgParser;
+               global $wgExtensionCredits;
 
-               if ( !count( $wgExtensionCredits ) && !count( $wgExtensionFunctions ) ) {
+               if ( !count( $wgExtensionCredits ) ) {
                        return '';
                }
 
@@ -393,24 +440,63 @@ class SpecialVersion extends SpecialPage {
                // We want the 'other' type to be last in the list.
                $out .= $this->getExtensionCategory( 'other', $extensionTypes['other'] );
 
+               $out .= Xml::closeElement( 'table' );
+
+               return $out;
+       }
+
+       /**
+        * Obtains a list of installed parser tags and the associated H2 header
+        *
+        * @return string HTML output
+        */
+       protected function getParserTags() {
+               global $wgParser;
+
                $tags = $wgParser->getTags();
-               $cnt = count( $tags );
 
-               if ( $cnt ) {
-                       for ( $i = 0; $i < $cnt; ++$i ) {
-                               $tags[$i] = "&lt;{$tags[$i]}&gt;";
-                       }
-                       $out .= $this->openExtType( $this->msg( 'version-parser-extensiontags' )->text(), 'parser-tags' );
-                       $out .= '<tr><td colspan="4">' . $this->listToText( $tags ) . "</td></tr>\n";
+               if ( count( $tags ) ) {
+                       $out = Html::rawElement(
+                               'h2',
+                               array( 'class' => 'mw-headline' ),
+                               Linker::makeExternalLink(
+                                       '//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Tag_extensions',
+                                       $this->msg( 'version-parser-extensiontags' )->parse(),
+                                       false /* msg()->parse() already escapes */
+                               )
+                       );
+
+                       array_walk( $tags, function( &$value ) {
+                               $value = '&lt;' . htmlentities( $value ) . '&gt;';
+                       } );
+                       $out .= $this->listToText( $tags );
+               } else {
+                       $out = '';
                }
 
+               return $out;
+       }
+
+       /**
+        * Obtains a list of installed parser function hooks and the associated H2 header
+        *
+        * @return string HTML output
+        */
+       protected function getParserFunctionHooks() {
+               global $wgParser;
+
                $fhooks = $wgParser->getFunctionHooks();
                if ( count( $fhooks ) ) {
-                       $out .= $this->openExtType( $this->msg( 'version-parser-function-hooks' )->text(), 'parser-function-hooks' );
-                       $out .= '<tr><td colspan="4">' . $this->listToText( $fhooks ) . "</td></tr>\n";
-               }
+                       $out = Html::rawElement( 'h2', array( 'class' => 'mw-headline' ) , Linker::makeExternalLink(
+                               '//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Parser_functions',
+                               $this->msg( 'version-parser-function-hooks' )->parse(),
+                               false /* msg()->parse() already escapes */
+                       ) );
 
-               $out .= Xml::closeElement( 'table' );
+                       $out .= $this->listToText( $fhooks );
+               } else {
+                       $out = '';
+               }
 
                return $out;
        }
@@ -460,63 +546,123 @@ class SpecialVersion extends SpecialPage {
        }
 
        /**
-        * Creates and formats the credits for a single extension and returns this.
+        * Creates and formats a version line for a single extension.
+        *
+        * Information for five columns will be created. Parameters required in the
+        * $extension array for part rendering are indicated in ()
+        *  - The name of (name), and URL link to (url), the extension
+        *  - Official version number (version) and if available version control system
+        *    revision (path), link, and date
+        *  - If available the short name of the license (license-name) and a linke
+        *    to ((LICENSE)|(COPYING))(\.txt)? if it exists.
+        *  - Description of extension (descriptionmsg or description)
+        *  - List of authors (author) and link to a ((AUTHORS)|(CREDITS))(\.txt)? file if it exists
         *
         * @param $extension Array
         *
-        * @return string
+        * @return string raw HTML
         */
        function getCreditsForExtension( array $extension ) {
-               global $wgLang;
+               $out = $this->getOutput();
+
+               // We must obtain the information for all the bits and pieces!
+               // ... such as extension names and links
+               $extensionName = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
+               if ( isset( $extension['url'] ) ) {
+                       $extensionNameLink = Linker::makeExternalLink(
+                               $extension['url'],
+                               $extensionName,
+                               true,
+                               '',
+                               array( 'class' => 'mw-version-ext-name' )
+                       );
+               } else {
+                       $extensionNameLink = $extensionName;
+               }
 
-               $name = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
+               // ... and the version information
+               // If the extension path is set we will check that directory for GIT and SVN
+               // metadata in an attempt to extract date and vcs commit metadata.
+               $canonicalVersion = '&ndash;';
+               $extensionPath = null;
+               $vcsVersion = null;
+               $vcsLink = null;
+               $vcsDate = null;
 
-               $vcsText = false;
+               if ( isset( $extension['version'] ) ) {
+                       $canonicalVersion = $out->parseInline( $extension['version'] );
+               }
 
                if ( isset( $extension['path'] ) ) {
-                       $gitInfo = new GitInfo( dirname( $extension['path'] ) );
-                       $gitHeadSHA1 = $gitInfo->getHeadSHA1();
-                       if ( $gitHeadSHA1 !== false ) {
-                               $vcsText = '(' . substr( $gitHeadSHA1, 0, 7 ) . ')';
-                               $gitViewerUrl = $gitInfo->getHeadViewUrl();
-                               if ( $gitViewerUrl !== false ) {
-                                       $vcsText = "[$gitViewerUrl $vcsText]";
-                               }
-                               $gitHeadCommitDate = $gitInfo->getHeadCommitDate();
-                               if ( $gitHeadCommitDate ) {
-                                       $vcsText .= "<br/>" . $wgLang->timeanddate( $gitHeadCommitDate, true );
-                               }
+                       $extensionPath = dirname( $extension['path'] );
+                       $gitInfo = new GitInfo( $extensionPath );
+                       $vcsVersion = $gitInfo->getHeadSHA1();
+                       if ( $vcsVersion !== false ) {
+                               $vcsVersion = substr( $vcsVersion, 0, 7 );
+                               $vcsLink = $gitInfo->getHeadViewUrl();
+                               $vcsDate = $gitInfo->getHeadCommitDate();
                        } else {
-                               $svnInfo = self::getSvnInfo( dirname( $extension['path'] ) );
-                               # Make subversion text/link.
+                               $svnInfo = self::getSvnInfo( $extensionPath );
                                if ( $svnInfo !== false ) {
-                                       $directoryRev = isset( $svnInfo['directory-rev'] ) ? $svnInfo['directory-rev'] : null;
-                                       $vcsText = $this->msg( 'version-svn-revision', $directoryRev, $svnInfo['checkout-rev'] )->text();
-                                       $vcsText = isset( $svnInfo['viewvc-url'] ) ? '[' . $svnInfo['viewvc-url'] . " $vcsText]" : $vcsText;
+                                       $vcsVersion = $this->msg( 'version-svn-revision', $svnInfo['checkout-rev'] )->text();
+                                       $vcsLink = isset( $svnInfo['viewvc-url'] ) ? $svnInfo['viewvc-url'] : '';
                                }
                        }
                }
 
-               # Make main link (or just the name if there is no URL).
-               if ( isset( $extension['url'] ) ) {
-                       $mainLink = "[{$extension['url']} $name]";
-               } else {
-                       $mainLink = $name;
+               $versionString = Html::rawElement( 'span', array( 'class' => 'mw-version-ext-version' ), $canonicalVersion );
+               if ( $vcsVersion ) {
+                       if ( $vcsLink ) {
+                               $vcsVerString = Linker::makeExternalLink(
+                                       $vcsLink,
+                                       $this->msg( 'version-version', $vcsVersion ),
+                                       true,
+                                       '',
+                                       array( 'class' => 'mw-version-ext-vcs-version' )
+                               );
+                       } else {
+                               $vcsVerString = Html::element( 'span',
+                                       array( 'class' => 'mw-version-ext-vcs-version'),
+                                       "({$vcsVersion})"
+                               );
+                       }
+                       $versionString .= " {$vcsVerString}";
+
+                       if ( $vcsDate ) {
+                               $vcsTimeString = Html::element( 'span',
+                                               array( 'class' => 'mw-version-ext-vcs-timestamp'),
+                                               $this->getLanguage()->timeanddate( $vcsDate )
+                                       );
+                               $versionString .= " {$vcsTimeString}";
+                       }
+                       $versionString = Html::rawElement( 'span',
+                               array( 'class' => 'mw-version-ext-meta-version' ),
+                               $versionString
+                       );
                }
 
-               if ( isset( $extension['version'] ) ) {
-                       $versionText = '<span class="mw-version-ext-version">' .
-                               $this->msg( 'version-version', $extension['version'] )->text() .
-                               '</span>';
-               } else {
-                       $versionText = '';
+               // ... and license information; if a license file exists we
+               // will link to it
+               $licenseLink = '';
+               if ( isset( $extension['license-name'] ) ) {
+                       $licenseLink = Linker::link(
+                               $this->getPageTitle( 'License/' . $extensionName ),
+                               $out->parseInline( $extension['license-name'] ),
+                               array( 'class' => 'mw-version-ext-license' )
+                       );
+               } elseif ( $this->getExtLicenseFileName( $extensionPath ) ) {
+                       $licenseLink = Linker::link(
+                               $this->getPageTitle( 'License/' . $extensionName ),
+                               $this->msg( 'version-ext-license' ),
+                               array( 'class' => 'mw-version-ext-license' )
+                       );
                }
 
-               # Make description text.
-               $description = isset( $extension['description'] ) ? $extension['description'] : '';
-
+               // ... and generate the description; which can be a parameterized l10n message
+               // in the form array( <msgname>, <parameter>, <parameter>... ) or just a straight
+               // up string
                if ( isset( $extension['descriptionmsg'] ) ) {
-                       # Look for a localized description.
+                       // Localized description of extension
                        $descriptionMsg = $extension['descriptionmsg'];
 
                        if ( is_array( $descriptionMsg ) ) {
@@ -527,23 +673,34 @@ class SpecialVersion extends SpecialPage {
                        } else {
                                $description = $this->msg( $descriptionMsg )->text();
                        }
-               }
-
-               if ( $vcsText !== false ) {
-                       $extNameVer = "<tr>
-                               <td><em>$mainLink $versionText</em></td>
-                               <td><em>$vcsText</em></td>";
+               } elseif ( isset( $extension['description'] ) ) {
+                       // Non localized version
+                       $description = $out->parseInline( $extension['description'] );
                } else {
-                       $extNameVer = "<tr>
-                               <td colspan=\"2\"><em>$mainLink $versionText</em></td>";
+                       $description = '';
                }
+               $description = $out->parseInline( $description );
 
-               $author = isset( $extension['author'] ) ? $extension['author'] : array();
-               $extDescAuthor = "<td>$description</td>
-                       <td>" . $this->listAuthors( $author, false ) . "</td>
-                       </tr>\n";
+               // ... now get the authors for this extension
+               $authors = isset( $extension['author'] ) ? $extension['author'] : array();
+               $authors = $this->listAuthors( $authors, $extensionName, $extensionPath );
 
-               return $extNameVer . $extDescAuthor;
+               // Finally! Create the table
+               $html = Html::openElement( 'tr', array(
+                               'class' => 'mw-version-ext',
+                               'id' => "mw-version-ext-{$extensionName}"
+                       )
+               );
+
+               $html .= Html::rawElement( 'td', array(), $extensionNameLink );
+               $html .= Html::rawElement( 'td', array(), $versionString );
+               $html .= Html::rawElement( 'td', array(), $licenseLink );
+               $html .= Html::rawElement( 'td', array( 'class' => 'mw-version-ext-description' ), $description );
+               $html .= Html::rawElement( 'td', array( 'class' => 'mw-version-ext-authors' ), $authors );
+
+               $html .= Html::closeElement( 'td' );
+
+               return $html;
        }
 
        /**
@@ -552,40 +709,44 @@ class SpecialVersion extends SpecialPage {
         * @return String: wikitext
         */
        private function getWgHooks() {
-               global $wgHooks;
+               global $wgSpecialVersionShowHooks, $wgHooks;
 
-               if ( count( $wgHooks ) ) {
+               if ( $wgSpecialVersionShowHooks && count( $wgHooks ) ) {
                        $myWgHooks = $wgHooks;
                        ksort( $myWgHooks );
 
-                       $ret = Xml::element( 'h2', array( 'id' => 'mw-version-hooks' ), $this->msg( 'version-hooks' )->text() ) .
-                               Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-hooks' ) ) .
-                               "<tr>
-                                       <th>" . $this->msg( 'version-hook-name' )->text() . "</th>
-                                       <th>" . $this->msg( 'version-hook-subscribedby' )->text() . "</th>
-                               </tr>\n";
+                       $ret = array();
+                       $ret[] = '== {{int:version-hooks}} ==';
+                       $ret[] = Html::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-hooks' ) );
+                       $ret[] = Html::openElement( 'tr' );
+                       $ret[] = Html::element( 'th', array(), $this->msg( 'version-hook-name' )->text() );
+                       $ret[] = Html::element( 'th', array(), $this->msg( 'version-hook-subscribedby' )->text() );
+                       $ret[] = Html::closeElement( 'tr' );
 
                        foreach ( $myWgHooks as $hook => $hooks ) {
-                               $ret .= "<tr>
-                                               <td>$hook</td>
-                                               <td>" . $this->listToText( $hooks ) . "</td>
-                                       </tr>\n";
+                               $ret[] = Html::openElement( 'tr' );
+                               $ret[] = Html::element( 'td', array(), $hook );
+                               $ret[] = Html::element( 'td', array(), $this->listToText( $hooks ) );
+                               $ret[] = Html::closeElement( 'tr' );
                        }
 
-                       $ret .= Xml::closeElement( 'table' );
-                       return $ret;
+                       $ret[] = Html::closeElement( 'table' );
+
+                       return implode( "\n", $ret );
                } else {
                        return '';
                }
        }
 
        private function openExtType( $text, $name = null ) {
-               $opt = array( 'colspan' => 4 );
                $out = '';
 
+               $opt = array( 'colspan' => 5 );
                if ( $this->firstExtOpened ) {
                        // Insert a spacing line
-                       $out .= '<tr class="sv-space">' . Html::element( 'td', $opt ) . "</tr>\n";
+                       $out .= Html::rawElement( 'tr', array( 'class' => 'sv-space' ),
+                               Html::element( 'td', $opt )
+                       );
                }
                $this->firstExtOpened = true;
 
@@ -593,7 +754,22 @@ class SpecialVersion extends SpecialPage {
                        $opt['id'] = "sv-$name";
                }
 
-               $out .= "<tr>" . Xml::element( 'th', $opt, $text ) . "</tr>\n";
+               $out .= Html::rawElement( 'tr', array(),
+                       Html::element( 'th', $opt, $text )
+               );
+
+               $out .= Html::openElement( 'tr' );
+               $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+                       $this->msg( 'version-ext-colheader-name' )->text() );
+               $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+                       $this->msg( 'version-ext-colheader-version' )->text() );
+               $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+                       $this->msg( 'version-ext-colheader-license' )->text() );
+               $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+                       $this->msg( 'version-ext-colheader-description' )->text() );
+               $out .= Html::element( 'th', array( 'class' => 'mw-version-ext-col-label' ),
+                       $this->msg( 'version-ext-colheader-credits' )->text() );
+               $out .= Html::closeElement( 'tr' );
 
                return $out;
        }
@@ -611,23 +787,120 @@ class SpecialVersion extends SpecialPage {
        /**
         * Return a formatted unsorted list of authors
         *
+        * 'And Others'
+        *   If an item in the $authors array is '...' it is assumed to indicate an
+        *   'and others' string which will then be linked to an ((AUTHORS)|(CREDITS))(\.txt)?
+        *   file if it exists in $dir.
+        *
+        *   Similarly an entry ending with ' ...]' is assumed to be a link to an
+        *   'and others' page.
+        *
+        *   If no '...' string variant is found, but an authors file is found an
+        *   'and others' will be added to the end of the credits.
+        *
         * @param $authors mixed: string or array of strings
+        * @param $extName string: name of the extension for link creation
+        * @param $extDir  string: path to the extension root directory
+        *
         * @return String: HTML fragment
         */
-       function listAuthors( $authors ) {
+       function listAuthors( $authors, $extName, $extDir ) {
+               $hasOthers = false;
+
                $list = array();
                foreach ( (array)$authors as $item ) {
                        if ( $item == '...' ) {
-                               $list[] = $this->msg( 'version-poweredby-others' )->text();
+                               $hasOthers = true;
+
+                               if ( $this->getExtAuthorsFileName( $extDir ) ) {
+                                       $text = Linker::link(
+                                               $this->getPageTitle( "Credits/$extName" ),
+                                               $this->msg( 'version-poweredby-others' )->text()
+                                       );
+                               } else {
+                                       $text = $this->msg( 'version-poweredby-others' )->text();
+                               }
+                               $list[] = $text;
+
                        } elseif ( substr( $item, -5 ) == ' ...]' ) {
-                               $list[] = substr( $item, 0, -4 ) . $this->msg( 'version-poweredby-others' )->text() . "]";
+                               $hasOthers = true;
+                               $list[] = $this->getOutput()->parseInline(
+                                       substr( $item, 0, -4 ) . $this->msg( 'version-poweredby-others' )->text() . "]"
+                               );
+
                        } else {
-                               $list[] = $item;
+                               $list[] = $this->getOutput()->parseInline( $item );
                        }
                }
+
+               if ( !$hasOthers && $this->getExtAuthorsFileName( $extDir ) ) {
+                       $list[] = $text = Linker::link(
+                               $this->getPageTitle( "Credits/$extName" ),
+                               $this->msg( 'version-poweredby-others' )->text()
+                       );
+               }
+
                return $this->listToText( $list, false );
        }
 
+       /**
+        * Obtains the full path of an extensions authors or credits file if
+        * one exists.
+        *
+        * @param string $extDir: Path to the extensions root directory
+        *
+        * @since 1.23
+        *
+        * @return bool|string False if no such file exists, otherwise returns
+        * a path to it.
+        */
+       public static function getExtAuthorsFileName( $extDir ) {
+               if ( !$extDir ) {
+                       return false;
+               }
+
+               foreach ( scandir( $extDir ) as $file ) {
+                       $fullPath = $extDir . DIRECTORY_SEPARATOR . $file;
+                       if ( preg_match( '/^((AUTHORS)|(CREDITS))(\.txt)?$/', $file ) &&
+                               is_readable( $fullPath ) &&
+                               is_file( $fullPath )
+                       ) {
+                               return $fullPath;
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Obtains the full path of an extensions copying or license file if
+        * one exists.
+        *
+        * @param string $extDir: Path to the extensions root directory
+        *
+        * @since 1.23
+        *
+        * @return bool|string False if no such file exists, otherwise returns
+        * a path to it.
+        */
+       public static function getExtLicenseFileName( $extDir ) {
+               if ( !$extDir ) {
+                       return false;
+               }
+
+               foreach ( scandir( $extDir ) as $file ) {
+                       $fullPath = $extDir . DIRECTORY_SEPARATOR . $file;
+                       if ( preg_match( '/^((COPYING)|(LICENSE))(\.txt)?$/', $file ) &&
+                               is_readable( $fullPath ) &&
+                               is_file( $fullPath )
+                       ) {
+                               return $fullPath;
+                       }
+               }
+
+               return false;
+       }
+
        /**
         * Convert an array of items into a list for display.
         *
index d2ffdb9..c8ba4ac 100644 (file)
@@ -29,6 +29,7 @@
  * @ingroup SpecialPage
  */
 class WantedCategoriesPage extends WantedQueryPage {
+       private $currentCategoryCounts;
 
        function __construct( $name = 'Wantedcategories' ) {
                parent::__construct( $name );
@@ -48,6 +49,37 @@ class WantedCategoriesPage extends WantedQueryPage {
                );
        }
 
+       function preprocessResults( $db, $res ) {
+               parent::preprocessResults( $db, $res );
+
+               $this->currentCategoryCounts = array();
+
+               if ( !$res->numRows() || !$this->isCached() ) {
+                       return;
+               }
+
+               // Fetch (hopefully) up-to-date numbers of pages in each category.
+               // This should be fast enough as we limit the list to a reasonable length.
+
+               $allCategories = array();
+               foreach ( $res as $row ) {
+                       $allCategories[] = $row->title;
+               }
+
+               $categoryRes = $db->select(
+                       'category',
+                       array( 'cat_title', 'cat_pages' ),
+                       array( 'cat_title' => $allCategories ),
+                       __METHOD__
+               );
+               foreach ( $categoryRes as $row ) {
+                       $this->currentCategoryCounts[ $row->cat_title ] = $row->cat_pages;
+               }
+
+               // Back to start for display
+               $res->seek( 0 );
+       }
+
        /**
         * @param Skin $skin
         * @param object $result Result row
@@ -59,17 +91,37 @@ class WantedCategoriesPage extends WantedQueryPage {
                $nt = Title::makeTitle( $result->namespace, $result->title );
                $text = htmlspecialchars( $wgContLang->convert( $nt->getText() ) );
 
-               $plink = $this->isCached() ?
-                       Linker::link( $nt, $text ) :
-                       Linker::link(
+               if ( !$this->isCached() ) {
+                       // We can assume the freshest data
+                       $plink = Linker::link(
                                $nt,
                                $text,
                                array(),
                                array(),
                                array( 'broken' )
                        );
+                       $nlinks = $this->msg( 'nmembers' )->numParams( $result->value )->escaped();
+               } else {
+                       $plink = Linker::link( $nt, $text );
+
+                       $currentValue = isset( $this->currentCategoryCounts[ $result->title ] )
+                               ? $this->currentCategoryCounts[ $result->title ]
+                               : 0;
+
+                       // If the category has been created or emptied since the list was refreshed, strike it
+                       if ( $nt->isKnown() || $currentValue === 0 ) {
+                               $plink = "<del>$plink</del>";
+                       }
+
+                       // Show the current number of category entries if it changed
+                       if ( $currentValue !== $result->value ) {
+                               $nlinks = $this->msg( 'nmemberschanged' )
+                                       ->numParams( $result->value, $currentValue )->escaped();
+                       } else {
+                               $nlinks = $this->msg( 'nmembers' )->numParams( $result->value )->escaped();
+                       }
+               }
 
-               $nlinks = $this->msg( 'nmembers' )->numParams( $result->value )->escaped();
                return $this->getLanguage()->specialList( $plink, $nlinks );
        }
 
index 154825a..ac41340 100644 (file)
@@ -20,7 +20,7 @@
  * @file
  * @ingroup SpecialPage Watchlist
  */
-class SpecialWatchlist extends SpecialPage {
+class SpecialWatchlist extends SpecialRecentChanges {
        protected $customFilters;
 
        /**
@@ -30,6 +30,103 @@ class SpecialWatchlist extends SpecialPage {
                parent::__construct( $page, $restriction );
        }
 
+       public function isIncludable() {
+               return false;
+       }
+
+       /**
+        * Get a FormOptions object containing the default options
+        *
+        * @return FormOptions
+        */
+       public function getDefaultOptions() {
+               $opts = parent::getDefaultOptions();
+               $user = $this->getUser();
+
+               // Overwrite RC options with Watchlist options
+               // (calling #add() again is okay)
+               $opts->add( 'days', $user->getOption( 'watchlistdays' ), FormOptions::FLOAT );
+               $opts->add( 'hideminor', $user->getBoolOption( 'watchlisthideminor' ) );
+               $opts->add( 'hidebots', $user->getBoolOption( 'watchlisthidebots' ) );
+               $opts->add( 'hideanons', $user->getBoolOption( 'watchlisthideanons' ) );
+               $opts->add( 'hideliu', $user->getBoolOption( 'watchlisthideliu' ) );
+               $opts->add( 'hidepatrolled', $user->getBoolOption( 'watchlisthidepatrolled' ) );
+               $opts->add( 'hidemyself', $user->getBoolOption( 'watchlisthideown' ) );
+
+               // Add new ones
+               $opts->add( 'extended', $user->getBoolOption( 'extendwatchlist' ) );
+
+               return $opts;
+       }
+
+       /**
+        * Fetch values for a FormOptions object from the WebRequest associated with this instance.
+        *
+        * Maps old pre-1.23 request parameters Watchlist used to use (different from Recentchanges' ones)
+        * to the current ones.
+        *
+        * @param FormOptions $parameters
+        * @return FormOptions
+        */
+       protected function fetchOptionsFromRequest( $opts ) {
+               static $compatibilityMap = array(
+                       'hideMinor' => 'hideminor',
+                       'hideBots' => 'hidebots',
+                       'hideAnons' => 'hideanons',
+                       'hideLiu' => 'hideliu',
+                       'hidePatrolled' => 'hidepatrolled',
+                       'hideOwn' => 'hidemyself',
+               );
+
+               $params = $this->getRequest()->getValues();
+               foreach ( $compatibilityMap as $from => $to ) {
+                       if ( isset( $params[$from] ) ) {
+                               $params[$to] = $params[$from];
+                               unset( $params[$from] );
+                       }
+               }
+
+               // Not the prettiest way to achieve this… FormOptions internally depends on data sanitization
+               // methods defined on WebRequest and removing this dependency would cause some code duplication.
+               $request = new DerivativeRequest( $this->getRequest(), $params );
+               $opts->fetchValuesFromRequest( $request );
+               return $opts;
+       }
+
+       /**
+        * Get custom show/hide filters
+        *
+        * @return array Map of filter URL param names to properties (msg/default)
+        */
+       protected function getCustomFilters() {
+               if ( $this->customFilters === null ) {
+                       $this->customFilters = array();
+                       wfRunHooks( 'SpecialWatchlistFilters', array( $this, &$this->customFilters ) );
+               }
+
+               return $this->customFilters;
+       }
+
+       /**
+        * Process $par and put options found if $opts. Not used for Watchlist.
+        *
+        * @param string $par
+        * @param FormOptions $opts
+        */
+       public function parseParameters( $par, FormOptions $opts ) {
+       }
+
+       /**
+        * Get the current FormOptions for this request
+        */
+       public function getOptions() {
+               if ( $this->rcOptions === null ) {
+                       $this->rcOptions = $this->setup( null );
+               }
+
+               return $this->rcOptions;
+       }
+
        /**
         * Execute
         * @param $par Parameter passed to the page
@@ -39,7 +136,6 @@ class SpecialWatchlist extends SpecialPage {
 
                $user = $this->getUser();
                $output = $this->getOutput();
-               $output->addModuleStyles( 'mediawiki.special.changeslist' );
 
                # Anons don't get a watchlist
                $this->requireLogin( 'watchlistanontext' );
@@ -47,26 +143,8 @@ class SpecialWatchlist extends SpecialPage {
                // Check permissions
                $this->checkPermissions();
 
-               // Add feed links
-               $wlToken = $user->getTokenFromOption( 'watchlisttoken' );
-               if ( $wlToken ) {
-                       $this->addFeedLinks( array(
-                               'action' => 'feedwatchlist',
-                               'allrev' => 1,
-                               'wlowner' => $user->getName(),
-                               'wltoken' => $wlToken,
-                       ) );
-               }
-
-               $this->setHeaders();
-               $this->outputHeader();
-
-               $output->addSubtitle(
-                       $this->msg( 'watchlistfor2', $user->getName() )
-                               ->rawParams( SpecialEditWatchlist::buildTools( null ) )
-               );
-
                $request = $this->getRequest();
+               $opts = $this->getOptions();
 
                $mode = SpecialEditWatchlist::getMode( $request, $par );
                if ( $mode !== false ) {
@@ -80,120 +158,132 @@ class SpecialWatchlist extends SpecialPage {
                        return;
                }
 
+               if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
+                       $request->wasPosted() )
+               {
+                       $user->clearAllNotifications();
+                       $output->redirect( $this->getPageTitle()->getFullURL( $opts->getChangedValues() ) );
+                       return;
+               }
+
+               $this->setHeaders();
+               $this->outputHeader();
+               $this->addModules();
+
                $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
 
-               $nitems = $this->countItems( $dbr );
-               if ( $nitems == 0 ) {
+               $this->numItems = $this->countItems( $dbr ); // TODO kill me
+               if ( $this->numItems == 0 ) {
                        $output->addWikiMsg( 'nowatchlist' );
                        return;
                }
 
-               // @todo use FormOptions!
-               $defaults = array(
-               /* float */ 'days' => floatval( $user->getOption( 'watchlistdays' ) ),
-               /* bool  */ 'hideMinor' => (int)$user->getBoolOption( 'watchlisthideminor' ),
-               /* bool  */ 'hideBots' => (int)$user->getBoolOption( 'watchlisthidebots' ),
-               /* bool  */ 'hideAnons' => (int)$user->getBoolOption( 'watchlisthideanons' ),
-               /* bool  */ 'hideLiu' => (int)$user->getBoolOption( 'watchlisthideliu' ),
-               /* bool  */ 'hidePatrolled' => (int)$user->getBoolOption( 'watchlisthidepatrolled' ),
-               /* bool  */ 'hideOwn' => (int)$user->getBoolOption( 'watchlisthideown' ),
-               /* bool  */ 'extended' => (int)$user->getBoolOption( 'extendwatchlist' ),
-               /* ?     */ 'namespace' => '', //means all
-               /* ?     */ 'invert' => false,
-               /* bool  */ 'associated' => false,
-               );
-               $this->customFilters = array();
-               wfRunHooks( 'SpecialWatchlistFilters', array( $this, &$this->customFilters ) );
-               foreach ( $this->customFilters as $key => $params ) {
-                       $defaults[$key] = $params['default'];
-               }
-
-               # Extract variables from the request, falling back to user preferences or
-               # other default values if these don't exist
-               $values = array();
-               $values['days'] = floatval( $request->getVal( 'days', $defaults['days'] ) );
-               $values['hideMinor'] = (int)$request->getBool( 'hideMinor', $defaults['hideMinor'] );
-               $values['hideBots'] = (int)$request->getBool( 'hideBots', $defaults['hideBots'] );
-               $values['hideAnons'] = (int)$request->getBool( 'hideAnons', $defaults['hideAnons'] );
-               $values['hideLiu'] = (int)$request->getBool( 'hideLiu', $defaults['hideLiu'] );
-               $values['hideOwn'] = (int)$request->getBool( 'hideOwn', $defaults['hideOwn'] );
-               $values['hidePatrolled'] = (int)$request->getBool( 'hidePatrolled', $defaults['hidePatrolled'] );
-               $values['extended'] = (int)$request->getBool( 'extended', $defaults['extended'] );
-               foreach ( $this->customFilters as $key => $params ) {
-                       $values[$key] = (int)$request->getBool( $key, $defaults[$key] );
-               }
-
-               # Get namespace value, if supplied, and prepare a WHERE fragment
-               $nameSpace = $request->getIntOrNull( 'namespace' );
-               $invert = $request->getBool( 'invert' );
-               $associated = $request->getBool( 'associated' );
-               if ( !is_null( $nameSpace ) ) {
-                       $eq_op = $invert ? '!=' : '=';
-                       $bool_op = $invert ? 'AND' : 'OR';
-                       $nameSpace = intval( $nameSpace ); // paranioa
-                       if ( !$associated ) {
-                               $nameSpaceClause = "rc_namespace $eq_op $nameSpace";
-                       } else {
-                               $associatedNS = MWNamespace::getAssociated( $nameSpace );
-                               $nameSpaceClause =
-                                       "rc_namespace $eq_op $nameSpace " .
-                                       $bool_op .
-                                       " rc_namespace $eq_op $associatedNS";
-                       }
-               } else {
-                       $nameSpace = '';
-                       $nameSpaceClause = '';
-               }
-               $values['namespace'] = $nameSpace;
-               $values['invert'] = $invert;
-               $values['associated'] = $associated;
+               // Fetch results, prepare a batch link existence check query
+               $conds = $this->buildMainQueryConds( $opts );
+               $rows = $this->doMainQuery( $conds, $opts );
+               $this->numRows = $rows->numRows(); // TODO kill me
+               if ( $rows === false ) {
+                       $this->doHeader( $opts );
 
-               // Dump everything here
-               $nondefaults = array();
-               foreach ( $defaults as $name => $defValue ) {
-                       wfAppendToArrayIfNotDefault( $name, $values[$name], $defaults, $nondefaults );
+                       return;
                }
 
-               if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
-                       $request->wasPosted() )
-               {
-                       $user->clearAllNotifications();
-                       $output->redirect( $this->getTitle()->getFullURL( $nondefaults ) );
-                       return;
+               $feedFormat = $this->getRequest()->getVal( 'feed' );
+               if ( !$feedFormat ) {
+                       $batch = new LinkBatch;
+                       foreach ( $rows as $row ) {
+                               $batch->add( NS_USER, $row->rc_user_text );
+                               $batch->add( NS_USER_TALK, $row->rc_user_text );
+                               $batch->add( $row->rc_namespace, $row->rc_title );
+                       }
+                       $batch->execute();
+               }
+               if ( $feedFormat ) {
+                       list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
+                       /** @var ChangesFeed $changesFeed */
+                       $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
+               } else {
+                       $this->webOutput( $rows, $opts );
                }
 
-               # Possible where conditions
+               $rows->free();
+       }
+
+       /**
+        * Return an array of conditions depending of options set in $opts
+        *
+        * @param FormOptions $opts
+        * @return array
+        */
+       public function buildMainQueryConds( FormOptions $opts ) {
+               $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
                $conds = array();
+               $user = $this->getUser();
 
-               if ( $values['days'] > 0 ) {
-                       $conds[] = 'rc_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( time() - intval( $values['days'] * 86400 ) ) );
+               // Calculate cutoff
+               if ( $opts['days'] > 0 ) {
+                       $conds[] = 'rc_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( time() - intval( $opts['days'] * 86400 ) ) );
                }
 
                # Toggles
-               if ( $values['hideOwn'] ) {
+               if ( $opts['hidemyself'] ) {
                        $conds[] = 'rc_user != ' . $user->getId();
                }
-               if ( $values['hideBots'] ) {
+               if ( $opts['hidebots'] ) {
                        $conds[] = 'rc_bot = 0';
                }
-               if ( $values['hideMinor'] ) {
+               if ( $opts['hideminor'] ) {
                        $conds[] = 'rc_minor = 0';
                }
-               if ( $values['hideLiu'] ) {
+               if ( $opts['hideliu'] ) {
                        $conds[] = 'rc_user = 0';
                }
-               if ( $values['hideAnons'] ) {
+               if ( $opts['hideanons'] ) {
                        $conds[] = 'rc_user != 0';
                }
-               if ( $user->useRCPatrol() && $values['hidePatrolled'] ) {
+               if ( $user->useRCPatrol() && $opts['hidepatrolled'] ) {
                        $conds[] = 'rc_patrolled != 1';
                }
-               if ( $nameSpaceClause ) {
-                       $conds[] = $nameSpaceClause;
+
+               # Namespace filtering
+               if ( $opts['namespace'] !== '' ) {
+                       $selectedNS = $dbr->addQuotes( $opts['namespace'] );
+                       $operator = $opts['invert'] ? '!=' : '=';
+                       $boolean = $opts['invert'] ? 'AND' : 'OR';
+
+                       # namespace association (bug 2429)
+                       if ( !$opts['associated'] ) {
+                               $condition = "rc_namespace $operator $selectedNS";
+                       } else {
+                               # Also add the associated namespace
+                               $associatedNS = $dbr->addQuotes(
+                                       MWNamespace::getAssociated( $opts['namespace'] )
+                               );
+                               $condition = "(rc_namespace $operator $selectedNS "
+                                       . $boolean
+                                       . " rc_namespace $operator $associatedNS)";
+                       }
+
+                       $conds[] = $condition;
                }
 
+               return $conds;
+       }
+
+       /**
+        * Process the query
+        *
+        * @param array $conds
+        * @param FormOptions $opts
+        * @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
+        */
+       public function doMainQuery( $conds, $opts ) {
+               global $wgShowUpdatedMarker;
+
+               $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+               $user = $this->getUser();
                # Toggle watchlist content (all recent edits or just the latest)
-               if ( $values['extended'] ) {
+               if ( $opts['extended'] ) {
                        $limitWatchlist = $user->getIntOption( 'wllimit' );
                        $usePage = false;
                } else {
@@ -213,18 +303,155 @@ class SpecialWatchlist extends SpecialPage {
                        $usePage = true;
                }
 
+               $tables = array( 'recentchanges', 'watchlist' );
+               $fields = RecentChange::selectFields();
+               $join_conds = array(
+                       'watchlist' => array(
+                               'INNER JOIN',
+                               array(
+                                       'wl_user' => $user->getId(),
+                                       'wl_namespace=rc_namespace',
+                                       'wl_title=rc_title'
+                               ),
+                       ),
+               );
+               $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
+               if ( $wgShowUpdatedMarker ) {
+                       $fields[] = 'wl_notificationtimestamp';
+               }
+               if ( $limitWatchlist ) {
+                       $options['LIMIT'] = $limitWatchlist;
+               }
+
+               $rollbacker = $user->isAllowed( 'rollback' );
+               if ( $usePage || $rollbacker ) {
+                       $tables[] = 'page';
+                       $join_conds['page'] = array( 'LEFT JOIN', 'rc_cur_id=page_id' );
+                       if ( $rollbacker ) {
+                               $fields[] = 'page_latest';
+                       }
+               }
+
+               // Log entries with DELETED_ACTION must not show up unless the user has
+               // the necessary rights.
+               if ( !$user->isAllowed( 'deletedhistory' ) ) {
+                       $bitmask = LogPage::DELETED_ACTION;
+               } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+                       $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+               } else {
+                       $bitmask = 0;
+               }
+               if ( $bitmask ) {
+                       $conds[] = $dbr->makeList( array(
+                               'rc_type != ' . RC_LOG,
+                               $dbr->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+                       ), LIST_OR );
+               }
+
+
+               ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
+               wfRunHooks( 'SpecialWatchlistQuery', array( &$conds, &$tables, &$join_conds, &$fields, $opts ) );
+
+               return $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $join_conds );
+       }
+
+       /**
+        * Send output to the OutputPage object, only called if not used feeds
+        *
+        * @param array $rows Database rows
+        * @param FormOptions $opts
+        */
+       public function webOutput( $rows, $opts ) {
+               global $wgShowUpdatedMarker, $wgRCShowWatchingUsers;
+
+               $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+               $user = $this->getUser();
+
+               $dbr->dataSeek( $rows, 0 );
+
+               $list = ChangesList::newFromContext( $this->getContext() );
+               $list->setWatchlistDivs();
+
+               $s = $list->beginRecentChangesList();
+               $counter = 1;
+               foreach ( $rows as $obj ) {
+                       # Make RC entry
+                       $rc = RecentChange::newFromRow( $obj );
+                       $rc->counter = $counter++;
+
+                       if ( $wgShowUpdatedMarker ) {
+                               $updated = $obj->wl_notificationtimestamp;
+                       } else {
+                               $updated = false;
+                       }
+
+                       if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
+                               $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
+                                       'COUNT(*)',
+                                       array(
+                                               'wl_namespace' => $obj->rc_namespace,
+                                               'wl_title' => $obj->rc_title,
+                                       ),
+                                       __METHOD__ );
+                       } else {
+                               $rc->numberofWatchingusers = 0;
+                       }
+
+                       $changeLine = $list->recentChangesLine( $rc, $updated, $counter );
+                       if ( $changeLine !== false ) {
+                               $s .= $changeLine;
+                       }
+               }
+               $s .= $list->endRecentChangesList();
+
+               // Print things out
+
+               $output = $this->getOutput();
+
+               $output->addSubtitle(
+                       $this->msg( 'watchlistfor2', $user->getName() )
+                               ->rawParams( SpecialEditWatchlist::buildTools( null ) )
+               );
+
+               // Output options box
+               $this->doHeader( $opts );
+
+               // Add feed links
+               $wlToken = $user->getTokenFromOption( 'watchlisttoken' );
+               if ( $wlToken ) {
+                       $this->addFeedLinks( array(
+                               'action' => 'feedwatchlist',
+                               'allrev' => 1,
+                               'wlowner' => $user->getName(),
+                               'wltoken' => $wlToken,
+                       ) );
+               }
+
                # Show a message about slave lag, if applicable
                $lag = wfGetLB()->safeGetLag( $dbr );
                if ( $lag > 0 ) {
                        $output->showLagWarning( $lag );
                }
 
-               # Create output
-               $form = '';
+               if ( $rows->numRows() == 0 ) {
+                       $output->wrapWikiMsg(
+                               "<div class='mw-changeslist-empty'>\n$1\n</div>", 'recentchanges-noresult'
+                       );
+               } else {
+                       $output->addHTML( $s );
+               }
+       }
+
+       function setTopText( FormOptions $opts ) {
+               global $wgEnotifWatchlist, $wgShowUpdatedMarker;
+
+               $nondefaults = $opts->getChangedValues();
+               $form = "";
+               $user = $this->getUser();
 
                # Show watchlist header
                $form .= "<p>";
-               $form .= $this->msg( 'watchlist-details' )->numParams( $nitems )->parse() . "\n";
+               $form .= $this->msg( 'watchlist-details' )->numParams( $this->numItems )->parse() . "\n";
                if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
                        $form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
                }
@@ -235,7 +462,7 @@ class SpecialWatchlist extends SpecialPage {
 
                if ( $wgShowUpdatedMarker ) {
                        $form .= Xml::openElement( 'form', array( 'method' => 'post',
-                               'action' => $this->getTitle()->getLocalURL(),
+                               'action' => $this->getPageTitle()->getLocalURL(),
                                'id' => 'mw-watchlist-resetbutton' ) ) . "\n" .
                        Xml::submitButton( $this->msg( 'enotif_reset' )->text(), array( 'name' => 'dummy' ) ) . "\n" .
                        Html::hidden( 'reset', 'all' ) . "\n";
@@ -247,7 +474,7 @@ class SpecialWatchlist extends SpecialPage {
 
                $form .= Xml::openElement( 'form', array(
                        'method' => 'post',
-                       'action' => $this->getTitle()->getLocalURL(),
+                       'action' => $this->getPageTitle()->getLocalURL(),
                        'id' => 'mw-watchlist-form'
                ) );
                $form .= Xml::fieldset(
@@ -258,73 +485,53 @@ class SpecialWatchlist extends SpecialPage {
 
                $form .= SpecialRecentChanges::makeLegend( $this->getContext() );
 
-               $tables = array( 'recentchanges', 'watchlist' );
-               $fields = RecentChange::selectFields();
-               $join_conds = array(
-                       'watchlist' => array(
-                               'INNER JOIN',
-                               array(
-                                       'wl_user' => $user->getId(),
-                                       'wl_namespace=rc_namespace',
-                                       'wl_title=rc_title'
-                               ),
-                       ),
-               );
-               $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
-               if ( $wgShowUpdatedMarker ) {
-                       $fields[] = 'wl_notificationtimestamp';
-               }
-               if ( $limitWatchlist ) {
-                       $options['LIMIT'] = $limitWatchlist;
-               }
-
-               $rollbacker = $user->isAllowed( 'rollback' );
-               if ( $usePage || $rollbacker ) {
-                       $tables[] = 'page';
-                       $join_conds['page'] = array( 'LEFT JOIN', 'rc_cur_id=page_id' );
-                       if ( $rollbacker ) {
-                               $fields[] = 'page_latest';
-                       }
-               }
+               $this->getOutput()->addHTML( $form );
+       }
 
-               ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
-               wfRunHooks( 'SpecialWatchlistQuery', array( &$conds, &$tables, &$join_conds, &$fields, $values ) );
+       /**
+        * Return the text to be displayed above the changes
+        *
+        * @param FormOptions $opts
+        * @return string XHTML
+        */
+       public function doHeader( $opts ) {
+               global $wgScript;
 
-               $res = $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $join_conds );
-               $numRows = $res->numRows();
+               $user = $this->getUser();
 
-               /* Start bottom header */
+               $this->setTopText( $opts );
 
                $lang = $this->getLanguage();
                $wlInfo = '';
-               if ( $values['days'] > 0 ) {
+               if ( $opts['days'] > 0 ) {
                        $timestamp = wfTimestampNow();
-                       $wlInfo = $this->msg( 'wlnote' )->numParams( $numRows, round( $values['days'] * 24 ) )->params(
+                       $wlInfo = $this->msg( 'wlnote' )->numParams( $this->numRows, round( $opts['days'] * 24 ) )->params(
                                $lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user ) )->parse() . "<br />\n";
                }
 
-               $cutofflinks = $this->cutoffLinks( $values['days'], $nondefaults ) . "<br />\n";
+               $nondefaults = $opts->getChangedValues();
+               $cutofflinks = $this->cutoffLinks( $opts['days'], $nondefaults ) . "<br />\n";
 
                # Spit out some control panel links
                $filters = array(
-                       'hideMinor' => 'rcshowhideminor',
-                       'hideBots' => 'rcshowhidebots',
-                       'hideAnons' => 'rcshowhideanons',
-                       'hideLiu' => 'rcshowhideliu',
-                       'hideOwn' => 'rcshowhidemine',
-                       'hidePatrolled' => 'rcshowhidepatr'
+                       'hideminor' => 'rcshowhideminor',
+                       'hidebots' => 'rcshowhidebots',
+                       'hideanons' => 'rcshowhideanons',
+                       'hideliu' => 'rcshowhideliu',
+                       'hidemyself' => 'rcshowhidemine',
+                       'hidepatrolled' => 'rcshowhidepatr'
                );
-               foreach ( $this->customFilters as $key => $params ) {
+               foreach ( $this->getCustomFilters() as $key => $params ) {
                        $filters[$key] = $params['msg'];
                }
                // Disable some if needed
                if ( !$user->useNPPatrol() ) {
-                       unset( $filters['hidePatrolled'] );
+                       unset( $filters['hidepatrolled'] );
                }
 
                $links = array();
                foreach ( $filters as $name => $msg ) {
-                       $links[] = $this->showHideLink( $nondefaults, $msg, $name, $values[$name] );
+                       $links[] = $this->showHideLink( $nondefaults, $msg, $name, $opts[$name] );
                }
 
                $hiddenFields = $nondefaults;
@@ -332,6 +539,9 @@ class SpecialWatchlist extends SpecialPage {
                unset( $hiddenFields['invert'] );
                unset( $hiddenFields['associated'] );
 
+               # Create output
+               $form = '';
+
                # Namespace filter and put the whole form together.
                $form .= $wlInfo;
                $form .= $cutofflinks;
@@ -339,7 +549,7 @@ class SpecialWatchlist extends SpecialPage {
                $form .= "<hr />\n<p>";
                $form .= Html::namespaceSelector(
                        array(
-                               'selected' => $nameSpace,
+                               'selected' => $opts['namespace'],
                                'all' => '',
                                'label' => $this->msg( 'namespace' )->text()
                        ), array(
@@ -352,14 +562,14 @@ class SpecialWatchlist extends SpecialPage {
                        $this->msg( 'invert' )->text(),
                        'invert',
                        'nsinvert',
-                       $invert,
+                       $opts['invert'],
                        array( 'title' => $this->msg( 'tooltip-invert' )->text() )
                ) . '&#160;';
                $form .= Xml::checkLabel(
                        $this->msg( 'namespace_association' )->text(),
                        'associated',
-                       'associated',
-                       $associated,
+                       'nsassociated',
+                       $opts['associated'],
                        array( 'title' => $this->msg( 'tooltip-namespace_association' )->text() )
                ) . '&#160;';
                $form .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) . "</p>\n";
@@ -368,82 +578,23 @@ class SpecialWatchlist extends SpecialPage {
                }
                $form .= Xml::closeElement( 'fieldset' ) . "\n";
                $form .= Xml::closeElement( 'form' ) . "\n";
-               $output->addHTML( $form );
+               $this->getOutput()->addHTML( $form );
 
-               # If there's nothing to show, stop here
-               if ( $numRows == 0 ) {
-                       $output->wrapWikiMsg(
-                               "<div class='mw-changeslist-empty'>\n$1\n</div>", 'recentchanges-noresult'
-                       );
-                       return;
-               }
-
-               /* End bottom header */
-
-               /* Do link batch query */
-               $linkBatch = new LinkBatch;
-               foreach ( $res as $row ) {
-                       $userNameUnderscored = str_replace( ' ', '_', $row->rc_user_text );
-                       if ( $row->rc_user != 0 ) {
-                               $linkBatch->add( NS_USER, $userNameUnderscored );
-                       }
-                       $linkBatch->add( NS_USER_TALK, $userNameUnderscored );
-
-                       $linkBatch->add( $row->rc_namespace, $row->rc_title );
-               }
-               $linkBatch->execute();
-               $dbr->dataSeek( $res, 0 );
-
-               $list = ChangesList::newFromContext( $this->getContext() );
-               $list->setWatchlistDivs();
-
-               $s = $list->beginRecentChangesList();
-               $counter = 1;
-               foreach ( $res as $obj ) {
-                       # Make RC entry
-                       $rc = RecentChange::newFromRow( $obj );
-                       $rc->counter = $counter++;
-
-                       if ( $wgShowUpdatedMarker ) {
-                               $updated = $obj->wl_notificationtimestamp;
-                       } else {
-                               $updated = false;
-                       }
-
-                       if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
-                               $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
-                                       'COUNT(*)',
-                                       array(
-                                               'wl_namespace' => $obj->rc_namespace,
-                                               'wl_title' => $obj->rc_title,
-                                       ),
-                                       __METHOD__ );
-                       } else {
-                               $rc->numberofWatchingusers = 0;
-                       }
-
-                       $changeLine = $list->recentChangesLine( $rc, $updated, $counter );
-                       if ( $changeLine !== false ) {
-                               $s .= $changeLine;
-                       }
-               }
-               $s .= $list->endRecentChangesList();
-
-               $output->addHTML( $s );
+               $this->setBottomText( $opts );
        }
 
        protected function showHideLink( $options, $message, $name, $value ) {
                $label = $this->msg( $value ? 'show' : 'hide' )->escaped();
                $options[$name] = 1 - (int)$value;
 
-               return $this->msg( $message )->rawParams( Linker::linkKnown( $this->getTitle(), $label, array(), $options ) )->escaped();
+               return $this->msg( $message )->rawParams( Linker::linkKnown( $this->getPageTitle(), $label, array(), $options ) )->escaped();
        }
 
        protected function hoursLink( $h, $options = array() ) {
                $options['days'] = ( $h / 24.0 );
 
                return Linker::linkKnown(
-                       $this->getTitle(),
+                       $this->getPageTitle(),
                        $this->getLanguage()->formatNum( $h ),
                        array(),
                        $options
@@ -455,7 +606,7 @@ class SpecialWatchlist extends SpecialPage {
                $message = ( $d ? $this->getLanguage()->formatNum( $d ) : $this->msg( 'watchlistall2' )->escaped() );
 
                return Linker::linkKnown(
-                       $this->getTitle(),
+                       $this->getPageTitle(),
                        $message,
                        array(),
                        $options
@@ -494,15 +645,11 @@ class SpecialWatchlist extends SpecialPage {
         */
        protected function countItems( $dbr ) {
                # Fetch the raw count
-               $res = $dbr->select( 'watchlist', array( 'count' => 'COUNT(*)' ),
+               $rows = $dbr->select( 'watchlist', array( 'count' => 'COUNT(*)' ),
                        array( 'wl_user' => $this->getUser()->getId() ), __METHOD__ );
-               $row = $dbr->fetchObject( $res );
+               $row = $dbr->fetchObject( $rows );
                $count = $row->count;
 
                return floor( $count / 2 );
        }
-
-       protected function getGroupName() {
-               return 'changes';
-       }
 }
index 05c7dd5..3f9b98d 100644 (file)
@@ -84,7 +84,7 @@ class SpecialWhatLinksHere extends SpecialPage {
 
                $this->getSkin()->setRelevantTitle( $this->target );
 
-               $this->selfTitle = $this->getTitle( $this->target->getPrefixedDBkey() );
+               $this->selfTitle = $this->getPageTitle( $this->target->getPrefixedDBkey() );
 
                $out->setPageTitle( $this->msg( 'whatlinkshere-title', $this->target->getPrefixedText() ) );
                $out->addBacklinkSubtitle( $this->target );
@@ -342,7 +342,7 @@ class SpecialWhatLinksHere extends SpecialPage {
        protected function wlhLink( Title $target, $text ) {
                static $title = null;
                if ( $title === null ) {
-                       $title = $this->getTitle();
+                       $title = $this->getPageTitle();
                }
 
                return Linker::linkKnown(
@@ -407,7 +407,7 @@ class SpecialWhatLinksHere extends SpecialPage {
                $f = Xml::openElement( 'form', array( 'action' => $wgScript ) );
 
                # Values that should not be forgotten
-               $f .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
+               $f .= Html::hidden( 'title', $this->getPageTitle()->getPrefixedText() );
                foreach ( $this->opts->getUnconsumedValues() as $name => $value ) {
                        $f .= Html::hidden( $name, $value );
                }
index 9d23499..2ddde43 100644 (file)
@@ -49,7 +49,7 @@ class WithoutInterwikiPage extends PageQueryPage {
                }
 
                $prefix = $this->prefix;
-               $t = $this->getTitle();
+               $t = $this->getPageTitle();
 
                return Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) . "\n" .
                        Html::openElement( 'fieldset' ) . "\n" .
index 0006df4..3f49ed3 100644 (file)
@@ -33,8 +33,8 @@ if ( !isset( $wgVersion ) ) {
 $matches = array();
 $ext = 'php';
 $path = '/';
-foreach( array_filter( explode( '/', $_SERVER['PHP_SELF'] ) ) as $part ) {
-       if( !preg_match( '/\.(php5?)$/', $part, $matches ) ) {
+foreach ( array_filter( explode( '/', $_SERVER['PHP_SELF'] ) ) as $part ) {
+       if ( !preg_match( '/\.(php5?)$/', $part, $matches ) ) {
                $path .= "$part/";
        } else {
                $ext = $matches[1] == 'php5' ? 'php5' : 'php';
index 2f569d9..12210d0 100644 (file)
@@ -46,6 +46,9 @@ class UsercreateTemplate extends BaseTemplate {
                <div id="languagelinks">
                        <p><?php $this->html( 'languages' ); ?></p>
                </div>
+       <?php }
+             if ( !wfMessage( 'signupstart' )->isDisabled() ) { ?>
+               <div id="signupstart"><?php $this->msgWiki( 'signupstart' ); ?></div>
        <?php } ?>
        <div id="userloginForm">
                <h2 class="createaccount-join">
@@ -261,6 +264,9 @@ class UsercreateTemplate extends BaseTemplate {
                        <?php if ( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
                        <?php if ( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpCreateaccountToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
                </form>
+               <?php if ( !wfMessage( 'signupend' )->isDisabled() ) { ?>
+                       <div id="signupend"><?php $this->html( 'signupend' ); ?></div>
+               <?php } ?>
        </div>
        <div class="mw-createacct-benefits-container">
                <h2><?php $this->msg( 'createacct-benefit-heading' ); ?></h2>
index 183e7f3..67bffc3 100644 (file)
@@ -31,8 +31,6 @@
  * UploadBase and subclasses are the backend of MediaWiki's file uploads.
  * The frontends are formed by ApiUpload and SpecialUpload.
  *
- * See also includes/docs/upload.txt
- *
  * @author Brion Vibber
  * @author Bryan Tong Minh
  * @author Michael Dale
@@ -250,7 +248,7 @@ abstract class UploadBase {
 
        /**
         * @param string $srcPath the source path
-        * @return string the real path if it was a virtual URL
+        * @return string|bool the real path if it was a virtual URL Returns false on failure
         */
        function getRealPath( $srcPath ) {
                wfProfileIn( __METHOD__ );
@@ -259,12 +257,15 @@ abstract class UploadBase {
                        // @todo just make uploads work with storage paths
                        // UploadFromStash loads files via virtual URLs
                        $tmpFile = $repo->getLocalCopy( $srcPath );
-                       $tmpFile->bind( $this ); // keep alive with $this
-                       wfProfileOut( __METHOD__ );
-                       return $tmpFile->getPath();
+                       if ( $tmpFile ) {
+                               $tmpFile->bind( $this ); // keep alive with $this
+                       }
+                       $path = $tmpFile ? $tmpFile->getPath() : false;
+               } else {
+                       $path = $srcPath;
                }
                wfProfileOut( __METHOD__ );
-               return $srcPath;
+               return $path;
        }
 
        /**
@@ -319,8 +320,8 @@ abstract class UploadBase {
 
                $error = '';
                if ( !wfRunHooks( 'UploadVerification',
-                       array( $this->mDestName, $this->mTempPath, &$error ) ) )
-               {
+                       array( $this->mDestName, $this->mTempPath, &$error ) )
+               {
                        wfProfileOut( __METHOD__ );
                        return array( 'status' => self::HOOK_ABORTED, 'error' => $error );
                }
@@ -473,9 +474,10 @@ abstract class UploadBase {
                                return array( 'uploadscripted' );
                        }
                        if ( $this->mFinalExtension == 'svg' || $mime == 'image/svg+xml' ) {
-                               if ( $this->detectScriptInSvg( $this->mTempPath ) ) {
+                               $svgStatus = $this->detectScriptInSvg( $this->mTempPath );
+                               if ( $svgStatus !== false ) {
                                        wfProfileOut( __METHOD__ );
-                                       return array( 'uploadscripted' );
+                                       return $svgStatus;
                                }
                        }
                }
@@ -654,7 +656,11 @@ abstract class UploadBase {
                // Check dupes against archives
                $archivedImage = new ArchivedFile( null, 0, "{$hash}.{$this->mFinalExtension}" );
                if ( $archivedImage->getID() > 0 ) {
-                       $warnings['duplicate-archive'] = $archivedImage->getName();
+                       if ( $archivedImage->userCan( File::DELETED_FILE ) ) {
+                               $warnings['duplicate-archive'] = $archivedImage->getName();
+                       } else {
+                               $warnings['duplicate-archive'] = '';
+                       }
                }
 
                wfProfileOut( __METHOD__ );
@@ -720,7 +726,8 @@ abstract class UploadBase {
                # exclamation mark, so restrict file name to 240 bytes.
                if ( strlen( $this->mFilteredName ) > 240 ) {
                        $this->mTitleError = self::FILENAME_TOO_LONG;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
                /**
@@ -733,7 +740,8 @@ abstract class UploadBase {
                $nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
                if ( is_null( $nt ) ) {
                        $this->mTitleError = self::ILLEGAL_FILENAME;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
                $this->mFilteredName = $nt->getDBkey();
 
@@ -774,19 +782,22 @@ abstract class UploadBase {
 
                if ( $this->mFinalExtension == '' ) {
                        $this->mTitleError = self::FILETYPE_MISSING;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                } elseif ( $blackListedExtensions ||
                                ( $wgCheckFileExtensions && $wgStrictFileExtensions &&
                                        !$this->checkFileExtensionList( $ext, $wgFileExtensions ) ) ) {
                        $this->mBlackListedExtensions = $blackListedExtensions;
                        $this->mTitleError = self::FILETYPE_BADTYPE;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
                // Windows may be broken with special characters, see bug XXX
                if ( wfIsWindows() && !preg_match( '/^[\x0-\x7f]*$/', $nt->getText() ) ) {
                        $this->mTitleError = self::WINDOWS_NONASCII_FILENAME;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
                # If there was more than one "extension", reassemble the base
@@ -799,10 +810,12 @@ abstract class UploadBase {
 
                if ( strlen( $partname ) < 1 ) {
                        $this->mTitleError = self::MIN_LENGTH_PARTNAME;
-                       return $this->mTitle = null;
+                       $this->mTitle = null;
+                       return $this->mTitle;
                }
 
-               return $this->mTitle = $nt;
+               $this->mTitle = $nt;
+               return $this->mTitle;
        }
 
        /**
@@ -1152,11 +1165,36 @@ abstract class UploadBase {
 
        /**
         * @param $filename string
-        * @return bool
+        * @return mixed false of the file is verified (does not contain scripts), array otherwise.
         */
        protected function detectScriptInSvg( $filename ) {
-               $check = new XmlTypeCheck( $filename, array( $this, 'checkSvgScriptCallback' ) );
-               return $check->filterMatch;
+               $check = new XmlTypeCheck(
+                       $filename,
+                       array( $this, 'checkSvgScriptCallback' ),
+                       true,
+                       array( 'processing_instruction_handler' => 'UploadBase::checkSvgPICallback' )
+               );
+               if ( $check->wellFormed !== true ) {
+                       // Invalid xml (bug 58553)
+                       return array( 'uploadinvalidxml' );
+               } elseif ( $check->filterMatch ) {
+                       return array( 'uploadscripted' );
+               }
+               return false;
+       }
+
+       /**
+        * Callback to filter SVG Processing Instructions.
+        * @param $target string processing instruction name
+        * @param $data string processing instruction attribute and value
+        * @return bool (true if the filter identified something bad)
+        */
+       public static function checkSvgPICallback( $target, $data ) {
+               // Don't allow external stylesheets (bug 57550)
+               if ( preg_match( '/xml-stylesheet/i', $target) ) {
+                       return true;
+               }
+               return false;
        }
 
        /**
index 0201d5f..19b4dfd 100644 (file)
@@ -204,13 +204,16 @@ class UploadFromUrl extends UploadBase {
                }
                return Status::newGood();
        }
+
        /**
         * Create a new temporary file in the URL subdirectory of wfTempDir().
         *
         * @return string Path to the file
         */
        protected function makeTemporaryFile() {
-               return tempnam( wfTempDir(), 'URL' );
+               $tmpFile = TempFSFile::factory( 'URL' );
+               $tmpFile->bind( $this );
+               return $tmpFile->getPath();
        }
 
        /**
index 0995aed..f556ee7 100644 (file)
@@ -155,6 +155,7 @@ abstract class CdbWriter {
 }
 
 /**
- * Exception for Cdb errors
+ * Exception for Cdb errors.
+ * This explicitly doesn't subclass MWException to encourage reuse.
  */
-class CdbException extends MWException {}
+class CdbException extends Exception {}
diff --git a/includes/utils/HashRing.php b/includes/utils/HashRing.php
deleted file mode 100644 (file)
index c152d41..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-/**
- * Convenience class for weighted consistent hash rings.
- *
- * 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
- */
-
-/**
- * Convenience class for weighted consistent hash rings
- *
- * @since 1.22
- */
-class HashRing {
-       /** @var Array (location => weight) */
-       protected $sourceMap = array();
-       /** @var Array (location => (start, end)) */
-       protected $ring = array();
-
-       const RING_SIZE = 268435456; // 2^28
-
-       /**
-        * @param array $map (location => weight)
-        */
-       public function __construct( array $map ) {
-               $map = array_filter( $map, function ( $w ) {
-                       return $w > 0;
-               } );
-               if ( !count( $map ) ) {
-                       throw new MWException( "Ring is empty or all weights are zero." );
-               }
-               $this->sourceMap = $map;
-               // Sort the locations based on the hash of their names
-               $hashes = array();
-               foreach ( $map as $location => $weight ) {
-                       $hashes[$location] = sha1( $location );
-               }
-               uksort( $map, function ( $a, $b ) use ( $hashes ) {
-                       return strcmp( $hashes[$a], $hashes[$b] );
-               } );
-               // Fit the map to weight-proportionate one with a space of size RING_SIZE
-               $sum = array_sum( $map );
-               $standardMap = array();
-               foreach ( $map as $location => $weight ) {
-                       $standardMap[$location] = (int)floor( $weight / $sum * self::RING_SIZE );
-               }
-               // Build a ring of RING_SIZE spots, with each location at a spot in location hash order
-               $index = 0;
-               foreach ( $standardMap as $location => $weight ) {
-                       // Location covers half-closed interval [$index,$index + $weight)
-                       $this->ring[$location] = array( $index, $index + $weight );
-                       $index += $weight;
-               }
-               // Make sure the last location covers what is left
-               end( $this->ring );
-               $this->ring[key( $this->ring )][1] = self::RING_SIZE;
-       }
-
-       /**
-        * Get the location of an item on the ring
-        *
-        * @param string $item
-        * @return string Location
-        */
-       public function getLocation( $item ) {
-               $locations = $this->getLocations( $item, 1 );
-
-               return $locations[0];
-       }
-
-       /**
-        * Get the location of an item on the ring, as well as the next clockwise locations
-        *
-        * @param string $item
-        * @param integer $limit Maximum number of locations to return
-        * @return array List of locations
-        */
-       public function getLocations( $item, $limit ) {
-               $locations = array();
-               $primaryLocation = null;
-               $spot = hexdec( substr( sha1( $item ), 0, 7 ) ); // first 28 bits
-               foreach ( $this->ring as $location => $range ) {
-                       if ( count( $locations ) >= $limit ) {
-                               break;
-                       }
-                       // The $primaryLocation is the location the item spot is in.
-                       // After that is reached, keep appending the next locations.
-                       if ( ( $range[0] <= $spot && $spot < $range[1] ) || $primaryLocation !== null ) {
-                               if ( $primaryLocation === null ) {
-                                       $primaryLocation = $location;
-                               }
-                               $locations[] = $location;
-                       }
-               }
-               // If more locations are requested, wrap-around and keep adding them
-               reset( $this->ring );
-               while ( count( $locations ) < $limit ) {
-                       list( $location, ) = each( $this->ring );
-                       if ( $location === $primaryLocation ) {
-                               break; // don't go in circles
-                       }
-                       $locations[] = $location;
-               }
-
-               return $locations;
-       }
-
-       /**
-        * Get the map of locations to weight (ignores 0-weight items)
-        *
-        * @return array
-        */
-       public function getLocationWeights() {
-               return $this->sourceMap;
-       }
-
-       /**
-        * Get a new hash ring with a location removed from the ring
-        *
-        * @param string $location
-        * @return HashRing|bool Returns false if no non-zero weighted spots are left
-        */
-       public function newWithoutLocation( $location ) {
-               $map = $this->sourceMap;
-               unset( $map[$location] );
-               if ( count( $map ) ) {
-                       return new self( $map );
-               }
-
-               return false;
-       }
-}
index 002dcd9..871f71b 100644 (file)
@@ -367,7 +367,6 @@ class IP {
        /**
         * Determine if an IP address really is an IP address, and if it is public,
         * i.e. not RFC 1918 or similar
-        * Comes from ProxyTools.php
         *
         * @param $ip String
         * @return Boolean
@@ -482,7 +481,6 @@ class IP {
        /**
         * Given an IP address in dotted-quad/octet notation, returns an unsigned integer.
         * Like ip2long() except that it actually works and has a consistent error return value.
-        * Comes from ProxyTools.php
         *
         * @param string $ip quad dotted IP address.
         * @return Mixed: string/int/false
@@ -491,6 +489,8 @@ class IP {
                if ( self::isIPv6( $ip ) ) {
                        $n = self::toUnsigned6( $ip );
                } else {
+                       // Bug 60035: an IP with leading 0's fails in ip2long sometimes (e.g. *.08)
+                       $ip = preg_replace( '/(?<=\.)0+(?=[1-9])/', '', $ip );
                        $n = ip2long( $ip );
                        if ( $n < 0 ) {
                                $n += pow( 2, 32 );
diff --git a/includes/utils/MappedIterator.php b/includes/utils/MappedIterator.php
deleted file mode 100644 (file)
index f2e6df6..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?php
-/**
- * Convenience class for generating iterators from iterators.
- *
- * 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
- */
-
-/**
- * Convenience class for generating iterators from iterators.
- *
- * @since 1.21
- */
-class MappedIterator extends FilterIterator {
-       /** @var callable */
-       protected $vCallback;
-       /** @var callable */
-       protected $aCallback;
-       /** @var array */
-       protected $cache = array();
-
-       protected $rewound = false; // boolean; whether rewind() has been called
-
-       /**
-        * Build an new iterator from a base iterator by having the former wrap the
-        * later, returning the result of "value" callback for each current() invocation.
-        * The callback takes the result of current() on the base iterator as an argument.
-        * The keys of the base iterator are reused verbatim.
-        *
-        * An "accept" callback can also be provided which will be called for each value in
-        * the base iterator (post-callback) and will return true if that value should be
-        * included in iteration of the MappedIterator (otherwise it will be filtered out).
-        *
-        * @param Iterator|Array $iter
-        * @param callable $vCallback Value transformation callback
-        * @param array $options Options map (includes "accept") (since 1.22)
-        * @throws MWException
-        */
-       public function __construct( $iter, $vCallback, array $options = array() ) {
-               if ( is_array( $iter ) ) {
-                       $baseIterator = new ArrayIterator( $iter );
-               } elseif ( $iter instanceof Iterator ) {
-                       $baseIterator = $iter;
-               } else {
-                       throw new MWException( "Invalid base iterator provided." );
-               }
-               parent::__construct( $baseIterator );
-               $this->vCallback = $vCallback;
-               $this->aCallback = isset( $options['accept'] ) ? $options['accept'] : null;
-       }
-
-       public function next() {
-               $this->cache = array();
-               parent::next();
-       }
-
-       public function rewind() {
-               $this->rewound = true;
-               $this->cache = array();
-               parent::rewind();
-       }
-
-       public function accept() {
-               $value = call_user_func( $this->vCallback, $this->getInnerIterator()->current() );
-               $ok = ( $this->aCallback ) ? call_user_func( $this->aCallback, $value ) : true;
-               if ( $ok ) {
-                       $this->cache['current'] = $value;
-               }
-
-               return $ok;
-       }
-
-       public function key() {
-               $this->init();
-
-               return parent::key();
-       }
-
-       public function valid() {
-               $this->init();
-
-               return parent::valid();
-       }
-
-       public function current() {
-               $this->init();
-               if ( parent::valid() ) {
-                       return $this->cache['current'];
-               } else {
-                       return null; // out of range
-               }
-       }
-
-       /**
-        * Obviate the usual need for rewind() before using a FilterIterator in a manual loop
-        */
-       protected function init() {
-               if ( !$this->rewound ) {
-                       $this->rewind();
-               }
-       }
-}
diff --git a/includes/utils/ScopedCallback.php b/includes/utils/ScopedCallback.php
deleted file mode 100644 (file)
index ef22e0a..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * This file deals with RAII style scoped callbacks.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-/**
- * Class for asserting that a callback happens when an dummy object leaves scope
- *
- * @since 1.21
- */
-class ScopedCallback {
-       /** @var callable */
-       protected $callback;
-
-       /**
-        * @param callable $callback
-        * @throws MWException
-        */
-       public function __construct( $callback ) {
-               if ( !is_callable( $callback ) ) {
-                       throw new MWException( "Provided callback is not valid." );
-               }
-               $this->callback = $callback;
-       }
-
-       /**
-        * Trigger a scoped callback and destroy it.
-        * This is the same is just setting it to null.
-        *
-        * @param ScopedCallback $sc
-        */
-       public static function consume( ScopedCallback &$sc = null ) {
-               $sc = null;
-       }
-
-       /**
-        * Destroy a scoped callback without triggering it
-        *
-        * @param ScopedCallback $sc
-        */
-       public static function cancel( ScopedCallback &$sc = null ) {
-               if ( $sc ) {
-                       $sc->callback = null;
-               }
-               $sc = null;
-       }
-
-       /**
-        * Trigger the callback when this leaves scope
-        */
-       function __destruct() {
-               if ( $this->callback !== null ) {
-                       call_user_func( $this->callback );
-               }
-       }
-}
index 10ff957..e60293b 100644 (file)
@@ -40,6 +40,7 @@ class UIDGenerator {
        protected $fileHandles = array(); // cache file handles
 
        const QUICK_RAND = 1; // get randomness from fast and insecure sources
+       const QUICK_VOLATILE = 2; // use an APC like in-memory counter if available
 
        protected function __construct() {
                $idFile = wfTempDir() . '/mw-' . __CLASS__ . '-UID-nodeid';
@@ -214,6 +215,116 @@ class UIDGenerator {
                return str_replace( '-', '', self::newUUIDv4( $flags ) );
        }
 
+       /**
+        * Return an ID that is sequential *only* for this node and bucket
+        *
+        * These IDs are suitable for per-host sequence numbers, e.g. for some packet protocols.
+        * If UIDGenerator::QUICK_VOLATILE is used the counter might reset on server restart.
+        *
+        * @param string $bucket Arbitrary bucket name (should be ASCII)
+        * @param integer $bits Bit size (<=48) of resulting numbers before wrap-around
+        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @return float Integer value as float
+        * @since 1.23
+        */
+       public static function newSequentialPerNodeID( $bucket, $bits = 48, $flags = 0 ) {
+               return current( self::newSequentialPerNodeIDs( $bucket, $bits, 1, $flags ) );
+       }
+
+       /**
+        * Return IDs that are sequential *only* for this node and bucket
+        *
+        * @see UIDGenerator::newSequentialPerNodeID()
+        * @param string $bucket Arbitrary bucket name (should be ASCII)
+        * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
+        * @param integer $count Number of IDs to return (1 to 10000)
+        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @return array Ordered list of float integer values
+        * @since 1.23
+        */
+       public static function newSequentialPerNodeIDs( $bucket, $bits, $count, $flags = 0 ) {
+               $gen = self::singleton();
+               return $gen->getSequentialPerNodeIDs( $bucket, $bits, $count, $flags );
+       }
+
+       /**
+        * Return IDs that are sequential *only* for this node and bucket
+        *
+        * @see UIDGenerator::newSequentialPerNodeID()
+        * @param string $bucket Arbitrary bucket name (should be ASCII)
+        * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
+        * @param integer $count Number of IDs to return (1 to 10000)
+        * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+        * @return array Ordered list of float integer values
+        */
+       protected function getSequentialPerNodeIDs( $bucket, $bits, $count, $flags ) {
+               if ( $count <= 0 ) {
+                       return array(); // nothing to do
+               } elseif ( $count > 10000 ) {
+                       throw new MWException( "Number of requested IDs ($count) is too high." );
+               } elseif ( $bits < 16 || $bits > 48 ) {
+                       throw new MWException( "Requested bit size ($bits) is out of range." );
+               }
+
+               $counter = null; // post-increment persistent counter value
+
+               // Use APC/eAccelerator/xcache if requested, available, and not in CLI mode;
+               // Counter values would not survive accross script instances in CLI mode.
+               $cache = null;
+               if ( ( $flags & self::QUICK_VOLATILE ) && PHP_SAPI !== 'cli' ) {
+                       try {
+                               $cache = ObjectCache::newAccelerator( array() );
+                       } catch ( MWException $e ) {} // not supported
+               }
+               if ( $cache ) {
+                       $counter = $cache->incr( $bucket, $count );
+                       if ( $counter === false ) {
+                               if ( !$cache->add( $bucket, $count ) ) {
+                                       throw new MWException( 'Unable to set value to ' . get_class( $cache ) );
+                               }
+                               $counter = $count;
+                       }
+               }
+
+               // Note: use of fmod() avoids "division by zero" on 32 bit machines
+               if ( $counter === null ) {
+                       $path = wfTempDir() . '/mw-' . __CLASS__ . '-' . rawurlencode( $bucket ) . '-48';
+                       // Get the UID lock file handle
+                       if ( isset( $this->fileHandles[$path] ) ) {
+                               $handle = $this->fileHandles[$path];
+                       } else {
+                               $handle = fopen( $path, 'cb+' );
+                               $this->fileHandles[$path] = $handle ?: null; // cache
+                       }
+                       // Acquire the UID lock file
+                       if ( $handle === false ) {
+                               throw new MWException( "Could not open '{$path}'." );
+                       } elseif ( !flock( $handle, LOCK_EX ) ) {
+                               fclose( $handle );
+                               throw new MWException( "Could not acquire '{$path}'." );
+                       }
+                       // Fetch the counter value and increment it...
+                       rewind( $handle );
+                       $counter = floor( trim( fgets( $handle ) ) ) + $count; // fetch as float
+                       // Write back the new counter value
+                       ftruncate( $handle, 0 );
+                       rewind( $handle );
+                       fwrite( $handle, fmod( $counter, pow( 2, 48 ) ) ); // warp-around as needed
+                       fflush( $handle );
+                       // Release the UID lock file
+                       flock( $handle, LOCK_UN );
+               }
+
+               $ids = array();
+               $divisor = pow( 2, $bits );
+               $currentId = floor( $counter - $count ); // pre-increment counter value
+               for ( $i = 0; $i < $count; ++$i ) {
+                       $ids[] = fmod( ++$currentId, $divisor );
+               }
+
+               return $ids;
+       }
+
        /**
         * Get a (time,counter,clock sequence) where (time,counter) is higher
         * than any previous (time,counter) value for the given clock sequence.
@@ -237,6 +348,7 @@ class UIDGenerator {
                if ( $handle === false ) {
                        throw new MWException( "Could not open '{$this->$lockFile}'." );
                } elseif ( !flock( $handle, LOCK_EX ) ) {
+                       fclose( $handle );
                        throw new MWException( "Could not acquire '{$this->$lockFile}'." );
                }
                // Get the current timestamp, clock sequence number, last time, and counter
index 2038bac..320688a 100644 (file)
@@ -62,7 +62,6 @@ class FakeConverter {
        function getParsedTitle() { return ''; }
        function markNoConversion( $text, $noParse = false ) { return $text; }
        function convertCategoryKey( $key ) { return $key; }
-       function convertLinkToAllVariants( $text ) { return $this->autoConvertToAllVariants( $text ); }
        /** @deprecated since 1.22 is no longer used */
        function armourMath( $text ) { return $text; }
        function validateVariant( $variant = null ) { return $variant === $this->mLang->getCode() ? $variant : null; }
@@ -213,8 +212,8 @@ class Language {
        protected static function newFromCode( $code ) {
                // Protect against path traversal below
                if ( !Language::isValidCode( $code )
-                       || strcspn( $code, ":/\\\000" ) !== strlen( $code ) )
-               {
+                       || strcspn( $code, ":/\\\000" ) !== strlen( $code )
+               {
                        throw new MWException( "Invalid language code \"$code\"" );
                }
 
@@ -929,6 +928,7 @@ class Language {
         * @since 1.20
         */
        public static function fetchLanguageName( $code, $inLanguage = null, $include = 'all' ) {
+               $code = strtolower( $code );
                $array = self::fetchLanguageNames( $inLanguage, $include );
                return !array_key_exists( $code, $array ) ? '' : $array[$code];
        }
@@ -1502,8 +1502,7 @@ class Language {
                if (
                        ( $zy > 1582 ) || ( ( $zy == 1582 ) && ( $zm > 10 ) ) ||
                        ( ( $zy == 1582 ) && ( $zm == 10 ) && ( $zd > 14 ) )
-               )
-               {
+               ) {
                        $zjd = (int)( ( 1461 * ( $zy + 4800 + (int)( ( $zm - 14 ) / 12 ) ) ) / 4 ) +
                                        (int)( ( 367 * ( $zm - 2 - 12 * ( (int)( ( $zm - 14 ) / 12 ) ) ) ) / 12 ) -
                                        (int)( ( 3 * (int)( ( ( $zy + 4900 + (int)( ( $zm - 14 ) / 12 ) ) / 100 ) ) ) / 4 ) +
@@ -1753,8 +1752,7 @@ class Language {
                                ( ( $gy > 1912 ) && ( $gy < 1926 ) ) ||
                                ( ( $gy == 1926 ) && ( $gm < 12 ) ) ||
                                ( ( $gy == 1926 ) && ( $gm == 12 ) && ( $gd < 26 ) )
-                       )
-                       {
+                       ) {
                                # Taishō period
                                $gy_gannen = $gy - 1912 + 1;
                                $gy_offset = $gy_gannen;
@@ -1766,8 +1764,7 @@ class Language {
                                ( ( $gy == 1926 ) && ( $gm == 12 ) && ( $gd >= 26 ) ) ||
                                ( ( $gy > 1926 ) && ( $gy < 1989 ) ) ||
                                ( ( $gy == 1989 ) && ( $gm == 1 ) && ( $gd < 8 ) )
-                       )
-                       {
+                       ) {
                                # Shōwa period
                                $gy_gannen = $gy - 1926 + 1;
                                $gy_offset = $gy_gannen;
@@ -3635,17 +3632,10 @@ class Language {
         */
        function convertPlural( $count, $forms ) {
                // Handle explicit n=pluralform cases
-               foreach ( $forms as $index => $form ) {
-                       if ( preg_match( '/^\d+=/i', $form ) ) {
-                               $pos = strpos( $form, '=' );
-                               if ( substr( $form, 0, $pos ) === (string)$count ) {
-                                       return substr( $form, $pos + 1 );
-                               }
-                               unset( $forms[$index] );
-                       }
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
                }
-
-               $forms = array_values( $forms );
                if ( !count( $forms ) ) {
                        return '';
                }
@@ -3655,6 +3645,34 @@ class Language {
                return $forms[$pluralForm];
        }
 
+       /**
+        * Handles explicit plural forms for Language::convertPlural()
+        *
+        * In {{PLURAL:$1|0=nothing|one|many}}, 0=nothing will be returned if $1 equals zero.
+        * If an explicitly defined plural form matches the $count, then
+        * string value returned, otherwise array returned for further consideration
+        * by CLDR rules or overridden convertPlural().
+        *
+        * @since 1.23
+        *
+        * @param int $count non-localized number
+        * @param array $forms different plural forms
+        *
+        * @return array|string
+        */
+       protected function handleExplicitPluralForms( $count, array $forms ) {
+               foreach ( $forms as $index => $form ) {
+                       if ( preg_match( '/\d+=/i', $form ) ) {
+                               $pos = strpos( $form, '=' );
+                               if ( substr( $form, 0, $pos ) === (string) $count ) {
+                                       return substr( $form, $pos + 1 );
+                               }
+                               unset( $forms[$index] );
+                       }
+               }
+               return array_values( $forms );
+       }
+
        /**
         * Checks that convertPlural was given an array and pads it to requested
         * amount of forms by copying the last one.
@@ -3886,21 +3904,6 @@ class Language {
                $this->mConverter->findVariantLink( $link, $nt, $ignoreOtherCond );
        }
 
-       /**
-        * If a language supports multiple variants, converts text
-        * into an array of all possible variants of the text:
-        *  'variant' => text in that variant
-        *
-        * @deprecated since 1.17 Use autoConvertToAllVariants()
-        *
-        * @param $text string
-        *
-        * @return string
-        */
-       public function convertLinkToAllVariants( $text ) {
-               return $this->mConverter->convertLinkToAllVariants( $text );
-       }
-
        /**
         * returns language specific options used by User::getPageRenderHash()
         * for example, the preferred language variant
@@ -4048,8 +4051,8 @@ class Language {
        public static function getFileName( $prefix = 'Language', $code, $suffix = '.php' ) {
                // Protect against path traversal
                if ( !Language::isValidCode( $code )
-                       || strcspn( $code, ":/\\\000" ) !== strlen( $code ) )
-               {
+                       || strcspn( $code, ":/\\\000" ) !== strlen( $code )
+               {
                        throw new MWException( "Invalid language code \"$code\"" );
                }
 
index d4c38af..bb5b49f 100644 (file)
@@ -102,8 +102,7 @@ class LanguageConverter {
                        'R' => 'R',       // raw content
                        'D' => 'D',       // convert description (subclass implement)
                        '-' => '-',       // remove convert (not implement)
-                       'H' => 'H',       // add rule for convert code
-                                                 // (but no display in placed code)
+                       'H' => 'H',       // add rule for convert code (but no display in placed code)
                        'N' => 'N'        // current variant name
                );
                $this->mFlags = array_merge( $defaultflags, $flags );
@@ -237,7 +236,8 @@ class LanguageConverter {
                        $ret = $wgRequest->getVal( 'uselang' );
                }
 
-               return $this->mURLVariant = $this->validateVariant( $ret );
+               $this->mURLVariant = $this->validateVariant( $ret );
+               return $this->mURLVariant;
        }
 
        /**
@@ -270,7 +270,8 @@ class LanguageConverter {
                        $ret = $wgUser->getOption( 'language' );
                }
 
-               return $this->mUserVariant = $this->validateVariant( $ret );
+               $this->mUserVariant = $this->validateVariant( $ret );
+               return $this->mUserVariant;
        }
 
        /**
@@ -402,9 +403,9 @@ class LanguageConverter {
                        $startPos = $elementPos + strlen( $element );
 
                        // Translate any alt or title attributes inside the matched element
-                       if ( $element !== '' && preg_match( '/^(<[^>\s]*)\s([^>]*)(.*)$/', $element,
-                               $elementMatches ) )
-                       {
+                       if ( $element !== ''
+                               && preg_match( '/^(<[^>\s]*)\s([^>]*)(.*)$/', $element, $elementMatches )
+                       {
                                $attrs = Sanitizer::decodeTagAttributes( $elementMatches[2] );
                                $changed = false;
                                foreach ( array( 'title', 'alt' ) as $attrName ) {
@@ -490,21 +491,6 @@ class LanguageConverter {
                return $ret;
        }
 
-       /**
-        * Convert link text to all valid variants.
-        * In the first, this function only convert text outside the
-        * "-{" "}-" markups. Since the "{" and "}" are not allowed in
-        * titles, the text will get all converted always.
-        * So I removed this feature and deprecated the function.
-        *
-        * @param $text String: the text to be converted
-        * @return Array: variant => converted text
-        * @deprecated since 1.17 Use autoConvertToAllVariants() instead
-        */
-       public function convertLinkToAllVariants( $text ) {
-               return $this->autoConvertToAllVariants( $text );
-       }
-
        /**
         * Apply manual conversion rules.
         *
@@ -778,12 +764,12 @@ class LanguageConverter {
                $ns = NS_MAIN;
 
                if ( $disableLinkConversion ||
-                        ( !$ignoreOtherCond &&
-                          ( $isredir == 'no'
-                                || $action == 'edit'
-                                || $action == 'submit'
-                                || $linkconvert == 'no'
-                                || $wgUser->getOption( 'noconvertlink' ) == 1 ) ) ) {
+                       ( !$ignoreOtherCond &&
+                               ( $isredir == 'no'
+                                       || $action == 'edit'
+                                       || $action == 'submit'
+                                       || $linkconvert == 'no'
+                                       || $wgUser->getOption( 'noconvertlink' ) == 1 ) ) ) {
                        return;
                }
 
@@ -876,8 +862,7 @@ class LanguageConverter {
                        $this->mTables = $wgLangConvMemc->get( $this->mCacheKey );
                        wfProfileOut( __METHOD__ . '-cache' );
                }
-               if ( !$this->mTables
-                        || !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
+               if ( !$this->mTables || !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
                        wfProfileIn( __METHOD__ . '-recache' );
                        // not in cache, or we need a fresh reload.
                        // We will first load the default tables
@@ -1004,8 +989,7 @@ class LanguageConverter {
                                continue;
                        }
                        $mappings = explode( '}-', $block, 2 );
-                       $stripped = str_replace( array( "'", '"', '*', '#' ), '',
-                                                                        $mappings[0] );
+                       $stripped = str_replace( array( "'", '"', '*', '#' ), '', $mappings[0] );
                        $table = StringUtils::explode( ';', $stripped );
                        foreach ( $table as $t ) {
                                $m = explode( '=>', $t, 3 );
@@ -1285,9 +1269,9 @@ class ConverterRule {
                                $from = trim( $u[0] );
                                $v = trim( $u[1] );
                                if ( array_key_exists( $v, $unidtable )
-                                        && !is_array( $unidtable[$v] )
-                                        && $to
-                                        && in_array( $v, $variants ) ) {
+                                       && !is_array( $unidtable[$v] )
+                                       && $to
+                                       && in_array( $v, $variants ) ) {
                                        $unidtable[$v] = array( $from => $to );
                                } elseif ( $to && in_array( $v, $variants ) ) {
                                        $unidtable[$v][$from] = $to;
@@ -1353,8 +1337,7 @@ class ConverterRule {
                                $disp = $disp[0];
                        }
                        // or display frist text under disable manual convert
-                       if ( !$disp
-                                && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
+                       if ( !$disp && $this->mConverter->mManualLevel[$variant] == 'disable' ) {
                                if ( count( $bidtable ) > 0 ) {
                                        $disp = array_values( $bidtable );
                                        $disp = $disp[0];
@@ -1446,8 +1429,8 @@ class ConverterRule {
                        }
                        /* for unidirectional array fill to convert tables */
                        if ( ( $manLevel[$v] == 'bidirectional' || $manLevel[$v] == 'unidirectional' )
-                               && isset( $unidtable[$v] ) )
-                       {
+                               && isset( $unidtable[$v] )
+                       {
                                if ( isset( $this->mConvTable[$v] ) ) {
                                        $this->mConvTable[$v] = array_merge( $this->mConvTable[$v], $unidtable[$v] );
                                } else {
@@ -1477,8 +1460,9 @@ class ConverterRule {
                                // then convert <text to convert> to current language
                                $this->mRules = $this->mConverter->autoConvert( $this->mRules,
                                        $variant );
-                       } else { // if current variant no in flags,
-                                  // then we check its fallback variants.
+                       } else {
+                               // if current variant no in flags,
+                               // then we check its fallback variants.
                                $variantFallbacks =
                                        $this->mConverter->getVariantFallbacks( $variant );
                                if ( is_array( $variantFallbacks ) ) {
index c5c7d23..fa6e697 100644 (file)
        'crh-cyrl' => "къырымтатарджа (Кирилл)\xE2\x80\x8E",       # Crimean Tatar (Cyrillic)
        'cs' => 'čeština',    # Czech
        'csb' => 'kaszëbsczi', # Cassubian
-       'cu' => 'словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',      # Old Church Slavonic (ancient language)
+       'cu' => 'словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ',        # Old Church Slavonic (ancient language)
        'cv' => 'Чӑвашла',       # Chuvash
        'cy' => 'Cymraeg',              # Welsh
        'da' => 'dansk',                # Danish
index 6497b50..05b9550 100644 (file)
  * @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
  */
 class LanguageBe_tarask extends Language {
-       /**
-        * Plural form transformations
-        *
-        * $wordform1 - singular form (for 1, 21, 31, 41...)
-        * $wordform2 - plural form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
-        * $wordform3 - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
-        */
-
-       /**
-        * @param $count int
-        * @param $forms array
-        *
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count == 1
-               // plural   for $count != 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count == 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms instead of 3
-               //        http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-
        /**
         * The Belarusian language uses apostrophe sign,
         * but the characters used for this could be both U+0027 and U+2019.
index 975157f..0ae0524 100644 (file)
@@ -49,7 +49,7 @@ class LanguageDsb extends Language {
                        case 'lokatiw': # lokatiw
                                $word = 'wo ' . $word;
                                break;
-                       }
+               }
 
                return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
        }
diff --git a/languages/classes/LanguageGv.php b/languages/classes/LanguageGv.php
deleted file mode 100644 (file)
index ba8a53c..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * Manx (Gaelg) specific code.
- *
- * 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 Niklas Laxström
- * @ingroup Language
- */
-
-/**
- * Manx (Gaelg)
- *
- * @ingroup Language
- */
-class LanguageGv extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               $forms = $this->preConvertPlural( $forms, 4 );
-
-               if ( $count > 0 && ( $count % 20 ) === 0 ) {
-                       return $forms[0];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[1];
-                               case 2: return $forms[2];
-                               default: return $forms[3];
-                       }
-               }
-       }
-
-}
diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php
deleted file mode 100644 (file)
index 910bc10..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-/**
- * Croatian (hrvatski) specific code.
- *
- * 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 Language
- */
-
-/**
- * Croatian (hrvatski)
- *
- * @ingroup Language
- */
-class LanguageHr extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-               // @todo FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing.
-               //        http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-}
index 5623f3c..1fc1404 100644 (file)
@@ -49,7 +49,7 @@ class LanguageHsb extends Language {
                        case 'lokatiw': # lokatiw
                                $word = 'wo ' . $word;
                                break;
-                       }
+               }
 
                return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
        }
index abd2e7c..a46eafb 100644 (file)
@@ -39,23 +39,23 @@ class IuConverter extends LanguageConverter {
 
        protected $mDoContentConvert;
        public $mToLatin = array(
-               'ᐦ' => 'h',   'ᐃ' => 'i',    'ᐄ' => 'ii',    'ᐅ' => 'u',    'ᐆ' => 'uu',    'ᐊ' => 'a',    'ᐋ' => 'aa',
-               'ᑉ' => 'p',   'ᐱ' => 'pi',   'ᐲ' => 'pii',   'ᐳ' => 'pu',   'ᐴ' => 'puu',   'ᐸ' => 'pa',   'ᐹ' => 'paa',
-               'ᑦ' => 't',   'ᑎ' => 'ti',   'ᑏ' => 'tii',   'ᑐ' => 'tu',   'ᑑ' => 'tuu',   'ᑕ' => 'ta',   'ᑖ' => 'taa',
-               'ᒃ' => 'k',   'ᑭ' => 'ki',   'ᑮ' => 'kii',   'ᑯ' => 'ku',   'ᑰ' => 'kuu',   'ᑲ' => 'ka',   'ᑳ' => 'kaa',
+               'ᐦ' => 'h', 'ᐃ' => 'i', 'ᐄ' => 'ii', 'ᐅ' => 'u', 'ᐆ' => 'uu', 'ᐊ' => 'a', 'ᐋ' => 'aa',
+               'ᑉ' => 'p', 'ᐱ' => 'pi', 'ᐲ' => 'pii', 'ᐳ' => 'pu', 'ᐴ' => 'puu', 'ᐸ' => 'pa', 'ᐹ' => 'paa',
+               'ᑦ' => 't', 'ᑎ' => 'ti', 'ᑏ' => 'tii', 'ᑐ' => 'tu', 'ᑑ' => 'tuu', 'ᑕ' => 'ta', 'ᑖ' => 'taa',
+               'ᒃ' => 'k', 'ᑭ' => 'ki', 'ᑮ' => 'kii', 'ᑯ' => 'ku', 'ᑰ' => 'kuu', 'ᑲ' => 'ka', 'ᑳ' => 'kaa',
                'ᖅᒃ' => 'qq', 'ᖅᑭ' => 'qqi', 'ᖅᑮ' => 'qqii', 'ᖅᑯ' => 'qqu', 'ᖅᑰ' => 'ᖅqquu', 'ᖅᑲ' => 'qqa', 'ᖅᑳ' => 'qqaa',
-               'ᒡ' => 'g',   'ᒋ' => 'gi',   'ᒌ' => 'gii',   'ᒍ' => 'gu',   'ᒎ' => 'guu',   'ᒐ' => 'ga',   'ᒑ' => 'gaa',
-               'ᒻ' => 'm',   'ᒥ' => 'mi',   'ᒦ' => 'mii',   'ᒧ' => 'mu',   'ᒨ' => 'muu',   'ᒪ' => 'ma',   'ᒫ' => 'maa',
-               'ᓐ' => 'n',   'ᓂ' => 'ni',  'ᓃ' => 'nii',   'ᓄ' => 'nu',   'ᓅ' => 'nuu',   'ᓇ' => 'na',   'ᓈ' => 'naa',
-               'ᔅ' => 's',   'ᓯ' => 'si',   'ᓰ' => 'sii',   'ᓱ' => 'su',   'ᓲ' => 'suu',   'ᓴ' => 'sa',   'ᓵ' => 'saa',
-               'ᓪ' => 'l',   'ᓕ' => 'li',  'ᓖ' => 'lii',   'ᓗ' => 'lu',   'ᓘ' => 'luu',   'ᓚ' => 'la',   'ᓛ' => 'laa',
-               'ᔾ' => 'j',   'ᔨ' => 'ji',   'ᔩ' => 'jii',   'ᔪ' => 'ju',   'ᔫ' => 'juu',   'ᔭ' => 'ja',   'ᔮ' => 'jaa',
-               'ᕝ' => 'v',   'ᕕ' => 'vi',   'ᕖ' => 'vii',   'ᕗ' => 'vu',   'ᕘ' => 'vuu',   'ᕙ' => 'va',   'ᕚ' => 'vaa',
-               'ᕐ' => 'r',   'ᕆ' => 'ri',   'ᕇ' => 'rii',   'ᕈ' => 'ru',   'ᕉ' => 'ruu',   'ᕋ' => 'ra',   'ᕌ' => 'raa',
-               'ᖅ' => 'q',   'ᕿ' => 'qi',   'ᖀ' => 'qii',   'ᖁ' => 'qu',   'ᖂ' => 'quu',   'ᖃ' => 'qa',   'ᖄ' => 'qaa',
-               'ᖕ' => 'ng',  'ᖏ' => 'ngi',  'ᖐ' => 'ngii',  'ᖑ' => 'ngu',  'ᖒ' => 'nguu',  'ᖓ' => 'nga',  'ᖔ' => 'ngaa',
+               'ᒡ' => 'g', 'ᒋ' => 'gi', 'ᒌ' => 'gii', 'ᒍ' => 'gu', 'ᒎ' => 'guu', 'ᒐ' => 'ga', 'ᒑ' => 'gaa',
+               'ᒻ' => 'm', 'ᒥ' => 'mi', 'ᒦ' => 'mii', 'ᒧ' => 'mu', 'ᒨ' => 'muu', 'ᒪ' => 'ma', 'ᒫ' => 'maa',
+               'ᓐ' => 'n', 'ᓂ' => 'ni', 'ᓃ' => 'nii', 'ᓄ' => 'nu', 'ᓅ' => 'nuu', 'ᓇ' => 'na', 'ᓈ' => 'naa',
+               'ᔅ' => 's', 'ᓯ' => 'si', 'ᓰ' => 'sii', 'ᓱ' => 'su', 'ᓲ' => 'suu', 'ᓴ' => 'sa', 'ᓵ' => 'saa',
+               'ᓪ' => 'l', 'ᓕ' => 'li', 'ᓖ' => 'lii', 'ᓗ' => 'lu', 'ᓘ' => 'luu', 'ᓚ' => 'la', 'ᓛ' => 'laa',
+               'ᔾ' => 'j', 'ᔨ' => 'ji', 'ᔩ' => 'jii', 'ᔪ' => 'ju', 'ᔫ' => 'juu', 'ᔭ' => 'ja', 'ᔮ' => 'jaa',
+               'ᕝ' => 'v', 'ᕕ' => 'vi', 'ᕖ' => 'vii', 'ᕗ' => 'vu', 'ᕘ' => 'vuu', 'ᕙ' => 'va', 'ᕚ' => 'vaa',
+               'ᕐ' => 'r', 'ᕆ' => 'ri', 'ᕇ' => 'rii', 'ᕈ' => 'ru', 'ᕉ' => 'ruu', 'ᕋ' => 'ra', 'ᕌ' => 'raa',
+               'ᖅ' => 'q', 'ᕿ' => 'qi', 'ᖀ' => 'qii', 'ᖁ' => 'qu', 'ᖂ' => 'quu', 'ᖃ' => 'qa', 'ᖄ' => 'qaa',
+               'ᖕ' => 'ng', 'ᖏ' => 'ngi', 'ᖐ' => 'ngii', 'ᖑ' => 'ngu', 'ᖒ' => 'nguu', 'ᖓ' => 'nga', 'ᖔ' => 'ngaa',
                'ᖖ' => 'nng', 'ᙱ' => 'nngi', 'ᙲ' => 'nngii', 'ᙳ' => 'nngu', 'ᙴ' => 'nnguu', 'ᙵ' => 'nnga', 'ᙶ' => 'nngaa',
-               'ᖦ' => 'ɫ',   'ᖠ' => 'ɫi',    'ᖡ' => 'ɫii',   'ᖢ' => 'ɫu',    'ᖣ' => 'ɫuu',   'ᖤ' => 'ɫa',    'ᖥ' => 'ɫaa',
+               'ᖦ' => 'ɫ', 'ᖠ' => 'ɫi', 'ᖡ' => 'ɫii', 'ᖢ' => 'ɫu', 'ᖣ' => 'ɫuu', 'ᖤ' => 'ɫa', 'ᖥ' => 'ɫaa',
        );
 
        public $mUpperToLowerCaseLatin = array(
@@ -68,23 +68,23 @@ class IuConverter extends LanguageConverter {
        );
 
        public $mToSyllabics = array(
-               'h' => 'ᐦ',   'i' => 'ᐃ',    'ii' => 'ᐄ',    'u' => 'ᐅ',    'uu' => 'ᐆ',    'a' => 'ᐊ',    'aa' => 'ᐋ',
-               'p' => 'ᑉ',   'pi' => 'ᐱ',   'pii' => 'ᐲ',   'pu' => 'ᐳ',   'puu' => 'ᐴ',   'pa' => 'ᐸ',   'paa' => 'ᐹ',
-               't' => 'ᑦ',   'ti' => 'ᑎ',   'tii' => 'ᑏ',   'tu' => 'ᑐ',   'tuu' => 'ᑑ',   'ta' => 'ᑕ',   'taa' => 'ᑖ',
-               'k' => 'ᒃ',   'ki' => 'ᑭ',   'kii' => 'ᑮ',   'ku' => 'ᑯ',   'kuu' => 'ᑰ',   'ka' => 'ᑲ',   'kaa' => 'ᑳ',
-               'g' => 'ᒡ',   'gi' => 'ᒋ',   'gii' => 'ᒌ',   'gu' => 'ᒍ',   'guu' => 'ᒎ',   'ga' => 'ᒐ',   'gaa' => 'ᒑ',
-               'm' => 'ᒻ',   'mi' => 'ᒥ',   'mii' => 'ᒦ',   'mu' => 'ᒧ',   'muu' => 'ᒨ',   'ma' => 'ᒪ',   'maa' => 'ᒫ',
-               'n' => 'ᓐ',   'ni' => 'ᓂ',   'nii' => 'ᓃ',   'nu' => 'ᓄ',   'nuu' => 'ᓅ',   'na' => 'ᓇ',   'naa' => 'ᓈ',
-               's' => 'ᔅ',   'si' => 'ᓯ',   'sii' => 'ᓰ',   'su' => 'ᓱ',   'suu' => 'ᓲ',   'sa' => 'ᓴ',   'saa' => 'ᓵ',
-               'l' => 'ᓪ',   'li' => 'ᓕ',   'lii' => 'ᓖ',   'lu' => 'ᓗ',   'luu' => 'ᓘ',   'la' => 'ᓚ',   'laa' => 'ᓛ',
-               'j' => 'ᔾ',   'ji' => 'ᔨ',   'jii' => 'ᔩ',   'ju' => 'ᔪ',   'juu' => 'ᔫ',   'ja' => 'ᔭ',   'jaa' => 'ᔮ',
-               'v' => 'ᕝ',   'vi' => 'ᕕ',   'vii' => 'ᕖ',   'vu' => 'ᕗ',   'vuu' => 'ᕘ',   'va' => 'ᕙ',   'vaa' => 'ᕚ',
-               'r' => 'ᕐ',   'ri' => 'ᕆ',   'rii' => 'ᕇ',   'ru' => 'ᕈ',   'ruu' => 'ᕉ',   'ra' => 'ᕋ',   'raa' => 'ᕌ',
-               'qq' => 'ᖅᒃ',  'qqi' => 'ᖅᑭ',  'qqii' => 'ᖅᑮ',  'qqu' => 'ᖅᑯ',  'qquu' => 'ᖅᑰ',  'qqa' => 'ᖅᑲ',  'qqaa' => 'ᖅᑳ',
-               'q' => 'ᖅ',   'qi' => 'ᕿ',   'qii' => 'ᖀ',   'qu' => 'ᖁ',   'quu' => 'ᖂ',   'qa' => 'ᖃ',   'qaa' => 'ᖄ',
-               'ng' => 'ᖕ',  'ngi' => 'ᖏ',  'ngii' => 'ᖐ',  'ngu' => 'ᖑ',  'nguu' => 'ᖒ',  'nga' => 'ᖓ',  'ngaa' => 'ᖔ',
+               'h' => 'ᐦ', 'i' => 'ᐃ', 'ii' => 'ᐄ', 'u' => 'ᐅ', 'uu' => 'ᐆ', 'a' => 'ᐊ', 'aa' => 'ᐋ',
+               'p' => 'ᑉ', 'pi' => 'ᐱ', 'pii' => 'ᐲ', 'pu' => 'ᐳ', 'puu' => 'ᐴ', 'pa' => 'ᐸ', 'paa' => 'ᐹ',
+               't' => 'ᑦ', 'ti' => 'ᑎ', 'tii' => 'ᑏ', 'tu' => 'ᑐ', 'tuu' => 'ᑑ', 'ta' => 'ᑕ', 'taa' => 'ᑖ',
+               'k' => 'ᒃ', 'ki' => 'ᑭ', 'kii' => 'ᑮ', 'ku' => 'ᑯ', 'kuu' => 'ᑰ', 'ka' => 'ᑲ', 'kaa' => 'ᑳ',
+               'g' => 'ᒡ', 'gi' => 'ᒋ', 'gii' => 'ᒌ', 'gu' => 'ᒍ', 'guu' => 'ᒎ', 'ga' => 'ᒐ', 'gaa' => 'ᒑ',
+               'm' => 'ᒻ', 'mi' => 'ᒥ', 'mii' => 'ᒦ', 'mu' => 'ᒧ', 'muu' => 'ᒨ', 'ma' => 'ᒪ', 'maa' => 'ᒫ',
+               'n' => 'ᓐ', 'ni' => 'ᓂ', 'nii' => 'ᓃ', 'nu' => 'ᓄ', 'nuu' => 'ᓅ', 'na' => 'ᓇ', 'naa' => 'ᓈ',
+               's' => 'ᔅ', 'si' => 'ᓯ', 'sii' => 'ᓰ', 'su' => 'ᓱ', 'suu' => 'ᓲ', 'sa' => 'ᓴ', 'saa' => 'ᓵ',
+               'l' => 'ᓪ', 'li' => 'ᓕ', 'lii' => 'ᓖ', 'lu' => 'ᓗ', 'luu' => 'ᓘ', 'la' => 'ᓚ', 'laa' => 'ᓛ',
+               'j' => 'ᔾ', 'ji' => 'ᔨ', 'jii' => 'ᔩ', 'ju' => 'ᔪ', 'juu' => 'ᔫ', 'ja' => 'ᔭ', 'jaa' => 'ᔮ',
+               'v' => 'ᕝ', 'vi' => 'ᕕ', 'vii' => 'ᕖ', 'vu' => 'ᕗ', 'vuu' => 'ᕘ', 'va' => 'ᕙ', 'vaa' => 'ᕚ',
+               'r' => 'ᕐ', 'ri' => 'ᕆ', 'rii' => 'ᕇ', 'ru' => 'ᕈ', 'ruu' => 'ᕉ', 'ra' => 'ᕋ', 'raa' => 'ᕌ',
+               'qq' => 'ᖅᒃ', 'qqi' => 'ᖅᑭ', 'qqii' => 'ᖅᑮ', 'qqu' => 'ᖅᑯ', 'qquu' => 'ᖅᑰ', 'qqa' => 'ᖅᑲ', 'qqaa' => 'ᖅᑳ',
+               'q' => 'ᖅ', 'qi' => 'ᕿ', 'qii' => 'ᖀ', 'qu' => 'ᖁ', 'quu' => 'ᖂ', 'qa' => 'ᖃ', 'qaa' => 'ᖄ',
+               'ng' => 'ᖕ', 'ngi' => 'ᖏ', 'ngii' => 'ᖐ', 'ngu' => 'ᖑ', 'nguu' => 'ᖒ', 'nga' => 'ᖓ', 'ngaa' => 'ᖔ',
                'nng' => 'ᖖ', 'nngi' => 'ᙱ', 'nngii' => 'ᙲ', 'nngu' => 'ᙳ', 'nnguu' => 'ᙴ', 'nnga' => 'ᙵ', 'nngaa' => 'ᙶ',
-               'ɫ' => 'ᖦ',   'ɫi' => 'ᖠ',    'ɫii' => 'ᖡ',   'ɫu' => 'ᖢ',    'ɫuu' => 'ᖣ',   'ɫa' => 'ᖤ',    'ɫaa' => 'ᖥ',
+               'ɫ' => 'ᖦ', 'ɫi' => 'ᖠ', 'ɫii' => 'ᖡ', 'ɫu' => 'ᖢ', 'ɫuu' => 'ᖣ', 'ɫa' => 'ᖤ', 'ɫaa' => 'ᖥ',
        );
 
        function loadDefaultTables() {
@@ -215,7 +215,7 @@ class LanguageIu extends Language {
 
                $variants = array( 'iu', 'ike-cans', 'ike-latn' );
                $variantfallbacks = array(
-                       'iu'    => 'ike-cans',
+                       'iu' => 'ike-cans',
                        'ike-cans' => 'iu',
                        'ike-latn' => 'iu',
                );
index 09c5727..d25ce71 100644 (file)
@@ -189,6 +189,10 @@ class LanguageKsh extends Language {
         * @return string
         */
        function convertPlural( $count, $forms ) {
+               $forms = $this->handleExplicitPluralForms( $count, $forms );
+               if ( is_string( $forms ) ) {
+                       return $forms;
+               }
                if ( !count( $forms ) ) {
                        return '';
                }
index 11b42cf..d3ac1d2 100644 (file)
@@ -44,8 +44,9 @@ class LanguageRu extends Language {
                        return $wgGrammarForms['ru'][$case][$word];
                }
 
-               # These rules are not perfect, but they are currently only used for Wikimedia site names so it doesn't
-               # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+               # These rules are not perfect, but they are currently only used for Wikimedia
+               # site names so it doesn't matter if they are wrong sometimes.
+               # Just add a special case for your site name if necessary.
 
                # substr doesn't support Unicode and mb_substr has issues,
                # so break it to characters using preg_match_all and then use array_slice and join
@@ -102,58 +103,6 @@ class LanguageRu extends Language {
                return $word;
        }
 
-       /**
-        * Plural form transformations
-        *
-        * $forms[0] - singular form (for 1, 21, 31, 41...)
-        * $forms[1] - paucal form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
-        * $forms[2] - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
-        *
-        * Examples:
-        *   message with number
-        *     "Сделано $1 {{PLURAL:$1|изменение|изменения|изменений}}"
-        *     ("$1 change[s] were made)
-        *   message without number
-        *     "Действие не может быть выполнено по {{PLURAL:$1|следующей причине|следующим причинам}}:"
-        *     ("The action cannot be performed for the following reason[s]")
-        * @param $count int
-        * @param $forms array
-        *
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count === 1
-               // plural   for $count !== 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count === 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
-               // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && (int)floor( ( $count % 100 ) / 10 ) === 1 ) {
-                       return $forms[2];
-               }
-
-               switch ( $count % 10 ) {
-                       case 1:
-                               return $forms[0];
-                       case 2:
-                       case 3:
-                       case 4:
-                               return $forms[1];
-                       default:
-                               return $forms[2];
-               }
-       }
-
        /**
         * Four-digit number should be without group commas (spaces)
         * See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей
index 6f0ff4b..a728c9d 100644 (file)
@@ -22,8 +22,6 @@
  */
 
 require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageSr_ec.php';
-require_once __DIR__ . '/LanguageSr_el.php';
 
 /**
  * There are two levels of conversion for Serbian: the script level
@@ -36,35 +34,35 @@ require_once __DIR__ . '/LanguageSr_el.php';
  */
 class SrConverter extends LanguageConverter {
        public $mToLatin = array(
-               'а' => 'a', 'б' => 'b',  'в' => 'v', 'г' => 'g',  'д' => 'd',
-               'ђ' => 'đ', 'е' => 'e',  'ж' => 'ž', 'з' => 'z',  'и' => 'i',
-               'ј' => 'j', 'к' => 'k',  'л' => 'l', 'љ' => 'lj', 'м' => 'm',
-               'н' => 'n', 'њ' => 'nj', 'о' => 'o', 'п' => 'p',  'р' => 'r',
-               'с' => 's', 'т' => 't',  'ћ' => 'ć', 'у' => 'u',  'ф' => 'f',
-               'х' => 'h', 'ц' => 'c',  'ч' => 'č', 'џ' => 'dž', 'ш' => 'š',
-
-               'А' => 'A', 'Б' => 'B',  'В' => 'V', 'Г' => 'G',  'Д' => 'D',
-               'Ђ' => 'Đ', 'Е' => 'E',  'Ж' => 'Ž', 'З' => 'Z',  'И' => 'I',
-               'Ј' => 'J', 'К' => 'K',  'Л' => 'L', 'Љ' => 'Lj', 'М' => 'M',
-               'Н' => 'N', 'Њ' => 'Nj', 'О' => 'O', 'П' => 'P',  'Р' => 'R',
-               'С' => 'S', 'Т' => 'T',  'Ћ' => 'Ć', 'У' => 'U',  'Ф' => 'F',
-               'Х' => 'H', 'Ц' => 'C',  'Ч' => 'Č', 'Џ' => 'Dž', 'Ш' => 'Š',
+               'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd',
+               'ђ' => 'đ', 'е' => 'e', 'ж' => 'ž', 'з' => 'z', 'и' => 'i',
+               'ј' => 'j', 'к' => 'k', 'л' => 'l', 'љ' => 'lj', 'м' => 'm',
+               'н' => 'n', 'њ' => 'nj', 'о' => 'o', 'п' => 'p', 'р' => 'r',
+               'с' => 's', 'т' => 't', 'ћ' => 'ć', 'у' => 'u', 'ф' => 'f',
+               'х' => 'h', 'ц' => 'c', 'ч' => 'č', 'џ' => 'dž', 'ш' => 'š',
+
+               'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D',
+               'Ђ' => 'Đ', 'Е' => 'E', 'Ж' => 'Ž', 'З' => 'Z', 'И' => 'I',
+               'Ј' => 'J', 'К' => 'K', 'Л' => 'L', 'Љ' => 'Lj', 'М' => 'M',
+               'Н' => 'N', 'Њ' => 'Nj', 'О' => 'O', 'П' => 'P', 'Р' => 'R',
+               'С' => 'S', 'Т' => 'T', 'Ћ' => 'Ć', 'У' => 'U', 'Ф' => 'F',
+               'Х' => 'H', 'Ц' => 'C', 'Ч' => 'Č', 'Џ' => 'Dž', 'Ш' => 'Š',
        );
 
        public $mToCyrillics = array(
-               'a' => 'а', 'b'  => 'б', 'c' => 'ц', 'č' => 'ч', 'ć'  => 'ћ',
-               'd' => 'д', 'dž' => 'џ', 'đ' => 'ђ', 'e' => 'е', 'f'  => 'ф',
-               'g' => 'г', 'h'  => 'х', 'i' => 'и', 'j' => 'ј', 'k'  => 'к',
+               'a' => 'а', 'b' => 'б', 'c' => 'ц', 'č' => 'ч', 'ć' => 'ћ',
+               'd' => 'д', 'dž' => 'џ', 'đ' => 'ђ', 'e' => 'е', 'f' => 'ф',
+               'g' => 'г', 'h' => 'х', 'i' => 'и', 'j' => 'ј', 'k' => 'к',
                'l' => 'л', 'lj' => 'љ', 'm' => 'м', 'n' => 'н', 'nj' => 'њ',
-               'o' => 'о', 'p'  => 'п', 'r' => 'р', 's' => 'с', 'š'  => 'ш',
-               't' => 'т', 'u'  => 'у', 'v' => 'в', 'z' => 'з', 'ž'  => 'ж',
+               'o' => 'о', 'p' => 'п', 'r' => 'р', 's' => 'с', 'š' => 'ш',
+               't' => 'т', 'u' => 'у', 'v' => 'в', 'z' => 'з', 'ž' => 'ж',
 
-               'A' => 'А', 'B'  => 'Б', 'C' => 'Ц', 'Č' => 'Ч', 'Ć'  => 'Ћ',
-               'D' => 'Д', 'Dž' => 'Џ', 'Đ' => 'Ђ', 'E' => 'Е', 'F'  => 'Ф',
-               'G' => 'Г', 'H'  => 'Х', 'I' => 'И', 'J' => 'Ј', 'K'  => 'К',
+               'A' => 'А', 'B' => 'Б', 'C' => 'Ц', 'Č' => 'Ч', 'Ć' => 'Ћ',
+               'D' => 'Д', 'Dž' => 'Џ', 'Đ' => 'Ђ', 'E' => 'Е', 'F' => 'Ф',
+               'G' => 'Г', 'H' => 'Х', 'I' => 'И', 'J' => 'Ј', 'K' => 'К',
                'L' => 'Л', 'LJ' => 'Љ', 'M' => 'М', 'N' => 'Н', 'NJ' => 'Њ',
-               'O' => 'О', 'P'  => 'П', 'R' => 'Р', 'S' => 'С', 'Š'  => 'Ш',
-               'T' => 'Т', 'U'  => 'У', 'V' => 'В', 'Z' => 'З', 'Ž'  => 'Ж',
+               'O' => 'О', 'P' => 'П', 'R' => 'Р', 'S' => 'С', 'Š' => 'Ш',
+               'T' => 'Т', 'U' => 'У', 'V' => 'В', 'Z' => 'З', 'Ž' => 'Ж',
 
                'DŽ' => 'Џ', 'd!ž' => 'дж', 'D!ž' => 'Дж', 'D!Ž' => 'ДЖ',
                'Lj' => 'Љ', 'l!j' => 'лј', 'L!j' => 'Лј', 'L!J' => 'ЛЈ',
@@ -166,14 +164,16 @@ class SrConverter extends LanguageConverter {
                // regexp for roman numbers
                $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
 
-               $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks . $roman . '$|' . $breaks . $roman . $breaks . '/';
+               $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks
+                       . $roman . '$|' . $breaks . $roman . $breaks . '/';
 
                $matches = preg_split( $reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE );
 
                $m = array_shift( $matches );
                $this->loadTables();
                if ( !isset( $this->mTables[$toVariant] ) ) {
-                       throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
+                       throw new MWException( "Broken variant table: "
+                               . implode( ',', array_keys( $this->mTables ) ) );
                }
                $ret = $this->mTables[$toVariant]->replace( $m[0] );
                $mstart = $m[1] + strlen( $m[0] );
@@ -218,7 +218,7 @@ class SrConverter extends LanguageConverter {
  *
  * @ingroup Language
  */
-class LanguageSr extends LanguageSr_ec {
+class LanguageSr extends Language {
        function __construct() {
                global $wgHooks;
 
@@ -238,40 +238,4 @@ class LanguageSr extends LanguageSr_ec {
                $this->mConverter = new SrConverter( $this, 'sr', $variants, $variantfallbacks, $flags );
                $wgHooks['PageContentSaveComplete'][] = $this->mConverter;
        }
-
-       /**
-        * @param $count int
-        * @param $forms array
-        *
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count == 1
-               // plural   for $count != 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count == 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
-               // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
 }
diff --git a/languages/classes/LanguageSr_ec.php b/languages/classes/LanguageSr_ec.php
deleted file mode 100644 (file)
index cb9e819..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * Serbian (cyrillic script) specific code.
- *
- * 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 Language
- */
-
-/**
- * Serbian (cyrillic script)
- *
- * @ingroup Language
- */
-class LanguageSr_ec extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-}
diff --git a/languages/classes/LanguageSr_el.php b/languages/classes/LanguageSr_el.php
deleted file mode 100644 (file)
index 99d1293..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<?php
-/**
- * Serbian (latin script) specific code.
- *
- * 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 Language
- */
-
-/**
- * Serbian (latin script)
- *
- * @ingroup Language
- */
-class LanguageSr_el extends Language {
-
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-}
index 4ad272b..08041a9 100644 (file)
@@ -86,41 +86,6 @@ class LanguageUk extends Language {
                return $word;
        }
 
-       /**
-        * @param $count int
-        * @param $forms array
-        * @return string
-        */
-       function convertPlural( $count, $forms ) {
-               if ( !count( $forms ) ) {
-                       return '';
-               }
-
-               // If the actual number is not mentioned in the expression, then just two forms are enough:
-               // singular for $count == 1
-               // plural   for $count != 1
-               // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
-               if ( count( $forms ) === 2 ) {
-                       return $count == 1 ? $forms[0] : $forms[1];
-               }
-
-               // @todo FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
-               // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk
-               $forms = $this->preConvertPlural( $forms, 3 );
-
-               if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
-                       return $forms[2];
-               } else {
-                       switch ( $count % 10 ) {
-                               case 1: return $forms[0];
-                               case 2:
-                               case 3:
-                               case 4: return $forms[1];
-                               default: return $forms[2];
-                       }
-               }
-       }
-
        /**
         * Ukrainian numeric format is "12 345,67" but "1234,56"
         *
index 70d45a3..aafc393 100644 (file)
@@ -2,42 +2,44 @@
 <!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
 <supplementalData>
        <plurals>
-               <!--
-               The "one" and "two" rules are copied directly from CLDR.
-               The "many" rule overrides CLDR, because CLDR seems to have a mistake:
-               it's sometimes needed for multiples of 10, but not for 10 itself.
-               When the CLDR is fixed, this should be removed.
-               -->
-               <pluralRules locales="he">
-                       <pluralRule count="one">n is 1</pluralRule>
-                       <pluralRule count="two">n is 2</pluralRule>
-                       <pluralRule count="many">n is not 0 AND n is not 10 AND n mod 10 is 0</pluralRule>
-               </pluralRules>
+               <!-- Lower Sorbian (Dolnoserbski) and  Upper Sorbian (Hornjoserbsce). Not present in CLDR -->
                <pluralRules locales="dsb hsb">
-                       <pluralRule count="one">n mod 100 is 1</pluralRule>
-                       <pluralRule count="two">n mod 100 is 2</pluralRule>
-                       <pluralRule count="few">n mod 100 in 3..4</pluralRule>
+                       <pluralRule count="one">n % 100 = 1 @integer 1, 101, 201, 301, …</pluralRule>
+                       <pluralRule count="two">n % 100 = 2 @integer 2, 102, 202, 302, …</pluralRule>
+                       <pluralRule count="few">n % 100 = 3..4 @integer 3~4, 103~104, …</pluralRule>
+                       <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 105, 206, 307, …</pluralRule>
                </pluralRules>
-               <!-- Copied from "be" -->
+
+               <!-- Belarusian in Taraškievica orthography (Беларуская тарашкевіца). Copied from "be" -->
                <pluralRules locales="be-tarask">
-                       <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
-                       <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
-                       <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
-                       <!-- others are fractions -->
+                       <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+                       <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+                       <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+                       <pluralRule count="other">   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
                </pluralRules>
+               <!--  Old Church Slavonic (Ѩзыкъ словѣньскъ). Not present in CLDR -->
                <pluralRules locales="cu">
-                       <pluralRule count="one">n mod 10 is 1</pluralRule>
-                       <pluralRule count="two">n mod 10 is 2</pluralRule>
-                       <pluralRule count="few">n mod 10 in 3..4</pluralRule>
+                       <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, …</pluralRule>
+                       <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, …</pluralRule>
+                       <pluralRule count="few">n % 10 = 3..4 @integer 3~4, 13~14, 23~24, …</pluralRule>
+                       <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 15, 105, 206, 307, …</pluralRule>
                </pluralRules>
                <!-- Copied from "bh" -->
                <pluralRules locales="bho">
-                       <pluralRule count="one">n in 0..1</pluralRule>
+                       <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+                       <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
                </pluralRules>
+               <!-- Samogitian. Not present in CLDR -->
                <pluralRules locales="sgs">
-                       <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
-                       <pluralRule count="two">n mod 10 is 2 and n mod 100 is not 12</pluralRule>
-                       <pluralRule count="few">n is 0 or n mod 100 is 0 or n mod 100 in 10..19</pluralRule>
+                       <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, …</pluralRule>
+                       <pluralRule count="two">n % 10 = 2 and n % 100 != 12 @integer 2, 22, 32, 42, 52, 62, 72, 82, 92, 102, 122, …</pluralRule>
+                       <pluralRule count="few">n = 0 or n % 100 = 0 or n % 100 = 10..19 @integer 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 100, 111,112, …</pluralRule>
+                       <pluralRule count="other"> @integer 3, 4, 5, 6, 7, 8, 9, 20, 103, 104, …</pluralRule>
+               </pluralRules>
+               <pluralRules locales="sr-el sr-ec">
+                       <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+                       <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+                       <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
                </pluralRules>
        </plurals>
 </supplementalData>
old mode 100644 (file)
new mode 100755 (executable)
index d5a1cfe..fd4eaf6
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
+<!--
+Copyright © 1991-2013 Unicode, Inc.
+CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+For terms of use, see http://www.unicode.org/copyright.html
+-->
 <supplementalData>
-    <version number="$Revision: 8007 $"/>
-    <generation date="$Date: 2013-01-03 07:17:41 +0530 (Thu, 03 Jan 2013) $"/>
-    <plurals>
+    <version number="$Revision: 9369 $"/>
+    <generation date="$Date: 2013-09-14 01:26:08 +0530 (ശ, 14 സെപ് 2013) $"/>
+    <plurals type="cardinal">
+        <!-- For a canonicalized list, use GeneratedPluralSamples -->
         <!-- if locale is known to have no plurals, there are no rules -->
-        <pluralRules locales="az bm bo dz fa id ig ii hu ja jv ka kde kea km kn ko lo ms my sah ses sg th to tr vi wo yo zh"/>
         <pluralRules locales="ar">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n mod 100 in 3..10</pluralRule>
-            <pluralRule count="many">n mod 100 in 11..99</pluralRule>
-        </pluralRules>
-        <pluralRules locales="he">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="many">n is not 0 AND n mod 10 is 0</pluralRule>
-        </pluralRules>
-        <pluralRules locales="asa ast af bem bez bg bn brx ca cgg chr ckb da de dv ee el en eo es et eu fi fo fur fy gl gsw gu ha haw hy is it jgo jmc kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn mr nah nb nd ne nl nn nnh no nr ny nyn om or os pa pap ps pt rof rm rwk saq seh sn so sq ss ssy st sv sw syr ta te teo tig tk tn ts ur vo wae ve vun xh xog zu">
-            <pluralRule count="one">n is 1</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ak am bh fil tl guw hi ln mg nso ti wa">
-            <pluralRule count="one">n in 0..1</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ff fr kab">
-            <pluralRule count="one">n within 0..2 and n is not 2</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …</pluralRule>
+            <pluralRule count="many">n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+            <pluralRule count="other"> @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="he iw">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="two">i = 2 and v = 0 @integer 2</pluralRule>
+            <pluralRule count="many">v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="af asa ast az bem bez bg brx cgg chr ckb dv ee el eo es eu fo fur fy gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts uz ve vo vun wae xh xog">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ak bh guw ln mg nso pa ti wa">
+            <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ff fr hy kab">
+            <pluralRule count="one">i = 0,1 @integer 0, 1 @decimal 0.0~1.5</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lv">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
+            <pluralRule count="zero">n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …</pluralRule>
         </pluralRules>
         <pluralRules locales="iu kw naq se sma smi smj smn sms">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ga"> <!-- http://unicode.org/cldr/trac/ticket/3915 -->
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n in 3..6</pluralRule>
-            <pluralRule count="many">n in 7..10</pluralRule>
-        </pluralRules>
-        <pluralRules locales="ro mo">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n is 0 OR n is not 1 AND n mod 100 in 1..19</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ga">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000</pluralRule>
+            <pluralRule count="many">n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000</pluralRule>
+            <pluralRule count="other"> @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="mo ro">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lt">
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11..19</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..9 and n mod 100 not in 11..19</pluralRule>
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">f != 0   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="be bs hr ru sh sr uk">
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
-            <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
-            <!-- others are fractions -->
+        <pluralRules locales="be">
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
         </pluralRules>
         <pluralRules locales="cs sk">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n in 2..4</pluralRule>
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">i = 2..4 and v = 0 @integer 2~4</pluralRule>
+            <pluralRule count="many">v != 0   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
         </pluralRules>
         <pluralRules locales="pl">
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
-            <pluralRule count="many">n is not 1 and n mod 10 in 0..1 or n mod 10 in 5..9 or n mod 100 in 12..14</pluralRule>
-            <!-- others are fractions -->
-            <!-- and n mod 100 not in 22..24 from Tamplin -->
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+            <pluralRule count="many">v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="sl">
-            <pluralRule count="one">n mod 100 is 1</pluralRule>
-            <pluralRule count="two">n mod 100 is 2</pluralRule>
-            <pluralRule count="few">n mod 100 in 3..4</pluralRule>
-        </pluralRules>
-        <pluralRules locales="mt"> <!-- from Tamplin's data -->
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="few">n is 0 or n mod 100 in 2..10</pluralRule>
-            <pluralRule count="many">n mod 100 in 11..19</pluralRule>
-        </pluralRules>
-        <pluralRules locales="mk"> <!-- from Tamplin's data -->
-            <pluralRule count="one">n mod 10 is 1 and n is not 11</pluralRule>
-        </pluralRules>
-        <pluralRules locales="cy"> <!-- from http://www.saltcymru.org/wordpress/?p=99&lang=en -->
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
-            <pluralRule count="two">n is 2</pluralRule>
-            <pluralRule count="few">n is 3</pluralRule>
-            <pluralRule count="many">n is 6</pluralRule>
+            <pluralRule count="one">v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, …</pluralRule>
+            <pluralRule count="two">v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="mt">
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="few">n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="many">n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+            <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="mk">
+            <pluralRule count="one">v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~10, 12~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="cy">
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000</pluralRule>
+            <pluralRule count="many">n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000</pluralRule>
+            <pluralRule count="other"> @integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="lag">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n within 0..2 and n is not 0 and n is not 2</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="shi">
-            <pluralRule count="one">n within 0..1</pluralRule>
-            <pluralRule count="few">n in 2..10</pluralRule>
+            <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+            <pluralRule count="few">n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00</pluralRule>
+            <pluralRule count="other"> @integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
-        <pluralRules locales="br"> <!-- from http://unicode.org/cldr/trac/ticket/2886 -->
-            <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11,71,91</pluralRule>
-            <pluralRule count="two">n mod 10 is 2 and n mod 100 not in 12,72,92</pluralRule>
-            <pluralRule count="few">n mod 10 in 3..4,9 and n mod 100 not in 10..19,70..79,90..99</pluralRule>
-            <pluralRule count="many">n is not 0 and n mod 1000000 is 0</pluralRule>
+        <pluralRules locales="br">
+            <pluralRule count="one">n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="two">n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="few">n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, …</pluralRule>
+            <pluralRule count="many">n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="ksh">
-            <pluralRule count="zero">n is 0</pluralRule>
-            <pluralRule count="one">n is 1</pluralRule>
+            <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+            <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="tzm">
-            <pluralRule count="one">n in 0..1 or n in 11..99</pluralRule>
+            <pluralRule count="one">n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0</pluralRule>
+            <pluralRule count="other"> @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
         <pluralRules locales="gv">
-            <pluralRule count="one">n mod 10 in 1..2 or n mod 20 is 0</pluralRule>
+            <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 1.0, 11.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 101.0, 1001.0, …</pluralRule>
+            <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, … @decimal 2.0, 12.0, 22.0, 32.0, 42.0, 52.0, 62.0, 72.0, 102.0, 1002.0, …</pluralRule>
+            <pluralRule count="few">n % 100 = 0,20,40,60 @integer 0, 20, 40, 60, 100, 120, 140, 160, 1000, 10000, 100000, 1000000, … @decimal 0.0, 20.0, 40.0, 60.0, 100.0, 120.0, 140.0, 160.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+            <pluralRule count="other"> @integer 3~10, 13~19, 23, 103, 1003, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.1, 1000.1, …</pluralRule>
         </pluralRules>
         <pluralRules locales="gd">
-            <pluralRule count="one">n in 1,11</pluralRule>
-            <pluralRule count="two">n in 2,12</pluralRule>
-            <pluralRule count="few">n in 3..10,13..19</pluralRule>
+            <pluralRule count="one">n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000</pluralRule>
+            <pluralRule count="two">n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000</pluralRule>
+            <pluralRule count="few">n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00</pluralRule>
+            <pluralRule count="other"> @integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo sah ses sg th to vi wo yo zh">
+            <pluralRule count="other"> @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="fil tl">
+            <pluralRule count="one">i = 0..1 and v = 0 @integer 0, 1</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ca de en et fi gl it ji nl sv sw ur yi">
+            <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="pt">
+            <pluralRule count="one">i = 1 and v = 0 or i = 0 and t = 1 @integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 0.0100, 0.1000</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="da">
+            <pluralRule count="one">n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="pt_PT">
+            <pluralRule count="one">n = 1 and v = 0 @integer 1</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="am bn fa gu hi kn mr zu">
+            <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="is">
+            <pluralRule count="one">t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="si">
+            <pluralRule count="one">n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000</pluralRule>
+            <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="bs hr sh sr">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+            <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="ru">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+            <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other"> @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+        </pluralRules>
+        <pluralRules locales="uk">
+            <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+            <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+            <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+            <pluralRule count="other">   @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
         </pluralRules>
     </plurals>
 </supplementalData>
index cb6269f..cb68eaa 100644 (file)
@@ -136,7 +136,6 @@ $messages = array(
 'qbfind' => 'Аҧшаара',
 'qbedit' => 'Ариашара',
 'qbpageoptions' => 'Ари адаҟьа',
-'qbspecialpages' => 'Цастәи адаҟьақәа',
 
 # Vector skin
 'vector-action-move' => 'Ахьӡ аҧсахра',
@@ -167,7 +166,7 @@ $messages = array(
 'jumptonavigation' => 'Анавигациа',
 'jumptosearch' => 'Аҧшаара',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} иазкны',
 'currentevents' => 'Ииасуа ахҭысқәа',
 'mainpage' => 'Ихадоу Адаҟьа',
@@ -176,8 +175,6 @@ $messages = array(
 'privacypage' => 'Project: Аконфиденциалтә аполитика',
 
 'youhavenewmessages' => 'Уара $1 уауит ($2).',
-'newmessageslink' => 'адырра ҿыцқәа',
-'newmessagesdifflink' => 'аҵыхәтәатәи аҽеиҭакра',
 'editsection' => 'ариашамҭа',
 'editold' => 'ариашара',
 'editlink' => 'ариашара',
@@ -227,6 +224,7 @@ $messages = array(
 
 # Recent changes
 'recentchanges' => 'Арҽеира ҿыцқәа',
+'recentchanges-legend-newpage' => '$1 — адаҟьа ҿыц',
 'newpageletter' => 'Ҿ',
 
 # Recent changes linked
index c89ac06..0338da0 100644 (file)
@@ -24,15 +24,15 @@ $namespaceNames = array(
        NS_MEDIA            => 'Alat',
        NS_SPECIAL          => 'Kusuih',
        NS_TALK             => 'Marit',
-       NS_USER             => 'Ureuëng_Nguy',
-       NS_USER_TALK        => 'Marit_Ureuëng_Nguy',
+       NS_USER             => 'Ureuëng_Ngui',
+       NS_USER_TALK        => 'Marit_Ureuëng_Ngui',
        NS_PROJECT_TALK     => 'Marit_$1',
        NS_FILE             => 'Beureukaih',
        NS_FILE_TALK        => 'Marit_Beureukaih',
        NS_MEDIAWIKI        => 'MediaWiki',
        NS_MEDIAWIKI_TALK   => 'Marit_MediaWiki',
-       NS_TEMPLATE         => 'Pola',
-       NS_TEMPLATE_TALK    => 'Marit_Pola',
+       NS_TEMPLATE         => 'Seunaleuëk',
+       NS_TEMPLATE_TALK    => 'Marit_Seunaleuëk',
        NS_HELP             => 'Beunantu',
        NS_HELP_TALK        => 'Marit_Beunantu',
        NS_CATEGORY         => 'Kawan',
@@ -45,6 +45,8 @@ $namespaceAliases = array(
        'Pembicaraan'           => NS_TALK,
        'Pengguna'              => NS_USER,
        'Bicara_Pengguna'       => NS_USER_TALK,
+       'Ureuëng_Nguy'          => NS_USER,
+       'Marit_Ureuëng_Nguy'    => NS_USER_TALK,
        'Pembicaraan_Pengguna'  => NS_USER_TALK,
        'Pembicaraan_$1'        => NS_PROJECT_TALK,
        'Berkas'                => NS_FILE,
@@ -58,6 +60,8 @@ $namespaceAliases = array(
        'Templat'               => NS_TEMPLATE,
        'Pembicaraan_Templat'   => NS_TEMPLATE_TALK,
        'Templat_Pembicaraan'   => NS_TEMPLATE_TALK,
+       'Pola'                  => NS_TEMPLATE,
+       'Marit_Pola'            => NS_TEMPLATE_TALK,
        'Bantuan'               => NS_HELP,
        'Bantuan_Pembicaraan'   => NS_HELP_TALK,
        'Pembicaraan_Bantuan'   => NS_HELP_TALK,
@@ -68,13 +72,14 @@ $namespaceAliases = array(
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'Ureueng_nguy_udep' ),
-       'Allmessages'               => array( 'MandumPeusan' ),
-       'Allpages'                  => array( 'Dapeuta_on' ),
-       'Ancientpages'              => array( 'Teunuleh_trep' ),
-       'Blankpage'                 => array( 'On_soh' ),
-       'Block'                     => array( 'Theun_ureueng_nguy' ),
-       'Blockme'                   => array( 'Theun_lon' ),
+       'Activeusers'               => array( 'UreuëngNguiUdép' ),
+       'Allmessages'               => array( 'BanDumPeusan' ),
+       'AllMyUploads'              => array( 'BanDumPeunasoëLôn', 'BanDumBeureukaihLôn' ),
+       'Allpages'                  => array( 'DapeutaLaman' ),
+       'Ancientpages'              => array( 'TeunuléhAwai' ),
+       'Badtitle'                  => array( 'NanBrôk' ),
+       'Blankpage'                 => array( 'LamaSoh' ),
+       'Block'                     => array( 'TheunUreuëngNgui' ),
        'Booksources'               => array( 'Ne_kitab' ),
        'BrokenRedirects'           => array( 'Peuninah_reuloh' ),
        'Categories'                => array( 'Dapeuta_kawan' ),
@@ -84,7 +89,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Peugot_nan' ),
        'Deadendpages'              => array( 'On_mate' ),
        'DeletedContributions'      => array( 'Peuneugot_nyang_geusampoh' ),
-       'Disambiguations'           => array( 'Hana_jeulaih' ),
        'DoubleRedirects'           => array( 'Peuninah_ganda' ),
        'Emailuser'                 => array( 'Surat-e_ureueng_nguy' ),
        'Export'                    => array( 'Peuteubiet' ),
@@ -181,7 +185,6 @@ $messages = array(
 'tog-minordefault' => 'Bôh tanda mandum neuandam sibagoe neuandam bacut ngön baku',
 'tog-previewontop' => 'Peuleumah hasé yôh goh plôk andam',
 'tog-previewonfirst' => 'Peuleumah hasé bak neuandam phôn',
-'tog-nocache' => 'Pumaté pumeugöt beun laman peuramban nyoe',
 'tog-enotifwatchlistpages' => "Peu'ék surat-e keu lôn meunyo saboh halaman nyang lôn kalon meuubah",
 'tog-enotifusertalkpages' => "Peu'ek keu lôn surat-e meunyo ôn marit lôn meuubah",
 'tog-enotifminoredits' => "Peu'ék cit surat-e keu lôn bak neuubah ubit",
@@ -211,9 +214,9 @@ $messages = array(
 # Font style option in Special:Preferences
 'editfont-style' => 'Gaya seunurat komputer bak plôk andam',
 'editfont-default' => 'Bawaan penjelajah web',
-'editfont-monospace' => 'Seunurat Monospace',
-'editfont-sansserif' => 'Seunurat Sans-serif',
-'editfont-serif' => 'Seunurat Serif',
+'editfont-monospace' => 'Haraih Monospace',
+'editfont-sansserif' => 'Haraih Sans-serif',
+'editfont-serif' => 'Haraih Serif',
 
 # Dates
 'sunday' => 'Aleuhad',
@@ -316,7 +319,6 @@ $messages = array(
 'qbedit' => 'Andam',
 'qbpageoptions' => 'Laman nyoe',
 'qbmyoptions' => 'Laman lôn',
-'qbspecialpages' => 'Laman kusuih',
 'faq' => 'Teunanyöng Umom',
 'faqpage' => 'Project:FAQ',
 
@@ -434,8 +436,8 @@ $1",
 'youhavenewmessages' => 'Droëneuh na $1 ($2).',
 'youhavenewmessagesfromusers' => "Droeneuh na $1 nibak {{PLURAL:$3|ureueng nguy la'en|$3 ureueng nguy}} ($2).",
 'youhavenewmessagesmanyusers' => "Droeneuh na $1 nibak ureueng nguy la'en ($2)",
-'newmessageslinkplural' => '{{PLURAL:$1|saboh peusan baro|peusan baro}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|neuubah}} keuneulheuëh',
+'newmessageslinkplural' => '{{PLURAL:$1|saboh peusan barô|999=peusan barô}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|neuubah|999=neuubah}} seuneulheuëh',
 'youhavenewmessagesmulti' => 'Droëneuh na padum boh peusan barô bak $1',
 'editsection' => 'andam',
 'editold' => 'andam',
@@ -529,9 +531,6 @@ Hana jeuneulaih.",
 'perfcachedts' => 'Data di yup nyoe geupeusom, ngön geupeubarô seuneulheueh bak $1. {{PLURAL:$4|saboh hase|$4 hase}} paléng le na lam beujana.',
 'querypage-no-updates' => "Beunarô keu laman nyoe hat nyoe teungöh h'an jeuët.
 Data sinoe h'an geupasoe ulang.",
-'wrong_wfQuery_params' => 'Parameter salah u wfQuery()<br />
-Meunafaat: $1<br />
-Neulakee: $2',
 'viewsource' => 'Eu nè',
 'viewsource-title' => 'Eu ne keu $1',
 'actionthrottled' => 'Buet geupeubataih',
@@ -550,7 +549,7 @@ Keu neuk tamah atawa ubah teujeumah keu ban dum wiki, neungui [//translatewiki.n
 Dalèhjih nakeuh "\'\'$2\'\'".',
 'invalidtitle-knownnamespace' => 'Nan nyang hana sah ngön ruweueng nan "$2" ngön "$3"',
 'exception-nologin' => 'Hana tamöng lom',
-'exception-nologin-text' => 'halaman atawa buët nyoe beu neutamöng dilèë bak wiki nyoe.',
+'exception-nologin-text' => 'Droëneuh suwah [[Special:Userlogin|neutamöng]] mangat jeuët neupeuhah laman nyoë',
 
 # Virus scanner
 'virus-unknownscanner' => 'Antivirus hana meuturi:',
@@ -644,7 +643,7 @@ Préksa keulayi neu’ija Droëneuh.',
 'passwordtooshort' => "Lageuëm paléng h'an harôh na {{PLURAL:$1|1 karakter|$1 karakter}}.",
 'password-name-match' => 'Lageuëm Droeuneuh beubida nibak nan Ureuëng ngui.',
 'password-login-forbidden' => 'Ngui nan ureuëng ngui ngön lageuëm nyoë ka jitham.',
-'mailmypassword' => "Peu'ét lageuëm rahsia barô u surat-e",
+'mailmypassword' => 'Atô keulayi lageuëm rahsia',
 'passwordremindertitle' => 'Lageuëm seumeuntara barô keu {{SITENAME}}',
 'passwordremindertext' => 'Salah sidroë (kadang Droëneuh, ngön alamat IP $1) geulakèë lageuëm barô keu {{SITENAME}} ($4). Lageuëm si\'at keu ureuëng ngui "$2" ka geupeuna ngön ka geuatô jeuet keu "$3". Meunyö nyoe nakeuh meukeusud droeneuh, droeneuh peureulèë neutamöng ngön neupiléh lageuëm barô jinoe. Lageuem siat droeneuh meung abéh lam {{PLURAL:$5|siuroe|$5 uroe}}.
 
@@ -661,15 +660,19 @@ Meunyö ureuëng la\'én nyang peugöt neulakèë nyoe, atawa meunyö droeneuh k
 'usernamehasherror' => 'Nan ureueng ngui han jeut na tanda pageue',
 'login-throttled' => 'Droeneuh ka lé that neuujoe tamöng.
 Neuprèh $1 sigohlom neuujoe lom.',
+'login-abort-generic' => 'Log tamöng droëneuh han meuhasé- Ngon ka geupeubateuë.',
 'loginlanguagelabel' => 'Bahsa: $1',
 'createacct-another-realname-tip' => 'Nan aseuli hana meucéh neupasoe.
 Meunyö neupasoe, euntreuk nan droëneuh nyan geupeuleumah mangat jitupeue soe nyang tuléh.',
 
 # Email sending
+'php-mail-error-unknown' => 'Ralat hana geuteupeuë lam guna surat() PHP',
 'user-mail-no-addy' => 'Ujoe kirém surat-e ngön hana alamat surat-e.',
+'user-mail-no-body' => 'Droëneuh ka neucuba kirém e-surat soh ngon that paneuk',
 
 # Change password dialog
-'resetpass' => 'Gantoë lageuëm rahsia',
+'changepassword' => 'Gantoe lageuem rahsia',
+'resetpass_announce' => 'Droëneuh kaneutamöng ngon kode siat nyang geukirém rot e-surat. Keu neusambông nyan droëneuh jeuët neupeutamöng narit rahsia barô',
 'resetpass_header' => 'Gantoë lageuëm rahsia nan ureuëng ngui',
 'oldpassword' => 'Lageuëm rahsia awai:',
 'newpassword' => 'Lageuëm rahsia barô:',
@@ -680,11 +683,20 @@ Meunyö neupasoe, euntreuk nan droëneuh nyan geupeuleumah mangat jitupeue soe n
 'resetpass-no-info' => "Droëneuh suwah neutamöng mangat jeuët neu'eu laman nyoë",
 'resetpass-submit-loggedin' => 'Gantoë lageuëm rahsia',
 'resetpass-submit-cancel' => 'Pubateuë',
+'resetpass-wrong-oldpass' => 'Narit rahsia salah.
+Droëneuh kadang ka meuhasé neuubah narit rahsia atawa neulakè narit rahsia barô',
 'resetpass-temp-password' => 'Lageuem rahsia keu siat:',
+'resetpass-abort-generic' => 'Meuubah narit rahsia ka geupeubateuë lé ekstensi',
 
 # Special:PasswordReset
+'passwordreset-text-one' => 'Neupeuleungkap formulir nyoë keu meuatô keulayi narit rahsia',
+'passwordreset-text-many' => '{{PLURAL:$1|Neupasoë saboh kutak dimeuyub nyoë keu neuteumèe narit rahsia siat rot e-surat}}',
+'passwordreset-disabled' => 'Meuatô narit rahsia keulayi ka geupeumaté lam wiki nyoë',
+'passwordreset-emaildisabled' => 'Tanda e-surat ka geupeumaté lam wiki nyoë',
 'passwordreset-username' => 'Ureueng ngui:',
+'passwordreset-domain' => 'Domain',
 'passwordreset-capture' => 'Eu hasé surat-e?',
+'passwordreset-capture-help' => 'Meunyoë droëneuh neuceuë kutak nyoë, e-surat (ngon narit rahsia siat) ka geupeuleumah keudroëneuh ngon geukirém cit keu ureuëng ngui',
 'passwordreset-email' => 'Alamat surat-e:',
 'passwordreset-emailtitle' => 'Teuneurang nan ureueng ngui bak {{SITENAME}}',
 
@@ -783,7 +795,7 @@ atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}
 'creating' => 'Teungöh meupeugöt $1',
 'editingsection' => 'Andam $1 (bideuëng)',
 'editingcomment' => 'Andam $1 (bideuëng)',
-'storedversion' => 'Riwayat meukubah',
+'storedversion' => 'Geunantoë teukeubah',
 'yourdiff' => 'Bida',
 'copyrightwarning' => "Beu neuingat bahwa ban mandum nyang Droëneuh   tuléh keu {{SITENAME}} geukira geupeuteubiët di yup $2 (ngiëng $1 keu leubèh jeulah). Meunyoë Droëneuh h‘an neutém teunuléh Droëneuh  ji’andam ngön jiba ho ho la’én, bèk neupasoë teunuléh Droëneuh  keunoë.<br />Droëneuh  neumeujanji chit meunyoë teunuléh nyoë nakeuh atra neutuléh keudroë, atawa neucok nibak nè nè atra umôm atawa nè bibeuëh la’én.
 '''BÈK NEUPASOË TEUNULÉH NYANG GEUPEULINDÔNG HAK KARANG NYANG HANA IDIN'''",
@@ -797,7 +809,7 @@ atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}
 'sectioneditnotsupported-title' => 'Andam bideung hana meudukông',
 'sectioneditnotsupported-text' => 'Andam bideung hana meudukông bak ôn nyoe.',
 'permissionserrors' => 'Salah khut/hak tamöng',
-'permissionserrorstext' => 'Droëneuh hana hak tamöng keu $2, muroë {{PLURAL:$1|choë|choë}} nyoë:',
+'permissionserrorstext' => 'Droëneuh hana geupeuidin keu neupubuët nyoë, muroë {{PLURAL:$1|dalèh}} nyoë:',
 'permissionserrorstext-withaction' => 'Droëneuh hana hak tamöng keu $2, muroë {{PLURAL:$1|choë|choë}} nyoë:',
 'recreate-moveddeleted-warn' => "'''Ingat: Droëneuh neupeugöt ulang saboh laman nyang ka tom geusampôh. ''',
 
@@ -864,12 +876,10 @@ Dalèh $3 nyoe nakeuh ''$2''",
 'revdelete-show-file-submit' => 'Nyoe',
 'revdelete-hide-comment' => 'Mohtasa neuandam',
 'revdelete-radio-same' => '(bèk neugantoe)',
-'revdelete-radio-set' => 'Deuh',
-'revdelete-radio-unset' => 'Teusom',
+'revdelete-radio-set' => 'Teusom',
+'revdelete-radio-unset' => 'Deuih',
 'revdelete-log' => 'Dalèh:',
 'revdel-restore' => 'Gantoë seuneudeuih',
-'revdel-restore-deleted' => 'geunantoe nyang ka geusampôh',
-'revdel-restore-visible' => 'geunantoë nyang deuih',
 'pagehist' => 'Taréh laman',
 'deletedhist' => 'Taréh nyang meusampôh',
 
@@ -893,10 +903,6 @@ Dalèh $3 nyoe nakeuh ''$2''",
 # Search results
 'searchresults' => 'Hasé mita',
 'searchresults-title' => 'Hasé mita keu "$1"',
-'searchresulttext' => 'Keu beurita leubèh le bhah meunita bak {{SITENAME}}, eu [[{{MediaWiki:Helppage}}|ôn beunantu]].',
-'searchsubtitle' => 'Droëneuh neumita \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ban dum ôn nyang geupuphôn ngön "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|bandum ôn nyang teuhubông u "$1"]])',
-'searchsubtitleinvalid' => "Droëneuh neumita '''$1'''",
-'notitlematches' => 'Hana nan laman nyang pah',
 'notextmatches' => 'Hana naseukah laman nyang pah',
 'prevn' => '{{PLURAL:$1|$1}} sigohlomjih',
 'nextn' => '{{PLURAL:$1|$1}} lheuëh nyan',
@@ -927,14 +933,10 @@ Dalèh $3 nyoe nakeuh ''$2''",
 'searchrelated' => 'meusambat',
 'searchall' => 'ban dum',
 'showingresultsheader' => "{{PLURAL:$5|Hase '''$1''' nibak '''$3'''|Hase '''$1 - $2''' nibak '''$3'''}} keu '''$4'''",
-'nonefound' => "'''Teuneurang''': Ladôm ruweuëng nan mantöng nyang geumita. 
-Neubaci puphôn neulakèë droëneuh ngön ''all:'' keu jak mita ban dum asoë (rôh lam nyan laman marit, seunaleuëk, ngön nyang la’én nibak nyan), atawa neungui ruweuëng nan nyang neumeuh’eut sibagoë neuawai.",
 'search-nonefound' => 'Hana hasé nyang paih lagèë neulakèë',
-'powersearch' => 'Mita lanjut',
 'powersearch-legend' => 'Mita lanjut',
 'powersearch-ns' => 'Mita bak ruweuëng nan:',
 'powersearch-redir' => 'Dapeuta peuninah',
-'powersearch-field' => 'Mita',
 'powersearch-toggleall' => 'Ban dum',
 'powersearch-togglenone' => 'Hana',
 
@@ -942,7 +944,6 @@ Neubaci puphôn neulakèë droëneuh ngön ''all:'' keu jak mita ban dum asoë (
 'preferences' => 'Galak',
 'mypreferences' => 'Atô',
 'prefs-edits' => 'Jumeulah neuandam:',
-'changepassword' => 'Gantoe lageuem rahsia',
 'prefs-skin' => 'Kulét',
 'skin-preview' => 'Eu dilèe',
 'datedefault' => 'Hana geunalak',
@@ -960,15 +961,13 @@ Neubaci puphôn neulakèë droëneuh ngön ''all:'' keu jak mita ban dum asoë (
 'prefs-setemail' => 'Pasoe alamat surat-e',
 'prefs-email' => 'Peuniléh surat-e',
 'prefs-rendering' => 'Seuneudeuh',
-'saveprefs' => 'Kubah',
-'resetprefs' => 'Peugléh neuubah nyang goh meukubah',
+'saveprefs' => 'Keubah',
 'prefs-editing' => 'Neuandam',
 'rows' => 'Baréh:',
 'searchresultshead' => 'Mita',
 'resultsperpage' => 'Hasé lam saboh laman:',
 'stub-threshold-disabled' => 'Geupeumaté',
 'timezoneuseoffset' => "La'én (peuteuntèe bidajih)",
-'timezoneoffset' => 'Bida:',
 'timezoneregion-america' => 'Amirika',
 'timezoneregion-antarctica' => 'Antartika',
 'timezoneregion-atlantic' => 'Laôt Atlantik',
@@ -987,8 +986,8 @@ Neubaci puphôn neulakèë droëneuh ngön ''all:'' keu jak mita ban dum asoë (
 'yourlanguage' => 'Bahsa:',
 'yournick' => 'Tanda jaroe barô:',
 'prefs-help-signature' => 'Komèntar bak ôn marit suwah neubôh "<nowiki>~~~~</nowiki>", nyang eunteuk meugantoe keu tanda jaroe droeneuh ngön watèe jinoe.',
-'badsiglength' => 'Tanda jaroe droeneuh panyang that.
-Panyangjih bèk leubèh nibak $1 {{PLURAL:$1|haraih|haraih}}.',
+'badsiglength' => 'Tanda jaroë droëneuh panyang that.
+Bèk neupeuleubèh nibak $1 {{PLURAL:$1|haraih|haraih}}.',
 'gender-unknown' => 'Hana geupeunyata',
 'gender-male' => 'Ureueng agam',
 'gender-female' => 'Ureueng inöng',
@@ -1091,7 +1090,6 @@ Hareutoë: (bida) = neuubah, (riwayat) = riwayat teumuléh, '''B''' = laman bar
 'recentchanges-label-minor' => 'Nyoe neuandam ubeut',
 'recentchanges-label-bot' => 'Neuandam nyoe geupubuet le bot',
 'recentchanges-label-unpatrolled' => 'Neuandam nyoe goh lom geukalon',
-'rcnote' => "Di yup nyoë nakeuh {{PLURAL:$1|nakeuh '''1''' neu’ubah barô |nakeuh '''$1''' neu’ubah barô}} lam {{PLURAL:$2|'''1''' uroë|'''$2''' uroë}} nyoë, trôk ‘an $5, $4.",
 'rcnotefrom' => 'Di yup nyoë nakeuh neuubah yôh <strong>$2</strong> (geupeudeuh trôh ‘an <strong>$1</strong> neuubah).',
 'rclistfrom' => 'Peudeuih neuubah barô yôh $1 kön',
 'rcshowhideminor' => '$1 andam bacut',
@@ -1108,9 +1106,9 @@ Hareutoë: (bida) = neuubah, (riwayat) = riwayat teumuléh, '''B''' = laman bar
 'minoreditletter' => 'b',
 'newpageletter' => 'B',
 'boteditletter' => 'b',
-'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|ureueng kalön|ureueng kalön}}]',
+'number_of_watching_users_pageview' => '[$1 kalön {{PLURAL:$1|ureuëng ngui}}]',
 'rc_categories_any' => 'Pue-pue mantöng',
-'rc-change-size-new' => '$1 {{PLURAL:$1|bita|bita}} lheuh meuandam',
+'rc-change-size-new' => '$1 {{PLURAL:$1|bita}} lheuëh neuubah',
 'newsectionsummary' => '/* $1 */ bideung barô',
 'rc-enhanced-expand' => 'Peuleumah rincian',
 'rc-enhanced-hide' => 'Peusom rincian',
@@ -1289,8 +1287,6 @@ Teuneurang bak [$2 on teuneurangjih] geupeuleumah di yup nyoe.",
 'allpagesfrom' => 'Peuleumah laman peuphôn nibak:',
 'allpagesto' => 'Peuleumah laman geupeuakhé bak:',
 'allarticles' => 'Dapeuta teunuléh',
-'allpagesprev' => 'U likôt',
-'allpagesnext' => 'U keue',
 'allpagessubmit' => 'Mita',
 'allpagesprefix' => 'Peuleumah laman ngön harah phôn:',
 'allpages-hide-redirects' => 'Peusom peuninah',
@@ -1320,8 +1316,8 @@ Teuneurang bak [$2 on teuneurangjih] geupeuleumah di yup nyoe.",
 
 # Special:ActiveUsers
 'activeusers' => 'Dapeuta ureueng ngui udép',
-'activeusers-intro' => 'Nyoe nakeuh dapeuta ureueng ngui nyang na geuandam $1 {{PLURAL:$1|uroe|uroe}} u likôt.',
-'activeusers-count' => '$1 {{PLURAL:$1|buet|buet}} lam {{PLURAL:$3|uroe|$3 uroe}} u likôt',
+'activeusers-intro' => 'Nyoë nakeuh dapeuta ureuëng ngui nyang na geuteumuléh lam $1 {{PLURAL:$1|uroë}} nyoë.',
+'activeusers-count' => '$1 {{PLURAL:$1|buet}} lam {{PLURAL:$3|uroë|$3 uroë}} nyoë',
 'activeusers-from' => 'Peuleumah ureueng ngui nyang neuawai ngön:',
 'activeusers-hidebots' => 'Peusom bot',
 'activeusers-hidesysops' => 'Peusom ureueng urôh',
@@ -1334,10 +1330,10 @@ Teuneurang bak [$2 on teuneurangjih] geupeuleumah di yup nyoe.",
 * <span class="listgrouprights-revoked">Khut nyang hana geubri</span>',
 'listgrouprights-group' => 'Kawan',
 'listgrouprights-rights' => 'Khut',
-'listgrouprights-helppage' => 'Beunantu:Khut kawan',
+'listgrouprights-helppage' => 'Help:Khut kawan',
 'listgrouprights-members' => '(dapeuta anggèëta)',
-'listgrouprights-addgroup' => 'Tamah {{PLURAL:$2|kawan|kawan}}: $1',
-'listgrouprights-removegroup' => 'Sampôh {{PLURAL:$2|kawan|kawan}}: $1',
+'listgrouprights-addgroup' => 'Tamah {{PLURAL:$2|kawan}}: $1',
+'listgrouprights-removegroup' => 'Sampôh {{PLURAL:$2|kawan}}: $1',
 'listgrouprights-addgroup-all' => 'Tamah ban dum kawan',
 'listgrouprights-removegroup-all' => 'Sampôh ban dum kawan',
 
@@ -1363,7 +1359,8 @@ Teuneurang bak [$2 on teuneurangjih] geupeuleumah di yup nyoe.",
 'watchlist' => 'Dapeuta keunalön',
 'mywatchlist' => 'Keunalön',
 'watchlistfor2' => 'Keu $1 $2',
-'addedwatchtext' => "Ôn \"[[:\$1]]\" ka geupeutamah u [[Special:Watchlist|dapeuta keunalön]] Droëneuh. Neu’ubah-neu’ubah bak masa u keuë bak ôn nyan ngön bak ôn peugah habajih, euntreuk leumah nyoë pat. Ôn nyan euntreuk geupeuleumah ''teubay'' bak [[Special:RecentChanges|dapeuta neu’ubah paléng barô]] mangat leubèh mudah leumah.",
+'addedwatchtext' => 'Laman "[[:$1]]" ka geupeutamah u [[Special:Watchlist|dapeuta kalön]] droëneuh. 
+Neuubah u keuë bak laman nyoë ngön laman marit nyang na teukaw\'èt, euntreuk geupeudeuih sinoë.',
 'removedwatchtext' => 'Ôn "[[:$1]]" ka geusampôh nibak [[Special:Watchlist|dapeuta keunalön]] Droëneuh.',
 'watch' => 'Kalön',
 'watchthispage' => 'Kalön ôn nyoë',
@@ -1501,8 +1498,6 @@ Lam masalah nyoë, meunyo neuhawa, Droëneuh jeuët neupeupinah atawa neupeugab
 'pagemovedsub' => 'Peupinah meuhasé',
 'movepage-moved' => '\'\'\'"$1" ka geupeupinah u "$2".\'\'\'',
 'articleexists' => 'Ôn ngön nan nyan ka na atawa nan nyang neupiléh hana sah. Neupiléh nan la’én.',
-'talkexists' => 'Ôn nyan ka geupeupinah, tapi ôn peugah haba bak ôn nyan h‘an jeuët geupeupinah kareuna ka na ôn peugah haba bak nan barô. Neupeusapat mantöng ôn ôn peugah haba nyan keudroë.',
-'movedto' => 'geupeupinah u',
 'movetalk' => 'Peupinah ôn peugah haba nyang na hubôngan.',
 'movelogpage' => 'Log pinah',
 'movereason' => 'Choë:',
@@ -1593,7 +1588,7 @@ Droëneuh jeuët neu’eu nèjih mantöng.',
 'file-info-size' => '$1 × $2 piksel, rayek beureukaih: $3, MIME jeunèh: $4',
 'file-nohires' => 'Hana resolusi nyang leubèh manyang.',
 'svg-long-desc' => 'Beureukah SVG, nominal $1 x $2 piksel, rayek beureukah: $3',
-'show-big-image' => 'Resolusi peunoh',
+'show-big-image' => 'Beureukaih aseuli',
 
 # Special:NewFiles
 'newimages' => 'Beureukah barô',
@@ -1626,10 +1621,6 @@ Data nyang la'én eunteuk teupeusom keudroë.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Andam beureukah nyoë ngön aplikasi luwa',
-'edit-externally-help' => '(Ngiëng [//meta.wikimedia.org/wiki/Help:External_editors peurintah atô] keu haba leubèh lanjôt)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ban dum',
 'namespacesall' => 'ban dum',
@@ -1678,8 +1669,8 @@ Neuci peudeuih hasé biasa.',
 
 # Special:SpecialPages
 'specialpages' => 'Laman kusuih',
-'specialpages-note' => '* Laman kusuih lagèë biasa.
-* <span class="mw-specialpagerestricted">Laman kusuih meuhat.</span>',
+'specialpages-note' => '* Laman kusuih biasa.
+* <span class="mw-specialpagerestricted">Laman kusuih geutheun.</span>',
 'specialpages-group-maintenance' => 'Beuneuri thèë plara',
 'specialpages-group-other' => "La'én-la'én",
 'specialpages-group-login' => 'Tamöng / dapeuta',
index b91ec0b..331f3ae 100644 (file)
@@ -38,7 +38,6 @@ $messages = array(
 'tog-minordefault' => 'علم كل التعديلات طفيفة افتراضيا',
 'tog-previewontop' => 'أظهر العرض المسبق قبل صندوق التحرير',
 'tog-previewonfirst' => 'أظهر معاينة مع أول تعديل',
-'tog-nocache' => 'عطّل تخزين المتصفح للصفحة',
 'tog-enotifwatchlistpages' => 'أرسل لي رسالة إلكترونية عندما تُغيّر صفحة أو ملف في قائمة مراقبتي',
 'tog-enotifusertalkpages' => 'أرسل لي رسالة إلكترونية عندما تعدل صفحة نقاشي',
 'tog-enotifminoredits' => 'أرسل لي رسالة إلكترونية عن التعديلات الطفيفة للصفحات والملفات أيضا',
@@ -158,7 +157,6 @@ $messages = array(
 'qbedit' => 'modifi el page (baddelha)',
 'qbpageoptions' => 'هذه الصفحة',
 'qbmyoptions' => 'صفحاتي',
-'qbspecialpages' => 'الصفحات الخاصة',
 'faq' => 'الأسئلة الأكثر تكرارا',
 'faqpage' => 'Project:أسئلة متكررة',
 
@@ -363,9 +361,6 @@ mahouwech mobarrar',
 'perfcachedts' => 'البيانات التالية مختزنة وكان آخر تحديث لها في $1. {{PLURAL:$4||نتيجة واحدة|نتيجتان|$4 نتائج|$4 نتيجة}} على الأكثر {{PLURAL:$4||مختزنة|مختزنتان|مختزنة}}.',
 'querypage-no-updates' => 'التحديثات لهذه الصفحة معطلة حاليا.
 البيانات هنا لن يتم تحديثها حاليا.',
-'wrong_wfQuery_params' => 'محددات خاطئة في wfQuery()<br />
-الدالة: $1<br />
-الاستعلام: $2',
 'viewsource' => 'اعرض المصدر',
 'viewsource-title' => 'إظهار مصدر $1',
 'actionthrottled' => 'لا يمكن عمل المزيد من هذا الفعل',
@@ -505,7 +500,6 @@ $2',
 'user-mail-no-addy' => 'لقد حاولت إرسال بريد إلكتروني دون عنوان بريد إلكتروني.',
 
 # Change password dialog
-'resetpass' => 'تغيير كلمة السر',
 'resetpass_announce' => 'تم تسجيل دخولك بكلمة سر مؤقتة.
 للدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:',
 'resetpass_header' => 'غير كلمة سر الحساب',
@@ -870,10 +864,6 @@ $2
 'revisiondelete' => 'حذف/استرجاع المراجعات',
 'revdelete-nooldid-title' => 'مراجعة هدف غير صحيحة',
 'revdelete-nooldid-text' => 'إما أنك لم تحدد مراجعة (أو مراجعات) معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.',
-'revdelete-nologtype-title' => 'لا نوع سجل تم إعطاؤه',
-'revdelete-nologtype-text' => 'أنت لم تحدد نوع سجل لعمل هذا الفعل عليه.',
-'revdelete-nologid-title' => 'مدخلة سجل غير صحيحة',
-'revdelete-nologid-text' => 'أنت إما أنك لم تحدد حدث سجل مستهدف لعمل هذه الوظيفة أو أن المدخلة المحددة غير موجودة.',
 'revdelete-no-file' => 'الملف المحدد غير موجود.',
 'revdelete-show-file-confirm' => 'هل أنت متأكد أنك تريد رؤية مراجعة محذوفة للملف "<nowiki>$1</nowiki>" بتاريخ $2 الساعة $3؟',
 'revdelete-show-file-submit' => 'نعم',
@@ -907,8 +897,6 @@ $1",
 'logdelete-failure' => "'''تعذر ضبط رؤية السجل:'''
 $1",
 'revdel-restore' => 'تغيير الرؤية',
-'revdel-restore-deleted' => 'مراجعات محذوفة',
-'revdel-restore-visible' => 'مراجعات مرئية',
 'pagehist' => 'تاريخ الصفحة',
 'deletedhist' => 'التاريخ المحذوف',
 'revdelete-hide-current' => 'خطأ عند إحفاء العنصر المؤرخ في $2 $1: هذه هي المراجعة الحالية.
@@ -982,7 +970,6 @@ $1",
 # Search results
 'searchresults' => 'el resultats',
 'searchresults-title' => 'نتائج البحث عن "$1"',
-'searchresulttext' => 'للمزيد من المعلومات حول البحث في {{SITENAME}}، انظر [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'prevn' => '{{PLURAL:$1|$1}} السابقة',
 'nextn' => '{{PLURAL:$1|$1}} التالية',
 'prevn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} سابقة',
@@ -1034,7 +1021,6 @@ $1",
 'recentchanges-label-minor' => 'هذا تعديل طفيف',
 'recentchanges-label-bot' => 'أجرى هذا التعديل بوت',
 'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن',
-'rcnote' => "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''اليوم''' الماضي|'''اليومين''' الماضيين|ال'''$2''' أيام الماضية|ال'''$2''' يوما الماضيا|ال'''$2''' يوم الماضي}}، كما في $5، $4.",
 'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
 'rclistfrom' => 'أظهر التغييرات بدءا من $1',
 'rcshowhideminor' => '$1 التعديلات الطفيفة',
@@ -1320,10 +1306,6 @@ $1",
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'عدل هذا الملف باستخدام تطبيق خارجي',
-'edit-externally-help' => '(انظر [https://www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'الكل',
 'namespacesall' => 'الكل',
index 485ba15..5c37bb8 100644 (file)
@@ -118,7 +118,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'OuBladsye' ),
        'Blankpage'                 => array( 'SkoonBladsy' ),
        'Block'                     => array( 'BlokIP' ),
-       'Blockme'                   => array( 'BlokMy' ),
        'Booksources'               => array( 'Boekbronne' ),
        'BrokenRedirects'           => array( 'Stukkende_aansture', 'Stukkendeaansture' ),
        'Categories'                => array( 'Kategorieë' ),
@@ -128,7 +127,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'SkepRekening', 'MaakGebruiker' ),
        'Deadendpages'              => array( 'DoodloopBladsye' ),
        'DeletedContributions'      => array( 'GeskrapteBydraes' ),
-       'Disambiguations'           => array( 'Dubbelsinnig' ),
        'DoubleRedirects'           => array( 'Dubbele_aansture', 'Dubbeleaansture' ),
        'Emailuser'                 => array( 'Stuur_e-pos', 'Stuure-pos', 'Stuur_epos', 'Stuurepos' ),
        'Export'                    => array( 'Eksporteer' ),
@@ -232,7 +230,6 @@ $messages = array(
 'tog-minordefault' => 'Merk alle wysigings automaties as klein by verstek.',
 'tog-previewontop' => 'Wys voorskou bo wysigingsboks.',
 'tog-previewonfirst' => 'Wys voorskou met eerste wysiging',
-'tog-nocache' => 'Deaktiveer blaaier se bladsykas',
 'tog-enotifwatchlistpages' => "Stuur my e-pos as 'n bladsye of lêer op my dophoulys verander",
 'tog-enotifusertalkpages' => 'Stuur vir my e-pos as my eie besprekingsblad verander word',
 'tog-enotifminoredits' => 'Stuur ook e-pos vir klein wysigings aan bladsye en lêers',
@@ -367,7 +364,6 @@ $messages = array(
 'qbedit' => 'Wysig',
 'qbpageoptions' => 'Bladsyopsies',
 'qbmyoptions' => 'My bladsye',
-'qbspecialpages' => 'Spesiale bladsye',
 'faq' => 'Gewilde vrae',
 'faqpage' => 'Project:GewildeVrae',
 
@@ -485,8 +481,8 @@ $1",
 'youhavenewmessages' => 'U het $1 (sien $2).',
 'youhavenewmessagesfromusers' => "U het $1 van {{PLURAL:$3|'n ander gebruiker|$3 gebruikers}} ($2).",
 'youhavenewmessagesmanyusers' => 'U het $1 van baie gebruikers ($2).',
-'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|nuwe boodskappe}}",
-'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|wysigings}}',
+'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|999=nuwe boodskappe}}",
+'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|999=wysigings}}',
 'youhavenewmessagesmulti' => 'U het nuwe boodskappe op $1',
 'editsection' => 'wysig',
 'editold' => 'wysig',
@@ -538,6 +534,7 @@ Dit kan ook dui op 'n fout in die sagteware van {{SITENAME}}.",
 # General errors
 'error' => 'Fout',
 'databaseerror' => 'Databasisfout',
+'databaseerror-text' => "'n Databasisfout het voorgekom. Dit kan op 'n fout in die sagteware dui.",
 'databaseerror-textcl' => "'n Databasis-versoek het gefaal.",
 'databaseerror-query' => 'SQL: $1',
 'databaseerror-function' => 'Funksie: $1',
@@ -576,15 +573,13 @@ Iemand anders het dit moontlik reeds geskrap.',
 'cannotdelete-title' => 'Bladsy "$1" kan nie verwyder word nie',
 'delete-hook-aborted' => "Die wysiging is deur 'n hoek gekanselleer.
 Geen verduideliking is verskaf nie.",
+'no-null-revision' => 'Dit was nie moontlik om \'n nuwe leë weergawe vir bladsy "$1" maak nie',
 'badtitle' => 'Ongeldige titel',
 'badtitletext' => "Die bladsytitel waarvoor gevra is, is ongeldig, leeg, of
 'n verkeerd geskakelde tussen-taal of tussen-wiki titel.",
 'perfcached' => "Die volgende inligting is gekas en mag dalk nie op datum wees nie. 'n Maksimum van {{PLURAL:$1|een resultaat|$1 resultate}} is in die kas beskikbaar.",
 'perfcachedts' => "Die volgende data is gekas en is laas op $2 om $3 bygewerk. 'n Maksimum van {{PLURAL:$4|een resultaat|$4 resultate}} is in die kas beskikbaar.",
 'querypage-no-updates' => 'Opdatering van hierdie bladsy is huidiglik afgeskakel. Inligting hier sal nie tans verfris word nie.',
-'wrong_wfQuery_params' => 'Foutiewe parameters na wfQuery()<br />
-Funksie: $1<br />
-Navraag: $2',
 'viewsource' => 'Wys bronteks',
 'viewsource-title' => 'Wys bron van $1',
 'actionthrottled' => 'Outo-rem op aksie uitgevoer',
@@ -613,7 +608,8 @@ Die rede hiervoor is "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en teks "$3"',
 'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekende naamruimtenummer $1 en teks "$2"',
 'exception-nologin' => 'Nie aangeteken nie',
-'exception-nologin-text' => 'U moet eers op hierdie wiki aanmeld alvorens u hierdie bladsy kan sien of die handeling kan uitvoer.',
+'exception-nologin-text' => '[[Special:Userlogin|Meld aan]] om hierdie bladsy te wys of om die handeling uit te voer.',
+'exception-nologin-text-manual' => 'U moet $1 om hierdie bladsy te wys of die handeling uit te voer.',
 
 # Virus scanner
 'virus-badscanner' => "Slegte konfigurasie: onbekende virusskandeerder: ''$1''",
@@ -621,10 +617,9 @@ Die rede hiervoor is "\'\'$3\'\'".',
 'virus-unknownscanner' => 'onbekende antivirus:',
 
 # Login and logout pages
-'logouttext' => "'''U is nou uitgeteken'''
+'logouttext' => "'''U is nou afgemeld'''
 
-U kan aanhou om {{SITENAME}} anoniem te gebruik; of u kan weer as dieselfde of 'n ander gebruiker <span class='plainlinks'>[$1 aanmeld]</span>.
-Dit is moontlik dat sommige bladsye nog sal aandui dat u steeds aangemeld is totdat u u webblaaier se kas skoonmaak.",
+Sommige bladsye kan moontlik nog aandui dat u steeds aangemeld is, totdat u u webblaaier se kas skoonmaak.",
 'welcomeuser' => 'Welkom, $1!',
 'welcomecreation-msg' => 'U gebruiker is geskep.
 Moenie vergeet om u [[Special:Preferences|voorkeure vir {{SITENAME}}]] te stel nie.',
@@ -661,9 +656,11 @@ Moenie vergeet om u [[Special:Preferences|voorkeure vir {{SITENAME}}]] te stel n
 'gotaccount' => "Het u reeds 'n rekening? $1.",
 'gotaccountlink' => 'Meld aan',
 'userlogin-resetlink' => 'U besonderhede vergeet?',
-'userlogin-resetpassword-link' => 'Herstel u wagwoord',
+'userlogin-resetpassword-link' => 'Wagwoord vergeet?',
 'helplogin-url' => 'Help:Aanmelding',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hulp met aanmelding]]',
+'userlogin-loggedin' => "U is reeds aangemeld as {{GENDER:$1|$1}}.
+Gebruik die onderstaande vorm om as 'n ander gebruiker aan te meld.",
 'userlogin-createanother' => "Skep nog 'n rekening",
 'createacct-join' => 'Verskaf u gegewens hieronder.',
 'createacct-another-join' => 'Sleutel die nuwe rekening se inligting hier onder in:',
@@ -753,6 +750,8 @@ Wag asseblief alvorens u weer probeer.",
 'login-abort-generic' => 'U is nie aangemeld nie. Die prosedure is gestaak.',
 'loginlanguagelabel' => 'Taal: $1',
 'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.",
+'createacct-another-realname-tip' => 'Regte naam is opsioneel.
+As u dit verskaf, sal dit gebruik word om u erkenning vir u werk te gee.',
 
 # Email sending
 'php-mail-error-unknown' => 'Onbekende fout in PHP se mail()-funksie',
@@ -760,7 +759,7 @@ Wag asseblief alvorens u weer probeer.",
 'user-mail-no-body' => "Daar is probeer om 'n leë of 'n onredelike kort boodskap te stuur.",
 
 # Change password dialog
-'resetpass' => 'Verander wagwoord',
+'changepassword' => 'Verander wagwoord',
 'resetpass_announce' => "U het aangeteken met 'n tydelike e-poskode.
 Om voort te gaan moet u 'n nuwe wagwoord hier kies:",
 'resetpass_text' => '<!-- Voeg teks hier by -->',
@@ -769,8 +768,7 @@ Om voort te gaan moet u 'n nuwe wagwoord hier kies:",
 'newpassword' => 'Nuwe wagwoord',
 'retypenew' => 'Tik nuwe wagwoord weer in',
 'resetpass_submit' => 'Stel wagwoord en meld aan',
-'changepassword-success' => 'U wagwoord is suksesvol gewysig!
-Besig om u aan te meld...',
+'changepassword-success' => 'U wagwoord is suksesvol gewysig!',
 'resetpass_forbidden' => 'Wagwoorde kannie gewysig word nie.',
 'resetpass-no-info' => 'U moet ingeteken wees om hierdie bladsy direk te kan gebruik.',
 'resetpass-submit-loggedin' => 'Verander wagwoord',
@@ -783,7 +781,7 @@ U het moontlik reeds u wagwoord gewysig of 'n nuwe tydelike wagwoord aangevra.",
 # Special:PasswordReset
 'passwordreset' => 'Wagwoord herstel',
 'passwordreset-text-one' => 'Voltooi hierdie vorm om u wagwoord te herstel.',
-'passwordreset-text-many' => '{{PLURAL:$1|Vul een van die velde in om u wagwoord te herstel.}}',
+'passwordreset-text-many' => "{{PLURAL:$1|Vul een van die velde in om 'n tydelike wagwoord per e-pos te ontvang.}}",
 'passwordreset-legend' => 'Kry nuwe wagwoord',
 'passwordreset-disabled' => 'Die herskik van U wagwoord is gedeaktiveer op hierdie wiki.',
 'passwordreset-emaildisabled' => 'E-posfunksies is afgeskakel op hierdie wiki.',
@@ -1146,10 +1144,6 @@ U kan wel hierdie verskil sien. Meer details kan in die [{{fullurl:{{#Special:Lo
 'revisiondelete' => 'Verwyder/herstel weergawes',
 'revdelete-nooldid-title' => 'Ongeldige teiken weergawe',
 'revdelete-nooldid-text' => 'U het geen teikenweergawes vir hierdie aksie verskaf nie, die aangegewe weergawe bestaan nie, of u probeer om die laaste weergawe te verberg.',
-'revdelete-nologtype-title' => 'Geen logboektipe verskaf nie',
-'revdelete-nologtype-text' => "U het nie 'n logboektipe verskaf om hierdie handeling op uit te voer nie.",
-'revdelete-nologid-title' => 'Ongeldige logboekreël',
-'revdelete-nologid-text' => 'U het óf geen logboeke gespesifiseer nie óf die gevraagde lyn bestaan nie in die logboek nie.',
 'revdelete-no-file' => 'Die gespesifiseerde lêer bestaan nie.',
 'revdelete-show-file-confirm' => 'Is u seker u wil die geskrapte weergawe van die lêer "<nowiki>$1</nowiki>" van $2 om $3 sien?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1183,8 +1177,6 @@ $1",
 'logdelete-failure' => "'''Sigbaarheid kon nie vir die logboekreël gestel word nie:'''
 $1",
 'revdel-restore' => 'Verander sigbaarheid',
-'revdel-restore-deleted' => 'geskrapte wysigings',
-'revdel-restore-visible' => 'sigbare wysigings',
 'pagehist' => 'Bladsy geskiedenis',
 'deletedhist' => 'Verwyderde geskiedenis',
 'revdelete-hide-current' => 'Fout met die wegsteek van die item gedateer $2 om $1 uur: hierdie is die huidige weergawe. Dit kan nie versteek word nie.',
@@ -1262,12 +1254,8 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 # Search results
 'searchresults' => 'Soekresultate',
 'searchresults-title' => 'Soekresultate vir "$1"',
-'searchresulttext' => 'Vir meer inligting oor {{SITENAME}}-soekresultate, lees [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'U soek vir \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle bladsye wat met "$1" begin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle bladsye wat aan "$1" skakel]])',
-'searchsubtitleinvalid' => 'Vir navraag "$1"',
 'toomanymatches' => "Te veel resultate. Probeer asseblief 'n ander soektog.",
 'titlematches' => 'Artikeltitel resultate',
-'notitlematches' => 'Geen artikeltitel resultate nie',
 'textmatches' => 'Artikelteks resultate',
 'notextmatches' => 'Geen artikelteks resultate nie',
 'prevn' => 'vorige {{PLURAL:$1|$1}}',
@@ -1276,10 +1264,8 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultate}}',
 'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per bladsy',
 'viewprevnext' => 'Wys ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Soekopsies',
 'searchmenu-exists' => "'''Daar is reeds 'n bladsy genaamd \"[[:\$1]]\" op die wiki'''",
 'searchmenu-new' => "'''Skep die bladsy \"[[:\$1]]\" op hierdie wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wys bladsye wat met die voorvoegsel begin]]',
 'searchprofile-articles' => 'Inhoudelike bladsye',
 'searchprofile-project' => 'Hulp- en projekbladsye',
 'searchprofile-images' => 'Multimedia',
@@ -1300,22 +1286,16 @@ Details kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} s
 'search-interwiki-default' => '$1 resultate:',
 'search-interwiki-more' => '(meer)',
 'search-relatedarticle' => 'Verwante',
-'mwsuggest-disable' => 'Deaktiveer soek-voorstelle',
 'searcheverything-enable' => 'Soek in alle naamruimtes',
 'searchrelated' => 'verwante',
 'searchall' => 'alle',
 'showingresults' => "Hier volg {{PLURAL:$1|'''1''' resultaat|'''$1''' resultate}} vanaf #'''$2'''.",
 'showingresultsnum' => "Hier onder {{PLURAL:$3|is '''1''' resultaat|is '''$3''' resultate}} vanaf #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultate '''$1 - $2''' van '''$3'''}} vir '''$4'''",
-'nonefound' => "<strong>Opmerking</strong>: nie alle naamruimtes word by verstek deursoek nie.
-As die voorvoegsel \"''all:''\" in 'n soekopdrag gebruik word, word alle bladsye deursoek (inklusief besprekengsbladsye, sjablone, ensovoorts).
-U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'search-nonefound' => 'Daar is geen resultate vir u soekopdrag nie.',
-'powersearch' => 'Gevorderde soektog',
 'powersearch-legend' => 'Gevorderde soektog',
 'powersearch-ns' => 'Soek in naamruimtes:',
 'powersearch-redir' => 'Wys aanstuurbladsye',
-'powersearch-field' => 'Soek vir',
 'powersearch-togglelabel' => 'Kies:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Geen',
@@ -1327,7 +1307,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'preferences' => 'Voorkeure',
 'mypreferences' => 'Voorkeure',
 'prefs-edits' => 'Aantal wysigings:',
-'changepassword' => 'Verander wagwoord',
 'prefs-skin' => 'Omslag',
 'skin-preview' => 'Voorskou',
 'datedefault' => 'Geen voorkeur',
@@ -1350,13 +1329,11 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'prefs-email' => 'E-posopsies',
 'prefs-rendering' => 'Voorkoms',
 'saveprefs' => 'Stoor voorkeure',
-'resetprefs' => 'Herstel voorkeure',
 'restoreprefs' => 'Herstel voorkeure',
 'prefs-editing' => 'Wysigings',
 'rows' => 'Rye',
 'columns' => 'Kolomme',
 'searchresultshead' => 'Soekresultate',
-'resultsperpage' => 'Aantal resultate om te wys',
 'stub-threshold' => 'Drempel vir merk as <a href="#" class="stub">saadjie</a> (grepe):',
 'stub-threshold-disabled' => 'Afgeskakel',
 'recentchangesdays' => 'Aantal dae wat in onlangse wysigings vertoon word:',
@@ -1368,7 +1345,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
 'localtime' => 'Plaaslike tyd:',
 'timezoneuseserverdefault' => 'Gebruik wiki se verstekwaarde ($1)',
 'timezoneuseoffset' => 'Ander (spesifiseer tydsverskil)',
-'timezoneoffset' => 'Tydsverskil¹:',
 'servertime' => 'Bedienertyd:',
 'guesstimezone' => 'Vul in vanaf webblaaier',
 'timezoneregion-africa' => 'Afrika',
@@ -1617,17 +1593,18 @@ As u dit verskaf, sal dit gebruik word om erkenning vir u werk te gee.',
 'recentchanges-summary' => 'Volg die mees onlangse wysigings aan die wiki op die bladsy.',
 'recentchanges-noresult' => 'Geen wysigings gedurende die tydperk pas die kriteria nie.',
 'recentchanges-feed-description' => 'Hierdie voer laat u toe om die mees onlangse wysigings aan die wiki te volg.',
-'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep",
+'recentchanges-label-newpage' => "Met die wysiging is 'n nuwe bladsy geskep.",
 'recentchanges-label-minor' => "Hierdie is 'n klein wysiging",
-'recentchanges-label-bot' => "Hierdie wysiging was deur 'n bot uitgevoer",
+'recentchanges-label-bot' => "Hierdie wysiging is deur 'n bot uitgevoer",
 'recentchanges-label-unpatrolled' => 'Die wysiging is nog nie gekontroleer nie',
+'recentchanges-label-plusminus' => 'Bladsy is met die aantal grepe gewysig',
+'recentchanges-legend-heading' => "'''Sleutel:'''",
 'recentchanges-legend-newpage' => '$1 - nuwe bladsy',
-'rcnote' => "Hier volg die laaste {{PLURAL:$1|'''$1''' wysiging|'''$1''' wysigings}} gedurende die afgelope {{PLURAL:$2|dag|'''$2''' dae}}, soos vanaf $4 om $5.",
 'rcnotefrom' => "Hier volg wysigings sedert '''$2''' (maksimum van '''$1''' word gewys).",
 'rclistfrom' => 'Vertoon wysigings vanaf $1',
 'rcshowhideminor' => '$1 klein wysigings',
 'rcshowhidebots' => '$1 robotte',
-'rcshowhideliu' => '$1 aangetekende gebruikers',
+'rcshowhideliu' => '$1 geregistreerde gebruikers',
 'rcshowhideanons' => '$1 anonieme gebruikers',
 'rcshowhidepatr' => '$1 gekontroleerde wysigings',
 'rcshowhidemine' => '$1 my wysigings',
@@ -2085,6 +2062,7 @@ Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste re
 'ninterwikis' => '$1 {{PLURAL:$1|interwikiskakel|interwikiskakels}}',
 'nlinks' => '$1 {{PLURAL:$1|skakel|skakels}}',
 'nmembers' => '$1 {{PLURAL:$1|lid|lede}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|lid|lede}}',
 'nrevisions' => '$1 {{PLURAL:$1|weergawe|weergawes}}',
 'nviews' => '$1 {{PLURAL:$1|keer|kere}} aangevra',
 'nimagelinks' => 'Gebruik op {{PLURAL:$1|een bladsy|$1 bladsye}}',
@@ -2122,10 +2100,8 @@ Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste re
 'protectedpages' => 'Beskermde bladsye',
 'protectedpages-indef' => 'Slegs blokkades sonder vervaldatum',
 'protectedpages-cascade' => 'Slegs blokkades wat neergolf',
-'protectedpagestext' => 'Die volgende bladsye is beskerm teen verskuiwing of wysiging:',
 'protectedpagesempty' => 'Geen bladsye is tans met die parameters beveilig nie.',
 'protectedtitles' => 'Beskermde titels',
-'protectedtitlestext' => 'Die volgende titels is beveilig en kan nie geskep word nie',
 'protectedtitlesempty' => 'Geen titels is tans met die parameters beveilig nie.',
 'listusers' => 'Gebruikerslys',
 'listusers-editsonly' => 'Slegs gebruikers met wysigings',
@@ -2177,9 +2153,6 @@ U kan die resultate vernou deur 'n boekstaaftipe, gebruikersnaam (kas-sensitief)
 'allpagesto' => 'Wys bladsye tot:',
 'allarticles' => 'Alle bladsye',
 'allinnamespace' => 'Alle bladsye (naamruimte $1)',
-'allnotinnamespace' => 'Alle bladsye (nie in naamruimte $1 nie)',
-'allpagesprev' => 'Vorige',
-'allpagesnext' => 'Volgende',
 'allpagessubmit' => 'Gaan',
 'allpagesprefix' => 'Wys bladsye wat begin met:',
 'allpagesbadtitle' => "Die gespesifiseerde bladsynaam is ongeldig of het 'n intertaal- of interwiki-voorvoegsel.
@@ -2519,7 +2492,6 @@ U mag moontlik 'n foutiewe skakel hê, of die weergawe is reeds herstel of uit d
 'undeletebtn' => 'Plaas terug',
 'undeletelink' => 'wys/herstel',
 'undeleteviewlink' => 'bekyk',
-'undeletereset' => 'Herinstel',
 'undeleteinvert' => 'Omgekeerde seleksie',
 'undeletecomment' => 'Rede:',
 'undeletedrevisions' => '{{PLURAL:$1|1 weergawe|$1 weergawes}} herstel',
@@ -2608,7 +2580,6 @@ Die laaste inskrywing uit die blokkeerlogboek word hier ter inligting weergegee:
 'block' => 'Blok gebruiker',
 'unblock' => 'Deblokkeer gebruiker',
 'blockip' => 'Blokkeer gebruiker',
-'blockip-title' => 'Blokkeer gebruiker',
 'blockip-legend' => 'Blokkeer gebruiker of IP-adres',
 'blockiptext' => "Gebruik die vorm hier onder om skryftoegang vir 'n gebruiker of IP-adres in te trek.
 Dit mag slegs as beskerming teen vandalisme en in ooreenstemming met die [[{{MediaWiki:Policy-url}}|beleid]] gedoen word.
@@ -2616,7 +2587,6 @@ Vul 'n spesifieke rede hier onder in (haal byvoorbeeld spesifieke bladsye wat ge
 'ipadressorusername' => 'IP-adres of gebruikersnaam:',
 'ipbexpiry' => 'Duur:',
 'ipbreason' => 'Rede:',
-'ipbreasonotherlist' => 'Ander rede',
 'ipbreason-dropdown' => '*Algemene redes vir versperring
 ** Invoeg van valse inligting
 ** Skrap van bladsyinhoud
@@ -2632,8 +2602,6 @@ Vul 'n spesifieke rede hier onder in (haal byvoorbeeld spesifieke bladsye wat ge
 'ipbsubmit' => 'Versper hierdie gebruiker',
 'ipbother' => 'Ander tydperk:',
 'ipboptions' => '2 ure:2 hours,1 dag:1 day,3 dae:3 days,1 week:1 week,2 weke:2 weeks,1 maand:1 month,3 maande:3 months,6 maande:6 months,1 jaar:1 year,onbeperk:infinite',
-'ipbotheroption' => 'ander',
-'ipbotherreason' => 'Ander/ekstra rede:',
 'ipbhidename' => 'Verberg gebruiker van wysigings en lyste',
 'ipbwatchuser' => 'Hou die gebruiker se bladsy en besprekingsbladsy dop.',
 'ipb-disableusertalk' => 'Voorkom dat die gebruiker tydens die blokkade sy eie besprekingsblad kan wysig',
@@ -2727,7 +2695,6 @@ Kontak asseblief u internet-diensverskaffer of tegniese ondersteuning en lig hul
 'sorbs_create_account_reason' => "U IP-adres is gelys as 'n oop instaanbediener (proxy) in die DNS-swartlys wat op {{SITENAME}} gebruik word.
 U kan nie 'n rekening skep nie.",
 'xffblockreason' => "'n IP-adres wat u gebruik is geblokkeer. Dit kom in die opskrif 'X-Forwarded-For' voor. Die oorspronklike rede vir die blokkade is: $1",
-'cant-block-while-blocked' => 'U kan nie ander gebruikers blokkeer terwyl u self geblokkeer is nie.',
 'cant-see-hidden-user' => "Die gebruiker wat u probeer blokkeer is reeds geblokkeer en weggesteek.
 Aangesien u nie die 'hideuser'-reg het nie, kan u nie die blokkade van die gebruiker sien of wysig nie.",
 'ipbblocked' => 'U kan nie ander gebruikers (de)blokkeer nie, omdat u self geblokkeer is',
@@ -2785,7 +2752,6 @@ Indien wel sal u self die blad moet skuif of versmelt (indien nodig).",
 'movearticle' => 'Skuif bladsy',
 'moveuserpage-warning' => "'''Waarskuwing:''' U gaan 'n gebruikersblad skuif.
 Let daarop dat slegs die bladsy geskuif sal word. Die gebruiker self sal ''nie'' hernoem word ''nie''.",
-'movenologin' => 'Nie ingeteken nie',
 'movenologintext' => "U moet 'n geregistreerde gebruiker wees en [[Special:UserLogin|ingeteken]]
 wees om 'n bladsy te skuif.",
 'movenotallowed' => 'U het nie regte om bladsye te skuif nie.',
@@ -2802,8 +2768,6 @@ wees om 'n bladsy te skuif.",
 'articleexists' => "'n Bladsy met daardie naam bestaan reeds, of die naam wat u gekies het, is nie geldig nie.
 Kies asseblief 'n ander naam.",
 'cantmove-titleprotected' => "U kan nie 'n bladsy na die titel skuif nie, omdat die nuwe titel beskerm is teen die skep daarvan.",
-'talkexists' => "'''Die bladsy self is suksesvol geskuif, maar die besprekingsbladsy is nie geskuif nie omdat een reeds bestaan met die nuwe titel. Smelt hulle asseblief met die hand saam.'''",
-'movedto' => 'geskuif na',
 'movetalk' => 'Skuif besprekingsblad ook, indien van toepassing.',
 'move-subpages' => 'Skuif al die subbladsye (maksimaal $1)',
 'move-talk-subpages' => 'Skuif al die subbladsye van die besprekingsblad (maksimaal $1)',
@@ -3165,7 +3129,7 @@ $1',
 'svg-long-desc' => 'SVG-lêer, normaalweg $1 × $2 piksels, lêergrootte: $3',
 'svg-long-desc-animated' => 'Geanimeerde SVG-lêer, normaalweg $1 × $2 piksels, lêergrootte: $3',
 'svg-long-error' => 'Ongeldige SVG-lêer: $1',
-'show-big-image' => 'Volle resolusie',
+'show-big-image' => 'Oorspronklike lêer',
 'show-big-image-preview' => 'Grootte van hierdie voorskou: $1.',
 'show-big-image-other' => 'Ander {{PLURAL:$2|resolusie|resolusies}}: $1.',
 'show-big-image-size' => '$1 × $2 piksels',
@@ -3194,7 +3158,7 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minuut|$1 minute}}',
 'hours' => '{{PLURAL:$1|$1 uur|$1 ure}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dae}}',
-'weeks' => '{{PLURAL: $1|één week|$1 weke}}',
+'weeks' => '{{PLURAL:$1|één week|$1 weke}}',
 'months' => '{{PLURAL:$1|een maand|$1 maande}}',
 'years' => '{{PLURAL:$1|een jaar|$1 jaar}}',
 'ago' => '$1 gelede',
@@ -3631,15 +3595,10 @@ Ander velde sal versteek wees.
 'exif-urgency-high' => 'Hoog ($1)',
 'exif-urgency-other' => 'Gebruiker-gedefinieerde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => "Wysig hierdie lêer met 'n eksterne program",
-'edit-externally-help' => '(Sien [https://www.mediawiki.org/wiki/Manual:External_editors instruksies] vir meer inligting)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alle',
 'monthsall' => 'alle',
-'limitall' => 'alle',
 
 # Email address confirmation
 'confirmemail' => 'Bevestig e-posadres',
@@ -3660,7 +3619,6 @@ Die e-posprogram meld: $1',
 'confirmemail_success' => 'U e-posadres is bevestig.
 U kan nou [[Special:UserLogin|aanmeld]] en die wiki gebruik.',
 'confirmemail_loggedin' => 'U e-posadres is nou bevestig.',
-'confirmemail_error' => 'Iets het foutgegaan met die stoor van u bevestiging.',
 'confirmemail_subject' => '{{SITENAME}}: E-posadres-bevestiging',
 'confirmemail_body' => 'Iemand, waarskynlik u vanaf IP-adres: $1, het \'n rekening "$2" met hierdie e-posadres by {{SITENAME}} geregistreer.
 
@@ -3733,6 +3691,10 @@ Bevestig dat u die bladsy wil herskep.',
 'imgmultigo' => 'Laat waai!',
 'imgmultigoto' => 'Gaan na bladsy $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standaard taal)',
+'img-lang-go' => 'OK',
+
 # Table pager
 'ascending_abbrev' => 'op',
 'descending_abbrev' => 'af',
@@ -3861,6 +3823,7 @@ Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van
 
 # Special:SpecialPages
 'specialpages' => 'Spesiale bladsye',
+'specialpages-note-top' => 'Sleutel',
 'specialpages-note' => '* Normale spesiale bladsye.
 * <span class="mw-specialpagerestricted">Spesiale bladsye met beperkte toegang.</span>
 * <span class="mw-specialpagecached">Spesiale bladsye met gegewens uit die kas (kan verouderd wees).</span>',
@@ -3910,7 +3873,6 @@ Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van
 
 # Special:ComparePages
 'comparepages' => 'Vergelyk bladsye',
-'compare-selector' => 'Vergelyk bladsyweergawes',
 'compare-page1' => 'Bladsy 1',
 'compare-page2' => 'Bladsy 2',
 'compare-rev1' => 'Weergawe 1',
@@ -4085,10 +4047,12 @@ Dit word gedoen deur die relevante funksies in die MediaWiki-ontleder te roep.',
 'expand_templates_input' => 'Invoerteks:',
 'expand_templates_output' => 'Resultaat',
 'expand_templates_xml_output' => 'XML-afvoer',
+'expand_templates_html_output' => 'Rou HTML-afvoer',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Verwyder kommentaar',
 'expand_templates_remove_nowiki' => 'Onderdruk <nowiki> etikette in die resultaat',
 'expand_templates_generate_xml' => 'Wys XML-ontledingsboom',
+'expand_templates_generate_rawhtml' => 'Wys rou HTML',
 'expand_templates_preview' => 'Voorskou',
 
 );
index bb3265b..d9b6d96 100644 (file)
  * @author Kasahorow
  * @author Natsubee
  * @author Paa.kwesi
+ * @author Riches4christ
  */
 
 $namespaceNames = array(
-       NS_MEDIA            => 'Medya',
-       NS_SPECIAL          => 'Spesial',
-       NS_TALK             => 'Nkɔmbɔ',
-       NS_USER             => 'User',
-       NS_USER_TALK        => 'User_nkɔmbɔ',
-       NS_PROJECT_TALK     => '$1_nkɔmbɔ',
-       NS_FILE             => 'Fayl',
-       NS_FILE_TALK        => 'Fayl_nkɔmbɔ',
+       NS_MEDIA            => 'Media',
+       NS_SPECIAL          => 'Soronko',
+       NS_TALK             => 'Nkɔmmɔ',
+       NS_USER             => 'Odwumanyɛni',
+       NS_USER_TALK        => 'Odwumanyɛni_nkɔmmɔbea',
+       NS_PROJECT_TALK     => '$1_nkɔmmɔ',
+       NS_FILE             => 'File',
+       NS_FILE_TALK        => 'File_nkɔmmɔ',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_nkɔmbɔ',
-       NS_TEMPLATE         => 'Şablon',
-       NS_TEMPLATE_TALK    => 'Şablon_nkɔmbɔ',
-       NS_HELP             => 'Help',
-       NS_HELP_TALK        => 'Help_nkɔmbɔ',
-       NS_CATEGORY         => 'Kategori',
-       NS_CATEGORY_TALK    => 'Kategori_nkɔmbɔ',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_nkɔmmɔ',
+       NS_TEMPLATE         => 'Nhwɛsode',
+       NS_TEMPLATE_TALK    => 'Nhwɛsode_nkɔmmɔbea',
+       NS_HELP             => 'Boa',
+       NS_HELP_TALK        => 'Mmoa_nkɔmmɔbea',
+       NS_CATEGORY         => 'Nkyekyem',
+       NS_CATEGORY_TALK    => 'Nkyekyem_nkɔmmɔbea',
 );
 
 $messages = array(
@@ -78,7 +79,7 @@ $messages = array(
 'talk' => 'Nkɔmbɔ',
 'jumptosearch' => 'hwehwɛ',
 
-# 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).
+# 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).
 'aboutsite' => 'Fa {{SITENAME}} ho',
 'mainpage' => 'Krataafa Titiriw',
 
@@ -86,6 +87,9 @@ $messages = array(
 'editsectionhint' => 'Sesa sɛkhyɛn: $1',
 'red-link-title' => '$1 (krataafa nni hɔ)',
 
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'kratafa',
+
 # Login and logout pages
 'login' => 'Bra mu',
 'nav-login-createaccount' => 'Bra mu / yɛ akawnt',
@@ -95,9 +99,6 @@ $messages = array(
 'notloggedin' => 'Mmbaa mu',
 'nologin' => 'Wo nni akawnt anaa? $1.',
 
-# Search results
-'powersearch' => 'Hwehwɛ',
-
 # Preferences page
 'searchresultshead' => 'Hwehwɛ',
 
@@ -109,4 +110,7 @@ $messages = array(
 
 'sp-contributions-talk' => 'Kasa',
 
+# Block/unblock
+'contribslink' => 'ntoboa',
+
 );
index 51cf9d5..9974749 100644 (file)
@@ -89,7 +89,6 @@ $messages = array(
 'tog-minordefault' => 'Shêjoji fillimisht tâna redaktimet si të vogla',
 'tog-previewontop' => 'Vendose parapamjen përpara kutisë redaktuese',
 'tog-previewonfirst' => 'Shfaqe parapamjen në redaktimin e parë',
-'tog-nocache' => 'Mos ruej kopje të faqeve',
 'tog-enotifwatchlistpages' => 'Njoftomë me email, kur ndryshojnë faqet e mbikëqyruna',
 'tog-enotifusertalkpages' => 'Njoftomë me email kur ndryshon faqja ime e diskutimit',
 'tog-enotifminoredits' => 'Njoftomë me email për redaktime të vogla të faqeve',
@@ -210,7 +209,6 @@ $messages = array(
 'qbedit' => 'Redakto',
 'qbpageoptions' => 'Kjo faqe',
 'qbmyoptions' => 'Faqet e mija',
-'qbspecialpages' => 'Faqet speciale',
 'faq' => 'Pyetjet e shpeshta',
 'faqpage' => 'Project:Pyetjet e shpeshta',
 
@@ -405,9 +403,6 @@ Ndodh që ka shêja që nuk munden me u përdorë në titull.',
 'perfcachedts' => 'Shenimi i mâposhtëm âsht kopje e memorizueme dhe âsht rifreskue së fundit me $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Redaktimi i kësaj faqeje âsht ndalue për momentin.
 Shenimet këtu nuk do të rifreskohen.',
-'wrong_wfQuery_params' => 'Parametra gabim te wfQuery()<br />
-Funksioni: $1<br />
-Kërkesa: $2',
 'viewsource' => 'Shih kodin',
 'actionthrottled' => 'Veprimi âsht i kufizuem',
 'actionthrottledtext' => 'Si masë kunder spamit, jeni të kufizuem me kry këtë veprim shumë herë për nji kohë shumë të shkurtë, dhe e keni tejkalue këtë kufizim.
@@ -528,7 +523,7 @@ Ju lutemi pritni pak për me provue prap.',
 'suspicious-userlogout' => 'Kërkesa juaj për të shkëputet u mohua sepse duket sikur është dërguar nga një shfletues të thyer ose caching proxy',
 
 # Change password dialog
-'resetpass' => 'Ndrysho fjalëkalimin',
+'changepassword' => 'Ndërrimi i fjalëkalimit',
 'resetpass_announce' => 'Jeni kyçë me nji kod të përkohshëm të dërguem me email.
 Për me krye kyçjen, specifikoni fjalëkalimin e ri këtu:',
 'resetpass_text' => '<!-- Shto tekst këtu -->',
@@ -802,8 +797,6 @@ Shiko tek [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} regjistr
 'revisiondelete' => 'Fshij/kthe verzionet',
 'revdelete-nooldid-title' => 'Version i dëshiruar i pavfleshëm',
 'revdelete-nooldid-text' => 'Ose nuk keni përcaktuar një version(e) të dëshiruar për veprimin, ose versioni nuk ekziston, ose po mundoheni të fshihni versionin e tanishëm.',
-'revdelete-nologtype-title' => 'Nuk është dhënë asnjë lloj i të dhënave',
-'revdelete-nologtype-text' => 'Nuk keni caktuar llojin e të dhënave për të realizuar veprimin.',
 'revdelete-no-file' => 'Skeda e dhënë nuk ekziston.',
 'revdelete-selected' => "'''{{PLURAL:$2|Versioni i zgjedhur i|Versionet e zgjedhura të}} [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Veprimi i zgjedhur në regjistër|Veprimet e zgjedhura në regjistër}}:'''",
@@ -870,12 +863,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 # Search results
 'searchresults' => 'Rezultatet e kërkimit',
 'searchresults-title' => 'Rezultatet e kërkimit për "$1"',
-'searchresulttext' => 'Për mâ shumë informata rreth kërkimit në {{SITENAME}} shih [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Keni kërkue \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tâna faqet që nisin me "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tâna faqet që lidhen me "$1"]])',
-'searchsubtitleinvalid' => "Keni kërkue '''$1'''",
 'toomanymatches' => 'Ka tepër shumë përputhje, provoni nji kërkesë mâ të ngushtë',
 'titlematches' => 'Tituj që përputhen',
-'notitlematches' => 'Nuk ka përputhje në tituj',
 'textmatches' => 'Përputhje në tekst',
 'notextmatches' => 'Nuk ka përputhje tekstuale në asnji faqe',
 'prevn' => 'e përparme {{PLURAL:$1|$1}}',
@@ -884,10 +873,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'nextn-title' => '$1 {{PLURAL:$1|rezultat|rezultate}} të ardhshme',
 'shown-title' => 'Trego $1 {{PLURAL:$1|rezultat|rezultate}} për faqe',
 'viewprevnext' => 'Shih ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcionet e kërkimit',
 'searchmenu-exists' => "'''Në këtë wiki âsht nji faqe me titullin \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Krijo faqen \"[[:\$1]]\" në këtë wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shfleto faqet me këtë prefiks]]',
 'searchprofile-articles' => 'Faqet me përmbajtje',
 'searchprofile-project' => 'Faqet e ndihmës dhe projekteve',
 'searchprofile-images' => 'Multimedia',
@@ -907,21 +894,16 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'search-interwiki-default' => '$1 rezultate:',
 'search-interwiki-more' => '(mâ shumë)',
 'search-relatedarticle' => 'Të ngjajshme',
-'mwsuggest-disable' => 'Deaktivizo sygjerimet me AJAX',
 'searcheverything-enable' => 'Kërko në tâna hapësinat',
 'searchrelated' => 'të ngjajshme',
 'searchall' => 'tâna',
 'showingresults' => "Mâ poshtë {{PLURAL:$1|tregohet '''1''' rezultat|tregohen '''$1''' rezultate}} që nisin me #'''$2'''.",
 'showingresultsnum' => "Mâ poshtë {{PLURAL:$3|tregohet '''1''' rezultat|tregohen '''$3''' rezultate}} që nisin me #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultati '''$1''' prej '''$3'''|Rezultatet '''$1 - $2''' prej '''$3'''}} për '''$4'''",
-'nonefound' => "'''Shenim''': Vetëm disa hapësina kërkohen me t'lême.
-Provoni me ia parashtue kërkesës tuej ''tâna:'' që me lypë tânë përmbajtjen (përfshî edhe diskutimet, shabllonat, etj.), ose përdorni hapësinën e dëshirueme si parashtesë.",
 'search-nonefound' => 'Nuk ka rezultate që përputhen me kërkesën.',
-'powersearch' => 'Kërkimi i detajshëm',
 'powersearch-legend' => 'Kërkimi i detajshëm',
 'powersearch-ns' => 'Kërkimi në hapësina:',
 'powersearch-redir' => 'Listo përcjelljet',
-'powersearch-field' => 'Kërko',
 'powersearch-togglelabel' => 'Zgjedh:',
 'powersearch-toggleall' => 'Tâna',
 'powersearch-togglenone' => 'Asnji',
@@ -934,7 +916,6 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
 'preferences' => 'Parapëlqimet',
 'mypreferences' => 'Parapëlqimet e mija',
 'prefs-edits' => 'Numri i redaktimeve:',
-'changepassword' => 'Ndërrimi i fjalëkalimit',
 'prefs-skin' => 'Doka',
 'skin-preview' => 'Parapâmja',
 'datedefault' => "S'ka parapëlqim",
@@ -953,7 +934,6 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
 'prefs-email' => 'Opcionet për email',
 'prefs-rendering' => 'Pâmja',
 'saveprefs' => 'Regjistro',
-'resetprefs' => 'Fshij ndryshimet e paruejtuna',
 'restoreprefs' => 'Kthe tâna përcaktimet si në fillim',
 'prefs-editing' => 'Tue redaktue',
 'rows' => 'Rreshta:',
@@ -970,7 +950,6 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
 'localtime' => 'Ora lokale:',
 'timezoneuseserverdefault' => 'Përdor të paracaktuemen e serverit',
 'timezoneuseoffset' => 'Tjetër (specifiko kcimin)',
-'timezoneoffset' => 'Kcimi¹:',
 'servertime' => 'Ora e serverit:',
 'guesstimezone' => 'Mbush prej shfletuesit:',
 'timezoneregion-africa' => 'Afrikë',
@@ -1146,7 +1125,6 @@ Mundeni me zgjedhe që të tjerët me ju kontaktue përmjet faqe së diskutimit
 'recentchanges-summary' => 'Ndiqni ndryshime së fundmi tek kjo faqe.',
 'recentchanges-feed-description' => 'Përcjelli ndryshimet mâ të reja të këtij wiki në këtë feed.',
 'recentchanges-label-newpage' => 'Ky redaktim krijoi një faqe të re',
-'rcnote' => "Mâ poshtë {{PLURAL:$1|âsht '''1''' ndryshim|janë '''$1''' ndryshimet e fundit}} në {{PLURAL:$2|ditën|'''$2''' ditët}} e fundit, prej $5, $4.",
 'rclistfrom' => 'Trego ndryshimet e reja tue fillue prej $1',
 'rcshowhideminor' => '$1 redaktimet e vogla',
 'rcshowhidebots' => 'botat në $1',
@@ -1396,9 +1374,6 @@ Në këto raste, duheni me i bashkue manualisht këto faqe nëse dëshironi.",
 'movepage-moved' => '\'\'\'"$1" âsht zhvendosë te "$2"\'\'\'',
 'articleexists' => 'Nji faqe me këtë titull tashmâ ekziston, apo keni zgjedhë nji titull të pavlefshëm.
 Ju lutemi zgjedhni nji titull tjetër.',
-'talkexists' => "'''Vetë faqja u zhvendos me sukses, por faqja e diskutimit nuk mujti me u zhvendosë sepse tashmâ ekziston te titulli i ri.
-Ju lutemi bashkoni manualisht.'''",
-'movedto' => 'zhvendosur te',
 'movetalk' => 'Zhvendos faqen gjegjëse të diskutimeve',
 'movelogpage' => 'Regjistri i zhvendosjeve',
 'movereason' => 'Arsyeja:',
@@ -1552,10 +1527,6 @@ Tjerat kanë me mbetë të mshefuna.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Ndryshoni kët figurë/skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shih [https://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për mâ shumë informata)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'krejt',
 'namespacesall' => 'krejt',
index de58608..f6fdbc9 100644 (file)
@@ -69,7 +69,6 @@ $messages = array(
 'tog-minordefault' => 'ሁሉም እርማቶች በቀዳሚነት አነስተኛ ይባሉ',
 'tog-previewontop' => 'ከማረሚያው ሳጥን በፊት ቅድመ-ዕይታ አሳይ',
 'tog-previewonfirst' => 'በመጀመሪያ እርማት ቅድመ-ዕይታ ይታይ',
-'tog-nocache' => 'ገጾችን በብራውዘር መቆጠብን (cache) አታስችል',
 'tog-enotifwatchlistpages' => 'የምከታተለው ገጽ ወይም ፋይል ሲቀየር ኢ-ሜይል ይላክልኝ',
 'tog-enotifusertalkpages' => 'የተጠቃሚ መወያያ ገጼ ሲቀየር ኢ-ሜይል ይላክልኝ',
 'tog-enotifminoredits' => 'ለአነስተኛ የገጽ እርማቶችም ኢ-ሜይል ይላክልኝ',
@@ -185,7 +184,6 @@ $messages = array(
 'qbedit' => 'አርም',
 'qbpageoptions' => 'ይህ ገጽ',
 'qbmyoptions' => 'የኔ ገጾች',
-'qbspecialpages' => 'ልዩ ገጾች',
 'faq' => 'ብጊየጥ (ብዙ ጊዜ የሚጠየቁ ጥያቀዎች)',
 'faqpage' => 'Project:ብጊየጥ',
 
@@ -375,9 +373,6 @@ $1',
 'perfcached' => 'ማስታወቂያ፡ ይህ መረጃ በየጊዜ የሚታደስ ስለሆነ ዘመናዊ ሳይሆን የቆየ ሊሆን ይችላል። A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'የሚቀጥለው መረጃ ተቆጥቧል፣ መጨረሻ የታደሠው $1 እ.ኤ.አ. ነው።',
 'querypage-no-updates' => 'ይህ ገጽ አሁን የታደሠ አይደለም። ወደፊትም መታደሱ ቀርቷል። በቅርብ ግዜ አይታደስም።',
-'wrong_wfQuery_params' => 'ለwfQuery() ትክክለኛ ያልሆነ ግቤት<br />
-ተግባር፦ $1<br />
-ጥያቄ፦ $2',
 'viewsource' => 'ምንጩን ተመልከት',
 'viewsource-title' => 'ጥሬ ኮዱን ለ$1 ለማየት',
 'actionthrottled' => 'ተግባሩ ተቋረጠ',
@@ -498,7 +493,7 @@ $2",
 'user-mail-no-addy' => 'እሚደርስበት ኢ-ሜል አድራሻ ሳይታወቅ መላክ አይቻልም።',
 
 # Change password dialog
-'resetpass' => 'የአባል መግቢያ ቃል ለመቀየር',
+'changepassword' => 'መግቢያ ቃልዎን ለመቀየር',
 'resetpass_announce' => 'በኢ-ሜል በተላከ ጊዜያዊ ኮድ ገብተዋል። መግባትዎን ለመጨርስ፣ አዲስ መግቢያ ቃል እዚህ መምረጥ አለብዎ።',
 'resetpass_header' => 'መግቢያ ቃል ለመቀየር',
 'oldpassword' => 'የአሁኑ መግቢያ ቃልዎ',
@@ -735,7 +730,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'rev-showdeleted' => 'አሳይ',
 'revdelete-nooldid-title' => 'የማይሆን ግብ እትም',
 'revdelete-nooldid-text' => 'ይህ ተግባር የሚፈጸምበት ግብ (አላማ) እትም አልወሰኑም።',
-'revdelete-nologtype-title' => 'ምንም የመዝገብ አይነት አልተሠጠም።',
 'revdelete-no-file' => 'የተወሰነው ፋይል አይኖርም።',
 'revdelete-show-file-submit' => 'አዎን',
 'revdelete-selected' => "'''ከ [[:$1]] {{PLURAL:$2|የተመረጡ ዝርያዎች|የተመረጡ ዝርያዎች}}:'''",
@@ -752,8 +746,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'revdelete-log' => 'ምክንያቱ፦',
 'revdelete-submit' => 'በተመረጠው ዕትም ይደረግ',
 'revdel-restore' => 'እይታን ለማስተካከል',
-'revdel-restore-deleted' => 'የጠፉት ለውጦች',
-'revdel-restore-visible' => 'ሊታይ የሚችሉ ለውጦች',
 'pagehist' => 'የገጽ ታሪክ',
 'deletedhist' => 'የጠፉት ዕትሞች ታሪክ',
 'revdelete-otherreason' => 'ሌላ/ተጨማሪ ምክንያት፦',
@@ -803,12 +795,8 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 # Search results
 'searchresults' => 'የፍለጋ ውጤቶች',
 'searchresults-title' => 'ለ"$1" የፍለጋ ውጤቶች',
-'searchresulttext' => 'በተጨማሪ ስለ ፍለጋዎች ለመረዳት፣ [[{{MediaWiki:Helppage}}]] ያንብቡ።',
-'searchsubtitle' => 'እየፈለግህ/ሽ ያለሀው/ሽው \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all ከሱጋር የተያያዙ በሙላ "$1"]])',
-'searchsubtitleinvalid' => "ለ'''$1''' ፈለጉ",
 'toomanymatches' => 'ከመጠን በላይ ያሉ ስምምነቶች ተመለሱ፤ እባክዎ ሌላ ጥያቄ ይሞክሩ።',
 'titlematches' => 'የሚስማሙ አርዕስቶች',
-'notitlematches' => 'የሚስማሙ አርዕስቶች የሉም',
 'textmatches' => 'ጽሕፈት የሚስማማባቸው ገጾች',
 'notextmatches' => 'ጽሕፈት የሚስማማባቸው ገጾች የሉም',
 'prevn' => 'ፊተኛ {{PLURAL:$1|$1}}',
@@ -817,7 +805,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'nextn-title' => '{{PLURAL:$1|የሚቀጥለው|የሚቀጥሉ}} $1 {{PLURAL:$1|ውጤት|ውጤቶች}}',
 'shown-title' => '$1 {{PLURAL:$1|ውጤት|ውጤቶች}} በየገጹ {{PLURAL:$1|ይታይ|ይታዩ}}',
 'viewprevnext' => 'በቁጥር ለማየት፡ ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'የፍለጋ ምርጫዎች',
 'searchmenu-exists' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ በዚሁ ዊኪ ላይ አለ።'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" የሚባል መጣጥፍ ይፈጠር?'''",
 'searchprofile-articles' => 'ይዞታ ያላቸው መጣጥፎች',
@@ -845,14 +832,10 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'showingresults' => 'ከ ቁ.#<b>$2</b> ጀምሮ እስከ <b>$1</b> ውጤቶች ድረስ ከዚህ በታች ይታያሉ።',
 'showingresultsnum' => "ከ#'''$2''' ጀምሮ {{PLURAL:$3|'''1''' ውጤት|'''$3''' ውጤቶች}} ከዚህ ታች ማየት ይቻላል።",
 'showingresultsheader' => "{{PLURAL:$5|ከ'''$3''' ውጤት ውስጥ '''$1'''|ከ'''$3''' ውጤቶች ውስጥ ከ'''$1''' እስከ '''$2'''}} ለ'''$4'''",
-'nonefound' => "\"ማስገንዘቢያ\" የተወሰኑ ፍለጋዎች ብቻ በዋናው ስምምነት መሰረት ተፈልገው ይገኛሉ::
-ከምትፈልገው ነገር በፊት ''all:''ን በማስገባት ፍለጋህን ደግመህ ሞክር ይህም ሁሉንም የፍለጋ ቦታዎች እንድታዳርስ ይረዳሃል።",
 'search-nonefound' => 'ለጥያቄው ምንም የሚስማማ ውጤት አልተገኘም።',
-'powersearch' => 'ፍለጋ',
 'powersearch-legend' => 'ተጨማሪ ፍለጋ',
 'powersearch-ns' => 'በነዚሁ ክፍለ-ዊኪዎች ይፈልግ:',
 'powersearch-redir' => 'መምሪያ መንገዶቹም ይዘርዝሩ',
-'powersearch-field' => 'ለዚሁ ጽሕፈት ይፈልግ፦',
 'powersearch-toggleall' => ' ሁሉም',
 'powersearch-togglenone' => ' ምንም',
 'search-external' => 'አፍአዊ ፍለጋ',
@@ -862,7 +845,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'preferences' => 'ምርጫዎች፤',
 'mypreferences' => 'ምርጫዎች፤',
 'prefs-edits' => 'የለውጦች ቁጥር:',
-'changepassword' => 'መግቢያ ቃልዎን ለመቀየር',
 'prefs-skin' => 'የድህረ-ገጽ መልክ',
 'skin-preview' => 'ቅድመ-ዕይታ',
 'datedefault' => 'ግድ የለኝም',
@@ -881,12 +863,10 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'prefs-email' => 'የኢ-ሜል ምርጫዎች',
 'prefs-rendering' => ' አቀራረብ',
 'saveprefs' => 'ይቆጠብ',
-'resetprefs' => 'እንደ በፊቱ ይታደስ',
 'prefs-editing' => 'የማዘጋጀት ምርጫዎች',
 'rows' => 'በማዘጋጀቱ ሰንጠረዥ ስንት ተርታዎች?',
 'columns' => 'ስንት ዓምዶችስ?',
 'searchresultshead' => 'ፍለጋ',
-'resultsperpage' => 'ስንት ውጤቶች በየገጹ?',
 'recentchangesdays' => 'በቅርቡ ለውጦች ዝርዝር ስንት ቀን ይታይ?',
 'recentchangesdays-max' => '(እስከ $1 {{PLURAL:$1|ቀን|ቀን}} ድረስ)',
 'recentchangescount' => 'በዝርዝርዎ ላይ ስንት ለውጥ ይታይ? (እስከ 500)',
@@ -894,7 +874,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'timezonelegend' => 'የሰዓት ክልል',
 'localtime' => 'የክልሉ ሰዓት (Local time)',
 'timezoneuseoffset' => 'ሌላ (ኦፍ ሴት ለመወሰን)',
-'timezoneoffset' => 'ኦፍ ሰት¹',
 'servertime' => 'የሰርቨሩ ሰዓት',
 'guesstimezone' => 'ከኮምፒውተርዎ መዝገብ ልዩነቱ ይገኝ',
 'timezoneregion-africa' => 'አፍሪካ',
@@ -1069,7 +1048,6 @@ $1ን ወይም ማንም ሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
 'recentchanges-label-bot' => 'ይኸው ለውጥ በሎሌ ተደረገ።',
 'recentchanges-label-unpatrolled' => 'ይህ እርማት ገና አልተገመገመም',
 'recentchanges-legend-newpage' => '$1 - አዲስ ገጽ',
-'rcnote' => "ከ$5 $4 እ.ኤ.አ. {{PLURAL:$2|ባለፈው 1 ቀን|ባለፉት '''$2''' ቀኖች}} {{PLURAL:$1|የተደረገው '''1''' ለውጥ እታች ይገኛል|የተደረጉት '''$1''' መጨረሻ ለውጦች እታች ይገኛሉ}}።",
 'rcnotefrom' => "ከ'''$2''' ጀምሮ የተቀየሩት ገጾች (እስከ '''$1''' ድረስ) ክዚህ በታች ይታያሉ።",
 'rclistfrom' => '(ከ $1 ጀምሮ አዲስ ለውጦቹን ለማየት)',
 'rcshowhideminor' => 'ጥቃቅን ለውጦች $1',
@@ -1388,10 +1366,8 @@ $1',
 'deadendpages' => 'መያያዣ የሌለባቸው ፅሑፎች',
 'deadendpagestext' => 'የሚቀጥሉት ገጾች በ{{SITENAME}} ውስጥ ከሚገኙ ሌሎች ገጾች ጋር አያያይዙም።',
 'protectedpages' => 'የተቆለፉ ገጾች',
-'protectedpagestext' => 'የሚከተሉት ገጾች ከመዛወር ወይም ከመታረም ተቆልፈዋል።',
 'protectedpagesempty' => 'በዚያ ግቤት የሚቆለፍ ገጽ አሁን የለም።',
 'protectedtitles' => 'የተቆለፉ አርዕስቶች',
-'protectedtitlestext' => 'የሚከተሉት አርዕስቶች ከመፈጠር ተጠብቀዋል።',
 'protectedtitlesempty' => 'እንደዚህ አይነት አርእስት አሁን የሚቆለፍ ምንም የለም።',
 'listusers' => 'አባላት',
 'listusers-editsonly' => 'ለውጦች ያላቸው ተጠቃሚዎች ብቻ ይታዩ',
@@ -1438,9 +1414,6 @@ $1',
 'allpagesto' => 'የሚጨርሱ ገፆችን በሙሉ አያየኝ፦ በ:',
 'allarticles' => 'የመጣጥፎች ማውጫ በሙሉ፣',
 'allinnamespace' => 'ገጾች ሁሉ (ክፍለ-ዊኪ፡$1)',
-'allnotinnamespace' => 'ገጾች ሁሉ (በክፍለ-ዊኪ፡$1 ያልሆኑት)',
-'allpagesprev' => 'ቀድመኛ',
-'allpagesnext' => 'ቀጥሎ',
 'allpagessubmit' => 'ይታይ',
 'allpagesprefix' => 'በዚሁ ፊደል የጀመሩት ገጾች:',
 'allpages-bad-ns' => 'በ{{SITENAME}} «$1» የሚባል ክፍለዊኪ የለም።',
@@ -1690,7 +1663,6 @@ $NEWPAGE
 'undeletebtn' => 'ይመለስ',
 'undeletelink' => 'አሳይ/ወደ ነበረበት መልስ',
 'undeleteviewlink' => 'ተመልከት',
-'undeletereset' => 'ባዶ ይደረግ',
 'undeleteinvert' => 'ምርጫውን ለመገልበጥ',
 'undeletecomment' => 'ማጠቃልያ፦',
 'undeletedrevisions' => '{{PLURAL:$1|1 ዕትም|$1 ዕትሞች}} መለሰ',
@@ -1769,13 +1741,11 @@ $1',
 'block' => 'ተጠቃሚ ለማገድ',
 'unblock' => 'ከተጠቃሚ ማገጃ ለማንሣት',
 'blockip' => 'ተጠቃሚውን ለማገድ',
-'blockip-title' => 'ማገጃ መጣል',
 'blockip-legend' => 'ተጠቃሚ ለማገድ',
 'blockiptext' => 'ከዚህ ታች ያለው ማመልከቻ በአንድ ቁጥር አድርሻ ወይም ብዕር ስም ላይ ማገጃ (ማዕቀብ) ለመጣል ይጠቀማል።  ይህ በ[[{{MediaWiki:Policy-url}}|መርመርያዎቻችን]] መሠረት ተንኮል ወይም ጉዳት ለመከልከል ብቻ እንዲደረግ ይገባል። ከዚህ ታች የተለየ ምክንያት (ለምሣሌ የተጎዳው ገጽ በማጠቆም) ይጻፉ።',
 'ipadressorusername' => 'የቁ. አድራሻ ወይም የብዕር ስም፦',
 'ipbexpiry' => 'የሚያልቅበት፦',
 'ipbreason' => 'ምክንያቱ፦',
-'ipbreasonotherlist' => 'ሌላ ምክንያት',
 'ipbreason-dropdown' => "*ተራ የማገጃ ምክንያቶች
 ** የሀሠት መረጃ መጨምር
 ** ከገጾች ይዞታውን መደምሰስ
@@ -1790,8 +1760,6 @@ $1',
 'ipbsubmit' => 'ማገጃ ለመጣል',
 'ipbother' => 'ሌላ የተወሰነ ግዜ፦',
 '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',
-'ipbotheroption' => 'ሌላ',
-'ipbotherreason' => 'ሌላ/ተጨማሪ ምክንያት፦',
 'ipb-confirm' => 'ማገጃውን ለማረጋገጥ',
 'badipaddress' => 'የማይሆን የቁ. አድራሻ',
 'blockipsuccesssub' => 'ማገጃ ተከናወነ',
@@ -1845,7 +1813,6 @@ $1',
 'ipb_expiry_invalid' => 'የሚያልቅበት ግዜ አይሆንም።',
 'ipb_already_blocked' => '«$1» ገና ከዚህ በፊት ታግዶ ነው።',
 'ipb-needreblock' => '$1 አሁን ገና ታግዷል። ዝርዝሩን ማስተካከል ፈለጉ?',
-'cant-block-while-blocked' => 'እርስዎ እየታገዱ ሌላ ተጠቃሚ ለማገድ አይችሉም።',
 
 # Developer tools
 'lockdb' => 'መረጃ-ቤት ለመቆለፍ',
@@ -1885,7 +1852,6 @@ $1',
 :
 :ከነውይይቱ ገጽ አንድላይ አይዛወሩም። የዚያን ጊዜ የውይይቱን ገጽ ለማዛወር ከወደዱ በእጅ ማድረግ ያስፈልግዎታል።",
 'movearticle' => 'የቆየ አርእስት፡',
-'movenologin' => 'ገና አልገቡም',
 'movenologintext' => 'ገጽ ለማዛወር [[Special:UserLogin|በብዕር ስም መግባት]] ይኖርብዎታል።',
 'movenotallowed' => 'በዚህ ዊኪ ገጾችን ለማዛወር ፈቃድ የለዎም።',
 'movenotallowedfile' => 'ፋይልን ለማዛወር ፈቃድ የለዎም።',
@@ -1898,8 +1864,6 @@ $1',
 'movepage-moved-redirect' => 'መምሪያ መንገድ ተፈጠረ።',
 'articleexists' => 'በዚያ አርዕሥት ሌላ ገጽ አሁን አለ። አለበለዚያ የመረጡት ስም ልክ አይደለም - ሌላ አርእስት ይምረጡ።',
 'cantmove-titleprotected' => 'አዲሱ አርዕስት ከመፈጠር ስለተጠበቀ፣ ገጽ ወደዚያው ሥፍራ ለማዛወር አይችሉም።',
-'talkexists' => "'''ገጹ ወደ አዲሱ አርዕስት ተዛወረ፤ እንጂ በአዲሱ አርዕስት የቆየ ውይይት ገጽ አስቀድሞ ስለ ኖረ የዚህ ውይይት ገጽ ሊዛወር አልተቻለም። እባክዎ፣ በእጅ ያጋጥሙአቸው።'''",
-'movedto' => 'የተዛወረ ወደ',
 'movetalk' => 'ከተቻለ፣ ከነውይይቱ ገጽ ጋራ ይዛወር',
 'move-subpages' => 'ንዑስ ገጾች ደግሞ ይዛወሩ',
 'move-talk-subpages' => 'የውይይቱ ገጽ ንዑስ ገጾች ደግሞ ይዛወሩ',
@@ -2392,15 +2356,10 @@ $1',
 
 'exif-urgency-high' => 'ከፍተኛ ($1)',
 
-# External editor support
-'edit-externally' => 'ይህንን ፋይል በአፍአዊ ሶፍትዌር ለማዘጋጀት',
-'edit-externally-help' => '(ለተጨማሪ መረጃ ይህን ገፅ ተመልከቱ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ሁሉ',
 'namespacesall' => 'ሁሉ (all)',
 'monthsall' => 'ሁሉ',
-'limitall' => 'ሁሉ',
 
 # Email address confirmation
 'confirmemail' => 'ኢ-ሜልዎን ለማረጋገጥ',
@@ -2415,7 +2374,6 @@ $1',
 'confirmemail_needlogin' => 'ኢሜል አድራሻዎን ለማረጋገጥ $1 ያስፈልግዎታል።',
 'confirmemail_success' => 'እ-ሜል አድራሻዎ ተረጋግጧል። አሁን ገብተው ዊኪውን መጠቀም ይችላሉ።',
 'confirmemail_loggedin' => 'የርስዎ ኢ-ሜል አድራሻ ተረጋግጧል። አሁን ኢ-ሜል በ{{SITENAME}} በኩል ለመላክ ወይም ለመቀበል ይችላሉ።',
-'confirmemail_error' => 'ማረጋገጫዎን በመቆጠብ አንድ ችግር ተነሣ።',
 'confirmemail_subject' => '{{SITENAME}} email address confirmation / እ-ሜል አድራሻ ማረጋገጫ',
 'confirmemail_body' => 'ጤና ይስጥልኝ
 
index ab85a74..7f38fec 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Todas_as_pachinas' ),
        'Ancientpages'              => array( 'Pachinas_mas_viellas', 'Pachinas_mas_antigas', 'Pachinas_más_biellas', 'Pachinas_biellas', 'Pachinas_antigas' ),
        'Block'                     => array( 'Bloqueyar' ),
-       'Blockme'                   => array( 'Bloqueya-me' ),
        'Booksources'               => array( 'Fuents_de_libros' ),
        'BrokenRedirects'           => array( 'Endreceras_trencatas', 'Endreceras_trencadas', 'Reendrezeras_trencatas', 'Endrezeras_trencatas', 'Reendrezeras_crebatas', 'Endrezeras_crebatas', 'Endrezeras_trencadas', 'Endrezeras_crebadas' ),
        'Categories'                => array( 'Categorías' ),
@@ -73,7 +72,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Contrebucions', 'Contrebuzions' ),
        'CreateAccount'             => array( 'Creyar_cuenta' ),
        'Deadendpages'              => array( 'Pachinas_sin_salida', 'Pachinas_sin_de_salida' ),
-       'Disambiguations'           => array( 'Desambigacions', 'Desambigazions', 'Pachinas_de_desambigazión' ),
        'DoubleRedirects'           => array( 'Endreceras_doples', 'Reendrezeras_dobles', 'Dobles_reendrezeras', 'Endrezeras_dobles', 'Dobles_endrezeras' ),
        'Emailuser'                 => array( 'Ninvía_mensache', 'Nimbía_mensache' ),
        'Export'                    => array( 'Exportar' ),
@@ -153,7 +151,6 @@ $messages = array(
 'tog-minordefault' => 'Sinyalar por defecto totas as edicions como menors',
 'tog-previewontop' => "Amostrar l'anvista previa antes d'o quatrón d'edición",
 'tog-previewonfirst' => "Amostrar l'anvista previa de l'articlo en a primera edición",
-'tog-nocache' => "Desactivar a ''caché'' d'o navegador",
 'tog-enotifwatchlistpages' => 'Recibir un correu quan se faigan cambios en una pachina cosirata por yo',
 'tog-enotifusertalkpages' => 'Ninviar-me un correu quan cambee a mía pachina de descusión',
 'tog-enotifminoredits' => 'Ninviar-me un correu tamién quan bi haiga edicions menors de pachinas',
@@ -275,7 +272,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Ista pachina',
 'qbmyoptions' => 'Pachinas propias',
-'qbspecialpages' => 'Pachinas especials',
 'faq' => 'Preguntas freqüents (FAQ)',
 'faqpage' => 'Project:Preguntas freqüents',
 
@@ -476,9 +472,6 @@ Por favor, comunique-lo a un [[Special:ListUsers/sysop|almenistrador]] indicando
 'perfcached' => 'Os datos siguients son en caché, y talment no son esviellatos. I hai un maximo de {{PLURAL:$1|un resultau disponible|$1 resultaus disponibles}} en a caché.',
 'perfcachedts' => "Os datos siguients se troban en a caché, que estió esviellata por zaguer vegada o $1. I hai un maximo {{PLURAL:$4|d'un resultau disponible|de $4 resultaus disponibles}} en a caché.",
 'querypage-no-updates' => "S'han desactivato as actualizacions d'ista pachina. Por ixo, no s'esta esviellando os datos.",
-'wrong_wfQuery_params' => 'Parametros incorrectos ta wfQuery()<br />
-Función: $1<br />
-Consulta: $2',
 'viewsource' => 'Veyer o codigo fuent',
 'viewsource-title' => 'Veyer o codigo fuent de «$1»',
 'actionthrottled' => 'acción afogata',
@@ -589,7 +582,7 @@ Si a cuenta s\'ha creyato por error, simplament ignore iste mensache.',
 'user-mail-no-addy' => 'Ha mirau de ninviar un mensache de correu sin una adreza de correu electronico.',
 
 # Change password dialog
-'resetpass' => 'Cambiar a clau',
+'changepassword' => 'Cambiar a clau',
 'resetpass_announce' => 'Ha encetato una sesión con una clau temporal que se le ninvió por correu. Por favor, escriba aquí una nueva clau:',
 'resetpass_text' => '<!-- Adiba aquí o testo -->',
 'resetpass_header' => "Cambiar a clau d'a cuenta",
@@ -916,10 +909,6 @@ Encara puet veyer a comparanza; en trobará mas detalles en o [{{fullurl:{{#Spec
 'revisiondelete' => 'Borrar/restaurar versions',
 'revdelete-nooldid-title' => 'A versión de destino no ye conforme',
 'revdelete-nooldid-text' => "No ha indicato sobre qué versión u versions de destino s'ha d'aplicar ista función, a versión especificata no existe u ye mirando d'amagar a versión actual.",
-'revdelete-nologtype-title' => "No s'ha indicau garra mena de rechistro",
-'revdelete-nologtype-text' => 'No ha indicato sobre qué tipo de rechistro quiere fer ista acción.',
-'revdelete-nologid-title' => 'Dentrada de rechistro invalida',
-'revdelete-nologid-text' => 'No ha indicau sobre qué evento rechistrau quiere fer servir ista función u bien no existe a dentrada de rechistro que ha indicau.',
 'revdelete-no-file' => 'O fichero especificato no existe.',
 'revdelete-show-file-confirm' => 'Seguro que quiere veyer una versión borrata d\'o fichero "<nowiki>$1</nowiki>" d\'o $2 a las $3?',
 'revdelete-show-file-submit' => 'Sí',
@@ -953,8 +942,6 @@ $1",
 'logdelete-failure' => "'''A visibilidat d'o rechistro no s'ha puesto achustar:'''
 $1",
 'revdel-restore' => 'Cambiar a visibilidat',
-'revdel-restore-deleted' => 'versions borradas',
-'revdel-restore-visible' => 'versions visibles',
 'pagehist' => 'Historial',
 'deletedhist' => 'Historial de borrau',
 'revdelete-hide-current' => "Error en amagar l'obchecto de calendata $2 y $1: ista ye a versión actual.
@@ -1023,12 +1010,8 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 # Search results
 'searchresults' => "Resultau d'a busca",
 'searchresults-title' => 'Resultaus de mirar "$1"',
-'searchresulttext' => "Ta más información sobre cómo mirar pachinas en {{SITENAME}}, consulte l'[[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Ha mirato \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas as pachinas que prencipian con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|todas as pachinas con vinclos enta "$1"]])',
-'searchsubtitleinvalid' => 'Ha mirato "$1"',
 'toomanymatches' => "S'ha retornato masiadas coincidencias, por favor, torne a prebar con una consulta diferent",
 'titlematches' => 'Consonancias de títols de pachina',
-'notitlematches' => "No bi ha garra consonancia en os títols d'as pachinas",
 'textmatches' => "Consonancias en o texto d'as pachinas",
 'notextmatches' => "No bi ha garra consonancia en os textos d'as pachinas",
 'prevn' => '{{PLURAL:$1|$1}} anteriors',
@@ -1037,10 +1020,8 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'nextn-title' => 'Siguients $1 {{PLURAL:$1|resultau|resultaus}}',
 'shown-title' => 'Amostrar $1 {{PLURAL:$1|resultau|resultaus}} por pachina',
 'viewprevnext' => 'Veyer ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcions de busca',
 'searchmenu-exists' => "'''Bi ha una pachina clamada \"[[\$1]]\" en ista wiki'''",
 'searchmenu-new' => "'''Creyar a pachina \"[[:\$1]]\" en ista wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Veyer pachinas con iste prefixo]]',
 'searchprofile-articles' => 'Pachinas de conteniu',
 'searchprofile-project' => "Pachinas d'aduya y d'o prochecto",
 'searchprofile-images' => 'Multimedia',
@@ -1061,20 +1042,16 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'search-interwiki-default' => '$1 resultaus:',
 'search-interwiki-more' => '(más)',
 'search-relatedarticle' => 'Relacionato',
-'mwsuggest-disable' => "Desactivar as socherencias d'AJAX",
 'searcheverything-enable' => 'Mirar en totz os espacios de nombres',
 'searchrelated' => 'relacionato',
 'searchall' => 'totz',
 'showingresults' => "Contino se bi {{PLURAL:$1|amuestra '''1''' resultau|amuestran '''$1''' resultaus}} prencipiando por o numero '''$2'''.",
 'showingresultsnum' => "Contino se bi {{PLURAL:$3|amuestra '''1''' resultau|amuestran os '''$3''' resultaus}} prencipiando por o numero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultau '''$1''' de '''$3'''|Resultaus '''$1-$2''' de '''$3'''}} ta '''$4'''",
-'nonefound' => "'''Pare cuenta''': Por defecto nomás se mira en bells espacios de nombres. Si quiere mirar en totz os contenius (incluyendo-ie pachinas de descusión, plantillas, etc), mire d'emplegar o prefixo ''all:'' u clave como prefixo o espacio de nombres deseyau.",
 'search-nonefound' => "No s'ha trobato garra resultau que cumpla os criterios.",
-'powersearch' => 'Busca abanzata',
 'powersearch-legend' => 'Busca abanzata',
 'powersearch-ns' => 'Mirar en os espacios de nombres:',
 'powersearch-redir' => 'Listar reendreceras',
-'powersearch-field' => 'Mirar',
 'powersearch-togglelabel' => 'Marcar:',
 'powersearch-toggleall' => 'Totz',
 'powersearch-togglenone' => 'Garra',
@@ -1085,7 +1062,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'preferences' => 'Preferencias',
 'mypreferences' => 'Preferencias',
 'prefs-edits' => "Numero d'edicions:",
-'changepassword' => 'Cambiar a clau',
 'prefs-skin' => 'Aparencia',
 'skin-preview' => 'Fer una prebatina',
 'datedefault' => 'Sin de preferencias',
@@ -1107,13 +1083,11 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'prefs-email' => 'Opcions de correu electronico',
 'prefs-rendering' => 'Apariencia',
 'saveprefs' => 'Alzar preferencias',
-'resetprefs' => "Tornar t'as preferencias por defecto",
 'restoreprefs' => 'Restaure todas as confeguracions por defecto',
 'prefs-editing' => 'Edición',
 'rows' => 'Ringleras:',
 'columns' => 'Columnas:',
 'searchresultshead' => 'Mirar',
-'resultsperpage' => "Resultaus que s'amostrarán por pachina:",
 'stub-threshold' => 'Branquil superior ta o formateyo de <a href="#" class="stub">vinclos ta borradors</a> (en bytes):',
 'stub-threshold-disabled' => 'Desactivato',
 'recentchangesdays' => "Días que s'amostrarán en ''zaguers cambeos'':",
@@ -1125,7 +1099,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => "Usar a zona d'o servidor ($1)",
 'timezoneuseoffset' => 'Atra (especifica a esferencia)',
-'timezoneoffset' => 'Esferencia¹:',
 'servertime' => 'A hora en o servidor ye:',
 'guesstimezone' => "Emplir-lo con a hora d'o navegador",
 'timezoneregion-africa' => 'Africa',
@@ -1358,7 +1331,6 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.',
 'recentchanges-label-bot' => 'Ista edición fue feita por un bot',
 'recentchanges-label-unpatrolled' => "Esta edición encara no s'ha controlato",
 'recentchanges-legend-newpage' => '$1 - pachina nueva',
-'rcnote' => "Contino {{PLURAL:$1|s'amuestra o unico cambeo feito|s'amuestran os zaguers '''$1''' cambeos feitos}} en {{PLURAL:$2|o zaguer día|os zaguers '''$2''' días}}, dica o $5, $4.",
 'rcnotefrom' => "Contino s'amuestran os cambeos dende '''$2''' (dica '''$1''').",
 'rclistfrom' => 'Amostrar cambeos recients dende $1',
 'rcshowhideminor' => '$1 as edicions menors',
@@ -1813,10 +1785,8 @@ Cada ringlera contién o vinclo t'a primer y segunda reendreceras, y tamién o d
 'protectedpages' => 'Pachinas protechitas',
 'protectedpages-indef' => 'Nomás proteccions indefinitas',
 'protectedpages-cascade' => 'Nomás proteccions en cascada',
-'protectedpagestext' => 'As siguients pachinas son protechitas contra edicions u treslaus',
 'protectedpagesempty' => 'En iste inte no bi ha garra pachina protechita con ixos parametros.',
 'protectedtitles' => 'Títols protechitos',
-'protectedtitlestext' => 'Os siguients títols son protechitos ta privar a suya creyación',
 'protectedtitlesempty' => 'En iste inte no bi ha garra títol protechito con ixos parametros.',
 'listusers' => "Lista d'usuarios",
 'listusers-editsonly' => 'Amostrar nomás usuarios con edicions',
@@ -1866,9 +1836,6 @@ Puede reducir o listau trigando un tipo de rechistro, o nombre de l'usuario (sen
 'allpagesto' => 'Amostrar as pachinas que rematen en:',
 'allarticles' => 'Totz os articlos',
 'allinnamespace' => 'Todas as pachinas (espacio $1)',
-'allnotinnamespace' => "Todas as pachinas (fueras d'o espacio de nombres $1)",
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Siguient',
 'allpagessubmit' => 'Amostrar',
 'allpagesprefix' => 'Amostrar pachinas con o prefixo:',
 'allpagesbadtitle' => 'O títol yera incorrecto u teneba un prefixo de vinclo inter-luenga u inter-wiki. Puede contener uno u más carácters que no se pueden emplegar en títols.',
@@ -2172,7 +2139,6 @@ Si s'ha creyato una nueva pachina con o mesmo nombre dende que se borró a orich
 'undeletebtn' => 'Restaurar!',
 'undeletelink' => 'amostrar/restaurar',
 'undeleteviewlink' => 'veyer',
-'undeletereset' => 'Prencipiar',
 'undeleteinvert' => 'Contornar selección',
 'undeletecomment' => 'Razón:',
 'undeletedrevisions' => '{{PLURAL:$1|Una edición restaurata|$1 edicions restauratas}}',
@@ -2259,7 +2225,6 @@ Ta más información, s'amuestra contino a zaguera dentrada d'o rechistro de blo
 'block' => 'Bloqueyar usuario',
 'unblock' => 'Desbloqueyar usuario',
 'blockip' => 'Bloqueyar usuario',
-'blockip-title' => 'Bloqueyar usuario',
 'blockip-legend' => 'Bloqueyar usuario',
 'blockiptext' => "Replene o siguient formulario ta bloqueyar l'acceso
 d'escritura dende una cuenta d'usuario u una adreza IP especifica.
@@ -2270,7 +2235,6 @@ as pachinas que s'han vandalizato).",
 'ipadressorusername' => "Adreza IP u nombre d'usuario",
 'ipbexpiry' => 'Circumducción:',
 'ipbreason' => 'Razón:',
-'ipbreasonotherlist' => 'Atra razón',
 'ipbreason-dropdown' => "*Razons comuns de bloqueyo
 ** Meter información falsa
 ** Borrar conteniu d'as pachinas
@@ -2286,8 +2250,6 @@ as pachinas que s'han vandalizato).",
 'ipbsubmit' => 'bloqueyar a iste usuario',
 'ipbother' => 'Especificar atro periodo',
 'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 anyo:1 year,ta cutio:infinite',
-'ipbotheroption' => 'un atra',
-'ipbotherreason' => 'Razons diferens u adicionals',
 'ipbhidename' => "Amagar o nombre d'usuario en edicions y listas",
 'ipbwatchuser' => "Cosirar as pachinas d'usuario y de descusión d'iste usuario",
 'ipb-disableusertalk' => 'Privar que iste usuario edite a suya propia pachina de discusión entre que sía bloqueyau',
@@ -2372,7 +2334,6 @@ Ta más detalles, debaixo s'amuestra o rechistro de supresions:",
 'proxyblockreason' => "S'ha bloqueyato a suya adreza IP porque ye un proxy ubierto. Por favor, contaute on o suyo furnidor de servicios d'Internet u con o suyo servicio d'asistencia tecnica e informe-les d'iste grau problema de seguridat.",
 'sorbsreason' => 'A suya adreza IP ye en a lista de proxies ubiertos en a DNSBL de {{SITENAME}}.',
 'sorbs_create_account_reason' => 'A suya adreza IP ye en a lista de proxies ubiertos en a DNSBL de {{SITENAME}}. No puede creyar una cuenta',
-'cant-block-while-blocked' => 'No puet bloqueyar a atros usuarios en o tiempo que ye bloqueyato.',
 'cant-see-hidden-user' => "L'usuario a qui ye mirando de bloqueyar ya ye bloqueyau y amagau. Como que ye posible que vusté no tienga o dreito hideuser, no puede veyer ni editar os bloqueyos d'ixe usuario.",
 'ipbblocked' => 'No puede bloqueyar ni desbloqueyar atros usuarios porque ya ye bloqueyau.',
 'ipbnounblockself' => 'No tiene permiso ta sacar o suyo propio bloqueyo',
@@ -2430,7 +2391,6 @@ por favor, asegure-se d'entender as conseqüencias que tendrá ista acción ante
 En ixos casos, si lo deseya, habrá de tresladar u combinar manualment o conteniu d'a pachina de descusión.",
 'movearticle' => 'Tresladar pachina:',
 'moveuserpage-warning' => "'''Pare cuenta:''' ye en momentos de tresladar una pachina d'usuario. Pare cuenta en que nomás a pachina será tresladada peor l'usuario '''no''' será renombrau.",
-'movenologin' => 'No ha encetato sesión',
 'movenologintext' => 'Amenista estar un usuario rechistrato y [[Special:UserLogin|aber-se identificato encetando una sesión]] ta tresladar una pachina.',
 'movenotallowed' => 'No tiene premisos ta tresladar pachinas.',
 'movenotallowedfile' => 'No tien premiso ta tresladar fichers.',
@@ -2445,8 +2405,6 @@ En ixos casos, si lo deseya, habrá de tresladar u combinar manualment o conteni
 'movepage-moved-noredirect' => "S'ha cancelato a creyación d'una reendrecera.",
 'articleexists' => 'Ya bi ha una pachina con ixe nombre u o nombre que ha eslechito no ye conforme. Por favor trigue un atro nombre.',
 'cantmove-titleprotected' => 'No puede tresladar una pachina ta íste títol porque o nuevo títol ye protechito y no puede estar creyato',
-'talkexists' => "A pachina s'ha tresladato correctament, pero a descusión no s'ha puesto tresladar porque ya en existe una con o nuevo títol. Por favor, incorpore manualment o suyo conteniu.",
-'movedto' => 'tresladato ta',
 'movetalk' => 'Tresladar a pachina de descusión asociata.',
 'move-subpages' => 'Tresladar as sozpachinas (dica $1)',
 'move-talk-subpages' => "Tresladar todas as sozpachinas d'a pachina de descusión (dica $1)",
@@ -3218,15 +3176,10 @@ Os campos de metadatos d'a imachen que amaneixen en iste mensache s'amostrarán
 'exif-urgency-high' => 'Alto ($1)',
 'exif-urgency-other' => "Prioridat definida por l'usuario ($1)",
 
-# External editor support
-'edit-externally' => 'Editar iste fichero fendo servir una aplicación externa',
-'edit-externally-help' => '(Ta más información, leiga as [https://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuración])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totz',
 'namespacesall' => 'totz',
 'monthsall' => 'totz',
-'limitall' => 'Totz',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar adreza de correu-e',
@@ -3244,7 +3197,6 @@ O programa retornó o siguient codigo d'error: $1",
 'confirmemail_needlogin' => 'Amenistar $1 ta confirmar a suya adreza de correu-e.',
 'confirmemail_success' => 'A suya adreza de correu-e ya ye confirmata. Agora puede [[Special:UserLogin|dentrar]] en o wiki y gronxiar-se-ie.',
 'confirmemail_loggedin' => 'A suya adreza de correu-e ya ye confirmata.',
-'confirmemail_error' => 'Bella cosa falló en alzar a suya confirmación.',
 'confirmemail_subject' => "confirmación de l'adreza de correu-e de {{SITENAME}}",
 'confirmemail_body' => 'Belún, probablement vusté mesmo, ha rechistrato una cuenta "$2" con ista adreza de correu-e en {{SITENAME}} dende l\'adreza IP $1.
 
@@ -3465,7 +3417,6 @@ Con iste programa ha d'haber recibiu [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia
 
 # Special:ComparePages
 'comparepages' => 'Contimparar pachinas',
-'compare-selector' => "Contimparar as versions d'as pachinas",
 'compare-page1' => 'Pachina 1',
 'compare-page2' => 'Pachina 2',
 'compare-rev1' => 'Versión 1',
index fdeb065..b25a417 100644 (file)
 
 $namespaceNames = array(
        NS_SPECIAL          => 'Syndrig',
-       NS_TALK             => 'Gesprec',
+       NS_TALK             => 'Mōtung',
        NS_FILE             => 'Biliþ',
-       NS_FILE_TALK        => 'Biliþgesprec',
+       NS_FILE_TALK        => 'Biliþmōtung',
        NS_TEMPLATE         => 'Bysen',
-       NS_TEMPLATE_TALK    => 'Bysengesprec',
+       NS_TEMPLATE_TALK    => 'Bysenmōtung',
        NS_HELP             => 'Help',
-       NS_HELP_TALK        => 'Helpgesprec',
+       NS_HELP_TALK        => 'Helpmōtung',
        NS_CATEGORY         => 'Flocc',
-       NS_CATEGORY_TALK    => 'Floccgesprec',
+       NS_CATEGORY_TALK    => 'Floccmōtung',
+);
+
+$namespaceAliases = array(
+       'Gesprec'       => NS_TALK,
+       'Brucend'       => NS_USER,
+       'Brucendmotung' => NS_USER_TALK,
+       'Biliþgesprec'  => NS_FILE_TALK,
+       'Bysengesprec'  => NS_TEMPLATE_TALK,
+       'Helpgesprec'   => NS_HELP_TALK,
+       'Floccgesprec'  => NS_CATEGORY_TALK,
 );
 
 $messages = array(
@@ -55,7 +65,6 @@ $messages = array(
 'tog-minordefault' => 'Mearcian ealla adihtunga lytela tō gewunan',
 'tog-previewontop' => 'Īwan fōrebysene ofer adihtunge mearce',
 'tog-previewonfirst' => 'Īwan fōrebysene on forman adihtunge',
-'tog-nocache' => 'Nā þafian þætte webbsēcend sette trametas on horde',
 'tog-enotifwatchlistpages' => 'Sendan mē spearcǣrend þǣr tramet oþþe ymele on mīnum behealdungtæle sīe andwended.',
 'tog-enotifusertalkpages' => 'Sendan mē spearcǣrend þǣr mīnes brūcendtrametes mōtung sī andwended',
 'tog-enotifminoredits' => 'Sendan mē spearcǣrend þǣr trametas oþþe ymelan sīen efne lyt andwended.',
@@ -191,7 +200,6 @@ $messages = array(
 'qbedit' => 'Adihtan',
 'qbpageoptions' => 'Þes tramet',
 'qbmyoptions' => 'Mīne trametas',
-'qbspecialpages' => 'Syndrige trametas',
 'faq' => 'Oftost ascoda ascunga',
 'faqpage' => 'Project:FAQ',
 
@@ -438,7 +446,6 @@ Scēawa þīne wrītunge eft, oþþe [[Special:UserLogin/signup|sciepp nīwe rec
 'loginlanguagelabel' => 'Sprǣc: $1',
 
 # Change password dialog
-'resetpass' => 'Andwendan þafungword',
 'oldpassword' => 'Eald þafungword:',
 'newpassword' => 'Nīwe þafungword:',
 'retypenew' => 'Wrīt nīwe þafungword eft:',
@@ -581,10 +588,6 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 # Search results
 'searchresults' => 'Sōcne wæstmas',
 'searchresults-title' => 'Sōcne wæstmas for "$1"',
-'searchresulttext' => 'Gif þū wille mā leornian ymbe þā sēcunge on {{SITENAME}}, seoh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Þū sōhtest '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Þū sōhtest '''$1'''",
-'notitlematches' => 'Nis þǣr nǣnig swilc tramet mid þǣm naman',
 'notextmatches' => 'Nis þǣr nǣnig swilc traht on nǣngum trametum',
 'prevn' => 'ǣror {{PLURAL:$1|$1}}',
 'nextn' => 'nīehst {{PLURAL:$1|$1}}',
@@ -608,11 +611,9 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 'searchall' => 'eall',
 'showingresults' => 'Īewan under oþ <b>$1</b> tōhīgunga onginnenda mid #<b>$2</b>.',
 'showingresultsnum' => 'Under sind <b>$3</b> tóhígunga onginnende mid #<b>$2</b>.',
-'powersearch' => 'Sēcan forþ',
 'powersearch-legend' => 'Manigfeald sēcung',
 'powersearch-ns' => 'Sēcan in namstedum:',
 'powersearch-redir' => 'Settan edlǣdunge on getæle',
-'powersearch-field' => 'Sēcan',
 'search-external' => 'Ūtanweard sōcn',
 
 # Preferences page
@@ -627,7 +628,6 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 'rows' => 'Rǣwa:',
 'columns' => 'Sȳla:',
 'searchresultshead' => 'Sōcn',
-'resultsperpage' => 'Tōhrīgunga tō īewenne for ǣlcum tramete:',
 'recentchangescount' => 'Hū mæniga adihtunga to īwenne gewunelīce:',
 'savedprefs' => 'Þīna fōreberunga wurdon gehordod.',
 'timezonelegend' => 'Tīdgeard',
@@ -686,7 +686,6 @@ folclicum āgnunge oþþe gelīcum frēom horde (sēo $1 for āscungum).
 'recentchanges-label-minor' => 'Þēos is lytel adihtung',
 'recentchanges-label-bot' => 'Searuþrǣl fremede þās adihtunge',
 'recentchanges-legend-newpage' => '$1 - nīƿu sīde',
-'rcnote' => "Beneoðan {{PLURAL:$1|is '''1''' andwendung|sind þā æftemestan '''$1''' andwendunga}} in {{PLURAL:$2|þǣm æftermestan dæge|þǣm æftemestum '''$2''' daga}}, fram $5 on $4.",
 'rcnotefrom' => "Niðer sind þā andwendunga fram '''$2''' (mǣst īweþ '''$1''').",
 'rclistfrom' => 'Īwan nīwa andwendunga fram $1 and siþþan',
 'rcshowhideminor' => '$1 lytela adihtunga',
@@ -849,8 +848,6 @@ Gif se brūcend asifte hine. synderlīce sind ymelan geīwda þǣre þe se brūc
 'allpagesto' => 'Īwan trametas oþ:',
 'allarticles' => 'Ealle trametas',
 'allinnamespace' => 'Ealle trametas (namstede: $1)',
-'allpagesprev' => 'Ǣr',
-'allpagesnext' => 'Nīehst',
 'allpagessubmit' => 'Gān',
 
 # Special:Categories
@@ -1011,7 +1008,6 @@ Gif se brūcend asifte hine. synderlīce sind ymelan geīwda þǣre þe se brūc
 # Block/unblock
 'blockip' => 'Fortȳnan brūcend',
 'ipbreason' => 'Racu:',
-'ipbreasonotherlist' => 'Ōðru racu',
 'ipbreason-dropdown' => '*Gemǣna fortȳnungraca
 ** Insettung falsre cȳþþe
 ** Animung innunge of trametum
@@ -1023,8 +1019,6 @@ Gif se brūcend asifte hine. synderlīce sind ymelan geīwda þǣre þe se brūc
 'ipbsubmit' => 'Fortȳnan þisne brūcend',
 'ipbother' => 'Ōðeru tīd',
 'ipboptions' => '2 tīda:2 hours,1 dæg:1 day,3 dagas:3 days,1 wucu:1 week,2 wuca:2 weeks,1 mōnaþ:1 month,3 mōnðas:3 months,6 mōnða:6 months,1 gēar:1 year,unendiende:infinite',
-'ipbotheroption' => 'ōðer',
-'ipbotherreason' => 'Ōðru oþþe nīehst racu:',
 'ipblocklist-submit' => 'Sēcan',
 'infiniteblock' => 'unendiende',
 'expiringblock' => 'forealdaþ on $1 on $2',
@@ -1044,7 +1038,6 @@ Gif se brūcend asifte hine. synderlīce sind ymelan geīwda þǣre þe se brūc
 'movepage-moved' => '\'\'\'"$1" wæs tō "$2"\'\'\' gewegen',
 'articleexists' => 'Tramet on þǣm naman ǣr is, oþþe se nama þe þū cure nis riht.
 Cēos ōðerne naman lā.',
-'movedto' => 'gewegen tō',
 'movetalk' => 'Wegan gesibbe mōtunge',
 'movelogpage' => 'Wegan ealdhord',
 'movereason' => 'Racu:',
@@ -1226,14 +1219,10 @@ Cēos ōðerne naman lā.',
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Sōþ rihtung',
 
-# External editor support
-'edit-externally-help' => '(Sēon þā [https://www.mediawiki.org/wiki/Manual:External_editors gearwunge gewissunga] ymb mā cȳþþe)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'eall',
 'namespacesall' => 'eall',
 'monthsall' => 'eall',
-'limitall' => 'eall',
 
 # Email address confirmation
 'confirmemail_body' => 'Hwilchwega, gewēne þu of IP stōwe $1, hæfþ in namanbēc gestt ǣnne hordcleofan
index a62f021..a51ca8c 100644 (file)
@@ -136,7 +136,7 @@ $messages = array(
 'jumptonavigation' => 'भ्रमण करॊ',
 'jumptosearch' => 'खोजै लॆ चलॊ',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} केरॊ बारे मॆं',
 'aboutpage' => 'Project:परिचय',
 'copyright' => 'सामग्री $1 के तहत उपलब्ध छै.',
@@ -144,7 +144,6 @@ $messages = array(
 'disclaimers' => 'अस्वीकरण',
 'disclaimerpage' => 'Project:साधारण अस्वीकरण',
 'edithelp' => 'संपादन मॆं सहायता',
-'edithelppage' => 'Help:संपादन',
 'helppage' => 'Help:सहायता',
 'mainpage' => 'मुख्य पृष्ठ',
 'privacy' => 'गोपनीयता नीति',
@@ -154,8 +153,6 @@ $messages = array(
 
 'retrievedfrom' => '"$1" सॆं लेलॊ गेलॊ',
 'youhavenewmessages' => 'तोरा लेली छै $1  ($2)',
-'newmessageslink' => 'नया संदेश',
-'newmessagesdifflink' => 'पिछला बदलाव',
 'editsection' => 'संपादन',
 'editold' => 'संपादन',
 'editlink' => 'संपादन',
@@ -285,10 +282,6 @@ Hindi (hi)फ़िलहाल इस पन्ने पर कोई सा
 # Search results
 'searchresults' => 'खोज परिणाम',
 'searchresults-title' => '"$1" लेली खोज परिणाम',
-'searchresulttext' => '{{SITENAME}} मॆं खोज करै लेली सहायता खातिर [[{{MediaWiki:Helppage}}|{{int:help}}]] देखॊ.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' खातिर आपनॆ करलॊ गेलॊ खोज ([[Special:Prefixindex/$1| "$1" सॆं शुरु होय वाला सब पन्ना]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
-'searchsubtitleinvalid' => "तोरॊ खोज '''$1''' के परिणाम",
-'notitlematches' => 'पन्ना केरॊ शीर्षक मेल नै खाय छै.',
 'notextmatches' => 'कोनो पन्ना मॆं इ सामग्री नै मिललै.',
 'prevn' => 'पिछला {{PLURAL:$1|$1}}',
 'nextn' => 'अगला {{PLURAL:$1|$1}}',
@@ -300,12 +293,9 @@ Hindi (hi)फ़िलहाल इस पन्ने पर कोई सा
 'search-interwiki-caption' => 'अन्य प्रकल्प',
 'search-interwiki-default' => '$1 के रिज़ल्ट:',
 'search-interwiki-more' => '(आरू)',
-'nonefound' => "'''सूचना''': मूलतः कुछ ही नामस्थानॊ मॆं खोजलॊ जाय छै. अगर आपने कॆ सब नामस्थानॊ मॆं खोजना छै तॆ खोजशब्दॊ के पहले ''all:'' लगायकॆ खोजै के कोशिश करॊ या फिर कोनो नामस्थान के नाम लिखॊ.",
-'powersearch' => 'उन्नत खोज',
 'powersearch-legend' => 'उन्नत खोज',
 'powersearch-ns' => 'नामस्थानॊ मॆ खोजॊ:',
 'powersearch-redir' => 'अनुप्रेषितॊ के सूची दर्शाबॊ.',
-'powersearch-field' => 'लेली खोजॊ',
 
 # Preferences page
 'preferences' => 'वरीयता',
@@ -607,9 +597,6 @@ $2 द्वारा संपादित आखिरी अवतरण क
 'pagemovedsub' => 'स्थानांतरण सफल रहलै',
 'movepage-moved' => '\'\'\'"$1" कॆ "$2" पर  स्थानांतरीत करलॊ गेलै\'\'\'',
 'articleexists' => 'इ नाम के एगॊ पन्ना पहले सॆं मौजूद छै,या फेरू आपनॆ अमान्य नाम चुननॆ छियै. कृपया दोसरॊ नाम चुनॊ.',
-'talkexists' => "'''पन्ना के नाम बदली देलॊ गेलॊ छै, पर ओकरा सॆं संबंधित वार्ता पृष्ठ नै बदललॊ गेलॊ छै कैन्हेंकि वू पहले सॆं बनलॊ छै.
-कृपया एकरा स्वयं बदली दहॊ'''",
-'movedto' => ' स्थानांतरीत करलॊ गेलै',
 'movetalk' => 'संबंधित वार्ता पृष्ठ भी बदलॊ',
 'movelogpage' => 'स्थानांतरण सूची',
 'movereason' => 'कारण:',
@@ -713,10 +700,6 @@ $2 द्वारा संपादित आखिरी अवतरण क
 * gpslongitude
 * gpsaltitude',
 
-# 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' => 'सब्भे',
 'namespacesall' => 'सब्भे',
index 896a459..cfc52a6 100644 (file)
@@ -20,6 +20,7 @@
  * @author Asaifm
  * @author Avocato
  * @author Bachounda
+ * @author Basharh
  * @author Bassem JARKAS
  * @author Chaos
  * @author Ciphers
@@ -32,6 +33,7 @@
  * @author Hakeem
  * @author Histolo2
  * @author Houcinee1
+ * @author Ibrahim.ID
  * @author Jak
  * @author Khaledhosny
  * @author Lord Anubis
  * @author Zack wadghiri
  * @author Zanatos
  * @author أحمد
+ * @author الهميان
  * @author ترجمان05
  * @author خالد حسني
  * @author روخو
  * @author زكريا
  * @author عصام بايزيدي
  * @author عمرو
+ * @author محمد أحمد عبد الفتاح
  * @author محمد الجداوي
  * @author مشعل الحربي
  * @author نصوح
@@ -245,6 +249,7 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'عنوان_الصفحة_الكامل', 'عنوان_صفحة_كامل', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'اسم_الصفحة_الفرعي', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'عنوان_الصفحة_الفرعي', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'جذر_اسم_الصفحة', 'ROOTPAGENAME' ),
        'basepagename'              => array( '1', 'اسم_الصفحة_الأساسي', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'عنوان_الصفحة_الأساسي', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'اسم_صفحة_النقاش', 'TALKPAGENAME' ),
@@ -264,6 +269,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'مركز', 'center', 'centre' ),
        'img_framed'                => array( '1', 'إطار', 'بإطار', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'لاإطار', 'frameless' ),
+       'img_lang'                  => array( '1', 'لغة=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'صفحة=$1', 'صفحة_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'معدول', 'معدول=$1', 'معدول_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'حدود', 'border' ),
@@ -306,6 +312,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'عام_المراجعة', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'حجم_المراجعة', 'REVISIONSIZE' ),
        'plural'                    => array( '0', 'جمع:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'عنوان_كامل:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'مسار_كامل:', 'FULLURLE:' ),
@@ -361,12 +368,12 @@ $magicWords = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'مستخدمون_نشطون' ),
        'Allmessages'               => array( 'كل_الرسائل' ),
+       'AllMyUploads'              => array( 'كل_ملفاتي' ),
        'Allpages'                  => array( 'كل_الصفحات' ),
        'Ancientpages'              => array( 'صفحات_قديمة' ),
        'Badtitle'                  => array( 'عنوان_سيئ' ),
        'Blankpage'                 => array( 'صفحة_فارغة' ),
        'Block'                     => array( 'منع', 'منع_أيبي', 'منع_مستخدم' ),
-       'Blockme'                   => array( 'منعي' ),
        'Booksources'               => array( 'مصادر_كتاب' ),
        'BrokenRedirects'           => array( 'تحويلات_مكسورة' ),
        'Categories'                => array( 'تصنيفات' ),
@@ -378,10 +385,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'إنشاء_حساب' ),
        'Deadendpages'              => array( 'صفحات_نهاية_مسدودة' ),
        'DeletedContributions'      => array( 'مساهمات_محذوفة' ),
-       'Disambiguations'           => array( 'توضيحات' ),
        'DoubleRedirects'           => array( 'تحويلات_مزدوجة' ),
        'EditWatchlist'             => array( 'تعديل_قائمة_المراقبة' ),
        'Emailuser'                 => array( 'مراسلة_المستخدم' ),
+       'ExpandTemplates'           => array( 'فرد_القوالب' ),
        'Export'                    => array( 'تصدير' ),
        'Fewestrevisions'           => array( 'الأقل_تعديلا' ),
        'FileDuplicateSearch'       => array( 'بحث_ملف_مكرر' ),
@@ -417,6 +424,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'رفوعاتي' ),
        'Newimages'                 => array( 'ملفات_جديدة', 'صور_جديدة' ),
        'Newpages'                  => array( 'صفحات_جديدة' ),
+       'PagesWithProp'             => array( 'صفحات_بخاصية' ),
        'PasswordReset'             => array( 'إعادة_ضبط_كلمة_السر' ),
        'PermanentLink'             => array( 'وصلة_دائمة', 'رابط_دائم' ),
        'Popularpages'              => array( 'صفحات_مشهورة' ),
@@ -425,10 +433,13 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'صفحات_محمية' ),
        'Protectedtitles'           => array( 'عناوين_محمية' ),
        'Randompage'                => array( 'عشوائي', 'صفحة_عشوائية' ),
+       'RandomInCategory'          => array( 'عشوائي_في_تصنيف' ),
        'Randomredirect'            => array( 'تحويلة_عشوائية' ),
        'Recentchanges'             => array( 'أحدث_التغييرات' ),
        'Recentchangeslinked'       => array( 'أحدث_التغييرات_الموصولة', 'تغييرات_مرتبطة' ),
-       'Revisiondelete'            => array( 'حذف_مراجعة' ),
+       'Redirect'                  => array( 'تحويل' ),
+       'ResetTokens'               => array( 'إعادة_ضبط_المفاتيح' ),
+       'Revisiondelete'            => array( 'حذف_مراجعة', 'حذف_نسخة' ),
        'Search'                    => array( 'بحث' ),
        'Shortpages'                => array( 'صفحات_قصيرة' ),
        'Specialpages'              => array( 'صفحات_خاصة' ),
@@ -498,7 +509,6 @@ $messages = array(
 'tog-minordefault' => 'أشِّر كل التعديلات على أنها طفيفة مبدئيا',
 'tog-previewontop' => 'أظهر معاينة النص فوق صندوق التحرير',
 'tog-previewonfirst' => 'أظهر معاينة مع أول تعديل',
-'tog-nocache' => 'تعطيل حفظ المتصفح للكاش',
 'tog-enotifwatchlistpages' => 'أرسل إلي رسالة إلكترونية عند تعديل صفحة أو ملف في قائمة مراقبتي',
 'tog-enotifusertalkpages' => 'أرسل إلي رسالة إلكترونية عند تعديل صفحة نقاشي',
 'tog-enotifminoredits' => 'أرسل إلي رسالة إلكترونية بشأن التعديلات الطفيفة للصفحات والملفات',
@@ -634,7 +644,6 @@ $messages = array(
 'qbedit' => 'عدل',
 'qbpageoptions' => 'هذه الصفحة',
 'qbmyoptions' => 'صفحاتي',
-'qbspecialpages' => 'الصفحات الخاصة',
 'faq' => 'الأسئلة المتكررة',
 'faqpage' => 'Project:أسئلة متكررة',
 
@@ -749,8 +758,8 @@ $1',
 
 'ok' => 'موافق',
 'retrievedfrom' => 'مجلوبة من "$1"',
-'youhavenewmessages' => 'لك $1 ($2).',
-'youhavenewmessagesfromusers' => 'لديك $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|لك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|لديك}} $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
 'youhavenewmessagesmanyusers' => 'لديك $1 من مستخدمين كثر ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|رسالة جديدة|999=رسائل جديدة}}',
 'newmessagesdifflinkplural' => 'أحدث {{PLURAL:$1|تغيير|999=تغييرات}}',
@@ -853,9 +862,6 @@ $1',
 'perfcachedts' => 'البيانات التالية مخبّأة وكان آخر تحديث لها في $1. {{PLURAL:$4||نتيجة واحدة|نتيجتان|$4 نتائج|$4 نتيجة}} على الأكثر {{PLURAL:$4||مخبّأة|مخبّأتان|مخبّأة}}.',
 'querypage-no-updates' => 'تحديثات هذه الصفحة معطلة حاليا.
 البيانات هنا لن يتم تحديثها حاليا.',
-'wrong_wfQuery_params' => 'معاملات خاطئة في wfQuery()<br />
-الدالة: $1<br />
-الاستعلام: $2',
 'viewsource' => 'اعرض المصدر',
 'viewsource-title' => 'استعرض مصدر $1',
 'actionthrottled' => 'تم كبح الفعل',
@@ -991,7 +997,7 @@ $2',
 'passwordtooshort' => 'يجب أن تتكون كلمة السر على الأقل من {{PLURAL:$1|حرف واحد|حرفين|$1 حروف|$1 حرفا|$1 حرف}}.',
 'password-name-match' => 'يجب أن تكون كلمة المرور مختلفة عن اسم المستخدم.',
 'password-login-forbidden' => 'تم منع استخدام اسم المستخدم هذا وكلمة السر.',
-'mailmypassword' => 'أرسÙ\84 Ù\84Ù\8a Ù\83Ù\84Ù\85Ø© Ø³Ø± Ø¬Ø¯Ù\8aدة',
+'mailmypassword' => 'أعد ØªØ¹Ù\8aÙ\8aÙ\86 Ù\83Ù\84Ù\85Ø© Ø§Ù\84سر',
 'passwordremindertitle' => 'كلمة سر مؤقتة جديدة ل{{SITENAME}}',
 'passwordremindertext' => 'لقد طلب شخص ما (غالبا أنت، من عنوان الآيبي $1) كلمة سر جديدة ل{{SITENAME}} ($4).
 أنشئت كلمة سر مؤقتة للمستخدم "$2" وجعلت "$3".
@@ -1042,7 +1048,7 @@ $2',
 'user-mail-no-body' => 'محاول ارسال بريد إلكتروني فارغ أو ذو نص قصير.',
 
 # Change password dialog
-'resetpass' => 'تغيير كلمة السر',
+'changepassword' => 'غير كلمة السر',
 'resetpass_announce' => 'تم تسجيل دخولك بكلمة سر مؤقتة.
 للدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:',
 'resetpass_text' => '<!-- أضف نصا هنا -->',
@@ -1329,6 +1335,8 @@ $2
 'content-not-allowed-here' => '"$1" المحتوى غير مسموح على صفحة [[$2]]',
 'editwarning-warning' => 'قد تتسبب مغادرة هذه الصفحة بخسارتك لأي تغييرات أجريتها.
 يمكنك تعطيل هذا التحذير إذا كنت والجًا في قسم "التحرير" في تفضيلاتك.',
+'editpage-notsupportedcontentformat-title' => 'تنسيق المحتوى غير مدعوم',
+'editpage-notsupportedcontentformat-text' => 'تنسيق المحتوى $1 غير مدعوم بواسطة نموذج المحتوى $2.',
 
 # Content models
 'content-model-wikitext' => 'نص ويكي',
@@ -1371,6 +1379,9 @@ $2
 'cantcreateaccount-text' => "إنشاء الحسابات من عنوان الأيبي هذا ('''$1''') تم منعه بواسطة [[User:$3|$3]].
 
 السبب المعطى بواسطة $3 هو ''$2''",
+'cantcreateaccount-range-text' => "إنشاء الحسابات من عناوين الآيبي في النطاق '''$1'''، التي تحتوي على الآيبي الخاص بك ('''$4''')، قد حظرها [[مستخدم:$3|$3]].
+
+سبب الحظر الذي قاله $3 هو ''$2''",
 
 # History pages
 'viewpagelogs' => 'اعرض سجلات هذه الصفحة',
@@ -1440,10 +1451,6 @@ $2
 'revisiondelete' => 'حذف/استرجاع المراجعات',
 'revdelete-nooldid-title' => 'مراجعة هدف غير صحيحة',
 'revdelete-nooldid-text' => 'إما أنك لم تحدد مراجعة (أو مراجعات) معينة هدفا لهذه الوظيفة، أو أن المراجعة المحددة غير موجودة، أو أنك تحاول إخفاء المراجعة الحالية.',
-'revdelete-nologtype-title' => 'لا نوع سجل تم إعطاؤه',
-'revdelete-nologtype-text' => 'أنت لم تحدد نوع سجل لعمل هذا الفعل عليه.',
-'revdelete-nologid-title' => 'مدخلة سجل غير صحيحة',
-'revdelete-nologid-text' => 'أنت إما أنك لم تحدد حدث سجل مستهدف لعمل هذه الوظيفة أو أن المدخلة المحددة غير موجودة.',
 'revdelete-no-file' => 'الملف المحدد غير موجود.',
 'revdelete-show-file-confirm' => 'هل أنت متأكد أنك تريد رؤية مراجعة محذوفة للملف "<nowiki>$1</nowiki>" بتاريخ $2 الساعة $3؟',
 'revdelete-show-file-submit' => 'نعم',
@@ -1478,8 +1485,6 @@ $1",
 'logdelete-failure' => "'''تعذر ضبط رؤية السجل:'''
 $1",
 'revdel-restore' => 'تغيير الرؤية',
-'revdel-restore-deleted' => 'مراجعات محذوفة',
-'revdel-restore-visible' => 'مراجعات مرئية',
 'pagehist' => 'تاريخ الصفحة',
 'deletedhist' => 'التاريخ المحذوف',
 'revdelete-hide-current' => 'خطأ عند إحفاء العنصر المؤرخ في $2 $1: هذه هي المراجعة الحالية.
@@ -1559,12 +1564,8 @@ $1",
 # 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}} السابقة',
@@ -1573,10 +1574,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} تالية',
 'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
 'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'خيارات البحث',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|تصفح الصفحات بهذه البادئة]]',
+'searchmenu-exists' => "'''توجد صفحة اسمها \"[[:\$1]]\" على هذه الويكي.''' {{PLURAL:\$2|0=|انظر ايضا نتائج البحث الأخرى.}}",
+'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" على هذه الويكي!''' {{PLURAL:\$2|0=|انظر أيضا الصفحة التي تم العثور عليها من بحثك.|انظر ايضا نتائج البحث.}}",
 'searchprofile-articles' => 'صفحات المحتوى',
 'searchprofile-project' => 'صفحات المساعدة والمشروع',
 'searchprofile-images' => 'الوسائط المتعددة',
@@ -1597,21 +1596,16 @@ $1",
 'search-interwiki-default' => '$1 نتيجة:',
 'search-interwiki-more' => '(المزيد)',
 'search-relatedarticle' => 'مرتبطة',
-'mwsuggest-disable' => 'تعطيل اقتراحات AJAX',
 'searcheverything-enable' => 'ابحث في جميع النطاقات',
 'searchrelated' => 'مرتبطة',
 'searchall' => 'الكل',
 'showingresults' => "معروض بالأسفل {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} بدءا من رقم '''$2'''.",
 'showingresultsnum' => "معروض بالأسفل {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} بدءا من رقم'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|النتيجة '''$1''' من'''$3'''|النتائج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
-'nonefound' => "'''ملاحظة''': فقط بعض النطاقات يتم البحث فيها افتراضيا.
-حاول بدء استعلامك ب ''all:'' للبحث في كل المحتوى (شاملا صفحات النقاش، القوالب، إلى آخره)، أو استخدم النطاق المطلوب كبادئة.",
 'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
-'powersearch' => 'بحث متقدم',
 'powersearch-legend' => 'بحث متقدم',
 'powersearch-ns' => 'بحث في النطاقات:',
 'powersearch-redir' => 'عرض التحويلات',
-'powersearch-field' => 'بحث عن',
 'powersearch-togglelabel' => 'اختر:',
 'powersearch-toggleall' => 'الكل',
 'powersearch-togglenone' => 'لا شيء',
@@ -1626,11 +1620,10 @@ $1",
 'mypreferences' => 'تفضيلات',
 'prefs-edits' => 'عدد التعديلات:',
 'prefsnologintext2' => 'الرجاء $1 لضبط تفضيلات المستخدم.',
-'changepassword' => 'غير كلمة السر',
 'prefs-skin' => 'واجهة',
 'skin-preview' => 'عرض مسبق',
 'datedefault' => 'لا تفضيل',
-'prefs-beta' => 'Ù\85زاÙ\8aا Ø¨Ù\8aتا',
+'prefs-beta' => 'Ù\85زاÙ\8aا ØªØ¬Ø±Ù\8aبÙ\8aØ©',
 'prefs-datetime' => 'وقت وتاريخ',
 'prefs-labs' => 'مزايا مختبرية',
 'prefs-user-pages' => 'صفحات المستخدمين',
@@ -1649,13 +1642,11 @@ $1",
 'prefs-email' => 'خيارات البريد الإلكتروني',
 'prefs-rendering' => 'المظهر',
 'saveprefs' => 'احفظ',
-'resetprefs' => 'أزل التغييرات غير المحفوظة',
-'restoreprefs' => 'إسترجع كل الإعدادات الافتراضية',
+'restoreprefs' => 'استرجع كل الإعدادات الافتراضية',
 'prefs-editing' => 'التحرير',
 'rows' => 'صفوف:',
 'columns' => 'أعمدة:',
 'searchresultshead' => 'بحث',
-'resultsperpage' => 'عدد النتائج في الصفحة:',
 'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">وصلة البذرة</a>:',
 'stub-threshold-disabled' => 'معطل',
 'recentchangesdays' => 'عدد الأيام المعروضة في أحدث التغييرات:',
@@ -1669,7 +1660,6 @@ $1",
 'localtime' => 'الوقت المحلي:',
 'timezoneuseserverdefault' => 'استخدام الويكي الافتراضي ($1)',
 'timezoneuseoffset' => 'آخر (حدد الفرق)',
-'timezoneoffset' => 'الفرق¹:',
 'servertime' => 'وقت الخادوم:',
 'guesstimezone' => 'أدخل التوقيت من المتصفح',
 'timezoneregion-africa' => 'أفريقيا',
@@ -1739,6 +1729,7 @@ $1",
 'prefs-tokenwatchlist' => 'مفتاح',
 'prefs-diffs' => 'فروقات',
 'prefs-help-prefershttps' => 'سيتم تفعيل هذا التفضيل عند ولوجوك في المرة القادمة.',
+'prefs-tabs-navigation-hint' => 'تلميح: يمكنك استخدام مفتاحي السهمين الأيمن والأيسر للتنقل بين الألسنة في قائمة الألسنة.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'يبدو أن عنوان البريد الإلكتروني صالح',
@@ -1810,7 +1801,7 @@ $1",
 'right-reupload-shared' => 'الرفع على الملفات في مستودع الملفات المشترك محليا',
 'right-upload_by_url' => 'رفع ملف من عنوان مسار',
 'right-purge' => 'تحديث كاش الموقع لصفحة بدون تأكيد',
-'right-autoconfirmed' => 'تعدÙ\8aÙ\84 Ø§Ù\84صÙ\81حات Ù\86صÙ\81 Ø§Ù\84Ù\85Ø­Ù\85Ù\8aØ©',
+'right-autoconfirmed' => 'غÙ\8aر Ù\85تأثر Ø¨Ø­Ø¯Ù\88د Ø§Ù\84Ù\85عدÙ\84',
 'right-bot' => 'تعامل كعملية أوتوماتيكية',
 'right-nominornewtalk' => 'عدم جعل التعديلات الطفيفة لصفحات النقاش تظهر برواز الرسائل الجديدة',
 'right-apihighlimits' => 'استخدام حدود أعلى في استعلامات API',
@@ -1841,6 +1832,7 @@ $1",
 'right-editmyusercss' => 'تعديل ملفات CSS للمستخدم نفسه',
 'right-editmyuserjs' => 'تعديل ملفات جافاسكربت للمستخدم نفسه',
 'right-viewmywatchlist' => 'عرض قائمة مراقبتك',
+'right-editmywatchlist' => 'حرر قائمة مراقبتك. لاحظ أن بعض الإجراءات لا تزال تضيف الصفحات حتى بدون هذا الحق.',
 'right-viewmyprivateinfo' => 'إستعرض بياناتك الشخصية (مثل البريد الإلكتروني والإسم الحقيقي)',
 'right-editmyprivateinfo' => 'حرر بياناتك الشخصية (مثل البريد الإلكتروني والإسم الحقيقي)',
 'right-editmyoptions' => 'تعديل تفضيلاتك',
@@ -1923,13 +1915,14 @@ $1",
 'recentchanges-label-minor' => 'هذا تعديل طفيف',
 'recentchanges-label-bot' => 'أُجْرِيَ هذا التعديل بواسطة بوت',
 'recentchanges-label-unpatrolled' => 'لم يراجع هذا التعديل إلى الآن',
+'recentchanges-label-plusminus' => 'حجم الصفحة تغير بهذا العدد من وحدات البايت',
+'recentchanges-legend-heading' => 'شرح',
 'recentchanges-legend-newpage' => '(راجع أيضا [[Special:NewPages|قائمة الصفحات الجديدة]])',
-'rcnote' => "بالأسفل {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} في {{PLURAL:$2||'''اليوم''' الماضي|'''اليومين''' الماضيين|ال'''$2''' أيام الماضية|ال'''$2''' يوما الماضيا|ال'''$2''' يوم الماضي}}، كما في $5، $4.",
 'rcnotefrom' => "بالأسفل التغييرات منذ '''$2''' (إلى '''$1''' معروضة).",
 'rclistfrom' => 'أظهر التغييرات بدءا من $1',
 'rcshowhideminor' => '$1 التعديلات الطفيفة',
 'rcshowhidebots' => '$1 البوتات',
-'rcshowhideliu' => '$1 المستخدمين المسجلين',
+'rcshowhideliu' => '$1 {{GENDER:$1|مستخدمين مسجلين|مستخدمات مسجلات|مستخدمون مسجلون}}',
 'rcshowhideanons' => '$1 المستخدمين المجهولين',
 'rcshowhidepatr' => '$1 التعديلات المراجعة',
 'rcshowhidemine' => '$1 تعديلاتي',
@@ -2049,6 +2042,8 @@ $1",
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'هذا الملف مكرر  {{PLURAL:$1|للملف|للملفات}} التالية:',
 'file-deleted-duplicate' => 'ملف مطابق لهذه الملف ([[:$1]]) تم حذفه من قبل. ينبغي أن تتحقق من تاريخ الحذف لهذا الملف قبل المتابعة بإعادة رفعه.',
+'file-deleted-duplicate-notitle' => 'سابقا تم حذف ملف مطابق لهذا الملف، وقد تم منع العنوان.
+ينبغي أن تسأل شخص ما لديه القدرة على عرض بيانات الملف الممنوع لاستعراض الوضع قبل الشروع في إعادة تحميله.',
 'uploadwarning' => 'تحذير الرفع',
 'uploadwarning-text' => 'من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.',
 'savefile' => 'احفظ الملف',
@@ -2369,6 +2364,8 @@ $1',
 'pageswithprop-text' => 'تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.',
 'pageswithprop-prop' => 'اسم الخاصية:',
 'pageswithprop-submit' => 'اذهب',
+'pageswithprop-prophidden-long' => 'قيمة خاصية النص الطويل المخفية ($1)',
+'pageswithprop-prophidden-binary' => 'قيمة الخاصية الثنائية المخفية ($1)',
 
 'doubleredirects' => 'تحويلات مزدوجة',
 'doubleredirectstext' => 'هذه الصفحة تعرض الصفحات التي تحول إلى صفحات تحويل أخرى.
@@ -2396,6 +2393,7 @@ $1',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '{{PLURAL:$1|لا وصلات|وصلة واحدة|وصلتان|$1 وصلات|$1 وصلة}}',
 'nmembers' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|عضو|أعضاء}}',
 'nrevisions' => '{{PLURAL:$1|لا مراجعات|مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}}',
 'nviews' => '{{PLURAL:$1|مشاهدة واحدة|مشاهدتان|$1 مشاهدات|$1 مشاهدة}}',
 'nimagelinks' => 'مستخدم في {{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}}',
@@ -2434,10 +2432,9 @@ $1',
 'protectedpages' => 'صفحات محمية',
 'protectedpages-indef' => 'عمليات الحماية غير المحددة فقط',
 'protectedpages-cascade' => 'الحماية المضمنة فقط',
-'protectedpagestext' => 'الصفحات التالية محمية من النقل أو التعديل',
+'protectedpages-noredirect' => 'أخفِ التحويلات',
 'protectedpagesempty' => 'لا توجد صفحات محمية حاليا بهذه المحددات.',
 'protectedtitles' => 'عناوين محمية',
-'protectedtitlestext' => 'العناوين التالية محمية ضد الإنشاء',
 'protectedtitlesempty' => 'لا توجد عناوين محمية حاليا بهذه المحددات.',
 'listusers' => 'قائمة الأعضاء',
 'listusers-editsonly' => 'اعرض المستخدمين الذين أجروا تعديلات فقط',
@@ -2490,9 +2487,6 @@ $1',
 'allpagesto' => 'اعرض الصفحات المنتهية عند:',
 'allarticles' => 'كل الصفحات',
 'allinnamespace' => 'كل الصفحات (في نطاق $1)',
-'allnotinnamespace' => 'كل الصفحات (ليست في نطاق $1)',
-'allpagesprev' => 'السابق',
-'allpagesnext' => 'التالي',
 'allpagessubmit' => 'اذهب',
 'allpagesprefix' => 'عرض الصفحات التي تبدأ بـ:',
 'allpagesbadtitle' => 'العنوان المقترح للصفحة غير مقبول أو يضم لغات أخرى أو سابقة إنترويكي.
@@ -2549,7 +2543,8 @@ $1',
 'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
 'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
 ربما تكون هناك [[{{MediaWiki:Listgrouprights-helppage}}|معلومات إضافية]] حول الصلاحيات المنفردة.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">صلاحية ممنوحة</span>
+'listgrouprights-key' => 'عنوان:
+* <span class="listgrouprights-granted">صلاحية ممنوحة</span>
 * <span class="listgrouprights-revoked">صلاحية مسحوبة</span>',
 'listgrouprights-group' => 'المجموعة',
 'listgrouprights-rights' => 'الصلاحيات',
@@ -2706,15 +2701,18 @@ $UNWATCHURL
 'deleteotherreason' => 'سبب آخر/إضافي:',
 'deletereasonotherlist' => 'سبب آخر',
 'deletereason-dropdown' => '*أسباب الحذف الشائعة
-** طلب المؤلف
+** سخام
+** تخريب
 ** خرق لحقوق التأليف والنشر
-** تخريب',
+** طلب المؤلف
+** تحويلة مكسورة',
 'delete-edit-reasonlist' => 'عدل أسباب الحذف',
 'delete-toobig' => 'لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
 قُيّد محذف مثل هذه الصفحات لمنع الاضطراب المفاجئة في {{SITENAME}}.',
 'delete-warning-toobig' => 'لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
 قد يؤدي حذفها إلى اضطراب عمليات قاعدة البيانات في {{SITENAME}}؛
 استمر مع الحذر.',
+'deleting-backlinks-warning' => "'''تحذير:''' ترتبط صفحات أخرى بالصفحة التي أنت على وشك حذفها.",
 
 # Rollback
 'rollback' => 'استرجاع التعديلات',
@@ -2835,7 +2833,6 @@ $UNWATCHURL
 'undeletebtn' => 'استرجاع',
 'undeletelink' => 'اعرض/استعد',
 'undeleteviewlink' => 'اعرض',
-'undeletereset' => 'أعد الضبط',
 'undeleteinvert' => 'اعكس الاختيار',
 'undeletecomment' => 'السبب:',
 'undeletedrevisions' => 'تم استرجاع {{PLURAL:$1||تعديل واحد|تعديلين|$1 تعديلات|$1 تعديلا|$1 تعديل}}',
@@ -2925,13 +2922,11 @@ $1',
 'block' => 'امنع المستخدم',
 'unblock' => 'إلغاء منع مستخدم',
 'blockip' => 'منع المستخدم',
-'blockip-title' => 'منع مستخدم',
 'blockip-legend' => 'منع المستخدم',
 'blockiptext' => 'استخدم النموذج التالي لمنع مستخدم، أو عنوان آيبي، معين من التعديل أو إنشاء حسابات جديدة. تُستخدم هذه العملية لمنع التخريب فقط، ويجب أن تتماشى مع [[{{MediaWiki:Policy-url}}|سياسة المنع]]. أدخل تعليلاً واضحًا لسبب المنع في الخانة المخصصة لذلك (مثلاً: ذكر صفحات محددة تمّ تخريبها من قبل المستخدم).',
 'ipadressorusername' => 'عنوان الأيبي أو اسم المستخدم:',
 'ipbexpiry' => 'مدة المنع:',
 'ipbreason' => 'السبب:',
-'ipbreasonotherlist' => 'سبب آخر',
 'ipbreason-dropdown' => '*أسباب المنع الشائعة
 ** كتابة معلومات زائفة
 ** إزالة المحتوى من الصفحات
@@ -2947,8 +2942,6 @@ $1',
 'ipbsubmit' => 'امنع هذا المستخدم',
 'ipbother' => 'وقت آخر:',
 'ipboptions' => 'ساعتين:2 hours,يوم واحد:1 day,3 أيام:3 days,أسبوع واحد:1 week,أسبوعين:2 weeks,شهر واحد:1 month,3 أشهر:3 months,6 أشهر:6 months,سنة واحدة:1 year,دائم:infinite',
-'ipbotheroption' => 'غير ذلك',
-'ipbotherreason' => 'سبب إضافي/آخر:',
 'ipbhidename' => 'أخف اسم المستخدم من التعديلات والقوائم',
 'ipbwatchuser' => 'راقب صفحتي المستخدم والنقاش لهذا المستخدم',
 'ipb-disableusertalk' => 'امنع هذا المستخدم من تعديل صفحة نقاشه ما دام ممنوعاً',
@@ -2960,6 +2953,7 @@ $1',
 أنظر [[Special:BlockList|قائمة منع الآيبي]] لمراجعة حالات المنع.',
 'ipb-blockingself' => 'أنت على وشك منع نفسك! أمتأكد من رغبتك في القيام بذلك؟',
 'ipb-confirmhideuser' => 'أنت على وشك منع مستخدم مع تفعيل خيار "أخف المستخدم". سوف يخفي هذا الخيار اسم المستخدم من جميل القوائم ومدخلات السجلات. أمتأكد من رغبتك في القيام بذلك؟',
+'ipb-confirmaction' => 'إن كنت متأكدًا أنك تريد القيام بذلك حقًا، فالرجاء التحقق من حقل "{{int:ipb-confirm}}" في الأسفل.',
 'ipb-edit-dropdown' => 'عدل أسباب المنع',
 'ipb-unblock-addr' => 'رفع منع $1',
 'ipb-unblock' => 'رفع المنع عن مستخدم أو عنوان أيبي',
@@ -3043,7 +3037,6 @@ $1',
 'sorbs_create_account_reason' => 'عنوان الأيبي الخاص بك موجود كبروكسي مفتوح في DNSBL المستخدم بواسطة {{SITENAME}}.
 لا يمكنك إنشاء حساب.',
 'xffblockreason' => 'عنوان آي‌بي مذكور في ترويسة X-Forwarded-For، الذي ربما يخصّك أو يخصّ خادوما وسيطا تستخدمه، قد حُظِر. السبب الأصلي للحظر كان: $1',
-'cant-block-while-blocked' => 'أنت لا يمكنك منع المستخدمين الآخرين بينما أنت ممنوع.',
 'cant-see-hidden-user' => 'المستخدم الذي تحاول منعه تم منعه سابقاً وإخفاؤه. بما أنك لا تمتلك صلاحية إخفاء المستخدم، لا يمكنك مشاهدة المنع أو تعديله.',
 'ipbblocked' => 'لا يمكنك منع أو رفع منع مستخدمين آخرين لأنك ممنوع',
 'ipbnounblockself' => 'لا يسمح لك برفع المنع عن نفسك',
@@ -3104,7 +3097,6 @@ $1',
 وفي هذه الحالات، يجب عليك نقل أو دمج محتويات الصفحة يدويا، إذا رغب في ذلك.",
 'movearticle' => 'انقل الصفحة:',
 'moveuserpage-warning' => "'''تحذير: أنت على وشك نقل صفحة مستخدم. من فضلك لاحظ أن الصفحة وحدها سوف تنقل وأن المستخدم لن يعاد تسميته.'''",
-'movenologin' => 'غير مسجل الدخول',
 'movenologintext' => 'يجب أن تكون مستخدماً مسجلاً وأن  [[Special:UserLogin|تسجل دخولك]] لكي تنقل صفحة.',
 'movenotallowed' => 'أنت لا تمتلك الصلاحية لنقل الصفحات.',
 'movenotallowedfile' => 'أنت لا تمتلك الصلاحية لنقل الملفات.',
@@ -3120,9 +3112,6 @@ $1',
 'articleexists' => 'توجد صفحة بهذا الاسم، أو أن الاسم الذي تم اختياره غير صالح.
 من فضلك اختر اسم آخر.',
 'cantmove-titleprotected' => 'لا يمكنك نقل صفحة إلى هذا الموقع، لأن العنوان الجديد تمت حمايته ضد الإنشاء',
-'talkexists' => "'''الصفحة نفسها تم نقلها بنجاح، ولكن صفحة النقاش لم يمكن نقلها لوجود صفحة مسبقاً تحت العنوان الجديد.
-من فضلك ادمجهما يدوياً.'''",
-'movedto' => 'نُقِلت إلى',
 'movetalk' => 'انقل صفحة النقاش المرفقة',
 'move-subpages' => 'انقل الصفحات الفرعية (حتى $1)',
 'move-talk-subpages' => 'انقل الصفحات الفرعية لصفحة النقاش (حتى $1)',
@@ -3424,6 +3413,7 @@ $2',
 'pageinfo-length' => 'حجم الصفحة (بالبايت)',
 'pageinfo-article-id' => 'معرف الصفحة (ID)',
 'pageinfo-language' => 'لغة محتوى الصفحة',
+'pageinfo-content-model' => 'نموذج محتوى الصفحة',
 'pageinfo-robot-policy' => 'فهرسة الروبوتات',
 'pageinfo-robot-index' => 'مسموحة',
 'pageinfo-robot-noindex' => 'غير مسموحة',
@@ -4009,15 +3999,10 @@ $1',
 'exif-urgency-high' => 'عالي ( $1 )',
 'exif-urgency-other' => 'الأولوية محددة من قبل المستخدم ($1)',
 
-# External editor support
-'edit-externally' => 'عدل هذا الملف باستخدام تطبيق خارجي',
-'edit-externally-help' => '(انظر [https://www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'الكل',
 'namespacesall' => 'الكل',
 'monthsall' => 'الكل',
-'limitall' => 'الكل',
 
 # Email address confirmation
 'confirmemail' => 'تأكيد عنوان البريد الإلكتروني',
@@ -4042,7 +4027,6 @@ $1',
 'confirmemail_success' => 'تم تأكيد بريدك الإلكتروني.
 يمكنك الآن [[Special:UserLogin|الدخول]] والتمتع بالويكي.',
 'confirmemail_loggedin' => 'بريدك الإلكتروني تم تأكيده الآن.',
-'confirmemail_error' => 'ثمة شيء خطأ عند محاولة حفظ تأكيدك.',
 'confirmemail_subject' => 'رسالة تأكيد البريد من {{SITENAME}}',
 'confirmemail_body' => 'شخص ما، من المحتمل أن يكون أنت، من عنوان الأيبي $1،
 سجل حسابا "$2" بعنوان البريد الإلكتروني هذا في {{SITENAME}}.
@@ -4127,6 +4111,10 @@ $5
 'imgmultigo' => 'اذهب!',
 'imgmultigoto' => 'اذهب إلى صفحة $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(اللغة الافتراضية)',
+'img-lang-go' => 'اذهب',
+
 # Table pager
 'ascending_abbrev' => 'تصاعدي',
 'descending_abbrev' => 'تنازلي',
@@ -4288,7 +4276,7 @@ $5
 'version-hook-name' => 'اسم الخطاف',
 'version-hook-subscribedby' => 'يستخدم بواسطة',
 'version-version' => '(نسخة $1)',
-'version-svn-revision' => '(r$2)',
+'version-svn-revision' => 'ن$1',
 'version-license' => 'الرخصة',
 'version-poweredby-credits' => "تدار هذه الويكي بواسطة '''[https://www.mediawiki.org/ ميدياويكي]'''، حقوق النشر © 2001-$1 $2.",
 'version-poweredby-others' => 'آخرون',
@@ -4382,7 +4370,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'قارن صفحات',
-'compare-selector' => 'قارن مراجعات الصفحة',
 'compare-page1' => 'صفحة 1',
 'compare-page2' => 'صفحة 2',
 'compare-rev1' => 'نسخة 1',
@@ -4525,10 +4512,10 @@ $5
 'duration-hours' => '({{PLURAL:$1||ساعة واحدة|ساعتان|$1 ساعات|$1 ساعة}})',
 'duration-days' => '{{PLURAL:$1||يوم واحد|يومان|$1 أيام|$1 يومًا|$1 يوم}}',
 'duration-weeks' => '{{PLURAL:$1||أسبوع واحد|أسبوعان|$1 أسابيع|$1 أسبوعًا|$1 أسبوع}}',
-'duration-years' => '{{PLURAL: $1||سنة واحدة|سنتان|$1 سنين|$1 سنة}}',
-'duration-decades' => '{{PLURAL: $1||عقد واحد|عقدان|$1 عقود|$1 عقدًا|$1 عقد}}',
-'duration-centuries' => '{{PLURAL: $1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}',
-'duration-millennia' => '{{PLURAL: $1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}',
+'duration-years' => '{{PLURAL:$1||سنة واحدة|سنتان|$1 سنين|$1 سنة}}',
+'duration-decades' => '{{PLURAL:$1||عقد واحد|عقدان|$1 عقود|$1 عقدًا|$1 عقد}}',
+'duration-centuries' => '{{PLURAL:$1||قرن واحد|قرنان|$1 قرون|$1 قرنًا|$1 قرن}}',
+'duration-millennia' => '{{PLURAL:$1||ألفية واحدة|ألفيتان|$1 ألفيات|$1 ألفية}}',
 
 # Image rotation
 'rotate-comment' => 'تدوير الصورة  {{PLURAL:$1||درجة واحدة|درجتان|$1 درجات|$1 درجة}} باتجاه عقارب الساعة',
@@ -4538,8 +4525,8 @@ $5
 'limitreport-cputime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
 'limitreport-walltime' => 'الزمن الحقيقي المستغرق',
 'limitreport-walltime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
-'limitreport-postexpandincludesize-value' => '$1/$2 بايت',
-'limitreport-templateargumentsize-value' => '$1/$2 بايت',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'فرد القوالب',
index 64c5d52..9c1ad4f 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ܒܪܝ_ܚܘܫܒܢܐ' ),
        'Deadendpages'              => array( 'ܦܐܬܬ̈ܐ_ܥܡ_ܚܪܬܐ_ܡܝܬܬܐ' ),
        'DeletedContributions'      => array( 'ܫܘܬܦܘ̈ܬܐ_ܫܝ̈ܦܬܐ' ),
-       'Disambiguations'           => array( 'ܬܘܚܡ̈ܐ_ܐܚܪ̈ܢܐ' ),
        'DoubleRedirects'           => array( 'ܨܘܝܒ̈ܐ_ܥܦܝ̈ܦܐ' ),
        'EditWatchlist'             => array( 'ܫܚܠܦ_ܪ̈ܗܝܬܐ' ),
        'Emailuser'                 => array( 'ܫܕܪ_ܒܝܠܕܪܐ_ܐܠܩܛܪܘܢܝܐ_ܠܡܦܠܚܢܐ' ),
@@ -249,7 +248,6 @@ $messages = array(
 'qbedit' => 'ܫܚܠܦ',
 'qbpageoptions' => 'ܗܕܐ ܦܐܬܐ',
 'qbmyoptions' => 'ܦܐܬܬ̈ܐ ܕܝܠܝ',
-'qbspecialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
 'faq' => 'ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
 'faqpage' => 'Project:ܫܘܐܠ̈ܐ ܬܢܝ̈ܐ',
 
@@ -459,7 +457,7 @@ $1',
 'gotaccount' => "ܐܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
 'gotaccountlink' => 'ܥܘܠ',
 'userlogin-resetlink' => 'ܐܬܢܫܝܬ ܝܕ̈ܥܬܐ ܕܥܠܠܐ؟',
-'userlogin-resetpassword-link' => 'Ü«Ü\9aܠܦ Ü¡Ü Ü¬Ü\90 Ü\95ܥܠܠÜ\90',
+'userlogin-resetpassword-link' => 'ܢܫܬ Ü¡Ü Ü¬Ü\90 Ü\95ܥܠܠÜ\90Ø\9f',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ܥܘܕܪܢܐ ܒܥܠܠܐ ܠܚܘܫܒܢܐ]]',
 'createacct-join' => 'ܐܥܠ ܝܕ̈ܥܬܐ ܕܝܠܟ ܠܬܚܬ',
 'createacct-emailrequired' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
@@ -484,7 +482,7 @@ $1',
 'wrongpasswordempty' => 'ܡܠܬܐ ܕܥܠܠܐ ܕܐܥܠܬ ܣܦܝܩܬܐ ܐܝܬܝܗ.
 ܒܒܥܘ ܡܢܟ ܕܬܢܣܐ ܙܒܢ ܐܚܪܝܢ.',
 'passwordtooshort' => 'ܡܠܬܐ ܕܥܠܠܐ ܘܠܐ ܕܬܗܘܐ ܕܠܐ ܒܨܪ ܡܢ{{PLURAL:$1|ܐܬܘܬܐ ܚܕ|$1 ܐܬܘ̈ܬܐ}}.',
-'mailmypassword' => 'Ü«Ü\95ܪ Ü Ü\9d Ü¡Ü Ü¬Ü\90 Ü\9aÜ\95ܬÜ\90 Ü\95ܥܠܠÜ\90',
+'mailmypassword' => 'Ü£Ü\98Ü¡ Ü¡Ü Ü¬Ü\90 Ü\95ܥܠܠÜ\90 Ü\99Ü\92Ü¢ Ü\90Ü\9aܪÜ\9dÜ¢',
 'passwordremindertitle' => 'ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܢܝܬܐ ܚܕܬܐ ܠ{{SITENAME}}',
 'noemail' => 'ܠܝܬ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ "$1".',
 'mailerror' => 'ܦܘܕܐ ܒܫܘܕܪܐ ܕܒܝܠܕܪܐ: $1',
@@ -495,7 +493,7 @@ $1',
 'loginlanguagelabel' => 'ܠܫܢܐ: $1',
 
 # Change password dialog
-'resetpass' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
+'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
 'resetpass_header' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ ܕܚܘܫܒܢܐ',
 'oldpassword' => 'ܡܠܬܐ ܕܥܠܠܐ ܥܬܝܩܬܐ:',
 'newpassword' => 'ܡܠܬܐ ܕܥܠܠܐ ܚܕܬܐ:',
@@ -621,7 +619,7 @@ $1',
 'revisiondelete' => 'ܫܘܦ/ܠܐ ܫܘܦ ܬܢܝܬ̈ܐ',
 'revdelete-show-file-submit' => 'ܐܝܢ',
 'revdelete-selected' => "'''{{PLURAL:$2|ܬܢܝܬܐ ܓܒܝܬܐ|ܬܢܝܬ̈ܐ ܓܒܝܬܐ}} ܕ [[:$1]]:'''",
-'revdelete-hide-text' => 'Ü\9bÜ«Ü\9d Ü\9fܬÜ\92ܬÜ\90 Ü\95ܬܢÜ\9dܬÜ\90',
+'revdelete-hide-text' => 'ܟܬܒܬܐ ܕܬܢܝܬܐ',
 'revdelete-hide-image' => 'ܛܫܝ ܚܒܝܫܬ̈ܐ ܕܠܦܦܐ',
 'revdelete-hide-name' => 'ܛܫܝ ܥܒܕܐ ܘܢܘܦܐ',
 'revdelete-hide-comment' => 'ܫܚܠܦ ܟܪܝܘܬܐ ܕܫܘܚܠܦܐ',
@@ -631,8 +629,6 @@ $1',
 'revdelete-radio-unset' => 'ܓܠܝܐ',
 'revdelete-log' => 'ܥܠܬܐ:',
 'revdel-restore' => 'ܫܚܠܦ ܚܙܝܬܐ',
-'revdel-restore-deleted' => 'ܬܢܝܬ̈ܐ ܫܝܦ̈ܐ',
-'revdel-restore-visible' => 'ܬܢܝܬ̈ܐ ܡܬܚܙܝܢܝܬ̈ܐ',
 'pagehist' => 'ܬܫܥܝܬܐ ܕܦܐܬܐ',
 'deletedhist' => 'ܬܫܥܝܬܐ ܫܝܦܬܐ',
 'revdelete-otherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
@@ -671,11 +667,7 @@ $1',
 # 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'''",
 'titlematches' => 'ܫܡܐ ܕܦܐܬܐ ܐܘܝܢܐ',
-'notitlematches' => 'ܠܝܬ ܫܡܐ ܕܦܐܬܐ ܐܘܝܢܐ',
 'textmatches' => 'ܟܬܒܬܐ ܐܘܝܢܬܐ',
 'notextmatches' => 'ܠܝܬ ܟܬܒܬܐ ܐܘܝܢܬܐ',
 'prevn' => '{{PLURAL:$1|$1}} ܕܩܕܡ',
@@ -684,7 +676,6 @@ $1',
 'nextn-title' => '$1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܕܒܬܪ',
 'shown-title' => 'ܚܘܝ $1 {{PLURAL:$1|ܦܠܛܐ|ܦܠܛ̈ܐ}} ܠܟܠ ܦܐܬܐ',
 'viewprevnext' => 'ܚܘܝ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ܓܒܝܬ̈ܐ ܕܒܨܝܐ',
 'searchmenu-exists' => "'''ܐܝܬ ܦܐܬܐ ܒܫܡ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ'''",
 'searchmenu-new' => "'''ܒܪܝ ܦܐܬܐ \"[[:\$1]]\" ܥܠ ܗܢܐ ܘܝܩܝ!'''",
 'searchprofile-articles' => 'ܦܐܬܬ̈ܐ ܕܚܒܝܫܬ̈ܐ',
@@ -703,7 +694,6 @@ $1',
 'search-interwiki-default' => 'ܦܠܛ̈ܐ ܕ $1:',
 'search-interwiki-more' => '(ܝܬܝܪ)',
 'search-relatedarticle' => 'ܐܚܝܢܝ̈ܐ',
-'mwsuggest-disable' => 'ܒܛܘܠ ܬܘܦܥܠܐ ܕܡܚܫܚܬ̈ܐ ܕܒܨܝܐ',
 'searcheverything-enable' => 'ܒܨܝ ܒܟܠ ܚܩܠܬ̈ܐ',
 'searchrelated' => 'ܐܚܝܢܝ̈ܐ',
 'searchall' => 'ܟܠ',
@@ -711,11 +701,9 @@ $1',
 'showingresultsnum' => "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$3|'''ܚܕ ܦܠܛܐ'''|'''$3''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|ܦܠܛܐ '''$1''' ܡܢ '''$3'''|ܦܠܛ̈ܐ '''$1 - $2''' ܡܢ '''$3'''}} ܠ'''$4'''",
 'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝܢ̈ܐ ܠܗܢܐ ܒܨܝܐ.',
-'powersearch' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-legend' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ',
 'powersearch-ns' => 'ܒܨܝ ܒܚܩܠܬ̈ܐ:',
 'powersearch-redir' => 'ܚܘܝ ܨܘܝܒ̈ܐ',
-'powersearch-field' => 'ܒܨܝ ܥܠ',
 'powersearch-togglelabel' => 'ܓܒܝ:',
 'powersearch-toggleall' => 'ܟܠ',
 'powersearch-togglenone' => 'ܠܐ ܡܕܡ',
@@ -725,7 +713,6 @@ $1',
 'preferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
 'mypreferences' => 'ܨܒܝܢܝܘܬ̈ܐ',
 'prefs-edits' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ:',
-'changepassword' => 'ܫܚܠܦ ܡܠܬܐ ܕܥܠܠܐ',
 'prefs-skin' => 'ܓܠܕܐ',
 'skin-preview' => 'ܚܝܪܐ ܩܕܡܝܐ',
 'datedefault' => 'ܠܐ ܨܒܝܢܝܘܬܐ',
@@ -741,12 +728,10 @@ $1',
 'prefs-email' => 'ܓܒܝܬ̈ܐ ܕܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
 'prefs-rendering' => 'ܐܣܟܝܡܐ',
 'saveprefs' => 'ܠܒܘܟ',
-'resetprefs' => 'ܡܫܝ ܫܘܚܠܦ̈ܐ ܠܐ ܠܒܝܟ̈ܐ',
 'prefs-editing' => 'ܫܚܠܦܬܐ',
 'rows' => 'ܨ̈ܦܐ',
 'columns' => 'ܥܡܘܕ̈ܐ:',
 'searchresultshead' => 'ܒܨܝ',
-'resultsperpage' => 'ܡܢܝܢܐ ܕܦܠܛ̈ܐ ܒܦܐܬܐ:',
 'recentchangesdays' => 'ܝܘܡܬ̈ܐ ܠܚܙܝܐ ܒܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ:',
 'recentchangescount' => 'ܡܢܝܢܐ ܕܫܘܚܠܦ̈ܐ ܠܚܙܝܐ ܪܫܐܝܬ:',
 'savedprefs' => 'ܨܒܝܢܝܘܬ̈ܟ ܐܬܠܒܟܘ.',
@@ -889,12 +874,14 @@ $1',
 'recentchanges-label-minor' => 'ܗܢܘ ܫܘܚܠܦܐ ܙܥܘܪܐ',
 'recentchanges-label-bot' => 'ܒܘܬ (bot) ܥܒܕ ܗܢܐ ܫܘܚܠܦܐ',
 'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
-'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
+'recentchanges-label-plusminus' => 'ܥܓܪܐ ܕܦܐܬܐ ܐܫܬܚܠܦ ܒܗܢܐ ܡܢܝܢܐ ܡܢ ܒܝܛ̈',
+'recentchanges-legend-heading' => "'''ܦܘܫܩܐ:'''",
+'recentchanges-legend-newpage' => '(ܐܦ ܚܙܝ [[Special:NewPages|ܡܟܬܒܘܬܐ ܕܦܐܬܬ̈ܐ ܚܕ̈ܬܬܐ]])',
 'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
 'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
 'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
 'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)',
-'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¥Ü Ü\9dܠ̈ܐ',
+'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¡Ü£Ü\93ܠ̈ܐ',
 'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
 'rcshowhidepatr' => '$1 ܫܘܚܠܦ̈ܐ ܬܢܝ̈ܐ',
 'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
@@ -971,8 +958,7 @@ $1',
 'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
 
 # Special:ListFiles
-'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.
-ܐܡܬܝ ܕܬܨܦܐ ܒܝܕ ܡܦܠܚܢܐ ܬܓܠܚ ܨܚܚܐ ܐܚܪܝܐ ܒܠܚܘܕ ܕܠܦܦ̈ܐ ܡܣܩ̈ܐ ܒܝܕ ܗܢܐ ܡܦܠܚܢܐ.',
+'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.',
 'listfiles_search_for' => 'ܒܨܝ ܥܠ ܫܡܐ ܕܡܝܕܝܐ:',
 'imgfile' => 'ܠܦܦܐ',
 'listfiles' => 'ܡܟܬܒܘܬܐ ܕܠܦܦ̈ܐ',
@@ -1113,7 +1099,6 @@ $1',
 'deadendpages' => 'ܦܐܬܬ̈ܐ ܥܡ ܚܪܬܐ ܡܝܬܬܐ',
 'protectedpages' => 'ܦܐܬܬ̈ܐ ܢܛܝܪ̈ܬܐ',
 'protectedtitles' => 'ܟܘܢܝ̈ܐ ܢܛܝܪ̈ܐ',
-'protectedtitlestext' => 'ܟܘܢܝ̈ܐ ܗܠܝܢ ܢܛܝܪ̈ܐ ܐܢܘܢ ܠܘܩܒܠ ܒܪܝܐ',
 'protectedtitlesempty' => 'ܠܝܬ ܟܘܢܝ̈ܐ ܢܛܝܪ̈ܐ ܗܫܐܝܬ ܥܡ ܗܠܝܢ ܦܪ̈ܘܫܝܐ',
 'listusers' => 'ܡܟܬܒܘܬܐ ܕܗܕ̈ܡܐ',
 'listusers-editsonly' => 'ܚܘܝ ܡܦܠܚܢ̈ܐ ܥܡ ܫܘܚܠܦ̈ܐ ܒܠܚܘܕ',
@@ -1157,9 +1142,6 @@ $1',
 'allpagesto' => 'ܚܘܝ ܦܐܬܬ̈ܐ ܕܫܠܡ ܥܡ:',
 'allarticles' => 'ܟܠ ܡܓܠ̈ܐ',
 'allinnamespace' => 'ܟܠ ܦܐܬܬ̈ܐ (ܚܩܠܐ ܕ $1)',
-'allnotinnamespace' => 'ܟܠ ܦܐܬܬ̈ܐ (ܕܠܝܬ ܒܚܩܠܐ ܕ $1)',
-'allpagesprev' => 'ܕܩܕܡ',
-'allpagesnext' => 'ܕܒܬܪ',
 'allpagessubmit' => 'ܙܠ',
 'allpagesprefix' => 'ܚܘܝ ܦܐܬܬ̈ܐ ܕܫܪܝܢ ܒ:',
 'allpages-bad-ns' => '{{SITENAME}} ܠܝܬ ܠܗ ܚܩܠܐ "$1".',
@@ -1370,7 +1352,7 @@ $1',
 'contributions' => 'ܫܘܬܦܘ̈ܬܐ {{GENDER:$1|ܕܡܦܠܚܢܐ|ܕܡܦܠܚܢܬܐ}}',
 'contributions-title' => 'ܫܘܬܦܘ̈ܬܐ ܕܡܦܠܚܢܐ ܠ$1',
 'mycontris' => 'ܫܘܬܦܘ̈ܬܐ',
-'contribsub2' => 'Ü\95 $1 ($2)',
+'contribsub2' => 'Ü {{GENDER:$3|$1}} ($2)',
 'uctop' => '(ܗܫܝܐ)',
 'month' => 'ܡܢ ܝܪܚܐ ܕ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
 'year' => 'ܡܢ ܫܢܬ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
@@ -1413,17 +1395,13 @@ $1',
 'block' => 'ܚܪܘܡ ܡܦܠܚܢܐ',
 'unblock' => 'ܫܩܘܠ ܚܪܡܐ ܡܢ ܡܦܠܚܢܐ',
 'blockip' => 'ܚܪܘܡ ܡܦܠܚܢܐ',
-'blockip-title' => 'ܚܪܘܡ ܡܦܠܚܢܐ',
 'blockip-legend' => 'ܚܪܘܡ ܡܦܠܚܢܐ',
 'ipadressorusername' => 'ܐܝ ܦܝ (IP) ܐܘ ܫܡܐ ܕܡܦܠܚܢܐ:',
 'ipbexpiry' => 'ܡܬܚܐ ܕܚܪܡܐ:',
 'ipbreason' => 'ܥܠܬܐ:',
-'ipbreasonotherlist' => 'ܥܠܬܐ ܐܚܪܬܐ',
 'ipbsubmit' => 'ܚܪܘܡ ܡܦܠܚܢܐ ܗܢܐ',
 'ipbother' => 'ܥܕܢܐ ܐܚܪܢܐ',
 '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',
-'ipbotheroption' => 'ܐܚܪܢܐ',
-'ipbotherreason' => 'ܥܠܬܐ ܐܚܪܬܐ/ܢܩܝܦܬܐ:',
 'ipbhidename' => 'ܛܫܝ ܫܡܐ ܕܡܦܠܚܢܐ ܡܢ ܫܘܚܠܦ̈ܐ ܘܡܟܬܒܘܬ̈ܐ',
 'badipaddress' => 'ܐܝ ܦܝ (IP) ܠܐ ܬܪܝܨܐ:',
 'blockipsuccesssub' => 'ܚܪܡܐ ܓܡܪ',
@@ -1464,14 +1442,12 @@ Do you want to change the settings?',
 'move-page' => 'ܫܢܝ $1',
 'move-page-legend' => 'ܫܢܝ ܦܐܬܐ',
 'movearticle' => 'ܫܢܝ ܦܐܬܐ:',
-'movenologin' => 'ܠܝܬܝܟ ܥܠܝܠܐ',
 'newtitle' => 'ܠܫܡܐ ܚܕܬܐ:',
 'move-watch' => 'ܪܗܝ ܦܐܬܐ ܗܕܐ',
 'movepagebtn' => 'ܫܢܝ ܦܐܬܐ',
 'pagemovedsub' => 'ܫܘܢܝܐ ܓܡܪ',
 'movepage-moved' => '\'\'\'"$1" ܐܫܬܢܝܬ ܠ "$2"\'\'\'',
 'movepage-moved-redirect' => 'ܨܘܝܒܐ ܐܬܒܪܝ',
-'movedto' => 'ܐܬܫܢܝ ܠ',
 'move-subpages' => 'ܫܢܝ ܦܐܬܬ̈ܐ ܦܪ̈ܥܝܬ̈ܐ (ܥܕܡܐ ܠ $1)',
 'move-talk-subpages' => 'ܫܢܝ ܦܐܬܬ̈ܐ ܦܪ̈ܥܝܬ̈ܐ ܕܦܐܬܐ ܕܕܘܪܫܐ (ܥܕܡܐ ܠ $1)',
 'movelogpage' => 'ܣܓܠܐ ܕܫܘܢܝܐ',
@@ -1721,7 +1697,6 @@ $1',
 'watchlistall2' => 'ܟܠ',
 'namespacesall' => 'ܟܠ',
 'monthsall' => 'ܟܠ',
-'limitall' => 'ܟܠ',
 
 # Email address confirmation
 'confirmemail' => 'ܫܪܪ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
@@ -1793,7 +1768,7 @@ $1',
 # Special:SpecialPages
 'specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
 'specialpages-note' => '* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
-* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ ܒܠܚܘܕ.</span>',
+* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ.</span>',
 'specialpages-group-maintenance' => 'ܬܫܪܪ̈ܐ ܕܚܕܬܘܬܐ',
 'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
 'specialpages-group-login' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
@@ -1824,7 +1799,6 @@ $1',
 
 # Special:ComparePages
 'comparepages' => 'ܦܚܘܡ ܒܝܢܝ ܦܐܬܬ̈ܐ',
-'compare-selector' => 'ܦܚܘܡ ܒܝܢܝ ܬܢܝܬ̈ܐ ܕܦܐܬܬ̈ܐ',
 'compare-page1' => 'ܦܐܬܐ 1',
 'compare-page2' => 'ܦܐܬܐ 2',
 'compare-rev1' => 'ܬܢܝܬܐ 1',
index 5a727dc..2451748 100644 (file)
@@ -111,7 +111,6 @@ $messages = array(
 'qbedit' => 'Pepikape',
 'qbpageoptions' => 'Tüfachi wülngiñ',
 'qbmyoptions' => 'tañi nütramkawe',
-'qbspecialpages' => 'Kangelu',
 'faq' => 'Rumelfemkelu ramtun',
 'faqpage' => 'Project:FAQ',
 
@@ -374,8 +373,6 @@ Rulpakünuy feychi kangelkülelu dungu.",
 'rev-showdeleted' => 'pegelpe',
 'revdelete-show-file-submit' => 'May',
 'revdel-restore' => 'kalekünun pengengen',
-'revdel-restore-deleted' => 'liftugepelu malün',
-'revdel-restore-visible' => 'pengengekelu malün',
 'pagehist' => 'pünon pakina',
 'deletedhist' => 'Ñamümüngelu pünon',
 'revdelete-edit-reasonlist' => 'Wirin dungu ñamümgün mew',
@@ -424,8 +421,6 @@ Rulpakünuy feychi kangelkülelu dungu.",
 'searchall' => 'kom',
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' ñi tripalu '''$3''' mew|'''$1-$2''' ñi tripalu '''$3''' mew}} '''$4''' ngealu",
 'search-nonefound' => 'Tripalu dungu falilay chumngechi kintuael.',
-'powersearch' => 'Kintun',
-'powersearch-field' => 'Kintun',
 
 # Preferences page
 'mypreferences' => 'Dullin',
@@ -493,7 +488,6 @@ Rulpakünuy feychi kangelkülelu dungu.",
 'recentchanges-label-bot' => 'Kiñe kizuamukelu küzauwe dewmay tüfachi wirin.',
 'recentchanges-label-unpatrolled' => 'Pukintulelay tüfachi wirin.',
 'recentchanges-legend-newpage' => '$1 - We Pakina',
-'rcnote' => 'Nagpüle {{PLURAL:müley $1 kalekünun}}, rupalu {{PLURAL:$2 antü}}, $5, $4.',
 'rcnotefrom' => "Nagpüle müley fill wirin tuwülu '''$2''' mew (tripalu '''$1''' mew).",
 'rclistfrom' => 'Adkintun weke kalekünun amuamugelu $1',
 'rcshowhideminor' => '$1 pichi wirin',
@@ -613,7 +607,6 @@ Fey ñi chumngen mülelu ($2 fey ñi chumngen wülngiñ) pengeli tüfa mew.',
 'allpages' => 'Fill wülngiñ',
 'alphaindexline' => '$1, $2 mew',
 'allarticles' => 'Fill wülngiñ',
-'allpagesnext' => 'Inan',
 'allpagessubmit' => 'Pengelün',
 
 # Special:Categories
@@ -736,9 +729,7 @@ Fey ñi chumngen mülelu ($2 fey ñi chumngen wülngiñ) pengeli tüfa mew.',
 # Block/unblock
 'ipbexpiry' => 'Afi',
 'ipbreason' => 'Dungu:',
-'ipbreasonotherlist' => 'Kake dungu:',
 'ipboptions' => '2 ora:2 hours,1 aṉtü:1 day,3 aṉtü:3 days,1 semana:1 week,2 semana:2 weeks,1 küyeṉ:1 month,3 küyeṉ:3 months,6 küyeṉ:6 months,1 tripantu:1 year,rumel:infinite',
-'ipbotheroption' => 'Kakelu',
 'ipblocklist' => 'Katrütulelu kellufe',
 'ipblocklist-submit' => 'Kintun',
 'expiringblock' => 'afi $1 - $2',
@@ -755,11 +746,9 @@ Fey ñi chumngen mülelu ($2 fey ñi chumngen wülngiñ) pengeli tüfa mew.',
 'move-page' => 'Nengümün $1',
 'move-page-legend' => 'Nengümün wülngiñ',
 'movearticle' => 'Nengümün wülngiñ',
-'movenologin' => 'Konlaymi',
 'newtitle' => 'We üy püle',
 'move-watch' => 'Llaytun tüfachi pakina',
 'movepagebtn' => 'Nengümün pakina',
-'movedto' => 'Nengümün',
 'movelogpage' => 'Nengümün wirintukun',
 'revertmove' => 'wüñoeltun',
 'delete_and_move' => 'Ñamümün ka nengümün',
@@ -899,15 +888,10 @@ Ka dungu ellkangeay wünedullin reke.
 
 'exif-subjectdistancerange-0' => 'Kimnoelchi',
 
-# External editor support
-'edit-externally' => 'Kümeelün tüfachi eltukawün wekun küdauwe mew',
-'edit-externally-help' => '(Pen feychi [https://www.mediawiki.org/wiki/Manual:External_editors adtukünun chumngechi pünengeael]  doy dungungeam)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kom',
 'namespacesall' => 'kom',
 'monthsall' => '(kom)',
-'limitall' => 'Kom',
 
 # action=purge
 'confirm_purge_button' => 'Feley may',
index bc20c1c..276c785 100644 (file)
@@ -38,7 +38,6 @@ $messages = array(
 'tog-minordefault' => 'alm jmia tadilat tafifa iftiradiyan',
 'tog-previewontop' => 'biyn laard lmosbaq qbl sndoq thrir',
 'tog-previewonfirst' => 'Ůbiyn moaayana maa awal tadil',
-'tog-nocache' => 'attl takhzin lmotassafih lsfha',
 'tog-enotifwatchlistpages' => 'sift liya barid electroni ila tbdlat chi sfha f qaaimat lmoraqaba diali',
 'tog-enotifusertalkpages' => 'sift liya rissala electronia ila tbdlat sfht niqach dyali',
 'tog-enotifminoredits' => 'sift liya risala electronia hta bnisba ltadilat tafifa',
@@ -159,7 +158,6 @@ $messages = array(
 'qbedit' => 'Ĝedel',
 'qbpageoptions' => "Had 'ṣ-ṣefḫa",
 'qbmyoptions' => "'Ṣ-Ṣefḫaṫ dyawli",
-'qbspecialpages' => 'Ṣefḫaṫ ĥaṣṣin',
 'faq' => 'asaila kaytaawdo bzaf',
 'faqpage' => 'Project:asaila kaytaawdo',
 
@@ -364,9 +362,6 @@ ymkn ikon ċi waḫd aĥor ḫdfo.',
 'perfcachedts' => 'l-bayanaṫ ṫ-ṫalia kayna f-lcache, o-ṫḫddṫaṫ aĥir mrra f-$1.',
 'querypage-no-updates' => 'ṫḫdiṫad dial had ṣfḫa ma ĥḍḍamaċ daba.
 l-bayanaṫ lli kayna hna daba maĥadiċ ṫṫḫḍḍṫ.',
-'wrong_wfQuery_params' => 'parametrat ġalta l-wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Ċof l-ĝin',
 'actionthrottled' => 'had l-feĝl ṫṫḫbs',
 'actionthrottledtext' => 'baċ nṫfadaw ṣ-ṣpam, ĝadad l-mṛṛaṫ lli ymkn ddir fiha had l-feĝl f-modda qṣiṛa rah mḫdod, o-nta rak fṫṫi had l-ĝadar.
@@ -496,7 +491,7 @@ ma ṫḍreb ḫsab l-had l-mesaj ila ṫṣĝyb had l-ḫisab ĝen tariq l-ĥat
 'user-mail-no-addy' => 'ḫawlṫi ṫsift email bla ĝonwan l-email.',
 
 # Change password dialog
-'resetpass' => 'tbdl lmot de passe',
+'changepassword' => 'tbdl lmot de passe',
 'resetpass_announce' => "rak daĥol b-code mo'qqat mṣift bl-email.
 baċ ṫsali d-doĥol, ĥask ddir ċi klmṫ s-srr jdida hna:",
 'resetpass_text' => '<!-- zid chi nass hna -->',
@@ -803,9 +798,6 @@ raha kayna bĝda.',
 'rev-showdeleted' => 'Werri',
 'revisiondelete' => 'ḫddef/redd l-morajaĝaṫ',
 'revdelete-nooldid-title' => 'morajaĝa mosṫhdafa ma ṣalḫa-ċ',
-'revdelete-nologtype-title' => 'la nawa sijil tamma iaataoho',
-'revdelete-nologtype-text' => 'ma ḫddedṫi-ċi ċi naĝ dl-sijillaṫ ḅaċ ddir fih had l-feĝl.',
-'revdelete-nologid-title' => 'modkhala sijjil ghayr sahiha',
 'revdelete-no-file' => 'dak l-milef ma kayn-ċ.',
 'revdelete-show-file-confirm' => 'waċ mṫ\'kked baġi ṫċof ṃoṛajaĝa mḫdofa ṫaĝ milef "<nowiki>$1</nowiki>" mn $2 l-$3?',
 'revdelete-show-file-submit' => 'iyih',
@@ -832,8 +824,6 @@ $1",
 'logdelete-failure' => "'''ḍ-ḍḅt dl-vizibiliṫi d-ssijill ma njḫ-ċ:'''
 $1",
 'revdel-restore' => 'Beddel ċ-ċofa',
-'revdel-restore-deleted' => 'morajaaa mahdoufa',
-'revdel-restore-visible' => "morajaat mar'iya",
 'pagehist' => 'Ṫariĥ ṣ-ṣefḫa',
 'deletedhist' => 'tarikh lmhdof',
 'revdelete-no-change' => "'''ṫḫdir:''' l-ĝonṣor l-m'rreĥ $2, $1 fih bĝda l-parametraṫ dl-vizibiliti lli mtloba.",
@@ -886,12 +876,8 @@ $1",
 # Search results
 'searchresults' => "N-Naṫa'ij dyal l-beḫṫ",
 'searchresults-title' => 'N-Naṫa\'ij dyal l-beḫṫ ĝla "$1"',
-'searchresulttext' => 'Ila bġiṫi kṫer de l-meĝlomaṫ ĝla {{SITENAME}}, ċof [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Qelebṫiw ĝla « '''[[:$1]]''' » ([[Special:Prefixindex/$1|ṣ-ṣefḫaṫ kolhom li badyin be « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ṣ-ṣefḫaṫ kolhom li mlaqyin mĝa « $1 »]])",
-'searchsubtitleinvalid' => "Qellebṫi ĝla '''$1'''",
 'toomanymatches' => 'bzzaf dl-motabaqaṫ ṫrddaṫ, ċof ċi talab aĥor',
 'titlematches' => 'onwan sfha yotabiq',
-'notitlematches' => 'Ḫṫa ċi neṣ ma mlaqi mĝa dak ċ-ċi l-li kaṫ-qelleb ĝlih',
 'textmatches' => 'neṣ sfha kaytabq',
 'notextmatches' => 'Ḫṫa ċi neṣ ma mlaqi mĝa dakċi li kaṫqelleb ĝlih',
 'prevn' => 'L-Li qbel {{PLURAL:$1|$1}}',
@@ -900,10 +886,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|naṫija|naṫayj}} lli bĝd',
 'shown-title' => 'wrri $1 {{PLURAL:$1|naṫija|naṫayj}} f-ṣṣfḫa',
 'viewprevnext' => 'Ċof ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'khiyarat lbaht',
 'searchmenu-exists' => "'''ḫṫṫa ṣfḫa f-had l-wiki ma smiṫha \"[[:\$1]]\".'''",
 'searchmenu-new' => "'''ṣayb f-had l-wiki ṣfḫṫ \"[[:\$1]]\"!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ṫṣffeh ṣfaḫi b-had ṣ-ṣabiqa]]',
 'searchprofile-articles' => 'sfht mohtawa',
 'searchprofile-project' => 'sfhai dyal lmossada ol mchroa',
 'searchprofile-images' => 'media',
@@ -924,21 +908,16 @@ $1",
 'search-interwiki-default' => 'N-Naṫija dyal $1:',
 'search-interwiki-more' => '(z-zyada)',
 'search-relatedarticle' => 'mortabita',
-'mwsuggest-disable' => 'attl liqtirahat dyal AJAX',
 'searcheverything-enable' => 'qlleb f-gaĝ n-nitaqaṫ',
 'searchrelated' => 'mortabita',
 'searchall' => 'kolċi',
 'showingresults' => "mbyyena l-ṫḫṫ ḫṫṫa l-{{PLURAL:$3|'''1''' n-naṫija|'''$3''' d-nnaṫa'ij}} badya mn rqm '''$2'''.",
 'showingresultsnum' => "mbyyena l-ṫḫṫ {{PLURAL:$3|'''1''' n-naṫija|'''$3''' d-nnaṫa'ij}} badya mn rqm '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|n-naṫija '''$1''' mn '''$3'''|n-naṫa'ij '''$1 - $2''' mn '''$3'''}} l-'''$4'''",
-'nonefound' => "'''Molaḫada''': Ma kayen ġir weḫdin men l-blaṣaṫ dyal s-smiyyaṫ li kanqellbo ĝlihom otomaṫikiyan.
-Jerreb be l-préfiks \"all:\" baċ ṫqelleb ĝla l-meḍmon kollo (o ḫṫa ṣ-ṣefḫaṫ dyal n-niqaċ, l-modélaṫ, etc.) ola ṣṫeĝmel l-blaṣa dyal s-smiyya li bġiṫi bḫal ċi préfiks.",
 'search-nonefound' => 'ḫṫṫa naṫija ma bḫal ḫad t-talab.',
-'powersearch' => 'Ṫeqlab ṣĝib',
 'powersearch-legend' => 'Ṫeqlab ṣĝib',
 'powersearch-ns' => 'Qelleb fe maḫel s-smiyyaṫ',
 'powersearch-redir' => "Lisṫaṫ 'ṫ-ṫeḫwilaṫ",
-'powersearch-field' => 'Qeleb ĝla',
 'powersearch-togglelabel' => 'Ĥṫar',
 'powersearch-toggleall' => 'Kolċi',
 'powersearch-togglenone' => 'Walo',
@@ -951,7 +930,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'preferences' => 'ṫfḍilaṫ',
 'mypreferences' => 'Ḫajaṫ li kanfeḍḍel',
 'prefs-edits' => 'ĝadad ṫ-ṫĝdilaṫ:',
-'changepassword' => 'tbdl lmot de passe',
 'prefs-skin' => 'skin',
 'skin-preview' => 'L-Prévizualizasyon',
 'datedefault' => 'la tafdil',
@@ -971,13 +949,11 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'prefs-email' => "reglage dyal l'email",
 'prefs-rendering' => "l'apparence",
 'saveprefs' => 'sjl',
-'resetprefs' => 'hiyd tgyirat li mamsjlach',
 'restoreprefs' => 'rjaa kaml liadadat liftiradiya',
 'prefs-editing' => 'thrir',
 'rows' => 'sofof:',
 'columns' => 'aaamida:',
 'searchresultshead' => 'Qelleb',
-'resultsperpage' => 'adad nataij  f sfha',
 'stub-threshold' => 'l-ḫadd l-aqṣa ṫaĝ <a href="#" class="stub">wṣlaṫ l-bidraṫ</a> (ḅayṫaṫ):',
 'stub-threshold-disabled' => 'makhdamch',
 'recentchangesdays' => 'n-nharaṫ lli twrri f-ṫġyiraṫ j-jdida:',
@@ -989,7 +965,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'localtime' => 'Lwaqt lmahali :',
 'timezoneuseserverdefault' => 'stakhdm iftirad serveur',
 'timezoneuseoffset' => 'khor (hdd lfarq)',
-'timezoneoffset' => 'Lfarq¹:',
 'servertime' => 'wqt serveur',
 'guesstimezone' => 'dkhl twqit mn navigateur',
 'timezoneregion-africa' => 'Ifriqya',
@@ -1197,7 +1172,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
 'recentchanges-label-minor' => 'Hada ṫeĝdil sġir',
 'recentchanges-label-bot' => 'had taadil darou bot',
 'recentchanges-label-unpatrolled' => 'had taadil matrajach',
-'rcnote' => 'Hnaya ġaṫelqaw {{PLURAL:$1|ṫ-ṫeġyira l-leĥĥra li ṫdareṫ|l-$1 dyal ṫ-ṫeġyiraṫ l-leĥĥrin li ṫdaro}} tol {{PLURAL:$2|l-yom l-leĥĥer|l-<b>$2</b> iyam l-leĥĥra}} ḫtal nhar $4 mĝa s-saĝa $5.',
 'rcnotefrom' => "hna taghirat mn  '''$2''' (tal '''$1''' maaroda).",
 'rclistfrom' => 'Werri ṫeġyiraṫ jdad badyen men $1',
 'rcshowhideminor' => '$1 Ṫeĝdilaṫ ma mohimminċ bezzaf',
@@ -1526,9 +1500,6 @@ daba ka ṫḫwwal l-[[$2]].',
 'allpagesto' => 'Werri ṣ-ṣefḫaṫ ḫṫal:',
 'allarticles' => 'Ṣ-Ṣefḫaṫ kolhom',
 'allinnamespace' => 'kol sfahi (f nitaq $1)',
-'allnotinnamespace' => 'kol sfahi (machi f nitaq $1)',
-'allpagesprev' => 'li sbq',
-'allpagesnext' => 'li jay',
 'allpagessubmit' => 'Sir',
 'allpagesprefix' => 'biyn sfahi katbda b:',
 
@@ -1736,7 +1707,6 @@ Imken lek ṫbeddel l-mosṫawa de l-ḫimaya dyal had ṣ-ṣefḫa bla ma i\'e
 'undeletebtn' => 'strjaa',
 'undeletelink' => 'Biyyen/Ĥebbi',
 'undeleteviewlink' => 'ċof',
-'undeletereset' => 'aawd regli',
 'undeleteinvert' => 'Qleb dakċi li ĝzelṫi',
 'undeletecomment' => 'sabab:',
 'undeletedrevisions' => '{{PLURAL:$1|vérsyon weḫda rejĝaṫ ki kaneṫ|$1 de lé-vérsyon rejĝo ki kano}}',
@@ -1797,20 +1767,16 @@ Imken lek ṫbeddel l-mosṫawa de l-ḫimaya dyal had ṣ-ṣefḫa bla ma i\'e
 
 # Block/unblock
 'blockip' => 'Bloké l-mosṫeĥdim',
-'blockip-title' => 'Bloki l-mosṫeḫdim',
 'blockip-legend' => 'Bloki l-mosṫeḫdim',
 'ipadressorusername' => 'Ĝonwan IP ola smiyṫ l-mosṫeĥdim',
 'ipbexpiry' => 'Ġayṫqada fe :',
 'ipbreason' => 'sabab:',
-'ipbreasonotherlist' => 'Sabab weḫdaĥor',
 'ipbcreateaccount' => 'Mneĝ ĥṫiraĝ ċi ḫsab',
 'ipbemailban' => 'ma ṫĥelli-ċ l-mosṫĥdim yṣifet ċi imayl',
 'ipbenableautoblock' => 'Bloki otomaṫikiyan l-ĝonwan IP l-leĥĥrani li sṫeĝmlo l-mosṫeḫdim o l-ĝanawin IP li qbel mennha li ymken lo yĝawed ysṫeĝmelhom.',
 'ipbsubmit' => 'Bloki had l-mosṫeĥdim',
 'ipbother' => 'weqṫ aĥor :',
 'ipboptions' => '2 swayeĝ:2 hours,nhar:1 day,3 iyam:3 days,ṣémana:1 week,2 ṣémanaṫ:2 weeks,ċher:1 month,3 ċhor:3 months,6 ċhor:6 months,ĝam:1 year,ma kayṫsalaċ:infinite',
-'ipbotheroption' => 'ḫwayej ĥrin',
-'ipbotherreason' => 'Sabab weḫdaĥor/zayed:',
 'ipbhidename' => 'Ĥebbi smiyṫ l-mosṫeĥdim men ṫ-ṫeġyiraṫ o men l-listaṫ',
 'ipbwatchuser' => 'Ṫbeĝ ṣ-ṣefḫaṫ dyal l-mosṫeḫdim o de n-niqaċ dyal had l-mosṫeĥdim',
 'ipb-change-block' => "Ĝawed bloki had l-mosṫeĥdim be had l-'iĝdadaṫ",
@@ -1904,7 +1870,6 @@ Imken hadċi y'eddi ṫeġyiraṫ hammin ila kaneṫ ċi ṣefḫa kayqrawha n-n
 * ṣefḫa dyal n-niqaċ ma ĥawyaċ msemmya bḫal bḫal, ola
 * brekṫi ĝla l-ĝalama li men l-ṫeḫṫ.",
 'movearticle' => 'Neqqel ṣ-ṣefḫa',
-'movenologin' => 'Mdékonnékti',
 'movenotallowed' => 'ma ĝndek-ċ l-heqq ṫneqqel ṣ-ṣfaḫi.',
 'movenotallowedfile' => 'ma ĝndekċ l-heqq ṫnqqel l-milffaṫ.',
 'cant-move-user-page' => "Ma ĝendekċ l-ḫeqq ṫneqqel ṣ-ṣefḫaṫ r-ra'isiyya.",
@@ -1916,9 +1881,6 @@ Imken hadċi y'eddi ṫeġyiraṫ hammin ila kaneṫ ċi ṣefḫa kayqrawha n-n
 'movepage-moved-redirect' => 'Ṫeḫwil men s-smiya l-qidima ṫeĥṫarĝaṫ.',
 'articleexists' => 'Fayeṫ kayna ṣefḫa be had s-smiyya, ola s-smiyya li ĥṫariṫi ma ṣalḫaċ.
 Ĝafak ĥṫar smiyya weḫdaḫra.',
-'talkexists' => "'''Ṣ-Ṣefḫa ṫṫneqqlaṫ be najaḫ, walayenni ṣ-ṣefḫa de l-modakara ma ṫṫneqqlaṫċ ḫiṫ fayeṫ kayna ċi weḫda be had l-ĝonwan.
-Ĝafak fuzyonéhom be yiddek.'''",
-'movedto' => 'ṫsemmaṫ',
 'movetalk' => 'Neqqel ṣ-ṣefḫa dyal n-niqaċ li mlaqya mĝah',
 'move-subpages' => 'Neqqel ṣ-ṣefḫaṫ l-ferĝiyya (ḫṫal $1)',
 'move-talk-subpages' => 'Neqqel ṣ-ṣefḫaṫ l-ferĝiya dyal ṣ-ṣefḫa de n-niqaċ (ḫṫal $1)',
@@ -2451,15 +2413,10 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
 'exif-urgency-high' => 'ĝalia ($1)',
 'exif-urgency-other' => 'l-awlawiyya lli ḫddadha l-mosṫĥdim ($1)',
 
-# External editor support
-'edit-externally' => 'Ṣayeb had l-fiċyé be ċi aplikasyon ĥarijiya',
-'edit-externally-help' => '(Ċof [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] ila ḫṫajiṫi meĝlomaṫ ĥrin)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kolċi',
 'namespacesall' => 'kolċi',
 'monthsall' => 'kolhom',
-'limitall' => 'kolċi',
 
 # Email address confirmation
 'confirmemail' => "konfirmasyon dyal l'email",
@@ -2471,7 +2428,6 @@ l-cod ṫqdar ṫkon ṫqaḍaṫ ṣalaḫyṫo.",
 'confirmemail_success' => "ṫ'kked ĝonwan l-email ṫaĝk.
 daba ymkn lik [[Special:UserLogin|ṫdĥol]] o-ṫsṫmṫĝ bl-wiki.",
 'confirmemail_loggedin' => "l'email dyalk tkonfirma daba",
-'confirmemail_error' => "khayn chi khata' mlli bghiti tsjl lkonfirmation dyalk",
 'confirmemail_subject' => "rissala ta'kid mn  {{SITENAME}}",
 'confirmemail_invalidated' => "lkonfirmasyon dyal l'email tlgha",
 'invalidateemail' => "lghi lkofirmasyon dyal l'email",
@@ -2618,7 +2574,6 @@ jrreb l-ĝṛḍ l-ĝadi.',
 
 # Special:ComparePages
 'comparepages' => 'qarn sfahi',
-'compare-selector' => 'qarn morajaat sfha',
 'compare-page1' => 'sfha 1',
 'compare-page2' => 'sfha 2',
 'compare-rev1' => 'morajaa 1',
index c757c5f..d281486 100644 (file)
@@ -52,7 +52,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'صفح_قديمه' ),
        'Blankpage'                 => array( 'صفحه_فارضيه' ),
        'Block'                     => array( 'بلوك', 'بلوك_IP', 'بلوك_يوزر' ),
-       'Blockme'                   => array( 'بلوك_لنفسى' ),
        'Booksources'               => array( 'مصادر_كتاب' ),
        'BrokenRedirects'           => array( 'تحويلات_مكسوره' ),
        'Categories'                => array( 'تصانيف' ),
@@ -62,7 +61,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ابتدى_حساب' ),
        'Deadendpages'              => array( 'صفح_نهايه_مسدوده' ),
        'DeletedContributions'      => array( 'مساهمات_ممسوحه' ),
-       'Disambiguations'           => array( 'توضيحات' ),
        'DoubleRedirects'           => array( 'تحويلات_دوبل' ),
        'Emailuser'                 => array( 'ابعت_ايميل_لليوزر' ),
        'Export'                    => array( 'تصدير' ),
@@ -244,8 +242,8 @@ $magicWords = array(
        'revisiontimestamp'         => array( '1', 'طابع_وقت_المراجعة', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'مستخدم_المراجعة', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'جمع:', 'PLURAL:' ),
-       'fullurl'                   => array( '0', 'مسار_كامل:', 'عنوان_كامل:', 'FULLURL:' ),
-       'fullurle'                  => array( '0', 'عنوان_كامل:', 'مسار_كامل:', 'FULLURLE:' ),
+       'fullurl'                   => array( '0', 'عنوان_كامل:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', 'مسار_كامل:', 'FULLURLE:' ),
        'lcfirst'                   => array( '0', 'عنوان_كبير:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'عنوان_صغير:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'صغير:', 'LC:' ),
@@ -310,12 +308,12 @@ $messages = array(
 'tog-hidepatrolled' => 'خبى التعديلات المتراجعه من اخر التعديلات',
 'tog-newpageshidepatrolled' => 'خبى الصفح المتراجعه من ليستة الصفح الجديده',
 'tog-extendwatchlist' => 'وسع ليستة المراقبه علشان تبين كل التعديلات, مش بس اجدد تعديلات',
-'tog-usenewrc' => 'استعÙ\85Ù\84 Ø§Ø¬Ø¯Ø¯ ØªØºÙ\8aÙ\8aرات Ù\85تÙ\82Ù\88Ù\8aÙ\87 (بÙ\8aحتاج JavaScript).',
+'tog-usenewrc' => 'جÙ\85ع  Ø§Ù\84تغÙ\8aÙ\8aرات  Ø­Ø³Ø¨ Ø§Ù\84صÙ\81Ø­Ù\87 Ù\81 Ø§Ø¬Ø¯Ø¯ Ø§Ù\84تغÙ\8aÙ\8aرات Ù\88 Ù\84ستة Ø§Ù\84صÙ\81Ø­ Ø§Ù\84Ù\84Ù\89 Ø¨Ø§Ø±Ø§Ù\82بÙ\87ا',
 'tog-numberheadings' => 'رقم العناوين اوتوماتيك',
-'tog-showtoolbar' => 'بÙ\8aÙ\86 Ø§Ù\84toolbar Ø¨ØªØ§Ø¹ Ø§Ù\84تعدÙ\8aÙ\84 (بÙ\8aحتاج JavaScript)',
-'tog-editondblclick' => 'عدل الصفح لما تدوس مرتين (بيحتاج JavaScript)',
+'tog-showtoolbar' => 'بÙ\8aÙ\86 Ø´Ø±Ù\8aØ· Ø§Ù\84تعدÙ\8aÙ\84',
+'tog-editondblclick' => 'عدل الصفح لما تدوس مرتين',
 'tog-editsection' => 'اسمح بـ تعديل الاجزاء عن طريق لينكات [تعديل]',
-'tog-editsectiononrightclick' => 'اسمح بـ تعديل الاجزاء لما تعمل right-click بـ الماوس على عناوين الاجزاء (بيحتاج JavaScript)',
+'tog-editsectiononrightclick' => 'اسمح بـ تعديل الاجزاء لما تعمل كليك يمين بـالماوس على عناوين الاجزاء',
 'tog-showtoc' => 'بين جدول المحتويات (بتاع الصفح اللى فيها اكتر من 3 عناوين)',
 'tog-rememberpassword' => ' (لمدة   $1 {{PLURAL:$1|يوم|يوم}})خليك فاكر دخولى على الكمبيوتر دا',
 'tog-watchcreations' => 'زوّد الصفح اللى ابتديتها على ليستة الصفح اللى باراقبها.',
@@ -325,7 +323,6 @@ $messages = array(
 'tog-minordefault' => 'علم على كل التعديلات كإنها صغيره فى الاساس',
 'tog-previewontop' => 'بين الپروڤه قبل علبة التعديل',
 'tog-previewonfirst' => 'بين البروفة عند أول تعديل',
-'tog-nocache' => 'عطّل تخزين البراوزر للصفحه',
 'tog-enotifwatchlistpages' => '
 ابعت لى ايميل لما تتغير صفحه فى لستة الصفحات اللى باراقبها',
 'tog-enotifusertalkpages' => 'ابعتلى ايميل لما صفحة مناقشتى تتغيير',
@@ -334,7 +331,7 @@ $messages = array(
 'tog-shownumberswatching' => 'بين عدد اليوزرز المراقبين',
 'tog-oldsig' => 'الامضا دلوقتى:',
 'tog-fancysig' => 'امضا خام (من غير لينك أوتوماتيك)',
-'tog-uselivepreview' => 'استخدم البروفة السريعة (جافاسكريبت) (تجريبي)',
+'tog-uselivepreview' => 'استخدم البروفه السريعه (تجريبي)',
 'tog-forceeditsummary' => 'نبهنى عند تدخيل ملخص للتعديل  فاضي',
 'tog-watchlisthideown' => 'خبى التعديلات بتاعتى من لستة المراقبة',
 'tog-watchlisthidebots' => 'خبى التعديلات بتاعة البوت من لستة المراقبة',
@@ -348,10 +345,11 @@ $messages = array(
 'tog-noconvertlink' => 'عطل تحويل عناوين الوصلات',
 'tog-norollbackdiff' => 'الغى الاختلافات بعد ما تعمل الرول باك',
 'tog-useeditwarning' => 'حذّرنى لما اسيب صفحة تعديل فيها تغييرات مش متسييڤه',
+'tog-prefershttps' => 'إستخدم  وصله متأمنه بعد الدخول',
 
 'underline-always' => 'دايما',
 'underline-never' => 'ابدا',
-'underline-default' => 'على حسب إعدادات المتصفح',
+'underline-default' => ' حسب  المظهر و لا البراوزر',
 
 # Font style option in Special:Preferences
 'editfont-style' => ':الفونت بتاع مساحة التعديل',
@@ -411,6 +409,18 @@ $messages = array(
 'oct' => 'اكتوبر',
 'nov' => 'نوفمبر',
 'dec' => 'ديسمبر',
+'january-date' => 'يناير $1',
+'february-date' => 'فبراير $1',
+'march-date' => 'مارس $1',
+'april-date' => 'ابريل $1',
+'may-date' => 'مايو $1',
+'june-date' => 'يونيه $1',
+'july-date' => 'يوليه $1',
+'august-date' => 'اغسطس $1',
+'september-date' => 'سبتمبر $1',
+'october-date' => 'اكتوبر $1',
+'november-date' => 'نوفمبر $1',
+'december-date' => 'ديسمبر $1',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|تصنيف|تصانيف}}',
@@ -429,12 +439,14 @@ $messages = array(
 'listingcontinuesabbrev' => 'متابعه',
 'index-category' => 'صفحات متفهرسه',
 'noindex-category' => 'صفحات مش متفهرسه',
+'broken-file-category' => 'صفحات  فيها روابط ملفات مش شغاله',
 
 'about' => 'عن',
 'article' => 'صفحة محتوى',
 'newwindow' => '(بتفتح ويندو جديده)',
 'cancel' => 'كانسل',
 'moredotdotdot' => 'اكتر...',
+'morenotlisted' => 'اللسته دى  مش كامله.',
 'mypage' => 'صفحه',
 'mytalk' => 'كلام',
 'anontalk' => 'المناقشة مع عنوان الأيبى دا',
@@ -447,7 +459,6 @@ $messages = array(
 'qbedit' => 'عدل',
 'qbpageoptions' => ' الصفحه دى',
 'qbmyoptions' => 'صفحاتى',
-'qbspecialpages' => 'الصفحات الخاصة',
 'faq' => 'اسئله بتتسئل كتير',
 'faqpage' => 'Project:اسئله بتتسئل كتير',
 
@@ -458,6 +469,7 @@ $messages = array(
 'vector-action-protect' => 'حمايه',
 'vector-action-undelete' => 'الغى المسح',
 'vector-action-unprotect' => 'غير الحمايه',
+'vector-simplesearch-preference' => ' تشغيل شريط التدوير  المبسط (لمظهر فيكتور بس)',
 'vector-view-create' => 'اعمل',
 'vector-view-edit' => 'تعديل',
 'vector-view-history' => 'استعراض التاريخ',
@@ -467,6 +479,7 @@ $messages = array(
 'namespaces' => 'النطاقات',
 'variants' => 'المتغيرات',
 
+'navigation-heading' => 'لستة التصفح',
 'errorpagetitle' => 'غلطه',
 'returnto' => 'ارجع ل $1.',
 'tagline' => 'من ويكيبيديا, الموسوعه الحره',
@@ -481,13 +494,16 @@ $messages = array(
 'printableversion' => 'نسخه للطبع',
 'permalink' => 'لينك دايم',
 'print' => 'اطبع',
+'view' => 'شوف',
 'edit' => 'تعديل',
 'create' => 'إبتدى',
 'editthispage' => 'عدل الصفحه دى',
 'create-this-page' => 'أنشيء الصفحه دى',
 'delete' => 'مسح',
 'deletethispage' => 'امسح الصفحه دى',
+'undeletethispage' => 'استرجاع الصفحه دى',
 'undelete_short' => 'استرجاع {{PLURAL:$1|تعديل واحد|تعديلان|$1 تعديلات|$1 تعديل|$1 تعديلا}}',
+'viewdeleted_short' => '{{PLURAL:$1|تعديل واحد ملغى|تعديلين ملغيين|$1 تعديلات ملغية|$1 تعديل ملغى|$1 تعديل ملغى}}',
 'protect' => 'حمايه',
 'protect_change' => 'غيّر',
 'protectthispage' => 'احمى الصفحه دى',
@@ -532,7 +548,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).
 'aboutsite' => 'عن {{SITENAME}}',
 'aboutpage' => 'Project:معلومات عن',
-'copyright' => 'اÙ\84Ù\85حتÙ\88Ù\89 Ù\85Ù\88جÙ\88د ØªØ­Øª $1.',
+'copyright' => 'اÙ\84Ù\83Ù\84اÙ\85 Ù\88 Ø§Ù\84صÙ\88ر Ù\85Ù\86Ø´Ù\88رÙ\8aÙ\86 Ø­Ø³Ø¨   $1 Ù\85اعدا Ø§Ù\84حاÙ\84ات Ø¥Ù\84Ù\84Ù\89 Ù\85Ù\83تÙ\88ب Ø¹Ù\86دÙ\87ا Ø­Ø§Ø¬Ù\87 ØªØ§Ù\86Ù\8aÙ\87.',
 'copyrightpage' => '{{ns:project}}:حقوق النسخ',
 'currentevents' => 'الاخبار دلوقتى',
 'currentevents-url' => 'Project:الاخبار دلوقتى',
@@ -558,7 +574,11 @@ $1',
 
 'ok' => 'موافئ',
 'retrievedfrom' => 'اتجابت من "$1"',
-'youhavenewmessages' => 'عندك $1 ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|عندك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|عندك}} $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).',
+'youhavenewmessagesmanyusers' => 'عندك $1 من يوزرات كتير  ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|رساله جديده|999=رسايل جديده}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
 'youhavenewmessagesmulti' => 'عندك ميسيدج جديدة فى $1',
 'editsection' => 'تعديل',
 'editold' => 'تعديل',
@@ -569,6 +589,8 @@ $1',
 'toc' => 'المحتويات',
 'showtoc' => 'عرض',
 'hidetoc' => 'تخبية',
+'collapsible-collapse' => 'خبى',
+'collapsible-expand' => 'اتوسع',
 'thisisdeleted' => 'عرض او استرجاع $1؟',
 'viewdeleted' => 'عرض $1؟',
 'restorelink' => '{{PLURAL:$1|تعديل واحد ملغي|تعديلين ملغيين|$1 تعديلات ملغية|$1 تعديل ملغي|$1 تعديل ملغي}}',
@@ -580,6 +602,8 @@ $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' => 'صفحه',
@@ -606,6 +630,9 @@ $1',
 # General errors
 'error' => 'غلطه',
 'databaseerror' => 'غلط فى قاعدة البيانات (database)',
+'databaseerror-query' => ' إستفسار : $1',
+'databaseerror-function' => 'وظيفه : $1',
+'databaseerror-error' => 'غلط: $1',
 'laggedslavemode' => "'''تحذير:''' الصفحه يمكن ما يكونش فيها تحديثات جديده.",
 'readonly' => 'قاعدة البيانات (الـ database) مقفوله',
 'enterlockreason' => 'اكتب سبب القفل, و قول امتى تقريبا ح يتلغى القفل',
@@ -639,20 +666,20 @@ $1',
 'badtitle' => 'عنوان غلط',
 'badtitletext' => 'العنوان المطلوب للصفحه مش موجود او فاضى, او اللينك بين اللغات او بين المشاريع غلط.
 ممكن يكون موجود رمز او اكتر ما ينفع ش يستخدم فى العناوين.',
-'perfcached' => 'البيانات (الـ data) دى معمول لها كاش (cache) و ممكن ما تكونش متحدثه. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'البيانات (الـ data) دى معمول لها كاش (cache), و اخر تحديث ليها كان فى $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'البيانات  دى معمول لها كاش (cache) و ممكن ما تكونش متحدثه. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
+'perfcachedts' => 'البيانات  دى معمول لها كاش , و اخر تحديث ليها كان فى $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'التحديثات بتاعة الصفحه دى متعطله دلوقتى.
 البيانات (الـ data) اللى هنا مش ح تتحدث فى الوقت الحاضر.',
-'wrong_wfQuery_params' => 'محددات غلط فى wfQuery()<br />
-الخاصّيه: $1<br />
-الاستعلام: $2',
 'viewsource' => 'عرض المصدر',
 'actionthrottled' => 'العمليه دى اتزنقت',
 'actionthrottledtext' => 'علشان نمنع ال سبام ،أنت ممنوع تعمل  الفعل دا عدد كبير من المرات فى فترة زمنية قصيرة، و انت ا تجاوزت  الحد دا . لو سمحت تحاول مرة ثانية بعد دقائق.',
-'protectedpagetext' => 'الصفحة دى اتقفلت فى وش التعديل.',
+'protectedpagetext' => 'الصفحة دى اتحمت من التعديل.',
 'viewsourcetext' => 'ممكن تشوف وتنسخ مصدر  الصفحه دى:',
-'protectedinterface' => 'الصفحة دى هى اللى بتوفر نص الواجهة بتاعة البرنامج،وهى مقفولة لمنع التخريب.',
-'editinginterface' => "'''تحذير''': أنت بتعدل صفحة بتستخدم فى الواجهة النصية  بتاعة البرنامج. التغييرات فى الصفحة دى ها تأثر على مظهر واجهة اليوزر لليوزرز التانيين. للترجمات، لو سمحت استخدم [//translatewiki.net/wiki/Main_Page?setlang=ar بيتاويكى]، مشروع ترجمة الميدياويكى.",
+'protectedinterface' => 'الصفحة دى هى اللى بتوفر نص الواجهة بتاعة البرنامج،وهى مقفولة لمنع التخريب.
+علشان إضافة أو تغيير الترجمات لجميع مشاريع الويكي،  لو سمحت روح على [//translatewiki.net/ translatewiki.net]، مشروع ترجمة ميدياويكى',
+'editinginterface' => "'''تحذير''': أنت بتعدل صفحة بتستخدم فى الواجهة النصية  بتاعة البرنامج. 
+التغييرات فى الصفحة دى ها تأثر على مظهر واجهة اليوزر لليوزرز التانيين. 
+علشان إضافة أو تغيير الترجمات لجميع مشاريع الويكي،  لو سمحت روح على [//translatewiki.net/ translatewiki.net]، مشروع ترجمة ميدياويكى",
 'cascadeprotected' => 'الصفحة دى محمية من التعديل، بسبب انها مدمجة فى {{PLURAL:$1|الصفحة|الصفحات}} دي، اللى مستعمل فيها خاصية "حماية الصفحات المدمجة" :
 $2',
 'namespaceprotected' => "ما عندكش صلاحية تعديل الصفحات  اللى فى نطاق '''$1'''.",
@@ -667,9 +694,15 @@ $2',
 # Login and logout pages
 'logouttext' => "'''أنت دلوقتى مش مسجل دخولك.'''
 
-تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو <span class='plainlinks'>[$1 الدخول مرة تانيه]</span> بنفس الاسم أو باسم تاني.
-ممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية فى المتصفح بتاعك.",
+تقدر تكمل استعمال {{SITENAME}} على انك مجهول، أو [[Special:UserLogin|الدخول مرة تانيه]] بنفس الاسم أو باسم تانى.
+
+ممكن تشوف بعض الصفحات  كأنك متسجل ، و دا علشان استعمال الصفحات المتخبية ف البراوزر بتاعك.",
+'welcomeuser' => 'أهلاً بيك يا $1!',
+'welcomecreation-msg' => 'اتفتحلك حساب.
+لو تحب ممكن تغير [[Special:Preferences|تفضيلاتك ف {{SITENAME}}]].',
 'yourname' => 'اليوزرنيم:',
+'userlogin-yourname' => 'اسم اليوزر',
+'createacct-another-username-ph' => 'إكتب اسم يوزر:',
 'yourpassword' => 'الباسوورد:',
 'yourpasswordagain' => 'اكتب الباسورد تاني:',
 'remembermypassword' => ' (لمدة   $1 {{PLURAL:$1|يوم|يوم}})خليك فاكر دخولى على الكمبيوتر دا',
@@ -689,7 +722,7 @@ $2',
 'gotaccount' => "عندك حساب؟ '''$1'''.",
 'gotaccountlink' => 'دخول',
 'userlogin-resetlink' => 'نسيت تفاصيل الدخول؟',
-'createaccountmail' => 'بÙ\80 Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84',
+'createaccountmail' => 'استخدÙ\85 Ø¨Ø§Ø³Ù\88رد Ù\85ؤÙ\82تÙ\87 Ù\88 Ø¥Ø¨Ø¹ØªÙ\87ا Ø¹ Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84 Ø§Ù\84Ù\85حدد Ø¯Ù\87',
 'createaccountreason' => 'السبب:',
 'badretype' => 'كلمتين السر اللى  كتبتهم مش  زى بعضهم',
 'userexists' => 'اسم اليوزر اللى كتبته بيستعمله يوزر غيرك.
@@ -718,7 +751,7 @@ $2',
 من فضلك حاول تانى.',
 'passwordtooshort' => 'لازم تكون على الاقل{{PLURAL:$1|1 حرف|$1 حروف}}.',
 'password-name-match' => 'الباسورد بتاعتك لازم تكون مختلفه عن اسم اليوزر بتاعك.',
-'mailmypassword' => 'ابعتلى كلمة سر جديدة',
+'mailmypassword' => 'ابعتلى باسوورد جديده',
 'passwordremindertitle' => 'كلمة سر مؤقته جديده ل {{SITENAME}}',
 'passwordremindertext' => 'فيه واحد(غالبا انت، من عنوان الاى بى $1)
 طلب باسورد جديده لـ{{SITENAME}} ($4).
@@ -739,7 +772,7 @@ $2',
 'mailerror' => 'غلط فى بعتان الايميل : $1',
 'acct_creation_throttle_hit' => 'الناس اللى دخلت ع الويكى دا باستعمال عنوان الاى بى بتاعك فتحو {{PLURAL:$1|1 حساب|$1 حساب}} ف اليوم اللى فات دا, يعنى وصلو للحد الاقصى المسموح بيه فى الفترة الزمنيه المحدده..
 و عشان كدا, الزوار اللى بيدخلو بعنوان الاى بى دا مش مسموح لهم يفتحو حسابات اكتر فى الوقت الحالى .',
-'emailauthenticated' => 'اتأÙ\83دÙ\86ا Ù\85Ù\86 Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84 Ø¨ØªØ§Ø¹Ù\83 Ù\81Ù\89 $2 الساعة $3.',
+'emailauthenticated' => 'اتأÙ\83دÙ\86ا Ù\85Ù\86 Ø§Ù\84اÙ\8aÙ\85Ù\8aÙ\84 Ø¨ØªØ§Ø¹Ù\83 Ù\8aÙ\88Ù\85 $2 الساعة $3.',
 'emailnotauthenticated' => 'لسة ما اتكدناش من الايميل بتاعك.
 مش ح يتبعتلك اى  ايميلات بخصوص الميزات دي.',
 'noemailprefs' => 'علشان الخصايص دى تشتغل لازم تحددلك عنوان ايميل.',
@@ -753,12 +786,12 @@ $2',
 
 لو سمحت تتجاهل الرسالة دى اذا الحساب دا اتفتحلك بالغلط.',
 'usernamehasherror' => 'اسم اليوزر مش ممكن يكون فيه حروف هاش',
-'login-throttled' => 'انت عملت  محاولات لوجين كتيره حديثة على الحساب ده.
-من فضلك استنى قبل المحاولة مرة تانيه.',
+'login-throttled' => 'انت عملت  محاولات لوجين كتيره  ع الحساب ده.
+من فضلك استنى $1 قبل المحاولة مرة تانيه.',
 'loginlanguagelabel' => 'اللغة: $1',
 
 # Change password dialog
-'resetpass' => 'غيّر الباسورد',
+'changepassword' => 'غير الباسورد',
 'resetpass_announce' => 'اتسجل دخولك دلوقتى بالكود اللى اتبعتلك فى الايميل. علشان تخلص عملية الدخول ،لازم تعملك باسورد جديدة هنا:',
 'resetpass_text' => '<!-- أضف نصا هنا -->',
 'resetpass_header' => 'غيّر الباسورد بتاعة الحساب',
@@ -766,7 +799,7 @@ $2',
 'newpassword' => 'الباسورد جديدة:',
 'retypenew' => 'اكتب الباسورد الجديده تانى:',
 'resetpass_submit' => 'اظبط الباسورد و ادخل',
-'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح! دلوقتى  بنسجل دخولك...',
+'changepassword-success' => 'الباسورد بتاعتك اتغيرت بنجاح!',
 'resetpass_forbidden' => 'مش ممكن تغيير الباسورد',
 'resetpass-no-info' => 'لازم تسجل دخولك علشان تقدر توصل للصفحة دى على طول.',
 'resetpass-submit-loggedin' => 'غير الباسورد',
@@ -855,7 +888,7 @@ $2',
 'accmailtitle' => ' كلمة السر اتبعتت .',
 'accmailtext' => "الباسورد العشوائيه اللى اتعملت لـ[[User talk:$1|$1]]  اتبعتت لـ $2.
 
-الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''  وقت تسجيل الدخول.",
+الباسورد بتاعة الحساب الجديد دا ممكن تتغير فى صفحة ''[[Special:ChangePassword|تغيير الباسورد]]''   بعد  تسجيل الدخول.",
 'newarticle' => '(جديد)',
 'newarticletext' => "انت وصلت لصفحه مابتدتش لسه.
 علشان  تبتدى الصفحة ابتدى الكتابه فى الصندوق اللى تحت.
@@ -924,12 +957,12 @@ $2',
 'copyrightwarning2' => "لو سمحت تعمل حسابك ان كل مشاركاتك فى {{SITENAME}} ممكن المشاركين التانيين يعدلوها،يغيروها، او يمسحوها خالص. لو مانتش حابب ان كتاباتك تتعدل و تتغير بالشكل دا، فياريت ما تنشرهاش هنا.<br />.
 و كمان انت بتدينا كلمة شرف  انك صاحب الكتابات دي، او انك نقلتها من مكان مش خاضع لحقوق النشر .(شوف التفاصيل فى $1 ).
 '''لو سمحت ما تحطش هنا اى نص خاضع لحقوق النشر من غير تصريح!'''.",
-'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو $2 كيلوبايت.
+'longpageerror' => "'''غلط: النص اللى دخلته حجمه $1 كيلوبايت، ودا أكبر من الحد الأقصى و اللى هو {{PLURAL:$2|واحد كيلوبايت|$2 كيلوبايت}}.
 مش ممكن يتحفظ.'''",
-'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلوقاي.
+'readonlywarning' => "'''تحذير: قاعدة البيانات اتقفلت للصيانة، و علشان كدا انت مش ح تقدر تحفظ التعديلات اللى عملتها دلواتى.
 لو حبيت ممكن  تنسخ النص وتحفظه فى ملف نصى علشان تستعمله بعدين.'''
 
-الإدارى اللى أغلقها أعطى هذا التفسير: $1",
+الإدارى اللى قفلها كتب السبب دا $1",
 'protectedpagewarning' => "'''تحذير:الصفحة دى اتقفلت بطريقه تخلى اليوزرات السيسوبات هما بس اللى يقدرو يعدلوها.'''
 اخر سجل محطوط تحت علشان المراجعه:",
 'semiprotectedpagewarning' => "'''ملاحظه:''' الصفحه دى اتقفلت بطريقه تخلّى اليوزرات المتسجلين بس هما اللى يقدرو يعدّلوها.
@@ -949,7 +982,7 @@ $2',
 'nocreate-loggedin' => 'انت ما عندك ش صلاحية تعمل صفحات جديدة.',
 'sectioneditnotsupported-title' => 'تعديل الأقسام مش مدعوم',
 'sectioneditnotsupported-text' => 'تعديل الاقسام مش مدعوم فى الصفحه دى',
-'permissionserrors' => 'غلطات فى السماح',
+'permissionserrors' => 'غلطه ف السماح',
 'permissionserrorstext' => 'ما عندك ش صلاحية تعمل كدا،{{PLURAL:$1|علشان|علشان}}:',
 'permissionserrorstext-withaction' => 'أنت ما عندكش الصلاحيات علشان $2، لل{{PLURAL:$1|سبب|أسباب}} ده:',
 'recreate-moveddeleted-warn' => "'''تحذير: انت بتعيد انشاء صفحه اتمسحت قبل كده.'''
@@ -962,11 +995,20 @@ $2',
 يظهر انها إتمسحت.',
 'edit-conflict' => 'تضارب تحريرى.',
 'edit-no-change' => 'تعديلك تم تجاهله، لأن ما حصلش أى تعديل للنص.',
+'postedit-confirmation' => 'تعديلك  إتسييڤ.',
 'edit-already-exists' => 'لم يمكن إنشاء صفحة جديدة.
 هى موجودة بالفعل.',
+'defaultmessagetext' => 'النص الاوتوماتيكى',
+'content-failed-to-parse' => 'فشل ف تحليل $2 محتوى لـ $1 موديل: $3',
+'invalid-content-data' => 'بيانات المحتوى غلط',
 'editwarning-warning' => 'لو سيبت الصفحه دى ممكن يخلّيك تضيّع اى تغييرات عملتها.
 لو انت مسجّل دخولك, ممكن تعطّل التحذير ده من الجزء بتاع "تعديل" فى تفضيلاتك.',
 
+# Content models
+'content-model-wikitext' => 'ويكى تكست',
+'content-model-text' => 'كلام عادى',
+'content-model-javascript' => 'جاڤاسكربت',
+
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'تحذير: الصفحه دى فيهااستدعاءات دالة محلل كثيرة مكلفة.
 
@@ -1029,7 +1071,7 @@ $2',
 حاول [[Special:Search|التدوير فى الويكى]] عن صفحات جديدة ليها صلة.',
 
 # Revision deletion
-'rev-deleted-comment' => '(التعليق اتشال)',
+'rev-deleted-comment' => '( ملخص التعديل اتمسح)',
 'rev-deleted-user' => '(اسم اليوزر اتشال)',
 'rev-deleted-event' => '(السجل إتشال)',
 'rev-deleted-user-contribs' => '[اسم اليوزر أو الآى بى اتشال - التعديل مخفى من المساهمات]',
@@ -1060,10 +1102,6 @@ $2',
 'revisiondelete' => 'امسح/الغى المسح بتاع المراجعات',
 'revdelete-nooldid-title' => 'مراجعة هدف مش صح',
 'revdelete-nooldid-text' => 'أنت ياإما ما حددتش مراجعة (مراجعات) معينة كهدف للفعل دا، المراجعة المحددة مش موجودة، أو أنك بتحاول تخبى المراجعة الحالية.',
-'revdelete-nologtype-title' => 'انت ما اديتش نوع سجل',
-'revdelete-nologtype-text' => 'انت ما اديتش نوع سجل عشان تعمل العمليه دى عليه',
-'revdelete-nologid-title' => 'مدخلة السجل مش صح',
-'revdelete-nologid-text' => 'انتا يا إما ما حددتش حدث سجل مستهدف عشان تعمل العمليه دى يا المدخله اللى انتا حددتها مش موجوده.',
 'revdelete-no-file' => 'الملف المتحدد مالوش وجود',
 'revdelete-show-file-confirm' => 'انتا متأكد من انك عايز تشوف المراجعه الممسوحه بتاعة الملف "<nowiki>$1</nowiki>" من  $2 لحد $3?',
 'revdelete-show-file-submit' => 'ايوه',
@@ -1096,8 +1134,6 @@ $1",
 'logdelete-failure' => "'''مانفعش اعادة ظبط عرض السجل:'''
 $1",
 'revdel-restore' => 'تغيير الشوف',
-'revdel-restore-deleted' => 'مراجعات ممسوحه',
-'revdel-restore-visible' => 'مراجعات ممكن تتشاف',
 'pagehist' => 'تاريخ الصفحة',
 'deletedhist' => 'التاريخ الممسوح',
 'revdelete-hide-current' => 'حصل غلط فى تخبية البند اللى بتاريخ $2, الساعه$1: دى هى النسخه بتاعة دلوقتى.
@@ -1169,12 +1205,8 @@ $1",
 # 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}} اللى قبل كده',
@@ -1183,10 +1215,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|النتيجه|النتايج}}  $1 اللى بعد كدا.',
 'shown-title' => 'اعرض $1 {{PLURAL:$1|نتيجه|نتايج}} فى كل صفحه',
 'viewprevnext' => 'شوف ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'اختيارات التدوير',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|استعرض الصفحات اللى بتبتدى بالبريفيكس دا]]',
+'searchmenu-exists' => "'''فيه صفحه اسمها \"[[:\$1]]\" على الويكى ده.''' {{PLURAL:\$2|0=|بص كمان على نتايج البحث التانيه.}}",
+'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!''' {{PLURAL:\$2|0=|بص كمان على الصفحه اللى لقيناها من بحثك.|بص كمان على نتايج البحث اللى لقيناها.}}",
 'searchprofile-articles' => 'صفحات محتوى',
 'searchprofile-project' => 'صفحات  المساعده و المشروع',
 'searchprofile-images' => 'مالتيميديا',
@@ -1207,21 +1237,16 @@ $1",
 'search-interwiki-default' => '$1 نتيجة:',
 'search-interwiki-more' => '(اأكتر)',
 'search-relatedarticle' => 'مرتبطه',
-'mwsuggest-disable' => 'تعطيل اقتراحات أجاكس',
 'searcheverything-enable' => 'دور فى النطاقات كلها.',
 'searchrelated' => 'مرتبطه',
 'searchall' => 'الكل',
 'showingresults' => "القائمة دى بتعرض {{PLURAL:$1|'''1''' نتيجة|'''$1''' نتيجة}} من أول  رقم '''$2'''.",
 'showingresultsnum' => "معروض تحت {{PLURAL:$3|'''نتيجة واحدة'''|'''$3''' نتيجة}} من أول من رقم'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|النتيجه '''$1''' من'''$3'''|النتايج '''$1 - $2''' من'''$3'''}} ل'''$4'''",
-'nonefound' => "'''ملاحظة''': فى شوية اسامى مساحات بس بيتدور فيها اوتوماتيكى.
-حاول تبتدى تدويرك بـ ''all:'' علشان تدور فى المحتوى كله (مع صفح المناقشه, القوالب, الخ), او استعمل اسم المساحه المطلوب اللى تدور فيه.",
 'search-nonefound' => 'لا توجد نتائج تطابق الاستعلام.',
-'powersearch' => 'تدوير متفصل',
 'powersearch-legend' => 'تدوير متقدم',
 'powersearch-ns' => 'تدوير فى اسم المساحه:',
 'powersearch-redir' => 'لستة التحويلات',
-'powersearch-field' => 'تدوير على',
 'powersearch-togglelabel' => 'التشييك:',
 'powersearch-toggleall' => 'الكل',
 'powersearch-togglenone' => 'و لا حاجه',
@@ -1234,7 +1259,6 @@ $1",
 'preferences' => 'تفضيلات',
 'mypreferences' => 'تفضيلاتى',
 'prefs-edits' => 'عدد التعديلات:',
-'changepassword' => 'غير الباسورد',
 'prefs-skin' => 'الوش',
 'skin-preview' => 'بروفه',
 'datedefault' => 'مافبش تفضيل',
@@ -1254,13 +1278,11 @@ $1",
 'prefs-email' => 'اختيارات الايميل',
 'prefs-rendering' => 'المنظر',
 'saveprefs' => 'حفظ',
-'resetprefs' => 'امسح التغييرات اللى مش المحفوظة',
 'restoreprefs' => 'استرجع التظبيطات الاصليه',
 'prefs-editing' => 'تعديل',
 'rows' => 'صفوف:',
 'columns' => 'عمدان:',
 'searchresultshead' => 'تدوير',
-'resultsperpage' => 'عدد النتايج فى الصفحة:',
 'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">لينك البذرة</a>:',
 'stub-threshold-disabled' => 'معطل',
 'recentchangesdays' => 'عدد الأيام المعروضة فى اخرالتغييرات:',
@@ -1270,9 +1292,8 @@ $1",
 'savedprefs' => 'التفضيلات بتاعتك اتحفظت.',
 'timezonelegend' => 'منطقة التوقيت',
 'localtime' => 'التوقيت المحلى',
-'timezoneuseserverdefault' => 'استخدÙ\85 Ø§Ù\81تراض Ø§Ù\84سرÙ\81ر',
+'timezoneuseserverdefault' => 'استخدÙ\85 Ø§Ù\84Ù\88Ù\8aÙ\83Ù\89 Ø§Ù\84اÙ\81تراضÙ\89 ($1)',
 'timezoneuseoffset' => 'تانى (حدد الفرق)',
-'timezoneoffset' => 'فرق¹',
 'servertime' => 'وقت السيرفر',
 'guesstimezone' => 'دخل التوقيت من البراوزر',
 'timezoneregion-africa' => 'افريقيا',
@@ -1297,9 +1318,9 @@ $1",
 ماينفعش الرجوع فى التعديل دا.',
 'prefs-emailconfirm-label' => 'التأكد من الايميل:',
 'youremail' => 'الايميل:',
-'username' => 'اسم اليوزر:',
-'uid' => 'رقم اليوزر:',
-'prefs-memberingroups' => 'عضو فى {{PLURAL:$1|مجموعة|مجموعة}}:',
+'username' => '{{GENDER:$1|اسم اليوزر}}:',
+'uid' => 'رقم {{GENDER:$1|اليوزر}}:',
+'prefs-memberingroups' => '{{GENDER:$2|عضو}} فى {{PLURAL:$1|مجموعه|مجموعات}}:',
 'prefs-registration' => 'وقت التسجيل:',
 'yourrealname' => 'الاسم الحقيقى:',
 'yourlanguage' => 'اللغة:',
@@ -1345,7 +1366,7 @@ $1",
 'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
 'userrights-user-editname' => 'دخل اسم يوزر:',
 'editusergroup' => 'تعديل مجموعات اليوزر',
-'editinguser' => "تغيير حقوق االيوزر بتاعة اليوزر'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "تغيير حقوق اليوزر بتاعه اليوزر '''[[User:$1|$1]]''' $2",
 'userrights-editusergroup' => 'تعديل مجموعات اليوزر',
 'saveusergroups' => 'حفظ مجموعات اليوزر',
 'userrights-groupsmember' => 'عضو في:',
@@ -1500,8 +1521,7 @@ $1",
 'recentchanges-label-minor' => 'ده تعديل صغير',
 'recentchanges-label-bot' => 'التعديل ده عمله بوت',
 'recentchanges-label-unpatrolled' => 'التعديل ده مإتراجعش لسه',
-'recentchanges-legend-newpage' => '$1 - صفحه جديده',
-'rcnote' => "فيه تحت {{PLURAL:$1|'''1''' تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|يوم|'''$2''' يوم}}، بدءا من $5، $4.",
+'recentchanges-legend-newpage' => '(بص كمان على [[Special:NewPages|قايمه الصفحات الجديده]])',
 'rcnotefrom' => "دى التعديلات من '''$2''' (ل '''$1''' معروضه).",
 'rclistfrom' => 'اظهر التعديلات بدايه من $1',
 'rcshowhideminor' => '$1 تعديلات صغيره',
@@ -1522,7 +1542,7 @@ $1",
 'rc_categories' => 'حصر لتصنيفات (مفصولة برمز "|")',
 'rc_categories_any' => 'أى',
 'newsectionsummary' => '/* $1 */ قسم جديد',
-'rc-enhanced-expand' => 'عرض التفاصيل (يتطلب جافاسكريبت)',
+'rc-enhanced-expand' => '[اعرض التفاصيل]',
 'rc-enhanced-hide' => 'إخفاء التفاصيل',
 
 # Recent changes linked
@@ -1576,8 +1596,8 @@ $1",
 'filetype-bad-ie-mime' => ' المف دا ماتحملش لأن الإنترنت إكسبلورر ح يكتشفه ك"$1", وهوه نوع ملف ممنوع ومن المحتمل انه يكون خطر.',
 'filetype-unwanted-type' => "'''\".\$1\"''' هو مش نوع ملف مرغوب فيه.
 {{PLURAL:\$3|نوع الملف المفضل هو|أنواع الملفات المفضلة هي}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' مش نوع ملف مسموح بيه.
-{{PLURAL:\$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|مش نوع ملف مسموح بيه|مش انواع ملفات مسموح بيها}}.
+{{PLURAL:$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} $2.',
 'filetype-missing' => 'الملف مالوش امتدا(مثلا ".jpg").',
 'file-too-large' => 'الملف كان كبير جدا.',
 'filetype-banned' => 'نوع الملف ده ممنوع.',
@@ -1888,10 +1908,8 @@ PICT # misc.
 'protectedpages' => 'صفحات محميه',
 'protectedpages-indef' => 'عمليات الحماية اللى مش متحددة بس',
 'protectedpages-cascade' => 'الحماية المتضمنة بس',
-'protectedpagestext' => 'الصفحات دى محمية من النقل أو التعديل',
 'protectedpagesempty' => 'مافيش  صفحات محمية دلوقتى  على حسب المحددات دي.',
 'protectedtitles' => 'عناوين محمية',
-'protectedtitlestext' => 'العناوين دى محمية ضد الإنشاء',
 'protectedtitlesempty' => 'مافيش عناوين محمية دلوقتى على حسب المحددات دي.',
 'listusers' => 'لستة الأعضاء',
 'listusers-editsonly' => 'عرض اليوزرز اللى قاموا بتعديلات فقط',
@@ -1940,9 +1958,6 @@ PICT # misc.
 'allpagesto' => 'اعرض الصفحات اللى بتنتهى عند:',
 'allarticles' => 'كل المقالات',
 'allinnamespace' => 'كل الصفحات (فى نطاق $1)',
-'allnotinnamespace' => 'كل الصفحات (مش فى نطاق $1)',
-'allpagesprev' => 'اللى فلت',
-'allpagesnext' => 'اللى بعد كده',
 'allpagessubmit' => 'روح',
 'allpagesprefix' => 'عرض الصفحات  اللى تبتدى بـ:',
 'allpagesbadtitle' => 'العنوان االلى اديته للصفحة مش نافع أو فيه لغات تانية أو بريفيكس إنترويكي.
@@ -1968,8 +1983,9 @@ PICT # misc.
 'linksearch-pat' => 'نظام التدوير:',
 'linksearch-ns' => 'النطاق:',
 'linksearch-ok' => 'تدوير',
-'linksearch-text' => 'الكروت الخاصة زى "*.wikipedia.org" ممكن تستعمل.<br />
-البروتوكولات المدعومة: <code>$1</code>',
+'linksearch-text' => 'الكروت الخاصه زى "*.wikipedia.org" ممكن تستخدم.
+محتاجه على الاقل لدومين مستوى أعلى، زى "*.org".<br />
+{{PLURAL:$2|البروتوكول المدعوم|البروتوكولات المدعومه}}: <code>$1</code> (الافتراضى http:// لو ما اتحددش بروتوكول).',
 'linksearch-line' => '$1 موصوله من $2',
 'linksearch-error' => 'الكروت الخاصة ممكن تبان بس  فى بداية اسم المضيف',
 
@@ -2012,10 +2028,10 @@ PICT # misc.
 'mailnologintext' => 'لازم تعمل [[Special:UserLogin|تسجيل الدخول]] و تدخل ايميل صحيح فى صفحة [[Special:Preferences|التفضيلات]] علشان تقدر تبعت ايميلات لليوزرز التانيين.',
 'emailuser' => 'ابعت ايميل لليوزر دا',
 'emailpage' => 'ابعت ايميل لليوزر ده',
-'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل لليوزر دا.
-عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
+'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل {{GENDER:$1|لليوزر}} دا.
+عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة، و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
 'usermailererror' => 'البريد رجع غلط:',
-'defemailsubject' => 'Ø¥Ù\8aÙ\85Ù\8aÙ\84 Ù\85Ù\86 {{SITENAME}}',
+'defemailsubject' => 'اÙ\8aÙ\85Ù\8aÙ\84 {{SITENAME}} Ù\85Ù\86 Ø§Ù\84Ù\8aÙ\88زر "$1"',
 'noemailtitle' => 'مافيش  عنوان ايميل',
 'noemailtext' => 'اليوزر دا ما كتبش االايميل بتاعه صح .',
 'nowikiemailtitle' => 'الايميلات مش مسموح بيها',
@@ -2056,7 +2072,7 @@ PICT # misc.
 'watchmethod-list' => 'التشييك فى الصفحات المتراقبة على التعديلات الاخيرة',
 'watchlistcontains' => 'لستة المراقبة بتاعتك فيها $1 {{PLURAL:$1|صفحة|صفحات}}.',
 'iteminvalidname' => "مشكلة فى '$1'، اسم مش صحيح...",
-'wlnote' => "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعة|'''$2''' ساعة}}.",
+'wlnote' => "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعه|'''$2''' ساعه}}، من الوقت $3، $4.",
 'wlshowlast' => 'عرض اخر $1 ساعات $2 ايام $3',
 'watchlist-options' => 'اختيارات قايمة المراقبة',
 
@@ -2247,13 +2263,13 @@ $UNWATCHURL
 'undeletebtn' => 'ترجيع',
 'undeletelink' => 'عرض/رجع تانى',
 'undeleteviewlink' => 'عرض',
-'undeletereset' => 'ابتدى من الأول',
 'undeleteinvert' => 'اعكس الاختيار',
 'undeletecomment' => 'السبب:',
 'undeletedrevisions' => 'رجع تانى {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 نسخة|$1 نسخة}} و {{PLURAL:$2|1 ملف|$2 ملف}} رجعو تاني',
 'undeletedfiles' => '{{PLURAL:$1|ملف|ملفات}} $1 رجعو تاني',
-'cannotundelete' => 'الترجيع ما نفعش :ممكن يكون فى حد تانى رجع الصفحة قبل كدا.',
+'cannotundelete' => 'الترجيع مانفعش:
+$1',
 'undeletedpage' => "'''اترجع $1'''
 
 بص على [[Special:Log/delete|سجل المسح]] علشان تشوف عمليات المسح و الترجيع الاخيرة.",
@@ -2283,7 +2299,7 @@ $1',
 'contributions' => 'تعديلات اليوزر {{GENDER:$1|اليوزر|اليوزره}}',
 'contributions-title' => 'مساهمات اليوزر ل$1',
 'mycontris' => 'تعديلاتى',
-'contribsub2' => 'لليوزر $1 ($2)',
+'contribsub2' => 'ل{{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'مالقيناش   تغييرات تطابق المحددات دي.',
 'uctop' => '(آخر تعديل)',
 'month' => 'من شهر (واللى قبل كده):',
@@ -2326,7 +2342,6 @@ $1',
 
 # Block/unblock
 'blockip' => 'منع يوزر',
-'blockip-title' => 'منع اليوزر',
 'blockip-legend' => 'منع اليوزر',
 'blockiptext' => 'استخدم الاستمارة اللى تحت لمنع عنوان أيبى أو يوزر معين من الكتابة.
 دا لازم يحصل بس علشان تمنع التخريب ،و على حسب
@@ -2335,7 +2350,6 @@ $1',
 'ipadressorusername' => 'عنوان الأيبى أو اسم اليوزر:',
 'ipbexpiry' => 'مدة المنع:',
 'ipbreason' => 'السبب:',
-'ipbreasonotherlist' => 'سبب تاني',
 'ipbreason-dropdown' => '*أسباب المنع المشهورة
 ** تدخيل معلومات غلط
 ** مسح المحتوى من الصفحات
@@ -2350,8 +2364,6 @@ $1',
 'ipbsubmit' => 'منع اليوزر دا',
 'ipbother' => 'وقت تاني:',
 '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',
-'ipbotheroption' => 'كمان',
-'ipbotherreason' => 'سبب تاني:',
 'ipbhidename' => 'خبى اسم اليوزر من التعديلات و الليستات.',
 'ipbwatchuser' => 'راقب صفحات اليوزر و النقاش بتوع اليوزر دا',
 'ipb-change-block' => 'عيد منع اليوزر بالإعدادات دى',
@@ -2427,7 +2439,6 @@ $1',
 'sorbsreason' => 'عنوان الأيبى بتاعك موجود كبروكسى مفتوح فى DNSBL اللى بيستعمله{{SITENAME}}.',
 'sorbs_create_account_reason' => 'عنوان الأيبى بتاعك موجود كبروكسى مفتوح فى ال DNSBL اللى بيستعمله {{SITENAME}}.
 ما ينفعش تفتح حساب.',
-'cant-block-while-blocked' => 'أنت لا يمكنك منع اليوزرز التانين و أنت ممنوع.',
 'cant-see-hidden-user' => 'اليوزر اللى انت بتحاول تعمل له منع اصلا ممنوع و مخفى.اكمنك ما عندكش صلاحية تخبية اليوزرات، ما ينفعش تشوف المنع او تعدله.',
 
 # Developer tools
@@ -2470,7 +2481,6 @@ $1',
 وفى الحالات  دى، لو عايز  تنقل صفحة المناقشه  لازم تنقل أو تدمج محتوياتها  يدويا.",
 'movearticle' => 'انقل الصفحه:',
 'moveuserpage-warning' => "'''خد بالك:''' انت ح تعمل نقل لصفحه بتاعة يوزر. لو سمحت تعمل حسابك ان الصفحه هى بس اللى ح تتنقل و اسم اليوزر''مش'' ح يتغير.",
-'movenologin' => 'مش متسجل',
 'movenologintext' => 'لازم تكون يوزر متسجل و تعمل [[Special:UserLogin|دخول]] علشان تنقل الصفحة.',
 'movenotallowed' => 'ماعندكش الصلاحية لنقل الصفحات.',
 'movenotallowedfile' => 'معندكش اذن تنقل الملف ده.',
@@ -2486,9 +2496,6 @@ $1',
 'articleexists' => 'يا اما فيه صفحه  بالاسم ده، او ان الاسم اللى  تم اختياره مش صالح.
 لو سمحت اختار اسم تانى.',
 'cantmove-titleprotected' => 'ما ينفعش تنقل صفحة للمكان دا،لأن العنوان الجديد محمى ضد الانشاء',
-'talkexists' => "'''الصفحه دى اتنقلت لصفحة بنجاح، ولكن صفحة المناقشه بتاعتها ما اتنقلتش  علشان فيه صفحة مناقشه تحت العنوان الجديد.
-من فضلك انقل محتويات صفحة المناقشه يدويا، وادمجها مع المحتويات اللى قبل كده.'''",
-'movedto' => 'اتنقلت ل',
 'movetalk' => 'انقل صفحة المناقشه.',
 'move-subpages' => 'نقل الصفحات الفرعيه (لحد $1)',
 'move-talk-subpages' => 'نقل الصفحات الفرعيه بتاعة صفحة النقاش (لحد $1)',
@@ -2508,7 +2515,7 @@ $1',
 الصفحة الهدف "[[:$1]]" موجودة فعلا.
 انت عايز تمسحها علشان تقدر تنقلها؟',
 'delete_and_move_confirm' => 'ايوة، امسح الصفحة',
-'delete_and_move_reason' => 'اتمسحت علشان تسمح للنقل',
+'delete_and_move_reason' => 'اتمسحت علشان تسمح بالنقل من "[[$1]]"',
 'selfmove' => 'عنوان المصدر والهدف هو نفسه؛
 مش ممكن نقل الصفحة على نفسها.',
 'immobile-source-namespace' => 'غير قادر على نقل الصفحات فى النطاق "$1"',
@@ -2694,6 +2701,7 @@ $1',
 'tooltip-rollback' => "\"'''ترجيع'''\" بيرجع بدوسه واحده التعديل (التعديلات) فى الصفحه دى لاخر واحد عدل الصفحه.",
 'tooltip-undo' => '"رجوع" بترجع  التعديل دا وبتفتح استمارة التعديل فى شكل البروفة. بتسمح بإضافة سبب فى الملخص.',
 'tooltip-summary' => 'اكتب ملخص قصير',
+'interlanguage-link-title' => 'ل $1 – $2',
 
 # Stylesheets
 'common.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على كل الواجهات */',
@@ -2782,7 +2790,7 @@ $1',
 'file-info-size' => '$1 × $2 بكسل حجم الفايل: $3، نوع MIME: $4',
 'file-nohires' => 'مافيش  ريزوليوشن اعلى متوفر.',
 'svg-long-desc' => 'ملف SVG، اساسا $1 × $2 بكسل، حجم الملف: $3',
-'show-big-image' => 'الصورة بدقه كامله',
+'show-big-image' => 'الصوره الاصليه',
 'file-info-gif-looped' => 'ملفوف',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|برواز|براويز}}',
 
@@ -3102,15 +3110,10 @@ $1',
 'exif-gpsdirection-t' => 'الاتجاه الحقيقي',
 'exif-gpsdirection-m' => 'الاتجاه المغناطيسي',
 
-# External editor support
-'edit-externally' => 'استعمل تطبيق من بره علشان تعدل الملف دا',
-'edit-externally-help' => '(بص على [https://www.mediawiki.org/wiki/Manual:External_editors  تعليمات الاعداد] علشان معلومات اكتر.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'الكل',
 'namespacesall' => 'الكل',
 'monthsall' => 'الكل',
-'limitall' => 'الكل',
 
 # Email address confirmation
 'confirmemail' => 'اعمل تأكيد للأيميل بتاعك',
@@ -3135,7 +3138,6 @@ $1',
 'confirmemail_success' => 'الايميل بتاعك اتأكد خلاص.
 ممكن دلوقتى تسجل دخولك و تستمتع بالويكي.',
 'confirmemail_loggedin' => 'الايميل بتاعك اتأكد خلاص.',
-'confirmemail_error' => 'حصلت حاجة غلط و احنا بنحفظ التأكيد بتاعك.',
 'confirmemail_subject' => 'تأكيد الايميل من {{SITENAME}}',
 'confirmemail_body' => 'فى واحد، ممكن يكون إنتا، من عنوان الأيبى $1،
 فتح حساب "$2" بعنوان الايميل دا فى {{SITENAME}}.
index 2497b3d..371cb98 100644 (file)
@@ -75,7 +75,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ভুল_শিৰোনাম' ),
        'Blankpage'                 => array( 'উকা_পৃষ্ঠা' ),
        'Block'                     => array( 'অৱৰোধ', 'আই_পি_অৱৰোধ', 'সদস্য_অৱৰোধ' ),
-       'Blockme'                   => array( 'মোক_অৱৰোধ_কৰক' ),
        'Booksources'               => array( 'গ্ৰন্থৰ_উত্স' ),
        'BrokenRedirects'           => array( 'ভঙা_পূণঃনিৰ্দেশনাসমূহ' ),
        'Categories'                => array( 'শ্ৰেণীসমূহ' ),
@@ -86,10 +85,10 @@ $specialPageAliases = array(
        'Contributions'             => array( 'বৰঙনিসমূহ', 'বৰঙনিদাতাসকল', 'বৰঙনি' ),
        'CreateAccount'             => array( 'সদস্যভুক্তি' ),
        'DeletedContributions'      => array( 'বিলোপ_কৰা_বৰঙনিসমূহ' ),
-       'Disambiguations'           => array( 'দ্ব্যৰ্থতা_দূৰীকৰণসমূহ' ),
        'DoubleRedirects'           => array( 'দ্বি_পুনৰ্নিৰ্দেশনাসমূহ' ),
        'EditWatchlist'             => array( 'লক্ষ্যতালিকা_সম্পাদনা_কৰক' ),
        'Emailuser'                 => array( 'সদস্যলৈ_ই-মেইল_পঠিয়াওক' ),
+       'ExpandTemplates'           => array( 'সাঁচবোৰ_প্ৰসাৰ_কৰক' ),
        'Export'                    => array( 'ৰপ্তানি' ),
        'Fewestrevisions'           => array( 'নূন্যতম_সংস্কৰণসমূহ' ),
        'FileDuplicateSearch'       => array( 'প্ৰতিলিপি_সনিবিষ্ট_নথি_অনুসন্ধান' ),
@@ -160,7 +159,6 @@ $specialPageAliases = array(
 );
 
 $magicWords = array(
-       'redirect'                  => array( '0', 'পুণঃনিৰ্দেশ', '#REDIRECT' ),
        'special'                   => array( '0', 'বিশেষ', 'special' ),
        'hiddencat'                 => array( '1', '__গোপন_শ্ৰেণী__', '__HIDDENCAT__' ),
        'pagesize'                  => array( '1', 'পৃষ্ঠাৰ_আকাৰ', 'PAGESIZE' ),
@@ -193,8 +191,8 @@ $messages = array(
 'tog-usenewrc' => 'পৃষ্ঠাৰ পৰিৱৰ্তনসমূহ শেহতীয়া সালসলনি আৰু লক্ষ্যতালিকাত ভাগ কৰক',
 'tog-numberheadings' => 'শীৰ্ষকত স্বয়ংক্ৰিয়ভাৱে ক্ৰমিক নং দিয়ক',
 'tog-showtoolbar' => 'সম্পাদনা দণ্ডিকা দেখুৱাওক',
-'tog-editondblclick' => 'দুবাৰ ক্লিক কৰিলে পৃষ্ঠা সম্পাদনা কৰক',
-'tog-editsection' => '[সমà§\8dপাদনা] à¦¸à¦\82যà§\8bà¦\97ৰ à¦¦à§\8dবাৰা অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
+'tog-editondblclick' => 'দুবাৰ ক্লিক কৰি পৃষ্ঠা সম্পাদনা কৰিব পাৰি',
+'tog-editsection' => '[সমà§\8dপাদনা] à¦¸à¦\82যà§\8bà¦\97ৰ à¦\9cৰিয়তà§\87 অনুচ্ছেদ সম্পাদনা কৰা সক্ৰিয় কৰক',
 'tog-editsectiononrightclick' => 'অনুচ্ছেদৰ শিৰোনামাত ৰাইট্‌ ক্লিক টিপি সম্পাদনা কৰাটো সক্ৰিয় কৰক',
 'tog-showtoc' => 'শিৰোনামাৰ সূচী দেখুৱাওক (যিবোৰ পৃষ্ঠাত তিনিটাতকৈ বেছি শিৰোনামা আছে)',
 'tog-rememberpassword' => 'মোৰ প্ৰৱেশ এই কম্পিউটাৰত মনত ৰাখক (সৰ্বাধিক $1 {{PLURAL:$1|দিনলৈ|দিনলৈ}})',
@@ -205,7 +203,6 @@ $messages = array(
 'tog-minordefault' => 'সকলো সম্পাদনা অগুৰুত্বপূৰ্ণ বুলি নিজে নিজে চিহ্নিত কৰক',
 'tog-previewontop' => 'সম্পাদনা বাকছৰ ওপৰত খচৰা দেখুৱাওক',
 'tog-previewonfirst' => 'প্ৰথম সম্পাদনাৰ পিছত খচৰা দেখুৱাওক',
-'tog-nocache' => 'ব্ৰাউজাৰ পৃষ্ঠা কেশ্বিং নিষ্ক্ৰীয় কৰক',
 'tog-enotifwatchlistpages' => 'মোৰ লক্ষ্য-তালিকাত থকা পৃষ্ঠা সলনি হলে মোলৈ ই-মেইল পঠাব',
 'tog-enotifusertalkpages' => 'মোৰ বাৰ্তা পৃষ্ঠা সলনি হলে মোলৈ ই-মেইল পঠাব',
 'tog-enotifminoredits' => "অগুৰুত্বপূৰ্ণ সম্পাদনা হ'লেও মোলৈ ই-মেইল পঠাব",
@@ -223,7 +220,7 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'পৰীক্ষিত সম্পাদনাসমূহ লক্ষ্য-তালিকাৰ পৰা লুকুৱাই ৰাখক',
 'tog-ccmeonemails' => 'মই অন্য সদস্যলৈ পঠোৱা ই-মেইলৰ প্ৰতিলিপি এটা মোলৈও পঠাব',
 'tog-diffonly' => 'পার্থক্যৰ তলত পৃষ্ঠাৰ বিষয়বস্তু নেদেখুৱাব',
-'tog-showhiddencats' => 'নিহিত শ্ৰেণী সমূহ দেখুৱাওক',
+'tog-showhiddencats' => 'নিহিত শ্ৰেণীসমূহ দেখুৱাওক',
 'tog-norollbackdiff' => 'পূৰ্বৱত কৰা পাছত পাৰ্থক্য নেদেখুৱাব',
 'tog-useeditwarning' => 'সালসলনি সংৰক্ষণ নকৰাকৈ সম্পাদনা পৃষ্ঠা ত্যাগৰ সময়ত মোক সাৱধান কৰক',
 'tog-prefershttps' => 'প্ৰৱেশ কৰোঁতে সদায় সুৰক্ষিত সংযোগ ব্যৱহাৰ কৰক',
@@ -233,11 +230,11 @@ $messages = array(
 'underline-default' => 'ব্ৰাউজাৰ ডিফল্ট',
 
 # Font style option in Special:Preferences
-'editfont-style' => 'সম্পাদনাৰ ফন্ট ষ্টাইল',
+'editfont-style' => "সম্পাদনা ক্ষেত্ৰৰ ফ'ণ্ট শৈলী:",
 'editfont-default' => "ব্ৰাউজাৰ ডিফ'ল্ট",
-'editfont-monospace' => 'মনোস্পেচ ফন্ট',
-'editfont-sansserif' => 'চেন্স-চেৰিফ ফন্ট',
-'editfont-serif' => 'চেৰিফ ফন্ট',
+'editfont-monospace' => "ম'ন'স্পেছ ফ'ণ্ট",
+'editfont-sansserif' => "ছেন্স-ছেৰিফ ফ'ণ্ট",
+'editfont-serif' => "ছেৰিফ ফ'ণ্ট",
 
 # Dates
 'sunday' => 'দেওবাৰ',
@@ -246,7 +243,7 @@ $messages = array(
 'wednesday' => 'বুধবাৰ',
 'thursday' => 'বৃহস্পতিবাৰ',
 'friday' => 'শুক্ৰবাৰ',
-'saturday' => 'শণিবাৰ',
+'saturday' => 'শনিবাৰ',
 'sun' => 'দেও',
 'mon' => 'সোম',
 'tue' => 'মংগল',
@@ -313,7 +310,7 @@ $messages = array(
 'hidden-category-category' => 'অদৃশ্য শ্ৰেণীসমূহ',
 'category-subcat-count' => '{{PLURAL:$2|এই শ্ৰেণীত নিম্নলিখিত উপশ্ৰেণীসমূহ আছে। মুঠ $2টা উপশ্ৰেণীৰ ভিতৰত এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|এটা উপশ্ৰেণী|$1 টা উপশ্ৰেণী}} আছে।}}',
 'category-subcat-count-limited' => 'এই শ্ৰেণীত নিম্নলিখিত {{PLURAL:$1|টা উপশ্ৰেণী আছে|$1টা উপশ্ৰেণী আছে}}।',
-'category-article-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেৱল তলত দিয়া পৃষ্ঠাহে আছে । মুঠ $2 খনৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এখন পৃষ্ঠা আছে|$1 খন পৃষ্ঠা আছে}}।}}',
+'category-article-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেৱল তলত দিয়া পৃষ্ঠাহে আছে। মুঠ $2 খনৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা পৃষ্ঠা আছে|$1 টা পৃষ্ঠা আছে}}।}}',
 'category-article-count-limited' => 'এই {{PLURAL:$1|পৃষ্ঠা|$1 পৃষ্ঠাসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে ।',
 'category-file-count' => '{{PLURAL:$2|এই শ্ৰেণীটোত কেবল তলত দিয়া ফাইলটোহে আছে। মুঠ $2টাৰ ভিতৰত এই শ্ৰেণীটোত তলৰ {{PLURAL:$1|এটা ফাইল|$1 টা ফাইল}} আছে।}}',
 'category-file-count-limited' => 'তলৰ {{PLURAL:$1|ফাইলটো|$1 ফাইলসমূহ}} সাম্প্ৰতিক শ্ৰেণীত আছে।',
@@ -328,7 +325,7 @@ $messages = array(
 'cancel' => 'বাতিল কৰক',
 'moredotdotdot' => 'অধিক...',
 'morenotlisted' => 'এই তালিকা সম্পূৰ্ণ নহয়।',
-'mypage' => 'মà§\8bৰ à¦ªà§\83ষà§\8dঠা',
+'mypage' => 'পৃষ্ঠা',
 'mytalk' => 'কথা-বতৰা',
 'anontalk' => 'এই IP-ত যোগাযোগ কৰক',
 'navigation' => 'দিকদৰ্শন',
@@ -340,7 +337,6 @@ $messages = array(
 'qbedit' => 'সম্পাদনা',
 'qbpageoptions' => 'এই পৃষ্ঠা',
 'qbmyoptions' => 'মোৰ পৃষ্ঠাসমূহ',
-'qbspecialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
 'faq' => 'সততে উদিত প্ৰশ্নসমূহ (FAQ)',
 'faqpage' => 'Project:সততে উদিত প্ৰশ্নসমূহ',
 
@@ -366,7 +362,7 @@ $messages = array(
 'returnto' => '$1লৈ ঘূৰি যাওক ।',
 'tagline' => '{{SITENAME}}ৰ পৰা',
 'help' => 'সহায়',
-'search' => 'সন্ধান',
+'search' => 'সন্ধান কৰক',
 'searchbutton' => 'সন্ধান কৰক',
 'go' => 'যাওক',
 'searcharticle' => 'যাওক',
@@ -379,11 +375,11 @@ $messages = array(
 'view' => 'দেখুৱাওক',
 'edit' => 'সম্পাদনা',
 'create' => 'সৃষ্টি কৰক',
-'editthispage' => 'বৰà§\8dতমান à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à¦®à§\8dপাদনা à¦\95ৰিবলà§\88',
-'create-this-page' => 'নতà§\81ন পৃষ্ঠা সৃষ্টি কৰক',
-'delete' => 'বিলোপ',
-'deletethispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন বিলোপ কৰক',
-'undeletethispage' => 'এই পৃষ্ঠা পুনৰুদ্ধাৰ কৰক',
+'editthispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপাদনা à¦\95ৰà¦\95',
+'create-this-page' => 'à¦\8fà¦\87 পৃষ্ঠা সৃষ্টি কৰক',
+'delete' => 'বিলোপ কৰক',
+'deletethispage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b বিলোপ কৰক',
+'undeletethispage' => 'এই পৃষ্ঠাটো পুনৰুদ্ধাৰ কৰক',
 'undelete_short' => '{{PLURAL:$1|বিলোপিত পৃষ্ঠাৰ|$1 সংখ্যক বিলোপিত পৃষ্ঠাৰ}} পূৰ্ববৎকৰণ',
 'viewdeleted_short' => '{{PLURAL:$1| এটা বিলুপ্ত সম্পাদনা|$1 টা বিলুপ্ত সম্পাদনা}} দেখুৱাওক',
 'protect' => 'সুৰক্ষিত কৰক',
@@ -392,7 +388,7 @@ $messages = array(
 'unprotect' => 'সুৰক্ষা সলনি কৰক',
 'unprotectthispage' => 'এই পৃষ্ঠাৰ সুৰক্ষা সলনি কৰক',
 'newpage' => 'নতুন পৃষ্ঠা',
-'talkpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপৰà§\8dà¦\95à§\87 à¦\95থা-বতৰা',
+'talkpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¸à¦®à§\8dপৰà§\8dà¦\95à§\80য় à¦\86লà§\8bà¦\9aনা',
 'talkpagelinktext' => 'কথা-বতৰা',
 'specialpage' => 'বিশেষ পৃষ্ঠা',
 'personaltools' => 'ব্যক্তিগত সৰঞ্জাম',
@@ -412,8 +408,8 @@ $messages = array(
 'otherlanguages' => 'আন ভাষাসমূহত',
 'redirectedfrom' => '($1ৰ পৰা পুনঃনিৰ্দেশিত)',
 'redirectpagesub' => 'পুনঃনিৰ্দেশিত পৃষ্ঠা',
-'lastmodifiedat' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
-'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
+'lastmodifiedat' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b শেষবাৰৰ কাৰণে $1 তাৰিখে $2 বজাত সলনি কৰা হৈছিল।',
+'viewcount' => 'এই পৃষ্ঠাটো {{PLURAL:$1|এবাৰ|$1 বাৰ}} চোৱা হৈছে',
 'protectedpage' => 'সুৰক্ষিত পৃষ্ঠা',
 'jumpto' => 'গম্যাৰ্থে',
 'jumptonavigation' => 'দিকদৰ্শন',
@@ -424,7 +420,7 @@ $messages = array(
 
 $1',
 'pool-timeout' => 'বন্ধ কৰাৰ বাবে অপেক্ষা কৰাৰ সময় উকলি গৈছে',
-'pool-queuefull' => 'পà§\8bল à¦\95িà¦\89 (pool queue) à¦¸à¦®à§\82ল',
+'pool-queuefull' => 'পà§\81ল à¦\95িà¦\89 (pool queue) à¦ªà§\82ৰà§\8dণ',
 '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).
@@ -448,18 +444,18 @@ $1',
 
 'badaccess' => 'অনুমোদন ত্ৰুটি',
 'badaccess-group0' => 'আপুনি কৰিব বিচৰা কামতো কৰাৰ অধিকাৰ আপোনাৰ নাই।',
-'badaccess-groups' => 'আপুনি অনুৰোধ কৰা কাৰ্য কেৱল {{plural:$2|গোটৰ|গোটৰ}} সদস্যৰ বাবে সীমিত: $1',
+'badaccess-groups' => 'আপুনি অনুৰোধ কৰা কাৰ্য কেৱল {{PLURAL:$2|গোটৰ|গোটৰ}} সদস্যৰ বাবে সীমিত: $1',
 
 'versionrequired' => 'মিডিয়াৱিকিৰ $1 সংকলন থাকিব লাগিব ।',
 'versionrequiredtext' => 'এই পৃষ্ঠাটো ব্যৱহাৰ কৰিবলৈ মিডিয়াৱিকিৰ $1 সংস্কৰণ থাকিব লাগিব । [[Special:Version|সংস্কৰণ পৃষ্ঠা]] চাওক।',
 
-'ok' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'ok' => 'শà§\81দà§\8dধ',
 'retrievedfrom' => '"$1"ৰ পৰা সংকলিত',
 'youhavenewmessages' => 'আপোনাৰ কাৰণে $1 আছে। ($2)',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|আন এজন সদস্য|$3 জন সদস্য}}ৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
 'youhavenewmessagesmanyusers' => 'কেইবাজনো সদস্যৰ পৰা আপোনালৈ $1 আহিছে ($2)।',
-'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|নতুন বাৰ্তা}}',
-'newmessagesdifflinkplural' => 'à¦\85নà§\8dতিম {{PLURAL:$1|সà¦\82শà§\8bধন}}',
+'newmessageslinkplural' => '{{PLURAL:$1|এটা নতুন বাৰ্তা|999=নতুন বাৰ্তা}}',
+'newmessagesdifflinkplural' => 'à¦\85নà§\8dতিম {{PLURAL:$1|সালসলনি|999=সালসলনিসমà§\82হ}}',
 'youhavenewmessagesmulti' => '$1ত আপোনাৰ কাৰণে নতুন সংবাদ আছে',
 'editsection' => 'সম্পাদনা কৰক',
 'editold' => 'সম্পাদনা',
@@ -503,7 +499,7 @@ $1',
 'nosuchactiontext' => "এই ইউআৰএলে নিৰ্ধাৰিত কৰা কাৰ্য অবৈধ।
 আপুনি বোধহয়  ইউআৰএল ভুলকৈ লিখিছে বা এটা ভুল লিঙ্ক অনুকৰণ কৰিছে ।
 {{SITENAME}}ত ব্যৱহাৰ হোৱা চফ্টৱেৰত ত্ৰুটি হ'বও পাৰে ।",
-'nosuchspecialpage' => 'à¦\8fনà§\87 à¦§à§°à¦¨ৰ কোনো বিশেষ পৃষ্ঠা নাই',
+'nosuchspecialpage' => 'à¦\8fনà§\87 à¦§à§°à¦£ৰ কোনো বিশেষ পৃষ্ঠা নাই',
 'nospecialpagetext' => '<strong>আপুনি অবৈধ বিশেষ পৃষ্ঠা এটা অনুৰোধ কৰিছে ।</strong>
 
 বৈধ বিশেষ পৃষ্ঠাসমূহৰ তালিকা ইয়াত পাব [[Special:SpecialPages|{{int:specialpages}}]] ।',
@@ -520,7 +516,7 @@ $1',
 'laggedslavemode' => 'সাৱধানবাণী: ইয়াত সাম্প্ৰতিক সাল-সলনি নাথাকিব পাৰে',
 'readonly' => 'তথ্যকোষ বন্ধ কৰা আছে',
 'enterlockreason' => 'বন্ধ কৰাৰ কাৰণ দিয়ক, লগতে কেতিয়ামানে খোলা হব তাকো জনাব।',
-'readonlytext' => 'নতà§\81ন à¦¸à¦®à§\8dপাদন à¦\86ৰà§\81 à¦\86ন à¦¸à¦¾à¦²-সলনিৰ à¦\95াৰণà§\87 à¦¤à¦¥à§\8dযà¦\95à§\8bষ à¦¬à§°à§\8dতমানà§\87 à¦¬à¦¨à§\8dধ à¦\86à¦\9bà§\87, à¦¹à¦¯à¦¼à¦¤à§\8b à¦¨à¦¿à¦¯à¦¼à¦®à§\80য়া à¦\9aà§\8bৱা-à¦\9aিতা à¦\95ৰিবলà§\88, কিছু সময় পিছত এয়া সাধাৰণ অৱস্থালৈ আহিব।
+'readonlytext' => 'হয়তà§\8b à¦¨à¦¿à¦¯à¦¼à¦®à§\80য়া à¦ªà§°à¦¿à¦\9aৰà§\8dযাৰ à¦¬à¦¾à¦¬à§\87 à¦¤à¦¥à§\8dযà¦\95à§\8bষত à¦¨à¦¤à§\81ন à¦¸à¦®à§\8dপাদনা à¦\86ৰà§\81 à¦\86ন à¦¸à¦¾à¦²-সলনি à¦¬à¦¨à§\8dধ à¦\95ৰা à¦¹à§\88à¦\9bà§\87। কিছু সময় পিছত এয়া সাধাৰণ অৱস্থালৈ আহিব।
 
 যিজন প্ৰশাসকে বন্ধ কৰিছে তেওঁ এই কাৰণ দিছে: $1',
 'missing-article' => '"$1" $2 লেখাটো তথ্যকোষত পোৱা নগ’ল ।
@@ -549,15 +545,13 @@ $1',
 সম্ভৱ আনে আগতেই বিলোপ কৰিছে ।',
 'cannotdelete-title' => '"$1" পৃষ্ঠা বিলোপ কৰিব নোৱাৰি',
 'delete-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে ।
-ইয়াৰ কোনো ব্যাখ্যা নাই ।',
+ইয়াৰ কোনো ব্যাখ্যা নাই।',
 'no-null-revision' => '"$1" পৃষ্ঠাৰ বাবে নতুন শূন্য সংশোধন সৃষ্টি কৰিব পৰা নগ\'ল',
 'badtitle' => 'অগ্ৰহণীয় শিৰোনামা',
 'badtitletext' => 'আপুনি বিচৰা পৃষ্ঠাটোৰ শিৰোনামা অযোগ্য, খালী বা ভুলকৈ জড়িত আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি শিৰোনামা। ইয়াত এক বা ততোধিক বৰ্ণ আছে যাক শিৰোনামাত ব্যৱহাৰ কৰিব নোৱাৰি।',
 'perfcached' => "তলত দিয়া তথ্যখিনি আগতে জমা কৰি থোৱা (cached) আৰু সাম্প্ৰতিক নহ'ব পাৰে। এই তথ্যখিনিত সৰ্বোচ্চ {{PLURAL:$1|এটা ফলাফল|$1টা ফলাফল}} উপলব্ধ।",
 'perfcachedts' => 'তলত দিয়া তথ্য খিনি আগতে জমা কৰি থোৱা (cached) আৰু শেষবাৰৰ কাৰণে $1 ত নবীকৰণ কৰা হৈছিল। সৰ্বাধিক {{PLURAL:$4|এটা ফলাফল|$4 টা ফলাফল}} এই কেশ্বত পাব।',
 'querypage-no-updates' => 'এই পৃষ্ঠাটো নৱীকৰণ কৰা ৰোধ কৰা হৈছে। ইয়াৰ তথ্য এতিয়া সতেজ কৰিব নোৱাৰি।',
-'wrong_wfQuery_params' => 'wfQuery() ৰ কাৰণে ভুল মাপদণ্ড দিয়া হৈছে <br />
-কাৰ্য: $1<br />পৃষ্ঠা: $2',
 'viewsource' => 'উৎস চাওক',
 'viewsource-title' => '$1ৰ উৎস চাওক',
 'actionthrottled' => 'কাৰ্য লেহেম কৰা হৈছে',
@@ -571,7 +565,7 @@ $1',
 'editinginterface' => "'''সাৱধানবাণী:''' আপুনি যিখন পৃষ্ঠা সম্পাদনা কৰিছে সেইখন এই ছফ্টৱেৰৰ ইণ্টাৰফে’চ বাৰ্তা দিবলৈ ব্যৱহাৰ হয়।
 এই পৃষ্ঠাৰ সাল-সলনিয়ে আন ব্যৱহাৰকাৰীৰ বাবে ইণ্টাৰফে’চত প্ৰভাৱ পেলাব।
 সকলো ৱিকিৰ বাবে অনুবাদৰ বাবে অনুগ্ৰহ কৰি মিডিয়াৱিকি স্থানীয়কৰণ প্ৰকল্প [//translatewiki.net/ translatewiki.net] ব্যৱহাৰ কৰক ।",
-'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\96ন|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
+'cascadeprotected' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à¦®à§\8dপাদনাৰ à¦ªà§°à¦¾ à¦¸à§\81ৰà¦\95à§\8dষিত à¦\95াৰণ à¦\8fà¦\87 {{PLURAL:$1|পà§\83ষà§\8dঠা, à¦¯à¦¿à¦\9fà§\8b|পৃষ্ঠা, যিবোৰ}} "প্ৰপাতাকাৰ" (cascading) বিকল্পৰ সহযোগত সুৰক্ষিত কৰা হৈছে: 
 $2',
 'namespaceprotected' => "আপোনাৰ '''$1''' নামস্থানৰ পৃষ্ঠাসমূহ সম্পাদনা কৰাৰ অধিকাৰ নাই।",
 'customcssprotected' => 'এই CSS পৃষ্ঠা সম্পাদনা কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদস্যৰ ব্যক্তিগত পছন্দসমূহত আছে ।',
@@ -588,7 +582,8 @@ $2',
 'invalidtitle-knownnamespace' => 'নামস্থান "$2" আৰু পাঠ্য "$3" থকা অবৈধ শিৰোনাম',
 'invalidtitle-unknownnamespace' => 'অজ্ঞাত নামস্থান সংখ্যা $1 আৰু পাঠ্য "$2" থকা অবৈধ শিৰোনাম',
 'exception-nologin' => 'প্ৰৱেশ কৰা নাই',
-'exception-nologin-text' => 'এই পৃষ্ঠা অথবা কামৰ বাবে আপুনি প্ৰৱেশ কৰা বাধ্যতামূলক',
+'exception-nologin-text' => 'এই কামৰ বাবে আপুনি [[Special:Userlogin|লগ্‌ ইন]] কৰাটো বাধ্যতামূলক।',
+'exception-nologin-text-manual' => 'এই কামৰ বাবে অনুগ্ৰহ কৰি $1 কৰক।',
 
 # Virus scanner
 'virus-badscanner' => "ভুল কনফিগাৰেচন: অজ্ঞাত ভাইৰাছ স্কেনাৰ: ''$1''",
@@ -690,7 +685,7 @@ $2',
 'passwordtooshort' => "গুপ্তশব্দ কমেও {{PLURAL:$1|১ টা|$1 টা}} আখৰৰ হ'ব লাগিব ।",
 'password-name-match' => "আপোনাৰ গুপ্তশব্দ আৰু আপোনাৰ সদস্যনাম বেলেগ হ'ব লাগিব",
 'password-login-forbidden' => 'এই সদস্যনাম আৰু গুপ্তশব্দৰ ব্যৱহাৰ নিষিদ্ধ কৰা হৈছে ।',
-'mailmypassword' => 'à¦\87-মà§\87à¦\87লত à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à¦¿à¦¯à¦¼াওক',
+'mailmypassword' => 'à¦\97à§\81পà§\8dতশবà§\8dদ à¦¨-à¦\95à§\88 à¦¬à¦¹à§\81ৱাওক',
 'passwordremindertitle' => '{{SITENAME}}ৰ কাৰণে নতুন অস্থায়ী গুপ্তশব্দ',
 'passwordremindertext' => 'কোনোবাই (হয়তো আপুনি, $1 আই-পি ঠিকনাৰ পৰা)
 {{SITENAME}}ত ব্যৱহাৰ কৰিবলৈ নতুন গুপ্তশব্দৰ বাবে অনুৰোধ কৰিছে ($4) ।
@@ -714,7 +709,7 @@ $2',
 'emailnotauthenticated' => 'আপোনাৰ ই-মেইল ঠিকনাতো এতিয়ালৈ নিশ্চিত হোৱা নাই।
 আপুনি তলৰ বিষয়বোৰৰ কাৰণে মেইল পঠিয়াব নোৱাৰে।',
 'noemailprefs' => 'এই সুবিধাবোৰ ব্যৱহাৰ কৰিবলৈ এটা ই-মেইল ঠিকনা দিয়ক।',
-'emailconfirmlink' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাà¦\9fà§\8b à¦ªà§\8dৰমাণিত কৰক',
+'emailconfirmlink' => 'à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95নাà¦\9fà§\8b à¦¨à¦¿à¦¶à§\8dà¦\9aিত কৰক',
 'invalidemailaddress' => 'এই ই-মেইল ঠিকনাতো গ্ৰহনযোগ্য নহয়, কাৰণ ই অবৈধ প্ৰকাৰৰ যেন লাগিছে।
 অনুগ্ৰহ কৰি এটা বৈধ ই-মেইল ঠিকনা লিখক অথবা একো নিলিখিব।',
 'cannotchangeemail' => 'এই ৱিকিত একাউন্ট ই-মেইল ঠিকনা সলনি কৰিব পৰা নাযায়',
@@ -736,11 +731,11 @@ $2',
 
 # Email sending
 'php-mail-error-unknown' => 'পি.এইছ.পি মেইল () কাৰ্যত অজ্ঞাত ত্ৰুটি ।',
-'user-mail-no-addy' => 'à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95না à¦¨à§\8bহà§\8bৱাà¦\95à§\88য়à§\87 à¦\87-মà§\87à¦\87ল à¦ªà¦ à§\8bৱাৰ চেষ্টা কৰা হৈছে ।',
+'user-mail-no-addy' => 'à¦\87-মà§\87à¦\87ল à¦ à¦¿à¦\95না à¦¨à§\8bহà§\8bৱাà¦\95à§\88য়à§\87 à¦\87-মà§\87à¦\87ল à¦ªà¦ à¦¿à¦\93ৱাৰ চেষ্টা কৰা হৈছে ।',
 'user-mail-no-body' => 'কোনো সমল নোহোৱাকৈ বা অতি সংক্ষিপ্ত কথাৰে ইমেইল পঠিয়াবলৈ চেষ্টা কৰিছিল।',
 
 # Change password dialog
-'resetpass' => 'গুপ্তশব্দ সলনি কৰক',
+'changepassword' => 'গুপ্তশব্দ সলনি কৰক',
 'resetpass_announce' => 'আপুনি ই-মেইলত পোৱা অস্থায়ী গুপ্তশব্দৰে প্ৰৱেশ কৰিছে।
 প্ৰৱেশ সম্পূৰ্ণ কৰিবলৈ, আপুনি এটা নতুন গুপ্তশব্দ দিব লাগিব:',
 'resetpass_header' => 'গুপ্তশব্দ সলনি কৰক',
@@ -750,7 +745,7 @@ $2',
 'resetpass_submit' => 'গুপ্তশব্দ বহুৱাওক আৰু প্ৰৱেশ কৰক',
 'changepassword-success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে!',
 'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি',
-'resetpass-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'resetpass-no-info' => 'এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব ।',
 'resetpass-submit-loggedin' => 'গুপ্তশব্দ সলনি কৰক',
 'resetpass-submit-cancel' => 'বাতিল কৰক',
 'resetpass-wrong-oldpass' => 'অস্থায়ী বা সাম্প্ৰতিক গুপ্তশব্দ গ্ৰহণযোগ্য নহয় ।
@@ -761,7 +756,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'গুপ্তশব্দ ন-কৈ বহুৱাওক',
 'passwordreset-text-one' => 'আপোনাৰ গুপ্তশব্দ ন-কৈ বহুৱাবলৈ এই প্ৰপত্ৰ পূৰণ কৰক।',
-'passwordreset-text-many' => '{{PLURAL:$1|à¦\86পà§\8bনাৰ à¦\97à§\81পà§\8dতশবà§\8dদ à¦¨-à¦\95à§\88 à¦¬à¦¹à§\81ৱাবলৈ এই তথ্যসমূহৰ যিকোনো এটা দিয়ক।}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¦\87মà§\87à¦\87লত à¦\8fà¦\9fা à¦\85সà§\8dথায়à§\80 à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªাবলৈ এই তথ্যসমূহৰ যিকোনো এটা দিয়ক।}}',
 'passwordreset-legend' => 'গুপ্তশব্দ ন-কৈ বহাওক',
 'passwordreset-disabled' => 'এই ৱিকিত গুপ্তশব্দ নবীকৰণ নিষ্ক্ৰিয় কৰা হৈছে ।',
 'passwordreset-emaildisabled' => 'এই ৱিকিত ই-মেইল বৈশিষ্টসমূহ নিষ্ক্ৰিয় কৰা হৈছে।',
@@ -791,7 +786,7 @@ $2
 'changeemail' => 'ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-header' => 'একাউণ্টৰ ই-মেইল ঠিকনা সলনি কৰক',
 'changeemail-text' => 'আপোনাৰ ই-মেইল ঠিকনা সলাবলৈ এই প্ৰপত্ৰখন পূৰাওক । এই সালসলনি নিশ্চিত কৰিবলৈ আপোনাৰ গুপ্তশব্দ দিব লাগিব ।',
-'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।',
+'changeemail-no-info' => 'এই পৃষ্ঠাটোত প্ৰৱেশাধিকাৰ পাবলৈ আপুনি লগ্‌ ইন কৰিব লাগিব।',
 'changeemail-oldemail' => 'বৰ্তমানৰ ই-মেইল ঠিকনা:',
 'changeemail-newemail' => 'নতুন ই-মেইল ঠিকনা:',
 'changeemail-none' => '(নাই)',
@@ -808,6 +803,7 @@ $2
 'resettokens-legend' => "ট'কেন ৰিছে'ট কৰক",
 'resettokens-tokens' => "ট'কেনসমূহ:",
 'resettokens-token-label' => '$1 (বর্তমান: $2)',
+'resettokens-watchlist-token' => "[[Special:Watchlist|আপোনাৰ লক্ষ্যতালিকাৰ পৃষ্ঠাৰ সালসলনিৰ]] ৱেব ফীডৰ বাবে ট'কেন (Atom/RSS)",
 'resettokens-done' => "ট'কেন ৰিছে'ট কৰা হ'ল।",
 'resettokens-resetbutton' => "নিৰ্বাচিত ট'কেনসমূহ ৰিছে'ট কৰক",
 
@@ -833,11 +829,11 @@ $2
 'summary' => 'সাৰাংশ:',
 'subject' => 'বিষয় / শীৰ্ষক:',
 'minoredit' => 'এইটো এটা অগুৰুত্বপূৰ্ণ সম্পাদনা',
-'watchthis' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন লক্ষ্য কৰক',
+'watchthis' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b লক্ষ্য কৰক',
 'savearticle' => 'পৃষ্ঠা সাঁচক',
 'preview' => 'খচৰা',
 'showpreview' => 'খচৰা চাওক',
-'showlivepreview' => 'পà§\8bনপà¦\9fà§\80য়া খচৰা',
+'showlivepreview' => 'পà§\8bনপà¦\9fিয়া খচৰা',
 'showdiff' => 'সালসলনিবোৰ দেখুৱাওক',
 'anoneditwarning' => "<span style=\"color:red;\">'''সাৱধান:''' আপুনি প্ৰৱেশ কৰা নাই ।</span> 
 এই পৃষ্ঠাৰ ইতিহাসত আপোনাৰ আই পি ঠিকনা সংৰক্ষিত কৰা হ'ব।",
@@ -886,7 +882,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'loginreqtitle' => 'প্ৰৱেশ আৱশ্যক',
 'loginreqlink' => 'প্ৰৱেশ',
 'loginreqpagetext' => 'অন্যান্য পৃষ্ঠা চাবলৈ আপুনি $1 কৰিব লাগিব।',
-'accmailtitle' => "à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à§\8bৱা হ'ল।",
+'accmailtitle' => "à¦\97à§\81পà§\8dতশবà§\8dদ à¦ªà¦ à¦¿à¦\93ৱা হ'ল।",
 'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিকভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল । 
 এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত শব্দতো সলনি কৰি ল’ব পাৰিব ।",
 'newarticle' => '(নতুন)',
@@ -1012,15 +1008,15 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'moveddeleted-notice' => "এই পৃষ্ঠা বাতিল কৰা হৈছে ।
 পৃষ্ঠাটিৰ বাতিল আৰু স্থানান্তৰ কৰা অভিলেখ তলত দিয়া হ'ল ।",
 'log-fulllog' => 'সম্পূৰ্ণ অভিলেখ চাওক',
-'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে 
-ইয়াৰ কোনো ব্যাখ্যা নাই ।',
-'edit-gone-missing' => 'পà§\83ষà§\8dঠাà¦\96ন à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল 
-সম্ভৱতঃ পৃষ্ঠাখন বিলোপ কৰা হৈছে ।',
-'edit-conflict' => 'সম্পাদনা দ্বন্দ্ব ।',
-'edit-no-change' => 'আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
-'postedit-confirmation' => "à¦\86পà§\8bনাৰ à¦¸à¦®à§\8dপাদনা à¦¸à¦\82ৰà¦\95à§\8dষিত à¦\95ৰা à¦¹'ল ।",
-'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল 
-পà§\83ষà§\8dঠাà¦\96ন à¦\87তিমধà§\8dযà§\87 à¦\86à¦\9bà§\87à¦\87 ।",
+'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে।
+ইয়াৰ কোনো ব্যাখ্যা নাই।',
+'edit-gone-missing' => 'পà§\83ষà§\8dঠাà¦\9fà§\8b à¦¨à¦¬à§\80à¦\95ৰণ à¦\95ৰিব à¦ªà§°à¦¾ à¦¨à¦\97â\80\99ল
+সম্ভৱতঃ পৃষ্ঠাখন বিলোপ কৰা হৈছে।',
+'edit-conflict' => 'সম্পাদনা দ্বন্দ্ব।',
+'edit-no-change' => 'আপোনাৰ সম্পাদনা আওকাণ কৰা হৈছে, কাৰণ লেখাত কোনো তফাৎ নাই',
+'postedit-confirmation' => "à¦\86পà§\8bনাৰ à¦¸à¦®à§\8dপাদনা à¦¸à¦¾à¦\81à¦\9aি à¦¥à§\8bৱা à¦¹'ল।",
+'edit-already-exists' => "নতুন পৃষ্ঠা সৃষ্টি কৰা নহ'ল।
+পà§\83ষà§\8dঠাà¦\9fà§\8b à¦\87তিমধà§\8dযà§\87 à¦\86à¦\9bà§\87à¦\87।",
 'defaultmessagetext' => 'সাধাৰণ বাৰ্তা পাঠ্য',
 'content-failed-to-parse' => '$1 মডেলৰ বাবে $2ৰ তথ্য নিকা কৰিব পৰা নগ’ল: $3',
 'invalid-content-data' => 'অবৈধ সমল তথ্য',
@@ -1050,7 +1046,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'node-count-exceeded-category' => "ন'ড-গণনা বেছি হোৱা পৃষ্ঠাসমূহ",
 'node-count-exceeded-warning' => "পৃষ্ঠাৰ ন'ড-গণনা বেছি হৈছে",
 'expansion-depth-exceeded-category' => 'বিস্তৃতি গভীৰতা বেছি হোৱা পৃষ্ঠা',
-'expansion-depth-exceeded-warning' => 'পà§\83ষà§\8dঠাà¦\96নৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
+'expansion-depth-exceeded-warning' => 'পà§\83ষà§\8dঠাà¦\9fà§\8bৰ বিস্তৃতি গভীৰতা বেছি হৈছে',
 'parser-unstrip-loop-warning' => 'আন্‌ষ্ট্ৰীপ লুপ চিনাক্ত কৰা হৈছে',
 'parser-unstrip-recursion-limit' => 'আন্‌ষ্ট্ৰিপ ৰিকাৰ্ছন সীমা অতিক্ৰম হৈছে ($1)',
 'converter-manual-rule-error' => 'মেনুৱেল ভাষা পৰিৱৰ্তন নিয়মত ত্ৰুটি পোৱা গৈছে',
@@ -1064,10 +1060,11 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে ।
 'undo-summary-username-hidden' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা $1 সংশোধন বাতিল কৰক',
 
 # Account creation failure
-'cantcreateaccounttitle' => "একাউন্ট সৃষ্টি কৰা নহ'ব",
+'cantcreateaccounttitle' => 'একাউণ্ট সৃষ্টি কৰিব নোৱাৰি',
 'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে ।
 
 $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে ''$2''",
+'cantcreateaccount-range-text' => " $3 য়ে ''$2'' বুলি কাৰণ দিছে",
 
 # History pages
 'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাওক ।',
@@ -1077,8 +1074,8 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'revisionasof' => '$1ৰ সংস্কৰণ',
 'revision-info' => '$1-লৈ $2ই কৰা সংশোধন',
 'previousrevision' => '← আগৰ সংশোধন',
-'nextrevision' => 'সদà§\8dযসà¦\82শà§\8bধিত',
-'currentrevisionlink' => 'শà§\87হতà§\80য়া à¦­à¦¾à¦·à§\8dয',
+'nextrevision' => 'নতà§\81ন à¦¸à¦\82শà§\8bধনâ\86\92',
+'currentrevisionlink' => 'শà§\87হতà§\80য়া à¦¸à¦\82শà§\8bধন',
 'cur' => 'বৰ্তমান',
 'next' => 'পৰৱৰ্তী',
 'last' => 'পূৰ্বৱৰ্তী',
@@ -1092,11 +1089,11 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'histfirst' => 'আটাইতকৈ পুৰণি',
 'histlast' => 'শেহতীয়া',
 'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})',
-'historyempty' => '(à¦\96ালà§\80)',
+'historyempty' => '(à¦\96ালি)',
 
 # Revision feed
-'history-feed-title' => 'সà¦\82à¦\95লন ইতিহাস',
-'history-feed-description' => 'ৱিà¦\95িত à¦\89পলবà§\8dধ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82à¦\95লন ইতিহাস',
+'history-feed-title' => 'সà¦\82শà§\8bধনৰ ইতিহাস',
+'history-feed-description' => 'ৱিà¦\95িত à¦\89পলবà§\8dধ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাৰ à¦¸à¦\82শà§\8bধন ইতিহাস',
 'history-feed-item-nocomment' => '$1-য়ে $2',
 'history-feed-empty' => 'অনুৰোধ কৰা পৃষ্ঠাৰ কোনো অস্বিত্ব নাই।
 হয়তো ইয়াক বিলোপ কৰা হৈছে অথবা ইয়াৰ নাম সলনি কৰা হৈছে।
@@ -1137,11 +1134,7 @@ $3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে
 'revisiondelete' => 'সংকলন বিলোপ কৰক / পুনৰ স্থাপন কৰক',
 'revdelete-nooldid-title' => 'লক্ষ্য সংশোধন যুক্তিসংগত নহয়',
 'revdelete-nooldid-text' => 'কামটো কৰাৰ বাবে আপুনি লক্ষ্য সংশোধন নিৰ্বাচন কৰা নাই, নিৰ্বাচিত সংশোধন নাই, অথবা আপুনি বৰ্তমানৰ সংশোধন লুকুৱাব বিচাৰিছে ।',
-'revdelete-nologtype-title' => 'কোনো অভিলেখ প্ৰকাৰ দিয়া হোৱা নাই',
-'revdelete-nologtype-text' => 'এই কামটো কৰাৰ বাবে আপুনি কোনো অভিলেখ  প্ৰকাৰ নিৰ্বাচন কৰা নাই ।',
-'revdelete-nologid-title' => 'অযুক্তিসংগত অভিলেখ ভৰ্তি',
-'revdelete-nologid-text' => 'আপুনি এইটো কৰাৰ বাবে কোনো অভিলেখ ভৰ্তি নিৰ্বাচন কৰা নাই অথবা নিৰ্বাচিত অভিলেখ ভৰ্তিটো নাই ।',
-'revdelete-no-file' => 'নিৰ্ধাৰিত ফাইলটি নাই ।',
+'revdelete-no-file' => 'নিৰ্ধাৰিত ফাইলটো নাই।',
 'revdelete-show-file-confirm' => 'আপুনি "<nowiki>$1</nowiki>"  ফাইলৰ বিলোপ কৰা কৰা সংশোধন $2 তাৰিখৰ পৰা $3 সময়ত চাব বিচাৰিছে নেকি?',
 'revdelete-show-file-submit' => 'হয়',
 'revdelete-selected' => "'''[[:$1]]-ৰ {{PLURAL:$2|নিৰ্বাচিত সংশোধন|নিৰ্বাচিত সংশোধনসমূহ}}:'''",
@@ -1174,8 +1167,6 @@ $1",
 'logdelete-failure' => "'''ল’গ প্ৰত্যক্ষতা স্থাপন কৰিব পৰা নগ’ল:'''
 $1",
 'revdel-restore' => 'দৃষ্টিপাত সালসলনি কৰক',
-'revdel-restore-deleted' => 'বাতিল কৰা সংশোধনসমূহ',
-'revdel-restore-visible' => 'দৃশ্যমান সংশোধনসমূহ',
 'pagehist' => 'পৃষ্ঠাৰ ইতিহাস',
 'deletedhist' => 'বিলোপ কৰাৰ ইতিহাস',
 'revdelete-hide-current' => ' $2, $1 তাৰিখৰ এই আইটেমটো গোপন কৰাত সমস্যা হৈছে: এইটো বৰ্তমানৰ সংশোধনী ।
@@ -1256,12 +1247,8 @@ $1",
 # 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}}টা',
@@ -1270,10 +1257,9 @@ $1",
 'nextn-title' => 'পিছৰ $1 {{PLURAL:$1|ফলাফল|ফলাফলবোৰ}}',
 'shown-title' => 'পৃষ্ঠাই প্ৰতি $1 {{PLURAL:$1|টা ফলাফল|টা ফলাফল}} দেখুৱাওক',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) চাওক।',
-'searchmenu-legend' => 'সন্ধান বিকল্পসমূহ',
-'searchmenu-exists' => 'এই ৱিকিত "[[:$1]]" নামৰ পৃষ্ঠা এখন আছে ।',
+'searchmenu-exists' => "'''এই ৱিকিত \"[[:\$1]]\" নামৰ এটা পৃষ্ঠা আছে।'''
+{{PLURAL:\$2|0=|আন সন্ধান ফলাফলবোৰ চাওক।}}",
 'searchmenu-new' => "'''এই ৱিকিত \"[[:\$1]]\" পৃষ্ঠাখন সৃষ্টি কৰক!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এই উপসৰ্গ থকা পৃষ্ঠাসমূহ ব্ৰাউজ কৰক]]',
 'searchprofile-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'searchprofile-project' => 'সহায় আৰু প্ৰকল্প পৃষ্ঠাসমূহ',
 'searchprofile-images' => 'মাল্টিমিডিয়া',
@@ -1294,21 +1280,16 @@ $1",
 'search-interwiki-default' => '$1 ফলাফলসমূহ:',
 'search-interwiki-more' => '(আৰু)',
 'search-relatedarticle' => 'সম্পৰ্কিত',
-'mwsuggest-disable' => 'অনুসন্ধান পৰামৰ্শ নিষ্ক্ৰিয় কৰক',
 'searcheverything-enable' => 'সকলো নামস্থানত অনুসন্ধান কৰক',
 'searchrelated' => 'সম্পৰ্কিত',
 'searchall' => 'সকলো',
 'showingresults' => "তলত #'''$2'''ৰ পৰা {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফল}} দেখুওৱা হৈছে।",
 'showingresultsnum' => "তলত #'''$2'''ৰ পৰা {{PLURAL:$3|'''1''' ফলাফল|'''$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' => 'একো নাই',
@@ -1322,7 +1303,7 @@ $1",
 'preferences' => 'পছন্দসমূহ',
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনাৰ সংখ্যা:',
-'changepassword' => 'গুপ্তশব্দ সলনি কৰক',
+'prefsnologintext2' => 'আপোনাৰ পছন্দসমূহৰ সালসলনি কৰিবলৈ অনুগ্ৰহ কৰি $1 কৰক।',
 'prefs-skin' => 'আৱৰণ',
 'skin-preview' => 'খচৰা',
 'datedefault' => 'কোনো পছন্দ নাই',
@@ -1345,13 +1326,11 @@ $1",
 'prefs-email' => 'ই-মেইল বিকল্প',
 'prefs-rendering' => 'ৰূপ',
 'saveprefs' => 'সাঁচি থওক',
-'resetprefs' => 'অসঞ্চিত সাল-সলনি বাতিল কৰক',
 'restoreprefs' => 'সকলো পূৰ্বনিৰ্ধাৰিত ছেটিং ঘূৰাই আনক (সকলো ছেক্‌শ্যনতে)',
 'prefs-editing' => 'সম্পাদন',
 'rows' => 'পথালী শাৰী:',
 'columns' => 'ঠিয় শাৰী:',
 'searchresultshead' => 'অনুসন্ধান',
-'resultsperpage' => 'প্ৰতি পৃষ্ঠা দৰ্শন:',
 'stub-threshold' => '<a href="#" class="stub">আধাৰ সংযোগ</a> ৰ সৰ্বোচ্চ আকাৰ (বাইটত):',
 'stub-threshold-disabled' => 'নিষ্ক্ৰিয়',
 'recentchangesdays' => 'শেহতীয়া সাল-সলনিত দেখুৱাব লগা দিন:',
@@ -1365,7 +1344,6 @@ $1",
 'localtime' => 'স্থানীয় সময়:',
 'timezoneuseserverdefault' => 'ডিফ’ল্ট ৱিকি ($1) ব্যৱহাৰ কৰক',
 'timezoneuseoffset' => 'অন্য (অফচেট ধাৰ্য কৰক)',
-'timezoneoffset' => 'অফচেট¹:',
 'servertime' => 'চাৰ্ভাৰৰ সময়:',
 'guesstimezone' => 'ব্ৰাউজাৰৰ পৰা ভৰাওক',
 'timezoneregion-africa' => 'আফ্ৰিকা',
@@ -1400,7 +1378,7 @@ $1",
 'yourvariant' => 'বিষয়-বস্তুৰ ভাষা বিকল্প',
 'prefs-help-variant' => 'এই ৱিকিৰ সমল পৃষ্ঠাসমূহ প্ৰদৰ্শন কৰিবলে আপোনাৰ পছন্দৰ অপৰ অথবা বৰ্ণবিন্যাস।',
 'yournick' => 'নতুন স্বাক্ষৰ:',
-'prefs-help-signature' => 'কথা-বতৰা পৃষ্ঠাত মন্তব্যসমূহৰ তলত "<nowiki>~~~~</nowiki>" লিখিলে ই স্বয়ংক্ৰিয়ভাৱে আপোনাৰ নাম আৰু সময় সংযুক্ত কৰিব ।',
+'prefs-help-signature' => 'কথা-বতৰা পৃষ্ঠাত মন্তব্যসমূহৰ তলত "<nowiki>~~~~</nowiki>" লিখিলে ই স্বয়ংক্ৰিয়ভাৱে আপোনাৰ নাম আৰু সময় সংযুক্ত কৰিব।',
 'badsig' => 'অনুপযোগী স্বাক্ষ্যৰ, HTML টেগ পৰীক্ষা কৰি লওক।',
 'badsiglength' => 'আপোনাৰ স্বাক্ষৰ অত্যাধিক দীঘলীয়া ।
 আপোনাৰ স্বাক্ষৰ {{PLURAL:$1|এটা আখৰৰ|টা আখৰৰ}} বেছি হ’ব নালাগে ।',
@@ -1435,6 +1413,7 @@ $1",
 'prefs-tokenwatchlist' => "ট'কেন",
 'prefs-diffs' => 'পাৰ্থক্য',
 'prefs-help-prefershttps' => "আপোনাৰ পৰৱৰ্তী প্ৰৱেশত এই পছন্দ কাৰ্যকৰী হ'ব।",
+'prefs-tabs-navigation-hint' => 'কিটিপ: টেব্‌ তালিকাত থকা টেবসমূহৰ মাজত বিচৰণ কৰিবলৈ সোঁ আৰু বাঁও কাঁড়চিনৰ কী টিপিব পাৰে।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ই-মেইল ঠিকনাটো সঠিক',
@@ -1528,7 +1507,8 @@ $1",
 'right-proxyunbannable' => 'প্ৰক্সীৰ স্বয়ংক্ৰিয় প্ৰতিবন্ধক এৰাই চলক',
 'right-unblockself' => 'আপোনা-আপুনি খোলা',
 'right-protect' => 'সুৰক্ষাৰ স্তৰ পৰিৱৰ্তন কৰক আৰু প্ৰপাতাকাৰ-সুৰক্ষিত পৃষ্ঠাসমূহ সম্পাদনা কৰক',
-'right-editprotected' => 'সুৰক্ষিত পৃষ্ঠা (কেশ্বকেডিঙ সুৰক্ষাৰ অবিহনে) সম্পাদনা কৰক',
+'right-editprotected' => '"{{int:protect-level-sysop}}" হিচাপে সুৰক্ষিত পৃষ্ঠা সম্পাদনা কৰক',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" হিচাপে সুৰক্ষিত পৃষ্ঠা সম্পাদনা কৰক',
 'right-editinterface' => 'সদস্যৰ ইণ্টাৰফে’চ সম্পাদনা কৰক',
 'right-editusercssjs' => 'আন সদস্যৰ CSS আৰু JavaScript  সম্পাদনা কৰক',
 'right-editusercss' => 'আন সদস্যৰ CSS ফাইল সম্পাদনা কৰক',
@@ -1536,6 +1516,10 @@ $1",
 'right-editmyusercss' => 'আপোনাৰ নিজৰ সদস্য CSS ফাইলসমূহ সম্পাদনা কৰক।',
 'right-editmyuserjs' => 'আপোনাৰ নিজৰ সদস্য JavaScript ফাইলসমূহ সম্পাদনা কৰক',
 'right-viewmywatchlist' => 'আপোনাৰ নিজৰ লক্ষ্য-তালিকা চাওক',
+'right-editmywatchlist' => 'আপোনাৰ নিজৰ লক্ষ্যতালিকাখন সম্পাদনা কৰক। মন কৰিব যে কিছুমান কামে এই অধিকাৰ অবিহনেও পৃষ্ঠা যোগ দিয়াব।',
+'right-viewmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য চাওক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
+'right-editmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য সম্পাদনা কৰক (যেনে- ইমেইল ঠিকনা, প্ৰকৃত নাম)',
+'right-editmyoptions' => 'আপোনাৰ নিজৰ পছন্দসমূহ সম্পাদনা কৰক',
 'right-rollback' => 'শেষৰজন সদস্যই এখন নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
 'right-markbotedits' => 'ৰ’ল্ড-বেক সম্পাদনাসমূহ বট সম্পাদনা বুলি চিহ্নিত কৰক',
 'right-noratelimit' => 'গতি সীমাৰ দ্বাৰা প্ৰভাৱিত নহ’ব',
@@ -1587,8 +1571,8 @@ $1",
 'action-block' => 'এই সদস্যক সম্পাদনা কৰাৰ পৰা বাৰণ কৰক',
 'action-protect' => 'এই পৃষ্ঠাৰ সুৰক্ষাৰ মাত্ৰা পৰিৱৰ্তন কৰক',
 'action-rollback' => 'শেষৰজন সদস্যই এখন নিৰ্দিষ্ট পৃষ্টাত কৰা সম্পাদনা পূৰ্বৰ অৱস্থালৈ ঘূৰাই আনক',
-'action-import' => 'à¦\85নà§\8dয à§±à¦¿à¦\95িৰ à¦ªà§°à¦¾ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86মদানà§\80 কৰক',
-'action-importupload' => 'ফাà¦\87ল à¦\86পলâ\80\99ডৰ à¦ªà§°à¦¾ à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\86মদানà§\80 কৰক',
+'action-import' => 'à¦\85নà§\8dয à§±à¦¿à¦\95িৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦\86মদানি কৰক',
+'action-importupload' => 'ফাà¦\87ল à¦\86পলâ\80\99ডৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦\86মদানি কৰক',
 'action-patrol' => 'আনৰ সম্পাদনা পৰীক্ষিত বুলি চিহ্নিত কৰক',
 'action-autopatrol' => 'আপোনাৰ সম্পাদনা পৰীক্ষিত বুলি চিহ্নিত কৰক',
 'action-unwatchedpages' => 'নিৰীক্ষণ নকৰা পৃষ্ঠাসমূহৰ তালিকা চাওক',
@@ -1597,23 +1581,33 @@ $1",
 'action-userrights-interwiki' => 'আন ৱিকিৰ সদস্যৰ অধিকাৰসমূহ সম্পাদনা কৰক',
 'action-siteadmin' => 'তথ্যকোষ বন্ধ কৰক বা খোলক',
 'action-sendemail' => 'ই-মেইল পঠিয়াওক',
+'action-editmywatchlist' => 'আপোনাৰ লক্ষ্যতালিকা সম্পাদনা কৰক',
+'action-viewmywatchlist' => 'আপোনাৰ লক্ষ্যতালিকা চাওক',
+'action-viewmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য চাওক',
+'action-editmyprivateinfo' => 'আপোনাৰ ব্যক্তিগত তথ্য সম্পাদনা কৰক',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|সাল-সলনি|সাল-সলনি}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|শেষ দৰ্শনৰ পৰা}}',
+'enhancedrc-history' => 'ইতিহাস',
 'recentchanges' => 'শেহতীয়া সাল-সলনি',
 'recentchanges-legend' => 'সাম্প্ৰতিক সালসলনিৰ পছন্দসমূহ',
 'recentchanges-summary' => 'ৱিকিত হোৱা শেহতীয়া সাল-সলনি এই পৃষ্ঠাত অনুসৰণ কৰক।',
+'recentchanges-noresult' => 'নিৰ্ধাৰিত সময়ছোৱাত এই মাপকাঠিৰ লগত মিলা কোনো সালসলনি হোৱা নাই।',
 'recentchanges-feed-description' => 'ৱিকিত হোৱা শেহতীয়া সাল-সলনি এই ফীডত অনুসৰণ কৰক।',
-'recentchanges-label-newpage' => 'à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\87 à¦\8fà¦\96ন à¦¨à¦¤à§\81ন à¦ªà§\83ষà§\8dঠা à¦¤à§\88য়াৰ কৰিছে',
+'recentchanges-label-newpage' => 'à¦\8fà¦\87 à¦¸à¦®à§\8dপাদনাà¦\87 à¦\8fà¦\9fা à¦¨à¦¤à§\81ন à¦ªà§\83ষà§\8dঠাৰ à¦¸à§\83ষà§\8dà¦\9fি কৰিছে',
 'recentchanges-label-minor' => 'এইটো অগুৰুত্বপূৰ্ণ সম্পাদনা',
-'recentchanges-label-bot' => "এই সম্পাদনা ব'টৰ দ্বাৰা কৰা হৈছে",
+'recentchanges-label-bot' => "এই সম্পাদনাটো ব'টে কৰিছে",
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটো এতিয়াও পৰীক্ষা কৰা হোৱা নাই',
-'rcnote' => "যোৱা {{PLURAL:$2|দিনত|'''$2''' দিনত}} সংঘটিত {{PLURAL:$1|'''১'''|'''$1'''}}টা সালসলনি, $5, $4 পৰ্যন্ত ।",
+'recentchanges-label-plusminus' => 'পৃষ্ঠাৰ আকাৰ এই পৰিমাণৰ বাইট পৰিৱৰ্তন হৈছে',
+'recentchanges-legend-heading' => "'''ব্যাখ্যা:'''",
+'recentchanges-legend-newpage' => '(লগতে [[Special:NewPages|নতুন পৃষ্ঠাসমূহৰ তালিকা]] চাওক)',
+'recentchanges-legend-plusminus' => "(''±১২৩'')",
 'rcnotefrom' => "তলত '''$2''' ৰ পৰা হোৱা ('''$1''' লৈকে) পৰিৱৰ্তন দেখুৱা হৈছে ।",
 'rclistfrom' => '$1ৰ পৰা নতুন সালসলনি দেখুৱাওক',
 'rcshowhideminor' => '$1 -সংখ্যক নগণ্য সম্পাদনা',
 'rcshowhidebots' => "ব'ট $1",
-'rcshowhideliu' => 'প্ৰবিষ্ট সভ্যৰ সাল-সলনি $1',
+'rcshowhideliu' => '$1 পঞ্জীভুক্ত সদস্য',
 'rcshowhideanons' => 'বেনামী সদস্য $1',
 'rcshowhidepatr' => '$1 নিৰীক্ষিত সম্পাদনা',
 'rcshowhidemine' => 'মোৰ সম্পাদনা $1',
@@ -1642,7 +1636,7 @@ $1",
 'recentchangeslinked-summary' => "এখন নিৰ্দিষ্ট পৃষ্ঠাৰ লগত সংযুক্ত পৃষ্ঠাসমূহৰ( বা এটা নিৰ্দিষ্ট শ্ৰেণীৰ সদস্যসমূহৰ) শেহতীয়া সালসলনিৰ তালিকা তলত দিয়া হৈছে ।
 [[Special:Watchlist|আপুনি চকু ৰখা পৃষ্ঠাসমূহৰ তালিকা]] ত থকা পৃষ্ঠাসমূহ '''গাঢ়''' দেখা পাব ।",
 'recentchangeslinked-page' => 'পৃষ্ঠাৰ নাম:',
-'recentchangeslinked-to' => 'à¦\85নà§\8dযথা à¦¨à¦¿à§°à§\8dদিষà§\8dà¦\9f à¦ªà§\83ষà§\8dঠাৰ à¦²à¦\97ত à¦¸à¦\82যà§\81à¦\95à§\8dত à¦ªà§\83ষà§\8dঠাসমà§\82হৰ à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿ à¦¦à§\87à¦\96à§\8bৱাওক',
+'recentchangeslinked-to' => 'à¦\85নà§\8dযথা à¦¨à¦¿à§°à§\8dদিষà§\8dà¦\9f à¦ªà§\83ষà§\8dঠাৰ à¦²à¦\97ত à¦¸à¦\82যà§\81à¦\95à§\8dত à¦ªà§\83ষà§\8dঠাসমà§\82হৰ à¦¸à¦¾à¦²à¦¸à¦²à¦¨à¦¿ à¦¦à§\87à¦\96à§\81ৱাওক',
 
 # Upload
 'upload' => 'ফাইল আপল’ড',
@@ -1650,7 +1644,7 @@ $1",
 'reuploaddesc' => 'আপল’ড বাতিল কৰি আপল’ড প্ৰপত্ৰলৈ ঘূৰি যাওক',
 'upload-tryagain' => 'পৰিৱৰ্তিত ফাইলৰ বিৱৰণ দাখিল কৰক',
 'uploadnologin' => 'প্ৰৱেশ কৰা নাই',
-'uploadnologintext' => 'ফাà¦\87ল à¦\86পলâ\80\99ড à¦\95ৰিবলà§\88 à¦\86পà§\81নি à¦\86à¦\97তà§\87 [[Special:UserLogin|লà¦\97-à¦\87ন]] à¦\95ৰিব à¦²à¦¾à¦\97িব ।',
+'uploadnologintext' => 'ফাà¦\87ল à¦\86পলâ\80\99ড à¦\95ৰিবলà§\88 à¦\85নà§\81à¦\97à§\8dৰহ à¦\95ৰি $1 à¦\95ৰà¦\95।',
 'upload_directory_missing' => 'আপলোড ডিৰেক্টৰি ($1)  বিচাৰি পোৱা নগ’ল আৰু ৱেবচাৰ্ভাৰৰ দ্বাৰা তৈয়াৰ কৰিব পৰা নগ’ল ।',
 'upload_directory_read_only' => 'আপল’ড ডিৰেক্টৰি ($1) ৱেবচাৰ্ভাৰৰ দ্বাৰা লিখনযোগ্য নহয় ।',
 'uploaderror' => 'আপল’ডত সমস্যা হৈছে',
@@ -1702,7 +1696,7 @@ $1",
 'overwrite' => 'এতিয়া থকা ফাইলৰ ওপৰত লিখা নিষেধ ।',
 'unknown-error' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে ।',
 'tmp-create-error' => 'অস্থায়ী ফাইল তৈয়াৰ কৰিব পৰা নহ’ল ।',
-'tmp-write-error' => 'অস্থায়ী ফাইল লিখাত সমস্যা হৈছে ।',
+'tmp-write-error' => 'অস্থায়ী ফাইল লিখাত সমস্যা হৈছে।',
 'large-file' => 'পৰামৰ্শ অনুযায়ী ফাইলৰ আকাৰ $1 তকৈ ডাঙৰ হ’ব নালাগে ।
 এই ফাইলৰ আকাৰ $2 ।',
 'largefileserver' => 'চাৰ্ভাৰে অনুমোদন কৰাতকৈ এই ফাইলৰ আকাৰ ডাঙৰ ।',
@@ -1778,7 +1772,7 @@ $1',
 'upload-file-error' => 'আভ্যন্তৰীণ ত্ৰুটি',
 'upload-file-error-text' => 'চাৰ্ভাৰত অস্থায়ী ফাইল সৃষ্টি কৰোঁতে এটা আভ্যন্তৰীণ ত্ৰুটিয়ে দেখা দিছে ।
 অনুগ্ৰহ কৰি [[Special:ListUsers/sysop|প্ৰশাসকৰ]] লগত যোগাযোগ কৰক ।',
-'upload-misc-error' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦\86পলâ\80\99ড à¦¸à¦®à¦¸à§\8dযা',
+'upload-misc-error' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦\86পলâ\80\99ড à¦¤à§\8dৰà§\81à¦\9fি',
 'upload-misc-error-text' => 'আপল’ডৰ সময়ত কোনো অজ্ঞাত সমস্যাই দেখা দিছে ।
 URL টোৰ বৈধতা বিচাৰ কৰি পুনৰ চেষ্টা কৰক ।
 যদি তাৰ পিছতো সমস্যা হয়, তেন্তে এজন [[Special:ListUsers/sysop|প্ৰশাসকৰ]] লগত যোগাযোগ কৰক ।',
@@ -1893,8 +1887,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'upload_source_file' => '(আপোনাৰ কম্পিউটাৰৰ এটা ফাইল)',
 
 # Special:ListFiles
-'listfiles-summary' => 'এই বিশেষ পৃষ্ঠাত সকলো আপল’ড হোৱা ফাইল দেখা পাব ।
-সদস্যৰ দ্বাৰা চেকিলে কেৱল শেহতীয়াকৈ আপল’ড কৰা ফাইলৰ সংস্কৰণ দেখা পোৱা যাব ।',
+'listfiles-summary' => 'এই বিশেষ পৃষ্ঠাত সকলো আপল’ড হোৱা ফাইল দেখা পাব।',
 'listfiles_search_for' => 'মিডিয়াৰ নাম অনুসন্ধান:',
 'imgfile' => 'ফাইল',
 'listfiles' => 'ফাইলৰ তালিকা',
@@ -1905,6 +1898,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listfiles_size' => 'আকাৰ',
 'listfiles_description' => 'বিৱৰণ',
 'listfiles_count' => 'সংস্কৰণ',
+'listfiles-show-all' => 'ছবিসমূহৰ পুৰণা সংস্কৰণ অন্তৰ্ভুক্ত কৰক',
+'listfiles-latestversion' => 'শেহতীয়া সংস্কৰণ',
 'listfiles-latestversion-yes' => 'হয়',
 'listfiles-latestversion-no' => 'নহয়',
 
@@ -1926,7 +1921,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'filehist-comment' => 'মন্তব্য',
 'filehist-missing' => 'ফাইল সন্ধানহীন',
 'imagelinks' => 'ফাইল ব্যৱহাৰ',
-'linkstoimage' => 'তলত দিয়া পৃষ্ঠাবোৰ এই চিত্ৰ খনৰ লগত জৰিত :{{PLURAL:$1|page links|$1 pages link}}',
+'linkstoimage' => 'তলত দিয়া {{PLURAL:$1|পৃষ্ঠাটো|$1 পৃষ্ঠাবোৰ}} এই ফাইলৰ লগত জড়িত:',
 'linkstoimage-more' => 'এই ফাইলৰ লগত $1ৰো বেছি {{PLURAL:$1|পৃষ্ঠা সংযোগ|পৃষ্ঠা সংযোগ}} হৈ আছে ।
 তলৰ তালিকাত {{PLURAL:$1|প্ৰথম পৃষ্ঠা সংযোগ|প্ৰথম $1 পৃষ্ঠা সংযোগ}} দেখুওৱা হৈছে ।
 এখন [[Special:WhatLinksHere/$2|সম্পূৰ্ণ তালিকা]]ও পাব ।',
@@ -2006,6 +2001,10 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 
 # Random page in category
 'randomincategory' => 'শ্ৰেণীৰ যিকোনো পৃষ্ঠা',
+'randomincategory-invalidcategory' => '"$1" বৈধ শ্ৰেণী নাম নহয়।',
+'randomincategory-nopages' => '[[:Category:$1|$1]] শ্ৰেণীত কোনো পৃষ্ঠা নাই।',
+'randomincategory-selectcategory' => 'এই শ্ৰেণীৰ পৰা যিকোনো পৃষ্ঠা চাওক: $1 $2।',
+'randomincategory-selectcategory-submit' => 'যাওক',
 
 # Random redirect
 'randomredirect' => 'অনিৰ্ধাৰিত পুননিৰ্দেশ',
@@ -2020,7 +2019,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'statistics-header-hooks' => 'অন্য পৰিসংখ্যা',
 'statistics-articles' => 'বিষয়বস্তুৰ পৃষ্ঠা',
 'statistics-pages' => 'পৃষ্ঠাসমূহ',
-'statistics-pages-desc' => 'à¦\95থা-বতৰা à¦ªà§\83ষà§\8dঠা, à¦ªà§\81ন:নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
+'statistics-pages-desc' => 'à¦\86লà§\8bà¦\9aনা à¦ªà§\83ষà§\8dঠা, à¦ªà§\81নà¦\83নিৰ্দেশিত পৃষ্ঠা আদি সহ এই ৱিকিৰ সকলো পৃষ্ঠা',
 'statistics-files' => 'আপল’ড কৰা ফাইলসমূহ',
 'statistics-edits' => '{{SITENAME}} স্থাপন কৰাৰেপৰা পৃষ্ঠা সম্পাদনাসমূহ',
 'statistics-edits-average' => 'প্ৰতি পৃষ্ঠাৰ গড় সম্পাদনা',
@@ -2037,6 +2036,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'pageswithprop-text' => 'বিশেষ পৃষ্ঠা উপাদান ব্যৱহাৰ কৰা পৃষ্ঠাসমূহ ইয়াত তালিকাভুক্ত কৰা হৈছে।',
 'pageswithprop-prop' => 'উপাদান নাম:',
 'pageswithprop-submit' => 'যাওক',
+'pageswithprop-prophidden-binary' => 'বাইনেৰী প্ৰপাৰ্টী মূল্য লুকোৱা হৈছে ($1)',
 
 'doubleredirects' => 'দ্বি-পুনঃনিৰ্দেশিত',
 'doubleredirectstext' => 'আন পুনৰ্নিদেশনা পৃষ্ঠালৈ পুনৰ্নিৰ্দেশিত পৃষ্ঠাসমূহ এই তালিকাত দিয়া হৈছে ।
@@ -2053,7 +2053,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'brokenredirects-delete' => 'বাতিল কৰক',
 
 'withoutinterwiki' => 'ভাষাৰ সংযোগবিহীন পৃষ্ঠাসমূহ',
-'withoutinterwiki-summary' => 'তলৰ পৃষ্ঠাসমূহ আন ভাষাৰ সংস্কৰণৰ লগত সংযুক্ত নহয় ।',
+'withoutinterwiki-summary' => 'তলৰ পৃষ্ঠাসমূহ আন ভাষাৰ সংস্কৰণৰ লগত সংযুক্ত নহয়।',
 'withoutinterwiki-legend' => 'উপসৰ্গ',
 'withoutinterwiki-submit' => 'দেখুৱাওক',
 
@@ -2065,6 +2065,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'ninterwikis' => '$1 {{PLURAL:$1|ইণ্টাৰৱিকি|ইণ্টাৰৱিকিসমূহ}}',
 'nlinks' => '$1 {{PLURAL:$1|সংযোগ|সংযোগ}}',
 'nmembers' => '{{PLURAL:$1|সদস্য|$1 সদস্যবৃন্দ}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য}}',
 'nrevisions' => '$1টা {{PLURAL:$1|সংশোধন|সংশোধন}}',
 'nviews' => '$1 {{PLURAL:$1|টা দৰ্শন|টা দৰ্শন}}',
 'nimagelinks' => '$1 {{PLURAL:$1|খন পৃষ্ঠাত|খন পৃষ্ঠাত}} ব্যৱহৃত',
@@ -2095,6 +2096,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'mostrevisions' => 'অধিকবাৰ সম্পাদনা কৰা পৃষ্ঠাসমূহ',
 'prefixindex' => 'উপসৰ্গসহ সকলো পৃষ্ঠা',
 'prefixindex-namespace' => 'উপসৰ্গ ($1 namespace) -ৰ সৈতে সকলো পৃষ্ঠা',
+'prefixindex-strip' => 'তালিকাৰ পৰা প্ৰিফিক্স আঁতৰাওক',
 'shortpages' => 'চুটি পৃষ্ঠাসমূহ',
 'longpages' => 'দীঘলীয়া পৃষ্ঠাসমূহ',
 'deadendpages' => 'সংযোগবিহীন পৃষ্ঠাসমূহ',
@@ -2102,14 +2104,13 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'protectedpages' => 'সুৰক্ষিত পৃষ্ঠাসমূহ',
 'protectedpages-indef' => 'কেৱল অনিৰ্দিষ্ট সুৰক্ষা',
 'protectedpages-cascade' => 'কেৱল প্ৰপাতাকাৰ সুৰক্ষা',
-'protectedpagestext' => 'তলৰ পৃষ্ঠাসমূহ অৱলুপ্তি বা স্থানান্তৰকৰণৰ পৰা সুৰক্ষিত',
 'protectedpagesempty' => 'এই পাৰামিটাৰবোৰেৰে কোনো পৃষ্ঠা এতিয়া সুৰক্ষিত কৰা হোৱা নাই ।',
 'protectedtitles' => 'সুৰক্ষিত শিৰোনামাসমূহ',
-'protectedtitlestext' => 'তলৰ শিৰোনামাসমূহ দি পৃষ্ঠা সৃষ্টি কৰিব পৰা নাযাব',
 'protectedtitlesempty' => 'এই পাৰামিটাৰবোৰেৰে কোনো শিৰোনামা এতিয়া সুৰক্ষিত কৰা হোৱা নাই ।',
 'listusers' => 'সদস্য তালিকা',
 'listusers-editsonly' => 'কেৱল সম্পাদনা কৰা সদস্যকহে দেখুৱাওক',
 'listusers-creationsort' => 'সৃষ্টিৰ তাৰিখমতে সজাওক',
+'listusers-desc' => 'নিম্নক্ৰমত সজাওক',
 'usereditcount' => '$1 {{PLURAL:$1|টা সম্পাদনা|টা সম্পাদনা}}',
 'usercreated' => '$1 তাৰিখে $2 সময়ত {{GENDER:$3|য়ে সৃষ্টি কৰিছে}}',
 'newpages' => 'নতুন পৃষ্ঠাসমূহ',
@@ -2156,9 +2157,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'allpagesto' => 'সেই পৃষ্ঠা দেখুৱাওক যাৰ শেষ:',
 'allarticles' => 'সকলো পৃষ্ঠা',
 'allinnamespace' => 'সকলোবোৰ পৃষ্ঠা ($1 নামস্থান)',
-'allnotinnamespace' => 'সকলোবোৰ পৃষ্ঠা ($1 নামস্থানত নথকা)',
-'allpagesprev' => 'আগৰ',
-'allpagesnext' => 'পৰৱৰ্তী',
 'allpagessubmit' => 'যাওক',
 'allpagesprefix' => 'এই উপশব্দৰে আৰম্ভ হোৱা পৃষ্ঠা দেখুৱাওক:',
 'allpagesbadtitle' => 'আপুনি দিয়া পৃষ্ঠাটোৰ শিৰোণামা অবৈধ বা তাত এটা আন্তৰ্ভাষিক বা আন্তৰ্ৱিকি উপসৰ্গ আছে । ইয়াত এক বা ততোধিক বৰ্ণ থাকিব পাৰে যাক শিৰোণামাত ব্যৱহাৰ কৰিব নোৱাৰি ।',
@@ -2214,7 +2212,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'listgrouprights' => 'ব্যৱহাৰকাৰী গোটৰ অধিকাৰ',
 'listgrouprights-summary' => 'এই ৱিকিত থকা গোটসমূহৰ তালিকা সেইবোৰৰ প্ৰৱেশাধিকাৰসহ তলত দিয়া হ’ল ।
 সুকীয়া অধিকাৰ সম্পৰ্কে [[{{MediaWiki:Listgrouprights-helppage}}|অধিক তথ্য]] থাকিব পাৰে ।',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">অনুমোদিত অধিকাৰ</span>
+'listgrouprights-key' => 'ব্যাখ্যা:
+* <span class="listgrouprights-granted">অনুমোদিত অধিকাৰ</span>
 * <span class="listgrouprights-revoked">প্ৰত্যাহাৰ কৰা অধিকাৰ</span>',
 'listgrouprights-group' => 'গোট',
 'listgrouprights-rights' => 'অধিকাৰসমূহ',
@@ -2233,7 +2232,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'mailnologin' => 'পাওঁতাৰ ঠিকনা নাই',
 'mailnologintext' => 'আন সদস্যক ই-মেইল পঠিয়াবলৈ আপুনি [[Special:UserLogin|লগ্‌ ইন]] কৰিব লাগিব আৰু আপোনাৰ [[Special:Preferences|পছন্দসমূহত]] এটা বৈধ ই-মেইল ঠিকনা থাকিব লাগিব ।',
 'emailuser' => 'এই সদস্যজনলৈ ই-মেইল পঠিয়াওক',
-'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনà¦\95}} ইমেইল পঠিয়াওক',
+'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনলà§\88}} ইমেইল পঠিয়াওক',
 'emailuser-title-notarget' => 'ব্যৱহাৰকাৰী ই-পত্ৰ প্ৰেৰণ কৰক',
 'emailpage' => 'ই-পত্ৰ ব্যৱহাৰকাৰী',
 'emailpagetext' => 'তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি আপুনি এই {{GENDER:$1|সদস্যজনলৈ}} ই-মেইল পঠাব পাৰে ।
@@ -2278,14 +2277,14 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
 'addedwatchtext' => 'আপোনাৰ [[Special:Watchlist|লক্ষ্য তালিকাত ]] "[[:$1]]" পৃষ্ঠাখন অন্তৰ্ভুক্ত কৰা হ\'ল।
 ভৱিষ্যতে এই পৃষ্ঠা বা ইয়াৰ আলোচনা পৃষ্ঠাত হোৱা সাল-সলনি আপুনি আপোনাৰ লক্ষ্য তালিকাত দেখিব।',
 'removewatch' => 'লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
-'removedwatchtext' => '"[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\96ন [[Special:Watchlist|à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95া]]ৰ à¦ªà§°à¦¾ à¦\86তৰোৱা হৈছে ।',
+'removedwatchtext' => '"[[:$1]]" à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b [[Special:Watchlist|à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95া]]ৰ à¦ªà§°à¦¾ à¦\86à¦\81তৰোৱা হৈছে ।',
 'watch' => 'চকু ৰাখক',
 'watchthispage' => 'এই পৃষ্ঠাটো লক্ষ্য কৰক',
 'unwatch' => 'চকু দিব নালাগে',
 'unwatchthispage' => 'চকু দিয়া বন্ধ কৰক',
-'notanarticle' => 'বিষয়বসà§\8dতà§\81 পৃষ্ঠা নহয়',
+'notanarticle' => 'সমল পৃষ্ঠা নহয়',
 'notvisiblerev' => 'অন্য কোনো সদস্যই কৰা সংশোধনী বিলোপ কৰা হৈছে',
-'watchlist-details' => 'আলোচনা পৃষ্ঠা সমূহ লেখত নধৰি {{PLURAL:$1|$1 খন পৃষ্ঠা|$1 খন পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে ।',
+'watchlist-details' => 'আলোচনা পৃষ্ঠাসমূহ লেখত নধৰি {{PLURAL:$1|$1 টা পৃষ্ঠা}} আপোনাৰ লক্ষ্য-তালিকাত আছে ।',
 'wlheader-enotif' => 'ইমেইল জাননী সক্ৰিয় কৰা হৈছে।',
 'wlheader-showupdated' => "আপোনাৰ শেষ পৰিদৰ্শনৰ পিছত সলনি হোৱা পৃষ্ঠাসমূহ '''গাঢ়''' আখৰত দেখুওৱা হৈছে।",
 'watchmethod-recent' => 'লক্ষ্য কৰা পৃষ্ঠাসমূহ শেহতীয়া সম্পাদনাৰ বাবে পৰীক্ষা কৰা হৈছে',
@@ -2327,19 +2326,18 @@ $PAGEINTRO $NEWPAGE
 মেইল: $PAGEEDITOR_EMAIL
 ৱিকি: $PAGEEDITOR_WIKI
 
-আপুনি এই পৃষ্ঠাখন নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব।
-আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
+আপুনি এই পৃষ্ঠাটো প্ৰৱেশ কৰি নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব। আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
 
 আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
 
 --
-à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦\9cাননà§\80 à¦\9bà§\87à¦\9fিà¦\82 à¦¸à¦²à¦¨à¦¿ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ ই-মেইল জাননী ছেটিং সলনি কৰিবলৈ চাওক
 {{canonicalurl:{{#special:Preferences}}}}
 
-à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦\9bà§\87à¦\9fিà¦\82 à¦¸à¦²à¦¨à¦¿ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ ছেটিং সলনি কৰিবলৈ চাওক
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-à¦\86পà§\8bনাৰ à¦²à¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦ªà§°à¦¾ à¦ªà§\83ষà§\8dঠা à¦¬à¦¿à¦²à§\8bপ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ পৰা পৃষ্ঠা বিলোপ কৰিবলৈ চাওক
 $UNWATCHURL
 
 প্ৰতিক্ৰিয়া আৰু অধিক সহযোগিতাৰ বাবে:
@@ -2353,7 +2351,7 @@ $UNWATCHURL
 'excontent' => 'বিষয়বস্তু আছিল: "$1"',
 'excontentauthor' => 'বিষয়বস্তু আছিল: "$1" (আৰু একমাত্ৰ অৱদানকাৰী আছিল "[[Special:Contributions/$2|$2]]")',
 'exbeforeblank' => 'খালী কৰাৰ আগেয়ে বিষয়বস্তু আছিল: $1',
-'exblank' => 'পà§\83ষà§\8dঠা à¦\96ালà§\80 আছিল',
+'exblank' => 'পà§\83ষà§\8dঠা à¦\96ালি আছিল',
 'delete-confirm' => '"$1" বিলোপ কৰক',
 'delete-legend' => 'বিলোপ কৰক',
 'historywarning' => "'''সাৱধান:''' আপুনি বিলোপ কৰিব বিচৰা পৃষ্ঠাখনৰ ইতিহাসত প্ৰায় {{PLURAL:$1|সংস্কৰণ|সংস্কৰণ}} আছে:",
@@ -2370,10 +2368,12 @@ $UNWATCHURL
 'deletecomment' => 'কাৰণ:',
 'deleteotherreason' => 'আন/অতিৰিক্ত কাৰণ:',
 'deletereasonotherlist' => 'আন কাৰণ:',
-'deletereason-dropdown' => '* অৱলুপ্তিৰ সাধাৰণ কাৰণসমূহ
-** লেখকৰ অনুৰোধ
+'deletereason-dropdown' => '* বিলোপনৰ সাধাৰণ কাৰণসমূহ
+** স্পাম
+** অসভ্যালি
 ** কপিৰাইট উলঙ্ঘন
-** অসভ্যালি',
+** লেখকৰ অনুৰোধ
+** ভঙা পুনঃনিৰ্দেশনা',
 'delete-edit-reasonlist' => 'অপসাৰণ কৰা কাৰণ সম্পাদনা কৰক',
 'delete-toobig' => 'এই পৃষ্ঠাখনৰ সম্পাদনা ইতিহাস অতি দীঘল, $1 {{PLURAL:$1|টা সংশোধনৰো|টা সংশোধনৰো}} বেছি ।
 {{SITENAME}}ৰ আকস্মিক ক্ষতি ৰোধ কৰিবলৈ এনে পৃষ্ঠাৰ ইতিহাস বিলোপ কৰাত সীমাবদ্ধতা আৰোপ কৰা হৈছে ।',
@@ -2395,7 +2395,7 @@ $UNWATCHURL
 [[User:$3|$3]] ([[User talk:$3|আলোচনা]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])ই এই পৃষ্ঠাৰ শেষ সম্পাদনা কৰিছিল ।",
 'editcomment' => "সম্পাদনাৰ সাৰাংশ আছিল: \"''\$1''\"।",
 'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|কথা-বতৰা]])ৰ সম্পাদনাসমূহ [[User:$1|$1]]য়ে কৰা শেষ সংশোধনলৈ ঘূৰাই নিয়া হৈছে ।',
-'revertpage-nouser' => '(সদস্যনাম বিলোপিত) য়ে কৰা সম্পাদনা [[User:$1|$1]] য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
+'revertpage-nouser' => 'এজন গোপন ব্যৱহাৰকাৰীয়ে কৰা সম্পাদনা {{GENDER:$1|[[User:$1|$1]]}}-য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে।',
 'rollback-success' => '$1 ৰ সম্পাদনাসমূহ পূৰ্বৰ অৱস্থালৈ ঘূৰাই নিয়া হৈছে;
 পৃষ্ঠাখন $2 য়ে কৰা শেষ সংশোধনীলৈ ঘূৰাই নিয়া হৈছে ।',
 
@@ -2499,7 +2499,6 @@ $UNWATCHURL
 'undeletebtn' => 'পুনঃসংস্থাপন কৰক',
 'undeletelink' => 'লক্ষ্য কৰক/ঘূৰাই আনক',
 'undeleteviewlink' => 'দেখুৱাওক',
-'undeletereset' => 'পূৰ্বৰ অৱস্থালৈ লৈ যাওক',
 'undeleteinvert' => 'নিৰ্বাচন ওলোটা কৰক',
 'undeletecomment' => 'কাৰণ:',
 'undeletedrevisions' => '{{PLURAL:$1|১টা সংশোধন|$1টা সংশোধন}} পুনৰুদ্ধাৰ কৰা হৈছে',
@@ -2565,7 +2564,7 @@ $1',
 'sp-contributions-submit' => 'সন্ধান কৰক',
 
 # What links here
-'whatlinkshere' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦¬à§\8dযৱহাৰ à¦\95ৰিà¦\9bà§\87...',
+'whatlinkshere' => 'à¦\87য়ালà§\88 à¦¥à¦\95া à¦¸à¦\82যà§\8bà¦\97সমà§\82হ',
 'whatlinkshere-title' => '"$1"লৈ সংযোজিত পৃষ্ঠাসমূহ',
 'whatlinkshere-page' => 'পৃষ্ঠা:',
 'linkshere' => "এই পৃষ্ঠাটো '''[[:$1]]''' ৰ লগত সংযোজিত:",
@@ -2588,7 +2587,6 @@ $1',
 'block' => 'সদস্য বাৰণ কৰক',
 'unblock' => 'সদস্যৰ বাৰণ উঠাই লওক',
 'blockip' => 'সদস্য বাৰণ কৰক',
-'blockip-title' => 'সদস্য বাৰণ কৰক',
 'blockip-legend' => 'সদস্য বাৰণ কৰক',
 'blockiptext' => 'তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি কোনো নিৰ্দিষ্ট আই.পি. ঠিকনা বা সদস্যনামৰ লিখাৰ অধিকাৰ বাৰণ কৰিব পাৰে ।
 কেৱল ধ্বংসপ্ৰৱণতা ৰোধ কৰিবলৈ আৰু [[{{MediaWiki:Policy-url}}|নীতি]] মানি চলি এনে কৰক ।
@@ -2596,7 +2594,6 @@ $1',
 'ipadressorusername' => 'আই-পি ঠিকনা বা সদস্যনাম:',
 'ipbexpiry' => 'ম্যাদ উকলিব:',
 'ipbreason' => 'কাৰণ:',
-'ipbreasonotherlist' => 'অন্য কাৰণ',
 'ipbreason-dropdown' => '*প্ৰতিবন্ধকৰ সাধাৰণ কাৰণসমূহ
 ** ভুল তথ্য দিয়া
 ** পৃষ্ঠাৰ বিষয়বস্তু আঁতৰাই পেলোৱা
@@ -2612,8 +2609,6 @@ $1',
 'ipbsubmit' => 'এই সদস্যক বাৰণ কৰক',
 'ipbother' => 'অন্য সময়:',
 'ipboptions' => '২ ঘণ্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাহ:1 month,৩ মাহ:3 months,৬ মাহ:6 months,১ বছৰ:1 year,অনিৰ্দিষ্ট কাল:infinite',
-'ipbotheroption' => 'অন্যান্য',
-'ipbotherreason' => 'অন্য/অতিৰিক্ত কাৰণ:',
 'ipbhidename' => 'সম্পাদনা আৰু তালিকা সমূহৰ পৰা সদস্যনাম আঁৰ দিয়ক',
 'ipbwatchuser' => 'এই সদস্যৰ সদস্য আৰু আলোচনা পৃষ্ঠা লক্ষ্য কৰক',
 'ipb-disableusertalk' => 'প্ৰতিবন্ধক থকা অৱস্থাত এই সদস্যজনক নিজৰ কথা-বতৰা পৃষ্ঠা সম্পাদনা কৰাৰ পৰা বিৰত কৰক',
@@ -2705,7 +2700,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'sorbsreason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
 'sorbs_create_account_reason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
 আপুনি একাউণ্ট সৃষ্টি কৰিব নোৱাৰে',
-'cant-block-while-blocked' => 'নিজেই অৱৰোধিত হৈ থকা অৱস্থাত আপুনি আন সদস্যক অৱৰোধ কৰিব নোৱাৰে ।',
+'xffblockreason' => "X-Forwarded-For header-ত থকা আপোনাৰ বা আপুনি ব্যৱহাৰ কৰি থকা প্ৰক্সী চাৰ্ভাৰৰ এটা আই পি ঠিকনা বাৰণ কৰা হৈছে। বাৰণ কৰাৰ কাৰণ হ'ল: $1",
 'cant-see-hidden-user' => 'আপুনি বাৰণ কৰিব বিচৰা সদস্যজনক ইতিমধ্যেই বাৰণ কৰি গোপন কৰা হৈছে ।
 যিহেতু আপোনাৰ সদস্যগোপনতা অধিকাৰ নাই, আপুনি সদস্যজনৰ প্ৰতিবন্ধক চাব বা সম্পাদনা কৰিব নোৱাৰে ।',
 'ipbblocked' => 'আপুনি আন সদস্যক অৱৰোধ কৰিব বা আঁতৰাব নোৱাৰে, কাৰণ আপুনি নিজেই বাধাপ্ৰাপ্ত অৱস্থাত আছে',
@@ -2742,11 +2737,11 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 যদি এইটো কৰিব নিবিচাৰে তেনেহ'লে  [[Special:DoubleRedirects|দ্বি-পুনৰ্নিৰ্দেশনাসমূহ]] বা [[Special:BrokenRedirects|ভঙা পুনৰ্নিৰ্দেশনাসমূহ]] বাছনি কৰে যেন।
 সকলো সংযোগ সঠিক দিশলৈ পোনাৱাৰ দায়িত্ব আপোনাৰ।
 
-মন à¦\95ৰিব à¦¯à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা '''নহ'ব''' à¦¯à¦¦à¦¿à¦¹à§\87 à¦¨à¦¤à§\81ন à¦¶à¦¿à§°à§\8bনামà¦\9fà§\8bত à¦ªà§\82ৰà§\8dবৰপৰা à¦\8fà¦\96ন à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87à¦\87, à¦\86ৰà§\81 à¦¯à¦¦à¦¿à¦¹à§\87 à¦ªà§\82ৰà§\8dবৰ à¦ªà§\83ষà§\8dঠাà¦\96ন কোনো পুনৰ্নিৰ্দেশ নহয় আৰু তাৰ কোনো সম্পাদনাৰ পূৰ্বইতিহাস নাই।
-à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নà¦\95 à¦\86ন à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নà§\87ৰে সলনি কৰিব নোৱাৰে।
+মন à¦\95ৰিব à¦¯à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦¸à§\8dথানানà§\8dতৰ à¦\95ৰা '''নহ'ব''' à¦¯à¦¦à¦¿à¦¹à§\87 à¦¨à¦¤à§\81ন à¦¶à¦¿à§°à§\8bনামà¦\9fà§\8bত à¦ªà§\82ৰà§\8dবৰপৰা à¦\8fà¦\9fা à¦ªà§\83ষà§\8dঠা à¦\86à¦\9bà§\87à¦\87, à¦\86ৰà§\81 à¦¯à¦¦à¦¿à¦¹à§\87 à¦ªà§\82ৰà§\8dবৰ à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b কোনো পুনৰ্নিৰ্দেশ নহয় আৰু তাৰ কোনো সম্পাদনাৰ পূৰ্বইতিহাস নাই।
+à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাà¦\95 à¦\86ন à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হ’ব পাৰে;
+à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰ বাবে এয়া এক ডাঙৰ আৰু অনাকাংক্ষিত সাল-সলনি হ’ব পাৰে;
 আগবঢ়াৰ পূৰ্বে এই কাৰ্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetext-noredirectfixer' => "তলৰ প্ৰপত্ৰ ব্যৱহাৰ কৰিলে এই পৃষ্ঠাৰ শিৰোনামা সলনি হ'ব, লগতে সমগ্ৰ ইতিহাস নতুন শিৰোনামালৈ স্থানান্তৰ কৰা হ'ব।
 পুৰণা শিৰোনামাটো নতুন শিৰোনামালৈ এটা পুনৰ্নিৰ্দেশনা হৈ ৰ'ব।
@@ -2754,19 +2749,18 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 সকলো সংযোগে যাতে সঠিক দিশলৈ পোনায়, সেয়া লক্ষ্য কৰা দায়িত্ব আপোনাৰ।
 
 মন কৰিব যে নতুন শিৰোনামাতো যদি প্ৰচলিত, এই পৃষ্ঠা নতুন শিৰোনামালৈ সলনি কৰা '''নহ'ব''' যদিহে সেই পৃষ্ঠা খালী বা কোনো পুনৰ্নিৰ্দেশনৰ পূৰ্ব ইতিহাস নাই।
-à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
+à¦\87য়াৰ à¦\85ৰà§\8dথ à¦\8fয়à§\87 à¦¯à§\87 à¦­à§\81ল à¦¹à¦²à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b à¦\86à¦\97ৰ à¦ à¦¾à¦\87তà§\87 à¦¥à¦¾à¦\95িব, à¦\86ৰà§\81 à¦\86পà§\81নি à¦ªà§\8dৰà¦\9aলিত à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাক আন পৃষ্ঠা এখনেৰে সলনি কৰিব নোৱাৰে।
 
 '''সতৰ্কবাণী !'''
-à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\96নৰ বাবে এয়া এক ডাঙৰ আৰু অকানাংক্ষিত সাল-সলনি হ'ব পাৰে;
+à¦\9cনপà§\8dৰিয় à¦ªà§\83ষà§\8dঠা à¦\8fà¦\9fাৰ বাবে এয়া এক ডাঙৰ আৰু অকানাংক্ষিত সাল-সলনি হ'ব পাৰে;
 এই কাৰ্য্যৰ পৰিণাম ভালদৰে বিবেচনা কৰি লয় যেন।",
 'movepagetalktext' => "পৃষ্ঠাখনৰ লগতে সংশ্লিষ্ট আলোচনা পৃষ্ঠাখনো স্বয়ংক্ৰিয়ভাৱে স্থানান্তৰ হ’ব; এনে নহয় '''যদিহে:'''
-*নতà§\81ন à¦¶à¦¿à§°à§\8bনামাৰ à¦\85ধà§\80নত à¦\8fà¦\96ন à¦\96ালà§\80 নোহোৱা আলোচনা পৃষ্ঠা ইতিমধ্যেই থাকে, বা
+*নতà§\81ন à¦¶à¦¿à§°à§\8bনামাৰ à¦\85ধà§\80নত à¦\8fà¦\9fা à¦\96ালি নোহোৱা আলোচনা পৃষ্ঠা ইতিমধ্যেই থাকে, বা
 *আপুনি তলৰ ঘৰটো অচিহ্নিত কৰে ।
 
-তà§\87নà§\87 à¦\95à§\8dষà§\87তà§\8dৰত à¦\86পà§\81নি à¦\86পà§\81নি à¦\87à¦\9aà§\8dà¦\9bা à¦\95ৰিলà§\87 à¦¨à¦¿à¦\9c à¦¹à¦¾à¦¤à§\87 à¦ªà§\83ষà§\8dঠাà¦\96ন স্থানান্তৰ বা একত্ৰীকৰণ কৰিব পাৰে ।",
+তà§\87নà§\87 à¦\95à§\8dষà§\87তà§\8dৰত à¦\86পà§\81নি à¦\86পà§\81নি à¦\87à¦\9aà§\8dà¦\9bা à¦\95ৰিলà§\87 à¦¨à¦¿à¦\9c à¦¹à¦¾à¦¤à§\87 à¦ªà§\83ষà§\8dঠাà¦\9fà§\8b স্থানান্তৰ বা একত্ৰীকৰণ কৰিব পাৰে ।",
 'movearticle' => 'পৃষ্ঠা স্থানান্তৰ কৰক:',
 'moveuserpage-warning' => "'''সতৰ্কবাণী:''' আপুনি এখন সদস্যপৃষ্ঠা স্থানান্তৰ কৰিবলৈ বিছাৰিছে । অনুগ্ৰহ কৰি মন কৰক যে কেৱল সদস্যপৃষ্ঠাখনহে স্থানান্তৰ হ’ব আৰু সদস্যজনৰ পুনঃনামাকৰণ নহ’ব ।",
-'movenologin' => 'প্ৰৱেশ কৰা নাই',
 'movenologintext' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপুনি ভুক্ত সদস্য হৈ [[Special:UserLogin|প্ৰৱেশ]] কৰিব লাগিব ।',
 'movenotallowed' => 'পৃষ্ঠা স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
 'movenotallowedfile' => 'নথিখন স্থানান্তৰ কৰিবলৈ আপোনাৰ অনুমতি নাই ।',
@@ -2781,10 +2775,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
 'movepage-moved-noredirect' => 'পুনৰ্নিৰ্দেশনা সৃষ্টি কৰা নিবাৰণ কৰা হৈছে ।',
 'articleexists' => 'সেই নামৰ পৃষ্ঠা এটা আগৰ পৰাই আছে, বা সেই নামতো অযোগ্য।
 বেলেগ নাম এটা বাছি লওক।',
-'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত ।',
-'talkexists' => "'''পৃষ্ঠাখন স্থানান্তৰ কৰা হৈছে, কিন্তু ইয়াৰ লগত জৰিত বাৰ্তা পৃষ্ঠাখন স্থানান্তৰ কৰা নহ'ল, কাৰণ নতুন ঠাইত বাৰ্তা পৃষ্ঠা এখন আগৰ পৰাই আছে।
-অনুগ্ৰহ কৰি আপুনি নিজৰ হাতেৰে স্থানান্তৰ কৰক ।'''",
-'movedto' => 'লৈ স্থানান্তৰ কৰা হ’ল',
+'cantmove-titleprotected' => 'আপুনি ইয়ালৈ কোনো পৃষ্ঠা স্থানান্তৰ কৰিব নোৱাৰে, কাৰণ এই নতুন শিৰোনামা সৃষ্টিৰ পৰা সুৰক্ষিত।',
 'movetalk' => 'সংলগ্ন বাৰ্তা পৃষ্ঠা স্থানান্তৰ কৰক',
 'move-subpages' => 'উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1লৈ)',
 'move-talk-subpages' => 'আলোচনা পৃষ্ঠাৰ উপ-পৃষ্ঠাসমূহ স্থানান্তৰ কৰক ($1-লৈ)',
@@ -2900,7 +2891,7 @@ $2',
 'import-comment' => 'মন্তব্য:',
 'importtext' => "অনুগ্ৰহ কৰি [[Special:Export|ৰপ্তানি সুবিধা]] ব্যৱহাৰ কৰি উৎস ৱিকিৰ পৰা ফাইলটো ৰপ্তানি কৰক।
 আপোনাৰ কম্পিউটাৰত সাঁচি ৰাখক আৰু ইয়াত আপল'ড কৰক।",
-'importstart' => 'পà§\83ষà§\8dঠা à¦\86মদানি à¦\95ৰা à¦¹à§\88 à¦¹à§\88ছে...',
+'importstart' => 'পà§\83ষà§\8dঠা à¦\86মদানি à¦\95ৰা à¦¹à§\88 à¦\86ছে...',
 'import-revision-count' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}',
 'importnopages' => 'আমদানি কৰিবলৈ কোনো পৃষ্ঠা নাই ।',
 'imported-log-entries' => "$1 {{PLURAL:$1|টা অভিলেখ ভৰ্তি|টা অভিলেখ ভৰ্তি}} আমদানি কৰা হ'ল ।",
@@ -3002,7 +2993,7 @@ $2',
 'tooltip-ca-nstab-main' => 'এই ৱিকিৰ সূচী চাওক',
 'tooltip-ca-nstab-user' => 'সভ্যৰ ব্যক্তিগত পৃষ্ঠালৈ',
 'tooltip-ca-nstab-media' => 'মিডিয়া পৃষ্ঠাখন চাওক',
-'tooltip-ca-nstab-special' => 'à¦\8fà¦\87à¦\96ন à¦\8fà¦\96ন বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
+'tooltip-ca-nstab-special' => 'à¦\8fà¦\87à¦\9fà§\8b à¦\8fà¦\9fা বিশেষ পৃষ্ঠা, আপুনি সম্পাদনা কৰিব নোৱাৰে',
 'tooltip-ca-nstab-project' => 'প্ৰকল্প পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-image' => 'নথিৰ পৃষ্ঠা চাওক',
 'tooltip-ca-nstab-mediawiki' => 'প্ৰণালী বাৰ্তা চাওক',
@@ -3063,13 +3054,14 @@ $2',
 'pageinfo-length' => 'পৃষ্ঠাৰ দৈৰ্ঘ্য (বাইটত)',
 'pageinfo-article-id' => 'পৃষ্ঠা ID',
 'pageinfo-language' => 'পৃষ্ঠাত সন্নিবিষ্ট ভাষা',
-'pageinfo-robot-policy' => 'সন্ধান ইঞ্জিনৰ স্থিতি',
-'pageinfo-robot-index' => 'ইনডেক্স উপযোগী',
-'pageinfo-robot-noindex' => 'ইনডেক্সৰ অনুপযোগী',
+'pageinfo-content-model' => 'পৃষ্ঠাৰ সমলৰ মডেল',
+'pageinfo-robot-policy' => "ৰ'ব'টৰ জৰিয়তে ইন্‌ডেক্সিং কৰা হৈছে",
+'pageinfo-robot-index' => 'অনুমোদিত',
+'pageinfo-robot-noindex' => 'অনুমোদন অগ্ৰাহ্য',
 'pageinfo-views' => 'দৰ্শনৰ সংখ্যা',
 'pageinfo-watchers' => 'পৃষ্ঠা নিৰীক্ষকৰ সংখ্যা',
 'pageinfo-few-watchers' => '$1 {{PLURAL:$1|তকৈ কম নিৰীক্ষক}}',
-'pageinfo-redirects-name' => 'পà§\83ষà§\8dঠালà§\88 à¦¥à¦\95া à¦ªà§\81নৰà§\8dনিৰà§\8dদà§\87শ',
+'pageinfo-redirects-name' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠালà§\88 à¦¥à¦\95া à¦ªà§\81নৰà§\8dনিৰà§\8dদà§\87শৰ à¦¸à¦\82à¦\96à§\8dযা',
 'pageinfo-subpages-name' => 'এই পৃষ্ঠাৰ উপপৃষ্ঠাসমূহ',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|পুনৰ্নিৰ্দেশ|পুনৰ্নিৰ্দেশসমূহ}}; $3 {{PLURAL:$3|অপুনৰ্নিৰ্দেশ নাই|অপুনৰ্নিৰ্দেশসমূহ}})',
 'pageinfo-firstuser' => 'পৃষ্ঠাখনৰ সৃষ্টিকৰ্তা',
@@ -3405,7 +3397,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-compression-4' => "CCITT দল ৪ ফেক্স এনক'ডিং",
 
 'exif-copyrighted-true' => 'কপিৰাইট আছে',
-'exif-copyrighted-false' => "ৰাজহুৱা ড'মেইন",
+'exif-copyrighted-false' => 'কপিৰাইট সংক্ৰান্ত তথ্য নাই',
 
 'exif-unknowndate' => 'অজ্ঞাত তাৰিখ',
 
@@ -3609,15 +3601,10 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'exif-urgency-high' => 'উচ্চ ($1)',
 'exif-urgency-other' => 'ব্যৱহাৰকাৰী-বিৱৰিত প্ৰাথমিকতা ($1)',
 
-# External editor support
-'edit-externally' => 'বাহিৰা আহিলা ব্যৱহাৰ কৰি এই ফাইলটো সম্পাদনা কৰক ।',
-'edit-externally-help' => 'অধিক তথ্যৰ কাৰণে [https://www.mediawiki.org/wiki/Manual:External_editors প্ৰস্তুত কৰা নিৰ্দেশনা] চাওক ।',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'সকলো',
 'namespacesall' => 'সকলোবোৰ',
 'monthsall' => 'সকলো',
-'limitall' => 'সকলোবোৰ',
 
 # Email address confirmation
 'confirmemail' => 'ই-মেইল ঠিকনা নিশ্চিত কৰক',
@@ -3641,7 +3628,6 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
 'confirmemail_success' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিতকৰণ কৰা হৈছে ।
 আপুনি এতিয়া [[Special:UserLogin|প্ৰৱেশ]] কৰক আৰু ৱিকি উপভোগ কৰক ।',
 'confirmemail_loggedin' => 'আপোনাৰ ই-মেইল ঠিকনা নিশ্চিত কৰা হৈছে ।',
-'confirmemail_error' => 'আপোনাৰ নিশ্চিতকৰণ সংৰক্ষণ কৰাত কিছু সমস্যা হৈছে ।',
 'confirmemail_subject' => '{{SITENAME}} ই-মেইল ঠিকনা নিশ্চিতকৰণ',
 'confirmemail_body' => 'কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা এইটো ই-মেইল ঠিকনা ব্যৱহাৰ কৰি {{SITENAME}}ত
 এটা একাউণ্ট "$2" পঞ্জীয়ন কৰিছে ।
@@ -3672,14 +3658,14 @@ $5
 
 এই নিশ্চিতকৰণ সংকেতৰ ম্যাদ $4ত উকলিব ।',
 'confirmemail_body_set' => 'কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা {{SITENAME}}ত
-একাউণ্ট "$2"ৰ ই-মেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
+একাউণ্ট "$2"ৰ ইমেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
 
-à¦\8fà¦\87 à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦\86পà§\8bনাৰ à¦¹à¦¯à¦¼à¦¨à§\87 à¦¨à¦¹à¦¯à¦¼ à¦¨à¦¿à¦¶à§\8dà¦\9aিত à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87 à¦\86ৰà§\81 {{SITENAME}}ত à¦\87-মà§\87à¦\87ল à¦¬à§\88শিষà§\8dà¦\9fসমà§\82হ à¦ªà§\81নৰ à¦¸à¦\95à§\8dৰিয় à¦\95ৰাৰ à¦¬à¦¾à¦¬à§\87
-à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\81লক:
+এই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে
+à¦\86পà§\8bনাৰ à¦¬à§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 à¦¸à¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\8bলক:
 
 $3
 
-যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ই-মেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
+যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ইমেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
 এই সংযোগটো চাওক:
 
 $5
@@ -3703,14 +3689,14 @@ $5
 'recreate' => 'পুনৰ সৃষ্টি কৰক',
 
 # action=purge
-'confirm_purge_button' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'confirm_purge_button' => 'শà§\81দà§\8dধ',
 'confirm-purge-top' => 'এই পৃষ্ঠাৰ কেচ্‌ খালী কৰা হওক ?',
 'confirm-purge-bottom' => "এখন পৃষ্ঠাক শোধিত কৰিলে কেচ্‌ আতৰি যায় আৰু সকলোতকৈ শেহতীয়া সংশোধন প্ৰদৰ্শিত হ'বলৈ বাধ্য কৰে।",
 
 # action=watch/unwatch
-'confirm-watch-button' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'confirm-watch-button' => 'শà§\81দà§\8dধ',
 'confirm-watch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাত যোগ কৰক',
-'confirm-unwatch-button' => 'ঠিà¦\95 à¦\86à¦\9bà§\87',
+'confirm-unwatch-button' => 'শà§\81দà§\8dধ',
 'confirm-unwatch-top' => 'এই পৃষ্ঠাখন আপোনাৰ লক্ষ্য-তালিকাৰ পৰা আঁতৰাওক',
 
 # Multipage image navigation
@@ -3719,11 +3705,15 @@ $5
 'imgmultigo' => 'যাওক',
 'imgmultigoto' => '$1 পৃষ্ঠালৈ যাওক',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(ডিফল্ট ভাষা)',
+'img-lang-go' => 'যাওক',
+
 # Table pager
 'ascending_abbrev' => 'আৰোহণ',
 'descending_abbrev' => 'অৱতৰণ',
 'table_pager_next' => 'পৰৱৰ্তী পৃষ্ঠা',
-'table_pager_prev' => 'পà§\82ৰà§\8dববৰ্তী পৃষ্ঠা',
+'table_pager_prev' => 'পà§\82ৰà§\8dবৱৰ্তী পৃষ্ঠা',
 'table_pager_first' => 'প্ৰথম পৃষ্ঠা',
 'table_pager_last' => 'শেষ পৃষ্ঠা',
 'table_pager_limit' => 'প্ৰতি পৃষ্ঠাত $1 টা বিষয়বস্তু দেখুৱাওক',
@@ -3802,6 +3792,7 @@ $5
 'version-license' => 'অনুজ্ঞাপত্ৰ',
 'version-poweredby-credits' => "এই ৱিকি '''[https://www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দ্বাৰা প্ৰচলিত , কপিৰাইট © ২০০১-$1 $2.",
 'version-poweredby-others' => 'অন্য',
+'version-poweredby-translators' => 'translatewiki.net অনুবাদকসকল',
 'version-credits-summary' => 'আমি নিম্নোক্ত ব্যক্তিসকলক তেওঁলোকে [[Special:Version|মিডিয়াৱিকি]]লৈ দিয়া দিয়া বৰঙনিৰ বাবে চিনাকী  কৰিব বিচাৰিছো।',
 'version-license-info' => "মিডিয়াৱিকি এটা বিনামূলীয়া চফ্টৱেৰ; আপুনি Free Software Foundation -ৰ দ্বাৰা প্ৰকাশিত GNU General Public License -ৰ চুক্তিসমূহৰ অন্তৰ্গত ইয়াক পুনৰ বিতৰণ কৰিব পাৰিব অথবা সলনি কৰিব পাৰিব; হয়তো অনুজ্ঞাপত্ৰৰ সংস্কৰণ ২ 
 অথবা (আপোনাৰ বিকল্পত) যিকোনো পৰৱৰ্তী সংস্কৰণ।
@@ -3818,13 +3809,15 @@ $5
 'version-entrypoints-header-url' => 'ইউআৰএল',
 
 # Special:Redirect
-'redirect' => 'ফাইল, সদস্য, বা সংশোধন আই ডিৰে পুনঃনিৰ্দেশ',
-'redirect-legend' => 'এটা ফাইল বা এখন এখন পৃষ্ঠালৈ পুনঃনিৰ্দেশ',
-'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক পুনঃনির্দেশিত কৰিছে অন্য এটা নথিপত্রলৈ (নথিপত্রৰ নাম), এটা পৃষ্ঠালৈ (পৃষ্ঠাৰ নাম), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ(সংখ্যাৰে লিখা সদস্যৰ আইডি) ।',
+'redirect' => 'ফাইল, সদস্য, পৃষ্ঠা বা সংশোধন আই ডি-ৰে পুনঃনিৰ্দেশ',
+'redirect-legend' => 'এটা ফাইল বা পৃষ্ঠালৈ পুনঃনিৰ্দেশ',
+'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক অন্য এটা ফাইললৈ (ফাইলৰ নাম), এটা পৃষ্ঠালৈ (সংশোধন আই ডি বা পৃষ্ঠা আই ডি), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ (সদস্যৰ সাংখ্যিক আই ডি) পুনঃনির্দেশিত কৰিছে।
+ব্যৱহাৰ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], বা [[{{#Special:Redirect}}/user/101]]।',
 'redirect-submit' => 'যাওক',
 'redirect-lookup' => 'চাওক:',
 'redirect-value' => 'মূল্য:',
 'redirect-user' => 'সদস্য আই ডি',
+'redirect-page' => 'পৃষ্ঠা ID',
 'redirect-revision' => 'পৃষ্ঠা সংশোধন',
 'redirect-file' => 'ফাইলৰ নাম',
 'redirect-not-exists' => "মূল্য পোৱা নগ'ল",
@@ -3842,9 +3835,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
+'specialpages-note-top' => 'ব্যাখ্যা',
 'specialpages-note' => '* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
-* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>
-* <span class="mw-specialpagecached">কেশ্ব কৰা বিশেষ পৃষ্ঠাসমূহ (অপ্ৰচলিতও হ\'ব পাৰে)।</span>',
+* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>',
 'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
 'specialpages-group-other' => 'অন্যান্য বিশেষ পৃষ্ঠাসমূহ',
 'specialpages-group-login' => 'প্ৰৱেশ/একাউণ্ট সৃষ্টি কৰক',
@@ -3860,7 +3853,7 @@ $5
 
 # Special:BlankPage
 'blankpage' => 'উকা পৃষ্ঠা',
-'intentionallyblankpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\87à¦\9aà§\8dà¦\9bাà¦\95à§\83তভাৱà§\87 à¦\96ালà§\80 ৰখা হৈছে ।',
+'intentionallyblankpage' => 'à¦\8fà¦\87 à¦ªà§\83ষà§\8dঠা à¦\87à¦\9aà§\8dà¦\9bাà¦\95à§\83তভাৱà§\87 à¦\96ালি ৰখা হৈছে ।',
 
 # External image whitelist
 'external_image_whitelist' => " #এই শাৰী যেনেকৈ আছে তেনেকৈয়ে ৰাখক<pre>
@@ -3876,8 +3869,9 @@ $5
 'tags' => 'সালসলনি টেগসমূহ চাওক',
 'tag-filter' => '[[Special:Tags|টেগ]] ছেকনী:',
 'tag-filter-submit' => 'সংশোধন',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|টেগ্‌}}]]: $2)',
 'tags-title' => 'টেগসমূহ',
-'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে ।',
+'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে।',
 'tags-tag' => 'টেগ নাম',
 'tags-display-header' => 'পৰিৱৰ্তন তালিকাসমূহত ৰূপ',
 'tags-description-header' => 'অৰ্থৰ পূৰ্ণ বৰ্ণনা',
@@ -3890,7 +3884,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'পৃষ্ঠা তুলনা কৰক',
-'compare-selector' => 'পৃষ্ঠা পুনৰীক্ষন তুলনা কৰক',
 'compare-page1' => 'পৃষ্ঠা ১',
 'compare-page2' => 'পৃষ্ঠা ২',
 'compare-rev1' => 'পুনৰীক্ষণ ১',
@@ -3911,7 +3904,7 @@ $5
 'dberr-cachederror' => "এইখন অনুৰোধ কৰা পৃষ্ঠাৰ কেচ্‌ড লিপি, যিখন নবীকৰণ নকৰাও হ'ব পাৰে ।",
 
 # HTML forms
-'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dতিত à¦\95িà¦\9bà§\81মান সমস্যা হৈছে',
+'htmlform-invalid-input' => 'à¦\86পà§\8bনাৰ à¦\95িà¦\9bà§\81মান à¦\85নà§\8dতৰà§\8dভà§\81à¦\95à§\8dতিত সমস্যা হৈছে',
 'htmlform-select-badoption' => 'আপুনি ধাৰ্য কৰা মান উপযুক্ত বিকল্প নহয়।',
 'htmlform-int-invalid' => 'অপুনি ধাৰ্য কৰা মান অখণ্ড সংখ্যা (integer) নহয়।',
 'htmlform-float-invalid' => 'অপুনি ধাৰ্য কৰা মান সংখ্যা নহয়।',
@@ -3933,7 +3926,7 @@ $5
 'logentry-delete-delete' => " $3 পৃষ্ঠাখন $1ৰদ্বাৰা {{GENDER:$2|বিলোপ কৰা হ'ল}}",
 'logentry-delete-restore' => "$3 পৃষ্ঠাখন $1 ৰদ্বাৰা {{GENDER:$2|পুনৰ্সংৰক্ষণ কৰা হ'ল}}",
 'logentry-delete-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা',
-'logentry-delete-revision' => 'পৃষ্ঠা $3: $4ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}}ৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-revision' => 'পৃষ্ঠা $3ত {{PLURAL:$5|এটা সংশোধন|$5 সংশোধনসমূহ}}ৰ দৃশ্যমানতা $1 {{GENDER:$2|য়ে সলালে}}: $4',
 'logentry-delete-event-legacy' => "$3ত ল'গ ঘটনাসমূহৰ দৃশ্যমানতা $1 {{GENDER:$2|ৰদ্বাৰা সলোৱা হ'ল}}",
 'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3ত পুনৰীক্ষনসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হল',
 'logentry-suppress-delete' => '$1 সংকোচিত পৃষ্ঠা $3',
@@ -3994,7 +3987,7 @@ $5
 'api-error-duplicate-archive-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইল}} যিসমূহ ইতিমধ্যে বিলোপ কৰা হৈছে।',
 'api-error-duplicate-popup-title' => 'প্ৰতিলিপি {{PLURAL:$1|ফাইল|ফাইলসমূহ}}।',
 'api-error-empty-file' => 'আপুনি দাখিল কৰা ফাইলটো খালী ।',
-'api-error-emptypage' => 'নতà§\81ন, à¦\96ালà§\80 পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
+'api-error-emptypage' => 'নতà§\81ন, à¦\96ালি পৃষ্ঠা সৃষ্টি কৰিবলৈ অনুমতি নাই।',
 'api-error-fetchfileerror' => 'আভ্যন্তৰীণ ত্ৰুটি: ফাইলটো অনাত কিবা সমস্যা হৈছে।',
 'api-error-fileexists-forbidden' => '"$1" নামৰ এখন নথি আগৰ পৰাই উপলদ্ধ আৰু ইয়াৰ পুনৰ লিখন অসম্ভৱ ।',
 'api-error-fileexists-shared-forbidden' => 'উমৈহতীয়া ফাইল ভঁৰালত "$1" নামৰ ফাইল এটা আছেই, ইয়াৰ ওপৰত লিখিব নোৱাৰি।',
@@ -4008,7 +4001,7 @@ $5
 'api-error-illegal-filename' => 'ফাইলৰ এই নামটো গ্ৰহণযোগ্য নহয় ।',
 'api-error-internal-error' => "আভ্যন্তৰীণ ত্ৰুটি: এই ৱিকিত আপোনাৰ আপল'ড প্ৰক্ৰিয়া সমাপনত কিবা সমস্যা হৈছে।",
 'api-error-invalid-file-key' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ভঁৰালত ফাইলটো পোৱা নগ'ল।",
-'api-error-missingparam' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦\85নà§\81ৰà§\8bধত à¦ªà§\87ৰামিà¦\9fাৰৰ à¦\95িবা à¦¸à¦®à¦¸à§\8dযা à§°ৈছে।',
+'api-error-missingparam' => 'à¦\86ভà§\8dযনà§\8dতৰà§\80ণ à¦¤à§\8dৰà§\81à¦\9fি: à¦\85নà§\81ৰà§\8bধত à¦ªà¦¾à§°à¦¾à¦®à¦¿à¦\9fাৰৰ à¦\95িবা à¦¸à¦®à¦¸à§\8dযা à¦¹ৈছে।',
 'api-error-missingresult' => "আভ্যন্তৰীণ ত্ৰুটি: অনুলিপি সফল হৈছেনে নাই তাক নিশ্চিত কৰিব পৰা নগ'ল।",
 'api-error-mustbeloggedin' => "ফাইল আপল'ড কৰাৰ আগেয়ে আপুনি প্ৰৱেশ কৰাটো বাধ্যতামূলক ।",
 'api-error-mustbeposted' => 'আভ্যন্তৰীণ ত্ৰুটি: এই অনুৰোধত HTTP POST প্ৰয়োজন।',
@@ -4020,10 +4013,10 @@ $5
 'api-error-publishfailed' => "আভ্যন্তৰীণ ত্ৰুটি: অস্থায়ী ফাইল প্ৰকাশ কৰাত চাৰ্ভাৰ অসমৰ্থ হ'ল।",
 'api-error-timeout' => 'আশা কৰা সময়ৰ ভিতৰত চাৰ্ভাৰটোৱে সঁহাৰি নজনালে।',
 'api-error-unclassified' => 'এক অজ্ঞাত সমস্যাই দেখা দিছে।',
-'api-error-unknown-code' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¸à¦®à¦¸à§\8dযা: "$1"।',
+'api-error-unknown-code' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¤à§\8dৰà§\81à¦\9fি: "$1"।',
 'api-error-unknown-error' => "আভ্যন্তৰীণ ত্ৰুটি: আপোনাৰ ফাইলটো আপল'ড কৰাত কিবা সমস্যা হৈছে।",
 'api-error-unknown-warning' => 'অজ্ঞাত সাৱধানবাণী: "$1"।',
-'api-error-unknownerror' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¸à¦®à¦¸à§\8dযা: "$1"।',
+'api-error-unknownerror' => 'à¦\85à¦\9cà§\8dà¦\9eাত à¦¤à§\8dৰà§\81à¦\9fি: "$1"।',
 'api-error-uploaddisabled' => "এই ৱিকিত আপল'ড নিষ্ক্ৰিয় কৰা হৈছে।",
 'api-error-verification-error' => 'সম্ভৱতঃ এই ফাইলটো ত্ৰুটিপূৰ্ণ বা তাৰ এক্সটেন্‌ছনটো ভুল।',
 
@@ -4032,7 +4025,7 @@ $5
 'duration-minutes' => '$1 {{PLURAL:$1|মিনিট|মিনিট}}',
 'duration-hours' => '$1 {{PLURAL:$1|ঘন্টা|ঘন্টা}}',
 'duration-days' => '$1 {{PLURAL:$1|দিন|দিন}}',
-'duration-weeks' => '{{PLURAL: $1|সপ্তাহ|সপ্তাহ}}',
+'duration-weeks' => '{{PLURAL:$1|সপ্তাহ|সপ্তাহ}}',
 'duration-years' => '$1 {{PLURAL:$1|বছৰ|বছৰ}}',
 'duration-decades' => '$1 {{PLURAL:$1|দশক|দশক}}',
 'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
index 6f165d2..e72b676 100644 (file)
@@ -85,7 +85,6 @@ $messages = array(
 'tog-minordefault' => 'Marcar toles ediciones como menores de mou predetermináu',
 'tog-previewontop' => "Amosar previsualización enantes del cuadru d'edición",
 'tog-previewonfirst' => 'Amosar previsualización na primera edición',
-'tog-nocache' => 'Desactivar la caché de páxines del restolador',
 'tog-enotifwatchlistpages' => 'Mandame un corréu cuando camude una páxina o ficheru de la mio llista de vixilancia',
 'tog-enotifusertalkpages' => "Mandame un corréu cuando camude la mio páxina d'alderique",
 'tog-enotifminoredits' => 'Mandame tamién un corréu cuando heba ediciones menores de les páxines y ficheros',
@@ -221,7 +220,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta páxina',
 'qbmyoptions' => 'Les mios páxines',
-'qbspecialpages' => 'Páxines especiales',
 'faq' => 'EMF (entrugues más frecuentes)',
 'faqpage' => 'Project:FAQ',
 
@@ -439,9 +437,6 @@ Pue contener un caráuter o más que nun puen usase nos títulos.',
 'perfcachedts' => "Los datos siguientes tán na caché y anovaronse por última vegada'l $1. Hai un máximu {{PLURAL:$4|d'un resultáu disponible|de $4 resultaos disponibles}} na caché.",
 'querypage-no-updates' => "Anguaño los anovamientos d'esta páxina tán desactivaos.
 Estos datos nun van refrescase nestos momentos.",
-'wrong_wfQuery_params' => 'Parámetros incorreutos pa wfQuery()<br />
-Función: $1<br />
-Consulta: $2',
 'viewsource' => 'Ver fonte',
 'viewsource-title' => 'Ver la fonte de $1',
 'actionthrottled' => 'Aición llendada',
@@ -578,7 +573,7 @@ Vuelvi a intentalo.',
 'passwordtooshort' => 'Les contraseñes han de tener polo menos {{PLURAL:$1|1 caráuter|$1 caráuteres}}.',
 'password-name-match' => "La contraseña tien de ser distinta del nome d'usuariu.",
 'password-login-forbidden' => "Ta torgao usar esti nome d'usuariu y contraseña.",
-'mailmypassword' => 'Unviar la clave nueva per corréu',
+'mailmypassword' => 'Reaniciar contraseña',
 'passwordremindertitle' => 'Nueva contraseña provisional pa {{SITENAME}}',
 'passwordremindertext' => "Daquién (seique tu, dende la direición IP $1) solicitó una contraseña
 nueva pa {{SITENAME}} ($4). Creóse una contraseña provisional
@@ -632,7 +627,7 @@ Si decide conseñalu, va usase p'atribuir el trabayu al usuariu.",
 'user-mail-no-body' => "Trató d'unviar un corréu electrónicu con un cuerpu baleru o curtiu enforma.",
 
 # Change password dialog
-'resetpass' => 'Camudar la contraseña',
+'changepassword' => 'Camudar la clave',
 'resetpass_announce' => "Aniciasti sesión con un códigu provisional unviáu per corréu electrónicu.
 P'acabar d'aniciar sesión, tienes de configurar equí una contraseña nueva:",
 'resetpass_text' => '<!-- Amestar testu equí -->',
@@ -654,7 +649,7 @@ Seique yá camudaras correutamente la contraseña o que pidieras una nueva contr
 # Special:PasswordReset
 'passwordreset' => 'Reaniciar contraseña',
 'passwordreset-text-one' => 'Complete esti formulariu pa reaniciar la contraseña.',
-'passwordreset-text-many' => '{{PLURAL:$1|Rellene unu de los campos pa reaniciar la contraseña.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Rellene unu de los campos pa recibir una contraseña temporal per corréu.}}',
 'passwordreset-legend' => 'Reaniciar contraseña',
 'passwordreset-disabled' => 'Los reanicios de contraseña tán desactivaos nesta wiki.',
 'passwordreset-emaildisabled' => 'Les funciones de corréu electrónicu tan desactivaes nesta wiki.',
@@ -923,6 +918,8 @@ Esta yá esiste.',
 'content-not-allowed-here' => 'El conteníu «$1» nun se permite na páxina [[$2]]',
 'editwarning-warning' => 'Salir d\'esta páxina pue causar la perda de cualesquier cambiu fechu.
 Si aniciasti sesión, pue desactivase esti avisu na seición "Edición" de les tos preferencies.',
+'editpage-notsupportedcontentformat-title' => 'El formatu del conteníu nun tien sofitu',
+'editpage-notsupportedcontentformat-text' => 'El formatu del conteníu, $1, nun tien sofitu del modelu de conteníu $2.',
 
 # Content models
 'content-model-wikitext' => 'testu wiki',
@@ -965,6 +962,9 @@ Por favor comprueba la comparanza d'abaxo pa confirmar que ye eso lo que quies f
 'cantcreateaccount-text' => "La creación de cuentes dende esta direición IP ('''$1''') foi bloquiada por [[User:$3|$3]].
 
 El motivu dau por $3 ye ''$2''",
+'cantcreateaccount-range-text' => "La creación de cuentes dende direiciones IP del rangu '''$1''', qu'incluye la so direición IP ('''$4'''), ta bloquiada pol usuariu [[User:$3|$3]].
+
+La razón dada por $3 ye ''$2''.",
 
 # History pages
 'viewpagelogs' => "Ver los rexistros d'esta páxina",
@@ -1033,10 +1033,6 @@ Pues ver el diff; los detalles s'alcuentren nel [{{fullurl:{{#Special:Log}}/supr
 'revisiondelete' => 'Desaniciar/restaurar revisiones',
 'revdelete-nooldid-title' => 'Revisión de destín inválida',
 'revdelete-nooldid-text' => 'Nun especificasti una revisión o revisiones destín sobre les que realizar esta función, la revisión especificada nun esiste, o tas intentando anubrir la revisión actual.',
-'revdelete-nologtype-title' => 'Nun se dio la triba de rexistru',
-'revdelete-nologtype-text' => 'Nun conseñasti una triba de rexistru nel que facer esta aición.',
-'revdelete-nologid-title' => 'Entrada del rexistru inválida',
-'revdelete-nologid-text' => 'O nun conseñasti un socesu específicu del rexistru pa facer esta función o la entrada conseñada nun esiste.',
 'revdelete-no-file' => 'El ficheru conseñáu nun esiste.',
 'revdelete-show-file-confirm' => '¿Tas seguru de que quies ver una versión desaniciada del ficheru "<nowiki>$1</nowiki>" del $2 a les $3?',
 'revdelete-show-file-submit' => 'Sí',
@@ -1070,8 +1066,6 @@ $1",
 'logdelete-failure' => "'''Nun se pudo configurar la visibilidá del rexistru:'''
 $1",
 'revdel-restore' => 'camudar visibilidá',
-'revdel-restore-deleted' => 'revisiones desaniciaes',
-'revdel-restore-visible' => 'revisiones visibles',
 'pagehist' => 'Historial de la páxina',
 'deletedhist' => 'Historial elimináu',
 'revdelete-hide-current' => "Error al anubrir l'elementu con data $1, $2: esta ye la revisión actual.
@@ -1149,12 +1143,8 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 # Search results
 'searchresults' => 'Resultaos de la busca',
 'searchresults-title' => 'Resultaos de buscar "$1"',
-'searchresulttext' => 'Pa más información tocante a busques en {{SITENAME}}, vete a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Buscasti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toles páxines qu\'emprimen con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toles páxines qu\'enllacien a "$1"]])',
-'searchsubtitleinvalid' => "Buscasti '''$1'''",
 'toomanymatches' => 'Atopáronse demasiaes coincidencies, por favor fai una consulta diferente',
 'titlematches' => 'Coincidencies de los títulos de la páxina',
-'notitlematches' => 'Nun hai coincidencies nel títulu de la páxina',
 'textmatches' => 'Coincidencies del testu de la páxina',
 'notextmatches' => 'Nun hai coincidencies nel testu de la páxina',
 'prevn' => '{{PLURAL:$1|anterior|$1 anteriores}}',
@@ -1163,10 +1153,8 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'nextn-title' => '{{PLURAL:$1|Siguiente resultáu|Siguientes $1 resultaos}}',
 'shown-title' => 'Amosar $1 {{PLURAL:$1|resultáu|resultaos}} por páxina',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opciones de busca',
 'searchmenu-exists' => "'''Hai una páxina nomada \"[[\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''¡Crear la páxina \"[[:\$1]]\" nesta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Restolar páxines con esti prefixu]]',
 'searchprofile-articles' => 'Páxines de conteníu',
 'searchprofile-project' => 'Páxines de proyeutu y ayuda',
 'searchprofile-images' => 'Multimedia',
@@ -1187,20 +1175,16 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'search-interwiki-default' => '$1 resultaos:',
 'search-interwiki-more' => '(más)',
 'search-relatedarticle' => 'Rellacionáu',
-'mwsuggest-disable' => 'Desactivar les suxerencies de busca',
 'searcheverything-enable' => 'Buscar en tolos espacios de nome',
 'searchrelated' => 'rellacionáu',
 'searchall' => 'toos',
 'showingresults' => "Abaxo {{PLURAL:$1|amuésase '''un''' resultáu|amuésense '''$1''' resultaos}}, entamando col #'''$2'''.",
 'showingresultsnum' => "Abaxo {{PLURAL:$3|amuésase '''un''' resultáu|amuésense '''$3''' resultaos}}, entamando col #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultáu '''$1''' de '''$3'''|Resultaos '''$1 - $2''' de '''$3'''}} pa '''$4'''",
-'nonefound' => "'''Nota''': De mou predetermináu namái se busca en dellos espacios de nomes. Prueba a poner delantre de la to consulta ''all:'' pa buscar en tol conteníu (inxiriendo páxines d'alderique, plantíes, etc.), o usa como prefixu l'espaciu de nome deseáu.",
 'search-nonefound' => 'Nun hebo resultaos que casaren cola consulta.',
-'powersearch' => 'Busca avanzada',
 'powersearch-legend' => 'Busca avanzada',
 'powersearch-ns' => 'Buscar nos espacios de nome:',
 'powersearch-redir' => 'Llistar redireiciones',
-'powersearch-field' => 'Buscar',
 'powersearch-togglelabel' => 'Comprobar:',
 'powersearch-toggleall' => 'Toos',
 'powersearch-togglenone' => 'Dengún',
@@ -1213,7 +1197,6 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'mypreferences' => 'Preferencies',
 'prefs-edits' => "Númberu d'ediciones:",
 'prefsnologintext2' => "Por favor, $1 pa configurar les preferencies d'usuariu",
-'changepassword' => 'Camudar la clave',
 'prefs-skin' => 'Apariencia',
 'skin-preview' => 'Vista previa',
 'datedefault' => 'Ensin preferencia',
@@ -1236,13 +1219,11 @@ Se puen alcontrar más detalles nel [{{fullurl:{{#Special:Log}}/delete|page={{FU
 'prefs-email' => 'Opciones de corréu',
 'prefs-rendering' => 'Aspeutu',
 'saveprefs' => 'Guardar',
-'resetprefs' => 'Llimpiar los cambios ensin guardar',
 'restoreprefs' => 'Restaurar tolos axustes predeterminaos (en toles seiciones)',
 'prefs-editing' => 'Edición',
 'rows' => 'Fileres:',
 'columns' => 'Columnes:',
 'searchresultshead' => 'Buscar',
-'resultsperpage' => 'Resultaos por páxina:',
 'stub-threshold' => 'Llímite superior pa considerar como <a href="#" class="stub">enllaz a entamu</a> (bytes):',
 'stub-threshold-disabled' => 'Desactivao',
 'recentchangesdays' => "Díes que s'amuesen nos cambios recientes:",
@@ -1257,7 +1238,6 @@ Cualquiera que la sepa podrá lleer la so llista de vixilancia; nun la comparta.
 'localtime' => 'Hora llocal:',
 'timezoneuseserverdefault' => 'Usar la predeterminada de la wiki ($1)',
 'timezoneuseoffset' => 'Otru (especificar diferencia)',
-'timezoneoffset' => 'Diferencia¹:',
 'servertime' => 'Hora del sirvidor:',
 'guesstimezone' => 'Obtener del navegador',
 'timezoneregion-africa' => 'África',
@@ -1325,6 +1305,7 @@ Esta información sedrá pública.',
 'prefs-tokenwatchlist' => 'Pase',
 'prefs-diffs' => 'Diferencies',
 'prefs-help-prefershttps' => 'Esta preferencia aplicaráse nel siguiente aniciu de sesión.',
+'prefs-tabs-navigation-hint' => 'Gabitu: pue usar les tecles de flecha izquierda y drecha pa navegar peles llingüetes de la llista.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'La direición de corréu paez válida',
@@ -1511,13 +1492,14 @@ Esta información sedrá pública.',
 'recentchanges-label-bot' => 'Esta edición ta fecha por un bot',
 'recentchanges-label-unpatrolled' => 'Esta edición ta ensin patrullar entá',
 'recentchanges-label-plusminus' => "El tamañu d'esta páxina cambió nesti númberu de bytes",
+'recentchanges-legend-heading' => "'''Lleenda:'''",
 'recentchanges-legend-newpage' => '(ver tamién la  [[Special:NewPages|llista de páxines nueves]])',
-'rcnote' => "Equí embaxo {{PLURAL:$1|pue vese '''1''' cambiu|puen vese los caberos '''$1''' cambios}} {{PLURAL:$2|del caberu día|de los caberos '''$2''' díes}}, a fecha de $5, $4.",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Abaxo tan los cambeos dende '''$2''' (s'amuesen fasta '''$1''').",
 'rclistfrom' => 'Amosar los nuevos cambios dende $1',
 'rcshowhideminor' => '$1 ediciones menores',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 usuarios rexistraos',
+'rcshowhideliu' => '$1 los usuarios rexistraos',
 'rcshowhideanons' => '$1 usuarios anónimos',
 'rcshowhidepatr' => '$1 ediciones supervisaes',
 'rcshowhidemine' => '$1 les mios ediciones',
@@ -1639,6 +1621,7 @@ Si tovía asina quies xubir el ficheru, por favor vuelvi atrás y usa otru nome.
 'file-exists-duplicate' => 'Esti ficheru ye un duplicáu {{PLURAL:$1|del siguiente ficheru|de los siguientes ficheros}}:',
 'file-deleted-duplicate' => 'Yá se desanició enantes un ficheru idénticu a esti ([[:$1]]).
 Deberíes revisar el historial de desaniciu del ficheru enantes de xubilu otra vuelta.',
+'file-deleted-duplicate-notitle' => "Un ficheru idénticu a esti desanicióse anteriormente, y suprimióse'l títulu. Tendría de pidir a dalguién que pueda ver los datos del ficheru desaniciáu que revise la situación enantes de volver a xubilu.",
 'uploadwarning' => 'Avisu de xubíes de ficheros',
 'uploadwarning-text' => 'Por favor, camuda más abaxo la descripción del ficheru y vuelve a tentalo.',
 'savefile' => 'Guardar ficheru',
@@ -1984,6 +1967,7 @@ Les entraes <del>tachaes</del> tan resueltes.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|enllaz|enllaces}}',
 'nmembers' => '$1 {{PLURAL:$1|miembru|miembros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|miembru|miembros}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisión|revisiones}}',
 'nviews' => '$1 {{PLURAL:$1|vista|vistes}}',
 'nimagelinks' => 'Usao en $1 {{PLURAL:$1|páxina|páxines}}',
@@ -2022,10 +2006,9 @@ Les entraes <del>tachaes</del> tan resueltes.',
 'protectedpages' => 'Páxines protexíes',
 'protectedpages-indef' => 'Namái les proteiciones permanentes',
 'protectedpages-cascade' => 'Namái proteiciones en cascada',
-'protectedpagestext' => "Les páxines siguientes tán protexíes escontra'l treslláu y la edición",
+'protectedpages-noredirect' => 'Anubrir redireiciones',
 'protectedpagesempty' => 'Nun hai páxines protexíes anguaño con estos parámetros.',
 'protectedtitles' => 'Títulos protexíos',
-'protectedtitlestext' => 'Los siguiente títulos tán protexíos de la so creación',
 'protectedtitlesempty' => 'Nun hai títulos protexíos anguaño con estos parámetros.',
 'listusers' => "Llista d'usuarios",
 'listusers-editsonly' => 'Amosar namái usuarios con ediciones',
@@ -2077,9 +2060,6 @@ Pues filtrar la visualización seleicionando una mena de rexistru, el nome d'usu
 'allpagesto' => 'Amosar páxines que finen por:',
 'allarticles' => 'Toles páxines',
 'allinnamespace' => 'Toles páxines (espaciu de nomes $1)',
-'allnotinnamespace' => 'Toles páxines (sacantes les del espaciu de nomes $1)',
-'allpagesprev' => 'Anteriores',
-'allpagesnext' => 'Siguientes',
 'allpagessubmit' => 'Dir',
 'allpagesprefix' => 'Amosar páxines col prefixu:',
 'allpagesbadtitle' => "El títulu dau a esta páxina nun yera válidu o tenía un prefixu d'enllaz interllingua o interwiki. Pue contener ún o más carauteres que nun se puen usar nos títulos.",
@@ -2303,6 +2283,7 @@ Restrinxóse l'esborráu d'estes páxines pa evitar perturbaciones accidentales
 'delete-warning-toobig' => "Esta páxina tien un historial d'ediciones grande, más de $1 {{PLURAL:$1|revisión|revisiones}}.
 Esborralu pue perturbar les operaciones de la base de datos de {{SITENAME}};
 obra con precaución.",
+'deleting-backlinks-warning' => "'''Avisu:''' Otres páxines enllacen a la páxina que ta a piques de desaniciar.",
 
 # Rollback
 'rollback' => 'Revertir ediciones',
@@ -2419,7 +2400,6 @@ revisión fuera restaurada o eliminada del archivu.",
 'undeletebtn' => 'Restaurar',
 'undeletelink' => 'ver/restaurar',
 'undeleteviewlink' => 'ver',
-'undeletereset' => 'Reaniciar',
 'undeleteinvert' => 'Invertir seleición',
 'undeletecomment' => 'Motivu:',
 'undeletedrevisions' => '{{PLURAL:$1|1 revisión restaurada|$1 revisiones restauraes}}',
@@ -2508,14 +2488,12 @@ La cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
 'block' => 'Bloquiar usuariu',
 'unblock' => 'Desbloquiar usuariu',
 'blockip' => 'Bloquiar usuariu',
-'blockip-title' => 'Bloquiar usuariu',
 'blockip-legend' => 'Bloquiar usuariu',
 'blockiptext' => "Usa'l siguiente formulariu pa bloquiar el permisu d'escritura a una IP o a un usuariu concretu.
 Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWiki:Policy-url}}|polítiques]]. Da un motivu específicu (como por exemplu citar páxines que fueron vandalizaes).",
 'ipadressorusername' => "Direición IP o nome d'usuariu:",
 'ipbexpiry' => 'Caducidá:',
 'ipbreason' => 'Motivu:',
-'ipbreasonotherlist' => 'Otru motivu',
 'ipbreason-dropdown' => "*Motivos comunes de bloquéu
 ** Enxertamientu d'información falso
 ** Dexar les páxines en blanco
@@ -2531,8 +2509,6 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
 'ipbsubmit' => 'Bloquiar esti usuariu',
 'ipbother' => 'Otru periodu:',
 'ipboptions' => '2 hores:2 hours,1 día:1 day,3 díes:3 days,1 selmana:1 week,2 selmanes:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 añu:1 year,indefiníu:infinite',
-'ipbotheroption' => 'otru',
-'ipbotherreason' => 'Motivu distintu/adicional:',
 'ipbhidename' => "Anubrir el nome d'usuariu d'ediciones y llistes",
 'ipbwatchuser' => "Vixilar les páxines d'usuariu y d'alderique d'esti usuariu",
 'ipb-disableusertalk' => "Torgar qu'esti usuariu edite la so páxina d'alderique mentanto tea bloquiáu",
@@ -2544,6 +2520,7 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
 Mira na [[Special:BlockList|llista de bloqueos]] pa revisar los bloqueos.',
 'ipb-blockingself' => '¡Tas a piques de bloquiate tú mesmu! ¿Tas seguru de que quies facer eso?',
 'ipb-confirmhideuser' => 'Tas a piques de bloquiar un usuariu con "anubrir usuariu" activao. Esto desaniciará el nome del usuariu de tolos llistaos y entraes de los rexistros. ¿De xuro quies facer eso?',
+'ipb-confirmaction' => "Si ta seguru de que quier facelo, por favor, marque'l campu «{{int:ipb-confirm}}» al final.",
 'ipb-edit-dropdown' => 'Editar motivos de bloquéu',
 'ipb-unblock-addr' => 'Desbloquiar $1',
 'ipb-unblock' => "Desbloquiar un nome d'usuariu o direición IP",
@@ -2621,7 +2598,6 @@ Pa ver los bloqueos qu'hai agora mesmo, mira na [[Special:BlockList|llista de bl
 'sorbsreason' => 'La to direición IP sal na llista de proxys abiertos en DNSBL usada por {{SITENAME}}.',
 'sorbs_create_account_reason' => 'La to direición IP sal na llista de proxys abiertos en DNSBL usada por {{SITENAME}}. Nun pues crear una cuenta',
 'xffblockreason' => "Una direición IP presente na testera X-Forwarded-For, o suya o d'un sirvidor proxy que ta usando, ta bloquiada. El motivu orixinal del bloquéu foi: $1",
-'cant-block-while-blocked' => 'Nun pues bloquiar a otros usuarios mentes tu teas bloquiáu.',
 'cant-see-hidden-user' => "L'usuariu que tentes bloquiar yá ta bloquiáu y anubríu.
 Como nun tienes permisos p'anubrir usuarios, nun pues ver o editar el bloquéu del usuariu.",
 'ipbblocked' => 'Nun pues bloquiar o desbloquiar a otros usuarios, porque tas bloquiáu tu mesmu',
@@ -2679,7 +2655,6 @@ por favor, asegúrate d'entender les consecuencies de lo que vas facer enantes d
 Nestos casos vas tener que treslladar o fusionar la páxina manualmente.",
 'movearticle' => 'Treslladar la páxina:',
 'moveuserpage-warning' => "'''Atención:''' Tas a piques de mover una páxina d'usuariu. Atalanta que namái se va mover la páxina y que ''nun'' se va renomar l'usuariu.",
-'movenologin' => 'Non identificáu',
 'movenologintext' => 'Tienes que ser un usuariu rexistráu y tar [[Special:UserLogin|identificáu]] pa treslladar una páxina.',
 'movenotallowed' => 'Nun tienes permisu pa mover páxines.',
 'movenotallowedfile' => 'Nun tienes permisu pa mover ficheros.',
@@ -2694,8 +2669,6 @@ Nestos casos vas tener que treslladar o fusionar la páxina manualmente.",
 'movepage-moved-noredirect' => "Desaniciose la creación d'una redireición.",
 'articleexists' => "Yá hai una páxina con esi nome, o'l nome qu'escoyisti nun ye válidu. Por favor, escueyi otru nome.",
 'cantmove-titleprotected' => "Nun pues mover una páxina a esti llugar porque'l nuevu títulu foi protexíu de la so creación",
-'talkexists' => "'''La páxina treslladóse correutamente, pero non la so páxina d'alderique porque yá esiste una col títulu nuevu. Por favor, fusiónala manualmente.'''",
-'movedto' => 'treslladáu a',
 'movetalk' => "Mover la páxina d'alderique asociada",
 'move-subpages' => 'Treslladar les subpáxines (hasta $1)',
 'move-talk-subpages' => "Treslladar les subpáxines de la páxina d'alderique (hasta $1)",
@@ -2932,6 +2905,7 @@ Pues ver el so códigu fonte.',
 'tooltip-undo' => '"Esfacer" revierte esta edición y abre\'l formulariu d\'edición en mou de vista previa. Permite añader un motivu nel resume.',
 'tooltip-preferences-save' => 'Guardar les preferencies',
 'tooltip-summary' => 'Escribi un resume curtiu',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => "/* Los CSS allugaos equí s'aplicarán a tolos aspeutos */",
@@ -3110,7 +3084,7 @@ Al executalu pues comprometer el to sistema.",
 'minutes' => '{{PLURAL:$1|$1 minutu|$1 minutos}}',
 'hours' => '{{PLURAL:$1|$1 hora|$1 hores}}',
 'days' => '{{PLURAL:$1|$1 día|$1 díes}}',
-'weeks' => '{{PLURAL: $1|$1 selmana|$1 selmanes}}',
+'weeks' => '{{PLURAL:$1|$1 selmana|$1 selmanes}}',
 'months' => '{{PLURAL:$1|$1 mes|$1 meses}}',
 'years' => '{{PLURAL:$1|$1 añu|$1 años}}',
 'ago' => 'hai $1',
@@ -3551,15 +3525,10 @@ Los demás tarán anubríos de mou predetermináu.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridá definía pol usuariu ($1)',
 
-# External editor support
-'edit-externally' => 'Editar esti ficheru usando una aplicación esterna',
-'edit-externally-help' => '(Pa más información ver les [https://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'too',
 'namespacesall' => 'toos',
 'monthsall' => 'toos',
-'limitall' => 'toos',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar direición de corréu',
@@ -3581,7 +3550,6 @@ El sirvidor de corréu devolvió: $1',
 'confirmemail_success' => 'El to corréu quedó confimáu.
 Agora yá pues [[Special:UserLogin|coneutate]] y esfrutar de la wiki.',
 'confirmemail_loggedin' => 'Quedó confirmada la to direición de corréu.',
-'confirmemail_error' => 'Hebo un problema al guardar la to confirmación.',
 'confirmemail_subject' => 'Confirmación de la direición de corréu de {{SITENAME}}',
 'confirmemail_body' => 'Daquién, seique tu, dende la IP $1, rexistró la cuenta "$2" con
 esta direición de corréu en {{SITENAME}}.
@@ -3662,6 +3630,11 @@ Por favor confirma que daveres quies volver a crear esta páxina.",
 'imgmultigo' => '¡Dir!',
 'imgmultigoto' => 'Dir a la páxina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(llingua predeterminada)',
+'img-lang-info' => 'Representar esta imaxe en $1. $2',
+'img-lang-go' => 'Dir',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -3742,7 +3715,17 @@ Tamién pues [[Special:EditWatchlist|usar l'editor estándar]].",
 'version-hook-name' => 'Nome del hook',
 'version-hook-subscribedby' => 'Suscritu por',
 'version-version' => '(Versión $1)',
-'version-license' => 'Llicencia',
+'version-license' => 'Llicencia de MediaWiki',
+'version-ext-license' => 'Llicencia',
+'version-ext-colheader-name' => 'Estensión',
+'version-ext-colheader-version' => 'Versión',
+'version-ext-colheader-license' => 'Llicencia',
+'version-ext-colheader-description' => 'Descripción',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Llicencia pa $1',
+'version-license-not-found' => "Nun s'alcontró información detallada de llicencia pa esta estensión.",
+'version-credits-title' => 'Créditos de $1',
+'version-credits-not-found' => "Nun s'alcontró información detallada de créditos pa esta estensión.",
 'version-poweredby-credits' => "Esta wiki funciona con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'otros',
 'version-poweredby-translators' => 'los traductores de translatewiki.net',
@@ -3760,13 +3743,14 @@ Tendría d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llic
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => "Redireición por nome de ficheru, o ID d'usuariu o de revisión",
+'redirect' => 'Redireición por ficheru, usuariu, páxina o ID de revisión',
 'redirect-legend' => 'Redirixir a un ficheru o una páxina',
-'redirect-summary' => "Esta páxina especial redirixe a un ficheru (dando'l so nome), una páxina (dando una ID de revisión) o una páxina d'usuariu (dando un númberu d'ID d'usuariu). Usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Esta páxina especial redirixe a un ficheru (dando'l so nome), una páxina (dando una ID de revisión o de páxina) o una páxina d'usuariu (dando un númberu d'ID d'usuariu). Usu: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],  [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Dir',
 'redirect-lookup' => 'Buscar:',
 'redirect-value' => 'Valor:',
 'redirect-user' => "ID d'usuariu:",
+'redirect-page' => 'ID de la páxina',
 'redirect-revision' => 'Revisión de páxina',
 'redirect-file' => 'Nome del ficheru',
 'redirect-not-exists' => "Nun s'alcontró'l valor",
@@ -3833,7 +3817,6 @@ Tendría d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llic
 
 # Special:ComparePages
 'comparepages' => 'Comparar páxines',
-'compare-selector' => 'Comparar revisiones de páxina',
 'compare-page1' => 'Páxina 1',
 'compare-page2' => 'Páxina 2',
 'compare-rev1' => 'Revisión 1',
@@ -3961,6 +3944,7 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'api-error-overwrite' => 'Nun ta permitío sobroscribir un ficheru esistente.',
 'api-error-stashfailed' => 'Fallu internu: el sirvidor nun pudo guardar el ficheru temporal.',
 'api-error-publishfailed' => 'Fallu internu: el sirvidor nun pudo espublizar el ficheru temporal.',
+'api-error-stasherror' => 'Hebo un error al xubir el ficheru al almacén.',
 'api-error-timeout' => 'El sirvidor nun respondió nel tiempu esperáu.',
 'api-error-unclassified' => 'Hebo un fallu desconocíu',
 'api-error-unknown-code' => 'Fallu desconocíu: «$1»',
@@ -3971,12 +3955,12 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 'api-error-verification-error' => 'Esti ficheru pudiera tar corrompíu, o tien una estensión incorreuta.',
 
 # Durations
-'duration-seconds' => '$1 {{PLURAL: $1|segundu|segundos}}',
-'duration-minutes' => '$1 {{PLURAL: $1|minutu|minutos}}',
-'duration-hours' => '$1 {{PLURAL: $1|hora|hores}}',
-'duration-days' => '$1 {{PLURAL: $1|día|díes}}',
-'duration-weeks' => '$1 {{PLURAL: $1|selmana|selmanes}}',
-'duration-years' => '$1 {{PLURAL: $1|añu|años}}',
+'duration-seconds' => '$1 {{PLURAL:$1|segundu|segundos}}',
+'duration-minutes' => '$1 {{PLURAL:$1|minutu|minutos}}',
+'duration-hours' => '$1 {{PLURAL:$1|hora|hores}}',
+'duration-days' => '$1 {{PLURAL:$1|día|díes}}',
+'duration-weeks' => '$1 {{PLURAL:$1|selmana|selmanes}}',
+'duration-years' => '$1 {{PLURAL:$1|añu|años}}',
 'duration-decades' => '$1 {{PLURAL:$1|década|décades}}',
 'duration-centuries' => '$1 {{PLURAL:$1|sieglu|sieglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|mileniu|milenios}}',
@@ -3987,9 +3971,9 @@ D\'otra miente, pues usar el formulariu cenciellu d\'abaxo. El to comentariu apa
 # Limit report
 'limitreport-title' => 'Datos de perfiláu del analizador:',
 'limitreport-cputime' => 'Usu de tiempu de CPU',
-'limitreport-cputime-value' => '$1 {{PLURAL: $1|segundu|segundos}}',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundu|segundos}}',
 'limitreport-walltime' => 'Usu de tiempu real',
-'limitreport-walltime-value' => '$1 {{PLURAL: $1|segundu|segundos}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundu|segundos}}',
 'limitreport-ppvisitednodes' => 'Cuenta de noyos visitaos pol preprocesador',
 'limitreport-ppgeneratednodes' => 'Cuenta de noyos xeneraos pol preprocesador',
 'limitreport-postexpandincludesize' => "Tamañu d'inclusión de post-espansión",
@@ -4010,10 +3994,12 @@ En realidá cuasi tolo qu'apaeza ente llaves dobles.",
 'expand_templates_input' => "Testu d'entrada:",
 'expand_templates_output' => 'Resultáu',
 'expand_templates_xml_output' => 'Salida XML',
+'expand_templates_html_output' => 'Salida HTML en bruto',
 'expand_templates_ok' => 'Aceutar',
 'expand_templates_remove_comments' => 'Eliminar comentarios',
 'expand_templates_remove_nowiki' => 'Quitar les etiquetes <nowiki> nos resultaos',
 'expand_templates_generate_xml' => "Amosar l'árbole d'análisis sintáuticu XML",
+'expand_templates_generate_rawhtml' => 'Ver el HTML en bruto',
 'expand_templates_preview' => 'Vista previa',
 
 );
index a75a86f..76896c2 100644 (file)
@@ -12,6 +12,7 @@
  * @author MF-Warburg
  * @author MONARCH79
  * @author Phoebe
+ * @author Умар
  */
 
 $fallback = 'ru';
@@ -29,6 +30,9 @@ $messages = array(
 'mytalk' => 'Дур бахlс',
 'and' => '&#32;ва',
 
+# Vector skin
+'vector-view-edit' => 'Хисизабизе',
+
 'errorpagetitle' => 'Гъалатl',
 'help' => 'Кумек',
 'history' => 'Хиса-басазул тарих',
@@ -41,7 +45,7 @@ $messages = array(
 'userpage' => 'ГӀахьалчиясул гьумер',
 'otherlanguages' => 'Цойги мацӀазда',
 
-# 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).
+# 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).
 'currentevents' => 'Жакъасел лъугьа-бахъинал',
 'mainpage' => 'БетӀераб гьумер',
 'mainpage-description' => 'БетӀераб гьумер',
index b12e4f2..e91b274 100644 (file)
@@ -121,7 +121,6 @@ $messages = array(
 'tog-minordefault' => 'Jinaf betakseem omavon mezolonon zo torigid',
 'tog-previewontop' => 'Abdinedira nediwer vamoe sutelaxo',
 'tog-previewonfirst' => 'Nedira va abdinedira bal taneafa betara',
-'tog-nocache' => 'Gritegirara va bupreyutasiki',
 'tog-enotifwatchlistpages' => 'Moi da betara va jinafi suzdasiki zo staksá !',
 'tog-enotifusertalkpages' => 'Moi da betara va jinafu favesikbu pu jin staksar !',
 'tog-enotifminoredits' => 'Icde bubetamara dere zo staksá !',
@@ -228,7 +227,6 @@ $messages = array(
 'qbedit' => 'Betara',
 'qbpageoptions' => 'Ikatcuksbu',
 'qbmyoptions' => 'Jinaf ikatcukseem',
-'qbspecialpages' => 'Aptaf bueem',
 'faq' => 'NEB',
 'faqpage' => 'Project:FAQ',
 
@@ -404,9 +402,6 @@ Rotir artan ixam al sular.',
 'perfcached' => 'Vlevef orig yo tid koe palsexo nume me zo ronusked. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Vlevef orig yo tid koe palsexo, ise ironokafa nuskera tir $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Nuskera va batu bu me noelon flir. Acum origeem me zo divneditir.',
-'wrong_wfQuery_params' => 'Mewadaf dor koe wfQuery() dirgara<br />
-Fliok : $1<br />
-Erura : $2',
 'viewsource' => 'Wira va klitakrent',
 'viewsource-title' => 'Wira va klita ke $1',
 'actionthrottled' => 'Tulokaliana tegira',
@@ -500,7 +495,7 @@ Meka 'email' staksa icde vlevefa staava zo staksatar.",
 'loginlanguagelabel' => 'Ava : $1',
 
 # Change password dialog
-'resetpass' => 'Va patabeksa betal !',
+'changepassword' => 'Betara va remravlem',
 'resetpass_announce' => "Rin kan ugalorafa 'email' beksa va int pilkomodayal.
 Ta da wan zo pilkomodal, va warzaf remravlem batlize gobazel :",
 'resetpass_header' => 'Va remravlem gobetal !',
@@ -743,8 +738,6 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'revdelete-success' => "'''Kiewaskinon plekuyuna betarafa rowinuca.'''",
 'logdelete-success' => "'''Kiewaskinon plekuyuna bifafa rowinuca.'''",
 'revdel-restore' => 'Betara va rowinuca',
-'revdel-restore-deleted' => 'Sulayan betaks',
-'revdel-restore-visible' => 'Rowin betaks',
 'pagehist' => 'Buizvot',
 'deletedhist' => 'Sularizvot',
 'revdelete-reasonotherlist' => 'Ara lazava',
@@ -792,12 +785,8 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 # Search results
 'searchresults' => 'Aneyaradanekseem',
 'searchresults-title' => 'Aneyaratrasiks va "$1"',
-'searchresulttext' => 'Ta lo giva icde aneyara ko {{SITENAME}}, va [[{{MediaWiki:Helppage}}|{{int:help}}]] teliz disukel.',
-'searchsubtitle' => 'Rin va \'\'\'[[:$1]]\'\'\' aneyayal ([[Special:Prefixindex/$1|kotu bu dem "$1" toza]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kotu bu gluyasu va "$1"]])',
-'searchsubtitleinvalid' => "Rin va '''$1''' aneyayal",
 'toomanymatches' => 'Slik trasiks, vay va amidafa aneyara yawal',
 'titlematches' => 'Vadjesaceem vanmia vergumvelteem',
-'notitlematches' => 'Mek telizvergumvelt ruldas va erune',
 'textmatches' => 'Vadjesaceem ko krenteem',
 'notextmatches' => 'Mek krentvergumvelt ruldas va erune',
 'prevn' => '{{PLURAL:$1|$1}} abduef',
@@ -828,21 +817,16 @@ Ta ropasusu warzafu bu yo va [[Special:Search|aneyara ko wiki]] yawal.',
 'search-interwiki-default' => '$1 trasiks :',
 'search-interwiki-more' => '(loon)',
 'search-relatedarticle' => 'Skedaf',
-'mwsuggest-disable' => 'Gritegirara va AJAX tiavera',
 'searcheverything-enable' => 'Aneyara ko koto yoltxo',
 'searchrelated' => 'skedaf',
 'searchall' => 'kot',
 'showingresults' => "Vlevefa nedira va {{PLURAL:$1|'''1''' trasiks|'''$1''' trasiks}} dem #'''$2''' toza.",
 'showingresultsnum' => "Nedira va '''$3''' trasiks male #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Trasiks '''$1''' ke '''$3'''|Trasiks '''$1 - $2''' ke '''$3'''}} icde '''$4'''",
-'nonefound' => "'''Straga''': Anton yoltxo omavon zo aneyar.
-Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce abdueosta va galpeno yoltxo favel.",
 'search-nonefound' => 'Mek trasiks vas kucilara',
-'powersearch' => 'Aneyara',
 'powersearch-legend' => 'Aneyapara',
 'powersearch-ns' => 'Aneyara koe yoltxo:',
 'powersearch-redir' => 'Vexalara va graskara',
-'powersearch-field' => 'Aneyara va',
 'powersearch-toggleall' => 'Kot',
 'powersearch-togglenone' => 'Mek',
 'search-external' => 'Divafa aneyara',
@@ -852,7 +836,6 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 'preferences' => 'Lodamaceem',
 'mypreferences' => 'Jinaf lodamaceem',
 'prefs-edits' => 'Ota va betaks :',
-'changepassword' => 'Betara va remravlem',
 'prefs-skin' => 'Laviuca',
 'skin-preview' => 'Abdiwira',
 'datedefault' => 'Megelukon',
@@ -868,19 +851,16 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
 'prefs-resetpass' => 'Betara va remravlem',
 'prefs-rendering' => 'Laviuca',
 'saveprefs' => 'Va lodamaceem tuená',
-'resetprefs' => 'Va lodamceem dimplekú',
 'prefs-editing' => 'Sutelaxo',
 'rows' => 'Emacekeem',
 'columns' => 'Brizeem',
 'searchresultshead' => 'Nedira va aneyaratrasikseem',
-'resultsperpage' => 'Fuxebuon trasiksota',
 'recentchangesdays' => 'Gonedin viel se koe noeltaf betakseem :',
 'recentchangesdays-max' => '(cugon $1 {{PLURAL:$1|viel|viel}})',
 'recentchangescount' => 'Omavon gonedina ota va noeltaf betakseem ik buizvot ik "log" :',
 'savedprefs' => 'Lodamaceem su zo giwar.',
 'timezonelegend' => 'Bartivxo',
 'localtime' => 'Lizukaf bartiv :',
-'timezoneoffset' => 'Bartivferenuca :',
 'servertime' => 'Bartiv ke zanisiko :',
 'guesstimezone' => 'Favera va voda ke exulesiki',
 'timezoneregion-africa' => 'Afrika',
@@ -1041,7 +1021,6 @@ Rinafe e-mail mane me zo razdar viele ar webesik uzerar.',
 'recentchanges-label-minor' => 'Betamaks',
 'recentchanges-label-bot' => 'Bata betara gan "bot" zo sopuyur',
 'recentchanges-label-unpatrolled' => 'Bat betaks men al zo fier',
-'rcnote' => "Vleveon {{PLURAL:$1|'''1''' betaks tir|ironokaf '''$1''' betaks tid}} bak ironokaf {{PLURAL:$2|viel|'''$2''' viel}}, wetce $5 ik $4.",
 'rcnotefrom' => 'Tir skuyun betakseem mali <strong>$2</strong> (<b>$1</b> cugon).',
 'rclistfrom' => 'Nedira va warzaf betakseem mali $1.',
 'rcshowhideminor' => '$1 betamakseem',
@@ -1309,10 +1288,8 @@ Abdi sulara, setikel da va ari skedasiki va teza stujel.',
 'deadendpages' => 'Axodabueem',
 'deadendpagestext' => 'Batu bu se tid gluyasikiiskafu gu aru bu koe {{SITENAME}}.',
 'protectedpages' => 'Nendan bueem',
-'protectedpagestext' => 'Batu bu se icde arrundara is betara zo nendad',
 'protectedpagesempty' => 'Meku bu nendanu kan bat doreem.',
 'protectedtitles' => 'Nendan vergumvelteem',
-'protectedtitlestext' => 'Radimef vergumvelteem reduron zo nendar',
 'protectedtitlesempty' => 'Nedoy vergumvelt kan bat dor se zo nendar.',
 'listusers' => 'Pakesikeem',
 'listusers-editsonly' => 'Va yon betayas favesik anton nedir',
@@ -1355,9 +1332,6 @@ Abdi sulara, setikel da va ari skedasiki va teza stujel.',
 'allpagesto' => 'Nedira va bu dem tena male :',
 'allarticles' => 'Telizeem',
 'allinnamespace' => 'Kotu bu ($1 yoltxo)',
-'allnotinnamespace' => 'Kotaf bueem (me koe $1 yoltxo)',
-'allpagesprev' => 'Abdifu bu',
-'allpagesnext' => 'Radimifu bu',
 'allpagessubmit' => 'Tuená',
 'allpagesprefix' => 'Nedira va bueem tozakiraf gu :',
 'allpages-bad-ns' => '{{SITENAME}} va "$1" yoltxo me digir.',
@@ -1590,7 +1564,6 @@ Si une nouvelle page avec le même nom a été créée depuis la suppression, le
 'undeletebtn' => 'Skura va dimplekura !',
 'undeletelink' => 'wira ik dimplekura',
 'undeleteviewlink' => 'wira',
-'undeletereset' => 'Tolplekura',
 'undeletecomment' => 'Sebuks :',
 'undeletedrevisions' => '$1 siatos dimplekuyun',
 'undeletedrevisions-files' => '$1 betaks isu $2 iyeltak zo dimplekuyud',
@@ -1664,14 +1637,11 @@ Va lazavanha (tulon ozwason va cidayanu bu se) vlevon bazel !',
 'ipadressorusername' => 'IP mane ok favesikyolt',
 'ipbexpiry' => 'Elekaracek',
 'ipbreason' => 'Elekaradanda :',
-'ipbreasonotherlist' => 'Ardume',
 'ipbcreateaccount' => 'Djira va pataredura',
 'ipbemailban' => 'Djira va favesik icde "email" staksera',
 'ipbsubmit' => 'Elekara va bate mane',
 'ipbother' => 'Arviele :',
 'ipboptions' => '2 bartiv:2 hours,1 viel:1 day,3 viel:3 days,1 perka:1 week,2 perka:2 weeks,1 aksat:1 month,3 aksat:3 months,6 aksat:6 months,1 tanda:1 year,kotabon:infinite',
-'ipbotheroption' => 'ar',
-'ipbotherreason' => 'Ardume/lodume :',
 'badipaddress' => 'IP mane tir mewadafe.',
 'blockipsuccesssub' => 'Elekanhara',
 'blockipsuccesstext' => "L'adresse IP « $1 » a été bloquée.<br />Vous pouvez consulter sur cette [[Special:BlockList|page]] la liste des adresses IP bloquées.",
@@ -1755,7 +1725,6 @@ Il peut s’agir d’un changement radical et inattendu pour un article souvent
 
 Dans ce cas, vous devrez renommer ou fusionner la page manuellement si vous le désirez.",
 'movearticle' => 'Tolyoltara va teliz',
-'movenologin' => 'Dogluyariskaf',
 'movenologintext' => 'Ede rin va teliz co-djutolyoltal, wetce koverteyen favesik gotil [[Special:UserLogin|dogluyarakiraf]].',
 'movenotallowed' => 'Rin va bu me ronovarrundal.',
 'cant-move-user-page' => 'Rin va favesikbu (rade volveybu) me ronovarrundal.',
@@ -1767,8 +1736,6 @@ Dans ce cas, vous devrez renommer ou fusionner la page manuellement si vous le d
 'movepage-moved' => '\'\'\'"$1" zo arrundayar kal "$2"\'\'\'',
 'articleexists' => 'Milvergumveltaf teliz ixam krulder, oke kiblayan vergumvelt tir meenaf. Va ar kiblal !',
 'cantmove-titleprotected' => 'Va bu me milinde rotarrundal kire warzaf vergumvelt icde redura zo nendar',
-'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. S'il vous plait, fusionnez les manuellement.",
-'movedto' => 'Tolyoltayan ton',
 'movetalk' => "Renommer aussi la page « discussion », s'il y a lieu.",
 'move-subpages' => 'Arrundara va volveybueem',
 'move-talk-subpages' => 'Arrundara va volveybueem ke prilarabu',
@@ -2186,10 +2153,6 @@ Kotari milconyafi gluyasiki roklon zo krafiar.',
 'exif-gpsdirection-t' => 'Ageltania',
 'exif-gpsdirection-m' => 'Zatnia',
 
-# External editor support
-'edit-externally' => 'Betara va bat iyeltak faveson va divef talpey',
-'edit-externally-help' => '(Ta lo giva va [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] disukel !)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kot',
 'namespacesall' => 'koto',
@@ -2211,7 +2174,6 @@ Rodjeyesi staksasiki : $1',
 'confirmemail_needlogin' => 'Ta gruyera va "email" mane rin va $1 olegal.',
 'confirmemail_success' => 'Votre email est confirmée. Vous pouvez maintenant vous connecter et profiter du wiki.',
 'confirmemail_loggedin' => 'Votre adresse est maintenant confirmée',
-'confirmemail_error' => 'Un problème est survenu en voulant enregistrer votre confirmation',
 'confirmemail_subject' => "Confirmation d'email pour {{SITENAME}}",
 'confirmemail_body' => 'Someone, probably you, from IP address $1,
 has registered an account "$2" with this e-mail address on {{SITENAME}}.
index 119c65b..d3bc7b5 100644 (file)
@@ -45,9 +45,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'Yatiyawita chaski jalayirinakana chaski jalayirit untjäwija uñachayaña',
 'tog-shownumberswatching' => "Qawqha apnaqirinaka uñch'ukiskar uñacht'ayaña",
 'tog-fancysig' => "Mayaxta rixt'a (sipitarachayatawisa)",
-'tog-externaleditor' => "Anqa askiptiri mirq'iriña (yatxiritakiwa, jasanchirina ajalla jamuqawi wakiskiriwa)",
-'tog-externaldiff' => "Anqa diff-iri mirq'iriña (yatxiritakiwa, jasanchirina ajalla jamuqawi wakiskiriwa)",
-'tog-showjumplinks' => 'Usutataki sipitata "khänaru thuqtaña" uñachayaña',
 'tog-uselivepreview' => "Uñtawikach'ukix mirq'iña (JavaScript munawiwa) (yant'awiwaki)",
 'tog-forceeditsummary' => "Nayaru yatiyaña ukja ch'usa askiptawit juk'aptayawi apantaskaña",
 'tog-watchlisthideown' => "Unch'ukit waruchatana askiptawijax imantaña",
@@ -127,7 +124,6 @@ $messages = array(
 'qbbrowse' => 'Wampuña',
 'qbedit' => 'Turkaña',
 'qbpageoptions' => 'Uñstawitaki ajllita',
-'qbpageinfo' => "Uñstawxat uñt'ayawi",
 'qbmyoptions' => 'Ajllitanakaja',
 
 'errorpagetitle' => 'Pantja',
@@ -160,7 +156,7 @@ $messages = array(
 'jumptonavigation' => 'wampuña',
 'jumptosearch' => 'thaqaña',
 
-# 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).
+# 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).
 'currentevents' => 'Jichha pacha',
 'currentevents-url' => 'Project:Jichha pacha',
 'mainpage' => 'Nayriri Uñstawi',
@@ -204,7 +200,6 @@ $messages = array(
 # Preferences page
 'preferences' => 'Amtajarjama',
 'prefs-rc' => 'Jichha kutikiptatanaka',
-'timezoneoffset' => 'Jalaqtata',
 'yourlanguage' => 'Aru:',
 'email' => 'Chaski jalayiri',
 
@@ -254,7 +249,6 @@ $messages = array(
 
 # Block/unblock
 'ipblocklist-submit' => 'Thaqaña',
-'proxyblocksuccess' => 'Kamachawi',
 
 # Tooltip help for the actions
 'tooltip-p-logo' => 'Nayriri Uñstawi',
index 4a96329..9476383 100644 (file)
@@ -104,7 +104,6 @@ $messages = array(
 'tog-minordefault' => 'Default olaraq bütün redaktələri kiçik redaktə kimi nişanla',
 'tog-previewontop' => 'Sınaq göstərişi yazma sahəsindən əvvəl göstər',
 'tog-previewonfirst' => 'İlkin redaktədə sınaq göstərişi',
-'tog-nocache' => 'Səhifələri keşdə saxlama',
 'tog-enotifwatchlistpages' => 'İzləmə siyahısında olan məqalə redaktə olunsa, mənə e-məktub göndər',
 'tog-enotifusertalkpages' => 'Müzakirə səhifəm redaktə olunsa, mənə e-məktub göndər',
 'tog-enotifminoredits' => 'Səhifələrdə kiçik dəyişikliklər olsa belə, mənə e-məktub göndər',
@@ -227,7 +226,7 @@ $messages = array(
 'cancel' => 'Ləğv et',
 'moredotdotdot' => 'Daha...',
 'morenotlisted' => 'Bu siyahı tam deyil.',
-'mypage' => 'Mənim səhifəm',
+'mypage' => 'Səhifə',
 'mytalk' => 'Danışıqlarım',
 'anontalk' => 'Bu IP-yə aid müzakirə',
 'navigation' => 'Naviqasiya',
@@ -239,7 +238,6 @@ $messages = array(
 'qbedit' => 'Redaktə',
 'qbpageoptions' => 'Bu səhifə',
 'qbmyoptions' => 'Mənim səhifələrim',
-'qbspecialpages' => 'Xüsusi səhifələr',
 'faq' => 'TSS',
 'faqpage' => 'Project:TSS',
 
@@ -460,9 +458,6 @@ Başlıqlarda istifadə edilməsi qadağan olunan bir və ya daha çox simvol is
 'perfcached' => 'Aşağıdakı məlumatlar keş yaddaşdan götürülmüşdür və bu səbəbdən aktual olmaya bilər. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Aşağıdakı məlumatlar keş yaddaşdan götürülmüşdür və sonuncu dəfə $1 tarixində yenilənmişdir. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Bu an üçün güncəlləmələr sıradan çıxdı. Buradakı məlumat dərhal yenilənməyəcək.',
-'wrong_wfQuery_params' => 'wfQuery() funksiyası üçün qəbuledilməz parametrlər <br />
-Funksiya: $1<br />
-Sorğu: $2',
 'viewsource' => 'Mənbə göstər',
 'viewsource-title' => '$1 üçün mənbəyə bax',
 'actionthrottled' => 'Sürət məhdudiyyəti',
@@ -641,7 +636,7 @@ Yeni cəhd etməzdən əvvəl bir qədər gözləyin.',
 'user-mail-no-body' => 'Boş və ya keçərli olmayan bir şəkildə e-poçt göndərilməyə çalışıldı.',
 
 # Change password dialog
-'resetpass' => 'Parolu dəyiş',
+'changepassword' => 'Parolu dəyiş',
 'resetpass_announce' => 'Siz sistemə müvəqqəti elektron poçt kodu ilə daxil olmusunuz.
 Sistemə daxil olmanı yekunlaşdırmaq üçün yeni parolu bura yazmalısınız:',
 'resetpass_text' => '<!-- Şərhinizi bura daxil edin -->',
@@ -893,8 +888,6 @@ Mümkündür ki, bununla bağlı təfərrüatlar [{{fullurl:{{#Special:Log}}/del
 'rev-showdeleted' => 'Göstər',
 'revisiondelete' => 'Səhifənin versiyalarını sil/bərpa et',
 'revdelete-nooldid-title' => 'Hədəf dəyişikliyi keçərsizdir',
-'revdelete-nologtype-title' => 'Heç bir qeyd tipi verilmədi',
-'revdelete-nologid-title' => 'Yanlış jurnal yazısı',
 'revdelete-no-file' => 'Axtarılan fayl mövcud deyil',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" faylının $2 $3 tarixli silinmiş bir redaktəsini görmək istədiyinizdən əminsizinizmi?',
 'revdelete-show-file-submit' => 'Bəli',
@@ -921,8 +914,6 @@ $1",
 'logdelete-failure' => "'''Jurnalın görünüşü tənzimlənməyib:'''
 $1",
 'revdel-restore' => 'Görünüşü dəyiş',
-'revdel-restore-deleted' => 'Silinmiş redaktələr',
-'revdel-restore-visible' => 'görünən düzəlişlər',
 'pagehist' => 'Səhifənin tarixçəsi',
 'deletedhist' => 'Silmə qeydləri',
 'revdelete-reason-dropdown' => '*Ümumi silmə səbəbləri
@@ -973,12 +964,8 @@ $1",
 # Search results
 'searchresults' => 'Axtarış nəticələri',
 'searchresults-title' => "''$1'' üçün axtarış nəticələri",
-'searchresulttext' => '{{SITENAME}}-nı axtarmaqla bağlı ətraflı məlumat üçün [[{{MediaWiki:Helppage}}|{{int:kömək}}]] səhifəsinə baş çək.',
-'searchsubtitle' => '"[[:$1]]" üçün axtarış ([[Special:Prefixindex/$1|"$1" ilə başlayan bütün səhifələr]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" səhifəsi ilə əlaqəli olan bütün səhifələr]])',
-'searchsubtitleinvalid' => 'Axtarılan: "$1"',
 'toomanymatches' => 'Üst-üstə düşən çoxlu hal tapılıb, lütfən yeni sorğu göndərin',
 'titlematches' => 'Səhifə adı eynidir',
-'notitlematches' => 'Uyğun gələn səhifə adı tapılmadı',
 'textmatches' => 'Mətn eynidir',
 'notextmatches' => 'Məqalələrdə uyğun məzmun tapılmadı',
 'prevn' => 'əvvəlki {{PLURAL:$1|$1}}',
@@ -987,10 +974,8 @@ $1",
 'nextn-title' => 'Əvvəlki bir $1 {{PLURAL:$1|nəticə|nəticə}}',
 'shown-title' => 'Səhifə üçün $1 {{PLURAL:$1|nəticə|nəticəyə}} bax',
 'viewprevnext' => 'Göstər ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Axtarış kriteriyaları',
 'searchmenu-exists' => "'''Bu vikidə \"[[:\$1]]\" adında səhifə mövcuddur'''",
 'searchmenu-new' => "'''Bu vikidə \"[[:\$1]]\" səhifəsini yarat!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu cür prefiksli səhifələri göstər]]',
 'searchprofile-articles' => 'Məqalələr',
 'searchprofile-project' => 'Kömək və Layihə səhifələri',
 'searchprofile-images' => 'Multimedia',
@@ -1011,20 +996,16 @@ $1",
 'search-interwiki-default' => '$1 nəticə:',
 'search-interwiki-more' => '(yenə)',
 'search-relatedarticle' => 'əlaqədar',
-'mwsuggest-disable' => 'AJAX təkliflərini rədd et',
 'searcheverything-enable' => 'Ad aralığında axtar:',
 'searchrelated' => 'əlaqədar',
 'searchall' => 'bütün',
 'showingresults' => "Aşağıda #'''$2''' ilə başlayan {{PLURAL:$1|'''$1'''-ə qədər}} nəticə göstərilib.",
 'showingresultsnum' => "Aşağıda #'''$2''' ilə başlayan {{PLURAL:$3|'''$3'''}} nəticə göstərilib.",
 'showingresultsheader' => "'''$4''' üçün {{PLURAL:$5|'''$3'''-dən '''$1''' nəticə|'''$3'''-dən '''$1 - $2''' nəticə}}",
-'nonefound' => "'''Qeyd''': Əksər uğursuz axtarışlara səbəb indeksləşdirilməyən, geniş işlənən \"var\", \"və\" tipli sözlər və ya axtarışa bir sözdən artıq ifadələrin verilməsidir. Çalışıb axtardığınız ifadənin qarşısında ''all:'' (bütün) yazın. Bu halda axtarışınız istifadəçi səhifələrini, şablonları və s. da əhatə edəcək.",
 'search-nonefound' => 'Sorğunuza uyğun nəticə tapılmadı.',
-'powersearch' => 'Axtar',
 'powersearch-legend' => 'Təkmil axtarış',
 'powersearch-ns' => 'Ad aralığında axtar:',
 'powersearch-redir' => 'Yönləndirmələri göstər',
-'powersearch-field' => 'Axtar:',
 'powersearch-togglelabel' => 'Yoxla:',
 'powersearch-toggleall' => 'Hamısı',
 'powersearch-togglenone' => 'Heç biri',
@@ -1034,7 +1015,6 @@ $1",
 'preferences' => 'Nizamlamalar',
 'mypreferences' => 'Nizamlamalar',
 'prefs-edits' => 'Redaktələrin sayı:',
-'changepassword' => 'Parolu dəyiş',
 'prefs-skin' => 'Cild',
 'skin-preview' => 'Sınaq görüntüsü',
 'datedefault' => 'Seçim yoxdur',
@@ -1056,13 +1036,11 @@ $1",
 'prefs-email' => 'E-mailin parametrləri',
 'prefs-rendering' => 'Görünüş',
 'saveprefs' => 'Qeyd et',
-'resetprefs' => 'Yarat',
 'restoreprefs' => 'Bütün nizamlamaları bərpa et (bütün bölmələrdə)',
 'prefs-editing' => 'Redaktə',
 'rows' => 'Sıralar:',
 'columns' => 'Sütunlar:',
 'searchresultshead' => 'Axtar',
-'resultsperpage' => 'Səhifəyə aid tapılmış nəticələr:',
 'stub-threshold' => '<a href="#" class="stub">Keçidsiz linki</a> format etmək üçün hüdud (baytlarla):',
 'stub-threshold-disabled' => 'Kənarlaşdırılıb',
 'recentchangesdays' => 'Son dəyişiklərdə göstərilən günlərin miqdarı:',
@@ -1074,7 +1052,6 @@ $1",
 'localtime' => 'Yerli vaxt:',
 'timezoneuseserverdefault' => 'Susmaya görə serverdən istifadə ($1)',
 'timezoneuseoffset' => 'Digər (fərqi göstərmək)',
-'timezoneoffset' => 'Vaxt fərqi¹:',
 'servertime' => 'Server vaxtı:',
 'guesstimezone' => 'Brouzerdən götür',
 'timezoneregion-africa' => 'Afrika',
@@ -1293,7 +1270,6 @@ Həmçinin kimliyinizi gostərmədən belə, başqalarının sizinlə istifadə
 'recentchanges-label-bot' => 'Bu redaktə bot tərəfindən edilmişdir',
 'recentchanges-label-unpatrolled' => 'Bu redaktə hələ nəzərdən keçirilməmişdir',
 'recentchanges-legend-newpage' => '$1 - yeni səhifə',
-'rcnote' => "Aşağıdakı {{PLURAL:$1|'''1''' dəyişiklik|'''$1''' dəyişiklik}} saat $5, $4 tarixinə qədər son {{PLURAL:$2|gün|'''$2''' gün}} ərzində edilmişdir.",
 'rcnotefrom' => "Aşağıda '''$2'''-dən ('''$1'''-ə qədər) dəyişikliklər sadalanmışdır.",
 'rclistfrom' => '$1 vaxtından başlayaraq yeni dəyişiklikləri göstər',
 'rcshowhideminor' => 'Kiçik redaktələri $1',
@@ -1635,7 +1611,6 @@ Hazırda [[$2]]-yə istiqamətlənib.',
 'protectedpages' => 'Mühafizəli səhifələr',
 'protectedpages-indef' => 'Yalnız müddətsiz mühafizələr',
 'protectedpages-cascade' => 'Yalnız kaskad mühafizələr',
-'protectedpagestext' => 'Aşağıdakı səhifələr ad dəyişiminə və redaktəyə bağlıdır',
 'protectedpagesempty' => 'Hal-hazırda bu parametrə uyğun heç bir mühafizəli səhifə yoxdur',
 'protectedtitles' => 'Mühafizəli başlıqlar',
 'listusers' => 'İstifadəçi siyahısı',
@@ -1680,9 +1655,6 @@ Qeyd növü, istifadəçi adı və ya təsir edilmiş səhifəni seçməklə dah
 'allpagesto' => 'Bu hərflə başlayan səhifələrədək göstər:',
 'allarticles' => 'Bütün məqalələr',
 'allinnamespace' => 'Bütün səhifələr ($1 səhifələri)',
-'allnotinnamespace' => 'Bütün səhifələr (not in $1 namespace)',
-'allpagesprev' => 'Əvvəlki',
-'allpagesnext' => 'Sonrakı',
 'allpagessubmit' => 'Seç',
 'allpagesprefix' => 'Bu prefiksli səhifələri göstər:',
 'allpages-hide-redirects' => 'Yönləndirmələri gizlət',
@@ -1940,7 +1912,6 @@ Sonuncu silinmələrə bax: $2.',
 'undeletebtn' => 'Bərpa et',
 'undeletelink' => 'bax/bərpa et',
 'undeleteviewlink' => 'görünüş',
-'undeletereset' => 'Qur',
 'undeleteinvert' => 'Seçilən xaricindəkiləri',
 'undeletecomment' => 'Səbəb:',
 'undeletedrevisions' => 'Cəmi {{PLURAL:$1|1 redaktə|$1 redaktə}} geri qaytarıldı.',
@@ -2026,12 +1997,10 @@ Bloklama qeydlərinin sonuncusu aşağıda göstərilmişdir:',
 'block' => 'İstifadəçini blokla',
 'unblock' => 'İstifadəçinin blokunu götür',
 'blockip' => 'İstifadəçini blokla',
-'blockip-title' => 'İstifadəçini blokla',
 'blockip-legend' => 'İstifadəçinin bloklanması',
 'ipadressorusername' => 'IP-ünvanı və ya istifadəçi adı',
 'ipbexpiry' => 'Bitmə müddəti:',
 'ipbreason' => 'Səbəb:',
-'ipbreasonotherlist' => 'Digər səbəb',
 'ipbreason-dropdown' => '*Bloklama səbəbləri:
 ** Yalan məlumatların əlavə edilməsi
 ** Səhifənin məzmununun silinməsi
@@ -2045,8 +2014,6 @@ Bloklama qeydlərinin sonuncusu aşağıda göstərilmişdir:',
 'ipbsubmit' => 'Bu istifadəçini blokla',
 'ipbother' => 'Başqa vaxt',
 'ipboptions' => '2 saat:2 hours,1 gün:1 day,3 gün:3 days,1 həftə:1 week,2 həftə:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 il:1 year,müddətsiz:infinite',
-'ipbotheroption' => 'başqa',
-'ipbotherreason' => 'Başqa/əlavə səbəb:',
 'ipbhidename' => 'İstifadəçi adını redaktələrdə və siyahılarda gizlət',
 'ipbwatchuser' => 'Bu istifadəçinin müzakirə və istifadəçi səhifəsini izlə',
 'ipb-disableusertalk' => 'Bu istifadəçi bloklu olarkən öz müzakirə səhifəsində redaktə etməsini əngəllə',
@@ -2163,7 +2130,6 @@ Bu yerdəyişmə populiyar səhifə üçün əsaslı və gözlənilməz ola bil
 
 Həmin hallarda , ehtiyac yaranarsa siz səhifələri əllə birləşdirmək məcburiyyətində qalacaqsınız",
 'movearticle' => 'Səhifənin adını dəyişdir',
-'movenologin' => 'Sistemdə deyilsiniz',
 'movenotallowed' => 'Siz səhifələrin adını dəyişə bilməzsiniz.',
 'movenotallowedfile' => 'Siz faylların adını dəyişə bilməzsiniz.',
 'cant-move-user-page' => 'İstifadəçi səhifələrinin adını dəyişə bilməzsiniz (başlıqlardan başqa).',
@@ -2176,8 +2142,6 @@ Həmin hallarda , ehtiyac yaranarsa siz səhifələri əllə birləşdirmək mə
 'movepage-moved-noredirect' => 'Yönləndirmənin yaradılmasının qarşııs alındı.',
 'articleexists' => 'Bu adda səhifə artıq mövcuddur və ya sizin seçdiyiniz ad uyğun deyil.
 Zəhmət olmasa başqa ad seçin.',
-'talkexists' => "'''Səhifənin adı dəyişdi, lakin müzakirə səhifəsi yeni adla olduğu üçün dəyişə bilmir. Zəhmət olmasa, onun adını özünüz dəyişin.'''",
-'movedto' => 'dəyişdi',
 'movetalk' => 'Bu səhifənin müzakirə səhifəsinin də adını dəyişdir.',
 'move-subpages' => 'Yarımsəhifələri köçür ($1-ə qədər)',
 'move-talk-subpages' => 'Müzakirə səhifələrinin alt səhifələrini köçür ($1-ə qədər)',
@@ -2836,15 +2800,10 @@ Variants for Chinese language
 'exif-urgency-high' => 'Yüksək ($1)',
 'exif-urgency-other' => 'İstifadəçi tərəfindən müəyyən olunmuş birincilik ($1)',
 
-# External editor support
-'edit-externally' => 'Bu faylı kənar proqram vasitəsilə redaktə et.',
-'edit-externally-help' => '(Daha ətraflı məlumat üçün [https://www.mediawiki.org/wiki/Manual:External_editors tətbiqetmə qaydalarına] baxa bilərsiniz)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hamısını',
 'namespacesall' => 'bütün',
 'monthsall' => 'hamısı',
-'limitall' => 'bütün',
 
 # Email address confirmation
 'confirmemail' => 'E-məktubunu təsdiq et',
@@ -2938,6 +2897,10 @@ Variants for Chinese language
 'version-hook-subscribedby' => 'Abunə olan',
 'version-version' => '(Versiya $1)',
 'version-license' => 'Lisenziya',
+'version-ext-license' => 'Lisenziya',
+'version-ext-colheader-version' => 'Versiya',
+'version-ext-colheader-license' => 'Lisenziya',
+'version-ext-colheader-credits' => 'Müəlliflər',
 'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' proqramı istifadə edilərək yaradılmışdır, müəlliflik © 2001-$1 $2.",
 'version-poweredby-others' => 'digərləri',
 'version-software-product' => 'Məhsul',
@@ -2986,7 +2949,6 @@ Variants for Chinese language
 
 # Special:ComparePages
 'comparepages' => 'Səhifələri qarşılaşdır',
-'compare-selector' => 'Səhifə redaktələrini qarşılaşdır',
 'compare-page1' => 'Səhifə 1',
 'compare-page2' => 'Səhifə 2',
 'compare-rev1' => 'Dəyişiklik 1',
index 6a1fe51..194e1ab 100644 (file)
@@ -108,7 +108,6 @@ $messages = array(
 'tog-minordefault' => 'دیفالت اولاراق بوتون دَییشدیر‌مه‌لریمی کیچیک دَییشدیر کیمی نیشانلا',
 'tog-previewontop' => 'اؤن‌گؤستریشی يازماق قوتوسوندان قاباق گؤستر',
 'tog-previewonfirst' => 'ایلک دَییشدیرمه‌ده اؤن‌گؤستریشی گؤستر',
-'tog-nocache' => 'براوزرین کَش ائتمگینی ایشلدن سال',
 'tog-enotifwatchlistpages' => 'ایزله‌دیکلریم‌ده اولان صحیفه یوخسا فایل دَییشدیریلنده، منه ایمیل گؤندر',
 'tog-enotifusertalkpages' => 'دانیشیق صحیفه‌‌م دَییشدیریلنده منه ایمیل گؤندر',
 'tog-enotifminoredits' => 'صحیفه‌لرده و فایل‌لاردا کیچیک دَییشیکلیکلر اولسا دا منه ایمیل گؤندر',
@@ -238,7 +237,6 @@ $messages = array(
 'qbedit' => 'دَییشدیر',
 'qbpageoptions' => 'بو صحیفه‌‌',
 'qbmyoptions' => 'منیم صحیفه‌‌لریم',
-'qbspecialpages' => 'اؤزل صحیفه‌لر',
 'faq' => 'چوخ سوروشولان سواللار',
 'faqpage' => 'Project:چوخلو سوروشولان سورغولار',
 
@@ -449,9 +447,6 @@ $1',
 'perfcachedts' => 'بو بیلگی کَش اولوب‌دور، سون دفعه $1 واختیندا گونجلیب‌دیر. چوخو {{PLURAL:$4|بیر نتیجه|$4 نتیجه}} کَش‌ده‌دیر.',
 'querypage-no-updates' => 'بو یارپاق‌دا گونجل‌له‌مک ایندی باغلانیب‌دیر.
 بورداکی بیلگیلر یئنی‌لشمیه‌جکلر.',
-'wrong_wfQuery_params' => 'wfQuery() اوچون یانلیش پارامئترلر وئریلیب‌دیر<br />
-فونکسیا: $1<br />
-سورغو: $2',
 'viewsource' => 'قایناغا باخ',
 'viewsource-title' => '$1 اوچون قایناغا باخین',
 'actionthrottled' => 'سیزین چالیشمانیزین قاباغی آلیندی',
@@ -625,7 +620,7 @@ $2',
 'user-mail-no-body' => 'بیر بوش یا چوخ قیسا یازیسی اولان ایمیل گؤندرمگه چالیشیلدی.',
 
 # Change password dialog
-'resetpass' => 'رمزی دَییشدیر',
+'changepassword' => 'رمزی دَییشدیر',
 'resetpass_announce' => 'سیز بیر گئچرلی ایمیل اولونان کود ایله گیرمیسینیز.
 گیرمگی قورتارماق اوچون، یئنی بیر رمز قویمالیسینیز:',
 'resetpass_header' => 'حساب رمزینی دَییشدیر',
@@ -842,7 +837,7 @@ $2
 </div> ایستیلئ="فونت-weight: بولد؛ فونت-سیزئ: 110%؛ جولور:رئد؛">موللیف حقوق‌لاری ایله قورونموش هئچ بیر ایشی ایجازه‌سیز درج ائتمیین!</div>',
 'copyrightwarning2' => 'خاهیش ائدیریک، {{SITENAME}} سایتینا ائده‌جه‌یم بوتون روسوم دیگر عضو‌لر طرفین‌دن دوزئنلئنئبیلئجئغینی، دییش‌دیریله و یا سیلینئبیلئجئغینی خاتیرلایین. یازی‌لارینین مئرهامئتسیزجئ دئغیشتیریلی بیلمسینه راضی‌لیق گؤسترمیرسه بورا ایشتیراک ائتمیین. <br />
 آیریجا بو علاوه یازینی سیزین یازدیغینیزدان یا دا سربست کوپیالاما ایجازه‌سی وئرن بیر قایناق‌دان کوپیالادیغینیزی بیزه اؤهده‌لرینه ائتمکدسینیز (دئتال‌لار اوچون ایستیناد: $1).',
-'longpageerror' => "خطا: داخیل متنین اوزون‌لوغو قبول ائدیله بیلر ان چوخ اوزونلوق اولان {{PLURAL: $2 | بیر کیلوبایت | $2 کیلوبایت}} دان چوخ‌دور و {{PLURAL: $1 | بیر کیلوبایت | $1 کیلوبایت}} بؤیوکلوگونده‌دیر.'
+'longpageerror' => "خطا: داخیل متنین اوزون‌لوغو قبول ائدیله بیلر ان چوخ اوزونلوق اولان {{PLURAL:$2 | بیر کیلوبایت | $2 کیلوبایت}} دان چوخ‌دور و {{PLURAL:$1 | بیر کیلوبایت | $1 کیلوبایت}} بؤیوکلوگونده‌دیر.'
 دییشیک‌لیگی‌نین کایدئدیلئمئز.",
 'readonlywarning' => "'''دیقت: باخیم سببی ایله دیتابیس بو آندا قیفیللی‌دیر. بو سببله دییشیک‌لیکلری‌نین بو آندا قئید ائدیل میه‌جکدیر. یازدیقلارینیزی باشقا بیر فایل‌دا آلیب ساخلایا و داها سونرا یئنی‌دن بورا گتیریب یازا بیلرسینیز.
 
@@ -995,10 +990,6 @@ $3 طرفین‌دن وئریلن سبب '$2",
 'revisiondelete' => 'نوسخه‌لری سیل/قایتار',
 'revdelete-nooldid-title' => 'هدف نوسخه گئچرسیزدیر',
 'revdelete-nooldid-text' => 'بو فونکسیانی حیاتا کئچیرمک اوچون مویین هدف دییشیک‌لیک و یا دئغیشیکیلئرینیز یوخ. تقدیم ائدیلمیش اولان رئویزیون مؤوجود دئییل، و یا مؤوجود رئویزیونو گیزلتمه‌یه چالیشیرسینیز.',
-'revdelete-nologtype-title' => 'هئچ بیر قئيد تیپی وئریلمه‌دی',
-'revdelete-nologtype-text' => 'بو عملیاتی دؤوره‌يه سوخماق اوچون بیر قئيد تیپی ایفاده ائتمه‌دینیز.',
-'revdelete-nologid-title' => 'يانلیش ژورنال يازیسی',
-'revdelete-nologid-text' => 'بو ایتفاق حیاتا کئچیرمک اوچون هئچ بیر قئید تیپی ایفاده ائدیلمه‌دی و یا گؤستریلن قئید تیپی مؤوجود دئییل.',
 'revdelete-no-file' => 'آختاریلان فايل مؤوجود دئيیل',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" فایلینین $2 $3 تاریخ‌لی سیلینمیش بیر رئداکته‌سینی گؤرمک ایستدیگینیزدن امینسیزینیزمی؟',
 'revdelete-show-file-submit' => 'بلی',
@@ -1030,8 +1021,6 @@ $3 طرفین‌دن وئریلن سبب '$2",
 'logdelete-failure' => "'''ژورنالین گؤرونوشو تنزیملنمه‌ییب:'''
 $1",
 'revdel-restore' => 'گؤرونوشو دییش',
-'revdel-restore-deleted' => 'سیلینمیش نوسخه‌لر',
-'revdel-restore-visible' => 'گؤرونن نوسخه‌لر',
 'pagehist' => 'صحیفه‌‌نین گئچمیشی',
 'deletedhist' => 'سیلین‌میش گئچمیشی',
 'revdelete-hide-current' => 'تاریخ $2 و ساعات $1-ده‌کی آیتئمی گیزلدمک خطاسی: بو ایندیکی نوسخه‌دیر و گیزلدیلنمز.',
@@ -1107,12 +1096,8 @@ $1",
 # 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}}',
@@ -1121,10 +1106,8 @@ $1",
 'nextn-title' => 'سونراکی {{PLURAL:$1|بیر|$1}} سونوج',
 'shown-title' => 'هر صحیفه‌ده {{PLURAL:$1|بیر|$1}} نتیجه گؤستر',
 'viewprevnext' => 'گؤستر ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'آختارماق تنظیملری',
 'searchmenu-exists' => "'''بو ویکی‌ده «[[:$1]]» آدلی صحیفه واردیر.'''",
 'searchmenu-new' => "'''بو ویکی‌ده «[[:$1]]» صحیفه‌‌سینی يارات!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بو اؤن‌اک ایله اولان صحیفه‌لری آختار]]',
 'searchprofile-articles' => 'مقاله‌لر',
 'searchprofile-project' => 'یاردیم و پروژه صحیفه‌لری',
 'searchprofile-images' => 'مولتی‌مئدیا',
@@ -1145,20 +1128,16 @@ $1",
 'search-interwiki-default' => '$1 سونوج:',
 'search-interwiki-more' => '(داها)',
 'search-relatedarticle' => 'ایلگیلی',
-'mwsuggest-disable' => 'آختاریش اؤنرلرینی ایشدن سال',
 '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' => 'هئچ بیری',
@@ -1172,7 +1151,6 @@ $1",
 'preferences' => 'ترجیحلر',
 'mypreferences' => 'ترجیحلر',
 'prefs-edits' => 'دَییشمه‌لرین سایی:',
-'changepassword' => 'رمزی دَییشدیر',
 'prefs-skin' => 'قابیق',
 'skin-preview' => 'اؤن‌گؤستریش',
 'datedefault' => 'سئچیم‌سیز',
@@ -1195,13 +1173,11 @@ $1",
 'prefs-email' => 'ایمیل ترجیحلری',
 'prefs-rendering' => 'گؤرونوش',
 'saveprefs' => 'قئید ائت',
-'resetprefs' => 'قئید ائدیلمه‌میش ترجیحلری صیفیرله',
 'restoreprefs' => 'بوتون ایلک ترجیحلری قایتار',
 'prefs-editing' => 'دَییشدیرمک‌ده',
 'rows' => 'سطرلر:',
 'columns' => 'سوتونلار',
 'searchresultshead' => 'آختار',
-'resultsperpage' => 'صحیفه‌‌يه عاید تاپیلمیش نتیجه‌لر:',
 'stub-threshold' => '<a href="#" class="stub">کئچیدسیز لینکی</a> فورمات ائتمک اوچون حدود (بایت‌لارلا):',
 'stub-threshold-disabled' => 'چالیشمایان',
 'recentchangesdays' => 'سون دییشیک‌لرده گؤستریلن گون‌لرین میقداری:',
@@ -1213,7 +1189,6 @@ $1",
 'localtime' => 'یئرلی چاغ:',
 'timezoneuseserverdefault' => 'ویکی اؤن‌فرضینی ایشلد ($1)',
 'timezoneuseoffset' => 'باشقا (چاغ فرقینی بیلدیر)',
-'timezoneoffset' => 'واقت فرقی¹:',
 'servertime' => 'خیدمتچی چاغی:',
 'guesstimezone' => 'براوزِردن دولدور',
 'timezoneregion-africa' => 'آفریقا',
@@ -1465,7 +1440,6 @@ $1",
 'recentchanges-label-minor' => 'بو بیر کیچیک دَییشدیرمه‌دیر',
 'recentchanges-label-bot' => 'بو دییشیک بیر بوت طرفیندن ائدیلیب‌دیر',
 'recentchanges-label-unpatrolled' => 'بو دییشیکلیک هله گؤزدن گئچیریلمه‌ییب‌دیر',
-'rcnote' => "آشاغیدا {{PLURAL:$1|'''بیر'''|'''$1'''}} ديَیشیکلیک، سون {{PLURA?:$2|بیر|$2}} گون‌ده، ساعت $5، $4 تاریخینه قدر گلیب‌دیر.",
 'rcnotefrom' => "آشاغیدا '''$2'''-دن ('''$1'''-ه قدر) ديَیشیکلیکلر گلیبلر.",
 'rclistfrom' => '$1 واختیندان باشلایاراق یئنی دییشیکلری گؤستر',
 'rcshowhideminor' => 'کیچیک دَییشیکلری $1',
@@ -1544,8 +1518,8 @@ $1",
 'filetype-mime-mismatch' => '".$1" فایل اوزانتی‌سی فایلین میمئ تیپینه ($2) اویغون گلمیر.',
 'filetype-badmime' => '"$1" MIME تیپین‌دکی فایل‌لارین یوکلنمه‌سینه ایجازه وئریلمیر.',
 'filetype-bad-ie-mime' => 'بو فایل یوک‌لنه، چونکی اینتئرنئت اکسپلورر بونو، ایجازه وئریلمه‌ین و احتمالا زررلی فایل نؤوو اولان "$1" اولا‌راق تثبیت ائدیر.',
-'filetype-unwanted-type' => "'''\". \$1\"''' ایستنمه‌ین بیر فایل نؤوودور. تکلیف ائدیلن {{PLURAL: \$3 | فایل نؤوو | فایل نؤو‌لری}} \$2.",
-'filetype-banned-type' => '\' \'". $1"\' {{PLURAL: $4 | ایجازه وئریلن بیر فایل نؤوو دئییل | ایجازه وئریلن بیر فایل نؤوو دئییل}}. ایجازه وئریلن {{PLURAL: $3 | فایل نؤوو | فایل نؤو‌لری}} $2.',
+'filetype-unwanted-type' => "'''\". \$1\"''' ایستنمه‌ین بیر فایل نؤوودور. تکلیف ائدیلن {{PLURAL:\$3 | فایل نؤوو | فایل نؤو‌لری}} \$2.",
+'filetype-banned-type' => '\' \'". $1"\' {{PLURAL:$4 | ایجازه وئریلن بیر فایل نؤوو دئییل | ایجازه وئریلن بیر فایل نؤوو دئییل}}. ایجازه وئریلن {{PLURAL:$3 | فایل نؤوو | فایل نؤو‌لری}} $2.',
 'filetype-missing' => 'فايلین هئچ بیر اوزانتیسی يوخدور (مثلا، ".jpg").',
 'empty-file' => 'سیز یول‌لادیغینیز فایل، بوش ایدی.',
 'file-too-large' => 'گؤندردیگینیز فایل چوخ بؤیوک‌دور.',
@@ -1586,7 +1560,7 @@ $1",
 'fileexists-shared-forbidden' => 'بو آددا بیر فايل اورتاق آمباردا مؤوجود دیر. 
 فايلینیزی يئنه ده يوکله‌مک ایسته‌يیرسینیزسه، خاهیش ائدیریک گئری گئدیب يئنی بیر آد ایستیفاده ائدین. 
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'بو فایل آشاغی‌داکی {{PLURAL: $1 | فایلین | فایل‌لارین}} تکراری سی‌دیر:',
+'file-exists-duplicate' => 'بو فایل آشاغی‌داکی {{PLURAL:$1 | فایلین | فایل‌لارین}} تکراری سی‌دیر:',
 'file-deleted-duplicate' => 'بو فایلین عینی اولان باشقا بیر فایل([[:$1]])داها اول‌دن سیلیندی. بو فای‌لی یئنی‌دن یوکلمه‌دن اول دیگر فایلین سیلینمه‌سی قئیدلرینی ایداره ائتملیسینیز.',
 'uploadwarning' => 'يوکله‌مه خبردارلیغی',
 'uploadwarning-text' => 'خاهیش ائدیریک آشاغی‌داکی فایل شرحینی دییش‌دیرین و یئنی‌دن جهد ائدین.',
@@ -1954,10 +1928,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization صحیفه‌‌سین
 'protectedpages' => 'محافظه‌‌لی صحیفه‌‌لر',
 'protectedpages-indef' => 'يالنیز مدتسیز محافظه‌‌لر',
 'protectedpages-cascade' => 'یالنیز کاسکاد محافظه‌لر',
-'protectedpagestext' => 'آشاغی‌داکی صحیفه‌لر آد دییشیمینه و دَییشدیرمه‌یه باغلی‌دیر',
 'protectedpagesempty' => 'حال-حاضردا بو پارامئتره اویغون هئچ بیر محافظه‌لی صحیفه یوخ‌دور',
 'protectedtitles' => 'محافظه‌لی باش‌لیق‌لار',
-'protectedtitlestext' => 'آشاغی‌داکی باش‌لیق‌لار یارادیلماغا قارشی قوروما‌لی‌دیر',
 'protectedtitlesempty' => 'حال-حاضردا، بو پارامئترلری قورونان هئچ بیر موضوع یوخ‌دور.',
 'listusers' => 'ایستیفاده‌چی سیياهیسی',
 'listusers-editsonly' => 'يالنیز دَییشدیرمه ائدن ایستیفاده‌چیلری گؤستر',
@@ -2008,9 +1980,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization صحیفه‌‌سین
 'allpagesto' => 'بو حرفله باشلایان صحیفه لری گؤستر:',
 'allarticles' => 'بوتون صحیفه‌لر',
 'allinnamespace' => 'بوتون صحیفه‌لر ($1 صحیفه‌لری)',
-'allnotinnamespace' => 'بوتون صحیفه‌لر ( $1 ساحه‌سینده اولمایان‌لار)',
-'allpagesprev' => 'قاباقکی',
-'allpagesnext' => 'سونراکی',
 'allpagessubmit' => 'گئت',
 'allpagesprefix' => 'بورا یازدیغینیز حرف‌لرله باشلایان صحیفه‌لری سیاهی‌سینی:',
 'allpagesbadtitle' => 'گیریلن صحیفه آدی دیل‌لر آراسی علاقه و یا wiki آراسی علاقه ائهتیوا ائتدیگین‌دن اعتبارلی دئییل. باش‌لیق‌لاردا ایستیفاده ائدیلمه‌سی قاداغان اولان بیر یا دا داها چوخ کاراکتئر ائهتیوا ائدیر اولا بیلر.',
@@ -2220,7 +2189,7 @@ $نئwپاگئ
 ** یازانلار حقوق پوزونتوسو
 ** واندالیزم',
 'delete-edit-reasonlist' => 'سیلمک دلیل‌لرینی دَییشدیر',
-'delete-toobig' => 'بو صحیفه، $1 {{PLURAL: $1 | دنه دییشیک‌لیک | دنه دییشیک‌لیک}} ایله چوخ اوزون بیر کئچمیشه مالیک‌دیر.
+'delete-toobig' => 'بو صحیفه، $1 {{PLURAL:$1 | دنه دییشیک‌لیک | دنه دییشیک‌لیک}} ایله چوخ اوزون بیر کئچمیشه مالیک‌دیر.
 بئله صحیفه‌لرین سیلینمه‌سی، {{SITENAME}} سایتینی پوزماماق اوچون مهدودلاشدیریلماقدا‌دیر.',
 'delete-warning-toobig' => 'بو صحیفه‌‌نین بؤيوک بیر ديَیشیکلیک کئچمیشی وار، $1 {{PLURAL:$1|نسخه| نسخه}} اوزرینده. 
 بونو سیلمک {{SITENAME}} عملیاتلارینی مخدل‌ائده‌بیلیر؛ 
@@ -2339,7 +2308,6 @@ $نئwپاگئ
 'undeletebtn' => 'قایتار',
 'undeletelink' => 'باخ/قایتار',
 'undeleteviewlink' => 'باخ',
-'undeletereset' => 'قور',
 'undeleteinvert' => 'سئچیلنی دؤندر',
 'undeletecomment' => 'ندن:',
 'undeletedrevisions' => 'جمعی {{PLURAL:$1|1 دییش|$1 دییشدیر}} گئری قایتاریلدی.',
@@ -2429,13 +2397,11 @@ $1',
 'block' => 'ایستیفادچینی باغلاما',
 'unblock' => 'ایستیفاده‌چی‌نین باغلانماسین گؤتور',
 'blockip' => 'ایستیفاده چی نی باغلا',
-'blockip-title' => 'ایستیفادچی نی باغلا',
 'blockip-legend' => 'ایستیفادچی نی باغلا',
 'blockiptext' => 'آشاغی‌داکی فورمو ایستیفاده ائده‌رک مویین بیر ایپنین و یا قئیدیات‌دان کئچمیش ایستیفاده‌چی‌نین دییشیک‌لیک ائتمه‌سینی مانعه تؤره‌ده بیلرسینیز. بو یالنیز واندالیزمی قارشی‌سینی آلماق اوچون و [[{{MediaWiki:Policy-url}}|قایدا‌لارا]] اویغون اولا‌راق ائدیلمه‌لی. آشاغییا موتلق قاداغا ایله علاقه‌دار بیر شرح یازین. (نومونه:-بو-صحیفه‌لرده واندالیزم ائتمیش‌دیر).',
 'ipadressorusername' => 'آی-پی عونوانی و یا ایستیفاده‌چی آدی',
 'ipbexpiry' => 'بیتمه مدتی:',
 'ipbreason' => 'ندن:',
-'ipbreasonotherlist' => 'باشقا سبب',
 'ipbreason-dropdown' => '*باغلانما سبب‌لری:
 ** یالان معلومات‌لارین علاوه ائدیلمه‌سی
 ** صحیفه‌نین مزمونونون سیلینمه‌سی
@@ -2452,8 +2418,6 @@ $1',
 'ipbsubmit' => 'بو ایستیفاده چی نی باغلا',
 'ipbother' => 'باشقا واخت',
 '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',
-'ipbotheroption' => 'آیری',
-'ipbotherreason' => 'آیری سبب/آرتیق:',
 'ipbhidename' => 'ایستیفاده‌چی آدینی دییشدیر‌لرده و سیاهی‌لاردا گیزلت',
 'ipbwatchuser' => 'بو ایستیفاده‌چی‌نین دانیشیق و ایستیفاده‌چی صحیفه‌سینی ایزله',
 'ipb-disableusertalk' => 'بو ایستیفاده‌چی باغلی اولارکن اؤز دانیشیق صحیفه‌سینده دییشدیر ائتمه‌سینی اوز الیله قاباقین آلما',
@@ -2545,7 +2509,6 @@ $1 آدلی ایستیفاده‌چی‌نین باغلانما سببی: "$2"',
 'sorbs_create_account_reason' => 'ایپ اونوانینیز {{SITENAME}} سایتی طرفین‌دن ایستیفاده ائدیلن DNSBL آچیق پروکسی اولا‌راق اولونموش.
 حساب میدانا گتیره بیلمز',
 'xffblockreason' => 'X-Forwarded-For باشلیغیندا، سیزین یا بیر ایشلتدیگینیز پروکسی خیدمتچی‌نین بلوکلانمیش آی‌پی آدرسی وار. ایلکین بلوکلاما سببی: $1',
-'cant-block-while-blocked' => 'سیز ائنگئللیيکئن باشقا ایستیفاده‌چیلری مانعه تؤره‌ده بیلمزسینیز.',
 'cant-see-hidden-user' => 'قارشیسینی آلماق ایسته‌دیگینیز ایستیفاده‌چی اونسوز دا مانعه تؤره‌دیلمیش و گیزلنمیش. کوللانیجیگیزلئ ایجازه‌نیز اولمادیغی اوچون، ایستیفاده‌چی‌نین قارشیسی‌نین آلینماسینی گؤره بیلمز يا دا ديَیشدیره.',
 'ipbblocked' => 'دیگر ایستیفاده‌چیلری مانعه تؤره‌ده بیلمز يا دا مانعه تؤرتمه‌سینی قالدیرا بیلمز، چونکی اؤزونوز ائنگئللئنمیشسیز',
 'ipbnounblockself' => 'اؤز بوولوکلانمانیزی کالدیرمانیزا ایجازه وئریلمیر',
@@ -2603,7 +2566,6 @@ $1 آدلی ایستیفاده‌چی‌نین باغلانما سببی: "$2"',
 همین حال‌لاردا ، احتیاج یارانارسا سیز صحیفه‌لری الله بیرلش‌دیرمک مجبوریتینده قالاجاقسینیز",
 'movearticle' => 'صحیفه‌نین آدینی دییش‌دیر',
 'moveuserpage-warning' => "' 'خبردارلیق:' بیر ایستیفاده‌چی صحیفه‌سینی داشیماق اوزرسینیز. خاهیش ائدیریک یالنیز صحیفه‌نین تاشیناجاغینا، آنجاق ایستیفاده‌چی‌نین یئنی‌دن آدلاندیریلمایاجاغینا دقت ائدین.",
-'movenologin' => 'سیستئمده دئییلسینیز',
 'movenologintext' => 'صحیفه‌نین آدینی دییشیک‌لیک اوچون قئیدیات‌لی و [[Special:UserLogin|سیستئمه]] داخیل اولمانیز لازیم‌دیر.',
 'movenotallowed' => 'سیز صحیفه‌لرین آدینی دییشه بیلمزسینیز.',
 'movenotallowedfile' => 'سیز فایل‌لارین آدینی دییشه بیلمزسینیز.',
@@ -2619,8 +2581,6 @@ $1 آدلی ایستیفاده‌چی‌نین باغلانما سببی: "$2"',
 'articleexists' => 'بو آددا صحیفه آرتیق مؤوجوددور و یا سیزین سئچدیگینیز آد اویغون دئییل.
 زحمت اولماسا باشقا آد سئچین.',
 'cantmove-titleprotected' => 'بیر صحیفنی بو مؤوقئیه داشییا بیلمز، چونکی یئنی موضونون یارادیلماسی قورونور',
-'talkexists' => "'صحیفه‌نین آدی دییشدی، لاکین دانیشیق صحیفه‌سی یئنی آدلا اولدوغو اوچون دییشه بیلمیر. زحمت اولماسا، اونون آدینی اؤزونوز دییشین.'",
-'movedto' => 'داشیندی :',
 'movetalk' => 'بو صحیفه‌نین دانیشیق صحیفه‌سی‌نین ده آدینی دییش‌دیر.',
 'move-subpages' => 'یاریم صحیفه‌لری کؤچور ($1-ا قدر)',
 'move-talk-subpages' => 'دانیشیق صحیفه‌لری‌نین آلت صحیفه‌لرینی کؤچور ($1-ا قدر)',
@@ -2631,7 +2591,7 @@ $1 آدلی ایستیفاده‌چی‌نین باغلانما سببی: "$2"',
 'movelogpage' => 'آد ديیشدیرمک قئیدی',
 'movelogpagetext' => 'آشاغیدا اولان سیاهی آدی دییشدیریلمیش صحیفه‌لری گؤستریر.',
 'movesubpage' => '{{PLURAL:$1|آلتینداکی صحیفه}}',
-'movesubpagetext' => 'بو صحیفه‌نین آشاغیدا گؤستریلن $1 {{PLURAL: $1 | آلت صحیفه سی | آلت صحیفه اسی}} وار.',
+'movesubpagetext' => 'بو صحیفه‌نین آشاغیدا گؤستریلن $1 {{PLURAL:$1 | آلت صحیفه سی | آلت صحیفه اسی}} وار.',
 'movenosubpage' => 'بو صحیفه‌نین آلت صحیفه‌سی یوخ‌دور.',
 'movereason' => 'ندن:',
 'revertmove' => 'قایتار',
@@ -2979,7 +2939,7 @@ $1',
 'file-info-gif-looped' => 'ایلملنیب',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|فرامئ|چرچیوه}}',
 'file-info-png-looped' => 'ایلملنیب',
-'file-info-png-repeat' => '$1 {{PLURAL: $ 1|دفعه| دفعه}} اویناتیلدی',
+'file-info-png-repeat' => '$1 {{PLURAL:$ 1|دفعه| دفعه}} اویناتیلدی',
 'file-info-png-frames' => '$1 {{PLURAL:$1|فرامئ|چرچیوه}}',
 'file-no-thumb-animation' => "'''قئید:تئکنیکی مسئله‌لر سببیندن قاباق دان گورسنمه فایل متحرک شکیلی گؤرستمیر .",
 'file-no-thumb-animation-gif' => "'''قئید:فنی مسائیله گوره GIF  فایلارین و اونا تای اولانان لار  قالباق دان گورستمه پروقرمی متحرک حالیندا گورسدیلمیجک.'''",
@@ -3436,15 +3396,10 @@ $1',
 'exif-urgency-high' => 'چوخ($1)',
 'exif-urgency-other' => 'ایستیفاده‌چی طرفین‌دن مویین اولونموش بیرینجی‌لیک ($1)',
 
-# External editor support
-'edit-externally' => 'بو فایلی خاریجی یازیلیم‌لا دَییشدیر',
-'edit-externally-help' => '(آرتیق بیلگیلر اوچون [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] صحیفه‌سینه باخ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'بوتون',
 'namespacesall' => 'بوتون',
 'monthsall' => 'بوتون',
-'limitall' => 'بوتون',
 
 # Email address confirmation
 'confirmemail' => 'ایمیل-پوست اونوانینی تصدیق ائت',
@@ -3467,7 +3422,6 @@ $1',
 'confirmemail_success' => 'ایمیل اونوانینیز ایندی تسدیق ائدیلدی.
 سیز ایندی [[Special:UserLogin|حئساب آچاراق]] ویکیدن لذت آپارین.',
 'confirmemail_loggedin' => 'ایمیل‌نیز ایندی تسدیق ائدیلدی.',
-'confirmemail_error' => 'قئید بیلینمه‌ين بیر خطا اوچون قئید اولونمادی.',
 'confirmemail_subject' => '{{SITENAME}} ایمیل تسدیق ائتمه',
 'confirmemail_body' => 'بیری، احتیماللا سیز، $1 ایپ اونوانیندان، 
 {{SITENAME}} سايتیندا بو ائ-پوچت اونوانی ایله $2 حسابینی آچدی. 
@@ -3568,7 +3522,7 @@ $5
 نورمال سینیق گوستریشی کولانین.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => '$1 {{PLURAL: $1 | سانیيه‌دن | سانیيه‌ده}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرولمه‌يه.',
+'lag-warn-normal' => '$1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌ده}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرولمه‌يه.',
 'lag-warn-high' => 'وئریلنلر بازاسی سونوجوسونداکی هددیندن آرتیق گئجیکمه‌دن گؤره، $1 {{PLURAL:$1 | سانیيه‌دن | سانیيه‌دن}} يئنی ديَیشیکلیکلر بو سیياهیدا گؤرونمئيئبیلیر.',
 
 # Watchlist editor
@@ -3706,7 +3660,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'صحیفه‌لری قارشی‌لاش‌دیر',
-'compare-selector' => 'صحیفه دییشدیر‌لرینی قارشی‌لاش‌دیر',
 'compare-page1' => 'صحیفه 1',
 'compare-page2' => 'صحیفه 2',
 'compare-rev1' => 'نوسخه ۱',
index 9239251..36ca388 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Барлыҡ_битәр' ),
        'Blankpage'                 => array( 'Буш_бит' ),
        'Block'                     => array( 'Блоклау' ),
-       'Blockme'                   => array( 'Мине_блокла' ),
        'Booksources'               => array( 'Китап_сығанаҡтары' ),
        'BrokenRedirects'           => array( 'Өҙөлгән_йүнәлтеүҙәр' ),
        'Categories'                => array( 'Категориялар' ),
@@ -78,7 +77,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Иҫәп_яҙыуы_яһау' ),
        'Deadendpages'              => array( 'Көрсөк_биттәр' ),
        'DeletedContributions'      => array( 'Юйылған_өлөш' ),
-       'Disambiguations'           => array( 'Күп_мәғәнәлелек' ),
        'DoubleRedirects'           => array( 'Икеле_йүнәлтеүҙәр' ),
        'EditWatchlist'             => array( 'Күҙәтеү_исемлеген_мөхәррирләү' ),
        'Emailuser'                 => array( 'Ҡатнашыусыға_хат' ),
@@ -171,7 +169,6 @@ $messages = array(
 'tog-minordefault' => 'Бөтә үҙгәртеүҙәрҙе, ғәҙәттә, әҙ үҙгәреш тип билдәләргә',
 'tog-previewontop' => 'Алдан байҡау тәҙрәһен мөхәррирләү битенең өҫтөнә ҡуйырға',
 'tog-previewonfirst' => 'Мөхәррирләүгә күскәндә алдан ҡарау күрһәтелһен',
-'tog-nocache' => 'Браузерҙа биттәрҙе кэшлауҙы тыйырға',
 'tog-enotifwatchlistpages' => 'Күҙәтеү исемлегендәге биттәрҙең һәм файлдарҙың үҙгәрештәре тураһында электрон почта аша хәбәр итергә',
 'tog-enotifusertalkpages' => 'Шәхси фекер алышыу битем үҙгәртелеү тураһында электрон почта аша белдерергә',
 'tog-enotifminoredits' => 'Биттәрҙең һәм файлдарҙың аҙ гынә үҙгәрештәре тураһында ла электрон почта аша хәбер итергә',
@@ -270,16 +267,16 @@ $messages = array(
 'december-date' => 'Сентябрь $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категория}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категория}}',
 'category_header' => '«$1» категорияһындағы биттәр',
 'subcategories' => 'Эске категориялар',
 'category-media-header' => '«$1» категорияһындағы файлдар',
 'category-empty' => '"Был категория әлегә буш."',
-'hidden-categories' => '{{PLURAL:$1|Йәшерен категория|Йәшерен категориялар}}',
+'hidden-categories' => '{{PLURAL:$1|1=Йәшерен категория|Йәшерен категориялар}}',
 'hidden-category-category' => 'Йәшерен категориялар',
-'category-subcat-count' => '{{PLURAL:$2|Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Был категорияла тик киләһе эске категория ғына бар.|$2 эске категорияның $1 эске категорияһы күрһәтелгән.}}',
 'category-subcat-count-limited' => 'Был категорияла {{PLURAL:$1|$1 эске категория}} бар.',
-'category-article-count' => '{{PLURAL:$2|Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}',
+'category-article-count' => '{{PLURAL:$2|1=Был категорияла бер генә бит бар.|Категориялағы $2 биттең $1 бите күрһәтелгән.}}',
 'category-article-count-limited' => 'Был категорияла {{PLURAL:$1|$1 бит}} бар.',
 'category-file-count' => '{{PLURAL:$2|Был категорияла бер генә файл бар.|Категориялағы $2 файлдың {{PLURAL:$1|$1 файлы күрһәтелгән}}.}}',
 'category-file-count-limited' => 'Бу категорияла {{PLURAL:$1|$1 файл}} бар.',
@@ -306,7 +303,6 @@ $messages = array(
 'qbedit' => 'Үҙгәртергә',
 'qbpageoptions' => 'Был бит',
 'qbmyoptions' => 'Биттәрем',
-'qbspecialpages' => 'Махсус биттәр',
 'faq' => 'ЙБҺ',
 'faqpage' => 'Project:ЙБҺ',
 
@@ -351,7 +347,7 @@ $messages = array(
 'deletethispage' => 'Был битте юйырға',
 'undeletethispage' => 'Юйылған был битте ҡабат тергеҙеү',
 'undelete_short' => '$1 {{PLURAL:$1|үҙгәртеүҙе}} тергеҙергә',
-'viewdeleted_short' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау',
+'viewdeleted_short' => '{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау',
 'protect' => 'Һаҡларға',
 'protect_change' => 'үҙгәртергә',
 'protectthispage' => 'Был битте һаҡларға',
@@ -414,7 +410,7 @@ $1',
 
 'badaccess' => 'Кереү хатаһы',
 'badaccess-group0' => 'Һоратылған ғәмәлде үтәй алмайһығыҙ.',
-'badaccess-groups' => 'Һоратылған ғәмәлде киләһе {{PLURAL:$2|төркөм|төркөмдәр}} ҡулланыусылары ғына башҡара ала: $1.',
+'badaccess-groups' => 'Һоратылған ғәмәлде киләһе {{PLURAL:$2|1=төркөм|төркөмдәр}} ҡулланыусылары ғына башҡара ала: $1.',
 
 'versionrequired' => 'MediaWiki-ның $1 версияһы кәрәкле',
 'versionrequiredtext' => 'Был бит менән эшләү өсөн MediaWiki-ның $1 версияһы кәрәк. [[Special:Version|Ҡулланылған версия тураһында мәғлүмәт битен]] ҡара.',
@@ -423,10 +419,10 @@ $1',
 'pagetitle' => '{{SITENAME}} проектынан',
 'retrievedfrom' => 'Сығанағы — «$1»',
 'youhavenewmessages' => 'Яңы $1 бар ($2).',
-'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
+'youhavenewmessagesfromusers' => 'Һеҙгә {{PLURAL:$3|1=башҡа ҡатнашыусынан|$3 ҡатнашыусынан}} $1 бар ($2).',
 'youhavenewmessagesmanyusers' => 'Һеҙгә күп ҡатнашыусынан $1 бар ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|яңы хәбәр|яңы хәбәр}}',
-'newmessagesdifflinkplural' => 'һуңғы {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=яңы хәбәр|яңы хәбәр}}',
+'newmessagesdifflinkplural' => 'һуңғы {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
 'youhavenewmessagesmulti' => 'Һеҙгә яңы хәбәрҙәр бар: $1',
 'editsection' => 'үҙгәртергә',
 'editold' => 'төҙәтеү',
@@ -441,7 +437,7 @@ $1',
 'collapsible-expand' => 'асырға',
 'thisisdeleted' => 'Ҡарарғамы йәки тергеҙергәме? — $1',
 'viewdeleted' => '$1 ҡарарғамы?',
-'restorelink' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}}',
+'restorelink' => '{{PLURAL:$1|1=1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}}',
 'feedlinks' => 'Таҫма:',
 'feed-invalid' => 'Хаталы таҫма тибы.',
 'feed-unavailable' => 'Синдикация таҫмаларына ирешеп булмай',
@@ -525,9 +521,6 @@ $1',
 'perfcachedts' => 'Был мәғлүмәттәр кэштан алынған, ул һуңғы тапҡыр $1 яңыртылды.  Кэшта иң күбе  {{PLURAL:$4|язма}} һаҡлана',
 'querypage-no-updates' => 'Был битте яңыртыу хәҙер тыйылған.
 Бында күрһәтелгән мәғлүмәттәр яңыртылмаясаҡ.',
-'wrong_wfQuery_params' => 'wfQuery() функцияһы өсөн рөхсәт ителмәгән параметрҙар<br />
-Функция: $1<br />
-Һоратыу: $2',
 'viewsource' => 'Сығанаҡты ҡарау',
 'viewsource-title' => '$1 битенең сығанаҡ текстын ҡарарға',
 'actionthrottled' => 'Тиҙлек сикләнгән',
@@ -540,7 +533,7 @@ $1',
 'editinginterface' => "'''Иғтибар.''' Һеҙ программаның арайөҙ тексты булған битте мөхәррирләйһегеҙ.
 Уны үҙгәртеү, башҡа ҡулланыусыларҙын арайөҙ күренешен үҙгәртәсәктер.
 Тәржемә өсөн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] адресын, MediaWiki-ны локалләштереү проектын ҡулланыу яҡшыраҡ буласаҡтыр.",
-'cascadeprotected' => 'Был бит үҙгәртеүҙәрҙән һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|биткә|биттәргә}} керә:
+'cascadeprotected' => 'Был бит үҙгәртеүҙәрҙән һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә:
 $2',
 'namespaceprotected' => '«$1» исем арауығындағы биттәрҙе мөхәррирләү өсөн хоҡуҡтарығыҙ юҡ.',
 'customcssprotected' => 'Был CSS-битте үҙгәртеү хоҡуғығыҙ юҡ, сөнки унда башҡа ҡулланыусының шәхси көйләүҙәре бар.',
@@ -627,8 +620,8 @@ $2',
 'createacct-another-submit' => 'Тағы бер иҫәп яҙмаһын булдырырға',
 'createacct-benefit-heading' => '{{SITENAME}} һеҙҙең кеүек үк кешеләр тарафынан булдырылған',
 'createacct-benefit-body1' => '{{PLURAL:$1|үҙгәртеү}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|мәҡәлә|мәҡәлә|мәҡәләнең}}',
-'createacct-benefit-body3' => 'һуңғы ваҡытта {{PLURAL:$1|ҡатнашыусы|}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|мәҡәлә|мәҡәләнең|мәҡәлә}}',
+'createacct-benefit-body3' => 'һуңғы ваҡытта {{PLURAL:$1|ҡатнашыусы}}',
 'badretype' => 'Һеҙ кереткән серһүҙҙәр тап килмәй.',
 'userexists' => 'Керетелгән исем ҡулланыла инде.
 Зинһар, башҡа исем һайлағыҙ.',
@@ -666,7 +659,7 @@ $2',
 'blocked-mailpassword' => 'Һеҙҙең IP-адресығыҙҙан мөхәррирләү тыйылған, шул сәбәпле серһүҙ тергеҙеү ғәмәле лә блокланған.',
 'eauthentsent' => 'Күрһәтелгән электрон почта адресына адресты үҙгәртеүҙе раҫлауығыҙ өсөн хат ебәрелде. Хатта был адрес һеҙҙеке булғанын раҫлау өсөн ниндәй ғәмәлдәрҙе үтәү кәрәклеге тураһында мәғлүмәт бар.',
 'throttled-mailpassword' => 'Серһүҙҙе иҫләтеү ғәмәле {{PLURAL:$1|һуңғы $1 сәғәт}} эсенде ҡулланылды инде.
-Насар ниәтле ҡулланыуҙарға ҡаршы, Серһүҙ иҫләтеү ғәмәлен {{PLURAL:$1|сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
+Насар ниәтле ҡулланыуҙарға ҡаршы, Серһүҙ иҫләтеү ғәмәлен {{PLURAL:$1|1=сәғәт|$1 сәғәт}} эсендә бер тапҡыр ғына ҡулланырға була.',
 'mailerror' => 'Хат ебәреү хатаһы: $1',
 'acct_creation_throttle_hit' => 'Һеҙҙең IP-адрестан бер тәүлек эсендә {{PLURAL:$1|$1 иҫәп яҙыуы}} яһалды инде, был һан был ваҡыт аралығы өсөн максимум һан. Шул сәбәпле, был IP-адресына эйә ҡулланыусылар, хәҙерге ваҡытта яңы иҫәп яҙыуы яһай алмайҙар.',
 'emailauthenticated' => 'Электрон почта адресығыҙ раҫланды: $3, $2.',
@@ -698,7 +691,7 @@ $2',
 'user-mail-no-body' => 'Буш йә мәғәнәһеҙ йөкмәткеле ҡыҫҡа электрон хат ебәрергә тырышҡан.',
 
 # Change password dialog
-'resetpass' => 'Серһүҙҙе үҙгәртеү',
+'changepassword' => 'Серһүҙҙе үҙгәртергә',
 'resetpass_announce' => 'Һеҙ системала электрон почта аша алынған ваҡытлыса серһүҙ менән танылдығыҙ. Системаға кереүҙә тамалау өсөн яңы серһүҙ булдырығыҙ.',
 'resetpass_header' => 'Иҫәп яҙыуы серһүҙен үҙгәртеү',
 'oldpassword' => 'Иҫке серһүҙ:',
@@ -729,18 +722,18 @@ $2',
 'passwordreset-email' => 'Электрон почта адресы:',
 'passwordreset-emailtitle' => '{{SITENAME}} иҫәп яҙыуы мәғлүмәттәре',
 'passwordreset-emailtext-ip' => 'Берәү (бәлки һәҙ, $1 IP-адресынан ) {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты.
-Киләһе ҡулланыусы {{PLURAL:$3|иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
+Киләһе ҡулланыусы {{PLURAL:$3|1=иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
 
 $2
 
-Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Был ваҡытлыса {{PLURAL:$3|1=серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
 Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
 Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙегеҙҙе ҡулланыуҙы дауам итегеҙ.',
-'passwordreset-emailtext-user' => '{{SITENAME}} проектындағы $1 ҡулланыусыһы {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты. Киләһе ҡулланыусы {{PLURAL:$3|иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
+'passwordreset-emailtext-user' => '{{SITENAME}} проектындағы $1 ҡулланыусыһы {{SITENAME}} ($4) проектындағы иҫәп яҙыуығыҙҙы хәтерләтеүҙе һоратты. Киләһе ҡулланыусы {{PLURAL:$3|1=иҫәп яҙыуы|иҫәп яҙыуҙары}} был электрон почта адресы менән бәйле:
 
 $2
 
-Был ваҡытлыса {{PLURAL:$3|серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
+Был ваҡытлыса {{PLURAL:$3|1=серһүҙ|серһүҙҙәр}} {{PLURAL:$5|$5 көн}} ғәмәлдә буласаҡ.
 Һеҙ системала танылырға һәм яңы серһүҙ һайларға тейешһегеҙ.
 Әгәр, һеҙ быны һоратмаған булһағыҙ йәки элекке серһүҙегеҙҙе киренән иҫләһәгеҙ һәм уны үҙгәртергә теләмәһәгеҙ, был хатҡа иғтибар итмәгеҙ һәм элекке серһүҙеҙҙе ҡулланыуҙы дауам итегеҙ.',
 'passwordreset-emailelement' => 'Ҡулланыусы исеме: $1
@@ -929,7 +922,7 @@ $2
 Әгәр кемдең дә булһа текстарығыҙҙы үҙгәртеүен теләмәһәгеҙ, уларҙы бында ҡуймағыҙ.<br />
 Шулай уҡ, кереткән өҫтәмәләрҙең авторы булыуығыҙҙы йәки уларҙы, эстәлеге ирекле рәүештә таратылырға һәм үҙгәртелергә рөхсәт ителгән сығанаҡтан алыуығыҙҙы раҫлайһығыҙ (ҡарағыҙ: $1).
 '''РӨХСӘТҺЕҘ, АВТОРЛЫҠ ХОҠУҠТАРЫ МЕНӘН ҺАҠЛАНҒАН МАТЕРИАЛДАР ҠУЙМАҒЫҘ!'''",
-'longpageerror' => "'''ХАТА: һаҡланасаҡ текст күләме $1 килобайт, был иһә рөхсәт ителгән {{PLURAL:$1|$1 килобайттан|$2 килобайттан}} күп. Битте һаҡлап булмай.'''",
+'longpageerror' => "'''ХАТА: һаҡланасаҡ текст күләме $1 килобайт, был иһә рөхсәт ителгән {{PLURAL:$1|1=$1 килобайттан|$2 килобайттан}} күп. Битте һаҡлап булмай.'''",
 'readonlywarning' => "'''КИҪӘТЕҮ: Техник хеҙмәтләндереү сәбәпле мәғлүмәттәр базаһы блокланған, шунлыҡтан үҙгәртеүҙәрегеҙҙе хәҙер һаҡлай алмайһығыҙ.'''
 Тексты аҙаҡтан ҡулланыу өсөн файлда һаҡлап тора алаһығыҙ.
 
@@ -938,12 +931,12 @@ $2
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
 'semiprotectedpagewarning' => "'''Киҫәтеү:''' был бит һаҡланған. Уны теркәлгән ҡулланыусылар ғына үҙгәртә ала.
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
-'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хакимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|киләһе биткә|киләһе биттәргә}} керә:",
+'cascadeprotectedwarning' => "'''КИҪӘТЕҮ:''' Был битте тик хакимдәр генә үҙгәртә ала, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=киләһе биткә|киләһе биттәргә}} керә:",
 'titleprotectedwarning' => "'''Киҫәтеү: Бындый исемле бит һаҡланған, уны үҙгәртеү өсөн [[Special:ListGroupRights|тейешле хоҡуҡҡа]] эйә булыу кәрәк.'''
 Белешмә өсөн түбәндә һуңғы үҙгәртеү тураһында мәғлүмәт бирелә:",
-'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
-'templatesusedpreview' => 'Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
-'templatesusedsection' => 'Был бүлектә ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}}:',
+'templatesused' => 'Был биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
+'templatesusedpreview' => 'Алдан ҡаралған биттә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
+'templatesusedsection' => 'Был бүлектә ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}}:',
 'template-protected' => '(һаҡланған)',
 'template-semiprotected' => '(өлөшләтә һаҡланған)',
 'hiddencategories' => 'Был бит $1 {{PLURAL:$1|йәшерен категорияға}} керә:',
@@ -953,8 +946,8 @@ $2
 'sectioneditnotsupported-title' => 'Бүлектәрҙә мөхәррирләү терәкләнмәй',
 'sectioneditnotsupported-text' => 'Был биттә бүлектәрҙе мөхәррирләү терәкләнмәй.',
 'permissionserrors' => 'Инеү хоҡуғы хатаһы',
-'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәптәр}} буйынса һеҙҙең был ғәмәлде үтәү хоҡуғығыҙ юҡ:',
-'permissionserrorstext-withaction' => "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|Сәбәбе|Сәбәптәре}}:",
+'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәптәр}} буйынса һеҙҙең был ғәмәлде үтәү хоҡуғығыҙ юҡ:',
+'permissionserrorstext-withaction' => "«'''$2'''» ғәмәлен башҡара алмайһығыҙ. {{PLURAL:$1|1=Сәбәбе|Сәбәптәре}}:",
 'recreate-moveddeleted-warn' => "'''Иғтибар: Һеҙ, элек юйылған битте яңынан яһарға теләйһегеҙ.'''
 
 Һеҙгә был битте яңынан яһау кәрәклеген яңынан уйлап ҡарағыҙ.
@@ -1086,15 +1079,11 @@ $3 белдергән сәбәп: ''$2''",
 'revisiondelete' => 'Бит версияларын юйырға/тергеҙергә',
 'revdelete-nooldid-title' => 'Маҡсат версия билдәләнмәгән',
 'revdelete-nooldid-text' => 'Был функцияны үтәү өсөн һеҙ маҡсат версияны (йәки версияларҙы) билдәләмәнегеҙ. Билдәләнгән версия юҡ йәки версияны йәшерергә тырышаһығыҙ.',
-'revdelete-nologtype-title' => 'Яҙма тибы билдәләнмәгән',
-'revdelete-nologtype-text' => 'Ғәмәл үтәләсәк яҙма тибын билдәләмәгәнһегеҙ.',
-'revdelete-nologid-title' => 'Яҙмалағы яҙыу хаталы',
-'revdelete-nologid-text' => 'Ғәмәлде үтәү өсөн яҙманың маҡсат яҙыуын күрһәтмәнегеҙ йәки күрһәтелгән яҙыу юҡ.',
 'revdelete-no-file' => 'Күрһәтелгән файл юҡ.',
 'revdelete-show-file-confirm' => '$2, $3 ваҡытлы «<nowiki>$1</nowiki> файлының юйылған версияһын ҡарарға теләүегеҙҙе раҫлайһығыҙмы?',
 'revdelete-show-file-submit' => 'Эйе',
-'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|һайланған версияһы|һайланған версиялары}}:'''",
-'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
+'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|1=һайланған версияһы|һайланған версиялары}}:'''",
+'logdelete-selected' => "'''Яҙманың {{PLURAL:$1|1=һайланған яҙыуы|һайланған яҙыуҙары}}:'''",
 'revdelete-text' => "'''Биттәрҙең юйылған версиялары һәм ваҡиғалар, бит тарихында һәм яҙмаларҙа күрһәтеләсәк, ләкин уларҙың эстәлектәренең бер өлөшө ябай ҡулланыусыларға асыҡ булмаясаҡ.'''
 {{SITENAME}} проектының хакимдәре йәшерен эстәлеккә керә һәм өҫтәмә сикләүҙәр ҡуйылған осраҡтарҙан тыш, ошо уҡ арайөҙ аша тергеҙә аласаҡтар.",
 'revdelete-confirm' => 'Зинһар, был ғәмәлде үтәргә теләүегеҙҙе, буласаҡ һөҙөмтәләрҙә аңлауығыҙҙы, [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса эшләүегеҙҙе раҫлағыҙ.',
@@ -1115,7 +1104,7 @@ $3 белдергән сәбәп: ''$2''",
 'revdelete-suppress' => 'Мәғлүмәттәрҙе шулай уҡ хакимдәрҙән дә йәшерергә',
 'revdelete-unsuppress' => 'Тергеҙелгән версияларҙан бар сикләүҙәрҙе алырға',
 'revdelete-log' => 'Сәбәп:',
-'revdelete-submit' => 'Һайланған {{PLURAL:$1|версия|версиялар}} өсөн ҡулланырға',
+'revdelete-submit' => 'Һайланған {{PLURAL:$1|1=версия|версиялар}} өсөн ҡулланырға',
 'revdelete-success' => "'''Версия күренеүсәнлеге уңышлы үҙгәртелде.'''",
 'revdelete-failure' => "'''Версия күренеүсәнлеген үҙгәртеп булмай:'''
 $1",
@@ -1123,8 +1112,6 @@ $1",
 'logdelete-failure' => "'''Яҙма күренеүсәнлеге көйләнмәгән:'''
 $1",
 'revdel-restore' => 'Күренеүсәнлекте үҙгәртергә',
-'revdel-restore-deleted' => 'юйылған өлгөләр',
-'revdel-restore-visible' => 'ҡара алған өлгөләр',
 'pagehist' => 'Бит тарихы',
 'deletedhist' => 'Юйылған тарих',
 'revdelete-hide-current' => '$2, $1 ваҡытлы яҙманы йәшереүҙә хата.
@@ -1194,7 +1181,7 @@ $1",
 'diff-empty' => '(айырмалар юҡ)',
 'diff-multi' => '({{PLURAL:$2|$2 ҡатнашыусының}} {{PLURAL:$1|ваҡытлы версияһы}} күрһәтелмәгән)',
 'diff-multi-manyusers' => '(Кәмендә {{PLURAL:$2|$2 ҡатнашыусының}} {{PLURAL:$1|ваҡытлы версияһы}} күрһәтелмәгән)',
-'difference-missing-revision' => '$1 айырмаһының {{PLURAL:$2|бер өлгөһө|$2 өлгөһө}} табылманы.
+'difference-missing-revision' => '$1 айырмаһының {{PLURAL:$2|1=бер өлгөһө|$2 өлгөһө}} табылманы.
 
 Был хәл, ғәҙәттә, юйылған биткә яһалған айырма һылтанмаһының ваҡыты үтеүенән барлыҡҡа килә.
 Тулыраҡ мәғлүмәт өсөн ҡарағыҙ: [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} юйыу яҙмалары].',
@@ -1202,24 +1189,18 @@ $1",
 # 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' => 'Бер биттә $1 {{PLURAL:$1|һөҙөмтә|һөҙөмтә}} күрһәт',
+'prevn-title' => 'Һуңғы $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}}',
+'nextn-title' => 'Тәүге $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}}',
+'shown-title' => 'Бер биттә $1 {{PLURAL:$1|1=һөҙөмтә|һөҙөмтә}} күрһәт',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ҡарарға',
-'searchmenu-legend' => 'Эҙләү көйләүҙәре',
 'searchmenu-exists' => "'''Был вики-проектта «[[:$1]]» бите бар'''",
 'searchmenu-new' => "'''Был википроектта \"[[:\$1]]\" бите булдырырға.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Был префикслы биттәрҙе күрһәтергә]]',
 'searchprofile-articles' => 'Эстәлек биттәре',
 'searchprofile-project' => 'Ярҙамсы һәм проект биттәре',
 'searchprofile-images' => 'Мультимедиа',
@@ -1230,8 +1211,8 @@ $1",
 'searchprofile-images-tooltip' => 'Файлдар эҙләү',
 'searchprofile-everything-tooltip' => 'Барлыҡ биттәрҙә эҙләү (фекерләшеү биттәрендә лә)',
 'searchprofile-advanced-tooltip' => 'Махсус исем арауыҡтарында эҙләргә',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 һүҙ|$2 һүҙ}})',
-'search-result-category-size' => '{{PLURAL:$1|$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=$2 һүҙ|$2 һүҙ}})',
+'search-result-category-size' => '{{PLURAL:$1|1=$1 ағза}} ({{PLURAL:$2|$2 эске категория}}, {{PLURAL:$3|$3 файл}})',
 'search-result-score' => 'Тап килеүсәнлек: $1%',
 'search-redirect' => '(йүнәлтеү $1)',
 'search-section' => '($1 бүлеге)',
@@ -1240,20 +1221,16 @@ $1",
 'search-interwiki-default' => '$1 һөҙөмтә:',
 'search-interwiki-more' => '(тағы)',
 'search-relatedarticle' => 'Ҡағылышлы',
-'mwsuggest-disable' => 'Эҙләү өйрәтмәләрен һүндерергә',
 'searcheverything-enable' => 'Бар исем арауыҡтарында эҙләргә',
 'searchrelated' => 'ҡағылышлы',
 'searchall' => 'барыһы',
 'showingresults' => 'Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$1</strong> {{PLURAL:$1|һөҙөмтә}} күрһәтелгән.',
 'showingresultsnum' => 'Түбәндә №&nbsp;<strong>$2</strong> һөҙөмтәнән башлап <strong>$3</strong> {{PLURAL:$3|һөҙөмтә}} күрһәтелгән.',
-'showingresultsheader' => "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|'''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
-'nonefound' => "'''Иҫкәрмә'''. Ғәҙәттә эҙләү бөтә исем арауыҡтарында үтәлмәй. Бөтә исем арауыҡтарында (фекер алышыу биттәре, ҡалыптар, һ.б.) эҙләү өсөн һүҙ башына ''all:'' өҫтәгеҙ йәки кәрәкле исем арауыҡтарын һайлағыҙ.",
+'showingresultsheader' => "'''$4''' өсөн '''$3''' һөҙөмтәнән {{PLURAL:$5|1='''$1''' һөҙөмтә|'''$1 - $2''' арауығындағы һөҙөмтәләр}}",
 'search-nonefound' => 'Был һорауға яуап биреүсе һөҙөмтәләр табылманы.',
-'powersearch' => 'Киңәйтелгән эҙләү',
 'powersearch-legend' => 'Киңәйтелгән эҙләү',
 'powersearch-ns' => 'Исем аралыҡтарында эҙләү:',
 'powersearch-redir' => 'Йүнәлтеүҙәрҙе күрһәтергә',
-'powersearch-field' => 'Эҙлә:',
 'powersearch-togglelabel' => 'Һайла:',
 'powersearch-toggleall' => 'Барыһы',
 'powersearch-togglenone' => 'Һис бере',
@@ -1267,7 +1244,6 @@ $1",
 'preferences' => 'Көйләүҙәр',
 'mypreferences' => 'Көйләүҙәр',
 'prefs-edits' => 'Төҙәтеүҙәр һаны:',
-'changepassword' => 'Серһүҙҙе үҙгәртергә',
 'prefs-skin' => 'Күренеш',
 'skin-preview' => 'Алдан байҡау',
 'datedefault' => 'Ғәҙәттәге',
@@ -1279,7 +1255,7 @@ $1",
 'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
 'prefs-watchlist' => 'Күҙәтеү исемлеге',
 'prefs-watchlist-days' => 'Күҙәтеү исемлегендә нисә көн керетелгән үҙгәртеүҙәрҙе күрһәтергә:',
-'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|көн|көн}}',
+'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|1=көн|көн}}',
 'prefs-watchlist-edits' => 'Киңәйтелгән күҙәтеү исемлегендә күрһәтелә торған үҙгәртеүҙәр һанының сиге:',
 'prefs-watchlist-edits-max' => 'Иң күбе: 1000',
 'prefs-watchlist-token' => 'Күҙәтеү исемлеге токены:',
@@ -1290,13 +1266,11 @@ $1",
 'prefs-email' => 'Электрон почта көйләүҙәре',
 'prefs-rendering' => 'Күренеш',
 'saveprefs' => 'Һаҡларға',
-'resetprefs' => 'Һаҡланмаған үҙгәрештерҙе таҙартырға',
 'restoreprefs' => 'Алдан ҡуйылған көйләүҙәрҙе тергеҙергә',
 'prefs-editing' => 'Мөхәррирләү',
 'rows' => 'Юлдар:',
 'columns' => 'Бағаналар:',
 'searchresultshead' => 'Эҙләү',
-'resultsperpage' => 'Биттә табылған яҙыуҙар',
 'stub-threshold' => '<a href="#" class="stub">Материалдарға һылтанмалар </a> форматлау сиге (байттарҙа)',
 'stub-threshold-disabled' => 'Һүндерелгән',
 'recentchangesdays' => 'Күҙәтеү исемлегендә күренгән көндәр һаны:',
@@ -1310,7 +1284,6 @@ $1",
 'localtime' => 'Урындағы ваҡыт:',
 'timezoneuseserverdefault' => 'Сервер көйләүҙәрен ҡулланырға $1',
 'timezoneuseoffset' => 'Башҡа (шылыуҙы керетегеҙ)',
-'timezoneoffset' => 'Шылыу:',
 'servertime' => 'Сервер ваҡыты',
 'guesstimezone' => 'Браузерҙан алырға',
 'timezoneregion-africa' => 'Африка',
@@ -1554,7 +1527,7 @@ $1",
 'action-editmyprivateinfo' => 'һеҙҙең шәхси мәғлүмәтте мөхәррирләү',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'nchanges' => '$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
 'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|һеҙҙең һуңғы визит}}',
 'enhancedrc-history' => 'тарих',
 'recentchanges' => 'Һуңғы үҙгәртеүҙәр',
@@ -1567,7 +1540,6 @@ $1",
 'recentchanges-label-bot' => 'Был төҙәтеү бот тарафынан башҡарылды',
 'recentchanges-label-unpatrolled' => 'Был төҙәтеү ҡаралмаған әле',
 'recentchanges-legend-newpage' => '$1 — яңы бит',
-'rcnote' => 'Аҫта $4 $5 тиклем эшләнгән, һуңғы {{PLURAL:$2|1|$2}} көн эсендәге һуңғы {{PLURAL:$1|1|$1}} үҙгәртеү күрһәтелгән.',
 'rcnotefrom' => "Түбәндә '''$2''' башлап ('''$1''' тиклем) үҙгәртеүҙәр күрһәтелгән.",
 'rclistfrom' => '$1 башлап яңы үҙгәртеүҙәрҙе күрһәт.',
 'rcshowhideminor' => 'бәләкәй төҙәтеүҙәрҙе $1',
@@ -1587,7 +1559,7 @@ $1",
 'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|ҡатнашыусы}} күҙәтә]',
 'rc_categories' => 'Ошо категорияларҙан ғына («|» менән айырырға)',
 'rc_categories_any' => 'Һәр',
-'rc-change-size-new' => 'Үҙгәртештән һуң $1 {{PLURAL:$1|байт|байт}}',
+'rc-change-size-new' => 'Үҙгәртештән һуң $1 {{PLURAL:$1|1=байт|байт}}',
 'newsectionsummary' => '/* $1 */ яңы бүлек',
 'rc-enhanced-expand' => 'Ваҡ-төйәгенә тиклем күрһәтергә',
 'rc-enhanced-hide' => 'Ваҡлыҡтарҙы йәшерергә',
@@ -1647,9 +1619,9 @@ $1",
 'filetype-badmime' => 'MIME-төрө «$1» булған файлдарҙы тейәп булмай.',
 'filetype-bad-ie-mime' => 'Был файлды тейәп булмай, сөнки Internet Explorer уны "$1", йәғни рөхсәт ителмәгән һәм хәүефле файл төрө тип билдәләйәсәк.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — теләнмәгән файл тибы.
-{{PLURAL:\$3|Уңайлы файл тибы|Уңайлы файл типтары:}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|тыйылған файл төрө|тыйылған файл төрҙәре}}.
-{{PLURAL:$3|Файлдың рөхсәт ителгән төрө|Файлдың рөхсәт ителгән төрҙәре:}} $2.',
+{{PLURAL:\$3|1=Уңайлы файл тибы|Уңайлы файл типтары:}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=тыйылған файл төрө|тыйылған файл төрҙәре}}.
+{{PLURAL:$3|1=Файлдың рөхсәт ителгән төрө|Файлдың рөхсәт ителгән төрҙәре:}} $2.',
 'filetype-missing' => 'Файлдың киңәйтелмәһе юҡ (мәҫәлән, ".jpg").',
 'empty-file' => 'Һеҙ ебәргән файл буш.',
 'file-too-large' => 'Һеҙ ебәргән файл бигерәк ҙур.',
@@ -1691,7 +1663,7 @@ $1",
 'fileexists-shared-forbidden' => 'Бындай исемле файл дөйөм файл һаҡлағыста бар инде.
 Әгәр һеҙ шулай ҙа был файлды тейәргә теләһәгеҙ, зинһар, кире ҡайтығыҙ һәм яңы исем һайлағыҙ.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Был файл түбәндәге {{PLURAL:$1|файл|файлдар}} менән тап килә:',
+'file-exists-duplicate' => 'Был файл түбәндәге {{PLURAL:$1|1=файл|файлдар}} менән тап килә:',
 'file-deleted-duplicate' => 'Оҡшаш файл ([[:$1]]) юйылғайны инде. Уны ҡайтанан тейәр алдынан, зинһар, файлды юйыу тарихын ҡарағыҙ.',
 'uploadwarning' => 'Киҫәтеү',
 'uploadwarning-text' => 'Зинһар, түбәндәге файл тасуирламаһын үҙгәртегеҙ һәм яңынан ҡабатлап ҡарағыҙ.',
@@ -1759,13 +1731,13 @@ $1',
 'backend-fail-closetemp' => 'Ваҡытлы файлды ябып булмай.',
 'backend-fail-read' => '«$1» файлын уҡып булмай.',
 'backend-fail-create' => '«$1» файлын яҙып булмай.',
-'backend-fail-maxsize' => '$1 файлын яҙып булманы, сөнки уның күләме {{PLURAL:$2|$2 байттан|$2 байттан}} күп.',
+'backend-fail-maxsize' => '$1 файлын яҙып булманы, сөнки уның күләме {{PLURAL:$2|1=$2 байттан|$2 байттан}} күп.',
 'backend-fail-readonly' => '$1 һаҡлағысы әлегә уҡыу өсөн генә асыҡ. Сәбәбе: $2',
 'backend-fail-synced' => '$1 файлы эске һаҡлағыста ярашһыҙ хәлдә тора.',
 'backend-fail-connect' => '"$1" һаҡлағысы менән бәйләнеш яһап булманы.',
 'backend-fail-internal' => '$1 һаҡлағысында билдәһеҙ хата килеп сыҡты',
 'backend-fail-contenttype' => 'Файлды $1 адресына һаҡлар өсөн уның эстәлеге төрөн билдәләп булманы.',
-'backend-fail-batchsize' => 'Һаҡлағыс $1 {{PLURAL:$1|файл операцияһынан|файл операцияһынан}} бер блок алды, сикләү һаны: $2 {{PLURAL:$1|операция|операция}}.',
+'backend-fail-batchsize' => 'Һаҡлағыс $1 {{PLURAL:$1|1=файл операцияһынан|файл операцияһынан}} бер блок алды, сикләү һаны: $2 {{PLURAL:$1|1=операция|операция}}.',
 'backend-fail-usable' => 'Хоҡуҡтар етмәгәнлектән йәки кәрәкле папкалар булмағанлыҡтан $1 файлын уҡып йәки яҙып булманы.',
 
 # File journal errors
@@ -1882,14 +1854,14 @@ $1',
 'filehist-comment' => 'Иҫкәрмә',
 'filehist-missing' => 'Файл юҡ',
 'imagelinks' => 'Файл ҡулланыу',
-'linkstoimage' => 'Был файлға {{PLURAL:$1|бит|$1 бит}} һылтана:',
+'linkstoimage' => 'Был файлға {{PLURAL:$1|1=бит|$1 бит}} һылтана:',
 'linkstoimage-more' => 'Был файлға кәмендә $1 {{PLURAL:$1|бит}} һылтанма яһай.
 Түбәндәге исемлектә был файлға $1 {{PLURAL:$1|һылтанма}} ғына килтерелгән.
 Шулай уҡ [[Special:WhatLinksHere/$2|тулы исемлекте]] ҡарарға мөмкин.',
 'nolinkstoimage' => 'Был файлға һылтанма яһаған бит юҡ.',
 'morelinkstoimage' => 'Был файлға [[Special:WhatLinksHere/$1|башҡа һылтанмаларҙы]] ҡарарға.',
 'linkstoimage-redirect' => '$1 (файл-йүнәлтеү) $2',
-'duplicatesoffile' => 'Түбәндәге {{PLURAL:$1|файл|файлдар}} был файл менән тап килә ([[Special:FileDuplicateSearch/$2|тулыраҡ мәғлүмәт]])',
+'duplicatesoffile' => 'Түбәндәге {{PLURAL:$1|1=файл|файлдар}} был файл менән тап килә ([[Special:FileDuplicateSearch/$2|тулыраҡ мәғлүмәт]])',
 'sharedupload' => 'Был файл $1 базаһынан һәм башҡа проектарҙа ҡулланылырға мөмкин.',
 'sharedupload-desc-there' => 'Был файл $1 базаһынан һәм башҡа проекттарҙа ҡулланыла ала.
 Тулыраҡ мәғлүмәтте [$2 файл тасуирламаһы битендә] ҡарарға мөмкин.',
@@ -1957,7 +1929,7 @@ $1',
 
 # Random page
 'randompage' => 'Осраҡлы мәҡәлә',
-'randompage-nopages' => 'Түбәндәге {{PLURAL:$2|исемдәр арауығында|исемдәр арауыҡтарында}} биттәр юҡ: $1.',
+'randompage-nopages' => 'Түбәндәге {{PLURAL:$2|1=исемдәр арауығында|исемдәр арауыҡтарында}} биттәр юҡ: $1.',
 
 # Random page in category
 'randomincategory' => 'Категориялағы осраҡлы бит',
@@ -1988,7 +1960,7 @@ $1',
 'statistics-views-peredit' => 'Бер үҙгәртеүгә ҡарап сығыуҙар',
 'statistics-users' => 'Теркәлгән [[Special:ListUsers|ҡатнашыусылар]]',
 'statistics-users-active' => 'Әүҙем ҡатнашыусылар',
-'statistics-users-active-desc' => 'Һуңғы {{PLURAL:$1|көндә|$1 көндә}} ниндәйҙер эшмәкәрлек башҡарған ҡатнашыусылар',
+'statistics-users-active-desc' => 'Һуңғы {{PLURAL:$1|1=көндә|$1 көндә}} ниндәйҙер эшмәкәрлек башҡарған ҡатнашыусылар',
 'statistics-mostpopular' => 'Иң күп ҡаралған биттәр',
 
 'pageswithprop' => 'Үҙенсәлектәре ҡайтанан билдәләнгән биттәр',
@@ -2022,11 +1994,11 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байт}}',
-'ncategories' => '$1 {{PLURAL:$1|Категория|Категория}}',
+'ncategories' => '$1 {{PLURAL:$1|1=Категория|Категория}}',
 'ninterwikis' => '$1 {{PLURAL:$1|интервики-һылтанма}}',
 'nlinks' => '$1 {{PLURAL:$1|һылтанма}}',
 'nmembers' => '$1 {{PLURAL:$1|объект}}',
-'nrevisions' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
 'nviews' => '$1 {{PLURAL:$1|ҡарап сығыу}}',
 'nimagelinks' => '$1 {{PLURAL:$1|биттә}} ҡулланыла',
 'ntransclusions' => '$1 {{PLURAL:$1|биттә}} ҡулланыла',
@@ -2064,10 +2036,8 @@ $1',
 'protectedpages' => 'Һаҡланған биттәр',
 'protectedpages-indef' => 'Сикләнмәгән һаҡлауҙар ғына',
 'protectedpages-cascade' => 'Эҙмә-эҙлекле һаҡлауҙар ғына',
-'protectedpagestext' => 'Түбәндәге биттәр исемен үҙгәртеүҙән йәки мөхәррирләүҙән һаҡланған.',
 'protectedpagesempty' => 'Әлеге ваҡытта күрһәтелгән шарттар менән һаҡланған биттәр юҡ.',
 'protectedtitles' => 'Тыйылған исемдәр',
-'protectedtitlestext' => 'Түбәндәге исемдәрҙе ҡулланыу рөхсәт ителмәй.',
 'protectedtitlesempty' => 'Әлеге ваҡытта күрһәтелгән шарттар менән һаҡланған исемдәр юҡ.',
 'listusers' => 'Ҡатнашыусылар исемлеге',
 'listusers-editsonly' => 'Кәмендә бер үҙгәртеү индергән ҡатнашыусыларҙы ғына күрһәтергә',
@@ -2087,8 +2057,8 @@ $1',
 'notargettext' => 'Һеҙ был ғәмәл өсөн кәрәкле битте йәки ҡатнашыусыны күрһәтмәгәнһегеҙ.',
 'nopagetitle' => 'Бындай бит юҡ',
 'nopagetext' => 'Һеҙ күрһәткән бит юҡ.',
-'pager-newer-n' => '{{PLURAL:$1|1 яңыраҡ|$1 яңыраҡ}}',
-'pager-older-n' => '{{PLURAL:$1|1 иҫкерәк|$1 иҫкерәк}}',
+'pager-newer-n' => '{{PLURAL:$1|1=1 яңыраҡ|$1 яңыраҡ}}',
+'pager-older-n' => '{{PLURAL:$1|1=1 иҫкерәк|$1 иҫкерәк}}',
 'suppress' => 'Йәшереү',
 'querypage-disabled' => 'Был махсус бит һөҙөмтәлелекте арттырыу өсөн ябылған.',
 
@@ -2118,9 +2088,6 @@ $1',
 'allpagesto' => 'Ошоға бөткән биттәрҙе күрһәтергә:',
 'allarticles' => 'Барлыҡ мәҡәләләр',
 'allinnamespace' => 'Бөтә биттәр (Исемдәре «$1» арауығында)',
-'allnotinnamespace' => 'Бөтә биттәр («$1» исемдәр арауығынан башҡа)',
-'allpagesprev' => 'Алдағы',
-'allpagesnext' => 'Киләһе',
 'allpagessubmit' => 'Үтәргә',
 'allpagesprefix' => 'Ошо хәрефтәр менән башланған биттәрҙе күрһәтергә:',
 'allpagesbadtitle' => 'Күрһәтелгән бит исеме дөрөҫ түгел йәки телдәр араһы йәки интервики ҡушымтаһы менән башлана.
@@ -2135,7 +2102,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категориялар',
-'categoriespagetext' => 'Түбәндәге {{PLURAL:$1|категорияла|категорияларҙа}} биттәр йәки файлдар бар.
+'categoriespagetext' => 'Түбәндәге {{PLURAL:$1|1=категорияла|категорияларҙа}} биттәр йәки файлдар бар.
 [[Special:UnusedCategories|Ҡулланылмаған категориялар]] бында күрһәтелмәгән.
 Шулай уҡ [[Special:WantedCategories|кәрәкле категориялар исемлеген]] ҡарағыҙ.',
 'categoriesfrom' => 'Ошондай хәрефтәрҙән башланған категорияларҙы күрһәтергә:',
@@ -2154,7 +2121,7 @@ $1',
 'linksearch-ok' => 'Эҙләү',
 'linksearch-text' => '<code>*.wikipedia.org</code> һымаҡ төркөм билдәләрен ҡулланырға була.
 Кәмендә өҫкө кимәл домен кәрәк, мәҫәлән, <code>*.org</code><br />
-Мөмкин булған{{PLURAL:$2|протокол|протоколдар}}: <code>$1</code> (башҡа протокол өҫтәлмәһә, алдан бирелгәне индерелә http://).',
+Мөмкин булған{{PLURAL:$2|1=протокол|протоколдар}}: <code>$1</code> (башҡа протокол өҫтәлмәһә, алдан бирелгәне индерелә http://).',
 'linksearch-line' => '$1 адресына $2 битенән һылтанма яһалған',
 'linksearch-error' => 'Төркөм билдәләре URL адрестың башында ғына ҡулланыла ала.',
 
@@ -2167,7 +2134,7 @@ $1',
 # Special:ActiveUsers
 'activeusers' => 'Әүҙем ҡатнашыусылар исемлеге',
 'activeusers-intro' => 'Был — һуңғы $1 {{PLURAL:$1|көн}} эсендә ниҙер башҡарған ҡатнашыусылар исемлеге.',
-'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|көн}} эсендәге һуңғы көндә $1 {{PLURAL:$1|үҙгәртеү}}',
+'activeusers-count' => 'һуңғы $3 {{PLURAL:$3|1=көн}} эсендәге һуңғы көндә $1 {{PLURAL:$1|үҙгәртеү}}',
 'activeusers-from' => 'Ошондай хәрефтәрҙән башланған ҡатнашыусыларҙы күрһәтергә:',
 'activeusers-hidebots' => 'Боттарҙы йәшерергә',
 'activeusers-hidesysops' => 'Хакимдәрҙе йәшерергә',
@@ -2184,12 +2151,12 @@ $1',
 'listgrouprights-rights' => 'Хоҡуҡтар',
 'listgrouprights-helppage' => 'Help:Төркөмдәр хоҡуҡтары',
 'listgrouprights-members' => '(ағзалар исемлеге)',
-'listgrouprights-addgroup' => '$1 {{PLURAL:$2|төркөмөнә|төркөмдәренә}} өҫтәү',
-'listgrouprights-removegroup' => '$1 {{PLURAL:$2|төркөмөнән|төркөмдәренән}} сығарыу',
+'listgrouprights-addgroup' => '$1 {{PLURAL:$2|1=төркөмөнә|төркөмдәренә}} өҫтәү',
+'listgrouprights-removegroup' => '$1 {{PLURAL:$2|1=төркөмөнән|төркөмдәренән}} сығарыу',
 'listgrouprights-addgroup-all' => 'Бөтә төркөмдәргә өҫтәү',
 'listgrouprights-removegroup-all' => 'Бөтә төркөмдәрҙән сығарыу',
-'listgrouprights-addgroup-self' => 'Үҙенең иҫәп яҙмаһына $1 {{PLURAL:$2|төркөмөн|төркөмдәрен}} өҫтәү',
-'listgrouprights-removegroup-self' => 'Үҙенең иҫәп яҙмаһынан $1 {{PLURAL:$2|төркөмөн|төркөмдәрен}} юйыу',
+'listgrouprights-addgroup-self' => 'Үҙенең иҫәп яҙмаһына $1 {{PLURAL:$2|1=төркөмөн|төркөмдәрен}} өҫтәү',
+'listgrouprights-removegroup-self' => 'Үҙенең иҫәп яҙмаһынан $1 {{PLURAL:$2|1=төркөмөн|төркөмдәрен}} юйыу',
 'listgrouprights-addgroup-self-all' => 'Үҙенең иҫәп яҙмаһына бөтә төркөмдәрҙе өҫтәү',
 'listgrouprights-removegroup-self-all' => 'Үҙенең иҫәп яҙмаһынан бөтә төркөмдәрҙе юйыу',
 
@@ -2254,9 +2221,9 @@ $1',
 'wlheader-showupdated' => "Һеҙҙең аҙаҡҡы кереүегеҙҙән һуң үҙгәргән биттәр '''ҡалын''' шрифт менән күрһәтелгән.",
 'watchmethod-recent' => 'күҙәтелгән биттәр өсөн аҙаҡҡы үҙгәртеүҙәрҙе ҡарау',
 'watchmethod-list' => 'аҙаҡҡы үҙгәртеүҙәр өсөн күҙәтелгән биттәрҙе ҡарау',
-'watchlistcontains' => 'Һеҙҙең күҙәтеү исемлегендә $1 {{PLURAL:$1|бит|бит}}бар.',
+'watchlistcontains' => 'Һеҙҙең күҙәтеү исемлегендә $1 {{PLURAL:$1|1=бит|бит}}бар.',
 'iteminvalidname' => '«$1» менән ҡыйынлыҡтар, исеме дөрөҫ түгел...',
-'wlnote' => "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
+'wlnote' => "Түбәндә $3 $4 ваҡытына тиклем аҙаҡҡы {{PLURAL:$2|1=сәғәт|'''$2''' сәғәт}} эсендә эшләнгән {{PLURAL:$1|1=үҙгәртеү|'''$1''' үҙгәртеү}} күрһәтелгән.",
 'wlshowlast' => 'Һуңғы $1 сәғәт $2 көн өсөн күрһәт $3',
 'watchlist-options' => 'Күҙәтеү исемлеге көйләүҙәре',
 
@@ -2350,8 +2317,8 @@ $UNWATCHURL
 'rollback' => 'Үҙгәртеүҙәрҙе кире ҡайтарырға',
 'rollback_short' => 'Кире ҡайтарырға',
 'rollbacklink' => 'кире',
-'rollbacklinkcount' => '$1 {{PLURAL:$1|төҙәтеүҙе|төҙәтеүҙе}} кире алырға',
-'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға',
+'rollbacklinkcount' => '$1 {{PLURAL:$1|1=төҙәтеүҙе|төҙәтеүҙе}} кире алырға',
+'rollbacklinkcount-morethan' => '$1 {{PLURAL:$1|1=төҙәтеүҙән|төҙәтеүҙән}} күберәк кире алырға',
 'rollbackfailed' => 'Кире ҡайтарырғанда барлыҡҡа килгән хата',
 'cantrollback' => 'Үҙгәртеүҙәрҙе кире алыу мөмкин түгел. Битте һуңғы үҙгәртеүсе ҡатнашыусы уның берҙән-бер авторы булып тора.',
 'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|фекер алышыу]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])  кереткән [[:$1]] һуңғы үҙгәртеүҙәрҙе кире алыу мөмкин түгел; башҡа ҡатнашыусы был битте мөхәррирләгән йәки үҙгәртеүҙәрҙе кире алған инде.
@@ -2396,7 +2363,7 @@ $2 өлгөһөнә ҡайтыу.',
 'protect-locked-dblock' => "Һаҡлау дәрәжәһе үҙгәртелә алмай, сөнки төп мәғлүмәттәр базаһы ваҡытлыса бикле.
 '''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
 'protect-locked-access' => "Биттең һаҡлау дәрәжеһен үҙгәртер өсөн иҫәп яҙыуығыҙҙың хоҡуҡтары етәрле түгел. '''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
-'protect-cascadeon' => 'Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|биткә|биттәргә}} керә. Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.',
+'protect-cascadeon' => 'Был бит һаҡланған, сөнки ул эҙмә-эҙлекле һаҡлау ҡуйылған {{PLURAL:$1|1=биткә|биттәргә}} керә. Һеҙ был биттең һаҡлау дәрәжәһен үҙгәртә алаһығыҙ, ләкин был эҙмә-эҙлекле һаҡлауға йоғонто яһамаясаҡ.',
 'protect-default' => 'Бар ҡулланыусыларға рөхсәт бирергә',
 'protect-fallback' => '«$1» хоҡуҡлы ҡатнашыусыларға ғына рөхсәте ителгән',
 'protect-level-autoconfirmed' => 'Үҙенән-үҙе раҫланған ҡатнашыусыларға ғына рөхсәт ителгән',
@@ -2441,12 +2408,12 @@ $2 өлгөһөнә ҡайтыу.',
 'undeletepage' => 'Юйылған биттәрҙе ҡарау һәм тергеҙеү',
 'undeletepagetitle' => "'''Түбәндә [[:$1|$1]] битенең юйылған өлгөләре килтерелгән'''.",
 'viewdeletedpage' => 'Юйылған биттәрҙе ҡарау',
-'undeletepagetext' => 'Түбәндәге {{PLURAL:$1|бит|$1 бит}} юйылған, әммә һаман архивта һаҡлана һәм тергеҙелә ала.
+'undeletepagetext' => 'Түбәндәге {{PLURAL:$1|1=бит|$1 бит}} юйылған, әммә һаман архивта һаҡлана һәм тергеҙелә ала.
 Архив ваҡыты менән таҙартыла ала.',
 'undelete-fieldset-title' => 'Өлгөләрҙе тергеҙергә',
 'undeleteextrahelp' => "Биттең тарихын тулыһынса тергеҙер өсөн, бөтә өлгөләрҙе лә һайланмаған килеш ҡалдырығыҙ һәм '''''{{int:undeletebtn}}''''' төймәһенә баҫығыҙ.
 Ҡайһы бер өлгөләрҙе генә тергеҙер өсөн, кәрәкле өлгөләрҙе һайлағыҙ һәм '''''{{int:undeletebtn}}''''' төймәһенә баҫығыҙ.",
-'undeleterevisions' => '$1 {{PLURAL:$1|өлгө|өлгө}} архивта һаҡланған',
+'undeleterevisions' => '$1 {{PLURAL:$1|1=өлгө|өлгө}} архивта һаҡланған',
 'undeletehistory' => 'Битте тергеҙгәндә уны үҙгәртеү тарихы ла тергеҙелә.
 Әгәр бит юйылғандан һуң шундай уҡ исемле бит булдырылған булһа, тергеҙелгән өлгөләр яңы өлгөләр алдынан ҡуйыласаҡ.',
 'undeleterevdel' => 'Әгәр тергеҙеү биттең йәки файлдың аҙаҡҡы өлгөһө өлөшләтә юйылыуына килтерһә, был терегеҙеү башҡарылмаясаҡ.
@@ -2461,11 +2428,10 @@ $2 өлгөһөнә ҡайтыу.',
 'undeletebtn' => 'Тергеҙергә',
 'undeletelink' => 'ҡарарға/тергеҙергә',
 'undeleteviewlink' => 'ҡарарға',
-'undeletereset' => 'Юҡ итергә',
 'undeleteinvert' => 'Һайланғандарҙы әйләндерергә',
 'undeletecomment' => 'Сәбәп:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|өлгө}} тергеҙелде',
-'undeletedrevisions-files' => '{{PLURAL:$1|өлгө}} һәм {{PLURAL:$2|файл}} тергеҙелде',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=өлгө}} һәм {{PLURAL:$2|файл}} тергеҙелде',
 'undeletedfiles' => '{{PLURAL:$1|файл}} тергеҙелде',
 'cannotundelete' => 'Юйыуҙы кире алып булманы:
 $1',
@@ -2537,8 +2503,8 @@ $1',
 'isredirect' => 'йүнәлтеү бите',
 'istemplate' => 'ҡушылған',
 'isimage' => 'файл һылтанмаһы',
-'whatlinkshere-prev' => '{{PLURAL:$1|алдағы|алдағы $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|киләһе|киләһе $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=алдағы|алдағы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=киләһе|киләһе $1}}',
 'whatlinkshere-links' => '← һылтанмалар',
 'whatlinkshere-hideredirs' => 'Йүнәлтеүҙәрҙе $1',
 'whatlinkshere-hidetrans' => 'Ҡушылғандарҙы $1',
@@ -2551,7 +2517,6 @@ $1',
 'block' => 'Ҡатнашыусыны бикләү',
 'unblock' => 'Бикләнгән ҡатнашыусыны азат итеү',
 'blockip' => 'Ҡатнашыусыны бикләү',
-'blockip-title' => 'Ҡатнашыусыны бикләү',
 'blockip-legend' => 'Ҡатнашыусыны бикләү',
 'blockiptext' => 'Билдәләнгән IP адрестан яҙыу мөмкинлеген бикләү өсөн, түбәндәге форманы ҡулланығыҙ.
 Был бары тик вандаллыҡҡа юл ҡуймау өсөн генә һәм [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынса ғына эшләнергә тейеш.
@@ -2559,7 +2524,6 @@ $1',
 'ipadressorusername' => 'Ҡатнашыусының IP-адресы йәки исеме:',
 'ipbexpiry' => 'Тамамлана:',
 'ipbreason' => 'Сәбәп:',
-'ipbreasonotherlist' => 'Башҡа сәбәп',
 'ipbreason-dropdown' => '*Ғәҙәттәге бикләү сәбәптәре 
 ** Ялған мәғлүмәт өҫтәү
 ** Биттәрҙең эстәлеген юйыу
@@ -2575,8 +2539,6 @@ $1',
 'ipbsubmit' => 'Был ҡатнашыусыны тыйырға',
 'ipbother' => 'Башҡа ваҡыт:',
 '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',
-'ipbotheroption' => 'башҡа',
-'ipbotherreason' => 'Башҡа/өҫтәмә сәбәп:',
 'ipbhidename' => 'Ҡатнашыусының исемен үҙгәртеүҙәрҙә һәм исемлектәрҙә йәшерергә',
 'ipbwatchuser' => 'Ҡатнашыусының битен һәм фекер алышыу битен күҙәтеүҙәр исемлегенә өҫтәргә',
 'ipb-disableusertalk' => 'Бикләү ваҡытында был ҡулланыусыны үҙ фекер алышыу битен мөхәррирләүҙән тыйырға',
@@ -2614,7 +2576,7 @@ $1',
 'blocklist-reason' => 'Сәбәп',
 'ipblocklist-submit' => 'Эҙләү',
 'ipblocklist-localblock' => 'Урындағы (локаль) бикләү',
-'ipblocklist-otherblocks' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
+'ipblocklist-otherblocks' => 'Башҡа {{PLURAL:$1|1=бикләү|бикләүҙәр}}',
 'infiniteblock' => 'сикһеҙ',
 'expiringblock' => '$1 $2 тамамлана',
 'anononlyblock' => 'танылмағандарҙы ғына',
@@ -2656,7 +2618,7 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 'ipb_already_blocked' => '"$1" бикләнгән инде.',
 'ipb-needreblock' => '$1 бикләнгән инде.
 Бикләү көйләүҙәрен үҙгәртергә теләйһегеҙме?',
-'ipb-otherblocks-header' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
+'ipb-otherblocks-header' => 'Башҡа {{PLURAL:$1|1=бикләү|бикләүҙәр}}',
 'unblock-hideuser' => 'Һеҙ был ҡулланыусының биген ала алмайһығыҙ, сөнки ҡулланыусы исеме йәшерелгән.',
 'ipb_cant_unblock' => 'Хата: Идентификаторы $1 булған бикләү табылманы.
 Ул бик алынған, булырға тейеш.',
@@ -2671,7 +2633,6 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 'sorbs_create_account_reason' => 'Һеҙҙең IP адресығыҙ {{SITENAME}} проекты ҡулланған DNSBL исемлегендә асыҡ прокси тип иҫәпләнә.
 Һеҙ иҫәп яҙмаһы булдыра алмайһығыҙ.',
 'xffblockreason' => 'X-Forwarded-For атамаһы эсенә ингән һәм һеҙҙекеме, һеҙ ҡулланған прокси-серверҙыҡымы булған IP-адрес бикләнде. Бикләүҙең тәүсәбәбе ошо ине: $1',
-'cant-block-while-blocked' => 'Үҙегеҙ бикләнгән ваҡытта һеҙ башҡа ҡатнашыусыларҙы бикләй алмайһығыҙ.',
 'cant-see-hidden-user' => 'Һеҙ бикләргә тырышҡан ҡатнашыусы әлеге ваҡытта бикләнгән һәм йәшерелгән.
 Ҡатнашыусыларҙы йәшереү хоҡуғығыҙ булмағанға күрә, һеҙ был бикләүҙе ҡарай йәки үҙгәртә алмайһығыҙ.',
 'ipbblocked' => 'Үҙегеҙ бикләнгән ваҡытта һеҙ башҡа ҡатнашыусыларҙы бикләй йәки бикте ала алмайһығыҙ.',
@@ -2733,7 +2694,6 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 Бындай осраҡтарҙа, кәрәкле булһа, биттәрҙе үҙегеҙҙең күсереүегеҙ йәки исемен үҙгәртеүегеҙ кәрәк буласаҡ.",
 'movearticle' => 'Биттең исемен үҙгәртергә',
 'moveuserpage-warning' => "'''Иғтибар:''' Һеҙ ҡатнашыусы битенең исемен үҙгәртергә йыйынаһығыҙ. Зинһар, биттең генә исеме үҙгәрәсәк, ҡатнашыусы исеме ''үҙгәрмәйәсәк'', икәнен күҙ үңында тотоғоҙ.",
-'movenologin' => 'Үҙегеҙҙе танытырға кәрәк',
 'movenologintext' => 'Биттең исемен үҙгәртеү өсөн, һеҙ [[Special:UserLogin|танылырға]] тейешһегеҙ.',
 'movenotallowed' => 'Һеҙҙең бит исемен үҙгәртергә хоҡуғығыҙ юҡ',
 'movenotallowedfile' => 'Һеҙҙең файл исемен үҙгәртергә хоҡуғығыҙ юҡ',
@@ -2749,8 +2709,6 @@ $1 ҡатнашыусыһын бикләү сәбәбе: "$2"',
 'articleexists' => 'Бындай исемле бит бар йәки һеҙ белдергән исем рөхсәт ителмәй.
 Зинһар, башҡа исем һайлағыҙ.',
 'cantmove-titleprotected' => 'Биттең исемен үҙгәртеү мөмкин түгел, сөнки яңы исем тыйылған исемдәр исемлегенә керә.',
-'talkexists' => "'''Бит исеме үҙгәртелде, ләкин фекер алышыу битенең исемен үҙгәртеп булмай, сөнки ундай исемле бит бар инде. Зинһар, уларҙы үҙегеҙ берләштерегеҙ.'''",
-'movedto' => 'яңы исеме',
 'movetalk' => 'Бәйле фекер алышыу бите исемен үҙгәртергә',
 'move-subpages' => 'Биткә кергән биттәрҙе күсереү ($1 битенә тиклем)',
 'move-talk-subpages' => 'Фекер алышыу битенә кергән биттәрҙе күсереү ($1 битенә тиклем)',
@@ -2860,7 +2818,7 @@ $2',
 'import-comment' => 'Иҫкәрмә:',
 'importtext' => 'Зинһар, файлды сығанаҡ викинан [[Special:Export|махсус ҡорал]] ярҙамында сығарығыҙ. Артабан уны компьютерығыҙға һаҡлағыҙ һәм бында тейәгеҙ.',
 'importstart' => 'Биттәрҙе тейәү...',
-'import-revision-count' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
 'importnopages' => 'Тейәү өсөн биттәр юҡ.',
 'imported-log-entries' => 'Журналдан $1 {{PLURAL:$1|яҙма}} тейәлде.',
 'importfailed' => 'Тейәү хатаһы: <nowiki>$1</nowiki>',
@@ -2892,7 +2850,7 @@ $2',
 'import-error-special' => ' «$1» бите импортҡа сығарылманы, сөнки ул биттәр яһау мөмкин булмаған исемдәр арауығына ҡарай.',
 'import-error-invalid' => '"$1" бите яраҡһыҙ исеме өсөн импортланманы.',
 'import-error-unserialize' => '«$1» битенең $2 өлгөһөн структуралаштырып (десериаялап) булмай. $4 форматында серияланған $3 эстәлегенең моделеның был өлгөлә ҡулланылыуы тураһында хәбәр алынды.',
-'import-options-wrong' => 'Хаталы {{PLURAL:$2|опция|опциялар}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => 'Хаталы {{PLURAL:$2|1=опция|опциялар}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Төп биттең күрһәтелгән исеме яңылыш.',
 'import-rootpage-nosubpage' => 'Төп биттең "$1" исемдәр арауығы эске биттәргә рөхсәт бирмәй.',
 
@@ -2900,9 +2858,9 @@ $2',
 'importlogpage' => 'Тейәү яҙмалары журналы',
 'importlogpagetext' => 'Хакимдәр тарафынан башҡа вики проекттарҙан биттәрҙе һәм уларҙың үҙгәртеүҙәр тарихын тейәү.',
 'import-logentry-upload' => '[[$1]] битен файлдан тейәгән',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=өлгө|өлгө}}',
 'import-logentry-interwiki' => '$1 битен вики проекттары-ара тейәгән',
-'import-logentry-interwiki-detail' => '$2 өлгөнән $1 {{PLURAL:$1|өлгө|өлгө}}',
+'import-logentry-interwiki-detail' => '$2 өлгөнән $1 {{PLURAL:$1|1=өлгө|өлгө}}',
 
 # JavaScriptTest
 'javascripttest' => '
@@ -2990,14 +2948,14 @@ JavaScript тикшереү',
 The wiki server cannot provide data in a format your client can read.',
 
 # Attribution
-'anonymous' => '{{SITENAME}} проектының танылмаған {{PLURAL:$1|ҡатнашыусыһы|ҡатнашыусылары}}',
+'anonymous' => '{{SITENAME}} проектының танылмаған {{PLURAL:$1|1=ҡатнашыусыһы|ҡатнашыусылары}}',
 'siteuser' => '{{SITENAME}} проектының ҡатнашыусыһы $1',
 'anonuser' => '{{SITENAME}} проектының танылмаған ҡатнашыусыһы $1',
 'lastmodifiedatby' => 'Был бит һуңғы тапҡыр $1 $2 $3 тарафынан үҙгәртелгән.',
 'othercontribs' => 'Мөхәррирләүҙә ҡатнаштылар: $1.',
 'others' => 'башҡалар',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|ҡатнашыусы|ҡатнашыусылары}} $1',
-'anonusers' => '{{SITENAME}} проектының танылмаған {{PLURAL:$2|ҡатнашыусыһы|ҡатнашыусылары}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=ҡатнашыусы|ҡатнашыусылары}} $1',
+'anonusers' => '{{SITENAME}} проектының танылмаған {{PLURAL:$2|1=ҡатнашыусыһы|ҡатнашыусылары}} $1',
 'creditspage' => 'Рәхмәт белдереү',
 'nocredits' => 'Был мәҡәләне мөхәррирләүҙә ҡатнашыусылар исемлеге юҡ.',
 
@@ -3042,9 +3000,9 @@ The wiki server cannot provide data in a format your client can read.',
 'pageinfo-authors' => 'Төрлө авторҙар һаны',
 'pageinfo-recent-edits' => 'Һуңғы ваҡыттағы төҙәтеүҙәр ($1 эсендә)',
 'pageinfo-recent-authors' => 'Төрлө авторҙарҙың һуңғы һаны',
-'pageinfo-magic-words' => 'Тылсымлы {{PLURAL:$1|һүҙ|һүҙҙәр}} ($1)',
-'pageinfo-hidden-categories' => 'Йәшерен {{PLURAL:$1|категория|категориялар}} ($1)',
-'pageinfo-templates' => 'Ҡулланылған {{PLURAL:$1|ҡалып|ҡалыптар}} ($1)',
+'pageinfo-magic-words' => 'Тылсымлы {{PLURAL:$1|1=һүҙ|һүҙҙәр}} ($1)',
+'pageinfo-hidden-categories' => 'Йәшерен {{PLURAL:$1|1=категория|категориялар}} ($1)',
+'pageinfo-templates' => 'Ҡулланылған {{PLURAL:$1|1=ҡалып|ҡалыптар}} ($1)',
 'pageinfo-transclusions' => '{{PLURAL:$1|Индерелгән биттәр}} ($1)',
 'pageinfo-toolboxlink' => 'Бит мәғлүмәттәре',
 'pageinfo-redirectsto' => 'Йүнәлтеү',
@@ -3112,7 +3070,7 @@ $1',
 'svg-long-error' => 'Яңылыш SVG файл: $1',
 'show-big-image' => 'Тулы асыҡлыҡ',
 'show-big-image-preview' => 'Байҡау ваҡытындағы күләм: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Башҡа сиселеш|Башҡа сиселештәр}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Башҡа сиселеш|Башҡа сиселештәр}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксель',
 'file-info-gif-looped' => 'әйләнешле',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм}}',
@@ -3136,11 +3094,11 @@ $1',
 'sp-newimages-showfrom' => '$1 $2 ваҡытынан башлап яңы файлдарҙы күрһәтергә',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL:$1|$1 секунд|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 сәғәт|$1 сәғәт}}',
-'days' => '{{PLURAL:$1|$1 көн|$1 көн}}',
-'weeks' => '{{PLURAL:$1|$1 аҙна|$1 аҙна|}}',
+'seconds' => '{{PLURAL:$1|1=$1 секунд|$1 секунд}}',
+'minutes' => '{{PLURAL:$1|1=$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 сәғәт|$1 сәғәт}}',
+'days' => '{{PLURAL:$1|1=$1 көн|$1 көн}}',
+'weeks' => '{{PLURAL:$1|$1 аҙна}}',
 'months' => '{{PLURAL:$1|$1 ай}}',
 'years' => '{{PLURAL:$1|$1 йыл}}',
 'ago' => '$1 элек',
@@ -3575,15 +3533,10 @@ $1',
 'exif-urgency-high' => 'Юғары ($1)',
 'exif-urgency-other' => 'Ҡулланыусы билдәләгән өҫтөнлөк ($1)',
 
-# External editor support
-'edit-externally' => 'Был файлды тышҡы программа ҡулланып мөхәррирләргә',
-'edit-externally-help' => '(Тулыраҡ мәғлүмәт өсөн металағы [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] (инглизсә) битен ҡарағыҙ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бөтә',
 'namespacesall' => 'бөтә',
 'monthsall' => 'бөтә',
-'limitall' => 'бөтә',
 
 # Email address confirmation
 'confirmemail' => 'Электрон почта адресын раҫлау',
@@ -3605,7 +3558,6 @@ $1',
 'confirmemail_success' => 'Һеҙҙең электрон почта адресығыҙ раҫланды.
 Хәҙер һеҙ [[Special:UserLogin|танылыу үтеп]], вики проект менән ҡуллана алаһығыҙ.',
 'confirmemail_loggedin' => 'Һеҙҙең электрон почта адресығыҙ раҫланды.',
-'confirmemail_error' => 'Электрон почта адресын раҫлаған ваҡытта хата килеп сыҡты.',
 'confirmemail_subject' => '{{SITENAME}} электрон почта адресын раҫлау',
 'confirmemail_body' => 'Кемдер, бәлки һеҙҙер, $1 IP адресынан {{SITENAME}} проектында 
 ошо электрон почта адресы менән "$2" иҫәп яҙмаһын теркәгән.
@@ -3713,7 +3665,7 @@ $5
 'lag-warn-high' => 'Мәғлүмәттәр базаларын синхронлаштырыуҙың күпкә артта ҡалыуы сәбәпле, $1 {{PLURAL:$1|секундтан}} кәмерәк ваҡыт элек эшләнгән үҙгәртеүҙәр был исемлектә күрһәтелә алмай.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә фекер алышыу биттәрен иҫәпләмәгәндә - {{PLURAL:$1|$1 бит|$1 бит}} бар.',
+'watchlistedit-numitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә фекер алышыу биттәрен иҫәпләмәгәндә - {{PLURAL:$1|1=$1 бит|$1 бит}} бар.',
 'watchlistedit-noitems' => 'Һеҙҙең күҙәтеү исемлегегеҙҙә бер бит тә юҡ.',
 'watchlistedit-normal-title' => 'Күҙәтеү исемлеген мөхәррирләү',
 'watchlistedit-normal-legend' => 'Күҙәтеү исемлегенән биттәрҙе юйыу',
@@ -3721,7 +3673,7 @@ $5
 Биттәрҙе юйыу өсөн, кәрәкле юлдарҙы һайлағыҙ һәм «{{int:Watchlistedit-normal-submit}}» төймәһенә баҫығыҙ.
 Һеҙ шулай уҡ [[Special:EditWatchlist/raw|исемлекте текст рәүешендә үҙгәртә]] алаһығыҙ.',
 'watchlistedit-normal-submit' => 'Биттәрҙе юйырға',
-'watchlistedit-normal-done' => '{{PLURAL:$1|$1 бит|$1 бит}} һеҙҙең күҙәтеү исемлегенән юйылды:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=$1 бит|$1 бит}} һеҙҙең күҙәтеү исемлегенән юйылды:',
 'watchlistedit-raw-title' => '«Сей» күҙәтеү исемлеген мөхәррирләү',
 'watchlistedit-raw-legend' => '«Сей» күҙәтеү исемлеген мөхәррирләү',
 'watchlistedit-raw-explain' => 'Түбәндә һеҙҙең күҙәтеү исемлегендә булған биттәр күрһәтелгән. Һеҙ был исемлекте, юлдар өҫтәп йәки юйып, үҙгәртә алаһығыҙ; бер юлға - бер исем.
@@ -3730,8 +3682,8 @@ $5
 'watchlistedit-raw-titles' => 'Яҙмалар:',
 'watchlistedit-raw-submit' => 'Исемлекте яңыртырға',
 'watchlistedit-raw-done' => 'Һеҙҙең күҙәтеү исемлеге яңырҙы.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 яҙма|$1 яҙма}} өҫтәлде:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 яҙма|$1 яҙма}} юйылды:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 яҙма|$1 яҙма}} өҫтәлде:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 яҙма|$1 яҙма}} юйылды:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Исемлектәге биттәрҙәге үҙгәрештәр',
@@ -3848,11 +3800,10 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'tags-active-yes' => 'Эйе',
 'tags-active-no' => 'Юҡ',
 'tags-edit' => 'үҙгәртергә',
-'tags-hitcount' => '$1 {{PLURAL:$1|үҙгәртеү|үҙгәртеү}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=үҙгәртеү|үҙгәртеү}}',
 
 # Special:ComparePages
 'comparepages' => 'Биттәрҙе сағыштырыу',
-'compare-selector' => 'Биттәрҙең өлгөләрен сағыштырыу',
 'compare-page1' => 'Беренсе бит',
 'compare-page2' => 'Икенсе бит',
 'compare-rev1' => 'Беренсе өлгө',
@@ -3952,9 +3903,9 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'api-error-badtoken' => 'Эске хата: дөрөҫ булмаған токен',
 'api-error-copyuploaddisabled' => 'Был серверҙа URL адрес буйынса йөкләү өҙөлгән',
 'api-error-duplicate' => 'Бындай эстәлекле {{PLURAL:$1|[$2 файл]}}  бар.',
-'api-error-duplicate-archive' => 'Сайтта бындай эстәлекле {{PLURAL:$1|[$2 башҡа файл]}} бар ине инде, ләкин {{PLURAL:$1|ул юйылды|улар юйылды}}',
-'api-error-duplicate-archive-popup-title' => 'Элек юйылған {{PLURAL:$1|файлдың|файлдарҙың}} дубликаты',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|файлы|файлдары}} дубликаты.',
+'api-error-duplicate-archive' => 'Сайтта бындай эстәлекле {{PLURAL:$1|[$2 башҡа файл]}} бар ине инде, ләкин {{PLURAL:$1|1=ул юйылды|улар юйылды}}',
+'api-error-duplicate-archive-popup-title' => 'Элек юйылған {{PLURAL:$1|1=файлдың|файлдарҙың}} дубликаты',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=файлы|файлдары}} дубликаты.',
 'api-error-empty-file' => 'Һеҙ ебәргән файл буш.',
 'api-error-emptypage' => 'Яңы буш биттәр яһау тыйыла.',
 'api-error-fetchfileerror' => 'Эске хата: файлды күсергән ваҡытта хата китте',
@@ -3963,7 +3914,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|1=тыйылған файл төрө|тыйылған файл төрҙәре}}. Рөхсәт ителгән {{PLURAL:$3|1=файл төрө|файл төрҙәре}} $2.',
 'api-error-filetype-missing' => 'Был файлдың ҡушымтаһы юҡ',
 'api-error-hookaborted' => 'Һеҙ эшләргә теләгән үҙгәртеүҙәр ҡушымтаны тикшереүсе тарафынан өҙөлдө',
 'api-error-http' => 'Эске хата: серверға бәйләнеп булмай.',
@@ -3990,15 +3941,15 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
 'api-error-verification-error' => 'Был файл боҙолған, йәки дөрөҫ булмаған ҡушымтаһы бар.',
 
 # 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|меңйыллыҡ|меңйыллыҡтар}}',
+'duration-seconds' => '$1 {{PLURAL:$1|1=секунд|секунд}}',
+'duration-minutes' => '$1 {{PLURAL:$1|1=минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|1=сәғәт|сәғәт}}',
+'duration-days' => '$1 {{PLURAL:$1|1=көн|көн}}',
+'duration-weeks' => '$1 {{PLURAL:$1|аҙна|аҙна|аҙналар}}',
+'duration-years' => '$1 {{PLURAL:$1|1=йыл|йылдар}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=ун көнлөк|ун көнлөктәр}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=быуат|быуаттар}}',
+'duration-millennia' => '$1 {{PLURAL:$1|1=меңйыллыҡ|меңйыллыҡтар}}',
 
 # Image rotation
 'rotate-comment' => 'Рәсем сәғәт йөрөшө буйынса $1{{PLURAL:$1|}} градусҡа боролдо',
index 3a53f74..5869bce 100644 (file)
@@ -81,7 +81,6 @@ $messages = array(
 'tog-minordefault' => "D' eigernen Änderrungen standardmässig gringfiagig markirn",
 'tog-previewontop' => 'Vurschau ówerhoib vom Beorweitungsfenster åzoang',
 'tog-previewonfirst' => "Ban ersten Beorweiten oiwei d' Vurschau åzoang",
-'tog-nocache' => 'Seitencache vom Browser deaktivirn',
 'tog-enotifwatchlistpages' => 'Bei Änderrungen voh beówochterde Seiten a E-Mail schicken',
 'tog-enotifusertalkpages' => 'Bei Änderrungen voh meiner Benutzerseiten a E-Mail schicken',
 'tog-enotifminoredits' => 'Aa ba kloane Änderrungen voh beówochterde Seiten a E-Mail schicker',
@@ -202,7 +201,6 @@ $messages = array(
 'qbedit' => 'werkeln',
 'qbpageoptions' => 'Seitenopzionen',
 'qbmyoptions' => 'Meine Seiten',
-'qbspecialpages' => 'Speziaalseiten',
 'faq' => 'Oft gstejte Frong',
 'faqpage' => 'Project:FAQ',
 
@@ -403,9 +401,6 @@ Méglicherweis iss schoh vohram åndern gléschd worn.',
 'perfcached' => "Dé fóigernden Daaten staummern aus'm Cache und san méglicherweis nimmer aktuö. Maximoi {{PLURAL:$1|oah Ergebnis is|$1 Ergebniss san}} im Cache vafiagbor.",
 'perfcachedts' => "Dé Daaten staummern aus 'm Cache. Da Zeidbunkt voh da létzden Aktualisiarung: $1. Maximoi {{PLURAL:$4|oah Ergebnis is|$4 Ergebniss san}} im Cache vafiagbor.",
 'querypage-no-updates' => "'''Dé Aktualisiarungsfunkzión voh derer Seiten is derzeid deaktivird. Dé Daaten wern bis auf Weiders néd daneiert.'''",
-'wrong_wfQuery_params' => 'Foische Parameeter fyr wfQuery()<br />
-Funkzión: $1<br />
-Obfrog: $2',
 'viewsource' => 'Quejtext ozoagn',
 'viewsource-title' => 'Quöntext voh da Seiten $1 auhschauh',
 'actionthrottled' => 'Akziónszoi limitird',
@@ -480,7 +475,7 @@ Es muass sichergstöd seih, daas Cookies aktivierd san. Danoch bittscheh d' Seit
 'loginlanguagelabel' => 'Sproch: $1',
 
 # Change password dialog
-'resetpass' => 'Posswort ändern',
+'changepassword' => 'Posswort ändern',
 'oldpassword' => 'Oids Posswort:',
 'newpassword' => 'Neichs Posswort:',
 'retypenew' => 'Neichs Posswort (nuamoi):',
@@ -658,8 +653,6 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 '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' => 'Siachtborkeit endan',
-'revdel-restore-deleted' => 'gleschte Versiona',
-'revdel-restore-visible' => 'sichtbore Versiona',
 'pagehist' => 'Versiónsgschicht',
 'deletedhist' => 'Gléschde Versiónen',
 
@@ -677,10 +670,6 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Suachergebniss',
 '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|vorheriga|vorherige $1}}',
 'nextn' => '{{PLURAL:$1|naxta|naxte $1}}',
@@ -711,24 +700,19 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
 'searchrelated' => 'vawandt',
 'searchall' => 'olle',
 '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' => 'Fia dei Suachofrog gibts koa Ergebnis',
-'powersearch' => 'Suach',
 'powersearch-legend' => 'Daweiterde Suach',
 'powersearch-ns' => 'Suach in Nåmensraim:',
 'powersearch-redir' => 'Weiderloattung åzoang',
-'powersearch-field' => 'Suach noch:',
 'search-external' => 'Externe Suach',
 
 # Preferences page
 'preferences' => 'Eihstellungen',
 'mypreferences' => 'Mei Preferenz',
-'changepassword' => 'Posswort ändern',
 'prefs-editing' => 'Beorweiten',
 'rows' => 'Zeiln:',
 'columns' => 'Spoiten',
 'searchresultshead' => 'Suachen',
-'resultsperpage' => 'Dreffer pró Seiten:',
 'savedprefs' => 'Deine Eihstellungen san gspeicherd worn.',
 'timezonelegend' => 'Zaidzone:',
 'localtime' => 'Ortszaid:',
@@ -798,8 +782,6 @@ Dei Mail-Adress wead dabei ned ozoagt.',
 'recentchanges-label-minor' => 'Kloane Endarunga',
 'recentchanges-label-bot' => 'Endarung duach an Bot',
 'recentchanges-label-unpatrolled' => 'De Endarung is no ned kontrolliad worn',
-'rcnote' => "{{PLURAL:$1|'''1''' Endarung|'''$1''' Endarunga}} in dn {{PLURAL:$2|letztn 24 Stundn|letztn '''$2'''Dog}}.
-Stand: $4, $5 Uhr.",
 'rcnotefrom' => "Untn san de Endarunga seit  '''$2''' (bis za '''$1''' Ozoagn).",
 'rclistfrom' => 'Nua Endarunga seit $1 zoagn.',
 'rcshowhideminor' => 'Kloane Endarunga $1',
@@ -1034,9 +1016,6 @@ A [[Special:WhatLinksHere/$2|voiständige Listn]] gibt's aa.",
 'allpagesto' => 'Seiten auhzoang bis:',
 'allarticles' => 'Olle Seitn',
 'allinnamespace' => 'Olle Seiten (Naumensraum: $1)',
-'allnotinnamespace' => 'Ollte Seiten  (néd im $1 Naumensraum)',
-'allpagesprev' => 'Vurige',
-'allpagesnext' => 'Naxde',
 '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.",
@@ -1242,8 +1221,7 @@ Da aktuöje Text voh da gléschden Seiten is netter fyr Administraatorn zuagäng
 'undeletebtn' => 'Wiederherstön',
 'undeletelink' => 'oschaugn / wiadaheastejn',
 'undeleteviewlink' => 'oschaugn',
-'undeletereset' => 'Zrucksétzen',
-'undeletedfiles' => '$1 {{plural:$1|Datei|Dateien}} san wieda hergstellt worn',
+'undeletedfiles' => '$1 {{PLURAL:$1|Datei|Dateien}} san wieda hergstellt worn',
 'undelete-search-box' => 'Suach noch gléschde Seiten',
 'undelete-search-submit' => 'Suach',
 'undelete-show-file-submit' => 'Jo',
@@ -1298,7 +1276,6 @@ Da aktuöje Text voh da gléschden Seiten is netter fyr Administraatorn zuagäng
 'block' => 'Benutzer sperrn',
 'unblock' => 'Benutzer freigeem',
 'blockip' => 'IP-Adress/Benytzer sperrn',
-'blockip-title' => 'Benytzer sperrn',
 'blockip-legend' => 'IP-Adresse/Benutzer sperrn',
 'blockiptext' => "Mid dem Formular sperrst a IP-Adress oder an Benytzernåmen, das vo durten aus koane Endarungen mer vurgnumma wern kennan.
 Des soid nur dafoing, um an Vandalismus z' vahindern und in Yweraistimmung mid d' [[{{MediaWiki:Policy-url}}|Richtlinien]].
@@ -1306,7 +1283,6 @@ Gib bittschee an Grund fyr d' Sperrn å.",
 'ipadressorusername' => 'IP-Adress oder Benytzernåm:',
 'ipbexpiry' => 'Sperrdauer:',
 'ipbreason' => 'Grund:',
-'ipbreasonotherlist' => 'Åndarer Grund:',
 'ipbreason-dropdown' => '* Oigmoahne Sperrgrynd
 ** Eihfyng voh voische Informaziónen
 ** Laarn voh Seiten
@@ -1322,8 +1298,6 @@ Gib bittschee an Grund fyr d' Sperrn å.",
 '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 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',
 'ipbwatchuser' => 'De Benytzer(diskussions)saiten beowochten',
 'ipb-change-block' => "D' Sperrn mid de Sperrparameter danaiern",
@@ -1392,7 +1366,6 @@ In de zwoa Fälle miaßadst, fåis des gwünscht is, de Seitn händisch vaschiam
 
 Bittschee gib außadem druntn in '''neichn''' Nãm vu da Seitn ei und schreib kuaz '''wieso'''<nowiki>'st</nowiki> de Seitn vaschiam mechst.",
 'movearticle' => 'Seitn vaschiam:',
-'movenologin' => 'Du bist néd ågmödt',
 'movenologintext' => 'Zum Vaschiam muaßt a registriada und [[Special:UserLogin|ãngmöideta Benutza]] sei.',
 'movenotallowed' => 'Du håst ka Berechtigung zum Vaschiam vu Seitn.',
 'movenotallowedfile' => 'Du håst ka Berechtigung zum Vaschiam vu Datein.',
@@ -1405,8 +1378,6 @@ Bittschee gib außadem druntn in '''neichn''' Nãm vu da Seitn ei und schreib ku
 'movepage-moved' => "'''D'Seitn „$1“ is nåch „$2“ vaschom woan.'''",
 'movepage-moved-redirect' => 'Es is a Weiderloatung erstöd worn.',
 'articleexists' => 'Unter dém Naum existierd schoh a Seiten. Bittscheh nimm an aundern Naumen her.',
-'talkexists' => "D' Seiten söwer is erfóigreich vaschóm worn, ower d' zuagherige Dischkrierseiten néd, weis mid dém Titel schoh oane gibt. Bittscheh kymmerd dé händisch ums zaummfyrn.",
-'movedto' => 'vaschóm auf',
 'movetalk' => "Waunns geet, d' Dischkrierseiten aa midvaschiam",
 'movelogpage' => 'Vaschiabungs-Logbuach',
 'movereason' => 'Grund:',
@@ -1563,10 +1534,6 @@ Weidane wean standardmassi ned ozoagt.
 
 'exif-componentsconfiguration-0' => 'Gibts néd',
 
-# External editor support
-'edit-externally' => 'De Datei mid am externa Programm beorbatn',
-'edit-externally-help' => '(Schaug unter [https://www.mediawiki.org/wiki/Manual:External_editors Installationsoweisunga] fia weidane Infos)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'olle',
 'namespacesall' => 'olle',
@@ -1710,7 +1677,6 @@ Bittscheh d' noraale Vurschau bnutzen.",
 
 # Special:ComparePages
 'comparepages' => 'Seiten vagleichen',
-'compare-selector' => 'Seitenversiónen vagleichen',
 'compare-page1' => 'Seiten 1',
 'compare-page2' => 'Seiten 2',
 'compare-rev1' => 'Versión 1',
index f70e65e..4d671d7 100644 (file)
@@ -210,8 +210,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Dijalo sian "$1"',
 'youhavenewmessages' => 'Adong di ho $1 ($2).',
-'newmessageslink' => 'Tona na imbaru',
-'newmessagesdifflink' => 'Parubaan na parpudi',
 'youhavenewmessagesmulti' => 'Adong tu ho tona na imbaru di $1',
 'editsection' => 'Patota',
 'editold' => 'patota',
@@ -291,7 +289,6 @@ $messages = array(
 'loginlanguagelabel' => 'Hata: $1',
 
 # Change password dialog
-'resetpass' => 'Pauba hata hinsu',
 'oldpassword' => 'Hata hinsu na leleng',
 'newpassword' => 'Password naimbaru',
 'resetpass-submit-loggedin' => 'Pauba hata hinsu',
@@ -376,8 +373,6 @@ Parubaan na binahenmu dang di simpan dope!",
 'rev-showdeleted' => 'Paida',
 'revdelete-log' => 'Alana',
 'revdel-restore' => 'Pauba pardompahan',
-'revdel-restore-deleted' => 'Patota naung di sesa',
-'revdel-restore-visible' => 'revisi na tarbereng',
 
 # Merge log
 'revertmerge' => 'Sundati Pardomuan',
@@ -714,9 +709,6 @@ Holan daftar (baris na dimulai dohot tanda *) na masuk etongan. Pangait na parjo
 'exif-imagewidth' => 'Bolak',
 'exif-imagelength' => 'Timbo',
 
-# External editor support
-'edit-externally' => 'Patota berkas on mamarhaseanghon ulaula parduru',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Sasude',
 'namespacesall' => 'sude',
index 32dd34d..cae3c65 100644 (file)
@@ -63,7 +63,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'صفحات قدیمی' ),
        'Blankpage'                 => array( 'صفحه هالیک' ),
        'Block'                     => array( 'محدود آی پی' ),
-       'Blockme'                   => array( 'محدودیت من' ),
        'Booksources'               => array( 'منابع کتاب' ),
        'BrokenRedirects'           => array( 'پرشتگین غیرمستقیم' ),
        'Categories'                => array( 'دستجات' ),
@@ -72,7 +71,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'مشارکتان' ),
        'CreateAccount'             => array( 'شرکتن حساب' ),
        'Deadendpages'              => array( 'مرتگین صفحات' ),
-       'Disambiguations'           => array( 'رفع ابهام' ),
        'DoubleRedirects'           => array( 'دوبل غیر مستقیم' ),
        'Emailuser'                 => array( 'ایمیل کاربر' ),
        'Export'                    => array( 'درگیزگ' ),
@@ -165,7 +163,6 @@ $messages = array(
 'tog-minordefault' => 'په طور پیش فرض کل اصلاحات آ په داب جزی مشخص کن',
 'tog-previewontop' => 'بازبین پیش دار پیش چه جعبه اصلاح',
 'tog-previewonfirst' => 'ته اولین اصلاح بازبینی پیش دار',
-'tog-nocache' => 'ذخیره کتن صفحه یا غیر فعال کن',
 'tog-enotifwatchlistpages' => 'منی ایمیل جن وهدی که یک صفحه ای ته منی لیست چارگ عوص بیت',
 'tog-enotifusertalkpages' => 'منآ ایمیل جن وهدی که صفحه ی گپ کاربر من عوض بیت',
 'tog-enotifminoredits' => 'من ایمیل جن همی داب په هوردین اصلاحات صفحات',
@@ -274,7 +271,6 @@ $messages = array(
 'qbedit' => 'اصلاح',
 'qbpageoptions' => 'صفحه',
 'qbmyoptions' => 'منی صفحات',
-'qbspecialpages' => 'حاصین صفحات',
 'faq' => 'ب.ج.س',
 'faqpage' => 'Project:ب.ج.س',
 
@@ -464,9 +460,6 @@ $1',
 'perfcached' => 'جهلیگین دیتا ذخیره بیتگنت و شاید نوک می بنت. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 '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 />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'به گند منبع آ',
 'actionthrottled' => 'کار گیر نت',
 'actionthrottledtext' => 'په خاطر یک معیار ضد اسپم شما چه انجام ای کار ته یک کمی زمان محدود بیتگیت، و شما چه ای محدودیت رد بیتگیت.
@@ -575,7 +568,7 @@ $2',
 'loginlanguagelabel' => 'زبان: $1',
 
 # Change password dialog
-'resetpass' => 'کلمه رمزءَ‌عوض کن',
+'changepassword' => 'کلمه رمز عوض کن',
 'resetpass_announce' => 'شما گون یک هنوکین کد ایمیل بوتگین وارد بوتءیت.
 په تمام کتن ورود، شما باید یک نوکین کلمه رمز اداں شرکنیت',
 'resetpass_text' => '<!-- متن دان هورکن -->',
@@ -841,10 +834,6 @@ Legend: (cur) = تفاوتان گون هنوکین نسخه,
 'revdelete-nooldid-title' => 'نامعتبر بازبینی هدف',
 'revdelete-nooldid-text' => 'شما یا یک بازبینی هدفی په اجرای ای عمل مشخص نه کتت
 ،بازبینی مشخص موجود نهنت، یا شما تلاش کنیت هنوکین بازبینی پناه کنیت.',
-'revdelete-nologtype-title' => 'نوع لیست سیاهگ مشخص نهنت',
-'revdelete-nologtype-text' => 'شما هیچ دابین نوع سیاهگی مشخص نکتت په اجرای ای کار.',
-'revdelete-nologid-title' => 'نامعتبرین ورودی سیاهگ',
-'revdelete-nologid-text' => 'شما یک چیزی ته سیاهگ هدف برای اجرای ای کار مشخص نکتت یا ورودی مشخص این موجود نهنت.',
 'revdelete-no-file' => 'فایل مشخص بیتگین موجود نهنت',
 'revdelete-show-file-submit' => 'بله',
 'revdelete-selected' => "'''{{PLURAL:$2|بازبینی انتخابی|بازبینی ان انتخابی}} چه [[:$1]]:'''",
@@ -924,12 +913,8 @@ $1",
 # 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}}',
@@ -938,10 +923,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} دگه',
 'shown-title' => 'پیش دار $1 {{PLURAL:$1|نتیجه|نتیجه}} ته هر صفحه',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) دیدگ',
-'searchmenu-legend' => 'گزینه یان گردگ',
 'searchmenu-exists' => "'''صفحه گون نام \"[[\$1]]\" ته ای ویکی نیستن'''",
 'searchmenu-new' => "'''شر کن صفحه ای \"[[:\$1]]\" ته ای ویکی!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|بروز صفحات گون پیش وند]]',
 'searchprofile-articles' => 'صفحات محتوا',
 'searchprofile-project' => 'کمک و صفحات پروژه ای',
 'searchprofile-images' => 'ملتیمدیا',
@@ -961,20 +944,16 @@ $1",
 'search-interwiki-default' => '$1 نتایج:',
 'search-interwiki-more' => '(گیشتر)',
 'search-relatedarticle' => 'مربوطین',
-'mwsuggest-disable' => 'پیشنهادات آژاکسیء غیر فعال کن',
 'searcheverything-enable' => 'گردگ ته کل فضانامان',
 'searchrelated' => 'مربوط',
 'searchall' => 'کل',
 'showingresults' => "جهل پیش دارگنت تا  {{PLURAL:$1|'''1'''نتیجه|'''$1''' نتایج}} شروع بنت گون #'''$2'''.",
 'showingresultsnum' => "جهل پیش داریت  {{PLURAL:$3|'''1''' نتیجه|'''$3''' نتایج}} شروع بیت گون #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|نتیجه '''$1''' چه '''$3'''|نتایج '''$1 - $2''' چه '''$3'''}} په '''$4'''",
-'nonefound' => "'''توجه''':  فقط لهتی نام فضا په طور پیش فرض گردگ بیتت. سعی کنیت وتی جوستء هور کنیت گون ''all:'' په گردگ په کل محتوا (شامل صفحات گپ، تمپلتان ودگر)، یا استفاده کنیت لوٹیگن نام فضا په داب پیش وند.",
 'search-nonefound' => 'نتیجه هم دپ په درخواست نیست',
-'powersearch' => 'پیشرپتگی گردگ',
 'powersearch-legend' => 'گردگ پیشرفته',
 'powersearch-ns' => 'گردگ ته نام فضا آن',
 'powersearch-redir' => 'لیست عیرمستقیم آن',
-'powersearch-field' => 'گردگ په',
 'powersearch-togglelabel' => 'کنترل:',
 'powersearch-toggleall' => 'کل',
 'powersearch-togglenone' => 'هچ یک',
@@ -987,7 +966,6 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'منی ترجیحات',
 'prefs-edits' => 'تعداد اصلاحات:',
-'changepassword' => 'کلمه رمز عوض کن',
 'prefs-skin' => 'پوست',
 'skin-preview' => 'بازین',
 'datedefault' => 'هچ ترجیح',
@@ -1004,13 +982,11 @@ $1",
 'prefs-email' => 'گزینه یان ایمیل:',
 'prefs-rendering' => 'شکل صفحه',
 'saveprefs' => 'ذخیره',
-'resetprefs' => 'پاکن تغییرات ذخیره نه بوتگین',
 'restoreprefs' => 'کل پیش فرضین تنظیمات برگردین',
 'prefs-editing' => 'اصلاح',
 'rows' => 'ردیفآن«',
 'columns' => 'ستون‌ان:',
 'searchresultshead' => 'گردگ',
-'resultsperpage' => 'کلیک ته هر صفحه:',
 'stub-threshold' => 'سرحد په  <a href="#" class="stub">چنڈ لینک</a> فرمت (بایت):',
 'recentchangesdays' => 'روچ ان به پیش دارگ ته نوکیت تغییرات:',
 'recentchangesdays-max' => '(حداکثر $1 {{PLURAL:$1|روچ|روچ}})',
@@ -1021,7 +997,6 @@ $1",
 'localtime' => 'ملکی وهد:',
 'timezoneuseserverdefault' => 'چه پیش فرضین سرور استفاده کن',
 'timezoneuseoffset' => 'دگر (اختلاف ءَ مشخص کنیت)',
-'timezoneoffset' => 'اختلاف¹:',
 'servertime' => 'وهد سرور:',
 'guesstimezone' => 'پرکن چه بروزر',
 'timezoneregion-africa' => 'افریکا',
@@ -1230,7 +1205,6 @@ $1",
 'recentchanges-legend' => 'گزینه ی نوکین تغییرات',
 'recentchanges-summary' => 'رندگر نوکترین تغییرات ته ویکی تی ای صفحه.',
 'recentchanges-feed-description' => 'آهرین تغییرات ته وی کی چه ای فید رند گر',
-'rcnote' => "جهلء{{PLURAL:$1|هست '''1''' تغییری|هستن آهری '''$1''' تغییرات}} ته آهرین {{PLURAL:$2|روچ|'''$2''' روچان}}, چه$5, $4.",
 'rcnotefrom' => "جهلا تغییرات چه '''$2''' (تا  '''$1''' پیش دارگنت). هست",
 'rclistfrom' => 'پیش دار نوکین تغییراتآ چه $1',
 'rcshowhideminor' => '$1 هوردین تغییرات',
@@ -1571,10 +1545,8 @@ PICT # misc.
 'protectedpages' => 'صفحات حفاظت بیتگین',
 'protectedpages-indef' => 'فقط محافظت نامحدود',
 'protectedpages-cascade' => 'محافظتان آبشاری فقط',
-'protectedpagestext' => 'جهلیگین صفحات محافظت بوتگین چه اصلاح و جاه په جاه بیگ',
 'protectedpagesempty' => 'هچ صفحه ای گون ای پارامترآن',
 'protectedtitles' => 'عناوین محافظتی',
-'protectedtitlestext' => 'جهلیگین عناوین چه شر بیگ محافظتن',
 'protectedtitlesempty' => 'هچ عنوانی هنو گو ای پارامتران محافظت نهنت.',
 'listusers' => 'لیست کاربر',
 'listusers-editsonly' => 'فقط کاربرانی که اصلاحاتش هست پیش بدار',
@@ -1623,9 +1595,6 @@ PICT # misc.
 'allpagesto' => 'پیش بدار صفحاتی که هلنت گون:',
 'allarticles' => 'کل صفحات',
 'allinnamespace' => 'کل صفحات($1 نام فضا)',
-'allnotinnamespace' => 'صفحات کل (ته نام فضا $1 نه)',
-'allpagesprev' => 'پیشگین',
-'allpagesnext' => 'بعدی',
 'allpagessubmit' => 'برو',
 'allpagesprefix' => 'صفحات پیش دار گون پیشوند:',
 'allpagesbadtitle' => 'داتگین عنوان صفحه نامعتبر انت یا  یک پیشوند بین ویکی یا یبن زبانی سحتی هستت.
@@ -1917,7 +1886,6 @@ $NEWPAGE
 'undeletebtn' => 'باز گردینگ',
 'undeletelink' => 'بچار/واتر',
 'undeleteviewlink' => 'پیشدارگ',
-'undeletereset' => 'برگردینگ',
 'undeleteinvert' => 'چپکایگ کتن انتخاب',
 'undeletecomment' => 'نظر:',
 'undeletedrevisions' => '{{PLURAL:$1|1 بازبینی|$1 بازبینی آن}} واترینگ بیت',
@@ -2000,7 +1968,6 @@ $1',
 'ipadressorusername' => 'آدرس آي پی یا نام کاربری:',
 'ipbexpiry' => 'وهد هلگ:',
 'ipbreason' => 'دلیل:',
-'ipbreasonotherlist' => 'دگ دلیل',
 'ipbreason-dropdown' => '* متداولین دلایل محدودیت
 ** وارد کتن غلطین اطلاحات
 ** زورگ محتوا چه صفحات
@@ -2015,8 +1982,6 @@ $1',
 'ipbsubmit' => 'ای کاربرء محدود کن',
 'ipbother' => 'دگر وهد:',
 'ipboptions' => '۲ ساعت:2 hours,۱ روچ:1 day,۳ روچ:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌‌حد:infinite',
-'ipbotheroption' => 'دگر',
-'ipbotherreason' => 'دگر/اضافی ان دلیل:',
 'ipbhidename' => 'پناه کن نام کاربری چه اصلاحات و لیستان',
 'ipbwatchuser' => 'بچار ای کاربرء صفحات گپ و کاربری آ',
 'ipb-change-block' => 'بند کتن ای کاربر گون ای تنظیمات',
@@ -2083,7 +2048,6 @@ $1',
 'sorbsreason' => 'شمی آدرس آی پی لیست بوتت په داب پچین پروکسی ته  DNSBL که استفاده بیت گون {{SITENAME}}.',
 'sorbs_create_account_reason' => 'شمی آدرس آی پی لیست بوتت په داب پچین پروکسی ته  دی ان ای بی ال که استفاده بیت گون {{SITENAME}}.
 شما نه تونیت حسابی شرکنیت',
-'cant-block-while-blocked' => 'شما نه تونیت دگه کاربرانء بند کنیت وهدی که شما وت بند هستیت',
 
 # Developer tools
 'lockdb' => 'دیتابیس کبل کن',
@@ -2125,7 +2089,6 @@ $1',
 شما جهلیگین باکس آ تیک مجنیت.
 ته ای موراد شما بایدن صفحه یا دسته جاه په جاه کنی و یا آیآ چن و بند کینت.",
 'movearticle' => 'جاه په چاهی صفحه:',
-'movenologin' => 'وارد نهیت',
 'movenologintext' => 'شما بایدن یک ثبت نامی کاربری بیت و [[Special:UserLogin|وارد بیت]]په جاه په جاه کتن یک صفحه.',
 'movenotallowed' => 'شما را اجازت به جاه په جاه کتن صفحات نیست.',
 'movenotallowedfile' => 'شما را اجارت په جاه په جاه کتن فایلان نیستن.',
@@ -2141,9 +2104,6 @@ $1',
 'articleexists' => 'صفحه گون آن نام پیش تر هستت، یا نامی که شما زورتت نامعتبرنت.
 یک دگه نامی بزوریت.',
 'cantmove-titleprotected' => 'شما نه تونیت یک صفحه ای به ای جاگاه جاه په جاه کنیت، په چی که نوکین عنوان محافظت بیت چه شربیگ',
-'talkexists' => "''''صفحه وتی گون موفقیت جاه په جاه بوت، بله صفحه گپ نه نویت جاه  په جاه بیت چون که یکی ته نوکین عنوان هست.
-لطفا آیآ دستی چند و بند کنیت.''''",
-'movedto' => 'جاه په جاه بیت په',
 'movetalk' => 'جاه په جاه کتن صفحه کپ همراه',
 'move-subpages' => 'چیر تاکان ءَ ( تا  $1) جاه په جاه کن اگر ببیت',
 'move-talk-subpages' => 'چیرتاکان چه صفحه گپ (تا $1 ) جا په جاه کن',
@@ -2783,10 +2743,6 @@ Variants for Chinese language
 'exif-gpsdirection-t' => 'جهت درست',
 'exif-gpsdirection-m' => 'مسیر آهن ربایی',
 
-# External editor support
-'edit-externally' => 'ای صفحه یا اصلاح کن گون یک درآین برنامه ای',
-'edit-externally-help' => '(په گیشترین اطلاعات بچار[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'کل',
 'namespacesall' => 'کل',
@@ -2815,7 +2771,6 @@ Variants for Chinese language
 'confirmemail_success' => 'شمی آدرس ایمیل تایید بوتت.
 شما الان تونت وارد بیت و چه ویکی سوب برت',
 'confirmemail_loggedin' => 'شمی آدرس ایمیل هنو تایید بوتت',
-'confirmemail_error' => 'لهتی چیز اشتباهت وهد ذخیره کتن شمی تایید.',
 'confirmemail_subject' => '{{SITENAME}} تایید آدرس ایمیل',
 'confirmemail_body' => 'یک نفر،بلکه شما، چه آی پی آدرس $1,
 یک حسابی ثبت کتت "$2"  گون ای آدرس ایمیل ته {{SITENAME}}.
index 2437e92..1282609 100644 (file)
@@ -119,7 +119,6 @@ $messages = array(
 'tog-minordefault' => 'Markahán gabos na saradit na pagliwat sa paaging panugmad',
 'tog-previewontop' => 'Ipahilíng an patànaw bàgo an kahon nin paghirá',
 'tog-previewonfirst' => 'Ipahilíng an patànaw sa enot na paghirá',
-'tog-nocache' => 'Pundoha an pagsaray nin mga pahina sa kilyaw (browser)',
 'tog-enotifwatchlistpages' => 'E-suratan mo ako kunsoarin an sarong pahina o sagunson na yaon sa sakong bantay-listahan pinagliwat',
 'tog-enotifusertalkpages' => 'E-koreohan ako pag pigribáyan an pahina kan sakóng olay',
 'tog-enotifminoredits' => 'E-suratan man ako para sa saraditon na mga pagliwat kan mga pahina asin mga sagunson',
@@ -254,7 +253,6 @@ $messages = array(
 'qbedit' => 'Liwata',
 'qbpageoptions' => 'Ining pahina',
 'qbmyoptions' => 'Sakong mga pahina',
-'qbspecialpages' => 'Espesyal na mga pahina',
 'faq' => 'PPK (Pirmihang Pighahapot na mga kahaputan)',
 'faqpage' => 'Project:PPK (Pirmihang Pighahapot na mga Kahaputan)',
 
@@ -372,8 +370,8 @@ $1',
 'youhavenewmessages' => 'Ika igwa nin $1 ($2).',
 'youhavenewmessagesfromusers' => 'Ika igwa nin $1 gikan sa {{PLURAL:$3|ibang paragamit|$3 mga paragamit}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ika igwa nin $1 gikan sa kadakol na mga paragamit ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|sarong bagong mensahe|bagong mga mensahe}}',
-'newmessagesdifflinkplural' => 'huring {{PLURAL:$1|kaliwatan|mga kaliwatan}}',
+'newmessageslinkplural' => '{{PLURAL:$1|sarong baguhong mensahe|999=baguhong mga mensahe}}',
+'newmessagesdifflinkplural' => 'kahurihan na {{PLURAL:$1|kaliwatan|999=mga kaliwatan}}',
 'youhavenewmessagesmulti' => 'Igwa ka nin mga bàgong mensahe sa $1',
 'editsection' => 'liwatón',
 'editold' => 'Liwatón',
@@ -472,9 +470,6 @@ Ini gayod may laog nin o dakol na mga karakter na dae pinaggagamit sa mga titulo
 'perfcached' => 'An minasunod na datos pinagtago asin bakong gayo napapanahon. An maximum na {{PLURAL:$1|sarong resulta na|$1 mga resulta na}} yaon sana sa pinagtago.',
 'perfcachedts' => 'An minasunod na datos pinagtago, asin huring pinagdagdagan kan $1. An maximum na {{PLURAL:$4|sarong result na |$4 mga resulta na }} yaon sana sa pinagtago.',
 'querypage-no-updates' => 'Pigpopogol mùna an mga pagbabàgo sa pahinang ini. Dai mùna mababàgo an mga datos digdi.',
-'wrong_wfQuery_params' => 'Salâ na parámetro sa wfQuery()<br />
-Acción: $1<br />
-Hapót: $2',
 'viewsource' => 'Hilingón an ginikanan',
 'viewsource-title' => 'Hilnga an piggikanan para sa $1',
 'actionthrottled' => 'An aksyon pinagpugulan',
@@ -506,7 +501,8 @@ An administrador na iyo an nagkandado kaini nagpahayag kaining kapaliwanagan: "$
 'invalidtitle-knownnamespace' => 'Imbalidong titulo na igwang espasyadong ngaran na "$2" asin teksto na "$3"',
 'invalidtitle-unknownnamespace' => 'Imbalidong titulo na igwang nin bakong bistado na bilang kan espasyadong ngaran na $1 asin teksto na "$2"',
 'exception-nologin' => 'Dae ka nakalaog',
-'exception-nologin-text' => 'Ining pahina o aksyon minakaipo saimo na maglaog kaining wiki.',
+'exception-nologin-text' => 'Tabi man [[Special:Userlogin|maglaog]]na tanganing makalangkay sa pahinang ini o aksyon.',
+'exception-nologin-text-manual' => 'Tabi man $1 na tanganing makalangkay sa pahinang ini o aksyon.',
 
 # Virus scanner
 'virus-badscanner' => "Raot na kasalansanan: Bakong bistadong virus scanner: ''$1''",
@@ -610,7 +606,7 @@ Tabi probaran giraray.',
 'passwordtooshort' => 'Mga sekretong panlaog dapat igwa nin {{PLURAL:$1|1 karakter|$1 mga karakter}}.',
 'password-name-match' => 'An saimong sekretong panlaog dapat laen sa saimong paragamit na ngaran.',
 'password-login-forbidden' => 'An paggamit kaining pangaran nin paragamit asin sekretong panlaog pinagbabawal.',
-'mailmypassword' => 'Paki-koreo an bagong sekretong panlaog',
+'mailmypassword' => 'Pakibaguha an pasa-taramon',
 'passwordremindertitle' => 'Bagong temporaryo na sekretong panlaog para sa {{SITENAME}}',
 'passwordremindertext' => 'May sarong tawo (pwedeng ika gayod, gikan sa IP address na $1) naghagad nin sarong bagong sekretong panlaog para sa {{SITENAME}} ($4). Sarong temporaryong sekretong panlaog para sa paragamit "$2" an pinagmukna asin pinagtuytoy na magin "$3". Kun iyo ini an saimong katuyuhan, kaipuhan mong maglaog asin magpili nin sarong bagong sekretong panlaog ngunyan.
 An saimong temporaryong sekretong panlaog mapapaso sa laog nin {{PLURAL:$5|sarong aldaw|$5 aldaw}}. 
@@ -655,7 +651,7 @@ Kun gustuhon mong itao ini, ini paggagamiton sa pagtatao nin pagkakabistohan kan
 'user-mail-no-body' => 'Nagprubar na magpadara nin e-surat na mayong laman o daeng kanultulan na halipot an hawak.',
 
 # Change password dialog
-'resetpass' => 'Ribayan an sekretong panlaog',
+'changepassword' => 'Ribayan an sekretong panlaog',
 'resetpass_announce' => 'Ika nakalaog na na igwang sarong temporaryong koda sa e-koreo.
 Tanganing tapuson an paglalaog, ika kaipong magkaag nin sarong baguhon na sekretong panlaog digdi:',
 'resetpass_text' => '<!-- Magdagdag nin teksto digdi -->',
@@ -677,7 +673,7 @@ Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong s
 # Special:PasswordReset
 'passwordreset' => 'Pakibago kan sekretong panlaog',
 'passwordreset-text-one' => 'Kumpletuhon ining porma sa pagliwat otro kan saimong pasa-taramon.',
-'passwordreset-text-many' => '{{PLURAL:$1|Palamanan an saro sa mga kaaganan tanganing mailuwat-otro an saimong pasa-taramon.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Kaagi an saro sa mga kaaganan tanganing makaresibe nin sarong temporaryong pasa-taramon sa paagi kan e-surat.}}',
 'passwordreset-legend' => 'Pakibago kan sekretong panlaog',
 'passwordreset-disabled' => 'An pagbago kan sekretong panlaog pinagpundo sa wiking ini.',
 'passwordreset-emaildisabled' => 'E-surat na mga estima pinag-uruntok sa wiking ini.',
@@ -936,6 +932,8 @@ Igwa na kaini.',
 'invalid-content-data' => 'Imbalidong datos nin laman',
 'content-not-allowed-here' => '"$1" na laman dae pinagtutugutan sa pahina [[$2]]',
 'editwarning-warning' => 'Sa pagbaya kaining pahina magkakausa saimo na mawara an anuman na mga kaliwatan na saimong ginibo. Kun ika maglaog, mapuwede mong untukon ining patanid sa "Pagliliwat" na seksyon kan saimong mga kamuyahan.',
+'editpage-notsupportedcontentformat-title' => 'Kalamnan nin pormat bakong suportado',
+'editpage-notsupportedcontentformat-text' => 'An pormat nin kalamnan na $1 bakong suportado kan modelong kalamnan na $2.',
 
 # Content models
 'content-model-wikitext' => 'wiki-teksto',
@@ -1046,10 +1044,6 @@ Ika puwedeng makakatanaw kaining diff; mga detalye puwedeng mananagboan sa [{{fu
 'revisiondelete' => 'Paraon/bawion an mga pagpakaraháy',
 'revdelete-nooldid-title' => 'Imbalidong target nin pagbabago',
 'revdelete-nooldid-text' => 'Ika dae baya naghayag nin sarong target sa pagbabago tanganing gibohon ining punksyon, an ipinaghayag na pagbabago bako tabing eksistido, o ika nagpuprubar tanganing itago an presentend pagbabago.',
-'revdelete-nologtype-title' => 'Mayong tipo nin talaan na ipinagtao',
-'revdelete-nologtype-text' => 'Ika dae tabi nagpapahayag nin sarong tipo nin talaan tanganing gumibo kaining aksyon dagos.',
-'revdelete-nologid-title' => 'Imbalidong entrada sa talaan',
-'revdelete-nologid-text' => 'Ika dae tabi naghayag nin sarong target talaan nin pangyayari tanganing gumibo kaining punksyon o an pinaghayag na entrada dae tabi eksistido.',
 'revdelete-no-file' => 'An sagunson na pinaghayag dae tabi eksistido.',
 'revdelete-show-file-confirm' => 'Segurado ka tabi na gusto mo matanaw sarong pinagpurang pagbabago kan sagunson "<nowiki>$1</nowiki>" poon $2 sa $3?',
 'revdelete-show-file-submit' => 'Iyo tabi',
@@ -1083,8 +1077,6 @@ $1",
 'logdelete-failure' => "'''Talaan sa bisibilidad dae tabi nailapat:'''
 $1",
 'revdel-restore' => 'ribayan an bisibilidad',
-'revdel-restore-deleted' => 'pinagpurang mga pagbabago',
-'revdel-restore-visible' => 'lantad na mga pagbabago',
 'pagehist' => 'Pahinang historiya',
 'deletedhist' => 'Pinagpurang historiya',
 'revdelete-hide-current' => 'Napasalang pagtatago kan item petsado $2, $1: Iyo ini an presenteng pagbabago.
@@ -1164,12 +1156,8 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 # Search results
 'searchresults' => 'Resulta kan paghahánap',
 'searchresults-title' => 'Resulta kan paghahanap para sa "$1"',
-'searchresulttext' => 'Para sa iba pang impormasyon manonongod sa paghanap sa {{SITENAME}}, hilingon tabî an [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ika naghanap para sa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gabos na mga pahina na nagpopoon sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gabos na mga pahina na nakatakod sa "$1"]])',
-'searchsubtitleinvalid' => "Hinanap mo an '''$1'''",
 'toomanymatches' => 'Kadakol-dakol na angay an ipigbalik, probaran an ibang kahaputan',
 'titlematches' => 'Angay an título kan artíkulo',
-'notitlematches' => 'Mayong angay na título nin pahina',
 'textmatches' => 'Angay an teksto nin páhina',
 'notextmatches' => 'Mayong ángay na teksto nin páhina',
 'prevn' => 'an nakaagi{{PLURAL:$1|$1}}',
@@ -1178,10 +1166,8 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'nextn-title' => 'Sunod $1  {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Ipahiling $1  {{PLURAL:$1|resulta|mga resulta}} sa kada pahina',
 'viewprevnext' => 'Tanawon ($1{{int:pipe-separator}}$2)($3)',
-'searchmenu-legend' => 'Opsyon sa paghahanap',
 'searchmenu-exists' => "'''Igwa nin sarong pahina na pinagngaranan na \"[[:\$1]]\" sa wiking ini.'''",
 'searchmenu-new' => "'''Muknaon an pahina \"[[:\$1]]\" sa wiking ini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kilyawon an mga pahina sa paagi kainin enotang panigmit]]',
 'searchprofile-articles' => 'Mga pahina nin laog',
 'searchprofile-project' => 'Mga pahina nin Tabang asin Proyekto',
 'searchprofile-images' => 'Multimidya',
@@ -1202,21 +1188,16 @@ An mga detalye mapuwedeng matatagboan sa [{{fullurl:{{#Special:Log}}/delete|page
 'search-interwiki-default' => '$1 na mga resulta:',
 'search-interwiki-more' => '(dakol pa)',
 'search-relatedarticle' => 'Kauyon',
-'mwsuggest-disable' => 'Untokon an suhestiyon nin paghahanap',
 'searcheverything-enable' => 'Maghanap sa gabos na mga espasyong-ngaran',
 'searchrelated' => 'kauyon',
 'searchall' => 'gabós',
 'showingresults' => "Pigpapahiling sa babâ sagkod sa {{PLURAL:$1|'''1''' resulta|'''$1''' mga resulta}} poon sa #'''$2'''.",
 'showingresultsnum' => "Pigpapahiling sa babâ {{PLURAL:$3|'''1''' resulta|'''$3''' mga resulta}} poon sa #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' kan '''$3'''|Mga Resulta '''$1 - $2''' kan '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Notang Antabay''': An ibang espasyong-ngaran sana an pirmihang pinaghahanap.
-Prubaran na panigmitan an saimong kahaputan nin ''all:'' sa paghanap kan gabos na laog (kabali an mga pahina nin olay, mga templato, etc), o gamiton an pinagmawot na espasyong ngaran bilang enotang panigmit.",
 'search-nonefound' => 'Mayo nin mga resulta na panampok sa kahaputan.',
-'powersearch' => 'Adbansiyadong paghahanap',
 'powersearch-legend' => 'Adbansiyadong paghahanap',
 'powersearch-ns' => 'Maghanap sa mga espasyong-ngaran:',
 'powersearch-redir' => 'Listahan kan mga panukdong otro',
-'powersearch-field' => 'Hanápon an',
 'powersearch-togglelabel' => 'Pamili:',
 'powersearch-toggleall' => 'Gabos',
 'powersearch-togglenone' => 'Wara',
@@ -1228,7 +1209,7 @@ Prubaran na panigmitan an saimong kahaputan nin ''all:'' sa paghanap kan gabos n
 'preferences' => 'Mga kabòtan',
 'mypreferences' => 'Mga Kamuyahan ko',
 'prefs-edits' => 'Bilang kan mga hirá:',
-'changepassword' => 'Ribayan an sekretong panlaog',
+'prefsnologintext2' => 'Tabi man $1 tanganing maikaag an mga kamuyahan nin paragamit.',
 'prefs-skin' => "''Skin''",
 'skin-preview' => 'Tânawon',
 'datedefault' => 'Mayong kabôtan',
@@ -1251,13 +1232,11 @@ Prubaran na panigmitan an saimong kahaputan nin ''all:'' sa paghanap kan gabos n
 'prefs-email' => 'E-surat na mga pagpipilian',
 'prefs-rendering' => 'Hitsurahon',
 'saveprefs' => 'Itagama',
-'resetprefs' => 'Linigan an dae naitagamang mga kaliwatan',
 'restoreprefs' => 'Balikon an gabos na panugmad na mga panuytoy (sa gabos na mga seksyon)',
 'prefs-editing' => 'Pighihira',
 'rows' => 'Mga hilera:',
 'columns' => 'Mga taytay:',
 'searchresultshead' => 'Hanápon',
-'resultsperpage' => 'Mga tamà kada pahina:',
 'stub-threshold' => 'Kasagkoran kan <a href="#" class="stub">takod kan tambô</a> pigpopormato:',
 'stub-threshold-disabled' => 'Pinagpundo',
 'recentchangesdays' => 'Mga aldáw na ipapahilíng sa mga nakakaági pa sanáng pagbabàgó:',
@@ -1272,7 +1251,6 @@ An siisay man na makaaram kaini makakapagbasa kan saimong bantay-listahan, kaya
 'localtime' => 'Panlokal na oras:',
 'timezoneuseserverdefault' => 'Gamita an panugmad sa wiki ($1)',
 'timezoneuseoffset' => 'Iba pa (ihayag an pambawi)',
-'timezoneoffset' => 'Bawia¹:',
 'servertime' => 'Oras kan serbidor:',
 'guesstimezone' => "Bugtakan an ''browser''",
 'timezoneregion-africa' => 'Aprika',
@@ -1342,6 +1320,7 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'prefs-tokenwatchlist' => 'Paduos',
 'prefs-diffs' => 'Diffs',
 'prefs-help-prefershttps' => 'Ining kamuyahan magkaka-epekto sa masunod mong paglaog.',
+'prefs-tabs-navigation-hint' => 'Pantama: Ika makakagamit nin wala asin too na pansusing pana tanganing magnabigar sa tahaw kan mga tanda na yaon sa listahan nin mga panandaan.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'An e-koreo nagpapahiling na balido',
@@ -1527,12 +1506,15 @@ An saimong e-surat na adres dae ipagbuyagyag kunsoarin na an ibang paragamit mak
 'recentchanges-label-minor' => 'Ini saro sanang menor na pagliwat',
 'recentchanges-label-bot' => 'Ining pagliwat pinaghimo bilang sarong bot',
 'recentchanges-label-unpatrolled' => 'Ining pagliwat dae pa tabi pinagpatrolyahan',
-'rcnote' => "Yaon sa ibaba iyo {{PLURAL:$1|an '''1''' pagbabago|an mga huring '''$1''' mga pagbabago}} kan nakaaging huring {{PLURAL:$2|aldaw|'''$2''' mga aldaw}}, poon pa kan $5, $4.",
+'recentchanges-label-plusminus' => 'An kadakulaan nin pahina pinagliwat sa paagi kaining numero nin mga bayta',
+'recentchanges-legend-heading' => "'''Kabalaynan:'''",
+'recentchanges-legend-newpage' => '(hilngon man [[Special:NewPages|listahan kan mga baguhong pahina]])',
+'recentchanges-legend-plusminus' => "(''±saro-duwa-tolo'')",
 'rcnotefrom' => "Sa ibaba iyo an mga kaliwatan poon kan '''$2''' (sagkod sa '''$1''' na ipinapahiling).",
 'rclistfrom' => 'Ipahiling an baguhon na mga kaliwatan magpoon kan $1',
 'rcshowhideminor' => '$1 saradit na mga pagliwat',
 'rcshowhidebots' => '$1 mga gantaw',
-'rcshowhideliu' => '$1 nakalaog na mga paragamit',
+'rcshowhideliu' => '$1 rehistradong mga paragamit',
 'rcshowhideanons' => '$1 mga dae bistong paragamit',
 'rcshowhidepatr' => '$1 patrolyadong mga pagliwat',
 'rcshowhidemine' => '$1 sakong mga pagliliwat',
@@ -1978,6 +1960,7 @@ Ini ngunyan minatukdo-liwat pasiring sa [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|an interwiki|mga interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|takod|mga takod}}',
 'nmembers' => '$1 {{PLURAL:$1|miyembro|mga miyembro}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|miyembro|mga miyembro}}',
 'nrevisions' => '$1 {{PLURAL:$1|pagpakarhay|mga pagpakarhay}}',
 'nviews' => '$1 {{PLURAL:$1|hiling|mga hiling}}',
 'nimagelinks' => 'Ginamit sa $1 {{PLURAL:$1|pahina|mga pahina}}',
@@ -2016,10 +1999,8 @@ Ini ngunyan minatukdo-liwat pasiring sa [[$2]].',
 'protectedpages' => 'Mga protektadong pahina',
 'protectedpages-indef' => 'Daeng sagkod na proteksyon sana',
 'protectedpages-cascade' => 'Mga pasurunod na proteksyon sana',
-'protectedpagestext' => 'An mga minasunod na pahina protektado na ibalyó o hirahón',
 'protectedpagesempty' => 'Mayong pang páhina an napoprotehiran kaining mga parametros.',
 'protectedtitles' => 'Protektadong mga titulo',
-'protectedtitlestext' => 'An minasunod na mga titulo pinagprotektaran magpoon na muknaon',
 'protectedtitlesempty' => 'Mayong mga titulo sa presente an protektado kaining mga parametro.',
 'listusers' => 'Lista nin paragamit',
 'listusers-editsonly' => 'Ipahiling sana an mga paragamit na igwang mga pinagliwat',
@@ -2071,9 +2052,6 @@ Saimong mapasadit an patanaw sa paagi nin pagpipili nin sarong tipo nin talaan,
 'allpagesto' => 'Ipahiling an mga pahina na may tapos na:',
 'allarticles' => 'Gabos na mga pahina',
 'allinnamespace' => 'Gabos na mga páhina ($1 ngaran-espacio)',
-'allnotinnamespace' => 'Gabos na mga páhina (na wara sa $1 ngaran-espacio)',
-'allpagesprev' => 'Nakaagi',
-'allpagesnext' => 'Sunod',
 'allpagessubmit' => 'Dumanán',
 'allpagesprefix' => 'Ipahiling an mga pahinang may prefiho:',
 'allpagesbadtitle' => "Dai pwede an tinaong titulo kan páhina o may prefihong para sa ibang tataramon o ibang wiki. Pwede ser na igwa ining sarô o iba pang mga ''character'' na dai pwedeng gamiton sa mga titulo.",
@@ -2245,20 +2223,16 @@ Kontaka an paraliwat:
 e-surat: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Dae na magkakaigwa pa nin ibang pagpapaisi sa kaso na may kadagdagan pang mga pagbabago laen lang kun ika magbisita sa pahinang ini.
-Ika mapuwede man na makapagbago kan bandera nin pagpapaisi para sa gabos mong pinagbabantayan na mga pahina na yaon sa saimong bantay-listahan.
+Dae na magkakaigwa pa nin ibang pagpapaisi sa kaso na may kadagdagan pang aktibidad laen lang kun ika magbisita sa pahinang ini mantang ika nakalaog. Ika mapuwede man na makapagbago kan bandera nin pagpapaisi para sa gabos mong pinagbabantayan na mga pahina na yaon sa saimong bantay-listahan.
 
 An saimong mainamigong {{SITENAME}} sistema nin pagpapaisi
 
 --
-Sa pagbabago kan saimong e-surat na pagpapaising panuytoy, magbisita sa
-{{canonicalurl:{{#special:Mga Kagustuhan}}}}
+Sa pagbabago kan saimong e-surat na pagpapaising panuytoy, magbisita sa {{canonicalurl:{{#special:Mga Kagustuhan}}}}
 
-Sa pagbabago kan saimong bantay-listahang panuytoy, magbisita sa
-{{canonicalurl:{{#special:EditWatchlist}}}}
+Sa pagbabago kan saimong bantay-listahang panuytoy, magbisita sa {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Sa pagpura ka pahina gikan sa saimong bantay-listahan, magbisita sa
-$UNWATCHURL
+Sa pagpura ka pahina gikan sa saimong bantay-listahan, magbisita sa $UNWATCHURL
 
 Balik-simbag asin kadagdagang asistensiya:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
@@ -2300,6 +2274,7 @@ Hilingón tabì an $2 para mahiling an lista nin mga kaaagi pa sanang pagparà.'
 An pagpupura kan nasambit na mga pahina dae pinagtutugot tanganing maiwasan an aksidenteng pagka-antala kan {{SITENAME}}.',
 'delete-warning-toobig' => 'Ining pahina igwa nin dakulaong historiya sa pagliwat, minasobrang $1 {{PLURAL:$1|rebisyon|mga rebisyon}}.
 An pagpupura kaini mapuwedeng makapag-antala sa mga operasyon kan datos-sarayan kan {{SITENAME}}; magpadagos tabi na igwang pag-iingat.',
+'deleting-backlinks-warning' => "'''Patanid:''' An ibang mga pahina nakatakod sa pahina na muya mong pagpupuraon.",
 
 # Rollback
 'rollback' => 'Mga paghihira na pabalík',
@@ -2414,7 +2389,6 @@ binalik an na pagribay o hinalî sa archibo.',
 'undeletebtn' => 'Ibalik',
 'undeletelink' => 'hilngon/ibalik',
 'undeleteviewlink' => 'hilngon',
-'undeletereset' => 'Ipwesto giraray',
 'undeleteinvert' => 'Baliktada an pinilian',
 'undeletecomment' => 'An rason:',
 'undeletedrevisions' => '{{PLURAL:$1|1 rebisyon|$1 mga rebisyon}} ipinagbalik',
@@ -2503,7 +2477,6 @@ An pinakahuring entrada sa talaan nin pagbara nakahaya sa ibaba bilang reperensi
 'block' => 'Barahon an paragamit',
 'unblock' => 'Haleon an bara kan paragamit',
 'blockip' => 'Bagáton an paragamit',
-'blockip-title' => 'Barahon an paragamit',
 'blockip-legend' => 'Kubkuba an paragamit',
 'blockiptext' => 'Gamiton an pormularyo sa babâ para bagaton an pagsurat kan sarong espesipikong IP o ngaran nin parágamit.
 Dapat gibohon sana ini para maibitaran vandalismo, asin kompirmi sa [[{{MediaWiki:Policy-url}}|palakaw]].
@@ -2511,7 +2484,6 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
 'ipadressorusername' => 'direksyon nin IP o gahâ:',
 'ipbexpiry' => 'Pasó:',
 'ipbreason' => 'Rason:',
-'ipbreasonotherlist' => 'Ibang rason',
 'ipbreason-dropdown' => "*Mga komon na rason sa pagbagat
 ** Nagkakaag nin salang impormasyon
 ** Naghahalî nin mga laog kan páhina
@@ -2527,8 +2499,6 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
 'ipbsubmit' => 'Bagáton ining parágamit',
 'ipbother' => 'Ibang oras:',
 'ipboptions' => '2ng oras:2 hours,1ng aldaw:1 day,3ng aldaw:3 days,1ng semana:1 week,2ng semana:2 weeks,1ng bulan:1 month,3ng bulan:3 months,6 na bulan:6 months,1ng taon:1 year,daeng kasagkoran:infinite',
-'ipbotheroption' => 'iba',
-'ipbotherreason' => 'Iba/dugang na rasón:',
 'ipbhidename' => 'Tagoon an ngaran nin paragamit gikan sa mga pagliliwat asin mga listahan',
 'ipbwatchuser' => 'Bantayi ining gamit kan paragamit asin mga pahina nin olayan',
 'ipb-disableusertalk' => 'Pugulan ining paragamit na magliliwat kan saiyang sadireng pahina nin olayan habang ini barado',
@@ -2619,7 +2589,6 @@ Ini, baya, pinagkubkob bilang parte kan hidwas $2, na mapuwedeng daemakukubkob.'
 'sorbs_create_account_reason' => 'An saimong IP na estada pinaglista bilang sarong bukas na proksi sa laog kan DNSBL na ginagamit kan {{SITENAME}}.
 Ika dae makakamukna nin sarong panindog.',
 'xffblockreason' => 'An yaong IP adres sa laog nin X-Pinagtulod-Para sa kapamayuhan, dawa saimo o idtong proksing serbidor na saimong ginagamit, pinagkubkob. An orihinal na rason sa pagkubkob iyo na:$1',
-'cant-block-while-blocked' => 'Ika dae makakakubkob kan ibang mga paragamit mantang ika nakukubkob pa.',
 'cant-see-hidden-user' => 'An paragamit na pinagpubaran mong kubkubon pinagkubkob asin pinagtago na. Mala ta ika mayo nin karapatan na magtago nin paragamit, ika dae makakahiling or makakaliwat kan kinubkob na paragamit.',
 'ipbblocked' => 'Ika da makakakubkob or maghale nin kubkob sa ibang mga paragamit, nin huli ta ika mismo sa sadiri mo pinagkubkob na',
 'ipbnounblockself' => 'Ika dae pinagtutugutan na magkubkob kan sadiri mo',
@@ -2675,7 +2644,6 @@ pakipaseguro baya na ika nakakasabot sa mga konsekuwensiya kaini bago magpapadag
 Sa mga kasong iyan, kaipuhan mong ibalyo o isalak an páhina nin mano-mano kun boot mo.",
 'movearticle' => 'Ibalyó an pahina:',
 'moveuserpage-warning' => "'''Patanid:''' Ika magpopoon na magbalyo in sarong pahina nin paragamit. Pakitandaan tabi na an pahina sana na ipagbabalyo asin an paragamit '''dae''' maipagliliwat an pangaran.",
-'movenologin' => 'Mayô sa laog',
 'movenologintext' => 'Kaipuhan na rehistradong parágamit ka asin si [[Special:UserLogin|nakalaog]] tangarig makabalyó ka nin páhina.',
 'movenotallowed' => 'Mayô kang permiso na ibalyó an mga pahina sa wiki na ini.',
 'movenotallowedfile' => 'Ika mayo nin permiso na magbabalyo nin mga sagunson.',
@@ -2691,8 +2659,6 @@ Sa mga kasong iyan, kaipuhan mong ibalyo o isalak an páhina nin mano-mano kun b
 'articleexists' => 'Igwa nang pahina sa parehong pangaran, o dai pwede an pangaran na pigpilì mo.
 Magpilì tabì nin ibang pangaran.',
 'cantmove-titleprotected' => 'Ika dae makakapagbalyo nin pahina sa lokasyon na ini, nin huli ta an baguhon na titulo protektado na gikan sa pagmumukna',
-'talkexists' => "'''Ibinalyo na an mismong pahina, alagad dai naibalyo an pahina nin orolay ta igwa na kaini sa bàgong titulo. Pagsaroon tabì ining duwa nin mano-mano.'''",
-'movedto' => 'piglipat sa',
 'movetalk' => 'Ibalyo an pahinang orolayan na nakaasociar',
 'move-subpages' => 'Ibalyo an mga sub-pahina (sagkod sa $1)',
 'move-talk-subpages' => 'Ibalyo an mga sub-pahina kan pahina nin olay (sagkod sa $1)',
@@ -3062,7 +3028,7 @@ Sa pagpapa-andar kaini, an saimong sistema mapupuwedeng makompromiso.",
 'svg-long-desc' => 'SVG na sagunson, nangangaranan nin $1 x $2 na mga piksel, sukol nin sagunson: $3',
 'svg-long-desc-animated' => 'Animatadong SVG na sagunson, nangangaranang $1 x $2 piksel, kadakulaan nin sagunson: $3',
 'svg-long-error' => 'Imbalidong SVG na sagunson: $1',
-'show-big-image' => 'Todong resolusyon',
+'show-big-image' => 'Orihinal na sagunson',
 'show-big-image-preview' => 'Sukol kaining patanaw: $1.',
 'show-big-image-other' => 'Ibang {{PLURAL:$2|resolusyon|mga resoluyon}}: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
@@ -3529,15 +3495,10 @@ Sublokas kan siyudad na ipinahiling',
 'exif-urgency-high' => 'Halangkawon ($1)',
 'exif-urgency-other' => 'Prayoridad na pakahulugan nin paragamit ($1)',
 
-# External editor support
-'edit-externally' => 'Liwaton ining sagunson na pinaggagamit an panluwasan na aplikasyon',
-'edit-externally-help' => '(Hilngon an [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa kadagdagang impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'gabos',
 'namespacesall' => 'gabós',
 'monthsall' => 'gabos',
-'limitall' => 'gabos',
 
 # Email address confirmation
 'confirmemail' => "Kompirmaron an ''e''-surat",
@@ -3561,7 +3522,6 @@ Paradarang surat pinagbalik: $1',
 'confirmemail_success' => 'An saimong e-surat na adres kumpirmado na.
 Puwede ka na ngunyan [[Special:UserLogin|maglaog]] asin maogmang maggamit kan wiki.',
 'confirmemail_loggedin' => "Nakompirmar na an saimong ''e''-surat.",
-'confirmemail_error' => 'May nasalâ sa pagtagama kan saimong kompirmasyon.',
 'confirmemail_subject' => "kompirmasyón {{SITENAME}} kan direksyón nin ''e''-surat",
 'confirmemail_body' => 'Sarong tawo, mapuwedeng ika, gikan sa IP adres na $1,
 nagrehistro nin sarong panindog "$2" na igwa kaining e-surat na adres sa {{SITENAME}}.
@@ -3636,6 +3596,11 @@ Ikonpirmar tabi na talagang gusto mong gibohon giraray ining pahina.",
 'imgmultigo' => 'Dumanán!',
 'imgmultigoto' => 'Magpasiring sa pahina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(panugmad na lengguwahe)',
+'img-lang-info' => 'Giboha ining imahe sa $1. $2',
+'img-lang-go' => 'Dumani',
+
 # Table pager
 'ascending_abbrev' => 'skt',
 'descending_abbrev' => 'ba',
@@ -3714,7 +3679,15 @@ Pwede mo man [[Special:EditWatchlist|gamiton an standard editor]].',
 'version-hook-name' => 'Ngaran kan pangawil',
 'version-hook-subscribedby' => 'Pinaghaguhot ni',
 'version-version' => '(Bersyon na $1)',
-'version-license' => 'Lisensiya',
+'version-license' => 'Lisensiya kan MediaWiki',
+'version-ext-license' => 'Lisensiya',
+'version-ext-colheader-name' => 'Ekstensyon',
+'version-ext-colheader-version' => 'Bersyon',
+'version-ext-colheader-license' => 'Lisensiya',
+'version-ext-colheader-description' => 'Deskripsyon',
+'version-ext-colheader-credits' => 'Mga Kagsurat',
+'version-license-title' => 'Lisensiya para sa $1',
+'version-license-not-found' => 'Mayong detalyadong impormasyon sa lisensiya an nanumpungan para sa ekstensyon na ini.',
 'version-poweredby-credits' => "An wiking ini pinagpagana kan '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'mga iba pa',
 'version-poweredby-translators' => 'translatewiki.net na mga paradakit-taramon',
@@ -3732,13 +3705,14 @@ Ika dapat na nakapagresibe na kan [{{SERVER}}{{SCRIPTPATH}}/COPYING sarong kopya
 'version-entrypoints-header-url' => 'Kilyawan',
 
 # Special:Redirect
-'redirect' => 'Palikwatong sa paagi nin sagunson, paragamit, or rebisyon kan ID',
+'redirect' => 'Palikwata sa paagi nin sagunson, paragamit, pahina o rebisyon kan ID',
 'redirect-legend' => 'Palikwatong pasiring sa sarong sagunson o pahina',
-'redirect-summary' => 'Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an ngaran kan sagunson), sarong pahina (ipinagtao an sarong rebisyon kan ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinaggamitan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an pangaran nin sagunson), sarong pahina (ipinagtao an sarong rebisyon nin ID o pahina nin ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinagkagamitan: [[{{#Special:Redirect}}/sagunson/Example.jpg]], [[{{#Special:Redirect}}/rebisyon/328429]], or [[{{#Special:Redirect}}/paragamit/101]].',
 'redirect-submit' => 'Dumani',
 'redirect-lookup' => 'Hanapon mo',
 'redirect-value' => 'Halaga:',
 'redirect-user' => 'ID nin Paragamit',
+'redirect-page' => 'ID kan pahina',
 'redirect-revision' => 'Rebisyon kan Pahina',
 'redirect-file' => 'Ngaran nin Sagunson',
 'redirect-not-exists' => 'Halaga dae nanagboan',
@@ -3756,8 +3730,9 @@ Ika dapat na nakapagresibe na kan [{{SERVER}}{{SCRIPTPATH}}/COPYING sarong kopya
 
 # Special:SpecialPages
 'specialpages' => 'Mga espesyal na pahina',
-'specialpages-note' => '* Normal espesyal na mga pahina.
-* <span class="mw-specialpagerestricted">Restriktadong espesyal na mga pahina.</span>',
+'specialpages-note-top' => 'Balaynan',
+'specialpages-note' => '* Normal sa espesyal na mga pahina.
+* <span class="mw-specialpagerestricted"> Restriktadong espesyal na mga pahina.</span>',
 'specialpages-group-maintenance' => 'Mga talaan nin pagpangataman',
 'specialpages-group-other' => 'Iba pang mga espesyal na pahina',
 'specialpages-group-login' => 'Maglaog / magmukna nin panindog',
@@ -3804,7 +3779,6 @@ Ika dapat na nakapagresibe na kan [{{SERVER}}{{SCRIPTPATH}}/COPYING sarong kopya
 
 # Special:ComparePages
 'comparepages' => 'Ikumpara an mga pahina',
-'compare-selector' => 'Ikumpara an mga rebisyon nin pahina',
 'compare-page1' => 'Pahina 1',
 'compare-page2' => 'Pahina 2',
 'compare-rev1' => 'Rebisyon 1',
@@ -3932,6 +3906,7 @@ Kun bako man, ika makakagamit nin sayon na porma sa ibaba. An saimong komento id
 'api-error-overwrite' => 'An salambawan na sarong eksistido nang sagunson dae pinagtutugutan.',
 'api-error-stashfailed' => 'Panlaog na kasalaan: An serbidor nagpalya sa pagsaray kan temporaryong sagunson.',
 'api-error-publishfailed' => 'Panlaog na kasalaan: An serbidor nagpalya na ipublikar an temporaryong sagunson.',
+'api-error-stasherror' => 'Nagkaigwa nin kasalaan mantang ikinakarga an sagunson sa sarayan.',
 'api-error-timeout' => 'An serbidor dae nakapagsimbag sa laog kan pinaghunang panahon.',
 'api-error-unclassified' => 'May dae midbid na kasalaan an nangyari.',
 'api-error-unknown-code' => 'Dae midbid na kasalaan: "$1".',
@@ -3971,8 +3946,17 @@ Kun bako man, ika makakagamit nin sayon na porma sa ibaba. An saimong komento id
 'limitreport-expensivefunctioncount' => 'Bilang kan hiro nin mamahalon na parabangay',
 
 # Special:ExpandTemplates
+'expandtemplates' => 'Bigwakon an mga panguyog',
+'expand_templates_intro' => 'Ining espesyal na pahina minakua nin teksto asin minabigwak kan gabos na mga panguyog na yaon kaini na paoro-otro.
+Ini man minabigwak sa punksyon kan suportadong parabangay na arog kan <code><nowiki>{{</nowiki>#language:…}}</code> asin mga kapilyangan arog kan <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
+Sa katunayan, ini minapabigwak kan gabos na bagay na yaon sa mga dobleng panandayan.',
+'expand_templates_title' => 'Kontekstong titulo, para sa {{FULLPAGENAME}}, ibpa.:',
+'expand_templates_input' => 'Ikaag an teksto.',
 'expand_templates_output' => 'Resulta',
+'expand_templates_xml_output' => 'Kinaluwasan na XML',
 'expand_templates_remove_comments' => 'Tanggalon an mga komento',
+'expand_templates_remove_nowiki' => 'Pugulan an mga taktak na <nowiki> sa resulta',
+'expand_templates_generate_xml' => 'Ipahiling an panlunhay na kahoy nin XML',
 'expand_templates_preview' => 'Patânaw',
 
 );
index 1669855..fc79d1c 100644 (file)
@@ -113,7 +113,6 @@ $messages = array(
 'tog-minordefault' => 'Пачынаць кожную праўку як дробную',
 'tog-previewontop' => 'Папярэдні паказ — над рэдактарскім полем',
 'tog-previewonfirst' => 'Папярэдні паказ пры першай праўцы',
-'tog-nocache' => 'Без кэшу старонак у браўзеры',
 'tog-enotifwatchlistpages' => 'Слаць мне эл.пошту, калі мяняецца старонка ў маім спісе назіранага',
 'tog-enotifusertalkpages' => 'Слаць эл.пошту пра мены ў маёй размоўнай старонцы',
 'tog-enotifminoredits' => 'Слаць эл.пошту пра дробныя праўкі',
@@ -247,7 +246,6 @@ $messages = array(
 'qbedit' => 'Правіць',
 'qbpageoptions' => 'Гэтая старонка',
 'qbmyoptions' => 'Свае старонкі',
-'qbspecialpages' => 'Адмысловыя старонкі',
 'faq' => 'ЧАПЫ',
 'faqpage' => 'Project:ЧАПЫ',
 
@@ -451,10 +449,6 @@ $1',
 'perfcached' => 'Гэта ўзятыя з кэшу звесткі, і яны могуць не быць актуальнымі. У кэшы захоўваецца не больш за {{PLURAL:$1|адзін вынік|$1 вынікі|$1 вынікаў}}.',
 'perfcachedts' => 'Наступныя звесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} не больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
 'querypage-no-updates' => 'Немагчыма абнавіць паказаныя звесткі, таму што зараз абнаўленні гэтай старонкі не дазволены.',
-'wrong_wfQuery_params' => 'Недапушчальныя параметры wfQuery()<br />
-
-Функцыя: $1<br />
-Зварот: $2',
 'viewsource' => 'Паказаць зыходны тэкст',
 'viewsource-title' => 'Прагляд зыходнага тэксту старонкі $1',
 'actionthrottled' => 'Дзеянне прыгашана',
@@ -579,7 +573,7 @@ $2',
 'user-mail-no-addy' => 'Паспрабаваў адправіць электронны ліст без адрасу электроннай пошты',
 
 # Change password dialog
-'resetpass' => 'Змяніць пароль',
+'changepassword' => 'Пароль',
 'resetpass_announce' => 'Вы ўвайшлі ў сістэму пад тымчасовым паролем, прысланым эл.поштай. Каб правільна аформіць уваход, належыць вызначыць новы пароль вось тут:',
 'resetpass_header' => 'Змяніць пароль рахунку',
 'oldpassword' => 'Стары пароль:',
@@ -926,10 +920,6 @@ $2
 'revisiondelete' => 'Сцерці/аднавіць версіі',
 'revdelete-nooldid-title' => 'Недапушчальная мэтавая версія',
 'revdelete-nooldid-text' => 'Не выбрана мэтавая версія (ці версіі) дзеля выканання гэтай функцыі, азначаная версія не існуе, або вы спрабуеце схаваць актуальную версію.',
-'revdelete-nologtype-title' => 'Не выбраны тып журнала',
-'revdelete-nologtype-text' => 'Вы не выбралі тыпу журнала дзеля гэтага дзеяння.',
-'revdelete-nologid-title' => 'Некарэктны запіс у журнале',
-'revdelete-nologid-text' => 'Вы або не вызначылі падзеі ў мэтавым журнале, з якой жадаеце правесці гэтае дзеянне, або вызначаны запіс не існуе.',
 'revdelete-no-file' => 'Пазначаны файл не існуе.',
 'revdelete-show-file-confirm' => 'Ці сапраўды паказаць сцёртую версію файла "<nowiki>$1</nowiki>" ($2 $3)?',
 'revdelete-show-file-submit' => 'Так',
@@ -962,8 +952,6 @@ $1",
 'logdelete-failure' => "'''Бачнасць журнала не ўсталявана:'''
 $1",
 'revdel-restore' => 'Памяняць бачнасць',
-'revdel-restore-deleted' => 'Выдаленыя змены',
-'revdel-restore-visible' => 'Бачныя змены',
 'pagehist' => 'Гісторыя старонкі',
 'deletedhist' => 'Сцёртая гісторыя',
 'revdelete-hide-current' => 'Памылка пры скрыванні складніка з датай $2, $1: таму што гэта актуальная версія, 
@@ -1033,12 +1021,8 @@ $1",
 # 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}}',
@@ -1047,10 +1031,8 @@ $1",
 'nextn-title' => 'Наступны{{PLURAL:$1| вынік|я $1 вынікі(аў)}}',
 'shown-title' => 'Паказваць $1 {{PLURAL:$1|вынік|вынікі(аў)}} на старонку',
 'viewprevnext' => 'Гл. ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Настройкі пошуку',
 'searchmenu-exists' => "'''На вікі ёсць старонка \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Стварыць на гэтай вікі старонку \"[[:\$1]]\"'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Паказаць старонкі з гэтым прэфіксам]]',
 'searchprofile-articles' => 'Артыкулы',
 'searchprofile-project' => 'Старонкі даведкі і праекта',
 'searchprofile-images' => 'Мультымедыя',
@@ -1071,20 +1053,16 @@ $1",
 'search-interwiki-default' => 'вынікі з $1:',
 'search-interwiki-more' => '(яшчэ)',
 'search-relatedarticle' => 'Дачыняюцца*',
-'mwsuggest-disable' => 'Не паказваць прапановаў AJAX',
 'searcheverything-enable' => 'Пошук ва ўсіх прасторах назваў',
 'searchrelated' => 'маюць дачыненне',
 'searchall' => 'усе',
 'showingresults' => "Ніжэй паказаны да {{PLURAL:$1|'''$1''' выніку|'''$1''' вынікаў}}, пачынаючы з нумару '''$2'''.",
 'showingresultsnum' => "Ніжэй паказаны{{PLURAL:$3| '''1''' вынік|я '''$3''' вынікаў}}, пачынаючы з нумару #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Вынік '''$1''' из '''$3'''|Вынікі '''$1 — $2''' из '''$3'''}} для '''$4'''",
-'nonefound' => "'''Увага''': прадвызначана пошук вядзецца толькі ў некаторых прасторах назваў. Паспрабуйце прыпісаць да свайго звароту пачатковае ''all:'', каб шукаць ва ўсім змесце (у размовах, шаблонах і г.д.), або прыпішыце да звароту патрэбную прастору назваў.",
 'search-nonefound' => 'Нічога не было знойдзена.',
-'powersearch' => 'Знайсці',
 'powersearch-legend' => 'Падрабязны пошук',
 'powersearch-ns' => 'Шукаць у прасторах назваў:',
 'powersearch-redir' => 'Паказваць перасылкі (рэдырэкты)',
-'powersearch-field' => 'Што шукаць',
 'powersearch-togglelabel' => 'Праверце:',
 'powersearch-toggleall' => 'Усе',
 'powersearch-togglenone' => 'Няма',
@@ -1095,7 +1073,6 @@ $1",
 'preferences' => 'Настройкі',
 'mypreferences' => 'Настройкі',
 'prefs-edits' => 'Колькасць правак:',
-'changepassword' => 'Пароль',
 'prefs-skin' => 'Вокладка',
 'skin-preview' => 'перадпаказ',
 'datedefault' => 'Не вызначана',
@@ -1117,13 +1094,11 @@ $1",
 'prefs-email' => 'Эл.пошта',
 'prefs-rendering' => 'Від',
 'saveprefs' => 'Запісаць',
-'resetprefs' => 'Да пачатковых',
 'restoreprefs' => 'Аднавіць усе прадвызначэнні',
 'prefs-editing' => 'Праца',
 'rows' => 'Радкі:',
 'columns' => 'Калонкі:',
 'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Вынікаў на старонку:',
 'stub-threshold' => 'Парог для паказу спасылкі <a href="#" class="stub">як на пачатковы артыкул</a> (у байтах):',
 'stub-threshold-disabled' => 'Не ўключана',
 'recentchangesdays' => 'За колькі дзён паказваць {{lc:{{:{{ns:mediawiki}}:recentchanges/be}}}}:',
@@ -1135,7 +1110,6 @@ $1",
 'localtime' => 'Мясцовы час:',
 'timezoneuseserverdefault' => 'Карыстацца настаўленнямі серверу ($1)',
 'timezoneuseoffset' => 'Іншая розніца',
-'timezoneoffset' => 'Розніца¹:',
 'servertime' => 'Час на серверы:',
 'guesstimezone' => 'Як у браўзеры',
 'timezoneregion-africa' => 'Афрыка',
@@ -1365,7 +1339,6 @@ $1",
 'recentchanges-label-bot' => 'Праўка была зробленая праграмай-робатам',
 'recentchanges-label-unpatrolled' => 'Праўка яшчэ не атрымала адзнакі ўхваленасці (за ёй не сочыць "патруль")',
 'recentchanges-legend-newpage' => '$1 - новая старонка',
-'rcnote' => "Ніжэй паказан{{PLURAL:$1|а '''1''' змяненне|ыя апошнія '''$1''' змяненняў}} за апошні{{PLURAL:$2| дзень|я '''$2''' дзён}}, паводле стану на $5, $4.",
 'rcnotefrom' => 'Ніжэй знаходзяцца змены з <b>$2</b> (да <b>$1</b> на старонку).',
 'rclistfrom' => 'Паказаць змены з $1',
 'rcshowhideminor' => '$1 дробных правак',
@@ -1802,10 +1775,8 @@ $1',
 'protectedpages' => 'Старонкі пад аховай',
 'protectedpages-indef' => 'Толькі бестэрміновыя аховы',
 'protectedpages-cascade' => 'Толькі каскадныя засцераганні',
-'protectedpagestext' => 'Гэтыя старонкі ахоўваюцца ад правак і пераносаў',
 'protectedpagesempty' => 'Ніякія старонкі такім чынам не ахоўваюцца.',
 'protectedtitles' => 'Назвы пад аховай',
-'protectedtitlestext' => 'Гэтыя назвы ахоўваюцца ад стварэння',
 'protectedtitlesempty' => 'Няма назваў, якія зараз бы ахоўваліся з такімі параметрамі.',
 'listusers' => 'Усе ўдзельнікі',
 'listusers-editsonly' => 'Толькі ўдзельнікі, якія маюць праўкі',
@@ -1855,9 +1826,6 @@ $1',
 'allpagesto' => 'Паказваць старонкі, з якіх апошняя:',
 'allarticles' => 'Усе артыкулы',
 'allinnamespace' => 'Усе артыкулы (прастора назваў $1)',
-'allnotinnamespace' => 'Усе старонкі (не ў прасторы назваў $1)',
-'allpagesprev' => 'Папярэдняе',
-'allpagesnext' => 'Наступнае',
 'allpagessubmit' => 'Пераход',
 'allpagesprefix' => 'Паказваць старонкі з прэфіксам:',
 'allpagesbadtitle' => 'Гэтая назва старонкі недапушчальная або ўтрымлівае між-моўны або між-вікавы прэфікс. Магчыма, у назве ёсць знак ці знакі, якія нельга ўжываць у назвах.',
@@ -1986,7 +1954,7 @@ $1',
 'watchmethod-list' => 'правяраем наяўнасць нядаўніх правак ў назіраных старонках',
 'watchlistcontains' => 'У вашым спісе назірання $1 {{PLURAL:$1|старонка|старонкі|старонак}}.',
 'iteminvalidname' => "Праблема са складнікам '$1', недапушчальная назва...",
-'wlnote' => "Ніжэй {{PLURAL:$1|паказана апошняе $1 змена|паказаны апошнія $1 змены|паказаны апошнія $1 змен}} за {{PLURAL:$2|апошнюю|апошнія|апошнія}} '''$2''' {{plural:$2|гадзіну|гадзіны|гадзіны}}, на момант часу $3 $4.",
+'wlnote' => "Ніжэй {{PLURAL:$1|паказана апошняе $1 змена|паказаны апошнія $1 змены|паказаны апошнія $1 змен}} за {{PLURAL:$2|апошнюю|апошнія|апошнія}} '''$2''' {{PLURAL:$2|гадзіну|гадзіны|гадзіны}}, на момант часу $3 $4.",
 'wlshowlast' => 'Паказваць апошнія $1 гадз. $2 дзён $3',
 'watchlist-options' => 'Магчымасці назірання',
 
@@ -2168,7 +2136,6 @@ $UNWATCHURL
 'undeletebtn' => 'Аднавіць',
 'undeletelink' => 'паказаць/аднавіць',
 'undeleteviewlink' => 'Праглядзець',
-'undeletereset' => 'Да пачатковага',
 'undeleteinvert' => 'Перавярнуць выбранае',
 'undeletecomment' => 'Прычына:',
 'undeletedrevisions' => 'Адноўлен{{PLURAL:$1|а 1 версія|ыя $1 версій}}',
@@ -2255,7 +2222,6 @@ $1',
 'block' => 'Заблакаваць удзельніка',
 'unblock' => 'Разблакаваць удзельніка',
 'blockip' => 'Заблакаваць удзельніка',
-'blockip-title' => 'Заблакаваць удзельніка',
 'blockip-legend' => 'Заблакаваць удзельніка',
 'blockiptext' => 'Гэты фармуляр дазваляе заблакаваць магчымасць запісу для пэўнага адрасу IP ці імя ўдзельніка.
 Гэта трэба рабіць толькі дзеля засцерагання ад вандалізму і ў адпаведнасці з [[{{MediaWiki:Policy-url}}|правіламі]].
@@ -2263,7 +2229,6 @@ $1',
 'ipadressorusername' => 'IP-адрас ці імя ўдзельніка:',
 'ipbexpiry' => 'Згасае:',
 'ipbreason' => 'Прычына:',
-'ipbreasonotherlist' => 'Іншая прычына',
 'ipbreason-dropdown' => '*Звычайныя прычыны блоку
 ** Упісванне несапраўднай інфармацыі
 ** Сціранне інфармацыі са старонак
@@ -2279,8 +2244,6 @@ $1',
 'ipbsubmit' => 'Заблакаваць удзельніка',
 'ipbother' => 'Іншы час',
 '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',
-'ipbotheroption' => 'іншае',
-'ipbotherreason' => 'Іншая/дадатковая прычына:',
 'ipbhidename' => 'Не паказваць імя ўдзельніка ў гісторыях правак і ў спісах',
 'ipbwatchuser' => 'Назіраць уласную і размоўную старонкі гэтага ўдзельніка',
 'ipb-disableusertalk' => 'Забараніць гэтаму ўдзельніку рэдагаваць сваю старонку размоў падчас блакіроўкі',
@@ -2367,7 +2330,6 @@ $1',
 'sorbsreason' => 'Ваш адрас IP знаходзіцца ў спісе забароненых адкрытых проксі, якім карыстаецца {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Ваш адрас IP знаходзіцца ў спісе забароненых адкрытых проксі, якім карыстаецца {{SITENAME}}.
 Вы не можаце рэгістравацца',
-'cant-block-while-blocked' => 'Вы не можаце блакаваць іншых, пакуль заблакаваныя самі.',
 'cant-see-hidden-user' => 'Удзельнік, якога вы спрабуеце заблакіраваць, ужо заблакіраваны і схаваны. Паколькі ў вас няма дазволу на працу па схаванні ўдзельнікаў, вы не можаце прагледзець ці змяніць гэту блакіроўку.',
 'ipbblocked' => 'Вы не можаце блакіраваць ці разблакіраваць іншых удзельнікаў, бо вы самі заблакіраваны',
 'ipbnounblockself' => 'Вы не можаце разблакіраваць самога сябе',
@@ -2425,7 +2387,6 @@ $1',
 У такіх выпадках, калі гэта неабходна, трэба пераносіць або аб'ядноўваць старонку размовы самастойна.",
 'movearticle' => 'Перанесці старонку',
 'moveuserpage-warning' => "'''Увага.''' Вы збіраецеся пераназваць старонку ўдзельніка. Калі ласка, звернеце ўвагу, што пераназвана будзе толькі старонка, удзельнік '''не''' будзе пераназваны.",
-'movenologin' => 'Не зроблены ўваход у сістэму',
 'movenologintext' => 'Вы павінны быць зарэгістраваным удзельнікам, і [[Special:UserLogin|ўвайсці ў сістэму]], каб пераносіць старонкі.',
 'movenotallowed' => 'Вам не дазволена пераносіць старонак.',
 'movenotallowedfile' => 'Вы не маеце дазволу пераносіць файлы.',
@@ -2442,8 +2403,6 @@ $1',
 вамі выбрана недапушчальнае імя.
 Выберыце іншае імя.',
 'cantmove-titleprotected' => 'Немагчыма перанесці старонку пад гэтую назву, таму што назва ахоўваецца ад стварэння',
-'talkexists' => "'''Старонка была паспяхова перанесена, але не ўдалося перанесці яе старонку размовы, таму што размова пад новай назвай ужо існуе. Вам давядзецца аб'яднаць размоўныя старонкі самастойна.'''",
-'movedto' => 'перанесена ў',
 'movetalk' => 'Перанесці таксама старонку размовы.',
 'move-subpages' => 'Таксама перанесці пад-старонкі (да ўзроўню $1)',
 'move-talk-subpages' => 'Таксама перанесці пад-старонкі размовы (да ўзроўню $1)',
@@ -3203,15 +3162,10 @@ $1',
 'exif-urgency-high' => 'Высокая ($1)',
 'exif-urgency-other' => 'Вызначаны карыстальнікам прыярытэт ($1)',
 
-# External editor support
-'edit-externally' => 'Правіць файл у вонкавай праграме',
-'edit-externally-help' => '(Гл. падрабязней [https://www.mediawiki.org/wiki/Manual:External_editors пра настаўлянне старонніх праграм-рэдактараў])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'усе',
 'namespacesall' => 'усе',
 'monthsall' => 'усе',
-'limitall' => 'усе',
 
 # Email address confirmation
 'confirmemail' => 'Пацвердзіць адрас эл.пошты',
@@ -3229,7 +3183,6 @@ $1',
 'confirmemail_needlogin' => 'Вам трэба зрабіць $1 каб пацвердзіць свой адрас эл.пошты.',
 'confirmemail_success' => 'Ваш адрас эл.пошты быў пацверджаны. Можаце [[Special:UserLogin|ўваходзіць у сістэму]] і працаваць з вікі.',
 'confirmemail_loggedin' => 'Зараз ваш адрас эл.пошты стаўся пацверджаным.',
-'confirmemail_error' => 'Неакрэсленая памылка пры запісванні пацверджання.',
 'confirmemail_subject' => 'Пацверджанне адрасу эл.пошты для {{SITENAME}}',
 'confirmemail_body' => 'Нехта (магчыма, што і вы — з адрасу IP $1) завёў рахунак "$2" на пляцоўцы {{SITENAME}}, паказваючы гэты адрас эл.пошты як свой.
 
@@ -3445,7 +3398,6 @@ MediaWiki распаўсюджваецца, спадзеючыся на прыд
 
 # Special:ComparePages
 'comparepages' => 'Параўнанне старонак',
-'compare-selector' => 'Параўнанне версій старонкі',
 'compare-page1' => 'Старонка 1',
 'compare-page2' => 'Старонка 2',
 'compare-rev1' => 'Версія 1',
index bbdee74..09cbae9 100644 (file)
@@ -65,7 +65,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Стварыць_рахунак' ),
        'Deadendpages'              => array( 'Тупіковыя_старонкі' ),
        'DeletedContributions'      => array( 'Выдалены_ўнёсак' ),
-       'Disambiguations'           => array( 'Неадназначнасьці' ),
        'DoubleRedirects'           => array( 'Двайныя_перанакіраваньні' ),
        'Emailuser'                 => array( 'Даслаць_ліст' ),
        'Export'                    => array( 'Экспарт' ),
@@ -284,7 +283,6 @@ $messages = array(
 'tog-minordefault' => 'Па змоўчаньні пазначаць усе зьмены дробнымі',
 'tog-previewontop' => 'Паказваць папярэдні прагляд старонкі над полем рэдагаваньня',
 'tog-previewonfirst' => 'Папярэдні прагляд пры першым рэдагаваньні',
-'tog-nocache' => 'Адключыць кэшаваньне старонак у браўзэры',
 'tog-enotifwatchlistpages' => 'Паведамляць мне праз электронную пошту пра зьмены старонак і файлаў у маім сьпісе назіраньня',
 'tog-enotifusertalkpages' => 'Паведамляць праз электронную пошту пра зьмены маёй старонкі гутарак',
 'tog-enotifminoredits' => 'Паведамляць праз электронную пошту таксама пра дробныя зьмены старонак і файлаў',
@@ -389,7 +387,7 @@ $messages = array(
 'subcategories' => 'Падкатэгорыі',
 'category-media-header' => 'Файлы ў катэгорыі «$1»',
 'category-empty' => "''Гэтая катэгорыя ня ўтрымлівае ні старонак, ні файлаў.''",
-'hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}}',
+'hidden-categories' => '{{PLURAL:$1|1=Схаваная катэгорыя|Схаваныя катэгорыі}}',
 'hidden-category-category' => 'Схаваныя катэгорыі',
 'category-subcat-count' => '{{PLURAL:$2|Гэтая катэгорыя зьмяшчае наступную падкатэгорыю.|Гэтая катэгорыя зьмяшчае {{PLURAL:$1|наступную $1 падкатэгорыю|наступныя $1 падкатэгорыі|наступныя $1 падкатэгорыяў}} з $2 агулам.}}',
 'category-subcat-count-limited' => 'У гэтай катэгорыі $1 {{PLURAL:$1|падкатэгорыя|падкатэгорыі|падкатэгорыяў}}.',
@@ -420,7 +418,6 @@ $messages = array(
 'qbedit' => 'Рэдагаваць',
 'qbpageoptions' => 'Гэтая старонка',
 'qbmyoptions' => 'Мае старонкі',
-'qbspecialpages' => 'Спэцыяльныя старонкі',
 'faq' => 'Частыя пытаньні',
 'faqpage' => 'Project:Частыя пытаньні',
 
@@ -528,7 +525,7 @@ $1',
 
 'badaccess' => 'Памылка доступу',
 'badaccess-group0' => 'Вам не дазволена выканаць запытанае Вамі дзеяньне.',
-'badaccess-groups' => 'Запытанае Вамі дзеяньне дазволенае толькі ўдзельнікам {{PLURAL:$2|з групы|адной з групаў:}} $1.',
+'badaccess-groups' => 'Запытанае Вамі дзеяньне дазволенае толькі ўдзельнікам {{PLURAL:$2|1=з групы|адной з групаў:}} $1.',
 
 'versionrequired' => 'Патрабуецца MediaWiki вэрсіі $1',
 'versionrequiredtext' => 'Для карыстаньня гэтай старонкай патрабуецца MediaWiki вэрсіі $1.
@@ -538,10 +535,10 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Атрымана з «$1»',
 'youhavenewmessages' => 'Вы атрымалі $1 ($2).',
-'youhavenewmessagesfromusers' => 'Вы атрымалі $1 ад {{PLURAL:$3|іншага ўдзельніка|$3 удзельнікаў}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Вы}} атрымалі $1 ад {{PLURAL:$3|1=іншага ўдзельніка|$3 удзельнікаў}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы атрымалі $1 ад некалькіх удзельнікаў ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|новае паведамленьне|новыя паведамленьні}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|апошняя зьмена|апошнія зьмены}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=новае паведамленьне|999=новыя паведамленьні}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=апошняя зьмена|999=апошнія зьмены}}',
 'youhavenewmessagesmulti' => 'Вы атрымалі новыя паведамленьні на $1',
 'editsection' => 'рэдагаваць',
 'editold' => 'рэдагаваць',
@@ -634,12 +631,9 @@ $1',
 'no-null-revision' => 'Немагчыма стварыць нулявую вэрсію для старонкі «$1»',
 'badtitle' => 'Няслушная назва',
 'badtitletext' => 'Запытаная назва старонкі няслушная ці пустая, альбо няслушна ўказаная міжмоўная ці інтэрвікі-назва. Яна можа ўтрымліваць сымбалі, якія нельга ўжываць у назвах.',
-'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікі|вынікаў}}.',
-'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
+'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікаў|вынікі}}.',
+'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікаў|вынікі}}.',
 'querypage-no-updates' => 'Абнаўленьні гэтай старонкі цяпер адключаныя. Зьвесткі ня будуць абнаўляцца.',
-'wrong_wfQuery_params' => 'Няслушныя парамэтры для wfQuery()<br />
-Функцыя: $1<br />
-Запыт: $2',
 'viewsource' => 'Паказаць крыніцу',
 'viewsource-title' => 'Прагляд крыніцы для $1',
 'actionthrottled' => 'Дзеяньне прытрыманае',
@@ -651,7 +645,7 @@ $1',
 'editinginterface' => "'''Увага:''' Вы рэдагуеце старонку, якая ўтрымлівае сыстэмнае паведамленьне MediaWiki.
 Яе зьмена паўплывае на вонкавы выгляд інтэрфэйсу іншых удзельнікаў у гэтай вікі.
 Каб дадаць ці зьмяніць пераклад ва ўсіх праектах, зьвярніцеся на [//translatewiki.net/wiki/Main_Page?setlang=be-tarask translatewiki.net] — праект для лякалізацыі MediaWiki.",
-'cascadeprotected' => 'Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:
+'cascadeprotected' => 'Гэтая старонка абароненая ад рэдагаваньня, таму што яна ўключаная ў {{PLURAL:$1|1=наступную старонку, якая была абароненая|наступныя старонкі, якія былі абароненыя}} з актывізаванай опцыяй «каскаднай абароны»:
 $2',
 'namespaceprotected' => "Вы ня маеце правоў на рэдагаваньне старонак у прасторы назваў '''$1'''.",
 'customcssprotected' => 'Вы ня маеце правоў на рэдагаваньне гэтай CSS-старонкі, таму што яна ўтрымлівае пэрсанальныя налады іншага ўдзельніка.',
@@ -669,7 +663,8 @@ $2',
 'invalidtitle-knownnamespace' => 'Няслушная назва ў прасторы «$2»: «$3»',
 'invalidtitle-unknownnamespace' => 'Няслушная назва ў невядомай прасторы $1: «$2»',
 'exception-nologin' => 'Вы не ўвайшлі ў сыстэму',
-'exception-nologin-text' => 'Гэтая старонка ці дзеяньне патрабуе, каб вы ўвайшлі ў сыстэму.',
+'exception-nologin-text' => 'Неабходна [[Special:Userlogin|ўвайсьці]], каб атрымаць доступ да гэтай старонкі або дзеяньня.',
+'exception-nologin-text-manual' => 'Неабходна $1, каб мець доступ да гэтай старонкі або дзеяньня.',
 
 # Virus scanner
 'virus-badscanner' => "Няслушная канфігурацыя: невядомы антывірусны сканэр: ''$1''",
@@ -770,7 +765,7 @@ $2',
 'passwordtooshort' => 'Паролі павінны ўтрымліваць ня менш за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.',
 'password-name-match' => 'Ваш пароль павінен адрозьнівацца ад Вашага імя ўдзельніка.',
 'password-login-forbidden' => 'Выкарыстаньне гэтага імя ўдзельніка і пароля было забароненае.',
-'mailmypassword' => 'Ð\94аÑ\81лаÑ\86Ñ\8c Ð½Ð¾Ð²Ñ\8b Ð¿Ð°Ñ\80олÑ\8c Ð¿Ð° Ñ\8dлекÑ\82Ñ\80оннай Ð¿Ð¾Ñ\88Ñ\86е',
+'mailmypassword' => 'СкÑ\96нÑ\83Ñ\86Ñ\8c Ð¿Ð°Ñ\80олÑ\8c',
 'passwordremindertitle' => 'Новы часовы пароль для {{GRAMMAR:родны|{{SITENAME}}}}',
 'passwordremindertext' => 'Нехта (магчыма Вы, з IP-адрасу $1) запытаў нас даслаць новы пароль для {{GRAMMAR:родны|{{SITENAME}}}} ($4). Для ўдзельніка «$2» быў створаны часовы пароль і ён цяпер «$3». Калі гэта была Вашая ініцыятыва, Вам трэба ўвайсьці ў сыстэму і адразу зьмяніць пароль. Тэрмін дзеяньня Вашага часовага паролю — $5 {{PLURAL:$5|дзень|дні|дзён}}.
 
@@ -817,7 +812,7 @@ $2',
 'user-mail-no-body' => 'Спроба даслаць ліст з пустым або надзвычай кароткім зьместам.',
 
 # Change password dialog
-'resetpass' => 'Зьмяніць пароль',
+'changepassword' => 'Зьмяніць пароль',
 'resetpass_announce' => 'Вы ўвайшлі з дапамогай часовага паролю, дасланага праз электронную пошту.
 Для завяршэньня ўваходу ў сыстэму Вы мусіце ўвесьці тут новы пароль:',
 'resetpass_header' => 'Зьмяніць пароль рахунку',
@@ -848,19 +843,19 @@ $2',
 'passwordreset-capture-help' => 'Калі Вы пазначыце гэтае поле, электронны ліст (з часовым паролем), будзе паказаны Вам як толькі ён будзе дасланы ўдзельніку.',
 'passwordreset-email' => 'Адрас электроннай пошты:',
 'passwordreset-emailtitle' => 'Падрабязнасьці рахунку ў {{GRAMMAR:месны|{{SITENAME}}}}',
-'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+'passwordreset-emailtext-ip' => 'Нехта (магчыма Вы, з IP-адрасу $1) зрабіў запыт на вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
 
 $2
 
-{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
+{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
 Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
 ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
 Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
-'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
+'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на скіданьне вашага паролю ў {{GRAMMAR:месны|{{SITENAME}}}} ($4). {{PLURAL:$3|1=Наступны рахунак удзельніка зьвязаны|Наступныя рахункі ўдзельнікаў зьвязаныя}} з гэтым адрасам электроннай пошты:
 
 $2
 
-{{PLURAL:$3|Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
+{{PLURAL:$3|1=Гэты часовы пароль будзе|Гэтыя часовыя паролі будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
 Цяпер Вам неабходна ўвайсьці і выбраць новы пароль. Калі нехта іншы зрабіў гэты запыт,
 ці Вы ўспомнілі Ваш пачатковы пароль, які ня хочаце мяняць,
 Вы можаце праігнараваць гэтае паведамленьне, і працягваць выкарыстоўваць стары пароль.',
@@ -1058,23 +1053,23 @@ $2
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
 'semiprotectedpagewarning' => "'''Заўвага:''' Гэтая старонка была абароненая, і рэдагаваць яе могуць толькі зарэгістраваныя ўдзельнікі.
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
-'cascadeprotectedwarning' => "'''Папярэджаньне:''' Гэтая старонка абароненая, толькі ўдзельнікі з правамі адміністратараў могуць рэдагаваць яе, таму што яна ўключаная ў {{PLURAL:$1|наступную каскадна-абароненую старонку|наступныя каскадна-абароненыя старонкі}}:",
+'cascadeprotectedwarning' => "'''Папярэджаньне:''' Гэтая старонка абароненая, толькі ўдзельнікі з правамі адміністратараў могуць рэдагаваць яе, таму што яна ўключаная ў {{PLURAL:$1|1=наступную каскадна-абароненую старонку|наступныя каскадна-абароненыя старонкі}}:",
 'titleprotectedwarning' => "'''Папярэджаньне: гэтая старонка была абароненая і для яе стварэньня патрабуюцца [[Special:ListGroupRights|адпаведныя правы]].'''
 Апошні запіс з журнала пададзены ніжэй для даведкі:",
-'templatesused' => 'На гэтай старонцы {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
-'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
-'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesused' => '{{PLURAL:$1|Шаблён, які ўжываецца|Шаблёны, якія ўжываюцца}} на гэтай старонцы:',
+'templatesusedpreview' => 'У гэтым папярэднім праглядзе {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
+'templatesusedsection' => 'У гэтай сэкцыі {{PLURAL:$1|1=выкарыстаны наступны шаблён|выкарыстаныя наступныя шаблёны}}:',
 'template-protected' => '(абаронены)',
 'template-semiprotected' => '(часткова абароненая)',
-'hiddencategories' => 'Гэтая старонка належыць да $1 {{PLURAL:$1|схаванай катэгорыі|схаваных катэгорыяў}}:',
+'hiddencategories' => 'Гэтая старонка належыць да $1 {{PLURAL:$1|1=схаванай катэгорыі|схаваных катэгорыяў}}:',
 'nocreatetext' => 'У {{GRAMMAR:месны|{{SITENAME}}}} абмежаванае стварэньне новых старонак.
 Вы можаце вярнуцца і рэдагаваць існуючую старонку, альбо [[Special:UserLogin|ўвайсьці ў сыстэму ці стварыць рахунак]].',
 'nocreate-loggedin' => 'Вы ня маеце дазволу на стварэньне новых старонак.',
 'sectioneditnotsupported-title' => 'Рэдагаваньне сэкцыяў не падтрымліваецца',
 'sectioneditnotsupported-text' => 'Рэдагаваньне сэкцыяў не падтрымліваецца ў гэтай старонцы рэдагаваньня',
 'permissionserrors' => 'Памылка дазволу',
-'permissionserrorstext' => 'Вы ня маеце дазволу на гэтае дзеяньне па {{PLURAL:$1|наступнай прычыне|наступных прычынах}}:',
-'permissionserrorstext-withaction' => 'Вы ня маеце дазволу на $2 па {{PLURAL:$1|наступнай прычыне|наступных прычынах}}:',
+'permissionserrorstext' => 'Вы ня маеце дазволу на гэтае дзеяньне па {{PLURAL:$1|1=наступнай прычыне|наступных прычынах}}:',
+'permissionserrorstext-withaction' => 'Вы ня маеце дазволу на $2 па {{PLURAL:$1|1=наступнай прычыне|наступных прычынах}}:',
 'recreate-moveddeleted-warn' => "'''Увага: Вы ствараеце старонку, якая раней была выдаленая.'''
 
 Упэўніцеся, што стварэньне гэтай старонкі неабходнае.
@@ -1205,15 +1200,11 @@ $2
 'revisiondelete' => 'Выдаліць/аднавіць вэрсіі',
 'revdelete-nooldid-title' => 'Ня выбрана мэтавая вэрсія',
 'revdelete-nooldid-text' => 'Вы ня выбралі мэтавую вэрсію (ці вэрсіі) для выкананьня гэтай функцыі, выбранай вэрсіі не існуе альбо Вы спрабуеце схаваць цяперашнюю вэрсію.',
-'revdelete-nologtype-title' => 'Ня ўказаны тып журнала',
-'revdelete-nologtype-text' => 'Вы не пазначылі тып журнала, у якім будзе выконвацца гэта дзеяньне.',
-'revdelete-nologid-title' => 'Няслушны запіс у журнале',
-'revdelete-nologid-text' => 'Вы не пазначылі запіс у журнале для выкананьня гэтай функцыі, альбо выбраны запіс не існуе.',
 'revdelete-no-file' => 'Пазначаны файл не існуе.',
 'revdelete-show-file-confirm' => 'Вы ўпэўненыя, што жадаеце паглядзець выдаленую вэрсію файла «<nowiki>$1</nowiki>» ад $2 $3?',
 'revdelete-show-file-submit' => 'Так',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбраны запіс|Выбраныя запісы}} журнала падзеяў:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Выбраная вэрсія|Выбраныя вэрсіі}} старонкі [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Выбраны запіс|Выбраныя запісы}} журнала падзеяў:'''",
 'revdelete-text' => "'''Выдаленыя вэрсіі і падзеі будуць паказвацца ў гісторыі старонкі і журналах, але частка іх зьместу ня будзе даступная для звычайных удзельнікаў.'''
 Іншыя адміністратары {{GRAMMAR:родны|{{SITENAME}}}} будуць мець магчымасьць прагляду зьместу і аднаўленьня старонкі праз гэты інтэрфэйс, калі ня будуць уведзеныя дадатковыя абмежаваньні.",
 'revdelete-confirm' => 'Калі ласка, пацьвердзіце, што Вы сапраўды жадаеце зрабіць гэта, разумееце наступствы і робіце гэта ў адпаведнасьці з [[{{MediaWiki:Policy-url}}|правіламі]].',
@@ -1233,7 +1224,7 @@ $2
 'revdelete-suppress' => 'Схаваць зьвесткі ад адміністратараў як і ад іншых удзельнікаў',
 'revdelete-unsuppress' => 'Зьняць абмежаваньні з адноўленых вэрсіяў',
 'revdelete-log' => 'Прычына:',
-'revdelete-submit' => 'Ужыць для {{PLURAL:$1|выбранай вэрсіі|выбраных вэрсіяў}}',
+'revdelete-submit' => 'Ужыць для {{PLURAL:$1|1=выбранай вэрсіі|выбраных вэрсіяў}}',
 'revdelete-success' => "'''Бачнасьць вэрсіі пасьпяхова абноўленая.'''",
 'revdelete-failure' => "'''Немагчыма абнавіць бачнасьць вэрсіі:'''
 $1",
@@ -1241,8 +1232,6 @@ $1",
 'logdelete-failure' => "'''Немагчыма ўстанавіць бачнасьць у журнале:'''
 $1",
 'revdel-restore' => 'Зьмяніць бачнасьць',
-'revdel-restore-deleted' => 'выдаленыя вэрсіі',
-'revdel-restore-visible' => 'бачныя вэрсіі',
 'pagehist' => 'Гісторыя старонкі',
 'deletedhist' => 'Выдаленая гісторыя',
 'revdelete-hide-current' => 'Памылка хаваньня запісу ад $2 $1: гэта цяперашняя вэрсія.
@@ -1314,7 +1303,7 @@ $1",
 'diff-empty' => '(Розьніцы няма)',
 'diff-multi' => '($1 {{PLURAL:$1|прамежная вэрсія|прамежныя вэрсіі|прамежных вэрсіяў}} $2 {{PLURAL:$2|удзельніка|удзельнікаў|удзельнікаў}} {{PLURAL:$1|не паказаная|не паказаныя|не паказаныя}})',
 'diff-multi-manyusers' => '($1 {{PLURAL:$1|прамежная вэрсія|прамежныя вэрсіі|прамежных вэрсіяў}} $2 {{PLURAL:$2|удзельніка|удзельнікаў|удзельнікаў}} {{PLURAL:$1|не паказаная|не паказаныя|не паказаныя}})',
-'difference-missing-revision' => '{{PLURAL:$2|Адна вэрсія|$2 вэрсіі}} з гэтымі адрозьненьнямі ($1) {{PLURAL:$2|не была|не былі}} знойдзеныя.
+'difference-missing-revision' => '{{PLURAL:$2|1=Адна вэрсія|$2 вэрсіі}} з гэтымі адрозьненьнямі ($1) {{PLURAL:$2|1=не была|не былі}} знойдзеныя.
 
 Звычайна гэта здараецца з-за перахода па састарэлай спасылцы на старонку, якая была выдаленая.
 Падрабязнасьці можна знайсьці ў [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале выдаленьняў].',
@@ -1322,12 +1311,8 @@ $1",
 # Search results
 'searchresults' => 'Вынікі пошуку',
 'searchresults-title' => 'Вынікі пошуку для «$1»',
-'searchresulttext' => 'Для атрыманьня больш падрабязнай інфармацыі пра пошук у {{GRAMMAR:месны|{{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',
@@ -1336,10 +1321,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Наступны $1 вынік|Наступныя $1 вынікі|Наступныя $1 вынікаў}}',
 'shown-title' => 'Паказваць $1 {{PLURAL:$1|вынік|вынікі|вынікаў}} на старонцы',
 'viewprevnext' => 'Паказаць ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Налады пошуку',
 'searchmenu-exists' => "* Старонка '''[[$1]]'''",
 'searchmenu-new' => "'''Стварыць старонку «[[:$1|$1]]» у {{GRAMMAR:месны|{{SITENAME}}}}!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Праглядзець старонкі з гэтым прэфіксам]]',
 'searchprofile-articles' => 'Старонкі са зьместам',
 'searchprofile-project' => 'Старонкі дапамогі і праекту',
 'searchprofile-images' => 'Мультымэдыя',
@@ -1360,20 +1343,16 @@ $1",
 'search-interwiki-default' => 'вынікі з $1:',
 'search-interwiki-more' => '(яшчэ)',
 'search-relatedarticle' => 'Зьвязаны',
-'mwsuggest-disable' => 'Адключыць пошукавыя падказкі',
 'searcheverything-enable' => 'Шукаць ва ўсіх прасторах назваў',
 'searchrelated' => 'зьвязаны',
 'searchall' => 'усе',
 'showingresults' => "Ніжэй {{PLURAL:$1|паданы|паданыя|паданыя}} да '''$1''' {{PLURAL:$1|выніку|вынікаў|вынікаў}}, пачынаючы з #<b>$2</b>.",
 'showingresultsnum' => "Ніжэй паказаны сьпіс з '''$3''' {{PLURAL:$3|выніка|вынікаў|вынікаў}}, пачынаючы ад № '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Вынік '''$1''' з '''$3'''|Вынікі '''$1 - $2''' з '''$3'''}} для '''$4'''",
-'nonefound' => "'''Увага''': Па змоўчваньні пошук вядзецца не ва ўсіх прасторах назваў. Трэба дапісаць да запыту ''усе:'' каб шукаць па ўсім зьмесьце (уключаючы абмеркаваньні, шаблёны і г.д.) альбо дадаць да запыту неабходную прастору назваў.",
+'showingresultsheader' => "{{PLURAL:$5|1=Вынік '''$1''' з '''$3'''|Вынікі '''$1 - $2''' з '''$3'''}} для '''$4'''",
 'search-nonefound' => 'Супадзеньняў па запыце ня знойдзена.',
-'powersearch' => 'Удасканалены пошук',
 'powersearch-legend' => 'Удасканалены пошук',
 'powersearch-ns' => 'Шукаць у прасторах назваў:',
 'powersearch-redir' => 'Паказваць перанакіраваньні',
-'powersearch-field' => 'Шукаць',
 'powersearch-togglelabel' => 'Пазначыць:',
 'powersearch-toggleall' => 'Усе',
 'powersearch-togglenone' => 'Нічога',
@@ -1386,7 +1365,7 @@ $1",
 'preferences' => 'Налады',
 'mypreferences' => 'Налады',
 'prefs-edits' => 'Колькасьць рэдагаваньняў:',
-'changepassword' => 'Зьмяніць пароль',
+'prefsnologintext2' => 'Неабходна $1, каб зьмяніць вашыя налады.',
 'prefs-skin' => 'Афармленьне',
 'skin-preview' => 'Папярэдні прагляд',
 'datedefault' => 'Па змоўчаньні',
@@ -1409,13 +1388,11 @@ $1",
 'prefs-email' => 'Налады электроннай пошты',
 'prefs-rendering' => 'Выгляд',
 'saveprefs' => 'Захаваць',
-'resetprefs' => 'Скінуць',
 'restoreprefs' => 'Аднавіць усе стандартныя налады (ва ўсіх разьдзелах)',
 'prefs-editing' => 'Рэдагаваньне',
 'rows' => 'Радкоў:',
 'columns' => 'Слупкоў:',
 'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Колькасьць вынікаў на старонцы:',
 'stub-threshold' => 'Максымальны памер старонкі для паказу спасылак <a href="#" class="stub">як на накід</a> (у байтах):',
 'stub-threshold-disabled' => 'Выключаны',
 'recentchangesdays' => 'Колькасьць дзён для паказу ў апошніх зьменах:',
@@ -1430,7 +1407,6 @@ $1",
 'localtime' => 'Мясцовы час:',
 'timezoneuseserverdefault' => 'Выкарыстоўваць стандартныя налады {{GRAMMAR:родны|{{SITENAME}}}} ($1)',
 'timezoneuseoffset' => 'Іншы (пазначце розьніцу ў часе)',
-'timezoneoffset' => 'Розьніца¹:',
 'servertime' => 'Час на сэрвэры:',
 'guesstimezone' => 'Запоўніць з браўзэра',
 'timezoneregion-africa' => 'Афрыка',
@@ -1458,7 +1434,7 @@ $1",
 'youremail' => 'Адрас электроннай пошты:',
 'username' => 'Імя {{GENDER:$1|ўдзельніка|ўдзельніцы}}:',
 'uid' => 'ID {{GENDER:$1|удзельніка|удзельніцы}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|групы|групаў}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Удзельнік|Удзельніца}} {{PLURAL:$1|1=групы|групаў}}:',
 'prefs-registration' => 'Час рэгістрацыі:',
 'yourrealname' => 'Сапраўднае імя:',
 'yourlanguage' => 'Мова інтэрфэйсу:',
@@ -1685,13 +1661,14 @@ $1",
 'recentchanges-label-minor' => 'Гэтае рэдагаваньне — дробнае',
 'recentchanges-label-bot' => 'Гэтае рэдагаваньне зробленае робатам',
 'recentchanges-label-unpatrolled' => 'Гэтае рэдагаваньне яшчэ не было адпатруляванае',
-'recentchanges-legend-newpage' => '$1 — новая старонка',
-'rcnote' => "Ніжэй {{PLURAL:$1|пададзена '''$1''' апошняя зьмена|пададзеныя '''$1''' апошнія зьмены|пададзеныя '''$1''' апошніх зьменаў}} за {{PLURAL:$2|апошні '''$2''' дзень|апошнія '''$2''' дні|апошнія '''$2''' дзён}}, па стане на $5, $4.",
+'recentchanges-label-plusminus' => 'Памер старонкі зьмяніўся на такую колькасьць байтаў',
+'recentchanges-legend-heading' => "'''Легенда:'''",
+'recentchanges-legend-newpage' => '(глядзіце таксама [[Special:NewPages|сьпіс новых старонак]])',
 'rcnotefrom' => "Ніжэй знаходзяцца зьмены з '''$2''' (да '''$1''' на старонку).",
 'rclistfrom' => 'Паказаць зьмены з $1',
 'rcshowhideminor' => '$1 дробныя праўкі',
 'rcshowhidebots' => '$1 робатаў',
-'rcshowhideliu' => '$1 зарэгістраваных',
+'rcshowhideliu' => '$1 зарэгістраваных карыстальнікаў',
 'rcshowhideanons' => '$1 ананімаў',
 'rcshowhidepatr' => '$1 патруляваныя праўкі',
 'rcshowhidemine' => '$1 мае праўкі',
@@ -1765,9 +1742,9 @@ $1",
 'filetype-badmime' => 'Загрузка файлаў тыпу MIME «$1» забароненая.',
 'filetype-bad-ie-mime' => 'Немагчыма загрузіць гэты файл, таму што Internet Explorer вызначыў яго як «$1», што азначае, што тып гэтага файла забаронены і патэнцыяльна небясьпечны.',
 'filetype-unwanted-type' => "'''«.$1»''' — непажаданы тып файла.
-{{PLURAL:$3|Пажаданым тыпам файла зьяўляецца|Пажаданымі тыпамі файлаў зьяўляюцца}} $2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|забаронены тып файлаў|забароненыя тыпы файлаў}}.
-{{PLURAL:$3|Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.",
+{{PLURAL:$3|1=Пажаданым тыпам файла зьяўляецца|Пажаданымі тыпамі файлаў зьяўляюцца}} $2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=забаронены тып файлаў|забароненыя тыпы файлаў}}.
+{{PLURAL:$3|1=Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.",
 'filetype-missing' => 'Файл ня мае пашырэньня (напрыклад, «.jpg»).',
 'empty-file' => 'Дасланы Вамі файл пусты.',
 'file-too-large' => 'Дасланы Вамі файл занадта вялікі.',
@@ -1805,7 +1782,7 @@ $1",
 Калі ласка, вярніцеся назад і загрузіце гэты файл з новай назвай. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Файл з такой назвай ужо існуе ў агульным сховішчы файлаў.
 Калі Вы жадаеце загрузіць Ваш файл, вярніцеся назад і загрузіце гэты файл з новай назвай. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Гэты файл дублюе {{PLURAL:$1|наступны файл|наступныя файлы}}:',
+'file-exists-duplicate' => 'Гэты файл дублюе {{PLURAL:$1|1=наступны файл|наступныя файлы}}:',
 'file-deleted-duplicate' => 'Падобны файл ([[:$1]]) ужо выдаляўся. Калі ласка, паглядзіце гісторыю выдаленьняў гэтага файла перад яго паўторнай загрузкай.',
 'uploadwarning' => 'Папярэджаньне',
 'uploadwarning-text' => 'Калі ласка, зьмяніце апісаньне файла ніжэй і паспрабуйце ізноў.',
@@ -1995,14 +1972,14 @@ $1',
 'filehist-comment' => 'Камэнтар',
 'filehist-missing' => 'Файл адсутнічае',
 'imagelinks' => 'Выкарыстаньне файла',
-'linkstoimage' => '{{PLURAL:$1|Наступная старонка спасылаецца|Наступныя старонкі спасылаюцца}} на гэты файл:',
+'linkstoimage' => '{{PLURAL:$1|1=Наступная старонка спасылаецца|Наступныя старонкі спасылаюцца}} на гэты файл:',
 'linkstoimage-more' => 'Больш чым $1 {{PLURAL:$1|старонка спасылаецца|старонкі спасылаюцца|старонак спасылаюцца}} на гэты файл.
 У гэтым сьпісе толькі $1 {{PLURAL:$1|спасылка|спасылкі|спасылак}} на гэты файл.
 Даступны таксама [[Special:WhatLinksHere/$2|поўны сьпіс]].',
 'nolinkstoimage' => 'Ніводная старонка не спасылаецца на гэты файл.',
 'morelinkstoimage' => 'Паказаць [[Special:WhatLinksHere/$1|болей спасылак]] на гэты файл.',
 'linkstoimage-redirect' => '$1 (перанакіраваньне на файл) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Наступны файл дублюе|Наступныя файлы дублююць}} гэты файл ([[Special:FileDuplicateSearch/$2|падрабязнасьці]]):',
+'duplicatesoffile' => '{{PLURAL:$1|1=Наступны файл дублюе|Наступныя файлы дублююць}} гэты файл ([[Special:FileDuplicateSearch/$2|падрабязнасьці]]):',
 'sharedupload' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.',
 'sharedupload-desc-there' => 'Гэты файл паходзіць з $1 і можа выкарыстоўвацца іншымі праектамі.
 Калі ласка, глядзіце падрабязнасьці на [$2 старонцы апісаньня файла].',
@@ -2071,7 +2048,7 @@ $1',
 
 # Random page
 'randompage' => 'Выпадковая старонка',
-'randompage-nopages' => 'Няма старонак у {{PLURAL:$2|наступнай прасторы|наступных прасторах}} назваў: $1.',
+'randompage-nopages' => 'Няма старонак у {{PLURAL:$2|1=наступнай прасторы|наступных прасторах}} назваў: $1.',
 
 # Random page in category
 'randomincategory' => 'Выпадковая старонка ў катэгорыі',
@@ -2135,9 +2112,10 @@ $1',
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байт|байты|байтаў}}',
 'ncategories' => '$1 {{PLURAL:$1|катэгорыя|катэгорыі|катэгорыяў}}',
-'ninterwikis' => '$1 {{PLURAL:$1|інтэрвікі|інтэрвікі}}',
+'ninterwikis' => '$1 {{PLURAL:$1|1=інтэрвікі|інтэрвікі}}',
 'nlinks' => '$1 {{PLURAL:$1|спасылка|спасылкі|спасылак}}',
 'nmembers' => '$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|элемэнт|элемэнты|элемэнтаў}}',
 'nrevisions' => '$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}',
 'nviews' => '$1 {{PLURAL:$1|прагляд|прагляды|праглядаў}}',
 'nimagelinks' => 'Выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}',
@@ -2176,10 +2154,8 @@ $1',
 'protectedpages' => 'Абароненыя старонкі',
 'protectedpages-indef' => 'Толькі бестэрміновыя абароны',
 'protectedpages-cascade' => 'Толькі каскадныя абароны',
-'protectedpagestext' => 'Наступныя старонкі абароненыя ад пераносаў і рэдагаваньняў',
 'protectedpagesempty' => 'Цяпер няма абароненых старонак з пазначанымі парамэтрамі.',
 'protectedtitles' => 'Забароненыя старонкі',
-'protectedtitlestext' => 'Стварэньне наступных старонак забароненае',
 'protectedtitlesempty' => 'Цяпер няма абароненых назваў з пазначанымі парамэтрамі.',
 'listusers' => 'Сьпіс удзельнікаў і ўдзельніц',
 'listusers-editsonly' => 'Паказаць толькі ўдзельнікаў, якія маюць рэдагаваньні',
@@ -2232,9 +2208,6 @@ $1',
 'allpagesto' => 'Паказаць старонкі да:',
 'allarticles' => 'Усе старонкі',
 'allinnamespace' => 'Усе старонкі (прастора назваў: $1)',
-'allnotinnamespace' => 'Усе старонкі (не ў прасторы назваў $1)',
-'allpagesprev' => 'Папярэднія',
-'allpagesnext' => 'Наступныя',
 'allpagessubmit' => 'Паказаць',
 'allpagesprefix' => 'Паказаць старонкі, назвы якіх пачынаюцца з:',
 'allpagesbadtitle' => 'Пададзеная назва старонкі была няслушная ці пачыналася зь міжмоўнай ці міжвікі спасылкі. Яна яшчэ можа ўтрымліваць сымбалі, якія ня могуць ужывацца ў назвах.',
@@ -2248,7 +2221,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Катэгорыі',
-'categoriespagetext' => '{{PLURAL:$1|Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі і/альбо мэдыяфайлы.
+'categoriespagetext' => '{{PLURAL:$1|1=Наступная катэгорыя зьмяшчае|Наступныя катэгорыі зьмяшчаюць}} старонкі і/альбо мэдыяфайлы.
 Тут не паказаныя [[Special:UnusedCategories|катэгорыі, якія не выкарыстоўваюцца]].
 Глядзіце таксама [[Special:WantedCategories|сьпіс запатрабаваных катэгорыяў]].',
 'categoriesfrom' => 'Паказаць катэгорыі, пачынаючы з:',
@@ -2267,7 +2240,7 @@ $1',
 'linksearch-ok' => 'Шукаць',
 'linksearch-text' => 'Можна ўжываць сымбалі падстаноўкі, напрыклад, «*.wikipedia.org».<br />
 Неабходны дамэн першага ўзроўню, напрыклад, «*.org».<br />
-{{PLURAL:$2|Пратакол, які падтрымліваецца|Пратаколы, якія падтрымліваюцца}}: <code>$1</code> (дапомна http://, калі пратакол не пазначаны).',
+{{PLURAL:$2|1=Пратакол, які падтрымліваецца|Пратаколы, якія падтрымліваюцца}}: <code>$1</code> (дапомна http://, калі пратакол не пазначаны).',
 'linksearch-line' => 'Спасылка на $1 з $2',
 'linksearch-error' => 'Сымбалі падстаноўкі могуць ужывацца толькі ў пачатку адрасоў.',
 
@@ -2297,12 +2270,12 @@ $1',
 'listgrouprights-rights' => 'Правы',
 'listgrouprights-helppage' => 'Help:Правы групаў удзельнікаў',
 'listgrouprights-members' => '(сьпіс удзельнікаў групы)',
-'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|групу|групы}}: $1',
-'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|групу|групы}}: $1',
+'listgrouprights-addgroup' => 'можа дадаваць {{PLURAL:$2|1=групу|групы}}: $1',
+'listgrouprights-removegroup' => 'можа выдаляць {{PLURAL:$2|1=групу|групы}}: $1',
 'listgrouprights-addgroup-all' => 'можа дадаваць усе групы',
 'listgrouprights-removegroup-all' => 'можа выдаляць усе групы',
-'listgrouprights-addgroup-self' => 'Можа дадаць уласны рахунак да {{PLURAL:$2|групы|групаў}}: $1',
-'listgrouprights-removegroup-self' => 'Можа выдаліць уласны рахунак з {{PLURAL:$2|групы|групаў}}: $1',
+'listgrouprights-addgroup-self' => 'Можа дадаць уласны рахунак да {{PLURAL:$2|1=групы|групаў}}: $1',
+'listgrouprights-removegroup-self' => 'Можа выдаліць уласны рахунак з {{PLURAL:$2|1=групы|групаў}}: $1',
 'listgrouprights-addgroup-self-all' => 'Можа дадаць уласны рахунак да ўсіх груп',
 'listgrouprights-removegroup-self-all' => 'Можа выдаліць уласны рахунак з ўсіх груп',
 
@@ -2457,6 +2430,7 @@ $UNWATCHURL
 Выдаленьне такіх старонак было забароненае, каб пазьбегнуць праблемаў у працы {{GRAMMAR:родны|{{SITENAME}}}}.',
 'delete-warning-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.
 Яе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.',
+'deleting-backlinks-warning' => "'''Увага:''' іншыя старонкі спасылаюцца на старонку, якую вы зьбіраецеся выдаліць.",
 
 # Rollback
 'rollback' => 'Адкаціць рэдагаваньні',
@@ -2555,7 +2529,7 @@ $UNWATCHURL
 'undeletepage' => 'Прагляд і аднаўленьне выдаленых старонак',
 'undeletepagetitle' => "'''Ніжэй паданыя выдаленыя вэрсіі [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Паказаць выдаленыя старонкі',
-'undeletepagetext' => '{{PLURAL:$1|Наступная старонка была выдаленая, але яна знаходзяцца ў архіве і можа быць адноўленая|Наступныя старонкі былі выдаленыя, але яны знаходзяцца ў архіве і могуць быць адноўленыя}}.
+'undeletepagetext' => '{{PLURAL:$1|1=Наступная старонка была выдаленая, але яна знаходзяцца ў архіве і можа быць адноўленая|Наступныя старонкі былі выдаленыя, але яны знаходзяцца ў архіве і могуць быць адноўленыя}}.
 Архіў пэрыядычна чысьціцца.',
 'undelete-fieldset-title' => 'Аднавіць вэрсіі',
 'undeleteextrahelp' => "Для поўнага аднаўленьня гісторыі рэдагаваньня старонкі, пакіньце ўсе адзнакі нявызначнымі і націсьніце '''''{{int:undeletebtn}}'''''.
@@ -2575,7 +2549,6 @@ $UNWATCHURL
 'undeletebtn' => 'Аднавіць',
 'undeletelink' => 'паглядзець/аднавіць',
 'undeleteviewlink' => 'паказаць',
-'undeletereset' => 'Скінуць',
 'undeleteinvert' => 'Адваротны выбар',
 'undeletecomment' => 'Прычына:',
 'undeletedrevisions' => '{{PLURAL:$1|адноўленая $1 вэрсія|адноўленыя $1 вэрсіі|адноўленыя $1 вэрсіяў}}',
@@ -2664,13 +2637,11 @@ $1',
 'block' => 'Заблякаваць удзельніка',
 'unblock' => 'Разблякаваць удзельніка',
 'blockip' => 'Заблякаваць',
-'blockip-title' => 'Блякаваньне ўдзельнікаў',
 'blockip-legend' => 'Заблякаваць удзельніка',
 'blockiptext' => 'Наступная форма дазваляе заблякаваць магчымасьць рэдагаваньня з пэўнага IP-адрасу альбо імя ўдзельніка. Гэта трэба рабіць толькі дзеля прадухіленьня вандалізму і згодна з [[{{MediaWiki:Policy-url}}|правіламі]]. Пазначце ніжэй дакладную прычыну (напрыклад, пералічыце асобныя старонкі, на якіх былі парушэньні).',
 'ipadressorusername' => 'IP-адрас альбо імя ўдзельніка/ўдзельніцы:',
 'ipbexpiry' => 'Тэрмін:',
 'ipbreason' => 'Прычына:',
-'ipbreasonotherlist' => 'Іншая прычына',
 'ipbreason-dropdown' => '* Агульныя прычыны блякаваньняў
 ** Даданьне ілжывай інфармацыі
 ** Выдаленьне зьместу старонак
@@ -2686,8 +2657,6 @@ $1',
 'ipbsubmit' => 'Заблякаваць гэтага ўдзельніка',
 'ipbother' => 'Іншы тэрмін:',
 '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',
-'ipbotheroption' => 'іншы',
-'ipbotherreason' => 'Іншая/дадатковая прычына:',
 'ipbhidename' => 'Схаваць імя ўдзельніка ў рэдагаваньнях і сьпісах',
 'ipbwatchuser' => 'Назіраць за старонкай удзельніка і яго гутаркамі',
 'ipb-disableusertalk' => 'Забараніць удзельніку рэдагаваньне ўласнай старонкі гутарак падчас блякаваньня',
@@ -2725,7 +2694,7 @@ $1',
 'blocklist-reason' => 'Прычына',
 'ipblocklist-submit' => 'Шукаць',
 'ipblocklist-localblock' => 'Лякальнае блякаваньне',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Іншае блякаваньне|Іншыя блякаваньні}}',
 'infiniteblock' => 'назаўсёды',
 'expiringblock' => 'канчаецца $1 $2',
 'anononlyblock' => 'толькі ананімаў',
@@ -2763,7 +2732,7 @@ $1',
 'ipb_hide_invalid' => 'Немагчыма схаваць гэты рахунак; верагодна зь яго зроблена зашмат рэдагаваньняў.',
 'ipb_already_blocked' => '«$1» ужо заблякаваны',
 'ipb-needreblock' => '$1 ужо заблякаваны. Вы жадаеце зьмяніць парамэтры?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Іншае блякаваньне|Іншыя блякаваньні}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Іншае блякаваньне|Іншыя блякаваньні}}',
 'unblock-hideuser' => 'Вы ня можаце разблякаваць гэтага ўдзельніка, таму што яго імя было схаванае.',
 'ipb_cant_unblock' => 'Памылка: ID блякаваньня $1 ня знойдзена. Верагодна яно было ўжо зьнятае.',
 'ipb_blocked_as_range' => 'Памылка: IP-адрас $1 быў заблякаваны наўпрост і ня можа быць разблякаваны.
@@ -2777,7 +2746,6 @@ $1',
 'sorbs_create_account_reason' => 'Ваш IP-адрас знаходзіцца ў сьпісе адкрытых проксі ў DNSBL, якім карыстаецца {{SITENAME}}.
 Вы ня зможаце стварыць рахунак',
 'xffblockreason' => 'IP-адрас, прыведзены ў загалоўку X-Forwarded-For, які належыць або вам, або проксі-сэрвэру, быў заблякаваны. Прычынай блякаваньня было: $1',
-'cant-block-while-blocked' => 'Вы ня можаце блякаваць іншых удзельнікаў, пакуль Вы самі заблякаваныя.',
 'cant-see-hidden-user' => 'Удзельнік, якога Вы спрабуеце заблякаваць, ужо заблякаваны і схаваны. З-за таго, што Вы ня маеце правоў хаваньня ўдзельнікаў, Вы ня можаце бачыць альбо зьмяняць блякаваньне удзельніка.',
 'ipbblocked' => 'Вы ня можаце блякаваць ці раблякоўваць іншых удзельнікаў, таму што заблякаваныя самі',
 'ipbnounblockself' => 'Вы ня можаце раблякоўваць сябе',
@@ -2836,7 +2804,6 @@ $1',
 У такіх выпадках Вы можаце перанесьці ці аб’яднаць старонку абмеркаваньня самастойна.",
 'movearticle' => 'Перанесьці старонку:',
 'moveuserpage-warning' => "'''Папярэджаньне:''' Вы зьбіраецеся перанесьці старонку ўдзельніка. Калі ласка заўважце, што старонка будзе перанесеная, але імя ўдзельніка ''ня'' будзе зьмененае.",
-'movenologin' => 'Вы не ўвайшлі ў сыстэму',
 'movenologintext' => 'Вам неабходна [[Special:UserLogin|ўвайсьці ў сыстэму]], каб перанесьці старонкі.',
 'movenotallowed' => 'Вы ня маеце дазволу на перанос старонак.',
 'movenotallowedfile' => 'Вы ня маеце правоў на перайменаваньне файлаў.',
@@ -2851,8 +2818,6 @@ $1',
 'movepage-moved-noredirect' => 'Перанакіраваньне не было створанае.',
 'articleexists' => 'Старонка з такой назвай ужо існуе, альбо абраная Вамі назва недапушчальная. Калі ласка, абярыце іншую назву.',
 'cantmove-titleprotected' => 'Немагчыма перанесьці старонку, таму што новая назва знаходзіцца ў сьпісе забароненых',
-'talkexists' => "'''Старонка пасьпяхова перанесеная, але не атрымалася перанесьці старонку абмеркаваньня, таму што старонка з такой назвай ужо існуе. Калі ласка, аб'яднайце тэксты самастойна.'''",
-'movedto' => 'перанесеная ў',
 'movetalk' => 'Перанесьці таксама старонку абмеркаваньня',
 'move-subpages' => 'Перанесьці ўсе падстаронкі (да $1)',
 'move-talk-subpages' => 'Перанесьці ўсе падстаронкі старонкі абмеркаваньня (да $1)',
@@ -2862,8 +2827,8 @@ $1',
 'movepage-max-pages' => '$1 {{PLURAL:$1|старонка была перанесеная|старонкі былі перанесеныя|старонак былі перанесеныя}} — гэта дазволены максымум, больш аўтаматычных пераносаў ня будзе.',
 'movelogpage' => 'Журнал пераносаў',
 'movelogpagetext' => 'Ніжэй пададзены сьпіс перанесеных старонак.',
-'movesubpage' => '{{PLURAL:$1|Падстаронка|Падстаронкі}}',
-'movesubpagetext' => 'Гэтая старонка мае $1 {{PLURAL:$1|падстаронку|падстаронкі|падстаронак}}, {{PLURAL:$1|якая паказаная ніжэй|якія паказаныя ніжэй}}.',
+'movesubpage' => '{{PLURAL:$1|1=Падстаронка|Падстаронкі}}',
+'movesubpagetext' => 'Гэтая старонка мае $1 {{PLURAL:$1|падстаронку|падстаронкі|падстаронак}}, {{PLURAL:$1|1=якая паказаная ніжэй|якія паказаныя ніжэй}}.',
 'movenosubpage' => 'Гэтая старонка ня мае падстаронак.',
 'movereason' => 'Прычына:',
 'revertmove' => 'адкат',
@@ -3000,7 +2965,7 @@ $2',
 'import-error-special' => 'Старонка «$1» не была імпартаваная, таму што яна належыць да спэцыяльнай прасторы назваў, старонкі ў якой не дазволеныя.',
 'import-error-invalid' => 'Старонка «$1» не была імпартаваная з-за няслушнасьці назвы.',
 'import-error-unserialize' => 'Не атрымалася дэсэрыялізаваць вэрсію $2 старонкі «$1». Меркавалася, што вэрсія выкарыстоўвала мадэль зьвестак $3 і была сэрыялізавана ў фармаце $4.',
-'import-options-wrong' => '{{PLURAL:$2|Няслушная налада|Няслушныя налады}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Няслушная налада|Няслушныя налады}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Пазначаная назва карнявой старонкі няслушная.',
 'import-rootpage-nosubpage' => 'Падстаронкі ў прасторы назваў «$1» карнявой старонкі не дазволеныя.',
 
@@ -3092,19 +3057,20 @@ $2',
 Дазваляе дадаваць прычыну адкату ў апісаньне зьменаў.',
 'tooltip-preferences-save' => 'Захаваць налады',
 'tooltip-summary' => 'Увядзіце кароткае апісаньне',
+'interlanguage-link-title' => '$1 — $2',
 
 # Metadata
 'notacceptable' => 'Вікі-сэрвэр ня можа адлюстраваць зьвесткі ў выглядзе, які здольны прачытаць Ваш браўзэр.',
 
 # Attribution
-'anonymous' => '{{PLURAL:$1|Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Ананімны ўдзельнік ці ўдзельніца|Ананімныя ўдзельнікі і ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
 'siteuser' => 'Удзельнік/удзельніца {{GRAMMAR:родны|{{SITENAME}}}} $1',
 'anonuser' => 'Ананімны ўдзельнік {{GRAMMAR:родны|{{SITENAME}}}} $1',
 'lastmodifiedatby' => 'Гэтую старонку апошні раз рэдагаваў $3 $2, $1.',
 'othercontribs' => 'На аснове працы $1.',
 'others' => 'іншыя',
-'siteusers' => '{{PLURAL:$2|Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=Удзельнік|Удзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=Ананімны ўдзельнік|Ананімныя ўдзельнікі}} {{GRAMMAR:родны|{{SITENAME}}}} $1',
 'creditspage' => 'Падзякі',
 'nocredits' => 'Няма інфармацыі пра аўтараў гэтай старонкі.',
 
@@ -3132,12 +3098,13 @@ $2',
 'pageinfo-length' => 'Памер старонкі (у байтах)',
 'pageinfo-article-id' => 'Ідэнтыфікатар старонкі',
 'pageinfo-language' => 'Мова зьместу старонкі',
+'pageinfo-content-model' => 'Мадэль зьместу старонкі',
 'pageinfo-robot-policy' => 'Індэксацыя пашукавікамі',
 'pageinfo-robot-index' => 'Дазволеная',
 'pageinfo-robot-noindex' => 'Не дазволеная',
 'pageinfo-views' => 'Колькасьць праглядаў',
 'pageinfo-watchers' => 'Колькасьць назіральнікаў і назіральніц',
-'pageinfo-few-watchers' => 'Менш за $1 {{PLURAL:$1|назіральніка|назіральнікаў}}',
+'pageinfo-few-watchers' => 'Менш за $1 {{PLURAL:$1|1=назіральніка|назіральнікаў}}',
 'pageinfo-redirects-name' => 'Перанакіраваньняў на гэтую старонку',
 'pageinfo-subpages-name' => 'Колькасьць падстаронак',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перанакіраваньне|перанакіраваньні|перанакіраваньняў}}; $3 {{PLURAL:$3|звычайная|звычайныя|звычайных}})',
@@ -3149,10 +3116,10 @@ $2',
 'pageinfo-authors' => 'Колькасьць аўтараў',
 'pageinfo-recent-edits' => 'Колькасьць апошніх рэдагаваньняў (за $1)',
 'pageinfo-recent-authors' => 'Колькасьць апошніх аўтараў',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магічнае слова|Магічныя словы}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Схаваная катэгорыя|Схаваныя катэгорыі}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Шаблён|Шаблёны}} ($1)',
-'pageinfo-transclusions' => 'Выкарыстаньне на {{PLURAL:$1|іншай старонцы|іншых старонках}} ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магічнае слова|Магічныя словы}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Схаваная катэгорыя|Схаваныя катэгорыі}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Шаблён|Шаблёны}} ($1)',
+'pageinfo-transclusions' => 'Выкарыстаньне на {{PLURAL:$1|1=іншай старонцы|іншых старонках}} ($1)',
 'pageinfo-toolboxlink' => 'Зьвесткі пра старонку',
 'pageinfo-redirectsto' => 'Перанакіроўвае на',
 'pageinfo-redirectsto-info' => 'інфармацыя',
@@ -3219,7 +3186,7 @@ $1',
 'svg-long-error' => 'Няслушны SVG-файл: $1',
 'show-big-image' => 'Найлепшае разрозьненьне',
 'show-big-image-preview' => 'Памер прагляду: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Іншае разрозьненьне|Іншыя разрозьненьні}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Іншае разрозьненьне|Іншыя разрозьненьні}}: $1.',
 'show-big-image-size' => '$1 × $2 піксэлаў',
 'file-info-gif-looped' => 'паўтараючыся',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
@@ -3690,15 +3657,10 @@ $1',
 'exif-urgency-high' => 'Высокая ($1)',
 'exif-urgency-other' => 'Прыярытэт вызначаны карыстальнікам ($1)',
 
-# External editor support
-'edit-externally' => 'Рэдагаваць гэты файл з выкарыстаньнем вонкавай праграмы',
-'edit-externally-help' => '(Глядзіце падрабязнасьці ў [https://www.mediawiki.org/wiki/Manual:External_editors інструкцыі па наладцы] (па-ангельску))',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'усё',
 'namespacesall' => 'усе',
 'monthsall' => 'усе',
-'limitall' => 'усе',
 
 # Email address confirmation
 'confirmemail' => 'Пацьвердзіць адрас электроннай пошты',
@@ -3715,7 +3677,6 @@ $1',
 'confirmemail_needlogin' => 'Вам трэба $1, каб пацьвердзіць Ваш адрас электроннай пошты.',
 'confirmemail_success' => 'Ваш адрас электроннай пошты быў пацьверджаны. Зараз Вы можаце ўвайсьці.',
 'confirmemail_loggedin' => 'Ваш адрас электроннай пошты быў пацьверджаны.',
-'confirmemail_error' => 'Нешта пайшло ня так у часе захаваньня вашага пацьверджаньня.',
 'confirmemail_subject' => '{{SITENAME}}: Пацьверджаньне адрасу электроннай пошты',
 'confirmemail_body' => 'Нехта, магчыма Вы, з IP-адрасу $1, стварыў рахунак «$2» з гэтым адрасам электроннай пошты ў праекце {{SITENAME}}.
 
@@ -3782,6 +3743,9 @@ $5
 'confirm-unwatch-button' => 'Добра',
 'confirm-unwatch-top' => 'Выдаліць гэтую старонку з Вашага сьпісу назіраньня?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '«$1»',
+
 # Multipage image navigation
 'imgmultipageprev' => '← папярэдняя старонка',
 'imgmultipagenext' => 'наступная старонка →',
@@ -3926,9 +3890,9 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 
 # Special:SpecialPages
 'specialpages' => 'Спэцыяльныя старонкі',
+'specialpages-note-top' => 'Легенда',
 'specialpages-note' => '* Звычайныя спэцыяльныя старонкі.
-* <strong class="mw-specialpagerestricted">Спэцыяльныя старонкі з абмежаваным доступам.</strong>
-* <span class="mw-specialpagecached">Кэшаваныя спэцыяльныя старонкі (могуць быць састарэлымі).</span>',
+* <strong class="mw-specialpagerestricted">Спэцыяльныя старонкі з абмежаваным доступам.</strong>',
 'specialpages-group-maintenance' => 'Тэхнічныя справаздачы',
 'specialpages-group-other' => 'Іншыя спэцыяльныя старонкі',
 'specialpages-group-login' => 'Уваход / стварэньне рахунку',
@@ -3960,7 +3924,7 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'tags' => 'Слушныя тэгі зьменаў',
 'tag-filter' => 'Фільтар [[Special:Tags|тэгаў]]:',
 'tag-filter-submit' => 'Фільтар',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Тэг|Тэгі}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Тэг|Тэгі}}]]: $2)',
 'tags-title' => 'Тэгі',
 'tags-intro' => 'На гэтай старонцы знаходзіцца сьпіс тэгаў, якімі праграмнае забесьпячэньне можа пазначыць рэдагаваньне, і іх значэньне.',
 'tags-tag' => 'Назва тэга',
@@ -3975,7 +3939,6 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 
 # Special:ComparePages
 'comparepages' => 'Параўнаньне старонак',
-'compare-selector' => 'Параўнаньне вэрсіяў старонак',
 'compare-page1' => 'Старонка 1',
 'compare-page2' => 'Старонка 2',
 'compare-rev1' => 'Вэрсія 1',
@@ -4017,13 +3980,13 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|выдаліў|выдаліла}} старонку $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|аднавіў|аднавіла}} старонку $3',
-'logentry-delete-event' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|падзеі ў журнале|падзеяў у журнале}} на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4',
+'logentry-delete-event' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць вэрсіяў старонкі $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|схаваў|схавала}} старонку $3',
-'logentry-suppress-event' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|падзеі ў журнале|падзеяў у журнале}} на $3: $4',
-'logentry-suppress-revision' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|вэрсіі|вэрсіяў}} старонкі $3: $4',
+'logentry-suppress-event' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=падзеі ў журнале|падзеяў у журнале}} на $3: $4',
+'logentry-suppress-revision' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць $5 {{PLURAL:$5|1=вэрсіі|вэрсіяў}} старонкі $3: $4',
 'logentry-suppress-event-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніла}} бачнасьць падзеяў у журнале на $3',
 'logentry-suppress-revision-legacy' => '$1 прыхавана {{GENDER:$2|зьмяніў|зьмяніоа}} бачнасьць вэрсіяў старонкі $3',
 'revdelete-content-hid' => 'зьмест схаваны',
@@ -4074,10 +4037,10 @@ MediaWiki распаўсюджваецца з надзеяй, што будзе
 'api-error-badaccess-groups' => 'У Вас няма дазволу загружаць файлы ў гэтую вікі.',
 'api-error-badtoken' => 'Унутраная памылка: няслушны ключ.',
 'api-error-copyuploaddisabled' => 'Загрузка з URL-адрасу забароненая на гэтым сэрвэры.',
-'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|файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|Ідэнтычны файл|Ідэнтычныя файлы}}',
+'api-error-duplicate' => 'Ужо {{PLURAL:$1|1=існуе [$2 іншы файл]|існуюць [$2 іншыя файлы]}} з такім жа зьместам.',
+'api-error-duplicate-archive' => 'Раней на сайце {{PLURAL:$1|1=ўжо быў [$2 файл]|былі [$2 файлы]}} з дакладна такім жа зьместам, але {{PLURAL:$1|1=ён быў выдалены|яны былі выдаленыя}}.',
+'api-error-duplicate-archive-popup-title' => 'Дублікаты {{PLURAL:$1|1=файла, які ўжо быў выдалены|файлаў, якія ўжо былі выдаленыя}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Ідэнтычны файл|Ідэнтычныя файлы}}',
 'api-error-empty-file' => 'Дасланы Вамі файл быў пусты.',
 'api-error-emptypage' => 'Стварэньне новых пустых старонак забаронена.',
 'api-error-fetchfileerror' => 'Унутраная памылка: падчас атрыманьня файла штосьці здарылася.',
@@ -4086,7 +4049,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|1=забаронены тып файлаў|забароненыя тыпы файлаў}}. {{PLURAL:$3|1=Дазволены тып файлаў|Дазволеныя тыпы файлаў}}: $2.',
 'api-error-filetype-missing' => 'У файла няма пашырэньня.',
 'api-error-hookaborted' => 'Прапанаваная Вамі зьмена была адхіленая апрацоўшчыкам пашырэньня.',
 'api-error-http' => 'Унутраная памылка: немагчыма далучыцца да сэрвэра.',
index 512dee0..0799f63 100644 (file)
@@ -14,6 +14,8 @@
  * @author Dimi z
  * @author Geitost
  * @author Kaganer
+ * @author MegaAlex
+ * @author Milicevic01
  * @author Simona
  * @author Spiritia
  * @author Stanqo
@@ -58,7 +60,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Стари_страници' ),
        'Blankpage'                 => array( 'Празна_страница' ),
        'Block'                     => array( 'Блокиране' ),
-       'Blockme'                   => array( 'Блокирай_ме' ),
        'Booksources'               => array( 'Източници_на_книги' ),
        'BrokenRedirects'           => array( 'Невалидни_пренасочвания' ),
        'Categories'                => array( 'Категории' ),
@@ -68,9 +69,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Създаване_на_сметка' ),
        'Deadendpages'              => array( 'Задънени_страници' ),
        'DeletedContributions'      => array( 'Изтрити_приноси' ),
-       'Disambiguations'           => array( 'Пояснителни_страници' ),
        'DoubleRedirects'           => array( 'Двойни_пренасочвания' ),
        'Emailuser'                 => array( 'Писмо_на_потребител' ),
+       'ExpandTemplates'           => array( 'Разгръщане_на_шаблони' ),
        'Export'                    => array( 'Изнасяне' ),
        'Fewestrevisions'           => array( 'Страници_с_най-малко_версии' ),
        'FileDuplicateSearch'       => array( 'Повтарящи_се_файлове' ),
@@ -109,6 +110,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Защитени_страници' ),
        'Protectedtitles'           => array( 'Защитени_заглавия' ),
        'Randompage'                => array( 'Случайна_страница' ),
+       'RandomInCategory'          => array( 'Случайна_страница_в_категория' ),
        'Randomredirect'            => array( 'Случайно_пренасочване' ),
        'Recentchanges'             => array( 'Последни_промени' ),
        'Recentchangeslinked'       => array( 'Свързани_промени' ),
@@ -261,7 +263,6 @@ $messages = array(
 'tog-minordefault' => 'Отбелязване на всички промени като малки по подразбиране',
 'tog-previewontop' => 'Показване на предварителния преглед преди текстовата кутия',
 'tog-previewonfirst' => 'Показване на предварителен преглед при първа редакция',
-'tog-nocache' => 'Спиране на складирането на страниците от браузъра',
 'tog-enotifwatchlistpages' => 'Уведомяване по е-пощата при промяна на страница или файл от списъка ми за наблюдение',
 'tog-enotifusertalkpages' => 'Уведомяване по е-пощата при промяна на беседата ми',
 'tog-enotifminoredits' => 'Уведомяване по е-пощата даже при малки промени на страници или файлове',
@@ -396,7 +397,6 @@ $messages = array(
 'qbedit' => 'Редактиране',
 'qbpageoptions' => 'Тази страница',
 'qbmyoptions' => 'Моите страници',
-'qbspecialpages' => 'Специални страници',
 'faq' => 'ЧЗВ',
 'faqpage' => 'Project:ЧЗВ',
 
@@ -515,8 +515,8 @@ $1',
 'youhavenewmessages' => 'Имате $1 ($2).',
 'youhavenewmessagesfromusers' => 'Имате $1 от {{PLURAL:$3|друг потребител|$3 потребители}} ($2).',
 'youhavenewmessagesmanyusers' => 'Имате $1 от много потребители ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ново съобщение|нови съобщения}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последна промяна|последни промени}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ново съобщение|999=нови съобщения}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последна промяна|999=последни промени}}',
 'youhavenewmessagesmulti' => 'Имате нови съобщения в $1',
 'editsection' => 'редактиране',
 'editold' => 'редактиране',
@@ -610,9 +610,6 @@ $1',
 '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' => 'Ограничение в скоростта',
@@ -639,7 +636,7 @@ $2',
 'filereadonlyerror' => 'Файлът „$1“ не може да бъде променен, тъй като файловото хранилище „$2“ е в режим само за четене.
 
 Администраторът, който го е заключил, е посочил следната причина: „$3“.',
-'exception-nologin-text' => 'УикиÑ\82о Ð¸Ð·Ð¸Ñ\81ква Ð²Ð»Ð¸Ð·Ð°Ð½Ðµ Ð·Ð° Ñ\82ази Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð´ÐµÐ¹Ñ\81Ñ\82вие.',
+'exception-nologin-text' => 'Ð\97а Ð´Ð¾Ñ\81Ñ\8aп Ð´Ð¾ Ð¶ÐµÐ»Ð°Ð½Ð°Ñ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а Ð¸Ð»Ð¸ Ð´ÐµÐ¹Ñ\81Ñ\82вие Ñ\83икиÑ\82о Ð¸Ð·Ð¸Ñ\81ква [[Special:Userlogin|влизане Ð² Ñ\81иÑ\81Ñ\82емаÑ\82а]].',
 
 # Virus scanner
 'virus-badscanner' => "Лоша конфигурация: непознат скенер за вируси: ''$1''",
@@ -735,7 +732,7 @@ $2',
 'passwordtooshort' => 'Необходимо е паролата да съдържа поне {{PLURAL:$1|1 знак|$1 знака}}.',
 'password-name-match' => 'Паролата ви трябва да се различава от потребителското ви име.',
 'password-login-forbidden' => 'Използването на това потребителско име и парола е забранено.',
-'mailmypassword' => 'Ð\98зпÑ\80аÑ\89ане Ð½Ð° Ð½Ð¾Ð²а парола',
+'mailmypassword' => 'Ð\92Ñ\8aзÑ\81Ñ\82ановÑ\8fване Ð½а парола',
 'passwordremindertitle' => 'Напомняне за парола от {{SITENAME}}',
 'passwordremindertext' => 'Някой (най-вероятно вие, от IP-адрес $1) е пожелал нова парола за влизане в {{SITENAME}} ($4).
 За потребител „$2“ е създадена временната парола „$3“.
@@ -780,7 +777,7 @@ $2',
 'user-mail-no-addy' => 'Опитвате се да изпратите е-писмо без да е посочен адрес за електронна поща.',
 
 # Change password dialog
-'resetpass' => 'Промяна на парола',
+'changepassword' => 'Смяна на парола',
 'resetpass_announce' => 'Влязохте с временен код, получен по електронната поща. Сега е нужно да си изберете нова парола:',
 'resetpass_text' => '<!-- Тук добавете текст -->',
 'resetpass_header' => 'Промяна на парола',
@@ -1149,10 +1146,6 @@ $2
 'revisiondelete' => 'Изтриване/възстановяване на версии',
 'revdelete-nooldid-title' => 'Не е зададена версия',
 'revdelete-nooldid-text' => 'Не сте задали версия или версии за изпълнението на тази функция.',
-'revdelete-nologtype-title' => 'Не е посочен тип на дневника',
-'revdelete-nologtype-text' => 'Не е посочен дневник, в който да бъде изпълнено желаното действие.',
-'revdelete-nologid-title' => 'Невалиден запис в дневника',
-'revdelete-nologid-text' => 'За изпълнение на тази функция или не е посочено конкретно събитие от дневника или в дневника не съществува такъв запис.',
 'revdelete-no-file' => 'Посоченият файл не съществува.',
 'revdelete-show-file-confirm' => 'Необходимо е потвърждение, че желаете да прегледате изтритата версия на файла „<nowiki>$1</nowiki>“ от $2 $3.',
 'revdelete-show-file-submit' => 'Да',
@@ -1172,8 +1165,8 @@ $2
 'revdelete-hide-user' => 'Потребителско име/IP адрес на редактора',
 'revdelete-hide-restricted' => 'Прилагане на тези ограничения и за администраторите',
 'revdelete-radio-same' => '(да не се променя)',
-'revdelete-radio-set' => 'Ð\94а',
-'revdelete-radio-unset' => 'Ð\9dе',
+'revdelete-radio-set' => 'СкÑ\80иÑ\82',
+'revdelete-radio-unset' => 'Ð\92идим',
 'revdelete-suppress' => 'Скриване на причината за изтриването и от администраторите',
 'revdelete-unsuppress' => 'Премахване на ограниченията за възстановените версии',
 'revdelete-log' => 'Причина:',
@@ -1185,8 +1178,6 @@ $1",
 'logdelete-failure' => "'''Видимостта на дневника не може да бъде променяна:'''
 $1",
 'revdel-restore' => 'Промяна на видимостта',
-'revdel-restore-deleted' => 'изтрити версии',
-'revdel-restore-visible' => 'видими редакции',
 'pagehist' => 'История на страницата',
 'deletedhist' => 'Изтрита история',
 'revdelete-hide-current' => 'Грешка при скриване на елемента от $2, $1: представлява текущата версия.
@@ -1263,12 +1254,8 @@ $1",
 # 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}}',
@@ -1277,10 +1264,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|следващ резултат|следващи резултата}}',
 'shown-title' => 'Показване на $1 {{PLURAL:$1|резултат|резултата}} на страница',
 'viewprevnext' => 'Преглед ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Настройки на търсенето',
 'searchmenu-exists' => "'''Съществува страница с името „[[:$1]]“ в това уики.'''",
 'searchmenu-new' => "'''Създаване на страницата „[[:$1]]“ в това уики!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Преглеждане на страниците с тази представка]]',
 'searchprofile-articles' => 'Съдържателни страници',
 'searchprofile-project' => 'Помощни и проектни страници',
 'searchprofile-images' => 'Мултимедия',
@@ -1301,21 +1286,16 @@ $1",
 'search-interwiki-default' => '$1 резултата:',
 'search-interwiki-more' => '(още)',
 'search-relatedarticle' => 'Свързани',
-'mwsuggest-disable' => 'Изключване на предположенията при търсене',
 'searcheverything-enable' => 'Търсене във всички именни пространства',
 'searchrelated' => 'свързани',
 'searchall' => 'всички',
 'showingresults' => "Показване на до {{PLURAL:$1|'''1''' резултат|'''$1''' резултата}}, като се започва от номер '''$2'''.",
 'showingresultsnum' => "Показване на {{PLURAL:$3|'''1''' резултат|'''$3''' резултата}}, като се започва от номер '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' от '''$3'''|Резултати '''$1 - $2''' от '''$3'''}} за '''$4'''",
-'nonefound' => "'''Забележка''': Търсенето по подразбиране се свежда само до някои именни пространства.
-Опитайте пак, като отбележите в заявката си префикса ''all:'', за търсене из цялото съдържание на базата данни (включително дискусионни страници, шаблони и т.н.) или използвайте желаното именно пространство като префикс.",
 'search-nonefound' => 'Няма резултати, които да отговарят на заявката.',
-'powersearch' => 'Търсене',
 'powersearch-legend' => 'Разширено търсене',
 'powersearch-ns' => 'Търсене в именни пространства:',
 'powersearch-redir' => 'Списък на пренасочванията',
-'powersearch-field' => 'Търсене на',
 'powersearch-togglelabel' => 'Избор:',
 'powersearch-toggleall' => 'Всички',
 'powersearch-togglenone' => 'Никои',
@@ -1327,7 +1307,6 @@ $1",
 'preferences' => 'Настройки',
 'mypreferences' => 'Настройки',
 'prefs-edits' => 'Брой редакции:',
-'changepassword' => 'Смяна на парола',
 'prefs-skin' => 'Облик',
 'skin-preview' => 'предварителен преглед',
 'datedefault' => 'Без предпочитание',
@@ -1350,13 +1329,11 @@ $1",
 'prefs-email' => 'Настройки за електронната поща',
 'prefs-rendering' => 'Облик',
 'saveprefs' => 'Съхраняване',
-'resetprefs' => 'Отмяна на текущите промени',
 'restoreprefs' => 'Възстановяване на всички настройки по подразбиране (за всички раздели)',
 'prefs-editing' => 'Редактиране',
 'rows' => 'Редове:',
 'columns' => 'Колони:',
 'searchresultshead' => 'Търсене',
-'resultsperpage' => 'Резултати на страница:',
 'stub-threshold' => 'Праг за форматиране на <a href="#" class="stub">препратки към мъничета</a>:',
 'stub-threshold-disabled' => 'Изключено',
 'recentchangesdays' => 'Брой дни в последни промени:',
@@ -1368,7 +1345,6 @@ $1",
 'localtime' => 'Местно време:',
 'timezoneuseserverdefault' => 'По подразбиране от уикито ($1)',
 'timezoneuseoffset' => 'Друга (посочете отместване)',
-'timezoneoffset' => 'Отместване¹:',
 'servertime' => 'Време на сървъра:',
 'guesstimezone' => 'Попълване чрез браузъра',
 'timezoneregion-africa' => 'Африка',
@@ -1600,17 +1576,18 @@ $1",
 Легенда: '''тек''' = разлика на текущата версия,
 '''ист''' = история на версиите",
 'recentchanges-feed-description' => 'Проследяване на последните промени в {{SITENAME}}.',
-'recentchanges-label-newpage' => 'С Ñ\82ази Ñ\80едакÑ\86иÑ\8f Ð±ÐµÑ\88е Ñ\81Ñ\8aздадена Ð½ова страница',
+'recentchanges-label-newpage' => 'Ð\9dова страница',
 'recentchanges-label-minor' => 'Това е малка промяна',
 'recentchanges-label-bot' => 'Тази редакция е извършена от робот',
 'recentchanges-label-unpatrolled' => 'Тази редакция все още не е проверена',
-'recentchanges-legend-newpage' => '$1 - нова страница',
-'rcnote' => "{{PLURAL:$1|Показана е '''1''' промяна|Показани са последните '''$1''' промени}} през {{PLURAL:$2|последния ден|последните '''$2''' дни}}, към $5, $4.",
+'recentchanges-label-plusminus' => 'Размерът на страницата е променен с този брой байтове',
+'recentchanges-legend-heading' => "'''Легенда:'''",
+'recentchanges-legend-newpage' => '(вижте също [[Special:NewPages|списъка с нови страници]])',
 'rcnotefrom' => 'Дадени са промените от <strong>$2</strong> (до <strong>$1</strong> показани).',
 'rclistfrom' => 'Показване на промени, като се започва от $1.',
 'rcshowhideminor' => '$1 на малки промени',
 'rcshowhidebots' => '$1 на ботове',
-'rcshowhideliu' => '$1 на влезли потребители',
+'rcshowhideliu' => '$1 на регистрирани потребители',
 'rcshowhideanons' => '$1 на анонимни потребители',
 'rcshowhidepatr' => '$1 на проверени редакции',
 'rcshowhidemine' => '$1 на моите приноси',
@@ -1835,8 +1812,7 @@ $1',
 'upload_source_file' => ' (файл на вашия компютър)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Тази специална страница показва всички качени файлове.
-При филтриране от потребителя се показват само файловете, за които потребителят е качил последната версия.',
+'listfiles-summary' => 'Тази специална страница показва всички качени файлове.',
 'listfiles_search_for' => 'Търсене по име на файла:',
 'imgfile' => 'файл',
 'listfiles' => 'Списък на файловете',
@@ -2034,10 +2010,8 @@ $1',
 'protectedpages' => 'Защитени страници',
 'protectedpages-indef' => 'Само безсрочни защити',
 'protectedpages-cascade' => 'Само каскадни защити',
-'protectedpagestext' => 'Следните страници са защитени против редактиране или преместване',
 'protectedpagesempty' => 'В момента няма защитени страници с тези параметри.',
 'protectedtitles' => 'Защитени заглавия',
-'protectedtitlestext' => 'Следните заглавия са защитени срещу създаване',
 'protectedtitlesempty' => 'В момента няма заглавия, защитени с тези параметри.',
 'listusers' => 'Списък на потребителите',
 'listusers-editsonly' => 'Показване само на потребители с редакции',
@@ -2087,9 +2061,6 @@ $1',
 'allpagesto' => 'Показване на страници, завършващи на:',
 'allarticles' => 'Всички страници',
 'allinnamespace' => 'Всички страници (именно пространство $1)',
-'allnotinnamespace' => 'Всички страници (без именно пространство $1)',
-'allpagesprev' => 'Предишна',
-'allpagesnext' => 'Следваща',
 'allpagessubmit' => 'Зареждане',
 'allpagesprefix' => 'Показване на страници, започващи със:',
 'allpagesbadtitle' => 'Зададеното име е невалидно. Възможно е да съдържа междуезикова или междупроектна представка или пък знаци, които не могат да се използват в заглавия.',
@@ -2139,7 +2110,8 @@ $1',
 # Special:ListGroupRights
 'listgrouprights' => 'Права по потребителски групи',
 'listgrouprights-summary' => 'По-долу на тази страница е показан списък на групите потребители в това уики с асоциираните им права за достъп. Допълнителна информация за отделните права може да бъде намерена [[{{MediaWiki:Listgrouprights-helppage}}|тук]].',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Поверено право</span>
+'listgrouprights-key' => 'Легенда:
+* <span class="listgrouprights-granted">Поверено право</span>
 * <span class="listgrouprights-revoked">Отнето право</span>',
 'listgrouprights-group' => 'Група',
 'listgrouprights-rights' => 'Права',
@@ -2404,7 +2376,6 @@ $UNWATCHURL
 'undeletebtn' => 'Възстановяване',
 'undeletelink' => 'преглед/възстановяване',
 'undeleteviewlink' => 'преглеждане',
-'undeletereset' => 'Изчистване',
 'undeleteinvert' => 'Обръщане на избора',
 'undeletecomment' => 'Причина:',
 'undeletedrevisions' => '{{PLURAL:$1|Една версия беше възстановена|$1 версии бяха възстановени}}',
@@ -2493,7 +2464,6 @@ $1',
 'block' => 'Блокиране на потребител',
 'unblock' => 'Отблокиране на потребител',
 'blockip' => 'Блокиране',
-'blockip-title' => 'Блокиране на потребител',
 'blockip-legend' => 'Блокиране на потребител',
 'blockiptext' => 'Формулярът по-долу се използва, за да се забрани правото на писане
 на определен IP-адрес или потребител.
@@ -2503,7 +2473,6 @@ $1',
 'ipadressorusername' => 'IP-адрес или потребител:',
 'ipbexpiry' => 'Срок:',
 'ipbreason' => 'Причина:',
-'ipbreasonotherlist' => 'Друга причина',
 'ipbreason-dropdown' => '* Общи причини за блокиране
 ** Въвеждане на невярна информация
 ** Премахване на съдържание от страниците
@@ -2519,8 +2488,6 @@ $1',
 'ipbsubmit' => 'Блокиране на потребителя',
 'ipbother' => 'Друг срок:',
 'ipboptions' => 'два часа:2 hours,един ден:1 day,три дни:3 days,една седмица:1 week,две седмици:2 weeks,един месец:1 month,три месеца:3 months,шест месеца:6 months,една година:1 year,безсрочно:infinite',
-'ipbotheroption' => 'друг',
-'ipbotherreason' => 'Друга/допълнителна причина:',
 'ipbhidename' => 'Скриване на потребителското име/IP-адреса от редакциите и дневниците',
 'ipbwatchuser' => 'Наблюдаване на потребителската страница и беседата на този потребител',
 'ipb-disableusertalk' => 'Спиране на възможността този потребител да редактира беседата си докато е блокиран',
@@ -2606,7 +2573,6 @@ $1',
 'proxyblockreason' => 'IP-адресът ви беше блокиран, тъй като е анонимно достъпен междинен сървър. Свържете се с доставчика ви на интернет и го информирайте за този сериозен проблем в сигурността.',
 'sorbsreason' => 'IP-адресът ви е записан като анонимно достъпен междинен сървър в DNSBL на {{SITENAME}}.',
 'sorbs_create_account_reason' => 'IP-адресът ви е записан като анонимно достъпен междинен сървър в DNSBL на {{SITENAME}}. Не може да създадете сметка.',
-'cant-block-while-blocked' => 'Не можете да блокирате други потребители, докато сам(а) сте блокиран(а).',
 'cant-see-hidden-user' => 'Потребителят, който опитвате да блокирате, вече е блокиран и скрит. Тъй като нямате права да скривате потребители, не можете да видите или редактирате блокирането на потребителя.',
 'ipbblocked' => 'Не можете да блокирате и разблокирате други потребители, защото вие самият (самата) сте блокиран(а).',
 'ipbnounblockself' => 'Нямате право да се разблокирате сам(а).',
@@ -2662,7 +2628,6 @@ $1',
 В тези случаи, ако желаете, ще е необходимо да преместите страницата ръчно.",
 'movearticle' => 'Преместване на страница:',
 'moveuserpage-warning' => "'''Внимание:''' Предприели сте опит да преместите потребителска страница. Забележете, че от преместването на страницата '''няма''' да последва преименуване на потребителя.",
-'movenologin' => 'Не сте влезли',
 'movenologintext' => 'Необходимо е да [[Special:UserLogin|влезете]], за да може да премествате страници.',
 'movenotallowed' => 'Нямате права за преместване на страници.',
 'movenotallowedfile' => 'Нямате права да премествате файлове.',
@@ -2677,8 +2642,6 @@ $1',
 'movepage-moved-noredirect' => 'Създаването на пренасочване беше спряно.',
 'articleexists' => 'Вече съществува страница с това име или името, което сте избрали, е невалидно. Изберете друго име.',
 'cantmove-titleprotected' => 'Страницата не може да бъде преместена под новото заглавие, тъй като то е защитено от създаване',
-'talkexists' => "'''Страницата беше успешно преместена, но без съответната дискусионна страница, защото под новото име има една съществуваща. Обединете ги ръчно.'''",
-'movedto' => 'преместена като',
 'movetalk' => 'Преместване и на дискусионната страница, ако е приложимо.',
 'move-subpages' => 'Преместване на всички подстраници (до $1)',
 'move-talk-subpages' => 'Преместване на всички подстраници на беседата (до $1)',
@@ -3385,8 +3348,8 @@ $1',
 'exif-gpslongitude-w' => 'западна дължина',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|метър|метра}} над морското равнище',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|метър|метра}} под морското равнище',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метър|метра}} над морското равнище',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метър|метра}} под морското равнище',
 
 'exif-gpsstatus-a' => 'Измерване в ход',
 'exif-gpsstatus-v' => 'Оперативна съвместимост на измерването',
@@ -3445,15 +3408,10 @@ $1',
 'exif-urgency-high' => 'Висока ($1)',
 'exif-urgency-other' => 'Зададен от потребителя приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Редактиране на файла чрез външно приложение',
-'edit-externally-help' => '(За повече информация прегледайте [https://www.mediawiki.org/wiki/Manual:External_editors указанията за настройките]).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'всички',
 'namespacesall' => 'Всички',
 'monthsall' => 'всички',
-'limitall' => 'всички',
 
 # Email address confirmation
 'confirmemail' => 'Потвърждаване на адрес за електронна поща',
@@ -3470,7 +3428,6 @@ $1',
 'confirmemail_needlogin' => 'Необходимо е да $1, за потвърждаване на адреса за електронна поща.',
 'confirmemail_success' => 'Адресът ви за електронна поща беше потвърден. Вече можете да влезете и да се наслаждавате на уикито.',
 'confirmemail_loggedin' => 'Адресът ви за електронна поща беше потвърден.',
-'confirmemail_error' => 'Станала е грешка при потвърждаването на адреса ви.',
 'confirmemail_subject' => '{{SITENAME}} — Потвърждаване на адрес за е-поща',
 'confirmemail_body' => 'Някой, вероятно вие, от IP-адрес $1, е регистрирал потребител „$2“ в {{SITENAME}}, като е посочил този адрес за електронна поща.
 
@@ -3496,7 +3453,7 @@ $5
 
 Валидността на този код за потвърждение ще важи до $4.',
 'confirmemail_body_set' => 'Някой, вероятно вие, от IP адрес $1,
-е посочил този адрес за електронната поща, свързан с потребителска сметка "$2" в {{SITENAME}}.
+е посочил този адрес за електронната поща, свързан с потребителска сметка „$2“ в {{SITENAME}}.
 
 За потвърждаване, че тази потребителска сметка наистина ви принадлежи и за да активирате отново функциите, свързани с електронна поща в {{SITENAME}}, необходимо е да отворите във вашия браузър следната препратка:
 
@@ -3543,6 +3500,9 @@ $5
 'imgmultigo' => 'Отваряне',
 'imgmultigoto' => 'Отиване на страница $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(език по подразбиране)',
+
 # Table pager
 'ascending_abbrev' => 'възх',
 'descending_abbrev' => 'низх',
@@ -3653,9 +3613,9 @@ MediaWiki се разпространява с надеждата, че ще б
 
 # Special:SpecialPages
 'specialpages' => 'Специални страници',
+'specialpages-note-top' => 'Легенда',
 'specialpages-note' => '* Обикновени специални страници.
-* <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>
-* <span class="mw-specialpagecached">Само складирани специални страници (възможно е да са остарели).</span>',
+* <strong class="mw-specialpagerestricted">Специални страници с ограничения.</strong>',
 'specialpages-group-maintenance' => 'Доклади по поддръжката',
 'specialpages-group-other' => 'Други специални страници',
 'specialpages-group-login' => 'Влизане / създаване на сметка',
@@ -3701,7 +3661,6 @@ MediaWiki се разпространява с надеждата, че ще б
 
 # Special:ComparePages
 'comparepages' => 'Сравняване на страници',
-'compare-selector' => 'Сравняване версиите на страници',
 'compare-page1' => 'Страница 1',
 'compare-page2' => 'Страница 2',
 'compare-rev1' => 'Версия 1',
@@ -3754,8 +3713,8 @@ MediaWiki се разпространява с надеждата, че ще б
 '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 отбеляза като патрулирана версия $4 на страницата „$3“',
-'logentry-patrol-patrol-auto' => '$1 автоматично отбеляза като патрулирана версия $4 на страницата $3',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата „$3“',
+'logentry-patrol-patrol-auto' => '$1 автоматично {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата $3',
 'logentry-newusers-newusers' => 'Потребителската сметка $1 беше {{GENDER:$2|създадена}}',
 'logentry-newusers-create' => 'Потребителската сметка $1 беше {{GENDER:$2|създадена}}',
 'logentry-newusers-create2' => '$1 {{GENDER:$2|създаде}} потребителска сметка $3',
index dac392c..f6a5fe1 100644 (file)
@@ -68,7 +68,6 @@ $messages = array(
 'tog-minordefault' => 'सारा सम्पादन के छोट सम्पादन के रुप में चिन्हित करीं',
 'tog-previewontop' => 'सम्पादन बक्सा से पहिले पुर्वदर्शन दिखाईं।',
 'tog-previewonfirst' => 'पहिलका सम्पादन पर पूर्वावलोकन देखीं',
-'tog-nocache' => 'ब्राउजर पन्ना के कैशिंग अक्षम करीं',
 'tog-enotifwatchlistpages' => 'हमार ध्यानसूची में दर्ज कौनो भी पन्ना या फाईल में परिवर्तन होखला पर हमके ई-मेल करल जाव',
 'tog-enotifusertalkpages' => 'यदि हमार वार्तालाप पन्ना पर कौनो परिवर्तन होखे त हमके ई मेल करल जाव',
 'tog-enotifminoredits' => 'पन्ना आ फाईल पर छोटो परिवर्तन होखे त हमके ई मेल करल जाव',
@@ -203,7 +202,6 @@ $messages = array(
 'qbedit' => 'सम्पादन',
 'qbpageoptions' => 'ई पन्ना',
 'qbmyoptions' => 'हमार पन्ना',
-'qbspecialpages' => 'विशेष पन्ना',
 'faq' => 'साधारण सवाल',
 'faqpage' => 'Project:साधारण सवाल',
 
@@ -414,9 +412,6 @@ $1',
 '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' => 'कार्य समाप्त कर दिहल गइल बा',
@@ -595,7 +590,7 @@ $2',
 'user-mail-no-body' => 'एगो खाली अथवा बहुत छोट ई-मेल भेजे के प्रयत्न भईल बा।',
 
 # Change password dialog
-'resetpass' => 'गुप्त-शब्द बदलीं',
+'changepassword' => 'गुप्त शब्द बदलीं',
 'resetpass_announce' => 'रउआ ई-मेल से प्राप्त अस्थायी कोड से खाता में प्रवेश भईल बानी।
 खाता प्रवेश के पूरा करे खातिर रउआ इहाँ एगो नया गुप्तशब्द देवे के पड़ी:',
 'resetpass_header' => 'खाता के गुप्तशब्द बदलीं',
@@ -820,8 +815,6 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'revdelete-radio-unset' => 'ना',
 'revdelete-log' => 'कारण:',
 'revdel-restore' => 'दूश्यता बदलीं',
-'revdel-restore-deleted' => 'मिटल संसोधन',
-'revdel-restore-visible' => 'दृश्यमान संसोधन',
 'pagehist' => 'पन्ना के इतिहास',
 'deletedhist' => 'मिटावल इतिहास',
 'revdelete-otherreason' => 'अन्य/अतिरिक्त कारण:',
@@ -848,11 +841,7 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 # Search results
 'searchresults' => 'खोज परिणाम',
 'searchresults-title' => '$1 खातिर खोज परिणाम',
-'searchresulttext' => '{{SITENAME}} के खोज करे के बारे में अधिक जानकारी खातिर, देखीं [[{{MediaWiki:Helppage}}| {{int:help}}]]।',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' खातिर राउर करल गईल खोज ([[Special:Prefixindex/$1| "$1" से शुरु होवे वाला सब पन्ना]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
-'searchsubtitleinvalid' => "रउआ '''$1''' खातिर खोज कईनी ह",
 'titlematches' => 'पन्ना के शिर्षक मिलत बा।',
-'notitlematches' => 'पन्ना के शिर्षक नईखे मिलत',
 'textmatches' => 'पन्ना के पाठ्य मिलत बा',
 'notextmatches' => 'पन्ना के पाठ्य नईखे मिलत',
 'prevn' => 'पिछला {{PLURAL:$1|$1}}',
@@ -861,10 +850,8 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'nextn-title' => 'अगला $1 {{PLURAL:$1|परिणाम}}',
 'shown-title' => 'दिखाईं $1 {{PLURAL:$1|परिणाम}}',
 'viewprevnext' => 'देखीं ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''इ विकि पर ''[[:$1]]'' नाम से एगो पन्ना उपलब्ध बा'''",
 'searchmenu-new' => "'''इ विकि पर ''[[:$1]]'' नाम से पन्ना बनाईं'''",
-'searchmenu-prefix' => '[[विशेष:उपसर्ग सूची/$1|इ उपसर्ग साथे पन्ना ब्राउज करीं]]',
 'searchprofile-articles' => 'सामग्री पन्ना',
 'searchprofile-project' => 'मदद आ परियोजना पन्ना',
 'searchprofile-images' => 'मल्टिमीडिया',
@@ -884,18 +871,15 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'search-interwiki-default' => '$1 के परिणाम:',
 'search-interwiki-more' => '(अउर)',
 'search-relatedarticle' => 'संबंधित',
-'mwsuggest-disable' => 'AJAX सुझाव असक्षम',
 'searcheverything-enable' => 'सभन सन्दर्भ में खोजीं',
 'searchrelated' => 'संबंधित',
 'searchall' => 'सब',
 'showingresults' => "नीचे देखावल जा रहल बा {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम}} #'''$2''' से शुरु होवे वाला।",
 'showingresultsnum' => "नीचे देखावल जा रहल बा {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम}} #'''$2''' से शुरु होवे वाला।",
 'search-nonefound' => 'राउर खोज मे से मेल खात कउनो परिणाम नईखे बा',
-'powersearch' => 'उन्नत खोज',
 'powersearch-legend' => 'उन्नत खोज',
 'powersearch-ns' => 'सन्दर्भ में खोजीं',
 'powersearch-redir' => 'पुन:निर्देश सूची',
-'powersearch-field' => 'खातिर खोज',
 'powersearch-togglelabel' => 'जाँच:',
 'powersearch-toggleall' => 'सब',
 'powersearch-togglenone' => 'कउनो ना',
@@ -905,7 +889,6 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 'preferences' => 'वरीयता',
 'mypreferences' => 'राउर पसन्द',
 'prefs-edits' => 'सम्पादन संख्या',
-'changepassword' => 'गुप्त शब्द बदलीं',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'पूर्वावलोकन',
 'prefs-beta' => 'बीटा विशेषता',
@@ -1176,7 +1159,6 @@ Legend: '''({{int:cur}})''' = हाल के संशोधन के सा
 # 'all' in various places, this might be different for inflected languages
 'namespacesall' => 'सब',
 'monthsall' => 'सब',
-'limitall' => 'सब',
 
 # Email address confirmation
 'confirmemail' => 'इ-मेल पता कन्फर्म करीं',
index 4b28f49..8cbaa93 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Iketsi
+ * @author Sotiale
  * @author Ushanka
  */
 
@@ -69,25 +70,36 @@ $messages = array(
 'qbedit' => 'Jenisim hem',
 'qbpageoptions' => 'Pej ia',
 'qbmyoptions' => 'Ol pej blong mi',
-'qbspecialpages' => 'Ol spesel pej',
 
+# Vector skin
+'vector-action-move' => 'Muv',
+'vector-view-history' => 'Lukluk histri',
+'vector-view-view' => 'Rid',
+
+'search' => 'Faenem samting',
+'history' => 'Pej histri',
+'history_short' => 'Histri',
 'edit' => 'Jenisim hem',
 'newpage' => 'Mekem niu pej',
 'talkpagelinktext' => 'Toktok',
 'specialpage' => 'Spesel Pej',
 'talk' => 'Tingting',
 
-# 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).
+# 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).
 'mainpage' => 'Nambawan Pej',
 'mainpage-description' => 'Nambawan Pej',
+'portal' => 'Haus blong toktok‎',
+'portal-url' => 'Project:Haus blong toktok‎',
 
 'retrievedfrom' => 'Kam long "$1"',
 'editsection' => 'jenisim hem',
 'editold' => 'jenisim hem',
+'red-link-title' => '$1 (pej i no stap)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Atikel',
-'nstab-special' => 'Spesel',
+'nstab-special' => 'Spesel pej',
+'nstab-project' => 'Projek pej',
 
 # Edit pages
 'minoredit' => 'Mi bin mekem wan smol jenis',
@@ -95,6 +107,9 @@ $messages = array(
 # Preferences page
 'servertime' => 'Taem blong server',
 
+# Recent changes
+'recentchanges' => 'Niu jenis',
+
 # Special:ListFiles
 'listfiles_name' => 'Nem',
 
@@ -106,7 +121,7 @@ $messages = array(
 # Special:AllPages
 'allarticles' => 'Olgeta atikel',
 
-# E-mail user
+# Email user
 'emailfrom' => 'Kam long',
 'emailto' => 'Go long:',
 
@@ -115,9 +130,6 @@ $messages = array(
 
 'sp-contributions-talk' => 'toktok',
 
-# Block/unblock
-'proxyblocksuccess' => 'Finis.',
-
 # Move page
 'move-page-legend' => 'Muvum pej',
 'movearticle' => 'Muvum pej:',
@@ -134,7 +146,7 @@ $messages = array(
 # Special:NewFiles
 'showhidebots' => '($1 bot)',
 
-# EXIF tags
+# Exif tags
 'exif-imagedescription' => 'Nem blong pikta',
 'exif-exposuretime-format' => '$1 sek. ($2)',
 
@@ -149,4 +161,7 @@ $messages = array(
 # Auto-summaries
 'autosumm-new' => 'Niu pej: $1',
 
+# Special:SpecialPages
+'specialpages' => 'Spesel pej',
+
 );
index 1fa6419..4d49bd7 100644 (file)
@@ -61,7 +61,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Judul_nang_buruk' ),
        'Blankpage'                 => array( 'Tungkaran_kusung' ),
        'Block'                     => array( 'Blukir_pamakai' ),
-       'Blockme'                   => array( 'Blukir_ulun' ),
        'Booksources'               => array( 'Sumbar_buku' ),
        'BrokenRedirects'           => array( 'Paugahan_rakai' ),
        'Categories'                => array( 'Daptar_tumbung' ),
@@ -73,8 +72,8 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Ulah_akun' ),
        'Deadendpages'              => array( 'Tungkaran_buntu' ),
        'DeletedContributions'      => array( 'Sumbangan_nang_dihapus' ),
-       'Disambiguations'           => array( 'Disambiguasi' ),
        'EditWatchlist'             => array( 'Babak_daptar_pantauan' ),
+       'ExpandTemplates'           => array( 'Kambangakan_citakan' ),
        'Fewestrevisions'           => array( 'Paubahan_tasadikit' ),
        'FileDuplicateSearch'       => array( 'Panggagaian_barakas_kambar' ),
        'Filepath'                  => array( 'Andakan_barakas' ),
@@ -110,6 +109,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Tungkaran_nang_dilindungi' ),
        'Protectedtitles'           => array( 'Judul_nang_dilindungi' ),
        'Randompage'                => array( 'Tungkaran_babarang' ),
+       'RandomInCategory'          => array( 'Babarang_di_tumbung' ),
        'Randomredirect'            => array( 'Paugahan_babarang' ),
        'Recentchanges'             => array( 'Paubahan_pahanyarnya' ),
        'Recentchangeslinked'       => array( 'Paubahan_tarait' ),
@@ -165,7 +165,6 @@ $messages = array(
 'tog-minordefault' => 'Tandai samunyaan babakan sawagai babakan sapalih sacara baku',
 'tog-previewontop' => 'Tampaiakan titilikan sabalum kutak babak',
 'tog-previewonfirst' => 'Tampaiakan titilikan pada babakan panambaian',
-'tog-nocache' => 'Nonaktifkan panyinggahan tungkaran paramban',
 'tog-enotifwatchlistpages' => 'Kirimi ulun sur-él amun sabuting tungkaran dalam daptar itihan ulun baubah',
 'tog-enotifusertalkpages' => 'Surili ulun amun tungkaran pamandiran ulun baubah',
 'tog-enotifminoredits' => 'Kirimi ulun sur-él jua amun ada babakan sapalih matan tungkaran-tungkaran',
@@ -287,7 +286,6 @@ $messages = array(
 'qbedit' => 'Babak',
 'qbpageoptions' => 'Tungkaran ini',
 'qbmyoptions' => 'Tungkaran ulun',
-'qbspecialpages' => 'Tungkaran istimiwa',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -495,9 +493,6 @@ Nangini kawa baisi satu atawa labih hurup nang saharusnya kadada di judul.',
 'perfcached' => 'Data barikut adalah timbuluk wan pina kada mutakhir. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Data nang dudi ni adalah timbuluk, wan tauncit dihahanyari pada $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Pamugaan matan tungkaran ngini rahat dipajahkan. Data nang ada di sia wayahini kada akan dimuat ulang.',
-'wrong_wfQuery_params' => 'Kada bujur ukuran ka wfQuery ()<br />
-Pungsi: $1<br />
-Parmintaan: $2',
 'viewsource' => 'Tiringi asal mulanya',
 'viewsource-title' => 'Tiringi asalmula matan $1',
 'actionthrottled' => 'Kalakuan dikiripi',
@@ -637,7 +632,7 @@ Muhun hadangi dahulu sapandang hanyar cubai pulang.',
 'user-mail-no-body' => 'Manarai hagan mangirim suril puang atawa talalu handap.',
 
 # Change password dialog
-'resetpass' => 'Ubah katasunduk',
+'changepassword' => 'Ubah katasunduk',
 'resetpass_announce' => 'Pian babuat log awan sabuting kode samantara nang disurili.
 Hagan manuntungakan babuat log, Pian musti manyetel sabuting katasunduk hanyar di sia:',
 'resetpass_header' => 'Ubah katasunduk akun',
@@ -862,7 +857,7 @@ Pambakal nang manyunduk manjalasakan kaini: $1",
 Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
 'semiprotectedpagewarning' => "'''Catatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai tadaptar haja nang kawa mambabak.
 Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
-'cascadeprotectedwarning' => "'''Paringatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai awan hak istimiwa pambakal haja nang kawa mambabak, sualnya ngini tamasuk dalam baumpat parlindungan barénténg {{PLURAL: $1|tungkaran|tutungkaran}}:",
+'cascadeprotectedwarning' => "'''Paringatan:''' Tungkaran ngini sudah dilindungi nang akibatnya pamakai awan hak istimiwa pambakal haja nang kawa mambabak, sualnya ngini tamasuk dalam baumpat parlindungan barénténg {{PLURAL:$1|tungkaran|tutungkaran}}:",
 'titleprotectedwarning' => "'''Paringatan: Tungkaran ngini sudah dilindungi nang akibatnya [[Special:ListGroupRights|hak khas]] diparluakan hagan maulah ngini.'''
 Log masuk pauncitnya disadiakan di bawah gasan rujukan:",
 'templatesused' => '{{PLURAL:$1|Citakan|Citakan}} nang digunakan di tungkaran ngini:',
@@ -1003,10 +998,6 @@ Sawagai saurang pambakal Pian kawa nang balain ini; rarincian kawa diugai dalam
 'revisiondelete' => 'Hapus/kada mahapus ralatan-ralatan',
 'revdelete-nooldid-title' => 'Ralatan nag dituju kada sah',
 'revdelete-nooldid-text' => 'Pian kada maajuakan sabuah ralatan(-ralatan) tatuju hagan malakuakan pungsi ini, ralatan nang dituju kadada, atawa Pian mancuba manyungkupakan ralatan parhatan ini.',
-'revdelete-nologtype-title' => 'Kadada macam log dibari',
-'revdelete-nologtype-text' => 'Pian kada maajuakan sabuah macam log hagan malakuakan palakuan ini.',
-'revdelete-nologid-title' => 'Log buat kada sah',
-'revdelete-nologid-text' => 'Pian kada maajuakan sabuah log kajadian tatuju hagan malakuakan pungsi ini atawa buat nang diajuakan kadada.',
 'revdelete-no-file' => 'Barakas nang diajuakan kadada.',
 'revdelete-show-file-confirm' => 'Pian bujurkah handak maniringi sabuah ralatan tahapus matan barakas "<nowiki>$1</nowiki>" $2 pada $3?',
 'revdelete-show-file-submit' => 'Iya-ai',
@@ -1040,8 +1031,6 @@ $1",
 'logdelete-failure' => "'''Log panampaian kada kawa disetel:'''
 $1",
 'revdel-restore' => 'Ubah tampilan',
-'revdel-restore-deleted' => 'Ralatan-ralatan tahapus',
-'revdel-restore-visible' => 'Ralatan-ralatan kalihatan',
 'pagehist' => 'Sajarah tungkaran',
 'deletedhist' => 'Halam tahapus',
 'revdelete-hide-current' => 'Tasalah manyungkupakan nang batanggal $1, $2: ngini adalah ralatan pahanyarnya.
@@ -1112,12 +1101,8 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 # Search results
 'searchresults' => 'Kulihan panggagaian',
 'searchresults-title' => 'Kulihan gagai gasan "$1"',
-'searchresulttext' => 'Gasan panjalasan labih lanjut pasal panggagaian pintangan {{SITENAME}}, lihati [[{{MediaWiki:Helppage}}|tungkaran patulung]].',
-'searchsubtitle' => 'Pian manggagai \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|samunyaan tungkaran bamula wan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|samunyaan tungkaran nang bataut ka "$1"]])',
-'searchsubtitleinvalid' => "Pian manggagai '''$1'''",
 'toomanymatches' => 'Kabanyakan nang cucuk kulihan, muhun cubai parmintaan lain',
 'titlematches' => 'Judul tungkaran pas',
-'notitlematches' => 'Kadada tungkaran bajudul pas',
 'textmatches' => 'Naskah tungkaran pas',
 'notextmatches' => 'Kadada tungkaran banaskah pas',
 'prevn' => '{{PLURAL:$1|$1}} tadahulu',
@@ -1126,10 +1111,8 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 'nextn-title' => 'Tadudi $1 {{PLURAL:$1|kulihan|kulihan-kulihan}}',
 'shown-title' => 'Tampaiakan $1 {{PLURAL:$1|kulihan|kukulihan}} par tungkatan',
 'viewprevnext' => 'Tiringi ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Papilihan manggagai',
 'searchmenu-exists' => "'''Ada tungkaran bangaran \"[[:\$1]]\" dalam wiki ini.'''",
 'searchmenu-new' => "'''Maulah tungkaran \"[[:\$1]]\" dalam wiki ngini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Janaki daptar tungkaran lawan awalan ngini]]',
 'searchprofile-articles' => 'Tungkaran isi',
 'searchprofile-project' => 'Tutungkaran Patulung wan Rangka gawian',
 'searchprofile-images' => 'Multimadia',
@@ -1150,21 +1133,16 @@ Catatan bahwasa mamuruk tautan napigasi akan mambulikakan setelan kolum ngini.',
 'search-interwiki-default' => 'Kulihan $1',
 'search-interwiki-more' => '(lagi)',
 'search-relatedarticle' => 'Bakulaan',
-'mwsuggest-disable' => "Kada kawa'akan sasaran AJAX",
 'searcheverything-enable' => 'Panggagaian pada samunyaan ngaran kakamar',
 'searchrelated' => 'bakulaan',
 'searchall' => 'samunyaan',
 'showingresults' => "Di bawah ngini ditampaiakan hingga {{PLURAL:$1|'''1''' kulihan|'''$1''' kukulihan}}, dimulai matan #'''$2'''.",
 'showingresultsnum' => "Di bawah ngini ditampaiakan hingga {{PLURAL:$3|'''1''' kulihan|'''$3''' kukulihan}}, dimulai matan #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Kulihan '''$1''' matan '''$3'''|Kukulihan '''$1 - $2''' matan '''$3'''}} gasan '''$4'''",
-'nonefound' => "'''Catatan''': babarapa ngaran kamar haja nang baku digagai.
-Tarai pamintaan Pian lawan ''all:'' gasan manggagai samunyaan isi (tamasuk tungkaran pamandiran, citakan, dll), atawa puruk ngaran kamar nang dihandaki sabagai awalan.",
 'search-nonefound' => 'Kadada kulihan nang pas awan parmintaan.',
-'powersearch' => 'Panggagaian mahir',
 'powersearch-legend' => 'Panggagaian mahir',
 'powersearch-ns' => 'Manggagai di ngaran kamar:',
 'powersearch-redir' => 'Daptar paugahan',
-'powersearch-field' => 'Manggagai',
 'powersearch-togglelabel' => 'Pilihi:',
 'powersearch-toggleall' => 'Samunyaan',
 'powersearch-togglenone' => 'Kadada',
@@ -1177,7 +1155,6 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
 'preferences' => 'Kakatujuan',
 'mypreferences' => 'Nang ulun katuju',
 'prefs-edits' => 'Rikinan babakan-babakan:',
-'changepassword' => 'Ubah katasunduk',
 'prefs-skin' => 'Kulimbit',
 'skin-preview' => 'Titilikan',
 'datedefault' => 'Kadada katujuan',
@@ -1199,13 +1176,11 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
 'prefs-email' => 'Pipilihan suril',
 'prefs-rendering' => 'Pancungulan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Walangakan paubahan',
 'restoreprefs' => 'Bulikakan samunyaan sesetélan default',
 'prefs-editing' => 'Pambabakan',
 'rows' => 'Baris:',
 'columns' => 'Kolom:',
 'searchresultshead' => 'Gagai',
-'resultsperpage' => 'Hantukan par tungkaran:',
 'stub-threshold' => 'Ambang watas gasan pormat <a href="#" class="stub">taautan rintisan</a>:',
 'stub-threshold-disabled' => 'Kada kawa-akan',
 'recentchangesdays' => 'Jumlah hari nang manampaiakan paubahan pahanyarnya:',
@@ -1217,7 +1192,6 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
 'localtime' => 'Waktu damintu:',
 'timezoneuseserverdefault' => "Guna'akan bawaan wiki ($1)",
 'timezoneuseoffset' => 'Nang lain (ajuakan nang luput setel)',
-'timezoneoffset' => 'Luput setel¹:',
 'servertime' => 'Waktu server:',
 'guesstimezone' => 'Isiakan matan panjalajah web',
 'timezoneregion-africa' => 'Aprika',
@@ -1450,7 +1424,6 @@ Amun Pian mamilih manyadiakan ini, ini akan dipuruk gasan paminanduan kulihan ga
 'recentchanges-label-bot' => 'Babakan ngini digawi ulih saikung bot',
 'recentchanges-label-unpatrolled' => "Babakan ngini baluman ta'awasi",
 'recentchanges-legend-newpage' => '$1 - tungkaran puga',
-'rcnote' => "Di bawah ni {{PLURAL:$1|'''1'''|'''$1'''}} paubahan pahanyarnya dalam {{PLURAL:$2|'''1''' hari|'''$2''' hari}} tauncit, sampai $4 pukul $5.",
 'rcnotefrom' => "Di bawah ngini paubahan tumatan '''$2''' (ditampaiakan sampai '''$1''' paubahan)",
 'rclistfrom' => 'Tampaiakan paubahan pahanyarnya matan $1',
 'rcshowhideminor' => '$1 pambabakan sapalih',
@@ -1914,10 +1887,8 @@ File-file berikut digunakan tapi tidak ada. File dari repositori asing dapat ter
 'protectedpages' => 'Tutungkaran nang dilindungi',
 'protectedpages-indef' => 'Wastu gasan palindungan lawan jangka waktu kada bawatas',
 'protectedpages-cascade' => 'Palindungan barénténg haja',
-'protectedpagestext' => 'Tutungkaran barikut dilindungi matan pamindahan atawa pambabakan',
 'protectedpagesempty' => 'Kadada tutungkaran nang masih dilindungi awan paramitir ngitu.',
 'protectedtitles' => 'Jujudul nang dilindungi',
-'protectedtitlestext' => 'Jujudul barikut dilindungi gasan diulah',
 'protectedtitlesempty' => 'Kadada jujudul nang masih dilindungi awan paramitir ngitu.',
 'listusers' => 'Daptar pamuruk',
 'listusers-editsonly' => 'Tiringi papamuruk awan babakan',
@@ -1968,9 +1939,6 @@ Pian kada mawatasi tiringan lawan mamilih sabuah macam log, ngaran-pamuruk (sans
 'allpagesto' => 'Manampaiakan ujung pahabisan tungkaran:',
 'allarticles' => 'Samunyaan tungkaran',
 'allinnamespace' => 'Sabarataan tutungkaran (ngaran-kamar $1)',
-'allnotinnamespace' => 'Sabarataan tutungkaran (lainan di ruang-ngaran $1)',
-'allpagesprev' => 'Sabalumnya',
-'allpagesnext' => 'Dudi',
 'allpagessubmit' => 'Tulak',
 'allpagesprefix' => 'Tampilakan tutungkaran bamula lawan:',
 'allpagesbadtitle' => 'Judul tungkaran nang dibari kada sah atawa baisi sabuah awalan antar-bahasa atawa antar-wiki.
@@ -2306,7 +2274,6 @@ Pian kalu-ai baisi tautan buruk, atawa ralatan sudah dibulikakan atau dibuang ma
 'undeletebtn' => 'Bulikakan',
 'undeletelink' => 'tiring/bulikakan',
 'undeleteviewlink' => 'tiringi',
-'undeletereset' => 'Bulikakan setelan',
 'undeleteinvert' => 'Bulikakan pilihan',
 'undeletecomment' => 'Alasan:',
 'undeletedrevisions' => '{{PLURAL:$1|1 ralatan|$1 raralatan}} dibulikakan',
@@ -2395,7 +2362,6 @@ Log blukir pahabisannya tasadia di bawah ngini gasan rujukan:',
 'block' => 'Blukir pamuruk',
 'unblock' => 'Lapas blukir pamuruk',
 'blockip' => 'Blukir pamuruk',
-'blockip-title' => 'Blukir pamuruk',
 'blockip-legend' => 'Blukir pamuruk',
 'blockiptext' => 'Puruk purmulir di bawah hagan mamblukir hak ungkai manulis matan sabuah alamat IP atawa ngaran-pamuruk.
 Ngini dipuruk hagan mancagah vandalisma haja, wan sasuai awan [[{{MediaWiki:Policy-url}}|kabijakan]].
@@ -2403,7 +2369,6 @@ Isi sabuah alasan khas di bawah (gasan cuntuh, manulisakan tutungkaran nang suah
 'ipadressorusername' => 'Alamat IP atawa ngaran pamuruk:',
 'ipbexpiry' => 'Kadaluwarsa:',
 'ipbreason' => 'Alasan:',
-'ipbreasonotherlist' => 'Alasan nang lain',
 'ipbreason-dropdown' => '*Alasan awam pamblukiran
 ** Mambuati panjalasan salah
 ** Mambuang isi matan tutungkaran
@@ -2419,8 +2384,6 @@ Isi sabuah alasan khas di bawah (gasan cuntuh, manulisakan tutungkaran nang suah
 'ipbsubmit' => 'Blukir pamuruk ngini',
 'ipbother' => 'Wayah lain:',
 '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,salawasan:infinite',
-'ipbotheroption' => 'lainnya',
-'ipbotherreason' => 'Alasan lain/tambahan:',
 'ipbhidename' => 'Sungkupakan ngaranpamuruk matan babakan wan dadaptar',
 'ipbwatchuser' => 'Itihi tutungkaran pamuruk wan pamandiran pamuruk ngini',
 'ipb-disableusertalk' => 'Tangkal pamuruk ngini mambabak tungkaran pamandirannya wayah diblukir',
@@ -2512,7 +2475,6 @@ Muhun hubungi Panyadia Layan Internet Pian atawa sukungan tiknik wan padahi sidi
 'sorbsreason' => 'Alamat IP Pian tadaptar sawagai pruksi tabuka dalam DNSBL dipuruk ulih {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Alamat IP Pian tadaptar sawagai pruksi tabuka dalam DNSBL dipuruk ulih {{SITENAME}}.
 Pian kada kawa maulah sabuah akun',
-'cant-block-while-blocked' => 'Pian kada kawa mamblukir pamuruk lain parhatan Pian diblukir.',
 'cant-see-hidden-user' => 'Pamuruk nang Pian cuba blukir sudah diblukir wan tasungkup.
 Tumatan Pian kada baisi hak mnyungkupakan pamuruk, Pian kada kawa manjanaki atawa mambabak pamblukiran pamuruk.',
 'ipbblocked' => 'Pian kada kawa mamblukir atau malapas blukir pamuruk lain, karana Pian surang diblukir',
@@ -2564,7 +2526,6 @@ muhun mamastiakan Pian paham akibatnya sabalum manarusakan.",
 *Pian kada manyuntring kutak di bawah.",
 'movearticle' => 'Pindahakan tungkaran:',
 'moveuserpage-warning' => "'''Paringatan:''' Pian pasal mamindahakan sabuah tungkaran pamuruk. Muhun catat tungkaran ngitu haja nang dipindah wan pamuruknya gin akan ''kada'' dingarani-pulang.",
-'movenologin' => 'Baluman babuat log',
 'movenologintext' => 'Pian musti saurang pamuruk tadaptar wan [[Special:UserLogin|babuat log]] hagan mamindahakan sabuah tungkaran.',
 'movenotallowed' => 'Pian kada baisi ijin hagan mamindahakan tutungkaran.',
 'movenotallowedfile' => 'Pian kada baisi ijin hagan mamindahakan babarakas.',
@@ -2579,8 +2540,6 @@ muhun mamastiakan Pian paham akibatnya sabalum manarusakan.",
 'movepage-moved-noredirect' => 'Paulahan sabuah paugahan ditikin.',
 'articleexists' => 'Tungkaran lawan ngaran itu sudah ada atawa ngaran nang dipilih kada sah. Silakan pilih ngaran lain.',
 'cantmove-titleprotected' => 'Pian kada kawa mamindahakan sabuah tungkaran ka lukasi ngini, karana sabuah judul hanyar dilindungi gasan diulah.',
-'talkexists' => "'''Tungkaran itu sudah ruhui dipindahakan, tapi tungkaran pamandirannya kada kawa tapindah karana sudah ada tungkaran pamandiran bajudul hanyar. Muhun gabungakan manual haja tungkaran-tungkaran itu.'''",
-'movedto' => 'dipindahakan ka',
 'movetalk' => 'Pindahakan tungkaran pamandiran nang tarait',
 'move-subpages' => 'Pindahakan sub-tutungkaran (sampai $1)',
 'move-talk-subpages' => 'Pindahakan sub-tutungkaran matan tungkaran pamandiran (sampai $1)',
@@ -3364,15 +3323,10 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
 'exif-urgency-high' => 'Pancau ($1)',
 'exif-urgency-other' => 'Ganti-suai utamaan ($1)',
 
-# External editor support
-'edit-externally' => 'Babak barakas ngini puruk sabuah aplikasi luar',
-'edit-externally-help' => '(Lihati [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] untuk panjalasan labih)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'samunyaan',
 'namespacesall' => 'samunyaan',
 'monthsall' => 'samunyaan',
-'limitall' => 'samunyaan',
 
 # Email address confirmation
 'confirmemail' => 'Yakinakan alamat suril',
@@ -3397,7 +3351,6 @@ Si kudi pinanya sudah kadaluarsa.',
 'confirmemail_success' => 'Alamat suril Pian sudah diyakinakan.
 Rahatan ni Pian kawa [[Special:UserLogin|babuat log]] wan bahimung wiki.',
 'confirmemail_loggedin' => 'Alamat suril Pian rahatan ni sudah diyakinakan.',
-'confirmemail_error' => 'Ada nang tasalah rahatan manyimpan payakinan Pian.',
 'confirmemail_subject' => '{{SITENAME}} alamat suril payakinan',
 'confirmemail_body' => 'Sasaurang, pinanya Pian, malan alamat IP $1,
 sudah mandaptarakan sabuah akun "$2" awan alamat suril ngini pada {{SITENAME}}.
@@ -3626,7 +3579,6 @@ Pian saharusnya [{{SERVER}}{{SCRIPTPATH}}/COPYING sabuting salinan Lisansi Publi
 
 # Special:ComparePages
 'comparepages' => 'Bandingakan tutungkaran',
-'compare-selector' => 'Tanding raralatan tungkaran',
 'compare-page1' => 'Tungkaran 1',
 'compare-page2' => 'Tungkaran 2',
 'compare-rev1' => 'Ralatan 1',
index 95a0246..06145ef 100644 (file)
@@ -13,6 +13,9 @@
 
 $fallback = 'fr';
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-hideminor' => 'Yɛlɛmaliw kura fitini dogo',
@@ -39,7 +42,6 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Nyini',
 'qbedit' => 'Yɛlɛma',
-'qbspecialpages' => 'Nyɛw kɛrɛnkɛrɛnnen',
 
 'help' => 'Dɛmɛ',
 'search' => 'Nyini',
@@ -59,7 +61,7 @@ $messages = array(
 'otherlanguages' => 'Kanw wɛrɛ',
 'jumptosearch' => 'Nyini',
 
-# 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).
+# 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).
 'currentevents' => 'Kunnafoni',
 'currentevents-url' => 'Project:Kunnafoni',
 'disclaimers' => 'Kangari',
@@ -85,9 +87,6 @@ $messages = array(
 'editingsection' => '$1 ka yɛlɛmali (section)',
 'editingcomment' => '$1 ka yɛlɛmali (baro)',
 
-# Search results
-'powersearch' => 'Nyini',
-
 # Preferences page
 'preferences' => 'Fisayali',
 'prefs-skin' => 'Apparence',
index fbbe4ce..2fee72c 100644 (file)
@@ -93,7 +93,6 @@ $messages = array(
 'tog-minordefault' => 'শুরুতেই সব সম্পাদনাকে অনুল্লেখ্য বলে চিহ্নিত করা হোক',
 'tog-previewontop' => 'সম্পাদনা বাক্সের আগে প্রাকদর্শন দেখানো হোক',
 'tog-previewonfirst' => 'প্রথম সম্পাদনার ক্ষেত্রে প্রাকদর্শন দেখানো হোক',
-'tog-nocache' => 'ব্রাউজার পাতা ক্যাশিং নিষ্ক্রিয় করো',
 'tog-enotifwatchlistpages' => 'আমার নজর তালিকায় আছে এমন পাতা অথবা ফাইলে পরিবর্তন হলে তা জানিয়ে আমাকে ই-মেইল করো',
 'tog-enotifusertalkpages' => 'আমার ব্যবহারকারী আলোচনা পাতার পরিবর্তন হলে আমাকে ই-মেইল করা হোক',
 'tog-enotifminoredits' => 'পাতা এবং ফাইলগুলোতে অনুল্লেখ্য সম্পাদনার জন্যও আমাকে ই-মেইল করা হোক',
@@ -228,7 +227,6 @@ $messages = array(
 'qbedit' => 'সম্পাদনা',
 'qbpageoptions' => 'এই পাতা',
 'qbmyoptions' => 'আমার পাতাসমূহ',
-'qbspecialpages' => 'বিশেষ পাতাসমূহ',
 'faq' => 'সম্ভাব্য প্রশ্নসমূহ',
 'faqpage' => 'Project:প্রাজিপ্র',
 
@@ -445,9 +443,6 @@ $1',
 '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' => 'কাজের গতি ধীরকরণ',
@@ -574,7 +569,7 @@ $2',
 'passwordtooshort' => 'শব্দচাবি অবশ্যই {{PLURAL:$1|১ অক্ষরের|$1 অক্ষরের}} হতে হবে।',
 'password-name-match' => 'আপনার শব্দচাবি আপনার ব্যবহারকারী নাম থেকে আলাদা হতে হবে।',
 'password-login-forbidden' => 'এই ব্যবহারকারীর নাম এবং শব্দচাবিটি ব্যবহার নিষিদ্ধ করা হয়েছে।',
-'mailmypassword' => 'নতà§\81ন à¦¶à¦¬à§\8dদà¦\9aাবি à¦\87-মà§\87à¦\87লà§\87 à¦ªà¦¾à¦ à¦¾à¦¨à§\8b à¦¹à§\8bà¦\95',
+'mailmypassword' => 'শবà§\8dদà¦\9aাবি à¦°à¦¿à¦¸à§\87à¦\9f',
 'passwordremindertitle' => '{{SITENAME}}-এর জন্য নতুন সাময়িক শব্দচাবি',
 'passwordremindertext' => 'কেউ একজন ($1 আইপি ঠিকানাটি থেকে সম্ভবত আপনি) অনুরোধ করেছেন যেন আমরা আপনাকে {{SITENAME}} ($4) এর জন্য একটি নতুন শব্দচাবি পাঠাই।
 "$2" নামে অ্যাকাউন্ট খোলা হয়েছে এবং এর শব্দচাবি "$3"। আপনি যদি এটাই চেয়ে থাকেন, তাহলে আপনাকে এখন অ্যাকাউন্টে প্রবেশ করতে হবে ও নতুন একটি শব্দচাবি পছন্দ করতে হবে।
@@ -620,7 +615,7 @@ $2',
 'user-mail-no-body' => 'অত্যান্ত সংক্ষিপ্ত অথবা কোনো তথ্য ছাড়াই ইমেইল পাঠানোর চেষ্টা করা হয়েছিল।',
 
 # Change password dialog
-'resetpass' => 'শব্দচাবি পরিবর্তন',
+'changepassword' => 'শব্দচাবি পরিবর্তন',
 'resetpass_announce' => 'আপন ই-মেইলকৃত সংকেত দ্বারা লগ-ইন আছেন। লগ-ইন পদ্ধতি সম্পূর্ণ করতে আপনাকে অবশ্যই একটি নতুন শব্দচাবি গ্রহণ করতে হবে:',
 'resetpass_text' => '<!-- এখানে লেখা যোগ করুন -->',
 'resetpass_header' => 'শব্দচাবি পরিবর্তন করো',
@@ -641,7 +636,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'শব্দচাবি রিসেট',
 'passwordreset-text-one' => 'আপনার পাসওয়ার্ড পুনরায় সেট করতে এই ফর্মটি পূরণ করুন।',
-'passwordreset-text-many' => '{{PLURAL:$1|à¦\86পনার à¦ªà¦¾à¦¸à¦\93য়ারà§\8dড à¦°à¦¿à¦¸à§\87à¦\9f à¦\95রতà§\87 à¦\8fà¦\87 à¦¤à¦¥à§\8dযà¦\97à§\81লà§\8bর à¦¯à§\87à¦\95à§\8bন à¦\8fà¦\95à¦\9fা à¦ªà§\8dরবà§\87শ à¦\95রান।}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¦\87মà§\87à¦\87লà§\87র à¦®à¦¾à¦§à§\8dযমà§\87 à¦\8fà¦\95à¦\9fি à¦\85সà§\8dথায়à§\80 à¦¶à¦¬à§\8dদà¦\9aাবি à¦ªà§\87তà§\87 à¦\98রà¦\97à§\81লির à¦\8fà¦\95à¦\9fি à¦ªà§\82রণ à¦\95রà§\81ন।}}',
 'passwordreset-legend' => 'শব্দচাবি রিসেট',
 'passwordreset-disabled' => 'এই উইকিতে শব্দচাবি রিসেটের সুবিধা নিষ্ক্রিয় রয়েছে।',
 'passwordreset-emaildisabled' => 'এই উইকিতে ইমেইল অপশনটি বন্ধ করা হয়েছে।',
@@ -1008,10 +1003,6 @@ $3-এর দেয়া কারণ হল ''$2''",
 'revisiondelete' => 'অবলুপ্ত/পুনঃস্থাপন সংশোধনসমূহ',
 'revdelete-nooldid-title' => 'বেঠিক লক্ষ্য সংশোধন',
 'revdelete-nooldid-text' => 'এই কাজটি সম্পন্ন করার জন্য আপনি কোন লক্ষ্য সংশোধন নির্বাচন করেননি, নির্বাচিত সংশোধন নেই, অথবা আপনি বর্তমান সংশোধন লুকাতে চাইছেন।',
-'revdelete-nologtype-title' => 'কোনো লগ টাইপ দেওয়া হয়নি।',
-'revdelete-nologtype-text' => 'আপনি হয়তো এই কাজটি করার জন্য কোনো লগ নির্ধারণ করেননি।',
-'revdelete-nologid-title' => 'ভুল লগ ভুক্তি',
-'revdelete-nologid-text' => 'হয়তো আপনি এই ফাংশনটির জন্য কোনো লগ ইভেন্ট নির্ধারণ করে দেননি, অথবা নির্ধারিত ইভেন্টটি সঠিক নয়।',
 'revdelete-no-file' => 'নির্ধারিত ফাইলটি নেই।',
 'revdelete-show-file-confirm' => 'আপনি কি নিশ্চিত যে "<nowiki>$1</nowiki>" ফাইলের $2 তারিখের $3 টার অপসারণ লগ দেখানো হবে?',
 'revdelete-show-file-submit' => 'হ্যাঁ',
@@ -1046,8 +1037,6 @@ $1",
 'logdelete-failure' => "'''লগ-এর দৃশ্যমানতা নির্ধারণ সম্ভব হচ্ছে না:'''
 $1",
 'revdel-restore' => 'দৃশ্যমানতা পরিবর্তন করো',
-'revdel-restore-deleted' => 'অপসারিত সংস্করণ',
-'revdel-restore-visible' => 'প্রদর্শনযোগ্য সংস্করণ',
 'pagehist' => 'পাতার ইতিহাস',
 'deletedhist' => 'ইতিহাস মুছে ফেলো',
 'revdelete-hide-current' => '$2, $1 সময়ের বিষয়টি লুকানো যাচ্ছে না: এটি বর্তমান সংস্করণ।
@@ -1125,12 +1114,8 @@ $1",
 # 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}}টি',
@@ -1139,10 +1124,8 @@ $1",
 'nextn-title' => 'পরবর্তী $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}}',
 'shown-title' => 'প্রতি পাতায় $1 {{PLURAL:$1|ফলাফল|ফলাফলসমূহ}} দেখাও',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) দেখানো হোক।',
-'searchmenu-legend' => 'অনুসন্ধান অপশন',
 'searchmenu-exists' => "'''এই উইকিতে \"[[:\$1]]\" নামে একটি পাতা রয়েছে'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" পাতাটি এই উইকিতে তৈরি করুন!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এই প্রিফিক্স রয়েছে এমন পাতা দেখুন]]',
 'searchprofile-articles' => 'বিষয়বস্তুর পাতা',
 'searchprofile-project' => 'সহায়িকা এবং প্রকল্প পাতা',
 'searchprofile-images' => 'মাল্টিমিডিয়া',
@@ -1154,7 +1137,7 @@ $1",
 '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-category-size' => '{{PLURAL:$1 | 1 সদস্য | $1 সদস্যবৃন্দ}} ({{PLURAL:$2 | 1 উপবিষয়শ্রেণীটি | $2 টি}}, {{PLURAL:$3 | 1 ফাইল | $3 ফাইল}})',
 'search-result-score' => 'মিলেছে: $1%',
 'search-redirect' => '(পুনর্নিদেশনা $1)',
 'search-section' => '(অনুচ্ছেদ $1)',
@@ -1163,21 +1146,16 @@ $1",
 'search-interwiki-default' => '$1 ফলাফলসমূহ:',
 'search-interwiki-more' => '(আরও)',
 'search-relatedarticle' => 'সম্পর্কিত',
-'mwsuggest-disable' => 'অনুসন্ধান পরামর্শ বন্ধ করুন',
 'searcheverything-enable' => 'সকল নামস্থানে অনুসন্ধান করো',
 'searchrelated' => 'সম্পর্কিত',
 'searchall' => 'সমস্ত',
 'showingresults' => "নিচে '''$2''' নং থেকে শুরু করে {{PLURAL:$1|'''1''' ফলাফল|'''$1''' ফলাফলসমূহ}} দেখানো হল।",
 'showingresultsnum' => "নিম্নে {{PLURAL:$3|'''1''' ফলাফল|'''$3''' ফলাফলসমূহ}} দেখানো হয়েছে যা শুরু হয়েছে #'''$2''' দিয়ে।",
 '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' => 'কিছু নয়',
@@ -1190,7 +1168,6 @@ $1",
 'mypreferences' => 'পছন্দসমূহ',
 'prefs-edits' => 'সম্পাদনা সংখ্যা:',
 'prefsnologintext2' => 'ব্যবহারকারী পছন্দসমূহ নির্ধারনের জন্য $1 করুন।',
-'changepassword' => 'শব্দচাবি পরিবর্তন',
 'prefs-skin' => 'আবরণ (Skin)',
 'skin-preview' => 'প্রাকদর্শন',
 'datedefault' => 'কোন পছন্দ নেই',
@@ -1213,13 +1190,11 @@ $1",
 'prefs-email' => 'ই-মেইল অপশন',
 'prefs-rendering' => 'অবয়ব',
 'saveprefs' => 'সংরক্ষণ',
-'resetprefs' => 'অসংরক্ষিত পরিবর্তনগুলো পরিস্কার করো',
 'restoreprefs' => 'সকল পূর্বনির্ধারিত সেটিং ফিরিয়ে আনো (সকল সেকশনে)',
 'prefs-editing' => 'সম্পাদনা',
 'rows' => 'সারি:',
 'columns' => 'কলাম:',
 'searchresultshead' => 'অনুসন্ধান',
-'resultsperpage' => 'প্রতি পাতায় হিট:',
 'stub-threshold' => '<a href="#" class="stub">অসম্পূর্ণ নিবন্ধের সংযোগগুলির</a> বিশেষ ফরম্যাটিঙের সীমা (বাইটে):',
 'stub-threshold-disabled' => 'নিস্ক্রিয়',
 'recentchangesdays' => 'সাম্প্রতিক পরিবর্তনে দিনসমূহ দেখানোর জন্য:',
@@ -1232,7 +1207,6 @@ $1",
 'localtime' => 'স্থানীয় সময়:',
 'timezoneuseserverdefault' => 'উইকির পূর্বনির্ধারিত সময় ব্যবহার করো ($1)',
 'timezoneuseoffset' => 'অন্য (অফসেট নির্দিষ্ট করুন)',
-'timezoneoffset' => 'সময়পার্থক্য¹:',
 'servertime' => 'সার্ভারের সময়:',
 'guesstimezone' => 'ব্রাউজার থেকে পূরণ করো',
 'timezoneregion-africa' => 'আফ্রিকা',
@@ -1301,6 +1275,7 @@ $1",
 'prefs-tokenwatchlist' => 'টোকেন',
 'prefs-diffs' => 'পার্থক্য',
 'prefs-help-prefershttps' => 'পরবর্তী লগইনের পর থেকে এই পরিবর্তনগুলো কার্যকর হবে।',
+'prefs-tabs-navigation-hint' => 'সাহায্য: আপনি ডান এবং বাম অ্যারো বাটন ব্যবহার করে বিভিন্ন ট্যাবগুলোতে যেতে পারবেন।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ইমেইল ঠিকানাটি সঠিক',
@@ -1487,16 +1462,16 @@ $1",
 'recentchanges-label-bot' => 'এটি বট দ্বারা সম্পাদিত',
 'recentchanges-label-unpatrolled' => 'এই সম্পাদনাটি এখনও পরীক্ষিত নয়',
 'recentchanges-label-plusminus' => 'পাতার আকারে এই পরিমান বাইট পরিবর্তিত হয়েছে',
+'recentchanges-legend-heading' => "'''ব্যাখ্যামূলক বর্ণনা:'''",
 'recentchanges-legend-newpage' => '(আরও দেখুন [[Special:NewPages|নতুন পাতার তালিকা]])',
 'recentchanges-legend-plusminus' => "(''±১২৩'')",
-'rcnote' => "বিগত {{PLURAL:$2|দিনে|'''$2''' দিনে}} সংঘটিত {{PLURAL:$1|'''১'''|'''$1'''}}টি পরিবর্তন নীচে দেখানো হল (যেখানে বর্তমান সময় ও তারিখ $5, $4)।",
 'rcnotefrom' => "'''$2'''-এর পরে সংঘটিত পরিবর্তনগুলো নিচে দেখানো হল ('''$1'''টি)।",
 'rclistfrom' => '$1-এর পর সংঘটিত নতুন পরিবর্তনগুলো দেখাও।',
 'rcshowhideminor' => 'অনুল্লেখ্য পরিবর্তনগুলো $1',
 'rcshowhidebots' => 'বটগুলো $1',
-'rcshowhideliu' => 'পà§\8dরবà§\87শ à¦\95রà§\87à¦\9bà§\87ন à¦\8fমন ব্যবহারকারীদের $1',
+'rcshowhideliu' => 'নিবনà§\8dধিত ব্যবহারকারীদের $1',
 'rcshowhideanons' => 'বেনামী ব্যবহারকারীদের $1',
-'rcshowhidepatr' => '$1 পরীক্ষিত সম্পাদনা',
+'rcshowhidepatr' => 'পরীক্ষিত সম্পাদনা $1',
 'rcshowhidemine' => 'আমার সম্পাদনাগুলো $1',
 'rclinks' => "'''প্রদর্শনের ধরন'''<br />
 * বিগত ($2) দিনের শেষ ($1)টি পরিবর্তন দেখাও
@@ -1939,6 +1914,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'ninterwikis' => '$1 {{PLURAL:$1|ইন্টারউইকি|ইন্টারউইকিসমূহ}}',
 'nlinks' => '$1টি {{PLURAL:$1|সংযোগ|সংযোগসমূহ}}',
 'nmembers' => '$1 {{PLURAL:$1|সদস্য|সদস্যবৃন্দ}}',
+'nmemberschanged' => '$1 জন → $2 জন {{PLURAL:$2|সদস্য}}',
 'nrevisions' => '$1 {{PLURAL:$1|সংশোধন|সংশোধনসমূহ}}',
 'nviews' => '$1 {{PLURAL:$1|বার দেখা হয়েছে|বার দেখা হয়েছে}}',
 'nimagelinks' => '$1 {{PLURAL:$1|টি পাতায়| টি পাতায়}} ব্যবহৃত',
@@ -1968,7 +1944,7 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'mostinterwikis' => 'সবচেয়ে বেশী ইন্টারউইকি লিংক-সমৃদ্ধ নিবন্ধসমূহ',
 'mostrevisions' => 'সবচেয়ে বেশী বার সম্পাদিত নিবন্ধসমূহ',
 'prefixindex' => 'উপসর্গ সহ সমস্ত পাতা',
-'prefixindex-namespace' => 'পà§\8dরিফিà¦\95à§\8dস à¦¸à¦®à§\8dপবলিত সকল পাতা ($1 নামস্থান)',
+'prefixindex-namespace' => 'à¦\89পসরà§\8dà¦\97 à¦¸à¦¹ সকল পাতা ($1 নামস্থান)',
 'prefixindex-strip' => 'তালিকা থেকে প্রিফিক্স সরাও',
 'shortpages' => 'সংক্ষিপ্ত পাতাসমূহ',
 'longpages' => 'দীর্ঘ পাতাসমূহ',
@@ -1977,10 +1953,8 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'protectedpages' => 'সুরক্ষিত পাতাসমূহ',
 'protectedpages-indef' => 'শুধুমাত্র অসীম সুরক্ষা',
 'protectedpages-cascade' => 'শুধুমাত্র প্রপাতাকার সুরক্ষা',
-'protectedpagestext' => 'নিচের পাতাগুলিকে স্থানান্তর বা সম্পাদনা করা থেকে সুরক্ষিত করা হয়েছে।',
 'protectedpagesempty' => 'কোন পাতা বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
 'protectedtitles' => 'সুরক্ষিত শিরোনামগুলি',
-'protectedtitlestext' => 'নিচের শিরোনামগুলি দিয়ে পাতা সৃষ্টি করা যাবে না।',
 'protectedtitlesempty' => 'কোন শিরোনাম বর্তমানে এই প্যারামিটারগুলিসহ সুরক্ষিত নয়।',
 'listusers' => 'ব্যবহারকারীর তালিকা',
 'listusers-editsonly' => 'শুধুমাত্র এমন ব্যবহারকারীদের দেখাও যাদের অবদান আছে',
@@ -2033,9 +2007,6 @@ Maybe you want to edit the description on its [$2 file description page] there.'
 'allpagesto' => 'এমন পাতা দেখাও যার শেষ:',
 'allarticles' => 'সমস্ত নিবন্ধ',
 'allinnamespace' => 'সমস্ত পাতা ($1 নামস্থান)',
-'allnotinnamespace' => 'সমস্ত পাতা ($1 নামস্থান ব্যতিত)',
-'allpagesprev' => 'পূর্ববর্তী',
-'allpagesnext' => 'পরবর্তী',
 'allpagessubmit' => 'চলো',
 'allpagesprefix' => 'এই উপসর্গবিশিষ্ট পাতাগুলো দেখাও:',
 'allpagesbadtitle' => 'প্রদত্ত পাতার শিরোনামটি অবৈধ ছিল অথবা এটিতে কোন আন্তঃভাষা বা আন্তঃউইকি উপসর্গ ছিল। এটিতে এক বা একাধিক ক্যারেক্টার থাকতে পারে যা শিরোনামে ব্যবহার করা সম্ভব নয়।',
@@ -2263,8 +2234,8 @@ $UNWATCHURL
 'rollback' => 'সম্পাদনা ফিরিয়ে নিন',
 'rollback_short' => 'ফিরিয়ে নিন',
 'rollbacklink' => 'পুনর্বহাল',
-'rollbacklinkcount' => '$1 {{PLURAL:$1|সম্পাদনা|সম্পাদনাগুলো}} রোলব্যাক করুন',
-'rollbacklinkcount-morethan' => '$1 এর বেশি {{PLURAL:$1|সম্পাদনা|সম্পাদনাগুলো}} রোলব্যাক করুন',
+'rollbacklinkcount' => '$1টি {{PLURAL:$1|সম্পাদনা}} রোলব্যাক করুন',
+'rollbacklinkcount-morethan' => '$1টির বেশি {{PLURAL:$1|সম্পাদনা|সম্পাদনাগুলো}} রোলব্যাক করুন',
 'rollbackfailed' => 'রোলব্যাক ব্যর্থ',
 'cantrollback' => 'পূর্বের সংস্করণে ফেরত যাওয়া সম্ভব হল না, সর্বশেষ সম্পাদনাকারী এই নিবন্ধটির একমাত্র লেখক।',
 'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) দ্বারা সম্পাদিত সর্বশেষ [[:$1]] সম্পাদনাটি পুনর্বহাল করা যাচ্ছে না;
@@ -2370,7 +2341,6 @@ $UNWATCHURL
 'undeletebtn' => 'পুনরুদ্ধার',
 'undeletelink' => 'দেখুন/পুনর্বহাল করুন',
 'undeleteviewlink' => 'দেখাও',
-'undeletereset' => 'আদি অবস্থায় ফেরত',
 'undeleteinvert' => 'ব্যুত্ক্রমে নির্বাচন',
 'undeletecomment' => 'কারণ:',
 'undeletedrevisions' => '{{PLURAL:$1|১টি সংশোধন|$1টি সংশোধন}} পুনরুদ্ধার করা হয়েছে',
@@ -2401,7 +2371,7 @@ $1',
 
 # Namespace form on various pages
 'namespace' => 'নামস্থান:',
-'invert' => 'বà§\8dযà§\81তà§\8dক্রমে নির্বাচন',
+'invert' => 'বিপরà§\80তক্রমে নির্বাচন',
 'tooltip-invert' => 'যে সকল নামস্থানের পাতাগুলোর পরিবর্তনসমূহর দেখতে চাচ্ছেন না সেগুলোর নামের পাশে টিক দিন',
 'namespace_association' => 'সংশ্লিষ্ট নামস্থান',
 'tooltip-namespace_association' => 'এখানে টিক দেয়ার মাধ্যমে সংশ্লিষ্ট নামস্থান এবং আলাপপাতাসমূহ অন্তর্ভুক্ত করছেন',
@@ -2448,9 +2418,9 @@ $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-hidelinks' => 'সংযোগ $1',
 'whatlinkshere-hideimages' => '$1 ফাইল সংযোগ',
 'whatlinkshere-filters' => 'ছাকনী',
 
@@ -2459,7 +2429,6 @@ $1',
 'block' => 'ব্যবহারকারীকে বাধা দাও',
 'unblock' => 'ব্যবহারকারীর উপর থেকে বাধা অপসারণ',
 'blockip' => 'ব্যবহারকারীকে বাধা দাও',
-'blockip-title' => 'ব্যবহারকারীকে বাধা দাও',
 'blockip-legend' => 'ব্যবহারকারীকে বাধা দেওয়া হোক',
 'blockiptext' => 'কোন নির্দিষ্ট আইপি ঠিকানা বা ব্যবহারকারীর লেখার অধিকারে বাধা দিতে নিচের ফর্মটি ব্যবহার করুন।
 এটি কেবলমাত্র ধ্বংসপ্রবণতা প্রতিরোধে ও [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে সম্পাদন করা উচিত।
@@ -2467,7 +2436,6 @@ $1',
 'ipadressorusername' => 'আইপি ঠিকানা বা ব্যবহারকারীর নাম:',
 'ipbexpiry' => 'যখন মেয়াদোত্তীর্ণ হবে:',
 'ipbreason' => 'কারণ:',
-'ipbreasonotherlist' => 'অন্য কারণ',
 'ipbreason-dropdown' => '*বাধা দানের সাধারণ কারণ
 ** মিথ্যা তথ্য ঢোকানো
 ** পাতা থেকে বিষয়বস্তু মুছে ফেলা
@@ -2483,8 +2451,6 @@ $1',
 'ipbsubmit' => 'এই ব্যবহারকারীকে বাধা দেয়া হোক',
 'ipbother' => 'অন্য সময়:',
 'ipboptions' => '২ ঘন্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপ্তাহ:1 week,২ সপ্তাহ:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite',
-'ipbotheroption' => 'অন্যান্য',
-'ipbotherreason' => 'অন্য/আরও কারণ:',
 'ipbhidename' => 'সম্পাদনা ও তালিকা থেকে ব্যবহারকারী নাম লুকিয়ে রাখা হোক',
 'ipbwatchuser' => 'এই ব্যবহাকারীর পাতা এবং আলাপের পাতা নজরতালিকায় রাখো',
 'ipb-disableusertalk' => 'এই ব্যবহারকারীকে বাধাদানকৃত অবস্থায় নিচের আলাপ পাতায় সম্পাদনা করা থেকে বিরত রাখো',
@@ -2573,7 +2539,6 @@ $1',
 'sorbsreason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-এর ব্যবহার করা DNSBL-এ উন্মুক্ত প্রক্সি হিসেবে তালিকাভুক্ত আছে।',
 'sorbs_create_account_reason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-এর ব্যবহার করা DNSBL-এ উন্মুক্ত প্রক্সি হিসেবে তালিকাভুক্ত আছে। আপনি কোন অ্যাকাউন্ট সৃষ্টি করতে পারবেন না।',
 'xffblockreason' => 'X-Forwarded-For হেডারে থাকা আইপি ঠিকানাটি ব্লক করা হয়েছে, হয় এটি আপনার নিজের অথবা আপনার ব্যবহৃত প্রক্সি সার্ভারের আইপি ঠিকানা। ব্লক করার কারণ হল: $1',
-'cant-block-while-blocked' => 'আপনি নিজে ব্লক থাকা অবস্থায় অন্যন্য ব্যবহারকারীকে ব্লক করতে পারবেন না।',
 'cant-see-hidden-user' => 'আপনি যে ব্যবহারকারীকে ব্লক বা লুকিয়ে রাখতে চাচ্ছেন তাকে আগে থেকেই ব্লক বা লুকিয়ে রাখা হয়েছে। এছাড়া আপনার Hideuser অধিকার নেই, তাই আপনি ব্যবহারকারীর অবস্থা পরিবর্তন করতে পারবেন না।',
 'ipbblocked' => 'আপনি অন্য কোন ব্যবহারকরীকে ব্লক বা আনব্লক করতে পারবেন না, কারণ আপনি নিজেই ব্লক রয়েছেন',
 'ipbnounblockself' => 'আপনি নিজেকে আনব্লক করতে পারবেন না',
@@ -2631,7 +2596,6 @@ $1',
 এসব ক্ষেত্রে আপনি চাইলে নিজের হাতে পাতাটিকে সরাতে বা একত্রীকরণ করতে পারেন।",
 'movearticle' => 'যে পাতা সরিয়ে ফেলা হবে',
 'moveuserpage-warning' => "'''সতর্কতা:''' আপনি একটি ব্যবহারকারী পাতা স্থানান্তর করছেন। অনুগ্রহ করে লক্ষ্য করুন যে এর মাধ্যমে কেবলমাত্র পাতাটি স্থানান্তর হবে, কিন্তু পাতার নাম পরিবর্তন হবে ''না''।",
-'movenologin' => 'অ্যাকাউন্টে প্রবেশ করা হয়নি',
 'movenologintext' => 'কোন পাতা সরিয়ে ফেলতে চাইলে আপনাকে অবশ্যই একজন নিবন্ধিত ব্যবহারকারী হতে হবে ও অ্যাকাউন্টে [[Special:UserLogin|প্রবেশ]] করতে হবে।',
 'movenotallowed' => 'আপনার {{SITENAME}}-তে পাতা স্থানান্তরের অনুমতি নেই।',
 'movenotallowedfile' => 'আপনার এই ফাইলটি স্থানান্তরের অনুমতি নেই।',
@@ -2646,8 +2610,6 @@ $1',
 'movepage-moved-noredirect' => 'রিডাইরেক্ট তৈরীতে বাধা দেয়া হয়েছে।',
 'articleexists' => 'এই শিরোনামে একটি পাতা ইতোমধ্যে সৃষ্টি হয়ে গেছে, অথবা আপনি যে শিরোনামটি পছন্দ করেছেন তা গ্রহণযোগ্য নয়। দয়া করে অন্য একটি শিরোনাম দিয়ে চেষ্টা করুন।',
 'cantmove-titleprotected' => 'আপনি এই অবস্থানে পাতাটিকে স্থানান্তর করতে পারেন না, কারণ এই নতুন শিরোনামটি সৃষ্টি করা থেকে সুরক্ষিত।',
-'talkexists' => "'''পাতাটি সফলভাবে সরানো গেলেও আলোচনা পাতাটিকে সরানো যায়নি, কারণ নতুন শিরোনামের অধীনে ইতিমধ্যেই একটি আলোচনা পাতা বিদ্যমান। অনুগ্রহ নিজের হাতে এগুলিকে একত্র করুন।'''",
-'movedto' => 'সরানো হয়েছে এখানে:',
 'movetalk' => 'সংশ্লিষ্ট আলাপের পাতা সরিয়ে নাও',
 'move-subpages' => 'উপপাতা স্থানান্তর ($1টি পর্যন্ত)',
 'move-talk-subpages' => 'উপপাতার আলাপ পাতা স্থানান্তর ($1টি পর্যন্ত)',
@@ -2880,6 +2842,7 @@ $2',
 'tooltip-undo' => '"বাতিল" এই সম্পাদনাকে পূর্ববস্থায় ফিরত নিবে এবং প্রাকদর্শন সহ সম্পাদনা ফরমটি খুলবে। এটি সম্পাদনা সারাংশতে এর কারণ যোগ করার সুযোগ দিবে।',
 'tooltip-preferences-save' => 'পছন্দ সংরক্ষণ',
 'tooltip-summary' => 'একটি সংক্ষিপ্ত সারাংশ দিন',
+'interlanguage-link-title' => '$1 - $2',
 
 # Metadata
 'notacceptable' => 'আপনার ক্লায়েন্ট পড়তে পারে এমন ফরম্যাটে উইকি সার্ভার উপাত্ত সরবরাহ করতে পারছে না।',
@@ -2976,7 +2939,7 @@ $2',
 # Patrol log
 'patrol-log-page' => 'পরীক্ষণ লগ',
 'patrol-log-header' => 'এটি যাচাইকৃত রিভিশনের তালিকা।',
-'log-show-hide-patrol' => '$1 পরীক্ষণ লগ',
+'log-show-hide-patrol' => 'পরীক্ষণ লগ $1',
 
 # Image deletion
 'deletedrevision' => 'মুছে ফেলা পুরাতন সংশোধন $1',
@@ -3470,15 +3433,10 @@ $1',
 'exif-urgency-high' => 'উচ্চ ($1)',
 'exif-urgency-other' => 'ব্যবহারকারী নির্ধারিত অগ্রাধিকার ক্রম ($1)',
 
-# External editor support
-'edit-externally' => 'ফাইলটি অন্য কোন সফটওয়্যার দিয়ে সম্পাদনা করুন',
-'edit-externally-help' => 'আরও তথ্যের জন্য [https://www.mediawiki.org/wiki/Manual:External_editors সেটআপ নির্দেশমালা] দেখুন।',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'সবগুলো',
 'namespacesall' => 'সমস্ত',
 'monthsall' => 'সমস্ত',
-'limitall' => 'সমস্ত',
 
 # Email address confirmation
 'confirmemail' => 'ই-মেইলের ঠিকানা নিশ্চিত করুন',
@@ -3496,7 +3454,6 @@ $1',
 'confirmemail_needlogin' => 'আপনার ই-মেইল ঠিকানা নিশ্চিত করতে আপনার $1 প্রয়োজন।',
 'confirmemail_success' => 'আপনার ই-মেইল ঠিকানাটি নিশ্চিত করা হয়েছে। আপনি এখন [[Special:UserLogin|প্রবেশ]] এবং এই উইকি উপভোগ করতে পারেন।',
 'confirmemail_loggedin' => 'আপনার ই-মেইল ঠিকানাটি নিশ্চিত করা হয়েছে।',
-'confirmemail_error' => 'আপনার নিশ্চিতকরণ সংরক্ষণ করতে হয়তো কিছু সমস্যা হয়েছিল',
 'confirmemail_subject' => '{{SITENAME}} ই-মেইল ঠিকানা নিশ্চিতকরণ',
 'confirmemail_body' => 'কেউ একজন, সম্ভবত আপনি, $1 আইপি ঠিকানা থেকে,
 এই ই-মেইল ঠিকানাটি দিয়ে {{SITENAME}}-এ "$2" নামে অ্যাকাউন্ট খুলেছেন।
@@ -3568,6 +3525,11 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'imgmultigo' => 'চলো!',
 'imgmultigoto' => '$1 পাতায় চলো',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(ডিফল্ট ভাষা)',
+'img-lang-info' => '$1 এ ছবিটি রেন্ডার করো। $2',
+'img-lang-go' => 'যাও',
+
 # Table pager
 'ascending_abbrev' => 'আরোহণ',
 'descending_abbrev' => 'অবতরণ',
@@ -3694,7 +3656,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'version-hook-name' => 'হুকের নাম',
 'version-hook-subscribedby' => 'সাবস্ক্রাইব করেছেন',
 'version-version' => '(সংস্করণ $1)',
-'version-license' => 'লাইসেন্স',
+'version-license' => 'মিডিয়াà¦\89à¦\87à¦\95ি à¦²à¦¾à¦\87সà§\87নà§\8dস',
 'version-poweredby-credits' => "এইক উইকিটি পরিচালিত হচ্ছে '''[https://www.mediawiki.org/ মিডিয়াউইকি]'''-এর মাধ্যমে, কপিরাইট © ২০০১-$1 $2।",
 'version-poweredby-others' => 'অন্যান্য',
 'version-poweredby-translators' => 'translatewiki.net অনুবাদকগণ',
@@ -3785,7 +3747,6 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 
 # Special:ComparePages
 'comparepages' => 'পাতার তুলনা',
-'compare-selector' => 'পাতার সংশোধন তুলনা',
 'compare-page1' => 'পাতা ১',
 'compare-page2' => 'পাতা ২',
 'compare-rev1' => 'সংশোধন ১',
@@ -3927,7 +3888,7 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'duration-minutes' => '$1 {{PLURAL:$1|মিনিট|মিনিট}}',
 'duration-hours' => '$1 {{PLURAL:$1|ঘন্টা|ঘন্টা}}',
 'duration-days' => '$1 {{PLURAL:$1|দিন|দিন}}',
-'duration-weeks' => '{{PLURAL: $1|সপ্তাহ|সপ্তাহ}}',
+'duration-weeks' => '$1 {{PLURAL:$1|সপ্তাহ}}',
 'duration-years' => '$1 {{PLURAL:$1|বছর|বছর}}',
 'duration-decades' => '$1 {{PLURAL:$1|দশক|দশক}}',
 'duration-centuries' => '$1 {{PLURAL:$1|শতাব্দী|শতাব্দী}}',
@@ -3962,10 +3923,12 @@ $4-এ নিশ্চিতকরণ কোডটি মেয়াদোত
 'expand_templates_input' => 'ইনপুটকৃত লেখা:',
 'expand_templates_output' => 'ফলাফল',
 'expand_templates_xml_output' => 'XML আউটপুট',
+'expand_templates_html_output' => 'এইচটিএমএল আউটপুট',
 'expand_templates_ok' => 'ঠিক আছে',
 'expand_templates_remove_comments' => 'মন্তব্য মুছে ফেলো',
 'expand_templates_remove_nowiki' => 'ফলাফলে <nowiki> ট্যাগগুলো বাতিল করো',
 'expand_templates_generate_xml' => 'XML পার্স বৃক্ষ দেখাও',
+'expand_templates_generate_rawhtml' => 'এইচটিএমএল দেখাও',
 'expand_templates_preview' => 'প্রাকদর্শন',
 
 );
index ffeb49f..11ef600 100644 (file)
@@ -148,7 +148,6 @@ $messages = array(
 'qbedit' => 'རྩོམ་སྒྲིག',
 'qbpageoptions' => 'ཤོག་ངོས་འདི།',
 'qbmyoptions' => 'ངའི་ཤོག་ངོས།',
-'qbspecialpages' => 'དམིཊ་བསལ་གྱི་བཟོ་བཅོས།',
 'faq' => 'རྒྱུན་ལྡན་དྲི་བ།',
 'faqpage' => 'Project: རྒྱུན་ལྡན་དྲི་བ།',
 
@@ -326,7 +325,7 @@ $messages = array(
 'loginlanguagelabel' => 'སྐད་རིགས། $1',
 
 # Change password dialog
-'resetpass' => 'ལམ་ཡིག་བརྗེ་བ།',
+'changepassword' => 'ལམ་ཡིག་བརྗེ་བ།',
 'resetpass_announce' => 'ཁྱེད་ཀྱིས་ང་ཚོས་བཏང་བའི་གནས་སྐབས་ལམ་ཡིག་ལ་བརྟེན་ནས་ནང་འཛུལ་བྱས་འདུག ནང་འཛུལ་ཆ་ཚང་བ་བྱེད་པར་འདིར་ངེས་པར་དུ་ལམ་ཡིག་གསར་བ་འཇུག་དགོས།',
 'oldpassword' => 'ལམ་ཡིག་རྙིང་བ།',
 'newpassword' => 'ལམ་ཡིག་གསར་བ།',
@@ -440,16 +439,11 @@ $messages = array(
 # Search results
 'searchresults' => 'བཙལ་བའི་རྙེད་དོན།',
 'searchresults-title' => ' $1 བཙལ་བའི་འབྲས་བུ།',
-'searchresulttext' => '{{SITENAME}} སྐོར་ལ་རྒྱས་བར་[[{{MediaWiki:Helppage}}|{{int:help}}]]. ལ་ལྟ་རོགས།',
-'searchsubtitle' => 'ཁྱེད་ཀྱིས་\'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])བཙལ་འདུག',
-'searchsubtitleinvalid' => "ཁྱེད་ཀྱིས་'''$1'''བཙལ་འདུག",
-'notitlematches' => 'ཤོག་ངོས་འགོ་བརྗོད་མཚུངས་པ་མི་འདུག',
 'notextmatches' => 'ཤོག་ངོས་ཡིག་འབྲུ་མཚུངས་པ་མི་འདུག',
 'prevn' => 'སྔོན་མ་{{PLURAL:$1|$1}}',
 'nextn' => 'རྗེས་མ་{{PLURAL:$1|$1}}',
 'shown-title' => 'མིག་སྔར་སྟོན་པ། $1{{PLURAL:$1|གྲུབ་འབྲས།}}ཤོག་ངོས་ལྟར།',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)ལ་ལྟ་བ།',
-'searchmenu-legend' => 'འཚོལ་ཞིབ་འདེམས་ཚན།',
 'searchmenu-new' => 'ལྦེ་ཁེ་སྟེང་ལ་ཤོག་ལེ་ [[:$1]]བཟོས།',
 'searchprofile-project' => 'རོགས་རམ་དང་འཆར་གཞིའི་ཤོག་ངོས་',
 'searchprofile-everything' => 'ཚང་མ་',
@@ -468,18 +462,15 @@ $messages = array(
 'search-relatedarticle' => 'འབྲེལ་ཡོད།',
 'searchall' => 'ཚང་མ།',
 'search-nonefound' => 'ཁྱེད་ཀྱི་འདྲི་ཞིབ་དང་མཐུན་པའི་ལན་མི་འདུག་',
-'powersearch' => 'ཞིབ་ཏུ་འཚོལ་བ།',
 'powersearch-legend' => 'ཞིབ་ཏུ་འཚོལ་བ།',
 'powersearch-ns' => 'མིང་གནས་ནང་འཚོལ་བ།',
 'powersearch-redir' => 'ཁ་ཕྱོགས་གསར་བཟོ་སྟོན་པ།',
-'powersearch-field' => 'བཙལ་བྱ།',
 'powersearch-toggleall' => 'ཚང་མ།',
 'powersearch-togglenone' => 'མེད།',
 
 # Preferences page
 'mypreferences' => 'དགའ་འདེམས།',
 'prefs-edits' => 'རྩོམ་སྒྲིག་གྲངས་ཚད།',
-'changepassword' => 'ལམ་ཡིག་བརྗེ་བ།',
 'skin-preview' => 'སྔོན་ལྟ།',
 'prefs-personal' => 'སྤྱོད་མིའི་སྤྱི་ཁོག',
 'prefs-rc' => 'ཉེ་བའི་བཟོ་བཅོས།',
@@ -778,12 +769,10 @@ $messages = array(
 
 # Move page
 'movearticle' => 'ཤོག་ངོས་སྤོར་བ།',
-'movenologin' => 'ནང་འཛུལ་བྱས་མེད།',
 'newtitle' => 'ཁ་བྱང་གསར་བ་ལ།',
 'move-watch' => 'དྲ་ངོས་འདི་ལ་མཉམ་འཇོག་པ།',
 'movepagebtn' => 'ཤོག་ངོས་སྤོ་བ།',
 'pagemovedsub' => 'སྤོར་བ་ལེགས་གྲུབ།',
-'movedto' => 'སྤོར་ཟིན་ཡུལ།',
 'movelogpage' => 'རྩོམ་ཡིག་སྤོ་བ།',
 'movereason' => 'རྒྱུ་མཚན།',
 'revertmove' => 'ཕྱིར་ལོག',
index e0c5231..baaa328 100644 (file)
@@ -68,7 +68,6 @@ $messages = array(
 'tog-minordefault' => 'অকরাতই হাব্বি পতা ফাঙনেই বুলিয়া দেহাদে',
 'tog-previewontop' => 'পতা উপুগর গজে লেহার মিল্লেখ দেহাদে',
 'tog-previewonfirst' => 'পয়লা পতানিহাত মিল্লেখ দেহাদে',
-'tog-nocache' => 'পাতা য়মকরানিহান থা নাদি',
 'tog-enotifwatchlistpages' => 'মরে ইমেইল কর যদি মর মিল্লেঙে থসু অতা পতিলে',
 'tog-enotifusertalkpages' => 'মরে ইমেইল কর যদি মর য়্যারির পাতা পতিলে',
 'tog-enotifminoredits' => 'মরে ইমেইল কর পাতা আহানর পতানিহান হুরু ইলেউ',
@@ -189,7 +188,6 @@ $messages = array(
 'qbedit' => 'পতানি',
 'qbpageoptions' => 'পাতা এহানর সারুক',
 'qbmyoptions' => 'মর পছন',
-'qbspecialpages' => 'বিশেষ পাতাহানি',
 'faq' => 'আঙলাক',
 'faqpage' => 'Project:আঙলাক',
 
@@ -390,9 +388,6 @@ $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 />
-ফাংশন: $1<br />
-কোয়েরি: $2',
 'viewsource' => 'উৎসহান চা',
 'actionthrottled' => 'কামর গতিহান তাপকরানি',
 'actionthrottledtext' => 'স্প্যাম থেত করানির কা কাম এহান কম মিকুপে বপ করে পতানির সময়র সিমাহান লেপ করানি অসে। তি সীমা অহান লালুইলে। কৃপা করিয়া খানি থায়া হৎনা কর।',
@@ -510,7 +505,7 @@ $2',
 'loginlanguagelabel' => 'ঠার: $1',
 
 # Change password dialog
-'resetpass' => 'খন্তাচাবি সিলকরানি',
+'changepassword' => 'খন্তাচাবি(password) পতা',
 'resetpass_announce' => 'তি লেপ নাইসে খন্তাচাবি আগন হমাসত। হমানিহান পুরা করানির কা নুৱা লেপ্পা খন্তাচাবি হঙকরানি লাগতই:',
 'resetpass_header' => 'খন্তাচাবি সিলকর',
 'oldpassword' => 'পুরানা খন্তাচাবি:',
@@ -742,9 +737,6 @@ $2',
 'rev-showdeleted' => 'দেহাদে',
 'revisiondelete' => 'পতানিহান পুস/নাপুসি',
 'revdelete-nooldid-title' => 'টার্গেট চুমকরানি লালুইসে',
-'revdelete-nologtype-title' => 'লগ টাইপ না দিয়াসি',
-'revdelete-nologtype-text' => 'কাম এহান করানির কা কি জাতর লগ লেপ নাকরিসত।',
-'revdelete-nologid-title' => 'লগর পারেঙহানি চুম নাইসে',
 'revdelete-no-file' => 'মাতিসত ফাইলগ নেই।',
 'revdelete-show-file-submit' => 'হায়',
 'revdelete-legend' => 'আহির ফঙে থনা হান সিতকর',
@@ -759,8 +751,6 @@ $2',
 'revdelete-unsuppress' => 'সীমাবদ্ধতাহানি নেইকরেদে',
 'revdelete-log' => 'কারণ:',
 'revdel-restore' => 'দৃষ্টিপাত সিলকর',
-'revdel-restore-deleted' => 'পুছিসি সংস্করণহান',
-'revdel-restore-visible' => 'দেহাদেনা একরব সংস্করণহান',
 'pagehist' => 'পাতার ইতিহাসহান',
 'deletedhist' => 'ইতিহাসহান পুস',
 'revdelete-otherreason' => 'আর আর কারণ:',
@@ -807,12 +797,8 @@ $2',
 # 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}}',
@@ -821,10 +807,8 @@ $2',
 'nextn-title' => 'থাঙনার $1 {{PLURAL:$1|ফলাফল|ফলাফলহানি}}',
 'shown-title' => 'হারি পাতাত $1 {{PLURAL:$1|ফলাফল|ফলাফলহানি}} দেহাদে',
 'viewprevnext' => 'চা ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'বিসারানির অপশনহানি',
 'searchmenu-exists' => "'''উইকি এহাত \"[[:\$1]]\" নাঙে পাতা আহান আসে'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" নাঙর পাতাহান এরে উইকিত হঙকর!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|এরে prefix এতাল আসে পাতাহানি]]',
 'searchprofile-articles' => 'কন্টেন্টর পাতাহানি',
 'searchprofile-project' => 'পাঙলাক বারো প্রকল্পর পাতা',
 'searchprofile-images' => 'মাল্টিমিডিয়া',
@@ -836,7 +820,7 @@ $2',
 'searchprofile-everything-tooltip' => 'হাব্বি থাকে বিসারা (য়্যারির পাতাতউ)',
 'searchprofile-advanced-tooltip' => 'নিজর লেপকরা নাঙথাকে বিসারা',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ৱাহি|$2 ৱাহিহানি}})',
-'search-result-category-size' => '{{PLURAL: $1 | 1 সদস্য | $1 সদস্যগি}} ({{PLURAL: $2 | 1 উপবিষয়থাকহানি | $2 হান}}, {{PLURAL: $3 | 1 ফাইল | $3 ফাইল}})',
+'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)',
@@ -845,19 +829,14 @@ $2',
 'search-interwiki-default' => '$1 ফলাফলহানি:',
 'search-interwiki-more' => '(আরাকউ)',
 'search-relatedarticle' => 'সাকেই আসে',
-'mwsuggest-disable' => 'AJAXরে থা নাদি',
 'searcheverything-enable' => 'হাব্বি নাঙথাকে বিসারা',
 'searchrelated' => 'সাকেই আসে',
 'searchall' => 'হাব্বি',
 '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' => 'কিত্তাউ নেই',
@@ -867,7 +846,6 @@ $2',
 'preferences' => 'পছনহানি',
 'mypreferences' => 'মর পছন',
 'prefs-edits' => 'পতাসি অতার সংখ্যাহান',
-'changepassword' => 'খন্তাচাবি(password) পতা',
 'prefs-skin' => 'সরহান',
 'skin-preview' => 'আগচা',
 'datedefault' => 'পছন করাতা নেই',
@@ -968,7 +946,6 @@ $2',
 'recentchanges-label-minor' => 'এহান হুরকা সম্পাদনাহান',
 'recentchanges-label-bot' => 'সম্পাদনা এহান বটগই করিসেহানে',
 'recentchanges-label-unpatrolled' => 'সম্পাদনা এহান এবাকাউ পরীক্ষা করিয়া নাচাসি',
-'rcnote' => "গেলগা {{PLURAL:$2|দিনে|'''$2''' দিনে}} অসে {{PLURAL:$1|'''১'''|'''$1'''}}হান সিলপা তলে দেহানি ইল (যেহানর এপাগার খেন্তাম বারো তারিখ $5, $4)।",
 'rcnotefrom' => "তলে গেলগা '''$2''' ত্ত পতাসিতা দেনা অইল ('''$1''' পেয়া)।",
 'rclistfrom' => 'নুৱাতা পতাসিতা $1 পাতাহানাত্ত চিঙকরিয়া',
 'rcshowhideminor' => '$1 হুরু পতানিহান',
@@ -1179,8 +1156,6 @@ $2',
 'allpagesto' => 'এসাদে পাতা দেহাদে যেহানর লমানিহান:',
 'allarticles' => 'নিবন্ধহাবি',
 'allinnamespace' => 'পাতাহানি হাবি ($1 নাঙরজাগা)',
-'allpagesprev' => 'আলথকে',
-'allpagesnext' => 'থাঙনাত',
 'allpagessubmit' => 'হাত',
 'allpagesprefix' => 'মেয়েক এগন অকরিসি ৱাহির পাতাহানি দেহাদেঃ',
 
@@ -1367,7 +1342,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'ipadressorusername' => 'আইপি ঠিকানাহান বারো আতাকুরার নাঙহান:',
 'ipbexpiry' => 'মেয়াদহান লালুইতইতা:',
 'ipbreason' => 'কারণ:',
-'ipbreasonotherlist' => 'আর কারণ:',
 'ipbreason-dropdown' => '*থেপ করানির সাধারণ কারণহানি
 ** মিস্সা পৌ বরাসে
 ** পাতাহাত্ত বিষয়বস্তু পুসে বেলাসে
@@ -1382,8 +1356,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'ipbsubmit' => 'আতাকুরা এগরে থেপ কর',
 'ipbother' => 'আর সময়:',
 'ipboptions' => '২ ঘন্টা:2 hours,১ দিন:1 day,৩ দিন:3 days,হাপ্তা আহান:1 week,হাপ্তা দুহান:2 weeks,মাহা আহান:1 month,৩ মাহা:3 months,৬ মাহা:6 months,বসর আহান:1 year,লম নেই সময়:infinite',
-'ipbotheroption' => 'আর আর',
-'ipbotherreason' => 'আরাক/আরাকউ কারণ:',
 'ipbhidename' => 'আতাকুরার নাঙ পতানি বারো লাতঙেত্ত গুর',
 'ipbwatchuser' => 'আতাকুরা এগর আতাকুরার বারো য়্যারীর পাতা খিয়ালে থ',
 'badipaddress' => 'আইপি ঠিকানাহান গ্রহনযোগ্যনাইসে',
@@ -1415,7 +1387,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 
 এতার বারে তি চেইলে নিজর আতহানল পাতা অহান গুসানি বা পুলকরানি পারর।",
 'movearticle' => 'পাতাহান থেইকর:',
-'movenologin' => 'তি একাউন্টে না হমাসত',
 'movenologintext' => 'পাতা এহান থেইকরানির কা তি মিহিসত আতাকুরাগ বারো একাউন্টে [[Special:UserLogin|হমানি]] লাগতই।',
 'movenotallowed' => 'তরতা পাতা থেইকরানির য়্যাথাং নেই।',
 'movenotallowedfile' => 'তরতা ফাইল থেইকরানির য়্যাথাং নেই।',
@@ -1428,9 +1399,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'movepage-moved' => '\'\'\'"$1" থেইককরানি ইল "$2"\'\'\'',
 'movepage-moved-redirect' => 'কুইকরা পাতা হঙিল।',
 'articleexists' => 'ইতে পারে এরে শিরোনাঙর নিবন্ধহান হঙপরসেগা, নাইলে তি দিয়াসত শিরোনাং এহান দেনার য়্যাথাং নেই। কৃপা করিয়া আরাক শিরোনাং আহান দেনার হৎনা কর।',
-'talkexists' => "'''পাতাহান হবা বালাই গুসিল কিন্তু অরে নাঙর য়্যারির পাতা আহান আগেত্তর থানাই না গুসিল।
-দয়া করিয়া তি নিজর আতহান্ন তিলকরগা।'''",
-'movedto' => 'থেইকর',
 'movetalk' => 'লগর য়্যারির পাতাহান গুসা',
 'movelogpage' => 'লগ গুসা',
 'movereason' => 'কারণ:',
@@ -1582,15 +1550,10 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-n' => 'গাথিগি',
 
-# External editor support
-'edit-externally' => 'এর ফাইল এগ পতানির কা বারেদের এপ্লিকেশন আতা',
-'edit-externally-help' => 'আরাকউ হারপানির কা [https://www.mediawiki.org/wiki/Manual:External_editors সেটাপর নির্দেশহানি] চা।',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'হাব্বি',
 'namespacesall' => 'হাব্বি',
 'monthsall' => 'হাব্বি',
-'limitall' => 'হাব্বি',
 
 # Email address confirmation
 'confirmemail' => 'ই-মেইল ঠিকানাহান লেপকর',
index d0ac8c4..16ef6ec 100644 (file)
@@ -8,9 +8,11 @@
  * @file
  *
  * @author Behdarvandyani
+ * @author Ebraminio
  * @author GerardM
  * @author Huji
  * @author Meno25
+ * @author Mogoeilor
  */
 
 $fallback = 'fa';
@@ -45,7 +47,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'نشودادن امیل مو درامیلهای آگاهی-خبری',
 'tog-shownumberswatching' => 'نشودادن شماره کاربران درحال کار یاتماشا',
 'tog-fancysig' => 'امضاهای ناتمام - بدون لینکهای اتوماتیک',
-'tog-showjumplinks' => 'قادر ساختن "پرش به" لینکهای دردسترس',
 'tog-uselivepreview' => 'استفاده زه پیش نمایش زنده(جاوااسکریپ) (تجربی )',
 'tog-forceeditsummary' => 'یادآوری سریع به مو هنگام اصلاح عقیم وخلاصه',
 'tog-watchlisthideown' => 'قایم کردن اصلاحات مو  زه لیست پیگیریها',
@@ -164,8 +165,7 @@ $messages = array(
 'articlepage' => 'دیدن صفحه محتوا',
 'talk' => 'بحث',
 'views' => 'مشاهدات',
-'toolbox' => '
-جعبه ابزار',
+'toolbox' => 'اوزار گه',
 'userpage' => 'دیدن صفحه کاربر',
 'projectpage' => 'دیدن صفحه پروژه',
 'imagepage' => 'دیدن صفحه مدیا',
@@ -184,7 +184,7 @@ $messages = array(
 'jumptonavigation' => 'راندن یا هدایت کردن',
 'jumptosearch' => 'جستن',
 
-# 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).
+# 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).
 'aboutsite' => 'درباره {{SITENAME}}',
 'aboutpage' => 'Project:درباره',
 'copyright' => 'محتوا باای شماره قابل دسترسیه
@@ -195,7 +195,6 @@ $messages = array(
 'disclaimers' => 'انکار کننده ها',
 'disclaimerpage' => 'Project:انکار کاربران',
 'edithelp' => 'کمک برای اصلاح',
-'edithelppage' => 'Help:اصلاح',
 'helppage' => 'Help:محتوا',
 'mainpage' => 'صفحه اصلی',
 'mainpage-description' => 'صفحه اصلی',
@@ -219,8 +218,6 @@ $1',
 'pagetitle-view-mainpage' => 'سرصفحه',
 'retrievedfrom' => 'بازیافت از"$1"',
 'youhavenewmessages' => 'پیام تاره داری $1 ($2).',
-'newmessageslink' => 'پیام تازه',
-'newmessagesdifflink' => 'تغییر آخری',
 'youhavenewmessagesmulti' => 'ایسا پیام تازه دارین منه
 $1',
 'editsection' => 'اصلاح',
@@ -395,8 +392,6 @@ $1',
 'prevn' => 'قبلی {{PLURAL:$1|$1}}',
 'nextn' => 'بعدی {{PLURAL:$1|$1}}',
 'viewprevnext' => 'مشاهده ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:محتوا',
-'powersearch' => 'جستجوی کاملتر',
 
 # Preferences page
 'preferences' => 'اولویتها',
@@ -436,7 +431,6 @@ $1',
 'recentchangeslinked-feed' => 'تغییرات مرتبط',
 'recentchangeslinked-toolbox' => 'تغییرات مرتبط',
 'recentchangeslinked-title' => 'تغییرهای مرتبط با $1',
-'recentchangeslinked-noresult' => 'در دوره زمانی داده‌شده تغییری در صفحه‌های لینک داده رخ نداده‌',
 'recentchangeslinked-summary' => " ای صفحه خاص تغییرات اخیر در صفحه‌های لینک داده شده به این صفحه را نشو اده.
 صفحه‌هایی که در لیست پی‌گیریهای ایسا بون به شکل '''سیاه''' نشو داده ابون.",
 
@@ -483,8 +477,6 @@ $1',
 # Statistics
 'statistics' => 'آمار',
 
-'disambiguations' => 'صفحات رفع ابهام',
-
 'doubleredirects' => 'تغییر مسیر دوبله',
 
 'brokenredirects' => 'تغییرمسیرهای اشکسته وخراو',
@@ -544,7 +536,7 @@ $2',
 'allpagesprefix' => 'نشو دادن صفحات همراه با پیشوند:',
 
 # Special:Categories
-'categories' => 'دسته ها',
+'categories' => 'دسته آ',
 
 # Email user
 'emailuser' => 'امیل ای کاربر',
@@ -560,12 +552,12 @@ $2',
 'removedwatchtext' => 'آن صفحه"[[:$1]]" جابجا وابیده زه[[Special:لیست پیگیری|لیست پیگیری ایسا]].',
 'watch' => 'پی‌گیری',
 'watchthispage' => 'پیگیری ای صفحه',
-'unwatch' => 'عدم پیگیری',
+'unwatch' => 'پيگري نبيڎه',
 'watchlist-details' => '{{PLURAL:$1|$1 صفحه|$1 صفحات}} درلیست پیگیری ایسا, صفحات صحبت حساب نیبوه.',
 'wlshowlast' => 'نمایش آخرین $1 ساعت $2 روز $3',
 
 # Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'درحال پیگیری...',
+'watching' => 'مئن حالت پي جوري',
 'unwatching' => 'درحالت عدم پیگیری...',
 
 # Delete
@@ -588,7 +580,7 @@ $2',
 'protectlogpage' => 'نمایه حفاظت وحمایت',
 'prot_1movedto2' => '[[$1]] جابجا وابید به[[$2]]',
 'protectcomment' => 'دلیل:',
-'protectexpiry' => 'سپری وابیده ها:',
+'protectexpiry' => 'سپری وابیڎه ا:',
 'protect_expiry_invalid' => 'با سپری وابیدن وقت غیر معتبره.',
 'protect_expiry_old' => 'سپری وابیدن وقت مربوط به گذشته.',
 'protect-text' => "ایسا ممکنه بوینین وتغییر بدین سطح حمایت زه ای صفحه'''$1'''.",
@@ -683,9 +675,6 @@ $2',
 'movepage-moved' => '\'\'\'"$1" جابجا وابیده به "$2"\'\'\'',
 'articleexists' => 'یه صفحه زه ای  نوم تقریبا موجوده, یا نومی که ایسا انتخاب کردین غیر  معتبره
 لطفا نوم دیه انتخاب کنین.',
-'talkexists' => "'''آن صفحه خوس با بخت وتوفیق جابجا وابید, ولی صفحه صحبت نتره جابجا بوه چونکه یکی تقریبا موجوده درعنوان تازه
-لطفا به صورت دستی آنها را ترکیب کنین.'''",
-'movedto' => 'جابجا وابید به',
 'movetalk' => 'جابجایی صفحه صحبت مربوطه',
 'movelogpage' => 'نمایه جابجایی',
 'movereason' => 'دلیل:',
@@ -798,10 +787,6 @@ $2',
 * gpslongitude
 * gpsaltitude',
 
-# 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' => 'همه',
 'namespacesall' => 'همه',
index 5c40e69..6f096ca 100644 (file)
@@ -53,7 +53,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'PajennoùKozh' ),
        'Badtitle'                  => array( 'TitlFall' ),
        'Block'                     => array( 'Stankañ' ),
-       'Blockme'                   => array( 'MaStankañ' ),
        'Booksources'               => array( 'MammennoùLevr' ),
        'BrokenRedirects'           => array( 'AdkasoùTorr' ),
        'Categories'                => array( 'Rummadoù' ),
@@ -62,9 +61,9 @@ $specialPageAliases = array(
        'Confirmemail'              => array( 'KadarnaatPostel' ),
        'Contributions'             => array( 'Degasadennoù' ),
        'CreateAccount'             => array( 'KrouiñKont' ),
-       'Disambiguations'           => array( 'Disheñvelout' ),
        'DoubleRedirects'           => array( 'AdksaoùDoubl' ),
        'Emailuser'                 => array( 'PostelImplijer' ),
+       'ExpandTemplates'           => array( 'PatromoùAstennet' ),
        'Export'                    => array( 'Ezporzhiañ' ),
        'Import'                    => array( 'Enporzhiañ' ),
        'LinkSearch'                => array( 'KlaskLiamm' ),
@@ -202,7 +201,6 @@ $messages = array(
 'tog-minordefault' => "Sellet ouzh ar c'hemmoù degaset ganin<br /> evel kemmoù dister dre ziouer",
 'tog-previewontop' => 'Rakwelet tres ar bajenn a-us ar prenestr skridaozañ',
 'tog-previewonfirst' => 'Rakwelet tres ar bajenn kerkent hag an aozadenn gentañ',
-'tog-nocache' => 'Diweredekaat krubuilh ar pajennoù gant ar merdeer',
 'tog-enotifwatchlistpages' => 'Kas ur postel din pa vez kemmet ur bajenn zo war ma roll evezhiañ',
 'tog-enotifusertalkpages' => 'Kas ur postel din pa vez kemmet ma fajenn gaozeal',
 'tog-enotifminoredits' => 'Kas ur postel din, ha pa vije evit kemenn kemmoù dister',
@@ -338,7 +336,6 @@ $messages = array(
 'qbedit' => 'Kemmañ',
 'qbpageoptions' => 'Pajenn an dibaboù',
 'qbmyoptions' => 'Ma dibaboù',
-'qbspecialpages' => 'Pajennoù dibar',
 'faq' => 'FAG',
 'faqpage' => 'Project:FAG',
 
@@ -428,7 +425,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).
 'aboutsite' => 'Diwar-benn {{SITENAME}}',
 'aboutpage' => 'Project:Diwar-benn',
-'copyright' => "Danvez a c'haller implijout dindan $1.",
+'copyright' => "Danvez a c'haller implijout dindan $1 nemet ha notet e vefe ar c'hontrol.",
 'copyrightpage' => '{{ns:project}}:Gwirioù aozer (Copyright)',
 'currentevents' => 'Keleier',
 'currentevents-url' => 'Project:Keleier',
@@ -456,8 +453,8 @@ $1',
 'youhavenewmessages' => "$1 zo ganeoc'h ($2).",
 'youhavenewmessagesfromusers' => '$1 ho peus eus {{PLURAL:$3|un implijer all|$3 implijer}} ($2).',
 'youhavenewmessagesmanyusers' => ' $1 ho peus implijerien a-leizh  ($2).',
-'newmessageslinkplural' => "{{PLURAL:$1ur c'hemennad nevez|kemennadoù nevez}}",
-'newmessagesdifflinkplural' => '{{PLURAL:$1|kemennad diwezhañ|kemennadoù diwezhañ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ur gemennad nevez|999=kemennadoù nevez}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|kemennad diwezhañ|999=kemennadoù diwezhañ}}',
 'youhavenewmessagesmulti' => "Kemennoù nevez zo ganeoc'h war $1",
 'editsection' => 'kemmañ',
 'editold' => 'kemmañ',
@@ -554,9 +551,6 @@ Marteze ez eus ennañ arouezennoù n'haller ket degemer en titloù.",
 'perfcached' => "Krubuilhet eo ar roadennoù da-heul ha marteze n'int ket bet hizivaet. D'ar muiañ e c'haller kaout {{PLURAL:$1|un disoc'h|$1 disoc'h}} er grubuilh.",
 'perfcachedts' => "Krubuilhet eo ar roadennoù da-heul hag hizivaet int bet da ziwezhañ d'an $1. D'ar muiañ e c'haller kaout {{PLURAL:$4|un disoc'h|$4 disoc'h}} er grubuilh.",
 'querypage-no-updates' => 'Diweredekaet eo an hizivaat evit ar bajenn-mañ. Evit poent ne vo ket nevesaet ar roadennoù amañ.',
-'wrong_wfQuery_params' => "Arventennoù faziek war an urzhiad wfQuery()<br />
-Arc'hwel : $1<br />
-Goulenn : $2",
 'viewsource' => 'Sellet ouzh tarzh an destenn',
 'viewsource-title' => 'Gwelet an tarzh evit $1',
 'actionthrottled' => 'Ober daleet',
@@ -585,6 +579,7 @@ Setu amañ perak ''$2''.",
 'invalidtitle-unknownnamespace' => 'Titl direizh gant an niverenn esaouenn anv $1 hag an destenn "$2" dianav',
 'exception-nologin' => "N'oc'h ket kevreet",
 'exception-nologin-text' => "Ar bajenn-mañ pe an ober-mañ a c'houlenn e vefec'h kevreet er wiki-mañ.",
+'exception-nologin-text-manual' => "$1, mar plij, evit gallout mont d'ar bajenn-mañ pe ober an dra-mañ",
 
 # Virus scanner
 'virus-badscanner' => "Kefluniadur fall : skanner viruzoù dianav : ''$1''",
@@ -634,13 +629,14 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
 'userlogin-resetpassword-link' => 'Ankouaet ho peus ho ker-tremen ?',
 'helplogin-url' => 'Help:Kevreañ',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Skoazell evit kevreañ]]',
+'userlogin-createanother' => 'Krouiñ ur gont all',
 'createacct-join' => 'Skrivit ho titouroù amañ dindan.',
 'createacct-another-join' => 'Ebarzhiñ titouroù ar gont nevez amañ dindan.',
 'createacct-emailrequired' => "Chomlec'h postel",
 'createacct-emailoptional' => "Chomlec'h postel (direizh)",
 'createacct-email-ph' => "Skrivit ho chomlec'h postel",
 'createacct-another-email-ph' => "Ebarzhiñ ur chomlec'h postel",
-'createaccountmail' => 'Dre bostel',
+'createaccountmail' => "Implijout ur ger-tremen dibad ha kas anezhañ d'ar chomlec'h postel diferetDre bostel",
 'createacct-realname' => 'Anv gwir (diret)',
 'createaccountreason' => 'Abeg :',
 'createacct-reason' => 'Abeg',
@@ -677,7 +673,7 @@ Gwiriit eo bet skrivet mat an anv ganeoc\'h pe [[Special:UserLogin/signup|krouit
 'passwordtooshort' => '{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.',
 'password-name-match' => "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.",
 'password-login-forbidden' => 'Berzet eo ober gant an anv-implijer hag ar ger-tremen-mañ.',
-'mailmypassword' => 'Kasit din ur ger-tremen nevez',
+'mailmypassword' => 'Adderaouekaat ar ger-tremen',
 'passwordremindertitle' => 'Ho ker-tremen berrbad nevez evit {{SITENAME}}',
 'passwordremindertext' => "Unan bennak (c'hwi moarvat gant ar chomlec'h IP \$1)
 en deus goulennet ma vo kaset dezhañ ur ger-tremen nevez evit {{SITENAME}} (\$4).
@@ -727,7 +723,7 @@ Gortozit $1, mar plij, a-raok esaeañ en-dro.",
 'user-mail-no-body' => "Esaeet ho peus kas ur postel gant ur c'horf goullo pe re verr.",
 
 # Change password dialog
-'resetpass' => 'Cheñch ar ger-tremen',
+'changepassword' => 'Kemmañ ar ger-tremen',
 'resetpass_announce' => "Enskrivet oc’h bet dre ur ger-tremen da c'hortoz kaset deoc'h dre bostel. A-benn bezañ enrollet da vat e rankit spisaat ur ger-tremen nevez amañ :",
 'resetpass_text' => '<!-- Ouzhpennañ testenn amañ -->',
 'resetpass_header' => 'Cheñch ger-tremen ar gont',
@@ -1110,10 +1106,6 @@ Gallout a ri gwelet an diforc'h-mañ ; titouroù zo war [{{fullurl:{{#Special:Lo
 'revisiondelete' => 'Diverkañ/diziverkañ stummoù',
 'revdelete-nooldid-title' => "N'eus stumm pal ebet evit an degasadennoù",
 'revdelete-nooldid-text' => "Pe n'eo ket bet spisaet ganeoc'h ar stumm(où) pal da implijout an arc'hwel-mañ evito. pe n'eus ket eus ar stummoù spisaet, pe emaoc'h o klask kuzhat ar stumm red.",
-'revdelete-nologtype-title' => "N'eus bet resisaet seurt marilh ebet",
-'revdelete-nologtype-text' => "N'eus ket bet spisaet ganeoc'h seurt marilh ebet da lakaat an ober-mañ da c'hoarvezout warnañ.",
-'revdelete-nologid-title' => 'Enmont ar marilh direizh',
-'revdelete-nologid-text' => "Pe n'hoc'h eus ket spisaet enmont ebet er marilh da vezañ sevenet an ober-mañ warnañ, pe n'eus ket eus an darvoud merket.",
 'revdelete-no-file' => "N'eus ket eus ar restr spisaet ganeoc'h.",
 'revdelete-show-file-confirm' => 'Ha sur oc\'h e fell deoc\'h gwelet stumm diverket ar restr "<nowiki>$1</nowiki>" deiziataet eus an $2 da $3?',
 'revdelete-show-file-submit' => 'Ya',
@@ -1133,8 +1125,8 @@ Gouest e vo merourien all {{SITENAME}} da dapout krog en testennoù kuzhet ha da
 'revdelete-hide-user' => "Anv implijer pe chomlec'h IP an aozer",
 'revdelete-hide-restricted' => "Diverkañ ar roadennoù kement d'ar verourien ha d'ar re all",
 'revdelete-radio-same' => '(arabat cheñch)',
-'revdelete-radio-set' => 'Hewel',
-'revdelete-radio-unset' => 'Kuzhet',
+'revdelete-radio-set' => 'Kuzhet',
+'revdelete-radio-unset' => 'Hewel',
 'revdelete-suppress' => 'Diverkañ roadennoù ar verourien hag ar re all',
 'revdelete-unsuppress' => 'Lemel ar strishadurioù war ar stummoù assavet',
 'revdelete-log' => 'Abeg :',
@@ -1146,8 +1138,6 @@ $1",
 'logdelete-failure' => "'''N'eus ket bet gallet termeniñ gweluster ar marilh :'''
 $1",
 'revdel-restore' => 'Cheñch ar gweluster',
-'revdel-restore-deleted' => 'adweladennoù bet diverket',
-'revdel-restore-visible' => "adweladennoù a c'heller gwelet",
 'pagehist' => 'Istor ar bajenn',
 'deletedhist' => 'Diverkañ an istor',
 'revdelete-hide-current' => "Fazi en ur ziverkañ an elfenn deiziataet eus an $1 da $2 : ar stumm red eo.
@@ -1223,12 +1213,8 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => "Disoc'hoù enklask",
 'searchresults-title' => 'Disoc\'hoù klask evit "$1"',
-'searchresulttext' => "Evit gouzout hiroc'h diwar-benn ar c'hlask e {{SITENAME}}, sellet ouzh [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Klasket hoc\'h eus \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|an holl bajennoù a grog gant "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|an holl bajennoù enno ul liamm war-du "$1"]])',
-'searchsubtitleinvalid' => "Klasket hoc'h eus '''$1'''",
 'toomanymatches' => 'Re a respontoù a glot gant ar goulenn, klaskit gant ur goulenn all',
 'titlematches' => 'Klotadurioù gant an titloù',
-'notitlematches' => "N'emañ ar ger(ioù) goulennet e titl pennad ebet",
 'textmatches' => 'Klotadurioù en testennoù',
 'notextmatches' => "N'emañ ar ger(ioù) goulennet e testenn pennad ebet",
 'prevn' => '{{PLURAL:$1|$1}} kent',
@@ -1237,10 +1223,8 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => "$1 {{PLURAL:$1|disoc'h|disoc'h}} war-lerc'h",
 'shown-title' => "Diskouez $1 {{PLURAL:$1|disoc'h|disoc'h}} dre bajenn",
 'viewprevnext' => 'Gwelet ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Dibarzhioù klask',
 'searchmenu-exists' => "'''Ur bajenn anvet\"[[:\$1]]\" zo war ar wiki-mañ'''",
 'searchmenu-new' => "'''Krouiñ ar bajenn \"[[:\$1]]\" war ar wiki-mañ !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Furchal er pajennoù a grog gant ar rakger-mañ]]',
 'searchprofile-articles' => 'Pajennoù gant boued',
 'searchprofile-project' => 'Pajennoù skoazell ha pajennoù ar raktres',
 'searchprofile-images' => 'Liesmedia',
@@ -1261,20 +1245,16 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-default' => "$1 disoc'h :",
 'search-interwiki-more' => "(muioc'h)",
 'search-relatedarticle' => "Disoc'hoù kar",
-'mwsuggest-disable' => "Diweredekaat ar c'hinnigoù klask",
 'searcheverything-enable' => 'Klask en holl esaouennoù anv',
 'searchrelated' => "disoc'hoù kar",
 'searchall' => 'An holl',
 'showingresults' => "Diskouez betek {{PLURAL:$1|'''1''' disoc'h|'''$1''' disoc'h}} o kregiñ gant #'''$2'''.",
 'showingresultsnum' => "Diskouez {{PLURAL:$3|'''1''' disoc'h|'''$3''' disoc'h}} o kregiñ gant #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Disoc'h '''$1''' diwar '''$3'''|Disoc'hoù '''$1 - $2''' diwar '''$3'''}} evit '''$4'''",
-'nonefound' => "'''Notenn''' : dre ziouer ne glasker nemet en esaouennoù anv zo. Klaskit spisaat ho koulenn gant '''all :''' evit klask e pep lec'h (e-barzh ar pajennoù-kaozeal, ar patromoù, hag all), pe dibabit an esaouenn anv a zere.",
 'search-nonefound' => "An enklask-mañ ne zisoc'h war netra.",
-'powersearch' => 'Klask araokaet',
 'powersearch-legend' => 'Klask araokaet',
 'powersearch-ns' => 'Klask en esaouennoù anv :',
 'powersearch-redir' => 'Roll an adkasoù',
-'powersearch-field' => 'Klask',
 'powersearch-togglelabel' => 'Dibab :',
 'powersearch-toggleall' => 'An holl',
 'powersearch-togglenone' => 'Hini ebet',
@@ -1286,7 +1266,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'preferences' => 'Penndibaboù',
 'mypreferences' => 'Penndibaboù',
 'prefs-edits' => 'Niver a zegasadennoù :',
-'changepassword' => 'Kemmañ ar ger-tremen',
 'prefs-skin' => 'Gwiskadur',
 'skin-preview' => 'Rakwelet',
 'datedefault' => 'Dre ziouer',
@@ -1309,13 +1288,11 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'prefs-email' => 'Dibarzhioù postel',
 'prefs-rendering' => 'Neuz',
 'saveprefs' => 'Enrollañ ar penndibaboù',
-'resetprefs' => 'Adlakaat ar penndibaboù kent',
 'restoreprefs' => 'Adlakaat an holl arventennoù dre ziouer (en holl gevrennoù)',
 'prefs-editing' => 'Prenestr skridaozañ',
 'rows' => 'Linennoù :',
 'columns' => 'Bannoù',
 'searchresultshead' => 'Klask',
-'resultsperpage' => 'Niver a respontoù dre bajenn :',
 'stub-threshold' => 'Bevenn uhelañ evit al <a href="#" class="stub">liammoù war-du an danvez pennadoù</a> (okted) :',
 'stub-threshold-disabled' => 'Diweredekaet',
 'recentchangesdays' => "Niver a zevezhioù da ziskouez er c'hemmoù diwezhañ :",
@@ -1327,7 +1304,6 @@ Gallout a reot kavout munudoù e [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'localtime' => "Eur lec'hel :",
 'timezoneuseserverdefault' => 'Ober gant talvoudenn dre ziouer ar wiki ($1)',
 'timezoneuseoffset' => 'Arall (resisaat al linkadur)',
-'timezoneoffset' => 'Linkadur eur¹ :',
 'servertime' => 'Eur ar servijer :',
 'guesstimezone' => 'Ober gant talvoudenn ar merdeer',
 'timezoneregion-africa' => 'Afrika',
@@ -1574,12 +1550,13 @@ Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset g
 'recentchanges-summary' => "Dre ar bajenn-mañ e c'hallit heuliañ ar c'hemmoù diwezhañ bet degaset d'ar wiki.",
 'recentchanges-noresult' => "N'eus bet kemm ebet a glot gant an dezverkoù-se e-pad ar prantad diferet.",
 'recentchanges-feed-description' => "Heuilhit ar c'hemmoù diwezhañ er wiki el lusk-mañ.",
-'recentchanges-label-newpage' => "Gant ar c'hemm-mañ e vo krouet ur bajenn nevez.",
+'recentchanges-label-newpage' => "Gant ar c'hemm-mañ ez eus bet krouet ur bajenn nevez.",
 'recentchanges-label-minor' => "Ur c'hemm dister eo hemañ",
 'recentchanges-label-bot' => "Gant ur bot eo bet degaset ar c'hemm-mañ.",
 'recentchanges-label-unpatrolled' => "N'eo ket bet gwiriet ar c'hemm-mañ evit c'hoazh.",
-'recentchanges-legend-newpage' => '$1 - pajenn nevez',
-'rcnote' => "Setu aze an {{PLURAL:$1|'''1''' change|'''$1''' kemm diwezhañ}} bet c'hoarvezet e-pad an {{PLURAL:$2|deiz|'''$2''' deiz}} diwezhañ, savet d'an $4 da $5.",
+'recentchanges-label-plusminus' => 'Kemmet eo ment ar bajenn eus an niver-mañ a oktedoù',
+'recentchanges-legend-heading' => '"Alc\'hwez :"',
+'recentchanges-legend-newpage' => '(gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])',
 'rcnotefrom' => "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an '''$2''' ('''$1''' d'ar muiañ).",
 'rclistfrom' => "Diskouez ar c'hemmoù diwezhañ abaoe an $1.",
 'rcshowhideminor' => "$1 ar c'hemmoù dister",
@@ -1898,7 +1875,7 @@ Diweredekaet eo bet img_auth.php evit ur surentez eus ar gwellañ",
 'filehist-comment' => 'Notenn',
 'filehist-missing' => 'Restr diank',
 'imagelinks' => 'Implij ar restr',
-'linkstoimage' => "Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} d'ar restr-mañ :",
+'linkstoimage' => 'Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} ouzh ar restr-mañ :',
 'linkstoimage-more' => "Ouzhpenn $1 {{PLURAL:$1|bajenn zo liammet ouzh|pajenn zo liammet ouzh}} ar restr-mañ.
 Ne laka ar roll-mañ war wel nemet {{PLURAL:$1|ar bajenn gentañ liammet ouzh|an $1 pajenn gentañ liammet ouzh}} ar rest-mañ.
 Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
@@ -2037,6 +2014,7 @@ $1 {{PLURAL:$1|rummad|rummad}}',
 'ninterwikis' => ' {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|liamm|liamm}}',
 'nmembers' => '$1 {{PLURAL:$1|elfenn|elfenn}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|ezel}}',
 'nrevisions' => '$1 {{PLURAL:$1|stumm|stumm}}',
 'nviews' => '$1 {{PLURAL:$1|selladenn|selladenn}}',
 'nimagelinks' => 'Implijet e $1 {{PLURAL:$1|pajenn|pajenn}}',
@@ -2075,10 +2053,9 @@ $1 {{PLURAL:$1|rummad|rummad}}',
 'protectedpages' => 'Pajennoù gwarezet',
 'protectedpages-indef' => 'Gwarezoù da badout hepken',
 'protectedpages-cascade' => 'Gwarez dre skalierad hepken',
-'protectedpagestext' => "Gwarezet eo ar pajennoù da-heul; n'haller na kemmañ anezho nag o dilec'hiañ",
+'protectedpages-noredirect' => 'Kuzhat an adkasoù',
 'protectedpagesempty' => "N'eus pajenn gwarezet ebet gant an arventennoù-mañ evit poent.",
 'protectedtitles' => 'Titloù gwarezet',
-'protectedtitlestext' => "An titloù da-heul zo bet gwarezet p'int bet krouet",
 'protectedtitlesempty' => "N'eus bet gwarezet titl ebet dezhañ an arventennoù-se evit poent.",
 'listusers' => 'Roll an implijerien',
 'listusers-editsonly' => 'Na ziskouez nemet an implijerien o deus degaset un dra bennak',
@@ -2130,9 +2107,6 @@ Gallout a rit strishaat ar mod diskwel en ur zibab ar marilh, an anv implijer (d
 'allpagesto' => 'Diskouez ar pajennoù betek :',
 'allarticles' => 'An holl bajennoù',
 'allinnamespace' => 'An holl bajennoù (esaouenn $1)',
-'allnotinnamespace' => "An holl bajennoù (ar re n'emaint ket en esaouenn anv $1)",
-'allpagesprev' => 'Kent',
-'allpagesnext' => "War-lerc'h",
 'allpagessubmit' => 'Kadarnaat',
 'allpagesprefix' => 'Diskouez ar pajennoù a grog gant :',
 'allpagesbadtitle' => "Fall e oa anv ar bajenn lakaet pe neuze ez eus ennañ ur rakger etrewiki pe etreyezhoù. Evit doare ez arouezennoù n'haller ket implijout en titloù.",
@@ -2472,7 +2446,6 @@ Ma'z eus bet krouet ur bajenn nevez dezhi an hevelep anv abaoe an diverkadenn, e
 'undeletebtn' => 'Assevel',
 'undeletelink' => 'gwelet/assevel',
 'undeleteviewlink' => 'gwelet',
-'undeletereset' => 'Adderaouekaat',
 'undeleteinvert' => 'Eilpennañ an diuzadenn',
 'undeletecomment' => 'Abeg :',
 'undeletedrevisions' => 'Adsavet {{PLURAL:$1|1 stumm|$1 stumm}}',
@@ -2560,7 +2533,6 @@ Dindan emañ merket enmont diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
 'block' => 'Stankañ an implijer',
 'unblock' => 'Distankañ an implijer',
 'blockip' => "Stankañ ur chomlec'h IP",
-'blockip-title' => 'Stankañ an implijer',
 'blockip-legend' => 'Stankañ an implijer',
 'blockiptext' => "Grit gant ar furmskrid a-is evit stankañ ar moned skrivañ ouzh ur chomlec'h IP pe un implijer bennak.
 Seurt diarbennoù n'hallont bezañ kemeret nemet evit mirout ouzh ar vandalerezh hag a-du gant an [[{{MediaWiki:Policy-url}}|erbedadennoù ha reolennoù da heuliañ]].
@@ -2568,7 +2540,6 @@ Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou
 'ipadressorusername' => "Chomlec'h IP pe anv implijer",
 'ipbexpiry' => 'Pad ar stankadenn',
 'ipbreason' => 'Abeg :',
-'ipbreasonotherlist' => 'Abeg all',
 'ipbreason-dropdown' => "*Abegoù stankañ boutinañ
 ** Degas titouroù faos
 ** Tennañ danvez eus ar pajennoù
@@ -2584,8 +2555,6 @@ Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou
 'ipbsubmit' => 'Stankañ an implijer-mañ',
 'ipbother' => 'Prantad all',
 'ipboptions' => '2 eurvezh:2 hours,1 devezh:1 day,3 devezh:3 days,1 sizhunvezh:1 week,2 sizhunvezh:2 weeks,1 mizvezh:1 month,3 mizvezh:3 months,6 mizvezh:6 months,1 bloaz:1 year,da viken:infinite',
-'ipbotheroption' => 'prantad all',
-'ipbotherreason' => 'Abeg all/ouzhpenn',
 'ipbhidename' => "Kuzhat anv an implijer er rolloù hag er c'hemmoù",
 'ipbwatchuser' => 'Evezhiañ pajennoù implijer ha kaozeal an implijer-mañ',
 'ipb-disableusertalk' => 'Mirout ouzh an implijer-mañ da implijout e bajenn gaozeal dezhañ e-unan e-keit hag emañ stanket',
@@ -2670,7 +2639,6 @@ Setu aze an abeg(où) m\'eo bet stanket $1 : "\'\'$2\'\'"',
 'proxyblockreason' => "Stanket eo bet hoc'h IP rak ur proksi digor eo. Trugarez da gelaouiñ ho pourvezer moned ouzh ar Genrouedad pe ho skoazell deknikel eus ar gudenn surentez-mañ.",
 'sorbsreason' => "Rollet eo ho chomlec'h IP evel ur proksi digor en DNSBL implijet gant {{SITENAME}}.",
 'sorbs_create_account_reason' => "Rollet eo ho chomlec'h IP evel ur proksi digor war an DNSBL implijet gant {{SITENAME}}. N'hallit ket krouiñ ur gont",
-'cant-block-while-blocked' => "N'hallit ket stankañ implijerien all ma'z oc'h stanket c'hwi hoc'h-unan.",
 'cant-see-hidden-user' => "Stanket ha kuzhet eo bet dija an implijer emaoc'h o klask stankañ. Dre ma n'emañ ket ganeoc'h ar gwir hideuser, n'hallit ket gwelet pe kemmañ stankadenn an implijer.",
 'ipbblocked' => "Ne c'hellit ket stankañ pe distankañ implijerien all, dre ma 'z oc'h stanket",
 'ipbnounblockself' => "N'oc'h ket aotreet d'en em zistankañ ho unan",
@@ -2731,7 +2699,6 @@ Ur c'hemm bras ha dic'hortoz e c'hall bezañ evit ur bajenn a vez sellet outi al
 En degouezh-se e rankot adenvel pe gendeuziñ ar bajenn c'hwi hoc'h-unan ma karit.",
 'movearticle' => "Dilec'hiañ ar pennad",
 'moveuserpage-warning' => "'''Diwallit : ''' War-nes dilec'hiañ ur bajenn implijer emaoc'h. Notit mat n'eus nemet ar bajenn a vo dilec'hiet ha ne vo ''ket'' adanvet an implijer.",
-'movenologin' => 'Digevreet',
 'movenologintext' => 'A-benn gellout adenvel ur pennad e rankit bezañ un implijer enrollet ha bezañ [[Special:UserLogin|kevreet]].',
 'movenotallowed' => "N'oc'h ket aotreet da zilec'hiañ pajennoù.",
 'movenotallowedfile' => "N'oc'h ket aoteret da adenvel restroù.",
@@ -2747,8 +2714,6 @@ En degouezh-se e rankot adenvel pe gendeuziñ ar bajenn c'hwi hoc'h-unan ma kari
 'articleexists' => "Ur pennad gantañ an anv-se zo dija pe n'eo ket reizh an titl hoc'h eus dibabet.
 Dibabit unan all mar plij.",
 'cantmove-titleprotected' => "N'hallit ket dilec'hiañ ur bajenn d'al lec'h-mañ rak gwarezet eo bet an titl nevez p'eo bet krouet.",
-'talkexists' => "Dilec'hiet mat eo bet ar bajenn hec'h-unan met chomet eo ar bajenn gaozeal rak unan all a oa dija gant an anv nevez-se. Kendeuzit anezho c'hwi hoc'h-unan mar plij.",
-'movedto' => 'adanvet e',
 'movetalk' => 'Adenvel ivez ar bajenn "gaozeal", mar bez ret.',
 'move-subpages' => 'Adenvel an ispajennoù (betek $1 pajenn)',
 'move-talk-subpages' => 'Adenvel ispajennoù ar bajenn gaozeal (betek $1 pajenn).',
@@ -3584,15 +3549,10 @@ Kuzhet e vo ar re all dre ziouer.
 'exif-urgency-high' => 'Uhel ($1)',
 'exif-urgency-other' => 'Priorelezh termenet gant an aozer ($1)',
 
-# External editor support
-'edit-externally' => 'Kemmañ ar restr-mañ dre un arload diavaez',
-'edit-externally-help' => "(Gwelet [https://www.mediawiki.org/wiki/Manual:External_editors erbedadennoù staliañ an aozer diavaez] a-benn gouzout hiroc'h).",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'pep tra',
 'namespacesall' => 'pep tra',
 'monthsall' => 'an holl',
-'limitall' => 'An holl',
 
 # Email address confirmation
 'confirmemail' => "Kadarnaat ar chomlec'h postel",
@@ -3612,7 +3572,6 @@ Distro ar posteler : $1",
 'confirmemail_needlogin' => "Ret eo deoc'h $1 evit kadarnaat ho chomlec'h postel.",
 'confirmemail_success' => "Kadarnaet eo ho chomlec'h postel. A-benn bremañ e c'hallit [[Special:UserLogin|kevreañ]] hag ober ho mad eus ar wiki.",
 'confirmemail_loggedin' => "Kadarnaet eo ho chomlec'h bremañ",
-'confirmemail_error' => 'Ur gudenn zo bet e-ser enrollañ ho kadarnadenn',
 'confirmemail_subject' => "Kadarnadenn chomlec'h postel evit {{SITENAME}}",
 'confirmemail_body' => "Unan bennak, c'hwi moarvat, gant ar chomlec'h IP \$1,
 en deus enrollet ur gont \"\$2\" gant ar chomlec'h postel-mañ war lec'hienn {{SITENAME}}.
@@ -3690,6 +3649,10 @@ Kadarnait mar plij e fell deoc'h krouiñ ar pennad-mañ da vat.",
 'imgmultigo' => 'Mont !',
 'imgmultigoto' => "Mont d'ar bajenn $1",
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(yezh dre ziouer)',
+'img-lang-go' => 'Mont',
+
 # Table pager
 'ascending_abbrev' => 'pignat',
 'descending_abbrev' => 'diskenn',
@@ -3787,8 +3750,16 @@ Gallout a rit [[Special:EditWatchlist|implijout an aozer boutin ivez]].',
 'version-parser-function-hooks' => "Galv an arc'hwelioù dielfennañ",
 'version-hook-name' => 'Anv ar galv',
 'version-hook-subscribedby' => 'Termenet gant',
-'version-version' => '(Stumm $1)',
-'version-license' => 'Aotre-implijout',
+'version-version' => '($1)',
+'version-license' => 'Aotre-implijout MediaWiki',
+'version-ext-license' => 'Aotre-implijout',
+'version-ext-colheader-name' => 'Astenn',
+'version-ext-colheader-version' => 'Stumm',
+'version-ext-colheader-license' => 'Aotre-implijout',
+'version-ext-colheader-description' => 'Deskrivadur',
+'version-ext-colheader-credits' => 'Aozerien',
+'version-license-title' => 'Aotre-implijout evit $1',
+'version-credits-title' => 'Kredoù evit $1',
 'version-poweredby-credits' => "Mont a ra ar wiki-mañ en-dro a-drugarez da '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 're all',
 'version-poweredby-translators' => 'troerien translatewiki.net',
@@ -3811,6 +3782,7 @@ Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar
 'redirect-lookup' => 'Klask :',
 'redirect-value' => 'Talvoud :',
 'redirect-user' => 'ID an implijer',
+'redirect-page' => 'ID ar bajenn',
 'redirect-revision' => 'Adwel ar bajenn',
 'redirect-file' => 'Anv ar restr',
 'redirect-not-exists' => "Talvoud n'eo ket bet kavet",
@@ -3877,7 +3849,6 @@ Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar
 
 # Special:ComparePages
 'comparepages' => 'Keñveriañ pajennoù',
-'compare-selector' => 'Keñveriañ stummoù ar pajennoù',
 'compare-page1' => 'Pajenn 1',
 'compare-page2' => 'Pajenn 2',
 'compare-rev1' => 'Adweladenn 1',
@@ -4023,6 +3994,9 @@ A-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc
 'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
 'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
 
+# Image rotation
+'rotate-comment' => 'Skeudenn troet eus $1 {{PLURAL:$1|derez}} a-du gant an heol',
+
 # Limit report
 'limitreport-cputime' => 'Amzer implij ar CPU',
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|eiladenn}}',
@@ -4031,6 +4005,7 @@ A-hend-all e c'hallit ober gant ar furmskrid eeunaet dindan. Ouzhpennet e vo hoc
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|okted}}',
 'limitreport-templateargumentsize' => 'Ment arguzenn ar patrom',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|okted}}',
+'limitreport-expansiondepth' => 'Donder astenn brasañ',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Emled ar patromoù',
@@ -4047,6 +4022,7 @@ Ober a ra kement-mañ dre c'hervel ar bazenn a zegouezh digant parser MediaWiki
 'expand_templates_remove_comments' => 'Lemel an notennoù kuit',
 'expand_templates_remove_nowiki' => "Diverkañ a ra ar balizennoù <nowiki> en disoc'h",
 'expand_templates_generate_xml' => 'Gwelet ar gwezennadur XML',
+'expand_templates_generate_rawhtml' => 'Diskouez an HTML kriz',
 'expand_templates_preview' => 'Rakwelet',
 
 );
index 089112c..8c5cfcc 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Imdadb
+ * @author Southparkfan
  */
 
 $messages = array(
@@ -113,6 +114,7 @@ $messages = array(
 'delete' => 'Mesa',
 'protect' => 'Rakk',
 'protect_change' => 'badal kar',
+'protectthispage' => '',
 'newpage' => 'Púskuno panna',
 'talkpage' => 'Dá panna ná bárav aŧ ítgap kabo',
 'talkpagelinktext' => 'Ítgap',
@@ -128,7 +130,7 @@ $messages = array(
 'jumptonavigation' => 'kasarşoní',
 'jumptosearch' => 'paŧŧopol',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} ná bárav aŧ',
 'aboutpage' => 'Project:Bárav',
 'copyright' => 'Mađđí $1 aná rid aŧ rasenging e.',
@@ -138,7 +140,6 @@ $messages = array(
 'disclaimers' => 'Dazkaşşík',
 'disclaimerpage' => 'Project:Las dazkaşşí',
 'edithelp' => 'Radbadal ráhşoní',
-'edithelppage' => 'Help:Radbadal',
 'helppage' => 'Help:Ridoband',
 'mainpage' => 'Monpanna',
 'mainpage-description' => 'Monpanna',
@@ -151,8 +152,6 @@ $messages = array(
 
 'retrievedfrom' => '"$1" án alok',
 'youhavenewmessages' => 'Nekin $1 ($2) are.',
-'newmessageslink' => 'púskuno kulav',
-'newmessagesdifflink' => 'guđđíko radbadal',
 'editsection' => 'radbadal',
 'editold' => 'radbadal',
 'viewsourceold' => 'bumpad e ur',
@@ -269,8 +268,6 @@ Ná radbadal ák deskáne atíko matano.",
 # Revision deletion
 'rev-delundel' => 'páş/aodem',
 'revdel-restore' => 'páşí e badal kar',
-'revdel-restore-deleted' => 'mesok badaldroşumk',
-'revdel-restore-visible' => 'páş badaldroşumk',
 
 # Merge log
 'revertmerge' => 'Jitá',
@@ -283,10 +280,6 @@ Ná radbadal ák deskáne atíko matano.",
 # Search results
 'searchresults' => 'Paŧŧopol ná kaŧŧiá',
 'searchresults-title' => '$1 kin paŧŧopol ná kaŧŧiá',
-'searchresulttext' => '{{SITENAME}} ŧí paŧŧopol ná bábat cáindárí kin [[{{MediaWiki:Helppage}}|{{int:help}}]] e ur.',
-'searchsubtitle' => 'Ní \'\'\'[[:$1]]\'\'\' kin paŧpol kares ([[Special:Prefixindex/$1|"$1" án biná maroká ģuŧ panna ģák]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ton gańđok ģuŧ panna ģák]])',
-'searchsubtitleinvalid' => "Ní '''$1''' akin paŧŧopol kares",
-'notitlematches' => 'Dá pin aná icco panna ná sarhál allav',
 'notextmatches' => 'Icco panna nivişt dá vaŕ aná allav',
 'prevn' => 'gidrengoká {{PLURAL:$1|$1}}',
 'nextn' => 'mon aná {{PLURAL:$1|$1}}',
@@ -311,15 +304,10 @@ Ná radbadal ák deskáne atíko matano.",
 'search-interwiki-more' => '(pen)',
 'searchrelated' => 'amrang',
 'searchall' => 'ģuŧŧ',
-'nonefound' => "'''Xiáldárí''': Bunyádí vaŕ aŧ bíra giŕás pinjága áteŧí paŧpol marek.
-
-Ģuŧŧ mađđí ŧí paŧpol kin (ítgap panna, kálib, dá-e teton aviŕda) tená just átá avalsar aŧí sarlaoz ''all:'' xaļ, yá bakár pinjága e sarlaoz ná jága ģá xaļ.",
 'search-nonefound' => 'Just aná icc kaŧŧiá allav',
-'powersearch' => 'Xúŕt paŧŧopol',
 'powersearch-legend' => 'Xúŕt paŧŧopol',
 'powersearch-ns' => 'Pin-jága ģáteŧí paŧŧopol:',
 'powersearch-redir' => 'Aŕsoká panna ģátá cirr e nişán et',
-'powersearch-field' => 'Dáŕkin paŧŧopol',
 
 # Preferences page
 'preferences' => 'Gicenk',
@@ -545,7 +533,6 @@ Zút áteaŧ mesing átá lekav kin $2 e ur.',
 'movepage-moved' => '\'\'\'"$1" e "$2"\'\'\' á surifingáne',
 'articleexists' => 'Anná pin aná panna málav án sáŕí e, yá ná tiroká pin ravá aff.
 Pen pin as gicen kar.',
-'movedto' => 'dáng surifingá',
 'movetalk' => 'Aviŕda ģá ítgap panna e surif',
 'movelogpage' => 'Surifing ná hisáb',
 'movereason' => 'Dalíl:',
@@ -622,9 +609,6 @@ Dáná bumpad e unning kesa',
 'metadata-expand' => 'Vaddíko hál e nişán et',
 'metadata-collapse' => 'Vaddíko hál e đakka',
 
-# External editor support
-'edit-externally-help' => '(Pen cáindárí kin [//www.mediawiki.org/wiki/Manual:External_editors joŕ kanning ná sarsoj] e ur)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ģuŧŧ',
 'namespacesall' => 'ģuŧŧ',
index 9a8d8a3..3bbbbdc 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Losnaslov' ),
        'Blankpage'                 => array( 'PraznaStranica' ),
        'Block'                     => array( 'BlokirajIP' ),
-       'Blockme'                   => array( 'BlokirajMe' ),
        'Booksources'               => array( 'KnjizniIzvori' ),
        'BrokenRedirects'           => array( 'NedovršenaPreusmjerenja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -71,10 +70,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'NapraviRačun' ),
        'Deadendpages'              => array( 'MrtveStranice' ),
        'DeletedContributions'      => array( 'ObrisaniDoprinosi' ),
-       'Disambiguations'           => array( 'Čvor' ),
        'DoubleRedirects'           => array( 'DvostrukaPreusmjerenja' ),
        'EditWatchlist'             => array( 'IzmjeniPraćeniSpisak' ),
        'Emailuser'                 => array( 'EmailKorisnika' ),
+       'ExpandTemplates'           => array( 'ProsirivanjeSablona' ),
        'Export'                    => array( 'Izvoz' ),
        'Fewestrevisions'           => array( 'Najmanje_uređivane_stranice' ),
        'FileDuplicateSearch'       => array( 'PotragaDuplihFajlova' ),
@@ -113,6 +112,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'ZasticeneStranice' ),
        'Protectedtitles'           => array( 'ZasticeniNazivi' ),
        'Randompage'                => array( 'Slučajna_stranica' ),
+       'RandomInCategory'          => array( 'SlucajnoUKategoriji' ),
        'Randomredirect'            => array( 'SlucajnoPreusmjerenje' ),
        'Recentchanges'             => array( 'NedavneIzmjene' ),
        'Recentchangeslinked'       => array( 'PovezaneNedavneIzmjene' ),
@@ -302,7 +302,6 @@ $messages = array(
 'tog-minordefault' => 'Označi sve izmjene malim isprva',
 'tog-previewontop' => 'Prikaži pretpregled prije polja za izmjenu a ne poslije',
 'tog-previewonfirst' => 'Prikaži izgled pri prvoj izmjeni',
-'tog-nocache' => 'Onemogući keširanje stranica u pregledniku',
 'tog-enotifwatchlistpages' => 'Pošalji mi e-mail kada se promijeni stranica ili datoteka sa mog spiska praćenih članaka',
 'tog-enotifusertalkpages' => 'Pošalji mi e-poštu kad se promijeni moja korisnička stranica za razgovor',
 'tog-enotifminoredits' => 'Pošalji mi e-poštu također za male izmjene u stranicama i datotekama',
@@ -424,7 +423,7 @@ $messages = array(
 'article' => 'Članak',
 'newwindow' => '(otvara se u novom prozoru)',
 'cancel' => 'Poništite',
-'moredotdotdot' => 'Još...',
+'moredotdotdot' => 'Više...',
 'morenotlisted' => 'Ovaj spisak nije kompletan.',
 'mypage' => 'Korisnička stranica',
 'mytalk' => 'Razgovor',
@@ -438,7 +437,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Opcije stranice',
 'qbmyoptions' => 'Moje opcije',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'ČPP',
 'faqpage' => 'Project:NPP',
 
@@ -556,8 +554,8 @@ $1',
 'youhavenewmessages' => 'Imate $1 ($2).',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|posljednje izmjene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|999=posljednje izmjene}}',
 'youhavenewmessagesmulti' => 'Imate nove poruke na $1',
 'editsection' => 'uredi',
 'editold' => 'uredi',
@@ -651,9 +649,6 @@ Nije ponuđeno nikakvo objašnjenje.',
 'perfcachedts' => 'Slijedeći podaci se nalaze u memoriji i zadnji put su ažurirani $1. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata}}.',
 'querypage-no-updates' => 'Ažuriranje ove stranice je isključeno.
 Podaci koji se ovdje nalaze ne moraju biti aktuelni.',
-'wrong_wfQuery_params' => 'Netačni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Pretraga: $2',
 'viewsource' => 'Pogledaj izvor',
 'viewsource-title' => 'Prikaz izvora stranice $1',
 'actionthrottled' => 'Akcija je usporena',
@@ -779,7 +774,7 @@ Molimo Vas da pokušate ponovno.',
 'passwordtooshort' => 'Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.',
 'password-name-match' => 'Vaša šifra mora biti različita od Vašeg korisničkog imena.',
 'password-login-forbidden' => 'Korištenje ovih korisničkih imena i šifara je zabranjeo.',
-'mailmypassword' => 'Pošalji mi novu šifru',
+'mailmypassword' => 'Poništi šifru/lozinku',
 'passwordremindertitle' => 'Nova privremena šifra za {{SITENAME}}',
 'passwordremindertext' => 'Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}}  ($4). Privremena šifra za korisnika "$2" je napravljena i glasi "$3". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.
 Vaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.
@@ -828,7 +823,7 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'user-mail-no-body' => 'Pokušano slanje e-poruke s praznim ili nerazumno kratkim sadržajem.',
 
 # Change password dialog
-'resetpass' => 'Promijeni korisničku šifru',
+'changepassword' => 'Promijeni šifru',
 'resetpass_announce' => 'Prijavili ste se sa privremenim kodom koji ste dobili na e-mail.
 Da biste završili prijavu, morate unijeti novu šifru ovdje:',
 'resetpass_text' => '<!-- Unesi tekst ovdje -->',
@@ -850,7 +845,7 @@ Možda ste već uspješno promijenili Vašu šifru ili ste tražili novu privrem
 # Special:PasswordReset
 'passwordreset' => 'Poništavanje šifre',
 'passwordreset-text-one' => 'Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste resetirali svoju šifru/lozinku.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste dobili privremenu šifru/lozinku putem e-pošte.}}',
 'passwordreset-legend' => 'Poništi šifru',
 'passwordreset-disabled' => 'Poništavanje šifre  je onemogućeno na ovoj wiki.',
 'passwordreset-emaildisabled' => 'E-pošta je onemogućena na ovom wikiju.',
@@ -1217,10 +1212,6 @@ Vi možete vidjeti ovu razliku; detalji se mogu vidjeti u [{{fullurl:{{#Special:
 'revisiondelete' => 'Obriši/vrati revizije',
 'revdelete-nooldid-title' => 'Nije unesena tačna revizija',
 'revdelete-nooldid-text' => 'Niste precizno odredili odredišnu reviziju/revizije da se izvrši ova funkcija, ili ta revizija nepostoji, ili pokušavate sakriti trenutnu reviziju.',
-'revdelete-nologtype-title' => 'Nije naveden tip zapisa',
-'revdelete-nologtype-text' => 'Niste odredili tip zapisa za izvršavanje ove akcije na njemu.',
-'revdelete-nologid-title' => 'Nevaljana stavka zapisa',
-'revdelete-nologid-text' => 'Niste odredili ciljnu stavku zapisa za izvršavanje ove funkcije ili navedena stavka ne postoji.',
 'revdelete-no-file' => 'Navedena datoteka ne postoji.',
 'revdelete-show-file-confirm' => 'Da li ste sigurni da želite pogledati obrisanu reviziju datoteke "<nowiki>$1</nowiki>" od $2 u $3?',
 'revdelete-show-file-submit' => 'Da',
@@ -1240,8 +1231,8 @@ Drugi administratori projekta {{SITENAME}} će i dalje moći pristupiti sakriven
 'revdelete-hide-user' => 'Korisničko ime urednika/IP',
 'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
 'revdelete-radio-same' => '(ne mijenjaj)',
-'revdelete-radio-set' => 'Vidljivo',
-'revdelete-radio-unset' => 'Sakriveno',
+'revdelete-radio-set' => 'Sakriveno',
+'revdelete-radio-unset' => 'Vidljivo',
 'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
 'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
 'revdelete-log' => 'Razlog:',
@@ -1253,8 +1244,6 @@ $1",
 'logdelete-failure' => "'''Zapisnik vidljivosti nije mogao biti postavljen:'''
 $1",
 'revdel-restore' => 'Promijeni dostupnost',
-'revdel-restore-deleted' => 'obrisane revizije',
-'revdel-restore-visible' => 'vidljive revizije',
 'pagehist' => 'Historija stranice',
 'deletedhist' => 'Izbrisana historija',
 'revdelete-hide-current' => 'Greška pri sakrivanju stavke od $2, $1: ovo je trenutna revizija.
@@ -1323,7 +1312,7 @@ Korištenje navigacionih linkova će resetovati ovaj stupac.',
 'showhideselectedversions' => 'Pokaži/sakrij odabrane verzije',
 'editundo' => 'ukloni ovu izmjenu',
 'diff-empty' => '(Nema razlike)',
-'diff-multi' => '({{plural:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije|Nije prikazano $1 međurevizija}} od {{PLURAL:$2|jednog korisnika|$2 korisnika}})',
+'diff-multi' => '({{PLURAL:$1|Nije prikazana jedna međurevizija|Nisu prikazane $1 međurevizije|Nije prikazano $1 međurevizija}} od {{PLURAL:$2|jednog korisnika|$2 korisnika}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Jedna međurevizija|$1 međurevizije|$1 međurevizija}} od više od $2 {{PLURAL:$2|korisnika|korisnika}} {{PLURAL:$1|nije prikazana|nisu prikazane}})',
 'difference-missing-revision' => '{{PLURAL:$2|Jedna izmjena|$2 izmjene}} od ove razlike ($1) ne {{PLURAL:$2|postoji|postoje}}.
 
@@ -1333,12 +1322,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati pretrage za "$1"',
-'searchresulttext' => 'Za više informacija o pretraživanju {{SITENAME}}, pogledajte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do "$1"]])',
-'searchsubtitleinvalid' => 'Tražili ste $1',
 'toomanymatches' => 'Pronađeno je previše rezultata, molimo pokušajte unijeti konkretniji izraz',
 'titlematches' => 'Naslov članka odgovara',
-'notitlematches' => 'Naslov članka ne odgovara.',
 'textmatches' => 'Tekst stranice odgovara',
 'notextmatches' => 'Tekst članka ne odgovara',
 'prevn' => '{{PLURAL:$1|prethodni $1|prethodnih $1}}',
@@ -1347,10 +1332,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|Slijedeći $1 rezultat|Slijedeća $1 rezultata|Slijedećih $1 rezultata}}',
 'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
 'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcije pretrage',
 'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
 'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sadržaja',
 'searchprofile-project' => 'Stranice pomoći i projekta',
 'searchprofile-images' => 'Multimedija',
@@ -1371,32 +1354,27 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
 'search-relatedarticle' => 'Povezano',
-'mwsuggest-disable' => 'Onemogući AJAX prijedloge',
 'searcheverything-enable' => 'Traži u svim imenskim prostorima',
 'searchrelated' => 'povezano',
 'searchall' => 'sve',
 'showingresults' => "Dolje {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
 'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Pažnja''': Po pretpostavljenim postavkama pretražuju se samo neki imenski prostori.
-Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sadržaj (uključujući stranice za razgovor, šablone i sl.) ili koristite željeni imenski prostor kao prefiks.",
 'search-nonefound' => 'Nisu pronađeni rezultati koji odgovaraju upitu.',
-'powersearch' => 'Napredna pretraga',
 'powersearch-legend' => 'Napredna pretraga',
 'powersearch-ns' => 'Pretraga u imenskim prostorima:',
 'powersearch-redir' => 'Spisak preusmjerenja',
-'powersearch-field' => 'Traži',
 'powersearch-togglelabel' => 'Označi:',
 'powersearch-toggleall' => 'Sve',
 'powersearch-togglenone' => 'Ništa',
 'search-external' => 'Vanjska pretraga',
 'searchdisabled' => '<p>Izvinjavamo se!  Puno pretraga teksta je privremeno onemogućena.  U međuvremenu, možete koristiti Google za pretragu.  Indeks može biti stariji.',
+'search-error' => 'Dogodila se greška prilikom pretraživanja: $1',
 
 # Preferences page
 'preferences' => 'Postavke',
 'mypreferences' => 'Postavke',
 'prefs-edits' => 'Broj izmjena:',
-'changepassword' => 'Promijeni šifru',
 'prefs-skin' => 'Koža',
 'skin-preview' => 'Pregled',
 'datedefault' => 'Nije bitno',
@@ -1419,13 +1397,11 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'prefs-email' => 'E-mail opcije',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Sačuvaj',
-'resetprefs' => 'Vrati podešavanja',
 'restoreprefs' => 'Vrati sve pretpostavljene postavke',
 'prefs-editing' => 'Veličine tekstualnog polja',
 'rows' => 'Redova',
 'columns' => 'Kolona',
 'searchresultshead' => 'Podešavanja rezultata pretrage',
-'resultsperpage' => 'Pogodaka po stranici:',
 'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
 'stub-threshold-disabled' => 'Isključen/a',
 'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
@@ -1437,7 +1413,6 @@ Pokušajte u Vaš upit uključiti prefiks ''all:'' da bi ste pretražili sav sad
 'localtime' => 'Lokalno vrijeme:',
 'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
 'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
 'servertime' => 'Vrijeme na serveru:',
 'guesstimezone' => 'Popuni iz preglednika',
 'timezoneregion-africa' => 'Afrika',
@@ -1687,13 +1662,14 @@ Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
 'recentchanges-label-minor' => 'Ovo je mala izmjena',
 'recentchanges-label-bot' => 'Ova izmjenu je načinio bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
-'recentchanges-legend-newpage' => '$1 - nova stranica',
-'rcnote' => "Ispod {{PLURAL:$1|je '''$1''' promjena|su '''$1''' zadnje promjene|su '''$1''' zadnjih promjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
+'recentchanges-label-plusminus' => 'Veličina stranice je se promjenila za ovoliko bajtova',
+'recentchanges-legend-heading' => "'''Legenda:'''",
+'recentchanges-legend-newpage' => '(također pogledajte [[Special:NewPages|spisak novih stranica]])',
 'rcnotefrom' => 'Ispod su izmjene od <b>$2</b> (do <b>$1</b> prikazano).',
 'rclistfrom' => 'Prikaži nove izmjene počev od $1',
 'rcshowhideminor' => '$1 male izmjene',
 'rcshowhidebots' => '$1 botove',
-'rcshowhideliu' => '$1 prijavljene korisnike',
+'rcshowhideliu' => '$1 registrovanih korisnika',
 'rcshowhideanons' => '$1 anonimne korisnike',
 'rcshowhidepatr' => '$1 patrolirane izmjene',
 'rcshowhidemine' => '$1 moje izmjene',
@@ -2173,10 +2149,8 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'Samo neograničena zaštićenja',
 'protectedpages-cascade' => 'Samo prenosive zaštite',
-'protectedpagestext' => 'Slijedeće stranice su zaštićene od izmjena i premještanja',
 'protectedpagesempty' => 'Trenutno nijedna stranica nije zaštićena s ovim parametrima.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Članci sa slijedećim naslovima su zaštićeni od kreiranja.',
 'protectedtitlesempty' => 'Nema naslova zaštićenih članaka sa ovim parametrima.',
 'listusers' => 'Spisak korisnika',
 'listusers-editsonly' => 'Pokaži samo korisnike koji su uređivali',
@@ -2228,9 +2202,6 @@ Možete specificirati prikaz izabiranjem specifičnog spiska, korisničkog imena
 'allpagesto' => 'Prikaži stranice koje završavaju na:',
 'allarticles' => 'Svi članci',
 'allinnamespace' => 'Sve stranice (imenski prostor $1)',
-'allnotinnamespace' => 'Sve stranice (van imenskog prostora $1)',
-'allpagesprev' => 'Prethodno',
-'allpagesnext' => 'Slijedeće',
 'allpagessubmit' => 'Idi',
 'allpagesprefix' => 'Prikaži stranice sa prefiksom:',
 'allpagesbadtitle' => 'Dati naziv stranice je nepravilan ili ima međujezički ili interwiki prefiks.
@@ -2569,7 +2540,6 @@ Možda ste unijeli pogrešan link, ili je revizija vraćena ili uklonjena iz arh
 'undeletebtn' => 'Vrati',
 'undeletelink' => 'pogledaj/vrati',
 'undeleteviewlink' => 'pogledaj',
-'undeletereset' => 'Očisti',
 'undeleteinvert' => 'Izmijeni odabir',
 'undeletecomment' => 'Razlog:',
 'undeletedrevisions' => '{{PLURAL:$1|$1 revizija vraćena|$1 revizije vraćene|$1 revizija vraćeno}}',
@@ -2658,13 +2628,11 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
 'block' => 'Blokiraj korisnika',
 'unblock' => 'Odblokiraj korisnika',
 'blockip' => 'Blokiraj korisnika',
-'blockip-title' => 'Blokiranje korisnika',
 'blockip-legend' => 'Blokiranje korisnika',
 'blockiptext' => 'Upotrebite donji upitnik da biste uklonili prava pisanja sa određene IP adrese ili korisničkog imena.  Ovo bi trebalo da bude urađeno samo da bi se spriječio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]]. Unesite konkretan razlog ispod (na primjer, navodeći koje stranice su vandalizovane).',
 'ipadressorusername' => 'IP adresa ili korisničko ime:',
 'ipbexpiry' => 'Ističe:',
 'ipbreason' => 'Razlog:',
-'ipbreasonotherlist' => 'Ostali razlozi',
 'ipbreason-dropdown' => '*Najčešći razlozi blokiranja
 **Netačne informacije
 **Uklanjanje sadržaja stranica
@@ -2680,8 +2648,6 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
 'ipbsubmit' => 'Blokirajte ovog korisnika',
 'ipbother' => 'Ostali period:',
 'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite',
-'ipbotheroption' => 'ostalo',
-'ipbotherreason' => 'Ostali/dodatni razlozi:',
 'ipbhidename' => 'Sakrij korisničko ime iz uređivanja i spiskova',
 'ipbwatchuser' => 'Prati korisničku stranicu i stranicu za razgovor ovog korisnika',
 'ipb-disableusertalk' => 'Onemogući ovog korisnika da uređuje svoju vlastitu stranicu za razgovor dok je blokiran',
@@ -2773,7 +2739,6 @@ Međutim, možda je blokirana kao dio bloka $2, koji se ne može deblokirati.',
 'sorbsreason' => 'Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL koji koristi {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL korišten od {{SITENAME}}.
 Ne možete napraviti račun',
-'cant-block-while-blocked' => 'Ne možete blokirati druge korisnike dok ste blokirani.',
 'cant-see-hidden-user' => 'Korisnik kojeg pokušavate blokirati je već blokiran i sakriven. Pošto nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.',
 'ipbblocked' => 'Ne možete blokirati ili deblokirati druge korisnike, jer ste i sami blokirani',
 'ipbnounblockself' => 'Nije Vam dopušteno da deblokirate samog sebe',
@@ -2838,7 +2803,6 @@ drastična i neočekivana promjena za korisnike; molimo budite sigurni da ste sh
 U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.",
 'movearticle' => 'Premjestite stranicu',
 'moveuserpage-warning' => "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
-'movenologin' => 'Niste prijavljeni',
 'movenologintext' => 'Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.',
 'movenotallowed' => 'Nemate dopuštenje za premještanje stranica.',
 'movenotallowedfile' => 'Nemate dopuštenja da premještanje datoteke.',
@@ -2853,9 +2817,6 @@ U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.
 'movepage-moved-noredirect' => 'Pravljenje preusmjerenja je onemogućeno.',
 'articleexists' => 'Stranica pod tim imenom već postoji, ili je ime koje ste izabrali neispravno.  Molimo Vas da izaberete drugo ime.',
 'cantmove-titleprotected' => 'Ne možete premjestiti stranicu na ovu lokaciju, jer je novi naslov zaštićen od pravljenja',
-'talkexists' => 'Sama stranica je uspješno premještena, ali
-stranica za razgovor nije mogla biti premještena jer takva već postoji na novom naslovu.  Molimo Vas da ih spojite ručno.',
-'movedto' => 'premještena na',
 'movetalk' => 'Premjestite "stranicu za razgovor" takođe, ako je moguće.',
 'move-subpages' => 'Premjesti sve podstranice (do $1)',
 'move-talk-subpages' => 'Premjesti podstranice stranica za razgovor (do $1)',
@@ -3225,7 +3186,7 @@ $1',
 'svg-long-desc' => 'SVG fajl, dozvoljeno $1 × $2 piksela, veličina fajla: $3',
 'svg-long-desc-animated' => 'Animirana SVG datoteka, nominalno: $1 × $2 piksela, veličina datoteke: $3',
 'svg-long-error' => 'Nevaljana SVG datoteka: $1',
-'show-big-image' => 'Vidi sliku u punoj veličini (rezoluciji)',
+'show-big-image' => 'Izvorna datoteka',
 'show-big-image-preview' => 'Veličina ovog prikaza: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Druga rezolucija|Ostale rezolucije}}: $1.',
 'show-big-image-size' => '$1 × $2 piksela',
@@ -3694,15 +3655,10 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Korisnički određen prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Izmjeni ovu datoteku koristeći vanjski program',
-'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
 'namespacesall' => 'sve',
 'monthsall' => 'sve',
-'limitall' => 'sve',
 
 # Email address confirmation
 'confirmemail' => 'Potvrdite adresu e-pošte',
@@ -3721,7 +3677,6 @@ Povratna pošta: $1',
 'confirmemail_needlogin' => 'Morate $1 da bi ste potvrdili Vašu e-mail adresu.',
 'confirmemail_success' => 'Adresa vaše e-pošte je potvrđena. Možete sad da se prijavite i uživate u viki.',
 'confirmemail_loggedin' => 'Adresa Vaše e-pošte je potvrđena.',
-'confirmemail_error' => 'Nešto je pošlo po zlu prilikom sačuvavanja vaše potvrde.',
 'confirmemail_subject' => 'Vikiriječnik adresa e-pošte za potvrđivanje',
 'confirmemail_body' => 'Neko, vjerovatno Vi, je sa IP adrese $1 registrovao nalog "$2" sa ovom adresom e-pošte na {{SITENAME}}.
 
@@ -3957,6 +3912,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 'redirect-submit' => 'Idi',
 'redirect-value' => 'Vrijednost:',
 'redirect-user' => 'Korisnički ID',
+'redirect-page' => 'ID stranice',
 'redirect-revision' => 'Verzija stranice',
 'redirect-file' => 'Naziv datoteke',
 'redirect-not-exists' => 'Vrijednost nije pronađena',
@@ -3974,6 +3930,7 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 
 # Special:SpecialPages
 'specialpages' => 'Posebne stranice',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Normalne posebne stranice.
 * <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
 'specialpages-group-maintenance' => 'Izvještaji za održavanje',
@@ -4022,7 +3979,6 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 
 # Special:ComparePages
 'comparepages' => 'Usporedi stranice',
-'compare-selector' => 'Usporedi ispravljanje stranica',
 'compare-page1' => 'Stranica 1',
 'compare-page2' => 'Stranica 2',
 'compare-rev1' => 'Ispravljanje 1',
index a8d0f1d..9a51d56 100644 (file)
@@ -74,7 +74,6 @@ $messages = array(
 'qbedit' => 'Padécéŋ',
 'qbpageoptions' => 'Édé leppa',
 'qbmyoptions' => "Leppana iya'",
-'qbspecialpages' => 'Leppa spésiala',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -127,19 +126,17 @@ $messages = array(
 'jumpto' => 'Luppe lao:',
 'jumptosearch' => 'sappa',
 
-# 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).
+# 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).
 'aboutsite' => 'Tentang {{SITENAME}}',
 'currentevents' => 'Accanjingeŋ kokkoro',
 'currentevents-url' => 'Project:Accanjingeŋ kokkoro',
 'disclaimers' => 'Diseklaima',
 'edithelp' => 'Paŋinriŋ mapadécéŋ',
-'edithelppage' => 'Help:Mapadécéŋ',
 'helppage' => 'Help:Lise',
 'mainpage' => 'Leppa Indoë',
 'mainpage-description' => 'Leppa Indoë',
 'portal' => 'Portal komunitas',
 
-'newmessageslink' => 'pappaseŋ baru',
 'editsection' => 'padécéŋ',
 'editold' => 'padécéŋ',
 'viewsourceold' => 'ita sumber',
@@ -241,16 +238,12 @@ $messages = array(
 'editundo' => 'undo',
 
 # Search results
-'searchsubtitle' => "Masappa iko '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Massappa iko '''$1'''",
 'viewprevnext' => 'Ita ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Lise',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ada|$2 ada}})',
 'search-redirect' => '(redirect $1)',
 
 # Preferences page
 'mypreferences' => 'Bérékkeŋeŋna iyya',
-'prefsnologin' => "Déppa ma'log attama'",
 'prefs-watchlist' => 'Watchlist',
 'prefs-misc' => 'Misc',
 'saveprefs' => 'Taro',
@@ -343,8 +336,6 @@ $messages = array(
 'allpagesfrom' => 'Mappaitang halamang-halamang rimulai:',
 'allarticles' => 'Sininna leppa',
 'allinnamespace' => 'Maneŋ leppa (namespace $1)',
-'allnotinnamespace' => 'Maneŋ leppa (tania rilaleŋ namespace $1)',
-'allpagesnext' => 'Selanjutnya',
 'allpagessubmit' => 'Lanre',
 'allpagesprefix' => 'Mappaitang halamang-halamang éngkalinga awang:',
 
@@ -457,8 +448,7 @@ Eloko peddéï supaya weddiŋi mapalecé?',
 
 # Special:SpecialPages
 'specialpages' => 'Leppa spésiala',
-'specialpages-note' => '----
-* Leppa spésiala normal
+'specialpages-note' => '* Leppa spésiala normal
 * <strong class="mw-specialpagerestricted">Leppa spésiala terbatas</strong>',
 'specialpages-group-other' => 'Leppa spésiala laiŋë',
 'specialpages-group-login' => 'Log attama / mendaftar',
index 88bc5d9..536d199 100644 (file)
@@ -1,13 +1,18 @@
 <?php
-/** Buryat (Russia) (буряад)
+/** буряад (буряад)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
  *
  * @ingroup Language
  * @file
- * @comment falls back to Russian
  *
+ * @author Amire80
+ * @author Bjargal
+ * @author Korol Bumi
+ * @author Soul Train
+ * @author Губин Михаил
+ * @author ОйЛ
  */
 
 $fallback = 'ru';
@@ -70,3 +75,271 @@ $specialPageAliases = array(
        'Userlogout'                => array( 'Гараха' ),
 );
 
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Холбооһо доогуурнь зураха:',
+'tog-justify' => 'Мүр тэгшэлхэ',
+'tog-watchcreations' => 'Минии үүсхэһэн хуудаһа болон ашаалһан файлыем хинаха жагсаалтада оруула',
+'tog-watchdefault' => 'Минии заһаһан хуудаһа болон файлыем хинаха жагсаалтада оруула',
+'tog-watchmoves' => 'Минии зөөһэн хуудаһа болон файлыем хинаха жагсаалтада оруула',
+'tog-watchdeletion' => 'Минии усадхаһан хуудаһа болон файлыем хинаха жагсаалтада оруула',
+'tog-minordefault' => 'Бүхы заһабариие бага зэргын гэжэ үгэгдэмэлөөр тэмдэглэ',
+'tog-previewontop' => 'Уридшалан харахые заһабарилха талбарай урда үзүүлэ',
+'tog-previewonfirst' => 'Уридшалан харахые эхилжэ заһаха үедэ үзүүлэ',
+
+# 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' => '1 һара',
+'feb' => '2 һара',
+'mar' => '3 һара',
+'apr' => '4 һара',
+'may' => '5 һара',
+'jun' => '6 һара',
+'jul' => '7 һара',
+'aug' => '8 һара',
+'sep' => '9 һара',
+'oct' => '10 һара',
+'nov' => '11 һара',
+'dec' => '12 һара',
+
+# Categories related messages
+'category_header' => 'Категори "$1" үгүүллүүд',
+
+'cancel' => 'Болихо',
+'mytalk' => 'Минии хэлэлсэл',
+'navigation' => 'Залуур',
+
+# Vector skin
+'vector-action-addsection' => 'Шэнэ хэсэг',
+'vector-action-delete' => 'Усадхаха',
+'vector-view-create' => 'Үүсхэхэ',
+'vector-view-edit' => 'Заһаха',
+'vector-view-history' => 'Түүхэ',
+'vector-view-view' => 'Уншаха',
+'actions' => 'γйлэ',
+
+'navigation-heading' => 'Залуур',
+'errorpagetitle' => 'Алдуу',
+'help' => 'Туһаламжа',
+'search' => 'Бэдэрхэ',
+'searchbutton' => 'Бэдэрхэ',
+'history_short' => 'Түүхэ',
+'edit' => 'Заһаха',
+'create' => 'Үүсхэхэ',
+'protect' => 'Түһэл',
+'protect_change' => 'Хубилалга',
+'newpage' => 'Шэнэ хуудаһан',
+'talkpage' => 'Тус хуудаһа хэлэлсэхэ',
+'talkpagelinktext' => 'Хэлэлсэхэ',
+'specialpage' => 'Тусхай хуудаһан',
+'personaltools' => 'Хубиин хэрэгсэлнүүд',
+'postcomment' => 'Шэнэ бүлэг',
+'talk' => 'Хэлэлсэхэ',
+'views' => 'Үзэһэн',
+'toolbox' => 'Багажын хайрсаг',
+'projectpage' => 'Түһэлэй хуудаһан',
+'otherlanguages' => 'Бусад хэлээр',
+'jumptosearch' => 'бэдэрхэ',
+'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).
+'aboutsite' => '{{SITENAME}} тухай',
+'aboutpage' => 'Project:Түһэл тухай',
+'currentevents' => 'Мүнөө боложо байгаа үйлэ ябадал',
+'currentevents-url' => 'Project:Һонин мэдээн',
+'helppage' => 'Help:Агуулга',
+'mainpage' => 'Нюур хуудаһан',
+'mainpage-description' => 'Нюур хуудаһан',
+'portal' => 'Хурал',
+'portal-url' => 'Project:Хурал',
+
+'ok' => 'За',
+'editsection' => 'заһаха',
+'editold' => 'заһаха',
+'viewsourcelink' => 'эхэ үүсэбэрииень үзэхэ',
+'editsectionhint' => '$1 гэһэн бүлэг заһаха',
+'toc' => 'Агуулга',
+'red-link-title' => '$1 (хуудаһан үгы байна)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Хуудаһан',
+'nstab-special' => 'Тусхай хуудаһан',
+'nstab-project' => 'Түһэлэй хуудаһан',
+'nstab-image' => 'Файл',
+'nstab-mediawiki' => 'Бэшэг',
+'nstab-template' => 'Загвар',
+'nstab-category' => 'Ангилал',
+
+# Login and logout pages
+'login' => 'Орохо',
+'nav-login-createaccount' => 'Нэбтэржэ орохо / дансатай болохо',
+'userlogin' => 'Нэбтэржэ орохо / дансатай болохо',
+'logout' => 'Гараха',
+'userlogout' => 'Гараха',
+'createaccount' => 'Данса үүсхэхэ',
+'gotaccountlink' => 'Нэбтэржэ орохо',
+'loginlanguagelabel' => 'Хэлэн: $1',
+
+# Edit pages
+'savearticle' => 'Хуудаһа хадагалха',
+'showpreview' => 'Уридшалан үзүүлхэ',
+'showdiff' => 'Хубилалта харуулха',
+'newarticle' => '(Шэнэ)',
+'template-protected' => '(хамгаалалтатай)',
+'permissionserrorstext-withaction' => 'Та доро тодорхойлһон $1 ушар шалтагаанһаа боложо, $2 эрхэгүйт.',
+
+# Revision deletion
+'rev-delundel' => 'харуулха/нюуха',
+'revdel-restore' => 'харагдахыень ондоо болгохо',
+
+# Diffs
+'editundo' => 'болюулха',
+
+# Search results
+'searchmenu-new' => "'''Байгуулха үгүүлэл \"[[:\$1]]\"!'''",
+'searchprofile-articles' => 'Үгүүллүүд',
+'searchprofile-images-tooltip' => 'Файл бэдэрхэ',
+'search-result-size' => '$1 ({{PLURAL:$2|1 word|$2 words}})',
+
+# Preferences page
+'mypreferences' => 'Минии тааруулга',
+'prefs-datetime' => 'Огноо болон саг',
+'youremail' => 'Сахим шуудан:',
+'yourrealname' => 'Бодото нэрэ:',
+'yourlanguage' => 'Хэлэн:',
+'yourgender' => 'Хүйһэн:',
+'gender-male' => 'Эрэ',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'Хубилалга энэ үгүүлэл',
+
+# Recent changes
+'recentchanges' => 'Һүүлшын хубилалта',
+'diff' => 'хубилалга',
+'hist' => 'Түүхэ',
+'hide' => 'Нюуха',
+
+# Recent changes linked
+'recentchangeslinked-toolbox' => 'Холбогдохо хубилалта',
+
+# Upload
+'upload' => 'Файл ашаалха',
+
+'license-header' => 'Лицензи',
+
+# File description page
+'file-anchor-link' => 'Файл',
+'filehist' => 'Файлын түүхэ',
+'filehist-datetime' => 'Огноо/Саг',
+'filehist-user' => 'Хэрэглэгшэ',
+
+# Random page
+'randompage' => 'Санамсаргүй хуудас',
+
+# Statistics
+'statistics' => 'Тоо бүридхэл',
+
+# Miscellaneous special pages
+'newpages' => 'Шэнэ үгүүллүүд',
+'ancientpages' => 'Хуушарһан хуудаһан',
+'move' => 'Нэрэмжэ',
+
+# Special:Log
+'log' => 'Логууд',
+
+# Special:AllPages
+'allpages' => 'Соохи бүхы хуудаһан',
+'allarticles' => 'Үгүүллүүд',
+
+# Special:Categories
+'categories' => 'Категори',
+
+# Watchlist
+'mywatchlist' => 'Ажаглаха зүйл',
+'watch' => 'Хаража байха',
+
+# Undelete
+'undeletelink' => 'хараха/һэргээхэ',
+
+# Contributions
+'mycontris' => 'Минии оруулһан зүйл',
+
+'sp-contributions-talk' => 'Хэлэлсэл',
+
+# What links here
+'whatlinkshere-page' => 'Хуудаһан:',
+
+# Block/unblock
+'block' => 'Блок',
+'change-blocklink' => 'багса хубилгаха',
+'contribslink' => 'γйлэ',
+
+# Move page
+'revertmove' => 'һэргээхэ',
+
+# Namespace 8 related
+'allmessages' => 'Бүхы зурбас',
+'allmessagesname' => 'Нэрэ',
+'allmessages-language' => 'Хэлэн:',
+
+# Thumbnails
+'thumbnail-more' => 'Томоруулха',
+
+# Tooltip help for the actions
+'tooltip-pt-logout' => 'Гараха',
+'tooltip-ca-talk' => 'Үгүүлэлынь хэлэлсэл',
+'tooltip-ca-addsection' => 'Шэнэ хэсэг',
+'tooltip-search' => 'Бэдэрхэ {{SITENAME}}',
+'tooltip-search-fulltext' => 'Бэдэрхэ үгүүллүүд',
+'tooltip-p-logo' => 'Нюур хуудаһан',
+'tooltip-n-mainpage' => 'Нюур хуудаһа руу шэлжэхэ',
+'tooltip-n-mainpage-description' => 'Нюур хуудаһа руу шэлжэхэ',
+'tooltip-n-recentchanges' => 'Энэ Википеэдийн сайтдахи хубилалтанууд',
+'tooltip-feed-atom' => 'Атом',
+'tooltip-t-upload' => 'Файл ашаалха',
+'tooltip-t-specialpages' => 'Бүхы тусхай хуудаһанай жагсаалта',
+
+# Exif tags
+'exif-languagecode' => 'Хэлэн',
+
+# Special:SpecialPages
+'specialpages' => 'Тусхай хуудаһан',
+
+);
index 2314ed0..fdf3ec0 100644 (file)
@@ -27,6 +27,7 @@
  * @author Martorell
  * @author McDutchie
  * @author Nemo bis
+ * @author Papapep
  * @author Pasqual (ca)
  * @author Paucabot
  * @author PerroVerd
@@ -79,7 +80,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Títol_incorrecte' ),
        'Blankpage'                 => array( 'Pàgina_en_blanc', 'Blanc' ),
        'Block'                     => array( 'Bloca' ),
-       'Blockme'                   => array( 'Bloca\'m' ),
        'Booksources'               => array( 'Fonts_bibliogràfiques' ),
        'BrokenRedirects'           => array( 'Redireccions_rompudes' ),
        'ChangeEmail'               => array( 'Canvia_adreça_electrònica' ),
@@ -89,9 +89,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crea_compte' ),
        'Deadendpages'              => array( 'Atzucacs' ),
        'DeletedContributions'      => array( 'Contribucions_esborrades' ),
-       'Disambiguations'           => array( 'Desambiguacions' ),
        'DoubleRedirects'           => array( 'Redireccions_dobles' ),
        'Emailuser'                 => array( 'Envia_missatge' ),
+       'ExpandTemplates'           => array( 'Expansió_de_plantilles' ),
        'Export'                    => array( 'Exporta' ),
        'Fewestrevisions'           => array( 'Pàgines_menys_editades' ),
        'FileDuplicateSearch'       => array( 'Cerca_fitxers_duplicats' ),
@@ -225,7 +225,6 @@ $messages = array(
 'tog-minordefault' => 'Marca totes les contribucions com a edicions menors per defecte',
 'tog-previewontop' => "Mostra una previsualització abans del quadre d'edició",
 'tog-previewonfirst' => 'Mostra una previsualització en la primera modificació',
-'tog-nocache' => 'Inhabilita la memòria cau de les pàgines',
 'tog-enotifwatchlistpages' => "Envia'm un correu electrònic quan es modifiqui una pàgina de la meva llista de seguiment",
 'tog-enotifusertalkpages' => "Envia'm un correu electrònic quan es modifiqui la meva pàgina de discussió",
 'tog-enotifminoredits' => "Notifica'm per correu també en casos d'edicions menors",
@@ -362,7 +361,6 @@ $messages = array(
 'qbedit' => 'Modifica',
 'qbpageoptions' => 'Opcions de pàgina',
 'qbmyoptions' => 'Pàgines pròpies',
-'qbspecialpages' => 'Pàgines especials',
 'faq' => 'PMF',
 'faqpage' => 'Project:PMF',
 
@@ -435,7 +433,7 @@ $messages = array(
 'redirectedfrom' => "(S'ha redirigit des de: $1)",
 'redirectpagesub' => 'Pàgina de redirecció',
 'lastmodifiedat' => 'Darrera modificació de la pàgina: $1 a les $2.',
-'viewcount' => 'Aquesta pàgina ha estat visitada {{PLURAL:$1|una vegada|$1 vegades}}.',
+'viewcount' => "S'ha visitat aquesta pàgina {{PLURAL:$1|una vegada|$1 vegades}}.",
 'protectedpage' => 'Pàgina protegida',
 'jumpto' => 'Dreceres ràpides:',
 'jumptonavigation' => 'navegació',
@@ -567,8 +565,8 @@ Aviseu-ho llavors a un [[Special:ListUsers/sysop|administrador]], deixant-li cla
 'unexpected' => "S'ha trobat un valor imprevist: «$1»=«$2».",
 'formerror' => "Error: no s'ha pogut enviar les dades del formulari",
 'badarticleerror' => 'Aquesta operació no es pot dur a terme en aquesta pàgina',
-'cannotdelete' => "No s'ha pogut esborrar la pàgina o fitxer «$1».
-Potser ja ha estat esborrat per algú altre.",
+'cannotdelete' => "No s'ha pogut suprimir la pàgina o fitxer «$1».
+Potser ja l'ha suprimit algú altre.",
 'cannotdelete-title' => 'No es pot suprimir la pàgina " $1 "',
 'delete-hook-aborted' => 'Un «hook» ha interromput la supressió.
 No ha donat cap explicació.',
@@ -578,9 +576,6 @@ No ha donat cap explicació.',
 'perfcached' => "Les dades següents es troben a la memòria cau i podrien no estar al dia. Hi ha un màxim {{PLURAL:$1|d'un resultat|de $1 resultats}} disponibles a la memòria cau.",
 'perfcachedts' => "Les dades següents es troben a la memòria cau i es van actualitzar per darrera vegada el $1. Hi ha un màxim {{PLURAL:$4|d'un resultat|de $4 resultats}} disponibles a la memòria cau.",
 'querypage-no-updates' => "S'ha inhabilitat l'actualització d'aquesta pàgina. Les dades que hi contenen podrien no estar al dia.",
-'wrong_wfQuery_params' => 'Paràmetres incorrectes per a wfQuery()<br />
-Funció: $1<br />
-Consulta: $2',
 'viewsource' => 'Mostra el codi',
 'viewsource-title' => 'Mostra la font per a $1',
 'actionthrottled' => 'Acció limitada',
@@ -704,7 +699,7 @@ Reviseu-ne l'ortografia (recordeu que es distingeixen les majúscules i minúscu
 'passwordtooshort' => "La contrasenya ha de tenir un mínim {{PLURAL:$1|d'un caràcter|de $1 caràcters}}.",
 'password-name-match' => "La contrasenya ha de ser diferent al vostre nom d'usuari.",
 'password-login-forbidden' => "No és permès d'utilitzar aquest nom d'usuari i contrasenya.",
-'mailmypassword' => "Envia'm una nova contrasenya per correu electrònic",
+'mailmypassword' => 'Restableix la contrasenya',
 'passwordremindertitle' => 'Nova contrasenya temporal per al projecte {{SITENAME}}',
 'passwordremindertext' => "Algú (vós mateix segurament, des de l'adreça l'IP $1) ha soŀlicitat que us enviéssim una nova contrasenya per a iniciar la sessió al projecte {{SITENAME}} ($4).
 La nova contrasenya temporal per a l'usuari «$2» és ara «$3». Si aquesta fou la vostra intenció, ara hauríeu d'iniciar la sessió i canviar-la. Tingueu present que és temporal i caducarà d'aquí {{PLURAL:$5|un dia|$5 dies}}.
@@ -716,7 +711,7 @@ la vostra antiga contrasenya.",
 'noemailcreate' => "Has d'indicar una adreça de correu electrònic vàlida",
 'passwordsent' => "S'ha enviat una nova contrasenya a l'adreça electrònica registrada per «$1».
 Inicieu una sessió després que la rebeu.",
-'blocked-mailpassword' => 'La vostra adreça IP ha estat blocada. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.',
+'blocked-mailpassword' => "S'ha blocat la vostra adreça IP. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.",
 'eauthentsent' => "S'ha enviat un correu electrònic a la direcció especificada. Abans no s'enviï cap altre correu electrònic a aquesta adreça, cal verificar que és realment vostra. Per tant, cal que seguiu les instruccions presents en el correu electrònic que se us ha enviat.",
 'throttled-mailpassword' => "Ja se us ha enviat un correu electrònic de reinicialització de contrasenya en {{PLURAL:$1|l'última hora|les últimes $1 hores}}.
 Per a prevenir abusos, només s'envia un correu electrònic de reinicialització de contrasenya cada {{PLURAL:$1|hora|$1 hores}}.",
@@ -737,7 +732,7 @@ Introduïu una adreça amb un format adequat o bé buideu el camp.",
 'createaccount-text' => "Algú ha creat un compte d'usuari anomenat $2 al projecte {{SITENAME}}
 ($4) amb la vostra adreça de correu electrònic. La contrasenya per a l'usuari «$2» és «$3». Hauríeu d'accedir al compte i canviar-vos aquesta contrasenya quan abans millor.
 
-Si no hi teniu cap relació i aquest compte ha estat creat per error, simplement ignoreu el missatge.",
+Si no hi teniu cap relació i aquest compte s'ha creat per error, simplement ignoreu el missatge.",
 'usernamehasherror' => "El nom d'usuari no pot contenir caràcters hash",
 'login-throttled' => "Heu realitzat massa intents d'accés a la sessió.
 Espereu $1 abans de tornar-ho a provar.",
@@ -753,7 +748,7 @@ Si decidiu proporcionar-lo, s'utilitzarà per a reconèixer a l'usuari el seu tr
 'user-mail-no-body' => 'Vas intentar enviar un correu electrònic amb un cos buit o excessivament curt.',
 
 # Change password dialog
-'resetpass' => 'Canvia la contrasenya',
+'changepassword' => 'Canvia la contrasenya',
 'resetpass_announce' => 'Heu iniciat la sessió amb un codi temporal enviat per correu electrònic. Per a finalitzar-la, heu de definir una nova contrasenya ací:',
 'resetpass_text' => '<!-- Afegiu-hi un text -->',
 'resetpass_header' => 'Canvia la contrasenya del compte',
@@ -774,7 +769,7 @@ Deveu haver canviat la vostra contrasenya o demanat una nova contrasenya tempora
 # Special:PasswordReset
 'passwordreset' => 'Restablir contrasenya',
 'passwordreset-text-one' => 'Cal completar aquest formulari per reiniciar la contrasenya',
-'passwordreset-text-many' => '{{PLURAL:$1|Ompliu un dels camps per a reiniciar la vostra contrasenya.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ompliu un dels camps per a rebre una contrasenya temporal al vostre correu electrònic.}}',
 'passwordreset-legend' => 'Restablir contrasenya',
 'passwordreset-disabled' => "S'ha desactivat el restabliment de contranyes en aquest wiki.",
 'passwordreset-emaildisabled' => 'Les opcions de correu electrònic no estan habilitades en aquest wiki.',
@@ -897,8 +892,8 @@ El número d'identificació de la vostra adreça IP és $3, i l'ID del bloqueig
 'whitelistedittext' => 'Heu de $1 per modificar pàgines.',
 'confirmedittext' => "Heu de confirmar la vostra adreça electrònica abans de poder modificar les pàgines. Definiu i valideu la vostra adreça electrònica a través de les vostres [[Special:Preferences|preferències d'usuari]].",
 'nosuchsectiontitle' => 'No es pot trobar la secció',
-'nosuchsectiontext' => 'Heu intentat editar una secció que no existeix.
-Potser ha estat moguda o eliminada mentre estàveu veient la pàgina.',
+'nosuchsectiontext' => "Heu intentat editar una secció que no existeix.
+Potser s'ha mogut o eliminat mentre estàveu veient la pàgina.",
 'loginreqtitle' => 'Cal que inicieu una sessió',
 'loginreqlink' => 'inicia una sessió',
 'loginreqpagetext' => "Cal que seguiu l'enllaç «$1» per a visualitzar altres pàgines.",
@@ -918,10 +913,10 @@ Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines,
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear-la ara]</span>.',
 'noarticletext-nopermission' => 'Actualment no hi ha text en aquesta pàgina.
 Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines o bé <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres relacionats]</span>, però no teniu permisos per crear la pàgina.',
-'missing-revision' => 'La revisió # $1  de la pàgina anomenada "{{PAGENAME}}" no existeix.
+'missing-revision' => 'La revisió núm. $1 de la pàgina anomenada «{{PAGENAME}}» no existeix.
 
-Això és normalment provocat per després d\'un enllaç d\'història antiquat a una pàgina que s\'ha suprimit.
-Detalls es poden trobar en el [{{fullurl: {{# especial: registre}} / delete|page = {{FULLPAGENAMEE}}}} registre de supressió].',
+Normalment això ocorre quan seguiu un enllaç d’historial desactualitzat que apunta a una pàgina que s’ha suprimit.
+Podeu trobar detalls en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].',
 'userpage-userdoesnotexist' => "Atenció: El compte d'usuari «<nowiki>$1</nowiki>» no està registrat. En principi no hauríeu de crear ni editar aquesta pàgina.",
 'userpage-userdoesnotexist-view' => 'El compte d\'usuari "$1" no està registrat.',
 'blocked-notice-logextract' => "En aquests moments aquest compte d'usuari es troba blocat.
@@ -937,9 +932,9 @@ Per més detalls, la darrera entrada del registre es mostra a continuació:",
 '''Encara no s'ha desat!'''",
 'userjspreview' => "'''Recordeu que només estau provant/previsualitzant el vostre JavaScript, encara no ho heu desat!'''",
 'sitecsspreview' => "'''Adoneu-vos que esteu veient una vista prèvia d'aquest full d'estil CSS.'''
-'''No n'hi ha estat encara gravada!'''",
-'sitejspreview' => "'''Adoneu-vos que esteu veient una vista prèvia d'aquest codi Javascript.'''
-'''No n'hi ha estat encara gravat!'''",
+'''Encara no s'ha desat!'''",
+'sitejspreview' => "'''Tingueu present que esteu previsualitzant aquest codi Javascript.'''
+'''Encara no s'ha desat!'''",
 'userinvalidcssjstitle' => "'''Atenció:''' No existeix l'aparença «$1». Recordeu que les subpàgines personalitzades amb extensions .css i .js utilitzen el títol en minúscules, per exemple, {{ns:user}}:NOM/vector.css no és el mateix que {{ns:user}}:NOM/Vector.css.",
 'updated' => '(Actualitzat)',
 'note' => "'''Nota:'''",
@@ -1008,11 +1003,11 @@ Podeu modificar les planes ja existents o bé [[Special:UserLogin|entrar en un c
 'permissionserrors' => 'Error de permisos',
 'permissionserrorstext' => 'No teniu permisos per a fer-ho, {{PLURAL:$1|pel següent motiu|pels següents motius}}:',
 'permissionserrorstext-withaction' => 'No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:',
-'recreate-moveddeleted-warn' => "'''Avís: Esteu creant una pàgina que ha estat prèviament esborrada.'''
+'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que s'ha suprimit prèviament.'''
 
 Hauríeu de considerar si és realment necessari continuar editant aquesta pàgina.
-A continuació s'ofereix el registre d'esborraments i de reanomenaments de la pàgina:",
-'moveddeleted-notice' => "Aquesta pàgina ha estat esborrada.
+A continuació s'ofereix el registre de supressions i de reanomenaments de la pàgina:",
+'moveddeleted-notice' => "S'ha suprimit aquesta pàgina.
 A continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.",
 'log-fulllog' => 'Veure tot el registre',
 'edit-hook-aborted' => "Modificació avortada pel hook.
@@ -1020,8 +1015,8 @@ No s'ha donat cap explicació.",
 'edit-gone-missing' => "No s'ha pogut actualitzar la pàgina.
 Sembla haver estat esborrada.",
 'edit-conflict' => "Conflicte d'edició.",
-'edit-no-change' => 'La vostra modificació ha estat ignorada perquè no feia cap canvi al text.',
-'postedit-confirmation' => 'La modificació ha estat desada.',
+'edit-no-change' => "S'ha ignorat la vostra modificació perquè no feia cap canvi al text.",
+'postedit-confirmation' => "S'ha desat la modificació.",
 'edit-already-exists' => "No s'ha pogut crear una pàgina.
 Ja existeix.",
 'defaultmessagetext' => 'Missatge per defecte',
@@ -1062,7 +1057,7 @@ Se n'han omès els arguments.",
 # "Undo" feature
 'undo-success' => "Pot desfer-se la modificació. Si us plau, reviseu la comparació de sota per a assegurar-vos que és el que voleu fer; llavors deseu els canvis per a finalitzar la desfeta de l'edició.",
 'undo-failure' => 'No pot desfer-se la modificació perquè hi ha edicions entre mig que hi entren en conflicte.',
-'undo-norev' => "No s'ha pogut desfer l'edició perquè no existeix o ha estat esborrada.",
+'undo-norev' => "No s'ha pogut desfer l'edició perquè no existeix o s'ha suprimit.",
 'undo-summary' => 'Es desfà la revisió $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|Discussió]])',
 'undo-summary-username-hidden' => "Desfés la revisió $1 d'un usuari ocult",
 
@@ -1070,6 +1065,9 @@ Se n'han omès els arguments.",
 'cantcreateaccounttitle' => 'No es pot crear el compte',
 'cantcreateaccount-text' => "[[User:$3|$3]] ha bloquejat la creació de comptes des d'aquesta adreça IP ('''$1''').
 
+El motiu donat per $3 és ''$2''",
+'cantcreateaccount-range-text' => "La creació de comptes des de les adreces IP en el rang '''$1''', que inclou la vostra adreça IP ('''$4'''), ha esta blocada per [[User:$3|$3]].
+
 El motiu donat per $3 és ''$2''",
 
 # History pages
@@ -1100,50 +1098,46 @@ El motiu donat per $3 és ''$2''",
 'history-feed-title' => 'Historial de revisió',
 'history-feed-description' => 'Historial de revisió per a aquesta pàgina del wiki',
 'history-feed-item-nocomment' => '$1 a $2',
-'history-feed-empty' => 'La pàgina demanada no existeix.
-Potser ha estat esborrada o reanomenada.
-Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevants.',
+'history-feed-empty' => "La pàgina demanada no existeix.
+Potser s'ha suprimit o reanomenat.
+Intenteu [[Special:Search|cercar al mateix wiki]] per a noves pàgines rellevants.",
 
 # Revision deletion
 'rev-deleted-comment' => "(resum d'edició eliminat)",
 'rev-deleted-user' => "(s'ha suprimit el nom d'usuari)",
 'rev-deleted-event' => "(s'ha suprimit el registre d'accions)",
 'rev-deleted-user-contribs' => "[nom d'usuari o adreça IP esborrada - modificació ocultada de les contribucions]",
-'rev-deleted-text-permission' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-deleted-text-unhide' => "La revisió d'aquesta pàgina ha estat '''eliminada'''.
+'rev-deleted-text-permission' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
+'rev-deleted-text-unhide' => "S'ha '''suprimit''' la revisió d'aquesta pàgina.
 Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
 Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
-'rev-suppressed-text-unhide' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+'rev-suppressed-text-unhide' => "S'ha '''suprimit''' aquesta versió de la pàgina.
 Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].
 Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
-'rev-deleted-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
+'rev-deleted-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
 Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-suppressed-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè una de les versions ha estat '''esborrada'''.
+'rev-suppressed-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
+'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè s'ha '''suprimit''' una de les versions.
 Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè una de les revisions ha estat '''esborrada'''.",
-'rev-deleted-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''eliminada'''.
-Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
+'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè s'ha '''suprimit''' una de les revisions.",
+'rev-deleted-unhide-diff' => "S'ha '''eliminat''' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].
 Encara podeu [$1 veure aquesta comparativa] si així ho desitgeu.",
-'rev-suppressed-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
+'rev-suppressed-unhide-diff' => "S¡ha '''suprimit''' una de les revisions d'aquesta comparativa.
 Podeu veure'n més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].
 Podeu seguir [$1 veient aquesta comparativa] si així ho desitgeu.",
-'rev-deleted-diff-view' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
+'rev-deleted-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
 Podeu veure aquesta comparativa; poden haver-hi més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborraments].",
-'rev-suppressed-diff-view' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
-Podeu veure aquesta comparativa; pot haver-hi més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
+'rev-suppressed-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
 'rev-delundel' => 'mostra/amaga',
 'rev-showdeleted' => 'mostra',
 'revisiondelete' => 'Esborrar/restaurar revisions',
 'revdelete-nooldid-title' => 'La revisió objectiu no és vàlida',
 'revdelete-nooldid-text' => "No heu especificat unes revisions objectius per a realitzar aquesta
 funció, la revisió especificada no existeix, o bé esteu provant d'amagar l'actual revisió.",
-'revdelete-nologtype-title' => "No s'ha donat el tipus de registre",
-'revdelete-nologtype-text' => 'No heu especificat un tipus de registre on dur a terme aquesta acció.',
-'revdelete-nologid-title' => 'Entrada de registre no vàlida',
-'revdelete-nologid-text' => 'Heu especificat un esdeveniment del registre que no existeix o al que no se li pot aplicar aquesta funció.',
 'revdelete-no-file' => 'El fitxer especificat no existeix.',
 'revdelete-show-file-confirm' => 'Esteu segurs que voleu veure una revisió esborrada del fitxer «<nowiki>$1</nowiki>» de $2 a $3?',
 'revdelete-show-file-submit' => 'Sí',
@@ -1177,16 +1171,14 @@ $1",
 'logdelete-failure' => "'''No s'ha pogut establir la visibilitat del registre:'''
 $1",
 'revdel-restore' => "Canvia'n la visibilitat",
-'revdel-restore-deleted' => 'revisions esborrades',
-'revdel-restore-visible' => 'revisions visibles',
 'pagehist' => 'Historial',
 'deletedhist' => "Historial d'esborrat",
 'revdelete-hide-current' => "Error en amagar l'edició del $1 a les $2: és la revisió actual.
 No es pot amagar.",
 'revdelete-show-no-access' => "Error en mostrar l'element del $1 a les $2: està marcat com a ''restringit''.
 No hi tens accés.",
-'revdelete-modify-no-access' => "Error en modificar l'element del $1 a les $2: aquest element ha estat marcat com a ''restringit''.
-No hi tens accés.",
+'revdelete-modify-no-access' => "S'ha produït un error en modificar l'element del $1 a les $2: aquest element s'ha marcat com a 'restringit''.
+No hi teniu accés.",
 'revdelete-modify-missing' => "Error en modificar l'element ID $1: no figura a la base de dades!",
 'revdelete-no-change' => "'''Atenció:''' la revisió del $1 a les $2 ja té les restriccions de visibilitat sol·licitades.",
 'revdelete-concurrent-change' => "Error en modificar l'element del $1 a les $2: el seu estat sembla haver estat canviat per algú altre quan intentaves modificar-lo.
@@ -1250,18 +1242,14 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
 'diff-multi-manyusers' => "({{PLURAL:$1|Hi ha una revisió intermèdia|Hi ha $1 revisions intermèdies}} sense mostrar fetes per més {{PLURAL:$2|d'un usuari|de $2 usuaris}})",
 'difference-missing-revision' => "{{PLURAL:$2|Una revisió|$2 revisions}} d'aquesta diferència ($1) no {{PLURAL:$2|s'ha|s'han}} trobat.
 
-Això passa generalment en seguir un enllaç obsolet de diferències a una pàgina que ha estat esborrada.
+Això passa generalment en seguir un enllaç obsolet de diferències a una pàgina que s'ha suprimit.
 Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
 
 # Search results
 'searchresults' => 'Resultats de la cerca',
 'searchresults-title' => 'Resultats de la recerca de «$1»',
-'searchresulttext' => 'Per a més informació de les cerques del projecte {{SITENAME}}, aneu a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Heu cercat '''[[:$1]]'''  ([[Special:Prefixindex/$1|totes les pàgines que comencen amb «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pàgines que enllacen amb «$1»]])",
-'searchsubtitleinvalid' => "Heu cercat '''$1'''",
 'toomanymatches' => "S'han retornat masses coincidències. Proveu-ho amb una consulta diferent.",
 'titlematches' => 'Coincidències de títol de la pàgina',
-'notitlematches' => 'No hi ha cap coincidència de títol de pàgina',
 'textmatches' => 'Coincidències de text de pàgina',
 'notextmatches' => 'No hi ha cap coincidència de text de pàgina',
 'prevn' => 'anteriors {{PLURAL:$1|$1}}',
@@ -1270,10 +1258,8 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '$1 {{PLURAL:$1|resultat|resultats}} següents',
 'shown-title' => 'Mostra $1 {{PLURAL:$1|resultat|resultats}} per pàgina',
 'viewprevnext' => 'Vés a ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcions de cerca',
 'searchmenu-exists' => "'''Hi ha una pàgina anomenada «[[:$1]]» en aquest wiki'''",
 'searchmenu-new' => "'''Creeu la pàgina «[[:$1]]» en aquest wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Mostra pàgines amb aquest prefix]]',
 'searchprofile-articles' => 'Pàgines de contingut',
 'searchprofile-project' => "Pàgines d'ajuda i de projecte",
 'searchprofile-images' => 'Multimèdia',
@@ -1294,20 +1280,16 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 resultats:',
 'search-interwiki-more' => '(més)',
 'search-relatedarticle' => 'Relacionat',
-'mwsuggest-disable' => 'Desactivar suggeriments de cerca',
 'searcheverything-enable' => 'Cerca a tots els espais de noms',
 'searchrelated' => 'relacionat',
 'searchall' => 'tots',
 'showingresults' => 'Tot seguit es {{PLURAL:$1|mostra el resultat|mostren els <b>$1</b> resultats començant pel número <b>$2</b>}}.',
 'showingresultsnum' => 'Tot seguit es {{PLURAL:$3|llista el resultat|llisten els <b>$3</b> resultats començant pel número <b>$2</b>}}.',
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' de '''$3'''|Resultats '''$1 - $2''' de '''$3'''}} per '''$4'''",
-'nonefound' => "'''Nota''': Només se cerca en alguns espais de noms per defecte. Proveu d'afegir el prefix ''all:'' a la vostra consulta per a cercar a tot el contingut (incloent-hi les pàgines de discussió, les plantilles, etc.), o feu servir l'espai de noms on vulgueu cercar com a prefix.",
 'search-nonefound' => 'La cerca no ha donat cap resultat.',
-'powersearch' => 'Cerca avançada',
 'powersearch-legend' => 'Cerca avançada',
 'powersearch-ns' => 'Cerca als espais de noms:',
 'powersearch-redir' => 'Mostra redireccions',
-'powersearch-field' => 'Cerca',
 'powersearch-togglelabel' => 'Activar:',
 'powersearch-toggleall' => 'Tots',
 'powersearch-togglenone' => 'Cap',
@@ -1320,7 +1302,6 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'mypreferences' => 'Preferències',
 'prefs-edits' => "Nombre d'edicions:",
 'prefsnologintext2' => "Useu $1 per configurar preferències d'usuari.",
-'changepassword' => 'Canvia la contrasenya',
 'prefs-skin' => 'Aparença',
 'skin-preview' => 'prova',
 'datedefault' => 'Cap preferència',
@@ -1343,13 +1324,11 @@ Es pot trobar més informació en el [{{fullurl:{{#Special:Log}}/delete|page={{F
 'prefs-email' => 'Opcions de correu electrònic',
 'prefs-rendering' => 'Aparença',
 'saveprefs' => 'Desa les preferències',
-'resetprefs' => 'Esborra els canvis no guardats',
 'restoreprefs' => 'Restaura les preferències per defecte',
 'prefs-editing' => "Caixa d'edició",
 'rows' => 'Files',
 'columns' => 'Columnes',
 'searchresultshead' => 'Preferències de la cerca',
-'resultsperpage' => 'Resultats a mostrar per pàgina',
 'stub-threshold' => 'Límit per a formatar l\'enllaç com <a href="#" class="stub">esborrany</a> (en octets):',
 'stub-threshold-disabled' => 'Deshabilitat',
 'recentchangesdays' => 'Dies a mostrar en els canvis recents:',
@@ -1364,7 +1343,6 @@ Qualsevol que la conegui podria llegir la vostra llista de seguiment, així que
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => "Utilitza l'hora per defecte del wiki ($1)",
 'timezoneuseoffset' => 'Altres (especifiqueu la diferència)',
-'timezoneoffset' => 'Diferència¹:',
 'servertime' => 'Hora del servidor:',
 'guesstimezone' => 'Omple-ho des del navegador',
 'timezoneregion-africa' => 'Àfrica',
@@ -1431,6 +1409,7 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'prefs-tokenwatchlist' => 'Testimoni',
 'prefs-diffs' => 'Difs',
 'prefs-help-prefershttps' => 'Aquesta preferència tindrà efecte quan inicieu una nova sessió.',
+'prefs-tabs-navigation-hint' => 'Consell: Podeu utilitzar les tecles de cursor de dreta i esquerra per a navegar entre les pestanyes.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => "L'adreça de correu electrònic sembla vàlida",
@@ -1615,24 +1594,24 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
 'recentchanges-label-newpage' => 'Aquesta modificació inicià una pàgina',
 'recentchanges-label-minor' => 'Aquesta és una modificació menor',
 'recentchanges-label-bot' => 'Aquesta modificació fou feta per un bot',
-'recentchanges-label-unpatrolled' => 'Aquesta modificació encara no ha estat patrullada',
+'recentchanges-label-unpatrolled' => "Aquesta modificació encara no s'ha patrullat",
 'recentchanges-label-plusminus' => 'La mida de la pàgina ha canviat aquest nombre de bytes',
-'recentchanges-legend-newpage' => '(vegeu també la  [[Special:NewPages|llista de pàgines noves]])',
+'recentchanges-legend-heading' => "'''Llegenda:'''",
+'recentchanges-legend-newpage' => '(vegeu també la [[Special:NewPages|llista de pàgines noves]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => 'A continuació hi ha {{PLURAL:$1|el darrer canvi|els darrers <strong>$1</strong> canvis}} en {{PLURAL:$2|el darrer dia|els darrers <strong>$2</strong> dies}}, actualitzats a les $5 del $4.',
 'rcnotefrom' => 'A sota hi ha els canvis des de <b>$2</b> (es mostren fins <b>$1</b>).',
 'rclistfrom' => 'Mostra els canvis nous des de $1',
 'rcshowhideminor' => '$1 edicions menors',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 usuaris identificats',
+'rcshowhideliu' => '$1 usuaris registrats',
 'rcshowhideanons' => '$1 usuaris anònims',
 'rcshowhidepatr' => '$1 edicions supervisades',
 'rcshowhidemine' => '$1 edicions pròpies',
 'rclinks' => 'Mostra els darrers $1 canvis en els darrers $2 dies<br />$3',
 'diff' => 'dif',
 'hist' => 'hist',
-'hide' => 'amaga',
-'show' => 'mostra',
+'hide' => 'Amaga',
+'show' => 'Mostra',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -1706,7 +1685,7 @@ Vegeu la [[Special:NewFiles|galeria de nous fitxers]] per a una presentació mé
 'filename-tooshort' => 'El nom del fitxer és massa curt.',
 'filetype-banned' => 'Aquest tipus de fitxer està prohibit.',
 'verification-error' => 'Aquest fitxer no ha passat la verificació de fitxers.',
-'hookaborted' => "La modificació que vau tractar de fer ha estat canceŀlada per un lligam d'extensió.",
+'hookaborted' => "La modificació que vau tractar de fer l'ha canceŀlat un lligam d'extensió.",
 'illegal-filename' => 'El nom del fitxer no està permès.',
 'overwrite' => 'No es permet sobreescriure un fitxer existent.',
 'unknown-error' => "S'ha produït un error desconegut.",
@@ -1737,7 +1716,7 @@ Si us plau, torneu enrere i carregueu aquest fitxer sota un altre nom. [[File:$1
 'fileexists-shared-forbidden' => 'Ja hi ha un fitxer amb aquest nom al fons comú de fitxers.
 Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carregueu-ne una còpia amb un altre nom. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Aquest fitxer és un duplicat {{PLURAL:$1|del fitxer |dels següents fitxers:}}',
-'file-deleted-duplicate' => "Un fitxer idèntic a aquest ([[:$1]]) ha estat esborrat amb anterioritat. Hauríeu de comprovar el registre d'esborrat del fitxer abans de tornar-lo a carregar.",
+'file-deleted-duplicate' => "S'ha suprimit anteriorment un fitxer idèntic a aquest ([[:$1]]). Hauríeu de comprovar el registre de supressions del fitxer abans de tornar-lo a carregar.",
 'uploadwarning' => 'Avís de càrrega',
 'uploadwarning-text' => 'Modifiqueu la descripció de la imatge i torneu a intentar-ho.',
 'savefile' => 'Desa el fitxer',
@@ -1837,7 +1816,7 @@ No s'hi ha pogut comprovar la seguretat.",
 'uploadstash-clear' => 'Esborra els fitxers en reserva',
 'uploadstash-nofiles' => 'No teniu fitxers en reserva',
 'uploadstash-badtoken' => "No s'ha pogut realitzar l'acció, possiblement perquè han caducat la vostra identificació. Intenteu-ho de nou.",
-'uploadstash-errclear' => "No ha estat possible l'esborrat dels fitxers.",
+'uploadstash-errclear' => "No s'ha pogut suprimir els fitxers.",
 'uploadstash-refresh' => 'Actualitza la llista de fitxers',
 'invalid-chunk-offset' => 'El desplaçament del fragment no és vàlid',
 
@@ -1898,6 +1877,7 @@ Si filtreu per usuari només es mostraran els fitxers la versió més recent del
 'listfiles-show-all' => 'Inclou versions antigues de les imatges',
 'listfiles-latestversion' => 'Versió actual',
 'listfiles-latestversion-yes' => 'Sí',
+'listfiles-latestversion-no' => 'No',
 
 # File description page
 'file-anchor-link' => 'Fitxer',
@@ -1948,7 +1928,7 @@ Potser voleu modificar-ne la descripció en la seva [$2 pàgina de descripció].
 'filerevert-comment' => 'Motiu:',
 'filerevert-defaultcomment' => "S'ha revertit a la versió com de $2, $1",
 'filerevert-submit' => 'Reverteix',
-'filerevert-success' => "'''[[Media:$1|$1]]''' ha estat revertit a la [$4 versió de $3, $2].",
+'filerevert-success' => "S'ha revertit '''[[Media:$1|$1]]''' a la [$4 versió de $3, $2].",
 'filerevert-badversion' => "No hi ha cap versió local anterior d'aquest fitxer amb la marca horària que es proporciona.",
 
 # File deletion
@@ -2058,6 +2038,7 @@ Les entrades <del>ratllades</del> s\'han resolt.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|enllaç|enllaços}}',
 'nmembers' => '$1 {{PLURAL:$1|membre|membres}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membre|membres}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisió|revisions}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visites}}',
 'nimagelinks' => "S'utilitza en {{PLURAL:$1|una pàgina|$1 pàgines}}",
@@ -2096,10 +2077,9 @@ Les entrades <del>ratllades</del> s\'han resolt.',
 'protectedpages' => 'Pàgines protegides',
 'protectedpages-indef' => 'Només proteccions indefinides',
 'protectedpages-cascade' => 'Només proteccions en cascada',
-'protectedpagestext' => 'Les pàgines següents estan protegides perquè no es puguin modificar o reanomenar',
+'protectedpages-noredirect' => 'Amaga redireccions',
 'protectedpagesempty' => 'No hi ha cap pàgina protegida per ara',
 'protectedtitles' => 'Títols protegits',
-'protectedtitlestext' => 'Els títols següents estan protegits de crear-se',
 'protectedtitlesempty' => 'No hi ha cap títol protegit actualment amb aquests paràmetres.',
 'listusers' => "Llista d'usuaris",
 'listusers-editsonly' => 'Mostra només usuaris amb edicions',
@@ -2151,9 +2131,6 @@ Podeu reduir l'extensió seleccionant el tipus de registre, el nom d'usuari real
 'allpagesto' => 'Mostra pàgines que acabin en:',
 'allarticles' => 'Totes les pàgines',
 'allinnamespace' => "Totes les pàgines (de l'espai de noms $1)",
-'allnotinnamespace' => "Totes les pàgines (que no són a l'espai de noms $1)",
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Següent',
 'allpagessubmit' => 'Vés-hi',
 'allpagesprefix' => 'Mostra les pàgines amb prefix:',
 'allpagesbadtitle' => "El títol de la pàgina que heu inserit no és vàlid o conté un prefix d'enllaç amb un altre projecte. També pot passar que contingui un o més caràcters que no es puguin fer servir en títols de pàgina.",
@@ -2228,7 +2205,7 @@ Pot ser que hi hagi més informació sobre drets individuals [[{{MediaWiki:Listg
 'mailnologin' => 'Cap adreça de remitent',
 'mailnologintext' => "Heu d'[[Special:UserLogin|iniciar una sessió]] i tenir una adreça electrònica vàlida en les vostres [[Special:Preferences|preferències]] per poder enviar correus a altres usuaris.",
 'emailuser' => 'Envia un missatge de correu electrònic a aquest usuari',
-'emailuser-title-target' => 'Enviar un correu electrònic a {{GENDER:$1|aquest usuari|aquesta usuària}}',
+'emailuser-title-target' => 'Envia un missatge electrònic a {{GENDER:$1|aquest usuari|aquesta usuària}}',
 'emailuser-title-notarget' => 'Enviar un correu electrònic a un usuari',
 'emailpage' => 'Correu electrònic a usuari',
 'emailpagetext' => "Podeu usar el següent formulari per a enviar un missatge de correu electrònic a {{GENDER:$1|aquest usuari|aquesta usuària}}.
@@ -2245,7 +2222,7 @@ L'adreça electrònica que vau indicar a [[Special:Preferences|les vostres prefe
 'emailtarget' => "Introduïu el nom d'usuari del destinatari",
 'emailusername' => "Nom d'usuari:",
 'emailusernamesubmit' => 'Enviar',
-'email-legend' => 'Enviar un correu electrònic a un altre usuari de {{SITENAME}}',
+'email-legend' => 'Envia un missatge electrònic a un altre usuari de {{SITENAME}}',
 'emailfrom' => 'De:',
 'emailto' => 'Per a:',
 'emailsubject' => 'Assumpte:',
@@ -2254,7 +2231,7 @@ L'adreça electrònica que vau indicar a [[Special:Preferences|les vostres prefe
 'emailccme' => "Envia'm una còpia del meu missatge.",
 'emailccsubject' => 'Còpia del vostre missatge a $1: $2',
 'emailsent' => 'Correu electrònic enviat',
-'emailsenttext' => 'El vostre correu electrònic ha estat enviat.',
+'emailsenttext' => "S'ha enviat el vostre correu electrònic.",
 'emailuserfooter' => "Aquest missatge de correu electrònic l'ha enviat $1 a $2 amb la funció «e-mail» del projecte {{SITENAME}}.",
 
 # User Messenger
@@ -2271,7 +2248,7 @@ L'adreça electrònica que vau indicar a [[Special:Preferences|les vostres prefe
 'watchnologintext' => "Heu d'[[Special:UserLogin|entrar]]
 per modificar el vostre llistat de seguiment.",
 'addwatch' => 'Afegeix a llista de seguiment',
-'addedwatchtext' => 'La pàgina "[[:$1]]" ha estat afegida a la vostra [[Special:Watchlist|llista de seguiment]].
+'addedwatchtext' => 'S\'ha afegit la pàgina "[[:$1]]" a la vostra [[Special:Watchlist|llista de seguiment]].
 S\'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corresponent discussió.',
 'removewatch' => 'Treu de la llista de seguiment',
 'removedwatchtext' => "S'ha tret la pàgina «[[:$1]]» de la vostra [[Special:Watchlist|llista de seguiment]].",
@@ -2280,7 +2257,7 @@ S\'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corre
 'unwatch' => 'Desatén',
 'unwatchthispage' => 'Desatén',
 'notanarticle' => 'No és una pàgina amb contingut',
-'notvisiblerev' => 'La versió ha estat esborrada',
+'notvisiblerev' => "S'ha suprimit la versió",
 'watchlist-details' => 'Teniu $1 {{PLURAL:$1|pàgina vigilada|pàgines vigilades}}, sense comptar les pàgines de discussió.',
 'wlheader-enotif' => 'La notificació per correu electrònic està habilitada.',
 'wlheader-showupdated' => "Les pàgines que s'han canviat des de la vostra darrera visita es mostren en '''negreta'''.",
@@ -2358,8 +2335,8 @@ Confirmeu que realment ho voleu fer, que enteneu les
 conseqüències, i que el que esteu fent està d'acord amb la [[{{MediaWiki:Policy-url}}|política]] del projecte.",
 'actioncomplete' => "S'ha realitzat l'acció de manera satisfactòria.",
 'actionfailed' => "L'acció ha fallat",
-'deletedtext' => '«$1» ha estat esborrat.
-Vegeu $2 per a un registre dels esborrats més recents.',
+'deletedtext' => "S'ha suprimit «$1».
+Vegeu $2 per a un registre dels esborrats més recents.",
 'dellogpage' => "Registre d'eliminació",
 'dellogpagetext' => 'Davall hi ha una llista dels esborraments més recents.',
 'deletionlog' => "Registre d'esborrats",
@@ -2376,6 +2353,7 @@ Vegeu $2 per a un registre dels esborrats més recents.',
 'delete-edit-reasonlist' => "Edita els motius d'eliminació",
 'delete-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. L'eliminació d'aquestes pàgines està restringida per a prevenir que hi pugui haver un desajustament seriós de la base de dades de tot el projecte {{SITENAME}} per accident.",
 'delete-warning-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. Eliminar-la podria suposar un seriós desajustament de la base de dades de tot el projecte {{SITENAME}}; aneu en compte abans dur a terme l'acció.",
+'deleting-backlinks-warning' => "'''Avís:''' Altres pàgines enllacen a la pàgina que esteu a punt de suprimir.",
 
 # Rollback
 'rollback' => 'Reverteix edicions',
@@ -2388,15 +2366,15 @@ Vegeu $2 per a un registre dels esborrats més recents.',
 'alreadyrolled' => "No es pot revertir la darrera modificació de [[:$1]]
 de l'usuari [[User:$2|$2]] ([[User talk:$2|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]). Algú altre ja ha modificat o revertit la pàgina.
 
-La darrera modificació ha estat feta per l'usuari [[User:$3|$3]] ([[User talk:$3|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
-'editcomment' => "El resum d'edició ha estat: «$1».",
+La darrera modificació l'ha fet l'usuari [[User:$3|$3]] ([[User talk:$3|Discussió]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
+'editcomment' => "El resum d'edició és: «$1».",
 'revertpage' => "Revertides les edicions de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussió]]) a l'última versió de [[User:$1|$1]]",
 'revertpage-nouser' => "Edicions revertides per un usuari ocult a l'última revisió de {{GENDER:$1|[[User:$1|$1]]}}",
 'rollback-success' => "Edicions revertides de $1; s'ha canviat a la darrera versió de $2.",
 
 # Edit tokens
 'sessionfailure-title' => 'Error de sessió',
-'sessionfailure' => "Sembla que hi ha problema amb la vostra sessió. Aquesta acció ha estat anuŀlada en prevenció de pirateig de sessió. Si us plau, pitgeu «Torna», i recarregueu la pàgina des d'on veniu, després intenteu-ho de nou.",
+'sessionfailure' => "S'ha produït un error amb la vostra sessió. S'ha anul·lat aquesta acció en prevenció de pirateig de sessió. Premeu «Torna», recarregueu la pàgina des d'on veniu i torneu-ho a intentar.",
 
 # Protect
 'protectlogpage' => 'Registre de protecció',
@@ -2490,7 +2468,6 @@ al resum a continuació, juntament amb detalls dels usuaris que l'havien editat
 'undeletebtn' => 'Restaura!',
 'undeletelink' => 'mira/restaura',
 'undeleteviewlink' => 'veure',
-'undeletereset' => 'Reinicia',
 'undeleteinvert' => 'Invertir selecció',
 'undeletecomment' => 'Motiu:',
 'undeletedrevisions' => '{{PLURAL:$1|Una revisió restaurada|$1 revisions restaurades}}',
@@ -2579,7 +2556,6 @@ Per més detalls, la última entrada del registre es mostra a continuació:',
 'block' => "Blocatge d'usuaris",
 'unblock' => "Desblocatge d'usuaris",
 'blockip' => "Bloqueig d'usuaris",
-'blockip-title' => "Bloquejar l'usuari",
 'blockip-legend' => "Bloca l'usuari",
 'blockiptext' => "Empreu el següent formulari per blocar l'accés
 d'escriptura des d'una adreça IP específica o des d'un usuari determinat.
@@ -2590,7 +2566,6 @@ quines pàgines en concret estan sent vandalitzades).",
 'ipadressorusername' => "Adreça IP o nom de l'usuari",
 'ipbexpiry' => 'Venciment',
 'ipbreason' => 'Motiu:',
-'ipbreasonotherlist' => 'Altres motius',
 'ipbreason-dropdown' => "*Motius de bloqueig més freqüents
 ** Inserció d'informació falsa
 ** Supressió de contingut sense justificació
@@ -2606,8 +2581,6 @@ quines pàgines en concret estan sent vandalitzades).",
 'ipbsubmit' => 'Bloqueja aquesta adreça',
 '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:',
 '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',
@@ -2615,8 +2588,8 @@ quines pàgines en concret estan sent vandalitzades).",
 'ipb-confirm' => 'Confirma el blocatge',
 'badipaddress' => "L'adreça IP no té el format correcte.",
 'blockipsuccesssub' => "S'ha blocat amb èxit",
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ha estat {{GENDER:$1|blocat|blocada}}.<br />
-Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.',
+'blockipsuccesstext' => "S'ha {{GENDER:$1|blocat|blocada}} [[Special:Contributions/$1|$1]] .<br />
+Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.",
 'ipb-blockingself' => 'Esteu a punt de blocar-vos a vós mateix! Esteu segurs de voler-ho fer?',
 'ipb-confirmhideuser' => "Esteu a punt de bloquejar un usuari que està marcat amb l'opció «amaga l'usuari». Això suprimirà el seu nom a totes les llistes i registres. Esteu segurs de voler-ho fer?",
 'ipb-edit-dropdown' => 'Edita les raons per a blocar',
@@ -2629,7 +2602,7 @@ Vegeu la [[Special:BlockList|llista de bloqueigs]] per revisar-los.',
 l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
 'ipusubmit' => 'Desbloca aquesta adreça',
 'unblocked' => "S'ha desbloquejat l'{{GENDER:$1|usuari|usuària}} [[User:$1|$1]]",
-'unblocked-range' => '$1 ha estat desblocat',
+'unblocked-range' => "s'ha desblocat $1",
 'unblocked-id' => "S'ha eliminat el bloqueig de $1",
 'blocklist' => 'Usuaris blocats',
 'ipblocklist' => 'Usuaris blocats',
@@ -2661,13 +2634,13 @@ l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
 'change-blocklink' => 'canvia el blocatge',
 'contribslink' => 'contribucions',
 'emaillink' => 'correu electrònic',
-'autoblocker' => "Heu estat blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
+'autoblocker' => "Se us ha blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
 El motiu del bloqueig de $1 és: ''$2''.",
 'blocklogpage' => 'Registre de bloquejos',
-'blocklog-showlog' => 'Aquest usuari ha estat blocat prèviament.
-Per més detalls, a sota es mostra el registre de bloquejos:',
-'blocklog-showsuppresslog' => 'Aquest usuari ha estat blocat i amagat prèviament.
-Per més detalls, a sota es mostra el registre de supressions:',
+'blocklog-showlog' => "S'ha blocat aquest usuari prèviament.
+Per més detalls, a sota es mostra el registre de bloquejos:",
+'blocklog-showsuppresslog' => "S'ha blocat i amagat aquest usuari prèviament.
+Per més detalls, a sota es mostra el registre de supressions:",
 'blocklogentry' => "ha blocat l'{{GENDER:$1|usuari|usuària}} [[$1]] per un període de: $2 $3",
 'reblock-logentry' => 'canviades les opcions del blocatge a [[$1]] amb caducitat a $2, $3',
 'blocklogtext' => 'Això és una relació de accions de bloqueig i desbloqueig. Les adreces IP bloquejades automàticament no apareixen. Vegeu la [[Special:BlockList|llista de bloqueigs]] per veure una llista dels actuals bloqueigs operatius.',
@@ -2692,11 +2665,10 @@ Per més detalls, a sota es mostra el registre de supressions:',
 'ip_range_invalid' => 'Rang de IP no vàlid.',
 'ip_range_toolarge' => 'No estan permesos el bloquejos de rangs més grans que /$1.',
 'proxyblocker' => 'Bloqueig de proxy',
-'proxyblockreason' => "La vostra adreça IP ha estat bloquejada perquè és un proxy obert. Si us plau contactau el vostre proveïdor d'Internet o servei tècnic i informau-los d'aquest seriós problema de seguretat.",
+'proxyblockreason' => "S'ha blocat la vostra adreça IP perquè és un proxy obert. Contactau el vostre proveïdor d'Internet o servei tècnic i informau-los d'aquest seriós problema de seguretat.",
 'sorbsreason' => "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert dins la llista negra de DNS que fa servir el projecte {{SITENAME}}.",
 'sorbs_create_account_reason' => "La vostra adreça IP està llistada com a servidor intermediari (''proxy'') obert a la llista negra de DNS que utilitza el projecte {{SITENAME}}. No podeu crear-vos-hi un compte",
 'xffblockreason' => "Una adreça IP present en la capçalera X-Forwarded-For, ja sigui vostra o la d'un servidor proxy que esteu utilitzant, ha estat blocada. El motiu inicial del bloqueig és: $1",
-'cant-block-while-blocked' => 'No podeu blocar altres usuaris quan esteu bloquejat.',
 'cant-see-hidden-user' => "L'usuari que esteu intentant blocar ja ha estat blocat i ocultat. Com que no teniu el permís hideuser no podeu veure ni modificar el seu blocatge.",
 'ipbblocked' => 'No podeu blocar o desblocar altres usuaris, perquè vós {{GENDER:|mateix|mateixa|mateix}} esteu {{GENDER:|blocat|blocada|blocat}}.',
 'ipbnounblockself' => 'No teniu permís per a treure el vostre bloqueig',
@@ -2757,7 +2729,6 @@ assegureu-vos que sabeu el que feu abans de continuar.",
 En aquests casos, haureu de traslladar o fusionar la pàgina manualment si ho desitgeu.",
 'movearticle' => 'Reanomena la pàgina',
 'moveuserpage-warning' => "'''Atenció:''' Esteu a punt de moure una pàgina d'usuari. Tingueu en compte que només la pàgina es desplaçarà i que el compte d'usuari ''no'' canviarà de nom.",
-'movenologin' => "No sou a dins d'una sessió",
 'movenologintext' => "Heu de ser un usuari registrat i estar [[Special:UserLogin|dintre d'una sessió]]
 per reanomenar una pàgina.",
 'movenotallowed' => 'No teniu permís per a moure pàgines.',
@@ -2774,15 +2745,11 @@ per reanomenar una pàgina.",
 'articleexists' => 'Ja existeix una pàgina amb aquest nom, o el nom que heu triat no és vàlid.
 Trieu-ne un altre, si us plau.',
 'cantmove-titleprotected' => "No podeu moure una pàgina a aquesta ubicació, perquè s'ha protegit la creació del títol nou",
-'talkexists' => "S'ha reanomenat la pàgina amb èxit, però la pàgina de discussió no s'ha pogut moure car ja no existeix en el títol nou.
-
-Incorporeu-les manualment, si us plau.",
-'movedto' => 'reanomenat a',
 'movetalk' => 'Mou la pàgina de discussió associada',
 'move-subpages' => "Desplaça'n també les subpàgines (fins a $1)",
 'move-talk-subpages' => 'Desplaça també les subpàgines de la pàgina de discussió (fins un màxim de $1)',
 'movepage-page-exists' => "La pàgina $1 ja existeix i no pot sobreescriure's automàticament.",
-'movepage-page-moved' => 'La pàgina $1 ha estat traslladada a $2.',
+'movepage-page-moved' => "La pàgina $1 s'ha traslladat a $2.",
 'movepage-page-unmoved' => "La pàgina $1 no s'ha pogut moure a $2.",
 'movepage-max-pages' => "{{PLURAL:$1|S'ha mogut una pàgina|S'han mogut $1 pàgines}} que és el nombre màxim, i per tant no se'n mourà automàticament cap més.",
 'movelogpage' => 'Registre de reanomenaments',
@@ -2894,7 +2861,7 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 'imported-log-entries' => "{{PLURAL:$1|S'ha importat una entrada del registre|S'han importat $1 entrades del registre}}.",
 'importfailed' => 'La importació ha fallat: $1',
 'importunknownsource' => "No es reconeix el tipus de la font d'importació",
-'importcantopen' => "No ha estat possible d'obrir el fitxer a importar",
+'importcantopen' => "No s'ha pogut obrir el fitxer a importar",
 'importbadinterwiki' => "Enllaç d'interwiki incorrecte",
 'importnotext' => 'Buit o sense text',
 'importsuccess' => 'Importació completada!',
@@ -3008,6 +2975,7 @@ Deseu-lo al vostre ordinador i carregueu-ne una còpia ací.",
 Permet afegir un motiu al resum.',
 'tooltip-preferences-save' => 'Desa preferències',
 'tooltip-summary' => 'Afegiu un breu resum',
+'interlanguage-link-title' => '$1 - $2',
 
 # Stylesheets
 'common.css' => '/* Editeu aquest fitxer per personalitzar totes les aparences per al lloc sencer */',
@@ -3097,7 +3065,7 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
 'markaspatrolleddiff' => 'Marca com a supervisat',
 'markaspatrolledtext' => 'Marca la pàgina com a supervisada',
 'markedaspatrolled' => 'Marca com a supervisat',
-'markedaspatrolledtext' => 'La revisió seleccionada de [[:$1]] ha estat marcada com a patrullada.',
+'markedaspatrolledtext' => "S'ha marcat com a patrullada la revisió seleccionada de [[:$1]].",
 'rcpatroldisabled' => "S'ha inhabilitat la supervisió dels canvis recents",
 'rcpatroldisabledtext' => 'La funció de supervisió de canvis recents està actualment inhabilitada.',
 'markedaspatrollederror' => 'No es pot marcar com a supervisat',
@@ -3366,7 +3334,7 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
 'exif-serialnumber' => 'Número de sèrie de la càmera',
 'exif-cameraownername' => 'Propietari de la càmera',
 'exif-label' => 'Etiqueta',
-'exif-datetimemetadata' => 'Data que la metadata ha estat modificada per última vegada',
+'exif-datetimemetadata' => "Data que s'ha modificat les metadades per última vegada",
 'exif-nickname' => "Nom informal de l'imatge",
 'exif-rating' => 'Valoració (sobre 5)',
 'exif-rightscertificate' => 'Certificat de gestió de drets',
@@ -3606,15 +3574,10 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => "Prioritat definida per l'usuari ($1)",
 
-# External editor support
-'edit-externally' => 'Edita aquest fitxer fent servir una aplicació externa',
-'edit-externally-help' => '(Vegeu les [https://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuració] per a més informació)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totes',
 'namespacesall' => 'tots',
 'monthsall' => 'tots',
-'limitall' => 'tots',
 
 # Email address confirmation
 'confirmemail' => "Confirma l'adreça de correu electrònic",
@@ -3641,7 +3604,6 @@ El programari de correu retornà el següent missatge: $1",
 'confirmemail_success' => "S'ha confirmat la vostra adreça electrònica.
 Ara podeu [[Special:UserLogin|iniciar una sessió]] i gaudir del wiki.",
 'confirmemail_loggedin' => "Ja s'ha confirmat la vostra adreça electrònica.",
-'confirmemail_error' => 'Quelcom ha fallat en desar la vostra confirmació.',
 'confirmemail_subject' => "Confirmació de l'adreça electrònica del projecte {{SITENAME}}",
 'confirmemail_body' => "Algú, segurament vós, ha registrat el compte «$2» al projecte {{SITENAME}}
 amb aquesta adreça electrònica des de l'adreça IP $1.
@@ -3719,6 +3681,11 @@ Confirmeu que realment voleu tornar-la a crear.",
 'imgmultigo' => 'Vés-hi!',
 'imgmultigoto' => 'Vés a la pàgina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(llengua per defecte)',
+'img-lang-info' => 'Dibuixa aquesta imatge en $1. $2',
+'img-lang-go' => 'Vés-hi',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -3742,8 +3709,8 @@ Confirmeu que realment voleu tornar-la a crear.",
 'livepreview-ready' => "S'està carregant… Preparat!",
 'livepreview-failed' => 'Ha fallat la vista ràpida!
 Proveu-ho amb la previsualització normal.',
-'livepreview-error' => 'La connexió no ha estat possible: $1 «$2»
-Proveu-ho amb la previsualització normal.',
+'livepreview-error' => "No s'ha pogut efectuar la connexió: $1 «$2»
+Proveu-ho amb la previsualització normal.",
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Els canvis més nous de $1 {{PLURAL:$1|segon|segons}} podrien no mostrar-se a la llista.',
@@ -3816,13 +3783,14 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirigeix per fitxer, usuari o ID de la revisió',
+'redirect' => 'Redirigeix per fitxer, usuari, pàgina o ID de la revisió',
 'redirect-legend' => 'Redirigeix a un fitxer o a una pàgina',
-'redirect-summary' => "Aquesta pàgina especial redirigeix a un fitxer (donat el nom del fitxer), una pàgina (donada un ID de la revisió), o a una pàgina d'usuari (donat un ID numèric d'usuari). Ús: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Aquesta pàgina especial redirigeix a un fitxer (donat el nom del fitxer), una pàgina (donats un ID de la revisió o un ID de pàgina), o a una pàgina d'usuari (donat un ID numèric d'usuari). Ús: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Vés-hi',
 'redirect-lookup' => 'Consulta:',
 'redirect-value' => 'Valor:',
 'redirect-user' => "ID d'usuari",
+'redirect-page' => 'ID de pàgina',
 'redirect-revision' => 'Revisió de la pàgina',
 'redirect-file' => 'Nom del fitxer',
 'redirect-not-exists' => "No s'ha trobat el valor",
@@ -3883,12 +3851,12 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
 'tags-active-header' => 'Actiu?',
 'tags-hitcount-header' => 'Canvis etiquetats',
 'tags-active-yes' => 'Sí',
+'tags-active-no' => 'No',
 'tags-edit' => 'modifica',
 'tags-hitcount' => '$1 {{PLURAL:$1|canvi|canvis}}',
 
 # Special:ComparePages
 'comparepages' => 'Comparar pàgines',
-'compare-selector' => 'Comparar revisions de pàgines',
 'compare-page1' => 'Pàgina 1',
 'compare-page2' => 'Pàgina 2',
 'compare-rev1' => 'Revisió 1',
@@ -4001,7 +3969,7 @@ Altrament, podeu fer servir un senzill formulari a continuació. El vostre comen
 'api-error-filetype-banned' => 'Aquest tipus de fitxer està prohibit.',
 'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|no és un tipus de fitxer permès|no són tipus de fitxer permesos}}. {{PLURAL:$3|El tipus de fitxer permès és|Els tipus de fitxer permesos són}} $2.',
 'api-error-filetype-missing' => 'El nom de fitxer no té extensió.',
-'api-error-hookaborted' => "La modificació que heu intentat fer ha estat canceŀlada per un mòdul d'extensió.",
+'api-error-hookaborted' => "Un mòdul d'extensió ha cancel·lat la modificació que heu intentat fer.",
 'api-error-http' => 'Error intern: no es pot connectar al servidor.',
 'api-error-illegal-filename' => 'El nom del fitxer no està permès.',
 'api-error-internal-error' => 'Error intern: el procés de càrrega en el wiki no ha funcionat.',
@@ -4062,10 +4030,12 @@ També expandeix les funcions sintàctiques, com ara <code><nowiki>{{</nowiki>#l
 'expand_templates_input' => 'El vostre text:',
 'expand_templates_output' => 'Resultat:',
 'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_html_output' => 'Sortida en HTML sense filtrar',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Elimina els comentaris',
 'expand_templates_remove_nowiki' => "Suprimeix l'etiqueta <nowiki> en el resultat",
 'expand_templates_generate_xml' => "Mostra l'arbre XML",
+'expand_templates_generate_rawhtml' => "Mostra l'HTML sense filtrar",
 'expand_templates_preview' => 'Previsualitza',
 
 );
index b58427e..265f0db 100644 (file)
@@ -56,7 +56,7 @@ $messages = array(
 'otherlanguages' => 'na otro maga lenguaje',
 'lastmodifiedat' => 'Ya modifica con este pagina por ultimo vez en hora $2 del $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).
+# 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).
 'aboutsite' => 'Acerca de {{SITENAME}}',
 'aboutpage' => 'Project:Acerca de',
 'copyright' => 'Obtenible el maga texto de este Wikipedia bajo los terminos y maga condicion del <i>$1</i>.',
@@ -82,6 +82,9 @@ $messages = array(
 'accountcreated' => 'El cuenta registro del usuario es creando',
 'accountcreatedtext' => 'Creao ya el cuenta registro por usuario $1.',
 
+# Change password dialog
+'changepassword' => 'Cambia con el contraseña',
+
 # Edit pages
 'blockedtitle' => 'El usuario es prohibido o bloqueado',
 'accmailtitle' => 'Enviao ya el contraseña.',
@@ -92,9 +95,6 @@ El contraseña de este nuevo cuenta puede cambia na pagina ''[[Special:ChangePas
 # Search results
 'search-result-size' => '$1 ({{PLURAL:$2|1 palabra|$2 maga palabra}})',
 
-# Preferences page
-'changepassword' => 'Cambia con el contraseña',
-
 # Recent changes
 'recentchanges' => 'Maga Reciente Cambio',
 
@@ -115,8 +115,8 @@ Por favor mira tambien el maga [[Special:WantedCategories|categoria requeridas]]
 # Watchlist
 'watch' => 'Vicia',
 
-'changed' => 'cambiao',
 'created' => 'creao',
+'changed' => 'cambiao',
 
 # Delete
 'actioncomplete' => 'Completo el accion',
index 4b82feb..a7e553a 100644 (file)
  * @author Yejianfei
  */
 
+$fallback = 'nan, zh-hant';
+
+$namespaceNames = array(
+       NS_MEDIA            => '媒體',
+       NS_SPECIAL          => '特殊',
+       NS_TALK             => '討論',
+       NS_USER             => '用戶',
+       NS_USER_TALK        => '用戶討論',
+       NS_PROJECT_TALK     => '$1討論',
+       NS_FILE             => '文件',
+       NS_FILE_TALK        => '文件討論',
+       NS_MEDIAWIKI        => '媒體維基',
+       NS_MEDIAWIKI_TALK   => '媒體維基討論',
+       NS_TEMPLATE         => '模板',
+       NS_TEMPLATE_TALK    => '模板討論',
+       NS_HELP             => '幫助',
+       NS_HELP_TALK        => '幫助討論',
+       NS_CATEGORY         => '分類',
+       NS_CATEGORY_TALK    => '分類討論',
+);
+
+$specialPageAliases = array(
+       'Activeusers'               => array( '活動用戶' ),
+       'Allmessages'               => array( '全部信息' ),
+       'Allpages'                  => array( '全部頁面' ),
+       'Ancientpages'              => array( '舊其頁面' ),
+       'Badtitle'                  => array( '呆其標題' ),
+       'Blankpage'                 => array( '空白頁面' ),
+       'Block'                     => array( '封鎖', '封鎖IP', '封鎖用戶' ),
+       'Booksources'               => array( '圖書源' ),
+       'BrokenRedirects'           => array( '呆其重定向' ),
+       'Categories'                => array( '分類' ),
+       'ChangeEmail'               => array( '改變電子郵件' ),
+       'ChangePassword'            => array( '改變密碼', '重置密碼' ),
+       'ComparePages'              => array( '比較頁面' ),
+       'Confirmemail'              => array( '確認電子郵件' ),
+       'Contributions'             => array( '貢獻' ),
+       'CreateAccount'             => array( '開賬戶' ),
+       'DeletedContributions'      => array( '刪掉其貢獻' ),
+       'DoubleRedirects'           => array( '雙重重定向' ),
+       'EditWatchlist'             => array( '修改監視單' ),
+       'Emailuser'                 => array( '共用戶發送電子郵件' ),
+       'Export'                    => array( '導出' ),
+       'Fewestrevisions'           => array( '最少其修訂' ),
+       'FileDuplicateSearch'       => array( '文件重複尋討' ),
+       'Filepath'                  => array( '文件路徑' ),
+       'Import'                    => array( '導底' ),
+       'Invalidateemail'           => array( '無效電子郵件' ),
+       'JavaScriptTest'            => array( 'JavaScript測試' ),
+       'BlockList'                 => array( '封鎖單' ),
+       'LinkSearch'                => array( '鏈接尋討' ),
+       'Listadmins'                => array( '管理員單單' ),
+       'Listbots'                  => array( '機器人單單' ),
+       'Listfiles'                 => array( '文件單', '圖片單' ),
+       'Listgrouprights'           => array( '小組權限單', '用戶組單單' ),
+       'Listredirects'             => array( '重定向單單' ),
+       'Listusers'                 => array( '用戶單' ),
+       'Lockdb'                    => array( '鎖定數據庫' ),
+       'Log'                       => array( '日誌' ),
+       'Lonelypages'               => array( '單獨其頁面' ),
+       'Longpages'                 => array( '長長其頁面' ),
+       'MergeHistory'              => array( '合併其歷史' ),
+       'MIMEsearch'                => array( 'MIME尋討' ),
+       'Mostcategories'            => array( '最価其分類' ),
+       'Mostimages'                => array( '最価鏈接其文件' ),
+       'Mostinterwikis'            => array( '最稠其跨維基' ),
+       'Mostlinked'                => array( '最価鏈接其頁面' ),
+       'Mostlinkedcategories'      => array( '最価鏈接其分類' ),
+       'Mostlinkedtemplates'       => array( '最価鏈接其模板' ),
+       'Mostrevisions'             => array( '最稠其版本' ),
+       'Movepage'                  => array( '移動其頁面' ),
+       'Mycontributions'           => array( '我其貢獻' ),
+       'Mypage'                    => array( '我其頁面' ),
+       'Mytalk'                    => array( '我其討論' ),
+       'Myuploads'                 => array( '我其上傳' ),
+       'Newimages'                 => array( '新其文件', '新其圖片' ),
+       'Newpages'                  => array( '新其頁面' ),
+       'PasswordReset'             => array( '密碼重置' ),
+       'PermanentLink'             => array( '永久鏈接' ),
+       'Popularpages'              => array( '受歡迎其頁面' ),
+       'Preferences'               => array( '喜好' ),
+       'Prefixindex'               => array( '前綴索引' ),
+       'Protectedpages'            => array( '受保護其頁面' ),
+       'Protectedtitles'           => array( '受保護其標題' ),
+       'Randompage'                => array( '隨便其頁面' ),
+       'Randomredirect'            => array( '隨便其重定向' ),
+       'Recentchanges'             => array( '最近其改變' ),
+       'Recentchangeslinked'       => array( '最近改變其鏈接' ),
+       'Redirect'                  => array( '重定向' ),
+       'ResetTokens'               => array( '重置令牌' ),
+       'Search'                    => array( '尋討' ),
+       'Shortpages'                => array( '短短其頁面' ),
+       'Specialpages'              => array( '特殊頁' ),
+       'Statistics'                => array( '統計' ),
+       'Tags'                      => array( '標籤' ),
+       'Unblock'                   => array( '取消封鎖' ),
+       'Uncategorizedcategories'   => array( '未分類其分類' ),
+       'Uncategorizedimages'       => array( '未分類其文件', '未分類其圖片' ),
+       'Uncategorizedpages'        => array( '未分類其頁面' ),
+       'Uncategorizedtemplates'    => array( '未分類其模板' ),
+       'Undelete'                  => array( '伓使刪除' ),
+       'Unlockdb'                  => array( '解鎖數據庫' ),
+       'Unusedcategories'          => array( '無乇使其分類' ),
+       'Unusedimages'              => array( '無乇使其文件', '無乇使其圖片' ),
+       'Unusedtemplates'           => array( '無乇使其模板' ),
+       'Unwatchedpages'            => array( '未監視其頁面' ),
+       'Upload'                    => array( '上傳' ),
+       'Userlogin'                 => array( '用戶躒底', '躒底' ),
+       'Userlogout'                => array( '用戶躒出', '躒出' ),
+       'Userrights'                => array( '用戶權限' ),
+       'Version'                   => array( '版本' ),
+       'Wantedcategories'          => array( '卜挃其分類' ),
+       'Wantedfiles'               => array( '卜挃其文件' ),
+       'Wantedpages'               => array( '卜挃其頁面' ),
+       'Wantedtemplates'           => array( '卜挃其模板' ),
+       'Watchlist'                 => array( '監視單' ),
+       'Whatlinkshere'             => array( '什乇鏈遘嚽塊' ),
+       'Withoutinterwiki'          => array( '無跨維基' ),
+);
+
 $datePreferences = array(
        'default',
        'ISO 8601',
@@ -38,7 +158,6 @@ $messages = array(
 'tog-minordefault' => '默認共所有其編輯都當作過要修改',
 'tog-previewontop' => '敆編輯框以前顯示預覽',
 'tog-previewonfirst' => '敆頭蜀回編輯時候看預覽',
-'tog-nocache' => '無讓瀏覽器頁面緩存',
 'tog-enotifwatchlistpages' => '我其監視單有變時候,發電子郵件乞我',
 'tog-enotifusertalkpages' => '我其討論頁有變時候,發電子郵件乞我',
 'tog-enotifminoredits' => '即使是過要編輯,也著發電子郵件乞我',
@@ -170,7 +289,6 @@ $messages = array(
 'qbedit' => '修改',
 'qbpageoptions' => '茲蜀頁',
 'qbmyoptions' => '我其頁面',
-'qbspecialpages' => '特殊頁',
 'faq' => '經稠碰著其問題',
 'faqpage' => 'Project:經稠碰著其問題',
 
@@ -367,9 +485,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'perfcachedts' => '下底其數據已經緩存過了,最後更新遘$1。{{PLURAL:$4|$4條結果}}會敆緩存臺中討著。',
 'querypage-no-updates' => '茲蜀頁其更新乞禁止了。
 數據嚽塊現刻時𣍐更新了。',
-'wrong_wfQuery_params' => '敆wfQuery()其鄭其參數<br />
-函數:$1<br />
-查詢:$2',
 'viewsource' => '看源代碼',
 'viewsource-title' => '覷蜀覷$1其源代碼',
 'actionthrottled' => '行動乞取消咯',
@@ -496,7 +611,7 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'php-mail-error-unknown' => 'PHP其mail()函數,𣍐八什乇賺去。',
 
 # Change password dialog
-'resetpass' => '密碼已經乞修改去了',
+'changepassword' => '改變密碼',
 'resetpass_header' => '改變賬戶其密碼',
 'oldpassword' => '舊密碼:',
 'newpassword' => '新密碼:',
@@ -664,9 +779,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 # 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'''",
 'prevn' => '前{{PLURAL:$1}}$1萆',
 'nextn' => '後{{PLURAL:$1}}$1萆',
 'shown-title' => '每頁顯示$1{{PLURAL:$1|萆結果}}',
@@ -690,7 +802,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'preferences' => '設定',
 'mypreferences' => '我其設定',
 'prefs-edits' => '修改數量:',
-'changepassword' => '改變密碼',
 'prefs-skin' => '皮膚',
 'datedefault' => '無設定',
 'prefs-datetime' => '日期共時間',
@@ -699,7 +810,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'prefs-watchlist' => '監視單',
 'prefs-misc' => '其它',
 'saveprefs' => '保存',
-'resetprefs' => '清除未保存其改變',
 'searchresultshead' => '尋討',
 'resultsperpage' => '每頁訪問量:',
 'recentchangescount' => '這般改變其條目:',
@@ -708,7 +818,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'localtime' => '當地時間:',
 'timezoneuseserverdefault' => '使維基默認($1)',
 'timezoneuseoffset' => '其它(點出時差)',
-'timezoneoffset' => '時差',
 'servertime' => '服務器時間:',
 'guesstimezone' => '填充敆瀏覽器𡅏',
 'timezoneregion-africa' => '非洲',
@@ -767,7 +876,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'recentchanges-label-newpage' => '茲蜀萆修改創建新其蜀頁',
 'recentchanges-label-minor' => '茲是蜀萆過要修改',
 'recentchanges-label-bot' => '茲蜀萆修改是機器人做其',
-'rcnote' => "下底是{{PLURAL:$1|是 '''1'''改變|最後'''$1'''萆改變}}敆最後'''$2'''日,就像$4 $5。",
 'rclistfrom' => '顯示由$1開始其新其改變',
 'rcshowhideminor' => '$1過要修改',
 'rcshowhidebots' => '$1機器人',
@@ -917,9 +1025,6 @@ Sō̤ kī só-gé̤ṳ-kó gì guāng-lī-uòng cūng-kuāng gāi-sék: $1',
 'allpagesfrom' => '使下底其乇開始顯示頁:',
 'allarticles' => '所有文章',
 'allinnamespace' => '所有頁面($1命名空間)',
-'allnotinnamespace' => '所有頁面(無著$1其命名空間)',
-'allpagesprev' => '前蜀頁',
-'allpagesnext' => '下蜀頁',
 'allpagessubmit' => '去',
 'allpagesprefix' => '按頭部顯示頁面:',
 'allpagesbadtitle' => '給出其頁面其標題是𣍐合法其,或者有蜀萆跨語言或跨維基其前綴。伊可能包括蜀萆或者価萆𣍐使廮標題底裏其字符。',
@@ -1033,7 +1138,6 @@ If a new page with the same name has been created since the deletion, the restor
 'undeletebtn' => '恢復',
 'undeletelink' => '看/恢復',
 'undeleteviewlink' => '看',
-'undeletereset' => '重新寫',
 'undeletecomment' => '原因:',
 'undelete-search-submit' => '尋討',
 
@@ -1083,7 +1187,6 @@ If a new page with the same name has been created since the deletion, the restor
 'ipadressorusername' => 'IP地址或者用戶名:',
 'ipbexpiry' => '過期:',
 'ipbreason' => '原因:',
-'ipbreasonotherlist' => '其它原因',
 'ipbreason-dropdown' => '*普通封鎖原因
 ** 加添假其信息
 ** 塗掉頁面內容
@@ -1098,8 +1201,6 @@ If a new page with the same name has been created since the deletion, the restor
 'ipbsubmit' => '封鎖茲用戶',
 'ipbother' => '其它時間',
 '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',
-'ipbotheroption' => '其它',
-'ipbotherreason' => '其它原因:',
 'blockipsuccesssub' => '封鎖成功',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]已經乞封鎖.<br />
 覷蜀覷[[Special:BlockList|封鎖單]]來瀏覽封鎖。',
@@ -1155,14 +1256,11 @@ If a new page with the same name has been created since the deletion, the restor
 
 若總款,汝會使自家移動或者是合併頁面。",
 'movearticle' => '移動頁面',
-'movenologin' => '未躒底',
 'movenologintext' => '著[[Special:UserLogin|躒底]]才會使移動頁面。',
 'newtitle' => '遘新題目:',
 'move-watch' => '監視茲頁',
 'movepagebtn' => '移動頁面',
 'pagemovedsub' => '移動成功',
-'talkexists' => "'''茲蜀頁自家已經成功乞移開去了,但是討論頁𣍐使移開,因為已經有蜀萆敆新其標題。請手動共伊合併起了。'''",
-'movedto' => '移遘',
 'movetalk' => '移動相關討論頁',
 'movelogpage' => '移動日誌',
 'movelogpagetext' => '下底是乞移動過其頁其單單。',
@@ -1252,10 +1350,6 @@ If a new page with the same name has been created since the deletion, the restor
 
 'exif-subjectdistancerange-0' => '𣍐八',
 
-# External editor support
-'edit-externally' => '使外程序來編輯茲文件',
-'edit-externally-help' => '(參考[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions]來瞭解更価信息)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '所有',
 'namespacesall' => '所有',
@@ -1267,7 +1361,6 @@ If a new page with the same name has been created since the deletion, the restor
 可能已經過期了。',
 'confirmemail_needlogin' => '汝著$1來確定汝其電子郵件地址。',
 'confirmemail_loggedin' => '汝其電子郵件地址現在已經確定去了。',
-'confirmemail_error' => '保存汝其確認其時候發現有鄭了。',
 'confirmemail_body' => '有人(可能是汝)敆IP地址$1𡅏已經使茲蜀萆電子郵件地址來註冊蜀萆賬戶「$2」去了。
 
 卜想確認茲蜀萆賬戶當真是汝其,固加敆{{SITENAME}}激活電子郵件特點,許敆汝其瀏覽器𡅏拍開茲蜀萆鏈接:
index 685cd12..452900e 100644 (file)
@@ -93,6 +93,7 @@ $specialPageAliases = array(
        'DoubleRedirects'           => array( 'Шалха_дӀасахьажийнарш' ),
        'EditWatchlist'             => array( 'Табе_тергаме_могӀам' ),
        'Emailuser'                 => array( 'Декъашхочунга_кехат' ),
+       'ExpandTemplates'           => array( 'Кепаш_схьаястар' ),
        'Export'                    => array( 'Экспорт' ),
        'Fewestrevisions'           => array( 'Наггахь_беш_болу_хийцамаш' ),
        'FileDuplicateSearch'       => array( 'Цхьатера_файлаш_лахар' ),
@@ -201,7 +202,7 @@ $magicWords = array(
        'localhour'                 => array( '1', 'МЕТТИГАН_САХЬТ', 'МЕСТНЫЙ_ЧАС', 'LOCALHOUR' ),
        'numberofpages'             => array( '1', 'АГlОНИЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_СТРАНИЦ', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', 'ЯЗЗАМАШИ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_СТАТЕЙ', 'NUMBEROFARTICLES' ),
-       'numberoffiles'             => array( '1', 'Ð¥lУÐ\9cÐ\9dÐ\98Ð\99_ДУКХАЛЛА', 'КОЛИЧЕСТВО_ФАЙЛОВ', 'NUMBEROFFILES' ),
+       'numberoffiles'             => array( '1', 'ФÐ\90Ð\99Ð\9bÐ\90Ð\9dШÐ\98_ДУКХАЛЛА', 'КОЛИЧЕСТВО_ФАЙЛОВ', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'ДЕКЪАШХОЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_УЧАСТНИКОВ', 'NUMBEROFUSERS' ),
        'numberofactiveusers'       => array( '1', 'ДУКХАЛЛА_ЖИГАРА_ДЕКЪАШХОЙ', 'КОЛИЧЕСТВО_АКТИВНЫХ_УЧАСТНИКОВ', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', 'НИСДАРШИЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_ПРАВОК', 'NUMBEROFEDITS' ),
@@ -232,12 +233,12 @@ $magicWords = array(
        'img_right'                 => array( '1', 'бакъхьа', 'справа', 'right' ),
        'img_left'                  => array( '1', 'харцхьа', 'слева', 'left' ),
        'img_none'                  => array( '1', 'йоцуш', 'без', 'none' ),
-       'img_width'                 => array( '1', '$1цинт', '$1пкс', '$1px' ),
+       'img_width'                 => array( '1', '$1пкс', '$1px' ),
        'img_center'                => array( '1', 'юккъ', 'центр', 'center', 'centre' ),
        'img_framed'                => array( '1', 'гурабе', 'обрамить', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'гурабоцаш', 'безрамки', 'frameless' ),
-       'img_page'                  => array( '1', 'агlо=$1', 'агlо_$1', 'page_$1', 'страница=$1', 'страница $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'бакъхьалакхо', 'бакъхьалакхо=$1', 'бакъхьалакхо_$1', 'upright_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'агlо=$1', 'агlо_$1', 'page_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'бакъхьалакхо', 'бакъхьалакхо=$1', 'бакъхьалакхо_$1', 'upright_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'доза', 'граница', 'border' ),
        'img_baseline'              => array( '1', 'бух', 'основание', 'baseline' ),
        'img_sub'                   => array( '1', 'буха', 'под', 'sub' ),
@@ -284,8 +285,8 @@ $magicWords = array(
        'raw'                       => array( '0', 'ТАЙАНЗА:', 'НЕОБРАБ:', 'RAW:' ),
        'displaytitle'              => array( '1', 'ГАЙТА_КОЬРТАМОГl', 'ПОКАЗАТЬ_ЗАГОЛОВОК', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'Т', 'Н', 'R' ),
-       'newsectionlink'            => array( '1', '__ХЬÐ\90Ð\96Ð\9eРÐ\98Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__ССЫЛКА_НА_НОВЫЙ_РАЗДЕЛ__', '__NEWSECTIONLINK__' ),
-       'nonewsectionlink'          => array( '1', '__Ð\99Ð\9eЦÐ\90Ш_ХЬÐ\90Ð\96Ð\9eРÐ\98Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__БЕЗ_ССЫЛКИ_НА_НОВЫЙ_РАЗДЕЛ__', '__NONEWSECTIONLINK__' ),
+       'newsectionlink'            => array( '1', '__ХЬÐ\90Ð\96Ð\9eРÐ\90Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__ССЫЛКА_НА_НОВЫЙ_РАЗДЕЛ__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'          => array( '1', '__Ð\99Ð\9eЦÐ\90Ш_ХЬÐ\90Ð\96Ð\9eРÐ\90Г_ОЦ_КЕРЛАЧУ_ДЕКЪАН__', '__БЕЗ_ССЫЛКИ_НА_НОВЫЙ_РАЗДЕЛ__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'ЙОЛШЙОЛУ_БАШХО', 'ТЕКУЩАЯ_ВЕРСИЯ', 'CURRENTVERSION' ),
        'urlencode'                 => array( '0', 'ИШАРЙИНА_МЕТТИГ:', 'ЗАКОДИРОВАННЫЙ_АДРЕС:', 'URLENCODE:' ),
        'anchorencode'              => array( '0', 'ИШАРЙАР_МЕТТИГАН', 'КОДИРОВАТЬ_МЕТКУ', 'ANCHORENCODE' ),
@@ -295,7 +296,7 @@ $magicWords = array(
        'language'                  => array( '0', '#МОТТ', '#ЯЗЫК:', '#LANGUAGE:' ),
        'contentlanguage'           => array( '1', 'МОТТ_ЧУЛАЦАМ', 'ЯЗЫК_СОДЕРЖАНИЯ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
        'pagesinnamespace'          => array( '1', 'АГlОНАШ_ОЦ_ЦlЕРАШКАХЬ:', 'СТРАНИЦ_В_ПРОСТРАНСТВЕ_ИМЁН:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
-       'numberofadmins'            => array( '1', 'Ð\90Ð\94Ð\9cÐ\90Ð\9dÐ\9aУЬÐ\93Ð\90Ð\9bÐ¥Ð\9eÐ\99\94УÐ\9aÐ¥Ð\90Ð\9bÐ\9bÐ\90', 'Ð\9aÐ\9eÐ\9bÐ\98ЧÐ\95СТÐ\92Ð\9e\90Ð\94Ð\9cÐ\98Ð\9dÐ\98СТРÐ\90ТÐ\9eРÐ\9eÐ\92', 'NUMBEROFADMINS' ),
+       'numberofadmins'            => array( '1', 'КУЬГАЛХОЙ_ДУКХАЛЛА', 'КОЛИЧЕСТВО_АДМИНИСТРАТОРОВ', 'NUMBEROFADMINS' ),
        'formatnum'                 => array( '0', 'ТЕРАХЬАН_БАРАМХlОТТОР', 'ФОРМАТИРОВАТЬ_ЧИСЛО', 'FORMATNUM' ),
        'padleft'                   => array( '0', 'ЙУЗА_ХАРЦЕ', 'ЗАПОЛНИТЬ_СЛЕВА', 'PADLEFT' ),
        'padright'                  => array( '0', 'ЙУЗА_БАКЪЕ', 'ЗАПОЛНИТЬ_СПРАВА', 'PADRIGHT' ),
@@ -320,8 +321,8 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Кlел сиз хьака хьажориган:',
 'tog-justify' => 'Нисде йоза шораллий агlонца',
-'tog-hideminor' => 'Къайладаха кигийра нисдарш оц могlама керла хийцамехь',
-'tog-hidepatrolled' => 'Къайладаха гlаролладина нисдарш оц могlама керла нисдашкахь',
+'tog-hideminor' => 'Къайладаха кигийра нисдарш оц могӀама керла хийцамехь',
+'tog-hidepatrolled' => 'Къайладаха гӀаролладина нисдарш оц могӀама керла нисдаршкахь',
 'tog-newpageshidepatrolled' => 'Къайлайаха гlароллайина агlонаш оц могlама керла агlонашкахь',
 'tog-extendwatchlist' => 'Шорбина тlехьажарна могlам, ша беригге а хийцамаш чубогlуш, тlяхьабина боцурш а',
 'tog-usenewrc' => 'Лелабе дика могӀам керла чу хийцамашна (оьшу JavaScript)',
@@ -331,30 +332,29 @@ $messages = array(
 'tog-editsection' => 'Гайта хьажораг «нисйе» аьлла хӀора агӀона',
 'tog-editsectiononrightclick' => 'Нисде дакъа шозза бакъехьар дахка тӀетаӀийча оцу кортан (JavaScript)',
 'tog-showtoc' => 'Гойти коьртнаш (оцу агlонашна лаххара 3 коьртнашца)',
-'tog-rememberpassword' => 'Ð\94аглаÑ\86а Ñ\81ан Ð´Ó\80аÑ\8fздаÑ\80 Ñ\85Ó\80окÑ\85Ñ\83 Ð±Ñ\80аÑ\83зеÑ\80ан Ñ\82Ó\80Ñ\8fÑ\85Ñ\8c (Ñ\86Ñ\85Ñ\8cан $1 {{PLURAL:$1|де|ден|динаÑ\85Ñ\8c}})',
+'tog-rememberpassword' => 'Ð\94аглаÑ\86а Ñ\81ан Ð´Ó\80аÑ\8fздаÑ\80 Ñ\85Ó\80окÑ\85Ñ\83 Ð±Ñ\80аÑ\83зеÑ\80ан Ñ\82Ó\80Ñ\8fÑ\85Ñ\8c (Ñ\86Ñ\85Ñ\8cан $1 {{PLURAL:$1|де|динаÑ\85Ñ\8c|ден}})',
 'tog-watchcreations' => 'ТӀетоха ас кхоьллина агӀонаш тергаме могӀам чу',
 'tog-watchdefault' => 'ТӀетоха ас нисйина агӀонаш тергаме могӀам чу',
 'tog-watchmoves' => 'ТӀетоха ас цӀераш хийцина агӀонаш тергаме могӀам чу',
-'tog-watchdeletion' => 'Тlетоха ас дӀаяхина агlонаш тергаме могlам чу',
+'tog-watchdeletion' => 'ТӀетоха ас дӀаяьхна агӀонаш тергаме могӀанан чу',
 'tog-minordefault' => 'Къастам бе нисйиначарн хlумцадеш кегийра долушсанна',
-'tog-previewontop' => 'ЧÑ\83Ñ\8fккÑ\85а Ñ\85Ñ\8cалÑ\85Ñ\85Ñ\8cажаÑ\80 Ñ\80éдоккÑ\85Ñ\83Ñ\87Ñ\83 кора хьалха',
+'tog-previewontop' => 'ЧÑ\83Ñ\8fккÑ\85а Ñ\85Ñ\8cалÑ\85Ñ\85Ñ\8cажаÑ\80 Ñ\82адаÑ\80ан кора хьалха',
 'tog-previewonfirst' => 'Гайта хьалххьажар тадарш да долийча',
-'tog-nocache' => 'Ма латае гойтучун къайлаха латториг',
-'tog-enotifwatchlistpages' => 'Хаам бо зlе чухул, тергаме могlаман хийцамах лаьцна',
+'tog-enotifwatchlistpages' => 'Хаам бо электронан почтехула, тергаме могӀаман хийцамах лаьцна',
 'tog-enotifusertalkpages' => 'Хаам бо зlе чухул, долахь йолу дийцаре агlон хийцамах лаьцна',
 'tog-enotifminoredits' => 'Хаам бо зӀе чухул, цхьа жимма а хийцамаш биняхь',
 'tog-enotifrevealaddr' => 'Гайта сан зlе оцу хаамаш барехь',
-'tog-shownumberswatching' => 'Гайта декъашхойн терахь, агlо латийна болу шай тергаме могlам юкъа',
+'tog-shownumberswatching' => 'Гайта декъашхойн терахь, агӀо латийна болу шай тергаме могӀанан юкъа',
 'tog-oldsig' => 'Карара куьгтаӀорна:',
 'tog-fancysig' => 'Шен вики-къастаман куьгтаӀдар (ша шех хьажораг йоцуш)',
 'tog-uselivepreview' => 'Лелайа чехка хьалха хьажа (JavaScript, муха ю хьажарна)',
 'tog-forceeditsummary' => 'Дага даийта, нагахь нисйарх лаьцна чохь язйина яцахь',
-'tog-watchlisthideown' => 'Къайлаяха ас нисйинарш оцу тергаме могlам чура',
-'tog-watchlisthidebots' => 'Къайладаха шаболх бечо нисдинарш оцу тергаме могlам чура',
-'tog-watchlisthideminor' => 'Къайладаха кегийра нисдарш оцу тергаме могlам чура',
-'tog-watchlisthideliu' => 'Къайладаха вовзийтина болу декъашхойн нисдарш оцу тергаме могlам чура',
-'tog-watchlisthideanons' => 'Къайладаха къайлаха болу декъашхойн нисдарш оцу тергаме могlам чура',
-'tog-watchlisthidepatrolled' => 'Ð\9aÑ\8aайладаÑ\85а Ñ\85Ñ\8cаÑ\8cжина Ð²Ð¾Ð»Ñ\83 Ð½Ð¸Ñ\81даÑ\80Ñ\88 Ð¾Ñ\86Ñ\83 Ñ\82еÑ\80гаме Ð¼Ð¾Ð³lам чура',
+'tog-watchlisthideown' => 'Къайлаяха ас нисйинарш оцу тергаме могӀам чура',
+'tog-watchlisthidebots' => 'Къайладаха шаболх бечо нисдинарш оцу тергаме могӀам чура',
+'tog-watchlisthideminor' => 'Къайладаха кегийра нисдарш оцу тергаме могӀам чура',
+'tog-watchlisthideliu' => 'Къайладаха вовзийтина болу декъашхойн нисдарш оцу тергаме могӀам чура',
+'tog-watchlisthideanons' => 'Къайладаха къайлаха болу декъашхойн нисдарш оцу тергаме могӀам чура',
+'tog-watchlisthidepatrolled' => 'Ð\9aÑ\8aайладаÑ\85а Ñ\85Ñ\8cаÑ\8cжина Ð´Ð¾Ð»Ñ\83 Ð½Ð¸Ñ\81даÑ\80Ñ\88 Ð¾Ñ\86Ñ\83 Ñ\82еÑ\80гаме Ð¼Ð¾Ð³Ó\80ам чура',
 'tog-ccmeonemails' => 'Дlадахьийта суна исанна кехат, аса дохьуьйтуш долу кхечу декъашхошна.',
 'tog-diffonly' => 'Ма гайта агlон чулацам шина башхонца цхьатерра йолуш',
 'tog-showhiddencats' => 'Гайта къайлаха йолу категореш',
@@ -439,19 +439,19 @@ $messages = array(
 'december-date' => 'Декабрь $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категори|Категореш}}',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категореш}}',
 'category_header' => 'Агlонаш оц категоречохь «$1»',
 'subcategories' => 'Бухаркатегореш',
 'category-media-header' => 'Файлаш оцу категори чохь «$1»',
 'category-empty' => "''ХӀара категори хӀинца йаьсса ю.''",
-'hidden-categories' => '{{PLURAL:$1|Къайлаха категори|Къайлаха йолу категореш}}',
+'hidden-categories' => '{{PLURAL:$1|1=Къайлаха категори|Къайлаха йолу категореш}}',
 'hidden-category-category' => 'Къайлаха йолу категореш',
-'category-subcat-count' => '{{PLURAL:$2|ХӀокх категори чохь ю хӀокхуьна бухар категори.|{{PLURAL:$1|Гойташ $1 бухар категори|Гойту $1 бухар категореш|Гойту $1 бухар категори}} оцу $2.}}',
-'category-subcat-count-limited' => 'Хlокх категори чохь {{PLURAL:$1|$1 бухар категори|$1 бухар категореша|$1 бухар категореш}}.',
-'category-article-count' => '{{PLURAL:$2|ХӀокх категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|Гойташ $1 агӀо|Гойту $1 агӀонаш|Гойту $1 агӀонаш}} хӀокх категорешца кху $2.}}',
-'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 агӀо|$1 агӀонаш|$1 агӀонаш}}.',
-'category-file-count' => '{{PLURAL:$2|ХӀокх категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойта $1 файл|Гойту $1 файл|Гойту $1 файлаш}} хӀокх категорешца кху $2.}}',
-'category-file-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 файл|$1 файл|$1 файлаш}}.',
+'category-subcat-count' => '{{PLURAL:$2|1=ХӀокху категори чохь ю хӀокхуьна бухар категори.|ХӀокху категори чохь ю $1 {{PLURAL:$1|1=бухара категори|бухара категореш}} $2 массо нах.}}',
+'category-subcat-count-limited' => 'Хlокх категори чохь {{PLURAL:$1|$1 бухар категори|$1 бухар категореш|$1 бухар категореша}}.',
+'category-article-count' => '{{PLURAL:$2|1=ХӀокху категори чохь яц цхьа агӀо бе.|{{PLURAL:$1|1=Гойташ $1 агӀо|Гойту $1 агӀонаш}} хӀокху категорешца кху $2.}}',
+'category-article-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|1=$1 агӀо|$1 агӀонаш}}.',
+'category-file-count' => '{{PLURAL:$2|ХӀокху категори чохь цхьа файл бе яц.|{{PLURAL:$1|Гойта $1 файл|Гойту $1 файлаш|Гойту $1 файл}} хӀокху категорешца кху $2.}}',
+'category-file-count-limited' => 'ХӀокх категори чохь {{PLURAL:$1|$1 файл|$1 файлаш|$1 файл}}.',
 'listingcontinuesabbrev' => '(кхин дlа)',
 'index-category' => 'Меттигтерахьйо агlонаш',
 'noindex-category' => 'ДӀахьушйоцу агӀонаш',
@@ -463,7 +463,7 @@ $messages = array(
 'newwindow' => '(керлачу корехь)',
 'cancel' => 'Цаоьшу',
 'moredotdotdot' => 'Кхин дӀа…',
-'morenotlisted' => 'Ð\9aÑ\85ин Ñ\85Ó\80Ñ\83ма Ñ\8fÑ\86',
+'morenotlisted' => 'Ð¥Ó\80аÑ\80а Ð¼Ð¾Ð³Ó\80а Ð±Ñ\83Ñ\8cззина Ð±Ð°Ñ\86.',
 'mypage' => 'Долахь йолу агӀо',
 'mytalk' => 'Сан дийцаре агӀо',
 'anontalk' => 'Дийцаре хӀокху IP-адресна',
@@ -476,18 +476,17 @@ $messages = array(
 'qbedit' => 'Нисйé',
 'qbpageoptions' => 'Агlо нисйар',
 'qbmyoptions' => 'Хьан нисдарш',
-'qbspecialpages' => 'Леррина агlонаш',
 'faq' => 'СиХХ',
 'faqpage' => 'Project:СиХХ',
 
 # Vector skin
-'vector-action-addsection' => 'Тlетоха хьедар',
+'vector-action-addsection' => 'ТӀетоха хьедар',
 'vector-action-delete' => 'ДӀаяккха',
 'vector-action-move' => 'Цlе хийца',
 'vector-action-protect' => 'Гlаролла дé',
 'vector-action-undelete' => 'Меттахlоттадé',
 'vector-action-unprotect' => 'ГӀароллех къаста',
-'vector-simplesearch-preference' => 'ШÑ\83Ñ\8cйÑ\80а Ð»Ð°Ñ\85аÑ\80ан Ñ\85Ñ\8cеÑ\85аÑ\80 Ð»Ð°Ñ\82а Ð´Ðµ (декÑ\8aа Â«Ð¥Ñ\8cÑ\83Ñ\88йеÑ\80г» ÐºÐµÑ\87йаÑ\80Ñ\86а)',
+'vector-simplesearch-preference' => 'Ð\90Ñ\82Ñ\82а Ð»Ð°Ñ\85аÑ\80ан Ñ\85Ñ\8cеÑ\85аÑ\80 Ð»Ð°Ñ\82а Ð´Ðµ («Ð\92екÑ\82оÑ\80ан» ÐºÐµÑ\87Ñ\8fÑ\80на Ð±ÐµÐ½)',
 'vector-view-create' => 'Кхоллар',
 'vector-view-edit' => 'Нисйé',
 'vector-view-history' => 'АгӀона хийцамаш',
@@ -499,7 +498,7 @@ $messages = array(
 
 'navigation-heading' => 'Навигацин меню',
 'errorpagetitle' => 'ГӀалат',
-'returnto' => 'Юхагlо оцу агlоне $1.',
+'returnto' => 'ЮхагӀо оцу агӀоне $1.',
 'tagline' => 'Гlирс хlокхуьна бу {{grammar:genitive|{{SITENAME}}}}',
 'help' => 'ГӀо',
 'search' => 'Лаха',
@@ -520,7 +519,7 @@ $messages = array(
 'delete' => 'ДӀаяккха',
 'deletethispage' => 'ДӀаяккха хӀара агӀо',
 'undeletethispage' => 'ХӀара агӀо меттахӀоттор',
-'undelete_short' => 'Меттахlоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш|нисйинарш}}',
+'undelete_short' => 'МеттахӀоттайé $1 {{PLURAL:$1|1=нисйинарг|нисйинарш}}',
 'viewdeleted_short' => 'Хьажар {{PLURAL:$1|$1 дlадаьккхина нийсдар|$1 дlадаьхна нийсдарш|$1 дlадаьхна нийсдарш}}',
 'protect' => 'Гlаролла дé',
 'protect_change' => 'хийца',
@@ -543,7 +542,7 @@ $messages = array(
 'mediawikipage' => 'Хьагайта хааман агӀо',
 'templatepage' => 'Хьажа кепа агӀоне',
 'viewhelppage' => 'Схьаэца гӀо',
-'categorypage' => 'Ð¥Ñ\8cажа ÐºÐ°Ñ\82егоÑ\80еÑ\88и агӀоне',
+'categorypage' => 'Ð¥Ñ\8cажа ÐºÐ°Ñ\82егоÑ\80еÑ\88ан агӀоне',
 'viewtalkpage' => 'Хьажа дийцаре',
 'otherlanguages' => 'Кхечу маттахь дерш',
 'redirectedfrom' => '(ДӀасахьажийна кху $1)',
@@ -566,7 +565,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).
 'aboutsite' => '{{grammar:genitive|{{SITENAME}}}} лаьцна',
 'aboutpage' => 'Project:Цуьнах лаьцна',
-'copyright' => 'Чулацам лело мега догӀуш хиларца оцу $1.',
+'copyright' => 'Чулацам лело мега $1 лицензица (кхениг билгалйина яцахь).',
 'copyrightpage' => '{{ns:project}}:Авторан бакъонаш',
 'currentevents' => 'ХӀинцлера хилларш',
 'currentevents-url' => 'Project:ХӀинцлера хилларш',
@@ -584,7 +583,7 @@ $1',
 
 'badaccess' => 'ТӀекхачарехь гӀалат',
 'badaccess-group0' => 'Шуьга кхочуш далур дац дехарца деш дерг',
-'badaccess-groups' => 'Дехарца деш дерг кхочуш далундерш бу хӀара декъашхой оцу {{PLURAL:$2|тобанашах|тобанах}} $1.',
+'badaccess-groups' => 'Дехарца деш дерг кхочуш далундерш бу хӀара декъашхой оцу {{PLURAL:$2|1=тобанашах|тобанах}} $1.',
 
 'versionrequired' => 'Оьшу MediaWiki тайпанара $1',
 'versionrequiredtext' => 'Болх бан хӀоку агӀонца оьшу MediaWiki тайпан $1. Хьажа. [[Special:Version|лелочу тайпанара башхонах лаьцна хаам]].',
@@ -594,25 +593,25 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Хьост — «$1»',
 'youhavenewmessages' => 'Хьуна кхечи $1 ($2).',
-'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|$3 декъашхочунгара|$3 декъашхошкара|$3 декъашхошкара}} ($2).',
+'youhavenewmessagesfromusers' => 'Хьуна кхачанна $1 {{PLURAL:$3|1=$3 декъашхочунгара|$3 декъашхошкара}} ($2).',
 'youhavenewmessagesmanyusers' => 'Хьона еъна $1 дукху декъашхошкар ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|керла хаам}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|тӀаьхьара бина хийцамаш}}',
+'newmessageslinkplural' => '{{PLURAL:$1|керла хаам|999=керла хаамаш}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|тӀаьхьара бина хийцам|999=тӀаьхьара бина хийцамаш}}',
 'youhavenewmessagesmulti' => 'Хьуна кхаьчна керла хаам оцу $1',
 'editsection' => 'нисйé',
 'editold' => 'нисйé',
-'viewsourceold' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 Ð¸Ñ\88аÑ\80е',
+'viewsourceold' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 ÐºÐ¾Ð´е',
 'editlink' => 'нисйé',
-'viewsourcelink' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 Ð¸Ñ\88аÑ\80е',
+'viewsourcelink' => 'Ñ\85Ñ\8cажа Ð¹Ð¾Ð»Ñ\83Ñ\88 Ð¹Ð¾Ð»Ñ\83Ñ\87Ñ\83 ÐºÐ¾Ð´е',
 'editsectionhint' => 'Нисде дакъа: $1',
 'toc' => 'Чулацам',
 'showtoc' => 'гайта',
 'hidetoc' => 'къайлаяккха',
 'collapsible-collapse' => 'къайлаяккха',
 'collapsible-expand' => 'хьайаста',
-'thisisdeleted' => 'Хьажа йа меттахlоттайé $1?',
-'viewdeleted' => 'Ð¥Ñ\8cалÑ\85Ñ\85Ñ\8cожи $1?',
-'restorelink' => '{{PLURAL:$1|$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
+'thisisdeleted' => 'Хьажа я меттахӀоттайé $1?',
+'viewdeleted' => 'Ð¥Ñ\8cожий $1?',
+'restorelink' => '{{PLURAL:$1|1=$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
 'feedlinks' => 'Оцу хатlаьхь:',
 'feed-invalid' => 'Тайпан нийсадоцу талол оцу куьгтаlорна.',
 'feed-unavailable' => 'Хаитарца йолу асанаш тlекхочучехь яц',
@@ -622,7 +621,7 @@ $1',
 'page-atom-feed' => '«$1» — Atom-аса',
 'feed-atom' => 'Атом',
 'feed-rss' => 'RSS',
-'red-link-title' => '$1 (ишта агlо йоцуш йу)',
+'red-link-title' => '$1 (ишта агӀо йоцуш ю)',
 'sort-descending' => 'Ма хийла нисяр',
 'sort-ascending' => 'Ма хила нисяр',
 
@@ -631,7 +630,7 @@ $1',
 'nstab-user' => 'Декъашхо',
 'nstab-media' => 'Медиа агӀо',
 'nstab-special' => 'Белха агlо',
-'nstab-project' => 'Ð\9aÑ\85олламеÑ\85',
+'nstab-project' => 'Ð\9fÑ\80оекÑ\82аÑ\85 Ð»Ð°Ñ\8cÑ\86на',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Хаам',
 'nstab-template' => 'Кеп',
@@ -640,6 +639,9 @@ $1',
 
 # Main script and global functions
 'nosuchaction' => 'Ишта дийриг дац',
+'nosuchactiontext' => 'ДӀаязйина URL нийса яц.
+URL язъеш гӀалат даьлла хила мега.
+Иза кхин {{SITENAME}} пороектехь гӀалат хила мега.',
 'nosuchspecialpage' => 'Иштта белхан агӀо яц',
 'nospecialpagetext' => '<strong>Иштта белхан агӀо яц.</strong>
 
@@ -648,12 +650,17 @@ $1',
 # General errors
 'error' => 'Гlалат',
 'databaseerror' => 'Гlалат хаамийн бухера',
+'databaseerror-text' => 'Хаамийн базан гӀалат даьлла.
+Иза хила мега программин гӀалат.',
+'databaseerror-textcl' => 'Хаамийн базан гӀалат даьлла.',
 'databaseerror-query' => 'Дехар: $1',
 'databaseerror-function' => 'Функци: $1',
 'databaseerror-error' => 'ГӀалат: $1',
 'laggedslavemode' => 'Тергам бе: агӀона чохь керла йаьхинарш ца хила мега.',
 'readonly' => 'Блоктоьхна дӀайаздар хаамийн бухе',
 'enterlockreason' => 'Билгал де блоктохаран бахьна а и чекх йолу хан а.',
+'readonlytext' => 'АгӀонаш тӀетохар а кхин хийцамаш барна а блоктоьхна:
+Блокоьхначо биттина хаам: $1.',
 'missing-article' => 'ХӀокху чохь кароезаш йолу хьан дехарца йозан агӀонаш цакарийна «$1» $2.
 
 Иштнарг наггахь хуьлу хьажораг дӀаяьккхина елахь я хийцам бина тиша хьажорагца дехьа гӀо гӀоьртича.
@@ -677,22 +684,24 @@ $1',
 'formerror' => 'ГӀалат: йиш яц хӀара формаш дӀакхачо',
 'badarticleerror' => 'И хӀума кхочушъ дан йиш яц хӀокху агӀонехь.',
 'cannotdelete' => 'Цатарло дӀаяккха я цӀе хийца «$1».
-АгӀо хьалхо дӀаяккхина хила тарло',
+АгӀо хьалхо дӀаяьккхина хила тарло',
 'cannotdelete-title' => 'Цатарло агӀо дӀаяккха «$1»',
+'delete-hook-aborted' => 'Нисдар юхадаьккхина тӀехьожучо.
+ХӀу бахьна ду билгал дина дац.',
+'no-null-revision' => '«$1» агӀона нисдар дан цаделира',
 'badtitle' => 'Цамегаш йолу цlе',
 'badtitletext' => 'Дехарца йолу агlонан цlе нийса яц, йаьсса ю, хила мега нийса ца хlоттийна меттаюкъар йа юкъарвики цlе. Хила мега, цlарца цамагош йолу саберг.',
-'perfcached' => 'Лахара хаам схьаэца кэша чура цундела тӀехьарлаьра хийцамаш гойтуш бац. Кэша чохь латтаё оцул $1  кӀезиг {{PLURAL:$1|дӀаяздар|дӀаяздарш}}.',
-'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара карла ялла $1. Кэша чохь латта до оцул $4 кӀезиг {{PLURAL:$4|дӀаяздар|дӀаяздарш}}.',
+'perfcached' => 'Лахара хаам схьаэца кэша чура цундела тӀехьарлаьра хийцамаш гойтуш бац. Кэша чохь латтаё оцул $1  кӀезиг {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}}.',
+'perfcachedts' => 'Лахара хаам схьаэца кэша чура иза тӀаьхьара карла ялла $1. Кэша чохь латта до оцул $4 кӀезиг {{PLURAL:$4|1=дӀаяздар|дӀаяздарш}}.',
 'querypage-no-updates' => 'ХӀинца хӀара агӀо карлаякхар дӀадайина ду.
 Кхузахь гайтина болу хаамаш карла боккхур бац.',
-'wrong_wfQuery_params' => 'Хилийта йиш йоцу параметраш хӀокху функцин wfQuery()<br />
-Функци: $1<br />
-Жоп дехар: $2',
 'viewsource' => 'Хьажар',
 'viewsource-title' => 'Агӏона $1 дуьххьарлера йозане хьажар',
 'actionthrottled' => 'Сиххалин доза тохар',
+'actionthrottledtext' => 'Спам цахилийта хӀара дешдерг кӀезиг хенахь дукху ца дайта дихкина ду. Дехар до массийта минот яьлча гӀорта.',
 'protectedpagetext' => 'ХӀара агӀо дӀакъойлина йу рé цадаккхийта.',
 'viewsourcetext' => 'Хьоьга далундерг хьажар а дезахь хlокху агlон чура йоза хьаэцар:',
+'viewyourtext' => "Хьан йиш ю '''хьой нисдинчу''' дӀадолалун йозе хьажа а цуна копи ян а:",
 'protectedinterface' => 'ХӀара схьгайтарна гӀирса хаамаш латтош йолу агӀо ю. Куьйгалхошна бен иза хийца цало.',
 'editinginterface' => "'''Тергам бе:''' Ахьа таеш ю интерфейсан йоза долу агӀо програмин латторан.
 Цуна бина хийцам хьокху википедин кхечу декъашхошна гур бу.
@@ -704,7 +713,8 @@ $1',
 'mycustomjsprotected' => 'Хьан бакъо яц JavaScript агӀо тая.',
 'myprivateinfoprotected' => 'Хьайн долара хаамна хийцам ба хьа йиш яц',
 'mypreferencesprotected' => 'Хьай гӀирс нисбан хьа бакъо яц.',
-'exception-nologin' => 'Ахьа хӀой вовзийтина/йовзийтина вац/яц',
+'ns-specialprotected' => 'ХӀокху «{{ns:special}}» цӀерийн меттигашан агӀонаш таян йиш яц.',
+'exception-nologin' => 'ХӀинца а ахьа системин чохь болх беш бац',
 
 # Virus scanner
 'virus-scanfailed' => 'сканиран гӀалат (код $1)',
@@ -715,6 +725,8 @@ $1',
 
 Цхьайолу агӀонаш чохь хьо хьай цӀарца болх беш сана хила тарло ишта ца хилийта керлаякха браузеран кэш.",
 'welcomeuser' => 'Марша ДогӀийла, $1!',
+'welcomecreation-msg' => 'Хьан декъашхочун дӀаяздар кхоьлина.
+Диц ма делахь {{SITENAME}} сайтан [[Special:Preferences|декъашхочун гӀирс]].',
 'yourname' => 'Декъашхочун цӀе:',
 'userlogin-yourname' => 'Декъашхочун цӀе',
 'userlogin-yourname-ph' => 'Язъе декъашхочун цӀе',
@@ -726,28 +738,28 @@ $1',
 'yourpasswordagain' => 'Юха язъе пароль:',
 'createacct-yourpasswordagain' => 'Бакъе пароль',
 'createacct-yourpasswordagain-ph' => 'Кхин цкъа язъе пароль',
-'remembermypassword' => 'Даглаца сан дӀавазвалар/ялар хӀокху гӀулкхдечу гӀирса тӀяхь (цхьан $1 {{PLURAL:$1|ден|динахь|динахь}})',
+'remembermypassword' => 'Даглаца сан дӀаяздар хӀокху компьютеран тӀехь (цхьан $1 {{PLURAL:$1|динахь}})',
 'userlogin-remembermypassword' => 'Дагахь латт ве/е со',
 'userlogin-signwithsecure' => 'Ларийна цхьаьнакхетар',
 'yourdomainname' => 'Хьан машан меттиг:',
 'password-change-forbidden' => 'Хьан йиш яц хӀокху вики чохь пароль хийца.',
 'login' => 'Системин чугӀо',
-'nav-login-createaccount' => 'Ð\92овзийÑ\82а/Ð\99овзийÑ\82а Ñ\85Ñ\8cой / Ð´Ó\80авазло/дÓ\80аÑ\8fзло',
-'loginprompt' => 'Ахьа бакъо йала йеза оцу «cookies» хьайна вовзийта лаахь гlирсан.',
+'nav-login-createaccount' => 'СиÑ\81Ñ\82емин Ñ\87Ñ\83гÓ\80о / Ð´Ó\80аÑ\8fздаÑ\80 ÐºÑ\85олла',
+'loginprompt' => 'Ахьа бакъо яла еза оцу «cookies» хьайна системин чохь болхбан лаахь.',
 'userlogin' => 'Довзийтар я декъашхочун дӀаяздар кхоллар',
 'userloginnocreate' => 'Довзийта',
 'logout' => 'Болх дӀаберзор',
 'userlogout' => 'Болх дӀаберзор',
-'notloggedin' => 'Хьо вовзийта/йовзийта гlирсан',
+'notloggedin' => 'ХӀинца а ахьа системин чохь болх беш бац',
 'userlogin-noaccount' => 'Декъашхочун дӀаяздар дац хьа?',
-'userlogin-joinproject' => '{{grammar:genitive|{{SITENAME}}}} юкъахӀотта',
+'userlogin-joinproject' => 'Проектехь дӀаяздар кхоллар',
 'nologin' => "Декъашхочун дӀаяздар дац хьа? '''$1'''.",
 'nologinlink' => 'Кхолла декъашхочун дӀаяздар',
 'createaccount' => 'Кхолла декъашхочун дӀаяздар',
-'gotaccount' => "Дlавазвелла вуй хьо? '''$1'''.",
+'gotaccount' => "ДӀаяздар кхоьллин ахь? '''$1'''.",
 'gotaccountlink' => 'Довзийта',
 'userlogin-resetlink' => 'Чуволу/йолу хаам биц бела?',
-'userlogin-resetpassword-link' => 'Пароль кхоссар',
+'userlogin-resetpassword-link' => 'Пароль кхоссар?',
 'helplogin-url' => 'Help:Системин довзийтар',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Системин чудаха гӀодар]]',
 'userlogin-loggedin' => 'Хьо {{GENDER:$1|$1}} цӀарца чохь ву/ю.
@@ -769,9 +781,9 @@ $1',
 'createacct-submit' => 'Кхолла декъашхочун дӀаяздар',
 'createacct-another-submit' => 'Кхолла декъашхочун кхин дӀаяздар',
 'createacct-benefit-heading' => '{{SITENAME}} кхолийна хьо санначу наха.',
-'createacct-benefit-body1' => '{{PLURAL:$1|нисдар|нисдарш}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|яззам|яззамаш}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|декъашхо|декъашхой}} тӀаьхьарачу хенахь',
+'createacct-benefit-body1' => '{{PLURAL:$1|1=нисдар|нисдарш}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|1=яззам|яззамаш}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|1=декъашхо|декъашхой}} тӀаьхьарачу хенахь',
 'badretype' => 'Ахьа язъен ишарш цхьатера яц',
 'userexists' => 'Ахьа язъен декъашхочун цӀе йолуш ю, дехар до кхин цӀе харжар.',
 'loginerror' => 'Гlалат ду декъашхо вовзарехь/йовзарехь',
@@ -782,40 +794,57 @@ $1',
 'noname' => 'Ахьа магийтина йолу декъашхочун цӀе билгал йина яц.',
 'loginsuccesstitle' => 'Хьан пароль тӀеэца, марша догӀила Википеди чу!',
 'loginsuccess' => 'Хlинца ахьа болх бó оцу цlарца $1.',
-'nosuchuser' => 'ЦlаÑ\80Ñ\86а $1 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85о Ð²Ð°Ñ\86\8fц.
-Декъашхой цlераш хаалуш йу дlайазвалрца/яларца элраш.
-Нийса юьй хьажа цlе йа [[Special:UserLogin/signup|дlаяздар кхолла керла]].',
+'nosuchuser' => 'Ð\98Ñ\88Ñ\82Ñ\82а $1 Ñ\86Ó\80е Ð¹Ð¾Ð»Ñ\83Ñ\88 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н Ð´Ó\80аÑ\8fздаÑ\80 Ð´Ð°ц.
+Декъашхой цӀераш хаалуш ю дӀаяздарца элпаш.
+Нийса юьй хьажа цӀе я [[Special:UserLogin/signup|дӀаяздар кхолла керла]].',
 'nosuchusershort' => 'Ишта «$1» цӀе йолу декъашхо вац/яц. Хьажа цӀе нийса язйина юй.',
 'nouserspecified' => 'Ахьа декъашхочун цӀе билгал ян езаш ю.',
 'login-userblocked' => 'ХӀара декъашхо блоктоьхна ву/ю. Системин чувала/яла магийна дац.',
 'wrongpassword' => 'Ахьа язйина йолу пароль нийса яц. Хьажа юху цхьаъз.',
 'wrongpasswordempty' => 'Дехар до, язъе еса йоцу пароль.',
-'mailmypassword' => 'Яийта керла пароль электронан почтехула',
+'passwordtooshort' => 'Пароль хилла еза $1 {{PLURAL:$1|1=символ|символаш}} йолуш.',
+'password-name-match' => 'Язъен пароль декъашхочун дӀаяздарал башха хила еза.',
+'password-login-forbidden' => 'Иштта декъашхочун цӀе а пароль а лелаян цамаго.',
+'mailmypassword' => 'Пароль кхоссар',
 'passwordremindertitle' => 'Декъашхочун {{grammar:genitive|{{SITENAME}}}}  пароль дагайаийтар',
 'noemail' => 'ЦӀе $1 йолу декъашхочун электронни адрес яздина дац.',
 'noemailcreate' => 'Ахьа нийса электронни почтан адрес дӀаяздан деза',
 'passwordsent' => 'Керла пароль декъашхочун $1 электронни адрес тӀе дӀахьажина. Дехар до, керла пароль еъча юху системин чугӀо.',
 'blocked-mailpassword' => 'Хьан IP-адрес ца тадарш дан магийна дац, цуьндела пароль меттахӀотош йолу функци блоктоьхна ю.',
+'eauthentsent' => 'ДӀаяздинчу электронан адрес тӀе хаам баийтина.
+Даиман хаамаш баийта хааман чохь де бохург дан деза адрес хьай хилар бакъдеш.',
 'throttled-mailpassword' => 'Пароль дага йоуьйту функци {{PLURAL:$1|тӀехьара $1 сахьтехь}} лелина.
 Зулам цахилийта $1 {{PLURAL:$1|сахьтан чохь}} цӀа бен функци лело йиш яц.',
 'mailerror' => 'Кехат дохьуьйтуш гӀалат ду: $1',
-'emailauthenticated' => 'Хьан почтан адрес бакъдина $2 $3.',
+'emailauthenticated' => 'Хьан электронан почтан адрес бакъдина $2 $3.',
+'emailnotauthenticated' => 'Хьан электронан почтан адрес хӀинца а бакъдина дац.
+Хаамаш кхоьхьуьйтура бац.',
+'emailconfirmlink' => 'Бакъде хьай электронан почтан адрес',
+'emaildisabled' => 'ХӀокху сайтан таро яц электронан почте хаамаш бахьийта.',
 'accountcreated' => 'Декъашхочун дӀаяздар кхоьллина',
 'accountcreatedtext' => 'Кхоьллина декъашхочун [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|дийцаре.]]) дӀаяздар.',
+'createaccount-title' => '{{SITENAME}}: декъашхочун дӀаяздар кхоллар',
+'usernamehasherror' => 'Декъашхочун цӀеран юкъахь хийла ца еза «цаца»',
+'login-throttled' => 'Хьо дукха гӀиртира.
+Дехар до, собар де $1 юха гӀортале.',
+'login-abort-generic' => 'Сестемин довзийта тарцаделира',
 'loginlanguagelabel' => 'Мотт: $1',
 
 # Change password dialog
-'resetpass' => 'Хийца пароль',
+'changepassword' => 'Хийца пароль',
 'resetpass_text' => '<!-- Кхузахь язъде хьай йоза -->',
 'resetpass_header' => 'Хийца дӀаяздаран пароль',
 'oldpassword' => 'Шираелла пароль:',
 'newpassword' => 'Керла пароль:',
 'retypenew' => 'Юха язъйе керла пароль:',
+'resetpass_submit' => 'Пароль дӀахӀоттийна системин чугӀо',
+'changepassword-success' => 'Хьан пароль кхиамца хийцина!',
 'resetpass_forbidden' => 'Пароль хийца йиш яц',
 'resetpass-no-info' => 'ХӀара агӀо лело системин чугӀо.',
 'resetpass-submit-loggedin' => 'Хийца пароль',
 'resetpass-submit-cancel' => 'Цаоьшу',
 'resetpass-temp-password' => 'Цхьан хана пароль:',
+'resetpass-abort-generic' => 'Пароль хийцар дӀахедар',
 
 # Special:PasswordReset
 'passwordreset' => 'Пароль кхоссар',
@@ -823,7 +852,14 @@ $1',
 'passwordreset-legend' => 'Пароль кхоссар',
 'passwordreset-username' => 'Декъашхочун цӀе:',
 'passwordreset-domain' => 'Домен:',
+'passwordreset-capture' => 'Хьажа беанчу хааме?',
 'passwordreset-email' => 'Электронни почтан адрес:',
+'passwordreset-emailtitle' => '{{SITENAME}}: декъашхочун дӀаяздарх лаьцна хаам',
+'passwordreset-emailelement' => 'Декъашхочун цӀе: $1
+Ханна йолу пароль: $2',
+'passwordreset-emailsent' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.',
+'passwordreset-emailsent-capture' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш. 
+цуна йозане хьажа йиш ю лахахь.',
 
 # Special:ChangeEmail
 'changeemail' => 'Хийца электрони почт',
@@ -842,10 +878,11 @@ $1',
 'resettokens-text' => 'Хьан йиш ю токенаш кхосса, цара йиш хуьлуьйту цхьаболу долара хаамашна тӀекхача, уьш ю хьан дӀаяздар ца вовшахтесна. 
 
 Хьона иза оьшу, ахьа хьай токенаш цхьам гучу яьхна елахь я хьан аккаунт йохийна елахь.',
+'resettokens-no-tokens' => 'Кхосса токенаш яц.',
 'resettokens-legend' => 'Токенаш кхоссар',
 'resettokens-tokens' => 'Токенаш:',
 'resettokens-token-label' => '$1 (карара маьӀна: $2)',
-'resettokens-watchlist-token' => 'Ð\92еб-каналан (Atom/RSS) Ñ\82окен  [[Special:Watchlist|Ñ\85Ñ\8cан Ñ\82еÑ\80гаме Ð¼Ð¾Ð³Ó\80ам чура агӀонашна хийцамаш бар]]',
+'resettokens-watchlist-token' => 'Ð\92еб-каналан (Atom/RSS) Ñ\82окен  [[Special:Watchlist|Ñ\85Ñ\8cан Ñ\82еÑ\80гаме Ð¼Ð¾Ð³Ó\80анан чура агӀонашна хийцамаш бар]]',
 'resettokens-done' => 'Токенаш кхиссина.',
 'resettokens-resetbutton' => 'Къастина токенаш кхоссар',
 
@@ -873,19 +910,26 @@ $1',
 'summary' => 'Хийцамех лаьцна:',
 'subject' => 'Дlахьедар/коьрта могlа:',
 'minoredit' => 'Жим хийцам',
-'watchthis' => 'Латайе хlара агlо тергаме могlам юкъа',
+'watchthis' => 'Латайе хӀара агӀо тергаме могӀанан юкъахь',
 'savearticle' => 'Дlайазъé агlо',
 'preview' => 'Хьалха муха ю хьажа',
 'showpreview' => 'Хьалха муха ю хьажар',
+'showlivepreview' => 'Сиха хьажар',
 'showdiff' => 'Хlоттина болу хийцам',
 'anoneditwarning' => "'''Тергам бе''': Ахьа хьай цӀарца тадарш деш дац. Хьан IP-адрес дӀаяздина хира ду хӀокху агӀон истори чу.",
+'anonpreviewwarning' => "''Системин чу цагӀахь хьан IP-адрес агӀона истори чу дӀаяз лур ду.''",
+'missingcommenttext' => 'Дехар до дӀаязбе хайн хаам лахахь.',
 'summary-preview' => 'Цуьнах лаьцна хирду:',
+'subject-preview' => 'Коьрта могӀа хира бу:',
 'blockedtitle' => 'Декъашхочун блоктоьхана',
+'blockednoreason' => 'бахьана билгалдина дац',
+'whitelistedittext' => 'Ахьа да деза $1 агӀона хийцамаш бан.',
 'nosuchsectiontitle' => 'Дакъа каро йиш яц.',
-'nosuchsectiontext' => 'Хьо гӀерта дуцу дакъа тадан.
+'nosuchsectiontext' => 'Хьо гӀерта доцу дакъа тадан.
 Хьо хӀокху агӀоне хьоьжучу хенахь иза кхечухьа деккхина я дӀадаьккхина хела тарло.',
 'loginreqtitle' => 'Хьай цӀарца чугӀо',
 'loginreqlink' => 'Логин',
+'loginreqpagetext' => 'Ахьа да деза $1, кхин агӀонаш хьажа.',
 'accmailtitle' => 'Пароль дlаяхьийтина.',
 'accmailtext' => "Пароль декъашхочуьна [[User talk:$1|$1]], йина ша шех хитта делла чу элпашах, дlаяхийтина хьокху $2 адрес тӀе.
 
@@ -894,10 +938,10 @@ $1',
 'newarticletext' => "Хьо веана хьажоригци хlокху агlон тlе, хlара агlо хlинца йоцаш ю.
 Нагахь иза кхолла лаахь, хlотта де лахо гуш долу корехь йоза (мадарра хьажа. [[{{MediaWiki:Helppage}}|гlон агlон чу]]).
 Нагахь гlалат даьлла нисвелляхь кхузе, атта тlе тlаlа йе '''юха йоккхуриг''' хьай гlирса тlяхь.",
-'anontalkpagetext' => "----''Хlара дийцаре агIо къайлаха волу декъашхочуьна  ю, хlинца дӀавазвина/дӀаязйина воцуш/йоцуш, я лелош воцуш/йоцуш.
-ЦÑ\83ндела Ð¸Ð·Ð° Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а Ð»ÐµÐ»Ð¾Ñ\88 Ð´Ñ\83 Ñ\82еÑ\80аÑ\85Ñ\8cÑ\86а IP-долÑ\83 Ð¼ÐµÑ\82аг.
+'anontalkpagetext' => "----''ХӀара дийцаре агӀо къайлаха декъашхочуьна ю, хӀинца дӀаяздар доцу, я лелош воцуш/йоцуш.
+ЦÑ\83ндела Ð¸Ð·Ð° Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а Ð»ÐµÐ»Ð¾Ñ\88 Ð´Ñ\83 Ñ\82еÑ\80аÑ\85Ñ\8cÑ\86а IP-адÑ\80еÑ\81.
 Иза терахь долу меттиг хила мега кхечу декъашхойчух терра.
-Нагахь хьо къайлах волу декъашхо валахь хьайна хаам кхаьчна аьлла хеташн, хьуна хьажийна доцуш, дехар до, кхолла хьай меттиг кху чохь[[Special:UserLogin/signup|дlавазло]] йа [[Special:UserLogin|хьой вовзийта/йовзийта]],",
+Нагахь хьо къайлах волу декъашхо валахь хьайна хаам кхаьчна аьлла хеташн, хьуна хьажийна доцуш, дехар до, кхолла хьай меттиг кху чохь[[Special:UserLogin/signup|дӀаяздар кхоллар]] я [[Special:UserLogin|системин чугӀо]],",
 'noarticletext' => "Хlокх хан чохь кху агlонца йоза дац.
 Шуьга далундерг [[Special:Search/{{PAGENAME}}|лахар ишта хьехош йолу цlе]] кхечу яззамашкахь,
 <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лахар кхечу тептаршкахь],
@@ -907,16 +951,23 @@ $1',
 йа <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лаха оцуьнах терадерг кхечу тептаршкахь].</span>',
 'missing-revision' => 'АгӀона «{{PAGENAME}}» верси $1 яц.
 
-Ишта хуьйла ширелла дӀайаьккхина агӀонан хьажориган дихьа делча.
+Ишта хуьйла ширелла дӀаяьккхина агӀонан хьажораган дихьа делча.
 Ма-дара хила мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀайаьхарш йолу тептар] чохь.',
-'userpage-userdoesnotexist' => 'Ишта дlайазвар «<nowiki>$1</nowiki>» хlинца дац. Хьажа билгал, хьуна бакъалла лаьи кхолла йа хийцам ба хlокху агlон.',
+'userpage-userdoesnotexist' => 'Ишта декъашхочун дӀаяздар «<nowiki>$1</nowiki>» хӀинца дац. Хьажа билгал, хьуна бакъалла лаьий кхолла я хийцам ба хӀокху агӀон.',
+'userpage-userdoesnotexist-view' => '«$1» ишта декъашхочун дӀаяздар дац.',
+'blocked-notice-logextract' => 'ХӀара декъашхочун дӀаяздар блоктоьхна ду.
+Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
+'usercssyoucanpreview' => "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла CSS-файл Ӏалаш яле.",
+'userjsyoucanpreview' => "'''ДӀаалар.''' ТӀетаӀае кнопка «{{int:showpreview}}», хьажа хьай керла JS-файл Ӏалаш яле.",
+'usercsspreview' => "'''Дагахь латтаде хӀара хьа CSS-файле хьалха хьажар хилар, иза хӀинца а Ӏалаш йина яц!'''",
+'userjspreview' => "'''Дагахь латтаде хӀара хьа javascript-файле хьалха хьажар хилар, иза хӀинца а Ӏалаш йина яц!'''",
 'sitecsspreview' => "'''ХӀара хьалх хьажар ду, хӀара CSS.'''
 '''хӀинца Ӏалашдина дац!'''",
 'sitejspreview' => "'''ХӀара хьалх хьажар ду, хӀара JavaScript-код.'''
 '''хӀинца Ӏалашйина яц!'''",
 'updated' => '(Карла йаькхина)',
 'note' => "'''Билгалдаккхар:'''",
-'previewnote' => "'''Ð¥Ó\80аÑ\80а Ñ\85Ñ\8cалÑ\85 хьажар ду, йоза хӀинца язданза ду!'''",
+'previewnote' => "'''Ð¥Ó\80аÑ\80а Ñ\85Ñ\8cлÑ\85а хьажар ду, йоза хӀинца язданза ду!'''",
 'continue-editing' => 'Кхин дӀа тадар',
 'session_fail_preview' => 'Сервер лара ца йира ахьа бина хийцамаш дӀаязба. Кхиъ цкъа а гӀортахь.
 Нагахь санна хӀара гӀалат юха а далахь, [[Special:UserLogout|сеанс дӀа а къоьвлин]], юха а системин чувала/яла хьажа.',
@@ -932,6 +983,7 @@ $1',
 Хьой бина хийцам лахарчу корера лакхарчу коре баккха.
 Кнопкан «{{int:savearticle}}» тӏетаӏича лакхара корера йоза дӏаязлурду.',
 'yourtext' => 'Хьан йоза',
+'storedversion' => 'Ӏалашйина верси',
 'editingold' => "'''ДӀахьедар. Ахьа таеш ю хӀокху агӀона шира елла верси.'''
 АгӀо Ӏалаш йинчул тӀехьа хьалхо бина хийцамаш дӀабяра бу.",
 'yourdiff' => 'Башхаллаш',
@@ -941,33 +993,50 @@ $1',
 хьостера, хийцам ба а дlаса даржада а чулацам болуш.<br />
 '''МАТОХИЙШ БАКЪО ЙОЦУ ГlИРСАШ КХУ ЧУ, КУЬГ ДЕ БАКЪО ЛАР ЙЕШ ЙОЛУ!'''",
 'readonlywarning' => "'''ДӀАХЬЕДО. ГӀирса бух блоктоьхна оьшуш долучу хьаштан, цундера хӀинц хьоьга дӀа ца йазло хийцам.
-Хила мега, ахьа Ӏалаш дан дезаш хьайн йоза, йуха тӀаьхьо леладан иза йоза.'''
+Хила мега, ахьа Ӏалаш дан дезаш хьайн йоза, юха тӀаьхьо леладан иза йоза.'''
 
 Куьйгалхочо блоктоьхна гӀирса бух, цо битина кхетош хӀара хаам: $1",
 'protectedpagewarning' => "'''Дlахьедар. Хlара агlо гlаролла дина ю хийцам цабайта, иза хийца йа нисйа а бакъо йолуш адаманкуьйгалла лелош болу декъашхой бе бац.'''
 Лахахьа гойту хаамаш тlаьхьара бина болу хийцамна тептар чура:",
 'cascadeprotectedwarning' => '<div id="cascadeprotectedwarning" style="border:1px solid #ee0; padding:10px; background:#ffa; margin-bottom:1em">[[file:Padlock.svg|left|25px|ДовгӀа|link=]]
 ХӀара агӀо тада бакъо йолуш [[Project:Куьйгалхой|куьйгалхой]] бу, хӀунда аьлча и агӀо латийна кхечу агӀонашца хӀоттделлачу гӀаролле:</div>',
-'templatesused' => '{{PLURAL:$1|Кеп, лелийна|Кепаш, лелош ду}} хlокху агlон башхонца:',
-'templatesusedpreview' => '{{PLURAL:$1|Кеп, лелошдолу|Кепаш, лелошдолу}} оцу хьалх хьожучу агlонца:',
-'templatesusedsection' => 'ХӀокху декъан чохь {{PLURAL:$1|лелош йолу кеп|лелош йолу кепаш}}:',
+'templatesused' => '{{PLURAL:$1|1=Кеп, лелийна|Кепаш, лелош ду}} хlокху агlон башхонца:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Кеп, лелошдолу|Кепаш, лелошдолу}} оцу хьалх хьожучу агlонца:',
+'templatesusedsection' => 'ХӀокху декъан чохь {{PLURAL:$1|1=лелош йолу кеп|лелош йолу кепаш}}:',
 'template-protected' => '(гlароллийца)',
 'template-semiprotected' => '(дуьззина доцуш гlаролла)',
-'hiddencategories' => 'ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|къайлаха категори чу|къайлаха категореш чу}}:',
+'hiddencategories' => 'ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|1=къайлаха категори чу|къайлаха категореш чу}}:',
 'edittools' => '<!-- Кхузе буха диллина йоза гуш хир ду редоккхуче бухахь а хlума чуйоккхуче бухахь. -->',
+'nocreate-loggedin' => 'Хьан бакъо яц керла агӀонаш кхолла.',
+'sectioneditnotsupported-title' => 'Дакъош тадар ловш дац',
+'sectioneditnotsupported-text' => 'ХӀокху агӀорахь дакъош тадар ловш дац',
 'permissionserrors' => 'ТӀекхачаре бакъона гӀалат',
-'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:',
-'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:",
-'recreate-moveddeleted-warn' => "'''Тидам бе. Ахьа кхуллуш ю, хьалхо дӀаяккхина йолу агӀо.'''
+'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|1=шолгlа бахьанца|шолгlа бахьанашца}}:',
+'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|1=шолгlа бахьанца|шолгlа бахьанашца}}:",
+'recreate-moveddeleted-warn' => "'''Тидам бе. Ахьа кхуллуш ю, хьалхо дӀаяьккхина йолу агӀо.'''
 
 Хьажа, билгалла оьши хьуна хӀара агӀо юха кхолла.
 Лахахь далина ду дӀаяхарш тӀяхь долу тептарш а хӀокх агӀона цӀе хийцарш а.",
-'moveddeleted-notice' => 'Иза агӀо дӀаяккхина яра.
+'moveddeleted-notice' => 'Иза агӀо дӀаяьккхина яра.
 Хаийтарна лахахьа гойту, цуьнца долу дӀаяздарш кху тептар чура дӀаяхарш а цӀе хийцарш а.',
 'log-fulllog' => 'Хьажа деригге тептаре',
+'edit-hook-aborted' => 'Нисдар юхадаьккхина тӀехьожучо.
+ХӀу бахьна ду билгал дина дац.',
+'edit-gone-missing' => 'АгӀо карлаяккха цатарло.
+Иза дӀаяьккхина хила мега.',
+'edit-conflict' => 'Тадарна дойнаш.',
+'edit-no-change' => 'Хьан нисдар юхадаьккхина, ахьа хийцамаш бина цахилар бахьнехь.',
 'postedit-confirmation' => 'Хьан нисдар дӏайазъдина.',
+'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',
 
@@ -976,15 +1045,17 @@ $1',
 'post-expand-template-inclusion-category' => 'Чу дуьхкуш долу кепашан барам тӀех баьлла агӀонаш',
 'post-expand-template-argument-category' => 'Кепашан аргументаш юкъахь йитина агӀонаш',
 'parser-template-loop-warning' => 'Карийна кепаш юкъахь хилла шад: [[$1]]',
-'parser-template-recursion-depth-warning' => 'Ð\94озанал Ñ\85Ñ\8cалаваÑ\8cлла ÐºlоÑ\80генÑ\86а Ð¹Ñ\83Ñ\85 Ð¹Ñ\83ха дина кеп ($1)',
+'parser-template-recursion-depth-warning' => 'Ð\94озанал Ñ\85Ñ\8cаладаÑ\8cлла ÐºÓ\80оÑ\80генÑ\86а Ñ\8eÑ\85 Ñ\8eха дина кеп ($1)',
 
 # "Undo" feature
 'undo-success' => 'Нисйинарг а тlе цалаца мега. Дехар до, хьажа цхьатерра йуй башхо, тешна хила, баккъалла иза хийцам буйте хьуна безарг, тlакха тlе таlайе «дlайазйе агlо», хийцам хlотта ба.',
+'undo-failure' => 'Юккъера хийцамаш бахьнехь нисдар юхадаккха йиш яц.',
 'undo-summary' => 'Юхадаьккхина {{GENDER:$2|декъашхочун}} [[Special:Contributions/$2|$2]] ([[User talk:$2|дийц.]]) нисдар $1',
 'undo-summary-username-hidden' => 'Юхадаьккхина декъашхочун нисдарш $1, цунна цӀе дӀахьулйина',
 
 # History pages
 'viewpagelogs' => 'Гайта хlокху агlонан тептар',
+'nohistory' => 'ХӀокху агӀона хийцамаш бина хила бац.',
 'currentrev' => 'Карара верси',
 'currentrev-asof' => 'Карара верси оцу $1',
 'revisionasof' => 'Верси $1',
@@ -1002,20 +1073,31 @@ $1',
 'history-show-deleted' => 'ДӀаяхинарш',
 'histfirst' => 'ширниш',
 'histlast' => 'хьалхарниш',
-'historysize' => '({{PLURAL:$1|1 байт|$1 байташ}})',
+'historysize' => '($1 {{PLURAL:$1|байт}})',
 'historyempty' => '(йаьсса)',
 
 # Revision feed
 'history-feed-title' => 'Хийцаман истори',
+'history-feed-description' => 'Википедин чохь хӀокху агӀона хийцаман истори',
 'history-feed-item-nocomment' => '$1 оцу $2',
 
 # Revision deletion
+'rev-deleted-comment' => '(нисдарах лаьцна хаам дӀабаьккхина)',
 'rev-deleted-user' => '(авторан цӏе дӏаяйина)',
+'rev-deleted-event' => '(дӀаяздар дӀаяьккхина)',
+'rev-deleted-text-unhide' => "ХӀара агӀона верси '''дӀаяьккхина''' ю.
+Бахьна далина [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀаяьхнарш йолу тептар чохь].
+Хьайна лаахь хьа йиш ю [$1 и верси хьажа].",
+'rev-deleted-text-view' => "ХӀара агӀона верси '''дӀаяьккхина''' ю.
+Бахьна далина [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀаяьхнарш йолу тептар чохь].",
 'rev-delundel' => 'гайта/къайла',
 'rev-showdeleted' => 'гайта',
 'revisiondelete' => 'ДӀаяха / меттахӀотае агӀона версеш',
+'revdelete-nooldid-title' => 'Билгалйина яц Ӏалашонан верси',
+'revdelete-nooldid-text' => 'Ахьа хӀара функци кхочушъян билгалйина яц Ӏалашонан верси (я версеш).',
 'revdelete-show-file-submit' => 'Хlаъ',
-'revdelete-selected' => "'''АгӀона [[:$1]] {{PLURAL:$2|къастина верси|къастина версеш}}:'''",
+'revdelete-selected' => "'''АгӀона [[:$1]] {{PLURAL:$2|1=къастина верси|къастина версеш}}:'''",
+'logdelete-selected' => "'''Тептар чура {{PLURAL:$1|1=хаьржина дӀаяздар|хаьржина дӀаяздарш}}:'''",
 'revdelete-text' => "'''ДӀаяхна агӀонашан версеш а хелларш а гуш хир ду агӀона истори а тептаран а чохь, амма цара чулацам куьйгалхошна бен тӀекхочу чохь хир бац.'''
 {{SITENAME}} проектан куьйгалхойн йиш хир ю хӀокху интерфейс чухула дӀааьхинарш меттахӀотта я.",
 'revdelete-confirm' => 'Дехар до, бакъдар ахьа деш дерг [[{{MediaWiki:Policy-url}}|бакъонашца]] деш хилар.',
@@ -1023,16 +1105,24 @@ $1',
 'revdelete-hide-text' => 'Къайладаккха хӀокху агӀона чура йоза',
 'revdelete-hide-image' => 'Къайлабаккха файлан чулацам',
 'revdelete-hide-name' => 'Къайлаяккха дешдерг а цуна объект а',
-'revdelete-hide-comment' => 'Хийцамах лаьцнарг къайладаккха',
+'revdelete-hide-comment' => 'Хийцамах лаьцнарг',
 'revdelete-hide-user' => 'Къайлаяккха авторан цӀе',
 'revdelete-radio-same' => '(ма хийца)',
-'revdelete-radio-set' => 'Хlаъ',
-'revdelete-radio-unset' => 'Хlахlа',
+'revdelete-radio-set' => 'Къайлаяьккхина',
+'revdelete-radio-unset' => 'Гуш ерг',
+'revdelete-suppress' => 'Къайлабаха хаамаш куьйгалхойх а',
+'revdelete-unsuppress' => 'МеттахӀоьттина версешан дихкар къайладаккха',
 'revdelete-log' => 'Бахьан:',
-'revdelete-submit' => 'Кхочушде {{PLURAL:$1|къастина версин|къастина версешан}}',
+'revdelete-submit' => 'Кхочушде {{PLURAL:$1|1=къастина версин|къастина версешан}}',
+'revdelete-success' => "'''Версеш гуш хилар кхиамца хийцина.'''",
+'revdelete-failure' => "'''Версеш гуш хилар хийца йиш яц:'''
+$1",
+'logdelete-success' => 'Хиларг гуш хилар хийцина.',
+'logdelete-failure' => "'''Тептаран гуш хилар хӀоттина дац:'''
+$1",
 'revdel-restore' => 'Хийцам бе схьагарехь',
-'revdel-restore-deleted' => 'дӀааьхина версеш',
-'revdel-restore-visible' => 'гуш йолу версеш',
+'pagehist' => 'АгӀона истори',
+'deletedhist' => 'ДӀаяккхаран истори',
 'revdelete-hide-current' => 'Цунах $2, $1: дӀаяздар къайладаккхаран гӀалат и верси карара ю.
 Иза къайлаяккха йиш яц.',
 'revdelete-reason-dropdown' => 'Даржина долу дӀаяккхаран баьхьанаш 
@@ -1042,9 +1132,20 @@ $1',
 'revdelete-otherreason' => 'Кхин бахьна/тӀетохар:',
 'revdelete-reasonotherlist' => 'Кхин бахьан',
 'revdelete-edit-reasonlist' => 'Бахьанин список нисяр',
+'revdelete-offender' => 'АгӀона версен автор:',
+
+# Suppression log
+'suppressionlog' => 'Хьулдаран тептар',
 
 # History merging
+'mergehistory' => 'Нисдарин истори цхьаьнатохар',
+'mergehistory-box' => 'Шин агӀона нисдарин истори цхьаьнатохар:',
 'mergehistory-from' => 'Дуьххьарлера агӀоно',
+'mergehistory-into' => 'Ӏалашонан агӀо:',
+'mergehistory-list' => 'Цхьаьнатухуш долу нисдарин истори',
+'mergehistory-go' => 'Гайта цхьаьнатухуш долу нисдарш',
+'mergehistory-submit' => 'Цхьаьнатоха нисдарш',
+'mergehistory-empty' => 'Цхьаьнатоха нисдарш цакарий.',
 'mergehistory-fail' => 'АгӀонийн истореш вовшахтоха цаделира, дехар до агӀона параметаршка а хене а хьажа.',
 'mergehistory-invalid-source' => 'Хьостан нийса корта хила еза.',
 'mergehistory-invalid-destination' => 'Юзийна агӀона нийса корта хила еза.',
@@ -1053,35 +1154,30 @@ $1',
 # Merge log
 'mergelog' => 'Цхьаьнатохаршан тептар',
 'revertmerge' => 'Йекъа',
+'mergelogpagetext' => 'Лахахь гойту тӀеххьара вовшахтоьхна агӀонийн могӀам.',
 
 # Diffs
 'history-title' => '$1 — хийцаман истори',
 'difference-title' => '$1 — Версешан башхалла',
 'lineno' => 'Могlа $1:',
 'compareselectedversions' => 'Хаьржина версеш муха ю хьажа',
-'showhideselectedversions' => 'Гайта/къайлайаха хаьржина башхонаш',
+'showhideselectedversions' => 'Гайта/къайлаяха хаьржина башхонаш',
 'editundo' => 'цаоьшу',
 'diff-empty' => '(башхалла яц)',
-'diff-multi' => '({{PLURAL:$1|гайтина яц $1 юккъера верси|гайтина яц $1 юккъера версеш}} {{PLURAL:$2|$2 декъашхочун|$2 декъашхой}})',
+'diff-multi' => '({{PLURAL:$1|1=гайтина яц $1 юккъера верси|гайтина яц $1 юккъера версеш}} {{PLURAL:$2|1=$2 декъашхочун|$2 декъашхой}})',
 
 # Search results
 'searchresults' => 'Лахарна хилам',
 'searchresults-title' => 'Лаха «$1»',
-'searchresulttext' => 'Хlокху кхолламан агlонаш чохь лахарх лаьцна кхетош хаам, хьажа. [[{{MediaWiki:Helppage}}|нисвохааман дакъанчу]].',
-'searchsubtitle' => 'Дехарца йолу «[[:$1]]» ([[Special:Prefixindex/$1|агlонаш, дlайуьлалуш йу хlо цlарца]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|тlетовжуш йу хlо цlарна]])',
-'searchsubtitleinvalid' => 'Кху дехарца «$1»',
-'notitlematches' => 'Агlонаши цlерашца цхьатера йогlуш яц',
 'notextmatches' => 'Агlонаш чура йозанашца цхьатера йогlуш яц',
-'prevn' => '{{PLURAL:$1|хьалхарниг $1|хьалхарнаш $1|хьалхарнаш $1}}',
-'nextn' => '{{PLURAL:$1|тlаьхьйогlург $1|тlаьхьйогlурш $1|тlаьхьйогlурш $1}}',
-'prevn-title' => '{{PLURAL:$1|Хьалхара $1 дӀаяздар|Хьалхара $1 дӀаяздарш}}',
-'nextn-title' => '{{PLURAL:$1|ТӀаьхьара $1 дӀаяздар|ТӀаьхьара $1 дӀаяздарш}}',
-'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|дӀаяздар|дӀаяздарш}} гайта',
+'prevn' => 'хьалхарнаш {{PLURAL:$1|$1}}',
+'nextn' => 'тӀаьхьйогӀурш {{PLURAL:$1|$1}}',
+'prevn-title' => '{{PLURAL:$1|1=Хьалхара $1 дӀаяздар|Хьалхара $1 дӀаяздарш}}',
+'nextn-title' => '{{PLURAL:$1|1=ТӀаьхьара $1 дӀаяздар|ТӀаьхьара $1 дӀаяздарш}}',
+'shown-title' => 'АгӀона чохь $1 {{PLURAL:$1|1=дӀаяздар|дӀаяздарш}} гайта',
 'viewprevnext' => 'Хьажа ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Лахарна гlирс нисба',
 'searchmenu-exists' => "'''ХӀокху вики чохь йолуш ю ишта агӀо «[[:$1]]»'''",
 'searchmenu-new' => "'''Кхолла ишта агlо «[[:$1]]» хlокху вики-кхолламашчохь!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Гайта агlонаш ишта хlоттам болуш]]',
 'searchprofile-articles' => 'Къаьстина агlонаш',
 'searchprofile-project' => 'ГӀона а проектан а агӀонаш',
 'searchprofile-images' => 'Мультимедиа',
@@ -1093,26 +1189,22 @@ $1',
 'searchprofile-everything-tooltip' => 'Лаха массо агlонашкахь (дийцаре агlонашцани)',
 'searchprofile-advanced-tooltip' => 'Лаха дехарца хlокху ана цlерашкахь',
 'search-result-size' => '$1 ({{PLURAL:$2|$2 дош|$2 дешнаш|$2 дешнаш}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|бухара категори|бухара категореш}}, $3 {{PLURAL:$3|файл|файлаш}}).',
+'search-result-category-size' => '$1 {{PLURAL:$1|юкъаяр}} ($2 {{PLURAL:$2|1=бухара категори|бухара категореш}}, $3 {{PLURAL:$3|1=файл|файлаш}}).',
 'search-redirect' => '(дlасахьажийна $1)',
 'search-section' => '(дакъа $1)',
 'search-suggest' => 'Хила мега ахьа лоьхарг: $1',
 'search-interwiki-caption' => 'Гергара проекташ',
 'search-interwiki-default' => '$1 хилам.:',
 'search-interwiki-more' => '(кхин)',
-'mwsuggest-disable' => 'ДӀабайа лахаран хьехам',
 'searcheverything-enable' => 'Массо цIера анахь лахар',
 'searchrelated' => 'хlоттаделларг',
 'searchall' => 'массо',
 'showingresults' => 'Лахахьа {{PLURAL:$1|гойта|гойту|гойту}} <strong>$1</strong> {{PLURAL:$1|хилам|хиламаш|хиламаш}}, дlаболало кху № <strong>$2</strong>.',
-'showingresultsheader' => "{{PLURAL:$5|Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
-'nonefound' => "'''Билгалдаккхар.''' ХӀумма цадеш Ӏад йитича массо цӀеран энахь цалоху. Лела йе тӀехуттург ''all:'', лахийта массо цӀеран энахь (юкъадалош декъашхойн дийцарш а кепаш а кхин дерг.), йа хӀотта йе оьшуш йолу цӀеран эна.",
+'showingresultsheader' => "{{PLURAL:$5|1=Хилам '''$1''' кху '''$3'''|Хиламаш '''$1 — $2''' кху '''$3'''}} оцун '''$4'''",
 'search-nonefound' => 'Дехаре терра цхьа хӀума ца карийна.',
-'powersearch' => 'Шуьйра лахар',
 'powersearch-legend' => 'Шуьро лахар',
 'powersearch-ns' => 'Цlераши анахь лахар:',
 'powersearch-redir' => 'Схьагайта дlасахьажийнарш',
-'powersearch-field' => 'Лаха',
 'powersearch-togglelabel' => 'Билгалдан:',
 'powersearch-toggleall' => 'Массо',
 'powersearch-togglenone' => 'Хlумма цаоьшу',
@@ -1123,7 +1215,6 @@ $1',
 'preferences' => 'Гlирс нисбан',
 'mypreferences' => 'ГӀирс нисбан',
 'prefs-edits' => 'Нисдарши дукхалла:',
-'changepassword' => 'Хийца пароль',
 'prefs-skin' => 'Кечяран тема',
 'skin-preview' => 'Хьалха муха ю хьажа',
 'datedefault' => 'Iад йитарца',
@@ -1133,7 +1224,7 @@ $1',
 'prefs-user-pages' => 'Декъашхочун агӀо',
 'prefs-personal' => 'Долахь болу хаамаш',
 'prefs-rc' => 'Керла нисдарш',
-'prefs-watchlist' => 'Тергаме могlам',
+'prefs-watchlist' => 'Тергаме могӀам',
 'prefs-watchlist-days' => 'Денойн дукхалла:',
 'prefs-watchlist-days-max' => 'Къезиг  $1 {{PLURAL:$1|дена}}',
 'prefs-watchlist-edits' => 'Тергаме могӀам чохь гойтучу нисдаршан максимальни дукхалла:',
@@ -1145,13 +1236,11 @@ $1',
 'prefs-email' => 'Электронан почтан параметраш',
 'prefs-rendering' => 'Арахьара хатl',
 'saveprefs' => 'lалашдан',
-'resetprefs' => 'Кхоссар',
 'restoreprefs' => 'МеттахӀоттабе гӀирс Iад битарца',
 'prefs-editing' => 'Тадар',
 'rows' => 'МогӀанаш:',
 'columns' => 'БӀогӀамаш:',
 'searchresultshead' => 'Лаха',
-'resultsperpage' => 'Карийначу дӀаяздаршан дукхалла:',
 'stub-threshold' => 'Кеч яран доза <a href="#" class="stub">коьртамогӀамна хьажорагаш</a> (байташках):',
 'recentchangesdays' => 'Керла нисдар гайта динахь:',
 'recentchangesdays-max' => 'Къезиг  $1 {{PLURAL:$1|дена}}',
@@ -1184,7 +1273,7 @@ $1',
 'youremail' => 'Кехат яздо зlе цlе:',
 'username' => '{{GENDER:$1|Декъашхочун цӀе}}:',
 'uid' => 'Декъашхочун {{GENDER:$1|код}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Тобана|Тобана}} {{PLURAL:$1|декъашхо|декъашхо}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Тобана|Тобана}} {{PLURAL:$1|1=декъашхо|декъашхо}}:',
 'prefs-registration' => 'ДӀаяздар кхолийна хан:',
 'yourrealname' => 'Хьан бакъ цlе:',
 'yourlanguage' => 'Мотт:',
@@ -1199,13 +1288,14 @@ $1',
 И хаам массарна гуш хир бу.',
 'email' => 'Email',
 'prefs-help-email' => 'Электрони почтан адрес цахlоттийча аъ хlумма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.',
-'prefs-help-email-others' => 'Ð\9aÑ\85ин Ð´Ó\80а Ñ\86о ÐºÑ\85еÑ\87Ñ\83 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\88на Ð¹Ð¸Ñ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онни ÐºÐµÑ\85аÑ\82 Ð´Ð°Ð¸Ð¹Ñ\82а Ñ\85Ñ\8cан Ð°Ð³Ó\80она Ñ\87оÑ\85Ñ\8c Ð¹Ð¾Ð»Ñ\83 Ñ\85Ñ\8cажоÑ\80иган Ð³Ó\80онца.',
+'prefs-help-email-others' => 'Ð\9aÑ\85ин Ð´Ó\80а Ñ\86о ÐºÑ\85еÑ\87Ñ\83 Ð´ÐµÐºÑ\8aаÑ\88Ñ\85оÑ\88на Ð¹Ð¸Ñ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онан ÐºÐµÑ\85аÑ\82 Ð´Ð°Ð¸Ð¹Ñ\82а Ñ\85Ñ\8cан Ð°Ð³Ó\80она Ñ\87оÑ\85Ñ\8c Ð¹Ð¾Ð»Ñ\83 Ñ\85Ñ\8cажоÑ\80иган Ð³Ó\80оÑ\8cнца.',
 'prefs-info' => 'Коьрта хаам',
 'prefs-i18n' => 'Юкъардекъа мотт',
 'prefs-signature' => 'КуьгтаӀор',
 'prefs-dateformat' => 'Терахьан формат',
 'prefs-timeoffset' => 'Хенан  гӀирс',
 'prefs-advancedediting' => 'Юкъара параметреш',
+'prefs-editor' => 'Тадар',
 'prefs-preview' => 'Хьалха муха ю хьажар',
 'prefs-advancedrc' => 'Кхин гӀирс нисбар',
 'prefs-advancedrendering' => 'Кхин гӀирс нисбар',
@@ -1215,6 +1305,7 @@ $1',
 'prefs-displaysearchoptions' => 'Гуш болу гӀирсаш',
 'prefs-displaywatchlist' => 'Гуш болу гӀирсаш',
 'prefs-diffs' => 'Башхон верси',
+'prefs-help-prefershttps' => 'И хийцам болх байта юхугӀо системин чу.',
 
 # User rights
 'userrights' => 'Декъашхочун бакъона урхалладар',
@@ -1229,7 +1320,7 @@ $1',
 'userrights-groups-help' => 'Хьона хийца ло декъашхочун бакъонаш.
 * Бакъона цӀера юххехь билгало елахь, цуна и бакъо йолуш ю.
 * Билгало яцахь — декъашхочун и бакъо яц.
-* Знако * билгала до ахьа бакъо еллачул тӀхьа хьона и дӀаяккха лур цахилар.',
+* Знако * билгала до ахьа бакъо еллачул тӀаьхьа хьона и дӀаяккха цалуш хилар.',
 'userrights-reason' => 'Бахьан:',
 'userrights-no-interwiki' => 'Хьан бакъо яц декъашхой бакъо хийца кхечу википеди чохь.',
 'userrights-nologin' => 'Куьйгалхочунна бакъо йолу [[Special:UserLogin|дӀаяздарца]] ло декъашхочун бакъо.',
@@ -1243,26 +1334,26 @@ $1',
 'group-autoconfirmed' => 'Ша тӀелаьцболу декъашхой',
 'group-bot' => 'Шаболххой',
 'group-sysop' => 'Куьйгалхой',
-'group-bureaucrat' => 'Ð\94аÑ\80жаÑ\85ой',
+'group-bureaucrat' => 'Ð\91Ñ\8eÑ\80окÑ\80аÑ\82аÑ\88',
 'group-suppress' => 'Ревизораш',
 'group-all' => '(массо)',
 
 'group-user-member' => '{{GENDER:$1|декъашхо}}',
 'group-bot-member' => 'шаболххо',
 'group-sysop-member' => '{{GENDER:$1|куьйгалхо}}',
-'group-bureaucrat-member' => 'даржахо',
+'group-bureaucrat-member' => '{{GENDER:$1|бюрократхо}}',
 'group-suppress-member' => 'левисорхо',
 
 'grouppage-user' => '{{ns:project}}:Декъашхой',
 'grouppage-autoconfirmed' => '{{ns:project}}:Бакъонаш йолу декъашхой',
 'grouppage-bot' => '{{ns:project}}:Шаболххой',
 'grouppage-sysop' => '{{ns:project}}:Куьйгалхой',
-'grouppage-bureaucrat' => '{{ns:project}}:Ð\94аÑ\80жаÑ\85ой',
+'grouppage-bureaucrat' => '{{ns:project}}:Ð\91Ñ\8eÑ\80окÑ\80аÑ\82аÑ\88',
 'grouppage-suppress' => '{{ns:project}}:Ревизораш',
 
 # Rights
 'right-read' => 'агӀонашка хьажар',
-'right-edit' => 'Ð\90гÓ\80оаÑ\88 Ð½Ð¸Ñ\81Ñ\8fÑ\80',
+'right-edit' => 'агÓ\80онаÑ\88 Ð½Ð¸Ð¹Ñ\81е',
 'right-createpage' => 'АгӀонаш кхоллар (дийцарш дац)',
 'right-createtalk' => 'Дийцаре агӀонаш кхоллар',
 'right-createaccount' => 'декъашхошна керла дӀаяздарш кхоллар',
@@ -1270,7 +1361,7 @@ $1',
 'right-move' => 'АгӀонашан цӀераш хийцар',
 'right-move-subpages' => 'АгӀонашан цӀераш хийцар цера бухара агӀонашцан',
 'right-move-rootuserpages' => 'декъашхочун ораман агӀонийн цӀераш хийцар',
-'right-movefile' => 'ФайланÑ\88и цӀе хийцар',
+'right-movefile' => 'Файлийн цӀе хийцар',
 'right-suppressredirect' => 'агӀона цӀе хуьйцуш ширчу цӀарах ма кхолла дӀасахьажаяр',
 'right-upload' => 'Файлаш чуйаьхар',
 'right-reupload' => 'йолуш йолу чера тӀехула файлаш дӀаязъяр',
@@ -1289,7 +1380,7 @@ $1',
 'right-deleterevision' => 'агӀонийн билгала версеш дӀаяхар а меттахӀиттаяр а',
 'right-deletedhistory' => 'дӀаяхна агӀонийн исторега хьажар дӀадаьккхина йоза тӀекхочехь доцуш',
 'right-deletedtext' => 'дӀадаьккхина йозане а хийцамашка а хьажар агӀонийн дӀаяхна версин юккъахь',
-'right-browsearchive' => 'Ð\94Ӏаяхна агӀонаш лахар',
+'right-browsearchive' => 'дӀаяхна агӀонаш лахар',
 'right-undelete' => 'АгӀонаш меттахӀоттор',
 'right-suppressrevision' => 'куьйгалхойх хьулйина йолу агӀонийн версеш меттахӀиттаяр а хьажар а',
 'right-suppressionlog' => 'долара тептаршка хьажар',
@@ -1319,6 +1410,7 @@ $1',
 'right-import' => 'кхечу википедешкара агӀонаш импорт ян',
 'right-importupload' => 'файлаш чуяхарца агӀонаш импорт ян',
 'right-patrol' => 'нисдарш хьаьжна сана билгалдар',
+'right-autopatrol' => 'нисдарш хьаьжна сана автоматически билгалдан',
 'right-patrolmarks' => 'керла нисдарийн хьаьжна билгалонашка хьажар',
 'right-unwatchedpages' => 'тергамехь йоцу агӀонийн могӀане хьажар',
 'right-mergehistory' => 'агӀонаш вовшахтохар',
@@ -1330,10 +1422,12 @@ $1',
 'right-passwordreset' => 'пароль хийцарца электроннан хаамашка хьажар',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Декъашхой дlабазбина тептар',
+'newuserlogpage' => 'Декъашхой дӀабазбина тептар',
+'newuserlogpagetext' => 'Дукху хан йоцуш дӀабазбелла декъашхойн могӀам',
 
 # User rights log
 'rightslog' => 'Декъашхочун бакъона тéптар',
+'rightslogtext' => 'Декъашхойн бакъонаш хийцар долу тептар.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'хӀара агӀо ешар',
@@ -1342,6 +1436,7 @@ $1',
 'action-move-rootuserpages' => 'декъашхочун ораман агӀонийн цӀераш хийцар',
 'action-delete' => 'дӀаяккха хӀара агӀо',
 'action-deletedhistory' => 'хӀокху агӀона дӀаяккхинцу исторега хьажар',
+'action-browsearchive' => 'ДӀаяхна агӀонаш лахар',
 'action-undelete' => 'хӀара агӀо меттахӀоттор',
 'action-patrol' => 'кхечера нисдарш хьаьжна сана билгалдар',
 'action-autopatrol' => 'шен нисдарш хьаьжна сана билгалдар',
@@ -1358,8 +1453,8 @@ $1',
 'recentchanges-label-minor' => 'Хlара нисдинарг къастийна жимо долушсан',
 'recentchanges-label-bot' => 'ХӀара нисдар шаболх бечо дина',
 'recentchanges-label-unpatrolled' => 'ХӀара нисдар хӀинца цхьано патрулировать дина дац',
-'recentchanges-legend-newpage' => '$1 — керла агlо',
-'rcnote' => "{{PLURAL:$1|Тlаьххьара '''$1''' хийцам|Тlаьххьара '''$1''' хийцамаш|Тlаьххьара '''$1''' хийцамаш}} за '''$2''' {{PLURAL:$2|де|дийнахь|дийнахь}}, оцу хан чохь $5 $4.",
+'recentchanges-label-plusminus' => 'байташкахь барам хийцар',
+'recentchanges-legend-newpage' => '(хьажа кхин [[Special:NewPages|керла агӀонийн могӀа]])',
 'rcnotefrom' => "Лахахь гайтина тӀера '''$2''' хийцамаш ('''$1''' къезиг).",
 'rclistfrom' => 'Гайта хийцам оцу $1.',
 'rcshowhideminor' => '$1 кегийра нисдарш',
@@ -1377,18 +1472,19 @@ $1',
 'newpageletter' => 'К',
 'boteditletter' => 'б',
 'rc_categories_any' => 'Муьлхаа',
-'rc-change-size-new' => 'Хийцам бинчул тӀехьа болу барам: $1 {{PLURAL:$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' => 'Кхуьнца долу нисдарш',
 'recentchangeslinked-feed' => 'Кхуьнца долу нисдарш',
 'recentchangeslinked-toolbox' => 'Кхуьнца долу нисдарш',
 'recentchangeslinked-title' => 'Кхуьнца долу нисдарш $1',
-'recentchangeslinked-summary' => "Хlара хийцам биначу агlонашан могlам бу, тlетовжар долуш хьагучу агlон (йа хьагойтуш йолучу категорена).
-Агlонаш юькъайогlуш йолу хьан [[Special:Watchlist|тергаме могlам чохь]] '''къастийна йу'''.",
+'recentchangeslinked-summary' => "ХӀара хийцам биначу агӀонашан могӀам бу, тӀетовжар долуш хьагучу агӀон (йа хьагойтуш йолучу категорена).
+АгӀонаш юькъайогӀуш йолу хьан [[Special:Watchlist|тергаме могӀам чохь]] '''къастийна ю'''.",
 'recentchangeslinked-page' => 'Агlон цlе:',
 'recentchangeslinked-to' => 'Кхечу агӀор, гайта хийцамаш агӀонашца, хӀоттийначу агӀонтӀе хьажораг йолуш',
 
@@ -1398,9 +1494,20 @@ $1',
 'reuploaddesc' => 'Юху гӀо файл чуйоккху агӀоне',
 'upload-tryagain' => 'ДӀадахьийта хийцина файлах лаьцнарг',
 'uploadnologintext' => 'Серверан чу файлаш яха хьо $1.',
+'upload-recreate-warning' => "'''Тегам бе: иштта цӀе йолу файл дӀаяьккхина я цӀе хийцина.'''
+
+Лахахьа гойтуш ю хӀокху агӀона тептар:",
+'uploadtext' => "Лелайе хӀара агӀо сервер чу файлаш йохуш.
+Хьалхо чуйаьхна файлаш хьажа,  [[Special:FileList|кхузахь]]. Кхин чуйаьхна файлаш дӀаязло [[Special:Log/upload|чуяхаран тептар чохь]], дӀаяьхна файлаш каро йиш ю [[Special:Log/delete|кхузахь]].
+
+Файл агӀона чуйилла лелабе лахара могӀанаш:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' файла Файлан юьззина верси чуйиллуш;
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|цунахь лаьцна хаам]]</nowiki></code>''' 200 пиксель барамехь файл чуйилар бухахь цунахь лаьцна могӀа а болуш;
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' файлан тӀе хьажораг хӀотайо файл агӀонгахь ца гуш.",
 'upload-permitted' => 'Магийна файлийн тайпанаш: $1.',
 'uploadlogpage' => 'Чуяхаран тéптар',
-'uploadlogpagetext' => 'Лахахьа гойтуш бу могlам тlаьххьара чуяхна файлаши. Ишта хьажа. [[Special:ImageList|файлаши могlам]] йа [[Special:NewImages|галеларе файлаши]].',
+'uploadlogpagetext' => 'Лахахьа гойтуш бу тӀаьххьара чуяхна файлийн могӀам.
+Ишта хьажа [[Special:NewFiles|керлачу файлийн галерей]].',
 'filename' => 'Файлан цӀе',
 'filedesc' => 'Файлах лаьцна',
 'fileuploadsummary' => 'Файлах лаьцна:',
@@ -1408,16 +1515,32 @@ $1',
 'filesource' => 'Хьост:',
 'ignorewarning' => 'ХӀума дац чуяккха файл',
 'ignorewarnings' => 'ДӀахедар тергал ца дан',
-'badfilename' => 'Файлан цӀе оцу $1.',
+'badfilename' => 'Файлан цӀе хийцина → $1.',
 'emptyfile' => 'Ахьа чуйоккхуш йолу файл еса хийла там бу. Иза гӀалат хийла мега файлан цӀе нийса язйина йоцу дела. Дехар до хьажа бакъалла и юьй ахьа чуйоккхуш йолу файл.',
 'fileexists' => 'Иштта цӀе йолу файл йолуш ю. Дехар до, хьажа <strong>[[:$1]]</strong>, лаьий хьуна и хийца. 
 [[$1|thumb]]',
+'filepageexists' => 'Файлах лаьцна хаам болу агӀо кхоьллина <strong>[[:$1]]</strong>, амма иштта цӀе йолуш файл хӀинца яц.
+Язбина хаам файлах лаьцнарг долу агӀонехь гучабаьра бац.
+Керла хаам тӀетоха ахьа и куьга хийца езар ю.
+[[$1|thumb]]',
+'fileexists-extension' => 'Тера цӀе йолу файл йолуш ю: [[$2|thumb]]
+* Чуйоккхуш йолу файлан цӀе: <strong>[[:$1]]</strong>
+* Йолуш йолу файлан цӀе: <strong>[[:$2]]</strong>
+Дехар до, харжа кхин цӀе.',
+'fileexists-thumbnail-yes' => 'Файл жима йина копи хила там бу. [[$1|thumb]]
+Дехар до, хьажа файле <strong>[[:$1]]</strong>.
+Билгалйина файл цуна жима йина копи елахь и чуяккха цаоьшу.',
+'file-thumbnail-no' => 'Файлан цӀе йолалуш ю <strong>$1</strong>.
+Файл жима йина суьртан копи хила там бу.
+Хьайгахь хӀара сурт дика барамехь делахь, дехар до, чудаккха и я файлан цӀе хийца.',
 'fileexists-forbidden' => 'Иштта цӀе йолу файл йолуш ю цундела тӀехула дӀаязян йиш яц.
 ТӀаккха а хьара файл чуяккха лууш делахь, дехар до, юха а гӀой файлан цӀе хийца а яй чуяккха файл. [[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'ХӀара файл лахарчу {{PLURAL:$1|1=файлан|файлийн}} дубликат ю:',
 'file-deleted-duplicate' => 'Иштта файл ([[:$1]]) хӀинцале дӀаяьккхина хилла. Дехар до, юху файл чуяккхале файл дӀаяккхаран историга хьажа.',
 'uploadwarning' => 'Дlахьедар',
-'uploadedimage' => 'чуяккхина «[[$1]]»',
-'overwroteimage' => 'Чуяккхина файлан керла верси «[[$1]]»',
+'uploadwarning-text' => 'Дехар до, лахара файлах лаьцнарг хийца а дай юху а гӀорта файл чуяккха.',
+'uploadedimage' => 'чуяьккхина «[[$1]]»',
+'overwroteimage' => 'Чуяьккхина файлан керла верси «[[$1]]»',
 'upload-source' => 'ДIайолалун файл',
 'sourcefilename' => 'ДIайолалун файл:',
 'destfilename' => 'Файлан керла цӀе:',
@@ -1426,6 +1549,7 @@ $1',
 'upload-options' => 'Чуякхаран параметраш',
 'watchthisupload' => 'Латайе хӀара файл тергаме могӀам юкъахь',
 'filewasdeleted' => 'Иштта цӀе йолуш файл хьалха чуяьккхина хила, амма дӀаяьккхина. Дехар до, юху чуяккхале $1 хьажа.',
+'filename-bad-prefix' => "Чуйоккхучу файлан цӀе йолалуш ю «'''$1'''» и сурт доккхучу хӀумнан кепан цӀе хилла мега. Дехар до, хьаржа файлан йогӀуш йолу цӀе.",
 'filename-prefix-blacklist' => '#<!-- битийша хlара могlа ша мабарра --> <pre>
 # Бухасиз шолгlа:
 #  * Массо, саболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)
@@ -1460,6 +1584,9 @@ PICT # тайп тайпан
 'listfiles_user' => 'Декъашхо',
 'listfiles_size' => 'Барам',
 'listfiles_description' => 'Цуьнах лаьцна',
+'listfiles_count' => 'Верси',
+'listfiles-show-all' => 'Гайта суьртийн шира версеш',
+'listfiles-latestversion-yes' => 'ХӀаъ',
 
 # File description page
 'file-anchor-link' => 'Файл',
@@ -1477,11 +1604,13 @@ PICT # тайп тайпан
 'filehist-filesize' => 'Файлан барам',
 'filehist-comment' => 'Билгалдаккхар',
 'imagelinks' => 'Файл лелор',
-'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
+'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
 'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
-'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
+'sharedupload' => 'ХӀара хӀума оцун $1 чура ю иза хила мега лелош кхечу проекташкахь.',
 'sharedupload-desc-here' => 'ХӀара файл $1 чура ю и лело йиш ю массо проекташкахь.
 Цунна хаам гайтина лахахь. [$2 Файл Викигуламехь]',
+'filepage-nofile' => 'Иштта цӀе йолуш файл яц.',
+'filepage-nofile-link' => 'Ишта цӀе йолуш файл яц. Хьа йиш ю и [$1 чуяккха].',
 'uploadnewversion-linktext' => 'Чуяккха керла верси хӀокху файлан',
 'shared-repo-name-wikimediacommons' => 'Викидlайуллуче',
 
@@ -1512,6 +1641,7 @@ PICT # тайп тайпан
 'mimesearch' => 'MIME хула лаха',
 'mimesearch-summary' => 'ХӀокху агӀоно йиш хуьлуьйту MIME-тайпан файлаш харжа. Яздеш долу формат: чулацаман тайп/бухара тайп, масала  <code>image/jpeg</code>.',
 'mimetype' => 'MIME-тайп:',
+'download' => 'чуяккха',
 
 # Unwatched pages
 'unwatchedpages' => 'Цхьамо тергам ца беш йолу агIонаш',
@@ -1523,6 +1653,7 @@ PICT # тайп тайпан
 'unusedtemplates' => 'Лелош доцу кепаш',
 'unusedtemplatestext' => 'Кхузахь дагар йина «{{ns:template}}» цӀерийн меттиган агӀонаш, кхечу агӀонийн юкъа тоьхна йоцу.
 Диц ма делахь хьажа кеп агӀонашкахь лелош юй.',
+'unusedtemplateswlh' => 'кхин хьажорагаш',
 
 # Random page
 'randompage' => 'Цахууш нисйелла агӀо',
@@ -1538,17 +1669,18 @@ PICT # тайп тайпан
 # Statistics
 'statistics' => 'Бухехьдерг',
 'statistics-header-pages' => 'Агlонашан жамlа',
-'statistics-header-edits' => 'Нисдаран жам',
+'statistics-header-edits' => 'Нисдаран жамӀ',
 'statistics-header-users' => 'Декъашхойн жамӀа',
+'statistics-header-hooks' => 'Кхин статистика',
 'statistics-articles' => 'Яззамаш',
 'statistics-pages' => 'Агlонаш',
 'statistics-pages-desc' => 'Массо вики агlонаш, дийцаре агlонашцани, дlасахьаждарш а кхин дерш.',
 'statistics-files' => 'Чуйаьхна файлаш',
 'statistics-edits' => 'Нисдаран дукхалла {{grammar:genitive|{{SITENAME}}}} дlа йолайаларца',
-'statistics-edits-average' => 'Ð\99Ñ\83кÑ\8aеÑ\80а Ð°Ð³lонан Ð½Ð¸Ñ\81даÑ\80ан Ñ\82еÑ\80хь',
+'statistics-edits-average' => 'ЮккÑ\8aеÑ\80а Ð°Ð³Ó\80онан Ð½Ð¸Ñ\81даÑ\80ан Ñ\82еÑ\80ахь',
 'statistics-users' => '[[ВП:Дlаязвалар|Дlаязбелларш]] шаберигге декъашхой чохь болу [[Special:ListUsers|(могlам)]]',
 'statistics-users-active' => 'Жигара декъашхой',
-'statistics-users-active-desc' => 'Декъашхой, муьлха цхьа хlум дина болу, кху {{PLURAL:$1|тlаьххьара $1 динахь|тlаьххьара $1 дийнахь}}',
+'statistics-users-active-desc' => 'Декъашхой, муьлха цхьа хlум дина болу, кху {{PLURAL:$1|1=тlаьххьара $1 динахь|тlаьххьара $1 дийнахь}}',
 
 'pageswithprop' => 'АгӀонаш цхьадолу къастамашца',
 'pageswithprop-legend' => 'АгӀонаш цхьадолу къастамашца',
@@ -1572,11 +1704,11 @@ PICT # тайп тайпан
 'fewestrevisions' => 'ЧIогIа кIезиг башхонаш йолу агIонаш',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байташ|байт}}',
+'nbytes' => '$1 {{PLURAL:$1|байт}}',
 'ncategories' => '$1 {{PLURAL:$1|категори|категореш|категореш}}',
-'ninterwikis' => '$1 {{PLURAL:$1|юкъарвики-хьажораг|юкъарвики-хьажорагаш}}',
-'nlinks' => '$1 {{PLURAL:$1|хьажораг|хьажорагаш}}',
-'nmembers' => '$1 {{PLURAL:$1|хӀума|хӀумнаш}}',
+'ninterwikis' => '$1 {{PLURAL:$1|1=юкъарвики-хьажораг|юкъарвики-хьажорагаш}}',
+'nlinks' => '$1 {{PLURAL:$1|1=хьажораг|хьажорагаш}}',
+'nmembers' => '$1 {{PLURAL:$1|1=хӀума|хӀумнаш}}',
 'nimagelinks' => 'Лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
 'ntransclusions' => 'лелош ю $1 {{PLURAL:$1|агӀоначохь|агӀонашкахь|агӀонашкахь}}',
 'specialpage-empty' => 'Дехаро хӀумма ца елла.',
@@ -1609,10 +1741,12 @@ PICT # тайп тайпан
 'longpages' => 'Беха яззамаш',
 'deadendpages' => 'Дика йоцу агIонаш',
 'protectedpages' => 'ГIаролла дина агIонаш',
+'protectedpages-indef' => 'Хан йоцуш гӀоралла динарш бен',
+'protectedpages-cascade' => 'Чахчарин гӀоралла бен',
 'protectedtitles' => 'ГIаролла дина цIераш',
 'listusers' => 'Декъашхой могlам',
 'listusers-editsonly' => 'Цхаъ мукъане а хийцам бина декъашхой гайта',
-'listusers-creationsort' => 'Кхолларан хене хьаьжна нисъяр',
+'listusers-creationsort' => 'Кхоьллина хене хьаьжна нисъяр',
 'listusers-desc' => 'Харжа къезиг хиларца',
 'usercreated' => '{{GENDER:$3|дӀавазвелла|дӀаязелла}} $1 $2',
 'newpages' => 'Керла агlонаш',
@@ -1621,11 +1755,13 @@ PICT # тайп тайпан
 'move' => 'Цlе хийца',
 'movethispage' => 'Хlокху агlон цlе хийца',
 'unusedimagestext' => 'Дехар до, тидаме эца, кхин йолу дуьнана машан-меттигаш а лелош хила мега нийсса йогӀу хьажораг (URL) хӀокху хӀуман, хӀокху могӀаме йогӀуш ялахь яцахь а иза хила мега жигара лелош.',
+'unusedcategoriestext' => 'ХӀокху категорешан чохь агӀонаш я кхин категореш яц.',
 'notargettitle' => 'Ӏалашо билгал йина яц',
+'notargettext' => 'И кхочушдан ахьа билгал йина яц Ӏалашонан агӀо я декъашхо.',
 'nopagetitle' => 'Ишта агӀо яц',
 'nopagetext' => 'Ишта агӀо яц.',
-'pager-newer-n' => '{{PLURAL:$1|алсамо керла|алсамо керланаш|алсамо керлачарех}} $1',
-'pager-older-n' => '{{PLURAL:$1|алсамо шира|алсамо ширниш|алсамо ширачарех}} $1',
+'pager-newer-n' => '{{PLURAL:$1|алсамо керла 1|алсамо керланаш $1}}',
+'pager-older-n' => '{{PLURAL:$1|алсамо шира 1|алсамо ширниш $1}}',
 
 # Book sources
 'booksources' => 'Жайнан хьосташ',
@@ -1640,17 +1776,18 @@ PICT # тайп тайпан
 'alllogstext' => 'Массо тéптар могӀам. {{SITENAME}}.
 Шуьга харжалур бу хилам оцу тептаре хьаьжжина, декъашхочун цӀе (дӀаяздар диц а цадеш) я цо хьейина агӀонаш (ишта дӀаяздар а диц цадеш).',
 'logempty' => 'Тептарш чохь хӀокху агӀона дӀаяздарш дац.',
+'log-title-wildcard' => 'ХӀокху символашца болалуш болу кортанаш карабе',
+'showhideselectedlogentries' => 'Гайта/къайлаяха хаьржина башхонаш',
 
 # Special:AllPages
 'allpages' => 'Массо агӀонаш',
-'alphaindexline' => 'оцу $1 кху $2',
+'alphaindexline' => 'тӀера $1 $2 кхаччалц',
 'nextpage' => 'Тlаьхьа йогlу агlо ($1)',
 'prevpage' => 'Хьалхалера агlо ($1)',
-'allpagesfrom' => 'Гучé яха агlонаш, йуьлалуш йолу оцу:',
+'allpagesfrom' => 'Гучé яха агӀонаш, йолалуш йолу оцу:',
 'allpagesto' => 'Арайахар сацадé оцу:',
 'allarticles' => 'Массо агӀонаш',
 'allinnamespace' => 'Массо агlонаш оцу цlери анахь «$1»',
-'allpagesnext' => 'Тlаьхьайогlурш',
 'allpagessubmit' => 'Кхочушдé',
 'allpagesprefix' => 'Лаха агlонаш, дlайуьлалуш йолу:',
 'allpagesbadtitle' => 'Цамагош йолу агlон цlе. Коьрта могlан юкъах ю юкъарвики меттанашан юкъе тlечlагlйина йолу хьаьрк йа магийна доцу оцу коьрта моlанца сабол элп йа кхин.',
@@ -1659,7 +1796,7 @@ PICT # тайп тайпан
 
 # Special:Categories
 'categories' => 'Категореш',
-'categoriespagetext' => '{{PLURAL:$1|Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.
+'categoriespagetext' => '{{PLURAL:$1|1=Лахара категореш чохь ю|Лахара категореш чохь ю}} агӀонаш я медиа-файлаш.
 Кхузахь гойтуш яц [[Special:UnusedCategories|лелош йоцу категореш]].
 Кхин дӀа [[Special:WantedCategories| хийла еза категореш]].',
 'categoriesfrom' => 'Гучé яха категореш, оцу:',
@@ -1675,7 +1812,7 @@ PICT # тайп тайпан
 'linksearch-ok' => 'Лаха',
 'linksearch-text' => 'Лело мега хӀоттош йолу символаш, масала, <code>*.wikipedia.org</code>.
 Лакхара даржан домен мукъа хила еза , масала<code>*.org</code><br />
-Ловш йолу {{PLURAL:$2|протокол|протоколаш}}: <code>$1</code> (Iад йитарца http://, протокол бакъалла язъен яцахь).',
+Ловш йолу {{PLURAL:$2|1=протокол|протоколаш}}: <code>$1</code> (Iад йитарца http://, протокол бакъалла язъен яцахь).',
 'linksearch-line' => '$2 — хьажораг кху $1',
 
 # Special:ListUsers
@@ -1685,8 +1822,8 @@ PICT # тайп тайпан
 
 # Special:ActiveUsers
 'activeusers' => 'Жигар декъашхой могlам',
-'activeusers-intro' => 'Лахахь гойтуш бу  {{PLURAL:$1|тӀаьхьара $1 динахь|тӀаьхьара $1 деношкахь}} хийцамаш бина декъашхой.',
-'activeusers-count' => '{{PLURAL:$3|тӀаьхьарчу $3 динахь|тӀаьхьара $3 деношкахь}} $1 {{PLURAL:$1|нисдар|нисдарш}} дина',
+'activeusers-intro' => 'Лахахь гойтуш бу  {{PLURAL:$1|1=тӀаьхьара $1 динахь|тӀаьхьара $1 деношкахь}} хийцамаш бина декъашхой.',
+'activeusers-count' => '{{PLURAL:$3|1=тӀаьхьарчу $3 динахь|тӀаьхьара $3 деношкахь}} $1 {{PLURAL:$1|1=нисдар|нисдарш}} дина',
 'activeusers-from' => 'Гучé баха декъашхой, болалуш болу тӀера:',
 'activeusers-hidebots' => 'Къайлабаха шабелхалой',
 'activeusers-hidesysops' => 'Къайлабаха куьйгалхой',
@@ -1694,9 +1831,15 @@ PICT # тайп тайпан
 
 # 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' => '(тобан могlам)',
+'listgrouprights-addgroup-all' => 'массо тобанийн юкъатоха йиш ю',
 
 # Email user
 'mailnologintext' => 'Электронан кехаташ кхехьийта йиш хилийта [[Special:UserLogin|системин чугӀо]] кхин декъашхошка хаамаш кхехьийта хьа [[Special:Preferences|гӀирса чохь]] бакъалла долу электронан почтан адрес хила деза.',
@@ -1716,33 +1859,35 @@ PICT # тайп тайпан
 'emailccme' => 'Соьга а кхосса хааман копи.',
 'emailsent' => 'Кехат дӏадахьийтина',
 'emailsenttext' => 'Хьан электроннан хаам дӏабахьийтина.',
+'emailuserfooter' => 'ХӀара хаам бахийтинера $1 {{GENDER:$1|декъащхочо}} $2 {{GENDER:$2|декъащхочунга}} «декъашхочунга хаам» олучу функцин гӀоьнца {{SITENAME}} проектан.',
 
 # Watchlist
 'watchlist' => 'Тергаме могӀам',
 'mywatchlist' => 'Тергаме могӀам',
 'watchlistfor2' => 'Цунна $1 $2',
 'watchlistanontext' => 'Тергаме могӀоме хьажа я тая кхочушде $1.',
-'watchnologin' => 'Ð¥Ñ\8cо Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а Ð³lиÑ\80Ñ\81ан',
+'watchnologin' => 'СиÑ\81Ñ\82емин Ñ\87Ñ\83гÓ\80о',
 'addwatch' => 'Тергаме могӀам юкъа тоха',
 'addedwatchtext' => 'Хlар агlо «[[:$1]]» тlетоьхна хьан [[Special:Watchlist|тидаме могlам чу]].
 Тlаьхьабогlу хийцамаш хlокх агlонна а кхунца дозуш долу дийцаре агlо а дlаяздийра ду кху могlамашкахь, ишта къастина хирду уьш шуьрочу элпашца хlокх агlон чохь [[Special:RecentChanges|керла хийцаме могlамашкахь]], бгlаьран га атту болуш.',
 'removewatch' => 'ДӀаяккха тергаме могӀам юкъар',
-'removedwatchtext' => 'Агlо «[[:$1]]» дlаяккхина йара хьан [[Special:Watchlist|тергаме могlам юкъар]].',
+'removedwatchtext' => 'АгӀо «[[:$1]]» дӀаяьккхина яра хьан [[Special:Watchlist|тергаме могӀанан юкъар]].',
 'watch' => 'Тидам бе',
 'watchthispage' => 'Тергам бé хlокху агlон',
 'unwatch' => 'Тергамах къаста',
 'notanarticle' => 'Бац яззам',
 'watchlist-details' => 'Хьан тергаме могlамца $1 {{PLURAL:$1|агlо|агlонаш|агlонаш}} ю, дийцаре агlонаша йоцуш.',
 'wlheader-showupdated' => "Хийцам бина агӀонаш '''Ӏаьржа''' шрифтцан билгальяха ю.",
-'wlnote' => 'Лахахьа {{PLURAL:$1|тlаьхьа богlу $1 хийцам|тlаьхьа богlу $1 хийцамаш|тlаьхьа богlу $1 хийцамаш}} хlокху {{PLURAL:$2|тlаьхьар|тlаьхьара|тlаьхьара}} <strong>$2</strong> {{plural:$2|сохьт|сохьатехь|сохьташкахь}}.',
+'wlnote' => 'Лахахьа {{PLURAL:$1|тlаьхьа богlу $1 хийцам|тlаьхьа богlу $1 хийцамаш|тlаьхьа богlу $1 хийцамаш}} хlокху {{PLURAL:$2|тlаьхьар|тlаьхьара|тlаьхьара}} <strong>$2</strong> {{PLURAL:$2|сохьт|сохьатехь|сохьташкахь}}.',
 'wlshowlast' => 'Гайта тlаьххьара $1 сахьташ $2 денош $3',
 'watchlist-options' => 'Тергаме могlаман гlирс нисбар',
 
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Тергаме мlогаман юкъаяккха…',
-'unwatching' => 'Тергаме мlогаман чура дlайаккха…',
+'unwatching' => 'Тергаме могӀанан чура дӀаяккхар…',
 
 'enotif_reset' => 'Билгал йаь ерриге агӀонаш хьаьжна санна',
+'changed' => 'хийцина',
 
 # Delete
 'deletepage' => 'ДӀаяккха агӀо',
@@ -1757,7 +1902,7 @@ PICT # тайп тайпан
 'confirmdeletetext' => "Хьо гӀерта агӀо я файл дӀаяккха '''дехар до''', дӀаяккхале хьалха хьажа [[{{MediaWiki:Policy-url}}|кхуза]].",
 'actioncomplete' => 'Дешдерг кхочушди',
 'actionfailed' => 'Кхочушъ дина дац',
-'deletedtext' => '«$1» дӀаяккхина яра.
+'deletedtext' => '«$1» дӀаяьккхина яра.
 Хьажа. $2 хьажарна оцу тӀаьхьара дӀаяхначара могӀаме.',
 'dellogpage' => 'ДӀадаьхнарш долу тéптар',
 'dellogpagetext' => 'Лахахь гойтуш ду дӀадахаршан тептар.',
@@ -1773,14 +1918,24 @@ PICT # тайп тайпан
 
 # Rollback
 'rollback' => 'Юхабаккха хийцам',
+'rollback_short' => 'Юхаяккхар',
 'rollbacklink' => 'юхаяккха',
-'rollbacklinkcount' => 'юхадаккха $1 {{PLURAL:$1|нисдар|нисдарш}}',
+'rollbacklinkcount' => 'юхадаккха $1 {{PLURAL:$1|1=нисдар|нисдарш}}',
 'rollbacklinkcount-morethan' => 'Юхадаккха $1 дукха {{PLURAL:$1|нисдар|нисдарш|нисдарш}}',
+'rollbackfailed' => 'Юхайоккхуш гӀалат ду',
+'alreadyrolled' => 'ТӀехьара [[User:$2|$2]] ([[User talk:$2|дийцаре]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) декъашхочо «[[:$1]]» агӀона  бина хийцамаш юхабаха цатарло,
+хӀинцале цхъаъ кхиъна хийцамаш юхабаха я агӀо тая.
+
+Хийцамаш бинарг [[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]]',
-'rollback-success' => 'Юха даьхна $1; нисдарш, $2 версен.',
+'revertpage-nouser' => 'Нисдарш (декъашхочун цӀе хьулйина) юхадаьхина башхаллин {{GENDER:$1|[[User:$1|$1]]}}',
+'rollback-success' => 'Юхадаьхна $1; нисдарш, $2 версен.',
 
 # Protect
 'protectlogpage' => 'Гlаролли тептар',
+'protectlogtext' => 'Лахахь гойту агӀона гӀоралла дарна бина хийцамаш чохь болу тептар.
+Хьа кхин йиш ю [[Special:ProtectedPages|хӀинца гӀоралла дина йолу агӀонийн могӀаме хьажа]].',
 'protectedarticle' => 'гlаролла дина агlо «[[$1]]»',
 'modifiedarticleprotection' => 'агlонан гlаролли локхалла хийцина «[[$1]]»',
 'unprotectedarticle' => 'ГӀоролла дӀадаьстина «[[$1]]»',
@@ -1793,9 +1948,9 @@ PICT # тайп тайпан
 'protect_expiry_invalid' => 'Нийса йоцу хан гlаролла дlайаларехь.',
 'protect_expiry_old' => 'Хан чаккхе — хьалхалера.',
 'protect-unchain-permissions' => 'Схьабелла кхин гӀорралин гӀирс',
-'protect-text' => "Кхузéхь хьо хьажало хийцалуш гlаролли локхалла оцу агlонашна '''$1'''.",
+'protect-text' => "Кхузéхь хьо хьажало хийцалуш гӀароллин локхалла оцу агӀонашна '''$1'''.",
 'protect-locked-access' => "Хьан дlаязваларéхь тоъал бакъо яц гlароллийн локхаллéхь агlон хийцам бá. Дlадоьлху хlоттийнарш оцу агlонна '''$1''':",
-'protect-cascadeon' => 'Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.',
+'protect-cascadeon' => 'Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|1=лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.',
 'protect-default' => 'Гlаролла йоцуш',
 'protect-fallback' => 'Бакъо оьшу «$1»',
 'protect-level-autoconfirmed' => 'Гlаролла дé оцу керла а дlабазбина боцучу декъашхойх',
@@ -1805,7 +1960,7 @@ PICT # тайп тайпан
 'protect-expiring-local' => 'чекхйолу $1',
 'protect-expiry-indefinite' => 'хан чаккхе йоцуш',
 'protect-cascade' => 'Гlаролла йé агlонаш, хlокху агlонца хlоттайелларш (чахчарé гlаролла)',
-'protect-cantedit' => 'Хьéга хийцам цабало хlокху агlон гlаролли локхалан, хlуд аьлча хьан бакъо яц оцун рéдаккха.',
+'protect-cantedit' => 'Хьéга хийцам цабало хӀокху агӀон гlаролли локхалан, хӀуд аьлча хьан бакъо яц оцунна тадар дан.',
 'protect-othertime' => 'Кхин хан:',
 'protect-othertime-op' => 'кхин хан',
 'protect-otherreason' => 'Кхин бахьна/тӀетохар:',
@@ -1817,8 +1972,10 @@ PICT # тайп тайпан
 ** гӀараялл агӀо',
 'protect-edit-reasonlist' => 'Бахьанин список нисяр',
 'protect-expiry-options' => '1 сахьт:1 hour,1 де:1 day,1 кӀиран:1 week,2 кӀиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
-'restriction-type' => 'Бакъо:',
+'restriction-type' => 'Бакъонаш:',
 'restriction-level' => 'ТӀекхочаран локхалла:',
+'minimum-size' => 'Лаххара бараме',
+'maximum-size' => 'Лаккхара бараме:',
 
 # Restrictions (nouns)
 'restriction-edit' => 'Тадар',
@@ -1827,14 +1984,15 @@ PICT # тайп тайпан
 'restriction-upload' => 'Чуйолуш',
 
 # Restriction levels
+'restriction-level-sysop' => 'дуьззина гӀоралла',
 'restriction-level-autoconfirmed' => 'дуьззина доцуш гӀаролла',
 'restriction-level-all' => 'массо барам',
 
 # Undelete
-'undelete' => 'ДIайайина йолу агIонашка хьажар',
+'undelete' => 'ДӀаяхна агӀонашка хьажар',
 'undeletepage' => 'ДӀаяхина агӀонашка хьажар а меттахӀоттор а',
 'undeletepagetitle' => "'''Лахахь гайтина хӀокху [[:$1]] агӀона дӀаяхина версеш'''.",
-'viewdeletedpage' => 'ДIайайина йолу агIонашка хьажар',
+'viewdeletedpage' => 'ДӀаяхна йолу агӀонашка хьажар',
 'undelete-fieldset-title' => 'МеттахӀоттае версеш',
 'undeleteextrahelp' => "Ерриге агӀонан истори меттахӀоттая массо а билгалонаш еса а йити '''«{{int:undeletebtn}}»''' тӀетаӀае.
 ЦхӀайолу агӀонан версеш меттахӀоттая хьалха меттахӀоттош йолу версеш билгалъяьхна тӀетагӀе '''«{{int:undeletebtn}}»'''.",
@@ -1842,11 +2000,10 @@ PICT # тайп тайпан
 Агӏо дӏаяккхинчул тӏяха юху кхолийна елахь меттахӏоттина йолу версеш гучуер ю керлачу версешна хьалха',
 'undeleterevdel' => 'Метта хlоттор хира дац, нагахь иза дакъошкахь дlадайина далахь а тlаьххьара кисак башхо йа хlума.
 Иштнарг хилча ахьа дlабаккха беза хlоттийна болу къастам йа хьагайта тlаьххьара дlайайина башхо.',
-'undelete-revision' => 'Декъашхочун $3 дӀайаьккхина верси $1 (цу $4 $5 хан):',
+'undelete-revision' => 'Декъашхочун $3 дӀаяьккхина верси $1 (цу $4 $5 хан):',
 'undeletebtn' => 'МеттахӀоттае',
 'undeletelink' => 'хьажа/меттахӀоттае',
 'undeleteviewlink' => 'хьажа',
-'undeletereset' => 'ЦӀанъян',
 'undeleteinvert' => 'Къастае массо',
 'undeletecomment' => 'Бахьан:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|хийцамаш|хийцамаш|хийцамаш}} меттахӀоттайина',
@@ -1854,7 +2011,12 @@ PICT # тайп тайпан
 'undeletedpage' => "'''МеттахӀоттайина агӀо «$1».'''
 
 ДӀадяхнарш долу могӀане [[Special:Log/delete|тéптаре хьажа]].",
+'undelete-header' => 'Дукху хан йоцуш дӀаяхна агӀонаш хьажа мега [[Special:Log/delete|дӀадаьхьнарш долу тептар чохь]].',
+'undelete-search-title' => 'ДӀаяхна агӀонаш лахар',
+'undelete-search-box' => 'ДӀаяхна агӀонаш лахар',
+'undelete-search-prefix' => 'Гайта агӀонаш йолалуш йолу тӀера:',
 'undelete-search-submit' => 'Лаха',
+'undelete-no-results' => 'Архив чохь йогӀуш агӀонаш цакарий.',
 'undelete-show-file-submit' => 'Хlаъ',
 
 # Namespace form on various pages
@@ -1870,6 +2032,7 @@ PICT # тайп тайпан
 'contributions-title' => '{{GENDER:$1|Декъашхочун}} къинхьегам $1',
 'mycontris' => 'Сан къинхьегам',
 'contribsub2' => 'Къинхьегам $1 ($2)',
+'nocontribs' => 'Дехарца хийцамаш цакарий.',
 'uctop' => ' (тlаьхьара)',
 'month' => 'Баттаца (я хьалхе):',
 'year' => 'Шерачохь (я хьалхе):',
@@ -1881,6 +2044,8 @@ PICT # тайп тайпан
 'sp-contributions-logs' => 'тéптарш',
 'sp-contributions-talk' => 'дийцаре',
 'sp-contributions-userrights' => 'декъашхочун бакъона урхалладар',
+'sp-contributions-blocked-notice' => 'ХӀара декъашхочун дӀаяздар блоктоьхна ду.
+Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
 'sp-contributions-blocked-notice-anon' => 'ХӀара IP-адрес хӀинца блоктоьхна ду.
 Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
 'sp-contributions-search' => 'Къинхьегам лахар',
@@ -1898,7 +2063,7 @@ PICT # тайп тайпан
 'isredirect' => 'агlо-дlасахьажайар',
 'istemplate' => 'лата йe',
 'isimage' => 'Файлан хьажораг',
-'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайодарг|хьалхайодарш|хьалхайодарш}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=хьалхайодарг|хьалхайодарш}} $1',
 'whatlinkshere-next' => '{{PLURAL:$1|тlаьхьайогlург|тlаьхьайогlурш|тlаьхьайогlурш}} $1',
 'whatlinkshere-links' => '← хьажорагаш',
 'whatlinkshere-hideredirs' => '$1 дlасахьажйар',
@@ -1918,7 +2083,6 @@ PICT # тайп тайпан
 'ipadressorusername' => 'IP-адрес я декъашхочун цӀе:',
 'ipbexpiry' => 'Хан чекхйолу:',
 'ipbreason' => 'Бахьан:',
-'ipbreasonotherlist' => 'Кхин бахьан',
 'ipbreason-dropdown' => '* Белхан некъ дӀакъовлар бахьанаш:
 ** Харца хаам бар
 ** АгӀонан чураниг дӀаяккхар
@@ -1933,8 +2097,7 @@ PICT # тайп тайпан
 'ipbenableautoblock' => 'Блоктоха декъашхочо лелош йолу IP-адресашна',
 'ipbsubmit' => 'Блоктоха хӀокху декъашхочун/адресна',
 'ipbother' => 'Кхин хан:',
-'ipboptions' => '2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
-'ipbotherreason' => 'Кхин бахьан/тӀетохар:',
+'ipboptions' => '2 сахьат:2 hours,1 де:1 day,3 де:3 days,1 кlиран:1 week,2 кlиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цӀкъа:infinite',
 'ipbwatchuser' => 'ТӀетоха тергаме могӀам юкъа цуьнан долахь йолу агӀо а цуьнан дийцаре агӀо а',
 'ipb-disableusertalk' => 'Цамагдо шин дийцаре агӀо та я блоктоьхна хан чекхъяллалц',
 'ipb-change-block' => 'Юхаблоктоха декъашхочун оьцу хийцамашца',
@@ -1942,7 +2105,7 @@ PICT # тайп тайпан
 'blockipsuccesssub' => 'Блоктохар чакхдели',
 'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] {{GENDER:$1|блоктоьхна ву|блоктоьхна ю}}.<br />
 Хьажа. [[Special:BlockList|блоктоьхна IP-адресашан могӀам]].',
-'ipb-blockingself' => 'Хьо хьайна блоктухуш ву/ю! Лууш вуй/юй хьо и кхочушдан?',
+'ipb-blockingself' => 'Хьо хьайна блоктоха гӀерта! Лаьий хьона и кхочушдан?',
 'ipb-edit-dropdown' => 'Бахьанин список нисяр',
 'ipb-unblock-addr' => 'ДӀаякхаблок $1',
 'ipb-unblock' => 'дӀаякхаблок декъашхонтӀера я IP-адрес тӀера',
@@ -1989,7 +2152,9 @@ PICT # тайп тайпан
 'block-log-flags-noautoblock' => 'ша блоктухарг дӏаяйина',
 'block-log-flags-noemail' => 'цамаго кехаташ кхехӀита',
 'block-log-flags-nousertalk' => 'шин дийцаре агӀо тая лууш дац',
+'block-log-flags-hiddenname' => 'декъашхочун цӀе къайлаяьккхина',
 'ipb-needreblock' => 'ХӀара $1 {{GENDER:$1|блоктоьхна ву|блоктоьхна ю}}. Лаьий хьуна блоктохаран параметраш хийца?',
+'unblock-hideuser' => 'Декъашхочун тӀера блокдӀаяккха хьа таро яц, цуна цӀе хьулйина хилар бахьанехь.',
 
 # Move page
 'move-page' => '$1 — цlе хийцар',
@@ -2027,8 +2192,9 @@ PICT # тайп тайпан
 
 Ишта чу ханчохь, ахьа дехьа яккха йезар ю йа куьйга хlоттайар, нагахь иза хьашт йалахь.",
 'movearticle' => 'Цle хийца хlокху агlон',
+'moveuserpage-warning' => "'''Тергам бе.''' Хьо декъашхочун агӀона цӀе хийца гӀерта. Дехар до, тергам бе, декъашхочун агӀона цӀе бен хийца лур яц, декъашхочун дӀаяздаран цӀе хийца лур яц.",
 'newtitle' => 'Керла цlе',
-'move-watch' => 'Латайé хlара агlо тергаме могlам юкъа',
+'move-watch' => 'Латайé хӀара агӀо тергаме могӀанан юкъахь',
 'movepagebtn' => 'Агlон цlе хийца',
 'pagemovedsub' => 'Агlон цlе хийцина',
 'movepage-moved' => "'''Агlон цlе «$1» хийцина хlокху «$2»'''",
@@ -2036,16 +2202,15 @@ PICT # тайп тайпан
 'movepage-moved-noredirect' => 'ДӀасхьажориг кхоллар дохина.',
 'articleexists' => 'Хlарасанна цlе йолу агlо йолуш ю йа ахьа гойтуш йолу цlе магош яц.
 Дехар до, харжа кхин цlе.',
-'talkexists' => "'''Агlон цlе хийцина йара, амма дийцаре агlон цlе хийца цало, хlунда аьльча иза санна цlе йолу агlо йолуш ю. Дехар до, куьйга хlотта уьш.'''",
-'movedto' => 'цlе хийцина оцу',
 'movetalk' => 'Цуьнца йогlуш йолу дийцаре агlон цlе хийцар',
 'move-subpages' => 'ЦӀeрш хийцае бухара агӀонаши ($1 кхаччалц)',
 'move-talk-subpages' => 'ЦӀе хийца бухара агӀонаши а агӀонашан дийцаре а ($1  кхаччалц)',
 'movepage-page-exists' => 'Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.',
-'movepage-page-moved' => 'АгӀона $1 цӀе хийцина оцу $2.',
+'movepage-page-moved' => 'АгӀона $1 цӀе хийцина  $2.',
 'movelogpage' => 'Цlераш хийцаран тептар',
-'movesubpage' => '{{PLURAL:$1|Бухара агӀо|Бухара агӀонаш}}',
-'movesubpagetext' => 'ХӀокху агӀона $1 {{PLURAL:$1|бухара агӀо ю|бухара агӀонаш ю}}.',
+'movelogpagetext' => 'Лахахьа гойтуш ю цӀе хийцина агӀонаш.',
+'movesubpage' => '{{PLURAL:$1|1=Бухара агӀо|Бухара агӀонаш}}',
+'movesubpagetext' => 'ХӀокху агӀона $1 {{PLURAL:$1|1=бухара агӀо ю|бухара агӀонаш ю}}.',
 'movenosubpage' => 'ХӀокху агӀона бухара агӀонаш яц.',
 'movereason' => 'Бахьан:',
 'revertmove' => 'юхаяккха',
@@ -2054,15 +2219,15 @@ PICT # тайп тайпан
 И цӀе йолу аг1о «[[:$1]]» йолуш ю. 
 Лаьий хьуна и дӀаяккха, цӀе хийца таро хилийта?',
 'delete_and_move_confirm' => 'Хlаъ, дӀаяккха хlара агlо',
-'delete_and_move_reason' => 'ДӀаяккхина цӀе хийца я таро хилийта  «[[$1]]»',
+'delete_and_move_reason' => 'ДӀаяьккхина цӀе хийца я таро хилийта  «[[$1]]»',
 'selfmove' => 'АгӀона цӏе хийца йиш яц: и цӏе хӏокху агӏона йолуш ю.',
 'immobile-source-page' => 'ХӀокху агӏона цӏе хийца йиш яц.',
 'bad-target-model' => 'Йиш яц хийца $1 оцу $2: цхьаьна ца догӀу моделин хаамаш.',
-'move-leave-redirect' => 'Ó\80адйиÑ\82а Ð´Ó\80аÑ\81аÑ\85Ñ\8cажоÑ\80иг',
-'protectedpagemovewarning' => "'''Дlахьедар.''' Хlара агlо гlаролла йина йу; цlе хийца йа нисйа а бакъо йолуш адаманкуьйгалхой бе бац.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
-'semiprotectedpagemovewarning' => "'''Дlахьедо.''' Хlара агlо гlаролла йина йу; дlабазбиначу декъашхошка бе цlе хийцалуш яц.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
+'move-leave-redirect' => 'Ó\80адйиÑ\82а Ð´Ó\80аÑ\81аÑ\85Ñ\8cажоÑ\80аг',
+'protectedpagemovewarning' => "'''ДӀахьедар.''' ХӀара агӀо гӀаролла йина ю; цӀе хийца я нисйа а бакъо йолуш куьйгалхой бе бац.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
+'semiprotectedpagemovewarning' => "'''ДӀахьедо.''' ХӀара агӀо гӀаролла йина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
 
 # Export
 'export' => 'АгӀонаш араяхар',
@@ -2074,6 +2239,8 @@ PICT # тайп тайпан
 'exportcuronly' => 'Карара верси бен юкъа ма тоха, юзийна хьалхалерра истори йоцуш',
 'export-submit' => 'Экспорт ян',
 'export-addcattext' => 'ТӀетоха агӀонаш категори чура:',
+'export-addcat' => 'ТӀетоха',
+'export-addns' => 'ТӀетоха',
 'export-download' => 'Кховда де файл сана Ӏалашдан',
 'export-templates' => 'Латадé кепаш',
 
@@ -2104,9 +2271,11 @@ PICT # тайп тайпан
 'import-upload-filename' => 'Файлан цӀе:',
 'import-comment' => 'Билгалдаккхар:',
 'importnosources' => 'Юкъаравики-импортан хьост хаьржина яцара, дуьхьала хийцамашан истори чуяккхар дӀадайина ду.',
+'import-error-special' => '«$1» агӀо импорт йина яц, и къастина цӀерийн меттигашан юкъайогӀуш хиларна.',
 
 # Import log
 'importlogpage' => 'Импортан тептар',
+'importlogpagetext' => 'Куьйгалхоша агӀонаш импорт яр царна бина хийцамашца кхечу википедеш чура.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Декъашхочуьна агlо',
@@ -2125,8 +2294,8 @@ PICT # тайп тайпан
 'tooltip-ca-unprotect' => 'Дlадаккха хlокху агlонна долу гаролла',
 'tooltip-ca-delete' => 'ДӀаяккха хӀара агӀо',
 'tooltip-ca-move' => 'Агlон цlе хийца',
-'tooltip-ca-watch' => 'Тlетоха хlара агlо сан тергаме могlам юкъа',
-'tooltip-ca-unwatch' => 'Дlайаккха хlара агlо хьай тергаме могlам юкъар',
+'tooltip-ca-watch' => 'ТӀетоха хӀара агӀо сан тергаме могӀанан юкъа',
+'tooltip-ca-unwatch' => 'ДӀаяккха хӀара агӀо хьай тергаме могӀанан юкъар',
 'tooltip-search' => 'Лаха иза дош',
 'tooltip-search-go' => 'Билгала и санна цӀе йолучу агӀон чу дехьа гӀо',
 'tooltip-search-fulltext' => 'Лаха агlонаш ше чулацамехь хlара йоза долуш',
@@ -2137,13 +2306,13 @@ PICT # тайп тайпан
 'tooltip-n-currentevents' => 'Дlаоьхуш болу хаамашна могlам',
 'tooltip-n-recentchanges' => 'Тlаьххьаралера хийцаман могlам',
 'tooltip-n-randompage' => 'Хьажа цахууш нисйеллачу агlоне',
-'tooltip-n-help' => 'Ð\9dиÑ\81воÑ\85аамаÑ\88 Ð¾Ñ\86Ñ\83 ÐºÑ\85олламÑ\86а Â«{{SITENAME}}»',
+'tooltip-n-help' => 'Ð\93Ó\80оде Ð¼ÐµÑ\82Ñ\82иг',
 'tooltip-t-whatlinkshere' => 'Массо агlон могlам, хlокху агlонтlе хьажийна йолу',
 'tooltip-t-recentchangeslinked' => 'Тlаьхьарлера хийцамаш хlокху агlонашкахь, мичхьа хьажийна хlара агlо',
 'tooltip-feed-rss' => 'Хьагайтар оцу RSS цани хlокху агlон',
 'tooltip-feed-atom' => 'Хьагайтар оцу Atom цани хlокху агlон',
 'tooltip-t-contributions' => 'Хlокху декъашхочо хийцина йолу агlонашан могlам',
-'tooltip-t-emailuser' => 'Дlабахьийта хаам оцу декъашхона',
+'tooltip-t-emailuser' => 'ДӀабахьийта хаам оцу декъашхона',
 'tooltip-t-upload' => 'Чуйаха файлаш',
 'tooltip-t-specialpages' => 'Белха агlонаши могlам',
 'tooltip-t-print' => 'Хlокху агlонна зорба туху башхо',
@@ -2151,26 +2320,26 @@ PICT # тайп тайпан
 'tooltip-ca-nstab-main' => 'Яззамна чулацам',
 'tooltip-ca-nstab-user' => 'ХӀора декъашхочун долахь йолу агӀо ю',
 'tooltip-ca-nstab-media' => 'Медиа-файл',
-'tooltip-ca-nstab-special' => 'Хlара белха агlо йу, хlара рéдаккхалуш яц',
+'tooltip-ca-nstab-special' => 'ХӀара белха агӀо ю, хӀара тая луш яц',
 'tooltip-ca-nstab-project' => 'Кхолламан дакъа',
 'tooltip-ca-nstab-image' => 'Хlуман агlо',
 'tooltip-ca-nstab-mediawiki' => 'Хааман агlо MediaWiki',
 'tooltip-ca-nstab-template' => 'Куцкепа агlо',
-'tooltip-ca-nstab-category' => 'Ð\9aаÑ\82егоÑ\80еÑ\88и агӀо',
+'tooltip-ca-nstab-category' => 'Ð\9aаÑ\82егоÑ\80еÑ\88ан агӀо',
 'tooltip-minoredit' => 'Къастам бé хlокху хийцамна кlеззиг боуш санна',
 'tooltip-save' => 'Хьан хийцамаш lалашбой',
 'tooltip-preview' => 'Дехар до, агlо lалаш йарал хьалха хьажа муха йу яз!',
 'tooltip-diff' => 'Гайта долуш долу йозанах бина болу хийцам.',
 'tooltip-compareselectedversions' => 'Хlокху шина хаьржина агlона башхо муха ю хьажа.',
-'tooltip-watch' => 'Тlетоха хlара агlо сан тергаме могlам юкъа',
+'tooltip-watch' => 'ТӀетоха хӀара агӀо сан тергаме могӀанан юкъа',
 'tooltip-rollback' => 'Цхьоз тlетаlийча дlабаккха кхечо бина болу тlаьххьара хийцам',
 'tooltip-undo' => 'Дlабаккха бина болу хийцам а хьалхьажар гойтуш, дlайаккхарна бахьан гайта аьтту беш',
 'tooltip-summary' => 'Язъе йоца цӀе',
 
 # Stylesheets
-'common.css' => '/** Чуйиллина йолу кхузе CSS хир йу лелош масхьа кечйечу чохь */',
-'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа Monobook чохь */',
-'print.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа зорба тухучуче чохь */',
+'common.css' => '/** Чуйиллина йолу кхузе CSS хир ю лелош масхьа кечйечу чохь */',
+'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа Monobook чохь */',
+'print.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа зорба тухучуче чохь */',
 
 # Scripts
 'common.js' => '/* Чуйиллина йолу кхузе JavaScript код гучу ера ю массо декъашхошна оцара схьаелларца хlора агlо */',
@@ -2179,8 +2348,8 @@ PICT # тайп тайпан
 # Attribution
 'siteuser' => 'декъашхо {{grammar:genitive|{{SITENAME}}}} $1',
 'others' => 'кхин',
-'siteusers' => '{{PLURAL:$2|декъашхо|декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|цӀе хьулйина декъашхо|цӀе хьулйина декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=декъашхо|декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=цӀе хьулйина декъашхо|цӀе хьулйина декъашхой}} {{grammar:genitive|{{SITENAME}}}} $1',
 'nocredits' => 'Бац декъашхойн могlам хlокху яззамца',
 
 # Spam protection
@@ -2193,6 +2362,10 @@ PICT # тайп тайпан
 'pageinfo-language' => 'АгӀона мотт',
 'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
 'pageinfo-redirectsto-info' => 'Хаам',
+'pageinfo-contentpage-yes' => 'ХӀаъ',
+'pageinfo-protect-cascading' => 'Чахчарин гӀоралла кхузара',
+'pageinfo-protect-cascading-yes' => 'ХӀаъ',
+'pageinfo-protect-cascading-from' => 'Чахчарин гӀоралла тӀера',
 'pageinfo-category-info' => 'Категорех лаьцна хаам',
 
 # Skin names
@@ -2206,6 +2379,7 @@ PICT # тайп тайпан
 
 # Patrol log
 'patrol-log-page' => 'ТӀехьажаран тептар',
+'patrol-log-header' => 'Хьажжина версеш йолу тептар.',
 'log-show-hide-patrol' => '$1 тӀехьажаран тептар',
 
 # Browsing diffs
@@ -2217,15 +2391,15 @@ PICT # тайп тайпан
 'thumbsize' => 'Жима дина суьртан барам:',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|агlо|агlонаш|агlонаш}}',
 'file-info' => 'файлан барам: $1, MIME-тайп: $2',
-'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселш}}, файлан барам: $3, MIME-тайп: $4',
-'file-info-size-pages' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81елÑ\88, Ñ\84айлан Ð±Ð°Ñ\80ам: $3, MIME-Ñ\82айп: $4, $5 {{PLURAL:$5|агӀо|агӀонаш}}',
+'file-info-size' => '$1 × $2 пиксель, файлан барам: $3, MIME-тайп: $4',
+'file-info-size-pages' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81елÑ\8c, Ñ\84айлан Ð±Ð°Ñ\80ам: $3, MIME-Ñ\82айп: $4, $5 {{PLURAL:$5|1=агӀо|агӀонаш}}',
 'file-nohires' => 'Кхи йоккха гlоле башхо яц.',
 'svg-long-desc' => 'SVG-файл, лартӀахь ю $1 × $2 {{PLURAL:$2|пиксель|пикселш|пикселш}}, файлан барам: $3',
-'svg-long-desc-animated' => 'Анимироват йина SVG-файл, номинальни $1 × $2 {{PLURAL:$2|пиксель|пикселш}}, файлан барам: $3',
+'svg-long-desc-animated' => 'Анимироват йина SVG-файл, номиналан $1 × $2 пиксель, файлан барам: $3',
 'show-big-image' => 'Сурт цlанал лаккхара бакъонца',
 'show-big-image-preview' => 'Барам хьажале: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Кхин шоралла|Кхин шоралла}}: $1.',
-'show-big-image-size' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81елÑ\88',
+'show-big-image-other' => '{{PLURAL:$2|1=Кхин шоралла|Кхин шоралла}}: $1.',
+'show-big-image-size' => '$1 Ã\97 $2 Ð¿Ð¸ÐºÑ\81елÑ\8c',
 
 # Special:NewFiles
 'newimages' => 'Керлачу файлийн галерей',
@@ -2233,17 +2407,27 @@ PICT # тайп тайпан
 'newimages-legend' => 'Литтар',
 'showhidebots' => '$1 шабелхалой',
 'ilsubmit' => 'Лаха',
+'bydate' => 'терахьашца',
 'sp-newimages-showfrom' => 'Гайта керла файлаш $2, $1 тӀера дуьйна',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'seconds-abbrev' => '$1оцу',
 'hours' => '{{PLURAL:$1|1 сахьт}}',
 'days' => '{{PLURAL:$1|$1 де}}',
+'weeks' => '{{PLURAL:$1|$1 кӀира}}',
+'years' => '$1 {{PLURAL:$1|шо}}',
 'ago' => '$1 хьалха',
 
 # Human-readable timestamps
 'hours-ago' => '$1 {{PLURAL:$1|сахьт}} хьалха',
 'minutes-ago' => '$1 {{PLURAL:$1|минут}} хьалха',
+'seconds-ago' => '$1 {{PLURAL:$1|секунд}} хьалха',
+'monday-at' => 'оршотан дийнахь $1',
+'wednesday-at' => 'кхаарин дийнахь $1',
+'thursday-at' => 'еарин дийнахь $1',
+'friday-at' => 'пӀераскан дийнахь $1',
+'saturday-at' => 'шот дийнахь $1',
+'sunday-at' => 'кӀиранан дийнахь $1',
 'yesterday-at' => 'селхана $1 даьлча',
 
 # Bad image list
@@ -2287,6 +2471,7 @@ PICT # тайп тайпан
 'exif-model' => 'Камеран модель',
 'exif-software' => 'Лелина программа',
 'exif-copyright' => 'Авторан бакъо ерг',
+'exif-exifversion' => 'Верси Exif',
 'exif-colorspace' => 'Беснашан хьал',
 'exif-compressedbitsperpixel' => 'Бесан кIоргалла дацдина чул тӀехьа',
 'exif-pixelxdimension' => 'Суьртан локхалла',
@@ -2314,6 +2499,7 @@ PICT # тайп тайпан
 'exif-originaltransmissionref' => 'ДӀадолалун меттиган код',
 'exif-label' => 'Билгало',
 'exif-datetimemetadata' => 'ТӀехьара метахаамаш хийцина терахь',
+'exif-usageterms' => 'Лелоран хьал',
 'exif-pngfilecomment' => 'PNG-файлан билгалдаккхар',
 'exif-giffilecomment' => 'GIF-файлан билгалдаккхар',
 
@@ -2322,10 +2508,16 @@ PICT # тайп тайпан
 
 'exif-copyrighted-false' => 'Юкъараллин хьал',
 
+'exif-unknowndate' => 'Хууш доцу терахь',
+
 'exif-orientation-1' => 'Лартӏахь',
 
 'exif-xyresolution-i' => '$1 тӏадамаш дюйман',
 
+'exif-lightsource-1' => 'Ден хьехам',
+'exif-lightsource-9' => 'Хаза хенан хӀоттам',
+'exif-lightsource-10' => 'Мархаш йолу',
+
 'exif-filesource-3' => 'Терахьийн суртдохку аппарат',
 
 'exif-scenetype-1' => 'Сурт даьккхина нис дуьххьал',
@@ -2339,22 +2531,18 @@ PICT # тайп тайпан
 'exif-sharpness-0' => 'Лартӏахь',
 
 'exif-dc-date' => 'Терахь(ш)',
-
-# External editor support
-'edit-externally' => 'Рéдаккха хlокху хlуман, арахьара диллагlарам лелош',
-'edit-externally-help' => '(мадарра хьажа. оцу [https://www.mediawiki.org/wiki/Manual:External_editors куьйгалийца дlахlотторе])',
+'exif-dc-rights' => 'Бакъонаш',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'массо',
 'namespacesall' => 'массо',
 'monthsall' => 'массо',
-'limitall' => 'массо',
 
 # Delete conflict
-'confirmrecreate' => "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяккхина, ахьа иза тая йолийча, дӀаяккхарна бахьна:
+'confirmrecreate' => "Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча, дӀаяккхарна бахьна:
 : ''$2''
 Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.",
-'confirmrecreate-noreason' => 'Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяккхина, ахьа иза тая йолийча. Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.',
+'confirmrecreate-noreason' => 'Декъашхочо [[User:$1|$1]] ([[User talk:$1|дийцаре]]) хӀара агӀо дӀаяьккхина, ахьа иза тая йолийча. Дехар до, тешал де, хьо иза агӀо меттахӀотто лууш ву/ю але.',
 
 # action=watch/unwatch
 'confirm-watch-top' => 'ТӀетоха хӀара агӀо хьан тергаме могӀам юкъа?',
@@ -2383,7 +2571,7 @@ PICT # тайп тайпан
 
 # Live preview
 'livepreview-loading' => 'Чуйолуш…',
-'livepreview-ready' => 'Чуйолуш… Кийча йу!',
+'livepreview-ready' => 'Чуйолуш… Кийча ю!',
 
 # Watchlist editor
 'watchlistedit-normal-title' => 'Тергаме могӀанийн хийцамаш',
@@ -2401,7 +2589,7 @@ PICT # тайп тайпан
 'watchlistedit-raw-submit' => 'МогӀам Ӏалашбар',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Могlам чура агlонашан хийцамаш',
+'watchlisttools-view' => 'МогӀам чура агӀонашан хийцамаш',
 'watchlisttools-edit' => 'Хьажа/нисбé могlам',
 'watchlisttools-raw' => 'Йоза санна нисдé',
 
@@ -2410,9 +2598,26 @@ PICT # тайп тайпан
 
 # Special:Version
 'version' => 'Верси MediaWiki',
+'version-extensions' => 'ДӀахӀоттийна шордарш',
+'version-specialpages' => 'Белхан агӀонаш',
+'version-parserhooks' => 'Cинтаксисан къастор схьалоцурш',
 'version-variables' => 'Хийцаме',
 'version-other' => 'Кхин',
+'version-mediahandlers' => 'Медиа кеч ерраш',
+'version-parser-extensiontags' => 'Cинтаксисан къасторан шораллин тегаш',
+'version-parser-function-hooks' => 'Cинтаксисан къасторан функци схьалоцурш',
+'version-version' => '(Верси $1)',
 'version-license' => 'Бакъо',
+'version-ext-colheader-version' => 'Верси',
+'version-poweredby-credits' => "ХӀара вики болх беш ю '''[https://www.mediawiki.org/ MediaWiki]''' движок тӀехь, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'кхин',
+'version-license-info' => 'MediaWiki ю маьрша программин латораг, шу йиш ю фондас арахецна йолу GNU General Public License лицензица и яржо я хийца а.
+
+MediaWiki яржош ю и шуна пайдане хир яц те аьлла, амма  ЦХЬА ЮКЪАРАХИЛАР ДОЦУШ. Хь. кхин. лицензи мадарра GNU General Public License .
+
+Шоьга кхача езаш яра [{{SERVER}}{{SCRIPTPATH}}/COPYING копи GNU General Public License] хӀокху программица, кхаьчна яцахь язъе Free Software Foundation, Inc., адрес тӀе: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA я [//www.gnu.org/licenses/old-licenses/gpl-2.0.html еша и онлайнехь].',
+'version-software' => 'ДӀахӀоттийна программин латтор',
+'version-software-version' => 'Верси',
 
 # Special:Redirect
 'redirect' => 'Декъашхочун файлан тӀера дӀасхьажор',
@@ -2439,7 +2644,7 @@ PICT # тайп тайпан
 * <strong class="mw-specialpagerestricted">Кlеззиг таронаш йолу леррина агlонаш.</strong>',
 'specialpages-group-maintenance' => 'Жамlаш гlирса хьашташ кхочушдар',
 'specialpages-group-other' => 'Кхин гlуллакхан агlонаш',
-'specialpages-group-login' => 'Ð¥Ñ\8cой Ð²Ð¾Ð²Ð·Ð¸Ð¹Ñ\82а/йовзийÑ\82а / Ð´Ó\80авазло/дÓ\80аÑ\8fзло',
+'specialpages-group-login' => 'СиÑ\81Ñ\82емин Ñ\87Ñ\83гÓ\80о / Ð´Ó\80аÑ\8fздаÑ\80 ÐºÑ\85олла',
 'specialpages-group-changes' => 'Керла нисдарш а тéптарш',
 'specialpages-group-media' => 'Жамlаш оцу медиа-гlирсашан а чуяхарш',
 'specialpages-group-users' => 'Декъашхой а бакъонаш',
@@ -2457,19 +2662,20 @@ PICT # тайп тайпан
 'tags' => 'Болш болу хийцаман къастам',
 'tag-filter' => 'Къастам [[Special:Tags|хьажар]]:',
 'tag-filter-submit' => 'Литта',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Билгало|Билгалонаш}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Билгало|Билгалонаш}}]]: $2)',
 'tags-title' => 'Билгалонаш',
 'tags-intro' => 'ХӀокху агӀона чохь гойтуш бу билгалошан могӀам царца программин латторо билгал доху нисдарш, кхин билгалошан маьӀна а.',
 'tags-tag' => 'Билгалона цӀе',
 'tags-display-header' => 'МогӀам чохь хийцамаш гар',
 'tags-description-header' => 'МаьӀнан дуьззина сурт хӀоттор',
+'tags-active-header' => 'Жигара?',
 'tags-hitcount-header' => 'Къастам бина нисдарш',
+'tags-active-yes' => 'ХӀаъ',
 'tags-edit' => 'нисйé',
 'tags-hitcount' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
 
 # Special:ComparePages
 'comparepages' => 'АгӀонаш муха ю хьажар',
-'compare-selector' => 'АгӀонашан версеш муха ю хьажар',
 'compare-page1' => 'Дуьххьаралера агӀо',
 'compare-page2' => 'ШолгӀа агӀо',
 'compare-rev1' => 'Дуьххьаралера верси',
@@ -2477,11 +2683,11 @@ PICT # тайп тайпан
 'compare-submit' => 'Муха ю хьажа',
 
 # Database error messages
-'dberr-header' => 'Хlара вики ловш йу халона бала',
+'dberr-header' => 'ХӀара вики ловш ю халона бала',
 'dberr-problems' => 'Бехк ма бил! Хlинц машан меттиган хилла гlирсаца халонаш.',
 'dberr-again' => 'Хьажа карла йаккха агlо массех минот йаьлча.',
 'dberr-info' => '(аьтто ца хили зlе хlотта гlулкхдечуьнца бухара хаамашца: $1)',
-'dberr-usegoogle' => 'Цlачун хьо хьажа лаха гlонца Google.',
+'dberr-usegoogle' => 'ЦӀачун хьо хьажа лаха гӀоьнца Google.',
 'dberr-outofdate' => 'Хьуна хаалахь, цуьна йолу меттиг хила мега тишйелла черахь.',
 
 # HTML forms
@@ -2489,14 +2695,32 @@ PICT # тайп тайпан
 'htmlform-submit' => 'ДӀадахьийта',
 'htmlform-reset' => 'Цаоьшу хийцамаш',
 'htmlform-selectorother-other' => 'Кхин',
+'htmlform-yes' => 'ХӀаъ',
 
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|дӀаяьккхина}} агӀо $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|меттахӀоттайина|меттахӀоттайина}} агӀо $3',
-'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
-'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажийнарг цаюьтуш',
+'logentry-delete-event' => '$1 {{GENDER:$2|хийцина}} гуш хилар {{PLURAL:$5|1=$5 дӀаяздаран|$5 дӀаяздаршан}} тептаран → $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} гуш хилар $3: $4 агӀорахь',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|хийцина}} $3 агӀона тептаран дӀаяздарш гуш хилар',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|хийцина}} $3 агӀона верси гуш хилар',
+'logentry-suppress-event' => '$1 къайлаха {{GENDER:$2|хийцина}} тептаран {{PLURAL:$5|1=$5 дӀаяздар|$5 дӀаяздарш}} гуш хилар $3: $4 чохь',
+'logentry-suppress-revision' => '$1 къайлаха {{GENDER:$2|хийцина}} {{PLURAL:$5|1=$5 верси|$5 версеш}} $3: $4 чохь гуш хилар',
+'logentry-suppress-event-legacy' => '$1 къайлаха {{GENDER:$2|хийцина}} $3 тептар чура дӀаяздарш гуш хилар',
+'logentry-suppress-revision-legacy' => '$1 къайлаха {{GENDER:$2|хийцина}} $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 {{GENDER:$2|цӀе хийцина}} $3 → $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина}} $3 → $4 дӀасахьажийнарг цаюьтуш',
 'logentry-move-move_redir' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажоран тӀохул',
 'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажоран тӀохул а дӀасахьажийнарг цаюьтуш а',
+'logentry-patrol-patrol-auto' => '$1 автоматически {{GENDER:$2|хьаьжина}} $3 агӀона версега $4',
 'logentry-newusers-newusers' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
 'logentry-newusers-create' => '{{GENDER:$2|ДӀавазвелла|ДӀаязелла}} керла декъашхо $1',
 'logentry-newusers-autocreate' => 'Автоматически кхоьллина {{GENDER:$2|декъашхочун}} $1 дӀаяздар',
@@ -2506,31 +2730,46 @@ PICT # тайп тайпан
 
 # Feedback
 'feedback-cancel' => 'Цаоьшу',
+'feedback-close' => 'Кийчча ю',
 
 # Search suggestions
 'searchsuggest-search' => 'Лаха',
+'searchsuggest-containing' => 'чуьраниг…',
 
 # Durations
+'duration-seconds' => '$1 {{PLURAL:$1|секунд}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минут}}',
 'duration-hours' => '$1 {{PLURAL:$1|сахьт}}',
 'duration-days' => '$1 {{PLURAL:$1|де}}',
+'duration-years' => '$1 {{PLURAL:$1|шо}}',
 
 # Limit report
 'limitreport-title' => 'АгӀона хӀоттам къасторан хаамаш:',
 'limitreport-cputime' => 'Процессоран хан лелор',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунд}}',
 'limitreport-walltime' => 'Йодуш йолу хенахь лелор',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунд}}',
 'limitreport-ppvisitednodes' => 'Препроцессор хьаьжна шадин дукхалла',
 'limitreport-ppgeneratednodes' => 'Препроцессорс сгенерировать бина шадин дукхалла',
 'limitreport-postexpandincludesize' => 'Схьаяьстина юккъерчаран барам',
-'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байт|байташ}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байт}}',
 'limitreport-templateargumentsize' => 'Кепан аргументан барам',
-'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт|байташ}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт}}',
 'limitreport-expansiondepth' => 'Шордаларан уггар йокха кӀоргалла',
 'limitreport-expensivefunctioncount' => 'АгӀона хӀоттам къасторан «еза» функцеш',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Кепаш схьаястар',
+'expand_templates_intro' => 'ХӀокху белхан агӀорахь йиш ю йоза хийца.
+Кхин кепаш схьаяста.
+<code><nowiki>{{#language:…}}</nowiki></code> кхочуш дан тайп
+<code><nowiki>{{CURRENTDAY}}</nowiki></code>.',
+'expand_templates_title' => 'АгӀона {{FULLPAGENAME}} корта кхин а:',
+'expand_templates_input' => 'Чудолу йоза:',
 'expand_templates_output' => 'Хилам',
 'expand_templates_remove_comments' => 'ДӀаяха комментареш',
+'expand_templates_remove_nowiki' => 'ДӀайоху тегаш <nowiki> хилча',
+'expand_templates_generate_xml' => 'Гойту дитта цу XML',
 'expand_templates_preview' => 'Хьалха муха ю хьажа',
 
 );
index a5cde1d..8a7067e 100644 (file)
@@ -48,7 +48,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Mga Kategoriya' ),
        'Contributions'             => array( 'Mga Tampo' ),
        'CreateAccount'             => array( 'Paghimo\'gAkawnt' ),
-       'Disambiguations'           => array( 'Mga Pagklaro' ),
        'DoubleRedirects'           => array( 'DoblengRedirekta' ),
        'Listfiles'                 => array( 'Listahan sa Imahen' ),
        'Lonelypages'               => array( 'Nag-inusarangPanid', 'Sinagop nga Panid' ),
@@ -89,7 +88,6 @@ $messages = array(
 'tog-minordefault' => 'Markahi ang tanang pag-usab isip ginagmay',
 'tog-previewontop' => 'Ipakita ang paunang tan-aw bag-o sa edit box',
 'tog-previewonfirst' => 'Ipakita ang paunang tan-aw sa unang pag-usab',
-'tog-nocache' => 'Ayaw i-cache ang panid',
 'tog-enotifwatchlistpages' => 'I-email ko kon ang panid nga akong gibantayan giusab.',
 'tog-enotifusertalkpages' => 'I-email ko kon nausab ang akong panid sa panaghisgot',
 'tog-enotifminoredits' => 'I-email ko alang sa mga ginagmay nga pag-usab',
@@ -206,7 +204,6 @@ $messages = array(
 'qbedit' => 'Usba',
 'qbpageoptions' => 'Kini nga panid',
 'qbmyoptions' => 'Akong mga panid',
-'qbspecialpages' => 'Mga espesyal nga panid',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -395,9 +392,6 @@ Basin aduna kini usa o daghan pang mga karakter nga dili magamit isip titulo.',
 'perfcachedts' => 'Ang mosunod nga data naka-cache, ug kataposang nabag-o sa $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Ang mga update alang sa kining panid naka-disable sa kasamtangan.
 Dili karon dayon ma-refresh ang data dinhi.',
-'wrong_wfQuery_params' => 'Sayop nga mga parametro sa wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Tan-awa ang ginikanan',
 'viewsource-title' => 'Tan-awa ang ginikanan para sa $1',
 'actionthrottled' => 'Na-throttle ang lihok',
@@ -469,6 +463,9 @@ Palihog sulayi'g usab.",
 'mailmypassword' => 'I-email ang bag-ong pasword',
 'loginlanguagelabel' => 'Pinulongan: $1',
 
+# Change password dialog
+'changepassword' => 'Usba ang pasword',
+
 # Edit page toolbar
 'bold_sample' => 'Gilugom nga teksto',
 'bold_tip' => 'Gilugom nga teksto',
@@ -610,10 +607,6 @@ Isip tagdumala, puyde nimo [$1 tan-awon ang diff] kon gusto ka magpadayon.",
 'revisiondelete' => 'Papasa/ayaw papasa ang mga rebisyon',
 'revdelete-nooldid-title' => 'Dili sakto ang target nga rebisyon',
 'revdelete-nooldid-text' => 'Puyde nga wala nimo ma-specify ang target nga (mga) rebisyon aron mahimo kini, ang naka-specify nga rebisyon wala pa mahimo, o kaha imo gisulayan og tago ang kasamtangang rebisyon.',
-'revdelete-nologtype-title' => 'Walay gihatag nga klase sa log',
-'revdelete-nologtype-text' => 'Wala ka mag-specify og klase sa log aron mahimo ang kining lihok.',
-'revdelete-nologid-title' => 'Dili saktong entrada sa log',
-'revdelete-nologid-text' => 'Wala ka mag-specify og target log event aron mahimo ang kining lihok o kaha ang gi-specify nga entrada wala pa.',
 'revdelete-no-file' => 'Ang gi-specify nga payl wala pa.',
 'revdelete-show-file-confirm' => 'Sigurado ka nga gusto nimong tan-awon ang napapas nga rebisyon sa payl "<nowiki>$1</nowiki>" sugod sa $2 sa $3?',
 'revdelete-show-file-submit' => 'Oo',
@@ -685,10 +678,6 @@ Hinumdomi nga ang paggamit sa mga sumpay sa nabigasyon mo-reset sa column.',
 # Search results
 'searchresults' => 'Mga resulta sa pagpangita',
 'searchresults-title' => 'Mga resulta sa pagpangita para sa "$1"',
-'searchresulttext' => 'Para sa dugang impormasyon mahitungod sa pagpangita sa {{SITENAME}}, tan-awa ang [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Gipangita nimo ang \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanang panid nga nagsugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanang panid nga misumpay sa "$1"]])',
-'searchsubtitleinvalid' => "Imong gipangita ang '''$1'''",
-'notitlematches' => 'Walay nag-match nga titulo sa panid',
 'notextmatches' => 'Walay misaktong teksto sa panid',
 'prevn' => 'miaging {{PLURAL:$1|$1}}',
 'nextn' => 'sunod {{PLURAL:$1|$1}}',
@@ -702,14 +691,10 @@ Hinumdomi nga ang paggamit sa mga sumpay sa nabigasyon mo-reset sa column.',
 'search-interwiki-default' => '$1 ka mga resulta:',
 'search-interwiki-more' => '(dugang pa)',
 'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' sa '''$3'''|Mga resulta '''$1 - $2''' of '''$3'''}} sa '''$4'''",
-'nonefound' => "'''Bantayi''': Dili tanang ngalang espasyo (namespaces) ang gipangita by default.
-Sulayi'g prefix ang imong gipangita gamit ang ''all:'' alang mangita sa tanang sulod (apil ang mga panid sa hisgot, plantilya, ubp), o gamita ang gikinahanglang ngalang espasyo isip prefix.",
 'search-nonefound' => 'Walay mga resulta nga nag-match sa gipangita.',
-'powersearch' => 'Abansadong pagpangita',
 'powersearch-legend' => 'Abansadong pagpangita',
 'powersearch-ns' => 'Pangitaa sa mga ngalang espasyo:',
 'powersearch-redir' => 'Itala ang mga redirek',
-'powersearch-field' => 'Pangitaa ang',
 'powersearch-togglelabel' => 'I-tsek:',
 'powersearch-toggleall' => 'Tanan',
 'powersearch-togglenone' => 'Wala',
@@ -722,7 +707,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
 'preferences' => 'Mga preperensiya',
 'mypreferences' => 'Akong preperensiya',
 'prefs-edits' => 'Gidaghanon sa nausab:',
-'changepassword' => 'Usba ang pasword',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Paunang tan-aw',
 'datedefault' => 'Walay preperensiya',
@@ -740,7 +724,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
 'prefs-email' => 'Mga opsyon sa e-mail',
 'prefs-rendering' => 'Appearance',
 'saveprefs' => 'Tipigi',
-'resetprefs' => 'Limpyohi ang wala matipigi nga mga kausaban',
 'restoreprefs' => 'Ibalik ang tanang default settings',
 'prefs-editing' => 'Nagausab',
 'rows' => 'Mga row:',
@@ -757,7 +740,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
 'localtime' => 'Oras sa lokal:',
 'timezoneuseserverdefault' => 'Gamita ang default sa server',
 'timezoneuseoffset' => 'Uban pa (i-specify ang offset)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Oras sa server:',
 'guesstimezone' => 'Ibutang gikan sa brawser',
 'timezoneregion-africa' => 'Aprika',
@@ -848,7 +830,6 @@ Kon gipili nimo nga ihatag kini, gamiton kini aron pasidunggan ka sa imong mga t
 'recentchanges' => 'Mga bag-ong giusab',
 'recentchanges-legend' => 'Mga opsyon sa bag-ong pag-usab',
 'recentchanges-feed-description' => 'Bantayi ang kinabag-ohang mga pag-usab sa wiki niining feed.',
-'rcnote' => "Sa ubos {{PLURAL:$1|ang '''1''' kausaban|ang mga bag-ong '''$1''' kausaban}} sa miaging {{PLURAL:$2|ka adlaw|'''$2''' ka mga adlaw}}, sa taknang $5, $4.",
 'rclistfrom' => 'Ipakita ang mga bag-ong pag-usab gikan $1',
 'rcshowhideminor' => '$1 menor nga pag-usab',
 'rcshowhidebots' => '$1 mga bot',
@@ -1087,9 +1068,6 @@ Sa maong mga kaso, manwal nga imo ibalhin o i-merge ang panid kon gustohon.",
 'movepage-moved' => 'Ang \'\'\'"$1" nabalhin na ngadto sa "$2"\'\'\'',
 'articleexists' => 'May panid na sa maong ngalan, o ang ngalan nga imong napili ginadili.
 Palihog pagpili og laing ngalan.',
-'talkexists' => "'''Ang panid mismo malamposon nga nabalhin, pero ang panid sa hisgot dili mabalhin tungod kay duna nay sulod ang panid sa hisgot sa bag-ong titulo.
-Palihog imanwal ang pag-merge nila.'''",
-'movedto' => 'nabalhin ngadto',
 'movetalk' => 'Ibalhin ang kaubang panid sa hisgot',
 'movelogpage' => 'Log sa pagbalhin',
 'movereason' => 'Rason:',
@@ -1197,10 +1175,6 @@ Ang uban default nga nakatago.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Usba kining payl gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa dugang nga impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tanan',
 'namespacesall' => 'tanan',
index b71a07b..165e8bb 100644 (file)
@@ -147,7 +147,6 @@ $messages = array(
 'qbedit' => 'Tulaika',
 'qbpageoptions' => 'Este na pahina',
 'qbmyoptions' => 'Påhina-hu siha',
-'qbspecialpages' => 'Manespesiat na påhina',
 
 'errorpagetitle' => 'Linachi',
 'returnto' => 'Hånao tåtte para $1.',
@@ -368,6 +367,7 @@ Ti para u na'hanao ni sigienti na inayek siha.",
 'loginlanguagelabel' => 'Lengguahe: $1',
 
 # Change password dialog
+'changepassword' => 'Tulaika password',
 'oldpassword' => 'Password bihu:',
 'newpassword' => 'Password nuebu:',
 'retypenew' => "Na'tekla nuebu na password:",
@@ -617,12 +617,8 @@ Fanapunta na para u na'nuebu i kolumna anggen un usa i inachetton nabegasion.",
 # Search results
 'searchresults' => 'Humuyongña i inaligao',
 'searchresults-title' => 'Risutton i inaligao "$1"',
-'searchresulttext' => 'Para mas infotmasion nu manaliligao {{SITENAME}}, hånao para [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Un aligao '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Un aligao '''$1'''",
 'toomanymatches' => 'Mampos meggai na manaya ni humuyongña, pot fabot chagi difirente na inaligao',
 'titlematches' => 'Titulon påhina siha ni manaya',
-'notitlematches' => "Tåya' titulon påhina siha ni manaya",
 'textmatches' => "Tinige' påhina siha ni manaya",
 'notextmatches' => "Tåya' na tinige' påhina siha ni manaya",
 'prevn' => "{{PLURAL:$1|$1}} ni manmå'pos",
@@ -637,17 +633,13 @@ Fanapunta na para u na'nuebu i kolumna anggen un usa i inachetton nabegasion.",
 'search-interwiki-default' => 'Humuyongña gi $1:',
 'search-interwiki-more' => '(mas)',
 'search-relatedarticle' => 'Umachetton',
-'mwsuggest-disable' => "Na'påra i abisan AJAX",
 'searchrelated' => 'umachetton',
 'searchall' => 'todu',
 'showingresults' => "A'annok gi sampapa' asta {{PLURAL:$1|'''1''' na humuyongña|'''$1''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
 'showingresultsnum' => "A'annok gi sampapa' {{PLURAL:$3|'''1''' na humuyongña|'''$3''' na humuyongña siha}} tumutuhon yan i #'''$2'''.",
-'nonefound' => "'''Apunta''': Solo ha' manmanaligao palu na sågan nå'an. Chagi fan muna'klå'an mo'na i inaligao-mu yan ''all:'' para un aligao todu i guinaha (kontodu påhinan kombesasion, plantiyas, etc), pat usa i sagan nå'an ni malago'-mu kumu klå'an mo'na.",
-'powersearch' => 'Finu na inaligao',
 'powersearch-legend' => 'Finu na inaligao',
 'powersearch-ns' => "Inaligao gi sagan nå'an:",
 'powersearch-redir' => "Na'lista i na'dirihi siha",
-'powersearch-field' => 'Aligao',
 'search-external' => 'Inaligao sanhiyong',
 'searchdisabled' => "Mana'påra i inaligao {{SITENAME}}.
 Siña hao manaligao gi Google gi entretanto.
@@ -657,7 +649,6 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
 'preferences' => "I ga'ña-mu",
 'mypreferences' => "I ga'ña-hu",
 'prefs-edits' => 'Numirun tinilaika:',
-'changepassword' => 'Tulaika password',
 'prefs-skin' => 'Låssas',
 'skin-preview' => "Na'annok",
 'datedefault' => "Tåya' prifirensia",
@@ -669,7 +660,6 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
 'prefs-watchlist-edits' => "I mas takhilo' na numirun tinilaika para u na'annok gi i mana'la'dangkolo i listan pinilan:",
 'prefs-misc' => 'Misc',
 'saveprefs' => 'Såtba',
-'resetprefs' => "Na'funas i tinilaika ti manma'såtba siha",
 'prefs-editing' => 'Tumulaika',
 'rows' => 'Fila siha:',
 'columns' => 'Kolumna siha:',
@@ -720,7 +710,6 @@ Yanggen un decidi mamo'lu, ma'usa ha' sempre para muna'i hao ni kreditu ni che'c
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|na tinilaika|na tinilaika siha}}',
 'recentchanges' => 'Tinilaika siha gi halacha',
-'rcnote' => "Guåha {{PLURAL:$1|'''1''' na tinilaika|'''$1''' na tinilaika siha}} gi {{PLURAL:$2|day|'''$2''' days}}, ginen $5, $4.",
 'rcnotefrom' => "Gi papa' guåha i tinilaika siha ginen '''$2''' (fa'na'an '''$1''' ma'annok).",
 'rclistfrom' => "Na'annok i mannuebun tinilaika siha ginen $1",
 'rcshowhideminor' => "$1 na mandikike' na tinilaika siha",
@@ -984,8 +973,6 @@ Pot sienkasu i hilo', nesesario ha' na un kånya pat un na'daña i påhina yangg
 'movepage-moved' => '\'\'\'Makånya "$1" para "$2"\'\'\'',
 'articleexists' => "Esta guåha un påhina mafa'na'an enao, pat ti masedi ni inayek-mu.
 Ayek fan otru nå'an-ña.",
-'talkexists' => "'''Munhåyan i siniha i påhina mismo, lao ti siña ha kånya i påhinan kombetsasion sa' guåha esta otru ni titulon nuebu.'''",
-'movedto' => 'makånya para',
 'movetalk' => 'Kånya i påhinan kombetsasion',
 'movelogpage' => 'Kånya i log',
 'movereason' => 'Rason:',
@@ -1081,10 +1068,6 @@ Ti mantattiyi i areklo ni sigienten ina'chetton siha gi mismo liña, i.e. i påh
 'metadata-expand' => "Na'annok todu i infotmasion-ña",
 'metadata-collapse' => "Na'atok patte i infotmasion-ña",
 
-# External editor support
-'edit-externally' => 'Tulaika i atkibu yan un aplikasion sanhiyong',
-'edit-externally-help' => 'Hånao para [https://www.mediawiki.org/wiki/Manual:External_editors i plantan chinachalani] para mas infotmasion.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todu',
 'namespacesall' => 'todu',
index 9867ae2..f616c23 100644 (file)
@@ -45,10 +45,6 @@ $messages = array(
 'article' => 'ᎤᏓᏡᎬ',
 'navigation' => 'ᎠᏂᎩᏍᏗ ᏥᏳ',
 
-# Cologne Blue skin
-'qbpageinfo' => 'ᎦᎷᎯᏍᏗ',
-'qbspecialpages' => 'ᎤᏤᎵᏛ',
-
 'help' => 'ᎠᎵᏍᏕᎸᏗ',
 'search' => 'ᎠᏯᏍᏗ',
 'searchbutton' => 'ᎠᏯᏍᏗ',
@@ -63,7 +59,7 @@ $messages = array(
 'otherlanguages' => 'ᎭᏫᎾᏗᏢ ᏐᎢ ᏗᎦᏬᏂᎯᏍᏗ',
 'jumptosearch' => 'ᎡᏗt',
 
-# 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).
+# 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).
 'aboutpage' => 'Project:ᎬᏩᏚᏫᏛ',
 'currentevents' => 'ᏗᏤᎢ',
 'mainpage' => 'ᎤᎵᎮᎵᏍᏗ',
@@ -83,9 +79,6 @@ $messages = array(
 # Diffs
 'editundo' => 'IᎬᎾᏕᏍᏗ',
 
-# Search results
-'powersearch' => 'ᎠᏯᏍᏗ',
-
 # Preferences page
 'searchresultshead' => 'ᎠᏯᏍᏗ',
 
@@ -114,9 +107,6 @@ $messages = array(
 # What links here
 'whatlinkshere' => 'ᎦᏙ ᎤᏍᏗ ᏗᏕᎬᏔᏛ ᎠᎭᏂ',
 
-# Block/unblock
-'proxyblocksuccess' => 'ᎠᏍᏆᏛᎯ.',
-
 # Special:NewFiles
 'ilsubmit' => 'ᎠᏯᏍᏗ',
 
index 687c001..3271db1 100644 (file)
@@ -88,7 +88,7 @@ $specialPageAliases = array(
        'Mostlinkedcategories'      => array( 'پۆلەکانی_زیاترین_بەستەردراون،_پۆلەکانی_زیاترین_بەکارھێنراون' ),
        'Mostlinkedtemplates'       => array( 'داڕێژەکانی_زیاترین_بەستەردراون،_داڕێژەکانی_زیاترین_بەکارھێنراون' ),
        'Mostrevisions'             => array( 'زیاترین_پێداچوونەوەکان' ),
-       'Movepage'                  => array( 'پەڕە_گواستنەوە' ),
+       'Movepage'                  => array( 'گواستنەوەی_پەڕە' ),
        'Mycontributions'           => array( 'بەشدارییەکانم' ),
        'Mypage'                    => array( 'پەڕەکەم' ),
        'Mytalk'                    => array( 'لێدوانەکانم' ),
@@ -148,6 +148,42 @@ $digitTransformTable = array(
        ',' => '٬', # &#x066c;
 );
 
+$datePreferences = array(
+       'default',
+       'dmy',
+       'ymd',
+       'persian',
+       'hijri',
+);
+
+$defaultDateFormat = 'dmy';
+
+$datePreferenceMigrationMap = array(
+       'default',
+       'dmy', // migrate users off mdy - not present in this language
+       'dmy',
+       'ymd'
+);
+
+$dateFormats = array(
+       # Please be cautious not to delete the invisible RLM from the beginning of the strings.
+       'dmy time' => '‏H:i',
+       'dmy date' => '‏jی xg Y',
+       'dmy both' => '‏H:i، jی xg Y',
+
+       'ymd time' => '‏H:i',
+       'ymd date' => '‏Y/n/j',
+       'ymd both' => '‏H:i، Y/n/j',
+
+       'persian time' => '‏H:i',
+       'persian date' => '‏xijی xiFی xiY',
+       'persian both' => '‏H:i، ‏xijی xiFی xiY',
+
+       'hijri time' => '‏H:i',
+       'hijri date' => '‏xmjی xmFی xmY',
+       'hijri both' => '‏H:i، xmjی xmFی xmY',
+);
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ھێڵ ھێنان بەژێر بەستەرەکان:',
@@ -171,7 +207,6 @@ $messages = array(
 'tog-minordefault' => 'ھەموو دەستکارییەکان بە ورد نیشان بکە لە حاڵەتی دیفاڵت',
 'tog-previewontop' => 'پێشبینین بەرلە چوارچێوەی دەستکاری نیشان بدە‌',
 'tog-previewonfirst' => 'لە یەکەم دەستکاری دا پێشبینین نیشان بدە',
-'tog-nocache' => 'کاشکردنی پەڕەکانی وێبگەڕەکە لەکاربخە',
 'tog-enotifwatchlistpages' => 'ئەگەر پەڕە یان پەڕگەیەک لە پێرستی چاودێیییەکانمدا گۆڕدرا ئیمەیلم بۆ بنێرە',
 'tog-enotifusertalkpages' => 'ئەگەر پەڕەی لێدوانەکەم گۆڕدرا ئیمەیلم بۆ بنێرە',
 'tog-enotifminoredits' => 'بۆ گۆڕانکارییە بچووکەکانی پەڕەکان و پەڕگەکانیش ئیمەیلم بۆ بنێرە',
@@ -307,7 +342,6 @@ $messages = array(
 'qbedit' => 'دەستکاری',
 'qbpageoptions' => 'ئەم پەڕەیە',
 'qbmyoptions' => 'پەڕەکانم',
-'qbspecialpages' => 'پەڕە تایبەتەکان',
 'faq' => 'پرسیار و وەڵام (FAQ)',
 'faqpage' => 'Project:پرسیار و وەڵام',
 
@@ -520,9 +554,6 @@ $1',
 'perfcachedts' => 'داتای خوارەوە cacheکراوە و دوایین جار لە $1 نوێ کراوەتەوە. لە cacheدا لانی زۆر {{PLURAL:$4|یەک ئەنجام|$4 ئەنجام}} لەبەردەستە.',
 'querypage-no-updates' => 'تازەکردنەوەکان بۆ ئەم پەڕە لە حاڵی ئێستادا ناچالاک کراوەتەوە.
 داتای ئێرە دەسبەجێ تازە ناکرێتەوە.',
-'wrong_wfQuery_params' => 'پارامێتری ھەڵە بۆ wfQuery()<br />
-کردار: $1<br />
-داواکاری: $2',
 'viewsource' => 'سەرچاوەکەی ببینە',
 'viewsource-title' => 'سەرچاوەی $1 ببینە',
 'actionthrottled' => 'چالاکی پێشی پێ گیرا',
@@ -583,7 +614,7 @@ $2',
 'userlogout' => 'بچۆ دەرەوە',
 'notloggedin' => 'لە ژوورەوە نیت',
 'userlogin-noaccount' => 'ھەژمارت نییە؟',
-'userlogin-joinproject' => 'ڕەگەڵ {{SITENAME}} کەوە',
+'userlogin-joinproject' => 'وێڕای {{SITENAME}} کەوە',
 'nologin' => 'ھەژمارت نییە؟  $1.',
 'nologinlink' => 'ھەژمارێک دروست بکە',
 'createaccount' => 'ھەژمار دروست بکە',
@@ -593,7 +624,11 @@ $2',
 'userlogin-resetpassword-link' => 'تێپەڕوشە ڕیسێت بکەوە',
 'helplogin-url' => 'Help:چوونەژوورەوە',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|یارمەتی بۆ چوونەژوورەوە]]',
+'userlogin-loggedin' => 'تۆ ھەر ئێستا بە ناوی {{GENDER:$1|$1}} چوویتە ژوورەوە.
+فۆرمی ژێرەوە بەکاربھێنە بۆ چوونەژوورەوە وەک بەکارھێنەرێکی تر.',
+'userlogin-createanother' => 'ھەژمارێکی تر دروست بکە',
 'createacct-join' => 'زانیارییەکەت لە ژێرەوە بنووسە.',
+'createacct-another-join' => 'زانیارییەکانی ھەژمارە نوێکەت لە ژێرەوە بنووسە.',
 'createacct-emailrequired' => 'ناونیشانی ئیمەیل',
 'createacct-emailoptional' => 'ناونیشانی ئیمەیل (دڵخوازانە)',
 'createacct-email-ph' => 'ناونیشانی ئیمەیلەکەت بنووسە',
@@ -605,6 +640,7 @@ $2',
 'createacct-captcha' => 'تاوتوێی ئاسایشی',
 'createacct-imgcaptcha-ph' => 'دەقەکەی لە ژێرەوە دەیبینی بینووسە',
 'createacct-submit' => 'ھەژمارەکەت دروست بکە',
+'createacct-another-submit' => 'ھەژمارێکی تر دروست بکە',
 'createacct-benefit-heading' => '{{SITENAME}} لە لایەن کەسانێک وەکوو خۆت دروست کراوە.',
 'createacct-benefit-body1' => '{{PLURAL:$1|دەستکاری}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|پەڕە}}',
@@ -676,7 +712,7 @@ $2',
 'loginlanguagelabel' => 'زمان: $1',
 
 # Change password dialog
-'resetpass' => 'گۆڕینی تێپەڕوشە',
+'changepassword' => 'تێپەڕوشە بگۆڕە',
 'resetpass_announce' => 'بە کۆدی کاتیی ئیمەیل‌کراو ھاتوویتە ژوورەوە.
 بۆ دوایی ھاتنی چوونە ژوورەوە، ئەشێ تێپەڕوشەیەکی نوێ ھەڵبژێری لێرە:',
 'resetpass_text' => '<!-- تێپه‌ڕه‌وشه‌ی هه‌ژماره‌كه‌ سفر بكه‌ره‌وه‌ -->',
@@ -1037,10 +1073,6 @@ $3 هۆکاری "$2" خستوەتەڕوو',
 'revisiondelete' => 'سڕینەوە/ھێنانەوەی پێداچوونەوەکان',
 'revdelete-nooldid-title' => 'مەبەستی پێداچوونەوەی نادیار',
 'revdelete-nooldid-text' => 'پێداچوەنەوەی مەبەستت ڕاچاو نەکردە بۆ ئەنجامی ئەم فەنکشێنە یان ئەو پێداچوونەوەی ڕاچاوت کردە بوونی نیە، یا خەریکی هەوڵی داشاردنی پێداچوونەوهی ئێستا‌ ئەدەی.',
-'revdelete-nologtype-title' => 'جۆری لۆگ ڕاچاو نەکراوە',
-'revdelete-nologtype-text' => 'جۆری لۆگت ڕاچاو نەکردە بۆ خستنە‌کاری ئەم کردەوە.',
-'revdelete-nologid-title' => 'پێ‌دراوەی لۆگی نەناسراو',
-'revdelete-nologid-text' => 'بۆ ئەنجامی ئەم فەنکشێنە یا لۆگی ڕووداوی مەبەستت ڕاچاو نەکردووە یان ئەو پێ‌دراوەی ڕاچاوت کردە بوونی نیە.',
 'revdelete-no-file' => 'ئەو پەڕگەی ڕاچاوت کردووە بوونی نیە.',
 'revdelete-show-file-confirm' => 'ئایا دڵنیایت دەتەوێ پێداچوونەوەی سڕاوەی پەڕگەی "<nowiki>$1</nowiki>" لە $2، لە $3دا ببیینی؟',
 'revdelete-show-file-submit' => 'بەڵێ',
@@ -1074,8 +1106,6 @@ $1",
 'logdelete-failure' => "'''بیندرانی لۆگ داناندرێت:'''
 $1",
 'revdel-restore' => 'چۆنیەتی دەرکەوتن بگۆڕە',
-'revdel-restore-deleted' => 'پێداچوونەوە سڕاوەکان',
-'revdel-restore-visible' => 'پێداچوونەوە دەرکەوتووەکان',
 'pagehist' => 'مێژووی پەڕە',
 'deletedhist' => 'مێژوو بسڕەوە',
 'revdelete-hide-current' => 'هەڵە لە شاردنەوەی بابەتی ڕیکەوتی $1، کات $2: ئەم پێداچوونەوە ئێستا لەکاردایە.
@@ -1149,12 +1179,8 @@ $1",
 # 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}}ی پێشوو',
@@ -1163,10 +1189,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|ئەنجامی|ئەنجامی}} دواتر',
 'shown-title' => 'لە هەر پەڕەیەک $1 {{PLURAL:$1|ئەنجام|ئەنجام}} نیشان‌ بدە',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ببینە',
-'searchmenu-legend' => 'ھەڵبژاردەکانی گەڕان',
 'searchmenu-exists' => "'''پەڕەیەک بە ناوی «[[:$1]]» لەم ویکییەدا ھەیە.'''",
 'searchmenu-new' => "'''لەم ویکییەدا پەڕەی « [[:$1]] » دروست بکە!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|گەڕیان لە پەڕەکانی بەم پێشگرەوە]]',
 'searchprofile-articles' => 'پەڕە بە ناوەڕۆکەکان',
 'searchprofile-project' => 'پەڕەکانی یارمەتی و پرۆژە',
 'searchprofile-images' => 'ڕەنگاڵە',
@@ -1187,21 +1211,16 @@ $1",
 'search-interwiki-default' => '$1 ئەنجام:',
 'search-interwiki-more' => '(زیاتر)',
 'search-relatedarticle' => 'پەیوەست',
-'mwsuggest-disable' => 'پێشنیارەکانی گەڕان ناچالاک بکە',
 'searcheverything-enable' => 'لە ھەموو بۆشاییی ناوەکاندا بگەڕێ',
 'searchrelated' => 'پەیوەست',
 'searchall' => 'ھەموو',
 'showingresults' => "لە خوارەوە {{PLURAL:$1|'''یەک''' ئەنجام|'''$1''' ئەنجام}} نیشان دراوە، بە دەست پێ کردن لە ژمارەی '''$2'''ەوە.",
 'showingresultsnum' => "لە خوارەوە {{PLURAL:$3|'''١''' ئەنجام|'''$3''' ئەنجام}} دەبینن کە لە ئەنجامی ژمارە '''$2'''ەوە دەست{{PLURAL:$3|پێدەکات|پێدەکەن}}",
 'showingresultsheader' => "{{PLURAL:$5|ئاکامی '''$1''' لە '''$3'''|ئاکامەکانی '''$1 - $2''' لە '''$3'''}} بۆ '''$4'''",
-'nonefound' => "'''تێبینی''': لە حاڵەتی بنچینەیی تەنھا لە ھەندێک لە بۆشایی‌ناوەکان گەڕان دەکرێت.
-وشەی ''all:'' بکە بە پێشگری پرسەکە بۆ گەڕان لە نێو ھەموو کەرستەکان (پەڕەکانی وتووێژ، داڕێژەکان و هتد)، یان بۆشایی‌ناوێکی دڵخواز وەک پێشگر بەکار بێنە.",
 'search-nonefound' => 'ھیچ ئاکامێک کە بە داواکارییەکەت بخوا نەدۆزرایەوە.',
-'powersearch' => 'پێشکەوتوو بگەڕێ',
 'powersearch-legend' => 'گەڕانی پێشکەوتوو',
 'powersearch-ns' => 'گەڕان لە بۆشاییی ناوەکانی:',
 'powersearch-redir' => 'ڕەوانەکەرەکان پێرست بکە',
-'powersearch-field' => 'گەڕان بۆ',
 'powersearch-togglelabel' => 'تاوتوێ بکە:',
 'powersearch-toggleall' => 'ھەموو',
 'powersearch-togglenone' => 'ھیچیان',
@@ -1214,11 +1233,10 @@ $1",
 'preferences' => 'ھەڵبژاردەکان',
 'mypreferences' => 'ھەڵبژاردەکان',
 'prefs-edits' => 'ژمارەی گۆڕانکارییەکان:',
-'changepassword' => 'تێپەڕوشە بگۆڕە',
 'prefs-skin' => 'پێستە',
 'skin-preview' => 'پێش بینین',
 'datedefault' => 'ھەڵنەبژێردراو',
-'prefs-beta' => 'کەرەسەکانی بیتا',
+'prefs-beta' => 'تایبەتمەندییەکانی بیتا',
 'prefs-datetime' => 'کات و ڕێکەوت',
 'prefs-labs' => 'کەرەسەکانی تاقیگەکان',
 'prefs-user-pages' => 'پەڕە بەکارھێنەرییەکان',
@@ -1237,13 +1255,11 @@ $1",
 'prefs-email' => 'ھەڵبژاردەکانی ئیمەیل',
 'prefs-rendering' => 'ڕواڵەت',
 'saveprefs' => 'پاشەکەوت',
-'resetprefs' => 'گۆڕانکارییە پاشەکەوت نەکراوەکان پاک بکەرەوە',
 'restoreprefs' => 'ھەموو ڕێکخستنەکان ببەرەوە بۆ باری بنچینەیی',
 'prefs-editing' => 'دەستکاریکردن',
 'rows' => 'ڕیزەکان:',
 'columns' => 'ستوونەکان:',
 'searchresultshead' => 'گەڕان',
-'resultsperpage' => 'ژمارەی ئەنجامەکان لە ھەر پەڕەیەک:',
 'stub-threshold' => 'سنوور بۆ شێوازی <a href="#" class="stub">بەستەری کۆڵکە</a> (بایت):',
 'stub-threshold-disabled' => 'ناچالاک',
 'recentchangesdays' => 'ژمارە ڕۆژە نیشاندراوەکان لە دوایین گۆڕانکارییەکان:',
@@ -1255,7 +1271,6 @@ $1",
 'localtime' => 'کاتی ناوچەیی:',
 'timezoneuseserverdefault' => 'دیفاڵتی ویکی بەکاربێنە ($1)',
 'timezoneuseoffset' => 'دیکە (ناتەواویەکان دیاری بکە)',
-'timezoneoffset' => 'جیاوازی¹:',
 'servertime' => 'کاتی ڕاژەکار:',
 'guesstimezone' => 'لە وێبگەڕەکە بیگرە',
 'timezoneregion-africa' => 'ئافریقا',
@@ -1490,12 +1505,14 @@ $1",
 'recentchanges-legend' => 'ھەڵبژاردەکانی دوایین گۆڕانکارییەکان',
 'recentchanges-summary' => 'لەم پەڕەیەدا شوێنی دوایین گۆڕانکارییەکانی ویکی بکەوە.',
 'recentchanges-feed-description' => 'دوای دوایین گۆڕانکارییەکانی ئەم ویکیە بکەوە لەم «فید»ەوە.',
-'recentchanges-label-newpage' => 'ئÛ\95Ù\85 Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95 Ù\84اپÛ\95Ú\95Û\95Û\8cÛ\95Ú©Û\8c Ù\86Ù\88Û\8eÛ\8c Ø¯Ø±Ù\88ستکرد',
+'recentchanges-label-newpage' => 'ئÛ\95Ù\85 Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95 Ù¾Û\95Ú\95Û\95Û\8cÛ\95Ú©Û\8c Ù\86Ù\88Û\8eÛ\8c Ø¯Ø±Ù\88ست کرد',
 'recentchanges-label-minor' => 'ئەمە دەستکارییەکی بچووکە',
-'recentchanges-label-bot' => 'ئÛ\95Ù\85 Ø¯Û\95ستکارÛ\8cÛ\95 Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 Ø¨Û\86تÛ\95Ù\88Û\95 Ù¾Û\8eÚ© Ù\87اتÙ\88وە',
+'recentchanges-label-bot' => 'ئÛ\95Ù\85 Ø¯Û\95ستکارÛ\8cÛ\8cÛ\95 Ù\84Û\95 Ù\84اÛ\8cÛ\95Ù\86 Ø¨Û\86تÛ\95Ù\88Û\95 Ú©Ø±Ø§وە',
 'recentchanges-label-unpatrolled' => 'ئەم دەستکارییە ھێشتا پاس نەدراوە',
-'recentchanges-legend-newpage' => '$1 - لاپەڕەی نوێ',
-'rcnote' => "لە خوارەوەدا {{PLURAL:$1|'''۱''' گۆڕانکاری |دوایین '''$1''' گۆڕانکارییەکان}} لە دوایین {{PLURAL:$2|ڕۆژ|'''$2''' ڕۆژەوە}} ، تا $5، $4 دەبینن.",
+'recentchanges-label-plusminus' => 'قەبارەی پەڕە ئەوەندە بایت گۆڕاوە',
+'recentchanges-legend-heading' => "'''کورتکراوەکان:'''",
+'recentchanges-legend-newpage' => '(ھەروەھا بڕوانە [[Special:NewPages|پێرستی پەڕە نوێکان]])',
+'recentchanges-legend-plusminus' => "(''±۱٢٣'')",
 'rcnotefrom' => "ئەوی‌ خوارەوە گۆڕانکارییەکانە لە '''$2'''ەوە (ھەتا '''$1''' نیشاندراو).",
 'rclistfrom' => 'گۆڕانکارییە نوێکان نیشان بدە بە دەستپێکردن لە $1',
 'rcshowhideminor' => 'دەستکارییە بچووکەکان $1',
@@ -1511,7 +1528,7 @@ $1",
 'show' => 'نیشان بدە',
 'minoreditletter' => 'ب',
 'newpageletter' => 'ن',
-'boteditletter' => '.بۆت',
+'boteditletter' => 'بۆ',
 'number_of_watching_users_pageview' => '[$1 چاودێر لەسەر {{PLURAL:$1|بەکارھێنەر}}]',
 'rc_categories' => 'بەرتەسک‌کردنەوە بە هاوپۆلەکان (به «|» جیای بکەوە‌)',
 'rc_categories_any' => 'هەرکام',
@@ -1890,10 +1907,8 @@ $1',
 'protectedpages' => 'پەڕە پارێزراوەکان',
 'protectedpages-indef' => 'تەنیا پاراستنە بێسنوورەکان',
 'protectedpages-cascade' => 'تەنیا پاراستنە زنجیرییەکان',
-'protectedpagestext' => 'ئەم لاپەڕانە لە گواستنەوە و دەستکاری‌کردن پارێزراون',
 'protectedpagesempty' => 'هیچ لاپەڕەیک ئێستا بەم دیاریکراوانە نەپارێزراوە.',
 'protectedtitles' => 'سەرناوە پارێزراوەکان',
-'protectedtitlestext' => 'ئەم سەردێڕانە لە درووست‌کردن پارێزراون',
 'protectedtitlesempty' => 'ھیچ سەرناوێک بەم سنوورانەوە ئێستا نەپارێزراوە.',
 'listusers' => 'پێرستی بەکارھێنەران',
 'listusers-editsonly' => 'تەنیا ئەو بەکارھێنەرانە نیشان بدە کە دەستکارییان کردووە',
@@ -1944,9 +1959,6 @@ $1',
 'allpagesto' => 'نیشاندانی پەڕەکان بە دوایی ھاتن بە:',
 'allarticles' => 'ھەموو پەڕەکان',
 'allinnamespace' => 'ھەموو پەڕەکان (بۆشایی-ناوی $1)',
-'allnotinnamespace' => 'ھەموو پەڕەکان (ئەوانەی لە بۆشایی-ناوی $1دا نین)',
-'allpagesprev' => 'پێش',
-'allpagesnext' => 'پاش',
 'allpagessubmit' => 'بڕۆ',
 'allpagesprefix' => 'نیشاندانی پەڕەکان بە پێشگری:',
 'allpagesbadtitle' => 'سەردێڕی لاپەڕە گونجاو نەبوو یان پێشگڕێکی بەینی‌زمانی یان بەینی‌ویکی هەبوو.
@@ -2162,6 +2174,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'ئەم لاپەڕە مێژوویەکی دەستکاری زۆر گەورەی هەیە، زیاتر لە $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}.
 سڕینەوی ئەوە لە وانەیە کارەکانی بنکەدراوی {{SITENAME}} تووشی کێشە بکات؛
 دوورنواڕانە جێ‌بەجێی بکە.',
+'deleting-backlinks-warning' => "'''ھۆشدار:''' پەڕەی تر بەم پەڕەیەی دەتەوێ بیسڕییەوە بەستەر دراوە.",
 
 # Rollback
 'rollback' => 'گەڕاندنەوەی دەستکارییەکان',
@@ -2273,7 +2286,6 @@ $UNWATCHURL
 'undeletebtn' => 'هێنانەوە',
 'undeletelink' => 'ببینە/بھێنەوە',
 'undeleteviewlink' => 'دیتن',
-'undeletereset' => 'بردنەوە نووک',
 'undeleteinvert' => 'ھەڵبژاردەکان پێچەوانە بکە',
 'undeletecomment' => 'هۆکار:',
 'undeletedrevisions' => '{{PLURAL:$1|1 پێداچوونەوە|$1 پێداچوونەوە}} هێنرایەوە',
@@ -2357,7 +2369,6 @@ $1',
 'block' => 'بەربەستکردنی بەکارھێنەر',
 'unblock' => 'لە بەربەست‌دەرهێنانی بەکارهێنەر',
 'blockip' => 'بەربەستنی بەکارھێنەر',
-'blockip-title' => 'بەربەستکردنی بەکارهێنەر',
 'blockip-legend' => 'بەربەست‌کردنی بەکارهێنەر',
 'blockiptext' => 'لەم فۆرمەی خوارەوە دەتوانی بۆ بەربەست‌کردنی دەست‌پێ‌گەیشتنی نووسین لە ناونیشانێکی ئای‌پی تایبەت یا ناوی بەکارهێنەریەک، کەڵک وەرگریت.
 ئەمە تەنها دەبێ بۆ بەرگری لە خراپکاری بەکاربێت و ڕێکەوتنی هەبێ دەگەڵ [[{{MediaWiki:Policy-url}}|سیاسەتەکان]].
@@ -2365,7 +2376,6 @@ $1',
 'ipadressorusername' => 'ناونیشانی ئایپی یان ناوی‌ بەکارھێنەر:',
 'ipbexpiry' => 'بەسەرچوون:',
 'ipbreason' => 'هۆکار:',
-'ipbreasonotherlist' => 'هۆکاری تر',
 'ipbreason-dropdown' => '*ھۆکارە ھاوبەشەکانی بەربستن
 **دانانی زانیاریی ھەڵە
 **لابردنی ناوەرۆکی پەڕەکان
@@ -2381,8 +2391,6 @@ $1',
 'ipbsubmit' => 'بەربەستکردنی ئەم بەکارھێنەرە',
 'ipbother' => 'کاتی‌ دیکە:',
 'ipboptions' => '٢ کاتژمێر:2 hours,١ ڕۆژ:1 day,٣ ڕۆژ:3 days,١ ھەفتە:1 week,٢ ھەفتە:2 weeks,١ مانگ:1 month,٣ مانگ:3 months,٦ مانگ:6 months,١ ساڵ:1 year,بێ‌سنوور:infinite',
-'ipbotheroption' => 'دیکە',
-'ipbotherreason' => 'ھۆکاری تر/زیاتر:',
 'ipbhidename' => 'شاردنەوەی ناوی‌ بەکارهێنەر لە دەستکاری و لیستەکان',
 'ipbwatchuser' => 'پەڕەکانی بەکارھێنەر و لێدوانی ئەم بەکارهێنەرە بخە ژێر چاودێری',
 'ipb-disableusertalk' => 'بەرگری ئەم بەکارھێنەرە بکە لە دستکاریکردنی پەڕەی لێدوانەکەی کاتێک بەربەست کراوە',
@@ -2464,7 +2472,6 @@ $1',
 'sorbsreason' => 'ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.',
 'sorbs_create_account_reason' => 'ناونیشانی ئای‌پی تۆ لە DNSBLدا کە {{SITENAME}} کەڵکی لێ‌وەر دەگرێ، وەک پرۆکسیەکی کراوە لیست کراوە.
 بۆیە ناتوانی هەژمارە درووست‌بکەی.',
-'cant-block-while-blocked' => 'کاتێ خۆت بەربەست‌کراوی، ناتوانی بەکارهێنەرانی دیکە بەربەست بکەی.',
 'ipbblocked' => 'ناتوانی بەکارھێنەرانی تر بەربەست بکەی یان بکەیەوە، چون خۆت بەربەست کراوی.',
 
 # Developer tools
@@ -2520,7 +2527,6 @@ $1',
 
 لەو حاڵەتەدا، ئەگەر بتەوێت بیگوازیتەوە ناچار دەبیت بە شێوەی دەستی بیگوازیتەوە یان تێکەڵیان بکەی.",
 'movearticle' => 'ئەم پەڕەیە بگوازەوە:',
-'movenologin' => 'نەچوویتەتە ژوورەوە',
 'movenologintext' => 'بۆ گواستنەوەی پەڕەیەک، ئەشێ ببی بە ئەندام و [[Special:UserLogin|لە ژوورەوە]] بیت.',
 'movenotallowed' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی لاپەڕەکان.',
 'movenotallowedfile' => 'ڕێگەت پێ‌نەدراوە بۆ گواستنەوەی پەڕگەکان.',
@@ -2536,9 +2542,6 @@ $1',
 'articleexists' => 'پەڕەیەک بەم ناوە ھەیە یان ئەو ناوەی تۆ ھەڵتبژاردووە ڕێگەی پێنەدراوە.
 تکایە ناوێکی دیکە ھەڵبژێرە.',
 'cantmove-titleprotected' => 'ناتوانی لاپەڕەیەک بگوێزیتەوە بۆ ئەم شوێنە، لەبەر ئەوەی سەردێڕی نوێ لە درووست‌کردن پارێزراوە.',
-'talkexists' => "'''خودی پەڕەکە بە سەرکەوتوویی گوازرایەوە، بەڵام پەڕەی وتووێژەکەی ناگوازرێتەوە چونکو پێشتر بە سەردێرە نوێکەوە، یەکێک ھەیە.
-تکایە بە دەستی تێکەڵیان بکە.'''",
-'movedto' => 'گواسترایەوە بۆ',
 'movetalk' => 'پەڕەی وتووێژی پەیوەندیدار بگوازەوە',
 'move-subpages' => 'ژێرپەڕەکانی بگوازەوە (ھەتا $1 پەڕە)',
 'move-talk-subpages' => 'ژێرپەڕەکانی پەڕەی وتووێژ بگوازەوە (ھەتا $1 پەڕە)',
@@ -2807,8 +2810,9 @@ $1',
 'pageinfo-authors' => 'ژمارەی نووسەرە جیاوازەکان',
 'pageinfo-recent-edits' => 'ژمارەی دوایین دەستکارییەکان (لە $1ی ڕابردوودا)',
 'pageinfo-recent-authors' => 'ژمارەی دوایین نووسەرە جیاوازەکان',
+'pageinfo-magic-words' => '{{PLURAL:$1|وشەی|وشە}} {{PLURAL:$1|جادوویی|جادویییەکان}} ($1)',
 'pageinfo-hidden-categories' => '{{PLURAL:$1|پۆلی شاردراوە|پۆلە شاردراوەکان}} ($1)',
-'pageinfo-templates' => 'داڕێژە{{PLURAL:$1|ی بەکارگیراو| بەکارگیراوەکان}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|داڕێژەی|داڕێژە}} {{PLURAL:$1|بەکارگیراو|بەکارگیراوەکان}} ($1)',
 'pageinfo-toolboxlink' => 'زانیاریی پەڕە',
 'pageinfo-redirectsto-info' => 'زانیاری',
 'pageinfo-contentpage' => 'ھەژمارکراو وەک پەڕەی بەناوەرۆک',
@@ -2894,7 +2898,7 @@ $1',
 'days' => '{{PLURAL:$1|$1 ڕۆژ}}',
 'weeks' => '{{PLURAL:$1|$1 حەفتە}}',
 'months' => '{{PLURAL:$1|$1 مانگ}}',
-'years' => '{{PLURAL: $1|$1 ساڵ}}',
+'years' => '{{PLURAL:$1|$1 ساڵ}}',
 'ago' => '$1 لەمە پێش',
 'just-now' => 'ھەرئێستا',
 
@@ -3171,15 +3175,10 @@ $1',
 'exif-urgency-low' => 'کەم ($1)',
 'exif-urgency-high' => 'زۆر ($1)',
 
-# External editor support
-'edit-externally' => 'دەستکاریی ئەم پەڕەیە بکە بە بەکارھێنانی پڕۆگرامێکی دەرەکی',
-'edit-externally-help' => '(بۆ زانیاریی زیاتر سەیری [https://www.mediawiki.org/wiki/Manual:External_editors  ڕێنماییەکانی دامەزراندن] بکە)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ھەموو',
 'namespacesall' => 'ھەموو',
 'monthsall' => 'ھەموو',
-'limitall' => 'ھەموو',
 
 # Email address confirmation
 'confirmemail' => 'بڕواپێکردنی ناونیشانی ئیمەیل',
@@ -3203,7 +3202,6 @@ $1',
 'confirmemail_success' => 'ناونیشانی ئی‌میلەکەت بڕوای‌پێ‌کرا.
 ئێستە دەتوانی [[Special:UserLogin|بڕۆیتە ژوورەوە]] و لە ویکی کەڵک بگری.',
 'confirmemail_loggedin' => 'ئێستا بڕواکراوە بە ئیمەیلەکەت.',
-'confirmemail_error' => 'کێشەیەک هەیە لە پاشەکەوت‌کردنی بڕواپێ‌کردنی تۆدا.',
 'confirmemail_subject' => 'بڕوا پێ‌کردنی ناونیشانی ئی‌مەیلی {{SITENAME}}',
 'confirmemail_body' => 'کەسێک، لەوانەیە خۆت، لە ناونیشانی ئای‌پی $1،
 لە {{SITENAME}} بەم ناونیشانی ئی‌مەیلە، هەژمارەیەکی تۆمارکردووە "$2" .
@@ -3452,7 +3450,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'پەڕەکان ھەڵسەنگێنە',
-'compare-selector' => 'پیاچوونەوەکانی پەڕە ھەڵسەنگێنە',
 'compare-page1' => 'پەڕەی ١',
 'compare-page2' => 'پەڕەی ٢',
 'compare-rev1' => 'پێداچوونەوەی ١',
index 198345f..853c536 100644 (file)
@@ -11,6 +11,8 @@
  * @author Img (on co.wikipedia.org)
  */
 
+$fallback = 'it';
+
 $messages = array(
 'underline-always' => 'Sempre',
 'underline-never' => 'Mai',
@@ -84,7 +86,6 @@ $messages = array(
 # Cologne Blue skin
 'qbpageoptions' => 'Issa pagina',
 'qbmyoptions' => 'E mo pagine',
-'qbspecialpages' => 'Pagine spiciale',
 
 # Vector skin
 'vector-action-delete' => 'Supprimà',
@@ -120,7 +121,7 @@ $messages = array(
 'jumptonavigation' => 'navigazione',
 'jumptosearch' => 'ricerca',
 
-# 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).
+# 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).
 'aboutsite' => 'À prupositu di {{SITENAME}}',
 'aboutpage' => 'Project:À prupositu',
 'currentevents' => 'Ultimi evenimenti',
@@ -136,7 +137,6 @@ $messages = array(
 
 'versionrequired' => 'A version $1 di MediaWiki hè necessaria',
 
-'newmessagesdifflink' => 'ultima mudifica',
 'editsection' => 'mudificà',
 'editold' => 'mudificà',
 'editlink' => 'mudificà',
@@ -223,7 +223,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
 
 # Search results
 'searchresults' => 'Risultati di a ricerca',
-'powersearch' => 'Ricerca',
 
 # Preferences page
 'preferences' => 'Preferenze',
@@ -342,9 +341,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
 'allpagesfrom' => 'Mustrà e pagine à parte da:',
 'allarticles' => "Tutti l'articuli",
 'allinnamespace' => 'Tutte e pagine di u spaziu $1',
-'allnotinnamespace' => 'Tutte e pagine micca di u spaziu $1',
-'allpagesprev' => 'Precedenti',
-'allpagesnext' => 'Seguenti',
 'allpagessubmit' => 'Và',
 'allpagesprefix' => 'Mustrà e pagine chì cumincianu cù:',
 'allpages-bad-ns' => 'U spaziu "$1" ùn esiste micca nant\'à {{SITENAME}}',
@@ -429,14 +425,12 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
 'contribslink' => 'cuntribuzioni',
 'block-log-flags-anononly' => 'solu cuntributori anonimi',
 'block-log-flags-nocreate' => 'registramentu pruibitu',
-'proxyblocksuccess' => 'Hè fattu.',
 
 # Move page
 'move-page-legend' => 'Move a pagina',
 'movearticle' => 'Move a pagina',
 'move-watch' => 'Fighjulà issa pagina',
 'movepagebtn' => 'Move a pagina',
-'movedto' => 'mossu à',
 'movelogpagetext' => 'Elencu di e pagine mosse.',
 'movereason' => 'Mutivu:',
 'delete_and_move_confirm' => 'Iè, supprimà issa pagina',
@@ -538,4 +532,7 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
 # Special:Tags
 'tags-edit' => 'mudificà',
 
+# Special:ExpandTemplates
+'expand_templates_output' => 'Risultatu',
+
 );
index 0988bbf..f549c7e 100644 (file)
@@ -35,7 +35,6 @@ $messages = array(
 'tog-minordefault' => 'Markahan ang tanan nga gin-islan nga gamay lang pamaagi sa default',
 'tog-previewontop' => 'Ipakita ang prebyu antes ang kahon sang pang-ilis',
 'tog-previewonfirst' => 'Ipakita ang prebyu sa una nga pag-ilis',
-'tog-nocache' => 'Indi pagpaganahon ang pagcache sang pahina',
 'tog-enotifwatchlistpages' => 'Padal-an ako sang email kung ang pahina sa akon ginabanatayan nagbag-o',
 'tog-enotifusertalkpages' => 'Padal-an ako sang email kung ginbag-o ang akon nga pahina sang istoryahanay',
 'tog-enotifminoredits' => 'Padal-an man ako sang email sa mga gamay nga pag-ilis sang mini nga pahina',
@@ -155,7 +154,6 @@ $messages = array(
 'qbedit' => 'Ilisan',
 'qbpageoptions' => 'Mini nga pahina',
 'qbmyoptions' => 'Akon mga pahina',
-'qbspecialpages' => 'Pinasahi nga mga pahina',
 'faq' => 'Mga perme napamangkot ("FAQ")',
 'faqpage' => "Project:Mga perme napamangkot (''FAQ'')",
 
@@ -359,9 +357,6 @@ Pwede nga naga-unod mini sang isa ukon madamo pa nga mga karakter nga indi pwede
 'perfcachedts' => 'Nakacache ang gasunod nga datos, kag nagligad nga ginsapanahon sang $1. {{PLURAL:$4|ang|$4 ang}} pinakamataas nga bakante nga cache.',
 'querypage-no-updates' => 'Ginbawalan yanda ang mga update sa mini nga pahina .
 Ang data diya wala napreskuhan sang aktwal.',
-'wrong_wfQuery_params' => 'Sala nga mga parametro sa wfQuery()<br />
-Pulos: $1<br />
-Pamangkot: $2',
 'viewsource' => 'Tan-awon ang ginhalinan',
 'viewsource-title' => 'Tan-awon ang ginhalinan para sa $1',
 'actionthrottled' => 'Ginpunggan ang ulubrahon',
@@ -437,7 +432,6 @@ Palihog tistingan liwat.',
 'loginlanguagelabel' => 'Lingguahe:',
 
 # Change password dialog
-'resetpass' => 'Islan ang password',
 'resetpass_header' => 'Islan ang password sang account',
 'oldpassword' => 'Luma nga password:',
 'newpassword' => 'Bag-ong password:',
@@ -524,8 +518,6 @@ Indi pag-ilakip ang pila ka mga suleras.',
 # Revision deletion
 'rev-delundel' => 'ipakita/itago',
 'revdel-restore' => 'Bag-uhon ang lebel sang pagpakita',
-'revdel-restore-deleted' => 'ginpanas nga mga pagbag-o',
-'revdel-restore-visible' => 'makit-an nga mga ginpangbag-o',
 
 # Merge log
 'revertmerge' => 'Sipaksipakon',
@@ -539,10 +531,6 @@ Indi pag-ilakip ang pila ka mga suleras.',
 # Search results
 'searchresults' => 'Resulta sang pagpangita',
 'searchresults-title' => 'Resulta sang pagpangita para sa "$1"',
-'searchresulttext' => 'Para sa madamu pa nga impormasyon parti sa pagpangita {{SITENAME}}, lantawa ang [[{{MediaWiki:Helppage}}|{{int:bulig}}]].',
-'searchsubtitle' => 'Nagpangita ka para \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanan nga pahina gasugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanan nga pahina nga naga tabid kay "$1"]])',
-'searchsubtitleinvalid' => "Ginapangita mo ang '''$1'''",
-'notitlematches' => 'Wala sang pareho nga titulo sang pahina',
 'notextmatches' => 'Wala sang pahina sang teksto nga pareho',
 'prevn' => 'antes {{PLURAL:$1|$1}}',
 'nextn' => 'dason {{PLURAL:$1|$1}}',
@@ -570,14 +558,10 @@ Indi pag-ilakip ang pila ka mga suleras.',
 'search-interwiki-more' => '(mas damu pa)',
 'searchall' => 'tanan',
 'showingresultsheader' => "{{PLURAL:$5|Resulta nga '''$1''' sang '''$3'''|Mga resulta nga '''$1 - $2''' sang '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Tandaan''': Ang iban lang nga mga ngalan-espasyo ang ginapangita depende sa gintakda.
-Tistingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang tanan nga unod (dala na dira ang pahina pag-istoryahanay, templeyts, etc), ukon gamita amg imo nanamian nga ngalan-espasyo bilang prefiks.",
 'search-nonefound' => 'Wala sang mga resulta nga nagatugma sa pamangkot/pagpamangkot.',
-'powersearch' => 'Abanse nga pagpangita',
 'powersearch-legend' => 'Abanse nga pagpangita',
 'powersearch-ns' => 'Magpangita sa mga espasyo sang pangalan:',
 'powersearch-redir' => 'Lista sang mga gindirekta liwat',
-'powersearch-field' => 'Pangita-on ang',
 
 # Preferences page
 'preferences' => 'Mga ginapalabi',
@@ -606,7 +590,6 @@ Tistingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang
 'recentchanges-label-minor' => 'Gamay lang ini nga pagbag-o',
 'recentchanges-label-bot' => 'Ubra sang isa ka bot ang mini nga pagbag-o',
 'recentchanges-label-unpatrolled' => 'Wala pa napapatrulyahan ang mini nga pagbag-o',
-'rcnote' => "Diya sa idalum may {{PLURAL:$1|'''1''' ka bag-o| '''$1''' ka mga nabag-o}} sang naligad nga {{PLURAL:$2|ka adlaw|'''$2''' ka adlaw}}, sang mini nga $5, $4.",
 'rclistfrom' => 'Ipakita ang bag-o nga mga na-islan halin sa $1',
 'rcshowhideminor' => '$1 gamay nga mga inislan',
 'rcshowhidebots' => '$1 ka bots',
@@ -839,9 +822,6 @@ Sa mga mini nga kaso, kinahanglan mo hulagon ang pahina nga ikaw mismo, kung gus
 'movepage-moved' => '\'\'\'"Nasaylo na ang "$1" pakadto sa "$2"\'\'\'',
 'articleexists' => 'May-ara na sang pahina nga kapareho sang imo titulo, ukon ang ngalan nga imo ginpili indi pwede.
 Palihog pili liwat sang bag-o nga ngalan.',
-'talkexists' => "'''Nasaylo na mismo ang mina nga pahina, pero ang pahina sang istoryahanay indi masaylo kay may ara na sang nakakuha sang bag-o nga titulo.
-Palihog pakikombinar sa ila sang manomano.'''",
-'movedto' => 'ginsaylo sa',
 'movetalk' => 'Isaylo ang kaangot nga pahina sang istoryahanay',
 'movelogpage' => 'Lista sang pagsaylo',
 'movereason' => 'Rason:',
@@ -949,10 +929,6 @@ Ang iban ay pagataguon sang default.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Islan ang mini nga file gamit ang panluwas nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [https://www.mediawiki.org/wiki/Manual:External_editors mga pama-agi sa paghanda kag pag-ayos] para sa mga dugang nga impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tanan',
 'namespacesall' => 'tanan',
index f60d84a..268bcab 100644 (file)
@@ -120,7 +120,7 @@ $messages = array(
 'tog-editsection' => 'Болюклерни [денъиштир] багълантысы вастасынен денъиштирмеге рухсет бер',
 'tog-editsectiononrightclick' => 'Болюк серлевасына онъ баскъанда денъиштирюв пенджересини ач. (JavaScript)',
 'tog-showtoc' => 'Мундеридже джедвели косьтер (3 данеден зияде серлевасы олгъан саифелер ичюн)',
-'tog-rememberpassword' => 'Киришимни бу браузерде хатырла (энъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
+'tog-rememberpassword' => 'Киришимни бу браузерде хатырла (энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}} ичюн)',
 'tog-watchcreations' => 'Яраткъан саифелеримни ве юклеген файлларымны козетюв джедвелиме кирсет',
 'tog-watchdefault' => 'Денъиштирген саифе ве файлларымны козетюв джедвелиме кирсет',
 'tog-watchmoves' => 'Адыны мен денъиштирген саифе ве файлларны козетюв джедвелиме кирсет',
@@ -128,7 +128,6 @@ $messages = array(
 'tog-minordefault' => 'Япкъан денъиштирмелеримни кичик денъиштирмедир деп ишаретле',
 'tog-previewontop' => 'Бакъып чыкъувны язув пенджеренинъ устюнде косьтер',
 'tog-previewonfirst' => 'Денъиштирме саифесине кечкенде бакъып чыкъувны косьтер',
-'tog-nocache' => 'Браузер саифелерни афызасында тутмасын',
 'tog-enotifwatchlistpages' => 'Козетюв джедвелимдеки бир саифе я да файл денъиштирильгенде манъа e-mail ёлла',
 'tog-enotifusertalkpages' => 'Къулланыджы саифем денъиштирильгенде манъа e-mail ёлла',
 'tog-enotifminoredits' => 'Саифе я да файлда кичик денъиштирильме олгъанда да манъа e-mail ёлла',
@@ -213,19 +212,19 @@ $messages = array(
 'dec' => 'дек',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Саифенинъ категориясы|Саифенинъ категориялары}}',
+'pagecategories' => '{{PLURAL:$1|1=Саифенинъ категориясы|Саифенинъ категориялары}}',
 'category_header' => '"$1" категориясындаки саифелер',
 'subcategories' => 'Алт категориялар',
 'category-media-header' => '"$1" категориясындаки медиа файллары',
 'category-empty' => "''Ишбу категорияда ич бир саифе я да медиа файл ёкъ.''",
-'hidden-categories' => 'Гизли {{PLURAL:$1|категория|категориялар}}',
+'hidden-categories' => 'Гизли {{PLURAL:$1|1=категория|категориялар}}',
 'hidden-category-category' => 'Гизли категориялар',
-'category-subcat-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки алт категория бар.|Бу категориядаки топлам $2 алт категориядан ашагъыдаки $1 алт категория косьтерильген.}}',
-'category-subcat-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} алт категория бар.',
-'category-article-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки саифе бар.|Бу категориядаки топлам $2 саифеден ашагъыдаки $1 саифе косьтерильген.}}',
-'category-article-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} саифе бар.',
-'category-file-count' => '{{PLURAL:$2|Бу категорияда тек бир ашагъыдаки файл бар.|Бу категориядаки топлам $2 файлдан ашагъыдаки $1 файл косьтерильген.}}',
-'category-file-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1|$1}} файл бар.',
+'category-subcat-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки алт категория бар.|Бу категориядаки топлам $2 алт категориядан ашагъыдаки $1 алт категория косьтерильген.}}',
+'category-subcat-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} алт категория бар.',
+'category-article-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки саифе бар.|Бу категориядаки топлам $2 саифеден ашагъыдаки $1 саифе косьтерильген.}}',
+'category-article-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} саифе бар.',
+'category-file-count' => '{{PLURAL:$2|1=Бу категорияда тек бир ашагъыдаки файл бар.|Бу категориядаки топлам $2 файлдан ашагъыдаки $1 файл косьтерильген.}}',
+'category-file-count-limited' => 'Бу категорияда ашагъыдаки {{PLURAL:$1|1=1|$1}} файл бар.',
 'listingcontinuesabbrev' => ' (девам)',
 'index-category' => 'Индексли саифелер',
 'noindex-category' => 'Индекссиз саифелер',
@@ -249,7 +248,6 @@ $messages = array(
 'qbedit' => 'Денъиштир',
 'qbpageoptions' => 'Бу саифе',
 'qbmyoptions' => 'Саифелерим',
-'qbspecialpages' => 'Махсус саифелер',
 'faq' => 'Сыкъ берильген суаллер',
 'faqpage' => 'Project:Сыкъ берильген суаллер',
 
@@ -291,8 +289,8 @@ $messages = array(
 'create-this-page' => 'Бу саифени ярат',
 'delete' => 'Ёкъ эт',
 'deletethispage' => 'Саифени ёкъ эт',
-'undelete_short' => '{{PLURAL:$1|1|$1}} денъиштирмени кери кетир',
-'viewdeleted_short' => '{{PLURAL:$1|бир ёкъ этильген денъиштирмени|$1 ёкъ этильген денъиштирмени}} косьтер.',
+'undelete_short' => '{{PLURAL:$1|1=1|$1}} денъиштирмени кери кетир',
+'viewdeleted_short' => '{{PLURAL:$1|1=бир ёкъ этильген денъиштирмени|$1 ёкъ этильген денъиштирмени}} косьтер.',
 'protect' => 'Къорчала',
 'protect_change' => 'денъиштир',
 'protectthispage' => 'Саифени къорчалав алтына ал',
@@ -320,7 +318,7 @@ $messages = array(
 'redirectedfrom' => '($1 саифесинден ёлланды)',
 'redirectpagesub' => 'Ёллама саифеси',
 'lastmodifiedat' => 'Бу саифе сонъки оларакъ $1, $2 тарихында янъарды.',
-'viewcount' => 'Бу саифе {{PLURAL:$1|1|$1}} дефа иришильген.',
+'viewcount' => 'Бу саифе {{PLURAL:$1|1=1|$1}} дефа иришильген.',
 'protectedpage' => 'Къорчалангъан саифе',
 'jumpto' => 'Бунъа бар:',
 'jumptonavigation' => 'къуллан',
@@ -353,7 +351,7 @@ $1',
 
 'badaccess' => 'Изин хатасы',
 'badaccess-group0' => 'Япаджакъ олгъан арекетинъизни япмагъа акъкъынъыз ёкъ.',
-'badaccess-groups' => 'Япаджакъ олгъан арекетинъизни тек ашагъыдаки {{PLURAL:$2|1|$2}} группагъа аза олгъан къулланыджылары япып олалар: $1.',
+'badaccess-groups' => 'Япаджакъ олгъан арекетинъизни тек ашагъыдаки {{PLURAL:$2|1=1|$2}} группагъа аза олгъан къулланыджылары япып олалар: $1.',
 
 'versionrequired' => 'MediaWiki-нинъ $1 версиясы керек',
 'versionrequiredtext' => 'Бу саифени къулланмакъ ичюн MediaWiki-нинъ $1 версиясы керек. [[Special:Version|Версия]] саифесине бакъ.',
@@ -361,10 +359,10 @@ $1',
 'ok' => 'Ок',
 'retrievedfrom' => 'Менба – "$1"',
 'youhavenewmessages' => 'Янъы $1 бар ($2).',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|1=Башкъа бир къулланыджыдан|$3 къулланыджыдан}} $1 бар. ($2)',
 'youhavenewmessagesmanyusers' => 'Бир къач къулланыджыдан $1 бар. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|янъы беянатынъыз|янъы беянатларынъыз}}',
-'newmessagesdifflinkplural' => 'музакере саифенъизнинъ сонъки {{PLURAL:$1|денъиштирильмеси|денъиштирильмелери}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=янъы беянатынъыз|янъы беянатларынъыз}}',
+'newmessagesdifflinkplural' => 'музакере саифенъизнинъ сонъки {{PLURAL:$1|1=денъиштирильмеси|денъиштирильмелери}}',
 'youhavenewmessagesmulti' => '$1 саифесинде янъы беянатынъыз бар.',
 'editsection' => 'денъиштир',
 'editold' => 'денъиштир',
@@ -379,7 +377,7 @@ $1',
 'collapsible-expand' => 'Кенишлет',
 'thisisdeleted' => '$1 корьмеге я да кери кетирмеге истейсинъизми?',
 'viewdeleted' => '$1 корь?',
-'restorelink' => 'ёкъ этильген {{PLURAL:$1|1|$1}} денъиштирмеси',
+'restorelink' => 'ёкъ этильген {{PLURAL:$1|1=1|$1}} денъиштирмеси',
 'feedlinks' => 'Бу шекильде:',
 'feed-invalid' => 'Абуне каналынынъ чешити янълыштыр.',
 'feed-unavailable' => 'Синдикация ленталары къулланылып оламай.',
@@ -450,12 +448,9 @@ $1',
 Ич бир изаат берильмеди.',
 'badtitle' => 'Рухсетсиз серлева',
 'badtitletext' => 'Истенильген саифе ады догъру дегиль, о боштыр, яхут тиллерара багъланты я да викилерара багъланты догъру язылмагъан. Бельки саифе адында ясакълангъан ишаретлер бар.',
-'perfcached' => 'Ашагъыдаки малюмат кэштен алынды ве эскирген ола билир! Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
-'perfcachedts' => 'Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|бир нетидже|$1 нетидже}} сакъланып тура.',
+'perfcached' => 'Ашагъыдаки малюмат кэштен алынды ве эскирген ола билир! Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.',
+'perfcachedts' => 'Ашагъыдаки малюмат кэштен алынды, кэшнинъ сонъки янъартылгъан вакъты: $1. Кэште энъ чокъ {{PLURAL:$1|1=бир нетидже|$1 нетидже}} сакъланып тура.',
 'querypage-no-updates' => 'Бу саифени денъиштирмеге шимди изин ёкъ. Бу малюмат аман янъартылмайджакъ.',
-'wrong_wfQuery_params' => 'wfQuery() функциясы ичюн изинсиз параметрлер<br />
-Функция: $1<br />
-Соратма: $2',
 'viewsource' => 'менба кодуны косьтер',
 'viewsource-title' => '$1 саифесининъ менба коду',
 'actionthrottled' => 'Арекет токъталды',
@@ -464,7 +459,7 @@ $1',
 'viewsourcetext' => 'Саифенинъ кодуны козьден кечирип копиялай билесинъиз:',
 'protectedinterface' => 'Бу саифеде система интерфейсининъ метни бар. Онынъ ичюн мында бир хата чыкъмасын деп оны денъиштирмек ясакъ.',
 'editinginterface' => "'''Тенби''': MediaWiki системасынынъ интерфейс саифесини денъиштиреятасыз. Бу саифедеки денъиштирмелер интерфейснинъ корюнишини бу викининъ башкъа къулланыджылары ичюн де денъиштиреджек. Лютфен, вики интерфейсини терджиме этмек ичюн [//translatewiki.net/wiki/Main_Page?setlang=crh translatewiki.net] сайтыны (MediaWiki ресмий локализация лейхасы) къулланынъыз.",
-'cascadeprotected' => 'Бу саифени денъиштирип оламазсынъыз, чюнки каскад къорчалав алтында булунгъан {{PLURAL:$1|саифеге|саифелерге}} менсюптир:
+'cascadeprotected' => 'Бу саифени денъиштирип оламазсынъыз, чюнки каскад къорчалав алтында булунгъан {{PLURAL:$1|1=саифеге|саифелерге}} менсюптир:
 $2',
 'namespaceprotected' => "'''$1''' исим фезасында саифелер денъиштирмеге акъкъынъыз ёкъ.",
 'ns-specialprotected' => '{{ns:special}} исим фезасындаки саифелерни денъиштирмек ясакъ.',
@@ -483,7 +478,7 @@ $2',
 'yourname' => 'Къулланыджы адынъыз',
 'yourpassword' => 'Паролинъиз',
 'yourpasswordagain' => 'Парольни бир даа язынъыз:',
-'remembermypassword' => 'Киришимни бу компьютерде хатырла (энъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
+'remembermypassword' => 'Киришимни бу компьютерде хатырла (энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}} ичюн)',
 'yourdomainname' => 'Домен адынъыз',
 'externaldberror' => 'Сайткъа киргенде бир хата олды. Бу тыш эсабынъызны денъиштирмек акъкъынъыз олмагъанындан себеп мейдангъа келип ола.',
 'login' => 'Кириш',
@@ -521,13 +516,13 @@ $2',
 'wrongpassword' => 'Кирсеткен паролинъиз янълыштыр. Лютфен, текрар этинъиз.',
 'wrongpasswordempty' => 'Кирсеткен паролинъиз боштыр.
 Лютфен, текрар этинъиз.',
-'passwordtooshort' => 'Паролинъизде энъ аз {{PLURAL:$1|1|$1}} ишарет олмалы.',
+'passwordtooshort' => 'Паролинъизде энъ аз {{PLURAL:$1|1=1|$1}} ишарет олмалы.',
 'password-name-match' => 'Паролинъиз къулланыджы адынъыздан фаркълы олмалы.',
 'password-login-forbidden' => 'Бу къулланыджы ады ве парольни къулланмакъ ясакътыр.',
 'mailmypassword' => 'Янъы пароль йибер',
 'passwordremindertitle' => '{{grammar:genitive|{{SITENAME}}}} къулланыджынынъ пароль хатырлатувы',
 'passwordremindertext' => 'Бирев (бельки де бу сизсинъиз, $1 IP адресинден) {{SITENAME}} сайты ичюн ($4) янъы къулланыджы паролини истеди.
-$2 къулланыджысына вакътынджа <code>$3</code> пароли яратылды. Эгер бу керчектен де сизинъ истегинъиз олгъан олса, отурым ачып янъы бир пароль яратманъыз керектир. Мувакъкъат паролинъизнинъ муддети {{PLURAL:$5|1 кунь|$5 кунь}} ичинде доладжакъ.
+$2 къулланыджысына вакътынджа <code>$3</code> пароли яратылды. Эгер бу керчектен де сизинъ истегинъиз олгъан олса, отурым ачып янъы бир пароль яратманъыз керектир. Мувакъкъат паролинъизнинъ муддети {{PLURAL:$5|1=1 кунь|$5 кунь}} ичинде доладжакъ.
 
 Эгер де янъы пароль талап этмеген олсанъыз я да эски паролинъизни хатырлап энди оны денъиштирмеге истемесенъиз, бу мектюпни дикъкъаткъа алмайып эски паролинъизни къулланмагъа девам этип оласынъыз.',
 'noemail' => '$1 адлы къулланыджы ичюн e-mail бильдирильмеди.',
@@ -535,9 +530,9 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
 'passwordsent' => 'Янъы пароль e-mail ёлунен къулланыджынынъ бильдирген $1 адресине йиберильди. Парольни алгъан сонъ текрар кириш япынъыз.',
 'blocked-mailpassword' => 'IP адресинъизден саифелер денъиштирюв ясакълы, пароль хатырлатув функциясы да блок этильди.',
 'eauthentsent' => 'Бильдирильген e-mail адресине ичинде тасдыкъ коду олгъан бир мектюп ёлланды. Сиз шу мектюпте язылгъан арекетлерни япып бу e-mail адресининъ саиби керчектен де сиз олгъанынъызны тасдыкълагъан сонъ башкъа мектюп ёлланып олур.',
-'throttled-mailpassword' => 'Пароль хатырлатув функциясы энди сонъки {{PLURAL:$1|1|$1}} саат девамында ишлетильген эди. {{PLURAL:$1|1|$1}} саат ичинде тек бир хатырлатув ишлетмек мумкюн.',
+'throttled-mailpassword' => 'Пароль хатырлатув функциясы энди сонъки {{PLURAL:$1|1=1|$1}} саат девамында ишлетильген эди. {{PLURAL:$1|1=1|$1}} саат ичинде тек бир хатырлатув ишлетмек мумкюн.',
 'mailerror' => 'Почта йиберильгенде бир хата мейдангъа кельди: $1',
-'acct_creation_throttle_hit' => 'Сизинъ IP адресинъизни къулланып бу викини зиярет эткенлер сонъки куньде {{PLURAL:$1|1 эсап|$1 эсап}} яратты. Бу вакъыт аралыгъында бир IP-ден даа чокъ эсап яратмакъ мумкюн дегиль.
+'acct_creation_throttle_hit' => 'Сизинъ IP адресинъизни къулланып бу викини зиярет эткенлер сонъки куньде {{PLURAL:$1|1=1 эсап|$1 эсап}} яратты. Бу вакъыт аралыгъында бир IP-ден даа чокъ эсап яратмакъ мумкюн дегиль.
 Нетиджеде, бу IP адресини къуллангъан зияретчилер шимди даа зияде эсап ачып оламазлар.',
 'emailauthenticated' => 'E-mail адресинъиз $2 $3 тарихында тасдыкъланды.',
 'emailnotauthenticated' => 'E-mail адресинъиз тасдыкъланмады, викининъ e-mail иле багълы функциялары чалышмайджакъ.',
@@ -559,7 +554,7 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
 'suspicious-userlogout' => 'Чыкъыш истегенинъиз ред этильди, чюнки бозукъ бир браузер я да кэшлейиджи прокси тарафындан ёллангъан киби корюне.',
 
 # Change password dialog
-'resetpass' => 'Парольни денъиштир',
+'changepassword' => 'Пароль денъиштир',
 'resetpass_announce' => 'Мувакъкъат код вастасынен кирдинъиз. Киришни тамамламакъ ичюн янъы парольни мында къоюнъыз:',
 'resetpass_header' => 'Эсапнынъ паролини денъиштир',
 'oldpassword' => 'Эски пароль',
@@ -710,23 +705,23 @@ $2 къулланыджысына вакътынджа <code>$3</code> паро
 Журналнынъ сонъки язысы ашагъыда берильген:",
 'semiprotectedpagewarning' => "'''Тенби''': Бу саифе тек къайдлы къулланыджылар тарафындан денъиштирилип олур.
 Журналнынъ сонъки язысы ашагъыда берильген:",
-'cascadeprotectedwarning' => "'''Тенби:''' Бу саифени тек «Идареджилер» группасына кирген къулланыджылар денъиштирип олалар, чюнки о каскад къорчалав алтында булунгъан {{PLURAL:$1|саифеге|саифелерге}} менсюптир:",
+'cascadeprotectedwarning' => "'''Тенби:''' Бу саифени тек «Идареджилер» группасына кирген къулланыджылар денъиштирип олалар, чюнки о каскад къорчалав алтында булунгъан {{PLURAL:$1|1=саифеге|саифелерге}} менсюптир:",
 'titleprotectedwarning' => "'''ТЕНБИ: Бу саифе къорчалав алтындадыр, тек [[Special:ListGroupRights|махсус акъларгъа]] саип къулланыджылар оны яратып ола.'''
 Журналнынъ сонъки язысы ашагъыда берильген:",
-'templatesused' => 'Бу саифеде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
-'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
-'templatesusedsection' => 'Бу болюкте къулланылгъан {{PLURAL:$1|шаблон|шаблонлар}}:',
+'templatesused' => 'Бу саифеде къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
+'templatesusedpreview' => 'Сиз бакъып чыкъкъан саифенъизде къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
+'templatesusedsection' => 'Бу болюкте къулланылгъан {{PLURAL:$1|1=шаблон|шаблонлар}}:',
 'template-protected' => '(къорчалав алтында)',
 'template-semiprotected' => '(къысмен къорчалав алтында)',
-'hiddencategories' => 'Бу саифе {{PLURAL:$1|1|$1}} гизли категориягъа менсюптир:',
+'hiddencategories' => 'Бу саифе {{PLURAL:$1|1=1|$1}} гизли категориягъа менсюптир:',
 'nocreatetext' => '{{SITENAME}} сайтында янъы саифе яратув сынъырлыдыр.
 Кери къайтып мевджут олгъан саифени денъиштире, [[Special:UserLogin|отурым ача я да янъы бир эсап яратып оласынъыз]].',
 'nocreate-loggedin' => 'Янъы саифелер яратмагъа изининъиз ёкътыр.',
 'sectioneditnotsupported-title' => 'Болюклерни денъиштирмек мумкюн дегиль.',
 'sectioneditnotsupported-text' => 'Бу саифеде болюклерни денъиштирмек мумкюн дегиль.',
 'permissionserrors' => 'Иришим акъларынынъ хаталары',
-'permissionserrorstext' => 'Буны япмагъа изининъиз ёкътыр. {{PLURAL:$1|Себеп|Себеплер}}:',
-'permissionserrorstext-withaction' => 'Ашагъыдаки {{PLURAL:$1|себептен|себеплерден}} $2 рухсетинъиз ёкъ:',
+'permissionserrorstext' => 'Буны япмагъа изининъиз ёкътыр. {{PLURAL:$1|1=Себеп|Себеплер}}:',
+'permissionserrorstext-withaction' => 'Ашагъыдаки {{PLURAL:$1|1=себептен|себеплерден}} $2 рухсетинъиз ёкъ:',
 'recreate-moveddeleted-warn' => "'''Тенби: Эвельдже ёкъ этильген саифени янъыдан яратасынъыз.'''
 
 Саифени денъиштирмеге девам эткени уйгъун олып олмагъаныны тюшюнмелисинъиз.
@@ -776,7 +771,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'history-show-deleted' => 'Тек ёкъ этильгенлер',
 'histfirst' => 'Энъ эски',
 'histlast' => 'Энъ янъы',
-'historysize' => '({{PLURAL:$1|1 байт|$1 байт}})',
+'historysize' => '({{PLURAL:$1|1=1 байт|$1 байт}})',
 'historyempty' => '(бош)',
 
 # Revision feed
@@ -797,7 +792,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'revdelete-hide-comment' => 'Къыскъа тарифни косьтерме',
 'revdelete-hide-user' => 'Денъиштирмени япкъаннынъ къулланыджы адыны/IP-ни гизле',
 'revdelete-hide-restricted' => 'Малюматны адий къулланыджылардан киби идареджилерден де гизле',
-'revdelete-submit' => 'Сайлангъан {{PLURAL:$1|версиягъа|версияларгъа}} ишлет',
+'revdelete-submit' => 'Сайлангъан {{PLURAL:$1|1=версиягъа|версияларгъа}} ишлет',
 'revdel-restore' => 'корюнювни денъиштир',
 
 # Merge log
@@ -811,30 +806,24 @@ $3 мына бу себепни бильдирди: ''$2''",
 'compareselectedversions' => 'Сайлангъан версияларны тенъештир',
 'showhideselectedversions' => 'Сайлангъан версияларны косьтер/гизле',
 'editundo' => 'лягъу эт',
-'diff-multi' => '({{PLURAL:$2|Бир къулланыджы|$2 къулланыджы}}нынъ япкъан {{PLURAL:$1|бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
-'diff-multi-manyusers' => '($2-ден зияде {{PLURAL:$2|къулланыджы|къулланыджы}}нынъ япкъан {{PLURAL:$1|бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
+'diff-multi' => '({{PLURAL:$2|1=Бир къулланыджы|$2 къулланыджы}}нынъ япкъан {{PLURAL:$1|1=бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
+'diff-multi-manyusers' => '($2-ден зияде {{PLURAL:$2|1=къулланыджы|къулланыджы}}нынъ япкъан {{PLURAL:$1|1=бир ара версиясы|$1 ара версиясы}} косьтерильмей)',
 
 # 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' => 'Саифе башына $1 {{PLURAL:$1|нетидже|нетидже}} косьтер',
+'prevn-title' => 'Эвельки $1 {{PLURAL:$1|1=нетидже|нетидже}}',
+'nextn-title' => 'Сонъраки $1 {{PLURAL:$1|1=нетидже|нетидже}}',
+'shown-title' => 'Саифе башына $1 {{PLURAL:$1|1=нетидже|нетидже}} косьтер',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Къыдырув сазламалары',
 'searchmenu-exists' => "'''Бу викиде \"[[:\$1]]\" адлы бир саифе бар'''",
 'searchmenu-new' => "'''Бу викиде \"[[:\$1]]\" саифесини ярат!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префиксли саифелерни косьтер]]',
 'searchprofile-articles' => 'Малюмат саифелери',
 'searchprofile-project' => 'Ярдым ве лейха саифелери',
 'searchprofile-images' => 'Мультимедиа',
@@ -845,7 +834,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'searchprofile-images-tooltip' => 'Файлларны къыдыр',
 'searchprofile-everything-tooltip' => 'Бутюн саифелерде (музакере саифелеринде де) къыдыр',
 'searchprofile-advanced-tooltip' => 'Бельгиленген исим фезаларында къыдыр',
-'search-result-size' => '$1 ({{PLURAL:$2|1|$2}} сёз)',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1|$2}} сёз)',
 'search-result-score' => 'Уйгъунлыкъ: $1 %',
 'search-redirect' => '(ёллама $1)',
 'search-section' => '(болюк $1)',
@@ -854,19 +843,15 @@ $3 мына бу себепни бильдирди: ''$2''",
 'search-interwiki-default' => '$1 нетидже:',
 'search-interwiki-more' => '(даа чокъ)',
 'search-relatedarticle' => 'Багълы',
-'mwsuggest-disable' => 'AJAX тевсиелерини ишлетме',
 'searcheverything-enable' => 'Бутюн исим фезаларында къыдыр',
 'searchrelated' => 'багълы',
 'searchall' => 'эписи',
-'showingresults' => "Ашагъыда №&nbsp;<strong>$2</strong>ден башлап {{PLURAL:$1|'''1''' нетидже|'''$1''' нетидже}} булуна.",
-'showingresultsnum' => "Ашагъыда №&nbsp;'''$2'''ден башлап {{PLURAL:$3|'''1''' нетидже|'''$3''' нетидже}} булуна.",
-'nonefound' => "'''Ихтар.''' Адийджесине къыдырув бутюн исим фезаларында япылмай. Бутюн исим фезаларында (бу джумледен къулланыджылар субетлери, шаблонлар ве иляхре) къыдырмакъ ичюн ''all:'' языны къулланынъыз, муайен бир исим фезасында къыдырмакъ ичюн исе ''ад:'' форматында онынъ адыны язынъыз.",
+'showingresults' => "Ашагъыда №&nbsp;<strong>$2</strong>ден башлап {{PLURAL:$1|1='''1''' нетидже|'''$1''' нетидже}} булуна.",
+'showingresultsnum' => "Ашагъыда №&nbsp;'''$2'''ден башлап {{PLURAL:$3|1='''1''' нетидже|'''$3''' нетидже}} булуна.",
 'search-nonefound' => 'Соратманен эшлешкен бир нетидже ёкъ.',
-'powersearch' => 'Къыдыр',
 'powersearch-legend' => 'Тафсилятлы къыдырув',
 'powersearch-ns' => 'Бу исим фезаларында къыдыр:',
 'powersearch-redir' => 'Ёллама саифелерини де косьтер',
-'powersearch-field' => 'Къыдыр:',
 'powersearch-togglelabel' => 'Сайла:',
 'powersearch-toggleall' => 'Эписи',
 'powersearch-togglenone' => 'Ич бири',
@@ -877,7 +862,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'preferences' => 'Сазламалар',
 'mypreferences' => 'Сазламалар',
 'prefs-edits' => 'Денъиштирмелер сайысы:',
-'changepassword' => 'Пароль денъиштир',
 'prefs-skin' => 'Ресимлеме',
 'skin-preview' => 'Бакъып чыкъув',
 'datedefault' => 'Стандарт',
@@ -886,7 +870,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'prefs-rc' => 'Сонъки денъиштирмелер',
 'prefs-watchlist' => 'Козетюв джедвели',
 'prefs-watchlist-days' => 'Козетюв джедвелинде косьтериледжек кунь сайысы:',
-'prefs-watchlist-days-max' => 'Энъ чокъ $1 {{PLURAL:$1|кунь|кунь}}',
+'prefs-watchlist-days-max' => 'Энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}}',
 'prefs-watchlist-edits' => 'Кенишлетилген козетюв джедвелинде косьтериледжек денъиштирмелер сайысы:',
 'prefs-watchlist-edits-max' => '(энъ чокъ 1000)',
 'prefs-watchlist-token' => 'Козетюв джедвели ишарети:',
@@ -895,15 +879,13 @@ $3 мына бу себепни бильдирди: ''$2''",
 'prefs-email' => 'E-mail сазламалары',
 'prefs-rendering' => 'Корюниш',
 'saveprefs' => 'Сакъла',
-'resetprefs' => 'Сакъланмагъан сазламаларны ильк алына кетир',
 'restoreprefs' => 'Бутюн ог бельгиленген сазламаларны къайтар',
 'prefs-editing' => 'Саифелерни денъиштирюв',
 'rows' => 'Сатыр',
 'columns' => 'Сутун',
 'searchresultshead' => 'Къыдырув',
-'resultsperpage' => 'Саифеде косьтериледжек тапылгъан саифе сайысы',
 'recentchangesdays' => 'Сонъки денъиштирмелер саифесинде косьтериледжек кунь сайысы:',
-'recentchangesdays-max' => '(энъ чокъ $1 {{PLURAL:$1|кунь|кунь}})',
+'recentchangesdays-max' => '(энъ чокъ $1 {{PLURAL:$1|1=кунь|кунь}})',
 'recentchangescount' => 'Ог бельгиленген косьтериледжек денъиштирмелер сайысы:',
 'prefs-help-recentchangescount' => 'Бу, сонъки денъиштирмелер, саифе кечмиши ве журнал саифелеринде къулланыла.',
 'savedprefs' => 'Сазламаларынъыз сакъланды.',
@@ -911,7 +893,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'localtime' => 'Ерли вакъыт:',
 'timezoneuseserverdefault' => 'Сервернинъ сазламалары къулланылсын ($1)',
 'timezoneuseoffset' => 'Башкъа (фракъны кирсетинъиз)',
-'timezoneoffset' => 'Саат фаркъы¹:',
 'servertime' => 'Сервернинъ сааты:',
 'guesstimezone' => 'Браузеринъиз сизинъ еринъизге коре толдурсын',
 'timezoneregion-africa' => 'Африка',
@@ -935,7 +916,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'youremail' => 'E-mail адресинъиз:',
 'username' => 'Къулланыджы ады:',
 'uid' => 'Къайд номери:',
-'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|группа|группалар}}:',
+'prefs-memberingroups' => 'Азасы олгъан {{PLURAL:$1|1=группа|группалар}}:',
 'prefs-registration' => 'Къайд тарихы:',
 'yourrealname' => 'Керчек адынъыз:',
 'yourlanguage' => 'Интерфейс тили:',
@@ -943,7 +924,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'yournick' => 'Янъы имзанъыз:',
 'prefs-help-signature' => 'Музакере саифелериндеки тефсирлерни "<nowiki>~~~~</nowiki>" иле имзаламакъ керек, бу дёрт тильда ерине имзанъыз ве вакъыт косьтерилир.',
 'badsig' => 'Янълыш имза. HTML тэглерининъ догърулыгъыны бакъынъыз.',
-'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
+'badsiglength' => 'Къарардан зияде узун имзадыр, {{PLURAL:$1|1=1|$1}} зияде ишареттен ибарет олмасы мумкюн дегиль.',
 'yourgender' => 'Джынсынъыз:',
 'gender-unknown' => 'Бильдирильмеген',
 'gender-male' => 'Эркек',
@@ -1024,7 +1005,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'recentchanges-label-bot' => 'Бу бир ботнынъ япкъан денъиштирмеси',
 'recentchanges-label-unpatrolled' => 'Бу денъиштирме аля даа тешкерильмеген',
 'recentchanges-legend-newpage' => '$1 - янъы саифе',
-'rcnote' => "$4 $5 тарихында сонъки {{PLURAL:$2|куньде|'''$2''' куньде}} япылгъан '''{{PLURAL:$1|1|$1}}''' денъиштирме:",
 'rcnotefrom' => "'''$2''' тарихындан итибарен япылгъан денъиштирмелер ашагъыдадыр (энъ чокъ '''$1''' дане саифе косьтериле).",
 'rclistfrom' => '$1 тарихындан берли япылгъан денъиштирмелерни косьтер',
 'rcshowhideminor' => 'кичик денъиштирмелерни $1',
@@ -1041,7 +1021,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'minoreditletter' => 'к',
 'newpageletter' => 'Я',
 'boteditletter' => 'б',
-'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|къулланыджы|къулланыджы}} козете]',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|1=къулланыджы|къулланыджы}} козете]',
 'rc_categories' => 'Тек категориялардан («|» иле айырыла)',
 'rc_categories_any' => 'Эр анги',
 'newsectionsummary' => '/* $1 */ янъы болюк',
@@ -1096,9 +1076,9 @@ $3 мына бу себепни бильдирди: ''$2''",
 'filetype-badmime' => '"$1" MIME чешитиндеки файллар юклеме ясакълыдыр.',
 'filetype-bad-ie-mime' => 'Бу файл юкленип оламаз, чюнки Internet Explorer оны "$1" яни рухсет берильмеген ве зарарлы ола бильген файл деп беллейджек.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — истенильмеген файл чешити.
-Истенильген {{PLURAL:\$3|файл чешити|файл чешитлери}}: \$2.",
+Истенильген {{PLURAL:\$3|1=файл чешити|файл чешитлери}}: \$2.",
 'filetype-banned-type' => "'''\".\$1\"''' — ясакълы файл чешити.
-Истенильген {{PLURAL:\$3|файл чешити|файл чешитлери}}: \$2.",
+Истенильген {{PLURAL:\$3|1=файл чешити|файл чешитлери}}: \$2.",
 'filetype-missing' => 'Файлнынъ ич бир узантысы ёкъ (меселя «.jpg», «.gif» ве илх.).',
 'large-file' => 'Буюклиги $1 байттан зияде ибарет олмагъан ресимлер къулланув тевсие этиле (бу файлнынъ буюклиги $2 байт).',
 'largefileserver' => 'Бу файлнынъ узунлыгъы серверде изин берильгенден буюкчедир.',
@@ -1127,7 +1107,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'fileexists-shared-forbidden' => 'Файллар умумий тутулгъан еринде бу исимде бир файл энди бар.
 Эгер бу файлны эп бир юклемеге истесенъиз, кери къайтынъыз ве файл исмини денъиштирип янъыдан юкленъиз.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Бу файл ашагъыдаки {{PLURAL:$1|файлнынъ|файлларнынъ}} дубликаты ола:',
+'file-exists-duplicate' => 'Бу файл ашагъыдаки {{PLURAL:$1|1=файлнынъ|файлларнынъ}} дубликаты ола:',
 'uploadwarning' => 'Тенби',
 'savefile' => 'Файлны сакъла',
 'uploadedimage' => 'Юкленген: "[[$1]]"',
@@ -1196,7 +1176,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 'filehist-comment' => 'Изаат',
 'filehist-missing' => 'Файл ёкъ',
 'imagelinks' => 'Файл багълантылары',
-'linkstoimage' => 'Бу файлгъа багъланты олгъан {{PLURAL:$1|1|$1}} саифе:',
+'linkstoimage' => 'Бу файлгъа багъланты олгъан {{PLURAL:$1|1=1|$1}} саифе:',
 'nolinkstoimage' => 'Бу файлгъа багълангъан саифе ёкъ.',
 'sharedupload' => 'Бу файл $1 сайтындан ве дигер лейхаларда да къулланылып ола.',
 'uploadnewversion-linktext' => 'Файлнынъ янъысыны юкленъиз',
@@ -1228,7 +1208,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 
 # Random page
 'randompage' => 'Тесадюфий саифе',
-'randompage-nopages' => '"$1" {{PLURAL:$2|исим фезасында|исим фезаларында}} ич бир саифе ёкъ.',
+'randompage-nopages' => '"$1" {{PLURAL:$2|1=исим фезасында|исим фезаларында}} ич бир саифе ёкъ.',
 
 # Random redirect
 'randomredirect' => 'Тесадюфий ёллама саифеси',
@@ -1261,12 +1241,12 @@ $3 мына бу себепни бильдирди: ''$2''",
 'fewestrevisions' => 'Энъ аз денъиштирме япылгъан саифелер',
 
 # Miscellaneous special pages
-'nbytes' => '{{PLURAL:$1|1 байт|$1 байт}}',
-'ncategories' => '{{PLURAL:$1|1 категория|$1 категория}}',
-'nlinks' => '{{PLURAL:$1|1 багъланты|$1 багъланты}}',
-'nmembers' => '{{PLURAL:$1|1 аза|$1 аза}}',
-'nrevisions' => '{{PLURAL:$1|1 версия|$1 версия}}',
-'nviews' => '{{PLURAL:$1|1 корюнюв|$1 корюнюв}}',
+'nbytes' => '{{PLURAL:$1|1=1 байт|$1 байт}}',
+'ncategories' => '{{PLURAL:$1|1=1 категория|$1 категория}}',
+'nlinks' => '{{PLURAL:$1|1=1 багъланты|$1 багъланты}}',
+'nmembers' => '{{PLURAL:$1|1=1 аза|$1 аза}}',
+'nrevisions' => '{{PLURAL:$1|1=1 версия|$1 версия}}',
+'nviews' => '{{PLURAL:$1|1=1 корюнюв|$1 корюнюв}}',
 'specialpage-empty' => 'Бу соратма ичюн ич нетидже ёкъ.',
 'lonelypages' => 'Озюне ич багъланты олмагъан саифелер',
 'lonelypagestext' => 'Ашагъыдаки саифелерге {{SITENAME}} сайтындаки дигер саифелерден багъланты берильмеген, ондан да гъайры мезкюр саифелер дигер саиферлрге кирсетильмеген.',
@@ -1293,7 +1273,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'deadendpages' => 'Башкъа саифелерге багълантысы олмагъан саифелер',
 'deadendpagestext' => 'Бу {{SITENAME}} башкъа саифелерине багълантысы олмагъан саифелердир.',
 'protectedpages' => 'Къорчалангъан саифелер',
-'protectedpagestext' => 'Бу саифелернинъ денъиштирювге къаршы къорчалавы бар',
 'protectedtitles' => 'Ясакълангъан серлевалар',
 'listusers' => 'Къулланыджылар джедвели',
 'listusers-editsonly' => 'Тек энъ азындан бир денъиштирме япкъан къулланыджыларны косьтер',
@@ -1302,8 +1281,8 @@ $3 мына бу себепни бильдирди: ''$2''",
 'ancientpages' => 'Энъ эски саифелер',
 'move' => 'Адыны денъиштир',
 'movethispage' => 'Саифенинъ адыны денъиштир',
-'pager-newer-n' => '{{PLURAL:$1|даа янъы 1|даа янъы $1}}',
-'pager-older-n' => '{{PLURAL:$1|даа эски 1|даа эски $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=даа янъы 1|даа янъы $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=даа эски 1|даа эски $1}}',
 
 # Book sources
 'booksources' => 'Китаплар менбасы',
@@ -1327,9 +1306,6 @@ $3 мына бу себепни бильдирди: ''$2''",
 'allpagesto' => 'Шунынънен биткен саифелерни косьтер:',
 'allarticles' => 'Бутюн саифелер',
 'allinnamespace' => 'Бутюн саифелер ($1 саифелери)',
-'allnotinnamespace' => 'Бутюн саифелер ($1 исим фезасында олмагъанлар)',
-'allpagesprev' => 'Эвельки',
-'allpagesnext' => 'Сонъраки',
 'allpagessubmit' => 'Косьтер',
 'allpagesprefix' => 'Язгъан арифлернен башлагъан саифелерни косьтер:',
 'allpagesbadtitle' => 'Саифенинъ ады рухсетсиздир. Серлевада тиллер арасы префикси я да викилер арасы багъланты я да башкъа къулланылувы ясакъ олгъан ишаретлер бар.',
@@ -1337,7 +1313,7 @@ $3 мына бу себепни бильдирди: ''$2''",
 
 # Special:Categories
 'categories' => 'Саифе категориялары',
-'categoriespagetext' => 'Ашагъыдаки {{PLURAL:$1|категорияда|категорияларда}} саифе я да медиа файллар бар.
+'categoriespagetext' => 'Ашагъыдаки {{PLURAL:$1|1=категорияда|категорияларда}} саифе я да медиа файллар бар.
 [[Special:UnusedCategories|Къулланылмагъан категориялар]] мында косьтерильмеген.
 Айрыджа [[Special:WantedCategories|талап этильген категорияларнынъ джедвелине]] де бакъынъыз.',
 'special-categories-sort-count' => 'сайыларына коре сырала',
@@ -1393,14 +1369,14 @@ $3 мына бу себепни бильдирди: ''$2''",
 'unwatch' => 'Козетме',
 'unwatchthispage' => 'Бу саифени козетме',
 'notanarticle' => 'Малюмат саифеси дегиль',
-'watchlist-details' => 'Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlist-details' => 'Музакере саифелерини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
 'wlheader-enotif' => 'E-mail иле хабер берюв ачылды.',
 'wlheader-showupdated' => "Сонъки зияретинъизден сонъ денъиштирильген саифелер '''къалын арифлернен''' косьтерильди.",
 'watchmethod-recent' => 'сонъки денъиштирмелер арасында козеткен саифелеринъиз къыдырыла',
 'watchmethod-list' => 'козетюв джедвелиндеки саифелер тешкериле',
-'watchlistcontains' => 'Сизинъ козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlistcontains' => 'Сизинъ козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
 'iteminvalidname' => '"$1" саифеси мунасебетинен проблема олып чыкъты, эльверишли олмагъан исимдир…',
-'wlnote' => "Ашагъыда саат $3, $4 ичюн сонъки {{PLURAL:$2|саат|'''$2''' саат}} ичинде япылгъан сонъки {{PLURAL:$1|денъиштирме|'''$1''' денъиштирме}} косьтериле.",
+'wlnote' => "Ашагъыда саат $3, $4 ичюн сонъки {{PLURAL:$2|1=саат|'''$2''' саат}} ичинде япылгъан сонъки {{PLURAL:$1|1=денъиштирме|'''$1''' денъиштирме}} косьтериле.",
 'wlshowlast' => 'Сонъки $1 саат ичюн, $2 кунь ичюн я да $3 косьтер',
 'watchlist-options' => 'Козетюв джедвели сазламалары',
 
@@ -1452,7 +1428,7 @@ $UNWATCHURL
 'exblank' => 'саифе метини бош',
 'delete-confirm' => '«$1» саифесини ёкъ этмектесинъиз',
 'delete-legend' => 'Ёкъ этюв',
-'historywarning' => "'''Тенби:''' Сиз ёкъ этмеге истеген саифенъизнинъ къарарнен $1 {{PLURAL:$1|версиялы|версиялы}} кечмиши бардыр:",
+'historywarning' => "'''Тенби:''' Сиз ёкъ этмеге истеген саифенъизнинъ къарарнен $1 {{PLURAL:$1|1=версиялы|версиялы}} кечмиши бардыр:",
 'confirmdeletetext' => 'Бир саифени я да ресимни бутюн кечмиши иле бирликте малюмат базасындан къалыджы оларакъ ёкъ этмек узьресинъиз.
 Лютфен, нетиджелерини анълагъанынъызны ве [[{{MediaWiki:Policy-url}}|ёкъ этюв политикасына]] уйгъунлыгъыны дикъкъаткъа алып, буны япмагъа истегенинъизни тасдыкъланъыз.',
 'actioncomplete' => 'Арекет тамамланды.',
@@ -1491,7 +1467,7 @@ $UNWATCHURL
 'protect_expiry_old' => 'Битиш заманы кечмиштедир.',
 'protect-text' => "'''[[$1]]''' саифесининъ къорчалав севиесини мындан корип олур ве денъиштирип оласынъыз.",
 'protect-locked-access' => "Къулланыджы эсабынъыз саифенинъ къорчалав севиелерини денъиштирме еткисине саип дегиль. '''$1''' саифесининъ шимдики сазламалары шуларыдыр:",
-'protect-cascadeon' => 'Бу саифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каскадлы къорчалав алтындаки {{PLURAL:$1|1|$1}} саифеде къулланыла.
+'protect-cascadeon' => 'Бу саифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каскадлы къорчалав алтындаки {{PLURAL:$1|1=1|$1}} саифеде къулланыла.
 Бу саифенинъ къорчалав севиесини денъиштирип оласынъыз, амма каскадлы къорчалав тесир этильмейджек.',
 'protect-default' => 'Бутюн къулланыджыларгъа рухсет бер',
 'protect-fallback' => 'Тек «$1» рухсети олгъан къулланыджылар ичюн',
@@ -1522,9 +1498,8 @@ $UNWATCHURL
 'viewdeletedpage' => 'Ёкъ этильген саифелерге бакъ',
 'undeletebtn' => 'Кери кетир!',
 'undeletelink' => 'косьтер/кери кетир',
-'undeletereset' => 'Вазгеч',
 'undeletecomment' => 'Себеп:',
-'undeletedrevisions' => 'Топлам {{PLURAL:$1|1 къайд|$1 къайд}} кери кетирильди.',
+'undeletedrevisions' => 'Топлам {{PLURAL:$1|1=1 къайд|$1 къайд}} кери кетирильди.',
 'undelete-header' => 'Кеченлерде ёкъ этильген саифелерни корьмек ичюн [[Special:Log/delete|ёкъ этюв журналына]] бакъынъыз.',
 
 # Namespace form on various pages
@@ -1561,8 +1536,8 @@ $UNWATCHURL
 'isredirect' => 'Ёллама саифеси',
 'istemplate' => 'кирсетильме',
 'isimage' => 'файл багълантысы',
-'whatlinkshere-prev' => '{{PLURAL:$1|эвельки|эвельки $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|сонъраки|сонъраки $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=эвельки|эвельки $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=сонъраки|сонъраки $1}}',
 'whatlinkshere-links' => '← багълантылар',
 'whatlinkshere-hideredirs' => 'ёлламаларны $1',
 'whatlinkshere-hidetrans' => 'чапраз къошмаларны $1',
@@ -1579,8 +1554,6 @@ $UNWATCHURL
 'ipbsubmit' => 'Бу къулланыджыны блок эт',
 'ipbother' => 'Фаркълы заман',
 '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',
-'ipbotheroption' => 'фаркълы',
-'ipbotherreason' => 'Дигер/илявели себеп:',
 'badipaddress' => 'Янълыш IP адреси',
 'blockipsuccesssub' => 'Блок этме мувафакъиетнен япылды',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] блок этильди.<br />
@@ -1627,7 +1600,6 @@ $UNWATCHURL
 
 Бойле алларда, керек олса, саифелерни къолнен ташымагъа я да бирлештирмеге меджбур олурсынъыз.",
 'movearticle' => 'Эски ад',
-'movenologin' => 'Отурым ачмадынъыз',
 'movenologintext' => 'Саифенинъ адыны денъиштирип олмакъ ичюн [[Special:UserLogin|отурым ачынъыз]].',
 'movenotallowed' => 'Саифелер адларыны денъиштирмеге изининъиз ёкъ.',
 'newtitle' => 'Янъы ад',
@@ -1640,8 +1612,6 @@ $UNWATCHURL
 'articleexists' => 'Бу адда бир саифе энди бар я да сиз язгъан ад ясакълы.
 Лютфен, башкъа бир ад сайлап язынъыз.',
 'cantmove-titleprotected' => 'Сиз язгъан янъы ад ясакълыдыр, бунынъ ичюн саифе адыны денъиштирмекнинъ чареси ёкъ.',
-'talkexists' => "'''Саифенинъ ады денъиштирильди, амма музакере саифесининъ адыны денъиштирмеге мумкюнлик ёкътыр, чюнки айны бу адда бир саифе энди бар. Лютфен, буларны къолнен бирлештиринъиз.'''",
-'movedto' => 'ады денъиштирильди:',
 'movetalk' => 'Музакере саифесининъ адыны денъиштир.',
 'move-subpages' => 'Алт саифелернинъ адларыны да денъиштир ($1 саифеге къадар)',
 'move-talk-subpages' => 'Muzakere saifesi alt saifeleriniñ adlarını da deñiştir ($1 saifege qadar)',
@@ -1650,8 +1620,8 @@ $UNWATCHURL
 'movepage-page-unmoved' => '$1 саифесининъ ады $2 оларакъ денъиштирилип оламай.',
 'movelogpage' => 'Ад денъиштирильмелери журналы',
 'movelogpagetext' => 'Ашагъыда булунгъан джедвель ады денъиштирильген саифелерни косьтере',
-'movesubpage' => '{{PLURAL:$1|Алт саифе|Алт саифелер}}',
-'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|алт саифеси|алт саифеси}} бар.',
+'movesubpage' => '{{PLURAL:$1|1=Алт саифе|Алт саифелер}}',
+'movesubpagetext' => 'Бу саифенинъ ашагъыда косьтерильген $1 {{PLURAL:$1|1=алт саифеси|алт саифеси}} бар.',
 'movenosubpage' => 'Бу саифенинъ алт саифеси ёкъ.',
 'movereason' => 'Себеп',
 'revertmove' => 'Кериге ал',
@@ -1764,14 +1734,14 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 'notacceptable' => 'Вики-сервер браузеринъиз окъуп оладжакъ форматында малюмат бералмай.',
 
 # Attribution
-'anonymous' => '{{SITENAME}} сайтынынъ  {{PLURAL:$1|1|$1}} къайдсыз (аноним) къулланыджысы',
+'anonymous' => '{{SITENAME}} сайтынынъ  {{PLURAL:$1|1=1|$1}} къайдсыз (аноним) къулланыджысы',
 'siteuser' => '{{SITENAME}} сайтынынъ къулланыджысы $1',
 'anonuser' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) къулланыджысы $1',
 'lastmodifiedatby' => 'Саифе энъ сонъки $3 тарафындан $1, $2 тарихында денъиштирильди.',
 'othercontribs' => 'Бу саифени яраткъанда иштирак эткен: $1.',
 'others' => 'дигерлери',
-'siteusers' => '{{SITENAME}} сайтынынъ {{PLURAL:$2|1|$2}} къулланыджысы $1',
-'anonusers' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) {{PLURAL:$2|къулланыджысы|къулланыджылары}} $1',
+'siteusers' => '{{SITENAME}} сайтынынъ {{PLURAL:$2|1=1|$2}} къулланыджысы $1',
+'anonusers' => '{{SITENAME}} сайтынынъ къайдсыз (аноним) {{PLURAL:$2|1=къулланыджысы|къулланыджылары}} $1',
 'creditspage' => 'Тешеккюрлер',
 'nocredits' => 'Бу саифе ичюн къулланыджылар джедвели ёкъ.',
 
@@ -1807,7 +1777,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 Файлны ишлетип ишлетим системанъызгъа зарар кетирип олурсынъыз.",
 'imagemaxsize' => "Ресим ольчюси сынъыры:<br />''(файл малюмат саифелери ичюн)''",
 'thumbsize' => 'Кичик ольчю:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} саифе',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1=1|$3}} саифе',
 'file-info' => 'файл буюклиги: $1, MIME чешити: $2',
 'file-info-size' => '$1 × $2 пиксель, файл буюклиги: $3, MIME чешити: $4',
 'file-nohires' => 'Даа юксек айырымлылыкъкъа саип версия ёкъ.',
@@ -1816,7 +1786,7 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 
 # Special:NewFiles
 'newimages' => 'Янъы ресимлер',
-'imagelisttext' => "Ашагъыдаки джедвельде $2 коре тизильген {{PLURAL:$1|'''1''' файлдыр|'''$1''' файлдыр}}.",
+'imagelisttext' => "Ашагъыдаки джедвельде $2 коре тизильген {{PLURAL:$1|1='''1''' файлдыр|'''$1''' файлдыр}}.",
 'newimages-summary' => 'Бу махсус саифе сонъки юкленген файлларны косьтере.',
 'newimages-legend' => 'Сюзгюч',
 'newimages-label' => 'Файл ады (я да онынъ бир парчасы):',
@@ -1912,15 +1882,10 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 'exif-subjectdistancerange-0' => 'Билинмей',
 'exif-subjectdistancerange-1' => 'Макро',
 
-# External editor support
-'edit-externally' => 'Файл узеринде компьютеринъизде булунгъан программалар иле денъишикликлер япынъыз',
-'edit-externally-help' => '(Даа зияде малюмат ичюн [https://www.mediawiki.org/wiki/Manual:External_editors бу саифеге] (Инглиздже) бакъып оласынъыз.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'эписини',
 'namespacesall' => 'Эписи',
 'monthsall' => 'Эписи',
-'limitall' => 'бутюни',
 
 # Email address confirmation
 'confirmemail' => 'E-mail адресини тасдыкъла',
@@ -1939,7 +1904,6 @@ MediaWiki интерфейсининъ чешит тиллерге терджи
 'confirmemail_needlogin' => '$1 япмакъ ичюн башта e-mail адресинъизни тасдыкъламалысынъыз.',
 'confirmemail_success' => 'E-mail адресинъиз тасдыкъланды.',
 'confirmemail_loggedin' => 'E-mail адресинъиз тасдыкъланды.',
-'confirmemail_error' => 'Тасдыкъынъыз билинмеген бир хата себебинден къайд этильмеди.',
 'confirmemail_subject' => '{{SITENAME}} e-mail адрес тасдыкъы.',
 'confirmemail_body' => '$1 IP адресинден япылгъан иришим иле {{SITENAME}} сайтында
 бу e-mail адресинен багълангъан $2 къулланыджы эсабы ачылды.
@@ -2004,18 +1968,18 @@ $5
 'livepreview-error' => 'Багъланамады: $1 «$2». Адий бакъып чыкъувны къулланып бакъынъыз.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => '{{PLURAL:$1|1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
-'lag-warn-high' => 'Малюмат базасындаки проблемалар себебинден {{PLURAL:$1|1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
+'lag-warn-normal' => '{{PLURAL:$1|1=1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
+'lag-warn-high' => 'Малюмат базасындаки проблемалар себебинден {{PLURAL:$1|1=1|$1}} саниеден эвель ве ондан сонъ япылгъан денъишикликлер бу джедвельде косьтерильмейип олалар.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Музакере саифесини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1|$1}} саифе бар.',
+'watchlistedit-numitems' => 'Музакере саифесини эсапкъа алмайып, козетюв джедвелинъизде {{PLURAL:$1|1=1|$1}} саифе бар.',
 'watchlistedit-noitems' => 'Козетюв джедвелинъизде ич бир саифе ёкъ.',
 'watchlistedit-normal-title' => 'Козетюв джевелинъизни денъиштиреятасыз',
 'watchlistedit-normal-legend' => 'Козетюв джедвелинден саифе ёкъ этилюви',
 'watchlistedit-normal-explain' => 'Козетюв джедвелинъиздеки саифелер ашагъыда косьтерильген.
 Бир саифе козетюв джедвелинден ёкъ этмек ичюн оны бельгилеп «{{int:Watchlistedit-normal-submit}}» дёгмесине басынъыз. Козетюв джедвелинъизни [[Special:EditWatchlist/raw|метин оларакъ да]] денъиштирип оласынъыз.',
 'watchlistedit-normal-submit' => 'Сайлангъан саифелерни козетюв джевелинден ёкъ эт',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 саифе|$1 саифе}} козетюв джедвелинъизден ёкъ этильди:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} козетюв джедвелинъизден ёкъ этильди:',
 'watchlistedit-raw-title' => 'Козетюв джевелинъизни денъиштиреятасыз',
 'watchlistedit-raw-legend' => 'Козетюв джедвелини денъиштирилюви',
 'watchlistedit-raw-explain' => 'Козетюв джедвелинъиздеки саифелер ашагъыда косьтерильген. Эр сатырда бир саифе серлевасы олмакъ узере, серлеваларны кирсетип я да ёкъ этип джедвельни денъиштирип оласынъыз.
@@ -2024,8 +1988,8 @@ $5
 'watchlistedit-raw-titles' => 'Саифелер:',
 'watchlistedit-raw-submit' => 'Козетюв джедвелини янъарт',
 'watchlistedit-raw-done' => 'Козетюв джедвелинъиз янъарды.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 саифе|$1 саифе}} иляве олунды:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 саифе|$1 саифе}} ёкъ этильди:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} иляве олунды:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 саифе|$1 саифе}} ёкъ этильди:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Денъишикликлерни косьтер',
@@ -2044,7 +2008,7 @@ $5
 'fileduplicatesearch-submit' => 'Къыдыр',
 'fileduplicatesearch-info' => '$1 × $2 пиксел<br />Файл буюклиги: $3<br />MIME чешити: $4',
 'fileduplicatesearch-result-1' => '«$1» файлынынъ ич копиясы ёкъ.',
-'fileduplicatesearch-result-n' => '«$1» файлынынъ {{PLURAL:$2|бир копиясы|$2 копиясы}} бар.',
+'fileduplicatesearch-result-n' => '«$1» файлынынъ {{PLURAL:$2|1=бир копиясы|$2 копиясы}} бар.',
 
 # Special:SpecialPages
 'specialpages' => 'Махсус саифелер',
index aa405a5..602d9b3 100644 (file)
@@ -122,7 +122,6 @@ $messages = array(
 'tog-minordefault' => 'Yapqan deñiştirmelerimni kiçik deñiştirmedir dep işaretle',
 'tog-previewontop' => 'Baqıp çıquvnı yazuv pencereniñ üstünde köster',
 'tog-previewonfirst' => 'Deñiştirme saifesine keçkende baqıp çıquvnı köster',
-'tog-nocache' => 'Brauzer saifelerni afızasında tutmasın',
 'tog-enotifwatchlistpages' => 'Közetüv cedvelimdeki bir saife ya da fayl deñiştirilgende maña e-mail yolla',
 'tog-enotifusertalkpages' => 'Qullanıcı saifem deñiştirilgende maña e-mail yolla',
 'tog-enotifminoredits' => 'Saife ya da faylda kiçik deñiştirilme olğanda da de maña e-mail yolla',
@@ -243,7 +242,6 @@ $messages = array(
 'qbedit' => 'Deñiştir',
 'qbpageoptions' => 'Bu saife',
 'qbmyoptions' => 'Saifelerim',
-'qbspecialpages' => 'Mahsus saifeler',
 'faq' => 'Sıq berilgen sualler',
 'faqpage' => 'Project:Sıq berilgen sualler',
 
@@ -448,9 +446,6 @@ Lütfen, URL yazıp bundan [[Special:ListUsers/sysop|idarecige]] haber beriñiz.
 'perfcached' => 'Aşağıdaki malümat keşten alındı ve eskirgen ola bilir! Keşte eñ çoq {{PLURAL:$1|bir netice|$1 netice}} saqlanıp tura.',
 'perfcachedts' => 'Aşağıdaki malümat keşten alındı, keşniñ soñki yañartılğan vaqtı: $1. Keşte eñ çoq {{PLURAL:$1|bir netice|$1 netice}} saqlanıp tura.',
 'querypage-no-updates' => 'Bu saifeni deñiştirmege şimdi izin yoq. Bu malümat aman yañartılmaycaq.',
-'wrong_wfQuery_params' => 'wrong_wfQuery_params - wfQuery() funktsiyası içün izinsiz parametrler<br />
-Funktsiya: $1<br />
-Soratma: $2',
 'viewsource' => 'menba kodunı köster',
 'viewsource-title' => '$1 saifesiniñ menba kodu',
 'actionthrottled' => 'Areket toqtaldı',
@@ -555,7 +550,7 @@ Lütfen, qayta kirmezden evel biraz bekleñiz.',
 'suspicious-userlogout' => 'Çıqış istegeniñiz red etildi, çünki bozuq bir brauzer ya da keşleyici proksi tarafından yollanğan kibi körüne.',
 
 # Change password dialog
-'resetpass' => 'Parolni deñiştir',
+'changepassword' => 'Parol deñiştir',
 'resetpass_announce' => 'Muvaqqat kod vastasınen kirdiñiz. Kirişni tamamlamaq içün yañı parolni mında qoyuñız:',
 'resetpass_header' => 'Esapnıñ parolini deñiştir',
 'oldpassword' => 'Eski parol',
@@ -813,12 +808,8 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 # Search results
 'searchresults' => 'Qıdıruv neticeleri',
 'searchresults-title' => '"$1" içün qıdıruv neticeleri',
-'searchresulttext' => '{{SITENAME}} içinde qıdıruv yapmaq hususında malümat almaq içün [[{{MediaWiki:Helppage}}|{{int:help}}]] saifesine baqıp olasıñız.',
-'searchsubtitle' => 'Qıdırılğan: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" ile başlanğan bütün saifeler]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" saifesine bağlantı olğan bütün saifeler]])',
-'searchsubtitleinvalid' => "Siz bunı qıdırdıñız '''$1'''",
 'toomanymatches' => 'Pek çoq eşleşme çıqtı, lütfen, başqa bir soratma saylañız',
 'titlematches' => 'Saife adı bir kele',
-'notitlematches' => 'İç bir serlevada tapılamadı',
 'textmatches' => 'Saife metni bir kele',
 'notextmatches' => 'İç bir saifede tapılamadı',
 'prevn' => 'evelki {{PLURAL:$1|$1}}',
@@ -827,10 +818,8 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'nextn-title' => 'Soñraki $1 {{PLURAL:$1|netice|netice}}',
 'shown-title' => 'Saife başına $1 {{PLURAL:$1|netice|netice}} köster',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Qıdıruv sazlamaları',
 'searchmenu-exists' => "'''Bu vikide \"[[:\$1]]\" adlı bir saife bar'''",
 'searchmenu-new' => "'''Bu vikide \"[[:\$1]]\" saifesini yarat!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu prefiksli saifelerni köster]]',
 'searchprofile-articles' => 'Malümat saifeleri',
 'searchprofile-project' => 'Yardım ve leyha saifeleri',
 'searchprofile-images' => 'Multimedia',
@@ -850,19 +839,15 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'search-interwiki-default' => '$1 netice:',
 'search-interwiki-more' => '(daa çоq)',
 'search-relatedarticle' => 'Bağlı',
-'mwsuggest-disable' => 'AJAX tevsiyelerini işletme',
 'searcheverything-enable' => 'Bütün isim fezalarında qıdır',
 'searchrelated' => 'bağlı',
 'searchall' => 'episi',
 'showingresults' => "Aşağıda №&nbsp;<strong>$2</strong>den başlap {{PLURAL:$1|'''1''' netice|'''$1''' netice}} buluna.",
 'showingresultsnum' => "Aşağıda №&nbsp;'''$2'''den başlap {{PLURAL:$3|'''1''' netice|'''$3''' netice}} buluna.",
-'nonefound' => "'''İhtar.''' Adiycesine qıdıruv bütün isim fezalarında yapılmay. Bütün isim fezalarında (bu cümleden qullanıcılar subetleri, şablonlar ve ilâhre) qıdırmaq içün ''all:'' yazını qullanıñız, muayyen bir isim fezasında qıdırmaq içün ise ''ad:'' formatında onıñ adını yazıñız.",
 'search-nonefound' => 'Soratmanen eşleşken bir netice yoq.',
-'powersearch' => 'Qıdır',
 'powersearch-legend' => 'Tafsilâtlı qıdıruv',
 'powersearch-ns' => 'Bu isim fezalarında qıdır:',
 'powersearch-redir' => 'Yollama saifelerini de köster',
-'powersearch-field' => 'Qıdır:',
 'powersearch-togglelabel' => 'Sayla:',
 'powersearch-toggleall' => 'Episi',
 'powersearch-togglenone' => 'İç biri',
@@ -873,7 +858,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'preferences' => 'Sazlamalar',
 'mypreferences' => 'Sazlamalar',
 'prefs-edits' => 'Deñiştirmeler sayısı:',
-'changepassword' => 'Parol deñiştir',
 'prefs-skin' => 'Resimleme',
 'skin-preview' => 'Baqıp çıquv',
 'datedefault' => 'Standart',
@@ -891,7 +875,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'prefs-email' => 'E-mail sazlamaları',
 'prefs-rendering' => 'Körüniş',
 'saveprefs' => 'Saqla',
-'resetprefs' => 'Saqlanmağan sazlamalarnı ilk alına ketir',
 'restoreprefs' => 'Bütün ög belgilengen sazlamalarnı qaytar',
 'prefs-editing' => 'Saifelerni deñiştirüv',
 'rows' => 'Satır',
@@ -907,7 +890,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
 'localtime' => 'Yerli vaqıt:',
 'timezoneuseserverdefault' => 'Serverniñ sazlamaları qullanılsın ($1)',
 'timezoneuseoffset' => 'Başqa (farqnı kirsetiñiz)',
-'timezoneoffset' => 'Saat farqı¹:',
 'servertime' => 'Serverniñ saatı:',
 'guesstimezone' => 'Brauzeriñiz siziñ yeriñizge köre toldursın',
 'timezoneregion-africa' => 'Afrika',
@@ -1020,7 +1002,6 @@ Eger bildirseñiz, saifelerdeki deñiştirmelerni kimniñ yapqanını köstermek
 'recentchanges-label-bot' => 'Bu bir botnıñ yapqan deñiştirmesi',
 'recentchanges-label-unpatrolled' => 'Bu deñiştirme alâ daa teşkerilmegen',
 'recentchanges-legend-newpage' => '$1 - yañı saife',
-'rcnote' => "$4 $5 tarihında soñki {{PLURAL:$2|künde|'''$2''' künde}} yapılğan '''{{PLURAL:$1|1|$1}}''' deñiştirme:",
 'rcnotefrom' => "'''$2''' tarihından itibaren yapılğan deñiştirmeler aşağıdadır (eñ çоq '''$1''' dane saife kösterile).",
 'rclistfrom' => '$1 tarihından berli yapılğan deñiştirmelerni köster',
 'rcshowhideminor' => 'kiçik deñiştirmelerni $1',
@@ -1288,7 +1269,6 @@ Er satırda birinci ve ekinci yollamağa bağlantılar da, ekinci yollamanıñ m
 'deadendpages' => 'Başqa saifelerge bağlantısı olmağan saifeler',
 'deadendpagestext' => 'Bu {{SITENAME}} başqa saifelerine bağlantısı olmağan saifelerdir.',
 'protectedpages' => 'Qorçalanğan saifeler',
-'protectedpagestext' => 'Bu saifelerniñ deñiştirüvge qarşı qorçalavı bar',
 'protectedtitles' => 'Yasaqlanğan serlevalar',
 'listusers' => 'Qullanıcılar cedveli',
 'listusers-editsonly' => 'Tek eñ azından bir deñiştirme yapqan qullanıcılarnı köster',
@@ -1322,9 +1302,6 @@ Er satırda birinci ve ekinci yollamağa bağlantılar da, ekinci yollamanıñ m
 'allpagesto' => 'Şunıñnen bitken saifelerni köster:',
 'allarticles' => 'Bütün saifeler',
 'allinnamespace' => 'Bütün saifeler ($1 saifeleri)',
-'allnotinnamespace' => 'Bütün saifeler ($1 isim fezasında olmağanlar)',
-'allpagesprev' => 'Evelki',
-'allpagesnext' => 'Soñraki',
 'allpagessubmit' => 'Köster',
 'allpagesprefix' => 'Yazğan ariflernen başlağan saifelerni köster:',
 'allpagesbadtitle' => 'Saifeniñ adı ruhsetsizdir. Serlevada tiller arası prefiksi ya da vikiler arası bağlantı ya da başqa qullanıluvı yasaq olğan işaretler bar.',
@@ -1517,7 +1494,6 @@ Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorç
 'viewdeletedpage' => 'Yoq etilgen saifelerge baq',
 'undeletebtn' => 'Keri ketir!',
 'undeletelink' => 'köster/keri ketir',
-'undeletereset' => 'Vazgeç',
 'undeletecomment' => 'Sebep:',
 'undeletedrevisions' => 'Toplam {{PLURAL:$1|1 qayd|$1 qayd}} keri ketirildi.',
 'undelete-header' => 'Keçenlerde yоq etilgen saifelerni körmek içün [[Special:Log/delete|yоq etüv jurnalına]] baqıñız.',
@@ -1574,8 +1550,6 @@ Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorç
 'ipbsubmit' => 'Bu qullanıcını blok et',
 'ipbother' => 'Farqlı zaman',
 'ipboptions' => '2 saat:2 hours,1 kün:1 day,3 kün:3 days,1 afta:1 week,2 afta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,müddetsiz:infinite',
-'ipbotheroption' => 'farqlı',
-'ipbotherreason' => 'Diger/ilâveli sebep:',
 'badipaddress' => 'Yañlış IP adresi',
 'blockipsuccesssub' => 'Blok etme muvafaqiyetnen yapıldı',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] blok etildi.<br />
@@ -1621,7 +1595,6 @@ Ad deñiştirilüvi populâr saifeler içün büyük ve beklenmegen deñişmeler
 
 Böyle allarda, kerek olsa, saifelerni qolnen taşımağa ya da birleştirmege mecbur olursıñız.",
 'movearticle' => 'Eski ad',
-'movenologin' => 'Oturım açmadıñız',
 'movenologintext' => 'Saifeniñ adını deñiştirip olmaq içün [[Special:UserLogin|oturım açıñız]].',
 'movenotallowed' => 'Saifeler adlarını deñiştirmege iziniñiz yoq.',
 'newtitle' => 'Yañı ad',
@@ -1634,8 +1607,6 @@ Böyle allarda, kerek olsa, saifelerni qolnen taşımağa ya da birleştirmege m
 'articleexists' => 'Bu adda bir saife endi bar ya da siz yazğan ad yasaqlı.
 Lütfen, başqa bir ad saylap yazıñız.',
 'cantmove-titleprotected' => 'Siz yazğan yañı ad yasaqlıdır, bunıñ içün saife adını deñiştirmekniñ çaresi yoq.',
-'talkexists' => "'''Saifeniñ adı deñiştirildi, amma muzakere saifesiniñ adını deñiştirmege mümkünlik yoqtır, çünki aynı bu adda bir saife endi bar. Lütfen, bularnı qolnen birleştiriñiz.'''",
-'movedto' => 'adı deñiştirildi:',
 'movetalk' => 'Muzakere saifesiniñ adını deñiştir.',
 'move-subpages' => 'Alt saifelerniñ adlarını da deñiştir ($1 saifege qadar)',
 'move-talk-subpages' => 'Muzakere saifesi alt saifeleriniñ adlarını da deñiştir ($1 saifege qadar)',
@@ -1906,15 +1877,10 @@ Er satır * işaretinen başlamalı. Satırnıñ birinci bağlantısı qоşmağ
 'exif-subjectdistancerange-0' => 'Bilinmey',
 'exif-subjectdistancerange-1' => 'Makro',
 
-# External editor support
-'edit-externally' => 'Fayl üzerinde kompyuteriñizde bulunğan programmalar ile deñişiklikler yapıñız',
-'edit-externally-help' => '(Daa ziyade malümat içün [https://www.mediawiki.org/wiki/Manual:External_editors bu saifege] (İnglizce)  baqıp olasıñız.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'episini',
 'namespacesall' => 'Episi',
 'monthsall' => 'Episi',
-'limitall' => 'bütüni',
 
 # Email address confirmation
 'confirmemail' => 'E-mail adresini tasdıqla',
@@ -1933,7 +1899,6 @@ Serverniñ cevabı: $1',
 'confirmemail_needlogin' => '$1 yapmaq içün başta e-mail adresiñizni tasdıqlamalısıñız.',
 'confirmemail_success' => 'E-mail adresiñiz tasdıqlandı.',
 'confirmemail_loggedin' => 'E-mail adresiñiz tasdıqlandı.',
-'confirmemail_error' => 'Tasdıqıñız bilinmegen bir hata sebebinden qayd etilmedi.',
 'confirmemail_subject' => '{{SITENAME}} e-mail adres tasdıqı.',
 'confirmemail_body' => '$1 IP adresinden yapılğan irişim ile {{SITENAME}} saytında
 bu e-mail adresinen bağlanğan $2 qullanıcı esabı
@@ -2063,7 +2028,6 @@ Bitirgen soñ "{{int:Watchlistedit-raw-submit}}" yazısına basıñız.
 
 # Special:ComparePages
 'comparepages' => 'Saifelerni teñeştirüv',
-'compare-selector' => 'Saifelerniñ versiyalarını teñeştirüv',
 'compare-submit' => 'Teñeştir',
 
 # HTML forms
index 14d5b13..70e5219 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Chmee2
  * @author Danny B.
+ * @author DemonioCZ
  * @author Dontlietome7
  * @author Geitost
  * @author Helix84
@@ -80,7 +81,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Nejstarší_stránky', 'Staré_stránky', 'Stare_stranky' ),
        'Blankpage'                 => array( 'Prázdná_stránka' ),
        'Block'                     => array( 'Blokování', 'Blokovani', 'Blokovat_uživatele', 'Blokovat_IP', 'Blokovat_uzivatele' ),
-       'Blockme'                   => array( 'Zablokuj_mě', 'Zablokuj_me' ),
        'Booksources'               => array( 'Zdroje_knih' ),
        'BrokenRedirects'           => array( 'Přerušená_přesměrování', 'Prerusena_presmerovani' ),
        'Categories'                => array( 'Kategorie' ),
@@ -92,9 +92,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Vytvořit_účet', 'Vytvorit_ucet' ),
        'Deadendpages'              => array( 'Slepé_stránky', 'Slepe_stranky' ),
        'DeletedContributions'      => array( 'Smazané_příspěvky', 'Smazane_prispevky' ),
-       'Disambiguations'           => array( 'Rozcestníky', 'Rozcestniky' ),
        'DoubleRedirects'           => array( 'Dvojitá_přesměrování', 'Dvojita_presmerovani' ),
        'Emailuser'                 => array( 'E-mail' ),
+       'ExpandTemplates'           => array( 'Testy_šablon' ),
        'Export'                    => array( 'Exportovat_stránky' ),
        'Fewestrevisions'           => array( 'Stránky_s_nejméně_editacemi', 'Stranky_s_nejmene_editacemi', 'Stránky_s_nejmenším_počtem_editací' ),
        'FileDuplicateSearch'       => array( 'Hledání_duplicitních_souborů', 'Hledani_duplicitnich_souboru' ),
@@ -230,7 +230,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'střed', 'center', 'centre' ),
        'img_framed'                => array( '1', 'rám', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'bezrámu', 'frameless' ),
-       'img_page'                  => array( '1', 'strana=$1', 'strana $1', 'page=$1', 'page $1' ),
+       'img_lang'                  => array( '1', 'jazyk=$1', 'lang=$1' ),
+       'img_page'                  => array( '1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ),
        'img_border'                => array( '1', 'okraj', 'border' ),
        'sitename'                  => array( '1', 'NÁZEVWEBU', 'SITENAME' ),
        'ns'                        => array( '0', 'JMENNÝPROSTOR:', 'NS:' ),
@@ -282,6 +283,7 @@ $magicWords = array(
        'noindex'                   => array( '1', '__NEINDEXOVAT__', '__NOINDEX__' ),
        'staticredirect'            => array( '1', '__STATICKÉPŘESMĚROVÁNÍ__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'ÚROVEŇZAMČENÍ', 'PROTECTIONLEVEL' ),
+       'pagesincategory_files'     => array( '0', 'soubory', 'files' ),
 );
 
 /**
@@ -384,7 +386,6 @@ $messages = array(
 'tog-minordefault' => 'Označit editaci implicitně jako malá editace',
 'tog-previewontop' => 'Zobrazovat náhled před editačním oknem (ne za ním)',
 'tog-previewonfirst' => 'Zobrazit při první editaci náhled',
-'tog-nocache' => 'Vypnout cachování v prohlížeči',
 'tog-enotifwatchlistpages' => 'Poslat e-mail při změně sledované stránky nebo souboru',
 'tog-enotifusertalkpages' => 'Poslat e-mail při změně mé diskusní stránky',
 'tog-enotifminoredits' => 'Posílat e-maily i při malých editacích stránek a souborů',
@@ -520,7 +521,6 @@ $messages = array(
 'qbedit' => 'Editování',
 'qbpageoptions' => 'Tato stránka',
 'qbmyoptions' => 'Moje stránky',
-'qbspecialpages' => 'Speciální stránky',
 'faq' => 'Často kladené otázky',
 'faqpage' => 'Project:Často kladené otázky',
 
@@ -735,9 +735,6 @@ Možná už byl(a) smazán(a) někým jiným.',
 'perfcached' => 'Následující data jsou z cache a nemusí být plně aktuální. Cache může obsahovat maximálně {{PLURAL:$1|jeden výsledek|$1 výsledky|$1 výsledků}}.',
 'perfcachedts' => 'Následující data jsou z cache, která byla naposledy aktualizována $1. Cache může obsahovat maximálně {{PLURAL:$4|jeden výsledek|$4 výsledky|$4 výsledků}}.',
 'querypage-no-updates' => 'Aktualizace této stránky je vypnuta. Data nyní nebudou obnovována.',
-'wrong_wfQuery_params' => 'Nesprávné parametry do wfQuery()<br />
-Funkce: $1<br />
-Dotaz: $2',
 'viewsource' => 'Zobrazit zdroj',
 'viewsource-title' => 'Zobrazení zdroje stránky $1',
 'actionthrottled' => 'Akce byla pozastavena',
@@ -863,7 +860,7 @@ Zkuste to znovu.',
 'passwordtooshort' => 'Heslo musí být dlouhé nejméně $1 {{PLURAL:$1|znak|znaky|znaků}}.',
 'password-name-match' => 'Vaše heslo nesmí být stejné jako uživatelské jméno.',
 'password-login-forbidden' => 'Použití tohoto uživatelského jména a hesla byla zakázáno.',
-'mailmypassword' => 'Poslat e-mailem nové heslo',
+'mailmypassword' => 'Poslat nové heslo',
 'passwordremindertitle' => 'Nové dočasné heslo na {{grammar:4sg|{{SITENAME}}}}',
 'passwordremindertext' => 'Někdo (patrně vy, z IP adresy $1) požádal, abychom o nové heslo
 pro přihlášení do {{grammar:2sg|{{SITENAME}}}} ($4). Uživateli „$2“ bylo
@@ -916,7 +913,7 @@ Pokud se ho rozhodnete uvést, bude použito pro označení autorství vaší pr
 'user-mail-no-body' => 'Pokus o odeslání prázdného nebo nesmyslně krátkého e-mailu.',
 
 # Change password dialog
-'resetpass' => 'Změna hesla',
+'changepassword' => 'Změna hesla',
 'resetpass_announce' => 'Přihlašujete se dočasným heslem zaslaným e-mailem. Přihlášení lze dokončit po nastavení nového trvalého hesla.',
 'resetpass_text' => '<!-- Sem přidejte text -->',
 'resetpass_header' => 'Změna hesla',
@@ -936,8 +933,8 @@ Možná jste si již úspěšně heslo změnili, nebo jste si vyžádali nové d
 
 # Special:PasswordReset
 'passwordreset' => 'Reset hesla',
-'passwordreset-text-one' => 'Pro získání nového hesla vyplňte tento formulář.',
-'passwordreset-text-many' => '{{PLURAL:$1|Pro získání nového hesla zadejte jeden z údajů.}}',
+'passwordreset-text-one' => 'Pokud chcete e-mailem získat dočasné heslo, vyplňte tento formulář.',
+'passwordreset-text-many' => '{{PLURAL:$1|Pokud chcete e-mailem získat dočasné heslo, vyplňte jeden z údajů.}}',
 'passwordreset-legend' => 'Znovu nastavit heslo',
 'passwordreset-disabled' => 'Znovunastavení hesla je na této wiki zakázáno.',
 'passwordreset-emaildisabled' => 'E-mailové funkce byly na této wiki vypnuty.',
@@ -1191,6 +1188,8 @@ Zřejmě byla smazána.',
 'content-not-allowed-here' => 'Obsah typu $1 není na stránce [[$2]] dovolen.',
 'editwarning-warning' => 'Opuštěním této stránky se mohou veškeré provedené změny ztratit.
 Přihlášení uživatelé si mohou toto varování vypnout na záložce „Editace“ v uživatelském nastavení.',
+'editpage-notsupportedcontentformat-title' => 'Nepodporovaný formát obsahu',
+'editpage-notsupportedcontentformat-text' => 'Model obsahu $2 nepodporuje formát obsahu $1.',
 
 # Content models
 'content-model-wikitext' => 'wikitext',
@@ -1231,6 +1230,9 @@ Tyto argumenty byly vynechány.',
 'cantcreateaccounttitle' => 'Nelze vytvořit uživatelský účet',
 'cantcreateaccount-text' => "Zakládání nových účtů z této IP adresy ('''$1''') bylo zablokováno uživatelem [[User:$3|$3]].
 
+$3 uvádí toto zdůvodnění: ''$2''",
+'cantcreateaccount-range-text' => "Zakládání nových účtů z IP adres v rozsahu '''$1''', který obsahuje i vaši IP adresu ('''$4'''), bylo zablokováno {{GENDER:$3|uživatelem|uživatelkou}} [[User:$3|$3]].
+
 $3 uvádí toto zdůvodnění: ''$2''",
 
 # History pages
@@ -1299,10 +1301,6 @@ Můžete si toto porovnání prohlédnout; podrobnosti jsou uvedeny v [{{fullurl
 'revisiondelete' => 'Smazat/obnovit revize',
 'revdelete-nooldid-title' => 'Nezadána revize',
 'revdelete-nooldid-text' => 'Nezvolili jste revize, na které chcete tuto funkci použít.',
-'revdelete-nologtype-title' => 'Nebyl určen typ protokolu',
-'revdelete-nologtype-text' => '{{GENDER:|Neurčil|Neurčila|Neurčili}} jste knihu protokolovacích záznamů, na které se má operace provést.',
-'revdelete-nologid-title' => 'Neplatný protokolovací záznam',
-'revdelete-nologid-text' => 'Buď jste nezadali cílový záznam v protokolu nebo zadaný záznam neexistuje.',
 'revdelete-no-file' => 'Uvedený soubor neexistuje.',
 'revdelete-show-file-confirm' => 'Určitě si chcete prohlédnout smazanou revizi souboru „<nowiki>$1</nowiki>“ z $2, $3?',
 'revdelete-show-file-submit' => 'Ano',
@@ -1316,7 +1314,7 @@ pokud nebyla nastavena další omezení.",
 * Potenciálně pomlouvačné informace
 * Nevhodné osobní údaje
 *: ''adresy bydliště a telefonní čísla, rodná čísla apod.''",
-'revdelete-legend' => 'Nastavit omezení k revizi',
+'revdelete-legend' => 'Nastavit omezení viditelnosti',
 'revdelete-hide-text' => 'Text revize',
 'revdelete-hide-image' => 'Skrýt obsah souboru',
 'revdelete-hide-name' => 'Skrýt událost a cíl',
@@ -1337,8 +1335,6 @@ $1",
 'logdelete-failure' => "'''Nepodařilo se nastavit viditelnost protokolu:'''
 $1",
 'revdel-restore' => 'Změnit viditelnost',
-'revdel-restore-deleted' => 'smazané revize',
-'revdel-restore-visible' => 'viditelné revize',
 'pagehist' => 'Historie stránky',
 'deletedhist' => 'Smazaná historie',
 'revdelete-hide-current' => 'Chyba při skrývání položky z $1 $2: jedná se o současnou revizi.
@@ -1416,12 +1412,8 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => 'Výsledky hledání',
 'searchresults-title' => 'Výsledky hledání „$1“',
-'searchresulttext' => 'Pro více informací o tom, jak hledat na {{grammar:6sg|{{SITENAME}}}}, se podívejte do [[{{MediaWiki:Helppage}}|nápovědy]].',
-'searchsubtitle' => "Hledáno '''[[:$1]]''' ([[Special:Prefixindex/$1|seznam stránek začínajících „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|seznam stránek odkazujících na „$1“]])",
-'searchsubtitleinvalid' => 'Hledáno „$1“',
 'toomanymatches' => 'Požadavku odpovídá příliš mnoho záznamů, zkuste jiný dotaz.',
 'titlematches' => 'Stránky s odpovídajícím názvem',
-'notitlematches' => 'Žádné stránky názvem neodpovídají.',
 'textmatches' => 'Stránky s odpovídajícím textem',
 'notextmatches' => 'Žádné stránky textem neodpovídají.',
 'prevn' => '$1 {{PLURAL:$1|předchozí|předchozí|předchozích}}',
@@ -1430,10 +1422,8 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => '{{PLURAL:$1|Následující výsledek|Následující $1 výsledky|Následujících $1 výsledků}}',
 'shown-title' => 'Zobrazit $1 {{PLURAL:$1|výsledek|výsledky|výsledků}} na stránku',
 'viewprevnext' => 'Ukázat ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Možnosti hledání',
 'searchmenu-exists' => "'''Na této wiki existuje stránka nazvaná „[[:$1]]“.'''",
 'searchmenu-new' => "'''Vytvořte na této wiki stránku „[[:$1]]“!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zobrazit stránky, jejichž název začíná „$1“]]',
 'searchprofile-articles' => 'Články',
 'searchprofile-project' => 'Nápověda a projektové stránky',
 'searchprofile-images' => 'Multimédia',
@@ -1454,21 +1444,16 @@ Podrobnosti mohou být uvedeny v [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-default' => 'Výsledky z $1:',
 'search-interwiki-more' => '(více)',
 'search-relatedarticle' => 'Související',
-'mwsuggest-disable' => 'Vypnout našeptávač při hledání',
 'searcheverything-enable' => 'Hledat ve všech jmenných prostorech',
 'searchrelated' => 'související',
 'searchall' => 'vše',
 'showingresults' => 'Zobrazuji <strong>$1</strong> {{PLURAL:$1|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.',
 'showingresultsnum' => 'Zobrazuji <strong>$3</strong> {{PLURAL:$3|výsledek|výsledky|výsledků}} počínaje od <strong>$2</strong>.',
 'showingresultsheader' => "{{PLURAL:$5|Výsledek '''$1''' z '''$3'''|Výsledky '''$1–$2''' z '''$3'''}} pro '''$4'''",
-'nonefound' => "'''Poznámka''': Standardně se hledá jen v některých jmenných prostorech.
-Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně diskusí, šablon atd.), případně místo toho napište název požadovaného jmenného prostoru.",
 'search-nonefound' => 'Na váš dotaz nebyly nalezeny žádné výsledky.',
-'powersearch' => 'Hledání',
 'powersearch-legend' => 'Rozšířené vyhledávání',
 'powersearch-ns' => 'Hledat ve jmenných prostorech:',
 'powersearch-redir' => 'Vypsat přesměrování',
-'powersearch-field' => 'Vyhledat',
 'powersearch-togglelabel' => 'Zaškrtnout:',
 'powersearch-toggleall' => 'Všechno',
 'powersearch-togglenone' => 'Nic',
@@ -1481,7 +1466,6 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'mypreferences' => 'Nastavení',
 'prefs-edits' => 'Počet editací:',
 'prefsnologintext2' => 'Pro změnu uživatelských nastavení se musíte $1.',
-'changepassword' => 'Změna hesla',
 'prefs-skin' => 'Vzhled',
 'skin-preview' => 'Náhled',
 'datedefault' => 'Implicitní',
@@ -1504,13 +1488,11 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'prefs-email' => 'Nastavení e-mailu',
 'prefs-rendering' => 'Vzhled',
 'saveprefs' => 'Uložit nastavení',
-'resetprefs' => 'Vrátit původní nastavení',
 'restoreprefs' => 'Obnovit všechna výchozí nastavení (ve všech sekcích)',
 'prefs-editing' => 'Editace',
 'rows' => 'Řádky',
 'columns' => 'Sloupce',
 'searchresultshead' => 'Vyhledávání',
-'resultsperpage' => 'Počet výsledků na stránku:',
 'stub-threshold' => 'Limit pro formátování odkazu jako <a href="#" class="stub">pahýl</a> (v bajtech):',
 'stub-threshold-disabled' => 'Vypnuto',
 'recentchangesdays' => 'Počet dní zobrazených v posledních změnách:',
@@ -1524,7 +1506,6 @@ Pokud na začátek dotazu přidáte ''all:'', bude se hledat všude (včetně di
 'localtime' => 'Místní čas:',
 'timezoneuseserverdefault' => 'Použít časové pásmo wiki ($1)',
 'timezoneuseoffset' => 'Jiné (zadejte posun)',
-'timezoneoffset' => 'Posun¹:',
 'servertime' => 'Čas na serveru:',
 'guesstimezone' => 'Načíst z prohlížeče',
 'timezoneregion-africa' => 'Afrika',
@@ -1594,6 +1575,7 @@ Vaše adresa v takovém případě není prozrazena.',
 'prefs-tokenwatchlist' => 'Klíč',
 'prefs-diffs' => 'Porovnání verzí',
 'prefs-help-prefershttps' => 'Toto nastavení se projeví při příštím přihlášení.',
+'prefs-tabs-navigation-hint' => 'Tip: Pro přepínání mezi záložkami můžete používat šipky vlevo a vpravo.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-mailová adresa vypadá jako platná',
@@ -1780,9 +1762,9 @@ Vaše adresa v takovém případě není prozrazena.',
 'recentchanges-label-bot' => 'Tuto editaci provedl bot',
 'recentchanges-label-unpatrolled' => 'Tato změna dosud nebyla prověřena',
 'recentchanges-label-plusminus' => 'Velikost stránky se změnila o tolik bajtů',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(vizte též [[Special:NewPages|seznam nových stránek]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => 'Níže {{plural:$1|je poslední|jsou poslední|je posledních}} <strong>$1</strong> {{plural:$1|změna|změny|změn}} za {{PLURAL:$2|poslední|poslední|posledních}} <strong>$2</strong> {{plural:$2|den|dny|dnů}} před $4, $5.',
 'rcnotefrom' => 'Níže {{PLURAL:$1|je|jsou|je}} nejvýše <b>$1</b> {{PLURAL:$1|změna|změny|změn}} od <b>$2</b>.',
 'rclistfrom' => 'Ukázat nové změny, počínaje od $1',
 'rcshowhideminor' => '$1 malé editace',
@@ -1859,7 +1841,7 @@ Pro vložení obrázku do stránky použijte jeden z následujících způsobů
 'filetype-mime-mismatch' => 'Přípona souboru „.$1“ neodpovídá rozpoznanému MIME typu souboru ($2).',
 'filetype-badmime' => 'Není povoleno načítat soubory MIME typu „$1“.',
 'filetype-bad-ie-mime' => 'Nelze načíst tento soubor, neboť Internet Explorer by ho považoval za „$1“, což je nedovolený a potenciálně nebezpečný typ souboru.',
-'filetype-unwanted-type' => "„.$1“''' je nežádoucí formát souborů. {{plural:$3|Upřednostňovaný formát souborů je|Upřednostňované formáty souborů jsou}} $2.",
+'filetype-unwanted-type' => "„.$1“''' je nežádoucí formát souborů. {{PLURAL:$3|Upřednostňovaný formát souborů je|Upřednostňované formáty souborů jsou}} $2.",
 'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|je nedovolený formát souborů|jsou nedovolené formáty souborů}}.
 {{PLURAL:$3|Povolený formát souborů je|Povolené formáty souborů jsou}} $2.",
 'filetype-missing' => 'Soubor nemá příponu (např. ".jpg").',
@@ -1899,6 +1881,8 @@ Pokud chcete přesto soubor načíst, vraťte se a zvolte jiný název.
 'fileexists-shared-forbidden' => 'Soubor s tímto názvem již existuje ve sdíleném úložišti. Pokud přesto chcete váš soubor načíst, vraťte se a zvolte jiný název. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Tento soubor je duplikát {{PLURAL:$1|následujícího souboru|následujících souborů}}:',
 'file-deleted-duplicate' => 'Identický soubor k tomuto ([[:$1]]) byl již dříve smazán. Před tím, než soubor znovu nahrajete, byste měli zkontrolovat záznamy o předchozím smazání.',
+'file-deleted-duplicate-notitle' => 'Identický soubor k tomuto byl již dříve smazán a název byl utajen.
+Před tím, než soubor znovu nahrajete, byste měli požádat někoho, kdo může prohlížet utajené soubory, aby situaci zkontroloval.',
 'uploadwarning' => 'Upozornění k načítání',
 'uploadwarning-text' => 'Prosíme, upravte popis souboru níže a zkuste to znovu.',
 'savefile' => 'Uložit soubor',
@@ -2102,7 +2086,7 @@ Můžete si prohlédnout [[Special:WhatLinksHere/$2|úplný seznam]].',
 'nolinkstoimage' => 'Na tento soubor neodkazuje žádná stránka.',
 'morelinkstoimage' => 'Zobrazit [[Special:WhatLinksHere/$1|další odkazy]] na tento soubor.',
 'linkstoimage-redirect' => '$1 (přesměrování) $2',
-'duplicatesoffile' => '{{plural:$1|Následující soubor je duplikát|Následující $1 soubory jsou duplikáty|Následujících $1 souborů jsou duplikáty}} tohoto souboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Následující soubor je duplikát|Následující $1 soubory jsou duplikáty|Následujících $1 souborů jsou duplikáty}} tohoto souboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
 'sharedupload' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.',
 'sharedupload-desc-there' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.
 Více informací obsahuje jeho [$2 tamější stránka s popisem souboru].',
@@ -2201,7 +2185,7 @@ Vstup: <code>typ obsahu/podtyp</code>, např. <code>image/jpeg</code>.',
 'statistics-views-peredit' => 'Počet zobrazení na editaci',
 'statistics-users' => 'Registrovaní [[Special:ListUsers|uživatelé]]',
 'statistics-users-active' => 'Aktivní uživatelé',
-'statistics-users-active-desc' => 'Uživatelé, kteří v {{plural:$1|posledním dni|posledních $1 dnech}} provedli nějakou operaci',
+'statistics-users-active-desc' => 'Uživatelé, kteří v {{PLURAL:$1|posledním dni|posledních $1 dnech}} provedli nějakou operaci',
 'statistics-mostpopular' => 'Nejčtenější stránky',
 
 'pageswithprop' => 'Stránky s vlastností',
@@ -2238,6 +2222,7 @@ Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl
 'ninterwikis' => '$1 {{PLURAL:$1|mezijazykový odkaz|mezijazykové odkazy|mezijazykových odkazů}}',
 'nlinks' => '$1 {{PLURAL:$1|odkaz|odkazy|odkazů}}',
 'nmembers' => '$1 {{PLURAL:$1|položka|položky|položek}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|položka|položky|položek}}',
 'nrevisions' => '$1 {{PLURAL:$1|revize|revize|revizí}}',
 'nviews' => '$1 {{PLURAL:$1|návšteva|návštevy|návštev}}',
 'nimagelinks' => 'Použit na $1 {{PLURAL:$1|stránce|stránkách}}',
@@ -2276,10 +2261,9 @@ Každý řádek obsahuje odkaz na první a druhé přesměrování a k tomu cíl
 'protectedpages' => 'Zamčené stránky',
 'protectedpages-indef' => 'Pouze zámky na neurčito',
 'protectedpages-cascade' => 'Pouze kaskádové zámky',
-'protectedpagestext' => 'Následující stránky jsou zamčeny nebo polozamčeny pro editaci nebo přesun:',
+'protectedpages-noredirect' => 'Skrýt přesměrování',
 'protectedpagesempty' => 'Žádná stránka není zamčena s těmito parametry.',
 'protectedtitles' => 'Zamčené názvy stránek',
-'protectedtitlestext' => 'Následující názvy jsou zamčeny a nelze na nich zakládat stránky',
 'protectedtitlesempty' => 'S těmito parametry nejsou zamčeny žádné názvy.',
 'listusers' => 'Uživatelé',
 'listusers-editsonly' => 'Zobrazit pouze uživatele s editacemi',
@@ -2331,9 +2315,6 @@ Zobrazení můžete zúžit výběrem typu záznamu, uživatelského jména (zá
 'allpagesto' => 'Zobrazit stránky do:',
 'allarticles' => 'Všechny stránky',
 'allinnamespace' => 'Všechny stránky (jmenný prostor $1)',
-'allnotinnamespace' => 'Všechny stránky (mimo jmenný prostor $1)',
-'allpagesprev' => 'Předchozí',
-'allpagesnext' => 'Následující',
 'allpagessubmit' => 'Přejít',
 'allpagesprefix' => 'Zobrazit stránky začínající na:',
 'allpagesbadtitle' => 'Zadaný název stránky nebyl platný nebo obsahoval předponu mezijazykového či interwiki odkazu. Možná obsahoval znaky, které v názvu nejsou dovoleny.',
@@ -2378,7 +2359,7 @@ Povinná je přinejmenším doména nejvyššího řádu, např. „*.org“.<br
 
 # Special:ActiveUsers
 'activeusers' => 'Seznam aktivních uživatelů',
-'activeusers-intro' => 'Toto je seznam uživatelů, kteří byli nějak aktivní v {{plural:$1|posledním dni|posledních $1 dnech}}.',
+'activeusers-intro' => 'Toto je seznam uživatelů, kteří byli nějak aktivní v {{PLURAL:$1|posledním dni|posledních $1 dnech}}.',
 'activeusers-count' => '$1 {{PLURAL:$1|akce|akce|akcí}} během {{PLURAL:$3|posledního dne|posledních $3 dnů}}',
 'activeusers-from' => 'Zobrazit uživatele počínaje od:',
 'activeusers-hidebots' => 'Skrýt roboty',
@@ -2532,7 +2513,7 @@ Rady a kontakt:
 'exblank' => 'stránka byla prázdná',
 'delete-confirm' => 'Smazání stránky „$1“',
 'delete-legend' => 'Smazat',
-'historywarning' => "'''Varování:''' Stránka, kterou chcete smazat, má historii se zhruba $1 {{plural:$1|revizí|revizemi}}:",
+'historywarning' => "'''Varování:''' Stránka, kterou chcete smazat, má historii se zhruba $1 {{PLURAL:$1|revizí|revizemi}}:",
 'confirmdeletetext' => 'Chystáte se smazat stránku s celou její historií. Prosím potvrďte, že to opravdu chcete učinit, že si uvědomujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].',
 'actioncomplete' => 'Provedeno',
 'actionfailed' => 'Operace se nezdařila',
@@ -2551,8 +2532,9 @@ Rady a kontakt:
 ** Na žádost autora
 ** Rozbité přesměrování',
 'delete-edit-reasonlist' => 'Editovat důvody smazání',
-'delete-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek je omezeno, aby se předešlo nechtěnému narušení {{grammar:2sg|{{SITENAME}}}}.',
-'delete-warning-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.',
+'delete-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{PLURAL:$1|verzi|verze|verzí}}. Mazání takových stránek je omezeno, aby se předešlo nechtěnému narušení {{grammar:2sg|{{SITENAME}}}}.',
+'delete-warning-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{PLURAL:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.',
+'deleting-backlinks-warning' => "'''Upozornění:''' Na stránku, kterou se chystáte smazat, odkazují jiné stránky.",
 
 # Rollback
 'rollback' => 'Vrátit zpět editace',
@@ -2663,7 +2645,6 @@ Pro částečné obnovení zaškrtněte čtverečky u obnovovaných revizí a kl
 'undeletebtn' => 'Obnovit',
 'undeletelink' => 'prohlédnout/obnovit',
 'undeleteviewlink' => 'prohlédnout',
-'undeletereset' => 'Resetovat',
 'undeleteinvert' => 'Invertovat výběr',
 'undeletecomment' => 'Důvod:',
 'undeletedrevisions' => '{{PLURAL:$1|Obnovena $1 verze|Obnoveny $1 verze|Obnoveno $1 verzí}}',
@@ -2751,7 +2732,6 @@ Zde je pro přehled zobrazen nejnovější záznam z knihy zablokování:',
 'block' => 'Zablokovat uživatele',
 'unblock' => 'Odblokovat uživatele',
 'blockip' => 'Zablokovat uživatele',
-'blockip-title' => 'Blokovat uživatele',
 'blockip-legend' => 'Zablokovat uživatele',
 'blockiptext' => 'Tento formulář slouží k zablokování editací z konkrétní IP adresy nebo uživatelského jména.
 Toto by mělo být používáno jen v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].
@@ -2759,7 +2739,6 @@ Udejte přesný důvod níže (například ocitujte, které stránky byly poško
 'ipadressorusername' => 'IP adresa nebo uživatelské jméno:',
 'ipbexpiry' => 'Čas vypršení:',
 'ipbreason' => 'Důvod:',
-'ipbreasonotherlist' => 'Jiný důvod',
 'ipbreason-dropdown' => '*Časté důvody blokování
 ** Vkládání klamných informací
 ** Odstraňování obsahu stránek
@@ -2775,8 +2754,6 @@ Udejte přesný důvod níže (například ocitujte, které stránky byly poško
 'ipbsubmit' => 'Zablokovat',
 'ipbother' => 'Jiný čas vypršení:',
 'ipboptions' => '2 hodiny:2 hours,1 den:1 day,3 dny:3 days,1 týden:1 week,2 týdny:2 weeks,1 měsíc:1 month,3 měsíce:3 months,6 měsíců:6 months,1 rok:1 year,do odvolání:infinite',
-'ipbotheroption' => 'jiný',
-'ipbotherreason' => 'Jiný/další důvod:',
 'ipbhidename' => 'Skrýt uživatelské jméno u editací a v seznamech',
 'ipbwatchuser' => 'Sledovat uživatelskou a diskusní stranu tohoto uživatele',
 'ipb-disableusertalk' => 'Zabránit tomuto uživateli editovat vlastní uživatelskou diskusi po dobu zablokování',
@@ -2788,6 +2765,7 @@ Udejte přesný důvod níže (například ocitujte, které stránky byly poško
 Můžete si prohlédnout [[Special:BlockList|seznam zablokovaných uživatelů]].',
 'ipb-blockingself' => 'Chystáte se zablokovat {{gender:|sám|sama|sami}} sebe! Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
 'ipb-confirmhideuser' => 'Chystáte se zablokovat uživatele se zapnutou volbou „skrýt uživatelské jméno“. To způsobí, že jméno uživatele zmizí ze všech seznamů a protokolovacích záznamů. Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
+'ipb-confirmaction' => 'Pokud jste si {{GENDER:|jist|jista|jisti}}, že to chcete udělat, zaškrtněte pole „{{int:ipb-confirm}}“ dole.',
 'ipb-edit-dropdown' => 'Editace seznamu důvodů zablokování',
 'ipb-unblock-addr' => 'Odblokovat uživatele nebo IP $1',
 'ipb-unblock' => 'Odblokovat uživatele nebo IP adresu',
@@ -2864,7 +2842,6 @@ Vizte též [[Special:BlockList|seznam všech probíhajících bloků]].',
 'sorbsreason' => 'Vaše IP adresa je uvedena na seznamu DNSBL jako otevřený proxy server.',
 'sorbs_create_account_reason' => 'Vaše IP adresa je uvedena na seznamu DNSBL jako otevřený proxy server. Z této adresy si nemůžete založit účet',
 'xffblockreason' => 'IP adresa uvedená v hlavičce X-Forwarded-For, ať už vaše, nebo patřící proxy serveru, který používáte, byla zablokována. Zdůvodnění tohoto zablokování: $1',
-'cant-block-while-blocked' => 'Nemůžete blokovat jiné uživatele, když jste zablokován(a).',
 'cant-see-hidden-user' => 'Uživatel, kterého se snažíte blokovat, už byl zablokován a skryt. Jelikož nemáte oprávnění hideuser, nemůžete si nastavení bloku tohoto uživatele prohlédnout ani ho změnit.',
 'ipbblocked' => 'Nemůžete blokovat nebo odblokovávat jiné uživatele, {{GENDER:|sám|sama|sám}} jste {{GENDER:|zablokován|zablokována|zablokován}}',
 'ipbnounblockself' => 'Nemáte dovoleno odblokovat {{GENDER:|sám|sama|sám}} sebe',
@@ -2920,7 +2897,6 @@ Přejmenování oblíbené stránky může být drastická a nečekaná změna;
 V těchto případech musíte přesunout nebo sloučit stránky manuálně, jestliže si to přejete.",
 'movearticle' => 'Přesunout stránku:',
 'moveuserpage-warning' => "'''Upozornění:''' Chystáte se přesunout uživatelskou stránku. Uvědomte si prosím, že bude přesunuta pouze tato stránka, ale uživatel ''nebude'' přejmenován.",
-'movenologin' => 'Nejste přihlášen(a)!',
 'movenologintext' => 'Pro přesouvání stránek se musíte [[Special:UserLogin|přihlásit]].',
 'movenotallowed' => 'Nemáte oprávnění k přesunu stránek.',
 'movenotallowedfile' => 'Nemáte právo přesouvat soubory',
@@ -2935,8 +2911,6 @@ V těchto případech musíte přesunout nebo sloučit stránky manuálně, jest
 'movepage-moved-noredirect' => 'Přesměrování nebylo vytvořeno.',
 'articleexists' => 'Takto nazvaná stránka již existuje, nebo Vámi zvolený název je neplatný. Zvolte jiný název.',
 'cantmove-titleprotected' => 'Stránku nelze přesunout na zadané místo, protože název je uzamčen proti vytváření',
-'talkexists' => 'Stránka byla přesunuta úspěšně, ale diskusní stránka přesunuta být nemohla, neboť pod novým názvem již nějaká stránka existuje. Proveďte prosím ruční sloučení.',
-'movedto' => 'přesunuto na',
 'movetalk' => 'Přesunout příslušnou diskusní stránku',
 'move-subpages' => 'Přesunout i podstránky (maximálně $1)',
 'move-talk-subpages' => 'Přesunout i podstránky diskusní stránky (maximálně $1)',
@@ -2947,7 +2921,7 @@ V těchto případech musíte přesunout nebo sloučit stránky manuálně, jest
 'movelogpage' => 'Kniha přesunů',
 'movelogpagetext' => 'Toto je záznam všech přesunů stránek.',
 'movesubpage' => '{{PLURAL:$1|Podstránka|Podstránky}}',
-'movesubpagetext' => 'Tato stránka má $1 {{plural:$1|podstránku uvedenou|podstránky vypsané|podstránek vypsaných}} níže.',
+'movesubpagetext' => 'Tato stránka má $1 {{PLURAL:$1|podstránku uvedenou|podstránky vypsané|podstránek vypsaných}} níže.',
 'movenosubpage' => 'Tato stránka nemá žádné podstránky.',
 'movereason' => 'Důvod:',
 'revertmove' => 'vrátit',
@@ -3331,7 +3305,7 @@ Otevřením souboru můžete ohrozit svůj počítač.",
 
 # Special:NewFiles
 'newimages' => 'Galerie nových souborů',
-'imagelisttext' => "Níže je {{plural:$1|jeden soubor|seznam '''$1'''&nbsp;souborů seřazených $2|seznam '''$1'''&nbsp;souborů seřazených $2}}.",
+'imagelisttext' => "Níže je {{PLURAL:$1|'''$1''' soubor|seznam '''$1'''&nbsp;souborů seřazených $2}}.",
 'newimages-summary' => 'Na této speciální stránce se zobrazují poslední načtené soubory.',
 'newimages-legend' => 'Filtr',
 'newimages-label' => 'Název souboru (nebo jeho část):',
@@ -3779,15 +3753,10 @@ Obsahuje pouze seznam s odrážkami (řádka začíná s *). První odkaz na ř
 'exif-urgency-high' => 'Vysoká ($1)',
 'exif-urgency-other' => 'Uživatelsky definovaná ($1)',
 
-# External editor support
-'edit-externally' => 'Editovat tento soubor v externím programu',
-'edit-externally-help' => '(Více informací najdete v [https://www.mediawiki.org/wiki/Manual:External_editors nápovědě pro nastavení].)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'všechny',
 'namespacesall' => 'všechny',
 'monthsall' => 'všechny',
-'limitall' => 'vše',
 
 # Email address confirmation
 'confirmemail' => 'Potvrzení e-mailové adresy',
@@ -3806,7 +3775,6 @@ Poštovní program hlásí: $1',
 'confirmemail_needlogin' => 'Pro potvrzení své e-mailové adresy se musíte $1.',
 'confirmemail_success' => 'Vaše e-mailová adresa byla potvrzena. Nyní se můžete přihlásit a používat wiki.',
 'confirmemail_loggedin' => 'Vaše e-mailová adresa byla potvrzena.',
-'confirmemail_error' => 'Nepodařilo se uložit vaše potvrzení.',
 'confirmemail_subject' => 'Potvrzení e-mailové adresy pro {{grammar:4sg|{{SITENAME}}}}',
 'confirmemail_body' => 'Někdo (patrně vy, z IP adresy $1) si na {{grammar:6sg|{{SITENAME}}}}
 zaregistroval účet se jménem „$2“ a touto e-mailovou adresou.
@@ -3892,6 +3860,11 @@ Opravdu si přejete znovu tuto stránku založit?',
 'imgmultigo' => 'Jít!',
 'imgmultigoto' => 'Jít na stranu $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(implicitní jazyk)',
+'img-lang-info' => 'Vykreslit tento obrázek v jazyce $1 $2',
+'img-lang-go' => 'Provést',
+
 # Table pager
 'ascending_abbrev' => 'vzest.',
 'descending_abbrev' => 'sest.',
@@ -4026,8 +3999,18 @@ Seznam editovaných stránek můžete také [[Special:EditWatchlist|editovat ve
 'version-parser-function-hooks' => 'Funkce parseru',
 'version-hook-name' => 'Název přípojného bodu',
 'version-hook-subscribedby' => 'Volán z',
-'version-version' => '(Verze $1)',
-'version-license' => 'Licence',
+'version-version' => '($1)',
+'version-license' => 'Licence MediaWiki',
+'version-ext-license' => 'Licence',
+'version-ext-colheader-name' => 'Rozšíření',
+'version-ext-colheader-version' => 'Verze',
+'version-ext-colheader-license' => 'Licence',
+'version-ext-colheader-description' => 'Popis',
+'version-ext-colheader-credits' => 'Autoři',
+'version-license-title' => 'Licence pro $1',
+'version-license-not-found' => 'Pro toto rozšíření nebyly nalezeny podrobnější informace o licenci.',
+'version-credits-title' => 'Autoři $1',
+'version-credits-not-found' => 'Pro toto rozšíření nebyly nalezeny podrobnější informace o autorech.',
 'version-poweredby-credits' => "Tato wiki běží na '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
 'version-poweredby-others' => 'další',
 'version-poweredby-translators' => 'překladatelé na translatewiki.net',
@@ -4047,13 +4030,14 @@ MediaWiki je distribuována v naději, že bude užitečná, avšak BEZ JAKÉKOL
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cesta ke skriptům]',
 
 # Special:Redirect
-'redirect' => 'Přesměrování podle souboru, uživatele nebo ID revize',
+'redirect' => 'Přesměrování podle souboru, uživatele, stránky nebo ID revize',
 'redirect-legend' => 'Přesměrování na soubor či stránku',
-'redirect-summary' => 'Tato speciální stránka přesměrovává na soubor (podle názvu), stránku (podle ID revize) nebo uživatele (podle číselného uživatelského ID). Použití: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] nebo [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Tato speciální stránka přesměrovává na soubor (podle názvu), stránku (podle ID stránky nebo revize) nebo uživatele (podle číselného uživatelského ID). Použití: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] nebo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Přejít',
 'redirect-lookup' => 'Najít:',
 'redirect-value' => 'Hodnota:',
 'redirect-user' => 'Uživatelské ID',
+'redirect-page' => 'ID stránky',
 'redirect-revision' => 'Revizi stránky',
 'redirect-file' => 'Jméno souboru',
 'redirect-not-exists' => 'Hodnota nenalezena',
@@ -4120,7 +4104,6 @@ MediaWiki je distribuována v naději, že bude užitečná, avšak BEZ JAKÉKOL
 
 # Special:ComparePages
 'comparepages' => 'Porovnání stránek',
-'compare-selector' => 'Porovnání revizí stránek',
 'compare-page1' => 'Stránka 1',
 'compare-page2' => 'Stránka 2',
 'compare-rev1' => 'Revize 1',
@@ -4248,6 +4231,7 @@ Jinak můžete využít jednoduchý formulář níže. Váš komentář bude př
 'api-error-overwrite' => 'Není dovoleno přepsat existující soubor.',
 'api-error-stashfailed' => 'Vnitřní chyba: Serveru se nepodařilo uložit dočasný soubor.',
 'api-error-publishfailed' => 'Vnitřní chyba: Serveru se nepodařilo zveřejnit dočasný soubor.',
+'api-error-stasherror' => 'Při načítání souboru do skrýše došlo k chybě.',
 'api-error-timeout' => 'Server neodpověděl v očekávaném čase.',
 'api-error-unclassified' => 'Došlo k neznámé chybě',
 'api-error-unknown-code' => 'Neznámá chyba: „$1“',
@@ -4297,10 +4281,14 @@ V podstatě rozbalí prakticky všechno v dvojitých složených závorkách.',
 'expand_templates_input' => 'Vstupní text:',
 'expand_templates_output' => 'Výstup',
 'expand_templates_xml_output' => 'Výstup XML',
+'expand_templates_html_output' => 'Surové výsledné HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Odstranit komentáře',
 'expand_templates_remove_nowiki' => 'Potlačit ve výsledku značky <nowiki>',
 'expand_templates_generate_xml' => 'Zobrazit syntaktický strom v XML',
+'expand_templates_generate_rawhtml' => 'Zobrazit surové HTML',
 'expand_templates_preview' => 'Náhled',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML v načteném souboru nelze zpracovat.',
 );
index 53ea9be..3018965 100644 (file)
@@ -60,7 +60,6 @@ $messages = array(
 'tog-minordefault' => 'Zaznaczë wszëtczé edicëje domëslno jakno môłé',
 'tog-previewontop' => 'Pòkażë pòdzérk przed kastką edicëji',
 'tog-previewonfirst' => 'Pòkażë pòdzérk ju przed pierszą edicëją',
-'tog-nocache' => 'Wëłączë pòdrãczną pamiãc w przezérnikù',
 'tog-enotifwatchlistpages' => 'Wëslë mie e-mail czedë starna jaką ùzéróm je zmieniwónô',
 'tog-enotifusertalkpages' => 'Wëslë mie e-mail czedë zmieniwónô je mòja starna diskùsëji',
 'tog-enotifminoredits' => 'Wëslë mie e-mail téż dlô môłich zmianów starnów',
@@ -175,7 +174,6 @@ $messages = array(
 'qbedit' => 'Edicëjô',
 'qbpageoptions' => 'Òptacëje starnë',
 'qbmyoptions' => 'Mòje òptacëje',
-'qbspecialpages' => 'Specjalné starnë',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -401,7 +399,7 @@ Ni mòżesz miec ju wicy.',
 'loginlanguagelabel' => 'Jãzëk: $1',
 
 # Change password dialog
-'resetpass' => 'Zmieni parolã',
+'changepassword' => 'Zmiana parolë',
 'oldpassword' => 'Stôrô parola:',
 'newpassword' => 'Nowô parola',
 'retypenew' => 'Napiszë nową parolã jesz rôz',
@@ -533,8 +531,6 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
 'revdelete-radio-set' => 'Jo',
 'revdelete-radio-unset' => 'Nié',
 'revdel-restore' => 'Zjinaczë widzawnotã',
-'revdel-restore-deleted' => 'rëmniãté wersëje',
-'revdel-restore-visible' => 'widzawné wersëje',
 'pagehist' => 'Historëjô starnë',
 'deletedhist' => 'Rëmniãtô historëjô edicëji',
 'revdelete-hide-current' => 'Pòkôza sã fela przë taceniu wersëji datowóny na $2, $1. To je nônowszô wersëjô starnë, chtërnô ni mòże bëc zataconô.',
@@ -552,10 +548,6 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
 # Search results
 'searchresults' => 'Skùtczi szëkbë',
 'searchresults-title' => 'Skùtczi szëkbë za "$1"',
-'searchresulttext' => 'Dlô dobëcô wicy wëdowiédzë ò szëkbie na {{GRAMMAR:D.lp|{{SITENAME}}}}, zdrzë na [[{{MediaWiki:Helppage}}|starnë pòmòcë]].',
-'searchsubtitle' => 'Skùtczi szëkbë za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|starnë naczënającé sã òd "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|starnë, chtërné lënkùją do "$1"]])',
-'searchsubtitleinvalid' => "Dlô szëkbë za '''$1'''",
-'notitlematches' => 'Ni nalazłé w titlach',
 'notextmatches' => 'Felënk zamkłosë starnë',
 'prevn' => 'wczasniészé {{PLURAL:$1|$1}}',
 'nextn' => 'nôslédné {{PLURAL:$1|$1}}',
@@ -569,19 +561,14 @@ Administrator, chtëren jã zablokòwôł, pòdôł przëczënã: $1",
 'search-interwiki-default' => 'Skùtczi dlô $1:',
 'search-interwiki-more' => '(wicy)',
 'searchall' => 'wszëtczé',
-'nonefound' => "'''Bôczënk''':Dlô szëkbë są domëslno przistãpné blós niejedné rumë mionów.
-Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów (zamëkający w se starnë diskùsëji, szablónë, ëtp), abò ùżëje przëdôwka wëbrónegò ruma mionów.",
-'powersearch' => 'Szëkba',
 'powersearch-legend' => 'Awansowónô szëkba',
 'powersearch-ns' => 'Szëkba w rumach mionów:',
 'powersearch-redir' => 'Lësta przeczerowaniów',
-'powersearch-field' => 'Szëkba za',
 
 # Preferences page
 'preferences' => 'Preferencëje',
 'mypreferences' => 'Mòje nastôwë',
 'prefs-edits' => 'Lëczba edicëjów:',
-'changepassword' => 'Zmiana parolë',
 'prefs-skin' => 'Wëzdrzatk',
 'skin-preview' => 'Pòdzérk',
 'datedefault' => 'Felëje preferencëji',
@@ -593,7 +580,6 @@ Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów
 'prefs-watchlist-edits' => 'Maksymalnô lëczba edicëjów do pòkazaniô w rozszérzoné lësce ùzérónëch artiklów:',
 'prefs-misc' => 'Jine',
 'saveprefs' => 'Zapiszë',
-'resetprefs' => 'Wëczëszczë niezapisóné zmianë',
 'prefs-editing' => 'Edicëjô',
 'rows' => 'Régów:',
 'columns' => 'Kòlumnów:',
@@ -607,7 +593,6 @@ Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów
 'localtime' => 'Môlowi czas:',
 'timezoneuseserverdefault' => 'Ùżëjë domëslnégò czasu serwera',
 'timezoneuseoffset' => 'Jinô (specyfikùjë różnicã)',
-'timezoneoffset' => 'Różnica¹:',
 'servertime' => 'Czas serwera:',
 'guesstimezone' => 'Wezmi z przezérnika',
 'timezoneregion-africa' => 'Afrika',
@@ -715,7 +700,6 @@ Mòżesz zezwòlëc jinszim brëkòwniką na łączbã z Tobą przez Twòją sta
 'recentchanges-summary' => 'Na starna prezentérëje historëjã slédnëch edicëjów w {{SITENAME}}.',
 'recentchanges-feed-description' => 'Pòdstrzegô slédny zmianë w tim pòwrózkù.',
 'recentchanges-label-minor' => 'To je drobnô edicëjô',
-'rcnote' => "Niżi {{PLURAL:$1|nachôdô sã '''1''' slédnô zjinaka zrobionô|nachôdają sã '''$1''' slédné zjinaczi zrobioné|nachôdô sã '''$1''' slédnych zjinaków zrobionëch}} w {{PLURAL:$2|slédnégò dnia|slédnych '''$2''' dniach}}, rëchùjąc òd $5 dnia $4.",
 'rcnotefrom' => "Niżi są zmianë òd '''$2''' (pòkazóné do '''$1''').",
 'rclistfrom' => 'Pòkażë nowé zmianë òd $1',
 'rcshowhideminor' => '$1 môłé zmianë',
@@ -862,9 +846,6 @@ Mòżesz zawãżëc wëszłosc przez wëbranié ôrtu registru, miona brëkòwni
 'allpagesto' => 'Wëskrzëni starnë z kùniuszkã:',
 'allarticles' => 'Wszëtczé artikle',
 'allinnamespace' => 'Wszëtczé starnë (w rumie $1)',
-'allnotinnamespace' => 'Wszëtczé starnë (nie w rumie $1)',
-'allpagesprev' => 'Przódnô',
-'allpagesnext' => 'Pòsobnô',
 'allpagessubmit' => 'Pòkôżë',
 'allpagesprefix' => 'Pòkôżë naczënającë sã òd:',
 
@@ -1020,8 +1001,6 @@ Mòżesz zmienic légã zazychrowaniô, nie bãdze to równak miało cëskù na
 'blockiptext' => 'Brëkùje formùlarza niżi abë zascëgòwac prawò zapisënkù spòd gwësny adresë IP. To robi sã blós dlôte abë zascëgnąc wandalëznom, a bëc w zgòdze ze [[{{MediaWiki:Policy-url}}|wskôzama]]. Pòdôj przëczënã (np. dając miona starn, na chtërnëch dopùszczono sã wandalëzny).',
 'ipbreason' => 'Przëczëna:',
 'ipboptions' => '2 gòdzënë:2 hours,1 dzéń:1 day,3 dni:3 days,1 tidzéń:1 week,2 tigòdnie:2 weeks,1 ksãżëc:1 month,3 ksãżëcë:3 months,6 ksãżëców:6 months,1 rok:1 year,na wiedno:infinite',
-'ipbotheroption' => 'jinszi cząd',
-'ipbotherreason' => 'Jinszé abù dodôwné przëczënë:',
 'ipbhidename' => 'Zatacë miono brëkòwnika ë edicëjach ë lëstach',
 'ipbwatchuser' => 'Ùzérôj starnã brëkòwnika ë jegò starnã diskùsëji',
 'badipaddress' => 'IP-adresa nie je richtich pòdónô.',
@@ -1062,15 +1041,12 @@ To mòże bëc drasticznô abò nieprzewidëwólnô zjinaka w przëtrôfkù pòp
 
 W taczich przëtrôfkach zamkłosc diskùsëji mòże przeniesc blós rãczno.',
 'movearticle' => 'Przeniesë artikel',
-'movenologin' => 'Felënk logòwaniô',
 'newtitle' => 'Nowi titel:',
 'move-watch' => 'Ùzérôj tã starnã',
 'movepagebtn' => 'Przeniesë starnã',
 'pagemovedsub' => 'Przeniesenié darzëło sã',
 'movepage-moved' => '\'\'\'"$1" òsta przeniosłô do "$2"\'\'\'',
 'articleexists' => 'Starna ò taczim mionie ju je abò nie je òno bezzmiłkòwé. Wëbierzë nowé miono.',
-'talkexists' => "'''Starna zamkłoscë òsta ùdało przeniosłô, równak starna diskùsëji ni, ga starna diskùsëji na nowim pacu ju je. Sparłãczë ne dwa tekstë rãczno'''",
-'movedto' => 'przeniesłô do',
 'movetalk' => 'Przeniesë téż starnã <i>Diskùsëje</i>, jeżle je to mòżlëwé.',
 'movelogpage' => 'Przeniosłé',
 'movereason' => 'Przëczëna:',
@@ -1219,15 +1195,10 @@ Jinszé pòla bãdą domëslno zataconé.
 
 'exif-iimcategory-spo' => 'Szpòrt',
 
-# External editor support
-'edit-externally' => 'Editëjë nen lopk brëkùjąc bùtnowi aplikacëji',
-'edit-externally-help' => '(Zdrzë na [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] dlô dobëcô wicy wëdowiédzë).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wszëtczé',
 'namespacesall' => 'wszëtczé',
 'monthsall' => 'wszëtczé',
-'limitall' => 'wszëtczé',
 
 # Email address confirmation
 'confirmemail_loggedin' => 'Twòjô adresa e-mail òsta pòcwierdzona.',
index 23ce234..e86553c 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ)
+/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -194,7 +194,6 @@ $messages = array(
 'qbedit' => 'исправи',
 'qbpageoptions' => 'сꙗ страница',
 'qbmyoptions' => 'моꙗ страницѧ',
-'qbspecialpages' => 'нарочьнꙑ страницѧ',
 'faq' => 'чѧстꙑ въпроси',
 'faqpage' => 'Project:Чѧстꙑ въпроси',
 
@@ -269,8 +268,8 @@ $messages = array(
 'pagetitle' => '$1 · {{SITENAME}}',
 'retrievedfrom' => 'поѩто иꙁ ⁖ $1 ⁖',
 'youhavenewmessages' => '$1 тєбѣ напьсанꙑ сѫтъ ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|ново напьсаниѥ|нова напьсании|новꙑ напьсаниꙗ}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|послѣдьнꙗ мѣна|послѣдьни мѣни|послѣдьн҄ь мѣнъ}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ново напьсаниѥ|нова напьсании|999=новꙑ напьсаниꙗ}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|послѣдьнꙗ мѣна|послѣдьни мѣни|999=послѣдьн҄ь мѣнъ}}',
 'editsection' => 'исправи',
 'editold' => 'исправи',
 'viewsourceold' => 'страницѧ источьнъ обраꙁъ',
@@ -348,7 +347,7 @@ $messages = array(
 'loginlanguagelabel' => 'ѩꙁꙑкъ : $1',
 
 # Change password dialog
-'resetpass' => 'таина словєсє иꙁмѣнѥниѥ',
+'changepassword' => 'таина словєсє иꙁмѣнѥниѥ',
 'resetpass_header' => 'таина слова иꙁмѣнѥниѥ',
 'oldpassword' => 'старо таино слово :',
 'newpassword' => 'ново таино слово :',
@@ -429,8 +428,8 @@ $messages = array(
 'rev-delundel' => 'каꙁаниѥ / съкрꙑтиѥ',
 'rev-showdeleted' => 'виждь',
 'revdelete-show-file-submit' => 'да',
-'revdelete-radio-set' => 'да',
-'revdelete-radio-unset' => 'нѣÑ\82Ñ\8a',
+'revdelete-radio-set' => 'съкрꙑто',
+'revdelete-radio-unset' => 'каê\99\81ано',
 'revdelete-log' => 'какъ съмꙑслъ :',
 'pagehist' => 'страницѧ їсторїꙗ',
 'deletedhist' => 'поничьжєна їсторїꙗ',
@@ -462,14 +461,12 @@ $messages = array(
 'search-interwiki-more' => '(вѧщє)',
 'searchall' => 'вьсꙗ',
 'search-nonefound' => 'исканиѥ сꙗ слова ничєсо жє нє авило ѥстъ',
-'powersearch' => 'вѧщєѥ исканиѥ',
 'powersearch-redir' => 'прѣнаправлѥниꙗ',
 
 # Preferences page
 'preferences' => 'строи',
 'mypreferences' => 'строи',
 'prefs-edits' => 'мѣнъ число :',
-'changepassword' => 'таина словєсє иꙁмѣнѥниѥ',
 'prefs-datetime' => 'дьнь и врѣмѧ',
 'prefs-rc' => 'послѣдьнѩ мѣнꙑ',
 'prefs-watchlist' => 'блюдєниꙗ',
@@ -549,8 +546,7 @@ $messages = array(
 'recentchanges-summary' => 'с҄ьдє послѣдьнѩ мѣнꙑ сѥѩ викиопꙑтьствованиꙗ видѣти можєши',
 'recentchanges-label-newpage' => 'по сѥи мѣнꙑ нова страница сътворѥна ѥстъ',
 'recentchanges-label-minor' => 'малаꙗ мѣна',
-'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворихъ',
-'rcnote' => "нижѣ {{PLURAL:$1|'''1''' послѣдьнѭ мѣнѫ|'''$1''' послѣдьни мѣнꙑ|'''$1''' послѣдьнъ мѣнъ|'''$1''' послѣдьнъ мѣнъ}} ꙁа {{PLURAL:$2|дьнь|'''$2''' дьнꙗ|'''$2''' дьнъ|'''$2''' дьнъ}} · ꙗко нꙑнѣ $5 · $4 лѣта",
+'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворилъ',
 'rcshowhideminor' => '$1 малꙑ мѣнꙑ',
 'rcshowhidebots' => '$1 аѵтоматъ',
 'rcshowhideliu' => '$1 польꙃєватєлъ · ѩжє съꙁижьдє сѥ мѣсто · мѣнꙑ',
@@ -797,7 +793,6 @@ $messages = array(
 # Block/unblock
 'block' => 'ꙁагради польꙃєватєл҄ь',
 'blockip' => 'ꙁагради польꙃєватєл҄ь',
-'blockip-title' => 'ꙁагради польꙃєватєл҄ь',
 'blockip-legend' => 'ꙁагради польꙃєватєл҄ь',
 'ipadressorusername' => 'IP число или польꙃєватєлꙗ имѧ :',
 'ipbreason' => 'какъ съмꙑслъ :',
@@ -824,7 +819,6 @@ $messages = array(
 'pagemovedsub' => 'прѣимєнованиѥ сътворѥно ѥстъ',
 'movepage-moved' => "'''⁖ $1 ⁖ нарєчєнъ ⁖ $2⁖ ѥстъ'''",
 'movepage-moved-redirect' => 'прѣнаправлѥниѥ сътворѥно бѣ',
-'movedto' => 'прѣимєновано въ',
 'movetalk' => 'си страницѧ бєсѣдꙑ прѣимєнованиѥ',
 'movelogpage' => 'прѣимєнованиꙗ їсторїꙗ',
 'movereason' => 'какъ съмꙑслъ :',
@@ -923,10 +917,6 @@ $messages = array(
 'exif-iimcategory-sci' => 'оучєниѥ и тєхнологїꙗ',
 'exif-iimcategory-spo' => 'аѳлитїка',
 
-# External editor support
-'edit-externally' => 'дѣла иꙁмѣнѥниѥ вънѣщьниимь орѫдиѥмь',
-'edit-externally-help' => '(ꙁьри [https://www.mediawiki.org/wiki/Manual:External_editors помощь] вѧщєи плирофорїѩ дѣлꙗ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вьсꙗ',
 'namespacesall' => 'вьсꙗ',
index ff06707..4d52199 100644 (file)
@@ -57,7 +57,7 @@ $messages = array(
 'tog-editsection' => '«Тӳрлет» ссылкăна кашни пайра кăтартмалла',
 'tog-editsectiononrightclick' => 'Шăшин сылтăм пускăчне пуссан статья пайне тӳрлетмелле (JavaScript)',
 'tog-showtoc' => 'Тупмаллине кăтартмалла (3, е ытларах заголовок пулсан)',
-'tog-rememberpassword' => 'Мана ку компьютер çинче астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Мана ку компьютер çинче астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})',
 'tog-watchcreations' => 'Эпĕ тунă страницăсене сăнав списокне кĕртмелле',
 'tog-watchdefault' => 'Тӳрлетнĕ страницăсене сăнав списокне кĕртмелле',
 'tog-watchmoves' => 'Страница ятне эпĕ улаштарсан вĕсене сăнав списокне кĕртмелле',
@@ -65,7 +65,6 @@ $messages = array(
 'tog-minordefault' => 'Палăртман чухне улшăнусене пĕчĕк тӳрлетӳсем пек палăртмалла',
 'tog-previewontop' => 'Тӳрлетӳ чӳречине кăтартас умĕн малтанхи курăмне кăтармалла',
 'tog-previewonfirst' => 'Пĕрремĕш хут тӳрлетнĕ чухне малтанхи курăнăва кăтартмалла',
-'tog-nocache' => 'Страницăсене кэшра сыхласа хăварассине чармалла',
 'tog-enotifwatchlistpages' => 'Сăнав списокĕнчи статяна тӳрлетӳ кĕртсен электронлă почта урлă пĕлтермелле',
 'tog-enotifusertalkpages' => 'Ман канашлу страницинче улшăнусем пулсан мана эл. почта урлă пĕлтермелле',
 'tog-enotifminoredits' => 'Пĕчĕк улшăнусене те эл. почта урлă пĕлтермелле',
@@ -139,18 +138,18 @@ $messages = array(
 'dec' => 'раш',
 
 # Categories related messages
-'pagecategories' => 'Категорисем',
+'pagecategories' => '{{PLURAL:$1|1=Категори|Категорисем}}',
 'category_header' => '«$1» категорири статьясем',
 'subcategories' => 'Подкатегорисем',
 'category-media-header' => '«$1» категорири файлсем',
 'category-empty' => "''Хальхи вăхăтра ку категори пушă.''",
-'hidden-categories' => '{{PLURAL:$1|Пытарнă категори|Пытарнă категорисем}}',
+'hidden-categories' => '{{PLURAL:$1|1=Пытарнă категори|Пытарнă категорисем}}',
 'hidden-category-category' => 'Пытарнă категорисем',
 'category-subcat-count' => '{{PLURAL:$2|Ку категоринче çак айри категори пур.|$2-ран(-рен,-тан,-тен) {{PLURAL:$1|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă|$1 айри категорине кăтартнă}}.}}',
 'category-subcat-count-limited' => 'Ку категоринче {{PLURAL:$1|$1 айри категори|$1 айри категори|$1 айри категори}}.',
-'category-article-count' => '{{PLURAL:$2|Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}',
+'category-article-count' => '{{PLURAL:$2|1=Ку категоринче пĕр страница кăна.|Ку категорири $2 страницăран $1 кăтартнă.}}',
 'category-article-count-limited' => 'Ку категоринче $1 страница.',
-'category-file-count' => '{{PLURAL:$2|Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}',
+'category-file-count' => '{{PLURAL:$2|1=Ку категоринче пĕр файл кăна.|Ку категоринчи $2 файлтан $1 кăтартнă.}}',
 'category-file-count-limited' => 'Ку категоринче $1 файл.',
 'listingcontinuesabbrev' => '(малалли)',
 
@@ -160,7 +159,7 @@ $messages = array(
 'cancel' => 'Пăрахăçла',
 'moredotdotdot' => 'Малалла…',
 'mypage' => 'Ман страница',
-'mytalk' => 'Ð\9cан ÐºÐ°Ð½Ð°Ñ\88лÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86и',
+'mytalk' => 'СӳÑ\82Ñ\81е Ñ\8fвни',
 'anontalk' => 'Çак IP-адреса сӳтсе явни',
 'navigation' => 'Меню',
 'and' => '&#32;тата',
@@ -171,7 +170,6 @@ $messages = array(
 'qbedit' => 'Тӳрлет',
 'qbpageoptions' => 'Страница ĕнерлевĕсем',
 'qbmyoptions' => 'Сирĕн ĕнĕрлевсем',
-'qbspecialpages' => 'Ятарлӑ страницӑсем',
 'faq' => 'ЫйХу',
 'faqpage' => 'Project:ЫйХу',
 
@@ -221,7 +219,7 @@ $messages = array(
 'articlepage' => 'Статьяна пăх',
 'talk' => 'Сӳтсе явни',
 'views' => 'Пурĕ пăхнă',
-'toolbox' => 'Ĕç хатĕрĕсем',
+'toolbox' => 'Хатĕрсем',
 'userpage' => 'Хутшăнакан страницине пăх',
 'projectpage' => 'Проект страницине пăх',
 'imagepage' => 'Ӳкерчĕк страницине пăх',
@@ -294,7 +292,7 @@ $messages = array(
 'nstab-main' => 'Статья',
 'nstab-user' => 'Хутшăнакан страници',
 'nstab-media' => 'Мультимеди',
-'nstab-special' => 'Ятарлă',
+'nstab-special' => 'Ятарлă страницă',
 'nstab-project' => 'Проект çинчен',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Пĕлтерӳ',
@@ -339,12 +337,9 @@ $1',
 'cannotdelete' => 'Эсир кăтартнă страницăна е файла кăларса пăрахаймастпăр. Ăна, тен, урăххи кăларса пăрахнă?',
 'badtitle' => 'Ку ят килĕшмест',
 'badtitletext' => 'Эсир кăтартнă статья ячĕ тĕрĕс мар, пушă, е чĕлхе хушшинчипе интервики ячĕ тĕрĕс мар. Ятра усă курма юраман паллăсене çырнинче пулма пултарать.',
-'perfcached' => 'Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Ку даннăйсене кэшран илнĕ, юлашки хут вăл $1 вăхăтра çĕнелнĕ. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Ку даннăйсене кэшран илнĕ, çавна май унта юлашки улшăнусем палăрмасăр пултараççĕ. A maximum of {{PLURAL:$1|1=one result is|$1 results are}} available in the cache.',
+'perfcachedts' => 'Ку даннăйсене кэшран илнĕ, юлашки хут вăл $1 вăхăтра çĕнелнĕ. A maximum of {{PLURAL:$4|1=one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Ку страницăна хальхи вăхăтра улăштарма чарнă. Ку даннăйсене хальхи вăхăтра çĕнетме май çук.',
-'wrong_wfQuery_params' => 'wfQuery() функцине тĕрĕс мар параметрсем панă<br />
-Функци: $1<br />
-Ыйту: $2',
 'viewsource' => 'Курăм',
 'actionthrottled' => 'Хăвăртлăха чакарнă',
 'actionthrottledtext' => 'Спампа кĕрешнине пула ку ĕçе пĕчĕк вăхăт хушшинче ытла нумай тума чарнă. Темиçе минутран тепре туса пăхма пултаратăр.',
@@ -369,7 +364,7 @@ $1',
 'yourname' => 'Сирĕн ят',
 'yourpassword' => 'Вăрттăн сăмах:',
 'yourpasswordagain' => 'Вăрттăн сăмах тепре çырăр:',
-'remembermypassword' => 'Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'remembermypassword' => 'Ку компьютер çинче мана астуса хăвармалла (for a maximum of $1 {{PLURAL:$1|1=day|days}})',
 'yourdomainname' => 'Сирĕн домен',
 'login' => 'Сайта кĕр',
 'nav-login-createaccount' => 'Сайта кĕр / регистрацилен',
@@ -413,7 +408,7 @@ $1',
 'loginlanguagelabel' => 'Чĕлхе: $1',
 
 # Change password dialog
-'resetpass' => 'Хутшăнаканăн вăрттăн сăмахне çĕнетесси',
+'changepassword' => 'Пароле улăштар',
 'resetpass_header' => 'Пароле пăрахăçла',
 'oldpassword' => 'Кивě пароль',
 'newpassword' => 'Çěнě пароль',
@@ -559,21 +554,18 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 
 # Search results
 'searchresults' => 'Тупрăмăр',
-'notitlematches' => 'Статьясен ячĕсем пĕр пек мар',
 'textmatches' => 'Статьясенчи текст пĕрпеклĕхĕ',
 'prevn' => 'малтанхи {{PLURAL:$1|$1}}',
 'nextn' => 'малалли {{PLURAL:$1|$1}}',
-'search-result-size' => '$1 ({{PLURAL:$2|1 сăмах|$2 сăмах}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 сăмах|$2 сăмах}})',
 'showingresults' => 'Аяларах эсир <b>#$2</b> пуçласа кăтартнă <b>$1</b> йĕркене куратăр.',
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1'''  '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}}  '''$4''' валли",
-'powersearch' => 'Анлă шырав',
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1'''  '''$3''' хушшинчен|Результатсем'''$1 - $2''' '''$3''' хушшинчен}}  '''$4''' валли",
 'powersearch-legend' => 'Анлă шырав',
 
 # Preferences page
 'preferences' => 'Ĕнерлевсем',
-'mypreferences' => 'Ман ĕнерлевсем',
+'mypreferences' => 'Ĕнерлев',
 'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
-'changepassword' => 'Пароле улăштар',
 'prefs-skin' => 'Ерешленӳ',
 'skin-preview' => 'Малтанхи курăну',
 'datedefault' => 'Палăртман чухнехи',
@@ -644,7 +636,6 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'recentchanges-legend' => 'Çĕнĕ улшăнусен ĕнерлевĕ',
 'recentchanges-label-bot' => 'Ку улшăнăва бот тунă',
 'recentchanges-legend-newpage' => '$1 — çĕнĕ страница',
-'rcnote' => 'Юлашки <strong>$2</strong> кун хушшинчи <strong>$1</strong> улшăнусем. Халě пěтěмпе  <strong>{{NUMBEROFARTICLES}}</strong> статья.',
 'rclistfrom' => 'Юлашки улшăнусене $1 вăхăтран пуçласа кăтартнă',
 'rcshowhideminor' => 'пĕчĕк тӳрлетӳсене $1',
 'rcshowhidebots' => 'ботсене $1',
@@ -785,8 +776,8 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'fewestrevisions' => 'Сахал тӳрлетнĕ статьясем',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
-'nlinks' => '$1 {{PLURAL:$1|каçă|каçă}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байт}}',
+'nlinks' => '$1 {{PLURAL:$1|1=каçă|каçă}}',
 'nviews' => '$1 хут пăхнă',
 'specialpage-empty' => 'Ку страница пушă',
 'lonelypages' => 'Тăлăх страницăсем',
@@ -835,8 +826,6 @@ $1 хутшăнакан патне, е ытти [[{{MediaWiki:Grouppage-sysop}}|
 'prevpage' => 'Малтанхи страница ($1)',
 'allarticles' => 'Пĕтĕм статьясем',
 'allinnamespace' => 'Пĕтĕм статьясем («$1» ят уçлăхĕ)',
-'allpagesprev' => 'Малтанхисем',
-'allpagesnext' => 'Тепěр',
 'allpagessubmit' => 'Ту',
 'allpagesprefix' => 'Çак йĕрекесенчен пуçланакансен страницăсене шыра:',
 'allpagesbadtitle' => 'Страницăн ячĕ тĕрĕс мар. Ятĕнче е интервики, е чĕлхе префиксĕ е усă курма юраман символсем пур.',
@@ -936,7 +925,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'undeleterevisions' => 'Архивра пурĕ $1 верси',
 'undeletebtn' => 'Каялла тавăр!',
 'undeleteviewlink' => 'пăх',
-'undeletereset' => 'Тасат',
 'undeletedrevisions' => '$1 кăларса пăрахнă тӳрлетӳсене каялла тавăрнă',
 'undelete-search-box' => 'Кăларса пăрахнă страницăсен хушшинчи шырав',
 'undelete-search-submit' => 'Шыра',
@@ -968,7 +956,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'ipbreason' => 'Сăлтавĕ',
 'ipbother' => 'Урăх вăхăт:',
 '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',
-'ipbotheroption' => 'урăххи',
 'badipaddress' => 'IP-адрес формачĕ тĕрĕс мар, е ку ятлă хутшăнакан кунта çук.',
 'blockipsuccesssub' => 'Ĕçлеме чартăмăр',
 'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] ĕçлеме чарнă.
@@ -990,14 +977,12 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Move page
 'move-page-legend' => 'Страницăна куçарнă',
 'movearticle' => 'Страницăн ятне улăштар',
-'movenologin' => 'Система сирĕн ята пĕлмест',
 'newtitle' => 'Çĕнĕ ят',
 'move-watch' => 'Ку страницăна сăнамаллисем шутне хуш',
 'movepagebtn' => 'Страницăн ятне улăштар',
 'pagemovedsub' => 'Куçарас ĕç тĕрĕс иртрĕ',
 'articleexists' => 'Ку ятлă статья е пур, е ун пек ят пама юрамасть.
 Тархасшăн, статьяна урăх ят парăр.',
-'talkexists' => "'''Страницăн ятне улăштартăмăр, анчах та сӳтсе явмалли страницăн ятне улăштараймарăмар — вăл ятлă страницăна маларах хатĕрленĕ. Тархасшăн, вĕсене хăвăр тĕллĕн çыпăçтарăр.'''",
 'movetalk' => 'Статьяна сӳтсе явнă страницăн ятне те улăштармалла',
 'movelogpage' => 'Статьясен ятне улăштарнине кăтартакан журнал',
 'movereason' => 'Сăлтавĕ',
@@ -1113,9 +1098,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-k' => 'км/сех',
 
-# External editor support
-'edit-externally' => 'Ку файла тулашри программăна усă курса тӳрлет',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'пурте',
 'namespacesall' => 'пурте',
index 37625e8..574057a 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Arwel Parry
+ * @author Cymrodor
  * @author Kaganer
  * @author Lloffiwr
  * @author Malafaya
@@ -33,7 +34,7 @@ $namespaceNames = array(
        NS_TEMPLATE         => 'Nodyn',
        NS_TEMPLATE_TALK    => 'Sgwrs_Nodyn',
        NS_HELP             => 'Cymorth',
-       NS_HELP_TALK        => 'Sgwrs Cymorth',
+       NS_HELP_TALK        => 'Sgwrs_Cymorth',
        NS_CATEGORY         => 'Categori',
        NS_CATEGORY_TALK    => 'Sgwrs_Categori',
 );
@@ -64,14 +65,14 @@ $magicWords = array(
        'subpagenamee'              => array( '1', 'ENWISDUDALENE', 'SUBPAGENAMEE' ),
        'talkpagename'              => array( '1', 'ENWTUDALENSGWRS', 'TALKPAGENAME' ),
        'talkpagenamee'             => array( '1', 'ENWTUDALENSGWRSE', 'TALKPAGENAMEE' ),
-       'img_thumbnail'             => array( '1', 'ewin bawd', 'bawd', 'mân-lun', 'thumbnail', 'thumb' ),
+       'img_thumbnail'             => array( '1', 'ewin_bawd', 'bawd', 'mân-lun', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'mân-lun=$1', 'bawd=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'de', 'right' ),
        'img_left'                  => array( '1', 'chwith', 'left' ),
        'img_none'                  => array( '1', 'dim', 'none' ),
        'img_center'                => array( '1', 'canol', 'center', 'centre' ),
-       'img_page'                  => array( '1', 'tudalen=$1', 'tudalen $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'unionsyth', 'unionsyth=$1', 'unionsyth $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'tudalen=$1', 'tudalen_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'unionsyth', 'unionsyth=$1', 'unionsyth_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_sub'                   => array( '1', 'is', 'sub' ),
        'img_super'                 => array( '1', 'uwch', 'super', 'sup' ),
        'img_top'                   => array( '1', 'brig', 'top' ),
@@ -139,9 +140,8 @@ $messages = array(
 'tog-minordefault' => 'Marcio pob golygiad fel un bach yn ddiofyn',
 'tog-previewontop' => 'Dangos y rhagolwg cyn y blwch golygu',
 'tog-previewonfirst' => 'Dangos rhagolwg ar y golygiad cyntaf',
-'tog-nocache' => 'Analluogi storio tudalennau yng nghelc y porydd',
-'tog-enotifwatchlistpages' => 'Gyrru e-bost ataf pan fo newid i dudalen neu ffeil ar fy rhestr wylio',
-'tog-enotifusertalkpages' => "Gyrru e-bost ataf fy hunan pan fo newid i'm tudalen sgwrs",
+'tog-enotifwatchlistpages' => 'Anfon e-bost ataf pan fo newid i dudalen neu ffeil ar fy rhestr wylio',
+'tog-enotifusertalkpages' => "Anfon e-bost ataf fy hunan pan fo newid i'm tudalen sgwrs",
 'tog-enotifminoredits' => 'Gyrru e-bost ataf hefyd ar gyfer golygiadau bychain i dudalennau a ffeiliau',
 'tog-enotifrevealaddr' => 'Datguddio fy nghyfeiriad e-bost mewn e-byst hysbysu',
 'tog-shownumberswatching' => "Dangos y nifer o ddefnyddwyr sy'n gwylio",
@@ -274,7 +274,6 @@ $messages = array(
 'qbedit' => 'Golygu',
 'qbpageoptions' => 'Y dudalen hon',
 'qbmyoptions' => 'Fy nhudalennau',
-'qbspecialpages' => 'Tudalennau arbennig',
 'faq' => 'Cwestiynau cyffredin',
 'faqpage' => 'Project:Cwestiynau cyffredin',
 
@@ -490,9 +489,6 @@ Ni roddodd eglurhad.',
 'perfcached' => "Mae'r wybodaeth ganlynol yn gopi cadw; mae'n bosib nad y fersiwn diweddaraf ydyw. Cedwir hyd at {{PLURAL:$1||un canlyniad yn unig|ddau ganlyniad|dri canlyniad|$1 chanlyniad|$1 canlyniad}} yn y copi cadw.",
 'perfcachedts' => 'Rhoddwyd y data canlynol ar gadw mewn celc a ddiweddarwyd ddiwethaf am $1. Cedwir hyd at {{PLURAL:$4||un canlyniad yn unig|ddau ganlyniad|dri canlyniad|$4 chanlyniad|$4 canlyniad}} yn y celc.',
 'querypage-no-updates' => "Ar hyn o bryd, nid yw'r meddalwedd wedi ei osod i ddiweddaru data'r dudalen hon.",
-'wrong_wfQuery_params' => 'Paramedrau anghywir i wfQuery()<br />
-Ffwythiant: $1<br />
-Gofyniad: $2',
 'viewsource' => 'Dangos côd y dudalen',
 'viewsource-title' => 'Gweld cod y dudalen $1',
 'actionthrottled' => 'Tagwyd y weithred',
@@ -617,7 +613,7 @@ Sicrhewch eich bod chi wedi sillafu'r enw'n gywir, neu [[Special:UserLogin/signu
 'passwordtooshort' => "Mae'n rhaid fod gan gyfrinair o leia $1 {{PLURAL:$1|nod}}.",
 'password-name-match' => "Rhaid i'ch cyfrinair a'ch enw defnyddiwr fod yn wahanol i'w gilydd.",
 'password-login-forbidden' => "Gwaharddwyd defnyddio'r enw defnyddiwr a'r cyfrinair hwn.",
-'mailmypassword' => 'Anfoner cyfrinair newydd ataf trwy e-bost',
+'mailmypassword' => 'Ailosoder y cyfrinair',
 'passwordremindertitle' => 'Hysbysu cyfrinair dros dro newydd ar gyfer {{SITENAME}}',
 'passwordremindertext' => 'Mae rhywun (chi mwy na thebyg, o\'r cyfeiriad IP $1) wedi gofyn i ni anfon cyfrinair newydd atoch ar gyfer {{SITENAME}} ($4).
 Mae cyfrinair dros dro, sef "$3", wedi ei greu ar gyfer y defnyddiwr "$2". Os mai dyma oedd y bwriad, yna dylech fewngofnodi a\'i newid cyn gynted â phosib. Daw\'ch cyfrinair dros dro i ben ymhen {{PLURAL:$5||diwrnod|deuddydd|tridiau|$5 diwrnod|$5 diwrnod}}.
@@ -662,7 +658,7 @@ Os y gwnewch, fe gaiff yr enw go iawn ei defnyddio wrth dadogi'ch gwaith.",
 'user-mail-no-body' => 'Ceisiwyd anfon e-bost gwag neu e-bost oedd a thestun rhy bwt iddo.',
 
 # Change password dialog
-'resetpass' => 'Newid cyfrinair y cyfrif',
+'changepassword' => 'Newid y cyfrinair',
 'resetpass_announce' => "Fe wnaethoch fewngofnodi gyda chôd dros dro oddi ar e-bost.
 Er mwyn cwblhau'r mewngofnodi, rhaid i chi osod cyfrinair newydd fel hyn:",
 'resetpass_header' => 'Newid cyfrinair y cyfrif',
@@ -683,7 +679,7 @@ Gall fod eich bod wedi llwyddo newid eich cyfrinair eisoes neu eich bod wedi gof
 # Special:PasswordReset
 'passwordreset' => 'Ailosod cyfrinair',
 'passwordreset-text-one' => 'Cwblhewch y ffurflen hon er mwyn ailosod eich cyfrinair.',
-'passwordreset-text-many' => "{{PLURAL:$1|Llanwch un o'r blychau er mwyn ailosod eich cyfrinair.}}",
+'passwordreset-text-many' => "{{PLURAL:$1|Llanwch un o'r blychau er mwyn derbyn cyfrinair dros dro mewn ebost.}}",
 'passwordreset-legend' => 'Ailosod y cyfrinair',
 'passwordreset-disabled' => 'Analluogwyd ailosod cyfrineiriau ar y wici hwn.',
 'passwordreset-emaildisabled' => 'Analluogwyd offer e-bost ar y wici hwn.',
@@ -850,7 +846,7 @@ Cofiwch bod y tudalennau .css a .js yn defnyddio llythrennau bach, e.e. {{ns:use
 'updated' => '(Diweddariad)',
 'note' => "'''Dalier sylw:'''",
 'previewnote' => "'''Cofiwch taw rhagolwg yw hwn.''' Nid yw eich gwaith wedi ei roi ar gadw eto!",
-'continue-editing' => "Neidier i'r blwch golygu",
+'continue-editing' => "Neidio i'r blwch golygu",
 'previewconflict' => "Mae'r rhagolwg hwn yn dangos y testun yn yr ardal golygu uchaf, fel ag y byddai'n ymddangos petaech yn rhoi'r dudalen ar gadw.",
 'session_fail_preview' => "'''Ymddiheurwn! Methwyd prosesu eich golygiad gan fod rhan o ddata'r sesiwn wedi'i golli. Ceisiwch eto.
 Os digwydd yr un peth eto, ceisiwch [[Special:UserLogout|allgofnodi]] ac yna mewngofnodi eto.'''",
@@ -976,6 +972,9 @@ Cafodd yr argiau hyn eu hepgor.",
 'cantcreateaccount-text' => "Rhwystrwyd y gallu i greu cyfrif ar gyfer y cyfeiriad IP hwn, ('''$1'''), gan [[User:$3|$3]].
 
 Y rheswm a roddwyd dros y bloc gan $3 yw ''$2''.",
+'cantcreateaccount-range-text' => "Gosododd [[User:\$3|\$3]] floc ar agor cyfrifon o gyfeiriadau IP yn yr ystod '''\$1''', sy'n cynnwys eich cyfeiriad IP chi ('''\$4''').
+
+Y rheswm a roddwyd gan \$3 yw \"\$2\"",
 
 # History pages
 'viewpagelogs' => "Dangos logiau'r dudalen hon",
@@ -1045,10 +1044,6 @@ Serch hyn, gallwch eu cymharu o hyd; cewch weld y manylion ar y [{{fullurl:{{#Sp
 'revisiondelete' => 'Dileu/dad-ddileu diwygiadau',
 'revdelete-nooldid-title' => 'Anelwyd at olygiad annilys',
 'revdelete-nooldid-text' => "Naill ai; nid ydych wedi dynodi diwygiad yn darged y weithred, neu nid yw'r diwygiad penodedig yn bod, neu rydych wedi ceisio cuddio'r diwygiad presennol.",
-'revdelete-nologtype-title' => 'Ni nodwyd y math o lòg',
-'revdelete-nologtype-text' => "Nid ydych wedi enwi'r math o lòg yr ydych am weithredu arno.",
-'revdelete-nologid-title' => 'Cofnod lòg annilys',
-'revdelete-nologid-text' => "Ni enwyd y lòg yr ydych am weithio arno ynteu nid yw'r lòg a enwyd yn bod.",
 'revdelete-no-file' => "Nid yw'r ffeil a nodwyd yn bod.",
 'revdelete-show-file-confirm' => 'Ydych chi\'n sicr eich bod am weld y diwygiad dilëedig o\'r ffeil "<nowiki>$1</nowiki>" a roddwyd ar gadw am $3 ar $2?',
 'revdelete-show-file-submit' => 'Ydw',
@@ -1082,8 +1077,6 @@ $1",
 'logdelete-failure' => "'''Ni ellid gosod cyfyngiadau ar y gallu i weld y cofnod lòg:'''
 $1",
 'revdel-restore' => 'Newid gwelededd',
-'revdel-restore-deleted' => 'diwygiadau dilëedig',
-'revdel-restore-visible' => 'diwygiadau gweladwy',
 'pagehist' => 'Hanes y dudalen',
 'deletedhist' => 'Hanes dilëedig',
 'revdelete-hide-current' => "Cafwyd gwall wrth geisio cuddio'r eitem a'r dyddiad $2, $1 arno: hwn yw'r diwygiad presennol.
@@ -1161,12 +1154,8 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => "Canlyniadau'r chwiliad",
 'searchresults-title' => 'Canlyniadau chwilio am "$1"',
-'searchresulttext' => 'Am fwy o wybodaeth am chwilio {{SITENAME}}, gwelwch [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Chwiliwyd am \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pob tudalen yn dechrau gyda "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pob tudalen sy\'n cysylltu â "$1"]])',
-'searchsubtitleinvalid' => "Chwiliwyd am '''$1'''",
 'toomanymatches' => "Cafwyd hyd i ormod o enghreifftiau o'r term chwilio; ceisiwch chwilio am derm arall",
 'titlematches' => 'Teitlau erthygl yn cyfateb',
-'notitlematches' => 'Does dim teitl yn cyfateb',
 'textmatches' => 'Testun erthygl yn cyfateb',
 'notextmatches' => 'Does dim testun yn cyfateb',
 'prevn' => '{{PLURAL:$1||yr $1 cynt|y $1 gynt|y $1 chynt|y $1 chynt|y $1 cynt}}',
@@ -1175,10 +1164,8 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => 'Y $1 {{PLURAL:$1|canlyiad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} nesaf',
 'shown-title' => 'Dangos $1 {{PLURAL:$1|canlyiad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} y dudalen',
 'viewprevnext' => 'Dangos ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Dewisiadau chwilio',
 'searchmenu-exists' => "'''Mae tudalen o'r enw \"[[\$1]]\" ar y wici hwn'''",
 'searchmenu-new' => "'''Creu'r dudalen \"[[:\$1]]\" ar y wici hwn!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Chwilio drwy tudalennau gyda'r rhagddodiad hwn]]",
 'searchprofile-articles' => 'Tudalennau pwnc (erthyglau/ffeiliau)',
 'searchprofile-project' => 'Tudalennau Cymorth a Phrosiect',
 'searchprofile-images' => 'Ffeiliau amlgyfrwng',
@@ -1199,20 +1186,16 @@ Mae manylion pellach i'w cael yn [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-default' => 'Y canlyniadau o $1:',
 'search-interwiki-more' => '(rhagor)',
 'search-relatedarticle' => 'Erthyglau eraill tebyg',
-'mwsuggest-disable' => 'Analluogi awgrymiadau chwilio',
 'searcheverything-enable' => 'Chwilio pob parth',
 'searchrelated' => 'erthyglau eraill tebyg',
 'searchall' => 'oll',
 'showingresults' => "Yn dangos $1 {{PLURAL:$1|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
 'showingresultsnum' => "Yn dangos $3 {{PLURAL:$3|canlyniad|canlyniad|ganlyniad|chanlyniad|chanlyniad|canlyniad}} isod gan ddechrau gyda rhif '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5||Canlyniad '''$1''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''|Canlyniadau '''$1 - $2''' o blith '''$3'''}} ar gyfer '''$4'''",
-'nonefound' => "'''Sylwer''': Dim ond rhai parthau sy'n cael eu chwilio'n ddiofyn. Os ydych am chwilio'r holl barthau (gan gynnwys tudalennau sgwrs, nodiadau, ayb) teipiwch ''all:'' o flaen yr enw. Os am chwilio parth arbennig teipiwch ''enw'r parth:'' o flaen yr enw.",
 'search-nonefound' => "Ni chafwyd dim canlyniadau i'r ymholiad.",
-'powersearch' => 'Chwilio',
 'powersearch-legend' => 'Chwiliad uwch',
 'powersearch-ns' => 'Chwilio yn y parthau:',
 'powersearch-redir' => 'Rhestru ailgyfeiriadau',
-'powersearch-field' => 'Chwilier am',
 'powersearch-togglelabel' => 'Dewis:',
 'powersearch-toggleall' => 'Oll',
 'powersearch-togglenone' => 'Dim un',
@@ -1227,7 +1210,6 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 'mypreferences' => 'Dewisiadau',
 'prefs-edits' => 'Nifer y golygiadau:',
 'prefsnologintext2' => 'Mae angen $1 er mwyn gosod eich dewisiadau personol.',
-'changepassword' => 'Newid y cyfrinair',
 'prefs-skin' => 'Gwedd',
 'skin-preview' => 'Rhagolwg',
 'datedefault' => 'Dim dewisiad',
@@ -1249,14 +1231,12 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
 'prefs-setemail' => 'Gosod cyfeiriad e-bost',
 'prefs-email' => 'E-bostio',
 'prefs-rendering' => 'Ymddangosiad',
-'saveprefs' => 'Cadwer y dewisiadau',
-'resetprefs' => "Clirio'r darpar newidiadau",
+'saveprefs' => 'Cadw',
 'restoreprefs' => 'Adfer yr holl osodiadau diofyn (ymhob adran)',
 'prefs-editing' => 'Golygu',
 'rows' => 'Rhesi:',
 'columns' => 'Colofnau:',
 'searchresultshead' => 'Chwilio',
-'resultsperpage' => 'Cyfradd taro fesul tudalen:',
 'stub-threshold' => 'Trothwy ar gyfer fformatio <a href="#" class="stub">cyswllt eginyn</a> (beitiau):',
 'stub-threshold-disabled' => 'Analluogwyd',
 'recentchangesdays' => "Nifer y diwrnodau i'w dangos yn 'newidiadau diweddar':",
@@ -1271,7 +1251,6 @@ Bydd unrhyw un sy'n gwybod hwn yn gallu darllen eich rhestr wylio, felly peidiwc
 'localtime' => 'Amser lleol:',
 'timezoneuseserverdefault' => "Defnyddio'r amser yn ôl y wici ($1)",
 'timezoneuseoffset' => 'Arall (nodwch yr atred)',
-'timezoneoffset' => 'Atred¹:',
 'servertime' => 'Amser y gweinydd:',
 'guesstimezone' => 'Llenwi oddi wrth y porwr',
 'timezoneregion-africa' => 'Affrica',
@@ -1340,6 +1319,7 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'prefs-tokenwatchlist' => 'Tocyn',
 'prefs-diffs' => "Cymharu golygiadau ('gwahan')",
 'prefs-help-prefershttps' => "Bydd y dewis yma'n cael ei roi ar waith y tro nesaf i chi fewngofnodi.",
+'prefs-tabs-navigation-hint' => "Awgrym: Gallwch ddefnyddio'r allweddellau sy'n saethau i'r chwith neu i'r dde i lywio rhwng y tabiau ar restr y tabiau.",
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Y cyfeiriad e-bost yn ymddangos yn un dilys',
@@ -1526,14 +1506,14 @@ Mae'r wybodaeth hon ar gael i'r cyhoedd.",
 'recentchanges-label-bot' => 'Golygwyd gan fot',
 'recentchanges-label-unpatrolled' => "Nid yw'r golygiad hwn wedi derbyn ymweliad patrôl eto",
 'recentchanges-label-plusminus' => "Newidiodd maint y dudalen o'r nifer hwn o feitiau",
+'recentchanges-legend-heading' => "'''Allwedd:'''",
 'recentchanges-legend-newpage' => '(gweler hefyd [[Special:NewPages|restr y tudalennau newydd]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Isod mae'r '''$1''' newid diweddaraf yn ystod y {{PLURAL:$2|diwrnod|diwrnod|deuddydd|tridiau|'''$2''' diwrnod|'''$2''' diwrnod}} diwethaf, hyd at $5, $4.",
 'rcnotefrom' => "Isod rhestrir pob newid ers '''$2''' (hyd at '''$1''' ohonynt).",
 'rclistfrom' => 'Dangos newidiadau newydd, gan ddechrau ers $1',
 'rcshowhideminor' => '$1 golygiadau bychain',
 'rcshowhidebots' => '$1 botiau',
-'rcshowhideliu' => '$1 defnyddwyr mewngofnodedig',
+'rcshowhideliu' => '$1 o ddefnyddwyr cofrestredig',
 'rcshowhideanons' => '$1 defnyddwyr anhysbys',
 'rcshowhidepatr' => '$1 golygiadau wedi derbyn ymweliad patrôl',
 'rcshowhidemine' => '$1 fy ngolygiadau',
@@ -1649,6 +1629,8 @@ Ewch nôl ac uwchlwythwch y ffeil gydag enw gwahanol iddo.
 'file-exists-duplicate' => "Dyblgeb yw'r ffeil hwn o'r {{PLURAL:$1|ffeil|ffeil|ffeiliau|ffeiliau|ffeiliau|ffeiliau}} sy'n dilyn:",
 'file-deleted-duplicate' => "Mae ffeil union debyg i hon ([[:$1]]) eisoes wedi cael ei dileu.
 Dylech edrych ar hanes dileu'r ffeil honno cyn bwrw ati i'w llwytho unwaith eto.",
+'file-deleted-duplicate-notitle' => "Mae ffeil union debyg i hon eisoes wedi cael ei dileu, ac mae'r teitl wedi ei hatal rhag ymddangos ar goedd.
+Cyn i chi ail-lwytho'r ffeil, dylech holi i rywun â'r gallu ganddo i weld data ffeil sydd wedi ei hatal rhag ymddangos, i adolygu'r sefyllfa.",
 'uploadwarning' => 'Rhybudd uwchlwytho',
 'uploadwarning-text' => 'Newidiwch ddisgrifiad y ffeil isod ac yna ceisiwch ei huwchlwytho eto, os gwelwch yn dda.',
 'savefile' => "Cadw'r ffeil",
@@ -1980,6 +1962,7 @@ Gosodwyd <del>llinell</del> drwy'r eitemau sydd eisoes wedi eu datrys.",
 'ninterwikis' => '$1 {{PLURAL:$1|cyswllt|cyswllt|gyswllt|chyswllt|chyswllt|cyswllt}}',
 'nlinks' => '$1 {{PLURAL:$1|cyswllt|cyswllt|gyswllt|chyswllt|chyswllt|cyswllt}}',
 'nmembers' => '$1 {{PLURAL:$1|aelod|aelod|aelod|aelod|aelod|aelod}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|aelodau|aelod|aelodau}}',
 'nrevisions' => '$1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}}',
 'nviews' => '$1 {{PLURAL:$1|ymweliad|ymweliad|ymweliad|ymweliad|ymweliad|ymweliad}}',
 'nimagelinks' => 'Defnyddir ar {{PLURAL:$1||$1 dudalen|$1 dudalen|$1 tudalen|$1 thudalen|$1 tudalen}}',
@@ -2018,10 +2001,9 @@ Gosodwyd <del>llinell</del> drwy'r eitemau sydd eisoes wedi eu datrys.",
 'protectedpages' => 'Tudalennau wedi eu diogelu',
 'protectedpages-indef' => 'A ddiogelwyd yn ddi-derfyn yn unig',
 'protectedpages-cascade' => 'A sgydol-ddiogelwyd yn unig',
-'protectedpagestext' => "Mae'r tudalennau hyn wedi eu diogelu rhag cael eu symud na'u golygu",
+'protectedpages-noredirect' => 'Cuddio ailgyfeiriadau',
 'protectedpagesempty' => "Does dim tudalennau wedi eu diogelu gyda'r paramedrau hyn.",
 'protectedtitles' => 'Teitlau wedi eu diogelu',
-'protectedtitlestext' => "Diogelwyd rhag creu tudalennau gyda'r teitlau hyn",
 'protectedtitlesempty' => "Ar hyn o bryd nid oes unrhyw deitlau wedi eu diogelu a'r paramedrau hyn.",
 'listusers' => 'Rhestr defnyddwyr',
 'listusers-editsonly' => 'Dangos y defnyddwyr hynny sydd wedi golygu rhywbeth yn unig',
@@ -2074,9 +2056,6 @@ Sylwer bod llythrennau mawr neu fach o bwys i'r chwiliad.",
 'allpagesto' => 'Dangos pob tudalen hyd at:',
 'allarticles' => 'Pob erthygl',
 'allinnamespace' => 'Pob tudalen (parth $1)',
-'allnotinnamespace' => 'Pob tudalen (heblaw am y parth $1)',
-'allpagesprev' => 'Gynt',
-'allpagesnext' => 'Nesaf',
 'allpagessubmit' => 'Rhestrer',
 'allpagesprefix' => 'Dangos pob tudalen mewn parth gan ddechrau o:',
 'allpagesbadtitle' => 'Roedd y darpar deitl yn annilys oherwydd bod ynddo naill ai:<p> - rhagddodiad rhyngwici neu ryngieithol, neu </p>- nod neu nodau na ellir eu defnyddio mewn teitlau.',
@@ -2300,6 +2279,7 @@ Gwelwch y $2 am gofnod o\'r dileuon diweddar.',
 Cyfyngwyd ar y gallu i ddileu tudalennau sydd wedi eu golygu cymaint â hyn, er mwyn osgoi amharu ar weithrediad databas {{SITENAME}} yn ddamweiniol.",
 'delete-warning-toobig' => "Cafwyd dros $1 {{PLURAL:$1|o olygiadau}} i'r dudalen hon.
 Gallai dileu tudalen, gyda hanes golygu cymaint â hyn iddi, beri dryswch i weithrediadau'r databas ar {{SITENAME}}; ewch ati'n ofalus.",
+'deleting-backlinks-warning' => "'''Rhybudd:''' Mae tudalennau eraill yn cysylltu i'r dudalen yr ydych ar fin ei dileu.",
 
 # Rollback
 'rollback' => 'Gwrthdroi golygiadau',
@@ -2413,7 +2393,6 @@ Mae'n bosibl bod nam ar y cyswllt, neu fod y diwygiad eisoes wedi'i adfer neu we
 'undeletebtn' => 'Adfer',
 'undeletelink' => 'gweld/adfer',
 'undeleteviewlink' => 'gweld',
-'undeletereset' => 'Ailosod',
 'undeleteinvert' => "Gwrthdroi'r dewis",
 'undeletecomment' => 'Rheswm:',
 'undeletedrevisions' => 'wedi adfer $1 {{PLURAL:$1|diwygiad|diwygiad|ddiwygiad|diwygiad|diwygiad|diwygiad}}',
@@ -2503,7 +2482,6 @@ Mae'r cofnod diweddaraf yn y lòg blocio i'w weld isod:",
 'block' => 'Rhwystro defnyddiwr',
 'unblock' => 'Dad-rwystro defnyddiwr',
 'blockip' => "Rhwystro'r defnyddiwr",
-'blockip-title' => "Rhwystro'r defnyddiwr",
 'blockip-legend' => "Rhwystro'r defnyddiwr",
 'blockiptext' => "Defnyddiwch y ffurflen hon i rwystro cyfeiriad IP neu ddefnyddiwr rhag ysgrifennu i'r gronfa ddata. 
 Dylech chi ddim ond gwneud hyn er mwyn rhwystro fandaliaeth, a chan ddilyn [[{{MediaWiki:Policy-url}}|polisi'r wici]]. 
@@ -2511,7 +2489,6 @@ Rhowch reswm dros rwystro'r defnyddiwr (er enghraifft, dywedwch pa dudalen(au) a
 'ipadressorusername' => 'Cyfeiriad IP neu enw defnyddiwr:',
 'ipbexpiry' => 'Am gyfnod:',
 'ipbreason' => 'Rheswm:',
-'ipbreasonotherlist' => 'Rheswm arall',
 'ipbreason-dropdown' => "*Rhesymau cyffredin dros flocio
 ** Gosod gwybodaeth anghywir
 ** Dileu cynnwys tudalennau
@@ -2527,8 +2504,6 @@ Rhowch reswm dros rwystro'r defnyddiwr (er enghraifft, dywedwch pa dudalen(au) a
 'ipbsubmit' => "Rhwystro'r defnyddiwr hwn",
 'ipbother' => 'Cyfnod arall:',
 'ipboptions' => '2 awr:2 hours,ddiwrnod:1 day,3 diwrnod:3 days,wythnos:1 week,bythefnos:2 weeks,fis:1 month,3 mis:3 months,6 mis:6 months,flwyddyn:1 year,amhenodol:infinite',
-'ipbotheroption' => 'arall',
-'ipbotherreason' => 'Rheswm arall/ychwanegol:',
 'ipbhidename' => "Cuddio'r enw defnyddiwr rhag ymddangos ar restri a golygiadau",
 'ipbwatchuser' => 'Gwylio tudalen defnyddiwr a thudalen sgwrs y defnyddiwr hwn',
 'ipb-disableusertalk' => "Atal y defnyddiwr hwn rhag golygu ei dudalen/ei thudalen sgwrs ei hunan wrth i'r bloc fod yn weithredol",
@@ -2540,6 +2515,7 @@ Rhowch reswm dros rwystro'r defnyddiwr (er enghraifft, dywedwch pa dudalen(au) a
 Gweler y [[Special:BlockList|rhestr blociau]] er mwyn arolygu blociau.',
 'ipb-blockingself' => "Rydych ar rwystro'ch hunan! A ydych yn siŵr eich bod chi am wneud hyn?",
 'ipb-confirmhideuser' => 'Rydych ar rwystro defnyddiwr sydd yn "guddiedig." Bydd hyn yn atal enw\'r defnyddiwr ym mhob rhestr a chofnod lòg. A ydych yn siŵr eich bod chi am wneud hyn?',
+'ipb-confirmaction' => 'Os ydych wir am wneud hyn, cliciwch ar y maes "{{int:ipb-confirm}}" ar y gwaelod.',
 'ipb-edit-dropdown' => "Golygu'r rhesymau dros flocio",
 'ipb-unblock-addr' => 'Dadflocio $1',
 'ipb-unblock' => 'Dadflocio enw defnyddiwr neu gyfeiriad IP',
@@ -2619,7 +2595,6 @@ Gallwch weld rhestr y rhwystrau a'r gwaharddiadau sydd yn weithredol ar hyn o br
 'sorbs_create_account_reason' => 'Mae eich cyfeiriad IP wedi cael ei osod ymhlith y dirprwyon agored ar y Rhestr DNS Gwaharddedig a ddefnyddir gan {{SITENAME}}.
 Ni allwch greu cyfrif',
 'xffblockreason' => "Mae un o'r cyfeiriadau IP yn y pennyn 'X-Forwarded-For' wedi cael ei atal; naill ai eich cyfeiriad chi neu un o'r gweinyddion dirprwyol a ddefnyddiwyd gennych. Y rheswm gwreiddiol dros atal oedd: $1",
-'cant-block-while-blocked' => 'Ni allwch flocio defnyddwyr eraill tra bod rhwystr arnoch chithau.',
 'cant-see-hidden-user' => "Mae'r defnyddiwr yr ydych yn ceisio'i rwystro wedi ei rwystro a'i guddio'n barod.
 Gan nad yw'r gallu i guddio defnyddwyr gennych, ni allwch weld y rhwystr sydd ar y defnyddiwr na'i olygu.",
 'ipbblocked' => 'Ni allwch rwystro na dadrwystro defnyddwyr eraill, oherwydd eich bod chi eich hunan wedi eich rhwystro',
@@ -2680,7 +2655,6 @@ gwnewch yn siwr eich bod chi'n deall y canlyniadau cyn mynd ati.",
 Os felly, gallwch symud y dudalen sgwrs neu ei gyfuno ar ôl symud y dudalen ei hun.",
 'movearticle' => 'Symud y dudalen:',
 'moveuserpage-warning' => "'''Sylwer:''' Yr ydych ar fin symud tudalen defnyddiwr. Sylwch mai'r dudalen yn unig a gaiff ei symud ac ''na fydd'' y defnyddiwr yn cael ei ail-enwi.",
-'movenologin' => 'Nid ydych wedi mewngofnodi',
 'movenologintext' => "Mae'n rhaid bod yn ddefnyddiwr cofrestredig a'ch bod wedi [[Special:UserLogin|mewngofnodi]] cyn medru symud tudalen.",
 'movenotallowed' => 'Nid oes caniatâd gennych i symud tudalennau.',
 'movenotallowedfile' => "Nid yw'r gallu ganddoch i symud ffeiliau.",
@@ -2696,8 +2670,6 @@ Os felly, gallwch symud y dudalen sgwrs neu ei gyfuno ar ôl symud y dudalen ei
 'articleexists' => "Mae tudalen gyda'r darpar enw yn bodoli'n barod, neu mae eich darpar enw yn annilys.
 Dewiswch enw arall os gwelwch yn dda.",
 'cantmove-titleprotected' => "Ni allwch symud tudalen i'r lleoliad hwn, oherwydd bod y teitl arfaethedig wedi ei ddiogelu rhag cael ei ddefnyddio.",
-'talkexists' => "'''Mae'r dudalen wedi'i symud yn llwyddiannus, ond nid oedd hi'n bosibl symud y dudalen sgwrs oherwydd bod yna dudalen sgwrs gyda'r enw newydd yn bodoli'n barod. Cyfunwch y ddwy dudalen, os gwelwch yn dda.'''",
-'movedto' => 'symud i',
 'movetalk' => 'Symud y dudalen sgwrs hefyd',
 'move-subpages' => 'Symud unrhyw is-dudalennau (hyd at $1)',
 'move-talk-subpages' => "Symud is-dudalennau'r dudalen sgwrs (hyd at $1)",
@@ -2931,7 +2903,7 @@ Mae ffolder dros dro yn eisiau.',
 'tooltip-rollback' => "Yn troi golygiad(au) y defnyddiwr diwethaf i'r dudalen hon yn ôl gydag un clic.",
 'tooltip-undo' => 'Mae "dadwneud" yn troi\'r golygiad hwn yn ôl ac yn dangos rhagolwg o\'r golygiad adferedig.
 Gellir ychwanegu rheswm dros y dadwneud yn y crynodeb.',
-'tooltip-preferences-save' => 'Rhodder y dewisiadau ar gadw',
+'tooltip-preferences-save' => "Cadw'r dewisiadau",
 'tooltip-summary' => 'Rhowch grynodeb byr',
 'interlanguage-link-title' => '$1 - $2',
 
@@ -3526,15 +3498,10 @@ Cuddir y meysydd eraill trwy ragosodiad.
 'exif-urgency-high' => 'Uchel ($1)',
 'exif-urgency-other' => 'Blaenoriaeth yn ôl y defnyddiwr ($1)',
 
-# External editor support
-'edit-externally' => 'Golygwch y ffeil gyda rhaglen allanol',
-'edit-externally-help' => '(Gwelwch y [https://www.mediawiki.org/wiki/Manual:External_editors cyfarwyddiadau gosod] am fwy o wybodaeth)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'holl',
 'namespacesall' => 'pob un',
 'monthsall' => 'pob mis',
-'limitall' => 'oll',
 
 # Email address confirmation
 'confirmemail' => "Cadarnhau'r cyfeiriad e-bost",
@@ -3553,7 +3520,6 @@ Dychwelodd yr ebostydd: $1",
 'confirmemail_success' => "Mae eich cyfeiriad e-bost wedi'i gadarnhau. 
 Cewch [[Special:UserLogin|fewngofnodi]] a mwynhau'r wici.",
 'confirmemail_loggedin' => 'Cadarnhawyd eich cyfeiriad e-bost.',
-'confirmemail_error' => 'Cafwyd gwall wrth ddanfon eich cadarnhad.',
 'confirmemail_subject' => 'Cadarnhâd cyfeiriad e-bost ar {{SITENAME}}',
 'confirmemail_body' => 'Mae rhywun (chi, yn fwy na thebyg, o\'r cyfeiriad IP $1) wedi cofrestru\'r cyfrif "$2" ar {{SITENAME}} gyda\'r cyfeiriad e-bost hwn.
 
@@ -3625,6 +3591,11 @@ Cadarnhewch eich bod chi wir am ail-greu'r dudalen.",
 'imgmultigo' => 'Eler!',
 'imgmultigoto' => "Mynd i'r dudalen $1",
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(diofyn)',
+'img-lang-info' => "Cynhyrchu'r ddelwedd yn yr iaith $1. $2",
+'img-lang-go' => 'Cynhyrcher',
+
 # Table pager
 'ascending_abbrev' => 'esgynnol',
 'descending_abbrev' => 'am lawr',
@@ -3702,7 +3673,17 @@ Gallwch hefyd [[Special:EditWatchlist|ddefnyddio\'r rhestr arferol]].',
 'version-hook-name' => "Enw'r bachyn",
 'version-hook-subscribedby' => 'Tanysgrifwyd gan',
 'version-version' => '(Fersiwn $1)',
-'version-license' => 'Trwydded',
+'version-license' => 'Trwydded MediaWiki',
+'version-ext-license' => 'Trwydded',
+'version-ext-colheader-name' => 'Estyniad',
+'version-ext-colheader-version' => 'Fersiwn',
+'version-ext-colheader-license' => 'Trwydded',
+'version-ext-colheader-description' => 'Disgrifiad',
+'version-ext-colheader-credits' => 'Awduron',
+'version-license-title' => 'Trwydded $1',
+'version-license-not-found' => 'Ni chafwyd hyd i wybodaeth manwl am drwydded yr estyniad hwn.',
+'version-credits-title' => 'Tadogi $1',
+'version-credits-not-found' => "Ni chafwyd hyd i wybodaeth fanwl ar dadogi'r estyniad hwn.",
 'version-poweredby-credits' => "Mae'r wici hwn wedi'i nerthu gan '''[https://www.mediawiki.org/ MediaWiki]''', hawlfraint © 2001 - $1 $2.",
 'version-poweredby-others' => 'eraill',
 'version-poweredby-translators' => 'cyfieithwyr translatewiki.net',
@@ -3720,15 +3701,16 @@ Dylech fod wedi derbyn [{{SERVER}}{{SCRIPTPATH}}/COPYING gopi o GNU General Publ
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Ailgyfeirio yn ôl enw ffeil, ID defnyddiwr neu ID diwygiad tudalen',
+'redirect' => 'Ailgyfeirio yn ôl enw ffeil, defnyddiwr, tudalen neu ID y diwygiad',
 'redirect-legend' => 'Ailgyfeirio i ffeil neu dudalen',
-'redirect-summary' => "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).
+'redirect-summary' => "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen neu ID y dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).
 Defnydd: 
-[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
+[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Ati',
 'redirect-lookup' => 'Chwilio drwy:',
 'redirect-value' => 'Chwilio am:',
 'redirect-user' => 'ID defnyddwyr',
+'redirect-page' => 'ID tudalennau',
 'redirect-revision' => 'Rhifau diwygiadau tudalennau',
 'redirect-file' => 'Enwau ffeiliau',
 'redirect-not-exists' => "Heb lwyddo i'w ganfod",
@@ -3795,7 +3777,6 @@ Defnydd:
 
 # Special:ComparePages
 'comparepages' => 'Cymharu tudalennau',
-'compare-selector' => "Cymharu diwygiadau gwahanol o'r dudalen",
 'compare-page1' => 'Tudalen 1',
 'compare-page2' => 'Tudalen 2',
 'compare-rev1' => 'Diwygiad 1',
@@ -3922,6 +3903,7 @@ Defnydd:
 'api-error-overwrite' => 'Ni chaniateir trosysgrifo ffeil sydd eisoes yn bod.',
 'api-error-stashfailed' => "Gwall mewnol: methodd y gweinydd â rhoi'r ffeil dros dro ar gadw.",
 'api-error-publishfailed' => "Gwall mewnol: methodd y gweinydd â chyhoeddi'r ffeil dros dro.",
+'api-error-stasherror' => "Cafwyd gwall wrth uwchlwytho'r ffeil i'w gelcio.",
 'api-error-timeout' => 'Ni chafwyd ymateb gan y gweinydd mewn da bryd.',
 'api-error-unclassified' => 'Cafwyd gwall anhysbys',
 'api-error-unknown-code' => 'Gwall anhysbys: "$1"',
@@ -3962,10 +3944,15 @@ Defnydd:
 
 # Special:ExpandTemplates
 'expandtemplates' => "Ehangu'r nodynnau",
+'expand_templates_title' => 'Teitl y cyd-destun, ar gyfer {{FULLPAGENAME}}, etc.:',
 'expand_templates_input' => 'Cynnwys y mewnbwn:',
 'expand_templates_output' => 'Y canlyniad',
 'expand_templates_xml_output' => 'Yr allbwn XML',
+'expand_templates_html_output' => 'Allbwn HTML crai',
 'expand_templates_ok' => 'Iawn',
+'expand_templates_remove_comments' => 'Peidio â dangos sylwadau',
+'expand_templates_remove_nowiki' => "Cuddio'r tagiau <nowiki> wrth ehangu",
+'expand_templates_generate_rawhtml' => 'Dangos HTML crai',
 'expand_templates_preview' => 'Rhagolwg',
 
 );
index 6a07d08..afef71c 100644 (file)
@@ -88,7 +88,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Ældste_sider' ),
        'Blankpage'                 => array( 'Tom_Side' ),
        'Block'                     => array( 'Bloker_adresse' ),
-       'Blockme'                   => array( 'Proxyspærring' ),
        'Booksources'               => array( 'ISBN-søgning' ),
        'BrokenRedirects'           => array( 'Defekte_omdirigeringer' ),
        'Categories'                => array( 'Kategorier' ),
@@ -99,7 +98,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Opret_konto' ),
        'Deadendpages'              => array( 'Blindgydesider' ),
        'DeletedContributions'      => array( 'Slettede_bidrag' ),
-       'Disambiguations'           => array( 'Flertydige_sider' ),
        'DoubleRedirects'           => array( 'Dobbelte_omdirigeringer' ),
        'Emailuser'                 => array( 'E-mail' ),
        'Export'                    => array( 'Eksporter' ),
@@ -209,7 +207,7 @@ $messages = array(
 'tog-editsection' => 'Redigér afsnit ved hjælp af [redigér]-henvisninger',
 'tog-editsectiononrightclick' => 'Redigér afsnit ved at højreklikke på deres titler',
 'tog-showtoc' => 'Vis indholdsfortegnelse (på sider med mere end tre afsnit)',
-'tog-rememberpassword' => 'Husk mit login i denne browser (højst $1 {{PLURAL:$1|dag|dage}})',
+'tog-rememberpassword' => 'Husk mig i denne browser (i højst $1 {{PLURAL:$1|dag|dage}})',
 'tog-watchcreations' => 'Tilføj sider, jeg opretter, og filer, jeg lægger op, til min overvågningsliste',
 'tog-watchdefault' => 'Tilføj sider og filer, jeg redigerer, til min overvågningsliste',
 'tog-watchmoves' => 'Tilføj sider og filer, jeg flytter, til min overvågningsliste',
@@ -217,7 +215,6 @@ $messages = array(
 'tog-minordefault' => 'Markér som standard alle redigeringer som mindre redigeringer',
 'tog-previewontop' => 'Vis forhåndsvisning over redigeringsboksen',
 'tog-previewonfirst' => 'Vis forhåndsvisning når du starter med at redigere',
-'tog-nocache' => 'Slå browsercaching af sider fra',
 'tog-enotifwatchlistpages' => 'Send mig en e-mail ved ændringer til en side eller fil på min overvågningsliste',
 'tog-enotifusertalkpages' => 'Send mig en e-mail når min brugerdiskussionsside ændres',
 'tog-enotifminoredits' => 'Send mig også en e-mail ved mindre ændringer af sider og filer på min overvågningsliste',
@@ -353,7 +350,6 @@ $messages = array(
 'qbedit' => 'Redigér',
 'qbpageoptions' => 'Indstillinger for side',
 'qbmyoptions' => 'Mine indstillinger',
-'qbspecialpages' => 'Specielle sider',
 'faq' => 'OSS',
 'faqpage' => 'Project:OSS',
 
@@ -563,15 +559,12 @@ Den kan være blevet slettet af en anden.',
 'delete-hook-aborted' => 'Sletningen blev afbrudt af en programfunktion.
 Der var ikke nogen forklaring.',
 'no-null-revision' => 'Kunne ikke oprette nye tom revision for side "$1"',
-'badtitle' => 'Forkert titel',
-'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra en {{SITENAME}} på et andet sprog.
-Den kan indeholde et eller flere tegn, som ikke kan anvendes i titler.',
+'badtitle' => 'Ugyldig titel',
+'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra {{SITENAME}} på et andet sprog.
+Den kan indeholde et eller flere tegn, som ikke  anvendes i titler.',
 'perfcached' => 'Følgende data er gemt i cachen, der muligvis ikke er helt opdateret. Der gemmes højst {{PLURAL:$1|ét resultat|$1 resultater}} i cachen.',
 'perfcachedts' => 'Disse data stammer fra cachen, som senest blev opdateret $1. Der gemmes højst {{PLURAL:$4|ét resultat|$4 resultater}} i cachen.',
 'querypage-no-updates' => "'''Opdateringer til denne side er deaktiveret for øjeblikket. Dataene bliver indtil videre ikke fornyet.'''",
-'wrong_wfQuery_params' => 'Ugyldig parameter til wfQuery()<br />
-Funktion: $1<br />
-Forespørgsel: $2',
 'viewsource' => 'Vis kildetekst',
 'viewsource-title' => 'Se kildekoden til $1',
 'actionthrottled' => 'Begrænsning af handling',
@@ -697,7 +690,7 @@ Kontrollér stavemåden, eller [[Special:UserLogin/signup|opret en ny konto]].',
 'passwordtooshort' => 'Adgangskoden skal mindst være på $1 {{PLURAL:$1|tegn|tegn}}.',
 'password-name-match' => 'Adgangskoden må ikke være det samme som brugernavnet.',
 'password-login-forbidden' => 'Brugen af dette brugernavn og adgangskode er blevet forbudt.',
-'mailmypassword' => 'Send ny adgangskode',
+'mailmypassword' => 'Nulstil adgangskode',
 'passwordremindertitle' => 'Ny midlertidig adgangskode til {{SITENAME}}',
 'passwordremindertext' => 'Nogen (sandsynligvis dig, fra IP-adressen $1)
 har bedt om at vi sender dig en ny adgangskode til at logge på {{SITENAME}} ($4).
@@ -711,7 +704,7 @@ kan du bare ignorere denne e-mail og fortsætte med at bruge din gamle adgangsko
 'noemailcreate' => 'Du skal angive en gyldig e-mailadresse',
 'passwordsent' => 'En ny adgangskode er sendt til e-mailadressen, som er registreret for "$1".
 Du bør logge på og ændre din adgangskode straks efter du har modtaget e-mailen.',
-'blocked-mailpassword' => 'Din IP-adresse er spærret for ændring af sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
+'blocked-mailpassword' => 'Din IP-adresse er blokeret fra at redigere sider. For at forhindre misbrug, er det heller ikke muligt, at bestille en ny adgangskode.',
 'eauthentsent' => 'En e-mailbekræftelse er sendt til den angivne e-mailadresse.
 
 Før flere e-mails bliver sendt til kontoen, skal du følge instruktionerne i e-mailen, for at bekræfte at kontoen rent faktisk er din.',
@@ -749,7 +742,7 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'user-mail-no-body' => 'Forsøgte at sende en e-mail med tomt eller urimeligt kort indhold.',
 
 # Change password dialog
-'resetpass' => 'Skift adgangskode',
+'changepassword' => 'Skift adgangskode',
 'resetpass_announce' => 'Du loggede på med den via e-mail tilsendte adgangskode. For at afslutte tilmeldingen, skal du nu vælge en ny adgangskode.',
 'resetpass_text' => '<!-- Tilføj tekst her -->',
 'resetpass_header' => 'Skift adgangskode',
@@ -770,7 +763,7 @@ Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlerti
 # Special:PasswordReset
 'passwordreset' => 'Nulstil adgangskode',
 'passwordreset-text-one' => 'Udfyld denne formular for at nulstille din adgangskode.',
-'passwordreset-text-many' => '{{PLURAL:$1|Udfyld et af felterne nedenfor for at nulstille din adgangskode.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Udfyld et af felterne for at modtage en midlertidig adgangskode via e-mail.}}',
 'passwordreset-legend' => 'Nulstil adgangskode',
 'passwordreset-disabled' => 'Nulstilling af adgangskode er slået fra på denne wiki.',
 'passwordreset-emaildisabled' => 'E-mailfunktioner er slået fra på denne wiki.',
@@ -860,7 +853,7 @@ Du bør gøre det, hvis du ved et uheld deler dem med nogen, eller hvis din kont
 'missingcommentheader' => "'''Bemærk:''' Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"{{int:savearticle}}\" én gang til, gemmes dine ændringer uden overskrift/emne.",
 'summary-preview' => 'Forhåndsvisning af beskrivelsen:',
 'subject-preview' => 'Forhåndsvisning af emnet:',
-'blockedtitle' => 'Brugeren er blokeret',
+'blockedtitle' => 'Du eller din IP-adresse er blokeret',
 'blockedtext' => "'''Dit brugernavn eller din IP-adresse er blevet blokeret.'''
 
 Blokeringen er foretaget af $1.
@@ -893,7 +886,7 @@ Din nuværende IP-adresse er $3, og blokerings-id\'et er #$5.
 Angiv venligst alle de ovenstående detaljer ved eventuelle henvendelser.',
 'blockednoreason' => 'ingen begrundelse givet',
 'whitelistedittext' => 'Du skal $1 for at kunne redigere sider.',
-'confirmedittext' => 'Du skal først bekræfte e-mailadressen, før du kan lave ændringer. Udfyld og bekræft din e-mailadresse i dine [[Special:Preferences|indstillinger]].',
+'confirmedittext' => 'Du skal først bekræfte din e-mailadresse, før du kan redigere sider. Udfyld og bekræft din e-mailadresse i dine [[Special:Preferences|indstillinger]].',
 'nosuchsectiontitle' => 'Kan ikke finde afsnittet',
 'nosuchsectiontext' => 'Du forsøgte at ændre et afsnit der ikke findes. Det kan være flyttet eller slettet, siden du hentede siden.',
 'loginreqtitle' => 'Log på nødvendigt',
@@ -1064,7 +1057,12 @@ Kontroller venligst sammenligningen herunder for at bekræfte at det er hvad du
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Brugerkontoen kan ikke oprettes.',
-'cantcreateaccount-text' => "Oprettelsen af en brugerkonto fra IP-adressen <b>$1</b> er spærret af [[User:$3|$3]]. Årsagen til blokeringen er angivet som ''$2''",
+'cantcreateaccount-text' => "Oprettelsen af en brugerkonto fra IP-adressen ('''$1''') er blevet blokeret af [[User:$3|$3]].
+
+Årsagen til blokeringen er angivet af $3 som ''$2''",
+'cantcreateaccount-range-text' => "Oprettelsen af en brugerkonto fra IP-adresser i intervallet '''$1''', som omfatter din IP-adresse ('''$4'''), er blevet blokeret af [[User:$3|$3]].
+
+Årsagen angivet af $3 er ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vis loglister for denne side',
@@ -1131,10 +1129,6 @@ Du kan se denne forskel; der kan findes detaljer i [{{fullurl:{{#Special:Log}}/s
 'revisiondelete' => 'Slette/gendanne versioner',
 'revdelete-nooldid-title' => 'Ingen version angivet',
 'revdelete-nooldid-text' => 'Du har ikke angivet en version, som denne handling kan udføres på.',
-'revdelete-nologtype-title' => 'Ingen logtype er angivet',
-'revdelete-nologtype-text' => 'Du har ikke angivet en logtype at udføre denne handling på.',
-'revdelete-nologid-title' => 'Ugyldig logpost',
-'revdelete-nologid-text' => 'Du har ikke angivet en logpost at udføre denne funktion på eller den angivne post findes ikke.',
 'revdelete-no-file' => 'Den angivne fil findes ikke.',
 'revdelete-show-file-confirm' => 'Er du sikker på, at du vil vise en slettet version af filen "<nowiki>$1</nowiki>" fra den $2, klokken $3?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1168,8 +1162,6 @@ $1",
 'logdelete-failure' => "'''Kunne ikke ændre logsynligheden.'''
 $1",
 'revdel-restore' => 'ændre synlighed',
-'revdel-restore-deleted' => 'slettede redigeringer',
-'revdel-restore-visible' => 'synlige ændringer',
 'pagehist' => 'Sidehistorik',
 'deletedhist' => 'Slettet historik',
 'revdelete-hide-current' => 'Der er opstået en fejl under skjulningen af objektet dateret $1 klokken $2: Dette er den nyeste revision.
@@ -1249,12 +1241,8 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Søgeresultater',
 'searchresults-title' => 'Søgeresultater for "$1"',
-'searchresulttext' => 'For mere information om søgning på {{SITENAME}}, se [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Du søgte efter \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle sider som begynder med "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som henviser til "$1"]])',
-'searchsubtitleinvalid' => 'Til din søgning „$1“.',
 'toomanymatches' => 'Søgningen fandt for mange sider. Prøv venligst med en anden søgning.',
 'titlematches' => 'Artikeltitler der opfyldte forespørgslen',
-'notitlematches' => 'Ingen artikeltitler opfyldte forespørgslen',
 'textmatches' => 'Artikeltekster der opfyldte forespørgslen',
 'notextmatches' => 'Ingen artikeltekster opfyldte forespørgslen',
 'prevn' => 'forrige {{PLURAL:$1|$1}}',
@@ -1263,10 +1251,8 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => 'Næste $1 {{PLURAL:$1|resultat|resultater}}',
 'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
 'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Søgemuligheder',
 'searchmenu-exists' => "'''Der er en side med navnet \"[[:\$1]]\" på denne wiki'''",
 'searchmenu-new' => "'''Opret siden \"[[:\$1]]\" i denne wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynder med dette præfiks]]',
 'searchprofile-articles' => 'Indholdssider',
 'searchprofile-project' => 'Hjælpe- og projektsider',
 'searchprofile-images' => 'Multimedia',
@@ -1287,21 +1273,16 @@ Detaljer kan findes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-default' => '{{PLURAL:$1|et resultat|$1 resultater}}:',
 'search-interwiki-more' => '(mere)',
 'search-relatedarticle' => 'Relateret',
-'mwsuggest-disable' => 'Slå søgningsforslag fra',
 'searcheverything-enable' => 'Søg i alle navnerum',
 'searchrelated' => 'relateret',
 'searchall' => 'alle',
 'showingresults' => 'Nedenfor vises <b>$1</b> {{PLURAL:$1|resultat|resultater}} startende med nummer <b>$2</b>.',
 'showingresultsnum' => 'Herunder vises <b>$3</b> {{PLURAL:$3|resultat|resultater}} startende med nummer <b>$2</b>.',
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' af '''$3'''|Resultat '''$1 - $2''' af '''$3'''}} for '''$4'''",
-'nonefound' => "'''Bemærk''': Som standard søges der kun i bestemte navnerum.
-Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. diskussionssider, skabeloner osv.), eller brug det ønskede navnerum som præfiks.",
 'search-nonefound' => 'Søgningen gav ingen resultater.',
-'powersearch' => 'Søg',
 'powersearch-legend' => 'Avanceret søgning',
 'powersearch-ns' => 'Søg i navnerummene:',
 'powersearch-redir' => 'Vis omdirigeringer',
-'powersearch-field' => 'Søg efter',
 'powersearch-togglelabel' => 'Marker:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Ingen',
@@ -1314,10 +1295,9 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
 'mypreferences' => 'Indstillinger',
 'prefs-edits' => 'Antal redigeringer:',
 'prefsnologintext2' => 'Du skal $1 for at ændre brugerindstillinger.',
-'changepassword' => 'Skift adgangskode',
 'prefs-skin' => 'Udseende',
 'skin-preview' => 'Forhåndsvisning',
-'datedefault' => 'Ingen præference',
+'datedefault' => 'Standard',
 'prefs-beta' => 'Betafunktioner',
 'prefs-datetime' => 'Dato og klokkeslæt',
 'prefs-labs' => 'Testfunktioner',
@@ -1337,13 +1317,11 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
 'prefs-email' => 'Indstillinger for e-mail',
 'prefs-rendering' => 'Udseende',
 'saveprefs' => 'Gem indstillinger',
-'resetprefs' => 'Gendan indstillinger',
 'restoreprefs' => 'Gendan alle standardindstillinger (i alle sektioner)',
 'prefs-editing' => 'Redigering',
 'rows' => 'Rækker',
 'columns' => 'Kolonner',
 'searchresultshead' => 'Søgeresultater',
-'resultsperpage' => 'Resultater pr. side',
 'stub-threshold' => 'Grænse for visning af henvisning som <a href="#" class="stub">artikelstump</a>:',
 'stub-threshold-disabled' => 'Deaktiveret',
 'recentchangesdays' => 'Antal dage som skal vises i seneste ændringer:',
@@ -1358,7 +1336,6 @@ Hvis andre kender den, man vil være i stand til at læse din overvågningsliste
 'localtime' => 'Lokaltid:',
 'timezoneuseserverdefault' => "Brug wiki'ens standardindstilling ($1)",
 'timezoneuseoffset' => 'Anden (angiv forskel)',
-'timezoneoffset' => 'Forskel¹:',
 'servertime' => 'Serverens tid:',
 'guesstimezone' => 'Hent tidszone fra browseren',
 'timezoneregion-africa' => 'Afrika',
@@ -1371,7 +1348,7 @@ Hvis andre kender den, man vil være i stand til at læse din overvågningsliste
 'timezoneregion-europe' => 'Europa',
 'timezoneregion-indian' => 'Indiske Ocean',
 'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillad e-mails fra andre brugere',
+'allowemail' => 'Tillad e-mail fra andre brugere',
 'prefs-searchoptions' => 'Søg',
 'prefs-namespaces' => 'Navnerum',
 'defaultns' => 'Ellers søg i disse navnerum:',
@@ -1394,8 +1371,8 @@ Det kan ikke gøres om.',
 'prefs-help-variant' => 'Den sprogvariant eller retskrivning, som du foretrækker, at denne wikis indholdssider vises i.',
 'yournick' => 'Signatur:',
 'prefs-help-signature' => 'Kommentarer på diskussionssider bør signeres med "<nowiki>~~~~</nowiki>" som vil blive konverteret til din signatur og et tidsstempel.',
-'badsig' => 'Syntaksen i underskriften er ugyldig; kontroller venligst den brugte HTML.',
-'badsiglength' => 'Din signatur er for lang. Den må højst indeholde {{PLURAL:$1|}}$1 tegn.',
+'badsig' => 'Syntaksen i signaturen er ugyldig; kontroller venligst den brugte HTML.',
+'badsiglength' => 'Din signatur er for lang. Den må højst indeholde $1 {{PLURAL:$1|tegn}}.',
 'yourgender' => 'Hvordan foretrækker du at blive beskrevet?',
 'gender-unknown' => 'Jeg foretrækker ikke at specificere',
 'gender-male' => 'Han redigerer wikisider',
@@ -1415,7 +1392,7 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'prefs-dateformat' => 'Formatering af datoer',
 'prefs-timeoffset' => 'Tidsforskel',
 'prefs-advancedediting' => 'Generelle indstillinger',
-'prefs-editor' => 'Redaktør',
+'prefs-editor' => 'Redigeringsprogrammet',
 'prefs-preview' => 'Forhåndsvisning',
 'prefs-advancedrc' => 'Avancerede indstillinger',
 'prefs-advancedrendering' => 'Avancerede indstillinger',
@@ -1427,6 +1404,7 @@ Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit
 'prefs-tokenwatchlist' => 'Mærke',
 'prefs-diffs' => 'Forskelle',
 'prefs-help-prefershttps' => 'Denne indstilling træder i kraft næste gang du logger på.',
+'prefs-tabs-navigation-hint' => 'Tip: Du kan bruge venstre og højre piletasterne til at navigere mellem fanerne i fanelisten.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-mailadressen ser ud til at være gyldig',
@@ -1614,8 +1592,9 @@ Vær venlig at gennemse og bekræft dine ændringer.',
 'recentchanges-label-bot' => 'Denne redigering blev udført af en bot',
 'recentchanges-label-unpatrolled' => 'Denne redigering er endnu ikke blevet patruljeret',
 'recentchanges-label-plusminus' => 'Størrelsen på siden blev ændret med dette antal bytes',
+'recentchanges-legend-heading' => "'''Forklaring:'''",
 'recentchanges-legend-newpage' => '(se også [[Special:NewPages|listen over nye sider]])',
-'rcnote' => "Herunder ses {{PLURAL:$1|'''1''' ændring|de sidste '''$1''' ændringer}} fra {{PLURAL:$2|i dag|de sidste '''$2''' dage}} fra den $4, kl. $5.",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
 'rclistfrom' => 'Vis nye ændringer startende fra $1',
 'rcshowhideminor' => '$1 mindre ændringer',
@@ -1735,6 +1714,8 @@ Hvis du fortsat vil lægge filen op, bedes du gå tilbage og bruge et nyt navn.
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Denne fil er en bublet af {{PLURAL:$1|den nedenstående fil|de nedenstående $1 filer}}:',
 'file-deleted-duplicate' => 'En fil identisk med denne fil ([[:$1]]) er tidligere blevet slettet. Du bør tjekke den fils sletningshistorik før du prøver at genoplægge den.',
+'file-deleted-duplicate-notitle' => 'En fil, der er identisk med denne fil er tidligere blevet slettet, og titlen er blevet undertrykt.
+Du bør spørge en person med evnen til at se undertrykte fildata for at gennemgå situationen inden du fortsætter med at uploade den igen.',
 'uploadwarning' => 'Advarsel',
 'uploadwarning-text' => 'Vær venlig at ændre filbeskrivelsen nedenfor og prøv igen.',
 'savefile' => 'Gem fil',
@@ -1931,7 +1912,7 @@ For optimal sikkerhed er img_auth.php deaktiveret.",
 'filehist-comment' => 'Kommentar',
 'filehist-missing' => 'Fil mangler',
 'imagelinks' => 'Filanvendelse',
-'linkstoimage' => '{{Plural:$1|Den følgende side|De følgende $1 sider}} henviser til denne fil:',
+'linkstoimage' => '{{PLURAL:$1|Den følgende side|De følgende $1 sider}} henviser til denne fil:',
 'linkstoimage-more' => 'Flere end $1 {{PLURAL:$1|side|sider}} henviser til denne fil.
 Den følgende liste viser kun {{PLURAL:$1|den første henvisning|de $1 første henvisninger}}.
 En [[Special:WhatLinksHere/$2|komplet liste]] er tilgængelig.',
@@ -2058,7 +2039,7 @@ Hver linje indeholder henvisninger til den første og den anden omdirigering, s
 
 'brokenredirects' => 'Defekte omdirigeringer',
 'brokenredirectstext' => 'Følgende omdirigeringer peger på en side der ikke eksisterer:',
-'brokenredirects-edit' => 'rediger',
+'brokenredirects-edit' => 'redigér',
 'brokenredirects-delete' => 'slet',
 
 'withoutinterwiki' => 'Sider uden henvisninger til andre sprog',
@@ -2074,6 +2055,7 @@ Hver linje indeholder henvisninger til den første og den anden omdirigering, s
 'ninterwikis' => '$1 {{PLURAL:$1|interwikilink|interwikilinks}}',
 'nlinks' => '{{PLURAL:$1|1 henvisning|$1 henvisninger}}',
 'nmembers' => '$1 {{PLURAL:$1|medlem|medlemmer}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|medlem|medlemmer}}',
 'nrevisions' => '{{PLURAL:$1|1 ændring|$1 ændringer}}',
 'nviews' => '{{PLURAL:$1|1 visning|$1 visninger}}',
 'nimagelinks' => 'Brugt på $1 {{PLURAL:$1|side|sider}}',
@@ -2102,20 +2084,19 @@ Hver linje indeholder henvisninger til den første og den anden omdirigering, s
 'mostimages' => 'Mest brugte filer',
 'mostinterwikis' => 'Sider med flest interwikilinks',
 'mostrevisions' => 'Sider med de fleste ændringer',
-'prefixindex' => 'Alle sider med præfiks',
-'prefixindex-namespace' => 'Alle sider med præfiks (navnerummet $1)',
+'prefixindex' => 'Alle sider der begynder med',
+'prefixindex-namespace' => 'Alle sider (i navnerummet $1) der begynder med',
 'prefixindex-strip' => 'Strip præfiks i listen',
 'shortpages' => 'Korte sider',
 'longpages' => 'Lange sider',
 'deadendpages' => 'Blindgydesider',
 'deadendpagestext' => 'De følgende sider henviser ikke til andre sider i denne wiki.',
 'protectedpages' => 'Skrivebeskyttede sider',
-'protectedpages-indef' => 'Kun beskyttelser uden udløbadato',
+'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
 'protectedpages-cascade' => 'Kun nedarvende beskyttelser',
-'protectedpagestext' => 'De følgende sider er beskyttede mod redigering og flytning.',
+'protectedpages-noredirect' => 'Skjul omdirigeringer',
 'protectedpagesempty' => 'I øjeblikket er ingen sider beskyttet på denne måde.',
 'protectedtitles' => 'Beskyttede sidenavne',
-'protectedtitlestext' => 'Disse sidenavne er beskyttet mod at blive oprettet',
 'protectedtitlesempty' => 'Der er ingen sidetitler der er beskyttet med disse parametre.',
 'listusers' => 'Brugerliste',
 'listusers-editsonly' => 'Vis kun brugere med redigeringer',
@@ -2167,11 +2148,8 @@ Du kan afgrænse visningen ved at vælge en logtype, brugernavn eller påvirket
 'allpagesto' => 'Vis sider til og med:',
 'allarticles' => 'Alle sider',
 'allinnamespace' => 'Alle sider (i $1 navnerummet)',
-'allnotinnamespace' => 'Alle sider (ikke i $1 navnerummet)',
-'allpagesprev' => 'Forrige',
-'allpagesnext' => 'Næste',
 'allpagessubmit' => 'Vis',
-'allpagesprefix' => 'Vis sider med præfiks:',
+'allpagesprefix' => 'Vis sider der begynder med:',
 'allpagesbadtitle' => 'Det indtastede sidenavn er ugyldigt: Det har enten et foranstillet sprog-, en Interwiki-forkortelse eller indeholder et eller flere tegn, som ikke må anvendes i sidenavne.',
 'allpages-bad-ns' => 'Navnerummet $1 findes ikke på {{SITENAME}}.',
 'allpages-hide-redirects' => 'Skjul omdirigeringer',
@@ -2250,7 +2228,7 @@ Der findes muligvis [[{{MediaWiki:Listgrouprights-helppage}}|yderligere informat
 'emailuser-title-notarget' => 'Send e-mail til en bruger',
 'emailpage' => 'E-mail bruger',
 'emailpagetext' => 'Du kan bruge formularen nedenfor til at sende en e-mail til denne {{GENDER:$1|bruger}}.
-Den e-mail-adresse, du har angivet i [[Special:Preferences|dine indstillinger]], vil dukke op i "fra"-feltet på e-mailen, så modtageren kan svare dig.',
+Den e-mailadresse, du har angivet i [[Special:Preferences|dine indstillinger]], vil dukke op i "fra"-feltet på e-mailen, så modtageren kan svare dig.',
 'usermailererror' => 'E-mail-modulet returnerede en fejl:',
 'defemailsubject' => '{{SITENAME}}-e-mail fra brugeren "$1"',
 'usermaildisabled' => 'Bruger-e-mail deaktiveret',
@@ -2340,9 +2318,9 @@ 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 for de sider, du overvåger.
+Du vil ikke modtage flere beskeder om yderligere aktivitet medmindre du besøger denne side. På din overvågningsliste kan du også nulstille alle markeringer for de sider, du overvåger.
 
-             Med venlig hilsen {{SITENAME}}s informationssystem
+         Med venlig hilsen {{SITENAME}}s informationssystem
 
 --
 For at ændre dine indstillinger for e-mail meddelelser, besøg
@@ -2390,6 +2368,7 @@ Bekræft venligst at du virkelig vil gøre dette, at du forstår konsekvenserne,
 'delete-edit-reasonlist' => 'Rediger sletningsårsager',
 'delete-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}}. Sletning af sådanne sider er begrænset, for at forhindre utilsigtet forstyrrelse af {{SITENAME}}.',
 'delete-warning-toobig' => 'Denne side har en stor historik, over {{PLURAL:$1|en version|$1 versioner}} versioner, slettes den kan det forstyrre driften af {{SITENAME}}, gå forsigtigt frem.',
+'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider linker til den side, du er ved at slette.",
 
 # Rollback
 'rollback' => 'Fjern redigeringer',
@@ -2435,7 +2414,8 @@ Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sideb
 'protect_expiry_old' => 'Udløbstiden ligger i fortiden.',
 'protect-unchain-permissions' => 'Lås yderligere beskyttelsesindstillinger op',
 'protect-text' => "Her kan beskyttelsesstatus for siden '''$1''' ses og ændres.",
-'protect-locked-blocked' => "Du kan ikke ændre sidens status, da din brugerkonto er spærret. Her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
+'protect-locked-blocked' => "Du kan ikke ændre sidens status, da din brugerkonto er blokeret.
+Her er de aktuelle beskyttelsesindstillinger for siden '''$1''':",
 'protect-locked-dblock' => "Databasen er spærret, sidebeskyttelsen kan derfor ikke ændres. her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
 'protect-locked-access' => "Den brugerkonto har ikke de nødvendige rettigheder til at ændre sidebeskyttelsen. Her er de aktuelle beskyttelsesindstillinger for siden '''„$1“:'''",
 'protect-cascadeon' => 'Denne side er del af en nedarvet skrivebeskyttelse. Wen er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse" Sidebeskyttelsen kan ændres for denne side, det påvirker dog ikke kaskadespærringen:',
@@ -2468,10 +2448,10 @@ Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sideb
 'pagesize' => '(bytes)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'Redigér',
-'restriction-move' => 'flytte',
+'restriction-edit' => 'Redigering',
+'restriction-move' => 'Flytning',
 'restriction-create' => 'oprette',
-'restriction-upload' => 'oplægge',
+'restriction-upload' => 'Oplægning',
 
 # Restriction levels
 'restriction-level-sysop' => 'fuldt beskyttet',
@@ -2503,12 +2483,11 @@ Teksten i de slettede versioner er kun tilgængelig for administratorer.',
 'undeletebtn' => 'Gendan',
 'undeletelink' => 'vis/gendan',
 'undeleteviewlink' => 'vis',
-'undeletereset' => 'Afbryd',
 'undeleteinvert' => 'Omvend valget af versioner',
 'undeletecomment' => 'Begrundelse:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|version|versioner}} gendannet',
-'undeletedrevisions-files' => '$1 {{plural:$1|version|versioner}} og $2 {{plural:$2|fil|filer}} gendannet',
-'undeletedfiles' => '$1 {{plural:$1|fil|filer}} gendannet',
+'undeletedrevisions-files' => '$1 {{PLURAL:$1|version|versioner}} og $2 {{PLURAL:$2|fil|filer}} gendannet',
+'undeletedfiles' => '$1 {{PLURAL:$1|fil|filer}} gendannet',
 'cannotundelete' => 'Gendannelse mislykkedes:
 $1',
 'undeletedpage' => "'''$1''' blev gendannet.
@@ -2591,7 +2570,6 @@ Den seneste post i blokeringsloggen vises nedenfor:',
 'block' => 'Bloker bruger',
 'unblock' => 'Ophæv blokering af bruger',
 'blockip' => 'Bloker bruger',
-'blockip-title' => 'Bloker bruger',
 'blockip-legend' => 'Bloker bruger',
 'blockiptext' => 'Brug formularen herunder til at blokere for skriveadgang fra en bestemt IP-adresse eller et brugernavn.
 Dette bør kun gøres for at forhindre vandalisme og skal være i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].
@@ -2599,7 +2577,6 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
 'ipadressorusername' => 'IP-adresse eller brugernavn',
 'ipbexpiry' => 'varighed',
 'ipbreason' => 'Begrundelse:',
-'ipbreasonotherlist' => 'Anden begrundelse',
 'ipbreason-dropdown' => '*Generelle begrundelser
 ** Indsættelse af forkerte oplysninger
 ** Fjernelse af korrekt indhold
@@ -2615,8 +2592,6 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
 'ipbsubmit' => 'Bloker denne bruger',
 'ipbother' => 'Anden varighed (engelsk)',
 'ipboptions' => '2 timer:2 hours,1 dag:1 day,3 dage:3 days,1 uge:1 week,2 uger:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,ubegrænset:infinite',
-'ipbotheroption' => 'Anden varighed',
-'ipbotherreason' => 'Anden/uddybende begrundelse',
 'ipbhidename' => 'Skjul brugernavnet i redigeringer og lister',
 'ipbwatchuser' => 'Overvåg denne brugers brugerside og diskussionsside.',
 'ipb-disableusertalk' => 'Forhindr denne bruger i at redigere sin egen brugerdiskussion under blokeringen',
@@ -2650,7 +2625,7 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'blocklist-target' => 'Mål',
 'blocklist-expiry' => 'Udløber',
 'blocklist-by' => 'Blokerende administrator',
-'blocklist-params' => 'Block parametre',
+'blocklist-params' => 'Parametre for blokeringen',
 'blocklist-reason' => 'Årsag',
 'ipblocklist-submit' => 'Søg',
 'ipblocklist-localblock' => 'Lokal blokering',
@@ -2658,8 +2633,8 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'infiniteblock' => 'udløber ikke',
 'expiringblock' => 'udløber $1 $2',
 'anononlyblock' => 'kun anonyme',
-'noautoblockblock' => 'Autoblok deaktiveret',
-'createaccountblock' => 'Oprettelse af brugerkonti spærret',
+'noautoblockblock' => 'automatisk blokering slået fra',
+'createaccountblock' => 'oprettelse af konto deaktiveret',
 'emailblock' => 'e-mail blokeret',
 'blocklist-nousertalk' => 'kan ikke redigere egen diskussionsside',
 'ipblocklist-empty' => 'Blokeringslisten er tom.',
@@ -2672,22 +2647,22 @@ Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
 'autoblocker' => 'Du er automatisk blokeret, fordi du deler IP-adresse med "[[User:$1|$1]]".
 Begrundelse: "$2".',
 'blocklogpage' => 'Blokeringslog',
-'blocklog-showlog' => 'Denne bruger er tidligere blevet blokeret.
+'blocklog-showlog' => 'Denne bruger har tidligere været blokeret.
 Blokeringsloggen vises nedenfor som reference:',
 'blocklog-showsuppresslog' => 'Denne bruger har tidligere været blokeret og skjult.
 Skjulningsloggen vises nedenfor som reference:',
-'blocklogentry' => 'blokerede [[$1]] med en varighed på $2 $3',
-'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med en varighed $2 $3',
+'blocklogentry' => 'blokerede [[$1]] med $2 som udløbstid $3',
+'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med $2 som udløbstid $3',
 'blocklogtext' => 'Dette er en liste med blokerede brugere og ophævede blokeringer af brugere.
 Automatisk blokerede IP-adresser er ikke anført her.
 Se [[Special:BlockList|blokeringslisten]] for den nuværende liste med aktuelle blokeringer.',
 'unblocklogentry' => 'ophævede blokering af "$1"',
 'block-log-flags-anononly' => 'kun anonyme',
-'block-log-flags-nocreate' => 'Oprettelse af brugerkonti blokeret',
-'block-log-flags-noautoblock' => 'Autoblok deaktiveret',
+'block-log-flags-nocreate' => 'oprettelse af konto deaktiveret',
+'block-log-flags-noautoblock' => 'automatisk blokering slået fra',
 'block-log-flags-noemail' => 'e-mail blokeret',
 'block-log-flags-nousertalk' => 'kan ikke redigere egen diskussionsside',
-'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået tilenhanced autoblock enabled',
+'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået til',
 'block-log-flags-hiddenname' => 'brugernavnet er skjult',
 'range_block_disabled' => 'Sysop-muligheden for at oprette blokeringsklasser er slået fra.',
 'ipb_expiry_invalid' => 'Udløbstiden er ugyldig.',
@@ -2706,7 +2681,6 @@ Se [[Special:BlockList|blokeringslisten]] for den nuværende liste med aktuelle
 'sorbsreason' => 'IP-adressen er opført i DNSBL på {{SITENAME}} som åben PROXY.',
 'sorbs_create_account_reason' => 'IP-adressen er opført i DNSBL på {{SITENAME}} som åben PROXY. Oprettelse af nye brugere er ikke mulig.',
 'xffblockreason' => 'En IP-adresse der er indeholdt i X-Fremsendt-Til hovedet, enten din egen eller en på en proxy-server, du bruger, er blevet blokeret. Den oprindelige grund til blokeringen var:$1',
-'cant-block-while-blocked' => 'Du kan ikke blokkere andre brugere mens du selv er blokkeret.',
 'cant-see-hidden-user' => 'Brugeren du prøver at blokerer er allerede blokeret og skjult. Siden du ikke har rettigheden til at skjule brugere, kan du ikke se eller ændre brugerens blokering.',
 'ipbblocked' => 'Du kan ikke ændre blokeringer, da du selv er blokeret',
 'ipbnounblockself' => 'Du kan ikke ophæve blokeringen af dig selv',
@@ -2761,7 +2735,6 @@ du skal være sikker på at du forstår konsekvenserne af dette før du fortsæt
 I disse tilfælde er du nødt til at flytte eller sammenflette siden manuelt.",
 'movearticle' => 'Flyt side',
 'moveuserpage-warning' => "'''Advarsel:''' Du er ved at flytte en brugerside. Bemærk at det kun er siden, der vil blive flyttet – brugeren bliver ''ikke'' omdøbt.",
-'movenologin' => 'Ikke logget på',
 'movenologintext' => 'Du skal være registreret bruger og [[Special:UserLogin|logget på]] for at flytte en side.',
 'movenotallowed' => 'Du har ikke rettigheder til at flytte sider.',
 'movenotallowedfile' => 'Du har ikke tilladelse til at flytte filer.',
@@ -2774,11 +2747,9 @@ I disse tilfælde er du nødt til at flytte eller sammenflette siden manuelt.",
 'movepage-moved' => 'Siden \'\'\'"$1" er flyttet til "$2"\'\'\'',
 'movepage-moved-redirect' => 'En omdirigering er oprettet.',
 'movepage-moved-noredirect' => 'Der oprettedes ikke en omdirigering.',
-'articleexists' => 'En side med det navn eksisterer allerede, eller det
+'articleexists' => 'En side med dette navn eksisterer allerede, eller det
 navn du har valgt er ikke gyldigt. Vælg et andet navn.',
 'cantmove-titleprotected' => 'Du kan ikke omdøbe en side til dette navn. Det nye navn er beskyttet mod oprettelse.',
-'talkexists' => 'Siden blev flyttet korrekt, men den tilhørende diskussionsside kunne ikke flyttes, fordi der allerede eksisterer en med den nye titel. Du er nødt til at flette dem sammen manuelt.',
-'movedto' => 'flyttet til',
 'movetalk' => 'Flyt også "diskussionssiden", hvis den eksisterer.',
 'move-subpages' => 'Flyt undersider (op til $1)',
 'move-talk-subpages' => 'Flyt diskussionssidens undersider (op til $1)',
@@ -2869,7 +2840,7 @@ $2',
 'djvu_no_xml' => 'XML-data kan ikke hentes til DjVu-filen',
 'thumbnail-temp-create' => 'Kunne ikke oprette midlertidig miniaturefil',
 'thumbnail-dest-create' => 'Kunne ikke gemme miniaturebillede til destinationen',
-'thumbnail_invalid_params' => 'Ugyldige thumbnail-parametre',
+'thumbnail_invalid_params' => 'Ugyldige parametre for miniaturebillede',
 'thumbnail_dest_directory' => 'Kataloget kan ikke oprettes.',
 'thumbnail_image-type' => 'Billedtypen understøttes ikke',
 'thumbnail_gd-library' => 'Ufuldstændig konfiguration af GD-biblioteket: funktionen $1 mangler',
@@ -3171,10 +3142,10 @@ Du kan beskadige dit system hvis du udfører den.",
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'hours-abbrev' => '$1t',
-'seconds' => '{{PLURAL: $1|$1 sekund|$1 sekunder}}',
-'minutes' => '{{PLURAL: $1|$1 minut|$1 minutter}}',
-'hours' => '{{PLURAL: $1|$1 time|$1 timer}}',
-'days' => '{{PLURAL: $1|$1 dag|$1 dage}}',
+'seconds' => '{{PLURAL:$1|$1 sekund|$1 sekunder}}',
+'minutes' => '{{PLURAL:$1|$1 minut|$1 minutter}}',
+'hours' => '{{PLURAL:$1|$1 time|$1 timer}}',
+'days' => '{{PLURAL:$1|$1 dag|$1 dage}}',
 'weeks' => '{{PLURAL:$1|$1 uge|$1 uger}}',
 'months' => '{{PLURAL:$1|$1 måned|$1 måneder}}',
 'years' => '{{PLURAL:$1|$1 år}}',
@@ -3610,23 +3581,18 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
 'exif-urgency-high' => 'Høj ($1)',
 'exif-urgency-other' => 'Bruger-defineret prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Rediger denne fil med en ekstern editor',
-'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors setup instruktionerne] for mere information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
 'monthsall' => 'alle',
-'limitall' => 'alle',
 
 # Email address confirmation
 'confirmemail' => 'Bekræft e-mailadresse',
-'confirmemail_noemail' => 'Du har ikke angivet en gyldig e-mailadresse i din [[Special:Preferences|brugerprofil]].',
+'confirmemail_noemail' => 'Du har ikke angivet en gyldig e-mailadresse i dine [[Special:Preferences|indstillinger]].',
 'confirmemail_text' => '{{SITENAME}} kræver, at du bekræfter en e-mailadresse (autentificering), før du kan bruge de udvidede e-mailfunktioner. Med et klik på kontrolfeltet forneden sendes en e-mail til dig. Denne e-mail indeholder et link med en bekræftelseskode. Med et klik på dette link bekræftes, at e-mailadressen er gyldig.',
 'confirmemail_pending' => 'En bekræftelsesmail er allerede sendt til dig. Hvis du først for nylig har oprettet brugerkontoen, vent da et par minutter på denne e-mail, før du bestiller en ny kode.',
 'confirmemail_send' => 'Send bekræftelseskode',
-'confirmemail_sent' => 'Bekræftelses-e-mail afsendt.',
+'confirmemail_sent' => 'Bekræftelsesmail afsendt.',
 'confirmemail_oncreate' => 'En bekræftelseskode er sendt til din e-mailadresse. Denne kode skal ikke bruges til at logge på, den kræves til aktivering af e-mailfunktionerne i Wikien.',
 'confirmemail_sendfailed' => '{{SITENAME}} kunne ikke afsende din bekræftelsesmail.
 Kontroller at e-mailadressen er korrekt.
@@ -3637,7 +3603,6 @@ Besked fra mailserveren: $1',
 'confirmemail_success' => 'E-mailadressen er blevet bekræftet.
 Du kan nu [[Special:UserLogin|logge på]].',
 'confirmemail_loggedin' => 'Din e-mailadresse er nu bekræftet.',
-'confirmemail_error' => 'Der skete en fejl under lagring af din bekræftelse.',
 'confirmemail_subject' => '[{{SITENAME}}] - bekræftelse af e-mailadresse',
 'confirmemail_body' => 'Hej,
 
@@ -3712,6 +3677,11 @@ Bekræft venligst, at du virkelig vil oprette denne side igen.",
 'imgmultigo' => 'OK',
 'imgmultigoto' => 'Gå til side $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standardsprog)',
+'img-lang-info' => 'Gengiv dette billede på $1. $2',
+'img-lang-go' => 'Udfør',
+
 # Table pager
 'ascending_abbrev' => 'op',
 'descending_abbrev' => 'ned',
@@ -3725,10 +3695,10 @@ Bekræft venligst, at du virkelig vil oprette denne side igen.",
 'table_pager_empty' => 'Ingen resultater',
 
 # Auto-summaries
-'autosumm-blank' => 'Tømmer siden',
-'autosumm-replace' => "Sidens indhold blev erstattet med: '$1'",
+'autosumm-blank' => 'Tømmer siden for indhold',
+'autosumm-replace' => 'Erstatter sidens indhold med "$1"',
 'autoredircomment' => 'Omdirigering til [[$1]] oprettet',
-'autosumm-new' => "Oprettede siden med '$1'",
+'autosumm-new' => 'Oprettede siden med "$1"',
 
 # Live preview
 'livepreview-loading' => 'Indlæser …',
@@ -3775,10 +3745,10 @@ Du kan også [[Special:EditWatchlist|bruge standard editoren]].',
 'duplicate-defaultsort' => 'Advarsel: Standardsorteringsnøglen "$2" tilsidesætter den tidligere sorteringsnøgle "$1".',
 
 # Special:Version
-'version' => 'Version',
+'version' => 'Information om MediaWiki',
 'version-extensions' => 'Installerede udvidelser',
 'version-specialpages' => 'Specialsider',
-'version-parserhooks' => 'Oversætter-funktioner',
+'version-parserhooks' => 'Parserfunktioner',
 'version-variables' => 'Variabler',
 'version-antispam' => 'Spamforebyggelse',
 'version-skins' => 'Udseender',
@@ -3786,11 +3756,18 @@ Du kan også [[Special:EditWatchlist|bruge standard editoren]].',
 'version-mediahandlers' => 'Specialhåndtering af mediefiler',
 'version-hooks' => 'Funktionstilføjelser',
 'version-parser-extensiontags' => 'Tilføjede tags',
-'version-parser-function-hooks' => 'Oversætter-funktioner',
+'version-parser-function-hooks' => 'Parserfunktioner',
 'version-hook-name' => 'Navn',
 'version-hook-subscribedby' => 'Brugt af',
 'version-version' => '(Version $1)',
-'version-license' => 'Licens',
+'version-license' => 'MediaWiki Licens',
+'version-ext-license' => 'Licens',
+'version-ext-colheader-name' => 'Udvidelse',
+'version-ext-colheader-license' => 'Licens',
+'version-ext-colheader-description' => 'Beskrivelse',
+'version-ext-colheader-credits' => 'Forfattere',
+'version-license-title' => 'Licens for $1',
+'version-license-not-found' => 'Ingen detaljerede licensoplysninger blev fundet for denne udvidelse.',
 'version-poweredby-credits' => "Denne wiki er drevet af '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'andre',
 'version-poweredby-translators' => 'translatewiki.net oversættere',
@@ -3808,13 +3785,14 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Omdirigering pga. fil, bruger eller udgave ID',
+'redirect' => 'Omdirigering pga. fil, bruger-, side- eller udgave-ID',
 'redirect-legend' => 'Omstilling til en fil eller en side',
-'redirect-summary' => "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
-'redirect-submit' => 'Kør',
+'redirect-summary' => "Denne specialside omdirigerer til en fil (hvis filnavnet er angivet), en side (hvis udgave ID'et eller side ID'et er angivet) eller en brugerside (hvis et numerisk brugernummer er angivet). Eksempler på brug: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] eller [[{{#Special:Redirect}}/user/101]].",
+'redirect-submit' => 'Vis',
 'redirect-lookup' => 'Slå op:',
 'redirect-value' => 'Værdi:',
 'redirect-user' => 'Bruger ID',
+'redirect-page' => 'Side-ID',
 'redirect-revision' => 'Sideversion',
 'redirect-file' => 'Filnavn',
 'redirect-not-exists' => 'Værdi ej fundet',
@@ -3880,7 +3858,6 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 
 # Special:ComparePages
 'comparepages' => 'Sammenlign sider',
-'compare-selector' => 'Sammenlign sideversioner',
 'compare-page1' => 'Side 1',
 'compare-page2' => 'Side 2',
 'compare-rev1' => 'Version 1',
@@ -3909,7 +3886,7 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
 'htmlform-int-toohigh' => 'Den angivne værdi er over maksimumsværdien på $1',
 'htmlform-required' => 'Denne værdi skal angives',
 'htmlform-submit' => 'Gem',
-'htmlform-reset' => 'Annuller ændringer',
+'htmlform-reset' => 'Fortryd ændringer',
 'htmlform-selectorother-other' => 'Anden',
 'htmlform-no' => 'Nej',
 'htmlform-yes' => 'Ja',
@@ -4055,10 +4032,12 @@ Faktisk udfolder den stort set alt i dobbelte tuborgklammer.',
 'expand_templates_input' => 'Inputtekst:',
 'expand_templates_output' => 'Resultat',
 'expand_templates_xml_output' => 'XML-kode',
+'expand_templates_html_output' => 'Rå HTML-output',
 'expand_templates_ok' => 'Udfold',
 'expand_templates_remove_comments' => 'Fjern kommentarer',
 'expand_templates_remove_nowiki' => 'Undertryk <nowiki>-tags i resultatet',
 'expand_templates_generate_xml' => 'Vis analysetræ som XML',
+'expand_templates_generate_rawhtml' => 'Vis rå HTML',
 'expand_templates_preview' => 'Forhåndsvisning',
 
 );
index 40607b0..7a6c6a3 100644 (file)
@@ -72,6 +72,7 @@
  * @author W (aka Wuzur)
  * @author Wikifan
  * @author Wikinaut
+ * @author Wnme
  * @author Xqt
  * @author Ziko
  * @author Zylbath
@@ -111,12 +112,12 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Aktive_Benutzer' ),
        'Allmessages'               => array( 'MediaWiki-Systemnachrichten', 'Systemnachrichten' ),
+       'AllMyUploads'              => array( 'Alle_meine_Dateien' ),
        'Allpages'                  => array( 'Alle_Seiten' ),
        'Ancientpages'              => array( 'Älteste_Seiten' ),
        'Badtitle'                  => array( 'Ungültiger_Seitenname' ),
        'Blankpage'                 => array( 'Leerseite', 'Leere_Seite' ),
        'Block'                     => array( 'Sperren' ),
-       'Blockme'                   => array( 'Proxy-Sperre' ),
        'Booksources'               => array( 'ISBN-Suche' ),
        'BrokenRedirects'           => array( 'Defekte_Weiterleitungen', 'Kaputte_Weiterleitungen' ),
        'Categories'                => array( 'Kategorien' ),
@@ -128,10 +129,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Benutzerkonto_anlegen' ),
        'Deadendpages'              => array( 'Sackgassenseiten' ),
        'DeletedContributions'      => array( 'Gelöschte_Beiträge' ),
-       'Disambiguations'           => array( 'Begriffsklärungsverweise' ),
        'DoubleRedirects'           => array( 'Doppelte_Weiterleitungen' ),
        'EditWatchlist'             => array( 'Beobachtungsliste_bearbeiten' ),
        'Emailuser'                 => array( 'E-Mail_senden', 'Mailen', 'E-Mail' ),
+       'ExpandTemplates'           => array( 'Vorlagen_expandieren' ),
        'Export'                    => array( 'Exportieren' ),
        'Fewestrevisions'           => array( 'Wenigstbearbeitete_Seiten' ),
        'FileDuplicateSearch'       => array( 'Dateiduplikatsuche', 'Datei-Duplikat-Suche' ),
@@ -176,10 +177,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Geschützte_Seiten' ),
        'Protectedtitles'           => array( 'Geschützte_Titel', 'Gesperrte_Titel' ),
        'Randompage'                => array( 'Zufällige_Seite' ),
+       'RandomInCategory'          => array( 'Zufällige_Seite_in_Kategorie' ),
        'Randomredirect'            => array( 'Zufällige_Weiterleitung' ),
        'Recentchanges'             => array( 'Letzte_Änderungen' ),
        'Recentchangeslinked'       => array( 'Änderungen_an_verlinkten_Seiten' ),
        'Redirect'                  => array( 'Weiterleitung' ),
+       'ResetTokens'               => array( 'Tokens_zurücksetzen' ),
        'Revisiondelete'            => array( 'Versionslöschung' ),
        'Search'                    => array( 'Suche' ),
        'Shortpages'                => array( 'Kürzeste_Seiten' ),
@@ -278,6 +281,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'zentriert', 'center', 'centre' ),
        'img_framed'                => array( '1', 'gerahmt', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'rahmenlos', 'frameless' ),
+       'img_lang'                  => array( '1', 'sprache=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'seite=$1', 'seite_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'hochkant', 'hochkant=$1', 'hochkant_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'rand', 'border' ),
@@ -318,6 +322,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'REVISIONSJAHR', 'VERSIONSJAHR', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'REVISIONSZEITSTEMPEL', 'VERSIONSZEITSTEMPEL', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'REVISIONSBENUTZER', 'VERSIONSBENUTZER', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'VERSIONSGRÖSSE', 'REVISIONSIZE' ),
        'fullurl'                   => array( '0', 'VOLLSTÄNDIGE_URL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'VOLLSTÄNDIGE_URL_C:', 'FULLURLE:' ),
        'canonicalurl'              => array( '0', 'KANONISCHE_URL:', 'CANONICALURL:' ),
@@ -440,7 +445,6 @@ $messages = array(
 'tog-minordefault' => 'Eigene Änderungen standardmäßig als geringfügig markieren',
 'tog-previewontop' => 'Vorschau oberhalb des Bearbeitungsfensters anzeigen',
 'tog-previewonfirst' => 'Beim ersten Bearbeiten immer die Vorschau anzeigen',
-'tog-nocache' => 'Seitencache des Browsers deaktivieren',
 'tog-enotifwatchlistpages' => 'Bei Änderungen an beobachteten Seiten oder Dateien E-Mails senden',
 'tog-enotifusertalkpages' => 'Bei Änderungen an meiner Benutzer-Diskussionsseite E-Mails senden',
 'tog-enotifminoredits' => 'Auch bei kleinen Änderungen an Seiten und Dateien E-Mails senden',
@@ -576,7 +580,6 @@ $messages = array(
 'qbedit' => 'Bearbeiten',
 'qbpageoptions' => 'Seitenoptionen',
 'qbmyoptions' => 'Meine Seiten',
-'qbspecialpages' => 'Spezialseiten',
 'faq' => 'Häufig gestellte Fragen',
 'faqpage' => 'Project:FAQ',
 
@@ -794,9 +797,6 @@ Es ist hierzu keine Erklärung verfügbar.',
 'perfcachedts' => 'Diese Daten stammen aus dem Cache. Der Zeitpunkt der letzten Aktualisierung: $2, $3 Uhr. Maximal {{PLURAL:$4|ein Ergebnis ist|$4 Ergebnisse sind}} im Cache verfügbar.',
 'querypage-no-updates' => 'Die Aktualisierungsfunktion dieser Seite ist zurzeit deaktiviert.
 Die Daten werden bis auf Weiteres nicht erneuert.',
-'wrong_wfQuery_params' => 'Falsche Parameter für wfQuery()<br />
-Funktion: $1<br />
-Abfrage: $2',
 'viewsource' => 'Quelltext anzeigen',
 'viewsource-title' => 'Quelltext der Seite $1',
 'actionthrottled' => 'Aktionsanzahl limitiert',
@@ -880,7 +880,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ände
 'helplogin-url' => 'Help:Anmelden',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hilfe beim Anmelden]]',
 'userlogin-loggedin' => 'Du bist bereits als {{GENDER:$1|$1}} angemeldet.
-Benutze das unten stehende Formular, um sich unter einem anderen Benutzer anzumelden.',
+Benutze das unten stehende Formular, um dich unter einem anderen Benutzernamen anzumelden.',
 'userlogin-createanother' => 'Ein weiteres Benutzerkonto erstellen',
 'createacct-join' => 'Gib unten deine Informationen ein.',
 'createacct-another-join' => 'Gib unten die Informationen des neuen Benutzerkontos ein.',
@@ -924,7 +924,7 @@ Es muss sichergestellt sein, dass Cookies aktiviert sind. Danach diese Seite ern
 'passwordtooshort' => 'Passwörter müssen mindestens {{PLURAL:$1|1 Zeichen|$1 Zeichen}} lang sein.',
 'password-name-match' => 'Dein Passwort muss sich von deinem Benutzernamen unterscheiden.',
 'password-login-forbidden' => 'Die Verwendung dieses Benutzernamens und Passwortes ist nicht erlaubt.',
-'mailmypassword' => 'Neues Passwort zusenden',
+'mailmypassword' => 'Passwort zurücksetzen',
 'passwordremindertitle' => 'Neues Passwort für ein {{SITENAME}}-Benutzerkonto',
 'passwordremindertext' => 'Jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat ein neues Passwort für die Anmeldung bei {{SITENAME}} ($4) angefordert.
 
@@ -976,7 +976,7 @@ Wenn du ihn angibst, wird er für die Zuordnung der Beiträge verwendet.',
 'user-mail-no-body' => 'Es wurde versucht, eine E-Mail mit einem leeren oder zu kurzen Textkörper zu versenden.',
 
 # Change password dialog
-'resetpass' => 'Passwort ändern',
+'changepassword' => 'Passwort ändern',
 'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschließen, musst du jetzt ein neues Passwort wählen.',
 'resetpass_text' => '<!-- Ergänze den Text hier -->',
 'resetpass_header' => 'Passwort ändern',
@@ -997,7 +997,7 @@ Möglicherweise hast du dein Passwort bereits erfolgreich geändert oder ein neu
 # Special:PasswordReset
 'passwordreset' => 'Passwort zurücksetzen',
 'passwordreset-text-one' => 'Fülle dieses Formular aus, um dein Passwort zurückzusetzen.',
-'passwordreset-text-many' => '{{PLURAL:$1|Füll eines der Felder aus, um dein Passwort zurückzusetzen.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Füll eines der Felder aus, um ein temporäres Passwort per E-Mail zugesandt zu bekommen.}}',
 'passwordreset-legend' => 'Passwort zurücksetzen',
 'passwordreset-disabled' => 'Das Zurücksetzen von Passwörtern wurde in diesem Wiki deaktiviert.',
 'passwordreset-emaildisabled' => 'Die E-Mail-Funktionen wurden auf diesem Wiki deaktiviert.',
@@ -1254,6 +1254,8 @@ Sie wurde anscheinend gelöscht.',
 'content-not-allowed-here' => 'Der Inhalt „$1“ ist auf der Seite [[$2]] nicht erlaubt',
 'editwarning-warning' => 'Das Verlassen dieser Seite kann dazu führen, dass deine Änderungen verloren gehen.
 Wenn du angemeldet bist, kannst du das Anzeigen dieser Warnung im Bereich „Bearbeiten“ deiner Einstellungen abschalten.',
+'editpage-notsupportedcontentformat-title' => 'Das Inhaltsformat wird nicht unterstützt',
+'editpage-notsupportedcontentformat-text' => 'Das Inhaltsformat $1 wird vom Inhaltsmodell $2 nicht unterstützt.',
 
 # Content models
 'content-model-wikitext' => 'Wikitext',
@@ -1294,6 +1296,9 @@ Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest
 'cantcreateaccount-text' => "Die Erstellung eines Benutzerkontos von der IP-Adresse '''($1)''' aus wurde durch [[User:$3|$3]] gesperrt.
 
 Grund der Sperre: ''$2''",
+'cantcreateaccount-range-text' => "Das Erstellen von Benutzerkonten von IP-Adressen im Bereich '''$1''', der deine IP-Adresse ('''$4''') enthält, wurde von [[User:$3|$3]] gesperrt.
+
+Der angegebene Grund von $3 lautet: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Logbücher dieser Seite anzeigen',
@@ -1361,10 +1366,6 @@ Du kannst diesen Versionsunterschied einsehen, sofern du möchtest. Nähere Anga
 'revisiondelete' => 'Versionen löschen/wiederherstellen',
 'revdelete-nooldid-title' => 'Keine Version angegeben',
 'revdelete-nooldid-text' => 'Du hast entweder keine Version angegeben, auf die diese Aktion ausgeführt werden soll, die gewählte Version ist nicht vorhanden oder du versuchst, die aktuelle Version zu entfernen.',
-'revdelete-nologtype-title' => 'Kein Logtyp angegeben',
-'revdelete-nologtype-text' => 'Es wurde kein Logtyp für diese Aktion angegeben.',
-'revdelete-nologid-title' => 'Ungültiger Logeintrag',
-'revdelete-nologid-text' => 'Es wurde kein Logtyp ausgewählt oder der gewählte Logtyp existiert nicht.',
 'revdelete-no-file' => 'Die angegebene Datei ist nicht vorhanden.',
 'revdelete-show-file-confirm' => 'Bist du sicher, dass du die gelöschte Version der Datei „<nowiki>$1</nowiki>“ vom $2 um $3 Uhr ansehen willst?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1398,8 +1399,6 @@ $1",
 'logdelete-failure' => "'''Logbuchsichtbarkeit kann nicht geändert werden:'''
 $1",
 'revdel-restore' => 'Sichtbarkeit ändern',
-'revdel-restore-deleted' => 'gelöschte Versionen',
-'revdel-restore-visible' => 'sichtbare Versionen',
 'pagehist' => 'Versionsgeschichte',
 'deletedhist' => 'Gelöschte Versionen',
 'revdelete-hide-current' => 'Fehler beim Verstecken des Eintrags vom $1, $2 Uhr: Dies ist die aktuelle Version.
@@ -1477,12 +1476,8 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Suchergebnisse',
 'searchresults-title' => 'Suchergebnisse für „$1“',
-'searchresulttext' => 'Mehr Informationen zur Suche sind auf der [[{{MediaWiki:Helppage}}|Hilfeseite]] zu finden.',
-'searchsubtitle' => 'Du hast nach „[[:$1]]“ gesucht ([[Special:Prefixindex/$1|alle mit „$1“ beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach „$1“ verlinken]])',
-'searchsubtitleinvalid' => 'Deine Suchanfrage: „$1“.',
 'toomanymatches' => 'Die Anzahl der Suchergebnisse ist zu groß, bitte versuche eine andere Abfrage.',
 'titlematches' => 'Übereinstimmungen mit Seitentiteln',
-'notitlematches' => 'Keine Übereinstimmungen mit Seitentiteln',
 'textmatches' => 'Übereinstimmungen mit Inhalten',
 'notextmatches' => 'Keine Übereinstimmungen mit Inhalten',
 'prevn' => '{{PLURAL:$1|vorheriger|vorherige $1}}',
@@ -1491,10 +1486,8 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'nextn-title' => '{{PLURAL:$1|Folgendes Ergebnis|Folgende $1 Ergebnisse}}',
 'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seite',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Suchoptionen',
 'searchmenu-exists' => "'''Es gibt eine Seite, die den Namen „[[:$1]]“ hat.'''",
 'searchmenu-new' => "'''Erstelle die Seite „[[:$1]]“ in diesem Wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alle Seiten, die mit dem Suchbegriff anfangen]]',
 'searchprofile-articles' => 'Inhaltsseiten',
 'searchprofile-project' => 'Hilfe- und Projektseiten',
 'searchprofile-images' => 'Multimedia',
@@ -1515,20 +1508,16 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-interwiki-default' => '$1 Ergebnisse:',
 'search-interwiki-more' => '(weitere)',
 'search-relatedarticle' => 'Verwandte',
-'mwsuggest-disable' => 'Suchvorschläge deaktivieren',
 'searcheverything-enable' => 'In allen Namensräumen suchen',
 'searchrelated' => 'verwandt',
 'searchall' => 'alle',
 'showingresults' => "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
 'showingresultsnum' => "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$3''' Ergebnisse}}, beginnend mit Nummer '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' von '''$3'''|Ergebnisse '''$1–$2''' von '''$3'''}} für '''$4'''",
-'nonefound' => "'''Hinweis:''' Es werden standardmäßig nur einige Namensräume durchsucht. Setze ''all:'' vor deinen Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
 'search-nonefound' => 'Zu deiner Suchanfrage wurden keine Ergebnisse gefunden.',
-'powersearch' => 'Erweiterte Suche',
 'powersearch-legend' => 'Erweiterte Suche',
 'powersearch-ns' => 'Suche in Namensräumen:',
 'powersearch-redir' => 'Weiterleitungen anzeigen',
-'powersearch-field' => 'Suche nach:',
 'powersearch-togglelabel' => 'Wähle aus:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Keine',
@@ -1541,7 +1530,6 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'mypreferences' => 'Einstellungen',
 'prefs-edits' => 'Anzahl der Bearbeitungen:',
 'prefsnologintext2' => 'Du musst dich $1, um Benutzereinstellungen festzulegen.',
-'changepassword' => 'Passwort ändern',
 'prefs-skin' => 'Benutzeroberfläche',
 'skin-preview' => 'Vorschau',
 'datedefault' => 'Standard',
@@ -1564,13 +1552,11 @@ Einzelheiten sind im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-email' => 'E-Mail-Optionen',
 'prefs-rendering' => 'Aussehen',
 'saveprefs' => 'Einstellungen speichern',
-'resetprefs' => 'Eingaben verwerfen',
 'restoreprefs' => 'Alle Standardeinstellungen wiederherstellen (in allen Abschnitten)',
 'prefs-editing' => 'Bearbeiten',
 'rows' => 'Zeilen:',
 'columns' => 'Spalten:',
 'searchresultshead' => 'Suche',
-'resultsperpage' => 'Treffer pro Seite:',
 'stub-threshold' => 'Linkformatierung <a href="#" class="stub">kleiner Seiten</a> (in Bytes):',
 'stub-threshold-disabled' => 'Deaktiviert',
 'recentchangesdays' => 'Anzahl der standardmäßig einbezogenen Tage:',
@@ -1585,7 +1571,6 @@ Jeder, der ihn kennt, kann deine Beobachtungsliste lesen. Teile ihn deshalb nich
 'localtime' => 'Ortszeit:',
 'timezoneuseserverdefault' => 'Standardzeit dieses Wikis nutzen ($1)',
 'timezoneuseoffset' => 'Andere (Unterschied angeben)',
-'timezoneoffset' => 'Unterschied¹:',
 'servertime' => 'Aktuelle Zeit auf dem Server:',
 'guesstimezone' => 'Vom Browser übernehmen',
 'timezoneregion-africa' => 'Afrika',
@@ -1655,6 +1640,7 @@ Diese Information ist öffentlich.',
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Versionsvergleich',
 'prefs-help-prefershttps' => 'Diese Einstellung wird bei deiner nächsten Anmeldung wirksam',
+'prefs-tabs-navigation-hint' => 'Tipp: Du kannst die linke und rechte Pfeiltasten benutzen, um zwischen den Registerkarten in der Reiterliste zu navigieren.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Diese E-Mail-Adresse scheint gültig zu sein.',
@@ -1841,16 +1827,15 @@ Diese Information ist öffentlich.',
 'recentchanges-label-minor' => 'Kleine Änderung',
 'recentchanges-label-bot' => 'Änderung durch einen Bot',
 'recentchanges-label-unpatrolled' => 'Nicht-kontrollierte Änderung',
-'recentchanges-label-plusminus' => 'Die geänderte Seitengröße (Anzahl in Bytes)',
+'recentchanges-label-plusminus' => 'Die Änderung der Seitengröße in Bytes',
+'recentchanges-legend-heading' => "'''Legende:'''",
 'recentchanges-legend-newpage' => '(siehe auch die [[Special:NewPages|Liste neuer Seiten]])',
 'recentchanges-legend-plusminus' => "''(±123)''",
-'rcnote' => "{{PLURAL:$1|'''1''' Änderung|'''$1''' Änderungen}} in den {{PLURAL:$2|letzten 24 Stunden|letzten '''$2''' Tagen}}.
-Stand: $4, $5 Uhr.",
 'rcnotefrom' => "Angezeigt werden die Änderungen seit '''$2''' (max. '''$1''' Einträge).",
 'rclistfrom' => 'Nur Änderungen seit $1 zeigen.',
 'rcshowhideminor' => 'Kleine Änderungen $1',
 'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Angemeldete Benutzer $1',
+'rcshowhideliu' => 'Registrierte Benutzer $1',
 'rcshowhideanons' => 'Unangemeldete Benutzer $1',
 'rcshowhidepatr' => 'Kontrollierte Änderungen $1',
 'rcshowhidemine' => 'Eigene Beiträge $1',
@@ -1964,6 +1949,8 @@ Wenn du diese Datei trotzdem hochladen möchtest, gehe bitte zurück und ändere
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Diese Datei ist ein Duplikat der folgenden {{PLURAL:$1|Datei|$1 Dateien}}:',
 'file-deleted-duplicate' => 'Eine mit dieser identische Datei ([[:$1]]) wurde früher gelöscht. Sieh das Lösch-Logbuch ein, bevor du sie hochlädst.',
+'file-deleted-duplicate-notitle' => 'Eine identische Datei wurde kürzlich gelöscht und der Titel wurde unterdrückt.
+Du solltest jemanden fragen, der die Möglichkeit hat, die unterdrückten Dateidaten anzusehen, um die Situation vor dem erneuten Hochladen zu überprüfen.',
 'uploadwarning' => 'Warnung',
 'uploadwarning-text' => 'Bitte ändere unten die Dateibeschreibung und versuche es erneut.',
 'savefile' => 'Datei speichern',
@@ -2305,6 +2292,7 @@ Jede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel de
 'ninterwikis' => '{{PLURAL:$1|Ein Interwikilink|$1 Interwikilinks}}',
 'nlinks' => '{{PLURAL:$1|1 Link|$1 Links}}',
 'nmembers' => '{{PLURAL:$1|1 Eintrag|$1 Einträge}}',
+'nmemberschanged' => '$1 → {{PLURAL:$2|Ein Mitglied|$2 Mitglieder}}',
 'nrevisions' => '{{PLURAL:$1|1 Bearbeitung|$1 Bearbeitungen}}',
 'nviews' => '{{PLURAL:$1|1 Abfrage|$1 Abfragen}}',
 'nimagelinks' => 'Verwendet auf {{PLURAL:$1|einer Seite|$1 Seiten}}',
@@ -2343,10 +2331,9 @@ Jede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel de
 'protectedpages' => 'Geschützte Seiten',
 'protectedpages-indef' => 'Nur unbeschränkt geschützte Seiten zeigen',
 'protectedpages-cascade' => 'Nur Seiten mit Kaskadenschutz',
-'protectedpagestext' => 'Diese Spezialseite zeigt alle vor dem Verschieben oder Bearbeiten geschützten Seiten.',
+'protectedpages-noredirect' => 'Weiterleitungen ausblenden',
 'protectedpagesempty' => 'Aktuell sind keine Seiten mit diesen Parametern geschützt.',
 'protectedtitles' => 'Geschützte Seitennamen',
-'protectedtitlestext' => 'Die folgenden Titel wurden zur Neuerstellung gesperrt.',
 'protectedtitlesempty' => 'Zurzeit sind mit den angegebenen Parametern keine Seiten zur Neuerstellung gesperrt.',
 'listusers' => 'Benutzerverzeichnis',
 'listusers-editsonly' => 'Zeige nur Benutzer mit Beiträgen',
@@ -2363,8 +2350,8 @@ Jede Zeile enthält Links zur ersten und zweiten Weiterleitung sowie dem Ziel de
 'unusedcategoriestext' => 'Diese Spezialseite zeigt alle Kategorien, die leer sind, also selbst keine Kategorien oder Seiten enthalten.',
 'notargettitle' => 'Keine Seite angegeben',
 'notargettext' => 'Du hast nicht angegeben, auf welche Seite diese Funktion angewendet werden soll.',
-'nopagetitle' => 'Quellseite nicht vorhanden',
-'nopagetext' => 'Die zu verschiebende Seite ist nicht vorhanden.',
+'nopagetitle' => 'Seite nicht vorhanden',
+'nopagetext' => 'Die angegebene Seite ist nicht vorhanden.',
 'pager-newer-n' => '{{PLURAL:$1|nächster|nächste $1}}',
 'pager-older-n' => '{{PLURAL:$1|vorheriger|vorherige $1}}',
 'suppress' => 'Oversight',
@@ -2398,9 +2385,6 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
 'allpagesto' => 'Seiten anzeigen bis:',
 'allarticles' => 'Alle Seiten',
 'allinnamespace' => 'Alle Seiten (Namensraum: $1)',
-'allnotinnamespace' => 'Alle Seiten (nicht im $1 Namensraum)',
-'allpagesprev' => 'Vorherige',
-'allpagesnext' => 'Nächste',
 'allpagessubmit' => 'Anwenden',
 'allpagesprefix' => 'Seiten anzeigen mit Präfix:',
 'allpagesbadtitle' => 'Der eingegebene Seitenname ist ungültig: Er hat entweder ein vorangestelltes Sprach-, ein Interwiki-Kürzel oder enthält ein oder mehrere Zeichen, welche in Seitennamen nicht verwendet werden dürfen.',
@@ -2614,6 +2598,7 @@ Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'delete-edit-reasonlist' => 'Löschgründe bearbeiten',
 'delete-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen solcher Seiten wurde eingeschränkt, um eine versehentliche Überlastung der Server zu verhindern.',
 'delete-warning-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.',
+'deleting-backlinks-warning' => "'''Warnung:''' Es verweisen noch andere Seiten auf die zu löschende Seite.",
 
 # Rollback
 'rollback' => 'Zurücksetzen der Änderungen',
@@ -2726,7 +2711,6 @@ Der aktuelle Text der gelöschten Seite ist nur Administratoren zugänglich.',
 'undeletebtn' => 'Wiederherstellen',
 'undeletelink' => 'ansehen/wiederherstellen',
 'undeleteviewlink' => 'ansehen',
-'undeletereset' => 'Zurücksetzen',
 'undeleteinvert' => 'Auswahl umkehren',
 'undeletecomment' => 'Grund:',
 'undeletedrevisions' => '{{PLURAL:$1|1 Version wurde|$1 Versionen wurden}} wiederhergestellt',
@@ -2814,7 +2798,6 @@ Zur Information folgt der aktuelle Auszug aus dem Sperr-Logbuch:',
 'block' => 'Benutzer sperren',
 'unblock' => 'Benutzer freigeben',
 'blockip' => 'IP-Adresse/Benutzer sperren',
-'blockip-title' => 'Benutzer sperren',
 'blockip-legend' => 'IP-Adresse/Benutzer sperren',
 'blockiptext' => 'Mit diesem Formular sperrst du eine IP-Adresse oder einen Benutzernamen, so dass von dort keine Änderungen mehr vorgenommen werden können.
 Dies sollte nur erfolgen, um Vandalismus zu verhindern und in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]].
@@ -2822,7 +2805,6 @@ Bitte gib den Grund für die Sperre an.',
 'ipadressorusername' => 'IP-Adresse oder Benutzername:',
 'ipbexpiry' => 'Sperrdauer:',
 'ipbreason' => 'Grund:',
-'ipbreasonotherlist' => 'Anderer Grund',
 'ipbreason-dropdown' => '* Allgemeine Sperrgründe
 ** Einfügen falscher Informationen
 ** Leeren von Seiten
@@ -2838,8 +2820,6 @@ Bitte gib den Grund für die Sperre an.',
 'ipbsubmit' => 'IP-Adresse/Benutzer sperren',
 'ipbother' => 'Andere Dauer (englisch):',
 'ipboptions' => '2 Stunden:2 hours,1 Tag:1 day,3 Tage:3 days,1 Woche:1 week,2 Wochen:2 weeks,1 Monat:1 month,3 Monate:3 months,6 Monate:6 months,1 Jahr:1 year,unbeschränkt:infinite',
-'ipbotheroption' => 'Andere Dauer',
-'ipbotherreason' => 'Anderer/ergänzender Grund:',
 'ipbhidename' => 'Benutzername in Bearbeitungen und Listen verstecken',
 'ipbwatchuser' => 'Benutzer(diskussions)seite beobachten',
 'ipb-disableusertalk' => 'Diesen Benutzer daran hindern seine eigene Diskussionsseite zu bearbeiten, solange er gesperrt ist',
@@ -2851,6 +2831,7 @@ Bitte gib den Grund für die Sperre an.',
 Zur Aufhebung der Sperre siehe die [[Special:BlockList|Liste aller aktiven Sperren]].',
 'ipb-blockingself' => 'Du bist gerade dabei, dich selbst zu sperren! Möchtest du das wirklich tun?',
 'ipb-confirmhideuser' => 'Du bist gerade dabei, einen Benutzer im Modus „Benutzer verstecken“ zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchtest du das wirklich tun?',
+'ipb-confirmaction' => 'Wenn du dir sicher bist, dass du dies wirklich tun möchtest, überprüfe bitte unten das Feld „{{int:ipb-confirm}}“.',
 'ipb-edit-dropdown' => 'Sperrgründe bearbeiten',
 'ipb-unblock-addr' => '„$1“ freigeben',
 'ipb-unblock' => 'IP-Adresse/Benutzer freigeben',
@@ -2927,7 +2908,6 @@ Siehe die [[Special:BlockList|Liste der gesperrten IP-Adressen und Benutzernamen
 'sorbsreason' => 'Die IP-Adresse ist in der DNSBL von {{SITENAME}} als offener PROXY gelistet.',
 'sorbs_create_account_reason' => 'Die IP-Adresse ist in der DNSBL von {{SITENAME}} als offener PROXY gelistet. Das Anlegen neuer Benutzer ist nicht möglich.',
 'xffblockreason' => 'Eine IP-Adresse im X-Forwarded-For-Header wurde gesperrt, entweder deine oder die des benutzten Proxyservers. Der ursprüngliche Sperrgrund war: $1',
-'cant-block-while-blocked' => 'Du kannst keine anderen Benutzer sperren, während du selbst gesperrt bist.',
 'cant-see-hidden-user' => 'Der Benutzer, den du versuchst zu sperren, wurde bereits gesperrt und verborgen. Da du das „hideuser“-Recht nicht hast, kannst du die Benutzersperre nicht sehen und nicht bearbeiten.',
 'ipbblocked' => 'Du kannst keine anderen Benutzer sperren oder entsperren, da du selbst gesperrt bist',
 'ipbnounblockself' => 'Du hast nicht die Berechtigung, dich selbst zu entsperren',
@@ -2985,7 +2965,6 @@ In diesen Fällen musst du, falls gewünscht, den Inhalt der Seite von Hand vers
 Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung bitte '''begründen.'''",
 'movearticle' => 'Seite verschieben:',
 'moveuserpage-warning' => "'''Warnung:''' Du bist dabei, eine Benutzerseite zu verschieben. Bitte bedenke, dass dadurch nur die Benutzerseite verschoben, '''nicht''' aber der Benutzer umbenannt wird.",
-'movenologin' => 'Du bist nicht angemeldet',
 'movenologintext' => 'Du musst ein registrierter Benutzer und [[Special:UserLogin|angemeldet]] sein, um eine Seite zu verschieben.',
 'movenotallowed' => 'Du hast nicht die erforderliche Berechtigung, um Seiten verschieben zu können.',
 'movenotallowedfile' => 'Du hast nicht die erforderliche Berechtigung, um Dateien verschieben zu können.',
@@ -3000,8 +2979,6 @@ Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung
 'movepage-moved-noredirect' => 'Die Erstellung einer Weiterleitung wurde unterdrückt.',
 'articleexists' => 'Unter diesem Namen existiert bereits eine Seite. Bitte wähle einen anderen Namen.',
 'cantmove-titleprotected' => 'Die Verschiebung kann nicht durchgeführt werden, da der Zieltitel zur Erstellung gesperrt ist.',
-'talkexists' => 'Die Seite selbst wurde erfolgreich verschoben, aber die zugehörige Diskussionsseite nicht, da bereits eine mit dem neuen Titel existiert. Bitte gleiche die Inhalte von Hand ab.',
-'movedto' => 'verschoben nach',
 'movetalk' => 'Sofern möglich, die Diskussionsseite mitverschieben',
 'move-subpages' => 'Unterseiten verschieben (bis zu $1)',
 'move-talk-subpages' => 'Unterseiten der Diskussionsseite verschieben (bis zu $1)',
@@ -3246,6 +3223,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'print.css' => '/* Das folgende CSS wird in der Druckausgabe geladen. */',
 'noscript.css' => '/* Das folgende CSS wirkt sich für Benutzer aus, die JavaScript deaktiviert haben */',
 'group-autoconfirmed.css' => '/* CSS an dieser Stelle wirkt sich nur auf automatisch bestätigte Benutzer aus */',
+'group-user.css' => '/* CSS an dieser Stelle wirkt sich nur auf angemeldete Benutzer aus */',
 'group-bot.css' => '/* CSS an dieser Stelle wirkt sich nur auf Bots aus */',
 'group-sysop.css' => '/* CSS an dieser Stelle wirkt sich nur auf Administratoren aus */',
 'group-bureaucrat.css' => '/* Das folgende CSS wird nur für Bürokraten geladen. */',
@@ -3257,6 +3235,7 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
 'modern.js' => '/* Das folgende JavaScript wird für Benutzer der Modern-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
 'vector.js' => '/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
 'group-autoconfirmed.js' => '/* Das folgende JavaScript wird nur für automatisch bestätigte Benutzer geladen. */',
+'group-user.js' => '/* Das folgende JavaScript wird nur für angemeldete Benutzer geladen. */',
 'group-bot.js' => '/* Das folgende JavaScript wird nur für Bots geladen. */',
 'group-sysop.js' => '/* Das folgende JavaScript wird nur für Administratoren geladen. */',
 'group-bureaucrat.js' => '/* Das folgende JavaScript wird nur für Bürokraten geladen. */',
@@ -3780,8 +3759,8 @@ Weitere werden standardmäßig nicht angezeigt.
 'exif-gpslongitude-w' => 'westl. Länge',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter}} über dem Meeresspiegel',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter}} unter dem Meeresspiegel',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter}} über dem Meeresspiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter}} unter dem Meeresspiegel',
 
 'exif-gpsstatus-a' => 'Messung läuft',
 'exif-gpsstatus-v' => 'Interoperabilität von Messungen',
@@ -3852,15 +3831,10 @@ Weitere werden standardmäßig nicht angezeigt.
 'exif-urgency-high' => 'Hoch ($1)',
 'exif-urgency-other' => 'Benutzerdefinierte Priorität ($1)',
 
-# External editor support
-'edit-externally' => 'Diese Datei mit einem externen Programm bearbeiten',
-'edit-externally-help' => '(weitere Informationen in den [https://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
 'monthsall' => 'alle',
-'limitall' => 'alle',
 
 # Email address confirmation
 'confirmemail' => 'E-Mail-Adresse bestätigen (Authentifizierung)',
@@ -3879,7 +3853,6 @@ Rückmeldung des Mailservers: $1',
 'confirmemail_needlogin' => 'Du musst dich $1, um deine E-Mail-Adresse zu bestätigen.',
 'confirmemail_success' => 'Deine E-Mail-Adresse wurde erfolgreich bestätigt. Du kannst dich jetzt [[Special:UserLogin|anmelden]].',
 'confirmemail_loggedin' => 'Deine E-Mail-Adresse wurde erfolgreich bestätigt.',
-'confirmemail_error' => 'Es gab einen Fehler bei der Bestätigung deiner E-Mail-Adresse.',
 'confirmemail_subject' => '[{{SITENAME}}] Bestätigung der E-Mail-Adresse',
 'confirmemail_body' => 'Hallo,
 
@@ -3963,6 +3936,11 @@ Bitte bestätige, dass du diese Seite wirklich neu erstellen möchten.",
 'imgmultigo' => 'OK',
 'imgmultigoto' => 'Gehe zu Seite $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(Standardsprache)',
+'img-lang-info' => 'Dieses Bild in $1 rendern. $2',
+'img-lang-go' => 'Los',
+
 # Table pager
 'ascending_abbrev' => 'auf',
 'descending_abbrev' => 'ab',
@@ -4055,9 +4033,19 @@ Du kannst auch die [[Special:EditWatchlist|Standardseite]] zum Bearbeiten benutz
 'version-parser-function-hooks' => "Parsererweiterungen ''(Funktionen)''",
 'version-hook-name' => 'Schnittstellenname',
 'version-hook-subscribedby' => 'Aufruf von',
-'version-version' => '(Version $1)',
+'version-version' => '($1)',
 'version-svn-revision' => '(Version $2)',
-'version-license' => 'Lizenz',
+'version-license' => 'MediaWiki-Lizenz',
+'version-ext-license' => 'Lizenz',
+'version-ext-colheader-name' => 'Bezeichnung',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Lizenz',
+'version-ext-colheader-description' => 'Beschreibung',
+'version-ext-colheader-credits' => 'Autoren',
+'version-license-title' => 'Lizenz für $1',
+'version-license-not-found' => 'Es wurden keine detaillierten Lizenzinformationen für diese Erweiterung gefunden.',
+'version-credits-title' => 'Danksagungen für $1',
+'version-credits-not-found' => 'Es wurden keine detaillierten Danksagungsinformationen für diese Erweiterung gefunden.',
 'version-poweredby-credits' => "Diese Website nutzt '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
 'version-poweredby-others' => 'andere',
 'version-poweredby-translators' => 'Übersetzer von translatewiki.net',
@@ -4077,13 +4065,14 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Skriptpfad]',
 
 # Special:Redirect
-'redirect' => 'Weiterleitung auf Benutzerseite, Seitenversion oder Datei',
-'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seitenversion oder Datei',
-'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/user/101]].',
+'redirect' => 'Weiterleitung auf Benutzerseite, Seite, Seitenversion oder Datei',
+'redirect-legend' => 'Weiterleitung auf eine Benutzerseite, Seite, Seitenversion oder Datei',
+'redirect-summary' => 'Diese Spezialseite leitet auf eine Benutzerseite (numerische Benutzerkennung angegeben), Seite (Seitenkennung angeben), Seitenversion (Versionskennung angegeben) oder Datei (Dateiname angegeben) weiter. Benutzung: [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] oder [[{{#Special:Redirect}}/file/Example.jpg]].',
 'redirect-submit' => 'Los',
 'redirect-lookup' => 'Suchen:',
 'redirect-value' => 'Kennung oder Dateiname:',
 'redirect-user' => 'Benutzerseite',
+'redirect-page' => 'Seite',
 'redirect-revision' => 'Seitenversion',
 'redirect-file' => 'Datei',
 'redirect-not-exists' => 'Der Wert wurde nicht gefunden',
@@ -4152,7 +4141,6 @@ Bei entsprechender Einstellung können die Missbrauchfilter beliebige Markierung
 
 # Special:ComparePages
 'comparepages' => 'Seiten vergleichen',
-'compare-selector' => 'Seitenversionen vergleichen',
 'compare-page1' => 'Seite 1',
 'compare-page2' => 'Seite 2',
 'compare-rev1' => 'Version 1',
@@ -4280,6 +4268,7 @@ Anderenfalls kannst du auch das untenstehende einfache Formular nutzen. Dein Kom
 'api-error-overwrite' => 'Das Überschreiben einer vorhandenen Datei ist nicht erlaubt.',
 'api-error-stashfailed' => 'Interner Fehler: Der Server konnte keine temporäre Datei speichern.',
 'api-error-publishfailed' => 'Interner Fehler: Der Server konnte die temporäre Datei nicht veröffentlichen.',
+'api-error-stasherror' => 'Beim Hochladen der Datei gab es einen Fehler.',
 'api-error-timeout' => 'Der Server hat nicht innerhalb der erwarteten Zeit reagiert.',
 'api-error-unclassified' => 'Ein unbekannter Fehler ist aufgetreten.',
 'api-error-unknown-code' => 'Unbekannter Fehler: „$1“',
@@ -4328,14 +4317,18 @@ Auch Parserfunktionen wie
 <code><nowiki>{{</nowiki>#language:…}}</code> und Variablen wie
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code> werden ausgewertet –
 faktisch alles was in doppelten geschweiften Klammern enthalten ist.',
-'expand_templates_title' => 'Kontexttitel, für {{FULLPAGENAME}} etc.:',
+'expand_templates_title' => 'Kontexttitel für beispielsweise {{FULLPAGENAME}}:',
 'expand_templates_input' => 'Eingabefeld:',
 'expand_templates_output' => 'Ergebnis',
 'expand_templates_xml_output' => 'XML-Ausgabe',
-'expand_templates_ok' => 'Okay',
+'expand_templates_html_output' => 'Roh-HTML-Ausgabe',
+'expand_templates_ok' => 'Vorlage expandieren',
 'expand_templates_remove_comments' => 'Kommentare entfernen',
 'expand_templates_remove_nowiki' => '<nowiki>-Tags in der Ausgabe unterdrücken',
 'expand_templates_generate_xml' => 'XML-Parser-Baum zeigen',
+'expand_templates_generate_rawhtml' => 'Rohes HTML anzeigen',
 'expand_templates_preview' => 'Vorschau',
 
+# Unknown messages
+'uploadinvalidxml' => 'Das XML in der hochgeladenen Datei konnte nicht geparst werden.',
 );
index cdd2bb0..5e185b6 100644 (file)
@@ -19,11 +19,11 @@ $fallback = 'de';
 
 $messages = array(
 # Dates
-'january'      => 'Jänner',
-'february'     => 'Februar',
-'december'     => 'Dezember',
-'january-gen'  => 'Jänners',
-'february-gen' => 'Februars',
-'jan'          => 'Jän',
+'january' => 'Jänner',
+'february' => 'Februar',
+'december' => 'Dezember',
+'january-gen' => 'Jänners',
+'february-gen' => 'Febers',
+'jan' => 'Jän',
 
 );
index a4fabf9..6937ba7 100644 (file)
@@ -14,6 +14,7 @@
  * @author MichaelFrey
  * @author SVG
  * @author The Evil IP address
+ * @author Umherirrender
  */
 
 $fallback = 'de';
@@ -24,11 +25,8 @@ $messages = array(
 'tog-hideminor' => 'Kleine Änderungen in den «Letzten Änderungen» ausblenden',
 'tog-hidepatrolled' => 'Kontrollierte Änderungen in den «Letzten Änderungen» ausblenden',
 'tog-newpageshidepatrolled' => 'Kontrollierte Seiten bei den «Neuen Seiten» ausblenden',
-'tog-usenewrc' => 'Erweiterte Darstellung der «Letzten Änderungen» (benötigt JavaScript)',
+'tog-usenewrc' => 'Seitenbezogene Gruppierung in den «Letzten Änderungen» und auf der Beobachtungsliste',
 'tog-minordefault' => 'Eigene Änderungen standardmässig als minim markieren',
-'tog-externaleditor' => 'Externen Editor standardmässig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
-'tog-externaldiff' => 'Externes Programm standardmässig für Versionsunterschiede nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
-'tog-showjumplinks' => '«Wechseln zu»-Links aktivieren',
 
 # Categories related messages
 'category_header' => 'Seiten in der Kategorie «$1»',
@@ -42,15 +40,6 @@ $messages = array(
 'page-atom-feed' => 'Atom-Feed für «$1»',
 
 # General errors
-'dberrortext' => 'Es ist ein Datenbankfehler aufgetreten.
-Der Grund kann ein Programmierfehler sein.
-Die letzte Datenbankabfrage lautete:
-<blockquote><tt>$1</tt></blockquote>
-aus der Funktion «<tt>$2</tt>».
-Die Datenbank meldete den Fehler «<tt>$3: $4</tt>».',
-'dberrortextcl' => 'Es gab einen Syntaxfehler in der Datenbankabfrage.
-Die letzte Datenbankabfrage lautete: «$1» aus der Funktion «<tt>$2</tt>».
-Die Datenbank meldete den Fehler: «<tt>$3: $4</tt>».',
 'missing-article' => 'Der Text von «$1» $2 wurde nicht in der Datenbank gefunden.
 
 Die Seite ist möglicherweise gelöscht oder verschoben worden.
@@ -71,8 +60,8 @@ Möglicherweise wurde sie bereits von jemand anderem gelöscht.',
 'actionthrottledtext' => 'Im Rahmen einer Anti-Spam-Massnahme oder aufgrund eines Missbrauchsfilters kann diese Aktion in einem kurzen Zeitabstand nur begrenzt oft ausgeführt werden. Diese Grenze hast du überschritten.
 Bitte versuche es in ein paar Minuten erneut.',
 'editinginterface' => "'''Warnung:''' Diese Seite enthält von der MediaWiki-Software genutzten Text.
-Änderungen auf dieser Seite wirken sich auf die Benutzeroberfläche aus.
-Ziehe bitte im Fall von Übersetzungen in Betracht, diese bei [//translatewiki.net/wiki/Main_Page?setlang=de-ch translatewiki.net], der Lokalisierungsplattform für MediaWiki, durchzuführen.",
+Änderungen auf dieser Seite wirken sich auf die Benutzeroberfläche dieses Wikis aus.
+Nutze bitte [//translatewiki.net/ translatewiki.net], das Lokalisierungsprojekt von MediaWiki, um Übersetzungen für alle Wikis hinzuzufügen oder zu ändern.",
 'titleprotected' => "Eine Seite mit diesem Namen kann nicht angelegt werden.
 Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''«$2»'' eingerichtet.",
 'filereadonlyerror' => 'Die Datei «$1» kann nicht verändert werden, da auf das Dateirepositorium «$2» nur Lesezugriff möglich ist.
@@ -86,29 +75,36 @@ Der Administrator, der den Schreibzugriff sperrte, gab folgenden Grund an: «$3
 'nosuchusershort' => 'Der Benutzername «$1» ist nicht vorhanden. Bitte überprüfe die Schreibweise.',
 'passwordremindertext' => 'Jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat ein neues Passwort für die Anmeldung bei {{SITENAME}} ($4) angefordert.
 
-Das automatisch generierte Passwort für Benutzer „$2“ lautet nun: $3
+Das automatisch generierte Passwort für Benutzer «$2» lautet nun: $3
 
 Falls du dies wirklich gewünscht hast, solltest du dich jetzt anmelden und das Passwort ändern.
 Das neue Passwort ist {{PLURAL:$5|1 Tag|$5 Tage}} gültig.
 
-Bitte ignoriere dieses E-Mail, falls du sie nicht selbst angefordert hast. Das alte Passwort bleibt weiterhin gültig.',
+Bitte ignoriere dieses E-Mail, falls du es nicht selbst angefordert hast. Das alte Passwort bleibt weiterhin gültig.',
 'noemail' => '{{GENDER:$1|Benutzer|Benutzerin|Benutzer}} «$1» hat keine E-Mail-Adresse angegeben.',
 'passwordsent' => 'Ein neues, temporäres Passwort wurde an die E-Mail-Adresse von Benutzer «$1» gesandt.
 Bitte melde dich damit an, sobald du es erhalten hast. Das alte Passwort bleibt weiterhin gültig.',
 'eauthentsent' => 'Ein Bestätigungs-E-Mail wurde an die angegebene Adresse verschickt.
 
 Bevor ein E-Mail von anderen Benutzern über die E-Mail-Funktion empfangen werden kann, muss die Adresse und ihre tatsächliche Zugehörigkeit zu diesem Benutzerkonto erst bestätigt werden. Bitte befolge die Hinweise im Bestätigungs-E-Mail.',
+'throttled-mailpassword' => 'Es wurde innerhalb der letzten {{PLURAL:$1|Stunde|$1 Stunden}} bereits ein Passwortzurücksetzungs-E-Mail angefordert. Um einen Missbrauch der Funktion zu verhindern, kann nur {{PLURAL:$1|einmal pro Stunde|alle $1 Stunden}} ein Passwortzurücksetzungs-E-Mail angefordert werden.',
 'mailerror' => 'Fehler beim Senden des E-Mails: $1',
 'createaccount-text' => 'Es wurde für dich ein Benutzerkonto «$2» auf {{SITENAME}} ($4) erstellt. Das automatisch generierte Passwort für «$2» ist «$3». Du solltest dich nun anmelden und das Passwort ändern.
 
 Falls das Benutzerkonto irrtümlich angelegt wurde, kannst du diese Nachricht ignorieren.',
 
-# E-mail sending
+# Email sending
 'user-mail-no-addy' => 'Versuchte ein E-Mail ohne Angabe einer E-Mail-Adresse zu versenden',
+'user-mail-no-body' => 'Es wurde versucht, ein E-Mail mit einem leeren oder zu kurzen Textkörper zu versenden.',
 
 # Change password dialog
 'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschliessen, musst du jetzt ein neues Passwort wählen.',
 
+# Special:PasswordReset
+'passwordreset-emailsent' => 'Ein Passwortzurücksetzungs-E-Mail wurde versandt.',
+'passwordreset-emailsent-capture' => 'Ein Passwortzurücksetzungs-E-Mail wurde versandt, das unten angezeigt wird.',
+'passwordreset-emailerror-capture' => 'Die unten angezeigte Passwortzurücksetzungs-E-Mail wurde generiert, allerdings ist der Versand an {{GENDER:$2|den Benutzer|die Benutzerin}} gescheitert: $1',
+
 # Edit pages
 'missingsummary' => "'''Hinweis:''' Du hast keine Zusammenfassung angegeben. Wenn du erneut auf «{{int:savearticle}}» klickst, wird deine Änderung ohne Zusammenfassung übernommen.",
 'missingcommentheader' => "'''Achtung:''' Du hast kein Betreff/Überschrift eingegeben. Wenn du erneut auf «{{int:savearticle}}» klickst, wird deine Bearbeitung ohne Überschrift gespeichert.",
@@ -141,9 +137,7 @@ Du kannst die «E-Mail an diesen Benutzer»-Funktion nicht nutzen, solange keine
 Deine aktuelle IP-Adresse ist $3, und die Sperr-ID ist $5.
 Bitte füge alle Informationen jeder Anfrage hinzu, die du stellst.",
 'confirmedittext' => 'Du musst deine E-Mail-Adresse erst bestätigen, bevor du Bearbeitungen durchführen kannst. Bitte ergänze und bestätige dein E-Mail in den [[Special:Preferences|Einstellungen]].',
-'accmailtext' => 'Ein zufällig generiertes Passwort für [[User talk:$1|$1]] wurde an $2 versandt.
-
-Das Passwort für dieses neue Benutzerkonto kann auf der Spezialseite «[[Special:ChangePassword|Passwort ändern]]» geändert werden.',
+'accmailtext' => "Ein zufällig generiertes Passwort für [[User talk:$1|$1]] wurde an $2 versandt. Es kann auf der Seite ''[[Special:ChangePassword|Passwort ändern]]'' nach der Anmeldung geändert werden.",
 'userpage-userdoesnotexist' => 'Das Benutzerkonto «<nowiki>$1</nowiki>» ist nicht vorhanden. Bitte prüfe, ob du diese Seite wirklich erstellen/bearbeiten willst.',
 'userpage-userdoesnotexist-view' => 'Das Benutzerkonto «$1» ist nicht vorhanden.',
 'clearyourcache' => "'''Hinweis:''' Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.
@@ -155,6 +149,7 @@ Das Passwort für dieses neue Benutzerkonto kann auf der Spezialseite «[[Specia
 'userjsyoucanpreview' => "'''Tipp:''' Benutze den «{{int:showpreview}}»-Button, um dein neues JavaScript vor dem Speichern zu testen.",
 'userinvalidcssjstitle' => "'''Achtung:''' Die Benutzeroberfläche «$1» existiert nicht. Bedenke, dass benutzerspezifische .css- und .js-Seiten mit einem Kleinbuchstaben anfangen müssen, also beispielsweise ''{{ns:user}}:Mustermann/vector.css'' an Stelle von ''{{ns:user}}:Mustermann/Vector.css''.",
 'editing' => 'Bearbeiten von «$1»',
+'creating' => 'Erstellen von «$1»',
 'editingsection' => 'Bearbeiten von «$1» (Abschnitt)',
 'editingcomment' => 'Bearbeiten von «$1» (Neuer Abschnitt)',
 'explainconflict' => "Jemand anders hat diese Seite geändert, nachdem du angefangen hast sie zu bearbeiten.
@@ -194,26 +189,21 @@ Du hast darauf keinen Zugriff.',
 'mergehistory-comment' => '«[[:$1]]» vereinigt nach «[[:$2]]»: $3',
 
 # Diffs
-'history-title' => 'Versionsgeschichte von «$1»',
+'history-title' => '$1: Versionsgeschichte',
 
 # Search results
 'searchresults-title' => 'Suchergebnisse für «$1»',
-'searchsubtitle' => 'Deine Suchanfrage: «[[:$1]]» ([[Special:Prefixindex/$1|alle mit «$1» beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach «$1» verlinken]])',
-'searchsubtitleinvalid' => 'Deine Suchanfrage: «$1».',
 'toomanymatches' => 'Die Anzahl der Suchergebnisse ist zu gross, bitte versuche eine andere Abfrage.',
 'searchmenu-exists' => "'''Es gibt eine Seite, die den Namen «[[:$1]]» hat.'''",
 'searchmenu-new' => "'''Erstelle die Seite «[[:$1]]» in diesem Wiki.'''",
 'search-redirect' => '(Weiterleitung von «$1»)',
 'search-suggest' => 'Meintest du «$1»?',
-'nonefound' => "'''Hinweis:''' Es werden standardmässig nur einige Namensräume durchsucht. Setze ''all:'' vor deinen Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
 
 # Preferences page
 'prefs-watchlist-days' => 'Anzahl der Tage, die die Beobachtungsliste standardmässig umfassen soll:',
-'prefs-edit-boxsize' => 'Grösse des Bearbeitungsfensters:',
 'recentchangesdays' => 'Anzahl der Tage, die die Liste der «Letzten Änderungen» standardmässig umfassen soll:',
 'recentchangescount' => 'Anzahl der standardmässig angezeigten Bearbeitungen:',
 'defaultns' => 'In diesen Namensräumen soll standardmässig gesucht werden:',
-'prefs-textboxsize' => 'Grösse des Bearbeitungsfensters',
 'prefs-help-signature' => 'Beiträge auf Diskussionsseiten sollten mit «<nowiki>~~~~</nowiki>» signiert werden, was dann in die Signatur mit Zeitstempel umgewandelt wird.',
 
 # Rights
@@ -223,10 +213,6 @@ Du hast darauf keinen Zugriff.',
 'right-override-export-depth' => 'Exportiere Seiten einschliesslich verlinkter Seiten bis zu einer Tiefe von 5',
 'right-passwordreset' => 'Passwort eines Benutzers zurücksetzen und das dazu verschickte E-Mail einsehen',
 
-# User rights log
-'rightslogentry' => 'änderte die Benutzerrechte für «$1» von «$2» auf «$3»',
-'rightslogentry-autopromote' => 'wurde automatisch von «$2» nach «$3» zugeordnet',
-
 # Recent changes
 'rc_categories' => 'Nur Seiten aus den Kategorien (getrennt mit «|»):',
 'rc-old-title' => 'ursprünglich erstellt als «$1»',
@@ -274,7 +260,7 @@ Bitte gib der Datei einen Namen, der den Inhalt besser beschreibt.",
 'upload-unknown-size' => 'Unbekannte Grösse',
 
 # File backend
-'backend-fail-maxsize' => 'Die Datei $1 konnte nicht erstellt werden, da sie grösser als {{PLURAL:$2|ein Byte|$2 Byte}} ist.',
+'backend-fail-maxsize' => 'Die Datei $1 konnte nicht gespeichert werden, da sie grösser als {{PLURAL:$2|ein Byte|$2 Bytes}} ist.',
 'backend-fail-readonly' => 'Das Speicher-Backend «$1» befindet sich derzeit im Lesemodus. Der angegebene Grund lautet: «$2»',
 'backend-fail-synced' => 'Die Datei «$1» befindet sich, innerhalb des internen Speicher-Backends, in einem inkonsistenten Zustand.',
 'backend-fail-connect' => 'Es konnte keine Verbindung zum Speicher-Backend «$1» hergestellt werden.',
@@ -313,7 +299,7 @@ Nur Dateizugriff ist erlaubt.',
 'http-invalid-scheme' => 'URLs mit dem Schema «$1» werden nicht unterstützt',
 
 # Special:ListFiles
-'listfiles-summary' => 'Diese Spezialseite listet alle hochgeladenen Dateien auf. Standardmässig werden die zuletzt hochgeladenen Dateien zuerst angezeigt. Durch einen Klick auf die Spaltenüberschriften kann die Sortierung umgedreht werden oder es kann nach einer anderen Spalte sortiert werden.',
+'listfiles-summary' => 'Diese Spezialseite listet alle hochgeladenen Dateien auf.',
 'listfiles_size' => 'Grösse',
 
 # File description page
@@ -346,11 +332,11 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
 'allpages-bad-ns' => 'Der Namensraum «$1» ist in {{SITENAME}} nicht vorhanden.',
 
 # Special:LinkSearch
-'linksearch-text' => 'Diese Spezialseite ermöglicht die Suche nach Seiten, in denen bestimmte Weblinks enthalten sind. Dabei können Platzhalter wie beispielsweise <code>*.beispiel.ch</code> benutzt werden. Es muss mindestens eine Top-Level-Domain, z. B. «*.org». angegeben werden. <br />Unterstützte Protokolle: <code>$1</code> (Diese bitte nicht bei der Suchanfrage angeben.)',
+'linksearch-text' => 'Diese Spezialseite ermöglicht die Suche nach Seiten, in denen bestimmte Weblinks enthalten sind. Dabei können Platzhalter wie beispielsweise <code>*.beispiel.ch</code> benutzt werden. Es muss mindestens eine Top-Level-Domain, z. B. «*.org». angegeben werden. <br />{{PLURAL:$2|Unterstütztes Protokoll|Unterstützte Protokolle}}: <code>$1</code> (Standard ist http, falls kein Protokoll angegeben ist.)',
 
-# E-mail user
-'emailpagetext' => 'Du kannst dem Benutzer mit dem unten stehenden Formular ein E-Mail senden.
-Als Absender wird die E-Mail-Adresse aus deinen [[Special:Preferences|Einstellungen]] eingetragen, damit der Benutzer dir antworten kann.',
+# Email user
+'emailpagetext' => 'Du kannst {{GENDER:$1|dem Benutzer|der Benutzerin}} mit dem unten stehenden Formular ein E-Mail senden.
+Als Absender wird die E-Mail-Adresse aus deinen [[Special:Preferences|Einstellungen]] eingetragen, damit {{GENDER:$1|der Benutzer|die Benutzerin}} dir direkt antworten kann.',
 'defemailsubject' => '{{SITENAME}} - E-Mail von Benutzer «$1»',
 'emailnotarget' => 'Nicht vorhandener oder ungültiger Benutzername für den Empfang eines E-Mails.',
 'emailccme' => 'Sende eine Kopie des E-Mails an mich',
@@ -359,7 +345,7 @@ Als Absender wird die E-Mail-Adresse aus deinen [[Special:Preferences|Einstellun
 
 # Watchlist
 'addedwatchtext' => 'Die Seite «[[:$1]]» wurde zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.
-Spätere Änderungen an dieser Seite und der zugehörigen Diskussionsseite werden dort gelistet und die Seite wird in der [[Special:RecentChanges|Liste der letzten Änderungen]] in Fettschrift angezeigt.',
+Spätere Änderungen an dieser Seite und der zugehörigen Diskussionsseite werden dort gelistet.',
 'removedwatchtext' => 'Die Seite «[[:$1]]» wurde von deiner [[Special:Watchlist|Beobachtungsliste]] entfernt.',
 'iteminvalidname' => 'Problem mit dem Eintrag «$1», ungültiger Name.',
 
@@ -387,7 +373,7 @@ Spätere Änderungen an dieser Seite und der zugehörigen Diskussionsseite werde
 'protect-locked-blocked' => "Du kannst den Seitenschutz nicht ändern, da dein Benutzerkonto gesperrt ist. Hier sind die aktuellen Seitenschutz-Einstellungen der Seite '''«$1»:'''",
 'protect-locked-dblock' => "Die Datenbank ist gesperrt, der Seitenschutz kann daher nicht geändert werden. Hier sind die aktuellen Seitenschutz-Einstellungen der Seite '''«$1»:'''",
 'protect-locked-access' => "Dein Benutzerkonto verfügt nicht über die notwendigen Rechte zur Änderung des Seitenschutzes. Hier sind die aktuellen Seitenschutzeinstellungen der Seite '''«$1»:'''",
-'protect-fallback' => 'Es wird die «$1»-Berechtigung benötigt.',
+'protect-fallback' => 'Nur Benutzern mit der «$1»-Berechtigung erlauben.',
 'minimum-size' => 'Mindestgrösse',
 'maximum-size' => 'Maximalgrösse:',
 
@@ -411,6 +397,7 @@ Im [[Special:Log/delete|Lösch-Logbuch]] findest du eine Übersicht der gelösch
 
 # Block/unblock
 'ipb-confirmhideuser' => 'Du bist gerade dabei, einen Benutzer im Modus «Benutzer verstecken» zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchtest du das wirklich tun?',
+'ipb-unblock-addr' => '«$1» freigeben',
 'ipb-blocklist-contribs' => 'Benutzerbeiträge von «$1»',
 'autoblocker' => 'Automatische Sperre, da du eine gemeinsame IP-Adresse mit [[User:$1|$1]] benutzt. Grund der Benutzersperre: «$2».',
 'blocklogentry' => 'sperrte «[[$1]]» für den Zeitraum: $2 $3',
@@ -418,7 +405,7 @@ Im [[Special:Log/delete|Lösch-Logbuch]] findest du eine Übersicht der gelösch
 'unblocklogentry' => 'hob die Sperre von «$1» auf',
 'ipb_already_blocked' => '«$1» wurde bereits gesperrt.',
 'ipb-needreblock' => '«$1» ist bereits gesperrt. Möchtest du die Sperrparameter ändern?',
-'ip_range_toolarge' => 'Adressbereiche, die größer als /$1 sind, sind nicht erlaubt.',
+'ip_range_toolarge' => 'Adressbereiche, die grösser als /$1 sind, sind nicht erlaubt.',
 'cant-see-hidden-user' => 'Der Benutzer, den du versuchst zu sperren, wurde bereits gesperrt und verborgen. Da du das «hideuser»-Recht nicht hast, kannst du die Benutzersperre nicht sehen und nicht bearbeiten.',
 
 # Move page
@@ -495,7 +482,7 @@ Weitere werden standardmässig nicht angezeigt.
 * gpslongitude
 * gpsaltitude',
 
-# EXIF tags
+# Exif tags
 'exif-jpeginterchangeformatlength' => 'Grösse der JPEG-Daten in Bytes',
 'exif-referenceblackwhite' => 'Schwarz/Weiss-Referenzpunkte',
 'exif-maxaperturevalue' => 'Grösste Blende',
@@ -508,36 +495,39 @@ Weitere werden standardmässig nicht angezeigt.
 
 'exif-isospeedratings-overflow' => 'Grösser als 65535',
 
-# E-mail address confirmation
+# Email address confirmation
 'confirmemail_text' => '{{SITENAME}} erfordert, dass du deine E-Mail-Adresse bestätigst (authentifizierst), bevor du die erweiterten E-Mail-Funktionen benutzen kannst. Klicke bitte auf die unten stehende, mit «Bestätigungscode zuschicken» beschriftete Schaltfläche, damit ein automatisch erstelltes E-Mail an die angegebene Adresse geschickt wird. Dieses E-Mail enthält eine Web-Adresse mit einem Bestätigungscode. Indem du diese Webseite in deinem Webbrowser öffnest, bestätigst du, dass die angegebene E-Mail-Adresse korrekt und gültig ist.',
 'confirmemail_pending' => 'Es wurde dir bereits ein Bestätigungscode per E-Mail zugeschickt.
 Wenn du dein Benutzerkonto erst vor kurzem erstellt hast, warte bitte noch ein paar Minuten auf das E-Mail, bevor du einen neuen Code anforderst.',
+'confirmemail_sent' => 'Das Bestätigungs-E-Mail wurde verschickt.',
+'confirmemail_sendfailed' => '{{SITENAME}} konnte das Bestätigungs-E-Mail nicht an dich versenden.
+Bitte prüfe die E-Mail-Adresse auf ungültige Zeichen.
+
+Rückmeldung des Mailservers: $1',
 'confirmemail_body' => 'Hallo,
 
-jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat das Benutzerkonto «$2» in {{SITENAME}} registriert.
+jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat das Benutzerkonto «$2» bei {{SITENAME}} registriert.
 
-Um die E-Mail-Funktion von {{SITENAME}} (wieder) zu aktivieren und um zu bestätigen,
-dass dieses Benutzerkonto wirklich zu deiner E-Mail-Adresse und damit zu dir gehört, öffne bitte die folgende Web-Adresse:
+Um die E-Mail-Funktionen von {{SITENAME}} (wieder) zu aktivieren und um zu bestätigen,
+dass dieses Benutzerkonto wirklich zu deiner E-Mail-Adresse und damit zu dir gehört, öffne bitte folgenden Link in deinem Browser:
 
 $3
 
-Sollte die vorstehende Adresse in deinem E-Mail-Programm über mehrere Zeilen gehen, musst du sie allenfalls per Hand in die Adresszeile deines Web-Browsers einfügen.
-
 Wenn du das genannte Benutzerkonto *nicht* registriert hast, folge diesem Link, um den Bestätigungsprozess abzubrechen:
 
 $5
 
-Dieser Bestätigungscode ist gültig bis $6, $7 Uhr.',
+Dieser Bestätigungscode ist gültig bis zum $6, $7 Uhr.',
 'confirmemail_body_changed' => 'Jemand mit der IP-Adresse $1, wahrscheinlich du selbst,
-hat die E-Mail-Adresse des Benutzerkontos «$2» zu dieser Adresse auf {{SITENAME}} geändert.
+hat die E-Mail-Adresse des Benutzerkontos «$2» zu dieser Adresse bei {{SITENAME}} geändert.
 
-Um zu bestätigen, dass dieses Benutzerkonto wirklich dir gehört
-und um die E-Mail-Features auf {{SITENAME}} zu reaktivieren, öffne diesen Link in deinem Browser:
+Um zu bestätigen, dass dieses Benutzerkonto wirklich dir gehört,
+und um die E-Mail-Features bei {{SITENAME}} zu reaktivieren, öffne diesen Link in deinem Browser:
 
 $3
 
 Falls das Konto *nicht* dir gehört, folge diesem Link,
-um die E-Mail-Adress-Bestätigung abzubrechen:
+um die E-Mail-Bestätigung abzubrechen:
 
 $5
 
@@ -562,7 +552,7 @@ Dieser Bestätigungscode ist gültig bis $4.',
 'autosumm-new' => 'Die Seite wurde neu angelegt: «$1»',
 
 # Live preview
-'livepreview-error' => 'Verbindung nicht möglich: $1 «$1». Bitte die normale Vorschau benutzen.',
+'livepreview-error' => 'Verbindung nicht möglich: $1 «$2». Bitte die normale Vorschau benutzen.',
 
 # Watchlist editor
 'watchlistedit-normal-explain' => 'Dies sind die Einträge deiner Beobachtungsliste. Um Einträge zu entfernen, markiere die Kästchen neben den Einträgen und klicke am Ende der Seite auf «{{int:Watchlistedit-normal-submit}}». Du kannst deine Beobachtungsliste auch im [[Special:EditWatchlist/raw|Listenformat bearbeiten]].',
index 31a782a..5ff6250 100644 (file)
@@ -20,6 +20,7 @@
  * @author Pill
  * @author Raimond Spekking (Raymond) <raimond.spekking@gmail.com> since January 2007
  * @author SVG
+ * @author Se4598
  * @author The Evil IP address
  * @author Tim Bartel (avatar) <wikipedia@computerkultur.org> formal addressing
  * @author Tischbeinahe
@@ -66,21 +67,18 @@ Nutzen Sie bitte [//translatewiki.net/ translatewiki.net], das Lokalisierungspro
 'namespaceprotected' => "Sie haben nicht die erforderliche Berechtigung, um Seiten im Namensraum '''$1''' bearbeiten zu können.",
 'customcssprotected' => 'Sie haben nicht die Berechtigung diese CSS enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
 'customjsprotected' => 'Sie haben nicht die Berechtigung, diese JavaScript enthaltende Seite zu bearbeiten, da es sich hierbei um die persönlichen Einstellungen eines anderen Benutzers handelt.',
-'exception-nologin-text' => 'Diese Seite oder Aktion erfordert, dass Sie auf diesem Wiki angemeldet sind.',
+'exception-nologin-text' => 'Sie müssen sich [[Special:Userlogin|anmelden]], um auf diese Seite oder Aktion zugreifen zu können.',
 
 # Login and logout pages
 'logouttext' => "'''Sie sind nun abgemeldet.'''
 
-Sie können {{SITENAME}} jetzt anonym weiternutzen, oder sich erneut unter demselben oder einem anderen Benutzernamen [[Special:UserLogin|anmelden]].
 Beachten Sie, dass einige Seiten noch anzeigen können, dass Sie angemeldet sind, solange Sie nicht Ihren Browsercache geleert haben.",
-'welcomecreation' => '== Willkommen, $1! ==
-
-Ihr Benutzerkonto wurde soeben eingerichtet.
-Vergessen Sie nicht, Ihre [[Special:Preferences|Einstellungen]] anzupassen.',
+'welcomecreation-msg' => 'Ihr Benutzerkonto wurde erstellt.
+Vergissen Sie nicht, Ihre [[Special:Preferences|{{SITENAME}}-Einstellungen]] zu ändern.',
 'yourdomainname' => 'Ihre Domain:',
 'password-change-forbidden' => 'Sie können auf diesem Wiki keine Passwörter ändern.',
 'externaldberror' => 'Entweder es liegt ein Fehler bei der externen Authentifizierung vor oder Sie dürfen Ihr externes Benutzerkonto nicht aktualisieren.',
-'nologin' => "Sie haben kein Benutzerkonto? '''$1'''.",
+'nologin' => 'Sie haben kein Benutzerkonto? $1.',
 'gotaccount' => "Haben Sie bereits ein Benutzerkonto? '''$1'''.",
 'userexists' => 'Dieser Benutzername ist schon vergeben.
 Bitte wählen Sie einen anderen.',
@@ -123,27 +121,30 @@ Besucher, die diese IP-Adresse verwenden, können momentan keine Benutzerkonten
 
 Falls das Benutzerkonto irrtümlich angelegt wurde, können Sie diese Nachricht ignorieren.',
 'login-throttled' => 'Sie haben zu oft versucht, sich anzumelden.
-Bitte warten Sie, bevor Sie es erneut probieren.',
+Bitte warten Sie $1, bevor Sie es erneut probieren.',
 
 # Change password dialog
 'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschließen, müssen Sie jetzt ein neues Passwort wählen.',
 'resetpass_text' => '<!-- Ergänzen Sie den Text hier -->',
-'resetpass_success' => 'Ihr Passwort wurde erfolgreich geändert. Es folgt die Anmeldung …',
+'changepassword-success' => 'Ihr Passwort wurde erfolgreich geändert.',
 'resetpass-no-info' => 'Sie müssen sich anmelden, um auf diese Seite direkt zuzugreifen.',
 'resetpass-wrong-oldpass' => 'Ungültiges temporäres oder aktuelles Passwort.
 Möglicherweise haben Sie Ihr Passwort bereits erfolgreich geändert oder ein neues temporäres Passwort beantragt.',
 
 # Special:PasswordReset
-'passwordreset-text' => 'Bitte dieses Formular ausfüllen, um per E-Mail eine Erinnerung zu den Anmeldeinformationen Ihres Benutzerkontos zu erhalten.',
-'passwordreset-pretext' => '{{PLURAL:$1||Geben Sie eines der folgenden Daten ein.}}',
-'passwordreset-capture-help' => 'Sofern Sie dieses Kästchen ankreuzen, wird die E-Mail-Nachricht mit dem temporären Passwort, sowohl Ihnen angezeigt, als auch dem Benutzer zugesandt.',
-'passwordreset-emailtext-ip' => 'Jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat eine Erinnerung an Ihre Benutzerkonteninformationen für {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}} mit dieser E-Mail-Adresse verknüpft:
+'passwordreset-capture-help' => 'Wenn Sie dieses Kästchen ankreuzen, wird die E-Mail-Nachricht mit dem temporären Passwort sowohl Ihnen angezeigt als auch dem Benutzer zugesandt.',
+'passwordreset-emailtext-ip' => 'Jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat eine Zurücksetzung Ihres
+Passworts bei {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}}
+mit dieser E-Mail-Adresse verknüpft:
 
 $2
 
 {{PLURAL:$3|Dieses temporäre Passwort läuft|Diese temporären Passwörter laufen}} innerhalb von {{PLURAL:$5|einem Tag|$5 Tagen}} ab.
-Sie sollten sich anmelden und ein neues Passwort vergeben. Falls jemand anderes diese Anfrage getätigt hat oder Sie sich wieder an Ihr ursprüngliches Passwort erinnern können und es nicht länger ändern möchten, können Sie diese Nachricht ignorieren und weiterhin Ihr altes Passwort benutzen.',
-'passwordreset-emailtext-user' => 'Benutzer $1 auf {{SITENAME}} hat eine Erinnerung an Ihre Benutzerkonteninformationen für {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}} mit dieser E-Mail-Adresse verknüpft:
+Sie sollten sich anmelden und ein neues Passwort vergeben. Falls jemand anderes diese
+Anfrage getätigt hat oder Sie sich wieder an Ihr ursprüngliches Passwort erinnern können und es nicht länger
+ändern möchten, können Sie diese Nachricht ignorieren und weiterhin Ihr altes
+Passwort benutzen.',
+'passwordreset-emailtext-user' => 'Benutzer $1 bei {{SITENAME}} hat eine Zurücksetzung Ihres Passworts bei {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}} mit dieser E-Mail-Adresse verknüpft:
 
 $2
 
@@ -157,7 +158,7 @@ $2
 'sig_tip' => 'Ihre Signatur mit Zeitstempel',
 
 # Edit pages
-'anoneditwarning' => "Sie bearbeiten diese Seite unangemeldet. Wenn Sie sie speichern, wird Ihre aktuelle IP-Adresse in der Versionsgeschichte aufgezeichnet und ist damit unwiderruflich '''öffentlich''' einsehbar.",
+'anoneditwarning' => "Sie bearbeiten diese Seite unangemeldet. Wenn Sie sie abspeichern, wird Ihre aktuelle IP-Adresse in der Versionsgeschichte aufgezeichnet und ist damit unwiderruflich '''öffentlich''' einsehbar.",
 'missingsummary' => "'''Hinweis:''' Sie haben keine Zusammenfassung angegeben. Wenn Sie erneut auf „{{int:savearticle}}“ klicken, wird Ihre Änderung ohne Zusammenfassung übernommen.",
 'missingcommenttext' => 'Ihr Abschnitt enthält keinen Text.',
 'missingcommentheader' => "'''Achtung:''' Sie haben kein Betreff/Überschrift eingegeben. Wenn Sie erneut auf „{{int:savearticle}}“ klicken, wird Ihre Bearbeitung ohne Überschrift gespeichert.",
@@ -195,7 +196,7 @@ Bitte fügen Sie alle Informationen jeder Anfrage hinzu, die Sie stellen.",
 Vermutlich wurde er verschoben oder gelöscht, nachdem Sie die Seite aufgerufen haben.',
 'loginreqpagetext' => 'Sie müssen sich $1, um Seiten lesen zu können.',
 'newarticletext' => "Sie sind einem Link zu einer Seite gefolgt, die nicht vorhanden ist.
-Um diese Seite anzulegen, tragen Sie Ihren Text in das untenstehende Bearbeitungsfeld ein (siehe die [[{{MediaWiki:Helppage}}|Hilfeseite]] für weitere Informationen).
+Um diese Seite anzulegen, tragen Sie Ihren Text in das untenstehende Bearbeitungsfeld ein (weitere Informationen auf der [[{{MediaWiki:Helppage}}|Hilfeseite]]).
 Sofern Sie fälschlicherweise hier sind, klicken Sie auf die Schaltfläche '''Zurück''' Ihres Browsers.",
 'anontalkpagetext' => "----''Diese Seite dient dazu, einem nicht angemeldeten Benutzer Nachrichten zu hinterlassen. Es wird seine IP-Adresse zur Identifizierung verwendet. IP-Adressen können von mehreren Benutzern gemeinsam verwendet werden. Wenn Sie mit den Kommentaren auf dieser Seite nichts anfangen können, richten sie sich vermutlich an einen früheren Inhaber Ihrer IP-Adresse und Sie können sie ignorieren. Sie können sich auch ein [[Special:UserLogin/signup|Benutzerkonto erstellen]] oder sich [[Special:UserLogin|anmelden]], um künftig Verwechslungen mit anderen anonymen Benutzern zu vermeiden.''",
 'noarticletext' => 'Diese Seite enthält momentan noch keinen Text.
@@ -239,7 +240,7 @@ Das untere Textfeld enthält Ihre Änderungen.
 Bitte fügen Sie Ihre Änderungen in das obere Textfeld ein.
 '''Nur''' der Inhalt des oberen Textfeldes wird gespeichert, wenn Sie auf „{{int:savearticle}}“ klicken.",
 'yourtext' => 'Ihr Text',
-'nonunicodebrowser' => "'''Achtung:''' Ihr Browser kann Unicode-Zeichen nicht richtig verarbeiten. Bitte verwenden Sie einen anderen Browser um Seiten zu bearbeiten.",
+'nonunicodebrowser' => "'''Achtung: Ihr Browser kann Unicode-Zeichen nicht richtig verarbeiten.''' Es wird eine Hilfsroutine eingesetzt, um Ihnen zu erlauben, Seiten sicher zu bearbeiten: Nicht-ASCII-Zeichen werden dabei im Bearbeitungsfenster als hexadezimale Codes angezeigt.",
 'editingold' => "'''Achtung: Sie bearbeiten eine alte Version dieser Seite. Sofern Sie sie speichern, werden alle neueren Versionen überschrieben.'''",
 'copyrightwarning' => "'''Bitte kopieren Sie keine Webseiten, die nicht Ihre eigenen sind, benutzen Sie keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!'''<br />
 Sie geben uns hiermit Ihre Zusage, dass Sie den Text '''selbst verfasst''' haben, dass der Text Allgemeingut '''(public domain)''' ist, oder dass der '''Urheber''' seine '''Zustimmung''' gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weisen Sie bitte auf der Diskussionsseite darauf hin.
@@ -248,7 +249,7 @@ Sie geben uns hiermit Ihre Zusage, dass Sie den Text '''selbst verfasst''' haben
 Reichen Sie keine Texte ein, falls Sie nicht wollen, dass diese ohne Einschränkung geändert werden können.
 
 Sie bestätigen hiermit auch, dass Sie diese Texte selbst geschrieben haben oder diese von einer gemeinfreien Quelle kopiert haben
-(siehe $1 für weitere Einzelheiten). '''ÜBERTRAGEN SIE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!'''",
+(weitere Einzelheiten unter $1). '''ÜBERTRAGEN SIE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!'''",
 'longpageerror' => "'''Fehler: Der Text, den Sie zu speichern versuchen, ist {{PLURAL:$1|ein Kilobyte|$1 Kilobyte}} groß. Dies ist größer als das erlaubte Maximum von {{PLURAL:$2|ein Kilobyte|$2 Kilobyte}}.'''
 Er kann nicht gespeichert werden.",
 'readonlywarning' => "'''Achtung: Die Datenbank wurde für Wartungsarbeiten gesperrt, so dass Ihre Änderungen derzeit nicht gespeichert werden können.
@@ -265,6 +266,9 @@ Grund für die Sperre: $1",
 Bitte prüfen Sie sorgfältig, ob die erneute Seitenerstellung den Richtlinien entspricht.
 Zu Ihrer Information folgt das Lösch- und Verschiebungs-Logbuch mit der Begründung für die vorhergehende Löschung:",
 'edit-no-change' => 'Ihre Bearbeitung wurde ignoriert, da keine Änderung an dem Text vorgenomme wurde.',
+'postedit-confirmation' => 'Ihre Bearbeitung wurde gespeichert.',
+'editwarning-warning' => 'Das Verlassen dieser Seite kann dazu führen, dass Ihre Änderungen verloren gehen.
+Wenn Sie angemeldet sind, können Sie das Anzeigen dieser Warnung im „Bearbeiten“-Bereich Ihrer Einstellungen abschalten.',
 
 # "Undo" feature
 'undo-success' => 'Die Bearbeitung kann rückgängig gemacht werden.
@@ -315,24 +319,25 @@ Stellen Sie sicher, dass die Versionsgeschichte einer Seite historisch korrekt i
 'mergehistory-fail' => 'Versionsvereinigung nicht möglich, bitte prüfen Sie die Seite und die Zeitangaben.',
 
 # Search results
-'searchsubtitle' => 'Ihre Suchanfrage: „[[:$1]]“ ([[Special:Prefixindex/$1|alle mit „$1“ beginnenden Seiten]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Seiten, die nach „$1“ verlinken]])',
-'searchsubtitleinvalid' => 'Ihre Suchanfrage: „$1“.',
 'toomanymatches' => 'Die Anzahl der Suchergebnisse ist zu groß, bitte versuchen Sie eine andere Abfrage.',
 'searchmenu-new' => "'''Erstellen Sie die Seite „[[:$1]]“ in diesem Wiki.'''",
 'search-suggest' => 'Meinten Sie „$1“?',
-'nonefound' => "'''Hinweis:''' Es werden standardmäßig nur einige Namensräume durchsucht. Setzen Sie ''all:'' vor Ihren Suchbegriff, um alle Seiten (inkl. Diskussionsseiten, Vorlagen usw.) zu durchsuchen oder gezielt den Namen des zu durchsuchenden Namensraumes.",
 'search-nonefound' => 'Für Ihre Suchanfrage wurden keine Ergebnisse gefunden.',
 'searchdisabled' => 'Die {{SITENAME}} Suche wurde deaktiviert. Sie können unterdessen mit Google suchen. Bitte bedenken Sie, dass der Suchindex von {{SITENAME}} veraltet sein kann.',
 
 # Preferences page
-'prefsnologintext' => 'Sie müssen <span class="plainlinks">[{{fullurl:{{#special:UserLogin}}|returnto=$1}} angemeldet]</span> sein, um Ihre Einstellungen ändern zu können.',
-'prefs-help-watchlist-token' => 'Das Ausfüllen dieses Feldes mit einem geheimen Schlüssel generiert einen RSS-Feed für Ihre Beobachtungsliste.
-Jeder, der diesen Schlüssel kennt, kann Ihre Beobachtungsliste einsehen. Wählen Sie also einen sicheren Wert.
-Hier ein zufällig generierter Wert, den Sie verwenden können: $1',
+'prefsnologintext2' => 'Sie müssen sich $1, um Ihre Benutzereinstellungen festzulegen.',
+'prefs-help-watchlist-token2' => 'Dies ist der geheime Schlüssel zum Webfeed Ihrer Beobachtungsliste.
+Jeder, der ihn kennt, kann Ihre Beobachtungsliste lesen. Teilen Sie ihn deshalb nicht.
+[[Special:ResetTokens|Klicken Sie hier, wenn Sie ihn zurücksetzen müssen]].',
 'savedprefs' => 'Ihre Einstellungen wurden gespeichert.',
 'prefs-reset-intro' => 'Sie können diese Seite verwenden, um die Einstellungen auf die Standards zurückzusetzen.
 Dies kann nicht mehr rückgängig gemacht werden.',
-'prefs-help-realname' => 'Optional. Damit kann Ihr bürgerlicher Name Ihren Beiträgen zugeordnet werden.',
+'yourgender' => 'Welches Geschlecht haben Sie?',
+'prefs-help-gender' => 'Dies ist eine freiwillige Angabe.
+Die Software nutzt sie, um Sie anzureden sowie als Hinweis für andere durch Verwendung des zutreffenden grammatikalischen Geschlechts.
+Diese Information ist öffentlich.',
+'prefs-help-realname' => 'Dies ist eine freiwillige Angabe. Damit kann Ihr bürgerlicher Name Ihren Beiträgen zugeordnet werden.',
 'prefs-help-email' => 'Die Angabe einer E-Mail-Adresse ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, sofern Sie Ihr Passwort vergessen haben.',
 'prefs-help-email-others' => 'Mit anderen Benutzern können Sie auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass Sie Ihre Identität offenlegen müssen.',
 
@@ -348,7 +353,7 @@ Dies kann nicht mehr rückgängig gemacht werden.',
 'userrights-unchangeable-col' => 'Gruppenzugehörigkeit, die Sie nicht ändern dürfen',
 
 # Recent changes
-'recentchanges-summary' => "Auf dieser Seite können Sie die letzten Änderungen auf '''{{SITENAME}}''' nachverfolgen.",
+'recentchanges-summary' => 'Auf dieser Seite können Sie die letzten Änderungen in diesem Wiki nachverfolgen.',
 'recentchanges-feed-description' => 'Verfolgen Sie mit diesem Feed die letzten Änderungen in {{SITENAME}}.',
 
 # Recent changes linked
@@ -356,7 +361,7 @@ Dies kann nicht mehr rückgängig gemacht werden.',
 Seiten auf Ihrer [[Special:Watchlist|Beobachtungsliste]] sind '''fett''' dargestellt.",
 
 # Upload
-'uploadnologintext' => 'Sie müssen [[Special:UserLogin|angemeldet sein]], um Dateien hochladen zu können.',
+'uploadnologintext' => 'Sie müssen sich $1 um Dateien hochladen zu können.',
 'uploadtext' => "Benutzen Sie dieses Formular, um neue Dateien hochzuladen.
 
 Gehen Sie zu der [[Special:FileList|Liste hochgeladener Dateien]], um vorhandene Dateien zu suchen und anzuzeigen. Siehe auch das [[Special:Log/upload|Datei-]] und [[Special:Log/delete|Lösch-Logbuch]].
@@ -397,10 +402,10 @@ Bitte überprüfen Sie die <code>file_uploads</code>-Einstellung.',
 Bitte geben Sie der Datei einen Namen, der den Inhalt besser beschreibt.",
 
 'upload-file-error-text' => 'Bei der Erstellung einer temporären Datei auf dem Server ist ein interner Fehler aufgetreten.
-Bitte informieren Sie einen [[Special:ListUsers/sysop|System-Administrator]].',
+Bitte informieren Sie einen [[Special:ListUsers/sysop|Administrator]].',
 'upload-misc-error-text' => 'Beim Hochladen ist ein unbekannter Fehler aufgetreten.
-Prüfen Sie die URL auf Fehler, den Online-Status der Seite und versuchem Sie erneut.
-Wenn das Problem weiter besteht, informieren Sie einen [[Special:ListUsers/sysop|System-Administrator]].',
+Prüfen Sie die URL auf Fehler, den Online-Status der Seite und versuchen es erneut.
+Wenn das Problem weiter besteht, informieren Sie einen [[Special:ListUsers/sysop|Administrator]].',
 
 # Special:UploadStash
 'uploadstash-badtoken' => 'Das Entfernen der vorab gespeicherten Dateien war erfolglos, vielleicht weil Ihre Sitzungsdaten abgelaufen sind. Bitte versuchen Sie es erneut.',
@@ -409,7 +414,7 @@ Wenn das Problem weiter besteht, informieren Sie einen [[Special:ListUsers/sysop
 'img-auth-nopathinfo' => 'PATH_INFO fehlt.
 Ihr Server ist nicht dafür eingerichtet, diese Information weiterzugeben.
 Sie könnte CGI-gestützt sein und kann daher img_auth nicht ermöglichen.
-Siehe http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Siehe auch http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'img-auth-nologinnWL' => 'Sie sind nicht angemeldet und „$1“ ist nicht in der weißen Liste.',
 'img-auth-isdir' => 'Sie versuchen, auf ein Verzeichnis „$1“ zuzugreifen.
 Nur Dateizugriff ist erlaubt.',
@@ -451,10 +456,10 @@ Bitte prüfen Sie, ob sie korrekt von der Quelle übertragen wurde.',
 'cachedspecial-viewing-cached-ttl' => 'Sie sehen die gecachte Version dieser Seite, die bis zu $1 alt sein kann.',
 'cachedspecial-viewing-cached-ts' => 'Sie sehen die gecachte Version dieser Seite, die möglicherweise nicht aktuell ist.',
 
-# E-mail user
+# Email user
 'mailnologintext' => 'Sie müssen [[Special:UserLogin|angemeldet sein]] und eine bestätigte E-Mail-Adresse in Ihren [[Special:Preferences|Einstellungen]] eingetragen haben, um anderen Benutzern E-Mails schicken zu können.',
-'emailpagetext' => 'Sie könnent dem Benutzer mit dem unten stehenden Formular eine E-Mail senden.
-Als Absender wird die E-Mail-Adresse aus ihren [[Special:Preferences|Einstellungen]] eingetragen, damit der Benutzer Ihnen antworten kann.',
+'emailpagetext' => 'Sie können {{GENDER:$1|dem Benutzer|der Benutzerin}} mit dem unten stehenden Formular eine E-Mail senden.
+Als Absender wird die E-Mail-Adresse aus Ihren [[Special:Preferences|Einstellungen]] eingetragen, damit {{GENDER:$1|der Benutzer|die Benutzerin}} Ihnen direkt antworten kann.',
 'emailccsubject' => 'Kopie Ihrer Nachricht an $1: $2',
 'emailsenttext' => 'Ihre E-Mail wurde verschickt.',
 
@@ -465,20 +470,14 @@ Als Absender wird die E-Mail-Adresse aus ihren [[Special:Preferences|Einstellung
 'watchnologintext' => 'Sie müssen [[Special:UserLogin|angemeldet]] sein, um Ihre Beobachtungsliste bearbeiten zu können.',
 'addedwatchtext' => 'Die Seite „[[:$1]]“ wurde zu Ihrer [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.
 
-Spätere Änderungen an dieser Seite und der dazugehörigen Diskussionsseite werden dort gelistet und
-in der Übersicht der [[Special:RecentChanges|letzten Änderungen]] in Fettschrift dargestellt.',
+Spätere Änderungen an dieser Seite und der dazugehörigen Diskussionsseite werden dort gelistet.',
 'removedwatchtext' => 'Die Seite „[[:$1]]“ wurde von Ihrer [[Special:Watchlist|Beobachtungsliste]] entfernt.',
-'watchnochange' => 'Keine der von Ihnen beobachteten Seiten wurde während des angezeigten Zeitraums bearbeitet.',
 'watchlist-details' => 'Sie beobachten {{PLURAL:$1|1 Seite|$1 Seiten}}.',
 'watchlistcontains' => 'Ihre Beobachtungsliste enthält $1 {{PLURAL:$1|Seite|Seiten}}.',
 
 '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
 
@@ -486,16 +485,17 @@ Kontakt zum Bearbeiter:
 E-Mail: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Es werden Ihnen solange keine weiteren Benachrichtigungs-E-Mails gesendet, bis Sie die Seite wieder besucht haben. Auf Ihrer Beobachtungsliste können Sie alle Benachrichtigungsmarkierungen zusammen zurücksetzen.
+Bei weiterer Aktivität auf der Seite werden Ihnen so lange keine weiteren Benachrichtigungs-E-Mails gesendet, bis Sie die Seite wieder angemeldet besucht haben.
+Auf Ihrer Beobachtungsliste können Sie alle Benachrichtigungsmarkierungen zusammen zurücksetzen.
 
-             Das freundliche {{SITENAME}}-Benachrichtigungssystem
+Ihr freundliches {{SITENAME}}-Benachrichtigungssystem
 
 --
-Um die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuchen Sie {{canonicalurl:{{#special:Preferences}}}}
+Um die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuchen Sie {{canonicalurl:{{#special:Preferences}}}}.
 
-Um die Einstellungen Ihrer Beobachtungsliste anzupassen, besuchen Sie {{canonicalurl:{{#special:EditWatchlist}}}}
+Um die Einstellungen Ihrer Beobachtungsliste anzupassen, besuchen Sie {{canonicalurl:{{#special:EditWatchlist}}}}.
 
-Um diese Seite von Ihrer Beobachtungsliste zu entfernen, besuchen Sie $UNWATCHURL
+Um diese Seite von Ihrer Beobachtungsliste zu entfernen, besuchen Sie $UNWATCHURL.
 
 Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
@@ -554,22 +554,22 @@ Bitte geben Sie den Grund für die Sperre an.',
 'movepagetext' => "Mit untenstehendem Formular können Sie eine Seite umbenennen, indem Sie sie mitsamt allen Versionen auf einen neuen Titel verschieben.
 Der alte Titel wird danach zum neuen weiterleiten.
 Sie können Weiterleitungen, die auf den Originaltitel verlinken, automatisch korrigieren lassen.
-Stellen Sie sicher, dass Sie im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|kaputten Weiterleitungen]] überprüfen.
+Stellen Sie sicher, dass Sie im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfen.
 Sie sind dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.
 
-Die Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, diese ist leer oder eine Weiterleitung ohne Versionsgeschichte.
-Dies bedeutet, dass Sie die Umbenennung rückgängig machen können, sofern Sie einen Fehler gemacht haben. Sie können hingegen keine Seite überschreiben.
+Die Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, letztere ist eine Weiterleitung ohne Versionsgeschichte.
+Dies bedeutet, dass Sie die Umbenennung rückgängig machen können, sofern Sie einen Fehler gemacht haben. Sie können hingegen keine existierende Seite überschreiben.
 
 '''Warnung!'''
 Die Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.
 Sie sollten daher die Konsequenzen verstanden haben, bevor Sie jetzt fortfahren.",
 'movepagetext-noredirectfixer' => "Mit untenstehendem Formular können Sie eine Seite umbenennen, indem Sie sie mitsamt allen Versionen auf einen neuen Titel verschieben.
 Der alte Titel wird danach zum neuen weiterleiten.
-Stellen Sie sicher, dass Sie im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|kaputten Weiterleitungen]] überprüfen.
+Stellen Sie sicher, dass Sie im Anschluss alle [[Special:DoubleRedirects|doppelten]] oder [[Special:BrokenRedirects|defekten Weiterleitungen]] überprüfen.
 Sie sind dafür verantwortlich, dass Links weiterhin auf das korrekte Ziel verweisen.
 
-Die Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, diese ist leer oder eine Weiterleitung ohne Versionsgeschichte.
-Dies bedeutet, dass Sie die Umbenennung rückgängig machen können, sofern Sie einen Fehler gemacht haben. Sie können hingegen keine Seite überschreiben.
+Die Seite wird '''nicht''' verschoben, sofern es bereits eine Seite mit dem vorgesehenen Titel gibt, es sei denn, diese ist eine Weiterleitung ohne Versionsgeschichte.
+Dies bedeutet, dass Sie die Umbenennung rückgängig machen können, sofern Sie einen Fehler gemacht haben. Sie können hingegen keine existierende Seite überschreiben.
 
 '''Warnung!'''
 Die Verschiebung kann weitreichende und unerwartete Folgen für häufig besuchte Seiten haben.
@@ -582,14 +582,12 @@ In diesen Fällen müssen Sie, falls gewünscht, den Inhalt der Seite von Hand v
 
 Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung bitte '''begründen.'''",
 'moveuserpage-warning' => "'''Warnung:''' Sie sind dabei, eine Benutzerseite zu verschieben. Bitte bedenken Sie, dass dadurch nur die Benutzerseite verschoben, '''nicht''' aber der Benutzer umbenannt wird.",
-'movenologin' => 'Sie sind nicht angemeldet',
 'movenologintext' => 'Sie müssen ein registrierter Benutzer und [[Special:UserLogin|angemeldet]] sein, um eine Seite zu verschieben.',
 'movenotallowed' => 'Sie haben nicht die erforderliche Berechtigung, um Seiten verschieben zu können.',
 'movenotallowedfile' => 'Sie haben nicht die erforderliche Berechtigung, um Dateien verschieben zu können.',
 'cant-move-user-page' => 'Sie haben nicht die erforderliche Berechtigung, Benutzerhauptseiten verschieben zu können.',
 'cant-move-to-user-page' => 'Sie haben nicht die Berechtigung, Seiten auf eine Benutzerseite zu verschieben (mit Ausnahme von Benutzerunterseiten).',
 'articleexists' => 'Unter diesem Namen existiert bereits eine Seite. Bitte wählen Sie einen anderen Namen.',
-'talkexists' => 'Die Seite selbst wurde erfolgreich verschoben, aber die zugehörige Diskussionsseite nicht, da bereits eine mit dem neuen Titel existiert. Bitte gleichen Sie die Inhalte von Hand ab.',
 'delete_and_move_text' => '== Löschung erforderlich ==
 
 Die Seite „[[:$1]]“ existiert bereits. Möchten Sie diese löschen, um die Seite verschieben zu können?',
@@ -606,7 +604,7 @@ Alternativ ist der Export auch mit der Syntax [[{{#Special:Export}}/{{MediaWiki:
 
 # Namespace 8 related
 'allmessagestext' => 'Dies ist eine Liste der MediaWiki-Systemtexte.
-Bitte besuchen Sie die Seiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], sofern Sie sich an der Lokalisierung von MediaWiki beteiligen möchten.',
+Bitte besuchen Sie die Seiten [https://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], sofern Sie sich an der Lokalisierung von MediaWiki beteiligen möchten.',
 
 # Special:Import
 'import-interwiki-text' => 'Wählen Sie ein Wiki und eine Seite zum Importieren aus.
@@ -645,7 +643,7 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
 'mediawarning' => "'''Warnung:''' Dieser Dateityp kann böswilligen Programmcode enthalten.
 Durch das Herunterladen und Öffnen der Datei kann Ihr Computer beschädigt werden.",
 
-# E-mail address confirmation
+# Email address confirmation
 'confirmemail_noemail' => 'Sie haben keine gültige E-Mail-Adresse in Ihren [[Special:Preferences|persönlichen Einstellungen]] eingetragen.',
 'confirmemail_text' => '{{SITENAME}} erfordert, dass Sie Ihre E-Mail-Adresse bestätigen (authentifizieren), bevor Sie die erweiterten E-Mail-Funktionen benutzen können. Klicken Sie bitte auf die unten stehende, mit „Bestätigungscode zuschicken“ beschriftete Schaltfläche, damit eine automatisch erstellte E-Mail an die angegebene Adresse geschickt wird. Diese E-Mail enthält eine Web-Adresse mit einem Bestätigungscode. Indem Sie diese Webseite in Ihrem Webbrowser öffnen, bestätigen Sie, dass die angegebene E-Mail-Adresse korrekt und gültig ist.',
 'confirmemail_pending' => 'Es wurde Ihnen bereits ein Bestätigungscode per E-Mail zugeschickt.
@@ -662,25 +660,23 @@ Rückmeldung des Mailservers: $1',
 'confirmemail_error' => 'Es gab einen Fehler bei der Bestätigung Ihrer E-Mail-Adresse.',
 'confirmemail_body' => 'Hallo,
 
-jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat das Benutzerkonto „$2“ in {{SITENAME}} registriert.
+jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat das Benutzerkonto „$2“ bei {{SITENAME}} registriert.
 
-Um die E-Mail-Funktion von {{SITENAME}} (wieder) zu aktivieren und um zu bestätigen,
-dass dieses Benutzerkonto wirklich zu Ihrer E-Mail-Adresse und damit zu Ihnen gehört, öffnen Sie bitte die folgende Web-Adresse:
+Um die E-Mail-Funktionen von {{SITENAME}} (wieder) zu aktivieren und um zu bestätigen,
+dass dieses Benutzerkonto wirklich zu Ihrer E-Mail-Adresse und damit zu Ihnen gehört, öffnen Sie bitte folgenden Link in Ihrem Browser:
 
 $3
 
-Sollte die vorstehende Adresse in Ihrem E-Mail-Programm über mehrere Zeilen gehen, müssen Sie diese eventuell per Hand in die Adresszeile Ihres Web-Browsers einfügen.
-
 Wenn Sie das genannte Benutzerkonto *nicht* registriert haben, folgen Sie diesem Link, um den Bestätigungsprozess abzubrechen:
 
 $5
 
-Dieser Bestätigungscode ist gültig bis $6, $7 Uhr.',
+Dieser Bestätigungscode ist gültig bis zum $6, $7 Uhr.',
 'confirmemail_body_set' => 'Jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst,
 hat die E-Mail-Adresse des Benutzerkontos „$2“ auf {{SITENAME}} zu dieser E-Mail-Adresse abgeändert.
 
 Um zu bestätigen, dass dieses Benutzerkonto wirklich zu Ihnen gehört
-und um die E-Mail-Funktionen auf {{SITENAME}} wieder zu aktivieren, öffnen Sie bitte den folgenden Link in Ihrem Browser:
+und um die E-Mail-Funktionen auf {{SITENAME}} zu aktivieren, öffnen Sie bitte den folgenden Link in Ihrem Browser:
 
 $3
 
index e7bdbbc..b60fd18 100644 (file)
 
 $namespaceNames = array(
        NS_MEDIA            => 'Medya',
-       NS_SPECIAL          => 'Xısusi',
-       NS_TALK             => 'Mesac',
+       NS_SPECIAL          => 'Bağse',
+       NS_TALK             => 'Vaten',
        NS_USER             => 'Karber',
-       NS_USER_TALK        => 'Karber_mesac',
-       NS_PROJECT_TALK     => '$1_mesac',
+       NS_USER_TALK        => 'Karber_vaten',
+       NS_PROJECT_TALK     => '$1_vaten',
        NS_FILE             => 'Dosya',
-       NS_FILE_TALK        => 'Dosya_mesac',
+       NS_FILE_TALK        => 'Dosya_vaten',
        NS_MEDIAWIKI        => 'MediaWiki',
-       NS_MEDIAWIKI_TALK   => 'MediaWiki_mesac',
+       NS_MEDIAWIKI_TALK   => 'MediaWiki_vaten',
        NS_TEMPLATE         => 'Şablon',
-       NS_TEMPLATE_TALK    => 'Şablon_mesac',
-       NS_HELP             => 'Peşti',
-       NS_HELP_TALK        => 'Peşti_mesac',
-       NS_CATEGORY         => 'Kategoriye',
-       NS_CATEGORY_TALK    => 'Kategoriye_mesac',
+       NS_TEMPLATE_TALK    => 'Şablon_vaten',
+       NS_HELP             => 'Desteg',
+       NS_HELP_TALK        => 'Desteg_vaten',
+       NS_CATEGORY         => 'Kategori',
+       NS_CATEGORY_TALK    => 'Kategori_vaten',
 );
 
 $namespaceAliases = array(
+       'Xısusi'               => NS_SPECIAL,
        'Werênayış'            => NS_TALK,
+       'Mesac'                => NS_TALK,
        'Karber_werênayış'     => NS_USER_TALK,
+       'Karber_mesac'         => NS_USER_TALK,
        '$1_werênayış'         => NS_PROJECT_TALK,
+       '$1_mesac'             => NS_PROJECT_TALK,
        'Dosya_werênayış'      => NS_FILE_TALK,
+       'Dosya_mesac'          => NS_FILE_TALK,
        'MediaWiki_werênayış'  => NS_MEDIAWIKI_TALK,
+       'MediaWiki_mesac'      => NS_MEDIAWIKI_TALK,
        'Şablon_werênayış'     => NS_TEMPLATE_TALK,
+       'Şablon_mesac'         => NS_TEMPLATE_TALK,
        'Desteg'               => NS_HELP,
        'Desteg_werênayış'     => NS_HELP_TALK,
+       'Peşti'                => NS_HELP,
+       'Peşti_mesac'          => NS_HELP_TALK,
        'Peşti_werênayış'      => NS_HELP_TALK,
        'Kategori'             => NS_CATEGORY,
        'Kategori_werênayış'   => NS_CATEGORY_TALK,
+       'Kategoriye'           => NS_CATEGORY,
+       'Kategoriye_mesac'     => NS_CATEGORY_TALK,
        'Kategoriye_werênayış' => NS_CATEGORY_TALK,
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'KarberéAktivi', 'AktivKarberi' ),
+       'Activeusers'               => array( 'KarberéAktivi' ),
        'Allmessages'               => array( 'MesaciPéro' ),
-       'Allpages'                  => array( 'PeleyPéro' ),
-       'Ancientpages'              => array( 'PeleyKehani' ),
-       'Badtitle'                  => array( 'SernameyoXırab' ),
+       'AllMyUploads'              => array( 'DosyeyMı' ),
+       'Allpages'                  => array( 'PeriPéro' ),
+       'Ancientpages'              => array( 'PeréKehani' ),
+       'Badtitle'                  => array( 'SernameyoXirab' ),
        'Blankpage'                 => array( 'PeréVengi' ),
-       'Block'                     => array( 'Bloqe', 'BloqeIP', 'BloqeyéKarber' ),
-       'Blockme'                   => array( 'BloqeyéMe' ),
-       'Booksources'               => array( 'KıtabeÇıme' ),
-       'BrokenRedirects'           => array( 'HeténayışoXırab' ),
-       'Categories'                => array( 'Kategoriyan' ),
-       'ChangeEmail'               => array( 'EpostaVırnayış' ),
-       'ChangePassword'            => array( 'ParolaBıvırné', 'ParolaResetke' ),
-       'ComparePages'              => array( 'PeraPéverke' ),
-       'Confirmemail'              => array( 'EpostayAraştke' ),
+       'Block'                     => array( 'Bloke', 'BlokeIP', 'BlokeyéKarberi' ),
+       'Booksources'               => array( 'ÇımeyéKıtabi' ),
+       'BrokenRedirects'           => array( 'HetenayışoXırab' ),
+       'Categories'                => array( 'Kategoriy' ),
+       'ChangeEmail'               => array( 'EpostaVurnayış' ),
+       'ChangePassword'            => array( 'ParolaBıvırn', 'ParolaResetk' ),
+       'ComparePages'              => array( 'PeraAteberd' ),
+       'Confirmemail'              => array( 'EpostaAraştk' ),
        'Contributions'             => array( 'Dekerdışi' ),
-       'CreateAccount'             => array( 'HesabVırazé' ),
-       'Deadendpages'              => array( 'PeraBıgiré' ),
-       'DeletedContributions'      => array( 'DekerdışékeBesterneyayé' ),
-       'Disambiguations'           => array( 'Arézekerdış' ),
-       'DoubleRedirects'           => array( 'HetanayışoDılet' ),
-       'EditWatchlist'             => array( 'ListeyaSeyrkerdışiVırnayış' ),
+       'CreateAccount'             => array( 'HesabVıraz' ),
+       'Deadendpages'              => array( 'PeréMerdey' ),
+       'DeletedContributions'      => array( 'DekerdışékBesterneyayé' ),
+       'DoubleRedirects'           => array( 'HetenayışoDilet' ),
+       'EditWatchlist'             => array( 'VırnayışanéListeyaTemaşek' ),
        'Emailuser'                 => array( 'EpostayaKarberi' ),
-       'Export'                    => array( 'Ateberde' ),
-       'Fewestrevisions'           => array( 'TewrtaynRewizyon' ),
-       'FileDuplicateSearch'       => array( 'KopyaydosyaCıgeyrayış', 'DıletdosyaCıgeyrayış' ),
-       'Filepath'                  => array( 'RayaDosya', 'HerunaDosya', 'CayêDosya' ),
-       'Import'                    => array( 'Azeredé', 'Atewrke' ),
-       'Invalidateemail'           => array( 'EpostaAraştkerdışiBıterkné' ),
-       'BlockList'                 => array( 'ListeyéBloqan', 'IPBloqi', 'Blokqeyé_IP' ),
-       'LinkSearch'                => array( 'GreCıgeyrayış' ),
-       'Listadmins'                => array( 'Listeyaİdarekaran' ),
+       'ExpandTemplates'           => array( 'ŞablonaHerake' ),
+       'Export'                    => array( 'Ateberd' ),
+       'Fewestrevisions'           => array( 'TewrtaynRewizyoni' ),
+       'FileDuplicateSearch'       => array( 'KopyadosyaCigérayış', 'DiletdosyaCigérayış' ),
+       'Filepath'                  => array( 'RayaDosya', 'CayDosya' ),
+       'Import'                    => array( 'Azerek' ),
+       'Invalidateemail'           => array( 'EpostayaBetale' ),
+       'BlockList'                 => array( 'ListeyaBloki', 'ListeyaBlokan', 'ListeyaBlokeyéIPi' ),
+       'LinkSearch'                => array( 'GireCıgeyrayış' ),
+       'Listadmins'                => array( 'ListeyaHeténkaran' ),
        'Listbots'                  => array( 'ListeyaBotan' ),
-       'Listfiles'                 => array( 'ListeyaDosyayan', 'DosyayaListeke', 'ListeyéResiman' ),
-       'Listgrouprights'           => array( 'ListeyaHeqandéGruban', 'HeqéGrubdeKarberan' ),
+       'Listfiles'                 => array( 'ListeyDosyayan', 'DosyayaListek', 'ListeyResiman' ),
+       'Listgrouprights'           => array( 'ListeyaHeqanéGruban', 'HeqéGrubéKarberan' ),
        'Listredirects'             => array( 'ListeyaArézekerdışan' ),
-       'Listusers'                 => array( 'ListeyaKarberan', 'KarberaListeke' ),
-       'Lockdb'                    => array( 'DBKilitke' ),
+       'Listusers'                 => array( 'ListeyaKarberan', 'KarberaListek' ),
+       'Lockdb'                    => array( 'DBKilitk' ),
        'Log'                       => array( 'Qeyd', 'Qeydi' ),
        'Lonelypages'               => array( 'PeréBéwayıri' ),
        'Longpages'                 => array( 'PeréDergi' ),
@@ -124,6 +135,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PerékeStaryayé' ),
        'Protectedtitles'           => array( 'SernameyékeStaryayé' ),
        'Randompage'                => array( 'Raştameye', 'PelayakeRaştamé' ),
+       'RandomInCategory'          => array( 'KategoriyaXoseri' ),
        'Randomredirect'            => array( 'HetenayışoRaştameye' ),
        'Recentchanges'             => array( 'VırnayışéPeyéni' ),
        'Recentchangeslinked'       => array( 'GreyéVırnayışéPeyénan' ),
@@ -140,7 +152,7 @@ $specialPageAliases = array(
        'Uncategorizedpages'        => array( 'PeleyékeKategoriyanébiyé' ),
        'Uncategorizedtemplates'    => array( 'ŞablonékeKategoriyanébiyé' ),
        'Undelete'                  => array( 'Peyserbiya' ),
-       'Unlockdb'                  => array( 'DBKılitiAke' ),
+       'Unlockdb'                  => array( 'DBKılitiAk' ),
        'Unusedcategories'          => array( 'KategoriyayékeNékariyayé' ),
        'Unusedimages'              => array( 'DosyeyékeNékariyayé' ),
        'Unusedtemplates'           => array( 'ŞablonékeNékariyayé' ),
@@ -340,10 +352,9 @@ $messages = array(
 'tog-minordefault' => "Vurnayışanê xo pêrune ''vurnayışo qıckek'' nışan bıde",
 'tog-previewontop' => 'Verqayti pela nuştışi ser de bımocne',
 'tog-previewonfirst' => 'Vurnayışo verên de verqayti tım bımocne',
-'tog-nocache' => 'Pelanê cıgeyrayoği meya xo viri',
-'tog-enotifwatchlistpages' => 'Yew pele ya zi dosyaya ke lista mına seyrkerdışi de vurnayê mı rê e-poste bırışe',
+'tog-enotifwatchlistpages' => 'Jû pele ya ki dosyawa ke lista mına seyrkerdışi de vurnae, mı rê e-mail bırışe',
 'tog-enotifusertalkpages' => 'Pela mına werênayışi ke vurnayê mı rê e-poste bırışe',
-'tog-enotifminoredits' => 'Vurnayışanê qıckekanê pelan u dosyeyan de zi mı rê e-poste bırışe',
+'tog-enotifminoredits' => 'Pelan de vurnayışanê qıckekan u dosyan de ki mı rê e-mail bırışe',
 'tog-enotifrevealaddr' => 'Adresa e-posteyê mı posteyê xeberan de bımocne',
 'tog-shownumberswatching' => 'Amarê karberanê seyrkerdoğan bımocne',
 'tog-oldsig' => 'İmzaya mewcude:',
@@ -362,6 +373,7 @@ $messages = array(
 'tog-noconvertlink' => 'Greyê sernami çerx kerdışi bıqefılne',
 'tog-norollbackdiff' => 'Peyserardışi ra dıme ferqi caverde',
 'tog-useeditwarning' => 'Wexto ke mı yew pela nizami be vurnayışanê nêqeydbiyayeyan caverdê, hay be mı ser de',
+'tog-prefershttps' => 'Ronışten akerden de  greyo itimadın bıkarne',
 
 'underline-always' => 'Tım',
 'underline-never' => 'Qet',
@@ -371,48 +383,48 @@ $messages = array(
 'editfont-style' => 'Cayê vurnayışi de terzê nuştışi:',
 'editfont-default' => 'Cıgeyrayoğo hesabiyaye',
 'editfont-monospace' => 'Terzê nusteyê sabıtcagırewtoği',
-'editfont-sansserif' => 'Babetê Sans-serifi',
-'editfont-serif' => 'Babetê serifi',
+'editfont-sansserif' => 'Fontê Sans-serifi',
+'editfont-serif' => 'Font (çêşıdê nuştey) Serif',
 
 # Dates
-'sunday' => 'Bazar',
-'monday' => 'Berarek',
-'tuesday' => 'Telete',
+'sunday' => 'Kırê (Bazar)',
+'monday' => 'Dışeme',
+'tuesday' => 'Sêşeme',
 'wednesday' => 'Çarşeme',
-'thursday' => 'Panşeme',
-'friday' => 'Éne',
-'saturday' => 'Bahdé éni',
-'sun' => 'Baz',
-'mon' => 'Bbz',
-'tue' => 'Tlt',
+'thursday' => 'Pancşeme',
+'friday' => 'Yene',
+'saturday' => 'Şeme',
+'sun' => 'Krê',
+'mon' => 'Dış',
+'tue' => 'Sêş',
 'wed' => 'Çrş',
 'thu' => 'Pşm',
-'fri' => 'Êne',
-'sat' => 'Bdé',
+'fri' => 'Yen',
+'sat' => 'Şem',
 'january' => 'Çele',
-'february' => 'Zemherı',
-'march' => 'Mert',
-'april' => 'Lisan',
-'may_long' => 'Gúlan',
+'february' => 'Sıbate',
+'march' => 'Adar (Mart)',
+'april' => 'Nisane',
+'may_long' => 'Gulane',
 'june' => 'Heziran',
-'july' => 'Temuz',
-'august' => 'Ağustos',
+'july' => 'Temuze',
+'august' => 'Tebaxe',
 'september' => 'Keşkelun',
-'october' => 'Cetan',
-'november' => 'Kelverdan',
-'december' => 'Gağand',
+'october' => 'Tışrino Verên',
+'november' => 'Tışrino Peyên',
+'december' => 'Kanun',
 'january-gen' => 'Çele',
-'february-gen' => 'Zemherı',
-'march-gen' => 'Mert',
-'april-gen' => 'Lisan',
-'may-gen' => 'Gúlan',
-'june-gen' => 'Heziran',
-'july-gen' => 'Temuz',
-'august-gen' => 'Ağustos',
+'february-gen' => 'Sıbate',
+'march-gen' => 'Adar',
+'april-gen' => 'Nisane',
+'may-gen' => 'Gulane',
+'june-gen' => 'Hezirane',
+'july-gen' => 'Temuze',
+'august-gen' => 'Tebaxe',
 'september-gen' => 'Keşkelun',
-'october-gen' => 'Cetan',
-'november-gen' => 'Kelverdan',
-'december-gen' => 'Gağand',
+'october-gen' => 'Tışrino Verên',
+'november-gen' => 'Tışrino Peyên',
+'december-gen' => 'Kanun',
 'jan' => 'Çel',
 'feb' => 'Sbt',
 'mar' => 'Adr',
@@ -426,7 +438,7 @@ $messages = array(
 'nov' => 'Tşp',
 'dec' => 'Kan',
 'january-date' => 'Çele  $1',
-'february-date' => 'Şıbate $1',
+'february-date' => 'Sıbate $1',
 'march-date' => 'Adar $1',
 'april-date' => 'Nisane $1',
 'may-date' => 'Gulane $1',
@@ -434,13 +446,13 @@ $messages = array(
 'july-date' => 'Temuze $1',
 'august-date' => 'Tebaxe $1',
 'september-date' => 'Keşkelun $1',
-'october-date' => 'Cıtan $1',
-'november-date' => 'Qasım $1',
+'october-date' => 'Tışrino Verên $1',
+'november-date' => 'Tışrino Peyên $1',
 'december-date' => 'Kanun $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
-'category_header' => 'Perré ke kategori da "$1" de yé',
+'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
+'category_header' => 'Pelê ke kategoriya "$1" derê',
 'subcategories' => 'Kategoriyê bınêni',
 'category-media-header' => 'Dosyeyê ke kategoriya "$1" derê',
 'category-empty' => "''Ena kategoriye de hewna qet nuştey ya zi medya çıniyê.''",
@@ -459,14 +471,14 @@ $messages = array(
 'broken-file-category' => 'Peleye ke gıreyê dosyeyanê ğeletan muhtewa kenê',
 'categoryviewer-pagedlinks' => '($1) ($2)',
 
-'about' => 'Heqdé cı',
+'about' => 'Heqa cı de',
 'article' => 'Wesiqe',
 'newwindow' => '(pençereyê newey de beno a)',
-'cancel' => 'Bıterkne',
+'cancel' => 'Bıtexelne',
 'moredotdotdot' => 'Vêşi...',
 'morenotlisted' => 'Vêşi lista nêbi...',
 'mypage' => 'Per',
-'mytalk' => 'Vaten',
+'mytalk' => 'Werênayış',
 'anontalk' => 'Pela werênayışê nê IPy',
 'navigation' => 'Pusula',
 'and' => '&#32;u',
@@ -474,24 +486,23 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Bıvêne',
 'qbbrowse' => 'Rovete',
-'qbedit' => 'Timar ke',
-'qbpageoptions' => 'Ena pele',
+'qbedit' => 'Bıvurne',
+'qbpageoptions' => 'Na per',
 'qbmyoptions' => 'Peré mı',
-'qbspecialpages' => 'Pelê xısusiy',
 'faq' => 'PZP (Persê ke zehf persiyenê)',
 'faqpage' => 'Project: PZP',
 
 # Vector skin
 'vector-action-addsection' => 'Mewzu vıraze',
-'vector-action-delete' => 'Bestere',
-'vector-action-move' => 'Bere',
+'vector-action-delete' => 'Bestern',
+'vector-action-move' => 'Ber',
 'vector-action-protect' => 'Star ke',
 'vector-action-undelete' => 'Esterıtışi peyser bıgê',
 'vector-action-unprotect' => 'Starkerdışi bıvurne',
 'vector-simplesearch-preference' => 'Çuweya cı geyreyış de rehater aktiv ke (Tenya vector skin de)',
 'vector-view-create' => 'Vıraze',
 'vector-view-edit' => 'Bıvurne',
-'vector-view-history' => 'Versiyonê verêni',
+'vector-view-history' => 'Verênan bıvêne',
 'vector-view-view' => 'Bıwane',
 'vector-view-viewsource' => 'Çımey bıvêne',
 'actions' => 'Hereketi',
@@ -499,10 +510,10 @@ $messages = array(
 'variants' => 'Varyanti',
 
 'navigation-heading' => 'Menuya Navigasyoni',
-'errorpagetitle' => 'Xeta',
+'errorpagetitle' => 'Ğeta',
 'returnto' => 'Peyser şo $1.',
 'tagline' => '{{SITENAME}} ra',
-'help' => 'Desteg',
+'help' => 'Peşti',
 'search' => 'Cı geyre',
 'searchbutton' => 'Cı geyre',
 'go' => 'Şo',
@@ -510,11 +521,11 @@ $messages = array(
 'history' => 'Verora perer',
 'history_short' => 'Verén',
 'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
-'printableversion' => 'Asayışê çapkerdışi',
+'printableversion' => 'Versiyona Nusnayışi',
 'permalink' => 'Gıreyo jûqere',
 'print' => 'Nusten ke',
-'view' => 'Bıvêne',
-'edit' => 'Bıvurnên',
+'view' => 'Bıvin',
+'edit' => 'Bıvurne',
 'create' => 'Vıraze',
 'editthispage' => 'Ena pele bıvurne',
 'create-this-page' => 'Na pele bınuse',
@@ -528,14 +539,14 @@ $messages = array(
 'protectthispage' => 'Ena pele bıpawe',
 'unprotect' => 'Starkerdışi bıvurne',
 'unprotectthispage' => 'Starkerdışe ena peler bıvurne',
-'newpage' => 'Pera newiye',
+'newpage' => 'Pela newiye',
 'talkpage' => 'Ena pele sero werêne',
-'talkpagelinktext' => 'Vaten',
+'talkpagelinktext' => 'Werênayış',
 'specialpage' => 'Pela xısusiye',
 'personaltools' => 'Hacetê şexsiy',
 'postcomment' => 'Qısımo newe',
 'articlepage' => 'Pela zerreki bıvêne',
-'talk' => 'Vaten',
+'talk' => 'Werênayış',
 'views' => 'Asayışi',
 'toolbox' => 'Haceti',
 'userpage' => 'Pela karberi bıvêne',
@@ -565,18 +576,18 @@ $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).
-'aboutsite' => 'Heqdé {{SITENAME}}',
-'aboutpage' => 'Project:Heqdê cı',
+'aboutsite' => 'Heqa {{SITENAME}} de',
+'aboutpage' => 'Project:Heqa cı de',
 'copyright' => 'Zerrekacı $1 bındı not biya.',
 'copyrightpage' => '{{ns:project}}:Heqa telifi',
 'currentevents' => 'Veng u vac',
-'currentevents-url' => 'Project:Veng u vac',
+'currentevents-url' => 'Project:Rocani hadisey',
 'disclaimers' => 'Redê mesuliyeti',
 'disclaimerpage' => 'Project:Reddê mesuliyetê bıngey',
 'edithelp' => 'Peştdariya vurnayışi',
 'helppage' => 'Help:Zerrek',
-'mainpage' => 'Pera Seri',
-'mainpage-description' => 'Pera Seri',
+'mainpage' => 'Pela Seri',
+'mainpage-description' => 'Pela seri',
 'policy-url' => 'Project:Terzê hereketi',
 'portal' => 'Portalê cemaeti',
 'portal-url' => 'Project:Portalê cemaeti',
@@ -600,13 +611,13 @@ $1',
 'youhavenewmessagesfromusers' => 'Zey $1 ra {{PLURAL:$3|zewbi karber|$3 karberi}} ($2) esto.',
 'youhavenewmessagesmanyusers' => '$1 ra tay karberi ($2) dı estê.',
 'newmessageslinkplural' => '{{PLURAL:$1|yew mesaco newe|999=mesacê newey}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|vurnayışo peyên|999=vurnayışê peyêni}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|vırnayışa|999=vırnayışé}} peyéni',
 'youhavenewmessagesmulti' => '$1 mesaco newe esto',
 'editsection' => 'bıvurne',
 'editold' => 'bıvurne',
 'viewsourceold' => 'çımey cı bıvinê',
 'editlink' => 'bıvurne',
-'viewsourcelink' => 'Ã\87ımi bıvin',
+'viewsourcelink' => 'çımey bıvêne',
 'editsectionhint' => 'Leteyo ke bıvuriyo: $1',
 'toc' => 'Sernameyê meselan',
 'showtoc' => 'bımocne',
@@ -625,7 +636,7 @@ $1',
 'page-atom-feed' => '"$1" Cıresnayışê atomi',
 'feed-atom' => 'Atom',
 'feed-rss' => 'RSS',
-'red-link-title' => '$1 (çınîya)',
+'red-link-title' => '$1 (çınya)',
 'sort-descending' => 'Ratnayışê qemeyayışi',
 'sort-ascending' => 'Ratnayışê Zeydnayışi',
 
@@ -633,13 +644,13 @@ $1',
 'nstab-main' => 'Wesiqe',
 'nstab-user' => 'Pera Karberi',
 'nstab-media' => 'Pera Medya',
-'nstab-special' => 'Pera bağsi',
+'nstab-special' => 'Pela xase',
 'nstab-project' => 'Pera proci',
 'nstab-image' => 'Dosya',
 'nstab-mediawiki' => 'Mesac',
-'nstab-template' => 'Tewre',
+'nstab-template' => 'Şablon',
 'nstab-help' => 'Pela peşti',
-'nstab-category' => 'Kategori',
+'nstab-category' => 'Kategoriye',
 
 # Main script and global functions
 'nosuchaction' => 'Fealiyeto wınasi çıniyo',
@@ -654,6 +665,9 @@ Seba lista pelanê xasanê vêrdeyan reca kena: [[Special:SpecialPages|{{int:spe
 # General errors
 'error' => 'Ğeta',
 'databaseerror' => 'Ğetay ardoği',
+'databaseerror-text' => 'Tabanda malumati de ğırabiya persayışi bi
+Na nusteber  zew ğırabin asınena.',
+'databaseerror-textcl' => 'Zu ğetaya erdamalumati persayışi ameya meydan.',
 'databaseerror-query' => 'Perskerdış:$1',
 'databaseerror-function' => 'Fonksiyon: $1',
 'databaseerror-error' => 'Xırab: $1',
@@ -688,16 +702,14 @@ Belka yewna ten kerdo hewn a.',
 'cannotdelete-title' => 'şıma  "$1" nê şenê besternê.',
 'delete-hook-aborted' => 'Esterıtışi terefê çengeli ra ibtal bi.
 Qet tesrih beyan nêbi.',
+'no-null-revision' => 'Qandé "$1" zew rewizyono newe névıraziya.',
 'badtitle' => 'Sernameo xırabın',
 'badtitletext' => 'Sernamey pela ke şıma waşt, nêvêrd, thalo/vengo ya ki zıwano miyanêno ğelet gırêdae ya ki sernamey wiki.
 Beno ke, tede yew ya zi zêdê işareti estê ke sernaman de nêxebetiyenê.',
 'perfcached' => 'Datay cı ver hazır biye. No semedê ra nıkayin niyo! tewr zaf {{PLURAL:$1|netice|$1 netice}} debêno de',
 'perfcachedts' => 'Cêr de malumatê nımıteyi esti, demdê newe kerdışo peyın: $1. Tewr zaf {{PLURAL:$4|netice|$4 neticey cı}} debyayo de',
 'querypage-no-updates' => 'Nıka newe kerdış nêbeno. no datayi ca de newe nêbeni .',
-'wrong_wfQuery_params' => 'wfQuery() parametreyo şaş<br />
-Fonksiyon: $1<br />
-Perse: $2',
-'viewsource' => 'Çımi bıvin',
+'viewsource' => 'Çımey bıvêne',
 'viewsource-title' => "Cı geyrayışê $1'i bıvin",
 'actionthrottled' => 'Kerden peysnaya',
 'actionthrottledtext' => 'Riyê tedbirê anti-spami ra,  wextê do kılmek de şıma nê fealiyeti nêşkenê zaf zêde bıkerê, şıma ki no hedi viyarna ra.
@@ -738,7 +750,7 @@ Xızmetkarê  kılitkerdışi wa bewni ro enay wa çımra ravyarno: "$3".',
 'logouttext' => "'''Şıma hesabra newke vicyay.'''
 
 Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de hesabe şıma akerde aseno.",
-'welcomeuser' => 'Xeyr amey, $1!',
+'welcomeuser' => 'Ğeyr amey, $1!',
 'welcomecreation-msg' => 'Hesabê şıma abiyo.
 [[Special:Preferences|{{SITENAME}} vurnayişê tercihanê xo]], xo vir ra mekere.',
 'yourname' => 'Nameyê karberi:',
@@ -770,15 +782,18 @@ Wexta ke verhafızayê cıgerayoxê şıma pak beno no benate de taye peli de he
 'userlogin-joinproject' => 'Cıkewe {{SITENAME}}',
 'nologin' => "Hesabê şıma çıniyo? '''$1'''.",
 'nologinlink' => 'Yew hesab ake',
-'createaccount' => 'Hesab vıraze',
+'createaccount' => 'Hesab vıraşten',
 'gotaccount' => "Hesabê şıma esto? '''$1'''.",
-'gotaccountlink' => 'Cı kewe',
+'gotaccountlink' => 'Dekewtış',
 'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
 'userlogin-resetpassword-link' => 'Parola xo kerda xo vira?',
 'helplogin-url' => 'Help:Qeydbiyayış',
-'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Desteg be qeydbiyayış ra]]',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Peşti be qeydbiyayış ra]]',
+'userlogin-loggedin' => 'Tı xora namey {{GENDER:$1|$1}} ra kewtê/kewtay cı.
+Formê cêrêni bıgureyne ke namey karberio bin ra cı kewê.',
 'userlogin-createanother' => 'Zewbi hesab vıraz',
 'createacct-join' => 'Cêr melumatê xo cı ke',
+'createacct-another-join' => 'Malumata hesabdé ğoye newi dekeré cér.',
 'createacct-emailrequired' => 'Adresa e-postey',
 'createacct-emailoptional' => 'Adresa e-postey (mecburi niya)',
 'createacct-email-ph' => 'Adresa e-posteyê xo cıkewe',
@@ -826,7 +841,7 @@ Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe a
 'passwordtooshort' => 'Derganiya parola wa tewr tayn {{PLURAL:$1|1 karakter|$1 karakteran}} dı bo.',
 'password-name-match' => 'Parola u nameyê şıma gani zeypê (seypê) nêbo.',
 'password-login-forbidden' => 'No namey karberi u parola karkerdışê cı  kerdo xırab.',
-'mailmypassword' => 'E-mail sera parola newiye bırışe',
+'mailmypassword' => 'Parola reset ke',
 'passwordremindertitle' => "Qandê {{SITENAME}}'i idareten parolaya newiye",
 'passwordremindertext' => 'Yew ten (muhtemelen, şıma na aderesê IP ra $1 ) {{SITENAME}} ($4) newe yew parola waşt. "$2" no name ri emanet yew parola vıraziya "$3". Eke na şıma waşta, hesabê xo akere u newe yew parola bıvıraze. Muddetê parolayê şıma yo emanet {{PLURAL:$5|1 roc|$5 roci}}.
 
@@ -868,7 +883,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 'user-mail-no-body' => 'Veng yana vireyo ke makbul niyo eya xebtina.',
 
 # Change password dialog
-'resetpass' => 'Parola bıvurne',
+'changepassword' => 'Parola bıvurne',
 'resetpass_announce' => 'Şıma pê yew parolayê muweqqet hesab kerd a, qey qedyayişe dekewtış newe yew parola bınuse:',
 'resetpass_text' => 'Parolayê hesab bıvurn',
 'resetpass_header' => 'Parola hesabi bıvurne',
@@ -880,7 +895,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' => 'Bıterkne',
+'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:',
@@ -889,7 +904,7 @@ Bıne vındere u newe ra dest pê bıkere.',
 # Special:PasswordReset
 'passwordreset' => 'Parola reset ke',
 'passwordreset-text-one' => 'Na form de parola reset kerdış temamiye',
-'passwordreset-text-many' => '{{PLURAL:$1|Qande parola reset kerdışi cayanra taynın pırkeri}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Qande parola yana e-posta reset kerdışi cayanra taynın pırkeri.}}',
 'passwordreset-legend' => 'Parola reset ke',
 'passwordreset-disabled' => 'Parola reset kerdış ena viki sera qefılneyayo.',
 'passwordreset-emaildisabled' => 'Na wikid hısusiyeté e-posta dewera vıcyayé',
@@ -920,76 +935,79 @@ Parola vêrdiye: $2',
 # Special:ChangeEmail
 'changeemail' => 'E-posta adresa xo bıvurnê',
 'changeemail-header' => 'E-posya adresta hesabdê xo bıvurnê',
-'changeemail-text' => 'Şıma qayılê ke e-postay xo bıvurnê se enê formi pırkerê. Qandê araşt kerdışi zi parolay xo şıma de bınusnê',
-'changeemail-no-info' => 'Resayışê ena pela rê Dekewtış icab keno.',
-'changeemail-oldemail' => 'E-postay şımaya newki:',
-'changeemail-newemail' => 'E-posta adresiyo newe:',
-'changeemail-none' => '(Çıno)',
-'changeemail-password' => 'Parolaya şımaya {{SITENAME}}i:',
-'changeemail-submit' => 'E-postay xo bıvurne',
-'changeemail-cancel' => 'Bıterkne',
+'changeemail-text' => 'Şıma ke qailê  e-postay xo bıvırnê, enê formi pırr kerê. Raştkerdışi rê ki şıma gani parolay xo bınusnê',
+'changeemail-no-info' => 'Şıma gani bıkewê pele ke derdest bıresê na pele.',
+'changeemail-oldemail' => 'E-postay şımawa nıkaêne:',
+'changeemail-newemail' => 'E-postay şımawa newiye:',
+'changeemail-none' => '(Çıniyo)',
+'changeemail-password' => 'Parolay şımawa {{SITENAME}}i:',
+'changeemail-submit' => 'E-postay xo bıvırnên',
+'changeemail-cancel' => 'Bıtexelne',
 
 # Special:ResetTokens
-'resettokens' => 'Reset fi ye',
-'resettokens-no-tokens' => 'Ena reset nefina',
-'resettokens-legend' => 'Reset fi ye',
-'resettokens-tokens' => 'Beli kerdeni:',
-'resettokens-token-label' => '$1 (weziyeta newki: $2)',
-'resettokens-done' => 'Reset fi',
-'resettokens-resetbutton' => 'Reset fiyayış weçin',
+'resettokens' => 'Nışanan reset ke',
+'resettokens-no-tokens' => 'Nışanê reseti çıniyê',
+'resettokens-legend' => 'Nışanan reset ke',
+'resettokens-tokens' => 'Nışani:',
+'resettokens-token-label' => '$1 (weziyeto nıkaên: $2)',
+'resettokens-watchlist-token' => 'Web Feed rê nışan (Atom/RSS)ê [[Special:Watchlist|vêreno perranê lista şımawa seyrkerdışi]]',
+'resettokens-done' => 'Nışanan reset ke',
+'resettokens-resetbutton' => 'Nışananê weçıniteyan reset ke',
 
 # Edit page toolbar
 'bold_sample' => 'Metno qalın',
 'bold_tip' => 'Metno qalın',
-'italic_sample' => 'Metno vırandere',
-'italic_tip' => 'Metno vırandere',
-'link_sample' => 'Namey gırê',
-'link_tip' => 'Gıreyê miyani',
-'extlink_sample' => 'http://www.example.com şınasiya adresi',
-'extlink_tip' => 'Greyê teberi (adresi vero http:// dekerê de)',
-'headline_sample' => 'nuştey xeta seri',
-'headline_tip' => '2.ki sewiye sername',
-'nowiki_sample' => 'Non-format nuşte itiya ra bıerz',
-'nowiki_tip' => 'Format kerdışê wiki bıterknê',
+'italic_sample' => 'Metno çewt',
+'italic_tip' => 'Metno çewt',
+'link_sample' => 'Namey gırey',
+'link_tip' => 'Gırey miyani',
+'extlink_sample' => 'http://www.misal.com sernamey gırey',
+'extlink_tip' => 'Gırey teberi (xo vira mekerên http:// prefix)',
+'headline_sample' => 'metnê sernamey',
+'headline_tip' => 'Sewiya 2ıne sername',
+'nowiki_sample' => 'metnê formatkerdey berze etıya',
+'nowiki_tip' => 'Goş formatê Wiki ra mekûwe',
 'image_sample' => 'Misal resim.jpg',
-'image_tip' => 'Dosyaya gumın',
+'image_tip' => 'Dosya tewrkerdiye',
 'media_sample' => 'misal.jpg',
-'media_tip' => 'Gıreyê dosya',
-'sig_tip' => 'İmza u wext',
-'hr_tip' => 'Çıxiza dimdayi (hend akar mefiye)',
+'media_tip' => 'Gırey dosya',
+'sig_tip' => 'İmzay şıma be morê zemani',
+'hr_tip' => 'Xeta verardiye (teserrufın bıgureyne/bıxebetne)',
 
 # Edit pages
 'summary' => "<font style=\"color:Blue\">'''Xulasa:'''</font>",
 'subject' => 'Mewzu/sernuşte:',
-'minoredit' => "'''Eno vurnayışo de qıckeko'''",
+'minoredit' => 'No vırnayışê do werdiyo',
 'watchthis' => "'''Ena pele seyr ke'''",
 'savearticle' => 'Pele qeyd ke',
 'preview' => 'Verqayt',
 'showpreview' => 'Verqayti bımocne',
-'showlivepreview' => 'Verqayto cıwın',
+'showlivepreview' => 'Verqayto cınde (giyane)',
 'showdiff' => 'Vurnayışan bımocne',
-'anoneditwarning' => 'Teme!: Şıma bı hesabê xo nıkewtê cı. Hurêndiya namey şıma dı IP-adresa şıma qeyd bena u asena.',
-'anonpreviewwarning' => "''Ti hama nicikewte. Qeyd kerdiş zerre tarixê pele de adresê IP yê tu keyd keno.''",
-'missingsummary' => "'''DİQET:''' Şıma kılmnuşte nıkerd.
-Eke şıma reyna butonê qaydker ser a ne pel bê kılmnuşte qayd beno.",
-'missingcommenttext' => 'Cêr de yew xulasa binuse.',
-'missingcommentheader' => "Vir ardoğ:''' Şıma qey na mesela sername nuşte nênuşt.
-Eke şıma reyna \"{{int:savearticle}}\" qayd ker bıtıkni pel bê sername qayd beno.",
-'summary-preview' => 'Verqeydê qıssa:',
-'subject-preview' => 'Mesela/Sername  verqayd seyr kerdış:',
-'blockedtitle' => 'Karber (eza) blok biyo',
-'blockedtext' => '\'\'\'No name ya zi na IP adresê şıma ri musade çino.\'\'\'
-
-Oyo ke musade nêkeno: $1.<br />
-Sebebê musade nêdayiş: \'\'$2\'\'.
-
-* Dest pê kerdışê musade nêdayiş: $8
-* Qedyayişê musade nêdayiş: $6
-* Oyo ke cı rê musade nêdeyêno: $7
-
-Eke şıma sebebê musade nêdayiş ri itiraz keni, $1 de ya zi yewna [[{{MediaWiki:Grouppage-sysop}}|xızmetkar]] de şıma eşkeni na mesela de qıse bıkeri. [[Special:Preferences|Tercihê]] eke şıma na qısme de pey yew e-postayo raşt nêkewte cı, şıma xususiyetê "Karber ri e-posta bırışê" ra nêeşkeni istifade bıkeri, eke şıma tercihanê xo bıerz zerreyê e-postayê xo şıma hıni şenê ep-posta bırışê.
-<br />IP adresê şıma yo nıkayın $3, numreya musade nêdayiş #$5.
-<br />Eke şıma qayile yew xızmkar çiko bıpers, no malumatan not bıkere ney şıma rê lazım beni.',
+'anoneditwarning' => 'İqaz!: Şıma be hesabê xo nêkewtê cı. 
+Adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo.',
+'anonpreviewwarning' => '"Şıma be hesabê xo nêkewtê cı. Eke qeyd kerê, adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo."',
+'missingsummary' => "'''DİQET:''' Şıma jû xulasa nênuşte.
+Eke şıma \"{{int:savearticle}}\" reyna bıtıknê, vırnayışê şıma bê xulasa qeyd beno.",
+'missingcommenttext' => 'Cêr de jû fıkır bınusên, şıma rê zehmet.',
+'missingcommentheader' => "'''Diqet:''' Şıma seba nê fıkrvaci yew mewzu/sernuşte nênuşt.
+Eke şıma reyna \"{{int:savearticle}}\" bıtıknê, vırnayışê şıa bê mewzu/sernuşte do qeyd bo.",
+'summary-preview' => 'Verqaytê xulasa:',
+'subject-preview' => 'Verqaytê mewzu/sernuştey:',
+'blockedtitle' => 'Karber blokekerdeo',
+'blockedtext' => '\'\'\'No namey karberi ya ki no adresê IP blokekerdeo.\'\'\'
+
+Vıraştoğê blokey: $1
+Sebebê blokey: \'\'$2\'\'.
+
+* Sıftekerdena blokey: $8
+* Qediyayışê blokey: $6
+* Blokebiyae: $7
+
+Şıma şenê  $1 de ya ki  yewna [[{{MediaWiki:Grouppage-sysop}}|administrator]]i de irtıbat kewê ke na mesela sero werênê, cemaet vırazê. 
+Şıma nêşenê xısusiyetê "karberi rê e-posta bırışe" bıgureynê/bıxebetnê heta ke [[Special:Preferences|Tercihanê hesabi]] de jû e-postawa ke vêrena, beli biye u şıam gureynayışê cı ra mehrum nêbiyê.
+IP adresê şımao nıkaên $3o u numrey bloki #$5.
+Şıma rê zehmet, eke kewnê ra dıme, teferruatanê corênan not kerên.',
 'autoblockedtext' => 'IP adresê şıma otomotikmen kerda kılit, çıkı $1 verniya nê hesabi grota.
 Sebebê cı zi:
 
@@ -1019,14 +1037,14 @@ Heta ke werte de qısım çıniyo, ca çıniyo ke tı raştkerdışê xo qeyd b
 
 Qey na hesabê newe parola, cıkewtış dıma şıma eşkeni na qısım de ''[[Special:ChangePassword|parola bıvurn]]'' bıvurni.",
 'newarticle' => '(Newe)',
-'newarticletext' => "Ena pele, database ma de hona çiniyo.
-Eka tı wazene yew bıvırazi, bınê eno nuşte de yew quti esto u uca de bınuse (bıvinin [[{{MediaWiki:Helppage}}|help page]] qe informasyonê zafyeri).
-Eka tı ita semed yew heta ra amey, ser gocekê '''back'''i klik bıkin.",
+'newarticletext' => "To yew gıre tıkna be ra yew pela ke hewna çıniya.
+Seba afernayışê pele ra, qutiya metnê cêrêni bıgurene (seba melumati qaytê [[{{MediaWiki:Helppage}}|pela peşti]] ke).
+Eke be ğeletine ameya tiya, wa gocega '''peyser'''i programê xo de bıtıkne.",
 'anontalkpagetext' => "----''No pel, pel o karbero hesab a nêkerdeyan o, ya zi karbero hesab akerdeyan o labele pê hesabê xo nêkewto de. No sebeb ra ma IP adres şuxulneni û ney IP adresan herkes eşkeno bıvino. Eke şıma qayil niye ina bo xo ri [[Special:UserLogin/signup|yew hesab bıvıraze]] veyaxut [[Special:UserLogin|hesab akere]].''",
-'noarticletext' => 'Ena pele de hewna theba çıniyo.
-Tı şenay zerreyê pelanê binan de [[Special:Search/{{PAGENAME}}|seba sernamey ena pele cı geyre]],
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cıkewtışê aidi rê cı geyre],
-ya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele bıvurne]</span>.',
+'noarticletext' => 'Na per enewke venga.
+Tı şenay na perer, peran de [[Special:Search/{{PAGENAME}}|binan miyan de bıgeyrè]],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}  qeyda miyande bıgeyre],
+ya na [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena perer vırazé]</span>.',
 'noarticletext-nopermission' => 'Na pela dı eno metin enewke vengo
 Na sernuşteya şıma [[Special:Search/{{PAGENAME}}|pelanê binan de şeni bıgeyri]]
 ya zi <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} itara şeni bıgeyri cı].</span> feqet şıma nişeni biizın teba bıkeri.',
@@ -1082,7 +1100,8 @@ Wexta ke şıma butonê \"{{int:savearticle}}\" tıkna '''teyna''' nuşteyo cori
 'yourtext' => 'nuşteyê şıma',
 'storedversion' => 'Nuşteyo qaydbiyaye',
 'nonunicodebrowser' => "'''DİQET: Browserê şıma u unicode yewbini nêgeni. Qey izin dayişê vurnayişê pelan: Karakteri ke ASCII niyê; zerreyê qutiyê vurnayişi de kodi (cod) şiyes-şiyes aseni.'''",
-'editingold' => "'''DİQET: Şıma pelo revizebiyaye de vurnayiş keni. Eke şıma qayd bıkeri vurnayişi ke pelo revizebiyayiş ra heta ewro biyê, pêroyê ey beni vini.'''",
+'editingold' => "'''İkaz: Şımayé rewizyon da kehan da perer d vırnayış kené.'''
+Vanése qeyd k,lakin rewziyoné veréni dé vınibé.",
 'yourdiff' => 'pêverronayiş',
 'copyrightwarning' => "'''Recayê ikazi:''' Sita da {{SITENAME}} ra iştıraqi pêro umışin da $2 zerredeyo (teferruata rê $1'i bıvinê).
 İştıraqê şıma, şıma kayıl niyê ke yewna merdumi kerpeyina bıvurnê yana yewna caya ra vılakerê se, iştıraq mekewê.<br />
@@ -1128,7 +1147,7 @@ Yew sebeb beyan nibı.',
 Hewna kerde aseno.',
 'edit-conflict' => 'Vurnayişê pêverdiyaye .',
 'edit-no-change' => 'Vurnayişê şıma qebul nêbı, çunke nuşte de yew vurnayiş n3evıraziya.',
-'postedit-confirmation' => 'Vurnayış qeyd be',
+'postedit-confirmation' => 'Vurnayışê to qeyd bi.',
 'edit-already-exists' => 'Pelo newe nêvıraziyeno.
 Pel ca ra esto.',
 'defaultmessagetext' => 'Hesıbyaye metne mesaci',
@@ -1169,7 +1188,7 @@ Taye şabloni zerre pel de nêmociyayeni.',
 'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
 'undo-failure' => 'Sebayê pêverameyişê vurnayişan karo tepêya gırewtış nêbı.',
 'undo-norev' => 'Vurnayiş tepêya nêgeryeno çunke ya vere cû hewna biyo ya zi ca ra çino.',
-'undo-summary' => 'Peysergırewtışê teshisê $1i be terefê [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]])',
+'undo-summary' => "Vırnayışê $1'i [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]]) peyser gırewt",
 'undo-summary-username-hidden' => "Rewizyona veri $1'i hewada",
 
 # Account creation failure
@@ -1179,7 +1198,7 @@ Taye şabloni zerre pel de nêmociyayeni.',
 Sebebo ke terefê $3 ra diyao ''$2''",
 
 # History pages
-'viewpagelogs' => 'Heq dê ena perer qeydan bıvinên',
+'viewpagelogs' => 'Heqde na perer qeydan bıvin',
 'nohistory' => 'Verê vurnayışanê na pele çıniyo.',
 'currentrev' => 'Halo nıkayên',
 'currentrev-asof' => 'Revizyonanê peniyan, tarixê $1',
@@ -1193,9 +1212,8 @@ Sebebo ke terefê $3 ra diyao ''$2''",
 'last' => 'peyên',
 'page_first' => 'verên',
 'page_last' => 'peyên',
-'histlegend' => "'''Ferqê weçinayışi:''' Qutiya versiyonan mor ke u  ''enter''i bıpıloxne ya zi makera cêrêne bıpıloxne.<br /> 
-Lecant: '''({{int:cur}})''' = ferqê versiyonê peyêni,
-'''({{int:last}})''' = ferqê versiyonê verêni, '''{{int:minoreditletter}}''' = vurnayışo werdi.",
+'histlegend' => "Ferqê weçinayışi: Qutiya versiyonan mor ke u  ''enter''i bıpıloxne ya zi makera cêrêne bıpıloxne.<br /> 
+Lecant: '''({{int:cur}})''' = ferqê versiyonê peyêni, '''({{int:last}})''' = ferqê versiyonê verêni, '''{{int:minoreditletter}}''' = vurnayışo werdi.",
 'history-fieldset-title' => 'Bewni tarixer',
 'history-show-deleted' => 'Tenya esterıt',
 'histfirst' => 'Verênêr',
@@ -1246,10 +1264,6 @@ Eke şıma serkari u devam bıkeri [$1 no vurnayiş şıma eşkeni bıvini].",
 'revisiondelete' => 'Bestere/çımraviyarnayışan peyser bia',
 'revdelete-nooldid-title' => 'Çımraviyarnayışo waşte nêvêreno',
 'revdelete-nooldid-text' => 'Şıma vıraştışê nê fonksiyoni rê ya yew çımraviyarnayışo waşte diyar nêkerdo, çımraviyarnayışo diyarkerde çıniyo, ya ki şıma wazenê ke çımraviyarnayışê nıkayêni bınımnê.',
-'revdelete-nologtype-title' => 'Qet qeydê cınêdiya',
-'revdelete-nologtype-text' => 'Qeydê şımawo diyar çıniyo ke nê fealiyet kewê.',
-'revdelete-nologid-title' => 'Cıkewtış qebul nêbi',
-'revdelete-nologid-text' => 'Şıma vıraştışê nê fonksiyoni rê ya yew cıkewtışo waşte diyar nêkerdo, ya ki çıkewtışo diyarkerde çıniyo.',
 'revdelete-no-file' => 'Dosya diyarkerdiye çıniya.',
 'revdelete-show-file-confirm' => 'Şıma eminê ke wazenê çımraviyarnayışê esterıtey na dosya "<nowiki>$1</nowiki>" $2 ra $3 de bıvênê?',
 'revdelete-show-file-submit' => 'E',
@@ -1266,7 +1280,7 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşenê h
 'revdelete-hide-text' => 'Nuştey revizyoni',
 'revdelete-hide-image' => 'zerreyê dosyay bınımnê',
 'revdelete-hide-name' => "hedef u vaqa' bınımne",
-'revdelete-hide-comment' => 'Menıni timar ke',
+'revdelete-hide-comment' => 'Xulasa bıvurne',
 'revdelete-hide-user' => 'IP asresa/namey  vırnoği',
 'revdelete-hide-restricted' => 'Malumatan pa serkaran u karberan ra bınım.',
 'revdelete-radio-same' => '(mevurne)',
@@ -1283,8 +1297,6 @@ $1",
 'logdelete-failure' => "'''Esayişê rocaneyi eyar nêbı:'''
 $1",
 'revdel-restore' => 'asayışi bıvurne',
-'revdel-restore-deleted' => 'revizyonê wedariyaye',
-'revdel-restore-visible' => 'revizyonê ke asenê',
 'pagehist' => 'Verora perer',
 'deletedhist' => 'tarixê hewna şiyaye',
 'revdelete-hide-current' => '$2 $1 ney çiye ke wexta diyayene wera (wedar dayiş) xeta da: no reviyon nınımiyeno.',
@@ -1317,7 +1329,7 @@ Listey xırabi u bloki re pelay [[Special:BlockList|IP'yê ke bloke biyê]] bivi
 'mergehistory-header' => 'No pel, reviyonê yew peli eşkeno yewna pelo newe de piyawano.
 no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 'mergehistory-box' => 'revizyonê pelanî yew bike:',
-'mergehistory-from' => 'Para Çımi:',
+'mergehistory-from' => 'Pela çımey:',
 'mergehistory-into' => 'Pela destinasyonî',
 'mergehistory-list' => 'tarixê vurnayîşî ke eşkeno yew bi.',
 'mergehistory-merge' => '[[:$1]] qey ney revizyonê cêrini [[:$2]] şıma ekeni piyawani. Benatê wexto muwaqqet de piyayanayişê rezizyonan de tuşa radyo bıxebitne.',
@@ -1350,7 +1362,7 @@ no vurnayişo ke şıma keni kontrol bıkere yew pelo kehen nêbo.',
 'lineno' => 'Xeta $1i:',
 'compareselectedversions' => 'Rewizyonanê weçineyan pêver ke',
 'showhideselectedversions' => 'Revizyonanê weçinıtan bımocne/bınımne',
-'editundo' => 'peyser bıgi',
+'editundo' => 'peyser bıgê',
 'diff-empty' => '(Babetna niyo)',
 'diff-multi' => '({{PLURAL:$1|Yew revizyono miyanên|$1 revizyonê miyanêni}} terefê {{PLURAL:$2|yew karberi|$2 karberan}} nêmocno)',
 'diff-multi-manyusers' => '({{PLURAL:$1|jew timar kerdışo qıckeko|$1 timar kerdışo qıckeko}} timar kerdo, $2 {{PLURAL:$2|Karber|karberi}} memocne)',
@@ -1362,12 +1374,8 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 # Search results
 'searchresults' => 'Neticeya geyrayışi',
 'searchresults-title' => 'Qandê "$1" neticeyê geyrayışi',
-'searchresulttext' => 'Zerrey {{SITENAME}} de heqa cıgeyrayışi de seba melumat gırewtışi, şenay qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
-'searchsubtitle' => 'Tı semedê \'\'\'[[:$1]]\'\'\' cıgeyra. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyaê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra gırê xo esto]])',
-'searchsubtitleinvalid' => "Tı cıgeyra qe '''$1'''",
 'toomanymatches' => 'Zêde teki (zewci) peyser çarnay, şıma rê zehmet, be persê do bin ra bıcerrebnên.',
 'titlematches' => 'Tekê (zewcê) sernameyê pele',
-'notitlematches' => 'Tekê (zewcê) sernameyê pele çıniyê.',
 'textmatches' => 'Tekê (zewcê) nuştey pele',
 'notextmatches' => 'tekê (zewcê) nuştey pele çıniyê',
 'prevn' => '{{PLURAL:$1|$1}} verên',
@@ -1376,16 +1384,14 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'nextn-title' => '$1o ke yeno {{PLURAL:$1|netice|neticey}}',
 'shown-title' => 'bimocne $1î  {{PLURAL:$1|netice|neticeyan}} ser her pel',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bıvênên',
-'searchmenu-legend' => 'bıgeyre tercihan (sae bıke)',
 'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
 'searchmenu-new' => "''Na Wiki de pelay \"[[:\$1]]\" vıraze!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|pê eno prefix ser pelan de bigêre]]',
-'searchprofile-articles' => 'Perré muhteway',
-'searchprofile-project' => 'Pera Destegi uw Procan',
+'searchprofile-articles' => 'Pelê tedeestey',
+'searchprofile-project' => 'Pelê peşti û procey',
 'searchprofile-images' => 'Multimedya',
 'searchprofile-everything' => 'Heme çi',
-'searchprofile-advanced' => 'Ravérden',
-'searchprofile-articles-tooltip' => '$1 de bigêre',
+'searchprofile-advanced' => 'Raverşiyaye',
+'searchprofile-articles-tooltip' => '$1 de cı geyré',
 'searchprofile-project-tooltip' => '$1 de bigêre',
 'searchprofile-images-tooltip' => 'Dosya cı geyr',
 'searchprofile-everything-tooltip' => 'Tedeestey hemine cı geyre (pelanê mınaqeşey zi tey)',
@@ -1400,32 +1406,28 @@ Detayê besternayışi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'search-interwiki-default' => '$1 neticeyan:',
 'search-interwiki-more' => '(véşi)',
 'search-relatedarticle' => 'Eleqeyın',
-'mwsuggest-disable' => 'Tewsiyay AJAXi bıgê',
 'searcheverything-enable' => 'cayê nameyê hemi de bigêre',
 'searchrelated' => 'eleqeyın',
 'searchall' => 'pêro',
 '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.
-Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mınaqeşe, templatenan, ucb.) ya zi cıgeyro ser namecay ki tı wazeni.",
 'search-nonefound' => 'Zey perskerdışê şıma netice nêvêniya.',
-'powersearch' => 'Cıgeyrayışo hera',
 'powersearch-legend' => 'Cıgeyrayışo hera',
 'powersearch-ns' => 'Cayanê nameyan de cıgeyrayış:',
 'powersearch-redir' => 'Listeya hetenayışan',
-'powersearch-field' => 'Seba cı seyr ke',
 'powersearch-togglelabel' => 'Qontrol ke:',
 'powersearch-toggleall' => 'Pêro',
 'powersearch-togglenone' => 'Çıniyo',
 'search-external' => 'Cıgeyrayışê teberi',
 'searchdisabled' => '{{SITENAME}} no keyepel de cıgerayiş muweqqet bıryayo. no benatê de şıma pê Google eşkeni zerreyê {{SITENAME}} de cıgerayiş bıkeri.',
+'search-error' => 'Cı geyrayış de zu ğeta emé meydan:$1',
 
 # Preferences page
 'preferences' => 'Tercihi',
 'mypreferences' => 'Tercihi',
 'prefs-edits' => 'Amarê vurnayışan:',
-'changepassword' => 'Parola bıvurne',
+'prefsnologintext2' => 'Reca kem  sazé tercihané karberi $1.',
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verasayış',
 'datedefault' => 'Tercih çıniyo',
@@ -1448,25 +1450,25 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
 'prefs-email' => 'Tercihê e-maili',
 'prefs-rendering' => 'Asayış',
 'saveprefs' => 'Qeyd ke',
-'resetprefs' => 'Vurnayışê ke qeyd nêbiy, pak ke',
 'restoreprefs' => 'Sazanê hesıbyaya pêron newe ke',
 'prefs-editing' => 'Cay pela nustısi',
 'rows' => 'Xeti:',
 'columns' => 'Estûni:',
 'searchresultshead' => 'Cı geyre',
-'resultsperpage' => 'Serê pele  amarê cıkewtoğan:',
-'stub-threshold' => 'Baraj ke <a href="#" class="stub">stub link</a> ho şekil dano (bîtî):',
+'stub-threshold' => 'Qandé <a href="#" class="stub">Taslağ  formati</a> sinor (bayti):',
 'stub-threshold-disabled' => 'Astengın',
 'recentchangesdays' => 'Rocê ke vurnayışanê peyênan de bıasê:',
 'recentchangesdays-max' => 'Tewr zaf $1 {{PLURAL:$1|roc|roci}}',
 'recentchangescount' => 'Amarê vurnayışê ke hesıbyaye deye bımocneyê:',
 'prefs-help-recentchangescount' => 'Ney de vurnayışê peyêni, tarixê pelan u cıkewteni asenê.',
+'prefs-help-watchlist-token2' => 'Na pawıtış nımnayi kılta listada şımaya.
+Oke kıliti zano şeno listeya tamaşann bıvino. Poğta coy ra kesiya me hesırne. 
+[[Special:ResetTokens|Na kıliti reset kerdışi re tiyay bıploğne]].',
 'savedprefs' => 'Tecihey şıma qeyd biyey.',
 'timezonelegend' => 'Warey saete:',
 'localtime' => 'saeta mehelliye:',
 'timezoneuseserverdefault' => 'Zey karkerdışê Wiki ($1)',
 'timezoneuseoffset' => 'Zewbina (offseti beli bıke)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Wextê serveri:',
 'guesstimezone' => 'Browser ra pırr ke',
 'timezoneregion-africa' => 'Afrika',
@@ -1526,7 +1528,7 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'prefs-dateformat' => 'Formatê tarixi',
 'prefs-timeoffset' => 'Wext offset',
 'prefs-advancedediting' => 'Herayen weçinayış',
-'prefs-editor' => 'Timarkar',
+'prefs-editor' => 'Vurnayoğ',
 'prefs-preview' => 'Verqayt',
 'prefs-advancedrc' => 'Tercihê raverberdey',
 'prefs-advancedrendering' => 'Tercihê raverberdey',
@@ -1609,7 +1611,7 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'right-upload_by_url' => 'Yew URL ra dosyan bar bıke',
 'right-purge' => 'Virê sita seba yew pele bêdestur bestere.',
 'right-autoconfirmed' => 'Perê ke nême kılit biyê, inan bıvurne',
-'right-bot' => 'Zey yew karê xoserkerdey be',
+'right-bot' => 'Zey yew kardê otomotiki kar bıvin',
 'right-nominornewtalk' => 'Pelanê werênayışan rê vurnayışê qıckeki çıniyê, qutiya mesacanê newiyan bıgurene',
 'right-apihighlimits' => 'Persanê API de sinoranê berzêran bıgurene',
 'right-writeapi' => 'İstıfadey APIyê nuştey',
@@ -1636,8 +1638,13 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'right-editusercssjs' => 'CSS u dosyanê JSiê karberanê binan sero bıgureye',
 'right-editusercss' => 'Dosyanê CSSiê karberanê binan sero bıgureye',
 'right-edituserjs' => 'Dosyanê JSiê karberanê binan sero bıgureye',
+'right-editmyusercss' => 'CSS dosyaya karberinda ğo timar ke',
+'right-editmyuserjs' => 'JavaScript dosyaya karberinda ğo timar ke',
 'right-viewmywatchlist' => 'Lista seyr de xo bıvin',
-'right-editmyoptions' => 'Tercihané ğo bıvırn',
+'right-editmywatchlist' => 'Listeya temaşiya karberinda ğo timar ke.Not  tay karfinayışi na icazet nédeyo zi pera dekeno de.',
+'right-viewmyprivateinfo' => 'Bağse malumatané ğo bıasne (e-posta, nameyo raştay vs.)',
+'right-editmyprivateinfo' => 'Melumatanê xoyê şexsiyan bıvurne (adresa e-postey, nameyo raştıkên uêb.)',
+'right-editmyoptions' => 'Tercihanê xo bıvurne',
 'right-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
 'right-markbotedits' => 'Vurnayışanê peyd ameyan, vurnayışê boti deye nışan kerê',
 'right-noratelimit' => 'Sinoranê xızi (rate limit) ra tesir nêbi',
@@ -1713,21 +1720,23 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
 'recentchanges-summary' => 'Ena pele de wiki sero vurnayışanê peyênan teqib ke.',
 'recentchanges-noresult' => 'Zey kiterandé şıma vırnayış névineya',
 'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
-'recentchanges-label-newpage' => 'Enê vurnayışi pelaya newi vıraşt',
-'recentchanges-label-minor' => 'Eno yew vurnayışo qıckeko',
-'recentchanges-label-bot' => 'Yew boti xo het ra no vurnayış vıraşto',
+'recentchanges-label-newpage' => 'Enê vurnayışi ra yew pela newiye vıraziye',
+'recentchanges-label-minor' => 'Eno yew vurnayışo werdiyo',
+'recentchanges-label-bot' => 'Eno vurnayış terefê yew boti ra vıraziyo',
 'recentchanges-label-unpatrolled' => 'Eno vurnayış hewna dewriya nêbiyo',
-'recentchanges-legend-newpage' => '$1 - pela newi',
-'rcnote' => "Bıni dı  {{PLURAL:$2|roc|'''$2''' rocan}}  ra {{PLURAL:$1|'''1''' vurnayış|'''$1''' vurnayışi}} éyé cér de yé , $5 ra hetana $4.",
+'recentchanges-label-plusminus' => 'Ebadê pele de bazê bayti de vayeyê cı',
+'recentchanges-legend-heading' => "'''Kıtabek:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|Lista pelanê neweyan]] zi bıvêne)',
+'recentchanges-legend-plusminus' => "''(±123)''",
 'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
-'rclistfrom' => '$1 ra tepya vırnayışané newan bıasne',
+'rclistfrom' => '$1 ra tepiya vurnayışanê neweyan bımocne',
 'rcshowhideminor' => 'Vurnayışanê werdiyan $1',
 'rcshowhidebots' => 'Botan $1',
-'rcshowhideliu' => 'Karberanê qeydınan $1',
-'rcshowhideanons' => 'Karberê bênamey $1',
+'rcshowhideliu' => 'Karberanê qeydbiyayeyan $1',
+'rcshowhideanons' => 'Karberanê bênameyan $1',
 'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
 'rcshowhidemine' => 'Vurnayışanê mı $1',
-'rclinks' => '$2 rocan peynira $1 vurnayışan bıasne <br />$3',
+'rclinks' => 'Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3',
 'diff' => 'ferq',
 'hist' => 'verên',
 'hide' => 'Bınımne',
@@ -1854,7 +1863,7 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
 Dosyayn de Java barkerdışi rê icazet nêdeyê, çıkı emeleya merduman nêbena.',
 'upload-source' => 'Dosyayê henî',
 'sourcefilename' => 'Nameyê dosyaye çimeyî',
-'sourceurl' => "URL'yê Çımi",
+'sourceurl' => 'URLyê çımey:',
 'destfilename' => 'Destînasyonê nameyêdosya',
 'upload-maxfilesize' => 'Ebatêî dosya tewr girdî: $1',
 'upload-description' => 'Deskripsiyonê dosyayî',
@@ -2114,11 +2123,13 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 
 # Random page in category
 'randomincategory' => 'Ğoseri pera kategoriya',
-'randomincategory-invalidcategory' => '"$1" namedı kategori çıniya',
+'randomincategory-invalidcategory' => '"$1" yew nameyê kategoriya vêrdiye niyo.',
+'randomincategory-nopages' => 'Kategori da [[:Category:$1|$1]] de qet  per çıniya.',
+'randomincategory-selectcategory' => 'Pera ke cıra raşt ameye kategori do bıgéri yo: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Şo',
 
 # Random redirect
-'randomredirect' => 'Xoseri hetenayış',
+'randomredirect' => 'Serçarnayışo rastameye',
 'randomredirect-nopages' => 'Ena cayênameyê "$1"î de redereksiyonî çin o.',
 
 # Statistics
@@ -2147,6 +2158,8 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
 'pageswithprop-text' => 'Na per pimanen pera kena liste.',
 'pageswithprop-prop' => 'Nameyo xısusi:',
 'pageswithprop-submit' => 'Şo',
+'pageswithprop-prophidden-long' => 'Erca metinda derger nımneya ($1)',
+'pageswithprop-prophidden-binary' => 'Erca dıdıyına ($1) nımneyé',
 
 'doubleredirects' => 'Hetenayışê dıletıni',
 'doubleredirectstext' => 'no pel pelê ray motışani liste keno.
@@ -2170,10 +2183,11 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bayt|bayti}}',
-'ncategories' => '$1 {{PLURAL:$1|Kategori|Kategoriy}}',
+'ncategories' => '$1 {{PLURAL:$1|Kategoriye|Kategoriy}}',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikiy}}',
 'nlinks' => '$1 {{PLURAL:$1|link|linkî}}',
 'nmembers' => '$1 {{PLURAL:$1|eza|ezayan}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$1|eza|ezayan}}',
 'nrevisions' => '$1 {{PLURAL:$1|vurnayış|vurnayışi}}',
 'nviews' => '$1 {{PLURAL:$1|vênayış|vênayışi}}',
 'nimagelinks' => '$1 {{PLURAL:$1|pele de|pelan de}} gureyeno',
@@ -2212,21 +2226,20 @@ gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
 'protectedpages' => 'Pelê pawıtiyey',
 'protectedpages-indef' => 'têna pawıteyê bêmuddeti',
 'protectedpages-cascade' => 'Kilit biyaye ke teyna cascadiye',
-'protectedpagestext' => 'pelê cêrınî pawiyenê',
 'protectedpagesempty' => 'pê ney parametreyan pelê pawiteyi çinî',
 'protectedtitles' => 'Sernameyê pawıtiyey',
-'protectedtitlestext' => 'sernameyê cêrıni pawıte yî',
 'protectedtitlesempty' => 'pê ney parametreyan sernuşteyê pawite çinê',
 'listusers' => 'Listeyê Karberan',
 'listusers-editsonly' => 'Teyna karberan bimucne ke ey nuştê',
 'listusers-creationsort' => 'goreyê wextê vıraştışi rêz ker',
+'listusers-desc' => 'Kemeyen rézed ratn',
 'usereditcount' => '$1 {{PLURAL:$1|vurnayîş|vurnayîşî}}',
 'usercreated' => '$2 de $1 {{GENDER:$3|viraziya}}',
 'newpages' => 'Pelê newey',
 'newpages-username' => 'Nameyê karberi:',
 'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
 'move' => 'Bere',
-'movethispage' => 'Na pele bere',
+'movethispage' => 'Na perer ber',
 'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
 Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.',
 'unusedcategoriestext' => 'kategoriyê cêrıni bıbo zi çı nêşuxulyena.',
@@ -2267,9 +2280,6 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
 'allpagesto' => 'Pelanê ke be ena herfe qediyenê bımocne:',
 'allarticles' => 'Wesiqey pêro',
 'allinnamespace' => 'Peli pênro ( $1 cayênameyî)',
-'allnotinnamespace' => 'Pelanê hemî ($1 cayênameyî de niyo)',
-'allpagesprev' => 'Verên',
-'allpagesnext' => 'Bahdo',
 'allpagessubmit' => 'Şo',
 'allpagesprefix' => 'herfê ke şıma tiya de nuşti, pê ney herfan pelê ke destpêkenê liste ker:',
 'allpagesbadtitle' => 'pel o ke şıma kewenî cı, nameyê no peli de gıreyê zıwanan u wikiyi re elaqa esto, ê ra cıkewtış qebul niyo. ya zi sernameyan de karakterê qedexeyi tede esto.',
@@ -2283,10 +2293,10 @@ tipa rocaneyi, nameyê karberi (herfa pil u qıci re hessas a), ya zi peli (reyn
 
 # Special:Categories
 'categories' => 'Kategoriy',
-'categoriespagetext' => '{{PLURAL:$1|kategoriyê|kategoriyê}} cêrıni de pel u media esto.
-[[Special:UnusedCategories|kategoriyê ke nê xebtênê]] tiya de nêmociyeni.
-hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
-'categoriesfrom' => 'kategori yê ke pê ninan destpêkeno ramocın:',
+'categoriespagetext' => '{{PLURAL:$1|Kategoriya cêrene|Kategoriyanê cêrênan}} de peli ya zi medya estê.
+[[Special:UnusedCategories|Kategoriyê ke nêxebetiyenê]] tiya de nêmocniyayê.
+[[Special:WantedCategories|Kategoriyanê waşteyeyan]] de zi bıvêne.',
+'categoriesfrom' => 'Kategoriyê ke be ninan dest pêkenê, bımocne:',
 'special-categories-sort-count' => 'goreyê çendi rêz ker.',
 'special-categories-sort-abc' => 'alfabetik rêz ker',
 
@@ -2298,7 +2308,7 @@ hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
 # Special:LinkSearch
 'linksearch' => 'Gıreyê teberi cı geyrê',
 'linksearch-pat' => 'bıgêr motif:',
-'linksearch-ns' => 'Heruna naman:',
+'linksearch-ns' => 'Heruna nameyan:',
 'linksearch-ok' => 'Cı geyre',
 'linksearch-text' => 'Jokeri ê zey "*.wikipedia.org"i benê ke bıgureniyê.
 Tewr senık yew sewiya serêna cayê tesiri lazıma, mesela "*.org".<br />
@@ -2394,7 +2404,7 @@ Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni.',
 'removewatch' => 'Listedê mınê seyr kerdışi ra hewad',
 'removedwatchtext' => 'Ena pela "[[:$1]]" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].',
 'watch' => 'Temaşe ke',
-'watchthispage' => 'Na pele seyr ke',
+'watchthispage' => 'Na perer seyr ke',
 'unwatch' => 'Teqib mekerê',
 'unwatchthispage' => 'temaşa kerdışê peli vındarn.',
 'notanarticle' => 'mebhesê peli niyo',
@@ -2463,7 +2473,7 @@ Qey hemkari u pêşniyazi:
 # Delete
 'deletepage' => 'Pele bestere',
 'confirm' => 'Testiq ke',
-'excontent' => "Zerrey cı: '$1'",
+'excontent' => "Zerreko verén: '$1'",
 'excontentauthor' => "Zerrey cı: '$1' no/na ('[[Special:Contributions/$2|$2]]'  teyna iştıraq kerdo)",
 'exbeforeblank' => "behsê verê esteriyayişi: '$1'",
 'exblank' => 'zerreyê peli vengo',
@@ -2483,12 +2493,12 @@ Qe qeydê wedarnayışi, $2 bevinin.',
 'deletecomment' => 'Sebeb:',
 'deleteotherreason' => 'Sebebo bin:',
 'deletereasonotherlist' => 'Sebebo bin',
-'deletereason-dropdown' => '*Sebebé esterıti
-** Spam
+'deletereason-dropdown' => '* Sebebê esterıtışê pêroyi
+** Vurnayışo nêwaşte (spam)
 ** Vandalizm
-** İhlala heqdé telifi
-** WaÅ\9ftıÅ\9fé nustoği
-** Xırab hetenayış',
+** İxlalê heqa telifi
+** WaÅ\9ftıÅ\9fê nuÅ\9ftoği
+** Oryantasyono xırabe',
 'delete-edit-reasonlist' => 'Sebebê vurnayışan bıvurne',
 'delete-toobig' => 'no pel, pê $1 {{PLURAL:$1|tene vuriyayiş|tene vuriyayiş}}i wayirê yew tarixo kehen o.
 qey hewna nêşiyayişi wina pelani u {{SITENAME}}nêxerebnayişê keyepeli yew hed niyaya ro.',
@@ -2531,7 +2541,7 @@ Qey malumato ziyede [[Special:ProtectedPages|Peleyê ke star biye]] bewni rê ê
 'protect-title' => 'qey "$1" yew seviyaya pawıtışi bıvıcinê',
 'protect-title-notallowed' => 'Star kerdış sewiyeyê "$1" bıvinê',
 'prot_1movedto2' => 'nameyê [[$1]] peli yo newe: [[$2]]',
-'protect-badnamespace-title' => 'Heruna naman itad starêna',
+'protect-badnamespace-title' => 'Heruna nameyana bêsıtare',
 'protect-badnamespace-text' => 'Na herunda namide peley nêstarênê.',
 'protect-norestrictiontypes-text' => 'Na perdi mahne esto cokira tipeci nikarnina',
 'protect-norestrictiontypes-title' => 'Pera starneyin',
@@ -2580,8 +2590,8 @@ Tı eşkeno seviyeye kılit kerdışi bıvurno, feqat tı nıeşken "cascading p
 
 # Restrictions (nouns)
 'restriction-edit' => 'Bıvurne',
-'restriction-move' => 'Bere',
-'restriction-create' => 'İycad ke',
+'restriction-move' => 'Ber',
+'restriction-create' => 'Vıraze',
 'restriction-upload' => 'Bar ke',
 
 # Restriction levels
@@ -2610,8 +2620,7 @@ Revizyoni ya hewn a biyê ya arşiw ra veciyayê ya zi cıresayişê şımayi ş
 'undeletebtn' => 'Timar bike',
 'undeletelink' => 'bıvêne/peyser bia',
 'undeleteviewlink' => 'bıvin',
-'undeletereset' => 'Reset kerê',
-'undeleteinvert' => 'vicnayeyi qeldaye açarn',
+'undeleteinvert' => 'Weçinıtışi açarne',
 'undeletecomment' => 'Sebeb:',
 'undeletedrevisions' => 'pêro piya{{PLURAL:$1|1 qeyd|$1 qeyd}} tepiya anciya.',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 revizyon|$1 revizyon}} u {{PLURAL:$2|1 dosya|$2 dosya}} ameyê halê xo yê verıni',
@@ -2639,13 +2648,12 @@ belka cıwa ver hewn a biyo..',
 $1',
 'undelete-show-file-confirm' => '"<nowiki>$1</nowiki>" şıma emin î dosyaya revizyonê no $2 $3 tarixi bıvini?',
 'undelete-show-file-submit' => 'E',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
-'namespace' => 'Heruna naman:',
-'invert' => 'Weçinıtışo peyserki',
+'namespace' => 'Heruna nameyan:',
+'invert' => 'Weçinıtışi açarne',
 'tooltip-invert' => 'nameyo ke nışan biyo (u nameyo elekeyın zi nışanyyayo se) vurnayışan  zerrekan nımtışi re ena dore tesdiqi nışan kerê',
-'namespace_association' => 'Cayê nameyanê elaqedaran',
+'namespace_association' => 'Heruna nameyanê elaqedaran',
 'tooltip-namespace_association' => 'Herunda canemiya elekeyın nışan kerdışi sero qıse kerdışi yana zerre dekerdışi rê ena dora tesdiqi nışan kerê',
 'blanknamespace' => '(Ser)',
 
@@ -2662,12 +2670,12 @@ $1',
 'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
 'sp-contributions-newbies-sub' => 'Qe hesebê newe',
 'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
-'sp-contributions-blocklog' => 'Qeydê kılitkerdışi',
-'sp-contributions-deleted' => 'iştırakê karberiê esterıtey',
+'sp-contributions-blocklog' => 'Qeydê blokey',
+'sp-contributions-deleted' => 'İştırakê karberi esterd',
 'sp-contributions-uploads' => 'barkerdey',
 'sp-contributions-logs' => 'qeydi',
 'sp-contributions-talk' => 'werênayış',
-'sp-contributions-userrights' => 'İdareyê heqanê karberan',
+'sp-contributions-userrights' => 'idareyê heqanê karberan',
 'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
 qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
 'sp-contributions-blocked-notice-anon' => 'Eno adresê IPi bloke biyo.
@@ -2678,7 +2686,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'sp-contributions-submit' => 'Cı geyre',
 
 # What links here
-'whatlinkshere' => 'Gıreyê pele',
+'whatlinkshere' => 'Gırey perer',
 'whatlinkshere-title' => 'Per da "$1" rê perê ke gre danê',
 'whatlinkshere-page' => 'Pele:',
 'linkshere' => "Ena peleyan grey biya '''[[:$1]]''':",
@@ -2701,13 +2709,11 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'block' => 'Karberi vındarne',
 'unblock' => 'Hesabê karberi akerê',
 'blockip' => 'Karberi kılit ke',
-'blockip-title' => 'Karberi kılit ke',
 'blockip-legend' => 'Karber blok bike',
 'blockiptext' => 'pê şuxulnayişê formê cêrıni, şıma eşkeni verniyê vurnayişkerdışê yew karberi ya zi yew IPyi bıgêrî. No têna qey verni-gırewtışê vandalizmiyo u gani şıma [[{{MediaWiki:Policy-url}}|qaydeyan]] re diqqet bıkeri. cêr de muheqqeq sebebê verni-grewtışi bınusi. (mesela: -nê- pelani de vandalizm kerdo).',
 'ipadressorusername' => 'Adresa IPy ya zi nameyê karberi:',
 'ipbexpiry' => 'Qedyayış:',
 'ipbreason' => 'Sebeb:',
-'ipbreasonotherlist' => 'Sebebê bini',
 'ipbreason-dropdown' => '*sebebê verni-grewtışi yê pêroyi
 ** malumatê şaş têare kerdış
 ** Zerreyê pelan vetış
@@ -2723,8 +2729,6 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipbsubmit' => 'Ena karber blok bike',
 'ipbother' => 'Waxtê bini:',
 'ipboptions' => '2 seat:2 hours,1 roc:1 day,3 roci:3 days,1 hefte:1 week,2 heftey:2 weeks,1 aşm:1 month,3 aşm:3 months,6 aşmi:6 months,1 ser:1 year,ebedi:infinite',
-'ipbotheroption' => 'bini',
-'ipbotherreason' => 'Sebebê bini:',
 'ipbhidename' => 'Nameyê karberî listeyan u vurnayîşan ra binumne',
 'ipbwatchuser' => 'Pela miniqaşe u pela ena karberî seyr bike',
 'ipb-disableusertalk' => 'No karber wexto ke bloqedeyo wa pela da xodı vurnayış kerdışi rê izin medı',
@@ -2773,7 +2777,7 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
 'ipblocklist-empty' => 'Lista kılitkerdışi venga.',
 'ipblocklist-no-results' => 'Adresa IPya waştiye ya zi namey karberi kılit nêbiyo.',
 'blocklink' => 'kılit ke',
-'unblocklink' => 'a ke',
+'unblocklink' => 'bloki wedare',
 'change-blocklink' => 'kılitkerdışi bıvurne',
 'contribslink' => 'iştıraqi',
 'emaillink' => 'e-poste bırışe',
@@ -2782,7 +2786,7 @@ Sebebê kılit-biyayışê $1\'i: "$2"o',
 'blocklogpage' => 'Qeydê bloqi',
 'blocklog-showlog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
 'blocklog-showsuppresslog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
-'blocklogentry' => 'Karberê [[$1]] ke bloqe, bloqey cı hetana $2 $3 do bıramo.',
+'blocklogentry' => '[[$1]] biyo bloqe, sebeb: $3, hetana $2 do bıramo.',
 'reblock-logentry' => 'qey [[$1]]i tarixê qediyayişi $2 $3 pa ninan a eyarê ver-grewtışan vurna.',
 'blocklogtext' => "No kuliyatê kılitkerdış u rakerdışê fealiyetê karberano.
 Adresê IP'ya ke otomatikmen kılit biyê lista de çıniya.
@@ -2816,7 +2820,7 @@ labele parçeya benateyê na $2 adresibi u ey ra ver-geryayo u şıma eşkeni no
 'sorbs_create_account_reason' => 'IP adresa şıma, hetê no translatewiki.net keyepeli ra DNSBL de proxy hesibyayo u liste biyo.
 
 şıma neeşkeni hesab bıvırazi',
-'cant-block-while-blocked' => 'Ê ye ke verniyê şıma gırewtî şıma nêeşkeni verniyê ninan bıgeri',
+'xffblockreason' => 'Yew adresê İP sernuştey X-Forwarded-For de esto, ya ê to ya ki ê proxy serverio ke tı gureynenê (xebetnenê), bloke biyo. Sebebê blokekerdışio esıl no bi: $1',
 'cant-see-hidden-user' => 'karber o ke şıma gêreni verniyê ey bıgeri ca ra verniyê ey gırewteyo u pinani kerdeyo.',
 'ipbblocked' => 'Ti nieşkena karberanê binan bloke bike ya zi a bike cunki ti bloke biya',
 'ipbnounblockself' => 'Ti nieşkena xo a bike',
@@ -2876,7 +2880,6 @@ Ma tu ra rica keni, tı en verni dı qontrol bıki u bışıravi.",
 Oturse, tı gani peleyê mınaqeşeyê manually beri.",
 'movearticle' => 'Pele bere:',
 'moveuserpage-warning' => "'''Diqet:''' Ti eka yew pelê karberi beni. Diqet bike teyna pel beni feqat ena pele reyna nameyê newi \"nebeno''.",
-'movenologin' => 'Şıma cıkewtış nêvıraşto',
 'movenologintext' => 'qey vurnayişê nameyê peli şıma gani qeyd kerde u cıkewteyê [[Special:UserLogin|sistemi]] bıbiy.',
 'movenotallowed' => 'desturê şıma çino, şıma pelan bıkırışi',
 'movenotallowedfile' => 'desturê şıma çino, şıma pelan bıkırışi',
@@ -2892,8 +2895,6 @@ Oturse, tı gani peleyê mınaqeşeyê manually beri.",
 'articleexists' => 'Ena nameyê pela database ma dı esta ya zi tı raşt nınuşt. .
 Yewna name bınus.',
 'cantmove-titleprotected' => 'şıma nêşkeni yew peli bıhewelnê tiya çunke pawıyeno',
-'talkexists' => "'''Ma ena pele berd. Feqet pele mıneqeşe dı yew problem esto. Çınki ser name newe dı yew pele rona esto. Eq tı eşkeno, pele mıneqeşe manually beri.'''",
-'movedto' => 'berd be',
 'movetalk' => 'Pela werênayışiê elaqedare bere',
 'move-subpages' => 'pelê bınini bıkırış($1 heta tiya)',
 'move-talk-subpages' => 'pelê bınini yê pelê werê ameyeşi bıkırış ($1 heta tiya)',
@@ -2901,18 +2902,18 @@ Yewna name bınus.',
 'movepage-page-moved' => 'pelê $1i kırışiya pelê $2i.',
 'movepage-page-unmoved' => 'pelê $1i nêkırışiyeno sernameyê $2i.',
 'movepage-max-pages' => 'tewr ziyed $1 {{PLURAL:$1|peli|peli}} kırışiya u hıni ziyedê ıney otomotikmen nêkırışiyeno.',
-'movelogpage' => 'Qeydê berdışi',
+'movelogpage' => 'Qeydé berdışi',
 'movelogpagetext' => 'nameyê liste ya ke cêr de yo, pelê vuriyayeyani mocneno',
 'movesubpage' => '{{PLURAL:$1|Subpage|pelê bınıni}}',
 'movesubpagetext' => '{{PLURAL:$1|pelê bınıni yê|pelê bınıni yê}} no $1 peli cer de yo.',
 'movenosubpage' => 'pelê bınıni yê no peli çino.',
 'movereason' => 'Sebeb:',
 'revertmove' => 'peyser bia',
-'delete_and_move' => 'Bestere û bere',
+'delete_and_move' => 'Bestern u ber',
 'delete_and_move_text' => '==gani hewn a bıbıo/bıesteriyo==
 
 " no [[:$1]]" name de yew pel ca ra esto. şıma wazeni pê hewn a kerdışê ey peli vurnayişê nameyi bıkeri?',
-'delete_and_move_confirm' => 'Eya, na pele bestere',
+'delete_and_move_confirm' => 'E na perer bestern',
 'delete_and_move_reason' => '"[[$1]]" qande nami re ca akerdışi re besteriyaye',
 'selfmove' => 'name yo ke şıma wazeni bıbo, ın name û name yo ke ca ra esto eyni yê /zepê yê. vurnayiş mumkin niyo.',
 'immobile-source-namespace' => '"$1" pelê cayi de nameyi nêkırışyenî',
@@ -3059,76 +3060,76 @@ dosyaya emaneti vindbiyo',
 'javascripttest-qunit-heading' => 'MediaWiki JavaScript QUnit test suite',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Pelaya karberi',
+'tooltip-pt-userpage' => 'Pera şımaya karberi',
 'tooltip-pt-anonuserpage' => 'pelê karberê IPyi',
-'tooltip-pt-mytalk' => 'Pela ya Qıse vatışi',
+'tooltip-pt-mytalk' => 'Pela toya werênayışi',
 'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
-'tooltip-pt-preferences' => 'Tercihê to',
+'tooltip-pt-preferences' => 'Tercihi',
 'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
-'tooltip-pt-mycontris' => 'Yew lista iştıraqanê şıma',
+'tooltip-pt-mycontris' => 'Listeya dekerdışan de şıma',
 'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
 'tooltip-pt-anonlogin' => 'Seba cıkewtışê şıma rê dewato; labelê, no zeruri niyo',
-'tooltip-pt-logout' => 'Bıveciye',
-'tooltip-ca-talk' => 'Zerrey pela sero werênayış',
-'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-pt-logout' => 'Sistem ra vıcyayış',
+'tooltip-ca-talk' => 'Zerrekê pele sero werênayış',
+'tooltip-ca-edit' => 'Tı şenay na perer bıvurné.Verdé qeyd kerdışi ver gocega verqayti bıkarné.',
+'tooltip-ca-addsection' => 'Zu bınnusteya newi ak',
 '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-history' => 'Verén rewziyoné ena perer bıvin',
+'tooltip-ca-protect' => 'Na perer star fi',
 'tooltip-ca-unprotect' => 'Starkerdışe ena peler bıvurne',
-'tooltip-ca-delete' => 'Ena perer besternê',
+'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 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' => '{{SITENAME}} miyan de bıvin',
 'tooltip-search-go' => 'Ebe nê namey tami şo yew pela ke esta',
 'tooltip-search-fulltext' => 'Nê  metni peran dı cı geyre',
-'tooltip-p-logo' => 'Pela seri bıvênên',
+'tooltip-p-logo' => 'Şo pela seri',
 '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' => 'Cayê doskerdışi',
+'tooltip-n-randompage' => 'Perake raşt amé',
+'tooltip-n-help' => 'Cayê peştigırewtış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',
 'tooltip-feed-atom' => 'Qe ena pele atom feed',
-'tooltip-t-contributions' => 'İştirakanê ena karber bevin',
+'tooltip-t-contributions' => 'Listey dekerdışan de karberi bıvin',
 'tooltip-t-emailuser' => 'Ena karber ri yew email bışırav',
 'tooltip-t-upload' => 'Dosya bar ke',
 'tooltip-t-specialpages' => 'Yew lista pelanê xasanê pêroyinan',
-'tooltip-t-print' => 'Nımuney çapkerdışiê ena pele',
+'tooltip-t-print' => 'Hewl versiyona ploğnayışa na perer',
 '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' => '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ê',
-'tooltip-ca-nstab-help' => 'Peleyê yardimi bivinên',
-'tooltip-ca-nstab-category' => 'Pele kategoriyan bevinin',
-'tooltip-minoredit' => 'Eno vurnayışê qıçkeko',
-'tooltip-save' => 'Vurnayışanê xo qeyd ke',
-'tooltip-preview' => 'Vurnayışê xo bıvin. Verniyê qeyd kerdışi, vurnayışê xo ena pele dı control bık.',
+'tooltip-ca-nstab-main' => 'Perra muhtevay bıvin',
+'tooltip-ca-nstab-user' => 'Pera karberi bıvin',
+'tooltip-ca-nstab-media' => 'Pera medya bıvin',
+'tooltip-ca-nstab-special' => 'Na yew pela xasa, şıma nêşenê sero vurnayış bıkerê',
+'tooltip-ca-nstab-project' => 'Pera proci bıvin',
+'tooltip-ca-nstab-image' => 'Pera dosyayer bıvin',
+'tooltip-ca-nstab-mediawiki' => 'Mesacané sistemi bıvin',
+'tooltip-ca-nstab-template' => 'Şabloni bıvin',
+'tooltip-ca-nstab-help' => 'Pela peşti bıvêne',
+'tooltip-ca-nstab-category' => 'Pela kategoriye bıvêne',
+'tooltip-minoredit' => 'Nay vırnayışa werdi nışan bıkeré',
+'tooltip-save' => 'Vurnayışa qeyd ke',
+'tooltip-preview' => 'Vurnayışané ğo çımra ravyarné. Verdé qeyd kerdışi eneri bıkarné!',
 'tooltip-diff' => 'Metni sero vurnayışan mocneno',
 'tooltip-compareselectedversions' => 'Ena per de ferqê rewziyonan de dı weçinaya bıvinê',
 'tooltip-watch' => 'Eno pele listey tıyo seyir-kerdişi ri dek',
 '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' => 'Dest be barkerdışi ke',
+'tooltip-upload' => 'Sergen de bari be',
 '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.',
 'tooltip-preferences-save' => 'Terciha qeyd ke',
 'tooltip-summary' => 'Yew xulasaya kilm binuse',
+'interlanguage-link-title' => '$1 - $2',
 
 # Scripts
 'common.js' => '/* Any JavaScript here will be loaded for all users on every page load. */',
@@ -3181,7 +3182,7 @@ Ney '''Mefiyé de'''!",
 'pageinfo-redirects-name' => 'Hetenayışê na perer',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Bınpelê na pela',
-'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|hetenayış|hetenayışi}}; $3 {{PLURAL:$3|raykerdışt|raykerdışi}})',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|serçarnayış|serçarnayışi}}; $3 {{PLURAL:$3|nêserçarnayış|nêserçarnayışi}})',
 'pageinfo-firstuser' => 'Pela vıraşter',
 'pageinfo-firsttime' => 'Demê pela vıraştışi',
 'pageinfo-lastuser' => 'Vurnayoğo peyên',
@@ -3218,7 +3219,7 @@ Ney '''Mefiyé de'''!",
 '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',
-'rcpatroldisabled' => 'Devriyeyê vurnayışê peyêni nihebitiyeno',
+'rcpatroldisabled' => 'Dewriyaya vurnayışê peyêni nêxebetiyena',
 'rcpatroldisabledtext' => 'Devriyeyê vurnayışê peyêni inke kefilnaye biyo u nihebitiyeno',
 'markedaspatrollederror' => 'Nişan nibeno ke devriye biyo',
 'markedaspatrollederrortext' => 'Ti gani revizyon işaret bike ke Nişanê devriye biyo',
@@ -3249,7 +3250,7 @@ $1',
 # Media information
 'mediawarning' => "'''Teme''': Na dosya de belkia kodê xırabıni estê.
 Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
-'imagemaxsize' => "Limitê ebat ê resimi:<br />''(qe pela deskripsiyonê dosyayan)''",
+'imagemaxsize' => "Lımita ebata resimi:<br />''(qande akerdışa perande dosyayan)''",
 'thumbsize' => 'Ebadê Thumbnaili',
 'widthheight' => '$1 - $2',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|pele|peli}}',
@@ -3542,7 +3543,7 @@ Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.'
 'exif-writer' => 'Nuştekar',
 'exif-languagecode' => 'Zıwan',
 'exif-iimversion' => 'Verqaydê IIM',
-'exif-iimcategory' => 'Kategori',
+'exif-iimcategory' => 'Kategoriye',
 'exif-iimsupplementalcategory' => 'Oleyê Kategoriyan',
 'exif-datetimeexpires' => 'No peyra mekarênê',
 'exif-datetimereleased' => 'Bıroşe',
@@ -3795,7 +3796,7 @@ $8',
 'exif-dc-publisher' => 'Hesrekar',
 'exif-dc-relation' => 'Medyay cı',
 'exif-dc-rights' => 'Heqi',
-'exif-dc-source' => 'Medyay çımi',
+'exif-dc-source' => 'Medyaya çımey',
 'exif-dc-type' => 'Babeta medyay',
 
 'exif-rating-rejected' => 'Red ke',
@@ -3827,15 +3828,10 @@ $8',
 'exif-urgency-high' => '( $1 ) Vêşiyo',
 'exif-urgency-other' => 'Sıftê  şınasiya karberi ($1)',
 
-# External editor support
-'edit-externally' => 'Ena dosya bıvurne pe yew programê harici',
-'edit-externally-help' => '(Qe informasyonê zafyer ena bevinin [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'pêro',
 'namespacesall' => 'pêro',
 'monthsall' => 'pêro',
-'limitall' => 'pêro',
 
 # Email address confirmation
 'confirmemail' => 'Adresê e-posta tesdiq ker',
@@ -3845,7 +3841,7 @@ Adresa şıma re qey erşawıtışê e-postayê araştin, butonê cêrıni pıpl
 E-posta yo ke erşawiyeno tede gıreyê kodê araşti esto, gıreyi pıploxne akerê u e-postayê xo araşt kerê.',
 'confirmemail_pending' => 'Yew codê konfirmasyonî ma ti ra şiravt;
 Eka ti newe hesabê xo viraşt, ti gani yew di dekika vindero u email xo kontrol bike, yani reyna yew hesab meviraz.',
-'confirmemail_send' => 'Yew kodê konfirmasyonî email mina bişirave',
+'confirmemail_send' => 'Yew kodê konfirmasyoni bırışe',
 'confirmemail_sent' => 'Emailê konfirmasyonî şiravt',
 'confirmemail_oncreate' => 'Yew codê konfirmasyonî ma ti ra şiravt;
 Ena kod semed ci kewtîşî lazim niyo, feqat ti gani sistem rê eno kod bimocne ke ti opsiyonê emailî wîkî a bike.',
@@ -3859,7 +3855,6 @@ Wextê kod ê konfirmasyonî viyerto.',
 'confirmemail_success' => 'Email adresê tu konfirme biy.
 Ti eşkeno [[Special:UserLogin|ci kewt]].',
 'confirmemail_loggedin' => 'E-posta adresiya şıma hendana tesdiq biya.',
-'confirmemail_error' => 'Konfirmasyon ni biy, yew ğelet esto.',
 'confirmemail_subject' => '{{SITENAME}} konfirmasyonê adres ê emalî',
 'confirmemail_body' => 'Brayo delal, mara ke şıma no IP-adresi ra,
 keyepelê {{SITENAME}}i de pêno $2 e-postayi hesab kerda.
@@ -3946,6 +3941,11 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'imgmultigo' => 'Şo!',
 'imgmultigoto' => 'Şo pela da $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(hesıbyayi zıwan)',
+'img-lang-info' => 'Resimé $1, $2 ya teké pé ke.',
+'img-lang-go' => 'Bırş',
+
 # Table pager
 'ascending_abbrev' => 'berz',
 'descending_abbrev' => 'nızm',
@@ -3953,7 +3953,7 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 'table_pager_prev' => 'Pela verêne',
 'table_pager_first' => 'Pela jûyıne',
 'table_pager_last' => 'Pela peyêne',
-'table_pager_limit' => 'Jû pele de $1 unsuran bımocne',
+'table_pager_limit' => 'her per de $1 unsuran bımocne',
 'table_pager_limit_label' => 'Her pele ra xacetan',
 'table_pager_limit_submit' => 'Şo',
 'table_pager_empty' => 'Netice çini yo',
@@ -3961,7 +3961,7 @@ Ma rica keno tesdiq bike ke ti raştî wazeno eno pel bivirazo.",
 # Auto-summaries
 'autosumm-blank' => 'Pele de her çi wederna',
 'autosumm-replace' => "Maqale pê '$1' vuriya",
-'autoredircomment' => 'Pele [[$1]] rê redirek biyo',
+'autoredircomment' => 'heteneya [[$1]]',
 'autosumm-new' => "Pela vıraziyê, '$1' bıvinê",
 
 # Size units
@@ -4108,6 +4108,7 @@ Ti hem zi eşkeno [[Special:EditWatchlist|use the standard editor]].',
 'version-version' => '(Versiyon $1)',
 'version-svn-revision' => '(r$2)',
 'version-license' => 'Lisans',
+'version-ext-license' => 'Lisans',
 'version-poweredby-credits' => "Ena wiki, dezginda '''[https://www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
 'version-poweredby-others' => 'Zewmi',
 'version-poweredby-translators' => "Açernere translatewiki.net'i",
@@ -4127,12 +4128,14 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:Redirect
-'redirect' => "Hetenayışa dosyay, karberi yana  rewizyona ID'i",
+'redirect' => 'Serşıkıtena dosya, karberi, pele ya ki revizyonê kamiya dosya',
 'redirect-legend' => 'Hetenayışa dosya yana pela',
+'redirect-summary' => 'Na pela xase to hetê jû dosya (namey dosya daeyo), jû pele (kamiya revizyoni ya ki pele daiya) ya ki jû pela karberi (kamiya karberia reqemkiye daiya) ser şıknena. Gurenayış: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya ki  [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Şo',
 'redirect-lookup' => 'Bewni',
 'redirect-value' => 'Erc:',
 'redirect-user' => 'Kamiya Karberi:',
+'redirect-page' => 'Kamiya pele',
 'redirect-revision' => 'Rewizyona pela',
 'redirect-file' => 'Namey dosya',
 'redirect-not-exists' => 'Erc nêvineyê',
@@ -4151,8 +4154,8 @@ enê programiya piya [{{SERVER}}{{SCRIPTPATH}}/COPYING jew kopyay lisans dê GNU
 # Special:SpecialPages
 'specialpages' => 'Pelê xısusiy',
 'specialpages-note-top' => 'Kıtabek',
-'specialpages-note' => '*Normal pera bağsi.
-* <span class="mw-specialpagerestricted">Peré bağseyé ke groté ver hafıza.</span>',
+'specialpages-note' => '* Pelê xasê normali.
+* <span class="mw-specialpagerestricted">Pelê xasê nımıtey.</span>',
 'specialpages-group-maintenance' => 'Raporê tepıştışi',
 'specialpages-group-other' => 'Pelê xasiyê bini',
 'specialpages-group-login' => 'Cı kewe / hesab vıraze',
@@ -4199,7 +4202,6 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 
 # Special:ComparePages
 'comparepages' => 'Pela miqeyese ke',
-'compare-selector' => 'Revizyonê pele miqayese bike',
 'compare-page1' => 'Pele 1',
 'compare-page2' => 'Pele 2',
 'compare-rev1' => 'Revizyonê 1i',
@@ -4278,7 +4280,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'feedback-bugornote' => 'Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1  jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da "[ $3  $2 ]", namey karber dê xoya piya u wasteriya karfiye.',
 'feedback-subject' => 'Mersel:',
 'feedback-message' => 'Mesac:',
-'feedback-cancel' => 'Bıterkne',
+'feedback-cancel' => 'Bıtexelne',
 'feedback-submit' => 'Peyxeberdar Bırşe',
 'feedback-adding' => 'Pela rê peyxeberdar defêno...',
 'feedback-error1' => 'Xeta: API ra neticey ne vıcyay',
@@ -4340,7 +4342,7 @@ satır ê ke pê ney # # destpêkenê zey mışore/mıjore muamele vineno.
 'duration-minutes' => '$1 {{PLURAL:$1|deqa|deqey}}',
 'duration-hours' => '($1 {{PLURAL:$1|seate|seati}})',
 'duration-days' => '($1 {{PLURAL:$1|roce|roci}})',
-'duration-weeks' => '$1 {{PLURAL: $1|hefte|heftey}}',
+'duration-weeks' => '$1 {{PLURAL:$1|hefte|heftey}}',
 'duration-years' => '$1 {{PLURAL:$1|serre|serri}}',
 'duration-decades' => '$1 {{PLURAL:$1|dades|dadesi}}',
 'duration-centuries' => '$1 {{PLURAL:$1|seserre|seserri}}',
@@ -4375,10 +4377,12 @@ Eneri Medya wiki sera xo keno.',
 'expand_templates_input' => 'sernameyê cıkewtışi:',
 'expand_templates_output' => 'netice',
 'expand_templates_xml_output' => 'XML vıraştış',
+'expand_templates_html_output' => 'Xam vetey HTML',
 'expand_templates_ok' => 'temam',
 'expand_templates_remove_comments' => 'Tefsiran wedare',
 'expand_templates_remove_nowiki' => 'neticeyan de etiketê <nowiki> yan çap bıker',
 'expand_templates_generate_xml' => 'Dara XML arêdayoği bımocne',
+'expand_templates_generate_rawhtml' => "Xam HTML'i bıvin",
 'expand_templates_preview' => 'Verqayt',
 
 );
index 9d26c24..b5dfcbc 100644 (file)
@@ -62,7 +62,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Nejstarše_boki' ),
        'Blankpage'                 => array( 'Prozny_bok' ),
        'Block'                     => array( 'Blokěrowaś' ),
-       'Blockme'                   => array( 'Proksy-blokěrowanje' ),
        'Booksources'               => array( 'Pytaś_pó_ISBN' ),
        'BrokenRedirects'           => array( 'Njefunkcioněrujuce_dalejpósrědnjenja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -72,7 +71,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Wužywarske_konto_załožyś' ),
        'Deadendpages'              => array( 'Boki_kenž_su_slěpe_gasy' ),
        'DeletedContributions'      => array( 'Wulašowane_pśinoski' ),
-       'Disambiguations'           => array( 'Wótkaze_ku_rozjasnjenju_wopśimjeśa' ),
        'DoubleRedirects'           => array( 'Dwójne_dalejpósrědnjenja' ),
        'Emailuser'                 => array( 'E-mail' ),
        'Export'                    => array( 'Eksportěrowaś' ),
@@ -168,7 +166,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Doglědowane změny w aktualnych změnach schowaś',
 'tog-newpageshidepatrolled' => 'Doglědowane boki z lisćiny nowych bokow schowaś',
 'tog-extendwatchlist' => 'Wobglědowańku wócyniś, aby wšě změny pokazał, nic jano nejnowše',
-'tog-usenewrc' => 'Kupkowe změny pó boku w aktualnych změnach a wobglědowanjach (trjeba JavaScript)',
+'tog-usenewrc' => 'Kupkowe změny pó boku w aktualnych změnach a wobglědowanjach',
 'tog-numberheadings' => 'Nadpisma awtomatiski numerěrowaś',
 'tog-showtoolbar' => 'Wobźěłowańsku rědku pokazaś',
 'tog-editondblclick' => 'Boki z dwójnym kliknjenim wobźěłaś',
@@ -183,7 +181,6 @@ $messages = array(
 'tog-minordefault' => 'Wšykne móje změny ako małe markěrowaś',
 'tog-previewontop' => 'Zespominanje wušej wobźěłowańskego póla pokazaś',
 'tog-previewonfirst' => 'Pśi prědnem wobźěłanju pśecej zespominanje pokazaś',
-'tog-nocache' => 'Cache bokow wobglědowaka znjemóžniś',
 'tog-enotifwatchlistpages' => 'E-mail pósłaś, jolic se wobglědowany bok abo wobglědowana dataja  změnja',
 'tog-enotifusertalkpages' => 'E-mail pósłaś, změnijo-lic se mój diskusijny bok',
 'tog-enotifminoredits' => 'E-mail teke małych změnow bokow a datajow dla pósłaś',
@@ -204,6 +201,7 @@ $messages = array(
 'tog-showhiddencats' => 'Schowane kategorije pokazaś',
 'tog-norollbackdiff' => 'Rozdźěl pó slědkstajenju zanjechaś',
 'tog-useeditwarning' => 'Warnowaś, gaž bok spušća se z njeskłaźonymi změnami',
+'tog-prefershttps' => 'Pśi pśizjawjenju pśecej wěsty zwisk wužywaś',
 
 'underline-always' => 'pśecej',
 'underline-never' => 'žednje',
@@ -267,6 +265,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'now',
 'dec' => 'dec',
+'january-date' => '$1. januara',
+'february-date' => '$1. februara',
+'march-date' => '$1. měrca',
+'april-date' => '$1. apryla',
+'may-date' => '$1. maja',
+'june-date' => '$1. junija',
+'july-date' => '$1. julija',
+'august-date' => '$1. awgusta',
+'september-date' => '$1. septembra',
+'october-date' => '$1. oktobra',
+'november-date' => '$1. nowembra',
+'december-date' => '$1. decembra',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategorija|Kategoriji|Kategorije}}',
@@ -305,7 +315,6 @@ $messages = array(
 'qbedit' => 'Pśeměniś',
 'qbpageoptions' => 'Toś ten bok',
 'qbmyoptions' => 'Móje boki',
-'qbspecialpages' => 'Specialne boki',
 'faq' => 'FAQ (pšašanja a wótegrona)',
 'faqpage' => 'Project:FAQ (pšašanja a wótegrona)',
 
@@ -348,6 +357,7 @@ $messages = array(
 'create-this-page' => 'Bok wuźěłaś',
 'delete' => 'Wulašowaś',
 'deletethispage' => 'Toś ten bok wulašowaś',
+'undeletethispage' => 'Toś ten bok wótnowiś',
 'undelete_short' => '{{PLURAL:$1|1 wersiju|$1 wersiji|$1 wersije}} nawrośiś.',
 'viewdeleted_short' => '{{PLURAL:$1|jadnu wulašowanu změnu|$1 wulašowanej změnje|$1 wulašowane změny|$1 wulašowanych změnow}} se woglědaś',
 'protect' => 'Šćitaś',
@@ -376,7 +386,7 @@ $messages = array(
 'otherlanguages' => 'W drugich rěcach',
 'redirectedfrom' => '(pósrědnjone z boka „$1”)',
 'redirectpagesub' => 'Dalejpósrědnjenje',
-'lastmodifiedat' => 'Slědna změna boka: $1 w $2 goź.',
+'lastmodifiedat' => 'Slědna změna boka: $1 w $2 góź.',
 'viewcount' => 'Toś ten bok jo był woglědany {{PLURAL:$1|jaden raz|$1 raza|$1 raze}}.',
 'protectedpage' => 'Śćitany bok',
 'jumpto' => 'Źi na bok:',
@@ -475,6 +485,12 @@ Płaśece specialne boki namakaju se pód [[Special:SpecialPages|lisćinu specia
 # General errors
 'error' => 'Zmólka',
 'databaseerror' => 'Zmólka w datowej bance',
+'databaseerror-text' => 'Zmólka w datowej bance jo nastała.
+To móžo na programowu zmólku w softwarje pokazaś.',
+'databaseerror-textcl' => 'Zmólka w datowej bance jo nastała.',
+'databaseerror-query' => 'Wótpšašanje: $1',
+'databaseerror-function' => 'Funkcija: $1',
+'databaseerror-error' => 'Zmólka: $1',
 'laggedslavemode' => 'Glědaj: Jo móžno, až pokazany bok nejaktualnjejše změny njewopśimjejo.',
 'readonly' => 'Datowa banka jo zacynjona',
 'enterlockreason' => 'Pšosym zapódaj pśicynu za zacynjenje datoweje banki a informaciju, ga buźo zasej pśistupna',
@@ -507,14 +523,12 @@ Pšosym daj to a pśisłušny URL [[Special:ListUsers/sysop|administratoroju]] k
 'cannotdelete-title' => 'Bok "$1" njedajo se lašowaś',
 'delete-hook-aborted' => 'Wulašowanje pśez kokulu pśetergnjone.
 Njejo žedno wujasnjenje.',
+'no-null-revision' => 'Nowa nulowa wersija za bok "$1" njedajo se napóraś',
 'badtitle' => 'Njepłaśecy nadpis',
 'badtitletext' => 'Nadpis pominanego boka jo był njepłaśecy, prozny abo njekorektny nadpis, póchadajucy z mjazyrěcnego abo interwikijowego wótkaza. Snaź wopśimjejo jadno abo wěcej znamuškow, kótarež njejsu w nadpisach dowólone.',
 'perfcached' => 'Toś te daty póchadaju z pufrowaka a mógu snaź njeaktualne byś. Maksimalnje {{PLURAL:$1|jaden wuslědk stoj|$1 wuslědka stojtej|$1 wuslědki stoje|$1 wuslědkow stoj}} w pufrowaku k dispoziciji.',
 'perfcachedts' => 'Toś te daty póchadaju z pufrowaka a su se $1 slědny raz aktualizěrowali. Maksimalnje {{PLURAL:$4|jaden wuslědk stoj|$4 wuslědka stojtej|$4 wuslědki stoje|$4 wuslědkow stoj}} w pufrowaku k dispoziciji.',
 'querypage-no-updates' => 'Aktualizěrowanje toś togo boka jo se znjemóžniło. Daty how se nejžpjerwjej raz njeaktualizěruju.',
-'wrong_wfQuery_params' => 'Njedobre parametery za wfQuery()<br />
-Funkcija: $1<br />
-Wótpšašanje: $2',
 'viewsource' => 'Žrědło se wobglědaś',
 'viewsource-title' => 'Žrědłowy tekst za $1 se woglědaś',
 'actionthrottled' => 'Akcije limitowane',
@@ -530,6 +544,10 @@ Aby pśełožki za wšykne wikije pśidał abo změnił, wužywaj pšosym [//tra
 'namespaceprotected' => "Njejsy wopšawnjony, boki w rumje: '''$1''' wobźěłaś.",
 'customcssprotected' => 'Njamaš pšawo, aby toś ten CSS-bok wobźěłał, dokulaž wopśimujo  wósobinske nastajenja drugego wužywarja.',
 'customjsprotected' => 'Njamaš pšawo, aby toś ten JavaScriptowy bok wobźěłał, dokulaž wopśimujo  wósobinske nastajenja drugego wužywarja.',
+'mycustomcssprotected' => 'Njamaš pšawo toś ten CSS-bok wobźěłaś.',
+'mycustomjsprotected' => 'Njamaš pšawo toś ten JavaScript-bok wobźěłaś.',
+'myprivateinfoprotected' => 'Njamaš pšawo swóje priwatne informacije wobźěłaś.',
+'mypreferencesprotected' => 'Njamaš pšawo swóje nastajenja wobźěłaś.',
 'ns-specialprotected' => 'Njejo móžno, boki w rumje {{ns:special}} wobźěłaś.',
 'titleprotected' => "Bok z toś tym mjenim bu wót [[User:$1|$1]] pśeśiwo napóranjeju šćitany. Pśicyna jo ''$2''.",
 'filereadonlyerror' => 'Njejo móžno dataju "$1" změniś, dokulaž datajowy repozitorium "$2" jo jano cytajobny.
@@ -539,10 +557,11 @@ Administrator, kenž jo jen zastajił, jo toś tu pśicynu pódał: "$3".',
 'invalidtitle-unknownnamespace' => 'Njepłaśiwy titel z njeznatym mjenjowym rumom $1 a tekstom "$2"',
 'exception-nologin' => 'Njejsy se pśizjawił',
 'exception-nologin-text' => 'Pšosym [[Special:Userlogin|pśizjaw se]], aby pśistup na toś ten bok abo akciju měł.',
+'exception-nologin-text-manual' => 'Aby pśistup na toś ten bok abo akciju měł, musyš $1.',
 
 # Virus scanner
 'virus-badscanner' => "Špatna konfiguracija: njeznaty wirusowy scanner: ''$1''",
-'virus-scanfailed' => 'Scannowanje jo se njeraźiło (kod $1)',
+'virus-scanfailed' => 'Scannowanje njejo se raźiło (koda $1)',
 'virus-unknownscanner' => 'njeznaty antiwirus:',
 
 # Login and logout pages
@@ -554,6 +573,7 @@ Glědaj: Jo móžno, až někotare boki pokazuju se snaź tak, ako by ty hyšći
 'yourname' => 'mě wužywarja',
 'userlogin-yourname' => 'Wužywarske mě',
 'userlogin-yourname-ph' => 'Zapódaj swójo wužywarske mě',
+'createacct-another-username-ph' => 'Wužywarske mě zapódaś',
 'yourpassword' => 'šćitne gronidło:',
 'userlogin-yourpassword' => 'Gronidło',
 'userlogin-yourpassword-ph' => 'Zapódaj swójo gronidło',
@@ -583,15 +603,35 @@ Glědaj: Jo móžno, až někotare boki pokazuju se snaź tak, ako by ty hyšći
 'gotaccount' => "Maš južo wužywarske konto? '''$1'''.",
 'gotaccountlink' => 'Pśizjawiś se',
 'userlogin-resetlink' => 'Sy pśizjawjeńske daty zabył?',
-'userlogin-resetpassword-link' => 'Gronidło anulěrowaś',
+'userlogin-resetpassword-link' => 'Sy swójo gronidło zabył?',
 'helplogin-url' => 'Help:Pśizjawiś',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pomoc za pśizjawjenje]]',
-'createaccountmail' => 'Nachylne pśidatne gronidło wužywaś a jo na slědujucu e-mailowu adresu pósłaś',
+'userlogin-loggedin' => 'Sy južo ako {{GENDER:$1|$1 pśizjawjony|$1 pśizjawjona}}. Wužyj slědujucy formular, aby se ako drugi wužywaŕ pśizjawił.',
+'userlogin-createanother' => 'Druge konto załožyś',
+'createacct-join' => 'Zapódaj dołojce swóje informacije.',
+'createacct-another-join' => 'Zapódaj dołojce informacije nowego konta.',
+'createacct-emailrequired' => 'E-mailowa adresa',
+'createacct-emailoptional' => 'E-mailowa adresa (opcionalny)',
+'createacct-email-ph' => 'Zapódaj swóju e-mailowu adresu',
+'createacct-another-email-ph' => 'E-mailowu adresu zapódaś',
+'createaccountmail' => 'Nachylne pśipadne gronidło wužywaś a jo na pódanu e-mailowu adresu pósłaś',
+'createacct-realname' => 'Napšawdne mě (opcionalny)',
 'createaccountreason' => 'Pśicyna:',
+'createacct-reason' => 'Pśicyna',
+'createacct-reason-ph' => 'Cogodla załožujoš druge konto?',
+'createacct-captcha' => 'Wěstotna kontrola',
+'createacct-imgcaptcha-ph' => 'Zapódaj tekst, kótaryž wiźeš dołojce',
+'createacct-submit' => 'Twójo konto załožyś',
+'createacct-another-submit' => 'Druge konto załožyś',
+'createacct-benefit-heading' => '{{SITENAME}} jo se wót luźi ako ty napórała.',
+'createacct-benefit-body1' => '{{PLURAL:$1|změna|změnje|změny}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|bok|boka|boki}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|aktiwny sobuskatkujucy|aktiwnej sobustatkucujej|aktiwne sobustatkujuce}}',
 'badretype' => 'Šćitnej gronidle, kótarejž sy zapódał, se njemakajotej.',
 'userexists' => 'Wužywarske mě se južo wužywa.
 Pšosym wubjeŕ druge mě.',
 'loginerror' => 'Zmólka pśi pśizjawjenju',
+'createacct-error' => 'Zmólka pśi załožowanju konta',
 'createaccounterror' => 'Wužywarske konto njejo se napóraś dało: $1',
 'nocookiesnew' => 'Wužywarske konto jo se južo wutwóriło, ale wužywaŕ njejo pśizjawjony. {{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
 'nocookieslogin' => '{{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
@@ -610,7 +650,7 @@ Pśeglěduj pšawopis abo [[Special:UserLogin/signup|załož nowe konto]].',
 'passwordtooshort' => 'Gronidła deje nanejmjenjej {{PLURAL:$1|1 znamuško|$1 znamušce|$1 znamuška|$1 znamuškow}} měś.',
 'password-name-match' => 'Twójo gronidło musy se wót swójogo wužywarskego mjenja rozeznaś.',
 'password-login-forbidden' => 'Wužywanje toś togo wužywarskego mjenja a gronidła jo zakazane.',
-'mailmypassword' => 'Nowe gronidło pśipósłaś',
+'mailmypassword' => 'Gronidło slědk stajiś',
 'passwordremindertitle' => 'Nowe nachylne pótajmne słowo za {{SITENAME}}',
 'passwordremindertext' => 'Něchten z IP-adresu $1 (nejskerjej ty) jo se wupšosył nowe gronidło za {{SITENAME}} ($4).
 Nachylne gronidło za wužywarja "$2" jo se napórało a jo něnto "$3". Jolic jo to twój wótglěd było, musyš se něnto pśijawiś a wubraś nowe gronidło. Twójo nachylne gronidło pśepadnjo za {{PLURAL:$5|jadyn źeń|$5 dnja|$5 dny|$5 dnjow}}.
@@ -621,9 +661,7 @@ Jolic jo něchten drugi wó nowe šćitne gronidło pšosył abo ty sy se zasej
 'passwordsent' => 'Nowe šćitne gronidło jo se wótpósłało na e-mailowu adresu wužywarja „$1“.
 Pšosym pśizjaw se zasej, gaž jo dostanjoš.',
 'blocked-mailpassword' => 'Twója IP-adresa jo se za wobźěłowanje bokow blokěrowała a teke pśipósłanje nowego šćitnego gronidła jo se znjemóžniło, aby se znjewužywanjeju zadorało.',
-'eauthentsent' => 'Wobkšuśenje jo se na e-mailowu adresu wótposłało.
-
-Nježli až wótpósćelo se dalšna e-mail na to wužywarske konto, dejš slědowaś instrukcije w powěsći a tak wobkšuśiś, až konto jo wót wěrnosći twójo.',
+'eauthentsent' => 'Wobkšuśenje jo se na pódanu e-mailowu adresu wótposłało. Nježli až wótpósćelo se dalšna e-mail na to wužywarske konto, dejš slědowaś instrukcije w e-mailu, aby wobkšuśił, až konto jo napšawdu twójo.',
 'throttled-mailpassword' => 'E-mail za anulěrowanje gronidła jo se za {{PLURAL:$1|slědnu góźinu|slědnej $1 góźinje|slědne $1 góźiny|slědnych $1 góźin}} pósłała. Aby znjewužywanjeju zasajźało, se jano jadna e-mail za anulěrowanje gronidła na {{PLURAL:$1|góźinu|$1 góźinje|$1 góźiny|$1 góźin}} pósćelo.',
 'mailerror' => 'Zmólka pśi wótpósłanju e-maila: $1',
 'acct_creation_throttle_hit' => 'Woglědowarje toś togo wikija, kótarež wužywaju twóju IP-adresu su napórali {{PLURAL:$1|1 konto|$1 konśe|$1 konta|$1 kontow}} slědny źeń. To jo maksimalna dowólona licba za toś tu periodu.
@@ -642,10 +680,12 @@ Woglědowarje, kótarež wužywaju toś tu IP-adresu njamógu tuchylu dalšne ko
 
 Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnje wutwóriło.',
 'usernamehasherror' => 'Wužywarske mě njesmějo hašowe znamuška wopśimjeś',
-'login-throttled' => 'Sy pśecesto wopytał se pśizjawiś. Pócakaj pšosym, nježli až wopytajoš znowego.',
+'login-throttled' => 'Sy pśecesto wopytał se pśizjawiś. Pócakaj pšosym $1, nježli až wopytajoš znowego.',
 'login-abort-generic' => 'Twójo pśizjawjenje njejo wuspěšne było - pśetergnjone',
 'loginlanguagelabel' => 'Rěc: $1',
 'suspicious-userlogout' => 'Twójo póžedanje za wótzjawjenim jo se wótpokazało, dokulaž zda se, až jo se pósłało pśez wobškóźony wobglědowak abo pufrowański proksy',
+'createacct-another-realname-tip' => 'Napšawdne mě jo opcionalne.
+Jolic jo pódajoš, buźo se to wužywaś, aby pśinoski pśirědowało.',
 
 # Email sending
 'php-mail-error-unknown' => 'Njeznata zmólka w PHP-funkciji mail()',
@@ -653,7 +693,7 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
 'user-mail-no-body' => 'Jo se wopytało, e-mail bźez teksta abo z pśekrotkim tekstom pósłaś',
 
 # Change password dialog
-'resetpass' => 'Gronidło změniś',
+'changepassword' => 'Šćitne gronidło změniś',
 'resetpass_announce' => 'Sy z nachylnym e-mailowym šćitnym gronidłom pśizjawjony. Aby pśizjawjenje zakóńcył, zapódaj how nowe šćitne gronidło:',
 'resetpass_text' => '<!-- Dodaj how tekst -->',
 'resetpass_header' => 'Kontowe gronidło změniś',
@@ -661,7 +701,7 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
 'newpassword' => 'Nowe šćitne gronidło:',
 'retypenew' => 'Nowe šćitne gronidło (hyšći raz):',
 'resetpass_submit' => 'Šćitne gronidło nastajiś a se pśizjawiś',
-'changepassword-success' => 'Twójo nowe šćitne gronidło jo nastajone. Něnto se pśizjaw …',
+'changepassword-success' => 'Twóje gronidło jo se wuspěšnje změniło!',
 'resetpass_forbidden' => 'Gronidła njedaju se změniś',
 'resetpass-no-info' => 'Dejš pśizjawjony byś, aby direktny pśistup na toś ten bok měł.',
 'resetpass-submit-loggedin' => 'Gronidło změniś',
@@ -673,8 +713,11 @@ Sy snaź swójo gronidło južo wuspěšnje změnił abo nowe nachylne gronidło
 
 # Special:PasswordReset
 'passwordreset' => 'Gronidło slědk stajiś',
+'passwordreset-text-one' => 'Wupołni toś ten formular, aby swójo gronidło anulěrował.',
+'passwordreset-text-many' => '{{PLURAL:$1|Wupołni jadne z pólow, aby nachylne gronidło pśez e-mail dostał.}}',
 'passwordreset-legend' => 'Gronidło slědk stajiś',
 'passwordreset-disabled' => 'Slědkstajenja gronidłow su se znjemóžnili na toś tom wikiju.',
+'passwordreset-emaildisabled' => 'E-mailowe funkcije su se na toś tom wikiju znjemóžnili.',
 'passwordreset-username' => 'Wužywarske mě:',
 'passwordreset-domain' => 'Domena:',
 'passwordreset-capture' => 'E-mail se woglědaś?',
@@ -697,7 +740,7 @@ Ty by měł se něnto pśizjawiś a nowe gronidło wustajiś. Jolic něchten dru
 Nachylne gronidło: $2',
 'passwordreset-emailsent' => 'E-mail za anulěrowanje gronidła jo se pósłała.',
 'passwordreset-emailsent-capture' => 'E-mail za anulěrowanje gronidła jo se pósłała, kótaraž pokazujo se dołojce.',
-'passwordreset-emailerror-capture' => 'E-mail za anulěrowanje gronidła jo se generěrowała, kótaraž pokazujo se dołojce, ale jeje słanje wužywarjeju jo se njeraźiło: $1',
+'passwordreset-emailerror-capture' => 'E-mail za anulěrowanje gronidła jo se napórała, kótaraž se dołojce pokazujo, ale słanje {{GENDER:$2|wužywarjeju|wužywarce}} njejo se raźiło: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'E-mailowu adresu změniś',
@@ -711,6 +754,19 @@ Nachylne gronidło: $2',
 'changeemail-submit' => 'E-mailowu adresu změniś',
 'changeemail-cancel' => 'Pśetergnuś',
 
+# Special:ResetTokens
+'resettokens' => 'Tokeny slědk stajiś',
+'resettokens-text' => 'Móžoš tokeny slědk stajiś, kótarež dowóluju pśistup na wěste priwatne daty, kótarež su z twójim kontom zwězane.
+
+Ty by dejał to cyniś, jolic sy je zmylnje z někim źělił abo jolic twóje konto jo se nadpadało.',
+'resettokens-no-tokens' => 'Tokeny za slědkstajenje njejsu.',
+'resettokens-legend' => 'Tokeny slědk stajiś',
+'resettokens-tokens' => 'Tokeny:',
+'resettokens-token-label' => '$1 (aktualna gódnota: $2)',
+'resettokens-watchlist-token' => 'Token za webkanal (Atom/RSS) [[Special:Watchlist|změnow na bokach w twójich woglědowankach]]',
+'resettokens-done' => 'Tokeny slědk stajone.',
+'resettokens-resetbutton' => 'Wubrane tokeny slědk stajiś',
+
 # Edit page toolbar
 'bold_sample' => 'Tucny tekst',
 'bold_tip' => 'Tucny tekst',
@@ -787,9 +843,7 @@ Jo se snaź pśesunuł abo wulašował, mjaztym až woglědujoš se bok.',
 'loginreqlink' => 'se pśizjawiś',
 'loginreqpagetext' => 'Dejš $1, aby mógł boki pšawje cytaś.',
 'accmailtitle' => 'Šćitne gronidło jo se wótpósłało.',
-'accmailtext' => "Pśipadnje napórane gronidło za [[User talk:$1|$1]] jo se pósłało k $2.
-
-Gronidło za toś to nowe konto dajo se na boku ''[[Special:ChangePassword|Gronidło změniś]]'' pśi pśizjawjenju změniś.",
+'accmailtext' => "Pśipadnje napórane gronidło za [[User talk:$1|$1]] jo se pósłało k $2. Dajo se na boku ''[[Special:ChangePassword|Gronidło změniś]]'' pśi pśizjawjenju změniś.",
 'newarticle' => '(Nowy nastawk)',
 'newarticletext' => "Sy slědował wótkaz na bok, kótaryž hyšći njeeksistěrujo.
 Aby bok napórał, zapiš do kašćika dołojce (glědaj [[{{MediaWiki:Helppage}}|bok pomocy]] za dalšne informacije). Jolic sy zamólnje how, klikni na tłocašk '''Slědk''' w swójom wobglědowaku.",
@@ -897,10 +951,13 @@ Zda sem až jo wulašowany.',
 'edit-already-exists' => 'Njejo móžno było nowy bok napóraś.
 Eksistěrujo južo.',
 'defaultmessagetext' => 'Standardny tekst powěźeńki',
-'content-failed-to-parse' => 'Parsowanje wopśimjeśa $2 za model $1 jo se njeraźiło: $3',
+'content-failed-to-parse' => 'Parsowanje wopśimjeśa $2 za model $1 njejo se raźiło: $3',
 'invalid-content-data' => 'Njepłaśiwe wopśimjeśowe daty',
 'content-not-allowed-here' => 'Wopśimjeśe "$1" njejo na boku [[$2]] dowólone',
-'editwarning-warning' => 'Gaž toś ten bok se spušća, mógu se změny zgubiś, kótarež sy pśewjadł. Jolic sy pśizjawjeny, móžoš toś to warnowanje we wótrězku {{int:prefs-editing}} swójich nastajenjow znjemóžniś.',
+'editwarning-warning' => 'Gaž toś ten bok se spušća, mógu se změny zgubiś, kótarež sy pśewjadł.
+Jolic sy pśizjawjeny, móžoš toś to warnowanje we wótrězku „Wobźěłaś“ swójich nastajenjow znjemóžniś.',
+'editpage-notsupportedcontentformat-title' => 'Wopśimjeśowy format se njepódpěra.',
+'editpage-notsupportedcontentformat-text' => 'Wopśimjeśowy format $1 njepódpěra se pśez wopśimjeśowy model $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -933,12 +990,16 @@ Njesmějo daś wěcej nježli $2 {{PLURAL:$2|wołanja|wołanjowu|wołanjow|woła
 'undo-failure' => 'Změna njejo se mógała wótpóraś, dokulaž jo něchten pótrjefjony wótrězk mjaztym změnił.',
 'undo-norev' => 'Změna njeda se wótwrośiś, dokulaž njeeksistěčujo abo jo se wulašowała.',
 'undo-summary' => 'Wersija $1 wót [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) jo se anulěrowała',
+'undo-summary-username-hidden' => 'Změna $1 schowanego wužywarja jo se anulěrowała',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Njejo móžno wužywarske konto wutwóriś',
 'cantcreateaccount-text' => "Wutwórjenje wužywarskego konta z toś teje IP adresy ('''$1''') jo blokěrowane pśez [[User:$3|$3]].
 
 Pśicyna, kótaruž $3 jo zapódał, jo ''$2''.",
+'cantcreateaccount-range-text' => "Napóranje kontow z IP-adresow we wobcerku '''$1''', kótaryž wopśimujo twóju IP-adresu ('''$4'''), jo se wót [[User:$3|$3]] zablokěrowało.
+
+Pśicyna pódana wót $3 jo ''$2''",
 
 # History pages
 'viewpagelogs' => 'Protokole boka pokazaś',
@@ -1009,10 +1070,6 @@ Móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Sp
 'revisiondelete' => 'Wersije wulašowaś/wótnowiś',
 'revdelete-nooldid-title' => 'Njepłaśiwa celowa wersija',
 'revdelete-nooldid-text' => 'Njejsy pak žednu celowu wersiju pódał, aby se toś ta funkcija wuwjadła, pódana funkcija njeeksistěrujo pak wopytujoš aktualnu wersiju chowaś.',
-'revdelete-nologtype-title' => 'Žeden protokolowy typ pódany',
-'revdelete-nologtype-text' => 'Njejsy pódał protokolowy typ, aby wuwjadł toś tu akciju.',
-'revdelete-nologid-title' => 'Njepłaśiwy protokolowy zapisk',
-'revdelete-nologid-text' => 'Pak njejsy pódał celowe protokolowe tšojenje, aby wuwjadł toś tu funkciju pak pódany zapisk njeeksistěrujo.',
 'revdelete-no-file' => 'Pódana dataja njeeksistěrujo.',
 'revdelete-show-file-confirm' => 'Coš se napšawdu wulašowanu wersiju dataje "<nowiki>$1</nowiki>" wót $2 $3 woglědaś?',
 'revdelete-show-file-submit' => 'Jo',
@@ -1021,9 +1078,10 @@ Móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Sp
 'revdelete-text' => "'''Wulašowane wersije a tšojenja budu se dalej w stawiznach boka a w protokolach pokazaś, ale źěle jich wopśimjeśa njebudu pśistupne za zjawnosć.'''
 Dalšne administratory na {{GRAMMAR:lokatiw|{{SITENAME}}}} mógu ale pśecej hyšći pśistup na schowane wopśimjeśe měś a mógu jo pśez samki interfejs wótnowiś,  snaźkuli su pśidatne wobgranicowanja.",
 'revdelete-confirm' => 'Pšosym wobkšuś, až coš to cyniś, až rozmějoš konsekwence a až cyniš to pó [[{{MediaWiki:Policy-url}}|pšawidłach]].',
-'revdelete-suppress-text' => "Pódtłocenje by se dejał '''jano''' za slědujuce pady wužywaś:
-* Njegóźece se wósobinske informacije
-*: ''bydleńske adrese a telefonowe numery, numery socialnego zawěsćenja atd.''",
+'revdelete-suppress-text' => "Pódtłocenje by dejało se '''jano''' za slědujuce pady wužywaś:
+* Potencielnje ranjece informacije
+* Njepśigódne wósobinske informacije
+*: ''Bydleńske adrese a telefonowe numery, numery socialnego zawěsćenja atd.''",
 'revdelete-legend' => 'wobgranicowanja widobnosći póstajiś',
 'revdelete-hide-text' => 'Tekst wersije',
 'revdelete-hide-image' => 'Wopśimjeśe dataje schowaś',
@@ -1045,8 +1103,6 @@ $1",
 'logdelete-failure' => "'''Protokolowa wiźobnosć njejo se dała nastajiś:'''
 $1",
 'revdel-restore' => 'Widobnosć změniś',
-'revdel-restore-deleted' => 'wulašowane wersije',
-'revdel-restore-visible' => 'widobne wersije',
 'pagehist' => 'stawizny boka',
 'deletedhist' => 'wulašowane stawizny',
 'revdelete-hide-current' => 'Zmólka pśi chowanju zapiska wót $2, $1: to jo aktualna wersija.
@@ -1112,6 +1168,7 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
 'compareselectedversions' => 'Wuzwólonej wersiji pśirownaś',
 'showhideselectedversions' => 'Wubrane wersije pokazaś/schowaś',
 'editundo' => 'wótwrośiś',
+'diff-empty' => '(Žeden rozdźěl)',
 'diff-multi' => '({{PLURAL:$1|Jadna mjazywersija|$1 mjazywersiji|$1 mjazywersije|$1 mjazywersijow}} wót {{PLURAL:$2|jadnogo wužywarja|$2 wužywarjowu|$2 wužywarjow|$2 wužywarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Jadna mjazywersija|$1 mjazywersiji|$1 mjazywersije|$1 mjazywersijow}} wót wěcej ako {{PLURAL:$2|jadnogo wužywarja|$2 wužywarjowu|$2 wužywarjow|$2 wužywarjow}} {{PLURAL:$1|njepokazana|njepokazanej|njepokazane|njepokazane}})',
 'difference-missing-revision' => '{{PLURAL:$2|Jadna wersija|$2 wersiji|$2 wersije|$2 wersijow}} toś togo rozdźěla ($1) {{PLURAL:$2|njejo se namakała|njejstej se namakałej|njejsu namakali|njejo se namakało}}.
@@ -1122,12 +1179,8 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Wuslědki pytanja',
 'searchresults-title' => 'Pytańske wuslědki za "$1"',
-'searchresulttext' => 'Za wěcej informacijow wó pśepytowanju {{GRAMMAR:genitiw|{{SITENAME}}}} glědaj [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Sy pytał za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|wše boki, kótarež zachopiju se z "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|wše wótkaze, kótarež wótkazuju do "$1"]])',
-'searchsubtitleinvalid' => 'Ty sy pytał „$1“.',
 'toomanymatches' => 'Pśewjele pytańskich wuslědkow, pšosym wopytaj druge wótpšašanje.',
 'titlematches' => 'boki z wótpowědujucym napismom',
-'notitlematches' => 'Boki z wótpowědujucym napismom njeeksistěruju.',
 'textmatches' => 'Boki z wótpowědujucym tekstom',
 'notextmatches' => 'Boki z wótpowědujucym tekstom njeeksistěruju.',
 'prevn' => '{{PLURAL:$1|zachadny $1|zachadnej $1|zachadne $1|zachadnych $1}}',
@@ -1136,10 +1189,8 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => '{{PLURAL:$1|Pśiducy wuslědk|Pśiducej $1 wuslědka|Pśiduce $1 wuslědki|Pśiducych $1 wuslědkow}}',
 'shown-title' => '$1 {{PLURAL:$1|wuslědk|wuslědka|wuslědki|wuslědkow}} na bok pokazaś',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) pokazaś',
-'searchmenu-legend' => 'Pytańske opcije',
 'searchmenu-exists' => "'''Jo bok z mjenim \"[[\$1]]\" na toś tom wikiju'''",
 'searchmenu-new' => "'''Napóraj bok \"[[:\$1|\$1]]\" na toś tom wikiju!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Boki z toś tym prefiksom pśepytaś]]',
 'searchprofile-articles' => 'Wopśimjeśowe boki',
 'searchprofile-project' => 'Pomoc a projektowe boki',
 'searchprofile-images' => 'Multimedia',
@@ -1160,31 +1211,28 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-default' => '$1 wuslědki:',
 'search-interwiki-more' => '(wěcej)',
 'search-relatedarticle' => 'swójźbne',
-'mwsuggest-disable' => 'Pytańske naraźenja znjemóžniś',
 'searcheverything-enable' => 'We wšych mjenjowych rumach pytaś',
 'searchrelated' => 'swójźbne',
 'searchall' => 'wše',
 'showingresults' => "How {{PLURAL:|jo '''1''' wuslědk|stej '''$1''' wuslědka|su '''$1''' wuslědki}} wót cysła '''$2'''.",
 'showingresultsnum' => "How {{PLURAL:$3|jo '''1''' wuslědk|stej '''$3''' wuslědka|su '''$3''' wuslědki}} wót cysła '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
-'nonefound' => "'''Pokazka''': Jano někótare mjenjowe rumy se standarnje pytaju. Wopytaj za swóje wótpšašanje prefiks ''all:'' wužywać, aby cełe wopśimjeśe pytał (inkluziwnje diskusijnych bokow, pśedłogi atd.) abo wužyj póžedany mjenjowy rum ako prefiks.",
 'search-nonefound' => 'Njejsu se wuslědki namakali, kótarež wótpowěduju napšašowanjeju.',
-'powersearch' => 'Rozšyrjone pytanje',
 'powersearch-legend' => 'Rozšyrjone pytanje',
 'powersearch-ns' => 'W mjenjowych rumach pytaś:',
 'powersearch-redir' => 'Dalejpósrědnjenja nalistowaś',
-'powersearch-field' => 'Pytaś za:',
 'powersearch-togglelabel' => 'Kontrolěrowaś:',
 'powersearch-toggleall' => 'Wše',
 'powersearch-togglenone' => 'Žeden',
 'search-external' => 'Eksterne pytanje',
 'searchdisabled' => 'Pytanje we {{SITENAME}} jo se deaktiwěrowało. Tak dłujko móžoš w googlu pytaś. Pšosym wobmysli, až móžo pytanski indeks za {{SITENAME}} njeaktualny byś.',
+'search-error' => 'Pśi pytanju jo se zmólka nastała: $1',
 
 # Preferences page
 'preferences' => 'Nastajenja',
 'mypreferences' => 'Nastajenja',
 'prefs-edits' => 'Licba wobźěłanjow:',
-'changepassword' => 'Šćitne gronidło změniś',
+'prefsnologintext2' => 'Musyš $1, aby wužywarske nastajenja póstajił.',
 'prefs-skin' => 'Šat',
 'skin-preview' => 'Pśeglěd',
 'datedefault' => 'Standard',
@@ -1207,25 +1255,25 @@ Drobnostki móžoš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-email' => 'E-mailowe opcije',
 'prefs-rendering' => 'Naglěd',
 'saveprefs' => 'Składowaś',
-'resetprefs' => 'Njeskłaźone změny zachyśiś',
 'restoreprefs' => 'Wšykne standardne nastajenja wótnowiś (we wšych wótrězkach)',
 'prefs-editing' => 'Wobźěłaś',
 'rows' => 'Rědki:',
 'columns' => 'Słupy:',
 'searchresultshead' => 'Pytaś',
-'resultsperpage' => 'Wuslědki na bok:',
 'stub-threshold' => 'Formatěrowanje  <a href="#" class="stub">wótkaza na zarodk</a> (w bytach):',
 'stub-threshold-disabled' => 'Znjemóžnjony',
 'recentchangesdays' => 'Licba dnjow, kenž se pokazuju w "slědnych změnach":',
 'recentchangesdays-max' => '(maksimalnje $1 {{PLURAL:$1|źeń|dnja|dny|dnjow}})',
 'recentchangescount' => 'Licba změnow, kótaraž ma se pó standarźe pokazaś:',
 'prefs-help-recentchangescount' => 'To wopśimujo aktualne změny, stawizny bokow a protokole.',
+'prefs-help-watchlist-token2' => 'To jo pótajmny kluc k webkanaloju twójich wobglědowańkow.
+Něchten, kótaryž jen znajo, móžo twóje wobglědowańki cytaś, njeźěl jen togodla.
+[[Special:ResetTokens|Klikni how, jolic musyš jen slědk stajiś]].',
 'savedprefs' => 'Twóje nastajenja su se składowali.',
 'timezonelegend' => 'Casowa cona:',
 'localtime' => 'Městny cas:',
 'timezoneuseserverdefault' => 'Wikistandard wužywaś ($1)',
 'timezoneuseoffset' => 'Drugi (pódaj wótchylenje)',
-'timezoneoffset' => 'Rozdźěl¹:',
 'servertime' => 'Cas serwera:',
 'guesstimezone' => 'Z browsera pśewześ',
 'timezoneregion-africa' => 'Afrika',
@@ -1267,7 +1315,9 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'gender-unknown' => 'Njok nic wó tom pódaś',
 'gender-male' => 'Wón wobźěłujo wikiboki',
 'gender-female' => 'Wóna wobźěłujo wikiboki',
-'prefs-help-gender' => 'Opcionalny: wužywa se za pó roźe specifiske nagronjenje pśez softwaru. Toś ta informacija buźo zjawna.',
+'prefs-help-gender' => 'Toś to pódaśe jo opcionalne:
+Softwara wuyiwa jogo gódnotu, aby śi z pomocu wótpowědnego gramatikaliskego roda groniła a drugich na tebje pokazała.
+Toś ta informacija buźo zjawna.',
 'email' => 'E-mail',
 'prefs-help-realname' => 'Realne mě jo opcionalne. Jolic až jo zapódajośo wužywa se za pódpisanje wašych pśinoskow.',
 'prefs-help-email' => 'E-mailowa adresa jo opcionalna, ale zmóžnja śi nowe gronidło emailowaś, jolic sy zabył swójo gronidło.',
@@ -1279,6 +1329,8 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'prefs-dateformat' => 'Datumowy format',
 'prefs-timeoffset' => 'Casowy rozdźěl',
 'prefs-advancedediting' => 'Powšykne nastajenja',
+'prefs-editor' => 'Editor',
+'prefs-preview' => 'Pśeglěd',
 'prefs-advancedrc' => 'Rozšyrjone opcije',
 'prefs-advancedrendering' => 'Rozšyrjone opcije',
 'prefs-advancedsearchoptions' => 'Rozšyrjone opcije',
@@ -1286,7 +1338,10 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'prefs-displayrc' => 'Zwobraznjowańske opcije',
 'prefs-displaysearchoptions' => 'Zwobraznjowańske opcije',
 'prefs-displaywatchlist' => 'Zwobraznjowańske opcije',
+'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Rozdźěle',
+'prefs-help-prefershttps' => 'Toś to nastajenje wustatkujo se pó twójom pśiducem pśizjawjenju.',
+'prefs-tabs-navigation-hint' => 'Tip: Móžoš lěwu a pšawu šypku wužywaś, aby mjazy rejtarkami w lisćinje rejtarkow nawigěrował.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Zda se, až e-mailowa adresa jo płaśiwa',
@@ -1313,6 +1368,8 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'userrights-notallowed' => 'Njamaš trěbne pšawa, aby wužywarske pšawa pśipokazało abo zajmjeł.',
 'userrights-changeable-col' => 'Kupki, kótarež móžoš změniś',
 'userrights-unchangeable-col' => 'Kupki, kótarež njamóžoš změniś',
+'userrights-conflict' => 'Konflikt změnow wužywarskich pšawow! Pšosym pśeglědaj a wobkšuś swóje změny.',
+'userrights-removed-self' => 'Sy swóje pšawa wuspěšnje wótpórał. Togodla njamaš južo pśistup na toś ten bok měś.',
 
 # Groups
 'group' => 'Kupka:',
@@ -1377,12 +1434,20 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'right-ipblock-exempt' => 'Blokěrowanja IP, awtomatiske blokěrowanja a blokěrowanja wobcerkow se wobinuś',
 'right-proxyunbannable' => 'Awtomatiske blokěrowanje proksyjow se wobinuś',
 'right-unblockself' => 'Wótblokěrowaś se',
-'right-protect' => 'Šćitowe schójźeńki změniś a šćitane boki wobźěłaś',
-'right-editprotected' => 'Šćitane boki wobźěłaś (bśez kaskadowego šćita)',
+'right-protect' => 'Šćitowe schojźeńki změniś a z kaskadami šćitane boki wobźěłaś',
+'right-editprotected' => 'Boki wobźěłaś, kótarež su pśez "{{int:protect-level-sysop}}" šćitane',
+'right-editsemiprotected' => 'Boki wobźěłaś, kótarež su pśez "{{int:protect-level-autoconfirmed}}" šćitane',
 'right-editinterface' => 'Wužywański pówjerch wobźěłaś',
 'right-editusercssjs' => 'Dataje CSS a JS drugich wužywarjow wobźěłaś',
 'right-editusercss' => 'Dataje CSS drugich wužywarjow wobźěłaś',
 'right-edituserjs' => 'Dataje JS drugich wužywarjow wobźěłaś',
+'right-editmyusercss' => 'Twóje swójske wužywarske CSS-dataje wobźěłaś',
+'right-editmyuserjs' => 'Twóje swójske wužywarske JavaScript-dataje wobźěłaś',
+'right-viewmywatchlist' => 'Se swójske wobglědowańki woglědaś',
+'right-editmywatchlist' => 'Swóje wobglědowańki wobźěłaś. Wobglěduj, až někotare akcije hyšći pśidawaju boki bźez toś togo pšawa.',
+'right-viewmyprivateinfo' => 'Swójske priwatne daty se woglědaś (na pś. e-mailowu adresu, napšawdne mě)',
+'right-editmyprivateinfo' => 'Swójske priwatne daty wobźěłaś (na pś. e-mailowu adresu, napšawdne mě)',
+'right-editmyoptions' => 'Swójske nastajenja wobźěłaś',
 'right-rollback' => 'Spěšne anulěrowanje změnow slědnego wužywarja, kótaryž jo dany bok wobźěłał',
 'right-markbotedits' => 'Spěšnje anulěrowane změny ako botowe změny markěrowaś',
 'right-noratelimit' => 'Pśez žedne limity wobgranicowany',
@@ -1431,7 +1496,7 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'action-undelete' => 'Toś ten bok wótnowiś',
 'action-suppressrevision' => 'schowanu wersiju pśeglědaś a wótnowiś',
 'action-suppressionlog' => 'toś ten priwatny protokol zwobrazniś',
-'action-block' => 'Toś tomu wužiwarjeju wobźěłowanje zawoboraś',
+'action-block' => 'Toś tomu wužywarjeju wobźěłowanje zawoboraś',
 'action-protect' => 'Šćitowe stopnje za toś ten bok změniś',
 'action-rollback' => 'změny slědnego wužywarja, kótaryž jo wobźěłał wěsty bok, malsnje slědk stajiś',
 'action-import' => 'boki z drugego wikija importěrowaś',
@@ -1444,24 +1509,33 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
 'action-userrights-interwiki' => 'wužywarske pšawa wužywarjow w drugich wikijach wobźěłaś',
 'action-siteadmin' => 'datowu banku zastajiś abo wótworiś',
 'action-sendemail' => 'E-maile pósłaś',
+'action-editmywatchlist' => 'swóje wobglědowańki wobźěłaś',
+'action-viewmywatchlist' => 'swóje wobglědowańki se woglědaś',
+'action-viewmyprivateinfo' => 'twóje priwatne informacije se woglědaś',
+'action-editmyprivateinfo' => 'twóje priwatne informacije wobźěłaś',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|změna|změnje|změny}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|wót slědnego woglěda}}',
+'enhancedrc-history' => 'historija',
 'recentchanges' => 'Aktualne změny',
 'recentchanges-legend' => 'Opcije aktualnych změnow',
 'recentchanges-summary' => "How móžoš slědne změny we '''{{GRAMMAR:lokatiw|{{SITENAME}}}}''' slědowaś.",
+'recentchanges-noresult' => 'Žedne změny za dany cas njewótpowědujo toś tym kriterijam.',
 'recentchanges-feed-description' => 'Slěduj z toś tym zapódaśim nejaktualnjejše změny we {{GRAMMAR:lokatiw|{{SITENAME}}}}.',
 'recentchanges-label-newpage' => 'Toś ta změna jo nowy bok napórała.',
 'recentchanges-label-minor' => 'To jo snadna změna',
 'recentchanges-label-bot' => 'Toś ta změna jo se pśez bośik wuwjadła.',
 'recentchanges-label-unpatrolled' => 'Toś ta změna hyšći njejo se pśekontrolěrowała',
-'recentchanges-legend-newpage' => '$1 - nowy bok',
-'rcnote' => "Dołojce {{PLURAL:$1|jo '''1''' změna|stej slědnej '''$1''' změnje|su slědne '''$1''' změny}} w {{PLURAL:$2|slědnem dnju|slědnyma '''$2''' dnjoma|slědnych '''$2''' dnjach}}, staw wót $4, $5.",
+'recentchanges-label-plusminus' => 'Změnjona wjelikosc boka (licba bajtow)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
+'recentchanges-legend-newpage' => '(glej teke [[Special:NewPages|lisćinu nowych bokow]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Dołojce pokazuju se změny wót '''$2''' (maks. '''$1''' zapisow).",
 'rclistfrom' => 'Nowe změny wót $1 pokazaś.',
 'rcshowhideminor' => 'Snadne změny $1',
 'rcshowhidebots' => 'awtomatiske programy (boty) $1',
-'rcshowhideliu' => 'pśizjawjone wužywarje $1',
+'rcshowhideliu' => 'Zregistrěrowane wužywarje $1',
 'rcshowhideanons' => 'anonymne wužywarje $1',
 'rcshowhidepatr' => 'kontrolěrowane změny $1',
 'rcshowhidemine' => 'móje pśinoski $1',
@@ -1576,6 +1650,7 @@ Jolic maš toś ten wobraz w połnem rozeznaśu, nagraj jen, howac změń pšosy
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Toś ta dataja jo duplikat {{PLURAL:$1|slědujuceje dataje|slědujuceju datajow|slědujucych datajow|slědujucych datajow}}:',
 'file-deleted-duplicate' => 'Dataja, kótaraž jo identiska z toś teju dataju ([[:$1]]) jo se pjerwjej wulašowała. Ty měł stawizny wulašowanja toś teje dataje pśeglědaś, pjerwjej až pokšacujoš z jeje zasejnagrawanjom.',
+'file-deleted-duplicate-notitle' => 'Z toś teju dataju identiska dataja jo se do togo wulašowała, a titel jo so pódtłocył. Ty by měł se někogo pšašaś, kótaryž ma móžnosć, se pódtłocone daty woglědaś, aby situaciju pśeglědał, nježli až nagrajoš ju znowego.',
 'uploadwarning' => 'Warnowanje',
 'uploadwarning-text' => 'Pšosym změń slědujuce datajowe wopisanje a wopytaj hyšći raz.',
 'savefile' => 'Dataju składowaś',
@@ -1690,8 +1765,8 @@ Togodla njedajo se jeje wěstoty pśekontrolěrowaś.',
 'uploadstash-summary' => 'Toś ten bok zmóžnja dostup do datajow, kótarež su nagrate (abo so nagrawaju), ale hyšći njejsu do wikija wózjawjone. Toś te dataje njejsu widobne za nikogo, mimo až za wužywarja, kótaryž jo je nagrał.',
 'uploadstash-clear' => 'Schowane nagrate dataje wulašowaś',
 'uploadstash-nofiles' => 'Njamaš schowane nagrate dataje.',
-'uploadstash-badtoken' => 'Wuwjeźenje teje akcije jo se njeraźiło, snaź dokulaž twóje wobźěłowańske daty su spadnjone. Wopytaj hyšći raz.',
-'uploadstash-errclear' => 'Wótpóranje datajow jo se njeraźiło.',
+'uploadstash-badtoken' => 'Wuwjeźenje teje akcije njejo se raźiło, snaź dokulaž twóje wobźěłowańske daty su spadnjone. Wopytaj hyšći raz.',
+'uploadstash-errclear' => 'Wótpóranje datajow njejo se raźiło.',
 'uploadstash-refresh' => 'Lisćinu datajow aktualizěrowaś',
 'invalid-chunk-offset' => 'Njepłaśiwy startowy dypk',
 
@@ -1717,7 +1792,7 @@ Za optimalnu wěstotu img_auth.php jo znjemóžnjony.',
 # HTTP errors
 'http-invalid-url' => 'Njepłaśiwy URL: $1',
 'http-invalid-scheme' => 'URL ze šemu "$1" se njepódpěraju.',
-'http-request-error' => 'HTTP-napšašowanje jo se njeraźiło njeznateje zmólki dla.',
+'http-request-error' => 'HTTP-napšašowanje njejo se raźiło njeznateje zmólki dla.',
 'http-read-error' => 'Cytańska zmólka HTTP.',
 'http-timed-out' => 'HTTP-napšašowanje jo cas pśekšocyło.',
 'http-curl-error' => 'Zmólka pśi wótwółowanju URL: $1',
@@ -1748,6 +1823,10 @@ Za optimalnu wěstotu img_auth.php jo znjemóžnjony.',
 'listfiles_size' => 'Wjelikosć (byte)',
 'listfiles_description' => 'Zespominanje',
 'listfiles_count' => 'Wersije',
+'listfiles-show-all' => 'Stare wersije wobrazow zapśimjeś',
+'listfiles-latestversion' => 'Aktualna wersija',
+'listfiles-latestversion-yes' => 'Jo',
+'listfiles-latestversion-no' => 'Ně',
 
 # File description page
 'file-anchor-link' => 'Dataja',
@@ -1840,6 +1919,13 @@ Snaź coš wopisanje na jeje [$2 boku datajowego wopisanja] wobźěłaś.',
 'randompage' => 'Pśipadny nastawk',
 'randompage-nopages' => 'W {{PLURAL:$2|slědujucem mjenjowem rumje|slědujucyma mjenjowyma rumoma|slědujucych mjenjowych rumach|slědujucych mjenjowych rumach}} žedne boki njejsu: $1',
 
+# Random page in category
+'randomincategory' => 'Pśipadny bok w kategoriji',
+'randomincategory-invalidcategory' => '"$1" njejo płaśiwe kategorijowe mě.',
+'randomincategory-nopages' => 'W kategoriji [[:Category:$1|$1]] žedne boki njejsu.',
+'randomincategory-selectcategory' => 'Pśipadny bok z kategorija: $1 $2',
+'randomincategory-selectcategory-submit' => 'Wótpósłaś',
+
 # Random redirect
 'randomredirect' => 'Pśipadne dalejpósrědnjenje',
 'randomredirect-nopages' => 'W mjenjowem rumje "$1" njejsu dalejpósrědnjenja.',
@@ -1870,6 +1956,8 @@ Snaź coš wopisanje na jeje [$2 boku datajowego wopisanja] wobźěłaś.',
 'pageswithprop-text' => 'Toś ten bok nalicyjo boki, kótarež wužywaju wěstu kakosć boka.',
 'pageswithprop-prop' => 'Mě kakosći:',
 'pageswithprop-submit' => 'Wótpósłaś',
+'pageswithprop-prophidden-long' => 'Gódnota kakosći dłujkego teksta schowana ($1)',
+'pageswithprop-prophidden-binary' => 'binarna kakostna gódnota schowana ($1)',
 
 'doubleredirects' => 'Dwójne dalejpósrědnjenja',
 'doubleredirectstext' => 'Toś ten bok nalicujo boki, kótarež dalej pósrědnjaju na druge dalejpósrědnjenja.
@@ -1896,6 +1984,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'ninterwikis' => '$1 {{PLURAL:$1|mjazyrěcny wótkaz|mjazyrěcnej wótkaza|mjazyrěcne wótkaze|mjazyrěcnych wótkazow}}',
 'nlinks' => '$1 {{PLURAL:$1|wótkaz|wótkaza|wótkaze}}',
 'nmembers' => '$1 {{PLURAL:$1|zapis|zapisa|zapise}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|cłon|cłonka|cłonki|cłonkow}}',
 'nrevisions' => '$1 {{PLURAL:$1|wobźěłanje|wobźěłani|wobźěłanja}}',
 'nviews' => '$1 {{PLURAL:$1|wótpšašanje|wótpšašani|wótpšašanja}}',
 'nimagelinks' => 'Wužywa se na $1 {{PLURAL:$1|boku|bokoma|bokach|bokach}}',
@@ -1906,7 +1995,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 {{GRAMMAR:lokatiw|{{SITENAME}}}}.',
 'uncategorizedpages' => 'Boki bźez kategorijow',
 'uncategorizedcategories' => 'Njekategorizěrowane kategorije',
-'uncategorizedimages' => 'Njekategorizěrowane dataje.',
+'uncategorizedimages' => 'Njekategorizěrowane dataje',
 'uncategorizedtemplates' => 'Njekategorizěrowane pśedłogi',
 'unusedcategories' => 'Njewužywane kategorije',
 'unusedimages' => 'Njewužywane dataje',
@@ -1927,6 +2016,7 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'mostrevisions' => 'Boki z nejwěcej wersijami',
 'prefixindex' => 'Wšykne boki z prefiksom',
 'prefixindex-namespace' => 'Wšykne boki z prefiksom (mjenjowy rum $1)',
+'prefixindex-strip' => 'Prefiks w lisćinje wótrězaś',
 'shortpages' => 'Krotke nastawki',
 'longpages' => 'Dłujke nastawki',
 'deadendpages' => 'Nastawki bźez wótkazow',
@@ -1934,14 +2024,14 @@ Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a tek
 'protectedpages' => 'Šćitane boki',
 'protectedpages-indef' => 'Jano boki pokazaś, kótarež su na njewěsty cas šćitane',
 'protectedpages-cascade' => 'Jano boki z kaskadowym šćitom',
-'protectedpagestext' => 'Slědujuce boki njamgu se mimo wósebnych pšawow wobźěłaś resp. pśesuwaś',
+'protectedpages-noredirect' => 'Dalejpósrědnjenja schowaś',
 'protectedpagesempty' => 'Z toś tymi parametrami njejsu tuchylu žedne boki šćitane.',
 'protectedtitles' => 'Šćitane titele',
-'protectedtitlestext' => 'Slědujuce titele su pśeśiwo twórjenjoju šćitane.',
 'protectedtitlesempty' => 'Tuchylu njejsu žedne boki z pódanych parametrami šćitane.',
 'listusers' => 'Lisćina wužywarjow',
 'listusers-editsonly' => 'Jano wužywarjow ze změnami pokazaś',
 'listusers-creationsort' => 'Pó datumje napóranja sortěrowaś',
+'listusers-desc' => 'We wóstupujucem porěźe sortěrowaś',
 'usereditcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
 'usercreated' => 'jo se $1 $2 góź. {{GENDER:$3|napórał|napórała}}',
 'newpages' => 'Nowe boki',
@@ -1987,9 +2077,6 @@ Pšosym glědaj na to, až druge websedła móžu k drugej dataji z direktnym UR
 'allpagesto' => 'Boki zwobrazniś, kótarež kóńce se na:',
 'allarticles' => 'Wšykne nastawki',
 'allinnamespace' => 'Wšykne boki (mjenjowy rum: $1)',
-'allnotinnamespace' => 'Wšykne boki (nic w mjenjowem rumje $1)',
-'allpagesprev' => 'Pśedchadne',
-'allpagesnext' => 'Slědujuce',
 'allpagessubmit' => 'Pokazaś',
 'allpagesprefix' => 'Boki pokazaś (z prefiksom):',
 'allpagesbadtitle' => 'Zapódane mě boka njejo płaśece: Jo móžno, až ma pśedstajonu rěcnu resp. interwikijowu krotceńku abo wopśimjejo jadno abo wěcej znamuškow, kótarež njamgu se za mjenja bokow wužywaś.',
@@ -2117,7 +2204,7 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
 'notanarticle' => 'To njejo žeden nastawk',
 'notvisiblerev' => 'Wersija bu wulašowana',
 'watchlist-details' => 'Wobglědujoš {{PLURAL:$1|$1 bok|$1 boka|$1 boki|$1 bokow}}, bźez diskusijnych bokow.',
-'wlheader-enotif' => 'E-mailowe powěsće su aktiwizěrowane.',
+'wlheader-enotif' => 'E-mailowa zdźěleńska słužba jo zmóžnjona.',
 'wlheader-showupdated' => "Boki, kótarež su wót twójogo slědnego woglěda se změnili, pokazuju se '''tucnje'''.",
 'watchmethod-recent' => 'Kontrolěrowanje aktualnych změnow we wobglědowańce',
 'watchmethod-list' => 'Pśepytanje wobglědowanych bokow za aktualnymi změnami',
@@ -2150,7 +2237,9 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
 'enotif_anon_editor' => 'anonymny wužywaŕ $1',
 'enotif_body' => 'Luby $WATCHINGUSERNAME,
 
-$PAGEINTRO $NEWPAGE
+$PAGEEDITOR jo bok $PAGETITLE na {{GRAMMAR:lokatiw|{{SITENAME}}}} $PAGEEDITDATE $CHANGEDORCREATED, glědaj $PAGETITLE_URL za aktualnu wersiju.
+
+$NEWPAGE
 
 Zespominanje wobźěłarja: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2158,9 +2247,10 @@ 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 aktiwity, snaźkuli woglědujoš se toś ten bok, mjaztym sy pśizjawjony.
+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}}}}
@@ -2207,6 +2297,7 @@ Pšašanja a dalšna pomoc:
 'delete-toobig' => 'Toś ten bok ma z wěcej nježli $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujku historiju. Lašowanje takich bokow bu wobgranicowane, aby wobškoźenju {{GRAMMAR:genitiw|{{SITENAME}}}} z pśigódy zajźowało.',
 'delete-warning-toobig' => 'Toś ten bok ma z wěcej ako $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujke stawizny. Jich wulašowanje móžo źěło datoweje banki na {{SITENAME}} kazyś;
 póstupujśo z glědanim.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druge boki wótkazuju k bokoju, kótaryž coš wulašowaś.",
 
 # Rollback
 'rollback' => 'Wobźěłanja slědk wześ',
@@ -2221,7 +2312,7 @@ póstupujśo z glědanim.',
 Slědnu změnu k bokoju jo pśewjadł [[User:$3|$3]] ([[User talk:$3|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Zapominanje k slědnej změnje jo było: \"''\$1''\".",
 'revertpage' => 'Změny wužywarja [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]) su se wótwrośili a slědna wersija wužywarja [[User:$1|$1]] jo se wótnowiła.',
-'revertpage-nouser' => 'Jo změny wót (wužywarske mě wótpórane) na slědnu wersiju wót [[User:$1|$1]] slědk stajił',
+'revertpage-nouser' => 'Změny su se wót schowanego wužywarja anulěrowali a pjerwjejšna wersija wužywarja {{GENDER:$1|[[User:$1|$1]]}} jo se wótnowiła',
 'rollback-success' => 'Změny wót $1 su se slědk wzeli a slědna wersija wót $2 jo zasej se nawrośiła.',
 
 # Edit tokens
@@ -2316,13 +2407,12 @@ W takich padach dejš nejnowše wulašowane wersije markěroanje abo schowanje w
 'undeletebtn' => 'Wótnowiś',
 'undeletelink' => 'woglědaś se/wótnowiś',
 'undeleteviewlink' => 'woglědaś se',
-'undeletereset' => 'Slědk wześ',
 'undeleteinvert' => 'Wuběrk pśewobrośiś',
 'undeletecomment' => 'Pśicyna:',
 'undeletedrevisions' => '{{PLURAL:$1|1 wersija jo se nawrośiła|$1 wersiji stej se nawrośiłej|$1 wersije su se nawrośili}}.',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 wersija|$1 wersiji|$1 wersije}} a {{PLURAL:$2|1 dataja|$2 dataji|$2 dataje}} {{PLURAL:$2|jo se nawrośiła|stej se nawrośiłej|su se nawrośili}}.',
 'undeletedfiles' => '{{PLURAL:$1|1 dataja jo se nawrośiła|$1 dataji stej se nawrośiłej|$1 dataje su se nawrośili}}.',
-'cannotundelete' => 'Wótnowjenje jo se njeraźiło:
+'cannotundelete' => 'Wótnowjenje njejo se raźiło:
 $1',
 'undeletedpage' => "Bok '''$1''' jo se nawrośił.
 
@@ -2404,13 +2494,11 @@ Nejnowšy zapisk protokola blokěrowanjow pódawa se dołojce ako referenca:',
 'block' => 'Wužywarja blokěrowaś',
 'unblock' => 'Blokěrowanje wužywarja wótpóraś',
 'blockip' => 'Wužywarja blokěrowaś',
-'blockip-title' => 'Wužywarja blokěrowaś',
 'blockip-legend' => 'Wužywarja blokěrowaś',
 'blockiptext' => 'Wužywaj slědujucy formular, jolic až coš wěstej IP-adresy abo konkretnemu wužywarjeju pśistup znjemóžniś. Take dejało se pó [[{{MediaWiki:Policy-url}}|směrnicach]] jano staś, aby se wandalizmoju zadorało. Pšosym zapódaj pśicynu za twójo blokěrowanje (na pś. mógu se citěrowaś konkretne boki, źo jo se wandalěrowało).',
 'ipadressorusername' => 'IP-adresa abo wužywarske mě',
 'ipbexpiry' => 'Cas blokěrowanja:',
 'ipbreason' => 'Pśicyna:',
-'ipbreasonotherlist' => 'Druga pśicyna',
 'ipbreason-dropdown' => '*powšykne pśicyny blokěrowanja
 ** pódawanje njepšawych informacijow
 ** wulašowanje wopśimjeśa bokow
@@ -2426,8 +2514,6 @@ Nejnowšy zapisk protokola blokěrowanjow pódawa se dołojce ako referenca:',
 'ipbsubmit' => 'Togo wužywarja blokěrowaś.',
 'ipbother' => 'Drugi cas:',
 'ipboptions' => '2 góźinje:2 hours,1 źeń:1 day,3 dny:3 days,1 tyźeń:1 week,2 tyźenja:2 weeks,1 mjasec:1 month,3 mjasece:3 months,6 mjasecy:6 months,1 lěto:1 year,na nimjer:infinite',
-'ipbotheroption' => 'drugi',
-'ipbotherreason' => 'Hynakša/dalšna pśicyna:',
 'ipbhidename' => 'Wužywarske mě w změnach a lisćinach schowaś',
 'ipbwatchuser' => 'Wužywarski a diskusijny bok toś togo wužywarja wobglědowaś',
 'ipb-disableusertalk' => 'Toś tomu wužywarjeju zawobaraś swój bok wobźěłaś, gaž wón jo zablokěrowany.',
@@ -2439,6 +2525,7 @@ Nejnowšy zapisk protokola blokěrowanjow pódawa se dołojce ako referenca:',
 Glědaj do [[Special:BlockList|lisćiny blokěrowanjow]], aby blokěrowanja pśeglědał.',
 'ipb-blockingself' => 'Coš samogo blokěrowaś! Coš to napšawdu cyniś?',
 'ipb-confirmhideuser' => 'Coš rowno wužywarja z nastajenim "wužywarja schowaś" blokěrowaś. To k tomu dowjeźo, až mě wužywarja pódłocyjo se we wšych lisćinach a protokolowych zapiskach. Coš to napšawdu cyniś?',
+'ipb-confirmaction' => 'Jolic sy se wěsty, až coš to napšawdu cyniś, pśeglědaj pšosym dołojce pólo "{{int:ipb-confirm}}".',
 'ipb-edit-dropdown' => 'Pśicyny blokěrowanja wobźěłaś',
 'ipb-unblock-addr' => '$1 dopušćiś',
 'ipb-unblock' => 'Wužywarske mě abo IP-adresu dopušćiś',
@@ -2512,7 +2599,6 @@ Glědaj do [[Special:BlockList|lisćiny blokěrowanjow]], aby blokěrowanja pśe
 'sorbsreason' => 'Twója IP-adresa jo w DNSBL we {{GRAMMAR:lokatiw|{{SITENAME}}}} zapisana ako wócynjony proxy.',
 'sorbs_create_account_reason' => 'Twója IP-adresa jo w DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} ako wócynjony proxy zapisana. Njejo móžno, nowe wužywarske konta załožowaś.',
 'xffblockreason' => 'IP-adresa w header X-Forwarded-For, pak twója pak ta proksy-serwera, kótaryž wužywaš, jo se zablokěrowała. Spócetna pśicyna za blokěrowanje jo była: $1',
-'cant-block-while-blocked' => 'Njesmějoš žednych drugich wužywarjow blokěrowaś, mjaztym až ty sy blokěrowany.',
 'cant-see-hidden-user' => 'Wužywaŕ, kótaregož wopytujoš blokěrowaś, jo južo zablokěrowany a schowany. Dokulaž njamaš pšawo wužywarja schowaś, njamóžoš blokěrowanje wužywarja wiźeś abo wobźěłaś.',
 'ipbblocked' => 'Njamóžoš drugich wužywarjow blokěrowaś abo wótblokěrowaś, dokulaž ty sam jo zablokěrowany',
 'ipbnounblockself' => 'Njesmějoš se samogo wótblokěrowaś',
@@ -2568,7 +2654,6 @@ pšosym źiwaj na to, až rozumijoš konsekwency, nježli až pókšacujoš.",
 W toś tyma padoma dej wopśimjeśe boka manualnje se pśesunuś resp. gromadu wjasć, jolic až to coš.",
 'movearticle' => 'Bok pśesunuś',
 'moveuserpage-warning' => "'''Warnowanje:''' Coš rowno wužywarski bok pśesunuś. Pšosym wobmysli, až jano bok se pśesunjo a wužiwaŕ '''nje'''buźo se pśemjenjowaś.",
-'movenologin' => 'Njepśizjawjony(a)',
 'movenologintext' => 'Musyš zregistrěrowany wužywaŕ a [[Special:UserLogin|pśizjawjony]] byś, aby pśesunuł bok.',
 'movenotallowed' => 'Njamaš pšawo pśesuwaś boki.',
 'movenotallowedfile' => 'Njamaš pšawo dataje pśesunuś.',
@@ -2583,8 +2668,6 @@ W toś tyma padoma dej wopśimjeśe boka manualnje se pśesunuś resp. gromadu w
 'movepage-moved-noredirect' => 'Napóranje dalejpósrědnjenja jo se pódtłocyło.',
 'articleexists' => 'Bok z takim mjenim južo eksistěrujo abo mě, kótarež sćo wuwzólił jo njepłaśece. Pšosym wuzwól nowe mě.',
 'cantmove-titleprotected' => 'Njamóžoš bok k toś tomu městnoju pśesunuś, dokulaž nowy titel jo pśeśiwo napóranjeju šćitany.',
-'talkexists' => 'Samy bok jo se pśesunuł, ale pśisłušny diskusijny bok nic, dokulaž eksistěrujo južo taki bok z nowym mjenim. Pšosym pśirownaj wopśimjeśi manualnje.',
-'movedto' => 'pśesunjony do',
 'movetalk' => 'Diskusijny bok sobu pśesunuś.',
 'move-subpages' => 'Wše pódboki (až do $1) pśesunuś',
 'move-talk-subpages' => 'Wše pódboki diskusijnego boka  (až do $1) pśesunuś',
@@ -2669,6 +2752,8 @@ Pšosym wobglědaj [https://www.mediawiki.org/wiki/Localisation lokalizaciju Med
 'thumbnail-more' => 'Pówětšyś',
 'filemissing' => 'Dataja felujo',
 'thumbnail_error' => 'Zmólka pśi stwórjenju pśeglěda: $1',
+'thumbnail_error_remote' => 'Zmólkowa powěźeńka wót $1:
+$2',
 'djvu_page_error' => 'DjVu-bok pśesegujo wobłuk.',
 'djvu_no_xml' => 'Njejo móžno, XML za DjVu-dataju wótwołaś.',
 'thumbnail-temp-create' => 'Temporerna dataja za miniaturny wobrazk njedajo se napóraś',
@@ -2707,9 +2792,9 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
 'importhistoryconflict' => 'Konflikt wersijow (snaź jo toś ten bok južo raz se importěrował)',
 'importnosources' => 'Za transwikijowe importěrowanje njejsu žrědła definěrowane, direktne stawizny nagraśow su znjemóžnjone.',
 'importnofile' => 'Žedna dataja za importěrowanje njejo se nagrała.',
-'importuploaderrorsize' => 'Nagrawanje importoweje dataje jo se njeraźiło. Dataja jo wětša ako dowólona wjelikosć nagraśow.',
-'importuploaderrorpartial' => 'Nagrawanje importoweje dataje jo se njeraźiło. Dataja jo se jano pó źělach nagrała.',
-'importuploaderrortemp' => 'Nagrawanje importoweje dataje jo se njeraźiło. Temporarny zapis feluje.',
+'importuploaderrorsize' => 'Nagrawanje importoweje dataje njejo se raźiło. Dataja jo wětša ako dowólona wjelikosć nagraśow.',
+'importuploaderrorpartial' => 'Nagrawanje importoweje dataje njejo se raźiło. Dataja jo se jano pó źělach nagrała.',
+'importuploaderrortemp' => 'Nagrawanje importoweje dataje njejo se raźiło. Temporarny zapis felujo.',
 'import-parse-failure' => 'Zmólka pśi XML-imporśe:',
 'import-noarticle' => 'Žeden bok za import!',
 'import-nonewrevisions' => 'Wšykne wersije buchu južo pjerwjej importowane.',
@@ -2814,6 +2899,7 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
 W zespominanju dajo se pśicyna pódaś.',
 'tooltip-preferences-save' => 'Nastajenja składowaś',
 'tooltip-summary' => 'Zapódaj krotke zespominanje',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => '/** Na toś tom městnje wustatkujo se CSS na wšykne šaty. */',
@@ -2846,8 +2932,8 @@ W zespominanju dajo se pśicyna pódaś.',
 'spam_reverting' => 'Nawrośijo se slědna wersija, kótaraž njejo wopśimjeła wótkaz na $1.',
 'spam_blanking' => 'Wšykne wersije su wopśimowali wótkaze na $1, do rěcha spórane.',
 'spam_deleting' => 'Wšykne wersije z wótkazami do $1 so lašuju',
-'simpleantispam-label' => "Antispamowa kontrola.
-How '''NIC''' zapisaś!",
+'simpleantispam-label' => "Kontrola pśeśiwo spamoju.
+HOW '''NIC''' njezapisaś!",
 
 # Info page
 'pageinfo-title' => 'Informacije za bok "$1"',
@@ -2861,6 +2947,7 @@ How '''NIC''' zapisaś!",
 'pageinfo-length' => 'Dłujkosć boka (w bajtach)',
 'pageinfo-article-id' => 'ID boka',
 'pageinfo-language' => 'Rěc bokowego wopśimjeśa',
+'pageinfo-content-model' => 'Bokowy wopśimjeśowy model',
 'pageinfo-robot-policy' => 'Indicěrowanje pśez roboty',
 'pageinfo-robot-index' => 'Dowólony',
 'pageinfo-robot-noindex' => 'Zakazany',
@@ -2912,7 +2999,7 @@ How '''NIC''' zapisaś!",
 '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.',
+'markedaspatrollederrornotify' => 'Markěrowanje ako doglědowane njejo se raźiło.',
 
 # Patrol log
 'patrol-log-page' => 'Protokol kontrolow',
@@ -2975,11 +3062,25 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minutu|$1 minutoma|$1 minutami|$1 minutami}}',
 '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}}',
+'weeks' => '{{PLURAL:$1|$1 tyźeń|$1 tyźenja|$1 tyźenje|$1 tyźenjow}}',
 'months' => '{{PLURAL:$1|$1 mjasecom|$1 mjasecoma|$1 mjasecami}}',
 'years' => '{{PLURAL:$1|$1 lětom|$1 lětoma|$1 lětami}}',
 'ago' => 'pśed $1',
 'just-now' => 'rowno',
 
+# Human-readable timestamps
+'hours-ago' => 'pśed $1 {{PLURAL:$1|goźinu|goźinoma|goźinami}}',
+'minutes-ago' => 'pśed $1 {{PLURAL:$1|minutu|minutoma|minutami}}',
+'seconds-ago' => 'pśed $1 {{PLURAL:$1|sekundu|sekundoma|sekundami}}',
+'monday-at' => 'Pónjeźele $1',
+'tuesday-at' => 'Wałtora $1',
+'wednesday-at' => 'Srjoda $1',
+'thursday-at' => 'Stwórtk $1',
+'friday-at' => 'Pětk $1',
+'saturday-at' => 'Sobota $1',
+'sunday-at' => 'Njeźela $1',
+'yesterday-at' => 'Cora $1',
+
 # Bad image list
 'bad_image_list' => 'Format jo slědujucy:
 
@@ -2988,7 +3089,7 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
 
 # Metadata
 'metadata' => 'Metadaty',
-'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pozdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
+'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pózdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
 'metadata-expand' => 'rozšyrjone detaile pokazaś',
 'metadata-collapse' => 'rozšyrjone detaile schowaś',
 'metadata-fields' => 'Slědujuce póla metadatow, kótarež su w toś tej powěźeńce pódane, budu se do bokow wopisanja wobrazow zapśimowaś, gaž tabela metadatow jo schowana. Druge se pó standarźe njepokazuju.
@@ -3397,15 +3498,10 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
 'exif-urgency-high' => 'Wusoka ($1)',
 'exif-urgency-other' => 'Swójska priorita ($1)',
 
-# External editor support
-'edit-externally' => 'Dataje z eksternym programom wobźěłaś',
-'edit-externally-help' => '(Za dalšne informacije glědaj [https://www.mediawiki.org/wiki/Manual:External_editors instalaciske instrukcije]).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wšykne',
 'namespacesall' => 'wšykne',
 'monthsall' => 'wšykne',
-'limitall' => 'wšykne',
 
 # Email address confirmation
 'confirmemail' => 'E-mailowu adresu wobkšuśiś.',
@@ -3423,7 +3519,6 @@ E-mailowy program jo wrośił: $1',
 'confirmemail_success' => 'Twója e-mailowa adresa jo wobkšuśona
 Móžoš se něnto [[Special:UserLogin|pśizjawiś]] a se wikiju wijaseliś.',
 'confirmemail_loggedin' => 'Twója e-mailowa adresa jo něnto wobkšuśona.',
-'confirmemail_error' => 'Zmólka pśi wobkšuśenju e-mailoweje adresy.',
 'confirmemail_subject' => '{{SITENAME}} - Wobkšuśenje e-mailoweje adrese',
 'confirmemail_body' => 'Něchten, nejskerjej ty z adresy $1, jo na boku {{SITENAME}} wužywarske konto "$2" z toś teju e-mailoweju adresu zregistrěrował.
 
@@ -3464,7 +3559,7 @@ Toś ten wobkšuśeński kod płaśi až do $4.',
 # Scary transclusion
 'scarytranscludedisabled' => '[Pśidawanje interwiki jo deaktiwěrowane]',
 'scarytranscludefailed' => '[Zapśěgnjenje pśedłogi za $1 njejo se raźiło]',
-'scarytranscludefailed-httpstatus' => '[Wótwołanje pśedłogi za $1 jo se njeraźiło: HTTP $2]',
+'scarytranscludefailed-httpstatus' => '[Wótwołanje pśedłogi za $1 njejo se raźiło: HTTP $2]',
 'scarytranscludetoolong' => '[URL jo pśedłujki]',
 
 # Delete conflict
@@ -3487,12 +3582,20 @@ Pšosym wobkšuś, až napšawdu coš toś ten bok zasej napóraś.',
 'confirm-unwatch-button' => 'W pórěźe',
 'confirm-unwatch-top' => 'Toś ten bok z twójeje wobglědowańki wulašowaś?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← slědny bok',
 'imgmultipagenext' => 'pśiducy bok →',
 'imgmultigo' => 'W pórědku',
 'imgmultigoto' => 'Źi k bokoju $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standardna rěc)',
+'img-lang-info' => 'Toś ten wobraz w $1 kresliś. $2',
+'img-lang-go' => 'Wótpósłaś',
+
 # Table pager
 'ascending_abbrev' => 'górjej',
 'descending_abbrev' => 'dołoj',
@@ -3581,10 +3684,21 @@ Móžoš teke [[Special:EditWatchlist|standardny wobźěłowański bok wužywaś
 'version-parser-function-hooks' => 'Parserowe funkcije',
 'version-hook-name' => 'Mě kokule',
 'version-hook-subscribedby' => 'Aboněrowany wót',
-'version-version' => '(Wersija $1)',
-'version-license' => 'Licenca',
+'version-version' => '($1)',
+'version-license' => 'Licenca MediaWiki',
+'version-ext-license' => 'Licenca',
+'version-ext-colheader-name' => 'Rozšyrjenje',
+'version-ext-colheader-version' => 'Wersija',
+'version-ext-colheader-license' => 'Licenca',
+'version-ext-colheader-description' => 'Wopisanje',
+'version-ext-colheader-credits' => 'Awtory',
+'version-license-title' => 'Licenca za $1',
+'version-license-not-found' => 'Za toś to rozšyrjenje njejsu se žedne nadrobne licencne informacije namakali.',
+'version-credits-title' => 'Źěkowanja za $1',
+'version-credits-not-found' => 'Za toś to rozšyrjenje njejsu žedne źěkowańske informacije namakali.',
 'version-poweredby-credits' => "Toś ten wiki spěchujo se wót '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'druge',
+'version-poweredby-translators' => 'Pśełožowarje na translatewiki.net',
 'version-credits-summary' => 'Źěkujomy se slědujucym wósobam za jich pśinoski k [[Special:Version|MediaWiki]]',
 'version-license-info' => 'MediaWiki jo licha softwara: móžoš ju pód wuměnjenjami licence GNU General Public License, wózjawjeneje wót załožby Free Software Foundation, rozdźěliś a/abo změniś: pak pód wersiju 2 licence pak pód někakeju pózdźejšeju wersiju.
 
@@ -3598,6 +3712,20 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'version-entrypoints-header-entrypoint' => 'Zastupny dypk',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Pó datajowem mjenju, wužywarju, boku abo wersijowem ID dalej pósrědniś',
+'redirect-legend' => 'Do dataje abo boka dalej pósrědniś',
+'redirect-summary' => 'Toś ten specialny bok pósrědnja se do dataje (datajowe mě jo pódane), boka (wersijowy ID abo ID boka jo pódany) abo wužywarskego boka (numeriski wužywarski ID jo pódany) dalej. Wužyśe:
+[[{{#Special:Redirect}}/file/Pśikład.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
+'redirect-submit' => 'Pytaś',
+'redirect-lookup' => 'Pytaś:',
+'redirect-value' => 'Gódnota:',
+'redirect-user' => 'ID wužywarja',
+'redirect-page' => 'ID boka',
+'redirect-revision' => 'Bokowa wersija',
+'redirect-file' => 'Datajowe mě',
+'redirect-not-exists' => 'Gódnota njejo se namakała',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Za duplikatnymi datajami pytaś',
 'fileduplicatesearch-summary' => 'Za datajowymi duplikatami na zakłaźe gótnoty hash pytaś.',
@@ -3611,7 +3739,8 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 
 # Special:SpecialPages
 'specialpages' => 'Specialne boki',
-'specialpages-note' => '* Normalne specialne boki
+'specialpages-note-top' => 'Legenda',
+'specialpages-note' => '* Normalne specialne boki.
 * <span class="mw-specialpagerestricted">Specialne boki z wobgranicowanym pśistupom.</span>',
 'specialpages-group-maintenance' => 'Wótwardowańske lisćiny',
 'specialpages-group-other' => 'Druge specialne boki',
@@ -3644,18 +3773,21 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'tags' => 'Płaśiwe toflicki změnow',
 'tag-filter' => 'Filter [[Special:Tags|toflickow]]:',
 'tag-filter-submit' => 'Filter',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Wobznamjenje|Wobznamjeni|Wobznamjenja}}]]: $2)',
 'tags-title' => 'Toflicki',
 'tags-intro' => 'Toś ten bok nalicyjo toflicki, z kótarymiž softwara móžo změnu markěrowaś a jich wóznam.',
 'tags-tag' => 'Mě toflicki',
 'tags-display-header' => 'Naglěd na lisćinach změnow',
 'tags-description-header' => 'Dopołne wopisanje wóznama',
+'tags-active-header' => 'Aktiwny?',
 'tags-hitcount-header' => 'Změny z toflickami',
+'tags-active-yes' => 'Jo',
+'tags-active-no' => 'Ně',
 'tags-edit' => 'wobźěłaś',
 'tags-hitcount' => '$1 {{PLURAL:$1|změna|změnje|změny|změnow}}',
 
 # Special:ComparePages
 'comparepages' => 'Boki pśirownaś',
-'compare-selector' => 'Wersije boka pśirownaś',
 'compare-page1' => 'Bok 1',
 'compare-page2' => 'Bok 2',
 'compare-rev1' => 'Wersija 1',
@@ -3670,6 +3802,7 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'dberr-problems' => 'Wódaj! Toś to sedło ma techniske śěžkosći.',
 'dberr-again' => 'Pócakaj někotare minuty a aktualizěruj bok.',
 'dberr-info' => '(Njejo móžno ze serwerom datoweje banki zwězaś: $1)',
+'dberr-info-hidden' => '(Njejo móžno ze serwerom datoweje banki zwězaś)',
 'dberr-usegoogle' => 'Móžoš mjaztym pśez Google pytaś.',
 'dberr-outofdate' => 'Źiwaj na to, až jich indekse našogo wopśimjeśa by mógli zestarjone byś.',
 'dberr-cachederror' => 'Slědujuca jo pufrowana kopija pominanego boka a by mógła zestarjona byś.',
@@ -3685,6 +3818,9 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
 'htmlform-submit' => 'Wótpósłaś',
 'htmlform-reset' => 'Změny anulěrowaś',
 'htmlform-selectorother-other' => 'Druge',
+'htmlform-no' => 'Ně',
+'htmlform-yes' => 'Jo',
+'htmlform-chosen-placeholder' => 'Wubjeŕ móžnosć',
 
 # SQLite database support
 'sqlite-has-fts' => 'Wersija $1 z pódpěru za połnotekstowe pytanje',
@@ -3735,7 +3871,7 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'feedback-submit' => 'Komentar wótpósłaś',
 'feedback-adding' => 'Komentar pśidawa se bokoju...',
 'feedback-error1' => 'Zmólka: Njepóznaty wuslědk wót API',
-'feedback-error2' => 'Zmólka: Wobźěłanje jo se njeraźiło',
+'feedback-error2' => 'Zmólka: Wobźěłanje njejo se raźiło',
 'feedback-error3' => 'Zmólka: Žedne wótegrono wót API',
 'feedback-thanks' => 'Źěkujomy se! Twój komentar jo se k bokoju "[$2 $1]" pósłał.',
 'feedback-close' => 'Dokóńcony',
@@ -3756,7 +3892,7 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|Dwójna dataja|Dwójnej dataji|Dwójne dataje|Dwójne dataje}}',
 'api-error-empty-file' => 'Dataja, kótaruž sy nagrał, jo prozna była.',
 'api-error-emptypage' => 'Napóranje nowych, proznych bokow njejo dowólone.',
-'api-error-fetchfileerror' => 'Nutśikowna zmólka: Pśii wobstarowanju dataje jo se něco njeraźiło.',
+'api-error-fetchfileerror' => 'Nutśikowna zmólka: Pśi wobstarowanju dataje něco njejo se raźiło.',
 'api-error-fileexists-forbidden' => 'Dataja z mjenim "$1" južo eksistěrujo, a njedajo se pśepisaś.',
 'api-error-fileexists-shared-forbidden' => 'Dataja z mjenim "$1" južo eksistěrujo w zgromadnem datajowem repozitoriumje a njedajo se pśepisaś.',
 'api-error-file-too-large' => 'Dataja, kótaruž sy nagrał, jo pśewjelika była.',
@@ -3767,7 +3903,7 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'api-error-hookaborted' => 'Změna, kótaruž sy wopytał pśewjasć, jo se pśetergnuła pśez rozšyrjenje.',
 'api-error-http' => 'Nutśikowna zmólka: Zwisk ze serwerom njemóžno.',
 'api-error-illegal-filename' => 'Datajowe mě njejo dowólone.',
-'api-error-internal-error' => 'Nutśikowna zmólka: Pśi pśeźěłowanju twójogo nagraśa na wiki jo se něco njeraźiło.',
+'api-error-internal-error' => 'Nutśikowna zmólka: Pśi pśeźěłowanju twójogo nagraśa na wiki něco njejo se raźiło.',
 'api-error-invalid-file-key' => 'Nutśikowna zmólka: Dataja njejo se w temporernem składowaku namakała.',
 'api-error-missingparam' => 'Nutśikowna zmólka: Felujuce parametry pśi napšašowanju.',
 'api-error-missingresult' => 'Nutśikowna zmólka: Njedajo se zwěsćiś, lěc kopěrowanje jo se raźiło.',
@@ -3779,10 +3915,11 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'api-error-overwrite' => 'Pśepisowanje eksistujuceje dataje njejo dowólone.',
 'api-error-stashfailed' => 'Nutśikowna zmólka: Serwer njejo mógał temporernu dataju składowaś.',
 'api-error-publishfailed' => 'Nutśkowna zmólka: Serwer njejo mógł nachylnu dataju wozjawiś.',
+'api-error-stasherror' => 'Pśi nagrawanju dataje do chowanki jo zmólka nastała.',
 'api-error-timeout' => 'Serwer njejo we wócakanem casu wótgronił.',
 'api-error-unclassified' => 'Njeznata zmólka jo nastała.',
 'api-error-unknown-code' => 'Njeznata zmólka: "$1"',
-'api-error-unknown-error' => 'Nutśikowna zmólka: Pśi nagrawanju twójeje dataje jo se něco njeraźiło.',
+'api-error-unknown-error' => 'Nutśikowna zmólka: Pśi nagrawanju twójeje dataje něco njejo se raźiło.',
 'api-error-unknown-warning' => 'Njeznate warnowanje: $1',
 'api-error-unknownerror' => 'Njeznata zmólka: "$1".',
 'api-error-uploaddisabled' => 'Nagraśa su na toś tom wikiju znjemóžnjone.',
@@ -3793,8 +3930,8 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'duration-minutes' => '$1 {{PLURAL:$1|minuta|minuśe|minuty|minutow}}',
 'duration-hours' => '$1 {{PLURAL:$1|góźina|góźinje|góźiny|góźinow}}',
 'duration-days' => '$1 {{PLURAL:$1|źeń|dnja|dny|dnjow}}',
-'duration-weeks' => '$1 {{PLURAL: $1|tyźeń|tyźenja|tyźenje|tyźenjow}}',
-'duration-years' => '$1 {{PLURAL: $1|lěto|lěśe|lěta|lět}}',
+'duration-weeks' => '$1 {{PLURAL:$1|tyźeń|tyźenja|tyźenje|tyźenjow}}',
+'duration-years' => '$1 {{PLURAL:$1|lěto|lěśe|lěta|lět}}',
 'duration-decades' => '$1 {{PLURAL:$1|lětźasetk|lětźasetka|lětźasetki|lětźastkow}}',
 'duration-centuries' => '$1 {{PLURAL:$1|stolěśe|stolěśi|stolěśa|stolěśow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysaca|lěttysace|lěttysacow}}',
@@ -3802,6 +3939,21 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 # Image rotation
 'rotate-comment' => 'Wobraz wó $1 {{PLURAL:$1|stopjeń|stopnja|stopnje|stopnjow}} ako špěra źo wobwjertnjony',
 
+# Limit report
+'limitreport-title' => 'Profilěrowańske daty parsera:',
+'limitreport-cputime' => 'Casowe wužywanje CPU',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunda|sekunźe|sekundy|sekundow}}',
+'limitreport-walltime' => 'Wužywanje napšawdnego casa',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunda|sekunźe|sekundy|sekundow}}',
+'limitreport-ppvisitednodes' => 'Licba woglědanych sukow preprocesora',
+'limitreport-ppgeneratednodes' => 'Napórana licba sukow  preprocesora',
+'limitreport-postexpandincludesize' => 'Wjelikosć zapśěgowanja pó ekspanděrowanju',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
+'limitreport-templateargumentsize' => 'Wjelikosć pśedłogowego argumenta',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bajt|bajtaj|bajty|bajtow}}',
+'limitreport-expansiondepth' => 'Nejwuša ekspansijowa dłymokosć',
+'limitreport-expensivefunctioncount' => 'Licba wupominańskich parserowych funkcijow',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'Pśedłogi ekspanděrowaś',
 'expand_templates_intro' => 'Na toś tom boku dajo se tekst zapódaś a wšykne pśedłogi na njom se rekursiwnje ekspanděruju. Teke parserowe funkcije kaž <code><nowiki>{{</nowiki>#language:…}}</code> a wariable kaž <code><nowiki>{{</nowiki>CURRENTDAY}}</code> se ekspanděruju - faktiski wšo, což stoj mjazy dwójnymi wugibnjonymi spinkami.',
@@ -3809,10 +3961,14 @@ Hować móžoš slědujucy jadnory formular wužywaś. Twój komentar pśidajo s
 'expand_templates_input' => 'Zapódany tekst:',
 'expand_templates_output' => 'Wuslědk',
 'expand_templates_xml_output' => 'Wudany XML',
+'expand_templates_html_output' => 'Gropne HTML-wudaśe',
 'expand_templates_ok' => 'W pórěźe',
 'expand_templates_remove_comments' => 'Komentary wótwónoźeś',
 'expand_templates_remove_nowiki' => 'Toflicki <nowiki> we wuslědku pódtłocyś',
 'expand_templates_generate_xml' => 'Parsowański bom XML pokazaś',
+'expand_templates_generate_rawhtml' => 'Gropny HTML pokazaś',
 'expand_templates_preview' => 'Pśeglěd',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML w nagratej dataji njedajo se parsowaś.',
 );
index 2a69fee..d7db293 100644 (file)
@@ -36,7 +36,6 @@ $messages = array(
 'tog-minordefault' => 'Tandaai oinsanan niditan tokoro sobaagi do pongoiso',
 'tog-previewontop' => 'Pokitono duluon-kokikitanai id pogulu kutak idit',
 'tog-previewonfirst' => 'Pokitono duluon-kokikitanai di idit koinsan',
-'tog-nocache' => 'Antabai kasing popogigihum bolikon',
 'tog-enotifwatchlistpages' => 'Ponuratai-i oku soira do haro bolikon toi pail lisintanganku haro nokowolion',
 'tog-enotifusertalkpages' => 'Ponuratai-i oku soira kiharo kowolion id pibabarasan momomogunoku',
 'tog-enotifminoredits' => 'Ponuratai-i oku nogi do nung haro no idit tongokoro do bolikon om nogi tangapail',
@@ -157,7 +156,6 @@ $messages = array(
 'qbedit' => 'Idito',
 'qbpageoptions' => 'Bolikon diti',
 'qbmyoptions' => 'Bobolikonku ngawi',
-'qbspecialpages' => 'Bobolikon suaikowokon',
 'faq' => 'Ponguhatan Koinsoruan om Poninimbar',
 'faqpage' => 'Project:Ponguhatan Koinsoruan om Pininimbar',
 
@@ -368,9 +366,6 @@ Haro kaanto sokukuri do iso pimato it awu milo gunoon id pongkotuluhon.',
 'perfcachedts' => 'Data sumusuhut namadangkob, om nopinwoguan ontok $1. Sokiginumu {{PLURAL:$4|iso asil|$4 tangahasil nopo nga}} haro id dangkob diti.',
 'querypage-no-updates' => 'Pinisok ponginwoguan id bolikon diti.
 Awu nodi posikapon do popointalang iri data kawawagu.',
-'wrong_wfQuery_params' => 'Nokosilap tangaparamito mongoi wfQuery()<br />
-Kopomogunoon: $1<br />
-Pongimuhatan: $2',
 'viewsource' => 'Intaai wowonod',
 'viewsource-title' => 'Intaai wowonod montok do $1',
 'actionthrottled' => 'Momilos',
@@ -515,7 +510,7 @@ Andado poh do toruhai pogulu do minsingumbal kawagu.',
 'user-mail-no-body' => 'Minogumbal koh do papaatod surat-i do ingaa suang toi nadalaan koniba.',
 
 # Change password dialog
-'resetpass' => 'Alanai kaatalib',
+'changepassword' => 'Alanai kaatalib',
 'resetpass_announce' => 'Poinsuang log ko momoguno do kaatalib daamot it pinosurat-i.
 Momongoh do sinuang log, mositi do powonsoionnu kaatalib wagu do hiti.:',
 'resetpass_header' => 'Alanai kaatalib takaun',
@@ -819,10 +814,6 @@ Milo ko do montong diti; kointalangan oihum id [{{fullurl:{{#Special:Log}}/suppr
 'rev-showdeleted' => 'popointalang',
 'revisiondelete' => 'Pugaso/pogulio sinimakan',
 'revdelete-nooldid-title' => 'Poimpalid rikoton do sinimakan',
-'revdelete-nologtype-title' => 'Awu nonuan koula-laho log',
-'revdelete-nologtype-text' => 'Awu nu pinoilo ot koula-laho log montok koimaan diti.',
-'revdelete-nologid-title' => 'Log pinosuang napalid',
-'revdelete-nologid-text' => 'Awu nu pinatantu rikoton kinaantakan log do popowonsoi kopomogunaan toi suang pointantu awu poinsuang.',
 'revdelete-no-file' => 'Pail pinotontu awu poinsuang.',
 'revdelete-show-file-confirm' => 'Mongintong ko di sinimakan nopugas do pail  "<nowiki>$1</nowiki>" mantad $2 ontok $3?',
 'revdelete-show-file-submit' => 'O',
@@ -849,8 +840,6 @@ $1",
 'logdelete-failure' => "'''Kokitanan log di awu milo posoinon:'''
 $1",
 'revdel-restore' => 'alanai pongitaanan',
-'revdel-restore-deleted' => 'sinimakan nopugas',
-'revdel-restore-visible' => 'sinimakan tokito',
 'pagehist' => 'Susuyan bolikon',
 'deletedhist' => 'Susuyan nopugas',
 'revdelete-hide-current' => 'Nokosilap popolisok kakamot ditadau $2, $1: iti no sinimakan wagu.
@@ -916,11 +905,7 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 # Search results
 'searchresults' => 'Kootuson nihuman',
 'searchresults-title' => 'Kootuson nihuman do "$1"',
-'searchresulttext' => 'Mongilo ko nopo do lobi ginumu kokomoi mogigihum {{SITENAME}}, intangai [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Minogihum ko do \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|oinsanan bolikon di kitimpuun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|oinsanan bolikon di kitoput "$1"]])',
-'searchsubtitleinvalid' => "Mogihum ko do '''$1'''",
 'titlematches' => 'Kopisangai tuluhon bolikon',
-'notitlematches' => 'Aiso bolikon di kopisangai',
 'textmatches' => 'Kopisangai tik bolikon',
 'notextmatches' => 'Aiso tik kopiontok id bolikon',
 'prevn' => 'poinguluon {{PLURAL:$1|$1}}',
@@ -929,7 +914,6 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 'nextn-title' => 'Sumusuhut $1 {{PLURAL:$1|kootuson|tongokootuson}}',
 'shown-title' => 'Pokitono $1 {{PLURAL:$1|kootuson|tongokootuson}} monikid bolikon',
 'viewprevnext' => 'Intaai ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilion ihum-ihumon',
 'searchmenu-exists' => "'''Haro no bolikon pinungaranan do \"[[:\$1]]\" hiti id wiki.'''",
 'searchmenu-new' => "'''Pomonsoi do bolikon \"[[:\$1]]\"hiti id wiki!'''",
 'searchprofile-articles' => 'Suang bobolikon',
@@ -955,14 +939,10 @@ Intaai [[Special:BlockList|lis nantaban]] montok lis kawawagu karaja mogoduh om
 'searchrelated' => 'kompinaian',
 'searchall' => 'oinsanan',
 'showingresultsheader' => "{{PLURAL:$5|Kootuson '''$1''' of '''$3'''|Tongkootuson '''$1 - $2''' of '''$3'''}} montok '''$4'''",
-'nonefound' => "'''Panansarahan''': Haro pipiro no kinoiyonon ngaran it ihumon maya do poinsandad.
-Umbalai momogonop it ihumonnu miampai do ''all:'' mooi do oihum ot oinsanan suang (poinsuang bobolikon pogibabarasan, pomitanan wonsoi, om nunu nopo it kopiagal), toi momoguno kinoiyonon ngaran sobaagi do poninimpuun.",
 'search-nonefound' => 'Ingaa kootuson kaagal di kuiri.',
-'powersearch' => 'Pogigihum poimogot',
 'powersearch-legend' => 'Pogigihum poimogot',
 'powersearch-ns' => 'Pogihum momoguno ngaran:',
 'powersearch-redir' => 'Liniisan nopotilombus',
-'powersearch-field' => 'Ihumo ot',
 'powersearch-togglelabel' => 'Imuriai:',
 'powersearch-toggleall' => 'Oinsanan',
 'powersearch-togglenone' => 'Ingaa',
@@ -975,7 +955,6 @@ Imurai no do indik suang diti {{SITENAME}} nopo nga nokolipas.',
 'preferences' => 'Pipilion',
 'mypreferences' => 'Pipilion',
 'prefs-edits' => 'Ginumu niditan:',
-'changepassword' => 'Alanai kaatalib',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Kokitanan',
 'datedefault' => 'Ingaa komoisoon',
@@ -985,7 +964,6 @@ Imurai no do indik suang diti {{SITENAME}} nopo nga nokolipas.',
 'prefs-changeemail' => 'Alanai porikatan surat-i',
 'prefs-rendering' => 'Kowoyowoyoon',
 'saveprefs' => 'Pogompio',
-'resetprefs' => 'Pugaso nalanan awu nogompi',
 'searchresultshead' => 'Ihumo',
 'servertime' => 'Timpu mamamalayan:',
 'guesstimezone' => 'Gunoo pinatantu do lalayagku',
@@ -1050,7 +1028,6 @@ Imurai no do indik suang diti {{SITENAME}} nopo nga nokolipas.',
 'recentchanges-label-minor' => 'Iti nopo nga niditan tokoto',
 'recentchanges-label-bot' => 'Niditan diti winonsoi do robot',
 'recentchanges-label-unpatrolled' => 'Niditan diti awu poh nosimak',
-'rcnote' => "Iti {{PLURAL:$1|noh '''1''' nalanan|nopo '''$1''' dohuri nopingalanan}} solinaid {{PLURAL:$2|tadau|'''$2''' tadau}}, ontok di $4, jaam $5.",
 'rcnotefrom' => "Id siriba diti pokitonon ii nopingalanan mantad '''$2''' (gisom '''$1''' ).",
 'rclistfrom' => 'Pokitono naalanan kawawagu tumimpuun mantad $1',
 'rcshowhideminor' => '$1 niditan tokoto',
@@ -1168,9 +1145,6 @@ Kointalangan dilo [$2 kointalangan pail] okito id siriba.',
 'allpagesto' => 'Pokitono bobolikon nopupusan do:',
 'allarticles' => 'Oinsanan bobolikon',
 'allinnamespace' => 'Oinsanan bobolikon ($1 poiyanan-ngaran)',
-'allnotinnamespace' => 'Oinsanan bobolikon (awu poinsuang $1 poiyanan-ngaran)',
-'allpagesprev' => 'Nokopogulu',
-'allpagesnext' => 'kaagu',
 'allpagessubmit' => 'Ibok',
 'allpagesprefix' => 'Pokitono bolikon di kitinimpuunon:',
 'allpages-bad-ns' => '{{SITENAME}} aiso pinungaranan do "$1"',
@@ -1349,9 +1323,6 @@ Id kis dilo, mositi do momoguno do karalan-ralanon longonon nung popindaon toi p
 'movepage-moved' => '\'\'\'"$1" nokowalih do hilo "$2"\'\'\'',
 'articleexists' => 'Kibolikon no do momoguno ngaran dilo, toi ngaran di nopili awu pasagaon.
 Pilio ngaran suai.',
-'talkexists' => "'''Nakaalih no bo daa bolikon dilo, nga it bolikon bolotok awu di kaalih tu kopiirad ot judul di poinsuang mantad.
-Maai no longono do posungku.'''",
-'movedto' => 'powolihon hilo',
 'movetalk' => 'Pooliho bolikon bolotok di poingompinai',
 'movelogpage' => 'Poundoliho log',
 'movereason' => 'Sabab:',
@@ -1472,10 +1443,6 @@ Iri suai sinandad do poinlisok.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Idito pail diti momoguno do kangkaraja pongi-ngidit poinlabus',
-'edit-externally-help' => '(Intaai [https://www.mediawiki.org/wiki/Manual:External_editors karalan-ralanon papasang] do lobi gumu kointalangan)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'oinsanan',
 'namespacesall' => 'oinsanan',
index b194d54..95c8291 100644 (file)
@@ -185,7 +185,6 @@ $messages = array(
 'qbedit' => 'އުނިއިތުރުގެންނަވާ',
 'qbpageoptions' => 'މި ޞަފްޙާ',
 'qbmyoptions' => 'މަގޭ ސަފްހާ ތައް',
-'qbspecialpages' => 'ޚާއްޞަ ޞަފްޙާތައް',
 'faq' => 'އެފް.އޭ.ކިއު',
 'faqpage' => 'Project:އެފް.އޭ.ކިއު',
 
@@ -368,7 +367,7 @@ $1',
 'loginlanguagelabel' => 'ބަސް: $1',
 
 # Change password dialog
-'resetpass' => 'ސިއްރުބަސް ބަދަލުކުރައްވާ',
+'changepassword' => 'ސިއްރުބަސް ބަދަލުކުރައްވާ',
 'resetpass_header' => 'އެކައުންޓްގެ ސިއްރުބަސް ބަދަލުކުރައްވާ',
 'oldpassword' => 'ކުރީގެ ސިއްރުބަސް:',
 'newpassword' => 'އައު ސިއްރުބަސް:',
@@ -476,10 +475,6 @@ $1',
 'histfirst' => 'އެންމެ ކުރީގެ',
 'histlast' => 'އެންމެ ފަހުގެ',
 
-# Revision deletion
-'revdel-restore-deleted' => 'ފޮހެލެވިފައިވާ ނުސްހާތައް',
-'revdel-restore-visible' => 'ފާޅު ނުސްހާތައް',
-
 # Diffs
 'history-title' => '"$1"ގެ ތާރީޚް',
 'lineno' => 'ފޮޅުވަތް $1:',
@@ -516,7 +511,6 @@ $1',
 'preferences' => 'ތަރުޖީހުތައް',
 'mypreferences' => 'ތަރުޖީހުތައް',
 'prefs-edits' => 'އުނިއިތުރުތަކުގެ ޢަދަދު:',
-'changepassword' => 'ސިއްރުބަސް ބަދަލުކުރައްވާ',
 'skin-preview' => 'ނަމޫނާ',
 'saveprefs' => 'ރައްކާކުރައްވާ',
 'columns' => 'ކޮލަންތައް:',
@@ -646,8 +640,6 @@ $1',
 'prevpage' => 'ފަހަތަށް ($1)',
 'allarticles' => 'ހުރިހާ މަޒުމޫނުތައް',
 'allinnamespace' => 'ހުރިހާ ޞަފްޙާތައް (ނުތުގު $1 ގައިވާ)',
-'allpagesprev' => 'ކުރީގެ',
-'allpagesnext' => 'ކުރިޔަށް އޮތް',
 'allpagessubmit' => 'ދުރުވޭ',
 
 # SpecialCachedPage
@@ -744,7 +736,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'move-watch' => 'މި ޞަފްހާ އަށް ނަޒަރުބަހައްޓަވާ!',
 'movepagebtn' => 'ޞަފްޙާގެނަން ބަދަލުކުރައްވާ',
 'articleexists' => 'ތިޔަ ސުރުހީގައި ކުރީއްސުރެ ވެސް ޞަފްޙައެއް ވޭ، ނުވަތަ ތިޔަ އިހުތިޔާރުކުރެއްވި ނަން ރަނގަޅެއް ނޫން، ވީމާ އެހެން ނަމެއް އިހުތިޔާރުކުރެއްވުން އެދެވިގެންވެއެވެ.',
-'movedto' => 'އަށް ބަދަލުކުރެވިފައި',
 'movelogpagetext' => 'ތިރީގައި މިވަނީ ނަން/ތަން ބަދަލުކުރެވިފައިވާ ޞަފްޙާތަކުގެ ފިހުރިސްތެކެވެ.',
 'movereason' => 'ސަބަބު',
 'delete_and_move' => 'ފޮހެލައްވާފައި އެހެންނަމަކަށްބަދަލުކުރައްވާ',
index cd4bc63..36ae3ea 100644 (file)
@@ -122,7 +122,7 @@ $messages = array(
 'jumptonavigation' => 'འཛུལ་འགྱོ་',
 'jumptosearch' => 'འཚོལ་ཞིབ།',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} གི་སྐོར་ལས།',
 'aboutpage' => 'Project:སྐོར་ལས།',
 'copyrightpage' => '{{ns:project}}:འདྲ་བཤུས་འབད་ཆ།',
@@ -131,7 +131,6 @@ $messages = array(
 'disclaimers' => 'ཁས་མི་ལེན་པ།',
 'disclaimerpage' => 'Project: སྤྱིར་བཏང་ཁས་མི་ལེན་པ།',
 'edithelp' => 'ཞུན་དག་གྲོགས་རམ།',
-'edithelppage' => 'Help: ཞུན་དག།',
 'helppage' => 'Help:ནང་དོན།',
 'mainpage' => 'མ་ཤོག།',
 'mainpage-description' => 'མ་ཤོག།',
@@ -142,8 +141,6 @@ $messages = array(
 
 'retrievedfrom' => '"$1" ལས་ སླར་འདྲེན་འབད་ཡོདཔ།',
 'youhavenewmessages' => 'ཁྱོད་ལུ་ $1 ($2) འདུག།',
-'newmessageslink' => 'འཕྲིན་དོན་གསརཔ།',
-'newmessagesdifflink' => 'བསྒྱུར་བཅོས་མཇུག།',
 'editsection' => 'ཞུན་དག།',
 'editold' => 'ཞུན་དག།',
 'editsectionhint' => 'དབྱེ་ཚན་:$1 ཞུན་དག་འབད།',
@@ -306,8 +303,6 @@ $messages = array(
 'prevn' => 'ཧེ་མའི་ {{PLURAL:$1|$1}}',
 'nextn' => 'ཤུལ་མའི་ {{PLURAL:$1|$1}}',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) སྟོན།',
-'searchhelp-url' => 'Help:ནང་དོན།',
-'powersearch' => 'མཐོ་རིམ་ཅན་གྱི་འཚོལ་ཞིབ།',
 
 # Preferences page
 'preferences' => 'དགའ་གདམ།',
@@ -347,7 +342,6 @@ $messages = array(
 'recentchangeslinked-feed' => 'འབྲེལ་བ་ཅན་གྱི་བསྒྱུར་བཅོས།',
 'recentchangeslinked-toolbox' => 'འབྲེལ་བ་ཅན་གྱི་བསྒྱུར་བཅོས།',
 'recentchangeslinked-title' => '"$1" དང་འབྲེལ་བ་ཡོད་པའི་བསྒྱུར་བཅོས་ཚུ།',
-'recentchangeslinked-noresult' => 'དུས་བཀོད་ཀྱི་སྐབས་ལུ་ འབྲེལ་མཐུད་ཅན་གྱི་ཤོག་ལེབ་ལུ་བསྒྱུར་བཅོས་མེད།',
 'recentchangeslinked-summary' => "དམིགས་བསལ་ཤོག་ལེབ་འདི་གིས་ འབྲེལ་མཐུད་ཅན་གྱི་ཤོག་ལེབ་གུ་ མཇུག་ཀྱི་བསྒྱུར་བཅོས་ཚུ་ ཐོ་བཀོད་འབདཝ་ཨིན།
 ཁྱོད་ཀྱི་བལྟ་ཞིབ་ཐོ་ཡིག་གུ་འི་ཤོག་ལེབ་ཚུ་ '''མངོན་གསལ་ཅན་ཨིན།'''",
 
@@ -394,8 +388,6 @@ $messages = array(
 # Statistics
 'statistics' => 'ཚད་རྩིས།',
 
-'disambiguations' => 'ངེས་པ་ཡོད་པའི་བརྡ་དོན་ཤོག་ལེབ།',
-
 'doubleredirects' => 'སླར་ལོག་གཉིས་ལྡན།',
 
 'brokenredirects' => 'མེདཔ་འགྱོ་ཡོད་པའི་སླར་ལོག',
@@ -579,9 +571,6 @@ $messages = array(
 'movepage-moved' => '\'\'\'"$1" འདི་ "$2"\'\'\' ལུ་ སྤོ་བཤུད་འབད་ནུག།',
 'articleexists' => 'ཤོག་ལེབ་མིང་འདི་ཧེ་མ་ལས་ཡོདཔ་ཨིནམ་དང་ ཡང་ན་ ཁྱོད་ཀྱིས་གདམ་ཁ་བརྐྱབས་མི་མིང་འདི་ ནུས་མེད་ཨིན་པས།
 མིང་གཞན་ཅིག་ གདམ་ཁ་རྐྱབས།',
-'talkexists' => "'''ཤོག་ལེབ་འདི་ལེགས་ཤོམ་པས་སྤོ་བཤུད་འབད་ཡོད་རུང་ གཅིག་ཧེ་མ་ལས་ར་ མགོ་མིང་གསརཔ་གུ་ཡོདཔ་ལས་ བློ་ཤོག་འདི་སྤོ་བཤུད་འབད་མ་ཚུགས།
-དེ་ཚུ་ ལག་ཐོག་ལས་མཉམ་བསྡོམས་འབད་གནང་།'''",
-'movedto' => 'ལུ་སྤོ་བཤུད་འབད།',
 'movetalk' => 'འབྲེལ་བ་ཡོད་པའི་ཁ་སླབ་ཤོག་ལེབ་ སྤོ་བཤུད་འབད།',
 'movelogpage' => 'ལོག་སྤོ་བཤུད་འབད།',
 'movereason' => 'རྒྱུ་མཚན:',
@@ -684,10 +673,6 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
-# 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' => 'ཆ་མཉམ།',
index 5c7c89e..e3dbaab 100644 (file)
 $messages = array(
 # User preference toggles
 'tog-hideminor' => 'Ɣla tɔtrɔ suewo le tɔtrɔ yeyeawo me',
-'tog-watchcreations' => 'Tsɔ axa siwo gɔme medze la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
-'tog-watchdefault' => 'Tsɔ axa siwo ŋu metrɔ asi le la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
-'tog-watchmoves' => 'Tsɔ axa siwo ƒe nɔƒe meɖɔli la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
-'tog-watchdeletion' => 'Tsɔ axa siwo metutu la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
-'tog-enotifwatchlistpages' => 'Ɖo du nam ne axa aɖe si ŋu nyeƒe ŋku le la trɔ',
+'tog-watchcreations' => 'Tsɔ axa siwo gɔme medze kpakple axa siwo meda ɖe afisia la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
+'tog-watchdefault' => 'Tsɔ axawo kpakple nutatawo siwo ŋu metrɔ asi le la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
+'tog-watchmoves' => 'Tsɔ  axawo kpakple nutatawo siwo ƒe nɔƒe meɖɔli la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
+'tog-watchdeletion' => 'Tsɔ  axawo kpakple nutatawo siwo metutu la kpe ɖe axa siwo ŋu nyeƒe ŋku le la ŋu',
+'tog-enotifwatchlistpages' => 'Ɖo du nam ne axa aɖe alo nutata aɖe si ŋu nyeƒe ŋku le la trɔ',
+'tog-useeditwarning' => 'Na nyanyam ne mele asiɖem le axa si ŋu wome dzra tɔtrɔwo ɖo vɔ la o.',
 
 'underline-always' => 'Ɣesiaɣi',
 'underline-never' => 'Gbeɖe',
@@ -74,6 +75,18 @@ $messages = array(
 'oct' => 'Kel',
 'nov' => 'Ade',
 'dec' => 'Dzom',
+'january-date' => 'Dzove $1',
+'february-date' => 'Dzodze $1',
+'march-date' => 'Tedoxe $1',
+'april-date' => 'Afɔfiɛ $1',
+'may-date' => 'Damɛ $1',
+'june-date' => 'Masa $1',
+'july-date' => 'Siamlɔm $1',
+'august-date' => 'Dasiamime $1',
+'september-date' => 'Anyɔnyɔ $1',
+'october-date' => 'Kele $1',
+'november-date' => 'Adeɛmekpɔxe $1',
+'december-date' => 'Dzome $1',
 
 # Categories related messages
 'listingcontinuesabbrev' => 'yi dzi',
@@ -88,10 +101,10 @@ $messages = array(
 
 # Cologne Blue skin
 'qbfind' => 'Di',
+'qbbrowse' => 'To eme',
 'qbedit' => 'Trɔ asi le eŋu',
 'qbpageoptions' => 'Axa sia',
 'qbmyoptions' => 'Nyeƒe axawo',
-'qbspecialpages' => 'Axa tɔxewo',
 
 # Vector skin
 'vector-action-delete' => 'Tutui',
@@ -112,6 +125,7 @@ $messages = array(
 'searcharticle' => 'Yi',
 'history' => 'Axa sia ƒe tata xoxoawo',
 'history_short' => 'Xoxoawo',
+'view' => 'Tata',
 'edit' => 'Trɔ asi le eŋu',
 'create' => 'Dze egɔme',
 'editthispage' => 'Ðɔ axa sia ɖo',
@@ -136,7 +150,7 @@ $messages = array(
 'jumptonavigation' => 'kuɖɔɖoɖo',
 'jumptosearch' => 'dii',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} ŋutinya',
 'aboutpage' => 'Project:Ŋutinya',
 'copyright' => 'Nusiwo le afii le $1 mɔɖeɖea te.',
@@ -155,8 +169,6 @@ $messages = array(
 
 'retrievedfrom' => 'Nuŋɔŋlɔ sia tso "$1"',
 'youhavenewmessages' => '$1 le asiwo ($2).',
-'newmessageslink' => 'du yeyewo',
-'newmessagesdifflink' => 'tɔtrɔ mamlea',
 'youhavenewmessagesmulti' => 'Du yeyewo le asiwo le $1',
 'editsection' => 'trɔ asi le eŋu',
 'editold' => 'trɔ asi le eŋu',
@@ -267,9 +279,6 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
 # Search results
 'searchresults' => 'Nusiwo wòdi',
 'searchresults-title' => 'Nusiwo wofɔ le "$1" didi me',
-'searchsubtitle' => 'Nusi wòdi enye \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|axawo katã siwo dze egɔme kple "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|axawo katã siwo kuɖe "$1" ŋu]]).',
-'searchsubtitleinvalid' => "Wòdi '''$1'''",
-'notitlematches' => 'Mesɔ axa aɖeke ƒe tanya o',
 'notextmatches' => 'Axa aɖeke ƒe nyawo mesɔ kple nyasiawo o.',
 'prevn' => '{{PLURAL:$1|$1}} do ŋgɔ',
 'nextn' => '{{PLURAL:$1|$1}} yometɔwo',
@@ -283,8 +292,6 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
 'search-suggest' => 'Ɖe wò be: $1',
 'search-interwiki-more' => '(kɔ kpe ɖe eŋu)',
 'searchall' => 'wokatã',
-'powersearch' => 'Dii de eme',
-'powersearch-field' => 'Di',
 'powersearch-toggleall' => 'Wokatã',
 
 # Preferences page
@@ -403,7 +410,6 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
 'allpagesto' => 'Fia axawo vaseɖe:',
 'allarticles' => 'Axawo katã',
 'allinnamespace' => 'Axawo katã ($1 namespace)',
-'allpagesnext' => 'Eyome',
 'allpagessubmit' => 'Yi',
 
 # Special:LinkSearch
@@ -505,7 +511,6 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
 'articleexists' => 'Tanya alo ŋkɔ sia nye axa bubu aɖe tɔ xoxo, alo eda se dzi.
 Tia ŋkɔ alo tanya bubu.',
 'cantmove-titleprotected' => 'Wòmateŋu ahe axa aɖeke va afii o, elabena wo xemɔ na tanya sia ƒe ŋɔŋlɔ',
-'movedto' => 'wohee yi',
 
 # Export
 'export' => 'Ɖo axa siawo ɖa',
@@ -561,9 +566,6 @@ Wòateŋu akpɔ alesi woŋlɔe.',
 'newimages' => 'Nutata yeyewo',
 'ilsubmit' => 'Dii',
 
-# External editor support
-'edit-externally-help' => '(Kpɔ [//www.mediawiki.org/wiki/Manual:External_editors gɔmedzedze sewo] na kpekpeɖeŋu bubuwo.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'katã',
 'namespacesall' => 'wokatã',
@@ -597,4 +599,7 @@ Wòateŋu akpɔ alesi woŋlɔe.',
 # Special:Tags
 'tags-edit' => 'trɔ asi le eŋu',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Kpɔe do ŋgɔ',
+
 );
index 0d97e11..9537d79 100644 (file)
  * @ingroup Language
  * @file
  *
+ * @author Lévi
  * @author Reder
  */
 
 $fallback = 'it';
 
 $messages = array(
+# User preference toggles
+'tog-underline' => "Tîra 'na rîga sòta i colegamèint.",
+'tog-justify' => 'Mésa in ōrdin di carâter di peréiod.',
+'tog-hideminor' => "Lōga 'l mudéfichi pió céchi int al j ûltmi mudéfichi.",
+'tog-hidepatrolled' => "Lōga 'l mudéfichi verifichêdi int al j ûltmi mudéfichi",
+'tog-newpageshidepatrolled' => "Lōga al pàgini verifichêdi da l'elèinch dal pàgini pió nōvi.",
+'tog-extendwatchlist' => "Fà vèder tót' al mudéfichi fât a i tgnû sòt ôc, mìa sōl l'ûltma.",
+'tog-usenewrc' => "Unés al mudéfichi per pàgina int al j ûltmi mudéfichi e in quî tgnû sòt' ôc.",
+'tog-numberheadings' => 'Cûnta automâtica di tétol ed sesiòun.',
+'tog-showtoolbar' => 'Fà vèder la bâra di strumèint ed mudéfica.',
+'tog-editondblclick' => "Mudéfica 'l pàgini cun un cléch dòpi.",
+'tog-editsection' => 'Mudéfica dal sesiòun per mèz dal colegamèint [mudéfica].',
+'tog-editsectiononrightclick' => 'Mudéfica dal sesiòun per mèz dal cléch a dréta insém al tétol.',
+'tog-showtoc' => "Fà vèder al sûnt (p'r al pàgini cun pió 'd 3 sesiòun)",
+'tog-rememberpassword' => "Tîn a mèint la cêva 'd ingrès insém a cól navigadōr ché (per un mâsim ed $1{{PLURAL:$1|dé}}).",
+'tog-watchcreations' => "Zûnta al pàgini fâti e i file carghê int i tgnû 'd ôc specêl.",
+'tog-watchdefault' => "Zûnta al pàgini e i file mudifichê int i tgnû 'd ôc specêl.",
+'tog-watchmoves' => "Zûnta al pàgini e i file spustê int i tgnû 'd ôc specêl.",
+'tog-watchdeletion' => "Zûnta al pàgini e i file scanşlê int i tgnû 'd ôc specêl.",
+'tog-minordefault' => 'Sògna ògni mudéfica cme céca (sōl cme pre-stabilî)',
+'tog-previewontop' => "Fà vèder còl ch' ò fât sōver la caşèla ed mudéfica e mìa sòta.",
+'tog-previewonfirst' => "Fà vèder còl ch' ò fât almēno 'na vôlta préma 'd salvêr",
+'tog-enotifwatchlistpages' => "Mândon un avîş cun la pôsta eletrônica quând a vîn cambiê 'na pàgina o un file preşèint int i tgnû 'd ôc specêl",
+'tog-enotifusertalkpages' => "Mândon un avîş cun la pôsta eletrônica quând a vîn cambiê la mé pàgina 'd discusiòun",
+'tog-enotifminoredits' => "Mândom un avîş ânca p'r al mudéfichi céchi ed pàgini e file",
+'tog-enotifrevealaddr' => "Fà vèder al mé indirés ed la pôsta eletrônica int i mesâg 'd avîş",
+'tog-shownumberswatching' => "Fà vèder al nómer ed j utèint che gh'àn la pàgina sòta uservasiòun",
+'tog-oldsig' => "La fîrma 'd adèsa",
+'tog-fancysig' => 'Trâta la fîrma cme wikitèst (sèinsa colegamèint avtomâtich)',
+'tog-uselivepreview' => 'Permèt la funsiòun "Live preview" (guêrda préma \'d salvêr dal vîv - in sperimèint)',
+'tog-forceeditsummary' => "Dmânda s'l'è vèira che al câmp argumèint l' é vōd",
+'tog-watchlisthideown' => "Lōga al mé mudéfichi int i  tgnû 'd ôc specêl",
+'tog-watchlisthidebots' => "Lōga al mudéfichi di bot int i tgnû 'd ôc specêl",
+'tog-watchlisthideminor' => "Lōga al mudéfichi céchi int i tgnû 'd ôc specêl",
+'tog-watchlisthideliu' => "Lōga al mudéfichi 'd j utèint registrê int i tgnû 'd ôc specêl",
+'tog-watchlisthideanons' => "Lōga al mudéfichi 'd j utèint sèinsa nòm int i tgnû 'd ôc specêl",
+'tog-watchlisthidepatrolled' => "Lōga al mudéfichi verifichêdi int i tgnû 'd ôc specêl",
+'tog-ccmeonemails' => "Mândom 'na côpia di mesâg spidî a chiêter utèint",
+'tog-diffonly' => "An fê mia vèder còl che gh'é dèinter int la pàgina dôp al cunfrûnt tr'al versiòun",
+'tog-showhiddencats' => 'Fà vèder al categoréi lughêdi',
+'tog-norollbackdiff' => 'An fê mia vèder al cunfrûnt tr\' al versiòun dôp avèir fât un "rollback"',
+'tog-useeditwarning' => "Avîşom quând a vâgh fōra da 'na pàgina d' mudéfica e an n'ò mìa salvê al mudéfichi fâti",
+'tog-prefershttps' => "Drōva sèimper un colegamèint sicûr quând ét fê l'ingès",
+
+'underline-always' => 'Sèimper',
+'underline-never' => 'Mài',
+'underline-default' => "Mantî al j impustasiòun dal navigadōr o 'd la skin",
+
+# Font style option in Special:Preferences
+'editfont-style' => "Stîl dal carâter int la caşèla 'd mudéfica:",
+'editfont-default' => 'Pre-stabilî dal navigadōr',
+'editfont-monospace' => 'Carâter a larghésa fésa',
+'editfont-sansserif' => 'Carâter sans-serif',
+'editfont-serif' => 'Carâter serif',
+
 # Dates
+'sunday' => 'Dumènica',
+'monday' => 'lunedé',
+'tuesday' => 'Martedé',
+'wednesday' => 'Mercordé',
+'thursday' => 'Giovedé',
+'friday' => 'Venerdé',
+'saturday' => 'Sâbet',
 'sun' => 'Dum',
-'mon' => 'Lün',
-'tue' => 'Mär',
+'mon' => 'Lun',
+'tue' => 'Mar',
 'wed' => 'Mer',
 'thu' => 'Giu',
-'fri' => 'Van',
+'fri' => 'Ven',
 'sat' => 'Sab',
-'january' => 'Znär',
-'february' => 'Farvär',
-'march' => 'März',
-'april' => 'April',
-'may_long' => "Magg'",
-'june' => 'Giügn',
-'july' => 'Lüi',
-'august' => 'Agust',
-'september' => 'Steimbar',
-'october' => 'Uttubar',
-'november' => 'Nueimbar',
-'december' => 'Dzeimbar',
-'january-gen' => 'Znär',
-'february-gen' => 'Farvär',
-'march-gen' => 'März',
-'april-gen' => 'April',
-'may-gen' => "Magg'",
-'june-gen' => 'Giügn',
-'july-gen' => 'Lüi',
-'august-gen' => 'Agust',
-'september-gen' => 'Steimbar',
-'october-gen' => 'Uttubar',
-'november-gen' => 'Nueimbar',
-'december-gen' => 'Dzeimbar',
-'jan' => 'Znä',
-'feb' => 'Far',
-'mar' => 'Mär',
-'apr' => 'Apr',
-'may' => 'Mag',
-'jun' => 'Giü',
-'jul' => 'Lüi',
-'aug' => 'Agu',
-'sep' => 'Ste',
-'oct' => 'Utt',
-'nov' => 'Nue',
-'dec' => 'Dze',
+'january' => 'Znêr',
+'february' => 'Fervêr',
+'march' => 'Mêrs',
+'april' => 'Avrîl',
+'may_long' => 'Mâg',
+'june' => 'Zógn',
+'july' => 'Lój',
+'august' => 'Agòst',
+'september' => 'Setèmber',
+'october' => 'Utòber',
+'november' => 'Novèmber',
+'december' => 'Dicèmber',
+'january-gen' => 'Znêr',
+'february-gen' => 'Fervêr',
+'march-gen' => 'Mêrs',
+'april-gen' => 'Avrîl',
+'may-gen' => 'Mâg',
+'june-gen' => 'Zógn',
+'july-gen' => 'Lój',
+'august-gen' => 'Agòst',
+'september-gen' => 'Setèmber',
+'october-gen' => 'Utòber',
+'november-gen' => 'Novèmber',
+'december-gen' => 'Dicèmber',
+'jan' => 'Znê',
+'feb' => 'Fer',
+'mar' => 'Mêr',
+'apr' => 'Avr',
+'may' => 'Mâg',
+'jun' => 'Zóg',
+'jul' => 'Lój',
+'aug' => 'Agò',
+'sep' => 'Set',
+'oct' => 'Utò',
+'nov' => 'Nov',
+'dec' => 'Dic',
+'january-date' => 'Znêr $1',
+'february-date' => 'Fervêr $1',
+'march-date' => 'Mêrs $1',
+'april-date' => 'Avrîl $1',
+'may-date' => 'Mâg $1',
+'june-date' => 'Zógn $1',
+'july-date' => 'Lój $1',
+'august-date' => 'Agòst $1',
+'september-date' => 'Setèmber $1',
+'october-date' => 'Otòber $1',
+'november-date' => 'Novèmber $1',
+'december-date' => 'Dicèmber $1',
 
 # Categories related messages
-'hidden-categories' => '{{PLURAL:$1|Categuria nascost|Categuri nascost}}',
-
-'about' => 'Informaziun',
-'cancel' => ' 
-Cancellä',
-'mytalk' => 'Le mé discüssion',
-'navigation' => 'Navigazion',
+'pagecategories' => '{{PLURAL:$1|Categoréia!Categoréi}}',
+'category_header' => "Pàgini 'd la categoréia $1",
+'subcategories' => 'Sòt-categoréi',
+'category-media-header' => "File int la categoréia ''$1''",
+'category-empty' => '"Al mumèint la categoréia l\'an ghà mìa nisóna pàgina o file multimediêl."',
+'hidden-categories' => '{{PLURAL:$1|Categoréia lughêda|Categoréi lughêdi}}',
+'hidden-category-category' => 'Categoréi lughêdi',
+'category-subcat-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'n'ónica sòt-categoréia.| In cla categoréia ché a gh'é {{PLURAL:$1|la sòt-categoréia sgnêda|al $1 sòt-categoréi sgnêdi}} ed sègvit, só 'n totêl ed $2.}}",
+'category-subcat-count-limited' => "In cla categoréia ché a gh'é{{PLURAL:$1|'na sòt-categoréia, nutêda|$1 sòt-categoréi, nutêdi}}ché 'd sègvit.",
+'category-article-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'na pàgina, sgnêda ché.|In cla categoréia ché gh'é{{PLURAL:$1|la pàgina sgnêda| al pàgini $1 sgnêdi}} ed sègvit, in un totêl ed $2.}}",
+'category-article-count-limited' => "In cla categoréia ché a gh'é {{PLURAL:$1|la pàgina nutêda|al  $1 pàgini nutêdi ch'é 'd sègvit.}}",
+'category-file-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl un file, sgnê ché.|In cla categoréia ché gh'é{{PLURAL:$1|un file sgnê ché| i file $1, sgnê}} ed sègvit, in un totêl ed $2.}}",
+'category-file-count-limited' => "In cla categoréia ché a gh'é {{PLURAL:$1|al file nutê|i $1 file nutê}} ché 'd sègvit.",
+'listingcontinuesabbrev' => 'cunt.',
+'index-category' => 'Pàgini gancêdi',
+'noindex-category' => 'Pàgini mìa gancêdi',
+'broken-file-category' => "Pàgini cun dèinter di file ch' an gh'în mìa.",
+
+'about' => 'Infumasiòun',
+'article' => "Còl che gh'é int la pàgina",
+'newwindow' => "(a s'arvés 'na fnèstra nōva)",
+'cancel' => 'Scanşèla',
+'moredotdotdot' => 'Êter...',
+'morenotlisted' => "Cl'elèinch ché an n'é mìa finî.",
+'mypage' => 'Pàgina',
+'mytalk' => 'Al mē discusiòun',
+'anontalk' => "Discusiòun per cl' IP ché",
+'navigation' => 'Navigasiòun',
 'and' => '&#32;e',
 
 # Cologne Blue skin
-'qbfind' => 'Trov',
-'qbedit' => 'Mudifich',
-'qbpageoptions' => "Opzion d'la pàgina",
-'qbmyoptions' => 'Le mé pàgin',
-'qbspecialpages' => 'Pàgin speciäl',
-'faq' => 'Dumand frequeint',
+'qbfind' => 'Câta',
+'qbbrowse' => 'Sfòja',
+'qbedit' => 'Mudéfica',
+'qbpageoptions' => "Siēlti 'd la pàgina",
+'qbmyoptions' => 'Al mē pàgini',
+'faq' => 'Dmândi fâti',
+'faqpage' => 'Project:Dmândi fâti despès',
 
 # Vector skin
-'vector-action-delete' => 'Cancellä',
-'vector-action-move' => 'Spusta',
-'vector-action-protect' => "Prutegg'",
-'vector-view-create' => 'Creä',
-'vector-view-edit' => 'Mudifich',
-'vector-view-history' => 'Väda la storia',
-'vector-view-view' => "Legg'",
-'vector-view-viewsource' => 'Vadä la surgìnt',
-'actions' => 'Azion',
-'namespaces' => 'Namespace',
-'variants' => 'Variänt',
-
-'errorpagetitle' => 'Errur',
+'vector-action-addsection' => 'Zûnta discusiòun',
+'vector-action-delete' => 'Scanşèla',
+'vector-action-move' => 'Spôsta',
+'vector-action-protect' => 'Prutēz',
+'vector-action-undelete' => 'Fà al recóper',
+'vector-action-unprotect' => 'Câmbia la prutesiòun',
+'vector-simplesearch-preference' => 'Drōva la bâra per la sērca pió fâcila (sōl per la skin Vector)',
+'vector-view-create' => 'Invèinta',
+'vector-view-edit' => 'Mudéfica',
+'vector-view-history' => 'Guêrda la stôria',
+'vector-view-view' => 'Lēş',
+'vector-view-viewsource' => 'Guêrda la surzéia',
+'actions' => 'Asiòun',
+'namespaces' => 'Spâsi di nòm',
+'variants' => 'Mudéfichi',
+
+'navigation-heading' => "Lésta 'd navigasiòun",
+'errorpagetitle' => 'Erōr',
+'returnto' => 'Tōrna a $1',
 'tagline' => 'Da {{SITENAME}}',
-'help' => 'Aiüt',
-'search' => 'Cercä',
-'searchbutton' => 'Cercä',
-'go' => 'Vé',
-'searcharticle' => 'Vé',
-'history' => "Storia d'la pàgina",
-'history_short' => 'Storia',
-'permalink' => 'Link permaneint',
-'print' => 'Stampa',
-'view' => 'Vada',
-'edit' => 'Mudifich',
-'create' => 'Creä',
-'delete' => 'Cancellä',
-'deletethispage' => 'Cancellä custa pàgina ché',
-'undelete_short' => 'Recuperä {{PLURAL:$1|una revision|$1 revision}}',
-'viewdeleted_short' => 'Vadä {{PLURAL:$1|una mudfich cancellät|$1 mudfich cancellät}}',
-'protect' => "Prutegg'",
-'protect_change' => 'Cambia',
-'protectthispage' => "Prutegg' custa pàgina ché",
-'unprotect' => 'Cambiä la prutezion',
-'unprotectthispage' => 'Cambiä la prutezion par custa pàgina ché',
-'newpage' => 'Pàgina növa',
-'talkpage' => 'Pàgina ad discüssion',
-'talkpagelinktext' => 'Discüssion',
-'specialpage' => 'Pàgina speciäl',
-'personaltools' => 'Strümeint parsunäl',
-'postcomment' => 'Sezion növa',
-'articlepage' => 'Vadä la pàgina ad contenüt',
-'talk' => 'Discüssion',
-'views' => 'Visit',
-'toolbox' => 'Strümeint',
-'userpage' => "Vadä la pàgina ad l'uteint",
-'projectpage' => 'Vadä la pàgina dal prugett',
-'imagepage' => 'Vadä la pàgina dal file',
-'mediawikipage' => "Vadä al messagg'",
-'templatepage' => 'Vadä al template',
-'viewhelppage' => "Vadä la pàgina d'aiüt",
-'categorypage' => 'Vadä la categoria',
-'viewtalkpage' => 'Vadä la discüssion',
-'otherlanguages' => 'Ätar leingav',
-'redirectedfrom' => '(Reindirizzameint da <b>$1</b>)',
-'redirectpagesub' => 'Pàgina ad reindirizzameint',
-'lastmodifiedat' => "Ültim mudifich d'la pàgina: $2, $1.",
-'viewcount' => "Custa pàgina ché l'è stata letta {{PLURAL:$1|vüna volta|$1 volte}}.",
-'protectedpage' => 'Pàgina bluccä',
-'jumpto' => 'Andä a',
-'jumptonavigation' => 'navigazion',
-'jumptosearch' => 'cercä',
-'pool-queuefull' => "La cua dal pool l'è piena",
-'pool-errorunknown' => 'Errur mia cugnussü',
-
-# 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' => 'Infurmazion su {{SITENAME}}',
-'aboutpage' => 'Project:Infurmäzion',
-'copyright' => "Contenüt suggètt a licinza d'üs $1.",
-'copyrightpage' => '{{ns:project}}:Copyright',
-'currentevents' => 'Eveint curreint',
-'currentevents-url' => 'Project:Eveint curreint',
-'disclaimers' => 'Informazion legäl',
-'disclaimerpage' => 'Project:Avvartenza generäl',
-'edithelp' => 'Libar di spiegazión',
-'edithelppage' => 'Help:Mudifich',
-'helppage' => "Help:Tütt l'argumeint",
-'mainpage' => 'Prima pàgina',
-'mainpage-description' => 'Pàgina principäl',
-'policy-url' => 'Project:Policy',
-'portal' => "Purtäda d'la cumünitä",
-'portal-url' => "Project:Purtäda d'la cumünitä",
-'privacy' => "Legg' l'informazion parsunäl",
-
-'ok' => 'OK',
-'newmessageslink' => "növ messagg'",
-'editsection' => 'cambi',
-'editold' => 'mudifich',
-'viewsourceold' => 'vadä la surgìnt',
-'editlink' => 'mudifich',
-'viewsourcelink' => 'vadä la surgìnt',
-'editsectionhint' => 'Mudifich la seziòn: $1',
-'toc' => 'Indez',
-'showtoc' => 'mustra',
-'hidetoc' => 'nascond',
-'collapsible-collapse' => 'Comprim',
-'collapsible-expand' => 'Espand',
-'thisisdeleted' => 'Vadä o ripristinä $1?',
-'viewdeleted' => 'Vadä $1?',
-'restorelink' => '{{PLURAL:$1|vüna mudfich cancellät|$1 mudfich cancellät}}',
+'help' => 'Ajót',
+'search' => 'Sèirca',
+'searchbutton' => 'Sèirca',
+'go' => 'Và',
+'searcharticle' => 'Và',
+'history' => "Stòria 'd la pàgina",
+'history_short' => 'Stôria',
+'updatedmarker' => 'cambiêda da la mé ûltma vişita',
+'printableversion' => "Stâmpa la pàgina ch' ét vèd.",
+'permalink' => 'Colegamèint fés',
+'print' => 'Stâmpa',
+'view' => 'Guêrda',
+'edit' => 'Mudéfichi',
+'create' => 'Invèinta',
+'editthispage' => 'Mudéfica cla pàgina ché',
+'create-this-page' => 'Fà cla pàgina ché',
+'delete' => 'Scanşéla',
+'deletethispage' => 'Scanşéla cla pàgina ché',
+'undeletethispage' => "Fà 'l recóper ed cla pàgina ché",
+'undelete_short' => "Recóper ed {{PLURAL:$1|'na versiòun|$1 versiòun}}",
+'viewdeleted_short' => "Guèrda {{PLURAL:$1|'na mudéficha scanşlêda|$1 mudéfichi scanşlêdi}}",
+'protect' => 'Prutēz',
+'protect_change' => 'Câmbia',
+'protectthispage' => 'Prutēz cla pàgina ché',
+'unprotect' => 'Câmbia la prutesiòun',
+'unprotectthispage' => 'Câmbia la prutesiòun per cla pàgina ché',
+'newpage' => 'Pàgina nōva',
+'talkpage' => "Pàgina 'd discusiòun",
+'talkpagelinktext' => 'Discusiòun',
+'specialpage' => 'Pàgina specêla',
+'personaltools' => 'Strumèint persunêl',
+'postcomment' => 'Sesiòun nōva',
+'articlepage' => 'Guêrda la pàgina',
+'talk' => 'Discusiòun',
+'views' => 'Vîşiti',
+'toolbox' => 'Strumèint',
+'userpage' => 'Guêrda la pàgina utèint',
+'projectpage' => 'Guêrda la pàgina dal prugèt',
+'imagepage' => "Guêrda la pàgina dal 'file'",
+'mediawikipage' => 'Guêrda al mesâg',
+'templatepage' => "Guêrda al 'template'",
+'viewhelppage' => "Guêrda la pàgina 'd ajót",
+'categorypage' => 'Guêrda la categuréia',
+'viewtalkpage' => 'Guêrda la discusiòun',
+'otherlanguages' => 'In êtri léngvi',
+'redirectedfrom' => '(Tót còst al deşvîn da <b>$1</b>)',
+'redirectpagesub' => "Pàgina 'd partèinsa",
+'lastmodifiedat' => "Ûltmi mudéfichi 'dla pàgina: $2, $1.",
+'viewcount' => "Cla pàgina ché l'é stêda lişûda {{PLURAL:$1|'na vôlta|$1 vôlti}}.",
+'protectedpage' => 'Pàgina sòta prutesiòun',
+'jumpto' => 'Và a:',
+'jumptonavigation' => 'Navigasiòun',
+'jumptosearch' => 'Sērca',
+'view-pool-error' => 'In cól mumèint ché i terminêl în trôp câregh.
+Trôp utèint în drē serchêr ed vèder cla pàgina ché.
+Spèta soquânt minût préma ed pruvêr incòra a carghêr la pgina.
+
+$1',
+'pool-timeout' => "Tèimp che gh'é da spetêr préma dal sblôch.",
+'pool-queuefull' => 'A ghé la fîla, trôpa gînta a vōl vèder la pàgina, prōva tra soquânt minût',
+'pool-errorunknown' => 'Erōr mìa cgnusû',
+
+# 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).
+'aboutsite' => 'Infurmasiòun só {{SITENAME}}',
+'aboutpage' => 'Project:Infurmasiòun',
+'copyright' => "Còl che gh' é che dèinter a 's pōl druvêr sòta licèinsa $1, s' an gh'é mia scrét diversamèint.",
+'copyrightpage' => "{{ns:project}}:Dirét 'd avtōr",
+'currentevents' => 'Fât e prugèt ed tót',
+'currentevents-url' => 'Project:Prugèt_ed_tót',
+'disclaimers' => 'Avertèinsi',
+'disclaimerpage' => 'Project:Avertèinsi generêli',
+'edithelp' => 'Léber dal spiegasiòun',
+'helppage' => 'Help:Tót j argumèint',
+'mainpage' => 'Préma pàgina',
+'mainpage-description' => 'Pàgina principêla',
+'policy-url' => "Project:Léni 'd cundòta",
+'portal' => 'Discóter e quistiunêr',
+'portal-url' => 'Project:Discóter e quistiunêr',
+'privacy' => 'Infurmasiòun só la véta privêda',
+'privacypage' => 'Project:Règoli só la secretèsa dal j infurmasiòun personêli.',
+
+'badaccess' => 'I permès în mìa asê',
+'badaccess-group0' => "An 't gh'è mìa i permès necesâri per fêr còl che t'é dmandê.",
+'badaccess-groups' => "La funsiòun dmandêda l'é riservêda a j utèint che fân pêrt {{PLURAL:$2|al gróp|a ûn di gróp ché sòta}}: $1",
+
+'versionrequired' => "L'é necesâria la versiòun $1 ed MediaWiki",
+'versionrequiredtext' => "Per druvê cla pàgina ché l'é necesâri avèir la versiòun $1 dal prugrâma MediaWiki. Guêrda [[Special:Version|la pàgina apôsta]].",
+
+'ok' => 'Va bèin',
+'retrievedfrom' => 'Tôt da "$1".',
+'youhavenewmessages' => "{{PLURAL:$3|T'ê}} $1 ($2)",
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Ét ghê}} $1 da {{PLURAL:$3|un êter utèint|$3 utèint}} ($2).',
+'youhavenewmessagesmanyusers' => "Ét gh'ê $1 da dimòndi utèint $2.",
+'newmessageslinkplural' => '{{PLURAL:$1|un nōv mesâg|999=nōv mesâg}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ûltma mudéfica|999=ûltmi mudéfichi}}',
+'youhavenewmessagesmulti' => "Ét gh'ê di mesâg nōv insém a $1",
+'editsection' => 'Mudéfica',
+'editold' => 'mudéfica',
+'viewsourceold' => 'guêrda la surzéia',
+'editlink' => 'mudéfica',
+'viewsourcelink' => 'guêrda la surzéia',
+'editsectionhint' => 'Mudéfica la sesiòn: $1',
+'toc' => 'Argumèint',
+'showtoc' => 'Fà vèder',
+'hidetoc' => 'Lōga',
+'collapsible-collapse' => 'Stréca',
+'collapsible-expand' => 'Şlêrga',
+'thisisdeleted' => 'Guêrda e tōrna a mèter $1?',
+'viewdeleted' => 'Guêrda $1?',
+'restorelink' => "{{PLURAL:$1|'na mudéfica scanşlêda|$1 mudéfichi scanşlêdi}}",
 'feedlinks' => 'Feed:',
-'feed-invalid' => "La mudalitä ad sottoscrizion dal feed l'è mia valid.",
-'feed-unavailable' => 'I feed al son mia dispunibil',
-'site-rss-feed' => 'Emissiòn RSS ad $1',
-'site-atom-feed' => 'Emission Atom ad $1',
-'page-rss-feed' => 'Emissiòn RSS par $1',
-'page-atom-feed' => 'Emission Atom par $1',
-'red-link-title' => "$1 (la pàgina a l'esist mia)",
-'sort-descending' => 'Ordinamient decrescent',
-'sort-ascending' => 'Ordinamient cresceint',
+'feed-invalid' => "Al môd ed sotoscrisiòun dal feed an n'é mìa vâlid",
+'feed-unavailable' => "An gh'é mìa di feed léber",
+'site-rss-feed' => 'Feed RSS ed $1',
+'site-atom-feed' => 'Feed Atom ed $1',
+'page-rss-feed' => 'Feed RSS per $1',
+'page-atom-feed' => 'Feed Atom per $1',
+'red-link-title' => "$1 (la pàgina l'an gh'é mìa)",
+'sort-descending' => 'Ōrdin in calêr',
+'sort-ascending' => 'Ōrdin in crèser',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Pàgina',
-'nstab-user' => 'Pàgina uteint',
-'nstab-media' => 'File multimediäl',
-'nstab-special' => 'Pàgina speciäl',
-'nstab-project' => 'Pàgina ad sërvizi',
-'nstab-image' => 'Immàgin',
-'nstab-mediawiki' => "Messagg'",
-'nstab-template' => 'Mudell',
-'nstab-help' => 'Aiüt',
-'nstab-category' => 'Categuria',
+'nstab-user' => 'Pàgina utèint',
+'nstab-media' => 'File multimediêl',
+'nstab-special' => 'Pàgina specêla',
+'nstab-project' => "Pàgina 'd servési",
+'nstab-image' => "'File'",
+'nstab-mediawiki' => 'Mesâg',
+'nstab-template' => 'Mudèl',
+'nstab-help' => 'Per quî rivê da pôch',
+'nstab-category' => 'Categoréia',
+
+# Main script and global functions
+'nosuchaction' => 'Operasiòun mìa arcgnusûda',
+'nosuchactiontext' => "Còl che t'é scrét int l' URL an n'é mìa vâlid.
+L'é anca pusébil che la URL la sia stêda scréta şbaliêda o che sia stê fât un colegamèint mìa vâlid.
+Còst al pré ânca dîr che gh'é un bug in {{SITENAME}}.",
+'nosuchspecialpage' => "La pàgina specêla l'an gh'é mìa.",
+'nospecialpagetext' => "<strong>La pàgina specêla serchêda an n'é mìa stêda arcgnusûda</strong>
+
+L'elèinch dal pàgini specêli vâlidi a 's câta in [[Special:SpecialPages|Elèinch dal pàgini specêli]].",
 
 # General errors
-'error' => 'Errur',
-'databaseerror' => 'Errur dal database',
-'readonly' => 'Database bluccä',
-'missingarticle-rev' => '(revision n°: $1)',
+'error' => 'Erōr',
+'databaseerror' => "Erōr dal 'database'",
+'databaseerror-text' => 'È sucès un erōr de dmânda insém al databêş.
+A pré ânch èser un bug int al prugrâma.',
+'databaseerror-textcl' => 'È sucès un erōr de dmânda insém al databêş.',
+'databaseerror-query' => 'Istrusiòun SQL: $1',
+'databaseerror-function' => 'Funsiòun: $1',
+'databaseerror-error' => 'Erōr: $1',
+'laggedslavemode' => "'''Atèinti:''' la pàgina la pré avèir mìa al revisiòun pió nōv.",
+'readonly' => "'Database' bluchê",
+'enterlockreason' => "Scréver al mutîv dal blôch, precişêr quând a 's pèinsa che 'l vègna tôt via.",
+'readonlytext' => "In cól mumèint ché al databêş l'é bluchê e an 's pōlen fêr né zûnti né mudéfichi. Al blôch ed sôlit l'é lighê a 'na revişiòun normêla e quând la srà finîda al gnirà sbluchê. 
+
+L'aminitradōr dal sistēma ch' al l'à bluchê l'à dê cla spiegasiòun ché: $1",
+'missing-article' => "Al datebêş an n'à mìa catê al tèst ed 'na pàgina ch' l' aré duvû catêres sòt' al nòm \"\$1\" \$2. Ed sôlit còst a sucēd quând a vîn arciamê, a partîr da la stòria dal mudéfichi o dal cunfrûnt tra versiòun, un colegamèint a 'na pàgina scanşlêda, a un cunfrûnt tra versiòun che gh'în mìa o a un cunfrûnt tra versiòun cun la stòria dal mudéfichi scanşlêda. In chês cuntrâri, a s'é pubabilmèint catê un erōr int al prugrâma ed Media Wiki. A se dmânda al piaşèir ed comunichêr còl ch'é sucès a un [[Special:ListUsers/sysop|amministadōr]] e comunichêregh l'indirés (URL) in quistiòun.",
+'missingarticle-rev' => '(nómer ed la versiòun: $1)',
 'missingarticle-diff' => '(Diff: $1, $2)',
-'internalerror' => 'Errur interiur',
-'internalerror_info' => 'Errur interiur: $1',
-'viewsource' => 'Vadä la surgìnt',
-'viewsource-title' => 'Vadä la surgìnt ad $1',
+'readonly_lag' => "Al databêş l'é stê bluchê in avtomàtich per permèter a i terminêl cun al databêş schiêv ed mètres in pâs cun al master",
+'internalerror' => 'Erōr intêren',
+'internalerror_info' => 'Erōr intêren: $1',
+'fileappenderrorread' => 'An n\'é mìa stê pusébil lēşer "$1" mèinter es fêva la zûnta.',
+'fileappenderror' => 'An n\'é mìa pusébil zuntêr "$1" a "$2".',
+'filecopyerror' => 'An n\'é mìa pusébil cupiêr al file "$1" in "$2".',
+'filerenameerror' => 'An n\'é mìa pusébil cambiêr al nòm ed "$1" in "$2".',
+'filedeleteerror' => 'An n\'é mìa pusébil scanşlêr al file "$1".',
+'directorycreateerror' => 'An n\'é mìa pusébil fêr la directory "$1".',
+'filenotfound' => 'An n\'é mìa pusébil catêr al file "$1".',
+'fileexistserror' => 'An n\'é mìa pusébil scréver al file "$1": al file al gh\'é bèle.',
+'unexpected' => 'Valōr mìa pervést "$1"="$2".',
+'formerror' => "Erōr: an n'é ma pusébil spidîr al môdul.",
+'badarticleerror' => 'Operasiòun mìa permésa per cla pàgina ché.',
+'cannotdelete' => 'An n\'é mìa stê pusébil scanşlêr la pàgina o al file "$1".
+Al pré èser bèle stê scanşlê da quelchidûn êter.',
+'cannotdelete-title' => 'Impusébil scanşlêr la pàgina "$1".',
+'delete-hook-aborted' => "L' hook an n'à mia permés la scanşladûra.
+An n'é mìa stê dê la spiegasiòun.",
+'no-null-revision' => 'An pōl èser fât \'na versiòun mìa vâlida per la pàgina "$1"',
+'badtitle' => 'Tétol mìa curèt.',
+'badtitletext' => "Al tétol ed la pàgina serchêda l'é vōd, şbaliê opór al deşvîn da 'n erōr int i colegamèint di côdis o int i colegamèint druvê in wiki. In pió al pré avèir ûn o pió carâter ch'an pōlen mìa èser druvê int i tétol.",
+'perfcached' => 'Al j infurmasiòun ché sòta vînen registrêdi int la "cache" dal databêş e an pōlen mìa èser arnuvê. Int la "cache" a gh\'é  un mâsim ed {{PLURAL:$1|un rişultêt |$1 rişultêt}} ch\' es pōl/en druvêr.',
+'perfcachedts' => 'Al j infurmasiòun ché sòta vînen registrêdi int la "cache" dal databêş e l\'ûltma vôlta l\' è stê arnuvê al  $ 1. Int la "cache" a gh\'é  un mâsim ed {{PLURAL:$4|un rişultêt |$4 rişultêt}} ch\' es pōl/en druvêr.',
+'querypage-no-updates' => "J arnuvamèint ed la pàgina în p'r al mumèint fērom. Al j infurmasiòun dèinter a la pàgina a gnirân mia arnuvêdi.",
+'viewsource' => 'Guêrda la surzéia',
+'viewsource-title' => "Guêrda la surzéia 'd $1",
+'actionthrottled' => "L'asiòun la vîn tardêda.",
+'actionthrottledtext' => "Cme mişûra 'd sicurèsa cûnt'r al spam soquânti operasiòun a vînen limitêdi a 'n nómer mâsim ed vôlti in un precîş peréiod ed tèimp, in cól chêş ché a s'é bèle andê d'ed là 'd cól lémit. A se dmânda ed turnêr a pruvêr tra soquânt minût.",
+'protectedpagetext' => "Cla pàgina ché l'é stêda prutèta per impidîr la mudéfica o êtri operasiòun.",
+'viewsourcetext' => "L'é pusébil vèder e cupiêr al côdis surzéia ed cla pàgina ché.",
+'viewyourtext' => 'L\'é pusébil vèder e cupiêr al côdis surzéia dal "tō mudéfichi" ed cla pàgina ché:',
+'protectedinterface' => "Cla pàgina ché la gh'à 'n elemèint ch' al fa pêrt dal colegamèint tra utèint e al progrâma 'd cól sît ché e l'é prutèta per schivşêr pusébil abûş. Per zuntêr o mudufichêr tradusiòun per tót i sistēma wiki druvêr [//translatewiki.net/ translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
+'editinginterface' => "'''Atèinti:'' Al tèst ed cla pàgina ché 'l fa pêrt dal colegamèint tra utèint e 'l progrâma dal sît.  Tót' al modéfichi fâti a cla pàgina ché a gnîran spustêdi insém a i mesâg vést da tót j utèint ed cól wiki ché. Per zuntêr o mudufichêr tradusiòun vâlidi per tót i wiki, cunsîdra la pusibilitê 'd druvêr [/ / translatewiki.net / translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
+'cascadeprotected' => "Insém a cla pàgina ché an n'é mìa pusébil fêr dal mudéfichi perchè l'é dèinter {{PLURAL:$1|int la pàgina sgnêda ché  'd sègvit, ch' l'é stêda prutèta|int al pàgini sgnêdi ché  'd sègvit, ch' în stêdi prutèti}} cun la prutesiòun ch' la 's arfà in cuntinvasiòun:
+$2",
+'namespaceprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr al pàgini dal spâsi di nòm '''$1'''.",
+'customcssprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
+'customjsprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina JavaScript ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
+'mycustomcssprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché.",
+'mycustomjsprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina JavaScript ché .",
+'myprivateinfoprotected' => "An 's gh'à mìa i permès necesâri per cambiê 'l j infurmasiòun personêli.",
+'mypreferencesprotected' => "An 's gh'à mìa i permès necesâri per cambiêr al preferèinsi personêli.",
+'ns-specialprotected' => "An n'é mìa pusébil mudifichêr al pàgini specêli.",
+'titleprotected' => 'Al tétol ed cla pagina ché l\'é stê bluchê da [[User:$1|$1]].
+Còst l\'é al mutîv:"$2".',
+'filereadonlyerror' => 'An n\'é mìa stê pusébil mudifichêr al file "$1" perchè al depôsit di file "$2" a \'s pōl sōl lēzer.
+
+L\'aministradōr ch\' al l\'à bluchê l\'à dê cla spiegasiòun ché:"$3".',
+'invalidtitle-knownnamespace' => 'Tétol mìa vâlid cme spâsi di nòm "$2" e tèst "$3"',
+'invalidtitle-unknownnamespace' => 'Tétol mìa vâlid cun spâsi di nòm mìa cgnusû "$1" e tèst "$2"',
+'exception-nologin' => "An t'é mìa gnû dèinter",
+'exception-nologin-text' => "Per andêr dèinter a cla pàgina ché o fêr còl ch'ét pèins ét gh'ê da [[Special:Userlogin|fêr l'ingrès]].",
+'exception-nologin-text-manual' => 'Per prèir andêr dèinter a cla pàgina ché o fêr còl ch\'ét peins ét gh\'ê da "$1".',
 
 # Login and logout pages
-'yourname' => 'Nom uteint:',
-'yourpassword' => 'Password:',
-'yourpasswordagain' => 'Ripett la password:',
-'login' => 'Enträ',
-'nav-login-createaccount' => 'Enträ / Creä un account',
-'userlogin' => 'Enträ / Creä un account',
-'userloginnocreate' => 'Enträ',
-'logout' => 'Üscì',
-'userlogout' => 'Üscì',
-'notloggedin' => 'Si mia enträ',
-'nologinlink' => 'Creä un cunt',
-'createaccount' => 'Creä cunt',
-'gotaccountlink' => 'Enträ',
-'createaccountmail' => 'Via e-mail',
-'createaccountreason' => 'Mutiv:',
-'loginerror' => 'Errur ad enträ',
-'accountcreated' => 'Account creä',
-'loginlanguagelabel' => 'Leingua: $1',
+'yourname' => 'Nòm utèint:',
+'yourpassword' => "Cêva 'd ingrès:",
+'yourpasswordagain' => "Scrév incòra la cêva 'd ingrès:",
+'remembermypassword' => "Tîn a mèint la cêva 'd ingrès insém a cól navigadōr ché (per un mâsim ed $1{{PLURAL:$1|dé}}).",
+'login' => 'Và dèinter',
+'nav-login-createaccount' => 'Và dèinter / Fà la tó inscrisiòun',
+'loginprompt' => "Per andêr dèinter a {{SITENAME}} l'é necesâri permèter i cookie.",
+'userlogin' => 'Và dèinter / Fà la tó inscrisiòun',
+'userloginnocreate' => 'Và dèinter',
+'logout' => 'Và fōra',
+'userlogout' => 'Và fōra',
+'notloggedin' => "An t'é mìa gnû dèinter",
+'nologin' => "An gh'èt mìa incòra un ingrès? $1",
+'nologinlink' => 'Fà la tó inscrisiòun',
+'createaccount' => 'Fà la tó inscrisiòun',
+'gotaccount' => "Gh'èt bèle un ingrès? $1",
+'gotaccountlink' => 'Và dèinter',
+'userlogin-resetlink' => "T'ét scurdê j elemèint p'r al tó ingrès?",
+'createaccountmail' => "Drōva 'na cêva 'd ingrès a chêş pruvişôria e spidésla a l'indirés ed pôsta eletrônica sgnê.",
+'createaccountreason' => 'Mutîv:',
+'loginerror' => "Erōr 'd ingrès",
+'mailmypassword' => "Tōrna mèter la cêva 'd ingrès",
+'accountcreated' => 'Ingrès fât',
+'loginlanguagelabel' => 'Léngva: $1',
 
 # Change password dialog
-'resetpass' => 'Cambiä la password',
-'oldpassword' => "Vecc' password:",
-'newpassword' => 'Növa password:',
-'resetpass-submit-loggedin' => 'Cambiä la password',
-'resetpass-submit-cancel' => 'Cancellä',
-'resetpass-temp-password' => 'Password tempural:',
+'changepassword' => "Câmbia la cêva 'd ingrès",
+'oldpassword' => "Cêva 'd ingès vècia:",
+'newpassword' => "Nōva cêva 'd ingrès:",
+'resetpass-submit-loggedin' => "Câmbia la cêva 'd ingrès",
+'resetpass-submit-cancel' => 'Scanşèla',
+'resetpass-temp-password' => "Cêva 'd ingrès pruvişôria:",
 
 # Special:PasswordReset
-'passwordreset' => 'Cambiä la password',
-'passwordreset-legend' => 'Cambiä la password',
-'passwordreset-username' => 'Nom uteint:',
-'passwordreset-domain' => 'Dumini:',
+'passwordreset' => "Câmbia la cêva 'd ingrès",
+'passwordreset-legend' => "Tōrna mèter la cêva 'd ingrès",
+'passwordreset-username' => 'Nòm utèint:',
+'passwordreset-domain' => 'Proprietê:',
 
 # Edit page toolbar
-'bold_sample' => 'Grassètt',
-'italic_sample' => 'Cursìv',
-'media_tip' => 'Cullegameint al file',
+'bold_sample' => 'Grasèt',
+'bold_tip' => 'Grasèt',
+'italic_sample' => 'Cursîv',
+'italic_tip' => 'Cursîv',
+'link_sample' => 'Tétol dal colegamèint',
+'link_tip' => 'Colegamèint intêren',
+'extlink_sample' => 'http://www.example.com tétol dal colegamèint',
+'extlink_tip' => "Colegamèin d'ed fōra (ricôrdet ed mèter préma http://)",
+'headline_sample' => 'Intestasiòun',
+'headline_tip' => 'Intestasiòun ed 2° livèl',
+'nowiki_sample' => 'Mèt dèinter ché al tèst mìa furmatê',
+'nowiki_tip' => 'An badêr mìa la furmatasiòun wiki',
+'image_tip' => 'Mèt dèinter al file',
+'media_tip' => "Colegamèint al 'file'",
+'sig_tip' => "Fîrma cun la dâta e l'ōra",
+'hr_tip' => 'Rîga spiâna (drōva cun giudési)',
 
 # Edit pages
-'summary' => 'Summari:',
-'savearticle' => 'Sälv la pàgina',
-'preview' => 'Vadä prima',
-'showpreview' => "Vadä l'antepeima",
-'showdiff' => 'Vadä li cambiameint',
-'blockedtitle' => 'Uteint bluccä',
-'newarticle' => '(Növ)',
-'note' => "'''Nota:'''",
-'editing' => 'Mudifich ad $1',
-'editingsection' => 'Mudifich ad $1 (sezion)',
-'editingcomment' => 'Mudifich ad $1 (növ sezion)',
-'editconflict' => 'Conflitt ad mudifich: $1',
-'yourtext' => 'Al tò test',
-'yourdiff' => 'Differeinz',
-'template-protected' => '(prutett)',
-'template-semiprotected' => '(mézz-prutett)',
-'log-fulllog' => 'Vadä al log cumplet',
-'edit-conflict' => 'Conflitt ad mudifich.',
+'summary' => 'Sûnt:',
+'minoredit' => "Còsta l'é 'na mudéfica céca",
+'watchthis' => 'Tîn adrē a cla pàgina ché',
+'savearticle' => 'Sêlva la pàgina',
+'preview' => 'Guêrda préma',
+'showpreview' => "Guêrda préma 'd salvêr",
+'showdiff' => 'Guêrda i cambiamèint',
+'anoneditwarning' => "'''Atensiòun:''' Ingrès mìa fât. Al tó indirés IP al srà sgnê int la stòria ed cla pàgina chè.",
+'blockedtitle' => 'Utèint bluchê',
+'newarticle' => '(Nōv)',
+'newarticletext' => "Al colegamèint apèina fât al cumbîna cun 'na pàgina ch' an n'é mìa incòra stêda fâta. S'ét vō fêr la pàgina adès, l'é asê cumincêr a scréver al tèst int la caşèla ché sòt (per vedèr infurmasiòun pió precîşi guêrda la [[{{MediaWiki:Helppage}}|pàgina 'd ajót]]). Se al colegamèint  l'é stê avêrt per erōr, l'é asê clichêr al pulsânt \"Indrē\" dal tó navigadōr.",
+'noarticletext' => 'In cól mumèint ché la pàgina serchêda l\'é vōda. L\'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] opór  [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichêr la pàgina adèsa]</span>.',
+'noarticletext-nopermission' => "In cól mumèint ché la pàgina serchêda l'é vōda. L'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît o<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] <span>, mó an 't gh'ê mìa al permès ed fêr cla pàgina ché.",
+'note' => "'''Nôta:'''",
+'previewnote' => "'''Ricôrdet che còsta l'é sōl 'na guardêda préma 'd salvêr.'''
+Al tō mudéfichi în MIA incòra stêdi salvêdi.",
+'editing' => 'Mudéfica ed $1',
+'editingsection' => 'Mudéfica ed $1 (sesiòun)',
+'editingcomment' => 'Mudéfica e $1 (sesiòun nōva)',
+'editconflict' => "Cuntrâst 'd edisiòun só $1",
+'yourtext' => 'Al tó tèst',
+'yourdiff' => 'Diferèinsi',
+'templatesused' => '{{PLURAL:$1|Mudèl druvê|Mudē druvê}} in cla pàgina ché:',
+'template-protected' => '(prutèt)',
+'template-semiprotected' => '(mèz-prutèt)',
+'hiddencategories' => "Cla pàgina ché l' é 'd {{PLURAL:$1|'na categoréia lughêda|$1 categoréi lughêdi}}:",
+'permissionserrorstext-withaction' => "An 's gh'à mìa i permès necesâri per $2, per{{PLURAL:$1|cól mutîv ché|chi mutîv ché}}:",
+'recreate-moveddeleted-warn' => "'''Atensiòun: a s'é drē serchêr ed fêr 'na pàgina bèle scanşlêda tèimp fa'''. 
+
+Asicurêres che sìa dabòun necesâri cuntinvêr a mudifichêr cla pàgina ché.
+Per cumditê còst l'é l'èlèinch dal scanşladûri e di spustamèint relatîv a la pàgina.",
+'moveddeleted-notice' => "Cla pàgina ché l'é stêda scanşlêda. Per infurmasiòun  còst l'é l'èlèinch relatîv dal scanşladûri e di spustemèint fât.",
+'log-fulllog' => 'Guêrda la stòria dal registrasiòun',
+'edit-conflict' => "Cuntrâst 'd edisiòun",
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Atensiòun:''' la grandèsa di mudē més dèinter l'é trôp grôsa. Soquânt mudē gnirâ mìa més dèinter.",
+'post-expand-template-inclusion-category' => "Pàgini in dó la grandèsa di mudē més dèinter la và d'ed sōver dal lémit permés.",
+'post-expand-template-argument-warning' => "'''Atensiòun:''' cla pàgina ché la gh'à ûn o pió argumèint ed mudē trôp grôs per èser şlarghê. Chi argomèint ché a gnirân saltê.",
+'post-expand-template-argument-category' => 'Pàgini cun mudē sèinsa argumèint.',
 
 # History pages
-'viewpagelogs' => 'Vadä li log ad custa pàgina ché',
-'currentrev' => 'Ültima version',
-'currentrev-asof' => 'Ültima version dle $1',
-'revisionasof' => 'Version dle $1',
-'revision-info' => 'Version dle $1, avtur: $2',
-'previousrevision' => "← Version piö vecc'",
-'nextrevision' => 'Versiòn piö növ →',
-'currentrevisionlink' => 'Ültima version',
-'cur' => 'curr',
-'next' => 'succ',
-'last' => 'prec',
-'page_first' => 'prima',
-'page_last' => 'ültim',
+'viewpagelogs' => "Guêrda la stòria 'd cla pàgina ché",
+'currentrev' => 'Ûltma versiòun',
+'currentrev-asof' => 'Ûltma versiòun dal $1',
+'revisionasof' => 'Versiòun dal $1',
+'revision-info' => 'Versiòun ed $1, avtōr: $2',
+'previousrevision' => '← Versiòun pió vècia',
+'nextrevision' => 'Versiòun pió nōva →',
+'currentrevisionlink' => 'Ûltma versiòun',
+'cur' => 'cur',
+'next' => 'Còl dôp',
+'last' => 'Còl préma',
+'page_first' => 'préma',
+'page_last' => 'ûltem',
+'histlegend' => "Cunfrûnt tra 'l versiòun:  sernés al caşèli cumpâgni al versiòun vrûdi e schésa Invio o al ptòun in bâs. Spiegasiòun: : '''({{int:cur}})''' = diferèinsi cun la versiòun d' adèsa, '''({{int:last}})''' = diferèinsi cun la versiòun ed préma, '''{{int:minoreditletter}}''' = mudéfica céca.",
+'history-fieldset-title' => "Nâviga int la stòria 'd la pàgina",
+'history-show-deleted' => 'Sōl quî scanşlê',
+'histfirst' => 'préma',
+'histlast' => 'ûltma',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 al $2',
 
 # Revision deletion
-'rev-delundel' => 'vadä/anscönd',
-'revdelete-radio-set' => 'Sì',
-'revdelete-radio-unset' => 'No',
-'revdelete-reasonotherlist' => 'Ätar ragion',
+'rev-delundel' => 'Guêrda/nascònd',
+'revdelete-radio-set' => 'Nascònd',
+'revdelete-radio-unset' => 'Fà vèder',
+'revdel-restore' => 'Câmbia la vidûda.',
+'revdelete-reasonotherlist' => 'Êtra ragiòun',
 
 # Merge log
-'revertmerge' => "Annullä l'ünion",
+'revertmerge' => "Scanşèla l'uniòun",
 
 # Diffs
-'lineno' => 'Riga $1:',
-'editundo' => 'cancellä',
+'history-title' => '$1 stòria dal mudéfichi',
+'lineno' => 'Rîga $1:',
+'compareselectedversions' => 'Cunfrûnta al versiòun sernîdi.',
+'editundo' => 'scanşèla',
+'diff-multi' => "({{PLURAL:$2|'Na revişion ed mèz|$1 revişiòun ed mèz}} di {{PLURAL:$2|un utèint|$2 utèint}} mìa {{PLURAL:$1|fâta vèder|fâti vèder}})",
 
 # Search results
-'searchresults' => "Risultät d'la ricerch",
-'searchresults-title' => 'Risultät d\'la ricerch ad "$1"',
-'viewprevnext' => 'Väda ($1 {{int:pipe-separator}} $2) ($3).',
-'searchprofile-articles' => 'Pàgin ad cuntinüt',
-'searchprofile-images' => 'Multimëdi',
-'searchprofile-everything' => 'Tütt',
-'searchprofile-advanced' => 'Avanzät',
-'searchprofile-articles-tooltip' => 'Cercä in $1',
-'searchprofile-project-tooltip' => 'Cercä in $1',
-'searchprofile-images-tooltip' => 'Cercä immàgin',
-'search-result-size' => '$1 ({{PLURAL:$2|1 parola|$2 paroli}})',
+'searchresults' => "Rişultê 'd la sērca",
+'searchresults-title' => 'Rişultê \'d la sērca ed "$1"',
+'prevn' => '{{PLURAL:$1|còl préma|quî préma $1}}',
+'nextn' => '{{PLURAL:$1|al seguèint|i seguèint $1}}',
+'prevn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
+'nextn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
+'shown-title' => 'Fà vèder {{PLURAL:$1|un rişultêt|$1 di rişultêt}}',
+'viewprevnext' => 'Guêrda ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Int al sît a gh'é 'na pàgina cun al nòm [[:$1]].'''
+{{PLURAL:$2|0=|Guêrda ânca chiêter ch'în stê catê.}}",
+'searchmenu-new' => "'''Şvilópa la pàgina \"[[:\$1]]\" insém a cól sît ché! '''{{PLURAL:\$2|0=|Guêrda ânch i rişultêt catê}}.",
+'searchprofile-articles' => "Pàgini 'd j argumèint",
+'searchprofile-project' => "Pàgini 'd ajót e relatîvi al prugèt.",
+'searchprofile-images' => 'Multimèdia',
+'searchprofile-everything' => 'Tót',
+'searchprofile-advanced' => 'Specêla',
+'searchprofile-articles-tooltip' => 'Sèirca in $1',
+'searchprofile-project-tooltip' => 'Sèirca in $1',
+'searchprofile-images-tooltip' => "Sèirca 'file'",
+'searchprofile-everything-tooltip' => "Sērca dapertót (ânch int al pàgini 'd discusuòun).",
+'searchprofile-advanced-tooltip' => 'Sērca int i spâsi di nòm fât só mzûra.',
+'search-result-size' => "$1 ({{PLURAL:$2|'na parôla|$2 parôli}})",
+'search-result-category-size' => '{{PLURAL:$1|1 utèint|$1 utèint}} ({{PLURAL:$2|1 sotcategoréia|$2 sotcategoréi}},{{PLURAL:$3|1 file|$3 files}})',
 'search-redirect' => '(redirect $1)',
-'search-section' => '(sezion $1)',
-'search-interwiki-caption' => 'Prugett fradel',
-'search-interwiki-default' => 'Risültä da $1:',
-'search-interwiki-more' => '(ätar)',
-'searchall' => 'tütt',
-'powersearch-toggleall' => 'Tütt',
-'powersearch-togglenone' => 'Ansöin',
+'search-section' => '(sesiòun $1)',
+'search-suggest' => "Fōrsi 't serchêv $1",
+'search-interwiki-caption' => 'Prugèt fradē',
+'search-interwiki-default' => 'Rişultêt da $1:',
+'search-interwiki-more' => '(êter)',
+'searchrelated' => 'coleghê',
+'searchall' => 'tót',
+'showingresultsheader' => "{{PLURAL:$5|Al risultêt '''$1''' ed '''$3'''|I risultêt '''$1 - $2''' ed '''$3'''}} per '''$4'''",
+'search-nonefound' => "La sērca an n'à mìa dê di rişultê.",
+'powersearch-toggleall' => 'Tót',
+'powersearch-togglenone' => 'Nisûn',
 
 # Preferences page
-'preferences' => 'Prefereinz',
-'mypreferences' => 'Al me prefereinz',
-'prefs-edits' => 'Nümar ad mudifich:',
-'prefsnologin' => 'Si mia enträ',
-'changepassword' => 'Cambiä la password',
-'prefs-skin' => 'Skin',
-'skin-preview' => 'Vadä prima',
-'datedefault' => 'Ansiön prefereinz',
-'prefs-beta' => 'Funzionalitä beta',
-'saveprefs' => 'Salvä',
-'prefs-editing' => 'Mudificä',
-'rows' => 'Righe',
-'searchresultshead' => 'Cercä',
-'timezoneregion-africa' => 'Africa',
-'timezoneregion-america' => 'América',
-'timezoneregion-antarctica' => 'Antartide',
-'timezoneregion-arctic' => 'Artide',
-'timezoneregion-asia' => 'Asia',
-'timezoneregion-atlantic' => 'Ucean Atlantich',
-'timezoneregion-australia' => 'Australia',
-'timezoneregion-europe' => 'Europa',
-'timezoneregion-indian' => 'Ucean Indian',
-'timezoneregion-pacific' => 'Ucean Pacifich',
+'preferences' => 'Preferèinsa',
+'mypreferences' => 'Preferèinsi',
+'prefs-edits' => 'Mudéfichi fâti:',
+'prefs-skin' => 'Aspèt grâfich (skin)',
+'skin-preview' => 'Guêrda préma',
+'datedefault' => 'Nisóna preferèinsa',
+'prefs-beta' => "Funsionamèint 'beta'",
+'saveprefs' => 'Sêlva',
+'prefs-editing' => "Caşèla 'd mudéfica",
+'rows' => 'Rîghi',
+'searchresultshead' => 'Sērca',
+'timezoneregion-africa' => 'Âfrica',
+'timezoneregion-america' => 'Amèrica',
+'timezoneregion-antarctica' => 'Antârtide',
+'timezoneregion-arctic' => 'Ârtide',
+'timezoneregion-asia' => 'Âsia',
+'timezoneregion-atlantic' => 'Ocèan Atlântich',
+'timezoneregion-australia' => 'Austrâlia',
+'timezoneregion-europe' => 'Eurôpa',
+'timezoneregion-indian' => 'Ocèan Indiân',
+'timezoneregion-pacific' => 'Ocèan Pacéfich',
 'youremail' => 'E-mail:',
-'username' => 'Nom uteint',
-'uid' => 'ID uteint',
-'prefs-memberingroups' => 'Membar {{PLURAL:$1|dal grüpp|dei grüpp}}:',
-'yourrealname' => 'Nom ver:',
-'yourlanguage' => 'Leingua',
+'username' => '{{GENDER:$1|Nòm utèint}}',
+'uid' => '{{GENDER:$1|utèint}}',
+'prefs-memberingroups' => '{{GENDER:$2|Elemèint}}{{PLURAL:$1|dal gróp|di gróp}}:',
+'yourrealname' => 'Nòm vèira:',
+'yourlanguage' => 'Léngua',
 'email' => 'E-mail',
+'prefs-help-email' => "Mèter l'indéris ed la tó pôsta eletrônica an n'é mia necesâri, mó al permèt ed ricêver la cêva 'd ingrès se per chêş ét la scurdés.",
+'prefs-help-email-others' => "Ét pō ânca sernîr ed lasêr che chiêter a 's mèten in cuntât  tēgh cun la pôsta eletrônica cun al colegamèint da la tó pàgina utèint o da còla 'd discusiòun.  Al tó indirés al vîn mìa fât savèir a quî ch'ét 's mèten in cuntât tēgh.",
 
 # Groups
-'group' => 'Grüpp:',
-'group-user' => 'Uteint',
-'group-autoconfirmed' => 'Uteint autoconvalidät',
+'group' => 'Gróp:',
+'group-user' => 'Utèint',
+'group-autoconfirmed' => 'Utèint cunvalidê da per ló',
 'group-bot' => 'Bot',
-'group-sysop' => 'Amministradór',
-'group-bureaucrat' => 'Bürocrat',
+'group-sysop' => 'Aministradōr',
+'group-bureaucrat' => 'Funsionâri',
 'group-suppress' => 'Oversight',
-'group-all' => '(tütt)',
+'group-all' => '(tót)',
 
-'group-user-member' => '{{GENDER:$1|uteint}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|uteint autoconvalidät}}',
+'group-user-member' => '{{GENDER:$1|utèint}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|utèint convalidê da per ló}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
-'group-sysop-member' => '{{GENDER:$1|amministradór}}',
-'group-bureaucrat-member' => '{{GENDER:$1|bürocrat}}',
+'group-sysop-member' => '{{GENDER:$1|aministradōr}}',
+'group-bureaucrat-member' => '{{GENDER:$1|funsionâri}}',
 'group-suppress-member' => '{{GENDER:$1|oversight}}',
 
-'grouppage-user' => '{{ns:project}}:Uteint',
-'grouppage-autoconfirmed' => '{{ns:project}}:Uteint autoconvalidät',
+'grouppage-user' => '{{ns:project}}:Utèint',
+'grouppage-autoconfirmed' => '{{ns:project}}:Utèint convalidê da per ló',
 'grouppage-bot' => '{{ns:project}}:Bot',
-'grouppage-sysop' => '{{ns:project}}:Amministradór',
-'grouppage-bureaucrat' => '{{ns:project}}:Bürocrat',
+'grouppage-sysop' => '{{ns:project}}:Aministradōr',
+'grouppage-bureaucrat' => '{{ns:project}}:Funsionâri',
 'grouppage-suppress' => '{{ns:project}}:Oversight',
 
 # Rights
-'right-read' => "Legg' pàgin",
-'right-edit' => 'Mudifich pàgin',
+'right-read' => 'Al lēş al pàgini',
+'right-edit' => 'Mudéfica pàgini',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Utèint nōv',
 
 # Associated actions - in the sentence "You do not have permission to X"
-'action-read' => "legg' custa pàgina ché",
-'action-edit' => 'mudifch custa pàgina ché',
-'action-createpage' => 'creä pàgin',
-'action-move' => 'spustä custa pàgina ché',
-'action-movefile' => 'spustä cust file ché',
-'action-upload' => 'caricä cust file ché',
-'action-delete' => 'cancellä custa pàgina ché',
+'action-read' => 'lēzer cla pàgina ché',
+'action-edit' => 'Mudifichêr cla pàgina ché',
+'action-createpage' => 'inventêr pàgini',
+'action-move' => 'spustêr cla pàgina ché',
+'action-movefile' => "spustêr cól 'file' ché",
+'action-upload' => "carghêr cól 'file' ché",
+'action-delete' => 'scanşlêr cla pàgina ché',
 
 # Recent changes
-'recentchanges' => 'Ültim cambiameint',
+'nchanges' => '$1
+{{PLURAL:$1|mudéfica|mudéfichi}}',
+'recentchanges' => 'Ûltmi mudéfichi',
+'recentchanges-legend' => 'Siēlti ûltmi mudéfichi.',
+'recentchanges-feed-description' => "Cól feed ché 'l arpôrta al mudéfichi piô frèschi a còl che gh'é dèinter al sît.",
+'recentchanges-label-newpage' => "Cun cla mudéfica ché t'é fât 'na pàgina nōva.",
+'recentchanges-label-minor' => "Còsta l'é 'na mudéfica céca",
+'recentchanges-label-bot' => "Cla mudéfica ché l'é stêda fâta da un bot.",
+'recentchanges-label-unpatrolled' => "Cla mudéfica ché an n'é mìa incòra stêda verifichêda.",
+'rcnotefrom' => "Ché sòt a gh'é la lésta dal mudéfichi fâti a partîr da '''$2''' (fîn a '''$1''').",
+'rclistfrom' => 'Fà vèder al mudéfichi fâti a partîr da $1.',
+'rcshowhideminor' => '$1 al mudéfichi céchi',
 'rcshowhidebots' => '$1 i bot',
-'rcshowhidemine' => '$1 le mé mudifich',
-'diff' => 'diff',
-'hist' => 'cron',
-'hide' => 'Nascond',
-'show' => 'mustra',
+'rcshowhideliu' => '$1 j utèint registrê',
+'rcshowhideanons' => '$1 j utèint sèinsa nòm.',
+'rcshowhidepatr' => '$1 al mudéfichi verifichêdi',
+'rcshowhidemine' => '$1 al mē mudéfichi',
+'rclinks' => 'Fà vèder al $1 ûltmi mudéfichi fâti int j ûltem $2 dé<br />$3',
+'diff' => 'dif',
+'hist' => 'stòr',
+'hide' => 'Lōga',
+'show' => 'Fà vèder',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'number_of_watching_users_pageview' => '[usservä da {{PLURAL:$1|vün uteint|$1 uteint}}]',
-'rc_categories_any' => 'Qualsía',
+'number_of_watching_users_pageview' => '[vésta da {{PLURAL:$1|un utèint|$1 utèint}}]',
+'rc_categories_any' => "Bast' ech sia",
+'rc-enhanced-expand' => 'Fà vèder i particulêr.',
+'rc-enhanced-hide' => 'Lōga i particulêr.',
+
+# Recent changes linked
+'recentchangeslinked' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-toolbox' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-title' => 'Mudéfichi coleghêdi a $1.',
+'recentchangeslinked-summary' => "Cla pàgina specêla ché la fà vèder al j ûltmi mudéfichi al pàgini coleghêdi da còla sgnêda (o dèinter int la categoréia sgnêda). Al pàgini dèint a la tó lésta 'd j [[Special:Watchlist|tgnû sòt ôc specêl]] în sgnêdi in '''grasèt'''.",
+'recentchangeslinked-page' => "Nòm ' d la pàgina.",
+'recentchangeslinked-to' => 'Fà vèder sōl al mudéfichi fâti al pàgini coleghêdi a còla sgnêda.',
 
 # Upload
-'upload' => 'Cärga un file',
+'upload' => "Cârga un 'file'",
+'uploadlogpage' => 'Fil carghê',
+'filedesc' => 'Sûnt.',
+'uploadedimage' => 'l\'à carghê "[[$1]]"',
 
-'license' => 'Licinza:',
-'license-header' => 'Licinza',
-'nolicense' => 'Ansöna licinza seleziunä',
+'license' => 'Licèinsa:',
+'license-header' => 'Licèinsa',
+'nolicense' => 'Nisóna licèinsa sgnêda',
 
 # Special:ListFiles
-'listfiles_date' => 'Data',
-'listfiles_name' => 'Nom',
-'listfiles_user' => 'Uteint',
+'listfiles_date' => 'Dâta',
+'listfiles_name' => 'Nòm',
+'listfiles_user' => 'Utèint',
 
 # File description page
-'file-anchor-link' => 'Immàgin',
-'filehist' => 'Storia dal file',
-'filehist-current' => 'curreint',
-'filehist-datetime' => 'Data/Ura',
-'filehist-thumb' => 'Miniadüra',
-'filehist-user' => 'Uteint',
-'filehist-dimensions' => 'Dimension',
-'filehist-comment' => 'Uggett',
-'imagelinks' => 'Cullegameint al file',
+'file-anchor-link' => "'File'",
+'filehist' => "Stòria 'd la pàgina",
+'filehist-help' => "Fà cléch insém a 'n gróp dâta/ōra per vèder al file cm'é l'ēra int al mumèint e-sgnê",
+'filehist-revert' => 'armèt',
+'filehist-current' => '(adès)',
+'filehist-datetime' => 'Dâta/Ōra',
+'filehist-thumb' => 'Miniadûra',
+'filehist-thumbtext' => 'Miniadûra ed la versiòundal $1.',
+'filehist-user' => 'Utèint',
+'filehist-dimensions' => 'Amzûri',
+'filehist-comment' => 'Cumèint',
+'imagelinks' => "Ûş dal 'file'",
+'linkstoimage' => "{{PLURAL:$1|Int la pàgina seguèint a gh'é|Int al seguèinti $1 pàgini a gh'é}} colegamèint al file:",
+'nolinkstoimage' => "Nisóna pàgina la gh'à colegamèint al file",
+'sharedupload-desc-here' => "Cól file ché al deşvîn da $1 e al pōl èser druvê da êter prugèt. Ed sègvit a vîn fât vèder la spiegasiòun che gh'é int la [$2 pàgina de spiegasiòun dal file].",
 
 # File deletion
-'filedelete-submit' => 'Cancellä',
+'filedelete-submit' => 'Scanşela',
 
 # Random page
-'randompage' => 'Una pàgina a cäs',
+'randompage' => "'Na pàgina a chêş",
+
+# Statistics
+'statistics' => 'Statéstichi',
 
-'brokenredirects-edit' => 'cambi',
+'brokenredirects-edit' => 'Mudéfica',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
-'newpages' => 'Pàgin növ',
-'move' => 'Spusta',
+'nmembers' => '$1 {{PLURAL:$1|elemèint}}',
+'prefixindex' => 'Elèinch per lètri dal pàgini',
+'usercreated' => '{{GENDER:$3|Fât/fâta}} al $1 a $2',
+'newpages' => 'Pàgini pió nōvi',
+'move' => 'Spôsta',
+'pager-newer-n' => '{{PLURAL:$1|1 còl pió frèsch|$1 i pió frèsch}}',
+'pager-older-n' => '{{PLURAL:$1|1 al pió vèc|$1 i pió vèc}}',
 
 # Book sources
-'booksources-go' => 'Vé',
+'booksources' => 'Tèst o documèint da léber.',
+'booksources-search-legend' => "Sērca 'd documèint insém a di léber",
+'booksources-go' => 'Và',
+
+# Special:Log
+'log' => 'Regéster',
 
 # Special:AllPages
+'allpages' => 'Tót al pàgini.',
 'alphaindexline' => 'da $1 a $2',
-'allpagessubmit' => 'Vé',
+'allarticles' => 'Tót al pàgini.',
+'allpagessubmit' => 'Và',
+
+# Special:Categories
+'categories' => 'Categoréi',
+
+# Special:LinkSearch
+'linksearch-line' => '$1 preşèint int la pàgina $2',
 
 # Special:ListUsers
-'listusers-submit' => 'Mustra',
+'listusers-submit' => 'Fà vèder',
 
 # Special:ListGroupRights
-'listgrouprights-group' => 'Grüpp',
+'listgrouprights-group' => 'Gróp:',
+'listgrouprights-members' => "(elèinch 'd j inscrét)",
 
 # Email user
+'emailuser' => "Scrév a l'utèint",
 'emailfrom' => 'Da:',
 'emailto' => 'A:',
-'emailsubject' => 'Uggett:',
-'emailmessage' => "Messagg'",
+'emailsubject' => 'Argumèint:',
+'emailmessage' => 'Mesâg',
 
 # Watchlist
-'mywatchlist' => 'Le mé üsservat speciäl',
-'watchlistfor2' => "Dall'uteint $1 $2",
-'watchnologin' => 'Si mia enträ',
-'watch' => 'Vadä',
-'watchthispage' => 'Vadä custa pàgina ché',
-'unwatch' => "N'la vadär piö",
+'watchlist' => 'Sòt uservasiòun',
+'mywatchlist' => 'Sòt uservasiòun',
+'watchlistfor2' => "Da l'utèint $1 $2",
+'watchnologin' => "An t'é mìa gnû dèinter",
+'watch' => 'Và adrē',
+'watchthispage' => 'Và adrē a cla pàgina ché',
+'unwatch' => 'Andêr mìa adrē',
+'watchlist-details' => "La lésta 'd quî tgnû 'd ôc specêl la gh'à {{PLURAL:$1|'na pàgina (e la relatîva pàgina 'd discusiòun)|$1 pagine (e al relatîvi  pàgini 'd discusiòun)}}.",
+'wlshowlast' => 'Fà vèder al j ûltmi $1 ōri $2 dé $3',
+'watchlist-options' => 'Siēlti di tgnû sòt ôc specêl.',
 
 'created' => 'creät',
 'changed' => 'mudifegat',
 
 # Delete
-'delete-confirm' => 'Cancellä "$1"',
-'delete-legend' => 'Cancellä',
+'delete-confirm' => 'Scanşela "$1"',
+'delete-legend' => 'Scanşela',
+'actioncomplete' => 'Asiòun cumpîda',
+'actionfailed' => 'Asiòun falîda',
+'dellogpage' => 'Scanşladûri',
 
 # Rollback
-'rollback_short' => 'Turne indré',
-'rollbacklink' => 'Avé indré la mudifech ad prima',
-'rollbackfailed' => 'Si mia riussì a turnä indré',
+'rollback_short' => 'Tōrna a préma dal mudéfichi',
+'rollbacklink' => 'tōrna a préma dal mudéfichi',
+'rollbackfailed' => "An t'é mia turnê indrē",
 
 # Protect
+'protectlogpage' => 'Al prutesiòun',
+'protectedarticle' => 'l\'à prutèt "[[$1]]"',
 'pagesize' => '(byte)',
 
 # Restrictions (nouns)
-'restriction-edit' => 'Mudifich',
-'restriction-move' => 'Spusta',
-'restriction-create' => 'Creä',
-'restriction-upload' => 'Caricä',
+'restriction-edit' => 'Mudéfichi',
+'restriction-move' => 'Spôsta',
+'restriction-create' => 'Invèinta',
+'restriction-upload' => 'Cârga',
 
 # Undelete
-'undeletelink' => 'vada/turna indré',
-'undeleteviewlink' => 'vada',
-'undelete-show-file-submit' => 'Sì',
+'undeletelink' => 'guêrda/recóper',
+'undeleteviewlink' => 'Guêrda',
+'undelete-show-file-submit' => 'Sé',
 
 # Namespace form on various pages
-'namespace' => 'Namespace:',
-'blanknamespace' => '(Principäl)',
+'namespace' => 'Spâsi di nòm',
+'invert' => "scâmbia 'l pêrti siēlta",
+'blanknamespace' => '(Principêl)',
 
 # Contributions
-'contributions' => "Contribüdi de l'uteint",
-'contributions-title' => 'Contribüdi ed $1',
-'mycontris' => 'Le mé contribüdi',
-'contribsub2' => 'Par $1 ($2)',
-'uctop' => '(ültim par la pàgin)',
-
-'sp-contributions-submit' => 'Cercä',
+'contributions' => "Lavōr fât da {{GENDER:$1|l'utèint}}",
+'contributions-title' => 'Lavōr ed $1',
+'mycontris' => 'I mē lavōr',
+'contribsub2' => 'Per {{GENDER:$3|$1}}($2)',
+'uctop' => '(adès)',
+'month' => 'Dal mèiş (e quî préma):',
+'year' => "Da l'ân (e quî préma):",
+
+'sp-contributions-newbies' => 'Fà vèder sōl i lavōr fât da j utèint nōv.',
+'sp-contributions-blocklog' => 'blôch',
+'sp-contributions-uploads' => 'fil carghê',
+'sp-contributions-logs' => 'Regéster',
+'sp-contributions-talk' => 'discusiòun',
+'sp-contributions-search' => 'Sērca i lavōr fât',
+'sp-contributions-username' => 'Indirés IP o nòm utèint',
+'sp-contributions-toponly' => "Fà vèder sōl i lavōr ch' în al j ûltmi versiòun per la pàgina.",
+'sp-contributions-submit' => 'Sērca',
 
 # What links here
+'whatlinkshere' => 'A pûnten ché',
+'whatlinkshere-title' => 'Pàgini che pûnten a "$1"',
 'whatlinkshere-page' => 'Pàgina:',
-'whatlinkshere-links' => '← cullegameint',
+'linkshere' => "Al pàgini segvèinti a gh'àn di colegamèint a '''[[:$1]]'''.",
+'nolinkshere' => "Nisóna pàgina la gh'à dèinter colegamèint che pûnten a '''[[:$1]]'''.",
+'isredirect' => 'Pàgina redirect',
+'istemplate' => 'uniòun',
+'isimage' => "Colegamèint vêrs al 'file'",
+'whatlinkshere-prev' => '{{PLURAL:$1|còl préma|quî préma $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|còl dôp|quî dôp $1}}',
+'whatlinkshere-links' => '← colegamèint',
+'whatlinkshere-hideredirs' => '$1redirect',
+'whatlinkshere-hidetrans' => '$1 uniòun',
+'whatlinkshere-hidelinks' => '$1 colegamèint',
+'whatlinkshere-hideimages' => '$1 colegamèint da file',
+'whatlinkshere-filters' => 'Fîlter',
 
 # Block/unblock
-'block' => "Bluccä l'uteint",
-'unblock' => "Sbluccä l'uteint",
-'blockip' => "Bluccä l'uteint",
-'blockip-title' => "Bluccä l'uteint",
-'blockip-legend' => "Bluccä l'uteint",
-'ipbotheroption' => 'ätar',
-'ipb-unblock-addr' => 'Sbluccä $1',
-'unblockip' => "Sbluccä l'uteint",
-'blocklist' => 'Uteint bluccä',
-'ipblocklist-submit' => 'Cercä',
-'ipblocklist-otherblocks' => 'Ätar {{PLURAL:$1|blocc|blocc}}',
-'blocklink' => 'blocc',
-'unblocklink' => 'sblocc',
-'change-blocklink' => 'cambiä al blocc',
-'contribslink' => 'cuntribüti',
-'unblocklogentry' => "l'à sbluccä $1",
+'block' => "Blôca l'utèint",
+'unblock' => "Şblôcä l'utèint",
+'blockip' => "Blôcä l'utèint",
+'blockip-legend' => "Blôcä l'utèint",
+'ipboptions' => '2 ōri:2 hours,1 dé:1 day,3 dé:3 days,1 stmâna:1 week,2 stâni:2 weeks,1 mèiş:1 month,3 mèiş:3 months,6 mèiş:6 months,1 ân:1 year,infinito:infinite',
+'ipb-unblock-addr' => 'Şblôcä $1',
+'unblockip' => "Şblôcä l'utèint",
+'blocklist' => 'Utèint bluchê',
+'ipblocklist' => 'Utèint bluchê',
+'ipblocklist-submit' => 'Sērca',
+'ipblocklist-otherblocks' => 'Êter {{PLURAL:$1|blôch}}',
+'blocklink' => 'blôca',
+'unblocklink' => 'şblôca',
+'change-blocklink' => 'câmbia blôch',
+'contribslink' => 'lavōr',
+'blocklogpage' => 'Blôch',
+'blocklogentry' => "t'é bluchê [[$1]] per un peréiod ed $2 $3",
+'unblocklogentry' => "l'à şbluchê $1",
+'block-log-flags-nocreate' => 'Registrasiòun bluchêda',
 
 # Move page
-'move-page' => 'Spustameint ad $1',
-'move-page-legend' => 'Spustä la pàgina',
-'movearticle' => 'Spustä la pàgina:',
-'movenologin' => 'Si mia enträ',
-'movepagebtn' => 'Spustä la pàgina',
-'movelogpage' => 'Spustameint',
-'revertmove' => 'Turné indré',
+'move-page' => 'Spustamèint ed $1',
+'move-page-legend' => 'Spustamèint ed pàgina',
+'movearticle' => 'Spôsta la pàgina:',
+'movepagebtn' => 'Spôsta la pàgina',
+'movelogpage' => 'Spustamèint',
+'revertmove' => 'armèt',
 
 # Export
-'export-submit' => 'Esporta',
+'export' => "Pôrta fōra 'l pàgini.",
+'export-submit' => 'Pôrta fōra',
 
 # Namespace 8 related
-'allmessages-filter-all' => 'Tütt',
-'allmessages-language' => 'Leingua:',
-'allmessages-filter-submit' => 'Vé',
+'allmessagesname' => 'Nòm.',
+'allmessagesdefault' => 'Tèst pre-stabilî',
+'allmessages-filter-all' => 'Tót',
+'allmessages-language' => 'Léngua:',
+'allmessages-filter-submit' => 'Và',
 
 # Thumbnails
-'thumbnail-more' => 'Allargä',
+'thumbnail-more' => 'Ingrandés',
+'thumbnail_error' => 'Erōr mèinter ét fêv la miniadûra:$1',
 
 # Special:Import
-'import-upload-filename' => 'Nom dal file:',
-'import-comment' => 'Uggett:',
-'import-upload' => 'Caricä dat XML',
+'import-upload-filename' => "Nòm dal 'file':",
+'import-comment' => 'Argumèint:',
+'import-upload' => 'Cârga infurmasiòun XML',
 
 # Tooltip help for the actions
-'tooltip-pt-logout' => 'Üscì',
-'tooltip-ca-move' => 'Spustä custa pàgina ché',
-'tooltip-search' => 'Cercä deintar ad {{SITENAME}}',
-'tooltip-p-logo' => 'Väda la pàgina principäl',
-'tooltip-n-mainpage' => 'Väda la pàgina principäl',
-'tooltip-n-mainpage-description' => 'Väda la pàgina principäl',
-'tooltip-n-randompage' => 'Fa vëd una pàgina a cäs',
-'tooltip-n-help' => 'Pàgin di aiüt',
-'tooltip-t-upload' => 'Cärag file multimediäl',
-'tooltip-ca-nstab-project' => 'Vadä la pàgina dal prugett',
-'tooltip-ca-nstab-image' => ' 
-Vadä la pàgina dal file',
-'tooltip-ca-nstab-template' => 'Väda la template',
-'tooltip-ca-nstab-help' => "Vadä la pàgina d'aiüt",
-'tooltip-ca-nstab-category' => "Vadä la pàgina d'la categoria",
-'tooltip-save' => 'Salvä li tò cambiameint',
+'tooltip-pt-userpage' => 'La tó pàgina utèint',
+'tooltip-pt-mytalk' => "La tó pàgina 'd discusiòun.",
+'tooltip-pt-preferences' => 'Al mē preferèinsi.',
+'tooltip-pt-watchlist' => "Elèinch dal pàgini che t'é drē tgnîr sòt ôc.",
+'tooltip-pt-mycontris' => 'Elèinch di tō lavōr.',
+'tooltip-pt-login' => "A 's cunsélia 'd fêr la registrasiòun, ânca s' an n'é mia ubligatôri.",
+'tooltip-pt-logout' => 'Và fōra',
+'tooltip-ca-talk' => 'Guêrda al discusiòun relatîvi a cla pàgina chè.',
+'tooltip-ca-edit' => 'Ét pō mudifiche cla pàgina ché. Per piaşèir drōva al ptòun "Guêrda préma" préma \'d salvêr còl che t\'é fât.',
+'tooltip-ca-addsection' => "Cumîncia 'na sesiòun nōva.",
+'tooltip-ca-viewsource' => "Cla pàgina ché l'é sòta prutesiòun, mó 't pō vèder al só côdis surzéia.",
+'tooltip-ca-history' => 'Versiòun ed préma fâti a cla pàgina ché.',
+'tooltip-ca-protect' => 'Prutēz cla pàgina ché',
+'tooltip-ca-delete' => 'Scanşéla cla pàgina ché',
+'tooltip-ca-move' => 'Spôsta cla pàgina ché (câmbia tétol)',
+'tooltip-ca-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-ca-unwatch' => "Tó via cla pàgina ché da la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-search' => 'Sērca dèinter ed {{SITENAME}}',
+'tooltip-search-go' => "Và a'na pàgina cun al tétol sgnê, s' al gh'é.",
+'tooltip-search-fulltext' => 'Sērca int al pàgini al tèst e-sgnê.',
+'tooltip-p-logo' => 'Guêrda la pàgina principêla',
+'tooltip-n-mainpage' => 'Guêrda la pàgina principêla',
+'tooltip-n-mainpage-description' => 'Guêrda la pàgina principêlal',
+'tooltip-n-portal' => "Spiegasiòun dal prugèt, còl ch'ét pō fêr, in dó catêr al côşi.",
+'tooltip-n-currentevents' => "Infurmasiòun só i fât 'd adèsa.",
+'tooltip-n-recentchanges' => 'Elèinch dal j ûltmi mudéfichi dal sît',
+'tooltip-n-randompage' => "Fà vèder 'na pàgina a chêş",
+'tooltip-n-help' => "Pàgini 'd ajót",
+'tooltip-t-whatlinkshere' => "Elèinch ed tót' al pàgini ch'în coleghêdi a còsta.",
+'tooltip-t-recentchangeslinked' => 'Elèinch dal j ûltmi mudéfichi al pàgini coleghêdi a còsta.',
+'tooltip-feed-atom' => 'Feed Atom per cla pàgina ché.',
+'tooltip-t-contributions' => "Lèsta di lavōr fât da cl'utèint ché.",
+'tooltip-t-emailuser' => "Mânda un mesâg cun la pòsta eletrônica a cl'utèint ché",
+'tooltip-t-upload' => "Cârga un 'file'",
+'tooltip-t-specialpages' => 'Elèinch ed tót al pàgini specêli',
+'tooltip-t-print' => 'Per stampêr cla pàgina ché.',
+'tooltip-t-permalink' => "Colegamèint fés a cla versiòun ché 'd  la pàgina.",
+'tooltip-ca-nstab-main' => 'Guêrda la pàgina',
+'tooltip-ca-nstab-user' => 'Guêrda la pàgina utèint',
+'tooltip-ca-nstab-special' => "Còsta ché l'é 'na pàgina specêlal l'an pōl mìa èser mudifichêda",
+'tooltip-ca-nstab-project' => 'Guêrda la pàgina dal prugèt',
+'tooltip-ca-nstab-image' => "Guêrda la pàgina dal 'file'",
+'tooltip-ca-nstab-template' => "Guêrda 'l template",
+'tooltip-ca-nstab-help' => "Guêrda la pàgina d'ajót",
+'tooltip-ca-nstab-category' => "Guêrda la pàgina 'd la categoréia",
+'tooltip-minoredit' => "Sègna cme 'na mudéfica céca",
+'tooltip-save' => 'Sêlva al mudéfichi',
+'tooltip-preview' => "Guêrda al mudéfichi préma 'd salvêr (cunsiliê préma 'd salvêr)",
+'tooltip-diff' => "Guêrda 'l mudéfichi fâti al tèst",
+'tooltip-compareselectedversions' => "Guêrda al diferèinsi tr' al dō versiòun sernîdi ed cla pàgina ché.",
+'tooltip-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-rollback' => "\"Rollback\" al scanşèla cun un cléch tót' al mudéfichi fâti a cla pàgina ché da l'ûltem ch' al gh'à més al mân.",
+'tooltip-undo' => '"Scanşèla" al permèt de scanşlêr cla mudéfica ché e l\'arvés al mudèl ed mudéfica in môd "Guerda préma". E al permèt ed mèter dèinter \'na spiegasiòun int l\' elemèint ed la mudéfica.',
+'tooltip-summary' => 'Mèt dèinter un sût cèch.',
 
 # Attribution
-'others' => 'ätar',
+'others' => 'êter',
 
 # Info page
-'pageinfo-header-edits' => 'Mudifich',
-'pageinfo-views' => 'Nümar ad visit',
-'pageinfo-watchers' => 'Numar ad visitador',
-'pageinfo-edits' => 'Nümar ad mudifich',
-'pageinfo-authors' => 'Nümar ad devers autor',
+'pageinfo-header-edits' => 'Stòria dal mudéfichi',
+'pageinfo-views' => 'Nómer dal vîÅ\9fiti',
+'pageinfo-watchers' => "Nómer  'd utèint che gh'àn la pàgina sòt uservasiòun.",
+'pageinfo-edits' => 'Nómer totêl dal mudéfichi',
+'pageinfo-authors' => 'Nómer totêl di divêrs avtôr',
 
 # Browsing diffs
-'previousdiff' => "← Mudifich piö vecc'",
-'nextdiff' => 'Mudifich piö növa →',
+'previousdiff' => "← Diferèinsa 'd préma",
+'nextdiff' => 'Diferèinsa dôp →',
 
 # Media information
-'file-info-gif-looped' => 'ciclich',
-'file-info-png-looped' => 'ciclich',
+'file-info-size' => '$1 × $2 pixel, amzûra dal file:$3, gèner MIME: $4',
+'file-nohires' => "An gh'é mìa la manēra ed vèder pió cêr de csé.",
+'svg-long-desc' => 'file in furmê SVG, grandèsa teôrica $1 x $2 pixel, grandèsa dal file: $3',
+'show-big-image' => 'File uriginêl',
+'file-info-gif-looped' => 'A ripetisiòun',
+'file-info-png-looped' => 'A ripetisiòun',
 
 # Special:NewFiles
-'newimages-legend' => 'Nom dal file',
+'newimages-legend' => 'Fîltra',
 'showhidebots' => '($1 i bot)',
-'ilsubmit' => 'Cercä',
-'bydate' => 'par data',
+'ilsubmit' => 'Sērca',
+'bydate' => 'per dâta',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 'ago' => '$1 fa',
 
+# Bad image list
+'bad_image_list' => "La manēra l'é còsta:
+
+a vînen cunsidrê sōl j elèinch puntê (ríghi che cumîncen cun al carâter *). Al prém colegamèint só ògni rîga al dēv èser un colegamèint a un 'file' mìa vrû. I colegamèint che vînen dôp, int l'istèsa rîga, în cunsidrê cme un chêş (oséia, pàgini in dó al 'file' al pōl èser arciamê normalmèint).",
+
 # Metadata
-'metadata' => 'Metadat',
+'metadata' => 'Metadati',
+'metadata-help' => "In cól file ché agh'é dal j infurmasiòun zuntêdi, prubabilmèint zuntêdi da la mâchina fotogrâfica o dal scàner druvê per fotografêrel o per fêrel dvintêr digitêl. Se al file l'é stê mudfifichê, soquânt particulêr a prén cumbinêr mìa cun la realtê.",
+'metadata-fields' => "I câmp relatîv a i metadati ed la figûra, in lésta in cól mesâg ché, a gnirân més int la pàgina ed la figûra quând la tabèla di metadati l'é mustrêda int la fōrma cûrta. Per impustasiòun pre-stabilîda, chiêter câmp a gnirân lughê. 
+* make 
+* model 
+* datetimeoriginal 
+* exposuretime 
+* fnumber 
+* isospeedratings 
+* focallength 
+* artist 
+* copyright 
+* imagedescription 
+* gpslatitude 
+* gpslongitude 
+* gpsaltitude",
 
 # Exif tags
 'exif-exposuretime-format' => '$1 s ($2)',
-'exif-gpsareainformation' => "Nom d'la zona GPS",
-'exif-gpsdatestamp' => 'Data GPS',
-'exif-source' => 'Font',
-'exif-languagecode' => 'Leingva',
-'exif-iimcategory' => 'Categuria',
-'exif-identifier' => 'Identificativ',
+'exif-gpsareainformation' => 'Nòm ed la zôna GPS',
+'exif-gpsdatestamp' => 'Dâta GPS',
+'exif-source' => 'Surzéia',
+'exif-languagecode' => 'Léngva',
+'exif-iimcategory' => 'Categoréia',
+'exif-identifier' => 'Identificatîv',
 
 # 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'tütt',
-'namespacesall' => 'tütt',
-'monthsall' => 'tütt',
-'limitall' => 'tütt',
+'watchlistall2' => 'tót',
+'namespacesall' => 'tót',
+'monthsall' => 'tót',
 
 # Delete conflict
-'recreate' => 'Creä ad növ',
+'recreate' => 'Tōrna a fêr',
 
 # action=purge
-'confirm_purge_button' => 'OK',
+'confirm_purge_button' => 'Va bèin',
 
 # action=watch/unwatch
-'confirm-watch-button' => 'OK',
-'confirm-unwatch-button' => 'OK',
+'confirm-watch-button' => 'Va bèin',
+'confirm-unwatch-button' => 'Va bèin',
 
 # Multipage image navigation
-'imgmultigo' => 'Vé!',
-'imgmultigoto' => "Vé in s'la pàgina $1",
+'imgmultigo' => 'Và!',
+'imgmultigoto' => 'Và a la pàgina $1',
 
 # Table pager
-'ascending_abbrev' => 'cresc',
-'descending_abbrev' => 'decresc',
-'table_pager_first' => 'Prima pàgina',
-'table_pager_last' => 'Ã\9cltima pàgina',
-'table_pager_limit_submit' => 'Vé',
+'ascending_abbrev' => 'crès',
+'descending_abbrev' => 'câl',
+'table_pager_first' => 'Préma pàgina',
+'table_pager_last' => 'Ã\9bltma pàgina',
+'table_pager_limit_submit' => 'Và',
 
 # Watchlist editor
-'watchlistedit-raw-titles' => 'Titul:',
+'watchlistedit-raw-titles' => 'Tétol:',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Guêrda al mudéfichi relatîvi.',
+'watchlisttools-edit' => "Fa vèder e mudéfica la lést quî di tgnû 'd ôc specêl.",
+'watchlisttools-raw' => 'Mudéfica la lésta in furmê tèst.',
+
+# Core parser functions
+'duplicate-defaultsort' => "Atensiòun la cêva per urdnêr pre-stabilîda ''$1'' la vîn cambiêda cun la ''$2''.",
 
 # Special:Version
-'version' => 'Version',
-'version-specialpages' => 'Pàgin speciäl',
-'version-other' => 'Ã\84tar',
-'version-version' => '(Version $1)',
-'version-license' => 'Licinza',
-'version-poweredby-others' => 'ätar',
+'version' => 'Versiòun',
+'version-specialpages' => 'Pàgina specêla',
+'version-other' => 'Ã\8ater',
+'version-version' => '($1)',
+'version-license' => 'Licèinsa Media Wiki',
+'version-poweredby-others' => 'êter',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch-filename' => 'Nom dal file:',
-'fileduplicatesearch-submit' => 'Cercä',
+'fileduplicatesearch-filename' => "Nòm dal 'file':",
+'fileduplicatesearch-submit' => 'Sērca',
 
 # Special:SpecialPages
-'specialpages' => 'Pàgin speciäl',
+'specialpages' => 'Pàgini specêli',
+
+# External image whitelist
+'external_image_whitelist' => "#Lasêr cla pàgina ché acsé cme l'é<pre>
+#Mèter dèinter i pès dal j espresiòun regolêri (sōl la pêrta cla va fra //) ed sègvit
+#Còsti gnirân més a cunfrûnt cun j indirés URL dal figûri d'ed fōra (hotlinked) 
+#Al cunbinasiòun asrân fât vèder cme figûri, se no a gnirà fât vèder sōl al colegamèint
+#Al rîghi che cumîncen cun # în cunsidrêdi di cumèint
+#La diferèinsa tr' al lètri grândi e al lètri céchi an gh'à mìa impurtânsa
+
+#Mèter sōver cla rîga ché tót i pès di regex. Lasêr cla rîga ché acsé cme l'é</pre>",
 
 # Special:Tags
-'tags-edit' => 'mudifich',
+'tag-filter' => 'Fîlta per  [[Special:Tags|etichèta]]',
+'tags-edit' => 'mudéfica',
 
 # Special:ComparePages
 'compare-page1' => 'Pàgina 1',
 'compare-page2' => 'Pàgina 2',
-'compare-rev1' => 'Revisiòn 1',
-'compare-rev2' => 'Revisiòn 2',
+'compare-rev1' => 'Revişiòn 1',
+'compare-rev2' => 'Revişiòn 2',
 
 # HTML forms
-'htmlform-reset' => 'Turna indré cul la mudifich',
-'htmlform-selectorother-other' => 'Ã\84tar',
+'htmlform-reset' => 'Scanşèla la mudéfica',
+'htmlform-selectorother-other' => 'Ã\8ater',
 
 # New logging system
-'rightsnone' => '(ansöin)',
+'rightsnone' => '(nisûn)',
 
 # Feedback
-'feedback-subject' => 'Uggett:',
-'feedback-message' => "Messagg':",
-'feedback-cancel' => 'Cancellä',
+'feedback-subject' => 'Argomèint:',
+'feedback-message' => 'Mesâg',
+'feedback-cancel' => 'Scanşela',
 
 );
index 65a53d9..b7b39b7 100644 (file)
@@ -106,7 +106,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ΚακόςΤίτλος' ),
        'Blankpage'                 => array( 'ΚενήΣελίδα' ),
        'Block'                     => array( 'Φραγή', 'ΦραγήIP', 'ΦραγήΧρήστη' ),
-       'Blockme'                   => array( 'ΦραγήΕμένα' ),
        'Booksources'               => array( 'ΠηγέςΒιβλίων' ),
        'BrokenRedirects'           => array( 'ΚατεστραμμένεςΑνακατευθύνσεις' ),
        'Categories'                => array( 'Κατηγορίες' ),
@@ -118,9 +117,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ΔημιουργίαΛογαριασμού' ),
        'Deadendpages'              => array( 'ΑδιέξοδεςΣελίδες' ),
        'DeletedContributions'      => array( 'ΔιαγραμμένεςΣυνεισφορές' ),
-       'Disambiguations'           => array( 'Αποσαφηνίσεις' ),
        'DoubleRedirects'           => array( 'ΔιπλέςΑνακατευθύνσεις' ),
        'Emailuser'                 => array( 'EmailΧρήστη' ),
+       'ExpandTemplates'           => array( 'ΕπέκτασηΠροτύπων' ),
        'Export'                    => array( 'Εξαγωγή' ),
        'Fewestrevisions'           => array( 'ΛιγότεροΕπεξεργασίες' ),
        'FileDuplicateSearch'       => array( 'ΑναζήτησηΔιπλώνΑρχείων' ),
@@ -163,6 +162,7 @@ $specialPageAliases = array(
        'Randomredirect'            => array( 'ΤυχαίαΑνακατεύθυνση' ),
        'Recentchanges'             => array( 'ΠρόσφατεςΑλλαγές' ),
        'Recentchangeslinked'       => array( 'ΣυνδεδεμένεςΠρόσφατεςΑλλαγές', 'ΣχετικέςΑλλαγές' ),
+       'Redirect'                  => array( 'Ανακατεύθυνση' ),
        'Revisiondelete'            => array( 'ΔιαγραφήΈκδοσης' ),
        'Search'                    => array( 'Αναζήτηση' ),
        'Shortpages'                => array( 'ΜικρέςΣελίδες' ),
@@ -195,12 +195,12 @@ $specialPageAliases = array(
 
 $magicWords = array(
        'redirect'                  => array( '0', '#ΑΝΑΚΑΤΕΥΘΥΝΣΗ', '#REDIRECT' ),
-       'notoc'                     => array( '0', '__ΧΩΡΙΣΠΠ__', '__NOTOC__' ),
+       'notoc'                     => array( '0', '__ΧΩΡΙΣΠΠ__', '__ΧΩΡΙΣΠΙΝΑΚΑΠΕΡΙΕΧΟΜΕΝΩΝ__', '__NOTOC__' ),
        'nogallery'                 => array( '0', '__ΧΩΡΙΣΠΙΝΑΚΟΘΗΚΗ__', '__NOGALLERY__' ),
-       'forcetoc'                  => array( '0', '__ΜΕΠΠ__', '__FORCETOC__' ),
-       'toc'                       => array( '0', '__ΠΠ__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__ΧΩΡΙΣΕΠΕΞΕΝΟΤ__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'forcetoc'                  => array( '0', '__ΜΕΠΠ__', '__ΜΕΠΙΝΑΚΑΠΕΡΙΕΧΟΜΕΝΩΝ__', '__FORCETOC__' ),
+       'toc'                       => array( '0', '__ΠΠ__', '__ΠΙΝΑΚΑΣΠΕΡΙΕΧΟΜΕΝΩΝ__', '__TOC__' ),
+       'noeditsection'             => array( '0', '__ΧΩΡΙΣΕΠΕΞΕΝΟΤ__', '__ΧΩΡΙΣΕΠΕΞΕΡΓΑΣΙΑΕΝΟΤΗΤΩΝ__', '__NOEDITSECTION__' ),
+       'currentmonth'              => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ', 'ΤΡΕΧΩΝΜΗΝΑΣ2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣ1', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣΟΝΟΜΑ', 'CURRENTMONTHNAME' ),
        'currentmonthnamegen'       => array( '1', 'ΤΡΕΧΩΝΜΗΝΑΣΓΕΝΙΚΗ', 'CURRENTMONTHNAMEGEN' ),
@@ -233,7 +233,7 @@ $magicWords = array(
        'pagenamee'                 => array( '1', 'ΟΝΟΜΑΣΕΛΙΔΑΣΚ', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'ΠΕΡΙΟΧΗ', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'ΠΕΡΙΟΧΗΚ', 'NAMESPACEE' ),
-       'namespacenumber'           => array( '1', 'ΑΡΙΘΜΟΣΟΝΟΜΑΤΟΣΧΩΡΟΥ', 'NAMESPACENUMBER' ),
+       'namespacenumber'           => array( '1', 'ΑΡΙΘΜΟΣΟΝΟΜΑΤΟΣΧΩΡΟΥ', 'ΑΡΙΘΜΟΣΟΝΟΜΑΤΟΧΩΡΟΥ', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'ΠΕΡΙΟΧΗΣΥΖΗΤΗΣΕΩΝ', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'ΠΕΡΙΟΧΗΣΥΖΗΤΗΣΕΩΝΚ', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'ΠΕΡΙΟΧΗΘΕΜΑΤΩΝ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -260,8 +260,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'κέντρο', 'center', 'centre' ),
        'img_framed'                => array( '1', 'με-πλαίσιο', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'χωρίς-πλαίσιο', 'frameless' ),
-       'img_page'                  => array( '1', 'σελίδα=$1', 'σελίδα $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'κατακόρυφα', 'κατακόρυφα=$1', 'κατακόρυφα $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'σελίδα=$1', 'σελίδα_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'κατακόρυφα', 'κατακόρυφα=$1', 'κατακόρυφα_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'πλαίσιο', 'border' ),
        'img_baseline'              => array( '1', 'γραμμήβάσης', 'baseline' ),
        'img_sub'                   => array( '1', 'δείκτης', 'sub' ),
@@ -275,12 +275,13 @@ $magicWords = array(
        'img_alt'                   => array( '1', 'εναλλ.=$1', 'alt=$1' ),
        'int'                       => array( '0', 'ΕΣΩΤ:', 'INT:' ),
        'sitename'                  => array( '1', 'ΙΣΤΟΧΩΡΟΣ', 'SITENAME' ),
-       'ns'                        => array( '0', 'ΧΟ:', 'NS:' ),
+       'ns'                        => array( '0', 'ΧΟ:', 'ΧΩΡΟΣΟΝΟΜΑΤΩΝ:', 'ΟΧ:', 'ΟΝΟΜΑΤΟΧΩΡΟΣ:', 'NS:' ),
        'localurl'                  => array( '0', 'ΤΟΠΙΚΟURL:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'ΤΟΠΙΚΟURLΚ:', 'LOCALURLE:' ),
        'server'                    => array( '0', 'ΕΞΥΠΗΡΕΤΗΤΗΣ', 'SERVER' ),
        'servername'                => array( '0', 'ΟΝΟΜΑΕΞΥΠΗΡΕΤΗΤΗ', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'ΔΙΑΔΡΟΜΗΠΡΟΓΡΑΜΜΑΤΟΣ', 'SCRIPTPATH' ),
+       'stylepath'                 => array( '0', 'ΔΙΑΔΡΟΜΗΣΤΥΛ', 'STYLEPATH' ),
        'grammar'                   => array( '0', 'ΓΡΑΜΜΑΤΙΚΗ:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'ΦΥΛΟ:', 'GENDER:' ),
        'notitleconvert'            => array( '0', '__ΧΩΡΙΣΜΕΤΑΤΡΟΠΗΤΙΤΛΟΥ__', '__NOTITLECONVERT__', '__NOTC__' ),
@@ -293,17 +294,21 @@ $magicWords = array(
        'revisionday'               => array( '1', 'ΜΕΡΑΑΛΛΑΓΗΣ', 'REVISIONDAY' ),
        'revisionday2'              => array( '1', 'ΜΕΡΑΑΛΛΑΓΗΣ2', 'REVISIONDAY2' ),
        'revisionmonth'             => array( '1', 'ΜΗΝΑΣΑΛΛΑΓΗΣ', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'ΜΗΝΑΣΑΝΑΘΕΩΡΗΣΗΣ1', 'REVISIONMONTH1' ),
        'revisionyear'              => array( '1', 'ΕΤΟΣΑΛΛΑΓΗΣ', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'ΧΡΟΝΟΣΗΜΑΝΣΗΑΛΛΑΓΗΣ', 'REVISIONTIMESTAMP' ),
+       'revisionuser'              => array( '1', 'ΧΡΗΣΤΗΣΑΝΑΘΕΩΡΗΣΗΣ', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'ΠΛΗΘΥΝΤΙΚΟΣ:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'ΠΛΗΡΕΣURL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'ΠΛΗΡΕΣURLΚ:', 'FULLURLE:' ),
+       'canonicalurl'              => array( '0', 'ΚΑΝΟΝΙΚΟURL:', 'CANONICALURL:' ),
+       'canonicalurle'             => array( '0', 'ΚΑΝΟΝΙΚΟURLΚ:', 'CANONICALURLE:' ),
        'lcfirst'                   => array( '0', 'ΠΡΩΤΟΠΕΖΟ:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'ΠΡΩΤΟΚΕΦΑΛΑΙΟ:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'ΠΕΖΑ:', 'LC:' ),
        'uc'                        => array( '0', 'ΚΕΦΑΛΑΙΑ:', 'UC:' ),
        'raw'                       => array( '0', 'ΓΥΜΝΑ:', 'RAW:' ),
-       'displaytitle'              => array( '1', 'ΔΕΙΞΕΤΙΤΛΟ', 'DISPLAYTITLE' ),
+       'displaytitle'              => array( '1', 'ΔΕΙΞΕΤΙΤΛΟ', 'ΠΡΟΒΟΛΗΤΙΤΛΟΥ', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'Γ', 'R' ),
        'newsectionlink'            => array( '1', '__ΔΕΣΜΟΣΝΕΑΣΕΝΟΤΗΤΑΣ__', '__NEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'ΤΡΕΧΟΥΣΑΕΚΔΟΣΗ', 'CURRENTVERSION' ),
@@ -331,6 +336,8 @@ $magicWords = array(
        'numberingroup'             => array( '1', 'ΟΜΑΔΑΑΡΙΘΜΗΣΗΣ', 'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'            => array( '1', '__ΣΤΑΤΙΚΗΑΝΑΚΑΤΕΥΘΥΝΣΗ__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'ΕΠΙΠΕΔΟΠΡΟΣΤΑΣΙΑΣ', 'PROTECTIONLEVEL' ),
+       'url_path'                  => array( '0', 'ΔΙΑΔΡΟΜΗ', 'PATH' ),
+       'url_query'                 => array( '0', 'ΕΡΩΤΗΜΑ', 'QUERY' ),
 );
 
 $fallback8bitEncoding = 'iso-8859-7';
@@ -385,7 +392,6 @@ $messages = array(
 'tog-minordefault' => 'Σήμανση εκ προεπιλογής όλων των αλλαγών ως μικρής κλίμακας',
 'tog-previewontop' => 'Εμφάνιση προεπισκόπησης πριν από το πλαίσιο επεξεργασίας',
 'tog-previewonfirst' => 'Εμφάνιση προεπισκόπησης κατά την πρώτη επεξεργασία',
-'tog-nocache' => 'Απενεργοποίηση προσωρινής μνήμης του περιηγητή',
 'tog-enotifwatchlistpages' => 'Να μου αποστέλλεται μήνυμα ηλεκτρονικού ταχυδρομείου όταν αλλάζει μια σελίδα ή ένα αρχείο που βρίσκεται στη λίστα παρακολούθησής μου',
 'tog-enotifusertalkpages' => 'Να μου αποστέλλεται μήνυμα ηλεκτρονικού ταχυδρομείου όταν αλλάζει η προσωπική μου σελίδα συζήτησης χρήστη',
 'tog-enotifminoredits' => 'Να μου αποστέλλεται μήνυμα ηλεκτρονικού ταχυδρομείου και για αλλαγές μικρής κλίμακας σε σελίδες και αρχεία',
@@ -521,7 +527,6 @@ $messages = array(
 'qbedit' => 'Επεξεργασία',
 'qbpageoptions' => 'Αυτή η σελίδα',
 'qbmyoptions' => 'Οι σελίδες μου',
-'qbspecialpages' => 'Ειδικές σελίδες',
 'faq' => 'Συχνές ερωτήσεις',
 'faqpage' => 'Project:Συχνές ερωτήσεις',
 
@@ -731,9 +736,6 @@ $1',
 'perfcached' => 'Τα δεδομένα που ακολουθούν είναι cached και είναι πιθανόν να μην είναι επικαιροποιημένα. Ένα μέγιστο των  {{PLURAL:$1|one result is|$1 results are}} διαθέσιμο στην cache.',
 'perfcachedts' => 'Τα ακόλουθα δεδομένα είναι αποθηκευμένα στην προσωρινή μνήμη και ενημερώθηκαν τελευταία φορά στις $2 στις $3. Υπάρχει διαθέσιμο ένα μέγιστο {{PLURAL:$4|ενός αποτελέσματος|$4 αποτελεσμάτων}} στην προσωρινή μνήμη.',
 'querypage-no-updates' => 'Οι ενημερώσεις για αυτή τη σελίδα είναι απενεργοποιημένες. Τα δεδομένα εδώ δεν θα ανανεωθούν προς το παρόν.',
-'wrong_wfQuery_params' => 'Λανθασμένες παράμετροι στο wfQuery()<br />
-Λειτουργία: $1<br />
-Αίτημα: $2',
 'viewsource' => 'Προβολή κώδικα',
 'viewsource-title' => 'Προβολή πηγαίου κώδικα για τη σελίδα $1',
 'actionthrottled' => 'Περιορισμένη ενέργεια',
@@ -811,7 +813,7 @@ $2',
 'gotaccount' => 'Έχετε ήδη λογαριασμό; $1.',
 'gotaccountlink' => 'Είσοδος',
 'userlogin-resetlink' => 'Ξεχάσατε τα στοιχεία εισόδου σας;',
-'userlogin-resetpassword-link' => 'Î\9eεÏ\87λαÏ\83αÏ\84ε Ï\84ον ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82',
+'userlogin-resetpassword-link' => 'Î\9eεÏ\87άÏ\83αÏ\84ε Ï\84ον ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ηÏ\82;',
 'helplogin-url' => 'Help:Σύνδεση',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Βοήθεια για τη σύνδεσή σας]]',
 'createacct-join' => 'Εισάγετε τα στοιχεία σας παρακάτω.',
@@ -903,7 +905,7 @@ $2',
 'user-mail-no-body' => 'Προσπάθησε να στείλει e-mail με ένα κενό ή αδικαιολόγητα σύντομο σώμα.',
 
 # Change password dialog
-'resetpass' => 'Αλλαγή κωδικού πρόσβασης',
+'changepassword' => 'Αλλαγή κωδικού',
 'resetpass_announce' => 'Συνδεθήκατε με ένα προσωρινό κωδικό, σταλμένο με e-mail. Για να ολοκληρώσετε την σύνδεση, πρέπει να στείλετε ένα νέο κωδικό εδώ:',
 'resetpass_text' => '<!-- Προσθέστε κείμενο εδώ -->',
 'resetpass_header' => 'Αλλαγή κωδικού πρόσβασης',
@@ -924,7 +926,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Κωδικός επαναφοράς',
 'passwordreset-text-one' => 'Συμπληρώστε την παρακάτω φόρμα για να επαναφέρετε τον κωδικό πρόσβασής σας.',
-'passwordreset-text-many' => '{{PLURAL:$1|ΣÏ\85μÏ\80ληÏ\81Ï\8eÏ\83Ï\84ε Î­Î½Î± Î±Ï\80Ï\8c Ï\84α Ï\80εδία Î³Î¹Î± Î½Î± ÎµÏ\80αναÏ\86έÏ\81εÏ\84ε Ï\84ον ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83ήÏ\82 Ï\83αÏ\82.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|ΣÏ\85μÏ\80ληÏ\81Ï\8eÏ\83Ï\84ε Î­Î½Î± Î±Ï\80Ï\8c Ï\84α Ï\80εδία Î³Î¹Î± Î½Î± Î»Î¬Î²ÎµÏ\84ε Ï\80Ï\81οÏ\83Ï\89Ï\81ινÏ\8c ÎºÏ\89δικÏ\8c Ï\80Ï\81Ï\8cÏ\83βαÏ\83η Î¼Î­Ï\83Ï\89 Î·Î»ÎµÎºÏ\84Ï\81ονικοÏ\8d Ï\84αÏ\87Ï\85δÏ\81ομείοÏ\85.}}',
 'passwordreset-legend' => 'Επαναφορά κωδικού πρόσβασης',
 'passwordreset-disabled' => 'Η επαναφορά κωδικού πρόσβασης έχει απενεργοποιηθεί σε αυτό το wiki',
 'passwordreset-emaildisabled' => "Τα χαρακτηριστικά ηλεκτρονικού ταχυδρομείου έχουν απενεργοποιηθεί σ' αυτό το wiki.",
@@ -1285,10 +1287,6 @@ Mπορείτε να δείτε αυτή την διαφορά. Λεπτομέρ
 'revisiondelete' => 'Διαγραφή/επαναφορά αναθεωρήσεων',
 'revdelete-nooldid-title' => 'Άκυρη έκδοση-στόχος',
 'revdelete-nooldid-text' => 'Είτε δεν έχετε ορίσει μία έκδοση-στόχο για να εκτελεστεί η λειτουργία σε αυτή, είτε η ορισμένη έκδοση δεν υπάρχει, είτε δοκιμάσετε να κρύψετε την τρέχουσα έκδοση.',
-'revdelete-nologtype-title' => 'Κανένας τύπος ιστορικού δεν δόθηκε',
-'revdelete-nologtype-text' => 'Δεν καθορίσατε επί ποίου τύπου ιστορικού να εφαρμοστεί αυτή η ενέργεια.',
-'revdelete-nologid-title' => 'Άκυρη καταχώρηση ιστορικού',
-'revdelete-nologid-text' => 'Είτε δεν καθορίσατε ένα συμβάν πρωτοκόλλου-στόχο για την εφαρμογή αυτής της ενέργειας, είτε η καθορισμένη καταχώρηση δεν υπάρχει.',
 'revdelete-no-file' => 'Το αρχείο που καθορίσατε δεν υπάρχει.',
 'revdelete-show-file-confirm' => 'Είστε σίγουροι ότι θέλετε να δείτε μία διεγραμμένη αναθεώρηση του αρχείου "<nowiki>$1</nowiki>" από τις $2 στις $3;',
 'revdelete-show-file-submit' => 'Ναι',
@@ -1320,8 +1318,6 @@ Mπορείτε να δείτε αυτή την διαφορά. Λεπτομέρ
 'logdelete-failure' => "'''Η ορατότητα του καταλόγου δεν μπορούσε να ρυθμιστεί:'''
 $1",
 'revdel-restore' => 'αλλαγή ορατότητας',
-'revdel-restore-deleted' => 'διαγεγραμμένες αναθεωρήσεις',
-'revdel-restore-visible' => 'ορατές αναθεωρήσεις',
 'pagehist' => 'Ιστορικό σελίδας',
 'deletedhist' => 'Διαγραμμένο ιστορικό',
 'revdelete-hide-current' => 'Σφάλμα κατά την απόκρυψη του αντικειμένου στις $2, $1: αυτή είναι η τωρινή έκδοση.
@@ -1399,12 +1395,8 @@ $1",
 # 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}} προηγουμένων',
@@ -1413,10 +1405,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Επόμενο $1 αποτέλεσμα|Επόμενα $1 αποτελέσματα}}',
 'shown-title' => 'Εμφάνιση $1 {{PLURAL:$1|αποτελέσματος|αποτελεσμάτων}} ανά σελίδα',
 'viewprevnext' => 'Εμφάνιση ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Επιλογές αναζήτησης',
 'searchmenu-exists' => "'''Υπάρχει μια σελίδα που ονομάζεται «[[:$1]]» σε αυτό το wiki.'''",
 'searchmenu-new' => "'''Δημιουργήστε τη σελίδα «[[:$1]]» σε αυτό το wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Πλοηγηθείτε σε σελίδες με αυτό το πρόθεμα]]',
 'searchprofile-articles' => 'Σελίδες περιεχομένου',
 'searchprofile-project' => 'Σελίδες Βοήθειας και Εγχειρήματος',
 'searchprofile-images' => 'Πολυμέσα',
@@ -1437,20 +1427,16 @@ $1",
 'search-interwiki-default' => '$1 αποτελέσματα:',
 'search-interwiki-more' => '(περισσότερα)',
 'search-relatedarticle' => 'Σχετικά',
-'mwsuggest-disable' => 'Απενεργοποίηση προτάσεων αναζήτησης',
 'searcheverything-enable' => 'Αναζήτηση σε όλες τις περιοχές ονομάτων',
 'searchrelated' => 'σχετικά',
 'searchall' => 'όλα',
 'showingresults' => "Δείτε παρακάτω μέχρι τα {{PLURAL:$1|'''1'''αποτέλεσμα|'''$1''' αποτελέσματα}} ξεκινώντας με #'''$2'''.",
 'showingresultsnum' => "Εμφάνιση {{PLURAL:$3|'''1''' αποτελέσματος|'''$3''' αποτελεσμάτων}} αρχίζοντας με #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Αποτέλεσμα '''$1''' από '''$3'''|Αποτελέσματα '''$1 - $2''' από '''$3'''}} για '''$4'''",
-'nonefound' => "'''Σημείωση''': Οι ανεπιτυχείς αναζητήσεις οφείλονται συνήθως στο ότι έχουμε συμπεριλάβει στα κριτήρια μόνο συγκεκριμένους ονοματοχώρους. Δοκιμάστε να προσθέσετε το πρόθεμα ''all:'' - ''όλα:'' στην αναζήτηση για να ψάξετε σε όλα τα περιεχόμενα (συμπεριλαμβανόμενων των σελίδων συζητήσεως, προτύπων κτλ.) ή χρησιμοποιήστε τον επιθυμητό ονοματοχώρο.",
 'search-nonefound' => 'Δεν υπάρχουν αποτελέσματα που να ικανοποιούν το ερώτημα.',
-'powersearch' => 'Αναλυτική αναζήτηση',
 'powersearch-legend' => 'Αναλυτική αναζήτηση',
 'powersearch-ns' => 'Αναζήτηση στις περιοχές ονομάτων:',
 'powersearch-redir' => 'Κατάλογος ανακατευθύνσεων',
-'powersearch-field' => 'Αναζήτηση για',
 'powersearch-togglelabel' => 'Έλεγχος:',
 'powersearch-toggleall' => 'Όλες',
 'powersearch-togglenone' => 'Καμία',
@@ -1462,7 +1448,6 @@ $1",
 'preferences' => 'Προτιμήσεις',
 'mypreferences' => 'Προτιμήσεις',
 'prefs-edits' => 'Αριθμός επεξεργασιών:',
-'changepassword' => 'Αλλαγή κωδικού',
 'prefs-skin' => 'Οπτική οργάνωση (skin)',
 'skin-preview' => 'Προεπισκόπηση',
 'datedefault' => 'Χωρίς προτίμηση',
@@ -1485,13 +1470,11 @@ $1",
 'prefs-email' => 'Επιλογές e-mail',
 'prefs-rendering' => 'Εμφάνιση',
 'saveprefs' => 'Αποθήκευση',
-'resetprefs' => 'Επαναφορά προτιμήσεων',
 'restoreprefs' => 'Επαναφορά όλων των προεπιλεγμένων ρυθμίσεων',
 'prefs-editing' => 'Επεξεργασία',
 'rows' => 'Σειρές',
 'columns' => 'Στήλες',
 'searchresultshead' => 'Αποτελέσματα αναζήτησης/Ρυθμίσεις',
-'resultsperpage' => 'Αποτελέσματα ανά σελίδα',
 'stub-threshold' => 'Κατώφλι για μορφοποίηση <span class="mw-stub-example">συνδέσμου επεκτάσιμου</span>:',
 'stub-threshold-disabled' => 'Απενεργοποιημένο',
 'recentchangesdays' => 'Ημέρες προς εμφάνιση στις πρόσφατες αλλαγές:',
@@ -1506,7 +1489,6 @@ $1",
 'localtime' => 'Εμφάνιση τοπικής ώρας:',
 'timezoneuseserverdefault' => 'Χρήση της προεπιλογής του wiki ($1)',
 'timezoneuseoffset' => 'Ἀλλη (καθορισμός της διαφοράς)',
-'timezoneoffset' => 'Διαφορά ωρών¹:',
 'servertime' => 'Η ώρα του διακομιστή:',
 'guesstimezone' => 'Συμπλήρωση μέσω του browser',
 'timezoneregion-africa' => 'Αφρική',
@@ -1755,8 +1737,9 @@ $1",
 'recentchanges-label-minor' => 'Αυτή είναι μια μικροαλλαγή',
 'recentchanges-label-bot' => 'Αυτή η επεξεργασία έγινε από ένα ρομπότ',
 'recentchanges-label-unpatrolled' => 'Αυτή η επεξεργασία δεν έχει ελεγχθεί ακόμα',
-'recentchanges-legend-newpage' => '$1 - νέα σελίδα',
-'rcnote' => "Παρακάτω {{PLURAL:$1|υπάρχει '''1''' αλλαγή|υπάρχουν οι τελευταίες '''$1''' αλλαγές}} στο διάστημα {{PLURAL:$2|της τελευταίας ημέρας|των τελευταίων '''$2''' ημερών}}, από τις $5, $4 και εξής.",
+'recentchanges-label-plusminus' => 'Μεταβολή του μεγέθους της σελίδας σε bytes',
+'recentchanges-legend-heading' => "'''Υπόμνημα:'''",
+'recentchanges-legend-newpage' => '(δείτε [[Special:NewPages|Νέες σελίδες]])',
 'rcnotefrom' => "Παρακάτω είναι οι αλλαγές από τις '''$2''' (εμφανίζονται μέχρι '''$1''').",
 'rclistfrom' => 'Εμφάνιση νέων αλλαγών αρχίζοντας από $1',
 'rcshowhideminor' => '$1 μικροεπεξεργασιών',
@@ -2217,12 +2200,12 @@ $1',
 'unusedimages' => 'Αχρησιμοποίητες εικόνες',
 'popularpages' => 'Δημοφιλείς σελίδες',
 'wantedcategories' => 'Επιθυμητές κατηγορίες',
-'wantedpages' => 'Î\95Ï\80ιθÏ\85μηÏ\84ές σελίδες',
+'wantedpages' => 'Î\96ηÏ\84οÏ\8dμενες σελίδες',
 'wantedpages-badtitle' => 'Μη εγκυρός τίτλος στο σύνολο αποτελέσματος: $1',
-'wantedfiles' => 'Î\95Ï\80ιθÏ\85μηÏ\84ά αρχεία',
+'wantedfiles' => 'Î\96ηÏ\84οÏ\8dμενα αρχεία',
 'wantedfiletext-cat' => 'Τα ακόλουθα αρχεία χρησιμοποιούνται αλλά δεν υπάρχουν. Αρχεία από εξωτερικά αποθετήρια ενδέχεται να παρατίθενται παρότι υπάρχουν. Κάθε τέτοιες λανθασμένες αναφορές θα <del>διαγραμμίζονται</del>. Επιπλέον, σελίδες που ενσωματώνουν αρχεία που δεν υπάρχουν παρατίθενται στο [[:$1]].',
 'wantedfiletext-nocat' => 'Τα ακόλουθα αρχεία χρησιμοποιούνται αλλά δεν υπάρχουν. Πέρα από τα υπάρχοντα ενδέχεται να έχουν καταχωριστεί και αρχεία από εξωτερικές πηγές λογισμικού. Τέτοιες ψευδο-υπαρκτές καταχωρίσεις θα εμφανίζονται <del>διαγραμμισμένες</del>.',
-'wantedtemplates' => 'Î\95Ï\80ιθÏ\85μηÏ\84ά πρότυπα',
+'wantedtemplates' => 'Î\96ηÏ\84οÏ\8dμενα πρότυπα',
 'mostlinked' => 'Οι σελίδες με τις περισσότερες αναφορές',
 'mostlinkedcategories' => 'Περισσότερο χρησιμοποιούμενες κατηγορίες',
 'mostlinkedtemplates' => 'Περισσότερο χρησιμοποιούμενα πρότυπα',
@@ -2239,10 +2222,8 @@ $1',
 'protectedpages' => 'Προστατευμένες σελίδες',
 'protectedpages-indef' => 'Προστασίες επαόριστον μόνο',
 'protectedpages-cascade' => 'Μόνο διαδοχικές προστασίες',
-'protectedpagestext' => 'Οι ακόλουθες σελίδες είναι προστατευμένες από μετακίνηση ή επεξεργασία',
 'protectedpagesempty' => 'Καμία σελίδα με αυτές τις παραμέτρους δεν είναι προς το παρόν προστατευμένη.',
 'protectedtitles' => 'Προστατευμένοι τίτλοι',
-'protectedtitlestext' => 'Οι επόμενοι τίτλοι είναι προστατευμένοι και δεν μπορούν να δημιουργηθούν',
 'protectedtitlesempty' => 'Δεν υπάρχουν προστατευμένοι τίτλοι με αυτές τις παραμέτρους.',
 'listusers' => 'Κατάλογος χρηστών',
 'listusers-editsonly' => 'Εμφάνιση μόνο των χρηστών με επεξεργασίες',
@@ -2293,9 +2274,6 @@ $1',
 'allpagesto' => 'Εμφάνιση σελίδων που λήγουν σε:',
 'allarticles' => 'Όλες οι σελίδες',
 'allinnamespace' => 'Όλες οι σελίδες (στον ονοματοχώρο $1)',
-'allnotinnamespace' => 'Όλες οι σελίδες (που δεν βρίσκονται στην περιοχή $1)',
-'allpagesprev' => 'Προηγούμενες',
-'allpagesnext' => 'Επόμενες',
 'allpagessubmit' => 'Μετάβαση',
 'allpagesprefix' => 'Προβολή των σελίδων με πρόθεμα:',
 'allpagesbadtitle' => 'Ο δοσμένος τίτλος σελίδας ήταν άκυρος ή είχε ένα διαγλωσσικό ή δια-wiki πρόθεμα. Μπορεί να περιέχει έναν ή περισσότερους χαρακτήρες οι οποίοι δεν μπορούν να χρησιμοποιοθούν σε τίτλους.',
@@ -2631,7 +2609,6 @@ $UNWATCHURL
 'undeletebtn' => 'Επαναφορά',
 'undeletelink' => 'προβολή/επαναφορά',
 'undeleteviewlink' => 'προβολή',
-'undeletereset' => 'Ανανέωση',
 'undeleteinvert' => 'Ανατροπή επιλογής',
 'undeletecomment' => 'Αιτία:',
 'undeletedrevisions' => '{{PLURAL:$1|τροποποίηση|τροποποιήσεις}} αποκαταστάθηκαν',
@@ -2718,7 +2695,6 @@ $1',
 'block' => 'Φραγή χρήστη',
 'unblock' => 'Κατάργηση αποκλεισμού χρήστη',
 'blockip' => 'Φραγή χρήστη ή διεύθυνσης IP',
-'blockip-title' => 'Φραγή του χρήστη',
 'blockip-legend' => 'Φραγή του χρήστη',
 'blockiptext' => 'Χρησιμοποιήστε την παρακάτω φόρμα για να εμποδίσετε παρεμβάσεις στο κείμενο από μια συγκεκριμένη διεύθυνση IP ή όνομα χρήστη.
 Το μέτρο αυτό πρέπει να λαμβάνεται μόνο σε περιπτώσεις βανδαλισμού σελίδων και πάντα σύμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].
@@ -2726,7 +2702,6 @@ $1',
 'ipadressorusername' => 'Διεύθυνση IP ή όνομα χρήστη',
 'ipbexpiry' => 'Λήξη',
 'ipbreason' => 'Αιτία:',
-'ipbreasonotherlist' => 'Άλλος λόγος',
 'ipbreason-dropdown' => '*Συχνοί λόγοι φραγής
 ** Εισαγωγή λανθασμένων πληροφοριών
 ** Αφαίρεση περιεχομένου από σελίδες
@@ -2742,8 +2717,6 @@ $1',
 'ipbsubmit' => 'Φραγή αυτού του χρήστη',
 'ipbother' => 'Άλλη ώρα',
 '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',
-'ipbotheroption' => 'άλλη',
-'ipbotherreason' => 'Άλλος/επιπλέον λόγος:',
 'ipbhidename' => 'Απόκρυψη ονόματος χρήστη από επεξεργασίες και καταλόγους',
 'ipbwatchuser' => "Παρακολούθηση των σελίδων 'χρήστη' και 'συζήτησης χρήστη' αυτού του χρήστη",
 'ipb-disableusertalk' => 'Αποτρέψτε αυτό το χρήστη από την επεξεργασία της δική του σελίδας συζήτησης, ενώ είναι αποκλεισμένος',
@@ -2831,7 +2804,6 @@ $1',
 'proxyblockreason' => 'Η διεύθυνση IP σας έχει υποστεί φραγή γιατί είναι open proxy. Παρακαλούμε επικοινωνείστε με τον παροχέα υπηρεσιών Διαδικτύου που χρησιμοποιείτε ή με την τεχνική υποστήριξη, για να θέσετε υπ΄ όψη τους αυτό το σοβαρό θέμα ασφάλειας.',
 'sorbsreason' => 'Η διεύθυνση IP σας έχει χαρακτηρισθεί ως open proxy στο DNSBL.',
 'sorbs_create_account_reason' => 'Η διεύθυνση IP σας έχει χαρακτηρισθεί open proxy στο DNSBL. Δεν μπορείτε να δημιουργήσετε λογαριασμό χρήστη.',
-'cant-block-while-blocked' => 'Δεν μπορείτε να φράξετε άλλους χρήστες ενώ είστε φραγμένος/η.',
 'cant-see-hidden-user' => 'Ο χρήστης που προσπαθείτε να αποκλείσετε έχει ήδη αποκλειστεί και αποκρυφτεί.
 Δεδομένου ότι δεν έχετε το δικαίωμα hideuser, δεν μπορείτε να δείτε ή να επεξεργαστείτε την φραγή του χρήστη.',
 'ipbblocked' => 'Δεν μπορείτε να βάλετε ή να αναιρέσετε φραγή σε άλλους χρήστες, επειδή είστε εσείς υπό φραγή',
@@ -2892,7 +2864,6 @@ $1',
 Σε αυτές τις περιπτώσεις, θα πρέπει να μετακινήσετε (ή να ενσωματώσετε αν το θέλετε) τη σελίδα με αντιγραφή-και-επικόλληση.",
 'movearticle' => 'Μετακίνηση σελίδας',
 'moveuserpage-warning' => "'''Προσοχή:''' Ετοιμάζεστε να μετακινήσετε μια σελίδα χρήστη. Σημειώστε παρακαλώ ότι θα μετακινηθεί μόνο η σελίδα και ο χρήστης '''δεν''' θα μετονομαστεί.",
-'movenologin' => 'Δεν έχετε συνδεθεί.',
 'movenologintext' => 'Για να μετακινήσετε μια σελίδα πρέπει να είστε εγγεγραμένος χρήστης και [[Special:UserLogin|να έχετε συνδεθεί]] στο Wiκi.',
 'movenotallowed' => 'Δεν έχετε άδεια να μετακινείτε σελίδες.',
 'movenotallowedfile' => 'Δεν έχετε άδεια να μετακινείτε αρχεία.',
@@ -2907,8 +2878,6 @@ $1',
 'movepage-moved-noredirect' => 'Η δημιουργία ανακατεύθυνσης παρεμποδίστηκε.',
 'articleexists' => 'Υπάρχει ήδη σελίδα με αυτό το όνομα, ή το όνομα που επιλέξατε δεν είναι αποδεκτό. Παρακαλούμε δώστε άλλο όνομα στη σελίδα.',
 'cantmove-titleprotected' => "Δεν μπορείτε να μετακινήσετε μια σελίδα σ' αυτή τη θέση διότι έχει απαγορευθεί η δημιουργία αυτού του τίτλου",
-'talkexists' => "Η ίδια η σελίδα μετακινήθηκε επιτυχώς αλλά όχι και η σελίδα συζήτησης, λόγω του ότι υπάρχει ήδη άλλη σελίδα συζήτησης κάτω από το νέο τίτλο. Παρακαλούμε ενοποιήστε τις δύο σελίδες με 'αντιγραφή-και-επικόλληση'.",
-'movedto' => 'Μετακινήθηκε στο',
 'movetalk' => 'Μετακίνηση της σελίδας "συζήτηση" (εάν υπάρχει)',
 'move-subpages' => 'Μετακινήστε όλες τις υποσελίδες (μέχρι την $1)',
 'move-talk-subpages' => 'Μετακινήστε όλες τις υποσελίδες της σελίδας συζήτησης (μέχρι $1)',
@@ -3742,15 +3711,10 @@ $1',
 'exif-urgency-high' => 'Υψηλή ($1)',
 'exif-urgency-other' => 'Προτεραιότητα που ορίστηκε από το χρήστη ($1)',
 
-# External editor support
-'edit-externally' => 'Επεξεργαστείτε αυτό το αρχείο χρησιμοποιώντας κάποια εξωτερική εφαρμογή',
-'edit-externally-help' => '(Βλ. [https://www.mediawiki.org/wiki/Manual:External_editors οδηγίες εγκατάστασης] για περισσότερες πληροφορίες)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'όλες',
 'namespacesall' => 'όλοι',
 'monthsall' => 'όλα',
-'limitall' => 'όλες',
 
 # Email address confirmation
 'confirmemail' => 'Επιβεβαίωση διεύθυνσης e-mail',
@@ -3771,7 +3735,6 @@ $1',
 'confirmemail_needlogin' => 'Χρειάζετε να $1 για να επιβεβαιώσετε τη διεύθυνση e-mail σας.',
 'confirmemail_success' => 'Η ηλεκτρονική σας διεύθυνση σας επαληθεύτηκε. Μπορείτε πλέον να συνδεθείτε και να απολαύσετε τις δυνατότητες του Wiκi.',
 'confirmemail_loggedin' => 'Η ηλεκτρονική σας διεύθυνση επαληθεύτηκε.',
-'confirmemail_error' => 'Παρουσιάστηκε λάθος κατά την αποθήκευση των ρυθμίσεών σας.',
 'confirmemail_subject' => 'Επαλήθευση ηλεκτρονικής διεύθυνσης του {{SITENAME}}',
 'confirmemail_body' => 'Κάποιος, πιθανότατα εσείς, από τη διεύθυνση IP $1,
 δημιούργησε λογαριασμό χρήστη «$2»
@@ -4017,7 +3980,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'Σύγκριση σελίδων',
-'compare-selector' => 'Συγκρίνετε τις αναθεωρήσεις των σελίδων',
 'compare-page1' => 'Σελίδα 1',
 'compare-page2' => 'Σελίδα 2',
 'compare-rev1' => 'Αναθεώρηση 1',
index b0fd2ad..ee84b91 100644 (file)
@@ -38,9 +38,6 @@ $messages = array(
 
 'mytalk' => 'I mê discussiòun',
 
-# Cologne Blue skin
-'qbspecialpages' => 'Pagini specièli',
-
 'returnto' => 'Tórna a $1.',
 'help' => 'Per quî rivê da pôch',
 'history_short' => 'Stôria',
@@ -53,7 +50,7 @@ $messages = array(
 'talk' => 'Discussiòun',
 'jumptosearch' => 'Zerca',
 
-# 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).
+# 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).
 'currentevents' => 'Fât e prugèt ed tót',
 'currentevents-url' => 'Project:Prugèt_ed_tót',
 'helppage' => 'Help:Introduzione',
@@ -91,14 +88,14 @@ Nutêv ca alcuni pàgini i putrèbber cuntinuèr a cràdder ca vueter a-sîv dis
 'yourdiff' => 'Differèinzi',
 'templatesused' => '{{PLURAL:$1|Modêl|Modêl}} usèdi in sta pàgina:',
 
-# Search results
-'searchhelp-url' => 'Help:Introduzione',
-
 # Preferences page
 'mypreferences' => 'AL mê preferèinzi',
 'yourrealname' => 'Al tô vér nàmm:',
 'yourlanguage' => 'Léngua:',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Regestér di nōv utèint',
+
 # Recent changes
 'recentchanges' => 'Ûltem cambiamèint',
 'diff' => 'diferèinzi',
@@ -129,9 +126,6 @@ Nutêv ca alcuni pàgini i putrèbber cuntinuèr a cràdder ca vueter a-sîv dis
 # Special:AllPages
 'allpages' => 'Tôt al pàgin',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Regestér di nōv utèint',
-
 # Watchlist
 'watchlist' => 'Al còsi ca guèrd',
 'watch' => 'Tîn a drê',
index 5b48e7d..41a38e4 100644 (file)
@@ -363,6 +363,7 @@ $magicWords = array(
        'numberingroup'           => array( 1,    'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'          => array( 1,    '__STATICREDIRECT__' ),
        'protectionlevel'         => array( 1,    'PROTECTIONLEVEL' ),
+       'cascadingsources'        => array( 1,    'CASCADINGSOURCES' ),
        'formatdate'              => array( 0,    'formatdate', 'dateformat' ),
        'url_path'                => array( 0,    'PATH' ),
        'url_wiki'                => array( 0,    'WIKI' ),
@@ -677,7 +678,6 @@ future releases. Also note that since each list value is wrapped in a unique
 'tog-minordefault'            => 'Mark all edits minor by default',
 'tog-previewontop'            => 'Show preview before edit box',
 'tog-previewonfirst'          => 'Show preview on first edit',
-'tog-nocache'                 => 'Disable browser page caching',
 'tog-enotifwatchlistpages'    => 'Email me when a page or file on my watchlist is changed',
 'tog-enotifusertalkpages'     => 'Email me when my user talk page is changed',
 'tog-enotifminoredits'        => 'Email me also for minor edits of pages and files',
@@ -815,7 +815,6 @@ future releases. Also note that since each list value is wrapped in a unique
 'qbedit'         => 'Edit',
 'qbpageoptions'  => 'This page',
 'qbmyoptions'    => 'My pages',
-'qbspecialpages' => 'Special pages',
 'faq'            => 'FAQ',
 'faqpage'        => 'Project:FAQ',
 'sitetitle'      => '{{SITENAME}}', # do not translate or duplicate this message to other languages
@@ -939,8 +938,8 @@ See [[Special:Version|version page]].',
 'pagetitle-view-mainpage'      => '{{SITENAME}}', # only translate this message to other languages if you have to change it
 'backlinksubtitle'             => '← $1', # only translate this message to other languages if you have to change it
 'retrievedfrom'                => 'Retrieved from "$1"',
-'youhavenewmessages'           => 'You have $1 ($2).',
-'youhavenewmessagesfromusers'  => 'You have $1 from {{PLURAL:$3|another user|$3 users}} ($2).',
+'youhavenewmessages'           => '{{PLURAL:$3|You have}} $1 ($2).',
+'youhavenewmessagesfromusers'  => '{{PLURAL:$4|You have}} $1 from {{PLURAL:$3|another user|$3 users}} ($2).',
 'youhavenewmessagesmanyusers'  => 'You have $1 from many users ($2).',
 'newmessageslinkplural'        => '{{PLURAL:$1|a new message|999=new messages}}',
 'newmessagesdifflinkplural'    => 'last {{PLURAL:$1|change|999=changes}}',
@@ -1051,9 +1050,6 @@ It may contain one or more characters that cannot be used in titles.',
 'perfcachedts'                  => 'The following data is cached, and was last updated $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates'          => 'Updates for this page are currently disabled.
 Data here will not presently be refreshed.',
-'wrong_wfQuery_params'          => 'Incorrect parameters to wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource'                    => 'View source',
 'viewsource-title'              => 'View source for $1',
 'actionthrottled'               => 'Action throttled',
@@ -1200,7 +1196,7 @@ Please try again.',
 'passwordtooshort'                => 'Passwords must be at least {{PLURAL:$1|1 character|$1 characters}}.',
 'password-name-match'             => 'Your password must be different from your username.',
 'password-login-forbidden'        => 'The use of this username and password has been forbidden.',
-'mailmypassword'                  => 'Email new password',
+'mailmypassword'                  => 'Reset password',
 'passwordremindertitle'           => 'New temporary password for {{SITENAME}}',
 'passwordremindertext'            => 'Someone (probably you, from IP address $1) requested a new
 password for {{SITENAME}} ($4). A temporary password for user
@@ -1238,6 +1234,7 @@ No email will be sent for any of the following features.',
 Please enter a well-formatted address or empty that field.',
 'cannotchangeemail'               => 'Account email addresses cannot be changed on this wiki.',
 'emaildisabled'                   => 'This site cannot send emails.',
+'emailsender'                     => '{{SITENAME}}', # do not translate or duplicate this message to other languages
 'accountcreated'                  => 'Account created',
 'accountcreatedtext'              => 'The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.',
 'createaccount-title'             => 'Account creation for {{SITENAME}}',
@@ -1269,7 +1266,8 @@ If you choose to provide it, this will be used for giving the user attribution f
 'user-mail-no-body'      => 'Tried to send email with an empty or unreasonably short body.',
 
 # Change password dialog
-'resetpass'                 => 'Change password',
+'changepassword'            => 'Change password',
+'changepassword-summary'    => '', # do not translate or duplicate this message to other languages
 'resetpass_announce'        => 'You logged in with a temporary emailed code.
 To finish logging in, you must set a new password here:',
 'resetpass_text'            => '<!-- Add text here -->', # only translate this message to other languages if you have to change it
@@ -1290,8 +1288,8 @@ You may have already successfully changed your password or requested a new tempo
 
 # Special:PasswordReset
 'passwordreset'                    => 'Reset password',
-'passwordreset-text-one'           => 'Complete this form to reset your password.',
-'passwordreset-text-many'          => '{{PLURAL:$1|Fill one of the fields to reset your password.}}',
+'passwordreset-text-one'           => 'Complete this form to receive a temporary password via email.',
+'passwordreset-text-many'          => '{{PLURAL:$1|Fill in one of the fields to receive a temporary password via email.}}',
 'passwordreset-legend'             => 'Reset password',
 'passwordreset-disabled'           => 'Password resets have been disabled on this wiki.',
 'passwordreset-emaildisabled'      => 'Email features have been disabled on this wiki.',
@@ -1425,7 +1423,7 @@ Note that you may not use the \"email this user\" feature unless you have a vali
 Your current IP address is $3, and the block ID is #$5.
 Please include all above details in any queries you make.",
 'blockednoreason'                  => 'no reason given',
-'whitelistedittext'                => 'You have to $1 to edit pages.',
+'whitelistedittext'                => 'Please $1 to edit pages.',
 'confirmedittext'                  => 'You must confirm your email address before editing pages.
 Please set and validate your email address through your [[Special:Preferences|user preferences]].',
 'nosuchsectiontitle'               => 'Cannot find section',
@@ -1433,7 +1431,7 @@ Please set and validate your email address through your [[Special:Preferences|us
 It may have been moved or deleted while you were viewing the page.',
 'loginreqtitle'                    => 'Login required',
 'loginreqlink'                     => 'log in',
-'loginreqpagetext'                 => 'You must $1 to view other pages.',
+'loginreqpagetext'                 => 'Please $1 to view other pages.',
 'accmailtitle'                     => 'Password sent',
 'accmailtext'                      => "A randomly generated password for [[User talk:$1|$1]] has been sent to $2. It can be changed on the ''[[Special:ChangePassword|change password]]'' page upon logging in.",
 'newarticle'                       => '(New)',
@@ -1580,6 +1578,8 @@ It already exists.',
 'content-not-allowed-here'         => '"$1" content is not allowed on page [[$2]]',
 'editwarning-warning'              => 'Leaving this page may cause you to lose any changes you have made.
 If you are logged in, you can disable this warning in the "Editing" section of your preferences.',
+'editpage-notsupportedcontentformat-title'=> 'Content format not supported',
+'editpage-notsupportedcontentformat-text' => 'The content format $1 is not supported by the content model $2.',
 
 # Content models
 'content-model-wikitext'   => 'wikitext',
@@ -1619,6 +1619,9 @@ Please check the comparison below to verify that this is what you want to do, an
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Cannot create account',
+'cantcreateaccount-range-text' => "Account creation from IP addresses in the range '''$1''', which includes your IP address ('''$4'''), has been blocked by [[User:$3|$3]].
+
+The reason given by $3 is ''$2''",
 'cantcreateaccount-text' => "Account creation from this IP address ('''$1''') has been blocked by [[User:$3|$3]].
 
 The reason given by $3 is ''$2''",
@@ -1694,10 +1697,6 @@ You can view this diff; details can be found in the [{{fullurl:{{#Special:Log}}/
 'revdelete-nooldid-title'     => 'Invalid target revision',
 'revdelete-nooldid-text'      => 'You have either not specified a target revision(s) to perform this
 function, the specified revision does not exist, or you are attempting to hide the current revision.',
-'revdelete-nologtype-title'   => 'No log type given',
-'revdelete-nologtype-text'    => 'You have not specified a log type to perform this action on.',
-'revdelete-nologid-title'     => 'Invalid log entry',
-'revdelete-nologid-text'      => 'You have either not specified a target log event to perform this function or the specified entry does not exist.',
 'revdelete-no-file'           => 'The file specified does not exist.',
 'revdelete-show-file-confirm' => 'Are you sure you want to view a deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
 'revdelete-show-file-submit'  => 'Yes',
@@ -1707,8 +1706,8 @@ function, the specified revision does not exist, or you are attempting to hide t
 Other administrators on {{SITENAME}} will still be able to access the hidden content and can undelete it again through this same interface, unless additional restrictions are set.",
 'revdelete-confirm'           => 'Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
 'revdelete-suppress-text'     => "Suppression should '''only''' be used for the following cases:
-* Potentially libelous information
-* Inappropriate personal information
+* potentially libelous information
+* inappropriate personal information
 *: ''home addresses and telephone numbers, national identification numbers, etc.''",
 'revdelete-legend'            => 'Set visibility restrictions',
 'revdelete-hide-text'         => 'Revision text',
@@ -1731,8 +1730,6 @@ $1",
 'logdelete-failure'           => "'''Log visibility could not be set:'''
 $1",
 'revdel-restore'              => 'change visibility',
-'revdel-restore-deleted'      => 'deleted revisions',
-'revdel-restore-visible'      => 'visible revisions',
 'pagehist'                    => 'Page history',
 'deletedhist'                 => 'Deleted history',
 'revdelete-hide-current'      => 'Error hiding the item dated $2, $1: This is the current revision.
@@ -1814,12 +1811,8 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'search-summary'                   => '', # do not translate or duplicate this message to other languages
 'searchresults'                    => 'Search results',
 'searchresults-title'              => 'Search results for "$1"',
-'searchresulttext'                 => 'For more information about searching {{SITENAME}}, see [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle'                   => 'You searched for \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
-'searchsubtitleinvalid'            => "You searched for '''$1'''",
 'toomanymatches'                   => 'Too many matches were returned, please try a different query',
 'titlematches'                     => 'Page title matches',
-'notitlematches'                   => 'No page title matches',
 'textmatches'                      => 'Page text matches',
 'notextmatches'                    => 'No page text matches',
 'prevn'                            => 'previous {{PLURAL:$1|$1}}',
@@ -1828,11 +1821,9 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'nextn-title'                      => 'Next $1 {{PLURAL:$1|result|results}}',
 'shown-title'                      => 'Show $1 {{PLURAL:$1|result|results}} per page',
 'viewprevnext'                     => 'View ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend'                => 'Search options',
-'searchmenu-exists'                => "'''There is a page named \"[[:\$1]]\" on this wiki.'''",
-'searchmenu-new'                   => "'''Create the page \"[[:\$1]]\" on this wiki!'''",
+'searchmenu-exists'                => "'''There is a page named \"[[:\$1]]\" on this wiki.''' {{PLURAL:$2|0=|See also the other search results found.}}",
+'searchmenu-new'                   => "'''Create the page \"[[:\$1]]\" on this wiki!''' {{PLURAL:$2|0=|See also the page found with your search.|See also the search results found.}}",
 'searchmenu-new-nocreate'          => '', # do not translate or duplicate this message to other languages
-'searchmenu-prefix'                => '[[Special:PrefixIndex/$1|Browse pages with this prefix]]',
 'searchprofile-articles'           => 'Content pages',
 'searchprofile-project'            => 'Help and Project pages',
 'searchprofile-images'             => 'Multimedia',
@@ -1854,21 +1845,16 @@ Details can be found in the [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'search-interwiki-custom'          => '', # do not translate or duplicate this message to other languages
 'search-interwiki-more'            => '(more)',
 'search-relatedarticle'            => 'Related',
-'mwsuggest-disable'                => 'Disable search suggestions',
 'searcheverything-enable'          => 'Search in all namespaces',
 'searchrelated'                    => 'related',
 'searchall'                        => 'all',
 'showingresults'                   => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
 'showingresultsnum'                => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
 'showingresultsheader'             => "{{PLURAL:$5|Result '''$1''' of '''$3'''|Results '''$1 - $2''' of '''$3'''}} for '''$4'''",
-'nonefound'                        => "'''Note:''' Only some namespaces are searched by default.
-Try prefixing your query with ''all:'' to search all content (including talk pages, templates, etc.), or use the desired namespace as prefix.",
 'search-nonefound'                 => 'There were no results matching the query.',
-'powersearch'                      => 'Advanced search',
 'powersearch-legend'               => 'Advanced search',
 'powersearch-ns'                   => 'Search in namespaces:',
 'powersearch-redir'                => 'List redirects',
-'powersearch-field'                => 'Search for',
 'powersearch-togglelabel'          => 'Check:',
 'powersearch-toggleall'            => 'All',
 'powersearch-togglenone'           => 'None',
@@ -1899,9 +1885,7 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
 'preferences-summary'           => '', # do not translate or duplicate this message to other languages
 'mypreferences'                 => 'Preferences',
 'prefs-edits'                   => 'Number of edits:',
-'prefsnologintext2'             => 'Please $1 to set user preferences.',
-'changepassword'                => 'Change password',
-'changepassword-summary'        => '', # do not translate or duplicate this message to other languages
+'prefsnologintext2'             => 'Please $1 to change your preferences.',
 'prefs-skin'                    => 'Skin',
 'skin-preview'                  => 'Preview',
 'datedefault'                   => 'No preference',
@@ -1924,13 +1908,11 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
 'prefs-email'                   => 'Email options',
 'prefs-rendering'               => 'Appearance',
 'saveprefs'                     => 'Save',
-'resetprefs'                    => 'Clear unsaved changes',
 'restoreprefs'                  => 'Restore all default settings (in all sections)',
 'prefs-editing'                 => 'Editing',
 'rows'                          => 'Rows:',
 'columns'                       => 'Columns:',
 'searchresultshead'             => 'Search',
-'resultsperpage'                => 'Hits per page:',
 'stub-threshold'                => 'Threshold for <a href="#" class="stub">stub link</a> formatting (bytes):',
 'stub-threshold-disabled'       => 'Disabled',
 'recentchangesdays'             => 'Days to show in recent changes:',
@@ -1945,7 +1927,6 @@ Anyone who knows it will be able to read your watchlist, so do not share it.
 'localtime'                     => 'Local time:',
 'timezoneuseserverdefault'      => 'Use wiki default ($1)',
 'timezoneuseoffset'             => 'Other (specify offset)',
-'timezoneoffset'                => 'Offset¹:',
 'servertime'                    => 'Server time:',
 'guesstimezone'                 => 'Fill in from browser',
 'timezoneregion-africa'         => 'Africa',
@@ -2019,6 +2000,7 @@ Your email address is not revealed when other users contact you.',
 'prefs-tokenwatchlist'          => 'Token',
 'prefs-diffs'                   => 'Diffs',
 'prefs-help-prefershttps'       => 'This preference will take effect on your next login.',
+'prefs-tabs-navigation-hint'    => 'Tip: You can use the left and right arrow keys to navigate between the tabs in the tabs list.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid'   => 'Email address appears valid',
@@ -2210,14 +2192,14 @@ Your email address is not revealed when other users contact you.',
 'recentchanges-label-bot'           => 'This edit was performed by a bot',
 'recentchanges-label-unpatrolled'   => 'This edit has not yet been patrolled',
 'recentchanges-label-plusminus'     => 'The page size changed by this number of bytes',
+'recentchanges-legend-heading'      => "'''Legend:'''",
 'recentchanges-legend-newpage'      => '(also see [[Special:NewPages|list of new pages]])',
 'recentchanges-legend-plusminus'    => "(''±123'')",
-'rcnote'                            => "Below {{PLURAL:$1|is '''1''' change|are the last '''$1''' changes}} in the last {{PLURAL:$2|day|'''$2''' days}}, as of $5, $4.",
 'rcnotefrom'                        => "Below are the changes since '''$2''' (up to '''$1''' shown).",
 'rclistfrom'                        => 'Show new changes starting from $1',
 'rcshowhideminor'                   => '$1 minor edits',
 'rcshowhidebots'                    => '$1 bots',
-'rcshowhideliu'                     => '$1 logged-in users',
+'rcshowhideliu'                     => '$1 registered users',
 'rcshowhideanons'                   => '$1 anonymous users',
 'rcshowhidepatr'                    => '$1 patrolled edits',
 'rcshowhidemine'                    => '$1 my edits',
@@ -2257,7 +2239,7 @@ Pages on [[Special:Watchlist|your watchlist]] are '''bold'''.",
 'reuploaddesc'                => 'Cancel upload and return to the upload form',
 'upload-tryagain'             => 'Submit modified file description',
 'uploadnologin'               => 'Not logged in',
-'uploadnologintext'           => 'You must $1 to upload files.',
+'uploadnologintext'           => 'Please $1 to upload files.',
 'upload_directory_missing'    => 'The upload directory ($1) is missing and could not be created by the webserver.',
 'upload_directory_read_only'  => 'The upload directory ($1) is not writable by the webserver.',
 'uploaderror'                 => 'Upload error',
@@ -2347,6 +2329,8 @@ If you still want to upload your file, please go back and use a new name.
 'file-exists-duplicate'       => 'This file is a duplicate of the following {{PLURAL:$1|file|files}}:',
 'file-deleted-duplicate'      => "A file identical to this file ([[:$1]]) has previously been deleted.
 You should check that file's deletion history before proceeding to re-upload it.",
+'file-deleted-duplicate-notitle' => "A file identical to this file has previously been deleted, and the title has been suppressed.
+You should ask someone with the ability to view suppressed file data to review the situation before proceeding to re-upload it.",
 'uploadwarning'               => 'Upload warning',
 'uploadwarning-text'          => 'Please modify the file description below and try again.',
 'savefile'                    => 'Save file',
@@ -2359,6 +2343,7 @@ You should check that file's deletion history before proceeding to re-upload it.
 'php-uploaddisabledtext'      => 'File uploads are disabled in PHP.
 Please check the file_uploads setting.',
 'uploadscripted'              => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
+'uploadinvalidxml'            => 'The XML in the uploaded file could not be parsed.',
 'uploadvirus'                 => 'The file contains a virus!
 Details: $1',
 'uploadjava'                  => 'The file is a ZIP file that contains a Java .class file.
@@ -2710,6 +2695,7 @@ It now redirects to [[$2]].',
 'ninterwikis'                     => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks'                          => '$1 {{PLURAL:$1|link|links}}',
 'nmembers'                        => '$1 {{PLURAL:$1|member|members}}',
+'nmemberschanged'                 => '$1 → $2 {{PLURAL:$2|member|members}}',
 'nrevisions'                      => '$1 {{PLURAL:$1|revision|revisions}}',
 'nviews'                          => '$1 {{PLURAL:$1|view|views}}',
 'nimagelinks'                     => 'Used on $1 {{PLURAL:$1|page|pages}}',
@@ -2772,11 +2758,10 @@ It now redirects to [[$2]].',
 'protectedpages-indef'            => 'Indefinite protections only',
 'protectedpages-summary'          => '', # do not translate or duplicate this message to other languages
 'protectedpages-cascade'          => 'Cascading protections only',
-'protectedpagestext'              => 'The following pages are protected from moving or editing',
+'protectedpages-noredirect'       => 'Hide redirects',
 'protectedpagesempty'             => 'No pages are currently protected with these parameters.',
 'protectedtitles'                 => 'Protected titles',
 'protectedtitles-summary'         => '', # do not translate or duplicate this message to other languages
-'protectedtitlestext'             => 'The following titles are protected from creation',
 'protectedtitlesempty'            => 'No titles are currently protected with these parameters.',
 'listusers'                       => 'User list',
 'listusers-summary'               => '', # do not translate or duplicate this message to other languages
@@ -2838,9 +2823,6 @@ You can narrow down the view by selecting a log type, the username (case-sensiti
 'allpagesto'              => 'Display pages ending at:',
 'allarticles'             => 'All pages',
 'allinnamespace'          => 'All pages ($1 namespace)',
-'allnotinnamespace'       => 'All pages (not in $1 namespace)',
-'allpagesprev'            => 'Previous',
-'allpagesnext'            => 'Next',
 'allpagessubmit'          => 'Go',
 'allpagesprefix'          => 'Display pages with prefix:',
 'allpagesbadtitle'        => 'The given page title was invalid or had an inter-language or inter-wiki prefix.
@@ -3051,6 +3033,7 @@ Feedback and further assistance:
 'historywarning'         => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
 'confirmdeletetext'      => 'You are about to delete a page along with all of its history.
 Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
+'deleting-backlinks-warning' => "'''Warning:''' Other pages link to the page you are about to delete.",
 'actioncomplete'         => 'Action complete',
 'actionfailed'           => 'Action failed',
 'deletedtext'            => '"$1" has been deleted.
@@ -3196,7 +3179,6 @@ You may have a bad link, or the revision may have been restored or removed from
 'undeletebtn'                  => 'Restore',
 'undeletelink'                 => 'view/restore',
 'undeleteviewlink'             => 'view',
-'undeletereset'                => 'Reset',
 'undeleteinvert'               => 'Invert selection',
 'undeletecomment'              => 'Reason:',
 'undeletedrevisions'           => '{{PLURAL:$1|1 revision|$1 revisions}} restored',
@@ -3225,7 +3207,7 @@ It may have already been undeleted.',
 $1',
 'undelete-show-file-confirm'   => 'Are you sure you want to view the deleted revision of the file "<nowiki>$1</nowiki>" from $2 at $3?',
 'undelete-show-file-submit'    => 'Yes',
-'undelete-revisionrow'         => '$1 $2 ($3) $4 . . $5 $6 $7', # only translate this message to other languages if you have to change it
+'undelete-revision-row'         => '$1 $2 ($3) $4 . . $5 $6 $7 $8 $9', # only translate this message to other languages if you have to change it
 
 # Namespace form on various pages
 'namespace'                     => 'Namespace:',
@@ -3294,7 +3276,6 @@ The latest block log entry is provided below for reference:',
 'unblock'                         => 'Unblock user',
 'unblock-summary'                 => '', # do not translate or duplicate this message to other languages
 'blockip'                         => 'Block user',
-'blockip-title'                   => 'Block user',
 'blockip-legend'                  => 'Block user',
 'blockiptext'                     => 'Use the form below to block write access from a specific IP address or username.
 This should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].
@@ -3302,7 +3283,6 @@ Fill in a specific reason below (for example, citing particular pages that were
 'ipadressorusername'              => 'IP address or username:',
 'ipbexpiry'                       => 'Expiry:',
 'ipbreason'                       => 'Reason:',
-'ipbreasonotherlist'              => 'Other reason',
 'ipbreason-dropdown'              => '*Common block reasons
 ** Inserting false information
 ** Removing content from pages
@@ -3318,8 +3298,6 @@ Fill in a specific reason below (for example, citing particular pages that were
 'ipbsubmit'                       => 'Block this user',
 'ipbother'                        => 'Other time:',
 'ipboptions'                      => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,indefinite:infinite',
-'ipbotheroption'                  => 'other',
-'ipbotherreason'                  => 'Other/additional reason:',
 'ipbhidename'                     => 'Hide username from edits and lists',
 'ipbwatchuser'                    => "Watch this user's user and talk pages",
 'ipb-disableusertalk'             => 'Prevent this user from editing their own talk page while blocked',
@@ -3331,6 +3309,7 @@ Fill in a specific reason below (for example, citing particular pages that were
 See the [[Special:BlockList|block list]] to review blocks.',
 'ipb-blockingself'                => 'You are about to block yourself! Are you sure you want to do that?',
 'ipb-confirmhideuser'             => 'You are about to block a user with "hide user" enabled. This will suppress the user\'s name in all lists and log entries. Are you sure you want to do that?',
+'ipb-confirmaction'               => 'If you are sure you really want to do it, please check the "{{int:ipb-confirm}}" field at the bottom.',
 'ipb-edit-dropdown'               => 'Edit block reasons',
 'ipb-unblock-addr'                => 'Unblock $1',
 'ipb-unblock'                     => 'Unblock a username or IP address',
@@ -3397,7 +3376,7 @@ See the [[Special:BlockList|block list]] for the list of currently operational b
 'ipb_expiry_invalid'              => 'Expiry time invalid.',
 'ipb_expiry_temp'                 => 'Hidden username blocks must be permanent.',
 'ipb_hide_invalid'                => 'Unable to suppress this account; it may have too many edits.',
-'ipb_already_blocked'             => '"$1" is already blocked',
+'ipb_already_blocked'             => '"$1" is already blocked.',
 'ipb-needreblock'                 => '$1 is already blocked. Do you want to change the settings?',
 'ipb-otherblocks-header'          => 'Other {{PLURAL:$1|block|blocks}}',
 'unblock-hideuser'                => 'You cannot unblock this user, as their username has been hidden.',
@@ -3412,13 +3391,12 @@ Please contact your Internet service provider or technical support of your organ
 'sorbs'                           => 'DNSBL', # only translate this message to other languages if you have to change it
 'sorbsreason'                     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.',
 'sorbs_create_account_reason'     => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.
-You cannot create an account',
+You cannot create an account.',
 'xffblockreason'                  => 'An IP address present in the X-Forwarded-For header, either yours or that of a proxy server you are using, has been blocked. The original block reason was: $1',
-'cant-block-while-blocked'        => 'You cannot block other users while you are blocked.',
 'cant-see-hidden-user'            => "The user you are trying to block has already been blocked and hidden.
 Since you do not have the hideuser right, you cannot see or edit the user's block.",
-'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked',
-'ipbnounblockself'                => 'You are not allowed to unblock yourself',
+'ipbblocked'                      => 'You cannot block or unblock other users because you are yourself blocked.',
+'ipbnounblockself'                => 'You are not allowed to unblock yourself.',
 'ipb-default-expiry'              => '', # do not translate or duplicate this message to other languages
 
 # Developer tools
@@ -3477,7 +3455,6 @@ please be sure you understand the consequences of this before proceeding.",
 In those cases, you will have to move or merge the page manually if desired.",
 'movearticle'                  => 'Move page:',
 'moveuserpage-warning'         => "'''Warning:''' You are about to move a user page. Please note that only the page will be moved and the user will ''not'' be renamed.",
-'movenologin'                  => 'Not logged in',
 'movenologintext'              => 'You must be a registered user and [[Special:UserLogin|logged in]] to move a page.',
 'movenotallowed'               => 'You do not have permission to move pages.',
 'movenotallowedfile'           => 'You do not have permission to move files.',
@@ -3493,9 +3470,6 @@ In those cases, you will have to move or merge the page manually if desired.",
 'articleexists'                => 'A page of that name already exists, or the name you have chosen is not valid.
 Please choose another name.',
 'cantmove-titleprotected'      => 'You cannot move a page to this location because the new title has been protected from creation',
-'talkexists'                   => "'''The page itself was moved successfully, but the talk page could not be moved because one already exists at the new title.
-Please merge them manually.'''",
-'movedto'                      => 'moved to',
 'movetalk'                     => 'Move associated talk page',
 'move-subpages'                => 'Move subpages (up to $1)',
 'move-talk-subpages'           => 'Move subpages of talk page (up to $1)',
@@ -3819,6 +3793,7 @@ You can view its source',
 'print.css'               => '/* CSS placed here will affect the print output */', # only translate this message to other languages if you have to change it
 'noscript.css'            => '/* CSS placed here will affect users with JavaScript disabled */', # only translate this message to other languages if you have to change it
 'group-autoconfirmed.css' => '/* CSS placed here will affect autoconfirmed users only */', # only translate this message to other languages if you have to change it
+'group-user.css'          => '/* CSS placed here will affect registered users only */', # only translate this message to other languages if you have to change it
 'group-bot.css'           => '/* CSS placed here will affect bots only */', # only translate this message to other languages if you have to change it
 'group-sysop.css'         => '/* CSS placed here will affect sysops only */', # only translate this message to other languages if you have to change it
 'group-bureaucrat.css'    => '/* CSS placed here will affect bureaucrats only */', # only translate this message to other languages if you have to change it
@@ -3830,6 +3805,7 @@ You can view its source',
 'modern.js'              => '/* Any JavaScript here will be loaded for users using the Modern skin */', # only translate this message to other languages if you have to change it
 'vector.js'              => '/* Any JavaScript here will be loaded for users using the Vector skin */', # only translate this message to other languages if you have to change it
 'group-autoconfirmed.js' => '/* Any JavaScript here will be loaded for autoconfirmed users only */', # only translate this message to other languages if you have to change it
+'group-user.js'          => '/* Any JavaScript here will be loaded for registered users only */', # only translate this message to other languages if you have to change it
 'group-bot.js'           => '/* Any JavaScript here will be loaded for bots only */', # only translate this message to other languages if you have to change it
 'group-sysop.js'         => '/* Any JavaScript here will be loaded for sysops only */', # only translate this message to other languages if you have to change it
 'group-bureaucrat.js'    => '/* Any JavaScript here will be loaded for bureaucrats only */', # only translate this message to other languages if you have to change it
@@ -4537,15 +4513,10 @@ $8', # only translate this message to other languages if you have to change it
 'exif-urgency-high'   => 'High ($1)',
 'exif-urgency-other'  => 'User-defined priority ($1)',
 
-# External editor support
-'edit-externally'      => 'Edit this file using an external application',
-'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'all',
 'namespacesall' => 'all',
 'monthsall'     => 'all',
-'limitall'      => 'all',
 
 # Email address confirmation
 'confirmemail'              => 'Confirm email address',
@@ -4566,11 +4537,10 @@ Please check your email address for invalid characters.
 Mailer returned: $1',
 'confirmemail_invalid'      => 'Invalid confirmation code.
 The code may have expired.',
-'confirmemail_needlogin'    => 'You need to $1 to confirm your email address.',
+'confirmemail_needlogin'    => 'Please $1 to confirm your email address.',
 'confirmemail_success'      => 'Your email address has been confirmed.
 You may now [[Special:UserLogin|log in]] and enjoy the wiki.',
 'confirmemail_loggedin'     => 'Your email address has now been confirmed.',
-'confirmemail_error'        => 'Something went wrong saving your confirmation.',
 'confirmemail_subject'      => '{{SITENAME}} email address confirmation',
 'confirmemail_body'         => 'Someone, probably you, from IP address $1,
 has registered an account "$2" with this email address on {{SITENAME}}.
@@ -4663,6 +4633,11 @@ Please confirm that you really want to recreate this page.",
 'imgmultigo'       => 'Go!',
 'imgmultigoto'     => 'Go to page $1',
 
+'img-lang-opt' => '$2 ($1)',
+'img-lang-default' => '(default language)',
+'img-lang-info' => 'Render this image in $1. $2',
+'img-lang-go' => 'Go',
+
 # Table pager
 'ascending_abbrev'         => 'asc',
 'descending_abbrev'        => 'desc',
@@ -4851,10 +4826,20 @@ You can also [[Special:EditWatchlist|use the standard editor]].',
 'version-parser-function-hooks'         => 'Parser function hooks',
 'version-hook-name'                     => 'Hook name',
 'version-hook-subscribedby'             => 'Subscribed by',
-'version-version'                       => '(Version $1)',
-'version-svn-revision'                  => '(r$2)', # only translate this message to other languages if you have to change it
-'version-license'                       => 'License',
-'version-poweredby-credits'             => "This wiki is powered by '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-version'                       => '($1)',
+'version-svn-revision'                  => 'r$1', # only translate this message to other languages if you have to change it
+'version-license'                       => 'MediaWiki License',
+'version-license-title'                 => 'License for $1',
+'version-license-not-found'             => 'No detailed license information was found for this extension.',
+'version-credits-title'                 => 'Credits for $1',
+'version-credits-not-found'             => 'No detailed credits information was found for this extension.',
+'version-ext-license'                   => 'License',
+'version-ext-colheader-name'            => 'Extension',
+'version-ext-colheader-version'         => 'Version',
+'version-ext-colheader-license'         => 'License',
+'version-ext-colheader-description'     => 'Description',
+'version-ext-colheader-credits'         => 'Authors',
+'version-poweredby-credits'             => "This wiki is powered by '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others'              => 'others',
 'version-poweredby-translators'         => 'translatewiki.net translators',
 'version-credits-summary'               => 'We would like to recognize the following persons for their contribution to [[Special:Version|MediaWiki]].',
@@ -4866,6 +4851,13 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'version-software'                      => 'Installed software',
 'version-software-product'              => 'Product',
 'version-software-version'              => 'Version',
+'version-db-mysql-url'                  => 'http://www.mysql.com/', # do not translate or duplicate this message to other languages
+'version-db-mariadb-url'                => 'http://mariadb.org/', # do not translate or duplicate this message to other languages
+'version-db-percona-url'                => 'http://www.percona.com/software/percona-server', # do not translate or duplicate this message to other languages
+'version-db-postgres-url'               => 'http://www.postgresql.org/', # do not translate or duplicate this message to other languages
+'version-db-oracle-url'                 => 'http://www.oracle.com/database/', # do not translate or duplicate this message to other languages
+'version-db-sqlite-url'                 => 'http://www.sqlite.org/', # do not translate or duplicate this message to other languages
+'version-db-mssql-url'                  => 'http://www.microsoft.com/sql/', # do not translate or duplicate this message to other languages
 'version-entrypoints'                   => 'Entry point URLs',
 'version-entrypoints-header-entrypoint' => 'Entry point',
 'version-entrypoints-header-url'        => 'URL',
@@ -4876,15 +4868,16 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'version-entrypoints-load-php'          => '[https://www.mediawiki.org/wiki/Manual:load.php load.php]', # do not translate or duplicate this message to other languages
 
 # Special:Redirect
-'redirect'            => 'Redirect by file, user, or revision ID',
+'redirect'            => 'Redirect by file, user, page or revision ID',
 'redirect-legend'     => 'Redirect to a file or page',
 'redirect-text'       => '', # do not translate or duplicate this message to other languages
-'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary'    => 'This special page redirects to a file (given the file name), a page (given a revision ID or page ID), or a user page (given a numeric user ID). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit'     => 'Go',
 'redirect-lookup'     => 'Lookup:',
 'redirect-value'      => 'Value:',
 'redirect-user'       => 'User ID',
 'redirect-revision'   => 'Page revision',
+'redirect-page'       => 'Page ID',
 'redirect-file'       => 'File name',
 'redirect-not-exists' => 'Value not found',
 
@@ -4953,7 +4946,6 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 # Special:ComparePages
 'comparepages'                => 'Compare pages',
 'comparepages-summary'        => '', # do not translate or duplicate this message to other languages
-'compare-selector'            => 'Compare page revisions',
 'compare-page1'               => 'Page 1',
 'compare-page2'               => 'Page 2',
 'compare-rev1'                => 'Revision 1',
@@ -5114,6 +5106,7 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'api-error-unknownerror'                  => 'Unknown error: "$1".',
 'api-error-uploaddisabled'                => 'Uploading is disabled on this wiki.',
 'api-error-verification-error'            => 'This file might be corrupt, or have the wrong extension.',
+'api-error-stasherror'                    => 'There was an error while uploading the file to stash.',
 
 # Durations
 'duration-seconds'   => '$1 {{PLURAL:$1|second|seconds}}',
@@ -5149,19 +5142,21 @@ Otherwise, you can use the easy form below. Your comment will be added to the pa
 'limitreport-expensivefunctioncount-value' => '$1/$2', # only translate this message to other languages if you have to change it
 
 # ExpandTemplates
-'expandtemplates'                  => 'Expand templates',
-'expand_templates_intro'           => 'This special page takes text and expands all templates in it recursively.
+'expandtemplates'                   => 'Expand templates',
+'expand_templates_intro'            => 'This special page takes text and expands all templates in it recursively.
 It also expands supported parser functions like
 <code><nowiki>{{</nowiki>#language:…}}</code> and variables like
 <code><nowiki>{{</nowiki>CURRENTDAY}}</code>.
 In fact, it expands pretty much everything in double-braces.',
-'expand_templates_title'           => 'Context title, for {{FULLPAGENAME}}, etc.:',
-'expand_templates_input'           => 'Input text:',
-'expand_templates_output'          => 'Result',
-'expand_templates_xml_output'      => 'XML output',
-'expand_templates_ok'              => 'OK',
-'expand_templates_remove_comments' => 'Remove comments',
-'expand_templates_remove_nowiki'   => 'Suppress <nowiki> tags in result',
-'expand_templates_generate_xml'    => 'Show XML parse tree',
-'expand_templates_preview'         => 'Preview',
+'expand_templates_title'            => 'Context title, for {{FULLPAGENAME}}, etc.:',
+'expand_templates_input'            => 'Input text:',
+'expand_templates_output'           => 'Result',
+'expand_templates_xml_output'       => 'XML output',
+'expand_templates_html_output'      => 'Raw HTML output',
+'expand_templates_ok'               => 'OK',
+'expand_templates_remove_comments'  => 'Remove comments',
+'expand_templates_remove_nowiki'    => 'Suppress <nowiki> tags in result',
+'expand_templates_generate_xml'     => 'Show XML parse tree',
+'expand_templates_generate_rawhtml' => 'Show raw HTML',
+'expand_templates_preview'          => 'Preview',
 );
index af3c5ae..78fcac1 100644 (file)
@@ -8,10 +8,24 @@
  * @file
  *
  * @author Dantman
+ * @author FrigidNinja
+ * @author Shirayuki
  * @author Techman224
+ * @author គីមស៊្រុន
  */
 
 $messages = array(
+'talkpagelinktext' => 'Talk',
+'talk' => 'Discussion',
+
+# 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).
+'aboutsite' => 'អំពី {{SITENAME}}',
+'mainpage' => 'Main Page',
+
+'editsection' => 'edit',
+'editsectionhint' => 'Edit section: $1',
+'red-link-title' => '$1 (page does not exist)',
+
 # Special:UploadStash
 'uploadstash-summary' => 'This page provides access to files which are uploaded (or in process of uploading) but are not yet published to the wiki. These files are not visible to anyone but the user who uploaded them.',
 
@@ -20,10 +34,20 @@ $messages = array(
 this action has been cancelled as a precaution against session hijacking.
 Go back to the previous page, reload that page and then try again.',
 
-# EXIF tags
+# Block/unblock
+'ipbreason-dropdown' => '*Common block reasons
+** Inserting false information
+** Removing content from pages
+** Spamming links to external sites
+** Inserting nonsense/gibberish into pages
+** Intimidating behaviour/harassment
+** Abusing multiple accounts
+** Unacceptable username',
+
+# Exif tags
 'exif-ycbcrcoefficients' => 'Colour space transformation matrix coefficients',
-'exif-colorspace'        => 'Colour space',
-'exif-licenseurl'        => 'URL for copyright licence',
+'exif-colorspace' => 'Colour space',
+'exif-licenseurl' => 'URL for copyright licence',
 
 'exif-subjectdistance-value' => '$1 metres',
 
@@ -47,11 +71,11 @@ Go back to the previous page, reload that page and then try again.',
 
 'exif-ycbcrpositioning-1' => 'Centred',
 
-# E-mail address confirmation
-'confirmemail_invalidated' => 'E-mail address confirmation cancelled',
+# Email address confirmation
+'confirmemail_invalidated' => 'Email address confirmation cancelled',
 
 # Special:Version
-'version-license'      => 'Licence',
+'version-license' => 'Licence',
 'version-license-info' => 'MediaWiki is free software; you can redistribute it and/or modify it under the terms of the GNU General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version.
 
 MediaWiki 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 Licence for more details.
index c38fd29..34713f8 100644 (file)
@@ -7,11 +7,14 @@
  * @ingroup Language
  * @file
  *
+ * @author Amire80
  * @author Dantman
  * @author Fitoschido
  * @author Hazard-SJ
  * @author Jon Harald Søby
+ * @author Lloffiwr
  * @author Reedy
+ * @author Shirayuki
  * @author The Evil IP address
  */
 
@@ -24,11 +27,10 @@ $specialPageAliases = array(
 
 $messages = array(
 # User preference toggles
-'tog-watchcreations' => 'Add pages I create to my watchlist',
-'tog-watchdefault' => 'Add pages I edit to my watchlist',
-'tog-watchmoves' => 'Add pages I move to my watchlist',
-'tog-watchdeletion' => 'Add pages I delete to my watchlist',
-'tog-showjumplinks' => 'Enable ‘jump to’ accessibility links',
+'tog-watchcreations' => 'Add pages I create and files I upload to my watchlist',
+'tog-watchdefault' => 'Add pages and files I edit to my watchlist',
+'tog-watchmoves' => 'Add pages and files I move to my watchlist',
+'tog-watchdeletion' => 'Add pages and files I delete to my watchlist',
 
 # Categories related messages
 'category_header' => 'Pages in category ‘$1’',
@@ -39,17 +41,6 @@ $messages = array(
 'page-atom-feed' => '‘$1’ Atom feed',
 
 # General errors
-'dberrortext' => 'A database query syntax error has occurred.
-This may indicate a bug in the software.
-The last attempted database query was:
-<blockquote><tt>$1</tt></blockquote>
-from within function ‘<tt>$2</tt>.’
-Database returned error ‘<tt>$3: $4</tt>.’',
-'dberrortextcl' => 'A database query syntax error has occurred.
-The last attempted database query was:
-‘$1’
-from within function ‘$2.’
-Database returned error ‘$3: $4’',
 'missing-article' => 'The database did not find the text of a page that it should have found, named ‘$1’ $2.
 
 This is usually caused by following an outdated diff or history link to a page that has been deleted.
@@ -57,19 +48,30 @@ This is usually caused by following an outdated diff or history link to a page t
 If this is not the case, you may have found a bug in the software.
 Please report this to an [[Special:ListUsers/sysop|administrator]], making note of the URL.',
 'fileappenderrorread' => 'Could not read ‘$1’ during append.',
-'fileappenderror' => 'Could not append ‘$1’ to ‘$2.’',
-'filecopyerror' => 'Could not copy file ‘$1’ to ‘$2.’',
+'fileappenderror' => 'Could not append ‘$1’ to ‘$2’.',
+'filecopyerror' => 'Could not copy file ‘$1’ to ‘$2’.',
 'filerenameerror' => 'Could not rename file ‘$1’ to ‘$2.’',
 'filedeleteerror' => 'Could not delete file ‘$1’.',
 'directorycreateerror' => 'Could not create directory ‘$1’.',
 'filenotfound' => 'Could not find file ‘$1’.',
-'fileexistserror' => 'Unable to write to file ‘$1’: file exists',
+'fileexistserror' => 'Unable to write to file ‘$1’: File exists.',
 'unexpected' => 'Unexpected value: ‘$1’=‘$2’.',
 'cannotdelete' => 'The page or file ‘$1’ could not be deleted.
 It may have already been deleted by someone else.',
+'protectedinterface' => 'This page provides interface text for the software on this wiki, and is protected to prevent abuse.
+To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.',
+'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
+Changes to this page will affect the appearance of the user interface for other users on this wiki.
+To add or change translations for all wikis, please use [//translatewiki.net/ translatewiki.net], the MediaWiki localisation project.",
 'cascadeprotected' => 'This page has been protected from editing, because it is included in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the ‘cascading’ option turned on:
 $2',
 
+# Preferences page
+'prefs-i18n' => 'Internationalisation',
+
+'license' => 'Licencing:',
+'license-header' => 'Licencing',
+
 # Miscellaneous special pages
 'uncategorizedpages' => 'Uncategorised pages',
 'uncategorizedcategories' => 'Uncategorised categories',
@@ -85,17 +87,38 @@ Go back to the previous page, reload that page and then try again.',
 'blockiptext' => 'Use the form below to block write access from a specific IP address or username.
 This should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].
 Fill in a specific reason below (for example, citing particular pages that were vandalised).',
+'ipbreason-dropdown' => '*Common block reasons
+** Inserting false information
+** Removing content from pages
+** Spamming links to external sites
+** Inserting nonsense/gibberish into pages
+** Intimidating behaviour/harassment
+** Abusing multiple accounts
+** Unacceptable username',
+'proxyblockreason' => 'Your IP address has been blocked because it is an open proxy.
+Please contact your Internet service provider or technical support of your organisation and inform them of this serious security problem.',
+
+# Namespace 8 related
+'allmessagestext' => 'This is a list of system messages available in the MediaWiki namespace.
+Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+'allmessages-filter' => 'Filter by customisation state:',
+
+# Special:Import
+'import-error-unserialize' => 'Revision $2 of page "$1" could not be unserialised. The revision was reported to use content model $3 serialised as $4.',
 
 # Metadata
 'metadata-help' => 'This file contains additional information, probably added from the digital camera or scanner used to create or digitise it.
 If the file has been modified from its original state, some details may not fully reflect the modified file.',
 
-# EXIF tags
+# Exif tags
 'exif-ycbcrcoefficients' => 'Colour space transformation matrix coefficients',
 'exif-colorspace' => 'Colour space',
 'exif-datetimedigitized' => 'Date and time of digitising',
 'exif-subsectimedigitized' => 'DateTimeDigitised subseconds',
-'exif-exposureprogram' => 'Exposure programme',
+'exif-exposureprogram' => 'Exposure Programme',
+'exif-licenseurl' => 'URL for copyright licence',
+'exif-morepermissionsurl' => 'Alternative licencing information',
+'exif-organisationinimage' => 'Organisation depicted',
 
 'exif-exposureprogram-2' => 'Normal programme',
 'exif-exposureprogram-5' => 'Creative programme (biased toward depth of field)',
@@ -103,6 +126,8 @@ If the file has been modified from its original state, some details may not full
 
 'exif-subjectdistance-value' => '$1 metres',
 
+'exif-meteringmode-2' => 'Centre weighted average',
+
 'exif-sensingmethod-2' => 'One-chip colour area sensor',
 'exif-sensingmethod-3' => 'Two-chip colour area sensor',
 'exif-sensingmethod-4' => 'Three-chip colour area sensor',
@@ -119,14 +144,23 @@ If the file has been modified from its original state, some details may not full
 # Pseudotags used for GPSDestDistanceRef
 'exif-gpsdestdistance-k' => 'Kilometres',
 
-# E-mail address confirmation
-'confirmemail_invalidated' => 'E-mail address confirmation cancelled',
+'exif-ycbcrpositioning-1' => 'Centred',
+
+'exif-iimcategory-lab' => 'Labour',
+
+# Email address confirmation
+'confirmemail_invalidated' => 'Email address confirmation cancelled',
 
 # Special:Version
+'version-license' => 'Licence',
+'version-credits-summary' => 'We would like to recognise the following persons for their contribution to [[Special:Version|MediaWiki]].',
 'version-license-info' => 'MediaWiki is free software; you can redistribute it and/or modify it under the terms of the GNU General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version.
 
 MediaWiki 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 Licence for more details.
 
-You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public Licence] along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].',
+You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public Licence] along with this programme; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].',
+
+# Feedback
+'feedback-error1' => 'Error: Unrecognised result from API',
 
 );
index cfed8ad..60f8ce0 100644 (file)
@@ -95,7 +95,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Malbona_titolo' ),
        'Blankpage'                 => array( 'Malplena_paĝo' ),
        'Block'                     => array( 'Forbari_IP-adreson' ),
-       'Blockme'                   => array( 'Forbari_min' ),
        'Booksources'               => array( 'Citoj_el_libroj' ),
        'BrokenRedirects'           => array( 'Rompitaj_alidirektiloj' ),
        'Categories'                => array( 'Kategorioj' ),
@@ -107,10 +106,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Krei_konton' ),
        'Deadendpages'              => array( 'Paĝoj_sen_interna_ligilo' ),
        'DeletedContributions'      => array( 'Forigitaj_kontribuoj' ),
-       'Disambiguations'           => array( 'Apartigiloj' ),
        'DoubleRedirects'           => array( 'Duoblaj_alidirektiloj' ),
        'EditWatchlist'             => array( 'Redakti_atentaron' ),
        'Emailuser'                 => array( 'Retpoŝti_uzanton' ),
+       'ExpandTemplates'           => array( 'Malfaldi_ŝablonon' ),
        'Export'                    => array( 'Elporti', 'Eksporti' ),
        'Fewestrevisions'           => array( 'Plej_malmultaj_revizioj' ),
        'FileDuplicateSearch'       => array( 'Serĉi_pri_duoblaj_dosieroj' ),
@@ -347,7 +346,6 @@ $messages = array(
 'tog-minordefault' => 'Marki defaŭlte ĉiujn redaktojn kiel etajn',
 'tog-previewontop' => 'Montri antaŭrigardon antaŭ redaktilo',
 'tog-previewonfirst' => 'Montri antaŭrigardon je unua redakto',
-'tog-nocache' => 'Malŝalti retumilan kaŝmemoron de paĝoj',
 'tog-enotifwatchlistpages' => 'Sendi al mi retmesaĝon kiam tiu paĝo en mia atentaro estas ŝanĝita',
 'tog-enotifusertalkpages' => 'Sendi al mi retmesaĝon kiam mia diskutpaĝo estas ŝanĝita',
 'tog-enotifminoredits' => 'Sendi al mi ankaŭ retmesaĝojn pro malgrandaj redaktoj de paĝoj',
@@ -481,7 +479,6 @@ $messages = array(
 'qbedit' => 'Redakti',
 'qbpageoptions' => 'Paĝagado',
 'qbmyoptions' => 'Personaĵoj',
-'qbspecialpages' => 'Specialaj paĝoj',
 'faq' => 'Oftaj demandoj',
 'faqpage' => 'Project:Oftaj demandoj',
 
@@ -599,8 +596,8 @@ $1',
 'youhavenewmessages' => 'Por vi estas $1 ($2).',
 'youhavenewmessagesfromusers' => 'Riceviĝis $1 de {{PLURAL:$3|alia uzanto|$3 uzantoj}} ($2).',
 'youhavenewmessagesmanyusers' => 'Riceviĝis $1 de multaj uzantoj ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|nova mesaĝo|novaj mesaĝoj}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|lasta ŝanĝo|lastaj ŝanĝoj}}',
+'newmessageslinkplural' => '{{PLURAL:$1|nova mesaĝo|999=novaj mesaĝoj}}',
+'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|ŝanĝo|ŝanĝoj}}',
 'youhavenewmessagesmulti' => 'Vi havas novajn mesaĝojn ĉe $1',
 'editsection' => 'redakti',
 'editold' => 'redakti',
@@ -652,6 +649,11 @@ Listo de validaj specialaj paĝoj estas trovebla ĉe [[Special:SpecialPages|{{in
 # General errors
 'error' => 'Eraro',
 'databaseerror' => 'Datumbaza eraro',
+'databaseerror-text' => 'Datumbaza eraro de la mendo okazis.
+Ĉi tiu eble indikas cimon de la programaro.',
+'databaseerror-textcl' => 'Datumbaza eraro de la mendo okazis.',
+'databaseerror-query' => 'Mendo: $1',
+'databaseerror-function' => 'Funkcio: $1',
 'databaseerror-error' => 'Eraro: $1',
 'laggedslavemode' => 'Avertu: la paĝo eble ne enhavas lastatempajn ĝisdatigojn.',
 'readonly' => 'Datumaro ŝlosita, nurlega',
@@ -697,9 +699,6 @@ Eble ĝi estis jam forigita de iu alia.',
 'perfcachedts' => 'La jenaj datumoj estas el kaŝmemoro kaj estis laste ĝisdatigitaj $1. Maksimumo de {{PLURAL:$4|unu rezulto estas disponebla|$4 rezultoj estas disponeblaj}} en la kaŝmemoro.',
 'querypage-no-updates' => 'Ĝisdatigoj por ĉi paĝo estas nune neebligitaj.
 Datenoj ĉi tie ne estos nune refreŝigitaj.',
-'wrong_wfQuery_params' => 'Malĝustaj parametroj por wfQuery()<br />
-Funkcio: $1<br />
-Peto: $2',
 'viewsource' => 'Rigardi vikitekston',
 'viewsource-title' => 'Vidi fonton por $1',
 'actionthrottled' => 'Agado limigita',
@@ -707,9 +706,11 @@ Peto: $2',
 'protectedpagetext' => 'Tiu ĉi paĝo estas ŝlosita por malebligi redaktadon.',
 'viewsourcetext' => 'Vi povas rigardi kaj kopii la fonton de la paĝo:',
 'viewyourtext' => "Vi povas vidi kaj kopii la fonton de '''viaj redaktoj''' al ĉi tiu paĝo:",
-'protectedinterface' => 'Ĉi tiu paĝo provizas interfacan tekston por la softvaro, kaj estas ŝlosita por malebligi misuzon.
+'protectedinterface' => 'Ĉi tiu paĝo provizas interfacan tekston por la programaro, kaj estas ŝlosita por malebligi misuzon.
 Por aldoni aŭ ŝanĝi tradukojn por ĉiuj vikioj, bonvolu uzi [//translatewiki.net/ translatewiki.net], la projekto por provizi tradukojn por MediaWiki.',
-'editinginterface' => "'''Atentu:''' Vi redaktas paĝon, kiu estas uzata kiel interfaca teksto por la programaro. Ŝanĝoj de ĉi tiu teksto povas ŝanĝi aspekton de la interfaco por aliaj uzantoj sur ĉi tiu vikio. Por aldoni aŭ ŝanĝi tradukojn, bonvolu uzi [//translatewiki.net/ translatewiki.net], la MediaWiki-projekton por lingvigaj versioj.",
+'editinginterface' => "'''Atentu:''' Vi redaktas paĝon, kiu provizas interfacan tekston por la programaro.
+Ŝanĝoj de ĉi tiu teksto ŝanĝos aspekton de la interfaco por aliaj uzantoj de ĉi tiu vikio.
+Por aldoni aŭ ŝanĝi tradukojn por ĉiuj vikioj, bonvolu uzi [//translatewiki.net/ translatewiki.net], la projekton por provizi tradukojn por MediaWiki.",
 'cascadeprotected' => 'Ĉi tiu paĝo estas protektita kontraŭ redaktado, ĉar ĝi estas inkludita en la {{PLURAL:$1|sekvan paĝon, kiu|sekvajn paĝojn, kiuj}} estas {{PLURAL:$1|protektata|protektataj}} kun la "kaskada" opcio turnita sur:
 $2',
 'namespaceprotected' => "Vi ne rajtas redakti paĝojn en la '''$1''' nomspaco.",
@@ -726,7 +727,7 @@ La administranto kiu ŝlosis ĝin proponis tiun klarigon: "$3".',
 'invalidtitle-knownnamespace' => 'Nevalida titolo kun nomspaco "$2" kaj teksto "$3"',
 'invalidtitle-unknownnamespace' => 'Nevalida titolo kun nekonata nomspaca numero $1 kaj teksto "$2"',
 'exception-nologin' => 'Ne ensalutita',
-'exception-nologin-text' => 'Vi devas ensaluti ĉi tiun vikion por fari ĉi tiun agon.',
+'exception-nologin-text' => 'Bonvolu [[Special:Userlogin|ensaluti]] por atingi ĉi tiun paĝon aŭ agon.',
 
 # Virus scanner
 'virus-badscanner' => "Malbona konfiguro: nekonata virusa skanilo: ''$1''",
@@ -736,7 +737,6 @@ La administranto kiu ŝlosis ĝin proponis tiun klarigon: "$3".',
 # Login and logout pages
 'logouttext' => "'''Vi nun estas elsalutinta.'''
 
-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ŭ estus ensalutinta, ĝis vi refreŝigos kaŝmemoron de via retumilo.",
 'welcomeuser' => 'Bonvenon, $1!',
 'welcomecreation-msg' => 'Via konto estas kreita.
@@ -747,8 +747,10 @@ Ne forgesu ŝanĝi viajn [[Special:Preferences|{{SITENAME}}-preferojn]]',
 'yourpassword' => 'Pasvorto:',
 'userlogin-yourpassword' => 'Pasvorto',
 'userlogin-yourpassword-ph' => 'Enigu vian pasvorton',
+'createacct-yourpassword-ph' => 'Tajpu pasvorton',
 'yourpasswordagain' => 'Retajpu pasvorton',
 'createacct-yourpasswordagain' => 'Konfirmu pasvorton',
+'createacct-yourpasswordagain-ph' => 'Retajpu pasvorton',
 'remembermypassword' => 'Memori mian ensalutadon ĉe ĉi tiu komputilo (daŭrante maksimume $1 {{PLURAL:$1|tagon|tagojn}})',
 'userlogin-remembermypassword' => 'Memoru mian ensaluton',
 'userlogin-signwithsecure' => 'Uzu sekurigitan konekton',
@@ -771,7 +773,7 @@ Ne forgesu ŝanĝi viajn [[Special:Preferences|{{SITENAME}}-preferojn]]',
 'gotaccount' => "Ĉu vi jam havas konton? '''$1'''.",
 'gotaccountlink' => 'Ensaluti',
 'userlogin-resetlink' => 'Ĉu vi forgesis ensalutajn detalojn?',
-'userlogin-resetpassword-link' => 'Restarigu vian pasvorton',
+'userlogin-resetpassword-link' => 'Ĉu vi forgesis vian pasvorton?',
 'helplogin-url' => 'Help:Ensalutado',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Helpo pri ensalutado]]',
 'createacct-join' => 'Suben enigu informojn pri vi',
@@ -814,7 +816,7 @@ Kontrolu vian literumadon, aŭ [[Special:UserLogin/signup|kreu novan konton]].',
 'passwordtooshort' => 'Pasvortoj devas esti almenaŭ  $1 {{PLURAL:$1|1 signon|$1 signojn}}.',
 'password-name-match' => 'Via pasvorto devas nepre malsami vian salutnomon.',
 'password-login-forbidden' => 'Estas malpermesite uzi tiun ĉi salutnomon kaj pasvorton.',
-'mailmypassword' => 'Retpoŝti novan pasvorton',
+'mailmypassword' => 'Refari pasvorton',
 'passwordremindertitle' => 'Rememorigo el {{SITENAME}} pri perdita pasvorto',
 'passwordremindertext' => 'Iu (probable vi, el IP-adreso $1) petis novan
 pasvorton por {{SITENAME}} ($4). Provizora pasvorto por uzanto
@@ -837,7 +839,7 @@ Por preventi misuzon, nur unu reŝargita pasvorto estos sendita dum {{PLURAL:$1|
 'mailerror' => 'Okazis eraro sendante retpoŝtaĵon: $1',
 'acct_creation_throttle_hit' => 'Vizitintoj al ĉi tiu vikio uzintaj vian IP-adreson kreis {{PLURAL:$1|1 konton|$1 kontojn}} dum la lasta tago, kiu estas la maksimume permesita en ĉi tiu tempoperiodo.
 Tial, vizitantoj kun ĉi tiu IP-adreso ne povas krei pluajn kontojn ĉi-momente.',
-'emailauthenticated' => 'Via retadreso estis aŭtentikigita ekde $2 $3.',
+'emailauthenticated' => 'Via retadreso estis konfirmita ekde $2 $3.',
 'emailnotauthenticated' => 'Via retadreso ne jam estas aŭtentigata.
 Neniu retpoŝto estos sendita pro iuj jenaj kialoj.',
 'noemailprefs' => 'Specifu retpoŝtan adreson por ĉi tiuj ecoj funkcii.',
@@ -867,7 +869,7 @@ Se vi decidas indiki ĝin, ĝi estos uzata por montri atribuadon de viaj kontrib
 'user-mail-no-body' => 'Provo sendi malplenan aŭ sensence mallongan retpošton.',
 
 # Change password dialog
-'resetpass' => 'Ŝanĝi pasvorton',
+'changepassword' => 'Ŝanĝi pasvorton',
 'resetpass_announce' => 'Vi ensalutis kun provizora retpoŝtita pasvorto. Por kompleti ensalutadon, vi devas fari novan pasvorton ĉi tien:',
 'resetpass_text' => '<!-- Aldonu tekston ĉi tien -->',
 'resetpass_header' => 'Ŝanĝi kontan pasvorton',
@@ -1259,10 +1261,6 @@ Kiel administranto, vi povas rigardi ĉi tiun diferencon, eble estas detaloj en
 'revdelete-nooldid-title' => 'Nevalida cela revizio',
 'revdelete-nooldid-text' => 'Vi ne specifis celan version aŭ versiojn fari ĉi tiun
 funkcion, la specifita versio ne ekzistas, aŭ vi estas provanta kaŝi la nunan version.',
-'revdelete-nologtype-title' => 'Neniu protokol-tipo estis donita',
-'revdelete-nologtype-text' => 'Vi ne specifis protokolan tipon por fari ĉi tiun funkcion.',
-'revdelete-nologid-title' => 'Malvalida protokolero',
-'revdelete-nologid-text' => 'Vi aŭ ne specifis celan protokolan eventon por fari ĉi tiun funkcion aŭ la specifa protokolero ne ekzistas.',
 'revdelete-no-file' => 'La specifita dosiero ne ekzistas.',
 'revdelete-show-file-confirm' => 'Ĉu vi certas ke vi volas vidi forigitan revizion de la dosiero "<nowiki>$1</nowiki>" de $2, $3?',
 'revdelete-show-file-submit' => 'Jes',
@@ -1272,18 +1270,19 @@ funkcion, la specifita versio ne ekzistas, aŭ vi estas provanta kaŝi la nunan
 Aliaj administrantoj ĉe {{SITENAME}} plu povos aliri la kaŝitan entenon kaj restarigi ĝin per la sama interfaco, krom se plia limigo estas metita de la paĝaradministrantoj.",
 'revdelete-confirm' => 'Bonvolu konfirmi ke vi intencias fari ĉi tion, ke vi komprenas la konsekvencojn kaj ke vi faras ĉi tion laŭ [[{{MediaWiki:Policy-url}}|la regularo]].',
 'revdelete-suppress-text' => "Subpremo '''nur''' estu uzata por la jenaj kazoj:
+* Ebla kalumnia informo
 * Netaŭga persona informo
 *: ''hejmaj adresoj kaj telefonnumeroj, ŝtataj identnumeroj, ktp.''",
 'revdelete-legend' => 'Fari videblecajn limigojn',
-'revdelete-hide-text' => 'Kaŝi tekston de versio',
+'revdelete-hide-text' => 'Teksto de revizio',
 'revdelete-hide-image' => 'Kaŝi enhavon de dosieroj',
 'revdelete-hide-name' => 'Kaŝi agon kaj celon',
-'revdelete-hide-comment' => 'Kaŝi komenton de redakto',
-'revdelete-hide-user' => 'Kaŝi nomon aŭ IP-adreson de redaktinto',
+'revdelete-hide-comment' => 'Resumo de redakto',
+'revdelete-hide-user' => 'Salutnomo de redaktanto/IP-adreso',
 'revdelete-hide-restricted' => 'Subpremi ĉi tiujn datenojn de administrantoj kaj ankaŭ aliaj',
 'revdelete-radio-same' => '(ne ŝanĝi)',
-'revdelete-radio-set' => 'Videbla',
-'revdelete-radio-unset' => 'Kaŝita',
+'revdelete-radio-set' => 'Kaŝita',
+'revdelete-radio-unset' => 'Videbla',
 'revdelete-suppress' => 'Subpremi datenojn de kaj administrantoj kaj aliaj',
 'revdelete-unsuppress' => 'Forigi limigojn al restarigitaj versioj',
 'revdelete-log' => 'Kialo:',
@@ -1295,8 +1294,6 @@ $1",
 'logdelete-failure' => "'''Protokola videbleco ne estis akordebla:'''
 $1",
 'revdel-restore' => 'Ŝanĝi videblecon',
-'revdel-restore-deleted' => 'forigitaj revizioj',
-'revdel-restore-visible' => 'videblaj revizioj',
 'pagehist' => 'Paĝa historio',
 'deletedhist' => 'Forigita historio',
 'revdelete-hide-current' => 'Eraro kaŝante la aĵon de $2, $1: ĉi tiu estas la nuna revizio.
@@ -1374,12 +1371,8 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 # Search results
 'searchresults' => 'Serĉrezultoj',
 'searchresults-title' => 'Serĉrezultoj por "$1"',
-'searchresulttext' => 'Por pliaj informoj pri serĉado en {{SITENAME}} vidu [[{{MediaWiki:Helppage}}|{{int:help}}]]..',
-'searchsubtitle' => 'Vi serĉis "\'\'\'[[$1]]\'\'\'" ([[Special:Prefixindex/$1|ĉiuj paĝoj komence de "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ĉiuj paĝoj ligantaj al "$1"]])',
-'searchsubtitleinvalid' => 'Serĉmendo "$1"',
 'toomanymatches' => 'Tro da serĉo-trafoj estis trovitaj; bonvolu provi malsaman serĉomendon.',
 'titlematches' => 'Trovitaj laŭ titolo',
-'notitlematches' => 'Neniu trovita laŭ titolo',
 'textmatches' => 'Trovitaj laŭ enhavo',
 'notextmatches' => 'Neniu trovita laŭ enhavo',
 'prevn' => '{{PLURAL:$1|$1 antaŭa|$1 antaŭaj}}',
@@ -1388,10 +1381,8 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'nextn-title' => '{{PLURAL:$1|Posta $1 rezulto|Postaj $1 rezultoj}}',
 'shown-title' => 'Montri {{PLURAL:$1|$1 rezulton|$1 rezultojn}} en paĝo',
 'viewprevnext' => 'Montri ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Serĉaj opcioj',
 'searchmenu-exists' => "'''Estas paĝo nomita \"[[:\$1]]\" en ĉi tiu vikio'''",
 'searchmenu-new' => "'''Krei la paĝon \"[[:\$1]]\" en ĉi tiu vikio!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Traserĉi paĝojn kun ĉi tiu prefikso]]',
 'searchprofile-articles' => 'Enhavaj paĝoj',
 'searchprofile-project' => 'Paĝoj pri Helpo kaj Projektoj',
 'searchprofile-images' => 'Plurmedio',
@@ -1412,21 +1403,16 @@ Detaloj troveblos en la [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'search-interwiki-default' => '$1 rezultoj:',
 'search-interwiki-more' => '(plu)',
 'search-relatedarticle' => 'Relataj',
-'mwsuggest-disable' => 'Malŝalti serĉajn sugestojn',
 'searcheverything-enable' => 'Traserĉi ĉiujn nomspacojn',
 'searchrelated' => 'rilataj',
 'searchall' => 'ĉiuj',
 'showingresults' => "Montras {{PLURAL:$1|'''1''' trovitan|'''$1''' trovitajn}} ekde la #'''$2'''-a.",
 'showingresultsnum' => "Montras {{PLURAL:$3|'''1''' trovitan|'''$3''' trovitajn}} ekde la #'''$2'''-a.",
 'showingresultsheader' => "{{PLURAL:$5|Rezulto '''$1''' el '''$3'''|Rezultoj '''$1 – $2''' el '''$3'''}} por '''$4'''",
-'nonefound' => "'''Notu''':  Nur kelkaj nomspacoj estas serĉitaj defaulte.
-Provu prefiksi vian mendon kun ''all:'' por serĉi ĉiun enhavon (inkluzivante diskuto-paĝojn, ŝablonojn, ktp), aŭ uzi la deziritan nomspacon kiel prefikson.",
 'search-nonefound' => 'La serĉomendo rezultis kun neniuj trafoj.',
-'powersearch' => 'Progresa trovilo',
 'powersearch-legend' => 'Progresa serĉo',
 'powersearch-ns' => 'Serĉi en nomspacoj:',
 'powersearch-redir' => 'Listigi alidirektilojn',
-'powersearch-field' => 'Serĉi',
 'powersearch-togglelabel' => 'Elekti:',
 'powersearch-toggleall' => 'Ĉion',
 'powersearch-togglenone' => 'Nenion',
@@ -1439,7 +1425,6 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'preferences' => 'Preferoj',
 'mypreferences' => 'Preferoj',
 'prefs-edits' => 'Nombro de redaktoj:',
-'changepassword' => 'Ŝanĝi pasvorton',
 'prefs-skin' => 'Etoso',
 'skin-preview' => 'Antaŭrigardo',
 'datedefault' => 'Nenia prefero',
@@ -1462,13 +1447,11 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'prefs-email' => 'Retpoŝtaj opcioj',
 'prefs-rendering' => 'Aspekto',
 'saveprefs' => 'Konservi preferojn',
-'resetprefs' => 'Forviŝi nekonservitajn ŝanĝojn',
 'restoreprefs' => 'Restarigi ĉiujn defaŭltajn preferojn',
 'prefs-editing' => 'Redaktado',
 'rows' => 'Linioj:',
 'columns' => 'Kolumnoj:',
 'searchresultshead' => 'Serĉi',
-'resultsperpage' => 'Montri trovitajn po',
 'stub-threshold' => 'Ago-sojlo por formatigo de <a href="#" class="stub">ligil-ĝermo (anglalingve: "stub link")</a> (bitikoj):',
 'stub-threshold-disabled' => 'Malebligita',
 'recentchangesdays' => 'Tagoj montrendaj en lastaj ŝanĝoj:',
@@ -1480,7 +1463,6 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'localtime' => 'Loka tempo:',
 'timezoneuseserverdefault' => 'Uzi defaŭlton de servilo ($1)',
 'timezoneuseoffset' => 'Alia (Enigu diferencon)',
-'timezoneoffset' => 'Diferenco¹:',
 'servertime' => 'Servila tempo:',
 'guesstimezone' => 'Plenigita el la foliumilo',
 'timezoneregion-africa' => 'Afriko',
@@ -1680,7 +1662,7 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'action-createpage' => 'krei paĝojn',
 'action-createtalk' => 'krei diskuto-paĝojn',
 'action-createaccount' => 'krei ĉi tiun uzanto-konton',
-'action-minoredit' => 'marki ĉi tiun redakton kiel malgravan',
+'action-minoredit' => 'marki ĉi tiun redakton eta',
 'action-move' => 'movi ĉi tiun paĝon',
 'action-move-subpages' => 'movi ĉi tiun paĝon, kaj ties subpaĝojn',
 'action-move-rootuserpages' => 'movi radikajn uzanto-paĝojn',
@@ -1701,7 +1683,7 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'action-protect' => 'ŝanĝi la protektan nivelon por ĉi tiu paĝo',
 'action-rollback' => 'tuj malfari la redaktojn de la lasta uzanto kiu redaktis specifan paĝon',
 'action-import' => 'enporti paĝojn de alia vikio',
-'action-importupload' => 'importi ĉi tiun paĝon de dosiera alŝuto',
+'action-importupload' => 'importi paĝojn de dosiera alŝuto',
 'action-patrol' => 'marki redakton de alia persono kiel patrolitan',
 'action-autopatrol' => 'fari vian redakton markitan kiel patrolitan',
 'action-unwatchedpages' => 'vidi la liston de neatentitaj paĝoj',
@@ -1727,13 +1709,12 @@ indekso pro troŝarĝita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
 'recentchanges-label-minor' => 'Ĉi tiu estas eta redakto',
 'recentchanges-label-bot' => 'Ĉi tiu redakto estis farita per roboto.',
 'recentchanges-label-unpatrolled' => 'Ĉi tiu redakto ne jam estis patrolata.',
-'recentchanges-legend-newpage' => '$1 - nova paĝo',
-'rcnote' => "Jen la {{PLURAL:$1|lasta '''1''' ŝanĝo|lastaj '''$1''' ŝanĝoj}} dum la {{PLURAL:$2|lasta tago|lastaj '''$2''' tagoj}}, ekde $5, $4.",
+'recentchanges-legend-newpage' => '(vidu ankaŭ [[Special:NewPages|liston de novaj paĝoj]])',
 'rcnotefrom' => "Jen la ŝanĝoj ekde '''$2''' (lastaj ĝis '''$1''').",
 'rclistfrom' => 'Montri novajn ŝanĝojn ekde "$1"',
 'rcshowhideminor' => '$1 redaktetojn',
 'rcshowhidebots' => '$1 robotojn',
-'rcshowhideliu' => '$1 ensalutantojn',
+'rcshowhideliu' => '$1 registriĝintojn',
 'rcshowhideanons' => '$1 anonimajn redaktojn',
 'rcshowhidepatr' => '$1 patrolitajn redaktojn',
 'rcshowhidemine' => '$1 miajn redaktojn',
@@ -1770,7 +1751,7 @@ Paĝoj en [[Special:Watchlist|via atentaro]] estas '''grasaj'''.",
 'reuploaddesc' => 'Reveni al la alŝuta formularo.',
 'upload-tryagain' => 'Enigi ŝanĝitan dosieran priskribon',
 'uploadnologin' => 'Ne ensalutinta',
-'uploadnologintext' => 'Vi devas [[Special:UserLogin|ensaluti]] por alŝuti dosierojn.',
+'uploadnologintext' => 'Bonvolu $1 por alŝuti dosierojn.',
 'upload_directory_missing' => 'La alŝuta dosierujo ($1) estas nek trovebla nek kreebla de la retservilo.',
 'upload_directory_read_only' => 'La TTT-servilo ne povas alskribi la alŝuto-dosierujon ($1).',
 'uploaderror' => 'Eraro okazis dum alŝuto',
@@ -1915,7 +1896,7 @@ Se la problemo kontinuas, kontaku [[Special:ListUsers/sysop|administranton]].',
 'backend-fail-closetemp' => 'Ne povis fermi provizoran dosieron.',
 'backend-fail-read' => 'Ne povas legi dosieron "$1".',
 'backend-fail-create' => 'Ne povas skribi dosieron $1.',
-'backend-fail-maxsize' => 'Ne povis skribi la dosieron "$1," ĉar ĝi estas pli granda ol {{plural: $2|bitoko|$2 bitokoj}}.',
+'backend-fail-maxsize' => 'Ne povis skribi la dosieron "$1," ĉar ĝi estas pli granda ol {{PLURAL:$2|bitoko|$2 bitokoj}}.',
 'backend-fail-readonly' => 'La interna konservujo "$1" nune estas nurlega. La indikata kialo estas: "\'\'$2\'\'"',
 'backend-fail-synced' => 'La dosiero "$1" estas en nekohera stato kun la internaj konservujoj',
 'backend-fail-connect' => 'Ne eblis konekti la internan konservujon "$1".',
@@ -2012,6 +1993,8 @@ Kiam oni filtras ĝin laŭ uzanto, nur la aktuala versio de la dosiero estos mon
 'listfiles_size' => 'Grandeco',
 'listfiles_description' => 'Priskribo',
 'listfiles_count' => 'Versioj',
+'listfiles-latestversion-yes' => 'Jes',
+'listfiles-latestversion-no' => 'Ne',
 
 # File description page
 'file-anchor-link' => 'Dosiero',
@@ -2200,10 +2183,8 @@ Bonvolu kontroli aliajn ligilojn al la ŝablonoj antaŭ ol forigi ilin.',
 'protectedpages' => 'Protektitaj paĝoj',
 'protectedpages-indef' => 'Nur ĉiamaj protektaĵoj',
 'protectedpages-cascade' => 'Nur kaskadaj protektoj',
-'protectedpagestext' => 'La sekvaj paĝoj estas protektitaj kontraŭ movigo aŭ redaktado',
 'protectedpagesempty' => 'Neniuj paĝoj estas momente protektitaj kun ĉi tiuj parametroj.',
 'protectedtitles' => 'Protektitaj titoloj',
-'protectedtitlestext' => 'La jenaj titoloj estas protektitaj kontraŭ kreado',
 'protectedtitlesempty' => 'Neniuj titoloj estas nune protektitaj kun ĉi parametroj.',
 'listusers' => 'Uzantaro',
 'listusers-editsonly' => 'Montri uzantojn kun redaktoj nur',
@@ -2257,9 +2238,6 @@ Vi povas plistrikti la mendon per selektado de protokola speco, la salutnomo (in
 'allpagesto' => 'Montri paĝoj finante de:',
 'allarticles' => 'Ĉiuj paĝoj',
 'allinnamespace' => 'Ĉiuj paĝoj ($1 nomspaco)',
-'allnotinnamespace' => 'Ĉiuj paĝoj (ne en nomspaco $1)',
-'allpagesprev' => 'Antaŭen',
-'allpagesnext' => 'Sekven',
 'allpagessubmit' => 'Ek!',
 'allpagesprefix' => 'Montri paĝojn kun prefikso:',
 'allpagesbadtitle' => 'La donata paĝo estis nevalida aŭ havis interlingvan aŭ intervikian prefikson. Ĝi eble enhavas unu aŭ plurajn signojn kiu ne povas esti uzataj en titoloj.',
@@ -2385,8 +2363,8 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
 'notanarticle' => 'Ne estas artikolo',
 'notvisiblerev' => 'Versio estis forigita',
 'watchlist-details' => '{{PLURAL:$1|$1 paĝon|$1 paĝojn}} en via atentaro, krom diskutpaĝoj.',
-'wlheader-enotif' => 'Retpoŝta sciigo estas ebligita',
-'wlheader-showupdated' => "Montriĝas per '''dikaj literoj''' tiuj paĝoj, kiujn oni ŝanĝis ekde kiam vi laste vizitis ilin",
+'wlheader-enotif' => 'Retpoŝta sciigo estas ŝalta.',
+'wlheader-showupdated' => "Paĝoj montriĝis per '''dikaj literoj''' kiuj estis ŝanĝitaj ekde vi laste vizitis.",
 'watchmethod-recent' => 'traserĉas lastajn redaktojn',
 'watchmethod-list' => 'traserĉas priatentitajn',
 'watchlistcontains' => 'Via atentaro enhavas $1 {{PLURAL:$1|paĝon|paĝojn}}.',
@@ -2429,7 +2407,7 @@ Kontaktu la redaktinton:
 retpoŝte: $PAGEEDITOR_EMAIL
 vikie: $PAGEEDITOR_WIKI
 
-Ne estos aliaj avertoj kaze de sekvaj ŝanĝoj krom se vi vizitus ĉi tiun paĝon. Vi povas ankaŭ malaktivigi la avertsignalon por ĉiuj priatentitaj paĝoj de via atentaro.
+Ne estos aliaj avertoj kaze de sekvaj agoj krom se vi vizitus ĉi tiun paĝon ensalutite. Vi povas ankaŭ malaktivigi la avertsignalon por ĉiuj priatentitaj paĝoj de via atentaro.
 
             Sincere via, la avertsistemo de {{SITENAME}}
 
@@ -2494,7 +2472,7 @@ pro tio, ke oni intertempe redaktis aŭ restarigis la paĝon.
 La lasta redaktinto estis [[User:$3|$3]] ([[User talk:$3|diskuto]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "La resumo de la komento estis: \"''\$1''\".",
 'revertpage' => 'Malfaris redaktojn de [[Special:Contributions/$2|$2]] ([[User talk:$2|diskuto]]) al la lasta versio de [[User:$1|$1]]',
-'revertpage-nouser' => 'Restarigis redaktojn de (salutnomo forigita) al lasta revizio de [[User:$1|$1]]',
+'revertpage-nouser' => 'Restarigis redaktojn de (salutnomo forigita) al lasta revizio de {{GENDER:$1|[[User:$1|$1]]}}',
 'rollback-success' => 'Restaris redaktojn de $1; ŝanĝis al lasta versio de $2.',
 
 # Edit tokens
@@ -2592,7 +2570,6 @@ Vi verŝajne havas malbonan ligilon, aŭ la revizio eble estis restarigita aŭ f
 'undeletebtn' => 'Restarigi',
 'undeletelink' => 'vidi/restarigi',
 'undeleteviewlink' => 'vidi',
-'undeletereset' => 'Restarigi',
 'undeleteinvert' => 'Inversigi selektaĵon',
 'undeletecomment' => 'Kialo:',
 'undeletedrevisions' => '{{PLURAL:$1|1 versio restarigita|$1 versioj restarigitaj}}',
@@ -2634,7 +2611,7 @@ $1',
 'contributions' => 'Kontribuoj de {{GENDER:$1|uzanto|uzantino}}',
 'contributions-title' => 'Kontribuoj de uzanto $1',
 'mycontris' => 'Kontribuoj',
-'contribsub2' => 'De $1 ($2)',
+'contribsub2' => 'De {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Trovis neniajn redaktojn laŭ tiu kriterio.',
 'uctop' => ' (aktuala)',
 'month' => 'Ekde monato (kaj pli frue):',
@@ -2681,13 +2658,11 @@ Jen la lasta ero de la forbara protokolo:',
 'block' => 'Forbari uzanton',
 'unblock' => 'Malforbari uzanton',
 'blockip' => 'Forbari uzanton/IP-adreson',
-'blockip-title' => 'Forbari uzanton',
 'blockip-legend' => 'Forbari uzanton',
 'blockiptext' => "Per jena formularo vi povas forpreni de ajna nomo aŭ IP-adreso la rajton skribi en la vikio. Oni faru tion ''nur'' por eviti vandalismon, kaj sekvante la [[{{MediaWiki:Policy-url}}|regulojn pri forbarado]]. Klarigu la precizan kialon malsupre (ekzemple, citu paĝojn, kiuj estis vandaligitaj).",
 'ipadressorusername' => 'IP-adreso aŭ salutnomo:',
 'ipbexpiry' => 'Blokdaŭro',
 'ipbreason' => 'Kialo:',
-'ipbreasonotherlist' => 'Alia kaŭzo',
 'ipbreason-dropdown' => '*Oftaj kialoj de forbaro
 ** Enmetas malveraĵojn
 ** Forviŝas entenon el paĝoj
@@ -2703,8 +2678,6 @@ Jen la lasta ero de la forbara protokolo:',
 'ipbsubmit' => 'Bloki la uzanton',
 'ipbother' => 'Alia daŭro:',
 'ipboptions' => '2 horoj:2 hours,1 tago:1 day,3 tagoj:3 days,1 semajno:1 week,2 semajnoj:2 weeks,1 monato:1 month,3 monatoj:3 months,6 monatoj:6 months,1 jaro:1 year,porĉiam:infinite',
-'ipbotheroption' => 'alia',
-'ipbotherreason' => 'Alia/kroma kialo:',
 'ipbhidename' => 'Kaŝi salutnomon de redaktoj kaj listoj',
 'ipbwatchuser' => 'Atenti la paĝojn por uzanto kaj diskuto de ĉi tiu uzanto.',
 'ipb-disableusertalk' => 'Preventi ĉi tiun uzanton de redaktante ties propran diskuto-paĝon kiam forbarita',
@@ -2790,7 +2763,6 @@ La kialo donita por la forbaro de $1 estis: "$2"',
 'proxyblockreason' => 'Via IP-adreso estis forbarita ĉar ĝi estas malferma prokurilo. Bonvolu kontakti vian provizanto de retservo aŭ komputika helpisto kaj informu ilin de ĉi serioza problemo pri sekureco.',
 'sorbsreason' => 'Via IP-adreso estas listigita kiel malferma prokurilo en la DNSBL uzata de {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Via IP-adreso estas listigita kiel malferma prokurilo en la DNSBL uzata de {{SITENAME}}. Vi ne rajtas krei konton.',
-'cant-block-while-blocked' => 'Vi ne povas forbari aliajn uzantojn dum vi estas forbarita.',
 'cant-see-hidden-user' => 'La uzanto kiun vi provas forbari jam estis forbarita kaj kaŝita. Kiel vi ne havas la rajton kaŝi uzanton, vi ne povas vidi aŭ redakti la forbaron de la uzanto.',
 'ipbblocked' => 'Vi ne povas forbari aŭ malforbari aliajn uzantojn, ĉar vi mem estas forbarita',
 'ipbnounblockself' => 'Vi ne rajtas malforbari vin mem',
@@ -2830,7 +2802,7 @@ Vi povas ĝisdatigi alidirektilojn kiu indikas la originalan titolon aŭtomate.
 Se vi elektas ĝisdatigi permane, bonvolu kontroli [[Special:DoubleRedirects|duoblajn]] aŭ [[Special:BrokenRedirects|rompitajn alidirektilojn]].
 Vi estas responsa por certigi ke ligilojn direktas fidinde.
 
-Notu, ke la paĝo '''ne''' estos movita se jam ekzistas paĝo ĉe la nova titolo, krom se ĝi estas malplena aŭ alidirektilo al ĉi tiu paĝo, kaj sen antaŭa redaktohistorio.
+Notu, ke la paĝo '''ne''' estos movita se jam ekzistas paĝo ĉe la nova titolo, krom se tiu loko estas malplena aŭ alidirektilo al ĉi tiu paĝo, kaj sen antaŭa redaktohistorio.
 Pro tio, vi ja povos removi la paĝon je la antaŭa titolo se vi mistajpus, kaj ne povas forviŝi ekzistantan paĝon per movo.
 
 '''AVERTO!'''
@@ -2855,7 +2827,6 @@ Antaŭ daŭrigi, bonvolu certiĝi, ke vi komprenas la konsekvencojn de tiuj ĉi
 Tiujokaze, vi nepre permane kunigu la diskuto-paĝojn se vi tion deziras.",
 'movearticle' => 'Alinomigi paĝon',
 'moveuserpage-warning' => "'''Averto:''' Vi preskaŭ alinomigas paĝon de uzanto. Bonvolu noti ke nur la paĝo estos alinomigita kaj la uzanto mem ''ne'' estos alinomigita.",
-'movenologin' => 'Ne ensalutinta',
 'movenologintext' => 'Vi nepre estu registrita uzanto kaj [[Special:UserLogin|ensalutu]] por rajti movi paĝojn.',
 'movenotallowed' => 'Vi ne rajtas movi paĝojn.',
 'movenotallowedfile' => 'Vi ne havas rajton alinomigi dosierojn.',
@@ -2871,10 +2842,6 @@ Tiujokaze, vi nepre permane kunigu la diskuto-paĝojn se vi tion deziras.",
 'articleexists' => 'Paĝo kun tiu nomo jam ekzistas, aŭ la nomo kiun vi elektis ne validas.
 Bonvolu elekti alian nomon.',
 'cantmove-titleprotected' => 'Vi ne povas movi paĝo al ĉi loko, ĉar la nova titolo estis protektita kontraŭ kreado',
-'talkexists' => 'Oni ja sukcesis movi la paĝon mem, sed
-ne movis la diskuto-paĝon ĉar jam ekzistas tia ĉe la nova titolo.
-Bonvolu permane kunigi ilin.',
-'movedto' => 'alinomita al',
 'movetalk' => 'Transigi ankaŭ la "diskuto"-paĝon, se ĝi ekzistas.',
 'move-subpages' => 'Alinomigi ĉiujn subpaĝojn (maksimume $1)',
 'move-talk-subpages' => 'Alinomigi subpaĝojn de diskuto-paĝo (ĝis $1)',
@@ -3154,8 +3121,8 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
 'spam_reverting' => 'Restarigo de lasta versio ne entenante ligilojn al $1',
 'spam_blanking' => 'Forviŝo de ĉiuj versioj entenantaj ligilojn al $1',
 'spam_deleting' => 'Ĉiuj versioj enhavis ligilojn al $1 - forigante',
-'simpleantispam-label' => 'Kontrolo kontraŭ spamo.
-NE ENIGU ion ajn!',
+'simpleantispam-label' => "Kontrolo kontraŭ spamo.
+'''NE ENIGU''' ion ajn!",
 
 # Info page
 'pageinfo-title' => 'Informoj por "$1"',
@@ -3169,13 +3136,13 @@ NE ENIGU ion ajn!',
 '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',
+'pageinfo-robot-policy' => 'Indeksado per robotoj',
+'pageinfo-robot-index' => 'Permesata',
+'pageinfo-robot-noindex' => 'Malpermesata',
 'pageinfo-views' => 'Nombro de rigardoj',
 'pageinfo-watchers' => 'Nombro de paĝatentantoj',
 'pageinfo-few-watchers' => 'Malpli ol $1 {{PLURAL:$1|atentanto|atentantoj}}',
-'pageinfo-redirects-name' => 'Alidirektoj al ĉi tiu paĝo',
+'pageinfo-redirects-name' => 'Nombro da alidirektiloj al ĉi tiu paĝo',
 'pageinfo-subpages-name' => 'Subpaĝoj de ĉi tiu paĝo',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|alidirektilo|alidirektiloj}}; $3 {{PLURAL:$3|ne-alidirektilo|ne-alidirektiloj}})',
 'pageinfo-firstuser' => 'Kreinto de la paĝo',
@@ -3253,7 +3220,7 @@ $1',
 'svg-long-desc' => 'SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
 'svg-long-desc-animated' => 'Animata SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
 'svg-long-error' => 'Malvalida SVG-dosiero: $1',
-'show-big-image' => 'Plena distingivo',
+'show-big-image' => 'Fonta dosiero',
 'show-big-image-preview' => 'Grandeco de ĉi antaŭvido: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Alia distingivo|Aliaj distingivoj}}: $1.',
 'show-big-image-size' => '$1 × $2 rastrumeroj',
@@ -3711,15 +3678,10 @@ Aliaj estos kaŝitaj defaŭlte.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioritato difinita de uzanto ($1)',
 
-# External editor support
-'edit-externally' => 'Ŝanĝi ĉi tiun dosieron per ekstera programaro',
-'edit-externally-help' => "(Vidu la [https://www.mediawiki.org/wiki/Manual:External_editors instalinstrukciojn] por pliaj informoj.) ''[angle]''.",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ĉiuj',
 'namespacesall' => 'ĉiuj',
 'monthsall' => 'ĉiuj',
-'limitall' => 'ĉiuj',
 
 # Email address confirmation
 'confirmemail' => 'Konfirmi retadreson',
@@ -3738,7 +3700,6 @@ Retpoŝta programo respondis: $1',
 'confirmemail_needlogin' => 'Vi devas $1 por konfirmi vian retpoŝtan adreson.',
 'confirmemail_success' => 'Via retadreso estas konfirmita. Vi povas nun ensaluti kaj ĝui la vikion.',
 'confirmemail_loggedin' => 'Via retadreso estas nun konfirmita.',
-'confirmemail_error' => 'Io misokazis dum konservo de via konfirmo.',
 'confirmemail_subject' => 'Konfirmo de retadreso por {{SITENAME}}',
 'confirmemail_body' => 'Iu, verŝajne vi, ĉe la IP-adreso $1,
 enregistrigis konton "$2" ĉe {{SITENAME}} kun ĉi retadreso ĉe {{SITENAME}}.
@@ -3951,7 +3912,7 @@ Vi povas ankaŭ [[Special:EditWatchlist|redakti norme]].',
 'version-hook-name' => 'Nomo de hoko',
 'version-hook-subscribedby' => 'Abonita de',
 'version-version' => '(Versio $1)',
-'version-license' => 'Permesilo',
+'version-license' => 'Permesilo de MediaWiki',
 'version-poweredby-credits' => "Ĉi tiu vikio funkcias per '''[https://www.mediawiki.org/ MediaWiki]''', aŭtorrajto ©&thinsp;2001–$1 $2.",
 'version-poweredby-others' => 'aliaj',
 'version-credits-summary' => 'Ni ŝatus agnoski la sekvajn personojn pro siaj kontribuoj al [[Special:Version|MediaWiki]].',
@@ -3967,6 +3928,9 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 'version-entrypoints-header-entrypoint' => 'Eniropunkto',
 'version-entrypoints-header-url' => 'Retadreso',
 
+# Special:Redirect
+'redirect-submit' => 'Ek',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Serĉu duplikatajn dosierojn',
 'fileduplicatesearch-summary' => 'Serĉi duplikatajn dosierojn bazite de haketvaloro.',
@@ -3981,8 +3945,7 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 # Special:SpecialPages
 'specialpages' => 'Specialaj paĝoj',
 'specialpages-note' => '* Normaj specialaj paĝoj.
-* <strong class="mw-specialpagerestricted">Limigitaj specialaj paĝoj.</strong>
-* <span class="mw-specialpagecached">Memorkaŝitaj specialaj paĝoj (eble malaktualaj).</span>',
+* <span class="mw-specialpagerestricted">Limigitaj specialaj paĝoj.</span>',
 'specialpages-group-maintenance' => 'Raportoj pri prizorgado',
 'specialpages-group-other' => 'Aliaj specialaj paĝoj',
 'specialpages-group-login' => 'Ensaluti /  registriĝi',
@@ -4025,7 +3988,6 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 
 # Special:ComparePages
 'comparepages' => 'Kompari paĝojn',
-'compare-selector' => 'Kompari reviziojn de paĝo',
 'compare-page1' => 'Paĝo 1',
 'compare-page2' => 'Paĝo 2',
 'compare-rev1' => 'Revizio 1',
@@ -4066,14 +4028,14 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 'logentry-delete-delete' => '$1 forigis paĝon $3',
 'logentry-delete-restore' => '$1 restarigis paĝon $3',
 'logentry-delete-event' => '$1 ŝanĝis videblecon de {{PLURAL:$5|protokola evento|$5 protokolaj eventoj}} je $3: $4',
-'logentry-delete-revision' => '$1 ŝanĝis videblecon de {{PLURAL:$5|revizio|$5 reviziojn}} je paĝo $3: $4',
-'logentry-delete-event-legacy' => '$1 ŝanĝis videblecon de protokolaj eventoj en $3',
-'logentry-delete-revision-legacy' => '$1 ŝanĝis videblecon de revizioj en $3',
-'logentry-suppress-delete' => '$1 kaŝis paĝon $3',
-'logentry-suppress-event' => '$1 kaŝite ŝanĝis videblecon de {{PLURAL:$5|protokola evento|$5 protokolaj eventoj}} je $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|ŝanĝis}} videblecon de {{PLURAL:$5|revizio|$5 reviziojn}} je paĝo $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|ŝanĝis}} videblecon de protokolaj eventoj en $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|ŝanĝis}} videblecon de revizioj en $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|kaŝis}} paĝon $3',
+'logentry-suppress-event' => '$1 kaŝite {{GENDER:$2|ŝanĝis}} videblecon de {{PLURAL:$5|protokola evento|$5 protokolaj eventoj}} je $3: $4',
 'logentry-suppress-revision' => '$1 kaŝite ŝanĝis videblecon de {{PLURAL:$5|revizio|$5 reviziojn}} je paĝo $3: $4',
-'logentry-suppress-event-legacy' => '$1 kaŝite ŝanĝis videblecon de protokolaj eventoj en $3',
-'logentry-suppress-revision-legacy' => '$1 kaŝite ŝanĝis videblecon de revizioj en paĝo $3',
+'logentry-suppress-event-legacy' => '$1 kaŝite {{GENDER:$2|ŝanĝis}} videblecon de protokolaj eventoj en $3',
+'logentry-suppress-revision-legacy' => '$1 kaŝite {{GENDER:$2|ŝanĝis}} videblecon de revizioj en paĝo $3',
 'revdelete-content-hid' => 'enhavo kaŝita',
 'revdelete-summary-hid' => 'resumo de redakto kaŝita',
 'revdelete-uname-hid' => 'salutnomo kaŝita',
@@ -4086,13 +4048,13 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
 'logentry-move-move-noredirect' => '$1 movis paĝon $3 al $4 ne lasante alidirektilon',
 'logentry-move-move_redir' => '$1 movis paĝon $3 al $4 anstataŭigante alidirektilon',
 'logentry-move-move_redir-noredirect' => '$1 movis paĝon $3 al $4 anstataŭigante alidirektilon ne lasante alidirektilon',
-'logentry-patrol-patrol' => '$1 markis revizion $4 de paĝo $3 patrolita',
-'logentry-patrol-patrol-auto' => '$1 aŭtomate markis revizion $4 de paĝo $3 patrolita',
-'logentry-newusers-newusers' => 'Konto de uzanto $1 estis kreita',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|markis}} revizion $4 de paĝo $3 patrolita',
+'logentry-patrol-patrol-auto' => '$1 aŭtomate {{GENDER:$2|markis}} revizion $4 de paĝo $3 patrolita',
+'logentry-newusers-newusers' => 'Konto de uzanto $1 estis {{GENDER:$2|kreita}}',
 'logentry-newusers-create' => 'Konto de uzanto $1 estis kreita',
 'logentry-newusers-create2' => 'Konto de uzanto $3 estis kreita de $1',
 'logentry-newusers-byemail' => 'Konto de uzanto $3 estis kreita de $1 kaj pasvorto estis sendita per retpoŝto',
-'logentry-newusers-autocreate' => 'Uzantokonto $1 estis kreita aŭtomate',
+'logentry-newusers-autocreate' => 'Uzantokonto $1 estis {{GENDER:$2|kreita}} aŭtomate',
 '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',
 'logentry-rights-autopromote' => '$1 estis aŭtomate {{GENDER:$2|altrangigita}} de $4 al $5',
index 54cfdb3..a36e5e0 100644 (file)
@@ -77,6 +77,7 @@
  * @author Penarc
  * @author PerroVerd
  * @author Pertile
+ * @author Peter Bowman
  * @author Pginer
  * @author Piolinfax
  * @author Platonides
@@ -86,6 +87,7 @@
  * @author Remember the dot
  * @author Remux
  * @author Richard Wolf VI
+ * @author Salvador alc
  * @author Sanbec
  * @author Savh
  * @author Shirayuki
@@ -139,12 +141,12 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'UsuariosActivos' ),
        'Allmessages'               => array( 'TodosLosMensajes' ),
+       'AllMyUploads'              => array( 'TodasMisSubidas', 'TodosMisArchivos' ),
        'Allpages'                  => array( 'Todas', 'Todas_las_páginas' ),
        'Ancientpages'              => array( 'PáginasAntiguas', 'Páginas_antiguas' ),
        'Badtitle'                  => array( 'Título_incorrecto' ),
-       'Blankpage'                 => array( 'BlanquearPágina', 'Blanquear_página' ),
+       'Blankpage'                 => array( 'PáginaEnBlanco', 'BlanquearPágina', 'Blanquear_página', 'Página_en_blanco' ),
        'Block'                     => array( 'Bloquear' ),
-       'Blockme'                   => array( 'Bloquearme' ),
        'Booksources'               => array( 'FuentesDeLibros', 'Fuentes_de_libros' ),
        'BrokenRedirects'           => array( 'RedireccionesRotas', 'Redirecciones_rotas' ),
        'Categories'                => array( 'Categorías' ),
@@ -156,10 +158,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_una_cuenta', 'CrearCuenta' ),
        'Deadendpages'              => array( 'PáginasSinSalida', 'Páginas_sin_salida' ),
        'DeletedContributions'      => array( 'ContribucionesBorradas', 'Contribuciones_Borradas' ),
-       'Disambiguations'           => array( 'Desambiguaciones', 'Desambiguación' ),
        'DoubleRedirects'           => array( 'RedireccionesDobles', 'Redirecciones_dobles' ),
        'EditWatchlist'             => array( 'EditarSeguimiento' ),
        'Emailuser'                 => array( 'Enviar_correo_electrónico', 'MandarEmailUsuario' ),
+       'ExpandTemplates'           => array( 'Sustituir_plantillas', 'Sustituidor_de_plantillas', 'Expandir_plantillas' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'MenosEdiciones', 'Menos_ediciones' ),
        'FileDuplicateSearch'       => array( 'BuscarArchivosDuplicados', 'Buscar_archivos_duplicados' ),
@@ -201,9 +203,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PáginasProtegidas', 'Páginas_protegidas' ),
        'Protectedtitles'           => array( 'TítulosProtegidos', 'Títulos_protegidos' ),
        'Randompage'                => array( 'Aleatoria', 'Aleatorio', 'Página_aleatoria' ),
+       'RandomInCategory'          => array( 'Aleatorio_en_categoría' ),
        'Randomredirect'            => array( 'RedirecciónAleatoria', 'Redirección_aleatoria' ),
        'Recentchanges'             => array( 'CambiosRecientes', 'Cambios_recientes' ),
        'Recentchangeslinked'       => array( 'CambiosEnEnlazadas', 'Cambios_en_enlazadas' ),
+       'Redirect'                  => array( 'Redirigir' ),
+       'ResetTokens'               => array( 'ReestablecerClaves' ),
        'Revisiondelete'            => array( 'BorrarRevisión', 'Borrar_revisión' ),
        'Search'                    => array( 'Buscar' ),
        'Shortpages'                => array( 'PáginasCortas', 'Páginas_cortas' ),
@@ -222,6 +227,7 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'PlantillasSinUso', 'Plantillas_sin_uso' ),
        'Unwatchedpages'            => array( 'PáginasSinVigilar', 'Páginas_sin_vigilar' ),
        'Upload'                    => array( 'SubirArchivo', 'Subir_archivo' ),
+       'UploadStash'               => array( 'ArchivosEscondidos', 'FicherosEscondidos' ),
        'Userlogin'                 => array( 'Entrar', 'Entrada_del_usuario' ),
        'Userlogout'                => array( 'Salida_del_usuario', 'Salir' ),
        'Userrights'                => array( 'PermisosUsuarios', 'Permisos_de_usuarios' ),
@@ -284,6 +290,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'NOMBRECOMPLETODEPAGINAC', 'NOMBRECOMPLETODEPÁGINAC', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'NOMBREDESUBPAGINA', 'NOMBREDESUBPÁGINA', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'NOMBREDESUBPAGINAC', 'NOMBREDESUBPÁGINAC', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'NOMBREDEPAGINARAIZ', 'NOMBREDEPÁGINARAÍZ', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'NOMBREDEPAGINARAIZC', 'NOMBREDEPÁGINARAÍZC', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'NOMBREDEPAGINABASE', 'NOMBREDEPÁGINABASE', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'NOMBREDEPAGINABASEC', 'NOMBREDEPÁGINABASEC', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'NOMBREDEPÁGINADEDISCUSIÓN', 'NOMBREDEPAGINADEDISCUSION', 'NOMBREDEPAGINADISCUSION', 'NOMBREDEPÁGINADISCUSIÓN', 'TALKPAGENAME' ),
@@ -397,7 +405,6 @@ $messages = array(
 'tog-minordefault' => 'Marcar todas las ediciones como menores de manera predeterminada',
 'tog-previewontop' => 'Mostrar previsualización antes del cuadro de edición',
 'tog-previewonfirst' => 'Mostrar previsualización en la primera edición',
-'tog-nocache' => 'Desactivar la caché de páginas del navegador',
 'tog-enotifwatchlistpages' => 'Enviarme un correo electrónico cuando se modifique una página o un archivo de mi lista de seguimiento',
 'tog-enotifusertalkpages' => 'Enviarme un correo electrónico cuando se modifique mi página de discusión',
 'tog-enotifminoredits' => 'Notificarme también por correo electrónico los cambios menores de las páginas y archivos',
@@ -417,7 +424,7 @@ $messages = array(
 'tog-diffonly' => "No mostrar bajo las ''diferencias'' el contenido de la página",
 'tog-showhiddencats' => 'Mostrar las categorías escondidas',
 'tog-noconvertlink' => 'Desactivar la conversión de título de enlace',
-'tog-norollbackdiff' => "Omitir la ''diferencia'' después de revertir",
+'tog-norollbackdiff' => 'Omitir la diferencia después de revertir',
 'tog-useeditwarning' => 'Advertirme cuando abandone una página editada con cambios sin grabar',
 'tog-prefershttps' => 'Utiliza una conexión segura siempre que haya iniciado una sesión',
 
@@ -446,7 +453,7 @@ $messages = array(
 'wed' => 'mié',
 'thu' => 'jue',
 'fri' => 'vie',
-'sat' => 'sab',
+'sat' => 'sáb',
 'january' => 'enero',
 'february' => 'febrero',
 'march' => 'marzo',
@@ -533,7 +540,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Opciones de página',
 'qbmyoptions' => 'Mis páginas',
-'qbspecialpages' => 'Páginas especiales',
 'faq' => 'Preguntas más frecuentes',
 'faqpage' => 'Project:P+F',
 
@@ -606,7 +612,7 @@ $messages = array(
 'redirectedfrom' => '(Redirigido desde «$1»)',
 'redirectpagesub' => 'Página de redirección',
 'lastmodifiedat' => 'Esta página fue modificada por última vez el $1, a las $2.',
-'viewcount' => 'Esta página ha sido visitada {{PLURAL:$1|una vez|$1 veces}}.',
+'viewcount' => 'Esta página se ha visitado {{PLURAL:$1|una vez|$1 veces}}.',
 'protectedpage' => 'Página protegida',
 'jumpto' => 'Saltar a:',
 'jumptonavigation' => 'navegación',
@@ -742,16 +748,13 @@ Por favor, avisa a un [[Special:ListUsers/sysop|administrador]], tomando nota de
 Puede que ya haya sido borrado por alguien más.',
 'cannotdelete-title' => 'No se puede borrar la página «$1»',
 'delete-hook-aborted' => 'La modificación que intentaste hacer fue cancelada por un gancho de extensión. No hay explicación disponible.',
-'no-null-revision' => 'No se pudo crear la nueva revisión nula para la página "$1"',
+'no-null-revision' => 'No se pudo crear la revisión nula para la página «$1»',
 'badtitle' => 'Título incorrecto',
 'badtitletext' => 'El título de la página solicitada está vacío, no es válido, o es un enlace interidioma o interwiki incorrecto.
 Puede que contenga uno o más caracteres que no se pueden usar en los títulos.',
 'perfcached' => 'Los siguientes datos provienen de la caché y pueden no estar actualizados. La caché puede contener {{PLURAL:$1|un resultado|$1 resultados}} como máximo.',
 'perfcachedts' => 'Los siguientes datos provienen de la caché y su última fecha y hora de actualización es: $1. La caché puede contener {{PLURAL:$4|un resultado|$4 resultados}} como máximo.',
 'querypage-no-updates' => 'Actualmente las actualizaciones de esta página están desactivadas. Estos datos no serán actualizados a corto plazo.',
-'wrong_wfQuery_params' => 'Parámetros incorrectos para wfQuery()<br />
-Función: $1<br />
-Consulta: $2',
 'viewsource' => 'Ver código',
 'viewsource-title' => 'Ver el código de «$1»',
 'actionthrottled' => 'Acción limitada',
@@ -786,7 +789,7 @@ El administrador que lo ha bloqueado ofrece esta explicación: "$3".',
 
 # Virus scanner
 'virus-badscanner' => "Error de configuración: Antivirus desconocido: ''$1''",
-'virus-scanfailed' => 'Escaneo fallido (código $1)',
+'virus-scanfailed' => 'falló el análisis (código $1)',
 'virus-unknownscanner' => 'antivirus desconocido:',
 
 # Login and logout pages
@@ -798,7 +801,7 @@ No olvides personalizar tus [[Special:Preferences|preferencias de {{SITENAME}}]]
 'yourname' => 'Nombre de usuario:',
 'userlogin-yourname' => 'Usuario',
 'userlogin-yourname-ph' => 'Escribe tu nombre de usuario',
-'createacct-another-username-ph' => 'Ingrese el nombre de usuario',
+'createacct-another-username-ph' => 'Escribe el nombre de usuario',
 'yourpassword' => 'Contraseña:',
 'userlogin-yourpassword' => 'Contraseña',
 'userlogin-yourpassword-ph' => 'Escribe tu contraseña',
@@ -835,7 +838,7 @@ No olvides personalizar tus [[Special:Preferences|preferencias de {{SITENAME}}]]
 Usa el formulario de abajo para iniciar sesión como otro usuario.',
 'userlogin-createanother' => 'Crear otra cuenta',
 'createacct-join' => 'Introduce tus datos debajo.',
-'createacct-another-join' => 'Introduzca la información de la nueva cuenta a continuación.',
+'createacct-another-join' => 'Escribe la información de la cuenta nueva a continuación.',
 'createacct-emailrequired' => 'Dirección de correo electrónico',
 'createacct-emailoptional' => 'Dirección de correo electrónico (opcional)',
 'createacct-email-ph' => 'Escribe tu dirección de correo electrónico',
@@ -876,13 +879,13 @@ Revisa la ortografía, o [[Special:UserLogin/signup|crea una cuenta nueva]].',
 'nouserspecified' => 'Debes especificar un nombre de usuario.',
 'login-userblocked' => 'Este usuario está bloqueado. Inicio de sesión no permitido.',
 'wrongpassword' => 'La contraseña indicada es incorrecta.
-Por favor, inténtalo de nuevo.',
+Inténtalo de nuevo.',
 'wrongpasswordempty' => 'No has escrito una contraseña.
-Por favor, inténtalo de nuevo.',
+Inténtalo de nuevo.',
 'passwordtooshort' => 'Las contraseñas deben tener al menos {{PLURAL:$1|1 caracter|$1 caracteres}}.',
 'password-name-match' => 'Tu contraseña debe ser diferente de tu nombre de usuario.',
 'password-login-forbidden' => 'El uso de este nombre de usuario y contraseña han sido prohibidos.',
-'mailmypassword' => 'Enviar una nueva contraseña por correo electrónico',
+'mailmypassword' => 'Restablecer la contraseña',
 'passwordremindertitle' => 'Recordatorio de contraseña de {{SITENAME}}',
 'passwordremindertext' => 'Alguien (probablemente tú, desde la dirección IP $1) solicitó que te enviáramos una nueva contraseña para tu cuenta en {{SITENAME}} ($4).
 Se ha creado la siguiente contraseña temporal para el usuario «$2»: «$3»
@@ -922,8 +925,8 @@ Puedes ignorar este mensaje si esta cuenta fue creada por error.',
 'login-abort-generic' => 'Tu inicio de sesión no fue exitoso - Cancelado',
 'loginlanguagelabel' => 'Idioma: $1',
 'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
-'createacct-another-realname-tip' => 'El nombre Real es opcional.
-Si elige proporcionarlo, se usará para dar al usuario la atribución de su trabajo.',
+'createacct-another-realname-tip' => 'El nombre real es opcional.
+Si se proporciona, se usará para dar al usuario la atribución de su trabajo.',
 
 # Email sending
 'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
@@ -931,9 +934,9 @@ Si elige proporcionarlo, se usará para dar al usuario la atribución de su trab
 'user-mail-no-body' => 'Trató de enviar un correo electrónico con un cuerpo vacío o excesivamente corto.',
 
 # Change password dialog
-'resetpass' => 'Cambiar la contraseña',
+'changepassword' => 'Cambiar contraseña',
 'resetpass_announce' => 'Has iniciado sesión con una contraseña temporal que fue enviada por correo electrónico.
-Por favor, introduce una nueva contraseña aquí:',
+Establece una contraseña nueva aquí:',
 'resetpass_text' => '<!-- Añada texto aquí -->',
 'resetpass_header' => 'Cambiar la contraseña de la cuenta',
 'oldpassword' => 'Contraseña antigua:',
@@ -953,7 +956,7 @@ Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
 # Special:PasswordReset
 'passwordreset' => 'Restablecimiento de contraseña',
 'passwordreset-text-one' => 'Completa este formulario para restablecer tu contraseña.',
-'passwordreset-text-many' => '{{PLURAL:$1|Completa uno de los campos para restablecer tu contraseña.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Rellena uno de los campos para restablecer la contraseña.}}',
 'passwordreset-legend' => 'Restablecer contraseña',
 'passwordreset-disabled' => 'Se ha desactivado el restablecimiento de contraseñas en este wiki.',
 'passwordreset-emaildisabled' => 'Las funciones de correo electrónico han sido desactivadas en esta wiki.',
@@ -992,8 +995,8 @@ Contraseña temporal: $2',
 'changeemail-header' => 'Cambiar la dirección de correo de la cuenta',
 'changeemail-text' => 'Rellena este formulario para cambiar tu dirección de correo electrónico. Debes introducir la contraseña para confirmar este cambio.',
 'changeemail-no-info' => 'Debes iniciar sesión para acceder directamente a esta página.',
-'changeemail-oldemail' => 'Dirección de correo electrónico actual:',
-'changeemail-newemail' => 'Nueva dirección de correo electrónico:',
+'changeemail-oldemail' => 'Dirección electrónica actual:',
+'changeemail-newemail' => 'Dirección electrónica nueva:',
 'changeemail-none' => '(ninguna)',
 'changeemail-password' => 'Tu contraseña en {{SITENAME}}:',
 'changeemail-submit' => 'Cambiar correo electrónico',
@@ -1104,10 +1107,10 @@ Puedes [[Special:Search/{{PAGENAME}}|buscar el título de esta página]] en otra
 o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
 'noarticletext-nopermission' => 'Actualmente no hay texto en esta página.
 Puedes [[Special:Search/{{PAGENAME}}|buscar este título de página]] en otras páginas, o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados]</span>, pero no tienes permiso para crear esta página.',
-'missing-revision' => 'La revisión #$1 de la página «{{PAGENAME}}» no existe.
+'missing-revision' => 'La revisión n.º $1 de la página llamada «{{PAGENAME}}» no existe.
 
-Esto suele deberse a seguir un enlace obsoleto hacia el historial de una página que ya ha sido borrada.
-Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrado].',
+Normalmente esto ocurre cuando se sigue un enlace de historial obsoleto que apunta a una página ya borrada.
+Puedes encontrar detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].',
 'userpage-userdoesnotexist' => 'La cuenta de usuario «<nowiki>$1</nowiki>» no está registrada. Por favor comprueba si quieres crear o editar esta página.',
 'userpage-userdoesnotexist-view' => 'La cuenta de usuario «$1» no está registrada.',
 'blocked-notice-logextract' => 'Este usuario está actualmente bloqueado.
@@ -1127,15 +1130,15 @@ La última entrada del registro de bloqueos se proporciona debajo para mayor ref
 '''¡Aún no se ha guardado!'''",
 'sitejspreview' => "'''Recuerda que sólo estás previsualizando este código JavaScript.'''
 '''¡Aún no se ha guardado!'''",
-'userinvalidcssjstitle' => "'''Aviso:''' No existe la piel «$1». Recuerda que las páginas personalizadas ''.css'' y ''.js'' tienen un título en minúsculas. Por ejemplo, {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
+'userinvalidcssjstitle' => "'''Aviso:''' No existe la apariencia «$1». Recuerda que las páginas personalizadas ''.css'' y ''.js'' tienen un título en minúsculas. Por ejemplo, {{ns:user}}:Ejemplo/vector.css en vez de {{ns:user}}:Ejemplo/Vector.css.",
 'updated' => '(Actualizado)',
 'note' => "'''Nota:'''",
 'previewnote' => "'''Recuerda que esto es solo una previsualización.'''
 ¡Tus cambios aún no se han guardado!",
 'continue-editing' => 'Ir al área de edición',
 'previewconflict' => 'Esta previsualización refleja el texto en el área de edición superior como aparecerá una vez guardados los cambios.',
-'session_fail_preview' => "'''Lo sentimos, no pudimos procesar la edición debido a una pérdida de los datos de sesión.'''
-Por favor, inténtalo de nuevo.
+'session_fail_preview' => "'''No se pudo procesar la edición debido a una pérdida de los datos de sesión.'''
+Inténtalo de nuevo.
 Si el problema persiste, [[Special:UserLogout|cierra la sesión]] y vuelve a identificarte.",
 'session_fail_preview_html' => "'''Lo sentimos, no hemos podido procesar tu cambio debido a una pérdida de datos de sesión.'''
 
@@ -1216,6 +1219,8 @@ Ya existe.',
 'content-not-allowed-here' => 'El contenido "$1" no está permitido en la página [[$2]]',
 'editwarning-warning' => 'Si abandonas esta página perderás tus cambios.
 Si estás identificado, puedes deshabilitar esta advertencia en la sección "Edición" de tus preferencias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contenido no admitido',
+'editpage-notsupportedcontentformat-text' => 'El formato de contenido $1 no es compatible con el modelo de contenido  $2.',
 
 # Content models
 'content-model-wikitext' => 'texto wiki',
@@ -1256,6 +1261,9 @@ Ese o esos parámetros han sido omitidos.',
 'cantcreateaccounttitle' => 'No se puede crear la cuenta',
 'cantcreateaccount-text' => "La creación de cuentas desde esta dirección IP ('''$1''') ha sido bloqueada por [[User:$3|$3]].
 
+El motivo dado por $3 es ''$2''",
+'cantcreateaccount-range-text' => "La creación de cuentas de usuario desde direcciones IP en el rango '''$1''', que incluye tu dirección IP ('''$4'''), ha sido bloqueada por [[User:$3|$3]].
+
 El motivo dado por $3 es ''$2''",
 
 # History pages
@@ -1326,10 +1334,6 @@ Aún tiene la posibilidad de verla; puede ampliar los detalles en el [{{fullurl:
 'revisiondelete' => 'Borrar/restaurar revisiones',
 'revdelete-nooldid-title' => 'No hay revisión destino',
 'revdelete-nooldid-text' => 'No se ha especificado una revisión o revisiones destino sobre las que realizar esta función.',
-'revdelete-nologtype-title' => 'ningún nombre dado',
-'revdelete-nologtype-text' => 'No has especificado ningún nombre para ejecutar esta acción.',
-'revdelete-nologid-title' => 'Entrada de registro no válida',
-'revdelete-nologid-text' => 'Tampoco has especificado un objetivo de eventos para ejecutar esta función o la entrada especificada no existe.',
 'revdelete-no-file' => 'El archivo especificado no existe.',
 'revdelete-show-file-confirm' => '¿Quieres ver la revisión borrada del archivo «<nowiki>$1</nowiki>» del $2 a las $3?',
 'revdelete-show-file-submit' => 'Sí',
@@ -1339,9 +1343,9 @@ Aún tiene la posibilidad de verla; puede ampliar los detalles en el [{{fullurl:
 Otros administradores de {{SITENAME}} aún podrán acceder al contenido oculto y podrán deshacer el borrado a través de la misma interfaz, a menos que se establezcan restricciones adicionales.",
 'revdelete-confirm' => 'Por favor confirma que deseas realizar la operación, que entiendes las consecuencias y que estás ejecutando dicha acción acorde con [[{{MediaWiki:Policy-url}}|las políticas]].',
 'revdelete-suppress-text' => "La herramienta de supresión '''solo''' debería usarse en los siguientes casos:
-* Información potencialmente injuriosa o calumniante.
-* Información personal inapropiada, tal como:
-*: ''nombres, domicilios, números de teléfono, números de la seguridad social e información análoga.",
+* información potencialmente injuriosa o calumniante.
+* información personal inapropiada, tal como:
+*: ''nombres, domicilios, números de teléfono, números de la seguridad social e información análoga.''",
 'revdelete-legend' => 'Establecer restricciones de revisión:',
 'revdelete-hide-text' => 'Texto de la revisión',
 'revdelete-hide-image' => 'Ocultar el contenido del archivo',
@@ -1363,8 +1367,6 @@ $1",
 'logdelete-failure' => "'''La visibilidad del registro no pudo ser ajustada:'''
 $1",
 'revdel-restore' => 'cambiar visibilidad',
-'revdel-restore-deleted' => 'revisiones borradas',
-'revdel-restore-visible' => 'revisiones visibles',
 'pagehist' => 'Historial de la página',
 'deletedhist' => 'Historial borrado',
 'revdelete-hide-current' => 'Error al ocultar el objeto de fecha $1 a las $2: es la revisión actual.
@@ -1443,12 +1445,8 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 # Search results
 'searchresults' => 'Resultados de la búsqueda',
 'searchresults-title' => 'Resultados de la búsqueda de «$1»',
-'searchresulttext' => 'Para más información acerca de las búsquedas en {{SITENAME}}, consulta la [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Has buscado \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas las páginas que empiezan por "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|todas las páginas que enlazan con «$1»]])',
-'searchsubtitleinvalid' => "Has buscado '''$1'''",
 'toomanymatches' => 'Se han obtenido muchos resultados; por favor intenta una consulta diferente',
 'titlematches' => 'Coincidencias de título de artículo',
-'notitlematches' => 'No hay coincidencias de título de artículo',
 'textmatches' => 'Coincidencias de texto de artículo',
 'notextmatches' => 'No hay coincidencias de texto de artículo',
 'prevn' => '{{PLURAL:$1|$1}} previas',
@@ -1457,10 +1455,8 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'nextn-title' => 'Próximos $1 {{PLURAL:$1|resultado|resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opciones de búsqueda',
 'searchmenu-exists' => "'''Hay una página llamada \"[[:\$1]]\" en esta wiki.'''",
 'searchmenu-new' => "'''¡Crea la página «[[:$1]]» en este wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Otras páginas con este prefijo]]',
 'searchprofile-articles' => 'Páginas de contenido',
 'searchprofile-project' => 'Páginas de ayuda y de proyecto',
 'searchprofile-images' => 'Multimedia',
@@ -1481,21 +1477,16 @@ Los detalles pueden encontrarse en el [{{fullurl:{{#Special:Log}}/delete|page={{
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(más)',
 'search-relatedarticle' => 'Relacionado',
-'mwsuggest-disable' => 'Desactivar las sugerencias de búsqueda',
 'searcheverything-enable' => 'Buscar en todos los espacios de nombres',
 'searchrelated' => 'relacionado',
 'searchall' => 'todos',
 'showingresults' => "Abajo se {{PLURAL:$1|muestra '''1''' resultado|muestran hasta '''$1''' resultados}} comenzando por el n.º '''$2'''.",
 'showingresultsnum' => "Abajo se {{PLURAL:$3|muestra '''1''' resultado|muestran los '''$3''' resultados}} comenzando por el n.º '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': De manera predeterminada solo se busca en algunos espacios de nombres.
-Prueba a usar el prefijo ''all:'' para buscar en todo el contenido (incluyendo páginas de discusión, plantillas, etc.) o usa el espacio de nombres que quieras como prefijo.",
 'search-nonefound' => 'No hay resultados que cumplan los criterios de búsqueda.',
-'powersearch' => 'Búsqueda avanzada',
 'powersearch-legend' => 'Búsqueda avanzada',
 'powersearch-ns' => 'Buscar en los espacios de nombres:',
 'powersearch-redir' => 'Listar redirecciones',
-'powersearch-field' => 'Buscar',
 'powersearch-togglelabel' => 'Seleccionar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Ninguno',
@@ -1509,7 +1500,6 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 'mypreferences' => 'Preferencias',
 'prefs-edits' => 'Cantidad de ediciones:',
 'prefsnologintext2' => 'Necesitas $1 para definir las preferencias del usuario.',
-'changepassword' => 'Cambiar contraseña',
 'prefs-skin' => 'Apariencia',
 'skin-preview' => 'Previsualizar',
 'datedefault' => 'Sin preferencia',
@@ -1532,13 +1522,11 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 'prefs-email' => 'Opciones de correo electrónico',
 'prefs-rendering' => 'Apariencia',
 'saveprefs' => 'Guardar',
-'resetprefs' => 'Limpiar cambios sin guardar',
 'restoreprefs' => 'Restaurar la configuración predeterminada',
 'prefs-editing' => 'Edición',
 'rows' => 'Filas:',
 'columns' => 'Columnas:',
 'searchresultshead' => 'Búsquedas',
-'resultsperpage' => 'Resultados por página:',
 'stub-threshold' => 'Límite para formato de <a href="#" class="stub">enlace a esbozo</a> (bytes):',
 'stub-threshold-disabled' => 'Desactivado',
 'recentchangesdays' => 'Días a mostrar en cambios recientes:',
@@ -1549,11 +1537,10 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
 Cualquier persona que la conozca podría leer tu lista, así que no la compartas.
 [[Special:ResetTokens|Pulsa aquí si necesitas restablecerla]].',
 'savedprefs' => 'Se han guardado tus preferencias.',
-'timezonelegend' => 'Zona horaria:',
+'timezonelegend' => 'Huso horario:',
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar la hora del servidor ($1)',
 'timezoneuseoffset' => 'Otra (especifica la diferencia horaria)',
-'timezoneoffset' => 'Diferencia¹:',
 'servertime' => 'Hora del servidor:',
 'guesstimezone' => 'Rellenar a partir de la hora del navegador',
 'timezoneregion-africa' => 'África',
@@ -1621,6 +1608,7 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'prefs-tokenwatchlist' => 'Clave',
 'prefs-diffs' => 'Diferencias',
 'prefs-help-prefershttps' => 'Esta preferencia tendrá efecto en tu próximo inicio de sesión.',
+'prefs-tabs-navigation-hint' => 'Sugerencia: Puede utilizar las teclas de flecha izquierda y derecha para navegar entre las pestañas de la lista de pestañas.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'La dirección de correo electrónico parece ser válida',
@@ -1806,8 +1794,9 @@ Tu dirección de correo no se revela cuando otros usuarios te contactan.',
 'recentchanges-label-minor' => 'Esta es una edición menor',
 'recentchanges-label-bot' => 'Esta edición fue realizada por un robot',
 'recentchanges-label-unpatrolled' => 'Esta edición todavía no se ha patrullado',
-'recentchanges-legend-newpage' => '$1 - página nueva',
-'rcnote' => "Debajo {{PLURAL:$1|hay '''1''' cambio efectuado|están los últimos '''$1''' cambios efectuados}} en  {{PLURAL:$2|el último día|los últimos '''$2''' días}}, hasta el $4, $5.",
+'recentchanges-label-plusminus' => 'El tamaño de la página cambió esta cantidad de bytes',
+'recentchanges-legend-heading' => "'''Leyenda:'''",
+'recentchanges-legend-newpage' => '(véase también la [[Special:NewPages|lista de páginas nuevas]])',
 'rcnotefrom' => 'A continuación se muestran los cambios desde <b>$2</b> (hasta <b>$1</b>).',
 'rclistfrom' => 'Mostrar nuevos cambios desde $1',
 'rcshowhideminor' => '$1 ediciones menores',
@@ -1926,6 +1915,7 @@ Si tiene esta imagen a toda resolución súbala, si no, por favor cambie el nomb
 Si todavía quiere subir su archivo, por favor, regrese a la página anterior y use otro nombre. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Este archivo es un duplicado {{PLURAL:$1|del siguiente|de los siguientes}}:',
 'file-deleted-duplicate' => 'Un archivo idéntico a este ([[:$1]]) ha sido borrado con anterioridad. Debes comprobar el historial de borrado del archivo ante de volver a subirlo.',
+'file-deleted-duplicate-notitle' => 'Un archivo idéntico a este ha sido borrado con anterioridad, y el título ha sido suprimido. Deberías contactar con alguien capaz de ver los datos de archivos borrados para que revise esta situación antes de proceder a subir de nuevo este archivo.',
 'uploadwarning' => 'Advertencia de subida de archivo',
 'uploadwarning-text' => 'Por favor, modifique la descripción del archivo abajo indicada e inténtelo de nuevo.',
 'savefile' => 'Guardar archivo',
@@ -2183,7 +2173,7 @@ Tal vez desee editar la descripción de su [$2 página de descripción del archi
 'filedelete-maintenance-title' => 'No se puede eliminar el archivo',
 
 # MIME search
-'mimesearch' => 'Búsqueda MIME',
+'mimesearch' => 'Búsqueda por MIME',
 'mimesearch-summary' => 'Esta página permite el filtrado de ficheros por su tipo MIME.
 Entrada: contenttype/subtype, p. ej. <code>image/jpeg</code>.',
 'mimetype' => 'Tipo MIME:',
@@ -2270,6 +2260,7 @@ Las entradas <del>tachadas</del> han sido resueltas.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|enlace|enlaces}}',
 'nmembers' => '$1 {{PLURAL:$1|artículo|artículos}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|miembro|miembros}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisión|revisiones}}',
 'nviews' => '$1 {{PLURAL:$1|vista|vistas}}',
 'nimagelinks' => 'Usado en {{PLURAL:$1|una página|$1 páginas}}',
@@ -2308,10 +2299,9 @@ Las entradas <del>tachadas</del> han sido resueltas.',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Sólo protecciones indefinidas',
 'protectedpages-cascade' => 'Sólo protecciones en cascada',
-'protectedpagestext' => 'Las siguientes páginas están protegidas para su edición o traslado',
+'protectedpages-noredirect' => 'Ocultar redirecciones',
 'protectedpagesempty' => 'Actualmente no hay ninguna página protegida con esos parámetros.',
 'protectedtitles' => 'Títulos protegidos',
-'protectedtitlestext' => 'Los siguientes títulos están protegidos, por lo que no se pueden crear',
 'protectedtitlesempty' => 'Actualmente no existen entradas protegidas con esos parámetros.',
 'listusers' => 'Lista de usuarios',
 'listusers-editsonly' => 'Muestra sólo usuarios con ediciones',
@@ -2363,9 +2353,6 @@ Puedes filtrar la vista seleccionando un tipo de registro, el nombre del usuario
 'allpagesto' => 'Mostrar páginas terminadas con:',
 'allarticles' => 'Todos los artículos',
 'allinnamespace' => 'Todas las páginas (espacio de nombres $1)',
-'allnotinnamespace' => 'Todas las páginas que no están en el espacio de nombres $1',
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Siguiente',
 'allpagessubmit' => 'Mostrar',
 'allpagesprefix' => 'Mostrar páginas con el prefijo:',
 'allpagesbadtitle' => 'El título dado era inválido o tenía un prefijo de enlace inter-idioma o inter-wiki. Puede contener uno o más caracteres que no se pueden usar en títulos.',
@@ -2485,7 +2472,7 @@ La dirección de correo electrónico que indicaste en [[Special:Preferences|tus
 'addwatch' => 'Añadir a la lista de seguimiento',
 'addedwatchtext' => 'La página «[[:$1]]» ha sido añadida a tu [[Special:Watchlist|lista de seguimiento]]. Los cambios futuros en esta página y en su página de discusión asociada se indicarán ahí.',
 'removewatch' => 'Quitar de la lista de seguimiento',
-'removedwatchtext' => 'La página «[[:$1]]» ha sido eliminada de tu [[Special:Watchlist|lista de seguimiento]].',
+'removedwatchtext' => 'Se ha eliminado la página «[[:$1]]» de tu [[Special:Watchlist|lista de seguimiento]].',
 'watch' => 'Vigilar',
 'watchthispage' => 'Vigilar esta página',
 'unwatch' => 'Dejar de vigilar',
@@ -2511,11 +2498,11 @@ 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_impersonal_salutation' => 'usuario de {{SITENAME}}',
-'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_subject_deleted' => '$2 ha borrado la página $1 de {{SITENAME}}',
+'enotif_subject_created' => '$2 ha creado la página $1 en {{SITENAME}}',
+'enotif_subject_moved' => '$2 ha trasladado la página $1 de {{SITENAME}}',
+'enotif_subject_restored' => '$2 ha restaurado la página $1 de {{SITENAME}}',
+'enotif_subject_changed' => '$2 ha modificado la página $1 de {{SITENAME}}',
 'enotif_body_intro_deleted' => 'La página $1 de {{SITENAME}} ha sido borrada el $PAGEEDITDATE por {{GENDER:$2|$2}}, véase $3.',
 '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.',
@@ -2524,28 +2511,31 @@ La dirección de correo electrónico que indicaste en [[Special:Preferences|tus
 '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,
+'enotif_body' => 'Hola, $WATCHINGUSERNAME:
 
 $PAGEINTRO $NEWPAGE
 
-Resumen de edición: $PAGESUMMARY $PAGEMINOREDIT
+Resumen del editor: $PAGESUMMARY $PAGEMINOREDIT
 
-Contacta con el editor:
-Correo electrónico: $PAGEEDITOR_EMAIL
-Wiki: $PAGEEDITOR_WIKI
+Contacta al editor:
+correo: $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 de todas tus páginas que sigas en tu página de vigilancia.
+No enviaremos más notificaciones si ocurre más actividad, a menos que visites esta página con la sesión iniciada. También puedes restablecer los estados de notificación para todas las páginas en tu lista de seguimiento.
 
-El sistema de notificaciones de {{SITENAME}}.
+Atentamente, el sistema de notificaciones de {{SITENAME}}
 
 --
-Para cambiar las opciones de tu lista de seguimiento, visita:
+Para cambiar tus ajustes de notificación por correo, visita
+{{canonicalurl:{{#special:Preferences}}}}
+
+Para cambiar los ajustes de tu lista de seguimiento, visita
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Para borrar la página de tu lista de seguimiento visita:
+Para quitar la página de tu lista de seguimiento, visita
 $UNWATCHURL
 
-Comentarios y asistencia adicional:
+Para ayuda y comentarios:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'created' => 'creada',
 'changed' => 'modificada',
@@ -2583,6 +2573,7 @@ Véase $2 para un registro de los borrados recientes.',
 'delete-edit-reasonlist' => 'Editar razones de borrado',
 'delete-toobig' => 'Esta página tiene un historial muy grande, con más de $1 {{PLURAL:$1|revisión|revisiones}}. Borrar este tipo de páginas ha sido restringido para prevenir posibles problemas en {{SITENAME}}.',
 'delete-warning-toobig' => 'Esta página tiene un historial de más de $1 {{PLURAL:$1|revisión|revisiones}}. Eliminarla puede perturbar las operaciones de la base de datos de {{SITENAME}}. Ten cuidado al borrar.',
+'deleting-backlinks-warning' => "'''Advertencia:''' Hay enlaces desde otras páginas a la página que estás a punto de borrar.",
 
 # Rollback
 'rollback' => 'Revertir ediciones',
@@ -2696,7 +2687,6 @@ o a que la revisión haya sido restaurada o eliminada del archivo.',
 'undeletebtn' => 'Restaurar',
 'undeletelink' => 'ver/restaurar',
 'undeleteviewlink' => 'ver',
-'undeletereset' => 'Cancelar',
 'undeleteinvert' => 'Invertir selección',
 'undeletecomment' => 'Razón:',
 'undeletedrevisions' => '{{PLURAL:$1|Una edición restaurada|$1 ediciones restauradas}}',
@@ -2785,7 +2775,6 @@ A continuación se muestra la última entrada del registro de bloqueos para mayo
 'block' => 'Bloquear usuario',
 'unblock' => 'Desbloquear usuario',
 'blockip' => 'Bloquear usuario',
-'blockip-title' => 'Bloquear usuario',
 'blockip-legend' => 'Bloquear usuario',
 'blockiptext' => 'Usa el siguiente formulario para bloquear el acceso de escritura desde una dirección IP específica o nombre de usuario.
 Esto debería hacerse sólo para prevenir vandalismos, y de acuerdo a las [[{{MediaWiki:Policy-url}}|políticas]].
@@ -2793,7 +2782,6 @@ Explica la razón específica del bloqueo (por ejemplo, citando las páginas en
 'ipadressorusername' => 'Dirección IP o nombre de usuario:',
 'ipbexpiry' => 'Caducidad:',
 'ipbreason' => 'Motivo:',
-'ipbreasonotherlist' => 'Otra razón',
 'ipbreason-dropdown' => '*Motivos comunes de bloqueo
 ** Añadir información falsa
 ** Eliminar contenido de las páginas
@@ -2809,8 +2797,6 @@ Explica la razón específica del bloqueo (por ejemplo, citando las páginas en
 'ipbsubmit' => 'Bloquear a este usuario',
 'ipbother' => 'Especificar caducidad',
 'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
-'ipbotheroption' => 'otro',
-'ipbotherreason' => 'Otra razón:',
 'ipbhidename' => 'Ocultar nombre de usuario de ediciones y listas',
 'ipbwatchuser' => 'Vigilar las páginas de usuario y de discusión de este usuario',
 'ipb-disableusertalk' => 'Impedir que este usuario edite su propia página de discusión mientras esté bloqueado',
@@ -2822,6 +2808,7 @@ Explica la razón específica del bloqueo (por ejemplo, citando las páginas en
 Véase la [[Special:BlockList|lista de bloqueos]] para revisarlo.',
 'ipb-blockingself' => '¡Estás a punto de bloquearte a ti mismo!  ¿Estás seguro de que quieres hacerlo?',
 'ipb-confirmhideuser' => 'Estás a punto de bloquear un usuario con la opción de supresión activada. Esto suprimirá el nombre de usuario en todas las listas y entradas de registro. ¿Estás seguro de que deseas proceder?',
+'ipb-confirmaction' => 'Si estás seguro de querer hacerlo, por favor, marca el campo «{{int:ipb-confirm}}» que hay al final.',
 'ipb-edit-dropdown' => 'Editar motivo del bloqueo',
 'ipb-unblock-addr' => 'Desbloquear $1',
 'ipb-unblock' => 'Desbloquear un usuario o una IP',
@@ -2898,7 +2885,6 @@ Sin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado
 'sorbsreason' => 'Su dirección IP está listada como proxy abierto en DNSBL.',
 'sorbs_create_account_reason' => 'Su dirección IP está listada como proxy abierto en DNSBL. No puede crear una cuenta',
 'xffblockreason' => 'Una dirección IP presente en la cabecera X-Forwarded-For, tuya o del servidor proxy que estás usando, ha sido bloqueada. El motivo original del bloqueo fue: $1',
-'cant-block-while-blocked' => 'No puedes bloquear a otros usuarios mientras estás bloquead{{GENDER:|o|a}}.',
 'cant-see-hidden-user' => 'El usuario que está intentando bloquear ya ha sido bloqueado y oculto. Puesto que usted no tiene el derecho hideuser, usted no puede ver o editar los bloqueos del usuario.',
 'ipbblocked' => 'No puedes bloquear o desbloquear a otros usuarios porque estás bloqueado',
 'ipbnounblockself' => 'No puedes desbloquearte',
@@ -2956,7 +2942,6 @@ por favor, asegúrate de entender las consecuencias del procedimiento antes de s
 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 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 trasladar páginas.',
 'movenotallowedfile' => 'No tienes permiso para trasladar archivos.',
@@ -2972,8 +2957,6 @@ En estos casos, deberás trasladar manualmente el contenido de la página de dis
 '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 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)',
 'move-talk-subpages' => 'Intentar trasladar las subpáginas de discusión (hasta $1)',
@@ -3214,10 +3197,10 @@ Permite añadir una razón al resumen de edición.',
 
 # Stylesheets
 'common.css' => '/* El CSS colocado en esta página será aplicado a todas las apariencias */',
-'cologneblue.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Cologne Blue" */',
-'monobook.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "MonoBook" */',
-'modern.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Modern" */',
-'vector.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la piel "Vector" */',
+'cologneblue.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia Cologne Blue */',
+'monobook.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia "MonoBook" */',
+'modern.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia Moderna */',
+'vector.css' => '/* El CSS colocado en esta página afectará a los usuarios que usen la apariencia "Vector" */',
 'print.css' => '/* Los estilos CSS colocados aquí afectarán la impresión */',
 'noscript.css' => '/* Los estilos CSS colocados aquí se aplicarán a los usuarios que hayan desactivado el JavaScript en su navegador */',
 'group-autoconfirmed.css' => '/* Los estilos CSS colocados aquí se aplicarán para todos los usuarios del grupo Usuarios autoconfirmados */',
@@ -3228,9 +3211,9 @@ Permite añadir una razón al resumen de edición.',
 # Scripts
 'common.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios en cada carga de página */',
 'cologneblue.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Colonia azul */',
-'monobook.js' => '/* El código JavaScript que se ponga aquí será cargado por los usuarios de la piel MonoBook */',
-'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Moderna */',
-'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Vector */',
+'monobook.js' => '/* El código JavaScript que se ponga aquí será cargado por los usuarios de la apariencia MonoBook */',
+'modern.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Moderna */',
+'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la apariencia Vector */',
 'group-autoconfirmed.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Usuarios autoconfirmados */',
 'group-bot.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Bots */',
 'group-sysop.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios del grupo Administradores */',
@@ -3833,15 +3816,10 @@ Existen otros campos que se mantendrán ocultos por defecto.
 'exif-urgency-high' => 'Alto ($1)',
 'exif-urgency-other' => 'Prioridad definida por el usuario ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este archivo usando una aplicación externa',
-'edit-externally-help' => '(Lee las [https://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración] -en inglés- para más información)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todos',
 'namespacesall' => 'todos',
 'monthsall' => 'todos',
-'limitall' => 'Todos',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar dirección de correo electrónico',
@@ -3861,7 +3839,6 @@ El servidor indicó el error: $1',
 'confirmemail_success' => 'Su dirección de correo ha sido confirmada
 Ahora puedes [[Special:UserLogin|identificarte]] y colaborar en el wiki.',
 'confirmemail_loggedin' => 'Tu dirección de correo electrónico ha sido confirmada.',
-'confirmemail_error' => 'Algo salió mal al guardar su confirmación.',
 'confirmemail_subject' => 'confirmación de la dirección de correo de {{SITENAME}}',
 'confirmemail_body' => 'Alguien, probablemente usted mismo, ha registrado desde la dirección IP $1 la cuenta "$2" en {{SITENAME}}, utilizando esta dirección de correo.
 
@@ -3936,6 +3913,11 @@ Confirma que realmente quieres volver a crear esta página.",
 'imgmultigo' => '¡Ir!',
 'imgmultigoto' => 'Ir a la página $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(idioma predeterminado)',
+'img-lang-info' => 'Renderizar esta imagen en $1. $2',
+'img-lang-go' => 'Adelante',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -4016,7 +3998,17 @@ También puedes [[Special:EditWatchlist|usar el editor estándar]].',
 'version-hook-name' => 'Nombre de la extensión',
 'version-hook-subscribedby' => 'Suscrito por',
 'version-version' => '(Versión $1)',
-'version-license' => 'Licencia',
+'version-license' => 'Licencia de MediaWiki',
+'version-ext-license' => 'Licencia',
+'version-ext-colheader-name' => 'Extensión',
+'version-ext-colheader-version' => 'Versión',
+'version-ext-colheader-license' => 'Licencia',
+'version-ext-colheader-description' => 'Descripción',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licencia para $1',
+'version-license-not-found' => 'No se han encontrado información detallada de licencia para esta extensión.',
+'version-credits-title' => 'Reconocimiento para $1',
+'version-credits-not-found' => 'No se ha encontrado información detallada de reconocimiento para esta extensión.',
 'version-poweredby-credits' => "Este wiki funciona gracias a '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'otros',
 'version-poweredby-translators' => 'Traductores de translatewiki.net',
@@ -4036,13 +4028,14 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta de la secuencia de comandos (script)]',
 
 # Special:Redirect
-'redirect' => 'Redirigir por archivo, usuario o ID de revisión',
+'redirect' => 'Redirigir por archivo, usuario, página o ID de revisión',
 'redirect-legend' => 'Redirigir a un archivo o página',
-'redirect-summary' => 'Esta página especial redirige a un fichero (dado un nombre de fichero), a una página (dado un identificador de revisión) o a una página de usuario (dado en identificador numérico de usuario). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta página especial redirige a un fichero (dado un nombre de fichero), a una página (dado un identificador de revisión o de página) o a una página de usuario (dado un identificador numérico de usuario). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Ir',
 'redirect-lookup' => 'Buscar:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'Id. del usuario',
+'redirect-page' => 'ID de la página',
 'redirect-revision' => 'Revisión de página',
 'redirect-file' => 'Nombre de fichero',
 'redirect-not-exists' => 'No se encontró el valor',
@@ -4060,7 +4053,7 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiales',
-'specialpages-note-top' => 'Leyenda:',
+'specialpages-note-top' => 'Leyenda',
 'specialpages-note' => '* Páginas especiales normales
 * <span class="mw-specialpagerestricted">Páginas especiales restringidas.</span>
 * <span class="mw-specialpagecached">Páginas especiales en caché (podrían ser obsoletas).</span>',
@@ -4110,7 +4103,6 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
 
 # Special:ComparePages
 'comparepages' => 'Comparar páginas',
-'compare-selector' => 'Comparar revisiones de página',
 'compare-page1' => 'Página 1',
 'compare-page2' => 'Página 2',
 'compare-rev1' => 'Revisión 1',
@@ -4239,6 +4231,7 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'api-error-overwrite' => 'No se permite sobrescribir un archivo existente.',
 'api-error-stashfailed' => 'Error interno: El servidor no pudo almacenar el archivo temporal.',
 'api-error-publishfailed' => 'Error interno: el servidor no pudo publicar el archivo temporal.',
+'api-error-stasherror' => 'Ha ocurrido un error al subir el archivo al depósito.',
 'api-error-timeout' => 'El servidor no respondió en el plazo previsto.',
 'api-error-unclassified' => 'Ocurrió un error desconocido.',
 'api-error-unknown-code' => 'Error desconocido: «$1»',
@@ -4254,7 +4247,7 @@ En otro caso, puedes usar el siguiente formulario. Tu comentario será añadido
 'duration-hours' => '$1 {{PLURAL:$1|hora|horas}}',
 'duration-days' => '$1 {{PLURAL:$1|día|días}}',
 'duration-weeks' => '$1 {{PLURAL:$1|semana|semanas}}',
-'duration-years' => '$1 {{PLURAL: $1|año|años}}',
+'duration-years' => '$1 {{PLURAL:$1|año|años}}',
 'duration-decades' => '$1 {{PLURAL:$1|década|décadas}}',
 'duration-centuries' => '$1 {{PLURAL:$1|siglo|siglos}}',
 'duration-millennia' => '$1 {{PLURAL:$1|milenio|milenios}}',
@@ -4286,10 +4279,12 @@ También expande las funciones sintácticas como <code><nowiki>{{</nowiki>#langu
 'expand_templates_input' => 'Texto a expandir:',
 'expand_templates_output' => 'Resultado:',
 'expand_templates_xml_output' => 'Salida XML',
+'expand_templates_html_output' => 'Salida HTML en crudo',
 'expand_templates_ok' => 'Aceptar',
 'expand_templates_remove_comments' => 'Eliminar comentarios (<!-- ... -->)',
 'expand_templates_remove_nowiki' => 'Suprimir <nowiki> etiquetas en resultado',
 'expand_templates_generate_xml' => 'Mostrar el árbol XML.',
+'expand_templates_generate_rawhtml' => 'Mostrar HTML en crudo',
 'expand_templates_preview' => 'Previsualización',
 
 );
index 46747bc..6161972 100644 (file)
@@ -55,6 +55,7 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Teguskasutajad' ),
        'Allmessages'               => array( 'Kõik_sõnumid' ),
+       'AllMyUploads'              => array( 'Kõik_minu_failid' ),
        'Allpages'                  => array( 'Kõik_leheküljed' ),
        'Ancientpages'              => array( 'Vanimad_leheküljed' ),
        'Blankpage'                 => array( 'Tühi_leht' ),
@@ -70,10 +71,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Konto_loomine' ),
        'Deadendpages'              => array( 'Edasipääsuta_leheküljed' ),
        'DeletedContributions'      => array( 'Kustutatud_kaastöö' ),
-       'Disambiguations'           => array( 'Täpsustusleheküljed' ),
        'DoubleRedirects'           => array( 'Kahekordsed_ümbersuunamised' ),
        'EditWatchlist'             => array( 'Jälgimisloendi_redigeerimine' ),
        'Emailuser'                 => array( 'E-kirja_saatmine' ),
+       'ExpandTemplates'           => array( 'Mallide_hõrendamine' ),
        'Export'                    => array( 'Lehekülgede_eksport' ),
        'Fewestrevisions'           => array( 'Vähim_muudatusi' ),
        'FileDuplicateSearch'       => array( 'Faili_duplikaatide_otsimine', 'Otsi_faili_duplikaate' ),
@@ -97,6 +98,7 @@ $specialPageAliases = array(
        'MIMEsearch'                => array( 'MIME_otsing' ),
        'Mostcategories'            => array( 'Enim_kategoriseeritud' ),
        'Mostimages'                => array( 'Kõige_kasutatumad_failid' ),
+       'Mostinterwikis'            => array( 'Enim_keelelinke' ),
        'Mostlinked'                => array( 'Kõige_viidatumad_leheküljed' ),
        'Mostlinkedcategories'      => array( 'Kõige_viidatumad_kategooriad' ),
        'Mostlinkedtemplates'       => array( 'Kõige_viidatumad_mallid' ),
@@ -117,9 +119,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Kaitstud_leheküljed' ),
        'Protectedtitles'           => array( 'Kaitstud_pealkirjad' ),
        'Randompage'                => array( 'Juhuslik_artikkel' ),
+       'RandomInCategory'          => array( 'Juhuslik_kategoorias' ),
        'Randomredirect'            => array( 'Juhuslik_ümbersuunamine' ),
        'Recentchanges'             => array( 'Viimased_muudatused' ),
        'Recentchangeslinked'       => array( 'Seotud_muudatused' ),
+       'Redirect'                  => array( 'Ümbersuunamine' ),
+       'ResetTokens'               => array( 'Lubade_lähtestamine' ),
        'Revisiondelete'            => array( 'Muudatuse_kustutamine', 'Kustuta_muudatus' ),
        'Search'                    => array( 'Otsimine', 'Otsi' ),
        'Shortpages'                => array( 'Lühikesed_leheküljed' ),
@@ -199,6 +204,7 @@ $magicWords = array(
        'pagenamee'                 => array( '1', 'LEHEKÜLJENIMI1', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'NIMERUUM', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'NIMERUUM1', 'NAMESPACEE' ),
+       'namespacenumber'           => array( '1', 'NIMERUUMINUMBER', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'ARUTELUNIMERUUM', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'ARUTELUNIMERUUM1', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'SISUNIMERUUM', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -207,6 +213,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'KOGULEHEKÜLJENIMI1', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'ALAMLEHEKÜLJENIMI', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'ALAMLEHEKÜLJENIMI1', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'JUURLEHEKÜLJENIMI', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'JUURLEHEKÜLJENIMI1', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'NIMERUUMITANIMI', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'NIMERUUMITANIMI1', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'ARUTELUNIMI', 'TALKPAGENAME' ),
@@ -249,7 +257,10 @@ $magicWords = array(
        'pagesinnamespace'          => array( '1', 'LEHEKÜLGINIMERUUMIS', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'            => array( '1', 'ÜLEMAMÄÄR', 'NUMBEROFADMINS' ),
        'formatnum'                 => array( '0', 'ARVUVORMINDUS', 'FORMATNUM' ),
+       'special'                   => array( '0', 'eri', 'special' ),
+       'speciale'                  => array( '0', 'eri1', 'speciale' ),
        'defaultsort'               => array( '1', 'JÄRJESTA:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+       'filepath'                  => array( '0', 'FAILITEE:', 'FILEPATH:' ),
        'hiddencat'                 => array( '1', '__PEIDETUDKAT__', '__HIDDENCAT__' ),
        'pagesincategory'           => array( '1', 'LEHEKÜLGIKATEGOORIAS', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'index'                     => array( '1', 'INDEKSIGA', '__INDEX__' ),
@@ -316,7 +327,6 @@ $messages = array(
 'tog-minordefault' => 'Märgi kõik parandused vaikimisi pisiparandusteks',
 'tog-previewontop' => 'Näita eelvaadet toimetamiskasti ees',
 'tog-previewonfirst' => 'Näita eelvaadet esimesel redigeerimisel',
-'tog-nocache' => 'Keela võrgulehitsejal lehekülgede puhverdamine',
 'tog-enotifwatchlistpages' => 'Teata e-posti teel minu jälgitava lehekülje või faili muutmisest',
 'tog-enotifusertalkpages' => 'Teata e-posti teel minu arutelulehekülje muutmisest',
 'tog-enotifminoredits' => 'Teata e-posti teel mulle ka pisiparandustest lehekülgedel ja failides',
@@ -451,7 +461,6 @@ $messages = array(
 'qbedit' => 'Redigeeri',
 'qbpageoptions' => 'Lehekülje suvandid',
 'qbmyoptions' => 'Minu leheküljed',
-'qbspecialpages' => 'Erileheküljed',
 'faq' => 'KKK',
 'faqpage' => 'Project:KKK',
 
@@ -665,9 +674,6 @@ See võib sisaldada ühte või enamat märki, mida ei saa pealkirjades kasutada.
 'perfcached' => 'Järgnevad andmed on puhverdatud ja ei pruugi olla kõige värskemad. Puhvris on saadaval kuni {{PLURAL:$1|üks tulemus|$1 tulemust}}.',
 'perfcachedts' => 'Järgmised andmed on vahemälus. Viimane uuendamisaeg: $2, kell $3. Puhvris on saadaval kuni {{PLURAL:$4|üks tulemus|$4 tulemust}}.',
 'querypage-no-updates' => 'Lehekülje uuendamine ei ole hetkel lubatud ning andmeid ei värskendata.',
-'wrong_wfQuery_params' => 'Valed parameeterid funktsioonile wfQuery()<br />
-Funktsioon: $1<br />
-Päring: $2',
 'viewsource' => 'Vaata lähteteksti',
 'viewsource-title' => 'Lehekülje $1 lähteteksti vaatamine',
 'actionthrottled' => 'Toiming nurjus',
@@ -795,7 +801,7 @@ Kontrollige kirjapilti või [[Special:UserLogin/signup|looge uus kasutajakonto]]
 'passwordtooshort' => 'Parool peab koosnema vähemalt {{PLURAL:$1|ühest|$1}} tähemärgist.',
 'password-name-match' => 'Parool peab kasutajanimest erinema.',
 'password-login-forbidden' => 'Selle kasutajanime ja parooli kasutamine on keelatud.',
-'mailmypassword' => 'Saada e-posti teel uus parool',
+'mailmypassword' => 'Lähtesta parool',
 'passwordremindertitle' => '{{SITENAME}} – ajutine parool',
 'passwordremindertext' => 'Keegi IP-aadressiga $1, tõenäoliselt sa ise, palus, et talle saadetaks {{GRAMMAR:elative|{{SITENAME}}}} uus parool ($4). Kasutaja "$2" ajutiseks paroolis seati "$3". Kui soovid tõepoolest uut parooli, pead sisse logima ja uue parooli valima. Ajutine parool aegub {{PLURAL:$5|ühe päeva|$5 päeva}} pärast.
 
@@ -842,7 +848,7 @@ Kui otsustad selle sisestada, kasutatakse seda kasutaja töö temale omistamisek
 'user-mail-no-body' => 'Püüti saata tühja või ebamõistlikult lühikese sisuosaga e-kirja.',
 
 # Change password dialog
-'resetpass' => 'Parooli muutmine',
+'changepassword' => 'Muuda parool',
 'resetpass_announce' => 'Logisid sisse e-posti teel saadud ajutise koodiga.
 Sisselogimise lõpetamiseks pead siia uue parooli sisestama:',
 'resetpass_text' => '<!-- Lisa tekst siia -->',
@@ -865,7 +871,7 @@ Võib-olla oled juba edukalt muudnud oma salasõna või taotlenud uut ajutist sa
 # Special:PasswordReset
 'passwordreset' => 'Parooli lähtestamine',
 'passwordreset-text-one' => 'Täida see vorm, et oma parool lähtestada.',
-'passwordreset-text-many' => '{{PLURAL:$1|Täida üks väljadest, et oma parool lähtestada.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Täida üks väljadest, et saada e-kiri ajutise parooliga.}}',
 'passwordreset-legend' => 'Parooli lähtestamine',
 'passwordreset-disabled' => 'Selles vikis on paroolide lähtestamine keelatud.',
 'passwordreset-emaildisabled' => 'E-posti funktsioonid on selles vikis keelatud.',
@@ -1158,6 +1164,9 @@ Need argumendid on välja jäetud.",
 'cantcreateaccounttitle' => 'Ei saa kontot luua',
 'cantcreateaccount-text' => "Kasutaja [[User:$3|$3]] on blokeerinud kasutajanime loomise sellelt IP-aadressilt ('''$1''').
 Kasutaja $3 märkis põhjuseks ''$2''",
+'cantcreateaccount-range-text' => "Kontode loomine IP-aadressidelt vahemikus '''$1''', millesse jääb sinu IP-aadress ('''$4'''), on blokeeritud. Blokeeris kasutaja [[User:$3|$3]].
+
+$3 tõi järgmise põhjuse: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vaata selle lehe logisid',
@@ -1227,10 +1236,6 @@ Saad seda muudatust vaadata. [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAG
 'revisiondelete' => 'Redaktsioonide kustutamine või taastamine',
 'revdelete-nooldid-title' => 'Sellist redaktsiooni pole.',
 'revdelete-nooldid-text' => 'Sa pole valinud redaktsiooni, valitud redaktsioon puudub või sa püüad peita viimast redaktsiooni.',
-'revdelete-nologtype-title' => 'Logi tüüpi ei antud',
-'revdelete-nologtype-text' => 'Sa ei ole selle toimingu sooritamiseks logi tüüpi täpsustanud.',
-'revdelete-nologid-title' => 'Vigane logikirje',
-'revdelete-nologid-text' => 'Selle logisündmuse kirjet pole määratud või seda ei ole olemas.',
 'revdelete-no-file' => 'Faili ei ole.',
 'revdelete-show-file-confirm' => 'Kas oled kindel, et soovid häha faili "<nowiki>$1</nowiki>" kustutatud redaktsiooni, mis tehti $2 kell $3?',
 'revdelete-show-file-submit' => 'Jah',
@@ -1264,8 +1269,6 @@ $1",
 'logdelete-failure' => "'''Logi nähtavust ei saanud paika:'''
 $1",
 'revdel-restore' => 'muuda nähtavust',
-'revdel-restore-deleted' => 'kustutatud redaktsioonid',
-'revdel-restore-visible' => 'nähtavad redaktsioonid',
 'pagehist' => 'Lehekülje ajalugu',
 'deletedhist' => 'Kustutatud ajalugu',
 'revdelete-hide-current' => 'Tõrge üksuse kuupäevaga $2, kell $1 peitmisel: see on praegune redaktsioon.
@@ -1345,12 +1348,8 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 # Search results
 'searchresults' => 'Otsingu tulemused',
 'searchresults-title' => 'Otsingu "$1" tulemused',
-'searchresulttext' => 'Lisateavet otsimise kohta vaata [[{{MediaWiki:Helppage}}|juhendist]].',
-'searchsubtitle' => 'Otsisid fraasi "[[:$1]]" ([[Special:Prefixindex/$1|kõik sõnega "$1" algavad lehed]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõik lehed, mis sisaldavad linke artiklile "$1"]])',
-'searchsubtitleinvalid' => 'Päring "$1"',
 'toomanymatches' => 'Liiga palju tulemusi, ürita teistsugust päringut',
 'titlematches' => 'Vasted artikli pealkirjades',
-'notitlematches' => 'Artikli pealkirjades otsitavat ei leitud',
 'textmatches' => 'Vasted artikli tekstides',
 'notextmatches' => 'Artikli tekstides otsitavat ei leitud',
 'prevn' => '{{PLURAL:$1|eelmine|eelmised $1}}',
@@ -1359,10 +1358,8 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 'nextn-title' => '{{PLURAL:$1|Järgmine tulemus|Järgmised $1 tulemust}}',
 'shown-title' => 'Näita lehekülje kohta $1 {{PLURAL:$1|tulemus|tulemust}}',
 'viewprevnext' => 'Näita ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Otsingu sätted',
 'searchmenu-exists' => "'''Lehekülg pealkirjaga \"[[:\$1]]\" on olemas.'''",
 'searchmenu-new' => "'''Loo lehekülg pealkirjaga \"[[:\$1]]\".'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sirvi selle eesliitega lehekülgi]]',
 'searchprofile-articles' => 'Sisuleheküljed',
 'searchprofile-project' => 'Abi- ja projektilehed',
 'searchprofile-images' => 'Multimeedia',
@@ -1383,22 +1380,16 @@ Harilikult tähendab see seda, et sind siia juhatanud link on vananenud ja siin
 'search-interwiki-default' => '$1 tulemused:',
 'search-interwiki-more' => '(veel)',
 'search-relatedarticle' => 'Seotud',
-'mwsuggest-disable' => 'Ära näita otsinguvihjeid',
 'searcheverything-enable' => 'Otsi kõigist nimeruumidest',
 'searchrelated' => 'seotud',
 'searchall' => 'kõik',
 'showingresults' => "Allpool näidatakse '''{{PLURAL:$1|ühte|$1}}''' tulemust alates '''$2'''. tulemusest.",
 'showingresultsnum' => "Allpool näitame {{PLURAL:$3|'''ühte''' tulemit|'''$3''' tulemit}} alates tulemist #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st vastest|Vasted '''$1–$2''' '''$3'''-st}} päringule '''$4'''",
-'nonefound' => "'''Märkus''': Otsing hõlmab vaikimisi vaid osasid nimeruume.
-Kui soovid otsida ühekorraga kõigist nimeruumidest (kaasa arvatud arutelulehed, mallid, jne) kasuta
-päringu ees prefiksit ''all:''. Konkreetsest nimeruumist otsimiseks kasuta prefiksina sele nimeruumi nime.",
 'search-nonefound' => 'Päringule ei leitud vasteid.',
-'powersearch' => 'Otsi',
 'powersearch-legend' => 'Täpsem otsing',
 'powersearch-ns' => 'Otsing nimeruumidest:',
 'powersearch-redir' => 'Loetle ümbersuunamised',
-'powersearch-field' => 'Otsi fraasi',
 'powersearch-togglelabel' => 'Vali:',
 'powersearch-toggleall' => 'Kõik',
 'powersearch-togglenone' => 'Ei ühtegi',
@@ -1413,7 +1404,6 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
 'mypreferences' => 'Eelistused',
 'prefs-edits' => 'Redigeerimiste arv:',
 'prefsnologintext2' => 'Pead $1, et oma eelistusi muuta.',
-'changepassword' => 'Muuda parool',
 'prefs-skin' => 'Kujundus',
 'skin-preview' => 'eelvaade',
 'datedefault' => 'Eelistus puudub',
@@ -1436,13 +1426,11 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
 'prefs-email' => 'E-posti sätted',
 'prefs-rendering' => 'Ilme',
 'saveprefs' => 'Salvesta eelistused',
-'resetprefs' => 'Lähtesta eelistused',
 'restoreprefs' => 'Taasta kõik vaike-eelistused (kõigil kaartidel)',
 'prefs-editing' => 'Toimetamine',
 'rows' => 'Ridu:',
 'columns' => 'Veerge:',
 'searchresultshead' => 'Otsingutulemite sätted',
-'resultsperpage' => 'Vasteid leheküljel:',
 'stub-threshold' => '<a href="#" class="stub">Nii</a> lingitud lehekülje suuruse ülempiir (baitides):',
 'stub-threshold-disabled' => 'Välja lülitatud',
 'recentchangesdays' => 'Mitu päeva näidata viimastes muudatustes:',
@@ -1457,7 +1445,6 @@ Igaüks, kes seda teab, saab lugeda sinu jälgimisloendit. Seega ära jaga seda.
 'localtime' => 'Kohalik aeg:',
 'timezoneuseserverdefault' => 'Kasuta serveri vaikesätet ($1)',
 'timezoneuseoffset' => 'Muu (määra ajavahe)',
-'timezoneoffset' => 'Ajavahe¹:',
 'servertime' => 'Serveri aeg:',
 'guesstimezone' => 'Loe aeg brauserist',
 'timezoneregion-africa' => 'Aafrika',
@@ -1527,6 +1514,7 @@ See teave on avalik.',
 'prefs-tokenwatchlist' => 'Luba',
 'prefs-diffs' => 'Erinevused',
 'prefs-help-prefershttps' => 'See eelistus jõustub pärast järgmist sisselogimist.',
+'prefs-tabs-navigation-hint' => 'Spikker: Kaardiloendis toodud kaartide vahel liikumiseks saad kasutada vasakut ja paremat nooleklahvi.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Sobiv e-posti aadress',
@@ -1714,12 +1702,11 @@ See teave on avalik.',
 'recentchanges-label-unpatrolled' => 'Seda muudatust ei ole veel kontrollitud',
 'recentchanges-label-plusminus' => 'Lehekülje suuruse muutus baitides',
 'recentchanges-legend-newpage' => '(vaata ka [[Special:NewPages|uute lehekülgede loendit]])',
-'rcnote' => "Allpool on esitatud {{PLURAL:$1|'''1''' muudatus|viimased '''$1''' muudatust}} viimase {{PLURAL:$2|päeva|'''$2''' päeva}} jooksul seisuga $4, kell $5.",
 'rcnotefrom' => "Allpool on toodud muudatused alates: '''$2''' (näidatakse kuni '''$1''' muudatust)",
 'rclistfrom' => 'Näita muudatusi alates: $1',
 'rcshowhideminor' => 'Pisiparandused ($1)',
 'rcshowhidebots' => 'Robotid ($1)',
-'rcshowhideliu' => 'Sisseloginud kasutajad ($1)',
+'rcshowhideliu' => 'Registreeritud kasutajad ($1)',
 'rcshowhideanons' => 'Anonüümsed kasutajad ($1)',
 'rcshowhidepatr' => 'Kontrollitud muudatused ($1)',
 'rcshowhidemine' => 'Minu parandused ($1)',
@@ -1838,6 +1825,8 @@ Kui soovid siiski oma faili üles laadida, siis palun mine tagasi ja kasuta teis
 'file-exists-duplicate' => 'See fail on {{PLURAL:$1|järgneva faili|järgnevate failide}} duplikaat:',
 'file-deleted-duplicate' => 'Selle failiga ([[:$1]]) identne fail on hiljuti kustutatud.
 Vaata selle faili kustutamise ajalugu enne jätkamist.',
+'file-deleted-duplicate-notitle' => 'Selle failiga identne fail on varem kustutatud ja pealkiri on varjatud.
+Enne kui jätkad uuesti üleslaadimisega, peaksid paluma olukorda hinnata kellelgi, kes saab vaadata varjatud andmeid.',
 'uploadwarning' => 'Üleslaadimise hoiatus',
 'uploadwarning-text' => 'Muuda allpool olevat faili kirjeldust ning proovi uuesti.',
 'savefile' => 'Salvesta fail',
@@ -2152,6 +2141,7 @@ Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise 
 'ninterwikis' => '{{PLURAL:$1|üks intervikilink|$1 intervikilinki}}',
 'nlinks' => '$1 {{PLURAL:$1|link|linki}}',
 'nmembers' => '$1 {{PLURAL:$1|liige|liiget}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|liige|liiget}}',
 'nrevisions' => '$1 {{PLURAL:$1|redaktsioon|redaktsiooni}}',
 'nviews' => '$1 {{PLURAL:$1|külastus|külastust}}',
 'nimagelinks' => 'Kasutuses {{PLURAL:$1|ühel leheküljel|$1 leheküljel}}',
@@ -2190,10 +2180,9 @@ Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise 
 'protectedpages' => 'Kaitstud leheküljed',
 'protectedpages-indef' => 'Ainult määramata ajani kaitstud',
 'protectedpages-cascade' => 'Ainult kaskaadkaitsega',
-'protectedpagestext' => 'Järgnevad leheküljed on teisaldamise või redigeerimise eest kaitstud',
+'protectedpages-noredirect' => 'Peida ümbersuunamised',
 'protectedpagesempty' => 'Selliste parameetritega ei ole praegu ühtegi lehekülge kaitstud.',
 'protectedtitles' => 'Kaitstud pealkirjad',
-'protectedtitlestext' => 'Järgnevad pealkirjad on lehekülje loomise eest kaitstud',
 'protectedtitlesempty' => 'Hetkel pole ükski pealkiri kaitstud.',
 'listusers' => 'Kasutajad',
 'listusers-editsonly' => 'Näita vaid kasutajaid, kes on teinud muudatusi',
@@ -2245,9 +2234,6 @@ Valiku kitsendamiseks vali logitüüp, sisesta kasutajanimi (tõstutundlik) või
 'allpagesto' => 'Näita lehti kuni pealkirjani:',
 'allarticles' => 'Kõik leheküljed',
 'allinnamespace' => 'Kõik leheküljed nimeruumis $1',
-'allnotinnamespace' => 'Kõik leheküljed, mis ei kuulu nimeruumi $1',
-'allpagesprev' => 'Eelmised',
-'allpagesnext' => 'Järgmised',
 'allpagessubmit' => 'Näita',
 'allpagesprefix' => 'Kuva leheküljed eesliitega:',
 'allpagesbadtitle' => 'Lehekülje pealkiri oli vigane või sisaldas teise viki või keele eesliidet.
@@ -2469,6 +2455,7 @@ Palun kinnita, et tahad seda tõepoolest teha, et sa mõistad tagajärgi ja et s
 Selle kustutamine on keelatud, et ära hoida ekslikku {{GRAMMAR:genitive|{{SITENAME}}}} töö häirimist.',
 'delete-warning-toobig' => 'See lehekülg on pika redigeerimislooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.
 Ettevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.',
+'deleting-backlinks-warning' => "'''Hoiatus:''' Teised leheküljed viitavad leheküljele, mida oled kustutamas.",
 
 # Rollback
 'rollback' => 'Tühista muudatused',
@@ -2585,7 +2572,6 @@ Link võib olla kõlbmatu või redaktsioon võib olla taastatud või arhiivist e
 'undeletebtn' => 'Taasta',
 'undeletelink' => 'vaata/taasta',
 'undeleteviewlink' => 'vaata',
-'undeletereset' => 'Tühjenda',
 'undeleteinvert' => 'Pööra valik teistpidi',
 'undeletecomment' => 'Põhjus:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|redaktsioon|redaktsiooni}} taastatud',
@@ -2674,7 +2660,6 @@ Allpool on toodud viimane blokeerimislogi sissekanne:',
 'block' => 'Kasutaja blokeerimine',
 'unblock' => 'Kasutaja blokeeringu eemaldamine',
 'blockip' => 'Kasutaja blokeerimine',
-'blockip-title' => 'Kasutaja blokeerimine',
 'blockip-legend' => 'Kasutaja blokeerimine',
 'blockiptext' => 'See vorm on kindla IP-aadressi või kasutajanime kirjutamisõiguste blokeerimiseks.
 Seda tohib teha ainult vandalismi vältimiseks ja kooskõlas [[{{MediaWiki:Policy-url}}|{{GRAMMAR:genitive|{{SITENAME}}}} sisekorraga]].
@@ -2682,7 +2667,6 @@ Täida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.',
 'ipadressorusername' => 'IP-aadress või kasutajanimi:',
 'ipbexpiry' => 'Kehtivus:',
 'ipbreason' => 'Põhjus:',
-'ipbreasonotherlist' => 'Muu põhjusel',
 'ipbreason-dropdown' => '*Tavalised blokeerimise põhjused
 ** Valeandmete lisamine
 ** Lehekülgedelt sisu kustutamine
@@ -2698,8 +2682,6 @@ Täida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.',
 'ipbsubmit' => 'Blokeeri see kasutaja',
 'ipbother' => 'Muu tähtaeg:',
 'ipboptions' => '2 tundi:2 hours,1 päev:1 day,3 päeva:3 days,1 nädal:1 week,2 nädalat:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aasta:1 year,igavene:infinite',
-'ipbotheroption' => 'muu tähtaeg',
-'ipbotherreason' => 'Muu või täiendav põhjus:',
 'ipbhidename' => 'Peida kasutajatunnus muudatustest ja loenditest',
 'ipbwatchuser' => 'Jälgi selle kasutaja lehekülge ja arutelu',
 'ipb-disableusertalk' => 'Keela sellel kasutajal blokeeringu ajal oma arutelulehekülge redigeerida',
@@ -2789,7 +2771,6 @@ See kuulub aga blokeeritud IP-vahemikku $2, mille blokeeringut saab eemaldada.',
 'sorbsreason' => 'Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.',
 'sorbs_create_account_reason' => 'Sinu IP-aadress on {{GRAMMAR:genitive|{{SITENAME}}}} kasutatavas DNS-põhises mustas nimekirjas märgitud kui avatud proksi.
 Sa ei saa kasutajakontot luua.',
-'cant-block-while-blocked' => 'Teisi kasutajaid ei saa blokeerida, kui oled ise blokeeritud.',
 'cant-see-hidden-user' => 'Kasutaja, keda blokeerida üritad, on juba blokeeritud ning peidetud. Kuna sul pole õigust blokeerida kasutajanimesid, peites need avalikkuse eest, ei saa sa selle kasutaja blokeeringut vaadata ega muuta.',
 'ipbblocked' => 'Sa ei saa teisi blokeerida ega nende blokeeringuid eemaldada, sest oled ise blokeeritud.',
 'ipbnounblockself' => 'Sul pole lubatud enda blokeeringut eemaldada.',
@@ -2849,7 +2830,6 @@ enne jätkamist teadvusta palun tagajärgi.",
 Neil juhtudel saad lehekülje soovi korral käsitsi teisaldada või liita.",
 'movearticle' => 'Teisalda lehekülg',
 'moveuserpage-warning' => "'''Hoiatus:''' Oled teisaldamas kasutajalehekülge. Pane tähele, et teisaldatakse ainult lehekülg ja kasutajat '''ei''' nimetata ümber.",
-'movenologin' => 'Sisse logimata',
 'movenologintext' => 'Lehekülje teisaldamiseks pead registreeruma ja [[Special:UserLogin|sisse logima]].',
 'movenotallowed' => 'Sul ei ole lehekülgede teisaldamise õigust.',
 'movenotallowedfile' => 'Sul ei ole failide teisaldamise õigust.',
@@ -2864,8 +2844,6 @@ Neil juhtudel saad lehekülje soovi korral käsitsi teisaldada või liita.",
 'movepage-moved-noredirect' => 'Ümbersuunamist ei loodud.',
 'articleexists' => 'Selle nimega artikkel on juba olemas või pole valitud nimi lubatav. Palun valige uus nimi.',
 'cantmove-titleprotected' => 'Lehte ei saa sinna teisaldada, sest uus pealkiri on artikli loomise eest kaitstud',
-'talkexists' => 'Lehekülg on teisaldatud, kuid arutelulehekülge ei saanud teisaldada, sest uue nime all on arutelulehekülg juba olemas. Palun ühendage aruteluleheküljed ise.',
-'movedto' => 'Teisaldatud pealkirja alla:',
 'movetalk' => 'Teisalda ka "arutelu", kui saab.',
 'move-subpages' => 'Teisalda alamleheküljed (kuni $1)',
 'move-talk-subpages' => 'Teisalda arutelulehekülje alamleheküljed (kuni $1)',
@@ -3327,6 +3305,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-orientation' => 'Orientatsioon',
 'exif-samplesperpixel' => 'Komponentide arv',
 'exif-planarconfiguration' => 'Andmejärjestus',
+'exif-ycbcrsubsampling' => 'Y-i ja C diskreetimissuhe',
 'exif-ycbcrpositioning' => 'Y- ja C-positsioonimine',
 'exif-xresolution' => 'Horisontaalne eraldus',
 'exif-yresolution' => 'Vertikaalne eraldus',
@@ -3370,13 +3349,18 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-aperturevalue' => 'APEX-avaarv',
 'exif-brightnessvalue' => 'APEX-heledus',
 'exif-exposurebiasvalue' => 'Särituse mõju',
-'exif-subjectdistance' => 'Subjekti kaugus',
+'exif-maxaperturevalue' => 'Vähim ava',
+'exif-subjectdistance' => 'Põhimotiivi kaugus',
 'exif-meteringmode' => 'Mõõtmisviis',
 'exif-lightsource' => 'Valgusallikas',
 'exif-flash' => 'Välk',
 'exif-focallength' => 'Fookuskaugus',
+'exif-subjectarea' => 'Põhimotiivi ala',
 'exif-flashenergy' => 'Välgu võimsus',
-'exif-subjectlocation' => 'Subjekti asukoht',
+'exif-focalplanexresolution' => 'Fokaaltasandi laius',
+'exif-focalplaneyresolution' => 'Fokaaltasandi kõrgus',
+'exif-focalplaneresolutionunit' => 'Fokaaltasandi eraldusühik',
+'exif-subjectlocation' => 'Põhimotiivi asukoht',
 'exif-exposureindex' => 'Särituse number',
 'exif-sensingmethod' => 'Tundlikustamismeetod',
 'exif-filesource' => 'Faili päritolu',
@@ -3392,6 +3376,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-saturation' => 'Küllastus',
 'exif-sharpness' => 'Teravus',
 'exif-devicesettingdescription' => 'Seadme seadistuste kirjeldus',
+'exif-subjectdistancerange' => 'Põhimotiivi kaugusvahemik',
 'exif-imageuniqueid' => 'Pildi ainuline identifikaator',
 'exif-gpsversionid' => 'GPS-tähise versioon',
 'exif-gpslatituderef' => 'Põhja- või lõunalaius',
@@ -3407,12 +3392,19 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-gpsdop' => 'Mõõtmise täpsus',
 'exif-gpsspeedref' => 'Kiirusühik',
 'exif-gpsspeed' => 'GPS-vastuvõtja kiirus',
-'exif-gpstrack' => 'Liikumise suund',
+'exif-gpstrackref' => 'Liikumissuuna tüüp',
+'exif-gpstrack' => 'Liikumissuund',
+'exif-gpsimgdirectionref' => 'Pildi suuna tüüp',
 'exif-gpsimgdirection' => 'Pildi suund',
 'exif-gpsmapdatum' => 'Geodeetiline alus',
+'exif-gpsdestlatituderef' => 'Poolkera (laius)',
 'exif-gpsdestlatitude' => 'Kujutatud koha laius',
+'exif-gpsdestlongituderef' => 'Poolkera (pikkus)',
 'exif-gpsdestlongitude' => 'Kujutatud koha pikkus',
-'exif-gpsdestdistance' => 'Sihtmärgi kaugus',
+'exif-gpsdestbearingref' => 'Sihtpunkti suuna tüüp',
+'exif-gpsdestbearing' => 'Sihtpunkti suund',
+'exif-gpsdestdistanceref' => 'Sihtpunkti kauguse ühik',
+'exif-gpsdestdistance' => 'Sihtpunkti kaugus',
 'exif-gpsprocessingmethod' => 'GPS-töötlusmeetodi nimi',
 'exif-gpsareainformation' => 'GPS-ala nimi',
 'exif-gpsdatestamp' => 'GPS kuupäev',
@@ -3434,8 +3426,11 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-objectname' => 'Lühipealkiri',
 'exif-specialinstructions' => 'Erijuhised',
 'exif-headline' => 'Pealkiri',
+'exif-credit' => 'Päritolu/Annetaja',
 'exif-source' => 'Allikas',
+'exif-editstatus' => 'Pildi toimetusolek',
 'exif-urgency' => 'Pakilisus',
+'exif-fixtureidentifier' => 'Tugiandmete nimi',
 'exif-locationdest' => 'Kujutatud asukoht',
 'exif-locationdestcode' => 'Kujutatud asukoha kood',
 'exif-objectcycle' => 'Päeva osa, milleks meediafail on ette nähtud',
@@ -3447,6 +3442,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-iimsupplementalcategory' => 'Lisakategooriad',
 'exif-datetimeexpires' => 'Mitte kasutada hiljem kui',
 'exif-datetimereleased' => 'Avaldamiskuupäev',
+'exif-originaltransmissionref' => 'Algse edastuskoha kood',
 'exif-identifier' => 'Identifikaator',
 'exif-lens' => 'Kasutatud objektiiv',
 'exif-serialnumber' => 'Kaamera seerianumber',
@@ -3480,6 +3476,9 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 
 # Exif attributes
 'exif-compression-1' => 'Pakkimata',
+'exif-compression-2' => 'CCITT G3 ühemõõtmeline muudetud Hoffmani sarikodeerimine',
+'exif-compression-3' => 'CCITT G3 faksikodeerimine',
+'exif-compression-4' => 'CCITT G4 faksikodeerimine',
 
 'exif-copyrighted-true' => 'Kaitstud',
 'exif-copyrighted-false' => 'Autoriõiguslik seisund määramata',
@@ -3495,7 +3494,8 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-orientation-7' => 'Pööratud 90° päripäeva ja püstselt ümberpööratud',
 'exif-orientation-8' => 'Pööratud 90° päripäeva',
 
-'exif-planarconfiguration-2' => 'tasapinnaline vorm',
+'exif-planarconfiguration-1' => 'järjestikvorming',
+'exif-planarconfiguration-2' => 'kihiline vorming',
 
 'exif-colorspace-65535' => 'Kalibreerimata',
 
@@ -3506,6 +3506,8 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-exposureprogram-2' => 'Tavaprogramm',
 'exif-exposureprogram-3' => 'Ava prioriteet',
 'exif-exposureprogram-4' => 'Katiku prioriteet',
+'exif-exposureprogram-5' => 'Loovprogramm (ülekaalus väljasügavus)',
+'exif-exposureprogram-6' => 'Aktiivprogramm (ülekaalus lühike säriaeg)',
 'exif-exposureprogram-7' => 'Portree töörežiim (lähifotode jaoks, taust fookusest väljas)',
 'exif-exposureprogram-8' => 'Maastiku töörežiim (maastikupiltide jaoks, taust on teravdatud)',
 
@@ -3553,13 +3555,17 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-focalplaneresolutionunit-2' => 'toll',
 
 'exif-sensingmethod-1' => 'Määramata',
-'exif-sensingmethod-2' => 'Ühe-kiibiga värvisensor',
-'exif-sensingmethod-3' => 'Kahe-kiibiga värvisensor',
-'exif-sensingmethod-4' => 'Kolme-kiibiga värvisensor',
-'exif-sensingmethod-7' => 'Kolmerealine sensor',
+'exif-sensingmethod-2' => 'Ühe kiibiga värviandur',
+'exif-sensingmethod-3' => 'Kahe kiibiga värviandur',
+'exif-sensingmethod-4' => 'Kolme kiibiga värviandur',
+'exif-sensingmethod-5' => 'Jadavärviandur',
+'exif-sensingmethod-7' => 'Trilineaarne andur',
+'exif-sensingmethod-8' => 'Lineaarne jadavärviandur',
 
 'exif-filesource-3' => 'Digitaalne fotokaamera',
 
+'exif-scenetype-1' => 'Pildistatud otse',
+
 'exif-customrendered-0' => 'Tavatöötlus',
 'exif-customrendered-1' => 'Kohandatud töötlus',
 
@@ -3611,6 +3617,7 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meeter|meetrit}} allpool merepinda',
 
 'exif-gpsstatus-a' => 'Mõõtmine pooleli',
+'exif-gpsstatus-v' => 'Koostalitlevus',
 
 'exif-gpsmeasuremode-2' => '2-mõõtmeline ulatus',
 'exif-gpsmeasuremode-3' => '3-mõõtmeline ulatus',
@@ -3678,15 +3685,10 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
 'exif-urgency-high' => 'Kõrge ($1)',
 'exif-urgency-other' => 'Kasutaja määratud tähtsus ($1)',
 
-# External editor support
-'edit-externally' => 'Töötle faili välise programmiga',
-'edit-externally-help' => '(Vaata väliste redaktorite [https://www.mediawiki.org/wiki/Manual:External_editors kasutusjuhendit])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Näita kõiki',
 'namespacesall' => 'kõik',
 'monthsall' => 'kõik',
-'limitall' => 'iga',
 
 # Email address confirmation
 'confirmemail' => 'E-posti aadressi kinnitamine',
@@ -3705,7 +3707,6 @@ Veateade e-kirja saatmisel: $1',
 'confirmemail_success' => 'Sinu e-posti aadress on kinnitatud
 Võid nüüd [[Special:UserLogin|sisse logida]].',
 'confirmemail_loggedin' => 'Sinu e-posti aadress on nüüd kinnitatud.',
-'confirmemail_error' => 'Viga kinnituskoodi salvestamisel.',
 'confirmemail_subject' => '{{GRAMMAR:genitive|{{SITENAME}}}} e-posti aadressi kinnitamine',
 'confirmemail_body' => 'Keegi IP-aadressilt $1, ilmselt sa ise, registreeris selle e-posti aadressiga {{GRAMMAR:inessive|{{SITENAME}}}} konto "$2".
 
@@ -3774,6 +3775,11 @@ Palun kinnita, et soovid tõesti selle lehekülje taasluua.",
 'imgmultigo' => 'Mine!',
 'imgmultigoto' => 'Mine leheküljele $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(vaikekeel)',
+'img-lang-info' => 'Viimistle pilt järgmises keeles: $1. $2',
+'img-lang-go' => 'Mine',
+
 # Table pager
 'ascending_abbrev' => 'tõusev',
 'descending_abbrev' => 'laskuv',
@@ -3847,12 +3853,22 @@ Sa võid [[Special:EditWatchlist|kasutada ka harilikku tekstiredaktorit]].',
 'version-other' => 'Muu',
 'version-mediahandlers' => 'Meediatöötlejad',
 'version-hooks' => 'Haagid',
-'version-parser-extensiontags' => 'Parseri lisamärgendid',
+'version-parser-extensiontags' => 'Parseri lisasildid',
 'version-parser-function-hooks' => 'Parserifunktsioonid',
 'version-hook-name' => 'Haagi nimi',
 'version-hook-subscribedby' => 'Tellijad',
 'version-version' => '(Versioon $1)',
-'version-license' => 'Litsents',
+'version-license' => 'MediaWiki litsents',
+'version-ext-license' => 'Litsents',
+'version-ext-colheader-name' => 'Lisa',
+'version-ext-colheader-version' => 'Versioon',
+'version-ext-colheader-license' => 'Litsents',
+'version-ext-colheader-description' => 'Kirjeldus',
+'version-ext-colheader-credits' => 'Autorid',
+'version-license-title' => 'Tarkvaralisa $1 litsents',
+'version-license-not-found' => 'Selle lisa kohta ei leitud üksikasjalikku litsentsiteavet.',
+'version-credits-title' => 'Tarkvaralisa $1 tegijad',
+'version-credits-not-found' => 'Selle lisa tegijate kohta ei leitud üksikasjalikku teavet.',
 'version-poweredby-credits' => "See viki kasutab '''[https://www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001–$1 $2.",
 'version-poweredby-others' => 'teised',
 'version-poweredby-translators' => 'translatewiki.net-i tõlkijad',
@@ -3870,13 +3886,14 @@ GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Ümbersuunamine faili, kasutaja või redaktsiooni identifikaatori järgi',
+'redirect' => 'Ümbersuunamine faili, kasutaja, lehekülje või redaktsiooni identifikaatori järgi',
 'redirect-legend' => 'Ümbersuunamine faili juurde või leheküljele',
-'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni või lehekülje identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Mine',
 'redirect-lookup' => 'Leia:',
 'redirect-value' => 'Väärtus:',
 'redirect-user' => 'Kasutaja identifikaator',
+'redirect-page' => 'Lehekülje identifikaator',
 'redirect-revision' => 'Lehekülje redaktsioon',
 'redirect-file' => 'Failinimi',
 'redirect-not-exists' => 'Väärtust ei leitud',
@@ -3942,7 +3959,6 @@ GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks
 
 # Special:ComparePages
 'comparepages' => 'Lehekülgede kõrvutamine',
-'compare-selector' => 'Lehekülje redaktsioonide kõrvutamine',
 'compare-page1' => 'Lehekülg 1',
 'compare-page2' => 'Lehekülg 2',
 'compare-rev1' => 'Redaktsioon&nbsp;1',
@@ -4070,6 +4086,7 @@ Kui ei, kasuta allolevat lihtsat vormi. Sinu kommentaar lisatakse koos kasutajan
 'api-error-overwrite' => 'Olemasolevate failide ülekirjutamine pole lubatud.',
 'api-error-stashfailed' => 'Sisetõrge: Serveril ei õnnestunud ajutist faili talletada.',
 'api-error-publishfailed' => 'Sisetõrge: Serveril ebaõnnestus ajutise faili avaldamine.',
+'api-error-stasherror' => 'Selle faili hoidlasse üleslaadimisel ilmnes tõrge.',
 'api-error-timeout' => 'Server ei vastanud oodatud aja sees.',
 'api-error-unclassified' => 'Ilmnes teadmata tõrge.',
 'api-error-unknown-code' => 'Teadmata tõrge: "$1"',
@@ -4119,10 +4136,12 @@ Samuti hõrendab see parserifunktsioonid nagu
 'expand_templates_input' => 'Sisendtekst:',
 'expand_templates_output' => 'Tulemus',
 'expand_templates_xml_output' => 'XML-väljund',
+'expand_templates_html_output' => 'HTML-toorväljund',
 'expand_templates_ok' => 'Hõrenda',
 'expand_templates_remove_comments' => 'Eemalda selgitavad märkused',
 'expand_templates_remove_nowiki' => 'Ära näita tulemuses <nowiki>-silte',
 'expand_templates_generate_xml' => 'Näita XML sõelumispuud',
+'expand_templates_generate_rawhtml' => 'Näita toor-HTMLi',
 'expand_templates_preview' => 'Eelvaade',
 
 );
index 62a5028..66b6696 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author An13sa
  * @author Bengoa
+ * @author Fitoschido
  * @author Helix84
  * @author Kaganer
  * @author Kaustubh
@@ -55,14 +56,12 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'OrrialdeZaharrak' ),
        'Blankpage'                 => array( 'OrrialdeZuria' ),
        'Block'                     => array( 'Blokeatu' ),
-       'Blockme'                   => array( 'BlokeaNazazu' ),
        'BrokenRedirects'           => array( 'HautsitakoBirzuzenketak' ),
        'Categories'                => array( 'Kategoriak' ),
        'ChangePassword'            => array( 'PasahitzaAldatu' ),
        'Confirmemail'              => array( 'EmailaBaieztatu' ),
        'Contributions'             => array( 'Ekarpenak' ),
        'CreateAccount'             => array( 'KontuaSortu' ),
-       'Disambiguations'           => array( 'Argipenak' ),
        'DoubleRedirects'           => array( 'BirzuzenketaBikoitzak' ),
        'Emailuser'                 => array( 'LankideEmaila' ),
        'Export'                    => array( 'Esportatu' ),
@@ -148,7 +147,6 @@ $messages = array(
 'tog-minordefault' => 'Lehenetsi bezala aldaketa txiki bezala markatu guztiak',
 'tog-previewontop' => 'Aurrebista aldaketa koadroaren aurretik erakutsi',
 'tog-previewonfirst' => 'Lehen aldaketan aurrebista erakutsi',
-'tog-nocache' => 'Orrialdeen katxea ezgaitu',
 'tog-enotifwatchlistpages' => 'Bidal iezadazue e-posta bat, jarraitzen ari naizen orrialde edo fitxategi bat aldatzen denean',
 'tog-enotifusertalkpages' => 'Nire eztabaida orrialdea aldatzen denean e-posta jaso',
 'tog-enotifminoredits' => 'Orrialde edo fitxategietan aldaketak txikiak direnean ere e-posta jaso',
@@ -169,6 +167,7 @@ $messages = array(
 'tog-showhiddencats' => 'Ikusi kategoria ezkutuak',
 'tog-norollbackdiff' => 'Rollback bat egin ondoren ezberdintasunak ez hartu aintzat',
 'tog-useeditwarning' => 'Abisa nazazu gorde gabeko aldaketak eginez orrialde bat uzten dudanean',
+'tog-prefershttps' => 'Erabili beti konexio seguru bat sartzerakoan',
 
 'underline-always' => 'Beti',
 'underline-never' => 'Inoiz ez',
@@ -282,7 +281,6 @@ $messages = array(
 'qbedit' => 'Aldatu',
 'qbpageoptions' => 'Orrialde hau',
 'qbmyoptions' => 'Nire orrialdeak',
-'qbspecialpages' => 'Aparteko orrialdeak',
 'faq' => 'Maiz egindako galderak',
 'faqpage' => 'Project:Maiz egindako galderak',
 
@@ -322,7 +320,7 @@ $messages = array(
 'edit' => 'Aldatu',
 'create' => 'Sortu',
 'editthispage' => 'Orri hau aldatu',
-'create-this-page' => 'Orrialde hau sortu',
+'create-this-page' => 'Sortu orri hau',
 'delete' => 'Ezabatu',
 'deletethispage' => 'Ezabatu orri hau',
 'undeletethispage' => 'Orrialde hau bergaitu',
@@ -393,15 +391,15 @@ $1',
 'badaccess-groups' => 'Eskatu duzun ekintza honako {{PLURAL:$2|taldeko|taldeetako}} lankideei mugatuta dago: $1.',
 
 'versionrequired' => 'MediaWikiren $1 bertsioa beharrezkoa da',
-'versionrequiredtext' => 'MediaWikiren $1 bertsioa beharrezkoa da orrialde hau erabiltzeko. Ikus [[Special:Version]]',
+'versionrequiredtext' => 'MediaWikiren $1 bertsioa beharrezkoa da orri hau erabiltzeko. Ikus [[Special:Version|bertsio orria]].',
 
 'ok' => 'Ados',
 'retrievedfrom' => '"$1"(e)tik jasota',
 'youhavenewmessages' => '$1 dauzkazu ($2).',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Beste erabiltzaile baten|$3 erabiltzaileren}} $1 ($2).',
 'youhavenewmessagesmanyusers' => 'Hainbat erabiltzaileren $1 ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|Mezu berri bat duzu|Mezu berriak dituzu}}',
-'newmessagesdifflinkplural' => 'azken {{PLURAL:$1|aldaketa|aldaketak}}',
+'newmessageslinkplural' => '{{PLURAL:$1|Mezu berri bat duzu|999=Mezu berriak dituzu}}',
+'newmessagesdifflinkplural' => 'azken {{PLURAL:$1|aldaketa|999=aldaketak}}',
 'youhavenewmessagesmulti' => 'Mezu berriak dituzu $1(e)n',
 'editsection' => 'aldatu',
 'editold' => 'aldatu',
@@ -446,18 +444,20 @@ $1',
 URLa gaizki idatzi duzu, edo hautsitako lotura jarraitu duzu.
 Honek akatsa indikatzen du {{SITENAME}}-(e)n.',
 'nosuchspecialpage' => 'Ez da aparteko orrialde hori existitzen',
-'nospecialpagetext' => '<strong>Baliogabeko aparteko orrialde bat eskatu duzu.</strong>
+'nospecialpagetext' => '<strong>Orri berezi baliogabe bat eskatu duzu.</strong>
 
-Existitzen direnen zerrenda ikus dezakezu  [[Special:SpecialPages|{{int:specialpages}}]] orrialdean.',
+Bada orri berezien zerrenda bat, [[Special:SpecialPages|{{int:specialpages}}]] orrian.',
 
 # General errors
 'error' => 'Errorea',
 'databaseerror' => 'Datu-base errorea',
+'databaseerror-text' => 'Datubase eskaera akats bat gertatu da.
+Honek softwarean arazo bat dagoela adiera dezake.',
 'databaseerror-textcl' => 'Datubasearen eskera akats bat gertatu da.',
 'databaseerror-query' => 'Eskaera: $1',
 'databaseerror-function' => 'Funtzioa: $1',
 'databaseerror-error' => 'Akatsa: $1',
-'laggedslavemode' => 'Oharra: Baliteke orrialde honetan azken aldaketak ez erakustea.',
+'laggedslavemode' => "'''Oharra:''' Baliteke orri honetan azken aldaketak jasota ez egotea.",
 'readonly' => 'Datu-basea blokeatuta dago',
 'enterlockreason' => 'Zehaztu blokeatzeko arrazoia, noiz kenduko den jakinaraziz',
 'readonlytext' => 'Datu-basea artikulu berriak sortu edo aldaketak ez egiteko blokeatuta dago, seguruenik mantenu lanak direla-eta. Blokeo hori kentzerakoan beti bezala egongo da berriz.
@@ -471,7 +471,7 @@ Hau ez bada kasua, agian akats bat aurkitu duzu softwarean.
 Mesedez, bidali gertakar hau administradore bati, URLaren izena jarriz.',
 'missingarticle-rev' => '(berrikuspena#: $1)',
 'missingarticle-diff' => '(Ezb: $1, $2)',
-'readonly_lag' => 'Datu-basea automatikoki blokeatu da menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
+'readonly_lag' => 'Datu-basea automatikoki blokeatu da, menpeko zerbitzariak nagusiarekin sinkronizatu bitartean',
 'internalerror' => 'Barne errorea',
 'internalerror_info' => 'Barne errorea: $1',
 'fileappenderrorread' => 'Ezin izan da "$1" irakurri, gehitzean.',
@@ -484,7 +484,7 @@ Mesedez, bidali gertakar hau administradore bati, URLaren izena jarriz.',
 'fileexistserror' => 'Ezin da "$1" fitxategian idatzi: lehendik existitzen da',
 'unexpected' => 'Espero ez zen balioa: "$1"="$2".',
 'formerror' => 'Errorea: ezin izan da formularioa bidali',
-'badarticleerror' => 'Ezin da ekintza hau orrialde honetan burutu.',
+'badarticleerror' => 'Ekintza hori ezin da orri honetan egin.',
 'cannotdelete' => 'Ezin izan da «$1» orria edo fitxategia ezabatu.
 Baliteke beste norbaitek ezabatu izana.',
 'cannotdelete-title' => 'Ezin da "$1" orrialdea ezabatu',
@@ -496,24 +496,21 @@ Ez du arrazoirik eman.',
 'perfcached' => 'Hurrengo datuak katxean gordeta daude eta litekeena da guztiz eguneratuta ez egotea. Gehienez {{PLURAL:$1|emaitza 1 dago|$1 emaitza daude}} eskuragarri katxean.',
 'perfcachedts' => 'Hurrengo datuak katxean daude, $1 eguneratu zen azkenekoz. {{PLURAL:$4|emaitza 1 dago|$4 emaitza daude}} eskuragarri katxean.',
 'querypage-no-updates' => 'Orrialde honen berritzeak ez dira baimentzen. Hemen dagoen data ez da zuzenean berrituko.',
-'wrong_wfQuery_params' => 'Baliogabeko parametroak eman zaizkio wfQuery() funtzioari<br />
-Funtzioa: $1<br />
-Kontsulta: $2',
 'viewsource' => 'Kodea ikusi',
 'viewsource-title' => '$1-en iturria ikusi',
 'actionthrottled' => 'Ekintzaren gainetik pasa da',
 'actionthrottledtext' => 'Spamaren aurkako neurri gisa ekintza hau denbora tarte laburrean aldi askotan egiteko mugapena duzu, eta muga hori zeharkatu duzu.
 Saia zaitez berriro minutu batzuen buruan, mesedez.',
-'protectedpagetext' => 'Orrialde hau aldaketak saihesteko blokeatu egin da.',
+'protectedpagetext' => 'Orri hau babestu da, edizioak edo beste ekintza batzuk egin ez daitezen.',
 'viewsourcetext' => 'Orri honen iturburu-testua ikusi eta kopiatu dezakezu:',
-'viewyourtext' => "Orrialde honetara '''zure aldaketen''' jatorria ikus eta kopiatu ahal duzu:",
+'viewyourtext' => "Ondorengo orri honetan '''zeuk egin dituzun aldaketen''' iturburu kodea ikus eta kopia dezakezu:",
 '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:''' Softwarearen interfazerako testua duen orri bat aldatzen ari zara.
 Orri honetako aldaketek wiki honetako erabiltzaile guztiei eragingo diete.
 Itzulpenetarako, erabil ezazu [//translatewiki.net/ translatewiki.net], MediaWiki proiektuan.",
-'cascadeprotected' => "Orrialde hau aldaketen aurka babestua dago, ''kaskada'' aukerarekin babestu {{PLURAL:$1|duten orrialde honetan|dituzten orrialde hauetan}} txertaturik dagoelako:
-$2",
+'cascadeprotected' => 'Orri hau aldaketen aurka babestua dago, sartuta dagoelako «kaskadako babesa» aukerarekin babestu {{PLURAL:$1|duten orri honetan|dituzten orri hauetan}}:
+$2',
 'namespaceprotected' => "Ez daukazu '''$1''' izen-tarteko orrialdeak aldatzeko baimenik.",
 'customcssprotected' => 'Ez duzu baimenik CSS orrialde hau aldatzeko beste erabiltzaile baten hobespen pertsonalak dituelako.',
 'customjsprotected' => 'Ez duzu baimenik JavaScript orrialde hau aldatzeko beste erabiltzaile baten hobespen pertsonalak dituelako.',
@@ -530,7 +527,8 @@ Blokeoa ezarri zuen administratzaileak honako arrazoia eman zuen: "$3".',
 'invalidtitle-knownnamespace' => 'Izenburua gaizki dago "$2" izen eremuan eta "$3" testuan',
 'invalidtitle-unknownnamespace' => 'Izenburua gaizki dago "$1" izen eremuan ezezagunean eta "$2" testuan',
 'exception-nologin' => 'Saioa hasi gabe',
-'exception-nologin-text' => 'Ekintza edo orrialde honek wiki honetan sartzea eskatzen du.',
+'exception-nologin-text' => 'Orri honetan sartzeko edo ekintza hau egiteko, [[Special:Userlogin|saioa hasi]] behar duzu.',
+'exception-nologin-text-manual' => 'Mesedez $1 orrialde honetan sartu edo ekintza hau egiteko.',
 
 # Virus scanner
 'virus-badscanner' => "Ezarpen txarrak: antibirus ezezaguna: ''$1''",
@@ -626,7 +624,7 @@ Egiaztatu ondo idatzi duzun, edo [[Special:UserLogin/signup|kontu berria sor eza
 'passwordtooshort' => 'Pasahitzek {{PLURAL:$1|karaktere 1|$1 karaktere}} gutxienez eduki behar dituzte.',
 'password-name-match' => 'Zure pasahitza ezin da zure erabiltzaile-izen bera izan.',
 'password-login-forbidden' => 'Erabiltzaile izen eta pasahitz hau erabiltzea debekaturik dago.',
-'mailmypassword' => 'Pasahitza berria e-postaz bidali',
+'mailmypassword' => 'Pasahitza berrezarri',
 'passwordremindertitle' => 'Pasahitzaren gogorarazpena {{SITENAME}}(e)tik',
 'passwordremindertext' => 'Norbaitek (ziurrenik zuk, $1 IP helbidetik) pasahitz berri bat
 eskatu du {{SITENAME}}(r)ako ($4). Momentu honetan erabiltzeko "$2" lankidearentzat
@@ -680,7 +678,7 @@ Ematea erabakitzen baduzu hori erabiliko da lanaren atribuzioa egiterako garaian
 'user-mail-no-body' => 'E-posta bidaltzen saiatu zara testu gorputzik gabe edo laburregiarekin.',
 
 # Change password dialog
-'resetpass' => 'Pasahitza aldatu',
+'changepassword' => 'Pasahitza aldatu',
 'resetpass_announce' => 'E-postaz jasotako kode tenporal baten bidez saioa hasi duzu. Saioa hasierarekin jarraitzeko, pasahitz berri bat definitu beharra daukazu:',
 'resetpass_text' => '<!-- Testua hemen idatzi -->',
 'resetpass_header' => 'Pasahitza aldatu',
@@ -761,7 +759,7 @@ Behin-behineko pasahitza: $2',
 # Edit pages
 'summary' => 'Laburpena:',
 'subject' => 'Izenburua:',
-'minoredit' => 'Hau aldaketa txikia da',
+'minoredit' => 'Aldaketa hau txikia da',
 'watchthis' => 'Orrialde hau jarraitu',
 'savearticle' => 'Gorde orria',
 'preview' => 'Aurrebista erakutsi',
@@ -899,7 +897,7 @@ Erregistroko azken sarrera azpian jartzen da erreferentzia gisa:",
 'cascadeprotectedwarning' => "'''Oharra:''' Orrialde hau blokeatua izan da eta administratzaileek baino ez dute berau aldatzeko ahalmena, honako {{PLURAL:$1|orrialdeko|orrialdeetako}} kaskada-babesean txertatuta dagoelako:",
 'titleprotectedwarning' => "'''Oharra: Orrialde hau blokeatuta dago eta bakarrik [[Special:ListGroupRights|erabiltzaile batzuek]] sortu dezakete.'''
 Azken erregistroko sarrera ematen da azpian erreferentzia gisa:",
-'templatesused' => 'Orrialde honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:',
+'templatesused' => 'Orri honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:',
 'templatesusedpreview' => 'Aurreikuspen honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:',
 'templatesusedsection' => 'Atal honetan erabiltzen {{PLURAL:$1|den txantiloia|diren txantiloiak}}:',
 'template-protected' => '(babestua)',
@@ -909,7 +907,7 @@ Azken erregistroko sarrera ematen da azpian erreferentzia gisa:",
 'nocreatetext' => 'Gune honek orrialde berriak sortzeko gaitasuna mugatu du. Atzera egin dezakezu existitzen den orrialde bat aldatzeko, edo [[Special:UserLogin|saio hasi edo kontua sortu]].',
 'nocreate-loggedin' => 'Ez duzu orri berriak sortzeko baimenik.',
 'sectioneditnotsupported-title' => 'Ezin dira atalak aldatu',
-'sectioneditnotsupported-text' => 'Ezin dira atalak aldatu orrialde honetan.',
+'sectioneditnotsupported-text' => 'Atalak aldatzea ez dago gaituta orri honetan.',
 'permissionserrors' => 'Baimenen erroreak',
 'permissionserrorstext' => 'Ez duzu hori egiteko baimenik, hurrengo {{PLURAL:$1|arrazoia dela eta|arrazoiak direla eta}}:',
 'permissionserrorstext-withaction' => 'Ezin duzu $2, ondorengo {{PLURAL:$1|arrazoi hau dela eta:|arrazoi hauek direla eta:}}',
@@ -1042,10 +1040,6 @@ Administratzailea zarenez, diff hau ikus dezakezu. Xehetasunak ikusgai daude [{{
 'revisiondelete' => 'Berrikuspenak ezabatu/leheneratu',
 'revdelete-nooldid-title' => 'Helburu berrikuspenik ez',
 'revdelete-nooldid-text' => 'Ez d(it)uzu eragiketa hau burutzeko helburu berrikuspena(k) zehaztu.',
-'revdelete-nologtype-title' => 'Log motarik ez da zehaztu',
-'revdelete-nologtype-text' => 'Ez duzu log motarik zehaztu ekintza hori burutzeko.',
-'revdelete-nologid-title' => 'Log sarrera okerra',
-'revdelete-nologid-text' => 'Ez duzu log helburu ekintzarik zehaztu funtzioa betetzeko, edo zehaztutako sarrera ez da existitzen.',
 'revdelete-no-file' => 'Zehazturiko fitxategia ez da existitzen.',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" fitxategiaren bertsio ezabatua (eguna: $2; ordua: $3) ikusi nahi duzu?',
 'revdelete-show-file-submit' => 'Bai',
@@ -1065,8 +1059,8 @@ Administratzailea zarenez, diff hau ikus dezakezu. Xehetasunak ikusgai daude [{{
 'revdelete-hide-user' => 'Egilearen erabiltzaile izena/IPa ezkutatu',
 'revdelete-hide-restricted' => 'Mugapen hauek administratzaileei zein besteei aplikatu',
 'revdelete-radio-same' => '(ez aldatu)',
-'revdelete-radio-set' => 'Bai',
-'revdelete-radio-unset' => 'Ez',
+'revdelete-radio-set' => 'Izkutua',
+'revdelete-radio-unset' => 'Ikusgarria',
 'revdelete-suppress' => 'Administratzaileen eta bestelakoen datuak kendu',
 'revdelete-unsuppress' => 'Berrezarritako aldaketen mugak kendu',
 'revdelete-log' => 'Arrazoia:',
@@ -1078,8 +1072,6 @@ $1",
 'logdelete-failure' => "'''Erregistroaren ikusgaitasuna ezin da honela ezarri:'''
 $1",
 'revdel-restore' => 'Aldatu ikusgaitasuna',
-'revdel-restore-deleted' => 'ezabatutako berraztertzeak',
-'revdel-restore-visible' => 'ageriko berrikuspenak',
 'pagehist' => 'Orriaren historia',
 'deletedhist' => 'Ezabatutako historia',
 'revdelete-hide-current' => 'Errorea, $1 $2 data duen elementua ezkutatzean: hau da oraingo bertsioa.
@@ -1140,7 +1132,7 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'mergelogpagetext' => 'Jarraian dagoen zerrendak orrialde baten historiatik beste batera egindako azken bateratzeak erakusten ditu.',
 
 # Diffs
-'history-title' => '"$1" orrialdearen historia berrikuspena',
+'history-title' => '«$1» orrialdearen historia berrikuspena',
 'difference-title' => '«$1»: berrikuspenen arteko aldeak',
 'difference-title-multipage' => '"$1" eta "$2" orrialdeen arteko ezberditasunak',
 'difference-multipage' => '(Orrialdeen arteko ezberdintasunak)',
@@ -1154,12 +1146,8 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 # Search results
 'searchresults' => 'Bilaketaren emaitzak',
 'searchresults-title' => '"$1(e)rako" emaitzak bilatu',
-'searchresulttext' => '{{SITENAME}}(e)n bilaketak egiteko informazio gehiagorako, ikus [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' bilatu duzu ([[Special:Prefixindex/$1|"$1" hasten diren orri guztiak]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" orrirako lotura duten orri guztiak]])',
-'searchsubtitleinvalid' => "'''$1''' bilatu duzu",
 'toomanymatches' => 'Aukera gehiegi aurkitu dira, saia zaitez beste eskaera ezberdin batekin',
 'titlematches' => 'Emaitzak artikuluen izenburuetan',
-'notitlematches' => 'Ez dago bat datorren orrialde izenbururik',
 'textmatches' => 'Emaitza orrialde testuetan',
 'notextmatches' => 'Ez dago bat datorren orrialde testurik',
 'prevn' => 'aurreko {{PLURAL:$1|$1}}ak',
@@ -1168,10 +1156,8 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'nextn-title' => 'Hurrengo $1 {{PLURAL:$1|emaitza|emaitzak}}',
 'shown-title' => 'Erakutsi {{PLURAL:$1|emaitza $1|$1 emaitza}} orrialdeko',
 'viewprevnext' => 'Ikusi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Bilaketa aukerak',
-'searchmenu-exists' => "'''\"[[:\$1]]\" izena duen orrialde bat badago wiki honetan'''",
-'searchmenu-new' => "'''\"[[:\$1]]\" orrialde sortu wiki honetan!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Aurrizki hau duten orrialdeetatik nabigatu]]',
+'searchmenu-exists' => "'''«[[:$1]]» izena duen orri bat bada wiki honetan.''' {{PLURAL:$2|0=|Ikus, gainera, aurkitutako beste bilaketa emaitzak.}}",
+'searchmenu-new' => "'''Sortu «[[:$1]]» orria wiki honetan!''' {{PLURAL:$2|0=|Ikus, gainera, zure bilaketarekin aurkitutako orria.|Ikus, gainera, bilaketaren emaitzak.}}",
 'searchprofile-articles' => 'Eduki-orriak',
 'searchprofile-project' => 'Laguntza eta Proiektu-orriak',
 'searchprofile-images' => 'Multimedia',
@@ -1192,39 +1178,35 @@ Kontura zaitez nabigazio loturek, zutabea ezabatu dezakela.',
 'search-interwiki-default' => '$1(r)en emaitzak:',
 'search-interwiki-more' => '(gehiago)',
 'search-relatedarticle' => 'Erlazionatua',
-'mwsuggest-disable' => 'AJAX gomendioak ezgaitu',
 'searcheverything-enable' => 'Bilatu izen-tarte guztietan',
 'searchrelated' => 'erlazionatua',
 'searchall' => 'guztia',
 'showingresults' => "Jarraian {{PLURAL:$1|emaitza '''1''' ikus daiteke|'''$1''' emaitza ikus daitezke}}, #'''$2'''.etik hasita.",
 'showingresultsnum' => "Hasieran #'''$2''' duten {{PLURAL:$3|emaitza '''1'''|'''$3''' emaitza}} erakusten dira jarraian.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1'''(e)tik '''$3''' emaitza|'''$1 - $2'''(e)tik '''$3''' emaitza}} '''$4'''(r)entzat",
-'nonefound' => "'''Oharra''': Bakarrik izen-tarte batzuetan egiten da berez bilaketa.
-Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatzeko (eztabaida orrialdea, txantiloiak, etab. sartuz) edo bestela erabil ezazu nahi duzun izen-tartea aurrizki gisa.",
 'search-nonefound' => 'Ez dago eskaerarekin bat egiten duten emaitzarik.',
-'powersearch' => 'Bilatu',
 'powersearch-legend' => 'Bilaketa aurreratua',
 'powersearch-ns' => 'Bilatu honako izen-tartetan:',
 'powersearch-redir' => 'Birzuzenketen zerrenda',
-'powersearch-field' => 'Bilatu',
 'powersearch-togglelabel' => 'Egiaztatu:',
 'powersearch-toggleall' => 'Guztiak',
 'powersearch-togglenone' => 'Bat ere ez',
 'search-external' => 'Kanpo bilaketa',
 'searchdisabled' => '{{SITENAME}}(e)n ezgaituta dago bilaketa. Dena dela, Google erabiliz ere egin dezakezu bilaketa. Kontuan izan bertan dituzten {{SITENAME}}(e)ko emaitzak zaharkituta egon daitezkeela.',
+'search-error' => 'Akats bat gertatu da bilaketa egiterakoan: $1',
 
 # Preferences page
 'preferences' => 'Hobespenak',
 'mypreferences' => 'Hobespenak',
 'prefs-edits' => 'Aldaketa kopurua:',
-'changepassword' => 'Pasahitza aldatu',
+'prefsnologintext2' => 'Mesedez $1 zure hobespenak aldatzeko.',
 'prefs-skin' => 'Itxura',
 'skin-preview' => 'Aurrebista',
 'datedefault' => 'Hobespenik ez',
 'prefs-beta' => 'Beta ezaugarriak',
 'prefs-datetime' => 'Data eta ordua',
 'prefs-labs' => 'Labs ezaugarriak',
-'prefs-user-pages' => 'Erabiltzaile orrialdeak',
+'prefs-user-pages' => 'Erabiltzaile orriak',
 'prefs-personal' => 'Erabiltzaile profila',
 'prefs-rc' => 'Azken aldaketak',
 'prefs-watchlist' => 'Jarraipen zerrenda',
@@ -1240,25 +1222,25 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'prefs-email' => 'E-posta aukerak',
 'prefs-rendering' => 'Itxura',
 'saveprefs' => 'Gorde',
-'resetprefs' => 'Hasieratu',
 'restoreprefs' => 'Konfigurazio lehenetsi guztiak berrezarri (sekzio guztietan)',
 'prefs-editing' => 'Aldatzen',
 'rows' => 'Lerroak:',
 'columns' => 'Zutabeak:',
 'searchresultshead' => 'Bilaketa',
-'resultsperpage' => 'Emaitza orrialdeko:',
 'stub-threshold' => '<a href="#" class="stub">stub link</a> formaturako atalasea (byteak):',
 'stub-threshold-disabled' => 'Ezgaitua',
 'recentchangesdays' => 'Aldaketa berrietan erakutsi beharreko egun kopurua:',
 'recentchangesdays-max' => '(gehienez {{PLURAL:$1|egun bat|$1 egun}})',
 'recentchangescount' => 'Erakusteko aldaketa kopurua, lehenetsita:',
 'prefs-help-recentchangescount' => 'Honek azken aldaketak, orrialdeen historiak eta logak barne-biltzen ditu.',
+'prefs-help-watchlist-token2' => 'Hau da zure jarraipen zerrendako web jarioaren giltza sekretua.
+Ezagutzen duen orok zure jarraipen zerrenda irakurtzeko aukera izango du, ez partekatu.
+[[Special:ResetTokens|Klik egin hemen berrezarri behar baduzu]]',
 'savedprefs' => 'Zure hobespenak gorde egin dira.',
 'timezonelegend' => 'Ordu-eremua:',
 'localtime' => 'Ordu lokala:',
 'timezoneuseserverdefault' => 'Erabili lehenetsitako wikia ($1)',
 'timezoneuseoffset' => 'Beste bat (diferentzia ezarri)',
-'timezoneoffset' => 'Ezberdintasuna¹:',
 'servertime' => 'Zerbitzariko ordua:',
 'guesstimezone' => 'Nabigatzailetik jaso',
 'timezoneregion-africa' => 'Afrika',
@@ -1280,6 +1262,8 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
 'prefs-custom-css' => 'CSS pertsonalizatua',
 'prefs-custom-js' => 'JS pertsonalizatua',
 'prefs-common-css-js' => 'Azal mota guztietan elkarbanatutako CSS/JS:',
+'prefs-reset-intro' => 'Orrialde hau erabil dezakezu zure guneko berezko hobespenak berreskuratzeko.
+Hau ezin da desegin.',
 'prefs-emailconfirm-label' => 'E-posta baieztapena:',
 'youremail' => 'E-posta:',
 'username' => '{{GENDER:$1|Erabiltzaile izena}}:',
@@ -1323,6 +1307,7 @@ Informazio hau publikoa da.',
 'prefs-displaywatchlist' => 'Aukerak erakutsi',
 'prefs-diffs' => 'Ezberdintasunak',
 'prefs-help-prefershttps' => 'Hobespen hauek eragina izango dute sartzen zaren hurrengoan.',
+'prefs-tabs-navigation-hint' => 'Gomendioa: Fitxen zerrendan nabigatzeko ezker eta eskuin geziak erabil ditzakezu.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-posta helbidea zuzena dela dirudi',
@@ -1349,6 +1334,8 @@ Informazio hau publikoa da.',
 'userrights-notallowed' => 'Zure kontuak ez du baimenik erabiltzaile eskumenak aldatzeko.',
 'userrights-changeable-col' => 'Alda ditzakezun taldeak',
 'userrights-unchangeable-col' => 'Aldatu ezin ditzakezun taldeak',
+'userrights-conflict' => 'Gatazka gertatu da erabiltzaile eskubideak aldatzean. Mesedez, berrikusi eta baieztatu zure aldaketak.',
+'userrights-removed-self' => 'Arrakasta izan duzu zure eskumenak kentzen. Beraz jada ezin duzu orrialde hau gehiago ikusi.',
 
 # Groups
 'group' => 'Taldea:',
@@ -1375,16 +1362,16 @@ Informazio hau publikoa da.',
 'grouppage-suppress' => '{{ns:project}}:Gainikuspena',
 
 # Rights
-'right-read' => 'Orriak irakurri',
+'right-read' => 'Irakurri orriak',
 'right-edit' => 'Orriak aldatu',
 'right-createpage' => 'Orrialdeak sortu (eztabaida orrialdeak ez direnak)',
 'right-createtalk' => 'Eztabaida orriak sortu',
 'right-createaccount' => 'Erabiltzaile kontu berria sortu',
 'right-minoredit' => 'Aldaketa txiki gisa markatu',
-'right-move' => 'Orrialdeak mugitu',
+'right-move' => 'Mugitu orriak',
 'right-move-subpages' => 'Mugitu orrialdeak bere azpiorrialdeekin',
 'right-move-rootuserpages' => 'Erro-lankidearen orriak mugitu',
-'right-movefile' => 'Fitxategiak mugitu',
+'right-movefile' => 'Mugitu fitxategiak',
 'right-suppressredirect' => 'Ez sortu birzuzenketa bat antzinako izenetik orrialdea mugitzerakoan',
 'right-upload' => 'Fitxategia igo',
 'right-reupload' => 'Jada existitzen den artxibo bat gainidatzi',
@@ -1407,33 +1394,39 @@ Informazio hau publikoa da.',
 'right-undelete' => 'Ezabatutako orrialde bat itzularazi',
 'right-suppressrevision' => 'Administratzaileentzat izkutatutako berrikuspenak berrikusi edo berrezarri',
 'right-suppressionlog' => 'Log pribatuak ikusi',
-'right-block' => 'Beste lankideek edita ez dezaten blokeatu',
-'right-blockemail' => 'Erabiltzaile batek emailak bidal ez ditzan blokeatu',
-'right-hideuser' => 'Erabiltzaile izen bat blokeatu, publikotik izkutatuz',
+'right-block' => 'Blokeatu beste erabiltzaile batzuk, edita ez dezaten',
+'right-blockemail' => 'Erabiltzaile bati blokeatu mezu elektronikoak bidaltzeko aukera',
+'right-hideuser' => 'Blokeatu erabiltzaile izen bat, publikotik ezkutatuta',
 'right-ipblock-exempt' => 'IP blokeoen, auto-blokeoen eta maila blokeoen gainetik pasa.',
 'right-proxyunbannable' => 'Proxyen blokeo automatikoen gainetik pasa',
 'right-unblockself' => 'Beren burua desblokeatu',
 'right-protect' => 'Orrialde babestuak aldatu eta babes maila aldatu',
 'right-editprotected' => 'Babestutako orrialdeak aldatu (babes jauzirik gabe)',
+'right-editsemiprotected' => 'Aldatu "{{int:protect-level-autoconfirmed}}" babesa duten orrialdeak',
 'right-editinterface' => 'Erabiltzailearen interfazea aldatu',
 'right-editusercssjs' => 'Beste lankideen CSS eta JS fitxategiak aldatu',
 'right-editusercss' => 'Beste lankideen CSS fitxategiak aldatu',
 'right-edituserjs' => 'Beste lankideen JS fitxategiak aldatu',
 'right-editmyusercss' => 'Aldatu zure CSS fitxategi propioak',
 'right-editmyuserjs' => 'Aldatu zure JavaScript fitxategi propioak',
+'right-viewmywatchlist' => 'Zure jarraipen zerrenda ikusi',
+'right-editmywatchlist' => 'Zure jarraipen zerrenda aldatu. Kontuan izan ekintza batzuek orrialdeak gehitu dituztela eskumen hau kenduta ere.',
+'right-viewmyprivateinfo' => 'Zure datu pribatuak ikusi (adb. e-posta helbidea, benetako izena)',
+'right-editmyprivateinfo' => 'Zure datu pribatuak aldatu (adb. e-posta helbidea, benetako izena)',
+'right-editmyoptions' => 'Aldatu zure hobespenak',
 'right-rollback' => 'Orrialde zehatz bat aldatu zuen azken lankidearen aldaketak modu azkar batean leheneratu',
 'right-markbotedits' => 'Atzera bueltan eginiko aldaketak bot baten aldaketak balira markatu',
 'right-noratelimit' => 'Ez dio eragiten erlazio mugak',
 'right-import' => 'Orrialdeak beste wiki batetik inportatu',
 'right-importupload' => 'Igotako fitxategi batetik orrialdeak inportatu',
-'right-patrol' => 'Besteen edizioak patrullatu moduan markatu',
+'right-patrol' => 'Markatu patruilatutzat besteen edizioak',
 'right-autopatrol' => 'Norberak egiten dituen aldaketa guztiak automatikoki gain-ikusi gisa markatu',
 'right-patrolmarks' => 'Ikusi azken aldaketen jarraitze markak',
 'right-unwatchedpages' => 'Ikusi gabeko orrialdeen zerrenda bat ikusi',
 'right-mergehistory' => 'Orrialdeen historia batu',
 'right-userrights' => 'Erabiltzaile guztien eskumenak aldatu',
 'right-userrights-interwiki' => 'Beste wiki batzuetan erabiltzaileen eskumenak aldatu',
-'right-siteadmin' => 'Databasea blokeatu eta desblokeatu',
+'right-siteadmin' => 'Blokeatu eta desblokeatu datu basea blokeatu',
 'right-override-export-depth' => '5eko sakonerararteko loturiko orrialdeak barne esportatu',
 'right-sendemail' => 'Beste erabiltzaileei e-posta bidali',
 'right-passwordreset' => 'Ikusi pasahitza berrezartze e-postak',
@@ -1452,7 +1445,7 @@ Informazio hau publikoa da.',
 'action-createpage' => 'orrialdeak sortu',
 'action-createtalk' => 'eztabaida orrialdeak sortu',
 'action-createaccount' => 'lankide hau sortu',
-'action-minoredit' => 'aldaketa hau txiki gisa markatu',
+'action-minoredit' => 'markatu aldaketa hau txikitzat',
 'action-move' => 'orri hau mugitu',
 'action-move-subpages' => 'orri hau eta haren azpiorriak mugitu',
 'action-move-rootuserpages' => 'mugitu lankidearen oinarri orrialdeak',
@@ -1471,9 +1464,9 @@ Informazio hau publikoa da.',
 'action-suppressionlog' => 'log pribatu hau ikusi',
 'action-block' => 'lankide honi aldaketak egitea ekidin',
 'action-protect' => 'orrialde honetako babes mailak aldatu',
-'action-import' => 'orrialde hau beste wiki batetik inportatu',
-'action-importupload' => 'igotako fitxategi batetik orrialde hau inportatu',
-'action-patrol' => 'besteen aldaketak patruilatu moduan markatu',
+'action-import' => 'orrialdeak beste wiki batetik inportatu',
+'action-importupload' => 'igotako fitxategi batetik orrialdeak inportatu',
+'action-patrol' => 'markatu patruilatutzat besteen aldaketak',
 'action-autopatrol' => 'zeure aldaketak patruilatutzat markatu',
 'action-unwatchedpages' => 'ikusi gabeko orrialdeen zerrenda ikusi',
 'action-mergehistory' => 'orrialde honen historia batu',
@@ -1492,14 +1485,16 @@ Informazio hau publikoa da.',
 'enhancedrc-history' => 'historia',
 'recentchanges' => 'Aldaketa berriak',
 'recentchanges-legend' => 'Azken aldaketen aukerak',
-'recentchanges-summary' => 'Orri honetan ikuska ditzakezu wiki honetan egindako azken aldaketak.',
+'recentchanges-summary' => 'Orrialde honetan ikus ditzakezu wiki honetan egindako azken aldaketak.',
+'recentchanges-noresult' => 'Ez da egon aldaketarik emandako tartean irizpide hau betetzen dutenik.',
 'recentchanges-feed-description' => 'Sindikazio honetan wikian eginiko azkeneko aldaketak jarrai daitezke.',
-'recentchanges-label-newpage' => 'Aldaketa honek orrialde berri bat sortu du',
-'recentchanges-label-minor' => 'Hau aldaketa txikia da',
+'recentchanges-label-newpage' => 'Aldaketa honek orri berri bat sortu du',
+'recentchanges-label-minor' => 'Aldaketa hau txikia da',
 'recentchanges-label-bot' => 'Aldaketa hau bot batek egin du',
 'recentchanges-label-unpatrolled' => 'Aldaketa hau ez da oraindik patruilatua izan',
-'recentchanges-legend-newpage' => '$1 - orrialde berria',
-'rcnote' => "Beheko azken {{PLURAL:$2|eguneko|'''$2''' egunetako}} azken {{PLURAL:$1|aldaketa|'''$1''' aldaketak}} hurrengo datan egin ziren: $5, $4.",
+'recentchanges-label-plusminus' => 'Orriaren neurriak byte kopuru honen gorabehera izan du',
+'recentchanges-legend-heading' => "'''Azalpenak:'''",
+'recentchanges-legend-newpage' => '(ikus, gainera, [[Special:NewPages|orri berrien zerrenda]])',
 'rcnotefrom' => 'Jarraian azaltzen diren aldaketak data honetatik aurrerakoak dira: <b>$2</b> (gehienez <b>$1</b> erakusten dira).',
 'rclistfrom' => 'Erakutsi $1 ondorengo aldaketa berriak',
 'rcshowhideminor' => '$1 aldaketa txikiak',
@@ -1541,10 +1536,11 @@ Informazio hau publikoa da.',
 'reuploaddesc' => 'Igotzeko formulariora itzuli.',
 'upload-tryagain' => 'Aldatutako fitxategiaren deskribapena bidali',
 'uploadnologin' => 'Saioa hasi gabe',
-'uploadnologintext' => 'Fitxategiak igotzeko [[Special:UserLogin|saioa hasi]] behar duzu.',
+'uploadnologintext' => 'Fitxategiak igotzeko $1 behar duzu.',
 'upload_directory_missing' => 'Igoeren direktorioa ($1) ezin da aurkitu eta web zerbitzariak ezin du sortu.',
 'upload_directory_read_only' => 'Web zerbitzariak ez dauka igoera direktorioan ($1) idazteko baimenik.',
 'uploaderror' => 'Errorea igotzerakoan',
+'upload-recreate-warning' => "'''Kontuz: Izen hori duen fitxategi bat berrizendatua edo mugitua izan da.'''",
 'uploadtext' => "Fitxategiak igotzeko beheko formularioa erabil dezakezu. 
 Aurretik igotako irudiak ikusi edo bilatzeko [[Special:FileList|igotako fitxategien zerrendara]] jo. Igoerak [[Special:Log/upload|igoera erregistroan]] ikus daitezke eta ezabatutakoak [[Special:Log/delete|ezabaketa erregistroan]] zerrendatzen dira.
 
@@ -1556,7 +1552,8 @@ Orrialde baten irudi bat txertatzeko, erabili kode hauetako bat:
 'upload-prohibited' => 'Debekatutako fitxategi motak: $1.',
 'uploadlog' => 'igoera erregistroa',
 'uploadlogpage' => 'Igoera erregistroa',
-'uploadlogpagetext' => 'Jarraian azken igoeren zerrenda ikus daiteke.',
+'uploadlogpagetext' => 'Jarraian, igotako azken fitxategien zerrenda ageri da.
+Ikus ezazu [[Special:NewFiles|fitxategi berrien galeria]], irudizkoagoa den ikuspegi orokor bat izateko.',
 'filename' => 'Fitxategi izena',
 'filedesc' => 'Laburpena',
 'fileuploadsummary' => 'Laburpena:',
@@ -1570,6 +1567,7 @@ Orrialde baten irudi bat txertatzeko, erabili kode hauetako bat:
 'illegalfilename' => '"$1" fitxategiaren izenak orrialdeen izenburuetan erabili ezin diren karaktereak ditu. Mesedez, fitxategiari izena aldatu eta saiatu berriz igotzen.',
 'filename-toolong' => 'Fitxategi izenak ezin dira izan 240 byte baino luzeagoak.',
 'badfilename' => 'Irudiaren izena aldatu da: "$1".',
+'filetype-mime-mismatch' => '".$1" fitxategi luzapena ez dator bat fitxategiaren MIME motarekin ($2).',
 'filetype-badmime' => 'Ezin dira "$1" MIME motako fitxategiak igo.',
 'filetype-bad-ie-mime' => 'Ezin da fitxategia igo, Internet Explorerek "$1" bezala detektatuko lukeelako, zein fitxategi mota ez onartua eta arriskutsua den.',
 'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' fitxategi mota ez da gustokoa. Hobesten {{PLURAL:$3|den fitxategi mota|diren fitxategi motak}} {{PLURAL:$2|$2 da|$2 dira}}.',
@@ -1581,6 +1579,7 @@ Baimendutako fitxategi {{PLURAL:$3|mota $2 da|motak $2 dira}}.',
 'filename-tooshort' => 'Fitxategiaren izena laburregia da.',
 'filetype-banned' => 'Mota horretako fitxategiak debekatuta daude.',
 'verification-error' => 'Fitxategiak ez du egiaztapena gainditu.',
+'hookaborted' => 'Egiten saiatu zaren aldaketa albo batera utzi du estentsio batek.',
 'illegal-filename' => 'Fitxategiaren izena ez da onartzen.',
 'overwrite' => 'Jada existitzen den fitxategi bat ezin da berridatzi.',
 'unknown-error' => 'Ezezaguna den errorea gertatu da.',
@@ -1589,6 +1588,7 @@ Baimendutako fitxategi {{PLURAL:$3|mota $2 da|motak $2 dira}}.',
 'large-file' => 'Ez da gomendagarria fitxategiak $1 baino handiagoak izatea; fitxategi honen tamaina: $2.',
 'largefileserver' => 'Fitxategi hau zerbitzariak baimentzen duena baino handiagoa da.',
 'emptyfile' => 'Badirudi igotzen ari zaren fitxategia hutsik dagoela. Mesedez, egiaztatu fitxategi hori dela igo nahi duzuna.',
+'windows-nonascii-filename' => 'Wiki honek ez du baimentzen letra bereziak dituzten fitxategi izenak.',
 'fileexists' => 'Badago izen hori daukan fitxategi bat; mesedez, ikusi existitzen den <strong>[[:$1]]</strong> fitxategia aldatu nahi duzun egiaztatzeko.
 [[$1|thumb]]',
 'filepageexists' => 'Fitxategi honen deskribapen orria dagoeneko sortuta dago <strong>[[:$1]]</strong>-en, baina, ez da existitzen izen hori duen fitxategirik.
@@ -1623,6 +1623,8 @@ Oraindik ere fitxategia igo nahi baduzu atzera itzuli eta izen berri bat erabili
 'php-uploaddisabledtext' => 'Fitxategi igoerak PHP-n ezinduta daude. Ikusi fitxategi_igoerak mesedez.',
 'uploadscripted' => 'Fitxategi honek web zerbitzariak modu ezegokian interpretatu lezakeen HTML edo script kodea dauka.',
 'uploadvirus' => 'Fitxategiak birusa dauka! Xehetasunak: $1',
+'uploadjava' => 'Fitxategia ZIP bat da eta Java .class fitxategi bat du.
+Java fitxategiak igotzea ez dago baimendua, segurtasun muga batzuk hausteko aukera ematen duelako.',
 'upload-source' => 'Jatorrizko fitxategia',
 'sourcefilename' => 'Iturri-fitxategiaren izena:',
 'sourceurl' => 'Jatorrizko URL-a:',
@@ -1684,6 +1686,8 @@ $1',
 'lockmanager-fail-releaselock' => 'Ezin izan da "$1" blokeoa askatu.',
 'lockmanager-fail-db-bucket' => 'Ezin izan dut $1 buketean datubase nahikoa ziurtatu.',
 'lockmanager-fail-db-release' => 'Ezin izan da $1 datubasean giltzaraporik askatu.',
+'lockmanager-fail-svr-acquire' => 'Ezin dituzu $1 zerbitzariko giltzarpoak eskuratu.',
+'lockmanager-fail-svr-release' => 'Ezin izan da $1 zerbitzarian giltzaraporik askatu.',
 
 # ZipDirectoryReader
 'zip-wrong-format' => 'Zehaztutako fitxategia ez zen ZIP motakoa.',
@@ -1746,6 +1750,10 @@ Berez, azken igotako fitxategiak zerrendaren goiko aldean azaltzen dira.',
 'listfiles_size' => 'Tamaina (byte)',
 'listfiles_description' => 'Deskribapena',
 'listfiles_count' => 'Bertsioak',
+'listfiles-show-all' => 'Fitxategien bertsio zaharrak sartu',
+'listfiles-latestversion' => 'Oraingo bertsioa',
+'listfiles-latestversion-yes' => 'Bai',
+'listfiles-latestversion-no' => 'Ez',
 
 # File description page
 'file-anchor-link' => 'Fitxategia',
@@ -1833,6 +1841,10 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'randompage-nopages' => 'Ez dago orrialderik honako {{PLURAL:$2|kategorian|kategoriatan}}: $1',
 
 # Random page in category
+'randomincategory' => 'Kategoriako ausazko orrialdea',
+'randomincategory-invalidcategory' => '"$1" ez da kategoria izen baliagarri bat.',
+'randomincategory-nopages' => 'Ez dago orrialderik [[:Category:$1|$1]] kategorian.',
+'randomincategory-selectcategory' => 'Lortu kategoria honetako ausazko orrialdea: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Joan',
 
 # Random redirect
@@ -1863,6 +1875,7 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'pageswithprop-legend' => 'Orrialde propietatea duten orrialdeak',
 'pageswithprop-prop' => 'Ezaugarriaren izena:',
 'pageswithprop-submit' => 'Joan',
+'pageswithprop-prophidden-long' => 'testu luzearen ezagaurria izkutatua ($1)',
 
 'doubleredirects' => 'Birzuzenketa bikoitzak',
 'doubleredirectstext' => 'Lerro bakoitzean lehen eta bigarren birzuzenketetarako loturak ikus daitezke, eta baita edukia daukan edo eduki beharko lukeen orrialderako lotura ere. Lehen birzuzenketak azken honetara <del>zuzendu</del> beharko luke.',
@@ -1888,6 +1901,7 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'ninterwikis' => '{{PLURAL:$1|Interwiki $1|$1 interwiki}}',
 'nlinks' => '{{PLURAL:$1|lotura 1|$1 lotura}}',
 'nmembers' => '{{PLURAL:$1|partaide 1|$1 partaide}}',
+'nmemberschanged' => '$1 → {{PLURAL:$2|kide $2|$2 kide}}',
 'nrevisions' => '{{PLURAL:$1|berrikuspen 1|$1 berrikuspen}}',
 'nviews' => '{{PLURAL:$1|ikusketa 1|$1 ikusketa}}',
 'nimagelinks' => '{{PLURAL:$1|Orrialde batean erabilia|$1 orrialdetan erabilia}}',
@@ -1916,6 +1930,7 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'mostrevisions' => 'Berrikuspen gehien dituzten orrialdeak',
 'prefixindex' => 'Orri guztiak aurrizkiekin',
 'prefixindex-namespace' => '$1 izentartean honako aurrizkia duten orrialde guztiak:',
+'prefixindex-strip' => 'Zerrendako aurrizkia kendu',
 'shortpages' => 'Orrialde laburrak',
 'longpages' => 'Orrialde luzeak',
 'deadendpages' => 'Orrialde itsuak',
@@ -1923,14 +1938,13 @@ Bere [$2 fitxategiaren deskribapen orrialdea] behean dago.',
 'protectedpages' => 'Babestutako orrialdeak',
 'protectedpages-indef' => 'Babes mugagabeak bakarrik',
 'protectedpages-cascade' => 'Kaskada moduko babesak bakarrik',
-'protectedpagestext' => 'Jarraian azaltzen diren orrialdeak mugitu edo aldatzeko babestuta daude',
 'protectedpagesempty' => 'Ez dago parametro horiek dituen babesturiko orrialderik oraintxe.',
 'protectedtitles' => 'Babestutako tituluak',
-'protectedtitlestext' => 'Hurrengo tituluen sorrera babestua dago',
 'protectedtitlesempty' => 'Ez dago parametro horiek dituen babesturiko izenbururik oraintxe.',
 'listusers' => 'Erabiltzaileen zerrenda',
 'listusers-editsonly' => 'Aldaketak egin dituzten erabiltzaileak soilik erakutsi',
 'listusers-creationsort' => 'Sorrera dataren arabera sailkatu',
+'listusers-desc' => 'Beheranzko ordenean antolatu',
 'usereditcount' => '{{PLURAL:$1|edizio bat|$1 edizio}}',
 'usercreated' => '{{GENDER:$3|Sortze data}}: $1, $2',
 'newpages' => 'Orrialde berriak',
@@ -1977,9 +1991,6 @@ Erregistro mota, erabiltzailearen izena edota orrialdearen izena iragaziz bistar
 'allpagesto' => 'Orrialde honetara zuzentzen diren guztiak erakutsi:',
 'allarticles' => 'Artikulu guztiak',
 'allinnamespace' => 'Orrialde guztiak ($1 izen-tartea)',
-'allnotinnamespace' => 'Orrialde guztiak ($1 izen-tartean ez daudenak)',
-'allpagesprev' => 'Aurrekoa',
-'allpagesnext' => 'Hurrengoa',
 'allpagessubmit' => 'Joan',
 'allpagesprefix' => 'Aurrizki hau duten orrialdeak bistaratu:',
 'allpagesbadtitle' => 'Orrialdearen izena baliogabekoa da edo interwiki edo hizkuntzen arteko aurrizkia dauka. Izenburuetan erabili ezin daitezkeen karaktere bat edo gehiago izan ditzake.',
@@ -1987,13 +1998,14 @@ Erregistro mota, erabiltzailearen izena edota orrialdearen izena iragaziz bistar
 'allpages-hide-redirects' => 'Birzuzenketak ezkutatu',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Orrialde honen cache betsioa ikusten ari zara, $1 adina izan dezakeena.',
 'cachedspecial-refresh-now' => 'Azkena ikusi.',
 
 # Special:Categories
 'categories' => 'Kategoriak',
-'categoriespagetext' => 'Hurrengo {{PLURAL:$1|kategoriak orrialdeak edo fitxategiak ditu|kategoriek orrialdeak edo fitxategiak dituzte}}.
+'categoriespagetext' => 'Ondorengo {{PLURAL:$1|kategoria honek|kategoria hauek}} orriak edo fitxategiak {{PLURAL:$1|dauzka|dauzkate}}.
 [[Special:UnusedCategories|Erabili gabeko kategoriak]] ez dira hemen erakusten.
-Ikus, gainera [[Special:WantedCategories|kategoriarik eskatuenak]].',
+Ikus, gainera, [[Special:WantedCategories|kategoriarik eskatuenak]].',
 'categoriesfrom' => 'Honela hasten diren kategoriak erakutsi:',
 'special-categories-sort-count' => 'kontatetzearen arabera ordenatu',
 'special-categories-sort-abc' => 'alfabetikoki aldatu',
@@ -2091,9 +2103,9 @@ Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako
 'watchnologin' => 'Saioa hasi gabe',
 'watchnologintext' => '[[Special:UserLogin|Saioa hasi]] behar duzu zure jarraipen zerrenda aldatzeko.',
 'addwatch' => 'Jarraipen zerrendara gehitu',
-'addedwatchtext' => '"[[:$1]]" orrialdea zure [[Special:Watchlist|jarraipen edo zelatatuen zerrendara]] erantsi da. 
+'addedwatchtext' => '«[[:$1]]» orria zure [[Special:Watchlist|jarraipen zerrendara]] erantsi da. 
 
-Orrialde honen hurrengo aldaketak zerrenda horretan ageriko dira aurrerantzean.',
+Orri honetan aurrerantzean egindako aldaketak zerrenda horretan agertuko dira.',
 'removewatch' => 'Kendu zure jarraipen zerrendatik',
 'removedwatchtext' => '"[[:$1]]" orrialdea zure [[Special:Watchlist|jarraipen zerrendatik]] kendu da.',
 'watch' => 'Jarraitu',
@@ -2120,6 +2132,16 @@ Orrialde honen hurrengo aldaketak zerrenda horretan ageriko dira aurrerantzean.'
 'enotif_mailer' => '{{SITENAME}}(e)ko Oharpen Postaria',
 'enotif_reset' => 'Orrialde guztiak bisitatu bezala markatu',
 'enotif_impersonal_salutation' => '{{SITENAME}} erabiltzailea',
+'enotif_subject_deleted' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|ezabatu}} du $2 erabiltzaileak',
+'enotif_subject_created' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|sortu}} du $2 erabiltzaileak',
+'enotif_subject_moved' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|mugitu}} du $2 erabiltzaileak',
+'enotif_subject_restored' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|berreskurtu}} du $2 erabiltzaileak',
+'enotif_subject_changed' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|aldatu}} du $2 erabiltzaileak',
+'enotif_body_intro_deleted' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|ezabatu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3.',
+'enotif_body_intro_created' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|sortu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
+'enotif_body_intro_moved' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|mugitu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
+'enotif_body_intro_restored' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|berrezarri}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
+'enotif_body_intro_changed' => '{{SITENAME}}(e)ko $1 orrialdea {{GENDER:$2|aldatu}} du $2 erabiltzaileak $PAGEEDITDATE datan, ikus $3 oraingo bertsiorako.',
 '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',
@@ -2170,7 +2192,7 @@ Laguntza:
 'actionfailed' => 'Ekintzak huts egin du',
 'deletedtext' => '"$1" ezabatu egin da. Ikus $2 azken ezabaketen erregistroa ikusteko.',
 'dellogpage' => 'Ezabaketa erregistroa',
-'dellogpagetext' => 'Behean ikus daiteke azken ezabaketen zerrenda.',
+'dellogpagetext' => 'Behean ageri da azken ezabaketen zerrenda.',
 'deletionlog' => 'ezabaketa erregistroa',
 'reverted' => 'Lehenagoko berrikuspen batera itzuli da',
 'deletecomment' => 'Arrazoia:',
@@ -2210,8 +2232,8 @@ edukia $2 wikilariaren azken bertsiora itzuli da.',
 
 # Protect
 'protectlogpage' => 'Babes erregistroa',
-'protectlogtext' => 'Orrialdeen blokeo eta desblokeo zerrenda azaltzen da jarraian.
-Ikusi [[Special:ProtectedPages|babestutako orrialdeen zerrenda]] orrialde babes informazio ikusteko.',
+'protectlogtext' => 'Orri-babesteen zerrenda ageri da jarraian.
+Ikus [[Special:ProtectedPages|orri babestuen zerrenda]], orain indarrean dauden orri babesen zerrenda ikusteko.',
 'protectedarticle' => '"[[$1]]" babestu da"',
 'modifiedarticleprotection' => '"[[$1]]"(r)en babes maila aldatu da',
 'unprotectedarticle' => '"[[$1]]"-(r)i babesa kendu zaio',
@@ -2299,7 +2321,6 @@ Halakoetan, ezabatutako azken aldaketak desaukeratu edo atzera agerrarazi behark
 'undeletebtn' => 'Leheneratu',
 'undeletelink' => 'ikusi/leheneratu',
 'undeleteviewlink' => 'ikusi',
-'undeletereset' => 'Hasieratu',
 'undeleteinvert' => 'Alderanztu aukera',
 'undeletecomment' => 'Arrazoia:',
 'undeletedrevisions' => '{{PLURAL:$1|Berrikuspen 1 leheneratu da|$1 berrikuspen leheneratu dira}}',
@@ -2381,16 +2402,14 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
 
 # Block/unblock
 'autoblockid' => 'Blokeo automatikoa #$1',
-'block' => 'Erabiltzailea blokeatu',
+'block' => 'Blokeatu erabiltzailea',
 'unblock' => 'Erabiltzailea desblokeatu',
-'blockip' => 'Erabiltzailea blokeatu',
-'blockip-title' => 'Erabiltzailea blokeatu',
-'blockip-legend' => 'Erabiltzailea blokeatu',
+'blockip' => 'Blokeatu erabiltzailea',
+'blockip-legend' => 'Blokeatu erabiltzailea',
 'blockiptext' => 'IP helbide edo erabiltzaile izen bati idazketa baimenak kentzeko beheko formularioa erabil dezakezu. Ekintza hau bandalismoa saihesteko baino ez da burutu behar, eta beti ere [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz. Blokeoaren arrazoi bat ere zehaztu ezazu (adibidez, orrialde batzuk zehaztuz).',
 'ipadressorusername' => 'IP Helbidea edo erabiltzaile izena',
 'ipbexpiry' => 'Iraungipena',
 'ipbreason' => 'Arrazoia:',
-'ipbreasonotherlist' => 'Beste arrazoiak',
 'ipbreason-dropdown' => '*Blokeaketa arrazoi arruntak
 ** Benetakoa ez den informazioa ezartzea
 ** Orrialdetatik edukia ezabatzea
@@ -2399,17 +2418,17 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
 ** Beste erabiltzaileei mehatxatzea
 ** Kontu ugari erabiltzea
 ** Erabiltzaile izen desegokia',
-'ipbcreateaccount' => 'Kontua sortzea debekatu',
-'ipbemailban' => 'Erabiltzaileak e-mailak bidal ditzan ekidin',
+'ipb-hardblock' => 'Galarazi izena emandako erabiltzaileek IP helbide honetatik editatzea',
+'ipbcreateaccount' => 'Debekatu konturik sortzea',
+'ipbemailban' => 'Galarazi erabiltzaile honi mezu elektronikoak bidal ditzan',
 'ipbenableautoblock' => 'Erabiltzaile honek erabilitako azken IP helbidea automatikoki blokeatu, eta baita erabili dezakeen beste edozein IP ere',
-'ipbsubmit' => 'Erabiltzaile hau blokeatu',
+'ipbsubmit' => 'Blokeatu erabiltzaile hau',
 'ipbother' => 'Beste denbora-tarte bat',
 'ipboptions' => '2 ordu:2 hours,1 egun:1 day,3 egun:3 days,astebete:1 week,2 aste:2 weeks,hilabete:1 month,3 hilabete:3 months,6 hilabete:6 months,urtebete:1 year,betiko:infinite',
-'ipbotheroption' => 'beste bat',
-'ipbotherreason' => 'Arrazoi gehigarria:',
 'ipbhidename' => 'Lankide izena aldaketa eta zerrendetatik ezkutatu',
-'ipbwatchuser' => 'Erabiltzaile honen erabiltzaile eta eztabaida orrialdeak jarraitu',
-'ipb-change-block' => 'Lankidea honako balioekin bir-blokeatu',
+'ipbwatchuser' => 'Egin jarraipena erabiltzaile honen erabiltzaile eta eztabaida orriei',
+'ipb-disableusertalk' => 'Galarazi erabiltzaile honi bere eztabaida orria editatzea, blokeatuta dagoen aldian',
+'ipb-change-block' => 'Berriz blokeatu erabiltzailea, parametro hauekin',
 'ipb-confirm' => 'Blokeoa baieztatu',
 'badipaddress' => 'Baliogabeko IP helbidea',
 'blockipsuccesssub' => 'Blokeoa burutu da',
@@ -2458,10 +2477,9 @@ Ikus [[Special:BlockList|blokeoen zerrenda]] blokeoak aztertzeko.',
 'emaillink' => 'E-maila bidali',
 'autoblocker' => '"[[User:$1|$1]]"(e)k berriki erabili duen IP helbidea duzulako autoblokeatu zaizu. $1(e)k emandako arrazoia zera da: "\'\'\'$2\'\'\'"',
 'blocklogpage' => 'Blokeo erregistroa',
-'blocklog-showlog' => 'Lankide hau aurretik blokeatua izan da.
-Blokeo erregistroa ematen da azpian erreferentziarako:',
-'blocklog-showsuppresslog' => 'Lankide hau aurretik blokeatua eta ezkutatua izan da.
-Erregistroa ematen da azpian erreferentziarako:',
+'blocklog-showlog' => 'Lankide hau blokeatua izan da lehenago ere.
+Hona hemen blokeoen erregistroa, erreferentzia gisa:',
+'blocklog-showsuppresslog' => 'Lankide hau blokeatua eta ezkutatua izan da lehenago ere. Hona hemen erregistroa, erreferentzia gisa:',
 'blocklogentry' => 'wikilariak [[$1]] erabiltzailea blokeatu du. Blokeoaldia: $2 $3',
 'reblock-logentry' => '[[$1]] wikilariari blokeoaldia aldatu diogu. Blokeoaldi berria: $2 $3',
 'blocklogtext' => 'Erabiltzaileen blokeoen ezarpen eta ezabaketen erregistroa da hau. 
@@ -2492,21 +2510,20 @@ Hala ere, $2-(r)en parte denez, blokeoa kendu daiteke.',
 'proxyblockreason' => 'Zure IP helbidea blokeatu egin da proxy ireki baten zaudelako. Mesedez, zure Interneteko Zerbitzu Hornitzailearekin harremanetan jar zaitez segurtasun arazo honetaz ohartarazteko.',
 'sorbsreason' => 'Zure IP helbidea proxy ireki bezala zerrendatuta dago DNSBLan.',
 'sorbs_create_account_reason' => 'Zure IP helbidea proxy ireki bezala zerrendatuta dago DNSBLan. Ezin duzu kontua sortu.',
-'cant-block-while-blocked' => 'Blokeatuta zauden bitartean ezin dituzu beste lankideak blokeatu.',
 'ipbblocked' => 'Ezin dituzu beste erabiltzaileak blokeatu edo desblokeatu, zu zeu blokeatuta zaudelako',
 'ipbnounblockself' => 'Ez duzu baimenik zure buruari blokeoa kentzeko',
 
 # Developer tools
-'lockdb' => 'Datu-basea blokeatu',
+'lockdb' => 'Blokeatu datu basea',
 'unlockdb' => 'Datu-basea desblokeatu',
 'lockdbtext' => 'Datu-basea blokeatzeak edozein erabiltzailek orrialdeak aldatzea, hobespenak aldatzea, jarraipen zerrendan aldaketak egitea, eta datu-basean edozein aldaketa behar duen edozein ekintza galaraziko du. Mesedez, baieztatu zure asmoa hori dela, eta blokeoa kenduko duzula mantenua burutu ondoren.',
 'unlockdbtext' => 'Datu-basea desblokeatzerakoan erabiltzaile guztiek orrialdeak aldatu, beraien hobespenak ezarri, jarraipen zerrendan aldaketak egin eta beste eragiketa batzuk burutzeko gaitasuna leheneratuko du. Mesedez, baieztatu egin nahi duzuna hori dela.',
 'lockconfirm' => 'Bai, datu-basea blokeatu nahi dut',
 'unlockconfirm' => 'Bai, datu-basea desblokeatu nahi dut',
-'lockbtn' => 'Datu-basea blokeatu',
+'lockbtn' => 'Blokeatu datu basea',
 'unlockbtn' => 'Datu-basea desblokeatu',
 'locknoconfirm' => 'Ez duzu baieztapen kutxa hautatu.',
-'lockdbsuccesssub' => 'Datu-basea blokeatu egin da',
+'lockdbsuccesssub' => 'Datu-basea blokeatu da',
 'unlockdbsuccesssub' => 'Datu-basearen blokeoa kendu da',
 'lockdbsuccesstext' => 'Datu-basea blokeatu egin da. <br />Ez ahaztu mantenu lanak burutu ondoren [[Special:UnlockDB|blokeoa kentzeaz]].',
 'unlockdbsuccesstext' => 'Datu-basea desblokeatu egin da.',
@@ -2515,7 +2532,7 @@ Hala ere, $2-(r)en parte denez, blokeoa kendu daiteke.',
 'lockedbyandtime' => '({{GENDER:$1|$1}}k egina $2ko $3(e)tan)',
 
 # Move page
-'move-page' => '$1 mugitu',
+'move-page' => 'Mugitu «$1»',
 'move-page-legend' => 'Orrialdea mugitu',
 'movepagetext' => "Beheko formularioa erabiliz orrialde baten izena aldatuko da, historia osoa izen berrira mugituz.
 Izenburu zaharra izenburu berrira daraman birbideratze bilakatuko da.
@@ -2534,9 +2551,8 @@ mesedez, egiazta ezazu honen ondorioak ulertzen dituzula, jarraitu baino lehen."
 * Beheko koadroa hautatzen ez baduzu.
 
 Kasu horietan orrialdea eskuz mugitu edo bestearekin bateratu beharko duzu.",
-'movearticle' => 'Orrialdea mugitu',
+'movearticle' => 'Mugitu orria',
 'moveuserpage-warning' => "'''Oharra:''' Lankide orrialde bat mugitzera zoaz. Kontutan izan orrialde bakarrik mugituko duzula eta '''ez''' duzula lankide izena aldatuko.",
-'movenologin' => 'Saioa hasi gabe',
 'movenologintext' => 'Orrialde bat mugitzeko erregistratutako lankidea izan behar duzu eta [[Special:UserLogin|saioa hasi]].',
 'movenotallowed' => 'Ez daukazu orrialdeak mugitzeko baimenik.',
 'movenotallowedfile' => 'Ez duzu fitxategiak mugitzeko eskumenik.',
@@ -2544,22 +2560,20 @@ Kasu horietan orrialdea eskuz mugitu edo bestearekin bateratu beharko duzu.",
 'cant-move-to-user-page' => 'Ez duzu orrialde bat lankide orrialde batera mugitzeko eskumenik (lankide azpiorrialde batera izan ezik).',
 'newtitle' => 'Izenburu berria',
 'move-watch' => 'Orrialde hau jarraitu',
-'movepagebtn' => 'Orrialde mugitu',
+'movepagebtn' => 'Mugitu orria',
 'pagemovedsub' => 'Mugimendua eginda',
 'movepage-moved' => '\'\'\'"$1" "$2"(e)ra mugitu da\'\'\'',
-'movepage-moved-redirect' => 'Birzuzenketa orrialde bat sortu da.',
+'movepage-moved-redirect' => 'Birbideratze orri bat sortu da.',
 'movepage-moved-noredirect' => 'Birzuzenketa baten sorrera kendu da.',
 'articleexists' => 'Izen hori duen artikulu bat badago edo hautatutako izena ez da baliozkoa. Mesedez, beste izen bat aukeratu.',
 'cantmove-titleprotected' => 'Ezin duzu orrialde bat leku honetara mugitu izenburu berri hori sor ez dadin babesa duelako',
-'talkexists' => "'''Orrialde hau arazorik gabe mugitu da, baina eztabaida orrialde ezin izan da mugitu izenburu berriarekin jada bat existitzen delako. Mesedez, eskuz batu itzazu biak.'''",
-'movedto' => 'hona mugitu da:',
 'movetalk' => 'Eztabaida orrialdea ere mugitu, ahal bada.',
 'move-subpages' => 'Azpiorrialde guztiak ($1-tik gora) mugitu',
 'move-talk-subpages' => 'Azpiorrialdeen eztabaida orrialde guztiak ($1-tik gora) mugitu',
 'movepage-page-exists' => '$1 orrialdea jada badago eta ezin da automatikoki gainetik idatzi.',
 'movepage-page-moved' => '«$1» orria «$2» izenera aldatu da.',
 'movepage-page-unmoved' => '$1 orrialdea ezin da $2(e)ra mugitu.',
-'movepage-max-pages' => '$1 {{PLURAL:$1|orrialderen|orrialdeen}} maximoa mugitu da eta jada ez dira gehiago mugituko modu automatikoan.',
+'movepage-max-pages' => '$1 {{PLURAL:$1|orrialderen|orrialdeen}} kopuru maximoa jada mugitu da, eta ez dira gehiago mugituko modu automatikoan.',
 'movelogpage' => 'Mugimendu erregistroa',
 'movelogpagetext' => 'Mugitutako orrialdeen zerrenda bat azaltzen da jarraian.',
 'movesubpage' => '{{PLURAL:$1|Azpiorrialde|Azpiorrialdeak}}',
@@ -2573,7 +2587,7 @@ Kasu horietan orrialdea eskuz mugitu edo bestearekin bateratu beharko duzu.",
 "[[:$1]]" helburua existitzen da. Lekua egiteko ezabatu nahi al duzu?',
 'delete_and_move_confirm' => 'Bai, orrialdea ezabatu',
 'delete_and_move_reason' => '[[$1]] mugitzeko ezabatu da',
-'selfmove' => 'Helburu izenburua berdina da; ezin da orrialde bat bere gainera mugitu.',
+'selfmove' => 'Helburu izenburua berdin-berdina da; ezin da orri bat bere gainera mugitu.',
 'immobile-source-namespace' => '"$1" motako orrialdeak ezin dira mugitu',
 'immobile-target-namespace' => 'Orrialdeak ezin dira "$1" motara mugitu',
 'immobile-target-namespace-iw' => 'Interwiki lotura ez da baliagarria orrialdea mugitu ahal izateko.',
@@ -2601,13 +2615,13 @@ Horrez gain, lotura zuzena ere erabil dezakezu; adibidez, [[{{#Special:Export}}/
 'exportcuronly' => 'Oraingo berrikuspena bakarrik hartu, ez historia guztia',
 'exportnohistory' => "----
 '''Oharra:''' Formulario honen bitartez orrialdeen historia osoak esportatzeko aukera ezgaitu egin da, errendimendua dela-eta.",
-'exportlistauthors' => 'Orrialde bakoitzaren lankideen zerrenda osoa sartu',
+'exportlistauthors' => 'Sartu orri bakoitzaren lankideen zerrenda osoa',
 'export-submit' => 'Esportatu',
 'export-addcattext' => 'Orrialdeak gehitu kategoria honetatik:',
 'export-addcat' => 'Gehitu',
 'export-addnstext' => 'Izen-tarteko orrialdeak gehitu:',
 'export-addns' => 'Gehitu',
-'export-download' => 'Fitxategi moduan gordetzeko eskaini',
+'export-download' => 'Gorde fitxategitzat',
 'export-templates' => 'Txantiloiak barneratu',
 'export-pagelinks' => 'Sartu lotutako orriak honako sakoneran:',
 
@@ -2632,6 +2646,8 @@ Mesedez bisitatu [https://www.mediawiki.org/wiki/Localisation MediaWiki] eta [//
 'thumbnail-more' => 'Handitu',
 'filemissing' => 'Fitxategia falta da',
 'thumbnail_error' => 'Errorea irudi txikia sortzerakoan: $1',
+'thumbnail_error_remote' => '$1 gunearen akats mezua:
+$2',
 'djvu_page_error' => 'DjVu orrialdea eremuz kanpo',
 'djvu_no_xml' => 'Ezinezkoa izan da DjVu fitxategiaren XML lortzea',
 'thumbnail-temp-create' => 'Ezin izan da behin-behineko iruditxoa sortu',
@@ -2680,8 +2696,14 @@ Fitxategiaren atal bat baino ez zen igo.',
 'import-upload' => 'Igo XML datuak',
 'import-token-mismatch' => 'Sesio data galdu da. Saia saitez berriro ere, mesedez.',
 'import-invalid-interwiki' => 'Ezin da esandako wikitik inportatu.',
+'import-error-edit' => '"$1" orrialdea ez da inportatu ez duzula baimenik aldatzeko.',
+'import-error-create' => '"$1" orrialdea ez da inportatu ez duzula baimenik sortzeko.',
+'import-error-interwiki' => '"$1" orrialdea ez da inportatu bere izena kanpo loturetarako gordeta dagoelako (interwiki).',
+'import-error-special' => '"$1" orrialdea ez da inportatu izen-tarte berezi bati dagokiolako eta horretan orrialderik ezin delako egon.',
+'import-error-invalid' => '"$1" orrialdea ez da inportatu izena ez delako baliagarria.',
+'import-options-wrong' => 'Aukera {{PLURAL:$2|ez-egokia|ez-egokiak}}:<nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Emandako jatorri orrialdea izenburu ez-baliagarria da.',
-'import-rootpage-nosubpage' => 'Jatorri orrialdearen "$1" izen-tarteak ez du baimentzen azpi-orrialderik.',
+'import-rootpage-nosubpage' => 'Jatorri orrialdearen «$1» izen-tarteak ez du baimentzen azpi-orrialderik.',
 
 # Import log
 'importlogpage' => 'Inportazio erregistroa',
@@ -2742,7 +2764,7 @@ Fitxategiaren atal bat baino ez zen igo.',
 'tooltip-t-contributions' => 'Lankide honen ekarpen zerrenda ikusi',
 'tooltip-t-emailuser' => 'Lankide honi e-posta mezua bidali',
 'tooltip-t-upload' => 'Irudiak edo media fitxategiak igo',
-'tooltip-t-specialpages' => 'Aparteko orrialde guztien zerrenda',
+'tooltip-t-specialpages' => 'Orri berezi guztien zerrenda',
 'tooltip-t-print' => 'Orrialde honen bertsio inprimagarria',
 'tooltip-t-permalink' => 'Orrialde honen bertsio honetara lotura egonkorra',
 'tooltip-ca-nstab-main' => 'Eduki orrialdea ikusi',
@@ -2755,7 +2777,7 @@ Fitxategiaren atal bat baino ez zen igo.',
 'tooltip-ca-nstab-template' => 'Txantiloia ikusi',
 'tooltip-ca-nstab-help' => 'Laguntza orrialdea ikusi',
 'tooltip-ca-nstab-category' => 'Kategoria orrialdea ikusi',
-'tooltip-minoredit' => 'Aldaketa txiki bezala markatu hau',
+'tooltip-minoredit' => 'Markatu aldaketa hau txikitzat',
 'tooltip-save' => 'Zure aldaketak gorde',
 'tooltip-preview' => 'Zure aldaketak aurreikusi, mesedez gorde aurretik erabili!',
 'tooltip-diff' => 'Testuari egindako aldaketak erakutsi.',
@@ -2817,6 +2839,7 @@ Atal hau '''EZ''' bete!",
 'pageinfo-length' => 'Orriaren neurria (byteak)',
 'pageinfo-article-id' => 'Orriaren identifikazio zenbakia',
 'pageinfo-language' => 'Orriaren edukiaren hizkuntza',
+'pageinfo-content-model' => 'Orrialde edukiaren eredua',
 'pageinfo-robot-policy' => 'Errobotak indexatzea egiten',
 'pageinfo-robot-index' => 'Baimendua',
 'pageinfo-robot-noindex' => 'Debekatua',
@@ -2837,6 +2860,7 @@ Atal hau '''EZ''' bete!",
 'pageinfo-magic-words' => 'Hitz {{PLURAL:$1|magikoa|magikoak}} ($1)',
 'pageinfo-hidden-categories' => 'Ezkutuko {{PLURAL:$1|kategoria|kategoriak}} ($1)',
 'pageinfo-templates' => 'Txertatutako {{PLURAL:$1|txantiloia|txantiloiak}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|Orrialde baten transklusioa|$1 orrialderen transklusioa}}',
 'pageinfo-toolboxlink' => 'Orri honen datuak',
 'pageinfo-redirectsto' => 'Hona birzuzentzen du',
 'pageinfo-redirectsto-info' => 'Informazioa',
@@ -2864,7 +2888,7 @@ Atal hau '''EZ''' bete!",
 'markedaspatrollederror' => 'Ezin da patruilatutzat markatu',
 'markedaspatrollederrortext' => 'Patruilatutzat markatzeko berrikuspen bat hautatu behar duzu.',
 'markedaspatrollederror-noautopatrol' => 'Ez daukazu zeure aldaketak patruilatutzat markatzeko baimenik.',
-'markedaspatrollednotify' => '$1 orrialdeari egindako aldaketa patruilatu moduan markatua izan da.',
+'markedaspatrollednotify' => '«$1» orriari egindako aldaketa patruilatutzat markatu da.',
 'markedaspatrollederrornotify' => 'Patruilatu gisa markatzean akatsa egon da.',
 
 # Patrol log
@@ -2899,7 +2923,7 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
 'file-nohires' => 'Ez dago bereizmen handiagorik.',
 'svg-long-desc' => 'SVG fitxategia, nominaldi $1 × $2 pixel, fitxategiaren tamaina: $3',
 'svg-long-error' => 'SVG fitxategi ez baliagarria: $1',
-'show-big-image' => 'Bereizmen handikoa',
+'show-big-image' => 'Jatorrizko fitxategia',
 'show-big-image-preview' => 'Aurreikuspen honen neurria: $1.',
 'show-big-image-other' => 'Bestelako {{PLURAL:$2|bereizmena|bereizmenak}}: $1.',
 'show-big-image-size' => '$1 × $2 pixel',
@@ -2908,6 +2932,7 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
 'file-info-png-looped' => 'begiztatua',
 'file-info-png-repeat' => '{{PLURAL:$1|Behin|$1 aldiz}} ikusia',
 'file-info-png-frames' => '{{PLURAL:$1|Frame bat|$1 frame}}',
+'file-no-thumb-animation' => "'''Oharra: Muga teknikoak direla eta, fitxategi honen iruditxoak ezin dira animatu.'''",
 
 # Special:NewFiles
 'newimages' => 'Fitxategi berrien galeria',
@@ -2930,9 +2955,9 @@ Zure sisteman exekutatzea arriskutsua izan liteke.",
 'minutes' => '{{PLURAL:$1|minutu $1|$1 minutu}}',
 'hours' => '{{PLURAL:$1|ordu $1|$1 ordu}}',
 'days' => '{{PLURAL:$1|egun $1|$1 egun}}',
-'weeks' => '{{PLURAL: $1|aste $1|$1 aste}}',
-'months' => '{{PLURAL: $1|hilabete $1|$1 hilabete}}',
-'years' => '{{PLURAL: $1|urte $1|$1 urte}}',
+'weeks' => '{{PLURAL:$1|aste $1|$1 aste}}',
+'months' => '{{PLURAL:$1|hilabete $1|$1 hilabete}}',
+'years' => '{{PLURAL:$1|urte $1|$1 urte}}',
 'ago' => 'Duela $1',
 'just-now' => 'orain',
 
@@ -3383,15 +3408,10 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
 'exif-urgency-high' => 'Altua ($1)',
 'exif-urgency-other' => 'Definitutako lehentasuna ($1)',
 
-# External editor support
-'edit-externally' => 'Fitxategi hau editatu kanpo-aplikazio bat erabiliz',
-'edit-externally-help' => '(Ikus [https://www.mediawiki.org/wiki/Manual:External_editors konfiguraziorako argibideak] informazio gehiagorako)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'guztiak',
 'namespacesall' => 'guztiak',
 'monthsall' => 'guztiak',
-'limitall' => 'guztiak',
 
 # Email address confirmation
 'confirmemail' => 'E-posta helbidea egiaztatu',
@@ -3409,7 +3429,6 @@ Zerbitzariaren mezua: $1',
 'confirmemail_needlogin' => '$1 behar duzu zure e-posta helbidea egiaztatzeko.',
 'confirmemail_success' => 'Zure e-posta helbidea egiaztatu da. Saioa hasi eta ekarpenak egin ditzakezu orain.',
 'confirmemail_loggedin' => 'Zure e-posta helbidea egiaztatu da.',
-'confirmemail_error' => 'Akatsen bat gertatu da egiaztapena burutzerakoan.',
 'confirmemail_subject' => 'E-posta helbide egiaztapena {{SITENAME}}(e)n',
 'confirmemail_body' => 'Norbaitek, ziurrenik zuk $1 IP helbidetik, "$2" kontua erregistratu du {{SITENAME}}(e)n e-posta helbide honekin.
 
@@ -3450,6 +3469,11 @@ Egiaztapen kode hau $4 iraungiko da.',
 'imgmultigo' => 'Joan!',
 'imgmultigoto' => '$1 orrialdera joan',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(berezko hizkuntza)',
+'img-lang-info' => 'Irudi hau $1 hizkuntzan renderizatu $2.',
+'img-lang-go' => 'Joan',
+
 # Table pager
 'ascending_abbrev' => 'gor',
 'descending_abbrev' => 'behe',
@@ -3483,9 +3507,9 @@ Egiaztapen kode hau $4 iraungiko da.',
 'watchlistedit-noitems' => 'Zure jarraitze-zerrendak ez du izenbururik.',
 'watchlistedit-normal-title' => 'Jarraitze zerrenda aldatu',
 'watchlistedit-normal-legend' => 'Jarraipen-zerrendatik izenburuak kendu',
-'watchlistedit-normal-explain' => 'Zure jarraipen zerrendako izenburuak azpian daude.
-Titulu bat kentzeko ondoan dagoen kutxa marka ezazu eta "{{int:Watchlistedit-normal-submit}}" gainean klik egin.
-Gainera [[Special:EditWatchlist/raw|zerrenda gordina aldatu]] dezakezu.',
+'watchlistedit-normal-explain' => 'Behean ageri dira zure jarraipen zerrendako izenburuak.
+Izenburu bat kentzeko, marka ezazu ondoan duen laukia, eta klika ezazu «{{int:Watchlistedit-normal-submit}}».
+Nahiago baduzu, [[Special:EditWatchlist/raw|zerrenda soila edita dezakezu]].',
 'watchlistedit-normal-submit' => 'Izenburuak kendu',
 'watchlistedit-normal-done' => 'Zure jarraipen-zerrendatik {{PLURAL:$1|izenburu bat kendu da|$1 izenburu kendu dira}}.',
 'watchlistedit-raw-title' => 'Jarraitze zerrenda gordina aldatu',
@@ -3531,6 +3555,8 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'version-license' => 'Lizentzia',
 'version-poweredby-credits' => "Wiki hau '''[https://www.mediawiki.org/ MediaWiki]'''k sustatzen du (copyright © 2001-$1 $2).",
 'version-poweredby-others' => 'beste batzuk',
+'version-poweredby-translators' => 'translatewiki.net itzultzaileak',
+'version-credits-summary' => 'Hurrengo pertsonak gogoan izan nahi ditugu [[Special:Version|MediaWikiri]] egindako ekarpena dela eta.',
 'version-software' => 'Instalatutako softwarea',
 'version-software-product' => 'Produktua',
 'version-software-version' => 'Bertsioa',
@@ -3562,6 +3588,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 
 # Special:SpecialPages
 'specialpages' => 'Orri bereziak',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Orri berezi arruntak.
 * <strong class="mw-specialpagerestricted">Mugatutako orri bereziak.</strong>',
 'specialpages-group-maintenance' => 'Mantentze-oharrak',
@@ -3600,13 +3627,15 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'tags-tag' => 'Etiketaren izena',
 'tags-display-header' => 'Aldaketa zerrenden itxura',
 'tags-description-header' => 'Esanahiaren deskribapen osoa',
+'tags-active-header' => 'Aktiboa?',
 'tags-hitcount-header' => 'Etiketatutako aldaketak',
+'tags-active-yes' => 'Bai',
+'tags-active-no' => 'Ez',
 'tags-edit' => 'aldatu',
 'tags-hitcount' => '$1 {{PLURAL:$1|aldaketa|aldaketa}}',
 
 # Special:ComparePages
 'comparepages' => 'Orrialdeak alderatu',
-'compare-selector' => 'Orrialde-berrikuspenak alderatu',
 'compare-page1' => '1. orrialdea',
 'compare-page2' => '2. orrialdea',
 'compare-rev1' => '1. berrikuspena',
@@ -3621,6 +3650,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'dberr-problems' => 'Barkatu! Webgune honek zailtasun teknikoak jasaten ari da.',
 'dberr-again' => 'Saiatu pare bat minutu itxaroten edo kargatu ezazu orrialdea berriro.',
 'dberr-info' => '($1: Ezin da datu-base zerbitzariarekin konektatu)',
+'dberr-info-hidden' => '(Ezin da konektatu datubasearen zerbitzariarekin)',
 'dberr-usegoogle' => 'Bitartean Google bidez bilatzen saiatu zintezke.',
 'dberr-outofdate' => 'Eduki hauek aurkibideak eguneratu gabe egon daitezke.',
 'dberr-cachederror' => 'Ondorengoa eskatutako orriaren katxedun kopia da, eta eguneratu gabe egon daiteke.',
@@ -3645,7 +3675,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'sqlite-no-fts' => '$1 testu osoan bilatzeko laguntzarik gabe',
 
 # New logging system
-'logentry-delete-delete' => '$1 wikilariak $3 orria {{GENDER:$2|ezabatu}} du',
+'logentry-delete-delete' => '$1 {{GENDER:$2|wikilariak}} «$3» orria ezabatu du',
 'logentry-delete-restore' => '$1(e)k $3 orrialdea {{GENDER:$2|berrezarri}} du',
 'logentry-delete-event' => '$1 wikilariak ikusgaitasuna aldatu {{PLURAL:$5|dio erregistroko sarrera bati|die erregistroko $5 sarrerari}}, $3 orrian: $4',
 'logentry-delete-revision' => '$1 erabiltzaileak {{PLURAL:$5|berrikuste baten|$5 berrikusteren}} ikusgaitasuna aldatu du «$3» orrian: $4',
@@ -3674,6 +3704,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 'feedback-message' => 'Mezua:',
 'feedback-cancel' => 'Utzi',
 'feedback-submit' => 'Feedbacka bidali',
+'feedback-adding' => 'Orriari feedbacka gehitzen...',
 'feedback-error1' => 'Akatsa: APIaren emaitza ez ezagunak',
 'feedback-error2' => 'Akatsa: Aldaketa ez da egin',
 'feedback-error3' => 'Akatsa: APIaren erantzunik gabe',
@@ -3687,6 +3718,7 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 # API errors
 'api-error-badaccess-groups' => 'Ez duzu baimendik fitxategi hauek wiki honetara igotzeko.',
 'api-error-badtoken' => 'Barne akatsa: token okerra.',
+'api-error-duplicate-popup-title' => 'Fitxategi {{PLURAL:$1|bikoiztua|bikoiztuak}}.',
 'api-error-empty-file' => 'Bidali duzun fitxategia hutsik dago.',
 'api-error-emptypage' => 'Berria sortzerako garaian orrialde hutsak ezin dira erabili.',
 'api-error-fetchfileerror' => 'Barne akatsa: zerbait gaizki joan da fitxategia eskuratzerakoan.',
@@ -3725,6 +3757,20 @@ Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
 # Image rotation
 'rotate-comment' => 'Irudia erlojuaren norantzan {{PLURAL:$1|gradu 1|$1 gradu}} biratua izan da',
 
+# Limit report
+'limitreport-cputime' => 'CPU denbora erabilpena',
+'limitreport-cputime-value' => '{{PLURAL:$1|Segundu $1|$1 segundu}}',
+'limitreport-walltime' => 'Denbora errealeko erabilpena',
+'limitreport-walltime-value' => '{{PLURAL:$1|Segundu $1|$1 segundu}}',
+'limitreport-ppvisitednodes' => 'Preprozesadoreak bisitatu du nodo kontua',
+'limitreport-ppgeneratednodes' => 'Preprozesadoreak sortu du nodo kontua',
+'limitreport-postexpandincludesize' => 'Espantsioaren ondoko inklusio tamaina',
+'limitreport-postexpandincludesize-value' => '{{PLURAL:$2|byte $1/$2|$1/$2 byte}}',
+'limitreport-templateargumentsize' => 'Txantiloiaren argumentuaren tamaina',
+'limitreport-templateargumentsize-value' => '{{PLURAL:$2|byte $1/$2|$1/$2 byte}}',
+'limitreport-expansiondepth' => 'Gehienezko espantsio sakonera',
+'limitreport-expensivefunctioncount' => 'Parser funtzio kontaketa garestia',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'Txantiloi ordezkatzailea',
 'expand_templates_intro' => 'Aparteko orrialde honek modu errekurtsiboan txantiloiak ordezkatu egiten ditu.
@@ -3738,6 +3784,7 @@ Kortxete bikoitzarekin hobeto egiten da lan.',
 'expand_templates_xml_output' => 'XML irteera',
 'expand_templates_ok' => 'Ados',
 'expand_templates_remove_comments' => 'Iruzkinak kendu',
+'expand_templates_remove_nowiki' => 'Ezabatu <nowiki> etiketen emaitzak',
 'expand_templates_generate_xml' => 'Erakutsi XML parse zuhaitza',
 'expand_templates_preview' => 'Aurreikusi',
 
index c793efe..5b711e2 100644 (file)
@@ -41,7 +41,6 @@ $messages = array(
 'tog-minordefault' => 'Aseñalal tolas eicionis cumu chiqueninas pol defeutu',
 'tog-previewontop' => "Previsoreal sobri la caha d'eición, i nu embahu",
 'tog-previewonfirst' => 'Previsoreal ena primera eición',
-'tog-nocache' => 'Desatival "caché" enas páhinas',
 'tog-enotifwatchlistpages' => 'Envialmi un correu cuandu aiga chambus nuna páhina vehilá',
 'tog-enotifusertalkpages' => 'Envialmi un correu cuandu alguien escreba ena mi caraba',
 'tog-enotifminoredits' => 'Envialmi un correu cuandu se haga una eición chiquenina duna páhina',
@@ -151,7 +150,6 @@ $messages = array(
 'qbedit' => 'Eital',
 'qbpageoptions' => 'Esta páhina',
 'qbmyoptions' => 'Las mis páhinas',
-'qbspecialpages' => 'Páhinas especialis',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -335,7 +333,6 @@ Pol favol, contauta con un [[Special:ListUsers/sysop|çajoril]], mentandu la URL
 'perfcached' => "Los siguientis datus s'alcuentran nel caché i es posibri que nu estén atualizaus. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => 'Estus datus están emburacaus. La su úrtima atualización hue el $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "Las atualiçacionis desta páhina s'alcuentran atualmenti desativás. Los datus nu sedrán atualizaus a cortu praçu.",
-'wrong_wfQuery_params' => 'Parametrus a wfQuery()<br /> Hunción: $1<br /> Pregunta: $2 encorretus',
 'viewsource' => 'Vel coigu huenti',
 'actionthrottled' => 'Ación ilimitá',
 'actionthrottledtext' => 'Cumu miia pa prevenil el spam, solu pueis hazel esta ación un limitau númeru e vezis nun cortu praçu e tiempu, i as pasau esti límiti. Pol favol, enténtalu otra vezi endrentu angunus minutus.',
@@ -432,7 +429,7 @@ Si s\'á criau la cuenta ebiu a angún marru, inora esti mensahi.',
 'loginlanguagelabel' => 'Palra: $1',
 
 # Change password dialog
-'resetpass' => 'Escambial la consínia',
+'changepassword' => 'Chambal consínia',
 'resetpass_announce' => 'As entrau ena tu cuenta con una consínia temporal. Pol favol, escrebi una nueva consínia aquí:',
 'resetpass_text' => '<!-- Aquí s´escrebi el testu -->',
 'resetpass_header' => "Escambial la consínia la tu cuenta d'usuáriu",
@@ -735,11 +732,7 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 # Search results
 'searchresults' => 'Landeal resurtaus',
 'searchresults-title' => 'Landeal resurtaus pa "$1"',
-'searchresulttext' => 'Pa mas enhormación al tentu landeal en {{SITENAME}}, vaiti a [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'As landeau \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tolos artículus que prencipian pol "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tolos artículus que atihan a "$1"]])',
-'searchsubtitleinvalid' => "Landeasti '''$1'''",
 'titlematches' => 'Conciéncias con el entítulu el artículu',
-'notitlematches' => 'Nu ai artículus llamaus asina',
 'textmatches' => 'Conciéncias con el testu el artículu',
 'notextmatches' => 'Nu desistin conciéncias con el testu el artículu',
 'prevn' => '{{PLURAL:$1|$1 anterioris}}',
@@ -748,7 +741,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'nextn-title' => 'Siguientis $1 {{PLURAL:$1|resurtau|resurtaus}}',
 'shown-title' => 'Muestral $1 {{PLURAL:$1|resurtau|resurtaus}} pol página',
 'viewprevnext' => 'Vel ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Ocionis de landeu',
 'searchmenu-new' => "'''Crial el artículu \"[[:\$1]]\"'''",
 'searchprofile-images' => 'Murtimeya',
 'searchprofile-everything' => 'Tó',
@@ -769,12 +761,9 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'searchall' => 'tó',
 'showingresults' => "Embahu se {{PLURAL:$1|muestra '''1''' resurtau qu'esmiença|muestran hata '''$1''' resurtaus qu'esmiençan}} pol #'''$2'''.",
 'showingresultsnum' => "Embahu se {{PLURAL:$3|muestra '''1''' resurtau qu'esmiença|muestran'''$3''' resurtaus qu'esmiençan}} pol #'''$2'''.",
-'nonefound' => "'''Nota''': Solu se busca en angunus espacius de nombris pol defetu. Preba a escrebil el prefihu ''all:'' nel tu landeu pa landeal tol conteniu (encruyendu carabas, prantillas...), u gasta el espaciu de nombri deseau cumu prefihu.",
-'powersearch' => 'Landeal',
 'powersearch-legend' => 'Landeu avançau',
 'powersearch-ns' => 'Landeal en espaciu e nombris:',
 'powersearch-redir' => 'Listal redirecionis',
-'powersearch-field' => 'Landeal',
 'search-external' => 'Landeu estelnu',
 'searchdisabled' => 'Los landeus en {{SITENAME}} están temporalmenti desativaus. Mentris tantu, pueis landeal meyanti landerus esternus, inque ten en cuenta que los sus éndicis concernientis a {{SITENAME}} puein nu estal atualizaus.',
 
@@ -782,7 +771,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'preferences' => 'Preferéncias',
 'mypreferences' => 'Las mis preferéncias',
 'prefs-edits' => "Númiru d'eicionis:",
-'changepassword' => 'Chambal consínia',
 'prefs-skin' => 'Aparéncia',
 'skin-preview' => 'Previsoreal',
 'datedefault' => 'Sin preferéncias',
@@ -796,12 +784,10 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'prefs-misc' => 'Bandallu (una mihina e tó)',
 'prefs-resetpass' => 'Escambial consínia',
 'saveprefs' => 'Emburacal',
-'resetprefs' => 'Esborral los chambus nu emburacaus',
 'prefs-editing' => 'Eitandu',
 'rows' => 'Filas:',
 'columns' => 'Colunas:',
 'searchresultshead' => 'Landeal',
-'resultsperpage' => 'Resurtaus pol páhina:',
 'stub-threshold' => 'Arrayu superiol pa consieral cumu <a href="#" class="stub">atihu a prencipiu</a> (bytes):',
 'recentchangesdays' => 'Númeru e dias a muestral en "úrtimus chambus":',
 'recentchangesdays-max' => 'Máissimu $1 {{PLURAL:$1|dia|dias}}',
@@ -809,7 +795,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
 'savedprefs' => 'S´an emburacau las tus preferéncias.',
 'timezonelegend' => 'Zona orária',
 'localtime' => 'Ora local',
-'timezoneoffset' => 'Deferéncia oraria¹:',
 'servertime' => 'Ora del sirviol:',
 'guesstimezone' => 'Estrael la ora el escrucaol',
 'timezoneregion-africa' => 'África',
@@ -948,7 +933,6 @@ Amás premiti qu'otrus ussuárius contatin contigu pol mé la tu página d'ussu
 'recentchanges-legend' => 'Ocionis enos úrtimus chambus',
 'recentchanges-summary' => 'Sigui los úrtimus chambus d´esti güiqui nesta páhina.',
 'recentchanges-feed-description' => 'Sigui los úrtimus chambus nel güiqui nesti feed.',
-'rcnote' => "Embahu se {{PLURAL:$1|muestra '''1''' chambu|muestran los úrtimus '''$1''' chambus}} {{PLURAL:$2|dendi ayel|enus úrtimus '''$2''' dias}}, de $4 a las $5.",
 'rcnotefrom' => "Embahu se muestran los chambus hechus dendi el '''$2''' (hata el '''$1''').",
 'rclistfrom' => 'Muestral los chambus hechus dendi el $1',
 'rcshowhideminor' => '$1 eicionis chiqueninas',
@@ -1234,10 +1218,8 @@ Pursa nel entítulu la coluna pa chambal el ordin.',
 'deadendpages' => 'Callehonis',
 'deadendpagestext' => 'Las siguientis páhinas nu atihan a otras páhinas desti güiqui.',
 'protectedpages' => 'Páhinas protehias',
-'protectedpagestext' => 'Las siguientis páhinas nu se puein ni movel ni eital (están protehias)',
 'protectedpagesempty' => 'Nu desisti denguna páhina protehia con estus parámetrus.',
 'protectedtitles' => 'Entítulus protehius',
-'protectedtitlestext' => "Los siguientis entítulus s'alcuentran atarugaus",
 'protectedtitlesempty' => 'Ogañu nu desistin entítulus protehius con estus parámetrus.',
 'listusers' => 'Lista d´usuárius',
 'usercreated' => 'Criá el $1 a las $2',
@@ -1276,9 +1258,6 @@ Pursa nel entítulu la coluna pa chambal el ordin.',
 'allpagesto' => 'Muestral artículus que acabihin en:',
 'allarticles' => 'Tolos artículus',
 'allinnamespace' => 'Tolas páhinas (qu´estén en $1)',
-'allnotinnamespace' => 'Tolas páhinas (que nu estén en $1)',
-'allpagesprev' => 'Anterioris',
-'allpagesnext' => 'Siguientis',
 'allpagessubmit' => 'Dil',
 'allpagesprefix' => 'Muestral páhinas con el prefihu:',
 'allpages-bad-ns' => '{{SITENAME}} nu tieni el espaciu e nombris "$1".',
@@ -1519,7 +1498,6 @@ arrecuperás apaicerán nel estorial anteriol.",
 'undelete-nodiff' => "Nu s'á alcuentrau denguna revisión previa.",
 'undeletebtn' => 'Restaural',
 'undeletelink' => 'Guipal/arrecuperal',
-'undeletereset' => 'Reahustal',
 'undeletecomment' => 'Comentáriu:',
 'undeletedrevisions' => '{{PLURAL:$1|1 revisión|$1 revisionis}} restaurás',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 revisión|$1 revisionis}} i {{PLURAL:$2|1 archivu|$2 archivus}} restauraus',
@@ -1596,7 +1574,6 @@ Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan
 'ipadressorusername' => 'IP u nombri d´usuáriu:',
 'ipbexpiry' => 'Acabiha:',
 'ipbreason' => 'Razón:',
-'ipbreasonotherlist' => 'Otra razón',
 'ipbreason-dropdown' => '*Motivus frecuentis de tarugus
 ** Escrebil enhormación farsa
 ** Esborral el continiu las páhinas
@@ -1611,8 +1588,6 @@ Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan
 'ipbsubmit' => 'Atarugal a esti usuáriu',
 'ipbother' => 'Otra ora:',
 'ipboptions' => '2 oras:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 mesis:3 months,6 mesis:6 months,1 añu:1 year,enfinitu:infinite',
-'ipbotheroption' => 'otru',
-'ipbotherreason' => 'Anguna otra razón?:',
 'ipbhidename' => 'Açonchal nombri d\'usuáriu nel "rustrihu e tarugus", "lista e tarugus ativus" i "lista d\'usuárius"',
 'ipbwatchuser' => "Visoreal la páhina d'usuáriu i la caraba d'esti usuáriu.",
 'badipaddress' => 'Direción IP nu premitia',
@@ -1707,7 +1682,6 @@ pol favol, asigurati e qu'entiendis las consecuéncias enantis d'acontinal.",
 
 En dambus los dos chascus, si lo deseas, tendrás que movel u mestural la páhina manualmenti.",
 'movearticle' => 'Movel páhina:',
-'movenologin' => "Nu t'alcuentras rustriu",
 'movenologintext' => 'Ebis estal rustriu i [[Special:UserLogin|entral ena tu cuenta]] pa movel una páhina.',
 'movenotallowed' => 'Nu tinis premissu pa mual páginas.',
 'movenotallowedfile' => 'Nu tinis premissus pa mual archivus.',
@@ -1720,8 +1694,6 @@ En dambus los dos chascus, si lo deseas, tendrás que movel u mestural la páhin
 'articleexists' => 'Ya desisti una páhina con esi nombri u nu se premiti el nombri qu´as lihiu.
 Pol favol, escrebi otru entítulu.',
 'cantmove-titleprotected' => "Nu t'es posibri movel la páhina ebiu a qu'el nuevu entítulu s'alcuentra atarugau",
-'talkexists' => "'''S'á moviu la páhina, peru la su caraba nu puei sel movia polque ya desisti otra caraba con el nuevu entítulu. Pol favol, mesturalas manualmenti.'''",
-'movedto' => 's´á moviu a',
 'movetalk' => 'Tamién movel la su caraba',
 'movelogpage' => 'Rustrihu e movimientus',
 'movelogpagetext' => 'Embahu ai una lista colas páhinas movias.',
@@ -2174,10 +2146,6 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
 'exif-gpsdirection-t' => 'Direción verdaera',
 'exif-gpsdirection-m' => 'Direción manética',
 
-# External editor support
-'edit-externally' => 'Eital esti archivu gastandu una apricación esterna',
-'edit-externally-help' => 'Pa mas enholmación, lei las [https://www.mediawiki.org/wiki/Manual:External_editors istrucionis de configuración] (en ingrés).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tó',
 'namespacesall' => 'tó',
@@ -2201,7 +2169,6 @@ El correu degorvió: $1',
 'confirmemail_needlogin' => "Es mestel $1 pa confirmal la tu direción d'email.",
 'confirmemail_success' => "S'á confirmau la tu direción d'email. Ya pueis entral ena tu cuenta i embailti cola Güiqui.",
 'confirmemail_loggedin' => "S'á confirmau la tu direción d'email.",
-'confirmemail_error' => 'Marru al emburacal la tu confirmación.',
 'confirmemail_subject' => 'Confirmaeru de direción de correu de {{SITENAME}}',
 'confirmemail_body' => 'Yeu!
 
index 0f4ebb4..3c20048 100644 (file)
@@ -11,6 +11,7 @@
  * @author Americophile
  * @author Amire80
  * @author Armandaneshjoo
+ * @author Armin1392
  * @author Asoxor
  * @author Baqeri
  * @author Behdarvandyani
@@ -23,6 +24,7 @@
  * @author Ladsgroup
  * @author Leyth
  * @author Mardetanha
+ * @author Mcuteangel
  * @author Mehdi
  * @author Mehran
  * @author MehranVB
@@ -81,34 +83,34 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'کاربران_فعال' ),
        'Allmessages'               => array( 'تمام_پیغام‌ها' ),
+       'AllMyUploads'              => array( 'همهٔ_بارگذاری‌های_من', 'همه_بارگذاری‌های_من' ),
        'Allpages'                  => array( 'تمام_صفحه‌ها' ),
        'Ancientpages'              => array( 'صفحه‌های_قدیمی' ),
        'Badtitle'                  => array( 'عنوان_بد' ),
        'Blankpage'                 => array( 'صفحه_خالی' ),
        'Block'                     => array( 'بستن_نشانی_آی‌پی' ),
-       'Blockme'                   => array( 'بستن_من' ),
        'Booksources'               => array( 'منابع_کتاب' ),
        'BrokenRedirects'           => array( 'تغییرمسیرهای_خراب' ),
        'Categories'                => array( 'رده‌ها' ),
        'ChangeEmail'               => array( 'تغییر_رایانامه' ),
        'ChangePassword'            => array( 'از_نو_کردن_گذرواژه' ),
        'ComparePages'              => array( 'مقایسه_صفحات' ),
-       'Confirmemail'              => array( 'تایید_رایانامه' ),
+       'Confirmemail'              => array( 'تأیید_رایانامه' ),
        'Contributions'             => array( 'مشارکت‌ها' ),
        'CreateAccount'             => array( 'ایجاد_حساب_کاربری' ),
        'Deadendpages'              => array( 'صفحه‌های_بن‌بست' ),
        'DeletedContributions'      => array( 'مشارکت‌های_حذف_شده' ),
-       'Disambiguations'           => array( 'ابهام‌زدایی' ),
        'DoubleRedirects'           => array( 'تغییرمسیرهای_دوتایی' ),
        'EditWatchlist'             => array( 'ویرایش_فهرست_پی‌گیری‌ها' ),
        'Emailuser'                 => array( 'نامه_به_کاربر' ),
+       'ExpandTemplates'           => array( 'گسترش_الگوها' ),
        'Export'                    => array( 'برون_بری_صفحه' ),
        'Fewestrevisions'           => array( 'کمترین_نسخه' ),
        'FileDuplicateSearch'       => array( 'جستجوی_پرونده_تکراری' ),
        'Filepath'                  => array( 'مسیر_پرونده' ),
-       'Import'                    => array( 'درون_ریزی_صفحه' ),
-       'Invalidateemail'           => array( 'باطل_کردن_رایانامه' ),
-       'JavaScriptTest'            => array( 'تست_جاوا_اسکریپت' ),
+       'Import'                    => array( 'درونریزی_صفحه' ),
+       'Invalidateemail'           => array( 'باطلکردن_رایانامه' ),
+       'JavaScriptTest'            => array( 'تست_جاوااسکریپت' ),
        'BlockList'                 => array( 'فهرست_بستن_نشانی_آی‌پی' ),
        'LinkSearch'                => array( 'جستجوی_پیوند' ),
        'Listadmins'                => array( 'فهرست_مدیران' ),
@@ -137,6 +139,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'بارگذاری‌های_من' ),
        'Newimages'                 => array( 'تصاویر_جدید' ),
        'Newpages'                  => array( 'صفحه‌های_تازه' ),
+       'PagesWithProp'             => array( 'صفحه‌های_با_خاصیت' ),
        'PasswordReset'             => array( 'بازنشاندن_گذرواژه' ),
        'PermanentLink'             => array( 'پیوند_دائمی' ),
        'Popularpages'              => array( 'صفحه‌های_محبوب' ),
@@ -144,11 +147,13 @@ $specialPageAliases = array(
        'Prefixindex'               => array( 'نمایه_پیشوندی' ),
        'Protectedpages'            => array( 'صفحه‌های_محافظت_شده' ),
        'Protectedtitles'           => array( 'عنوان‌های_محافظت_شده' ),
-       'Randompage'                => array( 'صفحه_تصادفی' ),
+       'Randompage'                => array( 'صفحهٔ_تصادفی' ),
+       'RandomInCategory'          => array( 'تصادفی_در_رده' ),
        'Randomredirect'            => array( 'تغییرمسیر_تصادفی' ),
        'Recentchanges'             => array( 'تغییرات_اخیر' ),
        'Recentchangeslinked'       => array( 'تغییرات_مرتبط' ),
        'Redirect'                  => array( 'تغییرمسیر' ),
+       'ResetTokens'               => array( 'بازنشانی_نشانه‌ها' ),
        'Revisiondelete'            => array( 'حذف_نسخه' ),
        'Search'                    => array( 'جستجو' ),
        'Shortpages'                => array( 'صفحه‌های_کوتاه' ),
@@ -230,6 +235,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'نام‌کامل‌صفحه‌کد', 'نام_کامل_صفحه_کد', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'نام‌زیرصفحه', 'نام_زیرصفحه', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'نام‌زیرصفحه‌کد', 'نام_زیرصفحه_کد', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'نام_صفحه_ریشه', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'نام_صفحه_ریشه_ای', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'نام‌صفحه‌مبنا', 'نام_صفحه_مبنا', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'نام‌صفحه‌مبناکد', 'نام_صفحه_مبنا_کد', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'نام‌صفحه‌بحث', 'نام_صفحه_بحث', 'TALKPAGENAME' ),
@@ -249,6 +256,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'وسط', 'center', 'centre' ),
        'img_framed'                => array( '1', 'قاب', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'بی‌قاب', 'بیقاب', 'بی_قاب', 'frameless' ),
+       'img_lang'                  => array( '1', 'زبان=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'صفحه=$1', 'صفحه_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'ایستاده', 'ایستاده=$1', 'ایستاده_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'حاشیه', 'border' ),
@@ -262,6 +270,7 @@ $magicWords = array(
        'img_text_bottom'           => array( '1', 'متن-پایین', 'text-bottom' ),
        'img_link'                  => array( '1', 'پیوند=$1', 'link=$1' ),
        'img_alt'                   => array( '1', 'جایگزین=$1', 'alt=$1' ),
+       'img_class'                 => array( '1', 'کلاس=$1', 'class=$1' ),
        'int'                       => array( '0', 'ترجمه:', 'INT:' ),
        'sitename'                  => array( '1', 'نام‌وبگاه', 'نام_وبگاه', 'SITENAME' ),
        'ns'                        => array( '0', 'فن:', 'NS:' ),
@@ -269,6 +278,7 @@ $magicWords = array(
        'localurl'                  => array( '0', 'نشانی:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'نشانی‌کد:', 'نشانی_کد:', 'LOCALURLE:' ),
        'articlepath'               => array( '0', 'مسیرمقاله', 'مسیر_مقاله', 'ARTICLEPATH' ),
+       'pageid'                    => array( '0', 'شناسه_صفحه', 'PAGEID' ),
        'server'                    => array( '0', 'سرور', 'کارساز', 'SERVER' ),
        'servername'                => array( '0', 'نام‌کارساز', 'نام_کارساز', 'نام‌سرور', 'نام_سرور', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'مسیرسند', 'مسیر_سند', 'SCRIPTPATH' ),
@@ -316,6 +326,7 @@ $magicWords = array(
        'padleft'                   => array( '0', 'لبه‌چپ', 'لبه_چپ', 'PADLEFT' ),
        'padright'                  => array( '0', 'لبه‌راست', 'لبه_راست', 'PADRIGHT' ),
        'special'                   => array( '0', 'ویژه', 'special' ),
+       'speciale'                  => array( '0', 'ویژه_ای', 'speciale' ),
        'defaultsort'               => array( '1', 'ترتیب:', 'ترتیب‌پیش‌فرض:', 'ترتیب_پیش_فرض:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                  => array( '0', 'مسیرپرونده:', 'مسیر_پرونده:', 'FILEPATH:' ),
        'tag'                       => array( '0', 'برچسب', 'tag' ),
@@ -333,6 +344,10 @@ $magicWords = array(
        'url_query'                 => array( '0', 'دستور', 'QUERY' ),
        'defaultsort_noerror'       => array( '0', 'بدون‌خطا', 'بدون_خطا', 'noerror' ),
        'defaultsort_noreplace'     => array( '0', 'جایگزین‌نکن', 'جایگزین_نکن', 'noreplace' ),
+       'pagesincategory_all'       => array( '0', 'همه', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'صفحات', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'زیررده‌ها', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'پرونده‌ها', 'files' ),
 );
 
 $digitTransformTable = array(
@@ -438,11 +453,11 @@ $imageFiles = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'خط کشیدن زیر پیوندها:',
-'tog-justify' => 'بÙ\86دÙ\87ا ØªÙ\85اÙ\85â\80\8cÚ\86Û\8cÙ\86 Ù\86Ù\85اÛ\8cØ´ Û\8cابÙ\86د',
+'tog-underline' => 'پیوند خط کشی شده در زیر:',
+'tog-justify' => 'تÙ\88جÛ\8cÙ\87 Ù¾Ø§Ø±Ø§Ú¯Ø±Ø§Ù\81',
 'tog-hideminor' => 'تغییرات جزئی از فهرست تغییرات اخیر پنهان شوند',
 'tog-hidepatrolled' => 'ویرایش‌های گشت‌خورده از فهرست تغییرات اخیر پنهان شوند',
-'tog-newpageshidepatrolled' => 'صفحه‌های نهگبانی‌شده از فهرست صفحه‌های تازه پنهان شوند',
+'tog-newpageshidepatrolled' => 'صفحه‌های گشت‌خورده از فهرست صفحه‌های تازه پنهان شوند',
 'tog-extendwatchlist' => 'گسترش فهرست پی‌گیری‌ها برای نمایش همهٔ تغییرات، نه فقط آخرین‌ها',
 'tog-usenewrc' => 'گروه‌بندی تغییرات بر پایهٔ صفحه‌های تغییرات اخیر و فهرست پیگیری‌ها (نیازمند جاوااسکریپت)',
 'tog-numberheadings' => 'شماره‌گذاری خودکار عنوان‌ها',
@@ -459,7 +474,6 @@ $messages = array(
 'tog-minordefault' => 'همهٔ ویرایش‌ها به طور پیش‌فرض به عنوان «جزئی» علامت بخورد',
 'tog-previewontop' => 'پیش‌نمایش قبل از جعبهٔ ویرایش نمایش یابد',
 'tog-previewonfirst' => 'پیش‌نمایش هنگام اولین ویرایش نمایش یابد',
-'tog-nocache' => 'حافظهٔ نهانی مرورگر از کار انداخته شود',
 'tog-enotifwatchlistpages' => 'اگر صفحه یا پرونده‌ای از فهرست پی‌گیری‌هایم ویرایش شد به من نامه‌ای فرستاده شود',
 'tog-enotifusertalkpages' => 'هنگامی که در صفحهٔ بحث کاربری‌ام تغییری صورت می‌گیرد به من نامه‌ای فرستاده شود',
 'tog-enotifminoredits' => 'برای تغییرات جزئی در صفحه‌ها و پرونده‌ها هم به من نامه‌ای فرستاده شود',
@@ -595,7 +609,6 @@ $messages = array(
 'qbedit' => 'ویرایش',
 'qbpageoptions' => 'این صفحه',
 'qbmyoptions' => 'صفحه‌های من',
-'qbspecialpages' => 'صفحه‌های ویژه',
 'faq' => 'پرسش‌های متداول',
 'faqpage' => 'Project:پرسش‌های متداول',
 
@@ -817,9 +830,6 @@ $1',
 'perfcachedts' => 'داده‌های زیر از حافظهٔ نهانی فراخوانی شده‌اند و آخرین بار در $1 به‌روزرسانی شدند. حداکثر {{PLURAL:$4|یک نتیجه|$4 نتیجه}} در حافظهٔ نهانی قابل دسترس است.',
 'querypage-no-updates' => 'امکان به‌روزرسانی این صفحه فعلاً غیرفعال شده‌است.
 اطلاعات این صفحه ممکن است به‌روز نباشد.',
-'wrong_wfQuery_params' => 'پارامترهای wfQuery()‎ نادرست است<br />
-تابع: $1<br />
-پرس‌وجو: $2',
 'viewsource' => 'نمایش مبدأ',
 'viewsource-title' => 'نمایش مبدأ برای $1',
 'actionthrottled' => 'جلوی عمل شما گرفته شد',
@@ -862,7 +872,7 @@ $2',
 # Login and logout pages
 'logouttext' => "'''اکنون شما ثبت خروج کرده‌اید.'''
 توجه داشته باشید که تا حافظهٔ نهان مرورگرتان را پاک نکنید، بعضی از صفحات ممکن است همچنان به گونه‌ای نمایش یابند که انگار وارد شده‌اید.",
-'welcomeuser' => 'خوشامدید، $1!',
+'welcomeuser' => 'خوشامدید $1!',
 'welcomecreation-msg' => 'حساب کاربری شما ایجاد شده است.
 فراموش نکنید که [[Special:Preferences|ترجیحات {{SITENAME}}]] خود را تغییر دهید.',
 'yourname' => 'نام کاربری:',
@@ -922,7 +932,7 @@ $2',
 'createacct-benefit-heading' => '{{SITENAME}} توسط افرادی مانند شما ساخته شده‌است',
 'createacct-benefit-body1' => '{{PLURAL:$1|ویرایش}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|صفحه}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|مشارکت‌کنندهٔ|مشارکت‌کنندگان}} اخیر',
+'createacct-benefit-body3' => '{{PLURAL:$1|مشارکت‌کنندهٔ}} اخیر',
 'badretype' => 'گذرواژه‌هایی که وارد کرده‌اید یکسان نیستند.',
 'userexists' => 'نام کاربری‌ای که وارد کردید قبلاً استفاده شده‌است.
 لطفاً یک نام دیگر انتخاب کنید.',
@@ -955,7 +965,7 @@ $2',
 'passwordtooshort' => 'گذرواژه باید دست‌کم {{PLURAL:$1|۱ حرف|$1 حرف}} داشته باشد.',
 'password-name-match' => 'گذرواژهٔ شما باید با نام کاربری شما تفاوت داشته باشد.',
 'password-login-forbidden' => 'استفاده از این نام کاربری و گذرواژه ممنوع است.',
-'mailmypassword' => 'گذرواژهٔ جدید با رایانامه فرستاده شود',
+'mailmypassword' => 'بازنشانی گذرواژه',
 'passwordremindertitle' => 'یادآور گذرواژهٔ {{SITENAME}}',
 'passwordremindertext' => 'یک نفر (احتمالاً خود شما، با نشانی آی‌پی $1) گذرواژهٔ جدیدی برای حساب کاربری شما در {{SITENAME}} درخواست کرده‌است ($4). 
 یک گذرواژهٔ موقت برای کاربر «$2» ساخته شده و برابر با «$3» قرار داده شده‌است.
@@ -1006,7 +1016,7 @@ $2',
 'user-mail-no-body' => 'تلاش برای فرستادن رایانامه بی‌دلیل کوتاه یا خالی',
 
 # Change password dialog
-'resetpass' => 'تغییر گذرواژه',
+'changepassword' => 'تغییر گذرواژه',
 'resetpass_announce' => 'شما با کد موقتی ارسال شده وارد شده‌اید.
 برای انجام فرایند ورود به سامانه باید گذروازهٔ جدیدی وارد کنید:',
 'resetpass_text' => '<!-- اینجا متن اضافه کنید -->',
@@ -1028,7 +1038,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'بازنشانی گذرواژه',
 'passwordreset-text-one' => 'برای بازنشانی گذرواژه‌تان این فرم را کامل کنید.',
-'passwordreset-text-many' => '{{PLURAL:$1|یکی از موارد را برای بازنشانی گذرواژه‌تان پر کنید.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|برای دریافت یک گذرواژهٔ موقت از راه رایانامه، یکی از زمینه‌ها را پر کنید.}}',
 'passwordreset-legend' => 'بازنشانی گذرواژه',
 'passwordreset-disabled' => 'بازنشانی گذرواژه در این ویکی غیرفعال شده است.',
 'passwordreset-emaildisabled' => 'ویژگی‌های رایانامه در این ویکی نافعال شده‌اند.',
@@ -1293,6 +1303,8 @@ $2
 'content-not-allowed-here' => 'محتوای «$1» در صفحهٔ [[$2]] مجاز نیست',
 'editwarning-warning' => 'خروج از این صفحه ممکن است باعث از دست رفتن هرچه نوشته‌اید شود.
 اگر شما با نام کاربری وارد شده‌اید می‌توانید این هشدار را در بخش «در حال ویرایش» ترجیحاتتان بیابید.',
+'editpage-notsupportedcontentformat-title' => 'فرمت محتوا پشتیبانی نشده',
+'editpage-notsupportedcontentformat-text' => 'فرمت محتوای $1 توسط مدل محتوای $2 پشتیبانی نشده‌است.',
 
 # Content models
 'content-model-wikitext' => 'ویکی‌متن',
@@ -1335,6 +1347,8 @@ $2
 'cantcreateaccount-text' => "امكان ساختن حساب کاربری از این این نشانی آی‌پی ('''$1''') توسط [[User:$3|$3]] سلب شده است.
 
 دلیل ارائه شده توسط $3 چنین است: $2",
+'cantcreateaccount-range-text' => "ایجاد حساب از آدرس آی‌پی در مجموعه‌ی '''$1'''، که شامل آدرس آی‌پی شما ('''$4''') است، توسط [[User:$3|$3]] متوقف شده‌است.
+دلیل ارائه شده توسط $3، $2 است.",
 
 # History pages
 'viewpagelogs' => 'نمایش سیاهه‌های این صفحه',
@@ -1403,10 +1417,6 @@ $2
 'revisiondelete' => 'حذف/احیای نسخه‌ها',
 'revdelete-nooldid-title' => 'نسخهٔ هدف نامجاز',
 'revdelete-nooldid-text' => 'شما نسخه‌های هدف را برای انجام این عمل مشخص نکرده‌اید یا این نسخه‌ها وجود ندارند، یا این که شما می‌خواهید آخرین نسخه را پنهان کنید.',
-'revdelete-nologtype-title' => 'نوع سیاهه مشخص نشده‌است',
-'revdelete-nologtype-text' => 'شما هیچ نوع سیاهه‌ای را برای این کار مشخص نکردید.',
-'revdelete-nologid-title' => 'مدخل نامجاز سیاهه',
-'revdelete-nologid-text' => 'شما یا رویدادی را در سیاههٔ هدف مشخص نکردید یا موردی را مشخص کردید که وجود ندارد.',
 'revdelete-no-file' => 'پروندهٔ مشخص شده وجود ندارد.',
 'revdelete-show-file-confirm' => 'آیا مطمئن هستید که می‌خواهید یک نسخهٔ حذف شده از پروندهٔ «<nowiki>$1</nowiki>» مورخ $2 ساعت $3 را ببینید؟',
 'revdelete-show-file-submit' => 'بله',
@@ -1440,8 +1450,6 @@ $1",
 'logdelete-failure' => "'''پیدایی سیاهه‌ها قابل تنظیم نیست:'''
 $1",
 'revdel-restore' => 'تغییر پیدایی',
-'revdel-restore-deleted' => 'نسخه‌های حذف‌شده',
-'revdel-restore-visible' => 'نسخه‌های پیدا',
 'pagehist' => 'تاریخچهٔ صفحه',
 'deletedhist' => 'تاریخچهٔ حذف‌شده',
 'revdelete-hide-current' => 'خطا در پنهان‌کردن مورد مورخ $2 ساعت $1: این نسخه، نسخهٔ اخیر است و قابل پنهان‌کردن نیست.',
@@ -1518,12 +1526,8 @@ $1",
 # 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}}تای قبلی',
@@ -1532,10 +1536,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|نتیجهٔ|نتیجهٔ}} بعدی',
 'shown-title' => 'نمایش $1 {{PLURAL:$1|نتیجه|نتیجه}} در هر صفحه',
 'viewprevnext' => 'نمایش ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'گزینه‌های جستجو',
 'searchmenu-exists' => "'''صفحه‌ای با عنوان «[[:$1]]» در این ویکی وجود دارد.'''",
 'searchmenu-new' => "'''صفحهٔ «[[:$1]]» را در این ویکی بسازید!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|مرور صفحه‌های با این پیشوند]]',
 'searchprofile-articles' => 'صفحه‌های محتوایی',
 'searchprofile-project' => 'صفحه‌های راهنما و پروژه',
 'searchprofile-images' => 'چندرسانه‌ای',
@@ -1556,21 +1558,16 @@ $1",
 'search-interwiki-default' => '$1 نتیجه:',
 'search-interwiki-more' => '(بیشتر)',
 'search-relatedarticle' => 'مرتبط',
-'mwsuggest-disable' => 'پیشنهادهای مبتنی بر جستجو را غیرفعال کن',
 'searcheverything-enable' => 'جستجو در تمام فضاهای نام',
 'searchrelated' => 'مرتبط',
 'searchall' => 'همه',
 'showingresults' => "نمایش حداکثر {{PLURAL:$1|'''۱''' نتیجه|'''$1''' نتیجه}} در پایین، آغاز از شماره '''$2'''.",
 'showingresultsnum' => "نمایش حداکثر '''$3''' {{PLURAL:$3|نتیجه|نتیجه}} در پایین، آغاز از شماره '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|نتیجهٔ '''$1''' از '''$3'''|نتایج '''$1 تا $2''' از '''$3'''}} برای '''$4'''",
-'nonefound' => "'''نکته''': تنها بعضی از فضاهای نام به طور پیش‌فرض جستجو می‌شوند.
-برای جستجوی تمام فضاهای نام (شامل صفحه‌های بحث، الگوها و غیره) به عبارت جستجوی خود پیشوند ''all:‎'' را بیفزایید، یا نام فضای نام دلخواه را به عنوان پیشوند استفاده کنید.",
 'search-nonefound' => 'نتیجه‌ای منطبق با درخواست پیدا نشد.',
-'powersearch' => 'جستجوی پیشرفته',
 'powersearch-legend' => 'جستجوی پیشرفته',
 'powersearch-ns' => 'جستجو در فضاهای نام:',
 'powersearch-redir' => 'فهرست‌کردن تغییرمسیرها',
-'powersearch-field' => 'جستجو برای',
 'powersearch-togglelabel' => 'بررسی:',
 'powersearch-toggleall' => 'همه',
 'powersearch-togglenone' => 'هیچ‌کدام',
@@ -1585,7 +1582,6 @@ $1",
 'mypreferences' => 'ترجیحات',
 'prefs-edits' => 'تعداد ویرایش‌ها:',
 'prefsnologintext2' => 'لطفاً  $1  برای تنظیم ترجیحات کاربر.',
-'changepassword' => 'تغییر گذرواژه',
 'prefs-skin' => 'پوسته',
 'skin-preview' => 'پیش‌نمایش',
 'datedefault' => 'بدون ترجیح',
@@ -1608,13 +1604,11 @@ $1",
 'prefs-email' => 'گزینه‌های رایانامه',
 'prefs-rendering' => 'نمایش صفحه',
 'saveprefs' => 'ذخیره',
-'resetprefs' => 'صفرکردن ترجیحات',
 'restoreprefs' => 'برگرداندن تمام تنظیمات پیش‌فرض (در تمامی قسمت‌ها)',
 'prefs-editing' => 'ویرایش',
 'rows' => 'تعداد سطرها:',
 'columns' => 'تعداد ستون‌ها:',
 'searchresultshead' => 'جستجو',
-'resultsperpage' => 'تعداد نتایج در هر صفحه:',
 'stub-threshold' => 'آستانهٔ ویرایش پیوندهای <a href="#" class="stub">ناقص</a> (بایت):',
 'stub-threshold-disabled' => 'غیرفعال',
 'recentchangesdays' => 'تعداد روزهای نمایش داده‌شده در تغییرات اخیر:',
@@ -1628,7 +1622,6 @@ $1",
 'localtime' => 'زمان محلی:',
 'timezoneuseserverdefault' => 'استفاده از پیش‌فرض ویکی ($1)',
 'timezoneuseoffset' => 'دیگر (اختلاف را مشخص کنید)',
-'timezoneoffset' => 'اختلاف¹:',
 'servertime' => 'زمان سرور:',
 'guesstimezone' => 'از مرورگر گرفته شود',
 'timezoneregion-africa' => 'آفریقا',
@@ -1700,6 +1693,7 @@ $1",
 'prefs-tokenwatchlist' => 'نشانه',
 'prefs-diffs' => 'تفاوت‌ها',
 'prefs-help-prefershttps' => 'تأثیر این ترجیح بعد از ورود بعدی شما اعمال خواهد شد.',
+'prefs-tabs-navigation-hint' => 'نکته: شما می توانید از کلیدهای جهت‌نمای چپ و راست برای حرکت بین زبانه‌ها در فهرست زبانه‌ها استفاده کنید.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'نشانی رایانامه معتبر به نظر می‌رسد',
@@ -1818,7 +1812,7 @@ $1",
 'right-mergehistory' => 'ادغام تاریخچهٔ صفحه‌ها',
 'right-userrights' => 'ویرایش تمام اختیارات کاربرها',
 'right-userrights-interwiki' => 'ویرایش اختیارات کاربرهای ویکی‌های دیگر',
-'right-siteadmin' => 'قفل کردن و باز کردن پایگاه داده',
+'right-siteadmin' => 'قفل‌کردن و بازکردن پایگاه داده‌ها',
 'right-override-export-depth' => 'برون‌بری صفحه‌ها شامل صفحه‌های پیوند شده تا عمق ۵',
 'right-sendemail' => 'ارسال رایانامه به دیگر کاربران',
 'right-passwordreset' => 'مشاهدهٔ نامه‌های تنظیم مجدد گذرواژه',
@@ -1865,7 +1859,7 @@ $1",
 'action-mergehistory' => 'ادغام تاریخچهٔ این صفحه',
 'action-userrights' => 'ویرایش همهٔ اختیارات کاربری',
 'action-userrights-interwiki' => 'ویرایش اختیارات کاربری کاربران یک ویکی دیگر',
-'action-siteadmin' => 'قفل کردن و باز کردن پایگاه داده',
+'action-siteadmin' => 'قفل‌کردن و بازکردن پایگاه داده‌ها',
 'action-sendemail' => 'ارسال ایمیل',
 'action-editmywatchlist' => 'فهرست پیگیری‌های خود را ویرایش کنید',
 'action-viewmywatchlist' => 'فهرست پیگیری‌های خود را ببینید',
@@ -1882,18 +1876,18 @@ $1",
 'recentchanges-noresult' => 'هیچ تغییری در طول دورهٔ تعیین‌شده با این معیارها هم‌خوانی نداشت.',
 'recentchanges-feed-description' => 'آخرین تغییرات ویکی را در این خوراک پی‌گیری کنید.',
 'recentchanges-label-newpage' => 'این ویرایش صفحه‌ای جدید ایجاد کرد',
-'recentchanges-label-minor' => 'این ویرایش جزئی‌است',
+'recentchanges-label-minor' => 'این یک ویرایش جزئی‌است',
 'recentchanges-label-bot' => 'این ویرایش را یک ربات انجام داده‌است',
 'recentchanges-label-unpatrolled' => 'این ویرایش هنوز گشت‌زنی نشده‌است',
 'recentchanges-label-plusminus' => 'حجم صفحه به اندازه این بایت‌ها تغییر یافته‌است',
+'recentchanges-legend-heading' => "'''اختصارها:'''",
 'recentchanges-legend-newpage' => '(همچنین به [[Special:NewPages|فهرست صفحات جدید]] نگاه کنید)',
 'recentchanges-legend-plusminus' => "('' ±۱۲۳'')",
-'rcnote' => "در زیر {{PLURAL:$1|'''۱''' تغییر|آخرین '''$1''' تغییر}} در آخرین {{PLURAL:$2|روز|'''$2''' روز}} را، تا $4 ساعت $5 می‌بینید.",
 'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
 'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
 'rcshowhideminor' => '$1 ویرایش‌های جزئی',
 'rcshowhidebots' => '$1 ربات‌ها',
-'rcshowhideliu' => '$1 کاربران ثبت‌نام‌کرده',
+'rcshowhideliu' => 'کاربران نسخهٔ $1 ثبت‌نام‌ کردند',
 'rcshowhideanons' => '$1 کاربران ناشناس',
 'rcshowhidepatr' => '$1 ویرایش‌های گشت‌خورده',
 'rcshowhidemine' => '$1 ویرایش‌های من',
@@ -2017,6 +2011,8 @@ $1",
 'file-exists-duplicate' => 'به نظر می‌رسد این پرونده نسخه‌ای تکراری از {{PLURAL:$1|پروندهٔ|پرونده‌های}} زیر باشد:',
 'file-deleted-duplicate' => 'یک پرونده نظیر این پرونده ([[:$1]]) قبلاً حذف شده‌است.
 شما باید تاریخچهٔ حذف آن پرونده را قبل از بارگذاری مجدد آن ببینید.',
+'file-deleted-duplicate-notitle' => 'یک پرونده یکسان بااین پرونده قبلا حذف شده است و عنوان متوقف شده‌است.
+شما باید از کسی که دسترسی مشاهدهٔ فایل متوقف شده را دارد، درخواست کنید تا شرایط را قبل از بارگذاری مجدد بررسی کند.',
 'uploadwarning' => 'هشدار بارگذاری',
 'uploadwarning-text' => 'لطفاً توضیحات پرونده را در زیر تغییر دهید و دوباره تلاش کنید.',
 'savefile' => 'ذخیرهٔ پرونده',
@@ -2352,6 +2348,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'ninterwikis' => '$1 {{PLURAL:$1|میان‌ویکی|میان‌ویکی}}',
 'nlinks' => '$1 {{PLURAL:$1|پیوند|پیوند}}',
 'nmembers' => '$1 {{PLURAL:$1|عضو|عضو}}',
+'nmemberschanged' => '$1 → $2   {{PLURAL:$2| عضو|عضو}}',
 'nrevisions' => '$1 {{PLURAL:$1|نسخه|نسخه}}',
 'nviews' => '$1 {{PLURAL:$1|بازدید|بازدید}}',
 'nimagelinks' => 'مورد استفاده در $1 {{PLURAL:$1|صفحه|صفحه}}',
@@ -2390,10 +2387,9 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'protectedpages' => 'صفحه‌های محافظت‌شده',
 'protectedpages-indef' => 'فقط محافظت‌های بی‌پایان',
 'protectedpages-cascade' => 'فقط محافظت‌های آبشاری',
-'protectedpagestext' => 'صفحه‌های زیر در برابر ویرایش یا انتقال محافظت شده‌اند:',
+'protectedpages-noredirect' => 'پنهان‌کردن تغییر مسیرها',
 'protectedpagesempty' => 'در حال حاضر هیچ‌صفحه‌ای محافظت نشده‌است.',
 'protectedtitles' => 'عنوان‌های محافظت‌شده',
-'protectedtitlestext' => 'عنوان‌های زیر از ایجاد محافظت شده‌اند',
 'protectedtitlesempty' => 'در حال حاضر هیچ عنوانی با این پارامترها محافظت نشده‌است.',
 'listusers' => 'فهرست کاربران',
 'listusers-editsonly' => 'فقط کاربرانی که ویرایش دارند را نشان بده',
@@ -2446,9 +2442,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
 'allpagesto' => 'نمایش صفحه‌ها با پایان در:',
 'allarticles' => 'همهٔ صفحه‌ها',
 'allinnamespace' => 'همهٔ صفحه‌ها (فضای نام $1)',
-'allnotinnamespace' => 'همهٔ صفحه‌ها (که در فضای نام $1 است)',
-'allpagesprev' => 'قبلی',
-'allpagesnext' => 'بعدی',
 'allpagessubmit' => 'برو',
 'allpagesprefix' => 'نمایش صفحه‌های دارای پیشوند:',
 'allpagesbadtitle' => 'عنوان صفحهٔ داده‌شده نامعتبر است یا اینکه دارای پیشوندی بین‌زبانی یا بین‌ویکی‌ای است. ممکن است نویسه‌هایی بدارد که نمی‌توان از آنها در عنوان صفحه‌ها استفاده کرد.',
@@ -2671,6 +2664,7 @@ $PAGEINTRO $NEWPAGE
 'delete-warning-toobig' => 'این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.
 حذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;
 با احتیاط ادامه دهید.',
+'deleting-backlinks-warning' => "''' هشدار:''' صفحات دیگر پیوند به صفحه شما  درباره حذف هستند.",
 
 # Rollback
 'rollback' => 'واگردانی ویرایش‌ها',
@@ -2791,7 +2785,6 @@ $PAGEINTRO $NEWPAGE
 'undeletebtn' => 'احیا',
 'undeletelink' => 'نمایش/احیا',
 'undeleteviewlink' => 'نمایش',
-'undeletereset' => 'از نو',
 'undeleteinvert' => 'وارونه کردن انتخاب',
 'undeletecomment' => 'دلیل:',
 'undeletedrevisions' => '$1 نسخه احیا {{PLURAL:$1|شد|شدند}}',
@@ -2835,7 +2828,7 @@ $1',
 'mycontris' => 'مشارکت‌ها',
 'contribsub2' => 'برای {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'هیچ تغییری با این مشخصات یافت نشد.',
-'uctop' => '(بالا)',
+'uctop' => '(نسخه کنونی)',
 'month' => 'در این ماه (و پیش از آن):',
 'year' => 'در این سال (و پیش از آن):',
 
@@ -2881,7 +2874,6 @@ $1',
 'block' => 'بستن کاربر',
 'unblock' => 'بازکردن کاربر',
 'blockip' => 'بستن کاربر',
-'blockip-title' => 'بستن کاربر',
 'blockip-legend' => 'بستن کاربر',
 'blockiptext' => 'از فرم زیر برای بستن دسترسی ویرایش یک نشانی آی‌پی یا نام کاربری مشخص استفاده کنید.
 این کار فقط فقط باید برای جلوگیری از خرابکاری و بر اساس [[{{MediaWiki:Policy-url}}|سیاست قطع دسترسی]] انجام شود.
@@ -2889,7 +2881,6 @@ $1',
 'ipadressorusername' => 'نشانی آی‌پی یا نام کاربری:',
 'ipbexpiry' => 'زمان سرآمدن:',
 'ipbreason' => 'دلیل:',
-'ipbreasonotherlist' => 'دلیل دیگر',
 'ipbreason-dropdown' => '*دلایل متداول قطع دسترسی
 **واردکردن اطلاعات نادرست
 **پاک‌کردن اطلاعات مفید از صفحه‌ها
@@ -2905,8 +2896,6 @@ $1',
 'ipbsubmit' => 'این کاربر بسته شود',
 'ipbother' => 'زمانی دیگر',
 'ipboptions' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایان:infinite',
-'ipbotheroption' => 'دیگر',
-'ipbotherreason' => 'دلیل دیگر/اضافی:',
 'ipbhidename' => 'نهفتن نام کاربری از ویرایش‌ها و فهرست‌ها',
 'ipbwatchuser' => 'پی‌گیری صفحهٔ کاربری و بحث این کاربر',
 'ipb-disableusertalk' => 'جلوگیری از ویرایشی صفحهً بحث توسط خود کاربر در زمانی که بسته است',
@@ -2918,6 +2907,7 @@ $1',
 برای بررسی بسته‌شده‌ها [[Special:BlockList|فهرست بسته‌شده‌ها]] را ببینید.',
 'ipb-blockingself' => 'شما در حال بستن خودتان هستید!  آیا مطمئن هستید که می‌خواهید چنین کاری انجام دهید؟',
 'ipb-confirmhideuser' => 'شما در حال بستن یک کاربر هستید که «پنهان‌سازی کاربر» برایش فعال شد‌ه‌است. این کار نام کاربر را از همهٔ فهرست‌ها و سیاهه‌ها مخفی می‌کند. آیا مطمئن هستید که می‌خواهید آن را انجام دهید؟',
+'ipb-confirmaction' => 'اگر واقعاً مطمئنید که می‌خواهید آن را انجام دهید، لطفاً زمینهٔ "{{int:ipb-confirm}}" را در زیر بررسی کنید.',
 'ipb-edit-dropdown' => 'ویرایش دلایل قطع‌دسترسی',
 'ipb-unblock-addr' => 'باز کردن $1',
 'ipb-unblock' => 'باز کردن نام کاربری یا نشانی آی‌پی',
@@ -2999,7 +2989,6 @@ $1',
 'sorbs_create_account_reason' => 'نشانی آی‌پی شما توسط DNSBL مورد استفاده {{SITENAME}} به عنوان یک پروکسی باز گزارش شده‌است.
 شما اجازهٔ ساختن حساب کاربری ندارید.',
 'xffblockreason' => 'نشانی آی‌پی در X-Forwarded-For header موجود است و پروکسی شما یا سروری که از آن استفاده می‌کنید بسته‌شده‌است. دلیل بسته‌شدن: $1',
-'cant-block-while-blocked' => 'در مدتی که دسترسی شما بسته است نمی‌توانید دسترسی کاربران دیگر را قطع کنید.',
 'cant-see-hidden-user' => 'کاربری که می‌خواهید ببندید قبلاً بسته شده و پنهان گردیده است. چون شما دسترسی پنهان کردن کاربران را ندارید، نمی‌توانید قطع دسترسی کاربر را ببینید یا ویرایش کنید.',
 'ipbblocked' => 'شما نمی‌توانید دسترسی دیگر کاربران را ببندید یا باز کنید زیرا دسترسی خودتان بسته است.',
 'ipbnounblockself' => 'شما مجاز به باز کردن دسترسی خود نیستید.',
@@ -3060,7 +3049,6 @@ $1',
 در این حالات، باید صفحه را بطور دستی انتقال داده و یا محتویات دو صفحه را با ویرایش ادغام کنید.",
 'movearticle' => 'انتقال صفحه:',
 'moveuserpage-warning' => "'''هشدار:''' شما در حال انتقال دادن یک صفحهٔ کاربر هستید. توجه داشته باشید که تنها صفحه منتقل می‌شود و نام کاربر تغییر '''نمی‌یابد'''.",
-'movenologin' => 'به سامانه وارد نشده‌اید',
 'movenologintext' => 'برای انتقال صفحه‌ها باید کاربر ثبت‌شده بوده و [[Special:UserLogin|به سامانه وارد شوید]].',
 'movenotallowed' => 'شما اجازهٔ انتقال دادن صفحه‌ها را ندارید.',
 'movenotallowedfile' => 'شما اجازهٔ انتقال پرونده‌ها را ندارید.',
@@ -3076,9 +3064,6 @@ $1',
 'articleexists' => 'صفحه‌ای با این نام از قبل وجود دارد، یا نامی که انتخاب کرده‌اید معتبر نیست.
 لطفاً نام دیگری انتخاب کنید.',
 'cantmove-titleprotected' => 'شما نمی‌توانید صفحه را به این نشانی انتقال دهید، چرا که عنوان جدید در برابر ایجاد محافظت شده‌است',
-'talkexists' => "'''خود صفحه با موفقیت منتقل شد، ولی صفحهٔ بحث منتقل نشد چون صفحهٔ بحثی از قبل در عنوان جدید وجود دارد.
-لطفاً آن‌ها را دستی ادغام کنید.'''",
-'movedto' => 'منتقل شد به',
 'movetalk' => 'صفحهٔ بحث هم منتقل شود',
 'move-subpages' => 'انتقال زیرصفحه‌ها (تا $1 صفحه)',
 'move-talk-subpages' => 'انتقال زیرصفحه‌های صفحهٔ بحث (تا $1 صفحه)',
@@ -3134,7 +3119,7 @@ $1',
 'exportcuronly' => 'فقط نسخهٔ فعلی شامل شود، نه کل تاریخچه',
 'exportnohistory' => "----
 '''توجه:''' امکان برون‌بری تاریخچهٔ کامل صفحه‌ها از طریق این صفحه به دلایل اجرایی از کار انداخته شده‌است.",
-'exportlistauthors' => 'محتوی لیست کامل مشارکت‌کنندگان هر صفحه',
+'exportlistauthors' => 'شامل فهرست کامل مشارکت‌کنندگان هر صفحه',
 'export-submit' => 'برون‌بری',
 'export-addcattext' => 'افزودن صفحه‌ها از رده:',
 'export-addcat' => 'افزودن',
@@ -3478,9 +3463,9 @@ $1',
 'hours-abbrev' => '$1 ساعت',
 'days-abbrev' => '$1 روز',
 'seconds' => '{{PLURAL:$1|$1ثانیه| $1  ثانیه}}',
-'minutes' => '{{PLURAL: $1|دقیقه|دقیقه}}',
-'hours' => '{{PLURAL: $1|ساعت|ساعت}}',
-'days' => '{{PLURAL: $1|روز|روز}}',
+'minutes' => '{{PLURAL:$1|دقیقه|دقیقه}}',
+'hours' => '{{PLURAL:$1|ساعت|ساعت}}',
+'days' => '{{PLURAL:$1|روز|روز}}',
 'weeks' => '{{PLURAL:$1|$1 هفته|$1 هفته}}',
 'months' => '{{PLURAL:$1|$1 ماه|}}',
 'years' => '{{PLURAL:$1|$1 سال|}}',
@@ -3920,15 +3905,10 @@ $1',
 'exif-urgency-high' => 'زیاد ($1)',
 'exif-urgency-other' => 'اولویت تعریف شده توسط کاربر ($1)',
 
-# External editor support
-'edit-externally' => 'ویرایش این پرونده با یک ویرایشگر بیرونی',
-'edit-externally-help' => '(برای اطلاعات بیشتر [https://www.mediawiki.org/wiki/Manual:External_editors دستورالعمل تنظیم] را ببینید)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'همه',
 'namespacesall' => 'همه',
 'monthsall' => 'همهٔ ماه‌ها',
-'limitall' => 'همه',
 
 # Email address confirmation
 'confirmemail' => 'تأیید نشانی رایانامه',
@@ -3949,7 +3929,6 @@ $1',
 
 هم‌اینک می‌توانید [[Special:UserLogin|به سامانه وارد شوید]] و از ویکی لذت ببرید.',
 'confirmemail_loggedin' => 'نشانی رایانامهٔ شما تأیید شد.',
-'confirmemail_error' => 'هنگام ذخیرهٔ تأیید شما به مشکلی برخورده شد.',
 'confirmemail_subject' => 'تأیید نشانی رایانامهٔ شما {{SITENAME}}',
 'confirmemail_body' => 'یک نفر، احتمالاً خود شما، از نشانی آی‌پی $1 حساب کاربری‌ای با نام «$2» و این نشانی رایانامه در {{SITENAME}} ایجاد کرده‌است.
 
@@ -4027,11 +4006,16 @@ $5
 'imgmultigo' => 'برو!',
 'imgmultigoto' => 'رفتن به صفحهٔ $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(زبان پیش‌فرض)',
+'img-lang-info' => 'ارائه این تصویر در  $1 .  $2',
+'img-lang-go' => 'برو',
+
 # Table pager
 'ascending_abbrev' => 'صعودی',
 'descending_abbrev' => 'نزولی',
 'table_pager_next' => 'صفحهٔ بعدی',
-'table_pager_prev' => 'صفحه قبل',
+'table_pager_prev' => 'صفحهٔ قبل',
 'table_pager_first' => 'صفحهٔ نخست',
 'table_pager_last' => 'صفحهٔ آخر',
 'table_pager_limit' => 'نمایش $1 مورد در هر صفحه',
@@ -4167,9 +4151,19 @@ $5
 'version-parser-function-hooks' => 'قلاب‌های عملگر تجزیه‌گر',
 'version-hook-name' => 'نام قلاب',
 'version-hook-subscribedby' => 'وارد شده توسط',
-'version-version' => '(نسخه $1)',
+'version-version' => '(نسخه  $1)',
 'version-svn-revision' => '(&رلم;r$2)',
-'version-license' => 'اجازه‌نامه',
+'version-license' => 'اجازه‌نامهٔ مدیاویکی',
+'version-ext-license' => 'مجوزها',
+'version-ext-colheader-name' => 'گستره‌ها',
+'version-ext-colheader-version' => 'نسخه',
+'version-ext-colheader-license' => 'مجوز',
+'version-ext-colheader-description' => 'توصیفات',
+'version-ext-colheader-credits' => 'مؤلفان',
+'version-license-title' => 'مجوز برای $1',
+'version-license-not-found' => 'هیچ جزئیاتی از اطلاعات مجوز برای این گستره پیدا نشد.',
+'version-credits-title' => 'اعتبارها برای $1',
+'version-credits-not-found' => 'هیچ جزئیاتی از اطلاعات اعتبارها برای این گستره پیدا نشد.',
 'version-poweredby-credits' => "این ویکی توسط '''[https://www.mediawiki.org/ مدیاویکی]''' پشتیبانی می‌شود، کلیهٔ حقوق محفوظ است © 2001-$1 $2.",
 'version-poweredby-others' => 'دیگران',
 'version-poweredby-translators' => 'مترجمان translatewiki.net',
@@ -4189,13 +4183,15 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath مسیر اسکریپت]',
 
 # Special:Redirect
-'redirect' => 'تغییرمسیر توسط پرونده، کاربر یا شناسهٔ نسخه',
+'redirect' => 'تغییرمسیر توسط پرونده، کاربر، صفحه یا شناسهٔ نسخه',
 'redirect-legend' => 'تغییرمسیر به یک پرونده یا صفحه',
-'redirect-summary' => 'این صفحهٔ ویژه به پرونده (نام پرونده داده‌شده)، صفحه (شماره شناسهٔ صفحه داده‌شده) یا صفحهٔ کاربری (شناسهٔ عددی کاربری داده‌شده) تغییرمسیر می‌یابد. طرز استفاده: [[{{#Special:Redirect}}/file/Example.jpg]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'این صفحهٔ ویژه به پرونده (نام پرونده داده‌شده)، صفحه (شماره شناسهٔ صفحه یا شماره نسخهٔ داده‌شده) یا صفحهٔ کاربری (شناسهٔ عددی کاربری داده‌شده) تغییرمسیر می‌یابد. طرز استفاده: [[{{#Special:Redirect}}/file/Example.jpg]]، 
+[[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]] یا [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'برو',
 'redirect-lookup' => 'جستجو:',
 'redirect-value' => 'مقدار:',
 'redirect-user' => 'شناسهٔ کاربر',
+'redirect-page' => 'شناسهٔ صفحه',
 'redirect-revision' => 'نسخهٔ صفحه',
 'redirect-file' => 'نام پرونده',
 'redirect-not-exists' => 'مقدار پیدا نشد',
@@ -4262,7 +4258,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'مقایسهٔ صفحه‌ها',
-'compare-selector' => 'مقایسهٔ نسخه‌های صفحه‌ها',
 'compare-page1' => 'صفحهٔ ۱',
 'compare-page2' => 'صفحهٔ ۲',
 'compare-rev1' => 'نسخهٔ ۱',
@@ -4389,6 +4384,7 @@ $5
 'api-error-overwrite' => 'جای نوشتن یک پرونده موجود مجاز نیست.',
 'api-error-stashfailed' => 'خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.',
 'api-error-publishfailed' => 'خطای داخلی: کارساز نمی‌تواند پرونده موقت را ذخیره کند.',
+'api-error-stasherror' => 'هنگام انتقال پوشه برای ذخیره خطایی بود.',
 'api-error-timeout' => 'کارساز در زمان انتظار هیچ پاسخی نداد.',
 'api-error-unclassified' => 'یک خطای ناشناخته رخ داد.',
 'api-error-unknown-code' => 'خطای ناشناخته: " $1 "',
@@ -4434,10 +4430,14 @@ $5
 'expand_templates_input' => 'متن ورودی:',
 'expand_templates_output' => 'نتیجه',
 'expand_templates_xml_output' => 'خروجی XML',
+'expand_templates_html_output' => 'خروجی اچ‌تی‌ام‌ال خام',
 'expand_templates_ok' => 'تأیید',
 'expand_templates_remove_comments' => 'حذف ملاحظات',
 'expand_templates_remove_nowiki' => 'خنثی کردن تگ‌های <nowiki> در نتیجه',
 'expand_templates_generate_xml' => 'نمایش درخت تجزیهٔ XML',
+'expand_templates_generate_rawhtml' => 'نمایش اچ‌تی‌ام‌ال خام',
 'expand_templates_preview' => 'پیش‌نمایش',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML در پروندهٔ بارگذاری‌شده نمی‌تواند تجزیه شود.',
 );
index cae4c8d..034cc40 100644 (file)
@@ -15,6 +15,9 @@
 
 $fallback = 'fr';
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Diidtol jokke',
@@ -170,7 +173,7 @@ Tiiɗno sabbo seeɗa hade maa etaade naatde e hello ngoo kadi.',
 'pool-queuefull' => 'Doggol golle ko keewngol',
 'pool-errorunknown' => 'Juumre nde heftinaaka',
 
-# 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).
+# 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).
 'aboutsite' => 'Baɗte {{SITENAME}}',
 'aboutpage' => 'Project:Baɗte',
 'copyright' => 'Loowdi ena heɓoo les $1.',
@@ -180,7 +183,6 @@ Tiiɗno sabbo seeɗa hade maa etaade naatde e hello ngoo kadi.',
 'disclaimers' => 'Deentine',
 'disclaimerpage' => 'Project:Deentine kuuɓtidinɗe',
 'edithelp' => 'Ballal Taƴtagol',
-'edithelppage' => 'Help:Taƴtagol',
 'helppage' => 'Help:Loowdi',
 'mainpage' => 'Hello jaɓɓorgo',
 'mainpage-description' => 'Hello jaɓɓorgo',
@@ -196,8 +198,6 @@ Tiiɗno sabbo seeɗa hade maa etaade naatde e hello ngoo kadi.',
 'ok' => 'OK',
 'retrievedfrom' => 'Ittaa ko to "$1"',
 'youhavenewmessages' => 'A heɓii $1 ($2).',
-'newmessageslink' => 'ɓatakuuje kese',
-'newmessagesdifflink' => 'baylol cakkitiingol',
 'youhavenewmessagesmulti' => 'A heɓii ɓatakuuje kese e $1',
 'editsection' => 'taƴto',
 'editold' => 'taƴto',
@@ -247,12 +247,6 @@ Doggol kelle ɗe moƴƴaani ena tawee to [[Special:SpecialPages|{{int:specialpag
 # General errors
 'error' => 'Faljere',
 'databaseerror' => 'Juumre ruttorde keɓe',
-'dberrortext' => 'Juumre lelngo ɗaɓɓitannde keɓe waɗii.
-Ɗuum kadi ena waawi wonde buggere e topirde ndee.
-Ɗaɓɓitannde keɓe sakkitiinde eteede wonnoo ko:
-<blockquote><code>$1</code></blockquote>
-iwde e golloore "<code>$2</code>".
-Ruttorde keɓe ruttinii juumre "<samp>$3: $4</samp>".',
 'missing-article' => 'Ruttorde keɓe ndee yiytaani loowdi hello ndi nde fotnoo yiytude, ena inniraa "$1" $2.
 
 Heewi waɗde noon ko diff nayeejo walla jokkol aslol fayde e hello momtaango.
@@ -331,8 +325,6 @@ walla [{{fullurl:{{FULLPAGENAME}}|action=edit}} taƴto hello ngoo]</span>.',
 
 # Revision deletion
 'revdel-restore' => 'waylu jiyagol',
-'revdel-restore-deleted' => 'baylitte momtaaɗe',
-'revdel-restore-visible' => 'baylitte jiyotooɗe',
 
 # Merge log
 'revertmerge' => 'Ittu renndino',
@@ -394,7 +386,6 @@ walla [{{fullurl:{{FULLPAGENAME}}|action=edit}} taƴto hello ngoo]</span>.',
 'recentchangeslinked' => 'Bayle toɗɗiiɗe ɗum',
 'recentchangeslinked-toolbox' => 'Bayle toɗɗiiɗe ɗee',
 'recentchangeslinked-title' => 'Bayle toɗɗiiɗe "$1"',
-'recentchangeslinked-noresult' => 'Alaa bayle ngoni e hello jokkiingo ngoo e dumunna joopaaɗo oo.',
 'recentchangeslinked-summary' => 'Ɗuum ko doggol bayle baɗaaɗe sakket e kelle jokkiiɗe e hello heeriingo (walla e terɗe fedde heeriinde).
 Kelle e [[Special:Watchlist|your watchlist]] ko ngoni ko e ""ɓuutol"".',
 'recentchangeslinked-page' => 'Innde hello:',
@@ -603,10 +594,6 @@ Goɗɗe maa cuuɗe e sahaa kala.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Taƴto ndee fiilde huutoraade jaaɓnirgal jiggangal',
-'edit-externally-help' => '(Yah to [//www.mediawiki.org/wiki/Manual:External_editors/ff tinndinoore teelto] ngam ɓeydude humpito)',
-
 # 'all' in various places, this might be different for inflected languages
 'namespacesall' => 'fof',
 'monthsall' => 'fof',
index 9ff82ad..8b43b2c 100644 (file)
@@ -12,6 +12,7 @@
  * @author Cimon Avaro
  * @author Crt
  * @author ElmA
+ * @author Elseweyr
  * @author Geitost
  * @author Harriv
  * @author Hyperborean
@@ -31,6 +32,7 @@
  * @author Pxos
  * @author Samoasambia
  * @author Silvonen
+ * @author Smite
  * @author Snidata
  * @author Str4nd
  * @author Stryn
@@ -76,7 +78,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Kelpaamaton_otsikko' ),
        'Blankpage'                 => array( 'Tyhjä_sivu' ),
        'Block'                     => array( 'Estä' ),
-       'Blockme'                   => array( 'Estä_minut' ),
        'Booksources'               => array( 'Kirjalähteet' ),
        'BrokenRedirects'           => array( 'Virheelliset_ohjaukset', 'Virheelliset_uudelleenohjaukset' ),
        'Categories'                => array( 'Luokat' ),
@@ -88,10 +89,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Luo_tunnus' ),
        'Deadendpages'              => array( 'Linkittömät_sivut' ),
        'DeletedContributions'      => array( 'Poistetut_muokkaukset' ),
-       'Disambiguations'           => array( 'Täsmennyssivut' ),
        'DoubleRedirects'           => array( 'Kaksinkertaiset_ohjaukset', 'Kaksinkertaiset_uudelleenohjaukset' ),
        'EditWatchlist'             => array( 'Muokkaa_tarkkailulistaa' ),
        'Emailuser'                 => array( 'Lähetä_sähköpostia' ),
+       'ExpandTemplates'           => array( 'Mallineiden_laajennus' ),
        'Export'                    => array( 'Vie_sivuja' ),
        'Fewestrevisions'           => array( 'Vähiten_muokatut_sivut' ),
        'FileDuplicateSearch'       => array( 'Kaksoiskappaleiden_haku' ),
@@ -134,6 +135,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Suojatut_sivut' ),
        'Protectedtitles'           => array( 'Suojatut_sivunimet' ),
        'Randompage'                => array( 'Satunnainen_sivu' ),
+       'RandomInCategory'          => array( 'Satunnainen_sivu_luokasta' ),
        'Randomredirect'            => array( 'Satunnainen_ohjaus', 'Satunnainen_uudelleenohjaus' ),
        'Recentchanges'             => array( 'Tuoreet_muutokset' ),
        'Recentchangeslinked'       => array( 'Linkitetyt_muutokset' ),
@@ -227,8 +229,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'keskitetty', 'keski', 'center', 'centre' ),
        'img_framed'                => array( '1', 'kehys', 'kehystetty', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'kehyksetön', 'frameless' ),
-       'img_page'                  => array( '1', 'sivu=$1', 'sivu $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'yläoikea', 'yläoikea=$1', 'yläoikea $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'sivu=$1', 'sivu_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'yläoikea', 'yläoikea=$1', 'yläoikea_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'reunus', 'border' ),
        'img_baseline'              => array( '1', 'perustaso', 'baseline' ),
        'img_sub'                   => array( '1', 'alaindeksi', 'sub' ),
@@ -339,7 +341,6 @@ $messages = array(
 'tog-minordefault' => 'Merkitse kaikki muutokset oletusarvoisesti pieniksi',
 'tog-previewontop' => 'Näytä esikatselu muokkauskentän yläpuolella',
 'tog-previewonfirst' => 'Näytä esikatselu heti, kun muokkaus aloitetaan',
-'tog-nocache' => 'Älä tallenna sivuja selaimen välimuistiin',
 'tog-enotifwatchlistpages' => 'Lähetä sähköpostiviesti tarkkailulistallani olevien sivujen muokkauksista',
 'tog-enotifusertalkpages' => 'Lähetä sähköpostiviesti oman keskustelusivun muokkauksista',
 'tog-enotifminoredits' => 'Lähetä sähköpostiviesti myös pienistä muokkauksista',
@@ -475,7 +476,6 @@ $messages = array(
 'qbedit' => 'Muokkaa',
 'qbpageoptions' => 'Sivuasetukset',
 'qbmyoptions' => 'Omat sivut',
-'qbspecialpages' => 'Toimintosivut',
 'faq' => 'Usein kysytyt kysymykset',
 'faqpage' => 'Project:Usein kysytyt kysymykset',
 
@@ -692,7 +692,6 @@ Siinä saattaa olla yksi tai useampi sellainen merkki, jota ei voi käyttää si
 'perfcached' => 'Nämä 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' => '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' => 'Näytä wikiteksti',
 'viewsource-title' => 'Lähdekoodi sivulle $1',
 'actionthrottled' => 'Toiminto nopeusrajoitettu',
@@ -819,7 +818,7 @@ Salli evästeiden käyttö, ja sen jälkeen kirjaudu sisään juuri luomallasi k
 'passwordtooshort' => 'Salasanan täytyy olla vähintään {{PLURAL:$1|yhden merkin pituinen|$1 merkkiä pitkä}}.',
 'password-name-match' => 'Salasanasi täytyy olla eri kuin käyttäjätunnuksesi.',
 'password-login-forbidden' => 'Tämän käyttäjänimen ja salasanan käyttö on estetty.',
-'mailmypassword' => 'Lähetä uusi salasana sähköpostitse',
+'mailmypassword' => 'Uudista salasana',
 'passwordremindertitle' => 'Uusi väliaikainen salasana {{GRAMMAR:elative|{{SITENAME}}}}',
 'passwordremindertext' => 'Joku IP-osoitteesta $1 pyysi {{GRAMMAR:partitive|{{SITENAME}}}} ($4) lähettämään uuden salasanan. Väliaikainen salasana käyttäjälle $2 on nyt $3. Kirjaudu sisään ja vaihda salasana. Väliaikainen salasana vanhenee {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.
 
@@ -865,7 +864,7 @@ Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.',
 'user-mail-no-body' => 'Sähköpostin sisältö ei ole tarpeeksi pitkä.',
 
 # Change password dialog
-'resetpass' => 'Muuta salasana',
+'changepassword' => 'Salasanan vaihto',
 'resetpass_announce' => 'Kirjauduit sisään sähköpostitse lähetetyllä väliaikaissalasanalla. Päätä sisäänkirjautuminen asettamalla uusi salasana.',
 'resetpass_text' => '<!-- Lisää tekstiä tähän -->',
 'resetpass_header' => 'Muuta tunnuksen salasana',
@@ -886,7 +885,7 @@ Olet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikai
 # Special:PasswordReset
 'passwordreset' => 'Salasanan uudistus',
 'passwordreset-text-one' => 'Täytä tämä lomake uudistaaksesi salasanasi.',
-'passwordreset-text-many' => '{{PLURAL:$1|Täytä yksi kentistä uudistaaksesi salasanasi.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Täytä yksi kentistä, jotta saat väliaikaisen salasanan sähköpostitse.}}',
 'passwordreset-legend' => 'Salasanan uudistus',
 'passwordreset-disabled' => 'Salasanojen uudistaminen ei ole mahdollista tässä wikissä.',
 'passwordreset-emaildisabled' => 'Sähköpostitoiminnot on poistettu käytöstä tässä wikissä.',
@@ -963,7 +962,7 @@ Sinun pitäisi tehdä tämä, jos olet vahingossa jakanut avaimet jonkun kanssa
 'image_tip' => 'Tallennettu tiedosto',
 'media_sample' => 'Esimerkki.ogg',
 'media_tip' => 'Tiedostolinkki',
-'sig_tip' => 'Allekirjoitus aikamerkinnällä',
+'sig_tip' => 'Allekirjoitus aikaleiman kanssa',
 'hr_tip' => 'Vaakasuora viiva',
 
 # Edit pages
@@ -1135,6 +1134,7 @@ Se on jo olemassa.',
 'content-not-allowed-here' => 'Sivun [[$2]] sisältö ei voi olla tyyppiä $1.',
 'editwarning-warning' => 'Tältä sivulta poistuminen saattaa aiheuttaa kaikkien tekemiesi muutosten katoamisen.
 Jos olet kirjautuneena sisään, voit poistaa tämän varoituksen käytöstä asetuksissa osiossa "Muokkaus".',
+'editpage-notsupportedcontentformat-title' => 'Sisällön muotoa ei tueta',
 
 # Content models
 'content-model-wikitext' => 'wikiteksti',
@@ -1176,6 +1176,9 @@ Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputulok
 'cantcreateaccount-text' => "Tunnusten luonti tästä IP-osoitteesta ('''$1''') on estetty. Estäjänä on [[User:$3|$3]].
 
 Käyttäjän $3 antama syy on ''$2''",
+'cantcreateaccount-range-text' => "Tunnusten luominen IP-osoitteista osoitealueella '''\$1''', johon kuuluu myös sinun käyttämäsi IP-osoite ('''\$4'''), on estetty. Eston on asettanut [[User:\$3|\$3]].
+
+Syy estolle on \"\$2\".",
 
 # History pages
 'viewpagelogs' => 'Näytä tämän sivun lokit',
@@ -1192,7 +1195,8 @@ Käyttäjän $3 antama syy on ''$2''",
 'last' => 'edell.',
 'page_first' => 'ensimmäinen sivu',
 'page_last' => 'viimeinen sivu',
-'histlegend' => 'Merkinnät: (nyk.) = eroavaisuudet nykyiseen versioon, (edell.) = eroavaisuudet edelliseen versioon, <span class="minor">p</span> = pieni muutos',
+'histlegend' => "Eroavaisuuksien valinta: Merkitse niiden versioiden valintaympyrät, joita haluat vertailla, ja paina enter tai alhaalla olevaa nappia.<br />
+Selitys: '''({{int:cur}})''' = eroavaisuudet uusimpaan versioon, '''({{int:last}})''' = eroavaisuudet edeltävään versioon, '''{{int:minoreditletter}}''' = pieni muutos.",
 'history-fieldset-title' => 'Selaa muutoshistoriaa',
 'history-show-deleted' => 'Vain poistetut',
 'histfirst' => 'vanhimmat',
@@ -1243,10 +1247,6 @@ Voit silti nähdä tämän muutoksen. Lisätietoja löytyy [{{fullurl:{{#Special
 'revisiondelete' => 'Poista tai palauta versioita',
 'revdelete-nooldid-title' => 'Ei kohdeversiota',
 'revdelete-nooldid-text' => 'Et ole valinnut kohdeversiota tai -versioita.',
-'revdelete-nologtype-title' => 'Lokityyppiä ei annettu',
-'revdelete-nologtype-text' => 'Et ole määritellyt lokin tyyppiä tälle toiminnolle.',
-'revdelete-nologid-title' => 'Epäkelpo lokitapahtuma',
-'revdelete-nologid-text' => 'Joko et ole määritellyt kohdetta lokitapahtumalle tämän toiminnon suorittamiseksi tai määriteltyä tapahtumaa ei ole.',
 'revdelete-no-file' => 'Määritettyä tiedostoa ei ole olemassa.',
 'revdelete-show-file-confirm' => 'Haluatko varmasti nähdä poistetun version tiedostosta <nowiki>$1</nowiki>, joka on tallennettu $2 kello $3?',
 'revdelete-show-file-submit' => 'Kyllä',
@@ -1280,8 +1280,6 @@ $1",
 'logdelete-failure' => "'''Lokin näkyvyyttä ei voitu asettaa:'''
 $1",
 'revdel-restore' => 'muuta näkyvyyttä',
-'revdel-restore-deleted' => 'poistetut versiot',
-'revdel-restore-visible' => 'näkyvät versiot',
 'pagehist' => 'Sivun muutoshistoria',
 'deletedhist' => 'Poistettujen versioiden historia',
 'revdelete-hide-current' => 'Virhe piilotettaessa kohdetta päivämäärällä $1 kello $2: Tämä on uusin versio.
@@ -1359,12 +1357,8 @@ Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Hakutulokset',
 'searchresults-title' => 'Haun tulokset hakusanalle ”$1”',
-'searchresulttext' => 'Lisätietoa {{GRAMMAR:genitive|{{SITENAME}}}} hakutoiminnoista on [[{{MediaWiki:Helppage}}|ohjesivulla]].',
-'searchsubtitle' => "Etsit termillä '''[[:$1]]''' ([[Special:Prefixindex/$1|kaikki sivut alkaen termillä ”$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|viittaukset sivuun ”$1”]])",
-'searchsubtitleinvalid' => 'Haku termeillä $1',
 'toomanymatches' => 'Liian monta osumaa. Kokeile erilaista kyselyä.',
 'titlematches' => 'Osumat sivujen otsikoissa',
-'notitlematches' => 'Hakusanaa ei löytynyt minkään sivun otsikosta',
 'textmatches' => 'Osumat sivujen teksteissä',
 'notextmatches' => 'Hakusanaa ei löytynyt sivujen teksteistä',
 'prevn' => '← {{PLURAL:$1|edellinen|$1 edellistä}}',
@@ -1375,10 +1369,8 @@ Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'viewprevnext' => 'Näytä [$3] kerralla.
 
 $1 {{int:pipe-separator}} $2',
-'searchmenu-legend' => 'Hakuasetukset',
 'searchmenu-exists' => "'''Tässä wikissä on sivu nimellä [[:$1]].'''",
 'searchmenu-new' => "'''Luo sivu ''[[:$1]]'' tähän wikiin.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Selaa sivuja tällä etuliitteellä]]',
 'searchprofile-articles' => 'Sisältösivut',
 'searchprofile-project' => 'Ohje- ja projektisivut',
 'searchprofile-images' => 'Kuvat ja tiedostot',
@@ -1399,21 +1391,16 @@ $1 {{int:pipe-separator}} $2',
 'search-interwiki-default' => 'Tulokset osoitteesta $1:',
 'search-interwiki-more' => '(lisää)',
 'search-relatedarticle' => 'Hae samankaltaisia sivuja',
-'mwsuggest-disable' => 'Älä näytä hakuehdotuksia',
 'searcheverything-enable' => 'Hae kaikista nimiavaruuksista',
 'searchrelated' => 'samankaltainen',
 'searchall' => 'kaikki',
 'showingresults' => "{{PLURAL:$1|'''Yksi''' tulos|'''$1''' tulosta}} tuloksesta '''$2''' alkaen.",
 'showingresultsnum' => "Alla on {{PLURAL:$3|'''Yksi''' hakutulos|'''$3''' hakutulosta}} alkaen '''$2.''' tuloksesta.",
 'showingresultsheader' => "{{PLURAL:$5|Tulokset '''$1'''–'''$3'''|Tulokset '''$1'''–'''$2''' kaikkiaan '''$3''' osuman joukosta}} haulle '''$4'''",
-'nonefound' => "'''Huomautus''': Haku kohdistuu oletuksena vain tiettyihin nimiavaruuksiin.
-Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön (mukaan lukien keskustelut, mallineet jne.) tai kohdista haku haluttuun nimiavaruuteen.",
 'search-nonefound' => 'Hakusi ei tuottanut tulosta.',
-'powersearch' => 'Etsi',
 'powersearch-legend' => 'Laajennettu haku',
 'powersearch-ns' => 'Hae nimiavaruuksista:',
 'powersearch-redir' => 'Luettele ohjaukset',
-'powersearch-field' => 'Etsi',
 'powersearch-togglelabel' => 'Muuta valintaa',
 'powersearch-toggleall' => 'Valitse kaikki',
 'powersearch-togglenone' => 'Ei mitään',
@@ -1426,7 +1413,6 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'mypreferences' => 'Asetukset',
 'prefs-edits' => 'Muokkauksia',
 'prefsnologintext2' => 'Sinun pitää $1 ennen kuin voit muuttaa käyttäjän asetuksia.',
-'changepassword' => 'Salasanan vaihto',
 'prefs-skin' => 'Ulkoasu',
 'skin-preview' => 'esikatselu',
 'datedefault' => 'Ei omaa määrittelyä',
@@ -1449,13 +1435,11 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
 'prefs-email' => 'Sähköpostiasetukset',
 'prefs-rendering' => 'Ulkoasu',
 'saveprefs' => 'Tallenna asetukset',
-'resetprefs' => 'Tyhjennä tallentamattomat muutokset',
 'restoreprefs' => 'Palauta kaikki oletusasetuksiin (kaikissa osioissa)',
 'prefs-editing' => 'Muokkaus',
 'rows' => 'Rivejä',
 'columns' => 'Sarakkeita',
 'searchresultshead' => 'Haku',
-'resultsperpage' => 'Tuloksia sivua kohti',
 'stub-threshold' => '<a href="#" class="stub">Tynkäsivun</a> osoituskynnys',
 'stub-threshold-disabled' => 'Ei käytössä',
 'recentchangesdays' => 'Näytettävien päivien määrä tuoreissa&nbsp;muutoksissa',
@@ -1470,7 +1454,6 @@ Kuka tahansa, joka tietää sen voi lukea tarkkailulistaasi, joten älä paljast
 'localtime' => 'Paikallinen aika',
 'timezoneuseserverdefault' => 'Käytä oletusta ($1)',
 'timezoneuseoffset' => 'Muu (määritä aikaero)',
-'timezoneoffset' => 'Aikaero',
 'servertime' => 'Palvelimen aika',
 'guesstimezone' => 'Utele selaimelta',
 'timezoneregion-africa' => 'Afrikka',
@@ -1537,6 +1520,7 @@ Tämä tieto on julkinen.',
 'prefs-tokenwatchlist' => 'Avain',
 'prefs-diffs' => 'Eroavaisuudet',
 'prefs-help-prefershttps' => 'Tämä asetus tulee voimaan seuraavan sisäänkirjautumisesi yhteydessä.',
+'prefs-tabs-navigation-hint' => 'Vihje: Voit käyttää vasenta ja oikeata nuolinäppäintä liikkumiseen välilehtien välillä.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Sähköpostiosoite vaikuttaa kelvolliselta',
@@ -1723,13 +1707,14 @@ Tämä tieto on julkinen.',
 'recentchanges-label-bot' => 'Tämän muutoksen suoritti botti',
 'recentchanges-label-unpatrolled' => 'Tätä muutosta ei ole vielä tarkastettu',
 'recentchanges-label-plusminus' => 'Sivun koon muutos tavuina',
+'recentchanges-legend-heading' => "'''Selitys:'''",
 'recentchanges-legend-newpage' => '(katso myös [[Special:NewPages|lista uusista sivuista]])',
-'rcnote' => 'Alla on {{PLURAL:$1|yksi muutos|$1 tuoreinta muutosta}} {{PLURAL:$2|yhden päivän|$2 viime päivän}} ajalta $4 kello $5 asti.',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Alla on muutokset <b>$2</b> lähtien. Enintään <b>$1</b> merkintää näytetään.',
 'rclistfrom' => 'Näytä uudet muutokset $1 alkaen',
 'rcshowhideminor' => '$1 pienet muutokset',
 'rcshowhidebots' => '$1 botit',
-'rcshowhideliu' => '$1 kirjautuneet käyttäjät',
+'rcshowhideliu' => '$1 rekisteröityneet käyttäjät',
 'rcshowhideanons' => '$1 anonyymit käyttäjät',
 'rcshowhidepatr' => '$1 tarkastetut muutokset',
 'rcshowhidemine' => '$1 omat muutokset',
@@ -2171,6 +2156,7 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 'ninterwikis' => '$1 {{PLURAL:$1|kielilinkki|kielilinkkiä}}',
 'nlinks' => '$1 {{PLURAL:$1|linkki|linkkiä}}',
 'nmembers' => '$1 {{PLURAL:$1|jäsen|jäsentä}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|jäsen|jäsentä}}',
 'nrevisions' => '$1 {{PLURAL:$1|muutos|muutosta}}',
 'nviews' => '$1 {{PLURAL:$1|lataus|latausta}}',
 'nimagelinks' => 'Käytössä $1 {{PLURAL:$1|sivulla}}',
@@ -2209,10 +2195,9 @@ Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen o
 'protectedpages' => 'Suojatut sivut',
 'protectedpages-indef' => 'Vain ikuisesti suojatut',
 'protectedpages-cascade' => 'Vain tarttuvasti suojatut',
-'protectedpagestext' => 'Seuraavat sivut on suojattu siirrolta tai muokkauksilta',
+'protectedpages-noredirect' => 'Piilota ohjaukset',
 'protectedpagesempty' => 'Mitään sivuja ei ole tällä hetkellä suojattu näillä asetuksilla.',
 'protectedtitles' => 'Suojatut sivunimet',
-'protectedtitlestext' => 'Seuraavien sivujen luonti on estetty suojauksella.',
 'protectedtitlesempty' => 'Ei suojattuja sivunimiä näillä hakuehdoilla.',
 'listusers' => 'Käyttäjälista',
 'listusers-editsonly' => 'Näytä vain käyttäjät, joilla on muokkauksia',
@@ -2254,7 +2239,7 @@ Huomaa, että muut verkkosivut saattavat viitata tiedostoon suoran URL:n avulla,
 Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muutos on kohdistunut. Jälkimmäiset ovat kirjainkokoherkkiä.',
 'logempty' => 'Ei tapahtumia lokissa.',
 'log-title-wildcard' => 'Kohde alkaa merkkijonolla',
-'showhideselectedlogentries' => 'Näytä tai piilota valitut lokimerkinnät',
+'showhideselectedlogentries' => 'Muuta valittujen lokitapahtumien näkyvyyttä',
 
 # Special:AllPages
 'allpages' => 'Kaikki sivut',
@@ -2265,9 +2250,6 @@ Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muut
 'allpagesto' => 'Loppuen sivuun',
 'allarticles' => 'Kaikki sivut',
 'allinnamespace' => 'Kaikki sivut nimiavaruudessa $1',
-'allnotinnamespace' => 'Kaikki sivut, jotka eivät ole nimiavaruudessa $1',
-'allpagesprev' => 'Edellinen',
-'allpagesnext' => 'Seuraava',
 'allpagessubmit' => 'Hae',
 'allpagesprefix' => 'Katkaisuhaku',
 'allpagesbadtitle' => 'Annettu otsikko oli kelvoton tai siinä oli wikien välinen etuliite.',
@@ -2436,7 +2418,7 @@ Ota yhteyttä muokkaajaan:
 sähköposti: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.
+Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla sisään kirjautuneena. Voit myös nollata ilmoitukset kaikille tarkkailemillesi sivuille tarkkailulistallasi.
 
              {{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä
 
@@ -2478,14 +2460,15 @@ Sivulla $2 on lista viimeaikaisista poistoista.',
 'deleteotherreason' => 'Muu syy tai tarkennus',
 'deletereasonotherlist' => 'Muu syy',
 'deletereason-dropdown' => '* Yleiset poistosyyt
-** Tekijänoikeusrikkomus
-** Tekijän poistopyyntö
-** Testisivu
+** Spam tai mainossivu
 ** Vandalismi
+** Tekijänoikeusrikkomus
+** Sivun tekijän pyyntö
 ** Virheellinen ohjaus',
 'delete-edit-reasonlist' => 'Muokkaa poistosyitä',
 'delete-toobig' => 'Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistamista on rajoitettu suorituskykysyistä.',
 'delete-warning-toobig' => 'Tällä sivulla on pitkä muutoshistoria – yli $1 {{PLURAL:$1|versio|versiota}}. Näin suurien muutoshistorioiden poistaminen voi haitata sivuston suorituskykyä.',
+'deleting-backlinks-warning' => "'''Varoitus:''' Sivulle, jota olet poistamassa, johtaa linkkejä muilta sivuilta.",
 
 # Rollback
 'rollback' => 'palauta aiempaan versioon',
@@ -2594,7 +2577,6 @@ Sinulla on kenties käytössä väärä linkki, tai sitten versio on saatettu pa
 'undeletebtn' => 'Palauta',
 'undeletelink' => 'näytä tai palauta',
 'undeleteviewlink' => 'näytä',
-'undeletereset' => 'Tyhjennä',
 'undeleteinvert' => 'Käänteinen valinta',
 'undeletecomment' => 'Syy:',
 'undeletedrevisions' => '{{PLURAL:$1|Yksi versio|$1 versiota}} palautettiin',
@@ -2682,13 +2664,13 @@ Alla on viimeisin estolokin tapahtuma:',
 'block' => 'Estä käyttäjä',
 'unblock' => 'Poista käyttäjän esto',
 'blockip' => 'Estä käyttäjä',
-'blockip-title' => 'Estä käyttäjä',
 'blockip-legend' => 'Estä käyttäjä',
-'blockiptext' => 'Tällä lomakkeella voit estää käyttäjän tai IP-osoitteen muokkausoikeudet. Muokkausoikeuksien poistamiseen [[{{MediaWiki:Policy-url}}|pitää olla syy]], esimerkiksi sivujen vandalisointi. Kirjoita syy siihen varattuun kenttään.<br />Vapaamuotoisen vanhenemisajat noudattavat GNUn standardimuotoa, joka on kuvattu tar-manuaalissa ([http://www.gnu.org/software/tar/manual/html_node/Date-input-formats.html] [EN]), esimerkiksi ”1 hour”, ”2 days”, ”next Wednesday”, ”2014-08-29”.',
+'blockiptext' => 'Tällä toiminnolla voit estää käyttäjätunnusta tai IP-osoitetta muokkaamasta.<br />
+Tällainen muokkausesto pitäisi asettaa vain vandalismin torjumiseksi ja [[{{MediaWiki:Policy-url}}|käytännön]] mukaisesti.
+Kirjoita eston syy alla olevaan kenttään.',
 'ipadressorusername' => 'IP-osoite tai käyttäjätunnus',
 'ipbexpiry' => 'Kesto',
 'ipbreason' => 'Syy',
-'ipbreasonotherlist' => 'Muu syy',
 'ipbreason-dropdown' => '*Yleiset estosyyt
 ** Väärän tiedon lisääminen
 ** Sisällön poistaminen
@@ -2704,8 +2686,6 @@ Alla on viimeisin estolokin tapahtuma:',
 'ipbsubmit' => 'Estä',
 'ipbother' => 'Muu kesto',
 'ipboptions' => '2 tuntia:2 hours,1 päivä:1 day,3 päivää:3 days,1 viikko:1 week,2 viikkoa:2 weeks,1 kuukausi:1 month,3 kuukautta:3 months,6 kuukautta:6 months,1 vuosi:1 year,ikuinen:infinite',
-'ipbotheroption' => 'Muu kesto',
-'ipbotherreason' => 'Muu syy tai tarkennus',
 'ipbhidename' => 'Piilota tunnus muokkauksista ja listauksista',
 'ipbwatchuser' => 'Tarkkaile tämän käyttäjän käyttäjä- ja keskustelusivua',
 'ipb-disableusertalk' => 'Estä käyttäjää muokkaamasta omaa keskustelusivuaan eston aikana',
@@ -2717,6 +2697,7 @@ Alla on viimeisin estolokin tapahtuma:',
 Voimassa olevat estot näkyvät [[Special:BlockList|estolistasta]].',
 'ipb-blockingself' => 'Olet estämässä itseäsi. Oletko varma, että haluat tehdä niin?',
 'ipb-confirmhideuser' => 'Olet estämässä käyttäjää ”piilota käyttäjä” -toiminnon kanssa.  Tämä piilottaa käyttäjän nimen kaikissa luetteloissa ja lokitapahtumissa.  Oletko varma, että haluat tehdä näin?',
+'ipb-confirmaction' => 'Jos olet varma että haluat todella tehdä tämän, tarkista kentän "{{int:ipb-confirm}}" sisältö alhaalta.',
 'ipb-edit-dropdown' => 'Muokkaa estosyitä',
 'ipb-unblock-addr' => 'Poista käyttäjän $1 esto',
 'ipb-unblock' => 'Poista käyttäjän tai IP-osoitteen muokkausesto',
@@ -2794,7 +2775,6 @@ Alla on ote häivytyslokista.',
 'sorbs_create_account_reason' => 'IP-osoitteesi on listattu avoimena välityspalvelimena DNSBL:n mustalla listalla sivustolla {{SITENAME}}. 
 Et voi luoda käyttäjätunnusta.',
 'xffblockreason' => 'Yhteydet IP-osoitteesta, joka löytyy sinun tai käyttämäsi välipalvelimen X-Forwarded-For-otsakkeesta, on estetty. Alkuperäinen estämisen syy oli: $1',
-'cant-block-while-blocked' => 'Et voi estää muita käyttäjiä kun olet itse estetty.',
 'cant-see-hidden-user' => 'Käyttäjä, jota yrität estää on jo estetty ja piilotettu. Koska sinulla ei ole hideuser-oikeutta, et voi nähdä tai muokata käyttäjän estoa.',
 'ipbblocked' => 'Et voi estää tai poistaa estoja muilta käyttäjiltä, koska itse olet estettynä',
 'ipbnounblockself' => 'Et ole oikeutettu poistamaan estoa itseltäsi',
@@ -2847,7 +2827,6 @@ Tämä saattaa olla suuri ja odottamaton muutos suositulle sivulle. Varmista, et
 Näissä tapauksissa sivu täytyy siirtää tai yhdistää käsin, jos se on tarpeen.",
 'movearticle' => 'Siirrettävä sivu:',
 'moveuserpage-warning' => "'''Varoitus:''' Olet siirtämässä käyttäjäsivua. Huomaa, että vain sivu siirretään ja käyttäjää ''ei'' nimetä uudelleen.",
-'movenologin' => 'Et ole kirjautunut sisään',
 'movenologintext' => 'Sinun pitää olla rekisteröitynyt käyttäjä ja [[Special:UserLogin|kirjautua sisään]], jotta voisit siirtää sivun.',
 'movenotallowed' => 'Sinulla ei ole oikeutta siirtää sivuja.',
 'movenotallowedfile' => 'Sinulla ei ole oikeutta siirtää tiedostoja.',
@@ -2862,8 +2841,6 @@ Näissä tapauksissa sivu täytyy siirtää tai yhdistää käsin, jos se on tar
 'movepage-moved-noredirect' => 'Ohjausta ei luotu.',
 'articleexists' => 'Kohdesivu on jo olemassa, tai valittu nimi ei ole sopiva. Ole hyvä ja valitse uusi nimi.',
 'cantmove-titleprotected' => 'Sivua ei voi siirtää tälle nimelle, koska tämän nimisen sivun luonti on estetty.',
-'talkexists' => 'Sivun siirto onnistui, mutta keskustelusivua ei voitu siirtää, koska uuden otsikon alla on jo keskustelusivu. Keskustelusivujen sisältö täytyy yhdistää käsin.',
-'movedto' => 'Siirretty uudelle nimelle',
 'movetalk' => 'Siirrä myös keskustelusivu',
 'move-subpages' => 'Siirrä kaikki alasivut (enintään $1)',
 'move-talk-subpages' => 'Siirrä kaikki keskustelusivun alasivut (enintään $1)',
@@ -3713,15 +3690,10 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
 'exif-urgency-high' => 'Korkea ($1)',
 'exif-urgency-other' => 'Käyttäjän määrittelemä prioriteetti ($1)',
 
-# External editor support
-'edit-externally' => 'Muokkaa tätä tiedostoa ulkoisessa sovelluksessa',
-'edit-externally-help' => '(Katso [https://www.mediawiki.org/wiki/Manual:External_editors ohjeet], jos haluat lisätietoja.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'koko historia',
 'namespacesall' => 'kaikki',
 'monthsall' => 'kaikki',
-'limitall' => 'kaikki',
 
 # Email address confirmation
 'confirmemail' => 'Varmenna sähköpostiosoite',
@@ -3739,7 +3711,6 @@ Postitusohjelma palautti: $1',
 'confirmemail_success' => 'Sähköpostiosoitteesi on nyt varmennettu.
 Voit [[Special:UserLogin|kirjautua sisään]].',
 'confirmemail_loggedin' => 'Sähköpostiosoitteesi on nyt varmennettu.',
-'confirmemail_error' => 'Jokin epäonnistui varmennuksen tallentamisessa.',
 'confirmemail_subject' => '{{GRAMMAR:genitive|{{SITENAME}}}} sähköpostiosoitteen varmennus',
 'confirmemail_body' => 'Joku IP-osoitteesta $1 on rekisteröinyt {{GRAMMAR:inessive|{{SITENAME}}}} tunnuksen $2 tällä sähköpostiosoitteella.
 
@@ -3807,6 +3778,7 @@ Varmista, että haluat luoda sivun uudelleen.",
 
 # Separators for various lists, etc.
 'percent' => '$1&#160;%',
+'quotation-marks' => '"$1"',
 
 # Multipage image navigation
 'imgmultipageprev' => '← edellinen sivu',
@@ -3814,6 +3786,11 @@ Varmista, että haluat luoda sivun uudelleen.",
 'imgmultigo' => 'Siirry',
 'imgmultigoto' => 'Sivu $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(oletuskieli)',
+'img-lang-info' => 'Näytä tämä kuva kielellä $1. $2',
+'img-lang-go' => 'Suorita',
+
 # Table pager
 'ascending_abbrev' => 'nouseva',
 'descending_abbrev' => 'laskeva',
@@ -3895,8 +3872,18 @@ Voit myös muokata listaa [[Special:EditWatchlist|tavalliseen tapaan]].',
 'version-parser-function-hooks' => 'Jäsentimen laajennusfunktiot',
 'version-hook-name' => 'Kytköspisteen nimi',
 'version-hook-subscribedby' => 'Kytkökset',
-'version-version' => '(Versio $1)',
-'version-license' => 'Lisenssi',
+'version-version' => '($1)',
+'version-license' => 'MediaWikin lisenssi',
+'version-ext-license' => 'Lisenssi',
+'version-ext-colheader-name' => 'Laajennusosa',
+'version-ext-colheader-version' => 'Versio',
+'version-ext-colheader-license' => 'Lisenssi',
+'version-ext-colheader-description' => 'Kuvaus',
+'version-ext-colheader-credits' => 'Tekijät',
+'version-license-title' => 'Lisenssi ohjelmalle $1',
+'version-license-not-found' => 'Tälle lisäosalle ei ole saatavissa tarkkoja lisenssitietoja.',
+'version-credits-title' => 'Laajennuksen $1 tekijätiedot',
+'version-credits-not-found' => 'Tälle laajenukselle ei löytynyt yksityiskohtaisia tekijätietoja.',
 'version-poweredby-credits' => "Tämä wiki käyttää '''[https://www.mediawiki.org/ MediaWikiä]'''. Copyright © 2001–$1 $2.",
 'version-poweredby-others' => 'muut',
 'version-poweredby-translators' => 'translatewiki.net-kääntäjät',
@@ -3914,13 +3901,14 @@ Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General P
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Ohjaus tiedostonimen, käyttäjätunnisteen tai versiotunnisteen mukaan',
+'redirect' => 'Ohjaus tiedoston, käyttäjän, sivun tai version tunnisteen mukaan',
 'redirect-legend' => 'Ohjaus tiedostoon tai sivulle',
-'redirect-summary' => 'Tämä toimintosivu ohjaa tiedostoon (tiedostonimen mukaan), sivulle (versiotunnisteen mukaan) tai käyttäjäsivulle (käyttäjätunnisteen mukaan). Käyttö: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] tai [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Tämä toimintosivu ohjaa tiedostoon (tiedostonimen mukaan), sivulle (version numeron tai sivun tunnisteen mukaan) tai käyttäjäsivulle (käyttäjän numeron mukaan). Käyttö: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] tai [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Siirry',
 'redirect-lookup' => 'Hae:',
 'redirect-value' => 'Arvo:',
-'redirect-user' => 'Käyttäjätunniste',
+'redirect-user' => 'Käyttäjän tunnusnumero',
+'redirect-page' => 'Sivun tunnistenumero',
 'redirect-revision' => 'Sivun versio',
 'redirect-file' => 'Tiedostonimi',
 'redirect-not-exists' => 'Arvoa ei löytynyt',
@@ -3974,8 +3962,8 @@ Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General P
 'tag-filter-submit' => 'Suodata',
 'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Merkintä|Merkinnät}}]]: $2)',
 'tags-title' => 'Merkinnät',
-'tags-intro' => "Tämä sivu luetteloi ne merkinnät (''eng.'' tags), joilla ohjelmisto voi merkitä muokkauksia, ja niiden tarkoitukset.",
-'tags-tag' => 'Merkinnimi',
+'tags-intro' => "Tämä sivu luetteloi ne merkinnät eli merkkaukset (''engl.'' tags), joilla ohjelmisto voi merkitä muokkauksia, ja mitä ne tarkoittavat.",
+'tags-tag' => 'Merkinnän nimi',
 'tags-display-header' => 'Näkyvyys muutosluetteloissa',
 'tags-description-header' => 'Täysi kuvaus tarkoituksesta',
 'tags-active-header' => 'Aktiivinen?',
@@ -3987,7 +3975,6 @@ Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General P
 
 # Special:ComparePages
 'comparepages' => 'Vertaile sivuja',
-'compare-selector' => 'Vertaile sivuversioita',
 'compare-page1' => 'Sivu 1',
 'compare-page2' => 'Sivu 2',
 'compare-rev1' => 'Versio 1',
@@ -4115,6 +4102,7 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 'api-error-overwrite' => 'Olemassa olevan tiedoston korvaaminen toisella ei ole sallittua.',
 'api-error-stashfailed' => 'Sisäinen virhe: Väliaikaisen tiedoston tallentaminen epäonnistui.',
 'api-error-publishfailed' => 'Sisäinen virhe: Väliaikaisen tiedoston julkaiseminen epäonnistui.',
+'api-error-stasherror' => 'Tiedostoa ladattaessa tapahtui virhe.',
 'api-error-timeout' => 'Palvelin ei vastannut odotetun ajan kuluessa.',
 'api-error-unclassified' => 'Tapahtui tuntematon virhe.',
 'api-error-unknown-code' => 'Tuntematon virhe: $1.',
@@ -4144,10 +4132,12 @@ Muussa tapauksessa voit käyttää alla olevaa helpompaa lomaketta. Kommenttisi
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|sekunti|sekuntia}}',
 'limitreport-walltime' => 'Todellinen ajankäyttö',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekunti|sekuntia}}',
+'limitreport-ppvisitednodes' => 'Esikääntäjän läpikäymien solmujen määrä',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|tavu|tavua}}',
 'limitreport-templateargumentsize' => 'Mallineen argumenttien koko',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|tavu|tavua}}',
-'limitreport-expansiondepth' => 'Suurin laajennussyvyys',
+'limitreport-expansiondepth' => 'Highest expansion depth',
+'limitreport-expensivefunctioncount' => 'Vaativien parserfunktioiden määrä',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Mallineiden laajennus',
@@ -4159,10 +4149,12 @@ Toisin sanoen melkein kaiken, joka on kaksoisaaltosulkeiden sisällä.',
 'expand_templates_input' => 'Teksti',
 'expand_templates_output' => 'Tulos',
 'expand_templates_xml_output' => 'XML-tuloste',
+'expand_templates_html_output' => 'Raaka HTML-koodi',
 'expand_templates_ok' => 'Laajenna',
 'expand_templates_remove_comments' => 'Poista kommentit',
 'expand_templates_remove_nowiki' => 'Poista <nowiki>-tagit tulosteesta',
 'expand_templates_generate_xml' => 'Näytä XML-jäsennyspuu',
+'expand_templates_generate_rawhtml' => 'Näytä raaka HTML',
 'expand_templates_preview' => 'Esikatselu',
 
 );
index 7c9a726..2d43914 100644 (file)
@@ -120,7 +120,6 @@ $messages = array(
 'qbedit' => 'Mookkaa',
 'qbpageoptions' => 'Tämä sivu',
 'qbmyoptions' => 'Minun inställninkit',
-'qbspecialpages' => 'Spesiaali sivut',
 'faq' => 'Useasti kysytyt kysymykset',
 'faqpage' => 'Project:Useasti kysytyt kysymykset',
 
@@ -170,7 +169,7 @@ $messages = array(
 'jumptonavigation' => 'Navikeerinki',
 'jumptosearch' => 'Hae',
 
-# 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).
+# 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).
 'aboutsite' => 'Asiasta {{GRAMMAR:elative|{{SITENAME}}}}',
 'aboutpage' => 'Project: Tioista',
 'copyrightpage' => '{{ns:project}}:Tekijänoikeuet',
@@ -179,7 +178,6 @@ $messages = array(
 'disclaimers' => 'Vastuuvaphaus',
 'disclaimerpage' => 'Project: Ylheinen varoitus',
 'edithelp' => 'Mookkausapua',
-'edithelppage' => 'Help: Kuinka sivuja mookathaan',
 'helppage' => 'Help: Sisältö',
 'mainpage' => 'Alkusivu',
 'mainpage-description' => 'Alkusivu',
@@ -190,8 +188,6 @@ $messages = array(
 
 'retrievedfrom' => 'Nouettu osoitheesta $1',
 'youhavenewmessages' => 'Sulla on $1 ($2).',
-'newmessageslink' => 'uusia meiliä',
-'newmessagesdifflink' => 'viiminen muutos',
 'editsection' => 'mookkaa',
 'editold' => 'mookkaa',
 'viewsourceold' => 'näytä lähekooti',
@@ -326,8 +322,6 @@ Merkinät: (nyk.) = eroavaisuuet nykyisheen versuunhiin, (eel.) = eroavaisuuet e
 # Revision deletion
 'rev-delundel' => 'näytä/piilota',
 'revdel-restore' => 'muuta näkyvyyttä',
-'revdel-restore-deleted' => 'poistetut muutokset',
-'revdel-restore-visible' => 'Näkyvät muutokset',
 
 # Merge log
 'revertmerge' => 'Pane takashiin yhistäminen',
@@ -418,7 +412,6 @@ $1 sisäle lokaattuja käyttäjiä',
 'recentchangeslinked' => 'Relateerattuja muutoksia',
 'recentchangeslinked-toolbox' => 'Relateerattuja muutoksia',
 'recentchangeslinked-title' => 'Muutokset relatterattuja "$1"',
-'recentchangeslinked-noresult' => 'Ei muutoksia linkathuin sivhuin annetulla aikakauela',
 'recentchangeslinked-summary' => 'Tämä on lista vereksistä muutoksista sivhuin, joihin on linkattu erikoiselta sivulta. Sivut sinun  [[Special:Watchlist|valvontalistala]] on markeerattu lihavala tyylilä',
 'recentchangeslinked-page' => 'Sivun nimi',
 'recentchangeslinked-to' => 'Näytä muutokset sivhuin, jolla sen eestä on linkki annethuun sivhuun',
@@ -456,8 +449,6 @@ Tiot [$2 fiilin kuvvaussivulta] näkyvät tässä alla.',
 # Statistics
 'statistics' => 'Statistiikkaa',
 
-'disambiguationspage' => 'Template:Haarainsivu',
-
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|tavu|tavua}}',
 'nmembers' => '$1 {{PLURAL:$1|jäsen|jäsentä}}',
@@ -678,10 +669,6 @@ Kaikki muut linkit samala rivilä.käsitelthään poikkeuksena, eli toisin sanoe
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Mookkaa tätä fiiliä käyttämällä eksterniä aplikasuunia',
-'edit-externally-help' => '(Katto [//www.mediawiki.org/wiki/Manual:External_editors ohjeet], jos haluat lissää tietoja.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kaikki',
 'namespacesall' => 'kaikki',
index 7ee949f..c485cf5 100644 (file)
@@ -85,7 +85,7 @@ $messages = array(
 'jumptonavigation' => 'Vakatasosoko',
 'jumptosearch' => 'Vaqaqara',
 
-# 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).
+# 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).
 'currentevents' => 'Tukutuku kuruvaki',
 'currentevents-url' => 'Project:Tukutuku kuruvaki',
 'edithelp' => 'Veivukei',
@@ -120,9 +120,6 @@ $messages = array(
 'showdiff' => 'Vakaritaka na veisau',
 'loginreqlink' => 'Curu mai',
 
-# Search results
-'powersearch' => 'Vaqaqara',
-
 # Preferences page
 'mypreferences' => 'Ulutaga taleitaki',
 'searchresultshead' => 'Vaqaqara',
@@ -159,7 +156,7 @@ $messages = array(
 # Special:AllPages
 'allpagessubmit' => 'Lako',
 
-# E-mail user
+# Email user
 'defemailsubject' => '{{SITENAME}} I vola livaliva',
 
 # Watchlist
index d466081..556ed60 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Bólkar' ),
        'Contributions'             => array( 'Brúkaraíkast' ),
        'Deadendpages'              => array( 'Gøtubotns síður' ),
-       'Disambiguations'           => array( 'Síður við fleirfaldum týdningi' ),
        'DoubleRedirects'           => array( 'Tvífaldað ávísing' ),
        'Emailuser'                 => array( 'Send t-post til brúkara' ),
        'Export'                    => array( 'Útflutningssíður' ),
@@ -134,7 +133,6 @@ $messages = array(
 'tog-minordefault' => 'Merk sum standard allar broytingar sum smærri',
 'tog-previewontop' => 'Vís forhondsvísning áðren rættingarkassan',
 'tog-previewonfirst' => 'Vís forskoðan við fyrstu rætting',
-'tog-nocache' => 'Deaktivera síðu "caching" í brovsaranum',
 'tog-enotifwatchlistpages' => 'Send mær teldupost, tá ein síða ella fíla á mínum eftirlitslista er broytt',
 'tog-enotifusertalkpages' => 'Send mær teldubræv, tá mín brúkarasíða er broytt',
 'tog-enotifminoredits' => 'Send mær eisini ein teldupost viðvíkjandi smærri broytingum á síðum og fílum',
@@ -269,7 +267,6 @@ $messages = array(
 'qbedit' => 'Rætta',
 'qbpageoptions' => 'Henda síðan',
 'qbmyoptions' => 'Mínar síður',
-'qbspecialpages' => 'Serstakar síður',
 'faq' => 'OSS',
 'faqpage' => 'Project:OSS',
 
@@ -484,9 +481,6 @@ Ongin frágreiðing varð givin.',
 'perfcachedts' => 'Fylgjandi dáta er "fangað" (cached), og var seinast dagført $1. Í mesta lagi {{PLURAL:$4|eitt úrslit er|$4 úrslit eru}} tøk í cache.',
 'querypage-no-updates' => 'Tað ber í løtuni ikki til at dagføra hesa síðuna.
 Dáta higani verður í løtuni ikki endurnýggjað.',
-'wrong_wfQuery_params' => '↓ Skeiv parametir til wfQuery()<br />
-Funktión: $1<br />
-Fyrispurningur: $2',
 'viewsource' => 'Vís keldu',
 'viewsource-title' => 'Sí keldu fyri $1',
 'actionthrottled' => 'Hendingin kvaldist',
@@ -673,7 +667,7 @@ Um tú velur at skriva tað, so verður tað nýtt til at geva brúkaranum ærun
 'user-mail-no-body' => 'Tú royndi at senda ein teldupost við ongum ella órímiliga stuttum innihaldi.',
 
 # Change password dialog
-'resetpass' => 'Broyt loyniorð',
+'changepassword' => 'Broyt loyniorð',
 'resetpass_announce' => 'Tú ritaði inn við einum fyribils loyniorði, sum tú hevur fingið við telduposti.
 Fyri at gera innritanina lidna, mást tú velja tær eitt nýtt loyniorð her:',
 'resetpass_header' => 'Broyt loyniorði á kontuni',
@@ -1060,9 +1054,6 @@ Tú kanst síggja munin; smálutir eru at finna í [{{fullurl:{{#Special:Log}}/s
 'rev-delundel' => 'skoða/fjal',
 'rev-showdeleted' => 'vís',
 'revisiondelete' => 'Strika/endurnýggja broytingina',
-'revdelete-nologtype-title' => 'Onki slag av loggi er upplýst',
-'revdelete-nologtype-text' => 'Tú hevur ikki útgreinað nakað slag av loggi, fyri at útføra hesa handling á.',
-'revdelete-nologid-title' => 'Ógyldugur loggpostur',
 'revdelete-no-file' => 'Nevnda fíla er ikki til.',
 'revdelete-show-file-confirm' => 'Ert tú vís/ur í, at tú ynskir at síggja eina strikaða endurskoðan av fíluni "<nowiki>$1</nowiki>" frá $2 kl. $3?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1090,8 +1081,6 @@ $1",
 'logdelete-failure' => "'''Tað bar ikki til at broyta loggsjónligheitina:'''
 $1",
 'revdel-restore' => 'broyt sjónligheit',
-'revdel-restore-deleted' => 'strikaðar rættingar',
-'revdel-restore-visible' => 'sjónligar broytingar',
 'pagehist' => 'Síðu søgan',
 'deletedhist' => 'Strikingar søga',
 'revdelete-hide-current' => 'Tað er hendur ein feilur tá luturin skuldi fjalast, luturin er dagfestur $2, kl. $1: Hetta er nýggjast versjónin.
@@ -1161,12 +1150,8 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 # Search results
 'searchresults' => 'Leitúrslit',
 'searchresults-title' => 'Leiti úrslit fyri "$1"',
-'searchresulttext' => 'Ynskir tú fleiri upplýsingar um leiting á {{SITENAME}}, kanst tú skoða [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tú leitaði eftur \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|allar síður sum byrja við "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|allar síður sum leinkja til "$1"]])',
-'searchsubtitleinvalid' => "Tú leitaði eftur '''$1'''",
 'toomanymatches' => 'Alt ov nógvar úrslit vóru funnin, vinarliga royn aftur við nýggjum fyrispurningi',
 'titlematches' => 'Síðu heiti samsvarar',
-'notitlematches' => 'Onki síðuheiti samsvarar',
 'textmatches' => 'Teksturin á síðuni samsvarar',
 'notextmatches' => 'Ongin síðutekstur samsvarar',
 'prevn' => 'undanfarnu {{PLURAL:$1|$1}}',
@@ -1175,10 +1160,8 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 'nextn-title' => 'Næstu $1 {{PLURAL:$1|úrslit|úrslit}}',
 'shown-title' => 'Vís $1 {{PLURAL:$1|úrslit|úrslit}} á hvørjari síðu',
 'viewprevnext' => 'Vís ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Leiti møguleikar',
 'searchmenu-exists' => "'''Tað er longu ein síða sum eitur \"[[:\$1]]\" á hesi wiki.'''",
 'searchmenu-new' => "'''Stovna síðuna \"[[:\$1]]\" á hesi wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Leita í síðum við hesum prefiksinum (byrjan av orðinum)]]',
 'searchprofile-articles' => 'Innihaldssíður',
 'searchprofile-project' => 'Hjálpar og verkætlanar síður',
 'searchprofile-images' => 'Fjølmiðlar - multimedia',
@@ -1199,21 +1182,16 @@ Tryggja tær, at henda broyting fer at varðveita framhaldssøguna hjá síðuni
 'search-interwiki-default' => '$1 úrslit:',
 'search-interwiki-more' => '(meira)',
 'search-relatedarticle' => 'Líknandi',
-'mwsuggest-disable' => 'Slá leitingaruppskot frá',
 'searcheverything-enable' => 'Leita í øllum navnaøkjum',
 'searchrelated' => 'líknandi',
 'searchall' => 'alt',
 'showingresults' => "Niðanfyri standa upp til {{PLURAL:$1|'''$1''' úrslit, sum byrjar|'''$1''' úrslit, sum byrja}} við #<b>$2</b>.",
 'showingresultsnum' => "Niðanfyri standa {{PLURAL:$3|'''1''' úrslit, sum byrjar|'''$3''' úrslit, sum byrja}} við #<b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Úrslit '''$1''' av '''$3'''|Úrslit '''$1 - $2''' av '''$3'''}} fyri '''$4'''",
-'nonefound' => "'''Legg til merkis''': Sum standard verður bert leita í summum navnaøkum.
-Tú kanst royna at brúka ''all:'' sum fyrsta stavilsi fyri at søkja í øllum innihaldi (eisini kjak síður, fyrimyndir, osfr.), ella brúka tað ynskta navnaøkið sum prefiks (forstavilsi).",
 'search-nonefound' => 'Leitingin gav onki úrslit.',
-'powersearch' => 'Leita',
 'powersearch-legend' => 'Víðkað leitan',
 'powersearch-ns' => 'Leita í navnaøkinum:',
 'powersearch-redir' => 'Vís umvegir',
-'powersearch-field' => 'Leita eftir',
 'powersearch-togglelabel' => 'Kanna eftir:',
 'powersearch-toggleall' => 'Alt',
 'powersearch-togglenone' => 'Ongi',
@@ -1227,7 +1205,6 @@ Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og
 'preferences' => 'Innstillingar',
 'mypreferences' => 'Innstillingar',
 'prefs-edits' => 'Tal av rættingum:',
-'changepassword' => 'Broyt loyniorð',
 'prefs-skin' => 'Hamur',
 'skin-preview' => 'Forskoðan',
 'datedefault' => 'Ongi serlig ynskir',
@@ -1250,13 +1227,11 @@ Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og
 'prefs-email' => 'T-post møguleikar',
 'prefs-rendering' => 'Útsjónd',
 'saveprefs' => 'Goym innstillingar',
-'resetprefs' => 'Reinsa ikki goymdar broytingar',
 'restoreprefs' => 'Nullstilla alt til standard innstillingar (í øllum teigum)',
 'prefs-editing' => 'Broyting av greinum',
 'rows' => 'Røð:',
 'columns' => 'Teigar:',
 'searchresultshead' => 'Leita',
-'resultsperpage' => 'Úrslit fyri hvørja síðu:',
 'stub-threshold' => 'Avmarkað til <a href="#" class="stub">stubba leinki</a> formatering (bytes):',
 'stub-threshold-disabled' => 'Er gjørt óvirki',
 'recentchangesdays' => 'Dagar av vísa í seinastu broytingum:',
@@ -1268,7 +1243,6 @@ Legg til merkis, at teirra innihaldsyvirlit av {{SITENAME}} kann vera gamalt og
 'localtime' => 'Lokal tíð:',
 'timezoneuseserverdefault' => 'Nýt wiki standard: ($1)',
 'timezoneuseoffset' => 'Annað (skrivað munin)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Servara tíð:',
 'guesstimezone' => 'Fyll út við kagara',
 'timezoneregion-africa' => 'Afrika',
@@ -1517,7 +1491,6 @@ Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í sam
 'recentchanges-label-bot' => 'Henda rætting varð gjørd av einum botti',
 'recentchanges-label-unpatrolled' => 'Henda rætting er ikki blivin eftirkannað enn',
 'recentchanges-legend-newpage' => '(sí eisini [[Special:NewPages|yvirlit yvir nýggjar síður]])',
-'rcnote' => "Niðanfyri {{PLURAL:$1|stendur '''1''' tann seinasta broytingin|standa '''$1''' tær seinastu broytingarnar}} {{PLURAL:$2|seinasta dagin|seinastu '''$2''' dagarnar}}, frá $5, $4.",
 'rcnotefrom' => "Niðanfyri standa broytingarnar síðani '''$2''', (upp til '''$1''' er sýndar).",
 'rclistfrom' => 'Sýn nýggjar broytingar byrjandi við $1',
 'rcshowhideminor' => '$1 minni rættingar',
@@ -1973,10 +1946,8 @@ Víðaristilling verður nú gjørd til [[$2]].',
 'protectedpages' => 'Friðaðar síður',
 'protectedpages-indef' => 'Bert verjur sum vara óendaligt',
 'protectedpages-cascade' => 'Bert niðurarvaðar verjur',
-'protectedpagestext' => 'Hesar síður eru vardar móti flyting ella rætting',
 'protectedpagesempty' => 'Ongar síður eru í løtuni vardar á henda hátt.',
 'protectedtitles' => 'Vard heiti',
-'protectedtitlestext' => 'Hesi heiti er vard móti upprættan',
 'protectedtitlesempty' => 'Ongi heiti eru í løtuni vard á henda hátt.',
 'listusers' => 'Brúkaralisti',
 'listusers-editsonly' => 'Vís bara brúkarar sum hava gjørt rættingar',
@@ -2023,9 +1994,6 @@ Tú kanst avmarka sýningina við at velja slag av loggi, brúkaranavn (sum er f
 'allpagesto' => 'Vís síður sum enda við:',
 'allarticles' => 'Allar greinir',
 'allinnamespace' => 'Allar síður ($1 navnarúm)',
-'allnotinnamespace' => 'Allar síður (tó ikki í $1 navnarúminum)',
-'allpagesprev' => 'Undanfarnu',
-'allpagesnext' => 'Næstu',
 'allpagessubmit' => 'Far',
 'allpagesprefix' => 'Vís síður við prefiksi:',
 'allpagesbadtitle' => 'Síðuheitið ið tú skrivaði var skeivt ella hevði eitt inter-málsligt ella inter-wiki prefiks.
@@ -2320,7 +2288,6 @@ Goymslan kann til tíðir verða reinsað út (slettað).',
 'undeletebtn' => 'Endurstovna',
 'undeletelink' => 'síggj/endurstovna',
 'undeleteviewlink' => 'Hygg',
-'undeletereset' => 'Endurset',
 'undeleteinvert' => 'Umvent val',
 'undeletecomment' => 'Orsøk:',
 'undeletedrevisions' => '{{PLURAL:$1|1 versjón|$1 versjónir}} endurstovnað/ar',
@@ -2399,12 +2366,10 @@ Tann seinasti sperringarloggurin verður vístur niðanfyri til kunningar:',
 'block' => 'Sperra brúkara',
 'unblock' => 'Tak sperring av brúkara burtur',
 'blockip' => 'Banna brúkara',
-'blockip-title' => 'Sperra brúkara',
 'blockip-legend' => 'Sperra brúkara',
 'ipadressorusername' => 'IP-adressa ella brúkaranavn:',
 'ipbexpiry' => 'Gongur út:',
 'ipbreason' => 'Orsøk:',
-'ipbreasonotherlist' => 'Onnur orsøk',
 'ipbreason-dropdown' => '*Vanligar orsøkir fyri sperring
 ** Innsetan av følskum upplýsingum
 ** Tekur burtur innihald av síðum
@@ -2420,8 +2385,6 @@ Tann seinasti sperringarloggurin verður vístur niðanfyri til kunningar:',
 'ipbsubmit' => 'Banna henda brúkaran',
 'ipbother' => 'Annað tíðarskeið:',
 'ipboptions' => '2 tímar:2 hours, 1 dagur:1 day, 3 dagar:3 days, 1 vika:1 week, 2 vikur:2 weeks, 1 mánaður:1 month, 3 mánaðir:3 months, 6 mánaðir:6 months, 1 ár:1 year, óendaligt:infinite',
-'ipbotheroption' => 'annað',
-'ipbotherreason' => 'Onnur orsøk:',
 'ipbhidename' => 'Fjal brúkaranavn í rættingum og listum',
 'ipbwatchuser' => 'Halt eyga við brúkara og kjaksíðum hjá hesum brúkara',
 'ipb-disableusertalk' => 'Forða hesum brúkaranum at rætta sína egnu kjaksíðu, meðan viðkomandi er sperrað/ur',
@@ -2498,7 +2461,6 @@ Fjalingarloggurin er vístur niðanfyri til kunningar:',
 'sorbsreason' => 'Tín IP adressa er merkt sum ein open proxy í DNSBL sum {{SITENAME}} brúkar.',
 'sorbs_create_account_reason' => 'Tín IP adressa er merkt sum ein open proxy í DNSBL sum {{SITENAME}} brúkar.
 Tú kanst ikki upprætta eina konto.',
-'cant-block-while-blocked' => 'Tú kanst ikki sperra aðrar brúkarar meðan tú sjálv/ur ert sperrað/ur.',
 'ipbblocked' => 'Tú kanst ikki sperra ella taka sperring burtur hjá øðrum brúkarum, tí tú ert sjálv/ur sperrað/ur',
 'ipbnounblockself' => 'Tú hevur ikki loyvi til at taka sperringina burtur hjá tær sjálvum',
 
@@ -2551,7 +2513,6 @@ Hetta kann vera ein ógvuslig og óvæntað flyting av einari vældámdari síð
 Vinarliga tryggja tær, at tú skilur avleiðingarnar av hesum áðrenn tú heldur áfam.",
 'movearticle' => 'Flyt síðu:',
 'moveuserpage-warning' => "'''Ávaring:''' Tú ert í ferð við at flyta eina brúkarasíðu. Legg vinarliga til merkis, at bert síðan verður flutt og brúkarin fær ''ikki'' nýtt navn.",
-'movenologin' => 'Hevur ikki ritað inn',
 'movenologintext' => 'Tú skalt vera ein skrásettur brúkari og [[Special:UserLogin|innritað/ur]] fyri at kunna flyta eina síðu.',
 'movenotallowed' => 'Tú hevur ikki loyvi til at flyta síður.',
 'movenotallowedfile' => 'Tú hevur ikki loyvi til at flyta fílur.',
@@ -2567,9 +2528,6 @@ Vinarliga tryggja tær, at tú skilur avleiðingarnar av hesum áðrenn tú held
 ella er navnið tú valdi ógyldugt.
 Vinarliga vel eitt annað navn.',
 'cantmove-titleprotected' => 'Tú kanst ikki flyta eina síðu til hetta heitið, tí tað nýggja heitið er vart móti upprættan',
-'talkexists' => "'''Tað eydnaðist at flyta sjálva síðuna, men kjaksíðan kundi ikki flytast, tí ein er longu har við tí nýggja heitinum.
-Tú mást samantvinna tær manuelt.'''",
-'movedto' => 'flyt til',
 'movetalk' => 'Flyt kjaksíðuna eisini, um hon er til.',
 'move-subpages' => 'Flyt undirsíður (upp til $1)',
 'move-talk-subpages' => 'Flyt undirsíður hjá kjaksíðum (upp til $1)',
@@ -3060,10 +3018,6 @@ Onnur metadáta verða fjald sum standard.
 
 'exif-urgency-normal' => 'Vanligt ($1)',
 
-# External editor support
-'edit-externally' => 'Rætta hesa fílu við eksternari applikatión',
-'edit-externally-help' => '(Sí [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] fyri meira kunning)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alt',
 'namespacesall' => 'alt',
index adc7715..bd5eca6 100644 (file)
@@ -25,6 +25,7 @@
  * @author Dereckson
  * @author Diti
  * @author Dodoïste
+ * @author Dr Brains
  * @author Drongou
  * @author Elfix
  * @author Enzoreg
  * @author Korrigan
  * @author Krinkle
  * @author Kropotkine 113
+ * @author Kvardek du
  * @author Litlok
  * @author Lloffiwr
  * @author Louperivois
  * @author Ltrlg
  * @author Lucyin
+ * @author Manohisoa
  * @author Mattho69
  * @author McDutchie
  * @author Meithal
@@ -68,6 +71,7 @@
  * @author Nicolas NALLET
  * @author Nicolas Raoul
  * @author Nnemo
+ * @author Nobody
  * @author Od1n
  * @author Omnipaedista
  * @author Peter17
@@ -129,6 +133,11 @@ $namespaceAliases = array(
        'Discussion_Catégorie' => NS_CATEGORY_TALK
 );
 
+$namespaceGenderAliases = array(
+       NS_USER => array( 'male' => 'Utilisateur', 'female' => 'Utilisatrice' ),
+       NS_USER_TALK => array( 'male' => 'Discussion_utilisateur', 'female' => 'Discussion_utilisatrice' ),
+);
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'Utilisateurs_actifs', 'UtilisateursActifs' ),
        'Allmessages'               => array( 'Messages_système', 'Messages_systeme', 'Messagessystème', 'Messagessysteme' ),
@@ -137,20 +146,20 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'MauvaisTitre', 'Mauvais_titre' ),
        'Blankpage'                 => array( 'Page_blanche', 'PageBlanche' ),
        'Block'                     => array( 'Bloquer', 'Blocage' ),
-       'Blockme'                   => array( 'Bloquez-moi', 'Bloquezmoi' ),
        'Booksources'               => array( 'Ouvrages_de_référence', 'Ouvrages_de_reference', 'Ouvragesderéférence', 'Ouvragesdereference', 'Recherche_ISBN', 'Recherche_isbn', 'RechercheISBN', 'Rechercheisbn' ),
        'BrokenRedirects'           => array( 'Redirections_cassées', 'RedirectionCassées', 'Redirections_cassees', 'RedirectionsCassees' ),
        'Categories'                => array( 'Catégories' ),
        'ChangeEmail'               => array( 'ChangerCouriel', 'Changer_courrielw' ),
        'ChangePassword'            => array( 'Changement_du_mot_de_passe', 'ChangementDuMotDePasse' ),
+       'ComparePages'              => array( 'Comparer_des_pages' ),
        'Confirmemail'              => array( 'Confirmer_l\'adresse_de_contact', 'Confirmer_le_courriel', 'ConfirmerLeCourriel' ),
        'CreateAccount'             => array( 'Créer_un_compte', 'CréerUnCompte', 'CréerCompte' ),
        'Deadendpages'              => array( 'Pages_en_impasse', 'PagesEnImpasse' ),
        'DeletedContributions'      => array( 'Contributions_supprimées', 'ContributionsSupprimées', 'ContributionSupprimees' ),
-       'Disambiguations'           => array( 'Homonymies', 'Homonymie', 'Pages_d\'homonymie' ),
        'DoubleRedirects'           => array( 'Doubles_redirections', 'DoublesRedirections', 'Redirections_doubles', 'RedirectionsDoubles' ),
        'EditWatchlist'             => array( 'Éditer_Liste_de_suivi', 'ÉditerListeDeSuivi' ),
        'Emailuser'                 => array( 'Envoyer_un_courriel', 'EnvoyerUnCourriel', 'Courriel', 'Envoyer_un_e-mail', 'EnvoyerUnEMail', 'E-mail', 'EMail' ),
+       'ExpandTemplates'           => array( 'ExpansionDesModèles' ),
        'Export'                    => array( 'Exporter', 'Exportation' ),
        'Fewestrevisions'           => array( 'Pages_les_moins_modifiées', 'PagesLesMoinsModifiées', 'Pages_les_moins_modifiees', 'PagesLesMoinsModifiees', 'Les_moins_modifiés', 'LesMoinsModifiés', 'Les_moins_modifies', 'LesMoinsModifies' ),
        'FileDuplicateSearch'       => array( 'Recherche_fichier_en_double', 'RechercheFichierEnDouble' ),
@@ -183,6 +192,7 @@ $specialPageAliases = array(
        'Mytalk'                    => array( 'Mes_discussions', 'Mesdiscussions' ),
        'Newimages'                 => array( 'Nouveaux_fichiers', 'NouveauxFichiers', 'Nouvelles_images', 'NouvellesImages' ),
        'Newpages'                  => array( 'Nouvelles_pages', 'NouvellesPages', 'Pages_récentes', 'PagesRécentes', 'Pages_recentes', 'PagesRecentes' ),
+       'PagesWithProp'             => array( 'Pages_avec_la_propriété' ),
        'PasswordReset'             => array( 'Réinitialisation_du_mot_de_passe', 'RéinitialisationDuMotDePasse' ),
        'PermanentLink'             => array( 'LienPermanent', 'Lien_permanent' ),
        'Popularpages'              => array( 'Pages_les_plus_visitées', 'Pages_les_plus_visitees', 'Pageslesplusvisitées', 'Pageslesplusvisitees' ),
@@ -191,9 +201,11 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Pages_protégées', 'PagesProtégées', 'Pages_protegees', 'PagesProtegees' ),
        'Protectedtitles'           => array( 'Titres_protégés', 'TitresProtégés', 'Titres_proteges', 'TitresProteges' ),
        'Randompage'                => array( 'Page_au_hasard', 'PageAuHasard', 'Au_hasard', 'AuHasard', 'Aléatoire', 'Aleatoire' ),
+       'RandomInCategory'          => array( 'Page_au_hasard_dans_une_catégorie' ),
        'Randomredirect'            => array( 'Redirection_au_hasard', 'Redirect_au_hasard', 'Redirectionauhasard', 'Redirectauhasard', 'Redirection_aléatoire', 'Redirect_aléatoire', 'Redirectionaléatoire', 'Redirectaléatoire', 'Redirection_aleatoire', 'Redirect_aleatoire', 'Redirectionaleatoire', 'Redirectaleatoire' ),
        'Recentchanges'             => array( 'Modifications_récentes', 'Modifications_recentes', 'ModificationsRécentes', 'ModificationsRecentes' ),
        'Recentchangeslinked'       => array( 'Suivi_des_liens', 'SuiviDesLiens' ),
+       'Redirect'                  => array( 'Redirection' ),
        'Revisiondelete'            => array( 'Versions_supprimées', 'Versions_supprimees', 'Versionsupprimées', 'Versionsupprimees' ),
        'Search'                    => array( 'Recherche', 'Rechercher', 'Chercher' ),
        'Shortpages'                => array( 'Pages_courtes', 'PagesCourtes' ),
@@ -273,6 +285,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'NOMPAGECOMPLETX', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'NOMSOUSPAGE', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'NOMSOUSPAGEX', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'NOMPAGERACINE', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'NOMPAGERACINEX', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'NOMBASEDEPAGE', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'NOMBASEDEPAGEX', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'NOMPAGEDISCUSSION', 'TALKPAGENAME' ),
@@ -287,9 +301,10 @@ $magicWords = array(
        'img_center'                => array( '1', 'centré', 'center', 'centre' ),
        'img_framed'                => array( '1', 'cadre', 'encadré', 'encadre', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'sans_cadre', 'non_encadré', 'non_encadre', 'frameless' ),
-       'img_upright'               => array( '1', 'redresse', 'redresse=$1', 'redresse $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_lang'                  => array( '1', 'langue=$1', 'lang=$1' ),
+       'img_upright'               => array( '1', 'redresse', 'redresse=$1', 'redresse_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'bordure', 'border' ),
-       'img_baseline'              => array( '1', 'ligne_de_base', 'base', 'baseline' ),
+       'img_baseline'              => array( '1', 'ligne-de-base', 'base', 'baseline' ),
        'img_sub'                   => array( '1', 'indice', 'ind', 'sub' ),
        'img_super'                 => array( '1', 'exposant', 'exp', 'super', 'sup' ),
        'img_top'                   => array( '1', 'haut', 'top' ),
@@ -298,12 +313,14 @@ $magicWords = array(
        'img_bottom'                => array( '1', 'bas', 'bottom' ),
        'img_text_bottom'           => array( '1', 'bas-texte', 'bas-txt', 'text-bottom' ),
        'img_link'                  => array( '1', 'lien=$1', 'link=$1' ),
+       'img_class'                 => array( '1', 'classe=$1', 'class=$1' ),
        'sitename'                  => array( '1', 'NOMSITE', 'SITENAME' ),
        'ns'                        => array( '0', 'ESPACEN:', 'NS:' ),
        'nse'                       => array( '0', 'ESPACENX:', 'NSE:' ),
        'localurl'                  => array( '0', 'URLLOCALE:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'URLLOCALEX:', 'LOCALURLE:' ),
        'articlepath'               => array( '0', 'CHEMINARTICLE', 'ARTICLEPATH' ),
+       'pageid'                    => array( '0', 'IDPAGE', 'PAGEID' ),
        'server'                    => array( '0', 'SERVEUR', 'SERVER' ),
        'servername'                => array( '0', 'NOMSERVEUR', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'CHEMINSCRIPT', 'SCRIPTPATH' ),
@@ -327,6 +344,8 @@ $magicWords = array(
        'plural'                    => array( '0', 'PLURIEL:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'URLCOMPLETE:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'URLCOMPLETEX:', 'FULLURLE:' ),
+       'canonicalurl'              => array( '0', 'URLCANONIQUE:', 'CANONICALURL:' ),
+       'canonicalurle'             => array( '0', 'URLCANONIQUEX:', 'CANONICALURLE:' ),
        'lcfirst'                   => array( '0', 'INITMINUS:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'INITMAJUS:', 'INITCAPIT:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'MINUS:', 'LC:' ),
@@ -334,6 +353,7 @@ $magicWords = array(
        'raw'                       => array( '0', 'BRUT:', 'RAW:' ),
        'displaytitle'              => array( '1', 'AFFICHERTITRE', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'BRUT', 'B', 'R' ),
+       'nocommafysuffix'           => array( '0', 'SANSSEP', 'NOSEP' ),
        'newsectionlink'            => array( '1', '__LIENNOUVELLESECTION__', '__NEWSECTIONLINK__' ),
        'nonewsectionlink'          => array( '1', '__AUCUNLIENNOUVELLESECTION__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'VERSIONACTUELLE', 'CURRENTVERSION' ),
@@ -350,6 +370,7 @@ $magicWords = array(
        'padleft'                   => array( '0', 'BOURRAGEGAUCHE', 'BOURREGAUCHE', 'PADLEFT' ),
        'padright'                  => array( '0', 'BOURRAGEDROITE', 'BOURREDROITE', 'PADRIGHT' ),
        'special'                   => array( '0', 'spécial', 'special' ),
+       'speciale'                  => array( '0', 'spéciale', 'speciale' ),
        'defaultsort'               => array( '1', 'CLEFDETRI:', 'CLEDETRI:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                  => array( '0', 'CHEMIN:', 'FILEPATH:' ),
        'tag'                       => array( '0', 'balise', 'tag' ),
@@ -362,8 +383,11 @@ $magicWords = array(
        'protectionlevel'           => array( '1', 'NIVEAUDEPROTECTION', 'PROTECTIONLEVEL' ),
        'url_path'                  => array( '0', 'CHEMIN', 'PATH' ),
        'url_query'                 => array( '0', 'QUESTION', 'QUERY' ),
+       'defaultsort_noerror'       => array( '0', 'sanserreur', 'noerror' ),
+       'defaultsort_noreplace'     => array( '0', 'sansremplacer', 'noreplace' ),
        'pagesincategory_all'       => array( '0', 'tous', 'all' ),
-       'pagesincategory_files'     => array( '0', 'fichier', 'files' ),
+       'pagesincategory_subcats'   => array( '0', 'souscats', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'fichiers', 'files' ),
 );
 
 $bookstoreList = array(
@@ -414,7 +438,6 @@ $messages = array(
 'tog-minordefault' => 'Marquer mes modifications comme mineures par défaut',
 'tog-previewontop' => 'Afficher la prévisualisation au-dessus de la zone de modification',
 'tog-previewonfirst' => 'Afficher la prévisualisation lors de la première modification',
-'tog-nocache' => 'Désactiver le cache des pages par le navigateur',
 'tog-enotifwatchlistpages' => "M'avertir par courriel lorsqu'une page ou un fichier de ma liste de suivi est modifiée",
 'tog-enotifusertalkpages' => "M'avertir par courriel si ma page de discussion est modifiée",
 'tog-enotifminoredits' => "M'avertir par courriel pour les modifications mineures de pages ou de fichiers également",
@@ -550,7 +573,6 @@ $messages = array(
 'qbedit' => 'Modifier',
 'qbpageoptions' => 'Cette page',
 'qbmyoptions' => 'Mes pages',
-'qbspecialpages' => 'Pages spéciales',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -765,9 +787,6 @@ Aucune explication n'a été fournie.",
 'perfcached' => 'Les données suivantes sont en cache et peuvent ne pas être à jour. Un maximum de {{PLURAL:$1|un résultat|$1 résultats}} est disponible dans le cache.',
 'perfcachedts' => 'Les données suivantes sont en cache et ont été mises à jour pour la dernière fois le $1. Un maximum de {{PLURAL:$4|un résultat est disponible|$4 résultats sont disponibles}} dans le cache.',
 'querypage-no-updates' => 'Les mises à jour pour cette page sont actuellement désactivées. Les données ci-dessous ne sont pas mises à jour.',
-'wrong_wfQuery_params' => 'Paramètres incorrects sur wfQuery()<br />
-Fonction : $1<br />
-Requête : $2',
 'viewsource' => 'Voir le texte source',
 'viewsource-title' => 'Voir la source de $1',
 'actionthrottled' => 'Action limitée',
@@ -895,7 +914,7 @@ Vérifiez l'orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]
 'passwordtooshort' => 'Votre mot de passe doit contenir au moins $1 caractère{{PLURAL:$1||s}}.',
 'password-name-match' => "Votre mot de passe doit être différent de votre nom d'utilisateur.",
 'password-login-forbidden' => "L'utilisation de ce nom d'utilisateur et de ce mot de passe a été interdite.",
-'mailmypassword' => 'Recevoir un nouveau mot de passe par courriel',
+'mailmypassword' => 'Réinitialiser le mot de passe',
 'passwordremindertitle' => 'Nouveau mot de passe temporaire pour {{SITENAME}}',
 'passwordremindertext' => "Quelqu'un (probablement vous, ayant l'adresse IP $1) a demandé un nouveau mot de
 passe pour {{SITENAME}} ($4 ). Un mot de passe temporaire a été créé pour
@@ -946,7 +965,7 @@ Si vous décidez de le fournir, il sera utilisé pour attribuer à l’utilisate
 'user-mail-no-body' => "Essai d'envoi d'un courriel avec un corps vide ou déraisonnablement court.",
 
 # Change password dialog
-'resetpass' => 'Changer de mot de passe',
+'changepassword' => 'Changer de mot de passe',
 'resetpass_announce' => "Vous vous êtes enregistré{{GENDER:||e|(e)}} avec un mot de passe temporaire envoyé par courriel. Pour terminer l'enregistrement, vous devez entrer un nouveau mot de passe ici :",
 'resetpass_text' => '<!-- Ajoutez le texte ici -->',
 'resetpass_header' => 'Changer le mot de passe du compte',
@@ -967,7 +986,7 @@ Vous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mo
 # Special:PasswordReset
 'passwordreset' => 'Remise à zéro du mot de passe',
 'passwordreset-text-one' => 'Remplissez ce formulaire pour réinitialiser votre mot de passe.',
-'passwordreset-text-many' => '{{PLURAL:$1|Remplissez un des champs pour réinitialiser votre mot de passe.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Remplissez un des champs pour recevoir un mot de passe temporaire par courriel.}}',
 'passwordreset-legend' => 'Remise à zéro du mot de passe',
 'passwordreset-disabled' => 'La réinitialisation des mots de passe a été désactivée sur ce wiki.',
 'passwordreset-emaildisabled' => 'Les fonctionnalités e-mail ont été désactivées sur ce wiki.',
@@ -1104,7 +1123,7 @@ Il peut être modifié sur la page ''[[Special:ChangePassword|Changement de mot
 Pour créer cette page, entrez votre texte dans la boîte ci-dessous (vous pouvez consulter [[{{MediaWiki:Helppage}}|la page d'aide]] pour plus d'informations).
 Si vous êtes arrivé{{GENDER:||e|(e)}} ici par erreur, cliquez sur le bouton '''retour''' de votre navigateur.",
 'anontalkpagetext' => "---- ''Vous êtes sur la page de discussion d'un utilisateur anonyme qui n'a pas encore créé de compte ou qui n'en utilise pas. Pour cette raison, nous devons utiliser son adresse IP pour l'identifier. Une adresse IP peut être partagée par plusieurs utilisateurs. Si vous êtes un{{GENDER:||e|}} utilisat{{GENDER:|eur|rice|eur}} anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:UserLogin/signup|créer un compte]] ou [[Special:UserLogin|vous connecter]] afin d'éviter toute confusion future avec d'autres contributeurs anonymes.''",
-'noarticletext' => 'Il n\'y a pour l\'instant aucun texte sur cette page.
+'noarticletext' => 'Il n’y a pour l’instant aucun texte sur cette page.
 Vous pouvez [[Special:Search/{{PAGENAME}}|lancer une recherche sur ce titre]] dans les autres pages,
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les opérations liées]
 ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} créer cette page]</span>.',
@@ -1221,6 +1240,8 @@ Elle existe déjà.",
 'content-not-allowed-here' => 'Le contenu « $1 » n’est pas autorisé sur la page [[$2]]',
 'editwarning-warning' => 'Quitter cette page vous fera perdre toutes les modifications que vous avez faites.
 Si vous êtes connecté, vous pouvez désactiver cet avertissement dans la section « Modification » de vos préférences.',
+'editpage-notsupportedcontentformat-title' => 'Format de contenu non pris en charge',
+'editpage-notsupportedcontentformat-text' => "Le format de contenu $1 n'est pas pris en charge par le modèle de contenu $2 .",
 
 # Content models
 'content-model-wikitext' => 'wikitexte',
@@ -1260,6 +1281,9 @@ Il devrait y avoir moins de $2 appel{{PLURAL:$2||s}}, alors qu'il y en a mainten
 'cantcreateaccount-text' => "La création de compte depuis cette adresse IP (<b>$1</b>) a été bloquée par [[User:$3|$3]].
 
 La raison donnée était ''$2''.",
+'cantcreateaccount-range-text' => "La création de compte depuis les adresses IP dans la plage '''$1''', qui comprend votre adresse IP ('''$4'''), ont été bloquées par [[User:$3|$3]].
+
+Le motif fourni par $3 est ''$2''",
 
 # History pages
 'viewpagelogs' => 'Voir les opérations sur cette page',
@@ -1327,10 +1351,6 @@ Vous pouvez voir ce diff ; des détails sont disponibles dans le [{{fullurl:{{#S
 'revisiondelete' => 'Supprimer ou restaurer des événements',
 'revdelete-nooldid-title' => 'Version cible non valide',
 'revdelete-nooldid-text' => "Vous n'avez pas précisé la version cible de cette fonction, elle n'existe pas, ou il s'agit de la version actuelle.",
-'revdelete-nologtype-title' => 'Aucun type de journal spécifié',
-'revdelete-nologtype-text' => "Vous n'avez pas spécifié un type de journal sur lequel cette action doit être réalisée.",
-'revdelete-nologid-title' => 'Entrée du journal invalide',
-'revdelete-nologid-text' => "Vous n'avez pas spécifié une entrée du journal sur laquelle cette action doit être effectuée, ou alors l'événement spécifié n'existe pas.",
 'revdelete-no-file' => "Le fichier spécifié n'existe pas.",
 'revdelete-show-file-confirm' => 'Êtes-vous sûr de vouloir voir la révision supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ?',
 'revdelete-show-file-submit' => 'Oui',
@@ -1364,8 +1384,6 @@ $1",
 'logdelete-failure' => "'''La visibilité du journal n'a pas pu être définie :'''
 $1",
 'revdel-restore' => 'modifier la visibilité',
-'revdel-restore-deleted' => 'révisions supprimées',
-'revdel-restore-visible' => 'révisions visibles',
 'pagehist' => 'Historique de la page',
 'deletedhist' => 'Historique supprimé',
 'revdelete-hide-current' => "Erreur lors de la suppression de l'élément daté du $1 à $2 : il est la révision courante.
@@ -1389,8 +1407,8 @@ Vérifiez les journaux.",
 'revdelete-offender' => 'Auteur de la révision :',
 
 # Suppression log
-'suppressionlog' => 'Journal des suppressions',
-'suppressionlogtext' => 'Voici la liste des suppressions et des blocages qui portent sur du contenu caché aux administrateurs.
+'suppressionlog' => 'Journal des masquages',
+'suppressionlogtext' => 'Voici la liste des masquages et des blocages qui portent sur du contenu caché aux administrateurs.
 Voir la [[Special:BlockList|liste des blocages]] pour la liste des bannissements et des blocages actuellement opérationnels.',
 
 # History merging
@@ -1442,12 +1460,8 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 # Search results
 'searchresults' => 'Résultats de la recherche',
 'searchresults-title' => 'Résultats de recherche pour « $1 »',
-'searchresulttext' => "Pour plus d'informations sur la recherche dans {{SITENAME}}, voir [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => "Vous avez recherché « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes les pages commençant par « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes les pages qui ont un lien vers « $1 »]])",
-'searchsubtitleinvalid' => "Vous avez recherché « '''$1''' »",
 'toomanymatches' => "Un trop grand nombre d'occurrences a été renvoyé, veuillez soumettre une requête différente.",
 'titlematches' => 'Correspondances dans les titres des pages',
-'notitlematches' => 'Aucun titre de page ne correspond à la recherche.',
 'textmatches' => 'Correspondances dans le texte des pages',
 'notextmatches' => 'Aucun texte de page ne correspond à la recherche.',
 'prevn' => '{{PLURAL:$1|précédente|$1 précédentes}}',
@@ -1456,10 +1470,8 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'nextn-title' => '$1 {{PLURAL:$1|résultat suivant|résultats suivants}}',
 'shown-title' => 'Afficher $1 résultat{{PLURAL:$1||s}} par page',
 'viewprevnext' => 'Voir ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Options de recherche',
 'searchmenu-exists' => "'''Il existe une page nommée « [[:$1]] » sur ce wiki'''",
 'searchmenu-new' => "'''Créer la page « [[:$1|$1]] » sur ce wiki !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rechercher les pages commençant par ce préfixe]]',
 'searchprofile-articles' => 'Pages de contenu',
 'searchprofile-project' => "Pages d'aide et de projet",
 'searchprofile-images' => 'Multimédia',
@@ -1480,21 +1492,16 @@ Vous pouvez trouver des détails dans le [{{fullurl:{{#Special:Log}}/delete|page
 'search-interwiki-default' => 'Résultats sur $1 :',
 'search-interwiki-more' => '(plus)',
 'search-relatedarticle' => 'Reliés',
-'mwsuggest-disable' => 'Désactiver les suggestions de recherche',
 'searcheverything-enable' => 'Rechercher dans tous les espaces de noms',
 'searchrelated' => 'reliés',
 'searchall' => 'tout',
 'showingresults' => 'Affichage de <b>$1</b> résultat{{PLURAL:$1||s}} à partir du n°<b>$2</b>.',
 'showingresultsnum' => 'Affichage de <b>$3</b> résultat{{PLURAL:$3||s}} à partir du n°<b>$2</b>.',
 'showingresultsheader' => "{{PLURAL:$5|Résultat '''$1'''|Résultats '''$1–$2'''}} de '''$3''' pour '''$4'''",
-'nonefound' => "'''Note''' : par défaut, seuls certains espaces de noms sont utilisés pour la recherche.
-Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (y compris les pages de discussion, les modèles, etc.) ou bien utilisez l'espace de noms souhaité comme préfixe.",
 'search-nonefound' => "Il n'y a aucun résultat correspondant à la requête.",
-'powersearch' => 'Rechercher',
 'powersearch-legend' => 'Recherche avancée',
 'powersearch-ns' => 'Rechercher dans les espaces de noms :',
 'powersearch-redir' => 'Afficher les redirections',
-'powersearch-field' => 'Rechercher',
 'powersearch-togglelabel' => 'Cocher :',
 'powersearch-toggleall' => 'Tout',
 'powersearch-togglenone' => 'Aucune',
@@ -1507,7 +1514,6 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
 'mypreferences' => 'Préférences',
 'prefs-edits' => 'Nombre de modifications :',
 'prefsnologintext2' => 'Veuillez $1 pour définir les préférences utilisateur.',
-'changepassword' => 'Changer de mot de passe',
 'prefs-skin' => 'Habillage',
 'skin-preview' => 'Prévisualiser',
 'datedefault' => 'Aucune préférence',
@@ -1530,13 +1536,11 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
 'prefs-email' => 'Options des courriels',
 'prefs-rendering' => 'Apparence',
 'saveprefs' => 'Enregistrer les préférences',
-'resetprefs' => 'Rétablir les préférences',
 'restoreprefs' => 'Restaurer tous les paramètres par défaut (dans toutes les sections)',
 'prefs-editing' => 'Modification',
 'rows' => 'Rangées :',
 'columns' => 'Colonnes :',
 'searchresultshead' => 'Filtrer avec cette valeur',
-'resultsperpage' => 'Nombre de réponses par page :',
 'stub-threshold' => 'Limite supérieure pour les <a href="#" class="stub">liens vers les ébauches</a> (octets) :',
 'stub-threshold-disabled' => 'Désactivé',
 'recentchangesdays' => 'Nombre de jours à afficher dans les modifications récentes :',
@@ -1551,7 +1555,6 @@ Toute personne la connaissant pourra lire votre liste de suivi, ne la communique
 'localtime' => 'Heure locale :',
 'timezoneuseserverdefault' => 'Utiliser la valeur par défaut du wiki ($1)',
 'timezoneuseoffset' => 'Autre (spécifier le décalage)',
-'timezoneoffset' => 'Décalage horaire¹ :',
 'servertime' => 'Heure du serveur :',
 'guesstimezone' => 'Utiliser la valeur du navigateur',
 'timezoneregion-africa' => 'Afrique',
@@ -1620,6 +1623,7 @@ Cette information sera publique.',
 'prefs-tokenwatchlist' => 'Jeton',
 'prefs-diffs' => 'Différences',
 'prefs-help-prefershttps' => 'Cette préférence sera effective lors de votre prochaine connexion.',
+'prefs-tabs-navigation-hint' => 'Astuce : Vous pouvez utiliser les flèches de gauche et de droite pour naviguer entre les onglets.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Semble valide',
@@ -1802,18 +1806,18 @@ Cette information sera publique.',
 'recentchanges-noresult' => 'Aucune modification correspondant à ces critères sur la période indiquée.',
 'recentchanges-feed-description' => 'Suivre les dernières modifications de ce wiki dans un flux.',
 'recentchanges-label-newpage' => 'Cette modification a créé une nouvelle page',
-'recentchanges-label-minor' => 'Cette modification est mineure',
+'recentchanges-label-minor' => 'Cette modification est mineure.',
 'recentchanges-label-bot' => 'Cette modification a été effectuée par un robot.',
 'recentchanges-label-unpatrolled' => "Cette modification n'a pas encore été patrouillée.",
-'recentchanges-label-plusminus' => 'La taille de la page a changé de ce nombre d’octets',
-'recentchanges-legend-newpage' => '(voir aussi la [[Special:NewPages|liste des nouvelles pages]])',
+'recentchanges-label-plusminus' => 'La taille de la page a changé de ce nombre d’octets.',
+'recentchanges-legend-heading' => "'''Légende :'''",
+'recentchanges-legend-newpage' => '(voir aussi la [[Special:NewPages|liste des nouvelles pages]]).',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Voici {{PLURAL:$1|la dernière modification effectuée|les $1 dernières modifications effectuées}} durant {{PLURAL:$2|la dernière journée|les <b>$2</b> derniers jours}} jusqu'à $5 le $4.",
 'rcnotefrom' => "Voici les modifications effectuées depuis le '''$2''' ('''$1''' au maximum).",
 'rclistfrom' => 'Afficher les nouvelles modifications depuis le $1.',
 'rcshowhideminor' => '$1 les modifications mineures',
 'rcshowhidebots' => '$1 les robots',
-'rcshowhideliu' => '$1 les utilisateurs inscrits',
+'rcshowhideliu' => '$1 les utilisateurs enregistrés',
 'rcshowhideanons' => '$1 les utilisateurs anonymes',
 'rcshowhidepatr' => '$1 les modifications surveillées',
 'rcshowhidemine' => '$1 mes modifications',
@@ -1930,6 +1934,8 @@ Si vous voulez toujours importer votre fichier, veuillez revenir en arrière et
 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-notitle' => "Un fichier identique à ce fichier a déjà été supprimé ainsi que le titre. 
+Vous devriez demander à quelqu'un la possibilité de vérifier le journal de ce fichier supprimé afin d'examiner la situation  avant de l'importer à nouveau.",
 'uploadwarning' => 'Attention !',
 'uploadwarning-text' => 'Modifiez la description du fichier et essayez de nouveau.',
 'savefile' => 'Sauvegarder le fichier',
@@ -2274,6 +2280,7 @@ Les entrées <del>barrées</del> ont été résolues.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|page liée|pages liées}}',
 'nmembers' => '$1 membre{{PLURAL:$1||s}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membre|membres}}',
 'nrevisions' => '$1 version{{PLURAL:$1||s}}',
 'nviews' => '$1 consultation{{PLURAL:$1||s}}',
 'nimagelinks' => 'Utilisé sur $1 {{PLURAL:$1|page|pages}}',
@@ -2312,10 +2319,9 @@ Les entrées <del>barrées</del> ont été résolues.',
 '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.',
+'protectedpages-noredirect' => 'Masquer les redirections',
 '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.",
 'listusers' => 'Liste des utilisateurs',
 'listusers-editsonly' => 'Ne montrer que les utilisateurs ayant au moins une contribution',
@@ -2368,9 +2374,6 @@ Vous pouvez personnaliser l'affichage en sélectionnant le type de journal, le n
 '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)",
-'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.',
@@ -2593,6 +2596,7 @@ La suppression de telles pages a été restreinte pour prévenir des perturbatio
 '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.",
+'deleting-backlinks-warning' => "'''Attention :''' D’autres pages ont un lien vers la page que vous allez supprimer.",
 
 # Rollback
 'rollback' => 'Révoquer les modifications',
@@ -2636,7 +2640,7 @@ Consultez la [[Special:ProtectedPages|liste des pages protégées]] pour la list
 'protect-norestrictiontypes-title' => 'Page non protégeable',
 'protect-legend' => 'Confirmer la protection',
 'protectcomment' => 'Motif :',
-'protectexpiry' => "Date d'expiration :",
+'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",
@@ -2712,7 +2716,6 @@ Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou sup
 'undeletebtn' => 'Restaurer',
 'undeletelink' => 'visualiser/rétablir',
 'undeleteviewlink' => 'voir',
-'undeletereset' => 'Réinitialiser',
 'undeleteinvert' => 'Inverser la sélection',
 'undeletecomment' => 'Motif :',
 'undeletedrevisions' => '$1 {{PLURAL:$1|version restaurée|versions restaurées}}',
@@ -2801,7 +2804,6 @@ La dernière entrée du journal des blocages est indiquée ci-dessous à titre d
 'block' => 'Bloquer l’utilisateur',
 'unblock' => "Débloquer l'utilisateur",
 'blockip' => 'Bloquer l’utilisateur',
-'blockip-title' => 'Bloquer l’utilisateur',
 'blockip-legend' => 'Bloquer l’utilisateur',
 'blockiptext' => 'Utilisez le formulaire ci-dessous pour bloquer les tentatives de modification faites à partir d’une adresse IP spécifique ou d’un nom d’utilisateur.
 Une telle mesure ne devrait être prise que pour prévenir le vandalisme et en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].
@@ -2809,7 +2811,6 @@ Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont ét
 'ipadressorusername' => "Adresse IP ou nom d'utilisateur :",
 'ipbexpiry' => 'Durée avant expiration :',
 'ipbreason' => 'Motif :',
-'ipbreasonotherlist' => 'Autre motif',
 'ipbreason-dropdown' => "* Motifs de blocage les plus fréquents
 ** Insertion de fausses informations
 ** Suppression injustifiée de contenu des pages
@@ -2825,8 +2826,6 @@ Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont ét
 'ipbsubmit' => 'Bloquer cet utilisateur',
 'ipbother' => 'Autre durée :',
 'ipboptions' => '2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite',
-'ipbotheroption' => 'autre',
-'ipbotherreason' => 'Motif différent ou supplémentaire :',
 'ipbhidename' => "Masquer le nom d'utilisateur des modifications et des listes",
 'ipbwatchuser' => 'Suivre les pages utilisateur et de discussion de cet utilisateur',
 'ipb-disableusertalk' => "Empêcher l'utilisateur de modifier sa page de discussion pendant le blocage",
@@ -2838,6 +2837,7 @@ Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont ét
 Consultez la [[Special:BlockList|liste des blocages]] pour revoir les blocages.',
 'ipb-blockingself' => 'Vous êtes sur le point de bloquer votre propre compte ! Êtes-vous certain{{GENDER:||e|(e)}} de vouloir faire cela ?',
 'ipb-confirmhideuser' => "Vous êtes sur le point de bloquer un utilisateur avec « cacher l'utilisateur » activé. Cela supprime le nom de l'utilisateur dans toutes les listes et les entrées du journal. Êtes-vous sûr de vouloir le faire ?",
+'ipb-confirmaction' => 'Si vous êtes sûr de vraiment vouloir le faire, veuillez cocher le champ « {{int:ipb-confirm}} » en bas.',
 'ipb-edit-dropdown' => 'Modifier les motifs de blocage par défaut',
 'ipb-unblock-addr' => 'Débloquer $1',
 'ipb-unblock' => 'Débloquer un compte utilisateur ou une adresse IP',
@@ -2918,7 +2918,6 @@ Veuillez contacter votre fournisseur d'accès Internet ou votre support techniqu
 '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.',
 'xffblockreason' => "Une adresse IP dans l'en-tête X-Forwarded-For, soit la vôtre ou celle d'un serveur proxy que vous utilisez, a été bloquée. La raison du blocage initial est : $1",
-'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é{{GENDER:||e|(e)}} à vous débloquer vous-même",
@@ -2971,7 +2970,6 @@ 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 seule 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.",
@@ -2987,8 +2985,6 @@ Dans ces cas-là, vous devrez renommer ou fusionner cette page de discussion man
 '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 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)",
@@ -3846,15 +3842,10 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
 'exif-urgency-high' => 'Haute ($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 [https://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',
 'namespacesall' => 'Tous',
 'monthsall' => 'tous',
-'limitall' => 'tous',
 
 # Email address confirmation
 'confirmemail' => 'Confirmer l’adresse de courriel',
@@ -3879,7 +3870,6 @@ Celui-ci a peut-être expiré.',
 '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,
 a enregistré un compte « $2 » avec cette adresse de courriel
@@ -3966,6 +3956,11 @@ Veuillez confirmer que vous désirez réellement recréer cette page.",
 'imgmultigo' => 'Accéder !',
 'imgmultigoto' => 'Aller à la page $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(langue par défaut)',
+'img-lang-info' => 'Afficher cette image en $1 $2.',
+'img-lang-go' => 'Lancer',
+
 # Table pager
 'ascending_abbrev' => 'crois.',
 'descending_abbrev' => 'décr.',
@@ -4110,7 +4105,14 @@ Vous pouvez aussi [[Special:EditWatchlist|utiliser l'éditeur normal]].",
 'version-hook-name' => 'Nom du greffon',
 'version-hook-subscribedby' => 'Abonnés :',
 'version-version' => '(version $1)',
-'version-license' => 'Licence',
+'version-license' => 'Licence MediaWiki',
+'version-ext-license' => 'Licence',
+'version-ext-colheader-license' => 'Licence',
+'version-ext-colheader-credits' => 'Auteurs',
+'version-license-title' => 'Licence pour $1',
+'version-license-not-found' => "Aucune information détaillée de la licence n'a été trouvée pour cette extension.",
+'version-credits-title' => 'Remerciements pour $1',
+'version-credits-not-found' => "Aucune information détaillée des remerciements n'a été trouvée pour cette extension.",
 'version-poweredby-credits' => "Ce wiki fonctionne grâce à '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'autres',
 'version-poweredby-translators' => 'traducteurs de translatewiki.net',
@@ -4130,13 +4132,14 @@ Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licen
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Chemin de script]',
 
 # Special:Redirect
-'redirect' => 'Redirigé par fichier, utilisateur, ou ID de révision',
+'redirect' => 'Redirigé par fichier, utilisateur, page ou ID de révision',
 'redirect-legend' => 'Rediriger vers une page ou un fichier',
-'redirect-summary' => 'Cette page spéciale redirige vers un fichier (nom de fichier fourni), une page (ID de révision fourni) ou une page d’utilisateur (identifiant numérique de l’utilisateur fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Cette page spéciale redirige vers un fichier (nom de fichier fourni), une page (ID de révision ou de page fourni) ou une page d’utilisateur (identifiant numérique de l’utilisateur fourni). Utilisation : [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Valider',
 'redirect-lookup' => 'Recherche :',
 'redirect-value' => 'Valeur :',
 'redirect-user' => "ID de l'utilisateur",
+'redirect-page' => 'ID de page',
 'redirect-revision' => 'Révision de la page',
 'redirect-file' => 'Nom du fichier',
 'redirect-not-exists' => 'Valeur non trouvée',
@@ -4203,7 +4206,6 @@ Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licen
 
 # Special:ComparePages
 'comparepages' => 'Comparer des pages',
-'compare-selector' => 'Comparer les versions des pages',
 'compare-page1' => 'Page 1',
 'compare-page2' => 'Page 2',
 'compare-rev1' => 'Version 1',
@@ -4331,6 +4333,7 @@ Sinon, vous pouvez utiliser le formulaire simplifié ci-dessous. Votre commentai
 'api-error-overwrite' => "Écraser un fichier existant n'est pas autorisé.",
 'api-error-stashfailed' => "Erreur interne : le serveur n'a pas pu enregistrer le fichier temporaire.",
 'api-error-publishfailed' => "Erreur interne: Le serveur n'a pas pu publier le fichier temporaire.",
+'api-error-stasherror' => "Une erreur s'est produite lors du téléchargement du fichier pour le dissimuler.",
 'api-error-timeout' => "Le serveur n'a pas répondu dans le délai imparti.",
 'api-error-unclassified' => "Une erreur inconnue s'est produite",
 'api-error-unknown-code' => 'Erreur inconnue : « $1 »',
@@ -4380,10 +4383,14 @@ En fait, elle réalise l'expansion de pratiquement tout ce qui est encadré par
 'expand_templates_input' => 'Texte wiki source :',
 'expand_templates_output' => 'Texte wiki obtenu après expansion',
 'expand_templates_xml_output' => 'Résultat intermédiaire de l’analyse, au format XML',
+'expand_templates_html_output' => 'Sortie en HTML brut',
 'expand_templates_ok' => 'Valider',
 'expand_templates_remove_comments' => 'Supprimer les commentaires',
 'expand_templates_remove_nowiki' => 'Supprime les marqueurs <nowiki> dans le résultat',
 'expand_templates_generate_xml' => 'Voir l’arborescence d’analyse XML',
+'expand_templates_generate_rawhtml' => 'Afficher le HTML brut',
 'expand_templates_preview' => 'Aperçu du rendu',
 
+# Unknown messages
+'uploadinvalidxml' => 'Le XML dans le fichier importé n’a pas pu être analysé.',
 );
index 03e022f..2f80584 100644 (file)
@@ -49,7 +49,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Montrer le montant de guetteurs',
 'tog-oldsig' => '↓ Preview du signature existant:',
 'tog-fancysig' => 'Signature brute (sans liens préparés)',
-'tog-showjumplinks' => 'Mettre les "liens vites" en haut de la page',
 'tog-uselivepreview' => "User la vue d'avance vite (JavaScript) (En assai)",
 'tog-forceeditsummary' => "M'avertir quand j'ai laissé la boëte de commentaires vide",
 'tog-watchlisthideown' => 'Cacher mes changements dans la liste des pages guettées',
@@ -140,7 +139,6 @@ $messages = array(
 'qbedit' => 'Changer',
 'qbpageoptions' => 'Page de choix',
 'qbmyoptions' => 'Mes options',
-'qbspecialpages' => 'Pages espéciales',
 'faq' => 'Questions Communes',
 'faqpage' => 'Project:Questions Communes',
 
@@ -199,7 +197,7 @@ $messages = array(
 'jumpto' => 'Aller à:',
 'jumptosearch' => 'charcher',
 
-# 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).
+# 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).
 'aboutsite' => "Qui c'est {{SITENAME}}?",
 'aboutpage' => 'Project:Info',
 'copyright' => 'Les matières sont avalable en accord avec $1',
@@ -209,7 +207,6 @@ $messages = array(
 'disclaimers' => 'Avertissements',
 'disclaimerpage' => 'Project:Avertissements ordinaires',
 'edithelp' => 'Aide',
-'edithelppage' => 'Help:Comment changer une page',
 'helppage' => 'Help:Aide',
 'mainpage' => 'Page Principale',
 'mainpage-description' => 'Page Principale',
@@ -228,8 +225,6 @@ $messages = array(
 
 'retrievedfrom' => 'Pris de "$1"',
 'youhavenewmessages' => 'Vous avez $1 ($2).',
-'newmessageslink' => 'nouveaux messages',
-'newmessagesdifflink' => 'dernier changement',
 'youhavenewmessagesmulti' => 'Vous avez des nouveaux messages sus $1.',
 'editsection' => 'changer',
 'editold' => 'changer',
@@ -265,19 +260,6 @@ $messages = array(
 # General errors
 'error' => 'Erreur',
 'databaseerror' => "Erreur de la base d'information",
-'dberrortext' => 'Erreur de syntaxe dans la base d\'information.
-
-Ça pourrait vouloir dire qu\'y a une imperfection dans le software.<br />
-La dernière demande faite dans la base d\'information était:
-<blockquote><tt>$1</tt></blockquote>
-dedans la fonction "<tt>$2</tt>".<br />
-MySQL a retourné l\'erreur "<tt>$3: $4</tt>".',
-'dberrortextcl' => 'Erreur de syntaxe dans la base d\'information.
-
-La dernière demande faite dans la base d\'information était:
-"$1"
-dedans la fonction "$2".
-MySQL a retourné l\'erreur "$3: $4".',
 'laggedslavemode' => 'Avertissement: La page est peut-être pas renouvelée.',
 'readonly' => "La base d'information est barrée.",
 'enterlockreason' => "Écrire une raison pour le barrage avec un temps estimé
@@ -303,9 +285,6 @@ L'administrateur qui l'a barrée a donné cette explication: $1",
 'perfcached' => 'Cette information est en cache et pourrait pas être courante. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Cette information est en cache et le dernier changement a été fait $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "À présent, les renouvelages pour cette page sont barrés.  L'information ici va pas être renouvelée t'à l'heure.",
-'wrong_wfQuery_params' => 'Informaton incorrecte sus le wfQuery()<br />
-Fonction: $1<br />
-Demande: $2',
 'viewsource' => 'Voir la source',
 'protectedpagetext' => 'Cette page est barrée pour empêcher des changements.',
 'viewsourcetext' => 'Vous pouvez voir et copier la source de cette page:',
@@ -313,7 +292,6 @@ Demande: $2',
 'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
 Changes to this page will affect the appearance of the user interface for other users.
 For translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
-'sqlhidden' => '(Demande SQL cachée)',
 'cascadeprotected' => 'Cette page est protégée parce qu’elle est incluse par {{PLURAL:$1|la page suivante, qui est protégée|les pages suivantes, qui sont protégées}} avec l’option « protection en cascade » activée :
 $2',
 'namespaceprotected' => 'Vous avez pas la permission de changer les pages dans l\'espace de noms "$1".',
@@ -382,12 +360,11 @@ Si quèqu\'une d\'autre a demandé ce mot de passe ou si vous vous rappelez de v
 'loginlanguagelabel' => 'Langue: $1',
 
 # Change password dialog
-'resetpass' => 'Rétablir le mot de passe du compte',
 'resetpass_announce' => "Pour le moment, vous êtes connecté avec un mot de passe qu'a été envoyé par e-mail.  Pour finir de vous connecter, il faut créer un nouveau mot de passe ici:",
 'resetpass_text' => '<!-- Mettez du texte ici -->',
 'resetpass_header' => 'Rétablir le mot de passe',
 'resetpass_submit' => 'Créer le mot de passe et connecter',
-'resetpass_success' => 'Vous avez bien changé votre mot de passe!  On est après vous connecter...',
+'changepassword-success' => 'Vous avez bien changé votre mot de passe!  On est après vous connecter...',
 'resetpass_forbidden' => 'Vous pouvez pas changer votre mot de passe sus ce wiki ici.',
 
 # Edit page toolbar
@@ -595,8 +572,6 @@ Des autres administrateurs sus ce wiki ont la permission de voir et de rétablir
 # Search results
 'searchresults' => 'Résultats de la charche',
 'searchresults-title' => 'Résultats de charche pour « $1 »',
-'searchresulttext' => "Pour plus d'information pour vous aider à charcher dans {{SITENAME}}, voyez [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchhelp-url' => 'Help:Aide',
 'searchprofile-everything' => 'Tout',
 'search-result-size' => '$1 ({{PLURAL:$2|1 mot|$2 mots}})',
 
index 51db299..90f3556 100644 (file)
@@ -52,6 +52,9 @@ $namespaceAliases = array(
        'Discussion_Catègorie'  => NS_CATEGORY_TALK
 );
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'Usanciérs_actifs', 'UsanciérsActifs' ),
        'Allmessages'               => array( 'Mèssâjos_sistèmo', 'MèssâjosSistèmo' ),
@@ -59,7 +62,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Pâges_les_muens_dèrriérement_changiês', 'PâgesLesMuensDèrriérementChangiês' ),
        'Blankpage'                 => array( 'Pâge_voueda', 'PâgeVoueda' ),
        'Block'                     => array( 'Blocar', 'Blocâjo' ),
-       'Blockme'                   => array( 'Blocâd-mè', 'BlocâdMè' ),
        'Booksources'               => array( 'Ôvres_de_refèrence', 'ÔvresDeRefèrence' ),
        'BrokenRedirects'           => array( 'Redirèccions_câsses', 'RedirèccionsCâsses' ),
        'Categories'                => array( 'Catègories' ),
@@ -69,9 +71,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Fâre_un_compto', 'FâreUnCompto' ),
        'Deadendpages'              => array( 'Pâges_en_cul-de-sac', 'PâgesEnCulDeSac' ),
        'DeletedContributions'      => array( 'Contribucions_suprimâs', 'ContribucionsSuprimâs' ),
-       'Disambiguations'           => array( 'Homonimia', 'Homonimies', 'Pâges_d\'homonimia', 'PâgesDHomonimia' ),
        'DoubleRedirects'           => array( 'Redirèccions_dobles', 'RedirèccionsDobles' ),
        'Emailuser'                 => array( 'Mandar_un_mèssâjo', 'MandarUnMèssâjo', 'Mèssâjo' ),
+       'ExpandTemplates'           => array( 'Èxpension_des_modèlos', 'ÈxpensionDesModèlos' ),
        'Export'                    => array( 'Èxportar', 'Èxportacion' ),
        'Fewestrevisions'           => array( 'Pâges_les_muens_changiês', 'PâgesLesMuensChangiês' ),
        'FileDuplicateSearch'       => array( 'Rechèrche_des_fichiérs_en_doblo', 'RechèrcheDesFichiérsEnDoblo' ),
@@ -111,6 +113,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Pâges_protègiês', 'PâgesProtègiês' ),
        'Protectedtitles'           => array( 'Titros_protègiês', 'TitrosProtègiês' ),
        'Randompage'                => array( 'Pâge_a_l\'hasârd', 'PâgeALHasârd' ),
+       'RandomInCategory'          => array( 'Pâge_a_l\'hasârd_dens_una_catègorie', 'PâgeALHasârdDensUnaCatègorie' ),
        'Randomredirect'            => array( 'Redirèccion_a_l\'hasârd', 'RedirèccionALHasârd' ),
        'Recentchanges'             => array( 'Dèrriérs_changements', 'DèrriérsChangements' ),
        'Recentchangeslinked'       => array( 'Survelyence_des_lims', 'SurvelyenceDesLims' ),
@@ -330,7 +333,6 @@ $messages = array(
 'tog-minordefault' => 'Marcar per dèfôt tôs los changements coment petiôts',
 'tog-previewontop' => 'Montrar l’apèrçu d’amont la zona de changement',
 'tog-previewonfirst' => 'Montrar l’apèrçu pendent lo premiér changement',
-'tog-nocache' => 'Dèsactivar lo cacho de les pâges per lo navigator',
 'tog-enotifwatchlistpages' => 'Mè mandar un mèssâjo quand na pâge un fichiér de ma lista de siuvu est changiê(e)',
 'tog-enotifusertalkpages' => 'Mè mandar un mèssâjo quand ma pâge de discussion est changiêe',
 'tog-enotifminoredits' => 'Mè mandar un mèssâjo mémo en câs de petiôts changements de les pâges et des fichiérs',
@@ -465,7 +467,6 @@ $messages = array(
 'qbedit' => 'Changiér',
 'qbpageoptions' => 'Ceta pâge',
 'qbmyoptions' => 'Mes pâges',
-'qbspecialpages' => 'Pâges spèciâles',
 'faq' => 'Quèstions sovent posâyes',
 'faqpage' => 'Project:Quèstions sovent posâyes',
 
@@ -677,9 +678,6 @@ Contint de sûr yon ou ben un mouél de caractèros que pôvont pas étre empley
 'perfcachedts' => 'Cetes balyês sont en cacho et sont étâyes betâyes a jorn por lo dèrriér côp a $1. Por lo més {{PLURAL:$1|un rèsultat est disponiblo|$1 rèsultats sont disponiblos}} dedens lo cacho.',
 'querypage-no-updates' => 'Ora les mêses a jorn por ceta pâge sont dèsactivâyes.
 Les balyês ique seront pas betâyes a jorn.',
-'wrong_wfQuery_params' => 'Paramètros fôx dessus wfQuery()<br />
-Fonccion : $1<br />
-Demanda : $2',
 'viewsource' => 'Vêre lo tèxto sôrsa',
 'viewsource-title' => 'Vêre lo tèxto sôrsa de $1',
 'actionthrottled' => 'Accion limitâye',
@@ -863,7 +861,7 @@ Se vos plét, atende devant que tornar èprovar.',
 'user-mail-no-body' => 'Èprôva de mandar un mèssâjo avouéc un côrp vouedo ou ben dèrêsonâblament côrt.',
 
 # Change password dialog
-'resetpass' => 'Changiér lo contresegno',
+'changepassword' => 'Changiér lo contresegno',
 'resetpass_announce' => 'Vos vos éte branchiê{{GENDER:||e|(e)}} avouéc un contresegno temporèro mandâ per mèssageria èlèctronica.
 Por chavonar lo branchement, vos dête buchiér un contresegno novél ique :',
 'resetpass_text' => '<!-- Apondéd lo tèxto ique -->',
@@ -1262,10 +1260,6 @@ Vos pouede vêre ceta dif ; y pôt avêr més de dètalys sur lo [{{fullurl:{{#S
 'revdelete-nooldid-title' => 'Vèrsion ciba pas justa',
 'revdelete-nooldid-text' => 'Vos éd pas spècifiâ na vèrsion ciba (des vèrsions cibes) por fâre cela
 fonccion, la vèrsion spècifiâye ègziste pas ou ben vos èprovâd de cachiér la vèrsion d’ora.',
-'revdelete-nologtype-title' => 'Nion tipo de jornal balyê',
-'revdelete-nologtype-text' => 'Vos éd pas spècifiâ un tipo de jornal por fâre cel’accion.',
-'revdelete-nologid-title' => 'Entrâ du jornal pas justa',
-'revdelete-nologid-text' => 'Ou ben vos éd pas spècifiâ un èvènement du jornal ciba por fâre cela fonccion ou ben l’entrâ spècifiâye ègziste pas.',
 'revdelete-no-file' => 'Lo fichiér spècifiâ ègziste pas.',
 'revdelete-show-file-confirm' => 'Est-o que vos éte de sûr de volêr vêre na vèrsion suprimâye du fichiér « <nowiki>$1</nowiki> » du $2 a $3 ?',
 'revdelete-show-file-submit' => 'Ouè',
@@ -1299,8 +1293,6 @@ $1",
 'logdelete-failure' => "'''La visibilitât du jornal at pas possu étre dèfenia :'''
 $1",
 'revdel-restore' => 'changiér la visibilitât',
-'revdel-restore-deleted' => 'vèrsions suprimâyes',
-'revdel-restore-visible' => 'vèrsions visibles',
 'pagehist' => 'Historico de la pâge',
 'deletedhist' => 'Historico suprimâ',
 'revdelete-hide-current' => 'Fôta en cachient la piéce datâye du $1 a $2 : o est la vèrsion d’ora.
@@ -1380,12 +1372,8 @@ Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|pag
 # Search results
 'searchresults' => 'Rèsultats de la rechèrche',
 'searchresults-title' => 'Rèsultats de la rechèrche por « $1 »',
-'searchresulttext' => 'Por més d’enformacions sur la rechèrche dedens {{SITENAME}}, vêde [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Vos éd rechèrchiê « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totes les pâges que començont per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pâges qu’ant un lim de vers « $1 »]])",
-'searchsubtitleinvalid' => "Vos éd rechèrchiê « '''$1''' »",
 'toomanymatches' => 'Un mouél de corrèspondances est étâ retornâ, se vos plét èprovâd na rechèrche difèrenta',
 'titlematches' => 'Corrèspondances dedens los titros de les pâges',
-'notitlematches' => 'Niona corrèspondance dedens los titros de les pâges',
 'textmatches' => 'Corrèspondances dedens lo tèxto de les pâges',
 'notextmatches' => 'Niona corrèspondance dedens lo tèxto de les pâges',
 'prevn' => '{{PLURAL:$1|$1}} devant',
@@ -1394,10 +1382,8 @@ Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|pag
 'nextn-title' => '$1 rèsultat{{PLURAL:$1||s}} aprés',
 'shown-title' => 'Montrar $1 rèsultat{{PLURAL:$1||s}} per pâge',
 'viewprevnext' => 'Vêre ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Chouèx de rechèrche',
 'searchmenu-exists' => "'''Y at na pâge apelâye « [[:$1]] » sur ceti vouiqui.'''",
 'searchmenu-new' => "'''Fâre la pâge « [[:$1|$1]] » sur ceti vouiqui !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Fâre dèfelar les pâges que començont per ceti prèfixo]]',
 'searchprofile-articles' => 'Pâges de contegnu',
 'searchprofile-project' => 'Pâges d’éde et pâges projèt',
 'searchprofile-images' => 'Multimèdia',
@@ -1418,21 +1404,16 @@ Vos pouede trovar més de dètalys sur lo [{{fullurl:{{#Special:Log}}/delete|pag
 'search-interwiki-default' => 'Rèsultats dessus $1 :',
 'search-interwiki-more' => '(més)',
 'search-relatedarticle' => 'Aparentâ',
-'mwsuggest-disable' => 'Dèsactivar les idês de rechèrche',
 'searcheverything-enable' => 'Rechèrchiér dedens tôs los èspâços de noms',
 'searchrelated' => 'aparentâ',
 'searchall' => 'tot',
 'showingresults' => "Vua de '''$1''' rèsultat{{PLURAL:$1||s}} dês lo numerô '''$2'''.",
 'showingresultsnum' => "Vua de '''$3''' rèsultat{{PLURAL:$3||s}} dês lo numerô '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rèsultat '''$1'''|Rèsultats '''$1 - $2'''}} de '''$3''' por '''$4'''",
-'nonefound' => "'''Nota :''' solament quârques èspâços de noms sont rechèrchiês per dèfôt.
-Èprovâd en empleyent lo prèfixo ''all:'' por rechèrchiér dedens tot lo contegnu (les pâges de discussion, los modèlos, et tot cen que vat avouéc) ou ben empleyéd l’èspâço de noms volu coment prèfixo.",
 'search-nonefound' => 'Y at gins de rèsultat que corrèspond a la rechèrche.',
-'powersearch' => 'Rechèrche avanciêe',
 'powersearch-legend' => 'Rechèrche avanciêe',
 'powersearch-ns' => 'Rechèrchiér dedens los èspâços de noms :',
 'powersearch-redir' => 'Listar les redirèccions',
-'powersearch-field' => 'Rechèrchiér',
 'powersearch-togglelabel' => 'Chouèsir :',
 'powersearch-toggleall' => 'Tôs',
 'powersearch-togglenone' => 'Pas yon',
@@ -1446,7 +1427,6 @@ Notâd que lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'preferences' => 'Prèferences',
 'mypreferences' => 'Prèferences',
 'prefs-edits' => 'Nombro de changements :',
-'changepassword' => 'Changiér lo contresegno',
 'prefs-skin' => 'Habelyâjo',
 'skin-preview' => 'Prèvêre',
 'datedefault' => 'Niona prèference',
@@ -1469,13 +1449,11 @@ Notâd que lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'prefs-email' => 'Chouèx de mèssageria èlèctronica',
 'prefs-rendering' => 'Aparence',
 'saveprefs' => 'Encartar',
-'resetprefs' => 'Èfaciér los changements pas encartâs',
 'restoreprefs' => 'Rètablir tota la configuracion per dèfôt',
 'prefs-editing' => 'Changement',
 'rows' => 'Renches :',
 'columns' => 'Colones :',
 'searchresultshead' => 'Rechèrche',
-'resultsperpage' => 'Nombro de rèponses per pâge :',
 'stub-threshold' => 'Limita d’amont por los <a href="#" class="stub">lims de vers los començons</a> (octèts) :',
 'stub-threshold-disabled' => 'Dèsactivâ',
 'recentchangesdays' => 'Nombro de jorns a montrar dedens los dèrriérs changements :',
@@ -1487,7 +1465,6 @@ Notâd que lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
 'localtime' => 'Hora locâla :',
 'timezoneuseserverdefault' => 'Empleyér la valor du vouiqui per dèfôt ($1)',
 'timezoneuseoffset' => 'Ôtro (spècifiar lo dècalâjo)',
-'timezoneoffset' => 'Dècalâjo horèro¹ :',
 'servertime' => 'Hora du sèrvior :',
 'guesstimezone' => 'Empleyér la valor du navigator',
 'timezoneregion-africa' => 'Africa',
@@ -1722,7 +1699,6 @@ Se vos chouèsésséd de lo balyér, serat empleyê por vos atribuar voutres ôv
 'recentchanges-label-bot' => 'Ceti changement est étâ fêt per un robot',
 'recentchanges-label-unpatrolled' => 'Ceti changement est p’oncor étâ gouardâ',
 'recentchanges-legend-newpage' => '$1 - pâge novèla',
-'rcnote' => "Vê-que {{PLURAL:$1|lo dèrriér changement fêt|los '''$1''' dèrriérs changements fêts}} pendent {{PLURAL:$2|lo jorn passâ|los '''$2''' jorns passâs}} tant qu’a $5 lo $4.",
 'rcnotefrom' => "Vê-que los changements fêts dês lo '''$2''' (tant qu’a '''$1''' montrâs).",
 'rclistfrom' => 'Montrar los novéls changements dês lo $1',
 'rcshowhideminor' => '$1 los petiôts changements',
@@ -2226,10 +2202,8 @@ Ora redirige vers [[$2]].',
 'protectedpages' => 'Pâges protègiêes',
 'protectedpages-indef' => 'Ren que les protèccions sen fin',
 'protectedpages-cascade' => 'Ren que les protèccions en cascâda',
-'protectedpagestext' => 'Cetes pâges sont protègiêes contre los dèplacements los changements',
 'protectedpagesempty' => 'Ora niona pâge est protègiêe avouéc celos paramètros.',
 'protectedtitles' => 'Titros protègiês',
-'protectedtitlestext' => 'Cetos titros sont protègiês a la crèacion',
 'protectedtitlesempty' => 'Ora nion titro est protègiê avouéc celos paramètros.',
 'listusers' => 'Lista des utilisators',
 'listusers-editsonly' => 'Montrar ren que los utilisators avouéc des contribucions',
@@ -2281,9 +2255,6 @@ Vos pouede rètrendre la vua en chouèséssent un tipo de jornal, lo nom d’uti
 'allpagesto' => 'Fâre vêre les pâges tant qu’a :',
 'allarticles' => 'Totes les pâges',
 'allinnamespace' => 'Totes les pâges (dedens l’èspâço de noms « $1 »)',
-'allnotinnamespace' => 'Totes les pâges (en defôr de l’èspâço de noms « $1 »)',
-'allpagesprev' => 'Devant',
-'allpagesnext' => 'Aprés',
 'allpagessubmit' => 'Listar',
 'allpagesprefix' => 'Fâre vêre les pâges que començont per lo prèfixo :',
 'allpagesbadtitle' => 'Lo titro de la pâge balyêe est pas justo ou ben contint un prèfixo entèrlengoua ou entèrvouiqui resèrvâ.
@@ -2626,7 +2597,6 @@ Pôt-étre vos éd un crouyo lim ou ben la vèrsion at possu étre refêta ou en
 'undeletebtn' => 'Refâre',
 'undeletelink' => 'vêre / refâre',
 'undeleteviewlink' => 'vêre',
-'undeletereset' => 'Rebetar a zérô',
 'undeleteinvert' => 'Envèrsar lo chouèx',
 'undeletecomment' => 'Rêson :',
 'undeletedrevisions' => '$1 {{PLURAL:$1|vèrsion refêta|vèrsions refêtes}}',
@@ -2716,7 +2686,6 @@ La dèrriére entrâ du jornal des blocâjos est disponibla ce-desot :',
 'block' => 'Blocar l’usanciér',
 'unblock' => 'Dèblocar l’usanciér',
 'blockip' => 'Blocar l’usanciér',
-'blockip-title' => 'Blocar l’usanciér',
 'blockip-legend' => 'Blocar l’usanciér',
 'blockiptext' => 'Utilisâd lo formulèro ce-desot por blocar l’accès en ècritura dês una adrèce IP spècefica ou ben un nom d’usanciér.
 Una tâla mesera devrêt étre prêsa ren que por empachiér lo vandalismo et en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].
@@ -2724,7 +2693,6 @@ Balyéd ce-desot una rêson justa (per ègzemplo en citent les pâges qu’ont 
 'ipadressorusername' => 'Adrèce IP ou ben nom d’usanciér :',
 'ipbexpiry' => 'Temps devant èxpiracion :',
 'ipbreason' => 'Rêson :',
-'ipbreasonotherlist' => 'Ôtra rêson',
 'ipbreason-dropdown' => '*Rêsons corentes de blocâjo
 ** Entrebetâ d’enformacions fôsses
 ** Suprèssion de contegnu de les pâges
@@ -2740,8 +2708,6 @@ Balyéd ce-desot una rêson justa (per ègzemplo en citent les pâges qu’ont 
 'ipbsubmit' => 'Blocar ceti usanciér',
 'ipbother' => 'Ôtro temps :',
 'ipboptions' => '2 hores:2 hours,1 jorn:1 day,3 jorns:3 days,1 semana:1 week,2 semanes:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,sen fin:infinite',
-'ipbotheroption' => 'ôtra',
-'ipbotherreason' => 'Ôtra rêson / rêson de ples :',
 'ipbhidename' => 'Cachiér lo nom d’usanciér des changements et de les listes',
 'ipbwatchuser' => 'Siuvre les pâges usanciér et de discussion a ceti usanciér',
 'ipb-disableusertalk' => 'Empache cél usanciér de changiér sa prôpra pâge de discussion pendent lo temps de son blocâjo',
@@ -2835,7 +2801,6 @@ Vos volyéd veriér vers voutron fornissor d’accès u Malyâjo ou ben voutra a
 'sorbsreason' => "Voutra adrèce IP est listâ coment sèrvor mandatèro (''proxy'') uvèrt dens lo DNSBL utilisâ per {{SITENAME}}.",
 'sorbs_create_account_reason' => "Voutra adrèce IP est listâ coment sèrvor mandatèro (''proxy'') uvèrt dens lo DNSBL utilisâ per {{SITENAME}}.
 Vos pouede pas fâre un compto.",
-'cant-block-while-blocked' => 'Vos pouede pas blocar d’ôtros usanciérs tant que vos éte blocâ.',
 'cant-see-hidden-user' => 'L’usanciér que vos tâchiéd de blocar at ja étâ blocâ et cachiê.
 Pas èyent lo drêt hideuser, vos pouede pas vêre ou ben changiér lo blocâjo a l’usanciér.',
 'ipbblocked' => 'Vos pouede pas blocar ou ben dèblocar d’ôtros usanciérs, perce que vos éte vos-mémo blocâ',
@@ -2896,7 +2861,6 @@ assurâd-vos de nen avêr comprês les consèquences devant que continuar.",
 Dens celos câs, vos devréd renomar ou ben fusionar la pâge a la man se vos lo voléd.",
 'movearticle' => 'Renomar la pâge :',
 'moveuserpage-warning' => "'''Atencion :''' vos éte prèst a renomar una pâge usanciér. Volyéd notar que solament la pâge serat renomâ et que l’usanciér serat '''pas''' renomâ.",
-'movenologin' => 'Pas branchiê',
 'movenologintext' => 'Por povêr renomar una pâge, vos dête étre [[Special:UserLogin|branchiê]] coment usanciér encartâ.',
 'movenotallowed' => 'Vos avéd pas la pèrmission de renomar les pâges.',
 'movenotallowedfile' => 'Vos avéd pas la pèrmission de renomar los fichiérs.',
@@ -2912,9 +2876,6 @@ Dens celos câs, vos devréd renomar ou ben fusionar la pâge a la man se vos lo
 'articleexists' => 'Ègziste ja una pâge que pôrte cél titro, ou ben lo titro que vos éd chouèsi est fôx.
 Nen volyéd chouèsir un ôtro.',
 'cantmove-titleprotected' => 'Vos pouede pas dèplaciér una pâge vers cél emplacement perce que lo titro novél at étâ protègiê a la crèacion.',
-'talkexists' => "'''La pâge lyé-méma at étâ dèplaciê avouéc reusséta, mas la pâge de discussion at pas possu étre dèplaciê perce que nen ègzistâve ja yona desot lo novél nom.'''
-'''Les volyéd fusionar a la man.'''",
-'movedto' => 'renomâ en',
 'movetalk' => 'Renomar avouéc la pâge de discussion associyê',
 'move-subpages' => 'Renomar les sot-pâges (tant qu’a $1 pâges)',
 'move-talk-subpages' => 'Renomar les sot-pâges de la pâge de discussion (tant qu’a $1 pâges)',
@@ -3732,15 +3693,10 @@ Los ôtros champs seront cachiês per dèfôt.
 'exif-urgency-high' => 'Hôta ($1)',
 'exif-urgency-other' => 'Prioritât dèfenia per l’usanciér ($1)',
 
-# External editor support
-'edit-externally' => 'Changiér ceti fichiér en utilisent una aplicacion de defôr',
-'edit-externally-help' => '(Vêde les [https://www.mediawiki.org/wiki/Manual:External_editors enstruccions d’enstalacion] por més d’enformacions)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tot',
 'namespacesall' => 'tôs',
 'monthsall' => 'tôs',
-'limitall' => 'tôs',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar l’adrèce èlèctronica',
@@ -3765,7 +3721,6 @@ Ceti at pôt-étre èxpirâ.',
 'confirmemail_success' => 'Voutra adrèce èlèctronica at étâ confirmâ.
 Ora, vos vos pouede [[Special:UserLogin|branchiér]] et profitar du vouiqui.',
 'confirmemail_loggedin' => 'Ora, voutra adrèce èlèctronica est confirmâ.',
-'confirmemail_error' => 'Un problèmo est arrevâ pendent l’encartâjo de voutra confirmacion.',
 'confirmemail_subject' => 'Confirmacion d’adrèce èlèctronica por {{SITENAME}}',
 'confirmemail_body' => 'Quârqu’un, probâblament vos, avouéc l’adrèce IP $1,
 at encartâ un compto « $2 » avouéc cela adrèce èlèctronica dessus {{SITENAME}}.
@@ -4068,7 +4023,6 @@ Vos devriâd avêr reçu un [{{SERVER}}{{SCRIPTPATH}}/COPYING ègzemplèro de la
 
 # Special:ComparePages
 'comparepages' => 'Comparar des pâges',
-'compare-selector' => 'Comparar les vèrsions de les pâges',
 'compare-page1' => 'Pâge 1',
 'compare-page2' => 'Pâge 2',
 'compare-rev1' => 'Vèrsion 1',
index 7e25267..425f046 100644 (file)
@@ -42,7 +42,6 @@ $messages = array(
 'tog-minordefault' => 'Aanj feranrangen üs "letjen" kääntiakne',
 'tog-previewontop' => '"Iarst ans luke" boowen faan\'t wönang tu bewerkin',
 'tog-previewonfirst' => 'Bi\'t iarst bewerkin "iarst ans luke" uunwise',
-'tog-nocache' => 'Sidjencache faan di browser deaktiwiare',
 'tog-enotifwatchlistpages' => "Schüür mi en e-mail, wan sidjen of datein feranert wurd, diar ik uun't uug behual wal",
 'tog-enotifusertalkpages' => 'Bi feranrangen üüb min brüker-diskusjuunssidj en e-mail schüür',
 'tog-enotifminoredits' => 'Schüür mi uk bi letj feranrangen faan sidjen an datein en e-mail',
@@ -177,7 +176,6 @@ $messages = array(
 'qbedit' => 'Bewerke',
 'qbpageoptions' => 'Detdiar sidj',
 'qbmyoptions' => 'Min sidjen',
-'qbspecialpages' => 'Spezial-sidjen',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -397,9 +395,6 @@ Det as ferlicht al faan hoker ööders stregen wurden.',
 'perfcached' => 'Jodiar dooten kem faan a cache an san ferlicht ei muar aktuel. Ei muar üs {{PLURAL:$1|ian resultoot as|$1 resultooten san}} uun a cache.',
 'perfcachedts' => 'Jodiar dooten kem faan a cache, leetst tooch nei: $1. Ei muar üs {{PLURAL:$4|ian resultoot as|$4 resultooten san}} uun a cache.',
 'querypage-no-updates' => 'Dü könst detdiar sidj uun uugenblak ei aktualisiare. A dooten wurd iarst ans ei iinsteld.',
-'wrong_wfQuery_params' => 'Ferkiard dooten för wfQuery()<br />
-Funktjuun: $1<br />
-Uffraag: $2',
 'viewsource' => 'Kweltekst uunluke',
 'viewsource-title' => 'Code faan sidj $1 uunluke',
 'actionthrottled' => 'Taal faan aktjuunen limitiaret',
@@ -532,7 +527,7 @@ Ferschük det man noch ans.',
 'passwordtooshort' => 'Paaswurden skel tumanst {{PLURAL:$1|1 tiaken|$1 tiakens}} lung wees.',
 'password-name-match' => 'Dü könst dan brükernööm ei üs paaswurd nem.',
 'password-login-forbidden' => 'Didiar brükernööm mä detdiar paaswurd as ei tuläät.',
-'mailmypassword' => 'Schüür mi en nei paaswurd.',
+'mailmypassword' => 'Paaswurd turagsaat',
 'passwordremindertitle' => 'Nei tidjwiis paaswurd för {{SITENAME}}',
 'passwordremindertext' => 'En brüker (woorskiinelk dü, faan IP adres $1) hää am en nei paaswurd för {{SITENAME}} ($4) fraaget.
 En nei paaswurd för di brüker "$2" as maaget wurden an het nü "$3".
@@ -582,7 +577,7 @@ Wees so gud an teew $1, iar dü det noch ans ferschükst.',
 'user-mail-no-body' => 'Dü wulst en e-mail saner tekst wechsjüür.',
 
 # Change password dialog
-'resetpass' => 'Paaswurd feranre',
+'changepassword' => 'Paaswurd feranre',
 'resetpass_announce' => 'Dü heest di mä di code uunmeldet, di dü per e-mail tuschüürd füngen heest.
 Am det uunmeldin uftuslütjen, skel dü en nei paaswurd iindu.',
 'resetpass_header' => 'Paaswurd feranre',
@@ -604,7 +599,7 @@ of am en nei paaswurd uunfraaget.',
 # Special:PasswordReset
 'passwordreset' => 'Paaswurd turagsaat',
 'passwordreset-text-one' => 'Fal detheer formulaar ütj, am din paaswurd turag tu saaten.',
-'passwordreset-text-many' => '{{PLURAL:$1|Fal ian fial ütj, am din paaswurd turag tu saaten.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Fal ian faan jodiat fialen ütj, am en tidjwiis paaswurd tuschüürd tu fun.}}',
 'passwordreset-legend' => 'Paaswurd turagsaat',
 'passwordreset-disabled' => 'Dü könst din paaswurd uun detdiar wiki ei turagsaat.',
 'passwordreset-emaildisabled' => 'E-mail as üüb detheer Wiki ufknipset wurden.',
@@ -857,6 +852,8 @@ Uun't strik- an fersküüw-logbuk oner stäänt muar diartu.",
 'content-not-allowed-here' => '„$1“ mut ei skrewen wurd üüb sidj [[$2]]',
 'editwarning-warning' => 'Wan dü detheer sidj slotst, kön feranrangen ferleesen gung.
 Üs uunmeldet brüker könst dü detheer wäärnang bi din iinstelangen oner „Bewerke“ wechknipse.',
+'editpage-notsupportedcontentformat-title' => 'Detdiar formoot gongt ei.',
+'editpage-notsupportedcontentformat-text' => 'Det formoot $1 gongt ei mä det model $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -897,6 +894,9 @@ Luke oner, of dü det uk würelk du wel, an do seekre din feranrangen.',
 'cantcreateaccount-text' => "Det iinrachten faan en brükerkonto faan det IP-adres '''($1)''' as faan [[User:$3|$3]] speret wurden.
 
 Grünj för det sper: ''$2''",
+'cantcreateaccount-range-text' => "Det iinrachten faan brükerkontos uun det IP-adresfial '''$1''', huar uk din IP ('''$4''') uun as, as faan [[User:$3|$3]] speret wurden.
+
+Di grünj faan $3 wiar: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Logbuken faan detdiar sidj uunwise',
@@ -960,10 +960,6 @@ Dü könst di ferskeel uunluke. Wan dü muar wed wel, luke iin uun't [{{fullurl:
 'revisiondelete' => 'Werjuunen strik of weder iinstel',
 'revdelete-nooldid-title' => 'Nian werjuun uunden',
 'revdelete-nooldid-text' => 'Dü heest nian werjuun för detheer aktjuun uunden, of det werjuun jaft at ei, of dü ferschükst, en aktuel werjuun tu striken.',
-'revdelete-nologtype-title' => 'Nian log-typ uunden',
-'revdelete-nologtype-text' => 'Dü heest nään log-typ för detdiar aktjuun uunden.',
-'revdelete-nologid-title' => 'Ferkiard log-iindrach',
-'revdelete-nologid-text' => 'Dü heest nään log-typ uunden of di log-typ as ferkiard.',
 'revdelete-no-file' => 'Son dateinööm as ei diar.',
 'revdelete-show-file-confirm' => 'Wel dü würelk det stregen werjuun faan det datei „<nowiki>$1</nowiki>“ faan di $2, am a klook $3 uunluke?',
 'revdelete-show-file-submit' => 'Ja',
@@ -997,8 +993,6 @@ $1",
 'logdelete-failure' => "'''Det logbukuunsicht küd ei feranert wurd:'''
 $1",
 'revdel-restore' => 'Feranre, wat tu sen wees skal',
-'revdel-restore-deleted' => 'stregen werjuunen',
-'revdel-restore-visible' => 'sichtboor werjuunen',
 'pagehist' => 'Ferluup faan werjuunen',
 'deletedhist' => 'Stregen werjuunen',
 'revdelete-hide-current' => 'Di iindrach faan $1, klook $2 koon ei ferbürgen wurd. Det as det aktuel werjuun.',
@@ -1050,7 +1044,7 @@ A nawigatjuun-links saat ales weder turag üüb di ual stant.',
 'mergehistory-reason' => 'Grünj:',
 
 # Merge log
-'mergelog' => 'Feriin-logbök',
+'mergelog' => 'Ferianangs-logbuk',
 'pagemerge-logentry' => '[[$1]] efter [[$2]] tuupfeerd (werjuunen bit $3)',
 'revertmerge' => 'Det tuupfeeren turagsaat',
 'mergelogpagetext' => 'Diar as det logbuk faan a tuupfeerd sidjen.',
@@ -1075,12 +1069,8 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Fünjen sidjen',
 'searchresults-title' => 'Fünjen sidjen för „$1“',
-'searchresulttext' => "Wan dü muar auer't schüken uun {{SITENAME}} wed wel, luke efter bi [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Din uunfraag: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|sidjen, diar mä „$1“ began]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sidjen, diar efter „$1“ ferwise]])',
-'searchsubtitleinvalid' => 'Din uunfraag: "$1".',
 'toomanymatches' => 'Diar kaam tuföl resultaaten üüb din uunfraag. Ferschük det ööders.',
 'titlematches' => 'Auerianstemangen mä sidjennöömer',
-'notitlematches' => 'Nian auerianstemangen mä sidjennöömer',
 'textmatches' => 'Auerianstemangen mä teksten',
 'notextmatches' => 'Nian auerianstemangen mä teksten',
 'prevn' => '{{PLURAL:$1|leetst|leetst $1}}',
@@ -1089,10 +1079,8 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'nextn-title' => 'Naist $1 {{PLURAL:$1|resultaat|resultaaten}}',
 'shown-title' => 'Wise $1 {{PLURAL:$1|resultaat|resultaaten}} per sidj',
 'viewprevnext' => 'Wise ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Säkmöölikhäide',
 'searchmenu-exists' => "'''Deer as en sid nååmd \"[[:\$1]]\" önj jüdeer Wiki'''",
 'searchmenu-new' => "'''Maage det sidj „[[:$1]]“ uun detheer wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wise aal jo sidjen, diar so began]]',
 'searchprofile-articles' => 'Artiikler',
 'searchprofile-project' => 'Halep- an Projektsidjen',
 'searchprofile-images' => 'Multimedia',
@@ -1113,20 +1101,16 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-interwiki-default' => '$1 resultaaten:',
 'search-interwiki-more' => '(muar)',
 'search-relatedarticle' => 'Ferbünjen',
-'mwsuggest-disable' => "Föörslacher för't schüken deaktiwiare",
 'searcheverything-enable' => 'Uun arke nöömrüm schük',
 'searchrelated' => 'ferbünjen',
 'searchall' => 'aaltumaal',
 'showingresults' => "Heer {{PLURAL:$1|as '''1''' resultaat|san '''$1''' resultaaten}}, jo began mä numer '''$2.'''",
 'showingresultsnum' => "Heer {{PLURAL:$3|as '''1''' resultaat|san '''$3''' resultaaten}}, jo began mä numer '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|resultaat '''$1''' faan '''$3'''|resultaaten '''$1-$2''' faan '''$3'''}}, för '''$4.'''",
-'nonefound' => "'''Paase üüb:''' Diar wurd man enkelt nöömrümer trochsoocht. Wan dü ''all:'' föör din wurd skraft, do woort uk uun aal a nöömrümer (datein, kategoriin, föörlaagen asw.) soocht. Dü könst uk en wasen nöömrüm föörwechstel.",
 'search-nonefound' => 'För din uunfraag san nian resultaaten fünjen wurden.',
-'powersearch' => 'Ütjwidjet schüken',
 'powersearch-legend' => 'Ütjwidjet schüken',
 'powersearch-ns' => 'Schük uun nöömrümer:',
 'powersearch-redir' => 'Widjerfeerangen uunwise',
-'powersearch-field' => 'Schük efter:',
 'powersearch-togglelabel' => 'Schük uun:',
 'powersearch-toggleall' => 'Aaltumaal',
 'powersearch-togglenone' => 'Nianen',
@@ -1139,7 +1123,6 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'mypreferences' => 'Iinstelangen',
 'prefs-edits' => 'Taal faan feranrangen:',
 'prefsnologintext2' => 'Wees so gud an $1 , am din brüker-iinstelangen fäästtuleien.',
-'changepassword' => 'Paaswurd feranre',
 'prefs-skin' => 'Skak',
 'skin-preview' => 'Föörskau',
 'datedefault' => 'Föör-iinstelang',
@@ -1162,13 +1145,11 @@ Dü könst det uun't [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-email' => 'E-Mail iinstelangen',
 'prefs-rendering' => 'Skak',
 'saveprefs' => 'Iinstelangen seekre',
-'resetprefs' => 'Wech diarmä',
 'restoreprefs' => 'Normool iinstelangen weder haale (uun arke kirew)',
 'prefs-editing' => 'Bewerke',
 'rows' => 'Räen:',
 'columns' => 'Spleder:',
 'searchresultshead' => 'Schük',
-'resultsperpage' => 'So fölsis komt det föör per sidj:',
 'stub-threshold' => 'Formatiarang faan links <a href="#" class="stub">för letj sidjen</a> (uun Byte):',
 'stub-threshold-disabled' => 'Ufsteld',
 'recentchangesdays' => 'Soföl daar skel a „leetst feranrangen“ uunwise:',
@@ -1183,7 +1164,6 @@ Mä didiar kai koon arken jodiar sidjen beluke, diaram skulst dü ham ei widjerd
 'localtime' => 'Lokaal tidj:',
 'timezoneuseserverdefault' => 'Wiki standard tidj brük ($1)',
 'timezoneuseoffset' => 'Öödern (ferskeel uundu)',
-'timezoneoffset' => 'Ferskeel¹:',
 'servertime' => 'Server klooktidj:',
 'guesstimezone' => 'Faan a browser auernem',
 'timezoneregion-africa' => 'Afrikaa',
@@ -1251,6 +1231,7 @@ Arken koon det lees.',
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Ferskeel',
 'prefs-help-prefershttps' => 'Detdiar iinstelang täält, wan dü di naist tooch uunmeldest.',
+'prefs-tabs-navigation-hint' => "Halep: Dü könst a lachter of rochter wiiser-knoop brük, am tesken a ridjerkoorden boowen uun't menüü hen an weder tu springen.",
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Detdiar E-Mail-adres schocht gud ütj.',
@@ -1389,10 +1370,10 @@ Arken koon det lees.',
 'action-createtalk' => 'diskusjuunssidjen maage',
 'action-createaccount' => 'jüdeer brükerkonto mååge',
 'action-minoredit' => 'detdiar feranrang üs letj kääntiakne',
-'action-move' => 'jüdeer sid ferschüwe',
-'action-move-subpages' => 'jüdeer sid än unerside ferschüwe',
+'action-move' => 'an fersküüw det diar sidj',
+'action-move-subpages' => 'an fersküüw detdiar sidj mä hör onersidjen',
 'action-move-rootuserpages' => 'hood-brükersidj fersküüw',
-'action-movefile' => 'jüdeer sid ferschüwe',
+'action-movefile' => 'an fersküüw detdiar datei',
 'action-upload' => 'Datein huuchschüür',
 'action-reupload' => 'det datei auerskriiw',
 'action-reupload-shared' => 'det datei auerskriiw, diar uun en gemiansoom archiif leit',
@@ -1437,14 +1418,14 @@ Arken koon det lees.',
 'recentchanges-label-bot' => 'Feranrang faan en bot',
 'recentchanges-label-unpatrolled' => 'Detdiar feranrang as noch ei efterluket wurden',
 'recentchanges-label-plusminus' => 'Feranert sidjengrate (am soföl bytes)',
+'recentchanges-legend-heading' => "'''Ferklaarang:'''",
 'recentchanges-legend-newpage' => "(luke uk bi't [[Special:NewPages|list mä nei sidjen]])",
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Diar {{PLURAL:$1|stäänt det leetst feranrang|stun a leetst '''$1''' feranrangen}} faan a leetst {{PLURAL:$2|dai|'''$2''' daar}}. Stant: $4, am a klook $5.",
 'rcnotefrom' => "Diar wurd a feranrangen sant '''$2'''uunwiset (ei muar üs '''$1''' feranrangen).",
 'rclistfrom' => 'Bluas feranrangen sant $1 wise.',
 'rcshowhideminor' => '$1 letj feranrangen',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 uunmeldet brükern',
+'rcshowhideliu' => '$1 registriaret brükern',
 'rcshowhideanons' => '$1 anonüüm brükern',
 'rcshowhidepatr' => '$1 efterluket feranrangen',
 'rcshowhidemine' => '$1 min bidracher',
@@ -1556,6 +1537,8 @@ Gung noch ans turag an schüür det datei mä en öödern nööm huuch.
 [[File:$1|thumb|center|$1]]",
 'file-exists-duplicate' => 'Detdiar datei as en duplikaat faan {{PLURAL:$1|detdiar datei|$1 datein}}:',
 'file-deleted-duplicate' => "En duplikaat faan detdiar datei ([[:$1]]) as al ans stregen wurden. Luke iin uun logbuk för't striken, iar dü det noch ans huuchsjüürst.",
+'file-deleted-duplicate-notitle' => 'Detdiar datei as leetst iarst stregen wurden an di nööm as ferbürgen wurden.
+Dü skulst hoker fraage, di ferbürgen nöömer uunluke koon, am tu besnaakin, wat det diarmä üüb ham hää.',
 'uploadwarning' => 'Wäärnang',
 'uploadwarning-text' => 'Feranre det datei-beskriiwang an ferschük det noch ans nei.',
 'savefile' => 'Datei seekre',
@@ -1879,6 +1862,7 @@ Uun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det s
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|link|links}}',
 'nmembers' => '{{PLURAL:$1|1 iindrach|$1 iindracher}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|lasmoot|lasmooten}}',
 'nrevisions' => '$1 {{PLURAL:$1|feranrang|feranrangen}}',
 'nviews' => '$1 {{PLURAL:$1|klik|kliks}}',
 'nimagelinks' => 'Brükt üüb $1 {{PLURAL:$1|sidj|sidjen}}',
@@ -1917,10 +1901,9 @@ Uun arke rä stun ferwisangen tu't iarst an ööder widjerfeerang an uk tu det s
 'protectedpages' => 'Seekert sidjen',
 'protectedpages-indef' => 'Bluas permanent seekert sidjen uunwise',
 'protectedpages-cascade' => 'Bluas sidjen mä kaskaaden-seekerhaid',
-'protectedpagestext' => 'Jodiar spezial-sidjen san jin feranrin an fersküüwen seekert.',
+'protectedpages-noredirect' => 'Widjerfeerangen fersteeg',
 'protectedpagesempty' => 'Uun uugenblak san sok sidjen ei seekert.',
 'protectedtitles' => 'Seekert sidjennöömer',
-'protectedtitlestext' => 'Jodiar sidjennöömer kön ei brükt wurd.',
 'protectedtitlesempty' => 'Uun uugenblak san sok sidjen ei speret.',
 'listusers' => 'Brükerfertiaknis',
 'listusers-editsonly' => 'Wise bluas aktiif brükern',
@@ -1971,9 +1954,6 @@ Det woort efter logbukslach, brüker of sidjennööm uunwiset. Grat- an letjskri
 'allpagesto' => 'Sidjen wise bit:',
 'allarticles' => 'Aal a sidjen',
 'allinnamespace' => 'Aal a sidjen (nöömrüm: $1)',
-'allnotinnamespace' => 'Aal a sidjen (saner nöömrüm $1)',
-'allpagesprev' => 'Leest',
-'allpagesnext' => 'Naist',
 'allpagessubmit' => 'Widjer',
 'allpagesprefix' => 'Sidjen uunwise mä prefix:',
 'allpagesbadtitle' => 'Didiar sidjennööm gongt ei. Hi hed ferlicht en spriak-prefix of diar san ei tuläät tiakens uun.',
@@ -2186,6 +2166,7 @@ Halep an muar diartu: {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'delete-edit-reasonlist' => "Grünjer för't striken bewerke",
 'delete-toobig' => 'Detdiar sidj hää muar üs $1 {{PLURAL:$1|werjuun|werjuunen}} . Sok sidjen kön ei so gau stregen wurd, ööders san a servers plaat.',
 'delete-warning-toobig' => "Detdiar sidj hää muar üs $1 {{PLURAL:$1|werjuun|werjuunen}} . Det striken koon komer maage bi't dootenbeenk.",
+'deleting-backlinks-warning' => "'''Paase üüb:''' Diar ferwise noch ööder sidjen üüb det sidj, diar dü strik wel.",
 
 # Rollback
 'rollback' => 'Feranrangen turagsaat',
@@ -2300,7 +2281,6 @@ Di tekst faan det stregen sidj fu bluas administratooren uunwiset.',
 'undeletebtn' => 'Weder iinstel',
 'undeletelink' => 'wise / weder iinstel',
 'undeleteviewlink' => 'Uunluke',
-'undeletereset' => 'Turagsaat',
 'undeleteinvert' => 'Ütjwool amdrei',
 'undeletecomment' => 'Grünj:',
 'undeletedrevisions' => '{{PLURAL:$1|1 werjuun|$1 werjuunen}} weder iinsteld',
@@ -2386,7 +2366,6 @@ $1",
 'block' => 'Brüker spere',
 'unblock' => 'Brüker ei muar spere',
 'blockip' => 'IP-adres/brüker spere',
-'blockip-title' => 'Brüker spere',
 'blockip-legend' => 'IP-adres/brüker spere',
 'blockiptext' => 'Mä detdiar formulaar sperest dü en IP-adres of en brükernööm, so dat faan diar nian feranrangen muar maaget wurd kön. 
 Det skul bluas föörnimen wurd, am jin wandaalen föörtugungen an uun auerianstemang mä a [[{{MediaWiki:Policy-url}}|brükerreegeln]].
@@ -2394,7 +2373,6 @@ Skriiw en guden grünj för det sper ap.',
 'ipadressorusername' => 'IP-adres of brükernööm:',
 'ipbexpiry' => 'Sperdüür:',
 'ipbreason' => 'Grünj:',
-'ipbreasonotherlist' => 'Ööder grünj',
 'ipbreason-dropdown' => '* Mist brükt spergrünjer
 ** Skraft wat ferkiards
 ** Maaget sidjen leesag
@@ -2410,8 +2388,6 @@ Skriiw en guden grünj för det sper ap.',
 'ipbsubmit' => 'IP-adres/brüker spere',
 'ipbother' => 'Ööder sperdüür (ingelsk):',
 'ipboptions' => '2 stünj:2 hours,1 dai:1 day,3 daar:3 days,1 weg:1 week,2 weg:2 weeks,1 muun:1 month,3 muuner:3 months,6 muuner:6 months,1 juar:1 year,saner aanj:infinite',
-'ipbotheroption' => 'Ööder sperdüür',
-'ipbotherreason' => 'Ööder/noch en grünj:',
 'ipbhidename' => 'Brükernööm uun feranrangen an listen fersteeg',
 'ipbwatchuser' => "Hual di brüker sin brüker- an diskusjuunssidj uun't uug",
 'ipb-disableusertalk' => 'Ferhanre, dat di brüker sin diskusjuunssidj bewerket, so loong hi speret as.',
@@ -2423,6 +2399,7 @@ Skriiw en guden grünj för det sper ap.',
 Am det aptuheewen, gung tu't [[Special:BlockList|sperlist]].",
 'ipb-blockingself' => 'Wel dü würelk di salew spere?',
 'ipb-confirmhideuser' => 'Dü beest diarbi, en brüker uun det muude „brüker fersteeg“ tu sperin. Do woort di brükernööm uun aal a logbuken an listen ferbürgen. Wel dü det würelk du?',
+'ipb-confirmaction' => 'Wan dü was an seeker beest, dat dü det würelk du wel, do trak oner üüb det fial „{{int:ipb-confirm}}“.',
 'ipb-edit-dropdown' => "Grünjer för't sperin bewerke",
 'ipb-unblock-addr' => '„$1“ ei muar spere',
 'ipb-unblock' => 'IP-adres/brüker ei muar spere',
@@ -2501,7 +2478,6 @@ Fertel det dan ISP of dan süsteemsiinst. Eeben proxys stel det seekerhaid uun f
 'sorbsreason' => 'Din IP-adres as uun det DNSBL faan {{SITENAME}} üs eeben proxy apfeerd.',
 'sorbs_create_account_reason' => 'Din IP-adres as uun det DNSBL faan {{SITENAME}} üs eeben proxy apfeerd. Dü könst nian brükerkonto maage.',
 'xffblockreason' => 'En IP-adres uun di X-Forwarded-For-Header as speret wurden, det as din aanj of det faan dan proxy server. Di spergrünj as: $1',
-'cant-block-while-blocked' => 'Dü könst nian ööder brükern spere, so loong dü salew speret beest.',
 'cant-see-hidden-user' => 'Di brüker, diar dü spere wel, as al speret an ferbürgen. Dü heest oober ei det "hideuser"-rocht an könst det sper ei bewerke.',
 'ipbblocked' => 'Dü könst ööder brükern ei spere an uk nian speren apheew, auer dü salew speret beest.',
 'ipbnounblockself' => 'Dü könst din aanj sper ei apheew.',
@@ -2526,7 +2502,7 @@ Fertel det dan ISP of dan süsteemsiinst. Eeben proxys stel det seekerhaid uun f
 
 # Move page
 'move-page' => 'Fersküüw $1',
-'move-page-legend' => 'Sid ferschüwe',
+'move-page-legend' => 'Sidj fersküüw',
 'movepagetext' => "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.
 Di ual tiitel woort üüb di nei widjerfeerd.
 Dü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjerfeer läät.
@@ -2556,7 +2532,6 @@ Uun didiar faal skel dü a diskusjuunssidjen faan hun tuupfeer.
 Dreeg di '''nei''' tiitel bi '''ööder sidj''' iin, an diaroner '''en grünj''' för't amnäämen.",
 'movearticle' => 'Sidj fersküüw:',
 'moveuserpage-warning' => "'''Paase üüb:''' Dü wel en brükersidj fersküüw. Seenk diaram, dat bluas det brükersidj amnäämd woort, oober '''ei''' di brüker. Hi behäält san ual nööm.",
-'movenologin' => 'Ei uunmeldet',
 'movenologintext' => 'Dü skel registriaret an [[Special:UserLogin|uunmeldet]] wees, am en sidj tu fersküüwen.',
 'movenotallowed' => 'Dü mutst nian sidjen fersküüw.',
 'movenotallowedfile' => 'Dü mutst nian datein fersküüw.',
@@ -2571,8 +2546,6 @@ Dreeg di '''nei''' tiitel bi '''ööder sidj''' iin, an diaroner '''en grünj'''
 'movepage-moved-noredirect' => 'Det maagin faan en widjerfeerang as ferhanert wurden.',
 'articleexists' => 'En sidj mä didiar nööm jaft at al. Wees so gud an nem en öödern nööm.',
 'cantmove-titleprotected' => 'Dü könst det sidj ei so fersküüw, auer di nei nööm speret as.',
-'talkexists' => 'Detdiar sidj as fersköwen wurden, oober det diskusjuunssidj ei, auer diar al son diskusjuunssidj wiar. Fal det salew mä bidracher faan det ual sidj ap.',
-'movedto' => 'fersköwen efter',
 'movetalk' => "Uk det diskusjuunssidj fersküüw, wan't gongt",
 'move-subpages' => 'Onersidjen fersküüw (bit $1)',
 'move-talk-subpages' => "Onersidjen faan't diskusjuunssidj fersküüw (bit $1)",
@@ -3386,15 +3359,10 @@ Ferwisangen uun det salew rä wurd üs ütjnoomen uunsen, huar det datei dach uu
 'exif-urgency-high' => 'Huuch ($1)',
 'exif-urgency-other' => 'Faan a brüker fäästlaanj prioriteet ($1)',
 
-# External editor support
-'edit-externally' => 'Detdiar datei mä en ekstern program bewerke',
-'edit-externally-help' => "(Luk efter uun't [https://www.mediawiki.org/wiki/Manual:External_editors hoonbuk] am muar diartu)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aaltumaal',
 'namespacesall' => 'aaltumaal',
 'monthsall' => 'aaltumaal',
-'limitall' => 'åle',
 
 # Email address confirmation
 'confirmemail' => 'E-mail-adres gudkään',
@@ -3414,7 +3382,6 @@ Ferschük det man noch ans.',
 'confirmemail_success' => 'Din e-mail-adres as gudkäänd wurden.
 Dü könst di nü [[Special:UserLogin|uunmelde]].',
 'confirmemail_loggedin' => 'Din e-mail-adres as gudkäänd wurden.',
-'confirmemail_error' => "Bi't gudkäänen faan din e-mail-adres as wat skiaf gingen.",
 'confirmemail_subject' => '[{{SITENAME}}] E-mail-adres gudkään',
 'confirmemail_body' => 'Gud dai,
 
@@ -3489,6 +3456,11 @@ Ferseekre, dat dü det sidj würelk nei maage wel.",
 'imgmultigo' => 'Widjer',
 'imgmultigoto' => 'Gung tu sidj $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standard spriak)',
+'img-lang-info' => 'Detdiar bil uun $1 amwerke. $2',
+'img-lang-go' => 'Widjer',
+
 # Table pager
 'ascending_abbrev' => 'ap',
 'descending_abbrev' => 'deel',
@@ -3565,8 +3537,18 @@ Dü könst uk det [[Special:EditWatchlist|normool sidj]] tu bewerkin nem.",
 'version-parser-function-hooks' => 'Parser function hooks',
 'version-hook-name' => 'Hook nööm',
 'version-hook-subscribedby' => 'Aprepen faan',
-'version-version' => '(Werjuun $1)',
-'version-license' => 'Lisens',
+'version-version' => '($1)',
+'version-license' => 'MediaWiki-lisens',
+'version-ext-license' => 'Lisens',
+'version-ext-colheader-name' => 'Ütjwidjang',
+'version-ext-colheader-version' => 'Werjuun',
+'version-ext-colheader-license' => 'Lisens',
+'version-ext-colheader-description' => 'Beskriiwang',
+'version-ext-colheader-credits' => 'Skriiwern',
+'version-license-title' => 'Lisens för $1',
+'version-license-not-found' => 'För detdiar ütjwidjang as nian lisens fünjen wurden.',
+'version-credits-title' => 'Soonk för $1',
+'version-credits-not-found' => 'För detdiar ütjwidjang as nään soonk fünjen wurden.',
 'version-poweredby-credits' => "Detheer wääbsteed werket mä '''[https://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
 'version-poweredby-others' => 'öödern',
 'version-poweredby-translators' => 'Auersaatern faan translatewiki.net',
@@ -3584,14 +3566,15 @@ You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU Gen
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Widjerfeerang üüb en brükersidj, sidjenwerjuun of datei.',
+'redirect' => 'Widjerfeerang faan en brüker, en sidj, en sidjenwerjuun of en datei.',
 'redirect-legend' => 'Widjerfeerang üüb en sidjenwerjuun of datei.',
-'redirect-summary' => 'Detdiar spezial-sidj feert widjer üüb en brükersidj, sidjenwerjuun of datei.
-An det woort so brükt: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], of [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Detdiar spezial-sidj feert widjer üüb en brükersidj, sidj, sidjenwerjuun of datei.
+An det woort so brükt:  [[{{#Special:Redirect}}/user/101]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/file/Example.jpg]].',
 'redirect-submit' => 'Widjer',
 'redirect-lookup' => 'Schük:',
 'redirect-value' => 'Käänang of dateinööm:',
 'redirect-user' => 'Brüker-ID',
+'redirect-page' => 'Sidjenkäännumer (ID)',
 'redirect-revision' => 'Sidjenwerjuun',
 'redirect-file' => 'Dateinööm',
 'redirect-not-exists' => 'Wäärs ei fünjen',
@@ -3658,7 +3641,6 @@ An det woort so brükt: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special
 
 # Special:ComparePages
 'comparepages' => 'Sidjen ferglik',
-'compare-selector' => 'Sidjenwerjuunen ferglik',
 'compare-page1' => 'Sidj 1',
 'compare-page2' => 'Sidj 2',
 'compare-rev1' => 'Werjuun 1',
@@ -3787,6 +3769,7 @@ An det woort so brükt: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special
 'api-error-overwrite' => 'Dü könst nian datei auerskriiw, wat al diar as.',
 'api-error-stashfailed' => 'Intern feeler: Di server küd nian tidjwiis datei seekre.',
 'api-error-publishfailed' => 'Intern feeler: Di server küd det tidjwiis datei ei widjer schüür.',
+'api-error-stasherror' => "Bi't huuchschüüren faan detdiar datei as wat skiaf gingen.",
 'api-error-timeout' => 'Di server hää ei rochttidjag swaaret (time-out).',
 'api-error-unclassified' => 'Diar as irgentwat skiaf gingen.',
 'api-error-unknown-code' => 'Ünbekäänd feeler: „$1“',
@@ -3833,10 +3816,12 @@ Uk parser-funktjuunen liküs <code><nowiki>{{</nowiki>#language:…}}</code> an
 'expand_templates_input' => 'Skriiwfial:',
 'expand_templates_output' => 'Resultaat',
 'expand_templates_xml_output' => 'XML-resultaat',
+'expand_templates_html_output' => 'Rä HTML-ütjgoow',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Komentaaren wechnem',
 'expand_templates_remove_nowiki' => "<nowiki>-tags uun't resultaat ei uunwise",
 'expand_templates_generate_xml' => 'XML-parser-buum uunwise',
+'expand_templates_generate_rawhtml' => 'Rä HTML uunwise',
 'expand_templates_preview' => 'Föörskau',
 
 );
index 8d4e90c..879dcb1 100644 (file)
@@ -12,6 +12,7 @@
  * @author Klenje
  * @author MF-Warburg
  * @author Reedy
+ * @author Tocaibon
  * @author Urhixidur
  * @author לערי ריינהארט
  */
@@ -51,7 +52,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Contribûts', 'ContribûtsUtent' ),
        'CreateAccount'             => array( 'CreeIdentitât' ),
        'Deadendpages'              => array( 'PagjinisCenceJessude' ),
-       'Disambiguations'           => array( 'Omonimiis' ),
        'DoubleRedirects'           => array( 'ReIndreçamentsDoplis' ),
        'Emailuser'                 => array( 'MandeEmail' ),
        'Export'                    => array( 'Espuarte' ),
@@ -98,8 +98,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'ModeiNoDoprâts' ),
        'Unwatchedpages'            => array( 'PagjinisNoTignudisDiVoli' ),
        'Upload'                    => array( 'Cjame' ),
-       'Userlogin'                 => array( 'Jentre', 'Login' ),
-       'Userlogout'                => array( 'Jes', 'Logout' ),
+       'Userlogin'                 => array( 'Jentre' ),
+       'Userlogout'                => array( 'Jes' ),
        'Userrights'                => array( 'PermèsUtents' ),
        'Wantedcategories'          => array( 'CategoriisDesideradis' ),
        'Watchlist'                 => array( 'TignudisDiVoli' ),
@@ -122,36 +122,56 @@ $messages = array(
 'tog-underline' => 'Sotlinee leams',
 'tog-justify' => 'Justifiche paragraf',
 'tog-hideminor' => 'Plate lis piçulis modifichis tai ultins cambiaments',
-'tog-usenewrc' => 'Dopre i ultins cambiaments avanzâts (covente JavaScript)',
+'tog-hidepatrolled' => 'Plate lis modifichis controladis intai ultins cambiaments',
+'tog-newpageshidepatrolled' => 'Plate lis pagjinis verificadis de liste des pagjinis gnovis',
+'tog-extendwatchlist' => 'Slargje la liste des controladis specialis, no dome aes ultimis',
+'tog-usenewrc' => 'Ragrupe lis modifichis par pagjine intes ultimis modifichis e inati oservâts speciai',
 'tog-numberheadings' => 'Numerazion automatiche dai titui',
 'tog-showtoolbar' => 'Mostre sbare dai imprescj pe modifiche (JavaScript)',
-'tog-editondblclick' => 'Cambie lis pagjinis fracant dôs voltis (JavaScript)',
+'tog-editondblclick' => 'Cambie lis pagjinis fracant dôs voltis',
 'tog-editsection' => 'Inserìs un leam [cambie] pe editazion veloç di une sezion',
-'tog-editsectiononrightclick' => 'Modifiche une sezion fracant cul tast diestri<br /> sui titui des sezions (JavaScript)',
+'tog-editsectiononrightclick' => 'Modifiche une sezion fracant cul tast diestri<br /> sui titui des sezions',
 'tog-showtoc' => 'Mostre la tabele dai contignûts pes pagjinis cun plui di 3 sezions',
 'tog-rememberpassword' => 'Visiti di me su chest sgarfadôr (par un massim di $1 {{PLURAL:$1|zornade|zornadis}})',
+'tog-watchcreations' => 'Zonte  lis pagjinis creadis e i file cjariats aes oservadis specials',
 'tog-watchdefault' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
+'tog-watchmoves' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
+'tog-watchdeletion' => 'Zonte in automatic lis pagjinis che o cambii inte liste di chês tignudis di voli',
 'tog-minordefault' => 'Imposte come opzion predeterminade ducj i cambiaments come piçui',
 'tog-previewontop' => 'Mostre anteprime parsore dal spazi pe modifiche',
 'tog-previewonfirst' => 'Mostre anteprime te prime modifiche',
-'tog-nocache' => 'Disative la memorie cache des pagjinis dal sgarfadôr',
-'tog-enotifwatchlistpages' => 'Mandimi une email se la pagjine e gambie',
+'tog-enotifwatchlistpages' => 'Mandimi une email se la pagjine o un file al gambie',
 'tog-enotifusertalkpages' => 'Mandimi une email cuant che la mê pagjine di discussion e gambie',
 'tog-enotifminoredits' => 'Mandimi une email ancje pai piçui cambiaments ae pagjine',
 'tog-enotifrevealaddr' => 'Distapone fûr il gno recapit email tai messaçs di notifiche',
 'tog-shownumberswatching' => 'Mostre il numar di utents che a stan tignint di voli',
+'tog-oldsig' => 'Firme esistente',
 'tog-fancysig' => 'Interprete lis firmis come test wiki (cence un leam automatic)',
+'tog-uselivepreview' => 'Dopre la anteprime direte (sperimentâl)',
+'tog-forceeditsummary' => 'Domande conferme se il cjamp ogjet al è vueit',
 'tog-watchlisthideown' => 'Plate i miei cambiaments inte liste des pagjinis tignudis di voli',
+'tog-watchlisthidebots' => 'Plate i bot de liste dai oservâts speciai',
+'tog-watchlisthideminor' => 'Plate i piçui cambiaments de liste dai oservâts speciai',
+'tog-watchlisthideliu' => 'Plate lis modifichis dai utents regjstrâts de liste dai oservâts speciai',
+'tog-watchlisthideanons' => 'Palte lis modifichis dai utents anonims dai oservâts speciai',
+'tog-watchlisthidepatrolled' => 'Plate lis modifichis verificadis de liste dai oservâts speciai',
 'tog-ccmeonemails' => 'Mandimi une copie dai messaçs che o mandi ai altris utents',
+'tog-diffonly' => 'No mostrâ la pagjine dopo il control des versions',
 'tog-showhiddencats' => 'Mostre categoriis platadis',
+'tog-norollbackdiff' => 'No mostrâ lis diferencis dopo vê revocât une pagjine',
 'tog-useeditwarning' => 'Visimi cuant che o stoi par lassâ une pagjine dulà che a son cambiaments no salvâts',
+'tog-prefershttps' => 'Dopre simpri une conession sigure par acedi',
 
 'underline-always' => 'Simpri',
 'underline-never' => 'Mai',
-'underline-default' => 'Predeterminât dal sgarfadôr',
+'underline-default' => 'Ten ilis impostazions dal Browser o de skin che tu stâs doprant',
 
 # Font style option in Special:Preferences
+'editfont-style' => 'Stîl di caratar de aree di scriture',
 'editfont-default' => 'Predeterminât dal sgarfadôr',
+'editfont-monospace' => 'Caratar a lungjece fisse',
+'editfont-sansserif' => 'Caratar sans-serif',
+'editfont-serif' => 'Caratar di scriture serif',
 
 # Dates
 'sunday' => 'Domenie',
@@ -204,6 +224,18 @@ $messages = array(
 'oct' => 'Otu',
 'nov' => 'Nov',
 'dec' => 'Dic',
+'january-date' => '$1 di Zenâr',
+'february-date' => '$1 di Fevrâr',
+'march-date' => '$1 di Març',
+'april-date' => '$1 di Avrîl',
+'may-date' => '$1 di Mai',
+'june-date' => '$1 di Jugn',
+'july-date' => '$1 di Lui',
+'august-date' => '$1 di Avost',
+'september-date' => '$1 di Setembar',
+'october-date' => '$1 di Otubar',
+'november-date' => '$1 di Novembar',
+'december-date' => '$1 di Dicembar',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categorie|Categoriis}}',
@@ -220,14 +252,17 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Cheste categorie e conten dome un file, mostrât ca sot.|Cheste categorie e conten {{PLURAL:$1|un file, mostrât|$1 files, mostrâts}} ca sot, suntun totâl di $2.}}',
 'category-file-count-limited' => 'Cheste categorie e conten {{PLURAL:$1|il file mostrât|i $1 files mostrâts}} ca sot.',
 'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Pagjinis indicizadis',
 'noindex-category' => 'Pagjinis no indicizadis',
+'broken-file-category' => 'Pagjnis cun leams a file no corets',
 
 'about' => 'Informazions',
 'article' => 'Vôs',
 'newwindow' => '(al vierç un gnûf barcon)',
 'cancel' => 'Scancele',
 'moredotdotdot' => 'Plui...',
-'mypage' => 'Mê pagjine',
+'morenotlisted' => 'La liste no je complete',
+'mypage' => 'Pagjine',
 'mytalk' => 'Discussions',
 'anontalk' => 'Discussion par chest IP',
 'navigation' => 'somari',
@@ -239,8 +274,8 @@ $messages = array(
 'qbedit' => 'Cambie',
 'qbpageoptions' => 'Cheste pagjine',
 'qbmyoptions' => 'Mês pagjinis',
-'qbspecialpages' => 'Pagjinis speciâls',
 'faq' => 'Domandis plui frecuentis',
+'faqpage' => 'Project:FAQ',
 
 # Vector skin
 'vector-action-addsection' => 'Gnove sezion',
@@ -248,7 +283,8 @@ $messages = array(
 'vector-action-move' => 'Môf',
 'vector-action-protect' => 'Protêç',
 'vector-action-undelete' => 'Recupere',
-'vector-action-unprotect' => 'No stâ protezi',
+'vector-action-unprotect' => 'Gambie la protezion',
+'vector-simplesearch-preference' => 'Abilite la bare di ricjerche semplificade (dome pe Vector Skin)',
 'vector-view-create' => 'Cree',
 'vector-view-edit' => 'Cambie',
 'vector-view-history' => 'Cjale il storic',
@@ -258,6 +294,7 @@ $messages = array(
 'namespaces' => 'Spazis dai nons',
 'variants' => 'Variants',
 
+'navigation-heading' => 'Menù di Navigazion',
 'errorpagetitle' => 'Erôr',
 'returnto' => 'Torne a $1.',
 'tagline' => 'Di {{SITENAME}}',
@@ -279,13 +316,14 @@ $messages = array(
 'create-this-page' => 'Cree cheste pagjine',
 'delete' => 'Elimine',
 'deletethispage' => 'Elimine cheste pagjine',
+'undeletethispage' => 'Recupere cheste pagjine',
 'undelete_short' => 'Recupere {{PLURAL:$1|modifiche eliminade|$1 modifichis eliminadis}}',
 'viewdeleted_short' => 'Viôt {{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}',
 'protect' => 'Protêç',
 'protect_change' => 'cambie',
 'protectthispage' => 'Protêç cheste pagjine',
-'unprotect' => 'No stâ protezi',
-'unprotectthispage' => 'No stâ plui protezi cheste pagjine',
+'unprotect' => 'Gambie la protezion',
+'unprotectthispage' => 'Gambie la protezion di cheste pagjine',
 'newpage' => 'Gnove pagjine',
 'talkpage' => 'Fevelin di cheste pagjine',
 'talkpagelinktext' => 'discussion',
@@ -313,12 +351,17 @@ $messages = array(
 'jumpto' => 'Va a:',
 'jumptonavigation' => 'navigazion',
 'jumptosearch' => 'ricercje',
+'view-pool-error' => 'Scusinus ma i server a son sovrecjariats in chest moment. Masse utents a stan cjalant cheste pagjnie. Torne a provâ fra cualchi minût.
+
+$1',
+'pool-timeout' => 'Timeout durant la spiete dal sbolc.',
+'pool-queuefull' => 'La code dal pool e je plene',
 'pool-errorunknown' => 'Erôr no cognossût',
 
 # 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).
 'aboutsite' => 'Informazions su {{SITENAME}}',
 'aboutpage' => 'Project:Informazions',
-'copyright' => 'Il contignût al è disponibil sot de $1',
+'copyright' => 'Il contignût al è disponibil sot de licence $1 se nol è specificât in altre maniere',
 'copyrightpage' => '{{ns:project}}:Copyrights',
 'currentevents' => 'Lis gnovis',
 'currentevents-url' => 'Project:Lis gnovis',
@@ -328,18 +371,27 @@ $messages = array(
 'helppage' => 'Help:Contignûts',
 'mainpage' => 'Pagjine principâl',
 'mainpage-description' => 'Pagjine principâl',
+'policy-url' => 'Project:Politiche',
 'portal' => 'Ostarie',
 'portal-url' => 'Project:Ostarie',
 'privacy' => 'Politiche pe privacy',
 'privacypage' => 'Project:Politiche_pe_privacy',
 
 'badaccess' => 'Permès no suficients',
+'badaccess-group0' => 'No tu sês autorizât a  eseguî la azion domandade',
+'badaccess-groups' => 'La azione domandade è je pussibile dome dai utents {{PLURAL:$2|dal grup|di un di chescj grups}}: $1.',
 
 'versionrequired' => 'E covente la version $1 di MediaWiki',
+'versionrequiredtext' => 'La version $1 de MediaWiki a covente par doprâ cheste pagjine.
+Cjale la [[Special:Version|pagjine de version]].',
 
 'ok' => 'Va ben',
 'retrievedfrom' => 'Cjapât fûr di $1',
 'youhavenewmessages' => 'Tu âs $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Tu âs}} $1 da {{PLURAL:$3|un altri utent|$3 utens}} ($2).',
+'youhavenewmessagesmanyusers' => 'Tu âs $1 di tancj utents ($2)',
+'newmessageslinkplural' => '{{PLURAL:$1|un gnûf messaç|999=gnûfs messaçs}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ultin cambiament|999=ultins cambiaments}}',
 'youhavenewmessagesmulti' => 'Tu âs gnûfs messaçs su $1',
 'editsection' => 'cambie',
 'editold' => 'cambie',
@@ -356,11 +408,15 @@ $messages = array(
 'viewdeleted' => 'Vuelistu viodi $1?',
 'restorelink' => '{{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}',
 'feedlinks' => 'Canâl (feed):',
+'feed-invalid' => 'Modalitât di iscrizion al feed no valide',
+'feed-unavailable' => 'No son disponibîi feeds',
 'site-rss-feed' => 'Canâl RSS di $1',
 'site-atom-feed' => 'Canâl Atom di $1',
 'page-rss-feed' => 'Canâl RSS par "$1"',
 'page-atom-feed' => 'Canâl Atom par "$1"',
 'red-link-title' => '$1 (la pagjine no esist)',
+'sort-descending' => 'Ordinament decressint',
+'sort-ascending' => 'Ordinament cressint',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Vôs',
@@ -375,6 +431,9 @@ $messages = array(
 'nstab-category' => 'Categorie',
 
 # Main script and global functions
+'nosuchaction' => 'Azion no pussibile',
+'nosuchactiontext' => "La azion specificade inte URL no je valide. Forsit la URL no je stade scrite juste o forsit il leam no l'è valit. Forsit al è un bug in {{SITENAME}}.",
+'nosuchspecialpage' => 'Pagjine speciâl no disponibil',
 'nospecialpagetext' => '<strong>Tu âs cirût une pagjine speciâl no valide.</strong>
 
 Une liste des pagjinis speciâls validis a si pues cjatâ su [[Special:SpecialPages|{{int:specialpages}}]].',
@@ -382,8 +441,14 @@ Une liste des pagjinis speciâls validis a si pues cjatâ su [[Special:SpecialPa
 # General errors
 'error' => 'Erôr',
 'databaseerror' => 'Erôr de base di dâts',
+'databaseerror-text' => 'Erôr inte interogazion dal database. Forsit al è un bug intal software.',
+'databaseerror-textcl' => 'Erôr inte interogazion dal database.',
+'databaseerror-query' => 'Interogazion: $1',
+'databaseerror-function' => 'Funzion $1',
+'databaseerror-error' => 'Erôr: $1',
 'laggedslavemode' => 'Atenzion: La pagjine podarès no segnalâ inzornaments recents.',
 'readonly' => 'Base di dâts blocade',
+'enterlockreason' => 'Scrivi il motîf dal bloc e indicâ cuant che al varès di jessi gjavât.',
 'readonlytext' => "La base di dâts pal moment e je blocade e no si puedin zontâ vôs e fâ modifichis, probabilmentri pe normâl manutenzion de base di dâts, daspò de cuâl dut al tornarà normâl.
 
 L'aministradôr ch'al à metût il bloc al à scrit cheste motivazion: $1",
@@ -394,18 +459,49 @@ Chest in gjenar al è causât dal jessi lâts daûr dal leam a une pagjine che e
 Se la cause no samee jessi cheste, tu podaressis vê cjatât un problem tal software.
 Segnalilu par plasê a un [[Special:ListUsers/sysop|administrator]], notant la URL.',
 'missingarticle-rev' => '(numar de revision: $1)',
+'missingarticle-diff' => '(Dif.: $1, $2)',
+'readonly_lag' => 'Par cumò il database al è stât blocât pe sincronizazion cul server',
+'internalerror' => 'Erôr interni',
+'internalerror_info' => 'Erôr interni: $1',
+'fileappenderrorread' => 'No si pues lei "$1" durant òa zonte',
+'fileappenderror' => 'No si pues tacâ "$1" a "$2"',
+'filecopyerror' => 'No si pues copiâ il file "$1" in "$2"',
+'filerenameerror' => 'No si pues rinominâ "$1" in "$2"',
 'filedeleteerror' => 'No si pues eliminâ il file "$1".',
+'directorycreateerror' => 'No si pues creâ la cartele "$1"',
 'filenotfound' => 'No si pues cjatâ il file "$1".',
+'fileexistserror' => 'No si pues scrivi il file "$1": al esist zà',
+'unexpected' => 'Valor no proviodût: "$1" = "$2"',
+'formerror' => 'Erôr: no si rive a mandâ il form',
+'badarticleerror' => 'Operazion no permetude in cheste pagjine',
+'cannotdelete' => 'La pagjine o il file "$1" no si pues concelâ. 
+Podarès jessi stât cancelât di cualchidun altri.',
+'cannotdelete-title' => 'No si pues cancelâ la pagjine "$1"',
+'delete-hook-aborted' => 'La cancelazion e je stade anulade di un hook. 
+No je une spigazion disponibile.',
+'no-null-revision' => 'No si pues creâ une version vuedie de pagjine "$1"',
 'badtitle' => 'Titul sbaliât',
 'badtitletext' => 'Il titul de pagjine che tu âs inserît nol è valit, al è vuelit, o al veve un erôr tal colegament tra wiki diviersis o tra versions in altris lenghis.
 Al podarès vê dentri caratars che no podin jessi doprâts tai titui.',
+'perfcached' => 'I dats seguints a vegnin di une copie de "cache" dal database e a podaressin no jessi inzornâts. La cache e rive a tignî al massim  {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'perfcachedts' => 'I dats seguints a vegnin di une copie de "cache" dal database dal $1 e a podaressin no jessi inzornâts. La cache e rive a tignî al massim  {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'querypage-no-updates' => 'Inzornaments de pagjine a son al moment sospindûts. I dats metûts no saràn salvâts.',
 'viewsource' => 'Cjale risultive',
+'viewsource-title' => 'Cjale il codiç di $1',
+'actionthrottled' => 'Azion ritardade',
+'actionthrottledtext' => 'Come misure anti-spam tu âs des limitazion tal fâ cheste azion masse voltis in toc di timp curt. Il limit al è stât superât. Tu puedis tornâ a provâ fra cualchi minût.',
+'protectedpagetext' => 'Pagjine protete par evitâ modifichis o altris azions.',
 'viewsourcetext' => 'Tu puedis viodi e copiâ la risultive di cheste pagjine:',
+'viewyourtext' => 'Tu puedis viodi o copiâ il codiç des "tôs modifichis" in cheste pagjine.',
+'ns-specialprotected' => 'Lis pagjinis specialis no si puedin modificâ',
+'exception-nologin' => 'No tu sês jentrât',
+
+# Virus scanner
+'virus-unknownscanner' => 'antivirus no cognossût:',
 
 # Login and logout pages
-'logouttext' => "'''Tu sâs cumò lât fûr.'''
+'logouttext' => "'''Tu sës cumò lât fûr.'''
 
-Tu puedis continuâ a doprâ {{SITENAME}} come anonim, o tu puedis <span class='plainlinks'>[$1 jentrâ di gnûf]</span> cul stes o cuntun altri non utent.
 Considere che cualchi pagjine e pues mostrâti ancjemò come jentrât tal sît fin cuant che no tu netis la memorie cache dal sgarfadôr.",
 'yourname' => 'Non utent',
 'yourpassword' => 'Peraule clâf',
@@ -444,7 +540,7 @@ Considere che cualchi pagjine e pues mostrâti ancjemò come jentrât tal sît f
 'wrongpasswordempty' => 'La peraule clâf inseride e je vueide. Torne a provâ.',
 'passwordtooshort' => 'La peraule clâf e à di jessi di almancul {{PLURAL:$1|1 caratar|$1 caratars}}.',
 'password-name-match' => 'La peraule clâf e à di jessi divierse dal to non utent.',
-'mailmypassword' => 'Mande une gnove peraule clâf ae me direzion di pueste eletroniche',
+'mailmypassword' => 'Azere la password',
 'passwordremindertitle' => 'Gnove peraule clâf temporanie par {{SITENAME}}',
 'passwordremindertext' => 'Cualchidun (probabilmentri tu, de direzion IP $1) al à domandât une gnove peraule clâf par jentrâ in {{SITENAME}} ($4).
 Une peraule clâf temporanie par l\'utent "$2" e je stade creade e impuestade a "$3". Se cheste e jere la tô intenzion, tu varâs di jentrâ e sielzi une gnove peraule clâf cumò. La to peraule clâf temporanie e scjadarà daspò {{PLURAL:$5|une zornade|$5 zornadis}}.
@@ -466,7 +562,7 @@ Prime di ricevi cualsisei altri messaç di pueste, tu scugnis seguî lis istruzi
 'loginlanguagelabel' => 'Lenghe: $1',
 
 # Change password dialog
-'resetpass' => 'Gambie peraule clâf',
+'changepassword' => 'Gambie peraule clâf',
 'resetpass_header' => 'Cambie peraule clâf de identitât',
 'oldpassword' => 'Vecje peraule clâf',
 'newpassword' => 'Gnove peraule clâf',
@@ -611,8 +707,8 @@ Cualchi model nol vignarà includût.",
 Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la version precedente, '''p''' = piçul cambiament",
 'history-fieldset-title' => 'Sgarfe tal storic',
 'history-show-deleted' => 'Dome chei eliminâts',
-'histfirst' => 'Prime',
-'histlast' => 'Ultime',
+'histfirst' => 'Lis plui vieris',
+'histlast' => 'Lis plui gnovis',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(vueide)',
 
@@ -629,8 +725,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'revdelete-radio-set' => 'Sì',
 'revdelete-radio-unset' => 'No',
 'revdel-restore' => 'cambie visibilitât',
-'revdel-restore-deleted' => 'revisions eliminadis',
-'revdel-restore-visible' => 'revisions visibilis',
 'pagehist' => 'Storic de pagjine',
 'revdelete-reasonotherlist' => 'Altri motîf',
 
@@ -647,12 +741,8 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 # Search results
 'searchresults' => 'Risultâts de ricercje',
 'searchresults-title' => 'Risultâts de ricercje di "$1"',
-'searchresulttext' => 'Par plui informazions su lis ricercjis in {{SITENAME}}, cjale [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ricercje di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dutis lis pagjinis che a scomencin par "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dutis lis pagjinis che a pontin a "$1"]])',
-'searchsubtitleinvalid' => 'Pal test "$1"',
 'toomanymatches' => 'Masse risultâts, prove par plasê une ricercje divierse.',
 'titlematches' => 'Corispondencis tai titui des pagjinis',
-'notitlematches' => 'Nissune corispondence tai titui des pagjinis',
 'textmatches' => 'Corispondencis tal test des pagjinis',
 'notextmatches' => 'Nissune corispondence tal test des pagjinis',
 'prevn' => 'precedents {{PLURAL:$1|$1}}',
@@ -661,7 +751,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'nextn-title' => '$1 {{PLURAL:$1|risultât sucessîf|risultâts sucessîfs}}',
 'shown-title' => 'Mostre $1 {{PLURAL:$1|risultât|risultâts}} par pagjine',
 'viewprevnext' => 'Cjale ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzions de ricercje',
 'searchmenu-exists' => "'''E je une pagjine di non \"[[:\$1]]\" su cheste wiki'''",
 'searchmenu-new' => "'''Cree la pagjine \"[[:\$1]]\" su cheste wiki!'''",
 'searchprofile-articles' => 'Pagjinis di contignûts',
@@ -683,19 +772,15 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'search-interwiki-caption' => 'Progjets fradis',
 'search-interwiki-default' => 'Risultâts di $1:',
 'search-interwiki-more' => '(altri)',
-'mwsuggest-disable' => 'Disative i sugjeriments AJAX',
 'searchrelated' => 'leâts',
 'searchall' => 'ducj',
 'showingresults' => "Ca sot {{PLURAL:$1|al è fin a '''1''' risultât|a son fin a '''$1''' risultâts}} scomençant dal numar '''$2'''.",
 'showingresultsnum' => "Ca sot {{PLURAL:$3|al è '''1''' risultât|a son '''$3''' risultâts}} scomençant dal numar '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultât '''$1''' su '''$3'''|Risultâts '''$1 - $2''' su '''$3'''}} par '''$4'''",
-'nonefound' => "'''Note''': la ricercje e ven fate normalmentri dome in cualchi spazi dai nons. Prove a scrivi ''all:'' prime dal test di cjatâ par cirî in ducj i nons dai spazis (includint lis pagjinis di discussion, i modei e v.i.) o se no dopre il non dal spazi desiderât come prefìs.",
 'search-nonefound' => 'Nissun risultât par cheste ricercje.',
-'powersearch' => 'Cîr',
 'powersearch-legend' => 'Ricercje avanzade',
 'powersearch-ns' => 'Cîr tai spazis dai nons:',
 'powersearch-redir' => 'Elenc re-indreçaments',
-'powersearch-field' => 'Cîr',
 'search-external' => 'Ricercje esterne',
 'searchdisabled' => 'La ricercje in {{SITENAME}} no je ative. Tu puedis doprâ Google intant. Sta atent che lis lôr tabelis sul contignût di {{SITENAME}} a puedin jessi pôc inzornadis.',
 
@@ -703,7 +788,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'preferences' => 'Preferencis',
 'mypreferences' => 'Preferencis',
 'prefs-edits' => 'Numar di cambiaments fats:',
-'changepassword' => 'Gambie peraule clâf',
 'prefs-skin' => 'Mascare',
 'skin-preview' => 'Anteprime',
 'datedefault' => 'Nissune preference',
@@ -718,13 +802,11 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'prefs-misc' => 'Variis',
 'prefs-resetpass' => 'Cambie la peraule clâf',
 'saveprefs' => 'Salve lis preferencis',
-'resetprefs' => 'Predeterminât',
 'restoreprefs' => 'Torne a lis impostazions predeterminadis',
 'prefs-editing' => 'Cambiament',
 'rows' => 'Riis',
 'columns' => 'Colonis:',
 'searchresultshead' => 'Ricercje',
-'resultsperpage' => 'Risultâts par pagjine',
 'stub-threshold' => 'Valôr minim pe formatazion dai <a href="#" class="stub">leams aboç</a> (bytes):',
 'recentchangesdays' => 'Numar di zornadis di mostrâ tai ultins cambiaments:',
 'recentchangesdays-max' => '(massim $1 {{PLURAL:$1|zornade|zornadis}})',
@@ -734,7 +816,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'localtime' => 'Ore locâl:',
 'timezoneuseserverdefault' => 'Dopre la ore dal servidôr ($1)',
 'timezoneuseoffset' => 'Altri (inserìs la difarence)',
-'timezoneoffset' => 'Difarence¹:',
 'servertime' => 'Ore dal servidôr:',
 'guesstimezone' => 'Cjape impostazions dal sgarfadôr',
 'timezoneregion-africa' => 'Afriche',
@@ -747,7 +828,7 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'timezoneregion-indian' => 'Ocean Indian',
 'timezoneregion-pacific' => 'Ocean Pacific',
 'allowemail' => 'Ative la ricezion di messaçs email di bande di altris utents¹',
-'prefs-searchoptions' => 'Opzions de ricercje',
+'prefs-searchoptions' => 'Cîr',
 'prefs-namespaces' => 'Spazis dai nons',
 'defaultns' => 'Se no, cîr in chescj spazis dai nons:',
 'default' => 'predeterminât',
@@ -756,7 +837,7 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
 'prefs-custom-js' => 'JS personalizât',
 'prefs-emailconfirm-label' => 'Conferme de pueste eletroniche:',
 'youremail' => 'Email *',
-'username' => 'Non utent:',
+'username' => '{{GENDER:$1|Non utent}}:',
 'uid' => 'ID utent:',
 'prefs-memberingroups' => 'Al fâs part {{PLURAL:$1|dal grup|dai grups}}:',
 'prefs-registration' => 'Date di regjistrazion:',
@@ -820,12 +901,12 @@ La tô direzion di pueste no ven mostrade cuant che i utents ti contatin.',
 'recentchanges-label-minor' => 'Chest al è un piçul cambiament',
 'recentchanges-label-bot' => 'Chest cambiament al è stât eseguît di un bot',
 'recentchanges-label-unpatrolled' => 'Chest cambiament nol è stât ancjemò verificât',
-'rcnote' => "Ca sot tu cjatis {{PLURAL:$1|l'ultin cambiament|i ultins '''$1''' cambiaments}} al sît {{PLURAL:$2|intes ultimis 24 oris|tes ultimis '''$2''' zornadis}}; i dâts a son inzornâts ai $4 a lis $5.",
+'recentchanges-label-plusminus' => 'La dimension de pagjine e je cambiade di chest numar di byte',
 'rcnotefrom' => "Ca sot i cambiaments dal '''$2''' (fintremai al '''$1''').",
 'rclistfrom' => 'Mostre i ultins cambiaments dal $1',
 'rcshowhideminor' => '$1 i piçui cambiaments',
 'rcshowhidebots' => '$1 i bots',
-'rcshowhideliu' => '$1 utents jentrâts',
+'rcshowhideliu' => '$1 utents regjstrâts',
 'rcshowhideanons' => '$1 utents anonims',
 'rcshowhidepatr' => '$1 cambiaments verificâts',
 'rcshowhidemine' => '$1 miei cambiaments',
@@ -841,7 +922,7 @@ La tô direzion di pueste no ven mostrade cuant che i utents ti contatin.',
 'rc_categories' => 'Limite aes categoriis (dividilis cun "|")',
 'rc_categories_any' => 'Cualsisei',
 'newsectionsummary' => '/* $1 */ gnove sezion',
-'rc-enhanced-expand' => 'Mostre detais (al covente JavaScript)',
+'rc-enhanced-expand' => 'Cjale i detais (al covente JavaScript)',
 'rc-enhanced-hide' => 'Plate detais',
 
 # Recent changes linked
@@ -1057,9 +1138,6 @@ Tu puedis strenzi la viodude sielzint un gjenar di regjistri, un non utent e/o l
 'allpagesto' => 'Mostre lis pagjinis fin a:',
 'allarticles' => 'Dutis lis vôs',
 'allinnamespace' => 'Dutis lis pagjinis (non dal spazi $1)',
-'allnotinnamespace' => 'Dutis lis pagjinis (no tal non dal spazi $1)',
-'allpagesprev' => 'Precedent',
-'allpagesnext' => 'Prossim',
 'allpagessubmit' => 'Va',
 'allpagesprefix' => 'Mostre lis pagjinis che a scomencin cun:',
 
@@ -1238,9 +1316,9 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
 'contributions' => 'Contribûts {{GENDER:$1|dal utent|de utente}}',
 'contributions-title' => 'Contribûts di $1',
 'mycontris' => 'Contribûts',
-'contribsub2' => 'Par $1 ($2)',
+'contribsub2' => 'Par {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Nissun cambiament che al rispiete chescj criteris cjatât.',
-'uctop' => ' (su)',
+'uctop' => 'atuâl',
 'month' => 'Scomençant dal mês (e prime):',
 'year' => 'Scomençant dal an (e prime):',
 
@@ -1277,12 +1355,10 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
 
 # Block/unblock
 'blockip' => 'Bloche utent',
-'blockip-title' => "Bloche l'utent",
 'blockip-legend' => "Bloche l'utent",
 'ipadressorusername' => 'Direzion IP o non utent:',
 'ipbexpiry' => 'Scjadence dal bloc:',
 'ipbreason' => 'Reson dal bloc:',
-'ipbreasonotherlist' => 'Altri motîf',
 'ipbsubmit' => 'Bloche chest utent',
 'ipboptions' => '2 oris:2 hours,1 zornade:1 day,3 zornadis:3 days,1 setemane:1 week,2 setemanis:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,infinît:infinite',
 'badipaddress' => 'La direzion IP no je valide',
@@ -1306,7 +1382,7 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
 'move-page-legend' => 'Môf pagjine',
 'movepagetext' => "Cun il formulari ca sot tu puedis gambiâ il non a une pagjine, movint dut il sô storic al gnûf non.
 Il vieri titul al deventarà une pagjine di reindirizament al gnûf titul. I leams ae vecje pagjine no saran gambiâts; verifiche
-par plasê che no sedin reindirizaments doplis o no funzionants.
+par plasê che no sedin reindirizaments  [[Special:DoubleRedirects|doplis]] o [[Special:BrokenRedirects|no funzionants]].
 Tu sês responsabil che i leams a continui a mandâ tal puest just.
 
 Note che la pagjine '''no''' sarà movude se e je za une pagjine cul gnûf titul, a mancul che no sedi vueide o un reindirizament e
@@ -1323,7 +1399,6 @@ tu âs di cognossi lis conseguencis prime di lâ indevant.",
 
 In chescj câs, tu varâs di movi o unî a man lis informazions contignudis te pagjine di discussion, se tu lu desideris.",
 'movearticle' => 'Môf la vôs',
-'movenologin' => 'No tu sês jentrât',
 'movenologintext' => 'Tu âs di jessi un utent regjistrât e [[Special:UserLogin|jentrât]] par movi une pagjine.',
 'movenotallowed' => 'No tu âs i permès che a coventin par movi lis pagjinis.',
 'newtitle' => 'Al gnûf titul',
@@ -1333,8 +1408,6 @@ In chescj câs, tu varâs di movi o unî a man lis informazions contignudis te p
 'movepage-moved' => '\'\'\'"$1" e je stade movude al titul "$2"\'\'\'',
 'articleexists' => 'Une pagjine cun chest non e esist za, o il non sielt nol è valit.
 Sielç par plasê un altri non.',
-'talkexists' => "'''La pagjine e je stade movude cun sucès, ma no si à podût movi la pagjine di discussion parcè che e esist za tal gnûf titul. Trasferìs il contignût a man par plasê.'''",
-'movedto' => 'Movude in',
 'movetalk' => 'Môf ancje la pagjine di discussion, se pussibil.',
 'movelogpage' => 'Regjistri des pagjinis movudis',
 'movelogpagetext' => 'Ca sot e je une liste des pagjinis movudis.',
@@ -1475,7 +1548,7 @@ Par plasê va su [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisa
 'file-info-size' => '$1 × $2 pixel, dimensions: $3, gjenar MIME: $4',
 'file-nohires' => 'No son disponibilis versions cun risoluzion plui alte.',
 'svg-long-desc' => 'file tal formât SVG, dimensions nominâls $1 × $2 pixels, dimensions dal file: $3',
-'show-big-image' => 'Version a risoluzion plene',
+'show-big-image' => 'File origjnâl',
 
 # Special:NewFiles
 'newimages' => 'Galarie dai gnûfs files',
@@ -1538,10 +1611,6 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
 
 'exif-orientation-1' => 'Normâl',
 
-# External editor support
-'edit-externally' => 'Modifiche chest file cuntune aplicazion esterne',
-'edit-externally-help' => '(Cjale lis [https://www.mediawiki.org/wiki/Manual:External_editors istruzions] par vê altris informazions)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'dutis',
 'namespacesall' => 'ducj',
index 0908a69..b59ae53 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Geitost
+ * @author Kening Aldgilles
  * @author Maartenvdbent
  * @author Purodha
  * @author Pyt
@@ -75,7 +76,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Meidogger-bydragen', 'Meidogger bydragen', 'Bydragen', 'Brûker bydragen' ),
        'CreateAccount'             => array( 'Nije ynstellings oanmeitsje', 'Nijeynstellingsoanmeitsje' ),
        'Deadendpages'              => array( 'Siden sûnder keppelings', 'Siden sûnder ferwizings', 'Siden sûnder links' ),
-       'Disambiguations'           => array( 'Betsjuttingssiden', 'Trochferwizings' ),
        'DoubleRedirects'           => array( 'Dûbele trochferwizings', 'Dûbeletrochferwizings' ),
        'Emailuser'                 => array( 'Skriuw meidogger', 'Skriuw dizze brûker', 'Skriuw dizze meidogger' ),
        'Export'                    => array( 'Eksportearje' ),
@@ -165,13 +165,12 @@ $messages = array(
 'tog-minordefault' => 'Feroarings yn it earst oanjaan as tekstwizigings.',
 'tog-previewontop' => 'By it neisjen, bewurkingsfjild ûnderoan sette',
 'tog-previewonfirst' => 'Lit foarbyld sjen by earste wiziging',
-'tog-nocache' => 'Gjin oerslach brûke',
 'tog-enotifwatchlistpages' => 'E-mail my as in side op myn folchlist feroare is.',
 'tog-enotifusertalkpages' => 'E-mail my as myn oerlisside feroare wurdt',
 'tog-enotifminoredits' => 'E-mail my ek by lytse feroarings fan siden op myn folchlist',
 'tog-enotifrevealaddr' => 'Myn e-mailadres sjen litte yn e-mailberjochten',
 'tog-shownumberswatching' => 'It tal brûkers sjen litte dat dizze side folget',
-'tog-oldsig' => 'Hûdige sinjatuerprintallyk:',
+'tog-oldsig' => 'Aktuele sinjatuerprintallyk:',
 'tog-fancysig' => 'Sinjatuer as wikitekst behannelje (sûnder automatyske keppeling)',
 'tog-uselivepreview' => '"live proefbyld" brûke (JavaScript nedich - eksperimenteel)',
 'tog-forceeditsummary' => 'Warskôgje at ik de gearfetting leech lit.',
@@ -247,6 +246,18 @@ $messages = array(
 'oct' => 'okt',
 'nov' => 'nov',
 'dec' => 'des',
+'january-date' => '$1 jannewaris',
+'february-date' => '$1 febrewaris',
+'march-date' => '$1 maart',
+'april-date' => '$1 april',
+'may-date' => '$1 maaie',
+'june-date' => '$1 juny',
+'july-date' => '$1 july',
+'august-date' => '$1 augustus',
+'september-date' => '$1 septimber',
+'october-date' => '$1 oktober',
+'november-date' => '$1 novimber',
+'december-date' => '$1 desimber',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Kategory|Kategoryen}}',
@@ -263,6 +274,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|Dizze kategory befettet de folgjende triem.|Dizze kategory befettet {{PLURAL:$1|de folgjende triem|$1 de folgjende triemmen}}, fan yn totaal $2.}}',
 'category-file-count-limited' => 'Dizze kategory befettet {{PLURAL:$1|de folgjende triem|de folgjende $1 triemmen}}.',
 'listingcontinuesabbrev' => '(ferfolch)',
+'index-category' => 'Yndeksearre siden',
+'noindex-category' => 'Net-yndeksearre siden',
 
 'about' => 'Ynfo',
 'article' => 'Ynhâld side',
@@ -281,7 +294,6 @@ $messages = array(
 'qbedit' => 'Bewurkje',
 'qbpageoptions' => 'Side-opsjes',
 'qbmyoptions' => 'Myn Opsjes',
-'qbspecialpages' => 'Bysûndere siden',
 'faq' => 'FAQ (faak stelde fragen)',
 'faqpage' => 'Project:Faak stelde fragen',
 
@@ -313,6 +325,7 @@ $messages = array(
 'printableversion' => 'Ofdruk-ferzje',
 'permalink' => 'Fêste keppeling',
 'print' => 'Ofdrukke',
+'view' => 'Lêze',
 'edit' => 'Wizigje',
 'create' => 'Oanmeitsje',
 'editthispage' => 'Side bewurkje',
@@ -423,9 +436,11 @@ $1",
 
 # Main script and global functions
 'nosuchaction' => 'Unbekende aksje.',
-'nosuchactiontext' => "De aksje dy't jo oanjoegen fia de URL is net bekind by it Wiki-program",
+'nosuchactiontext' => 'De opdracht yn de URL is ûnjildich.
+Mooglik hasto in typefout makke yn de URL of in ferkearde keppeling folge.
+It soe likegoed in programmatuerflater fan {{SITENAME}} wêze kinne.',
 'nosuchspecialpage' => 'Unbekende side',
-'nospecialpagetext' => "Jo hawwe in Wiki-side opfrege dy't net bekind is by it Wiki-programma.",
+'nospecialpagetext' => "Jo hawwe in Wiki-side opfrege dy't net bekend is by it Wiki-programma.",
 
 # General errors
 'error' => 'Fout',
@@ -458,22 +473,19 @@ Meitsje dêr melding fan by in [[Special:ListUsers/sysop|systeembehearder]] fan
 'unexpected' => 'Hommelse wearde: "$1"="$2".',
 'formerror' => 'Fout: koe formulier net oerlizze',
 'badarticleerror' => 'Dat kin op dizze side net dien wurden.',
-'cannotdelete' => 'Koe de oantsjutte side of it oantsjutte ôfbyld net wiskje. (Faaks hat in oar dat al dien.)',
+'cannotdelete' => 'Koe de oantsjutte side of it oantsjutte ôfbyld "$1" net fuorthelje. (Faaks hat in oar dat al dien.)',
 'badtitle' => 'Misse titel',
 'badtitletext' => 'De opfrege sidetitel wie ûnjildich, leech, of in miskeppele yntertaal of ynterwiki titel.',
-'perfcached' => "Dit is bewarre ynformaasje dy't mooglik ferâldere is. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
-'perfcachedts' => 'De neikommende gegevens komme út de bewarre ynformaasje, dizze is it lêst fernijd op $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => "Dit is bewarre ynformaasje dy't mooglik ferâldere is. In maksimum fan {{PLURAL:$1|ien resultaat is|$1 resultaten binne}} beskikber yn de cache.",
+'perfcachedts' => 'De neikommende gegevens komme út de bewarre ynformaasje, dizze is it lêst fernijd op $1. In maksimum fan {{PLURAL:$4|ien resultaat is|$4 resultaten binne}} beskikber yn de cache.',
 'querypage-no-updates' => 'Dizze side kin net bywurke wurde. Dizze gegevens wurde net ferfarske.',
-'wrong_wfQuery_params' => 'Ferkearde parameters foar wfQuery()<br />
-Funksje: $1<br />
-Query: $2',
 'viewsource' => 'Besjoch de boarne',
 'actionthrottled' => 'Hanneling opkeard',
 'actionthrottledtext' => 'As maatregel tsjin spam is it tal kearen per tiidsienheid beheind dat jo dizze hanneling ferrjochtsje kinne. Jo binne oer de limyt. Besykje it in tal minuten letter wer.',
-'protectedpagetext' => 'Dizze side is befeilige. Bewurkjen is net mûglik.',
+'protectedpagetext' => 'Dizze side is befeilige. Bewurkjen is net mooglik.',
 'viewsourcetext' => 'Jo kinne de boarnetekst fan dizze side besjen en kopiearje:',
-'protectedinterface' => "Dizze side befettet tekst foar berjochten fan 'e software en is befeilige om misbrûk tefoaren te kommen.",
-'editinginterface' => "'''Warskôging;''' Jo bewurkje in side dy't brûkt wurdt troch software. Bewurkings op dizze side beynfloedzje de gebrûksynterface fan elkenien. Oerweagje foar oersettings [//translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] te brûken, it oersetprojekt foar MediaWiki.",
+'protectedinterface' => "Dizze side jout systeemteksten fan 'e software en is befeilige tsjin misbrûk. Asto oersettingen foar alle wiki's tafoegje of bewurkje wolst, kinsto [//translatewiki.net/ translatewiki.net] brûke.",
+'editinginterface' => "'''Tink derom;''' Jo bewurkje in side dy't brûkt wurdt foar systeemteksten foar de software. Bewurkings op dizze side beynfloedzje de brûkersynterface fan elkenien. Asto wol oersettingen tafoegje of bewurkje wolst kinsto  [//translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] brûke, it oersetprojekt foar MediaWiki.",
 'cascadeprotected' => 'Dizze side is skoattele tsjin wizigjen, om\'t der in ûnderdiel útmakket fan de neikommende {{PLURAL:$1|side|siden}}, dy\'t skoattele {{PLURAL:$1|is|binne}} mei de "ûnderlizzende siden" opsje ynskeakele: $2',
 'namespaceprotected' => "Jo hawwe gjin rjochten om siden yn'e nammerûmte '''$1''' te bewurkjen.",
 'ns-specialprotected' => "Siden yn'e nammerûmte {{ns:special}} kinne net bewurke wurde.",
@@ -488,30 +500,65 @@ De oanfierde reden is ''$2''.",
 # Login and logout pages
 'logouttext' => "'''Jo binne no ôfmeld.'''
 
-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.",
+Guon siden kinne noch foar it ljocht komme, krekt as wiesto noch oanmeld. Asto de cache fan dyn webblêder leechhellest feroaret dat wer.",
 'yourname' => 'Jo meidochnamme:',
+'userlogin-yourname' => 'Meidoggersnamme',
+'userlogin-yourname-ph' => 'Jou dyn brûkersnamme',
+'createacct-another-username-ph' => 'Jou dyn brûkersnamme',
 'yourpassword' => 'Jo wachtwurd',
+'userlogin-yourpassword' => 'Wachtwurd',
+'userlogin-yourpassword-ph' => 'Jou dyn wachtwurd',
+'createacct-yourpassword-ph' => 'Jou dyn wachtwurd',
 'yourpasswordagain' => 'Jo wachtwurd (nochris)',
-'remembermypassword' => 'Oare kear fansels oanmelde (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'createacct-yourpasswordagain' => 'Befêstigje wachtwurd',
+'createacct-yourpasswordagain-ph' => 'Befêstigje wachtwurd nochris',
+'remembermypassword' => 'Oare kear fansels oanmelde (maksimaal $1 {{PLURAL:$1|dei|dagen}})',
+'userlogin-remembermypassword' => 'Ynlogd bliuwe',
+'userlogin-signwithsecure' => 'Feilige ferbining brûke',
 'yourdomainname' => 'Jo domein:',
+'password-change-forbidden' => 'Op dizze wiky kinst gjin wachtwurden feroare',
 'externaldberror' => 'Der is in fout by it oanmelden by de database of jo hawwe gjin tastimming om jo ekstern account by te wurkjen.',
 'login' => 'Oanmelde',
 'nav-login-createaccount' => 'Oanmelde',
 'loginprompt' => "Jo moatte 'cookies' oanstean hawwe om yn jo oan te melden by {{SITENAME}}.",
 'userlogin' => 'Oanmelde',
+'userloginnocreate' => 'Ynlogge',
 'logout' => 'Ofmelde',
 'userlogout' => 'Ofmelde',
 'notloggedin' => 'Net oanmelde',
+'userlogin-noaccount' => 'Hasto gjin akkount?',
+'userlogin-joinproject' => 'Meidwaan {{SITENAME}}',
 'nologin' => 'Noch net oanmelden as meidogger? $1.',
 'nologinlink' => 'Meitsje in brûker oan',
 'createaccount' => 'Nije ynstellings oanmeitsje',
 'gotaccount' => "Hawwe jo jo al as meidogger oanmelde? '''$1'''.",
 'gotaccountlink' => 'Oanmelde',
+'userlogin-resetlink' => 'Ynlochdata fergetten?',
+'userlogin-resetpassword-link' => 'Wachtwurd fergetten?',
+'helplogin-url' => 'Help:Oanmelde',
+'createacct-emailrequired' => 'E-mailadres',
+'createacct-emailoptional' => 'E-mailadres (net ferplichte)',
+'createacct-email-ph' => 'E-mailadres ynfiere',
+'createacct-another-email-ph' => 'E-mailadres ynfiere',
 'createaccountmail' => 'troch e-mail',
+'createacct-realname' => 'Echte namme (net ferplichte)',
+'createaccountreason' => 'Reden:',
+'createacct-reason' => 'Reden',
+'createacct-reason-ph' => 'Wêrom makkesto in oare akkount?',
+'createacct-captcha' => 'Feiligenshifking',
+'createacct-imgcaptcha-ph' => 'Nim de tekst fan hjirboppe oer',
+'createacct-submit' => 'Meitsje in akkount',
+'createacct-another-submit' => 'Meitsje in oare akkount',
+'createacct-benefit-heading' => '{{SITENAME}} is makke troch minsken krekt as dy.',
+'createacct-benefit-body1' => '{{PLURAL:$1|bewurking|bewurkings}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|side|siden}}',
+'createacct-benefit-body3' => 'aktive {{PLURAL:$1|skriuwer|skriuwers}}',
 'badretype' => 'De ynfierde wachtwurden binne net lyk.',
-'userexists' => 'Dy meidochnamme wurdt al brûkt. Besykje in oarenien.',
+'userexists' => 'Dy meidoggersnamme wurdt al brûkt. 
+Besykje in oarenien.',
 'loginerror' => 'Oanmeldflater',
+'createacct-error' => 'Flater slein by meitsjen fan akkount',
+'createaccounterror' => 'Koe akkount net meitsje: $1',
 'nocookiesnew' => 'De brûker is oanmakke mar net oanmeld. {{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Skeakelje dy yn en meld jo dan oan mei jo nije brûkersnamme en wachtwurd.',
 'nocookieslogin' => '{{SITENAME}} brûkt cookies foar it oanmelden fan brûkers. Jo hawwe cookies útskeakele. Skeakelje dy opsje oan en besykje it nochris.',
 'noname' => 'Jo moatte in meidognamme opjaan.',
@@ -562,7 +609,7 @@ Jo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
 'loginlanguagelabel' => 'Taal: $1',
 
 # Change password dialog
-'resetpass' => 'Wachtwurd feroarje',
+'changepassword' => 'Wachtwurd feroarje',
 'resetpass_announce' => "Jo binne oanmeld mei in tydlike koade dy't jo per e-mail tastjoerd is. Fier in nij wachtwurd yn om it oanmelden ôf te meitsjen.",
 'resetpass_header' => 'Wachtwurd feroarje',
 'oldpassword' => 'Ald wachtwurd',
@@ -573,12 +620,22 @@ Jo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
 'resetpass_forbidden' => 'Wachtwurden kinne net feroare wurde',
 'resetpass-no-info' => "Jo moatte oanmeld wêze foar't Jo dizze side brûke kinne.",
 'resetpass-submit-loggedin' => 'Wachtwurd feroarje',
+'resetpass-submit-cancel' => 'Ofbrekke',
 'resetpass-wrong-oldpass' => 'It momintele of tydlike wachtwurd is ûnjildich.
 Mûglik hawwe Jo Jo wachtwurd al feroare of in nij tydlik wachtwurd oanfrege.',
 'resetpass-temp-password' => 'Tydlik wachtwurd:',
 
 # Special:PasswordReset
+'passwordreset-legend' => 'Wachtwurd weromsette',
 'passwordreset-username' => 'Meidoggernamme',
+'passwordreset-domain' => 'Domein:',
+'passwordreset-email' => 'E-mailadres:',
+'passwordreset-emailtitle' => 'Akkountdetails op {{SITENAME}}',
+
+# Special:ChangeEmail
+'changeemail' => 'Feroarje e-mailadres',
+'changeemail-header' => 'Feroarje akkount e-mailadres',
+'changeemail-cancel' => 'Ofbrekke',
 
 # Edit page toolbar
 'bold_sample' => 'Fette tekst',
@@ -705,18 +762,19 @@ Hjirby sizze jo tagelyk ta, dat jo dizze tekst sels skreaun hawwe, of oernommen
 As jo net wolle dat jo teksten yngeand oanpast wurde troch oaren, set se hjir dan net.<br />
 Jo sizze ek ta dat jo de oarspronklike auteur binne fan dit materiaal, of dat jo it kopiearre hawwe út in boarne yn it publike domein, of in soartgelikense frije boarne (sjuch $1 foar details).
 '''BRUK GJIN MATERIAAL DAT BESKERME WURDT TROCH AUTEURSRJOCHT, OF JO MOATTE DER TASTIMMING FOAR HAWWE!'''",
-'longpageerror' => "'''FOUT: de tekst dy't jo tafoege hawwe is $1 kilobyte grut, wat grutter is as it maksimum fan $2 kilobytes.
+'longpageerror' => "'''FOUT: de tekst dy't jo tafoege hawwe is {{PLURAL:$1|ien kilobyte|$1 kilobytes}} grut, wat grutter is as it maksimum fan {{PLURAL:$2|ien kilobyte|$2 kilobytes}}.
 Bewarjen is net mûglik.'''",
 'readonlywarning' => "'''Warskôging: De databank is ôfsletten foar ûnderhâld, dus jo kinne jo bewurkings no net fêstlizze. Bewarje de tekst foar lettere pleatsing yn in teksttriem.'''
 
 In  behearder hat de database blokkearre om de folgjende reden: $1",
-'protectedpagewarning' => "'''Waarskôging: Dizze side is beskerme, dat gewoane brûkers dy net bewurkje kinne.'''",
+'protectedpagewarning' => "'''Warskôging: Dizze side is beskerme, dat gewoane brûkers dy net bewurkje kinne.'''",
 'semiprotectedpagewarning' => "'''Tink derom:''' dizze side is befeilige en kin allinne troch registrearre brûkers bewurke wurde.",
 'cascadeprotectedwarning' => "'''Warskôging:''' Dizze side is skoattele sadat allinnich behearders de side wizigje kinne, om't der in ûnderdiel útmakket fan de neikommende {{PLURAL:\$1|side|siden}}, dy't skoattele binne mei de \"ûnderlizzende siden\" opsje ynskeakele:",
-'titleprotectedwarning' => "'''WARSKÔGING: Dizze side is befeilige, dat allinne inkelde brûkers kinne him oanmeitsje.'''",
-'templatesused' => 'Berjochten brûkt op dizze side:',
-'templatesusedpreview' => 'Yn dit proefbyld sjabloanen:',
-'templatesusedsection' => "Sjabloanen dy't brûkt wurde yn dizze subkop:",
+'titleprotectedwarning' => "'''WARSKÔGING: Dizze side is befeilige. Der binne [[Special:ListGroupRights|spesjale rjochten]] nedich om dizze side meitsje te kinnen.'''
+De lêste lochrigel stiet hjirûnder:",
+'templatesused' => '{{PLURAL:$1|Berjocht|Berjochten}} brûkt op dizze side:',
+'templatesusedpreview' => "{{PLURAL:$1|Sjabloan|Sjabloanen}} dy't yn dizze bewurking brûkt wurde:",
+'templatesusedsection' => "{{PLURAL:$1|Sjabloan|Sjabloanen}} dy't brûkt wurde yn dizze subkop:",
 'template-protected' => '(befeilige)',
 'template-semiprotected' => '(semi-befeilige)',
 'hiddencategories' => 'Dizze side falt yn de folgjende ferburgen
@@ -739,8 +797,10 @@ Der is gjin taljochting beskikber.',
 Hy liket fuorthelle te wezen.',
 'edit-conflict' => 'Bewurkingskonflikt.',
 'edit-no-change' => "Dyn bewurking is is net trochfierd, om 't der gjin feroaring yn 'e tekst oanbrocht is.",
+'postedit-confirmation' => 'Dyn bewurking is fêstlein.',
 'edit-already-exists' => 'De side is net oanmakke.
 Hy bestie al.',
+'defaultmessagetext' => 'Standert berjochttekst',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Warskôging: Dizze side brûkt tefolle kostbere parserfunksjes.
@@ -812,10 +872,6 @@ der kinne details wêze yn it [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPA
 'revisiondelete' => 'Wiskje/weromsette ferzjes',
 'revdelete-nooldid-title' => 'Gjin doelferzje',
 'revdelete-nooldid-text' => 'Jo hawwe gjin doelferzje(s) foar dizze hanneling opjûn, de oanjûne ferzje bestiet net, of jo besykje de lêste ferzje te ferskûljen.',
-'revdelete-nologtype-title' => 'Der is gjin logboektype opjûn',
-'revdelete-nologtype-text' => 'Jo hawwe gjin logboektype opjûn om dizze hanneling op út te fieren.',
-'revdelete-nologid-title' => 'Unjildige logboekrigel',
-'revdelete-nologid-text' => 'Jo hawwe òf gjin doellogboekrigel opjûn of de oanjûne logboekrigel bestiet net.',
 'revdelete-no-file' => 'De spesifisearre triem bestiet net.',
 'revdelete-show-file-submit' => 'Ja',
 'revdelete-selected' => "'''Spesifisearre {{PLURAL:$2|ferzje|ferzjes}} fan [[:$1]]:'''",
@@ -886,13 +942,9 @@ Tink derom it brûken fan de navigaasjeferwizings dy kolom op'e nij ynstelt.",
 # Search results
 'searchresults' => 'Sykresultaat',
 'searchresults-title' => 'Sykresultaten foar "$1"',
-'searchresulttext' => 'Lês foar mear ynformaasje oer it sykjen yn de {{SITENAME}} de [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Foar fraach "[[:$1]]"',
-'searchsubtitleinvalid' => 'Foar fraach "$1"',
 'toomanymatches' => 'Der wiene tefolle resultaten.
 Prebearje in oare sykopdracht.',
 'titlematches' => 'Titels',
-'notitlematches' => 'Gjin titels',
 'textmatches' => 'Siden',
 'notextmatches' => 'Gjin siden',
 'prevn' => 'foarige {{PLURAL:$1|$1}}',
@@ -900,10 +952,8 @@ Prebearje in oare sykopdracht.',
 'prevn-title' => '{{PLURAL:$1|Foarich risseltaat|Foarige $1 risseltaten}}',
 'nextn-title' => '{{PLURAL:$1|Folgjend risseltaat|Folgjende $1 risseltaat}}',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) besjen.',
-'searchmenu-legend' => 'Sykopsjes',
 'searchmenu-exists' => "'''Der is in side mei namme \"[[:\$1]]\" yn dizze wiki'''",
 'searchmenu-new' => "'''Meitsje de side \"[[:\$1]]\" yn dizze wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sidenammen mei dit foarheaksel werjaan]]',
 'searchprofile-articles' => 'Ynhâldlike siden',
 'searchprofile-project' => 'Projektsiden',
 'searchprofile-images' => 'Triemmen',
@@ -923,21 +973,15 @@ Prebearje in oare sykopdracht.',
 'search-interwiki-default' => '$1 resultaten:',
 'search-interwiki-more' => '(mear)',
 'search-relatedarticle' => 'Besibbe',
-'mwsuggest-disable' => 'Suggestjes fia AJAX útskeakelje',
 'searcheverything-enable' => 'Sykje op alle nammeromten',
 'searchrelated' => 'besibbe',
 'searchall' => 'alle',
 'showingresults' => "{{PLURAL:$1|'''1''' resultaat|'''$1''' resultaten}} fan #'''$2''' ôf.",
 'showingresultsnum' => "{{PLURAL:$3|'''1''' resultaat|'''$3''' resultaten}} fan #'''$2''' ôf.",
-'nonefound' => "'''Opmerking''': standert wurde net alle nammerûmten trochsocht.
-As Jo yn Jo sykopdracht as foarheaksel \"''all:''\" brûke, wurde alle siden trochsocht (ynklusyf oerlissiden, sjabloanen ens.).
-Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'search-nonefound' => 'Der binne gjin resultaten foar Jo sykopdracht.',
-'powersearch' => 'Sykje',
 'powersearch-legend' => 'Sykje',
 'powersearch-ns' => 'Sykje op nammeromten:',
 'powersearch-redir' => 'Trochferwizings werjaan',
-'powersearch-field' => 'Sykje op',
 'powersearch-togglelabel' => 'Oantikje:',
 'powersearch-toggleall' => 'Allegear',
 'powersearch-togglenone' => 'Gjin',
@@ -948,7 +992,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'preferences' => 'Ynstellings',
 'mypreferences' => 'Myn foarkarynstellings',
 'prefs-edits' => 'Tal bewurkings:',
-'changepassword' => 'Wachtwurd feroarje',
 'prefs-skin' => 'Side-oansjen',
 'skin-preview' => 'Proefbyld',
 'datedefault' => 'Gjin foarkar',
@@ -963,13 +1006,11 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'prefs-misc' => 'Ferskaat',
 'prefs-resetpass' => 'Wachtwurd feroarje',
 'saveprefs' => 'Ynstellings fêstlizze',
-'resetprefs' => 'Ynstellings werom sette',
 'restoreprefs' => 'Tebek nei de standertynstellings',
 'prefs-editing' => 'Siden bewurkje',
 'rows' => 'Rigen',
 'columns' => 'Kolommen',
 'searchresultshead' => 'Sykje',
-'resultsperpage' => 'Treffers de side',
 'stub-threshold' => 'Drompel foar markearring <a href="#" class="stub">stobbe</a> (bytes):',
 'recentchangesdays' => 'Dagen om sjen te litten yn Koartlyn feroare:',
 'recentchangesdays-max' => '(maksimaal $1 {{PLURAL:$1|dei|dagen}})',
@@ -979,7 +1020,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
 'localtime' => 'Pleatslike tiid:',
 'timezoneuseserverdefault' => 'Servertiid brûke',
 'timezoneuseoffset' => 'Oars (tiidferskil oanjaan)',
-'timezoneoffset' => 'Tiidsferskil¹:',
 'servertime' => 'Servertiid:',
 'guesstimezone' => 'Freegje de blêder',
 'timezoneregion-africa' => 'Afrika',
@@ -1180,7 +1220,6 @@ Jo kinne ek oaren de mûglikheid jaan kontakt mei jo op te nimmen troch in ferwi
 'recentchanges-label-bot' => 'Dizze wiziging is troch in robot makke',
 'recentchanges-label-unpatrolled' => 'Dizze wiziging is noch net neisjûn',
 'recentchanges-legend-newpage' => '$1 - nije side',
-'rcnote' => "Dit {{PLURAL:$1|is de lêste feroaring|binne de lêste '''$1''' feroarings}} yn de lêste {{PLURAL:$2|dei|'''$2''' dagen}}, fan $4 $5.",
 'rcnotefrom' => 'Dit binne de feroarings sûnt <b>$2</b> (maksimaal <b>$1</b>).',
 'rclistfrom' => 'Jou nije feroarings, begjinnende mei $1',
 'rcshowhideminor' => '$1 tekstwizigings',
@@ -1359,6 +1398,8 @@ Klikken op in kolomkop feroaret de sortearring.',
 'listfiles_size' => 'Grutte',
 'listfiles_description' => 'Beskriuwing',
 'listfiles_count' => 'Ferzjes',
+'listfiles-latestversion-yes' => 'Ja',
+'listfiles-latestversion-no' => 'Nee',
 
 # File description page
 'file-anchor-link' => 'Triem',
@@ -1518,10 +1559,8 @@ De siden binne ek net as sjabloan opnommen.',
 'protectedpages' => 'Skoattele siden',
 'protectedpages-indef' => 'Allinne blokkades sûnder ferrindatum',
 'protectedpages-cascade' => 'Allinne befeiligje mei de kaskade-opsje',
-'protectedpagestext' => 'De neikommende siden binne skoattele foar werneamen of wizigjen',
 'protectedpagesempty' => "Op it stuit binne der gjin siden befeilige, dy't oan dizze betingsten foldogge.",
 'protectedtitles' => 'Skoattele titels',
-'protectedtitlestext' => 'De folgjende sidenammen binne befeilige en kinne net oanmakke wurde',
 'protectedtitlesempty' => "Der binne op it stuit gjin sidenammen befeilige, dy't oan dizze betingsten foldogge.",
 'listusers' => 'Meidoggerlist',
 'listusers-editsonly' => 'Allinne brûkers mei bewurkings werjaan',
@@ -1569,9 +1608,6 @@ Jo kinne ek kieze foar spesifike logboeken en filterje op brûker (haadstêfgefo
 'allpagesto' => 'Siden besjen oant:',
 'allarticles' => 'Alle siden',
 'allinnamespace' => 'Alle siden, yn de ($1-nammeromte)',
-'allnotinnamespace' => 'Alle siden, útsein de $1-nammeromte',
-'allpagesprev' => 'Eardere',
-'allpagesnext' => 'Fierder',
 'allpagessubmit' => 'Los!',
 'allpagesprefix' => "Siden sjen litte dy't begjinne mei:",
 'allpagesbadtitle' => "De opjûne sidenamme is ûnjildich of hat in yntertaal- of ynterwikifoarheaksel.
@@ -1808,7 +1844,6 @@ Dit binne de rinnende ynstellings foar de side '''$1''':",
 'undelete-nodiff' => 'Gjin eardere ferzje fûn.',
 'undeletebtn' => 'Weromsette',
 'undeletelink' => 'besjen/tebeksette',
-'undeletereset' => 'Leechmeitsje',
 'undeleteinvert' => 'Omkearde seleksje',
 'undeletecomment' => 'Utlis foar weromsetten:',
 'undelete-header' => 'Sjoch [[Special:Log/delete|de wiskloch]] foar resint wiske siden.',
@@ -1870,7 +1905,6 @@ Meld de krekte reden! Neam bygelyks de siden dy't oantaaste waarden.",
 'ipadressorusername' => 'IP Adres of meidoggernamme:',
 'ipbexpiry' => 'Ferrint nei:',
 'ipbreason' => 'Reden:',
-'ipbreasonotherlist' => 'Oare reden',
 'ipbreason-dropdown' => '*Faak foarkommende redenen foar blokkades
 ** Ferkearde ynformaasje ynfiere
 ** Fuortheljen fan ynformaasje út siden
@@ -1884,8 +1918,6 @@ Meld de krekte reden! Neam bygelyks de siden dy't oantaaste waarden.",
 'ipbsubmit' => 'Slút dizze meidogger út',
 'ipbother' => 'In oare tiid:',
 'ipboptions' => '2 oeren:2 hours,1 dei:1 day,3 dagen:3 days,1 wike:1 week,2 wiken:2 weeks,1 moanne:1 month,3 moanne:3 months,6 moanne:6 months,1 jier:1 year,ûnbeheind:infinite',
-'ipbotheroption' => 'oare tiid',
-'ipbotherreason' => 'Oare/eventuele reden:',
 'badipaddress' => 'Gjin jildige IP-adres',
 'blockipsuccesssub' => 'Utsluting slagge',
 'blockipsuccesstext' => 'Meidogger [[Special:Contributions/$1|$1]] is útsletten.<br />
@@ -1949,7 +1981,6 @@ daalks weromneame as jo in flater meitsje, mar jo kinne in oare side net oerskri
 
 In dizze gefallen is it oan jo hoe't jo de oerlisside werneame of ynfoegje wolle.",
 'movearticle' => 'Werneam side',
-'movenologin' => 'Net oameld',
 'movenologintext' => 'Jo moatte [[Special:UserLogin|oanmeld]] wêze om in side wer te neamen.',
 'newtitle' => 'As nij titel',
 'move-watch' => 'Folch dizze side',
@@ -1957,8 +1988,6 @@ In dizze gefallen is it oan jo hoe't jo de oerlisside werneame of ynfoegje wolle
 'pagemovedsub' => 'Werneamen slagge',
 'movepage-moved' => '\'\'\'"$1" hjit no "$2"\'\'\'',
 'articleexists' => "Der is al in side mei dy namme, of oars is de namme dy't jo oanjûn hawwe net tastien. Besykje it op 'e nij.",
-'talkexists' => "It werneamen fan de side is slagge, mar de eardere oerlisside is net mear keppele om't der foar de side mei de nije namme al in oerlisside wie. Kopiearje de oerlisside fan de 'âlde' side mei de nije.",
-'movedto' => 'werneamd as',
 'movetalk' => 'Titel fan oerlisside ek feroarje, as dy der is.',
 'movepage-page-moved' => 'De side $1 is werneamd nei $2.',
 'movelogpage' => 'Werneam-loch',
@@ -2153,6 +2182,10 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
 'exif-exposuretime-format' => '$1 sek ($2)',
 'exif-flash' => 'Flits',
 'exif-filesource' => 'Triemboarne',
+'exif-contrast' => 'Kontrast',
+'exif-sharpness' => 'Skerpte',
+'exif-gpstimestamp' => 'GPS-tiid (atoomklok)',
+'exif-gpsspeedref' => 'Snelheidsienheid',
 'exif-gpsdatestamp' => 'GPS-datum',
 
 'exif-unknowndate' => 'Datum ûnbekend',
@@ -2189,10 +2222,6 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
 'exif-subjectdistancerange-0' => 'Unbekend',
 'exif-subjectdistancerange-2' => 'Tichtby',
 
-# External editor support
-'edit-externally' => 'Wizigje dizze triem mei in ekstern programma',
-'edit-externally-help' => 'Sjoch de [https://www.mediawiki.org/wiki/Manual:External_editors ynstel-hantlieding] foar mear ynformaasje.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alles',
@@ -2210,7 +2239,6 @@ Berjocht: $1',
 Faaks is de koade ferrûn.',
 'confirmemail_success' => 'Jo netpostadres is befêstige. Jo kinne jo no oanmelde en de wiki brûke.',
 'confirmemail_loggedin' => 'Jo netpostadres is no befêstige.',
-'confirmemail_error' => 'Der is wat skeefgongen by it fêstlizzen fan jo befêstiging.',
 'confirmemail_subject' => 'Netpost-befêstigingskoade foar {{SITENAME}}',
 'confirmemail_body' => 'Immen, nei gedachten jo, hat him by {{SITENAME}} oanmelde as "$2", mei dit netpostadres ($1).
 
@@ -2312,4 +2340,14 @@ Wolle jo de side wier op 'e nij skriuwe?",
 'revdelete-unrestricted' => 'hat beheinings foar behearders goedmakke',
 'rightsnone' => '(gjin)',
 
+# Feedback
+'feedback-subject' => 'Underwerp:',
+'feedback-message' => 'Berjocht:',
+'feedback-cancel' => 'Ofbrekke',
+'feedback-submit' => 'Feedback ferstjoere',
+'feedback-close' => 'Dien',
+
+# Search suggestions
+'searchsuggest-search' => 'Sykje',
+
 );
index a72fa86..3934280 100644 (file)
@@ -118,7 +118,6 @@ $messages = array(
 'tog-minordefault' => 'Déan mionathruithe de gach aon athrú, mar réamhshocrú',
 'tog-previewontop' => 'Cuir an réamhamharc os cionn an bhosca eagair, <br />agus ná cuir é taobh thíos de',
 'tog-previewonfirst' => 'Taispeáin réamhamharc don chéad athrú',
-'tog-nocache' => 'Ná sábháil leathanaigh i dtaisce an bhrabhsálaí',
 'tog-enotifwatchlistpages' => 'Cuir ríomhphost chugam nuair a athraítear leathanaigh',
 'tog-enotifusertalkpages' => 'Cuir ríomhphost chugam nuair a athraítear mo leathanach phlé úsáideora',
 'tog-enotifminoredits' => 'Cuir ríomhphost chugam nuair a dhéantar mionathruithe chomh maith',
@@ -235,7 +234,6 @@ $messages = array(
 'qbedit' => 'Cuir in eagar',
 'qbpageoptions' => 'An leathanach seo',
 'qbmyoptions' => 'Mo chuid leathanaigh',
-'qbspecialpages' => 'Leathanaigh speisialta',
 'faq' => 'Ceisteanna Coiteanta',
 'faqpage' => 'Project:Ceisteanna_Coiteanta',
 
@@ -433,9 +431,6 @@ B\'fhéidir gur scrios duine eile é cheana féin.',
 teideal idirtheangach nó idirvicí nasctha go mícheart.",
 'perfcached' => 'Fuarthas na sonraí a leanas as taisce, agus is dócha go bhfuil siad as dáta. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Tá na sonraí seo a leanas sa taisce, nuashonraithe $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
-'wrong_wfQuery_params' => 'Paraiméadair mhíchearta don wfQuery()<br />
-Feidhm: $1<br />
-Iarratas: $2',
 'viewsource' => 'Féach ar fhoinse',
 'actionthrottled' => 'Gníomh scóigthe',
 'actionthrottledtext' => 'Mar theicníc frithurscair, ní féidir lear an gníomh seo a dhéanamh barraíocht taobh istigh de thréimhse ghairid ama, agus tá an méid sáraithe agat.
@@ -551,7 +546,7 @@ Iontráil seoladh dea-fhormáidte le do thoil, nó glan an réimse sin.',
 'php-mail-error-unknown' => 'Earráid anaithnid i bhfeidhm mail() de chuid PHP',
 
 # Change password dialog
-'resetpass' => "Athraigh d'fhocal faire",
+'changepassword' => "Athraigh d'fhocal faire",
 'resetpass_announce' => "Tá tú logáilte isteach le cód sealadach a seoladh chugat i r-phost.
 Chun d'iarratas logáil isteach a chríochnú, caithfidh tú focal faire nua a roghnú anseo:",
 'resetpass_text' => '<!-- Cur téacs anseo -->',
@@ -768,18 +763,13 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
 # Search results
 'searchresults' => 'Torthaí an chuardaigh',
 'searchresults-title' => 'Torthaí an chuardaigh do "$1"',
-'searchresulttext' => 'Féach ar [[{{MediaWiki:Helppage}}|{{int:help}}]] chun a thuilleadh eolais a fháil maidir le cuardaigh {{GRAMMAR:genitive|{{SITENAME}}}}.',
-'searchsubtitle' => 'Cuardaigh le \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gach leathanaigh ag tosú le "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gach leathanaigh naiscthe le "$1"]])',
-'searchsubtitleinvalid' => 'Don iarratas "$1"',
 'titlematches' => 'Fuarthas leathanaigh faoin teideal seo',
-'notitlematches' => 'Ní bhfuarthas leathanach faoin teideal seo',
 'textmatches' => 'Fuarthas an téacs ar leathanaigh',
 'notextmatches' => 'Ní bhfuarthas an téacs ar leathanach ar bith',
 'prevn' => 'na {{PLURAL:$1|$1}} cinn roimhe seo',
 'nextn' => 'an {{PLURAL:$1|$1}} i ndiadh',
 'shown-title' => 'Taispeáin $1 {{PLURAL:$1|thoradh|torthaí}} an leathanach',
 'viewprevnext' => 'Taispeáin ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Sainroghanna cuardaithe',
 'searchmenu-new' => "'''Cruthaigh an leathanach \"[[:\$1]]\" ar an vicí seo!'''",
 'searchprofile-articles' => 'Leathanaigh ábhair',
 'searchprofile-project' => 'Leathanaigh thionscadail agus cabhair',
@@ -799,19 +789,14 @@ Treoir: (rth) = difríocht ón leagan reatha, (rmh) = difríocht ón leagan roim
 'search-interwiki-default' => '$1 torthaí:',
 'search-interwiki-more' => '(níos mó)',
 'search-relatedarticle' => 'Gaolmhar',
-'mwsuggest-disable' => 'Díchumasaigh moltaí AJAX',
 'searchrelated' => 'gaolmhara',
 'searchall' => 'an t-iomlán',
 'showingresults' => "Ag taispeáint thíos {{PLURAL:$1|'''toradh amháin'''|'''$1''' torthaí}}, ag tosú le #'''$2'''.",
 'showingresultsnum' => "Ag taispeáint thíos {{PLURAL:$3|'''toradh amháin'''|'''$3''' torthaí}}, ag tosú le #'''$2'''.",
-'nonefound' => "<strong>Tabhair faoi deara:</strong> Ní chuardaítear ach ainmspásanna áirithe de réir réamhshocraithe.
-Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leathanaigh phlé, teimpléid, srl. san áireamh) a chuardach, nó cuir isteach réimír an ainmspáis.",
 'search-nonefound' => 'Ní bhfuarthas toradh ar bith ar an iarratas.',
-'powersearch' => 'Cuardaigh',
 'powersearch-legend' => 'Cuardach casta',
 'powersearch-ns' => 'Cuardaigh in ainmspásanna:',
 'powersearch-redir' => 'Liosta athsheoltaí',
-'powersearch-field' => 'Cuardaigh le',
 'powersearch-toggleall' => 'Uile',
 'powersearch-togglenone' => 'Tada',
 'searchdisabled' => "Tá brón orainn! Mhíchumasaíodh an cuardach téacs iomlán go sealadach chun luas an tsuímh a chosaint. Idir an dá linn, is féidir leat an cuardach Google anseo thíos a úsáid - b'fhéidir go bhfuil sé as dáta.",
@@ -819,7 +804,6 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
 # Preferences page
 'preferences' => 'Sainroghanna',
 'mypreferences' => 'Sainroghanna',
-'changepassword' => "Athraigh d'fhocal faire",
 'prefs-skin' => 'Craiceann',
 'skin-preview' => 'Réamhamharc',
 'datedefault' => 'Is cuma liom',
@@ -834,13 +818,11 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
 'prefs-misc' => 'Éagsúla',
 'prefs-resetpass' => 'Athraigh focal faire',
 'saveprefs' => 'Sábháil',
-'resetprefs' => 'Athshocraigh sainroghanna',
 'restoreprefs' => 'Cuir ar ais gach sainrogha réamhshocraithe',
 'prefs-editing' => 'Eagarthóireacht',
 'rows' => 'Sraitheanna',
 'columns' => 'Colúin',
 'searchresultshead' => 'Cuardaigh',
-'resultsperpage' => 'Torthaí le taispeáint ó leathanach:',
 'stub-threshold-disabled' => 'Díchumasaithe',
 'recentchangesdays' => 'Méid laethanta le taispeáint sna hathruithe is déanaí:',
 'recentchangesdays-max' => '(uasmhéid $1 {{PLURAL:$1|lá|lá}})',
@@ -850,7 +832,6 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
 'localtime' => 'An t-am áitiúil:',
 'timezoneuseserverdefault' => 'Úsáid am réamhshocraithe an fhreastalaí',
 'timezoneuseoffset' => 'Eile (cuir isteach an difear)',
-'timezoneoffset' => 'Difear¹:',
 'servertime' => 'Am an fhreastalaí:',
 'guesstimezone' => 'Líon ón mbrabhsálaí',
 'timezoneregion-africa' => 'An Afraic',
@@ -957,7 +938,6 @@ do chuid dreachtaí a chur i leith tusa.',
 'recentchanges-label-minor' => 'Mionathrú é seo',
 'recentchanges-label-bot' => 'Chomhlíon róbó an t-athrú seo',
 'recentchanges-legend-newpage' => '$1 - leathanach nua',
-'rcnote' => "Is {{PLURAL:$1|é seo a leanas <strong>an t-athrú amháin</strong>|iad seo a leanas na <strong>$1</strong> athruithe is déanaí}} {{PLURAL:$2|ar feadh an lae dheireanaigh|ar feadh na '''$2''' lá deireanacha}}, as $5, $4.",
 'rcnotefrom' => 'Is iad seo a leanas na hathruithe ó <b>$2</b> (go dti <b>$1</b> taispeánaithe).',
 'rclistfrom' => 'Taispeáin athruithe nua ó $1 anuas.',
 'rcshowhideminor' => '$1 mionathruithe',
@@ -1203,9 +1183,6 @@ Is féidir leat an méid ar taispeáint a chúngú trí roghnú an saghas loga,
 'allpagesto' => 'Go:',
 'allarticles' => 'Gach alt',
 'allinnamespace' => 'Gach leathanach (ainmspás $1)',
-'allnotinnamespace' => 'Gach leathanach (lasmuigh den ainmspás $1)',
-'allpagesprev' => 'Siar',
-'allpagesnext' => 'Ar aghaidh',
 'allpagessubmit' => 'Gabh',
 'allpagesprefix' => 'Taispeáin leathanaigh leis an réimír:',
 'allpages-bad-ns' => 'Níl an t-ainmspás "$1" ar {{SITENAME}}',
@@ -1424,7 +1401,6 @@ Is an téacs as na leagan scriosta seo ar fáil do riarthóirí amháin.',
 'undeletebtn' => 'Díscrios!',
 'undeletelink' => 'féach/díscrios',
 'undeleteviewlink' => 'Amharc',
-'undeletereset' => 'Athshocraigh',
 'undeleteinvert' => 'Cuir an roghnú bun os cionn',
 'undeletecomment' => 'Tuairisc:',
 'undeletedrevisions' => '{{PLURAL:$1|Leagan amháin|$1 leagain}} díscriosta',
@@ -1492,7 +1468,6 @@ leathanaigh áirithe a rinne an duine damáiste ar).',
 'ipadressorusername' => 'Seoladh IP nó ainm úsáideora:',
 'ipbexpiry' => 'Am éaga',
 'ipbreason' => 'Fáth:',
-'ipbreasonotherlist' => 'Fáth eile',
 'ipbreason-dropdown' => '*Fáthanna coitianta
 ** Loitiméaracht
 ** Naisc turscar
@@ -1505,7 +1480,6 @@ leathanaigh áirithe a rinne an duine damáiste ar).',
 'ipbsubmit' => 'Coisc an úsáideoir seo',
 'ipbother' => 'Méid eile ama',
 'ipboptions' => '2 uair:2 hours,1 lá amháin:1 day,3 lá:3 days,1 sheachtain amháin:1 week,2 sheachtain:2 weeks,1 mhí amháin:1 month,3 mhí:3 months,6 mhí:6 months,1 bhliain amháin:1 year,gan teorainn:infinite',
-'ipbotheroption' => 'eile',
 'badipaddress' => 'Níl aon úsáideoir ann leis an ainm seo.',
 'blockipsuccesssub' => "D'éirigh leis an cosc",
 'blockipsuccesstext' => 'Choisceadh [[Special:Contributions/$1|$1]].
@@ -1593,7 +1567,6 @@ cinntigh go dtuigeann tú na hiarmhairtí go léir roimh dul ar aghaigh.",
 
 Sna cásanna sin, caithfidh tú an leathanach a aistrigh nó a chumasc tú féin más maith leat.",
 'movearticle' => 'Athainmnigh an leathanach',
-'movenologin' => 'Níl tú logáilte isteach',
 'movenologintext' => "Ní mór duit bheith i d'úsáideoir cláraithe agus [[Special:UserLogin|logáilte isteach]] chun leathanach a hathainmniú.",
 'movenotallowed' => 'Níl cead agat leathanaigh a athainmniú.',
 'newtitle' => 'Go teideal nua',
@@ -1602,9 +1575,6 @@ Sna cásanna sin, caithfidh tú an leathanach a aistrigh nó a chumasc tú féin
 'pagemovedsub' => "D'éirigh leis an athainmniú",
 'movepage-moved' => '\'\'\'Athainmníodh "$1" mar "$2"\'\'\'',
 'articleexists' => 'Tá leathanach leis an teideal seo ann cheana féin, nó níl an teideal a roghnaigh tú ina theideal bailí. Roghnaigh teideal eile le do thoil.',
-'talkexists' => "'''D’athainmníodh an leathanach é féin go rathúil, ach ní raibh sé ar a chumas an leathanach phlé a hathainmniú dá bharr go bhfuil ceann ann cheana féin ag an teideal nua.'''<br />
-'''Báigh tusa féin iad.'''",
-'movedto' => 'athainmnithe bheith',
 'movetalk' => 'Athainmnigh an leathanach plé freisin.',
 'movelogpage' => 'Log athainmnithe',
 'movelogpagetext' => 'Liosta is ea seo thíos de leathanaigh athainmnithe.',
@@ -2085,15 +2055,10 @@ cúlra i bhfócas)',
 'exif-gpsdirection-t' => 'Fíorthreo',
 'exif-gpsdirection-m' => 'Treo maighnéadach',
 
-# External editor support
-'edit-externally' => 'Athraigh an comhad seo le feidhmchlár seachtrach',
-'edit-externally-help' => '(Féach ar na [https://www.mediawiki.org/wiki/Manual:External_editors treoracha cumraíochta] as Béarla le tuilleadh eolais)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'an t-iomlán',
 'namespacesall' => 'iad uile',
 'monthsall' => 'gach mí',
-'limitall' => 'iad uile',
 
 # Email address confirmation
 'confirmemail' => 'Deimhnigh do ríomhsheoladh',
@@ -2107,7 +2072,6 @@ D'fhreagair an clár ríomhphoist: $1",
 'confirmemail_invalid' => "Cód deimhnithe neamh-bhailí. B'fhéidir gur chuaidh an cód as feidhm.",
 'confirmemail_success' => 'Deimhníodh do ríomhsheoladh. Is féidir leat logáil isteach anois agus sult a bhaint as an vicí!',
 'confirmemail_loggedin' => 'Deimhníodh do sheoladh ríomhphoist.',
-'confirmemail_error' => 'Tharlaigh botún éigin le sabháil do dheimhniú.',
 'confirmemail_subject' => 'Deimhniú do ríomhsheoladh ar an {{SITENAME}}',
 'confirmemail_body' => 'Chláraigh duine éigin (tusa is dócha) an cuntas "$2" ar {{SITENAME}}
 agus rinneadh é seo ón seoladh IP $1, ag úsáid an ríomhsheolta seo.
index e1679bc..26c001d 100644 (file)
@@ -61,7 +61,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Katılmaklar' ),
        'CreateAccount'             => array( 'EsapYarat', 'EsapAç' ),
        'Deadendpages'              => array( 'BaalantısızYazılar', 'BaalantısızSayfalar', 'BaalantısızYapraklar' ),
-       'Disambiguations'           => array( 'MaanaAydınnatmak', 'MaanaAydınnatma' ),
        'DoubleRedirects'           => array( 'İkiKeräYönnendirmäler', 'İkiKeräYönnendirmeler' ),
        'Listadmins'                => array( 'İzmetliListası' ),
        'Listbots'                  => array( 'BotListası' ),
@@ -117,7 +116,6 @@ $messages = array(
 'tog-minordefault' => "Hepsi diişmäkleri 'küçük diişmäk' olarak nışanna",
 'tog-previewontop' => 'Öni siiri diiştirmää penceräsi üstünde göster',
 'tog-previewonfirst' => 'İlk kerä diiştirär känä ön siiri göster',
-'tog-nocache' => 'Sayfaları keş etmää yasakla',
 'tog-enotifwatchlistpages' => 'Sayfa diişär känä bana e-mail gönder',
 'tog-enotifusertalkpages' => 'Kullanıcı sayfamda diişmäk olar kana bana e-mail gönder',
 'tog-enotifminoredits' => 'Sayfalardaki küçük diişmäklerdä dä bana e-mail gönder',
@@ -216,7 +214,6 @@ $messages = array(
 'qbedit' => 'Diiştir',
 'qbpageoptions' => 'Bu sayfa',
 'qbmyoptions' => 'Sayfalarım',
-'qbspecialpages' => 'Maasus sayfalar',
 'faq' => 'SSS',
 'faqpage' => 'Project:SSS',
 
@@ -562,10 +559,6 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
 # Search results
 'searchresults' => 'Aaramak rezultatları',
 'searchresults-title' => '"$1" için aaramak rezultatları',
-'searchresulttext' => '{{SITENAME}} içindä aaramaa deyni bilgi almaa için var nicä bakmaa [[{{MediaWiki:Helppage}}|{{int:help}}]] sayfasına.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' için aaradınız. ([[Special:Prefixindex/$1|hepsi sayfalar angıları başlêêr "$1"]], [[Special:WhatLinksHere/$1|hepsi sayfalar angıları baalı "$1"]])',
-'searchsubtitleinvalid' => 'Aranêr: "$1"',
-'notitlematches' => 'Hiç bir başlıkta yok nicä bulunsun',
 'notextmatches' => ' Hiç bir başlıkta yok nicä bulunsun',
 'prevn' => 'ilerki {{PLURAL:$1|$1}}',
 'nextn' => 'geeriki {{PLURAL:$1|$1}}',
@@ -577,13 +570,9 @@ Nışannar: (bitki) = şindiki versiyalan aradaki fark,
 'search-interwiki-caption' => 'Kardaş proyektlär',
 'search-interwiki-default' => '$1 rezultatlar:',
 'search-interwiki-more' => '(taa çok)',
-'nonefound' => "'''Bennemäk''': Sadä kimi ad erleri sessizcä aaranêr.
-Aaramaanızın önünä ''all:'' prefiksini koyun da deneyin hepsi içlii aaramaa deyni (sözleşmäk sayfaları, şablonlar h.b.pay alarak), yaki kullanınız beenilän prefiksi sansın er adı.",
-'powersearch' => 'Gelişmiş arama',
 'powersearch-legend' => 'Gelişmiş arama',
 'powersearch-ns' => 'Ad erlerindä aara:',
 'powersearch-redir' => 'Yönnendirmäkler listası',
-'powersearch-field' => 'Aara',
 
 # Preferences page
 'preferences' => 'Seçimner',
@@ -623,7 +612,6 @@ Aaramaanızın önünä ''all:'' prefiksini koyun da deneyin hepsi içlii aarama
 'recentchanges' => 'Bitki diişikmäklär',
 'recentchanges-legend' => 'Bitki diişlär opţiyaları',
 'recentchanges-feed-description' => 'Bu lentalan en bitki diişmäkleri vikiyä yaz.',
-'rcnote' => "$4 datası hem saat $5 için bitki {{PLURAL:$2|1 gündä|'''$2''' gündä}} yapılan, {{PLURAL:$1|'''1'''diiş|'''$1''' diiş}}",
 'rcnotefrom' => "'''$2''' datasınnan büüne kadar yapılan diişmäkler aşaada (en çok '''$1''' yazı gösteriler).",
 'rclistfrom' => 'Göster diişmäkleri ani $1 datasından beeri yapıldı',
 'rcshowhideminor' => 'küçük diişilmäkläri $1',
@@ -938,8 +926,6 @@ Bu hallerdä läazım kendiniz ellän sayfaları aktarmaa yaki birleştirmää."
 'movepage-moved' => '\'\'\'"$1",  "$2" sayfasına taşındı\'\'\'',
 'articleexists' => 'Bu adda bir sayfa bulunêr yaki o ad geçersiz angısını seçtiniz.
 Yalvarêrêz başka bir ad seçmää.',
-'talkexists' => "'''Bu sayfa kendisi başarılan aktarıldı, ama konuşmaa sayfası aktarılamadı neçin ki eni ad altında bulunêr taa birisi. Yalvarêrêz onnarı ellän birleştirmää.'''",
-'movedto' => 'taşındı:',
 'movetalk' => 'Varsa hem aktar "konuşmaa" sayfasını.',
 'movelogpage' => 'Ad diişmäk jurnalı',
 'movereason' => 'Sebep',
@@ -1057,10 +1043,6 @@ Herliim fayl diiştirildi yaratılıştan sora, bir takım parametrlär var nic
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Kompyuterinizdäki uygulamaklarlan faylı düz',
-'edit-externally-help' => 'Taa çok bilgi için var nicä bakmaa metadaki [https://www.mediawiki.org/wiki/Manual:External_editors dış uygulama instrumentläri] (angliyça) sayfasına.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Hepsini göster',
 'namespacesall' => 'Hepsi',
index 6d90acc..0351603 100644 (file)
@@ -55,7 +55,6 @@ $messages = array(
 'tog-minordefault' => '全部𠮶编辑设成细修改',
 'tog-previewontop' => '到编辑框𠮶上首显示预览',
 'tog-previewonfirst' => '头道修改时显示预览',
-'tog-nocache' => '停用页面𠮶缓存',
 'tog-enotifwatchlistpages' => '偶监视框𠮶页面一有改动发电子邮件到偶',
 'tog-enotifusertalkpages' => '偶对话框𠮶页面一有改动发email到偶',
 'tog-enotifminoredits' => '有细𠮶改动都要发email到偶',
@@ -174,7 +173,6 @@ $messages = array(
 'qbedit' => '编写',
 'qbpageoptions' => '个页',
 'qbmyoptions' => '偶𠮶选项',
-'qbspecialpages' => '特殊页',
 'faq' => 'FAQ',
 'faqpage' => 'Project:问得蛮多𠮶问题',
 
@@ -361,9 +359,6 @@ $1',
 'perfcached' => '底下系缓存资料,可能伓系最新𠮶。 A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 '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 />
-函数: $1<br />
-查询: $2',
 'viewsource' => '源代码',
 'protectedpagetext' => '个页锁到嘞,改伓正。',
 'viewsourcetext' => '倷可以眵吖或复制个页𠮶源代码:',
@@ -443,7 +438,7 @@ $2',
 'loginlanguagelabel' => '语言: $1',
 
 # Change password dialog
-'resetpass' => '设过帐户密码',
+'changepassword' => '改过密码',
 'resetpass_announce' => '倷系用到临时email𠮶代码登入𠮶。要登正入,倷要到个首设定只新密码:',
 'resetpass_header' => '设过密码',
 'oldpassword' => '老密码:',
@@ -676,8 +671,6 @@ $2',
 'revdelete-success' => "'''修订𠮶可见性设置正喽。'''",
 'logdelete-success' => "'''事件𠮶可见性设置正喽。'''",
 'revdel-restore' => '改动可见性',
-'revdel-restore-deleted' => '删吥𠮶修订版',
-'revdel-restore-visible' => '相得到𠮶修订版',
 'pagehist' => '文章历史',
 'deletedhist' => '删吥𠮶历史',
 
@@ -709,12 +702,8 @@ $2',
 # Search results
 'searchresults' => '寻到𠮶结果',
 'searchresults-title' => '对"$1"寻到𠮶结果',
-'searchresulttext' => '有关𠮶{{SITENAME}}𠮶更多资料,请参看[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => "用'''[[:$1]]'''",
-'searchsubtitleinvalid' => "用'''$1'''寻",
 'toomanymatches' => '返回多伤喽𠮶结果,请试吖用别𠮶词语寻过',
 'titlematches' => '文章标题符合',
-'notitlematches' => '冇页面同文章标题符合',
 'textmatches' => '页面内容符合',
 'notextmatches' => '冇页面内容符合',
 'prevn' => '前{{PLURAL:$1|$1}}只',
@@ -748,20 +737,16 @@ $2',
 'showingresults' => '底下从第<b>$2</b>条显示起先𠮶<b>$1</b>条结果:',
 'showingresultsnum' => '底下从第<b>$2</b>条显示起先𠮶<b>$3</b>条结果:',
 'showingresultsheader' => "'''$4'''𠮶{{PLURAL:$5|第'''$1'''到第'''$3'''只结果|第'''$1 - $2'''只,拢共'''$3'''只结果}}",
-'nonefound' => '<strong>注意:</strong>寻伓到往往系因为搜索夹到像“𠮶”或“同”之类𠮶常用字扤得。',
 'search-nonefound' => '冇合到𠮶查询结果。',
-'powersearch' => '高级寻',
 'powersearch-legend' => '高级搜寻',
 'powersearch-ns' => '到名子空间里头寻:',
 'powersearch-redir' => '重定向𠮶表单',
-'powersearch-field' => '寻',
 'searchdisabled' => '{{SITENAME}}𠮶搜索功能已经关闭。倷可以用Google寻吖。但系佢𠮶索引可能系早先𠮶。',
 
 # Preferences page
 'preferences' => '参数设置',
 'mypreferences' => '偶𠮶参数设置',
 'prefs-edits' => '编辑数:',
-'changepassword' => '改过密码',
 'prefs-skin' => '皮',
 'skin-preview' => '(预览)',
 'datedefault' => '默认项目',
@@ -773,19 +758,16 @@ $2',
 'prefs-watchlist-edits' => '加强版𠮶监视列表显示最多更改数目:',
 'prefs-misc' => '杂项',
 'saveprefs' => '存到参数',
-'resetprefs' => '设过参数',
 'prefs-editing' => '编写',
 'rows' => '横:',
 'columns' => '竖:',
 'searchresultshead' => '设置寻到𠮶结果',
-'resultsperpage' => '设置寻到𠮶链接数',
 'stub-threshold' => '<a href="#" class="stub">细文链接</a>格式门槛:',
 'recentchangesdays' => '最近更改中𠮶显示日数:',
 'recentchangescount' => '最近更改中𠮶编辑数:',
 'savedprefs' => '倷𠮶个人参数设置保存正嘞。',
 'timezonelegend' => '时区:',
 'localtime' => '当地时区',
-'timezoneoffset' => '时差¹',
 'servertime' => '服务器时间',
 'guesstimezone' => '到浏览器上填',
 'allowemail' => '接受别𠮶用户𠮶邮件',
@@ -858,7 +840,6 @@ $2',
 'recentchanges-label-minor' => '个系只细修改',
 'recentchanges-label-bot' => '个只编辑系机器人舞𠮶',
 'recentchanges-label-unpatrolled' => '个只编辑冇拕查过',
-'rcnote' => "下底系到$4 $5,个'''$2'''日𠮶'''$1'''回改动:",
 'rcnotefrom' => "底下系自'''$2'''𠮶更改(顶多显示'''$1'''):",
 'rclistfrom' => '显示自$1后𠮶新改动',
 'rcshowhideminor' => '$1细编辑',
@@ -1130,7 +1111,6 @@ $2',
 'deadendpages' => '脱接页面',
 'deadendpagestext' => '下底个页面冇连到{{SITENAME}}𠮶别只页面:',
 'protectedpages' => '受保护页面',
-'protectedpagestext' => '底下页面已经受保护以防止乱动',
 'protectedpagesempty' => '个兮参数下冇页面拖保护到。',
 'protectedtitles' => '保护题目',
 'listusers' => '用户列表',
@@ -1171,9 +1151,6 @@ $2',
 'allpagesto' => '显到下头位置结束𠮶页面:',
 'allarticles' => '全部文章',
 'allinnamespace' => '全部文章(归$1空间名)',
-'allnotinnamespace' => '全部文章(伓归$1空间名)',
-'allpagesprev' => '前',
-'allpagesnext' => '后',
 'allpagessubmit' => '交',
 'allpagesprefix' => '以个只开头𠮶页面:',
 'allpagesbadtitle' => '提供𠮶页面标题冇用,或有只跨语言或跨wiki𠮶字头。佢可能含到一只或几只字伓合标题。',
@@ -1377,7 +1354,6 @@ $NEWPAGE
 'undeletebtn' => '恢复',
 'undeletelink' => '还原',
 'undeleteviewlink' => '望吖',
-'undeletereset' => '设过',
 'undeletecomment' => '评论:',
 'undeletedrevisions' => '$1只修改版本恢复正嘞',
 'undeletedrevisions-files' => '$1只修改版本同$2只档案恢复正嘞',
@@ -1452,7 +1428,6 @@ $1',
 'ipadressorusername' => 'IP地址或用户名:',
 'ipbexpiry' => '期限:',
 'ipbreason' => '原因:',
-'ipbreasonotherlist' => '别𠮶原因',
 'ipbreason-dropdown' => '*一般𠮶封锁原因
 ** 紧编写假𠮶内容
 ** 删卟文章内容
@@ -1467,8 +1442,6 @@ $1',
 'ipbsubmit' => '封锁个只地址',
 'ipbother' => '别𠮶时间:',
 'ipboptions' => '两个钟头:2 hours,一日:1 day,三日:3 days,一个礼拜:1 week,两个礼拜:2 weeks,一个月:1 month,三个月:3 months,六个月:6 months,一年:1 year,一世:infinite',
-'ipbotheroption' => '别𠮶',
-'ipbotherreason' => '别𠮶/附加原因:',
 'ipbhidename' => '封锁日志、活跃封锁列表同用户列表里头弆到用户名',
 'badipaddress' => 'IP位置伓对。',
 'blockipsuccesssub' => '封锁正嘞',
@@ -1552,7 +1525,6 @@ $1',
 *倷伓选下底𠮶选择方块。
 啖倷就非要手工移动或合并页面。",
 'movearticle' => '换动页面:',
-'movenologin' => '冇登入',
 'movenologintext' => '倷要系登记用户接到[[Special:UserLogin|登入]]后才移动得正页面。',
 'movenotallowed' => '倷到{{SITENAME}}冇权移动页面。',
 'newtitle' => '新标题:',
@@ -1562,8 +1534,6 @@ $1',
 'movepage-moved' => "'''“$1”拖移到“$2”'''",
 'articleexists' => '已经有页面叫个只名字,要伓倷拣𠮶名字冇用。请拣过只名字。',
 'cantmove-titleprotected' => '倷移伓正一只页面到个只位置,个只新题目已经拖保护起来嘞,新建伓正。',
-'talkexists' => '页面本身移动正嘞,但系新标题下底有嘞对话页,所以对话页移伓正。请手工合并两页。',
-'movedto' => '移到',
 'movetalk' => '移动相关𠮶讨论页',
 'movelogpage' => '移动日志',
 'movelogpagetext' => '下底系移动嘞𠮶页面列表:',
@@ -2064,10 +2034,6 @@ $1',
 'exif-gpsdirection-t' => '真实方位',
 'exif-gpsdirection-m' => '地磁方位',
 
-# External editor support
-'edit-externally' => '用外部程式来编辑个只档案',
-'edit-externally-help' => '请参看[https://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解别𠮶内容。',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
@@ -2089,7 +2055,6 @@ $1',
 'confirmemail_needlogin' => '倷要$1去确认倷𠮶email地址。',
 'confirmemail_success' => '倷𠮶邮箱已得到嘞确认。嘎倷能登得正入同到使用个只网站。',
 'confirmemail_loggedin' => '倷𠮶email地址已得到确认。',
-'confirmemail_error' => '确认过程出错。',
 'confirmemail_subject' => '{{SITENAME}}电子邮件地址确认',
 'confirmemail_body' => 'IP地址$1𠮶用户(可能系倷)到{{SITENAME}}注册嘞帐户"$2",并一同用嘞倷𠮶email地址。
 
index 0234fcb..334c848 100644 (file)
@@ -32,7 +32,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( '老早嗰頁面' ),
        'BrokenRedirects'           => array( '壞吥嗰重定向頁' ),
        'CreateAccount'             => array( '新建隻帳戶' ),
-       'Disambiguations'           => array( '多義項' ),
        'Fewestrevisions'           => array( '最少改動嗰頁面' ),
        'Longpages'                 => array( '莽文章' ),
        'Mostcategories'            => array( '最多分類嗰頁面' ),
@@ -77,7 +76,6 @@ $messages = array(
 'tog-minordefault' => '全部嗰編輯設成細修改',
 'tog-previewontop' => '到編輯框嗰上首顯示預覽',
 'tog-previewonfirst' => '頭道修改時顯示預覽',
-'tog-nocache' => '停用頁面嗰緩存',
 'tog-enotifwatchlistpages' => '我監視框嗰頁面一有改動發電子郵件到我',
 'tog-enotifusertalkpages' => '我對話框嗰頁面一有改動發email到我',
 'tog-enotifminoredits' => '有細嗰改動都要發email到我',
@@ -196,7 +194,6 @@ $messages = array(
 'qbedit' => '編寫',
 'qbpageoptions' => '箇頁',
 'qbmyoptions' => '我嗰頁面',
-'qbspecialpages' => '特殊頁',
 'faq' => 'FAQ',
 'faqpage' => 'Project:問得蠻多嗰問題',
 
@@ -383,9 +380,6 @@ $1',
 'perfcached' => '底下係緩存資料,可能伓係最新嗰。 A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 '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 />
-函數: $1<br />
-查詢: $2',
 'viewsource' => '原始碼',
 'protectedpagetext' => '箇頁鎖到嘞,改伓正。',
 'viewsourcetext' => '倷可以眵吖或複製箇頁嗰原始碼:',
@@ -465,7 +459,7 @@ $2',
 'loginlanguagelabel' => '語言:$1',
 
 # Change password dialog
-'resetpass' => '設過帳戶密碼',
+'changepassword' => '改過密碼',
 'resetpass_announce' => '倷係用到臨時email嗰代碼登入嗰。要登正入,倷要到箇首設定隻新密碼:',
 'resetpass_header' => '設過密碼',
 'oldpassword' => '老密碼:',
@@ -698,8 +692,6 @@ $2',
 'revdelete-success' => "'''修訂嗰可見性設置正嘍。'''",
 'logdelete-success' => "'''事件嗰可見性設置正哩。'''",
 'revdel-restore' => '改動可見性',
-'revdel-restore-deleted' => '刪吥嗰修訂版',
-'revdel-restore-visible' => '相得到嗰修訂版',
 'pagehist' => '文章歷史',
 'deletedhist' => '刪吥嗰歷史',
 
@@ -731,12 +723,8 @@ $2',
 # Search results
 'searchresults' => '尋到嗰結果',
 'searchresults-title' => '對「$1」尋到嗰結果',
-'searchresulttext' => '有關嗰{{SITENAME}}嗰更多資料,請參看[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => "用'''[[:$1]]'''",
-'searchsubtitleinvalid' => "用'''$1'''尋",
 'toomanymatches' => '返回多傷哩嗰結果,請較下用別嗰詞語尋過',
 'titlematches' => '文章標題符合',
-'notitlematches' => '冇頁面同文章標題符合',
 'textmatches' => '頁面內容符合',
 'notextmatches' => '冇頁面內容符合',
 'prevn' => '前{{PLURAL:$1|$1}}隻',
@@ -770,20 +758,16 @@ $2',
 'showingresults' => '底下從第<b>$2</b>條顯示起先嗰<b>$1</b>條結果:',
 'showingresultsnum' => '底下從第<b>$2</b>條顯示起先嗰<b>$3</b>條結果:',
 'showingresultsheader' => "'''$4'''嗰{{PLURAL:$5|第'''$1'''到第'''$3'''隻結果|第'''$1 - $2'''隻,攏共'''$3'''隻結果}}",
-'nonefound' => '<strong>注意:</strong>尋伓到往往係因為搜索夾到像“嗰”或“同”之類嗰常用字扤得。',
 'search-nonefound' => '冇合到嗰查詢結果。',
-'powersearch' => '高級尋',
 'powersearch-legend' => '高級搜尋',
 'powersearch-ns' => '到名子空間裡頭尋:',
 'powersearch-redir' => '重定向嗰表單',
-'powersearch-field' => '尋',
 'searchdisabled' => '{{SITENAME}}嗰搜索功能已經關閉。倷可以用Google尋吖。但係佢嗰索引可能係早先嗰。',
 
 # Preferences page
 'preferences' => '參數設置',
 'mypreferences' => '我嗰參數設置',
 'prefs-edits' => '編輯數:',
-'changepassword' => '改過密碼',
 'prefs-skin' => '皮',
 'skin-preview' => '(預覽)',
 'datedefault' => '默認項目',
@@ -795,19 +779,16 @@ $2',
 'prefs-watchlist-edits' => '加強版嗰監視列表顯示頂多更改數目:',
 'prefs-misc' => '雜項',
 'saveprefs' => '存到參數',
-'resetprefs' => '設過參數',
 'prefs-editing' => '編寫',
 'rows' => '橫:',
 'columns' => '豎:',
 'searchresultshead' => '設置尋到嗰結果',
-'resultsperpage' => '設置尋到嗰連結數',
 'stub-threshold' => '<a href="#" class="stub">細文連結</a>格式門檻:',
 'recentchangesdays' => '頂晏嗰改動嗰顯示日數:',
 'recentchangescount' => '最近更改中嗰編輯數:',
 'savedprefs' => '倷嗰個人參數設置保存正哩。',
 'timezonelegend' => '時區:',
 'localtime' => '當地時區',
-'timezoneoffset' => '時差¹',
 'servertime' => '服務器時間',
 'guesstimezone' => '到瀏覽器上填',
 'allowemail' => '接受別嗰用戶嗰郵件',
@@ -880,7 +861,6 @@ $2',
 'recentchanges-label-minor' => '箇係隻細修改',
 'recentchanges-label-bot' => '箇隻編輯係機器人舞嗰',
 'recentchanges-label-unpatrolled' => '箇隻編輯冇拕查過',
-'rcnote' => "下底係到$4 $5,箇'''$2'''日嗰'''$1'''回改動:",
 'rcnotefrom' => "底下係自'''$2'''嗰更改(頂多顯示'''$1'''):",
 'rclistfrom' => '顯示自$1後嗰新改動',
 'rcshowhideminor' => '$1細編輯',
@@ -1152,7 +1132,6 @@ $2',
 'deadendpages' => '脫接頁面',
 'deadendpagestext' => '下底箇頁面冇連到{{SITENAME}}嗰別隻頁面:',
 'protectedpages' => '受保護頁面',
-'protectedpagestext' => '底下頁面已經受保護以防止亂動',
 'protectedpagesempty' => '箇兮參數下冇頁面拕保護到。',
 'protectedtitles' => '保護題目',
 'listusers' => '用戶列表',
@@ -1193,9 +1172,6 @@ $2',
 'allpagesto' => '顯到下頭位置結束嗰頁面:',
 'allarticles' => '全部文章',
 'allinnamespace' => '全部文章(歸$1空間名)',
-'allnotinnamespace' => '全部文章(伓歸$1空間名)',
-'allpagesprev' => '前',
-'allpagesnext' => '後',
 'allpagessubmit' => '交',
 'allpagesprefix' => '以箇隻開頭嗰頁面:',
 'allpagesbadtitle' => '提供嗰頁面標題冇用,或有隻跨語言或跨wiki嗰字頭。佢可能含到一隻或幾隻字伓合標題。',
@@ -1399,7 +1375,6 @@ $NEWPAGE
 'undeletebtn' => '恢復',
 'undeletelink' => '還原',
 'undeleteviewlink' => '望吖',
-'undeletereset' => '設過',
 'undeletecomment' => '評論:',
 'undeletedrevisions' => '$1隻修改版本還原正哩',
 'undeletedrevisions-files' => '$1隻修改版本同$2隻檔案還原正哩',
@@ -1474,7 +1449,6 @@ $1',
 'ipadressorusername' => 'IP地址或用戶名:',
 'ipbexpiry' => '期限:',
 'ipbreason' => '原因:',
-'ipbreasonotherlist' => '別嗰原因',
 'ipbreason-dropdown' => '*一般嗰封鎖原因
 ** 緊編寫假嗰內容
 ** 刪卟文章內容
@@ -1489,8 +1463,6 @@ $1',
 'ipbsubmit' => '封鎖箇隻地址',
 'ipbother' => '別嗰時間:',
 'ipboptions' => '兩個鍾頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,一世:infinite',
-'ipbotheroption' => '別嗰',
-'ipbotherreason' => '別嗰/附加原因:',
 'ipbhidename' => '封鎖日誌、活躍封鎖列表同用戶列表裡頭弆到用戶名',
 'badipaddress' => 'IP位置伓對。',
 'blockipsuccesssub' => '封鎖正哩',
@@ -1574,7 +1546,6 @@ $1',
 *倷伓選下底嗰選擇方塊。
 噉倷就非要手工移動或合併頁面。",
 'movearticle' => '換動頁面:',
-'movenologin' => '冇登入',
 'movenologintext' => '倷要係登記用戶接到[[Special:UserLogin|登入]]後才移動得正頁面。',
 'movenotallowed' => '倷到{{SITENAME}}冇權移動頁面。',
 'newtitle' => '新標題:',
@@ -1584,8 +1555,6 @@ $1',
 'movepage-moved' => "'''「$1」拕移到「$2」'''",
 'articleexists' => '已經有頁面叫箇隻名字,要伓倷揀嗰名字冇用。請揀過隻名字。',
 'cantmove-titleprotected' => '倷移伓正一隻頁面到箇隻位置,箇隻新題目已經拕保護起來嘞,新建伓正。',
-'talkexists' => '頁面本身移動正嘞,但係新標題下底有嘞對話頁,所以對話頁移伓正。請手工合併兩頁。',
-'movedto' => '移到',
 'movetalk' => '移動相關嗰討論頁',
 'movelogpage' => '移動日誌',
 'movelogpagetext' => '下底係移動哩嗰頁面列表:',
@@ -2086,10 +2055,6 @@ $1',
 'exif-gpsdirection-t' => '真實方位',
 'exif-gpsdirection-m' => '地磁方位',
 
-# External editor support
-'edit-externally' => '用外部程式來編輯箇隻檔案',
-'edit-externally-help' => '請參看[https://www.mediawiki.org/wiki/Manual:External_editors 設置步驟]瞭解別嗰內容。',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
@@ -2111,7 +2076,6 @@ $1',
 'confirmemail_needlogin' => '汝要$1去確認汝嗰email地址。',
 'confirmemail_success' => '汝嗰郵箱已得到哩確認。如今汝能登得正入同到使用箇隻網站。',
 'confirmemail_loggedin' => '汝嗰email地址已得到確認。',
-'confirmemail_error' => '確認過程出錯。',
 'confirmemail_subject' => '{{SITENAME}}電子郵件地址確認',
 'confirmemail_body' => 'IP地址$1嗰用戶(可能係倷)到{{SITENAME}}註冊嘞帳戶"$2",並一同用嘞倷嗰email地址。
 
index 6e255c7..b1cba05 100644 (file)
@@ -57,7 +57,6 @@ $messages = array(
 'tog-minordefault' => 'Comharraich gach mùthadh mar mhùthadh beag a ghnàth',
 'tog-previewontop' => "Nochd an ro-shealladh os cionn a' bhogsa deasachaidh",
 'tog-previewonfirst' => "Nochd an ro-shealladh nuair a nithear a' chiad deasachadh",
-'tog-nocache' => 'Cuir à comas tasgadh nan duilleagan',
 'tog-enotifwatchlistpages' => "Cuir post-dealain thugam nuair a mhùthar duilleag a tha air a' chlàr-fhaire agam",
 'tog-enotifusertalkpages' => 'Cuir post-dealain thugam nuair a mhùthaichear duilleag mo chonaltraidh',
 'tog-enotifminoredits' => 'Cuir post-dealain thugam nuair a nithear mùthadh beag air duilleagan cuideachd',
@@ -192,7 +191,6 @@ $messages = array(
 'qbedit' => 'Deasaich',
 'qbpageoptions' => 'An duilleag seo',
 'qbmyoptions' => 'Na duilleagan agam',
-'qbspecialpages' => 'Duilleagan sònraichte',
 'faq' => 'CÀBHA',
 'faqpage' => 'Project:CÀBHA',
 
@@ -311,8 +309,8 @@ Seall air [[Special:Version|duilleag an tionndaidh]].',
 'youhavenewmessages' => 'Tha $1 ($2) agad.',
 'youhavenewmessagesfromusers' => 'Tha $1 o {{PLURAL:$3|aon chleachdaiche|$3 chleachdaiche|$3 cleachdaichean|$3 cleachdaiche}} agad ($2).',
 'youhavenewmessagesmanyusers' => 'Tha $1 agad o iomadh cleachdaiche ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|aon teachdaireachd ùr|$1 theachdaireachd ùr|$1 teachdaireachdan ùra|$1 teachdaireachd ùr}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|am mùthadh|an $1 mhùthadh|na $1 mùthaidhean|na $1 mùthadh}} mu dheireadh',
+'newmessageslinkplural' => '{{PLURAL:$1|teachdaireachd ùr|theachdaireachd ùr|theachdaireachdan ùra|teachdaireachd ùr}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|mhùthadh|mhùthadh|mùthaidhean|mùthadh}} mu dheireadh',
 'youhavenewmessagesmulti' => 'Tha teachdaireachdan ùra agad ann an $1',
 'editsection' => 'deasaich',
 'editold' => 'deasaich',
@@ -411,9 +409,6 @@ Faodaidh gu bheil aon no barrachd charactairean ann nach urrainn dhut a chleachd
 'perfcachedts' => "Chaidh an dàta a leanas a thasgadh agus chaidh ùrachadh $1 turas mu dheireadh. Tha {{PLURAL:$4|$4 toradh|$4 thoradh|$4 toraidhean|$4 toradh}} ri fhaighinn san tasgadan air a' char as motha.",
 'querypage-no-updates' => 'Tha ùrachadh air a chur à comas air an duilleag seo an-dràsta.
 Cha dèid an dàta an-seo ùrachadh aig an àm seo.',
-'wrong_wfQuery_params' => 'Paramatairean mì-cheart airson wfQuery()<br />
-Foincsean: $1<br />
-Iarrtas: $2',
 'viewsource' => 'Seall an tùs',
 'viewsource-title' => 'Seall an tùs aig $1',
 'actionthrottled' => 'Gnìomh air a mhùchadh',
@@ -443,7 +438,7 @@ Thug an rianaire a ghlais e seachad an t-adhbhar a leanas: "$3".',
 'invalidtitle-knownnamespace' => 'Tiotal mì-dhligheach leis an namespace "$2" agus an teacsa "$3"',
 'invalidtitle-unknownnamespace' => 'Tiotal mì-dhligheach leis an àireamh namespace $1 agus an teacsa "$2"',
 'exception-nologin' => 'Chan eil thu air clàradh a-steach',
-'exception-nologin-text' => 'Feumaidh tu clàradh a-steach air an uicipeid seo mus urrainn dhut seo a dhèanamh.',
+'exception-nologin-text' => 'Feumaidh tu [[Special:Userlogin|clàradh a-steach]] mus fhaic thu an duilleag seo no mus urrainn dhut seo a dhèanamh.',
 
 # Virus scanner
 'virus-badscanner' => "Droch cho-dhealbhachd: sganair bhìorasan neo-aithnichte: ''$1''",
@@ -547,7 +542,7 @@ Feuch ris a-rithist.',
 'passwordtooshort' => "Feumaidh faclan-faire a bhith {{PLURAL:$1|$1 charactar|$1 charactar|$1 caractaran|$1 caractar}} a dh'fhaid air a' char as lugha.",
 'password-name-match' => "Chan fhaod am facal-faire 's an t-ainm-cleachdaiche agad a bhith co-ionnann.",
 'password-login-forbidden' => "Tha an t-ainm-cleachdaiche 's am facal-faire seo toirmisgte.",
-'mailmypassword' => "Cuir facal-faire ùr thugam air a' phost-dealain",
+'mailmypassword' => 'Ath-shuidhich am facal-faire',
 'passwordremindertitle' => 'Facal-faire sealach ùr airson {{SITENAME}}',
 'passwordremindertext' => 'Dh\'iarr cuideigin (\'s mathaid gun do dh\'iarr thusa seo on t-seòladh IP $1) facal-faire ùr airson {{SITENAME}} ($4). Chaidh facal-faire sealach a chruthachadh airson "$2" a tha \'na "$3".
 Ma bha sin fa-near dhut, bidh agad ri clàradh a-steach agus facal-faire ùr a thaghadh
@@ -598,7 +593,7 @@ Ma bheir thu seachad e, thèid seo a chleachdadh gus urram a thoirt dha na h-ùg
 'user-mail-no-body' => 'Bha bodhaig na teachdaireachd bàn no air leth goirid.',
 
 # Change password dialog
-'resetpass' => 'Atharraich am facal-faire',
+'changepassword' => 'Atharraich facal-faire',
 'resetpass_announce' => "Chlàraich thu a-steach le còd sealach a fhuair thu air a' phost-d.
 Gus an clàradh a-steach a choileadh, tha agad ri facal-faire ùr a shuidheachadh an-seo:",
 'resetpass_header' => "Atharraich facal-faire a' chunntais",
@@ -619,7 +614,7 @@ Saoil an do dh'atharraich thu am facal-faire agad mu thràth no an do dh'iarr th
 # Special:PasswordReset
 'passwordreset' => 'Ath-shuidhich am facal-faire',
 'passwordreset-text-one' => 'Lìon am foirm seo gus am facal-faire agad ath-shuidheachadh.',
-'passwordreset-text-many' => '{{PLURAL:$1|Lìon aon dhe na raointean gus am facal-faire agad ath-shuidheachadh.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Lìon aon dhe na raointean gus facal-faire sealach fhaighinn ann am post-d.}}',
 'passwordreset-legend' => 'Ath-shuidhich am facal-faire',
 'passwordreset-disabled' => 'Chaidh ath-shuidheachadh nam faclan-faire a chur à comas air an uicipeid seo.',
 'passwordreset-emaildisabled' => "Chaidh feartan a' phuist-d a chur à comas san uicipeid seo.",
@@ -998,10 +993,6 @@ Gheibh thu mion-fhiosrachadh air [{{fullurl:{{#Special:Log}}/suppress|page={{FUL
 'revisiondelete' => 'Sguab às/neo-dhèan sguabadh às mhùthaidhean',
 'revdelete-nooldid-title' => 'Tha am mùthadh seo mì-dhligheach',
 'revdelete-nooldid-text' => "Cha do shònraich thu mùthadh airson seo a dhèanamh, chan eil e ann no tha thu a' feuchainn ris am mùthadh làithreach a chur am falach.",
-'revdelete-nologtype-title' => 'Cha deach seòrsa an loga a shònrachadh',
-'revdelete-nologtype-text' => 'Cha do shònraich thu seòrsa an loga air an dèanar seo.',
-'revdelete-nologid-title' => 'Innteart mì-dhligheach an loga',
-'revdelete-nologid-text' => 'Cha do shònraich thu tachartas loga targaide gus seo a dhèanamh no chan eil an t-innteart seo ann.',
 'revdelete-no-file' => 'Chan eil am faidhle a shònraich thu ann.',
 'revdelete-show-file-confirm' => 'A bheil thu cinnteach gu bheil thu airson coimhead air mùthadh an fhaidhle "<nowiki>$1</nowiki>" a chaidh a sguabadh às $2 aig $3?',
 'revdelete-show-file-submit' => 'Tha',
@@ -1022,8 +1013,8 @@ Gheibh rianairean eile air {{SITENAME}} greim fhathast air an t-susbaint fhalaic
 'revdelete-hide-user' => 'Ainm-cleachdaiche/seòladh IP an deasaiche',
 'revdelete-hide-restricted' => 'Mùch dàta o rianairean agus càch',
 'revdelete-radio-same' => '(na atharraich)',
-'revdelete-radio-set' => 'Ri fhaicinn',
-'revdelete-radio-unset' => 'Falaichte',
+'revdelete-radio-set' => 'Falaichte',
+'revdelete-radio-unset' => 'Ri fhaicinn',
 'revdelete-suppress' => 'Mùch dàta o rianairean agus càch',
 'revdelete-unsuppress' => 'Thoir air falbh na bacaidhean air mùthaidhean a chaidh aiseag',
 'revdelete-log' => 'Adhbhar:',
@@ -1035,8 +1026,6 @@ $1",
 'logdelete-failure' => "'''Cha b' urrainn dhuinn faicsinneachd an loga a shuidheachadh:'''
 $1",
 'revdel-restore' => 'mùth follaiseachd',
-'revdel-restore-deleted' => 'mùthaidhean a chaidh a sguabadh às',
-'revdel-restore-visible' => 'mùthaidhean faicsinneach',
 'pagehist' => 'Eachdraidh na duilleige',
 'deletedhist' => 'Eachdraidh a chaidh a sguabadh às',
 'revdelete-hide-current' => "Mearachd a' cur am falach an nì dhen $2, $1: Seo an lèirmheas làithreach. Cha ghabh a chur am falach.",
@@ -1107,12 +1096,8 @@ Thoir an aire gun dèid an colbh seo ath-shuidheachadh ma chleachdas tu ceanglai
 # Search results
 'searchresults' => 'Toraidhean rannsachaidh',
 'searchresults-title' => 'Lorg "$1" am broinn nan toraidhean',
-'searchresulttext' => 'Airson barrachd fiosrachaidh mu rannsachadh {{SITENAME}}, cuir sùil air [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Lorg thu \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gach duilleag a tha a\' tòiseachadh le "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gach duilleag a tha a\' ceangal ri "$1"]])',
-'searchsubtitleinvalid' => "Lorg thu airson '''$1'''",
 'toomanymatches' => 'Fhuaras cus thoraidhean, feuch ceist eile',
 'titlematches' => "Tiotalan dhuilleagan a tha a' maidseadh",
-'notitlematches' => "Chan eil tiotal de dhuilleag sam bith a' freagairt ris",
 'notextmatches' => "Chan eil tiotal de dhuilleag sam bith a' freagairt ris",
 'prevn' => 'an {{PLURAL:$1|$1}} roimhe',
 'nextn' => 'an ath {{PLURAL:$1|$1}}',
@@ -1120,10 +1105,8 @@ Thoir an aire gun dèid an colbh seo ath-shuidheachadh ma chleachdas tu ceanglai
 'nextn-title' => 'An ath $1 {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}}',
 'shown-title' => 'Seall $1 {{PLURAL:$1|toradh|thoradh|toraidhean|toradh}} air gach duilleag',
 'viewprevnext' => 'Seall ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Roghainnean luirg',
 'searchmenu-exists' => "'''Tha duilleag air a bheil \"[[:\$1]]\" air an uicipeid seo.'''",
 'searchmenu-new' => "'''Cruthaich an duilleag \"[[:\$1]]\" air an uicipeid seo!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Rùraich duilleagan aig a bheil an ro-leasachan seo]]',
 'searchprofile-articles' => 'Duilleagan susbainte',
 'searchprofile-project' => "Duilleagan nan cobharach 's nam pròiseactan",
 'searchprofile-images' => 'Ioma-mheadhanan',
@@ -1144,21 +1127,16 @@ Thoir an aire gun dèid an colbh seo ath-shuidheachadh ma chleachdas tu ceanglai
 'search-interwiki-default' => 'Toraidhean $1:',
 'search-interwiki-more' => '(barrachd)',
 'search-relatedarticle' => 'Co-cheangailte',
-'mwsuggest-disable' => 'Cuir na molaidhean luirg à comas',
 'searcheverything-enable' => 'Seall anns na namespaces air fad',
 'searchrelated' => 'co-cheangailte',
 'searchall' => 'a h-uile',
 'showingresults' => "A' nochdadh suas gu $1 {{PLURAL:$1|$1 toradh|$1 thoradh|$1 toraidhean|$1 toradh}} gu h-ìosal a' tòiseachadh le #'''$2'''.",
 'showingresultsnum' => "A' nochdadh '''$3''' {{PLURAL:$3|$3 toradh|$3 thoradh|$3 toraidhean|$3 toradh}} gu h-ìosal a' tòiseachadh le #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Toradh '''$1''' à '''$3'''|Toraidhean '''$1 - $2''' of '''$3'''}} airson '''$4'''",
-'nonefound' => "'''Aire''': Chan dèid ach cuid dhe na namespaces a lorg a ghnàth.
-Feuch ri ''all:'' a chuir air beulaibh an iarrtais agad gus rannsachadh a dhèanamh am broinn na susbainte gu lèir (a' gabhail a-steach nan duilleagan conaltraidh, teamplaidean is msaa), no cleachd an namespace a bha thu ag iarraidh mar ro-leasachan.",
 'search-nonefound' => "Cha do fhreagair toradh sam bith ri d' iarrtas.",
-'powersearch' => 'Rannsachadh adhartach',
 'powersearch-legend' => 'Rannsachadh adhartach',
 'powersearch-ns' => 'Lorg ann an namespaces:',
 'powersearch-redir' => 'Seall ath-sheòlaidhean',
-'powersearch-field' => 'Lorg',
 'powersearch-togglelabel' => 'Sgrùd:',
 'powersearch-toggleall' => 'Na h-uile',
 'powersearch-togglenone' => 'Chan eil gin',
@@ -1171,7 +1149,6 @@ Faodaidh gum bi inneacsan susbaint {{SITENAME}} tuilleadh 's sean ge-tà.",
 'preferences' => 'Roghainnean',
 'mypreferences' => 'Na roghainnean agam',
 'prefs-edits' => 'Co mheud deasachadh:',
-'changepassword' => 'Atharraich facal-faire',
 'prefs-skin' => 'Bian',
 'skin-preview' => 'Ro-shealladh',
 'datedefault' => 'Gun roghainnean',
@@ -1193,7 +1170,6 @@ Faodaidh gum bi inneacsan susbaint {{SITENAME}} tuilleadh 's sean ge-tà.",
 'prefs-email' => "Roghainnean a' phuist-d",
 'prefs-rendering' => 'Coltas',
 'saveprefs' => 'Sàbhail',
-'resetprefs' => 'Falamhaich atharrachaidhean nach deach a shàbhaladh fhathast',
 'restoreprefs' => 'Aisig na roghainnean bunaiteach uile (anns gach earrann)',
 'prefs-editing' => "A' deasachadh",
 'rows' => 'Sreathan',
@@ -1342,12 +1318,11 @@ Chan fhaicear an seòladh fhèin nuair a chuireas cuideigin post-dealain thugad.
 'recentchanges-label-minor' => 'Seo mùthadh beag',
 'recentchanges-label-bot' => "'S e bot a rinn an deasachadh seo",
 'recentchanges-label-unpatrolled' => 'Cha deach freiceadan tron deasachadh seo fhathast',
-'rcnote' => 'Tha {{PLURAL:$1|an $1 mhùthadh|an $1 mhùthadh|na $1 mùthaidhean|na $1 mùthadh}} mu dheireadh anns na $2 {{PLURAL:$2|latha|latha|làithean|latha}} mu dheireadh, mar a bha iad $5, $4.',
 'rcnotefrom' => "Gheibhear na mùthaidhean a-mach o '''$2''' (gu ruige '''$1''') gu h-ìosal.",
 'rclistfrom' => 'Seall na mùthaidhean ùra a-mach o $1',
 'rcshowhideminor' => '$1 mùthaidhean beaga',
 'rcshowhidebots' => '$1 botaichean',
-'rcshowhideliu' => '$1 neach-cleachdaidh air logadh a-steach',
+'rcshowhideliu' => '$1 neach-cleachdaidh clàraichte',
 'rcshowhideanons' => '$1 luchd-cleachdaidh gun ainm',
 'rcshowhidepatr' => '$1 na deasachaidhean fo aire freiceadain',
 'rcshowhidemine' => '$1 na mùthaidhean agam',
@@ -1694,9 +1669,6 @@ Ma thachras seo, feumaidh to an duilleag a ghluasad no cho-aontachadh a làimh,
 'movepage-moved' => '\'\'\'Chaidh "$1" a ghluasad a "$2"\'\'\'',
 'articleexists' => 'Tha duilleag ann mu thràth air a bheil an t-ainm seo no chan eil an t-ainm a thagh thu dligheachd.
 Nach tagh thu ainm eile?',
-'talkexists' => "'''Chaidh an duilleag fhèin a ghluasad gu soirbheachail ach cha do ghabh an duilleag deasbaireachd a ghluasad a chionn 's gu bheil tè ann aig an tiotal ùr mu thràth.
-Bidh agad ris an co-aontachadh a làimh.'''",
-'movedto' => 'air a ghluasad a',
 'movetalk' => 'Gluais an duilleag deasbaireachd a tha co-cheangailte ris',
 'movelogpage' => 'Loga nan gluasadan',
 'movereason' => 'Adhbhar:',
@@ -1786,6 +1758,9 @@ Tadhail air [https://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki]
 'others' => 'eile',
 'siteusers' => '{{PLURAL:$2|cleachdaiche|cleachdaichean}} {{SITENAME}} $1',
 
+# Info page
+'pageinfo-toolboxlink' => 'Fiosrachadh mun duilleag',
+
 # Browsing diffs
 'previousdiff' => '← Mùthadh nas sine',
 'nextdiff' => 'Deasachadh nas ùire →',
@@ -1794,7 +1769,7 @@ Tadhail air [https://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki]
 'file-info-size' => '$1 × $2 pixel, meud an fhaidhle: $3, seòrsa MIME: $4',
 'file-nohires' => 'Chan eil dùmhlachd-bhreacaidh nas fhearr ri fhaighinn.',
 'svg-long-desc' => 'Faidhle SVG, a-rèir ainm $1 × $2 pixel, meud faidhle: $3',
-'show-big-image' => 'Dùmhlachd-bhreacaidh shlàn',
+'show-big-image' => 'Am faidhle tùsail',
 
 # Special:NewFiles
 'ilsubmit' => 'Rannsaich',
@@ -1829,10 +1804,6 @@ Bidh an fheadhainn eile falaichte a ghnàth.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Deasaich am faidhle le prògram on taobh a-muigh',
-'edit-externally-help' => '(Seall air [https://www.mediawiki.org/wiki/Manual:External_editors mìneachadh an t-suidheachaidh] airson barrachd fiosrachaidh)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'a h-uile',
 'namespacesall' => 'uile',
index 48fbbee..80b66a9 100644 (file)
@@ -68,12 +68,12 @@ $dateFormats = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Usuarios_activos' ),
        'Allmessages'               => array( 'Todas_as_mensaxes' ),
+       'AllMyUploads'              => array( 'Todas_as_miñas_cargas', 'Todos_os_meus_ficheiros' ),
        'Allpages'                  => array( 'Todas_as_páxinas' ),
        'Ancientpages'              => array( 'Páxinas_máis_antigas' ),
        'Badtitle'                  => array( 'Título_incorrecto' ),
        'Blankpage'                 => array( 'Baleirar_a_páxina' ),
        'Block'                     => array( 'Bloquear', 'Bloquear_o_enderezo_IP', 'Bloquear_o_usuario' ),
-       'Blockme'                   => array( 'Bloquearme' ),
        'Booksources'               => array( 'Fontes_bibliográficas' ),
        'BrokenRedirects'           => array( 'Redireccións_rotas' ),
        'Categories'                => array( 'Categorías' ),
@@ -85,10 +85,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_unha_conta' ),
        'Deadendpages'              => array( 'Páxinas_mortas' ),
        'DeletedContributions'      => array( 'Contribucións_borradas' ),
-       'Disambiguations'           => array( 'Homónimos' ),
        'DoubleRedirects'           => array( 'Redireccións_dobres' ),
        'EditWatchlist'             => array( 'Editar_a_lista_de_vixilancia' ),
        'Emailuser'                 => array( 'Correo_electrónico' ),
+       'ExpandTemplates'           => array( 'Expandir_os_modelos' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'Páxinas_con_menos_revisións' ),
        'FileDuplicateSearch'       => array( 'Procura_de_ficheiros_duplicados' ),
@@ -137,6 +137,7 @@ $specialPageAliases = array(
        'Recentchanges'             => array( 'Cambios_recentes' ),
        'Recentchangeslinked'       => array( 'Cambios_relacionados' ),
        'Redirect'                  => array( 'Redirección' ),
+       'ResetTokens'               => array( 'Restablecer_os_pases' ),
        'Revisiondelete'            => array( 'Revisións_borradas' ),
        'Search'                    => array( 'Procurar' ),
        'Shortpages'                => array( 'Páxinas_curtas' ),
@@ -175,7 +176,7 @@ $magicWords = array(
        'forcetoc'                  => array( '0', '__FORZAROÍNDICE__', '__FORCARTDC__', '__FORCARSUMARIO__', '__FORÇARTDC__', '__FORÇARSUMÁRIO__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__ÍNDICE__', '__TDC__', '__SUMÁRIO__', '__SUMARIO__', '__TOC__' ),
        'noeditsection'             => array( '0', '__SECCIÓNSNONEDITABLES__', '__NÃOEDITARSEÇÃO__', '__SEMEDITARSEÇÃO__', '__NAOEDITARSECAO__', '__SEMEDITARSECAO__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'MESACTUAL', 'MESATUAL', 'MESATUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth'              => array( '1', 'MESACTUAL', 'MESACTUAL2', 'MESATUAL', 'MESATUAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', 'MESACTUAL1', 'MESATUAL1', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'NOMEDOMESACTUAL', 'NOMEDOMESATUAL', 'CURRENTMONTHNAME' ),
        'currentmonthabbrev'        => array( '1', 'ABREVIATURADOMESACTUAL', 'MESATUALABREV', 'MESATUALABREVIADO', 'ABREVIATURADOMESATUAL', 'CURRENTMONTHABBREV' ),
@@ -185,7 +186,7 @@ $magicWords = array(
        'currentyear'               => array( '1', 'ANOACTUAL', 'ANOATUAL', 'CURRENTYEAR' ),
        'currenttime'               => array( '1', 'DATAEHORAACTUAIS', 'HORARIOATUAL', 'CURRENTTIME' ),
        'currenthour'               => array( '1', 'HORAACTUAL', 'HORAATUAL', 'CURRENTHOUR' ),
-       'localmonth'                => array( '1', 'MESLOCAL', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonth'                => array( '1', 'MESLOCAL', 'MESLOCAL2', 'LOCALMONTH', 'LOCALMONTH2' ),
        'localmonth1'               => array( '1', 'MESLOCAL1', 'LOCALMONTH1' ),
        'localmonthname'            => array( '1', 'NOMEDOMESLOCAL', 'LOCALMONTHNAME' ),
        'localmonthabbrev'          => array( '1', 'ABREVIATURADOMESLOCAL', 'MESLOCALABREV', 'MESLOCALABREVIADO', 'LOCALMONTHABBREV' ),
@@ -204,10 +205,15 @@ $magicWords = array(
        'numberofviews'             => array( '1', 'NÚMERODEVISITAS', 'NUMERODEEXIBICOES', 'NÚMERODEEXIBIÇÕES', 'NUMBEROFVIEWS' ),
        'pagename'                  => array( '1', 'NOMEDAPÁXINA', 'NOMEDAPAGINA', 'NOMEDAPÁGINA', 'PAGENAME' ),
        'namespace'                 => array( '1', 'ESPAZODENOMES', 'DOMINIO', 'DOMÍNIO', 'ESPACONOMINAL', 'ESPAÇONOMINAL', 'NAMESPACE' ),
+       'namespacenumber'           => array( '1', 'NÚMERODOESPAZODENOMES', 'NAMESPACENUMBER' ),
+       'talkspace'                 => array( '1', 'ESPAZODECONVERSA', 'PAGINADEDISCUSSAO', 'PÁGINADEDISCUSSÃO', 'TALKSPACE' ),
+       'subjectspace'              => array( '1', 'ESPAZODECONTIDO', 'PAGINADECONTEUDO', 'PAGINADECONTEÚDO', 'SUBJECTSPACE', 'ARTICLESPACE' ),
        'fullpagename'              => array( '1', 'NOMECOMPLETODAPÁXINA', 'NOMECOMPLETODAPAGINA', 'NOMECOMPLETODAPÁGINA', 'FULLPAGENAME' ),
        'subpagename'               => array( '1', 'NOMEDASUBPÁXINA', 'NOMEDASUBPAGINA', 'NOMEDASUBPÁGINA', 'SUBPAGENAME' ),
+       'rootpagename'              => array( '1', 'NOMEDAPÁXINARAÍZ', 'ROOTPAGENAME' ),
        'basepagename'              => array( '1', 'NOMEDAPÁXINABASE', 'NOMEDAPAGINABASE', 'NOMEDAPÁGINABASE', 'BASEPAGENAME' ),
        'talkpagename'              => array( '1', 'NOMEDAPÁXINADECONVERSA', 'NOMEDAPAGINADEDISCUSSAO', 'NOMEDAPÁGINADEDISCUSSÃO', 'TALKPAGENAME' ),
+       'subjectpagename'           => array( '1', 'NOMEDAPÁXINADECONTIDO', 'NOMEDAPAGINADECONTEUDO', 'NOMEDAPÁGINADECONTEÚDO', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
        'img_thumbnail'             => array( '1', 'miniatura', 'miniaturadaimaxe', 'miniaturadaimagem', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'miniatura=$1', 'miniaturadaimaxe=$1', 'miniaturadaimagem=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'dereita', 'direita', 'right' ),
@@ -216,8 +222,10 @@ $magicWords = array(
        'img_center'                => array( '1', 'centro', 'center', 'centre' ),
        'img_framed'                => array( '1', 'conmarco', 'conbordo', 'marco', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'senmarco', 'senbordo', 'semmoldura', 'semborda', 'frameless' ),
-       'img_page'                  => array( '1', 'páxina=$1', 'páxina $1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'páxina=$1', 'páxina_$1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'arribaádereita', 'arribaádereita=$1', 'arribaádereita_$1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'bordo', 'borda', 'border' ),
+       'img_baseline'              => array( '1', 'liñadebase', 'linhadebase', 'baseline' ),
        'img_top'                   => array( '1', 'arriba', 'acima', 'top' ),
        'img_text_top'              => array( '1', 'texto-arriba', 'text-top' ),
        'img_middle'                => array( '1', 'medio', 'meio', 'middle' ),
@@ -226,16 +234,38 @@ $magicWords = array(
        'img_link'                  => array( '1', 'ligazón=$1', 'ligação=$1', 'link=$1' ),
        'img_class'                 => array( '1', 'clase=$1', 'class=$1' ),
        'sitename'                  => array( '1', 'NOMEDOSITIO', 'NOMEDOSITE', 'NOMEDOSÍTIO', 'SITENAME' ),
-       'localurl'                  => array( '0', 'URLLOCAL', 'LOCALURL:' ),
+       'localurl'                  => array( '0', 'URLLOCAL:', 'LOCALURL:' ),
        'articlepath'               => array( '0', 'RUTADOARTIGO', 'ARTICLEPATH' ),
        'pageid'                    => array( '0', 'IDDAPÁXINA', 'PAGEID' ),
        'server'                    => array( '0', 'SERVIDOR', 'SERVER' ),
        'servername'                => array( '0', 'NOMEDOSERVIDOR', 'SERVERNAME' ),
+       'scriptpath'                => array( '0', 'RUTADAESCRITURA', 'CAMINHODOSCRIPT', 'SCRIPTPATH' ),
+       'stylepath'                 => array( '0', 'RUTADOESTILO', 'STYLEPATH' ),
        'grammar'                   => array( '0', 'GRAMÁTICA:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'SEXO:', 'GENERO', 'GÊNERO', 'GENDER:' ),
-       'displaytitle'              => array( '1', 'AMOSAROTÍTULO', 'EXIBETITULO', 'EXIBETÍTULO', 'DISPLAYTITLE' ),
+       'currentweek'               => array( '1', 'SEMANAACTUAL', 'SEMANAATUAL', 'CURRENTWEEK' ),
+       'localweek'                 => array( '1', 'SEMANALOCAL', 'LOCALWEEK' ),
+       'revisionid'                => array( '1', 'IDDAREVISIÓN', 'IDDAREVISAO', 'IDDAREVISÃO', 'REVISIONID' ),
+       'revisionday'               => array( '1', 'DÍADAREVISIÓN', 'DIADAREVISAO', 'DIADAREVISÃO', 'REVISIONDAY' ),
+       'revisionday2'              => array( '1', 'DÍADAREVISIÓN2', 'DIADAREVISAO2', 'DIADAREVISÃO2', 'REVISIONDAY2' ),
+       'revisionmonth'             => array( '1', 'MESDAREVISIÓN', 'MESDAREVISAO', 'MÊSDAREVISÃO', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'MESDAREVISIÓN1', 'REVISIONMONTH1' ),
+       'revisionyear'              => array( '1', 'ANODAREVISIÓN', 'ANODAREVISAO', 'ANODAREVISÃO', 'REVISIONYEAR' ),
+       'revisiontimestamp'         => array( '1', 'DATAEHORADAREVISIÓN', 'REVISIONTIMESTAMP' ),
+       'revisionuser'              => array( '1', 'USUARIODAREVISIÓN', 'USUARIODAREVISAO', 'USUÁRIODAREVISÃO', 'REVISIONUSER' ),
+       'fullurl'                   => array( '0', 'URLCOMPLETO:', 'FULLURL:' ),
+       'canonicalurl'              => array( '0', 'URLCANÓNICO:', 'CANONICALURL:' ),
+       'lcfirst'                   => array( '0', 'PRIMEIRAMINÚSCULA:', 'PRIMEIRAMINUSCULA:', 'LCFIRST:' ),
+       'ucfirst'                   => array( '0', 'PRIMEIRAMAIÚSCULA:', 'PRIMEIRAMAIUSCULA:', 'UCFIRST:' ),
+       'lc'                        => array( '0', 'MINÚSCULA:', 'MINUSCULA', 'MINÚSCULA', 'MINUSCULAS', 'MINÚSCULAS', 'LC:' ),
+       'uc'                        => array( '0', 'MAIÚSCULA:', 'MAIUSCULA', 'MAIÚSCULA', 'MAIUSCULAS', 'MAIÚSCULAS', 'UC:' ),
+       'raw'                       => array( '0', 'ENBRUTO:', 'RAW:' ),
+       'displaytitle'              => array( '1', 'AMOSAROTÍTULO', 'MOSTRAROTÍTULO', 'EXIBETITULO', 'EXIBETÍTULO', 'DISPLAYTITLE' ),
        'newsectionlink'            => array( '1', '__LIGAZÓNDANOVASECCIÓN__', '__LINKDENOVASECAO__', '__LINKDENOVASEÇÃO__', '__LIGACAODENOVASECAO__', '__LIGAÇÃODENOVASEÇÃO__', '__NEWSECTIONLINK__' ),
+       'currentversion'            => array( '1', 'VERSIÓNACTUAL', 'REVISAOATUAL', 'REVISÃOATUAL', 'CURRENTVERSION' ),
        'language'                  => array( '0', '#LINGUA:', '#IDIOMA:', '#LANGUAGE:' ),
+       'contentlanguage'           => array( '1', 'LINGUADOCONTIDO', 'IDIOMADOCONTIDO', 'IDIOMADOCONTEUDO', 'IDIOMADOCONTEÚDO', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+       'pagesinnamespace'          => array( '1', 'PÁXINASNOESPAZODENOMES:', 'PAGINASNOESPACONOMINAL', 'PÁGINASNOESPAÇONOMINAL', 'PAGINASNODOMINIO', 'PÁGINASNODOMÍNIO', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'            => array( '1', 'NÚMERODEADMINISTRADORES', 'NUMERODEADMINISTRADORES', 'NUMBEROFADMINS' ),
        'special'                   => array( '0', 'especial', 'special' ),
        'defaultsort'               => array( '1', 'ORDENAR:', 'ORDENACAOPADRAO', 'ORDENAÇÃOPADRÃO', 'ORDEMPADRAO', 'ORDEMPADRÃO', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
@@ -244,6 +274,7 @@ $magicWords = array(
        'pagesincategory'           => array( '1', 'PÁXINASNACATEGORÍA', 'PAGINASNACATEGORIA', 'PÁGINASNACATEGORIA', 'PAGINASNACAT', 'PÁGINASNACAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'pagesize'                  => array( '1', 'TAMAÑODAPÁXINA', 'TAMANHODAPAGINA', 'TAMANHODAPÁGINA', 'PAGESIZE' ),
        'url_path'                  => array( '0', 'RUTA', 'PATH' ),
+       'url_query'                 => array( '0', 'PESCUDA', 'QUERY' ),
        'pagesincategory_all'       => array( '0', 'todos', 'all' ),
        'pagesincategory_pages'     => array( '0', 'páxinas', 'pages' ),
        'pagesincategory_subcats'   => array( '0', 'subcategorías', 'subcats' ),
@@ -275,7 +306,6 @@ $messages = array(
 'tog-minordefault' => 'Marcar por omisión todas as edicións como pequenas',
 'tog-previewontop' => 'Mostrar a vista previa antes da caixa de edición',
 'tog-previewonfirst' => 'Mostrar a vista previa na primeira edición',
-'tog-nocache' => 'Desactivar a memoria caché do navegador',
 'tog-enotifwatchlistpages' => 'Enviádeme unha mensaxe de correo electrónico cando unha páxina ou un ficheiro da miña lista de vixilancia sufra un cambio',
 'tog-enotifusertalkpages' => 'Enviádeme unha mensaxe de correo electrónico cando a miña páxina de conversa cambie',
 'tog-enotifminoredits' => 'Enviádeme tamén unha mensaxe de correo electrónico cando se produzan edicións pequenas nas páxinas ou nos ficheiros',
@@ -411,7 +441,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta páxina',
 'qbmyoptions' => 'As miñas páxinas',
-'qbspecialpages' => 'Páxinas especiais',
 'faq' => 'Preguntas máis frecuentes',
 'faqpage' => 'Project:FAQ',
 
@@ -628,9 +657,6 @@ Poida que conteña un ou máis caracteres dos que non se poden empregar nos tít
 'perfcached' => 'Esta información é da memoria caché e pode ser que non estea completamente actualizada. Hai un máximo de {{PLURAL:$1|$1 resultado dispoñible|$1 resultados dispoñibles}} na caché.',
 'perfcachedts' => 'Esta información é da memoria caché. Última actualización: $2 ás $3. Hai un máximo de {{PLURAL:$4|$4 resultado dispoñible|$4 resultados dispoñibles}} na caché.',
 'querypage-no-updates' => 'Neste momento están desactivadas as actualizacións nesta páxina. O seu contido non se modificará.',
-'wrong_wfQuery_params' => 'Parámetros incorrectos para wfQuery()<br />
-Función: $1<br />
-Pescuda: $2',
 'viewsource' => 'Ver o código fonte',
 'viewsource-title' => 'Ver o código fonte de "$1"',
 'actionthrottled' => 'Acción limitada',
@@ -767,7 +793,7 @@ Por favor, inténteo de novo.',
 'passwordtooshort' => 'Os contrasinais deben conter, como mínimo, {{PLURAL:$1|1 carácter|$1 caracteres}}.',
 'password-name-match' => 'O seu contrasinal debe ser diferente do seu nome de usuario.',
 'password-login-forbidden' => 'O uso deste nome de usuario e contrasinal foi prohibido.',
-'mailmypassword' => 'Enviádeme un contrasinal novo por correo',
+'mailmypassword' => 'Restablecer o contrasinal',
 'passwordremindertitle' => 'Novo contrasinal temporal para {{SITENAME}}',
 'passwordremindertext' => 'Alguén (probablemente vostede, desde o enderezo IP $1) solicitou un novo
 contrasinal para acceder a {{SITENAME}} ($4). Un contrasinal temporal para o usuario
@@ -821,7 +847,7 @@ Se escolle dalo utilizarase para atribuír ao usuario o seu traballo.',
 'user-mail-no-body' => 'Intentou enviar un correo baleiro ou cun corpo curto de máis.',
 
 # Change password dialog
-'resetpass' => 'Cambiar o contrasinal',
+'changepassword' => 'Cambiar o contrasinal',
 'resetpass_announce' => 'Debe rexistrarse co código temporal que recibiu por correo electrónico. Para finalizar o rexistro debe indicar un novo contrasinal aquí:',
 'resetpass_text' => '<!-- Engadir texto aquí -->',
 'resetpass_header' => 'Cambiar o contrasinal da conta',
@@ -842,7 +868,7 @@ Pode ser que xa cambiase o seu contrasinal ou que solicitase un novo contrasinal
 # Special:PasswordReset
 'passwordreset' => 'Restablecer o contrasinal',
 'passwordreset-text-one' => 'Encha este formulario para restablecer o seu contrasinal.',
-'passwordreset-text-many' => '{{PLURAL:$1|Encha un dos campos para restablecer o seu contrasinal.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Encha un dos campos para recibir por correo electrónico un contrasinal temporal.}}',
 'passwordreset-legend' => 'Restablecer o contrasinal',
 'passwordreset-disabled' => 'O restablecemento de contrasinais está desactivado neste wiki.',
 'passwordreset-emaildisabled' => 'As funcións do correo electrónico están desactivadas neste wiki.',
@@ -1017,8 +1043,8 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
 '''Este aínda non foi gardado!'''",
 'sitejspreview' => "'''Lembre que só está vendo a vista previa deste código JavaScript.'''
 '''Este aínda non foi gardado!'''",
-'userinvalidcssjstitle' => "'''Aviso:''' Non hai ningún tema chamado \"\$1\".
-Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo {{ns:user}}:Foo/vector.css no canto de {{ns:user}}:Foo/Vector.css.",
+'userinvalidcssjstitle' => '\'\'\'Aviso:\'\'\' Non hai ningunha aparencia chamada "$1".
+Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo "{{ns:user}}:Foo/vector.css" no canto de "{{ns:user}}:Foo/Vector.css".',
 'updated' => '(Actualizado)',
 'note' => "'''Nota:'''",
 'previewnote' => "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
@@ -1110,6 +1136,8 @@ Esta xa existe.',
 'content-not-allowed-here' => 'O contido "$1" non está permitido na páxina "[[$2]]"',
 'editwarning-warning' => 'Deixar esta páxina pode causar a perda de calquera cambio feito.
 Se accedeu ao sistema, pode desactivar esta mensaxe de advertencia na sección "Edición" das súas preferencias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contido non admitido',
+'editpage-notsupportedcontentformat-text' => 'O formato de contido $1 non é compatible co modelo de contido  $2.',
 
 # Content models
 'content-model-wikitext' => 'texto wiki',
@@ -1152,6 +1180,9 @@ Comprobe a comparación que aparece a continuación para confirmar que isto é o
 'cantcreateaccount-text' => "A creación de contas desde este enderezo IP ('''$1''') foi bloqueada por [[User:$3|$3]].
 
 A razón dada por $3 foi ''$2''",
+'cantcreateaccount-range-text' => "O usuario [[User:$3|$3]] bloqueou a creación de contas desde enderezos IP no rango '''$1''', no que se inclúe o seu enderezo IP ('''$4''').
+
+A razón que deu $3 foi ''$2''.",
 
 # History pages
 'viewpagelogs' => 'Ver os rexistros desta páxina',
@@ -1221,10 +1252,6 @@ Aínda ten a posibilidade de vela; pode ampliar os detalles no [{{fullurl:{{#Spe
 'revdelete-nooldid-title' => 'Revisión inválida',
 'revdelete-nooldid-text' => 'Non indicou a revisión ou revisións sobre as que realizar esta
 función, a revisión especificada non existe ou está intentando agochar a revisión actual.',
-'revdelete-nologtype-title' => 'Non se especificou ningún tipo de rexistro',
-'revdelete-nologtype-text' => 'Non especificou un tipo de rexistro co que levar a cabo esta acción.',
-'revdelete-nologid-title' => 'Entrada de rexistro inválida',
-'revdelete-nologid-text' => 'Ou non especificou o evento rexistrado no que levar a cabo esta función ou a entrada que deu non existe.',
 'revdelete-no-file' => 'O ficheiro especificado non existe.',
 'revdelete-show-file-confirm' => 'Está seguro de querer ver unha revisión borrada do ficheiro "<nowiki>$1</nowiki>" do día $2 ás $3?',
 'revdelete-show-file-submit' => 'Si',
@@ -1258,8 +1285,6 @@ $1",
 'logdelete-failure' => "'''A visibilidade do rexistro non pode ser fixada:'''
 $1",
 'revdel-restore' => 'cambiar a visibilidade',
-'revdel-restore-deleted' => 'revisións borradas',
-'revdel-restore-visible' => 'revisións visibles',
 'pagehist' => 'Historial da páxina',
 'deletedhist' => 'Historial de borrado',
 'revdelete-hide-current' => 'Produciuse un erro ao agochar o elemento con data do $1 ás $2: Esta é a revisión actual.
@@ -1337,12 +1362,8 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 # Search results
 'searchresults' => 'Resultados da procura',
 'searchresults-title' => 'Resultados da procura de "$1"',
-'searchresulttext' => 'Para máis información sobre como realizar procuras en {{SITENAME}}, vexa [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'A súa busca de "\'\'\'[[:$1]]\'\'\'" ([[Special:Prefixindex/$1|todas as páxinas que comezan por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|todas as páxinas que ligan con "$1"]])',
-'searchsubtitleinvalid' => "A súa busca de \"'''\$1'''\"",
 'toomanymatches' => 'Devolvéronse demasiadas coincidencias; inténteo cunha consulta diferente',
 'titlematches' => 'O título da páxina coincide',
-'notitlematches' => 'Non coincide ningún título de páxina',
 'textmatches' => 'O texto da páxina coincide',
 'notextmatches' => 'Non se atopou o texto en ningunha páxina',
 'prevn' => '{{PLURAL:$1|$1}} previas',
@@ -1351,10 +1372,8 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'nextn-title' => '{{PLURAL:$1|O seguinte resultado|Os seguintes $1 resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por páxina',
 'viewprevnext' => 'Ver as ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcións de busca',
 'searchmenu-exists' => "* Páxina \"'''[[\$1]]'''\"",
 'searchmenu-new' => "'''Crear a páxina \"[[:\$1]]\" neste wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue polas páxinas que comezan coas mesmas iniciais]]',
 'searchprofile-articles' => 'Páxinas de contido',
 'searchprofile-project' => 'Páxinas do proxecto e de axuda',
 'searchprofile-images' => 'Multimedia',
@@ -1375,21 +1394,16 @@ O [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} rexistro de borrad
 'search-interwiki-default' => 'Resultados en $1:',
 'search-interwiki-more' => '(máis)',
 'search-relatedarticle' => 'Relacionado',
-'mwsuggest-disable' => 'Desactivar as suxestións de procura',
 'searcheverything-enable' => 'Procurar en todos os espazos de nomes',
 'searchrelated' => 'relacionado',
 'searchall' => 'todo',
 'showingresults' => "{{PLURAL:$1|Móstrase '''1''' resultado|Móstranse '''$1''' resultados}}, comezando polo número '''$2'''.",
 'showingresultsnum' => "A continuación {{PLURAL:$3|móstrase '''1''' resultado|móstranse '''$3''' resultados}}, comezando polo número '''$2'''.",
 'showingresultsheader' => "{{PLURAL:\$5|Resultado '''\$1''' de '''\$3'''|Resultados do '''\$1''' ao '''\$2''', dun total de '''\$3''',}} para \"'''\$4'''\"",
-'nonefound' => "'''Nota:''' Por defecto, só algúns espazos de nomes se utilizan para as procuras.
-Probe a fixar a súa petición con ''all:'' para procurar en todo o contido (incluíndo páxinas de conversa, modelos etc.) ou use como prefixo o espazo de nomes desexado.",
 'search-nonefound' => 'Non se atopou ningún resultado que coincidise coa procura.',
-'powersearch' => 'Procurar',
 'powersearch-legend' => 'Busca avanzada',
 'powersearch-ns' => 'Procurar nos espazos de nomes:',
 'powersearch-redir' => 'Listar as redireccións',
-'powersearch-field' => 'Procurar por',
 'powersearch-togglelabel' => 'Seleccionar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Ningún',
@@ -1404,7 +1418,6 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'mypreferences' => 'Preferencias',
 'prefs-edits' => 'Número de edicións:',
 'prefsnologintext2' => 'Debe $1 para definir as preferencias de usuario.',
-'changepassword' => 'Cambiar o contrasinal',
 'prefs-skin' => 'Aparencia',
 'skin-preview' => 'Vista previa',
 'datedefault' => 'Ningunha preferencia',
@@ -1427,13 +1440,11 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 'prefs-email' => 'Opcións de correo electrónico',
 'prefs-rendering' => 'Aparencia',
 'saveprefs' => 'Gardar',
-'resetprefs' => 'Eliminar os cambios non gardados',
 'restoreprefs' => 'Restaurar todas as preferencias por defecto (en todas as seccións)',
 'prefs-editing' => 'Edición',
 'rows' => 'Filas:',
 'columns' => 'Columnas:',
 'searchresultshead' => 'Procurar',
-'resultsperpage' => 'Número de resultados por páxina:',
 'stub-threshold' => 'Límite superior para o formato de <a href="#" class="stub">ligazóns de bosquexo</a> (bytes):',
 'stub-threshold-disabled' => 'Desactivado',
 'recentchangesdays' => 'Número de días a mostrar nos cambios recentes:',
@@ -1444,11 +1455,10 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
 Calquera persoa que a saiba poderá ler a súa lista de vixilancia; non comparta esta clave.
 [[Special:ResetTokens|Prema aquí se necesita restablecela]].',
 'savedprefs' => 'Gardáronse as súas preferencias.',
-'timezonelegend' => 'Zona horaria:',
+'timezonelegend' => 'Fuso horario:',
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar a hora do servidor por defecto ($1)',
-'timezoneuseoffset' => 'Outra (especifique o desprazamento)',
-'timezoneoffset' => 'Desprazamento¹:',
+'timezoneuseoffset' => 'Outro (especifique o desprazamento)',
 'servertime' => 'Hora do servidor:',
 'guesstimezone' => 'Encher desde o navegador',
 'timezoneregion-africa' => 'África',
@@ -1518,6 +1528,7 @@ Se escolle dalo utilizarase para atribuírlle o seu traballo.',
 'prefs-tokenwatchlist' => 'Pase',
 'prefs-diffs' => 'Diferenzas',
 'prefs-help-prefershttps' => 'Esta preferencia ha aplicarse no seu vindeiro acceso ao sistema.',
+'prefs-tabs-navigation-hint' => 'Consello: Pode empregar as frechas esquerda e dereita para navegar polas lapelas da lista.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'O enderezo de correo electrónico semella válido',
@@ -1704,9 +1715,9 @@ Se escolle dalo utilizarase para atribuírlle o seu traballo.',
 'recentchanges-label-bot' => 'Esta edición foi realizada por un bot',
 'recentchanges-label-unpatrolled' => 'Esta edición aínda non foi comprobada',
 'recentchanges-label-plusminus' => 'O tamaño da páxina variou este número de bytes',
+'recentchanges-legend-heading' => "'''Lenda:'''",
 'recentchanges-legend-newpage' => '(véxase tamén a [[Special:NewPages|lista de páxinas novas]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "A continuación {{PLURAL:$1|móstrase '''1''' cambio|móstranse os últimos '''$1''' cambios}} {{PLURAL:$2|no último día|nos últimos '''$2''' días}} ata o $4 ás $5.",
 'rcnotefrom' => "A continuación móstranse os cambios feitos desde o '''$3''' ás '''$4''' (móstranse '''$1''' como máximo).",
 'rclistfrom' => 'Mostrar os cambios novos desde o $1',
 'rcshowhideminor' => '$1 as edicións pequenas',
@@ -1832,6 +1843,7 @@ Se aínda quere cargar o seu ficheiro, volva atrás e use outro nome.
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Este ficheiro é un duplicado {{PLURAL:$1|do seguinte|dos seguintes}}:',
 'file-deleted-duplicate' => 'Un ficheiro idéntico a este ("[[:$1]]") foi borrado previamente. Debería comprobar o historial de borrados do ficheiro antes de proceder a cargalo de novo.',
+'file-deleted-duplicate-notitle' => 'Un ficheiro idéntico a este foi borrado con anterioridade, e o título foi suprimido. Debería contactar con alguén capaz de ver os datos de ficheiros borrados para que revise esta situación antes de voltar a subilo de novo.',
 'uploadwarning' => 'Advertencia ao cargar o ficheiro',
 'uploadwarning-text' => 'Por favor, modifique a descrición do ficheiro e inténteo de novo.',
 'savefile' => 'Gardar o ficheiro',
@@ -2037,7 +2049,7 @@ Tamén pode reintentalo cando haxa menos actividade.',
 'imagelinks' => 'Uso do ficheiro',
 'linkstoimage' => '{{PLURAL:$1|A seguinte páxina liga|As seguintes $1 páxinas ligan}} con esta imaxe:',
 'linkstoimage-more' => 'Máis {{PLURAL:$1|dunha páxina liga|de $1 páxinas ligan}} con este ficheiro.
-A seguinte lista só amosa {{PLURAL:$1|a primeira páxina que liga|as primeiras $1 páxina que ligan}} con el.
+A seguinte lista só mostra {{PLURAL:$1|a primeira páxina que liga|as primeiras $1 páxina que ligan}} con el.
 Hai dispoñible [[Special:WhatLinksHere/$2|unha lista completa]].',
 'nolinkstoimage' => 'Ningunha páxina liga con este ficheiro.',
 'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|máis ligazóns]] cara a este ficheiro.',
@@ -2179,6 +2191,7 @@ As entradas <del>riscadas</del> xa foron resoltas.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|ligazón|ligazóns}}',
 'nmembers' => '$1 {{PLURAL:$1|páxina|páxinas}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membro|membros}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisión|revisións}}',
 'nviews' => 'vista {{PLURAL:$1|unha vez|$1 veces}}',
 'nimagelinks' => 'Empregada {{PLURAL:$1|nunha páxina|en $1 páxinas}}',
@@ -2217,10 +2230,9 @@ As entradas <del>riscadas</del> xa foron resoltas.',
 'protectedpages' => 'Páxinas protexidas',
 'protectedpages-indef' => 'Só as proteccións indefinidas',
 'protectedpages-cascade' => 'Só as proteccións en serie',
-'protectedpagestext' => 'As seguintes páxinas están protexidas fronte á edición ou traslado',
+'protectedpages-noredirect' => 'Agochar as redireccións',
 'protectedpagesempty' => 'Actualmente non hai ningunha páxina protexida con eses parámetros.',
 'protectedtitles' => 'Títulos protexidos',
-'protectedtitlestext' => 'Os seguintes títulos están protexidos fronte á creación',
 'protectedtitlesempty' => 'Actualmente non hai ningún título protexido con eses parámetros.',
 'listusers' => 'Lista de usuarios',
 'listusers-editsonly' => 'Mostrar só os usuarios con edicións',
@@ -2272,9 +2284,6 @@ Pode precisar máis a vista seleccionando o tipo de rexistro, o nome do usuario
 'allpagesto' => 'Mostrar as páxinas que rematen en:',
 'allarticles' => 'Todas as páxinas',
 'allinnamespace' => 'Todas as páxinas (espazo de nomes $1)',
-'allnotinnamespace' => 'Todas as páxinas (que non están no espazo de nomes $1)',
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Seguinte',
 'allpagessubmit' => 'Mostrar',
 'allpagesprefix' => 'Mostrar as páxinas que comezan co prefixo:',
 'allpagesbadtitle' => 'O título dado á páxina non era válido ou tiña un prefixo interlingüístico ou interwiki.
@@ -2500,6 +2509,7 @@ Limitouse a eliminación destas páxinas para previr problemas de funcionamento
 'delete-warning-toobig' => 'Esta páxina conta cun historial de edicións longo, de máis {{PLURAL:$1|dunha revisión|de $1 revisións}}.
 Ao eliminala pódense provocar problemas de funcionamento nas operacións da base de datos de {{SITENAME}};
 proceda con coidado.',
+'deleting-backlinks-warning' => "'''Atención:''' Outras páxinas ligan á páxina que vostede quere borrar.",
 
 # Rollback
 'rollback' => 'Reverter as edicións',
@@ -2616,7 +2626,6 @@ O texto destas revisións eliminadas só está á disposición dos administrador
 'undeletebtn' => 'Restaurar',
 'undeletelink' => 'ver/restaurar',
 'undeleteviewlink' => 'ver',
-'undeletereset' => 'Limpar',
 'undeleteinvert' => 'Inverter a selección',
 'undeletecomment' => 'Motivo:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|revisión restaurada|revisións restauradas}}',
@@ -2705,7 +2714,6 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
 'block' => 'Bloquear un usuario',
 'unblock' => 'Desbloquear un usuario',
 'blockip' => 'Bloquear o usuario',
-'blockip-title' => 'Bloquear un usuario',
 'blockip-legend' => 'Bloquear un usuario',
 'blockiptext' => 'Use o seguinte formulario para bloquear o acceso de escritura desde un enderezo IP ou para bloquear un usuario específico.
 Isto debería facerse só para previr vandalismo, e de acordo coa [[{{MediaWiki:Policy-url}}|política e normas]] vixentes.
@@ -2713,7 +2721,6 @@ Explique a razón específica do bloqueo (por exemplo, citando as páxinas concr
 'ipadressorusername' => 'Enderezo IP ou nome de usuario:',
 'ipbexpiry' => 'Duración:',
 'ipbreason' => 'Motivo:',
-'ipbreasonotherlist' => 'Outro motivo',
 'ipbreason-dropdown' => '*Motivos frecuentes para bloquear
 ** Inserir información falsa
 ** Eliminar o contido de páxinas
@@ -2729,8 +2736,6 @@ Explique a razón específica do bloqueo (por exemplo, citando as páxinas concr
 'ipbsubmit' => 'Bloquear este usuario',
 'ipbother' => 'Outra duración:',
 'ipboptions' => '2 horas:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,para sempre:infinite',
-'ipbotheroption' => 'outra',
-'ipbotherreason' => 'Outro motivo:',
 'ipbhidename' => 'Agochar o nome de usuario nas edicións e listas',
 'ipbwatchuser' => 'Vixiar a páxina de usuario e a de conversa deste usuario',
 'ipb-disableusertalk' => 'Impedir que o usuario edite a súa propia páxina de conversa mentres dure o bloqueo',
@@ -2742,6 +2747,7 @@ Explique a razón específica do bloqueo (por exemplo, citando as páxinas concr
 Olle a [[Special:BlockList|lista de bloqueos]] para revisalo.',
 'ipb-blockingself' => 'Está a piques de se bloquear! Está seguro de querer facelo?',
 'ipb-confirmhideuser' => 'Está a piques de bloquear un usuario coa opción "agochar o usuario" activada. Isto suprime o nome de usuario de todas as listas e entradas de rexistro. Está seguro de querer facelo?',
+'ipb-confirmaction' => 'Se está seguro de que quere facelo realmente, por favor marque o campo "{{int:ipb-confirm}}" abaixo.',
 'ipb-edit-dropdown' => 'Editar os motivos de bloqueo',
 'ipb-unblock-addr' => 'Desbloquear a $1',
 'ipb-unblock' => 'Desbloquear un usuario ou enderezo IP',
@@ -2820,7 +2826,6 @@ Por favor, contacte co seu fornecedor de acceso á Internet ou co seu soporte t
 'sorbs_create_account_reason' => 'O seu enderezo IP está rexistrado como un proxy aberto na lista DNSBL usada por {{SITENAME}}.
 Polo tanto, non pode crear unha conta',
 'xffblockreason' => 'Un enderezo IP presente na cabeceira X-Forwarded-For, ou ben seu ou ben dun servidor proxy que está utilizando, foi bloqueado. O motivo do bloqueo orixinal é: $1',
-'cant-block-while-blocked' => 'Non pode bloquear outros usuarios mentres vostede estea bloqueado.',
 'cant-see-hidden-user' => 'O usuario que intenta bloquear xa foi bloqueado e agochado. Dado que non ten o dereito necesario para agochar usuarios, non pode ver ou editar o bloqueo do usuario.',
 'ipbblocked' => 'Non pode bloquear ou desbloquear outros usuarios porque vostede está bloqueado',
 'ipbnounblockself' => 'Non ten os permisos necesarios para desbloquearse a si mesmo',
@@ -2880,7 +2885,6 @@ por favor, asegúrese de que entende as consecuencias disto antes de proseguir."
 Nestes casos, terá que mover ou mesturar a páxina manualmente se o desexa.",
 'movearticle' => 'Mover esta páxina:',
 'moveuserpage-warning' => "'''Aviso:''' Está a piques de mover unha páxina de usuario. Por favor, teña en conta que só se trasladará a páxina e que o usuario '''non''' será renomeado.",
-'movenologin' => 'Non accedeu ao sistema',
 'movenologintext' => 'Debe ser un usuario rexistrado e [[Special:UserLogin|acceder ao sistema]] para mover unha páxina.',
 'movenotallowed' => 'Non ten os permisos necesarios para mover páxinas.',
 'movenotallowedfile' => 'Non ten os permisos necesarios para mover ficheiros.',
@@ -2896,8 +2900,6 @@ Nestes casos, terá que mover ou mesturar a páxina manualmente se o desexa.",
 'articleexists' => 'Xa existe unha páxina con ese nome, ou o nome que escolleu non é válido.
 Por favor, escolla outro nome.',
 'cantmove-titleprotected' => 'Non pode mover a páxina a este destino, xa que o novo título foi protexido fronte á creación',
-'talkexists' => "'''Unicamente se puido facer o traslado da páxina. A páxina de conversa non se puido mover porque xa existe unha no novo título. Por favor, mestúreas de xeito manual.'''",
-'movedto' => 'movido a',
 'movetalk' => 'Mover a páxina de conversa, se cómpre',
 'move-subpages' => 'Mover as subpáxinas (ata $1)',
 'move-talk-subpages' => 'Mover as subpáxinas da páxina de conversa (ata $1)',
@@ -3748,15 +3750,10 @@ Os demais agocharanse por omisión.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridade definida polo usuario ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este ficheiro cunha aplicación externa',
-'edit-externally-help' => '(Consulte as seguintes [https://www.mediawiki.org/wiki/Manual:External_editors instrucións] para obter máis información)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todo',
 'namespacesall' => 'todos',
 'monthsall' => 'todos',
-'limitall' => 'todas',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar o enderezo de correo electrónico',
@@ -3779,7 +3776,6 @@ Pode ser que caducase.',
 'confirmemail_needlogin' => 'Debe $1 para confirmar o seu enderezo de correo electrónico.',
 'confirmemail_success' => 'Confirmouse o seu enderezo de correo electrónico. Agora xa pode [[Special:UserLogin|acceder ao sistema]] e facer uso do wiki.',
 'confirmemail_loggedin' => 'Xa se confirmou o seu enderezo de correo electrónico.',
-'confirmemail_error' => 'Houbo un problema ao gardar a súa confirmación.',
 'confirmemail_subject' => 'Confirmación do enderezo de correo electrónico de {{SITENAME}}',
 'confirmemail_body' => 'Alguén, probablemente vostede, desde o enderezo IP $1,
 rexistrou a conta "$2" con este enderezo de correo electrónico en {{SITENAME}}.
@@ -3861,6 +3857,11 @@ Por favor, confirme que realmente quere recrear esta páxina.",
 'imgmultigo' => 'Ir!',
 'imgmultigoto' => 'Ir á páxina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(lingua por defecto)',
+'img-lang-info' => 'Renderizar esta imaxe en $1. $2',
+'img-lang-go' => 'Mostrar',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -3941,8 +3942,18 @@ Tamén pode [[Special:EditWatchlist|empregar o editor normal]].',
 'version-parser-function-hooks' => 'Asociadores da función do analizador',
 'version-hook-name' => 'Nome do asociador',
 'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Licenza',
+'version-version' => '($1)',
+'version-license' => 'Licenza de MediaWiki',
+'version-ext-license' => 'Licenza',
+'version-ext-colheader-name' => 'Extensión',
+'version-ext-colheader-version' => 'Versión',
+'version-ext-colheader-license' => 'Licenza',
+'version-ext-colheader-description' => 'Descrición',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licenza para $1',
+'version-license-not-found' => 'Non se atopou información detallada de licenza para esta extensión.',
+'version-credits-title' => 'Receñecemento para $1',
+'version-credits-not-found' => 'Non se atopou información detallada de recoñecemento para esta extensión.',
 'version-poweredby-credits' => "Este wiki está desenvolvido por '''[https://www.mediawiki.org/wiki/MediaWiki/gl MediaWiki]''', dereitos de autoría © 2001-$1 $2.",
 'version-poweredby-others' => 'outros',
 'version-poweredby-translators' => 'os tradutores de translatewiki.net',
@@ -3962,13 +3973,14 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Ruta das escrituras]',
 
 # Special:Redirect
-'redirect' => 'Redirixir por nome de ficheiro, ID de usuario ou ID de revisión',
+'redirect' => 'Redirixir por nome de ficheiro, ID de usuario, ID de páxina ou ID de revisión',
 'redirect-legend' => 'Redirixir a un ficheiro ou unha páxina',
-'redirect-summary' => 'Esta páxina especial redirixe cara a un ficheiro (dado o nome), unha páxina (dado o ID dunha revisión) ou unha páxina de usuario (dado o ID dun usuario). Utilización: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta páxina especial redirixe cara a un ficheiro (dado o nome), unha páxina (dado o ID da páxina ou o dunha revisión) ou unha páxina de usuario (dado o ID dun usuario). Utilización: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Continuar',
 'redirect-lookup' => 'Procurar:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'ID de usuario',
+'redirect-page' => 'ID de páxina',
 'redirect-revision' => 'Revisión de páxina',
 'redirect-file' => 'Nome de ficheiro',
 'redirect-not-exists' => 'Non se atopou o valor',
@@ -4010,7 +4022,7 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 'external_image_whitelist' => ' #Deixe esta liña tal e como está<pre>
 #Poña embaixo fragmentos de expresións regulares (tan só a parte que vai entre //)
 #Isto coincidirá cos enderezos URL das imaxes externas (hotlinked)
-#Aquelas que coincidan serán amosadas como imaxes, senón, só será amosada unha ligazón cara a esta
+#Aquelas que coincidan mostraranse como imaxes, senón, só se mostrará unha ligazón cara a esta
 #As liñas que comecen por "#" son comentarios
 #Non diferencia entre maiúsculas e minúsculas
 
@@ -4035,7 +4047,6 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
 
 # Special:ComparePages
 'comparepages' => 'Comparar páxinas',
-'compare-selector' => 'Comparar as revisións de dúas páxinas',
 'compare-page1' => 'Páxina 1',
 'compare-page2' => 'Páxina 2',
 'compare-rev1' => 'Revisión 1',
@@ -4163,6 +4174,7 @@ En caso contrario, pode empregar o formulario sinxelo inferior. O seu comentario
 'api-error-overwrite' => 'Non está permitido sobrescribir un ficheiro existente.',
 'api-error-stashfailed' => 'Erro interno: O servidor non puido almacenar o ficheiro temporal.',
 'api-error-publishfailed' => 'Erro interno: O servidor non puido publicar o ficheiro temporal.',
+'api-error-stasherror' => 'Houbo un erro mentras se subía o ficheiro a stash.',
 'api-error-timeout' => 'O servidor non respondeu no tempo esperado.',
 'api-error-unclassified' => 'Houbo un erro descoñecido.',
 'api-error-unknown-code' => 'Erro descoñecido: "$1"',
@@ -4212,10 +4224,14 @@ De feito, expande case calquera cousa entre dúas chaves.',
 'expand_templates_input' => 'Texto de entrada:',
 'expand_templates_output' => 'Resultado',
 'expand_templates_xml_output' => 'Saída XML',
+'expand_templates_html_output' => 'Saída HTML en bruto',
 'expand_templates_ok' => 'Aceptar',
 'expand_templates_remove_comments' => 'Eliminar os comentarios',
 'expand_templates_remove_nowiki' => 'Suprimir as etiquetas <nowiki> no resultado',
 'expand_templates_generate_xml' => 'Mostrar as árbores de análise XML',
+'expand_templates_generate_rawhtml' => 'Mostrar o HTML en bruto',
 'expand_templates_preview' => 'Vista previa',
 
+# Unknown messages
+'uploadinvalidxml' => 'O XML do ficheiro cargado non pode ser interpretado.',
 );
index 2a37792..8ceb0ed 100644 (file)
@@ -46,7 +46,7 @@ $messages = array(
 'jumptonavigation' => 'گردسن',
 'jumptosearch' => 'واموج',
 
-# 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).
+# 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).
 'currentevents' => 'تازه چیؤن',
 'mainpage' => 'گت صفحه',
 'mainpage-description' => 'گت صفحه',
@@ -64,8 +64,6 @@ $messages = array(
 # Search results
 'searchresults' => 'واموج‌دموجˇ نتایج',
 'searchresults-title' => 'واموج‌دموجˇ نتایج، «$1»ˇ واسی',
-'searchsubtitle' => "شمه '''[[:$1]]''' ره واموتید ([[Special:Prefixindex/$1|هنه‌شرانی (صفحه‌هایی) کی «$1» همره سرأ گیفته بیدی (شوروع بیدی).]]{{int:pipe-separator}}
-[[Special:WhatLinksHere/$1|او هنه‌شرانی (صفحه‌هایی) کی به «$1» خال (لینک) بدأیید]])",
 
 # Special:AllPages
 'allpagessubmit' => 'بشو',
index 08e925c..7de827d 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Hugo.arg
+ * @author P. S. F. Freitas
  * @author Perla
  */
 
@@ -112,7 +113,6 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Heka',
 'qbedit' => 'Jehaijey',
-'qbspecialpages' => 'Kuatiarogue hekochĩchĩva',
 
 'tagline' => '{{SITENAME}}megua',
 'help' => 'Pytyvõhára',
@@ -144,7 +144,7 @@ $messages = array(
 'jumptonavigation' => 'kundaharã',
 'jumptosearch' => 'Jeheka',
 
-# 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).
+# 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).
 'aboutsite' => 'Ári {{SITENAME}}',
 'aboutpage' => 'Project:Rehegua',
 'copyright' => "Tembikuaa'aty ikatu ojepuru <i>$1</i> rekópe",
@@ -157,11 +157,8 @@ $messages = array(
 'privacy' => 'Polítika marandu ñeñangareko rehegua',
 'privacypage' => 'Project:Polítika marandu ñeñangareko rehegua',
 
-'newmessageslink' => 'marandu pyahu',
-'newmessagesdifflink' => 'Joavy oĩva mokõive jehai paha apytépe',
 'youhavenewmessagesmulti' => 'Reguereko marandu pyahu $1',
 'editsection' => 'jehaijey',
-'editsection-brackets' => '($1)',
 'editold' => 'jehaijey',
 'editsectionhint' => 'Jehaijey vore: $1',
 'toc' => "Tembikuaa'aty rechaukaha",
@@ -254,12 +251,10 @@ Reikotevẽvérõ marandu, emoñe'ẽ kuatiarogue ñepytyvõ rehegua. Oiméramo
 
 # Search results
 'searchresults' => 'Ojejuhúva jeheka',
-'searchsubtitle' => "Nde reporandúkuri: '''[[:$1]]-re'''",
 'prevn' => '{{PLURAL:$1|$1}} mboyvegua',
 'viewprevnext' => 'Hecha ($1 {{int:pipe-separator}} $2) ($3).',
 'showingresults' => "Abajo se muestran hasta '''$1''' resultados empezando por el nº '''$2'''.",
 'showingresultsnum' => "Abajo se muestran los '''$3''' resultados empezando por el nº '''$2'''.",
-'powersearch' => 'Jeheka',
 
 # Preferences page
 'preferences' => 'Mbohoryha',
@@ -268,6 +263,8 @@ Reikotevẽvérõ marandu, emoñe'ẽ kuatiarogue ñepytyvõ rehegua. Oiméramo
 'searchresultshead' => 'Jeheka',
 'youremail' => "Ñe'ẽveve",
 'yourlanguage' => "Ñe'ẽ:",
+'gender-male' => "Ha'e ohaijey wiki kuatiarogue kuéra",
+'gender-female' => "Ha'e ohaijey wiki kuatiarogue kuéra",
 'email' => 'Pareha eleytróniko',
 
 # User rights
@@ -347,9 +344,6 @@ Reomĩsérõ ta'ãnga peteĩ kuatiaroguépe, eipuru peteĩ joaju:
 # Statistics
 'statistics' => 'Papyrekokuaa',
 
-'disambiguations' => 'Kuatiarogue mohesakãporãha',
-'disambiguationspage' => 'Template:Disambig',
-
 'doubleredirects' => "Ñembohapejey jo'apyre",
 
 'brokenredirects' => "Ñembohapejey hekopegua'ỹva",
@@ -409,9 +403,6 @@ Reomĩsérõ ta'ãnga peteĩ kuatiaroguépe, eipuru peteĩ joaju:
 'allpagesto' => 'Ehechauka kuatia rogue opáva:  -pe',
 'allarticles' => 'Opa kuatia rogue',
 'allinnamespace' => "Opa kuatia rogue (pa'ũ $1)",
-'allnotinnamespace' => 'Opaite kuatiarogue (fuera del espacio $1)',
-'allpagesprev' => 'Mboyvegua',
-'allpagesnext' => 'Upeigua',
 'allpagessubmit' => 'Hechauka',
 
 # Special:Categories
index 4acdb41..51a0e92 100644 (file)
@@ -103,7 +103,6 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Sod',
 'qbedit' => 'Bodol',
-'qbspecialpages' => 'Khaxelim panam',
 'faq' => 'Choddxe vicharlole prosn',
 
 # Vector skin
@@ -337,8 +336,6 @@ Vivron: '''({{int:cur}})''' = halinchi uzollnie borobor forok, '''({{int:last}})
 # Revision deletion
 'rev-delundel' => 'dakhoi/lipoi',
 'revdel-restore' => 'Disnnem bodol',
-'revdel-restore-deleted' => "rod'd kelelo uzollnneo",
-'revdel-restore-visible' => 'Dispi uzollnneo',
 
 # Merge log
 'revertmerge' => 'Doxim kor',
@@ -380,7 +377,6 @@ Vivron: '''({{int:cur}})''' = halinchi uzollnie borobor forok, '''({{int:last}})
 'searchall' => 'soglle',
 'showingresultsheader' => "{{PLURAL:$5|'''$3''' hantlem '''$1''' porinam|'''$3''' hantlim '''$1 - $2''' porinam}}, '''$4''' haka",
 'search-nonefound' => 'Tujea sodak mell khata toslem kai porinam nan.',
-'powersearch-field' => 'Hachea khatir sodha',
 
 # Preferences page
 'preferences' => 'Posondeo',
@@ -409,7 +405,6 @@ Dusre tuje xim sompork kortat tednam tuzo email potto tankam kollchenam.',
 'recentchanges-label-minor' => 'Ho ek dhaktto sudar',
 'recentchanges-label-bot' => "Hem bodlop eka robotan kel'lem",
 'recentchanges-label-unpatrolled' => 'Hem sudharop azun topasunk nam',
-'rcnote' => "Sokoil {{PLURAL:$1|dilelim nimannim '''1''' bodlopam| '''$1''' bodlopam}} {{PLURAL:$2|xevotchea disan|xevottchim '''$2''' disanim}}, $5, $4 porian.",
 'rcnotefrom' => "Sokoil '''$2''' savn zalelim bodolpam dileant ( '''$1'''meren dakhoileant).",
 'rclistfrom' => '$1 savn suru zatelim novim bodolpam dakhoi',
 'rcshowhideminor' => '$1 dhaktteo sudarnneo',
@@ -597,7 +592,6 @@ Hachem [$2 failichem vivron panan] asleli vivron khala dilea:',
 
 # Block/unblock
 'ipboptions' => '2 voram:2 hours,1 dis:1 day,3 dis:3 days,1 satollo:1 week,2 satolle:2 weeks,1 mhoino:1 month,3 mhoine:3 months,6 mhoine:6 months,1 voros:1 year,sasnnank:infinite',
-'ipbotherreason' => 'Dusrem/aniki karon:',
 'ipblocklist' => 'Addhailele vapuddpi',
 'blocklink' => 'addavnnni',
 'unblocklink' => 'Addavnni kadd',
@@ -718,10 +712,6 @@ Zori tor hi failik bodol'lam zalear kai mahiti bodololem failik sarkem mell khai
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Hea failik bhaili program uzar korun bodol.',
-'edit-externally-help' => '(Odhik mahite khatir [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] polloi)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'soglle',
 'namespacesall' => 'sogllem',
index 9a4a2c1..a6e47dd 100644 (file)
@@ -59,7 +59,6 @@ $messages = array(
 'tog-minordefault' => 'Σημαίνειν ὡς ἥττονας ἁπάσας τὰς μεταγραφὰς προκαθωρισμένως',
 'tog-previewontop' => 'Δεικνύναι τὸ προεπισκοπεῖν πρὸ τοῦ κυτίου μεταγραφῆς',
 'tog-previewonfirst' => 'Τῆς πρώτης μεταγραφῆς, δεικνύναι τὸ προεπισκοπεῖν',
-'tog-nocache' => 'Ἀπενεργοποιεῖν ἀποτεταμιευμένην μνήμην',
 'tog-enotifwatchlistpages' => 'Ἄγγειλόν μοι ὅτε δέλτος τις ἐν τῇ ἐφοροδιαλογῇ μου μεταβάλληται',
 'tog-enotifusertalkpages' => 'Ἄγγειλόν μοι ὅτε ἡ δέλτος μου διαλέξεως χρωμένου μεταβάλληται',
 'tog-enotifminoredits' => 'Ἄγγειλόν μοι ἐπἴσης τὰς ἥττονας ἀλλαγὰς δέλτων',
@@ -178,7 +177,6 @@ $messages = array(
 'qbedit' => 'Μεταγράφειν',
 'qbpageoptions' => 'Ἥδε ἡ δέλτος',
 'qbmyoptions' => 'Οἱ δέλτοι μου',
-'qbspecialpages' => 'Εἰδικαὶ δέλτοι',
 'faq' => 'Τὰ πολλάκις αἰτηθέντα',
 'faqpage' => 'Project:Πολλάκις αἰτηθέντα',
 
@@ -371,9 +369,6 @@ $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 />
-Ἐνέργεια: $1<br />
-Πεῦσις: $2',
 'viewsource' => 'Πηγὴν ἐπισκοπεῖν',
 'actionthrottled' => 'Δρᾶσις ἠγχθεῖσα',
 'protectedpagetext' => 'Ἥδε ἡ δέλτος ἀποκεκλῃμένη ἐστὶν εἰς ἀποτροπὴν τοῦ μεταγράφειν.',
@@ -463,7 +458,7 @@ $2',
 'loginlanguagelabel' => 'Γλῶσσα: $1',
 
 # Change password dialog
-'resetpass' => 'Ἀλλαγὴ συνθήματος',
+'changepassword' => 'Ἀλλάττειν σύνθημα',
 'resetpass_header' => 'Ἀναδιορισμὸς συνθήματος λογισμοῦ',
 'oldpassword' => 'Πρότερον σύνθημα:',
 'newpassword' => 'Νέον σύνθημα:',
@@ -678,10 +673,6 @@ $2',
 'rev-showdeleted' => 'δεικνύναι',
 'revisiondelete' => 'Διαγράφειν/ἐκδιαγράφειν ἀναθεωρήσεις',
 'revdelete-nooldid-title' => 'Ἄκυρος ἀναθεώρησις-στόχος',
-'revdelete-nologtype-title' => 'Οὐδεὶς τύπος καταλόγου ἐδόθη',
-'revdelete-nologtype-text' => 'Οὐχ ὥρικας ἐπὶ ποίου τύπου καταλόγου δεῖ τήνδε δρᾶσιν ἐφαρμοσθῆναι.',
-'revdelete-nologid-title' => 'Ἄκυρος καταχώρησις καταλόγου',
-'revdelete-nologid-text' => 'Εἴτε οὐχ ὤρικας συμβὰν-στόχον ἵνα ἐκτελέσῃς τήνδε λειτουργίαν, εἴτε ἡ καθωρισμένη καταχώρησις οὐκ ἔστιν.',
 'revdelete-no-file' => 'Τὸ καθωρισμένον ἀρχεῖον οὐχ ὑπάρχει.',
 'revdelete-show-file-confirm' => 'Βέβαιος εἶ περὶ τῆς προβολῆς διαγεγραμμένης ἀναθεωρήσεως τινὸς τοῦ ἀρχείου "<nowiki>$1</nowiki>" ἐκ τῆς $2 ἐν τῇ $3;',
 'revdelete-show-file-submit' => 'Ναί',
@@ -710,8 +701,6 @@ $1",
 'logdelete-failure' => "'''Ἡ ὁρατότης τοῦ καταλόγου μὴ ῥυθμίσιμος ἦν:'''
 $1",
 'revdel-restore' => 'Ἀλλάττειν ὁρατότητα',
-'revdel-restore-deleted' => 'ἐσβεσμέναι ἀναθεωρήσεις',
-'revdel-restore-visible' => 'ὁραταὶ ἀναθεωρήσεις',
 'pagehist' => 'Ἱστορία δέλτου',
 'deletedhist' => 'Ἱστορία διαγεγραμμένη',
 'revdelete-modify-missing' => 'Σφάλμα κατὰ τὸ μεταγράφειν τοῦ τεμαχίου τοῦ ἔχοντος ID $1: οὐχ ὐπάρχει ἐν τῇ βάσει δεδομένων!',
@@ -763,12 +752,8 @@ $1",
 # 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}}',
@@ -777,10 +762,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|ἑπόμενον ἀποτέλεσμα|ἑπόμενα ἀποτελέσματα}}',
 'shown-title' => 'Δεικνύναι $1 {{PLURAL:$1|ἀποτέλεσμα|ἀποτελέσματα}} ἀνὰ δέλτον',
 'viewprevnext' => 'Ἐπισκοπεῖν ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ἐπιλογαὶ ζητήσεως',
 'searchmenu-exists' => "'''Ὑπάρχει δέλτος τις ὀνόματι \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
 'searchmenu-new' => "'''Ποιεῖν τὴν δέλτον \"[[:\$1]]\" ἐν τῷδε τῷ βίκι'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ζήτησις δέλτων ἐχουσῶν τόδε τὸ πρόθεμα]]',
 'searchprofile-articles' => 'Δέλτοι περιεχομένων',
 'searchprofile-project' => 'Βοήθεια  καὶ δέλτοι ἐγχειρήματος',
 'searchprofile-images' => 'Πολυμέσα',
@@ -800,21 +783,16 @@ $1",
 'search-interwiki-default' => '$1 ἀποτελέσματα:',
 'search-interwiki-more' => '(πλείω)',
 'search-relatedarticle' => 'Σχετικά',
-'mwsuggest-disable' => 'Μὴ ἐνεργαὶ αἱ ὑποδείξεις AJAX',
 'searcheverything-enable' => 'Ζήτησις ἐν πᾶσι τοῖς ὀνοματοχώροις',
 'searchrelated' => 'σχετικά',
 'searchall' => 'ἅπασαι',
 'showingresults' => "Δεικνύναι κατωτέρω μέχρι {{PLURAL:$1|'''1''' ἀποτέλεσμα|'''$1''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
 'showingresultsnum' => "Δεικνύναι {{PLURAL:$3|'''1''' ἀποτέλεσμα|'''$3''' ἀποτελέσματα}}· ἐκκίνησις ἐκ τοῦ #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Ἀποτέλεσμα'''$1''' ἀπὸ '''$3'''|Ἀποτελέσματα '''$1 - $2''' ἀπὸ '''$3'''}} περὶ '''$4'''",
-'nonefound' => "'''Ἐπισημείωμα''': Μόνοι οἵτινες ὀνοματικοὶ χῶροι ἀναζητοῦνται κατὰ προεπιλογήν.
-Πείρασον τὸ προθεματίσειν τὴν πεῦσιν σου μετὰ τοῦ ''all:'' - ''ἅπασαι:'' ἀναζητεῖν ἐν παντὶ τῷ περιεχομένῳ (δέλτων διαλόγου, προτύπων, κ.λ., περιλαμβανομένων), ἢ χρῆσον τῷ ἐπιθυμητῷ ὀνοματικῷ χώρῳ ὡς προθέματι.",
 'search-nonefound' => 'Οὐδὲν ἀποτέλεσμα ἀντίστοιχον τῆς πεύσεως.',
-'powersearch' => 'Ζητεῖν ἀναλυτικῶς',
 'powersearch-legend' => 'Ἀνωτέρα ἀναζήτησις',
 'powersearch-ns' => 'Ζήτησις ἐν τοῖς ὀνοματείοις:',
 'powersearch-redir' => 'Ἀναδιευθύνσεων καταλόγος',
-'powersearch-field' => 'Ζήτησις περί',
 'powersearch-togglelabel' => 'Ἐλέγχειν:',
 'powersearch-toggleall' => 'Ἅπαντες',
 'powersearch-togglenone' => 'Οὐδέν',
@@ -824,7 +802,6 @@ $1",
 'preferences' => 'Προαιρέσεις',
 'mypreferences' => 'Αἱ προαιρέσεις μου',
 'prefs-edits' => 'Τοσοῦται αἱ μεταβολαί:',
-'changepassword' => 'Ἀλλάττειν σύνθημα',
 'prefs-skin' => 'Ἐμφάνισις',
 'skin-preview' => 'Προεπισκοπεῖν',
 'datedefault' => 'Οὐδεμία προτίμησις',
@@ -844,13 +821,11 @@ $1",
 'prefs-email' => 'Ἐπιλογαὶ ἠλ-ταχυδρομείου',
 'prefs-rendering' => 'Ἐμφάνισις',
 'saveprefs' => 'Γράφειν',
-'resetprefs' => 'Ἐκκαθαίρειν ἀσώτους ἀλλαγάς',
 'restoreprefs' => 'Ἐπανιστάναι ἁπάσας τὰς προκαθωρισμένας ῥυθμίσεις',
 'prefs-editing' => 'Τὸ μεταγράφειν',
 'rows' => 'Σειραί:',
 'columns' => 'Στῆλαι:',
 'searchresultshead' => 'Ζητεῖν',
-'resultsperpage' => 'Ἀποτελέσματα ἀνά δέλτον:',
 'stub-threshold' => 'Ἄνω φράγμα διὰ τοῦς <a href="#" class="stub">συνδέσμους πρὸς λείμματα</a> (δυφία):',
 'stub-threshold-disabled' => 'Ἀπενεργηθέν',
 'recentchangesdays' => 'Αἱ ἡμέραι αἱ δεικτέαι ἐν ταῖς προσφάτοις ἀλλαγαῖς:',
@@ -862,7 +837,6 @@ $1",
 'localtime' => 'Τοπικὴ ὥρα:',
 'timezoneuseserverdefault' => 'Χρῆσθαι τῷ προκαθωρισμένῳ τοῦ βίκι ($1)',
 'timezoneuseoffset' => 'Ἄλλον (καθορίζειν τὸ ἐκτόπισμα)',
-'timezoneoffset' => 'Ἐκτόπισμα¹:',
 'servertime' => 'Ὥρα ὑπολογιστικῆς ἐξυπηρετητικῆς μηχανῆς:',
 'guesstimezone' => 'Συμπλήρωσις μέσῳ τοῦ πλοηγητηρίου',
 'timezoneregion-africa' => 'Λιβύη',
@@ -1068,7 +1042,6 @@ $1",
 'recentchanges-label-bot' => 'Ἥδε ἡ μεταγραφὴ ἐτελέσθη ὑπὸ αὐτομάτου τινός',
 'recentchanges-label-unpatrolled' => 'Ἥδε ἡ μεταγραφὴ μὴ ἐλεγμένη ἐστίν',
 'recentchanges-legend-newpage' => '$1 - νέα δέλτος',
-'rcnote' => "Κατωτέρω {{PLURAL:$1|ἐστὶ '''1''' ἀλλαγὴ|εἰσὶν αἱ τελευταῖαι '''$1''' ἀλλαγαὶ}} ἐν {{PLURAL:$2|τῇ τελευταίᾳ ἡμέρᾳ|ταῖς τελευταίαις '''$2''' ἡμέραις}}, ἕως καὶ $5, $4.",
 'rcnotefrom' => "Ἰδοῦ αἱ ἀλλαγαὶ ἐκ τοῦ '''$2''' (ἕως τὸ '''$1''').",
 'rclistfrom' => 'Δεικνύναι νέας ἀλλαγάς. Ἐκκίνησις ἐκ τοῦ $1',
 'rcshowhideminor' => '$1 μικραὶ μεταβολαὶ',
@@ -1368,7 +1341,6 @@ $1",
 'protectedpages-cascade' => 'Διαδοχικαὶ φυλάξεις μόνον',
 'protectedpagesempty' => 'Οὐδεμία δέλτος φυλάττεταιἐπὶ τοῦ παρόντος μετὰ τῶνδε τῶν παραμέτρων.',
 'protectedtitles' => 'Πεφυλαγμέναι ἐπιγραφαί',
-'protectedtitlestext' => 'Ἡ ποίησις τῶν κάτωθι ἐπιγραφῶν πεφύλακται',
 'protectedtitlesempty' => 'Οὐδεμία ἐπιγραφὴ μετὰ τῶνδε τῶν παραμέτρων φυλάττεται ἐπὶ τοῦ παρόντος',
 'listusers' => 'Κατάλογος πάντων τῶν χρωμένων',
 'listusers-editsonly' => 'Δεικνύναι μόνον μεταγράψαντας χρωμένους',
@@ -1410,9 +1382,6 @@ $1",
 'allpagesto' => 'Δεικνύναι δέλτους τερματίζουσας εἰς:',
 'allarticles' => 'Ἅπασαι αἱ ἐγγραφαί',
 'allinnamespace' => 'Ἅπασαι αἱ δέλτοι (ἐν τῷ ὀνοματείῳ $1)',
-'allnotinnamespace' => 'Ἅπασαι αἱ δέλτοι (οὐκ ἐν τῷ ὀνοματείῳ $1)',
-'allpagesprev' => 'Προηγουμέναι',
-'allpagesnext' => 'Ἑπομέναι',
 'allpagessubmit' => 'Ἰέναι',
 'allpagesprefix' => 'Ἐπιδεικνύναι δέλτους ἐχούσας πρόθεμα:',
 'allpages-bad-ns' => 'Τὸ {{SITENAME}} οὐκ ἔχει ὀνοματεῖον "$1".',
@@ -1662,7 +1631,6 @@ $NEWPAGE
 'undeletebtn' => 'Ἀνορθοῦν',
 'undeletelink' => 'ὁρᾶν/ἀποκαθιστάναι',
 'undeleteviewlink' => 'ὁρᾶν',
-'undeletereset' => 'Ἐπαναθέτειν',
 'undeleteinvert' => 'Ἀναστρέφειν τὴν ἐπιλογήν',
 'undeletecomment' => 'Αἰτία:',
 'undeletedrevisions' => '{{PLURAL:$1|1 ἀναθεωρήσις|$1 ἀναθεωρήσεις}} ἀποκατεστάθησαν',
@@ -1733,12 +1701,10 @@ $1',
 
 # Block/unblock
 'blockip' => 'Ἀποκλῄειν τόνδε τὸν χρώμενον',
-'blockip-title' => 'Φράττειν χρώμενον',
 'blockip-legend' => 'Φράττειν χρώμενον',
 'ipadressorusername' => 'Διεύθυνσις IP ἢ ὄνομα χρωμένου:',
 'ipbexpiry' => 'Λῆξις:',
 'ipbreason' => 'Αἰτία:',
-'ipbreasonotherlist' => 'Ἑτέρα αἰτία',
 'ipbreason-dropdown' => '*Κοιναὶ αἰτίαι φραγῆς
 ** Εἰσαγωγὴ ψευδοῦς πεύσεως
 ** Ἁφαίρεσις τοῦ περιεχομένου τῶν δέλτων
@@ -1752,8 +1718,6 @@ $1',
 'ipbsubmit' => 'Φράττειν τόνδε τὸν χρώμενον',
 'ipbother' => 'Ἄλλη ὥρα:',
 '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',
-'ipbotheroption' => 'ἄλλη',
-'ipbotherreason' => 'Πρόσθετος/ἄλλη αἰτία:',
 'ipbhidename' => 'Κρύπτειν τὸ ὄνομα χρωμένου ἐν μεταγραφαῖς καὶ διαλογαῖς',
 'ipbwatchuser' => 'Ἐφορᾶν τοῦδε τοῦ χρωμένου τὰς δέλτους χρωμένου καὶ διαλέξεως',
 'ipb-change-block' => 'Ἐπαναφράττειν τόνδε τὸν χρώμενον μετὰ τῶνδε τῶν ῥυθμίσεων',
@@ -1809,7 +1773,6 @@ $1',
 Εἰκότως ἀποπεφραγμένη ἤδη ἐστίν.',
 'ip_range_invalid' => 'Ἄκυρον IP-εὖρος.',
 'proxyblocker' => 'Ἐργαλεῖον φραγῆς διακομιστῶν',
-'cant-block-while-blocked' => 'Οὐκ ἔξεστί σοι φράττειν ἑτέρους χρωμένους ἐν ὅσῳ πεφραγμένος εἶ.',
 
 # Developer tools
 'lockdb' => 'Φράττειν βάσιν δεδομένων',
@@ -1843,7 +1806,6 @@ $1',
 
 Ἐν ταύταις ταῖς περιπτώσεσι, δεῖ σε μετακινῆσαι ἢ συγχωνεῦσαι τὴν δέλτον μέσῳ ἀντιγραφῆς-καὶ-ἐπικολλήσεως.",
 'movearticle' => 'Κινεῖν τὴν δέλτον:',
-'movenologin' => 'Μὴ συνδεδεμένος',
 'movenologintext' => 'Δεῖ σε εἶναι ἐγγεγραμμένος χρώμενός τε καὶ [[Special:UserLogin|συνδεδεμένος]] ἵνα μετακινήσῃς δέλτον τινά.',
 'movenotallowed' => 'Οὐκ ἔξεστί σοι δέλτους μετακινήσειν.',
 'movenotallowedfile' => 'Οὐκ ἔξεστί σοι ἀρχεῖα μετακινήσειν.',
@@ -1859,9 +1821,6 @@ $1',
 'articleexists' => 'Εἶτε ἢ ἐστὶ δέλτος τις οὕτως ὀνομαστὴ ἢ ἄκυρον ἐστι τὸ ἐπειλεγμένον ὄνομα.
 Ἄλλως τὴν δέλτον ὀνόμασον.',
 'cantmove-titleprotected' => 'Οὐκ ἔξεστί σοι κινήσειν δέλτον τινὰ πρὸς τήνδε θέσιν διότι ἀπείρηται τὸ ποιεῖν τήνδε ἐπιγραφήν',
-'talkexists' => "'''Κεκίνηται μὲν ἡ δέλτος αὐτὴ, ἡ δὲ διαλόγου δέλτος οὐ κεκίνηται ὅτι ἤδη ἐστὶ ἐνθάδε διαλόγου δέλτος.
-Δεῖ σε καθ'ἕκαστον συγκεραννύναι.'''",
-'movedto' => 'Κεκίνηται πρὸς',
 'movetalk' => 'Κινεῖν τὴν διαλόγου δέλτον',
 'move-subpages' => 'Κινοῦν τὰς ὑποδέλτους (ἕως τὴν $1)',
 'move-talk-subpages' => 'Κινοῦν τὰς ὑποδέλτους τῆς δέλτου διαλέξεως (ἕως τὴν $1)',
@@ -2438,15 +2397,10 @@ $1',
 'exif-iimcategory-pol' => 'Πολιτική',
 'exif-iimcategory-spo' => 'Άθλοπαιδιαί',
 
-# External editor support
-'edit-externally' => 'Μεταγράφειν τόδε τὸ ἀρχεῖον χρώμενος ἐξώτερήν τινα ἐφαρμογήν.',
-'edit-externally-help' => 'Εἰ πλείοντα βούλει μαθεῖν, [https://www.mediawiki.org/wiki/Manual:External_editors τὰς περὶ τοῦ σχῆματος διδασκαλίας] ἴδε.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ἅπασαι',
 'namespacesall' => 'ἅπασαι',
 'monthsall' => 'ἅπαντες',
-'limitall' => 'ἅπασαι',
 
 # Email address confirmation
 'confirmemail' => 'Ἐπιβεβαίωσον διεύθυνσιν ἠλ-ταχυδρομείου',
@@ -2458,7 +2412,6 @@ $1',
 'confirmemail_success' => 'Ἡ ἠλ-διεύθυνσίς σου ἐπιβεβαιθεῖσα ἐστίν.
 Ἔξεστί σοι [[Special:UserLogin|συνδεῖσθαι]] καὶ χρῆσθαι τῷ βίκι.',
 'confirmemail_loggedin' => 'Ἡ ἠλ-διεύθυνσίς σου οὐκ ἐστι ἐπιβεβαιωμένη.',
-'confirmemail_error' => 'Σφάλμα τι τοῦ σῴζειν τὴν ἐπιβεβαίωσίν σου.',
 'confirmemail_subject' => 'ἐπιβεβαίωσις διευθύνσεως ἠλ.-ταχυδρομείου τοῦ {{SITENAME}}',
 'confirmemail_body' => 'Τίς (πιθανῶς σύ, ἐκ τῆς IP-διευθύνσέως $1) ἔχων τήνδε τὴν ἠλ-διεύθυνσιν κατέγραψεν λογισμόν τινα "$2" ἐν τῷ ἱστοτόπῳ {{SITENAME}}. Διὰ τὸ ἐπιβεβαιώσειν τὴν ἐτεὴ κατοχὴ τοῦ λογισμοῦ χρωμένου ὑπ\' ἐσοῦ καὶ διὰ τὸ ἐνεργοποιἠσειν τὰς δυνατότητας ἠλ-ταχυδρομείου τοῦ {{SITENAME}}, ἀκολούθησον τόνδε τὸν σύνδεσμον:
 
index bc40261..18e996a 100644 (file)
@@ -36,7 +36,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Nit-gültige_Sytename' ),
        'Blankpage'                 => array( 'Läärsyte' ),
        'Block'                     => array( 'Sperre' ),
-       'Blockme'                   => array( 'Proxy-Sperre' ),
        'Booksources'               => array( 'ISBN-Suech' ),
        'BrokenRedirects'           => array( 'Kaputti_Wyterlaitige' ),
        'Categories'                => array( 'Kategorie' ),
@@ -48,10 +47,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Benutzerchonto_aaleege' ),
        'Deadendpages'              => array( 'Sackgassesyte' ),
        'DeletedContributions'      => array( 'Gleschti_Byytreeg' ),
-       'Disambiguations'           => array( 'Begriffschlärigsverwyys' ),
        'DoubleRedirects'           => array( 'Doppleti_Wyterlaitige' ),
        'EditWatchlist'             => array( 'Bearbeitigslischt_bearbeite' ),
        'Emailuser'                 => array( 'E-Mail' ),
+       'ExpandTemplates'           => array( 'Vorlage_expandiere' ),
        'Export'                    => array( 'Exportiere' ),
        'Fewestrevisions'           => array( 'Syte_wo_am_wenigschte_bearbeitet_sin' ),
        'FileDuplicateSearch'       => array( 'Datei-Duplikat-Suech' ),
@@ -93,6 +92,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Gschitzti_Syte' ),
        'Protectedtitles'           => array( 'Gsperrti_Titel' ),
        'Randompage'                => array( 'Zuefelligi_Syte' ),
+       'RandomInCategory'          => array( 'Zuefelligi_Kategori' ),
        'Randomredirect'            => array( 'Zuefelligi_Wyterleitig' ),
        'Recentchanges'             => array( 'Letschti_Änderige' ),
        'Recentchangeslinked'       => array( 'Änderige_an_verlinkte_Syte' ),
@@ -155,7 +155,6 @@ $messages = array(
 'tog-minordefault' => 'Alli dyni Änderigen als «chlyni Änderige» markiere',
 'tog-previewontop' => 'Vorschou vor em Editierfänschter aazeige',
 'tog-previewonfirst' => 'Vorschou aazeige bim erschten Editiere',
-'tog-nocache' => 'Syte-Cache vum Browser deaktiviere',
 'tog-enotifwatchlistpages' => 'Schick mer e Mail, wänn e Syte oder e Datei gänderet wird, wun i beobachte due',
 'tog-enotifusertalkpages' => 'Benachrichtigungsmails bi Änderigen a dyne Benutzersyte',
 'tog-enotifminoredits' => 'Au bi chlaine Änderige an Syte oder Dateie ne Mail schicke',
@@ -291,7 +290,6 @@ $messages = array(
 'qbedit' => 'Ändere',
 'qbpageoptions' => 'Sytenoptione',
 'qbmyoptions' => 'Ystellige',
-'qbspecialpages' => 'Spezialsytene',
 'faq' => 'Froge, wo vilmol gstellt wäre',
 'faqpage' => 'Project:FAQ',
 
@@ -410,8 +408,8 @@ Di maximal Wartezyt fir e Lock isch umme',
 'youhavenewmessages' => 'Du hesch $1 ($2).',
 'youhavenewmessagesfromusers' => 'Du hesch $1 vu {{PLURAL:$3|eme andere Benutzer|$3 Benutzer}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du hesch $1 vu vil Benutzer ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|e neji Nochricht|neji Nochrichte}}',
-'newmessagesdifflinkplural' => 'letschti {{PLURAL:$1|Änderig|Änderige}}',
+'newmessageslinkplural' => '{{PLURAL:$1|e neji Nochricht|999=neji Nochrichte}}',
+'newmessagesdifflinkplural' => 'letschti {{PLURAL:$1|Änderig|999=Änderige}}',
 'youhavenewmessagesmulti' => 'Si hen neui Nochrichte: $1',
 'editsection' => 'ändere',
 'editold' => 'Ändre',
@@ -505,9 +503,6 @@ Wänn s des nit isch, hesch villicht e Fähler in dr Software gfunde. Bitte mäl
 'perfcached' => 'Die Informatione chemme us em Zwischespycher un sin derwyl villicht nit aktuäll. Maximal {{PLURAL:$1|ei Ergebnis isch|$1 Ergebnis sin}} im Cache verfiegbar.',
 'perfcachedts' => 'Die Date stamme us em Zwischespycher un sin am $1 s letscht Mol aktualisiert wore. Maximal {{PLURAL:$4|ei Ergebnis isch|$4 Ergebnis sin}} im Zwischespycher verfiegbar.',
 'querypage-no-updates' => "'''D Aktualisierigsfunktion fir die Syte isch im Momänt deaktiviert. D Date wäre vorerscht nit ernejert.'''",
-'wrong_wfQuery_params' => 'Falschi Parameter fir wfQuery()<br />
-Funktion: $1<br />
-Abfrog: $2',
 'viewsource' => 'Quelltext aaluege',
 'viewsource-title' => 'Quälltext vu $1 aaluege',
 'actionthrottled' => 'Aktionsaazahl limitiert',
@@ -535,7 +530,8 @@ Dr Administrator, wu dr Schrybzuegriff gsperrt het, het dää Grund aagee: „$3
 'invalidtitle-knownnamespace' => 'Nit-gültige Titel mit Namensruum „$2“ un Text „$3“',
 'invalidtitle-unknownnamespace' => 'Ungültige Titel mit unbekannte Namensruumnummer $1 un Text „$2“',
 'exception-nologin' => 'Nit aagmäldet',
-'exception-nologin-text' => 'Fir die Syte oder Aktion muesch aagmäldet syy.',
+'exception-nologin-text' => 'Du muesch Di [[Special:Userlogin|aamälde]] go die Syte oder Aktion ufruefe chenne.',
+'exception-nologin-text-manual' => 'Du muesch Di $1 go die Syte oder Aktion ufruefe chenne.',
 
 # Virus scanner
 'virus-badscanner' => "Fählerhafti Konfiguration: Virescanner, wu nid bekannt isch: ''$1''",
@@ -631,7 +627,7 @@ Iberprief d Schrybwys, oder mäld Di as [[Special:UserLogin/signup|neje Benutzer
 'passwordtooshort' => 'Passwerter mien zmindescht {{PLURAL:$1|1 Zeiche|$1 Zeiche}} haa.',
 'password-name-match' => 'Dyy Passwort muess sich vu Dyynem Benutzername unterscheide.',
 'password-login-forbidden' => 'D Verwändig vu däm Benutzernamen un Passwort isch verbotte.',
-'mailmypassword' => 'Es nöis Passwort schicke',
+'mailmypassword' => 'E nei Passwort schicke',
 'passwordremindertitle' => 'Nei Passwort fir {{SITENAME}}',
 'passwordremindertext' => 'Ebber mit dr IP-Adress $1 het e nej Passwort fir d Aamäldig bi {{SITENAME}} ($4) aagfordert, wahrschyyns Du sälber.
 
@@ -685,7 +681,7 @@ Wänn Du ne aagiisch, wird er bruucht fir d Zueornig vu dr Byytreg.',
 'user-mail-no-body' => 'S isch versuecht wore, ne E-Mail mit eme lääre oder z churze Tekscht z verschicke.',
 
 # Change password dialog
-'resetpass' => 'Passwort fir s Benutzerkonto ändere oder zrucksetze',
+'changepassword' => 'Passwort ändere',
 'resetpass_announce' => 'Aamäldig mit em Code, wu per Mail zuegschickt woren isch. Zum d Aamäldig abzschliesse, muesch jetz e nej Passwort wehle.',
 'resetpass_text' => '<!-- Tue do dr Text ergänze -->',
 'resetpass_header' => 'Passwort zrucksetze',
@@ -736,7 +732,7 @@ Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gs
 Temporär Passwort: $2',
 'passwordreset-emailsent' => 'E Passwort-Zrucksetzig isch per E-Mail verschickt wore.',
 'passwordreset-emailsent-capture' => 'E Passwort-Zrucksetzigs-Mail isch vergschickt worde, un isch unte aazeigt.',
-'passwordreset-emailerror-capture' => 'Die Erinnerigsmail, wo unte aazeigt isch, isch generiert worde, aber de Versand aa de Benutzer isch gschyyteret: $1',
+'passwordreset-emailerror-capture' => 'Die unten angezeigte Passwortzrucksetzigsmail, wu unten aazeigt wird, isch generiert wore, aber dr Versand an {{GENDER:$2|dr Benutzer|d Benutzeri}} het nit funktioniert: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'E-Mail-Adräss ändre',
@@ -746,9 +742,23 @@ Temporär Passwort: $2',
 'changeemail-oldemail' => 'Aktuelli E-Mail-Adräss',
 'changeemail-newemail' => 'Nöii E-Mail-Adräss:',
 'changeemail-none' => '(nyt)',
+'changeemail-password' => 'Dy {{SITENAME}}-Passwort:',
 'changeemail-submit' => 'E-Mail Adräss ändre',
 'changeemail-cancel' => 'Abbräche',
 
+# Special:ResetTokens
+'resettokens' => 'Token zrucksetze',
+'resettokens-text' => 'Du chasch Token zrucksetze, wu Dir dr Zuegriff uf bstimmti privati Date megli mache, wu mit Dym Benutzerkonto do verchnipft sin.
+
+Des sottsch nume mache, wänn Du d Token us Versää mit eberem teilt hesch oder Dy Konto gfehrdet isch.',
+'resettokens-no-tokens' => 'S git kei Token zum Zrucksetze.',
+'resettokens-legend' => 'Token zrucksetze',
+'resettokens-tokens' => 'Token:',
+'resettokens-token-label' => '$1 (aktuälle Wärt: $2)',
+'resettokens-watchlist-token' => 'Token fir dr Webfeed (Atom/RSS) vu dr [[Special:Watchlist|Änderigen an Syten uf Dyre Beobachtuislischt]]',
+'resettokens-done' => 'Token zruckgsetzt.',
+'resettokens-resetbutton' => 'Uusgwehlti Token zrucksetze',
+
 # Edit page toolbar
 'bold_sample' => 'fetti Schrift',
 'bold_tip' => 'Fetti Schrift',
@@ -906,7 +916,7 @@ Hiemit gisch du zue, das du dä Tekscht '''sälber gschribe''' hesch, das der Te
 Si verspräche uns usserdäm, dass Si des alles selber gschribe oder vo nere Quälle kopiert hen, wo Public Domain odr sunscht frei isch (lueg $1 für Details).
 '''SETZE SI DO OHNI ERLAUBNIS KEINI URHEBERRÄCHTLICH GSCHÜTZTI WÄRK INE!'''",
 'longpageerror' => "'''Fähler: Dä Täxt, wu Du spychere wit, isch {{PLURAL:$1|ei Kilobyte|$1 Kilobyte}} groß. Des isch greßer wie s erlaubt Maximum vu {{PLURAL:$2|eim Kilobyte|$2 Kilobyte}}.''' S Spychere isch nit megli.",
-'readonlywarning' => "'''Achtung: Die Datebank isch fir Wartigsarbete gesperrt. Wäge däm chenne Dyyni Änderige im Momänt nid gspicheret wäre.
+'readonlywarning' => "'''Achtig: D Datebank isch fir Wartigsarbete gesperrt. Wäge däm chenne Dyyni Änderige im Momänt nit gspycheret wäre.
 Sichere de Täxt bitte lokal uf Dyynem Computer un versuech speter nomol, d Änderige z ibertrage.'''
 
 Grund fir d Sperri: $1",
@@ -944,13 +954,14 @@ Zue Dyyre Information sihsch do s Lesch-Logbuech vo däre Syte:",
 Si isch schyns glescht wore.',
 'edit-conflict' => 'Bearbeitigskonflikt.',
 'edit-no-change' => 'Dyyni Bearbeitig isch ignoriert wore, wel kei Änderig am Täxt gmacht woren isch.',
+'postedit-confirmation' => 'Dyy Bearbeitig isch gspycheret wore.',
 'edit-already-exists' => 'Di nej Syte het nid chenne aaglait wäre, wel s si scho git.',
 'defaultmessagetext' => 'Standardtext',
 'content-failed-to-parse' => 'Parse vum Inhalt $2 fir Modell $1 fählgschlaa: $3',
 'invalid-content-data' => 'Uugiltigi Inhaltsdate',
 'content-not-allowed-here' => 'Dr Inhalt „$1“ isch uf dr Syte [[$2]] nit erlaubt',
 'editwarning-warning' => 'Wänn Du die Syte verlosch, cha s syy, ass Du alli Bearbeitige verliersch, wu Du do dra gmacht hesch.
-Wänn Du aagmäldet bisch, chasch s Anzeige vu däre Warnig im „{{int:prefs-editing}}“-Beryych vu Dyyne Yystelligen abstelle.',
+Wänn Du aagmäldet bisch, chasch s Anzeige vu däre Warnig im „Bearbeite“-Beryych vu Dyyne Yystelligen abstelle.',
 
 # Content models
 'content-model-wikitext' => 'Wikitext',
@@ -983,6 +994,7 @@ S {{PLURAL:$2|derf nid meh wie ein Ufruef|derfe nid meh wie $1 Ufruef}} gee.',
 'undo-failure' => 'D Änderig het nid chenne ruckgängig gmacht wäre, wel dää Abschnitt mittlerwyli gänderet woren isch.',
 'undo-norev' => 'D Bearbeitig het nid chenne ruckgängig gmacht wäre, wel si nid vorhande oder glescht isch.',
 'undo-summary' => 'D Änderig $1 vu [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussion]]) isch ruckgängig gmacht wore.',
+'undo-summary-username-hidden' => 'Änderig $1 vun eme versteckte Benutzer ruckgängig gmacht.',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Benutzerkonto cha nid aagleit wäre.',
@@ -1056,10 +1068,6 @@ Du chasch dää Unterschid allno aaluege; Details het's im [{{fullurl:{{#Special
 'revisiondelete' => 'Versione lesche/widerherstelle',
 'revdelete-nooldid-title' => 'Kei Version aagee',
 'revdelete-nooldid-text' => 'Du hesch entwäder kei Version aagee, wu die Aktion soll usgfiert wäre, die usgwehlt Version git s nid oder Du versuechsch di aktuäll Version z verstecke.',
-'revdelete-nologtype-title' => 'Kei Logtyp aagee',
-'revdelete-nologtype-text' => 'S isch kei Logtyp fir die Aktion aagee wore.',
-'revdelete-nologid-title' => 'Uugiltige Logyytrag',
-'revdelete-nologid-text' => 'S isch kei Logtyp usgwählt wore oder dr gwählt Logtyp git s nit.',
 'revdelete-no-file' => 'D Datei, wu Du aagee hesch, git s nit.',
 'revdelete-show-file-confirm' => 'Bisch sicher, ass Du di glescht Version vu dr Datei „<nowiki>$1</nowiki>“ vum $2 am $3 witt aaluege?',
 'revdelete-show-file-submit' => 'Jo',
@@ -1070,7 +1078,7 @@ Du chasch dää Unterschid allno aaluege; Details het's im [{{fullurl:{{#Special
 'revdelete-confirm' => 'Bitte tue bstetige, ass Du vor hesch, des z mache, d Konsequänze drus verstohsch un s machsch in Inbereinstimmig mit dr [[{{MediaWiki:Policy-url}}|Richtlinie]].',
 'revdelete-suppress-text' => "Unterdruckige sotte '''nume''' in däne Fäll bruucht wäre:
 * Nit aabrochti Informatione
-*: ''Adrässe, Telifonnummere, Sozialversicherigsnummere usw.''",
+*: ''Adrässe, Telifonnummere, Sozialversicherigsnummere usw.'",
 'revdelete-legend' => 'Setze vu dr Sichtbarkeits-Yyschränkige',
 'revdelete-hide-text' => 'Täxt vu dr Version versteckle',
 'revdelete-hide-image' => 'Bildinhalt versteckle',
@@ -1079,8 +1087,8 @@ Du chasch dää Unterschid allno aaluege; Details het's im [{{fullurl:{{#Special
 'revdelete-hide-user' => 'Benutzername/d IP vum Bearbeiter versteckle',
 'revdelete-hide-restricted' => 'Date vu Ammanne glyych unterdrucke wie vu andere',
 'revdelete-radio-same' => '(nit ändere)',
-'revdelete-radio-set' => 'Jo',
-'revdelete-radio-unset' => 'Nei',
+'revdelete-radio-set' => 'Verstecklet',
+'revdelete-radio-unset' => 'Sichtbar',
 'revdelete-suppress' => 'Grund vu dr Leschig au vor dr Ammanne versteckle',
 'revdelete-unsuppress' => 'Yyschränkige fir di widerhergstellte Versione ufhebe',
 'revdelete-log' => 'Grund:',
@@ -1092,8 +1100,6 @@ $1",
 'logdelete-failure' => "'''Logbuchsichtbarkeit cha nit gänderet wäre:'''
 $1",
 'revdel-restore' => 'Sichtbarkeit ändere',
-'revdel-restore-deleted' => 'gleschti Versione',
-'revdel-restore-visible' => 'sichtbari Versione',
 'pagehist' => 'Versionsgeschicht',
 'deletedhist' => 'Gleschti Versione',
 'revdelete-hide-current' => 'Fähler bim Verstecke vum Yytrag mit em Datum $2, $1: des isch di aktuäll Version.
@@ -1159,6 +1165,7 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
 'compareselectedversions' => 'Usgwählti Versione verglyche',
 'showhideselectedversions' => 'Uusgwehlti Versione zeige/verstecke',
 'editundo' => 'rückgängig',
+'diff-empty' => '(kei Unterschid)',
 'diff-multi' => '({{PLURAL:$1|Ei Version|$1 Versione}} vu {{PLURAL:$2|eim Benutzer|$2 Benutzer}}, {{PLURAL:$1|wu derzwische lyt, wird|wu derzwische lige, wäre}} nit aazeigt)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Ei Version|$1 Versione}} vu meh {{PLURAL:$2|eim Benutzer|$2 Benutzer}}, {{PLURAL:$1|wu derzwische lyt un nit aazeigt wird|wu derzwische lige un nit aazeigt wäre}})',
 'difference-missing-revision' => '{{PLURAL:$2|Ei Version|$2 Versione}} vui däre Unterschidsaazeig ($1) {{PLURAL:$2|isch|sin}} nit gfunde wore.
@@ -1169,12 +1176,8 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Suech-Ergäbnis',
 'searchresults-title' => 'Suechergebniss fir „$1“',
-'searchresulttext' => 'Für wiiteri Informatione zuem Sueche uff {{SITENAME}} chönne Si mol uff [[{{MediaWiki:Helppage}}|{{int:help}}]] luege.',
-'searchsubtitle' => 'Dyyni Suechaafrog: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|alli Syte, wu mit „$1“ aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alli Syte, wu uf „$1“ verwyyse]])',
-'searchsubtitleinvalid' => 'Für d Suechaafrag «$1»',
 'toomanymatches' => 'D Aazahl vu dr Suechergebniss isch z gross, bitte versuech e anderi Abfrog.',
 'titlematches' => 'Iberyystimmige mit Sytentitel',
-'notitlematches' => 'Kei Iberyystimmige mit Sytetitel',
 'textmatches' => 'Iberyystimmige mit Inhalte',
 'notextmatches' => 'Kei Iberyystimmige mit Inhalte',
 'prevn' => '{{PLURAL:$1|vorige|vorigi $1}}',
@@ -1183,10 +1186,8 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => '{{PLURAL:$1|Negscht Ergebnis|Negschti $1 Ergebnis}}',
 'shown-title' => 'Zeig $1 {{PLURAL:$1|Ergebnis|Ergebnis}} pro Syte',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) aazeige; ($3) uf ds Mal',
-'searchmenu-legend' => 'Suechoptione',
 'searchmenu-exists' => "* Syte '''[[$1]]'''",
 'searchmenu-new' => "'''[[:$1|Leg d Syte ''$1'' in dem Wiki aa!]]'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige alli Syte, wu mit dem Suechbegriff aafange]]',
 'searchprofile-articles' => 'Inhaltssyte',
 'searchprofile-project' => 'Hilf- un Projäktsyte',
 'searchprofile-images' => 'Multimedia',
@@ -1207,31 +1208,27 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-default' => '$1 Ergebniss:',
 'search-interwiki-more' => '(meh)',
 'search-relatedarticle' => 'Verwandti',
-'mwsuggest-disable' => 'Vorschleg per Ajax deaktiviere',
 'searcheverything-enable' => 'In alle Namensryym sueche',
 'searchrelated' => 'verwandt',
 'searchall' => 'alli',
 'showingresults' => "Do {{PLURAL:$1|isch '''1''' Ergebnis|sin '''$1''' Ergebniss}}, s fangt aa mit dr Nummerer '''$2.'''",
 'showingresultsnum' => "Do {{PLURAL:$3|isch '''1''' Ergebnis|sin '''$3''' Ergebniss}}, s fangt aa mit dr Nummere '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnis '''$1 - $2''' vu '''$3'''}} fir '''$4'''",
-'nonefound' => "'''Hiiwyys:''' S wäre standardmässig nume e Teil Namensryym dursuecht. Setz ''all:'' vor Dyy Suechbegriff go alli Syte (mit Diskussionssyte, Vorlage usw.) dursueche oder diräkt dr Name vum Namensruum, wu sett dursuecht wäre.",
 'search-nonefound' => 'Fir Dyyni Suechaafrog sin keini Ergebniss gfunde wore.',
-'powersearch' => 'Erwytereti Suechi',
 'powersearch-legend' => 'Erwytereti Suech',
 'powersearch-ns' => 'Suech in Namensryym:',
 'powersearch-redir' => 'Wyterleitige aazeige',
-'powersearch-field' => 'Suech no:',
 'powersearch-togglelabel' => 'Wehl uus:',
 'powersearch-toggleall' => 'Alli',
 'powersearch-togglenone' => 'Keini',
 'search-external' => 'Externi Suech',
 'searchdisabled' => 'D {{SITENAME}}-Suech isch deaktiviert. Du chasch mit Google sueche, s cha aber syy ass dr Suechindex vu Google fir {{SITENAME}} veraltet isch.',
+'search-error' => 'Bi dr Suechi het s e Fähler gee: $1',
 
 # Preferences page
 'preferences' => 'Yystellige',
 'mypreferences' => 'Yystellige',
 'prefs-edits' => 'Aazahl vu dr Bearbeitige:',
-'changepassword' => 'Passwort ändere',
 'prefs-skin' => 'Benutzeroberflechi',
 'skin-preview' => 'Vorschou',
 'datedefault' => 'kei Aagab',
@@ -1254,25 +1251,25 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-email' => 'E-Mail-Optione',
 'prefs-rendering' => 'Sytedarstellig',
 'saveprefs' => 'Änderige spychere',
-'resetprefs' => 'Änderige doch nid spychere',
-'restoreprefs' => 'Alli Standardyystellige widerhärstelle',
+'restoreprefs' => 'Alli Standardyystellige widerhärstelle (in allne Abschnitt)',
 'prefs-editing' => 'Tekscht-Ygab',
 'rows' => 'Zylene',
 'columns' => 'Spaltene',
 'searchresultshead' => 'Suech-Ergäbnis',
-'resultsperpage' => 'Träffer pro Syte',
 'stub-threshold' => 'Gleichformatierig <a href="#" class="stub">vu chleine Syte</a> (in Byte):',
 'stub-threshold-disabled' => 'Deaktiviert',
 'recentchangesdays' => 'Aazahl vu dr Täg, wu d Lischt vu dr  „Letschte Änderige“ standardmässig soll umfasse:',
 'recentchangesdays-max' => '(Maximal $1 {{PLURAL:$1|Tag|Täg}})',
 'recentchangescount' => 'Aazahl vu Bearbeitige, wu standardmässig aazeigt wäre:',
 'prefs-help-recentchangescount' => 'Des umfasst d Lischt vu dr letschte Änderige, d Versionsgschicht un d Logbiecher.',
+'prefs-help-watchlist-token2' => 'Des isch dr gheim Schlissel zum Webfeed vu Dyre Beobachtigslischt.
+E jede, wu ne chännt, cha Dyni Beobachtigslischt läse. tue ne wäge däm nit mit andere teile.
+[[Special:ResetTokens|Druck do, wän Du ne muesch zrucksetze]].',
 'savedprefs' => 'Dyni Ystellige sy gspycheret worde.',
 'timezonelegend' => 'Zytzone:',
 'localtime' => 'Ortszyt:',
 'timezoneuseserverdefault' => 'Standardzyt vum Server bruche ($1)',
 'timezoneuseoffset' => 'Anderi (Unterschiid aagee)',
-'timezoneoffset' => 'Unterschiid¹',
 'servertime' => 'Aktuälli Serverzyt:',
 'guesstimezone' => 'Vom Browser la ysetze',
 'timezoneregion-africa' => 'Afrika',
@@ -1298,9 +1295,9 @@ Einzelheite chasch im [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 Des cha nimmi ruckgängig gmacht wäre.',
 'prefs-emailconfirm-label' => 'E-Mail-Bstätigung:',
 'youremail' => 'E-Mail-Adräss:',
-'username' => 'Benutzername:',
-'uid' => 'Benutzer-ID:',
-'prefs-memberingroups' => 'Mitglid vu dr {{PLURAL:$1|Benutzergruppe|Benutzergruppe}}:',
+'username' => '{{GENDER:$1|Benutzername}}:',
+'uid' => '{{GENDER:$1|Benutzernummere}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Mitglid}} vu dr {{PLURAL:$1|Benutzergruppe|Benutzergruppe}}:',
 'prefs-registration' => 'Aamäldzyt:',
 'yourrealname' => 'Echte Name:',
 'yourlanguage' => 'Sproch:',
@@ -1310,10 +1307,10 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'prefs-help-signature' => 'Byyträg uf Diskussionssyte sotte mit „<nowiki>~~~~</nowiki>“ unterschribe wäre, was derno in d Unterschrift mit eme Zytstämpfel umgwandlet wird.',
 'badsig' => 'Dr Syntax vu dr Signatur isch nid giltig; bitte d HTML iberpriefe.',
 'badsiglength' => 'Dyyni Unterschrift isch z lang. Si derf hegschtens $1 {{PLURAL:$1|Zeiche|Zeiche}} lang syy.',
-'yourgender' => 'Gschlächt:',
-'gender-unknown' => 'Kei Aagab',
-'gender-male' => 'männlig',
-'gender-female' => 'wyyblig',
+'yourgender' => 'Wie witt gärn bschribe wäre?',
+'gender-unknown' => 'Ich wett doderzue kei Aagab mache',
+'gender-male' => 'Är schafft an Syte',
+'gender-female' => 'Si schafft an Syte',
 'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.',
 'email' => 'E-Mail',
 'prefs-help-realname' => '* <strong>Dyy ächte Name</strong> (optional): Wänn du wetsch, ass Dyyni Änderige uf Dii chenne zruckgfierd wäre.',
@@ -1501,8 +1498,8 @@ Des cha nimmi ruckgängig gmacht wäre.',
 'recentchanges-label-minor' => 'Des isch e chleini Änderig',
 'recentchanges-label-bot' => 'Die Bearbeitig isch dur e Bott uusgfiert wore',
 'recentchanges-label-unpatrolled' => 'Die Bearbeitig isch nonig vun eme Fäldhieter aagluegt wore',
+'recentchanges-label-plusminus' => 'Di gänderet Sytegreßi (Aazahl in Byte)',
 'recentchanges-legend-newpage' => '$1 - neji Syte',
-'rcnote' => "Azeigt {{PLURAL:$1|wird '''1''' Änderig|wärde di letschte '''$1''' Änderige}} {{PLURAL:$2|vom letschte Tag|i de letschte '''$2''' Täg}} (Stand: $4, $5)",
 'rcnotefrom' => 'Des sin d Ändrige syter <b>$2</b> (bis zem <b>$1</b> zeigt).',
 'rclistfrom' => '<small>Nöji Änderige ab $1 aazeige (UTC)</small>',
 'rcshowhideminor' => 'Chlynigkeite $1',
@@ -1966,10 +1963,8 @@ In jedere Zyylete het s Link zue dr erschte un dr zwote Wyterleitig un s Ziil vu
 'protectedpages' => 'Gschützti Sytene',
 'protectedpages-indef' => 'Nume uubschränkt gschitzti Syte zeige',
 'protectedpages-cascade' => 'Nume Syte mit Kaskadeschutz',
-'protectedpagestext' => 'Die Spezialsyte zeigt alli vor em Verschiebe oder Bearbeite gschitzti Syte.',
 'protectedpagesempty' => 'Aktuäll sin kei Syte mit däne Parameter gschitzt.',
 'protectedtitles' => 'Gsperrti Titel',
-'protectedtitlestext' => 'Die Titel sin gsperrt fir s Neijaalege',
 'protectedtitlesempty' => 'Im Momänt sin kei Syte fir s Nejaalege gsperrt mit däne Parameter.',
 'listusers' => 'Lischte vo Benutzer',
 'listusers-editsonly' => 'Zeig nume Benutzer mit Byytreg',
@@ -2020,9 +2015,6 @@ D Aazeig cha dur d Uuswahl vun eme Protokoll, eme Benutzername oder eme Sytename
 'allpagesto' => 'Syten aazeige bis:',
 'allarticles' => 'alli Artikel',
 'allinnamespace' => 'alli Sytene im Namensruum $1',
-'allnotinnamespace' => 'alli Sytene, wo nit im $1 Namensruum sin',
-'allpagesprev' => 'Füehrigs',
-'allpagesnext' => 'nächschts',
 'allpagessubmit' => 'gang',
 'allpagesprefix' => 'Alli Sytene mit em Präfix:',
 'allpagesbadtitle' => 'Dr Sytename, wu yygee hesch, isch nit giltig: Er het entwäder e vorgstellt Sproch-, e Interwiki-Chirzel oder s het ei oder meh Zeiche din, wu in eme Sytename nit derfe brucht wäre.',
@@ -2339,7 +2331,6 @@ In däm Fall darf di neijscht Version nit markiert wäre oder ihre Status muess
 'undeletebtn' => 'Widerhärstelle',
 'undeletelink' => 'aaluege/widerhärstelle',
 'undeleteviewlink' => 'aaluege',
-'undeletereset' => 'Abbräche',
 'undeleteinvert' => 'Uswahl umchehre',
 'undeletecomment' => 'Grund:',
 'undeletedrevisions' => '{{PLURAL:$1|ei Revision|$1 Revisione}} wider zruckgholt.',
@@ -2428,14 +2419,12 @@ Do chunnt dr aktuäll Yytrag us em Benutzersperr-Logbuech:',
 'block' => 'Benutzer sperre',
 'unblock' => 'Benutzer frejgee',
 'blockip' => 'Däm Binutzer d Bearbeitigsrächt furtnee',
-'blockip-title' => 'Benutzer sperre',
 'blockip-legend' => 'IP-Adräss/Benutzer sperre',
 'blockiptext' => 'Nimm des Formular go ne Benutzer oder e IP-Adräss sperre.
 Des sott numme erfolge go Vandalismus verhindere un in Ibereinstimmig mit in dr [[{{MediaWiki:Policy-url}}|Leitlinie]]. Bitte gib au ne Grund fi d Sperri aa (z. B. indäm du einzel ni Syte zitiersch, wu vandaliert wore sin).',
 'ipadressorusername' => 'IP-Adräss oder Benutzername:',
 'ipbexpiry' => 'Sperrduur:',
 'ipbreason' => 'Grund:',
-'ipbreasonotherlist' => 'Anderi Begrindig',
 'ipbreason-dropdown' => '* Allgmeini Sperrgrind
 ** Lesche vu Syte
 ** Aalege vu bledsinnige Syte
@@ -2453,8 +2442,6 @@ Des sott numme erfolge go Vandalismus verhindere un in Ibereinstimmig mit in dr
 'ipbsubmit' => 'IP-Adräss/Benutzer sperre',
 'ipbother' => 'Anderi Duur (englisch):',
 'ipboptions' => '2 Stunde:2 hours,1 Tag:1 day,3 Täg:3 days,1 Wuche:1 week,2 Wuche:2 weeks,1 Monet:1 month,3 Monet:3 months,6 Monet:6 months,1 Johr:1 year,Fir immer:infinite',
-'ipbotheroption' => 'Anderi Duur',
-'ipbotherreason' => 'Anderi/zuesätzligi Begrindig:',
 'ipbhidename' => 'Benutzername in dr Lischt vu aktive Sperrine un im Benutzerverzeichnis verstecke.',
 'ipbwatchuser' => 'Benutzer(diskussions)syte beobachte',
 'ipb-disableusertalk' => 'Dää Benutzer dra hindere syy eigeni Diskussionssyte z bearbeite, solang er gsperrt isch',
@@ -2538,7 +2525,6 @@ Go d Sperri ufhebe lueg d [[Special:BlockList|Lisch vu allene aktive Sperrine]].
 'proxyblockreason' => 'Dyni IP-Adrässe isch gsperrt wore, wel si ne ufige Proxy isch. Bitte kontaktier Dyyn Internet-Provider oder Dyni Systemadministratore un informier si iber des Sicherheitsproblem.',
 'sorbsreason' => 'D IP-Adräss isch in dr DNSBL vu {{SITENAME}} as uffige PROXY glischtet.',
 'sorbs_create_account_reason' => 'D IP-Adräss isch in dr DNSBL vu {{SITENAME}} as uffige PROXY glischtet. S Aalege vu neije Benutzer isch nit megli.',
-'cant-block-while-blocked' => 'Du derfsch kei anderi Benutzer sperre, derwylscht Du sälber gsperrt bisch.',
 'cant-see-hidden-user' => 'Dr Benutzer, wu Du versuechsch z sperre, isch scho gsperrt un versteckt wore. Du chasch d Sperri vu däm Benutzer nit säh oder bearbeite, wel du s „hideuser“-Rächt nit hesch.',
 'ipbblocked' => 'Du chasch keini andere Benutzer sperre oder entsperre, wel Du sälber gsperrt bisch',
 'ipbnounblockself' => 'Du derfsch di nit sälber entsperre',
@@ -2584,7 +2570,6 @@ Du sottsch wäge däm d Konsequänze verstande haa, voreb Du jetz wytermachsch."
 I söttigne Fäll müessti d Diskussionssyten allefalls vo Hand kopiert wärde.",
 'movearticle' => 'Artikel verschiebe',
 'moveuserpage-warning' => "'''Warnig:''' Du bis am Verschiebe vun ere Benutzersyte. Bitte gib Achtig, ass doderdur nume die Syte verschobe wird, aber dr Benutzer '''nit''' umgnännt wird.",
-'movenologin' => 'Du bisch nid aagmäldet',
 'movenologintext' => 'Du muesch e regischtrierte Benutzer syy un Di [[Special:UserLogin|aamälde]] go die Syte verschiebe.',
 'movenotallowed' => 'Du derfsch kei Syte verschiebe.',
 'movenotallowedfile' => 'Du derfsch kei Dateie verschiebe.',
@@ -2599,8 +2584,6 @@ I söttigne Fäll müessti d Diskussionssyten allefalls vo Hand kopiert wärde."
 'movepage-moved-noredirect' => 'D Erstellig vonere Wyterleitig isch unterdruggt worde.',
 'articleexists' => 'E Syte mit däm Name git s scho oder de Name isch nid giltig. Bitte nimm en andere.',
 'cantmove-titleprotected' => 'Die Syte het nüt chönne verschobe werde, wyl de nöie Titel gsperrt isch.',
-'talkexists' => 'D Syte sälber isch erfolgrych verschobe worde, nid aber d Diskussionssyte, wil s under em nöue Titel scho eini het gä. Bitte setz se vo Hand zäme.',
-'movedto' => 'verschoben uf',
 'movetalk' => 'Diskussionssyte nach Müglechkeit mitverschiebe',
 'move-subpages' => 'Untersyte verschiebe (bis $1)',
 'move-talk-subpages' => 'Untersyte vu dr Diskussionssyte verschiebe (bis $1)',
@@ -3312,8 +3295,8 @@ Andri wäre standardmäßig nit aazeigt.
 'exif-gpslongitude-w' => 'weschtl. Längi',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter|Meter}} iber em Meeresspiegel',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter|Meter}} unter em Meeresspiegel',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter|Meter}} iber em Meeresspiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter|Meter}} unter em Meeresspiegel',
 
 'exif-gpsstatus-a' => 'Mässig lauft',
 'exif-gpsstatus-v' => 'Interoperabilität vu Mässige',
@@ -3384,15 +3367,10 @@ Andri wäre standardmäßig nit aazeigt.
 'exif-urgency-high' => 'Hoch ($1)',
 'exif-urgency-other' => 'Benutzerdefinierti Prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Die Datei mit emnen externe Programm bearbeite',
-'edit-externally-help' => '(Lueg d [https://www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fir witeri Informatione)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alli',
 'namespacesall' => 'alli',
 'monthsall' => 'alli',
-'limitall' => 'alli',
 
 # Email address confirmation
 'confirmemail' => 'Bstätigung vo Ihre E-Poscht-Adräss',
@@ -3410,7 +3388,6 @@ Ruggmäldig vum Mailserver: $1',
 'confirmemail_needlogin' => 'Du muesch dich $1, zume dyni E-Mail-Adress bstätige.',
 'confirmemail_success' => 'Dyni E-Mail-Adräss isch bstätiget worde. Du chasch di jitz aamälde.',
 'confirmemail_loggedin' => 'Dyni E-Mail-Adräss isch jitz bstätigt.',
-'confirmemail_error' => 'Öbis isch bim Bestätige vo dynrer E-Mail-Adress schief gloffe.',
 'confirmemail_subject' => '{{SITENAME}} E-Mail-Adrässbstätigung',
 'confirmemail_body' => 'Salü
 
@@ -3639,7 +3616,6 @@ E [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopi vu dr GNU General Public-Lizänz] sott
 
 # Special:ComparePages
 'comparepages' => 'Syte verglyyche',
-'compare-selector' => 'Syteversione verglyyche',
 'compare-page1' => 'Syte 1',
 'compare-page2' => 'Syte 2',
 'compare-rev1' => 'Version 1',
index 5ed264d..e1bf53a 100644 (file)
@@ -63,9 +63,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ખાતું_ખોલો' ),
        'Deadendpages'              => array( 'મૃતાંતપાનાં' ),
        'DeletedContributions'      => array( 'હટાવેલાં_યોગદાન' ),
-       'Disambiguations'           => array( 'અસંદિગ્ધતા' ),
        'DoubleRedirects'           => array( 'દ્વિ_પુનઃમાર્ગદર્શન' ),
        'Emailuser'                 => array( 'સભ્યનેઇમેલ' ),
+       'ExpandTemplates'           => array( 'શ્રેણીવિસ્તારો' ),
        'Export'                    => array( 'નિકાસ' ),
        'Fewestrevisions'           => array( 'લઘુત્તમ_પુનરાવર્તન' ),
        'FileDuplicateSearch'       => array( 'ફાઇલપ્રતિકૃતિ_શોધ' ),
@@ -173,7 +173,6 @@ $messages = array(
 'tog-minordefault' => 'બધા નવા ફેરફારો નાના તરીકે માર્ક કરો.',
 'tog-previewontop' => 'ફેરફાર પેટી પહેલાં પૂર્વાલોકન દર્શાવો',
 'tog-previewonfirst' => 'પ્રથમ ફેરફાર વખતે પૂર્વાલોકન બતાવો',
-'tog-nocache' => 'બ્રાઉઝરનું પેજ કેશિંગ અસક્રિય કરો',
 'tog-enotifwatchlistpages' => 'મારી ધ્યાનસૂચિમાંનું પાનુ અને ફાઇલમાં ફેરફાર થાય ત્યારે મને ઇ-મેલ મોકલો',
 'tog-enotifusertalkpages' => 'મારી ચર્ચાનાં પાનામાં ફેરફાર થાય ત્યારે મને ઇમેલ મોકલો',
 'tog-enotifminoredits' => 'પાનાં અને ફાઇલ્સમાં નાનાં ફેરફાર થાય તો પણ મને ઇમેલ મોકલો',
@@ -309,7 +308,6 @@ $messages = array(
 'qbedit' => 'ફેરફાર કરો',
 'qbpageoptions' => 'આ પાનું',
 'qbmyoptions' => 'મારાં પાનાં',
-'qbspecialpages' => 'ખાસ પાનાં',
 'faq' => 'FAQ
 વારંવાર પુછાતા પ્રશ્નો',
 'faqpage' => 'Project:વારંવાર પુછાતા પ્રશ્નો',
@@ -429,11 +427,11 @@ $1',
 
 'ok' => 'મંજૂર',
 'retrievedfrom' => '"$1"થી લીધેલું',
-'youhavenewmessages' => 'તમારા માટે $1 ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|તમારી પાસે}} $1 ($2).',
 'youhavenewmessagesfromusers' => 'આપને માટે {{PLURAL:$3|અન્ય સભ્ય|$3 અન્ય સભ્યો}} તરફથી $1 છે. ($2).',
 'youhavenewmessagesmanyusers' => 'આપને માટે ઘણાં સભ્યો તરફથી $1 છે ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|નવો સંદેશો|નવા સંદેશા}}',
-'newmessagesdifflinkplural' => 'છેલ્લા {{PLURAL:$1|ફેરફાર|ફેરફારો}}',
+'newmessageslinkplural' => '{{PLURAL:$1|નવà«\8b àª¸àª\82દà«\87શà«\8b«¯à«¯à«¯=નવા àª¸àª\82દà«\87શા}}',
+'newmessagesdifflinkplural' => 'àª\9bà«\87લà«\8dલા {{PLURAL:$1|ફà«\87રફાર|૯૯૯=ફà«\87રફારà«\8b}}',
 'youhavenewmessagesmulti' => 'તમારા માટે $1 ઉપર નવા સંદેશાઓ છે',
 'editsection' => 'ફેરફાર કરો',
 'editold' => 'ફેરફાર કરો',
@@ -531,9 +529,6 @@ $1',
 'perfcachedts' => 'નીચેની વિગતો જૂના સંગ્રહમાથી છે અને તે છેલ્લે $1એ તાજી કરવામાં આવી હતી. વધુમાં વધુ {{PLURAL:$4|એક પરિણામ|$4 પરિણામો}} આ સંગ્રહમાં ઉપલબ્ધ છે.',
 'querypage-no-updates' => 'આ પાનાની નવી આવૃત્તિઓ હાલમાં અક્રિય છે.
 અહીંની વિગતો હાલમાં રિફ્રેશ કરવામાં નહી આવે.',
-'wrong_wfQuery_params' => 'wfQuery() માટે અયોગ્ય વિકલ્પો<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'સ્રોત જુઓ',
 'viewsource-title' => '$1 માટે સ્રોત જુઓ',
 'actionthrottled' => 'અકાળે અટાકાવી દીધેલી ક્રિયા',
@@ -668,7 +663,7 @@ $2',
 'passwordtooshort' => 'ગુપ્ત સંજ્ઞામાં ઓછામાં {{PLURAL:$1|ઓછો એક અક્ષર હોવો |ઓછા $1 અક્ષર હોવા}} જોઇએ.',
 'password-name-match' => 'તમારી ગુપ્તસંજ્ઞા તમારા સભ્યનામ કરતાં અલગ જ હોવી જોઇએ.',
 'password-login-forbidden' => 'આ સભ્યનામ અને ગુપ્તસંજ્ઞા વાપરવા પર પ્રતિબંધ છે.',
-'mailmypassword' => 'નવà«\8b àªªàª¾àª¸àªµàª°à«\8dડ àª\87મà«\87લમાàª\82 àª®à«\8bàª\95લો',
+'mailmypassword' => 'પાસવરà«\8dડ àª«àª°à«\80 àª\97à«\8bઠવો',
 'passwordremindertitle' => '{{SITENAME}} માટેની નવી કામચલાઉ ગુપ્ત સંજ્ઞા',
 'passwordremindertext' => 'કોઇકે (કદાચ તમે IP એડ્રેસ $1 પરથી) {{SITENAME}} ($4) માટે નવી ગુપ્ત સજ્ઞા (પાસવર્ડ) માટે વિનંતી કરેલ છે.
 હંગામી ધોરણે સભ્ય "$2" માટે ગુપ્ત સંજ્ઞા બની છે અને તે "$3". જો તમે જ આ વિનંતી કરી હોય અને તમે ગુપ્ત સંજ્ઞા બદલવા માંગતા હો તો તમારે પ્રવેશ કરવો પડશે અને નવી ગુપ્ત સંજ્ઞા પસંદ કરવી પડશે. હંગામી ગુપ્ત સંજ્ઞાની અવધિ {{PLURAL:$5|એક દિવસ|$5 દિવસો}} છે ત્યાર બાદ તે કામ નહીં કરે.
@@ -718,7 +713,7 @@ $2',
 'user-mail-no-body' => 'કોરો કે નાનકડો ઈમેઇલ મોકલવાનો પ્રયાસ કરાયો.',
 
 # Change password dialog
-'resetpass' => 'ગુપ્તસંજ્ઞા બદલો',
+'changepassword' => 'ગુપ્તસંજ્ઞા બદલો',
 'resetpass_announce' => 'તમે હંગામી ઇમેઇલ કોડ સાથે લોગ ઇન કર્યું.
 લોગીંગ પુરૂં કરવા માટે તમારે નવી ગુપ્ત સંજ્ઞા (પાસવર્ડ) આપવો પડશે:',
 'resetpass_text' => '<!-- અહીં ટેક્સટ ઉમેરો -->',
@@ -740,7 +735,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'ગુપ્ત સંજ્ઞા ફરી ગોઠવો',
 'passwordreset-text-one' => 'તમારો પાસવર્ડ બદલવા માટે આ ફોર્મ પૂરુ કરો.',
-'passwordreset-text-many' => '{{PLURAL:$1|તમારà«\8b àªªàª¾àª¸àªµàª°à«\8dડ àª¬àª¦àª²વા માટે કોઈ એક ખાનું ભરો.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|àª\87મà«\87લ àªµàª¡à«\87 àª\95ામàª\9aલાàª\89 àªªàª¾àª¸àªµàª°à«\8dડ àª®à«\87ળવવા માટે કોઈ એક ખાનું ભરો.}}',
 'passwordreset-legend' => 'ગુપ્ત સંજ્ઞા ફરી ગોઠવો',
 'passwordreset-disabled' => 'આ વિકી પર ગુપ્ત સંજ્ઞા ફરી ગોઠવવા પર પ્રતિબંધ છે.',
 'passwordreset-emaildisabled' => 'આ વિકિ પર ઇમેઇલ સગવડ બંધ છે.',
@@ -1099,10 +1094,6 @@ $3 દ્વારા અપાયેલ કારણ છે ''$2''",
 'revisiondelete' => 'પુનરાવર્તન રદ કરો/પુનર્જીવીત કરો',
 'revdelete-nooldid-title' => 'અવૈધ લક્ષ્ય ફેરફાર',
 'revdelete-nooldid-text' => 'આ ક્રિયા જેના પર  કરવાની છે તે લક્ષ્ય ફેરફાર તમે જણાવ્યો નથી અથવા એવો કોઇ ફેરફાર અસ્તિત્વમાં નથી અથવા તમે હાલનો ફેરફાર સંતાડવાનો પ્રયત્ન કરી રહ્યાં છો.',
-'revdelete-nologtype-title' => 'આવો કોઈ લોગા નથી ફરી પ્રયત્ન કરો',
-'revdelete-nologtype-text' => 'આ ક્રિયા શેના પર કરવાની છે તે લોગ નો પ્રકાર તમે જણાવ્યો નથી',
-'revdelete-nologid-title' => 'લોગ પ્રવેશ અવૈદ્ય',
-'revdelete-nologid-text' => 'આ ક્રિયા જેના પર કરવાની છે તે લક્ષ્ય ઘટના તમે જણાવી નથી અથવા તેવી કોઇ ઘટના નથી.',
 'revdelete-no-file' => 'વર્ણવેલી ફાઈલ અસ્તિત્વમાં નથી',
 'revdelete-show-file-confirm' => 'શું તમને ખાત્રી છે કેતમે $2 તારીખ $3 વાગ્યા સુધીના "<nowiki>$1</nowiki>" ફાઇલ ના ફેરફાર જોવા માંગો છો?',
 'revdelete-show-file-submit' => 'હા',
@@ -1136,8 +1127,6 @@ $1",
 'logdelete-failure' => "'''લોગની દ્રશ્યતા ગોઠવી ન શકાઈ :'''
 $1",
 'revdel-restore' => 'દૃષ્ટિક્ષમતા બદલો',
-'revdel-restore-deleted' => 'હટાવેલા પુનરાવર્તનો',
-'revdel-restore-visible' => 'દ્રશ્ય પુનરાવર્તનો',
 'pagehist' => 'પાનાનો ઇતિહાસ',
 'deletedhist' => 'રદ કરેલનો ઇતિહાસ',
 'revdelete-hide-current' => '$2, $1 તરીખ ધરાવતી વસ્તુ સંતાડવામાં ત્રુટિ : આ હાલનો ફેરફાર છે.
@@ -1213,12 +1202,8 @@ $1",
 # 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}}',
@@ -1227,10 +1212,8 @@ $1",
 'nextn-title' => 'આગલા  $1 {{PLURAL:$1|પરિણામ|પરિણામો}}',
 'shown-title' => 'પ્રતિ પાને $1 {{PLURAL:$1|પરિણામ|પરિણામો}} બતાવો',
 'viewprevnext' => 'જુઓ: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'શોધ વિકલ્પો',
 'searchmenu-exists' => "''' આ વિકિ પર  \"[[:\$1]]\" નામે પાનું પહેલેથી અસ્તિત્વમાં છે.'''",
 'searchmenu-new' => "'''આ વિકિ પર \"[[:\$1]]\" નામે પાનું બનાવો!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|આ પૂર્વાક્ષર વાળા પાનાં જુઓ]]',
 'searchprofile-articles' => 'લેખનું પાનું',
 'searchprofile-project' => 'મદદ અને યોજના પાનું',
 'searchprofile-images' => 'દ્રશ્ય શ્રાવ્ય માધ્યમ',
@@ -1251,21 +1234,16 @@ $1",
 'search-interwiki-default' => '$1 પરીણામો:',
 'search-interwiki-more' => '(વધુ)',
 'search-relatedarticle' => 'શોધ સંબંધિત',
-'mwsuggest-disable' => 'શોધ સુઝાવો નિષ્ક્રીય કરો',
 'searcheverything-enable' => 'નામસ્થળોમાં શોધો:',
 'searchrelated' => 'શોધ સંબંધિત',
 'searchall' => 'બધા',
 'showingresults' => " {{PLURAL:$1|'''1''' પરિણામ|'''$1''' પરિણામો}} સુધી #'''$2''' થી શરૂ  કરી",
 'showingresultsnum' => "#'''$2''' થી શરૂ કરી {{PLURAL:$3|'''1''' પરિણામresult|'''$3''' પરિણામો}} અહીં બતાવ્યાં છે",
 'showingresultsheader' => "'''$4''' માટે {{PLURAL:$5|પરિણામ  '''$1''' of '''$3'''|પરિણામો '''$1 - $2''' of '''$3'''}}",
-'nonefound' => "'''નોંધ''':ફક્ત અમુકજ નામસ્થળોમાં આપોઆપ શોધાશે.
-તમારા શબ્દને ''બધા:'' ઉમેરી શોધવાનો પ્રયત્ન કરો, જેથી બધી માહિતિમાં (જેમકે ચર્ચાના પાના, ઢાંચા, વિગેરે)માં શોધ થઈ શકે, અથવાતો ઇચ્છિત નામસ્થળ પસંદ કરી શોધો બટન દબાવો.",
 'search-nonefound' => 'તમે આપેલી માહિતી ને મળતાં આવતાં કોઈ પરિણામો નથી',
-'powersearch' => 'શોધો (વધુ પર્યાય સાથે)',
 'powersearch-legend' => 'વધુ પર્યાયો સાથે શોધો',
 'powersearch-ns' => 'નામસ્થળોમાં શોધો:',
 'powersearch-redir' => 'અન્યત્ર વાળેલાં પાનાંની યાદી',
-'powersearch-field' => 'નાં માટે શોધો',
 'powersearch-togglelabel' => 'ચકાસો:',
 'powersearch-toggleall' => 'બધા',
 'powersearch-togglenone' => 'એકે નહિ',
@@ -1279,8 +1257,7 @@ $1",
 'preferences' => 'પસંદ',
 'mypreferences' => 'પસંદગીઓ',
 'prefs-edits' => 'સંપાદનોની સંખ્યા',
-'prefsnologintext2' => 'તમારી પસંદગીઓ પસંદ કરવા માટે કૃપયા $1.',
-'changepassword' => 'ગુપ્તસંજ્ઞા બદલો',
+'prefsnologintext2' => 'તમારી પસંદગીઓ બદલવા માટે મહેરબાની કરી $1 કરો.',
 'prefs-skin' => 'ફલક',
 'skin-preview' => 'ફેરફાર બતાવો',
 'datedefault' => 'મારી પસંદ',
@@ -1303,13 +1280,11 @@ $1",
 'prefs-email' => 'ઈ-મેલ સંબંધી વિકલ્પો',
 'prefs-rendering' => 'દેખાવ',
 'saveprefs' => 'સાચવો',
-'resetprefs' => 'બીન સાચવેલ ફેરફારો સાફ કરો',
 'restoreprefs' => 'મૂળ વિકલ્પો ફરી ગોઠવો (બધાં વિભાગોમાં)',
 'prefs-editing' => 'સંપાદન',
 'rows' => 'પંક્તિઓ',
 'columns' => 'સ્તંભ',
 'searchresultshead' => 'શોધો',
-'resultsperpage' => 'પ્રતિ પાના પર પરિણામો',
 'stub-threshold' => '<a href="#" class="stub">stub link</a>નાફોર્મમેટિંગ માટે શરૂઆતિ પગથિયું  (બાઈટ્સ):',
 'stub-threshold-disabled' => 'નિષ્ક્રિય કરેલ',
 'recentchangesdays' => 'તાજા ફેરફારોમાં દેખાડવાના દિવસો',
@@ -1321,7 +1296,6 @@ $1",
 'localtime' => 'સ્થાનીક સમય:',
 'timezoneuseserverdefault' => 'વીકીના મૂળ વિકલ્પો ગોઠવો ($1)',
 'timezoneuseoffset' => 'અન્ય ( સમય ખંડ બતાવો)',
-'timezoneoffset' => 'સમય ખંડ',
 'servertime' => 'સર્વર સમય:',
 'guesstimezone' => 'બ્રાઉઝરમાંથી દાખલ કરો',
 'timezoneregion-africa' => 'આફ્રિકા',
@@ -1391,6 +1365,7 @@ HTML નાકું ચકાસો',
 'prefs-displaywatchlist' => 'પ્રદર્શન વિકલ્પો',
 'prefs-tokenwatchlist' => 'નિશાની',
 'prefs-diffs' => 'ફરક',
+'prefs-help-prefershttps' => 'આ પ્રાથમિકતા તમારા હવે પછીના પ્રવેશથી લાગુ પડશે.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ઈ-મેલ યોગ્ય લાગે છે.',
@@ -1565,13 +1540,14 @@ HTML નાકું ચકાસો',
 'enhancedrc-history' => 'ઇતિહાસ',
 'recentchanges' => 'તાજા ફેરફારો',
 'recentchanges-legend' => 'હાલમાં થયેલા ફેરફારોના વિકલ્પ',
-'recentchanges-summary' => 'વિàª\95િમાàª\82 àª¤àª¾àª\9cà«\87તરમાàª\82 àª¥àª¯à«\87લા àª«à«\87રફારà«\8b àªªàª° àª\85હિંથી નજર રાખો.',
+'recentchanges-summary' => 'વિàª\95િમાàª\82 àª¤àª¾àª\9cà«\87તરમાàª\82 àª¥àª¯à«\87લા àª«à«\87રફારà«\8b àªªàª° àª\85હà«\80ંથી નજર રાખો.',
 'recentchanges-feed-description' => 'આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.',
 'recentchanges-label-newpage' => 'આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું',
 'recentchanges-label-minor' => 'આ એક નાનો સુધારો છે.',
 'recentchanges-label-bot' => 'આ ફેરફાર બોટ દ્વારા કરાયો છે',
 'recentchanges-label-unpatrolled' => 'આ ફેરફાર હજી ચકાસાયો નથી',
-'rcnote' => "નીચે $5, $4 સુધીમાં અને તે પહેલાનાં '''$2''' દિવસમાં {{PLURAL:$1| થયેલો '''1''' માત્ર ફેરફાર|થયેલાં છેલ્લા  '''$1''' ફેરફારો}} દર્શાવ્યાં છે .",
+'recentchanges-label-plusminus' => 'પાનાનું કદ આપેલા અંકો જેટલાં બાઈટ્સ જેટલું બદલ્યુ છે.',
+'recentchanges-legend-newpage' => '([[Special:NewPages|નવા પાનાઓની યાદી]] પણ જુઓ)',
 'rcnotefrom' => "નીચે '''$2'''થી થયેલાં '''$1''' ફેરફારો દર્શાવ્યાં છે.",
 'rclistfrom' => '$1 બાદ થયેલા નવા ફેરફારો બતાવો',
 'rcshowhideminor' => 'નાના ફેરફારો $1',
@@ -1595,6 +1571,7 @@ HTML નાકું ચકાસો',
 'newsectionsummary' => '/* $1 */ નવો વિભાગ',
 'rc-enhanced-expand' => 'વિગતો બતાવો',
 'rc-enhanced-hide' => 'વિગતો છુપાવો',
+'rc-old-title' => '"$1" તરીકે મૂળભૂત બનાવવામાં આવ્યું હતું',
 
 # Recent changes linked
 'recentchangeslinked' => 'આની સાથે જોડાયેલા ફેરફાર',
@@ -2053,10 +2030,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'protectedpages' => 'સંરક્ષિત પાનાઓ',
 'protectedpages-indef' => 'ફક્ત અનિશ્ચિત સુરક્ષા ધરાવતા પાના',
 'protectedpages-cascade' => 'માત્ર પગથિયામય સુરક્ષા વાળા પગ',
-'protectedpagestext' => 'નીચેના પાના કોઈ ફેરફાર કે હટાવવા થી સુરકક્ષીત કરાયા છે',
 'protectedpagesempty' => 'આ વિકલ્પો દ્વારા કોઈ પાના સુરક્ષિત કરાયા નથી.',
 'protectedtitles' => 'સંરક્ષિત શીર્ષકો',
-'protectedtitlestext' => 'આ શીર્ષકો રચના માટે આરક્ષીત છે',
 'protectedtitlesempty' => 'આ પરિબળો દ્વારા કોઇ પણ શીર્ષકો સચવાયા નથી.',
 'listusers' => 'સભ્યોની યાદી',
 'listusers-editsonly' => 'માત્ર સંપાદન કરનારા સભ્યો બતાવો',
@@ -2109,9 +2084,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization. જુઓ',
 'allpagesto' => 'આનાથી અંત થતા પાના દર્શાવો:',
 'allarticles' => 'બધા પાનાંઓ',
 'allinnamespace' => 'બધા પાના  ($1 નમાવકાશ)',
-'allnotinnamespace' => 'બધા પાના  ($1 નમાવકાશમાંના હોય)',
-'allpagesprev' => 'પહેલાનું',
-'allpagesnext' => 'પછીનું',
 'allpagessubmit' => 'જાઓ',
 'allpagesprefix' => 'ઉપસર્ગ ધરાવતા પાનાં શોધો',
 'allpagesbadtitle' => 'આપનું ઈચ્છિત શીર્ષક અમાન્ય છે, ખાલી છે, અથવાતો અયોગ્ય રીતે આંતર-ભાષિય કે આંતર-વિકિ સાથે જોડાયેલું શીર્ષક છે.
@@ -2275,26 +2247,26 @@ $PAGEINTRO $NEWPAGE
 
 ફેરફારોનો સારાંશ: $PAGESUMMARY $PAGEMINOREDIT
 
-સંપાદકનો સંપર્ક :
+સંપાદકનો સંપર્ક:
 ઇ-મેલ: $PAGEEDITOR_EMAIL
 વિકિ: $PAGEEDITOR_WIKI
 
-àª\9cà«\8dયાàª\82 àª¸à«\81ધà«\80 àª¤àª®à«\87 àª\86 àªªàª¾àª¨àª¾àª¨à«\80 àª®à«\81લાàª\95ાત àª¨àª¹à«\80 àª²à«\8b àª¤à«\8dયાàª\82 àª¸à«\81ધà«\80 àª¤à«\87માàª\82 àª­àªµàª¿àª·à«\8dયમાàª\82 àª¥àª¨àª¾àª° àª\95à«\8bàª\87 àªªàª£ àª«à«\87રફારનà«\80 àª¸à«\82àª\9aના àª¤àª®àª¨à«\87 àª®àª³àª¶à«\87 àª¨àª¹àª¿.
-તમે તમારી ધ્યાન સૂચિમાં તમે જોયેલા પાના સંબંધી સૂચનાને લાગતા વિલપોમાં ફેરફાર કરી શકો છો.
+àª\9cà«\8dયાàª\82 àª¸à«\81ધà«\80 àª¤àª®à«\87 àªªà«\8dરવà«\87શ àª\95રà«\80નà«\87 àª\86 àªªàª¾àª¨àª¾àª¨à«\80 àª®à«\81લાàª\95ાત àª¨àª¹à«\80 àª²à«\8b àª¤à«\8dયાàª\82 àª¸à«\81ધà«\80 àª¤à«\87માàª\82 àª­àªµàª¿àª·à«\8dયમાàª\82 àª¥àª¨àª¾àª° àª\95à«\8bàª\87 àªªàª£ àª«à«\87રફારનà«\80 àª¸à«\82àª\9aના àª¤àª®àª¨à«\87 àª®àª³àª¶à«\87 àª¨àª¹àª¿. àª¤àª®à«\87 àª¤àª®àª¾àª°à«\80 àª§à«\8dયાન àª¸à«\82àª\9aિમાàª\82 àª¤àª®à«\87 àª\9cà«\8bયà«\87લા àªªàª¾àª¨àª¾ àª¸àª\82બàª\82ધà«\80 àª¸à«\82àª\9aનાનà«\87 àª²àª¾àª\97તા àªµàª¿àª²àªªà«\8bમાàª\82 àª«à«\87રફાર àª\95રà«\80 àª¶àª\95à«\8b àª\9bà«\8b.
+
 
 આપની વિશ્વાસુ {{SITENAME}} સૂચના પ્રણાલી   
+
 --
-e-mail notification settings બદલવા માટે મુલાકાત લો
+ઇમેલ સૂચના પ્રણાલી બદલવા માટે મુલાકાત લો
 {{canonicalurl:{{#special:Preferences}}}}
 
-તમારà«\80 àª§à«\8dયાનસà«\82àª\9aિના  àªµàª¿àª\95à«\8dલà«\8dપ àª\97à«\8bઠવણ માટે મુલાકાત લો
+તમારà«\80 àª§à«\8dયાનસà«\82àª\9aિનà«\80 àªµàª¿àª\95à«\8dલà«\8dપ àª\97à«\8bઠવણà«\80 માટે મુલાકાત લો
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-ધà«\8dયાનસà«\82àª\9aિમાàª\82થà«\80 àªªàª¾àª¨à«\81àª\82 àª¹àª\9fાવવા àª®à«\81લાàª\95ાત àª²à«\8b  
+ધà«\8dયાનસà«\82àª\9aિમાàª\82થà«\80 àªªàª¾àª¨à«\81àª\82 àª¹àª\9fાવવા àª®àª¾àª\9fà«\87 àª®à«\81લાàª\95ાત àª²à«\8b
 $UNWATCHURL
 
-મંતવ્યો અને વધુ મદદ માટે 
+મંતવ્યો અને વધુ મદદ માટે
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 'created' => 'બનાવ્યું',
 'changed' => 'બદલ્યું',
@@ -2457,7 +2429,6 @@ To perform a selective restoration, check the boxes corresponding to the revisio
 'undeletebtn' => 'પાછું વાળો',
 'undeletelink' => 'જુઓ/પાછુ વાળો',
 'undeleteviewlink' => 'જુઓ',
-'undeletereset' => 'ફરી ગોઠવો',
 'undeleteinvert' => 'પસંદગી ઉલટાવો',
 'undeletecomment' => 'કારણ:',
 'undeletedrevisions' => '{{PLURAL:$1|૧ સંપાદન|$1 સંપાદનો}} પુન સ્થાપિત કરાયા',
@@ -2545,7 +2516,6 @@ $1',
 'block' => 'સભ્ય પર પ્રતિબંધ મુકો',
 'unblock' => 'સભ્ય પરનો પ્રતિબંધ હટાવો',
 'blockip' => 'સભ્ય પર પ્રતિબંધ મુકો',
-'blockip-title' => 'સભ્ય પર પ્રતિબંધ મુકો',
 'blockip-legend' => 'સભ્ય પર પ્રતિબંધ મુકો',
 'blockiptext' => 'કોઈ ચોક્કસ IP સરનામું કે સભ્યના લેખન યોગદાન પર પ્રતિબંધ મુકવા નીચેનું ફોર્મ વાપરો.
 તેનો ઉપયોગ માત્ર ભાંગફોડિયા પ્રવૃત્તિઓને રોકવા અને  [[{{MediaWiki:Policy-url}}|નીતિ]] અનુસાર જ હોવો જોઈએ.
@@ -2553,7 +2523,6 @@ $1',
 'ipadressorusername' => 'IP સરનામું અથવા સભ્યનામ:',
 'ipbexpiry' => 'સમાપ્તિ:',
 'ipbreason' => 'કારણ:',
-'ipbreasonotherlist' => 'અન્ય કારણ',
 'ipbreason-dropdown' => '*સામાન્ય પ્રતિબંધ કારણો
 ** ખોટી માહિતી ઉમેરાઈ  
 ** પાનામાંથી માહિતી ભૂંસી નાંખી
@@ -2570,8 +2539,6 @@ $1',
 'ipbsubmit' => 'આ સભ્ય પર પ્રતિબંધ મૂકો',
 'ipbother' => 'અન્ય સમય:',
 'ipboptions' => '૨ કલાક:2 hours,૧ દિવસ:1 day,૩ દિવસ:3 days,૧ સપ્તાહ:1 week,૨ સપ્તાહ:2 weeks,૧ માસ:1 month,૩ માસ:3 months,૬ માસ:6 months,૧ વર્ષ:1 year,અમર્યાદ:infinite',
-'ipbotheroption' => 'અન્ય',
-'ipbotherreason' => 'અન્ય/વધારાનું કારણ:',
 'ipbhidename' => 'ફેરફારો અને યાદિમાંથી સભ્ય નામ છુપાવો',
 'ipbwatchuser' => 'આ સભ્યના સભ્ય અને ચર્ચા પાના જુઓ',
 'ipb-disableusertalk' => 'પ્રતિબંધ ઉઠે નહી ત્યાં સુધી આ સભ્યને પોતાનાં ચર્ચાનાં પાનાં પર ફેરફાર કરતાં રોકો',
@@ -2665,7 +2632,6 @@ $1',
 'sorbsreason' => '{{SITENAME}} દ્વારા વપરાયેલા DNSBL માં તમારું IP સરનામું એક ખુલ્લી પ્રોક્સી તરીકે નોંધાયું છે.',
 'sorbs_create_account_reason' => '{{SITENAME}} માં વપરાતા DNSBL દ્વારા તમારા IP  સરનામાને ખુલી પ્રોક્સી જણાવાઇ છે.
 તમે ખાતાની રચના નહીં કરી શકો.',
-'cant-block-while-blocked' => 'જ્યારે તમે પોતે પ્રતિબંધિત હોવ ત્યારે અન્ય સભ્યોને પ્રતિબંધિત ન કરી શકો',
 'cant-see-hidden-user' => 'તમે જે સભ્ય પર રોક લગાવવા પ્રયત્ન કરો છો તે ના પર પહેલેથી રોક લગાવાયેલી છે.
 તમને સભ્ય છુપાવો / બતાવોના અધિકારો ન હોવાથી, તમે  સભ્ય પર રોક લગાવેલ તે નોંધ જોઇ નથી શકતા.',
 'ipbblocked' => 'તમે અન્ય સભ્યોને પ્રતિબંધિત ન કરી શકો, તમે પોતે પ્રતિબંધિત છો.',
@@ -2726,7 +2692,6 @@ $1',
 આ સંજોગોમાં, જો તમે ચાહતા હોવ તો તમારે અહિંનું લખાણ જાતે નવા પાના પર ખસેડવું પડશે.",
 'movearticle' => 'આ પાનાનું નામ બદલો:',
 'moveuserpage-warning' => "'''ચેતવણી :''' તમે સભ્યનું પાનું હટાવી રહ્યાં છો.  કૃપયા યાદરાખશો કે માત્ર પાનું જ હટાવીશકાશે અને સભ્ય્ને નૂતન નામ નહીં અપાય.",
-'movenologin' => 'પ્રવેશ કરેલ નથી',
 'movenologintext' => 'કોઇ પાનું હટાવવા માટે તેમે નોંધણી કૃત સભ્ય અને [[Special:UserLogin|logged in]]  હોવા જોઇએ',
 'movenotallowed' => 'તમને પાનાં ખસેડવાની પરવાનગી નથી.',
 'movenotallowedfile' => 'તમને ફાઈલ ખસેડવાની પરવાનગી નથી.',
@@ -2742,9 +2707,6 @@ $1',
 'articleexists' => 'આ નામનું પાનું અસ્તિત્વમાં છે, અથવાતો તમે પસંદ કરેલું નામ અસ્વિકાર્ય છો.
 કૃપા કરી અન્ય નામ પસંદ કરો.',
 'cantmove-titleprotected' => 'આ સ્થાને તમે પાનું નહીં હટાવી શકો કેમ કે નવું શીર્ષક રચના કરવા પહેલેથી આરક્ષીત છે',
-'talkexists' => "'''મુખ્ય પાનું સફળતાપૂર્વક ખસેડવામાં આવ્યું છે, પરંતુ તેનું ચર્ચાનું પાનું ખસેડી શકાયું નથી, કેમકે નવા શીર્ષક હેઠળ તે પાનું પહેલેથી અસ્તિત્વમાં છે.
-કૃપા કરી જાતે તેને નવાં નામ વાળાં પાનાંમાં વિલિન કરો.'''",
-'movedto' => 'બદલ્યા પછીનું નામ',
 'movetalk' => 'સંલગ્ન ચર્ચાનું પાનું પણ ખસેડો',
 'move-subpages' => '($1 સુધી) ઉપ-પાના હટાવાયા',
 'move-talk-subpages' => 'ઉપપાનને ચર્ચાના પાના પર ખસેડો ( $1 સુધે)',
@@ -3548,15 +3510,10 @@ $2',
 'exif-urgency-high' => 'ઉચ્ચ ($1)',
 'exif-urgency-other' => 'વપરાશકર્તા-વ્યાખ્યાયિત અગ્રતા ($1)',
 
-# External editor support
-'edit-externally' => 'બાહ્ય સોફ્ટવેર વાપરીને આ ફાઇલમાં ફેરફાર કરો',
-'edit-externally-help' => '(વધુ માહિતી માટે [https://www.mediawiki.org/wiki/Manual:External_editors સેટ-અપ સૂચનાઓ] જુઓ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'બધા',
 'namespacesall' => 'બધા',
 'monthsall' => 'બધા',
-'limitall' => 'બધા',
 
 # Email address confirmation
 'confirmemail' => 'તમારા ઇ-મેઇલ સરનામાની પુષ્ટિ કરો',
@@ -3576,11 +3533,10 @@ $2',
 મેલની પહોંચ પાછી ફરી: $1',
 'confirmemail_invalid' => 'અવૈધ બહાલી સંકેત
 સંકેત કાલાતિત થયું હોય',
-'confirmemail_needlogin' => 'તમારà«\87 àª\88-મà«\87લ àª¨à«\87 àª¬àª¹àª¾àª²à«\80 àª\86પવા $1 àª\95રવà«\81àª\82 àªªàª¡àª¶à«\87',
+'confirmemail_needlogin' => 'તમારà«\87 àª\87મà«\87લનà«\80 àª\96ાતરà«\80 àª\95રવા $1 àª\95રવà«\81àª\82 àªªàª¡àª¶à«\87.',
 'confirmemail_success' => 'તમારા ઈ-મેલની પુષ્ટિ થઈ ગઈ છે.
 તમે હવે પ્રવેશ [[Special:UserLogin|log in]] કરી વિકિનો આનંદ ઉઠાવી શકો.',
 'confirmemail_loggedin' => 'તમારા ઇ-મેલ સરનામાની પુષ્ટિ કરાઇ છે.',
-'confirmemail_error' => 'પુષ્ટિ સાચવતા કોઈ ત્રુટિ રહી ગઈ',
 'confirmemail_subject' => '{{SITENAME}} ઈ-મેલ સરનામાની પુષ્ટિ',
 'confirmemail_body' => 'કોઇકે, કદાચ તમે પોતે જ , IP સરનામા  $1 પરથી,
  "$2" ખાતાનું ઇ-મેલ સરનામું બદલ્યું  {{SITENAME}} પર છે.
@@ -3666,7 +3622,7 @@ $5
 'autosumm-blank' => 'પાનું ખાલી કરી દેવાયું',
 'autosumm-replace' => 'માહિતીને "$1" થી બદલી',
 'autoredircomment' => '[[$1]] પર દિશાનિર્દેશિત',
-'autosumm-new' => '$1થà«\80 àª¶àª°à«\82 àª¥àª¤à«\81àª\82 àª¨àªµà«\81àª\82 àªªàª¾àª¨à«\81àª\82 àª¬àª¾àª¨વ્યું',
+'autosumm-new' => '$1થà«\80 àª¶àª°à«\82 àª¥àª¤à«\81àª\82 àª¨àªµà«\81àª\82 àªªàª¾àª¨à«\81àª\82 àª¬àª¨àª¾વ્યું',
 
 # Live preview
 'livepreview-loading' => 'લવાઇ રહ્યું છે...',
@@ -3816,7 +3772,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'પાનાં સરખાવો',
-'compare-selector' => 'પાનાનાં પુનરાવર્તન સરખાવો',
 'compare-page1' => 'પાનું ૧',
 'compare-page2' => 'પાનું ૨',
 'compare-rev1' => 'પુનરાવર્તન ૧',
@@ -3859,12 +3814,12 @@ $5
 'logentry-delete-delete' => '$1 દ્વારા પાનું $3 {{GENDER:$2|દૂર કરવામાં આવ્યું}}',
 'logentry-delete-restore' => '$1 {{GENDER:$2|પુનઃસંગ્રહ}} પાનું $3',
 'logentry-delete-event' => '$1 એ {{PLURAL:$5|લૉગ ઘટના|$5 લૉગ ઘટનાઓ}} ની દ્રશ્યતા $3 પર {{GENDER:$2|બદલેલ}} છે: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL: $5 | સુધારણા | $5 આવૃત્તિઓ}} $3 પાનાં પર: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL:$5 | સુધારણા | $5 આવૃત્તિઓ}} $3 પાનાં પર: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ $3 પર લોગ ઘટનાઓ દૃશ્યતા',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|બદલેલ}} બદલાઈ પાનાં પર આવૃત્તિઓની દૃશ્યતા $3',
 'logentry-suppress-delete' => '$1 એ $3 પાનું {{GENDER:$2|દબાવ્યું}}',
-'logentry-suppress-event' => '$1  (છાની માહિતી) {{GENDER:$2|બદલેલ}} બદલાઈ {{PLURAL: $5 | લોગ ઘટના | $5 લોગ}} ની દ્રશ્યતા $3 : $4',
-'logentry-suppress-revision' => '$1 છાની માહિતી {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL: $5 | આવૃત્તિ એ | $5 આવૃત્તિઓ}}: $4 $3 પાનાં પર',
+'logentry-suppress-event' => '$1  (છાની માહિતી) {{GENDER:$2|બદલેલ}} બદલાઈ {{PLURAL:$5 | લોગ ઘટના | $5 લોગ}} ની દ્રશ્યતા $3 : $4',
+'logentry-suppress-revision' => '$1 છાની માહિતી {{GENDER:$2|બદલેલ}} બદલાઈ ના દૃશ્યતા {{PLURAL:$5 | આવૃત્તિ એ | $5 આવૃત્તિઓ}}: $4 $3 પાનાં પર',
 'logentry-suppress-event-legacy' => '$1 ગુપ્ત {{GENDER:$2|બદલેલ}} બદલો $3 પર લોગ ઘટનાઓ દૃશ્યતા',
 'logentry-suppress-revision-legacy' => '$1 ગુપ્ત {{GENDER:$2|બદલેલ}} બદલાઈ પાનાં પર આવૃત્તિઓની દૃશ્યતા $3',
 'revdelete-content-hid' => 'સામગ્રી છુપાયેલા',
@@ -3875,7 +3830,7 @@ $5
 'revdelete-uname-unhid' => 'વપરાશકર્તા નામ છુપાવેલ નથીં',
 'revdelete-restricted' => 'પ્રબઁધકોના ફેરફાર કરવા પર પ્રતિબંધ મુકાયો',
 'revdelete-unrestricted' => 'પ્રબંધકોના ફેરફાર કરવા પર પ્રતિબંધ હટાવાયો.',
-'logentry-move-move' => '$1એ {{GENDER:$2|ખસેડાયું }} પાના $3ને $4 પર ખસેડ્યું',
+'logentry-move-move' => '$1એ $3ને $4 પર {{GENDER:$2|ખસેડ્યું}}',
 'logentry-move-move-noredirect' => '$1 એ દિશાનિર્દેશન છોડ્યા વગર પાના $3ને $4 પર {{GENDER:$2|વાળ્યું}}',
 'logentry-move-move_redir' => '$1એ દિશાનિર્દેશન કરીને પાના $3ને $4 પર {{GENDER:$2|ખસેડ્યું}}',
 'logentry-move-move_redir-noredirect' => '$1એ દિશાનિર્દેશન કરીને પાના $3ને $4 પર {{GENDER:$2|વાળ્યું}} પણ પાછળ દિશાનિર્દેશન છોડ્યું નહી',
@@ -3971,7 +3926,11 @@ $5
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|બાઇટ|બાઇટ્સ}}',
 
 # Special:ExpandTemplates
+'expand_templates_input' => 'ઇનપુટ લખાણ:',
 'expand_templates_output' => 'પરિણામ:',
+'expand_templates_xml_output' => 'XML આઉટપુટ',
 'expand_templates_ok' => 'મંજૂર',
+'expand_templates_remove_comments' => 'ટીપ્પણીઓ દૂર કરો',
+'expand_templates_preview' => 'પૂર્વાવલોકન',
 
 );
index 716bbb5..9f98051 100644 (file)
@@ -51,7 +51,6 @@ $messages = array(
 'tog-minordefault' => 'Myr roie-hoieaghey, cowree dagh arraghey myr myn-arraghey',
 'tog-previewontop' => 'Taishbyn y roie-haishbynys roish y chishtey reaghee',
 'tog-previewonfirst' => 'Taishbyn roie-haishbynys lurg y chied reaghey',
-'tog-nocache' => 'Ny sauail duillagyn ayns tasht y jeeagheyder',
 'tog-enotifwatchlistpages' => 'Cur post-l dou tra ta duillag er y rolley arrey aym goll er reaghey',
 'tog-enotifusertalkpages' => 'Cur post-l dou my vees y duillag ymmydeyr aym caghlaa',
 'tog-enotifminoredits' => 'Cur dou post-l er myn-arraghey duillagyn chammah',
@@ -165,7 +164,6 @@ $messages = array(
 'qbedit' => 'Reagh',
 'qbpageoptions' => 'Yn duillag shoh',
 'qbmyoptions' => 'My ghuillagyn',
-'qbspecialpages' => 'Duillagyn er lheh',
 'faq' => 'FC',
 'faqpage' => 'Project:FC',
 
@@ -388,7 +386,7 @@ Myr eiyrtys, cha nod keayrtee lesh yn enmys IP shoh ny smoo coontyssyn noa y chr
 'loginlanguagelabel' => 'Çhengey: $1',
 
 # Change password dialog
-'resetpass' => 'Caghlaa fockle yn arrey',
+'changepassword' => 'Fockle yn arrey y cheaghley',
 'resetpass_header' => 'Caghlaa fockle arrey yn choontys',
 'oldpassword' => 'Shenn-ockle yn arrey:',
 'newpassword' => 'Fockle noa yn arrey:',
@@ -565,10 +563,6 @@ Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
 # Search results
 'searchresults' => 'Eiyrtyssyn y ronsee',
 'searchresults-title' => 'Eiyrtyssyn y ronsee son "$1"',
-'searchresulttext' => 'Son ny smoo oayllys mychione ronsaghtyn er {{SITENAME}}, jeeagh er [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ren oo ronsaghey er \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dagh duillag ta toshiaghey lesh "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dagh duillag ta kianglt rish "$1"]])',
-'searchsubtitleinvalid' => "Ren oo ronsaghey er '''$1'''",
-'notitlematches' => 'Cha nel shen ennym ghuillag erbee',
 'notextmatches' => 'Cha nel shen ry-lhaih er duillag erbee',
 'prevn' => '{{PLURAL:$1|$1}} roish shoh',
 'nextn' => 'nah {{PLURAL:$1|$1}}',
@@ -591,23 +585,17 @@ Ogher: '''({{int:cur}})''' = anchaslyssyn rish y lhieggan t'ayn nish,
 'search-interwiki-default' => '{{PLURAL:$1|$1 eiyrtys|$1 eiyrtys|$1 eiyrtys|$1 eiyrtyssyn}}:',
 'search-interwiki-more' => '(ny smoo)',
 'search-relatedarticle' => 'Bentyn rish',
-'mwsuggest-disable' => 'Lhiettal coyrle AJAX',
 'searchrelated' => 'bentyn rish',
 'searchall' => 'yn clane',
-'nonefound' => "'''Notey''':Cha nel eh ronsaghey dagh reamys gyn reih.
-My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney, clowanyn, a.r.e.), cur ''all:'' ec y toshiaght, ny ennym y reamys reih ayd myr roie-ockle (m.s., ''Clowan:'').",
-'powersearch' => 'Ard-ronsaghey',
 'powersearch-legend' => 'Ard-ronsaghey',
 'powersearch-ns' => 'Ronsee ayns boayl-enmyn:',
 'powersearch-redir' => 'Cur aa-enmyssyn er y rolley',
-'powersearch-field' => 'Ronsee er son',
 'search-external' => 'Ronsaghey mooie',
 
 # Preferences page
 'preferences' => 'Tosheeaghtyn',
 'mypreferences' => 'My hosheeaghtyn',
 'prefs-edits' => 'Earroo caghlaaghyn:',
-'changepassword' => 'Fockle yn arrey y cheaghley',
 'prefs-skin' => 'Crackan',
 'skin-preview' => 'Roie-haishbynys',
 'prefs-beta' => 'Troyn as greieyn beta',
@@ -627,7 +615,6 @@ My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney,
 'savedprefs' => 'Ta dty hosheeaghtyn sauailt.',
 'timezonelegend' => 'Cryss hraa:',
 'localtime' => 'Traa ynnydagh:',
-'timezoneoffset' => 'Ashchlou¹:',
 'timezoneregion-africa' => 'Yn Affrick',
 'timezoneregion-america' => 'America',
 'timezoneregion-antarctica' => 'Yn Antarctagh',
@@ -743,7 +730,6 @@ My bailliu eh y chiarail, bee eh ymmydit son cur gys lieh y chur dhyt er son yn
 'recentchanges-label-newpage' => 'Ren y reaghey shoh croo duillag noa',
 'recentchanges-label-minor' => 'She myn-reaghey eh shoh',
 'recentchanges-label-bot' => 'Ren bot y reaghey shoh',
-'rcnote' => "Ny ta heese, she {{PLURAL:$1|ny '''$1''' caghlaa|yn '''$1''' chaghlaa|ny '''$1''' chaghlaa|ny '''$1''' caghlaaghyn}} s'jerree ayns {{PLURAL:$2|ny '''$2''' laa|yn '''$2''' laa|ny '''$2''' laa|ny '''$2''' laaghyn}} s'jerree, kiart ec $4, $5.",
 'rcnotefrom' => "Shoh heese ny caghlaaghyn veih '''$2''' (gys '''$1''' taishbynit).",
 'rclistfrom' => "Taishbyn ny caghlaaghyn s'noa veih $1",
 'rcshowhideminor' => '{{PLURAL:$1|$1 myn-arraghey|$1 vyn-arraghey|$1 vyn-arraghey|$1 myn-arraghyn}}',
@@ -1100,7 +1086,6 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
 'undeletebtn' => 'Cur er ash',
 'undeletelink' => 'jeeagh/cur er ash',
 'undeleteviewlink' => 'jeeagh',
-'undeletereset' => 'Aahoiaghey',
 'undeletecomment' => 'Fa:',
 'undelete-search-box' => 'Ronsee ny duillagyn scrysst',
 'undelete-search-submit' => 'Ronsee',
@@ -1151,7 +1136,6 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
 'ipadressorusername' => 'Enmys IP ny ennym ymmydeyr:',
 'ipbexpiry' => 'Jerrey:',
 'ipbreason' => 'Fa:',
-'ipbreasonotherlist' => 'Fa elley',
 'ipbreason-dropdown' => '* Oyr glassey cadjin
 ** Inserting false information
 ** Removing content from pages
@@ -1166,8 +1150,6 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
 'ipbsubmit' => 'Glass magh yn ymmydeyr shoh',
 'ipbother' => 'Mooad elley am:',
 'ipboptions' => '2 oor:2 hours,1 laa:1 day,3 laaghyn:3 days,1 hiaghtin:1 week,2 hiaghtin:2 weeks,1 vee:1 month,3 meeghyn:3 months,6 meeghyn:6 months,1 vlein:1 year,neuyerrinagh:infinite',
-'ipbotheroption' => 'elley',
-'ipbotherreason' => 'Fa elley/tooilley:',
 'badipaddress' => 'Enmys IP gyn vree',
 'ipblocklist' => 'Ymmydeyryn fo ghlass',
 'blocklist-reason' => 'Fa:',
@@ -1203,7 +1185,6 @@ She caghlaa trome as doaltattym t'ayn er son duillag mie er enney.  Jean shickyr
 
 Foddee oo y duillag resooney y scughey er lheh ny yei shen.",
 'movearticle' => 'Duillag y scughey:',
-'movenologin' => 'Cha nel oo loggit stiagh',
 'newtitle' => 'Gys ard-ennym noa:',
 'move-watch' => 'Freill arrey er y duillag shoh',
 'movepagebtn' => 'Yn duillag y scughey',
@@ -1211,9 +1192,6 @@ Foddee oo y duillag resooney y scughey er lheh ny yei shen.",
 'movepage-moved' => 'Va \'\'\'"$1" aa-enmyssit myr "$2"\'\'\'',
 'articleexists' => 'Ta duillag ayn lesh yn ennym shen, ny ta ennym mee-chiart reiht ayd.<br />
 Reih ennym elley, my sailliu.',
-'talkexists' => "'''Va'n duillag hene scughit, agh cha nod y duillag resoonaght y scughey er yn oyr dy row fer ec yn enmys shen hannah.<br />
-Jean covestey eddyr oc er laueyn, my sailliu.'''",
-'movedto' => 'aa-enmyssit myr',
 'movetalk' => 'Scugh yn duillag resoonaght eck',
 'movelogpage' => 'Scugh y Lioar chooishyn',
 'movereason' => 'Fa:',
@@ -1405,10 +1383,6 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
 'exif-gpsspeed-k' => "Kilometeryn 'syn oor",
 'exif-gpsspeed-m' => "Meeillaghyn 'syn oor",
 
-# External editor support
-'edit-externally' => 'Reagh yn coadan shoh lesh sheeyntagh mooie',
-'edit-externally-help' => 'Jeeagh er [https://www.mediawiki.org/wiki/Manual:External_editors saraghyn soiaghey seose] son tooilley oayllys.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'yn clane',
 'namespacesall' => 'yn clane',
index c6883f7..653336c 100644 (file)
@@ -41,7 +41,6 @@ $messages = array(
 'tog-shownumberswatching' => "A nuna adadin ma'aikata masu bin sawun wannan shafi",
 'tog-oldsig' => 'Rigya-ganin sa-hannu da ake da shi',
 'tog-fancysig' => 'A ɗauki matanin sa-hannu a matsayin matanin Wiki (ba tare da mahaɗin otomatik ba)',
-'tog-showjumplinks' => 'A lamunta mahaɗan "a tsallaka zuwa"',
 'tog-uselivepreview' => 'A yi amfani da rigya-gani mai sauƙi (ana buƙatar JavaScript) (hajar gwaji)',
 'tog-forceeditsummary' => 'A gargaɗe ni idan na ajiye kangon fili na taƙaitawa',
 'tog-watchlisthideown' => 'A ɓoye sauye-sauyena daga jerin bin sawu',
@@ -135,7 +134,6 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Nemo',
 'qbedit' => 'Gyarawa',
-'qbspecialpages' => 'Shafuna na musamman',
 
 # Vector skin
 'vector-action-delete' => 'Soke',
@@ -175,7 +173,7 @@ $messages = array(
 'jumptonavigation' => 'Shawagi',
 'jumptosearch' => 'nema',
 
-# 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).
+# 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).
 'aboutsite' => 'Game da {{SITENAME}}',
 'aboutpage' => 'Project:Game da',
 'copyright' => 'Bayannai sun samu a ƙarƙashin $1.',
@@ -183,7 +181,6 @@ $messages = array(
 'disclaimers' => 'Hattara',
 'disclaimerpage' => 'Project:Babban gargaɗi',
 'edithelp' => 'Taimako kan gyara',
-'edithelppage' => 'Help:Gyarawa',
 'helppage' => 'Help:Tsaraba',
 'mainpage' => 'Marhabin',
 'privacy' => 'Manufar kare sirri',
@@ -193,8 +190,6 @@ $messages = array(
 
 'retrievedfrom' => 'Daga "$1"',
 'youhavenewmessages' => 'Kuna da $1 ($2).',
-'newmessageslink' => 'sabbin saƙonni',
-'newmessagesdifflink' => 'sauyin ƙarshe',
 'editsection' => 'gyarawa',
 'editold' => 'gyarawa',
 'editlink' => 'gyarawa',
@@ -334,10 +329,6 @@ Fasali: '''({{int:cur}})''' = bambanci da zubi na yanzu, '''({{int:last}})''' =
 # Search results
 'searchresults' => 'Sakamakon bincike',
 'searchresults-title' => 'Sakamakon bincike na "$1"',
-'searchresulttext' => 'Don ƙarin bayani kan binciken {{SITENAME}}, duba [[{{MediaWiki:Helppage}}|{{int:help}}]]',
-'searchsubtitle' => 'Kun nemi \'\'\'[[:$1]]\'\'\'  ([[Special:Prefixindex/$1|duka shafuna masu farawa da "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|duka shafuna masu mahaɗi zuwa "$1"]])',
-'searchsubtitleinvalid' => "Kun nemi '''$1'''",
-'notitlematches' => 'Babu kan shafin da ya dace',
 'notextmatches' => 'Babu wani matanin da ya dace',
 'prevn' => 'baya {{PLURAL:$1|$1}}',
 'nextn' => 'gaba {{PLURAL:$1|$1}}',
@@ -350,13 +341,9 @@ Fasali: '''({{int:cur}})''' = bambanci da zubi na yanzu, '''({{int:last}})''' =
 'search-interwiki-default' => 'Sakamakon $1:',
 'search-interwiki-more' => '(ƙari)',
 'searchall' => 'duka',
-'nonefound' => "'''Hattara''': Galibi wasu sararen suna ƙalilan kawai ake nemowa.
-Ku gwada tare da amfani da \"all:\" don bincikar duka shafunan (har da shafunan muhawara, mulaye, d.s.), ko kuma ku yi amfani da sararin sunan da kuke so.",
-'powersearch' => 'Sahihin nema',
 'powersearch-legend' => 'Sahihin nema',
 'powersearch-ns' => 'Binciki sararen sunaye:',
 'powersearch-redir' => 'Nuna turawa gaba',
-'powersearch-field' => 'Neemo',
 'powersearch-toggleall' => 'Duka',
 
 # Preferences page
@@ -634,9 +621,6 @@ A waɗannan halaye, dole ku gusar ko ku game shafin da hannu, idan kuna so.",
 'movepage-moved' => '\'\'\'"$1" an gusar da shi zuwa "$2"\'\'\'',
 'articleexists' => 'Akwai wani shafi mai wannan suna, koko sunan da kuka zaɓa ba shi da tasiri.
 Don Allah ku zaɓi wani suna.',
-'talkexists' => "'''An gusar da shafin shi kansa, amma an kasa gusar da dangantaccen shafin muhawarar, don akwai wani sahfin mai amfani da sunansa.
-Don Allah ku game su da hannu.'''",
-'movedto' => 'an gusar zuwa',
 'movetalk' => 'Gusar da shafin mahawara mai alaƙa',
 'movelogpage' => 'Rajistan gushe-gushe',
 'movereason' => 'Dalili:',
@@ -747,10 +731,6 @@ Idan an sauya fayil kin, to wasu bayannan na ainahi ba za su fito ba sosai a cik
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Gyara wannan fayil da wani safuwai daban',
-'edit-externally-help' => '(Duba [//www.mediawiki.org/wiki/Manual:External_editors bayannan shimfiɗawa] don ƙarin bayani)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'duka',
 'namespacesall' => 'duka',
index a2411b4..20d961f 100644 (file)
@@ -16,6 +16,8 @@
  * @author Xiaomingyan
  */
 
+$fallback = 'zh-hant';
+
 $messages = array(
 # User preference toggles
 'tog-underline' => '鏈接加底線:',
@@ -39,7 +41,6 @@ $messages = array(
 'tog-minordefault' => '默認標記全部編寫為細微修改',
 'tog-previewontop' => '在編寫框上頭顯示預覽',
 'tog-previewonfirst' => '第一擺編寫時顯示預覽',
-'tog-nocache' => '停用瀏覽器嘅頁面緩存',
 'tog-enotifwatchlistpages' => '亻厓監視列表肚嘅頁面或文件有更動時,發電子郵件分亻厓',
 'tog-enotifusertalkpages' => '亻厓嘅交流頁有更改時,發電子郵件分亻厓',
 'tog-enotifminoredits' => '頁面撈文件嘅細修改也發電子郵件分我',
@@ -174,7 +175,6 @@ $messages = array(
 'qbedit' => '編寫',
 'qbpageoptions' => '頁面選項',
 'qbmyoptions' => '𠊎嘅頁面',
-'qbspecialpages' => '特殊頁面',
 'faq' => '常見問題解答',
 'faqpage' => 'Project:常見問題解答',
 
@@ -385,9 +385,6 @@ $1',
 'perfcachedts' => '下列係緩存數據,其最後更新時間係$1。單淨有{{PLURAL:$4|一嘅結果|$4嘅結果}}會畀顯示。',
 'querypage-no-updates' => '當前禁止對邇頁面進行更新。
 邇位嘅數據將做毋得分立即重新整理。',
-'wrong_wfQuery_params' => '有錯嘅參數分傳遞到wfQuery()<br />
-函數:$1<br />
-查詢:$2',
 'viewsource' => '查看源碼',
 'viewsource-title' => '查看$1嘅源代碼',
 'actionthrottled' => '動作已經壓制',
@@ -548,7 +545,7 @@ $2',
 'user-mail-no-body' => '試圖發送空嘅或主體毋合理短嘅電子郵件。',
 
 # Change password dialog
-'resetpass' => '更改密碼',
+'changepassword' => '更改密碼',
 'resetpass_announce' => '汝係通過一隻發送到電子郵件肚嘅臨時代碼登入的。愛完成登入,汝必須在邇位設定一隻新密碼:',
 'resetpass_text' => '<!-- 在邇處加入文字 -->',
 'resetpass_header' => '更改賬戶密碼',
@@ -816,8 +813,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'revdelete-success' => "'''Siû-thin ke khó-kien-sin yí-kîn sṳ̀n-kûng sat-thin.'''",
 'logdelete-success' => "'''事件嘅可見性已經成功設定。'''",
 'revdel-restore' => '更改可見性',
-'revdel-restore-deleted' => '已刪除嘅修訂版本',
-'revdel-restore-visible' => '見得到嘅修訂版本',
 'pagehist' => '頁面歷史',
 'deletedhist' => '已刪除嘅歷史',
 
@@ -844,11 +839,7 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 # Search results
 'searchresults' => '搜尋結果',
 'searchresults-title' => '搜尋"$1"嘅結果',
-'searchresulttext' => '有關搜尋{{SITENAME}}嘅又較多詳情,參詳[[{{MediaWiki:Helppage}}|{{int:help}}]]。',
-'searchsubtitle' => 'Chhà-sûn $1 (só-yû yî "$1" khôi-thèu ke ya̍p • só-yû lièn-chiap to "$1" ke ya̍p)',
-'searchsubtitleinvalid' => "搜尋'''$1'''",
 'titlematches' => '頁面標題相符',
-'notitlematches' => '找毋到配得上嘅頁面題目',
 'textmatches' => '頁面內容配得上',
 'notextmatches' => '無頁面內容配上',
 'prevn' => '前頭$1隻',
@@ -882,20 +873,16 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'showingresults' => "Ha-mien hién-sṳ chhiùng thi-'''$2'''-thiàu khôi-sṳ́ ke '''$1'''-thiàu kiet-kó:",
 'showingresultsnum' => "下背展示從第'''$2'''條開始嘅'''{{PLURAL:$3|1|$3}}'''條結果。",
 'showingresultsheader' => "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''隻結果|第'''$1 - $2'''隻,共'''$3'''隻結果}}",
-'nonefound' => '<strong>Chu-yi:</strong> Sṳt-phai ke sêu-chhà vông-vông he chhut-yì chhṳ-thù sêu-chhà chû-yì "ke" fe̍t-chá "lâu" chṳ̂-lui ke sòng-kien-sṳ só yîn-hí.',
 'search-nonefound' => '在查詢肚無結果相符。',
-'powersearch' => '高級搜尋',
 'powersearch-legend' => '高級搜尋',
 'powersearch-ns' => '在下背嘅名字空間肚搜尋:',
 'powersearch-redir' => '重定向清單',
-'powersearch-field' => '搜尋',
 'powersearch-togglelabel' => '監查:',
 'searchdisabled' => '{{SITENAME}}由於性能方面嘅原因,全文搜已分暫時停用。汝做得暫時通過Google搜尋。請留意佢兜嘅索引可能會過時。',
 
 # Preferences page
 'preferences' => '偏好設定',
 'mypreferences' => '偏好設定',
-'changepassword' => '更改密碼',
 'prefs-skin' => '外皮',
 'skin-preview' => '預覽',
 'datedefault' => '預設值',
@@ -907,10 +894,9 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'prefs-watchlist-edits' => '擴展監視列表肚顯示更改次數上限:',
 'prefs-misc' => '雜項',
 'saveprefs' => '保存',
-'resetprefs' => 'Sat-thin',
 'restoreprefs' => '恢復所有默認設定',
 'prefs-editing' => '編寫緊',
-'rows' => '行:',
+'rows' => '行:',
 'columns' => '列:',
 'searchresultshead' => '搜尋',
 'resultsperpage' => '每頁顯示鏈接數:',
@@ -920,7 +906,6 @@ Liá-chhṳ chhà-fûng he yù $1 só fûng ke. Tông-chûng ke ngièn-yîn he '
 'savedprefs' => '汝嘅個人偏好設定已經保存。',
 'timezonelegend' => 'Sṳ̀-khî',
 'localtime' => 'Tông-thi sṳ̀-kiên',
-'timezoneoffset' => 'Sṳ̀-chhâ¹',
 'servertime' => 'Fu̍k-vu hi-khí sṳ̀-kiên',
 'guesstimezone' => '從瀏覽器填寫',
 'allowemail' => '接受來自其他用戶嘅郵件',
@@ -993,7 +978,6 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
 'recentchanges-label-minor' => '邇係一隻細微修改',
 'recentchanges-label-bot' => '邇次編寫係由機器人進行',
 'recentchanges-label-unpatrolled' => '邇次編寫還吂巡查過',
-'rcnote' => "下背係在$4 $5,最近'''$2'''日內嘅'''$1'''次最近更改記錄。",
 'rcnotefrom' => "下背係從'''$2'''起嘅更改(最多展示'''$1'''):",
 'rclistfrom' => '展示從$1以來嘅新更改',
 'rcshowhideminor' => '$1細微編寫',
@@ -1207,7 +1191,6 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
 'deadendpages' => '斷鏈頁面',
 'deadendpagestext' => 'Yî-ha vùn-chông mò-yû pûn lièn-kiet to liá-ke wiki chûng ke khì-thâ vùn-chông:',
 'protectedpages' => '受保護頁面',
-'protectedpagestext' => '以下頁面已經受保護以防止移動或編寫',
 'protectedpagesempty' => '在邇兜參數下無頁面保護緊。',
 'listusers' => '用戶列表',
 'usercreated' => '$1 $2{{GENDER:$3|建立}}',
@@ -1246,9 +1229,6 @@ Tshòng-tón pit-sî chhai $1-ke sṳ-ngièn yî-ha.',
 'allpagesto' => '顯示從邇位結束嘅頁面:',
 'allarticles' => '全部頁面',
 'allinnamespace' => '所有頁面(屬於$1名字空間)',
-'allnotinnamespace' => '所有頁面(毋屬於$1名字空間)',
-'allpagesprev' => '前',
-'allpagesnext' => '後',
 'allpagessubmit' => '提交',
 'allpagesprefix' => '顯示有邇前綴(名字空間)嘅頁面:',
 'allpagesbadtitle' => '分定嘅頁面標題係非法嘅,或者有一隻內部語言或內部wiki嘅前綴。其可能包含一隻或還較多毋做得用於標題嘅字符。',
@@ -1433,7 +1413,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'undeletebtn' => '恢復',
 'undeletelink' => '查看/恢復',
 'undeleteviewlink' => '查看',
-'undeletereset' => '重設',
 'undeletecomment' => 'Ngièn-yîn:',
 'undeletedrevisions' => '$1隻修訂版本已經恢復',
 'undeletedrevisions-files' => '$1隻版本撈$2隻文件分恢復',
@@ -1500,7 +1479,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'ipadressorusername' => 'IP地址或用戶名:',
 'ipbexpiry' => '期限:',
 'ipbreason' => '原因:',
-'ipbreasonotherlist' => '其他理由',
 'ipbreason-dropdown' => '*一般嘅封禁理由
 ** 多次加入虛假資料
 ** 刪除頁面內容
@@ -1514,8 +1492,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'ipbsubmit' => '查封邇用戶',
 'ipbother' => '其它時間:',
 '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',
-'ipbotheroption' => '其他',
-'ipbotherreason' => '其他/附加理由:',
 'ipbhidename' => 'Chhai chhà-fûng ngit-ki, fa̍t-chhiok chhà-fûng lie̍t-péu yî-khi̍p yung-fu lie̍t-péu chûng yún-chhòng yung-fu-miàng.',
 'badipaddress' => '無效IP地址',
 'blockipsuccesssub' => '查封成功',
@@ -1597,7 +1573,6 @@ chhiáng chhai hàng-thung chṳ̂-chhièn siên liáu-kié khì-thâ khó-nèn
 *Sîn vùn-chông yí-kîn yû yit-ke pâu-hàm nui-yùng ke tui-fa-hiong, fe̍t-he
 *Ngì put kiêu-sién ha-mien ke fu̍k-sién khiông. Chhai liá-chúng chhìn-khóng hâ, pit-sî sú-kûng yì-thung fe̍t-he ha̍p-phîn vùn-chông.",
 'movearticle' => 'Yì-thung vùn-chông',
-'movenologin' => 'Hàn-mò tên-ngi̍p',
 'movenologintext' => 'Ngì pit-sî he yit-miàng tên-ki yung-fu pin-chhiâ [[Special:UserLogin|tên-ngi̍p]] heu chhòi-nèn Yì-thung yit-ke vùn-chông.',
 'newtitle' => '新標題:',
 'move-watch' => 'Kam-sṳ chhṳ́-chông',
@@ -1605,8 +1580,6 @@ chhiáng chhai hàng-thung chṳ̂-chhièn siên liáu-kié khì-thâ khó-nèn
 'pagemovedsub' => 'Yì-thung sṳ̀n-kûng',
 'movepage-moved' => '\'\'\'"$1" yí-kîn pûn yì-thung to "$2"\'\'\'',
 'articleexists' => 'Ke miàng-sṳ ke hong-mien yí-kîn chhùn-chhai, fe̍t-chá ngì sién-chet ke miàng-sṳ mò-háu. Chhiáng chai-hi sién yit-ke miàng-sṳ.',
-'talkexists' => '頁面本身移動成功,參過由於新標題下已經有交流頁存在,故所對話交流頁無法移動。請手工合併兩隻頁面。',
-'movedto' => 'yì-thung to',
 'movetalk' => 'Chhiáng thùng-sṳ̀ yì-thung tui-fa-chông',
 'movelogpage' => '移動日誌',
 'movelogpagetext' => 'Yî-ha he yí-kîn yì-thung ke vùn-chông chhîn-tân.',
@@ -1847,15 +1820,10 @@ Please visit [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisation
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => '用外部應用程序編寫本文件',
-'edit-externally-help' => '(請參詳[https://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
 'monthsall' => '全部',
-'limitall' => '全部',
 
 # Email address confirmation
 'confirmemail' => '確認電郵地址',
@@ -1873,7 +1841,6 @@ Email chhòn-sung-yèn fì-yin: $1',
 'confirmemail_needlogin' => 'Ngì sî-yeu $1 yî khok-ngin ngì-ke sin-siông thi-tiám.',
 'confirmemail_success' => 'Ngì-ke sin-siông yí-kîn pûn khok-ngin. Ngì hien-ha khó-yî tên-liu̍k pin sṳ́-yung chhṳ́ mióng-chham liáu.',
 'confirmemail_loggedin' => 'Ngì-ke sin-siông thi-tiám hien-ha yí-kîn pûn khok-ngin.',
-'confirmemail_error' => 'Ngì-ke khok-ngin ko-chhàng fat-sên chho-ngu.',
 'confirmemail_subject' => '{{SITENAME}} sin-siông thi-tiám khok-ngin',
 'confirmemail_body' => 'Yúng-yû IP thi-tiám $1 ke yung-fu (khó-nèn he ngì) chhai {{SITENAME}} chhóng-chho liáu chong-fu  "$2", pin thì-kâu liáu ngì-ke email sin-siông thi-tiám.
 
index 13d61b5..7ba43b1 100644 (file)
@@ -193,7 +193,6 @@ $messages = array(
 'qbedit' => 'E ho‘ololi',
 'qbpageoptions' => 'Kēia ‘ao‘ao',
 'qbmyoptions' => 'Ka‘u mau ‘ao‘ao',
-'qbspecialpages' => 'Nā ‘ao‘ao kūikawā',
 
 # Vector skin
 'vector-action-delete' => 'E holoi',
@@ -359,6 +358,7 @@ E ʻoluʻolu, e kūlia hou.',
 'loginlanguagelabel' => "Kou 'ōlelo: $1",
 
 # Change password dialog
+'changepassword' => 'E loli i ka palapala hua‘ōlelo',
 'newpassword' => 'ʻŌlelo hūnā hou:',
 'changepassword-success' => 'Ua loli ‘ia kāu hua‘ōlelo huna! E ‘e‘e iā‘oe...',
 
@@ -454,10 +454,6 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 # Search results
 'searchresults' => 'Nā hualoaʻa',
 'searchresults-title' => 'Nā hualoaʻa no "$1"',
-'searchresulttext' => 'No kekahi ʻike hou aku e pili ana i ka huli ʻana iā {{SITENAME}}, kele i [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ua huli ʻoe no \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|nā ʻaoʻao a pau i hoʻomaka me "$1"]]{{int:pipe-separator}} [[Special:WhatLinksHere/$1|nā ʻaoʻao a pau e loulou ai i "$1"]])',
-'searchsubtitleinvalid' => "Ua huli ʻoe iā '''$1'''",
-'notitlematches' => 'ʻAʻohe inoa ʻaoʻao e like me ka huli ʻana',
 'prevn' => '{{PLURAL:$1|$1}} ma mua',
 'nextn' => '{{PLURAL:$1|$1}} ma hope',
 'viewprevnext' => 'Nānā i nā ($1 {{int:pipe-separator}} $2) ($3)',
@@ -466,15 +462,12 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 'search-suggest' => 'ʻO kēia paha kou manaʻo: $1',
 'search-interwiki-caption' => 'Nā pāhana ʻē aʻe',
 'searchall' => 'apau',
-'powersearch' => 'Hulina kūlana kiʻekiʻe',
 'powersearch-legend' => 'Hulina kūlana kiʻekiʻe',
 'powersearch-ns' => 'Huli i loko o nā wahi inoa:',
-'powersearch-field' => 'Huli no',
 
 # Preferences page
 'preferences' => 'Kaʻu makemake',
 'mypreferences' => 'Ka‘u makemake',
-'changepassword' => 'E loli i ka palapala hua‘ōlelo',
 'prefs-skin' => 'ʻIli',
 'skin-preview' => 'Nāmua',
 'datedefault' => 'ʻAʻohe makemake',
@@ -528,7 +521,6 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|loli|mau loli}}',
 'recentchanges' => 'Nā loli hou',
-'rcnote' => "ʻO {{PLURAL:$1|ka loli '''1'''|nā loli hope '''$1'''}} ma hope mai {{PLURAL:$2|ka lā hoʻokahi|nā lā '''$2'''}} ma hope, ma $5, $4.",
 'rcshowhideminor' => '$1 i nā ho‘opololei iki',
 'rcshowhidebots' => '$1 i nā lopako',
 'rcshowhideliu' => '$1 i nā mea hoʻohana i ʻeʻe ai',
@@ -614,8 +606,6 @@ E ʻoluʻolu, e hōʻoia i ka hoʻokūkū ʻana i lalo, a laila, e mālama i nā
 'nextpage' => 'Mea aʻe ($1)',
 'prevpage' => 'Mea ma mua aʻe ($1)',
 'allarticles' => 'Nā mo‘olelo apau loa',
-'allpagesprev' => 'Mua',
-'allpagesnext' => 'Hope',
 'allpagessubmit' => 'E huli',
 
 # Special:Categories
@@ -743,7 +733,6 @@ E ʻike iā $2 no ka papa o nā kāpae ʻana hou.',
 'movepagebtn' => 'Hoʻoneʻe i ka ʻaoʻao',
 'pagemovedsub' => 'Kūleʻa ka hoʻoneʻe ʻana',
 'movepage-moved' => '\'\'\'Ua hoʻoneʻe ʻia ʻo "$1" iā "$2"\'\'\'',
-'movedto' => 'ua neʻe ʻia i/iā',
 'movereason' => 'Kumu:',
 'delete_and_move' => 'E kāpae a e ho‘ololi i ka inoa',
 'delete_and_move_confirm' => '‘Ae, e kāpae i ka ‘ao‘ao',
@@ -813,9 +802,6 @@ Hiki iā ʻoe ke ʻikena i kāna molekumu.',
 # Special:NewFiles
 'ilsubmit' => 'Huli',
 
-# External editor support
-'edit-externally-help' => '(E ʻike i nā [https://www.mediawiki.org/wiki/Manual:External_editors aʻo palapala no ka hoʻokuene ʻana])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'apau',
 'namespacesall' => 'apau',
index af26210..c70efba 100644 (file)
@@ -66,12 +66,12 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'משתמשים_פעילים' ),
        'Allmessages'               => array( 'הודעות_המערכת' ),
+       'AllMyUploads'              => array( 'כל_ההעלאות_שלי' ),
        'Allpages'                  => array( 'כל_הדפים' ),
        'Ancientpages'              => array( 'דפים_מוזנחים' ),
        'Badtitle'                  => array( 'כותרת_שגויה' ),
        'Blankpage'                 => array( 'דף_ריק' ),
        'Block'                     => array( 'חסימה', 'חסימת_כתובת', 'חסימת_משתמש' ),
-       'Blockme'                   => array( 'חסום_אותי' ),
        'Booksources'               => array( 'משאבי_ספרות', 'משאבי_ספרות_חיצוניים' ),
        'BrokenRedirects'           => array( 'הפניות_לא_תקינות', 'הפניות_שבורות' ),
        'Categories'                => array( 'קטגוריות', 'רשימת_קטגוריות' ),
@@ -83,10 +83,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'הרשמה_לחשבון' ),
        'Deadendpages'              => array( 'דפים_ללא_קישורים' ),
        'DeletedContributions'      => array( 'תרומות_מחוקות' ),
-       'Disambiguations'           => array( 'פירושונים', 'דפי_פירושונים' ),
        'DoubleRedirects'           => array( 'הפניות_כפולות' ),
        'EditWatchlist'             => array( 'עריכת_רשימת_המעקב' ),
        'Emailuser'                 => array( 'שליחת_דואר_למשתמש' ),
+       'ExpandTemplates'           => array( 'פריסת_תבניות' ),
        'Export'                    => array( 'ייצוא', 'ייצוא_דפים' ),
        'Fewestrevisions'           => array( 'הגרסאות_המעטות_ביותר', 'הדפים_בעלי_מספר_העריכות_הנמוך_ביותר' ),
        'FileDuplicateSearch'       => array( 'חיפוש_קבצים_כפולים' ),
@@ -131,10 +131,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'דפים_מוגנים' ),
        'Protectedtitles'           => array( 'כותרות_מוגנות' ),
        'Randompage'                => array( 'אקראי', 'דף_אקראי' ),
+       'RandomInCategory'          => array( 'דף_אקראי_בקטגוריה' ),
        'Randomredirect'            => array( 'הפניה_אקראית' ),
        'Recentchanges'             => array( 'שינויים_אחרונים' ),
        'Recentchangeslinked'       => array( 'שינויים_בדפים_המקושרים' ),
        'Redirect'                  => array( 'הפניה' ),
+       'ResetTokens'               => array( 'איפוס_אסימונים' ),
        'Revisiondelete'            => array( 'מחיקת_ושחזור_גרסאות' ),
        'Search'                    => array( 'חיפוש' ),
        'Shortpages'                => array( 'דפים_קצרים' ),
@@ -154,7 +156,7 @@ $specialPageAliases = array(
        'Unwatchedpages'            => array( 'דפים_שאינם_במעקב' ),
        'Upload'                    => array( 'העלאה', 'העלאת_קובץ_לשרת' ),
        'UploadStash'               => array( 'מאגר_העלאות' ),
-       'Userlogin'                 => array( 'כניסה_לחשבון', 'כניסה', 'כניסה_/_הרשמה_לחשבון' ),
+       'Userlogin'                 => array( 'כניסה_לחשבון', 'כניסה' ),
        'Userlogout'                => array( 'יציאה_מהחשבון', 'יציאה' ),
        'Userrights'                => array( 'ניהול_הרשאות_משתמש', 'הפיכת_משתמש_למפעיל_מערכת', 'הענקת_או_ביטול_הרשאת_בוט' ),
        'Version'                   => array( 'גרסה', 'גרסת_התוכנה' ),
@@ -374,7 +376,7 @@ $messages = array(
 'tog-showtoolbar' => 'הצגת סרגל העריכה',
 'tog-editondblclick' => 'עריכת דפים בלחיצה כפולה',
 'tog-editsection' => 'עריכת פסקאות באמצעות קישורי [עריכה]',
-'tog-editsectiononrightclick' => 'ער×\99×\9bת ×¤×¡×§×\90×\95ת ×¢×\9c ×\99×\93×\99 לחיצה ימנית על כותרות הפסקאות',
+'tog-editsectiononrightclick' => 'ער×\99×\9bת ×¤×¡×§×\90×\95ת ×\91×\90×\9eצע×\95ת לחיצה ימנית על כותרות הפסקאות',
 'tog-showtoc' => 'הצגת תוכן עניינים (עבור דפים עם יותר מ־3 כותרות)',
 'tog-rememberpassword' => 'שמירת הכניסה שלי בדפדפן זה ({{PLURAL:$1|ליום אחד|ליומיים|ל־$1 ימים}} לכל היותר)',
 'tog-watchcreations' => 'מעקב אחרי דפים שיצרתי וקבצים שהעליתי',
@@ -384,7 +386,6 @@ $messages = array(
 'tog-minordefault' => 'הגדרת כל פעולת עריכה כמשנית אם לא צוין אחרת',
 'tog-previewontop' => 'הצגת תצוגה מקדימה לפני תיבת העריכה',
 'tog-previewonfirst' => 'הצגת תצוגה מקדימה בעריכה ראשונה',
-'tog-nocache' => 'מניעת אחסון הדפים בזיכרון המטמון בדפדפן',
 'tog-enotifwatchlistpages' => 'לשלוח אליי דואר אלקטרוני כאשר משתנה דף או קובץ ברשימת המעקב שלי',
 'tog-enotifusertalkpages' => 'לשלוח אליי דואר אלקטרוני כאשר נעשה שינוי בדף שיחת המשתמש שלי',
 'tog-enotifminoredits' => 'לשלוח אליי דואר אלקטרוני גם על עריכות משניות של דפים וקבצים',
@@ -463,8 +464,8 @@ $messages = array(
 'mar' => 'מרץ',
 'apr' => "אפר'",
 'may' => 'מאי',
-'jun' => 'יוני',
-'jul' => 'יולי',
+'jun' => "יונ'",
+'jul' => "יול'",
 'aug' => "אוג'",
 'sep' => "ספט'",
 'oct' => "אוק'",
@@ -520,7 +521,6 @@ $messages = array(
 'qbedit' => 'עריכה',
 'qbpageoptions' => 'אפשרויות דף',
 'qbmyoptions' => 'האפשרויות שלי',
-'qbspecialpages' => 'דפים מיוחדים',
 'faq' => 'שאלות ותשובות',
 'faqpage' => 'Project:שאלות ותשובות',
 
@@ -683,12 +683,12 @@ $1',
 # Main script and global functions
 'nosuchaction' => 'אין פעולה כזו',
 'nosuchactiontext' => 'הפעולה שצוינה בכתובת ה־URL אינה תקינה.
-ייתכן שטעיתם בהקלדת ה־URL, או שהשתמשתם בקישור לא נכון.
+ייתכן שטעית בהקלדת ה־URL, או שהשתמשת בקישור לא נכון.
 ייתכן גם שהבעיה נוצרה כתוצאה מבאג בתוכנה המשמשת את {{SITENAME}}.',
 'nosuchspecialpage' => 'אין דף מיוחד בשם זה',
-'nospecialpagetext' => '<strong>ביקשתם דף מיוחד שאינו קיים.</strong>
+'nospecialpagetext' => '<strong>ביקשת דף מיוחד שאינו קיים.</strong>
 
-ר×\90×\95 ×\90ת [[Special:SpecialPages|רש×\99×\9eת ×\94×\93פ×\99×\9d ×\94×\9e×\99×\95×\97×\93×\99×\9d ×\94תק×\99× ×\99×\9d]].',
+רש×\99×\9e×\94 ×©×\9c ×\94×\93פ×\99×\9d ×\94×\9e×\99×\95×\97×\93×\99×\9d ×\94ק×\99×\99×\9e×\99×\9d × ×\99ת×\9f ×\9c×\9eצ×\95×\90 ×\91×\93×£ [[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
 'error' => 'שגיאה',
@@ -739,15 +739,12 @@ $1',
 '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' => '×\91×\90פשר×\95ת×\9b×\9d לצפות בטקסט המקור של הדף ולהעתיקו:',
+'viewsourcetext' => '×\91×\90פשר×\95ת×\9a לצפות בטקסט המקור של הדף ולהעתיקו:',
 'viewyourtext' => "באפשרותכם לצפות בטקסט המקור של '''העריכות שלכם''' של הדף ולהעתיקו:",
 'protectedinterface' => 'דף זה הוא אחד מסדרת דפים המספקים הודעות מערכת לתוכנה באתר ויקי זה, ומוגן כדי למנוע השחתות.
 כדי להוסיף או לשנות תרגומים בכל אתרי הוויקי, אנא השתמשו ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.',
@@ -802,7 +799,7 @@ $2',
 'userlogin-remembermypassword' => 'לזכור שנכנסתי',
 'userlogin-signwithsecure' => 'שימוש בחיבור מאובטח',
 'yourdomainname' => 'המתחם שלך:',
-'password-change-forbidden' => '×\90×\99× ×\9b×\9d ×\99×\9b×\95×\9c×\99×\9d לשנות סיסמאות באתר זה.',
+'password-change-forbidden' => '×\90×\99×\9f ×\91×\90פשר×\95ת×\9a לשנות סיסמאות באתר זה.',
 'externaldberror' => 'הייתה שגיאה בבסיס הנתונים של ההזדהות, או שאינכם רשאים לעדכן את חשבונכם החיצוני.',
 'login' => 'כניסה לחשבון',
 'nav-login-createaccount' => 'כניסה לחשבון / הרשמה',
@@ -814,7 +811,7 @@ $2',
 'notloggedin' => 'לא בחשבון',
 'userlogin-noaccount' => 'אין לך חשבון?',
 'userlogin-joinproject' => 'הצטרפות ל{{grammar:תחילית|{{SITENAME}}}}',
-'nologin' => '×\90×\99×\9f ×\9c×\9b×\9d חשבון? $1.',
+'nologin' => '×\90×\99×\9f ×\9c×\9a חשבון? $1.',
 'nologinlink' => 'הרשמה',
 'createaccount' => 'יצירת חשבון חדש',
 'gotaccount' => 'כבר נרשמתם? $1.',
@@ -860,23 +857,23 @@ $2',
 אנא הפעילו אותן מחדש ונסו שוב.',
 'nocookiesfornew' => 'חשבון המשתמש לא נוצר, כיוון שלא יכולנו לוודא את מקורו.
 ודאו שהעוגיות מופעלות בדפדפן שלכם, העלו מחדש דף זה ונסו שוב.',
-'noname' => 'לא הכנסתם שם משתמש תקין',
+'noname' => 'לא הכנסת שם משתמש תקין',
 'loginsuccesstitle' => 'הכניסה הושלמה בהצלחה',
 'loginsuccess' => "'''נכנסת ל{{grammar:תחילית|{{SITENAME}}}} בשם \"\$1\".'''",
 'nosuchuser' => 'אין משתמש בשם "$1".
 אנא ודאו שהאיות נכון (כולל אותיות רישיות וקטנות), או [[Special:UserLogin/signup|צרו חשבון חדש]].',
 'nosuchusershort' => 'אין משתמש בשם "$1".
 אנא ודאו שהאיות נכון.',
-'nouserspecified' => '×¢×\9c×\99×\9b×\9d לציין שם משתמש.',
+'nouserspecified' => '×\99ש לציין שם משתמש.',
 'login-userblocked' => 'משתמש זה חסום. אינכם מורשים להיכנס לחשבון.',
 'wrongpassword' => 'הסיסמה שהקלדתם שגויה.
 אנא נסו שוב.',
 'wrongpasswordempty' => 'הסיסמה שהקלדתם ריקה.
 אנא נסו שוב.',
 'passwordtooshort' => 'סיסמאות חייבות להיות באורך {{PLURAL:$1|תו אחד|$1 תווים}} לפחות.',
-'password-name-match' => 'ס×\99ס×\9eת×\9b×\9d ×\97×\99×\99×\91ת ×\9c×\94×\99×\95ת ×©×\95× ×\94 ×\9eש×\9d ×\94×\9eשת×\9eש ×©×\9c×\9b×\9d.',
+'password-name-match' => 'ס×\99ס×\9eת×\9a ×\97×\99×\99×\91ת ×\9c×\94×\99×\95ת ×©×\95× ×\94 ×\9eש×\9d ×\94×\9eשת×\9eש ×©×\9c×\9a.',
 'password-login-forbidden' => 'השימוש בשם המשתמש והסיסמה האלה נאסר.',
-'mailmypassword' => 'ש×\9c×\97×\95 ×\9c×\99 ×¡×\99ס×\9e×\94 ×\97×\93שה',
+'mailmypassword' => '×\90×\99פ×\95ס ×¡×\99ס×\9eה',
 'passwordremindertitle' => 'סיסמה זמנית חדשה מ{{grammar:תחילית|{{SITENAME}}}}',
 'passwordremindertext' => 'מישהו (ככל הנראה אתם, מכתובת ה־IP מספר $1) ביקש סיסמה
 חדשה לכניסה לחשבון ב{{GRAMMAR:תחילית|{{SITENAME}}}} ($4). נוצרה סיסמה זמנית למשתמש "$2",
@@ -885,13 +882,13 @@ $2',
 
 עליכם להיכנס לאתר ולשנות את סיסמתכם בהקדם האפשרי. אם מישהו אחר ביקש סיסמה חדשה זו או אם נזכרתם בסיסמתכם
 ואינכם רוצים עוד לשנות אותה, באפשרותכם להתעלם מהודעה זו ולהמשיך להשתמש בסיסמתכם הישנה.',
-'noemail' => 'לא רשומה כתובת דואר אלקטרוני עבור המשתמש "$1".',
-'noemailcreate' => '×¢×\9c×\99×\9b×\9d לספק כתובת דואר אלקטרוני תקינה.',
+'noemail' => 'לא רשומה כתובת דואר אלקטרוני עבור ה{{GENDER:$1|משתמש|משתמשת}} "$1".',
+'noemailcreate' => '×\99ש לספק כתובת דואר אלקטרוני תקינה.',
 'passwordsent' => 'סיסמה חדשה נשלחה לכתובת הדואר האלקטרוני הרשומה עבור "$1".
 אנא היכנסו חזרה לאתר אחרי שתקבלו אותה.',
 'blocked-mailpassword' => 'כתובת ה־IP שלכם חסומה מעריכה, ולפיכך אינכם מורשים להשתמש באפשרות שחזור הסיסמה כדי למנוע ניצול לרעה של התכונה.',
 'eauthentsent' => 'דוא"ל אימות נשלח לכתובת הדוא"ל שצוינה.
\9cפנ×\99 ×©×\93×\91ר×\99 ×\93×\95×\90\9c ×\90×\97ר×\99×\9d ×\99×\99ש×\9c×\97×\95 ×\9c×\97ש×\91×\95×\9f ×\94×\96×\94, ×\99×\94×\99×\94 ×¢×\9c×\99×\9a ×\9cפע×\95×\9c ×\9cפ×\99 ×\94×\94×\95ר×\90×\95ת ×\91×\93×\95×\90\9c, ×\9b×\93×\99 ×\9c×\90שר ×©×\94×\97ש×\91×\95×\9f ×\90×\9b×\9f ×©×\99×\99×\9a ×\9c×\9a.',
\9cפנ×\99 ×©×\93×\91ר×\99 ×\93×\95×\90\9c ×\90×\97ר×\99×\9d ×\99×\99ש×\9c×\97×\95 ×\9c×\97ש×\91×\95×\9f ×\94×\96×\94, ×\99×\94×\99×\94 ×¢×\9c×\99×\9b×\9d ×\9cפע×\95×\9c ×\9cפ×\99 ×\94×\94×\95ר×\90×\95ת ×\91×\93×\95×\90\9c, ×\9b×\93×\99 ×\9c×\90שר ×©×\94×\97ש×\91×\95×\9f ×\90×\9b×\9f ×©×\99×\99×\9a ×\9c×\9b×\9d.',
 'throttled-mailpassword' => 'כבר נשלח דוא"ל לאיפוס הסיסמה ב{{PLURAL:$1|שעה האחרונה|שעתיים האחרונות|־$1 השעות האחרונות}}.
 כדי למנוע ניצול לרעה, יכול להישלח רק דוא"ל אחד כזה בכל {{PLURAL:$1|שעה|שעתיים|$1 שעות}}.',
 'mailerror' => 'שגיאה בשליחת דואר: $1',
@@ -900,7 +897,7 @@ $2',
 'emailauthenticated' => 'כתובת הדוא"ל שלך אומתה ב־$3, $2.',
 'emailnotauthenticated' => 'כתובת הדוא"ל שלכם עדיין לא אומתה.
 לא יישלח אליכם דוא"ל עבור אף אחת מהתכונות הבאות.',
-'noemailprefs' => '×\90× ×\90 ×¦×\99×\99× ×\95 ×\9bת×\95×\91ת ×\93×\95×\90\9c ×\91×\94×¢×\93פ×\95ת ×©×\9c×\9b×\9d כדי שתכונות אלה יעבדו.',
+'noemailprefs' => '×\99ש ×\9cצ×\99×\99×\9f ×\9bת×\95×\91ת ×\93×\95×\90\9c ×\91×\94×¢×\93פ×\95ת ×©×\9c×\9a כדי שתכונות אלה יעבדו.',
 'emailconfirmlink' => 'אישור כתובת הדוא"ל שלך',
 'invalidemailaddress' => 'כתובת הדוא"ל אינה מתקבלת כיוון שנראה שהיא בפורמט לא נכון.
 אנא הקלידו כתובת תקינה או השאירו את השדה ריק.',
@@ -917,7 +914,7 @@ $2',
 אנא המתינו $1 לפני שתנסו שוב.',
 'login-abort-generic' => 'הכניסה לחשבון לא הצליחה - היא הופסקה',
 'loginlanguagelabel' => 'שפה: $1',
-'suspicious-userlogout' => '×\91קשת×\9b×\9d ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ×©×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9c ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
+'suspicious-userlogout' => '×\91קשת×\9a ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ×©×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9cÖ¾ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
 'createacct-another-realname-tip' => 'השם האמיתי הוא אופציונאלי.
 אם תבחרו לספקו, הוא ישמש לייחוס עבודת המשתמש אליו.',
 
@@ -927,7 +924,7 @@ $2',
 'user-mail-no-body' => 'ניסיון לשלוח דוא"ל עם תוכן ריק או קצר מאוד.',
 
 # Change password dialog
-'resetpass' => 'שינוי סיסמה',
+'changepassword' => 'שינוי סיסמה',
 'resetpass_announce' => 'נכנסתם באמצעות סיסמה זמנית שנשלחה אליכם בדוא"ל.
 כדי לסיים את הכניסה, עליכם לקבוע כאן סיסמה חדשה:',
 'resetpass_text' => '<!-- הוסיפו טקסט כאן -->',
@@ -938,18 +935,18 @@ $2',
 'resetpass_submit' => 'הגדרת הסיסמה וכניסה לחשבון',
 'changepassword-success' => 'סיסמתכם שונתה בהצלחה!',
 'resetpass_forbidden' => 'לא ניתן לשנות סיסמאות.',
-'resetpass-no-info' => '×¢×\9c×\99×\9b×\9d להיכנס לחשבון כדי לגשת לדף זה באופן ישיר.',
+'resetpass-no-info' => '×\99ש להיכנס לחשבון כדי לגשת לדף זה באופן ישיר.',
 'resetpass-submit-loggedin' => 'שינוי סיסמה',
 'resetpass-submit-cancel' => 'ביטול',
 'resetpass-wrong-oldpass' => 'הסיסמה הזמנית או הנוכחית אינה תקינה.
-ייתכן שכבר שיניתם את סיסמתכם או שכבר ביקשתם סיסמה זמנית חדשה.',
+ייתכן שכבר שינית את סיסמתך או שכבר ביקשת סיסמה זמנית חדשה.',
 'resetpass-temp-password' => 'סיסמה זמנית:',
-'resetpass-abort-generic' => 'שינוי הסיסמה בוטל על ידי הרחבה.',
+'resetpass-abort-generic' => 'שינוי הסיסמה בוטל על־ידי הרחבה.',
 
 # Special:PasswordReset
 'passwordreset' => 'איפוס סיסמה',
-'passwordreset-text-one' => '×\9e×\9c×\90×\95 ×\98×\95פס ×\96×\94 ×\9b×\93×\99 ×\9c×\90פס ×\90ת ×\94ס×\99ס×\9e×\94.',
-'passwordreset-text-many' => '{{PLURAL:$1||×\9e×\9c×\90×\95 ×\90×\97×\93 ×\9e×\94ש×\93×\95ת ×\94×\91×\90×\99×\9d ×\9b×\93×\99 ×\9c×\90פס ×\90ת ×\94ס×\99ס×\9e×\94.}}',
+'passwordreset-text-one' => '×\9e×\9c×\90×\95 ×\98×\95פס ×\96×\94 ×\9b×\93×\99 ×\9cק×\91×\9c ×¡×\99ס×\9e×\94 ×\96×\9e× ×\99ת ×\91×\93×\95×\90\9c.',
+'passwordreset-text-many' => '{{PLURAL:$1||×\9e×\9c×\90×\95 ×\90×\97×\93 ×\9e×\94ש×\93×\95ת ×\94×\91×\90×\99×\9d ×\9b×\93×\99 ×\9cק×\91×\9c ×¡×\99ס×\9e×\94 ×\96×\9e× ×\99ת ×\91×\93×\95×\90\9c.}}',
 'passwordreset-legend' => 'איפוס סיסמה',
 'passwordreset-disabled' => 'איפוסי סיסמה בוטלו באתר ויקי זה.',
 'passwordreset-emaildisabled' => 'שירותי הדוא"ל בוטלו באתר ויקי זה.',
@@ -1059,7 +1056,7 @@ $2
 אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
 כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
 אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
-'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על ידי $1, עשה בה שימוש.
+'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $1, עשה בה שימוש.
 הסיבה שניתנה לחסימה היא:
 
 :\'\'\'$2\'\'\'
@@ -1068,15 +1065,18 @@ $2
 * פקיעת החסימה: $6
 * החסימה שבוצעה: $7
 
-באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון על החסימה.
-אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון בחסימה.
+
+באפשרותכם להשתמש בתכונת "{{int:emailuser}}", אלא אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+
 כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
 אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
 'blockednoreason' => 'לא ניתנה סיבה',
 'whitelistedittext' => 'עליכם $1 כדי לערוך דפים.',
 'confirmedittext' => 'עליכם לאמת את כתובת הדוא"ל שלכם לפני שתוכלו לערוך דפים. אנא הגדירו ואמתו את כתובת הדוא"ל שלכם באמצעות [[Special:Preferences|העדפות המשתמש]] שלכם.',
 'nosuchsectiontitle' => 'הפסקה לא נמצאה',
-'nosuchsectiontext' => 'ניסיתם לערוך פסקה שאינה קיימת. ייתכן שהיא הועברה או נמחקה בעת שצפיתם בדף.',
+'nosuchsectiontext' => 'ניסית לערוך פסקה שאינה קיימת.
+ייתכן שהיא הועברה או נמחקה בעת שצפית בדף.',
 'loginreqtitle' => 'נדרשת כניסה לחשבון',
 'loginreqlink' => 'להיכנס לחשבון',
 'loginreqpagetext' => 'עליכם $1 כדי לצפות בדפים אחרים.',
@@ -1138,7 +1138,7 @@ $2
 
 '''אם זהו ניסיון עריכה לגיטימי, אנא נסו שוב.'''
 אם זה לא עוזר, נסו [[Special:UserLogout|לצאת מהחשבון]] ולהיכנס אליו שנית.",
-'token_suffix_mismatch' => "'''ער×\99×\9bת×\9b×\9d × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©×\94×\93פ×\93פ×\9f ×©×\9c×\9b×\9d מחק את תווי הפיסוק באסימון העריכה.'''
+'token_suffix_mismatch' => "'''ער×\99×\9bת×\9a × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©×\94×\93פ×\93פ×\9f ×©×\9c×\9a מחק את תווי הפיסוק באסימון העריכה.'''
 העריכה נדחתה כדי למנוע בעיות כאלה בטקסט של הדף.
 לעתים התקלה מתרחשת עקב שימוש בשירות פרוקסי אנונימי פגום.",
 'edit_form_incomplete' => "'''כמה חלקים מטופס העריכה לא הגיעו לשרת; בדקו היטב שעריכותיכם לא נפגעו ונסו שוב.'''",
@@ -1154,19 +1154,19 @@ $2
 '''רק''' הטקסט בחלון העריכה העליון יישמר כשתלחצו על \"{{int:savearticle}}\".",
 'yourtext' => 'הטקסט שלך',
 'storedversion' => 'גרסה שמורה',
-'nonunicodebrowser' => "'''×\90×\96×\94ר×\94: ×\94×\93פ×\93פ×\9f ×©×\9c×\9b×\9d אינו תואם לתקן יוניקוד.'''
\9b×\93×\99 ×\9c×\9e× ×\95×¢ ×\91×¢×\99×\95ת ×\94× ×\95צר×\95ת ×\9bת×\95צ×\90×\94 ×\9e×\9b×\9a ×\95×\9c×\90פשר ×\9c×\9b×\9d לערוך דפים בבטחה, תווים שאינם ב־ASCII יוצגו בתיבת העריכה כקודים הקסדצימליים.",
+'nonunicodebrowser' => "'''×\90×\96×\94ר×\94: ×\94×\93פ×\93פ×\9f ×©×\9c×\9a אינו תואם לתקן יוניקוד.'''
\9b×\93×\99 ×\9c×\9e× ×\95×¢ ×\91×¢×\99×\95ת ×\94× ×\95צר×\95ת ×\9bת×\95צ×\90×\94 ×\9e×\9b×\9a ×\95×\9c×\90פשר ×\9c×\9a לערוך דפים בבטחה, תווים שאינם ב־ASCII יוצגו בתיבת העריכה כקודים הקסדצימליים.",
 'editingold' => "'''אזהרה: אתם עורכים גרסה לא עדכנית של דף זה.'''
 אם תשמרו את הדף, כל השינויים שנעשו מאז גרסה זו יאבדו.",
 'yourdiff' => 'הבדלים',
-'copyrightwarning' => "'''שימו לב:''' תרומתכם ל{{grammar:תחילית|{{SITENAME}}}} תפורסם תחת תנאי הרישיון $2 (ראו $1 לפרטים נוספים). אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על ידי אחרים, שתופץ לעיני כל, ושאחרים יוכלו להעתיק ממנה בציון המקור – אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן על ידי זכויות יוצרים. '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''",
-'copyrightwarning2' => "'''שימו לב:''' תורמים אחרים עשויים לערוך או אף להסיר את תרומתכם ל{{grammar:תחילית|{{SITENAME}}}}. אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על ידי אחרים, אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן על ידי זכויות יוצרים (ראו $1 לפרטים נוספים). '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''",
+'copyrightwarning' => "'''שימו לב:''' תרומתכם ל{{grammar:תחילית|{{SITENAME}}}} תפורסם תחת תנאי הרישיון $2 (ראו $1 לפרטים נוספים). אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על־ידי אחרים, שתופץ לעיני כול, ושאחרים יוכלו להעתיק ממנה בציון המקור – אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן בזכויות יוצרים. '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''",
+'copyrightwarning2' => "'''שימו לב:''' תורמים אחרים עשויים לערוך או אף להסיר את תרומתכם ל{{grammar:תחילית|{{SITENAME}}}}. אם אינכם רוצים שעבודתכם תהיה זמינה לעריכה על־ידי אחרים, אל תפרסמו אותה פה. כמו־כן, אתם מבטיחים לנו כי כתבתם את הטקסט הזה בעצמכם, או העתקתם אותו ממקור שאינו מוגן בזכויות יוצרים (ראו $1 לפרטים נוספים). '''אל תעשו שימוש בחומר המוגן בזכויות יוצרים ללא רשות!'''",
 'longpageerror' => "'''שגיאה: אורך הטקסט ששלחתם הוא {{PLURAL:$1|קילובייט אחד|$1 קילובייטים}}, והוא ארוך יותר מהאורך המרבי של {{PLURAL:$2|קילובייט אחד|$2 קילובייטים}}.'''
 לא ניתן לשמור אותו.",
-'readonlywarning' => "'''×\90×\96×\94ר×\94: ×\91ס×\99ס ×\94נת×\95× ×\99×\9d × × ×¢×\9c ×\9cצ×\95ר×\9a ×ª×\97×\96×\95ק×\94. ×\91×\96×\9e×\9f ×\96×\94 ×\90×\99 ×\90פשר לשמור את הטקסט הערוך.'''
\91×\90פשר×\95ת×\9b×\9d ×\9c×\94עת×\99ק ×\95×\9c×\94×\93×\91×\99ק ×\90ת ×\94×\98קס×\98 ×\9cת×\95×\9a ×§×\95×\91×¥ ×\98קס×\98 ×\95×\9cש×\9e×\95ר ×\90×\95ת×\95 ×¢×\93 ×©×ª×\99×\92×\9eר ×\94× ×¢×\99×\9c×\94.
+'readonlywarning' => "'''×\90×\96×\94ר×\94: ×\91ס×\99ס ×\94נת×\95× ×\99×\9d × × ×¢×\9c ×\9cצ×\95ר×\9a ×ª×\97×\96×\95ק×\94. ×\91×\96×\9e×\9f ×\96×\94 ×\9c×\90 × ×\99ת×\9f לשמור את הטקסט הערוך.'''
\91×\90פשר×\95ת×\9a ×\9c×\94עת×\99ק ×\95×\9c×\94×\93×\91×\99ק ×\90ת ×\94×\98קס×\98 ×\9cת×\95×\9a ×§×\95×\91×¥ ×\98קס×\98 ×\95×\9cש×\9e×\95ר ×\90×\95ת×\95 ×\9c×\9e×\90×\95×\97ר ×\99×\95תר.
 
\9e× ×\94ל המערכת שנעל את בסיס הנתונים סיפק את ההסבר הבא: $1",
\9eפע×\99ל המערכת שנעל את בסיס הנתונים סיפק את ההסבר הבא: $1",
 'protectedpagewarning' => "'''אזהרה: דף זה מוגן כך שרק מפעילי מערכת יכולים לערוך אותו.'''
 פעולת היומן האחרונה מוצגת להלן:",
 'semiprotectedpagewarning' => "'''הערה:''' דף זה מוגן כך שרק משתמשים רשומים יכולים לערוך אותו.
@@ -1181,13 +1181,14 @@ $2
 'template-semiprotected' => '(מוגנת חלקית)',
 'hiddencategories' => 'דף זה כלול ב{{PLURAL:$1|קטגוריה מוסתרת אחת|־$1 קטגוריות מוסתרות}}:',
 'edittools' => '<!-- הטקסט הנכתב כאן יוצג מתחת לטופסי עריכת דפים והעלאת קבצים, ולפיכך ניתן לכתוב להציג בו תווים קשים לכתיבה, קטעים מוכנים של טקסט ועוד. -->',
-'nocreatetext' => 'אתר זה מגביל את האפשרות ליצור דפים חדשים. באפשרותכם לחזור אחורה ולערוך דף קיים, או [[Special:UserLogin|להיכנס לחשבון]].',
-'nocreate-loggedin' => 'אינכם מורשים ליצור דפים חדשים.',
+'nocreatetext' => 'ב{{grammar:תחילית|{{SITENAME}}}} קיימת הגבלה על יצירת דפים חדשים.
+באפשרותך לחזור אחורה ולערוך דף קיים, או [[Special:UserLogin|להיכנס לחשבון]].',
+'nocreate-loggedin' => 'אינך מורשה ליצור דפים חדשים.',
 'sectioneditnotsupported-title' => 'עריכת פסקאות אינה נתמכת',
 'sectioneditnotsupported-text' => 'עריכת פסקאות אינה נתמכת בדף זה.',
 'permissionserrors' => 'שגיאת הרשאה',
-'permissionserrorstext' => '×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d לבצע פעולה זו, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:',
-'permissionserrorstext-withaction' => '×\90×\99× ×\9b×\9d ×\9e×\95רש×\99×\9d $2, {{PLURAL:$1|×\9e×\94ס×\99×\91×\94 ×\94×\91×\90×\94\9e×\94סיבות הבאות}}:',
+'permissionserrorstext' => '×\90×\99× ×\9a ×\9e×\95רש×\94 לבצע פעולה זו, {{PLURAL:$1|מהסיבה הבאה|מהסיבות הבאות}}:',
+'permissionserrorstext-withaction' => '×\90×\99× ×\9a ×\9e×\95רש×\94 $2, ×\9e×\94{{PLURAL:$1|ס×\99×\91×\94 ×\94×\91×\90×\94|סיבות הבאות}}:',
 'recreate-moveddeleted-warn' => "'''אזהרה: הנכם יוצרים דף חדש שנמחק בעבר.'''
 
 כדאי לשקול אם יהיה זה נכון להמשיך לערוך את הדף.
@@ -1210,6 +1211,8 @@ $2
 'content-not-allowed-here' => 'תוכן מסוג "$1" אינו מותר בדף [[$2]]',
 'editwarning-warning' => 'עזיבת דף זה עשויה לגרום לאובדן כל השינויים שביצעתם.
 אם אתם מחוברים לחשבון, תוכלו לבטל אזהרה זו בחלק "עריכה" שבהעדפות שלכם.',
+'editpage-notsupportedcontentformat-title' => 'סוג התוכן אינו נתמך',
+'editpage-notsupportedcontentformat-text' => 'תוכן מסוג $1 אינו נתמך על־ידי מודל התוכן $2.',
 
 # Content models
 'content-model-wikitext' => 'טקסט ויקי',
@@ -1248,7 +1251,12 @@ $2
 
 # Account creation failure
 'cantcreateaccounttitle' => 'לא ניתן ליצור את החשבון',
-'cantcreateaccount-text' => 'אפשרות יצירת החשבונות מכתובת ה־IP הזו (<b>$1</b>) נחסמה על ידי [[User:$3|$3]]. הסיבה שניתנה על ידי $3 היא "$2".',
+'cantcreateaccount-text' => 'אפשרות יצירת החשבונות מכתובת ה־IP הזו (\'\'\'$1\'\'\') נחסמה על־ידי [[User:$3|$3]].
+
+הסיבה שניתנה על־ידי $3 היא "$2".',
+'cantcreateaccount-range-text' => "אפשרות יצירת החשבונות מכתובות IP בתוך הטווח '''\$1''', כולל כתובת ה־IP שלך ('''\$4'''), נחסמה על־ידי [[User:\$3|\$3]].
+
+הסיבה שניתנה על־ידי \$3 היא \"\$2\".",
 
 # History pages
 'viewpagelogs' => 'הצגת יומנים עבור דף זה',
@@ -1316,15 +1324,11 @@ $2
 'rev-showdeleted' => 'הצגה',
 'revisiondelete' => 'מחיקה ושחזור של גרסאות',
 'revdelete-nooldid-title' => 'גרסת מטרה בלתי תקינה',
-'revdelete-nooldid-text' => 'הגרסה או הגרסאות עליהן תבוצע פעולה זו אינן תקינות. ייתכן שלא ציינתם אותן, ייתכן שהגרסה אינה קיימת, וייתכן שאתם מנסים להסתיר את הגרסה הנוכחית.',
-'revdelete-nologtype-title' => 'לא נבחר סוג יומן',
-'revdelete-nologtype-text' => 'לא ציינתם את סוג היומן שעליו תבוצע הפעולה.',
-'revdelete-nologid-title' => 'רישום יומן בלתי תקין',
-'revdelete-nologid-text' => 'או שלא ציינתם את האירוע או האירועים ביומן שעליהם תבוצע הפעולה, או שרישום היומן שציינתם אינו קיים.',
-'revdelete-no-file' => 'הקובץ שציינתם אינו קיים.',
+'revdelete-nooldid-text' => 'הגרסה או הגרסאות עליהן תבוצע פעולה זו אינן תקינות. ייתכן שלא ציינת אותן, ייתכן שהגרסה אינה קיימת, וייתכן שהנך מנסה להסתיר את הגרסה הנוכחית.',
+'revdelete-no-file' => 'הקובץ שציינת אינו קיים.',
 'revdelete-show-file-confirm' => 'האם אתם בטוחים שברצונכם לצפות בגרסה המחוקה של הקובץ "<nowiki>$1</nowiki>" מתאריך $3, $2?',
 'revdelete-show-file-submit' => 'כן',
-'revdelete-selected' => "'''{{PLURAL:$2|הגרסה שנבחרה|הגרסאות שנבחרו}} של הדף [[:$1]]:'''",
+'revdelete-selected' => "'''ה{{PLURAL:$2|גרסה שנבחרה|גרסאות שנבחרו}} מתוך הדף [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|פעולת היומנים שנבחרה|פעולות היומנים שנבחרו}}:'''",
 'revdelete-text' => "'''גרסאות ופעולות יומנים שנמחקו עדיין תופענה בהיסטוריית הדף ובדפי היומנים, אך חלקים מהתוכן שלהן לא יהיה זמין לציבור.'''
 מפעילי מערכת אחרים באתר עדיין יוכלו לגשת לתוכן הנסתר ויוכלו לשחזר אותו שוב דרך הממשק הזה, אלא אם כן תוגדרנה הגבלות נוספות.",
@@ -1354,21 +1358,19 @@ $1",
 'logdelete-failure' => "'''לא ניתן היה לבצע את הסתרת פעולת היומן:'''
 $1",
 'revdel-restore' => 'שינוי ההצגה',
-'revdel-restore-deleted' => 'גרסאות מחוקות',
-'revdel-restore-visible' => 'גרסאות גלויות',
 'pagehist' => 'היסטוריית הדף',
 'deletedhist' => 'הגרסאות המחוקות',
 'revdelete-hide-current' => 'שגיאה בהסתרת הפריט מתאריך $2, $1: זו הגרסה הנוכחית.
 לא ניתן להסתיר אותה.',
 'revdelete-show-no-access' => 'שגיאה בהצגת הפריט מתאריך $2, $1: פריט זה סומן כ"מוגבל".
\90×\99×\9f ×\9c×\9b×\9d גישה אליו.',
\90×\99×\9f ×\9c×\9a גישה אליו.',
 'revdelete-modify-no-access' => 'שגיאה בשינוי הפריט מתאריך $2, $1: פריט זה סומן כ"מוגבל".
 אין לכם גישה אליו.',
 'revdelete-modify-missing' => 'שגיאה בשינוי פריט מספר $1: הוא אינו נמצא בבסיס הנתונים!',
 'revdelete-no-change' => "'''אזהרה:''' לפריט מתאריך $2, $1 כבר יש את הגדרות ההצגה הנדרשות.",
-'revdelete-concurrent-change' => 'שגיאה בשינוי הפריט מתאריך $2, $1: נראה שמצבו שונה על ידי מישהו אחר בזמן שאתם ניסיתם לשנות אותו.
+'revdelete-concurrent-change' => 'שגיאה בשינוי הפריט מתאריך $2, $1: נראה שמצבו שונה על־ידי מישהו אחר בזמן שאתם ניסיתם לשנות אותו.
 אנא בדקו ביומנים.',
-'revdelete-only-restricted' => 'ש×\92×\99×\90×\94 ×\91×\94סתרת ×\94פר×\99×\98 ×\9eת×\90ר×\99×\9a $2, $1: ×\90×\99×\9f ×\91×\90פשר×\95ת×\9b×\9d ×\9c×\94סת×\99ר ×¤×¨×\98×\99×\9d ×\9eצפ×\99×\99ת ×\9eפע×\99×\9c×\99 ×\9eער×\9bת בלי לבחור גם באחת מאפשרויות ההסתרה האחרות.',
+'revdelete-only-restricted' => 'ש×\92×\99×\90×\94 ×\91×\94סתרת ×\94פר×\99×\98 ×\9eת×\90ר×\99×\9a $2, $1: ×\90×\99×\9f ×\91×\90פשר×\95ת×\9a ×\9c×\94סת×\99ר ×¤×¨×\99×\98×\99×\9d ×\9e×\9eפע×\99×\9c×\99 ×\94×\9eער×\9bת ×\9eבלי לבחור גם באחת מאפשרויות ההסתרה האחרות.',
 'revdelete-reason-dropdown' => '* סיבות מחיקה נפוצות
 ** הפרת זכויות יוצרים
 ** תקציר עריכה או מידע אישי לא הולמים
@@ -1435,12 +1437,8 @@ $1",
 # Search results
 'searchresults' => 'תוצאות החיפוש',
 'searchresults-title' => 'תוצאות החיפוש "$1"',
-'searchresulttext' => 'למידע נוסף על חיפוש ב{{grammar:תחילית|{{SITENAME}}}}, עיינו ב[[Project:עזרה|דפי העזרה]].',
-'searchsubtitle' => 'לחיפוש המונח \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|לכל הדפים המתחילים ב"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|לכל הדפים המקשרים ל"$1"]])',
-'searchsubtitleinvalid' => "חיפשת '''$1'''",
 'toomanymatches' => 'יותר מדי תוצאות נמצאו, נא לנסות מילות חיפוש אחרות',
 'titlematches' => 'כותרות דפים תואמות',
-'notitlematches' => 'אין כותרות דפים תואמות',
 'textmatches' => 'דפים עם תוכן תואם',
 'notextmatches' => 'אין דפים עם תוכן תואם',
 'prevn' => '{{PLURAL:$1|הקודם|$1 הקודמים}}',
@@ -1449,10 +1447,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|התוצאה הבאה|$1 התוצאות הבאות}}',
 'shown-title' => 'הצגת {{PLURAL:$1|תוצאה אחת|$1 תוצאות}} בדף',
 'viewprevnext' => 'צפייה ב: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'אפשרויות חיפוש',
 'searchmenu-exists' => "'''קיים דף בשם \"[[:\$1]]\" באתר זה.'''",
 'searchmenu-new' => "'''יצירת הדף \"[[:\$1]]\" באתר זה.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|מציאת דפים עם קידומת זו]]',
 'searchprofile-articles' => 'דפי תוכן',
 'searchprofile-project' => 'עזרה ודפי המיזם',
 'searchprofile-images' => 'מולטימדיה',
@@ -1473,20 +1469,16 @@ $1",
 'search-interwiki-default' => 'תוצאות ב{{GRAMMAR:תחילית|$1}}:',
 'search-interwiki-more' => '(עוד)',
 'search-relatedarticle' => 'קשור',
-'mwsuggest-disable' => 'ביטול הצעות חיפוש',
 'searcheverything-enable' => 'חיפוש בכל מרחבי השם',
 'searchrelated' => 'קשור',
 'searchall' => 'הכול',
 'showingresults' => "{{PLURAL:$1|מוצגת תוצאה '''אחת'''|מוצגות עד '''$1''' תוצאות}} החל ממספר '''$2''':",
 'showingresultsnum' => "{{PLURAL:$3|מוצגת תוצאה '''אחת'''|מוצגות '''$3''' תוצאות}} החל ממספר '''$2''':",
 'showingresultsheader' => "{{PLURAL:$5|תוצאה '''$1''' מתוך '''$3'''|תוצאות '''$1 - $2''' מתוך '''$3'''}} עבור '''$4'''",
-'nonefound' => "'''הערה:''' כברירת מחדל, החיפוש מבוצע במספר מרחבי שם בלבד. באפשרותכם לכתוב '''all:''' לפני מונח החיפוש כדי לחפש בכל הדפים (כולל דפי שיחה, תבניות, ועוד), או לכתוב לפני מונח החיפוש את מרחב השם שאתם מעוניינים בו.",
 'search-nonefound' => 'לא נמצאו תוצאות המתאימות לחיפוש.',
-'powersearch' => 'חיפוש מתקדם',
 'powersearch-legend' => 'חיפוש מתקדם',
-'powersearch-ns' => 'חיפוש על פי מרחבי שם:',
+'powersearch-ns' => 'חיפוש על־פי מרחבי שם:',
 'powersearch-redir' => 'הצגת דפי הפניה',
-'powersearch-field' => 'חיפוש',
 'powersearch-togglelabel' => 'בחירה:',
 'powersearch-toggleall' => 'הכול',
 'powersearch-togglenone' => 'אף אחד',
@@ -1500,8 +1492,7 @@ $1",
 'preferences' => 'העדפות',
 'mypreferences' => 'העדפות',
 'prefs-edits' => 'מספר עריכות:',
-'prefsnologintext2' => 'אנא $1 כדי לשנות העדפות משתמש.',
-'changepassword' => 'שינוי סיסמה',
+'prefsnologintext2' => 'עליכם $1 כדי לשנות העדפות משתמש.',
 'prefs-skin' => 'עיצוב',
 'skin-preview' => 'תצוגה מקדימה',
 'datedefault' => 'ברירת המחדל',
@@ -1515,7 +1506,7 @@ $1",
 'prefs-watchlist-days' => 'מספר הימים המרבי שיוצגו ברשימת המעקב:',
 'prefs-watchlist-days-max' => 'לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}',
 'prefs-watchlist-edits' => 'מספר העריכות המרבי שיוצגו ברשימת המעקב המורחבת:',
-'prefs-watchlist-edits-max' => '×\9c×\9b×\9c ×\94×\99×\95תר 1000',
+'prefs-watchlist-edits-max' => '×\9eספר ×\9e×\99ר×\91×\99: 1000',
 'prefs-watchlist-token' => 'אסימון לרשימת המעקב:',
 'prefs-misc' => 'שונות',
 'prefs-resetpass' => 'שינוי סיסמה',
@@ -1524,28 +1515,25 @@ $1",
 'prefs-email' => 'אפשרויות דוא"ל',
 'prefs-rendering' => 'מראה',
 'saveprefs' => 'שמירת העדפות',
-'resetprefs' => 'מחיקת שינויים שלא נשמרו',
 'restoreprefs' => 'שחזור ההגדרות ההתחלתיות (בכל הלשוניות)',
 'prefs-editing' => 'עריכה',
 'rows' => 'שורות:',
 'columns' => 'עמודות:',
 'searchresultshead' => 'חיפוש',
-'resultsperpage' => 'מספר תוצאות בעמוד:',
 'stub-threshold' => 'סף לעיצוב <a href="#" class="stub">קישורים</a> לקצרמרים (בתים):',
 'stub-threshold-disabled' => 'מבוטל',
 'recentchangesdays' => 'מספר הימים שיוצגו בדף השינויים האחרונים:',
 'recentchangesdays-max' => 'לכל היותר {{PLURAL:$1|יום אחד|יומיים|$1 ימים}}',
 'recentchangescount' => 'מספר העריכות שיוצגו כברירת מחדל:',
-'prefs-help-recentchangescount' => '×\9b×\95×\9c×\9c ×©×\99× ×\95×\99×\99×\9d ×\90×\97ר×\95× ×\99×\9d, ×\94×\99ס×\98×\95ר×\99×\99ת ×\94×\93×£ ויומנים.',
+'prefs-help-recentchangescount' => '×\9b×\95×\9c×\9c ×\93×£ ×\94ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d, ×\93פ×\99 ×\94×\99ס×\98×\95ר×\99×\99ת ×\92רס×\90×\95ת ויומנים.',
 'prefs-help-watchlist-token2' => 'זהו המפתח הסודי של ההזנה של רשימת המעקב שלך.
 כל מי שיודע אותו יוכל לקרוא את רשימת המעקב שלך, לכן אין לשתף אותו.
 [[Special:ResetTokens|אם יש בכך צורך, אפשר לאפס אותו כאן]].',
-'savedprefs' => '×\94×¢×\93פ×\95ת×\99ך נשמרו.',
+'savedprefs' => '×\94×\94×¢×\93פ×\95ת ×©×\9cך נשמרו.',
 'timezonelegend' => 'אזור זמן:',
 'localtime' => 'זמן מקומי:',
 'timezoneuseserverdefault' => 'ברירת המחדל של האתר ($1)',
-'timezoneuseoffset' => 'אחר (נא ציינו את ההפרש)',
-'timezoneoffset' => 'הפרש¹:',
+'timezoneuseoffset' => 'אחר (יש לציין את ההפרש)',
 'servertime' => 'השעה הנוכחית בשרת:',
 'guesstimezone' => 'קבלה מהדפדפן',
 'timezoneregion-africa' => 'אפריקה',
@@ -1567,7 +1555,7 @@ $1",
 'prefs-custom-css' => 'קובץ CSS מותאם אישית',
 'prefs-custom-js' => 'קובץ JavaScript מותאם אישית',
 'prefs-common-css-js' => 'קובצי CSS/JavaScript משותפים לכל העיצובים:',
-'prefs-reset-intro' => '×\91×\90פשר×\95ת×\9b×\9d ×\9c×\94שת×\9eש ×\91×\93×£ ×\96×\94 ×\9b×\93×\99 ×\9c×\94×\97×\96×\99ר ×\90ת ×\94×\94×¢×\93פ×\95ת ×©×\9c×\9b×\9d להגדרות ברירת המחדל של האתר.
+'prefs-reset-intro' => '×\91×\90פשר×\95ת×\9a ×\9c×\94שת×\9eש ×\91×\93×£ ×\96×\94 ×\9b×\93×\99 ×\9c×\94×\97×\96×\99ר ×\90ת ×\94×\94×¢×\93פ×\95ת ×©×\9c×\9a להגדרות ברירת המחדל של האתר.
 לא ניתן לבטל פעולה זו.',
 'prefs-emailconfirm-label' => 'אימות כתובת דוא"ל:',
 'youremail' => 'דואר אלקטרוני:',
@@ -1580,7 +1568,7 @@ $1",
 'yourvariant' => 'סוג הכתב בשפת התוכן:',
 'prefs-help-variant' => 'סוג הכתב המועדף להצגת דפי התוכן באתר ויקי זה.',
 'yournick' => 'חתימה:',
-'prefs-help-signature' => '×¢×\9c ×\94×\95×\93×¢×\95ת ×\91×\93פ×\99 ×©×\99×\97×\94 ×\99ש ×\9c×\97ת×\95×\9d ×\91×\90×\9eצע×\95ת ×\94×\98קס×\98 "<nowiki>~~~~</nowiki>", ×©×\99×\95×\9eר ×\9c×\97ת×\99×\9e×\94 ×©×\9c×\9b×\9d ואחריה תאריך ושעה.',
+'prefs-help-signature' => '×¢×\9c ×\94×\95×\93×¢×\95ת ×\91×\93פ×\99 ×©×\99×\97×\94 ×\99ש ×\9c×\97ת×\95×\9d ×\91×\90×\9eצע×\95ת ×\94×\98קס×\98 "<nowiki>~~~~</nowiki>", ×©×\99×\95×\9eר ×\9c×\97ת×\99×\9e×\94 ×©×\9c×\9a ואחריה תאריך ושעה.',
 'badsig' => 'חתימה מסוגננת שגויה.
 אנא בדקו את תגיות ה־HTML.',
 'badsiglength' => 'חתימתכם ארוכה מדי.
@@ -1596,8 +1584,8 @@ $1",
 'prefs-help-realname' => 'השם האמיתי הוא אופציונאלי.
 אם תבחרו לספקו, הוא ישמש לייחוס עבודתכם אליכם.',
 'prefs-help-email' => 'כתובת דואר אלקטרוני היא אופציונאלית, אך היא דרושה לאיפוס הסיסמה במקרה שתשכחו את הסיסמה.',
-'prefs-help-email-others' => '×\91×\90פשר×\95ת×\9b×\9d ×\92×\9d ×\9c×\91×\97×\95ר ×\9c×\90פשר ×\9c×\90×\97ר×\99×\9d ×\9c×\99צ×\95ר ×\90ת×\9b×\9d ×§×©×¨ ×\91×\90×\9eצע×\95ת ×\93×\95×\90\9c ×\93ר×\9a ×§×\99ש×\95ר ×\91×\93×£ ×\94×\9eשת×\9eש ×\90×\95 ×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9b×\9d.
\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9b×\9d ×\9c×\90 ×ª×\99×\97שף ×\9bש×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d ×\99×\99צר×\95 ×§×©×¨ ×\90×\99ת×\9b×\9d.',
+'prefs-help-email-others' => '×\91×\90פשר×\95ת×\9a ×\92×\9d ×\9c×\91×\97×\95ר ×\9c×\90פשר ×\9c×\90×\97ר×\99×\9d ×\9c×\99צ×\95ר ×\90×\99ת×\9a ×§×©×¨ ×\91×\90×\9eצע×\95ת ×\93×\95×\90\9c ×\93ר×\9a ×§×\99ש×\95ר ×\91×\93×£ ×\94×\9eשת×\9eש ×\90×\95 ×\91×\93×£ ×\94ש×\99×\97×\94 ×©×\9c×\9a.
\9bת×\95×\91ת ×\94×\93×\95×\90\9c ×©×\9c×\9a ×\9c×\90 ×ª×\99×\97שף ×\9bש×\9eשת×\9eש×\99×\9d ×\90×\97ר×\99×\9d ×\99×\99צר×\95 ×§×©×¨ ×\90×\99ת×\9a.',
 'prefs-help-email-required' => 'כתובת דואר אלקטרוני נדרשת לכתיבה באתר.',
 'prefs-info' => 'מידע בסיסי',
 'prefs-i18n' => 'בינאום',
@@ -1617,10 +1605,11 @@ $1",
 'prefs-tokenwatchlist' => 'אסימון',
 'prefs-diffs' => 'הבדלים בין גרסאות',
 'prefs-help-prefershttps' => 'העדפה זו תיכנס לתוקף בכניסה הבאה לחשבון.',
+'prefs-tabs-navigation-hint' => 'טיפ: ניתן להשתמש במקשי החצים הימני והשמאלי כדי לנווט בין הלשוניות ברשימת הלשוניות.',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => 'כתובת הדואר האלקטרוני נראית תקינה',
-'email-address-validity-invalid' => 'יש להקליד כתובת דואר אלקטרוני תקינה',
+'email-address-validity-valid' => 'כתובת הדוא נראית תקינה',
+'email-address-validity-invalid' => 'יש להקליד כתובת דוא תקינה',
 
 # User rights
 'userrights' => 'ניהול הרשאות משתמש',
@@ -1684,13 +1673,13 @@ $1",
 'right-suppressredirect' => 'הימנעות מיצירת הפניות מדפי המקור בעת העברת דפים',
 'right-upload' => 'העלאת קבצים',
 'right-reupload' => 'דריסת קבצים קיימים',
-'right-reupload-own' => 'דריסת קבצים קיימים שהועלו על ידי אותו המשתמש',
+'right-reupload-own' => 'דריסת קבצים קיימים שהועלו על־ידי אותו המשתמש',
 'right-reupload-shared' => 'דריסה מקומית של קבצים מאתר קובצי המדיה המשותף',
 'right-upload_by_url' => 'העלאת קובץ מכתובת אינטרנט',
-'right-purge' => 'רענ×\95×\9f ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f ×©×\9c ×\94×\90תר ×\9c×\93×£ ×\9eס×\95×\99×\9d ×\9c×\9c×\90 דף אישור',
+'right-purge' => 'רענ×\95×\9f ×\96×\99×\9bר×\95×\9f ×\94×\9e×\98×\9e×\95×\9f ×©×\9c ×\94×\90תר ×\9c×\9c×\90 ×\9e×¢×\91ר ×\9cדף אישור',
 'right-autoconfirmed' => 'עקיפת הגבלת קצב העריכות המבוססת על כתובת IP',
 'right-bot' => 'טיפול בעריכות כאוטומטיות',
-'right-nominornewtalk' => '×\91×\99×\98×\95×\9c ×\94×\95×\93עת ×\94×\94×\95×\93×¢×\95ת ×\94×\97×\93ש×\95ת ×\91עת ×¢×¨×\99×\9b×\94 ×\9eשנ×\99ת ×\91×\93פ×\99 ×©×\99×\97×\94',
+'right-nominornewtalk' => '×\91×\99×\98×\95×\9c ×©×\9c×\99×\97ת ×\94תר×\90×\94 ×¢×\9c ×\94×\95×\93×¢×\94 ×\97×\93ש×\94 ×\9c×\9eשת×\9eש ×\91עת ×¢×¨×\99×\9b×\94 ×\9eשנ×\99ת ×\91×\93×£ ×©×\99×\97ת×\95',
 'right-apihighlimits' => 'שימוש ב־API עם פחות הגבלות',
 'right-writeapi' => 'שימוש ב־API לשינוי דפים',
 'right-delete' => 'מחיקת דפים',
@@ -1708,21 +1697,21 @@ $1",
 'right-hideuser' => 'חסימת שם משתמש תוך הסתרתו מהציבור',
 'right-ipblock-exempt' => 'עקיפת חסימות של כתובת IP, חסימות אוטומטיות וחסימות טווח',
 'right-proxyunbannable' => 'עקיפת חסימות אוטומטיות של שרתי פרוקסי',
-'right-unblockself' => 'ש×\97ר×\95ר ×\97ס×\99×\9e×\94 ×©×\9c ×¢×¦×\9e×\9a',
+'right-unblockself' => 'ש×\97ר×\95ר ×\97ס×\99×\9e×\94 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
 'right-protect' => 'שינוי רמות הגנה ועריכת דפים המוגנים בהגנה מדורגת',
-'right-editprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×©מוגנים ברמת "{{int:protect-level-sysop}}"',
-'right-editsemiprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×©מוגנים ברמת "{{int:protect-level-autoconfirmed}}"',
+'right-editprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×\94מוגנים ברמת "{{int:protect-level-sysop}}"',
+'right-editsemiprotected' => 'ער×\99×\9bת ×\93פ×\99×\9d ×\94מוגנים ברמת "{{int:protect-level-autoconfirmed}}"',
 'right-editinterface' => 'עריכת ממשק המשתמש',
 'right-editusercssjs' => 'עריכת דפי CSS ו־JavaScript של משתמשים אחרים',
-'right-editusercss' => 'ער×\99×\9bת ×\93פ×\99 CSS של משתמשים אחרים',
-'right-edituserjs' => 'ער×\99×\9bת ×\93פי JavaScript של משתמשים אחרים',
-'right-editmyusercss' => 'ער×\99×\9bת ×\93פ×\99 CSS ×©×\9c ×¢×¦×\9e×\9a',
-'right-editmyuserjs' => 'ער×\99×\9bת ×\93פ×\99 JavaScript ×©×\9c ×¢×¦×\9e×\9a',
-'right-viewmywatchlist' => 'צפ×\99×\99×\94 ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×¢×¦×\9e×\9a',
-'right-editmywatchlist' => 'ער×\99×\9bת ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×¢×¦×\9e×\9a. ×\99צ×\95×\99×\9f ×©מספר פעולות עדיין יוסיפו דפים גם ללא הרשאה זו.',
-'right-viewmyprivateinfo' => 'צפ×\99×\99×\94 ×\91×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×¢×¦×\9e×\9a (×\9b×\92×\95×\9f: כתובת דוא"ל, שם אמיתי)',
-'right-editmyprivateinfo' => 'ער×\99×\9bת ×\94×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×¢×¦×\9e×\9a (×\9b×\92×\95×\9f: כתובת דוא"ל, שם אמיתי)',
-'right-editmyoptions' => 'ער×\99×\9bת ×\94×\94×¢×\93פ×\95ת ×©×\9c ×¢×¦×\9e×\9a',
+'right-editusercss' => 'ער×\99×\9bת ×\92×\99×\9c×\99×\95× ×\95ת CSS של משתמשים אחרים',
+'right-edituserjs' => 'ער×\99×\9bת ×§×\91צי JavaScript של משתמשים אחרים',
+'right-editmyusercss' => 'ער×\99×\9bת ×\92×\99×\9c×\99×\95× ×\95ת CSS ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-editmyuserjs' => 'ער×\99×\9bת ×§×\91צ×\99 JavaScript ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-viewmywatchlist' => 'צפ×\99×\99×\94 ×\91רש×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
+'right-editmywatchlist' => 'ער×\99×\9bת ×¨×©×\99×\9eת ×\94×\9eעק×\91 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95מספר פעולות עדיין יוסיפו דפים גם ללא הרשאה זו.',
+'right-viewmyprivateinfo' => 'צפ×\99×\99×\94 ×\91×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95 (×\9b×\92×\95×\9f כתובת דוא"ל, שם אמיתי)',
+'right-editmyprivateinfo' => 'ער×\99×\9bת ×\94×\9e×\99×\93×¢ ×\94פר×\98×\99 ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95 (×\9b×\92×\95×\9f כתובת דוא"ל, שם אמיתי)',
+'right-editmyoptions' => 'ער×\99×\9bת ×\94×\94×¢×\93פ×\95ת ×©×\9c ×\94×\9eשת×\9eש ×¢×¦×\9e×\95',
 'right-rollback' => 'שחזור מהיר של עריכות המשתמש האחרון שערך דף מסוים',
 'right-markbotedits' => 'סימון עריכות משוחזרות כעריכות של בוט',
 'right-noratelimit' => 'עקיפת הגבלת קצב העריכות',
@@ -1730,9 +1719,9 @@ $1",
 'right-importupload' => 'ייבוא דפים באמצעות העלאת קובץ',
 'right-patrol' => 'סימון עריכות של אחרים כבדוקות',
 'right-autopatrol' => 'סימון אוטומטי של עריכות של המשתמש כבדוקות',
-'right-patrolmarks' => 'צפ×\99×\99×\94 ×\91ס×\99×\9e×\95× ×\99 ×¢×¨×\99×\9b×\95ת ×\91×\93×\95ק×\95ת ×\91שינויים האחרונים',
+'right-patrolmarks' => '×\94×\91×\97× ×\94 ×\91×\99×\9f ×¢×¨×\99×\9b×\95ת ×©× ×\91×\93ק×\95 ×\9cער×\99×\9b×\95ת ×©×\98ר×\9d × ×\91×\93ק×\95 ×\91×\93×£ ×\94שינויים האחרונים',
 'right-unwatchedpages' => 'הצגת רשימה של דפים שאינם במעקב',
-'right-mergehistory' => 'מיזוג היסטוריות של דפים',
+'right-mergehistory' => '×\9e×\99×\96×\95×\92 ×\94×\99ס×\98×\95ר×\99×\99ת ×\92רס×\90×\95ת ×©×\9c ×\93פ×\99×\9d',
 'right-userrights' => 'עריכת כל הרשאות המשתמש',
 'right-userrights-interwiki' => 'עריכת הרשאות המשתמש של משתמשים באתרי ויקי אחרים',
 'right-siteadmin' => 'נעילה וביטול נעילה של בסיס הנתונים',
@@ -1800,12 +1789,12 @@ $1",
 'recentchanges-feed-description' => 'ניתן לעקוב אחרי השינויים האחרונים באתר בדף זה.',
 'recentchanges-label-newpage' => 'בעריכה זו נוצר דף חדש',
 'recentchanges-label-minor' => 'זוהי עריכה משנית',
-'recentchanges-label-bot' => 'עריכה זו בוצעה על ידי בוט',
+'recentchanges-label-bot' => 'עריכה זו בוצעה על־ידי בוט',
 'recentchanges-label-unpatrolled' => 'עריכה זו טרם נבדקה',
 'recentchanges-label-plusminus' => 'מספר הבתים שבו השתנה גודל הדף',
+'recentchanges-legend-heading' => "'''מקרא:'''",
 'recentchanges-legend-newpage' => '(ראו גם [[Special:NewPages|רשימת דפים חדשים]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "להלן {{PLURAL:$1|השינוי האחרון|'''$1''' השינויים האחרונים}} {{PLURAL:$2|ביום האחרון|ביומיים האחרונים|ב־$2 הימים האחרונים}}, עד $5, $4:",
 'rcnotefrom' => 'להלן <b>$1</b> השינויים האחרונים שבוצעו החל מתאריך <b>$2</b>:',
 'rclistfrom' => 'הצגת שינויים חדשים החל מ־$1',
 'rcshowhideminor' => '$1 שינויים משניים',
@@ -1902,7 +1891,7 @@ $1",
 'tmp-create-error' => 'לא ניתן ליצור קובץ זמני',
 'tmp-write-error' => 'שגיאה בכתיבה לקובץ הזמני',
 'large-file' => 'מומלץ שהקבצים לא יהיו גדולים יותר מ־$1 (גודל הקובץ שהעליתם הוא $2).',
-'largefileserver' => '×\92×\95×\93×\9c ×\94ק×\95×\91×¥ ×©×\94×¢×\9c×\99ת×\9d ×\97×\95ר×\92 ×\9e×\9e×\92×\91×\9cת ×\94שרת.',
+'largefileserver' => 'גודל הקובץ חורג ממגבלת השרת.',
 'emptyfile' => 'נראה שהקובץ שהעליתם ריק. ייתכן שהסיבה לכך היא שגיאת הקלדה בשם הקובץ. אנא ודאו שזהו הקובץ שברצונכם להעלות.',
 'windows-nonascii-filename' => 'אתר ויקי זה אינו תומך בשמות קבצים עם תווים מיוחדים או תווים שאינם באנגלית.',
 'fileexists' => 'קובץ בשם זה כבר קיים, אנא בדקו את <strong>[[:$1]]</strong> אם אינכם בטוחים שברצונכם להחליף אותו.
@@ -1928,6 +1917,8 @@ $1",
 'file-exists-duplicate' => 'קובץ זה זהה {{PLURAL:$1|לקובץ הבא|לקבצים הבאים}}:',
 'file-deleted-duplicate' => 'קובץ זהה לקובץ זה ([[:$1]]) נמחק בעבר.
 אנא בדקו את היסטוריית המחיקה של הקובץ לפני שתעלו אותו מחדש.',
+'file-deleted-duplicate-notitle' => 'קובץ זהה לקובץ זה נמחק בעבר, והכותרת שלו הוסתרה.
+אנא בקשו ממישהו שיכול לראות מידע על קבצים שהוסתרו לבדוק את המצב לפני שתעלו אותו מחדש.',
 'uploadwarning' => 'אזהרת העלאת קבצים',
 'uploadwarning-text' => 'אנא שנו את תיאור הקובץ שלמטה ונסו שוב.',
 'savefile' => 'שמירת קובץ',
@@ -2273,6 +2264,7 @@ $1',
 'ninterwikis' => '{{PLURAL:$1|קישור בינוויקי קחד|$1 קישורי בינוויקי}}',
 'nlinks' => '{{PLURAL:$1|קישור אחד|$1 קישורים}}',
 'nmembers' => '{{PLURAL:$1|דף אחד|$1 דפים}}',
+'nmemberschanged' => '$1 ← {{PLURAL:$2|חבר אחד|$2 חברים}}',
 'nrevisions' => '{{PLURAL:$1|גרסה אחת|$1 גרסאות}}',
 'nviews' => '{{PLURAL:$1|צפייה אחת|$1 צפיות}}',
 'nimagelinks' => 'בשימוש {{PLURAL:$1|בדף אחד|ב־$1 דפים}}',
@@ -2311,10 +2303,9 @@ $1',
 'protectedpages' => 'דפים מוגנים',
 'protectedpages-indef' => 'הגנות לזמן בלתי מוגבל בלבד',
 'protectedpages-cascade' => 'הגנות מדורגות בלבד',
-'protectedpagestext' => 'הדפים הבאים מוגנים מפני עריכה או העברה:',
+'protectedpages-noredirect' => 'הסתרת הפניות',
 'protectedpagesempty' => 'אין כרגע דפים מוגנים עם הפרמטרים הללו.',
 'protectedtitles' => 'כותרות מוגנות',
-'protectedtitlestext' => 'הכותרות הבאות מוגנות מפני יצירה:',
 'protectedtitlesempty' => 'אין כרגע כותרות מוגנות עם הפרמטרים האלה.',
 'listusers' => 'רשימת משתמשים',
 'listusers-editsonly' => 'הצגת משתמשים עם עריכות בלבד',
@@ -2331,9 +2322,9 @@ $1',
 שימו לב שאתרי אינטרנט אחרים עשויים לקשר לקובץ באמצעות כתובת URL ישירה, ולכן הוא עלול להופיע כאן למרות היותו בשימוש פעיל.',
 'unusedcategoriestext' => 'הקטגוריות הבאות קיימות, אבל לא נעשה שימוש בהן בשום דף או קטגוריה.',
 'notargettitle' => 'אין דף מטרה',
-'notargettext' => 'לא ציינתם דף מטרה או משתמש לגביו תבוצע פעולה זו.',
+'notargettext' => 'לא ציינת דף מטרה או משתמש לגביו תבוצע פעולה זו.',
 'nopagetitle' => 'אין דף מטרה כזה',
-'nopagetext' => 'דף המטרה שציינתם אינו קיים.',
+'nopagetext' => 'דף המטרה שציינת אינו קיים.',
 'pager-newer-n' => '{{PLURAL:$1|הבאה|$1 הבאות}}',
 'pager-older-n' => '{{PLURAL:$1|הקודמת|$1 הקודמות}}',
 'suppress' => 'הסתרה',
@@ -2348,7 +2339,7 @@ $1',
 'booksources-invalid-isbn' => 'המסת"ב שניתן כנראה אינו תקין; אנא בדקו אם ביצעתם טעויות בהעתקה מהמידע המקורי.',
 
 # Special:Log
-'specialloguserlabel' => 'בוצעו על ידי המשתמש:',
+'specialloguserlabel' => 'בוצעו על־ידי המשתמש:',
 'speciallogtitlelabel' => 'יעד (כותרת או משתמש):',
 'log' => 'יומנים',
 'all-logs-page' => 'כל היומנים הציבוריים',
@@ -2367,11 +2358,8 @@ $1',
 'allpagesto' => 'הצגת דפים עד:',
 'allarticles' => 'כל הדפים',
 'allinnamespace' => 'כל הדפים (מרחב שם $1)',
-'allnotinnamespace' => 'כל הדפים (שלא במרחב השם $1)',
-'allpagesprev' => 'הקודם',
-'allpagesnext' => 'הבא',
 'allpagessubmit' => 'הצגה',
-'allpagesprefix' => 'הדפים ששמם מתחיל ב:',
+'allpagesprefix' => 'הדפים ששמם מתחיל ב:',
 'allpagesbadtitle' => 'כותרת הדף שניתנה הייתה בלתי־תקינה או שהייתה בה קידומת של קישור לשפה אחרת או לוויקי אחר.
 ייתכן שהיא מכילה תו אחד או יותר האסורים לשימוש בכותרות.',
 'allpages-bad-ns' => 'אין מרחב שם בשם "$1".',
@@ -2485,7 +2473,7 @@ $1',
 'watchlistfor2' => 'עבור $1 $2',
 'nowatchlist' => 'אין דפים ברשימת המעקב.',
 'watchlistanontext' => 'עליכם $1 כדי לצפות או לערוך פריטים ברשימת המעקב.',
-'watchnologin' => 'לא נכנסתם לחשבון',
+'watchnologin' => 'לא נכנסת לחשבון',
 'watchnologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי לערוך את רשימת המעקב.',
 'addwatch' => 'הוספה לרשימת המעקב',
 'addedwatchtext' => 'הדף [[:$1]] נוסף ל[[Special:Watchlist|רשימת המעקב]].
@@ -2497,10 +2485,10 @@ $1',
 'unwatch' => 'הפסקת מעקב',
 'unwatchthispage' => 'הפסקת המעקב אחרי דף זה',
 'notanarticle' => 'זהו אינו דף תוכן',
-'notvisiblerev' => 'הגרסה האחרונה שנוצרה על ידי משתמש אחר נמחקה',
+'notvisiblerev' => 'הגרסה האחרונה שנוצרה על־ידי משתמש אחר נמחקה',
 'watchlist-details' => 'ברשימת המעקב יש {{PLURAL:$1|דף אחד|$1 דפים}} (לא כולל דפי שיחה).',
 'wlheader-enotif' => 'הודעות דוא"ל מאופשרות.',
-'wlheader-showupdated' => "×\93פ×\99×\9d ×©×\94שתנ×\95 ×\9e×\90×\96 ×\91×\99ק×\95ר×\9b×\9d האחרון בהם מוצגים ב'''הדגשה'''.",
+'wlheader-showupdated' => "×\93פ×\99×\9d ×©×\94שתנ×\95 ×\9e×\90×\96 ×\91×\99ק×\95ר×\9a האחרון בהם מוצגים ב'''הדגשה'''.",
 'watchmethod-recent' => 'בודק את הדפים שברשימת המעקב לשינויים אחרונים.',
 'watchmethod-list' => 'בודק את העריכות האחרונות בדפים שברשימת המעקב',
 'watchlistcontains' => 'רשימת המעקב כוללת {{PLURAL:$1|דף אחד|$1 דפים}}.',
@@ -2563,7 +2551,7 @@ $UNWATCHURL
 'deletepage' => 'מחיקה',
 'confirm' => 'אישור',
 'excontent' => 'התוכן היה: "$1"',
-'excontentauthor' => 'התוכן היה: "$1" ({{gender:$2|והתורם היחיד היה|והתורמת היחידה הייתה}} "[[Special:Contributions/$2|$2]]")',
+'excontentauthor' => 'התוכן היה: "$1" (וה{{gender:$2|תורם היחיד היה|תורמת היחידה הייתה}} "[[Special:Contributions/$2|$2]]")',
 'exbeforeblank' => 'התוכן לפני שרוקן היה: "$1"',
 'exblank' => 'הדף היה ריק',
 'delete-confirm' => 'מחיקת $1',
@@ -2592,6 +2580,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => 'עריכת סיבות המחיקה',
 'delete-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקת דפים כאלה הוגבלה כדי למנוע פגיעה בביצועי האתר.',
 'delete-warning-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.',
+'deleting-backlinks-warning' => "'''אזהרה:''' דפים אחרים מקשרים לדף שאתם עומדים למחוק.",
 
 # Rollback
 'rollback' => 'שחזור עריכות',
@@ -2640,9 +2629,9 @@ $UNWATCHURL
 'protect-text' => "בדף זה אפשר לראות ולשנות את רמת ההגנה של הדף '''$1'''.",
 'protect-locked-blocked' => "אינכם יכולים לשנות את רמת ההגנה של הדף בעודכם חסומים.
 להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
-'protect-locked-dblock' => "×\90×\99× ×\9b×\9d ×\99×\9b×\95×\9c×\99×\9d ×\9cשנ×\95ת ×\90ת ×¨×\9eת ×\94×\94×\92× ×\94 ×¢×\9c ×\94×\93×£ ×©×\9b×\9f בסיס הנתונים חסום ברגע זה.
+'protect-locked-dblock' => "×\9c×\90 × ×\99ת×\9f ×\9cשנ×\95ת ×\90ת ×¨×\9eת ×\94×\94×\92× ×\94 ×¢×\9c ×\94×\93×£ ×\9e×\9b×\99×\95×\95×\9f ×©בסיס הנתונים חסום ברגע זה.
 להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
-'protect-locked-access' => "×\9c×\9eשת×\9eש ×©×\9c×\9b×\9d אין הרשאה לשנות את רמת ההגנה של הדף.
+'protect-locked-access' => "×\9c×\97ש×\91×\95×\9f ×\94×\9eשת×\9eש ×©×\9c×\9a אין הרשאה לשנות את רמת ההגנה של הדף.
 להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
 'protect-cascadeon' => 'דף זה מוגן כרגע כיוון שהוא מוכלל {{PLURAL:$1|בדף הבא, שמופעלת עליו|בדפים הבאים, שמופעלת עליהם}} הגנה מדורגת. באפשרותכם לשנות את רמת ההגנה על הדף, אך זה לא ישפיע על ההגנה המדורגת.',
 'protect-default' => 'כל המשתמשים מורשים',
@@ -2705,7 +2694,6 @@ $UNWATCHURL
 'undeletebtn' => 'שחזור',
 'undeletelink' => 'הצגה/שחזור',
 'undeleteviewlink' => 'הצגה',
-'undeletereset' => 'איפוס',
 'undeleteinvert' => 'הפיכת הבחירה',
 'undeletecomment' => 'סיבה:',
 'undeletedrevisions' => '{{PLURAL:$1|שוחזרה גרסה אחת|שוחזרו $1 גרסאות}}',
@@ -2744,7 +2732,7 @@ $1',
 
 # Contributions
 'contributions' => 'תרומות {{GENDER:$1|המשתמש|המשתמשת}}',
-'contributions-title' => 'תרומות של המשתמש $1',
+'contributions-title' => 'תרומות של ה{{GENDER:$1|משתמש|משתמשת}} $1',
 'mycontris' => 'תרומות',
 'contribsub2' => 'עבור {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'לא נמצאו שינויים המתאימים לקריטריונים אלו.',
@@ -2794,7 +2782,6 @@ $1',
 'block' => 'חסימת משתמש',
 'unblock' => 'שחרור משתמש',
 'blockip' => 'חסימת משתמש',
-'blockip-title' => 'חסימת משתמש',
 'blockip-legend' => 'חסימת משתמש',
 'blockiptext' => 'השתמשו בטופס שלהלן כדי לחסום את הרשאות הכתיבה מכתובת IP או משתמש מסוימים.
 חסימות כאלה צריכות להתבצע רק כדי למנוע השחתה, ובהתאם ל[[{{MediaWiki:Policy-url}}|נהלים]].
@@ -2802,7 +2789,6 @@ $1',
 'ipadressorusername' => 'כתובת IP או שם משתמש:',
 'ipbexpiry' => 'פקיעה:',
 'ipbreason' => 'סיבה:',
-'ipbreasonotherlist' => 'סיבה אחרת',
 'ipbreason-dropdown' => "* סיבות חסימה נפוצות
 ** הוספת מידע שגוי
 ** הסרת תוכן מדפים
@@ -2818,8 +2804,6 @@ $1',
 'ipbsubmit' => 'חסימה',
 'ipbother' => 'זמן אחר:',
 'ipboptions' => 'שעתיים:2 hours,יום:1 day,שלושה ימים:3 days,שבוע:1 week,שבועיים:2 weeks,חודש:1 month,שלושה חודשים:3 months,שישה חודשים:6 months,שנה:1 year,זמן בלתי מוגבל:infinite',
-'ipbotheroption' => 'אחר',
-'ipbotherreason' => 'סיבה אחרת/נוספת:',
 'ipbhidename' => 'הסתרת שם המשתמש מהעריכות ומהרשימות',
 'ipbwatchuser' => 'מעקב אחר דף המשתמש ודף השיחה של משתמש זה',
 'ipb-disableusertalk' => 'ביטול האפשרות של המשתמש לערוך את דף השיחה של עצמו בעת החסימה',
@@ -2830,8 +2814,9 @@ $1',
 'blockipsuccesstext' => '{{GENDER:$1|המשתמש|המשתמשת}} [[Special:Contributions/$1|$1]] {{GENDER:$1|נחסם|נחסמה}}.
 
 ראו את [[Special:BlockList|רשימת החסומים]] כדי לצפות בחסימות.',
-'ipb-blockingself' => '×\90ת×\9d ×¢×\95×\9e×\93×\99×\9d ×\9c×\97ס×\95×\9d ×\90ת ×¢×¦×\9e×\9b×\9d! ×\94×\90×\9d ×\90ת×\9d ×\91×\90×\9eת ×¨×\95צ×\99×\9d ×\9cעש×\95ת ×\90ת ×\96×\94?',
+'ipb-blockingself' => '×\90ת×\9d ×¢×\95×\9e×\93×\99×\9d ×\9c×\97ס×\95×\9d ×\90ת ×¢×¦×\9e×\9b×\9d! ×\94×\90×\9d ×\90ת×\9d ×\91×\98×\95×\97×\99×\9d ×©×\91רצ×\95× ×\9b×\9d ×\9cעש×\95ת ×\96×\90ת?',
 'ipb-confirmhideuser' => 'אתם עומדים לחסום משתמש עם האפשרות "הסתרת משתמש". פעולה זו תסתיר את שם המשתמש בכל הרשימות ופעולות היומן. האם אתם בטוחים שברצונכם לעשות זאת?',
+'ipb-confirmaction' => 'אם אתם באמת בטוחים שברצונכם לעשות זאת, אנא סמנו את השדה "{{int:ipb-confirm}}" שבתחתית.',
 'ipb-edit-dropdown' => 'עריכת סיבות החסימה',
 'ipb-unblock-addr' => 'הסרת חסימה של $1',
 'ipb-unblock' => 'הסרת חסימה של שם משתמש או כתובת IP',
@@ -2876,8 +2861,10 @@ $1',
 'autoblocker' => 'נחסמתם באופן אוטומטי משום שאתם חולקים את כתובת ה־IP שלכם עם [[User:$1|$1]].
 הסיבה שניתנה לחסימת $1 היא "\'\'\'$2\'\'\'"',
 'blocklogpage' => 'יומן חסימות',
-'blocklog-showlog' => 'משתמש זה נחסם בעבר. יומן החסימות מוצג למטה:',
-'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר. יומן ההסתרות מוצג למטה:',
+'blocklog-showlog' => 'משתמש זה נחסם בעבר.
+יומן החסימות מוצג להלן:',
+'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר.
+יומן ההסתרות מוצג להלן:',
 'blocklogentry' => 'חסם את [[$1]] למשך $2 $3',
 'reblock-logentry' => 'שינה את הגדרות החסימה של [[$1]] עם זמן פקיעה של $2 $3',
 'blocklogtext' => 'זהו יומן פעולות החסימה והשחרור של משתמשים.
@@ -2895,7 +2882,7 @@ $1',
 'ipb_expiry_invalid' => 'זמן פקיעת החסימה אינו תקין.',
 'ipb_expiry_temp' => 'חסימות הכוללות הסתרת שם משתמש חייבות להיות לזמן בלתי מוגבל.',
 'ipb_hide_invalid' => 'לא ניתן להסתיר שם משתמש זה; ייתכן שבוצעו ממנו יותר מדי עריכות.',
-'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם',
+'ipb_already_blocked' => 'המשתמש "$1" כבר נחסם.',
 'ipb-needreblock' => '$1 כבר נחסם. האם ברצונכם לשנות את הגדרות החסימה?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|חסימה אחרת|חסימות אחרות}}',
 'unblock-hideuser' => 'לא ניתן לשחרר משתמש זה, כיוון ששם המשתמש שלו הוסתר.',
@@ -2906,13 +2893,13 @@ $1',
 'proxyblocker' => 'חוסם פרוקסי',
 'proxyblockreason' => 'כתובת ה־IP שלכם נחסמה משום שהיא כתובת של שרת פרוקסי פתוח.
 אנא צרו קשר עם ספק האינטרנט שלכם או עם התמיכה הטכנית של הארגון שלכם והודיעו להם על בעיית האבטחה החמורה הזאת.',
-'sorbsreason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו.',
-'sorbs_create_account_reason' => 'כתובת ה־IP שלכם רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר זה משתמש בו. אינכם יכולים ליצור חשבון.',
+'sorbsreason' => 'כתובת ה־IP שלך רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר {{SITENAME}} משתמש בו.',
+'sorbs_create_account_reason' => 'כתובת ה־IP שלך רשומה ככתובת פרוקסי פתוחה ב־DNSBL שאתר {{SITENAME}} משתמש בו.
+אין באפשרותך ליצור חשבון.',
 'xffblockreason' => 'כתובת IP הנמצאת בכותרת X-Forwarded-For, בין אם שלכם או של שרת פרוקסי שאתם משתמשים בו, נחסמה. סיבת החסימה המקורית הייתה: $1',
-'cant-block-while-blocked' => 'אינכם יכולים לחסום משתמשים אחרים כשאתם חסומים.',
 'cant-see-hidden-user' => 'המשתמש שאתם מנסים לחסום כבר נחסם והוסתר. כיוון שאין לכם את ההרשאה לחסימת משתמש והסתרתו, אינכם רשאים לצפות בחסימת המשתמש או לערוך אותה.',
-'ipbblocked' => 'אינכם יכולים לחסום או לשחרר את חסימתם של משתמשים אחרים, כיוון שאתם עצמכם חסומים',
-'ipbnounblockself' => 'אינכם רשאים לשחרר את חסימתכם',
+'ipbblocked' => 'אינכם יכולים לחסום או לשחרר את חסימתם של משתמשים אחרים, כיוון שאתם עצמכם חסומים.',
+'ipbnounblockself' => 'אינכם רשאים לשחרר את חסימתכם.',
 
 # Developer tools
 'lockdb' => 'נעילת בסיס נתונים',
@@ -2970,7 +2957,6 @@ $1',
 במקרים אלו, תצטרכו להעביר או לשלב את הדפים באופן ידני, אם תרצו.',
 'movearticle' => 'העברת דף:',
 'moveuserpage-warning' => "'''אזהרה:''' אתם עומדים להעביר דף משתמש. שימו לב שרק הדף יועבר וששם המשתמש '''לא''' ישתנה.",
-'movenologin' => 'לא נכנסתם לחשבון',
 'movenologintext' => 'עליכם [[Special:UserLogin|להיכנס לחשבון]] כדי להעביר דפים.',
 'movenotallowed' => 'אינכם מורשים להעביר דפים.',
 'movenotallowedfile' => 'אינכם מורשים להעביר קבצים.',
@@ -2986,8 +2972,6 @@ $1',
 'articleexists' => 'קיים כבר דף באותו שם, או שהשם שבחרת אינו תקין.
 נא לבחור שם אחר.',
 'cantmove-titleprotected' => 'אינכם יכולים להעביר את הדף לשם זה, כיוון שהשם החדש מוגן מפני יצירה',
-'talkexists' => 'הדף עצמו הועבר בהצלחה, אבל דף השיחה לא הועבר כיוון שקיים כבר דף שיחה במיקום החדש. אנא מזגו אותם ידנית.',
-'movedto' => 'הועבר לשם',
 'movetalk' => 'העברה גם של דף השיחה',
 'move-subpages' => 'העברת כל דפי המשנה (עד $1)',
 'move-talk-subpages' => 'העברת כל דפי המשנה של דף השיחה (עד $1)',
@@ -3124,7 +3108,7 @@ $2',
 'import-upload' => 'העלאת קובץ XML',
 'import-token-mismatch' => 'מידע הכניסה אבד.
 נא לנסות שוב.',
-'import-invalid-interwiki' => '×\9c×\90 × ×\99ת×\9f ×\9c×\99×\99×\91×\90 ×\9e×\90תר ×\94×\95×\95×\99ק×\99 ×©×¦×\99×\99נת×\9d.',
+'import-invalid-interwiki' => '×\9c×\90 × ×\99ת×\9f ×\9c×\99×\99×\91×\90 ×\9e×\90תר ×\94×\95×\95×\99ק×\99 ×©×¦×\95×\99×\9f.',
 'import-error-edit' => 'לא ניתן לייבא את הדף "$1" כיוון שאין לך הרשאה לערוך אותו.',
 'import-error-create' => 'לא ניתן לייבא את הדף "$1" כיוון שאין לך הרשאה ליצור אותו.',
 'import-error-interwiki' => 'לא ניתן לייבא את הדף "$1" כיוון ששמו שמור לקישור חיצוני (בין־ויקי).',
@@ -3167,8 +3151,8 @@ $2',
 'tooltip-ca-talk' => 'שיחה על דף זה',
 'tooltip-ca-edit' => 'באפשרותכם לערוך דף זה. אנא השתמשו בלחצן "תצוגה מקדימה" לפני השמירה',
 'tooltip-ca-addsection' => 'הוספת פסקה חדשה',
-'tooltip-ca-viewsource' => '×\94×\93×£ ×\94זה מוגן.
\91×\90פשר×\95ת×\9b×\9d לצפות בטקסט המקור שלו',
+'tooltip-ca-viewsource' => '×\93×£ זה מוגן.
\91×\90פשר×\95ת×\9a לצפות בטקסט המקור שלו',
 'tooltip-ca-history' => 'גרסאות קודמות של דף זה',
 'tooltip-ca-protect' => 'הגנה על דף זה',
 'tooltip-ca-unprotect' => 'שינוי ההגנה על דף זה',
@@ -3183,7 +3167,7 @@ $2',
 'tooltip-p-logo' => 'ביקור בעמוד הראשי',
 'tooltip-n-mainpage' => 'ביקור בעמוד הראשי',
 'tooltip-n-mainpage-description' => 'ביקור בעמוד הראשי',
-'tooltip-n-portal' => '×\90×\95×\93×\95ת ×\94×\9e×\99×\96×\9d, ×\90×\99×\9a ×ª×\95×\9b×\9c×\95 ×\9c×¢×\96×\95ר, ×\90×\99פ×\94 למצוא דברים',
+'tooltip-n-portal' => '×\90×\95×\93×\95ת ×\94×\9e×\99×\96×\9d, ×\9b×\99צ×\93 ×ª×\95×\9b×\9c×\95 ×\9c×¢×\96×\95ר, ×\94×\99×\9b×\9f למצוא דברים',
 'tooltip-n-currentevents' => 'מציאת מידע רקע על האירועים האחרונים',
 'tooltip-n-recentchanges' => 'רשימת השינויים האחרונים באתר',
 'tooltip-n-randompage' => 'צפייה בדף תוכן אקראי',
@@ -3232,6 +3216,7 @@ $2',
 'print.css' => '/* הסגנונות הנכתבים כאן ישפיעו על הפלט בהדפסה בלבד */',
 'noscript.css' => '/* הסגנונות הנכתבים כאן ישפיעו על משתמשים עם JavaScript מבוטל */',
 'group-autoconfirmed.css' => '/* הסגנונות הנכתבים כאן ישפיעו על משתמשים ותיקים בלבד */',
+'group-user.css' => '/* הסגנונות הנכתבים כאן ישפיעו על משתמשים רשומים בלבד */',
 'group-bot.css' => '/* הסגנונות הנכתבים כאן ישפיעו על בוטים בלבד */',
 'group-sysop.css' => '/* הסגנונות הנכתבים כאן ישפיעו על מפעילי מערכת בלבד */',
 'group-bureaucrat.css' => '/* הסגנונות הנכתבים כאן ישפיעו על ביורוקרטים בלבד */',
@@ -3243,6 +3228,7 @@ $2',
 'modern.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Modern */',
 'vector.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ רק עבור המשתמשים בעיצוב Vector */',
 'group-autoconfirmed.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ עבור משתמשים ותיקים בלבד */',
+'group-user.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ עבור משתמשים רשומים בלבד */',
 'group-bot.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ עבור בוטים בלבד */',
 'group-sysop.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ עבור מפעילי מערכת בלבד */',
 'group-bureaucrat.js' => '/* כל סקריפט JavaScript שנכתב כאן ירוץ עבור ביורוקרטים בלבד */',
@@ -3287,14 +3273,14 @@ $2',
 'pageinfo-article-id' => 'מזהה הדף',
 'pageinfo-language' => 'שפת התוכן של הדף',
 'pageinfo-content-model' => 'סוג התוכן של הדף',
-'pageinfo-robot-policy' => 'איסוף על ידי רובוטים של מנועי חיפוש',
+'pageinfo-robot-policy' => 'איסוף על־ידי רובוטים של מנועי חיפוש',
 'pageinfo-robot-index' => 'מותר',
 'pageinfo-robot-noindex' => 'אסור',
 'pageinfo-views' => 'מספר הצפיות',
 'pageinfo-watchers' => 'מספר העוקבים אחר הדף',
 'pageinfo-few-watchers' => 'פחות מ{{PLURAL:$1|עוקב אחד|־$1 עוקבים}}',
 'pageinfo-redirects-name' => 'מספר ההפניות לדף זה',
-'pageinfo-subpages-name' => 'מספר דפי־המשנה של דף זה',
+'pageinfo-subpages-name' => 'מספר דפי המשנה של דף זה',
 'pageinfo-subpages-value' => '$1 ({{PLURAL:$2|הפניה אחת|$2 הפניות}}; {{PLURAL:$3|דף רגיל אחד|$3 דפים רגילים}})',
 'pageinfo-firstuser' => 'יוצר הדף',
 'pageinfo-firsttime' => 'תאריך יצירת הדף',
@@ -3331,9 +3317,9 @@ $2',
 'markaspatrolleddiff' => 'סימון השינוי כבדוק',
 'markaspatrolledtext' => 'סימון דף זה כבדוק',
 'markedaspatrolled' => 'השינוי סומן כבדוק',
-'markedaspatrolledtext' => 'השינוי שבחרתם בדף [[:$1]] סומן כבדוק.',
+'markedaspatrolledtext' => 'השינוי שבחרת בדף [[:$1]] סומן כבדוק.',
 'rcpatroldisabled' => 'אפשרות סימון השינויים כבדוקים מבוטלת',
-'rcpatroldisabledtext' => '×\94ת×\9b×\95× ×\94 ×©×\9c ×¡×\99×\9e×\95×\9f ×©×\99× ×\95×\99 ×\9b×\91×\93×\95ק ×\91ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×\9e×\91×\95×\98×\9cת.',
+'rcpatroldisabledtext' => 'ת×\9b×\95נת ×¡×\99×\9e×\95×\9f ×©×\99× ×\95×\99×\99×\9d ×\9b×\91×\93×\95ק×\99×\9d ×\91×\93×£ ×\94ש×\99× ×\95×\99×\99×\9d ×\94×\90×\97ר×\95× ×\99×\9d ×\91×\95×\98×\9c×\94.',
 'markedaspatrollederror' => 'לא ניתן לסמן כבדוק',
 'markedaspatrollederrortext' => 'עליכם לציין גרסה שתציינו כבדוקה.',
 'markedaspatrollederror-noautopatrol' => 'אינכם מורשים לסמן את השינויים של עצמכם כבדוקים.',
@@ -3513,7 +3499,7 @@ $1',
 'exif-lightsource' => 'מקור אור',
 'exif-flash' => 'מַבזק',
 'exif-focallength' => 'אורך מוקדי העדשות',
-'exif-focallength-format' => '$1 מ"מ',
+'exif-focallength-format' => '{{PLURAL:$1|מילימטר אחד|$1 מילימטרים}}',
 'exif-subjectarea' => 'נושא האזור',
 'exif-flashenergy' => 'אנרגיית המַבזק',
 'exif-focalplanexresolution' => 'משטח הפוקוס ברזולוציה האופקית',
@@ -3850,19 +3836,14 @@ $1',
 'exif-urgency-high' => 'גבוהה ($1)',
 'exif-urgency-other' => 'מותאמת אישית ($1)',
 
-# External editor support
-'edit-externally' => 'עריכת קובץ זה באמצעות יישום חיצוני',
-'edit-externally-help' => '(ראו את [https://www.mediawiki.org/wiki/Manual:External_editors הוראות ההתקנה] למידע נוסף)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'הכול',
 'namespacesall' => 'הכול',
 'monthsall' => 'הכול',
-'limitall' => 'הכול',
 
 # Email address confirmation
 'confirmemail' => 'אימות כתובת דוא"ל',
-'confirmemail_noemail' => '×\90×\99×\9f ×\9c×\9b×\9d ×\9bת×\95×\91ת ×\93×\95×\90\9c ×ª×§×¤×\94 ×\94×\9e×\95×\92×\93רת ×\91[[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] ×©×\9c×\9b×\9d.',
+'confirmemail_noemail' => '×\90×\99×\9f ×\9c×\9a ×\9bת×\95×\91ת ×\93×\95×\90\9c ×ª×§×¤×\94 ×\94×\9e×\95×\92×\93רת ×\91[[Special:Preferences|×\94×¢×\93פ×\95ת ×\94×\9eשת×\9eש]] ×©×\9c×\9a.',
 'confirmemail_text' => 'אתר זה דורש שתאמתו את כתובת הדוא"ל שלכם לפני שתשתמשו בשירותי הדוא"ל. לחצו על הכפתור למטה כדי לשלוח דוא"ל עם קוד אימות לכתובת הדוא"ל שהזנתם. טענו את הקישור בדפדפן שלכם כדי לאשר שכתובת הדוא"ל תקפה.',
 'confirmemail_pending' => 'קוד אימות דוא"ל כבר נשלח אליכם; אם יצרתם את החשבון לאחרונה, ייתכן שתרצו לחכות מספר דקות עד שיגיע לפני שתנסו לבקש קוד חדש.',
 'confirmemail_send' => 'לשלוח קוד אימות',
@@ -3873,11 +3854,10 @@ $1',
 
 תוכנת שליחת הדוא"ל החזירה את ההודעה הבאה: $1',
 'confirmemail_invalid' => 'קוד האימות שגוי. ייתכן שפג תוקפו.',
-'confirmemail_needlogin' => 'עליכם לבצע $1 כדי לאמת את כתובת הדוא"ל שלכם.',
-'confirmemail_success' => 'כתובת הדוא"ל שלכם אושרה.
-כעת באפשרותכם [[Special:UserLogin|להיכנס לחשבון שלכם]] וליהנות מהאתר.',
-'confirmemail_loggedin' => 'כתובת הדוא"ל שלכם אושרה כעת.',
-'confirmemail_error' => 'שגיאה בשמירת קוד האימות.',
+'confirmemail_needlogin' => 'עליכם $1 כדי לאמת את כתובת הדוא"ל שלכם.',
+'confirmemail_success' => 'כתובת הדוא"ל שלך אושרה.
+כעת באפשרותך [[Special:UserLogin|להיכנס לחשבון שלך]] וליהנות מהאתר.',
+'confirmemail_loggedin' => 'כתובת הדוא"ל שלך אושרה כעת.',
 'confirmemail_subject' => 'קוד אימות דוא"ל מ{{grammar:תחילית|{{SITENAME}}}}',
 'confirmemail_body' => 'מישהו, כנראה אתם (מכתובת ה־IP הזו: $1),
 רשם את החשבון "$2" עם כתובת הדוא"ל הזו ב{{grammar:תחילית|{{SITENAME}}}}.
@@ -3950,6 +3930,11 @@ $5
 'imgmultigo' => 'הצגה',
 'imgmultigoto' => 'מעבר לדף $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(שפת ברירת המחדל)',
+'img-lang-info' => 'הצגת תמונה זו בשפה $1. $2',
+'img-lang-go' => 'הצגה',
+
 # Table pager
 'ascending_abbrev' => 'עולה',
 'descending_abbrev' => 'יורד',
@@ -4096,8 +4081,18 @@ $5
 'version-parser-function-hooks' => 'מבנים של פונקציות מפענח',
 'version-hook-name' => 'שם ה־Hook',
 'version-hook-subscribedby' => 'הפונקציה הרושמת',
-'version-version' => '(גרסה $1)',
-'version-license' => 'רישיון',
+'version-version' => '($1)',
+'version-license' => 'רישיון עבור מדיה־ויקי',
+'version-ext-license' => 'רישיון',
+'version-ext-colheader-name' => 'הרחבה',
+'version-ext-colheader-version' => 'גרסה',
+'version-ext-colheader-license' => 'רישיון',
+'version-ext-colheader-description' => 'תיאור',
+'version-ext-colheader-credits' => 'מחברים',
+'version-license-title' => 'רישיון עבור $1',
+'version-license-not-found' => 'לא נמצא מידע מפורט על הרישיון עבור הרחבה זו.',
+'version-credits-title' => 'תורמים ל{{grammar:תחילית|$1}}',
+'version-credits-not-found' => 'לא נמצא מידע מפורט על התורמים להרחבה זו.',
 'version-poweredby-credits' => "אתר הוויקי הזה מופעל על ידי '''[https://www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
 'version-poweredby-others' => 'אחרים',
 'version-poweredby-translators' => 'מתרגמי translatewiki.net',
@@ -4115,13 +4110,14 @@ $5
 'version-entrypoints-header-url' => 'כתובת',
 
 # Special:Redirect
-'redirect' => 'הפניה לפי שם קובץ, מספר משתמש או מספר גרסה',
+'redirect' => 'הפניה לפי שם קובץ, מספר משתמש, מספר דף או מספר גרסה',
 'redirect-legend' => 'הפניה לקובץ או לדף',
-'redirect-summary' => 'דף מיוחד זה מפנה לקובץ (בהינתן שם הקובץ), לדף (בהינתן מספר גרסה), או לדף משתמש (בהינתן מספר משתמש). דוגמאות לשימוש: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], או [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'דף מיוחד זה מפנה לקובץ (בהינתן שם הקובץ), לדף (בהינתן מספר גרסה או מספר דף), או לדף משתמש (בהינתן מספר משתמש). דוגמאות לשימוש: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], או [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'מעבר',
 'redirect-lookup' => 'סוג:',
 'redirect-value' => 'ערך:',
 'redirect-user' => 'מספר משתמש',
+'redirect-page' => 'מספר דף',
 'redirect-revision' => 'גרסת דף',
 'redirect-file' => 'שם קובץ',
 'redirect-not-exists' => 'הערך לא נמצא',
@@ -4188,15 +4184,14 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'השוואת דפים',
-'compare-selector' => 'השוואת גרסאות של דפים',
 'compare-page1' => 'דף 1',
 'compare-page2' => 'דף 2',
 'compare-rev1' => 'גרסה 1',
 'compare-rev2' => 'גרסה 2',
 'compare-submit' => 'השוואה',
-'compare-invalid-title' => 'שם הדף שציינתם אינו תקין.',
-'compare-title-not-exists' => 'הדף שציינתם אינו קיים.',
-'compare-revision-not-exists' => 'הגרסה שציינתם אינה קיימת.',
+'compare-invalid-title' => 'שם הדף שציינת אינו תקין.',
+'compare-title-not-exists' => 'הדף שציינת אינו קיים.',
+'compare-revision-not-exists' => 'הגרסה שציינת אינה קיימת.',
 
 # Database error messages
 'dberr-header' => 'בעיה בוויקי',
@@ -4209,12 +4204,12 @@ $5
 '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-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' => 'ביטול השינויים',
@@ -4255,8 +4250,8 @@ $5
 'logentry-patrol-patrol-auto' => '$1 {{GENDER:$2|סימן|סימנה}} אוטומטית את הגרסה $4 בדף $3 כבדוקה',
 'logentry-newusers-newusers' => 'חשבון המשתמש $1 {{GENDER:$2|נוצר}}',
 'logentry-newusers-create' => 'חשבון המשתמש $1 {{GENDER:$2|נוצר}}',
-'logentry-newusers-create2' => 'חשבון המשתמש $3 נוצר על ידי $1',
-'logentry-newusers-byemail' => 'חשבון המשתמש $3 נוצר על ידי $1 והסיסמה נשלחה בדוא"ל',
+'logentry-newusers-create2' => 'חשבון המשתמש $3 נוצר על־ידי $1',
+'logentry-newusers-byemail' => 'חשבון המשתמש $3 נוצר על־ידי $1 והסיסמה נשלחה בדוא"ל',
 'logentry-newusers-autocreate' => 'חשבון המשתמש $1 {{GENDER:$2|נוצר}} אוטומטית',
 'logentry-rights-rights' => '$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3 מ$4 ל$5&rlm;',
 'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|שינה|שינתה}} את ההרשאות של $3',
@@ -4316,6 +4311,7 @@ $5
 'api-error-overwrite' => 'לא מותרת החלפת קובץ קיים.',
 'api-error-stashfailed' => 'שגיאה פנימית: השרת נכשל באחסון הקובץ הזמני.',
 'api-error-publishfailed' => 'שגיאה פנימית: השרת נכשל בפרסום הקובץ הזמני.',
+'api-error-stasherror' => 'הייתה שגיאה בהעלאת הקובץ למאגר.',
 'api-error-timeout' => 'השרת לא השיב בזמן המצופה.',
 'api-error-unclassified' => 'אירעה שגיאה בלתי ידועה.',
 'api-error-unknown-code' => 'שגיאה בלתי ידועה: "$1".',
@@ -4365,10 +4361,14 @@ $5
 'expand_templates_input' => 'טקסט הקלט:',
 'expand_templates_output' => 'תוצאה',
 'expand_templates_xml_output' => 'פלט XML',
+'expand_templates_html_output' => 'פלט HTML גולמי',
 'expand_templates_ok' => 'אישור',
 'expand_templates_remove_comments' => 'הסרת הערות',
 'expand_templates_remove_nowiki' => 'הסרת תגי <nowiki> בתוצאה',
 'expand_templates_generate_xml' => 'הצגת עץ הפענוח של XML',
+'expand_templates_generate_rawhtml' => 'הצגת HTML גולמי',
 'expand_templates_preview' => 'תצוגה מקדימה',
 
+# Unknown messages
+'uploadinvalidxml' => 'לא ניתן לפרש את ה־XML בקובץ שהועלה.',
 );
index 479df0b..b22c623 100644 (file)
@@ -16,6 +16,7 @@
  * @author Bhawani Gautam
  * @author Bhawani Gautam Rhk
  * @author Charu
+ * @author Darshan kandolkar
  * @author Dineshjk
  * @author Hemant wikikosh1
  * @author Htt
@@ -79,10 +80,9 @@ $specialPageAliases = array(
        'Allmessages'               => array( 'सभी_सन्देश', 'सभी_संदेश' ),
        'Allpages'                  => array( 'सभी_पृष्ठ', 'सभी_पन्ने' ),
        'Ancientpages'              => array( 'पुराने_पृष्ठ', 'पुराने_पन्ने' ),
-       'Badtitle'                  => array( 'à¤\96़राब_शà¥\80रà¥\8dषà¤\95' ),
+       'Badtitle'                  => array( 'खराब_शीर्षक' ),
        'Blankpage'                 => array( 'रिक्त_पृष्ठ', 'खाली_पृष्ठ' ),
        'Block'                     => array( 'अवरोधन', 'आइ_पी_अवरोधन', 'सदस्य_अवरोधन' ),
-       'Blockme'                   => array( 'स्वावरोधन', 'स्व_अवरोधन', 'मुझे_रोकिये' ),
        'Booksources'               => array( 'पुस्तक_स्रोत', 'किताब_स्रोत' ),
        'BrokenRedirects'           => array( 'टूटे_पुनर्निर्देश', 'टूटे_अनुप्रेष' ),
        'Categories'                => array( 'श्रेणियाँ' ),
@@ -94,10 +94,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'खाता_बनाएँ', 'खाता_बनायें', 'खाता_खोलें' ),
        'Deadendpages'              => array( 'बन्द_पृष्ठ', 'बन्द_पन्ने' ),
        'DeletedContributions'      => array( 'हटाए_गए_योगदान', 'हटाये_गये_योगदान' ),
-       'Disambiguations'           => array( 'बहुविकल्पी_कड़ियाँ', 'बहुविकल्पित' ),
        'DoubleRedirects'           => array( 'दुगुने_पुनर्निर्देश', 'दुगुने_अनुप्रेष' ),
        'EditWatchlist'             => array( 'ध्यानसूची_सम्पादन', 'ध्यानसूची_संपादन', 'ध्यानसूची_सम्पादन_करें' ),
        'Emailuser'                 => array( 'ईमेल_करें', 'सदस्य_को_ईमेल_करें' ),
+       'ExpandTemplates'           => array( 'साँचे_खोलें', 'साँचे_बढ़ाएँ' ),
        'Export'                    => array( 'निर्यात' ),
        'Fewestrevisions'           => array( 'न्यूनतम_अवतरण', 'कम_सम्पादित_पृष्ठ' ),
        'FileDuplicateSearch'       => array( 'फ़ाइल_प्रति_खोज', 'फाइल_प्रति_खोज', 'संचिका_प्रति_खोज' ),
@@ -210,7 +210,6 @@ $messages = array(
 'tog-minordefault' => 'मेरे सभी सम्पादन छोटे बदलाव हैं',
 'tog-previewontop' => 'सम्पादन बक्से के ऊपर झलक दिखाएँ',
 'tog-previewonfirst' => 'प्रथम सम्पादन के बाद झलक दिखाएँ',
-'tog-nocache' => 'ब्राउज़र पृष्ठ कैशिंग अक्षम करें',
 'tog-enotifwatchlistpages' => 'मेरी ध्यानसूची में दर्ज किसी भी पृष्ठ अथवा फ़ाइल में परिवर्तन होने पर मुझे ई-मेल करें',
 'tog-enotifusertalkpages' => 'मेरा वार्ता पृष्ठ परिवर्तित होने पर मुझे ई-मेल करें',
 'tog-enotifminoredits' => 'छोटे परिवर्तनों के लिए भी मुझे ई-मेल भेजें',
@@ -345,7 +344,6 @@ $messages = array(
 'qbedit' => 'सम्पादन',
 'qbpageoptions' => 'यह पृष्ठ',
 'qbmyoptions' => 'मेरे पृष्ठ',
-'qbspecialpages' => 'विशेष पृष्ठ',
 'faq' => 'बहुधा पूछे प्रश्न',
 'faqpage' => 'Project:अक्सर पूछे जाने वाले सवाल',
 
@@ -564,9 +562,6 @@ $1',
 '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' => 'कार्य समाप्त कर दिया गया है',
@@ -747,7 +742,7 @@ $2',
 'user-mail-no-body' => 'एक खाली अथवा बहुत छोटी ई-मेल भेजने की कोशिश की गयी।',
 
 # Change password dialog
-'resetpass' => 'कूटशब्द बदलें',
+'changepassword' => 'कूटशब्द बदलें',
 'resetpass_announce' => 'आप ई-मेल से प्राप्त अस्थायी कोड से लॉग इन हुए हैं।
 लॉग इन को पूरा करने के लिये आपको यहाँ एक नया कूटशब्द देना होगा:',
 'resetpass_text' => '<!-- पाठ यहाँ लिखें -->',
@@ -1147,10 +1142,6 @@ $2
 'revisiondelete' => 'अवतरण हटायें/पुनर्स्थापित करें',
 'revdelete-nooldid-title' => 'अमान्य लक्ष्य अवतरण',
 'revdelete-nooldid-text' => 'इस क्रिया को करने के लिये आपने लक्ष्य अवतरण नहीं दिये हैं, या फिर आपने दिया हुआ अवतरण अस्तित्व में नहीं हैं या फिर आप सद्य अवतरण को छुपाने का प्रयत्न कर रहे हैं।',
-'revdelete-nologtype-title' => 'लॉग प्रकार नहीं दिया गया',
-'revdelete-nologtype-text' => 'इस क्रिया के लिए आपने लॉग प्रकार निर्दिष्ट नहीं किया है।',
-'revdelete-nologid-title' => 'अवैध लॉग प्रविष्टि',
-'revdelete-nologid-text' => 'आपने या तो इस कार्यकलाप को करने के लिए लक्ष्यित लॉग प्रसंग नहीं दिया है या यह प्रविष्टि मौजूद नहीं है।',
 'revdelete-no-file' => 'निर्दिष्ट फ़ाइल मौजूद नहीं है।',
 'revdelete-show-file-confirm' => 'क्या आप वाकई फ़ाइल "<nowiki>$1</nowiki>" के $2 को $3 बजे बने, हटाए जा चुके अवतरण को देखना चाहते हैं?',
 'revdelete-show-file-submit' => 'हाँ',
@@ -1184,8 +1175,6 @@ $1",
 'logdelete-failure' => "'''लॉग दृश्यता का जमाव नहीं किया जा सका:'''
 $1",
 'revdel-restore' => 'दृश्यता बदलें',
-'revdel-restore-deleted' => 'हटाए गए अवतरण',
-'revdel-restore-visible' => 'दृश्य अवतरण',
 'pagehist' => 'पृष्ठ इतिहास',
 'deletedhist' => 'हटाया हुआ इतिहास',
 'revdelete-hide-current' => '$2 को, $1 बजे वाला मद छिपाया नहीं जा सका: यह सबसे ताज़ा अवतरण है।
@@ -1264,12 +1253,8 @@ $1",
 # 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}}',
@@ -1278,10 +1263,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|अगला|अगले}} $1 परिणाम',
 'shown-title' => 'हर पृष्ठ पर $1 {{PLURAL:$1|परिणाम}} दिखाएँ',
 'viewprevnext' => 'देखें ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''इस विकि पर \"[[:\$1]]\" नाम का एक पृष्ठ है'''",
 'searchmenu-new' => "'''इस विकि पर \"[[:\$1]]\" नाम का पृष्ठ बनाएँ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|इस उपसर्ग वाले पृष्ठ देखें]]',
 'searchprofile-articles' => 'सामग्री पृष्ठ',
 'searchprofile-project' => 'सहायता और परियोजना पृष्ठ',
 'searchprofile-images' => 'मल्टीमीडिया',
@@ -1302,20 +1285,16 @@ $1",
 'search-interwiki-default' => '$1 के परिणाम:',
 'search-interwiki-more' => '(और)',
 'search-relatedarticle' => 'सम्बंधित',
-'mwsuggest-disable' => 'खोज सुझाव बंद करें',
 'searcheverything-enable' => 'सभी नामस्थानों में खोजें',
 'searchrelated' => 'सम्बंधित',
 'searchall' => 'सभी',
 'showingresults' => "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम '''$1''' परिणाम {{PLURAL:$1|दिखाया गया है|दिखाए गए हैं}}।",
 'showingresultsnum' => "नीचे क्रमांक '''$2''' से प्रारंभ कर के अधिकतम '''$3''' परिणाम {{PLURAL:$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' => 'कोई भी नहीं',
@@ -1329,7 +1308,6 @@ $1",
 'preferences' => 'मेरी वरीयताएँ',
 'mypreferences' => 'पसंद',
 'prefs-edits' => 'संपादन संख्या:',
-'changepassword' => 'कूटशब्द बदलें',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
 'datedefault' => 'खा़स पसंद नहीं',
@@ -1352,13 +1330,11 @@ $1",
 'prefs-email' => 'ई-मेल वरीयताएँ',
 'prefs-rendering' => 'शक्लोसूरत',
 'saveprefs' => 'संजोएँ',
-'resetprefs' => 'ना संजोये गये बदलाव रद्द करें',
 'restoreprefs' => 'वापिस मूल जमावों पर आ जाएँ (सभी भागों में)',
 'prefs-editing' => 'संपादन',
 'rows' => 'कतारें:',
 'columns' => 'कॉलम:',
 'searchresultshead' => 'खोज',
-'resultsperpage' => 'प्रति पृष्ठ हिट्स:',
 'stub-threshold' => '<a href="#" class="stub">आधार कड़ियों</a> का अधिकतम आकार (बाइट):',
 'stub-threshold-disabled' => 'अक्षम किया गया',
 'recentchangesdays' => 'हाल में हुए बदलावों में दर्शाने के दिन:',
@@ -1373,7 +1349,6 @@ $1",
 'localtime' => 'स्थानीय समय:',
 'timezoneuseserverdefault' => 'विकी डिफ़ॉल्ट का उपयोग करें ($1)',
 'timezoneuseoffset' => 'अन्य (समयांतर निर्दिष्ट करें)',
-'timezoneoffset' => 'समयांतर¹:',
 'servertime' => 'सर्वर का समय:',
 'guesstimezone' => 'ब्राउज़र से भरें',
 'timezoneregion-africa' => 'अफ़्रीका',
@@ -1630,7 +1605,6 @@ HTML टैग की जाँच करें।',
 'recentchanges-label-bot' => 'यह संपादन एक बॉट द्वारा किया गया था',
 'recentchanges-label-unpatrolled' => 'यह संपादन अभी जाँचा नहीं गया है',
 'recentchanges-legend-newpage' => '$1 - नया पन्ना',
-'rcnote' => "$5, $4 के पहले के '''$2''' {{PLURAL:$2|दिन|दिनों}} में  {{PLURAL:$1|हुआ '''$1''' बदलाव निम्न है| हुए '''$1''' बदलाव निम्न हैं}}।",
 'rcnotefrom' => "नीचे '''$2''' के बाद से ('''$1''' तक) हुए बदलाव दर्शाए गये हैं।",
 'rclistfrom' => '$1 से नये बदलाव दिखाएँ',
 'rcshowhideminor' => 'छोटे बदलाव $1',
@@ -2132,10 +2106,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'protectedpages' => 'सुरक्षित पृष्ठ',
 'protectedpages-indef' => 'केवल अनिश्चितकालीन सुरक्षाएँ',
 'protectedpages-cascade' => 'केवल सोपानी सुरक्षा',
-'protectedpagestext' => 'नीचे दिये हुए पृष्ठ नाम बदलने या संपादित करने से सुरक्षित हैं',
 'protectedpagesempty' => 'इस समय इन नियमों द्वारा कोई पृष्ठ सुरक्षित नहीं हैं।',
 'protectedtitles' => 'सुरक्षित शीर्षक',
-'protectedtitlestext' => 'निम्नलिखित शीर्षकों पर पृष्ठ नहीं बनाए जा सकते।',
 'protectedtitlesempty' => 'इन नियमों द्वारा कोई भी शीर्षक सुरक्षित नहीं हैं।',
 'listusers' => 'सदस्यसूची',
 'listusers-editsonly' => 'केवल संपादन कर चुके सदस्य दिखाएँ',
@@ -2187,9 +2159,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization देखें।',
 'allpagesto' => 'इस अक्षर से समाप्त होने वाले पृष्ठ दिखाएँ:',
 'allarticles' => 'सभी पृष्ठ',
 'allinnamespace' => 'सभी पृष्ठ ($1 नामस्थान)',
-'allnotinnamespace' => 'सभी पृष्ठ ($1 नामस्थान के अलावा)',
-'allpagesprev' => 'पिछला',
-'allpagesnext' => 'अगला',
 'allpagessubmit' => 'जाएँ',
 'allpagesprefix' => 'इस उपपद से शुरू होने वाले पृष्ठ दर्शाएँ:',
 'allpagesbadtitle' => 'दिया गया शीर्षक अमान्य था या उसमें अंतरभाषीय अथवा अंतरविकी उपसर्ग था।
@@ -2531,7 +2500,6 @@ $2 द्वारा संपादित अन्तिम अवतरण 
 'undeletebtn' => 'वापस ले आयें',
 'undeletelink' => 'देखें/पुनर्स्थापित करें',
 'undeleteviewlink' => 'देखें',
-'undeletereset' => 'पूर्ववत करें',
 'undeleteinvert' => 'चुनाव उलटें',
 'undeletecomment' => 'कारण:',
 'undeletedrevisions' => '{{PLURAL:$1|एक अवतरण पुनर्स्थापित किया|$1 अवतरण पुनर्स्थापित किये}}',
@@ -2620,7 +2588,6 @@ $1',
 'block' => 'उपयोक्ता को अवरोधित करें।',
 'unblock' => 'उपयोक्ता पर अवरोधण हटाएँ',
 'blockip' => 'अवरोधित करें',
-'blockip-title' => 'ब्लॉक उपयोगकर्ता',
 'blockip-legend' => 'सदस्य को ब्लॉक करें',
 'blockiptext' => 'विशिष्ठ IP पते अथवा सदस्य नाम को लिखने के अधिकार से बाध्य करने के लिए निम्न पत्र का प्रयोग करें।
 यह सिर्फ बर्बरता को रोकने के लिए ही किया जाना चाहिए, और [[{{MediaWiki:Policy-url}}|नीति]] के अनुसार ही करना चाहिए।
@@ -2628,7 +2595,6 @@ $1',
 'ipadressorusername' => 'आईपी एड्रेस या सदस्यनाम:',
 'ipbexpiry' => 'समाप्ति:',
 'ipbreason' => 'कारण:',
-'ipbreasonotherlist' => 'दूसरा कारण',
 'ipbreason-dropdown' => '*अवरोधित करने के साधारण कारण
 ** अवैध सदस्यनाम
 ** एक से अधिक खातें खोलकर उनका दुरुपयोग करना
@@ -2644,8 +2610,6 @@ $1',
 'ipbsubmit' => 'इस सदस्य को और बदलाव करने से रोकें',
 'ipbother' => 'अन्य समय:',
 'ipboptions' => 'दो घंटे:2 hours,एक दिन:1 day,तीन दिन:3 days,एक सप्ताह:1 week,दो सप्ताह:2 weeks,एक महीना:1 month,तीन महीने:3 months,छः महीने:6 months,एक साल:1 year,हमेशा के लिये:infinite',
-'ipbotheroption' => 'अन्य',
-'ipbotherreason' => 'अन्य/दूसरा कारण:',
 'ipbhidename' => 'संपादन व सूचियों से सदस्य नाम छिपाएँ',
 'ipbwatchuser' => 'इस सदस्य के सदस्य तथा वार्ता पृष्ठ पर ध्यान रखें',
 'ipb-disableusertalk' => 'इस प्रयोक्ता को अवरुद्ध होने पर स्वयं का वार्ता पृष्ठ सम्पादन करने से रोकें',
@@ -2736,7 +2700,6 @@ $1 को बाध्य करने का कारण है: "$2"',
 कृपया आप अपने इंटरनेट सेवा प्रदान करने वाले से या तकनीकी सहायक से सम्पर्क करें अथवा उन्हें इस भयावह सुरक्षा समस्या के बारे में सूचित करें।',
 'sorbsreason' => '{{SITENAME}} द्वारा इस्तेमालमें लाये जाने वाले DNSBL में आपके आईपी एड्रेसको ओपन प्रॉक्सीमें दर्शाया गया हैं।',
 'sorbs_create_account_reason' => '{{SITENAME}} के DNSBL ने आपका आईपी एड्रेस ओपन प्रोक्सी करके सूचित किया हैं। आप खाता खोल नहीं सकतें।',
-'cant-block-while-blocked' => 'आप खुद ही अवरोधित हैं इसलिए इस समय आप औरों को अवरोधित नहीं कर सकते हैं।',
 'cant-see-hidden-user' => 'कठबोली छुपा उपयोगकर्ता देखना',
 'ipbblocked' => 'आप अन्य प्रयोक्ताओं को अवरोधित या अनवरोधित नहीं कर सकते, क्योंकि आप स्वयं अवरोधित हैं',
 'ipbnounblockself' => 'आपको स्वयं को अनवरोधित करने की अनुमति नहीं है',
@@ -2802,7 +2765,6 @@ $1 को बाध्य करने का कारण है: "$2"',
 इन मामलोंमे आपको स्वयं यह पृष्ठ जोडने पड़ सकते है ।",
 'movearticle' => 'पृष्ठ का नाम बदलें',
 'moveuserpage-warning' => 'चाल उपयोगकर्ता चेतावनी पृष्ठ',
-'movenologin' => 'लॉग इन नहीं किया है',
 'movenologintext' => 'लेख स्थानान्तरित करने के लिये आपका [[Special:UserLogin|लॉग इन]] किया होना आवश्यक हैं।',
 'movenotallowed' => 'आपको पृष्ठ स्थानांतरित करने की अनुमति नहीं है।',
 'movenotallowedfile' => 'आपको फ़ाइलें स्थानांतरित करने की अनुमति नहीं है।',
@@ -2817,9 +2779,6 @@ $1 को बाध्य करने का कारण है: "$2"',
 'movepage-moved-noredirect' => 'पुनर्निर्देशन पृष्ठ नहीं बनाया गया है।',
 'articleexists' => 'इस नाम का एक पृष्ठ पहले से ही उपस्थित है, अथवा आप ने अमान्य नाम चुना है। कृपया दूसरा नाम चुनें।',
 'cantmove-titleprotected' => 'नया शीर्षक बनाने से रोक होने के कारण, आप इस जगह पर कोई अन्य पृष्ठ स्थानांतरित नहीं कर सकतें हैं।',
-'talkexists' => "'''पृष्ठ का नाम बदल दिया गया है, पर उससे संबंधित वार्ता पृष्ठ नहीं बदला गया है क्योंकि वह पहले से बना हुवा है ।
-कृपया इसे स्वयं बदल दे ।'''",
-'movedto' => 'को भेजा गया',
 'movetalk' => 'सम्बन्धित वार्ता पृष्ठ भी बदलें',
 'move-subpages' => 'उप पृष्ठ भी ले जाएँ ($1 तक)',
 'move-talk-subpages' => 'वार्ता पृष्ठ के उप पृष्ठ भी ले जाएँ ($1 तक)',
@@ -3637,15 +3596,10 @@ $1',
 'exif-urgency-high' => 'उच्चतम ($1)',
 'exif-urgency-other' => 'यूज़र-डिफ़ाइंड प्राथमिकता ( $1 )',
 
-# External editor support
-'edit-externally' => 'बाहरी प्रणाली का उपयोग करते हुए इस सञ्चिका को सम्पादित करें ।',
-'edit-externally-help' => '(और जानकारी के लिए [https://www.mediawiki.org/wiki/Manual:External_editors जमाव निर्देश] देखें)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सभी',
 'namespacesall' => 'सभी',
 'monthsall' => 'सभी',
-'limitall' => 'सभी',
 
 # Email address confirmation
 'confirmemail' => 'ई-मेल प्रमाणित करे',
@@ -3670,7 +3624,6 @@ $1',
 'confirmemail_success' => 'आपका इ-मेल पता अभी प्रमाणित हो गया हैं।
 अभी आप लॉग इन करके विकि का मज़ा ले सकतें हैं।',
 'confirmemail_loggedin' => 'आपके इ-मेल एड्रेस का प्रमाणिकरण पूरा हो गया हैं।',
-'confirmemail_error' => 'आपकी निश्चिती संजोते समय कुछ गलती हुई हैं।',
 'confirmemail_subject' => '{{SITENAME}} इ-मेल एड्रेस प्रमाणिकरण',
 'confirmemail_body' => 'किसीने, शायद आपने,  $1 आइपी एड्रेस से,
 {{SITENAME}} पर  "$2" इस नाम से खाता खोलने की माँग की हैं।
@@ -3946,7 +3899,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'पृष्ठों की तुलना करें',
-'compare-selector' => 'पृष्ठ संशोधन की तुलना करें',
 'compare-page1' => 'पृष्ठ १',
 'compare-page2' => 'पृष्ठ २',
 'compare-rev1' => 'पुनरीक्षण १',
index 00f5cfc..aa01dbe 100644 (file)
@@ -57,7 +57,6 @@ $messages = array(
 'tog-minordefault' => 'Mamuli badlao ke apne se nishaan lagao',
 'tog-previewontop' => 'Badlao waala dabba se pahile ek jhalak dekhao',
 'tog-previewonfirst' => 'Hamaar pahila badlao pe jhalak dekhao',
-'tog-nocache' => 'Browser pe panna ke bachae me rok lagao',
 'tog-enotifwatchlistpages' => 'Jab hamaar dhyaan suchi ke koi panna, nai to file, ke badla jae tab hame E-mail karo',
 'tog-enotifusertalkpages' => 'Jab hamaar baat waala panna ke badla jae tab hame E-mail karo',
 'tog-enotifminoredits' => 'Panna aur file me mamuli badlao khatir bhi hame E-mail karo',
@@ -192,7 +191,6 @@ $messages = array(
 'qbedit' => 'Badlo',
 'qbpageoptions' => 'Ii panna',
 'qbmyoptions' => 'Hamar panna',
-'qbspecialpages' => 'Khaas panna',
 'faq' => 'Sab time puchhe waala sawal',
 'faqpage' => 'Project:Sab time puchhe waala sawal',
 
@@ -407,9 +405,6 @@ Uu koi kaaran nai dis hae.',
 'perfcached' => 'Niche likha data ke cache karaa gais hai aur sait purana hoi. Jaada se jaada {{PLURAL:$1|ek result |$1 results}} cache me hae.',
 'perfcachedts' => 'Niche likha data ke cache kar dewa gais rahaa, aur pichhle time $1 ke badlaa gais rahaa. Jaada se jaada {{PLURAL:$4|ek result |$4 results}} cache me hae.',
 'querypage-no-updates' => 'Ii panna me badlao abhi band hai. Data ke abhi nawaa nai karaa jaai.',
-'wrong_wfQuery_params' => 'Galat parameters to wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Source dekho',
 'viewsource-title' => '"$1" ke source dekho',
 'actionthrottled' => 'Kaam ke band kar dewa gais hai',
@@ -588,7 +583,7 @@ Agar aap iske diya hae tab iske aapke kaam ke attribute kare ke khatir kaam me l
 'user-mail-no-body' => 'Ek khaali, nai to kaafi chhota email bheje ke kosis kara rahaa.',
 
 # Change password dialog
-'resetpass' => 'Password ke badlo',
+'changepassword' => 'Pasword ke badlo',
 'resetpass_announce' => 'Aap ek temporary e-mailed code se login bhaya hai
 Login khatam kare khatir, aap ke nawaa password set kare ke parri hian:',
 'resetpass_text' => '<!-- Hian pe likho -->',
@@ -986,10 +981,6 @@ Aap ii diff ke dekhe saktaa hae: iske baare me aur jaan kaari [{{fullurl:{{#Spec
 'revisiondelete' => 'Badlao ke mitao/nai mitao',
 'revdelete-nooldid-title' => 'Target revision jon ki valid nai hai',
 'revdelete-nooldid-text' => 'Aap chaahe target revision(s) ke specify nai karaa hai, ii function ke perform kare ke khatir, specified revision haiye nai, nai to aap abhi ke badlao ke lukae ke kosis karta hai.',
-'revdelete-nologtype-title' => 'Koi log type ke nai dewa gais hai',
-'revdelete-nologtype-text' => 'Aap ii action ke kare khatir koi log type ke specify nai karaa hai.',
-'revdelete-nologid-title' => 'Log entry valid nai hai',
-'revdelete-nologid-text' => 'Chaahe aap target log event ke specify nai karaa hai ii chij kare ke khatir nai to batawa gais entry nai hai.',
 'revdelete-no-file' => 'Chuna gais file abhi nai banawa gais hai.',
 'revdelete-show-file-confirm' => 'Ka aap sure hai ki aap file ke mitawa gais revision ke dekhe mangtaa hai "<nowiki>$1</nowiki>" $2 se $3 talak?',
 'revdelete-show-file-submit' => 'Haan',
@@ -1022,8 +1013,6 @@ $1",
 'logdelete-failure' => "'''Log ke nai dekhawa jaae sake hae:'''
 $1",
 'revdel-restore' => 'Badlo ki ii dekhe me kaise lage hae',
-'revdel-restore-deleted' => 'mitawa gais badlao',
-'revdel-restore-visible' => 'badlao, jiske aap dekhe saktaa hae',
 'pagehist' => 'Panna ke itihaas',
 'deletedhist' => 'Mitawa gae itihass',
 'revdelete-hide-current' => 'Item dated $2, $1 ke lukae me garrbarr hoe gais hai: ii abhi ke version hai.
@@ -1101,12 +1090,8 @@ Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
 # Search results
 'searchresults' => 'Khoj ke natija',
 'searchresults-title' => '"$1" ke natija ke khojo',
-'searchresulttext' => '{{SITENAME}} me khoje khatir aur jaankari khatir, dekho [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Aap khoja rahaa  \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sab panna jon ki "$1" se suruu hoe hai]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sab panna jon ki "$1" se jurre hai]])',
-'searchsubtitleinvalid' => "Aap '''$1''' ke khoja hai",
 'toomanymatches' => 'Bahut dher match mila, duusra query se kosis karo',
 'titlematches' => 'Panna ke jon naam mile hai',
-'notitlematches' => 'Koi bhi panna ke naam nai mile hae',
 'textmatches' => 'Panna ke jon text mile hai',
 'notextmatches' => 'Koi panna see text nai mile hae',
 'prevn' => 'pahile waala {{PLURAL:$1|$1}}',
@@ -1115,10 +1100,8 @@ Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
 'nextn-title' => 'Aage waala $1 {{PLURAL:$1|result|results}}',
 'shown-title' => 'Ek panna me $1 {{PLURAL:$1|result|results}} dekhao',
 'viewprevnext' => 'Dekho ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Khoje ke option',
 'searchmenu-exists' => "'''Ii wiki me \"[[\$1]]\" naam ke panna hai'''",
 'searchmenu-new' => "'''Ii wiki me \"[[:\$1]]\" panna ke banao!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ii prefix ke panna ke browse karo]]',
 'searchprofile-articles' => 'Content panna',
 'searchprofile-project' => 'Madat aur Project panna',
 'searchprofile-images' => 'Multimedia',
@@ -1139,21 +1122,16 @@ Iske baare me aur jaankari [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
 'search-interwiki-default' => '$1 ke result:',
 'search-interwiki-more' => '(aur)',
 'search-relatedarticle' => 'sambandh rakkhe hai',
-'mwsuggest-disable' => 'AJAX sughao ke disable karo',
 'searcheverything-enable' => 'Sab namespaces me khojo',
 'searchrelated' => 'sambhand rakkhe hai',
 'searchall' => 'sab',
 'showingresults' => "Niche dekhae hai {{PLURAL:$1|'''1''' result|'''$1''' results}} #'''$2''' se suruu hoe ke.",
 'showingresultsnum' => "Niche dekhawa jae hai {{PLURAL:$3|'''1''' result|'''$3''' results}}, #'''$2''' se suruu hoe ke.",
 'showingresultsheader' => "{{PLURAL:$5|Natija '''$1''' of '''$3'''|Natija '''$1 - $2''' of '''$3'''}} '''$4''' khatir",
-'nonefound' => "'''Yaad rakhna''': apne se khaali thora namespaces me khoja jaae hai.
-Aapan query ke ''all:'' se suruu kar ke visay suchi me khojo (including talk pages, templates, etc), nai to jon namespace aap mangtaa hai usse query suruu karo.",
 'search-nonefound' => 'Ii sawaal ke koi jawab nai hae.',
-'powersearch' => 'Visesh khoj',
 'powersearch-legend' => 'Gahira khoj',
 'powersearch-ns' => 'Namespaces me khojo:',
 'powersearch-redir' => 'Redirects ke suchi do',
-'powersearch-field' => 'Iske khojo',
 'powersearch-togglelabel' => 'Check karo:',
 'powersearch-toggleall' => 'Sab',
 'powersearch-togglenone' => 'Koi bhi nai',
@@ -1167,7 +1145,6 @@ Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
 'preferences' => 'Pasand',
 'mypreferences' => 'Pasand',
 'prefs-edits' => 'Badlao ke number:',
-'changepassword' => 'Pasword ke badlo',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Jhalak',
 'datedefault' => 'Koi pasand nai',
@@ -1190,7 +1167,6 @@ Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
 'prefs-email' => 'E-mail ke option',
 'prefs-rendering' => 'Dekhe me kaise lage hai',
 'saveprefs' => 'Save karo',
-'resetprefs' => 'Binaa bachawa gias badlao ke mitao',
 'restoreprefs' => 'Sab default settings ke pahile jaise karo (sab vibhag me)',
 'prefs-editing' => 'Badaltaa hai',
 'rows' => 'Line:',
@@ -1211,7 +1187,6 @@ Aur koi agar iske bare me jaane hae aap ke dhyan suchi ke parrhae sake hae, tab
 'localtime' => 'Sthaniye samay:',
 'timezoneuseserverdefault' => 'Wiki default ke kaam me laao ($1)',
 'timezoneuseoffset' => 'Aur koi (offset ke specify karo)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Server ke time:',
 'guesstimezone' => 'Browser se bharo',
 'timezoneregion-africa' => 'CSS ke aapan khatir badlo',
@@ -1462,7 +1437,6 @@ Iske $1 {{PLURAL:$1|character|characters}} se kamti rahe ke chaahi.',
 'recentchanges-label-bot' => 'Ii badlao ke ek bot karis hae',
 'recentchanges-label-unpatrolled' => 'Ii badlao pe abhi pahraa nai dewa gais hae.',
 'recentchanges-legend-newpage' => '$1 - nawaa panna',
-'rcnote' => "Niche {{PLURAL:$1|hai '''1''' badlao|aakhri hai '''$1''' badlao}} pahile {{PLURAL:$2|din|'''$2''' din}}, $5, $4 talak.",
 'rcnotefrom' => "Niche '''$2''' se badlao hai ('''$1''' tak )",
 'rclistfrom' => '$1 se suruu kar ke nawaa badlao dekhao',
 'rcshowhideminor' => '$1 chhota badlao',
@@ -1946,10 +1920,8 @@ Sab row me pahila aur duusra redirect ke jorr hae, aur isme duusra redirect ke n
 'protectedpages' => 'Surakchhit panna',
 'protectedpages-indef' => 'Khaali indefinite bachao',
 'protectedpages-cascade' => 'Khaali cascading bachao',
-'protectedpagestext' => 'Niche ke panna ke naam badle aur badle se rok lagawa gais hai',
 'protectedpagesempty' => 'Ii parameters se koi bhi panna ke nai bachawa gais hai.',
 'protectedtitles' => 'Bachawa gais titles',
-'protectedtitlestext' => 'Niche ke title ke nai banawa jaae sake hai',
 'protectedtitlesempty' => 'Ii parameters se koi bhi title ke nai bacawa gais hai.',
 'listusers' => 'Sadasya ke suchi',
 'listusers-editsonly' => 'Khaali uu sadasya ke dekhao jon ki koi badlao karis hai',
@@ -2001,9 +1973,6 @@ Ketna chij dekhae hae ke aap kamti kare saktaa hae sadasya ke naam (case-sensiti
 'allpagesto' => 'Dekhao panna ending at:',
 'allarticles' => 'Sab panna',
 'allinnamespace' => 'Sab panna ($1 namespace)',
-'allnotinnamespace' => 'Sab panna ($1 namespace me nai hai)',
-'allpagesprev' => 'Pahile',
-'allpagesnext' => 'Aage',
 'allpagessubmit' => 'Jaao',
 'allpagesprefix' => 'Uu panna dekhao jiske prefix hai:',
 'allpagesbadtitle' => 'Dewa gias panna ke title kharaab rahaa nai to inter-language nai to inter-wiki ke prefix hai.
@@ -2352,7 +2321,6 @@ Sait aap ke kharaab link hoi, nai to badlao ke sait pahile jaise kar dewa gais h
 'undeletebtn' => 'Pahile jaise kar do',
 'undeletelink' => 'dekho/pahile jaise karo',
 'undeleteviewlink' => 'dekho',
-'undeletereset' => 'Pahile jaise karo',
 'undeleteinvert' => 'Selection ke ulta karo',
 'undeletecomment' => 'Kaaran::',
 'undeletedrevisions' => '{{PLURAL:$1|1 badlao|$1 badlao}} ke pahile jaise kar dewa gais hai',
@@ -2442,7 +2410,6 @@ Sab se nawaa roke ke suchi ke, aap ke khatir, niche dewa gais hae.',
 'block' => 'Sadasya ke roko',
 'unblock' => 'Sadasya ke rukawat k khalaas karo',
 'blockip' => 'Sadasya ke roko',
-'blockip-title' => 'Sadasya ke roko',
 'blockip-legend' => 'Sadasya ke roko',
 'blockiptext' => 'Niche ke form ke use kar ke koi khaas IP address nai to username ke write access ke roko.
 Iske khaali vandalism ke roke ke khatir use kare ke chaahi [[{{MediaWiki:Policy-url}}|policy]] ke niche.
@@ -2450,7 +2417,6 @@ Niche ek khaas kaaran likho (jaise ki, citing particular pages that were vandali
 'ipadressorusername' => 'IP Address nai to username:',
 'ipbexpiry' => 'Expiry:',
 'ipbreason' => 'Kaaran:',
-'ipbreasonotherlist' => 'Duusra kaaran',
 'ipbreason-dropdown' => '*Roke ke sadhaarankaaran
 ** Galat jaankari diis
 ** Panna se jaankari nikalis
@@ -2466,8 +2432,6 @@ Niche ek khaas kaaran likho (jaise ki, citing particular pages that were vandali
 'ipbsubmit' => 'Ii sadasya ke roko',
 'ipbother' => 'Duusra time:',
 'ipboptions' => '2 ghanta:2 hours,1 din:1 day,3 daya:3 days,1 hapta:1 week,2 hapta:2 weeks,1 mahina:1 month,3 mahina:3 months,6 mahina:6 months,1 saal:1 year,pura:infinite',
-'ipbotheroption' => 'duusra',
-'ipbotherreason' => 'Duusra/aur kaaran:',
 'ipbhidename' => 'Badlao aur suchi se username ke hatao',
 'ipbwatchuser' => 'Ii sadasya ke user aur talk panna pe dhyan rakho',
 'ipb-disableusertalk' => 'Ii sadasya ke aapan baat waala panna ke badle pe rukawat lagao, jab ii panna pe rok lagawa gais hae',
@@ -2562,7 +2526,6 @@ Meharbaani kar ke aap aapan Internet service provider, nai to tech support, ke c
 'sorbs_create_account_reason' => 'DNSBL used by {{SITENAME}} me aap ke IP address ke as an open proxy list karaa gais hai.
 Aap ke ek account banae ke ijajat nai hai',
 'xffblockreason' => 'Ek IP address jon ki X-Forwarded-For header me hae, chaahe aap ke nai to jon proxy server ke aap use kartaa hae ke, ke block kar dewa gais hae. Suruu waala block kare ke kaaran rahaa:$1',
-'cant-block-while-blocked' => 'Aap, jab ki apne blocked hai, duusra sadasya ke block nai kare sakta hai.',
 'cant-see-hidden-user' => 'Jon sadasya ke aap roke mangtaa hae ke pahile rok ke lukae dewa gais hae.
 Jab ki aap ke lage hideuser adhikaar nai hae, tab aap ii sadasya ke rukawat ke nai dekhe aur badle saktaa hae.',
 'ipbblocked' => 'Aap duusra sadasya ke roke nai to kohle nai sakta hae, kaahe ki aap ke bhi rokaa gais hae',
@@ -2622,7 +2585,6 @@ meharbaani kar ke aap aapan karya ke natiija ke baare me socho aage kuch kare se
 Ii prastithi me, aap ke manually move yah merge kare ke parri.",
 'movearticle' => 'Panna ke naam badli karo:',
 'moveuserpage-warning' => " '''Chetauni:'''  Aap ek sadasya ke panna ke naam badle waala hae. Ii yaad rakhna ki khaali panna ke naam badla jaai, sadasya ke naam ''nai'' badlaa jaai.",
-'movenologin' => 'Logged in nai hai',
 'movenologintext' => 'Panna ke naam badle ke khatir aap ke ek registered sadasya rahe ke parri aur  [[Special:UserLogin|logged in]].',
 'movenotallowed' => 'Aap ke panna ke naam badle ke ijajat nai hai.',
 'movenotallowedfile' => 'Aap ke file ke naam badle ke ijajat nai hai.',
@@ -2638,8 +2600,6 @@ Ii prastithi me, aap ke manually move yah merge kare ke parri.",
 'articleexists' => 'Uu naam ke panna abhi hai, nai to jon naam aap choose karaa hai valid nai hai.
 Meharbani kar ke duusra naam choose karo.',
 'cantmove-titleprotected' => 'Aap panna ke hatae ke ii jagah pe nai kare saktaa hai kahe ki nawaa title ke banae pe rukawat hai',
-'talkexists' => "'''Panna ke naam badle me safalta hoe gais hai, lekin talk page ke naam nai badle sakaa hai kaheki uu naam ke talk page already hai. Iske manually merge karo.'''",
-'movedto' => 'naam badal ke',
 'movetalk' => 'Saathe ke baat waala panna ke bhi naam badlo',
 'move-subpages' => 'Subpages ke naam badlo ($1 talak)',
 'move-talk-subpages' => 'Subpages ke hatae ke baat waala panna pe kar do ($1 talak)',
@@ -3459,15 +3419,10 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
 'exif-urgency-high' => 'Jaada ($1)',
 'exif-urgency-other' => 'Sadasya-defined priority ($1)',
 
-# External editor support
-'edit-externally' => 'Ii file ke bahaari program me kaam me laae ke badlo',
-'edit-externally-help' => '(Aur jaankari khatir [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ke dekho)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sab',
 'namespacesall' => 'sab',
 'monthsall' => 'sab',
-'limitall' => 'sab',
 
 # Email address confirmation
 'confirmemail' => 'E-mail address ke pakka karo',
@@ -3492,7 +3447,6 @@ Ii code saait expire hoe gais hae.',
 'confirmemail_success' => 'Aap ke email address ke confirm kar dewa gais hae.
 Aap [[Special:UserLogin|log in]] kar ke ii wiki ke majaa le saktaa hae.',
 'confirmemail_loggedin' => 'Aap ke email address ke ap confirm kar dewa gais hae.',
-'confirmemail_error' => 'Aap ke confirmation me kuchh garrbarri hoe gais hae.',
 'confirmemail_subject' => '{{SITENAME}} email address ke confirmation',
 'confirmemail_body' => 'Koi, hoe sake aap IP address $1 se, ek account "$2" with this email address on {{SITENAME}} ke register karis hae.
 
@@ -3653,7 +3607,6 @@ You can also [[Special:EditWatchlist/raw|edit the raw list]].',
 
 # Special:ComparePages
 'comparepages' => 'Panna ke biich me antar dekho',
-'compare-selector' => 'Panna ke badlao ke biih me antar dekho',
 'compare-page1' => 'Panna 1',
 'compare-page2' => 'Panna 2',
 'compare-rev1' => 'Badlao 1',
index 2b35ef2..85cf435 100644 (file)
@@ -40,7 +40,6 @@ $messages = array(
 'tog-minordefault' => 'Markahan dayon ang tanan nga diyutay nga pag-ilis',
 'tog-previewontop' => 'Ipakita ang preview bag-o ang kahon sang pag-ilis',
 'tog-previewonfirst' => 'Ipakita ang preview sa pinaka-una nga pag-ilis',
-'tog-nocache' => 'Untaton ang kina-iya sang brawser nga magtago sang panid',
 'tog-enotifwatchlistpages' => 'Padal-i ako sang e-mail kon ang panid kag hilera nga akon ginabantayan paga-ilisan',
 'tog-enotifusertalkpages' => 'Padal-i ako sang e-mail kon paga-ilisan ang akon panid sang pag-hisayranay',
 'tog-enotifminoredits' => 'Padal-i man ako sang e-mail kon may diyutay nga pag-ilis sa akon mga panid kag hilera',
@@ -161,7 +160,6 @@ $messages = array(
 'qbedit' => 'Ilisan',
 'qbpageoptions' => 'Ining panid',
 'qbmyoptions' => 'Akon mga panid',
-'qbspecialpages' => 'Pinasahi nga mga panid',
 'faq' => 'Mga masami pamangkoton',
 'faqpage' => 'Project:MMP',
 
@@ -372,9 +370,6 @@ Siguro may-ara ini sang isa ukon madamo nga karakter nga indi ginabaton kag gina
 'perfcachedts' => 'Ang masunod nga datos nakatago lamang, kag pinaka-ulihe nga ginbag-o sang $1. May maksimum nga {{PLURAL:$4|isa ka resulta nga|$4 mga resulta nga}} ara sa nakatago nga datos.',
 'querypage-no-updates' => 'Ang mga pagbag-o sa sini nga panid karon ginpa-untat.
 Ang datos nga yari diri indi pagliwaton.',
-'wrong_wfQuery_params' => 'Indi insakto nga mga parametro sa wfQuery()<br />
-Kapuslanan: $1<br />
-Pagpamangkot: $2',
 'viewsource' => 'Lantawon ang ginhalinan',
 'viewsource-title' => 'Lantawon ang ginhalinan sang $1',
 'actionthrottled' => 'Ang paghulag ginpunggan',
@@ -522,7 +517,7 @@ Palihog maghulat anay bag-o tilawan liwat.',
 'user-mail-no-body' => 'Nakatilaw magpadala sang email nga waay unod ukon malip-ot katama ang unod sang mensahe.',
 
 # Change password dialog
-'resetpass' => 'Ilisan ang pasword',
+'changepassword' => 'Ilisan ang pasword',
 'resetpass_announce' => 'Nagsulod ka paagi sang temporary nga kod nga gin-email.
 Agod nga makatapos ka sa pagsulod, kinahanglan mo magbutang sang bag-o nga pasword dire:',
 'resetpass_header' => 'Ilisan ang pasword sang akawnt',
@@ -910,10 +905,6 @@ Makita mo ini nga diff; makita ang mga detalye sa [{{fullurl:{{#Special:Log}}/de
 'revdelete-nooldid-title' => 'Sala nga natuyo bag-ohon',
 'revdelete-nooldid-text' => 'Basi nga wala mo ginplastar kon ano ang natuyo mo bag-ohon agod mahimo ini nga buluhaton,
 ang ini nga buluhaton wala, ukon gahimakas ka nga taguon ang karon nga pagbag-o.',
-'revdelete-nologtype-title' => 'Wala sang sahi sang log nga ginhatag',
-'revdelete-nologtype-text' => 'Wala ka naghatag sang sahi sang log agod mahimo ang ini nga buluhaton.',
-'revdelete-nologid-title' => 'Sala nga inugbutang sa log',
-'revdelete-nologid-text' => 'Basi nga wala ka nagbutang sang natuyo mo nga hinatabo sa log agod nga mahimo ini nga buluhaton ukon ang gintumod nga inugbutang wala naga-eksister.',
 'revdelete-no-file' => 'Ang ginatumod nga hilera wala naga-eksister.',
 'revdelete-show-file-confirm' => 'Sigurado ka bala nga luyag mo makita ang ginpanas nga pagbag-o sang hilera nga "<nowiki>$1</nowiki>" halin sang $2 sa $3?',
 'revdelete-show-file-submit' => 'Huo',
@@ -947,8 +938,6 @@ $1",
 'logdelete-failure' => "'''Ang pagkakitaon sang log indi mahimo nga maplastar:'''
 $1",
 'revdel-restore' => 'pagbag-o sang makita',
-'revdel-restore-deleted' => 'mga ginpanas nga pagbag-o',
-'revdel-restore-visible' => 'mga makita nga pagbag-o',
 'pagehist' => 'Kasaysayan sang panid',
 'deletedhist' => 'Ginpanas nga kasaysayan',
 'revdelete-hide-current' => 'May sala sa pagtago sang bagay nga may petsa nga $2, $1: amo ini ang pagbag-o karon.
@@ -1027,12 +1016,8 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Resulta sang Pagpangita',
 'searchresults-title' => 'Resulta sang Pagpangita para "$1"',
-'searchresulttext' => 'Para sa madamu pa nga impormasyon parti sa pagpangita {{SITENAME}}, lantawa [[{{MediaWiki:Helppage}}|{{int:bulig}}]].',
-'searchsubtitle' => 'Nagpangita ka para \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tanan nga pahina gasugod sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tanan nga pahina nga naga tabid kay "$1"]])',
-'searchsubtitleinvalid' => "Nangita ka para '''$1'''",
 'toomanymatches' => 'Tuman ka madamo nga pareho ang nagbalik, palihog tilaw sang lain nga pagpangita',
 'titlematches' => 'Mga pareho nga titulo sang panid',
-'notitlematches' => 'Wala sang parehas nga titulo ka pahina',
 'textmatches' => 'Mga pareho nga teksto sang panid',
 'notextmatches' => 'Wala sang pahina nga parehas teksto',
 'prevn' => 'antes {{PLURAL:$1|$1}}',
@@ -1041,10 +1026,8 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => 'Madason nga $1 {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Magpakita sang $1 ka {{PLURAL:$1|resulta|mga resulta}} kada panid',
 'viewprevnext' => 'Tan-awon ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Mga pililian sa pagpangita',
 'searchmenu-exists' => "'''May yara sang panid nga ginhingalanan nga \"[[:\$1]]\" sa sini nga wiki.'''",
 'searchmenu-new' => "'''Gintuga ang panid nga \"[[:\$1]]\" sa sini nga wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Magbasa-basa sang mga panid gamit ang ini nga unpali]]',
 'searchprofile-articles' => 'Mga panid sang unod',
 'searchprofile-project' => 'Mga panid sang Bulig kag Proyekto',
 'searchprofile-images' => 'Multimedia',
@@ -1065,21 +1048,16 @@ Ang mga detalye mahimo nga makita sa [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 mga resulta:',
 'search-interwiki-more' => '(damu)',
 'search-relatedarticle' => 'Konektado',
-'mwsuggest-disable' => 'Untaton ang mga suhestiyon sang AJAX',
 'searcheverything-enable' => 'Pangitaon sa tanan nga espasyo sang pangalan',
 'searchrelated' => 'konektado',
 'searchall' => 'tanan',
 'showingresults' => "Ginapakita sa dalom pakadto sa {{PLURAL:$1|'''1''' ka resulta|'''$1''' ka mga resulta}} umpisa ang #'''$2'''.",
 'showingresultsnum' => "Ginapakita sa dalom ang {{PLURAL:$3|'''1''' ka resulta|'''$3''' ka mga resulta}} umpisa ang #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resulta nga '''$1''' sang '''$3'''|Mga resulta nga '''$1 - $2''' sang '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Tandaan''': Ang iban lang nga mga ngalan-espasyo ay ginapangita nga daan.
-Testingan mo i-prefiks ang imo pamangkot upod sang ''tanan:'' para makita mo ang tanan nga unod (dala na dira ang pahina paghisayranay, templeyts, etc), o gamita amg imo nanamian nga ngalan-espasyo bilang prefiks.",
 'search-nonefound' => 'Wala sang mga resulta nga nagsanto sa imo nga ginapangita.',
-'powersearch' => 'Abanse nga pagpangita',
 'powersearch-legend' => 'Abanse nga pagpangita',
 'powersearch-ns' => 'Pangita sa mga ngalan-espasyo:',
 'powersearch-redir' => 'Lista sang mga gin direkta liwat',
-'powersearch-field' => 'Pangita-on si',
 'powersearch-togglelabel' => 'Tsekan:',
 'powersearch-toggleall' => 'Tanan',
 'powersearch-togglenone' => 'Wala',
@@ -1092,7 +1070,6 @@ Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga m
 'preferences' => 'Mga Ginabasehan',
 'mypreferences' => 'Mga Ginabasehan',
 'prefs-edits' => 'Numero sang mga gin-ilisan:',
-'changepassword' => 'Ilisan ang pasword',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Ipakita subong',
 'datedefault' => 'Wala sang pagpalabi',
@@ -1115,7 +1092,6 @@ Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga m
 'prefs-email' => 'Mga pililian sang e-mail',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Itipunon',
-'resetprefs' => 'Panason ang mga wala matipon nga mga pagbag-o',
 'restoreprefs' => 'Ibalik ang tanan nga default settings',
 'prefs-editing' => 'Pag-ilis',
 'rows' => 'Mga linya:',
@@ -1133,7 +1109,6 @@ Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga m
 'localtime' => 'Lokal nga oras:',
 'timezoneuseserverdefault' => 'Gamiton ang ginagamit sang wiki ($1)',
 'timezoneuseoffset' => 'Iban pa (ibutang ang offset)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Oras sang server:',
 'guesstimezone' => 'Butangan halin sa brawser',
 'timezoneregion-africa' => 'Africa',
@@ -1364,7 +1339,6 @@ Ang imo adres sang e-mail wala ginapakita kon kontakon ka sang iban.',
 'recentchanges-label-minor' => 'Diotay ilis ini',
 'recentchanges-label-bot' => 'Ang sini nga pagbag-o ginubra sang isa ka bot',
 'recentchanges-label-unpatrolled' => 'Ang sini nga pagbag-o indi pa ginbantayan',
-'rcnote' => "Diri sa idalum {{PLURAL:$1|ay '''1''' na bag-o|sang nagligad '''$1''' mga nabag-o}} sa naligad {{PLURAL:$2|adlaw|'''$2''' adlaw}}, sang mga $5, $4.",
 'rcnotefrom' => "Yara sa idalum ang mga guinbag-o halin '''$2''' (tubtub '''$1''' ang ginpagwa).",
 'rclistfrom' => 'Ipakita ang bag-o lang nahimo halin sa $1',
 'rcshowhideminor' => '$1 menor nga mga inislan',
@@ -1512,8 +1486,6 @@ Ang gusto nga {{PLURAL:\$3|tipo sang file amo|mga tipo sang file amo ang}} \$2."
 'allpagesfrom' => 'Ipakita ang mga pahina sugod sa:',
 'allpagesto' => 'Ipakita ang mga pahina nga nagakatapos sa:',
 'allarticles' => 'Tanan nga mga pahina',
-'allpagesprev' => 'Nagligad',
-'allpagesnext' => 'Dason',
 'allpagessubmit' => 'Sige',
 
 # Special:Categories
@@ -1648,8 +1620,6 @@ Pwede mo mabag-o ang lebel sang proteksiyon sang pahina, pero indi ini ma apektu
 'ipbreason' => 'Rason:',
 'ipbother' => 'Iban nga oras:',
 'ipboptions' => '2 oras:2 hours,1 adlaw:1 day,3 adlaw:3 days,1 semana:1 week,2 semana:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 tu-ig:1 year,wala katapusan:infinite',
-'ipbotheroption' => 'lain',
-'ipbotherreason' => 'Iban ukon dugang nga rason:',
 'ipbhidename' => 'Itago ang ngalan sang tiggamit sa mga pagbag-o kag mga listahan.',
 'ipblocklist' => 'Napunggan nga mga manug-usar',
 'blocklist-rangeblocks' => 'Itago ang mga bloke sang ginasakupan',
@@ -1692,7 +1662,6 @@ palihog siguradohon mo nga naintindihan ang resulta antes mo ini pagahimuon.",
 
 Sa sini nga mga kaso, kilanlan mo gid isaylo o isahon ang pahina sang pag-amat amat kun gusto mo gid ini himuon.",
 'movearticle' => 'Saylohon ining panid:',
-'movenologin' => 'Wala naka-sulod',
 'newtitle' => 'Sa bag-o nga titulo:',
 'move-watch' => 'Bantayan ining panid',
 'movepagebtn' => 'Saylohon ining panid',
@@ -1700,9 +1669,6 @@ Sa sini nga mga kaso, kilanlan mo gid isaylo o isahon ang pahina sang pag-amat a
 'movepage-moved' => '\'\'\'"$1" nasaylo na didto sa "$2"\'\'\'',
 'articleexists' => 'May-ara na sang ngalan nga amu na, ukon ang ginpili mo na ngalan ay indi mabatunan.
 Palihog lang pili sang lain nga ngalan. Salamat.',
-'talkexists' => "'''Nasaylo na mismo ang ina nga pahina, pero ang hisayranay nga pahina indi masaylo kay man may ara na sang nakakuha sang bag-o nga titulo.
-Palihog lang sang pagkombinar sa ila sang ensakto.'''",
-'movedto' => 'gin saylo sa',
 'movetalk' => 'Isaylo ang upod mga nga pahina hambal',
 'movelogpage' => 'Giho log',
 'movereason' => 'Rason:',
@@ -1878,10 +1844,6 @@ Ang iban ay pagataguon sang default.
 'exif-focallengthin35mmfilm' => 'Laba sang pokus sang film nga 35 mm',
 'exif-scenecapturetype' => 'Tipo sang pag-kuha sang litrato',
 
-# External editor support
-'edit-externally' => 'Islan ini nga file gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Lantawa ang [https://www.mediawiki.org/wiki/Manual:External_editors tudlo sa pag panugod] para sa mga dugang nga impormasyon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tanan',
 'namespacesall' => 'tanan',
index fb21a70..57344e1 100644 (file)
@@ -26,6 +26,7 @@
  * @author Meno25
  * @author Mvrban
  * @author Nemo bis
+ * @author Phidrho
  * @author Roberta F.
  * @author SpeedyGonsales
  * @author Tivek
@@ -69,7 +70,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Stare_stranice' ),
        'Blankpage'                 => array( 'Prazna_stranica' ),
        'Block'                     => array( 'Blokiraj' ),
-       'Blockme'                   => array( 'Blokiraj_me' ),
        'Booksources'               => array( 'Traži_ISBN' ),
        'BrokenRedirects'           => array( 'Kriva_preusmjeravanja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -79,7 +79,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Stvori_račun' ),
        'Deadendpages'              => array( 'Slijepe_ulice' ),
        'DeletedContributions'      => array( 'Obrisani_doprinosi' ),
-       'Disambiguations'           => array( 'Razdvojbe' ),
        'DoubleRedirects'           => array( 'Dvostruka_preusmjeravanja' ),
        'Emailuser'                 => array( 'Elektronička_pošta', 'E-mail' ),
        'Export'                    => array( 'Izvezi' ),
@@ -339,7 +338,6 @@ $messages = array(
 'tog-minordefault' => 'Normalno označavaj sve moje izmjene kao manje',
 'tog-previewontop' => 'Prikaži kako će stranica izgledati iznad okvira za uređivanje',
 'tog-previewonfirst' => 'Prikaži kako će stranica izgledati čim otvorim uređivanje',
-'tog-nocache' => 'Isključi međuspremnik (cache) stranica u pregledniku',
 'tog-enotifwatchlistpages' => 'Pošalji mi e-mail kod izmjene stranice u popisu praćenja',
 'tog-enotifusertalkpages' => 'Pošalji mi e-mail kod izmjene moje stranice za razgovor',
 'tog-enotifminoredits' => 'Pošalji mi e-mail i kod manjih izmjena stranice',
@@ -474,7 +472,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Postavke stranice',
 'qbmyoptions' => 'Moje stranice',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'Najčešća pitanja',
 'faqpage' => 'Project:FAQ',
 
@@ -519,7 +516,7 @@ $messages = array(
 'deletethispage' => 'Izbriši ovu stranicu',
 'undeletethispage' => 'Vrati ovu stranicu',
 'undelete_short' => 'Vrati {{PLURAL:$1|$1 uređivanje|$1 uređivanja}}',
-'viewdeleted_short' => 'Prikaži $1 {{plural: $1|izbrisano uređivanje|izbrisana uređivanja|izbrisanih uređivanja}}',
+'viewdeleted_short' => 'Prikaži $1 {{PLURAL:$1|izbrisano uređivanje|izbrisana uređivanja|izbrisanih uređivanja}}',
 'protect' => 'Zaštiti',
 'protect_change' => 'promijeni',
 'protectthispage' => 'Zaštiti ovu stranicu',
@@ -683,9 +680,6 @@ Nema obrazloženja ili poruke o pogrješci.',
 'perfcached' => 'Sljedeći podaci su iz međuspremnika i možda nisu najsvježiji. Međuspremnik sadrži $1 {{PLURAL:$1|rezultat|rezultata}} pretraživanja.',
 'perfcachedts' => 'Sljedeći podaci su iz međuspremnika i zadnji puta su ažurirani u $1. Međuspremnik sadrži $4 {{PLURAL:$4|rezultat|rezultata}} pretraživanja.',
 'querypage-no-updates' => 'Osvježavanje ove stranice je trenutačno onemogućeno. Nove promjene neće biti vidljive.',
-'wrong_wfQuery_params' => 'Neispravni parametri poslani u wfQuery()<br />
-Funkcija: $1<br />
-Upit: $2',
 'viewsource' => 'Vidi izvornik',
 'viewsource-title' => 'Vidi kôd stranice $1',
 'actionthrottled' => 'Uređivanje je usporeno',
@@ -859,7 +853,7 @@ Ako ga navedete, bit će korišteno za pripisivanje Vaših doprinosa.',
 'user-mail-no-body' => 'Pokušali ste poslati e-mail bez sadržaja ili s prekratkim sadržajem.',
 
 # Change password dialog
-'resetpass' => 'Promijeni lozinku',
+'changepassword' => 'Promjena lozinke',
 'resetpass_announce' => 'Prijavljeni ste s privremenom lozinkom. Da završite proces mijenjanja lozinke, upišite ovdje novu lozinku:',
 'resetpass_header' => 'Promijeni lozinku računa',
 'oldpassword' => 'Stara lozinka',
@@ -1231,10 +1225,6 @@ Možete ju pregledati; više podataka možete vidjeti u [{{fullurl:{{#Special:Lo
 'revisiondelete' => 'Izbriši/vrati izmjene',
 'revdelete-nooldid-title' => 'Nema tražene izmjene',
 'revdelete-nooldid-text' => 'Niste naveli željenu izmjenu (izmjene), željena izmjena ne postoji, ili  pokušavate sakriti trenutačnu izmjenu.',
-'revdelete-nologtype-title' => 'Nije zadana vrsta evidencije',
-'revdelete-nologtype-text' => 'Niste izabrali vrstu evidencije nad kojom se vrši ova radnja.',
-'revdelete-nologid-title' => 'Nevaljani zapis u evidenciji',
-'revdelete-nologid-text' => 'Niste naveli ciljnu evidenciju ili navedeni zapis ne postoji.',
 'revdelete-no-file' => 'Navedena datoteka ne postoji.',
 'revdelete-show-file-confirm' => 'Jeste li sigurni da želite pregledati izbrisanu inačicu datoteke "<nowiki>$1</nowiki>" od $2 u $3?',
 'revdelete-show-file-submit' => 'Da',
@@ -1267,8 +1257,6 @@ $1",
 'logdelete-failure' => "'''Vidljivost evidencije ne može biti postavljena:'''
 $1",
 'revdel-restore' => 'Promijeni dostupnost',
-'revdel-restore-deleted' => 'izbrisane izmjene',
-'revdel-restore-visible' => 'vidljive izmjene',
 'pagehist' => 'Povijest stranice',
 'deletedhist' => 'Obrisana povijest',
 'revdelete-hide-current' => 'Pogrješka u skrivanju stavke datirane $2, $1: ovo je trenutačna inačica. Ne može biti skrivena.',
@@ -1346,12 +1334,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati traženja za "$1"',
-'searchresulttext' => 'Za više obavijesti o pretraživanju projekta {{SITENAME}} vidi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje povezuju na "$1"]])',
-'searchsubtitleinvalid' => 'Za upit "$1"',
 'toomanymatches' => 'Preveliki broj rezultata, molimo probajte drukčiji upit',
 'titlematches' => 'Pronađene stranice prema naslovu',
-'notitlematches' => 'Nema pronađenih stranica prema naslovu',
 'textmatches' => 'Pronađene stranice prema tekstu članka',
 'notextmatches' => 'Nema pronađenih stranica prema tekstu članka',
 'prevn' => 'prethodnih {{PLURAL:$1|$1}}',
@@ -1360,10 +1344,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '$1 {{PLURAL:$1|sljedeći rezultat|sljedeća rezultata|sljedećih rezultata}}',
 'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultata}} po stranici',
 'viewprevnext' => 'Vidi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Mogućnosti pretraživanja',
 'searchmenu-exists' => "* Stranica '''[[$1]]'''",
 'searchmenu-new' => "'''Stvori stranicu \"[[:\$1]]\" na ovoj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pretraži stranice s ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sa sadržajem',
 'searchprofile-project' => 'Pomoć i stranice projekta',
 'searchprofile-images' => 'Multimedija',
@@ -1384,20 +1366,16 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
 'search-relatedarticle' => 'Povezano',
-'mwsuggest-disable' => 'Isključi AJAX prijedloge',
 'searcheverything-enable' => 'Traži u svim imenskim prostorima',
 'searchrelated' => 'povezano',
 'searchall' => 'sve',
 'showingresults' => "Dolje {{PLURAL:$1|je prikazan '''$1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}}, počevši od '''$2'''.",
 'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''$3''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}}, počevši s brojem '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Napomena''': Glavne postavke pretražuju samo određene imenske prostore. Ako želite pretraživati sve, dodajte prefiks '''all:''' ispred traženog sadržaja (ovo uključuje stranice za razgovor, predloške i sl.), ili koristite prefiks željenog imenskog prostora.",
 'search-nonefound' => 'Ne postoje rezultati koji se podudaraju s upitom.',
-'powersearch' => 'Traženje',
 'powersearch-legend' => 'Napredno pretraživanje',
 'powersearch-ns' => 'Traži u imenskom prostoru:',
 'powersearch-redir' => 'Prikaži preusmjerenja',
-'powersearch-field' => 'Traži za',
 'powersearch-togglelabel' => 'Uključi:',
 'powersearch-toggleall' => 'Sve',
 'powersearch-togglenone' => 'Ništa',
@@ -1408,7 +1386,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'preferences' => 'Postavke',
 'mypreferences' => 'Moje postavke',
 'prefs-edits' => 'Broj uređivanja:',
-'changepassword' => 'Promjena lozinke',
 'prefs-skin' => 'Izgled',
 'skin-preview' => 'Pregled',
 'datedefault' => 'Nemoj postaviti',
@@ -1431,13 +1408,11 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'prefs-email' => 'Mogućnosti e-maila',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Spremi',
-'resetprefs' => 'Vrati na prvotne postavke',
 'restoreprefs' => 'Vrati sve postavke na prvotno zadane',
 'prefs-editing' => 'Širina okvira za uređivanje',
 'rows' => 'Redova',
 'columns' => 'Stupaca',
 'searchresultshead' => 'Prikaz rezultata pretrage',
-'resultsperpage' => 'Koliko pogodaka na jednoj stranici',
 'stub-threshold' => 'Prag za formatiranje poput <a href="#" class="stub">poveznice mrve</a>:',
 'stub-threshold-disabled' => 'Onemogućeno',
 'recentchangesdays' => 'Broj dana prikazanih u nedavnim promjenama:',
@@ -1450,7 +1425,6 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'localtime' => 'Lokalno vrijeme:',
 'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
 'timezoneuseoffset' => 'Drugo (odredite razliku)',
-'timezoneoffset' => 'Razlika¹:',
 'servertime' => 'Vrijeme na poslužitelju:',
 'guesstimezone' => 'Vrijeme dobiveno od preglednika',
 'timezoneregion-africa' => 'Afrika',
@@ -1687,13 +1661,15 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
 'recentchanges' => 'Nedavne promjene',
 'recentchanges-legend' => 'Izbornik nedavnih promjena',
 'recentchanges-summary' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
+'recentchanges-noresult' => 'U zadanom vremenu nema promjena za zadane kriterije.',
 'recentchanges-feed-description' => 'Na ovoj stranici možete pratiti nedavne promjene u wikiju.',
 'recentchanges-label-newpage' => 'Ova izmjena stvorila je novu stranicu',
 'recentchanges-label-minor' => 'Ovo je manja izmjena',
 'recentchanges-label-bot' => 'Ovu izmjenu napravio je bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije pregledana',
+'recentchanges-label-plusminus' => 'Promjena veličine stranice (u bajtovima)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '$1 - nova stranica',
-'rcnote' => "{{PLURAL:$1|Slijedi zadnja '''$1''' promjena|Slijede zadnje '''$1''' promjene|Slijedi zadnjih '''$1''' promjena}} u {{PLURAL:$2|zadnjem '''$2''' danu|zadnja '''$2''' dana|zadnjih '''$2''' dana}}, od $5, $4.",
 'rcnotefrom' => 'Slijede promjene od <b>$2</b> (prikazano ih je do <b>$1</b>).',
 'rclistfrom' => 'Prikaži nove promjene počevši od $1',
 'rcshowhideminor' => '$1 manje promjene',
@@ -2002,7 +1978,7 @@ Sljedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vod
 'linkstoimage-redirect' => '$1 (preusmjeravanje datoteke) $2',
 'duplicatesoffile' => '{{PLURAL:$1|Sljedeća datoteka je kopija|$1 sljedeće datoteke su kopije|$1 sljedećih datoteka su kopije}} ove datoteke ([[Special:FileDuplicateSearch/$2|više detalja]]):',
 'sharedupload' => 'Ova je datoteka postavljena na $1 i mogu je koristiti ostali projekti.',
-'sharedupload-desc-there' => 'Ova datoteka je s $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
+'sharedupload-desc-there' => 'Ova datoteka je s projekta $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
 'sharedupload-desc-here' => 'Ova datoteka je sa $1 i mogu je koristiti drugi projekti. Opis s njezine [$2 stranice s opisom datoteke] prikazan je ispod.',
 'sharedupload-desc-edit' => 'Ova datoteka nalazi se na $1 i može se rabiti na drugim projektima.
 Njen opis možete urediti na [$2 stranici opisa datoteke].',
@@ -2162,10 +2138,8 @@ koja obično ukazuje na "pravu" odredišnu stranicu, na koju bi trebalo pokaziva
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'Samo neograničene zaštite',
 'protectedpages-cascade' => 'Samo prenosiva zaštita',
-'protectedpagestext' => 'Slijedeće stranice su zaštićene od premještanja ili uređivanja',
 'protectedpagesempty' => 'Nema zaštićenih stranica koje ispunjavaju uvjete koje ste postavili.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Sljedeći naslovi su zaštićeni od kreiranja',
 'protectedtitlesempty' => 'Nijedan naslov nije trenutačno zaštićen s tim parametrima.',
 'listusers' => 'Popis suradnika',
 'listusers-editsonly' => 'Pokaži samo suradnike s uređivanjem',
@@ -2216,9 +2190,6 @@ Možete suziti prikaz odabirući tip evidencije, suradničko ime ili stranicu u
 'allpagesto' => 'Pokaži stranice koje završavaju na:',
 'allarticles' => 'Svi članci',
 'allinnamespace' => 'Svi članci (prostor $1)',
-'allnotinnamespace' => 'Sve stranice koje nisu u prostoru $1',
-'allpagesprev' => 'Prijašnje',
-'allpagesnext' => 'Sljedeće',
 'allpagessubmit' => 'Kreni',
 'allpagesprefix' => 'Stranice čiji naslov počinje s:',
 'allpagesbadtitle' => 'Zadana stranica nije valjana, ili je imala međuwiki predmetak. Možda sadrži jedan ili više znakova koji ne mogu biti uporabljeni u nazivu stranice.',
@@ -2552,7 +2523,6 @@ ili je promjena vraćena ili uklonjena iz arhive.',
 'undeletebtn' => 'Vrati!',
 'undeletelink' => 'vidi/vrati',
 'undeleteviewlink' => 'pregled',
-'undeletereset' => 'Očisti',
 'undeleteinvert' => 'Obrni odabir',
 'undeletecomment' => 'Razlog:',
 'undeletedrevisions' => '{{PLURAL:$1|$1 inačica vraćena|$1 inačice vraćene|$1 inačica vraćeno}}',
@@ -2640,7 +2610,6 @@ Posljednja stavka evidencije blokiranja navedena je niže kao napomena:',
 'block' => 'Blokiraj suradnika',
 'unblock' => 'Deblokiraj suradnika',
 'blockip' => 'Blokiraj suradnika',
-'blockip-title' => 'Blokiraj suradnika',
 'blockip-legend' => 'Blokiraj suradnika',
 'blockiptext' => 'Koristite donji obrazac za blokiranje pisanja pojedinih suradnika ili IP adresa .
 To biste trebali raditi samo zbog sprječavanja vandalizma i u skladu
@@ -2650,7 +2619,6 @@ vandalizirane).',
 'ipadressorusername' => 'IP adresa ili suradničko ime',
 'ipbexpiry' => 'Rok (na engleskom)',
 'ipbreason' => 'Razlog:',
-'ipbreasonotherlist' => 'Drugi razlog',
 'ipbreason-dropdown' => "*Najčešći razlozi za blokiranje
 ** Netočne informacije
 ** Uklanjanje sadržaja stranica
@@ -2666,8 +2634,6 @@ vandalizirane).',
 'ipbsubmit' => 'Blokiraj ovog suradnika',
 'ipbother' => 'Neki drugi rok (na engleskom, npr. 6 days):',
 'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 tjedan:1 week,2 tjedna:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,neograničeno:infinite',
-'ipbotheroption' => 'drugo',
-'ipbotherreason' => 'Drugi/dodatni razlog:',
 'ipbhidename' => 'Sakrij suradničko ime iz uređivanja i popisa',
 'ipbwatchuser' => 'Prati suradničku stranicu i stranicu za razgovor ovog suradnika',
 'ipb-disableusertalk' => 'Onemogući ovog suradnika da uređuje svoju stranicu za razgovor dok je blokiran',
@@ -2755,7 +2721,6 @@ Za popis trenutačnih zabrana i blokiranja vidi [[Special:BlockList|popis blokir
 'proxyblockreason' => 'Vaša je IP adresa blokirana jer se radi o otvorenom posredniku (proxyju). Molimo stupite u vezu s Vašim davateljem internetskih usluga (ISP-om) ili službom tehničke podrške i obavijestite ih o ovom ozbiljnom sigurnosnom problemu.',
 'sorbsreason' => 'Vaša IP adresa je na popisu otvorenih posrednika na poslužitelju DNSBL.',
 'sorbs_create_account_reason' => 'Vaša IP adresa je na popisu otvorenih posrednika na poslužitelju DNSBL. Ne možete otvoriti račun.',
-'cant-block-while-blocked' => 'Ne možete blokirati druge suradnike dok ste blokirani.',
 'cant-see-hidden-user' => 'Korisnik kojeg pokušavate blokirati je već blokiran i sakriven. Pošto nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.',
 'ipbblocked' => 'Ne možete blokirati ili odblokirati druge suradnike, jer ste blokirani',
 'ipbnounblockself' => 'Nije Vam dopušteno odblokirati se',
@@ -2815,7 +2780,6 @@ U tim ćete slučajevima morati sami premjestiti ili iskopirati stranicu za razg
 ako to želite.",
 'movearticle' => 'Premjesti stranicu',
 'moveuserpage-warning' => "'''Upozorenje:''' Premještate suradničku stranicu. Imajte na umu da će stranica biti premještena, ali suradnik ''ne će'' biti preimenovan.",
-'movenologin' => 'Niste prijavljeni',
 'movenologintext' => 'Ako želite premjestiti stranicu morate biti [[Special:UserLogin|prijavljeni]].',
 'movenotallowed' => 'Nemate pravo premještanja stranica.',
 'movenotallowedfile' => 'Nemate ovlasti za premještanje datoteka.',
@@ -2831,8 +2795,6 @@ ako to želite.",
 'articleexists' => 'Stranica pod tim imenom već postoji ili ime koje ste odabrali nije u skladu s pravilima.
 Molimo odaberite drugo ime.',
 'cantmove-titleprotected' => 'Ne možete premjestiti ovu stranicu na ovo mjesto, jer je novi naslov zaštićen od kreiranja',
-'talkexists' => "'''Sama stranica je uspješno prenesena, ali stranicu za razgovor nije bilo moguće prenijeti jer na odredištu već postoji stranica za razgovor. Molimo da ih ručno spojite.'''",
-'movedto' => 'premješteno na',
 'movetalk' => 'Premjesti i njezinu stranicu za razgovor ako je moguće.',
 'move-subpages' => 'Premjesti podstranice (na $1)',
 'move-talk-subpages' => 'Premjesti podstranice od stranice za razgovor (na $1)',
@@ -3650,15 +3612,10 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Suradnički definiran prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Uredi koristeći se vanjskom aplikacijom',
-'edit-externally-help' => '(Vidi [https://www.mediawiki.org/wiki/Manual:External_editors setup upute] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
 'namespacesall' => 'sve',
 'monthsall' => 'sve',
-'limitall' => 'sve',
 
 # Email address confirmation
 'confirmemail' => 'Potvrda e-mail adrese',
@@ -3678,7 +3635,6 @@ Poruka o pogrešci e-mail poslužitelja: $1',
 'confirmemail_needlogin' => 'Molimo $1 kako biste potvrdili Vašu e-mail adresu.',
 'confirmemail_success' => 'Vaša je e-mail adresa potvrđena. Možete se prijaviti i uživati u wikiju.',
 'confirmemail_loggedin' => 'Vaša je e-mail adresa potvrđena.',
-'confirmemail_error' => 'Došlo je do greške kod snimanja Vaše potvrde.',
 'confirmemail_subject' => '{{SITENAME}}: potvrda e-mail adrese',
 'confirmemail_body' => 'Netko, vjerojatno Vi, s IP adrese $1 je otvorio
 suradnički račun pod imenom "$2" s ovom e-mail adresom na {{SITENAME}}.
@@ -3891,7 +3847,12 @@ Također možete koristiti [[Special:EditWatchlist|standardni editor]].',
 'version-hook-name' => 'Ime kuke',
 'version-hook-subscribedby' => 'Pretplaćeno od',
 'version-version' => '(Inačica $1)',
-'version-license' => 'Licencija',
+'version-license' => 'Licenca',
+'version-ext-license' => 'Licenca',
+'version-ext-colheader-version' => 'Verzija',
+'version-ext-colheader-license' => 'Licenca',
+'version-ext-colheader-description' => 'Opis',
+'version-ext-colheader-credits' => 'Autori',
 'version-poweredby-credits' => "Ovaj wiki pogoni '''[https://www.mediawiki.org/ MediaWiki]''', autorska prava © 2001-$1 $2.",
 'version-poweredby-others' => 'ostali',
 'version-credits-summary' => 'Željeli bismo zahvaliti sljedećim suradnicima na njihovom doprinosu [[Special:Version|MediaWikiju]].',
@@ -3911,6 +3872,7 @@ Trebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne lic
 'redirect-submit' => 'Idi',
 'redirect-value' => 'Vrijednost:',
 'redirect-user' => 'ID suradnika',
+'redirect-page' => 'ID stranice',
 'redirect-file' => 'Datotečno ime',
 
 # Special:FileDuplicateSearch
@@ -3973,7 +3935,6 @@ Trebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne lic
 
 # Special:ComparePages
 'comparepages' => 'Usporedite stranice',
-'compare-selector' => 'Usporedite inačice stranice',
 'compare-page1' => 'Stranica 1',
 'compare-page2' => 'Stranica 2',
 'compare-rev1' => 'Izmjena 1',
index 9f38082..f51cb94 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Derbeth
  * @author Dundak
  * @author J budissin
  * @author Kaganer
@@ -70,7 +71,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Najstarše_strony' ),
        'Blankpage'                 => array( 'Prózdna_strona' ),
        'Block'                     => array( 'Blokować' ),
-       'Blockme'                   => array( 'Blokowanje_proksijow' ),
        'Booksources'               => array( 'Pytanje_po_ISBN' ),
        'BrokenRedirects'           => array( 'Skóncowane_daleposrědkowanja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -80,7 +80,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Konto_wutworić' ),
        'Deadendpages'              => array( 'Strony_bjez_wotkazow' ),
        'DeletedContributions'      => array( 'Zničene_přinoški' ),
-       'Disambiguations'           => array( 'Rozjasnjenja_wjazmyslnosće' ),
        'DoubleRedirects'           => array( 'Dwójne_daleposrědkowanja' ),
        'Emailuser'                 => array( 'E-Mejl' ),
        'Export'                    => array( 'Eksport' ),
@@ -177,7 +176,6 @@ $messages = array(
 'tog-minordefault' => 'Wšě změny standardnje jako snadne woznamjenić',
 'tog-previewontop' => 'Přehlad před wobdźěłanskim polom pokazać',
 'tog-previewonfirst' => 'Při prěnim wobdźěłanju přehlad pokazać',
-'tog-nocache' => 'Pufrowanje stronow wobhladowaka znjemóžnić',
 'tog-enotifwatchlistpages' => 'E-mejlku pósłać, hdyž so strona abo dataja z wobkedźbowankow změni',
 'tog-enotifusertalkpages' => 'E-mejlku pósłać, hdyž so moja wužiwarska diskusijna strona změni',
 'tog-enotifminoredits' => 'Tež za snadne změny stronow a datajow e-mejl pósłać',
@@ -196,6 +194,7 @@ $messages = array(
 'tog-ccmeonemails' => 'Mi kopije e-mejlkow pósłać, kotrež druhim wužiwarjam pósćelu',
 'tog-diffonly' => 'Jenož rozdźěle pokazać (nic pak zbytny wobsah)',
 'tog-showhiddencats' => 'Schowane kategorije pokazać',
+'tog-noconvertlink' => 'Konwertowanje wotkazoweho titula znjemóžnić',
 'tog-norollbackdiff' => 'Rozdźěl po wróćostajenju zanjechać',
 'tog-useeditwarning' => 'Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća',
 'tog-prefershttps' => 'Po přizjewjenju přeco wěsty zwisk wužiwać',
@@ -312,7 +311,6 @@ $messages = array(
 'qbedit' => 'Wobdźěłać',
 'qbpageoptions' => 'Tuta strona',
 'qbmyoptions' => 'Moje strony',
-'qbspecialpages' => 'Specialne strony',
 'faq' => 'Husto stajene prašenja (FAQ)',
 'faqpage' => 'Project:Husto stajene prašenja (FAQ)',
 
@@ -338,7 +336,7 @@ $messages = array(
 'returnto' => 'Wróćo k stronje $1.',
 'tagline' => 'z {{GRAMMAR:genitiw|{{SITENAME}}}}',
 'help' => 'Pomoc',
-'search' => 'pytać',
+'search' => 'Pytać',
 'searchbutton' => 'Pytać',
 'go' => 'Pytać',
 'searcharticle' => 'Pytać',
@@ -528,9 +526,6 @@ Njeje žane wujasnjenje podała.',
 'perfcached' => 'Slědowace daty pochadźeja z pufrowaka a njejsu snano cyle aktualne. Maksimalnje {{PLURAL:$1|jedyn wuslědk|$1 wuslědkaj|$1 wuslědki|$1 wuslědkow}} w pufrowaku k dispoziciji {{PLURAL:$1|steji|stejitej|steja|steji}}.',
 'perfcachedts' => 'Slědowace daty su z pufrowaka a buchu $1 posledni raz zaktualizowane. Maksimalnje {{PLURAL:$4|jedyn wuslědk|$4 wuslědkaj|$4 wuslědki|$4 wuslědkow}} w pufrowaku k dispoziciji {{PLURAL:$4|steji|stejitej|steja|steji}}.',
 'querypage-no-updates' => 'Aktualizacije za tutu stronu su tuchwilu znjemóžnjene. Daty so hač na dalše njewobnowja.',
-'wrong_wfQuery_params' => 'Njeprawe parametry za wfQuery()<br />
-Funkcija: $1<br />
-Wotprašenje: $2',
 'viewsource' => 'žórło wobhladać',
 'viewsource-title' => 'Žórłowy tekst za $1 sej wobhladać',
 'actionthrottled' => 'Akcije wobmjezowane',
@@ -657,7 +652,7 @@ Přepruwuj swój prawopis abo [[Special:UserLogin/signup|wutwor nowe konto]].',
 'passwordtooshort' => 'Hesła dyrbja znajmjeńša {{PLURAL:$1|1 znamješko|$1 znamješce|$1 znamješka|$1 znamješkow}} měć.',
 'password-name-match' => 'Twoje hesło dyrbi so wot twojeho wužiwarskeho mjena rozeznać.',
 'password-login-forbidden' => 'Wužiwanje tutoho wužiwarskeho mjena a heska je zakazane.',
-'mailmypassword' => 'Nowe hesło e-mejlować',
+'mailmypassword' => 'Hesło wróćo stajić',
 'passwordremindertitle' => 'Nowe nachwilne hesło za {{GRAMMAR:akuzatiw|{{SITENAME}}}}',
 'passwordremindertext' => 'Něchtó z IP-adresu $1 (najskerje ty) je wo nowe hesło za přizjewjenje za {{GRAMMAR:akuzatiw|{{SITENAME}}}} ($4) prosył. Nachwilne hesło za wužiwarja "$2" je so wutworiło a je nětko "$3". Jeli je to twój wotpohlad było dyrbiš so nětko přizjewić a nowe hesło wubrać. Twoje nachwilne hesło spadnje za {{PLURAL:$5|jeden dźeń|$5 dnjej|$5 dny|$5 dnjow}}.
 
@@ -699,7 +694,7 @@ Jeli jo podaš, budźe so to wužiwać, zo by přinoški přirjadowało.',
 'user-mail-no-body' => 'Je so spytało, e-mejl bjez teksta abo z překrótkim tekstom pósłać',
 
 # Change password dialog
-'resetpass' => 'Hesło změnić',
+'changepassword' => 'Hesło změnić',
 'resetpass_announce' => 'Sy so z nachwilnym e-mejlowanym kodom přizjewił. Zo by přizjewjenje zakónčił, dyrbiš nětko nowe hesło postajić:',
 'resetpass_text' => '<!-- Tu tekst zasunyć -->',
 'resetpass_header' => 'Kontowe hesło změniś',
@@ -720,7 +715,7 @@ Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło poža
 # Special:PasswordReset
 'passwordreset' => 'Hesło wróćo stajić',
 'passwordreset-text-one' => 'Wupjelń tutón formular, zo by swoje hesło anulował.',
-'passwordreset-text-many' => '{{PLURAL:$1|Zapodaj jedne z polow, zo by swoje hesło wróćo stajił.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Wupjelń jedne z polow, zo by nachwilne hesło přez e-mejl dóstał.}}',
 'passwordreset-legend' => 'Hesło wróćo stajić',
 'passwordreset-disabled' => 'Wróćostajenje hesłow je so na  tutym wikiju znjemóžniło.',
 'passwordreset-emaildisabled' => 'E-mejlowe funkcije su so na tutym wikiju znjemóžnili.',
@@ -885,12 +880,12 @@ Twoje změny hišće njejsu składowane!",
 'previewconflict' => 'Tutón přehlad zwobraznja tekst w hornim tekstowym polu,  kaž so zjewi, jeli jón składuješ.',
 'session_fail_preview' => "'''Njemóžachmy twoju změnu předźěłać, dokelž su so posedźenske daty zhubili.'''
 Spytaj prošu hišće raz.
-Jeli to hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so zaso.",
-'session_fail_preview_html' => "'''Njemóžachmy twoje změnu předźěłać, dokelž su so posedźenske daty zhubili.'''
+Jeli přeco hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so znowa.",
+'session_fail_preview_html' => "'''Njemóžachmy twoju změnu předźěłać, dokelž su so posedźenske daty zhubili.'''
 
-''Dokelž we {{GRAMMAR:lokatiw|{{SITENAME}}}} je luty HTML zmóžnił, je přehlad jako wěstotna naprawa přećiwo atakam přez JavaScript schowany.''
+''Dokelž je we {{GRAMMAR:lokatiw|{{SITENAME}}}} luty HTML zmóžnjeny, je přehlad jako wěstotna naprawa přećiwo atakam přez JavaScript schowany.''
 
-'''Jeli to je legitimny wobdźěłowanski pospyt, spytaj prošu hišće raz. Jeli to hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so znowa.'''",
+'''Jeli to je chutnje měnjeny wobdźěłowanski pospyt, spytaj prošu hišće raz. Jeli přeco hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so znowa.'''",
 'token_suffix_mismatch' => "'''Twoja změna je so wotpokazała, dokelž twój wobhladowak je znamješka skepsał.
 Składowanje móže wobsah strony zničić. Móže so to na přikład přez wopačnje dźěłowacy proksy stać.'''",
 'edit_form_incomplete' => "'''Někotre dźěle wobdźěłowanskeho formulara njejsu serwer docpěli; prošu přepruwuj, hač twoje změny su w porjadku a spytaj hišće raz.'''",
@@ -965,6 +960,8 @@ Eksistuje hižo.',
 'invalid-content-data' => 'Njepłaćiwe wobsahowe daty',
 'content-not-allowed-here' => 'Wobsah "$1" njeje na stronje [[$2]] dowoleny',
 'editwarning-warning' => 'Hdyž so strona wopušća, móža so změny zhubić, kotrež sy přewjedł. Jeli sy přizjewjeny, móžeš tute warnowanje we wotrězku "Wobdźěłowanje" swojich nastajenjow znjemóžnić.',
+'editpage-notsupportedcontentformat-title' => 'Wobsahowy format so njepodpěruje',
+'editpage-notsupportedcontentformat-text' => 'Wobsahowy format $1 so přez wobsahowy model $2 njepodpěruje.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -1004,6 +1001,9 @@ Dyrbjała mjenje hač $2 {{PLURAL:$2|wołanje|wołanjej|wołanja|wołanjow}} mě
 'cantcreateaccount-text' => "Wutworjenje wužiwarskeho konta z IP-adresy '''$1''' bu wot [[User:$3|$3]] zablokowane.
 
 Přičina za blokowanje, podata wot $3, je: ''$2''",
+'cantcreateaccount-range-text' => "Załoženje kontow z IP-adresow we wobłuku '''$1'', kotryž twoju IP-adresu wobsahuje ('''$4'''), je so wot [[User:$3|$3]] zablokowało.
+
+Přičina podata wot $3 je ''$2''",
 
 # History pages
 'viewpagelogs' => 'protokole tuteje strony pokazać',
@@ -1071,10 +1071,6 @@ Móžeš sej tutón rozdźěl wobhladać; podrobnosće namakaš w [{{fullurl:{{#
 'revisiondelete' => 'Wersije wušmórnyć/wobnowić',
 'revdelete-nooldid-title' => 'Njepłaćiwa cilowa wersija',
 'revdelete-nooldid-text' => 'Pak njejsy cilowu wersiju podał, zo by tutu funkciju wuwjedł, podata wersija njeeksistuje pak pospytuješ aktualnu wersiju schować.',
-'revdelete-nologtype-title' => 'Žadyn protokolowy typ podaty',
-'revdelete-nologtype-text' => 'Njejsy protokolowy typ podał, zo by tutu akciju wuwjedł.',
-'revdelete-nologid-title' => 'Njepłaćiwy protokolowy zapisk',
-'revdelete-nologid-text' => 'Pak njejsy cilowy protokolowy podawk podał, zo by tutu funkciju wuwjedł pak podaty zapisk njeeksistuje.',
 'revdelete-no-file' => 'Podata dataja njeeksistuje.',
 'revdelete-show-file-confirm' => 'Chceš sej woprawdźe wušmórnjenu wersiju dataje "<nowiki>$1</nowiki>" wot $2 $3  wobhladać?',
 'revdelete-show-file-submit' => 'Haj',
@@ -1108,8 +1104,6 @@ $1",
 'logdelete-failure' => "'''Protokolowa widźomnosć njeda so nastajić:'''
 $1",
 'revdel-restore' => 'Widźomnosć změnić',
-'revdel-restore-deleted' => 'zhašane wersije',
-'revdel-restore-visible' => 'widźomne wersije',
 'pagehist' => 'Stawizny strony',
 'deletedhist' => 'Wušmórnjene stawizny',
 'revdelete-hide-current' => 'Zmylk při chowanju zapiska wot $2, $1: to je aktualna wersija.
@@ -1187,12 +1181,8 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 # Search results
 'searchresults' => 'Pytanske wuslědki',
 'searchresults-title' => 'Pytanske wuslědki za "$1"',
-'searchresulttext' => 'Za dalše informacije wo pytanju {{GRAMMAR:genitiw|{{SITENAME}}}}, hlej [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Sy za \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|wšěmi stronami, kotrež započinaja so z "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|wšěmi stronami, kotrež na "$1" wotkazuja]]) pytal.',
-'searchsubtitleinvalid' => 'Sy naprašowanje za „$1“ stajił.',
 'toomanymatches' => 'Přewjele pytanskich wuslědkow, prošu spytaj druhe wotprašenje.',
 'titlematches' => 'Strony z wotpowědowacym titulom',
-'notitlematches' => 'Žane strony z wotpowědowacym titulom',
 'textmatches' => 'Strony z wotpowědowacym tekstom',
 'notextmatches' => 'Žane strony z wotpowědowacym tekstom',
 'prevn' => '{{PLURAL:$1|předchadny $1|předchadnej $1|předchadne $1|předchadnych $1}}',
@@ -1201,10 +1191,8 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'nextn-title' => '{{PLURAL:$1|Přichodny wuslědk|Přichodnej $1 wuslědkaj|Přichodne $1 wuslědki|Přichodnych $1 wuslědkow}}',
 'shown-title' => '$1 {{PLURAL:$1|wuslědk|wuslědkaj|wuslědki|wuslědkow}} na stronu pokazać',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) pokazać',
-'searchmenu-legend' => 'Pytanske opcije',
 'searchmenu-exists' => "'''Je strona z mjenom \"[[\$1]]\" na tutym wikiju'''",
 'searchmenu-new' => "'''Wutwor stronu \"[[:\$1|\$1]]\" na tutym wikiju!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Strony z tutym prefiksom přepytać]]',
 'searchprofile-articles' => 'Wobsahowe strony',
 'searchprofile-project' => 'Pomoc a projektowe strony',
 'searchprofile-images' => 'Multimedia',
@@ -1225,21 +1213,16 @@ Podrobnosće móžeš w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'search-interwiki-default' => '$1 wuslědki:',
 'search-interwiki-more' => '(dalše)',
 'search-relatedarticle' => 'Přiwuzne',
-'mwsuggest-disable' => 'Pytanske namjety znjemóžnić',
 'searcheverything-enable' => 'We wšěch mjenowych rumach pytać',
 'searchrelated' => 'přiwuzny',
 'searchall' => 'wšě',
 'showingresults' => "Deleka so hač {{PLURAL:$1|'''1''' wuslědk pokazuje|'''$1''' wuslědkaj pokazujetej|'''$1''' wuslědki pokazuja|'''$1''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
 'showingresultsnum' => "Deleka so {{PLURAL:$3|'''1''' wuslědk pokazuje|'''$3''' wuslědkaj pokazujetej|'''$3''' wuslědki pokazuja|'''$3''' wuslědkow pokazuje}}, započinajo z #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wuslědk '''$1''' z '''$3'''|Wuslědki '''$1 - $2''' z '''$3'''}} za '''$4'''",
-'nonefound' => "'''Kedźbu''': Jenož někotre mjenowe rumy pytaja so po standardźe.
-Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (inkluziwnje diskusijne strony, předłohi atd.) pytał abu wužij požadany mjenowy rum jako prefiks.",
 'search-nonefound' => 'Njebuchu wuslědki namakane, kotrež naprašowanju wotpowěduja.',
-'powersearch' => 'Pytać',
 'powersearch-legend' => 'Rozšěrjene pytanje',
 'powersearch-ns' => 'W mjenowych rumach pytać:',
 'powersearch-redir' => 'Daleposrědkowanja nalistować',
-'powersearch-field' => 'Pytać za:',
 'powersearch-togglelabel' => 'Kontrolować:',
 'powersearch-toggleall' => 'Wšě',
 'powersearch-togglenone' => 'Žadyn',
@@ -1252,7 +1235,6 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'mypreferences' => 'Nastajenja',
 'prefs-edits' => 'Ličba změnow:',
 'prefsnologintext2' => 'Dyrbiš so $1, zo by wužiwarske nastajenja postajił.',
-'changepassword' => 'Hesło změnić',
 'prefs-skin' => 'Drasta',
 'skin-preview' => 'Přehlad',
 'datedefault' => 'Žane nastajenje',
@@ -1275,13 +1257,11 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
 'prefs-email' => 'E-mejlowe opcije',
 'prefs-rendering' => 'Napohlad',
 'saveprefs' => 'Składować',
-'resetprefs' => 'Njeskładowane změny zaćisnyć',
 'restoreprefs' => 'Wšě standardne nastajenja wobnowić (w druhich wotrězkach)',
 'prefs-editing' => 'Wobdźěłowanje',
 'rows' => 'Rjadki:',
 'columns' => 'Stołpiki:',
 'searchresultshead' => 'Pytać',
-'resultsperpage' => 'Wuslědki za stronu:',
 'stub-threshold' => 'Wotkazowe formatowanje <a href="#" class="stub">małych stronow</a> (w bajtach):',
 'stub-threshold-disabled' => 'Znjemóžnjeny',
 'recentchangesdays' => 'Ličba dnjow w lisćinje aktualnych změnow:',
@@ -1296,7 +1276,6 @@ Něchtó, kotryž jón znaje, móže twoje wobkedźbowanki čitać, njedźěl j
 'localtime' => 'Lokalny čas:',
 'timezoneuseserverdefault' => 'Wikijowy standard serwera wužiwać ($1)',
 'timezoneuseoffset' => 'Druhe (pódaj wotchilenje)',
-'timezoneoffset' => 'Rozdźěl¹:',
 'servertime' => 'Čas serwera:',
 'guesstimezone' => 'Z wobhladowaka přewzać',
 'timezoneregion-africa' => 'Afrika',
@@ -1365,6 +1344,7 @@ Tuta informacija budźe zjawna.',
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Rozdźěle',
 'prefs-help-prefershttps' => 'Tute nastajenje so po twojim přichodnym přizjewjenju wuskutkuje.',
+'prefs-tabs-navigation-hint' => 'Tip: Móžeš lěwy a prawy šipk wužiwać, zo byšće mjez rajtarkami w lisćinje rajtarkow nawigował.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Zda so, zo e-mejlowa adresa je płaćiwa',
@@ -1551,14 +1531,14 @@ Tuta informacija budźe zjawna.',
 'recentchanges-label-bot' => 'Tuta změna bu přez roboćik přewjedźena',
 'recentchanges-label-unpatrolled' => 'Tuta změnu hišće njebu přepruwowana',
 'recentchanges-label-plusminus' => 'Změnjena wulkosć strony (w bajtach)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(hlej tež [[Special:NewPages|lisćinu nowych stronow]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Deleka {{PLURAL:$1|je '''1''' změna|stej poslednjej '''$1''' změnje|su poslednje '''$1''' změny|je poslednich '''$1''' změnow}} za {{PLURAL:$2|posledni dźeń|poslednjej '''$2''' dnjej|poslednje '''$2''' dny|poslednich '''$2''' dnjow}}, staw wot $4, $5.",
 'rcnotefrom' => "Deleka so změny wot '''$2''' pokazuja (hač k '''$1''').",
 'rclistfrom' => 'Nowe změny pokazać, započinajo z $1',
 'rcshowhideminor' => 'snadne změny $1',
 'rcshowhidebots' => 'Boćiki $1',
-'rcshowhideliu' => 'Přizjewjeni wužiwarjo $1',
+'rcshowhideliu' => 'Zregistrowani wužiwarjo $1',
 'rcshowhideanons' => 'Anonymni wužiwarjo $1',
 'rcshowhidepatr' => 'Dohladowane změny $1',
 'rcshowhidemine' => 'moje změny $1',
@@ -1675,6 +1655,7 @@ Jeli maš tutón wobraz z połnym rozeznaćom, nahraj tutón, hewak změń proš
 'fileexists-shared-forbidden' => 'Dataja z tutym mjenom hižo eksistuje w zhromadnej chowarni. Jeli hišće chceš swoju dataju nahrać,  dźi prošu wróćo a wužij nowe mjeno. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Tuta dataja je duplikat {{PLURAL:$1|slědowaceje dataje|slědowaceju datajow|slědowacych datajow|slědowacych datajow}}:',
 'file-deleted-duplicate' => 'Dataja, kotraž je identiska z tutej dataju ([[:$1]]), je so prjedy zničiła. Ty měł stawizny zničenja tuteje dataje přepruwować, prjedy pokročuješ z jeje zasonahrawanjom.',
+'file-deleted-duplicate-notitle' => 'Z tutej dataju identiska dataja je so prjedy zhašała, a titul je so potłóčił. Ty měł so někoho prašeć, kotryž ma móžnosć, sej potłóčene daty wobhladać, zo by situaciju přepruwował, prjedy hač ju znowa nahraješ.',
 'uploadwarning' => 'Warnowanje',
 'uploadwarning-text' => 'Prošu změń slědowace datajowe wopisanje a spytaj hišće raz.',
 'savefile' => 'Dataju składować',
@@ -2009,6 +1990,7 @@ Kóžda rjadka wobsahuje wotkazy k prěnjemu a druhemu daleposrědkowanju kaž t
 'ninterwikis' => '$1 {{PLURAL:$1|mjezyrěčny wotkaz|mjezyrěčnej wotkazaj|mjezyrěčne wotkazy|mjezyrěčnych wotkazow}}',
 'nlinks' => '$1 {{PLURAL:$1|wotkaz|wotkazaj|wotkazy|wotkazow}}',
 'nmembers' => '{{PLURAL:$1|$1 čłon|$1 čłonaj|$1 čłony|$1 čłonow}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|čłon|čłonaj|čłonojo|čłonow}}',
 'nrevisions' => '$1 {{PLURAL:$1|wobdźěłanje|wobdźěłani|wobdźěłanja|wobdźěłanjow}}',
 'nviews' => '$1 {{PLURAL:$1|jedyn wopyt|wopytaj|wopyty|wopytow}}',
 'nimagelinks' => 'Wužiwa so na $1 {{PLURAL:$1|stronje|stronomaj|stronach|stronach}}',
@@ -2047,10 +2029,9 @@ Kóžda rjadka wobsahuje wotkazy k prěnjemu a druhemu daleposrědkowanju kaž t
 'protectedpages' => 'Škitane strony',
 'protectedpages-indef' => 'Jenož strony z njewobmjezowanym škitom',
 'protectedpages-cascade' => 'Jenož strony z kaskadowym škitom',
-'protectedpagestext' => 'Tuta specialna strona naliči wšě strony, kotrež su přećiwo přesunjenju abo wobdźěłowanju škitane.',
+'protectedpages-noredirect' => 'Dalesposrědkowanja schować',
 'protectedpagesempty' => 'Tuchwilu žane.',
 'protectedtitles' => 'Škitane titule',
-'protectedtitlestext' => 'Slědowace titule su přećiwo wutworjenju škitane',
 'protectedtitlesempty' => 'Žane titule njejsu tuchwilu z tutymi parametrami škitane.',
 'listusers' => 'Lisćina wužiwarjow',
 'listusers-editsonly' => 'Jenož wužiwarjow ze změnami pokazać',
@@ -2101,9 +2082,6 @@ Prošu wobkedźbuj, zo druhe websydła móža na dataju z direktnym URL wotkazow
 'allpagesto' => 'Strony pokazać, kotrež kónča so na:',
 'allarticles' => 'Wšě nastawki',
 'allinnamespace' => 'Wšě strony (mjenowy rum $1)',
-'allnotinnamespace' => 'Wšě strony (nic w mjenowym rumje $1)',
-'allpagesprev' => 'Předchadne',
-'allpagesnext' => 'Přichodne',
 'allpagessubmit' => 'Pokazać',
 'allpagesprefix' => 'Strony pokazać z prefiksom:',
 'allpagesbadtitle' => 'Mjeno strony, kotrež sy zapodał, njebě płaćiwe. Měješe pak mjezyrěčny, pak mjezywikijowy prefiks abo wobsahowaše jedne abo wjace znamješkow, kotrež w titlach dowolene njejsu.',
@@ -2325,6 +2303,7 @@ Prošu potwjerdź, zo maš wotpohlad to činić, zo rozumiš sćěwki a zo to wo
 'delete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
 'delete-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.',
 'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druhe strony wotkazuja k stronje, kotruž chceš zhašeć.",
 
 # Rollback
 'rollback' => 'Změny cofnyć',
@@ -2432,7 +2411,6 @@ W tutym padźe dyrbiš najnowšu wušmórnjenu wersiju znjemóžnić abo pokaza
 'undeletebtn' => 'Wobnowić',
 'undeletelink' => 'wobhladać sej/wobnowić',
 'undeleteviewlink' => 'wobhladać sej',
-'undeletereset' => 'Cofnyć',
 'undeleteinvert' => 'Wuběr wobroćić',
 'undeletecomment' => 'Přičina:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} {{PLURAL:$1|wobnowjena|wobnowjenej|wobnowjene|wobnowjene}}',
@@ -2520,13 +2498,11 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
 'block' => 'Wužiwarja blokować',
 'unblock' => 'Blokowanje wužiwarja zběhnyć',
 'blockip' => 'Wužiwarja zablokować',
-'blockip-title' => 'Wužiwarja blokować',
 'blockip-legend' => 'Wužiwarja blokować',
 'blockiptext' => 'Wužij slědowacy formular deleka, zo by pisanski přistup za podatu IP-adresu abo wužiwarske mjeno blokował. To měło so jenož stać, zo by wandalizmej zadźěwało a woptpowědujo [[{{MediaWiki:Policy-url}}|zasadam]]. Zapodaj deleka přičinu (na př. citujo wosebite strony, kotrež běchu z woporom wandalizma).',
 'ipadressorusername' => 'IP-adresa abo wužiwarske mjeno',
 'ipbexpiry' => 'Spadnjenje',
 'ipbreason' => 'Přičina:',
-'ipbreasonotherlist' => 'Druha přičina',
 'ipbreason-dropdown' => '*powšitkowne přičiny
 ** wandalizm
 ** wutworjenje njezmyslnych stronow
@@ -2543,8 +2519,6 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
 'ipbsubmit' => 'Wužiwarja zablokować',
 'ipbother' => 'Druha doba',
 'ipboptions' => '2 hodźinje:2 hours,1 dźeń:1 day,3 dny:3 days,1 tydźeń:1 week,2 njedźeli:2 weeks,1 měsać:1 month,3 měsacy:3 months,6 měsacow:6 months,1 lěto:1 year,na přeco:infinite',
-'ipbotheroption' => 'druha doba (jendźelsce)',
-'ipbotherreason' => 'Druha/přidatna přičina:',
 'ipbhidename' => 'Wužiwarske mjeno stawiznach a lisćinach schować',
 'ipbwatchuser' => 'Wužiwarsku a diskusijnu stronu tutoho wužiwarja wobkedźbować',
 'ipb-disableusertalk' => 'Tutomu wužiwarjej zadźěwać, swoju diskusijnu stronu wobdźěłać, mjeztym zo je zablokowany',
@@ -2556,6 +2530,7 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
 Hlej [[Special:BlockList|lisćinu blokowanjow]], zo by zablokowanjow pruwował.',
 'ipb-blockingself' => 'Chceš samoho blokować! Chceš to woprawdźe činić?',
 'ipb-confirmhideuser' => 'Chceš runje wužiwarja z nastajenjom "wužiwarja schować" blokować. To k tomu dowjedźe, zo mjeno wužiwarja so we wšch lisćinach a protokolowych zapiskach potłóči. Chceš to woprawdźe činić?',
+'ipb-confirmaction' => 'Jeli sy sej wěsty, zo chceš to woprawdźe činić, přepruwuj prošu deleka polo "{{int:ipb-confirm}}".',
 'ipb-edit-dropdown' => 'přičiny zablokowanjow wobdźěłać',
 'ipb-unblock-addr' => 'zablokowanje wužiwarja „$1“ zběhnyć',
 'ipb-unblock' => 'zablokowanje wužiwarja abo IP-adresy zběhnyć',
@@ -2630,7 +2605,6 @@ Hlej [[Special:BlockList|lisćinu blokowanjow]], zo by zablokowanjow pruwował.'
 'sorbsreason' => 'Twoja IP-adresa je jako wotewrjeny proksy na DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} zapisana.',
 'sorbs_create_account_reason' => 'Twoja IP-adresa je jako wotewrjeny proksy na DNSBL {{GRAMMAR:genitiw|{{SITENAME}}}} zapisana. Njemóžeš konto wutworić.',
 'xffblockreason' => 'IP-adresa w header X-Forwarded-For, pak twoja pak ta proksy-serwera, kotryž wužiwaš, je so zablokowała. Prěnjotna přičina za blokowanje bě: $1',
-'cant-block-while-blocked' => 'Njemóžeš druhich wužiwarjow blokować, mjeztym zo ty sy zablokowany.',
 'cant-see-hidden-user' => 'Wužiwar, kotrehož pospytuješ blokować, bu hižo zablokowany a schowany. Dokelž nimaš prawo wužiwarja schować, njemóžeš blokowanje wužiwarja widźeć abo wobdźěłać.',
 'ipbblocked' => 'Njemóžeš druhich wužiwarjow blokować abo wotblokować, dokelž ty sam sy zablokowany',
 'ipbnounblockself' => 'Njesměš so samoho wotblokować',
@@ -2680,7 +2654,6 @@ prošu wuwědomće sej konsekwency, prjedy hač pokročuješ.",
 W tutych padach dyrbiš stronu manuelnje přesunyć abo zaměšeć, jeli sej to přeješ.',
 'movearticle' => 'Stronu přesunyć',
 'moveuserpage-warning' => "'''Warnowanje:''' Sy při tym wužiwarsku stronu přesunyć. Prošu dźiwaj na to, zo so jenož strona posunje a wužiwar so ''nje''budźe přemjenować.",
-'movenologin' => 'Njejsy přizjewjeny.',
 'movenologintext' => 'Dyrbiš zregistrowany wužiwar a [[Special:UserLogin|přizjewjeny]] być, zo by stronu přesunył.',
 'movenotallowed' => 'Nimaš prawo, zo by strony přesunył.',
 'movenotallowedfile' => 'Nimaš prawo dataje přesunyć.',
@@ -2695,8 +2668,6 @@ W tutych padach dyrbiš stronu manuelnje přesunyć abo zaměšeć, jeli sej to
 'movepage-moved-noredirect' => 'Wutworjenje daleposrědkowanja bu potłóčene.',
 'articleexists' => 'Strona z tutym mjenom hižo eksistuje abo mjeno, kotrež sy wuzwolił, płaćiwe njeje. Prošu wuzwol druhe mjeno.',
 'cantmove-titleprotected' => 'Njemóžeš stronu do tutoho městna přesunyć, dokelž nowy titul bu přećiwo wutworjenju škitany',
-'talkexists' => 'Strona sama bu z wuspěchom přesunjena, diskusijna strona pak njeda so přesunyć, dokelž pod nowym titulom hižo eksistuje. Prošu změš jeju manuelnje.',
-'movedto' => 'přesunjena do hesła',
 'movetalk' => 'Přisłušnu diskusijnu stronu tohorunja přesunyć',
 'move-subpages' => 'Wšě podstrony (hač do $1) přesunyć',
 'move-talk-subpages' => 'Wšě podstrony diskusijneje strony (hač do $1) přesunyć',
@@ -3522,15 +3493,10 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
 'exif-urgency-high' => 'Wysoka ($1)',
 'exif-urgency-other' => 'Swójska priorita ($1)',
 
-# External editor support
-'edit-externally' => 'Dataju z eksternym programom wobdźěłać',
-'edit-externally-help' => '(Hlej [https://www.mediawiki.org/wiki/Manual:External_editors pokiwy za instalaciju] za dalše informacije)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wšě',
 'namespacesall' => 'wšě',
 'monthsall' => 'wšě',
-'limitall' => 'wšě',
 
 # Email address confirmation
 'confirmemail' => 'Emailowu adresu wobkrućić',
@@ -3547,7 +3513,6 @@ E-mejlowy program je wróćił: $1',
 'confirmemail_needlogin' => 'Dyrbiš so $1, zo by e-mejlowu adresu wobkrućić móhł.',
 'confirmemail_success' => 'Twoja e-mejlowa adresa bu wobkrućena. Móžeš so nětko přizjewić.',
 'confirmemail_loggedin' => 'Twoja e-mejlowa adresu bu nětko wobkrućena.',
-'confirmemail_error' => 'Zmylk při wobkrućenju twojeje e-mailoweje adresy.',
 'confirmemail_subject' => '{{SITENAME}} – wobkrućenje e-mejloweje adresy',
 'confirmemail_body' => 'Něchtó, najskerje ty z IP-adresu $1, je wužiwarske konto "$2" z tutej e-mejlowej adresu we {{GRAMMAR:lokatiw|{{SITENAME}}}} zregistrował.
 
@@ -3621,6 +3586,11 @@ Prošu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
 'imgmultigo' => 'Dźi!',
 'imgmultigoto' => 'Dźi k stronje $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standardna rěč)',
+'img-lang-info' => 'Tutón wobraz w $1 rysować. $2',
+'img-lang-go' => 'Wotpósłać',
+
 # Table pager
 'ascending_abbrev' => 'postupowacy',
 'descending_abbrev' => 'zestupowacy',
@@ -3705,7 +3675,17 @@ Móžeš tež [[Special:EditWatchlist|standardnu wobdźěłowansku stronu]] wuž
 'version-hook-name' => 'Mjeno hoki',
 'version-hook-subscribedby' => 'Abonowany wot',
 'version-version' => '(Wersija $1)',
-'version-license' => 'Licenca',
+'version-license' => 'Licenca MediaWiki',
+'version-ext-license' => 'Licenca',
+'version-ext-colheader-name' => 'Rozšěrjenje',
+'version-ext-colheader-version' => 'Wersija',
+'version-ext-colheader-license' => 'Licenca',
+'version-ext-colheader-description' => 'Wopisanje',
+'version-ext-colheader-credits' => 'Awtorojo',
+'version-license-title' => 'Licenca za $1',
+'version-license-not-found' => 'Za tute rozšěrjenje njejsu so žane nadrobne licencne informacije namakali.',
+'version-credits-title' => 'Dźakprajenja za $1',
+'version-credits-not-found' => 'Za tute rozšěrjenje njejsu žane dźakprajenske informacije namakali.',
 'version-poweredby-credits' => "Tutón wiki so wot  '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2 podpěruje.",
 'version-poweredby-others' => 'druzy',
 'version-poweredby-translators' => 'Přełožowarjo na translatewiki.net',
@@ -3723,14 +3703,15 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Po datajowym mjenje, wužiwarju abo wersijowym ID dale sposrědkować',
+'redirect' => 'Po datajowym mjenje, wužiwarju, stronje abo wersijowym ID dale sposrědkować',
 'redirect-legend' => 'Do dataje abo strony dale sposrědkować',
-'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:
-[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Tuta specialna strona so do dataje (datajowe mjeno je podate), strony (wersijowy ID abo ID strony je podaty) abo wužiwarskeje strony (numeriski wužiwarski ID je podaty) dale sposrědkuje. Wužiće:
+[[{{#Special:Redirect}}/file/Přikład.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] abo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Los',
 'redirect-lookup' => 'Pytać:',
 'redirect-value' => 'Hódnota:',
 'redirect-user' => 'ID wužiwarja',
+'redirect-page' => 'ID strony',
 'redirect-revision' => 'Wersija strony',
 'redirect-file' => 'Datajowe mjeno',
 'redirect-not-exists' => 'Hódnota njeje so namakała',
@@ -3797,7 +3778,6 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
 
 # Special:ComparePages
 'comparepages' => 'Strony přirunać',
-'compare-selector' => 'Wersije strony přirunać',
 'compare-page1' => 'Strona 1',
 'compare-page2' => 'Strona 2',
 'compare-rev1' => 'Wersija 1',
@@ -3925,6 +3905,7 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'api-error-overwrite' => 'Přepisowanje eksistowaceje dataje njeje dowolene.',
 'api-error-stashfailed' => 'Nutřkowny zmylk: Serwer njemóžeše nachwilnu dataju składować.',
 'api-error-publishfailed' => 'Nutřkowny zmylk: Serwer njemóžeše nachwilnu dataju wozjewić.',
+'api-error-stasherror' => 'Při nahrawanju dataje do chowanki je zmylk wusutpił.',
 'api-error-timeout' => 'Serwer njeje znutřka wočakowaneho časa wotmołwił.',
 'api-error-unclassified' => 'Njeznaty zmylk je wustupił.',
 'api-error-unknown-code' => 'Njeznaty zmylk: "$1"',
@@ -3939,8 +3920,8 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'duration-minutes' => '$1 {{PLURAL:$1|mjeńšina|mjeńšinje|mjeńšiny|mjeńšin}}',
 'duration-hours' => '$1 {{PLURAL:$1|hodźina|hodźinje|hodźiny|hodźin}}',
 'duration-days' => '$1 {{PLURAL:$1|dźeń|dnjej|dny|dnjow}}',
-'duration-weeks' => '$1 {{PLURAL: $1|tydźeń|njedźeli|njedźele|njedźel}}',
-'duration-years' => '$1 {{PLURAL: $1|lěto|lěće|lěta|lět}}',
+'duration-weeks' => '$1 {{PLURAL:$1|tydźeń|njedźeli|njedźele|njedźel}}',
+'duration-years' => '$1 {{PLURAL:$1|lěto|lěće|lěta|lět}}',
 'duration-decades' => '$1 {{PLURAL:$1|lětdźesatk|lětdźesatkaj|lětdźesatki|lětdźesatkow}}',
 'duration-centuries' => '$1 {{PLURAL:$1|lětstotk|lětstotkaj|lětstotki|lětstotkow}}',
 'duration-millennia' => '$1 {{PLURAL:$1|lěttysac|lěttysacaj|lěttysacy|lěttysacow}}',
@@ -3970,10 +3951,14 @@ Hewak móžeš slědowacy jednory formular wužiwać. Twój komentar přida so s
 'expand_templates_input' => 'Tekst zapodać:',
 'expand_templates_output' => 'Wuslědk',
 'expand_templates_xml_output' => 'Wudaće XML',
+'expand_templates_html_output' => 'Hrube HTML-wudaće',
 'expand_templates_ok' => 'W porjadku',
 'expand_templates_remove_comments' => 'Komentary wotstronić',
 'expand_templates_remove_nowiki' => 'Taflički <nowiki> we wuslědku potłóčić',
 'expand_templates_generate_xml' => 'Analyzowy štom XML pokazać',
+'expand_templates_generate_rawhtml' => 'Hruby HTML pokazać',
 'expand_templates_preview' => 'Přehlad',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML w nahratej dataji njeda so parsować.',
 );
index 80f75e2..6fb69f7 100644 (file)
@@ -40,6 +40,9 @@ $namespaceAliases = array(
        'Diskisyon_Imaj' => NS_USER_TALK,
 );
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'ItilizatèAktif' ),
        'Allmessages'               => array( 'ToutMesaj' ),
@@ -48,7 +51,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'MovèTit' ),
        'Blankpage'                 => array( 'PajVid' ),
        'Block'                     => array( 'Bloke', 'BlokeIP', 'BlokeItilizatè' ),
-       'Blockme'                   => array( 'BlokeM' ),
        'Booksources'               => array( 'SousLiv' ),
        'BrokenRedirects'           => array( 'RedireksyonKase' ),
        'Categories'                => array( 'Kategori' ),
@@ -59,9 +61,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'KreyeKont' ),
        'Deadendpages'              => array( 'PajEnpas' ),
        'DeletedContributions'      => array( 'SiprimeKontribisyon' ),
-       'Disambiguations'           => array( 'Tokay' ),
        'DoubleRedirects'           => array( 'RedireksyonDoub' ),
        'Emailuser'                 => array( 'ImèlItilizatè' ),
+       'ExpandTemplates'           => array( 'EtannModèl' ),
        'Export'                    => array( 'Ekspòte' ),
        'Fewestrevisions'           => array( 'MwensRevizyon' ),
        'FileDuplicateSearch'       => array( 'ChacheFichyeDoub' ),
@@ -103,6 +105,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PajPwoteje' ),
        'Protectedtitles'           => array( 'TitPwoteje' ),
        'Randompage'                => array( 'Oaza', 'PajOaza' ),
+       'RandomInCategory'          => array( 'OazaNanKategori' ),
        'Randomredirect'            => array( 'RedireksyonOaza' ),
        'Recentchanges'             => array( 'ChanjmanResan' ),
        'Recentchangeslinked'       => array( 'LyenChanjmanResan', 'ChanjmanAk' ),
@@ -163,7 +166,6 @@ $messages = array(
 'tog-minordefault' => 'Make tout modifikasyon mwen yo "tou piti" pa defo',
 'tog-previewontop' => 'Montre kout je anvan zòn modifikasyon',
 'tog-previewonfirst' => 'Montre kout je pou chak premye modifikasyon',
-'tog-nocache' => 'Dezame kach pou paj yo nan òdinatè mwen',
 'tog-enotifwatchlistpages' => 'Voye m imèl lè youn nan paj m ap swiv yo chanje',
 'tog-enotifusertalkpages' => 'Voye m imèl lè paj itilizatè m nan chanje',
 'tog-enotifminoredits' => 'Voye m imèl tou pou modifikasyon paj yo ki tou piti',
@@ -282,7 +284,6 @@ $messages = array(
 'qbedit' => 'Modifye',
 'qbpageoptions' => 'Paj sa a',
 'qbmyoptions' => 'Paj mwen yo',
-'qbspecialpages' => 'Paj espesyal',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -480,9 +481,6 @@ Yon lòt moun te gendwa efase l anvan ou.',
 'perfcached' => 'Sa se yon vèsyon ki sòti nan kach sistèm nou an. Li gendwa pa a jou. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Done sa yo sòti nan sistèm kach la, yo gendwa pa a jou. Dènye fwa nou mete yo a jou se te $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Nou pa kapab mete paj sa yo a jou paske fonksyon mizajou dezaktive. Done w ap jwenn pi ba pap rafrechi.',
-'wrong_wfQuery_params' => 'Paramèt sa yo pa bon sou wfQuery()<br />
-Fonksyon : $1<br />
-Demann : $2',
 'viewsource' => 'Wè kòd paj la',
 'actionthrottled' => 'Aksyon sa limite',
 'actionthrottledtext' => 'Nan batay kont pouryèl, aksyon sa ou tapral fè limite nan kantite itilizasyon l pandan yon tan ki kout. Li sanble ou depase kantite sa. Eseye ankò nan kèk minit.',
@@ -585,7 +583,6 @@ Pa pòte atansyon pou mesaj sa si kont sa kreye pa erè.',
 'php-mail-error-unknown' => 'Erè nou pa konnen nan fonksyon mail() PHP a.',
 
 # Change password dialog
-'resetpass' => 'Chanje mopas ou an',
 'resetpass_announce' => 'Ou konekte ou ak yon mopas ki valab yon moman; mopas sa te voye pa imèl. Pou ou kapab fini anrejistreman an, ou dwe mete yon nouvo mopas la :',
 'resetpass_header' => 'Chanje mopas kont ou an',
 'oldpassword' => 'Ansyen mopas:',
@@ -863,10 +860,6 @@ Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}
 # Search results
 'searchresults' => 'Rezilta yo pou rechèch la',
 'searchresults-title' => 'Rezilta rechèch yo pou « $1 »',
-'searchresulttext' => 'Pou ou kapab konenn plis sou rechèch nan {{SITENAME}}, gade [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Ou chache « '''[[:$1]]''' » ([[Special:Prefixindex/$1|tout paj yo ki komanse pa« $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tout paj yo ki genyen lyen vè « $1 »]])",
-'searchsubtitleinvalid' => "Ou chache « '''$1''' »",
-'notitlematches' => 'Pa gen paj nan sistèm ki genyen tit ou bay nan rechèch ou an.',
 'notextmatches' => 'Pa genyen pyès tèks nan paj yo ki ap koresponn ak rechèch ou fè a',
 'prevn' => '{{PLURAL:$1|$1}} anvan yo',
 'nextn' => '{{PLURAL:$1|$1}} swivan yo',
@@ -879,13 +872,9 @@ Lejand : ({{MediaWiki:Cur}}) = diferans ak vèsyon kounye a, ({{MediaWiki:Last}}
 'search-interwiki-caption' => 'Pwojè frè, ki ansanm oubyen ki ap deplwaye ansanm',
 'search-interwiki-default' => 'Rezilta yo pou $1 :',
 'search-interwiki-more' => '(plis)',
-'nonefound' => "'''Remak''' : sèl kèk espas non chache nan sityasyon nòmal.
-Eseye mete prefiks ''all:'' devan tèm rechèche ou an pou chache nan tout kontni a (sa conprann paj diskisyon yo, modèl yo, etc.) oubyen itilize espas non ou ta renmen pou prefiks.",
-'powersearch' => 'Fouye fon',
 'powersearch-legend' => 'Fouye fon',
 'powersearch-ns' => 'Chache nan espas non sa yo:',
 'powersearch-redir' => 'Montre redireksyon yo',
-'powersearch-field' => 'Chache',
 
 # Preferences page
 'preferences' => 'Preferans yo',
@@ -927,7 +916,6 @@ Si ou mete li, n ap itilize li pou nou ka nonmen ou pou kontribisyon ou yo.',
 'recentchanges' => 'Modifikasyon yo ki fèk fèt',
 'recentchanges-legend' => 'Opsyon pou modifikasyon ki fèk fèt',
 'recentchanges-feed-description' => 'Swiv dènye modifikasyon pou wiki sa a nan fil sa a (RSS,Atom...)',
-'rcnote' => "Men {{PLURAL:$1|dènye modifikasyon an|dènye '''$1''' modifikasyon yo}} depi {{PLURAL:$2|dènye jou a|<b>$2</b> dènye jou yo}}, pou jounen $5,$4.",
 'rcnotefrom' => "Men modifikasyon yo ki fèt depi '''$2''' ('''$1''' dènye).",
 'rclistfrom' => 'Afiche nouvo modifikasyon yo depi $1.',
 'rcshowhideminor' => '$1 modifiksayon yo ki tou piti',
@@ -1220,8 +1208,6 @@ Nan ka sa yo, ou dwe renonmen oubyen fizyone paj la ou menm si ou vle.',
 'pagemovedsub' => 'Deplasman an fèt',
 'movepage-moved' => '\'\'\'"$1" te deplase nan "$2"\'\'\'',
 'articleexists' => 'Deja genyen yon atik ak non sa a oubyen non ou chwazi a pa valab. Chwazi yon lòt non.',
-'talkexists' => 'Paj nan te byen deplase, men paj diskisyon an pa t deplase paske te deja ekziste youn anlè nouvo paj la. Tanpri, fizyone de paj diskisyon sa yo ou menm.',
-'movedto' => 'deplase nan',
 'movetalk' => 'Renonmen ak deplase paj diskisyon an tou',
 'movelogpage' => 'Jounal deplasman yo',
 'movereason' => 'Rezon:',
@@ -1336,10 +1322,6 @@ Nenpòt lòt lyen nan menm liy nan konsidere kòm yon eksèpsyon, i.e. paj kote
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Modifye fichye sa a nan aplikasyon pa ou (ki pa nan sistèm an, sou machin ou pa egzanp).',
-'edit-externally-help' => '(Gade [https://www.mediawiki.org/wiki/Manual:External_editors komand ak enstriksyon yo] pou plis enfòmasyon oubyen pou konnen plis)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tout',
 'namespacesall' => 'Tout',
index 891fcb8..98c1527 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Hibás_címek' ),
        'Blankpage'                 => array( 'Üres_lap' ),
        'Block'                     => array( 'Blokkolás' ),
-       'Blockme'                   => array( 'Blokkolj' ),
        'Booksources'               => array( 'Könyvforrások' ),
        'BrokenRedirects'           => array( 'Nem_létező_lapra_mutató_átirányítások', 'Hibás_átirányítások' ),
        'Categories'                => array( 'Kategóriák' ),
@@ -92,10 +91,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Szerkesztői_fiók_létrehozása', 'Felhasználói_fiók_létrehozása' ),
        'Deadendpages'              => array( 'Zsákutcalapok' ),
        'DeletedContributions'      => array( 'Törölt_szerkesztések' ),
-       'Disambiguations'           => array( 'Egyértelműsítő_lapok' ),
        'DoubleRedirects'           => array( 'Kettős_átirányítások', 'Dupla_átirányítások' ),
        'EditWatchlist'             => array( 'Figyelőlista_szerkesztése' ),
        'Emailuser'                 => array( 'E-mail_küldése', 'E-mail_küldése_ezen_szerkesztőnek' ),
+       'ExpandTemplates'           => array( 'Sablonok_kibontása' ),
        'Export'                    => array( 'Lapok_exportálása' ),
        'Fewestrevisions'           => array( 'Legkevesebbet_szerkesztett_lapok' ),
        'FileDuplicateSearch'       => array( 'Duplikátumok_keresése' ),
@@ -337,7 +336,6 @@ $messages = array(
 'tog-minordefault' => 'Alapértelmezetten minden szerkesztésemet jelölje aprónak',
 'tog-previewontop' => 'Előnézet megjelenítése a szerkesztőablak előtt',
 'tog-previewonfirst' => 'Előnézet első szerkesztésnél',
-'tog-nocache' => 'A lapok gyorstárazásának letiltása a böngészőben',
 'tog-enotifwatchlistpages' => 'Kapjak értesítést e-mailben, ha egy általam figyelt lap vagy fájl megváltozik',
 'tog-enotifusertalkpages' => 'Kapjak értesítést e-mailben, ha megváltozik a vitalapom',
 'tog-enotifminoredits' => 'Kapjak értesítést e-mailben a lapok és fájlok apró változtatásairól',
@@ -472,7 +470,6 @@ $messages = array(
 'qbedit' => 'Szerkesztés',
 'qbpageoptions' => 'Lapbeállítások',
 'qbmyoptions' => 'Lapjaim',
-'qbspecialpages' => 'Speciális lapok',
 'faq' => 'GyIK',
 'faqpage' => 'Project:GyIK',
 
@@ -590,8 +587,8 @@ További információkat a [[Special:Version|verzióinformációs lapon]] talál
 'youhavenewmessages' => '$1 a vitalapodon! ($2 külön is megtekintheted.)',
 'youhavenewmessagesfromusers' => '$2 kaptál {{PLURAL:$3|egy|$3}} szerkesztőtől $1!',
 'youhavenewmessagesmanyusers' => '$2 kaptál több szerkesztőtől $1.',
-'newmessageslinkplural' => '{{PLURAL:$1||}}a vitalapodon',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|Új üzenetet|Új üzeneteket}}',
+'newmessageslinkplural' => '{{PLURAL:$1|új üzenet|999=új üzenet}} a vitalapodon',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|változás|999=változás}}',
 'youhavenewmessagesmulti' => 'Új üzenet vár a(z) $1 wikin',
 'editsection' => 'szerkesztés',
 'editold' => 'szerkesztés',
@@ -688,9 +685,6 @@ Nem lett magyarázat csatolva.',
 'perfcached' => "Az alábbi adatok gyorsítótárból (''cache''-ből) származnak, és ezért lehetséges, hogy nem a legfrissebb változatot mutatják. Legfeljebb {{PLURAL:$1|egy|$1 }} eredmény áll rendelkezésre a gyorsítótárban.",
 'perfcachedts' => "Az alábbi adatok gyorsítótárból (''cache''-ből) származnak, legutóbbi frissítésük ideje $1. Legfeljebb {{PLURAL:$4|egy|$4}} eredmény áll rendelkezésre a gyorsítótárban.",
 'querypage-no-updates' => 'Az oldal frissítése jelenleg le van tiltva. Az itt szereplő adatok nem frissülnek azonnal.',
-'wrong_wfQuery_params' => 'A wfQuery() függvény paraméterei hibásak<br />
-Függvény: $1<br />
-Lekérdezés: $2',
 'viewsource' => 'Lapforrás',
 'viewsource-title' => '$1 forrásának megtekintése',
 'actionthrottled' => 'Művelet megszakítva',
@@ -718,7 +712,8 @@ A lezárást végrehajtó rendszergazda az alábbi indoklást adta meg: "$3".',
 'invalidtitle-knownnamespace' => 'Érvénytelen cím "$2" névtérrel és "$3" szöveggel',
 'invalidtitle-unknownnamespace' => 'Érvénytelen cím az ismeretlen $1 névtérszámmal és "$2" szöveggel',
 'exception-nologin' => 'Nem vagy bejelentkezve.',
-'exception-nologin-text' => 'Ezen lap vagy művelet használatához be kell jelentkezned erre a wikire.',
+'exception-nologin-text' => 'Ezen lap vagy művelet eléréséhez kérlek [[Special:Userlogin|jelentkezz be]].',
+'exception-nologin-text-manual' => 'Ezen lap vagy művelet eléréséhez $1.',
 
 # Virus scanner
 'virus-badscanner' => "Hibás beállítás: ismeretlen víruskereső: ''$1''",
@@ -765,9 +760,11 @@ Ne felejtsd el módosítani a [[Special:Preferences|{{SITENAME}} beállításaid
 'gotaccount' => "Ha már korábban regisztráltál, '''$1'''.",
 'gotaccountlink' => 'Bejelentkezés',
 'userlogin-resetlink' => 'Elfelejtetted a bejelentkezési adataidat?',
-'userlogin-resetpassword-link' => 'A jelszó alaphelyzetbe állítása',
+'userlogin-resetpassword-link' => 'Elfelejtetted a jelszavad?',
 'helplogin-url' => 'Help:Bejelentkezés',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Segítség a bejelentkezéshez]]',
+'userlogin-loggedin' => 'Már be vagy jelentkezve mint {{GENDER:$1|$1}}. Ha más néven akarsz belépni, alább megteheted.',
+'userlogin-createanother' => 'Felhasználói fiók létrehozása',
 'createacct-join' => 'Add meg az alábbi információkat.',
 'createacct-another-join' => 'Add meg az új fiók adatait alább.',
 'createacct-emailrequired' => 'E-mail cím',
@@ -814,7 +811,7 @@ Ellenőrizd, hogy helyesen írtad-e be.',
 'passwordtooshort' => 'A jelszónak legalább {{PLURAL:$1|egy|$1}} karakterből kell állnia.',
 'password-name-match' => 'A jelszavadnak különböznie kell a szerkesztőnevedtől.',
 'password-login-forbidden' => 'Ezen felhasználónév és jelszó használata tiltott.',
-'mailmypassword' => 'Új jelszó küldése e-mailben',
+'mailmypassword' => 'Jelszó alaphelyzetbe állítása',
 'passwordremindertitle' => 'Ideiglenes jelszó a(z) {{SITENAME}} wikire',
 'passwordremindertext' => 'Valaki (vélhetően te, a(z) $1 IP-címről) új jelszót kért a(z)
 {{SITENAME}} wikis ($4) felhasználói fiókjához.
@@ -853,6 +850,7 @@ Várj $1, mielőtt újra próbálkozol.',
 'login-abort-generic' => 'A bejelentkezés sikertelen – megszakítva',
 'loginlanguagelabel' => 'Nyelv: $1',
 'suspicious-userlogout' => 'A kijelentkezési kérésed vissza lett utasítva, mert úgy tűnik, hogy egy hibás böngésző vagy gyorsítótárazó proxy küldte.',
+'createacct-another-realname-tip' => 'A valódi nevet nem kötelező megadni, de ha úgy döntesz, hogy megadod, azzal leszel feltüntetve a munkád szerzőjeként.',
 
 # Email sending
 'php-mail-error-unknown' => 'Ismeretlen hiba a PHP mail() függvényében',
@@ -860,7 +858,7 @@ Várj $1, mielőtt újra próbálkozol.',
 'user-mail-no-body' => 'Üres vagy nagyon rövid email-t próbáltál küldeni.',
 
 # Change password dialog
-'resetpass' => 'Jelszó módosítása',
+'changepassword' => 'Jelszócsere',
 'resetpass_announce' => 'Az e-mailben elküldött ideiglenes kóddal jelentkeztél be. A bejelentkezés befejezéséhez meg kell adnod egy új jelszót:',
 'resetpass_text' => '<!-- Ide írd a szöveget -->',
 'resetpass_header' => 'A fiókhoz tartozó jelszó megváltoztatása',
@@ -881,7 +879,7 @@ Lehet, hogy már sikeresen megváltoztattad a jelszavad, vagy pedig időközben
 # Special:PasswordReset
 'passwordreset' => 'Jelszó törlése',
 'passwordreset-text-one' => 'A jelszavad alaphelyzetbe állításához töltsd ki az űrlapot.',
-'passwordreset-text-many' => '{{PLURAL:$1|A jelszavad alaphelyzetbe állításához töltsd ki az alábbi mezők egyikét.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Az átmeneti jelszó elküldéséhez töltsd ki az alábbi mezők egyikét.}}',
 'passwordreset-legend' => 'Új jelszó kérése',
 'passwordreset-disabled' => 'Új jelszó kérése nem engedélyezett ezen a wikin.',
 'passwordreset-emaildisabled' => 'Az e-mail funkció le van tiltva ezen a wikin.',
@@ -1230,10 +1228,6 @@ Te még mindig megtekintheted a változatok közötti eltérést. További rész
 'revdelete-nooldid-title' => 'Érvénytelen célváltozat',
 'revdelete-nooldid-text' => 'Nem adtad meg a célváltozato(ka)t, a megadott változat nem létezik,
 vagy a legutolsó változatot próbáltad meg elrejteni.',
-'revdelete-nologtype-title' => 'Nem adtad meg a napló típusát',
-'revdelete-nologtype-text' => 'Nem adtad meg, hogy melyik naplón szeretnéd elvégezni a műveletet.',
-'revdelete-nologid-title' => 'Érvénytelen naplóbejegyzés',
-'revdelete-nologid-text' => 'Nem adtad meg azt a naplóbejegyzést, amin el szeretnéd végezni a műveletet, vagy olyat adtál meg, ami nem létezik.',
 'revdelete-no-file' => 'A megadott fájl nem létezik.',
 'revdelete-show-file-confirm' => 'Biztosan meg szeretnéd nézni a(z) „<nowiki>$1</nowiki>” $2, $3-i törölt változatát?',
 'revdelete-show-file-submit' => 'Igen',
@@ -1245,17 +1239,17 @@ A(z) {{SITENAME}} adminisztrátorai továbbra is meg tudják tekinteni az elrejt
 'revdelete-confirm' => 'Kérlek erősítsd meg, hogy valóban ezt szeretnéd tenni; megértetted a következményeket, és amit teszel, az összhangban van [[{{MediaWiki:Policy-url}}|az irányelvekkel]].',
 'revdelete-suppress-text' => "Az elrejtés '''csak''' a következő esetekben használható:
 * Illetlen személyes információk
-*: ''otthoni címek és telefonszámok, társadalombiztosítási számok stb.''",
+*: ''otthoni cím, telefonszámok, társadalombiztosítási számok stb.''",
 'revdelete-legend' => 'Korlátozások megadása:',
 'revdelete-hide-text' => 'Változat szövegének elrejtése',
 'revdelete-hide-image' => 'A fájl tartalmának elrejtése',
 'revdelete-hide-name' => 'Művelet és cél elrejtése',
-'revdelete-hide-comment' => 'Összefoglaló elrejtése',
-'revdelete-hide-user' => 'A szerkesztő felhasználónevének/IP-címének elrejtése',
+'revdelete-hide-comment' => 'Szerkesztési összefoglaló',
+'revdelete-hide-user' => 'Szerkesztői név/IP cím',
 'revdelete-hide-restricted' => 'Adatok elrejtése az adminisztrátorok és mindenki más elől',
 'revdelete-radio-same' => '(nincs változtatás)',
-'revdelete-radio-set' => 'Igen',
-'revdelete-radio-unset' => 'Nem',
+'revdelete-radio-set' => 'Rejtett',
+'revdelete-radio-unset' => 'Látható',
 'revdelete-suppress' => 'Adatok elrejtése az adminisztrátorok és a többi felhasználó elől is',
 'revdelete-unsuppress' => 'Korlátozások eltávolítása a visszaállított változatokról',
 'revdelete-log' => 'Ok:',
@@ -1267,8 +1261,6 @@ $1",
 'logdelete-failure' => "'''Nem sikerült módosítani a naplóbejegyzés láthatóságát:'''
 $1",
 'revdel-restore' => 'Láthatóság megváltoztatása',
-'revdel-restore-deleted' => 'törölt lapváltozatok',
-'revdel-restore-visible' => 'látható lapváltozatok',
 'pagehist' => 'Laptörténet',
 'deletedhist' => 'Törölt változatok',
 'revdelete-hide-current' => 'Nem sikerült elrejteni a $1 $2-kori elemet: ez a jelenlegi változat, amit nem lehet elrejteni.',
@@ -1340,12 +1332,8 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 # Search results
 'searchresults' => 'A keresés eredménye',
 'searchresults-title' => 'Keresési eredmények: „$1”',
-'searchresulttext' => 'A keresésről a [[{{MediaWiki:Helppage}}|{{int:help}}]] lapon találhatsz további információkat.',
-'searchsubtitle' => 'A keresett kifejezés: „[[:$1]]” ([[Special:Prefixindex/$1|minden, „$1” előtaggal kezdődő lap]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|a(z) „$1” lapra hivatkozó lapok]])',
-'searchsubtitleinvalid' => "A keresett kulcsszó: „'''$1'''”",
 'toomanymatches' => 'Túl sok találat van, próbálkozz egy másik lekérdezéssel',
 'titlematches' => 'Címbeli egyezések',
-'notitlematches' => 'Nincs megegyező cím',
 'textmatches' => 'Szövegbeli egyezések',
 'notextmatches' => 'Nincsenek szövegbeli egyezések',
 'prevn' => 'előző {{PLURAL:$1|egy|$1}}',
@@ -1354,10 +1342,8 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'nextn-title' => 'Következő {{PLURAL:$1|egy|$1}} találat',
 'shown-title' => '{{PLURAL:$1|Egy|$1}} találat laponként',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Keresési beállítások',
 'searchmenu-exists' => "'''A wikin már van „[[:$1]]” nevű lap'''",
 'searchmenu-new' => "'''Hozd létre a(z) „[[:$1]]” nevű lapot ezen a wikin!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ilyen előtagú lapok listázása]]',
 'searchprofile-articles' => 'Tartalmi oldalak',
 'searchprofile-project' => 'Segítség- és projektlapok',
 'searchprofile-images' => 'Médiafájlok',
@@ -1378,20 +1364,16 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'search-interwiki-default' => '$1 találat',
 'search-interwiki-more' => '(több)',
 'search-relatedarticle' => 'Kapcsolódó',
-'mwsuggest-disable' => 'Keresési javaslatok letiltása',
 'searcheverything-enable' => 'Keresés az összes névtérben',
 'searchrelated' => 'kapcsolódó',
 'searchall' => 'mind',
 'showingresults' => "Lent '''{{PLURAL:$1|egy|$1}}''' találat látható, az eleje '''$2'''.",
 'showingresultsnum' => "Lent '''{{PLURAL:$3|egy|$3}}''' találat látható, az eleje '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1'''|'''$1 - $2'''}}. találat a(z) '''$4''' kifejezésre (összesen: '''$3''')",
-'nonefound' => "'''Megjegyzés''': Alapértelmezésben a keresés nem terjed ki minden névtérre. Ha az összes névtérben keresni akarsz, írd az ''all:'' karaktersorozatot a keresett kifejezés elé.",
 'search-nonefound' => 'Nincs egyezés a megadott szöveggel.',
-'powersearch' => 'Részletes keresés',
 'powersearch-legend' => 'Részletes keresés',
 'powersearch-ns' => 'Névterek:',
 'powersearch-redir' => 'Átirányítások megjelenítése',
-'powersearch-field' => 'Keresett szöveg:',
 'powersearch-togglelabel' => 'Megjelölés:',
 'powersearch-toggleall' => 'Mind',
 'powersearch-togglenone' => 'Egyik sem',
@@ -1403,7 +1385,6 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'preferences' => 'Beállítások',
 'mypreferences' => 'Beállítások',
 'prefs-edits' => 'Szerkesztéseid száma:',
-'changepassword' => 'Jelszócsere',
 'prefs-skin' => 'Felület',
 'skin-preview' => 'előnézet',
 'datedefault' => 'Nincs beállítás',
@@ -1426,13 +1407,11 @@ Ezt általában egy elavult, törölt oldalra mutató laptörténeti hivatkozás
 'prefs-email' => 'Levelezés',
 'prefs-rendering' => 'Lapok megjelenítése',
 'saveprefs' => 'Mentés',
-'resetprefs' => 'Alaphelyzet',
-'restoreprefs' => 'A beállítások alaphelyzetbe állítása',
+'restoreprefs' => 'A beállítások alaphelyzetbe állítása minden szakaszban',
 'prefs-editing' => 'Szerkesztés',
 'rows' => 'Sor',
 'columns' => 'Oszlop',
 'searchresultshead' => 'Keresés',
-'resultsperpage' => 'Laponként mutatott találatok száma:',
 'stub-threshold' => 'A hivatkozások <a href="#" class="stub">csonkként</a> történő formázásának határa (bájtban):',
 'stub-threshold-disabled' => 'Kikapcsolva',
 'recentchangesdays' => 'A friss változtatásokban mutatott napok száma:',
@@ -1447,7 +1426,6 @@ Aki ismeri, meg tudja nézni, milyen lapokat figyelsz, úgyhogy ne oszdd meg má
 'localtime' => 'Helyi idő:',
 'timezoneuseserverdefault' => 'Az alapértelmezett beállítás használata ($1)',
 'timezoneuseoffset' => 'Egyéb (eltérés megadása)',
-'timezoneoffset' => 'Eltérés¹:',
 'servertime' => 'A kiszolgáló ideje:',
 'guesstimezone' => 'Töltse ki a böngésző',
 'timezoneregion-africa' => 'Afrika',
@@ -1486,8 +1464,8 @@ A műveletet nem lehet visszavonni.',
 'badsig' => 'Érvénytelen aláírás; ellenőrizd a HTML-formázást.',
 'badsiglength' => 'Az aláírásod túl hosszú.
 {{PLURAL:$1|Egy|$1}} karakternél rövidebbnek kell lennie.',
-'yourgender' => 'Nem:',
-'gender-unknown' => 'Nincs megadva',
+'yourgender' => 'Biológiai nem:',
+'gender-unknown' => 'Inkább nem adom meg',
 'gender-male' => 'Férfi',
 'gender-female' => 'Nő',
 'prefs-help-gender' => 'Nem kötelező: a szoftver használja a nemtől függő üzenetek megjelenítéséhez. Az információ mindenki számára látható.',
@@ -1512,6 +1490,7 @@ A műveletet nem lehet visszavonni.',
 'prefs-displaysearchoptions' => 'Megjelenítési beállítások',
 'prefs-displaywatchlist' => 'Megjelenítési beállítások',
 'prefs-diffs' => 'Eltérések (diffek)',
+'prefs-help-prefershttps' => 'A beállítás a legközelebbi belépés után lép érvénybe.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Az e-mail cím érvényesnek tűnik',
@@ -1683,13 +1662,14 @@ A műveletet nem lehet visszavonni.',
 'recentchanges-label-minor' => 'Ez egy apró szerkesztés',
 'recentchanges-label-bot' => 'Ezt a szerkesztést egy bot hajtotta végre',
 'recentchanges-label-unpatrolled' => 'Ezt a szerkesztést még nem ellenőrizték',
-'recentchanges-legend-newpage' => '$1 – új lap',
-'rcnote' => "Alább az utolsó '''{{PLURAL:$2|egy|$2}}''' nap utolsó '''{{PLURAL:$1|egy|$1}}''' változtatása látható. A lap generálásának időpontja $4, $5.",
+'recentchanges-label-plusminus' => 'Az oldal mérete ennyi bájttal módosult',
+'recentchanges-legend-heading' => 'Jelmagyarázat:',
+'recentchanges-legend-newpage' => '(lásd még: [[Special:NewPages|Új lapok]])',
 'rcnotefrom' => 'Alább a <b>$2</b> óta történt változtatások láthatóak (<b>$1</b> db).',
 'rclistfrom' => '$1 után történt változtatások megtekintése',
 'rcshowhideminor' => 'apró szerkesztések $1',
 'rcshowhidebots' => 'botok szerkesztéseinek $1',
-'rcshowhideliu' => 'bejelentkezett felhasználók szerkesztéseinek $1',
+'rcshowhideliu' => '$1 bejelentkezett felhasználó',
 'rcshowhideanons' => 'névtelen szerkesztések $1',
 'rcshowhidepatr' => 'ellenőrzött szerkesztések $1',
 'rcshowhidemine' => 'saját szerkesztések $1',
@@ -1859,7 +1839,7 @@ $1',
 'upload-file-error-text' => 'Belső hiba történt egy ideiglenes fájl szerveren történő létrehozásakor.
 Kérjük, hogy lépj kapcsolatba egy  [[Special:ListUsers/sysop|adminisztrátorral]].',
 'upload-misc-error' => 'Ismeretlen feltöltési hiba',
-'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt.  Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra.  Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba a [[Special:ListUsers/sysop|adminisztrátorral]].',
+'upload-misc-error-text' => 'A feltöltés során ismeretlen hiba történt.  Kérjük, ellenőrizd, hogy az URL érvényes-e és hozzáférhető-e, majd próbáld újra.  Ha a probléma továbbra is fennáll, akkor lépj kapcsolatba az [[Special:ListUsers/sysop|adminisztrátorral]].',
 'upload-too-many-redirects' => 'Az URL túl sokszor volt átirányítva',
 'upload-unknown-size' => 'Ismeretlen méretű',
 'upload-http-error' => 'HTTP-hiba történt: $1',
@@ -1967,8 +1947,7 @@ Ez a wiki publikus, így a biztonság miatt az img_auth.php ki van kapcsolva.',
 'upload_source_file' => ' (egy fájl a számítógépeden)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Ezen a speciális lapon látható az összes feltöltött fájl.
-Amennyiben a szerkesztő szűrést állított be, úgy csak azok a fájlok jelennek meg, amikor a szerkesztő töltötte fel a legfrissebb verziót.',
+'listfiles-summary' => 'Ezen a speciális lapon látható az összes feltöltött fájl.',
 'listfiles_search_for' => 'Keresés fájl nevére:',
 'imgfile' => 'fájl',
 'listfiles' => 'Fájllista',
@@ -1979,6 +1958,8 @@ Amennyiben a szerkesztő szűrést állított be, úgy csak azok a fájlok jelen
 'listfiles_size' => 'Méret',
 'listfiles_description' => 'Leírás',
 'listfiles_count' => 'Változatok',
+'listfiles-latestversion-yes' => 'Igen',
+'listfiles-latestversion-no' => 'Nem',
 
 # File description page
 'file-anchor-link' => 'Fájl',
@@ -2071,6 +2052,10 @@ Ellenőrizd a meglévő hivatkozásokat, mielőtt törölnéd őket.',
 'randompage' => 'Lap találomra',
 'randompage-nopages' => 'A következő {{PLURAL:$2|névtérben|névterekben}} nincsenek lapok: $1.',
 
+# Random page in category
+'randomincategory' => 'Véletlen lap egy kategóriából',
+'randomincategory-invalidcategory' => '"$1" nem egy érvényes kategória neve.',
+
 # Random redirect
 'randomredirect' => 'Átirányítás találomra',
 'randomredirect-nopages' => 'A(z) „$1” névtérben nincsenek átirányítások.',
@@ -2122,6 +2107,7 @@ Az <del>áthúzott</del> sorok a lista elkészülése óta javítva lettek.',
 'ninterwikis' => '{{PLURAL:$1|egy|$1}} interwiki',
 'nlinks' => '{{PLURAL:$1|egy|$1}} hivatkozás',
 'nmembers' => '{{PLURAL:$1|egy|$1}} elem',
+'nmemberschanged' => '$1 → $2 tag',
 'nrevisions' => '{{PLURAL:$1|egy|$1}} változat',
 'nviews' => '{{PLURAL:$1|egy|$1}} megtekintés',
 'nimagelinks' => '{{PLURAL:$1|Egy|$1}} lapon van használva',
@@ -2159,10 +2145,8 @@ Az <del>áthúzott</del> sorok a lista elkészülése óta javítva lettek.',
 'protectedpages' => 'Védett lapok',
 'protectedpages-indef' => 'Csak a meghatározatlan idejű védelmek',
 'protectedpages-cascade' => 'Csak a kaszkádvédelmek',
-'protectedpagestext' => 'A következő lapok átnevezés vagy szerkesztés ellen védettek',
 'protectedpagesempty' => 'Jelenleg nincsenek ilyen paraméterekkel védett lapok.',
 'protectedtitles' => 'Létrehozás ellen védett lapok',
-'protectedtitlestext' => 'A következő lapok védve vannak a létrehozás ellen',
 'protectedtitlesempty' => 'Jelenleg nincsenek ilyen típusú védett lapok.',
 'listusers' => 'Szerkesztők',
 'listusers-editsonly' => 'Csak a szerkesztéssel rendelkező szerkesztők mutatása',
@@ -2214,9 +2198,6 @@ A napló típusának, a szerkesztő nevének (kis- és nagybetűérzékeny), vag
 'allpagesto' => 'Lapok listázása a következő címig:',
 'allarticles' => 'Az összes lap listája',
 'allinnamespace' => 'Összes lap ($1 névtér)',
-'allnotinnamespace' => 'Minden olyan lap, ami nem a(z) $1 névtérben van.',
-'allpagesprev' => 'Előző',
-'allpagesnext' => 'Következő',
 'allpagessubmit' => 'Keresés',
 'allpagesprefix' => 'Lapok listázása, amik ezzel az előtaggal kezdődnek:',
 'allpagesbadtitle' => 'A megadott lapnév nyelvközi vagy wikiközi előtagot tartalmazott, vagy érvénytelen volt. Talán olyan karakter van benne, amit nem lehet lapnevekben használni.',
@@ -2345,7 +2326,7 @@ Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz
 'notvisiblerev' => 'A változat törölve lett',
 'watchlist-details' => 'A vitalapokon kívül {{PLURAL:$1|egy|$1}} lap van a figyelőlistádon.',
 'wlheader-enotif' => 'Az e-mailen keresztül történő értesítés engedélyezve.',
-'wlheader-showupdated' => "Azok a lapok, amelyek megváltoztak, mióta utoljára megnézted őket, '''vastagon''' láthatóak.",
+'wlheader-showupdated' => "Azok a lapok, amelyek megváltoztak, mióta utoljára megnézted őket, '''vastagítva''' láthatók.",
 'watchmethod-recent' => 'a figyelt lapokon belüli legfrissebb szerkesztések',
 'watchmethod-list' => 'a legfrissebb szerkesztésekben található figyelt lapok',
 'watchlistcontains' => 'A figyelőlistádon {{PLURAL:$1|egy|$1}} lap szerepel.',
@@ -2427,9 +2408,11 @@ A legutóbbi törlések listájához lásd a $2 lapot.',
 'deleteotherreason' => 'További indoklás:',
 'deletereasonotherlist' => 'Egyéb indok',
 'deletereason-dropdown' => '*Gyakori törlési okok
-** Szerző kérésére
+** Spam
+** A szerző kérése
 ** Jogsértő
-** Vandalizmus',
+** Vandalizmus
+** Hibás átirányítás',
 'delete-edit-reasonlist' => 'Törlési okok szerkesztése',
 'delete-toobig' => 'Ennek a lapnak a laptörténete több mint {{PLURAL:$1|egy|$1}} változatot őriz. A szervert kímélendő az ilyen lapok törlése nem engedélyezett.',
 'delete-warning-toobig' => 'Ennek a lapnak a laptörténete több mint {{PLURAL:$1|egy|$1}} változatot őriz. Törlése fennakadásokat okozhat a wiki adatbázis-műveleteiben; óvatosan járj el.',
@@ -2551,7 +2534,6 @@ változatot visszaállították vagy eltávolították az archívumból.',
 'undeletebtn' => 'Helyreállítás',
 'undeletelink' => 'megtekintés/helyreállítás',
 'undeleteviewlink' => 'megtekintés',
-'undeletereset' => 'Vissza',
 'undeleteinvert' => 'Kijelölés megfordítása',
 'undeletecomment' => 'Ok:',
 'undeletedrevisions' => '{{PLURAL:$1|egy|$1}} változat helyreállítva',
@@ -2638,7 +2620,6 @@ A blokknapló legutóbbi ide vonatkozó bejegyzése a következő:',
 'block' => 'Felhasználó blokkolása',
 'unblock' => 'Felhasználó blokkolásának feloldása',
 'blockip' => 'Blokkolás',
-'blockip-title' => 'Felhasználó blokkolása',
 'blockip-legend' => 'Felhasználó blokkolása',
 'blockiptext' => 'Az alábbi űrlap segítségével megvonhatod egy szerkesztő vagy IP-cím szerkesztési jogait.
 Ügyelj rá, hogy az intézkedésed mindig legyen tekintettel a vonatkozó [[{{MediaWiki:Policy-url}}|irányelvekre]].
@@ -2646,7 +2627,6 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
 'ipadressorusername' => 'IP-cím vagy felhasználói név',
 'ipbexpiry' => 'Lejárat:',
 'ipbreason' => 'Ok:',
-'ipbreasonotherlist' => 'Más ok',
 'ipbreason-dropdown' => '*Gyakori blokkolási okok
 ** Téves információ beírása
 ** Lapok tartalmának eltávolítása
@@ -2662,8 +2642,6 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
 'ipbsubmit' => 'Blokkolás',
 'ipbother' => 'Más időtartam:',
 'ipboptions' => '2 óra:2 hours,1 nap:1 day,3 nap:3 days,1 hét:1 week,2 hét:2 weeks,1 hónap:1 month,3 hónap:3 months,6 hónap:6 months,1 év:1 year,végtelen:infinite',
-'ipbotheroption' => 'Más időtartam',
-'ipbotherreason' => 'Más/további ok:',
 'ipbhidename' => 'A felhasználónév ne jelenjen meg a szerkesztéseknél és a listákban',
 'ipbwatchuser' => 'A felhasználó lapjának és vitalapjának figyelése',
 'ipb-disableusertalk' => 'Megakadályozza, hogy a felhasználó szerkeszthesse a saját vitalapját, miközben blokkolva van',
@@ -2747,7 +2725,6 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
 'proxyblockreason' => "Az IP-címeden ''nyílt proxy'' üzemel. Amennyiben nem használsz proxyt, vedd fel a kapcsolatot egy informatikussal vagy az internetszolgáltatóddal ezen súlyos biztonsági probléma ügyében.",
 'sorbsreason' => 'Az IP-címed nyitott proxyként szerepel e webhely által használt DNSBL listán.',
 'sorbs_create_account_reason' => 'Az IP-címed nyitott proxyként szerepel e webhely által használt DNSBL listán. Nem hozhatsz létre fiókot.',
-'cant-block-while-blocked' => 'Nem blokkolhatsz más szerkesztőket, miközben te magad blokkolva vagy.',
 'cant-see-hidden-user' => 'A felhasználó, akit blokkolni próbáltál már blokkolva és rejtve van. Mivel nincs felhasználó elrejtése jogosultságod, nem láthatod és nem szerkesztheted a felhasználó blokkját.',
 'ipbblocked' => 'Nem blokkolhatsz és nem oldhatod fel más felhasználók blokkjait, mert te magad is blokkolva vagy',
 'ipbnounblockself' => 'Nincs jogosultságod feloldani a saját felhasználói fiókod blokkját',
@@ -2810,7 +2787,6 @@ győződj meg a folytatás előtt arról, hogy tisztában vagy-e a következmén
 Ezen esetekben a vitalapot külön, kézzel kell átnevezned a kívánságaid szerint.",
 'movearticle' => 'Lap átnevezése',
 'moveuserpage-warning' => "'''Figyelem:''' Egy felhasználólapot készülsz átmozgatni. Csak a lap lesz átmozgatva, a szerkesztő ''nem'' lesz átnevezve.",
-'movenologin' => 'Nem jelentkeztél be',
 'movenologintext' => 'Ahhoz, hogy átnevezhess egy lapot, [[Special:UserLogin|be kell lépned]].',
 'movenotallowed' => 'Nincs jogod a lapok átnevezéséhez.',
 'movenotallowedfile' => 'Nincs megfelelő jogosultságod a fájlok átnevezéséhez.',
@@ -2826,8 +2802,6 @@ Ezen esetekben a vitalapot külön, kézzel kell átnevezned a kívánságaid sz
 'articleexists' => 'Ilyen névvel már létezik lap, vagy az általad választott név érvénytelen.
 Kérlek, válassz egy másik nevet.',
 'cantmove-titleprotected' => 'Nem nevezheted át a lapot, mert az új cím le van védve a létrehozás ellen.',
-'talkexists' => 'A lap átnevezése sikerült, de a hozzá tartozó vitalapot nem tudtam átnevezni, mert már létezik egy egyező nevű lap az új helyen. Kérjük, gondoskodj a két lap összefűzéséről.',
-'movedto' => 'átnevezve',
 'movetalk' => 'Nevezd át a vitalapot is, ha lehetséges',
 'move-subpages' => 'Allapok átnevezése (maximum $1)',
 'move-talk-subpages' => 'A vitalap allapjainak átnevezése (maximum $1)',
@@ -3125,9 +3099,9 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
 '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ő',
+'pageinfo-robot-policy' => 'Indexelés robottal',
+'pageinfo-robot-index' => 'Engedélyezett',
+'pageinfo-robot-noindex' => 'Nem engedélyezett',
 'pageinfo-views' => 'Megtekintések száma',
 'pageinfo-watchers' => 'Figyelők száma',
 'pageinfo-few-watchers' => 'Kevesebb mint $1 szerkesztő figyeli',
@@ -3207,7 +3181,7 @@ A futtatása során kárt tehet a számítógépedben.",
 'svg-long-desc' => 'SVG fájl, névlegesen $1 × $2 képpont, fájlméret: $3',
 'svg-long-desc-animated' => 'Animált SVG fájl, névlegesen $1 × $2 képpont, fájlméret: $3',
 'svg-long-error' => 'Érvénytelen SVG-fájl: $1',
-'show-big-image' => 'A kép nagyfelbontású változata',
+'show-big-image' => 'Eredeti fájl',
 'show-big-image-preview' => 'Az előnézet mérete: $1',
 'show-big-image-other' => 'További {{PLURAL:$2|felbontás|felbontások}}: $1.',
 'show-big-image-size' => '$1 × $2 képpont',
@@ -3236,6 +3210,7 @@ A futtatása során kárt tehet a számítógépedben.",
 'minutes' => '{{PLURAL:$1|egy|$1}} perccel',
 'hours' => '{{PLURAL:$1|egy|$1}} órával',
 'days' => '{{PLURAL:$1|egy|$1}} nappal',
+'weeks' => '{{PLURAL:$1|$1 hét|$1 hét}}',
 'months' => '{{PLURAL:$1|$1 hónap|$1 hónap}}',
 'years' => '{{PLURAL:$1|$1 év|$1 év}}',
 'ago' => '$1 ezelőtt',
@@ -3243,6 +3218,16 @@ A futtatása során kárt tehet a számítógépedben.",
 
 # Human-readable timestamps
 'hours-ago' => '$1 {{PLURAL:$1|órával|órával}} ezelőtt',
+'minutes-ago' => '$1 {{PLURAL:$1|perce|perce}}',
+'seconds-ago' => '$1 {{PLURAL:$1|másodperce|másodperce}}',
+'monday-at' => '$1 (hétfő)',
+'tuesday-at' => '$1 (kedd)',
+'wednesday-at' => '$1 (szerde)',
+'thursday-at' => '$1 (csütörtök)',
+'friday-at' => '$1 (péntek)',
+'saturday-at' => '$1 (szombat)',
+'sunday-at' => '$1 (vasárnap)',
+'yesterday-at' => 'Tegnap $1',
 
 # Bad image list
 'bad_image_list' => 'A formátum a következő:
@@ -3456,7 +3441,7 @@ míg a többi elem a táblázat összecsukása után alapértelmezett esetben re
 'exif-compression-4' => 'CCITT Group 4 fax kódolás',
 
 'exif-copyrighted-true' => 'Szerzői jog által védett',
-'exif-copyrighted-false' => 'Közkincs',
+'exif-copyrighted-false' => 'Szerzői jogi állapot nincs beállítva',
 
 'exif-unknowndate' => 'Ismeretlen dátum',
 
@@ -3660,15 +3645,10 @@ míg a többi elem a táblázat összecsukása után alapértelmezett esetben re
 'exif-urgency-high' => 'Magas ($1)',
 'exif-urgency-other' => 'Egyedi prioritás ($1)',
 
-# External editor support
-'edit-externally' => 'A fájl szerkesztése külső alkalmazással',
-'edit-externally-help' => '(Lásd a [https://www.mediawiki.org/wiki/Manual:External_editors használati utasítást] (angolul) a beállításához.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'bármikor',
 'namespacesall' => 'Összes',
 'monthsall' => 'mind',
-'limitall' => 'mind',
 
 # Email address confirmation
 'confirmemail' => 'E-mail cím megerősítése',
@@ -3688,7 +3668,6 @@ A levelező üzenete: $1',
 'confirmemail_needlogin' => 'Meg kell $1 erősíteni az e-mail címedet.',
 'confirmemail_success' => 'Az e-mail címed megerősítve. Most már beléphetsz a wikibe.',
 'confirmemail_loggedin' => 'E-mail címed megerősítve.',
-'confirmemail_error' => 'Hiba az e-mail címed megerősítése során.',
 'confirmemail_subject' => '{{SITENAME}} e-mail cím megerősítés',
 'confirmemail_body' => 'Valaki, valószínűleg te, ezzel az e-mail címmel regisztrált
 „$2” néven a(z) {{SITENAME}} wikin, a(z) $1 IP-címről.
@@ -3760,6 +3739,7 @@ Kérlek erősítsd meg, hogy tényleg újra akarod-e írni a lapot.",
 
 # Separators for various lists, etc.
 'ellipsis' => '…',
+'quotation-marks' => '„$1”',
 
 # Multipage image navigation
 'imgmultipageprev' => '← előző oldal',
@@ -3767,6 +3747,9 @@ Kérlek erősítsd meg, hogy tényleg újra akarod-e írni a lapot.",
 'imgmultigo' => 'Menj',
 'imgmultigoto' => 'Ugrás a(z) $1. oldalra',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(alapértelmezett nyelv)',
+
 # Table pager
 'ascending_abbrev' => 'növ',
 'descending_abbrev' => 'csökk',
@@ -3861,6 +3844,12 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'version-entrypoints-header-entrypoint' => 'Belépési pont',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect-user' => 'Felhasználói azonosító',
+'redirect-revision' => 'Oldal felülvizsgálata',
+'redirect-file' => 'Fájlnév',
+'redirect-not-exists' => 'Érték nem található',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Duplikátumok keresése',
 'fileduplicatesearch-summary' => 'Fájlok duplikátumainak keresése hash értékük alapján.',
@@ -3874,6 +3863,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 
 # Special:SpecialPages
 'specialpages' => 'Speciális lapok',
+'specialpages-note-top' => 'Jelmagyarázat',
 'specialpages-note' => '* Mindenki számára elérhető speciális lapok.
 * <span class="mw-specialpagerestricted">Korlátozott hozzáférésű speciális lapok.</span>',
 'specialpages-group-maintenance' => 'Állapotjelentések',
@@ -3912,13 +3902,15 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'tags-tag' => 'Címke neve',
 'tags-display-header' => 'Megjelenése a listákon',
 'tags-description-header' => 'Teljes leírás',
+'tags-active-header' => 'Aktív?',
 'tags-hitcount-header' => 'Címkézett változtatások',
+'tags-active-yes' => 'Igen',
+'tags-active-no' => 'Nem',
 'tags-edit' => 'szerkesztés',
 'tags-hitcount' => '{{PLURAL:$1|Egy|$1}} változtatás',
 
 # Special:ComparePages
 'comparepages' => 'Lapok összehasonlítása',
-'compare-selector' => 'Lapváltozatok összehasonlítása',
 'compare-page1' => '1. lap',
 'compare-page2' => '2. lap',
 'compare-rev1' => '1. változat',
@@ -3933,6 +3925,7 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'dberr-problems' => 'Sajnáljuk, de az oldallal technikai problémák vannak.',
 'dberr-again' => 'Várj néhány percet, majd frissítsd az oldalt.',
 'dberr-info' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel: $1)',
+'dberr-info-hidden' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel)',
 'dberr-usegoogle' => 'A probléma elmúlásáig próbálhatsz keresni a Google-lel.',
 'dberr-outofdate' => 'Fontos tudnivaló, hogy az oldal tartalmáról készített indexeik elavultak lehetnek.',
 'dberr-cachederror' => 'Lenn a kért oldal gyorsítótárazott változata látható, és lehet, hogy nem teljesen friss.',
@@ -4053,12 +4046,12 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
 'api-error-verification-error' => 'A fájl feltehetőleg sérült, vagy hibás a kiterjesztése.',
 
 # Durations
-'duration-seconds' => '{{PLURAL: $1|másodperc|másodperc}}',
-'duration-minutes' => '$1 {{PLURAL: $1|perc|perc}}',
+'duration-seconds' => '{{PLURAL:$1|másodperc|másodperc}}',
+'duration-minutes' => '$1 {{PLURAL:$1|perc|perc}}',
 'duration-hours' => '{{PLURAL:$1|egy|$1}} óra',
 'duration-days' => '{{PLURAL:$1|egy|$1}} nap',
 'duration-weeks' => '$1 {{PLURAL:$1|hét|hét}}',
-'duration-years' => '{{PLURAL: $1|Egy év|$1 év}}',
+'duration-years' => '{{PLURAL:$1|Egy év|$1 év}}',
 'duration-decades' => '{{PLURAL:$1|egy|$1}} évtized',
 'duration-centuries' => '{{PLURAL:$1|egy|$1}} évszázad',
 'duration-millennia' => '{{PLURAL:$1|egy|$1}} évezred',
@@ -4074,10 +4067,12 @@ Kibontja az elemző függvényeket (pl. <nowiki>{{</nowiki>#language:...}}), és
 'expand_templates_input' => 'Vizsgálandó szöveg',
 'expand_templates_output' => 'Eredmény',
 'expand_templates_xml_output' => 'XML kimenet',
+'expand_templates_html_output' => 'Nyers HTML-kimenet',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Megjegyzések eltávolítása',
 'expand_templates_remove_nowiki' => '<nowiki> tagek mellőzése az eredményben',
 'expand_templates_generate_xml' => 'XML elemzési fa mutatása',
+'expand_templates_generate_rawhtml' => 'Nyers HTML megjelenítése',
 'expand_templates_preview' => 'Előnézet',
 
 );
index 5db4fcd..d40410b 100644 (file)
@@ -14,6 +14,7 @@
  * @author Pandukht
  * @author Reedy
  * @author Ruben Vardanyan (me@RubenVardanyan.com)
+ * @author Shirayuki
  * @author Teak
  * @author Togaed
  * @author Vacio
@@ -206,14 +207,12 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Բոլորէջերը' ),
        'Ancientpages'              => array( 'Ամենահինէջերը' ),
        'Block'                     => array( 'Արգելափակել այփին' ),
-       'Blockme'                   => array( 'Արգելափակել' ),
        'Booksources'               => array( 'Գրքայինաղբյուրները' ),
        'BrokenRedirects'           => array( 'Կոտրվածվերահղումները' ),
        'Categories'                => array( 'Կատեգորիաները' ),
        'ChangePassword'            => array( 'Նորգաղտնաբառ' ),
        'Contributions'             => array( 'Ներդրումները' ),
        'Deadendpages'              => array( 'Հղումչպարունակողէջերը' ),
-       'Disambiguations'           => array( 'Երկիմաստէջերը' ),
        'DoubleRedirects'           => array( 'Կրկնակիվերահղումները' ),
        'Emailuser'                 => array( 'Գրելնամակ' ),
        'Export'                    => array( 'Արտահանելէջերը' ),
@@ -298,7 +297,6 @@ $messages = array(
 'tog-minordefault' => 'Նշել խմբագրումները որպես չնչին ըստ լռության',
 'tog-previewontop' => 'Ցույց տալ նախադիտումը խմբագրման դաշտից առաջ',
 'tog-previewonfirst' => 'Նախադիտել մինչև առաջին խմբագրությունը',
-'tog-nocache' => 'Արգելել էջերի գրանցումը հիշողության մեջ',
 'tog-enotifwatchlistpages' => 'էլ-փոստով տեղեկացնել հսկվող էջերում փոփոխությունների մասին',
 'tog-enotifusertalkpages' => 'էլ-փոստով տեղեկացնել իմ քննարկման էջի փոփոխության մասին',
 'tog-enotifminoredits' => 'էլ-փոստով տեղեկացնել էջերի նաև չնչին խմբագրումների մասին',
@@ -432,7 +430,6 @@ $messages = array(
 'qbedit' => 'Խմբագրել',
 'qbpageoptions' => 'Այս էջը',
 'qbmyoptions' => 'Իմ էջերը',
-'qbspecialpages' => 'Սպասարկող էջեր',
 'faq' => 'ՀՏՀ',
 'faqpage' => 'Project:ՀՏՀ',
 
@@ -644,9 +641,6 @@ $1',
 '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 />
-Ֆունկցիա՝ $1<br />
-Հայցում՝ $2',
 'viewsource' => 'Դիտել վիքիկոդը',
 'viewsource-title' => 'Դիտել $1 էջի աղբյուրը',
 'actionthrottled' => 'Գործողությունը արգելափակվեց',
@@ -733,7 +727,7 @@ $2',
 'createacct-captcha' => 'Անվտանգության ստուգում',
 'createacct-imgcaptcha-ph' => 'Մուտքագրեք վերը բերված գրվածքը',
 'createacct-submit' => 'Ստեղծել ձեր հաշիվը',
-'createacct-benefit-heading' => '{{SITENAME}}Õ\9d Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ¡Õ® ձեր պես մարդկանց կողմից։',
+'createacct-benefit-heading' => '{{SITENAME}}Õ\9d Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ¸Ö\82Õ´ Õ§ ձեր պես մարդկանց կողմից։',
 'createacct-benefit-body1' => '{{PLURAL:$1|խմբագրում}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|էջ}}',
 'createacct-benefit-body3' => 'վերջերս ակտիվ {{PLURAL:$1|մասնակից}}',
@@ -798,7 +792,7 @@ $2',
 'user-mail-no-addy' => 'Փորձվեց ուղարկել էլ․ նամակ առանց էլ․ հասցեի։',
 
 # Change password dialog
-'resetpass' => 'Փոխել գաղտնաբառը',
+'changepassword' => 'Փոխել գաղտնաբառը',
 'resetpass_announce' => 'Դուք ներկայացել եք էլ-փոստով ստացված ժամանակավոր գաղտնաբառով։ Համակարգ մուտքի համար անհրաժեշտ է նոր գաղտնաբառ ընտրել այստեղ.',
 'resetpass_text' => '<!-- Ավելացնել տեքստը այստեղ -->',
 'resetpass_header' => 'Փոխել մասնակցային հաշվի գաղտնաբառը',
@@ -924,14 +918,11 @@ $2',
 Նոր էջ ստեղծելու համար ներքևում գտնվող խմբագրման դաշտում ավելացրեք ձեր տեքստը, այնուհետև սեղմեք '''Հիշել էջը''' (այցելեք [[{{MediaWiki:Helppage}}|օգնության էջը]]՝ մանրամասն տեղեկությունների համար)։ 
 
 Եթե դուք սխալմամբ եք այստեղ հայտնվել, ապա սեղմեք ձեր զննարկիչի '''հետ''' (back) կոճակը։",
-'anontalkpagetext' => "{| style=\"background-repeat:no-repeat; background-position:800px -20px; margin:0.5em 0 0.5em 0; clear:both;\" width=100% class=toccolours
-|- 
-| <span class=\"plainlinksneverexpand\">''Այս քննարկման էջը պատկանում է չգրանցված կամ համակարգ չմտած մասնակցի, ով խմբագրում կատարելիս օգտվել է {{BASEPAGENAME}} ԱյՓի հասցեից։''
-Քանի որ միևնույն ԱյՓի հասցեից տարբեր մարդիկ կարող են օգտվել, հնարավոր է որ այստեղ գտնեք զգուշացումներ և հաղորդագրություններ, որոնք ձեզ չեն վերաբերում։ Դրանից խուսափելու համար առաջարկում ենք [[Special:UserLogin/signup|գրանցվել]] կամ, եթե արդեն գրանցված եք, պարզապես [[Special:UserLogin|մուտք գործել համակարգ]]։''
-----
-Հավելյալ տեղեկություններ ԱյՓիի մասին. [http://toolserver.org/~overlordq/cgi-bin/whois.cgi?lookup={{BASEPAGENAME}} WHOIS] · [http://www.robtex.com/ip/{{BASEPAGENAME}}.html#ip rDNS] · [http://www.dnsstuff.com/tools/tracert/?tool_id=68&ip={{BASEPAGENAME}} Traceroute] · [http://whatismyipaddress.com/ip/{{BASEPAGENAME}} Geolocate] · [http://toolserver.org/~luxo/contributions/contributions.php?user={{BASEPAGENAME}}&blocks=true Գլոբալ ներդրումներ] · [http://hy.wikipedia.org/wiki/Սպասարկող:DeletedContributions/{{BASEPAGENAME}} Ջնջված ներդրումներ] · [http://hy.wikipedia.org/w/index.php?title=Special:BlockList&ip={{BASEPAGENAME}} Արգելափակումներ]
-</small></span>
-|}",
+'anontalkpagetext' => "----
+''Այս քննարկման էջը պատկանում է անանուն մասնակցին, որը դեռ չի ստեղծել մասնակցային հաշիվ կամ չի մտել համակարգ մասնակցի անունով։''
+Այդ իսկ պատճառով օգտագործվում է թվային IP-հասցեն։
+Նման 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' => 'Ներկայումս այս էջում որևէ տեքստ չկա։
@@ -1144,8 +1135,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'revdelete-success' => "'''Տարբերակի տեսանելիությունը բարեհաջող թարմացված է։'''",
 'logdelete-success' => "'''Իրադարձության տեսանելիությունը փոփոխված է։'''",
 'revdel-restore' => 'Փոխել տեսանելիությունը',
-'revdel-restore-deleted' => 'ջնջված խմբագրումներ',
-'revdel-restore-visible' => 'տեսանելի խմբագրումներ',
 'pagehist' => 'Էջի պատմություն',
 'deletedhist' => 'Ջնջումների պատմություն',
 'revdelete-otherreason' => 'Ուրիշ/հավելյալ պատճառ՝',
@@ -1173,20 +1162,14 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 # Search results
 'searchresults' => 'Որոնման արդյունքներ',
 'searchresults-title' => '«$1»-ի որոնման արդյունքներ',
-'searchresulttext' => '{{SITENAME}} կայքում որոնման մասին տեղեկությունների համար այցելեք [[{{MediaWiki:Helppage}}|{{int:help}}]] էջը։',
-'searchsubtitle' => "Դուք որոնել եք «'''[[:$1]]'''» ([[Special:Prefixindex/$1|այս անվանմամբ սկսվող էջերը]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|այս անվանվանը հղվող էջերը]])",
-'searchsubtitleinvalid' => 'Դուք որոնել եք «$1»',
 'titlematches' => 'Համընկած հոդվածների անվանումներ',
-'notitlematches' => 'Չկան համընկած հոդվածների անվանումներ',
 'textmatches' => 'Համընկած տեքստերով էջեր',
 'notextmatches' => 'Չկան համընկած տեքստերով էջեր',
 'prevn' => 'նախորդ {{PLURAL:$1|$1}}',
 'nextn' => 'հաջորդ {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Դիտել ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Որոնման ընտրանքներ',
 'searchmenu-exists' => "'''Այս վիքիում, գոյություն ունի \"[[:\$1]]\" անվանումով էջը։'''",
 'searchmenu-new' => "'''Ստեղծե՛լ \"[[:\$1]]\" էջը այս վիքիում'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ցուցադրել այս նախածանցով սկսվող էջերը]]',
 'searchprofile-articles' => 'Հիմնական էջեր',
 'searchprofile-project' => 'Օգնության և նախագծերի էջեր',
 'searchprofile-images' => 'Մուլտիմեդիա',
@@ -1207,20 +1190,16 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'search-interwiki-default' => '$1 արդյունք.',
 'search-interwiki-more' => '(էլի)',
 'search-relatedarticle' => 'Հարակից',
-'mwsuggest-disable' => 'Անջատել AJAX հուշումներ',
 'searcheverything-enable' => 'Որոնել բոլոր անվանատարածքներում',
 'searchrelated' => 'հարակից',
 'searchall' => 'բոլոր',
 'showingresults' => "Ստորև բերված է մինչև {{PLURAL:$1|'''1''' արդյունք|'''$1''' արդյունք}}՝ սկսած №&nbsp;<strong>$2</strong>-ից։",
 'showingresultsnum' => "Ստորև բերված է {{PLURAL:$3|'''1''' արդյունք|'''$3''' արդյունք}}` սկսած №&nbsp;<strong>$2</strong>-ից։",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' արդյունք '''$3'''-ից|'''$1 - $2''' արդյունքներ '''$3'''-ից}}  '''$4'''-ի համար",
-'nonefound' => "'''Ծանուցում'''։ Լռությամբ որոնումը կատարվում է ոչ բոլոր անվանատարածքներում։ Բոլոր անվանատարածքներում որոնելու համար (ներառյալ քննարկման էջերը, կաղապարները և այլն) օգտագործեք ''all:'' նախածանցը կամ նշեք ցանկացած անվանատարածքի անվանումը որպես նախածանց։",
 'search-nonefound' => 'Որոնմանը համապատասխանող արդյունքներ չեն գտնվել։',
-'powersearch' => 'Ընդլայնված որոնում',
 'powersearch-legend' => 'Ընդլայնված որոնում',
 'powersearch-ns' => 'Որոնել անվանատարածքում.',
 'powersearch-redir' => 'Ցույց տալ վերահղումները',
-'powersearch-field' => 'Որոնել',
 'powersearch-togglelabel' => 'Նշել․',
 'powersearch-toggleall' => 'Բոլորը',
 'powersearch-togglenone' => 'Ոչ մեկը',
@@ -1232,7 +1211,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'mypreferences' => 'Նախընտրություններ',
 'prefs-edits' => 'Խմբագրումների քանակը.',
 'prefsnologintext2' => 'Նախընտրությունները փոփոխելու համար անհրաժեշտ է $1։',
-'changepassword' => 'Փոխել գաղտնաբառը',
 'prefs-skin' => 'Տեսք',
 'skin-preview' => 'նախադիտել',
 'datedefault' => 'Առանց նախընտրության',
@@ -1253,7 +1231,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'prefs-email' => 'Էլ-հասցեի ընտրանքներ',
 'prefs-rendering' => 'Արտաքին տեսք',
 'saveprefs' => 'Հիշել',
-'resetprefs' => 'Անտեսել փոփոխությունները',
 'restoreprefs' => 'Զրոյացնել, բերելով իլռելայն նախընտրանքներին',
 'prefs-editing' => 'Խմբագրում',
 'rows' => 'Տողեր`',
@@ -1270,7 +1247,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'localtime' => 'Տեղական ժամանակ.',
 'timezoneuseserverdefault' => 'Օգտագործել սերվերի ժամանակը',
 'timezoneuseoffset' => 'Այլ (նշեք տարբերությունը)',
-'timezoneoffset' => 'Տարբերություն¹.',
 'servertime' => 'Սերվերի ժամանակ.',
 'guesstimezone' => 'Լրացնել բրաուզերից',
 'timezoneregion-africa' => 'Աֆրիկա',
@@ -1417,8 +1393,8 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'recentchanges-label-minor' => 'Սա չնչին խմբագրում է',
 'recentchanges-label-bot' => 'Այս խմբագրումը կատարվել է բոտի կողմից',
 'recentchanges-label-unpatrolled' => 'Այս խմբագրումը դեռ չի պարեկվել',
-'recentchanges-legend-newpage' => '$1 - նոր էջ',
-'rcnote' => 'Ստորև բերված են վերջին <strong>$1</strong> փոփոխությունները վերջին <strong>$2</strong> {{PLURAL:$2|օրվա|օրվա}} ընթացքում՝ $5, $4-ի դրությամբ։',
+'recentchanges-label-plusminus' => 'Էջի չափսն փոխոխվեց այսքան բայթով։',
+'recentchanges-legend-newpage' => '(տես նաև՝  [[Special:NewPages|նոր էջերի ցանկ]])',
 'rcnotefrom' => "Ստորև բերված են փոփոխությունները սկսած՝ '''$2''' (մինչև՝ '''$1''')։",
 'rclistfrom' => 'Ցույց տալ նոր փոփոխությունները սկսած $1',
 'rcshowhideminor' => '$1 չնչին խմբագրումները',
@@ -1708,7 +1684,6 @@ $3 մասնակիցը տվել է հետևյալ պատճառը. ''$2''",
 'deadendpages' => 'Հղումներ չպարունակող էջեր',
 'deadendpagestext' => 'Հետևյալ էջերը չունեն հղումներ վիքիի այլ էջերին։',
 'protectedpages' => 'Պաշտպանված էջեր',
-'protectedpagestext' => 'Հետևյալ էջերը պաշտպանված են վերանվանումից կամ տեղափոխումից։',
 'protectedpagesempty' => 'Ներկայումս չկան պաշտպանված էջեր նշված պարամետրերով։',
 'protectedtitles' => 'Պաշտպանված անվանումներ',
 'listusers' => 'Մասնակիցների ցանկ',
@@ -1753,9 +1728,6 @@ $1 {{PLURAL:$1|խմբագրում|խմբագրումներ}}',
 'allpagesto' => 'Ցույց տալ էջերը, որոնք ավարտվում են՝',
 'allarticles' => 'Բոլոր հոդվածները',
 'allinnamespace' => 'Բոլոր էջերը ($1 անվանատարածք)',
-'allnotinnamespace' => 'Բոլոր էջերը (ոչ $1 անվանատարածքում)',
-'allpagesprev' => 'Նախորդ',
-'allpagesnext' => 'Հաջորդ',
 'allpagessubmit' => 'Անցնել',
 'allpagesprefix' => 'Ցույց տալ հետևյալ նախածանցով էջերը՝',
 'allpagesbadtitle' => 'Տվյալ էջի անվանումը անթույլատրելի է։ Այն պարունակում է միջ-լեզվական կամ ինտերվիքի նախածանց, կամ էլ անվանումներում այնթույլատրելի սիմվոլներ։',
@@ -2017,7 +1989,6 @@ $NEWPAGE
 'undeletebtn' => 'Վերականգնել',
 'undeletelink' => 'դիտել/վերականգնել',
 'undeleteviewlink' => 'դիտել',
-'undeletereset' => 'Մաքրել',
 'undeleteinvert' => 'Շրջել ընտրությունը',
 'undeletecomment' => 'Մեկնաբանություն.',
 'undeletedrevisions' => 'վերականգնվեց $1 տարբերակ',
@@ -2102,7 +2073,6 @@ $1',
 'block' => 'Արգելափակել մասնակցին',
 'unblock' => 'Արգելափակումից հանել',
 'blockip' => 'Մասնակցի արգելափակում',
-'blockip-title' => 'Արգելափակել մասնակցին',
 'blockip-legend' => 'Մասնակցի արգելափակում',
 'blockiptext' => 'Օգտագործեք ստորև բերված ձևը որոշակի IP-հասցեից կամ մասնակցի անունից գրելու հնարավորությունը արգելափակելու համար։
 Նման բան հարկավոր է անել միայն վանդալության կանխարգելման նպատակով և համաձայն [[{{MediaWiki:Policy-url}}|կանոնակարգի]]։
@@ -2110,7 +2080,6 @@ $1',
 'ipadressorusername' => 'IP-հասցե կամ մասնակցի անուն.',
 'ipbexpiry' => 'Մարման ժամկետ.',
 'ipbreason' => 'Պատճառ.',
-'ipbreasonotherlist' => 'Այլ պատճառ',
 'ipbreason-dropdown' => '*Արգելափակման սովորական պատճառներ
 ** Կեղծ տեղեկությունների ներմուծում
 ** Էջերից նյութերի հեռացում
@@ -2125,8 +2094,6 @@ $1',
 'ipbsubmit' => 'Արգելափակել այս մասնակցին',
 'ipbother' => 'Այլ ժամկետ.',
 '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',
-'ipbotheroption' => 'այլ',
-'ipbotherreason' => 'Այլ/հավելյալ պատճառներ.',
 'ipbhidename' => 'Թաքցնել մասնակցի անունը արգելափակման տեղեկամատյանից, գործող արգելափակումների ցանկից և մասնակիցների ցանկից։',
 'badipaddress' => 'Սխալ IP-հասցե',
 'blockipsuccesssub' => 'Արգելափակումը կատարված է',
@@ -2232,7 +2199,6 @@ $1',
 Այսպիսի դեպքերում հարկավոր է տեղափոխել կամ միաձուլել էջերը ձեռքով, եթե դա ցանկանաք։",
 'movearticle' => 'Տեղափոխել էջը',
 'moveuserpage-warning' => "'''Զգուշացո՜ւմ՝ '''You are about to move a user page. Please note that only the page will be moved and the user will ''not'' be renamed.",
-'movenologin' => 'Դուք չեք մտել համակարգ',
 'movenologintext' => 'Անհրաժեշտ է [[Special:UserLogin|մտնել համակարգ]]՝ էջը տեղափոխելու համար։',
 'movenotallowed' => 'Դուք չունեք էջերի տեղափոխման իրավունք։',
 'newtitle' => 'Նոր անվանում.',
@@ -2244,8 +2210,6 @@ $1',
 'movepage-moved-noredirect' => 'Վերահղման ստեղծում թույլ չի տրվել',
 'articleexists' => 'Այդ անվանմամբ էջ արդեն գոյություն ունի կամ ձեր ընտրած անվանումը անթույլատրելի է։
 Խնդրում ենք ընտրել այլ անվանում։',
-'talkexists' => "'''Էջը հաջողությամբ տեղափոխվեց, սակայն կցված քննարկման էջը հնարավոր չէր տեղափոխել, քանի որ նոր անվանմամբ էջ արդեն գոյություն ուներ։ Խնդրում ենք միաձուլել դրանք ձեռքով։'''",
-'movedto' => 'վերանվանված է',
 'movetalk' => 'Վերանվանել կից քննարկման էջը',
 'move-subpages' => 'Վերանվանել նաև ենթաէջերը (առավելագունը $1)',
 'move-talk-subpages' => 'Վերանվանել նաև քննարկման ենթաէջերը (առավելագունը $1)',
@@ -2579,15 +2543,10 @@ $1',
 'exif-urgency-low' => 'Թույլ ($1)',
 'exif-urgency-high' => 'Ուժեղ ($1)',
 
-# External editor support
-'edit-externally' => 'Խմբագրել այս նիշքը արտաքին խմբագրիչով',
-'edit-externally-help' => '(Մանրամասնությունների համար տես [https://www.mediawiki.org/wiki/Manual:External_editors տեղակայման հրահանգները])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'բոլոր',
 'namespacesall' => 'բոլոր',
 'monthsall' => 'բոլոր',
-'limitall' => 'բոլոր',
 
 # Email address confirmation
 'confirmemail' => 'Էլ-հասցեի վավերացում',
@@ -2605,7 +2564,6 @@ $1',
 'confirmemail_needlogin' => 'Ձեզ անհրաժեշտ է $1՝ ձեր էլ-փոստի հասցեն վավերացնելու համար։',
 'confirmemail_success' => 'Ձեր էլ-փոստի հասցեն վավերացված է։ Դուք կարող եք մտնել համակարգ և օգտվել վիքիից։',
 'confirmemail_loggedin' => 'Ձեր էլ-փոստի հասցեն վավերացված է։',
-'confirmemail_error' => 'Տեղի է ունեցել սխալ էլ-փոստի հասցեի վավերացման ընթացքում։',
 'confirmemail_subject' => '{{SITENAME}}. էլ-հասցեի վավերացման հայց',
 'confirmemail_body' => 'Ինչ-որ մեկը, հավանաբար դուք, $1 IP-հասցեից գրանցվել է {{SITENAME}} նախագծի կայքում՝ ստեղծելով «$2» մասնակցային հաշիվը, և նշել է ձեր էլ-փոստի հասցեն։
 
@@ -2747,7 +2705,6 @@ $3
 
 # Special:ComparePages
 'comparepages' => 'Համեմատել էջեր',
-'compare-selector' => 'Համեմատել էջի տարբերակներ',
 'compare-page1' => 'Էջ 1',
 'compare-page2' => 'Էջ 2',
 'compare-submit' => 'Համեմատել',
index 998f87e..df0ba42 100644 (file)
@@ -53,7 +53,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Titulo_invalide' ),
        'Blankpage'                 => array( 'Pagina_vacue' ),
        'Block'                     => array( 'Blocar', 'Blocar_IP', 'Blocar_usator' ),
-       'Blockme'                   => array( 'Blocar_me' ),
        'Booksources'               => array( 'Fontes_de_libros' ),
        'BrokenRedirects'           => array( 'Redirectiones_rupte' ),
        'Categories'                => array( 'Categorias' ),
@@ -65,10 +64,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_conto' ),
        'Deadendpages'              => array( 'Paginas_sin_exito' ),
        'DeletedContributions'      => array( 'Contributiones_delite' ),
-       'Disambiguations'           => array( 'Disambiguationes' ),
        'DoubleRedirects'           => array( 'Redirectiones_duple' ),
        'EditWatchlist'             => array( 'Modificar_observatorio' ),
        'Emailuser'                 => array( 'Inviar_e-mail_a_un_usator' ),
+       'ExpandTemplates'           => array( 'Expander_patronos' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'Le_minus_versiones' ),
        'FileDuplicateSearch'       => array( 'Recerca_de_files_duplice' ),
@@ -110,6 +109,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Paginas_protegite' ),
        'Protectedtitles'           => array( 'Titulos_protegite' ),
        'Randompage'                => array( 'Aleatori', 'Pagina_aleatori' ),
+       'RandomInCategory'          => array( 'Aleatori_in_categoria' ),
        'Randomredirect'            => array( 'Redirection_aleatori' ),
        'Recentchanges'             => array( 'Modificationes_recente' ),
        'Recentchangeslinked'       => array( 'Modificationes_recente_ligate', 'Modificationes_connexe' ),
@@ -167,7 +167,6 @@ $messages = array(
 'tog-minordefault' => 'Marcar omne modificationes initialmente como minor',
 'tog-previewontop' => 'Monstrar previsualisation ante le quadro de modification',
 'tog-previewonfirst' => 'Monstrar previsualisation al prime modification',
-'tog-nocache' => "Disactivar le ''cache'' de paginas in le navigator",
 'tog-enotifwatchlistpages' => 'Notificar me per e-mail quando un pagina o file in mi observatorio es modificate',
 'tog-enotifusertalkpages' => 'Notificar me per e-mail quando mi pagina de discussion es modificate',
 'tog-enotifminoredits' => 'Notificar me etiam de modificationes minor de paginas e files',
@@ -303,7 +302,6 @@ $messages = array(
 'qbedit' => 'Modificar',
 'qbpageoptions' => 'Iste pagina',
 'qbmyoptions' => 'Mi paginas',
-'qbspecialpages' => 'Paginas special',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -410,7 +408,7 @@ $1',
 'privacypage' => 'Project:Politica de confidentialitate',
 
 'badaccess' => 'Error de permission',
-'badaccess-group0' => 'Tu non ha le permission de executar le action que tu ha requestate.',
+'badaccess-group0' => 'Tu non es autorisate a exequer le action requestate.',
 'badaccess-groups' => 'Le action que tu ha requestate es limitate al usatores in {{PLURAL:$2|le gruppo|un del gruppos}}: $1.',
 
 'versionrequired' => 'Version $1 de MediaWiki requirite',
@@ -521,9 +519,6 @@ Es possibile que illo contine un o plure characteres que non pote esser usate in
 'perfcached' => 'Le sequente datos esseva recuperate del cache e possibilemente non es actual. Un maximo de {{PLURAL:$1|un resultato|$1 resultatos}} es disponibile in le cache.',
 'perfcachedts' => 'Le sequente datos esseva recuperate del cache e ha essite actualisate le $3 a $4. Un maximo de {{PLURAL:$4|un resultato|$4 resultatos}} es disponibile in le cache.',
 'querypage-no-updates' => 'Le actualisationes pro iste pagina es disactivate. Pro le momento, le datos hic non se cambiara.',
-'wrong_wfQuery_params' => 'Parametros incorrecte a wfQuery()<br />
-Function: $1<br />
-Consulta: $2',
 'viewsource' => 'Vider codice-fonte',
 'viewsource-title' => 'Le texto fonte de $1',
 'actionthrottled' => 'Action limitate',
@@ -657,7 +652,7 @@ Verifica le orthographia.',
 'passwordtooshort' => 'Le contrasignos debe continer al minus {{PLURAL:$1|1 character|$1 characteres}}.',
 'password-name-match' => 'Tu contrasigno debe esser differente de tu nomine de usator.',
 'password-login-forbidden' => 'Le uso de iste nomine de usator e contrasigno ha essite prohibite.',
-'mailmypassword' => 'Inviar un nove contrasigno in e-mail',
+'mailmypassword' => 'Reinitialisar contrasigno',
 'passwordremindertitle' => 'Nove contrasigno temporari pro {{SITENAME}}',
 'passwordremindertext' => 'Alcuno (probabilemente tu, ab le adresse IP $1) requestava un nove
 contrasigno pro {{SITENAME}} ($4).
@@ -712,7 +707,7 @@ Si tu opta pro dar lo, isto essera usate pro dar al usator attribution pro su co
 'user-mail-no-body' => 'Tentava inviar e-mail con texto vacue o multo curte.',
 
 # Change password dialog
-'resetpass' => 'Cambiar contrasigno',
+'changepassword' => 'Cambiar contrasigno',
 'resetpass_announce' => 'Tu ha aperite un session con un codice temporari que tu recipeva in e-mail.
 Pro completar le accesso, tu debe definir un nove contrasigno hic:',
 'resetpass_text' => '<!-- Adde texto hic -->',
@@ -734,7 +729,7 @@ Es possibile que tu ha ja cambiate tu contrasigno o requestate un nove contrasig
 # Special:PasswordReset
 'passwordreset' => 'Reinitialisar contrasigno',
 'passwordreset-text-one' => 'Completa iste formulario pro reinitialisar tu contrasigno.',
-'passwordreset-text-many' => '{{PLURAL:$1|Completa un de iste campos pro reinitialisar tu contrasigno.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Completa un de iste campos pro reciper un contrasigno temporari in e-mail.}}',
 'passwordreset-legend' => 'Reinitialisar contrasigno',
 'passwordreset-disabled' => 'Le reinitialisation de contrasignos ha essite disactivate in iste wiki.',
 'passwordreset-emaildisabled' => 'Le functionalitate de e-mail ha essite disactivate in iste wiki.',
@@ -988,7 +983,7 @@ Tu pote retornar e modificar un pagina existente, o [[Special:UserLogin|aperir u
 'permissionserrors' => 'Error de permission',
 'permissionserrorstext' => 'Tu non ha le permission de facer isto, pro le sequente {{PLURAL:$1|motivo|motivos}}:',
 'permissionserrorstext-withaction' => 'Tu non ha le permission de $2, pro le sequente {{PLURAL:$1|motivo|motivos}}:',
-'recreate-moveddeleted-warn' => "'''Attention: Tu es sur le puncto de recrear un pagina que esseva anteriormente delite.'''
+'recreate-moveddeleted-warn' => "'''Attention: Tu es sur le puncto de recrear un pagina que ha essite delite anteriormente.'''
 
 Tu deberea considerar si il es appropriate continuar a modificar iste pagina.
 Ecce le registro de deletiones e de renominationes pro iste pagina:",
@@ -1010,6 +1005,8 @@ Illo existe ja.',
 'content-not-allowed-here' => 'Le contento "$1" non es permittite in le pagina [[$2]]',
 'editwarning-warning' => 'Quitar iste pagina pote causar le perdita de omne modificationes que tu ha facite.
 Si tu ha aperite un session, tu pote disactivar iste aviso in le section "Modification" de tu preferentias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contento non supportate',
+'editpage-notsupportedcontentformat-text' => 'Le formato de contento $1 non es supportate per le modello de contento $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitexto',
@@ -1052,6 +1049,9 @@ Per favor controla le comparation infra pro verificar que tu vole facer isto, e
 'cantcreateaccount-text' => "Le creation de contos desde iste adresse IP ('''$1''') ha essite blocate per [[User:$3|$3]].
 
 Le motivo que $3 dava es ''$2''",
+'cantcreateaccount-range-text' => "Le creation de contos ab le adresses IP in le intervallo '''$1''', le qual include tu adresse IP ('''$4'''), ha essite blocate per [[User:$3|$3]].
+
+Le motivo fornite per $3 es ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vider le entratas del registro pro iste pagina',
@@ -1123,10 +1123,6 @@ Tu pote vider iste diff; detalios se trova in le [{{fullurl:{{#Special:Log}}/sup
 'revdelete-nooldid-title' => 'Le version de destination es invalide',
 'revdelete-nooldid-text' => 'O tu non ha specificate alcun version(es) de destination pro executar iste
 function, o le version specificate non existe, o tu essaya celar le version actual.',
-'revdelete-nologtype-title' => 'Typo de registro non specificate',
-'revdelete-nologtype-text' => 'Tu non ha specificate un typo de registro super le qual iste action debe esser executate.',
-'revdelete-nologid-title' => 'Entrata de registro invalide',
-'revdelete-nologid-text' => 'O tu non ha specificate un evento de registro de destination super le qual iste action debe esser executate, o le entrata specificate non existe.',
 'revdelete-no-file' => 'Le file specificate non existe.',
 'revdelete-show-file-confirm' => 'Es tu secur de voler vider un version delite del file  "<nowiki>$1</nowiki>" del $2 a $3?',
 'revdelete-show-file-submit' => 'Si',
@@ -1160,8 +1156,6 @@ $1",
 'logdelete-failure' => "'''Le visibilitate del registro non poteva esser cambiate:'''
 $1",
 'revdel-restore' => 'Cambiar visibilitate',
-'revdel-restore-deleted' => 'versiones delite',
-'revdel-restore-visible' => 'versiones visibile',
 'pagehist' => 'Historia del pagina',
 'deletedhist' => 'Historia delite',
 'revdelete-hide-current' => 'Error de celar le entrata del $2 a $1: iste es le version actual.
@@ -1241,12 +1235,8 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 # Search results
 'searchresults' => 'Resultatos del recerca',
 'searchresults-title' => 'Resultatos del recerca de "$1"',
-'searchresulttext' => 'Pro plus informationes super le recerca in {{SITENAME}}, vide [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tu cercava \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tote le paginas que comencia con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tote le paginas con ligamines a "$1"]])',
-'searchsubtitleinvalid' => "Tu cercava '''$1'''",
 'toomanymatches' => 'Se retornava troppo de resultatos. Per favor prova un altere consulta.',
 'titlematches' => 'Correspondentias in le titulos de paginas',
-'notitlematches' => 'Nulle correspondentias in le titulos de paginas',
 'textmatches' => 'Resultatos in le texto de paginas',
 'notextmatches' => 'Nulle resultato in le texto de paginas',
 'prevn' => '$1 {{PLURAL:$1|precedente|precedentes}}',
@@ -1255,10 +1245,8 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'nextn-title' => '$1 {{PLURAL:$1|resultato|resultatos}} sequente',
 'shown-title' => 'Monstrar $1 {{PLURAL:$1|resultato|resultatos}} per pagina',
 'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Optiones de recerca',
 'searchmenu-exists' => "'''Existe un pagina nominate \"[[\$1]]\" in iste wiki'''",
 'searchmenu-new' => "'''Crea le pagina \"[[:\$1]]\" in iste wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navigar per le paginas con iste prefixo]]',
 'searchprofile-articles' => 'Paginas de contento',
 'searchprofile-project' => 'Paginas de adjuta e del projecto',
 'searchprofile-images' => 'Multimedia',
@@ -1279,21 +1267,16 @@ Detalios se trova in le [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}
 'search-interwiki-default' => 'Resultatos de $1:',
 'search-interwiki-more' => '(plus)',
 'search-relatedarticle' => 'Connexe',
-'mwsuggest-disable' => 'Disactivar suggestiones de recerca',
 'searcheverything-enable' => 'Cercar in tote le spatios de nomines',
 'searchrelated' => 'connexe',
 'searchall' => 'totes',
 'showingresults' => "Infra se monstra non plus de {{PLURAL:$1|'''1''' resultato|'''$1''' resultatos}} a partir del numero '''$2'''.",
 'showingresultsnum' => "Infra se monstra {{PLURAL:$3|'''1''' resultato|'''$3''' resultatos}} a partir del numero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultato '''$1'''|Resultatos '''$1 - $2'''}} de '''$3''' pro '''$4'''",
-'nonefound' => "'''Nota:''' Normalmente, es cercate solmente in alcun spatios de nomines.
-Tenta prefixar tu consulta con ''all:'' pro cercar in tote le contento (includente paginas de discussion, patronos, etc.), o usa le spatio de nomines desirate como prefixo.",
 'search-nonefound' => 'Le recerca non ha producite resultatos.',
-'powersearch' => 'Recerca avantiate',
 'powersearch-legend' => 'Recerca avantiate',
 'powersearch-ns' => 'Cercar in spatios de nomines:',
 'powersearch-redir' => 'Listar redirectiones',
-'powersearch-field' => 'Cercar',
 'powersearch-togglelabel' => 'Seliger:',
 'powersearch-toggleall' => 'Totes',
 'powersearch-togglenone' => 'Nihil',
@@ -1308,7 +1291,6 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
 'mypreferences' => 'Preferentias',
 'prefs-edits' => 'Numero de modificationes:',
 'prefsnologintext2' => 'Es necessari $1 pro definir le preferentias de usator.',
-'changepassword' => 'Cambiar contrasigno',
 'prefs-skin' => 'Apparentia',
 'skin-preview' => 'Previsualisation',
 'datedefault' => 'Nulle preferentia',
@@ -1331,13 +1313,11 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
 'prefs-email' => 'Optiones de e-mail',
 'prefs-rendering' => 'Apparentia',
 'saveprefs' => 'Confirmar',
-'resetprefs' => 'Reverter cambios',
 'restoreprefs' => 'Restaurar tote le preselectiones (in tote le sectiones)',
 'prefs-editing' => 'Modification',
 'rows' => 'Lineas:',
 'columns' => 'Columnas:',
 'searchresultshead' => 'Recerca',
-'resultsperpage' => 'Resultatos per pagina:',
 'stub-threshold' => 'Limite pro formatar le ligamines in <a href="#" class="stub">stilo de peciettas</a> (bytes):',
 'stub-threshold-disabled' => 'Disactivate',
 'recentchangesdays' => 'Numero de dies a monstrar in modificationes recente:',
@@ -1352,7 +1332,6 @@ Omne persona qui lo cognosce pote leger tu observatorio, dunque, non divide lo.
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar le valor predefinite del wiki ($1)',
 'timezoneuseoffset' => 'Altere (specifica le differentia)',
-'timezoneoffset' => 'Differentia¹:',
 'servertime' => 'Hora del servitor:',
 'guesstimezone' => 'Obtener del navigator',
 'timezoneregion-africa' => 'Africa',
@@ -1422,6 +1401,7 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'prefs-tokenwatchlist' => 'Indicio',
 'prefs-diffs' => 'Differentias',
 'prefs-help-prefershttps' => 'Iste preferentia habera effecto a partir de tu proxime session.',
+'prefs-tabs-navigation-hint' => 'Consilio: Tu pote usar le claves de sagitta sinistre e dextre pro navigar inter le schedas in le lista.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Sembla valide',
@@ -1608,8 +1588,9 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
 'recentchanges-label-bot' => 'Iste modification ha essite effectuate per un robot',
 'recentchanges-label-unpatrolled' => 'Iste modification non ha ancora essite patruliate',
 'recentchanges-label-plusminus' => 'Le dimension del pagina ha cambiate de iste numero de bytes',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(vide etiam le [[Special:NewPages|lista de nove paginas]])',
-'rcnote' => "Infra es {{PLURAL:$1|'''1''' modification|le ultime '''$1''' modificationes}} in le ultime {{PLURAL:$2|die|'''$2''' dies}}, actualisate le $4 a $5.",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'infra es le modificationes a partir de <b>$2</b> (usque a <b>$1</b>).',
 'rclistfrom' => 'Monstrar nove modificationes a partir de $1',
 'rcshowhideminor' => '$1 modificationes minor',
@@ -1735,6 +1716,7 @@ Si tu vole ancora incargar iste file, per favor retorna e usa un nove nomine. [[
 Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Iste file es un duplicato del sequente {{PLURAL:$1|file|files}}:',
 'file-deleted-duplicate' => 'Un file identic a iste file ([[:$1]]) esseva ja delite anteriormente. Tu deberea verificar le registro de deletiones concernente iste file ante de re-incargar lo.',
+'file-deleted-duplicate-notitle' => 'Un file identic a iste file ha essite delite anteriormente, e le titulo ha essite supprimite. Tu deberea demandar a un persona con le privilegio de vider datos de files supprimite a examinar le situation ante de incargar lo de novo.',
 'uploadwarning' => 'Advertimento de incargamento',
 'uploadwarning-text' => 'Per favor modifica le description del file ci infra e reproba.',
 'savefile' => 'Salveguardar file',
@@ -2081,6 +2063,7 @@ Le entratas <del>cancellate</del> ha essite resolvite.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|ligamine|ligamines}}',
 'nmembers' => '$1 {{PLURAL:$1|membro|membros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membro|membros}}',
 'nrevisions' => '$1 {{PLURAL:$1|version|versiones}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visitas}}',
 'nimagelinks' => 'Usate in $1 {{PLURAL:$1|pagina|paginas}}',
@@ -2119,10 +2102,9 @@ Le entratas <del>cancellate</del> ha essite resolvite.',
 'protectedpages' => 'Paginas protegite',
 'protectedpages-indef' => 'Solmente protectiones infinite',
 'protectedpages-cascade' => 'Protectiones in cascada solmente',
-'protectedpagestext' => 'Le sequente paginas es protegite de esser renominate o modificate',
+'protectedpages-noredirect' => 'Celar redirectiones',
 'protectedpagesempty' => 'Nulle paginas es actualmente protegite con iste parametros.',
 'protectedtitles' => 'Titulos protegite',
-'protectedtitlestext' => 'Le sequente titulos es protegite de esser create',
 'protectedtitlesempty' => 'Nulle titulos es actualmente protegite con iste parametros.',
 'listusers' => 'Lista de usatores',
 'listusers-editsonly' => 'Monstrar solmente usatores con modificationes',
@@ -2175,9 +2157,6 @@ Pro restringer le presentation, selige un typo de registro, le nomine de usator
 'allpagesto' => 'Monstrar le paginas usque a:',
 'allarticles' => 'Tote le paginas',
 'allinnamespace' => 'Tote le paginas (del spatio de nomines $1)',
-'allnotinnamespace' => 'Tote le paginas (non in le spatio de nomines $1)',
-'allpagesprev' => 'Previe',
-'allpagesnext' => 'Sequente',
 'allpagessubmit' => 'Va',
 'allpagesprefix' => 'Monstrar le paginas con prefixo:',
 'allpagesbadtitle' => 'Le titulo de pagina date es invalide o ha un prefixo interlingual o interwiki.
@@ -2406,6 +2385,7 @@ Le deletion de tal paginas ha essite restringite pro impedir le disruption accid
 'delete-warning-toobig' => 'Iste pagina ha un grande historia de modificationes con plus de $1 {{PLURAL:$1|version|versiones}}.
 Le deletion de illo pote disrumper le operationes del base de datos de {{SITENAME}};
 procede con caution.',
+'deleting-backlinks-warning' => "'''Attention:''' Il ha altere paginas con ligamines al pagina que tu es sur le puncto de deler.",
 
 # Rollback
 'rollback' => 'Revocar modificationes',
@@ -2527,7 +2507,6 @@ Es possibile que le adresse URL es invalide, o que le version ha essite restaura
 'undeletebtn' => 'Restaurar',
 'undeletelink' => 'vider/restaurar',
 'undeleteviewlink' => 'vider',
-'undeletereset' => 'Reinitialisar',
 'undeleteinvert' => 'Inverter selection',
 'undeletecomment' => 'Motivo:',
 'undeletedrevisions' => '{{PLURAL:$1|1 version|$1 versiones}} restaurate',
@@ -2616,7 +2595,6 @@ Le ultime entrata del registro de blocadas es reproducite hic infra pro informat
 'block' => 'Blocar usator',
 'unblock' => 'Disblocar usator',
 'blockip' => 'Blocar usator',
-'blockip-title' => 'Blocar usator',
 'blockip-legend' => 'Blocar usator',
 'blockiptext' => 'Usa le formulario infra pro blocar le accesso de scriptura
 a partir de un adresse IP specific.
@@ -2627,7 +2605,6 @@ specific que ha essite vandalisate).',
 'ipadressorusername' => 'Adresse IP o nomine de usator:',
 'ipbexpiry' => 'Expiration:',
 'ipbreason' => 'Motivo:',
-'ipbreasonotherlist' => 'Altere motivo',
 'ipbreason-dropdown' => "*Motivos frequente pro blocar
 ** Insertion de informationes false
 ** Elimination de contento de paginas
@@ -2643,8 +2620,6 @@ specific que ha essite vandalisate).',
 'ipbsubmit' => 'Blocar iste usator',
 'ipbother' => 'Altere durata:',
 'ipboptions' => '2 horas:2 hours,1 die:1 day,3 dies:3 days,1 septimana:1 week,2 septimanas:2 weeks,1 mense:1 month,3 menses:3 months,6 menses:6 months,1 anno:1 year,infinite:infinite',
-'ipbotheroption' => 'altere',
-'ipbotherreason' => 'Motivo altere/additional:',
 'ipbhidename' => 'Celar le nomine del usator del modificationes e del listas',
 'ipbwatchuser' => 'Observar le paginas de usator e de discussion de iste usator',
 'ipb-disableusertalk' => 'Impedir iste usator de modificar su proprie pagina de discussion durante que ille es blocate',
@@ -2656,6 +2631,7 @@ specific que ha essite vandalisate).',
 Vide le [[Special:BlockList|lista de blocadas]] pro revider le blocadas.',
 'ipb-blockingself' => 'Tu sta super le puncto de blocar te mesme! Es tu secur de voler facer isto?',
 'ipb-confirmhideuser' => 'Tu es super le puncto de blocar un usator con le option "celar usator" activate. Isto supprimera le nomine del usator in tote le listas e entratas de registro. Es tu secur de voler facer isto?',
+'ipb-confirmaction' => 'Si tu es absolutemente secur de voler facer lo, marca le quadrato "{{int:ipb-confirm}}" al fundo.',
 'ipb-edit-dropdown' => 'Modificar le motivos pro blocar',
 'ipb-unblock-addr' => 'Disblocar $1',
 'ipb-unblock' => 'Disblocar un nomine de usator o un adresse IP',
@@ -2736,7 +2712,6 @@ Per favor contacta tu providitor de servicio internet o supporto technic e infor
 'sorbs_create_account_reason' => 'Tu adresse IP es listate como proxy aperte in le DNSBL usate per {{SITENAME}}.
 Tu non pote crear un conto',
 'xffblockreason' => 'Un adresse IP presente in le capite X-Forwarded-For, o le tue o illo de un servitor proxy que tu usa, ha essite blocate. Le motivo original pro le blocada es: $1',
-'cant-block-while-blocked' => 'Tu non pote blocar altere usatores durante que tu mesme es blocate.',
 'cant-see-hidden-user' => 'Le usator que tu tenta blocar ha ja essite blocate e celate. Post que tu non ha le derecto hideuser, tu non pote vider o modificar le blocada del usator.',
 'ipbblocked' => 'Tu non pote blocar o disblocar altere usatores, proque tu mesme es blocate',
 'ipbnounblockself' => 'Tu non ha le permission de disblocar te mesme',
@@ -2801,7 +2776,6 @@ per favor assecura te de haber comprendite le consequentias de isto ante de cont
 Il tal casos, tu debera renominar o fusionar le pagina manualmente si desirate.",
 'movearticle' => 'Renominar pagina:',
 'moveuserpage-warning' => "'''Attention:''' Tu es super le puncto de renominar un pagina de usator. Nota ben que solmente le pagina, e ''non'' le usator, essera renominate.",
-'movenologin' => 'Tu non ha aperite un session',
 'movenologintext' => 'Tu debe esser un usator registrate e [[Special:UserLogin|aperir un session]] pro poter renominar un pagina.',
 'movenotallowed' => 'Tu non ha le permission de renominar paginas.',
 'movenotallowedfile' => 'Tu non ha le permission de renominar files.',
@@ -2817,9 +2791,6 @@ Il tal casos, tu debera renominar o fusionar le pagina manualmente si desirate."
 'articleexists' => 'Un pagina con iste nomine ja existe, o le nomine seligite non es valide.
 Per favor selige un altere nomine.',
 'cantmove-titleprotected' => 'Tu non pote renominar un pagina a iste titulo, proque le nove titulo ha essite protegite contra creation',
-'talkexists' => "'''Le pagina mesme ha essite renominate con successo, ma su pagina de discussion non poteva esser renominate proque il ja existe un con le nove titulo.
-Per favor fusiona los manualmente.'''",
-'movedto' => 'renominate a',
 'movetalk' => 'Renominar le pagina de discussion associate',
 'move-subpages' => 'Renominar le subpaginas (usque a $1)',
 'move-talk-subpages' => 'Renominar le subpaginas del pagina de discussion (usque a $1)',
@@ -3053,6 +3024,7 @@ Per favor usa le previsualisation ante de publicar.',
 Es possibile adder un motivo in le summario.',
 'tooltip-preferences-save' => 'Confirmar preferentias',
 'tooltip-summary' => 'Entra un curte summario',
+'interlanguage-link-title' => '$1 (in $2)',
 
 # Stylesheets
 'common.css' => '/* Le CSS placiate hic se applicara a tote le stilos */',
@@ -3255,7 +3227,7 @@ Omne ligamines posterior in le mesme linea es considerate como exceptiones, i.e.
 Si le file ha essite modificate ab su stato original, es possibile que alcun detalios non reflecte completemente le file modificate.',
 'metadata-expand' => 'Revelar detalios extense',
 'metadata-collapse' => 'Celar detalios extense',
-'metadata-fields' => 'Le campos de metadatos de imagine listate in iste message essera includite in le visualisation del pagina de imagine quando le tabula de metadatos es plicate.
+'metadata-fields' => 'Le campos de metadatos de imagine listate in iste message essera includite in le visualisation del pagina de imagine quando le tabella de metadatos es plicate.
 Le alteres essera initialmente celate.
 * make
 * model
@@ -3660,15 +3632,10 @@ Le alteres essera initialmente celate.
 'exif-urgency-high' => 'Alte ($1)',
 'exif-urgency-other' => 'Prioritate definite per usator ($1)',
 
-# External editor support
-'edit-externally' => 'Modificar iste file con un programma externe',
-'edit-externally-help' => '(Vide le [https://www.mediawiki.org/wiki/Manual:External_editors instructiones de configuration] pro ulterior informationes)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totes',
 'namespacesall' => 'totes',
 'monthsall' => 'totes',
-'limitall' => 'totes',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar adresse de e-mail',
@@ -3693,7 +3660,6 @@ Es possibile que le codice ha expirate.',
 'confirmemail_success' => 'Tu adresse de e-mail ha essite confirmate.
 Tu pote ora aperir un session e fruer te del wiki.',
 'confirmemail_loggedin' => 'Tu adresse de e-mail ha ora essite confirmate.',
-'confirmemail_error' => 'Un problema occurreva durante le salveguarda de tu confirmation.',
 'confirmemail_subject' => 'Confirmation del adresse de e-mail pro {{SITENAME}}',
 'confirmemail_body' => 'Un persona, probabilemente tu, usante le adresse IP $1,
 ha create un conto "$2" con iste adresse de e-mail in {{SITENAME}}.
@@ -3774,6 +3740,11 @@ Per favor confirma que tu realmente vole recrear iste pagina.",
 'imgmultigo' => 'Ir!',
 'imgmultigoto' => 'Visitar pagina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(lingua predefinite)',
+'img-lang-info' => 'Presentar iste imagine in $1. $2',
+'img-lang-go' => 'Va',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -3852,7 +3823,17 @@ Tu pote etiam [[Special:EditWatchlist|usar le editor standard]].',
 'version-hook-name' => 'Nomine del uncino',
 'version-hook-subscribedby' => 'Subscribite per',
 'version-version' => '(Version $1)',
-'version-license' => 'Licentia',
+'version-license' => 'Licentia pro MediaWiki',
+'version-ext-license' => 'Licentia',
+'version-ext-colheader-name' => 'Extension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licentia',
+'version-ext-colheader-description' => 'Description',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licentia pro $1',
+'version-license-not-found' => 'Nulle information detaliate de licentia ha essite trovate pro iste extension.',
+'version-credits-title' => 'Recognoscentias pro $1',
+'version-credits-not-found' => 'Nulle information detaliate de recognoscentia ha essite trovate pro iste extension.',
 'version-poweredby-credits' => "Iste wiki es actionate per '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'alteres',
 'version-poweredby-translators' => 'Traductores de translatewiki.net',
@@ -3872,13 +3853,14 @@ Vos deberea haber recipite [{{SERVER}}{{SCRIPTPATH}}/COPYING un exemplar del Lic
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cammino al script]',
 
 # Special:Redirect
-'redirect' => 'Rediriger per nomine de file, ID de usator o ID de version',
+'redirect' => 'Rediriger per nomine de file, ID de usator, ID de pagina o ID de version',
 'redirect-legend' => 'Rediriger a un file o pagina',
-'redirect-summary' => 'Iste pagina special redirige a un file (si es date le nomine de un file), a un pagina (si es date un ID de version) o a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Iste pagina special redirige a un file (si es date le nomine de un file), a un pagina (si es date un ID de version o ID de pagina) o a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Va',
 'redirect-lookup' => 'Cercar:',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'ID de usator',
+'redirect-page' => 'ID del pagina',
 'redirect-revision' => 'Version de pagina',
 'redirect-file' => 'Nomine de file',
 'redirect-not-exists' => 'Valor non trovate',
@@ -3945,7 +3927,6 @@ Vos deberea haber recipite [{{SERVER}}{{SCRIPTPATH}}/COPYING un exemplar del Lic
 
 # Special:ComparePages
 'comparepages' => 'Comparar paginas',
-'compare-selector' => 'Comparar versiones de pagina',
 'compare-page1' => 'Pagina 1',
 'compare-page2' => 'Pagina 2',
 'compare-rev1' => 'Version 1',
@@ -4073,6 +4054,7 @@ Si non, tu pote usar le formulario facile hic infra. Tu commento essera addite a
 'api-error-overwrite' => 'Superscriber un file existente non es permittite.',
 'api-error-stashfailed' => 'Error interne: le servitor non poteva immagazinar le file temporari.',
 'api-error-publishfailed' => 'Error interne: le servitor non poteva publicar le file temporari.',
+'api-error-stasherror' => 'Un error ha occurrite durante le incargamento del file in "stash".',
 'api-error-timeout' => 'Le servitor non ha respondite intra le tempore expectate.',
 'api-error-unclassified' => 'Un error incognite ha occurrite.',
 'api-error-unknown-code' => 'Error incognite: "$1"',
@@ -4122,10 +4104,14 @@ De facto, illo expande quasi toto inter accolladas duple.',
 'expand_templates_input' => 'Texto de entrata:',
 'expand_templates_output' => 'Resultato',
 'expand_templates_xml_output' => 'Output XML',
+'expand_templates_html_output' => 'Resultato in HTML brute',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Eliminar commentos',
 'expand_templates_remove_nowiki' => 'Supprimer le etiquettas <nowiki> in le resultato',
 'expand_templates_generate_xml' => 'Monstrar arbore syntactic XML',
+'expand_templates_generate_rawhtml' => 'Monstrar HTML brute',
 'expand_templates_preview' => 'Previsualisation',
 
+# Unknown messages
+'uploadinvalidxml' => 'Le codice XML in le file incargate non pote esser interpretate.',
 );
index a691a9c..bbc3d70 100644 (file)
@@ -25,6 +25,7 @@
  * @author Iwan Novirion
  * @author J Subhi
  * @author Kaganer
+ * @author Kazu89
  * @author Kenrick95
  * @author Mahali syarifuddin
  * @author McDutchie
@@ -33,6 +34,7 @@
  * @author Remember the dot
  * @author Rex
  * @author Rv77ax
+ * @author StefanusRA
  * @author Urhixidur
  * @author William Surya Permana
  * @author לערי ריינהארט
@@ -135,7 +137,7 @@ $magicWords = array(
        'subjectpagename'           => array( '1', 'NAMAHALAMANUTAMA', 'NAMAHALAMANARTIKEL', 'NAMMANTAMA', 'NAMMANTIKEL', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
        'subjectpagenamee'          => array( '1', 'NAMAHALAMANUTAMAE', 'NAMAHALAMANARTIKELE', 'NAMMANTAMAE', 'NAMMANTIKELE', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
        'msg'                       => array( '0', 'PSN:', 'PESAN:', 'MSG:' ),
-       'subst'                     => array( '0', 'GNT:', 'GANTI:', 'SUBST:' ),
+       'subst'                     => array( '0', 'GNT:', 'GANTI:', 'TUKAR:', 'SUBST:' ),
        'msgnw'                     => array( '0', 'TPL:', 'MSGNW:' ),
        'img_thumbnail'             => array( '1', 'jmpl', 'jempol', 'mini', 'miniatur', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'jmpl=$1', 'jempol=$1', 'mini=$1', 'miniatur=$1', 'thumbnail=$1', 'thumb=$1' ),
@@ -145,8 +147,9 @@ $magicWords = array(
        'img_center'                => array( '1', 'pus', 'pusat', 'center', 'centre' ),
        'img_framed'                => array( '1', 'bing', 'bingkai', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'nirbing', 'tanpabingkai', 'frameless' ),
-       'img_page'                  => array( '1', 'hal=$1', 'halaman=$1', 'hal $1', 'halaman $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'lurus', 'lurus=$1', 'lurus $1', 'tegak', 'tegak=$1', 'tegak $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_lang'                  => array( '1', 'bhs=$1', 'lang=$1' ),
+       'img_page'                  => array( '1', 'hal=$1', 'halaman=$1', 'hal_$1', 'halaman_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'lurus', 'lurus=$1', 'lurus_$1', 'tegak', 'tegak=$1', 'tegak_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'tepi', 'batas', 'border' ),
        'img_baseline'              => array( '1', 'gada', 'garis_dasar', 'baseline' ),
        'img_sub'                   => array( '1', 'upa', 'sub' ),
@@ -164,8 +167,8 @@ $magicWords = array(
        'server'                    => array( '0', 'PELADEN', 'SERVER' ),
        'servername'                => array( '0', 'NAMAPELADEN', 'NAMASERVER', 'NAMPEL', 'SERVERNAME' ),
        'scriptpath'                => array( '0', 'LOKASISKRIP', 'SCRIPTPATH' ),
-       'grammar'                   => array( '0', 'TATABAHASA', 'TASA', 'GRAMMAR:' ),
-       'gender'                    => array( '0', 'JANTINA', 'GENDER:' ),
+       'grammar'                   => array( '0', 'TATABAHASA:', 'TASA:', 'GRAMMAR:' ),
+       'gender'                    => array( '0', 'JANTINA:', 'GENDER:' ),
        'notitleconvert'            => array( '0', '__TANPAKONVERSIJUDUL__', '__NIRKODUL__', '__NOTITLECONVERT__', '__NOTC__' ),
        'nocontentconvert'          => array( '0', '__TANPAKONVERSIISI__', '__NIRKOSI__', '__NOCONTENTCONVERT__', '__NOCC__' ),
        'currentweek'               => array( '1', 'MINGGUKINI', 'MIKIN', 'CURRENTWEEK' ),
@@ -218,6 +221,9 @@ $magicWords = array(
        'staticredirect'            => array( '1', '__PENGALIHANSTATIK__', '__PENGALIHANSTATIS__', '__PETIK__', '__PETIS__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'TINGKATPERLINDUNGAN', 'TIPER', 'PROTECTIONLEVEL' ),
        'formatdate'                => array( '0', 'formattanggal', 'formatdate', 'dateformat' ),
+       'pagesincategory_all'       => array( '0', 'semua', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'halaman', 'pages' ),
+       'pagesincategory_files'     => array( '0', 'berkas', 'files' ),
 );
 
 $specialPageAliases = array(
@@ -228,7 +234,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Judul_yang_buruk' ),
        'Blankpage'                 => array( 'Halaman_kosong', 'HalamanKosong' ),
        'Block'                     => array( 'Blokir_pengguna', 'BlokirPengguna' ),
-       'Blockme'                   => array( 'Blokir_saya', 'BlokirSaya' ),
        'Booksources'               => array( 'Sumber_buku', 'SumberBuku' ),
        'BrokenRedirects'           => array( 'Pengalihan_rusak', 'PengalihanRusak' ),
        'Categories'                => array( 'Daftar_kategori', 'DaftarKategori', 'Kategori' ),
@@ -240,10 +245,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Buat_akun', 'BuatAkun' ),
        'Deadendpages'              => array( 'Halaman_buntu', 'HalamanBuntu' ),
        'DeletedContributions'      => array( 'Kontribusi_yang_dihapus', 'KontribusiDihapus' ),
-       'Disambiguations'           => array( 'Disambiguasi' ),
        'DoubleRedirects'           => array( 'Pengalihan_ganda', 'PengalihanGanda' ),
        'EditWatchlist'             => array( 'Sunting_daftar_pantauan' ),
        'Emailuser'                 => array( 'Surel_pengguna', 'SurelPengguna' ),
+       'ExpandTemplates'           => array( 'Kembangkan_templat', 'KembangkanTemplat' ),
        'Export'                    => array( 'Ekspor_halaman', 'Ekspor' ),
        'Fewestrevisions'           => array( 'Perubahan_tersedikit', 'PerubahanTersedikit' ),
        'FileDuplicateSearch'       => array( 'Pencarian_berkas_duplikat', 'PencarianBerkasDuplikat' ),
@@ -286,6 +291,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Halaman_yang_dilindungi', 'HalamanDilindungi' ),
        'Protectedtitles'           => array( 'Judul_yang_dilindungi', 'JudulDilindungi' ),
        'Randompage'                => array( 'Halaman_sembarang', 'HalamanSembarang' ),
+       'RandomInCategory'          => array( 'Sembarang_di_kategori', 'SembarangDiKategori' ),
        'Randomredirect'            => array( 'Pengalihan_sembarang', 'PengalihanSembarang' ),
        'Recentchanges'             => array( 'Perubahan_terbaru', 'PerubahanTerbaru', 'RC', 'PT' ),
        'Recentchangeslinked'       => array( 'Perubahan_terkait', 'PerubahanTerkait' ),
@@ -362,7 +368,6 @@ $messages = array(
 'tog-minordefault' => 'Tandai semua suntingan sebagai suntingan kecil secara baku',
 'tog-previewontop' => 'Perlihatkan pratayang sebelum kotak sunting dan tidak sesudahnya',
 'tog-previewonfirst' => 'Perlihatkan pratayang pada suntingan pertama',
-'tog-nocache' => 'Nonaktifkan penyinggahan halaman peramban',
 'tog-enotifwatchlistpages' => 'Kirimkan saya surel jika suatu halaman yang saya pantau berubah',
 'tog-enotifusertalkpages' => 'Kirimkan saya surel jika halaman pembicaraan saya berubah',
 'tog-enotifminoredits' => 'Kirimkan saya surel juga pada perubahan kecil',
@@ -499,7 +504,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Halaman ini',
 'qbmyoptions' => 'Halaman saya',
-'qbspecialpages' => 'Halaman istimewa',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -620,8 +624,8 @@ $1',
 'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
 'youhavenewmessagesfromusers' => 'Anda memiliki $1 dari {{PLURAL:$3|$3 pengguna lain}} ($2).',
 'youhavenewmessagesmanyusers' => 'Anda memiliki $1 dari pengguna lain ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|pesan baru}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan}} terakhir',
+'newmessageslinkplural' => '{{PLURAL:$1|pesan baru|pesan baru}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|999=perubahan}} terakhir',
 'youhavenewmessagesmulti' => 'Anda mendapat pesan baru pada $1',
 'editsection' => 'sunting',
 'editold' => 'sunting',
@@ -716,7 +720,6 @@ Tidak ada keterangan.',
 'perfcached' => 'Data berikut ini diambil dari singgahan dan mungkin bukan data mutakhir. {{PLURAL:$1||}}$1 hasil maksimal tersedia di tembolok.',
 'perfcachedts' => 'Data berikut ini diambil dari singgahan dan terakhir diperbarui pada $1. {{PLURAL:$1||}}$1 hasil maksimal tersedia di tembolok.',
 'querypage-no-updates' => 'Pemutakhiran dari halaman ini sedang dimatikan. Data yang ada di sini saat ini tidak akan dimuat ulang.',
-'wrong_wfQuery_params' => 'Parameter salah ke wfQuery()<br />Fungsi: $1<br />Permintaan: $2',
 'viewsource' => 'Lihat sumber',
 'viewsource-title' => 'Lihat sumber untuk $1',
 'actionthrottled' => 'Tindakan dibatasi',
@@ -745,7 +748,8 @@ Administrator yang terkunci menawarkan penjelasan ini: " $3 ".',
 'invalidtitle-knownnamespace' => 'Judul yang tidak sah dengan ruangnama "$2" dan teks "$3"',
 'invalidtitle-unknownnamespace' => 'Judul yang tidak sah dengan nomor ruang nama tidak diketahui $1 dan teks "$2"',
 'exception-nologin' => 'Belum masuk log',
-'exception-nologin-text' => 'Halaman atau tindakan ini mengharuskan Anda masuk log di wiki ini.',
+'exception-nologin-text' => 'Harap [[Special:Userlogin|masuk log]] untuk dapat mengakses halaman atau tindakan ini.',
+'exception-nologin-text-manual' => 'Silakan $1 untuk dapat mengakses halaman atau tindakan ini.',
 
 # Virus scanner
 'virus-badscanner' => "Kesalahan konfigurasi: pemindai virus tidak dikenal: ''$1''",
@@ -791,7 +795,7 @@ Ingatlah bahwa beberapa halaman mungkin masih menampilkan anda seperti masih mas
 'gotaccount' => "Sudah terdaftar sebagai pengguna? '''$1'''.",
 'gotaccountlink' => 'Masuk log',
 'userlogin-resetlink' => 'Lupa detail info masuk Anda?',
-'userlogin-resetpassword-link' => 'Buat ulang kata sandi',
+'userlogin-resetpassword-link' => 'Lupa kata sandi?',
 'helplogin-url' => 'Help:Masuk log',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Bantuan masuk log]]',
 'userlogin-loggedin' => 'Andan telah masuk log sebagai $1.
@@ -842,7 +846,7 @@ Silakan periksa kembali ejaan Anda.',
 'passwordtooshort' => 'Kata sandi paling tidak harus terdiri dari {{PLURAL:$1|1 karakter|$1 karakter}}.',
 'password-name-match' => 'Kata sandi Anda harus berbeda dari nama pengguna Anda.',
 'password-login-forbidden' => 'Penggunaan nama pengguna dan sandi ini telah dilarang.',
-'mailmypassword' => 'Kirim kata sandi baru',
+'mailmypassword' => 'Setel ulang kata sandi',
 'passwordremindertitle' => 'Peringatan kata sandi dari {{SITENAME}}',
 'passwordremindertext' => 'Seseorang (mungkin Anda, dari alamat IP $1) meminta kata sandi baru untuk {{SITENAME}} ($4). Kata sandi sementara untuk pengguna "$2" telah dibuatkan dan diset menjadi "$3". Jika memang Anda yang mengajukan permintaan ini, Anda perlu masuk log dan memilih kata sandi baru sekarang. Kata sandi sementara Anda akan kedaluwarsa dalam waktu {{PLURAL:$5|satu hari|$5 hari}}.
 
@@ -852,8 +856,7 @@ Jika orang lain yang melakukan permintaan ini, atau jika Anda telah mengingat ka
 'passwordsent' => 'Kata sandi baru telah dikirimkan ke alamat surel yang didaftarkan untuk "$1".
 Silakan masuk log kembali setelah menerima surel tersebut.',
 'blocked-mailpassword' => 'Alamat IP Anda diblokir dari penyuntingan dan karenanya tidak diizinkan menggunakan fungsi pengingat kata sandi untuk mencegah penyalahgunaan.',
-'eauthentsent' => 'Sebuah surel untuk konfirmasi telah dikirim ke alamat surel.
-Anda harus mengikuti instruksi di dalam surel tersebut untuk melakukan konfirmasi bahwa alamat tersebut adalah benar kepunyaan Anda. {{SITENAME}} tidak akan mengaktifkan fitur surel jika langkah ini belum dilakukan.',
+'eauthentsent' => 'Sebuah surel untuk konfirmasi telah dikirim ke alamat surel. Sebelum surel lainnya dikirim ke akun tersebut, Anda harus mengikuti instruksi di dalam surel tersebut, untuk melakukan konfirmasi bahwa alamat tersebut adalah benar kepunyaan Anda.',
 'throttled-mailpassword' => 'Suatu pengingat kata sandi telah dikirimkan dalam {{PLURAL:$1|$1 jam}} terakhir.
 Untuk menghindari penyalahgunaan, hanya satu kata sandi yang akan dikirimkan setiap {{PLURAL:$1|$1 jam}}.',
 'mailerror' => 'Kesalahan dalam mengirimkan surel: $1',
@@ -875,7 +878,7 @@ Harap masukkan alamat surel dalam format yang benar atau kosongkan isian tersebu
 Anda dapat mengabaikan pesan ini jika akun ini dibuat karena suatu kesalahan.',
 'usernamehasherror' => 'Nama pengguna tidak bisa mengandung tanda pagar',
 'login-throttled' => 'Anda sudah terlalu sering mencoba masuk log.
-Silakan menunggu sebelum mencoba lagi.',
+Silakan menunggu $1 sebelum mencoba lagi.',
 'login-abort-generic' => 'Proses masuk Anda tidak berhasil - Dibatalkan',
 'loginlanguagelabel' => 'Bahasa: $1',
 'suspicious-userlogout' => 'Permintaan Anda untuk keluar log ditolak karena tampaknya dikirim oleh penjelajah yang rusak atau proksi penyinggah.',
@@ -888,7 +891,7 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'user-mail-no-body' => 'Mencoba untuk mengirim surel kosong atau terlalu pendek.',
 
 # Change password dialog
-'resetpass' => 'Ganti kata sandi',
+'changepassword' => 'Ganti kata sandi',
 'resetpass_announce' => 'Anda telah masuk log dengan kode sementara yang dikirim melalui surel. Untuk melanjutkan, Anda harus memasukkan kata sandi baru di sini:',
 'resetpass_text' => '<!-- Tambahkan teks di sini -->',
 'resetpass_header' => 'Ganti kata sandi akun',
@@ -909,7 +912,7 @@ Anda mungkin telah berhasil mengganti kata sandi Anda atau telah meminta kata sa
 # Special:PasswordReset
 'passwordreset' => 'Setel ulang kata sandi',
 'passwordreset-text-one' => 'Lengkapi formulir ini untuk menyetel ulang kata sandi.',
-'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu kotak di bawah ini untuk menyetel ulang kata sandi Anda.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu kotak di bawah ini untuk mendapatkan kata sandi sementara melalui surel.}}',
 'passwordreset-legend' => 'Setel ulang kata sandi',
 'passwordreset-disabled' => 'Penyetelan ulang sandi telah dimatikan di wiki ini.',
 'passwordreset-emaildisabled' => 'Fitur surel telah dinonaktifkan pada wiki ini.',
@@ -1280,10 +1283,6 @@ Sebagai seorang pengurus, Anda dapat melihat perbedaan ini; detail mungkin terse
 'revisiondelete' => 'Hapus/batal hapus revisi',
 'revdelete-nooldid-title' => 'Target revisi tak ditemukan',
 'revdelete-nooldid-text' => 'Anda belum memberikan target revisi untuk menjalankan fungsi ini.',
-'revdelete-nologtype-title' => 'Tipe log tak diberikan',
-'revdelete-nologtype-text' => 'Anda tidak memberikan suatu tipe log untuk menerapkan tindakan ini.',
-'revdelete-nologid-title' => 'Entri log tak valid',
-'revdelete-nologid-text' => 'Anda mungkin tidak menyebutkan suatu log target peristiwa untuk menjalankan fungsi ini atau entri yang dimaksud tidak ditemukan.',
 'revdelete-no-file' => 'Berkas yang dituju tidak ditemukan.',
 'revdelete-show-file-confirm' => 'Apakah Anda yakin ingin melihat revisi yang telah dihapus dari berkas "<nowiki>$1</nowiki>" per $3, $2?',
 'revdelete-show-file-submit' => 'Ya',
@@ -1293,18 +1292,19 @@ Sebagai seorang pengurus, Anda dapat melihat perbedaan ini; detail mungkin terse
 Pengurus {{SITENAME}} lain akan tetap dapat mengakses isi yang tersembunyi ini dan dapat membatalkan penghapusannya menggunakan antarmuka yang sama, kecuali ada pembatasan lain yang dibuat oleh operator situs.",
 'revdelete-confirm' => 'Tolong konfirmasi bahwa Anda memang bermaksud melakukan ini, memahami konsekuensinya, dan bahwa Anda melakukannya sesuai dengan [[{{MediaWiki:Policy-url}}|kebijakan]].',
 'revdelete-suppress-text' => "Penyembunyian revisi '''hanya''' boleh digunakan untuk kasus-kasus berikut:
+* Informasi yang berpotensi memfitnah
 * Informasi pribadi yang tak sepantasnya
 *: ''alamat rumah dan nomor telepon, nomor kartu identitas, dan lain-lain.''",
 'revdelete-legend' => 'Atur batasan:',
-'revdelete-hide-text' => 'Sembunyikan teks revisi',
+'revdelete-hide-text' => 'Teks revisi',
 'revdelete-hide-image' => 'Sembunyikan isi berkas',
 'revdelete-hide-name' => 'Sembunyikan tindakan dan target',
-'revdelete-hide-comment' => 'Sembunyikan ringkasan suntingan',
-'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
+'revdelete-hide-comment' => 'Ringkasan suntingan',
+'revdelete-hide-user' => 'Nama pengguna/alamat IP penyunting',
 'revdelete-hide-restricted' => 'Sembunyikan data dari opsis juga',
 'revdelete-radio-same' => '(jangan diubah)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Tidak',
+'revdelete-radio-set' => 'Tersembunyikan',
+'revdelete-radio-unset' => 'Terlihat',
 'revdelete-suppress' => 'Sembunyikan juga dari pengurus',
 'revdelete-unsuppress' => 'Hapus batasan pada revisi yang dikembalikan',
 'revdelete-log' => 'Alasan:',
@@ -1316,8 +1316,6 @@ $1",
 'logdelete-failure' => "'''Aturan penyembunyian tidak dapat diterapkan:'''
 $1",
 'revdel-restore' => 'Ubah tampilan',
-'revdel-restore-deleted' => 'Suntingan yang telah dihapus',
-'revdel-restore-visible' => 'tampilan revisi',
 'pagehist' => 'Versi terdahulu halaman',
 'deletedhist' => 'Sejarah yang dihapus',
 'revdelete-hide-current' => 'Gagal menyembunyikan revisi tertanggal $2, $1: ini adalah revisi terkini.
@@ -1396,12 +1394,8 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 # Search results
 'searchresults' => 'Hasil pencarian',
 'searchresults-title' => 'Hasil pencarian untuk "$1"',
-'searchresulttext' => 'Untuk informasi lebih lanjut tentang pencarian di {{SITENAME}}, lihat [[{{MediaWiki:Helppage}}|halaman bantuan]].',
-'searchsubtitle' => 'Anda mencari \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|semua halaman yang dimulai dengan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|semua halaman yang terpaut ke "$1"]])',
-'searchsubtitleinvalid' => "Anda mencari '''$1'''",
 'toomanymatches' => 'Pencarian menghasilkan terlalu banyak hasil, silakan masukkan kueri lain',
 'titlematches' => 'Judul halaman yang sama',
-'notitlematches' => 'Tidak ada judul halaman yang cocok',
 'textmatches' => 'Teks halaman yang cocok',
 'notextmatches' => 'Tidak ada teks halaman yang cocok',
 'prevn' => '{{PLURAL:$1|$1}} sebelumnya',
@@ -1410,10 +1404,8 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'nextn-title' => '$1 {{PLURAL:$1|hasil|hasil}} selanjutnya',
 'shown-title' => 'Tampilkan $1 {{PLURAL:$1|hasil|hasil}} per halaman',
 'viewprevnext' => 'Lihat ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opsi pencarian',
 'searchmenu-exists' => "* Halaman '''[[$1]]'''",
 'searchmenu-new' => "'''Buat halaman \"[[:\$1]]\" di wiki ini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Lihat daftar halaman dengan awalan ini]]',
 'searchprofile-articles' => 'Halaman isi',
 'searchprofile-project' => 'Halaman Bantuan dan Proyek',
 'searchprofile-images' => 'Berkas Multimedia',
@@ -1434,20 +1426,16 @@ Rinciannya dapat ditemukan di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'search-interwiki-default' => 'Hasil $1:',
 'search-interwiki-more' => '(selanjutnya)',
 'search-relatedarticle' => 'Berkaitan',
-'mwsuggest-disable' => 'Non-aktifkan saran pencarian',
 'searcheverything-enable' => 'Cari di semua ruang nama',
 'searchrelated' => 'berkaitan',
 'searchall' => 'semua',
 'showingresults' => "Di bawah ini ditampilkan hingga {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimulai dari #'''$2'''.",
 'showingresultsnum' => "Di bawah ini ditampilkan {{PLURAL:$3|'''1'''|'''$3'''}} hasil, dimulai dari #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' dari '''$3'''|Hasil '''$1 - $2''' dari '''$3'''}} untuk '''$4'''",
-'nonefound' => "'''Catatan''': Hanya beberapa ruang nama yang secara baku dimasukkan dalam pencarian. Coba awali permintaan Anda dengan ''all:'' untuk mencari semua isi (termasuk halaman pembicaraan, templat, dll), atau gunakan ruang nama yang diinginkan sebagai awalan.",
 'search-nonefound' => 'Tidak ada hasil yang sesuai dengan kriteria.',
-'powersearch' => 'Pencarian lanjut',
 'powersearch-legend' => 'Pencarian lanjut',
 'powersearch-ns' => 'Mencari di ruang nama:',
 'powersearch-redir' => 'Daftar pengalihan',
-'powersearch-field' => 'Mencari',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Semua',
 'powersearch-togglenone' => 'Tidak ada',
@@ -1461,7 +1449,7 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
 'preferences' => 'Preferensi',
 'mypreferences' => 'Preferensi',
 'prefs-edits' => 'Jumlah suntingan:',
-'changepassword' => 'Ganti kata sandi',
+'prefsnologintext2' => 'Silakan $1 untuk mengubah preferensi Anda.',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratayang',
 'datedefault' => 'Tak ada preferensi',
@@ -1484,13 +1472,11 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
 'prefs-email' => 'Opsi surel',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Batalkan perubahan',
 'restoreprefs' => 'Kembalikan semua setelan bawaan',
 'prefs-editing' => 'Penyuntingan',
 'rows' => 'Baris:',
 'columns' => 'Kolom:',
 'searchresultshead' => 'Cari',
-'resultsperpage' => 'Hasil per halaman:',
 'stub-threshold' => 'Ambang batas untuk format <a href="#" class="stub">pranala rintisan</a>:',
 'stub-threshold-disabled' => 'Dinonaktifkan',
 'recentchangesdays' => 'Jumlah hari yang ditampilkan di perubahan terbaru:',
@@ -1505,7 +1491,6 @@ Siapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagi
 'localtime' => 'Waktu setempat:',
 'timezoneuseserverdefault' => 'Gunakan bawaan wiki ($1)',
 'timezoneuseoffset' => 'Lainnya (tentukan perbedaannya)',
-'timezoneoffset' => 'Perbedaan¹:',
 'servertime' => 'Waktu server:',
 'guesstimezone' => 'Isikan dari penjelajah web',
 'timezoneregion-africa' => 'Afrika',
@@ -1576,6 +1561,7 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'prefs-tokenwatchlist' => 'Tanda',
 'prefs-diffs' => 'Beda',
 'prefs-help-prefershttps' => 'Preferensi ini akan diaktifkan kali berikutnya Anda masuk log.',
+'prefs-tabs-navigation-hint' => 'Tip: Anda dapat menggunakan tombol panah kiri dan kanan untuk bernavigasi antartab di dalam daftar tab.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Alamat surel tampaknya sah',
@@ -1604,7 +1590,7 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'userrights-changeable-col' => 'Kelompok yang dapat Anda ubah',
 'userrights-unchangeable-col' => 'Kelompok yang tidak dapat Anda ubah',
 'userrights-irreversible-marker' => '$1*',
-'userrights-conflict' => 'Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan anda.',
+'userrights-conflict' => 'Konflik perubahan hak pengguna! Silakan tinjau ulang dan konfirmasi perubahan Anda.',
 'userrights-removed-self' => 'Anda berhasil mencabut hak-hak Anda. Anda tidak bisa lagi mengakses halaman ini.',
 
 # Groups
@@ -1764,13 +1750,13 @@ Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan
 'recentchanges-label-minor' => 'Ini adalah suntingan kecil',
 'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
 'recentchanges-label-unpatrolled' => 'Suntingan ini belum terpatroli',
-'recentchanges-legend-newpage' => '$1 - halaman baru',
-'rcnote' => "Berikut adalah {{PLURAL:$1|'''1'''|'''$1'''}} perubahan terbaru dalam {{PLURAL:$2|'''1''' hari|'''$2''' hari}} terakhir, sampai $4 pukul $5.",
+'recentchanges-label-plusminus' => 'Perubahan ukuran halaman dalam bita',
+'recentchanges-legend-newpage' => '(lihat pula [[Special:NewPages|daftar halaman baru]])',
 'rcnotefrom' => 'Di bawah ini adalah perubahan sejak <strong>$2</strong> (ditampilkan sampai <strong>$1</strong> perubahan).',
 'rclistfrom' => 'Perlihatkan perubahan terbaru sejak $1',
 'rcshowhideminor' => '$1 suntingan kecil',
 'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 pengguna masuk log',
+'rcshowhideliu' => '$1 pengguna-pengguna terdaftar',
 'rcshowhideanons' => '$1 pengguna anon',
 'rcshowhidepatr' => '$1 suntingan terpatroli',
 'rcshowhidemine' => '$1 suntingan saya',
@@ -2226,6 +2212,7 @@ Nama yang telah <del>dicoret</del> berarti telah dibetulkan.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|pranala|pranala}}',
 'nmembers' => '$1 {{PLURAL:$1|isi|isi}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|anggota|anggota}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisi|revisi}}',
 'nviews' => 'dilihat $1 {{PLURAL:$1|kali|kali}}',
 'nimagelinks' => 'Digunakan pada $1 {{PLURAL:$1|halaman|halaman}}',
@@ -2264,10 +2251,8 @@ Nama yang telah <del>dicoret</del> berarti telah dibetulkan.',
 'protectedpages' => 'Halaman yang dilindungi',
 'protectedpages-indef' => 'Hanya untuk pelindungan dengan jangka waktu tak terbatas',
 'protectedpages-cascade' => 'Hanya pelindungan runtun',
-'protectedpagestext' => 'Halaman-halaman berikut dilindungi dari pemindahan atau penyuntingan.',
 'protectedpagesempty' => 'Saat ini tidak ada halaman yang sedang dilindungi dengan parameter-parameter tersebut.',
 'protectedtitles' => 'Judul yang dilindungi',
-'protectedtitlestext' => 'Judul berikut ini dilindungi dari pembuatan',
 'protectedtitlesempty' => 'Tidak ada judul yang dilindungi.',
 'listusers' => 'Daftar pengguna',
 'listusers-editsonly' => 'Tampilkan hanya pengguna yang memiliki kontribusi',
@@ -2320,9 +2305,6 @@ Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna
 'allpagesto' => 'Tampilkan halaman hingga:',
 'allarticles' => 'Semua halaman',
 'allinnamespace' => 'Daftar halaman (ruang nama $1)',
-'allnotinnamespace' => 'Daftar halaman (bukan ruang nama $1)',
-'allpagesprev' => 'Sebelumnya',
-'allpagesnext' => 'Selanjutnya',
 'allpagessubmit' => 'Lanjut',
 'allpagesprefix' => 'Tampilkan halaman dengan awalan:',
 'allpagesbadtitle' => 'Judul halaman yang diberikan tidak sah atau memiliki awalan antar-bahasa atau antar-wiki. Judul tersebut mungkin juga mengandung satu atau lebih aksara yang tidak dapat digunakan dalam judul.',
@@ -2653,7 +2635,6 @@ Alasan penghapusan diberikan pada ringkasan di bawah ini, berikut rincian penggu
 'undeletebtn' => 'Kembalikan',
 'undeletelink' => 'lihat/kembalikan',
 'undeleteviewlink' => 'lihat',
-'undeletereset' => 'Reset',
 'undeleteinvert' => 'Balikkan pilihan',
 'undeletecomment' => 'Alasan:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|revisi|revisi}} telah dikembalikan',
@@ -2681,7 +2662,6 @@ Lihat [[Special:Log/delete|log penghapusan]] untuk data penghapusan dan pengemba
 $1',
 'undelete-show-file-confirm' => 'Apakah Anda yakin ingin melihat revisi yang telah dihapus dari berkas "<nowiki>$1</nowiki>" per $3, $2?',
 'undelete-show-file-submit' => 'Ya',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Ruang nama:',
@@ -2742,7 +2722,6 @@ Catatan log pemblokiran terakhir tersedia di bawah ini sebagai rujukan:',
 'block' => 'Blokir pengguna',
 'unblock' => 'Buka blokir pengguna',
 'blockip' => 'Blokir pengguna',
-'blockip-title' => 'Blokir pengguna',
 'blockip-legend' => 'Blokir pengguna',
 'blockiptext' => 'Gunakan formulir di bawah untuk memblokir akses penulisan dari sebuah alamat IP atau pengguna tertentu.
 Ini hanya boleh dilakukan untuk mencegah vandalisme, dan sejalan dengan [[{{MediaWiki:Policy-url}}|kebijakan]].
@@ -2750,7 +2729,6 @@ Masukkan alasan Anda di bawah (contoh, menuliskan nama halaman yang telah divand
 'ipadressorusername' => 'Alamat IP atau nama pengguna:',
 'ipbexpiry' => 'Kedaluwarsa:',
 'ipbreason' => 'Alasan:',
-'ipbreasonotherlist' => 'Alasan lain',
 'ipbreason-dropdown' => '*Alasan umum
 ** Vandalisme
 ** Memberikan informasi palsu
@@ -2767,8 +2745,6 @@ Masukkan alasan Anda di bawah (contoh, menuliskan nama halaman yang telah divand
 'ipbsubmit' => 'Blokir pengguna ini',
 'ipbother' => 'Waktu lain:',
 '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,selamanya:infinite',
-'ipbotheroption' => 'lainnya',
-'ipbotherreason' => 'Alasan lain/tambahan:',
 'ipbhidename' => 'Sembunyikan nama pengguna dari suntingan dan daftar',
 'ipbwatchuser' => 'Pantau halaman pengguna dan pembicaraan pengguna ini',
 'ipb-disableusertalk' => 'Cegah pengguna ini untuk menyunting halaman pembicaraannya saat diblokir',
@@ -2857,7 +2833,6 @@ Lihat [[Special:BlockList|daftar pemblokiran]] untuk semua pengguna yang saat in
 'sorbsreason' => 'Alamat IP anda terdaftar sebagai proxy terbuka di DNSBL.',
 'sorbs_create_account_reason' => 'Alamat IP anda terdaftar sebagai proxy terbuka di DNSBL. Anda tidak dapat membuat akun.',
 'xffblockreason' => 'Sebuah alamat IP di kepala X-Forwarded-For, entah milik Anda atau server proxy yang Anda pakai, telah diblokir. Alasan pemblokirannya adalah: $1',
-'cant-block-while-blocked' => 'Anda tidak dapat memblokir pengguna lain ketika Anda sendiri sedang diblokir.',
 'cant-see-hidden-user' => 'Pengguna yang anda coba blokir telah di blokir dan di sembunyikan. Selama anda tidak memiliki hak sembunyikan pengguna, anda tidak dapat melihat atau menyunting pemblokiran pengguna ini.',
 'ipbblocked' => 'Anda tidak dapat memblokir atau membuka blokir pengguna lain, karena anda sendiri diblokir',
 'ipbnounblockself' => 'Anda tidak diizinkan untuk membuka blokir sendiri',
@@ -2915,7 +2890,6 @@ Pastikan Anda mengerti konsekuensi dari perbuatan ini sebelum melanjutkan.",
 Dalam kasus tersebut, apabila diinginkan, Anda dapat memindahkan atau menggabungkan halaman secara manual.",
 'movearticle' => 'Pindahkan halaman:',
 'moveuserpage-warning' => "'''Peringatan:''' Anda tengah memindahkan halaman pengguna. Perlu diketahui bahwa hanya halaman yang akan dipindahkan namun pengguna ''tidak akan'' berganti nama.",
-'movenologin' => 'Belum masuk log',
 'movenologintext' => 'Anda harus menjadi pengguna terdaftar dan telah [[Special:UserLogin|masuk log]] untuk dapat memindahkan suatu halaman.',
 'movenotallowed' => 'Anda tak memiliki hak akses untuk memindahkan halaman.',
 'movenotallowedfile' => 'Anda tak memiliki hak untuk memindahkan berkas.',
@@ -2930,8 +2904,6 @@ Dalam kasus tersebut, apabila diinginkan, Anda dapat memindahkan atau menggabung
 'movepage-moved-noredirect' => 'Pengalihan tidak dibuat.',
 'articleexists' => 'Halaman dengan nama tersebut telah ada atau nama yang dipilih tidak sah. Silakan pilih nama lain.',
 'cantmove-titleprotected' => 'Anda tidak dapat memindahkan halaman ke lokasi ini, karena judul tujuan sedang dilindungi dari pembuatan',
-'talkexists' => 'Halaman tersebut berhasil dipindahkan, tetapi halaman pembicaraan dari halaman tersebut tidak dapat dipindahkan karena telah ada halaman pembicaraan pada judul yang baru. Silakan gabungkan halaman-halaman pembicaraan tersebut secara manual.',
-'movedto' => 'dipindahkan ke',
 'movetalk' => 'Pindahkan halaman pembicaraan yang terkait',
 'move-subpages' => 'Pindahkan subhalaman (sampai $1)',
 'move-talk-subpages' => 'Pindahkan semua subhalaman pembicaraan (sampai $1)',
@@ -3228,6 +3200,7 @@ Masukan ini '''DILARANG'''!",
 'pageinfo-length' => 'Panjang halaman (dalam bita)',
 'pageinfo-article-id' => 'ID Halaman',
 'pageinfo-language' => 'Bahasa isi halaman',
+'pageinfo-content-model' => 'Model isi halaman',
 'pageinfo-robot-policy' => 'Pengindeksan oleh robot',
 'pageinfo-robot-index' => 'Diperbolehkan',
 'pageinfo-robot-noindex' => 'Tidak diperbolehkan',
@@ -3316,7 +3289,7 @@ Jika dijalankan, sistem Anda akan berisiko terserang.",
 'svg-long-desc' => 'Berkas SVG, nominal $1 × $2 piksel, besar berkas: $3',
 'svg-long-desc-animated' => 'Berkas SVG animasi, biasanya $1 x $2 piksel, ukuran gambar: $3',
 'svg-long-error' => 'Berkas SVG tidak sah: $1',
-'show-big-image' => 'Resolusi penuh',
+'show-big-image' => 'Ukuran asli',
 'show-big-image-preview' => 'Ukuran pratayang ini: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Resolusi|Resolusi}} lain: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
@@ -3858,15 +3831,10 @@ $8',
 'exif-urgency-high' => 'Tinggi ($1)',
 'exif-urgency-other' => 'Prioritas ubahsuaian ($1)',
 
-# External editor support
-'edit-externally' => 'Sunting berkas ini dengan aplikasi luar',
-'edit-externally-help' => '(Lihat [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuk informasi lebih lanjut)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'semua',
 'namespacesall' => 'semua',
 'monthsall' => 'semua',
-'limitall' => 'semua',
 
 # Email address confirmation
 'confirmemail' => 'Konfirmasi alamat surel',
@@ -3887,7 +3855,6 @@ Aplikasi pengiriman surel menginformasikan: $1',
 'confirmemail_success' => 'Alamat surel Anda telah dikonfirmasi.
 Sekarang Anda dapat [[Special:UserLogin|masuk log]] dan mulai menggunakan wiki.',
 'confirmemail_loggedin' => 'Alamat surel Anda telah dikonfirmasi.',
-'confirmemail_error' => 'Terjadi kesalahan sewaktu menyimpan konfirmasi Anda.',
 'confirmemail_subject' => 'Konfirmasi alamat surel {{SITENAME}}',
 'confirmemail_body' => 'Seseorang, mungkin Anda, dari alamat IP $1, telah mendaftarkan akun "$2" dengan alamat surel ini di {{SITENAME}}.
 
@@ -3973,6 +3940,9 @@ Silakan konfirmasi jika Anda ingin membuat ulang halaman ini.",
 'imgmultigo' => 'Cari!',
 'imgmultigoto' => 'Pergi ke halaman $1',
 
+# Language selector for translatable SVGs
+'img-lang-go' => 'Tuju ke',
+
 # Table pager
 'ascending_abbrev' => 'naik',
 'descending_abbrev' => 'turun',
@@ -4118,7 +4088,7 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 # Special:Redirect
 'redirect' => 'Pengalihan oleh berkas, pengguna atau ID revisi',
 'redirect-legend' => 'Pengalihan ke sebuah berkas atau halaman',
-'redirect-summary' => 'Halaman istimewa ini beralih ke berkas (sesuai nama berkasnya), halaman (sesuai ID revisinya), atau halaman pengguna (sesuai ID numerik penggunanya).',
+'redirect-summary' => 'Halaman istimewa ini beralih ke berkas (sesuai nama berkasnya), halaman (sesuai ID revisinya), atau halaman pengguna (sesuai ID numerik penggunanya). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Lanjut',
 'redirect-lookup' => 'Pencarian:',
 'redirect-value' => 'Nilai:',
@@ -4140,9 +4110,9 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 
 # Special:SpecialPages
 'specialpages' => 'Halaman istimewa',
+'specialpages-note-top' => 'Keterangan',
 'specialpages-note' => '* Halaman istimewa normal.
-* <span class="mw-specialpagerestricted">Halaman istimewa terlarang.</span>
-* <span class="mw-specialpagecached">Halaman istimewa tersinggah (mungkin usang).</span>',
+* <span class="mw-specialpagerestricted">Halaman istimewa terlarang.</span>',
 'specialpages-group-maintenance' => 'Laporan pemeliharaan',
 'specialpages-group-other' => 'Lain-lain',
 'specialpages-group-login' => 'Masuk log / mendaftar',
@@ -4188,7 +4158,6 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 
 # Special:ComparePages
 'comparepages' => 'Bandingkan halaman',
-'compare-selector' => 'Bandingkan revisi halaman',
 'compare-page1' => 'Halaman 1',
 'compare-page2' => 'Halaman 2',
 'compare-rev1' => 'Revisi 1',
@@ -4330,8 +4299,8 @@ Jika tidak, Anda dapat menggunakan formulir mudah di bawah ini. Komentar Anda ak
 'duration-minutes' => '{{PLURAL:$1||}}$1 menit',
 'duration-hours' => '{{PLURAL:$1||}}$1 jam',
 'duration-days' => '{{PLURAL:$1||}}$1 hari',
-'duration-weeks' => '{{PLURAL: $1||}}$1 minggu',
-'duration-years' => '{{PLURAL: $1||}}$1 tahun',
+'duration-weeks' => '{{PLURAL:$1||}}$1 minggu',
+'duration-years' => '{{PLURAL:$1||}}$1 tahun',
 'duration-decades' => '{{PLURAL:$1||}}$1 dekade',
 'duration-centuries' => '{{PLURAL:$1||}}$1 abad',
 'duration-millennia' => '{{PLURAL:$1||}}$1 milenium',
index 2f9dd07..09e7fb7 100644 (file)
@@ -9,7 +9,9 @@
  *
  * @author Jmb
  * @author Kaganer
+ * @author Makuba
  * @author Malafaya
+ * @author Minisarm
  * @author Reedy
  * @author Remember the dot
  * @author Renan
@@ -43,7 +45,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Págines_antiqui' ),
        'Blankpage'                 => array( 'Págine_in_blanc' ),
        'Block'                     => array( 'Blocar', 'Blocar_IP', 'Blocar_usator' ),
-       'Blockme'                   => array( 'Blocar_in_mi_self' ),
        'Booksources'               => array( 'Fontes_de_libres' ),
        'BrokenRedirects'           => array( 'Redirectionmentes_ínperfect' ),
        'ChangePassword'            => array( 'Change_parol-clave' ),
@@ -53,7 +54,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_conto' ),
        'Deadendpages'              => array( 'Págines_moderat' ),
        'DeletedContributions'      => array( 'Contributiones_deletet' ),
-       'Disambiguations'           => array( 'Disambiguitones' ),
        'DoubleRedirects'           => array( 'Redirectionmentes_duplic' ),
        'EditWatchlist'             => array( 'Redacter_liste_de_págines_vigilat' ),
        'Emailuser'                 => array( 'Email_de_usator' ),
@@ -139,29 +139,30 @@ $messages = array(
 'tog-hideminor' => 'Ocultar redactiones minori in nov changes',
 'tog-hidepatrolled' => 'Ocultar redactiones vigilat in nov changes',
 'tog-newpageshidepatrolled' => 'Ocultar págines vigilat de liste de nov págines',
-'tog-usenewrc' => 'Usar nov changes augmentat (exige JavaScript)',
+'tog-extendwatchlist' => 'Expander li liste de vigilantie a omni changes, ne solmen li max nov',
+'tog-usenewrc' => 'Ordinar changes in «Recent changes» e li liste de vigila secun págines',
 'tog-numberheadings' => 'Auto-numerar rublicas',
-'tog-showtoolbar' => 'Monstrar barre de utensile de redaction (exige JavaScript)',
-'tog-editondblclick' => 'Redacter págines in clacca duplic (exige JavaScript)',
+'tog-showtoolbar' => 'Monstrar barre de redactional utensiles',
+'tog-editondblclick' => 'Redacter págines per duplic clacca',
 'tog-editsection' => 'Permisser redaction de division usant catenunes [redacter]',
-'tog-editsectiononrightclick' => 'Permisser redaction de division per clacca dextri in titules de division (exige JavaScript)',
+'tog-editsectiononrightclick' => 'Redacter singul sectiones per dextri clacca',
 'tog-showtoc' => 'Monstrar tabelle de contenetes (por págines che plu de 3 divisiones)',
 'tog-rememberpassword' => 'Memorar mi registre in ti computator (por um max de $1 {{PLURAL:$1|die|dies}})',
-'tog-watchcreations' => 'Adjunter págines que yo crear por mi liste de págines vigilat',
-'tog-watchdefault' => 'Adjunter págines que yo redacter por mi liste de págines vigilat',
-'tog-watchmoves' => 'Adjunter págines que yo mover por mi liste de págines vigilat',
-'tog-watchdeletion' => 'Adjunter págines que yo deleter por mi liste de págines vigilat',
+'tog-watchcreations' => 'Automaticmen viligar págines e files, queles yo ha creat.',
+'tog-watchdefault' => 'Automaticmen vigilar págines e files, queles yo ha redactet.',
+'tog-watchmoves' => 'Automaticmen vigilar págines e files, queles yo move.',
+'tog-watchdeletion' => 'Adjunter págines e dossieres, queles yo ha deleet a mi liste de vigilantie',
 'tog-minordefault' => 'Marcar omni li redactiones minori per contumacie',
 'tog-previewontop' => 'Monstrar prevision ante de buxe de redaction',
 'tog-previewonfirst' => 'Monstrar prevision in prim redaction',
-'tog-nocache' => 'Desvalidar caching de págine',
-'tog-enotifwatchlistpages' => 'Inviar me e-mail quande un págine de mi liste de págines vigilat es changeat',
+'tog-enotifwatchlistpages' => 'Inviar me un e-mail quande un págine o dossiere de mi liste de págines vigilantie es changeat',
 'tog-enotifusertalkpages' => 'Inviar me e-mail quande mi págine de discussion es changeat',
+'tog-enotifminoredits' => 'Inviar me un e-mail anc por minor redactiones de págines a dossieres',
 'tog-enotifrevealaddr' => 'Revelar mi adresse de e-mail in notificationes de e-mail',
 'tog-shownumberswatching' => 'Monstrar li númere de usatores vigilant',
-'tog-oldsig' => 'Prevision de signature in existentie:',
+'tog-oldsig' => 'Existent subscrition:',
 'tog-fancysig' => 'Tractar signature quam textu wiki (sin un catenun auto-crate)',
-'tog-uselivepreview' => 'Usar prevision in vivi (exige JavaScript) (experimental)',
+'tog-uselivepreview' => 'Strax monstrar prevision (experimental)',
 'tog-forceeditsummary' => 'Suggester me quande intrar un redaction che summarium in blanc',
 'tog-watchlisthideown' => 'Ocultar mi redactiones del liste de págines vigilat',
 'tog-watchlisthidebots' => 'Ocultar redactiones de machine del liste de págines vigilat',
@@ -174,15 +175,24 @@ $messages = array(
 'tog-showhiddencats' => 'Monstrar categories ne visibil',
 'tog-noconvertlink' => 'Desvalidar conversion de titul de catenun',
 'tog-norollbackdiff' => 'Omisser change pos de efectuar un rollback',
+'tog-useeditwarning' => 'Averti me, si yo abandona un págine con ínconservat changes',
+'tog-prefershttps' => 'Sempre usar un secur connection, si tui session es activ.',
 
 'underline-always' => 'Sempre',
 'underline-never' => 'Nequande',
-'underline-default' => 'Criterie de navigator',
+'underline-default' => 'secun li usatori surfacie o li navigator',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Styl del lítteres in li redactional fenestre:',
+'editfont-default' => 'Standard del navigator',
+'editfont-monospace' => 'Lítteres con egal largitá',
+'editfont-sansserif' => 'Lítteres sin serifes',
+'editfont-serif' => 'Lítteres con serifes',
 
 # Dates
 'sunday' => 'soledí',
 'monday' => 'lunedí',
-'tuesday' => 'mardí',
+'tuesday' => 'martedí',
 'wednesday' => 'mercurdí',
 'thursday' => 'jovedí',
 'friday' => 'venerdí',
@@ -198,7 +208,7 @@ $messages = array(
 'february' => 'februar',
 'march' => 'marte',
 'april' => 'april',
-'may_long' => 'may',
+'may_long' => 'mai',
 'june' => 'junio',
 'july' => 'julí',
 'august' => 'august',
@@ -210,9 +220,9 @@ $messages = array(
 'february-gen' => 'februar',
 'march-gen' => 'marte',
 'april-gen' => 'april',
-'may-gen' => 'may',
+'may-gen' => 'mai',
 'june-gen' => 'junio',
-'july-gen' => 'juli',
+'july-gen' => 'julí',
 'august-gen' => 'august',
 'september-gen' => 'septembre',
 'october-gen' => 'octobre',
@@ -222,7 +232,7 @@ $messages = array(
 'feb' => 'feb',
 'mar' => 'mar',
 'apr' => 'apr',
-'may' => 'may',
+'may' => 'mai',
 'jun' => 'jun',
 'jul' => 'jul',
 'aug' => 'aug',
@@ -230,6 +240,18 @@ $messages = array(
 'oct' => 'oct',
 'nov' => 'nov',
 'dec' => 'dec',
+'january-date' => '$1 januar',
+'february-date' => '$1 februar',
+'march-date' => '$1 marte',
+'april-date' => '$1 april',
+'may-date' => '$1 mai',
+'june-date' => '$1 junio',
+'july-date' => '$1 julí',
+'august-date' => '$1 august',
+'september-date' => '$1 septembre',
+'october-date' => '$1 octobre',
+'november-date' => '$1 novembre',
+'december-date' => '$1 decembre',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categorie|Categories}}',
@@ -237,30 +259,37 @@ $messages = array(
 'subcategories' => 'Subcategories',
 'category-media-header' => 'Multimedia in categorie "$1"',
 'category-empty' => "''Ti categorie currentmen ne contene págines o media.''",
-'hidden-categories' => '{{PLURAL:$1|Categorie ocultat|Categories ocultat}}',
+'hidden-categories' => '{{PLURAL:$1|Celat categorie|Celat categories}}',
+'hidden-category-category' => 'Celat categories',
 'category-subcat-count' => '{{PLURAL:$2|Ti categorie ha solmen li sequent subcategorie.|Ti categorie ha li sequent {{PLURAL:$1|subcategorie|$1 subcategories}}, de un total de $2.}}',
+'category-subcat-count-limited' => 'Ti-ci categorie contene li secuent {{PLURAL:$1|subcategorie|$1 subcategories}}.',
 'category-article-count' => '{{PLURAL:$2|Ti categorie contene solmen li sequent págine.|Li sequent {{PLURAL:$1|págine es|$1 págine es}} in ti categorie, de un total de $2.}}',
+'category-article-count-limited' => 'Li secuent {{PLURAL:$1|págine|$1 pagines}} es contenet in ti-ci categorie:',
 'category-file-count' => '{{PLURAL:$2|Ti categorie contene solmen li sequent file.|Li sequent {{PLURAL:$1|file es|$1 files es}} in ti categorie, de un total de $2.}}',
+'category-file-count-limited' => 'Li secuent {{PLURAL:$1|file|$1 files}} es contenet in ti-ci categorie:',
 'listingcontinuesabbrev' => 'cont.',
+'index-category' => 'Indexat págines',
 'noindex-category' => 'Págines ne indexet',
+'broken-file-category' => 'Págines con ruptet file-links.',
 
 'about' => 'Concernent',
 'article' => 'Articul',
-'newwindow' => '(inaugurar in nov planca de fenestre)',
+'newwindow' => '(es apertet in un nov fenestre)',
 'cancel' => 'Anullar',
 'moredotdotdot' => 'Plu...',
-'mypage' => 'Mi págine',
-'mytalk' => 'Mi discussion',
+'morenotlisted' => 'Ti liste ne es complet.',
+'mypage' => 'Págine',
+'mytalk' => 'Conversation',
 'anontalk' => 'Discussion por ti ci IP',
 'navigation' => 'Navigation',
 'and' => '&#32;e',
 
 # Cologne Blue skin
 'qbfind' => 'Constatar',
+'qbbrowse' => 'Travider',
 'qbedit' => 'Redacter',
 'qbpageoptions' => 'Págine de optiones',
 'qbmyoptions' => 'Mi optiones',
-'qbspecialpages' => 'Págines special',
 'faq' => 'FAQ',
 
 # Vector skin
@@ -270,16 +299,17 @@ $messages = array(
 'vector-action-protect' => 'Gardar',
 'vector-action-undelete' => 'Restituer',
 'vector-action-unprotect' => 'Desgardar',
-'vector-simplesearch-preference' => 'Premisser suggestiones de sercha argumentat (pelle Vector solmen)',
+'vector-simplesearch-preference' => 'Simplificat serch-liste (solmen Vector)',
 'vector-view-create' => 'Crear',
 'vector-view-edit' => 'Redacter',
-'vector-view-history' => 'Vider historie',
+'vector-view-history' => 'Historie de versiones',
 'vector-view-view' => 'Leer',
 'vector-view-viewsource' => 'Vider fonte',
 'actions' => 'Actiones',
 'namespaces' => 'Spacies de nómine',
 'variants' => 'Variantes',
 
+'navigation-heading' => 'Navigational menú',
 'errorpagetitle' => 'Errore',
 'returnto' => 'Retornar a $1.',
 'tagline' => 'De {{SITENAME}}',
@@ -289,41 +319,48 @@ $messages = array(
 'go' => 'Ear',
 'searcharticle' => 'Ear',
 'history' => 'Historie',
-'history_short' => 'Historie',
+'history_short' => 'Historie de versiones',
 'updatedmarker' => 'modernisat desde mi ultim visitation',
-'printableversion' => 'Version por impression',
-'permalink' => 'Catenun permanent',
+'printableversion' => 'Version a printar',
+'permalink' => 'Permanent referentie',
+'print' => 'Printar',
+'view' => 'Leer',
 'edit' => 'Redacter',
 'create' => 'Crear',
 'editthispage' => 'Redacter',
+'create-this-page' => 'Crear ti págine',
 'delete' => 'Deleter',
 'deletethispage' => 'Deleter ti págine',
+'undeletethispage' => 'Restaurar ti págine',
 'undelete_short' => 'Restaurar {{PLURAL:$1|1 modification|$1 modificationes}}',
+'viewdeleted_short' => 'Vider {{PLURAL:$1|un deletet version|$1 deletet versiones}}',
 'protect' => 'Gardar',
-'protect_change' => 'Change',
+'protect_change' => 'changer',
 'protectthispage' => 'Gardar ti págine',
 'unprotect' => 'Changear protection',
 'unprotectthispage' => 'Changear protection de ti págine',
 'newpage' => 'Nov págine',
 'talkpage' => 'Parlar in ti págine',
-'talkpagelinktext' => 'Discussion',
+'talkpagelinktext' => 'Conversation',
 'specialpage' => 'Págine special',
-'personaltools' => 'Utensiles personal',
+'personaltools' => 'Mi utensiles',
 'postcomment' => 'Nov division',
 'articlepage' => 'Vider li articul',
 'talk' => 'Discussion',
-'views' => 'Vistas',
-'toolbox' => 'Buxe de utensiles',
+'views' => 'Aspectes',
+'toolbox' => 'Utensiles',
 'userpage' => 'Vider págine del usator',
 'projectpage' => 'Vider págine de projecte',
 'imagepage' => 'Vider li págine de figura',
+'mediawikipage' => 'Vider págine de missagies',
 'templatepage' => 'Vider li págine de avise',
 'viewhelppage' => 'Vider págine de auxilie',
+'categorypage' => 'Vider categorial págine',
 'viewtalkpage' => 'Vider discussion',
 'otherlanguages' => 'Altri lingues',
 'redirectedfrom' => '(Redirectet de $1)',
 'redirectpagesub' => 'Págine de redirecterion',
-'lastmodifiedat' => 'Ti págine esset per ultim témpor redactet in $1, in $2.',
+'lastmodifiedat' => 'Ti-ci págine esset redactet in ultim li $1, clocca $2.',
 'viewcount' => 'Ti págine ha esset accesset {{PLURAL:$1|un vez|$1 vezes}}.',
 'protectedpage' => 'Un protectet págine',
 'jumpto' => 'Saltar a:',
@@ -334,51 +371,73 @@ Anc mult usatores es provant vider ti págine.
 Pleser atende un témpor quelc ante que vu prova accesser ti págine denov.
 
 $1',
+'pool-timeout' => 'Temporal límite attiņit, attendente li clusion.',
+'pool-queuefull' => 'Range de petitiones es plen.',
+'pool-errorunknown' => 'Ínconosset erra',
 
 # 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).
 'aboutsite' => 'Concernent {{SITENAME}}',
-'aboutpage' => 'Project:Concernent',
-'copyright' => 'Contenete disponibil sub $1.',
+'aboutpage' => 'Project:Concernent_{{SITENAME}}',
+'copyright' => 'Contenete attiņibil sub $1, si ne altrimen indicat.',
 'copyrightpage' => '{{ns:project}}:Jure editorial',
-'currentevents' => 'Eventus current',
-'currentevents-url' => 'Project:Eventus current',
+'currentevents' => 'Actual evenimentes',
+'currentevents-url' => 'Project:Actual evenimentes',
 'disclaimers' => 'Advertimentes',
-'disclaimerpage' => 'Project:Advertimentes comun',
-'edithelp' => 'Redacter auxilie',
+'disclaimerpage' => 'Project:Advertimentes',
+'edithelp' => 'Redactori auxilie',
 'helppage' => 'Help:Contenete',
-'mainpage' => 'Págine principal',
-'mainpage-description' => 'Págine principal',
-'portal' => 'Págine de comunité',
-'portal-url' => 'Project:Págine de comunité',
+'mainpage' => 'Principal págine',
+'mainpage-description' => 'Principal págine',
+'policy-url' => 'Project:Regulariumes',
+'portal' => 'Portale del communité',
+'portal-url' => 'Project:Portale del communité',
 'privacy' => 'Politica de privatie',
 'privacypage' => 'Project:Politica de privatie',
 
+'badaccess' => 'Tu ne have sufficent jures',
+'badaccess-group0' => 'Tu ne have li necessi jures por ti action',
+'badaccess-groups' => 'Ti action es limitat a usatores in {{PLURAL:$2|li gruppe|un del secuent gruppes:}} $1',
+
 'versionrequired' => 'Version $1 de MediaWiki exiget',
 'versionrequiredtext' => 'Version $1 de MediaWiki es exiget por usar ti págine.
 Vider [[Special:Version|págine de version]].',
 
-'retrievedfrom' => 'Recuperat de "$1"',
+'retrievedfrom' => 'Cargat de «$1»',
 'youhavenewmessages' => 'Vu have $1 ($2).',
+'youhavenewmessagesfromusers' => 'Tu have $1 de {{PLURAL:$3|un altri usator|$3 usatores}} ($2).',
+'youhavenewmessagesmanyusers' => 'Tu have $1 de mult usatores ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|un nov missagie|999=nov missagies}}',
+'newmessagesdifflinkplural' => 'ultim {{PLURAL:$1|change|999=changes}}',
 'youhavenewmessagesmulti' => 'Vu have nov missages in $1',
 'editsection' => 'redacter',
 'editold' => 'redacter',
 'viewsourceold' => 'vider fonte',
 'editlink' => 'redacter',
 'viewsourcelink' => 'vider fonte',
-'editsectionhint' => 'Redacter division: $1',
-'toc' => 'Contenetes',
+'editsectionhint' => 'Redacter section: $1',
+'toc' => 'Contenete',
 'showtoc' => 'monstrar',
 'hidetoc' => 'ocultar',
+'collapsible-collapse' => 'Celar',
+'collapsible-expand' => 'Monstrar',
 'thisisdeleted' => 'Vider o restaurar $1?',
 'viewdeleted' => 'Vider $1?',
+'restorelink' => '{{PLURAL:$1|un deleet version|$1 deleet versiones}}',
+'feed-invalid' => 'Ínvalid typ de feed-abonnament.',
+'feed-unavailable' => 'Null feeds es attiņibil',
+'site-rss-feed' => 'RSS-feed por «$1»',
 'site-atom-feed' => '$1 Atom feed',
+'page-rss-feed' => 'RSS-feed por «$1»',
 'page-atom-feed' => '"$1" Atom feed',
 'red-link-title' => '$1 (págine ne existe)',
+'sort-descending' => 'Descendent ordination',
+'sort-ascending' => 'Ascendent ordination',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Articul',
+'nstab-main' => 'Págine',
 'nstab-user' => 'Págine de usator',
-'nstab-special' => 'Págine special',
+'nstab-media' => 'Págine de medies',
+'nstab-special' => 'Special págine',
 'nstab-project' => 'Págine de projecte',
 'nstab-image' => 'Figura',
 'nstab-mediawiki' => 'Missage',
@@ -386,22 +445,32 @@ Vider [[Special:Version|págine de version]].',
 'nstab-help' => 'Auxilie',
 'nstab-category' => 'Categorie',
 
+# Main script and global functions
+'nosuchaction' => 'Null tal action existe',
+'nosuchactiontext' => 'Li action indicat in li URL es ínvalid.
+Forsan tu ha mistypat li URL o secuet un íncorrect ligament.
+Forsan it indica un erra in li programma usat de {{SITENAME}}.',
+'nosuchspecialpage' => 'Null tal special págine',
+'nospecialpagetext' => '<strong>Tu ha petit un ínvalid special págine.</strong>
+
+Omni existent special págines trova se in li [[Special:Specialpages|{{int:specialpages}}]].',
+
 # General errors
 'error' => 'Erra',
-'missing-article' => 'Li funde de datas ne constatat li textu de un págine que it posse constatar, nominat "$1" $2.
+'databaseerror' => 'Erra del data-base',
+'databaseerror-text' => 'Un erra in li questionada del database ha evenit. To posse indicar un erra in li software.',
+'missing-article' => 'Li textu de «$1» $2 ne ha esset trovat in li data-base.
+
+It es possibil, que ti págine ha esset deleet o movet.
 
-Ti es usualmen causat per sequent un diferentie ne modernisat o catenun de historie por un págine que ha esset deletet.
 
-Si ti ne es li casu, vu posse have constatat un bug in li software.
-Pleser raporta it por un [[Special:ListUsers/sysop|administrator]], formant note de li URL.',
+Si to ne es just, tu ha forsan trovat un erra in li programma.
+Ples raporta it a un [[Special:ListUsers/sysop|administrator]], notante li URL.',
 'missingarticle-rev' => '(revision#: $1)',
 'unexpected' => 'Valor ínexpectat: "$1"="$2".',
 'badtitle' => 'Titul mal',
 'badtitletext' => 'Li titul de págine solicitat esset ínvalid, vacui, o íncorectmen ligat inter-lingue o un titul inter-wiki.
 It posse contene un o plu carácteres quel ne posse esser usat in titules.',
-'wrong_wfQuery_params' => 'Normes íncorect por wfQuery()<br />
-Function: $1<br />
-Question: $2',
 'viewsource' => 'Vider fonte',
 'viewsourcetext' => 'Vu posse vider e copiar li contenete de ti págine:',
 'titleprotected' => 'Ti titul ha esset gardat de creation per [[User:$1|$1]]. 
@@ -413,9 +482,9 @@ Li motive dat es "\'\'$2\'\'".',
 'virus-unknownscanner' => 'antivírus desconosset:',
 
 # Login and logout pages
-'logouttext' => "'''Vu ha terminat vor session.'''
-Vu posse continuar usar {{SITENAME}} anonimimen, o vu posse <span class='plainlinks'>[$1 aperter un session denov]</span> quam li sam usator o quam un diferent usator.
-Nota que alcun págines posse continuar esser monstrat quam si vu esset registrat, til que vu vacua li cache de tui navigator.",
+'logouttext' => "'''Tu ha terminat tui session.'''
+
+Nota, que alcun págines posse continualmen esser monstrat quasi tu vell ancor esser inregistrat, til que tu vacua li cache de tui navigator.",
 'yourname' => 'Nómine de usator:',
 'yourpassword' => 'Parol-clave:',
 'yourpasswordagain' => 'Parol-clave denov:',
@@ -427,7 +496,7 @@ Nota que alcun págines posse continuar esser monstrat quam si vu esset registra
 'userlogin' => 'Crear un conto o intrar',
 'userloginnocreate' => 'Intrar',
 'logout' => 'Surtida',
-'userlogout' => 'Surtida',
+'userlogout' => 'Surtir',
 'notloggedin' => 'Vu ne ha intrat',
 'nologin' => 'Ne have un conto? $1.',
 'nologinlink' => 'Crear un conto',
@@ -446,7 +515,7 @@ Pleser opta por un nómine diferent.',
 Pleser prova denov.',
 'wrongpasswordempty' => 'Parol-clave inscrit esset nud.
 Pleser prova denov.',
-'mailmypassword' => 'Nov parol-clave per e-mail',
+'mailmypassword' => 'Re-initialisar li passaparol',
 'throttled-mailpassword' => 'Un parol-clave amemora ha ja esset inviat, intra li ultim {{PLURAL:$1|hor|$1 hores}}.
 Por preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL:$1|hor|$1 hores}}.',
 'acct_creation_throttle_hit' => 'Vu ja ha creat $1 contos. Vu ne posse crear pli mult quam to.',
@@ -455,6 +524,7 @@ Por preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL
 'suspicious-userlogout' => 'Tui petition por surtir esset desaprobat pro que probabilmen esset inviat per un navigator ruptet o servitor de autorisation che caching.',
 
 # Change password dialog
+'changepassword' => 'Modificar passa-parol',
 'oldpassword' => 'Anteyan passa-parol:',
 'newpassword' => 'Nov passa-parol:',
 'retypenew' => 'Confirmar nov passa-parol',
@@ -463,27 +533,27 @@ Por preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL
 'passwordreset-username' => 'Vor nómine usatori',
 
 # Edit page toolbar
-'bold_sample' => 'Textu in nigri',
-'bold_tip' => 'Textu in nigri',
-'italic_sample' => 'Textu cursivmen',
-'italic_tip' => 'Textu cursivmen',
-'link_sample' => 'Titul de catenun',
-'link_tip' => 'Catenun intern',
-'extlink_sample' => 'http://www.example.com titul de catenun',
-'extlink_tip' => 'Catenun extern (memorar prefixe http://)',
-'headline_sample' => 'Division de nivelle 2',
-'headline_tip' => 'Division de nivelle 2',
-'nowiki_sample' => 'Ignorar formate wiki',
+'bold_sample' => 'Nigri textu',
+'bold_tip' => 'Nigri textu',
+'italic_sample' => 'Cursiv textu',
+'italic_tip' => 'Cursiv textu',
+'link_sample' => 'Nómine de referentie',
+'link_tip' => 'Intern referentie',
+'extlink_sample' => 'http://www.example.com nómine del referentie',
+'extlink_tip' => 'Extern referentie (ne oblivia prefixar http://)',
+'headline_sample' => 'Titul de nivell 2',
+'headline_tip' => 'Titul de nivell 2',
+'nowiki_sample' => 'Intrar ínformatat textu ci.',
 'nowiki_tip' => 'Ignorar formate wiki',
-'image_tip' => 'File fixat',
-'media_tip' => 'Catenun in file de multimedia',
-'sig_tip' => 'Tui signature che hor e date',
-'hr_tip' => 'Linea horizontal (use sin excess)',
+'image_tip' => 'Fixat file',
+'media_tip' => 'Referentie a un multimedial file.',
+'sig_tip' => 'Tui subscrit con hor e date',
+'hr_tip' => 'Horizontal linea (ples usar sin excess)',
 
 # Edit pages
-'summary' => 'Summarium:',
+'summary' => 'Resummation:',
 'subject' => 'Tema/Division:',
-'minoredit' => 'Ti es un redaction minori',
+'minoredit' => 'To es un bagatellic change',
 'watchthis' => 'Vigilar ti págine',
 'savearticle' => 'Conservar págine',
 'preview' => 'Prevision',
@@ -501,12 +571,10 @@ Tui adresse de IP va esser registrat in historico de redactiones de ti págine."
 'newarticletext' => "Vu have sequet un catenun por un págine que ne existe ancor.
 Por crear li págine, comensa tippant in li buxe in infra (vider li [[{{MediaWiki:Helppage}}|págine de auxilie]] por plu informationes).
 Si vu es ci per errore, clacca in li buton '''retornar''' in tui navigator.",
-'noarticletext' => 'Vi currentmen ne textu in ti págine.
-Vu posse [[Special:Search/{{PAGENAME}}|serchar por ti titul de págine]] in altri págines,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar li diariumes relatet], o [{{fullurl:{{FULLPAGENAME}}|action=edit}} redacter ti págine]</span>.',
-'noarticletext-nopermission' => 'Vi currentmen ne textu in ti págine.
-Vu posse [[Special:Search/{{PAGENAME}}|serchar por titul de ti págine]] in altri págines,
-o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar li diariumes relatet]</span>.',
+'noarticletext' => 'Actualmen ti-ci págine ancor ne contene alquel textu.
+Tu posse <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} redacter]</span> it, [[Special:Search/{{PAGENAME}}|serchar]] su titul in altri págines o regardar li relatent <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logs]</span>.',
+'noarticletext-nopermission' => 'Actualmen ti págine ne contene textu e tu ne have permission crear ti págine.
+Tu posse [[Special:Search/{{PAGENAME}}|serchar]] su titul sur altri págines o regardar li <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} relatent logs].</span>',
 'userpage-userdoesnotexist' => 'Conto de usator "$1" ne es registrat.
 Pleser controla si vu cari crear/redacter ti págine.',
 'userpage-userdoesnotexist-view' => 'Conto de usator "$1" ne es registrat.',
@@ -536,7 +604,7 @@ Li ultim intrada in li historico es sub li condition infra por referentie:",
 'templatesused' => '{{PLURAL:$1|Avise|Avises}} usat in ti págine:',
 'templatesusedpreview' => '{{PLURAL:$1|Avise|Avises}} usat in ti prevision:',
 'templatesusedsection' => '{{PLURAL:$1|Avise|Avises}} usat in ti division:',
-'template-protected' => '(gardat)',
+'template-protected' => '(protectet)',
 'template-semiprotected' => '(medie-gardat)',
 'hiddencategories' => 'Ti págine es un membre de {{PLURAL:$1|1 categorie ocultat|$1 categories ocultat}}:',
 'permissionserrorstext-withaction' => 'Vu ne have permission por $2, por li sequent {{PLURAL:$1|motive|motives}}:',
@@ -548,9 +616,8 @@ Li deletion e diarium de movement por li págine es sub li condition ci por conv
 Li deletion e diarium de movement por li págine es sub li condition in infra por referentie.',
 
 # Parser/template warnings
-'post-expand-template-inclusion-warning' => "'''Advertiment:''' Avise que include dimension es anc grand.
-Alcun avises va ne esser includet.",
-'post-expand-template-inclusion-category' => 'Págines u avise que include dimension es excedet',
+'post-expand-template-inclusion-warning' => "'''Advertiment:''' Li grandore del includet shablones es tro grand. Alcun shablones ne posse esser includet.",
+'post-expand-template-inclusion-category' => 'Págines, in queles li maximal grandore del includet shablones es excedet',
 'post-expand-template-argument-warning' => "'''Advertiment:''' Ti págine contene in un minim argumente de avise quel ha un anc mensura de expansion grand.
 Tis argumentes have esset omisset.",
 'post-expand-template-argument-category' => 'Págines contenent argumentes de avise omisset',
@@ -564,32 +631,30 @@ Tis argumentes have esset omisset.",
 # History pages
 'viewpagelogs' => 'Vider diariumes por ti págine',
 'currentrev' => 'Ultim revision',
-'currentrev-asof' => 'Ultim revision quam de $1',
+'currentrev-asof' => 'Actual version de $2, clocca $3',
 'revisionasof' => 'Revision de $1',
 'revision-info' => 'Revision de $1 e il ha fabricat de $2',
-'previousrevision' => '← Revision antiqui',
+'previousrevision' => '← Anteyan version',
 'nextrevision' => 'Revision sequent →',
 'currentrevisionlink' => 'Ultim revision',
 'cur' => 'hod',
 'next' => 'prox',
 'last' => 'ant',
 'page_first' => 'prim',
-'page_last' => 'ultim',
+'page_last' => 'ultima',
 'histlegend' => "Diferenties de selection: marca li buxes de radio de li revisiones por comparar e batte \"intrar\" o li buton in li funde.<br />
 Legende: '''({{int:cur}})''' = diferenties che ultim revision, '''({{int:last}})''' = diferenties que antecede li revision, '''{{int:minoreditletter}}''' = redaction minori.",
 'history-fieldset-title' => 'Historie de navigation',
 'history-show-deleted' => 'Deletet solmen',
-'histfirst' => 'Plu antiqui',
-'histlast' => 'Plu recent',
+'histfirst' => 'max veľi',
+'histlast' => 'max nov',
 
 # Revision feed
 'history-feed-item-nocomment' => '$1 in $2',
 
 # Revision deletion
 'rev-delundel' => 'monstrar/ocultar',
-'revdel-restore' => 'change visibilitá',
-'revdel-restore-deleted' => 'revisiones deletet',
-'revdel-restore-visible' => 'revisiones visibil',
+'revdel-restore' => 'changer visibilitá',
 
 # Suppression log
 'suppressionlog' => 'Diarium de supression',
@@ -607,19 +672,19 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'diff-multi' => '({{PLURAL:$1|Un revision intermediari|$1 revisiones intermediari}} per {{PLURAL:$2|un usator|$2 usatores}} ne monstrat)',
 
 # Search results
-'searchresults' => 'Serchar resultates',
-'searchresults-title' => 'Serchar resultates por "$1"',
+'searchresults' => 'Serch-resultates',
+'searchresults-title' => 'Serch-resultates por «$1»',
 'toomanymatches' => 'Anc mult concurses esset retornat, pleser prova un question diferent',
 'titlematches' => 'Resultates in li titules de págines',
 'textmatches' => 'Resultates in textu de págines',
-'prevn' => '{{PLURAL:$1|$1}} anteriori',
-'nextn' => 'proxim {{PLURAL:$1|$1}}',
-'prevn-title' => 'Anteriori $1 {{PLURAL:$1|resultate|resultates}}',
-'nextn-title' => 'Proxim $1 {{PLURAL:$1|resultate|resultates}}',
+'prevn' => 'anteyan {{PLURAL:$1|$1}}',
+'nextn' => 'secuent {{PLURAL:$1|$1}}',
+'prevn-title' => 'Anteyan $1 {{PLURAL:$1|resultate|resultates}}',
+'nextn-title' => 'Secuent $1 {{PLURAL:$1|resultate|resultates}}',
 'shown-title' => 'Monstrar $1 {{PLURAL:$1|resultate|resultates}} per págine',
-'viewprevnext' => 'Vider ($1 {{int:pipe-separator}} $2) ($3)',
+'viewprevnext' => 'Monstrar ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Vi un págine nominat \"[[:\$1]]\" in ti wiki.'''",
-'searchmenu-new' => "'''Crear li págine \"[[:\$1]]\" in ti wiki!'''",
+'searchmenu-new' => "'''Crear li págine «[[:$1]]» in ti wiki.'''",
 'searchprofile-articles' => 'Págines de contenete',
 'searchprofile-project' => 'Auxilie e Págines de projecte',
 'searchprofile-images' => 'Multimedia',
@@ -627,24 +692,22 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'searchprofile-advanced' => 'Avansat',
 'searchprofile-articles-tooltip' => 'Serchar in $1',
 'searchprofile-project-tooltip' => 'Serchar in $1',
-'searchprofile-images-tooltip' => 'Serchar por files',
-'searchprofile-everything-tooltip' => 'Serchar omni li contenete (includent págines de discussion)',
-'searchprofile-advanced-tooltip' => 'Serchar in spacies de nómine de hábitu',
+'searchprofile-images-tooltip' => 'Serchar files',
+'searchprofile-everything-tooltip' => 'Serchar in li tot contenete (includent págines de conversation)',
+'searchprofile-advanced-tooltip' => 'Serchar in special spacies de nómine',
 'search-result-size' => '$1 ({{PLURAL:$2|1 parol|$2 paroles}})',
 'search-result-category-size' => '{{PLURAL:$1|1 membre|$1 membres}} ({{PLURAL:$2|1 subcategory|$2 subcategories}}, {{PLURAL:$3|1 file|$3 files}})',
-'search-redirect' => '(redirectet de $1)',
-'search-section' => '(division $1)',
-'search-suggest' => 'Vu intentet: $1',
+'search-redirect' => '(redirection de «$1»)',
+'search-section' => '(section $1)',
+'search-suggest' => 'Esque tu ha intentet: «$1»?',
 'searchrelated' => 'relatet',
-'searchall' => 'Omni',
-'showingresultsheader' => "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultates '''$1 - $2''' de '''$3'''}} por '''$4'''",
-'search-nonefound' => 'Ne esset constatat resultates por li question.',
-'powersearch' => 'Serchar avansat',
+'searchall' => 'omni',
+'showingresultsheader' => "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultates '''$1 – $2''' de '''$3'''}} por '''$4'''",
+'search-nonefound' => 'Tu sercha ne ha trovat un resultate.',
 
 # Preferences page
 'preferences' => 'Preferenties',
-'mypreferences' => 'Mi preferenties',
-'changepassword' => 'Modificar passa-parol',
+'mypreferences' => 'Preferenties',
 'skin-preview' => 'Prevision',
 'saveprefs' => 'Conservar',
 'searchresultshead' => 'Serchar',
@@ -652,7 +715,6 @@ Vider li [[Special:IPBlockList|liste de bloc de IP]] por li liste de bloces e ba
 'timezonelegend' => 'Zone de témpor:',
 'timezoneuseserverdefault' => 'Usar wiki de contumacie ($1)',
 'timezoneuseoffset' => 'Altri (specificar compensation)',
-'timezoneoffset' => 'Compensation¹:',
 'timezoneregion-africa' => 'Africa',
 'timezoneregion-america' => 'America',
 'timezoneregion-antarctica' => 'Antarctica',
@@ -723,7 +785,6 @@ Tui adresse de e-mail ne es revelat quande altri usatores contacter vu.',
 'recentchanges-label-minor' => 'Ti es un redaction minori',
 'recentchanges-label-bot' => 'Ti redaction esset efectuat per un machine',
 'recentchanges-label-unpatrolled' => 'Ti redaction ne have ancor esset protectet',
-'rcnote' => "In infra {{PLURAL:$1|es '''1''' change|es li ultim '''$1''' changes}} in li ultim {{PLURAL:$2|die|'''$2''' dies}}, quam de $5, $4.",
 'rcnotefrom' => "In infra es li changes desde '''$2''' (ad-supra por '''$1''' monstrat).",
 'rclistfrom' => 'Monstrar li nov modificationes desde $1.',
 'rcshowhideminor' => '$1 redactiones minori',
@@ -735,21 +796,21 @@ Tui adresse de e-mail ne es revelat quande altri usatores contacter vu.',
 'rclinks' => 'Monstrar li $1 ultim modificationes fat durante li $2 ultim dies<br />$3.',
 'diff' => 'dif',
 'hist' => 'hist',
-'hide' => 'Ocultar',
+'hide' => 'Celar',
 'show' => 'Monstrar',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'rc-enhanced-expand' => 'Monstar detallies (exige JavaScript)',
+'rc-enhanced-expand' => 'Monstrar detaľes (per JavaScript)',
 'rc-enhanced-hide' => 'Ocultar detallies',
 
 # Recent changes linked
 'recentchangeslinked' => 'Changes referet',
 'recentchangeslinked-feed' => 'Relatet modificationes',
-'recentchangeslinked-toolbox' => 'Changes referet',
+'recentchangeslinked-toolbox' => 'Changes in referentiat págines',
 'recentchangeslinked-title' => 'Changes relatet por "$1"',
-'recentchangeslinked-summary' => "Ti es un liste de changes fat recentmen por págines ligat de un págine specificat (o por membres de un categorie specificat).
-Págines in [[Special:Watchlist|tui liste de págines vigilat]] es '''nigri'''.",
+'recentchangeslinked-summary' => "To es un liste del nov changes in li referentiat págines (respectivmen in li membres del categorie).
+Págines in [[Special:Watchlist|tui liste de vigilat págines]] es '''nigri'''.",
 'recentchangeslinked-page' => 'Nómine de págine:',
 'recentchangeslinked-to' => 'Monstrar changes por págines ligat por li págine disposit in vice',
 
@@ -823,22 +884,22 @@ Vu posse provar in un témpor minu activ.',
 
 # File description page
 'file-anchor-link' => 'Figura',
-'filehist' => 'Historic de figura',
-'filehist-help' => 'Clacca in un date/témpor por vider li file quam it aparit in ti témpor.',
+'filehist' => 'Versiones del file',
+'filehist-help' => 'Clacca a un date/témpore por vider ti version.',
 'filehist-revert' => 'reverter',
-'filehist-current' => 'current',
-'filehist-datetime' => 'Date/Témpor',
+'filehist-current' => 'actual',
+'filehist-datetime' => 'Version de',
 'filehist-thumb' => 'Miniatura',
-'filehist-thumbtext' => 'Miniatura por version quam de $1',
+'filehist-thumbtext' => 'Miniatura por li version de $2, clocca $3',
 'filehist-user' => 'Usator',
 'filehist-dimensions' => 'Dimensiones',
 'filehist-filesize' => 'Mesura de file',
-'filehist-comment' => 'Comentarie',
-'imagelinks' => 'Usu del file',
+'filehist-comment' => 'Commentarie',
+'imagelinks' => 'Usada del file',
 'linkstoimage' => 'Li sequent {{PLURAL:$1|catenun de págine|$1 catenunes de págines}} por ti file:',
 'nolinkstoimage' => 'Hay nequant págine que liga por ti file.',
-'sharedupload-desc-here' => 'Ti file es de $1 e posse esser usat per altri projectes.
-Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in infra.',
+'sharedupload-desc-here' => 'Ti file es de $1 e posse esser usat de altri projectes.
+Li descrition in su [$2 págine de descrition] es monstrat in infra.',
 'uploadnewversion-linktext' => 'Cargar un nov version de ti file',
 
 # File deletion
@@ -859,7 +920,7 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 'unusedtemplateswlh' => 'altri catenunes',
 
 # Random page
-'randompage' => 'Págine sporadic',
+'randompage' => 'Págine in hasard',
 
 # Statistics
 'statistics' => 'Statistica',
@@ -939,11 +1000,11 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 
 # Special:AllPages
 'allpages' => 'Omni li págines',
-'alphaindexline' => '$1 til $2',
+'alphaindexline' => '$1 till $2',
 'nextpage' => 'Proxim págine ($1)',
 'prevpage' => 'Ultim págine ($1)',
 'allarticles' => 'Omni li articules',
-'allpagessubmit' => 'Ear',
+'allpagessubmit' => 'Applicar',
 
 # Special:Categories
 'categories' => 'Categories',
@@ -970,8 +1031,8 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
 'usermessage-template' => 'MediaWiki:UserMessage',
 
 # Watchlist
-'watchlist' => 'Liste de págines vigilat',
-'mywatchlist' => 'Mi liste de págines vigilat',
+'watchlist' => 'Vigilat págines',
+'mywatchlist' => 'Vigilat págines',
 'watchlistfor2' => 'Por $1 $2',
 'watchlistanontext' => 'Pleser $1 por vider o redacter articules in tui liste de págines vigilat.',
 'watchnologin' => 'Vu ne ha intrat',
@@ -1046,7 +1107,6 @@ Vu posse have un catenun mal, o li revision posse have esset restaurat o removet
 'undeletebtn' => 'Restaurar',
 'undeletelink' => 'vider/restaurar',
 'undeleteviewlink' => 'vider',
-'undeletereset' => 'Recomensar',
 'undeleteinvert' => 'Inverter selection',
 'undeletecomment' => 'Motive:',
 'undeletedrevisions' => '{{PLURAL:$1|1 revision|$1 revisiones}} restaurat',
@@ -1078,11 +1138,11 @@ $1',
 'blanknamespace' => '(Principal)',
 
 # Contributions
-'contributions' => 'Contributiones de usator',
+'contributions' => 'Contributiones de {{GENDER:$1|usator|usatoressa}}',
 'contributions-title' => 'Contributiones de usator por $1',
-'mycontris' => 'Mi contributiones',
-'contribsub2' => 'Por $1 ($2)',
-'uctop' => '(prim)',
+'mycontris' => 'Contributiones',
+'contribsub2' => 'De {{GENDER:$3|$1}} ($2)',
+'uctop' => '(actual)',
 'month' => 'De mensu (e anterioris):',
 'year' => 'De annu (e anterioris):',
 
@@ -1098,48 +1158,43 @@ $1',
 'sp-contributions-submit' => 'Serchar',
 
 # What links here
-'whatlinkshere' => 'Quo catenunes ci',
+'whatlinkshere' => 'Referenties a ti-ci págine',
 'whatlinkshere-title' => 'Págines quo liga por "$1"',
 'whatlinkshere-page' => 'Págine:',
 'linkshere' => "Li sequent págines liga por '''[[:$1]]''':",
 'nolinkshere' => "Nequant págine liga por '''[[:$1]]'''.",
 'isredirect' => 'págine de redirecterion',
 'istemplate' => 'inclusion',
-'isimage' => 'catenun de figura',
+'isimage' => 'referentie a un file',
 'whatlinkshere-prev' => '{{PLURAL:$1|anterior|$1 anterioris}}',
 'whatlinkshere-next' => '{{PLURAL:$1|proxim|proxim $1}}',
 'whatlinkshere-links' => '← catenunes',
 'whatlinkshere-hideredirs' => '$1 redirectiones',
 'whatlinkshere-hidetrans' => '$1 transclusiones',
 'whatlinkshere-hidelinks' => '$1 catenunes',
-'whatlinkshere-hideimages' => '$1 catenunes de figura',
+'whatlinkshere-hideimages' => '$1 referenties a picturas.',
 'whatlinkshere-filters' => 'Filtres',
 
 # Block/unblock
 'blockip' => 'Blocar usator',
 'ipbreason' => 'Motive:',
-'ipboptions' => '2 hores:2 hours,1 die:1 day,3 dies:3 days,1 semane:1 week,2 semanes:2 weeks,1 mensu:1 month,3 mensues:3 months,6 mensues:6 months,1 annu:1 year,inprecise:infinite',
-'ipbotheroption' => 'altri',
+'ipboptions' => '2 hores:2 hours,1 die:1 day,3 dies:3 days,1 semane:1 week,2 semanes:2 weeks,1 mensu:1 month,3 mensus:3 months,6 mensus:6 months,1 annu:1 year,ínfinit:infinite',
 'ipblocklist' => 'Usatores blocat',
 'ipblocklist-submit' => 'Serchar',
 'infiniteblock' => 'infinit',
 'blocklink' => 'blocar',
 'unblocklink' => 'desblocar',
-'change-blocklink' => 'change bloc',
-'contribslink' => 'contribs',
+'change-blocklink' => 'changer blocada',
+'contribslink' => 'contributiones',
 'blocklogpage' => 'Diarium de bloc',
 'blocklogentry' => '"[[$1]]" hat blocat che un témpor de expiration de $2 $3',
 'block-log-flags-nocreate' => 'creation de conto debilisat',
 
 # Move page
 'movearticle' => 'Mover págine:',
-'movenologin' => 'Vu ne ha intrat',
 'newtitle' => 'Por nov titul:',
 'move-watch' => 'Vigilar ti págine',
 'movepagebtn' => 'Mover págine',
-'talkexists' => "'''Li págine itself esset movet successosimen, ma li págine de discussion ne posset esser movet pro que un ja existe in li nov titul.
-Pleser fuse les manualmen.'''",
-'movedto' => 'movet por',
 'movelogpage' => 'Diarium de movementiones',
 'movereason' => 'Motive:',
 'revertmove' => 'reverter',
@@ -1167,69 +1222,69 @@ Pleser fuse les manualmen.'''",
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Tui págine de usator',
 'tooltip-pt-anonuserpage' => 'Li págine de usator por li adresse de IP vu es redactent quam',
-'tooltip-pt-mytalk' => 'Tui págine de discussion',
+'tooltip-pt-mytalk' => 'Tui págine de conversation',
 'tooltip-pt-anontalk' => 'Discussion pri redactiones de adresses de IP',
 'tooltip-pt-preferences' => 'Tui preferenties',
-'tooltip-pt-watchlist' => 'Li liste de págines quo vu controla li changes',
+'tooltip-pt-watchlist' => 'Liste de vigilat págines',
 'tooltip-pt-mycontris' => 'Liste de tui contributiones',
-'tooltip-pt-login' => 'Vu es incorageat por crear un conto; támen, it ne esser mandatorio',
+'tooltip-pt-login' => 'Tu es incorrageat crear un conto, ma to ne es un deventie.',
 'tooltip-pt-anonlogin' => 'Vu es incorageat por crear un conto; támen, it ne esser mandatorio',
-'tooltip-pt-logout' => 'Surtida',
-'tooltip-ca-talk' => 'Discussion pri li contenete de págine',
-'tooltip-ca-edit' => 'Vu posse redacter ti págine. Pleser usar li buton "Monstrar prevision" ante de conservar',
-'tooltip-ca-addsection' => 'Comensar un nov division',
-'tooltip-ca-viewsource' => 'Ti págine es gardat. Vu posse vider li contenete',
-'tooltip-ca-history' => 'Revisiones passat de ti págine',
+'tooltip-pt-logout' => 'Surtir',
+'tooltip-ca-talk' => 'Discussion pri li articul.',
+'tooltip-ca-edit' => 'Redacter ti págine. Ples usar li buton de prevision antequam conservar.',
+'tooltip-ca-addsection' => 'Comensar un nov section',
+'tooltip-ca-viewsource' => 'Ti págine es protectet. Ma tu posse vider e copiar su fonte.',
+'tooltip-ca-history' => 'Passat versiones de ti págine',
 'tooltip-ca-protect' => 'Gardar ti págine',
 'tooltip-ca-unprotect' => 'Desgardar ti págine',
 'tooltip-ca-delete' => 'Deleter ti págine',
 'tooltip-ca-undelete' => 'Restaurar li redactiones executet pro ti págine ante de it esser deletet',
 'tooltip-ca-move' => 'Mover ti págine',
-'tooltip-ca-watch' => 'Adjunter ti págine pro tui liste de págines vigilat',
+'tooltip-ca-watch' => 'Adjunter ti págine a tui liste de vigilat págines',
 'tooltip-ca-unwatch' => 'Desvigilar ti págine de tui liste de págines vigilat',
 'tooltip-search' => 'Serchar {{SITENAME}}',
 'tooltip-search-go' => 'Ear por un págine che ti nómine exact, si it exister',
-'tooltip-search-fulltext' => 'Serchar págines che ti textu',
-'tooltip-p-logo' => 'Visita li págine principal',
-'tooltip-n-mainpage' => 'Visita li págine principal',
-'tooltip-n-mainpage-description' => 'Visita li págine principal',
-'tooltip-n-portal' => 'Pri li projecte, quo vu posse executer, u constatar coses',
-'tooltip-n-currentevents' => 'Constata funde de information sur eventus current',
-'tooltip-n-recentchanges' => 'Li liste de nov changes vice wiki',
-'tooltip-n-randompage' => 'Cargar un págine sporadic',
-'tooltip-n-help' => 'Li loco por constatar auxilie',
-'tooltip-t-whatlinkshere' => 'Liste de omni págines que liga quel por ci',
-'tooltip-t-recentchangeslinked' => 'Nov changes in págines ligat in ti págine',
+'tooltip-search-fulltext' => 'Serchar págines, queles contene ti textu',
+'tooltip-p-logo' => 'Principal págine',
+'tooltip-n-mainpage' => 'Monstrar li principal págine',
+'tooltip-n-mainpage-description' => 'Visitar li principal págine',
+'tooltip-n-portal' => 'Pri li projecte, quo tu posse far, u tu posse trovar alquó',
+'tooltip-n-currentevents' => 'Fundal informationes pri actual evenimentes',
+'tooltip-n-recentchanges' => 'Liste de nov changes in li wiki',
+'tooltip-n-randompage' => 'Cargar un págine in hasard',
+'tooltip-n-help' => 'Monstrar un págine de auxilie',
+'tooltip-t-whatlinkshere' => 'Liste de omni págines ligant a ci.',
+'tooltip-t-recentchangeslinked' => 'Nov changes in págines ligat fro ti págine',
 'tooltip-feed-rss' => 'Feed RSS por ti págine',
 'tooltip-feed-atom' => 'Feed atom por ti págine',
 'tooltip-t-contributions' => 'Vider li liste de contributiones de ti usator',
 'tooltip-t-emailuser' => 'Inviar un e-mail por ti usator',
 'tooltip-t-upload' => 'Cargar files',
-'tooltip-t-specialpages' => 'Liste de omni págines special',
-'tooltip-t-print' => 'Version por impression de ti págine',
-'tooltip-t-permalink' => 'Catenun permanent por ti revision de págine',
-'tooltip-ca-nstab-main' => 'Vider li págine de contenete',
+'tooltip-t-specialpages' => 'Liste de omni special págines',
+'tooltip-t-print' => 'Printabil version de ti-ci págine',
+'tooltip-t-permalink' => 'Permanent referentie a ti version del págine',
+'tooltip-ca-nstab-main' => 'Vider li articul',
 'tooltip-ca-nstab-user' => 'Vider li págine de usator',
 'tooltip-ca-nstab-media' => 'Vider li págine de media',
 'tooltip-ca-nstab-special' => 'Ti es un págine special, vu ne posse redacter it',
 'tooltip-ca-nstab-project' => 'Vider li págine de projecte',
 'tooltip-ca-nstab-image' => 'Vider li págine de figura',
 'tooltip-ca-nstab-mediawiki' => 'Vider li missage de sistema',
-'tooltip-ca-nstab-template' => 'Vider li avise',
+'tooltip-ca-nstab-template' => 'Monstrar li shablone',
 'tooltip-ca-nstab-help' => 'Vider li págine de auxilie',
-'tooltip-ca-nstab-category' => 'Vider li págine de categorie',
+'tooltip-ca-nstab-category' => 'Monstrar li categorial págine',
 'tooltip-minoredit' => 'Marcar to ci quam un redaction minori',
 'tooltip-save' => 'Conservar tui changes',
-'tooltip-preview' => 'Monstrar tui changes, pleser usar ante de conservar!',
+'tooltip-preview' => 'Previder tui changes. Ples usar to antequam conservar!',
 'tooltip-diff' => 'Monstrar quel changes vu executet in li textu',
 'tooltip-compareselectedversions' => 'Vider li differenties inter li du revisiones selectet de ti págine',
 'tooltip-watch' => 'Adjunter ti págine por tui liste de págines vigilat',
 'tooltip-recreate' => 'Recrear li págine por plan anteriori de delete',
 'tooltip-upload' => 'Comensar cargament de file',
-'tooltip-rollback' => '"Rollback" reverte redaction(es) de ti págine executet per li ultim contributor in un claccar',
-'tooltip-undo' => '"Undo" reverte ti redaction e inaugura li forme de redaction in modo de prevision. It concede adjuntent un rason in li summarium.',
+'tooltip-rollback' => 'Desfá omni ultim changes del págine, queles ha esset executet del sam usator, per un sol clacca',
+'tooltip-undo' => '«Desfar» reverte solmen ti-ci redaction e monstra li resultate in prevision, porque tu posse indicar un rason in li linea de resumé.',
 'tooltip-preferences-save' => 'Conservar preferenties',
-'tooltip-summary' => 'Intrar un summarium curt',
+'tooltip-summary' => 'Ples intrar un curt resummation.',
 
 # Stylesheets
 'vector.css' => '/* CSS colocat ci va afectar usatores de pelle Vector */',
@@ -1247,7 +1302,7 @@ Pleser fuse les manualmen.'''",
 'file-info-size' => '$1 × $2 pixeles, dimension de file: $3, tip MIME: $4',
 'file-nohires' => 'Nequant resolution max alt disponibil.',
 'svg-long-desc' => '(file SVG, nominalmen $1 × $2 pixeles, mesura de file: $3)',
-'show-big-image' => 'Resolution complet',
+'show-big-image' => 'Original file',
 
 # Special:NewFiles
 'newimages' => 'Galerie de nov images',
@@ -1257,11 +1312,11 @@ Pleser fuse les manualmen.'''",
 'video-dims' => '$1, $2×$3',
 
 # Bad image list
-'bad_image_list' => 'Li formate es quam seque:
+'bad_image_list' => 'Formate:
 
-Solmen listar detallies (lineas comensant che *) es considerat.
-Li prim catenun in un linea deve esser un catenun por un file maliciosi.
-Alqual catenunes subsequent in li linea identic es considerat por esser exceptiones, i.e. págines u li file posse ocurrer in linea identic.',
+Solmen lineas comensant per un * es considerat.
+Strax pos li * deve secuer un referentie a un mal file.
+Secuent referenties in li sam linea defini exceptiones, u li file es leyalmen monstrat.',
 
 # Metadata
 'metadata' => 'Metadata',
@@ -1282,10 +1337,6 @@ Altri va esser ocultat per contumacie.
 * longitúdine
 * altitudine',
 
-# External editor support
-'edit-externally' => 'Redacter ti file usant un aplication extern',
-'edit-externally-help' => '(Vider li [https://www.mediawiki.org/wiki/Manual:External_editors instructiones de installation] por plu information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'omni',
 'namespacesall' => 'omni',
@@ -1357,7 +1408,7 @@ Vu posse anc [[Special:EditWatchlist|usar li redactor uniform]].',
 'version-software-version' => 'Version',
 
 # Special:SpecialPages
-'specialpages' => 'Págines special',
+'specialpages' => 'Special págines',
 'specialpages-group-maintenance' => 'Raportes de conservation',
 'specialpages-group-other' => 'Altri págines special',
 'specialpages-group-login' => 'Intrar / crear conto',
index 626ea8d..369bb41 100644 (file)
@@ -96,7 +96,6 @@ $messages = array(
 'tog-minordefault' => 'Me ka nhoro da na orü ntakịrị níle',
 'tog-previewontop' => 'Zitú ntàkịrị mgbe opuzọr zi igbe orü',
 'tog-previewonfirst' => 'Zitú nke takírí orü mbu',
-'tog-nocache' => 'Bì-chi cache na otúzọr intaneti gi',
 'tog-enotifwatchlistpages' => 'Türüm e-mail mgbe ihü nor na ndetu ihem ne lé gbanwere',
 'tog-enotifusertalkpages' => 'Türüm e-mail ngbe ébé okwu ndi na banife nkem gbanwere',
 'tog-enotifminoredits' => 'Türüm e-mail maka orü ntakịrị ihüá',
@@ -216,7 +215,6 @@ $messages = array(
 'qbedit' => 'Mèzi',
 'qbpageoptions' => 'Ihü nka',
 'qbmyoptions' => 'Ihüm',
-'qbspecialpages' => 'Ihü mkpà',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -409,9 +407,6 @@ Biko chi ihe á na áká [[Special:ListUsers/sysop|onye íshí]], dètú URL.',
 'badtitletext' => 'Íshí ihü Í chọrọ à díghị ézíbóté, efù, mà ȯ dị jikodo di jikodo nke ojö na nke íshí asụsụ-mmékotárí ma wiki-mmékotárí.
 O nwèríkí nwé édé ótù ma nke ozor nke ékwéghị na íshí ihü.',
 'perfcached' => 'Ómárí á kachẹrẹ na o nwẹrẹ ki a kugwaghị ya na ogẹ di nso. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'wrong_wfQuery_params' => 'Okè nke défiere gá Ájújúwf()<br />
-Orürü: $1<br />
-Ájújú: $2',
 'viewsource' => 'Zi mkpurụ',
 'actionthrottled' => 'Mmèmé a puziélé',
 'protectedpagetext' => 'Ihüá cedolụ maka orürü ạ gáa bá.',
@@ -480,7 +475,7 @@ Biko meríáríá ya.',
 'loginlanguagelabel' => 'Asụsụ: $1',
 
 # Change password dialog
-'resetpass' => 'Gbanwe okwu éjị à gáfe',
+'changepassword' => 'Gbanwe okwu éjị à gáfe',
 'resetpass_header' => 'Gbanwe okwúngáfè nke bùwá',
 'oldpassword' => 'Mkpurụ okwu ejị a gafẹ ochië:',
 'newpassword' => 'Mkpurụ okwu ejị a gafẹ nke ohúrù',
@@ -660,7 +655,6 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 'revdelete-radio-unset' => 'Mbà',
 'revdelete-log' => 'Mgbághapụtà:',
 'revdel-restore' => 'gbanwe ọtù ọ gị zí',
-'revdel-restore-deleted' => 'orürü gbakashịrị',
 'pagehist' => 'Ịta ihüá',
 'deletedhist' => 'Ákíkó mbu bakashịrị',
 'revdelete-reasonotherlist' => 'Mgbághàpụtá ozor',
@@ -693,11 +687,7 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 # Search results
 'searchresults' => 'Ndọfùtà nchọwa',
 'searchresults-title' => "Ihe futárá nchowá màkà ''$1''",
-'searchresulttext' => 'Màkà okwu nke ozor básárá í tu {{SITENAME}}, lé [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Í tụrụ \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|ihü nílé bidóró "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|ihü nílé na gá "$1"]])',
-'searchsubtitleinvalid' => "Í tùrù '''$1'''",
 'titlematches' => 'Íshí ihü dàbànyèrè',
-'notitlematches' => 'Ọ díghì íshí ihü dí kà nke á hù',
 'textmatches' => 'Mkpụrụ édémédé nwèrè ihü ȯ dị na',
 'notextmatches' => 'Mkpụrụ édémédé enwéghị ihü ȯ dị na',
 'prevn' => '{{PLURAL:$1|$1}} nke àzú',
@@ -706,7 +696,6 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 'nextn-title' => '{{PLURAL:$1|Ihe fútárá|Ihe fútárá}} nke sò nke $1',
 'shown-title' => 'Zí $1 {{PLURAL:$1|ihe fútárá|ihe fútárá}} na ótù ihü',
 'viewprevnext' => 'Lé ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Màkà nchöwa',
 'searchmenu-new' => "'''Ké ihü \"[[:\$1]]\" na wiki nke á!'''",
 'searchprofile-articles' => 'Ihü ihe dị',
 'searchprofile-project' => 'Ihü Nkwádo na Orürü',
@@ -730,13 +719,9 @@ Okwu ụmà: '''({{int:cur}})''' = gbánwe na nké orü mbu, '''({{int:last}})''
 'searcheverything-enable' => 'Chọwa na ébé nílé',
 'searchrelated' => 'nke kọlu',
 'searchall' => 'nke níle',
-'nonefound' => "'''Mà kwá''': Náni áhàama ótù dìkàrì Í tuó ya na áká onwe.
-Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé (bu kwá ihü okwu, àtụ, échétá ma échetàghị), ma Í gi ji áhàama Í chọrọ màkà ótù okwu íshí.",
-'powersearch' => 'Nchöwá nkè íshí',
 'powersearch-legend' => 'Nchöwá nkè íshí',
 'powersearch-ns' => 'Tuo na ímé:',
 'powersearch-redir' => 'Dètú nkúfù',
-'powersearch-field' => 'Chọwa màkà',
 'powersearch-togglelabel' => 'Lechányá:',
 'powersearch-toggleall' => 'Haníle',
 'powersearch-togglenone' => 'Efù',
@@ -744,7 +729,6 @@ Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé
 # Preferences page
 'preferences' => 'Otu ha dosẹrẹ ihe',
 'mypreferences' => 'Otú m shị na dose ihem',
-'changepassword' => 'Gbanwe okwu éjị à gáfe',
 'prefs-skin' => 'Akpụkpọ',
 'skin-preview' => 'Lètú',
 'datedefault' => 'Otú é shị na dose ihe efù',
@@ -763,7 +747,6 @@ Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé
 'rows' => 'Ǹdịlị:',
 'columns' => 'Ogìdì:',
 'searchresultshead' => 'Chọwa',
-'resultsperpage' => 'Nlé na ihü:',
 'stub-threshold-disabled' => 'Ápụgị òkò',
 'timezonelegend' => 'Nkeji ogẹ:',
 'localtime' => 'Ogẹ ebeanọr:',
@@ -863,7 +846,6 @@ Nwàné ótù okwu íshí na ihe Í nè tú jí ''háníle:'' Í tuó ihe nílé
 'recentchanges-feed-description' => 'Chóputà ihe ógẹ ǹsò na wiki ímé órírí nke á.',
 'recentchanges-label-minor' => 'Ihe bu orü ntakírí',
 'recentchanges-legend-newpage' => '$1 - ihü ohúrù',
-'rcnote' => "Na àlà {{PLURAL:$1|bu gbanwere '''1'''|bu gbanwere mgbèdè nke '''$1'''}} na mgbèdè {{PLURAL:$2|chi|chi '''$2'''}}, na mgbe $5, $4.",
 'rclistfrom' => 'Zìrí ihe gbanwere ọhúrù shí $1',
 'rcshowhideminor' => 'orü ntákírí $1',
 'rcshowhidebots' => 'bot $1',
@@ -1063,9 +1045,6 @@ Ubwa, o na ga [[$2]].',
 'allpagesto' => 'Zi na ihu ihü ná kwúshí nà:',
 'allarticles' => 'Ihü níle',
 'allinnamespace' => 'Ihü níle (ámááhạ $1)',
-'allnotinnamespace' => 'Ihü níle (a noghị ime ámááhạ $1)',
-'allpagesprev' => 'Nke gafèrè',
-'allpagesnext' => 'Nàíhú',
 'allpagessubmit' => 'Gá',
 
 # Special:Categories
@@ -1201,7 +1180,6 @@ Ngá bu ihe hé mèkwàrà nà ihü '''$1''':",
 'undeletebtn' => 'Dòmárí àzụ́',
 'undeletelink' => 'lé/dosimá',
 'undeleteviewlink' => 'lé',
-'undeletereset' => "Mẹ̀wárí n'ísí",
 'undeletecomment' => 'Mgbághapụtà:',
 'undelete-search-submit' => 'Chọwa',
 'undelete-show-file-submit' => 'Eeh',
@@ -1252,16 +1230,13 @@ Ngá bu ihe hé mèkwàrà nà ihü '''$1''':",
 # Block/unblock
 'block' => "Gbàchí ọ'bànifé",
 'blockip' => "Gbàchí ọ'bànifé",
-'blockip-title' => "Gbàchí ọ'bànifé",
 'blockip-legend' => "Gbàchí ọ'bànifé",
 'ipadressorusername' => "IP mà ọ bu áhà ọ'bànifé:",
 'ipbexpiry' => 'Gbá okà:',
 'ipbreason' => 'Mgbághapụtà:',
-'ipbreasonotherlist' => 'Mgbághàpụtá ozor',
 'ipbsubmit' => "Kwàchí ọ'bànifé nkèá",
 'ipbother' => 'Ógẹ ozor',
 'ipboptions' => 'àmànì 2:2 hours,chi 1:1 day,chi 3:3 days,izù 1:1 week,izù 2:2 weeks,önwa1:1 month,önwa 3:3 months,önwa 6:6 months,afọr 1:1 year,ógè énwéghị ùbe:infinite',
-'ipbotheroption' => 'nke ozor',
 'ipb-confirm' => 'Kwé mgbáchí',
 'ipb-unblock-addr' => 'Ákwàchịrị $1',
 'ipb-unblock' => "Ákwàchịrị áhà ọ'bànifé ma IP",
@@ -1309,7 +1284,6 @@ Biko kpàchá kwa ánya Í mà na ihe í ne mé na ógè gbárá mbu mgbè Í g
 
 Na nke, Í gi páfù na Í mékȯtá ihü nà onwé gi ọ bu nà Í chọrọ.",
 'movearticle' => 'Páfù ihü:',
-'movenologin' => 'I bátà bò',
 'newtitle' => 'Gá íshí édémédé nke:',
 'move-watch' => 'Lèmá ihü ó shị na ihü ȯ na gá',
 'movepagebtn' => 'Páfù ihü',
@@ -1317,9 +1291,6 @@ Na nke, Í gi páfù na Í mékȯtá ihü nà onwé gi ọ bu nà Í chọrọ."
 'movepage-moved' => '\'\'\'"$1" páfùrù Í gá "$2"\'\'\'',
 'articleexists' => ' Ihü ótù nwèkwàrà áhà nke áhù, mà áhà Í chọrọ à búghị ézíboté.
 Biko wèré áhà ozor.',
-'talkexists' => "'''Ihü na onwe ya páfùrù ǹkè ómá, mànà hè nweríkí puzié ihü okwu ya  màkà ótù ya dìkwà na íshí ihü nke òhúhru.
-Biko tinyé ha nà áká gi.'''",
-'movedto' => 'ó shifụrụ gá',
 'movetalk' => 'Páfù ihü okwu nke ya',
 'move-subpages' => 'Páfù ihü-n-ímé (nè rú $1)',
 'move-talk-subpages' => 'Páfù ihü-n-ímé nke ihü okwu (nè rú $1)',
@@ -1603,15 +1574,10 @@ Nke ozor gí zonari na áká onwe ha.
 'exif-urgency-low' => 'Nàlà ($1)',
 'exif-urgency-high' => 'Nélú ($1)',
 
-# External editor support
-'edit-externally' => 'Rüo na élú usòrò nke na ngwa ọrụ nsónùsòrò nke ọzȯ',
-'edit-externally-help' => '(Lé nà [https://www.mediawiki.org/wiki/Manual:External_editors nkụzí mbídó] màkà nkúzí ozor)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'nke níle',
 'namespacesall' => 'nke níle',
 'monthsall' => 'nke níle',
-'limitall' => 'nke níle',
 
 # Delete conflict
 'recreate' => 'Ké ya ohúrù',
@@ -1708,7 +1674,6 @@ Nke ozor gí zonari na áká onwe ha.
 
 # Special:ComparePages
 'comparepages' => 'Má àtù ihü',
-'compare-selector' => 'Má àtù orü dírí na élú ihü',
 'compare-page1' => 'Ihü 1',
 'compare-page2' => 'Ihü 2',
 'compare-rev1' => 'Orübà 1',
index 386ae43..932a6cd 100644 (file)
@@ -13,7 +13,7 @@
 $fallback = 'zh-cn, zh-hans';
 
 $messages = array(
-# 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).
+# 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).
 'mainpage' => 'ꀨꏾꌠ',
 
 );
index 65eb816..0449a12 100644 (file)
@@ -7,18 +7,30 @@
  * @ingroup Language
  * @file
  *
+ * @author Emperyan
  * @author Hercule
  * @author Zanimum (on ik.wikipedia.org)
  */
 
 $messages = array(
-# 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).
-'helppage'             => 'Help:anniqsuiruq',
-'mainpage'             => 'Makpiġaaq Kanna',
-'mainpage-description' => 'Makpibaaq Kanna',
-'portal-url'           => 'Project:qargi',
+# Dates
+'january' => 'Siqiññaatchiaq',
+'february' => 'Siqiññaasugruk',
+'march' => 'Paniqsiivik',
+'april' => 'Tiŋmirrat Tatqiat',
+'may_long' => 'Suvluġvik',
+'june' => 'Iġñivik',
+'july' => 'Isavik',
+'august' => 'Tiŋŋivik',
+'september' => 'Niġlaalgit Tiŋŋiviat',
+'october' => 'Nuliaġvik',
+'november' => 'Quyyavik',
+'december' => 'Uvluiḷaq',
 
-# Search results
-'searchhelp-url' => 'Help:anniqsuiruq',
+# 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).
+'helppage' => 'Help:anniqsuiruq',
+'mainpage' => 'Makpiġaaq Kanna',
+'mainpage-description' => 'Makpibaaq Kanna',
+'portal-url' => 'Project:qargi',
 
 );
index 8cea6d0..39705c5 100644 (file)
@@ -74,7 +74,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbedit' => 'ᓱᖁᓯᖅᐹ',
-'qbspecialpages' => 'ᐱᔨ ᒪᑉᐱᑕᖅ',
 
 'errorpagetitle' => 'ᑕᒻᒪᓇᖅᑐᖅ',
 'help' => 'ᖃᔭᓕᑉᐹ',
@@ -101,13 +100,12 @@ $messages = array(
 'jumptonavigation' => 'ᒥᐊᓂᕆᕚ',
 'jumptosearch' => 'ᐃᕚᖅᐳᖅ',
 
-# 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).
+# 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).
 'aboutsite' => 'ᒥᒃᓵᓂ {{SITENAME}}',
 'aboutpage' => 'Project:ᒥᒃᓵᓂ',
 'currentevents' => 'ᐱᒋᕗᖅ ᐱᐅᓯᖅ',
 'currentevents-url' => 'Project:ᐱᒋᕗᖅ ᐱᐅᓯᖅ',
 'edithelp' => 'ᓱᖁᓯᖅᐹ ᐃᑯᕐᕆᐹ',
-'edithelppage' => 'Help:ᐃᑯᕐᕆᐹ',
 'mainpage' => 'ᐊᒥᖅ',
 'mainpage-description' => 'ᐊᒥᖅ',
 'portal' => 'ᖃᒡᒋᖅ',
@@ -116,8 +114,6 @@ $messages = array(
 'privacypage' => 'Project:ᓇᒻᒥᓂᖅ ᐱᓕᕆᕝᕕᖃᐅᖅᑐᓄᑦ ᐊᐅᓚᑕᐅᔪᑦ ᐊᑐᐊᒐᖅ, ᐱᓇᓱᐊᕐᓂᖅ',
 
 'youhavenewmessages' => 'ᐃᓕᔅᓯ ᐱᒋᕚ $1 ($2).',
-'newmessageslink' => 'ᐱᒋᕗᖅ ᑭᒡᒐᐹ',
-'newmessagesdifflink' => 'ᐊᓐᓂᑐᔪᖅ ᐊᓯᐊᙳᑐᖅ',
 'editsection' => 'ᓱᖁᓯᖅᐹ ᐃᓚ',
 'editold' => 'ᓱᖁᓯᖅᐹ',
 'editsectionhint' => 'ᓱᖁᓯᖅᐹ ᐃᓚᖏᐅᑎᑎᑦᓯᒍᑎ: $1',
@@ -143,8 +139,6 @@ $messages = array(
 'editinginterface' => "'''ᐃᓂᖅᑎᕈᑎ—''' ᐋᕼᐊ ᓱᖁᓯᖅᐹ ᐃᑭᐊᖅ ᒪᑉᐱᑕᖅ ᐊᑐᐃᓐᓇᓯᕗᖅ ᐄᔭᑦᓴᖅ ᖃᕋᓴᐅᔭᖅ ᑕᖅᓴᓕᖅᐹ ᐃᑭᐊᖅ ᐊᕿᑦᑐᖅ ᖃᕆᑕᐅᔭᐅᑉ ᑎᑎᕋᕐᕕᖓ. ᐊᓯᐊᙳᑐᖅ ᐃᑭᐊᖅ ᒪᑉᐱᑕᖅ ᐃᓄᒃᑎᑐᑦ ᐅᐃᑭᐱᑎᐊ ᐊᓪᓚᖑᖅᑐᐊᖅ ᓇᑭᒪᖅᐳᖅ ᖃᑕᙳᑎ.",
 
 # Login and logout pages
-'welcomecreation' => "== ᐊᕆᐅᙵᐃᐹ, $1! ==
-ᐱᒋᕗᖅ ᖃᑕᙳᑎ ᐅᐃᑭᐱᑎᐊ ᑮᓇᐅᔭᖁᑎᖃᕐᕕᒃ ᐃᓱᐃᓪᓕᖓᐃᑦᔭᐹ. ᐃᖅᑑ ᓱᖁᓯᖅᐹ {{SITENAME}} ᐃᓐᓂᐊᑐᖅ «''ᓂᐱ ᐊᒥ''»",
 'yourname' => 'ᐅᐃᑭᐱᑎᐊ ᐊᑎᖅ',
 'yourpassword' => 'ᐅᐃᑭᐱᑎᐊ ᐸᓚᙵᓴᐅᑎ',
 'yourpasswordagain' => 'ᑕᒪᑐᒪᓃᖅᐹ ᐃᒃᓯᒐᖅᑐᖅ ᐅᐃᑭᐱᑎᐊ ᐸᓚᙵᓴᐅᑎ',
@@ -200,7 +194,6 @@ $messages = array(
 
 # Search results
 'nextn' => 'ᑕᒡᒐ {{PLURAL:$1|$1}}',
-'powersearch' => 'ᕿᓐᓇᕆᒃᓴᕐᓂᖅ',
 
 # Preferences page
 'mypreferences' => 'ᐊᒥ ᐱᒃᑯᒪᓂᖅᐹᖅ',
@@ -227,7 +220,6 @@ $messages = array(
 'recentchangeslinked' => 'ᐊᓯᐊᙳᑐᖅ ᒥᑦᓵᓯᔪᖅ',
 'recentchangeslinked-feed' => 'ᐊᓯᐊᙳᑐᖅ ᒥᑦᓵᓯᔪᖅ',
 'recentchangeslinked-toolbox' => 'ᐊᓯᐊᙳᑐᖅ ᒥᑦᓵᓯᔪᖅ',
-'recentchangeslinked-noresult' => '0 ᐊᓯᐊᙳᑐᖅ ᐃᑦᓯᕕᒻᒥᐅᓯᖅᐹ ᒪᑉᐱᑕᖅ ᑕᑯᕙᓪᓚᑐᖅ ᓱᓪᓗᒃ ᑕᒪᑐᒪᓂ ᑐᒥᑯ',
 
 # Upload
 'upload' => 'ᒪᑉᐱᐹ ᓇᓗᓇᐃᔭᐅᑎᑦ',
@@ -270,14 +262,12 @@ $messages = array(
 # Special:AllPages
 'allpages' => 'ᓱᓇᒥᑦᑐᖅ ᒪᑉᐱᑕᖅ',
 'nextpage' => 'ᑕᒡᒐ ᒪᑉᐱᑕᖅ ($1)',
-'allpagesprev' => 'ᑐᓄᓪᓕᐹᖅ',
-'allpagesnext' => 'ᑕᒡᒐ',
 'allpagessubmit' => 'ᐊᐃᕗᖅ',
 
 # Special:Categories
 'categories' => 'ᓄᐊᑉᐳᑦ',
 
-# E-mail user
+# Email user
 'emailuser' => 'ᑭᒍᑎᐅᑉ ᓯᑎᓂᖅᐹᖓ ᐃᓄᒃ',
 'emailfrom' => 'ᓇᑭᑦ',
 'emailmessage' => 'ᑭᒡᒐᐹ',
@@ -337,7 +327,6 @@ $messages = array(
 # Move page
 'move-page-legend' => 'ᐅᐊᔪᖅ ᒪᑉᐱᑕᖅ',
 'movearticle' => 'ᐅᐊᔪᖅ ᒪᑉᐱᑕᖅ',
-'movedto' => 'ᐅᐊᔪᖅ',
 'movelogpage' => 'ᐅᐊᔪᖅ ᓂᐱ',
 'movereason' => 'ᐃᓱᒪᒃᓴᖅᓯᐅᕈᓐᓇᑦᑎᐊᕐᓂᖅ:',
 'delete_and_move' => 'ᓂᐸᖅᑎᐹ  ᐊᒻᒪ ᐅᐊᔪᖅ',
@@ -378,7 +367,7 @@ $messages = array(
 'variantname-ike-latn' => 'ilisautik',
 'variantname-iu' => 'disable',
 
-# EXIF tags
+# Exif tags
 'exif-imagelength' => 'ᖁᑦᓯᖕᓂᖅ',
 'exif-imagedescription' => 'ᐃᓄᙳᐊᖅ ᐊᑎᖅ',
 'exif-colorspace' => 'ᒥᖑᐊᕈᑎᒥᑎᖅᐹ',
index 4325b71..a884787 100644 (file)
@@ -58,9 +58,6 @@ $messages = array(
 'navigation' => 'mianirivaa',
 'and' => '&#32;amma',
 
-# Cologne Blue skin
-'qbspecialpages' => 'piji mappitaq',
-
 # Vector skin
 'vector-view-edit' => 'Suqusiqpaa',
 
@@ -87,13 +84,12 @@ $messages = array(
 'jumptonavigation' => 'mianirivaa',
 'jumptosearch' => 'ivaaqpuq',
 
-# 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).
+# 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).
 'aboutsite' => 'miksaani {{SITENAME}}',
 'aboutpage' => 'Project:miksaani',
 'currentevents' => 'pigivuq piusiq',
 'currentevents-url' => 'Project:pigivuq piusiq',
 'edithelp' => 'ikurripaa suqusiqpaa',
-'edithelppage' => 'Help:suqusiqpaa',
 'mainpage' => 'amiq',
 'mainpage-description' => 'amiq',
 'portal' => 'qaggiq',
@@ -102,8 +98,6 @@ $messages = array(
 'privacypage' => 'Project:namminiq pilirivviqauqtunut aulataujut atuagaq, pinasuarniq',
 
 'youhavenewmessages' => 'ilissu pigivaa $1 ($2).',
-'newmessageslink' => 'pigivuk kiggapaa',
-'newmessagesdifflink' => 'annitujuq asiaNngutuq',
 'editsection' => 'suqusiqpaa',
 'editold' => 'suqusiqpaa',
 'editlink' => 'suqusiqpaa',
@@ -127,8 +121,6 @@ $messages = array(
 'editinginterface' => "'''iniqtiruti—''' aaha suqusiqpaa iqiak mappitaq atuinnasivuq iijatsaq qarasaujaq taqsaliqpaa ikiaq aqittuq qaritaujaup titirarvinga. asiaNngutuq ikiaq mappitaq inuktitut uikipitia allanguqtuaq nakimaqpuq qatannguti.",
 
 # Login and logout pages
-'welcomecreation' => "== ariunngaipaa, $1! ==
-pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiqpa{{SITENAME}} inniatuq—«''nipi ami''»",
 'yourname' => 'uikipitia atiq',
 'yourpassword' => 'uikipitia palanngasauti',
 'yourpasswordagain' => 'tamatumaniiqpaa iksigaqtuq uikipitia palanngasauti',
@@ -181,7 +173,6 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
 
 # Search results
 'nextn' => 'tagga {{PLURAL:$1|$1}}',
-'powersearch' => 'ivaaqpuq',
 
 # Preferences page
 'mypreferences' => 'mi pikkumaniqpaaq',
@@ -203,7 +194,6 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
 'recentchangeslinked' => 'asiaNngutuq mitsaasijuq',
 'recentchangeslinked-feed' => 'asiaNngutuq mitsaasijuq',
 'recentchangeslinked-toolbox' => 'asiaNngutuq mitsaasijuq',
-'recentchangeslinked-noresult' => '0 asiaNngutuq itsivimmiusiqpaa mappitaq takuvallatuq sulluk tamatumani tumiku',
 
 # Upload
 'upload' => 'mappipaa nalinaijatit',
@@ -243,14 +233,12 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
 # Special:AllPages
 'allpages' => 'sunamittuq mappitaq',
 'nextpage' => 'tagga mappitaq ($1)',
-'allpagesprev' => 'tunullipaaq',
-'allpagesnext' => 'tagga',
 'allpagessubmit' => 'aivuk',
 
 # Special:Categories
 'categories' => 'nuapput',
 
-# E-mail user
+# Email user
 'emailfrom' => 'nakit',
 'emailmessage' => 'kiggapaa',
 'emailsend' => 'qiutsavigivaa',
@@ -309,7 +297,6 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
 # Move page
 'move-page-legend' => 'uajuq mappitaq',
 'movearticle' => 'uajuq mappitaq',
-'movedto' => 'uajuq',
 'movelogpage' => 'uajuq nipi',
 'delete_and_move' => 'nipaqtipaa amma uajuq',
 
@@ -346,7 +333,7 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
 'variantname-ike-latn' => 'ilisautik',
 'variantname-iu' => 'disable',
 
-# EXIF tags
+# Exif tags
 'exif-imagelength' => 'qutsingniq',
 'exif-imagedescription' => 'inunnguaq atiq',
 'exif-colorspace' => 'minguarutimitiqpaa',
index 68acfcc..6b880d5 100644 (file)
@@ -57,7 +57,6 @@ $messages = array(
 'tog-minordefault' => 'Markaan amin nga inurnos a kas sigud a bassit',
 'tog-previewontop' => 'Ipakita ti panagipadas sakbay ti pagurnosan a kahon',
 'tog-previewonfirst' => 'Ipakita ti pinadas iti umuna a panag-urnos',
-'tog-nocache' => 'Ibaldado ti panagilemmeng ti pabasabasa ti panid',
 'tog-enotifwatchlistpages' => 'Esuratannak no mabaliwan ti panid wenno papeles idiay listaan dagiti bambantayak',
 'tog-enotifusertalkpages' => 'Esuratannak no mabaliwan ti panid ti tungtungak',
 'tog-enotifminoredits' => 'Esuratannak pay para kadagiti bassit a panag-urnos kadagiti panid ken papeles',
@@ -192,7 +191,6 @@ $messages = array(
 'qbedit' => 'Urnosen',
 'qbpageoptions' => 'Daytoy a panid',
 'qbmyoptions' => 'Pampanidko',
-'qbspecialpages' => 'Espesial a pampanid',
 'faq' => 'MAS',
 'faqpage' => 'Project:MAS',
 
@@ -311,8 +309,8 @@ Kitaen ti [[Special:Version|panid ti bersion]].',
 'youhavenewmessages' => 'Addaanka ti $1 ($2).',
 'youhavenewmessagesfromusers' => 'Adda $1 manipud {{PLURAL:$3|ti sabali nga agar-aramat|kadagiti $3 a sabsabali nga agar-aramat}} ($2).',
 'youhavenewmessagesmanyusers' => 'Adda $1 manipud kadagiti adu nga agar-aramat ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|baro a mensahem|dagiti baro a mensahem}}',
-'newmessagesdifflinkplural' => 'kinaudi {{PLURAL:$1|a sinukatan|a sinuksukatan}}',
+'newmessageslinkplural' => '{{PLURAL:$1|a baro a mensahem|999=a baro a menmensahem}}',
+'newmessagesdifflinkplural' => 'kinaudi a {{PLURAL:$1|sinukatan|999=sinuksukatan}}',
 'youhavenewmessagesmulti' => 'Adda dagiti baro a mensahem iti $1',
 'editsection' => 'urnosen',
 'editold' => 'urnosen',
@@ -412,9 +410,6 @@ Mabalin nga aglaon ti a maysa wenno ad-adu a karakter a saan a mausar kadagiti t
 'perfcachedts' => 'Ti sumaganad a datos ket naidulin, ken naudi a napabaro idi $1. Ti kaadu a {{PLURAL:$4|iti maysa a nagbanagan |dagiti $4 nagbanagan}} ket magun-od idiay pagidulinan.',
 'querypage-no-updates' => 'Dagiti panangpabaro iti daytoy a panid ket agdama a nabaldado. 
 Saan a mipasaradiwa ita dagiti datos ditoy.',
-'wrong_wfQuery_params' => 'Kamali a parametro iti wfQuery()<br />
-Pamay-an: $1<br />
-Panagsapul: $2',
 'viewsource' => 'Kitaen ti taudan',
 'viewsource-title' => 'Kitaen ti taudan para iti $1',
 'actionthrottled' => 'Napabuntog ti aramid',
@@ -446,7 +441,8 @@ Ti administrador a nangserra ket nagited iti daytoy a panagilawlawag "\'\'$3\'\'
 'invalidtitle-knownnamespace' => 'Imbalido a titulo iti nagan ti espasio "$2" ken testo "$3"',
 'invalidtitle-unknownnamespace' => 'Imbalido a titulo iti di-amammo a nagan ti espasio a numero $1 ken testo "$2"',
 'exception-nologin' => 'Saan a nakastrek',
-'exception-nologin-text' => 'Daytoy a panid wenno aramid ket makasapul kenka ti sumrek iti daytoy a wiki.',
+'exception-nologin-text' => 'Pangngaasi a [[Special:Userlogin|sumrek]] tapno maserrekam daytoy a panid wenno tignay.',
+'exception-nologin-text-manual' => 'Pangngaasi a $1 tapno maserrekan daytoy a panid wenno tignay.',
 
 # Virus scanner
 'virus-badscanner' => 'Madi di panaka-aramidna: Di am-ammo a birus a panagskan: "$1"',
@@ -552,7 +548,7 @@ Pangngaasi a padasem manen.',
 'passwordtooshort' => 'Dagiti kontrasenias ket nasken a saan a basbasit ngem {{PLURAL:$1|1 a karakter|$1 a karkarakter}}.',
 'password-name-match' => 'Nasken a ti kontrasenias ket maigiddiat manipud ti naganmo.',
 'password-login-forbidden' => 'Ti panag-usar ti daytoy a nagan ti agar-aramat ken kontrasenias ket naipariten.',
-'mailmypassword' => 'Ipatulod ti esurat ti baro a kontrasenias',
+'mailmypassword' => 'Iyasentar manen ti kontrasenias',
 'passwordremindertitle' => 'Baro a temporario a kontrasenias para iti {{SITENAME}}',
 'passwordremindertext' => 'Adda maysa a tao (mabalin a sika met laeng, manipud iti IP a pagtaengan a $1) ket nagkiddaw ti baro
 a kontrasenias para iti {{SITENAME}} ($4). Ti saan nga agnayon a kontrasenias ti agususar
@@ -604,7 +600,7 @@ No kayatmo nga ited, mausarto daytoy para iti panangited ti pammadayaw para kada
 'user-mail-no-body' => 'Pinadas nga inpatulod ti esurat nga awan linaonna wenno ababa laeng a bagi.',
 
 # Change password dialog
-'resetpass' => 'Sukatan ti kontrasenias',
+'changepassword' => 'Baliwan ti kontrasenias',
 'resetpass_announce' => 'Simrekka a nagus-usar ti temporario a kodigo ti esurat.
 Tapno malpaska a makastrek, nasken a mangikabilka ti baro a kontrasenias ditoy:',
 'resetpass_header' => 'Sukatan ti kontrasenias ti pakabilangan',
@@ -625,7 +621,7 @@ Mabalin a nagballigi ti panagsukatmo ti kontrasenias wenno nagkiddaw ti baro a t
 # Special:PasswordReset
 'passwordreset' => 'Iyasentar manen ti kontrasenias',
 'passwordreset-text-one' => 'Lippasem daytoy a porma tapno maiyasentar manen ti bukodmo a kontrasenias.',
-'passwordreset-text-many' => '{{PLURAL:$1|Agikabil ti maysa kadagiti pagikabilan tapno maiyasentar manen ti bukodmo a kontrasenias.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Agpunno ti maysa kadagiti pagikabilan tapno makaawat ti temporario a kontrasenias babaen ti esurat.}}',
 'passwordreset-legend' => 'Iyasentar manen ti kontrasenias',
 'passwordreset-disabled' => 'Nabaldado dagiti panangiyasentar manen ti kontrasenias iti daytoy a wiki.',
 'passwordreset-emaildisabled' => 'Dagiti langa ti esurat ket nabaldado iti daytoy a wiki.',
@@ -1011,10 +1007,6 @@ Mabalinmo pay a kitaen daytoy a paggiddiatan; dagiti salaysay ket mabirukan idia
 'revdelete-nooldid-title' => 'Imbalido ti napuntaan a panagbaliw',
 'revdelete-nooldid-text' => 'Mabalin a saanmo nga imbaga ti pagpuntaan ti panagbaliw  (dagiti panagbaliwan) ti panagaramid daytoy,
 awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti agdama a panagbaliw.',
-'revdelete-nologtype-title' => 'Awan ti naited a kita ti listaan',
-'revdelete-nologtype-text' => 'Saanmo nga nainaganan ti kita a listaan ti agtungpal daytoy nga aramid.',
-'revdelete-nologid-title' => 'Imbalido a panangikabil dita listaan',
-'revdelete-nologid-text' => 'Saanmo a nainaganan ti puntaan ti listaan a paspasamak ti agaramid daytoy a pagusar wenno ti nainaganan nga inkabil ket saan nga adda idiay.',
 'revdelete-no-file' => 'Awan dayta nainaganan a papeles.',
 'revdelete-show-file-confirm' => 'Sigurado kadi a kayatmo ti mangkita ti naikkat a baliwan ti papeles "<nowiki>$1</nowiki>" a naggapu idi $2 idi $3?',
 'revdelete-show-file-submit' => 'Wen',
@@ -1024,9 +1016,9 @@ awan ti naibaga a panagbaliw, wenno padpadasem nga ilemlemmeng ti agdama a panag
 Dagiti sabsabali nga administrador idiay {{SITENAME}} ket mabalinda a serrekan ti nailemmeng a nagyan ken isubli ti panakaikkatda manen idiay dati nga interface, ngem saan no adda dagiti nainayon a naikabil a panagparit.",
 'revdelete-confirm' => 'Pangngaasi a pasingkedam a kayatmo nga aramiden daytoy, a maawatam dagiti pagbanagan, ket araramidem daytoy a segun iti [[{{MediaWiki:Policy-url}}|ti annuroten]].',
 'revdelete-suppress-text' => "Ti panagdepdep ket usaren '''laeng''' kadagiti sumaganad a kaso;
-* Adda panakabalinna a dakes a pakaammo
-* Di maiparbeng a  kabukbukodan a pakaammo
-* : ''dagiti pagtaengan ken numero ti telepono, numero ti sosial a seguridad, ken dadduma pay.''",
+* Makapataud ti libelo a pakaammo
+* Di maiparbeng a personal a pakaammo
+* : ''dagiti pagtaengan ken numero ti telepono, dagiti numero ti nailian a pakaipakaammuan, ken dadduma pay.''",
 'revdelete-legend' => 'Ikabil dagiti panagiparit ti panagkita',
 'revdelete-hide-text' => 'Testo ti binaliwan',
 'revdelete-hide-image' => 'Ilemmeng ti linaon ti papeles',
@@ -1035,8 +1027,8 @@ Dagiti sabsabali nga administrador idiay {{SITENAME}} ket mabalinda a serrekan t
 'revdelete-hide-user' => 'Nagan ti agar-amat/ti IP a pagtaengan',
 'revdelete-hide-restricted' => 'Depdepen ti datos a naggapu kadagiti administrador ken dagiti sabsabali',
 'revdelete-radio-same' => '(saan a sukatan)',
-'revdelete-radio-set' => 'Makita',
-'revdelete-radio-unset' => 'Nailemmeng',
+'revdelete-radio-set' => 'Nailemmeng',
+'revdelete-radio-unset' => 'Makita',
 'revdelete-suppress' => 'Depdepen ti datos manipud kadagiti administrador ken dagiti sabsabali',
 'revdelete-unsuppress' => 'Ikkaten dagiti pannakaiparit kadagiti naisubli a binaliwan',
 'revdelete-log' => 'Rason:',
@@ -1048,8 +1040,6 @@ $1",
 'logdelete-failure' => "'''Napaay ti panagikabil ti listaan ti panagkita:'''
 $1",
 'revdel-restore' => 'sukatan ti panagkita',
-'revdel-restore-deleted' => 'dagiti naikkat a binaliwan',
-'revdel-restore-visible' => 'dagiti makita a binaliwan',
 'pagehist' => 'Pakasaritaan ti panid',
 'deletedhist' => 'Naikkat a pakasaritaan',
 'revdelete-hide-current' => 'Biddut ti pannakailemmeng ti banag a napetsado a $2, $1: Daytoy ti kinaudi a panagbaliw
@@ -1128,12 +1118,8 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 # Search results
 'searchresults' => 'Dagiti nagbanagan ti panagbiruk',
 'searchresults-title' => 'Dagiti nabirukan a nagbanagan para iti "$1"',
-'searchresulttext' => 'Para iti adu pay a pakaammo a maipanggep ti panagbiruk {{SITENAME}}, kitaem ti [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Nagbirukka  para iti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|amin a panid a mangrugi iti "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|amin a panid nga agsilpo iti "$1"]])',
-'searchsubtitleinvalid' => "Nagbirukka para  iti '''$1'''",
 'toomanymatches' => 'Adu unay ti napasubli nga agpapada, pangngaasi a padasem ti sabali a panagsapul',
 'titlematches' => 'Dagiti kapadpada a titulo ti panid',
-'notitlematches' => 'Awan dagiti kapadpada a titulo ti panid',
 'textmatches' => 'Dagiti agpapada a testo ti panid',
 'notextmatches' => 'Awan dagiti kapadpada a testo ti panid',
 'prevn' => 'napalabas {{PLURAL:$1|$1}}',
@@ -1142,10 +1128,8 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 'nextn-title' => 'Sumaruno a $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}',
 'shown-title' => 'Ipakita ti $1 {{PLURAL:$1|a nagbanagan|kadagiti nagbanagan}}  ti tunggal maysa a panid',
 'viewprevnext' => 'Kitaen ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pagpilian ti panagbiruk',
 'searchmenu-exists' => "'''Adda panid a nanaganan ti \"[[:\$1]]\" iti daytoy a wiki.'''",
 'searchmenu-new' => "'''Partuaten ti panid ti \"[[:\$1]]\" iti daytoy a wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kitaem dagiti panid nga adda kastoy a naipasaruno]]',
 'searchprofile-articles' => 'Dagiti naglaon a panid',
 'searchprofile-project' => 'Tulong ken Gandat a pampanid',
 'searchprofile-images' => 'Sabsabali a midia',
@@ -1166,21 +1150,16 @@ Dagiti salaysay ket mabalin a mabirukan idiay [{{fullurl:{{#Special:Log}}/delete
 'search-interwiki-default' => '$1 dagiti nagbanagan:',
 'search-interwiki-more' => '(adu pay)',
 'search-relatedarticle' => 'Mainaig',
-'mwsuggest-disable' => 'Ibaldado dagiti singasing ti panagbiruk',
 'searcheverything-enable' => 'Agbirukka kadagiti amin a nagan ti espasio',
 'searchrelated' => 'mainaig',
 'searchall' => 'amin',
 'showingresults' => "Maiparang dita baba agingga {{PLURAL:$1|iti '''1''' a nagbanagan|dagiti '''$1''' a nagbanagan}} a mangrugi iti #'''$2'''.",
 'showingresultsnum' => "Maipakpakita dita baba  {{PLURAL:$3|iti '''1''' a nagbanagan|dagiti '''$3''' a nagbanagan}} a mangrugi iti #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Nagbanagan a '''$1''' iti '''$3'''|Dagiti Nagbanagan a '''$1 - $2''' iti '''$3'''}} para iti '''$4'''",
-'nonefound' => "'''Palagip'': Adda laeng bassit dagita nagan ti espasio a masigud a biruken.
-Padasem a  pasarunuan ti panagbiruk mo ti ''all:'' tapno birukem amin a nagyan (mairaman ti kapatangan a pampanid, dagiti plantilia, ken dadduma pay), wenno usarem nga ipasaruno ti kayatmo a nagan ti espasio.",
 'search-nonefound' => 'Awan ti nagbanagan a kapadpada ti sinapul.',
-'powersearch' => 'Napasayat a panagbiruk',
 'powersearch-legend' => 'Napasayat a panagbiruk',
 'powersearch-ns' => 'Agbirukka kadagiti nagan ti espasio:',
 'powersearch-redir' => 'Ilista dagiti baw-ing',
-'powersearch-field' => 'Biruken iti',
 'powersearch-togglelabel' => 'Markaan:',
 'powersearch-toggleall' => 'Amin',
 'powersearch-togglenone' => 'Awan',
@@ -1194,7 +1173,7 @@ Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 'preferences' => 'Kakaykayatan',
 'mypreferences' => 'Kakaykayatan',
 'prefs-edits' => 'Bilang dagiti inurnos:',
-'changepassword' => 'Baliwan ti kontrasenias',
+'prefsnologintext2' => 'Pangngaasi a $1 tapno mabaliwan dagiti kakaykayatam.',
 'prefs-skin' => 'Kudil',
 'skin-preview' => 'Ipadas',
 'datedefault' => 'Awan ti kakaykayatan',
@@ -1217,13 +1196,11 @@ Laglagipem laeng a dagiti pagsurotan nagyan ti {{SITENAME}} ket baka baak.',
 'prefs-email' => 'Pagpilian ti esurat',
 'prefs-rendering' => 'Tabas',
 'saveprefs' => 'Idulin',
-'resetprefs' => 'Dalusan dagiti saan a naidulin a sinuksukatan',
 'restoreprefs' => 'Isubli amin dagiti kasisigud a pannakaiyasentar (kadagiti amin a paset)',
 'prefs-editing' => 'Ur-urnosen',
 'rows' => 'Ar-aray:',
 'columns' => 'Tuk-tukol:',
 'searchresultshead' => 'Biruken',
-'resultsperpage' => 'Nabirukan ti tunggal maysa a panid:',
 'stub-threshold' => 'Pagpatinggaan para iti panagporma ti <a href="#" class="stub">pungol a silpo</a> (dagiti byte):',
 'stub-threshold-disabled' => 'Nabaldado',
 'recentchangesdays' => 'Al-aldaw nga ipakita dagiti kinaudi a binalbaliwan:',
@@ -1238,7 +1215,6 @@ Ti sinoman a makaammo daytoy ket mabalinda a basaen ti listaan ti banbantayam, i
 'localtime' => 'Lokal nga oras:',
 'timezoneuseserverdefault' => 'Usaren ti wiki a kasisigud ($1)',
 'timezoneuseoffset' => 'Sabsabali (inaganan ti tangdan)',
-'timezoneoffset' => 'Tangda¹:',
 'servertime' => 'Oras ti server:',
 'guesstimezone' => 'Agikabil manipud idiay pabasabasam',
 'timezoneregion-africa' => 'Aprika',
@@ -1310,6 +1286,7 @@ Ti esurat a pagtaengam ket saan a maipakita kadagiti agar-aramat nga agkontak ke
 'prefs-tokenwatchlist' => 'Tandaan',
 'prefs-diffs' => 'Sabali',
 'prefs-help-prefershttps' => 'Daytoy a kakaykayatan ket mapakabaelanto iti sumaruno nga iseserrekmo.',
+'prefs-tabs-navigation-hint' => 'Pakaammo: Mabalinmo nga usaren dagiti kanigid ken kanawan a tekla ti pana tapno madaliasat ti baetan dagiti etiketa iti listaan dagiti etiketa.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Ti esurat a pagtaengan ket kasla umiso',
@@ -1495,7 +1472,8 @@ Ti esurat a pagtaengam ket saan a maipakita kadagiti agar-aramat nga agkontak ke
 'recentchanges-label-minor' => 'Daytoy ket bassit a panag-urnos',
 'recentchanges-label-bot' => 'Daytoy a panag-urnos ket inaramid babaen ti maysa a bot',
 'recentchanges-label-unpatrolled' => 'Daytoy a panag-urnos ket saan pay a napatruliaan',
-'rcnote' => "Dita baba ket {{PLURAL:$1|ti '''1''' a naudi a sinukatan|dagiti '''$1''' a naudi a sinukatan}} iti napalabas nga {{PLURAL:$2|aldaw|'''$2''' nga al-aldaw}}, manipud idi $5, $4.",
+'recentchanges-label-plusminus' => 'Ti panagbaliw ti kadakkel ti panid babaen ti bilang dagiti byte',
+'recentchanges-legend-newpage' => '(kitaen pay ti [[Special:NewPages|listaan ti baro a pampanid]])',
 'rcnotefrom' => "Dita baba ket dagiti sinukatan manipud idi '''$2''' (agingga iti '''$1''' a naipakita).",
 'rclistfrom' => 'Ipakita dagiti kabarbaro a sinukatan a mangrugi manipud idi $1',
 'rcshowhideminor' => '$1 dagiti bassit a panag-urnos',
@@ -1957,6 +1935,7 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|nga interwiki|dagiti interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|a silpo|kadagiti silpo}}',
 'nmembers' => '$1 {{PLURAL:$1|a kameng|kamkameng}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|kameng|kamkameng}}',
 'nrevisions' => '$1 {{PLURAL:$1|a panagbalbaliw|kadagiti panagbalbaliw}}',
 'nviews' => '$1 {{PLURAL:$1|a panangkita|kadagiti panangkita}}',
 'nimagelinks' => 'Inusar idiay $1 {{PLURAL:$1|a panid|a pampanid}}',
@@ -1995,10 +1974,8 @@ Tattan ket naibaw-ing idiay [[$2]].',
 'protectedpages' => 'Dagiti nasalakniban a panid',
 'protectedpages-indef' => 'Inggat ingana a salakniban laeng',
 'protectedpages-cascade' => 'Dagiti sariap a salaknib laeng',
-'protectedpagestext' => 'Dagiti sumaganad a panid ket nasalakniban manipud ti pannaka-iyalis wenno panag-urnos',
 'protectedpagesempty' => 'Awan ti pampanid nga agdama a nasalakniban babaen kadagitoy a parametro.',
 'protectedtitles' => 'Dagiti nasalakniban a titulo',
-'protectedtitlestext' => 'Dagiti sumaganad a titulo ket nasalakniban manipud ti pannakapartuat',
 'protectedtitlesempty' => 'Awan dagiti titulo nga agdama a nasalakniban iti dagitoy a parametro.',
 'listusers' => 'Listaan dagiti agar-aramat',
 'listusers-editsonly' => 'Ipakita laeng dagiti agar-aramat nga adda inurnosda',
@@ -2050,9 +2027,6 @@ Mapabassitmo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti agar-arama
 'allpagesto' => 'Ipakita dagiti panid nga agpatingga iti:',
 'allarticles' => 'Amin a pampanid',
 'allinnamespace' => 'Amin a pampanid ($1 a nagan ti espasio)',
-'allnotinnamespace' => 'Amin a pampanid (awan iti $1 a nagan ti espasio)',
-'allpagesprev' => 'Napalabas',
-'allpagesnext' => 'Sumaruno',
 'allpagessubmit' => 'Inkan',
 'allpagesprefix' => 'Iparang dagiti pampanid nga adda pasarunona:',
 'allpagesbadtitle' => 'Ti naited a titulo ti panid ket imbalido wenno adda idi ti sabali a pagsasao wenno interwiki a pasarunona.',
@@ -2222,9 +2196,9 @@ Kontaken ti mannurat:
 surat: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Awanen ti sabali pay a paka-ammo a maipatulod kenka no adda pay dagiti masukatan inggana laeng no sarungkaram daytoy a panid. Mabalin met nga ipasadiwa dagiti bandera ti paka-ammom para amin kadagiti buybuyaem a panid idiay bambantayam.
+Awanton dagiti sabali a pakaammo iti kaso ti adu pay a panagtigtignay malaksid no sarungkaram datoy a panid bayat a nakastrekka. Mabalinmo pay nga iyasentar manen dagiti wagayway ti pakaammo para kadagiti amin a bambantayam a panid idiay listaan ti bambantayam.
 
-Ti gayyemmo ti {{SITENAME}} a sistema ti pagpa-ammo
+Ti mannakigayyem a sistema ti panagpaammo ti {{SITENAME}} 
 
 --
 Ti panagsukat ti kasasaad ti esurat a pagpa-ammom, sarungkaram ti
@@ -2396,7 +2370,6 @@ Addaanka ngata ti madi a silpo, wenno ti panagbaliw ket naipasubli wenno naikkat
 'undeletebtn' => 'Isubli',
 'undeletelink' => 'kitaen/isubli',
 'undeleteviewlink' => 'kitaen',
-'undeletereset' => 'Isubli',
 'undeleteinvert' => 'Baliktaden ti napili',
 'undeletecomment' => 'Rason:',
 'undeletedrevisions' => '{{PLURAL:$1|1 a  binaliwan|dagiti $1 a binaliwan}} ti naisubli',
@@ -2486,7 +2459,6 @@ Ti naudi a listaan ti pannakaserra ket adda dita baba tapno mausar a reperensia:
 'block' => 'Seraan ti agar-aramat',
 'unblock' => 'Ikkaten ti serra ti agar-aramat',
 'blockip' => 'Serraan ti agar-aramat',
-'blockip-title' => 'Serraan ti agar-aramat',
 'blockip-legend' => 'Serraan ti agar-aramat',
 'blockiptext' => 'Usaren ti kinabuklan dita baba tapno maserraan ti panagsurat manipud iti naisangayan nga IP a pagtaengan wenno nagan ti agar-aramat.
 Usaren laeng daytoy tapno pawilan ti bandalismo, ken panagtunos iti [[{{MediaWiki:Policy-url}}|annuroten]].
@@ -2494,7 +2466,6 @@ Ikkan ti naisangayan a rason dita baba (kas pagarigan, dakamaten ti maysa a pani
 'ipadressorusername' => 'IP a pagtaengan wenno nagan ti agar-aramat:',
 'ipbexpiry' => 'Agpaso:',
 'ipbreason' => 'Rason:',
-'ipbreasonotherlist' => 'Sabali a rason',
 'ipbreason-dropdown' => '*Dagiti kadawyan a rason ti panagserra
 ** Agikabil kadagiti  madi a pakaammo
 ** Agikkat kadagiti linaon ti pampanid
@@ -2510,8 +2481,6 @@ Ikkan ti naisangayan a rason dita baba (kas pagarigan, dakamaten ti maysa a pani
 'ipbsubmit' => 'Serraan daytoy nga agar-aramat',
 'ipbother' => 'Sabali nga oras:',
 'ipboptions' => '2 nga oras:2 hours,1 nga aldaw:1 day,3 nga aldaw:3 days,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite',
-'ipbotheroption' => 'sabali',
-'ipbotherreason' => 'Sabali/nayon a rason:',
 'ipbhidename' => 'Ilemmeng ti nagan ti agar-aramat kadagiti listaan ken inurnos',
 'ipbwatchuser' => 'Bantayan ti panid ti agar-ramat ken panid ti tungtungan daytoy nga agar-aramat',
 'ipb-disableusertalk' => 'Pawilan daytoy nga agar-aramat nga agurnos kadagiti bukodda a tungtungan a panid no naserraan',
@@ -2604,7 +2573,6 @@ Pangngaasi ta kontakem ti agit-ited ti serbisio ti Internetmo wenno teknikal a s
 'sorbs_create_account_reason' => 'Ti IP a pagtaengam ket nakalista a kasla "nalukatan a pannakbagi" idiay DNSBL nga inusar ti {{SITNAME}}.
 Saanka a makaaramid ti pakabilangan',
 'xffblockreason' => 'Ti maysa nga IP a pagtaengan nga adda iti X-Forwarded-For header, mabalin a kukuam wenno ti pannakbagi a server nga us-usarem, ket naserraan. Ti kasisigud a rason ti pannakaserra idi ket: $1',
-'cant-block-while-blocked' => 'Saanmo a maserraan dagiti sabali nga agar-aramat no naserraanka met.',
 'cant-see-hidden-user' => 'Ti agar-aramat a kayatmo a serraan ket naserraan ken nailemmeng.
 Ket awan met ti karbengam nga agilemming ti agar-aramat, saan mo a makita wenno mabaliwan ti serra ti agar-aramat.',
 'ipbblocked' => 'Saanmo a mabalin ti agserra wenno agikkat ti serra ti sabali nga agar-aramat, ngamin ket naserraan ka met.',
@@ -2665,7 +2633,6 @@ pangngaasim ta pasingkedam a maawatam ti ibunga daytoy sakbay nga agtuloyka a ma
 Kadagitoy a kaso, masapul nga iyalis wenno itiponmo a manual ti panid no kayatmo.",
 'movearticle' => 'Iyalis ti panid:',
 'moveuserpage-warning' => "'''Ballaag:''' Mangrugrugika nga agiyalis ti panid ti agar-aramat. Pangngaasi a laglapipen a ti panid ket isu laeng ti mabalin nga iyalis ken ti agar-aramat ket ''saan'' a managanan.",
-'movenologin' => 'Saan a nakastrek',
 'movenologintext' => 'Masapul a nakarehistroka nga agar-aramat ken [[Special:UserLogin|nakastrek]] tapno makaiyalis iti panid.',
 'movenotallowed' => 'Awan ti pammalubosmo nga agiyalis kadagiti panid.',
 'movenotallowedfile' => 'Awan ti pammalubosmo nga agiyalis kadagiti papeles.',
@@ -2681,9 +2648,6 @@ Kadagitoy a kaso, masapul nga iyalis wenno itiponmo a manual ti panid no kayatmo
 'articleexists' => 'Adda panid nga adda ti kasta a nagan, wenno ti nagan a pinilim ket saan a mabalin.
 Pangngaasim a mangpilika iti sabali a nagan.',
 'cantmove-titleprotected' => 'Saanmo a maiyalis ti panid iti daytoy a lokasion, ngamin ket ti baro a titulo ket nasalakniban para iti panakapartuat.',
-'talkexists' => "'''Sibaballigi a naiyalis ti panid, nupay kasta saan a maiyalis ti panid ti tungtungan gapu ta addan ti panid-tungtungan iti baro a titulo.
-Pangngaasim a manualmo lattan a pagtiponem ida.'''",
-'movedto' => 'naiyalis iti',
 'movetalk' => 'Iyalis ti mainaig a panid ti tungtungan',
 'move-subpages' => 'Iyalis dagiti subpanid (aginggana ti $1)',
 'move-talk-subpages' => 'Iyalis dagiti subpanid ti tungtungan ti panid (aginggana ti $1)',
@@ -3042,7 +3006,7 @@ No usarem daytoy, baka makompromiso ti sistema.",
 'svg-long-desc' => 'SVG a papeles, babassit ngem $1 × $2 pixels, kadakkel ti papeles: $3',
 'svg-long-desc-animated' => 'Naanimado nga SVG a papeles, babassit ngem  $1 × $2 pixels, kadakkel ti papeles: $3',
 'svg-long-error' => 'Saan nga umiso a papeles ti SVG: $1',
-'show-big-image' => 'Sibubukel a resolusion',
+'show-big-image' => 'Kasisigud a papeles',
 'show-big-image-preview' => 'Kadakkel daytoy a panagipadas: $1.',
 'show-big-image-other' => 'Sabali {{PLURAL:$2|a resolusion|kadagiti resolusion}}: $1.',
 'show-big-image-size' => '$1 × $2 dagiti piksel',
@@ -3325,6 +3289,7 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-exposureprogram-2' => 'Kadawyan a programa',
 'exif-exposureprogram-3' => 'Aperture priority',
 'exif-exposureprogram-4' => 'Shutter priority',
+'exif-exposureprogram-5' => 'Kreatibo a programa (di nalinteg iti  kauneg ti pagikabilan)',
 'exif-exposureprogram-6' => 'Aktion a programa (di nalinteg iti kapartak ti napardas a shutter)',
 'exif-exposureprogram-7' => 'Retrato a kita (para iti naasideg nga imahen nga addaan ti lugar ti likud a saan a nai-focus)',
 'exif-exposureprogram-8' => 'Ladawan ti daga a kita (para iti ladawan ti daga nga imahen nga addaan ti lugar ti likud a pinag- focus)',
@@ -3502,15 +3467,10 @@ Dagiti dadduma ket mailemmeng a kinasigud.
 'exif-urgency-high' => 'Nangato ($1)',
 'exif-urgency-other' => 'Inpalawag ti agar-aramat a prioridad ($1)',
 
-# External editor support
-'edit-externally' => 'Baliwan daytoy a papeles babaen ti akinruar nga aplikasion',
-'edit-externally-help' => '(Kitaen ti [https://www.mediawiki.org/wiki/Manual:External_editors instruksion iti panangikabil] para iti ad-adu pay a pakaammo).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'amin',
 'namespacesall' => 'amin',
 'monthsall' => 'amin',
-'limitall' => 'amin',
 
 # Email address confirmation
 'confirmemail' => 'Pasingkedan ti esurat a pagtaengam',
@@ -3535,7 +3495,6 @@ Mabalin a nagpaso daytoy a kodigo.',
 'confirmemail_success' => 'Napasingkedanen ti esurat a pagtaengam.
 Mabalinmo tattan ti [[Special:UserLogin|sumrek]] ken nanamen ti wiki.',
 'confirmemail_loggedin' => 'Napasingkedanen ti esurat a pagtaengam.',
-'confirmemail_error' => 'Adda banag a biddut ti panangidulin ti pammasingkedmo.',
 'confirmemail_subject' => 'Pammasingked ti esurat a pagtaengan ti {{SITENAME}}',
 'confirmemail_body' => 'Addaan, baka sika, ti naggapu ti IP a pagtaengan $1,
 ket nagrehistro ti pakabilangan "$2" iti daytoy nga esurat a pagtaengan idiay {{SITENAME}}
@@ -3613,6 +3572,11 @@ Pangngaasi a pasingkedam nga agpayso a kayatmo a partuten manen daytoy a panid."
 'imgmultigo' => 'Inkan!',
 'imgmultigoto' => 'Mapan iti panid $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(kasisigud a pagsasao)',
+'img-lang-info' => 'Ipaay daytoy a ladawan iti $1 $2.',
+'img-lang-go' => 'Inkan',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -3737,6 +3701,7 @@ Naka-awatka koman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a
 
 # Special:SpecialPages
 'specialpages' => 'Espesial a pampanid',
+'specialpages-note-top' => 'Sarita',
 'specialpages-note' => '* Kadawyan nga espesial a pampanid.
 * <span class="mw-specialpagerestricted">Nagawidan nga espesial a pampanid.</span>',
 'specialpages-group-maintenance' => 'Dagiti padamag ti panagtaripato',
@@ -3785,7 +3750,6 @@ Naka-awatka koman ti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopia iti GNU Sapasap a
 
 # Special:ComparePages
 'comparepages' => 'Ipada dagiti panid',
-'compare-selector' => 'Ipada dagiti panagbaliw ti panid',
 'compare-page1' => 'Panid 1',
 'compare-page2' => 'Panid 2',
 'compare-rev1' => 'Panagbaliw 1',
index 19709f1..d28d94f 100644 (file)
@@ -32,7 +32,7 @@ $messages = array(
 'tog-editsection' => 'ХӀара дакъа "хувца" яха Ӏинк хьахьокха',
 'tog-editsectiononrightclick' => 'Декъам хувца кертмугӀа аьтта цлицака я (JavaScript)',
 'tog-showtoc' => 'Кортанче хьокха (кхьаннена дукхагӀа кертмугӀанаш йoлa оагӀувна)',
-'tog-rememberpassword' => '(укх $1 {{PLURAL:$1|ден|деношк}}) мара са чувалара/ялара дагалоаца дезаш дац',
+'tog-rememberpassword' => '(укх $1 {{PLURAL:$1|1=ден|деношк}}) мара са чувалара/ялара дагалоаца дезаш дац',
 'tog-watchcreations' => 'Аз яь йола оагӀувнаш теркама дагарле йолач чуяьккха',
 'tog-watchdefault' => 'Аз хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
 'tog-watchmoves' => 'Аз цӀи хийца йола оагӀувнаш теркама дагарле йолач чуяьккха',
@@ -40,7 +40,6 @@ $messages = array(
 'tog-minordefault' => 'Теркамза хувцамаш лоархӀамза белгалде',
 'tog-previewontop' => 'ГӀалатнийсдара кора хьалхе бӀаргтассам оттае',
 'tog-previewonfirst' => 'ГӀалатнийсдаре дехьавоалаш/йоалаш бӀаргтассам хьахьокха',
-'tog-nocache' => 'Укхазара оагӀувнаший лочкъараш дӀадоаде',
 'tog-enotifwatchlistpages' => 'ОагӀувний хувцамахи теркама дагарленахи лаьца, д-хоамнец хоам бе',
 'tog-enotifusertalkpages' => 'Са дувцама оагӀув тӀа хувцамаш хилача, д-хоамнец хоам бе',
 'tog-enotifminoredits' => 'Геттара зӀамига хувцамаш хилача, д-хоамнец хоам бе',
@@ -120,19 +119,19 @@ $messages = array(
 'dec' => 'Чант.',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Катаг|Катагаш}}',
+'pagecategories' => '{{PLURAL:$1|1=Катаг|Катагаш}}',
 'category_header' => '"$1" Катагачар оагӀувнаш',
 'subcategories' => 'Чуракатагаш',
 'category-media-header' => '"$1" Катагачар паьлаш',
 'category-empty' => "''Укх катагчоа цхьаккха оагӀувнаш е паьлаш яц.''",
-'hidden-categories' => '{{PLURAL:$1|Къайла катаг|Къайла катагаш}}',
+'hidden-categories' => '{{PLURAL:$1|1=Къайла катаг|Къайла катагаш}}',
 'hidden-category-category' => 'Къайла катагаш',
-'category-subcat-count' => '{{PLURAL:$2|Йола катаг тӀехьара бухкатаг чулоаца.|{{PLURAL:$1|$1 бухкатаг хьахьекха я|$1 бухкатагаш хьахьекха я}} $2 йолачара.}}',
-'category-subcat-count-limited' => 'Укх катагий {{PLURAL:$1|$1 кӀалкатаг|$1 кӀалкатагаш}}.',
-'category-article-count' => '{{PLURAL:$2|Йола цатег цхьа оагӀув мара чулоацац.|{{PLURAL:$1|$1 оагӀув хьахекха я|$1 оагӀувнаш хьахекха я}} укх цатега $2 йолачарах.}}',
-'category-article-count-limited' => 'Укх катагач {{PLURAL:$1|$1 оагӀув|$1 оагӀувнаш|}}.',
-'category-file-count' => '{{PLURAL:$2|Укх цатего ца паьла мара чулоацац.|{{PLURAL:$1|$1 паьла хьахьекха я|$1 паьлаш хьахьекха я}} укх цатегий $2 долачаьрахь.}}',
-'category-file-count-limited' => 'Укх катагач {{PLURAL:$1|$1 паьл|$1 паьлаш}}.',
+'category-subcat-count' => '{{PLURAL:$2|Йола катаг тӀехьара бухкатаг чулоаца.|{{PLURAL:$1|1=$1 бухкатаг хьахьекха я|$1 бухкатагаш хьахьекха я}} $2 йолачара.}}',
+'category-subcat-count-limited' => 'Укх катагий {{PLURAL:$1|1=$1 кӀалкатаг|$1 кӀалкатагаш}}.',
+'category-article-count' => '{{PLURAL:$2|Йола цатег цхьа оагӀув мара чулоацац.|{{PLURAL:$1|1=$1 оагӀув хьахекха я|$1 оагӀувнаш хьахекха я}} укх цатега $2 йолачарах.}}',
+'category-article-count-limited' => 'Укх катагач {{PLURAL:$1|1=$1 оагӀув|$1 оагӀувнаш}}.',
+'category-file-count' => '{{PLURAL:$2|Укх цатего ца паьла мара чулоацац.|{{PLURAL:$1|1=$1 паьла хьахьекха я|$1 паьлаш хьахьекха я}} укх цатегий $2 долачаьрахь.}}',
+'category-file-count-limited' => 'Укх катагач {{PLURAL:$1|1=$1 паьл|$1 паьлаш}}.',
 'listingcontinuesabbrev' => 'дӀахо',
 'index-category' => 'ДIахьожаман оагӀувнаш',
 'noindex-category' => 'ДIахьожаманза оагӀувнаш',
@@ -155,7 +154,6 @@ $messages = array(
 'qbedit' => 'Хувца',
 'qbpageoptions' => 'ОагӀува оттамаш',
 'qbmyoptions' => 'Са оттамаш',
-'qbspecialpages' => 'ГӀулакхий оагӀувнаш',
 'faq' => 'Каст-каста хаттараш',
 'faqpage' => 'Project:Каст-каста хаттараш',
 
@@ -197,8 +195,8 @@ $messages = array(
 'create-this-page' => 'Ep oагӀув хьае',
 'delete' => 'ДӀадаккха',
 'deletethispage' => 'Ер оагӀув дӀаяьккха',
-'undelete_short' => 'Меттаоттае {{PLURAL:$1|хувцам|$1 хувцамаш}}',
-'viewdeleted_short' => 'БӀаргтасса {{PLURAL:$1|дӀадаьккха хувцам тӀа|$1 дӀадаьккха хувцамаш тӀа}}',
+'undelete_short' => 'Меттаоттае {{PLURAL:$1|1=хувцам|$1 хувцамаш}}',
+'viewdeleted_short' => 'БӀаргтасса {{PLURAL:$1|1=дӀадаьккха хувцам тӀа|$1 дӀадаьккха хувцамаш тӀа}}',
 'protect' => 'Лораде',
 'protect_change' => 'хувца',
 'protectthispage' => 'Лорае ер оагӀув',
@@ -213,7 +211,7 @@ $messages = array(
 'articlepage' => 'Йоазув тӀа бӀаргтасса',
 'talk' => 'Дувцам',
 'views' => 'БӀаргтассамаш',
-'toolbox' => 'Ð\93Ó\80орсаш',
+'toolbox' => 'Ð\93Ó\80ирсаш',
 'userpage' => 'Дакъалаьцачунна оагӀуве бӀаргтасса',
 'projectpage' => 'Хьахьоадайтама оагӀуве бӀаргтасса',
 'imagepage' => 'Паьла оагӀув тӀа бӀаргтасса',
@@ -226,7 +224,7 @@ $messages = array(
 'redirectedfrom' => '($1 тӀера хьадейта да)',
 'redirectpagesub' => 'ДӀа-хьа дайта оагӀув',
 'lastmodifiedat' => 'Укх оагӀув тӀехьара  хувцам: $2, $1.',
-'viewcount' => 'Укх оагӀув тӀа бӀаргтасса хиннад {{PLURAL:$1|цхьазза|$1 шозза}}.',
+'viewcount' => 'Укх оагӀув тӀа бӀаргтасса хиннад {{PLURAL:$1|1=цхьазза|$1 шозза}}.',
 'protectedpage' => 'Лорама оагӀув',
 'jumpto' => 'Укхаза дехьа гӀо:',
 'jumptonavigation' => 'никътохкарг',
@@ -256,7 +254,7 @@ $messages = array(
 
 'badaccess' => 'Чуваларa гӀалат',
 'badaccess-group0' => 'Оаш хьадийха дулархIам шун де йишяц.',
-'badaccess-groups' => 'Дахта кхоачашдар {{PLURAL:$2|тоабачара|тоабашкара}} $1 дакъалаьцархой мара де бокъо яц.',
+'badaccess-groups' => 'Дахта кхоачашдар {{PLURAL:$2|1=тоабачара|тоабашкара}} $1 дакъалаьцархой мара де бокъо яц.',
 
 'versionrequired' => '$1 MediaWiki доржам эша',
 'versionrequiredtext' => 'Укх оагӀув бeлха MediaWiki доржамаш эша $1. Хьажа [[Special:Version|version page]].',
@@ -278,7 +276,7 @@ $messages = array(
 'collapsible-expand' => 'хьадоаржаде',
 'thisisdeleted' => '$1 бӀаргтасса е юхаметтаоттаде?',
 'viewdeleted' => '$1 бӀаргтасса?',
-'restorelink' => '{{PLURAL:$1|дӀаяьккха хувцам|$1 дӀаяьккха хувцамаш}}',
+'restorelink' => '{{PLURAL:$1|1=дӀаяьккха хувцам|$1 дӀаяьккха хувцамаш}}',
 'feedlinks' => 'Цу тайпара:',
 'site-rss-feed' => '$1 RSS мугӀ',
 'site-atom-feed' => '$1 Atom мугӀ',
@@ -327,7 +325,7 @@ $messages = array(
 'yourname' => 'Дакъалаьцархочунна цӀи:',
 'yourpassword' => 'КъайладIоагӀа:',
 'yourpasswordagain' => 'КъайладIоагӀа юха Ӏоязаде:',
-'remembermypassword' => '(укх $1 {{PLURAL:$1|ден|деношкахь}}) мара са чувалара/чуялара дагалоаца дезаш дац',
+'remembermypassword' => '(укх $1 {{PLURAL:$1|1=ден|деношкахь}}) мара са чувалара/чуялара дагалоаца дезаш дац',
 'yourdomainname' => 'Шун цӀеноагӀув:',
 'login' => 'Чувала/яла',
 'nav-login-createaccount' => 'ЦӀи яьккха/Ший oагӀув ела',
@@ -353,7 +351,7 @@ $messages = array(
 'loginlanguagelabel' => 'Мотт: $1',
 
 # Change password dialog
-'resetpass' => 'КъайладIоагIа дIахувцар',
+'changepassword' => 'КъайладIоaгIа дIахувцар',
 'oldpassword' => 'Къаьна къайладIоагӀа:',
 'newpassword' => 'Керда къайладIоагӀа:',
 'retypenew' => 'Керда къайладIоагӀа юха Ӏоязаде:',
@@ -422,12 +420,12 @@ $messages = array(
 Наггахь санна шоай яздамаш пурам доацаш мала волашву саго хувца е кхы дола моттиге яздердолаш, безам беци, укхаз Ӏочуцаяздеча, дикаьгӀа да.<br />
 Оаш дош лу, даь дола хувцама да волга/йолга, е оаш пурам долаш Ӏочуяздеш да кхычера меттигара шоай яздамаш/хоамаш.
 '''Яздархой бокъоца лорадеш дола хӀамаш, цара пурам доацаш, Ӏочумаязаде!'''",
-'templatesused' => 'Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|Куцкеп|Куцкепаш}}:',
-'templatesusedpreview' => 'Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|Куцкеп|Куцкепаш}}:',
+'templatesused' => 'Укх бӀаргоагӀувни оагӀув тӀа лелаяь {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:',
+'templatesusedpreview' => 'Хьалхе бӀаргтассама оагӀув тӀа леладеш дола {{PLURAL:$1|1=Куцкеп|Куцкепаш}}:',
 'template-protected' => '(лорам лаьца)',
 'template-semiprotected' => '(дакъа-лорам)',
-'hiddencategories' => 'Ер оагӀув укх {{PLURAL:$1|къайла цатегаца|къайла цатегашца}} дакъа лоаца:',
-'permissionserrorstext-withaction' => '$2 де бокъо яц {{PLURAL:$1|из бахьан долаш|из бахьанаш долаш}}:',
+'hiddencategories' => 'Ер оагӀув укх {{PLURAL:$1|1=къайла цатегаца|къайла цатегашца}} дакъа лоаца:',
+'permissionserrorstext-withaction' => '$2 де бокъо яц {{PLURAL:$1|1=из бахьан долаш|из бахьанаш долаш}}:',
 'recreate-moveddeleted-warn' => "'''Зем бе! Шо хьалххе дIайоаккхаш хинна оагӀув хьае гӀерта.'''
 
 Хьажа, бокъонцахь езаш йолга.
@@ -462,7 +460,7 @@ $messages = array(
 'history-fieldset-title' => 'Искара бӀаргтасса',
 'history-show-deleted' => 'ДӀадаьккхараш мара',
 'histfirst' => 'къаьнараш',
-'histlast' => 'ха яннараш',
+'histlast' => 'кердараш',
 'historyempty' => '(даьсса)',
 
 # Revision feed
@@ -478,8 +476,6 @@ $messages = array(
 'revdelete-radio-unset' => 'A',
 'revdelete-log' => 'Бахьан',
 'revdel-restore' => 'Кустгойтам хувца',
-'revdel-restore-deleted' => 'дӀадаьккха доржамаш',
-'revdel-restore-visible' => 'бӀаргагушдола доржамаш',
 'pagehist' => 'ОагӀува искар',
 'deletedhist' => 'ДӀадаккхамий искар',
 'revdelete-reasonotherlist' => 'Кхыдола бахьан',
@@ -499,21 +495,17 @@ $messages = array(
 'lineno' => 'МугI $1:',
 'compareselectedversions' => 'Хьаржа доржамаша тарона тIа хьажа',
 'editundo' => 'юхавала/яла',
-'diff-multi' => '({{PLURAL:$1|$1 юкъара доржам хьахьекха дац|$1 юкъара доржамаш хьахьекха дац}} {{PLURAL:$2|$2 дакъалаьцархочунна|$2 дакъалаьцархоший}})',
+'diff-multi' => '({{PLURAL:$1|1=$1 юкъара доржам хьахьекха дац|$1 юкъара доржамаш хьахьекха дац}} {{PLURAL:$2|1=$2 дакъалаьцархочунна|$2 дакъалаьцархоший}})',
 
 # Search results
 'searchresults' => 'Тохкама гIулакхахилар',
 'searchresults-title' => '"$1" тохка',
-'searchresulttext' => 'Хьахьоадайтама оагIувнаш тIа тохкамах лаьца лоаца маIандар эца [[{{MediaWiki:Helppage}}|новкъостала декъамага]] хьажа.',
-'searchsubtitle' => 'Хоаттамах лаьца «[[:$1]]» ([[Special:Prefixindex/$1|цу цIерах ювалу оагIувнаш]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|цу цIерах Iинкаш еш йола]])',
-'searchsubtitleinvalid' => "'''$1''' хаттара",
-'notitlematches' => 'ОагIувни цIераш вIашагIа кхеташ яц',
 'notextmatches' => 'ОагIувнаша яздамий вIашагIакхетараш дац',
 'prevn' => '{{PLURAL:$1|хьалхйоаг|ар $1|хьалхйоаг|араш $1|хьалхйоаг|араш $1}}',
 'nextn' => '{{PLURAL:$1|тlехьайоагlар $1|тlехьайоагlараш $1|тlехьайоагlараш $1}}',
-'prevn-title' => '{{PLURAL:$1|$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}',
-'nextn-title' => '{{PLURAL:$1|$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}',
-'shown-title' => 'Укх оагIувни $1 {{PLURAL:$1|йоазув|йоазувнаш}} хьахьокха',
+'prevn-title' => '{{PLURAL:$1|1=$1 хьалхара йоазув|$1 хьалхара йоазувнаш}}',
+'nextn-title' => '{{PLURAL:$1|1=$1 тIехьара йоазув|$1 тIехьара йоазувнаш}}',
+'shown-title' => 'Укх оагIувни $1 {{PLURAL:$1|1=йоазув|йоазувнаш}} хьахьокха',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) хьажа',
 'searchmenu-exists' => "'''Укх масса-хьахьоадайтамач ер оаг|ув \"[[:\$1]]\" я'''",
 'searchmenu-new' => "'''Укх \"[[:\$1]]\" масса-хьахоадайтамач оагIув хьае!'''",
@@ -527,8 +519,8 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Паьлий лахар',
 'searchprofile-everything-tooltip' => 'Массадола оагIувний лахар (дувцама оагIувнаш чулоацаш)',
 'searchprofile-advanced-tooltip' => 'Iочуязаяь цIераренашках лаха',
-'search-result-size' => ' $1 ({{PLURAL:$2|1 дош|$2 дешаш}})',
-'search-result-category-size' => '{{PLURAL:$1|$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|$3 паьла|$3 паьлий|$3 паьлий}})',
+'search-result-size' => ' $1 ({{PLURAL:$2|1=1 дош|$2 дешаш}})',
+'search-result-category-size' => '{{PLURAL:$1|1=$1 дакъа|$1 дакъаш}} ({{PLURAL:$2|1=$2 кIалцатег|$2 кIалцатегаш}}, {{PLURAL:$3|1=$3 паьла|$3 паьлий}})',
 'search-redirect' => '($1 дехьачуяьккхар)',
 'search-section' => ' (дакъа $1)',
 'search-suggest' => 'Iа лохар из хила мега: $1',
@@ -538,22 +530,17 @@ $messages = array(
 'search-relatedarticle' => 'шоайл дола',
 'searchrelated' => 'гаргара',
 'searchall' => 'деррига',
-'showingresultsheader' => "{{PLURAL:$5|'''$1''' толамче укх '''$3''' долачарах|'''$1 — $2''' толамчаш укх '''$3''' долачарах}} '''$4'''а",
-'nonefound' => "'''Зем лаца.''' Цхьа дола цIера аренаш мара лахалац.
-''all:'' яха тIаоттарга пайдабе, массадола цIеран аренашкахь (дакъалаьцархой дуцамаш а, куцкепаш а, кхы дара а чулоацаш), е деза цIера аренаш Iочуязаде.",
+'showingresultsheader' => "{{PLURAL:$5|1='''$1''' толамче укх '''$3''' долачарах|'''$1 — $2''' толамчаш укх '''$3''' долачарах}} '''$4'''а",
 'search-nonefound' => 'ДIахаттама нийсамаш корадаьдац.',
-'powersearch' => ' Доккха тахкар',
 'powersearch-legend' => ' Доккха тахкар',
 'powersearch-ns' => ' ЦIерий аренашкахь лахар',
 'powersearch-redir' => 'ДIа-хьа оагIувнаш гойта',
-'powersearch-field' => 'Лахар',
 'powersearch-toggleall' => 'Деррига',
 'powersearch-togglenone' => 'Цхьаккха',
 
 # Preferences page
 'preferences' => 'Оттамаш',
 'mypreferences' => 'Оттамаш',
-'changepassword' => 'КъайладIоaгIа дIахувцар',
 'prefs-skin' => 'БIагала куц',
 'skin-preview' => 'Хьажа',
 'prefs-datetime' => 'Таьрахьи сахьати',
@@ -633,7 +620,7 @@ $messages = array(
 'action-edit' => 'Ер оагIув хувца',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|хувцам|хувцамаш}}',
+'nchanges' => '$1 {{PLURAL:$1|1=хувцам|хувцамаш}}',
 'recentchanges' => 'Керда хувцамаш',
 'recentchanges-legend' => 'Керда хувцамий оттамаш',
 'recentchanges-summary' => 'КIалхагIа лоарамий доаламе тIехьара оагIувний хувцамаш дIаязадаь да{{grammar:genitive|{{SITENAME}}}}.',
@@ -642,7 +629,6 @@ $messages = array(
 'recentchanges-label-minor' => 'ЗIамига хувцам я',
 'recentchanges-label-bot' => 'Ер хувцам бIатаца яь е',
 'recentchanges-label-unpatrolled' => 'Ер хувцам ший моттиге кхы дIадехьаяьккхаяц.',
-'rcnote' => "{{PLURAL:$1|Тlехьара '''$1''' хувцам|Тlехьара '''$1''' хувцамаш}} дола '''$2''' {{PLURAL:$2|ден|деношкахь}}, укх сахьате $5 $4.",
 'rcnotefrom' => 'КIалхагIа хувцамаш хьахьекха я <strong>$2</strong> денза (<strong>$1</strong> кхачалца).',
 'rclistfrom' => '$1 тIара хувцамаш хьахьокха',
 'rcshowhideminor' => 'зIамига хувцамаш $1',
@@ -709,7 +695,7 @@ $messages = array(
 'filehist-comment' => 'ХIамоалар',
 'filehist-missing' => 'Паьла йоацаш я',
 'imagelinks' => 'Паьлий пайда эца',
-'linkstoimage' => '{{PLURAL:$1|ТIехьайоагIа $1 оагIув Iинк ду|ТIехьайоагIа $1 оагIувнаш Iинкаш ду}} укх паьла тIа:',
+'linkstoimage' => '{{PLURAL:$1|1=ТIехьайоагIа $1 оагIув Iинк ду|ТIехьайоагIа $1 оагIувнаш Iинкаш ду}} укх паьла тIа:',
 'nolinkstoimage' => 'Йола паьла тIа  Iинк ю оагIувнаш дац',
 'sharedupload' => 'Ер паьла $1чера я, кхыча хьахьоадайтамча хьахайраде йийшайолаш я.',
 'sharedupload-desc-here' => 'Ер паьл $1чара я, кхыдола хьахьоадайтамача хайрамбе йийш йолаш да.
@@ -743,8 +729,8 @@ $messages = array(
 'withoutinterwiki-submit' => 'Хьахьокха',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|бIат|бIаташ}}',
-'nmembers' => '$1 {{PLURAL:$1|дакъалаьцархо|дакъалаьцархой}}',
+'nbytes' => '$1 {{PLURAL:$1|1=бIат|бIаташ}}',
+'nmembers' => '$1 {{PLURAL:$1|1=дакъалаьцархо|дакъалаьцархой}}',
 'prefixindex' => 'ОагIувнаший хьалхера цIи хьагойтар',
 'shortpages' => 'Лоаца оагIувнаш',
 'longpages' => 'Доккхий оагIувнаш',
@@ -752,8 +738,8 @@ $messages = array(
 'newpages' => 'Керда оагIувнаш',
 'move' => 'ЦIи хувца',
 'movethispage' => 'Укх оагIува цIи хувца',
-'pager-newer-n' => '{{PLURAL:$1|кеÑ\80дагIа Ð´Ð°Ñ\80а|кеÑ\80дагIа Ð´Ð°Ñ\80аÑ\88|кеÑ\80дагIа Ð´Ð¾Ð»Ð°Ñ\87аÑ\8cÑ\80аÑ\85Ñ\8c}} $1',
-'pager-older-n' => '{{PLURAL:$1|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80а|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80аÑ\88|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð¾Ð»aÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c}} $1',
+'pager-newer-n' => '{{PLURAL:$1|кеÑ\80дагIа Ð´Ð°Ñ\80а|кеÑ\80дагIа Ð´Ð¾Ð»Ð°Ñ\87аÑ\8cÑ\80аÑ\85Ñ\8c|кеÑ\80дагIа Ð´Ð°Ñ\80аÑ\88}} $1',
+'pager-older-n' => '{{PLURAL:$1|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80а|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð¾Ð»aÑ\87аÑ\8cÑ\80аÑ\85Ñ\8c|кÑ\8aаÑ\8cнаÑ\80а Ð´Ð°Ñ\80аÑ\88}} $1',
 
 # Book sources
 'booksources' => 'Китабий гIувам',
@@ -796,7 +782,7 @@ $messages = array(
 'watch' => 'Тохкам бе',
 'watchthispage' => 'Укх оагIува теркам бе',
 'unwatch' => 'Лора ма де',
-'watchlist-details' => 'Шун теркама дагарченгахь йола  $1 {{PLURAL:$1|оагIув|оагIувнаш}}, дувцама оагIувнаш ца лоархIаш.',
+'watchlist-details' => 'Шун теркама дагарченгахь йола  $1 {{PLURAL:$1|1=оагIув|оагIувнаш}}, дувцама оагIувнаш ца лоархIаш.',
 'wlshowlast' => 'Тlехьара $1 сахьаташ $2 денош $3 хьахьокха',
 'watchlist-options' => 'Зем баккха дагарена хувцамаш',
 
@@ -830,7 +816,7 @@ $messages = array(
 'protect_expiry_old' => 'Чакхайоала ха - яха зама я.',
 'protect-text' => "'''$1''' укхаз шоана шоай оагIув лорамлагIа хувца a бIаргтасса a йийш хургья.",
 'protect-locked-access' => "Шун лархIама йоазуви нидза кхоачаш бац оагIувни лорама лагIа хувца. '''$1''' оагIувни дIаоттамаш:",
-'protect-cascadeon' => '{{PLURAL:$1|КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуяккха халарахь, лорам Iоттая я, хурхала лорам Iоттая я. Укх оагIувни лорама лагIа хувца йийш йолаш я, амма хурхала лорам хувцлургдац.',
+'protect-cascadeon' => '{{PLURAL:$1|1=КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуяккха халарахь, лорам Iоттая я, хурхала лорам Iоттая я. Укх оагIувни лорама лагIа хувца йийш йолаш я, амма хурхала лорам хувцлургдац.',
 'protect-default' => 'Лорамза',
 'protect-fallback' => '"$1" пурам эша',
 'protect-level-autoconfirmed' => 'Керда а, дакъалаьцабоацачаьрахь а лораде',
@@ -861,8 +847,8 @@ $messages = array(
 'contributions' => '{{GENDER:$1|Дакъалаьцархочунна}} къахьегам',
 'contributions-title' => '$1 дакъалаьцархочунна къахьегам',
 'mycontris' => 'Са къахьегам',
-'contribsub2' => '$1 ($2) баь болх',
-'uctop' => '(тIехьара)',
+'contribsub2' => '{{GENDER:$3|$1}} ($2) баь болх',
+'uctop' => '(xIанзара)',
 'month' => 'Цхьа бутт хьалхагIа (кхы хьалхагIа)',
 'year' => 'Цхьа шу хьалхагIа (кхы хьалхагIа):',
 
@@ -885,8 +871,8 @@ $messages = array(
 'isredirect' => 'дIа-хьа оагIув',
 'istemplate' => 'чудаккхар',
 'isimage' => 'паьла Iинк',
-'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайоагIа|хьалхайоагIараш}} $1',
-'whatlinkshere-next' => '{{PLURAL:$1|тIехьайоагIа|тIехьайоагIараш}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=хьалхайоагIа|хьалхайоагIараш}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|1=тIехьайоагIа|тIехьайоагIараш}} $1',
 'whatlinkshere-links' => '← Iинкаш',
 'whatlinkshere-hideredirs' => '$1 дIа-хьа чуяьккхамаш',
 'whatlinkshere-hidetrans' => '$1 чуяьккхамаш',
@@ -936,8 +922,6 @@ $messages = array(
 'movepage-moved' => '\'\'\'"$1" оагув "$2" хьийца я\'\'\'',
 'articleexists' => 'Изза мо цIи йола оагIув, йолаш я е оаш тила цIи мегаш яц.
 Дехар да, кхыйола цIи хьаржа.',
-'talkexists' => "'''ОагIувни цIи хьийца хиннай, амма дувцама оагIувни цIи хувца мегаш яц, изза мо цIи йолаш оагIув йоландаь. Дехар да, кулга новкъосталца цхьанна вIашагIатоха уш.'''",
-'movedto' => 'керда цIи тилла я',
 'movetalk' => 'МаIан чулоаца дувцама оагIувни цIи хувца',
 'movelogpage' => 'Хувцама тептар',
 'movereason' => 'Бахьан',
@@ -1024,7 +1008,7 @@ $messages = array(
 'file-info-size' => '$1 × $2 фихсам, паьла дустам: $3, MIME-тайп: $4',
 'file-nohires' => 'Укхал доккхагIа доржам дац',
 'svg-long-desc' => 'SVG-паьл, $1 × $2 фихелашца, паьла дустам: $3',
-'show-big-image' => 'Ð¥Ñ\8cадоккÑ\85адаÑ\8c сурт',
+'show-big-image' => 'Ð¥Ñ\8cалÑ\85агIаÑ\80а сурт',
 
 # Special:NewFiles
 'noimages' => 'Суртaш бIаргагуш дац.',
@@ -1083,15 +1067,10 @@ $messages = array(
 'exif-iimcategory-war' => 'ТIемаш, кховсамаши латтараши',
 'exif-iimcategory-wea' => 'Хаоттам',
 
-# External editor support
-'edit-externally' => 'Йола болхоагIувца паьла гIалатах мукъаяьккха',
-'edit-externally-help' => '(ма даррачунга хьажа [https://www.mediawiki.org/wiki/Manual:External_editors хьаоттама кулгалхо])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'деррига',
 'namespacesall' => 'деррига',
 'monthsall' => 'деррига',
-'limitall' => 'деррига',
 
 # action=purge
 'confirm_purge_button' => 'ХIаа',
@@ -1144,7 +1123,7 @@ $messages = array(
 'tags-tag' => 'Йоазон цIи',
 'tags-hitcount-header' => 'Белгалаяь хувцамаш',
 'tags-edit' => 'хувца',
-'tags-hitcount' => '$1 {{PLURAL:$1|хувцам|хувцамаш}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=хувцам|хувцамаш}}',
 
 # Special:ComparePages
 'compare-page1' => '1. ОагIув',
index db812d1..72c0a13 100644 (file)
@@ -131,7 +131,6 @@ $messages = array(
 'tog-minordefault' => 'Markizez kustume omna redaktajo kom mikra',
 'tog-previewontop' => 'Montrez prevido avan la redakto-buxo',
 'tog-previewonfirst' => 'Montrez prevido pos la unesma redakto',
-'tog-nocache' => 'Nekapableskez cache-ar pagini',
 'tog-enotifwatchlistpages' => 'Sendez e-posto a me kande pagino quan me surveyas chanjesas',
 'tog-enotifusertalkpages' => 'Sendez e-posto a me kande mea diskuto-pagino chanjesas',
 'tog-enotifminoredits' => 'Sendez e-posto a me mem por mikra chanji',
@@ -235,7 +234,6 @@ $messages = array(
 'qbedit' => 'Redaktar',
 'qbpageoptions' => 'Ica pagino',
 'qbmyoptions' => 'Mea pagini',
-'qbspecialpages' => 'Specala pagini',
 
 # Vector skin
 'vector-action-addsection' => 'Adjuntar topiko',
@@ -459,7 +457,7 @@ Voluntez enirar altrafoye pos recevar ol.',
 'loginlanguagelabel' => 'Linguo: $1',
 
 # Change password dialog
-'resetpass' => 'Chanjar pasovorto',
+'changepassword' => 'Chanjar pasovorto',
 'resetpass_header' => 'Chanjar pasovorto di konto',
 'oldpassword' => 'Anciena pasovorto:',
 'newpassword' => 'Nova pasovorto:',
@@ -619,8 +617,6 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 'revdelete-radio-unset' => 'No',
 'revdelete-log' => 'Motivo:',
 'revdel-restore' => 'chanjar videbleso',
-'revdel-restore-deleted' => 'efacita revizadi',
-'revdel-restore-visible' => 'videbla revizadi',
 'pagehist' => 'Pagino-versionaro',
 'deletedhist' => 'Efacita versionaro',
 'revdelete-otherreason' => 'Altra/suplementala motivo:',
@@ -641,11 +637,7 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 # Search results
 'searchresults' => 'Rezultaji dil sercho',
 'searchresults-title' => 'Sercho-rezultaji por "$1"',
-'searchresulttext' => 'Por plusa informo pri quale serchar en {{SITENAME}}, videz [[{{MediaWiki:Helppage}}|help]].',
-'searchsubtitle' => 'Vu serchis \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|omna pagini komencanta kun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|omna pagini liganta ad "$1"]])',
-'searchsubtitleinvalid' => "Vu serchis '''$1'''",
 'titlematches' => 'Koincidi de titulo di artiklo',
-'notitlematches' => 'No esas koincidi en la tituli dil artikli',
 'textmatches' => 'Koincidi de texto di artiklo',
 'notextmatches' => 'Nula paginala texto fitas',
 'prevn' => 'antea {{PLURAL:$1|$1}}',
@@ -673,13 +665,9 @@ Surskriburo: '''({{int:cur}})''' = diferi kun l'aktuala versiono,
 'showingresults' => "Montrante infre {{PLURAL:$1|'''1''' rezulto|'''$1''' rezulti}}, qui komencas kun numero #'''$2'''.",
 'showingresultsnum' => "Montrante infre {{PLURAL:$3|'''1''' rezulto|'''$3''' rezulti}}, qui komencas kun numero #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultajo '''$1''' ek '''$3'''|Rezultaji '''$1 - $2''' ek '''$3'''}} di '''$4'''",
-'nonefound' => "'''Atencez''': Nespecigite, nur ula nomari esas serchata.
-Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzanta debato-pagini, shabloni, edc.), od uzar la dezirata nomaro kom prefixo.",
-'powersearch' => 'Avancita sercho',
 'powersearch-legend' => 'Avancita sercho',
 'powersearch-ns' => 'Serchez en nomari:',
 'powersearch-redir' => 'Listar ridirekti',
-'powersearch-field' => 'Serchar',
 'powersearch-toggleall' => 'Omna',
 'powersearch-togglenone' => 'Nula',
 'search-external' => 'Extera sercho',
@@ -689,7 +677,6 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
 'preferences' => 'Preferaji',
 'mypreferences' => 'Preferaji',
 'prefs-edits' => 'Nombro di redaktaji:',
-'changepassword' => 'Chanjar pasovorto',
 'prefs-skin' => 'Pelo',
 'skin-preview' => 'Pre-videz',
 'datedefault' => 'Sen prefero',
@@ -704,12 +691,10 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
 'prefs-resetpass' => 'Chanjar pasovorto',
 'prefs-rendering' => 'Aspekto',
 'saveprefs' => 'Registragar',
-'resetprefs' => 'Riestablisar preferaji',
 'prefs-editing' => 'Grandeso dil areo por texto',
 'rows' => 'Linei:',
 'columns' => 'Kolumni:',
 'searchresultshead' => 'Preferaji di la rezultaji dil sercho',
-'resultsperpage' => 'Trovaji po pagino:',
 'recentchangesdays' => 'Dii montrota en la recenta chanji:',
 'recentchangesdays-max' => 'Maximo $1 {{PLURAL:$1|dio|dii}}',
 'recentchangescount' => 'Quanto de redakti montrota kustume:',
@@ -717,7 +702,6 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
 'savedprefs' => 'Vua preferaji registragesis.',
 'timezonelegend' => 'Tempala zono:',
 'localtime' => 'Lokala tempo:',
-'timezoneoffset' => 'Difero¹:',
 'servertime' => 'Kloko en la servanto:',
 'guesstimezone' => 'Obtenar la kloko dil "browser"',
 'timezoneregion-africa' => 'Afrika',
@@ -808,7 +792,6 @@ Ol mustas ne havar plu kam $1 {{PLURAL:$1|litero|literi}}.',
 'recentchanges-label-minor' => 'Ica es mikra redaktajo',
 'recentchanges-label-bot' => 'Ta chanjo facita da bot',
 'recentchanges-legend-newpage' => '$1 - nova pagino',
-'rcnote' => "Infre esas la lasta {{PLURAL:$1|'''1''' chanjo|'''$1''' chanji}} dum la lasta {{PLURAL:$2|dio|'''$2''' dii}} ye $5, $4.",
 'rcnotefrom' => "Infre esas la lasta chanji depos '''$2''' (montrita til '''$1''').",
 'rclistfrom' => 'Montrar nova chanji startante de $1',
 'rcshowhideminor' => '$1 mikra redakti',
@@ -1003,9 +986,6 @@ Volutez kontrolar <strong>[[:$1]]</strong> se vu ne esas certa pri chanjar olu.
 'allpagesto' => 'Montrar pagini finanta ye:',
 'allarticles' => 'Omna pagini',
 'allinnamespace' => 'Omna pagini (nomaro $1)',
-'allnotinnamespace' => 'Omna pagini (ne in nomaro $1)',
-'allpagesprev' => 'Antea',
-'allpagesnext' => 'Sequanta',
 'allpagessubmit' => 'Irez',
 'allpages-bad-ns' => '{{SITENAME}} ne havas nomaro "$1".',
 
@@ -1208,7 +1188,6 @@ restauris ad lasta versiono da $2.',
 'ipadressorusername' => 'IP-adreso od uzantonomo:',
 'ipbexpiry' => 'Expiro:',
 'ipbreason' => 'Motivo:',
-'ipbreasonotherlist' => 'Altra motivo',
 'ipbreason-dropdown' => '*Ordinara motivi por blokuso
 ** Insertar nevera informi
 ** Efacar kontenajo de pagini
@@ -1221,8 +1200,6 @@ restauris ad lasta versiono da $2.',
 'ipbsubmit' => 'Blokusar ica uzanto',
 'ipbother' => 'Altra tempo:',
 'ipboptions' => '2 horo:2 hours,1 dio:1 day,3 dii:3 days,1 semano:1 week,2 semani:2 weeks,1 monato:1 month,3 monati:3 months,6 monati:6 months,1 yaro:1 year,infinita:infinite',
-'ipbotheroption' => 'altra',
-'ipbotherreason' => 'Altra/suplementala motivo:',
 'badipaddress' => 'IP-adreso ne esas valida',
 'blockipsuccesssub' => 'Blokusado sucesis',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] blokusesis.<br />
@@ -1274,7 +1251,6 @@ Ico signifikas ke vu povos rinomizar pagino a olua originala titulo se eroras sk
 Ica povas esar drastika chanjo e ne-esperinda por populara pagino;
 voluntez certigar ke vu komprenas la konsequi qui eventos ante durar adavane.",
 'movearticle' => 'Movez pagino:',
-'movenologin' => 'Sesiono ne iniciata',
 'movenologintext' => 'Vu mustas esar registragita uzanto ed [[Special:UserLogin|enirir]] por rinomizar pagino.',
 'newtitle' => 'A nova titulo:',
 'move-watch' => 'Surveyar ca pagino',
@@ -1284,7 +1260,6 @@ voluntez certigar ke vu komprenas la konsequi qui eventos ante durar adavane.",
 'articleexists' => 'Pagino kun sama nomo ja existas od la nomo
 qua vu selektis ne esas valida.
 Voluntez selektar altra nomo.',
-'movedto' => 'rinomizita ad',
 'movetalk' => 'Rinomizar la debato-pagino se to esas aplikebla.',
 'movelogpage' => 'Movo-registraro',
 'movereason' => 'Motivo:',
@@ -1449,9 +1424,6 @@ Vu darfos adjuntar kauso en la rezumo.',
 'exif-gpsspeed-k' => 'Kilometri per horo',
 'exif-gpsspeed-m' => 'Milii per horo',
 
-# External editor support
-'edit-externally' => 'Chanjez ta arkivo per externa programo',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'omna',
 'namespacesall' => 'omna',
index 7425be9..64b0e80 100644 (file)
@@ -139,7 +139,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Elstu_síður' ),
        'Blankpage'                 => array( 'Auð_síða' ),
        'Block'                     => array( 'Banna_vistföng' ),
-       'Blockme'                   => array( 'Banna_mig' ),
        'Booksources'               => array( 'Bókaheimildir' ),
        'BrokenRedirects'           => array( 'Brotnar_tilvísanir' ),
        'Categories'                => array( 'Flokkar' ),
@@ -151,7 +150,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Búa_til_aðgang' ),
        'Deadendpages'              => array( 'Botnlangar' ),
        'DeletedContributions'      => array( 'Eydd_framlög' ),
-       'Disambiguations'           => array( 'Tenglar_í_aðgreiningarsíður' ),
        'DoubleRedirects'           => array( 'Tvöfaldar_tilvísanir' ),
        'EditWatchlist'             => array( 'Breyta_vaktlista' ),
        'Emailuser'                 => array( 'Senda_tölvupóst' ),
@@ -241,12 +239,12 @@ $messages = array(
 'tog-hidepatrolled' => 'Fela yfirfarnar breytingar í nýlegum breytingum',
 'tog-newpageshidepatrolled' => 'Fela yfirfarnar breytingar í listanum yfir nýjar síður',
 'tog-extendwatchlist' => 'Sýna allar breytingar á vaktlistanum, ekki einungis þær nýjustu',
-'tog-usenewrc' => 'Flokka breytingar eftir síðu í nýlegum breytingum og vaktlista (þarfnast JavaScript)',
+'tog-usenewrc' => 'Flokka breytingar eftir síðu í nýlegum breytingum og vaktlista',
 'tog-numberheadings' => 'Númera fyrirsagnir sjálfkrafa',
-'tog-showtoolbar' => 'Sýna breytingarverkfærastiku (JavaScript)',
-'tog-editondblclick' => 'Breyta síðum þegar tvísmellt er (JavaScript)',
+'tog-showtoolbar' => 'Sýna breytingarverkfærastiku',
+'tog-editondblclick' => 'Breyta síðum þegar tvísmellt er',
 'tog-editsection' => 'Virkja hlutabreytingu með [breyta] tenglum',
-'tog-editsectiononrightclick' => 'Virkja hlutabreytingu með því að hægrismella á hlutafyrirsagnir (JavaScript)',
+'tog-editsectiononrightclick' => 'Virkja hlutabreytingu með því að hægrismella á hlutafyrirsagnir',
 'tog-showtoc' => 'Sýna efnisyfirlit (fyrir síður með meira en 3 fyrirsagnir)',
 'tog-rememberpassword' => 'Muna innskráninguna mína í þessum vafra (í allt að $1 {{PLURAL:$1|dag|daga}})',
 'tog-watchcreations' => 'Bæta síðum sem ég bý til og skrám sem ég hleð inn á vaktlistann minn',
@@ -256,7 +254,6 @@ $messages = array(
 'tog-minordefault' => 'Merkja allar breytingar sem minniháttar sjálfgefið',
 'tog-previewontop' => 'Sýna forskoðun á undan breytingarkassanum',
 'tog-previewonfirst' => 'Sýna forskoðun með fyrstu breytingu',
-'tog-nocache' => 'Slökkva á flýtiminni vafrans',
 'tog-enotifwatchlistpages' => 'Senda mér tölvupóst þegar síðu eða skrá á vaktlistanum mínu er breytt',
 'tog-enotifusertalkpages' => 'Senda mér tölvupóst þegar notandaspjallinu mínu er breytt',
 'tog-enotifminoredits' => 'Senda mér einnig tölvupóst vegna minniháttar breytinga á síðum og skrám',
@@ -264,7 +261,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Sýna fjölda vaktandi notenda',
 'tog-oldsig' => 'Núverandi undirskrift:',
 'tog-fancysig' => 'Meðhöndla undirskrift sem wikimál (án sjálfvirks tengils)',
-'tog-uselivepreview' => 'Nota beina forskoðun (JavaScript) (Á tilraunastigi)',
+'tog-uselivepreview' => 'Nota beina forskoðun (Á tilraunastigi)',
 'tog-forceeditsummary' => 'Birta áminningu þegar breytingarágripið er tómt',
 'tog-watchlisthideown' => 'Ekki sýna mínar breytingar á vaktlistanum',
 'tog-watchlisthidebots' => 'Ekki sýna breytingar vélmenna á vaktlistanum',
@@ -390,7 +387,6 @@ $messages = array(
 'qbedit' => 'Breyta',
 'qbpageoptions' => 'Þessi síða',
 'qbmyoptions' => 'Mínar síður',
-'qbspecialpages' => 'Kerfissíður',
 'faq' => 'Algengar spurningar',
 'faqpage' => 'Project:Algengar spurningar',
 
@@ -480,7 +476,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).
 'aboutsite' => 'Um {{SITENAME}}',
 'aboutpage' => 'Project:Um verkefnið',
-'copyright' => 'Efni má nota samkvæmt $1 nema kemur fram annars.',
+'copyright' => 'Efni má nota samkvæmt $1 nema annað komi fram.',
 'copyrightpage' => '{{ns:project}}:Höfundarréttur',
 'currentevents' => 'Potturinn',
 'currentevents-url' => 'Project:Potturinn',
@@ -509,7 +505,7 @@ Sjá [[Special:Version|útgáfusíðuna]].',
 'youhavenewmessages' => 'Þú hefur fengið $1 ($2).',
 'youhavenewmessagesfromusers' => 'Þú hefur $1 frá {{PLURAL:$3|öðrum notanda|$3 notendum}} ($2)',
 'youhavenewmessagesmanyusers' => 'Þú hefur $1 frá mörgum notendum ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ein|}} ný skilaboð',
+'newmessageslinkplural' => '{{PLURAL:$1|ný}} skilaboð',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|síðasta breyting|síðustu breytingar}} spjallsíðunnar',
 'youhavenewmessagesmulti' => 'Þín bíða ný skilaboð á $1',
 'editsection' => 'breyta',
@@ -597,12 +593,9 @@ Líklegt er að einhver annar hafi gert það.',
 Engin skýring gefin.',
 'badtitle' => 'Slæmur titill',
 'badtitletext' => 'Umbeðin síðutitill er ógildur.',
-'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að {{PLURAL:$1|ein niðurstaða er aðgengileg|$1 niðurstöður eru aðgengilegar}} í skyndiminninu.',
-'perfcachedts' => 'Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að {{PLURAL:$4|ein niðurstaða er aðgengileg|$4 niðurstöður eru aðgengilegar}} í skyndiminninu.',
+'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að $1 {{PLURAL:$1|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.',
+'perfcachedts' => 'Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að $4 {{PLURAL:$4|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.',
 'querypage-no-updates' => 'Lokað er fyrir uppfærslur af þessari síðu. Gögn sett hér munu ekki vistast.',
-'wrong_wfQuery_params' => 'Röng færibreyta fyrir wfQuery()<br />
-Virkni: $1<br />
-Spurn: $2',
 'viewsource' => 'Skoða efni',
 'viewsource-title' => 'Skoða efni $1',
 'actionthrottled' => 'Aðgerðin kafnaði',
@@ -631,7 +624,7 @@ Möppudýrið sem læsti skránni gaf þessa ástæðu: "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ógildur titill í nafnrými "$2" og með textann "$3"',
 'invalidtitle-unknownnamespace' => 'Ógildur titill með óþekkt nafnrými númer $1 og texta "$2"',
 'exception-nologin' => 'Óinnskráð(ur)',
-'exception-nologin-text' => 'Þessi síða eða aðgerð krefst þess að þú sért skráður inn á þessum wiki.',
+'exception-nologin-text' => 'Vinsamlegast [[Special:Userlogin|skráðu þig inn]] til þess að hafa aðgang að þessari síðu eða aðgerð.',
 
 # Virus scanner
 'virus-badscanner' => "Slæm stilling: óþekktur veiruskannari: ''$1''",
@@ -641,7 +634,6 @@ Möppudýrið sem læsti skránni gaf þessa ástæðu: "\'\'$3\'\'".',
 # Login and logout pages
 'logouttext' => "'''Þú hefur verið skráð(ur) út.'''
 
-Þú 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.",
 'welcomeuser' => 'Velkomin(n), $1!',
 'welcomecreation-msg' => 'Aðgangurinn þinn hefur verið búinn til.
@@ -679,7 +671,7 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}} stillingunum]] þínum
 'gotaccount' => "Nú þegar með notandanafn? '''$1'''.",
 'gotaccountlink' => 'Skráðu þig inn',
 'userlogin-resetlink' => 'Gleymdir þú notendaupplýsingunum þínum?',
-'userlogin-resetpassword-link' => 'Endursetja lykilorð',
+'userlogin-resetpassword-link' => 'Gleymdiru lykilorðinu þínu?',
 'helplogin-url' => 'Help:Innskráning',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjálp við innskráningu]]',
 'userlogin-loggedin' => 'Þú ert búin(n) að skrá þig inn sem {{GENDER:$1|$1}}.
@@ -728,18 +720,18 @@ Athugaðu hvort um innsláttavillu er að ræða eða [[Special:UserLogin/signup
 'login-userblocked' => 'Þessi notandi hefur verið settur í bann.  Innskráning ekki leyfð.',
 'wrongpassword' => 'Uppgefið lykilorð er rangt. Vinsamlegast reyndu aftur.',
 'wrongpasswordempty' => 'Lykilorðsreiturinn var auður. Vinsamlegast reyndu aftur.',
-'passwordtooshort' => 'Lykilorð skal vera að minnsta kosti {{plural: $1 |einn stafur|$1 stafir}}.',
+'passwordtooshort' => 'Lykilorð skal vera að minnsta kosti $1 {{PLURAL:$1|stafur|stafir}}.',
 'password-name-match' => 'Þarf að lykilorð þitt sé öðruvísi notandanafni þínu',
 'password-login-forbidden' => 'Notkun þessa notendanafns og lykilorðs er ekki leyfileg.',
-'mailmypassword' => 'Senda nýtt lykilorð með tölvupósti',
+'mailmypassword' => 'Endurstilla lykilorð',
 'passwordremindertitle' => 'Nýtt tímabundið aðgangsorð fyrir {{SITENAME}}',
 'passwordremindertext' => 'Einhver (líklegast þú, á vistfanginu $1) hefur beðið um að fá nýtt
 lykilorð fyrir {{SITENAME}} ($4). Tímabundið lykilorð fyrir notandann „$2“
 hefur verið búið til og er núna „$3“. Ef þetta er það sem þú vildir, þarfu að skrá
-þig inn og velja nýtt lykilorð.  Þetta tímabundna lykilorð rennur út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+þig inn og velja nýtt lykilorð.  Þetta tímabundna lykilorð rennur út eftir $5 {{PLURAL:$5|dag|daga}}.
 
 Ef það var ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt,
-og vilt ekki lengur breyta því, skaltu hunsa þetta skilaboð og
+og vilt ekki lengur breyta því, skaltu hunsa þessi skilaboð og
 halda áfram að nota gamla lykilorðið.',
 'noemail' => 'Það er ekkert netfang skráð fyrir notandan "$1".',
 'noemailcreate' => 'Þú verður að skrá gilt netfang',
@@ -753,7 +745,7 @@ Til að koma í veg fyrir misnotkun, er aðeins einn tölvupóstur sendur {{PLUR
 'acct_creation_throttle_hit' => 'Því miður, hafa verið búnir til {{PLURAL:$1|1 aðgang|$1 aðganga}} nýr aðgangar í dag sem er hámarksfjöldi nýskráninga á einum degi.
 Þú getur því miður ekki búið til nýjan aðgang frá þessari IP-tölu að svo stöddu.',
 'emailauthenticated' => 'Netfang þitt var staðfest þann $2 klukkan $3.',
-'emailnotauthenticated' => 'Veffang þitt hefur ekki enn verið sannreynt. Enginn póstur verður sendur af neinum af eftirfarandi eiginleikum.',
+'emailnotauthenticated' => 'Tölvupóstfang þitt hefur ekki enn verið staðfest. Enginn póstur verður sendur af neinum af eftirfarandi eiginleikum.',
 'noemailprefs' => 'Tilgreindu netfang svo þessar aðgerðir virki.',
 'emailconfirmlink' => 'Staðfesta netfang þitt',
 'invalidemailaddress' => 'Ekki er hægt að taka við netfangi þínu þar sem að það er á ógildu formi.
@@ -781,7 +773,7 @@ Vinsamlegast bíðið $1 áður en þú reynir aftur.',
 'user-mail-no-body' => 'Reyndi að senda tölvupóst með engu eða verulega stuttu meginmáli.',
 
 # Change password dialog
-'resetpass' => 'Breyta lykilorði',
+'changepassword' => 'Breyta lykilorði',
 'resetpass_announce' => 'Þú skráðir þig inn með tímabundnum netfangskóða.
 Til að klára að skrá þig inn, verður þú að endurstilla lykilorðið hér:',
 'resetpass_text' => '<!-- Setja texta hér -->',
@@ -817,14 +809,14 @@ endursetningu lykilorðsins þíns fyrir {{SITENAME}} ($4). Aðgangur eftirfaran
 
 $2
 
-Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorð|Tímabundnu lykilorðin}} renna út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorðið rennur|Tímabundnu lykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|daga}}.
 
 Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
 'passwordreset-emailtext-user' => 'Notandinn $1 á {{SITENAME}} hefur beðið um endursetningu lykilorðsins þíns fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
 
 $2
 
-Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorð|Tímabundnu lykilorðin}} renna út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorðið rennur|Tímabundnu lykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|daga}}.
 
 Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
 'passwordreset-emailelement' => 'Notendanafn: $1
@@ -1013,7 +1005,7 @@ Lausn er í gildi sem leyfir þér að breyta síðum: Stafatákn sem eru ekki 
 Ef þú vilt ekki að textanum verði breytt skaltu ekki senda hann inn hér.<br />
 Þú lofar okkur einnig að þú hafir skrifað þetta sjálfur, að efnið sé í almannaeigu eða að það heyri undir frjálst leyfi. (sjá $1).
 '''EKKI SENDA INN HÖFUNDARRÉTTARVARIРEFNI ÁN LEYFIS RÉTTHAFA!'''",
-'longpageerror' => "'''VILLA: Textinn sem þú sendir inn er {{PLURAL:$1|eitt kílóbæti|$1 kílóbæti}} að lengd, en hámarkið er {{PLURAL:$2|eitt kílóbæti|$2 kílóbæti}}. Ekki er hægt að vista textann.'''",
+'longpageerror' => "'''VILLA: Textinn sem þú sendir inn er $1 {{PLURAL:$1|kílóbæti|kílóbæti}} að lengd, en hámarkið er $2 {{PLURAL:$2|kílóbæti|kílóbæti}}. Ekki er hægt að vista textann.'''",
 'readonlywarning' => "'''AÐVÖRUN: Gagnagrunninum hefur verið læst til að unnt sé að framkvæma viðhaldsaðgerðir, svo þú getur ekki vistað breytingar þínar núna.'''
 Þú ættir að klippa og líma textann yfir í textaskjal til þess að geyma hann til seinni tíma.
 
@@ -1071,7 +1063,7 @@ Ef þú ert skráður inn, þá getur þú óvirkjað þessi skilaboð í „Bre
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Viðvörun:''' Þessi síða inniheldur of mörg vinnslufrek aðgerðar þáttunar köll.
 
-Hún ætti að innihalda minna en $2 {{PLURAL:$2|kall|köll}}, en {{PLURAL:$1|er nú eitt kall|eru nú $1 köll}}.",
+Hún ætti að innihalda minna en $2 {{PLURAL:$2|kall|köll}}, en {{PLURAL:$1|er nú $1 kall|eru nú $1 köll}}.",
 'expensive-parserfunction-category' => 'Síður með of mörg vinnslufrek aðgerðar þáttunar köll',
 'post-expand-template-inclusion-warning' => "'''Viðvörun:''' Sniðið tekur of mikið pláss.
 Hluti sniðsins verður ekki með.",
@@ -1171,10 +1163,6 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGE
 'revisiondelete' => 'Eyða/endurvekja breytingar',
 'revdelete-nooldid-title' => 'Ógild markbreyting',
 'revdelete-nooldid-text' => 'Annaðhvort hefur útgáfan sem á að fela ekki verið tilgreind, þessi útgáfa ekki verið til, eða að þú sért að reyna að fela núverandi útgáfu.',
-'revdelete-nologtype-title' => 'Engin skráargerð uppgefin',
-'revdelete-nologtype-text' => 'Þú tilgreindir ekki skráargerð til þess að framkvæma þessa aðgerð á.',
-'revdelete-nologid-title' => 'Ógild aðgerðarskráar færsla',
-'revdelete-nologid-text' => 'Þú hefur annaðhvort ekki tilgreint færslu í aðgerðarskrá til að framkvæma þessa aðgerð á, eða færslan er ekki til.',
 'revdelete-no-file' => 'Umbeðin skrá er ekki til.',
 'revdelete-show-file-confirm' => 'Ertu viss um að þú viljir sjá eydda breytingu af síðunni "<nowiki>$1</nowiki>" frá $2 $3?',
 'revdelete-show-file-submit' => 'Já',
@@ -1195,8 +1183,8 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGE
 'revdelete-hide-user' => 'Notandanafn/vistfang',
 'revdelete-hide-restricted' => 'Dylja gögn frá stjórnendum og öðrum',
 'revdelete-radio-same' => '(ekki breyta)',
-'revdelete-radio-set' => 'Sjáanlegt',
-'revdelete-radio-unset' => 'Falið',
+'revdelete-radio-set' => 'Falið',
+'revdelete-radio-unset' => 'Sjáanlegt',
 'revdelete-suppress' => 'Dylja gögn frá stjórnendum og öðrum',
 'revdelete-unsuppress' => 'Fjarlægja takmarkanir á endurvöktum breytingum',
 'revdelete-log' => 'Ástæða:',
@@ -1208,8 +1196,6 @@ $1",
 'logdelete-failure' => "'''Mistókst að uppfæra sýnileika aðgerðarskráar:'''
 $1",
 'revdel-restore' => 'Breyta sýn',
-'revdel-restore-deleted' => 'eyddar breytingar',
-'revdel-restore-visible' => 'sýnilegar breytingar',
 'pagehist' => 'Breytingaskrá',
 'deletedhist' => 'Eyðingaskrá',
 'revdelete-hide-current' => 'Mistókst að fela breytingu frá $1 $2: Þetta er núverandi útgáfa síðunnar.
@@ -1279,9 +1265,9 @@ Athugaðu að með því að nota flakktenglana er þessi dálkur endurstilltur.
 'showhideselectedversions' => 'Sýna/fela valdar breytingar',
 'editundo' => 'Taka aftur þessa breytingu',
 'diff-empty' => '(Enginn munur)',
-'diff-multi' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá {{PLURAL:$2|notanda|$2 notendum}}.)',
-'diff-multi-manyusers' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá fleiri en {{PLURAL:$2|einum notanda|$2 notendum}}.)',
-'difference-missing-revision' => '{{PLURAL:$2|Ein útgáfa|$2 útgáfur}} samanburðarins ($1) {{PLURAL:$2|fannst|fundust}} ekki.
+'diff-multi' => '$1 ({{PLURAL:$1|millibreyting ekki sýnd|millibreytingar ekki sýndar}} frá $2 {{PLURAL:$2|notanda|notendum}}.)',
+'diff-multi-manyusers' => '($1 {{PLURAL:$1|millibreyting ekki sýnd|millibreytingar ekki sýndar}} frá fleiri en $2 {{PLURAL:$2|notanda|notendum}}.)',
+'difference-missing-revision' => '$2 {{PLURAL:$2|útgáfa|útgáfur}} samanburðarins ($1) {{PLURAL:$2|fannst|fundust}} ekki.
 
 Þetta gerist oftast þegar úreldur samanburðartengill tengir á síðu sem hefur verið eytt.
 Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingarskránni].',
@@ -1289,12 +1275,8 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 # Search results
 'searchresults' => 'Leitarniðurstöður',
 'searchresults-title' => 'Leitarniðurstöður fyrir „$1“',
-'searchresulttext' => 'Fyrir frekari upplýsingar um leit á {{SITENAME}} farið á [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Þú leitaðir að '''[[:$1]]''' ([[Special:Prefixindex/$1|öllum síðum sem hefjast á „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|öllum síðum sem tengja í „$1“]])",
-'searchsubtitleinvalid' => "Þú leitaðir að '''$1'''",
 'toomanymatches' => 'Of mörgum niðurstöðum var skilað, gjörðu svo vel og reyndu aðra fyrirspurn',
 'titlematches' => 'Titlar greina sem pössuðu við fyrirspurnina',
-'notitlematches' => 'Engir greinartitlar pössuðu við fyrirspurnina',
 'textmatches' => 'Leitarorð fannst/fundust í innihaldi eftirfarandi greina',
 'notextmatches' => 'Engar samsvaranir á texta í síðum',
 'prevn' => 'síðustu {{PLURAL:$1|$1}}',
@@ -1303,10 +1285,8 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'nextn-title' => '{{PLURAL:$1|Næsta|Næstu}} $1 {{PLURAL:$1|niðurstaða|niðurstöður}}',
 'shown-title' => 'Sýna $1 {{PLURAL:$1|niðurstöðu|niðurstöður}} á hverri síðu',
 'viewprevnext' => 'Skoða ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Leitarvalmöguleikar',
 'searchmenu-exists' => "'''Það er síða að nafni „[[:$1]]“ á þessum wiki'''",
 'searchmenu-new' => "'''Skapaðu síðuna \"[[:\$1]]\" á þessum wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Leita að síðum með þessu forskeyti]]',
 'searchprofile-articles' => 'Efnissíður',
 'searchprofile-project' => 'Hjálpar- og verkefnasíður',
 'searchprofile-images' => 'Margmiðlanir',
@@ -1327,20 +1307,16 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'search-interwiki-default' => '$1 útkomur:',
 'search-interwiki-more' => '(fleiri)',
 'search-relatedarticle' => 'Tengt',
-'mwsuggest-disable' => 'Gera leitar uppástungur óvirkar',
 'searcheverything-enable' => 'Leita í öllum nafnrýmum',
 'searchrelated' => 'tengt',
 'searchall' => 'öllum',
 'showingresults' => "Sýni {{PLURAL:$1|'''1''' niðurstöðu|'''$1''' niðurstöður}} frá og með #'''$2'''.",
 'showingresultsnum' => "Sýni {{PLURAL:$3|'''$3''' niðurstöðu|'''$3''' niðurstöður}} frá og með #<b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Niðurstaða '''$1''' af '''$3'''|Niðurstöður'''$1 - $2''' af '''$3'''}} fyrir '''$4'''",
-'nonefound' => "'''Athugaðu''': Það er aðeins leitað í sumum nafnrýmum sjálfkrafa. Prófaðu að setja forskeytið ''all:'' í fyrirspurnina til að leita í öllu efni (þar á meðal notandaspjallsíðum, sniðum, o.s.frv.), eða notaðu tileigandi nafnrými sem forskeyti.",
 'search-nonefound' => 'Engar niðurstöður pössuðu við fyrirspurnina.',
-'powersearch' => 'Ítarleg leit',
 'powersearch-legend' => 'Ítarlegri leit',
 'powersearch-ns' => 'Leita í nafnrýmum:',
 'powersearch-redir' => 'Lista tilvísanir',
-'powersearch-field' => 'Leita að',
 'powersearch-togglelabel' => 'Athuga:',
 'powersearch-toggleall' => 'Allt',
 'powersearch-togglenone' => 'Ekkert',
@@ -1354,7 +1330,6 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
 'preferences' => 'Stillingar',
 'mypreferences' => 'Mínar stillingar',
 'prefs-edits' => 'Fjöldi breytinga:',
-'changepassword' => 'Breyta lykilorði',
 'prefs-skin' => 'Þema',
 'skin-preview' => 'Forskoða',
 'datedefault' => 'Sjálfgefið',
@@ -1377,13 +1352,11 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
 'prefs-email' => 'Tölvupóststillingar',
 'prefs-rendering' => 'Útlit',
 'saveprefs' => 'Vista',
-'resetprefs' => 'Endurstilla valmöguleika',
 'restoreprefs' => 'Endurstilla allar sjálfgefnar stillingar (í öllum hlutum)',
 'prefs-editing' => 'Breytingarflipinn',
 'rows' => 'Raðir',
 'columns' => 'Dálkar',
 'searchresultshead' => 'Leit',
-'resultsperpage' => 'Niðurstöður á síðu',
 'stub-threshold' => 'Þröskuldur fyrir <a href="#" class="stub">stubbatengla</a> (bæt):',
 'stub-threshold-disabled' => 'Óvirkt',
 'recentchangesdays' => 'Fjöldi daga sem nýlegar breytingar ná yfir:',
@@ -1395,7 +1368,6 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
 'localtime' => 'Staðartími:',
 'timezoneuseserverdefault' => 'Nota sjálfgefið tímabelti ($1)',
 'timezoneuseoffset' => 'Annað (tilgreinið tímamismun)',
-'timezoneoffset' => 'Hliðrun¹:',
 'servertime' => 'Tími netþjóns:',
 'guesstimezone' => 'Fylla inn frá vafranum',
 'timezoneregion-africa' => 'Afríka',
@@ -1556,7 +1528,7 @@ Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband vi
 'right-ipblock-exempt' => 'Hunsa bönn vistfanga, sjálfvirk bönn og fjöldabönn',
 'right-proxyunbannable' => 'Sneiða hjá sjálfvirkum proxy-bönnum',
 'right-unblockself' => 'Afbanna sjálfan sig',
-'right-protect' => 'Breyta verndunarstigi og breyta vernduðum síðum',
+'right-protect' => 'Breyta verndunarstigi og breyta keðjuvernduðum síðum',
 'right-editprotected' => 'Breyta síðum vernduðum sem „{{int:protect-level-sysop}}“',
 'right-editsemiprotected' => 'Breyta síðum vernduðum sem „{{int:protect-level-autoconfirmed}}“',
 'right-editinterface' => 'Breyta notandaviðmótinu',
@@ -1647,10 +1619,9 @@ Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband vi
 'recentchanges-feed-description' => 'Hér er hægt að fylgjast með nýlegum breytingum á {{SITENAME}}.',
 'recentchanges-label-newpage' => 'Þessi breyting skapaði nýja síðu',
 'recentchanges-label-minor' => 'Þetta er minniháttar breyting',
-'recentchanges-label-bot' => 'Þessi breytingar var gerð af vélmenni',
+'recentchanges-label-bot' => 'Þessi breyting var gerð af vélmenni',
 'recentchanges-label-unpatrolled' => 'Þessi breyting hefur ekki verið yfirfarin',
-'recentchanges-legend-newpage' => '$1 - ný síða',
-'rcnote' => "Að neðan {{PLURAL:$1|er '''1''' breyting|eru síðustu '''$1''' breytingar}} síðast {{PLURAL:$2|liðinn dag|liðna '''$2''' daga}}, frá $5, $4.",
+'recentchanges-legend-newpage' => '(sjá einng [[Special:NewPages|lista yfir nýjar síður]])',
 'rcnotefrom' => "Að neðan eru breytingar síðan '''$2''' (allt að '''$1''' sýndar).",
 'rclistfrom' => 'Sýna breytingar frá og með $1',
 'rcshowhideminor' => '$1 minniháttar breytingar',
@@ -1842,7 +1813,7 @@ Ef vandamálið lagast ekki, hafðu samband við [[Special:ListUsers/sysop|stjó
 'backend-fail-closetemp' => 'Mistókst að loka tímabundinni skrá.',
 'backend-fail-read' => 'Mistókst að lesa skrá $1.',
 'backend-fail-create' => 'Mistókst að skrifa skrá $1.',
-'backend-fail-maxsize' => 'Mistókst að skrifa skránna $1 því hún er stærri en {{PLURAL:$2|eitt bæti|$2 bæti}}.',
+'backend-fail-maxsize' => 'Mistókst að skrifa skránna „$1” því hún er stærri en $2 {{PLURAL:$2|bæti}}.',
 'backend-fail-readonly' => 'Gagnabankann "$1" er engöngu hægt að lesa í augnablikinu. Ástæðan sem var gefin er: "\'\'$2\'\'"',
 'backend-fail-synced' => 'Skráin $1 er í ósamkvæmu ástandi innan innri geymslubakenda',
 'backend-fail-connect' => 'Mistókst að tengjast gagnabankanum "$1".',
@@ -2039,7 +2010,7 @@ Leitarstrengurinn á að vera á þessu formi: efnistag/myndasnið, t.d. <code>i
 'unusedtemplateswlh' => 'aðrir tenglar',
 
 # Random page
-'randompage' => 'Handahófsvalin grein',
+'randompage' => 'Handahófsvalin síða',
 'randompage-nopages' => 'Það eru engar síður í {{PLURAL:$2|nafnrýminu|nafnrýmunum}}: $1.',
 
 # Random page in category
@@ -2145,10 +2116,8 @@ Hún er tilvísun á [[$2]].',
 'protectedpages' => 'Verndaðar síður',
 'protectedpages-indef' => 'Aðeins óendanlegar verndanir',
 'protectedpages-cascade' => 'Keðjuverndun eingöngu',
-'protectedpagestext' => 'Eftirfarandi síður hafa verið verndaðar svo ekki sé hægt að breyta þeim eða færa þær',
 'protectedpagesempty' => 'Engar síður eru verndaðar með þessum stikum.',
 'protectedtitles' => 'Verndaðir titlar',
-'protectedtitlestext' => 'Eftirfarandi titlar eru verndaðir gegn því að vera skapaðir',
 'protectedtitlesempty' => 'Engir titlar eru verndaðir með þessum stikum.',
 'listusers' => 'Notendalisti',
 'listusers-editsonly' => 'Sýna eingöngu notendur með breytingar',
@@ -2200,9 +2169,6 @@ Vinsamlegast athugið að aðrar vefsíður gætu tengt beint í skrár héðan,
 'allpagesto' => 'Sýna síður sem enda á:',
 'allarticles' => 'Allar greinar',
 'allinnamespace' => 'Allar síður ($1 nafnrými)',
-'allnotinnamespace' => 'Allar síður (ekki í $1 nafnrýminu)',
-'allpagesprev' => 'Síðast',
-'allpagesnext' => 'Næst',
 'allpagessubmit' => 'Áfram',
 'allpagesprefix' => 'Sýna síður með forskeytinu:',
 'allpagesbadtitle' => 'Ekki var hægt að búa til grein með þessum titli því hann innihélt einn eða fleiri stafi sem ekki er hægt að nota í titlum.',
@@ -2374,7 +2340,7 @@ Til þess að hafa samband við $PAGEEDITOR, smelltu á:
    $PAGEEDITOR_WIKI
 
 Athugaðu að frekari breytingar á $PAGETITLE leiða
-ekki af sér fleiri tilkynningar fyrr en þú hefur heimsótt síðuna.
+ekki af sér fleiri tilkynningar fyrr en þú hefur heimsótt síðuna á meðan þú ert skráð/ur inn.
 
 Kveðja,
 {{SITENAME}}
@@ -2416,9 +2382,11 @@ Sjá lista yfir nýlegar eyðingar í $2.',
 'deleteotherreason' => 'Aðrar/fleiri ástæður:',
 'deletereasonotherlist' => 'Önnur ástæða',
 'deletereason-dropdown' => '* Algengar ástæður
+** Amapóstur
 ** Að beiðni höfundar
 ** Höfundaréttarbrot
-** Skemmdarverk',
+** Skemmdarverk
+** Brotin tilvísun',
 'delete-edit-reasonlist' => 'Breyta eyðingarástæðum',
 'delete-toobig' => 'Þessi síða hefur stóra breytingarskrá, yfir $1 {{PLURAL:$1|breyting|breytingar}}.
 Óheimilt er að eyða slíkum síðum til að valda ekki óæskilegum truflunum á {{SITENAME}}.',
@@ -2439,7 +2407,7 @@ einhver annar hefur breytt síðunni eða tekið breytinguna til baka.
 Síðasta breyting síðunnar er frá [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Beytingarágripið var: \"''\$1''\".",
 'revertpage' => 'Tók aftur breytingar [[Special:Contributions/$2|$2]] ([[User talk:$2|spjall]]), breytt til síðustu útgáfu [[User:$1|$1]]',
-'revertpage-nouser' => 'Tók aftur breytingar (notendanafn fjarlægt) til síðustu útgáfu [[User:$1|$1]]',
+'revertpage-nouser' => 'Tók aftur breytingar falins notanda til síðustu útgáfu {{GENDER:$1|[[User:$1|$1]]}}',
 'rollback-success' => 'Tók til baka breytingar eftir $1; núverandi $2.',
 
 # Edit tokens
@@ -2541,12 +2509,11 @@ Innihald greinarinnar er einungis aðgengilegt möppudýrum.',
 'undeletebtn' => 'Endurvekja',
 'undeletelink' => 'skoða/endurvekja',
 'undeleteviewlink' => 'skoða',
-'undeletereset' => 'Endurstilla',
 'undeleteinvert' => 'Snúa vali við',
 'undeletecomment' => 'Ástæða:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|breyting endurvakin|breytingar endurvaktar}}',
 'undeletedrevisions-files' => '$1 {{PLURAL:$1|breyting|breytingar}} og $2 {{PLURAL:$2|skrá|skrár}} endurvaktar',
-'undeletedfiles' => '{{PLURAL:$1|Ein skrá endurvakin|$1 skrár endurvaktar}}',
+'undeletedfiles' => '$1 {{PLURAL:$1|skrá endurvakin|skrár endurvaktar}}',
 'cannotundelete' => 'Ekki var hægt að afturkalla eyðingu.
 $1',
 'undeletedpage' => "'''$1 var endurvakin'''
@@ -2631,7 +2598,6 @@ Síðasta færsla vistfangsins úr bönnunarskrá er sýnd hér fyrir neðan til
 'block' => 'Banna notanda',
 'unblock' => 'Afbanna notanda',
 'blockip' => 'Banna notanda',
-'blockip-title' => 'Banna notanda',
 'blockip-legend' => 'Banna notanda',
 'blockiptext' => 'Notaðu eyðublaðið hér að neðan til þess að banna ákveðið vistfang eða notandanafn.
 Þetta ætti einungis að gera til þess að koma í veg fyrir skemmdarverk, og í samræmi við [[{{MediaWiki:Policy-url}}|samþykktir]].
@@ -2639,7 +2605,6 @@ Gefðu nákvæma skýringu að neðan (til dæmis, með því að vísa í þær
 'ipadressorusername' => 'Vistfang eða notandanafn:',
 'ipbexpiry' => 'Bannið rennur út:',
 'ipbreason' => 'Ástæða:',
-'ipbreasonotherlist' => 'Aðrar ástæður',
 'ipbreason-dropdown' => '* Algengar bannástæður
 ** Setur inn rangar upplýsingar
 ** Fjarlægir efni af síðum
@@ -2655,8 +2620,6 @@ Gefðu nákvæma skýringu að neðan (til dæmis, með því að vísa í þær
 'ipbsubmit' => 'Banna notanda',
 'ipbother' => 'Annar tími:',
 'ipboptions' => '2 tíma:2 hours,1 dag:1 day,3 daga:3 days,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite',
-'ipbotheroption' => 'annar',
-'ipbotherreason' => 'Önnur/auka ástæða:',
 'ipbhidename' => 'Fela notandanafn úr breytingarskrá og listum',
 'ipbwatchuser' => 'Vakta notanda- og spjallsíður þessa notanda',
 'ipb-disableusertalk' => 'Banna þessum notanda að breyta eigin spjallsíðu',
@@ -2748,7 +2711,6 @@ Vinsamlegast hafðu samband við internetþjónustuaðilann þinn eða netstjór
 'sorbsreason' => 'Vistfangið þitt er á lista yfir opin vefsel í DNSBL sem er í notkun á {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Vistfangið þitt er á lista yfir opin vefsel í DNSBL sem er notað af {{SITENAME}}.
 Þú getur ekki stofnað aðgang.',
-'cant-block-while-blocked' => 'Þú getur ekki bannað aðra notendur á meðan þú ert í banni.',
 'cant-see-hidden-user' => 'Notandinn sem þú ert að reyna að banna hefur þegar verið bannaður og falinn.
 Þar sem þú hefur ekki þau réttindi að fela notendur, þá getur þú ekki séð eða breytt banni notandans.',
 'ipbblocked' => 'Þú getur ekki bannað eða afbannað aðra notendur, því þú ert sjálfur í banni.',
@@ -2802,7 +2764,6 @@ Ef síðan er vinsæl þá getur þessi aðgerð kallað fram viðbrögð annara
 Í þeim tilfellum verður að færa hana handvirkt.',
 'movearticle' => 'Færa síðu:',
 'moveuserpage-warning' => "'''Viðvörun:''' Þú ert í þann mund að færa notendasíðu. Athugaðu aðeins síðan verður færð og notendanafni hans verður '''ekki''' breytt.",
-'movenologin' => 'Óinnskráð(ur)',
 'movenologintext' => 'Þú verður að vera [[Special:UserLogin|innskráð(ur)]] til að geta fært síður.',
 'movenotallowed' => 'Þú hefur ekki leyfi til að færa síður.',
 'movenotallowedfile' => 'Þú hefur ekki leyfi til að færa skrár.',
@@ -2818,9 +2779,6 @@ Ef síðan er vinsæl þá getur þessi aðgerð kallað fram viðbrögð annara
 'articleexists' => 'Annaðhvort er þegar til síða undir þessum titli, eða sá titill sem þú hefur valið er ekki gildur.
 Vinsamlegast veldu annan titil.',
 'cantmove-titleprotected' => 'Þú getur ekki fært síðu á þessa staðsetningu, því nýi titillinn hefur verið verndaður gegn sköpun',
-'talkexists' => "'''Færsla á síðunni sjálfri heppnaðist, en ekki var hægt að færa spjallsíðuna því hún er nú þegar til á nýja titlinum.
-Gjörðu svo vel og færðu hana handvirkt.'''",
-'movedto' => 'fært á',
 'movetalk' => 'Færa meðfylgjandi spjallsíðu',
 'move-subpages' => 'Færa undirstíður (upp að $1)',
 'move-talk-subpages' => 'Færa undirstíður spjallsíðunnar (upp að $1)',
@@ -2830,7 +2788,7 @@ Gjörðu svo vel og færðu hana handvirkt.'''",
 'movepage-max-pages' => 'Hámarkinu, $1 {{PLURAL:$1|síða|síður}}, hefur verið náð og verða engar fleiri færðar sjálfvirkt.',
 'movelogpage' => 'Flutningaskrá',
 'movelogpagetext' => 'Þetta er listi yfir síður sem nýlega hafa verið færðar.',
-'movesubpage' => '{{Plural:$1|Undirsíða|Undirsíður}}',
+'movesubpage' => '{{PLURAL:$1|Undirsíða|Undirsíður}}',
 'movesubpagetext' => 'Þessi síða hefur {{PLURAL:$1|eina undirsíðu|$1 undirsíður}} sem {{PLURAL:$1|er sýnd|eru sýndar}} hér fyrir neðan.',
 'movenosubpage' => 'Þessi síða hefur engar undirsíður.',
 'movereason' => 'Ástæða:',
@@ -3186,7 +3144,7 @@ Vinsamlegast reyndu aftur.',
 'svg-long-desc' => 'SVG-skrá, að nafni til $1 × $2 dílar, skráarstærð: $3',
 'svg-long-desc-animated' => 'SVG-hreyfimynd, að nafni til $1 × $2 dílar, skráarstærð: $3',
 'svg-long-error' => 'Ógild SVG skrá: $1',
-'show-big-image' => 'Mesta upplausn',
+'show-big-image' => 'Upphafleg skrá',
 'show-big-image-preview' => 'Stærð þessarar forskoðunar: $1',
 'show-big-image-other' => '{{PLURAL:$2|Önnur upplausn|Aðrar upplausnir}}: $1.',
 'show-big-image-size' => '$1 x $2 dílar',
@@ -3427,7 +3385,7 @@ Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi
 'exif-compression-1' => 'Ósamþjappað',
 
 'exif-copyrighted-true' => 'Höfundaréttarvarið',
-'exif-copyrighted-false' => 'Í Almenningi',
+'exif-copyrighted-false' => 'Höfundaréttarstaða ekki tilgreind',
 
 'exif-unknowndate' => 'Óþekkt dagsetning',
 
@@ -3618,15 +3576,10 @@ Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi
 'exif-urgency-high' => 'Hátt ($1)',
 'exif-urgency-other' => 'Mikilvægi ákveðið af notanda ($1)',
 
-# External editor support
-'edit-externally' => 'Breyta þessari skrá með utanaðkomandi hugbúnaði',
-'edit-externally-help' => '(Sjá [https://www.mediawiki.org/wiki/Manual:External_editors leiðbeiningar] fyrir meiri upplýsingar)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'allt',
 'namespacesall' => 'öll',
 'monthsall' => 'allir',
-'limitall' => 'alla',
 
 # Email address confirmation
 'confirmemail' => 'Staðfesta netfang',
@@ -3647,7 +3600,6 @@ Póstþjónninn skilaði: $1',
 'confirmemail_needlogin' => 'Þú verður að $1 þig til að staðfesta netfangið þitt.',
 'confirmemail_success' => 'Netfang þitt hefur verið staðfest. Þú getur nú [[Special:UserLogin|skráð þig inn]] og vafrað um wiki-kerfið.',
 'confirmemail_loggedin' => 'Netfang þitt hefur verið staðfest.',
-'confirmemail_error' => 'Eitthvað fór úrskeiðis við vistun staðfestingarinnar.',
 'confirmemail_subject' => 'Staðfesting netfangs á {{SITENAME}}',
 'confirmemail_body' => 'Einhver, sennilega þú, með vistfangið $1 hefur skráð sig á {{SITENAME}} undir notandanafninu „$2“ og gefið upp þetta netfang.
 
@@ -3752,7 +3704,7 @@ Vinsamlegast staðfestu að þú viljir endurvekja hana.',
 'watchlistedit-normal-explain' => 'Titlarnir á vaktlistanum þínum er sýndir fyrir neðan.
 Til að fjarlægja titil hakaðu í kassann við hliðina á honum og smelltu á „{{int:Watchlistedit-normal-submit}}“. Þú getur einnig [[Special:EditWatchlist/raw|breytt honum opnum]].',
 'watchlistedit-normal-submit' => 'Fjarlægja titla',
-'watchlistedit-normal-done' => '{{PLURAL:$1|Ein síða var fjarlægð|$1 síður voru fjarlægðar}} af vaktlistanum þínum:',
+'watchlistedit-normal-done' => '$1 {{PLURAL:$1|síða var fjarlægð|síður voru fjarlægðar}} af vaktlistanum þínum:',
 'watchlistedit-raw-title' => 'Breyta opnum vaktlistanum',
 'watchlistedit-raw-legend' => 'Breyta opnum vaktlistanum',
 'watchlistedit-raw-explain' => 'Titlarnir á vaktlistanum þínum eru sýndir hér fyrir neðan og þeim er hægt að breyta með því að bæta við og taka út af honum;
@@ -3870,7 +3822,6 @@ MediaWiki er útgefin í þeirri von að hann sé gagnlegur, en ÁN ALLRAR ÁBYR
 
 # Special:ComparePages
 'comparepages' => 'Bera saman síður',
-'compare-selector' => 'Bera saman útgáfur síðna',
 'compare-page1' => 'Síða 1',
 'compare-page2' => 'Síða 2',
 'compare-rev1' => 'Útgáfa 1',
index e3ebda3..947000e 100644 (file)
@@ -27,6 +27,7 @@
  * @author Darth Kule
  * @author DexterMorgan
  * @author F. Cosoleto
+ * @author FRacco
  * @author Felis
  * @author FollowTheMedia
  * @author Geitost
@@ -121,7 +122,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'TitoloErrato' ),
        'Blankpage'                 => array( 'PaginaVuota' ),
        'Block'                     => array( 'Blocca' ),
-       'Blockme'                   => array( 'BloccaProxy' ),
        'Booksources'               => array( 'RicercaISBN' ),
        'BrokenRedirects'           => array( 'RedirectErrati' ),
        'Categories'                => array( 'Categorie' ),
@@ -133,10 +133,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'CreaAccount' ),
        'Deadendpages'              => array( 'PagineSenzaUscita' ),
        'DeletedContributions'      => array( 'ContributiCancellati' ),
-       'Disambiguations'           => array( 'Disambigua' ),
        'DoubleRedirects'           => array( 'RedirectDoppi' ),
        'EditWatchlist'             => array( 'ModificaOsservati', 'ModificaOsservatiSpeciali', 'ModificaListaSeguiti' ),
        'Emailuser'                 => array( 'InviaEMail' ),
+       'ExpandTemplates'           => array( 'EspandiTemplate' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMenoRevisioni' ),
        'FileDuplicateSearch'       => array( 'CercaFileDuplicati' ),
@@ -180,6 +180,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PagineProtette' ),
        'Protectedtitles'           => array( 'TitoliProtetti' ),
        'Randompage'                => array( 'PaginaCasuale' ),
+       'RandomInCategory'          => array( 'CasualeInCategoria' ),
        'Randomredirect'            => array( 'RedirectCasuale' ),
        'Recentchanges'             => array( 'UltimeModifiche' ),
        'Recentchangeslinked'       => array( 'ModificheCorrelate' ),
@@ -201,8 +202,9 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'TemplateNonUsati' ),
        'Unwatchedpages'            => array( 'PagineNonOsservate' ),
        'Upload'                    => array( 'Carica' ),
-       'Userlogin'                 => array( 'Entra', 'Login' ),
-       'Userlogout'                => array( 'Esci', 'Logout' ),
+       'UploadStash'               => array( 'CodaCaricamenti' ),
+       'Userlogin'                 => array( 'Entra' ),
+       'Userlogout'                => array( 'Esci' ),
        'Userrights'                => array( 'PermessiUtente' ),
        'Version'                   => array( 'Versione' ),
        'Wantedcategories'          => array( 'CategorieRichieste' ),
@@ -299,7 +301,7 @@ $messages = array(
 'tog-extendwatchlist' => "Mostra tutte le modifiche agli osservati speciali, non solo l'ultima",
 'tog-usenewrc' => 'Raggruppa le modifiche per pagina nelle ultime modifiche e negli osservati speciali',
 'tog-numberheadings' => 'Numerazione automatica dei titoli di sezione',
-'tog-showtoolbar' => 'Mostra barra degli strumenti di modifica',
+'tog-showtoolbar' => 'Mostra la barra degli strumenti di modifica',
 'tog-editondblclick' => 'Modifica delle pagine tramite doppio clic',
 'tog-editsection' => 'Modifica delle sezioni tramite il collegamento [modifica]',
 'tog-editsectiononrightclick' => 'Modifica delle sezioni tramite clic destro sul titolo',
@@ -312,14 +314,13 @@ $messages = array(
 'tog-minordefault' => 'Indica ogni modifica come minore (solo come predefinito)',
 'tog-previewontop' => "Mostra l'anteprima sopra la casella di modifica e non sotto",
 'tog-previewonfirst' => "Mostra l'anteprima almeno una volta prima di salvare",
-'tog-nocache' => 'Disabilita la cache delle pagine del browser',
 'tog-enotifwatchlistpages' => 'Inviami una email quando viene modificata una pagina o un file presente tra gli osservati speciali',
-'tog-enotifusertalkpages' => 'Segnalami via e-mail le modifiche alla mia pagina di discussione',
+'tog-enotifusertalkpages' => 'Inviami una email quando viene modificata la mia pagina di discussione',
 'tog-enotifminoredits' => 'Inviami una email anche per le modifiche minori di pagine e file',
 'tog-enotifrevealaddr' => 'Rivela il mio indirizzo e-mail nei messaggi di avviso',
 'tog-shownumberswatching' => 'Mostra il numero di utenti che hanno la pagina in osservazione',
 'tog-oldsig' => 'Firma attuale:',
-'tog-fancysig' => 'Tratta la firma come wikitesto (senza un collegamento automatico)',
+'tog-fancysig' => 'Tratta la firma come wikitesto (senza collegamento automatico)',
 'tog-uselivepreview' => "Abilita la funzione ''Live preview'' (anteprima in diretta - sperimentale)",
 'tog-forceeditsummary' => 'Chiedi conferma se il campo oggetto è vuoto',
 'tog-watchlisthideown' => 'Nascondi le mie modifiche negli osservati speciali',
@@ -330,11 +331,11 @@ $messages = array(
 'tog-watchlisthidepatrolled' => 'Nascondi le modifiche verificate negli osservati speciali',
 'tog-ccmeonemails' => 'Inviami una copia dei messaggi spediti agli altri utenti',
 'tog-diffonly' => 'Non visualizzare il contenuto della pagina dopo il confronto tra versioni',
-'tog-showhiddencats' => 'Mostra categorie nascoste',
+'tog-showhiddencats' => 'Mostra le categorie nascoste',
 'tog-noconvertlink' => 'Disattiva la conversione dei titoli dei link',
 'tog-norollbackdiff' => 'Non mostrare il confronto tra versioni dopo aver effettuato un rollback',
-'tog-useeditwarning' => 'Avvisa quando si lascia una pagina di modifica con modifiche non salvate',
-'tog-prefershttps' => "Usa sempre una connessione sicura quando effettuo l'accesso",
+'tog-useeditwarning' => 'Avvisa quando si esce da una pagina di modifica con modifiche non salvate',
+'tog-prefershttps' => "Usa sempre una connessione sicura quando si effettua l'accesso",
 
 'underline-always' => 'Sempre',
 'underline-never' => 'Mai',
@@ -398,18 +399,18 @@ $messages = array(
 'oct' => 'ott',
 'nov' => 'nov',
 'dec' => 'dic',
-'january-date' => '$1 gennaio',
-'february-date' => '$1 febbraio',
-'march-date' => '$1 marzo',
-'april-date' => '$1 aprile',
-'may-date' => '$1 maggio',
-'june-date' => '$1 giugno',
-'july-date' => '$1 luglio',
-'august-date' => '$1 agosto',
-'september-date' => '$1 settembre',
-'october-date' => '$1 ottobre',
-'november-date' => '$1 novembre',
-'december-date' => '$1 dicembre',
+'january-date' => '{{PLURAL:$1|1°|$1}} gennaio',
+'february-date' => '{{PLURAL:$1|1°|$1}} febbraio',
+'march-date' => '{{PLURAL:$1|1°|$1}} marzo',
+'april-date' => '{{PLURAL:$1|1°|$1}} aprile',
+'may-date' => '{{PLURAL:$1|1°|$1}} maggio',
+'june-date' => '{{PLURAL:$1|1°|$1}} giugno',
+'july-date' => '{{PLURAL:$1|1°|$1}} luglio',
+'august-date' => '{{PLURAL:$1|1°|$1}} agosto',
+'september-date' => '{{PLURAL:$1|1°|$1}} settembre',
+'october-date' => '{{PLURAL:$1|1°|$1}} ottobre',
+'november-date' => '{{PLURAL:$1|1°|$1}} novembre',
+'december-date' => '{{PLURAL:$1|1°|$1}} dicembre',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categoria|Categorie}}',
@@ -448,7 +449,6 @@ $messages = array(
 'qbedit' => 'Modifica',
 'qbpageoptions' => 'Opzioni pagina',
 'qbmyoptions' => 'Le mie pagine',
-'qbspecialpages' => 'Pagine speciali',
 'faq' => 'Domande frequenti',
 'faqpage' => 'Project:Domande frequenti',
 
@@ -484,7 +484,7 @@ $messages = array(
 'printableversion' => 'Versione stampabile',
 'permalink' => 'Link permanente',
 'print' => 'Stampa',
-'view' => 'Visualizzare',
+'view' => 'Visualizza',
 'edit' => 'Modifica',
 'create' => 'Crea',
 'editthispage' => 'Modifica questa pagina',
@@ -505,7 +505,7 @@ $messages = array(
 'specialpage' => 'Pagina speciale',
 'personaltools' => 'Strumenti personali',
 'postcomment' => 'Nuova sezione',
-'articlepage' => 'Vedi la voce',
+'articlepage' => 'Visualizza la voce',
 'talk' => 'Discussione',
 'views' => 'Visite',
 'toolbox' => 'Strumenti',
@@ -518,7 +518,7 @@ $messages = array(
 'categorypage' => 'Visualizza la categoria',
 'viewtalkpage' => 'Visualizza la pagina di discussione',
 'otherlanguages' => 'In altre lingue',
-'redirectedfrom' => '(Reindirizzamento da <b>$1</b>)',
+'redirectedfrom' => "(Reindirizzamento da '''$1''')",
 'redirectpagesub' => 'Pagina di reindirizzamento',
 'lastmodifiedat' => "Questa pagina è stata modificata per l'ultima volta il $1 alle $2.",
 'viewcount' => 'Questa pagina è stata letta {{PLURAL:$1|una volta|$1 volte}}.',
@@ -563,8 +563,8 @@ $1',
 
 'ok' => 'OK',
 'retrievedfrom' => 'Estratto da "$1"',
-'youhavenewmessages' => 'Hai $1 ($2).',
-'youhavenewmessagesfromusers' => 'Hai $1 da {{PLURAL:$3|un altro utente|$3 utenti}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|Hai}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Hai}} $1 da {{PLURAL:$3|un altro utente|$3 utenti}} ($2).',
 'youhavenewmessagesmanyusers' => 'Hai $1 da molti utenti ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|un nuovo messaggio|999=nuovi messaggi}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|ultima modifica|999=ultime modifiche}}',
@@ -648,14 +648,14 @@ Si prega di segnalare l\'accaduto a un [[Special:ListUsers/sysop|amministratore]
 'filerenameerror' => 'Impossibile rinominare il file "$1" in "$2".',
 'filedeleteerror' => 'Impossibile cancellare il file "$1".',
 'directorycreateerror' => 'Impossibile creare la directory "$1".',
-'filenotfound' => 'File "$1" non trovato.',
+'filenotfound' => 'Impossibile trovare il file "$1".',
 'fileexistserror' => 'Impossibile scrivere il file "$1": il file esiste già',
 'unexpected' => 'Valore imprevisto: "$1"="$2".',
 'formerror' => 'Errore: impossibile inviare il modulo',
 'badarticleerror' => 'Operazione non consentita per questa pagina.',
 'cannotdelete' => 'Non è stato possibile cancellare la pagina o il file "$1".
 Potrebbe essere stato già cancellato da qualcun altro.',
-'cannotdelete-title' => 'Impossibile eliminare la pagina "$1"',
+'cannotdelete-title' => 'Impossibile cancellare la pagina "$1"',
 'delete-hook-aborted' => "La cancellazione è stata annullata dall'hook.
 Non è stata restituita alcuna spiegazione.",
 'no-null-revision' => 'Non può essere creata una versione nulla per la pagina "$1"',
@@ -665,9 +665,6 @@ Potrebbe inoltre contenere uno o più caratteri il cui uso non è ammesso nei ti
 'perfcached' => "I dati che seguono sono estratti da una copia ''cache'' del database, e potrebbero non essere aggiornati. Un massimo di {{PLURAL:$1|un risultato è disponibile|$1 risultati sono disponibili}} in cache.",
 'perfcachedts' => "I dati che seguono sono estratti da una copia ''cache'' del database, il cui ultimo aggiornamento risale al $1. Un massimo di {{PLURAL:$4|un risultato è disponibile|$4 risultati sono disponibili}} in cache.",
 'querypage-no-updates' => 'Gli aggiornamenti della pagina sono temporaneamente sospesi. I dati in essa contenuti non verranno aggiornati.',
-'wrong_wfQuery_params' => 'Errore nei parametri inviati alla funzione wfQuery()<br />
-Funzione: $1<br />
-Query: $2',
 'viewsource' => 'Visualizza sorgente',
 'viewsource-title' => 'Visualizza sorgente di $1',
 'actionthrottled' => 'Azione ritardata',
@@ -792,7 +789,7 @@ Assicurati di avere attivato i cookie, ricarica questa pagina e riprova.",
 'passwordtooshort' => 'Le password devono contenere almeno {{PLURAL:$1|1 carattere|$1 caratteri}}.',
 'password-name-match' => 'La password deve essere diversa dal nome utente.',
 'password-login-forbidden' => "L'uso di questo nome utente e password è stato proibito.",
-'mailmypassword' => 'Invia una nuova password al mio indirizzo e-mail',
+'mailmypassword' => 'Reimposta password',
 'passwordremindertitle' => 'Servizio Password Reminder di {{SITENAME}}',
 'passwordremindertext' => 'Qualcuno (probabilmente tu, con indirizzo IP $1) ha richiesto l\'invio di una nuova password di accesso a {{SITENAME}} ($4).
 Una password temporanea per l\'utente "$2" è stata impostata a "$3".
@@ -840,7 +837,7 @@ Attendi $1 e riprova in seguito.',
 'user-mail-no-body' => 'Tentato di inviare una e-mail con un testo vuoto o estremamente breve.',
 
 # Change password dialog
-'resetpass' => 'Cambia la password',
+'changepassword' => 'Cambia password',
 'resetpass_announce' => "L'accesso è stato effettuato con un codice temporaneo, inviato via e-mail. Per completare l'accesso è necessario impostare una nuova password:",
 'resetpass_text' => '<!-- Aggiungere il testo qui -->',
 'resetpass_header' => "Cambia la password dell'account",
@@ -861,7 +858,7 @@ La password potrebbe essere stata già cambiata, oppure potrebbe essere stata ri
 # Special:PasswordReset
 'passwordreset' => 'Reimposta password',
 'passwordreset-text-one' => 'Compila questo modulo per reimpostare la tua password.',
-'passwordreset-text-many' => '{{PLURAL:$1|Compila uno dei campi per reimpostare la tua password.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Compila uno dei campi per ricevere una password temporanea tramite email.}}',
 'passwordreset-legend' => 'Reimposta password',
 'passwordreset-disabled' => 'La reimpostazione delle password è stata disabilitata su questa wiki',
 'passwordreset-emaildisabled' => 'Le funzionalità di posta elettronica sono state disabilitate su questa wiki.',
@@ -947,7 +944,7 @@ Dovresti farlo se le hai accidentalmente condivise con qualcuno o se la tua uten
 'preview' => 'Anteprima',
 'showpreview' => 'Visualizza anteprima',
 'showlivepreview' => "Funzione ''Live preview''",
-'showdiff' => 'Mostra cambiamenti',
+'showdiff' => 'Mostra modifiche',
 'anoneditwarning' => "'''Attenzione:''' Accesso non effettuato. Nella cronologia della pagina verrà registrato il tuo indirizzo IP.",
 'anonpreviewwarning' => "''Non è stato eseguito il login. Salvando la pagina, il proprio indirizzo IP sarà registrato nella cronologia.''",
 'missingsummary' => "'''Attenzione:''' non è stato specificato l'oggetto di questa modifica. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata con l'oggetto vuoto.",
@@ -1112,6 +1109,8 @@ Esiste già.',
 'content-not-allowed-here' => 'Contenuto in "$1" non consentito nella pagine [[$2]]',
 'editwarning-warning' => 'Lasciare questa pagina potrebbe causare la perdita di tutte le modifiche fatte.
 Se hai effettuato l\'accesso, puoi disattivare questo avviso nella sezione "Casella di modifica" delle tue preferenze.',
+'editpage-notsupportedcontentformat-title' => 'Formato contenuto non supportato',
+'editpage-notsupportedcontentformat-text' => 'Il formato del contenuto $1 non è supportato dal modello di contenuto $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitesto',
@@ -1153,6 +1152,9 @@ Controlla le differenze mostrate sotto fra le due versioni per essere certo che
 'cantcreateaccount-text' => "La registrazione è stata bloccata da [[User:$3|$3]] per questo indirizzo IP ('''$1''').
 
 La motivazione del blocco fornita da $3 è la seguente: ''$2''",
+'cantcreateaccount-range-text' => "La registrazione da indirizzi IP nell'intervallo '''$1''', che include il tuo ('''$4'''), è stata bloccata da [[User:$3|$3]].
+
+La motivazione fornita da $3 è ''$2''",
 
 # History pages
 'viewpagelogs' => 'Visualizza i log relativi a questa pagina.',
@@ -1220,10 +1222,6 @@ In quanto amministratore puoi visualizzare questo confronto di versioni; potrebb
 'revisiondelete' => 'Cancella o ripristina versioni',
 'revdelete-nooldid-title' => 'Versione non specificata',
 'revdelete-nooldid-text' => 'Non è stata specificata alcuna versione della pagina su cui eseguire questa funzione, la versione specificata non esiste oppure si sta tentando di nascondere la versione attuale.',
-'revdelete-nologtype-title' => 'Nessun tipo di registro specificato',
-'revdelete-nologtype-text' => "Non è stato specificato alcun tipo di registro su cui eseguire l'azione.",
-'revdelete-nologid-title' => 'Errore di indicazione del log',
-'revdelete-nologid-text' => 'Non è stato specificato un evento del registro su cui eseguire questa funzione oppure il log non esiste.',
 'revdelete-no-file' => 'Il file specificato non esiste.',
 'revdelete-show-file-confirm' => 'Si desidera visualizzare la versione cancellata del file "<nowiki>$1</nowiki>" del $2 alle $3?',
 'revdelete-show-file-submit' => 'Sì',
@@ -1257,8 +1255,6 @@ $1",
 'logdelete-failure' => "'''La visibilità dell'evento non può essere impostata:'''
 $1",
 'revdel-restore' => 'cambia la visibilità',
-'revdel-restore-deleted' => 'revisioni cancellate',
-'revdel-restore-visible' => 'revisioni visibili',
 'pagehist' => 'Cronologia della pagina',
 'deletedhist' => 'Cronologia cancellata',
 'revdelete-hide-current' => "Impossibile nascondere l'oggetto con data $1 $2 in quanto è la revisione attuale.",
@@ -1332,12 +1328,8 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 # Search results
 'searchresults' => 'Risultati della ricerca',
 'searchresults-title' => 'Risultati della ricerca di "$1"',
-'searchresulttext' => 'Per maggiori informazioni sulla ricerca interna di {{SITENAME}}, vedi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ricerca di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutte le pagine che iniziano per "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tutte le pagine che puntano a "$1"]])',
-'searchsubtitleinvalid' => "Ricerca di '''$1'''",
 'toomanymatches' => 'Troppe corrispondenze. Modificare la richiesta.',
 'titlematches' => 'Corrispondenze nel titolo delle pagine',
-'notitlematches' => 'Nessuna corrispondenza nei titoli delle pagine',
 'textmatches' => 'Corrispondenze nel testo delle pagine',
 'notextmatches' => 'Nessuna corrispondenza nel testo delle pagine',
 'prevn' => '{{PLURAL:$1|precedente|precedenti $1}}',
@@ -1346,10 +1338,8 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'nextn-title' => '{{PLURAL:$1|Risultato successivo|$1 risultati successivi}}',
 'shown-title' => 'Mostra {{PLURAL:$1|un risultato|$1 risultati}} per pagina',
 'viewprevnext' => 'Vedi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzioni di ricerca',
 'searchmenu-exists' => "'''Sul sito esiste una pagina il cui nome è \"[[:\$1]]\"'''",
 'searchmenu-new' => 'Crea la pagina "[[:$1]]" su questo sito',
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza le pagine con questo prefisso]]',
 'searchprofile-articles' => 'Pagine di contenuti',
 'searchprofile-project' => 'Pagine di aiuto e relative al progetto',
 'searchprofile-images' => 'Multimedia',
@@ -1370,20 +1360,16 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'search-interwiki-default' => 'Risultati da $1:',
 'search-interwiki-more' => '(altro)',
 'search-relatedarticle' => 'Risultati correlati',
-'mwsuggest-disable' => 'Disattiva i suggerimenti di ricerca',
 'searcheverything-enable' => 'Cerca in tutti i namespace',
 'searchrelated' => 'correlati',
 'searchall' => 'tutti',
 'showingresults' => "Di seguito {{PLURAL:$1|viene presentato al massimo '''1''' risultato|vengono presentati al massimo '''$1''' risultati}} a partire dal numero '''$2'''.",
 'showingresultsnum' => "Di seguito {{PLURAL:$3|viene presentato '''1''' risultato|vengono presentati '''$3''' risultati}} a partire dal numero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultato '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} per '''$4'''",
-'nonefound' => "'''Nota''': la ricerca è effettuata per default solo in alcuni namespace. Prova a premettere ''all:'' al testo della ricerca per cercare in tutti i namespace (compresi pagine di discussione, template, ecc) oppure usa il namespace desiderato come prefisso.",
 'search-nonefound' => 'La ricerca non ha prodotto risultati.',
-'powersearch' => 'Ricerca',
 'powersearch-legend' => 'Ricerca avanzata',
 'powersearch-ns' => 'Cerca nei namespace:',
 'powersearch-redir' => 'Elenca redirect',
-'powersearch-field' => 'Cerca',
 'powersearch-togglelabel' => 'Seleziona:',
 'powersearch-toggleall' => 'Tutti',
 'powersearch-togglenone' => 'Nessuno',
@@ -1396,7 +1382,6 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'mypreferences' => 'preferenze',
 'prefs-edits' => 'Modifiche effettuate:',
 'prefsnologintext2' => "Si prega di $1 per impostare le preferenze dell'utente.",
-'changepassword' => 'Cambia password',
 'prefs-skin' => 'Aspetto grafico (skin)',
 'skin-preview' => 'Anteprima',
 'datedefault' => 'Nessuna preferenza',
@@ -1419,13 +1404,11 @@ I dettagli possono essere trovati nel [{{fullurl:{{#Special:Log}}/delete|page={{
 'prefs-email' => 'Opzioni email',
 'prefs-rendering' => 'Aspetto',
 'saveprefs' => 'Salva le preferenze',
-'resetprefs' => 'Reimposta le preferenze',
 'restoreprefs' => 'Ripristina le impostazioni predefinite (in tutte le sezioni)',
 'prefs-editing' => 'Casella di modifica',
 'rows' => 'Righe:',
 'columns' => 'Colonne:',
 'searchresultshead' => 'Ricerca',
-'resultsperpage' => 'Numero di risultati per pagina:',
 'stub-threshold' => 'Valore minimo per i <a href="#" class="stub">collegamenti agli stub</a>, in byte:',
 'stub-threshold-disabled' => 'Disattivato',
 'recentchangesdays' => 'Numero di giorni da mostrare nelle ultime modifiche:',
@@ -1439,7 +1422,6 @@ Chiunque la conosce sarà in grado di leggere i tuoi osservati speciali, per cui
 'localtime' => 'Ora locale:',
 'timezoneuseserverdefault' => 'Usa ora predefinita del wiki ($1)',
 'timezoneuseoffset' => 'Altro (specificare differenza)',
-'timezoneoffset' => 'Differenza¹:',
 'servertime' => 'Ora del server:',
 'guesstimezone' => "Usa l'ora del browser",
 'timezoneregion-africa' => 'Africa',
@@ -1508,6 +1490,7 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Differenze',
 'prefs-help-prefershttps' => 'Questa preferenza avrà effetto dal prossimo accesso.',
+'prefs-tabs-navigation-hint' => "Suggerimento: è possibile utilizzare i tasti freccia sinistra e destra per spostarsi tra le schede nell'elenco delle schede.",
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => "L'indirizzo e-mail sembra valido",
@@ -1694,9 +1677,9 @@ Il tuo indirizzo non viene rivelato quando gli altri utenti ti contattano.',
 'recentchanges-label-bot' => 'Questa modifica è stata effettuata da un bot',
 'recentchanges-label-unpatrolled' => 'Questa modifica non è stata ancora verificata',
 'recentchanges-label-plusminus' => 'La dimensione della pagina è cambiata di questo numero di byte',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => "(vedi anche [[Special:NewPages|l'elenco delle nuove pagine]])",
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Di seguito {{PLURAL:$1|è elencata la modifica più recente apportata|sono elencate le '''$1''' modifiche più recenti apportate}} al sito {{PLURAL:$2|nelle ultime 24 ore|negli scorsi '''$2''' giorni}}; i dati sono aggiornati alle $5 del $4.",
 'rcnotefrom' => "Di seguito sono elencate le modifiche apportate a partire da '''$2''' (fino a '''$1''').",
 'rclistfrom' => 'Mostra le modifiche apportate a partire da $1',
 'rcshowhideminor' => '$1 le modifiche minori',
@@ -1809,6 +1792,7 @@ Se si dispone dell'immagine nella risoluzione originale, si prega di caricarla.
 'fileexists-shared-forbidden' => "Un file con questo nome esiste già nell'archivio di risorse multimediali condivise. Se si desidera ancora caricare il file, tornare indietro e modificare il nome con il quale caricare il file. [[File:$1|thumb|center|$1]]",
 'file-exists-duplicate' => 'Questo file è un duplicato {{PLURAL:$1|del seguente|dei seguenti}} file:',
 'file-deleted-duplicate' => 'Un file identico a questo ([[:$1]]) è stato cancellato in passato. Verificare la cronologia delle cancellazioni prima di caricarlo di nuovo.',
+'file-deleted-duplicate-notitle' => 'Un file identico a questo è stato cancellato in passato, ed il titolo è stato soppresso. Chiedi a qualcuno che ha la possibilità di vedere i file soppressi di esaminare la situazione prima di procedere nuovamente al caricamento.',
 'uploadwarning' => 'Avviso di caricamento',
 'uploadwarning-text' => 'Per favore modifica qui sotto la descrizione del file e prova di nuovo.',
 'savefile' => 'Salva file',
@@ -2146,6 +2130,7 @@ I redirect <del>cancellati</del> sono stati corretti.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|collegamento|collegamenti}}',
 'nmembers' => '$1 {{PLURAL:$1|elemento|elementi}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|elemento|elementi}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisione|revisioni}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visite}}',
 'nimagelinks' => 'Utilizzato su $1 {{PLURAL:$1|pagina|pagine}}',
@@ -2184,10 +2169,9 @@ I redirect <del>cancellati</del> sono stati corretti.',
 'protectedpages' => 'Pagine protette',
 'protectedpages-indef' => 'Solo protezioni infinite',
 'protectedpages-cascade' => 'Solo protezioni ricorsive',
-'protectedpagestext' => 'Di seguito sono elencate le pagine protette, di cui è impedita la modifica o lo spostamento',
+'protectedpages-noredirect' => 'Nascondi redirect',
 'protectedpagesempty' => 'Al momento non vi sono pagine protette',
 'protectedtitles' => 'Titoli protetti',
-'protectedtitlestext' => 'Non è possibile creare pagine con i titoli elencati di seguito',
 'protectedtitlesempty' => 'Al momento non esistono titoli protetti con i parametri specificati.',
 'listusers' => 'Elenco degli utenti',
 'listusers-editsonly' => 'Mostra solo utenti con dei contributi',
@@ -2240,9 +2224,6 @@ Potrebbero essere presenti immagini che sono usate da altri siti con un collegam
 'allpagesto' => 'Mostra le pagine fino a:',
 'allarticles' => 'Tutte le pagine',
 'allinnamespace' => 'Tutte le pagine del namespace $1',
-'allnotinnamespace' => 'Tutte le pagine, escluso il namespace $1',
-'allpagesprev' => 'Precedenti',
-'allpagesnext' => 'Successive',
 'allpagessubmit' => 'Vai',
 'allpagesprefix' => 'Mostra le pagine che iniziano con:',
 'allpagesbadtitle' => 'Il titolo indicato per la pagina non è valido o contiene prefissi interlingua o interwiki. Potrebbe inoltre contenere uno o più caratteri il cui uso non è ammesso nei titoli.',
@@ -2318,9 +2299,9 @@ Potrebbero esserci [[{{MediaWiki:Listgrouprights-helppage}}|ulteriori informazio
 'mailnologin' => 'Nessun indirizzo cui inviare il messaggio',
 'mailnologintext' => 'Per inviare messaggi e-mail ad altri utenti è necessario [[Special:UserLogin|accedere al sito]] e aver registrato un indirizzo valido nelle proprie [[Special:Preferences|preferenze]].',
 'emailuser' => "Scrivi all'utente",
-'emailuser-title-target' => 'Invia una e-mail a questo {{GENDER:$1|utente}}',
-'emailuser-title-notarget' => 'Invia una e-mail a un utente',
-'emailpage' => "Invia un messaggio e-mail all'utente",
+'emailuser-title-target' => 'Invia una email a questo {{GENDER:$1|utente}}',
+'emailuser-title-notarget' => 'Invia una email a un utente',
+'emailpage' => "Invia un messaggio email all'utente",
 'emailpagetext' => 'Usare il modulo sottostante per inviare un messaggio e-mail all\'{{GENDER:$1|utente}} indicato. L\'indirizzo specificato nelle [[Special:Preferences|preferenze]] del mittente apparirà nel campo "Da:" del messaggio per consentire al destinatario di rispondere direttamente.',
 'usermailererror' => "L'oggetto mail ha restituito l'errore:",
 'defemailsubject' => 'Messaggio da {{SITENAME}} dall\'utente "$1"',
@@ -2344,7 +2325,7 @@ Potrebbero esserci [[{{MediaWiki:Listgrouprights-helppage}}|ulteriori informazio
 'emailccsubject' => 'Copia del messaggio inviato a $1: $2',
 'emailsent' => 'Messaggio inviato',
 'emailsenttext' => 'Il messaggio e-mail è stato inviato.',
-'emailuserfooter' => 'Questa e-mail è stata inviata da $1 a $2 attraverso la funzione "Invia un messaggio e-mail all\'utente" su {{SITENAME}}.',
+'emailuserfooter' => 'Questa email è stata inviata da $1 a $2 attraverso la funzione "Invia un messaggio email all\'utente" su {{SITENAME}}.',
 
 # User Messenger
 'usermessage-summary' => 'Messaggio di sistema',
@@ -2462,6 +2443,7 @@ Consultare il log delle $2 per un elenco delle pagine cancellate di recente.',
 'delete-edit-reasonlist' => 'Modifica i motivi di cancellazione',
 'delete-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione è stata limitata per evitare di creare accidentalmente dei problemi di funzionamento al database di {{SITENAME}}.',
 'delete-warning-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.',
+'deleting-backlinks-warning' => "'''Attenzione:''' altre pagine contengono collegamenti alla pagina che stai per cancellare.",
 
 # Rollback
 'rollback' => 'Annulla le modifiche',
@@ -2572,7 +2554,6 @@ Il testo contenuto nelle revisioni cancellate è disponibile solo agli amministr
 'undeletebtn' => 'Ripristina',
 'undeletelink' => 'visualizza/ripristina',
 'undeleteviewlink' => 'visualizza',
-'undeletereset' => 'Reimposta',
 'undeleteinvert' => 'Inverti selezione',
 'undeletecomment' => 'Motivo:',
 'undeletedrevisions' => '{{PLURAL:$1|Una revisione recuperata|$1 revisioni recuperate}}',
@@ -2659,7 +2640,6 @@ $1',
 'block' => 'Blocca utente',
 'unblock' => 'Sblocca utente',
 'blockip' => 'Blocco utente',
-'blockip-title' => 'Blocca utente',
 'blockip-legend' => "Blocca l'utente",
 'blockiptext' => "Usare il modulo sottostante per bloccare l'accesso in scrittura a uno specifico indirizzo IP o un utente registrato.
 Il blocco dev'essere operato per prevenire atti di vandalismo e in stretta osservanza della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]].
@@ -2667,7 +2647,6 @@ Indicare il motivo specifico per il quale si procede al blocco (per esempio, cit
 'ipadressorusername' => 'Indirizzo IP o nome utente:',
 'ipbexpiry' => 'Scadenza del blocco:',
 'ipbreason' => 'Motivo:',
-'ipbreasonotherlist' => 'Altra motivazione',
 'ipbreason-dropdown' => '*Motivazioni più comuni per i blocchi
 ** Inserimento di informazioni false
 ** Rimozione di contenuti dalle pagine
@@ -2678,13 +2657,11 @@ Indicare il motivo specifico per il quale si procede al blocco (per esempio, cit
 ** Nome utente non consono',
 'ipb-hardblock' => 'Impedisci agli utenti registrati di contribuire da questo indirizzo IP',
 'ipbcreateaccount' => 'Impedisci la registrazione',
-'ipbemailban' => "Impedisci all'utente l'invio di e-mail",
+'ipbemailban' => "Impedisci all'utente l'invio di email",
 'ipbenableautoblock' => "Blocca automaticamente l'ultimo indirizzo IP usato dall'utente e i successivi con cui vengono tentate modifiche",
 'ipbsubmit' => "Blocca l'utente",
 'ipbother' => 'Durata non in elenco:',
 'ipboptions' => '2 ore:2 hours,1 giorno:1 day,3 giorni:3 days,1 settimana:1 week,2 settimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 anno:1 year,infinito:infinite',
-'ipbotheroption' => 'altro',
-'ipbotherreason' => 'Altri motivi/dettagli:',
 'ipbhidename' => 'Nascondi il nome utente dalle modifiche e dagli elenchi.',
 'ipbwatchuser' => 'Segui le pagine e le discussioni utente di questo utente',
 'ipb-disableusertalk' => 'Impedisci a questo utente di modificare la propria pagina di discussioni mentre è bloccato',
@@ -2698,6 +2675,7 @@ Consultare la [[Special:BlockList|lista dei blocchi]] per vedere i blocchi attiv
 'ipb-confirmhideuser' => 'Si sta per bloccare un utente con l\'opzione "Nascondi utente" abilitata.
 In questo modo si evita che il nome utente compaia in tutte le liste e le voci di registro.
 Sei sicuro di voler continuare?',
+'ipb-confirmaction' => 'Se sei sicuro di volerlo fare davvero, controlla il campo "{{int:ipb-confirm}}" in basso.',
 'ipb-edit-dropdown' => 'Modifica i motivi per il blocco',
 'ipb-unblock-addr' => 'Sblocca $1',
 'ipb-unblock' => 'Sblocca un utente o un indirizzo IP',
@@ -2774,7 +2752,6 @@ Consultare l'[[Special:BlockList|elenco dei blocchi]] per l'elenco dei bandi o b
 'sorbsreason' => 'Questo indirizzo IP è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Non è possibile creare nuovi accessi da questo indirizzo IP perché è elencato come proxy aperto nella blacklist DNSBL utilizzata da {{SITENAME}}.',
 'xffblockreason' => "Un indirizzo IP presente nell'intestazione X-Forwarded-For, tuo o del server proxy che stai utilizzando, è stato bloccato. La motivazione originale del blocco è: $1",
-'cant-block-while-blocked' => 'Non è possibile bloccare altri utenti mentre si è bloccati.',
 'cant-see-hidden-user' => 'L\'utente che si sta tentando di bloccare è stato già bloccato e nascosto. Poiché non hai il permesso "hideuser", non è possibile visualizzare o modificare il blocco dell\'utente.',
 'ipbblocked' => 'Non puoi bloccare o sbloccare altri utenti, perché tu stesso sei bloccato',
 'ipbnounblockself' => 'Non puoi sbloccare te stesso',
@@ -2821,7 +2798,6 @@ Un cambiamento così drastico può creare contrattempi e problemi, soprattutto p
 In questi casi, se lo si ritiene opportuno, occorre spostare o aggiungere manualmente le informazioni contenute nella pagina di discussione.",
 'movearticle' => 'Sposta la pagina:',
 'moveuserpage-warning' => "'''Attenzione:''' Si sta per spostare una pagina utente. Nota che verrà spostata solamente la pagina. L'utente ''non'' sarà rinominato.",
-'movenologin' => 'Accesso non effettuato',
 'movenologintext' => "Lo spostamento delle pagine è consentito solo agli utenti registrati che hanno eseguito l'[[Special:UserLogin|accesso]] al sito.",
 'movenotallowed' => 'Non si dispone dei permessi necessari per spostare le pagine.',
 'movenotallowedfile' => 'Non si dispone dei permessi necessari per spostare i file.',
@@ -2837,8 +2813,6 @@ In questi casi, se lo si ritiene opportuno, occorre spostare o aggiungere manual
 'articleexists' => 'Una pagina con questo nome esiste già oppure il nome scelto non è valido.
 Scegliere un titolo diverso per la pagina.',
 'cantmove-titleprotected' => 'Lo spostamento della pagina non è possibile in quanto il nuovo titolo è stato protetto per impedirne la creazione',
-'talkexists' => "'''La pagina è stata spostata correttamente, ma non è stato possibile spostare la pagina di discussione perché ne esiste già un'altra con il nuovo titolo. Integrare manualmente i contenuti delle due pagine.'''",
-'movedto' => 'spostata a',
 'movetalk' => 'Sposta anche la pagina di discussione.',
 'move-subpages' => 'Sposta le sottopagine (sino a $1)',
 'move-talk-subpages' => 'Sposta le sottopagine di discussione (fino a $1)',
@@ -3040,7 +3014,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
 'tooltip-feed-rss' => 'Feed RSS per questa pagina',
 'tooltip-feed-atom' => 'Feed Atom per questa pagina',
 'tooltip-t-contributions' => 'Lista dei contributi di questo utente',
-'tooltip-t-emailuser' => 'Invia un messaggio e-mail a questo utente',
+'tooltip-t-emailuser' => 'Invia un messaggio email a questo utente',
 'tooltip-t-upload' => 'Carica file multimediali',
 'tooltip-t-specialpages' => 'Lista di tutte le pagine speciali',
 'tooltip-t-print' => 'Versione stampabile di questa pagina',
@@ -3687,15 +3661,10 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => "Priorità definite dal'utente ($1)",
 
-# External editor support
-'edit-externally' => 'Modifica questo file usando un programma esterno',
-'edit-externally-help' => '(Per maggiori informazioni consultare le [https://www.mediawiki.org/wiki/Manual:External_editors istruzioni])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutte',
 'namespacesall' => 'tutti',
 'monthsall' => 'tutti',
-'limitall' => 'tutti',
 
 # Email address confirmation
 'confirmemail' => 'Conferma indirizzo email',
@@ -3704,7 +3673,7 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
 'confirmemail_pending' => "Il codice di conferma è già stato spedito via posta elettronica; se l'account è stato
 creato di recente, si prega di attendere l'arrivo del codice per qualche minuto prima
 di tentare di richiederne uno nuovo.",
-'confirmemail_send' => 'Invia un codice di conferma via e-mail.',
+'confirmemail_send' => 'Invia un codice di conferma via email.',
 'confirmemail_sent' => 'Messaggio e-mail di conferma inviato.',
 'confirmemail_oncreate' => "Un codice di conferma è stato spedito all'indirizzo
 di posta elettronica indicato. Il codice non è necessario per accedere al sito,
@@ -3717,7 +3686,6 @@ Messaggio di errore del mailer: $1',
 'confirmemail_needlogin' => 'È necessario $1 per confermare il proprio indirizzo e-mail.',
 'confirmemail_success' => "L'indirizzo e-mail è confermato. Ora è possibile [[Special:UserLogin|eseguire l'accesso]] e fare pieno uso del sito.",
 'confirmemail_loggedin' => "L'indirizzo email è stato confermato.",
-'confirmemail_error' => 'Errore nel salvataggio della conferma.',
 'confirmemail_subject' => "{{SITENAME}}: richiesta di conferma dell'indirizzo",
 'confirmemail_body' => 'Qualcuno, probabilmente tu stesso dall\'indirizzo IP $1, ha registrato l\'account "$2" su {{SITENAME}} indicando questo indirizzo e-mail.
 
@@ -3796,6 +3764,11 @@ Per favore, conferma che vuoi veramente ricreare questa pagina.",
 'imgmultigo' => 'Vai',
 'imgmultigoto' => 'Vai alla pagina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(lingua predefinita)',
+'img-lang-info' => 'Converti questa immagine in $1. $2',
+'img-lang-go' => 'Vai',
+
 # Table pager
 'ascending_abbrev' => 'cresc',
 'descending_abbrev' => 'decresc',
@@ -3881,8 +3854,18 @@ Si noti che è anche possibile [[Special:EditWatchlist|modificare la lista con l
 'version-parser-function-hooks' => 'Hook per funzioni del parser',
 'version-hook-name' => "Nome dell'hook",
 'version-hook-subscribedby' => 'Sottoscrizioni',
-'version-version' => '(Versione $1)',
-'version-license' => 'Licenza',
+'version-version' => '($1)',
+'version-license' => 'Licenza MediaWiki',
+'version-ext-license' => 'Licenza',
+'version-ext-colheader-name' => 'Estensione',
+'version-ext-colheader-version' => 'Versione',
+'version-ext-colheader-license' => 'Licenza',
+'version-ext-colheader-description' => 'Descrizione',
+'version-ext-colheader-credits' => 'Autori',
+'version-license-title' => 'Licenza per $1',
+'version-license-not-found' => 'Per questa estensione non è stata trovata alcuna informazione dettagliata sulla licenza.',
+'version-credits-title' => 'Crediti per $1',
+'version-credits-not-found' => 'Per questa estensione non è stata trovata alcuna informazione dettagliata sui crediti.',
 'version-poweredby-credits' => "Questo wiki è realizzato con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'altri',
 'version-poweredby-translators' => 'traduttori di translatewiki.net',
@@ -3902,14 +3885,15 @@ Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/CO
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Percorso script]',
 
 # Special:Redirect
-'redirect' => 'Reindirizzamento da file, utente o ID versione',
+'redirect' => 'Reindirizzamento da file, utente, pagina o versione',
 'redirect-legend' => 'Reindirizza a un file o una pagina',
-'redirect-summary' => 'Questa pagina speciale reindirizza a un file (specificando il nome del file), a una pagina (specificando un ID di versione) o a un utente (specificando un ID utente numerico).
-Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Questa pagina speciale reindirizza a un file (specificando il nome del file), a una pagina (specificando un ID di versione o un ID pagina) o a un utente (specificando un ID utente numerico).
+Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Vai',
 'redirect-lookup' => 'Ricerca:',
 'redirect-value' => 'Valore:',
 'redirect-user' => 'ID utente',
+'redirect-page' => 'ID della pagina',
 'redirect-revision' => 'Versione pagina',
 'redirect-file' => 'Nome del file',
 'redirect-not-exists' => 'Valore non trovato',
@@ -3976,7 +3960,6 @@ Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revi
 
 # Special:ComparePages
 'comparepages' => 'Confronta le pagine',
-'compare-selector' => 'Confronta le revisioni di una pagina',
 'compare-page1' => 'Pagina 1',
 'compare-page2' => 'Pagina 2',
 'compare-rev1' => 'Revisione 1',
@@ -4103,6 +4086,7 @@ Esempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revi
 'api-error-overwrite' => 'Sovrascrivere un file esistente non è consentito.',
 'api-error-stashfailed' => 'Errore interno: il server non è riuscito a memorizzare il documento temporaneo.',
 'api-error-publishfailed' => 'Errore interno: il server non è riuscito a pubblicare il documento temporaneo.',
+'api-error-stasherror' => 'Si è verificato un errore durante il caricamento del file in stash.',
 'api-error-timeout' => 'Il server non ha risposto entro il tempo previsto.',
 'api-error-unclassified' => 'Si è verificato un errore sconosciuto.',
 'api-error-unknown-code' => 'Errore sconosciuto: "$1"',
@@ -4152,10 +4136,14 @@ vale a dire praticamente tutto ciò che si trova tra doppie parentesi graffe.',
 'expand_templates_input' => 'Testo da espandere:',
 'expand_templates_output' => 'Risultato',
 'expand_templates_xml_output' => 'Output in formato XML',
+'expand_templates_html_output' => 'Risultato HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Ignora i commenti',
 'expand_templates_remove_nowiki' => 'Elimina il tag <nowiki> nel risultato',
 'expand_templates_generate_xml' => 'Mostra albero sintattico XML',
+'expand_templates_generate_rawhtml' => 'Mostra HTML',
 'expand_templates_preview' => 'Anteprima',
 
+# Unknown messages
+'uploadinvalidxml' => 'Il codice XML nel file caricato non può essere elaborato.',
 );
index 202a32d..47c488f 100644 (file)
@@ -120,7 +120,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( '不正なページ名' ),
        'Blankpage'                 => array( '白紙ページ' ),
        'Block'                     => array( '投稿ブロック', 'ブロック' ),
-       'Blockme'                   => array( '自己ブロック' ),
        'Booksources'               => array( '文献資料', '書籍情報源' ),
        'BrokenRedirects'           => array( '迷子のリダイレクト', '壊れたリダイレクト' ),
        'Categories'                => array( 'カテゴリ', 'カテゴリ一覧' ),
@@ -132,10 +131,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'アカウント作成', 'アカウントの作成' ),
        'Deadendpages'              => array( '有効なページへのリンクがないページ', '行き止まりページ' ),
        'DeletedContributions'      => array( '削除された投稿記録', '削除された投稿履歴', '削除歴' ),
-       'Disambiguations'           => array( '曖昧さ回避のページ', '曖昧さ回避' ),
        'DoubleRedirects'           => array( '二重リダイレクト', '二重転送' ),
        'EditWatchlist'             => array( 'ウォッチリストの編集', 'ウォッチリスト編集' ),
        'Emailuser'                 => array( 'メール送信', 'ウィキメール' ),
+       'ExpandTemplates'           => array( 'テンプレートを展開' ),
        'Export'                    => array( 'データ書き出し', 'データー書き出し', 'エクスポート' ),
        'Fewestrevisions'           => array( '編集履歴の少ないページ', '版の少ない項目', '版の少ないページ' ),
        'FileDuplicateSearch'       => array( '重複ファイル検索' ),
@@ -180,10 +179,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( '保護されているページ' ),
        'Protectedtitles'           => array( '作成保護されているページ名' ),
        'Randompage'                => array( 'おまかせ表示' ),
+       'RandomInCategory'          => array( 'カテゴリ内おまかせ表示', 'カテゴリ中のランダムなページ' ),
        'Randomredirect'            => array( 'おまかせリダイレクト', 'おまかせ転送' ),
        'Recentchanges'             => array( '最近の更新', '最近更新したページ' ),
        'Recentchangeslinked'       => array( '関連ページの更新状況', 'リンク先の更新状況' ),
        'Redirect'                  => array( '転送', 'リダイレクト' ),
+       'ResetTokens'               => array( 'トークンの再設定' ),
        'Revisiondelete'            => array( '版指定削除', '特定版削除' ),
        'Search'                    => array( '検索' ),
        'Shortpages'                => array( '短いページ' ),
@@ -389,7 +390,6 @@ $messages = array(
 'tog-minordefault' => '細部の編集に既定でチェックを入れる',
 'tog-previewontop' => 'プレビューを編集ボックスの前に配置',
 'tog-previewonfirst' => '編集開始時にもプレビューを表示',
-'tog-nocache' => 'ブラウザーによるページのキャッシュを無効にする',
 'tog-enotifwatchlistpages' => 'ウォッチリストにあるページやファイルが更新されたらメールを受け取る',
 'tog-enotifusertalkpages' => '自分のトークページが更新されたらメールを受け取る',
 'tog-enotifminoredits' => 'ページやファイルへの細部の編集でもメールを受け取る',
@@ -525,7 +525,6 @@ $messages = array(
 'qbedit' => '編集',
 'qbpageoptions' => 'このページについて',
 'qbmyoptions' => '自分のページ',
-'qbspecialpages' => '特別ページ',
 'faq' => 'よくある質問と回答',
 'faqpage' => 'Project:よくある質問と回答',
 
@@ -641,8 +640,8 @@ $1',
 
 'ok' => 'OK',
 'retrievedfrom' => '「$1」から取得',
-'youhavenewmessages' => '$1があります ($2)。',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|他の利用者|$3 人の利用者}}からの$1があります ($2)。',
+'youhavenewmessages' => '$1が{{PLURAL:$3|あります}} ($2)。',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|他の利用者|$3 人の利用者}}からの$1が{{PLURAL:$4|あります}} ($2)。',
 'youhavenewmessagesmanyusers' => '多数の利用者からの$1があります ($2)。',
 'newmessageslinkplural' => '{{PLURAL:$1|新着メッセージ}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|最新の差分|999=最新版までの差分}}',
@@ -746,9 +745,6 @@ URL を間違って入力したか、正しくないリンクをたどった可
 'perfcachedts' => '以下のデータはキャッシュされており、最終更新日時は $1 です。最大 $4 {{PLURAL:$4|件の結果}}がキャッシュされます。',
 'querypage-no-updates' => 'ページの更新は無効になっています。
 以下のデータの更新は現在行われていません。',
-'wrong_wfQuery_params' => 'wfQuery() のパラメーターが無効です<br />
-関数: $1<br />
-クエリ: $2',
 'viewsource' => 'ソースを表示',
 'viewsource-title' => '$1のソースを表示',
 'actionthrottled' => '操作が速度規制されました',
@@ -852,7 +848,7 @@ $2',
 'createacct-benefit-heading' => '{{SITENAME}}は、あなたのような人々が創っています。',
 'createacct-benefit-body1' => '{{PLURAL:$1|編集}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|ページ}}',
-'createacct-benefit-body3' => '最近の{{PLURAL:$1|貢献者}}',
+'createacct-benefit-body3' => '最近の{{PLURAL:$1|投稿者数}}',
 'badretype' => '入力したパスワードが一致しません。',
 'userexists' => '入力された利用者名は既に使用されています。
 他の名前を選んでください。',
@@ -863,9 +859,9 @@ $2',
 {{SITENAME}}では利用者のログインに Cookie を使用します。
 ご使用のブラウザーでは Cookie が無効になっています。
 Cookie を有効にしてから、新しい利用者名とパスワードでログインしてください。',
-'nocookieslogin' => '{{SITENAME}}ではログインにCookieを使用します。
-Cookieを無効にしているようです。
-Cookieを有効にしてから、もう一度試してください。',
+'nocookieslogin' => '{{SITENAME}}ではログインに Cookie を使用します。
+Cookie を無効にしているようです。
+Cookie を有効にしてから、もう一度試してください。',
 'nocookiesfornew' => '発信元を確認できなかったため、アカウントは作成されませんでした。
 Cookieを有効にしていることを確認して、このページを再読込してもう一度試してください。',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
@@ -886,7 +882,7 @@ Cookieを有効にしていることを確認して、このページを再読
 'passwordtooshort' => 'パスワードは {{PLURAL:$1|$1 文字}}以上にしてください。',
 'password-name-match' => 'パスワードは利用者名とは異なる必要があります。',
 'password-login-forbidden' => 'この利用者名とパスワードの使用は禁止されています。',
-'mailmypassword' => '新しいパスワードをメールで送信',
+'mailmypassword' => 'パスワードを再設定',
 'passwordremindertitle' => '{{SITENAME}}の仮パスワード通知',
 'passwordremindertext' => '誰か (おそらくあなた) が IP アドレス $1 から{{SITENAME}} ($4) のログイン用パスワードの再発行を申請しました。
 利用者「$2」の仮パスワードが作成され「$3」に設定されました。
@@ -939,7 +935,7 @@ $1待ってから再度試してください。',
 'user-mail-no-body' => '本文が空、またはあまりにも短いメールは送信できません。',
 
 # Change password dialog
-'resetpass' => 'パスワードの変更',
+'changepassword' => 'パスワードの変更',
 'resetpass_announce' => 'メールでお送りした仮パスワードでログインしました。
 ログインを完了するには、ここで新しいパスワードを設定する必要があります:',
 'resetpass_text' => '<!-- ここに文を挿入 -->',
@@ -960,8 +956,8 @@ $1待ってから再度試してください。',
 
 # Special:PasswordReset
 'passwordreset' => 'パスワードの再設定',
-'passwordreset-text-one' => 'パスワードを再設定するにはこのフォームに記入してください。',
-'passwordreset-text-many' => '{{PLURAL:$1|パスワードを再設定するにはいずれかの欄に記入してください。}}',
+'passwordreset-text-one' => '仮パスワードをメールで受け取るにはこのフォームに記入してください。',
+'passwordreset-text-many' => '{{PLURAL:$1|仮パスワードをメールで受け取るにはいずれかの欄に記入してください。}}',
 'passwordreset-legend' => 'パスワードの再設定',
 'passwordreset-disabled' => 'パスワードの再設定は、このウィキでは無効になっています。',
 'passwordreset-emaildisabled' => 'メール機能は、このウィキでは無効化されています。',
@@ -1089,12 +1085,12 @@ $2
 
 $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロックについて問い合わせることができます。
 
\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人設å®\9a]]ã\81«æ­£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\83¡ã\83¼ã\83«é\80\81ä¿¡æ©\9fè\83½ã\81\8c使ã\81\88ないことに注意してください。
\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人設å®\9a]]ã\81«æ­£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83­ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\80\8cã\81\93ã\81®å\88©ç\94¨è\80\85ã\81«ã\83¡ã\83¼ã\83«ã\82\92é\80\81ä¿¡ã\80\8dæ©\9fè\83½ã\82\92使ç\94¨ã\81§ã\81\8dないことに注意してください。
 
 現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
 お問い合わせの際は、上記の情報を必ず書いてください。",
 'blockednoreason' => '理由が設定されていません',
-'whitelistedittext' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\99ã\82\8bã\81«ã\81¯$1ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99。',
+'whitelistedittext' => 'ã\81\93ã\81®ã\83\9aã\83¼ã\82¸ã\82\92ç·¨é\9b\86ã\81\99ã\82\8bã\81«ã\81¯$1ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
 'confirmedittext' => 'ページの編集を始める前にメールアドレスの確認をする必要があります。
 [[Special:Preferences|個人設定]]でメールアドレスを設定し、確認を行ってください。',
 'nosuchsectiontitle' => '節が見つかりません',
@@ -1102,7 +1098,7 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロッ
 ページを閲覧している間に移動あるいは削除された可能性があります。',
 'loginreqtitle' => 'ログインが必要',
 'loginreqlink' => 'ログイン',
-'loginreqpagetext' => 'ä»\96ã\81®ã\83\9aã\83¼ã\82¸ã\82\92é\96²è¦§ã\81\99ã\82\8bã\81«ã\81¯$1ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99。',
+'loginreqpagetext' => 'ä»\96ã\81®ã\83\9aã\83¼ã\82¸ã\82\92é\96²è¦§ã\81\99ã\82\8bã\81«ã\81¯$1ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
 'accmailtitle' => 'パスワードをお送りしました',
 'accmailtext' => "[[User talk:$1|$1]]のために無作為に生成したパスワードを、$2に送信しました。パスワードは、ログインした際に''[[Special:ChangePassword|パスワード変更]]''ページで変更できます。",
 'newarticle' => '(新)',
@@ -1239,6 +1235,8 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロッ
 'content-not-allowed-here' => 'ページ [[$2]] では、「$1」コンテンツは許可されていません',
 'editwarning-warning' => 'このページを離れると、あなたが行なった変更がすべて失われてしまうかもしれません。
 ログインしている場合、個人設定の「編集」タブでこの警告を表示しないようにすることができます。',
+'editpage-notsupportedcontentformat-title' => '対応していないコンテンツ形式',
+'editpage-notsupportedcontentformat-text' => 'コンテンツ モデル $2 は、コンテンツ形式 $1 に対応していません。',
 
 # Content models
 'content-model-wikitext' => 'ウィキテキスト',
@@ -1278,9 +1276,12 @@ $1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロッ
 
 # Account creation failure
 'cantcreateaccounttitle' => 'アカウントを作成できません',
-'cantcreateaccount-text' => "このIPアドレス('''$1''')からのアカウント作成は[[User:$3|$3]]によってブロックされています。
+'cantcreateaccount-text' => "この IP アドレス ('''$1''') からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
+
+$3 が示した理由: ''$2''",
+'cantcreateaccount-range-text' => "この IP アドレス ('''$4''') を含む、IP アドレス範囲 '''$1''' からのアカウント作成は、[[User:$3|$3]] によってブロックされています。
 
-$3が示した理由: ''$2''",
+$3 が示した理由: ''$2''",
 
 # History pages
 'viewpagelogs' => 'このページの記録を閲覧',
@@ -1349,10 +1350,6 @@ $3が示した理由: ''$2''",
 'revisiondelete' => '版の削除と復元',
 'revdelete-nooldid-title' => '無効な対象版',
 'revdelete-nooldid-text' => 'この操作の対象となる版を指定していないか、指定した版が存在しないか、または最新版を非表示にしようとしています。',
-'revdelete-nologtype-title' => '記録の種類を指定していません',
-'revdelete-nologtype-text' => 'この操作を実行する記録の種類を指定していません。',
-'revdelete-nologid-title' => '無効な記録項目',
-'revdelete-nologid-text' => 'この操作の対象となる記録項目を指定していないか、または指定した項目が存在しません。',
 'revdelete-no-file' => '指定されたファイルは存在しません。',
 'revdelete-show-file-confirm' => 'ファイル「<nowiki>$1</nowiki>」の削除された$2$3の版を本当に閲覧しますか?',
 'revdelete-show-file-submit' => 'はい',
@@ -1386,8 +1383,6 @@ $1",
 'logdelete-failure' => "'''記録の閲覧レベルを設定できませんでした。'''
 $1",
 'revdel-restore' => '閲覧レベルを変更',
-'revdel-restore-deleted' => '削除された版',
-'revdel-restore-visible' => '閲覧できる版',
 'pagehist' => 'ページの履歴',
 'deletedhist' => '削除された履歴',
 'revdelete-hide-current' => '$1$2の項目の非表示に失敗しました: これは最新版であるため。
@@ -1452,7 +1447,7 @@ $1",
 'difference-title' => '「$1」の版間の差分',
 'difference-title-multipage' => 'ページ「$1」と「$2」の間の差分',
 'difference-multipage' => '(ページ間の差分)',
-'lineno' => '$1行:',
+'lineno' => '行$1:',
 'compareselectedversions' => '選択した版同士を比較',
 'showhideselectedversions' => '選択した版を表示/非表示',
 'editundo' => '取り消し',
@@ -1467,12 +1462,8 @@ $1",
 # 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' => '前の$1件',
@@ -1481,10 +1472,8 @@ $1",
 'nextn-title' => '次の{{PLURAL:$1|$1件}}',
 'shown-title' => 'ページあたり{{PLURAL:$1|$1件の結果}}を表示',
 'viewprevnext' => '($1{{int:pipe-separator}}$2) ($3 件) を表示',
-'searchmenu-legend' => '検索オプション',
-'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります'''",
-'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成する'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|この文字列から始まる名前のページを見る]]',
+'searchmenu-exists' => "'''このウィキには「[[:$1]]」という名前のページがあります。'''{{PLURAL:$2|0=|検索で見つかった他のページも参照してください。}}",
+'searchmenu-new' => "'''このウィキでページ「[[:$1]]」を新規作成しましょう。'''{{PLURAL:$2|0=|検索で見つかった他のページも参照してください。}}",
 'searchprofile-articles' => '本文ページ',
 'searchprofile-project' => 'ヘルプとプロジェクトページ',
 'searchprofile-images' => 'マルチメディア',
@@ -1505,21 +1494,16 @@ $1",
 'search-interwiki-default' => '$1の結果:',
 'search-interwiki-more' => '(続き)',
 'search-relatedarticle' => '関連',
-'mwsuggest-disable' => '検索候補の提示を無効にする',
 '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' => 'すべて外す',
@@ -1534,7 +1518,6 @@ $1",
 'mypreferences' => '個人設定',
 'prefs-edits' => '編集回数:',
 'prefsnologintext2' => '個人設定を変更するには$1してください。',
-'changepassword' => 'パスワードの変更',
 'prefs-skin' => '外装',
 'skin-preview' => 'プレビュー',
 'datedefault' => '選択なし',
@@ -1557,13 +1540,11 @@ $1",
 'prefs-email' => 'メールの設定',
 'prefs-rendering' => '表示',
 'saveprefs' => '保存',
-'resetprefs' => '保存していない変更を破棄',
 'restoreprefs' => 'すべて初期設定に戻す (すべての節について)',
 'prefs-editing' => '編集',
 'rows' => '行数:',
 'columns' => '列数:',
 'searchresultshead' => '検索',
-'resultsperpage' => '1 ページあたりの表示件数:',
 'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>として表示する閾値 (バイト):',
 'stub-threshold-disabled' => '無効',
 'recentchangesdays' => '最近の更新に表示する日数:',
@@ -1578,7 +1559,6 @@ $1",
 'localtime' => 'ローカルの時刻:',
 'timezoneuseserverdefault' => 'ウィキの既定を使用 ($1)',
 'timezoneuseoffset' => 'その他 (時差を指定)',
-'timezoneoffset' => '時差¹:',
 'servertime' => 'サーバーの時刻:',
 'guesstimezone' => 'ブラウザーの設定から入力',
 'timezoneregion-africa' => 'アフリカ',
@@ -1652,6 +1632,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'prefs-tokenwatchlist' => 'トークン',
 'prefs-diffs' => '差分',
 'prefs-help-prefershttps' => 'この設定は、次回ログインの際に反映されます。',
+'prefs-tabs-navigation-hint' => 'ヒント: ← キーと → キーで、タブ一覧内のタブ間を移動できます。',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'メールアドレスは有効のようです',
@@ -1835,19 +1816,19 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'recentchanges-summary' => 'このページでは、このウィキでの最近の更新を確認できます。',
 'recentchanges-noresult' => '指定した条件に該当する期間の変更はありません。',
 'recentchanges-feed-description' => 'このフィードでこのウィキの最近の更新を追跡できます。',
-'recentchanges-label-newpage' => 'ã\81\93ã\81®ç·¨é\9b\86ã\81§æ\96°ã\81\97ã\81\84ã\83\9aã\83¼ã\82¸ã\81\8cä½\9cæ\88\90ã\81\95ã\82\8cã\81¾ã\81\97ã\81\9f',
-'recentchanges-label-minor' => 'これは細部の編集です',
-'recentchanges-label-bot' => 'ã\81\93ã\81®ç·¨é\9b\86ã\81¯ã\83\9cã\83\83ã\83\88ã\81«ã\82\88ã\81£ã\81¦è¡\8cã\82\8fã\82\8cã\81¾ã\81\97ã\81\9f',
-'recentchanges-label-unpatrolled' => 'この編集はまだ巡回されていません',
+'recentchanges-label-newpage' => 'ã\83\9aã\83¼ã\82¸ã\81®æ\96°è¦\8fä½\9cæ\88\90',
+'recentchanges-label-minor' => '細部の編集',
+'recentchanges-label-bot' => 'ã\83\9cã\83\83ã\83\88ã\81«ã\82\88ã\82\8bç·¨é\9b\86',
+'recentchanges-label-unpatrolled' => '巡回されていない編集',
 'recentchanges-label-plusminus' => 'ページ サイズの増減 (バイト単位)',
-'recentchanges-legend-newpage' => '([[Special:NewPages|新しいページ一覧]]も参照してください)',
+'recentchanges-legend-heading' => "'''凡例:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|新しいページ一覧]]も参照)',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "$4 $5 までの{{PLURAL:$2|'''$2'''日間}}になされた{{PLURAL:$1|'''$1'''件の変更}}は以下の通りです。",
 'rcnotefrom' => "以下は'''$2'''以降の更新です (最大 '''$1''' 件)。",
 'rclistfrom' => '$1以降の更新を表示する',
 'rcshowhideminor' => '細部の編集を$1',
 'rcshowhidebots' => 'ボットを$1',
-'rcshowhideliu' => 'ログイン利用者を$1',
+'rcshowhideliu' => '登録利用者を$1',
 'rcshowhideanons' => '匿名利用者を$1',
 'rcshowhidepatr' => '巡回された編集を$1',
 'rcshowhidemine' => '自分の編集を$1',
@@ -1886,7 +1867,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'reuploaddesc' => 'アップロードを中止してアップロードフォームへ戻る',
 'upload-tryagain' => '修正したファイル解説を投稿',
 'uploadnologin' => 'ログインしていません',
-'uploadnologintext' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\99ã\82\8bã\81«ã\81¯$1ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99。',
+'uploadnologintext' => 'ã\83\95ã\82¡ã\82¤ã\83«ã\82\92ã\82¢ã\83\83ã\83\97ã\83­ã\83¼ã\83\89ã\81\99ã\82\8bã\81«ã\81¯$1ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
 'upload_directory_missing' => 'アップロード先ディレクトリ ($1) が見つかりませんでした。ウェブ サーバーによる作成もできませんでした。',
 'upload_directory_read_only' => 'アップロード先ディレクトリ ($1) には、ウェブサーバーが書き込めません。',
 'uploaderror' => 'アップロードのエラー',
@@ -1974,6 +1955,8 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。',
 'file-exists-duplicate' => 'このファイルは以下の{{PLURAL:$1|ファイル|ファイル群}}と重複しています:',
 'file-deleted-duplicate' => 'このファイル ([[:$1]]) と同一のファイルが以前に削除されています。
 再度アップロードをする前に、以前削除されたファイルの削除記録を確認してください。',
+'file-deleted-duplicate-notitle' => 'このファイルと同一のファイルが、以前に削除されページ名が秘匿されました。
+再度アップロードをする前に、秘匿されたファイルのデータを閲覧する権限を持った利用者に連絡して、状況を精査してもらってください。',
 'uploadwarning' => 'アップロード警告',
 'uploadwarning-text' => '下記のファイル解説を修正して再試行してください。',
 'savefile' => 'ファイルを保存',
@@ -2325,6 +2308,7 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'ninterwikis' => '$1 {{PLURAL:$1|個のウィキ間リンク}}',
 'nlinks' => '$1 {{PLURAL:$1|個のリンク}}',
 'nmembers' => '$1項目',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|項目}}',
 'nrevisions' => '$1版',
 'nviews' => '$1回の閲覧',
 'nimagelinks' => '$1 {{PLURAL:$1|ページ}}で使用',
@@ -2363,10 +2347,9 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'protectedpages' => '保護されているページ',
 'protectedpages-indef' => '無期限保護のみ',
 'protectedpages-cascade' => 'カスケード保護のみ',
-'protectedpagestext' => '以下のページは移動や編集が禁止されています',
+'protectedpages-noredirect' => 'リダイレクトを隠す',
 'protectedpagesempty' => '指定した条件で保護中のページは現在ありません。',
 'protectedtitles' => '作成保護されているページ名',
-'protectedtitlestext' => '以下のページは新規作成が禁止されています',
 'protectedtitlesempty' => 'これらの引数で現在保護されているページはありません。',
 'listusers' => '利用者一覧',
 'listusers-editsonly' => '投稿記録のある利用者のみを表示',
@@ -2419,9 +2402,6 @@ contenttype/subtypeの形式で入力してください (例: <code>image/jpeg</
 'allpagesto' => '最後に表示するページ:',
 'allarticles' => '全ページ',
 'allinnamespace' => '全ページ ($1名前空間)',
-'allnotinnamespace' => '全ページ ($1名前空間以外)',
-'allpagesprev' => '前へ',
-'allpagesnext' => '次へ',
 'allpagessubmit' => '表示',
 'allpagesprefix' => '次の文字列から始まるページを表示:',
 'allpagesbadtitle' => '指定したページ名は無効か、言語間またはインターウィキ接頭辞を含んでいます。
@@ -2648,6 +2628,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'このページには、 $1版を超える編集履歴があります。
 削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
 十分に注意してください。',
+'deleting-backlinks-warning' => "'''警告:''' 削除しようとしているページは、他のページからリンクされています。",
 
 # Rollback
 'rollback' => '編集を巻き戻し',
@@ -2769,7 +2750,6 @@ $2による直前の版へ変更されました。',
 'undeletebtn' => '復元',
 'undeletelink' => '閲覧/復元',
 'undeleteviewlink' => '閲覧',
-'undeletereset' => 'リセット',
 'undeleteinvert' => '選択を反転',
 'undeletecomment' => '理由:',
 'undeletedrevisions' => '{{PLURAL:$1|$1版}}を復元しました',
@@ -2859,7 +2839,6 @@ $1',
 'block' => '利用者をブロック',
 'unblock' => '利用者のブロックを解除',
 'blockip' => '利用者をブロック',
-'blockip-title' => '利用者のブロック',
 'blockip-legend' => '利用者をブロック',
 'blockiptext' => '以下のフォームを使用して、指定したIPアドレスまたは利用者からの書き込みアクセスをブロックできます。
 このような措置は、荒らしからの防御の目的のみに行われるべきで、また[[{{MediaWiki:Policy-url}}|方針]]に沿ったものであるべきです。
@@ -2867,7 +2846,6 @@ $1',
 'ipadressorusername' => 'IPアドレスまたは利用者名:',
 'ipbexpiry' => '有効期限:',
 'ipbreason' => '理由:',
-'ipbreasonotherlist' => 'その他の理由',
 'ipbreason-dropdown' => '*よくあるブロック理由
 ** 虚偽情報の挿入
 ** ページから内容の除去
@@ -2883,8 +2861,6 @@ $1',
 'ipbsubmit' => 'この利用者をブロック',
 'ipbother' => 'その他の期間:',
 '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',
-'ipbotheroption' => 'その他',
-'ipbotherreason' => '他の、または追加の理由:',
 'ipbhidename' => '利用者名を編集履歴や各種一覧から秘匿する',
 'ipbwatchuser' => 'この利用者の利用者ページとトークページをウォッチ',
 'ipb-disableusertalk' => 'この利用者がブロック中に自身のトークページを編集することを禁止',
@@ -2896,6 +2872,7 @@ $1',
 [[Special:BlockList|ブロックの一覧]]を参照してください。',
 'ipb-blockingself' => '自分自身をブロックしようとしています! 本当に実行しますか?',
 'ipb-confirmhideuser' => '利用者名の秘匿を有効にしてブロックしようとしています。実行すると、すべての一覧や記録項目で利用者名が表示されません。本当に実行しますか?',
+'ipb-confirmaction' => '本当に実行する場合は、下の「{{int:ipb-confirm}}」欄にチェックを入れてください。',
 'ipb-edit-dropdown' => 'ブロック理由を編集',
 'ipb-unblock-addr' => '$1のブロックを解除',
 'ipb-unblock' => '利用者またはIPアドレスのブロックを解除',
@@ -2961,7 +2938,7 @@ $1 のブロックの理由は「''$2''」です。",
 'ipb_expiry_invalid' => '有効期限が無効です。',
 'ipb_expiry_temp' => '利用者名秘匿のブロックは、無期限ブロックになります。',
 'ipb_hide_invalid' => 'このアカウントを秘匿できません。編集回数が非常に多いためだと思われます。',
-'ipb_already_blocked' => '「$1」は既にブロックされています',
+'ipb_already_blocked' => '「$1」は既にブロックされています',
 'ipb-needreblock' => '$1 は既にブロックされています。設定を変更しますか?',
 'ipb-otherblocks-header' => 'その他の{{PLURAL:$1|ブロック}}',
 'unblock-hideuser' => '利用者名が隠されているため、この利用者のブロックを解除できません。',
@@ -2978,11 +2955,10 @@ $1 のブロックの理由は「''$2''」です。",
 'sorbs_create_account_reason' => 'ご使用中のIPアドレスが、{{SITENAME}}の使用しているDNSBLに公開プロキシとして記載されています。
 アカウント作成はできません',
 'xffblockreason' => 'X-Forwarded-For ヘッダーに含まれている IP アドレスがブロックされています。これはあなたのものか、あなたが利用しているプロキシサーバーのものです。元のブロックの理由は: $1',
-'cant-block-while-blocked' => 'ブロックされている間は、他の利用者をブロックできません。',
 'cant-see-hidden-user' => 'ブロックしようとしている利用者は、既にブロックされ隠されています。
 あなたには hideuser 権限がないため、この利用者のブロックの閲覧/編集はできません。',
-'ipbblocked' => '自分自身をブロックしているため、他の利用者のブロックやブロック解除はできません',
-'ipbnounblockself' => '自分自身のブロックは解除できません',
+'ipbblocked' => 'あなた自身がブロックされているため、他の利用者のブロックやブロック解除はできません。',
+'ipbnounblockself' => 'あなたには自身をブロック解除する権限がありません。',
 
 # Developer tools
 'lockdb' => 'データベースのロック',
@@ -3039,7 +3015,6 @@ $1 のブロックの理由は「''$2''」です。",
 これらの場合、必要に応じて、トークページを移動または統合する必要があります。",
 'movearticle' => '移動するページ:',
 'moveuserpage-warning' => "'''警告:''' 利用者ページを移動しようとしています。この操作ではページのみが移動され、利用者名は''変更されない''点に注意してください。",
-'movenologin' => 'ログインしていません',
 'movenologintext' => 'ページを移動するためには、登録利用者でありかつ、[[Special:UserLogin|ログイン]]している必要があります。',
 'movenotallowed' => 'ページを移動する権限がありません。',
 'movenotallowedfile' => 'ファイルを移動する権限がありません。',
@@ -3055,9 +3030,6 @@ $1 のブロックの理由は「''$2''」です。",
 'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。
 別の名前を選択してください。',
 'cantmove-titleprotected' => '新しいページ名が作成保護されているため、この場所にページを移動できません',
-'talkexists' => "'''ページ自身は移動できましたが、トークページは移動先のページが存在したため移動できませんでした。
-手動で統合してください。'''",
-'movedto' => '移動先:',
 'movetalk' => '付随するトークページも移動',
 'move-subpages' => '下位ページも移動 ($1 件まで)',
 'move-talk-subpages' => 'トークページの下位ページも移動 ($1 件まで)',
@@ -3296,7 +3268,7 @@ $2',
 'tooltip-undo' => '「取り消し」はこの編集を差し戻し、編集画面をプレビュー付きで開きます。要約欄に理由を追加できます。',
 'tooltip-preferences-save' => '設定を保存する',
 'tooltip-summary' => '短い要約を入力してください',
-'interlanguage-link-title' => '$1 – $2',
+'interlanguage-link-title' => '$2: $1',
 
 # Stylesheets
 'common.css' => '/* ここに記述したCSSはすべての外装に反映されます */',
@@ -3307,6 +3279,7 @@ $2',
 'print.css' => '/* ここに記述したCSSは印刷出力に影響します */',
 'noscript.css' => '/* ここに記述したCSSはJavaScriptを無効にしている利用者に影響します */',
 'group-autoconfirmed.css' => '/* ここに記述したCSSは自動承認された利用者のみに影響します */',
+'group-user.css' => '/* ここに記述したCSSは登録利用者のみに影響します */',
 'group-bot.css' => '/* ここに記述したCSSはボットのみに影響します */',
 'group-sysop.css' => '/* ここに記述したCSSは管理者のみに影響します */',
 'group-bureaucrat.css' => '/* ここに記述したCSSはビューロクラットのみに影響します */',
@@ -3317,7 +3290,8 @@ $2',
 'monobook.js' => '/* ここにあるすべてのJavaScriptは、モノブック外装を使用している利用者に対して読み込まれます */',
 'modern.js' => '/* ここにあるすべてのJavaScriptは、モダン外装を使用している利用者に対して読み込まれます */',
 'vector.js' => '/* ここにあるすべてのJavaScriptは、ベクター外装を使用している利用者に対して読み込まれます */',
-'group-autoconfirmed.js' => '/* ここにあるすべてのJavaScriptは、自動承認された利用者に対して読み込まれます */',
+'group-autoconfirmed.js' => '/* ここにあるすべてのJavaScriptは、自動承認された利用者のみに読み込まれます */',
+'group-user.js' => '/* ここにあるすべてのJavaScriptは、登録利用者のみに読み込まれます */',
 'group-bot.js' => '/* ここにあるすべてのJavaScriptは、ボットのみに読み込まれます */',
 'group-sysop.js' => '/* ここにあるすべてのJavaScriptは、管理者のみに読み込まれます */',
 'group-bureaucrat.js' => '/* ここにあるすべてのJavaScriptは、ビューロクラットのみに読み込まれます */',
@@ -3975,15 +3949,10 @@ Variants for Chinese language
 'exif-urgency-high' => '高 ($1)',
 'exif-urgency-other' => '利用者定義の優先度 ($1)',
 
-# External editor support
-'edit-externally' => '外部アプリケーションを使用してこのファイルを編集',
-'edit-externally-help' => '(詳しくは[https://www.mediawiki.org/wiki/Manual:External_editors 設定手順]をご覧ください)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'すべて',
 'namespacesall' => 'すべて',
 'monthsall' => 'すべて',
-'limitall' => 'すべて',
 
 # Email address confirmation
 'confirmemail' => 'メールアドレスの確認',
@@ -4004,11 +3973,10 @@ Variants for Chinese language
 メールサーバーからの返答: $1',
 'confirmemail_invalid' => '確認用コードが正しくありません。
 このコードの有効期限が切れている可能性があります。',
-'confirmemail_needlogin' => 'ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92確èª\8dã\81\99ã\82\8bã\81«ã\81¯$1ã\81\99ã\82\8bå¿\85è¦\81ã\81\8cã\81\82ã\82\8aã\81¾ã\81\99。',
+'confirmemail_needlogin' => 'ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92確èª\8dã\81\99ã\82\8bã\81\9fã\82\81ã\81«ã\80\81$1ã\81\97ã\81¦ã\81\8fã\81 ã\81\95ã\81\84。',
 'confirmemail_success' => 'メールアドレスは確認されました。
 [[Special:UserLogin|ログイン]]してウィキを使用できます。',
 'confirmemail_loggedin' => 'メールアドレスは確認されました。',
-'confirmemail_error' => '確認情報を保存する際にエラーが発生しました。',
 'confirmemail_subject' => '{{SITENAME}} メールアドレスの確認',
 'confirmemail_body' => '誰か (おそらくあなた) が、IP アドレス$1から、
 このメールアドレスで {{SITENAME}} のアカウント「$2」を登録しました。
@@ -4095,6 +4063,11 @@ $5
 'imgmultigo' => '表示',
 'imgmultigoto' => 'ページ$1に移動',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(既定の言語)',
+'img-lang-info' => 'この画像を $1 で描画する。$2',
+'img-lang-go' => '実行',
+
 # Table pager
 'ascending_abbrev' => '昇順',
 'descending_abbrev' => '降順',
@@ -4133,8 +4106,8 @@ $5
 通常のプレビューを試してください。',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
-'lag-warn-high' => 'データベースサーバー遅延のため、この一覧には、$1 {{PLURAL:$1|秒}}より前の変更が表示されていない可能性があります。',
+'lag-warn-normal' => 'この一覧には $1 {{PLURAL:$1|秒}}前以降の変更内容が表示されていないおそれがあります。',
+'lag-warn-high' => 'データベースサーバーの大幅な遅延のため、この一覧には $1 {{PLURAL:$1|秒}}前以降の変更内容が表示されていないおそれがあります。',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'ウォッチリストには {{PLURAL:$1|$1 件のページ}}が登録されています (トークページを除く)。',
@@ -4244,7 +4217,17 @@ $5
 'version-hook-name' => 'フック名',
 'version-hook-subscribedby' => '使用個所',
 'version-version' => '(バージョン $1)',
-'version-license' => 'ライセンス',
+'version-license' => 'MediaWiki のライセンス',
+'version-ext-license' => 'ライセンス',
+'version-ext-colheader-name' => '拡張機能',
+'version-ext-colheader-version' => 'バージョン',
+'version-ext-colheader-license' => 'ライセンス',
+'version-ext-colheader-description' => '説明',
+'version-ext-colheader-credits' => '作者',
+'version-license-title' => '$1 のライセンス',
+'version-license-not-found' => 'この拡張機能には詳細なライセンス情報がありません。',
+'version-credits-title' => '$1 への貢献者情報',
+'version-credits-not-found' => 'この拡張機能には詳細な貢献者情報がありません。',
 'version-poweredby-credits' => "このウィキは、'''[https://www.mediawiki.org/ MediaWiki]''' (copyright © 2001-$1 $2) で動作しています。",
 'version-poweredby-others' => 'その他',
 'version-poweredby-translators' => 'translatewiki.net の翻訳者たち',
@@ -4264,13 +4247,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath/ja スクリプトパス]',
 
 # Special:Redirect
-'redirect' => 'ファイル名、利用者ID、版IDでの転送',
+'redirect' => 'ファイル名、利用者ID、ページID、版IDでの転送',
 'redirect-legend' => 'ファイルまたはページヘの転送',
-'redirect-summary' => 'ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]]',
+'redirect-summary' => 'ã\81\93ã\81®ç\89¹å\88¥ã\83\9aã\83¼ã\82¸ã\81¯ã\80\81ã\83\95ã\82¡ã\82¤ã\83« (ã\83\95ã\82¡ã\82¤ã\83«å\90\8dã\82\92æ\8c\87å®\9a\80\81ã\83\9aã\83¼ã\82¸ (ç\89\88 ID ã\81¾ã\81\9fã\81¯ã\83\9aã\83¼ã\82¸ ID ã\82\92æ\8c\87å®\9a\80\81å\88©ç\94¨è\80\85ã\83\9aã\83¼ã\82¸ (å\88©ç\94¨è\80\85 ID ã\82\92æ\95´æ\95°ã\81§æ\8c\87å®\9a) ã\81«è»¢é\80\81ã\81\95ã\82\8cã\81¾ã\81\99ã\80\82使ç\94¨ä¾\8b: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], [[{{#Special:Redirect}}/user/101]]',
 'redirect-submit' => '実行',
 'redirect-lookup' => '検索の種類:',
 'redirect-value' => '値:',
 'redirect-user' => '利用者 ID',
+'redirect-page' => 'ページ ID',
 'redirect-revision' => 'ページの版 ID',
 'redirect-file' => 'ファイル名',
 'redirect-not-exists' => '値が見つかりません',
@@ -4337,7 +4321,6 @@ MediaWikiは、有用であることを期待して配布されていますが
 
 # Special:ComparePages
 'comparepages' => 'ページの比較',
-'compare-selector' => 'ページの版を比較',
 'compare-page1' => 'ページ 1',
 'compare-page2' => 'ページ 2',
 'compare-rev1' => '版 1',
@@ -4465,6 +4448,7 @@ MediaWikiは、有用であることを期待して配布されていますが
 'api-error-overwrite' => '既存のファイルへの上書きは許可されていません。',
 'api-error-stashfailed' => '内部エラー: サーバーは一時ファイルを格納できませんでした。',
 'api-error-publishfailed' => '内部エラー: サーバーは一時ファイルを発行できませんでした。',
+'api-error-stasherror' => 'ファイルをスタッシュにアップロードする際にエラーが発生しました。',
 'api-error-timeout' => 'サーバーが決められた時間内に応答しませんでした。',
 'api-error-unclassified' => '不明なエラーが発生しました。',
 'api-error-unknown-code' => '不明なエラー:「$1」',
@@ -4513,10 +4497,14 @@ MediaWikiは、有用であることを期待して配布されていますが
 'expand_templates_input' => '展開するテキスト:',
 'expand_templates_output' => '展開結果',
 'expand_templates_xml_output' => 'XML 出力',
+'expand_templates_html_output' => '出力される HTML ソース',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'コメントを除去',
 'expand_templates_remove_nowiki' => '結果に含まれる <nowiki> タグを表示しない',
 'expand_templates_generate_xml' => 'XML 構文解析ツリーを表示',
+'expand_templates_generate_rawhtml' => 'HTML ソースを表示',
 'expand_templates_preview' => 'プレビュー',
 
+# Unknown messages
+'uploadinvalidxml' => 'アップロードされたファイルに含まれる XML が構文解析できませんでした。',
 );
index eb674e9..14c4d26 100644 (file)
@@ -35,7 +35,6 @@ $messages = array(
 'tog-watchdeletion' => 'Ad piej mi diliit tu mi wachlis',
 'tog-previewontop' => 'Shuo priivyuu bifuo edit bax',
 'tog-previewonfirst' => 'Shuo priivyuu pahn fos edit',
-'tog-nocache' => 'Disiebl brouza piej kiashin',
 'tog-enotifwatchlistpages' => 'E-miel mi wen piej pahn mi wachlis chienj',
 'tog-enotifusertalkpages' => 'E-miel mi wen mi yuuza taak piej chienj',
 'tog-enotifminoredits' => 'E-miel mi alzwel fi maina edit pahn piej',
@@ -155,7 +154,6 @@ Lef aaf dif afta pofaamin ruolbak',
 'qbedit' => 'Edit',
 'qbpageoptions' => 'Dis piej',
 'qbmyoptions' => 'Mi piejdem',
-'qbspecialpages' => 'Peshal piejdem',
 'faq' => 'FAK',
 'faqpage' => 'Project:FAK',
 
@@ -242,7 +240,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).
 'aboutsite' => 'Habowt {{SITENAME}}',
-'aboutpage' => 'Project: អំពី',
+'aboutpage' => 'Project:About',
 'copyright' => 'Kantent avielobl anda $1.',
 'copyrightpage' => '{{ns:project}}:Kapirait',
 'currentevents' => 'Korant ivent',
@@ -357,9 +355,6 @@ Imaita aredi diliit bai smadi els.',
 'perfcachedts' => 'Di falarin dieta kiash, ahn laas opdiet $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Opdiet fi dis piej korantli disiebl.
 Dieta ya no go rifresh fi nou.',
-'wrong_wfQuery_params' => 'Inkarek paramita tu wfQuery()<br />
-Fongshan: $1<br />
-Kwieri: $2',
 'viewsource' => 'Vyuu Suos',
 'actionthrottled' => 'Akshan chratl',
 'actionthrottledtext' => 'Az anti-spam meja, yu limit frahn pofaam dis akshan tomoch taim ina shaat spies a taim, ahn yu exiid di limit.
@@ -481,7 +476,6 @@ Begyu wiet likl bifuo yu chrai agen.',
 'suspicious-userlogout' => 'Yu rikwes fi lag out dinai bikaa iluk laik se isen bai a brok brouza ar kiashin praxi.',
 
 # Change password dialog
-'resetpass' => 'Chienj paaswod',
 'resetpass_announce' => 'Yu lag iin wid a tempareri e-miel kuod.
 Fi finish lag iin, yu mos set a nyuu paaswod yaso:',
 'resetpass_header' => 'Chienj akount paaswod',
@@ -686,10 +680,6 @@ Lejen: '''({{int:cur}})''' = difrans wid lietis rivijan, '''({{int:last}})''' =
 # Search results
 'searchresults' => 'Saach rizolt',
 'searchresults-title' => 'Saach rizolt fi "$1"',
-'searchresulttext' => 'Fi muo infamieshan bout saachin {{SITENAME}}, si [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Yu saach fi \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|aal piej taat wid "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aal piej wa lingk tu "$1"]])',
-'searchsubtitleinvalid' => "Yu saach fi '''$1'''",
-'notitlematches' => 'No piej taikl mach',
 'notextmatches' => 'No piej tex mach',
 'prevn' => 'priivos {{PLURAL:$1|$1}}',
 'nextn' => 'nex {{PLURAL:$1|$1}}',
@@ -701,13 +691,9 @@ Lejen: '''({{int:cur}})''' = difrans wid lietis rivijan, '''({{int:last}})''' =
 'search-interwiki-caption' => 'Sista prajek',
 'search-interwiki-default' => '$1 rizoltdem:',
 'search-interwiki-more' => '(muo)',
-'nonefound' => "'''Nuot''': Onggl som niemspies saach bai difaalt.
-Chrai priifix yu kwieri wid ''all:'' fi saach aal kantent (inkluudn taak piej, templit, esechra), ar yuuz di dizaya niemspies fi priifix.",
-'powersearch' => 'Advans saach',
 'powersearch-legend' => 'Advans saach',
 'powersearch-ns' => 'Saach ina niemspies:',
 'powersearch-redir' => 'Lis riidirek',
-'powersearch-field' => 'Saach fi',
 
 # Preferences page
 'preferences' => 'Prefrens',
@@ -732,7 +718,6 @@ Chrai priifix yu kwieri wid ''all:'' fi saach aal kantent (inkluudn taak piej, t
 'recentchanges' => 'Riisant chienjdem',
 'recentchanges-legend' => 'Riisant chienj apshan',
 'recentchanges-feed-description' => 'Chrak di muos riisant chienjdem tu di wiki ina dis fiid.',
-'rcnote' => "Below {{PLURAL:$1|a '''1''' chienj|a di laas '''$1''' chienj}} ina di laas {{PLURAL:$2|die|'''$2''' die}}, az av $5, $4.",
 'rclistfrom' => 'Shuo nyuu chienjdem we taat frahn $1',
 'rcshowhideminor' => '$1 maina editdem',
 'rcshowhidebots' => '$1 batdem',
@@ -951,9 +936,6 @@ Ina demde kies, yu wi afi muuv ar moerj di piej manyuali ef yu dizaya.",
 'movepage-moved' => '\'\'\'"$1" muuv gaan a "$2"\'\'\'',
 'articleexists' => 'Piej wid daade niem egzis aredi, ar di niem yu chuuz no valid.
 Begyu chuuz aneda niem.',
-'talkexists' => "'''Di piej iself don muuv soksesfuli, bot di taak piek kudn muuv kaazn se wan egzis aredi a di nyuu taikl.
-Begyu moerj dem manyuali.'''",
-'movedto' => 'muuv gaan a',
 'movetalk' => 'Muuv asuosietid taak piej',
 'movelogpage' => 'Muuv lag',
 'movereason' => 'Riizn:',
@@ -1063,10 +1045,6 @@ Ada wandem wi aid bai difaalt.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Yuuz extoernal aplikieshan fi edit dis fail',
-'edit-externally-help' => '(Si di [https://www.mediawiki.org/wiki/Manual:External_editors setop inschrokshan] fi muo infamieshan)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aal',
 'namespacesall' => 'aal',
index 90b75d2..a0968b9 100644 (file)
@@ -14,6 +14,7 @@
  * @author Malafaya
  * @author OldakQuill
  * @author PierreAbbat
+ * @author គីមស៊្រុន
  */
 
 $messages = array(
@@ -39,7 +40,7 @@ $messages = array(
 'fri' => 'la mudjed',
 'sat' => 'la xadjed',
 'january' => 'ianvari',
-'february' => 'frebruari',
+'february' => 'februari',
 'march' => 'martio',
 'april' => 'prilio',
 'may_long' => 'madjio',
@@ -51,7 +52,7 @@ $messages = array(
 'november' => 'novmbero',
 'december' => 'decmbero',
 'january-gen' => 'la pamast.',
-'february-gen' => 'la remast.',
+'february-gen' => 'la .remast.',
 'march-gen' => 'la cimast.',
 'april-gen' => 'la vomast.',
 'may-gen' => 'la mumast.',
@@ -79,13 +80,13 @@ $messages = array(
 'pagecategories' => '{{PLURAL:$1|klesi|klesi}}',
 'category_header' => 'fe le kibypapri cu klesi "$1"',
 'subcategories' => "le'a ti",
-'category-subcat-count' => "$2 klesi cu vipsi le vi klesi .i $1 vipkle cu ni'a se jarco",
+'category-subcat-count' => "{{PLURAL:$2|lo dei klesi cu se klesi lo po'o di'e|lo dei klesi cu se klesi  {{PLURAL:$1|pa lo|$1 lo}} $2 da.}}",
 'category-article-count' => "{{PLURAL:$2|pa vi ckupau ku po'o cmima lo vi klesi.| {{PLURAL:$1|lo vi ckupau|$1 vi ckupau }} ku cmima lo vi klesi, out of $2 total.}}",
 'listingcontinuesabbrev' => "co'unai",
 
 'about' => 've skicu',
 'moredotdotdot' => '.au zmadu',
-'mytalk' => 'casnu mi',
+'mytalk' => 'lo casnu be mi',
 'navigation' => 'ckupau',
 
 # Cologne Blue skin
@@ -93,21 +94,22 @@ $messages = array(
 'qbedit' => 'stika',
 'qbpageoptions' => 'ti ckupau',
 'qbmyoptions' => 'lo pe mi ckupau',
-'qbspecialpages' => 'steci ckupau',
-'faq' => 'FAQ',
-'faqpage' => 'Project:FAQ',
+'faq' => 'lo cafne se reisku',
+'faqpage' => "lo proiekto zo'u: lo cafne se reisku",
 
 # Vector skin
 'vector-action-addsection' => "jmina la'e se casnu",
 'vector-action-delete' => 'vimcu',
 'vector-action-move' => 'stika lo cmene',
+'vector-action-protect' => 'bandu',
 'vector-view-create' => 'zbasu',
 'vector-view-edit' => 'stika',
-'vector-view-history' => 'ko cpacu lo vreji citri',
+'vector-view-history' => 'lo ckupau citri',
 'vector-view-view' => 'tcidu',
 'vector-view-viewsource' => 'cpacu lo krasi',
 'actions' => 'nu zukte',
 'namespaces' => 'cmene canlu',
+'variants' => 'loi jutsi',
 
 'errorpagetitle' => 'fliba',
 'tagline' => "ra'i {{SITENAME}}",
@@ -117,7 +119,7 @@ $messages = array(
 'searcharticle' => 'jarco',
 'history' => 'lo ckupau citri',
 'history_short' => 'galfi plivei',
-'printableversion' => 'plepri simsa',
+'printableversion' => 'lo prina bredi versio',
 'permalink' => "vitno terjo'e",
 'view' => 'cpacu',
 'edit' => 'stika',
@@ -128,21 +130,23 @@ $messages = array(
 'deletethispage' => 'vimcu lo vi ckupau',
 'protect' => 'bandu',
 'protect_change' => 'binxo',
+'protectthispage' => 'bandu lo dei ckupau',
 'newpage' => 'lo cnino ckupau',
 'talkpagelinktext' => 'casnu',
 'specialpage' => 'steci ckupau',
 'personaltools' => 'Sivni tyobuobulysy',
 'talk' => 'casnu',
 'views' => 'nu cpacu',
-'toolbox' => 'tutci',
-'otherlanguages' => 'drata bangu',
+'toolbox' => 'loi tutci',
+'otherlanguages' => 'lo se bangu be lo drata',
 'lastmodifiedat' => "le vi ckupau rore'u se galfi de'i li $2 $1",
+'protectedpage' => 'lo se bandu ckupau',
 'jumpto' => 'plipe tyobu:',
 'jumptonavigation' => 'ckupau',
 'jumptosearch' => 'sisku',
 
-# 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}}',
+# 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).
+'aboutsite' => 'អំពី {{SITENAME}}',
 'aboutpage' => "Project:sera'a",
 'copyright' => "lo selvau cu gubni ja'i la'o gy. $1 .gy.",
 'copyrightpage' => "{{ns:project}}:fukyzifpo'e",
@@ -151,8 +155,7 @@ $messages = array(
 'disclaimers' => "nunxusra lo za'i na fuzme",
 'disclaimerpage' => "Project:kampu nunxusra be lo za'i na fuzme",
 'edithelp' => 'stika nunsidju',
-'edithelppage' => 'Help:Editing',
-'helppage' => 'to nu sidju toi se vasru',
+'helppage' => 'Help:lo se vasru',
 'mainpage' => 'Ralju Ckupau',
 'mainpage-description' => 'ralju ckupau',
 'portal' => 'bende ckupau',
@@ -162,14 +165,12 @@ $messages = array(
 
 'ok' => 'ie',
 'retrievedfrom' => 'cpacu fi la\'o .url. "$1" .url.',
-'newmessageslink' => 'loi cnino notci',
 'editsection' => 'stika ti',
-'editsection-brackets' => '[$1]',
 'editold' => 'stika',
 'viewsourceold' => 'catlu le mifra',
 'editlink' => 'stika ti',
 'viewsourcelink' => 'casnu le mifra',
-'editsectionhint' => 'stika ti: $1',
+'editsectionhint' => "stika lo te fendi noi du la'oi $1",
 'toc' => 'ckupau pagbu',
 'showtoc' => 'jarco',
 'hidetoc' => 'toljarco',
@@ -191,6 +192,7 @@ $messages = array(
 'nstab-project' => 'gungunma ckupau',
 'nstab-image' => 'vreji',
 'nstab-mediawiki' => 'notci',
+'nstab-template' => 'lo morna',
 'nstab-category' => 'klesi',
 
 # General errors
@@ -204,7 +206,9 @@ $messages = array(
 'userlogin' => "co'a pilno lo jaspu / zbasu lo jaspu",
 'logout' => "co'u se jaspu",
 'userlogout' => "co'u se jaspu",
+'nologin' => 'xu no da jaspu do i $1',
 'nologinlink' => 'zbasu lo jaspu',
+'createaccount' => 'zbasu lo jaspu',
 'gotaccountlink' => "co'a se jaspu",
 'loginlanguagelabel' => 'to bangu toi $1',
 
@@ -219,19 +223,20 @@ $messages = array(
 'summary' => 'to ve skicu toi',
 'minoredit' => "ti nu na'evajni galfi",
 'watchthis' => 'zgana ti',
-'savearticle' => 'vreji le ckupau',
-'showpreview' => 'troci jarco',
+'savearticle' => 'stogau lo ckupau',
+'showpreview' => 'zganygau lo jai se troci',
 'showdiff' => 'jarco lo te frica',
 'loginreqlink' => "co'a se jaspu",
 'newarticle' => 'to cnino toi',
-'previewnote' => "'''ko morji le du'u ti seljarco o'i'''
-.i lo do nunstika cu na pu vreji",
-'editing' => "ca galfi la'e lu $1 li'u",
-'editingsection' => 'ca galfi le selcmene be zoi $1 (section)',
-'editingcomment' => 'ca galfi le selcmene be zoi $1 (comment)',
+'previewnote' => "'''do o'i morji lo du'u di'e jai se troci se zgana po'o'''
+.i lo do nu stika cu pu'o se stogau",
+'editing' => "ca'o stika la'o vric. $1 vric.",
+'editingsection' => "ca'o stika la'o vric. $1 vric. noi te fendi",
+'editingcomment' => "ca'o stika la'o vric. $1 vric. noi cnino te fendi",
+'template-protected' => '(to loi se bende toi)',
 
 # History pages
-'revisionasof' => "velfarvi de'i $1",
+'revisionasof' => "ve farvi soi se detri la'oi $1",
 'cur' => 'cab',
 'last' => "prula'i",
 'page_first' => 'pamoi',
@@ -250,16 +255,25 @@ $messages = array(
 # Search results
 'searchresults' => "tu'a le se sisku",
 'searchresults-title' => 'Sisku pruce for "$1"',
-'searchhelp-url' => 'to nu sidju toi se vasru',
+'prevn' => 'lo lidne {{PLURAL:$1|$1}}',
+'nextn' => 'lo se lidne {{PLURAL:$1|$1}}',
+'prevn-title' => 'lo lidne $1 {{PLURAL:$1|result|results}}',
+'searchprofile-articles' => 'lo se vasru papri',
 'searchprofile-everything' => "ro co'e",
+'searchprofile-advanced' => 'lo tcila',
+'searchprofile-articles-tooltip' => "sisku fi la'oi $1",
+'searchprofile-project-tooltip' => "sisku fi la'oi $1",
+'searchprofile-images-tooltip' => "sisku tu'a lo vreji",
 'search-result-size' => '$1 ({{PLURAL:$2|1 valsi|$2 valsi}})',
+'search-section' => "(to la'oi $1 noi te fendi toi)",
 'search-suggest' => "xu do sisydji lu $1 li'u",
 'searchall' => "ro co'e",
 
 # Preferences page
-'preferences' => 'zmaselnei',
-'mypreferences' => 'zmaselnei liste',
-'prefs-editing' => 'ca galfi',
+'preferences' => 'lo se nelci',
+'mypreferences' => 'lo se nelci',
+'prefs-rc' => 'puzi nu stika',
+'prefs-editing' => "ca'o stika",
 'searchresultshead' => "tu'a le se sisku",
 'savedprefs' => 'le do zmaselnei pu vreji',
 'yourrealname' => 'to fatci cmene toi',
@@ -281,7 +295,8 @@ $messages = array(
 'boteditletter' => 'z',
 
 # Recent changes linked
-'recentchangeslinked' => "srana nunga'i",
+'recentchangeslinked' => 'lo srana nu gasnu',
+'recentchangeslinked-toolbox' => 'lo srana nu gasnu',
 'recentchangeslinked-page' => 'to ckupau cmene toi',
 
 # Upload
@@ -302,6 +317,7 @@ $messages = array(
 'randompage' => 'cunso ckupau',
 
 # Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|bitsi}}',
 'newpages' => 'lo cnino ckupau',
 'move' => 'stika lo cmene',
 
@@ -317,8 +333,8 @@ $messages = array(
 'categories' => 'klesi',
 
 # Watchlist
-'watchlist' => 'selzgaste',
-'mywatchlist' => 'selzgaste',
+'watchlist' => 'loi se zgana ckupau',
+'mywatchlist' => 'loi se zgana ckupau',
 'watch' => 'jundi',
 'watchthispage' => 'zgana ti',
 'unwatch' => "de'a zgana",
@@ -347,10 +363,10 @@ $messages = array(
 'blanknamespace' => '(ralju)',
 
 # Contributions
-'contributions' => 'selstika le pilno',
-'mycontris' => 'pu selstika mi',
+'contributions' => "{{GENDER:$1|lo pilno}} mo'u stika la'e di'e",
+'mycontris' => 'lo be mi pu se stika',
 
-'sp-contributions-talk' => 'casnu',
+'sp-contributions-talk' => 'lo nu casnu',
 'sp-contributions-submit' => 'sisku',
 
 # What links here
@@ -365,29 +381,36 @@ $messages = array(
 'blocklink' => 'zunti',
 'change-blocklink' => 'stika bliku',
 'contribslink' => 'selstika',
+'block-log-flags-nocreate' => "gau nu ka'enai zbasu lo jaspu",
 
 # Move page
-'movedto' => 'te muvdu',
 'revertmove' => 'xruti',
 
 # Namespace 8 related
 'allmessagesname' => 'cmene',
 
+# Thumbnails
+'thumbnail-more' => 'bardygau',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'ckupau pe do poi pilno',
 'tooltip-pt-mytalk' => 'pe do nu casnu ckupau',
+'tooltip-pt-preferences' => 'lo se nelci be do',
 'tooltip-pt-watchlist' => 'le liste be lo kibypapri poi do zgana',
 'tooltip-pt-mycontris' => 'le liste be le do selstika',
+'tooltip-pt-login' => "e'u do co'a pilno lo jaspu ije ku'i do na bilga",
 'tooltip-pt-logout' => "co'u se jaspu",
+'tooltip-ca-talk' => 'lo nu casnu lo se vasru be lo dei ckupau',
 'tooltip-ca-delete' => 'vimcu lo vi ckupau',
 'tooltip-ca-move' => 'ko galfi lo cmene be lo vi ckupau',
-'tooltip-ca-watch' => 'jmive le vi kibypapri le do selzgaste',
+'tooltip-ca-watch' => 'jmive lo dei ckupau lo se zgana liste pe do',
 'tooltip-search' => 'Sisku {{SITENAME}}',
-'tooltip-search-go' => "Litru tyobu abu kibypapri kansa tyy'y.buibusy satci cmene ibufy zasti",
+'tooltip-search-go' => "vitke lo ckupau poi se cmene da bi'unai fau lo nu ri zasti",
 'tooltip-search-fulltext' => "sisku do'i lei ckupau",
 'tooltip-p-logo' => 'vitke lo ralju ckupau',
 'tooltip-n-mainpage' => 'vitke lo ralju ckupau',
 'tooltip-n-mainpage-description' => 'vitke lo ralju ckupau',
+'tooltip-n-portal' => "srana lo dei proiekto je zo'e noi ka'e se zukte do vau je lo stuzi be lo plixau info",
 'tooltip-n-recentchanges' => "liste lo puzi nunstika vreji be bu'u lo vi uitke",
 'tooltip-n-randompage' => 'jarco lo cunso ckupau',
 'tooltip-n-help' => 'sidju kibypapri',
@@ -395,23 +418,22 @@ $messages = array(
 'tooltip-t-recentchangeslinked' => "lo puzi nunga'i pe lo kibypapri poi kibjorne le vi ckupau",
 'tooltip-t-upload' => 'benji lo vreji',
 'tooltip-t-specialpages' => 'liste ro steci ckupau',
+'tooltip-t-print' => 'lo prina versio be lo dei ckupau',
+'tooltip-ca-nstab-main' => 'catlu lo se vasru ckupau',
 'tooltip-ca-nstab-project' => 'cpacu lo gungunma ckupau',
-'tooltip-ca-nstab-image' => 'cpacu lo vreji ckupau',
+'tooltip-ca-nstab-image' => 'catlu lo ckupau pe lo vreji',
 'tooltip-ca-nstab-template' => 'cpacu lo morna',
 'tooltip-save' => 'lo nu stika ku ranji gau',
 'tooltip-undo' => "fatygau le nunstika gi'e jarco le stika tampapri tai lo nu troci jarco .i kakne jmina lo krinu le torvelski",
 
-# External editor support
-'edit-externally' => "stika lo vi vreji sepi'o lo na'e diklo selsampla",
+# Info page
+'pageinfo-toolboxlink' => 'lo info be lo ckupau',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => "ro co'e",
 'namespacesall' => "ro co'e",
 'monthsall' => "ro co'e",
 
-# Special:FilePath
-'filepath-page' => 'se vreji zoi',
-
 # Special:SpecialPages
 'specialpages' => 'steci ckupau',
 
index b0b0ff3..ad51c0e 100644 (file)
@@ -10,6 +10,7 @@
  * @author Geitost
  * @author Huslåke
  * @author Urhixidur
+ * @author Xabier Armendaritz
  * @author Ælsån
  */
 
@@ -43,7 +44,6 @@ $messages = array(
 'tog-enotifrevealaddr' => "Ves miin e-mail-adresse i mails ve besked ændrenger'm",
 'tog-shownumberswatching' => 'Ves åntal brugere, der åvervåger',
 'tog-fancysig' => 'Signaturer uden åtåmatisk henvesnenge',
-'tog-showjumplinks' => 'Ves tilgængelegheds-henvesnenger',
 'tog-uselivepreview' => 'Brug åtåmatisk førhåndsvesnenge (JavaScript) (eksperimentel)',
 'tog-forceeditsummary' => 'Advar, hves sammenfatnenge mangler ve gemnenge',
 'tog-watchlisthideown' => "Skjul egne ændrenger i'n åvervågnengsliste",
@@ -136,7 +136,6 @@ $messages = array(
 'qbedit' => 'Redigær',
 'qbpageoptions' => 'Endstellenger før side',
 'qbmyoptions' => 'Miine endstellenger',
-'qbspecialpages' => 'Sonst sider',
 'faq' => 'VSF',
 'faqpage' => 'Project:Vøl stellen fråĝer (VSF)',
 
@@ -194,7 +193,7 @@ $messages = array(
 'jumptonavigation' => 'navigasje',
 'jumptosearch' => 'Søĝnenge',
 
-# 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).
+# 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).
 'aboutsite' => "{{SITENAME}}'m",
 'aboutpage' => 'Project:Åm',
 'copyright' => 'Endholtet er udgævet under $1.',
@@ -223,8 +222,6 @@ $messages = array(
 'ok' => 'Er åkæ',
 'retrievedfrom' => 'Hæntet frå "$1"',
 'youhavenewmessages' => 'Du har $1 ($2).',
-'newmessageslink' => 'nye beskeder',
-'newmessagesdifflink' => 'ændrenger æ side sedste vesnenge',
 'youhavenewmessagesmulti' => 'Der er nye meddelelser til dig: $1',
 'editsection' => 'redigær',
 'editold' => 'redigær',
@@ -266,16 +263,6 @@ $messages = array(
 # General errors
 'error' => 'Fejl',
 'databaseerror' => 'Databasefejl',
-'dberrortext' => 'Der er åpstået en syntaksfejl i en databaseførespørgsel.
-Dette ken være på grund åf en ugyldeg førespørgsel,
-æller det ken betyde en fejl i\'n softwær.
-Den seneste førsøĝte databaseførespørgsel var:
-<blockquote><tt>$1</tt></blockquote>
-frå\'n funksje "<tt>$2</tt>".
-MySQL æ returnerede fejl "<tt>$3: $4</tt>".',
-'dberrortextcl' => 'Der er åpstået en syntaksfejl i en databaseførespørgsel.
-Den seneste førsøĝte databaseførespørgsel var: "$1" frå\'n funksje "$2".
-MySQL æ returnerede fejl "$3: $4".',
 'laggedslavemode' => 'Bemærk: Den veste side endholter mulegves ekke de nyeste ændrenger.',
 'readonly' => 'Æ database er skrevebeskyttet',
 'enterlockreason' => "Skrev en begrundelse før æ skrevebeskyttelse, ve samt en vurderenge åf, hvornår æ skrevebeskyttelse åphæves ig'n",
@@ -295,9 +282,6 @@ MySQL æ returnerede fejl "$3: $4".',
 'formerror' => 'Fejl: Kan ekke åfsende formulær',
 'badtitle' => 'Førkert skrevselenger',
 'badtitletext' => 'Den ønskede sides nav var ekke tilladt, tøm æller æ side er førkert henvest frå en {{SITENAME}} på et andet språĝ.',
-'wrong_wfQuery_params' => 'Ugyldeg paramæter til wfQuery()<br />
-Funksje: $1<br />
-Førespørgsel: $2',
 'viewsource' => 'Ves æ kelde',
 'viewsourcetext' => "Du ken dog se og åfskreve'n keldekode til æ side:",
 
@@ -439,7 +423,6 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre 
 'nextn' => 'nægste {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Ves ($1 {{int:pipe-separator}} $2) ($3)',
 'searchall' => 'ål',
-'powersearch' => 'Søĝ',
 
 # Preferences page
 'preferences' => 'Endstellenger',
@@ -530,8 +513,6 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre 
 # Statistics
 'statistics' => 'Sensje',
 
-'disambiguations' => 'Ertikler ve flertydige skrevselenger',
-
 'doubleredirects' => 'Dåbbelte åmstyrenger',
 
 'brokenredirects' => 'Bråken åmstyrenger',
@@ -729,8 +710,6 @@ I disse tilfælde er du nødt til at flytte æller sammenflette'n side manuelt."
 'movepage-moved' => 'Æ side \'\'\'"$1" er flyttet til "$2"\'\'\'',
 'articleexists' => 'En side ve det navn eksisterer ålrede, æller det
 navn du harst valgt er ekke gyldegt. Vælg et andet navn.',
-'talkexists' => 'Æ side blev flyttet korrekt, men den tilhørende diskusjeside ken ekke flyttes, førdi der ålrede eksisterer en ve den nye titel. Du erst nødt til at flette dem sammen manuelt.',
-'movedto' => 'flyttet til',
 'movetalk' => 'Flyt også\'n "diskusjeside", hves den eksisterer.',
 'movelogpage' => 'Flyttelog',
 'movereason' => 'Begrundelse:',
@@ -829,10 +808,6 @@ Kun endholtet åf æ liste (lenjer startende ve *) bliver brugt. Den første hen
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => "Redigær denne gøret ve'n utsende redigærstøme",
-'edit-externally-help' => 'Se [//www.mediawiki.org/wiki/Manual:External_editors setup hjælpje] før mære informasje.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'åle',
 'namespacesall' => 'åle',
@@ -849,4 +824,15 @@ Kun endholtet åf æ liste (lenjer startende ve *) bliver brugt. Den første hen
 # Special:SpecialPages
 'specialpages' => 'Sonst sider',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Engråt templater',
+'expand_templates_title' => 'Context titel, før {{SITENAME}}:',
+'expand_templates_input' => 'Input skrevselenger:',
+'expand_templates_output' => 'Resultåt',
+'expand_templates_xml_output' => 'XML output',
+'expand_templates_ok' => 'OK',
+'expand_templates_remove_comments' => 'Slet kommentår',
+'expand_templates_generate_xml' => 'Se XML parse træ',
+'expand_templates_preview' => 'Førhåndsvesnenge',
+
 );
index 07f6c36..9379f8e 100644 (file)
@@ -13,6 +13,7 @@
  * @author Helix84
  * @author Hoo
  * @author Kaganer
+ * @author Kazu89
  * @author Meursault2004
  * @author NoiX180
  * @author Pras
@@ -58,7 +59,7 @@ $messages = array(
 'tog-hidepatrolled' => 'Dhelikaké suntingan kapanto ing owah-owahan pungkasan',
 'tog-newpageshidepatrolled' => 'Dhelikaké kaca kapanto saka daptar kaca anyar',
 'tog-extendwatchlist' => 'Jembaraké daptar pangawasan kanggo nuduhaké kabèh owahan, ora mung sing paling anyar',
-'tog-usenewrc' => 'Owah-owahané paguyuban miturut kaca nèng owah-owahan anyar lan daptar panto (mbutuhaké JavaScript)',
+'tog-usenewrc' => 'Owah-owahané paguyuban miturut kaca nèng owah-owahan anyar lan daptar panto',
 'tog-numberheadings' => 'Wènèhana nomer judul secara otomatis',
 'tog-showtoolbar' => 'Tuduhna <em>toolbar</em> (batang piranti) panyuntingan (mbutuhaké JavaScript)',
 'tog-editondblclick' => 'Sunting kaca nganggo klik ping loro (mbutuhaké JavaScript)',
@@ -73,7 +74,6 @@ $messages = array(
 'tog-minordefault' => 'Tandhanana kabèh suntingan dadi suntingan cilik secara baku',
 'tog-previewontop' => 'Tuduhna pratayang sadurungé kothak sunting lan ora sawisé',
 'tog-previewonfirst' => 'Tuduhna pratayang ing suntingan kapisan',
-'tog-nocache' => 'Nonaktifaken penyinggahan kaca peramban',
 'tog-enotifwatchlistpages' => 'Kirimi kula layang èlèktronik yèn ana kaca utawa berkas nèng daptar pangawasanku sing diowah',
 'tog-enotifusertalkpages' => 'Kirimana aku layang e-mail yèn kaca dhiskusiku owah',
 'tog-enotifminoredits' => 'Kirimi kula layang èlèktronik uga yèn ana suntingan cilik saka kaca lan berkas',
@@ -94,6 +94,7 @@ $messages = array(
 'tog-showhiddencats' => 'Tuduhna kategori sing didelikaké',
 'tog-norollbackdiff' => 'Lirwaaké prabédan sawusé nglakokaké sawijining pambalikan.',
 'tog-useeditwarning' => 'Èlingaké kula yèn kula ninggalaké suntingan sing durung kasimpen',
+'tog-prefershttps' => 'Nganggo sambungan sing aman rikala mlebet log',
 
 'underline-always' => 'Tansah',
 'underline-never' => 'Ora',
@@ -157,8 +158,16 @@ $messages = array(
 'oct' => 'Okt',
 'nov' => 'Nov',
 'dec' => 'Des',
+'january-date' => 'Januari $1',
+'february-date' => 'Februari $1',
+'march-date' => 'Maret $1',
+'april-date' => 'April $1',
 'may-date' => '$1 Mèi',
+'june-date' => 'Juni $1',
+'july-date' => 'Juli $1',
+'august-date' => 'Agustus $1',
 'september-date' => '$1 Sèptèmber',
+'october-date' => 'Oktober $1',
 'november-date' => '$1 Novèmber',
 'december-date' => '$1 Dèsèmber',
 
@@ -199,7 +208,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Kaca iki',
 'qbmyoptions' => 'Opsiku',
-'qbspecialpages' => 'Kaca-kaca astaméwa',
 'faq' => 'FAQ (Pitakonan sing kerep diajokaké)',
 'faqpage' => 'Project:FAQ',
 
@@ -259,7 +267,7 @@ $messages = array(
 'articlepage' => 'nDeleng artikel',
 'talk' => 'Dhiskusi',
 'views' => 'Tampilan',
-'toolbox' => 'Kothak piranti',
+'toolbox' => 'Piranti',
 'userpage' => 'Ndeleng kaca panganggo',
 'projectpage' => 'Ndeleng kaca proyèk',
 'imagepage' => 'Deleng kaca berkas',
@@ -317,8 +325,8 @@ $1',
 'youhavenewmessages' => 'Panjenengan kagungan $1 ($2).',
 'youhavenewmessagesfromusers' => 'Sampéyan nduwé $1 saka  {{PLURAL:$3|panganggo liya|$3 panganggo}} ($2).',
 'youhavenewmessagesmanyusers' => 'Sampéyang nduwé $1 saka akèh panganggo ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|layang anyar|layang anyar}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|owahan|owahan}} pungkasan',
+'newmessageslinkplural' => '{{PLURAL:$1|layang anyar|999=layang anyar}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|owahan|999=owahan}} pungkasan',
 'youhavenewmessagesmulti' => 'Panjenengan olèh pesen-pesen anyar $1',
 'editsection' => 'sunting',
 'editold' => 'sunting',
@@ -349,7 +357,7 @@ $1',
 'nstab-main' => 'Artikel',
 'nstab-user' => 'Panganggo',
 'nstab-media' => 'Media',
-'nstab-special' => 'Istiméwa',
+'nstab-special' => 'Astamiwa',
 'nstab-project' => 'Proyek',
 'nstab-image' => 'Gambar',
 'nstab-mediawiki' => 'Pariwara',
@@ -368,6 +376,13 @@ Iki manawa uga nuduhaké anané kesalahan ing piranti alus sing dipigunakaké d
 # General errors
 'error' => 'Kasalahan',
 'databaseerror' => 'Kasalahan database',
+'databaseerror-text' => 'Ana kerusakan ing basis data (query error).
+
+Mungkin ana masalah ing software-e.',
+'databaseerror-textcl' => 'Ana kerusakan ing basis data (query error).',
+'databaseerror-query' => 'Query: $1',
+'databaseerror-function' => 'Function: $1',
+'databaseerror-error' => 'Error: $1',
 'laggedslavemode' => 'Pènget: Kaca iki mbokmenawa isiné dudu pangowahan pungkasan.',
 'readonly' => 'Database dikunci',
 'enterlockreason' => 'Lebokna alesan panguncèn, kalebu uga prakiran kapan kunci bakal dibuka',
@@ -396,12 +411,12 @@ Manawa wis dibusak déning wong liya.',
 'cannotdelete-title' => 'Ora bisa mbusak kaca "$1"',
 'delete-hook-aborted' => "Pambusakan dibatalaké déning ''hook''.
 Ora ana alesané.",
+'no-null-revision' => 'Ora isa nggawe revisi \'null\' anyar kanggo kaca "$1"',
 'badtitle' => 'Judhulé ora sah',
 'badtitletext' => 'Judhul kaca sing panjenengan ora bisa dituduhaké, kosong, utawa dadi judhul antar-basa utawa judhul antar-wiki. Iku bisa uga ana  sawijining utawa luwih aksara sing ora bisa didadèkaké judhul.',
 'perfcached' => 'Data iki mung dijupuk saka papan singgahan lan mungkin ora kaanyaran. Maksimum {{PLURAL:$1|sak asil|$1 asil}} sumadhiya nèng papan singgahan.',
 'perfcachedts' => 'Data iki mung dijupuk saka papan singgahan lan mungkin dianyari pungkasan $1. Maksimum {{PLURAL:$4|sak asil|$4 asil}} sumadhiya nèng papan singgahan.',
 'querypage-no-updates' => 'Update saka kaca iki lagi dipatèni. Data sing ana ing kéné saiki ora bisa bakal dibalèni unggah manèh.',
-'wrong_wfQuery_params' => 'Parameter salah menyang wfQuery()<br />Fungsi: $1<br />Panyuwunan: $2',
 'viewsource' => 'Tuduhna sumber',
 'viewsource-title' => 'Delok sumberé $1',
 'actionthrottled' => 'Tindakan diwatesi',
@@ -420,6 +435,9 @@ $2',
 'customcssprotected' => 'Sampéyan ora dililakaké nyunting kaca CSS iki amarga kaisi pangaturan pribadi saka panganggo liya.',
 'customjsprotected' => 'Sampéyan ora dililakaké nyunting kaca JavaScript iki amarga kaisi pangaturan pribadi saka panganggo liya.',
 'mycustomcssprotected' => 'Sampèyan ora duwé idin kanggo ngowah kaca CSS iki.',
+'mycustomjsprotected' => 'Sampèyan ora duwé idin kanggo ngowah kaca JavaScript iki.',
+'myprivateinfoprotected' => 'Sampèyan ora duwé idin kanggo ngowah informasi privat sampèyan.',
+'mypreferencesprotected' => 'Sampèyan ora duwé idin kanggo ngowah preferensi sampèyan.',
 'ns-specialprotected' => 'Kaca ing bilik nama astaméwa utawa kusus, ora bisa disunting.',
 'titleprotected' => "Irah-irahan iki direksa ora olèh digawé déning [[User:$1|$1]].
 Alesané yaiku ''$2''.",
@@ -429,7 +447,8 @@ Pangurus sing ngopèni kuwi ngawedharaké: "$3".',
 'invalidtitle-knownnamespace' => 'Irah-irahan ora sah mawa bilik jeneng "$2" lan tèks "$3"',
 'invalidtitle-unknownnamespace' => 'Judhul ora sah mawa angka $1 lan tèks "$2" bilik jeneng sing ora dingertèni',
 'exception-nologin' => 'Durung mlebu log',
-'exception-nologin-text' => 'Kaca utawa kelakon iki mbutuhaké mlebu log nèng wiki iki dhisik.',
+'exception-nologin-text' => 'Tulung [[Special:Userlogin|mlebu log]] dhisik kanggo ngakses kaca utawa kelakon iki.',
+'exception-nologin-text-manual' => 'Tulung $1 kanggo ngakses kaca utawa kelakon iki.',
 
 # Virus scanner
 'virus-badscanner' => "Kasalahan konfigurasi: pamindai virus ora dikenal: ''$1''",
@@ -439,17 +458,23 @@ Pangurus sing ngopèni kuwi ngawedharaké: "$3".',
 # Login and logout pages
 'logouttext' => "'''Sampéyan wis metu log'''
 
-Sampéyan isa nganggo {{SITENAME}} sacara anonim, utawa isa <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é kayata sampéyan isih mlebu log, kuwi bisa ilang yèn sampéyan ngresiki ''cache'' pramban sampéyan.",
 'welcomeuser' => 'Sugeng Rawuh, $1!',
 'welcomecreation-msg' => 'Akun panjenengan wis kacipta. Aja lali nata konfigurasi [[Special:Preferences|preferensi {{SITENAME}}]] panjenengan.',
 'yourname' => 'Asma pangangeman',
 'userlogin-yourname' => 'Jeneng panganggo',
 'userlogin-yourname-ph' => 'Lebokaké jenengné panganggo',
+'createacct-another-username-ph' => 'Lebokna jeneng panganggo:',
 'yourpassword' => 'Tembung sandhi:',
+'userlogin-yourpassword' => 'Tembung sandhi',
+'userlogin-yourpassword-ph' => 'Lebokna tembung sandhi',
+'createacct-yourpassword-ph' => 'Lebokna tembung sandhi',
 'yourpasswordagain' => 'Balènana tembung sandhi',
+'createacct-yourpasswordagain' => 'Konfirmasi tembung sandhi',
+'createacct-yourpasswordagain-ph' => 'Lebokna tembung sandhi maneh',
 'remembermypassword' => 'Émut tembung sandi kula (salebeting $1 {{PLURAL:$1|dinten|dinten}})',
+'userlogin-remembermypassword' => 'Gawe supaya aku tetep mlebet log terus',
+'userlogin-signwithsecure' => 'Nganggo koneksi aman',
 'yourdomainname' => 'Dhomain panjenengan',
 'password-change-forbidden' => 'Sampéyan ora bisa ngganti tembung sandhi nèng wiki iki.',
 'externaldberror' => 'Ana kasalahan otèntikasi basis dhata èksternal utawa panjenengan ora pareng nglakoni pemutakhiran marang akun èksternal panjenengan.',
@@ -461,18 +486,44 @@ Cathet yèn sapérangan kaca mungkin isih nampilaké kayata sampéyan isih mlebu
 'logout' => 'Oncat',
 'userlogout' => 'Metu log',
 'notloggedin' => 'Durung mlebu log',
+'userlogin-noaccount' => 'Durung kagungan akun?',
+'userlogin-joinproject' => 'Gabung {{SITENAME}}',
 'nologin' => "Durung kagungan asma panganggo? '''$1'''.",
 'nologinlink' => 'Ndaftaraké akun anyar',
 'createaccount' => 'Nggawé akun anyar',
 'gotaccount' => "Wis kagungan akun? '''$1'''.",
 'gotaccountlink' => 'Mlebu',
 'userlogin-resetlink' => 'Lali rincian mlebu log Sampéyan?',
+'userlogin-resetpassword-link' => 'Sampéyan kélangan tembung sandhi?',
+'helplogin-url' => 'Help:Mlebet log',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Pitulung kangge mlebet log]]',
+'userlogin-loggedin' => 'Sampeyan sampun mlebet log dadi {{GENDER:$1|$1}}.
+Gunakna formulir ing ngisor iki kanggo mlebet log dadi panganggo liyane.',
+'userlogin-createanother' => 'Gawé akun anyar',
+'createacct-join' => 'Lebokna informasi sampeyan ing ngisor iki.',
+'createacct-another-join' => 'Lebokna informasi akun anyar ing ngisor iki.',
+'createacct-emailrequired' => 'Alamat layang èlèktronik',
+'createacct-emailoptional' => 'Alamat layang èlèktronik (ora kudu)',
+'createacct-email-ph' => 'Lebokna alamat layang èlèktronik sampeyan',
+'createacct-another-email-ph' => 'Lebokna alamat layang èlèktronik',
 'createaccountmail' => 'Nganggoa sandi sauntara sembarang lan kirimna liwat layang e-mail ing ngisor iki',
+'createacct-realname' => 'Jeneng asli (ora kudu)',
 'createaccountreason' => 'Alesan:',
+'createacct-reason' => 'Alesan',
+'createacct-reason-ph' => 'Kenapa sampeyan nggawe akun liyane',
+'createacct-captcha' => 'Periksa kamanan',
+'createacct-imgcaptcha-ph' => 'Lebokna tulisan ing dhuwur',
+'createacct-submit' => 'Gawé akun',
+'createacct-another-submit' => 'Gawé akun anyar',
+'createacct-benefit-heading' => '{{SITENAME}} digawe karo wong-wong kaya sampeyan.',
+'createacct-benefit-body1' => '{{PLURAL:$1|owahan|owahan}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|kaca|kaca}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|kontributor|kontributor}} keri dhewe',
 'badretype' => 'Sandhi panjenengan ora gathuk',
 'userexists' => 'Jeneng panganggo sing dilebokaké lagi dianggo.
 Mangga pilih jeneng liya.',
 'loginerror' => 'Kasalahan mlebu log',
+'createacct-error' => 'Ora isa nggawe akun',
 'createaccounterror' => 'Ora bisa nyipta akun: $1',
 'nocookiesnew' => "Rékening utawa akun panganggo panjenengan wis digawé, nanging panjenengan durung mlebu log. {{SITENAME}} nggunakaké ''cookies'' kanggo  log panganggo. ''Cookies'' ing panjlajah wèb panjengengan dipatèni. Mangga diaktifaké lan mlebu log manèh mawa jeneng panganggo lan tembung sandhi panjenengan.",
 'nocookieslogin' => "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
@@ -501,31 +552,38 @@ Yèn wong liya sing nglakoni panyuwunan iki, utawa panjenengan éling tembung sa
 'noemailcreate' => 'Panjenengan kudu maringi alamat e-mail sing absah',
 'passwordsent' => 'Tembung sandhi anyar wis dikirim menyang alamat layang e-mail panjenengan sing wis didaftar kanggo "$1". Mangga mlebu log manèh sawisé nampa e-mail iku.',
 'blocked-mailpassword' => "Alamat IP panjenengan diblokir saka panyuntingan, mulané panjenengan ora olèh nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
-'eauthentsent' => 'Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik panjenengan. Panjenengan kudu nuruti instruksi sajroning layang iku kanggo ndhedhes yèn alamat iku bener kagungané panjenengan. {{SITENAME}} ora bakal ngaktifaké fitur layang élèktronik yèn langkah iki durung dilakoni.',
+'eauthentsent' => 'Sawijining layang élèktronik (e-mail) kanggo ndhedhes (konfirmasi) wis dikirim menyang alamat layang élèktronik sampeyan. 
+
+Sadhurunge layang élèktronik liyane dikirim menyang akun kuwi, sampeyan kudu melu parentah ing layang kuwi, kanggo mastikne yen alamat layang kuwi bener-bener dhuweke sampeyan.',
 'throttled-mailpassword' => 'Layang kanggo mbalèkaké tembung sandhi wis dikirim sasuwené ing {{PLURAL:$1|jam|$1 jam}}.
 Kanggo nyegah ananing tumindhak culika, namung sak layang kanggo mbalèkaké tembung sandhi sing bakal dikirim sasuwéné ing {{PLURAL:$1|jam|$1 jam}}.',
 'mailerror' => 'Kasalahan ing ngirimaké layang e-mail: $1',
 'acct_creation_throttle_hit' => 'Tamu ing wiki iki kanthi alamat IP sing padha karo panjenengan wis gawé {{PLURAL:$1|1 akun|$1 akun}} ing sadina pungkasan, nganti cacah maksimum sing diidinaké.
 Amarga saka kuwi., tamu kanthi alamat IP iki ora bisa gawé akun manèh kanggo sauntara iki.',
-'emailauthenticated' => 'Alamat layang élèktronik (e-mail) panjenengan wis didhedhes (dikonfirmasi) ing $3, $2.',
-'emailnotauthenticated' => 'Alamat layang élèktronik panjenengan durung didhedhes (dikonfirmasi). Sadurungé didhedhes, panjenengan ora bisa nganggo fitur layang élèktronik (e-mail).',
+'emailauthenticated' => 'Alamat layang élèktronik (e-mail) panjenengan wis didhedhes (dikonfirmasi) ing tanggal $2, jam $3.',
+'emailnotauthenticated' => 'Alamat layang élèktronik panjenengan durung didhedhes (dikonfirmasi). 
+
+Sadurungé didhedhes, panjenengan ora bisa nganggo fitur layang élèktronik (e-mail) ing ngisor iki.',
 'noemailprefs' => 'Panjenengan kudu milih alamat e-mail supaya bisa nganggo fitur iki.',
 'emailconfirmlink' => 'Ndhedhes (konfirmasi) alamat e-mail panjenengan',
 'invalidemailaddress' => 'Alamat e-mail iki ora bisa ditampa amarga formaté ora bener. Tulung lebokna alamat mawa format sing bener utawa kosongaké waé isèn kasebut.',
 'cannotchangeemail' => 'Alamat layang èlèktronik akun ora bisa diganti nèng wiki iki.',
 'emaildisabled' => 'Situs iki ora bisa ngirim layang èlèktronik.',
 'accountcreated' => 'Akun wis kacipta.',
-'accountcreatedtext' => 'Akun panganggo kanggo $1 wis digawé.',
+'accountcreatedtext' => 'Akun panganggo kanggo  [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|wicara]]) wis digawé.',
 'createaccount-title' => 'Gawé rékening kanggo {{SITENAME}}',
 'createaccount-text' => 'Ana wong sing nggawé sawijining akun utawa rékening kanggo alamat e-mail panjenengan ing {{SITENAME}} ($4) mawa jeneng "$2" lan tembung sandi "$3". Panjenengan disaranaké kanggo mlebu log lan ngganti tembung sandi panjenengan saiki.
 
 Panjenengan bisa nglirwakaké pesen iki yèn akun utawa rékening iki digawé déné sawijining kaluputan.',
 'usernamehasherror' => 'Jeneng panganggo ora bisa ngandhut tandha pager',
 'login-throttled' => 'Panjenengan wis kakèhan njajal mlebu log.
-Tulung nunggu dhisik sadurungé njajal manèh.',
+Tulung nunggu dhisik $1 sadurungé njajal manèh.',
 'login-abort-generic' => 'Sampéyan ora suksès mlebu log - Dibatalaké',
 'loginlanguagelabel' => 'Basa: $1',
 'suspicious-userlogout' => 'Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.',
+'createacct-another-realname-tip' => 'Jeneng asli ora kudu dilebokake.
+
+Yen sampeyan milih nglebokake jeneng asli, jeneng kuwi bakal dinggo ngwenehi atribusi kanggo karya-karyane.',
 
 # Email sending
 'php-mail-error-unknown' => 'Kasalahan ora dingertèni nèng piguna mail() PHP.',
@@ -533,7 +591,7 @@ Tulung nunggu dhisik sadurungé njajal manèh.',
 'user-mail-no-body' => 'Nyoba ngirim layang e-mail, tapi isine kosong.',
 
 # Change password dialog
-'resetpass' => 'Ganti tembung sandi',
+'changepassword' => 'Ganti tembung sandi',
 'resetpass_announce' => 'Panjenengan wis mlebu log mawa kodhe sementara sing dikirim mawa e-mail. Menawa kersa nglanjutaké, panjenengan kudu milih tembung sandhi anyar ing kéné:',
 'resetpass_text' => '<!-- Tambahaké teks ing kéné -->',
 'resetpass_header' => 'Ganti tembung sandi akun',
@@ -541,7 +599,7 @@ Tulung nunggu dhisik sadurungé njajal manèh.',
 'newpassword' => 'Tembung sandi anyar:',
 'retypenew' => 'Ketik ulang tembung sandi anyar:',
 'resetpass_submit' => 'Nata tembung sandhi lan mlebu log',
-'changepassword-success' => 'Tembung sandhi panjenengan wis suksès diowahi! Saiki mrosès mlebu log panjenengan...',
+'changepassword-success' => 'Tembung sandhi panjenengan wis suksès diowahi!',
 'resetpass_forbidden' => 'Tembung sandhi ora bisa diganti',
 'resetpass-no-info' => 'Panjenengan kudu mlebu log kanggo ngaksès kaca iki sacara langsung.',
 'resetpass-submit-loggedin' => 'Ganti tembung sandi',
@@ -553,8 +611,11 @@ Panjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi saunta
 
 # Special:PasswordReset
 'passwordreset' => 'Balèni setèl tembung sandhi',
+'passwordreset-text-one' => 'Lengkapana formulir iki kanggo nampa tembung sandhi sementara lewat layang elektronik.',
+'passwordreset-text-many' => '{{PLURAL:$1|Isinen salah sijine kotak ing ngisor iki kanggo nampa tembung sandhi sementara lewat layang elektronik.}}',
 'passwordreset-legend' => 'Balèni setèl tembung sandhi',
 'passwordreset-disabled' => 'Piranti kanggo mbalèni nyetèl tembung sandhi dipatèni nèng wiki iki.',
+'passwordreset-emaildisabled' => 'Fitur layang elektronik wis dipateni ing wiki iki.',
 'passwordreset-username' => 'Jeneng panganggo:',
 'passwordreset-domain' => 'Domain:',
 'passwordreset-capture' => 'Delok layang èlèktronik sing diasilaké?',
@@ -577,7 +638,7 @@ Sampéyan kudu mlebu log lan milih siji tembung sandhi anyar saiki. Yèn wong li
 Tembung sandhi sawetara: $2',
 'passwordreset-emailsent' => 'Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim.',
 'passwordreset-emailsent-capture' => 'Layang èlèktronik kanggo mbalèkaké tembung sandhi wis dikirim, bisa didelok ngisor iki.',
-'passwordreset-emailerror-capture' => 'Layang èlèktronik kanggo mbalèkaké tembung sandhi wis ditokaké, bisa didelok ngisor iki, nanging gagal nalika dikirim menyang panganggoné: $1',
+'passwordreset-emailerror-capture' => 'Layang èlèktronik pangèling tembung sandhi wis digawe, yaiku sing ditampilaké nèng ngisor iki, nanging ora kasil dikirim ing {{GENDER:$2|panganggo}}: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Ganti alamat layang èlèktronik',
@@ -591,6 +652,19 @@ Tembung sandhi sawetara: $2',
 'changeemail-submit' => 'Ganti layang èlèktronik',
 'changeemail-cancel' => 'Batal',
 
+# Special:ResetTokens
+'resettokens' => 'Reset token',
+'resettokens-text' => 'Anda dapat me-reset Token yang memungkinkan akses ke data pribadi tertentu yang terkait dengan akun Anda di sini.
+
+Anda harus melakukannya jika Anda secara tidak sengaja berbagi dengan seseorang atau jika akun Anda telah disusupi.',
+'resettokens-no-tokens' => 'Ora ana token sing bisa direset.',
+'resettokens-legend' => 'Reset token',
+'resettokens-tokens' => 'Token:',
+'resettokens-token-label' => '$1 (nilai saiki: $2)',
+'resettokens-watchlist-token' => 'Token kangge sindikasi web (Atom/RSS) saking [[Special:Watchlist|pangowahan ing daptar pangawasan sampeyan]]',
+'resettokens-done' => 'Reset token.',
+'resettokens-resetbutton' => 'Reset token sing dipilih',
+
 # Edit page toolbar
 'bold_sample' => 'Tèks iki bakal dicithak kandel',
 'bold_tip' => 'Cithak kandel',
@@ -775,12 +849,15 @@ Tanpa ana katrangan.',
 Katoné kaca iki wis dibusak.',
 'edit-conflict' => 'Konflik panyuntingan.',
 'edit-no-change' => 'Suntingan panjenengan dilirwakaké amerga panjenengan ora nglakoni pangowahan apa-apa ing tèks.',
+'postedit-confirmation' => 'Pangowahan sampéyan wis disimpen!',
 'edit-already-exists' => 'Ora bisa nggawé kaca anyar.
 Amerga wis ana.',
 'defaultmessagetext' => 'Tèks layang gawan',
 'content-failed-to-parse' => 'Gagal menjabarkan konten $2 untuk model $1: $3',
 'invalid-content-data' => 'Data konten ora sah',
 'content-not-allowed-here' => 'Konten "$1" ora oleh ing kaca [[$2]]',
+'editwarning-warning' => 'Yen sampeyan ninggalake kaca niki, pangowahan sampeyan bakal ilang.
+Yen sampeyan wis mlebet log, sampeyan saged mateni peringatan niki lewat preferensi "Panyuntingan" sampeyan.',
 
 # Content models
 'content-model-wikitext' => 'teks wiki',
@@ -814,12 +891,16 @@ Sawetara cithakan bakal dilirwakaké.',
 'undo-failure' => 'Suntingan iki ora bisa dibatalakén amerga ana konflik panyuntingan antara.',
 'undo-norev' => 'Suntingan iki ora bisa dibatalaké amerga ora ana utawa wis dibusak.',
 'undo-summary' => '←Mbatalaké revisi $1 déning [[Special:Contributions/$2|$2]] ([[User talk:$2|Dhiskusi]])',
+'undo-summary-username-hidden' => 'Batalna revisi $1 saking panganggo kang didhelikake',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Akun ora bisa digawé',
 'cantcreateaccount-text' => "Saka alamat IP iki ('''$1''') ora diparengaké nggawé akun utawa rékening. Sing mblokir utawa ora marengaké iku [[User:$3|$3]].
 
 Alesané miturut $3 yaiku ''$2''",
+'cantcreateaccount-range-text' => 'Nggawe akun saking alamat IP "$1", sing termasuk IP sampeyan (\'\'\'$4\'\'\'), sampun diblokir kaliyan [[User:$3|$3]].
+
+Alesan pamblokiran yaiku "$2"',
 
 # History pages
 'viewpagelogs' => 'Mirsani log kaca iki',
@@ -885,10 +966,6 @@ Sampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{full
 'revisiondelete' => 'Busak/batal busak revisi',
 'revdelete-nooldid-title' => 'Target revisi ora ditemokaké',
 'revdelete-nooldid-text' => 'Panjenengan durung mènèhi target revisi kanggo nglakoni fungsi iki.',
-'revdelete-nologtype-title' => 'Tipe log ora diwènèhaké',
-'revdelete-nologtype-text' => 'Panjenengan ora mènèhi tipe log kanggo netepaké tindakan iki.',
-'revdelete-nologid-title' => 'Èntri log ora absah.',
-'revdelete-nologid-text' => 'Panjenengan manawa ora nyebutaké sawijining log prastawa targèt kanggo nglakokaké fungsi iki utawa èntri sing dimaksud ora ana.',
 'revdelete-no-file' => 'Berkas sing dituju ora ana.',
 'revdelete-show-file-confirm' => 'Apa panjenengan yakin arep mirsani révisi sing wis kabusak saka berkas "<nowiki>$1</nowiki>" ing $2, jam $3?',
 'revdelete-show-file-submit' => 'Ya',
@@ -898,18 +975,19 @@ Sampéyan isih bisa ndelok prabédan iki; rincian bisa ditemokaké nèng [{{full
 Pangurus {{SITENAME}} liyané bakal tetep bisa ngaksès isi sing kadhelikaké iku lan bisa mbatalaké pambusakan ngliwati antarmuka sing padha, kajaba ana pawatesan liya saka operator situs.",
 'revdelete-confirm' => 'Mangga pesthèkaké yèn Sampéyan pancèn kudu nglakoni iki, yèn Sampéyan ngerti akibaté, lan yèn Sampéyan ngakoni iki cocok karo [[{{MediaWiki:Policy-url}}|kawicakan]].',
 'revdelete-suppress-text' => "Pandhelikan révisi '''mung''' bisa dipigunakaké kanggo kasus ing ngisor:
+* Informasi sing kagolong pitnah
 * Informasi pribadi sing kurang pantes
-*: ''alamat omah lan nomer telepon, nomer kartu idhèntitas, lan sapanunggalané.''",
+*: ''alamat omah lan nomer telepon, nomer kartu idhèntitas, lsp..''",
 'revdelete-legend' => 'Atur watesan:',
-'revdelete-hide-text' => 'Dhelikna tèks revisi',
+'revdelete-hide-text' => 'Tèks revisi',
 'revdelete-hide-image' => 'Dhelikna isi berkas',
 'revdelete-hide-name' => 'Dhelikna tindhakan lan targèt',
-'revdelete-hide-comment' => 'Tudhuhna/dhelikan ringkesan suntingan',
-'revdelete-hide-user' => 'Dhelikan jeneng panganggo/IP penyunting',
+'revdelete-hide-comment' => 'Ringkesan suntingan',
+'revdelete-hide-user' => 'Jeneng panganggo/alamat IP',
 'revdelete-hide-restricted' => 'Uga dhelikna data saka pangurus lan panganggo liyané',
 'revdelete-radio-same' => '(Aja diowahi)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Ora',
+'revdelete-radio-set' => 'Kadhelikake',
+'revdelete-radio-unset' => 'Kethok',
 'revdelete-suppress' => 'Uga dhelikan saka pangurus',
 'revdelete-unsuppress' => 'Busak watesan ing revisi sing dibalèkaké',
 'revdelete-log' => 'Alesan:',
@@ -921,8 +999,6 @@ $1",
 'logdelete-failure' => "'''Aturan pandhelikan ora bisa disèt:'''
 $1",
 'revdel-restore' => 'Ngowahi visiblitas (pangatonan)',
-'revdel-restore-deleted' => 'revisi kabusak',
-'revdel-restore-visible' => 'revisi kétok',
 'pagehist' => 'Sajarah kaca',
 'deletedhist' => 'Sajarah sing dibusak',
 'revdelete-hide-current' => 'Gagal ndhelikaké révisi tanggal $2, $1: iki arupa révisi paling anyar.
@@ -990,6 +1066,7 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
 'compareselectedversions' => 'Bandhingna vèrsi kapilih',
 'showhideselectedversions' => 'Tampilaké/dhelikaké révisi kapilih',
 'editundo' => 'batalna',
+'diff-empty' => '(Ora ana bedane)',
 'diff-multi' => '({{PLURAL:$1Siji rèvisi sedhengan|$1 rèvisi sedhengan}} déning {{PLURAL:$2|sak panganggo|$2 panganggo}} ora dituduhaké)',
 'diff-multi-manyusers' => '({{PLURAL:$1Siji rèvisi sedhengan|$1 rèvisi sedhengan}} déning luwih saka $2 {{PLURAL:$2|panganggo|panganggo}} ora dituduhaké)',
 'difference-missing-revision' => '{{PLURAL:$2|Sak pambenahan|$2 pambenahan}} saka prabédan iki ($1) {{PLURAL:$2|ora ditemokaké|ora ditemokaké}}.
@@ -1000,12 +1077,8 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => 'Kasil panggolèkan',
 'searchresults-title' => 'Kasil panggolèkan saka "$1"',
-'searchresulttext' => 'Kanggo informasi sabanjuré ngenani panggolèkan ing {{SITENAME}}, mangga mirsani [[{{MediaWiki:Helppage}}|kaca pitulung]].',
-'searchsubtitle' => 'Panjenengan nggolèki \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kabèh kaca sing diwiwiti kanthi "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kabèh kaca sing kagandhèng karo/menyang "$1"]])',
-'searchsubtitleinvalid' => "Panjenengan nggolèki '''$1'''",
 'toomanymatches' => "Olèhé panjenengan golèk ngasilaké kakèhan pituwas, mangga nglebokaké ''query'' liyané",
 'titlematches' => 'Irah-irahan artikel sing cocog',
-'notitlematches' => 'Ora ana irah-irahan artikel sing cocog',
 'textmatches' => 'Tèks artikel sing cocog',
 'notextmatches' => 'Ora ana tèks kaca sing cocog',
 'prevn' => '{{PLURAL:$1|$1}} sadurungé',
@@ -1014,10 +1087,8 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => '$1 {{PLURAL:$1|asil|asil}} sabanjuré',
 'shown-title' => 'Tampilaké $1 {{PLURAL:$1|asil|asil}} saben kaca',
 'viewprevnext' => 'Deleng ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilihan panggolèkan',
 'searchmenu-exists' => "'''Ana kaca kanthi jeneng \"[[\$1]]\" ing wiki iki'''",
 'searchmenu-new' => "'''Gawé kaca \"[[:\$1]]\" ing wiki iki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tlusuri kaca-kaca kanthi tembung-wiwitan iki]]',
 'searchprofile-articles' => 'Kaca isi',
 'searchprofile-project' => 'Kaca pitulung lan proyèk',
 'searchprofile-images' => 'Multimedia',
@@ -1038,31 +1109,28 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-default' => 'Pituwas $1:',
 'search-interwiki-more' => '(luwih akèh)',
 'search-relatedarticle' => 'Kagandhèng',
-'mwsuggest-disable' => 'Tutup saka panemu-panemu ing golèk',
 'searcheverything-enable' => 'Golèki ing kabèh bilik-jeneng',
 'searchrelated' => 'kagandhèng',
 'searchall' => 'kabèh',
 'showingresults' => "Ing ngisor iki dituduhaké {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, wiwitané saking #<strong>$2</strong>.",
 'showingresultsnum' => "Ing ngisor iki dituduhaké {{PLURAL:$3|'''1''' kasil|'''$3''' kasil}}, wiwitané saka #<strong>$2</strong>.",
 'showingresultsheader' => "{{PLURAL:$5|Asil '''$1''' saka '''$3'''|Asil '''$1 - $2''' saka '''$3'''}} kanggo '''$4'''",
-'nonefound' => "'''Cathetan''': Namung sawetara bilik nama sing digolèki sacara baku. Coba seselana mawa awalan ''all:'' kanggo golèk kabèh isi (kalebu kaca dhiskusi, cithakan lsp.), utawa nganggo bilik nama sing dipèngèni minangka préfiks.",
 'search-nonefound' => "Ora ana kasil sing cocog karo pitakonan (''query'').",
-'powersearch' => 'Golèk (ing tataran sing luwih dhuwur/maju)',
 'powersearch-legend' => "Panggolèkan sabanjuré (''advance search'')",
 'powersearch-ns' => 'Panggolèkan ing ruang jeneng:',
 'powersearch-redir' => 'Pratélan pangalihan',
-'powersearch-field' => 'Nggolèki',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Kabèh',
 'powersearch-togglenone' => 'Ora ana',
 'search-external' => 'Panggolèkan èkstèrnal',
 'searchdisabled' => 'Sawetara wektu iki panjenengan ora bisa nggolèk mawa fungsi golèk {{SITENAME}}. Kanggo saiki mangga panjenengan bisa golèk nganggo Google. Nanging isi indèks Google kanggo {{SITENAME}} bisa waé lawas lan durung dianyari.',
+'search-error' => 'Ana kasalahan wektu nggoleki: $1',
 
 # Preferences page
 'preferences' => 'Preferensi (pilihan)',
 'mypreferences' => 'Préferènsi',
 'prefs-edits' => 'Gunggungé suntingan:',
-'changepassword' => 'Ganti tembung sandi',
+'prefsnologintext2' => 'Tulung $1 kanggo ngganti preferensi sampeyan.',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratilik',
 'datedefault' => 'Ora ana préferènsi',
@@ -1085,25 +1153,25 @@ Rinciané bisa ditemokaké nèng [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'prefs-email' => 'Opsi layang-e',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpen',
-'resetprefs' => 'Resikana owah-owahan sing ora disimpen',
 'restoreprefs' => 'Balèkna kabèh setèlan baku',
 'prefs-editing' => 'Panyuntingan',
 'rows' => 'Larikan:',
 'columns' => 'Kolom:',
 'searchresultshead' => 'Panggolèkan',
-'resultsperpage' => 'Cacahing klik saben kaca:',
 'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a>:',
 'stub-threshold-disabled' => 'Dipatèni',
 'recentchangesdays' => 'Cacahé dina sing dituduhaké ing owah-owahan pungkasan:',
 'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dina|dina}})',
 'recentchangescount' => 'Cacahé suntingan sing ditampilaké:',
 'prefs-help-recentchangescount' => 'Iki klebu owah-owahan pungkasan, kaca sajarah, lan log.',
+'prefs-help-watchlist-token2' => 'Ini adalah kunci rahasia (token) ke web feed dari daftar pantauan Anda.
+Siapa saja yang tahu akan dapat melihat daftar pantauan Anda, jadi jangan dibagikan.
+[[Special:ResetTokens|Klik di sini jika Anda perlu menyetel ulang]].',
 'savedprefs' => 'Préferènsi Panjenengan wis disimpen',
 'timezonelegend' => 'Zona wektu:',
 'localtime' => 'Wektu saenggon:',
 'timezoneuseserverdefault' => 'Anggo gawan wiki ($1)',
 'timezoneuseoffset' => 'Liya (jelasna prabédan)',
-'timezoneoffset' => 'Prabédan¹:',
 'servertime' => 'Wektu server:',
 'guesstimezone' => 'Isinen saka panjlajah wèb',
 'timezoneregion-africa' => 'Afrika',
@@ -1160,6 +1228,8 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'prefs-dateformat' => 'Format tanggal',
 'prefs-timeoffset' => 'Format wektu',
 'prefs-advancedediting' => 'Pilihan sabanjuré',
+'prefs-editor' => 'Panyunting',
+'prefs-preview' => 'Pratayang',
 'prefs-advancedrc' => 'Opsi lanjutan',
 'prefs-advancedrendering' => 'Opsi lanjutan',
 'prefs-advancedsearchoptions' => 'Opsi lanjutan',
@@ -1167,7 +1237,10 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'prefs-displayrc' => 'Opsi tampilan',
 'prefs-displaysearchoptions' => 'Opsi tampilan',
 'prefs-displaywatchlist' => 'Opsi tampilan',
+'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Prabédan',
+'prefs-help-prefershttps' => 'Preferensi niki bakal diaktifne yen sampeyan mlebet log sabanjure.',
+'prefs-tabs-navigation-hint' => 'Tip: Sampeyan isa nganggo dapat menggunakan tombol panah kiwa lan tengen kanggo navigasi tab-tab ing daftar tab.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Alamat layang èlèktronik kayané sah',
@@ -1194,6 +1267,8 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'userrights-notallowed' => 'Sampéyan ora nduwé idin kanggo nambah utawa nyuda hak-hak panganggo.',
 'userrights-changeable-col' => 'Grup sing bisa panjenengan owahi',
 'userrights-unchangeable-col' => 'Grup sing ora bisa diowahi panjenengan',
+'userrights-conflict' => 'Konflik pangowahan hak-hak panganggo! Tulung ditinjau maneh lan konfirmasi Pangowahan sampeyan.',
+'userrights-removed-self' => 'Sampeyan wis berhasil ngilangake hak-hak sampeyan. Nuli, sampeyan ora isa ngakses kaca niki malih.',
 
 # Groups
 'group' => 'Kelompok:',
@@ -1260,10 +1335,18 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'right-unblockself' => 'Bukak blokirané dhéwéké',
 'right-protect' => 'Ganti undhaking pangreksan lan owah kaca-kaca sing direksa',
 'right-editprotected' => 'Owah kaca-kaca sing direksa (tanpa pangreksan runtun)',
+'right-editsemiprotected' => 'Owah kaca-kaca sing direksa dadi "{{int:protect-level-autoconfirmed}}"',
 'right-editinterface' => 'Sunting interface (antarmuka) panganggo',
 'right-editusercssjs' => 'Sunting berkas-berkas CSS lan JS panganggo liya',
 'right-editusercss' => 'Sunting berkas-berkas CSS panganggo liya',
 'right-edituserjs' => 'Sunting berkas-berkas JS panganggo liya',
+'right-editmyusercss' => 'Owahi berkas CSS panganggo sampeyan',
+'right-editmyuserjs' => 'Owahi berkas JavaScript panganggo sampeyan',
+'right-viewmywatchlist' => 'Dheleng daftar pangawasan sampeyan',
+'right-editmywatchlist' => 'Owahi daftar pangawasan sampeyan. Cathetan: ana cara liyane kanggo nambahi kaca menyang daftar, sanadyan ora duwe hak iki.',
+'right-viewmyprivateinfo' => 'Dheleng data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)',
+'right-editmyprivateinfo' => 'Owahi data pribadi sampeyan (kayata alamat layang elektronik, jeneng asli)',
+'right-editmyoptions' => 'Owahi preferensi sampeyan',
 'right-rollback' => 'Sacara gelis mbalèkaké panganggo pungkasan sing nyunting kaca tartamtu',
 'right-markbotedits' => 'Tandhanana suntingan pambalèkan minangka suntingan bot',
 'right-noratelimit' => 'Ora dipengaruhi déning wates cacahing suntingan.',
@@ -1325,24 +1408,33 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'action-userrights-interwiki' => 'ngowahi hak aksès saka panganggo ing wiki liya',
 'action-siteadmin' => 'ngunci utawa mbukak kunci basis data',
 'action-sendemail' => 'kirim layang èlèktronik',
+'action-editmywatchlist' => 'owahi daftar pantauan sampeyan',
+'action-viewmywatchlist' => 'dheleng daftar pantauan sampeyan',
+'action-viewmyprivateinfo' => 'dheleng informasi pribadi sampeyan',
+'action-editmyprivateinfo' => 'owahi informasi pribadi sampeyan',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|pangowahan|owah-owahan}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|saka keri dhewe mrene}}',
+'enhancedrc-history' => 'sajarah',
 'recentchanges' => 'Owah-owahan',
 'recentchanges-legend' => 'Pilihan owah-owahan pungkasan',
 'recentchanges-summary' => 'Runutna owah-owahan pungkasan ing wiki iki ing kaca iki.',
+'recentchanges-noresult' => 'Ora ana pangowahan ing periode sing diwiwiti kriteria iki.',
 'recentchanges-feed-description' => "Urutna owah-owahan anyar ing wiki ing ''feed'' iki.",
 'recentchanges-label-newpage' => 'Suntingan iki gawé kaca anyar',
 'recentchanges-label-minor' => 'Iki suntingan sithik',
 'recentchanges-label-bot' => 'Suntingan iki diayahi déning bot',
 'recentchanges-label-unpatrolled' => 'Suntingan iki durung dipatroli',
-'recentchanges-legend-newpage' => '$1 - kaca anyar',
-'rcnote' => 'Ing ngisor iki kapacak {{PLURAL:$1|pangowahan|owah-owahan}} pungkasan ing  <strong>$2</strong> dina pungkasan ing $5, $4.',
+'recentchanges-label-plusminus' => 'Gedhene kaca wis diowahi segede niki.',
+'recentchanges-legend-heading' => "'''Katrangan:'''",
+'recentchanges-legend-newpage' => '(dhelengen uga: [[Special:NewPages|daftar kaca anyar]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Ing ngisor iki owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).',
 'rclistfrom' => 'Saiki nuduhaké owah-owahan wiwit tanggal $1',
 'rcshowhideminor' => '$1 suntingan sithik',
 'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 panganggo mlebu log',
+'rcshowhideliu' => '$1 panganggo sing wis ndaptar',
 'rcshowhideanons' => '$1 panganggo anonim',
 'rcshowhidepatr' => '$1 suntingan sing dipatroli',
 'rcshowhidemine' => '$1 suntinganku',
@@ -1364,9 +1456,9 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'rc-old-title' => 'wigatiné digawé minangka "$1"',
 
 # Recent changes linked
-'recentchangeslinked' => 'Pranala Pilihan',
-'recentchangeslinked-feed' => 'Pranala Pilihan',
-'recentchangeslinked-toolbox' => 'Pranala Pilihan',
+'recentchangeslinked' => 'Pangowahan sing terkait',
+'recentchangeslinked-feed' => 'Pangowahan sing terkait',
+'recentchangeslinked-toolbox' => 'Pangowahan sing terkait',
 'recentchangeslinked-title' => 'Owah-owahan sing ana gandhèngané karo "$1"',
 'recentchangeslinked-summary' => "Kaca astaméwa (kaca kusus) iki mènèhi daftar owah-owahan pungkasan ing kaca-kaca sing kagandhèng (utawa anggota sawijining kateogri). Kaca sing [[Special:Watchlist|panjenengan awasi]] ditandhani '''kandel'''.",
 'recentchangeslinked-page' => 'Jeneng kaca:',
@@ -1378,7 +1470,7 @@ Alamat layang èlèktronik Sampéyan ora dituduhaké nalika wong liya ngubungi S
 'reuploaddesc' => 'Bali ing formulir pamotan',
 'upload-tryagain' => 'Kirim déskripsi berkas sing wis diowah',
 'uploadnologin' => 'Durung mlebu log',
-'uploadnologintext' => 'Sampéyan kudu [[Special:UserLogin|mlebu log]] supaya bisa ngunggah berkas.',
+'uploadnologintext' => 'Sampéyan kudu $1 supaya bisa ngunggah berkas.',
 'upload_directory_missing' => 'Direktori pamunggahan ($1) ora ditemokaké lan ora bisa digawé déning server wèb.',
 'upload_directory_read_only' => 'Dirèktori pangunggahan ($1) ora bisa ditulis déning server wèb.',
 'uploaderror' => 'Kaluputan pangunggahan berkas',
@@ -1619,6 +1711,10 @@ Yèn disaring déning panganggo, namung berkas mawa vèrsi paling anyar waé sin
 'listfiles_size' => 'Ukuran (bita)',
 'listfiles_description' => 'Dèskripsi',
 'listfiles_count' => 'Vèrsi',
+'listfiles-show-all' => 'Termasuk gambar versi lawas',
+'listfiles-latestversion' => 'Versi saiki',
+'listfiles-latestversion-yes' => 'Iya',
+'listfiles-latestversion-no' => 'Ora',
 
 # File description page
 'file-anchor-link' => 'Gambar',
@@ -1714,6 +1810,13 @@ Priksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.',
 'randompage' => 'Sembarang kaca',
 'randompage-nopages' => 'Ora ana kaca ing {{PLURAL:$2||}}bilik jeneng iki:$1.',
 
+# Random page in category
+'randomincategory' => 'Sembarang kaca ing kategori',
+'randomincategory-invalidcategory' => '"$1" dudu jeneng kategori sing apik.',
+'randomincategory-nopages' => 'Ora ana kaca ing kategori [[:Category:$1|$1]].',
+'randomincategory-selectcategory' => 'Dheleng kaca sembarang saking kategori: $1 $2.',
+'randomincategory-selectcategory-submit' => 'Golèk',
+
 # Random redirect
 'randomredirect' => 'Pangalihan sembarang',
 'randomredirect-nopages' => 'Ora ana pangalihan ing bilik jeneng "$1".',
@@ -1744,6 +1847,8 @@ Priksanen dhisik pranala-pranala menyang cithakan iki sadurungé mbusak.',
 'pageswithprop-text' => 'Kaca iki njlèntèhaké kaca-kaca sing nganggo ubarampé astamiwa.',
 'pageswithprop-prop' => 'Arané ubarampé:',
 'pageswithprop-submit' => 'Nuju',
+'pageswithprop-prophidden-long' => 'nilai properti teks dawa didhelikake ($1 kilobita)',
+'pageswithprop-prophidden-binary' => 'nilai properti biner didhelikake ($1 kilobita)',
 
 'doubleredirects' => 'Pangalihan dobel',
 'doubleredirectstext' => 'Kaca iki ngandhut daftar kaca sing ngalih ing kaca pangalihan liyané.
@@ -1771,6 +1876,7 @@ Jeneng sing wis <del>dicorèk</del> tegesé wis rampung didandani.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|pranala|pranala}}',
 'nmembers' => '$1 {{PLURAL:$1|anggota|anggota}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|anggota|anggota}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisi|revisi}}',
 'nviews' => 'Wis kaping $1 {{PLURAL:$1|dituduhaké|dituduhaké}}',
 'nimagelinks' => 'Kanggo nèng {{PLURAL:$1|kaca|kaca}}',
@@ -1801,6 +1907,7 @@ Jeneng sing wis <del>dicorèk</del> tegesé wis rampung didandani.',
 'mostrevisions' => 'Kaca mawa pangowahan sing akèh dhéwé',
 'prefixindex' => 'Kabèh kaca mawa ater-ater',
 'prefixindex-namespace' => 'Kabèh kaca mawa ater-ater (bilik jeneng $1)',
+'prefixindex-strip' => 'Hapus awalan saking daftar',
 'shortpages' => 'Kaca cendhak',
 'longpages' => 'Kaca dawa',
 'deadendpages' => 'Kaca-kaca buntu (tanpa pranala)',
@@ -1808,14 +1915,14 @@ Jeneng sing wis <del>dicorèk</del> tegesé wis rampung didandani.',
 'protectedpages' => 'Kaca sing direksa',
 'protectedpages-indef' => 'Namung pangreksan ora langgeng waé',
 'protectedpages-cascade' => 'Amung kaca rineksan kang runtut',
-'protectedpagestext' => 'Kaca-kaca sing kapacak iki direksa déning pangalihan utawa panyuntingan.',
+'protectedpages-noredirect' => 'Dhelikna alihan',
 'protectedpagesempty' => 'Saat ini tidak ada halaman yang sedang dilindungi.',
 'protectedtitles' => 'Irah-irahan sing direksa',
-'protectedtitlestext' => 'Irah-irahan sing kapacak ing ngisor iki direksa lan ora bisa digawé',
 'protectedtitlesempty' => 'Ora ana irah-irahan utawa judhul sing direksa karo paramèter-paramèter iki.',
 'listusers' => 'Daftar panganggo',
 'listusers-editsonly' => 'Tampilaké mung panganggo sing nduwèni kontribusi',
 'listusers-creationsort' => 'Urut miturut tanggal digawé',
+'listusers-desc' => 'Urutna mudhun',
 'usereditcount' => '$1 {{PLURAL:$1|suntingan|suntingan}}',
 'usercreated' => '{{GENDER:$3|Digawé}} $1 wanci $2',
 'newpages' => 'Kaca anyar',
@@ -1862,9 +1969,6 @@ Panjenengan bisa mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sèn
 'allpagesto' => 'Tampilaké kaca dipungkasi ing:',
 'allarticles' => 'Kabèh artikel',
 'allinnamespace' => 'Kabeh kaca ($1 namespace)',
-'allnotinnamespace' => 'Sedaya kaca (mboten panggènan asma $1)',
-'allpagesprev' => 'Sadèrèngipun',
-'allpagesnext' => 'Sabanjuré',
 'allpagessubmit' => 'Madosi',
 'allpagesprefix' => 'Kapacak kaca-kaca ingkang mawi ater-ater:',
 'allpagesbadtitle' => 'Irah-irahan (judhul) ingkang dipun-gunaaken boten sah utawi nganggé ater-ater (awalan) antar-basa utawi antar-wiki. Irah-irahan punika saged ugi nganggé setunggal aksara utawi luwih ingkang boten saged kagunaaken dados irah-irahan.',
@@ -1992,7 +2096,7 @@ Owah-owahan sing dumadi ing tembé ing kaca iku lan kaca dhiskusi sing kagandhè
 'notanarticle' => 'Dudu kaca artikel',
 'notvisiblerev' => 'Révisi wis dibusak',
 'watchlist-details' => 'Ngawasaké {{PLURAL:$1|$1 kaca|$1 kaca}}, ora kalebu kaca-kaca dhiskusi.',
-'wlheader-enotif' => 'Notifikasi e-mail diaktifaké.',
+'wlheader-enotif' => 'Notifikasi layang elektronik diaktifaké.',
 'wlheader-showupdated' => "Kaca-kaca sing wis owah wiwit ditiliki panjenengan kaping pungkasan, dituduhaké mawa '''aksara kandel'''",
 'watchmethod-recent' => 'priksa daftar owah-owahan anyar kanggo kaca sing diawasi',
 'watchmethod-list' => 'priksa kaca sing diawasi kanggo owah-owahan anyar',
@@ -2070,15 +2174,18 @@ Umpan balik lan pitulung sabanjuré:
 'deleteotherreason' => 'Alesan liya utawa tambahan:',
 'deletereasonotherlist' => 'Alesan liya',
 'deletereason-dropdown' => '*Alesan pambusakan
-** Disuwun sing nulis
+** Spam
+** Vandalisme
 ** Nglanggar hak cipta
-** Vandalisme',
+** Disuwun sing nulis
+** Pangalihan rusak',
 'delete-edit-reasonlist' => 'Sunting alesan pambusakan',
 'delete-toobig' => 'Kaca iki ndarbèni sajarah panyuntingan sing dawa, yaiku ngluwihi $1 {{PLURAL:$1|revision|révisi}}.
 Pambusakan kaca sing kaya mangkono mau wis ora diparengaké kanggo menggak anané karusakan ing {{SITENAME}}.',
 'delete-warning-toobig' => 'Kaca iki duwé sajarah panyuntingan sing dawa, luwih saka $1 {{PLURAL:$1|révisi|révisi}}.
 Mbusak kaca iki bisa ngrusak operasi basis data ing {{SITENAME}};
 kudu ngati-ati.',
+'deleting-backlinks-warning' => "'''Awas:''' Kaca liyane mungkin ana sing nautake ing kaca sing arep sampeyan busak.",
 
 # Rollback
 'rollback' => 'Mbalèkaké suntingan',
@@ -2093,7 +2200,7 @@ kudu ngati-ati.',
 Suntingan pungkasan dilakoni déning [[User:$3|$3]] ([[User talk:$3|Wicara]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Ringkesan suntingan yaiku: \"''\$1''\".",
 'revertpage' => 'Suntingan [[Special:Contributions/$2|$2]] ([[User talk:$2|dhiskusi]]) dipunwangsulaken dhateng ing vèrsi pungkasan déning [[User:$1|$1]]',
-'revertpage-nouser' => 'Suntingan dibalèkaké déning (jeneng panganggo dibusak) nèng benahan pungkasan déning [[User:$1|$1]]',
+'revertpage-nouser' => 'Suntingan déning panganggo sing didhelikake, dibalèkaké nèng benahan pungkasan déning [[User:$1|$1]]',
 'rollback-success' => 'Suntingan dibalèkaké déning $1;
 diowahi bali menyang vèrsi pungkasan déning $2.',
 
@@ -2194,7 +2301,6 @@ Panjenengan mbokmenawa ngetutaké pranala sing salah, utawa revisi iku wis dipul
 'undeletebtn' => 'Balèkna!',
 'undeletelink' => 'pirsani/balèkna',
 'undeleteviewlink' => 'pirsani',
-'undeletereset' => "''Reset''",
 'undeleteinvert' => 'Walik pilihan',
 'undeletecomment' => 'Alesan:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|révisi|révisi}} wis dibalèkaké',
@@ -2236,7 +2342,7 @@ $1',
 'contributions' => 'Sumbangan {{GENDER:$1|panganggo}}',
 'contributions-title' => 'Kontribusi panganggo kanggo $1',
 'mycontris' => 'Kontribusi',
-'contribsub2' => 'Kanggo $1 ($2)',
+'contribsub2' => 'Kanggo {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Ora ditemokaké owah-owahan sing cocog karo kritéria kasebut iku.',
 'uctop' => '(saiki)',
 'month' => 'Wiwit sasi (lan sadurungé):',
@@ -2284,7 +2390,6 @@ $1',
 'block' => 'Blokir panganggo',
 'unblock' => 'Uculaké blokirané panganggo',
 'blockip' => 'Blokir panganggo',
-'blockip-title' => 'Blokir panganggo',
 'blockip-legend' => 'Blokir panganggo',
 'blockiptext' => 'Enggonen formulir ing ngisor iki kanggo mblokir sawijining alamat IP utawa panganggo supaya ora bisa nyunting kaca.
 Prekara iki perlu dilakoni kanggo menggak vandalisme, lan miturut [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].
@@ -2292,7 +2397,6 @@ Lebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis t
 'ipadressorusername' => 'Alamat IP utawa jeneng panganggo',
 'ipbexpiry' => 'Kadaluwarsa',
 'ipbreason' => 'Alesan:',
-'ipbreasonotherlist' => 'Alesan liya',
 'ipbreason-dropdown' => '*Alesan umum mblokir panganggo
 ** Mènèhi informasi palsu
 ** Ngilangi isi kaca
@@ -2308,8 +2412,6 @@ Lebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis t
 'ipbsubmit' => 'Kirimna',
 'ipbother' => 'Wektu liya',
 'ipboptions' => '2 jam:2 hours,1 dina:1 day,3 dina:3 days,1 minggu:1 week,2 minggu:2 weeks,1 sasi:1 month,3 sasi:3 months,6 sasi:6 months,1 taun:1 year,tanpa wates:infinite',
-'ipbotheroption' => 'liyané',
-'ipbotherreason' => 'Alesan liya/tambahan',
 'ipbhidename' => 'Delikna jeneng panganggo saka suntingan lan pratélan',
 'ipbwatchuser' => 'Ngawasi kaca panganggo lan kaca-kaca dhiskusi panganggo iki',
 'ipb-disableusertalk' => 'Alangi panganggo iki nyunting kaca gunemané nalika diblokir',
@@ -2398,7 +2500,7 @@ Mangga mirsani [[Special:BlockList|daftar panganggo sing diblokir]] kanggo dafta
 Mangga ngubungi sing nyedyakaké dines internèt panjenengan utawa pitulungan tèknis lan aturana masalah kaamanan sérius iki.",
 'sorbsreason' => "Alamat IP panjenengan didaftar minangka ''open proxy'' ing DNSBL.",
 'sorbs_create_account_reason' => "Alamat IP panjenengan didaftar minangka ''open proxy'' ing DNSBL. Panjenengan ora bisa nggawé akun utawa rékening.",
-'cant-block-while-blocked' => 'Panjenengan ora bisa mblokir panganggo liya nalika panjenengan dhéwé pinuju diblokir.',
+'xffblockreason' => 'Sebuah alamat IP di kepala X-Forwarded-For, entah milik Anda atau server proxy yang Anda pakai, telah diblokir. Alasan pemblokirannya adalah: $1',
 'cant-see-hidden-user' => 'Panganggo sing Sampéyan coba blokir wis kablokir lan didhelikaké.
 Amarga Sampéyan ora nduwé hak ndhelikaké panganggo, Sampéyan ora bisa ndelok utawa nyunting blokiran panganggo.',
 'ipbblocked' => 'Sampéyan ora bisa mblokir utawa mbukak blokiran panganggo liya amarga Sampéyan dhéwé diblokir',
@@ -2453,7 +2555,6 @@ Pastikan Anda mengerti konsekuensi dari perbuatan ini sebelum melanjutkan.",
 Ing kasus-kasus iku, yèn panjenengan gayuh, panjenengan bisa mindhahaké utawa nggabung kaca iku sacara manual.",
 'movearticle' => 'Pindhah kaca',
 'moveuserpage-warning' => "'''Pèngetan:''' Sampéyan arep mindhahaké kaca panganggo. Mangga cathet yèn namung kaca sing bakal dipindhahaké lan panganggo '''ora''' bakal diganti jenengé.",
-'movenologin' => 'Durung mlebu log',
 'movenologintext' => 'Panjenengan kudu dadi panganggo sing wis ndaftar lan wis [[Special:UserLogin|mlebu log]] kanggo mindhah kaca.',
 'movenotallowed' => 'Panjenengan ora pareng ngalihaké kaca.',
 'movenotallowedfile' => 'Panjenengan ora duwé hak kanggo mindhahaké berkas.',
@@ -2468,8 +2569,6 @@ Ing kasus-kasus iku, yèn panjenengan gayuh, panjenengan bisa mindhahaké utawa
 'movepage-moved-noredirect' => 'Kanggo gawé pengalihan wis ditahan.',
 'articleexists' => 'Satunggalipun kaca kanthi asma punika sampun wonten, utawi asma ingkang panjenengan pendhet mboten leres. Sumangga nyobi asma sanèsipun.',
 'cantmove-titleprotected' => 'Panjenengan ora bisa mindhahaké kaca iki menyang lokasi iki, amerga irah-irahan tujuan lagi direksa; ora olèh digawé',
-'talkexists' => 'Kaca iku kasil dipindhahaké, nanging kaca dhiskusi saka kaca iku ora bisa dipindhahaké amerga wis ana kaca dhiskusi ing irah-irahan (judhul) sing anyar. Mangga kaca-kaca dhiskusi wau digabung sacara manual.',
-'movedto' => 'dipindhah menyang',
 'movetalk' => 'Pindahna kaca dhiskusi sing ana gandhèngané.',
 'move-subpages' => 'Pindhahna anak-kaca (nganti $1)',
 'move-talk-subpages' => 'Pindhahna anak-kaca saka kaca wicara (nganti $1)',
@@ -2555,6 +2654,8 @@ Mangga pirsani [https://www.mediawiki.org/wiki/Localisation MediaWiki Localisati
 'thumbnail-more' => 'Gedhèkna',
 'filemissing' => 'Berkas ora ditemokaké',
 'thumbnail_error' => "Kaluputan nalika nggawé gambar cilik (''thumbnail''): $1",
+'thumbnail_error_remote' => 'Peringatan kasalahan saka $1:
+$2',
 'djvu_page_error' => "Kaca DjVu ana ing sajabaning ranggèhan (''range'')",
 'djvu_no_xml' => 'Ora bisa njupuk XML kanggo berkas DjVu',
 'thumbnail-temp-create' => 'Ora bisa nggawé berkas gambar mini sawetara',
@@ -2726,7 +2827,7 @@ Mbokmanawa iki disebabaké anané pranala jaba sing klebu daftar ireng.',
 'spam_blanking' => 'Kabèh révisi sing duwé pranala menyang $1, pangosongan',
 'spam_deleting' => 'Kabèh benahan sing nduwé pranala nèng $1, dibusaki',
 'simpleantispam-label' => "Pamariksan anti-spam.
-'''Aja''' diisèkaké!",
+'''AJA''' diisèkaké!",
 
 # Info page
 'pageinfo-title' => 'Inpormasi kanggo "$1"',
@@ -2740,13 +2841,14 @@ Mbokmanawa iki disebabaké anané pranala jaba sing klebu daftar ireng.',
 'pageinfo-length' => 'Panjang halaman (dalam bita)',
 'pageinfo-article-id' => 'ID kaca',
 'pageinfo-language' => 'Bahasa isi halaman',
-'pageinfo-robot-policy' => 'Status mesin pencari',
-'pageinfo-robot-index' => 'Dapat diindeks',
-'pageinfo-robot-noindex' => 'Tidak dapat diindeks',
+'pageinfo-content-model' => 'Model isi kaca',
+'pageinfo-robot-policy' => 'Diindeks karo robot',
+'pageinfo-robot-index' => 'Entuk',
+'pageinfo-robot-noindex' => 'Ora entuk',
 'pageinfo-views' => 'Cacahing delokan',
 'pageinfo-watchers' => 'Cacahé pangawas kaca',
 'pageinfo-few-watchers' => 'Kurang seka $1 {{PLURAL:$1|wong tilik|wong tilik}}',
-'pageinfo-redirects-name' => 'Pengalihan ke halaman ini',
+'pageinfo-redirects-name' => 'Jumlah pangalihan menyang kaca iki',
 'pageinfo-subpages-name' => 'Subhalaman halaman ini',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|pengalihan|pengalihan}}; $3 {{PLURAL:$3|non-pengalihan|non-pengalihan}})',
 'pageinfo-firstuser' => 'Pembuat halaman',
@@ -2820,7 +2922,7 @@ Yèn dilakokaké, sistem Sampéyan bisa kaserang.",
 'svg-long-desc' => 'Berkas SVG, nominal $1 × $2 piksel, gedhené berkas: $3',
 'svg-long-desc-animated' => 'Berkas SVG, nominal $1 × $2 piksel, gedhené berkas: $3',
 'svg-long-error' => 'Berkas SVG ora sah: $1',
-'show-big-image' => 'Résolusi kebak',
+'show-big-image' => 'Berkas asli',
 'show-big-image-preview' => 'Gedhéné pratayang iki: $1',
 'show-big-image-other' => '{{PLURAL:$2|Résolusi|Résolusi}} liya: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
@@ -2849,11 +2951,25 @@ Yèn dilakokaké, sistem Sampéyan bisa kaserang.",
 'minutes' => '{{PLURAL:$1|$1 menit|$1 menit}}',
 'hours' => '{{PLURAL:$1|$1 jam|$1 jam}}',
 'days' => '{{PLURAL:$1|$1 dina|$1 dina}}',
+'weeks' => '{{PLURAL:$1|minggu|minggu}}',
 'months' => '{{PLURAL:$1|$1 sasi|$1 sasi}}',
 'years' => '{{PLURAL:$1|$1 taun|$1 taun}}',
 'ago' => '$1 kapungkur',
 'just-now' => 'baru saja',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|jam|jam}} kapungkur',
+'minutes-ago' => '$1 {{PLURAL:$1|menit|menit}} kapungkur',
+'seconds-ago' => '$1 {{PLURAL:$1|detik|detik}} kapungkur',
+'monday-at' => 'Senin jam $1',
+'tuesday-at' => 'Selasa jam $1',
+'wednesday-at' => 'Rabu jam $1',
+'thursday-at' => 'Kemis jam $1',
+'friday-at' => 'Jumuah jam $1',
+'saturday-at' => 'Septu jam $1',
+'sunday-at' => 'Minggu jam $1',
+'yesterday-at' => 'Dhek wingi jam $1',
+
 # Bad image list
 'bad_image_list' => "Formaté kaya mengkéné:
 
@@ -3065,7 +3181,7 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
 'exif-compression-4' => 'CCITT Group 4 fax encoding',
 
 'exif-copyrighted-true' => 'Mawa hak cipta',
-'exif-copyrighted-false' => 'Domain umum',
+'exif-copyrighted-false' => 'Status hak cipta durung ditemtokake',
 
 'exif-unknowndate' => 'Tanggal ora dingertèni',
 
@@ -3269,15 +3385,10 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
 'exif-urgency-high' => 'Dhuwur ($1)',
 'exif-urgency-other' => 'Prioritas sing ditetepaké panganggo ($1)',
 
-# External editor support
-'edit-externally' => 'Sunting berkas iki mawa aplikasi jaba',
-'edit-externally-help' => '(Deleng [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kabèh',
 'namespacesall' => 'kabèh',
 'monthsall' => 'kabèh',
-'limitall' => 'kabèh',
 
 # Email address confirmation
 'confirmemail' => 'Konfirmasi alamat e-mail',
@@ -3300,7 +3411,6 @@ Pangirim mènèhi informasi: $1',
 'confirmemail_success' => 'Alamat e-mail panjenengan wis dikonfirmasi.
 Saiki panjenengan bisa log mlebu lan wiwit nganggo wiki.',
 'confirmemail_loggedin' => 'Alamat e-mail panjenengan wis dikonfirmasi.',
-'confirmemail_error' => 'Ana kaluputan nalika nyimpen konfirmasi panjenengan.',
 'confirmemail_subject' => 'Konfirmasi alamat e-mail {{SITENAME}}',
 'confirmemail_body' => 'Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun "$2" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.
 
@@ -3357,12 +3467,20 @@ Mangga didhedhes (dikonfirmasi) menawa panjenengan kersa nggawé ulang kaca iki.
 'confirm-unwatch-button' => 'Oké',
 'confirm-unwatch-top' => 'Singkiraké kaca iki saka daptar pangawasan Sampéyan?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '&larr; kaca sadurungé',
 'imgmultipagenext' => 'kaca sabanjuré →',
 'imgmultigo' => 'Golèk!',
 'imgmultigoto' => 'Lungaa menyang kaca $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(basa gawan)',
+'img-lang-info' => 'Dadekna gambar iki ing $1, $2',
+'img-lang-go' => 'Nuju',
+
 # Table pager
 'ascending_abbrev' => 'unggah',
 'descending_abbrev' => 'mudhun',
@@ -3441,9 +3559,20 @@ Panjenengan uga bisa [[Special:EditWatchlist|nganggo éditor standar panjenengan
 'version-hook-name' => 'Jeneng canthèlan',
 'version-hook-subscribedby' => 'Dilanggani déning',
 'version-version' => '(Vèrsi $1)',
-'version-license' => 'Lisènsi',
+'version-license' => 'Lisènsi MediaWiki',
+'version-ext-license' => 'Lisènsi',
+'version-ext-colheader-name' => 'Ekstensi',
+'version-ext-colheader-version' => 'Vèrsi',
+'version-ext-colheader-license' => 'Lisènsi',
+'version-ext-colheader-description' => 'Dèskripsi',
+'version-ext-colheader-credits' => 'Pangarang',
+'version-license-title' => 'Lisensi kanggo $1',
+'version-license-not-found' => 'Ora ana info lisensi kanggo ekstensi iki.',
+'version-credits-title' => 'Kredit kanggo $1',
+'version-credits-not-found' => 'Ora ana info kredit kanggo ekstensi iki.',
 'version-poweredby-credits' => "Wiki iki disengkuyung déning '''[https://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
 'version-poweredby-others' => 'liyané',
+'version-poweredby-translators' => 'panerjemah translatewiki.net',
 'version-credits-summary' => 'Kami ingin mengakui orang-orang berikut atas kontribusinya terhadap [[Special:Version|MediaWiki]].',
 'version-license-info' => 'MediaWiki adalah perangkat lunak bebas; Anda diperbolehkan untuk mendistribusikan dan/atau memodfikasinya dengan persyaratan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; versi 2 atau terbaru.
 
@@ -3457,6 +3586,19 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'version-entrypoints-header-entrypoint' => 'Tithik lebon',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect' => 'Dialihake dening gambar, panganggo, kaca, utawa ID revisi',
+'redirect-legend' => 'Dialihake menyang gambar utawa kaca',
+'redirect-summary' => 'Kaca astamiwa iki dialihake menyang gambar (jeneng gambar diwenehi), kaca (ID revisi utama ID kaca diwenehi), utawa kaca panganggo (ID panganggo diwenehi). Cara nganggo: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-submit' => 'Nuju',
+'redirect-lookup' => 'Golek:',
+'redirect-value' => 'Aji:',
+'redirect-user' => 'ID panganggo',
+'redirect-page' => 'ID kaca',
+'redirect-revision' => 'Revisi kaca',
+'redirect-file' => 'Jeneng berkas',
+'redirect-not-exists' => 'Nilai ora ditemokaké',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Golèk berkas duplikat',
 'fileduplicatesearch-summary' => 'Golèk duplikat berkas adhedhasar biji hash-é.',
@@ -3469,7 +3611,8 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'fileduplicatesearch-noresults' => 'Ora ana berkas mawa jeneng "$1" ditemokaké.',
 
 # Special:SpecialPages
-'specialpages' => 'Kaca istiméwa',
+'specialpages' => 'Kaca astamiwa',
+'specialpages-note-top' => 'Katrangan',
 'specialpages-note' => '* Kaca astamiwa biasa.
 * <span class="mw-specialpagerestricted">Kaca astamiwa kawatesan.</span>',
 'specialpages-group-maintenance' => 'Lapuran pangopènan',
@@ -3502,18 +3645,21 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'tags' => 'Tag pangowahan sing absah',
 'tag-filter' => 'Filter [[Special:Tags|Tag]]:',
 'tag-filter-submit' => 'Penyaring',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Tag|Tag}}]]: $2)',
 'tags-title' => 'Tag',
 'tags-intro' => 'Kaca iki ndhaptar tag sing bisa ditandhani déning piranti alus tumrap sawijining suntingan lan maknané.',
 'tags-tag' => 'Jeneng tag',
 'tags-display-header' => 'Tampilan ing dhaptar owah-owahan',
 'tags-description-header' => 'Dhèskripsi pepak saka makna',
+'tags-active-header' => 'Aktif?',
 'tags-hitcount-header' => 'Owah-owahan mawa tag',
+'tags-active-yes' => 'Iya',
+'tags-active-no' => 'Ora',
 'tags-edit' => 'sunting',
 'tags-hitcount' => '$1 {{PLURAL:$1|pangowahan|pangowahan}}',
 
 # Special:ComparePages
 'comparepages' => 'Bandhingna kaca',
-'compare-selector' => 'Bandhingna révisi kaca',
 'compare-page1' => 'Kaca 1',
 'compare-page2' => 'Kaca 2',
 'compare-rev1' => 'Révisi 1',
@@ -3528,6 +3674,7 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'dberr-problems' => 'Nyuwun ngapura! Situs iki ngalami masalah tèknis.',
 'dberr-again' => 'Coba nunggu sawetara menit lan unggahna manèh.',
 'dberr-info' => '(Ora bisa nyambung menyang peladèn basis data: $1)',
+'dberr-info-hidden' => '(Ora bisa nyambung menyang peladèn basis data)',
 'dberr-usegoogle' => 'Panjenengan bisa nyoba nggolèki nganggo Google kanggo sauntara wektu.',
 'dberr-outofdate' => 'Perlu diweruhi yèn indhèks isi kita manawa wis kadaluwarsa.',
 'dberr-cachederror' => 'Iki sawijining salinan kasimpen kaca sing dijaluk, lan manawa dudu sing paling anyar.',
@@ -3543,6 +3690,9 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'htmlform-submit' => 'Kirim',
 'htmlform-reset' => 'Batalna pangowahan',
 'htmlform-selectorother-other' => 'Liya',
+'htmlform-no' => 'Ora',
+'htmlform-yes' => 'Iya',
+'htmlform-chosen-placeholder' => 'Pilih pilihan',
 
 # SQLite database support
 'sqlite-has-fts' => '$1 mawa sengkuyungan golèkan tèks jangkep',
@@ -3552,14 +3702,14 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'logentry-delete-delete' => '$1 {{GENDER:$2|mbusak}} kaca $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|mbalèkaké}} kaca $3',
 'logentry-delete-event' => '$1 {{GENDER:$2|ngganti}} parupané {{PLURAL:$5|sak prastawa log|$5 prastawa log}} ana ing $3: $4',
-'logentry-delete-revision' => '$1 ngganti patampilan {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
-'logentry-delete-event-legacy' => '$1 ngganti patampilan saka kadadéan log nèng $3',
-'logentry-delete-revision-legacy' => '$1 ngganti patampilan saka pambenahan nèng kaca $3',
-'logentry-suppress-delete' => '$1 neken kaca $3',
-'logentry-suppress-event' => '$1 ndhelik-ndhelik ngganti patampilan saka {{PLURAL:$5|sak kadadéan log|$5 kadadéan log}} nèng $3: $4',
-'logentry-suppress-revision' => '$1 ndhelik-ndhelik ngganti patampilan saka {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
-'logentry-suppress-event-legacy' => '$1 ndhelik-ndhelik ngganti patampilan saka kadadéan log nèng $3',
-'logentry-suppress-revision-legacy' => '$1 ndhelik-ndhelik ngganti patampilan saka pambenahan nèng kaca $3',
+'logentry-delete-revision' => '$1 {{GENDER:$2|ngganti}} patampilan {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|ngganti}} patampilan saka kadadéan log nèng $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|ngganti}} patampilan saka pambenahan nèng kaca $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|neken}} kaca $3',
+'logentry-suppress-event' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka {{PLURAL:$5|sak kadadéan log|$5 kadadéan log}} nèng $3: $4',
+'logentry-suppress-revision' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka {{PLURAL:$5|sak pambenahan|$5 pambenahan}} nèng kaca $3: $4',
+'logentry-suppress-event-legacy' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka kadadéan log nèng $3',
+'logentry-suppress-revision-legacy' => '$1 ndhelik-ndhelik {{GENDER:$2|ngganti}} patampilan saka pambenahan nèng kaca $3',
 'revdelete-content-hid' => 'kontèn didhelikaké',
 'revdelete-summary-hid' => 'ringkesan suntingan didhelikaké',
 'revdelete-uname-hid' => 'jeneng panganggo didhelikaké',
@@ -3568,20 +3718,20 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
 'revdelete-uname-unhid' => 'jeneng panganggo dituduhaké',
 'revdelete-restricted' => 'rèstriksi ditrapaké marang para opsis',
 'revdelete-unrestricted' => 'rèstriksi marang para opsis dijabel',
-'logentry-move-move' => '$1 mindhahaké kaca $3 nèng $4',
-'logentry-move-move-noredirect' => '$1 mindhahaké kaca $3 nèng $4 tanpa nginggalaké pangalihan',
-'logentry-move-move_redir' => '$1 mindhahaké kaca $3 nèng $4 ngliwati pangalihan',
-'logentry-move-move_redir-noredirect' => '$1 mindhahaké kaca $3 nèng $4 ngliwati pangalihan tanpa nginggalaké pangalihan',
+'logentry-move-move' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 tanpa ninggalaké pangalihan',
+'logentry-move-move_redir' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 nindesi pangalihan liyane',
+'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|mindhahaké}} kaca $3 nèng $4 nindesi pangalihan liyane tanpa nginggalaké pangalihan',
 'logentry-patrol-patrol' => '$1 {{GENDER:$2|nengeri}} rèvisi $4 saka kaca $3 sing diawasi',
-'logentry-patrol-patrol-auto' => '$1 otomatis nandhai benahan $4 saka kaca $3 kaawasai',
-'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-byemail' => 'Akun pengguna $3 dibuat oleh $1 dan kata sandi dikirim melalui e-mail',
-'logentry-newusers-autocreate' => 'Akun $1 digawé otomatis',
+'logentry-patrol-patrol-auto' => '$1 otomatis {{GENDER:$2|nandhani}} benahan $4 saka kaca $3 kaawasake',
+'logentry-newusers-newusers' => 'Akun panganggo $1 {{GENDER:$2|digawé}}',
+'logentry-newusers-create' => 'Akun panganggo $1 {{GENDER:$2|digawé}}',
+'logentry-newusers-create2' => 'Akun panganggo $3 {{GENDER:$2|digawé}} déning $1',
+'logentry-newusers-byemail' => 'Akun panganggo $3 {{GENDER:$2|digawé}} déning $1 lan tembung sandhine dikirim lewat layang elektronik',
+'logentry-newusers-autocreate' => 'Akun $1 {{GENDER:$2|digawé}} otomatis',
 'logentry-rights-rights' => '$1 {{GENDER:$2|ngganti}} kaanggotan kelompok kanggo $3 saka $4 dadi $5',
-'logentry-rights-rights-legacy' => '$1 mengubah keanggotaan grup $3',
-'logentry-rights-autopromote' => 'otomatis ditawakaké saka $4 nèng $5',
+'logentry-rights-rights-legacy' => '$1 {{GENDER:$2|ngganti}} kanggotaan grup kanggo $3',
+'logentry-rights-autopromote' => '$1 otomatis {{GENDER:$2|dipromosikne}} saka $4 nèng $5',
 'rightsnone' => '(ora ana)',
 
 # Feedback
@@ -3637,6 +3787,7 @@ Utawa, Sampéyan bisa nganggo pormulir gampang ngisor. Tanggepan Sampéyan bakal
 'api-error-overwrite' => 'Nibani berkas sing wis ana ora dililakaké.',
 'api-error-stashfailed' => 'Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.',
 'api-error-publishfailed' => 'Kasalahan njero: Sasana gagal nyèlèhaké berkas sawetara.',
+'api-error-stasherror' => 'Ana kasalahan wektu ngunggah berkas.',
 'api-error-timeout' => 'Sasana ora nanggepi nèng wektu sing karepaké.',
 'api-error-unclassified' => 'Ana masalah sing ora dingertèni.',
 'api-error-unknown-code' => 'Kasalahan ora dingertèni: "$1".',
@@ -3660,21 +3811,37 @@ Utawa, Sampéyan bisa nganggo pormulir gampang ngisor. Tanggepan Sampéyan bakal
 # Image rotation
 'rotate-comment' => 'Gambar diubengaké $1 {{PLURAL:$1|drajat|drajat}} sak arah domé jam',
 
+# Limit report
+'limitreport-title' => 'Parser profiling data:',
+'limitreport-cputime' => 'CPU time usage',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|detik|detik}}',
+'limitreport-walltime' => 'Penggunaan waktu riil',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|detik|detik}}',
+'limitreport-ppvisitednodes' => 'Preprocessor visited node count',
+'limitreport-ppgeneratednodes' => 'Preprocessor generated node count',
+'limitreport-postexpandincludesize' => 'Post-expand include size',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|bita|bita}}',
+'limitreport-templateargumentsize' => 'Template argument size',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|bita|bita}}',
+'limitreport-expansiondepth' => 'Highest expansion depth',
+'limitreport-expensivefunctioncount' => 'Expensive parser function count',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'Cithakan dikembangaké',
 'expand_templates_intro' => 'Kaca astaméwa iki njupuk sawetara tèks lan ngembangaké kabèh cithakan sajroning iku sacara rékursif.
 Kaca iki uga ngembangaké fungsi parser kaya ta
 <nowiki>{{</nowiki>#language:…}}, lan variabel kaya ta
-<nowiki>{{</nowiki>CURRENTDAY}}&mdash;sajatiné mèh kabèh sing ana ing antara rong tandha kurung akolade.
-Perkara iki dilakokaké caranémawa nyeluk tahapan parser sing rélévan saka MediaWiki dhéwé.',
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;sajatiné mèh kabèh sing ana ing antara rong tandha kurung akolade.',
 'expand_templates_title' => 'Irah-irahan kontèks, kanggo {{FULLPAGENAME}} lan sabanjuré:',
 'expand_templates_input' => 'Tèks sumber:',
 'expand_templates_output' => 'Pituwas (kasil)',
 'expand_templates_xml_output' => 'Pituwas XML',
+'expand_templates_html_output' => 'Raw HTML output',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Busaken komentar',
 'expand_templates_remove_nowiki' => 'Brèdèl tag <nowiki> nèng asilé',
 'expand_templates_generate_xml' => 'Tuduhna uwit parser XML',
+'expand_templates_generate_rawhtml' => 'Show raw HTML',
 'expand_templates_preview' => 'Pratayang',
 
 );
index 6a9a278..41d40a0 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ცუდი_სათაური' ),
        'Blankpage'                 => array( 'ცარიელი_გვერდი' ),
        'Block'                     => array( 'დაბლოკვა' ),
-       'Blockme'                   => array( 'დამბლოკე' ),
        'BrokenRedirects'           => array( 'გაწყვეტილი_გადამისამართება' ),
        'Categories'                => array( 'კატეგორიები' ),
        'ChangeEmail'               => array( 'ელ-ფოსტის_შეცვლა' ),
@@ -75,7 +74,6 @@ $specialPageAliases = array(
        'Confirmemail'              => array( 'ელ-ფოსტის_დადასტურება' ),
        'Contributions'             => array( 'წვლილი' ),
        'CreateAccount'             => array( 'ანგარიშის_შექმნა' ),
-       'Disambiguations'           => array( 'მრავალმნიშვნელოვნება' ),
        'DoubleRedirects'           => array( 'ორმაგი_გადამისამართება' ),
        'EditWatchlist'             => array( 'კონტროლის_სიის_რედაქტირება' ),
        'Emailuser'                 => array( 'მიწერა_მომხმარებელს' ),
@@ -191,7 +189,6 @@ $messages = array(
 'tog-minordefault' => 'ყველა რედაქტირების მონიშვნა, როგორც უმნიშვნელო, უპირობოდ',
 'tog-previewontop' => 'წინასწარი გადახედვის ჩვენება რედაქტირების დაფამდე',
 'tog-previewonfirst' => 'წინასწარი ჩვენება პირველივე რედაქტირებაზე',
-'tog-nocache' => 'გათიშეთ ბრაუზერში გვერდების ქეშირება',
 'tog-enotifwatchlistpages' => 'მომწერე ელ. ფოსტით, როცა გვერდი ან ფაილი, რომელსაც მე ვაკონტროლებ, შეიცვლება',
 'tog-enotifusertalkpages' => 'მომწერე თუ ჩემი განხილვის გვერდი შეიცვლება',
 'tog-enotifminoredits' => 'მომწერე ასევე გვერდებისა და ფაილების მცირე რედაქტირებისას',
@@ -328,7 +325,6 @@ $messages = array(
 'qbedit' => 'რედაქტირება',
 'qbpageoptions' => 'ეს გვერდი',
 'qbmyoptions' => 'ჩემი გვერდები',
-'qbspecialpages' => 'სპეციალური გვერდები',
 'faq' => 'ხშირი შეკითხვები',
 'faqpage' => 'Project:ხშირი შეკითხვები',
 
@@ -449,8 +445,8 @@ $1',
 'youhavenewmessages' => 'თქვენ გაქვთ $1 ($2).',
 'youhavenewmessagesfromusers' => 'თქვენ გაქვთ $1 {{PLURAL:$3|სხვა მომხმარებლისგან|$3 მომხმარებლებისგან}} ($2).',
 'youhavenewmessagesmanyusers' => 'თქვენ გაქვთ $1 ბევრი მომხმარებლისგან ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|ახალი შეტყობინება}}',
-'newmessagesdifflinkplural' => 'ბოლო {{PLURAL:$1|ცვლილება|ცვლილება}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ახალი შეტყობინება|999=ახალი შეტყობინება}}',
+'newmessagesdifflinkplural' => 'ბოლო {{PLURAL:$1|ცვლილება|999=ცვლილება}}',
 'youhavenewmessagesmulti' => 'თქვენ გაქვთ ახალი შეტყობინება $1-ზე',
 'editsection' => 'რედაქტირება',
 'editold' => 'რედაქტირება',
@@ -546,9 +542,6 @@ $1',
 'perfcachedts' => 'შემდეგი მონაცემები აღებულია ქეშიდან, უკანასკნელად ის განახლდა $1. ქეშში ინახება მაქსიმუმ $4 {{PLURAL:$4|ჩანაწერი}}.',
 'querypage-no-updates' => 'ამ გვერდის განახლება გათიშულია.
 წარმოდგენილი მონაცემები არ განახლდება.',
-'wrong_wfQuery_params' => 'არასწორი პარამეტრები ფუნქციისათვის wfQuery()<br />
-ფუნქცია: $1<br />
-მოთხოვნა: $2',
 'viewsource' => 'იხილე წყარო',
 'viewsource-title' => 'იხილეთ წყარო გვერდისთვის $1',
 'actionthrottled' => 'სიჩქარის შეზღუდვა.',
@@ -576,7 +569,7 @@ $2',
 'invalidtitle-knownnamespace' => 'დაუშვებელი სათაური სახელთა სივრცე "$2" და ტექსტი "$3"-თან',
 'invalidtitle-unknownnamespace' => 'დაუშვებელი სათაური უცნობი სახელთა სივრცის ნომერი $1 და ტექსტი "$2"-ით',
 'exception-nologin' => 'შესვლა არ განხორციელდა',
-'exception-nologin-text' => 'ამ გვერდის სანახავად ან მოთხოვნილი მოქმედების შესასრულებლად საჭიროა სისტემაში შესვლა.',
+'exception-nologin-text' => 'ამ გვერდის სანახავად ან მოთხოვნილი მოქმედების შესასრულებლად საჭიროა [[Special:Userlogin|სისტემაში შესვლა]].',
 
 # Virus scanner
 'virus-badscanner' => "შეცდომა. ვირუსთა უცნობი სკანერი: ''$1''",
@@ -628,11 +621,12 @@ $2',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|დახმარება სისტემაში შესასვლელად]]',
 'userlogin-createanother' => 'სხვა ანგარიშის შექმნა',
 'createacct-join' => 'ქვემოთ მიუთითეთ ინფორმაცია თქვენ შესახებ.',
+'createacct-another-join' => 'ქვემოთ შეიყვანეთ ახალი ანგარიშის ინფორმაცია.',
 'createacct-emailrequired' => 'ელ. ფოსტის მისამართი',
 'createacct-emailoptional' => 'ელ. ფოსტის მისამართი (არასავალდებულო)',
 'createacct-email-ph' => 'შეიყვანეთ თქვენი ელ. ფოსტის მისამართი',
 'createacct-another-email-ph' => 'შეიყვანეთ ელ.ფოსტის მისამართი',
-'createaccountmail' => 'á\83\92á\83\90á\83\9bá\83\9dá\83\98á\83§á\83\94á\83\9cá\83\94á\83\97 á\83¨á\83\94á\83\9bá\83\97á\83®á\83\95á\83\94á\83\95á\83\98á\83\97á\83\9dá\83\91á\83\98á\83¡ á\83\9bá\83\94á\83\97á\83\9dá\83\93á\83\98á\83\97 á\83¨á\83\94á\83 á\83©á\83\94á\83£á\83\9aá\83\98 á\83\93á\83 á\83\9dá\83\94á\83\91á\83\98á\83\97á\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98 á\83\93á\83\90 á\83\9bá\83\98á\83¡á\83\98 á\83\92á\83\90á\83\90á\83\92á\83\96á\83\90á\83\95á\83\9cá\83\94á\83\97 á\83\9bá\83\98á\83\97á\83\98á\83\97á\83\94á\83\91á\83£á\83\9a á\83\94á\83\9a\83¤á\83\9dá\83¡á\83¢á\83\98á\83¡ á\83\9bá\83\98á\83¡á\83\90á\83\9bá\83\90á\83 á\83\97á\83\96á\83\94',
+'createaccountmail' => 'გამოიყენეთ შემთხვევითობის მეთოდით შერჩეული დროებითი პაროლი და გააგზავნეთ მითითებულ ელ.ფოსტის მისამართზე',
 'createacct-realname' => 'ნამდვილი სახელი (არააუცილებელი)',
 'createaccountreason' => 'მიზეზი:',
 'createacct-reason' => 'მიზეზი',
@@ -671,7 +665,7 @@ $2',
 იგი უნდა შეიცავდეს მინიმუმ $1 სიმბოლოს.',
 'password-name-match' => 'შეტანილი პაროლი უნდა განსხვავდებოდეს მომხმარებლის სახელისგან.',
 'password-login-forbidden' => 'ამ მომხმარებლის სახელისა და პაროლის გამოყენება აკრძალულია.',
-'mailmypassword' => 'á\83\90á\83®á\83\90á\83\9aá\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\92á\83\90á\83\9bá\83\9dá\83\92á\83\96á\83\90á\83\95á\83\9cა',
+'mailmypassword' => 'á\83\90á\83®á\83\90á\83\9aá\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\93á\83\90á\83§á\83\94á\83\9cá\83\94á\83\91ა',
 'passwordremindertitle' => 'ახალი დროებითი პაროლი {{SITENAME}}-თვის',
 'passwordremindertext' => 'ვიღაცამ (შესაძლოა თქვენ, IP მისამართით $1) მოითხოვა
 ახალი პაროლის გაგზავნა {{SITENAME}}-სთვის ($4).
@@ -722,7 +716,7 @@ Please wait $1 before trying again.',
 'user-mail-no-body' => 'ცდილობდა ცარიელი ან უაზროდ მოკლე შინაარსის ელექტრონული წერილის გაგზავნას.',
 
 # Change password dialog
-'resetpass' => 'შეცვალეთ პაროლი',
+'changepassword' => 'პაროლის შეცვლა',
 'resetpass_announce' => 'თქვენ შემოხვედით დროებით ელ-ფოსტის კოდით. რეგისტრაციის დასრულებისთვის, უნდა შექმნათ ახალი პაროლი აქ:',
 'resetpass_text' => '<!-- აქ დაამატეთ ტექსტი -->',
 'resetpass_header' => 'შეცვალეთ ანგარიშის პაროლი',
@@ -743,7 +737,7 @@ Please wait $1 before trying again.',
 # Special:PasswordReset
 'passwordreset' => 'პაროლის აღდგენა',
 'passwordreset-text-one' => 'შეავსეთ ეს ფორმა, რათა კვლავ დააყენოთ თქვენი პაროლი.',
-'passwordreset-text-many' => '{{PLURAL:$1|á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\97á\83\90á\83\95á\83\98á\83\93á\83\90á\83\9c á\83\93á\83\90á\83¡á\83\90á\83§á\83\94á\83\9cá\83\94á\83\91á\83\9aად შეავსეთ ერთ-ერთი ველი.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|á\83\94á\83\9a\83¤á\83\9dá\83¡á\83¢á\83\90á\83\96á\83\94 á\83\93á\83 á\83\9dá\83\94á\83\91á\83\98á\83\97á\83\98 á\83\9eá\83\90á\83 á\83\9dá\83\9aá\83\98á\83¡ á\83\9bá\83\98á\83¡á\83\90á\83¦á\83\94á\83\91ად შეავსეთ ერთ-ერთი ველი.}}',
 'passwordreset-legend' => 'პაროლის აღდგენა',
 'passwordreset-disabled' => 'ამ ვიკიში პაროლის კვლავ დაყენების ფუნქცია გამორთულია.',
 'passwordreset-emaildisabled' => 'ამ ვიკიში ელ.ფოსტის ფუნქციები გამორთულია.',
@@ -901,7 +895,7 @@ $2
 
 ეს ჩვეულებრივ ხდება მაშინ, თუ მოძველებული ბმულით გადადიხართ გვერდზე, რომელიც წაიშალა.
 დეტალური ინფორმაცია შესაძლებელია იყოს [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} წაშლების ჟურნალში].',
-'userpage-userdoesnotexist' => 'á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83\98 Â«<nowiki>$1</nowiki>» á\83\90á\83  á\83\90á\83 á\83¡á\83\94á\83\91á\83\9dá\83\91á\83¡. á\83\93á\83\90á\83 á\83¬á\83\9bá\83£á\83\9cá\83\93á\83\98á\83\97, á\83 á\83\9dá\83\9b á\83\9bá\83\90á\83 á\83\97á\83\9aá\83\90á\83ª á\83\92á\83¡á\83£á\83 á\83\97 á\83\90á\83\9b á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83\98á\83¡ á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\90 á\83\90á\83\9c á\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\90.УбедиÑ\82еÑ\81Ñ\8c, Ñ\87Ñ\82о Ð²Ñ\8b Ð´ÐµÐ¹Ñ\81Ñ\82виÑ\82елÑ\8cно Ð¶ÐµÐ»Ð°ÐµÑ\82е Ñ\81оздаÑ\82Ñ\8c Ð¸Ð»Ð¸ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ\82Ñ\8c Ñ\8dÑ\82Ñ\83 Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\83.',
+'userpage-userdoesnotexist' => 'á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\98á\83¡ á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83\98 â\80\9e$1â\80\9c á\83\90á\83  á\83\90á\83 á\83¡á\83\94á\83\91á\83\9dá\83\91á\83¡. á\83\93á\83\90á\83 á\83¬á\83\9bá\83£á\83\9cá\83\93á\83\98á\83\97, á\83 á\83\9dá\83\9b á\83\9cá\83\90á\83\9bá\83\93á\83\95á\83\98á\83\9aá\83\90á\83\93 á\83\92á\83¡á\83£á\83 á\83\97 á\83\90á\83\9b á\83\90á\83\9cá\83\92á\83\90á\83 á\83\98á\83¨á\83\98á\83¡ á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\90 á\83\90á\83\9c á\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\90.',
 'userpage-userdoesnotexist-view' => 'მომხმარებელი „$1“ არ არის დარეგისტრირებული.',
 'blocked-notice-logextract' => 'ეს მომხმარებელი უკვე დაიბლოკა.
 დაბლოკვის მიზეზი შემდეგშია:',
@@ -1060,9 +1054,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'last' => 'ბოლო',
 'page_first' => 'პირველი',
 'page_last' => 'ბოლო',
-'histlegend' => '*ვერსიის დათვალიერება: დააწკაპუნეთ სასურველი ვერსიის თარიღზე მის დასათვალიერებლად.
-*ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.
-*შემოკლებები: (მიმდ.) = სხვაობა მიმდინარე ვერსიასთან, (ბოლო) = სხვაობა წინა ვერსიასთან, მ = მცირე შესწორება.',
+'histlegend' => "ვერსიების შედარება: აირჩიეთ სასურველი ვერსიები რადიო-რგოლების მონიშვნით და დააწკაპუნეთ შედარების ღილაკზე.<br />
+ლეგენდა: '''({{int:cur}})''' = სხვაობა მიმდინარე ვერსიასთან, '''({{int:last}})''' = სხვაობა წინა ვერსიასთან, '''{{int:minoreditletter}}''' = მცირე შესწორება.",
 'history-fieldset-title' => 'დათვალიერების ისტორია',
 'history-show-deleted' => 'მხოლოდ წაშლილი',
 'histfirst' => 'უძველესი',
@@ -1114,10 +1107,6 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'revisiondelete' => 'ცვლილებების წაშლა/დაბრუნება',
 'revdelete-nooldid-title' => 'სამიზნო ვერსია არ არის მითითებული',
 'revdelete-nooldid-text' => 'თქვენ არ დაგინიშნიათ სამიზნო ვერსია (ვერსიები) ამ ფუნქციის გასახორციებლად.',
-'revdelete-nologtype-title' => 'არ არის მითითებული ჟურნალის ტიპი.',
-'revdelete-nologtype-text' => 'თქვენ არ მოგინიშნავთ ჟურნალის ტიპი, რომელშიც უნდა განახორციელოთ მოქმედება.',
-'revdelete-nologid-title' => 'ჟურნალის არასწორი ჩანაწერი',
-'revdelete-nologid-text' => 'თქვენ არ მიგითითებიათ სამიზნო ჩანაწერი ჟურნალში მოქმედების განსახორციებლად ამ მოთხოვნილი ჩანაწერი არ არსებობს.',
 'revdelete-no-file' => 'მოთხოვნილი ფაილი არ არსებობს.',
 'revdelete-show-file-confirm' => 'დარწმუნებული ხართ, რომ გსურთ ამ ფაილის წაშლილი ვერსიის ნახვა, „<nowiki>$1</nowiki>“ $2, $3-დან ?',
 'revdelete-show-file-submit' => 'ჰო',
@@ -1126,11 +1115,10 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'revdelete-text' => "'''გვერდებისა და მოქმედებების წაშლილი ნაწილები დარჩება ისტორიაში და ჟურნალებში, მაგრამ მათ ნაწილს ვერ ნახავენ ჩვეულებრივი მომხმარებლები.'''
 პროექტის ადმინისტრატორებს ექნებათ შესაძლებლობა {{SITENAME}}ში დაინახონ ღია და არწაშლილი ნაწილი, და შეძლებენ აღადგინონ იგივე ინტერფეისის მეშვეობით, გარდა იმ შემთხვევებისა, როდესაც დამატებითი შეზღუდვა მოქმედებს.",
 'revdelete-confirm' => 'გთხოვთ დაადასტუროთ, რომ გსურთ ქმედების განხორციელება. ასევე ვიმედოვნებთ, რომ ყველაფერს აკეთებთ  [[{{MediaWiki:Policy-url}}|წესებთან შესაბამისობაში]].',
-'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს მხოლოდ ამ შემთხვევებში:
-
-
-* მიუსადეგი პირადი ინფორმაცია
-*: ''სახლის მისამართი, ტელეფონისა და პასპორტის ნომერი და მისთ. ''",
+'revdelete-suppress-text' => "დამალვა შეიძლება განხორციელდეს '''მხოლოდ''' შემდეგ შემთხვევებში:
+* პოტენციურად ცილისმწამებლური ინფორმაცია
+* უადგილო პირადი ინფორმაცია
+*: ''სახლის მისამართი, ტელეფონის ნომრები, პასპორტის ნომერი და ა.შ.''",
 'revdelete-legend' => 'შეზღუდვის დაყენება',
 'revdelete-hide-text' => 'შეცვლილი ტექსტი',
 'revdelete-hide-image' => 'ფაილის შინაარსის დამალვა',
@@ -1139,8 +1127,8 @@ $3 -ემ ამგვარი ახსნა : ''$2''",
 'revdelete-hide-user' => 'რედაქტორის მომხმარებლის სახელი/IP-მისამართი',
 'revdelete-hide-restricted' => 'დამალეთ მონაცემები ადმინისტრატორთაგან',
 'revdelete-radio-same' => '(არ შეცვალოთ)',
-'revdelete-radio-set' => 'á\83®á\83\98ლული',
-'revdelete-radio-unset' => 'á\83\93á\83\90á\83\9bá\83\90ლული',
+'revdelete-radio-set' => 'á\83\93á\83\90á\83\9bá\83\90ლული',
+'revdelete-radio-unset' => 'á\83®á\83\98ლული',
 'revdelete-suppress' => 'დამალეთ მონაცემები ადმინისტრატორთაგან',
 'revdelete-unsuppress' => 'მოხსენით შეზღუდვა ვერსიების აღდგენისგან',
 'revdelete-log' => 'მიზეზი:',
@@ -1152,8 +1140,6 @@ $1",
 'logdelete-failure' => "'''ჟურნალის ხილვადობა არ არის დაყენებული:'''
 $1",
 'revdel-restore' => 'ხილვადობის შეცვლა',
-'revdel-restore-deleted' => 'წაშლილი ვერსიები',
-'revdel-restore-visible' => 'ხილვადი ვერსიები',
 'pagehist' => 'გვერდის ისტორია',
 'deletedhist' => 'წაშლილი ისტორია',
 'revdelete-hide-current' => 'ჩანაწერის დამალვის შეცდიმა $2, $1: ეს არის მოქმედი ვერსია:
@@ -1161,7 +1147,7 @@ $1",
 'revdelete-show-no-access' => 'ჩანაწერის გახსნის შეცდომა $2-დან, $1: ეს ჩანაწერი მონიშნულია როგორც «შეზღუდული». თქვენ მას ვერ იხილავთ.',
 'revdelete-modify-no-access' => 'ჩანაწერის გასწორების შეცდომა $2-დან, $1: ეს ჩანაწერი მონიშნულია როგორც «შეზღუდული». თქვენ მას ვერ იხილავთ.',
 'revdelete-modify-missing' => 'შეცდომა ID $1 ნაწეის რედაქტირებისას, იგი არ იმყოფება მონაცემთა ბაზაში!',
-'revdelete-no-change' => "'''ყურადღება:''' ჩანაწერს $2, $1 უკვე ავს მოთხოვნილი ხილვადობის კონფიგურაცია.",
+'revdelete-no-change' => "'''á\83§á\83£á\83 á\83\90á\83\93á\83¦á\83\94á\83\91á\83\90:''' á\83©á\83\90á\83\9cá\83\90á\83¬á\83\94á\83 á\83¡ $2, $1 á\83£á\83\99á\83\95á\83\94 á\83\90á\83¥á\83\95á\83¡ á\83\9bá\83\9dá\83\97á\83®á\83\9dá\83\95á\83\9cá\83\98á\83\9aá\83\98 á\83®á\83\98á\83\9aá\83\95á\83\90á\83\93á\83\9dá\83\91á\83\98á\83¡ á\83\99á\83\9dá\83\9cá\83¤á\83\98á\83\92á\83£á\83 á\83\90á\83ªá\83\98á\83\90.",
 'revdelete-concurrent-change' => 'შეცდომა ჩანაწერის შესწორებისას $2-დან, $1: მისი სტატუსი უკვე შეცვლილია სხვა ვინმეს მიერ თქვენი რედაქირეის სესიის დროს.
 თხოვთ შეამოწმოთ ყველა ჟღნალი',
 'revdelete-only-restricted' => 'თქვენ ვერ დამალავთ ჩანაწერს ($2 $1) ადმინისტრატორისგან მანამ, სანამ არ აირჩევთ დამალვის სხვა პარამეტრებს.',
@@ -1229,12 +1215,8 @@ $1",
 # 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}}',
@@ -1243,10 +1225,8 @@ $1",
 'nextn-title' => 'შემდეგი $1 {{PLURAL:$1|რეზულტატი|რეზულტატები}}',
 'shown-title' => 'აჩვენეთ $1 {{PLURAL:$1|რეზულტატი|რეზულტატი}} გვერდზე',
 'viewprevnext' => 'იხილე  ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'ძიების დაწყობა:',
 'searchmenu-exists' => "'''ამ ვიკიპროექტში არის გვერდი „[[:$1]]“'''",
 'searchmenu-new' => "'''შექმენით გვერდი „[[:$1]]“ ამ ვიკიში!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|აჩვენეთ გვერდები ამ პრეფიქსით]]',
 'searchprofile-articles' => 'ძირითადი გვერდები',
 'searchprofile-project' => 'დახმარების და პროექტის გვერდები',
 'searchprofile-images' => 'მულტიმედია',
@@ -1267,21 +1247,16 @@ $1",
 'search-interwiki-default' => 'შედეგები $1-დან:',
 'search-interwiki-more' => '(გაგრძელება)',
 'search-relatedarticle' => 'დაკავშირებული',
-'mwsuggest-disable' => 'გათიშეთ ძიების შეთავაზებები',
 'searcheverything-enable' => 'ძიება სახელთა ყველა სივრცეებში',
 'searchrelated' => 'მიბმული',
 'searchall' => 'ყველა',
 'showingresults' => 'ქვემოთ იხილეთ <b>$1</b>-მდე შედეგი დაწყებული #<b>$2</b>-იდან.',
 'showingresultsnum' => 'ქვემოთ იხილეთ <b>$3</b> შედეგი დაწყებული #<b>$2</b>-იდან.',
 'showingresultsheader' => "{{PLURAL:$5|რეზულტატი '''$1'''  '''$3'''-დან|რეზულტატები '''$1 — $2''' -დან '''$3'''}}  '''$4'''-თვის",
-'nonefound' => "'''შენიშვნა''': სტანდარტული ძიება ყველა სახელთა სივრცეში არ ხორციელდება.
-მოსაძიებელ სიტყვას ან სიტყვათა ჯგუფს წინ წაუმძღვარეთ ''all:'' იმისათვის, რათა ძიება ყველგან განხორციელდეს (განხილვის გვერდების, თარგების და ა.შ. ჩათვლით) ან მიუთითეთ თქვენთვის სასურველი სახელთა სივრცე.",
 'search-nonefound' => 'მოთხოვნის შესაბამისობა არ არის ნაპოვნი.',
-'powersearch' => 'ძიება',
 'powersearch-legend' => 'გაფართოებული ძიება',
 'powersearch-ns' => 'ძიება სახელთა სივრცეებში:',
 'powersearch-redir' => 'გადამისამართებების სიის ჩვენება',
-'powersearch-field' => 'მოძებნე',
 'powersearch-togglelabel' => 'მონიშვნა:',
 'powersearch-toggleall' => 'ყველა',
 'powersearch-togglenone' => 'არაფერი',
@@ -1293,7 +1268,6 @@ $1",
 'preferences' => 'კონფიგურაცია',
 'mypreferences' => 'კონფიგურაცია',
 'prefs-edits' => 'რედაქციების რაოდენობა:',
-'changepassword' => 'პაროლის შეცვლა',
 'prefs-skin' => 'გარეკანი',
 'skin-preview' => 'წინასწარი გადახედვა',
 'datedefault' => 'წყარო მითითებული არაა',
@@ -1316,13 +1290,11 @@ $1",
 'prefs-email' => 'ელ-ფოსტის პარამეტრები',
 'prefs-rendering' => 'იერსახე',
 'saveprefs' => 'შენახვა',
-'resetprefs' => 'გადატვირთვა',
 'restoreprefs' => 'ყველა საწყისი პარამეტრის აღდგენა (ყველა სექციაში)',
 'prefs-editing' => 'რედაქტირება',
 'rows' => 'რიგები:',
 'columns' => 'სვეტები',
 'searchresultshead' => 'ძიება',
-'resultsperpage' => 'შედეგები გვერდის მიხედვით:',
 'stub-threshold' => 'გაფორმების გასაუმჯობესებლად <a href="#" class="stub"> მოცემულია ესკიზების ბმულები</a> (ბაიტებში):',
 'stub-threshold-disabled' => 'გათიშულია',
 'recentchangesdays' => 'ბოლო ცვლილებებში საჩვენებელი დღეები:',
@@ -1334,7 +1306,6 @@ $1",
 'localtime' => 'ადგილობრივი დრო:',
 'timezoneuseserverdefault' => 'გამოიყენე ნაგულისხმევი პარამეტრები ($1)',
 'timezoneuseoffset' => 'სხვა (მისათითებელი)',
-'timezoneoffset' => 'განსხვავება¹:',
 'servertime' => 'სერვერის დრო:',
 'guesstimezone' => 'ბრაუზერიდან შევსება',
 'timezoneregion-africa' => 'აფრიკა',
@@ -1585,13 +1556,14 @@ $1",
 'recentchanges-label-minor' => 'ეს არის მცირე შესწორება',
 'recentchanges-label-bot' => 'ეს არის ბოტის რედაქტირება',
 'recentchanges-label-unpatrolled' => 'ეს რედაქტირება გადაუმოწმებელია',
-'recentchanges-legend-newpage' => '$1 - ახალი გვერდი',
-'rcnote' => "ქვემოთ იხილეთ ბოლო '''$1''' ცვლილება უკანასკნელი '''$2''' დღის მანძილზე, $5, $4 მდგომარეობით.",
+'recentchanges-label-plusminus' => 'ცვლილებების ზომა ბაიტებში',
+'recentchanges-legend-heading' => "'''ლეგენდა:'''",
+'recentchanges-legend-newpage' => '(იხ. აგრეთვე [[Special:NewPages|ახალი გვერდების სია]])',
 'rcnotefrom' => "ქვემოთ მოყვანილია ცვლილებები '''$2'''-დან (ნაჩვენებია '''$1''').",
 'rclistfrom' => 'ახალი ცვლილებების ჩვენება დაწყებული $1-დან',
 'rcshowhideminor' => 'მცირე რედაქტირების $1',
 'rcshowhidebots' => 'რობოტების  $1',
-'rcshowhideliu' => 'რეგისტრირებული მომხმარებლების $1',
+'rcshowhideliu' => '$1 რეგისტრირებული მომხმარებელი',
 'rcshowhideanons' => 'ანონიმური მომხმარებლების $1',
 'rcshowhidepatr' => 'გაკონტროლებული ცვლილებების $1',
 'rcshowhidemine' => 'ჩემი რედაქტირების $1',
@@ -1992,7 +1964,7 @@ $1',
 'statistics-pages' => 'გვერდები',
 'statistics-pages-desc' => 'ვიკის ყველა გვერდი, განხილვის, გადამისამართების და სხვ. ჩათვლით.',
 'statistics-files' => 'ატვირთული ფაილები',
-'statistics-edits' => 'á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\94á\83\91á\83\98 á\83\9eá\83 á\83\9dá\83\94á\83¥á\83¢á\83\98á\83¡ {{SITENAME}} á\83¨á\83\94á\83¥á\83\9bá\83\9cá\83\98á\83¡ á\83¨á\83\94á\83\9bá\83\93á\83\94á\83\92',
+'statistics-edits' => 'á\83\92á\83\95á\83\94á\83 á\83\93á\83\98á\83¡ á\83¨á\83\94á\83¡á\83¬á\83\9dá\83 á\83\94á\83\91á\83\94á\83\91á\83\98 á\83\9bá\83\90á\83¡ á\83¨á\83\94á\83\9bá\83\93á\83\94á\83\92 á\83 á\83\90á\83ª á\83¨á\83\94á\83\98á\83¥á\83\9bá\83\9cá\83\90 á\83\9eá\83 á\83\9dá\83\94á\83¥á\83¢á\83\98 {{SITENAME}}',
 'statistics-edits-average' => 'რედაქტირების საერთო რაოდენობა გვერდზე',
 'statistics-views-total' => 'სულ ხილვა',
 'statistics-views-total-desc' => 'სათვალავში არ მიიღება არარსებული და სამუშაო გვერდების გადახედვა',
@@ -2072,10 +2044,8 @@ $1',
 'protectedpages' => 'დაცული გვერდები',
 'protectedpages-indef' => 'მხოლოდ უვადო დაცვები',
 'protectedpages-cascade' => 'მხოლოდ კასკადური დაცვა',
-'protectedpagestext' => 'შემდეგი გვერდები დაცულია გადატანისა თუ ცვლილებებისგან.',
 'protectedpagesempty' => 'ამ დროისთვის არ არსებობს დაცული გვერდები მოთხოვნილი პარამეტრებით.',
 'protectedtitles' => 'დაცული სათაურები',
-'protectedtitlestext' => 'შემდეგი სახელების გამოყენება არ შეიძლება',
 'protectedtitlesempty' => 'ამ დროისთვის არ არსებობს მოთხოვნილი გვერდები მოცემული პარამეტრებით.',
 'listusers' => 'მომხმარებლების სია',
 'listusers-editsonly' => 'აჩვენთ მხოლოდ ის მომხმარებლები, რომლებსაც ერთი შესწორება აქვს გაკეთებული.',
@@ -2128,9 +2098,6 @@ $1',
 'allpagesto' => 'გვერდები, რომლებიც სრულდება:',
 'allarticles' => 'ყველა სტატია',
 'allinnamespace' => 'ყველა გვერდი ($1 სახელთა სივრცეში)',
-'allnotinnamespace' => 'ყველა გვერდი ($1 სახელთა სივრცის გარეშე)',
-'allpagesprev' => 'წინა',
-'allpagesnext' => 'შემდეგი',
 'allpagessubmit' => 'ჩვენება',
 'allpagesprefix' => 'აჩვენე გვერდები პრეფიქსით:',
 'allpagesbadtitle' => 'მოცემული გვერდის სათაური არასწორია ან აქვს ინტერვიკი ან ნათშორისი პრეფიქსი. იგი შესაძლოა შეიცავდეს ერთ ან მეტ სიმბოლოს, რომელიც არ შეიძლება გამოყენებულ იქნას სათაურში.',
@@ -2188,7 +2155,7 @@ $1',
 შესაძლოა არსებობს [[{{MediaWiki:Listgrouprights-helppage}}|დამატებითი ინფორმაცია]] ინდივიდუალურ უფლებებთან დაკავშირებით.',
 'listgrouprights-key' => 'ლეგენდა:
 * <span class="listgrouprights-granted">მიცემული უფლებები</span>
-* <span class="listgrouprights-revoked">á\83\92á\83\90á\83¬á\83\95ეული უფლებები</span>',
+* <span class="listgrouprights-revoked">á\83©á\83\90á\83\9bá\83\9dá\83 á\83\97á\83\9bეული უფლებები</span>',
 'listgrouprights-group' => 'ჯგუფი',
 'listgrouprights-rights' => 'უფლებები',
 'listgrouprights-helppage' => 'Help:ჯგუფების უფლებები',
@@ -2219,7 +2186,7 @@ $1',
 'noemailtitle' => 'ელ. ფოსტის მისამართი მითითებული არ არის',
 'noemailtext' => 'მომხმარებელმა არ მიუთითა მოქმედი ელ. ფოსტის მისამართი.',
 'nowikiemailtitle' => 'წერილების გაგზავნის უფლება არ გაქვთ.',
-'nowikiemailtext' => 'á\83\90á\83\9b á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9aá\83\9bá\83\90 á\83\92á\83\90á\83\9bá\83\9dá\83®á\83\90á\83¢á\83\90 á\83¡á\83®á\83\95á\83\90 á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\94á\83\91á\83\98á\83¡á\83\92á\83\90á\83\9c á\83¬á\83\94á\83 á\83\98á\83\9aá\83\94á\83\91á\83\98á\83¡ á\83\90á\83  á\83\9bá\83\98á\83¦á\83\94á\83\91á\83\98á\83¡ á\83¡á\83£á\83 á\83\95á\83\98á\83\9aá\83\98.',
+'nowikiemailtext' => 'á\83\90á\83\9b á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\94á\83\9aá\83¡ á\83\90á\83  á\83¡á\83£á\83 á\83¡ á\83¬á\83\94á\83 á\83\98á\83\9aá\83\94á\83\91á\83\98á\83¡ á\83\9bá\83\98á\83¦á\83\94á\83\91á\83\90 á\83¡á\83®á\83\95á\83\90 á\83\9bá\83\9dá\83\9bá\83®á\83\9bá\83\90á\83 á\83\94á\83\91á\83\9aá\83\94á\83\91á\83\98á\83¡á\83\90á\83\92á\83\90á\83\9c.',
 'emailnotarget' => 'არარსებული ან არასწორი მომხმარებლის სახელი.',
 'emailtarget' => 'შეიყვანეთ მომხმარებლის სახელი ელ-ფოსტის გასაგზავნად.',
 'emailusername' => 'მომხმარებლის სახელი:',
@@ -2357,6 +2324,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'ამ გვერდს ძალიან გრძელი ისტორია გააჩნია,  $1 {{PLURAL:$1|ვერსიაზე|ვერსიიებზე|ვერსიებზე}} მეტი.
 მისმა წაშლამ შესაძლოა გამოიწვიოს საიტის მონაცემთა ბაზის  {{SITENAME}} არაკორექტული მუშაობა;
 იმოქმედეთ სიფრთხილით.',
+'deleting-backlinks-warning' => "'''გაფრთხილება:''' რამდენიმე სხვა გვერდი დაკავშირებულია ამ წასაშლელ გვერდთან.",
 
 # Rollback
 'rollback' => 'ცვლილებების გაუქმება',
@@ -2472,7 +2440,6 @@ $UNWATCHURL
 'undeletebtn' => 'აღდგენა',
 'undeletelink' => 'ნახვა/აღდგენა',
 'undeleteviewlink' => 'იხილე',
-'undeletereset' => 'გადატვირთეთ',
 'undeleteinvert' => 'გააუქმეთ გამოყოფა',
 'undeletecomment' => 'მიზეზი:',
 'undeletedrevisions' => '$1 ვერსია აღდგენილია',
@@ -2500,7 +2467,6 @@ $1',
 $1',
 'undelete-show-file-confirm' => 'დარწმუნებული ხართ, რომ გსურთ ფაილ <nowiki>$1</nowiki>-ის წაშლილი ვერსიის ხილვა $2 $3-დან?',
 'undelete-show-file-submit' => 'ჰო',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'სახელთა სივრცე:',
@@ -2561,7 +2527,6 @@ $1',
 'block' => 'მომხმარებლის დაბლოკვა',
 'unblock' => 'მომხმარებელზე ბლოკის მოხსნა',
 'blockip' => 'მომხმარებლის ან IP მისამართის ბლოკირება',
-'blockip-title' => 'მომხმარებლის დაბლოკვა',
 'blockip-legend' => 'მომხმარებლის დაბლოკვა',
 'blockiptext' => 'გამოიყენეთ ქვემოთ მოყვანილი ფორმა სპეციფიური IP მისამართის
 ან მომხმარებლისთვის რედაქტირების ბლოკირებისთვის.
@@ -2572,7 +2537,6 @@ $1',
 'ipadressorusername' => 'IP მისამართი ან მომხმარებლის სახელი',
 'ipbexpiry' => 'ვადა',
 'ipbreason' => 'მიზეზი:',
-'ipbreasonotherlist' => 'სხვა მიზეზი',
 'ipbreason-dropdown' => '* დაბლოკვის სტანდარტული მიზეზები
 ** ცრუ ინფორმაციის ჩამატება
 ** გვერდების შინაარსის წაშლა
@@ -2588,8 +2552,6 @@ $1',
 'ipbsubmit' => 'მომხმარებლის დაბლოკვა',
 'ipbother' => 'სხვა დრო',
 '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',
-'ipbotheroption' => 'სხვა',
-'ipbotherreason' => 'სხვა/დამატებითი მიზეზი:',
 'ipbhidename' => 'მომხმარებლის სახელის დამალვა შესწორებებსა და სიებში.შ',
 'ipbwatchuser' => 'ჩაამატეთ მომხმარებლის პირადი გვერდი და მისი განხილვის გვერდი კონტროლის სიაში.',
 'ipb-disableusertalk' => 'ამ მომხმარებლისათვის საკუთარი განხილვის გვერდის რედაქტირების აკრძალვა, სანამ იგი დაბლოკილია',
@@ -2679,7 +2641,6 @@ $1',
 'sorbsreason' => 'თქვენი IP-მისამართი მიჩნევა ღია პროქსიდ DNSBL-ის თანახმად.',
 'sorbs_create_account_reason' => 'თქვენი IP-მისამართი ითვლება ღია პროქსიდ DNSBL-ის ანახმად. თქვენ ვერ შექმნით ანგარიშს.',
 'xffblockreason' => 'დაიბლოკა IP-მისამართი, რომელიც იმყოფებოდა X-Forwarded-For-ის სათაურში და რომელიც გეკუთვნით თქვენ ან თქვენ მიერ გამოყენებულ პროქსი-სერვერს. დაბლოკვის თავდაპირველი მიზეზი იყო: $1',
-'cant-block-while-blocked' => 'თქვენ ვერ დაბლოკავთ სხვა მომხმარებლებს, რადგანაც თავად ხართ დაბლოკილი.',
 'cant-see-hidden-user' => 'მომხმარებელი, რომლის დაბლოკვასაც ცდილოთ, უკვე დაბლოკილია და დამალულია. რადგანაც თქვენ არ გაქვთ დამალულ მომხმარებლებთან მუშაობის ნებართვა, თქვენ ვერ შეცვლით ამ ბლოკს.',
 'ipbblocked' => 'თქვენ ვერ დაბლოკავთ ან მოხსნით ბლოკს სხვა მომხმარებლებს, რადგანაც თავად ხართ დაბლოკილი.',
 'ipbnounblockself' => 'თქვენ ვერ მოხსნოთ ბლოკს საკუთარ თავს',
@@ -2734,7 +2695,6 @@ $1',
 ამ შემთხვევებში, თქვენ თავად მოგიწევთ ამ გვერდის გადატანა, სურვილისამებრ.",
 'movearticle' => 'გვერდის გადატანა',
 'moveuserpage-warning' => "'''გაფრთხილება:''' თქვენ გადაგაქვთ მომხმარებლის გვერდი. გთხოვთ გაითვალისწინეთ, რომ გადატანა შესრულდება, მომხმარებლის სახელის გადარქმევა კი ''არა''.",
-'movenologin' => 'რეგისტრაცია ვერ გაიარა',
 'movenologintext' => 'თქვენ უნდა [[Special:UserLogin|წარუდგინოთ თავი]],
 სისტემას რათა გადაიტანოთ გვერდები.',
 'movenotallowed' => 'თქვენ არ გაქვთ გვერდების გადატანის უფლება.',
@@ -2750,8 +2710,6 @@ $1',
 'movepage-moved-noredirect' => 'გადამისამართება გაუქმდა.',
 'articleexists' => 'ამ დასახელების გვერდი უკვე არსებობს, ან თქვენს მიერ მითითებული დასახელება არასწორია. თუ შეიძლება, მიუთითეთ სხვა სახელი.',
 'cantmove-titleprotected' => 'შეუძლებელია გვერდის გადატანა, რადანაც მისი ახალი სახელი შავ სიაშია.',
-'talkexists' => "'''თვით გვერდი წარმატებით გადავიდა, ხოლო განხილვის გვერდი ვერ გადავიდა, ვინაიდან ის უკვე არსებობს ახალი სათაურით. გთხოვთ მანუალურად განაცალკევოთ ისინი.'''",
-'movedto' => 'გადატანილია',
 'movetalk' => 'დაკავშირებული განხილვის გადატანა',
 'move-subpages' => 'ქვეგვერდების გადატანა  ($1-მდე)',
 'move-talk-subpages' => 'განხილვის ქვეგვერდის გადატანა  ($1-მდე)',
@@ -3125,7 +3083,7 @@ $1',
 'svg-long-desc' => 'ფაილი SVG, ნომინალურად $1 × $2 პიქსელი, ფაილის ზომა: $3',
 'svg-long-desc-animated' => 'ანიმირებული SVG ფაილი, ნომინალური $1 × $2 პიქსელი, ფაილის ზომა: $3',
 'svg-long-error' => 'არასწორი SVG ფაილი: $1',
-'show-big-image' => 'á\83¡á\83 á\83£á\83\9aá\83\98 á\83\92á\83\90á\83 á\83©á\83\94á\83\95á\83\90á\83\93á\83\9dá\83\91á\83\90',
+'show-big-image' => 'á\83\97á\83\90á\83\95á\83\93á\83\90á\83\9eá\83\98á\83 á\83\95á\83\94á\83\9aá\83\98 á\83¤á\83\90á\83\98á\83\9aá\83\98',
 'show-big-image-preview' => 'ზომა წინასწარი გადახედვისას: $1.',
 'show-big-image-other' => 'სხვა {{PLURAL:$2|გაფართოება|გაფართოება}}: $1.',
 'show-big-image-size' => '$1 × $2 პიქსელი',
@@ -3629,15 +3587,10 @@ $8',
 'exif-urgency-high' => 'მაღალი ($1)',
 'exif-urgency-other' => 'მომხმარებლის მიერ განსაზღვრული პრიორიტეტი ($1)',
 
-# External editor support
-'edit-externally' => 'ამ ფაილის რედაქტირებისას გამოიყენეთ გარე პროგრამა',
-'edit-externally-help' => '(დაწვრილებითი ინფორმაციისთვის იხილეთ [https://www.mediawiki.org/wiki/Manual:External_editors ჩადგმის ინსტრუქციები])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ყველა',
 'namespacesall' => 'ყველა',
 'monthsall' => 'ყველა',
-'limitall' => 'ყველა',
 
 # Email address confirmation
 'confirmemail' => 'ელ. ფოსტის მისამართის დადასტურება',
@@ -3663,7 +3616,6 @@ $8',
 'confirmemail_needlogin' => 'თქვენ გჭირდებათ $1 თქვენი ელ-ფოსტის მისამართის დასადასტურებლად.',
 'confirmemail_success' => 'თქვენი ელ. ფოსტის მისამართი დადასტურებულია. ახლა შეგიძლიათ ვიკიში [[Special:UserLogin|შესვლა]].',
 'confirmemail_loggedin' => 'თქვენი ელ. ფოსტის მისამართის დადასტურება მიღებულია.',
-'confirmemail_error' => 'შეცდომა მოხდა თქვენი ელ. ფოსტის მისამართის დადასტურების დროს.',
 'confirmemail_subject' => '{{SITENAME}} ელ. ფოსტის მისამართის დადასტურება',
 'confirmemail_body' => 'ვიღაცამ, შესაძლოა თქვენ, IP მისამართით $1, დაარეგისტრირეთ
 ანგარიში "$2" ამ ელ-ფოსტის მისამართით აქ {{SITENAME}}.
@@ -3854,7 +3806,7 @@ $5
 'version-hook-subscribedby' => 'ჩაწერილია',
 'version-version' => '(ვერსია $1)',
 'version-svn-revision' => '(r$2)',
-'version-license' => 'ლიცენზია',
+'version-license' => 'á\83\9bá\83\94á\83\93á\83\98á\83\90á\83\95á\83\98á\83\99á\83\98á\83¡ á\83\9aá\83\98á\83ªá\83\94á\83\9cá\83\96á\83\98á\83\90',
 'version-poweredby-credits' => "ეს ვიკი მუშაობს '''[https://www.mediawiki.org/ MediaWiki]'''-ს ძრავზე, copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'სხვები',
 'version-poweredby-translators' => 'translatewiki.net-ის მთარგმნელები',
@@ -3874,7 +3826,7 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath გზა სკრიპტისაკენ]',
 
 # Special:Redirect
-'redirect' => 'გადამისამართება ფაილიდან, მომხმარებლიდან ან ვერსიის იდენტიფიკატორიდან',
+'redirect' => 'გადამისამართება ფაილიდან, მომხმარებლიდან, გვერდიდან ან ვერსიის იდენტიფიკატორიდან',
 'redirect-legend' => 'გადამისამართება ფაილზე ან გვერდზე',
 'redirect-submit' => 'მიდი',
 'redirect-lookup' => 'ძიება:',
@@ -3897,8 +3849,9 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 
 # Special:SpecialPages
 'specialpages' => 'სპეციალური გვერდები',
+'specialpages-note-top' => 'ლეგენდა',
 'specialpages-note' => '* ჩვეულებრივი სპეცგვერდები.
-* <span class="mw-specialpagerestricted">á\83¡á\83\9eá\83\94á\83ªá\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98 á\83¨á\83\94á\83\96á\83¦á\83£á\83\93á\83£á\83\9aá\83\98 á\83\9bá\83\98á\83¡á\83\90á\83¬á\83\95á\83\93á\83\9dá\83\9bá\83\9dá\83\91ით.</span>',
+* <span class="mw-specialpagerestricted">á\83¡á\83\9eá\83\94á\83ªá\83\92á\83\95á\83\94á\83 á\83\93á\83\94á\83\91á\83\98 á\83¨á\83\94á\83\96á\83¦á\83£á\83\93á\83£á\83\9aá\83\98 á\83¬á\83\95á\83\93á\83\9dá\83\9bით.</span>',
 'specialpages-group-maintenance' => 'ტექნიკური მომსახურების ანგარიშები',
 'specialpages-group-other' => 'სხვა სპეციალური გვერდები',
 'specialpages-group-login' => 'შესვლა / რეგისტრაცია',
@@ -3942,7 +3895,6 @@ MediaWiki ვრცელდება იმ იმედით, რომ ი
 
 # Special:ComparePages
 'comparepages' => 'გვერდების შედარება',
-'compare-selector' => 'გვერდების ვერსიების შედარება',
 'compare-page1' => '1 გვერდი',
 'compare-page2' => '2 გვერდი',
 'compare-rev1' => 'პირველი ვერსია',
index ec627fd..fdc5b05 100644 (file)
@@ -54,7 +54,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Kategoriyalar' ),
        'Contributions'             => array( 'Paydalanıwshı u\'lesi' ),
        'Deadendpages'              => array( 'Hesh betke siltemeytug\'ın betler' ),
-       'Disambiguations'           => array( 'Ko\'p ma\'nisliler' ),
        'DoubleRedirects'           => array( 'Qos burıwshılar' ),
        'Emailuser'                 => array( 'Xat jiberiw' ),
        'Export'                    => array( 'Eksport' ),
@@ -174,7 +173,6 @@ $messages = array(
 'tog-minordefault' => "Defolt boyınsha barlıq o'zgerislerdi kishi dep esaplaw",
 'tog-previewontop' => "O'zgertiw maydanınan aldın ko'rip shıg'ıw maydanın ko'rset",
 'tog-previewonfirst' => "Birinshi o'zgertiwdi ko'rip shıq",
-'tog-nocache' => "Brauzer bet keshlewin o'shir",
 'tog-enotifwatchlistpages' => "Baqlaw dizimimdegi bet o'zgertilgende mag'an xat jiber",
 'tog-enotifusertalkpages' => "Menin' sa'wbetim o'zgertilgende mag'an xat jiber",
 'tog-enotifminoredits' => "Kishi o'zgerisler haqqında da mag'an xat jiber",
@@ -282,7 +280,6 @@ $messages = array(
 'qbedit' => "O'zgertiw",
 'qbpageoptions' => 'Usı bet',
 'qbmyoptions' => "Menin' betlerim",
-'qbspecialpages' => 'Arnawlı betler',
 'faq' => 'KBS',
 'faqpage' => 'Project:KBS',
 
@@ -467,9 +464,6 @@ Bunı basqa birew aldınlaw o\'shigen bolıwı mu\'mkin.',
 'perfcachedts' => "To'mendegi mag'lıwmat keshlengen, aqırg'ı keshlengen waqtı: $1. Keshte en' ko'bi menen {{PLURAL:$4|juwap|$4 juwap}} saqalanadı.",
 'querypage-no-updates' => "Bul bettin' jan'alanıwı ha'zirshe o'shirilgen.
 Bul jerde keltirilgen mag'lıwmatlar o'zgertilmeydi.",
-'wrong_wfQuery_params' => 'wfQuery() funktsiyası ushın natuwrı parametrler berilgen<br />
-Funktsiya: $1<br />
-Soraw: $2',
 'viewsource' => "Deregin ko'riw",
 'actionthrottled' => "Ha'reket toqtatıldı",
 'actionthrottledtext' => "Spamg'a qarsı gu'res esabında, bunday ha'reketti qısqa waqıtta dım ko'p ma'rte bejeriwin'iz sheklenedi, ha'mde siz usı limitten o'tip ketkensiz.
@@ -573,7 +567,7 @@ Eger bul akkaunt nadurıs jaratılg\'an bolsa, bul xabarg\'a itibar bermesen\'iz
 'loginlanguagelabel' => 'Til: $1',
 
 # Change password dialog
-'resetpass' => "Paroldi o'zgertiw",
+'changepassword' => "Paroldi o'zgertiw",
 'resetpass_announce' => "E-mailin'izge jiberilgen waqtınshalıq kod penen kirdin'iz.
 Kiriw protsessin juwmaqlaw ushın jan'a parolin'izdi usı jerge kiritin':",
 'resetpass_header' => "Akkaunt parolin o'zgertiw",
@@ -794,21 +788,15 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
 # Search results
 'searchresults' => "İzlew na'tiyjeleri",
 'searchresults-title' => '"$1" sorawnaması boyınsha tabılg\'an na\'tiyjeler',
-'searchresulttext' => "{{SITENAME}} saytında izlew haqqında ko'birek mag'lıwmat alg'ın'ız kelse, [[{{MediaWiki:Helppage}}|{{int:help}} betine]] o'tip qarap ko'rin'.",
-'searchsubtitle' => 'İzlegenin\'iz: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" baslanıwshı barlıq betler]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" siltewshi barlıq betler]])',
-'searchsubtitleinvalid' => "'''$1''' ushın izlegenin'iz",
 'toomanymatches' => "Dım ko'p sa'ykeslikler qaytarıldı, basqa sorawdı isletip ko'rin'",
 'titlematches' => "Bet ataması sa'ykes keledi",
-'notitlematches' => 'Hesh qanday bet ataması tuwra kelmedi',
 'textmatches' => "Bet tekstinin' tuwra kelgenleri",
 'notextmatches' => 'Hesh qanday bet teksti tuwra kelmedi',
 'prevn' => "aldıng'ı {{PLURAL:$1|$1}}",
 'nextn' => 'keyingi {{PLURAL:$1|$1}}',
 'viewprevnext' => "Ko'riw: ($1 {{int:pipe-separator}} $2) ($3)",
-'searchmenu-legend' => 'İzlew sazlawları',
 'searchmenu-exists' => "'''Bul wikide \"[[:\$1]]\" atamalı bet bar'''",
 'searchmenu-new' => "'''Bul wikide \"[[:\$1]]\" betin jaratıw!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Usı prefiks penen baslanıwshı betlerdi ko'rset]]",
 'searchprofile-articles' => "Mag'lıwmat betleri",
 'searchprofile-project' => "Ja'rdem ha'm Proekt betleri",
 'searchprofile-images' => 'Multimediya',
@@ -828,26 +816,20 @@ Sha'rtli belgiler: (ha'z.) = ha'zirgi nusqasi menen parqı,
 'search-interwiki-default' => "$1 na'tiyje:",
 'search-interwiki-more' => "(ko'birek)",
 'search-relatedarticle' => 'Baylanıslı',
-'mwsuggest-disable' => "AJAX usınısların o'shir",
 'searchrelated' => 'baylanıslı',
 'searchall' => 'barlıq',
 'showingresults' => "To'mende '''$2''' ornınan baslap {{PLURAL:$1|'''1''' na'tiyje|'''$1''' shekemgi na'tiyjeler}} ko'rsetilgen.",
 'showingresultsnum' => "To'mende '''$2''' ornınan baslap {{PLURAL:$3|'''1''' na'tiyje|'''$3''' na'tiyje}} ko'rsetilgen.",
-'nonefound' => "'''Esletpe''': Defolt boyınsha tek g'ana sheklengen isimler ko'pliginen izlenedi.
-Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.b.) izlew ushın izlewin'izdi ''all:'' prefiksi menen baslan', yamasa qa'legen isimler ko'pligin prefiks esabında qollanın'.",
 'search-nonefound' => "Sorawg'a sa'ykes na'tiyje tabılmadı.",
-'powersearch' => "Ken'eytilgen izlew",
 'powersearch-legend' => "Ken'eytilgen izlew",
 'powersearch-ns' => "Usı isimler ko'pliginen izlew:",
 'powersearch-redir' => "Qayta bag'ıtlawshı betlerdi ko'rset",
-'powersearch-field' => "İzlenetug'ın so'z (yamasa so'z dizbegi):",
 'search-external' => 'Sırtqı izlewshi',
 
 # Preferences page
 'preferences' => 'Sazlawlar',
 'mypreferences' => "Menin' sazlawlarım",
 'prefs-edits' => "O'zgertiwler sanı:",
-'changepassword' => "Paroldi o'zgertiw",
 'prefs-skin' => "Sırtqı ko'rinis",
 'skin-preview' => 'Korip al',
 'datedefault' => 'Hesh sazlawlarsız',
@@ -862,7 +844,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'prefs-misc' => 'Basqa',
 'prefs-resetpass' => "Paroldi o'zgertiw",
 'saveprefs' => 'Saqla',
-'resetprefs' => "Saqlanbag'an o'zgerislerdi o'shir",
 'prefs-editing' => "O'zgertiw",
 'rows' => 'Qatarlar:',
 'columns' => "Bag'analar:",
@@ -875,7 +856,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'localtime' => 'Jergilikli waqıt:',
 'timezoneuseserverdefault' => "Serverdin' baslang'ısh sazlawların qollanıw: ($1)",
 'timezoneuseoffset' => "Basqa (o'zgeristi ko'rsetin')",
-'timezoneoffset' => "Saat o'zgerisi¹:",
 'servertime' => 'Server waqtı:',
 'guesstimezone' => 'Brauzerden alıp toltırıw',
 'allowemail' => 'Basqalardan xat qabıllawdı qos',
@@ -1035,7 +1015,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'recentchanges-label-bot' => "Bul o'zgeristi bot kiritti",
 'recentchanges-label-unpatrolled' => "Bul o'zgeris ele baqlanbag'an",
 'recentchanges-legend-newpage' => '$1 - taza bet',
-'rcnote' => "To'mende $4, $5 waqtındag'ı aqırg'ı {{PLURAL:$2|ku'ndegi|'''$2''' ku'ndegi}} {{PLURAL:$1|'''1''' o'zgeris ko'rsetilgen|aqırg'ı '''$1''' o'zgeris ko'rsetilgen}}.",
 'rcnotefrom' => "To'mende '''$2''' baslap '''$1''' shekemgi o'zgerisler ko'rsetilgen.",
 'rclistfrom' => "$1 waqtınan baslap jan'a o'zgerisler ko'rset",
 'rcshowhideminor' => "Kishi o'zgerislerdi $1",
@@ -1265,10 +1244,8 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'protectedpages' => "Qorg'alg'an betler",
 'protectedpages-indef' => "Tek belgisiz qorg'awlar",
 'protectedpages-cascade' => "Tek kaskadlı qorg'awlar",
-'protectedpagestext' => "To'mendegi betler ko'shiriw ha'm o'zgertiwden qorg'alg'an",
 'protectedpagesempty' => "Usı parametrler menen ha'zir hesh bet qorg'almag'an",
 'protectedtitles' => "Qorg'alg'an atamalar",
-'protectedtitlestext' => "To'mendegi atamalar jaratılıwdan qorg'alg'an",
 'listusers' => 'Paydalanıwshı dizimi',
 'listusers-editsonly' => "Tek o'zgeris kiritken paydalanıwshılardı ko'rset",
 'usereditcount' => "$1 {{PLURAL:$1|o'zgeris|o'zgeris}}",
@@ -1302,9 +1279,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
 'allpagesto' => "Usı betke shekem ko'rsetiw:",
 'allarticles' => "Ha'mme betler",
 'allinnamespace' => "Ha'mme betler ($1 isimler ko'pligi)",
-'allnotinnamespace' => "Ha'mme betler ($1 isimler ko'pliginen emes)",
-'allpagesprev' => "Aldıng'ı",
-'allpagesnext' => 'Keyingi',
 'allpagessubmit' => "O'tin'",
 'allpagesprefix' => "Mına prefiksten baslag'an betlerdi ko'rsetiw:",
 'allpages-bad-ns' => '{{SITENAME}} proyektinde "$1"  isimler ko\'pligi joq.',
@@ -1535,14 +1509,11 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
 'ipadressorusername' => 'IP Adres yamasa paydalanıwshı atı:',
 'ipbexpiry' => "Ku'shin joytıw waqtı:",
 'ipbreason' => 'Sebep:',
-'ipbreasonotherlist' => 'Basqa sebep',
 'ipbcreateaccount' => "Akkaunt jaratıwdı qadag'an etiw",
 'ipbemailban' => "Paydalanıwshını e-mail jiberiwden qadag'alaw",
 'ipbsubmit' => 'Bul paydalanıwshını bloklaw',
 'ipbother' => 'Basqa waqıt:',
 'ipboptions' => "2 saat:2 hours,1 ku'n:1 day,3 ku'n:3 days,1 ha'pte:1 week,2 h'apte:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 jil:1 year,sheksiz:infinite",
-'ipbotheroption' => 'basqa',
-'ipbotherreason' => 'Basqa/qosımsha sebep:',
 'badipaddress' => 'Jaramsız IP adres',
 'blockipsuccesssub' => 'Tabıslı qulplaw',
 'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] bloklang'an.<br />
@@ -1610,7 +1581,6 @@ dawam ettiriwden aldın qanday aqıbetlerge alıp keliwin oylap ko'rin'.",
 
 Bul jag'daylarda eger qa'lesen'iz betti qoldan ko'shiriwin'iz yamasa qosıwın'izg'a boladı.",
 'movearticle' => "Ko'shiriletug'ın bet:",
-'movenologin' => 'Kirilmegen',
 'newtitle' => 'Taza atama:',
 'move-watch' => 'Bul betti baqlaw',
 'movepagebtn' => "Betti ko'shir",
@@ -1618,8 +1588,6 @@ Bul jag'daylarda eger qa'lesen'iz betti qoldan ko'shiriwin'iz yamasa qosıwın'i
 'movepage-moved' => "'''\"\$1\" beti \"\$2\" betine ko'shirildi'''",
 'articleexists' => "Bunday atamalı bet bar yamasa natuwrı atama sayladın'ız.
 Basqa atama saylan'",
-'talkexists' => "'''Bettin' o'zi a'wmetli ko'shirildi, biraq sa'wbet beti ko'shirilmedi sebebi jan'a atamanın' sa'wbet beti bar eken. Olardı o'zin'iz qoldan qosın'.'''",
-'movedto' => "betke ko'shirildi",
 'movetalk' => "Baylanıslı sa'wbet betin ko'shiriw",
 'movelogpage' => "Ko'shiriw jurnalı",
 'movelogpagetext' => "To'mende ko'shirilgen betlerdin' dizimi keltirilgen.",
@@ -1799,10 +1767,6 @@ Eger fayl jaratılg'anınan keyin o'zgertilgen bolsa, geybir parametrleri o'zger
 'exif-imagedescription' => "Su'wret ataması",
 'exif-artist' => 'Avtor',
 
-# External editor support
-'edit-externally' => "Bul fayldı sırtqı bag'darlama arqalı o'zgertiw",
-'edit-externally-help' => "(Ko'birek mag'lıwmat ushın [https://www.mediawiki.org/wiki/Manual:External_editors ornatıw jolların] qaran')",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => "ha'mmesin",
 'namespacesall' => "ha'mmesi",
@@ -1824,7 +1788,6 @@ Kodtın' jaramlılıq waqtı pitken bolıwı mu'mkin.",
 'confirmemail_success' => "Sizin' e-mail adresin'iz tastıyıqlandı. 
 Endi wikige [[Special:UserLogin|kiriwin'iz]] mu'mkin.",
 'confirmemail_loggedin' => "Sizin' e-mail adresin'iz endi tastıyıqlandı.",
-'confirmemail_error' => "Tastıyıqlawın'ızdı saqlaw waqtında belgisiz qa'te ju'z berdi.",
 'confirmemail_subject' => '{{SITENAME}} e-pochta adresi tastıyıqaw xatı',
 'confirmemail_body' => "Geybirew, ba'lkimiz o'zin'iz shıg'ar, $1 IP adresinen,
 {{SITENAME}} saytında bul E-pochta adresin qollanıp «$2» degen akkaunt jarattı.
index ec45e1d..598854d 100644 (file)
@@ -50,12 +50,12 @@ $messages = array(
 'tog-hidepatrolled' => 'Ffer ibeddlen iεessan deg yibeddlen imaynuten',
 'tog-newpageshidepatrolled' => 'Ffer isebtaren iɛessan gar umuɣ n isebtaren imaynuten',
 'tog-extendwatchlist' => 'Ssemɣer umuɣ n uɛessi iwakken ad muqleɣ akk n wayen zemreɣ ad beddleɣ',
-'tog-usenewrc' => 'Sselhu ibeddlen ifessasen (JavaScript)',
+'tog-usenewrc' => 'Ssegrew ibeddlen s usebtar deg ibeddilen imaynuten d umuɣ n uḍfar',
 'tog-numberheadings' => 'Izwal ɣur-sen imḍanen mebla ma serseɣ-iten',
-'tog-showtoolbar' => 'Ssken tanuga n dduzan n ubeddel (JavaScript)',
-'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal (JavaScript)',
+'tog-showtoolbar' => 'Ssken tafeggagt n ifecka n ubeddel',
+'tog-editondblclick' => 'Beddel isebtar mi wekkiɣ snat n tikwal',
 'tog-editsection' => 'Eǧǧ abeddel n umur s yizdayen [beddel]',
-'tog-editsectiononrightclick' => 'Eǧǧ abeddel n umur mi wekkiɣ ɣef uyeffus<br /> ɣef yizwal n umur (JavaScript)',
+'tog-editsectiononrightclick' => 'Ssermed abeddel n tigezmi s ukliki ayeffus ɣef izwal',
 'tog-showtoc' => 'Ssken agbur (i isebtar i yesɛan kter n 3 izwalen)',
 'tog-rememberpassword' => 'Cfu ɣef yisem n umseqdac inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
 'tog-watchcreations' => 'Rnu isebtar i xelqeɣ deg wumuɣ n uɛessi inu',
@@ -65,15 +65,14 @@ $messages = array(
 'tog-minordefault' => 'Rcem akk ibeddlen am ibeddlen ifessasen d ameslugen',
 'tog-previewontop' => 'Ssken pre-timeẓriwt uqbel tankult ubeddel',
 'tog-previewonfirst' => 'Ssken pre-timeẓriwt akk d ubeddel amezwaru',
-'tog-nocache' => 'Ekkes lkac n usebter',
 'tog-enotifwatchlistpages' => "Azen-iyi-d e-mail m'ara yettubeddel asebter i ttɛassaɣ",
 'tog-enotifusertalkpages' => 'Azen-iyi-d e-mail asmi sɛiɣ izen amaynut',
 'tog-enotifminoredits' => 'Azen-iyi-d e-mail ma llan ibeddlen ifessasen',
 'tog-enotifrevealaddr' => 'Ssken e-mail inu asmi yettwazen email n talɣut',
 'tog-shownumberswatching' => 'Ssken geddac yellan n yimseqdacen iɛessasen',
 'tog-oldsig' => 'Azmul yellan :',
-'tog-fancysig' => 'ǧǧ azmul am yettili (war azday awurman)',
-'tog-uselivepreview' => 'Sseqdec pre-timeẓriwt taǧiḥbuṭ (JavaScript) (Experimental)',
+'tog-fancysig' => 'Eǧǧ azmul am yettili (war azday awurman)',
+'tog-uselivepreview' => 'Sseqdec askan arurad (Experimental)',
 'tog-forceeditsummary' => 'Ini-iyi-d mi sskecmeɣ agzul amecluc',
 'tog-watchlisthideown' => 'Ffer ibeddlen inu seg wumuɣ n uɛessi inu',
 'tog-watchlisthidebots' => 'Ffer ibeddlen n iboṭiyen seg wumuɣ n uɛessi inu',
@@ -86,10 +85,11 @@ $messages = array(
 'tog-showhiddencats' => 'Beqqeḍ taggayin yeffren',
 'tog-norollbackdiff' => 'Ur beqqeḍ ara "diff" ma yella usemmet',
 'tog-useeditwarning' => 'Σeggen iyid mi ara fγaγ seg usebter mebla ma skeslaγ ibeddilen.',
+'tog-prefershttps' => 'Sseqdec yalass tuqqna yettwaḥerzen mi teqqneḍ',
 
 'underline-always' => 'Daymen',
 'underline-never' => 'Abaden',
-'underline-default' => 'Browser/Explorateur ameslugen',
+'underline-default' => 'Azal s lexṣas n iminig neɣ n usentel',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Aɣanib n tasefsit n taɣzut ubeqqeḍ :',
@@ -113,47 +113,59 @@ $messages = array(
 'thu' => 'Amh',
 'fri' => 'Sem',
 'sat' => 'Sed',
-'january' => 'Yennayer',
-'february' => 'Furar',
-'march' => 'Meɣres',
-'april' => 'Yebrir',
-'may_long' => 'Mayu',
-'june' => 'Yunyu',
-'july' => 'Yulyu',
-'august' => 'Ɣuct',
-'september' => 'Ctamber',
-'october' => 'Tuber',
-'november' => 'Wamber',
-'december' => 'Dujamber',
-'january-gen' => 'Yennayer',
-'february-gen' => 'Furar',
-'march-gen' => 'Meɣres',
-'april-gen' => 'Yebrir',
-'may-gen' => 'Mayu',
-'june-gen' => 'Yunyu',
-'july-gen' => 'Yulyu',
-'august-gen' => 'Ɣuct',
-'september-gen' => 'Ctamber',
-'october-gen' => 'Tuber',
-'november-gen' => 'Wamber',
-'december-gen' => 'Dujamber',
-'jan' => 'Yen',
-'feb' => 'Fur',
-'mar' => 'Meɣ',
-'apr' => 'Yeb',
-'may' => 'May',
-'jun' => 'Yun',
-'jul' => 'Yul',
-'aug' => 'Ɣuc',
-'sep' => 'Cta',
-'oct' => 'Tub',
-'nov' => 'Wam',
-'dec' => 'Duj',
+'january' => 'yennayer',
+'february' => 'furar',
+'march' => 'meɣres',
+'april' => 'yebrir',
+'may_long' => 'Mayyu',
+'june' => 'yunyu',
+'july' => 'yulyu',
+'august' => 'ɣuct',
+'september' => 'ctamber',
+'october' => 'tuber',
+'november' => 'wamber',
+'december' => 'dujamber',
+'january-gen' => 'yennayer',
+'february-gen' => 'furar',
+'march-gen' => 'meɣres',
+'april-gen' => 'yebrir',
+'may-gen' => 'mayyu',
+'june-gen' => 'yunyu',
+'july-gen' => 'yulyu',
+'august-gen' => 'ɣuct',
+'september-gen' => 'ctamber',
+'october-gen' => 'tuber',
+'november-gen' => 'wamber',
+'december-gen' => 'dujamber',
+'jan' => 'yen',
+'feb' => 'fur',
+'mar' => 'meɣ',
+'apr' => 'yeb',
+'may' => 'may',
+'jun' => 'yun',
+'jul' => 'yul',
+'aug' => 'ɣuc',
+'sep' => 'cta',
+'oct' => 'tub',
+'nov' => 'wam',
+'dec' => 'duj',
+'january-date' => '$1 yennayer',
+'february-date' => '$1 fuṛaṛ',
+'march-date' => '$1 meɣres',
+'april-date' => '$1 yebrir',
+'may-date' => '$1 mayyu',
+'june-date' => '$1 yunyu',
+'july-date' => '$1 yulyu',
+'august-date' => '$1 ɣuct',
+'september-date' => '$1 ctamber',
+'october-date' => '$1 tuber',
+'november-date' => '$1 wamber',
+'december-date' => '$1 dujamber',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Taggayt|Taggayin}}',
-'category_header' => 'Imagraden deg taggayt "$1"',
-'subcategories' => 'Taggayin tizellumin',
+'category_header' => 'Isebtar deg taggayt "$1"',
+'subcategories' => 'Adutaggayin',
 'category-media-header' => 'Media deg taggayt "$1"',
 'category-empty' => "''Taggayt-agi d tilemt.''",
 'hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}}',
@@ -174,10 +186,11 @@ $messages = array(
 'newwindow' => '(teldi deg ttaq amaynut)',
 'cancel' => 'Eǧǧ-it am yella',
 'moredotdotdot' => 'Ugar...',
-'mypage' => 'Asebter inu',
-'mytalk' => 'Amyannan inu',
+'morenotlisted' => 'Umuɣ agi ur yella ara d ummid.',
+'mypage' => 'Asebtar',
+'mytalk' => 'Amyannan',
 'anontalk' => 'Amyannan n IP-yagi',
-'navigation' => 'Ẓer isebtar',
+'navigation' => 'Assilel',
 'and' => '&#32;u',
 
 # Cologne Blue skin
@@ -186,7 +199,6 @@ $messages = array(
 'qbedit' => 'Beddel',
 'qbpageoptions' => 'Asebter-agi',
 'qbmyoptions' => 'isebtar inu',
-'qbspecialpages' => 'isebtar usligen',
 'faq' => 'Isteqsiyen',
 'faqpage' => 'Project:Isteqsiyen',
 
@@ -207,6 +219,7 @@ $messages = array(
 'namespaces' => 'Talluntin n isemawen',
 'variants' => 'Tineḍwa',
 
+'navigation-heading' => 'Umuɣ n tunigin',
 'errorpagetitle' => 'Agul',
 'returnto' => 'Uɣal ar $1.',
 'tagline' => 'Seg {{SITENAME}}',
@@ -228,6 +241,7 @@ $messages = array(
 'create-this-page' => 'Snulfu asebter-agi',
 'delete' => 'Mḥu',
 'deletethispage' => 'Mḥu asebter-agi',
+'undeletethispage' => 'Erred asebter agi',
 'undelete_short' => 'Fakk amḥay n {{PLURAL:$1|yiwen ubeddel|$1 yibeddlen}}',
 'viewdeleted_short' => 'Ẓeṛ {{PLURAL:$1|yiwen abeddel yettumḥan|$1 Ibeddlen yettumḥan}}',
 'protect' => 'Ḥrez',
@@ -244,7 +258,7 @@ $messages = array(
 'articlepage' => 'Ẓer ayen yellan deg usebter',
 'talk' => 'Amyannan',
 'views' => 'Tuẓrin',
-'toolbox' => 'Dduzan',
+'toolbox' => 'Ifecka',
 'userpage' => 'Ẓer asebter n wemseqdac',
 'projectpage' => 'Ẓer asebter n usenfar',
 'imagepage' => 'Ẓer asebter n tugna',
@@ -274,7 +288,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).
 'aboutsite' => 'Awal ɣef {{SITENAME}}',
 'aboutpage' => 'Project:Awal ɣef...',
-'copyright' => 'Tzemreḍ ad twaliḍ ayen yella deg $1.',
+'copyright' => 'Agbur yella ddaw $1 ḥaca ma abdar anemgal.',
 'copyrightpage' => '{{ns:project}}:Izerfanɣel',
 'currentevents' => 'Isallen',
 'currentevents-url' => 'Project:Isallen',
@@ -302,8 +316,8 @@ $1',
 'youhavenewmessages' => 'Ɣur-k $1 ($2).',
 'youhavenewmessagesfromusers' => 'Tesɛiḍ $1 n {{PLURAL:$3|useqdac nniḍen|$3 iseqdacen nniḍen}} ( $2 ).',
 'youhavenewmessagesmanyusers' => 'Tesɛiḍ $1 n aṭas n iseqdacen ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|izen amaynut|inzan imaynuten}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|abeddel aneggaru|ibeddilen ineggura}}',
+'newmessageslinkplural' => '{{PLURAL:$1|izen amaynut|999=inzan imaynuten}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|abeddel aneggaru|999=ibeddilen ineggura}}',
 'youhavenewmessagesmulti' => 'Tesɛiḍ iznan imaynuten deg $1',
 'editsection' => 'beddel',
 'editold' => 'beddel',
@@ -351,6 +365,11 @@ $1',
 # General errors
 'error' => 'Agul',
 'databaseerror' => 'Agul n database',
+'databaseerror-text' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d. Ahat yella afuqes deg useɣẓan.',
+'databaseerror-textcl' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d.',
+'databaseerror-query' => 'Tuttra : $1',
+'databaseerror-function' => 'Tawuri: $1',
+'databaseerror-error' => 'Tuccḍa: $1',
 'laggedslavemode' => 'Aɣtal: Ahat asebter ur yesɛi ara akk ibeddlen imaynuten.',
 'readonly' => 'Database d tamsekkert',
 'enterlockreason' => 'Ini ayɣer tsekkreḍ database, ini daɣen melmi ara ad ifukk asekker',
@@ -384,20 +403,18 @@ Ahat amdan wayeḍ yemḥa-t.',
 'cannotdelete-title' => 'Ulamek an kkes  asebter « $1 »',
 'delete-hook-aborted' => 'Tukkesa tesemmet s usiɣzef.
 Ulac asefru ɣef wagi.',
+'no-null-revision' => 'Ur nezmer ara ad n-snulfu tacaggart tilemnt tamaynut i usebtar « $1 »',
 'badtitle' => 'Azwel ur yelhi',
 'badtitletext' => 'Asebter i testeqsiḍ fell-as mačči ṣaḥiḥ, d ilem, neɣ yella ugul deg wezday seg wikipedia s tutlayt tayeḍ neɣ deg wezday n wiki nniḍen. Ahat tesɛa asekkil ur yezmir ara ad yettuseqdac deg wezwel.',
 'perfcached' => 'Talɣut deg ukessar seg lkac u waqila mačči d tasiwelt taneggarut. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Talɣut deg ukessar seg lkac, tasiwelt taneggarut n wass $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Ibeddlen n usebter-agi ur ttbanen ara tura. Tilɣa ines qrib a d-banen.',
-'wrong_wfQuery_params' => 'Imsektayen mačči ṣaḥiḥ deg wfQuery()<br />
-Tawuri: $1<br />
-Query: $2',
 'viewsource' => 'Ẓer aɣbalu',
 'viewsource-title' => 'Ẓeṛ aɣbalu n $1',
 'actionthrottled' => 'Tigawt tesɛa talast',
 'actionthrottledtext' => 'Iwakken an ewwet mgal tira yerkan (SPAM), tigawt agi tesɛa talast n amḍan n tikwalt deg akud awezzlan. talast agi t-ɛedda.
 Ɛred tikkelt nniḍen deg kra n dqiqa.',
-'protectedpagetext' => 'Asebter-agi d amsekker.',
+'protectedpagetext' => 'Asebter-agi yetwaḥrez i uqareɛ n ubeddel neɣ tigawin nniḍen.',
 'viewsourcetext' => 'Tzemreḍ ad twaliḍ u txedmeḍ alsaru n uɣbalu n usebter-agi:',
 'viewyourtext' => 'Tzemṛeḍ ad ẓṛeḍ dɣa ad nɣeleḍ agbur n "ibeddlen inek/inem" deg usebter agi :',
 'protectedinterface' => 'Asebter-agi d amsekker axaṭer yettuseqdac i weḍris n software.',
@@ -407,6 +424,10 @@ $2',
 'namespaceprotected' => "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ isebtar n tallunt n isemawen \"'''\$1'''\".",
 'customcssprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n CSS, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
 'customjsprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n Javascript, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
+'mycustomcssprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi CSS.',
+'mycustomjsprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi JavaScript.',
+'myprivateinfoprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ tilɣa inek(em) tusligtin.',
+'mypreferencesprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ iɣewwaren inek(em).',
 'ns-specialprotected' => 'Ur t-zemred ara ad beddeleḍ isebtar usligen',
 'titleprotected' => "Azwel agi yegdel deg usnulfu ɣef [[User:$1|$1]].
 Taɣẓint id yenna : ''$2''",
@@ -416,7 +437,8 @@ Anedbal i tid sekkweṛen yefkad taɣẓint agi : « $3 ».',
 'invalidtitle-knownnamespace' => 'Azwel ur i ɣbel ara s tallunt n isemawen « $2 » dɣa d-uglam « $3 »',
 'invalidtitle-unknownnamespace' => 'Azwel ur i ɣbel ara s uṭṭun n tallunt n isemawen $1 dɣa d-uglam « $2 » warisem',
 'exception-nologin' => 'Ur tekcimeḍ ara',
-'exception-nologin-text' => 'I usebter agi naɣ i tigawt agi, ilaq ad qqeneḍ ɣef wiki agi.',
+'exception-nologin-text' => 'Ilaq ad [[Special:Userlogin|qqeneḍ]] iwakken ad kecmeḍ ar usebtar neɣ tawuri agi.',
+'exception-nologin-text-manual' => '$1 iwakken ad kecmeḍ ar asebtar neɣ tigawt agi.',
 
 # Virus scanner
 'virus-badscanner' => "Yir tawila : anafraḍ n infafaden warisem : ''$1''",
@@ -426,12 +448,24 @@ Anedbal i tid sekkweṛen yefkad taɣẓint agi : « $3 ».',
 # Login and logout pages
 'logouttext' => "'''Tura tesensereḍ.'''
 
-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.",
+Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ tazarkatut.",
+'welcomeuser' => 'Anṣuf, $1 !',
+'welcomecreation-msg' => 'Amian inek(em) yesnulfad.
+Tzemreḍ ad beddeleḍ {{SITENAME}} [[Special:Preferences|ismenyifen]] inek(em) ma tebɣiḍ.',
 'yourname' => 'Isem n wemseqdac',
+'userlogin-yourname' => 'Isem n useqdac',
+'userlogin-yourname-ph' => 'Sekcem isem-ik(im) n useqdac',
+'createacct-another-username-ph' => 'Sekcem isem n useqdac',
 'yourpassword' => 'Awal n tbaḍnit',
+'userlogin-yourpassword' => 'Awal n uɛeddi',
+'userlogin-yourpassword-ph' => 'Sekcem awal-ik(im) n uɛeddi',
+'createacct-yourpassword-ph' => 'Sekcem awal n uɛeddi',
 'yourpasswordagain' => 'Ɛiwed ssekcem awal n tbaḍnit',
+'createacct-yourpasswordagain' => 'Sergeg awal n uɛeddi',
+'createacct-yourpasswordagain-ph' => 'Sekcem awal n uɛeddi tikelt nniḍen',
 'remembermypassword' => 'Cfu ɣef wawal n tbaḍnit inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
+'userlogin-remembermypassword' => 'Eǧǧ taɣimit inu turmidt',
+'userlogin-signwithsecure' => 'Seqdec tuqqna yettwaḥerzen',
 'yourdomainname' => 'Taɣult inek',
 'password-change-forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi ɣef uwiki agi.',
 'externaldberror' => 'Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.',
@@ -443,17 +477,42 @@ Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi tem
 'logout' => 'Ffeɣ',
 'userlogout' => 'Ffeɣ',
 'notloggedin' => 'Ur tekcimeḍ ara',
+'userlogin-noaccount' => 'Ur tesɛiḍ ara amiḍan ?',
+'userlogin-joinproject' => 'Ddukkel ar {{SITENAME}}',
 'nologin' => "Ur tesɛiḍ ara isem n umseqdac? '''$1'''.",
 'nologinlink' => 'Xleq isem n wemseqdac',
 'createaccount' => 'Xleq isem n wemseqdac',
 'gotaccount' => "Tesɛiḍ yagi isem n wemseqdac? '''$1'''.",
 'gotaccountlink' => 'Kcem',
 'userlogin-resetlink' => 'Ettuḍ tilɣa n tuqqna ?',
-'createaccountmail' => 's e-mail',
+'userlogin-resetpassword-link' => 'Ettuḍ awal n uɛaddi ?',
+'helplogin-url' => 'Help:Tuqqna',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Tallalt i tuqqna]]',
+'userlogin-loggedin' => 'Teqqneḍ yakan am {{GENDER:$1|$1}}. Seqdec tiferkit ddaw-agi iwakken ad teqqneḍ s umiḍan nniḍen.',
+'userlogin-createanother' => 'Snulfud amiḍan nniḍen',
+'createacct-join' => 'Sekcem tilɣa inek(m) ddaw-agi.',
+'createacct-another-join' => 'Sekcem tilɣa n umiḍan amaynut ddaw-agi.',
+'createacct-emailrequired' => 'Tansa email',
+'createacct-emailoptional' => 'Tansa email (axetṛan)',
+'createacct-email-ph' => 'Sekcem tansa email inek(m)',
+'createacct-another-email-ph' => 'Sekcem tansa email',
+'createaccountmail' => 'Seqdec awal n uɛaddi agacuran akudan dɣa ceggeε-it ar tansa email yemlen',
+'createacct-realname' => 'Isem n tidets (axetṛan)',
 'createaccountreason' => 'Ayɣer',
+'createacct-reason' => 'Taɣẓint',
+'createacct-reason-ph' => 'Ayɣer ad snulfuḍ amiḍan nniḍen',
+'createacct-captcha' => 'Asenqed n taɣellist',
+'createacct-imgcaptcha-ph' => 'Sekcem aḍris i tezṛiḍ ddaw-agi',
+'createacct-submit' => 'Snulfud amiḍan inek(m)',
+'createacct-another-submit' => 'Snulfud amiḍan nniḍen',
+'createacct-benefit-heading' => '{{SITENAME}} yetwexdem sɣur medden am kečč/kem.',
+'createacct-benefit-body1' => '{{PLURAL:$1|abeddel|ibeddilen}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|asebter|isebtar}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|atekki amaynut|ittekkiyen imaynuten}}',
 'badretype' => 'Awal n tbaḍnit amezwaru d wis sin mačči d kif-kif.',
 'userexists' => 'Isem n wemseqdac yeddem-as amdan wayeḍ. Fren yiwen nniḍen.',
 'loginerror' => 'Agul n ukcam',
+'createacct-error' => 'Tuccda deg usnulfu n umiḍan',
 'createaccounterror' => 'Ulamek ad nesnulfu amiḍan : $1',
 'nocookiesnew' => 'Isem n wemseqdac-agi yettwaxleq, meɛna ur tekcimeḍ ara. {{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten, umbeɛd kecm s yisem n wemseqdac akk d wawal n tbaḍnit inek.',
 'nocookieslogin' => '{{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten iwakken ad tkecmeḍ.',
@@ -472,7 +531,7 @@ Ssenqed tira n yisem-nni, naɣ [[Special:UserLogin/signup|snulfu-d amiḍan amay
 'passwordtooshort' => 'Awal-ik (im) n uɛaddi ilaq ad i sɛu adday {{PLURAL:$1|1 asekkil|$1 isekkilen}}.',
 'password-name-match' => 'Ilaq awal n uɛaddi ad yili imeẓli s-isem n useqdac.',
 'password-login-forbidden' => 'aseqdac agi d awal n uɛaddi agi d-izenbigen.',
-'mailmypassword' => 'Awal n tbaḍnit n e-mail',
+'mailmypassword' => 'Awennez tikkelt nniḍen n awal uɛaddi',
 'passwordremindertitle' => 'Asmekti n wawal n tbaḍnit seg {{SITENAME}}',
 'passwordremindertext' => 'Amdan (waqila d kečč/kem, seg tansa IP $1) yesteqsa iwakken a nazen
 Awal n uɛaddi amaynut i {{SITENAME}} ($4). Awal n uɛaddi i wemseqdac "$2" yuɣal-d tura "$3".
@@ -486,37 +545,39 @@ Lukan mačči d kečč i yesteqsan naɣ tecfiḍ ɣef awal n uɛaddi, tzemreḍ
 G leɛnaya-k, kcem tikelt nniḍen yis-s.',
 'blocked-mailpassword' => 'Tansa n IP inek tɛekkel, ur tezmireḍ ara ad txedmeḍ abeddel,
 ur tezmireḍ ara ad tesɛuḍ awal n tbaḍnit i tettuḍ.',
-'eauthentsent' => 'Yiwen e-mail yettwazen-ak iwakken ad tsenteḍ.
-Qbel kulci, ḍfer ayen yenn-ak deg e-mail,
-iwakken ad tbeyyneḍ belli tansa n email inek.',
-'throttled-mailpassword' => 'Asmekti n wawal n uɛaddi yettwazen yagi deg {{PLURAL:$1|asrag agi aneggaru| $1 isragen agi ineggura}}. Asmekti n wawal n uɛaddi yettwazen tikelt kan mkul $1 swayeɛ. deg {{PLURAL:$1|asrag|azilal n $1 isragen}}.',
+'eauthentsent' => 'Yiwen email yetweceggeε ar tansa id efkeḍ.
+Uqbel ad n-ceggeε email nniḍen, ilaq ad ḍfereḍ ayen yellan deg email dɣa ad sergegeḍ amiḍan agi d win inek(m).',
+'throttled-mailpassword' => 'Neceggɛed yakan tirawt n uwennez i awal-ik/im n uɛaddi deg {{PLURAL:$1|asrag agi aneggaru|$1 isragen agi ineggura}}. Awennez n uwal n uɛaddi yettwaceggaɛ tikelt kan deg {{PLURAL:$1|asrag|$1 isragen}}.',
 'mailerror' => 'Agul asmi yettwazen e-mail: $1',
 'acct_creation_throttle_hit' => 'Amdan i seqdacen tansa IP inek/inem yesnulfud {{PLURAL:$1|yiwen amiḍan|$1 imiḍanen}} deg 24 izragen agi ineggura, negweḍ ar talast n turagt deg azilal agi n wakud.',
-'emailauthenticated' => 'Tansa e-mail inek/inem tesesteb ass n $2 af $3.',
-'emailnotauthenticated' => 'Tansa e-mail inek mazal ur tettuɛqel. Ḥedd e-mail ur ttwazen i ulaḥedd n iḍaɣaren-agi.',
+'emailauthenticated' => 'Tansa e-mail inek/inem tesergeg ass n $2 af $3.',
+'emailnotauthenticated' => 'Tansa email inek mazal ur tettuɛqel. Ur d netceggaɛ ara email i yal tiseɣnin agi.',
 'noemailprefs' => 'Efk tansa e-mail iwakken ad leḥḥun iḍaɣaren-nni.',
 'emailconfirmlink' => 'Sentem tansa e-mail inek',
 'invalidemailaddress' => 'Tansa e-mail-agi ur telhi, ur tesɛi ara taseddast n lɛali. Ssekcem tansa e-mail s taseddast n lɛali neɣ ur tefkiḍ acemma.',
 'cannotchangeemail' => 'Ur t-zemreḍ ara ad beddeleḍ tansa e-mail deg uwiki agi.',
 'emaildisabled' => 'Asmel agi ur yezmer ara ad i cegaɛ e-mail.',
 'accountcreated' => 'Isem n wemseqdac yettwaxleq',
-'accountcreatedtext' => 'Isem n wemseqdac i $1 yettwaxleq.',
+'accountcreatedtext' => 'Amiḍan n umseqdac i [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|amyannan]]) yexelqed.',
 'createaccount-title' => 'Asnulfu n umiḍan i {{SITENAME}}',
 'createaccount-text' => 'Albeɛḍ yesnulfu-d amiḍan i tansa e-amil inek/inem ɣef {{SITENAME}} ($4) s-isem n-useqdac « $2 », s awal n uɛaddi « $3 ».
 Ilaq tura ad lldiḍ taɣimit dɣa ad beddeleḍ awal ik/im n uɛaddi.',
 'usernamehasherror' => 'Isem n useqdac ur yezmer ara ad i sɛu  isekkilen n ugeddeḥ',
 'login-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.
-Ilaq ad rǧuḍ ciṭaḥ uqbel ad ɛerdeḍ tikkelt nniḍen.',
+Ilaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.',
 'login-abort-generic' => 'Taremt ik/im n tuqqna tebrir',
 'loginlanguagelabel' => 'Tutlayt: $1',
 'suspicious-userlogout' => 'Asuter n usenser yugwi acku yella ugur s iminig naɣ s tazarkatut n uqeddac proxy.',
+'createacct-another-realname-tip' => '* Isem n ṣṣeḥ d-axeṭran.
+Ma teɛzemeḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yuran tikkin inek.',
 
 # Email sending
 'php-mail-error-unknown' => 'anezri warisem deg tawuri mail() n PHP',
 'user-mail-no-addy' => 'Ɛred ad icegaɛ e-mail war tansa e-mail',
+'user-mail-no-body' => 'Arram n uceggaɛ email s tafekka tilemt neɣ d-awezlan aṭas.',
 
 # Change password dialog
-'resetpass' => 'Beddel awal n uɛaddi',
+'changepassword' => 'Beddel awal n tbaḍnit',
 'resetpass_announce' => 'Tkecmeḍ s ungal yettwazen-ak s e-mail (ungal-nni qrib yemmut). Iwekken tkemmleḍ, yessefk ad textareḍ awal n tbaḍnit amaynut dagi:',
 'resetpass_text' => '<!-- Rnu aḍris dagi -->',
 'resetpass_header' => 'Beddel awal n uɛassi n umiḍan',
@@ -524,7 +585,7 @@ Ilaq ad rǧuḍ ciṭaḥ uqbel ad ɛerdeḍ tikkelt nniḍen.',
 'newpassword' => 'Awal n tbaḍnit amaynut:',
 'retypenew' => 'Ɛiwed ssekcem n tbaḍnit amaynut:',
 'resetpass_submit' => 'Eg awal n tbaḍnit u kcem',
-'changepassword-success' => 'Awal n tbaḍnit yettubeddel! Qrib ad tkecmeḍ...',
+'changepassword-success' => 'Awal n uɛaddi yettubeddel s lerbaḥ !',
 'resetpass_forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi',
 'resetpass-no-info' => 'Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.',
 'resetpass-submit-loggedin' => 'Beddel awal n uɛaddi',
@@ -532,32 +593,36 @@ Ilaq ad rǧuḍ ciṭaḥ uqbel ad ɛerdeḍ tikkelt nniḍen.',
 'resetpass-wrong-oldpass' => 'Awal n uɛaddi ur i seɣbel ara.
 Ahat ilaq ad beddeleḍ awal ik/im n uɛaddi naɣ ad ssutereḍ awal n uɛaddi amaynut.',
 'resetpass-temp-password' => 'Awal n uɛaddi amakud',
+'resetpass-abort-generic' => 'Asiɣzef yesemmewet abeddel n uwal n uɛaddi.',
 
 # Special:PasswordReset
 'passwordreset' => 'Awennez tikkelt nniḍen n awal uɛaddi',
+'passwordreset-text-one' => 'Ččur tiferkit agi iwakken ad wennezeḍ awal-ik/im n uɛaddi.',
+'passwordreset-text-many' => '{{PLURAL:$1|Čcur yiwet n tiɣwezza iwakken ad rmeseḍ awal n uɛaddi uɛḍil deg tirawt.}}',
 'passwordreset-legend' => 'Awennez tikkelt nniḍen n awal uɛaddi',
 'passwordreset-disabled' => 'Awennez n awal uɛaddi yensa deg uwiki agi.',
+'passwordreset-emaildisabled' => 'Tiseɣnin email nsant ɣef wiki agi.',
 'passwordreset-username' => 'Isem n useqdac',
 'passwordreset-domain' => 'Talɣut :',
 'passwordreset-capture' => 'Ẓeṛ tirawt ?',
 'passwordreset-capture-help' => 'Lukan ad tekkiḍ ɣef texxamt agi, tirawt (deg-es awal n uɛaddi akudan) att beqqeḍ dɣa ad tetwetceggaɛ i useqdac.',
 'passwordreset-email' => 'Tansa e-mail :',
 'passwordreset-emailtitle' => 'Tilɣa n umiḍan ɣef {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Yiwen (Ahat kečč/kem, seg tansa IP $1) yessutered asiwel n tilɣa n umiḍan inek/inem i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yedrew|imiḍanen n iseqdacen agi drewen}} s tansa e-mail agi :
+'passwordreset-emailtext-ip' => 'Yiwen (Ahat kečč/kem, seg tansa IP $1) yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :
 
 $2
 
-{{PLURAL:$3|Awal n uɛaddi agi ad i aff tasewti-s|Awalen n uɛaddi agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
-'passwordreset-emailtext-user' => 'Aseqdac $1 ɣef {{SITENAME}} yessutered asiwel n tilɣa n umiḍan inek/inem i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yedrew|imiḍanen n iseqdacen agi drewen}} s tansa e-mail agi :
+{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
+'passwordreset-emailtext-user' => 'Aseqdac $1 ɣef {{SITENAME}} yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :
 
 $2
 
-{{PLURAL:$3|Awal n uɛaddi agi ad i aff tasewti-s|Awalen n uɛaddi agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
+{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
 'passwordreset-emailelement' => 'Isem n useqdac : $1
 Awal n uɛddi akudan : $2',
-'passwordreset-emailsent' => 'Tirawt n usmekti tetwazen.',
-'passwordreset-emailsent-capture' => 'Tirawt n usmekti tetwazen, ẓeṛ-itt ddaw agi.',
-'passwordreset-emailerror-capture' => 'Tirawt n usmekti t-arewed, ẓeṛ-itt ddaw agi, lamaɛna azen yefkad anezri (tirawt ur tru ara) : $1',
+'passwordreset-emailsent' => 'Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ.',
+'passwordreset-emailsent-capture' => 'Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ, ẓeṛ-itt ddaw agi.',
+'passwordreset-emailerror-capture' => 'Tirawt n uwennez n awal n uɛaddi t-arewed, ẓeṛ-itt ddaw agi, lamaɛna aceggaɛ i {{GENDER:$2|umseqdac}} yefkad anezri : $1',
 
 # Special:ChangeEmail
 'changeemail' => 'Beddel tansa n e-mail',
@@ -567,9 +632,23 @@ Awal n uɛddi akudan : $2',
 'changeemail-oldemail' => 'Tansa e-mail n tura :',
 'changeemail-newemail' => 'Tansa e-mail tamaynut :',
 'changeemail-none' => '(ulac)',
+'changeemail-password' => 'Awal-ik/im n uɛaddi ɣef {{SITENAME}} :',
 'changeemail-submit' => 'Beddel tansa e-mail',
 'changeemail-cancel' => 'Semmewet',
 
+# Special:ResetTokens
+'resettokens' => 'Wennez tiddas',
+'resettokens-text' => 'D-agi tzemreḍ ad twennezeḍ tiddas i ɛemmeden ad kecmeḍ ar isefka usligen i qqenen ar amiḍan inek/inem.
+
+Ilaq ad twennezeḍ tiddas ma tferqeḍ-ten s tuccḍa s umseqdac nniḍen neɣ ma amiḍan inek/inem yexṣer.',
+'resettokens-no-tokens' => 'Ulac tiddas an wennez.',
+'resettokens-legend' => 'Wennez tiddas',
+'resettokens-tokens' => 'Tiddas :',
+'resettokens-token-label' => '$1 (azal amiran : $2)',
+'resettokens-watchlist-token' => 'Tiddest i usuddem (Atom/RSS) web n [[Special:Watchlist|ibeddilen n isebtar n umuɣ inek/inem n uḍfar]]',
+'resettokens-done' => 'Tiddas i wennezen.',
+'resettokens-resetbutton' => 'Wennez tiddas i fernen',
+
 # Edit page toolbar
 'bold_sample' => 'Aḍris aberbuz',
 'bold_tip' => 'Aḍris aberbuz',
@@ -644,8 +723,8 @@ Smekti-ten u fka-ten i unedbal-nni.",
 'loginreqlink' => 'Kcem',
 'loginreqpagetext' => 'Yessefk $1 iwakken ad teẓriḍ isebtar wiyaḍ.',
 'accmailtitle' => 'Awal n tbaḍnit yettwazen.',
-'accmailtext' => "Awal n uɛaddi id yuran s ugacur i [[User talk:$1|$1]] yetwecgaɛ i $2.
-Awal n uɛaddi i umiḍan agi amaynut yezmer ad yetbeddel ɣef usebter n ''[[Special:ChangePassword|ubeddel n awal uɛddi]]'' sakin tuqqna.",
+'accmailtext' => 'Awal n uɛaddi id yuran s ugacur i [[User talk:$1|$1]] yetweceggaɛ i $2.
+Yezmer ad yetbeddel ɣef usebtar [[Special:ChangePassword|Abeddel n awal uɛddi]] sakin tuqqna.',
 'newarticle' => '(Amaynut)',
 'newarticletext' => 'Tḍefreḍ azday ɣer usebter mazal ur yettwaxleq ara.
 Akken ad txelqeḍ asebter-nni, aru deg tenkult i tella deg ukessar
@@ -681,7 +760,7 @@ Asekcem aneggaru n useklas n ikyafen yella ddaw agi :',
 
 '''Cfut, ttagi d azar-timeẓriwt kan.'''
 Ibeddlen mazal ur ttusmektin ara!",
-'continue-editing' => 'Kemmel abeddel',
+'continue-editing' => 'Ṛuḥ ar taɣzut n ubeddel',
 'previewconflict' => 'Pre-timeẓriwt-agi tesskan aḍris i yellan deg usawen lemmer tebɣiḍ a tt-tesmektiḍ.',
 'session_fail_preview' => "'''Suref-aɣ! ur nezmir ara a nesmekti abeddil inek axaṭer yella ugur.
 G leɛnayek ɛreḍ tikelt nniḍen. Lukan mazal yella ugur, ffeɣ umbeɛd kcem.'''",
@@ -741,7 +820,7 @@ Tzemreḍ ad uɣaleḍ ar deffir dɣa ad beddeleḍ asebter yellan yakan, naɣ [
 'nocreate-loggedin' => 'Ur tesɛiḍ ara turagt i usnulfu n isebtar imaynuten.',
 'sectioneditnotsupported-title' => 'Abeddel n tigezmi agi ur yezmer ara',
 'sectioneditnotsupported-text' => 'Abeddel n tigezmi ur yezmer ara deg usebtar agi n ubeddel.',
-'permissionserrors' => 'Anezri n turagt',
+'permissionserrors' => 'Agul n turagt',
 'permissionserrorstext' => 'Ur tesɛiḍ ara turagt iwakken ad xedmeḍ wayagi i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
 'permissionserrorstext-withaction' => 'Ur sɛiḍ ara ttesriḥ af $2, i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
 'recreate-moveddeleted-warn' => "'''Ɣur-wet : asebter agi i tebɣam ad snulfum, yetwekkes uqbel.'''
@@ -755,12 +834,18 @@ Tamentilt warisem',
 Ahat yetwemḥa.',
 'edit-conflict' => 'Amgirred n ubeddel.',
 'edit-no-change' => 'Abeddel inek/inem ur yetwexdam ara acku ur di ban ara abeddel deg uḍris.',
+'postedit-confirmation' => 'Abeddel inek/inem yetwakles.',
 'edit-already-exists' => 'Asebter amaynut ur d yesnufu ara.
 Yella yakan.',
 'defaultmessagetext' => 'Izen s lexṣas',
 'content-failed-to-parse' => 'Tasleṭ n ugbur n $2 i talɣa $1 texseṛ : $3',
 'invalid-content-data' => 'Isefka n ugbur ur ɣbelen ara',
 'content-not-allowed-here' => 'Agbur "$1" ur yesɛa ara turagt ɣef usebter [[$2]]',
+'editwarning-warning' => 'Ma ad teffeɣeḍ deg usebtar agi, akkw ibeddilen id xeddemeḍ ad sṛuḥen.
+
+Ma teqqeneḍ, tzemreḍ ad senseḍ alɣu agi deg tigezmi « Abeddel » n ismenyifen inek/inem.',
+'editpage-notsupportedcontentformat-title' => 'Amasal n ugbur ur d-yetwarfed ara',
+'editpage-notsupportedcontentformat-text' => 'Amasal n ugbur $1 ur d-yetwarfed ara sɣur talɣa n ugbur $2.',
 
 # Content models
 'content-model-wikitext' => 'wikiaḍris',
@@ -792,12 +877,16 @@ Ilaq ad i sɛu ddaw n  $2 {{PLURAL:$2|tiɣri|tiɣriwin }}, wannag tura {{PLURAL:
 'undo-failure' => 'Ur yezmir ara ad issefu abeddel axaṭer yella amennuɣ abusari deg ubeddel.',
 'undo-norev' => 'Abeddel ur yezmer ara ad yetwekkes acku ulac-itt naɣ tetwekkes yakan',
 'undo-summary' => 'Ssefsu tasiwelt $1 sɣur [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]])',
+'undo-summary-username-hidden' => 'Semmewet tacaggart $1 sɣur amseqdac yeffren',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Ur yezmir ara ad yexleq isem n wemseqdac',
 'cantcreateaccount-text' => "Asnulfu n umiḍan seg tansa IP (<b>$1</b>) tekyef sɣur [[User:$3|$3]].
 
 Taɣẓint n $3 : ''$2''",
+'cantcreateaccount-range-text' => "Asnulfu n umiḍan seg tansiwin IP deg tagrumma '''$1''', i sseddan tansa inek/inem IP ('''$4'''), twawḥelen sɣur [[User:$3|$3]].
+
+Taɣẓint i-d yefka/tefka $3 : ''$2''",
 
 # History pages
 'viewpagelogs' => 'Ẓer aɣmis n usebter-agi',
@@ -819,8 +908,8 @@ Tabadut: (tura) = amgirred akk d tasiwelt n tura,
 (amgirred) = amgirred akk d tasiwelt ssabeq, M = abeddel afessas.',
 'history-fieldset-title' => 'Inig deg umazray',
 'history-show-deleted' => 'Ekkes kan',
-'histfirst' => 'Tikkin timezwura',
-'histlast' => 'Tikkin tineggura',
+'histfirst' => 'tiqdimin',
+'histlast' => 'timaynutin',
 'historysize' => '({{PLURAL:$1|1 atamḍan|$1 itamḍanen}})',
 'historyempty' => '(amecluc)',
 
@@ -867,10 +956,6 @@ Tzemreḍ att ẓṛeḍ ; tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|p
 'revisiondelete' => 'Mḥu/kkes amḥay tisiwal',
 'revdelete-nooldid-title' => 'Lqem asaḍas ur i ɣbel ara',
 'revdelete-nooldid-text' => 'Ur textareḍ ara lqem nnican akken ad txedmeḍ tawuri fell-as.',
-'revdelete-nologtype-title' => 'Ulac tawsit n uɣmis',
-'revdelete-nologtype-text' => 'Ur d ssefruḍ ara tawsit n uɣmis ɣef anwa tigawt agi ad tetwexdam.',
-'revdelete-nologid-title' => 'Asekcem n uɣmis ur i ɣbel ara',
-'revdelete-nologid-text' => 'Ur d ssefruḍ ara asekcem n uɣmis ɣef anwa tigawt agi ilaq ad tetwexdam, naɣ tadyant agi ur tella ara.',
 'revdelete-no-file' => 'Afaylu id ssefruḍ ur yella ara.',
 'revdelete-show-file-confirm' => 'Tebɣriḍ ad mḥuḍ tacaggart n ufaylu « <nowiki>$1</nowiki> » n $2 af $3 ?',
 'revdelete-show-file-submit' => 'Ih',
@@ -879,19 +964,20 @@ Tzemreḍ att ẓṛeḍ ; tilɣa llant deg [{{fullurl:{{#Special:Log}}/delete|p
 'revdelete-text' => 'Ileqman d tidyanin yettumḥan ad qqimen deg umezruy n usebter dɣa deg iɣmisen, maca agbur nsen ur i sɛu ara tuffart i uzayez."
 Inedbalen wiyaḍ deg {{SITENAME}} zemren ad ẓṛen imuren i yettwafren u zemren a ten-mḥan, ḥaca ma llan icekkilen.',
 'revdelete-confirm' => 'Sergeg ma tebɣiḍ ad xedmeḍ tigawt agi, fehmeḍ inalkamen, dɣa temtawiḍ s [[{{MediaWiki:Policy-url}}|ilugan]].',
-'revdelete-suppress-text' => "Ilaq tukksa at illi kan deg tijṛa agi :
-* tilɣa n yiwen ur ezgan ara
-*: ''tansa, uṭṭun n tilifun, uṭṭun n taɣellist tamettit, …''",
+'revdelete-suppress-text' => "Ilaq tukksa att illi \"kan\" deg tijṛa agi :
+* Tilɣa ahat tinergamin
+* Tilɣa ur sɛant ara amkan d-agi
+*: ''tansa, uḍḍun n tilifun, uḍḍun n taɣellist tamettit, …''",
 'revdelete-legend' => 'Sbebd akref n tamuɣli',
-'revdelete-hide-text' => 'Ffer aḍris n tsiwelt',
+'revdelete-hide-text' => 'Aḍris n tacaggart',
 'revdelete-hide-image' => 'Ffer ayen yellan deg ufaylu',
 'revdelete-hide-name' => 'Ffer tigawt d nnican',
-'revdelete-hide-comment' => 'Ffer abeddel n uwennit',
-'revdelete-hide-user' => 'Ffer Isem n wemseqdac/IP n umeskar',
+'revdelete-hide-comment' => 'Beddel agzul',
+'revdelete-hide-user' => 'Isem n umseqdac/Tansa IP n umaẓrag',
 'revdelete-hide-restricted' => 'Mḥu isefka agi i inedbalen d yimdanen wiyaḍ',
 'revdelete-radio-same' => '(ur beddel ara)',
-'revdelete-radio-set' => 'Ih',
-'revdelete-radio-unset' => 'Ala',
+'revdelete-radio-set' => 'Udrig',
+'revdelete-radio-unset' => 'Yeban',
 'revdelete-suppress' => 'Kkes talɣut seg inedbalen d yimdanen wiyaḍ',
 'revdelete-unsuppress' => 'Kkes icekkilen ɣef tisiwal i yuɣalen-d',
 'revdelete-log' => 'Ayɣer',
@@ -903,8 +989,6 @@ $1",
 'logdelete-failure' => "'''Iẓṛi n uɣmis ur yezmer ara ad yesbadu :'''
 $1",
 'revdel-restore' => 'beddel timezrit',
-'revdel-restore-deleted' => 'allas iqḍeεen',
-'revdel-restore-visible' => 'allas i nezmer an ẓeṛ',
 'pagehist' => 'Amezruy n usebter',
 'deletedhist' => 'Amezruy yemḥa',
 'revdelete-hide-current' => 'Yella anezri imi nemḥa aferdis yezemzen ass n $1 af $2 : d lqem aneggaru.
@@ -970,6 +1054,7 @@ Senked d akken tamhelt agi ad eǧǧ amezruy n usebtar ad ikemmel.',
 'compareselectedversions' => 'Ẓer imgerraden ger tisiwal i textareḍ',
 'showhideselectedversions' => 'Ssken/Ffer ileqman i xtiṛen',
 'editundo' => 'ssefsu',
+'diff-empty' => '(Ulac amgerrad)',
 'diff-multi' => '({{PLURAL:$1|Yiwet tasiwelt tabusarit|$1 n tisiwal tibusarin}} af {{PLURAL:$2|amseqdac|$2 imseqdacen}} {{PLURAL:$1|ur ttumlal ara|ur ttumlalent ara}})',
 'diff-multi-manyusers' => '({{PLURAL:$1|Yiwen lqem agrawan|$1 ileqman igrawanen}} af {{PLURAL:$2|aseqdac|$2 iseqdacen}} {{PLURAL:$1|yeffer|ffren}})',
 'difference-missing-revision' => '{{PLURAL:$1|Yiwet tacaggart|$1 ticaggartin}} n tameẓla agi ($1) {{PLURAL:$2|ur tella ara (ulac)|ur llant ara (ulac)}}.
@@ -980,12 +1065,8 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 # Search results
 'searchresults' => 'Igmad n unadi',
 'searchresults-title' => 'Igmad n unadi i "$1"',
-'searchresulttext' => 'Akken ad tessneḍ amek ara tnadiḍ deg {{SITENAME}}, ẓer [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Tnudaḍ « '''[[:$1]]''' » ([[Special:Prefixindex/$1|akkw isebtar i zwiren s « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Akkw isebtar yesɛan azday ɣer « $1 »]])",
-'searchsubtitleinvalid' => "Tnadiḍ ɣef '''$1'''",
 'toomanymatches' => 'Teceggeɛeḍ amḍan ameqqṛan n igemmaḍ, ilaq ad ceggeɛeḍ tuttra nniḍen.',
 'titlematches' => 'Ayen yecban azwel n umegrad',
-'notitlematches' => 'Ulac ayen yecban azwel n umegrad',
 'textmatches' => 'Ayen yecban azwel n usebter',
 'notextmatches' => 'ulac ayen yecban azwel n usebter',
 'prevn' => '{{PLURAL:$1|$1}} ssabeq',
@@ -994,10 +1075,8 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'nextn-title' => '$1 {{PLURAL:$1|agmud n sakin|igmad n sakin}}',
 'shown-title' => 'Beqqeḍ $1 {{PLURAL:$1|agmud|igmad}} s usebter',
 'viewprevnext' => 'Ẓer ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tixtiṛiyin n unadi',
 'searchmenu-exists' => "'''Yella asebter s isem \"[[:\$1]]\" deg wiki agi.'''",
 'searchmenu-new' => "'''Snulfud asebter « [[:$1|$1]] » deg wiki agi !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Nadi isebtar i zwaren s adat agi]]',
 'searchprofile-articles' => 'Isebtar n ugbur',
 'searchprofile-project' => 'Isebtaren n tallat dɣa n usenfa',
 'searchprofile-images' => 'Agetmedia',
@@ -1018,32 +1097,28 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'search-interwiki-default' => 'Igemmaḍ ɣef $1 :',
 'search-interwiki-more' => '(ugar)',
 'search-relatedarticle' => 'Amassaɣ',
-'mwsuggest-disable' => 'Ssens isumar n AJAX',
 'searcheverything-enable' => 'Nadi deg akkw tallunin n isemawen',
 'searchrelated' => 'ineqqes',
 'searchall' => 'akk',
 'showingresults' => "Tamuli n {{PLURAL:$1|'''Yiwen''' wegmud|'''$1''' n yigmad}} seg  #'''$2'''.",
 'showingresultsnum' => "Tamuli n {{PLURAL:$3|'''Yiwen''' wegmud|'''$3''' n yigmad}} seg  #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Agmud '''$1'''|Igmad '''$1–$2'''}} n '''$3''' i '''$4'''",
-'nonefound' => "'''Tamawt''' : S lexṣas, ala kra n tallunin n isemawen t-seqdacen i unadi.
-Ɛreḍ s udat ''all:'' i unadi deg akkw ugbur (ula d-isebtar n umeslay, talɣiwin, ...) naɣ seqdec tallunt n isemawen i tebɣiḍ am adat.",
 'search-nonefound' => 'Ulac igmad i usuter agi.',
-'powersearch' => 'Anadi amahlan',
 'powersearch-legend' => 'Anadi amahlan',
 'powersearch-ns' => 'Nadi deg tallunin n isemawen',
 'powersearch-redir' => 'Beqqeḍ isemmimḍen',
-'powersearch-field' => 'Nadi',
 'powersearch-togglelabel' => 'Ɛellem :',
 'powersearch-toggleall' => 'Akkw',
 'powersearch-togglenone' => 'Ulac',
 'search-external' => 'Anadi yeffɣen',
 'searchdisabled' => 'Anadi deg {{SITENAME}} yettwakkes. Tzemreḍ ad tnadiḍ s Google. Meɛna ur tettuḍ ara, tasmult n google taqdimt.',
+'search-error' => 'Tella tuccḍa deg unadi n : $1',
 
 # Preferences page
 'preferences' => 'Isemyifiyen',
-'mypreferences' => 'Isemyifiyen inu',
+'mypreferences' => 'Isemyifiyen',
 'prefs-edits' => 'Amḍan n ibeddlilen :',
-'changepassword' => 'Beddel awal n tbaḍnit',
+'prefsnologintext2' => 'Ilaq ad $1 iwakken ad sbaduḍ ismenyifen inek/inem.',
 'prefs-skin' => 'Aglim',
 'skin-preview' => 'Pre-timeẓriwt',
 'datedefault' => 'Ur sɛiɣ ara asemyifi',
@@ -1066,25 +1141,25 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 'prefs-email' => 'Tixtiṛiyin n tira',
 'prefs-rendering' => 'Tummant',
 'saveprefs' => 'Smekti',
-'resetprefs' => 'Asfeḍ n ibeddilen ur ḥrezen ara',
-'restoreprefs' => 'Err akkw azalen s lexṣas',
+'restoreprefs' => 'Err akkw iɣewwaren s lexṣas (deg akkw tigezmiwin)',
 'prefs-editing' => 'Abedddil',
 'rows' => 'Ijerriḍen:',
 'columns' => 'Tigejda:',
 'searchresultshead' => 'Anadi',
-'resultsperpage' => 'Geddac n tiririyin i mkul asebter:',
 'stub-threshold' => 'Talast timinegt i <a href="#" class="stub">izdayen ɣer ibegzan</a> (itamḍanen) :',
 'stub-threshold-disabled' => 'Yensa',
 'recentchangesdays' => 'Amḍan n ussan an beqqeḍ deg ibeddilen ineggura.',
 'recentchangesdays-max' => 'Afellay $1 {{PLURAL:$1|ass|ussan}}',
 'recentchangescount' => 'Amḍan n ibeddilen i ubeqqeḍ s lexṣas :',
 'prefs-help-recentchangescount' => 'Wagi yesɛa deg-es ibeddilen ineggura, isebtar n umezruy d iɣmisen.',
+'prefs-help-watchlist-token2' => 'Hattan tasarut tufurt n usuddem Web n umuɣ inek/inem n uḍfar.
+Akkw amḍan yesɛan tasarut agi, ad yezmer ad i ɣer umuɣ inek/inem n uḍfar, ur d-sselɣu ara tasarut agi ihi.
+[[Special:ResetTokens|Nqer d-agi ma tebɣiḍ ad wennezeḍ tasarut agi]].',
 'savedprefs' => 'Isemyifiyen inek yettusmektan.',
 'timezonelegend' => 'Iẓḍi n ukud :',
 'localtime' => 'Asrag adigan :',
 'timezoneuseserverdefault' => 'Seqdec azal s lexṣas n wiki ($1)',
 'timezoneuseoffset' => 'Nniḍen (ssefru asekḥer)',
-'timezoneoffset' => 'Asekḥer n usrag¹ :',
 'servertime' => 'Asrag n uqeddac :',
 'guesstimezone' => 'Sseqdec azal n browser/explorateur',
 'timezoneregion-africa' => 'Tafriqt',
@@ -1110,9 +1185,9 @@ Tzemreḍ ad affeḍ tilɣa deg [{{fullurl:{{#Special:Log}}/delete|page={{FULLPA
 Wagi ur yezmer ara ad yetwekkes.',
 'prefs-emailconfirm-label' => 'Aragag n tirawt :',
 'youremail' => 'E-mail *:',
-'username' => 'Isem n wemseqdac:',
-'uid' => 'Amseqdac ID:',
-'prefs-memberingroups' => 'Aεeggal n {{PLURAL:$1|ugraw|igrawen}} :',
+'username' => '{{GENDER:$1|Isem n umseqdac|Isem n tamseqdact}} :',
+'uid' => 'Uḍḍun n {{GENDER:$1|umseqdac|tamseqdact}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Aεeggal|Taɛggalt}} n {{PLURAL:$1|ugraw|igrawen}} :',
 'prefs-registration' => 'Azmez n tiggezt :',
 'yourrealname' => 'Isem n ṣṣeḥ *:',
 'yourlanguage' => 'Tutlayt:',
@@ -1123,11 +1198,13 @@ Wagi ur yezmer ara ad yetwekkes.',
 'badsig' => 'Azmul mačči d ṣaḥiḥ; Ssenqed tags n HTML.',
 'badsiglength' => 'Azmul inek/inem, teɣwzi-s tameqqṛant aṭas.
 Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
-'yourgender' => 'Tawsit :',
-'gender-unknown' => 'Ulac tumlin',
-'gender-male' => 'Amalay',
-'gender-female' => 'Untay',
-'prefs-help-gender' => 'Axetṛan : yetseqdec iwakken ad yefk tawsit i inzan n ugrudem. Talɣut agi at illi tazayert.',
+'yourgender' => 'Amek i tebɣiḍ ad n-ini fellak(m) ?',
+'gender-unknown' => 'Ur bɣiɣ ara ad iniɣ',
+'gender-male' => 'Yebeddel isebtar n wiki',
+'gender-female' => 'Tebeddel isebtar n wiki',
+'prefs-help-gender' => 'Sbadu asmenyif agi d-afrayan.
+Aseɣẓan agi yetseqdac azal-is iwakken ad yemeslay s kečč/kem dɣa ad yefk isem-ik/im i wiyaḍ nniḍen s useqdac n tawsit tajeṛṛumant.
+Talɣut agi attili d-tazayezt.',
 'email' => 'E-mail',
 'prefs-help-realname' => '* Isem n ṣṣeḥ (am tebɣiḍ): ma textareḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yura tikkin inek.',
 'prefs-help-email' => '* E-mail (am tebɣiḍ): Teǧǧi imseqdacen wiyaḍ a k-aznen email mebla ma ẓren tansa email inek.',
@@ -1138,7 +1215,9 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'prefs-signature' => 'Azmul',
 'prefs-dateformat' => 'Amasal n izemzan',
 'prefs-timeoffset' => 'Asekḥer n usrag',
-'prefs-advancedediting' => 'Tixtiṛiyin timahlanin',
+'prefs-advancedediting' => 'Tixtiṛiyin timuta',
+'prefs-editor' => 'Amaẓrag',
+'prefs-preview' => 'Azarskan',
 'prefs-advancedrc' => 'Tixtiṛiyin timahlanin',
 'prefs-advancedrendering' => 'Tixtiṛiyin timahlanin',
 'prefs-advancedsearchoptions' => 'Tixtiṛiyin timahlanin',
@@ -1146,7 +1225,10 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'prefs-displayrc' => 'Tixtiṛiyin n ubeqqeḍ',
 'prefs-displaysearchoptions' => 'Tixtiṛiyin n ubeqqeḍ',
 'prefs-displaywatchlist' => 'Tixtiṛiyin n ubeqqeḍ',
+'prefs-tokenwatchlist' => 'Tiddest',
 'prefs-diffs' => 'Timeẓliwin',
+'prefs-help-prefershttps' => 'Asmenyif agi, ad yelḥu ar tuqqna ay d-yetteddun.',
+'prefs-tabs-navigation-hint' => 'Taxbalut : Tzemreḍ ad seqdeceḍ tineccabin n uzelmaḍ d uyeffus iwakken ad ssileleḍ gar iccaren.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-mail agi teɣbel',
@@ -1170,9 +1252,11 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'userrights-no-interwiki' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ izerfan n iseqdacen ɣef wiki nniḍen.',
 'userrights-nodatabase' => 'Taffa n isefka « $1 » ulac itt naɣ mačči d tadigant.',
 'userrights-nologin' => 'Ilaq ad [[Special:UserLogin|qqeneḍ]] s yiwen umiḍan anedbal iwakken ad beddeleḍ izerfan n useqdac.',
-'userrights-notallowed' => 'Amiḍan inek/inem ur yesɛa ara turagt iwakken ad beddeleḍ izerfan n useqdac.',
+'userrights-notallowed' => 'Ur tesɛiḍ ara turagt ad rnuḍ neɣ ad ekkeseḍ izerfan n umseqdac.',
 'userrights-changeable-col' => 'Igrawen i tzemreḍ ad beddeleḍ',
 'userrights-unchangeable-col' => 'Igrawen ur tzemreḍ ara ad beddeleḍ',
+'userrights-conflict' => 'Ccwal n ubeddel n izerfan n umseqdac ! Ilaq ad ɛzemeḍ tikelt nniḍen dɣa ad sergegeḍ ibeddilen.',
+'userrights-removed-self' => 'Tekkeseḍ s lerbaḥ izerfan inek/inem. Tura ur tzemreḍ ara ad kecmeḍ ar usebtar agi.',
 
 # Groups
 'group' => 'Adrum:',
@@ -1216,7 +1300,7 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'right-reupload-shared' => 'Ɛefes deg udigan afaylu yellan ɣef azadur azduklan',
 'right-upload_by_url' => 'Kter afaylu seg tansa URL',
 'right-purge' => 'Senger tazarkatut n isebtar war asuter n uragag',
-'right-autoconfirmed' => 'Beddel isebtar azinsegdelen',
+'right-autoconfirmed' => 'Ur i tilli ara yeswaɣ sɣur tilisa n uktum yeqqenen ar tansiwin IP',
 'right-bot' => 'Ad yilli yesniret am ukala yeswurmen',
 'right-nominornewtalk' => 'Ur ndeḥ ara tazmilt n inzan imaynuten ma neseqdac abeddel amectuḥ ɣef usebtar n umeslay n yiwen useqdac',
 'right-apihighlimits' => 'Seqdec tilisa tid ɛlayen deg tuttriwin API',
@@ -1236,13 +1320,21 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'right-hideuser' => 'Kyef aseqdac s tuffra n isem-is ar udem n uzayez',
 'right-ipblock-exempt' => 'Zizdew tansiwin IP yekyefen, ikyafen iwurmanen d ikyafen n tagrummiwin IP',
 'right-proxyunbannable' => 'Zizdew ikyafen iwurmanen n iqeddacen proxy',
-'right-unblockself' => 'Ad ekkesen akyaf imanen nsen',
-'right-protect' => 'Beddel aswir n umesten n isebtar dɣa beddel isebtar i gdelen',
-'right-editprotected' => 'Beddel isebtar i gdelen (war asegdel s uceṛcuṛ)',
+'right-unblockself' => 'Ad yekkes akyaf iman-is',
+'right-protect' => 'Beddel iswiren n umesten dɣa beddel isebtar i gdelen s uceṛcuṛ',
+'right-editprotected' => 'Beddel isebtar i gdelen s « {{int:protect-level-sysop}} »',
+'right-editsemiprotected' => 'Beddel isebtar i gdelen s « {{int:protect-level-autoconfirmed}} »',
 'right-editinterface' => 'Beddel agrudem n useqdac',
 'right-editusercssjs' => 'Beddel ifuyla CSS d JavaScript n iseqdacen nniḍen',
 'right-editusercss' => 'Beddel ifuyla CSS n iseqdacen nniḍen',
 'right-edituserjs' => 'Beddel ifuyla JavaScript n iseqdacen nniḍen',
+'right-editmyusercss' => 'Beddel ifuyla CSS n umseqdac inek/inem',
+'right-editmyuserjs' => 'Beddel ifuyla Javascript n umseqdac inek/inem',
+'right-viewmywatchlist' => 'Zeṛ umuɣ inek/inem n uḍfar',
+'right-editmywatchlist' => 'Beddel umuɣ inek/inem n uḍfar. Ger tamawt af kra n tigawin ad rnunt isebtar nniḍen war azref agi.',
+'right-viewmyprivateinfo' => 'Zeṛ isefka udmawanen inek/inem (amedya : tansa email, isem n tiddet)',
+'right-editmyprivateinfo' => 'Beddel isefka udmawanen inek/inem (amedya : tansa email, isem n tiddet)',
+'right-editmyoptions' => 'Beddel ismenyifen inek/inem',
 'right-rollback' => 'Ekkes s urured ibeddilen n umedraw aneggaru deg yiwen asebter',
 'right-markbotedits' => 'Creḍ ibeddilen yetwekkesen am aken d aṛubut i tni beddelen.',
 'right-noratelimit' => 'Ur i tilli ara yeswaɣ sɣur tilisa n utug',
@@ -1294,8 +1386,8 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'action-block' => 'Kyef deg tira aseqdac agi',
 'action-protect' => 'beddel iswiren n umesten i usebter agi',
 'action-rollback' => 'ekkes s urured ibeddilen n umedraw aneggaru yebeddelen yiwen usebter',
-'action-import' => 'Kter asebter agi seg wiki nniḍen',
-'action-importupload' => 'Kter asebter agi seg ufaylu n wezdam (upload)',
+'action-import' => 'kter isebtar agi seg wiki nniḍen',
+'action-importupload' => 'kter isebtar agi seg ufaylu n wezdam',
 'action-patrol' => 'Creḍ abeddel n wiyaḍ nniḍen am aken tesɛa tacaggart',
 'action-autopatrol' => 'ad sɛuḍ tacaggart i ubeddil ik',
 'action-unwatchedpages' => 'Sken-d tabdart n isebtaren ur yettwalan ara.',
@@ -1304,23 +1396,33 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'action-userrights-interwiki' => 'Ẓreg izerfan n umseqdac deg wikis wiyaḍ',
 'action-siteadmin' => 'sekkweṛ naɣ kkes aseḍru i taffa n isefka',
 'action-sendemail' => 'Ceggaɛ tira',
+'action-editmywatchlist' => 'beddel umuɣ inek uḍfar',
+'action-viewmywatchlist' => 'zeṛ umuɣ inek/inem n uḍfar',
+'action-viewmyprivateinfo' => 'zeṛ tilɣa inek tusligin',
+'action-editmyprivateinfo' => 'beddel tilɣa inek tusligin',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|Abeddel|Ibeddlen}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|seg tarzaft taneggarut}}',
+'enhancedrc-history' => 'amezruy',
 'recentchanges' => 'Ibeddilen imaynuten',
 'recentchanges-legend' => 'Tifranin n ibeddilen imaynuten',
 'recentchanges-summary' => 'Ḍfer ibeddilen imaynuten n {{SITENAME}}.',
+'recentchanges-noresult' => 'Ulac abeddel yecban ayen i ttnadiḍ ɣef tallit id efkeḍ.',
 'recentchanges-feed-description' => 'Ḍfer ibeddilen imaynuten n wiki-yagi deg usuddem-agi.',
 'recentchanges-label-newpage' => 'Abeddel agi ad yesnulfu asebter amaynut',
 'recentchanges-label-minor' => 'Wagi d-abeddel amectuḥ',
 'recentchanges-label-bot' => 'D-arubut id yeseqdacen abeddel agi',
 'recentchanges-label-unpatrolled' => 'Abeddel agi mazal yesɛa aselken.',
-'rcnote' => "Deg ukessar {{PLURAL:$1|yella '''yiwen''' ubeddel aneggaru|llan '''$1''' n yibeddlen ineggura}} deg {{PLURAL:$2|wass aneggaru|'''$2''' wussan ineggura}}, deg uzemz $5 ass n $4.",
+'recentchanges-label-plusminus' => 'Tiddi n usebtar tetwebeddel s umḍan agi n itamḍanen.',
+'recentchanges-legend-heading' => "'''Aglam :'''",
+'recentchanges-legend-newpage' => '(zeṛ daɣen [[Special:NewPages|umuɣ n isebtar imaynuten]]).',
+'recentchanges-legend-plusminus' => "(''± 123'')",
 'rcnotefrom' => "Deg ukessar llan ibeddlen seg wasmi '''$2''' (ar '''$1''').",
 'rclistfrom' => 'Ssken ibeddlen imaynuten seg $1',
 'rcshowhideminor' => '$1 ibeddlen ifessasen',
 'rcshowhidebots' => '$1 irubuten',
-'rcshowhideliu' => '$1 n yimseqdacen i ikecmen',
+'rcshowhideliu' => '$1 imseqdacen imseklesen',
 'rcshowhideanons' => '$1 n yimseqdacen udrigen',
 'rcshowhidepatr' => '$1 n yibeddlen yettwassenqden',
 'rcshowhidemine' => '$1 ibeddlen inu',
@@ -1337,7 +1439,7 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'rc_categories_any' => 'Ulayɣer',
 'rc-change-size-new' => '$1 {{PLURAL:$1|atamḍan|itamḍanen}} sakin abeddel',
 'newsectionsummary' => '/* $1 */ tigezmi tamaynut',
-'rc-enhanced-expand' => 'Ẓeṛ tilɣa (yeḥwaǧ JavaScript)',
+'rc-enhanced-expand' => 'Ẓeṛ ttfaṣil',
 'rc-enhanced-hide' => 'Ffer tilɣa',
 'rc-old-title' => 'yesnulfad s uzwel « $1 »',
 
@@ -1356,8 +1458,7 @@ Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
 'reuploaddesc' => 'Semmewet dɣa uɣaled ar tiferkit n tuznin.',
 'upload-tryagain' => 'Ceggaɛ aglam n ufaylu ibeddelen',
 'uploadnologin' => 'Ur tekcimeḍ ara',
-'uploadnologintext' => 'Yessefk [[Special:UserLogin|ad tkecmeḍ]]
-iwakken ad tazneḍ afaylu.',
+'uploadnologintext' => 'Ilaq ad $1 iwakken ad ketreḍ ifuyla.',
 'upload_directory_missing' => 'Akaram n taktert n ufaylu ($1) ulac-it dɣa ur d-yesnulfa ara sɣur aqeddac web.',
 'upload_directory_read_only' => 'Weserver/serveur Web ur yezmir ara ad yaru deg ($1).',
 'uploaderror' => 'Agul deg usekcam',
@@ -1436,6 +1537,8 @@ Ma tebɣiḍ ad azeneḍ afaylu inek/inem, ilaq ad uɣaleḍ ar deffir dɣa ad a
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Afaylu agi d-asleg n {{PLURAL:$1|ufaylu agi|ifuyla agi}} :',
 'file-deleted-duplicate' => 'Afaylu am wagi ([[:$1]]) yetwekkes yakan. Ilaq ad selkeneḍ aɣmis n tukksiwin n ufaylu agi uqbel atid ktereḍ tikkelt nniḍen.',
+'file-deleted-duplicate-notitle' => 'Afaylu yesɛan isem am wagi yetwumḥa, ula d-azwel ines.
+Ilaq ad ssutereḍ i yiwen aterras ma yezmer ad yessenqed aɣmis n ufaylu agi yetwumḥan iwakken ad yessekyed addad uqbel at-id ktereḍ tikelt nniḍen.',
 'uploadwarning' => 'Aɣtal deg wazan n ufayluwen',
 'uploadwarning-text' => 'Beddel aglam n ufaylu dɣa ɛreḍ tikkelt nniḍen',
 'savefile' => 'Smekti afaylu',
@@ -1491,6 +1594,7 @@ Ma yella daɣen anezri, ilaq ad meslaye ḍ s  [[Special:ListUsers/sysop|unedbal
 'backend-fail-notsame' => 'Afaylu imeẓli yella yakan i $1.',
 'backend-fail-invalidpath' => '$1 mačči d abrid n uḥraz iɣbelen.',
 'backend-fail-delete' => 'Ulamek an mḥu afaylu "$1".',
+'backend-fail-describe' => 'Ulamek an beddel adferisefka n ufaylu "$1".',
 'backend-fail-alreadyexists' => 'Afaylu $1 yella yakan.',
 'backend-fail-store' => 'Ulamek an ḥrez afaylu $1 deg $2.',
 'backend-fail-copy' => 'Ulamek an nɣel afaylu $1 deg $2.',
@@ -1585,8 +1689,7 @@ I taɣellist tameqqṛant, img_auth.php yensa.',
 'upload_source_file' => ' (afaylu deg uselkim inek)',
 
 # Special:ListFiles
-'listfiles-summary' => 'Asebter agi uslig i εemmed ad yefk umu n akkw ifuyla i kteren.
-Ma aseqdac as yernu tastayt, ala ifuyla s lqem taneggarut id yekter aseqdac nni ad beqqeḍen.',
+'listfiles-summary' => 'Asebter agi uslig i εemmed ad yefk umu n akkw ifuyla i kteren.',
 'listfiles_search_for' => 'Nadi ɣef yisem n tugna:',
 'imgfile' => 'afaylu',
 'listfiles' => 'Umuɣ n tugniwin',
@@ -1597,6 +1700,10 @@ Ma aseqdac as yernu tastayt, ala ifuyla s lqem taneggarut id yekter aseqdac nni
 'listfiles_size' => 'Tiddi (bytes/octets)',
 'listfiles_description' => 'Aglam',
 'listfiles_count' => 'Ileqman',
+'listfiles-show-all' => 'Sseddu ileqman iqdimen n tugniwin',
+'listfiles-latestversion' => 'Lqem amiran',
+'listfiles-latestversion-yes' => 'Ih',
+'listfiles-latestversion-no' => 'Ala',
 
 # File description page
 'file-anchor-link' => 'Afaylu',
@@ -1692,6 +1799,13 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'randompage' => 'Asebter menwala',
 'randompage-nopages' => 'Ulac isebtar deg {{PLURAL:$2|tallunt n isemawen|tallunin n isemawen}} : $1.',
 
+# Random page in category
+'randomincategory' => 'Asebtar s ugacur deg taggayt',
+'randomincategory-invalidcategory' => '« $1 » mačči d-isem n taggayt yeɣblen.',
+'randomincategory-nopages' => 'Ulac asebtar deg [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Ddem asebtar s ugacur deg taggayt : $1 $2.',
+'randomincategory-selectcategory-submit' => 'Ruḥ',
+
 # Random redirect
 'randomredirect' => 'Asemmimeḍ menwala',
 'randomredirect-nopages' => 'Ulac asebter n alsanamad deg tallunt n isemawen « $1 ».',
@@ -1717,6 +1831,14 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'statistics-users-active-desc' => 'Iseqdacen yesɛan xersum yiwet tigawt seg {{PLURAL:$1|ass agi aneggaru|$1 ussan agi ineggura}}',
 'statistics-mostpopular' => 'isebtar mmeẓren aṭṭas',
 
+'pageswithprop' => 'Isebtar s ayla n usebtar',
+'pageswithprop-legend' => 'Isebtar s ayla n usebtar',
+'pageswithprop-text' => 'Asebtar agi, yefked umuɣ n isebtar yeseqdacen ayla n usebtar amaẓlay',
+'pageswithprop-prop' => 'Isem n ayla :',
+'pageswithprop-submit' => 'Ruḥ',
+'pageswithprop-prophidden-long' => 'azal n ayla n uḍris aɣezfan yeffren ($1)',
+'pageswithprop-prophidden-binary' => 'azal n ayla imisin yeffren ($1)',
+
 'doubleredirects' => 'Asemmimeḍ yeḍra snat tikwal',
 'doubleredirectstext' => 'Mkull ajerriḍ yesɛa azday ɣer asmimeḍ amezwaru akk d wis sin, ajerriḍ amezwaru n uḍris n usebter wis sin daɣen, iwumi yefkan asmimeḍ ṣaḥiḥ i yessefk ad sɛan isebtar azday ɣur-s.',
 'double-redirect-fixed-move' => 'Alsanamud agi, ɣef ayed asaḍas [[$1]] yetwebeddel isem, yetawi tura ɣer [[$2]].',
@@ -1741,6 +1863,7 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|azday|izdayen}}',
 'nmembers' => '$1 {{PLURAL:$1|amaslad|imasladen}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|amaslad|imasladen}}',
 'nrevisions' => '$1 {{PLURAL:$1|tasiwelt|tisiwal}}',
 'nviews' => '$1 {{PLURAL:$1|timeẓriwt|tuẓrin}}',
 'nimagelinks' => 'Yetseqdec ɣef $1 {{PLURAL:$1|asebter|isebtar}}',
@@ -1771,6 +1894,7 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'mostrevisions' => 'Isebtar i yettubedlen aṭas',
 'prefixindex' => 'Akk isebtaren s yisekkilen imezwura',
 'prefixindex-namespace' => 'Akkw isebtar s adat (tallunt n isemawe $1)',
+'prefixindex-strip' => 'Ekkes azwir deg umuɣ',
 'shortpages' => 'isebtar imecṭuḥen',
 'longpages' => 'Isebtar imeqqranen',
 'deadendpages' => 'isebtar mebla izdayen',
@@ -1778,14 +1902,14 @@ Ur tettuḍ ara ad selkeneḍ ma ur llan ara izdayen nniḍen ɣer tilɣatin uqb
 'protectedpages' => 'isebtar yettwaḥerzen',
 'protectedpages-indef' => 'Imestenen imeɣlalen kan',
 'protectedpages-cascade' => 'Imestenen s uceṛcuṛ kan',
-'protectedpagestext' => 'isebtar-agi yettwaḥerzen seg ubeddel neɣ asemmimeḍ',
+'protectedpages-noredirect' => 'Ffer isemmimḍen',
 'protectedpagesempty' => 'isebtar-agi ttwaḥerzen s imsektayen -agi.',
 'protectedtitles' => 'Izwal ugdilen',
-'protectedtitlestext' => 'Izwal agi ugdilen deg usnulfu nsen',
 'protectedtitlesempty' => 'Ulac azwel yesɛan asegdel s iɣewwaren agi.',
 'listusers' => 'Umuɣ n yimseqdacen',
 'listusers-editsonly' => 'Sekned kan iseqdacen yesɛan asekcem naɣ ugar',
 'listusers-creationsort' => 'Fren s azmez n usnulfu',
+'listusers-desc' => 'Fren deg amizzwer amadar',
 'usereditcount' => '$1 {{PLURAL:$1|abeddel|ibeddilen}}',
 'usercreated' => '{{GENDER:$3|Yesnulfu-d}} ass n $1 ar $2',
 'newpages' => 'isebtar imaynuten',
@@ -1832,9 +1956,6 @@ Tzemreḍ ad sageneḍ abeqqeḍ s tixtiṛit n tawsit n uɣmis, isem n useqdac
 'allpagesto' => 'Beqqeḍ isebtar alama :',
 'allarticles' => 'Akk imagraden',
 'allinnamespace' => 'Akk isebtar ($1 isem n taɣult)',
-'allnotinnamespace' => 'Akk isebtar (mačči deg $1 isem n taɣult)',
-'allpagesprev' => 'Ssabeq',
-'allpagesnext' => 'Ameḍfir',
 'allpagessubmit' => 'Ruḥ',
 'allpagesprefix' => 'Ssken isebtar s uzwir:',
 'allpagesbadtitle' => 'Azwel n usebter mačči ṣaḥiḥ neɣ yesɛa azwir inter-wiki. Waqila yesɛa isekkilen ur ttuseqdacen ara deg izwal.',
@@ -1865,9 +1986,9 @@ Tzemreḍ ad sageneḍ abeqqeḍ s tixtiṛit n tawsit n uɣmis, isem n useqdac
 'linksearch-pat' => 'Anadi n tanfalit :',
 'linksearch-ns' => 'Talluntin n isemawen :',
 'linksearch-ok' => 'Nadi',
-'linksearch-text' => 'Tzemreḍ ad seqdeceḍ isekkilen imeẓliyen am « *.wikipedia.org ».
+'linksearch-text' => 'Isekkilen imeẓliyen am « *.wikipedia.org » zemren ad wetseqdecen.
 Ilaq-asen deg udday taɣult n uswir imineg, am amedya « *.org ».<br />
-Ineggafen imazdayen : <code>$1</code> (ur d-renu acemma deg unadi inek/inem)',
+{{PLURAL:$2|Aneggaf yettwaɛqelen|Ineggafen yettwaɛqelen}}: <code>$1</code> (http:// s lexṣas ma ulac aneggaf).',
 'linksearch-line' => '$1 yeqqen seg $2',
 'linksearch-error' => 'Tzemreḍ ad seqdeceḍ isekkilen usligen ala deg tazzwara n taɣult uselkim.',
 
@@ -1880,7 +2001,7 @@ Ineggafen imazdayen : <code>$1</code> (ur d-renu acemma deg unadi inek/inem)',
 # Special:ActiveUsers
 'activeusers' => 'Umuɣ n iseqdacen urmiden',
 'activeusers-intro' => 'Wagi d umuɣ n iseqdacen yexedmen armud deg {{PLURAL:$1|ass agi aneggaru|$1 ussan agi ineggura}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|abeddel n ussan agi ineggura|ibeddilen n ussan agi ineggura}} deg {{PLURAL:$3|ass aneggaru|$3 ussan ineggura}}',
+'activeusers-count' => '$1 {{PLURAL:$1|tigawt|tigawin}} deg {{PLURAL:$3|ass aneggaru|$3 ussan ineggura}}',
 'activeusers-from' => 'Ssken iseqdacen seg :',
 'activeusers-hidebots' => 'Ffer iṛubuten',
 'activeusers-hidesysops' => 'Ffer inedbalen',
@@ -1890,7 +2011,8 @@ Ineggafen imazdayen : <code>$1</code> (ur d-renu acemma deg unadi inek/inem)',
 'listgrouprights' => 'Izerfan n igrawen n iseqdacen',
 'listgrouprights-summary' => 'Asebter agi yesɛa yiwen umuɣ n igrawen i sengelen deg wiki agi dɣa izerfan n wadduf i qqenen.
 Zemrent ad ilint [[{{MediaWiki:Listgrouprights-helppage}}|tilɣa nniḍen]] ɣef izerfan n yiwen.',
-'listgrouprights-key' => '*<span class="listgrouprights-granted">Izerfan sefkan</span>
+'listgrouprights-key' => 'Aglam :
+*<span class="listgrouprights-granted">Izerfan sefkan</span>
 *<span class="listgrouprights-revoked">Izerfan ekkesen</span>',
 'listgrouprights-group' => 'Agraw',
 'listgrouprights-rights' => 'Izerfan',
@@ -1913,7 +2035,7 @@ iwakken ad tazneḍ email i imseqdacen wiyaḍ.',
 'emailuser-title-target' => 'Ceggaɛ tirawt i {{GENDER:$1|aseqdac agi|taseqdact agi}}',
 'emailuser-title-notarget' => 'Ceggaɛ tirawt i useqdac',
 'emailpage' => 'Ceggaɛ tirawt i useqdac',
-'emailpagetext' => 'Tzemreḍ ad seqdeceḍ tiferkit ddaw agi iwakken ad ceggɛeḍ tirawt i useqdac agi.
+'emailpagetext' => 'Tzemreḍ ad seqdeceḍ tiferkit ddaw agi iwakken ad ceggɛeḍ tirawt i {{GENDER:$1|umseqdac|tamseqdact}} agi.
 Tansa e-mail id ekfeḍ deg [[Special:Preferences|iɣewwaren inek/inem]] ad tban deg urti "Amceggaɛ" n izen ; akka, anermas ad yezmer ak/akem yefk tiririt.',
 'usermailererror' => 'Yella ugul deg uzwel n email:',
 'defemailsubject' => '{{SITENAME}} tirawt n useqdac « $1 »',
@@ -1944,19 +2066,16 @@ Tansa e-mail id ekfeḍ deg [[Special:Preferences|iɣewwaren inek/inem]] ad tban
 'usermessage-editor' => 'Ameskar n unagraw',
 
 # Watchlist
-'watchlist' => 'Umuɣ n uɛessi inu',
-'mywatchlist' => 'Umuɣ n uɛessi inu',
+'watchlist' => 'Umuɣ n uɛessi',
+'mywatchlist' => 'Umuɣ n uɛessi',
 'watchlistfor2' => 'I $1 $2',
 'nowatchlist' => 'Umuɣ n uɛessi inek d ilem.',
 'watchlistanontext' => 'G leɛnaya-k $1 iwakken ad twalaḍ neɣ tbeddleḍ iferdas deg wumuɣ n uɛessi inek.',
 'watchnologin' => 'Ur tekcimeḍ ara',
 'watchnologintext' => 'Yessefk ad [[Special:UserLogin|tkecmeḍ]] iwakken ad tbeddleḍ umuɣ n uɛessi inek.',
 'addwatch' => 'Rnu i umuɣ n uɛassi',
-'addedwatchtext' => "Asebter \"[[:\$1]]\" yettwarnu deg [[Special:Watchlist|wumuɣ n uɛessi]] inek.
-Ma llan ibeddlen deg usebter-nni neɣ deg usbtar umyennan ines, ad banen dagi,
-Deg [[Special:RecentChanges|wumuɣ n yibeddlen imaynuten]] ad banen s '''yisekkilen ibberbuzen''' (akken ad teẓriḍ).
-
-Ma tebɣiḍ ad tekkseḍ asebter seg wumuɣ n uɛessi inek, wekki ɣef \"Fakk aɛessi\".",
+'addedwatchtext' => 'Asebter "[[:$1]]" yettwarnu deg [[Special:Watchlist|wumuɣ n uḍfar]] inek/inem.
+Ibeddlen id-yetteddun deg usebter-agi neɣ deg usbtar umyennan ines, ad banen dagi.',
 'removewatch' => 'Ekkes seg umuɣ n uɛassi',
 'removedwatchtext' => '!!Asebter "[[:$1]]" yettwakkes seg [[Special:Watchlist|umuɣ n uɛessi]] inek.',
 'watch' => 'Ɛass',
@@ -1966,8 +2085,8 @@ Ma tebɣiḍ ad tekkseḍ asebter seg wumuɣ n uɛessi inek, wekki ɣef \"Fakk a
 'notanarticle' => 'Mačči d amagrad',
 'notvisiblerev' => 'Lqem tetwemḥa',
 'watchlist-details' => 'ttɛassaɣ {{PLURAL:$1|$1 usebter|$1 n isebtaren}} mebla isebtaren "amyannan".',
-'wlheader-enotif' => 'Yeǧǧa Email n talɣut.',
-'wlheader-showupdated' => "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s '''uḍris aberbuz'''",
+'wlheader-enotif' => 'Talɣut s email yessermed.',
+'wlheader-showupdated' => "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris '''aberbuz'''.",
 'watchmethod-recent' => 'yessenqed ibeddlen imaynuten n isebtar i ttɛasseɣ',
 'watchmethod-list' => 'yessenqed isebtar i ttɛassaɣ i ibeddlen imaynuten',
 'watchlistcontains' => 'Umuɣ n uɛessi inek ɣur-s $1 n {{PLURAL:$1|usebter|isebtar}}.',
@@ -1984,34 +2103,41 @@ 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_impersonal_salutation' => 'Amseqdac n {{SITENAME}}',
+'enotif_subject_deleted' => 'Asebtar $1 ɣef {{SITENAME}} yetwakkes sɣur {{GENDER:$2|$2}}',
+'enotif_subject_created' => 'Asebtar $1 ɣef {{SITENAME}} yetwaxleq sɣur {{GENDER:$2|$2}}',
+'enotif_subject_moved' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel isem sɣur {{GENDER:$2|$2}}',
+'enotif_subject_restored' => 'Asebtar $1 ɣef {{SITENAME}} yetwerr sɣur {{GENDER:$2|$2}}',
+'enotif_subject_changed' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel sɣur {{GENDER:$2|$2}}',
+'enotif_body_intro_deleted' => 'Asebtar $1 ɣef {{SITENAME}} yetwasfeḍ ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran',
+'enotif_body_intro_created' => 'Asebtar $1 ɣef {{SITENAME}} yetwaxleq ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_moved' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel isem ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_restored' => 'Asebtar $1 ɣef {{SITENAME}} yetwerr ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_changed' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
 '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',
 'enotif_body' => 'Ay $WATCHINGUSERNAME,
 
-Asebter « $PAGETITLE » n {{SITENAME}} $CHANGEDORCREATED ass n $PAGEEDITDATE sɣur « $PAGEEDITOR », ẓeṛ $PAGETITLE_URL iwakken ad ẓṛeḍ lqem n tura.
+$PAGEINTRO $NEWPAGE
 
-$NEWPAGE
+Agzul n umttekki  : $PAGESUMMARY $PAGEMINOREDIT
 
-Abeddel n wegzul: $PAGESUMMARY $PAGEMINOREDIT
+Meslay s umttekki :
+e-mail : $PAGEEDITOR_EMAIL
+wiki : $PAGEEDITOR_WIKI
 
-Meslay s umbeddel:
-e-mail: $PAGEEDITOR_EMAIL
-wiki: $PAGEEDITOR_WIKI
+Ur yelli ara email n talɣut asmi ad illin ibeddlen deg usebter ala lukan tekcmeḍ deg usebtar-agi sakin teqqneḍ. Tzemreḍ ad wennezeḍ tikbabin n talɣut i akkw isebtar yellan deg umuɣ inek/inem n uḍfar.
 
-Ur yelli ara email n talɣut asmi llan ibeddlen deg usebter ala lukan teẓreḍ asebter-nni.
-Tzemreḍ ad awennezeḍ akkw isenǧaqen n talɣut i akkw isebtar yellan deg umuɣ inek/inem n uɛassi.
-
-             Anagraw inek/inem n talɣut n {{SITENAME}}
+Anagraw inek/inem n talɣut n {{SITENAME}}
 
 --
 Iwakken ad beddeleḍ iɣewwaren n talɣut deg tirawt, ẓeṛ
 {{canonicalurl:{{#special:Preferences}}}}
 
-Iwakken ad beddeleḍ iɣewwaren n umuɣ inek/inem n uɛassi, ẓeṛ
+Iwakken ad beddeleḍ iɣewwaren n umuɣ inek/inem n uḍfar, ẓeṛ
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
-Iwakken ad mḥuḍ asebter deg umuɣ inek/inem n uɛassi, ẓeṛ
+Iwakken ad mḥuḍ asebtar deg umuɣ inek/inem n uḍfar, ẓeṛ
 $UNWATCHURL
 
 Tuɣalin d tadhelt :
@@ -2042,12 +2168,18 @@ Tuɣalin d tadhelt :
 'deleteotherreason' => 'Taɣẓint nniḍen / taɣzint tamarnant :',
 'deletereasonotherlist' => 'Taɣẓint nniḍen',
 'deletereason-dropdown' => '* Tiɣẓinin n umḥu id t-uɣalen aṭas tikkwal
+** Spam
+** Ixṣaren
+** Akukel n Copyright
 ** Asuter n useqdac
-** Akukel n izerfan umeskar
-** Asfata',
+** Azday yerẓan',
 'delete-edit-reasonlist' => 'Beddel tiɣẓinin n umḥu n usebter',
 'delete-toobig' => 'Asebter agi yesɛa amezruy ameqqṛan aṭas n ibeddilen, yugar $1 {{PLURAL:$1|lqem|ileqman}}.
 Amḥu n isebtar am wagi yesɛa akref iwakken {{SITENAME}} ur yesɛu ara arway.',
+'delete-warning-toobig' => 'Asebtar agi yesɛa amezruy axatar n ibeddilen, ugaren $1 {{PLURAL:$1|lqem|ileqman}}.
+Tukksa-s tezmer ad terwi tiddit n taffa n isefka n {{SITENAME}} ;
+ilaq ad seqdeceḍ s-leɛqel.',
+'deleting-backlinks-warning' => "'''Ɣur-wet :''' Isebtar nniḍen sɛant azday ɣer asebtar i tebɣiḍ ad kkeseḍ.",
 
 # Rollback
 'rollback' => 'Semmet ibeddilen',
@@ -2057,8 +2189,15 @@ Amḥu n isebtar am wagi yesɛa akref iwakken {{SITENAME}} ur yesɛu ara arway.'
 'rollbacklinkcount-morethan' => 'semmet ugar n $1 {{PLURAL:$1|abeddel|ibeddilen}}',
 'rollbackfailed' => 'Asemmet yexseṛ',
 'cantrollback' => 'Ur yezmir ara ad yessuɣal; yella yiwen kan amseqdac iwumi ibeddel/yexleq asebter-agi.',
+'alreadyrolled' => 'Ulamek an semmet abeddel aneggaru n usebtar « [[:$1]] » yetwaxeddemen sɣur [[User:$2|$2]] ([[User talk:$2|Mmeslay]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
+wayeḍ nniḍen yebeddel yakan neɣ yesemmet asebtar nni.
+
+Abeddel aneggaru n usebtar yetwaxeddemen sɣur [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Agzul n ubeddel yella: \"''\$1''\".",
 'revertpage' => 'Yessuɣal ibeddlen n [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]]); yettubeddel ɣer tasiwelt taneggarut n [[User:$1|$1]]',
+'revertpage-nouser' => 'Tiririt n ibeddilen sur amseqdac yeffren ar lqem aneggaru sɣur {{GENDER:$1|[[User:$1|$1]]}}',
+'rollback-success' => 'Asemmet n ibeddilen yetwaxeddemen sɣur $1 ;
+tuqqla ar lqem aneggaru sɣur $2.',
 
 # Edit tokens
 'sessionfailure-title' => 'Anezri n tɣimit',
@@ -2068,6 +2207,8 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
 
 # Protect
 'protectlogpage' => 'Aɣmis n wemḥay',
+'protectlogtext' => 'Atan umuɣ n ibeddilen n immestan n isebtar.
+Zeṛ [[Special:ProtectedPages|umuɣ n isebtar yettwaḥerzen]] i umuɣ n immestan timiranin.',
 'protectedarticle' => '"[[$1]]" yettwaḥrez',
 'modifiedarticleprotection' => 'yebeddel aswir n usegdel n « [[$1]] »',
 'unprotectedarticle' => 'yekkes asegdel n « [[$1]] »',
@@ -2077,24 +2218,42 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
 'prot_1movedto2' => '[[$1]] yettusmimeḍ ar [[$2]]',
 'protect-badnamespace-title' => 'Tallunt n isemawen ur nezmer ara an segdel',
 'protect-badnamespace-text' => 'Isebtar deg tallunt agi n isemawen ur zemren ara ad sɛun asegdel.',
+'protect-norestrictiontypes-text' => 'Asebtar agi ur yezmer ara ad yettwaḥerzen acku ulac tawsit n usewḥel yestufan.',
+'protect-norestrictiontypes-title' => 'Asebtar ur yettwaḥerzen ara',
 'protect-legend' => 'Sentem tiḥḥerzi',
 'protectcomment' => 'Taɣẓint :',
 'protectexpiry' => 'Azmez n tasewti :',
 'protect_expiry_invalid' => 'Azmez n tasewti ur yeɣbel ara.',
 'protect_expiry_old' => 'Azmez n tasewti i ɛedda.',
 'protect-unchain-permissions' => 'Kkes aseḍru i aṭas n tixtiṛiyin n usegdel',
+'protect-text' => "Tzemreḍ ad zṛeḍ dɣa ad beddeleḍ aswir n ummesten n usebtar '''$1'''.",
+'protect-locked-blocked' => "Ur tzemreḍ ara ad beddeleḍ iswiren n ummesten skud tewḥeleḍ.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-locked-dblock' => "Aswir n ummesten ur yezmer ara ad yetbeddel acku taffa n isefka tesekkweṛ.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-locked-access' => "Ur tesɛiḍ ara izerfan iḍulliyen iwakken ad beddeleḍ iswiren n ummesten n isebtar.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-cascadeon' => 'Asebtar agi yettwaḥerz acku yessedda-d deg {{PLURAL:$1|usebtar uḍfiṛ, yettwaḥerzen|isebtar uḍfiṛ, yettwaḥerzen}} s taxtiṛit « ammesten s uceṛcuṛ » yessermeden. Tzemreḍ ad beddeleḍ aswir n ummesten n usebtar agi war ad yebeddel ammesten s uceṛcuṛ.',
 'protect-default' => '(ameslugen)',
-'protect-fallback' => 'Yeḥweǧ atrug « $1 »',
-'protect-level-sysop' => 'Inedbalen kan',
+'protect-fallback' => 'Ssireg kan imseqdacen s uzref « $1 »',
+'protect-level-autoconfirmed' => 'Ssireg kan imseqdacen i sergegen iman-nsen',
+'protect-level-sysop' => 'Ssireg inedbalen kan',
 'protect-summary-cascade' => 'acercur',
 'protect-expiring' => 'yemmut deg $1 (UTC)',
 'protect-expiring-local' => 'ad i neffeṛ ass n $1',
 'protect-expiry-indefinite' => 'ifeḍ',
+'protect-cascade' => 'Mmesten isebtar i sseddan deg ttagi (ammesten s uceṛcuṛ)',
+'protect-cantedit' => 'Ur tzemreḍ ara ad beddeleḍ iswiren n ummesten n usebtar agi acku ur tesɛiḍ ara turagt att beddeleḍ.',
 'protect-othertime' => 'Azmez nniḍen n tasewti :',
 'protect-othertime-op' => 'azmez nniḍen n tasewti',
 'protect-existing-expiry' => 'Yella azmez n tasewti : $2 af $3',
 'protect-otherreason' => 'Taɣẓint nniḍen / taɣzint tamarnant :',
 'protect-otherreason-op' => 'Taɣẓint nniḍen',
+'protect-dropdown' => '* Tiɣẓinin n ummesten tunnimin
+** Axṣar s uzerray
+** Emails yerkan
+** Ccwal n ibeddilen yellan mgal-tiffursa
+** Asebtar s uɛeddi ameqran',
 'protect-edit-reasonlist' => 'Beddel tiɣẓinin n usegdel',
 'protect-expiry-options' => '1 asrag:1 hour,1 ass:1 day,1 imalas:1 week,2 imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 assegwas:1 year,adfi:infinite',
 'restriction-type' => 'Turagt',
@@ -2119,38 +2278,77 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
 'undeletepage' => 'Ẓeṛ dɣa erred isebtar yetwekkesen',
 'undeletepagetitle' => "'''Umuɣ agi yesɛa ileqman yetwekkesen n [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Ẓer isebtar yettumḥan',
+'undeletepagetext' => '{{PLURAL:$1|Asebtar agi uḍfiṛ yetwekkes, tura atan|Isebtar agi uḍfiṛen tetwekkesen, tura aten-id}} deg taffa n isefka n
+weɣbaṛ, anda {{PLURAL:$1|yezmer ad yesɛu tiririt|zemren ad sɛun tiririt}}.
+Aɣbaṛ yezmer ad yetssizedig s tallit.',
 'undelete-fieldset-title' => 'Erred ileqman',
+'undeleteextrahelp' => "Iwakken ad erreḍ amezruy ummid n usebtar agi, ilaq ad eǧǧeḍ akkw tinkulin war amidag dɣa senned ɣef '''''Tiririt'''''.
+Iwakken ad xeddemeḍ tiririt i yiwen aḥric kan, rnud amidag deg tinkulin n ileqman i tebɣiḍ ad erreḍ, dɣa senned ɣef '''''Tiririt'''''.",
 'undeleterevisions' => '$1 {{PLURAL:$1|lqem i ɣbeṛen|ileqman i ɣbeṛen}}',
+'undeletehistory' => 'Ma tebɣiḍ ad erreḍ asebtar, akkw ileqman ad erren deg umezruy.
+Ma asebtar amaynut yexelqed s isem am winna seg tukksa, ileqman yetwerran ad illin beqqeḍen deg umezruy uzwir dɣa lqem amiran ur d yetbeddel ara s uwurman.',
+'undeleterevdel' => 'Tiririt ur tezmer ara att illi ma, Deg tagara, lqem aneggaru n usebtar neɣ n ufaylu ad yeqqim yetwakkes s uzgen.
+Deg tajṛut am ttagi, ilaq ad ekkseḍ amidag deg tankult neɣ ad ekkseḍ tagelmust ileqman ineggura yetumḥan (deg uqerru n umuɣ).',
+'undeletehistorynoadmin' => 'Asebtar agi yetwekkes.
+Taɣzint n tukksa att affeḍ deg ugzul ddaw-agi, s ttfaṣil n imseqdacen i tbeddelen uqbel ad yetwekkes.
+Agbur n ileqman yetwekksen ad wettwadaf kan i inedbalen.',
+'undelete-revision' => 'Lqem yetwekksen n $1 (lqem n $4 af $5) sɣur $3 :',
+'undeleterevision-missing' => 'Lqem arameɣtu neɣ ulac-it.
+Ahat tesɛiḍ azday arameɣtu, neɣ lqem yetwerr neɣ yetwekkes seg aɣbaṛ.',
+'undelete-nodiff' => 'Ur d-n-uffa ara lqem aneggaru.',
+'undeletebtn' => 'Err-it',
 'undeletelink' => 'ẓeṛ/uɣaled',
 'undeleteviewlink' => 'ẓeṛ',
 'undeleteinvert' => 'Snegdam ayen textareḍ',
 'undeletecomment' => 'Taɣẓint :',
+'undeletedrevisions' => '$1 {{PLURAL:$1|lqem yetwerren|ileqman yetwerren}}',
+'undeletedrevisions-files' => '$1 {{PLURAL:$1|lqem|ileqman}} d $2 {{PLURAL:$2|afaylu|ifuyla}} {{PLURAL:$2|yetwerr|twerren}}',
+'undeletedfiles' => '$1 {{PLURAL:$1|afaylu yetwerr|ifuyla twerren}}',
+'cannotundelete' => 'Abrir n tiririt :
+$1',
+'undeletedpage' => "'''Asebtar $1 yetwerr.'''
+
+Zeṛ [[Special:Log/delete|aɣmis n tukksiwin]] iwakken ad zṛeḍ umuɣ n tukksiwin d tiririyin timaynutin.",
 'undelete-header' => 'Ẓer [[Special:Log/delete|aɣmis n umḥay]] i isebtar ttumḥan tura.',
 'undelete-search-title' => 'Nadi ɣef isebtar yettumḥan',
 'undelete-search-box' => 'Nadi ɣef isebtar yettumḥan',
 'undelete-search-prefix' => 'Ssken isebtar i yebdan s:',
 'undelete-search-submit' => 'Nadi',
 'undelete-no-results' => 'Ur yufi ara ulaḥedd n wawalen i tnadiḍ ɣef isebtar deg iɣbaren.',
+'undelete-filename-mismatch' => 'Ulamek an err lqem n ufaylu n wass n $1 : isem n ufaylu ur yezga ara.',
+'undelete-bad-store-key' => 'Ulamek an err lqem n ufaylu n wass n $1 : afaylu ulac-it uqbel tukksa.',
+'undelete-cleanup-error' => 'Tuccḍa deg tukksa n ufaylu n weɣbaṛ ur yetseqdacen ara « $1 ».',
+'undelete-missing-filearchive' => 'Ulamek an err afaylu n weɣbaṛ s tamagit $1 acku ulac it deg taffa n isefka.
+Ahat yetwerr yakan.',
+'undelete-error' => 'Asebtar n tuccḍa n usemmet',
+'undelete-error-short' => 'Tuccḍa deg tiririt n ufaylu : $1',
+'undelete-error-long' => 'LLant tuccḍiwin deg tiririt n ufaylu:
+
+$1',
 'undelete-show-file-confirm' => 'Tebɣriḍ ad ẓṛeḍ lqem yemḥan n ufaylu « <nowiki>$1</nowiki> » n $2 af $3 ?',
 'undelete-show-file-submit' => 'Ih',
 
 # Namespace form on various pages
 'namespace' => 'Talluntin n isemawen :',
 'invert' => 'Snegdam ayen textareḍ',
+'tooltip-invert' => 'Sekcem amidag deg tankult agi iwakken ad ffereḍ ibeddilen n isebtar deg tallunt n isemawen yettwafren (dɣa tallunt n isemawen yeqqnen ma yella amidag deg tankult)',
+'namespace_association' => 'Tallunt n isemawen yeqqenen',
+'tooltip-namespace_association' => 'Sekcem amidag deg tankult agi iwakken ad rnuḍ daɣen tallunt n isemawen n umyannan yeqqnen ar tallunt n  isemawen yettwafren',
 'blanknamespace' => '(Amenzawi)',
 
 # Contributions
-'contributions' => 'Tikkin n wemseqdac',
+'contributions' => 'Ittekkiyen n {{GENDER:$1|umseqdac|tamseqdact}}',
 'contributions-title' => 'Umuɣ n tikkin n umseqdac $1',
-'mycontris' => 'Tikkin inu',
-'contribsub2' => 'n $1 ($2)',
+'mycontris' => 'Ittekkiyen',
+'contribsub2' => 'I {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Ur yufi ara abddel i tebɣiḍ.',
-'uctop' => '(taneggarut)',
+'uctop' => '(amiran)',
 'month' => 'Seg uggur (d wid uqbel) :',
 'year' => 'Seg useggwas (d wid uqbel) :',
 
 'sp-contributions-newbies' => 'Ssken tikkin n yimseqdacen imaynuten kan',
 'sp-contributions-newbies-sub' => 'I yisem yimseqdacen imaynuten',
+'sp-contributions-newbies-title' => 'Ittekkiyen n imseqdacen gar imiḍanen imaynuten',
 'sp-contributions-blocklog' => 'Aɣmis n uɛeṭṭil',
 'sp-contributions-deleted' => 'isekcam yemḥan',
 'sp-contributions-uploads' => 'izdamen',
@@ -2182,20 +2380,55 @@ Asekcem aneggaru n useklas n ikyafen yella ddaw agi :',
 'whatlinkshere-hideredirs' => '$1 aceggeε ɣer',
 'whatlinkshere-hidetrans' => '$1 aseddu',
 'whatlinkshere-hidelinks' => '$1 izdayen',
-'whatlinkshere-hideimages' => '$1 tugniwin i qqenen',
+'whatlinkshere-hideimages' => '$1 ifuyla iqqenen',
 'whatlinkshere-filters' => 'Tistaytin',
 
 # Block/unblock
+'autoblockid' => 'Asewḥel awurman #$1',
 'block' => 'Ɛekkel aseqdac',
+'unblock' => 'Aksasewḥel n umseqdac',
 'blockip' => 'Ɛekkel aseqdac',
-'blockip-title' => 'Ɛekkel aseqdac',
 'blockip-legend' => 'Ɛekkel aseqdac',
+'blockiptext' => 'Seqdec tiferkit ddaw-agi iwakken ad  sewḥeleḍ ineɛruḍen n ubeddel seg yiwet tansa IP tulmist neɣ n yiwen isem umseqdac.
+Asket am wagi, ur ilaq ad yetwexddem kan iwakken ad yeεeggen axeṣṣar dɣa ilaq ad yemtawi s [[{{MediaWiki:Policy-url}}|ilugan igensanen]].
+Efked ddaw-agi taɣẓint tusdidt (amedya : efked isebtar yetwaxeṣṣren).',
 'ipadressorusername' => 'Tansa IP neɣ isem n wemseqdac',
+'ipbexpiry' => 'Tanzagt uqbel aneffeṛ :',
 'ipbreason' => 'Ayɣer',
+'ipbreason-dropdown' => '* Tiɣẓinin n ukyaf id ttuɣalen aṭas tikwal
+** Taguri n tilɣa n ukellax
+** Tukksa war assefhem n ugbur n isebtar
+** Taguri s uɛiwed n izdayen uffiɣen ɣer idellilen (abluleɣ)
+** Taguri n ugbur war anamek d tursaḍ deg isebtar
+** Aneɛruḍ n umsiged neɣ ubbezbax
+** Tafuli n useqdac n aṭas imiḍanen
+** Isem n umseqdac ur nezmer ara an qbel, d-anergam neɣ d-abucemmat',
+'ipb-hardblock' => 'Qareɛ imseqdacen yeqqnen ad beddelen s tansa IP agi',
+'ipbcreateaccount' => 'Qareɛ asnulfu n umiḍan',
+'ipbemailban' => 'Qareɛ amseqdac ad yecggaɛ e-mails',
+'ipbenableautoblock' => 'Sewḥel s-uwurman tansa IP taneggarut yetseqdacen sɣur amseqdac d akk IP ines nniḍen ay d-yetteddun',
 'ipbsubmit' => 'Ɛekkel amseqdac-agi',
+'ipbother' => 'Tanzagt  nniḍen :',
 'ipboptions' => '2 isragen:2 hours,1 ass:1 day,3 ussan:3 days,1 imalas:1 week,2  imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 aseggwas:1 year,afdi:infinite',
-'ipbotheroption' => 'nniḍen',
+'ipbhidename' => 'Ffer isem n useqdac deg ibeddilen d umuγen',
+'ipbwatchuser' => 'Ḍfer isebtar n iseqdacen d idiwenniyen n useqdac agi',
+'ipb-disableusertalk' => 'Qareɛ amseqdac ad yebeddel asebtar-is n umyannan mi yella asewḥel',
+'ipb-change-block' => 'Sewḥel tikkelt nniḍen amseqdac agi s iɣewwaren agi',
+'ipb-confirm' => 'Sergeg asewḥel',
 'badipaddress' => 'Tansa IP mačči d ṣaḥiḥ',
+'blockipsuccesssub' => 'Asewḥel yetwexddem',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] {{GENDER:$1|yetsewḥel|tetsewḥel|}}.<br />
+Zeṛ [[Special:BlockList|umuɣ n isewḥal]] iwakken ad zṛeḍ isewḥal.',
+'ipb-blockingself' => '{{GENDER:|Aqlak|Aqlakem}}-id ad sewḥeleḍ iman-{{GENDER:|ik|im}}',
+'ipb-confirmhideuser' => '{{GENDER:|Aqlak|Aqlakem}}-id ad sewḥeleḍ amseqdac s « ffer amseqdac » yessermed. Waya ad yekkes isem n umseqdac deg akkw umuɣen d isekcam n uɣmis. Tebɣiḍ ad xeddemeḍ aya ?',
+'ipb-confirmaction' => 'Ma teḥsiḍ tebɣiḍ at xeddemeḍ, ilaq ad rnuḍ amidag deg tankult « {{int:ipb-confirm}} » ddaw-agi.',
+'ipb-edit-dropdown' => 'Beddel tiɣẓinin n usewḥel s lexṣas',
+'ipb-unblock-addr' => 'Aksasewḥel $1',
+'ipb-unblock' => 'Aksasewḥel amiḍan n umseqdac neɣ tansa IP',
+'ipb-blocklist' => 'Zeṛ isewḥelen yellan',
+'ipb-blocklist-contribs' => 'Ittekkiyen i $1',
+'unblockip' => 'Ekkes asewḥel n umseqdac',
+'unblockiptext' => 'Seqdec tiferkit ddaw-agi iwakken ad erreḍ addaf i ibeddilen seg yiwet tansa IP neɣ yiwen isem n umseqdac.',
 'ipusubmit' => 'Ekkes akyaf agi',
 'unblocked' => 'Yetwekkes akyaf n [[User:$1|$1]]',
 'unblocked-range' => 'Yetwekkes akyaf n $1',
@@ -2230,19 +2463,60 @@ Asekcem aneggaru n useklas n ikyafen yella ddaw agi :',
 'change-blocklink' => 'beddel asewḥel',
 'contribslink' => 'tikkin',
 'emaillink' => 'Ceggaɛ e-mail',
+'autoblocker' => 'Tetsewḥeleḍ s uwurman acku tansa IP inek/inem yeseqdac-itt « [[User:$1|$1]] ». Taɣzint id efkan i usewḥel agi d : « $2 ».',
 'blocklogpage' => 'Aɣmis n isewḥelen',
+'blocklog-showlog' => 'Amseqdac agi, yetseweḥel uqbel. Ad affeḍ aɣmis n isewḥal ddaw-agi :',
+'blocklog-showsuppresslog' => 'Amseqdac agi, yetseweḥel dɣa yeweffer uqbel. Ad affeḍ aɣmis n tukksiwin ddaw-agi :',
 'blocklogentry' => 'yesewḥel [[$1]] ; alama : $2 $3',
+'reblock-logentry' => 'yebeddel iɣewwaren n usewḥel n [[$1]] s tasewtit ar $2 $3',
+'unblocklogentry' => 'yekkes asewḥel n $1',
 'block-log-flags-anononly' => 'Imseqdacen udrigen kan',
 'block-log-flags-nocreate' => 'asnulfu n umiḍan yessegdel',
+'block-log-flags-noautoblock' => 'akyaf awurman yensa',
+'block-log-flags-noemail' => 'e-mail yekyef',
+'block-log-flags-nousertalk' => 'ur yezmer ara ad yebeddel asebter-is n umeslay',
+'block-log-flags-angry-autoblock' => 'manasewḥel yesselhan yesermed',
+'block-log-flags-hiddenname' => 'isem n umseqdac yeffer',
+'range_block_disabled' => 'Azref n unedbal i usnulfu n isewḥal n tagrummiwin IP yensa.',
+'ipb_expiry_invalid' => 'Tanzagt n tasewti ur teɣbel ara.',
+'ipb_expiry_temp' => 'Isewḥal n isemawen n imseqdacen yeffren ilaq ad illin d-imeɣlalen.',
+'ipb_hide_invalid' => 'Ulamek an ekkes amiḍan agi ; yesɛa aṭas ibeddilen.',
+'ipb_already_blocked' => '« $1 » yesewḥel yakan',
+'ipb-needreblock' => '« $1 » yesewḥel yakan. Tebɣiḍ ad beddeleḍ iɣewwaren ?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Asewḥel nniḍen|Isewḥelen nniḍen}}',
+'unblock-hideuser' => 'Ur tzemreḍ ara ad sewḥeleḍ amseqdac agi, acku isem-is n umseqdac yetweffer.',
+'ipb_cant_unblock' => 'Tuccḍa : ID n usewḥel $1 ulac-it.
+Ahat asewḥel yetwekkes yakan.',
+'ipb_blocked_as_range' => 'Tuccḍa : tansa IP $1 ur t-uwḥel ara srid dɣa ulamek an ekkes asewḥel.
+Lamaɛna tezga deg tagrumma $2 i nezmer an ekkes asewḥel.',
+'ip_range_invalid' => 'Tagrumma IP artameɣtut',
 'proxyblockreason' => 'Tansa n IP inek teɛkel axaṭer nettat "open proxy". G leɛnayek, meslay akk d provider inek.',
 'sorbsreason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.
 Ur tezmireḍ ara ad snulfuḍ amiḍan.',
+'xffblockreason' => 'Yiwet tansa IP deg tasenṭit X-Forwarded-For header, tin inek/inem neɣ tin n uqeddac proxy i tseqeddeceḍ ,tesewḥel. Taɣzint n usewḥel amezrwaru : $1',
 
 # Developer tools
 'lockdb' => 'Sekker database',
+'unlockdb' => 'Kkes aseḍru n taffa n isefka',
+'lockdbtext' => 'Askaṛ n taffa n isefka ad yeqareɛ akkw imseqdacen ad beddelen isebtar, ad ḥerzen ismenyifen nsen, ad beddelen umuɣ nsen n uḍfar dɣa ad xeddmen akkw tigawin nniḍen yeḥwaǧen ibeddilen deg taffa n isefka.
+Ilaq ad sergegeḍ d-ayen yebɣiḍ ad xeddemeḍ dɣa ad ekkseḍ azekṛun deg taffa sakin tigawt inek/inem n ibeddi att fak.',
+'unlockdbtext' => 'Aksaskaṛ n taffa n isefka ad yeɛemmed i akkw imseqdacen ad beddelen isebtar, ad beddelen ismenyifen nsen, ad beddelen umuɣ nsen n uḍfar dɣa ad xeddmen akkw tigawin nniḍen yeḥwaǧen ibeddilen deg taffa n isefka.
+
+Ilaq ad sergegeḍ d-ayen yebɣiḍ ad xeddemeḍ.',
+'lockconfirm' => 'Ih, bɣiɣ ad sekṛeɣ taffa n isefka.',
+'unlockconfirm' => 'Ih, bɣiɣ ad ekkeseɣ aksskeṛeɣ taffa n isefka.',
+'lockbtn' => 'Sekker taffa n isefka',
+'unlockbtn' => 'Kkes aseḍru n taffa n isefka',
+'lockdbsuccesssub' => 'Askaṛ n taffa n isefka yetwexddem',
+'unlockdbsuccesssub' => 'Asewḥel n taffa n isefka yetwekkes',
+'unlockdbsuccesstext' => 'Askaṛ n taffa n isefka yetwekkes.',
+'lockfilenotwritable' => 'Ur tzemreḍ ara ad aruḍ deg ufaylu n uskaṛ n taffa n isefka.
+Ma tebɣiḍ ad sewḥeleḍ neɣ ad ekkseḍ asewḥel ɣef taffa n isefka, ilaq aqeddac web ad yezmer ad yaru deg ufaylu agi.',
+'lockedbyandtime' => '(sɣur $1 ass n $2 af $3)',
 
 # Move page
+'move-page' => 'Beddel isem n $1',
 'move-page-legend' => 'Smimeḍ asebter',
 'movepagetext' => "Seqdec tiferkit ddaw agi iwakken ad beddeleḍ isem n usebter, s usiweḍ n akkw amezruy is ɣer isem amaynut. Azwel aqbur ad yuɣal d asebter n usemmime ɣer azwel amaynut. Tzemreḍ ad mucceḍeḍ s uwurman isemmimen amiran i sweṛen ɣer azwel amezwaru. Ma ur tebɣiḍ ara at sexdemeḍ wagi, ilaq ad selkeneḍ akkw [[Special:DoubleRedirects|Asemmimeḍ yeḍran snat tikwal]] naɣ [[Special:BrokenRedirects|asmmimeḍ yerẓan]]. Ilaq ad sɛuḍ talkint belli izdayen tsweṛen ɣer aserken is.
 
@@ -2256,9 +2530,10 @@ Wagi yezmer ad yexdem abeddel ameqqṛan i asebter s aṭas timerziwin ; ilaq ad
 
 Lukan akka, yessefk a t-tedmeḍ weḥdek.",
 'movearticle' => 'Smimeḍ asebter',
-'movenologin' => 'Ur tekcimeḍ ara',
 'movenologintext' => 'Yessefk ad tesɛuḍ isem n wemseqdac u [[Special:UserLogin|tkecmeḍ]]
 iwakken ad tesmimḍeḍ asebter.',
+'movenotallowed' => 'Ur tesɛiḍ ara turagt ad beddeleḍ isem n isebtar.',
+'cant-move-user-page' => 'Ur tesɛiḍ ara turagt ad beddeleḍ isem n isebtar igejdanen n imseqdacen',
 'newtitle' => 'Ar azwel amaynut',
 'move-watch' => 'Ɛass asebter-agi',
 'movepagebtn' => 'Smimeḍ asebter',
@@ -2266,11 +2541,14 @@ iwakken ad tesmimḍeḍ asebter.',
 'articleexists' => 'Yella yagi yisem am wagi, neɣ
 isem ayen textareḍ mačči d ṣaḥiḥ.
 Xtar yiwen nniḍen.',
-'talkexists' => "'''Asemmimeḍ n usebter yekfa, meɛna asebter n umyannan ines ur yettusemmimeḍ ara axaṭer yella yagi yiwen s yisem kif-kif. G leɛnayek, xdem-it weḥd-ek.'''",
-'movedto' => 'yettusmimeḍ ar',
 'movetalk' => 'Smimeḍ asebter n umyannan (n umagrad-nni)',
+'move-subpages' => 'Beddel isem n adu-isebtar (alma d $1 {{PLURAL:$1|asebtar|isebtar}})',
+'move-talk-subpages' => 'Beddel adu-isebtar n usebtar n amyannan (alma d $1 isebtar)',
 'movelogpage' => 'Aɣmis n usemmimeḍ',
 'movelogpagetext' => 'Akessar yella wumuɣ n isebtar yettusmimeḍen.',
+'movesubpage' => '{{PLURAL:$1|Adu-asebtar|Adu-isebtar}}',
+'movesubpagetext' => 'Asebtar agi yesɛa $1 {{PLURAL:$1|adu-asebtar yebeqqeḍen|adu-isebtar yebeqqeḍen}} ddaw-agi.',
+'movenosubpage' => 'Asebtar agi ur yesɛ ara adu-asebtar',
 'movereason' => 'Ayɣer',
 'revertmove' => 'Uɣal ar tasiwelt ssabeq',
 'delete_and_move' => 'Mḥu u smimeḍ',
@@ -2280,6 +2558,7 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'delete_and_move_confirm' => 'Ih, mḥu asebter',
 'delete_and_move_reason' => 'Asebter yemḥa iwakken yeqqim-d wemkan i usmimeḍ seg "[[$1]]"',
 'selfmove' => 'Izwal amezwaru d uneggaru kif-kif; ur yezmir ara ad yesmimeḍ asebter ɣur iman-is.',
+'immobile-target-namespace-iw' => 'Izdayen interwiki mačči d iswi ameɣtu i imussa.',
 
 # Export
 'export' => 'Ssufeɣ isebtar',
@@ -2312,11 +2591,14 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'thumbnail-more' => 'Ssemɣer',
 'filemissing' => 'Afaylu ulac-it',
 'thumbnail_error' => 'Agul asmi yexleq tugna tamecṭuḥt: $1',
+'thumbnail_error_remote' => 'Izen n tuccḍa n $1 :
+$2',
 'djvu_page_error' => 'Asebter DjVu yeffeɣ seg tilisa',
 
 # Special:Import
 'import' => 'Ssekcem isebtar',
 'importinterwiki' => 'Assekcem n transwiki',
+'import-interwiki-source' => 'Wiki d usebtar n taɣbalut',
 'import-interwiki-history' => 'Xdem alsaru n akk tisiwal umezruy n usebter-agi',
 'import-interwiki-submit' => 'Ssekcem',
 'import-interwiki-namespace' => 'Azen isebtar ar isem n taɣult:',
@@ -2334,6 +2616,8 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'importhistoryconflict' => 'Amennuɣ ger tisiwal n umezruy (ahat asebter-agi yettwazen yagi)',
 'importnosources' => 'Asekcam n transwiki ur yexdim ara u amezruy n usekcam yettwakkes.',
 'importnofile' => 'ulaḥedd afaylu usekcam ur yettwazen.',
+'import-rootpage-invalid' => 'Asebtar aẓar id efkeḍ d-azwel ur ɣblen ara.',
+'import-rootpage-nosubpage' => 'Tallunt n isemawen « $1 » n usebtar aẓar ur yeqbel ara adu-isebtar.',
 
 # Import log
 'importlogpage' => 'Aɣmis n usekcam',
@@ -2343,6 +2627,16 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'import-logentry-interwiki' => '$1 s transwiki',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|lqem|ileqman}} seg $2',
 
+# JavaScriptTest
+'javascripttest' => 'Tarmit n JavaScript',
+'javascripttest-title' => 'Asselkem n tirmitin $1',
+'javascripttest-pagetext-noframework' => 'Asebtar agi yeḥeṛṛ i usselkem n tirmitin JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Tamṣuka « $1 » warisem.',
+'javascripttest-pagetext-frameworks' => 'Ilaq ad xetreḍ yiwet n timṣukyin n tarmit agi : $1',
+'javascripttest-pagetext-skins' => 'Xter agwlim s anwa ad xeddemeḍ tarmit :',
+'javascripttest-qunit-intro' => 'Zeṛ [$1 tumlin n tarmit] ɣef mediawiki.org.',
+'javascripttest-qunit-heading' => 'Azrar n tarmit QUnit n JavaScript ɣef MediaWiki',
+
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Asebter n umseqdac inu',
 'tooltip-pt-anonuserpage' => 'Asebter n wemseqdac n IP wukud tekkiḍ',
@@ -2360,6 +2654,7 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'tooltip-ca-viewsource' => 'Asebter-agi yettwaḥrez. Tzemreḍ ad twaliḍ aɣbalu-ines.',
 'tooltip-ca-history' => 'Tisiwal ssabeq n usebter-agi.',
 'tooltip-ca-protect' => 'Ḥrez asebter-agi',
+'tooltip-ca-unprotect' => 'Beddel amesten n usebtar-agi',
 'tooltip-ca-delete' => 'Mḥu asebter-agi',
 'tooltip-ca-undelete' => 'Err akk ibeddlen n usebter-agi i yellan uqbel ad yettwamḥu usebter',
 'tooltip-ca-move' => 'Smimeḍ asebter-agi',
@@ -2402,18 +2697,28 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'tooltip-diff' => 'Ssken ayen tbeddleḍ deg uḍris.',
 'tooltip-compareselectedversions' => 'Ẓer amgirred ger snat tisiwlini (i textareḍ) n usebter-agi.',
 'tooltip-watch' => 'Rnu asebter-agi i wumuɣ n uɛessi inu',
+'tooltip-watchlistedit-normal-submit' => 'Kkes izwal',
+'tooltip-watchlistedit-raw-submit' => 'Amucceḍ n umuɣ n uḍfar',
 'tooltip-recreate' => 'Ɛiwed xleq asebter ɣas akken yettumḥu',
+'tooltip-upload' => 'Beddu taktert',
 'tooltip-rollback' => '« Semmet » yesemmet s-yiwen asenned akk d-acu amseqdac aneggaru yebeddel deg usebter',
 'tooltip-undo' => '« Ssefsu » yesemmet abeddel agi dɣa i ldi asfaylu n ubeddel deg uskar n azaraskan. I ɛemmed an uɣal ar lqem n uqbel dɣa an rnu taɣẓint deg tanaka n ugzul.',
+'tooltip-preferences-save' => 'Ḥrez isemyifiyen',
 'tooltip-summary' => 'Sekcem agzul awezzlan',
+'interlanguage-link-title' => '$1 — $2',
+
+# Metadata
+'notacceptable' => 'Aqeddac wiki agi ur yezmer ara ad yefk isefka deg amasal ur yezmer ara ad yeɣar amsaɣ inek/inem.',
 
 # Attribution
 'anonymous' => '{{PLURAL:$1|Aseqdac udrig|Iseqdacen udrigen}} ɣef {{SITENAME}}',
 'siteuser' => '{{SITENAME}} amseqdac $1',
+'anonuser' => 'amseqdac abnabak $1 n {{SITENAME}}',
 'lastmodifiedatby' => 'Tikkelt taneggarut asmi yettubeddel asebter-agi $2, $1 sɣur $3.',
 'othercontribs' => 'Tikkin ɣef umahil n $1.',
 'others' => 'wiyaḍ',
 'siteusers' => '{{PLURAL:$2|aseqdac|iseqdacen}} $1 n {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|amseqdac abnabak|imseqdacen amseqdac abnabak}} $1 n {{SITENAME}}',
 'creditspage' => 'Win ixedmen asebter',
 'nocredits' => 'Ulac talɣut ɣef wayen ixedmen asebter-agi.',
 
@@ -2421,11 +2726,16 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'spamprotectiontitle' => 'Aḥraz amgel "Spam"',
 'spamprotectiontext' => "Asebter i tebɣiḍ ad tesmektiḍ iɛekkel-it ''aḥraz mgel \"Spam\"''. Ahat yella wezday aberrani.",
 'spamprotectionmatch' => 'Aḍris-agi ur t-iɛeǧ \'\'"aḥraz mgel "Spam"\'\': $1',
+'spambot_username' => 'Assizdeg n spam sɣur MediaWiki',
 'spam_reverting' => 'Asuɣal i tasiwel taneggarut i ur tesɛi ara izdayen ɣer $1',
 'spam_blanking' => 'Akk tisiwal sɛan izdayen ɣer $1, ad yemḥu',
+'spam_deleting' => 'Akkw ileqman yesɛan izdayen ɣer $1, tukksa',
+'simpleantispam-label' => "Assefqed mgal e-mail yerkan.
+Ur-d t-aru '''ACEMMA''' d-agi !",
 
 # Info page
 'pageinfo-title' => 'Tilɣa i « $1 »',
+'pageinfo-not-current' => 'Ssurfet-aɣ, ulamek ad n-efk talɣut i ileqman iqdimen.',
 'pageinfo-header-basic' => 'Tilɣa n udasil',
 'pageinfo-header-edits' => 'Amezruy n ibeddilen',
 'pageinfo-header-restrictions' => 'Amesten n usebter',
@@ -2434,14 +2744,37 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 'pageinfo-default-sort' => 'Tasarut n ufran s lexṣas',
 'pageinfo-length' => 'Tiddi n usebter (s itamḍanen)',
 'pageinfo-article-id' => 'Uṭṭun n usebter',
-'pageinfo-robot-policy' => 'Aẓayer n umsadday n unadi',
-'pageinfo-robot-index' => 'Ṭwamatar',
-'pageinfo-robot-noindex' => 'Arṭwamatar',
+'pageinfo-language' => 'Tutlayt n ugbur n usebtar',
+'pageinfo-content-model' => 'Talɣa n ugbur n usebtar',
+'pageinfo-robot-policy' => 'Asbeddi sɣur iṛubuten',
+'pageinfo-robot-index' => 'Tessireg',
+'pageinfo-robot-noindex' => 'Tegdel',
 'pageinfo-views' => 'Amḍan n timuɣliwin',
 'pageinfo-watchers' => 'Amḍan n imttekkiyen yesɛan asebter agi deg umuɣ nsen n uɛassi',
+'pageinfo-few-watchers' => 'Kkes-as $1 {{PLURAL:$1|amanay|imanayen}}',
+'pageinfo-redirects-name' => 'Amḍan n izdayen ɣer asebtar agi',
 'pageinfo-subpages-name' => 'Adu-isebtar n usebter agi',
+'pageinfo-firstuser' => 'Ameslal n usebtar',
+'pageinfo-firsttime' => 'Azmez n usnulfu n usebtar',
+'pageinfo-lastuser' => 'Atekki aneggaru',
+'pageinfo-lasttime' => 'Azmez n ubeddel aneggaru',
+'pageinfo-edits' => 'Amḍan aɣrud n ibeddilen',
+'pageinfo-authors' => 'Amḍan aɣrud n imeskaren iwḥiden',
+'pageinfo-recent-edits' => 'Amḍan n ibeddilen imaynuten (deg $1 ineggura)',
+'pageinfo-recent-authors' => 'Amḍan n imeskaren iwḥiden imaynuten',
+'pageinfo-magic-words' => '{{PLURAL:$1|Awal n tiḥḥerga|Awalen n tiḥḥerga}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Talɣa i seddan|Talɣiwin i seddan}} ($1)',
+'pageinfo-toolboxlink' => 'Tilɣa ɣef usebtar',
+'pageinfo-redirectsto' => 'Ceggaɛ ɣer',
+'pageinfo-redirectsto-info' => 'tiɣa',
+'pageinfo-contentpage' => 'Yetweḥseb am asebtar n ugbur',
 'pageinfo-contentpage-yes' => 'Ih',
 'pageinfo-protect-cascading-yes' => 'Ih',
+'pageinfo-category-info' => 'Tilɣa ɣef taggayt',
+'pageinfo-category-pages' => 'Amḍan n isebtar',
+'pageinfo-category-subcats' => 'Amḍan n adutaggayin',
+'pageinfo-category-files' => 'Amḍan n ifuyla',
 
 # Patrolling
 'markaspatrolleddiff' => 'Rcem "yettwassenqden"',
@@ -2459,6 +2792,13 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 
 # Image deletion
 'deletedrevision' => 'Tasiwelt taqdimt $1 tettumḥa.',
+'filedeleteerror-short' => 'Tuccḍ deg tukksa n ufaylu : $1',
+'filedeleteerror-long' => 'Llant tuccḍiwin deg tukksa n ufaylu :
+
+$1',
+'filedelete-missing' => 'Afaylu « $1 » ur yezmer ara ad yetwekkes acku ulac-it.',
+'filedelete-old-unregistered' => 'Lqem n ufaylu « $1 » ulac-it deg taffa n isefka.',
+'filedelete-current-unregistered' => 'Afaylu « $1 » ulac-it deg taffa n isefka.',
 
 # Browsing diffs
 'previousdiff' => '← Amgirred ssabeq',
@@ -2469,15 +2809,24 @@ Anda tebɣiḍ tesmimeḍ "[[:$1]]" yella yagi. tebɣiḍ ad temḥuḍ iwakken
 Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
 'imagemaxsize' => "Tiddi tafellayt n tugniwin :<br />''(i isebtar n weglam ufaylu)''",
 'thumbsize' => 'Tiddi n tugna tamecṭuḥt:',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|asebtar|isebtar}}',
 'file-info' => 'tiddi n ufaylu: $1, anaw n MIME: $2',
 'file-info-size' => '$1 × $2 pixel, tiddi n ufaylu: $3, anaw n MIME: $4',
 'file-nohires' => 'Ulac resolution i tameqqrant fell-as.',
 'svg-long-desc' => 'Afaylu SVG, tabadut n $1 × $2 pixel, lqedd : $3',
-'show-big-image' => 'Resolution tameqqrant',
+'show-big-image' => 'Afaylu aneṣli',
+'file-info-gif-looped' => 'deg taglult',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
+'file-info-png-looped' => 'deg taglult',
+'file-info-png-repeat' => 'yetwurar {{PLURAL:$1|tikelt|tikwal}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
+'file-no-thumb-animation' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ufaylu agi ur sɛunt ara amray.'''",
+'file-no-thumb-animation-gif' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ifuyla GIF deg tabadut tameqṛant am ttagi ur sɛunt ara amray.'''",
 
 # Special:NewFiles
 'newimages' => 'Umuɣ n ifayluwen imaynuten',
 'imagelisttext' => "Deg ukessar yella wumuɣ n '''$1''' {{PLURAL:$1|ufaylu|yifayluwen}} $2.",
+'newimages-summary' => 'Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.',
 'newimages-legend' => 'Tastayt',
 'newimages-label' => 'Isem n ufaylu (naɣ aḥric ines) :',
 'showhidebots' => '($1 iṛubuten)',
@@ -2491,6 +2840,9 @@ Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
 'minutes' => '{{PLURAL:$1|$1 tamrect|$1 timercin}}',
 'hours' => '{{PLURAL:$1|$1 asrag|$1 isragen}}',
 'days' => '{{PLURAL:$1|$1 ass|$1 ussan}}',
+'weeks' => '{{PLURAL:$1|$1 imalas|$1 imalasen}}',
+'months' => '{{PLURAL:$1|$1 aggur|$1 agguren}}',
+'years' => '{{PLURAL:$1|$1 aseggwas|$1 iseggwasen}}',
 'ago' => '$1 aya',
 'just-now' => 'Tura kan',
 
@@ -2579,7 +2931,11 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 'exif-exposuretime-format' => '$1 tas ($2 tas)',
 'exif-fnumber' => 'Alday',
 'exif-exposureprogram' => 'Ahil n timzikent',
+'exif-spectralsensitivity' => 'Aḥalfu n uylal',
+'exif-isospeedratings' => 'Aḥalfu ISO',
+'exif-shutterspeedvalue' => 'Azzal n urjal n APEX',
 'exif-aperturevalue' => 'Alday n APEX',
+'exif-brightnessvalue' => 'Asaddi APEX',
 'exif-exposurebiasvalue' => 'Aseɣti n timzikent',
 'exif-maxaperturevalue' => 'Alday afellay',
 'exif-subjectdistance' => 'Ameccaq n usentel',
@@ -2597,6 +2953,38 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 'exif-sensingmethod' => 'Tawsit n umaṭṭaf',
 'exif-filesource' => 'Aɣbal n ufaylu',
 'exif-scenetype' => 'Tawsit n usayes',
+'exif-customrendered' => 'Agmuḍ asagan',
+'exif-exposuremode' => 'askar n timzikent',
+'exif-whitebalance' => 'Tisistelt n imellalen',
+'exif-digitalzoomratio' => 'Afmiḍi n zoom umḍin',
+'exif-focallengthin35mmfilm' => 'Teɣzef n usaḍas i usaru 35 mm',
+'exif-scenecapturetype' => 'Tawsit n tuddma n usayes',
+'exif-gaincontrol' => 'Aḥkam n urrbeḥ',
+'exif-contrast' => 'Amyeẓli',
+'exif-devicesettingdescription' => 'Aglam n tawila n allal',
+'exif-subjectdistancerange' => 'Ameccaq n tamsalt',
+'exif-imageuniqueid' => 'Asulay asuf n tugna',
+'exif-gpsversionid' => 'Lqem n ticṛeṭ GPS',
+'exif-gpslatituderef' => 'Tamselɣut i tafeltirit',
+'exif-gpslatitude' => 'Tafeltirit',
+'exif-gpslongituderef' => 'Tamselɣut i tazegrart',
+'exif-gpslongitude' => 'Tazegrart',
+'exif-gpsaltituderef' => 'Tamselɣut n usawen (0=asawen, 1=talqayt)',
+'exif-gpsaltitude' => 'Talqayt',
+'exif-gpstimestamp' => 'Asrag GPS (tamasragt tabelkamit)',
+'exif-gpssatellites' => 'Igensaten yetseqdacen i akat',
+'exif-gpsstatus' => 'Addad n unermas',
+'exif-gpsmeasuremode' => 'askar n akat',
+'exif-gpsdop' => 'Tiseddi n akat',
+'exif-gpsspeedref' => 'Aferdis n tazzla n unermas GPS',
+'exif-gpsspeed' => 'Tazzla n unermas GPS',
+'exif-gpstrack' => 'Tanila n uwliwel',
+'exif-gpsimgdirection' => 'Tanila n tugna',
+'exif-gpsdestlatitude' => 'Turrut n userken',
+'exif-gpsdestlongitude' => 'Tazegrart n userken',
+'exif-gpsdestdistance' => 'Ameccaq ar userken',
+'exif-gpsareainformation' => 'Isem n taɣzut GPS',
+'exif-gpsdatestamp' => 'Azmez GPS',
 'exif-worldregiondest' => 'Timnaḍin n umaḍal yebeqqeḍen',
 'exif-countrydest' => 'Timura yebeqqeḍen',
 'exif-countrycodedest' => 'Tangalt n tamurt yebeqqeḍen',
@@ -2623,9 +3011,10 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 'exif-datetimereleased' => 'Tuffɣa ass n',
 'exif-originaltransmissionref' => 'Tangalt n usideg n tuzzna tamezwarut',
 'exif-identifier' => 'Asulay',
+'exif-label' => 'Aglam',
 
 'exif-copyrighted-true' => 'Ddaw azref n umeskar',
-'exif-copyrighted-false' => 'Taɣuly tazayezt',
+'exif-copyrighted-false' => 'Addad n izerfan n umeskar ur yesbadu ara',
 
 'exif-unknowndate' => 'Azmez warisem',
 
@@ -2805,15 +3194,10 @@ Izdayen nniḍen ɣef yiwen ajerriḍ llan d tisuraf, am isebtar ɣef anta tugna
 'exif-urgency-low' => 'Anammum ($1)',
 'exif-urgency-high' => 'Afella ($1)',
 
-# External editor support
-'edit-externally' => 'Beddel afaylu-yagi s usnas aberrani.',
-'edit-externally-help' => 'Ẓer [https://www.mediawiki.org/wiki/Manual:External_editors taknut] iwakken ad tessneḍ kter.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'akk',
 'namespacesall' => 'akk',
 'monthsall' => 'akk',
-'limitall' => 'Akkw',
 
 # Email address confirmation
 'confirmemail' => 'Sentem tansa n e-mail',
@@ -2838,7 +3222,6 @@ Ahil n uzzun n e-mail yuɣal-d s-izen agi : $1',
 'confirmemail_success' => 'Tansa e-mail inek/inem tergeg.
 Tura tzemreḍ ad [[Special:UserLogin|qqeneḍ]].',
 'confirmemail_loggedin' => 'Asentem n tansa n email inek yekfa tura.',
-'confirmemail_error' => 'Yella ugur s usmekti n usentem inek.',
 'confirmemail_subject' => 'Asentem n tansa n email seg {{SITENAME}}',
 'confirmemail_body' => 'Amdan, ahat d kečč/kem, seg tansa IP $1,
 yexleq amiḍan "$2" s tansa n e-mail deg {{SITENAME}}.
@@ -2936,6 +3319,7 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'watchlisttools-raw' => 'Beddel umuɣ n uɛessi (raw)',
 
 # Core parser functions
+'unknown_extension_tag' => 'Ticṛeṭ n usiɣzef « $1 » warisem',
 'duplicate-defaultsort' => 'Ɣur-wet : tasarut n ufran m-ulac « $2 » atsefεej tasarut n uqbel « $1 ».',
 
 # Special:Version
@@ -2948,8 +3332,43 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'version-entrypoints-header-entrypoint' => 'Ired n wekcam',
 'version-entrypoints-header-url' => 'Tansa URL',
 
+# Special:Redirect
+'redirect-submit' => 'Ruḥ',
+'redirect-lookup' => 'Anadi :',
+'redirect-value' => 'Azal :',
+'redirect-user' => 'ID n umseqdac',
+'redirect-revision' => 'Tacaggart n usebtar',
+'redirect-file' => 'Isem n ufaylu',
+'redirect-not-exists' => 'Azal ulac-it',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Anadi n allusen',
+'fileduplicatesearch-legend' => 'Nadi allus',
+'fileduplicatesearch-filename' => 'Isem n ufaylu :',
+'fileduplicatesearch-submit' => 'Nadi',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Tiddi n ufaylu : $3<br />Anaw MIME : $4',
+'fileduplicatesearch-result-1' => 'Afaylu « $1 » ur yesɛa ara allus.',
+'fileduplicatesearch-result-n' => 'Afaylu « $1 » yesɛa {{PLURAL:$2|1 allus|$2 allusen}}.',
+'fileduplicatesearch-noresults' => 'Ulac afaylu s isem « $1 ».',
+
 # Special:SpecialPages
 'specialpages' => 'isebtar usligen',
+'specialpages-group-maintenance' => 'Iṛabulen n ibeddi',
+'specialpages-group-other' => 'Isebtar usligen nniḍen',
+'specialpages-group-login' => 'Asulu / assiggez',
+'specialpages-group-changes' => 'Ibeddilen imaynuten d iɣmisen',
+'specialpages-group-media' => 'Iṛabulen d taktert n ifuyla media',
+'specialpages-group-users' => 'Imseqdacen d izerfan yeqqnen',
+'specialpages-group-highuse' => 'Isebtar n usseqdec n waṭas',
+'specialpages-group-pages' => 'Umuɣen n isebtar',
+'specialpages-group-pagetools' => 'Ifecka i isebtar',
+'specialpages-group-wiki' => 'Isefka d ifecka',
+'specialpages-group-redirects' => 'Isebtar usligen yetsiwzelen',
+'specialpages-group-spam' => 'Ifecka mgal e-mail yerkan',
+
+# Special:BlankPage
+'blankpage' => 'Asebtar ilem',
+'intentionallyblankpage' => 'Asebtar agi, yetweǧǧ (qrib) d-ilem s lebɣi.',
 
 # External image whitelist
 'external_image_whitelist' => ' #Eǧǧ ajeṛṛiḍ agi aken yella.<pre>
@@ -2962,9 +3381,68 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 #Ger akk tifersa n tinfaliyin timeɣẓanin nnig ajeṛṛiḍ  agi. Eǧǧ ajeṛṛiḍ agi aken yella.</pre>',
 
 # Special:Tags
+'tags' => 'Ticṛaḍ n ibeddilen sɣeblent',
 'tag-filter' => 'Astay n [[Special:Tags|ticraḍ]] :',
+'tag-filter-submit' => 'Sti',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Ticṛeṭ|Ticraḍ}}]] : $2)',
+'tags-title' => 'Ticraḍ',
+'tags-intro' => 'Asebtar agi yettaked umuɣ n ticraḍ ay aseɣẓan yezmer ad yeseqdec iwakken ad yecreḍ abeddel d anamek i yal abeddel.',
+'tags-tag' => 'Isem n ticṛeṭ',
+'tags-display-header' => 'Tummant deg umuɣen n ibeddilen',
+'tags-description-header' => 'Aglam ummid n ticṛeṭ',
+'tags-active-header' => 'Urmid ?',
+'tags-hitcount-header' => 'Ibeddilen yesɛan ticraḍ',
+'tags-active-yes' => 'Ih',
+'tags-active-no' => 'Ala',
+'tags-edit' => 'beddel',
+'tags-hitcount' => '$1 {{PLURAL:$1|abeddel|ibeddlen}}',
+
+# Special:ComparePages
+'comparepages' => 'Qaren isebtar',
+'compare-page1' => 'Asebtar 1',
+'compare-page2' => 'Asebtar 2',
+'compare-rev1' => 'Lqem 1',
+'compare-rev2' => 'Lqem 2',
+'compare-submit' => 'Qaren',
+'compare-invalid-title' => 'Azwel id efkiḍ ur yeɣbel ara.',
+'compare-title-not-exists' => 'Azwel id efkiḍ ulac-it.',
+'compare-revision-not-exists' => 'Lqem id efkiḍ ulac-it.',
+
+# Database error messages
+'dberr-header' => 'Wiki agi yesɛa ugur',
+'dberr-problems' => 'Ssurfet-aɣ ! Asmel agi yemliled ilɣiten itikniten.',
+'dberr-again' => 'Ɛreḍ ad arǧuḍ kra n tisdidin dɣa sismeḍ.',
+'dberr-info' => '(Ulamek an qqen ar uqeddac n taffa n isefka : $1)',
+'dberr-info-hidden' => '(Ulamek an qqen ar uqeddac n taffa n isefka)',
+
+# HTML forms
+'htmlform-submit' => 'Ssumer',
+'htmlform-reset' => 'Ekkes ibeddilen',
+'htmlform-selectorother-other' => 'Nniḍen',
+'htmlform-no' => 'Ala',
+'htmlform-yes' => 'Ih',
+'htmlform-chosen-placeholder' => 'Fren taxtiṛit',
 
 # New logging system
+'logentry-delete-delete' => '$1 {{GENDER:$2|yemḥa}} asebtar $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|yerred|terred}} asebtar $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit {{PLURAL:$5|n tadyant n uɣmis|n $5 tidyanin n uɣmis}} ɣef $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit n tidyanin n uɣmis ɣef $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit n ileqman ɣef usebtar $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|yemḥa|temḥa}} asebtar $3',
+'logentry-suppress-event' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit {{PLURAL:$5|n tadyant n uɣmis|n $5 tidyanin n uɣmis}} ɣef $3: $4',
+'logentry-suppress-revision' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit n tidyanin n uɣmis ɣef $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit n ileqman ɣef usebtar $3',
+'revdelete-content-hid' => 'agbur yeffren',
+'revdelete-summary-hid' => 'agzul n ubeddil yeffren',
+'revdelete-uname-hid' => 'isem n umseqdac yeffren',
+'revdelete-content-unhid' => 'agbur yebeqqeḍen',
+'revdelete-summary-unhid' => 'agzul n ubeddil yebeqqeḍen',
+'revdelete-uname-unhid' => 'isem n umseqdac yebeqqeḍen',
+'logentry-move-move' => '$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4 war anegzum',
 'rightsnone' => '(ulaḥedd)',
 
 # Feedback
@@ -2973,6 +3451,19 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'feedback-cancel' => 'Semmewet',
 'feedback-submit' => 'Ceggaɛ iwenniten',
 'feedback-adding' => 'Rnud iwenniten inek/inem ar usebter...',
+'feedback-error1' => 'Tuccḍa : Agmuḍ n API ur yetwaɛqel ara',
+'feedback-error3' => 'Tuccḍa : Ulac tamrarut n API',
+
+# API errors
+'api-error-badtoken' => 'Tuccḍa tagensit : yir « tiddest ».',
+'api-error-fetchfileerror' => 'Tuccḍa tagensit : Yella kra ur yaɛeddan ara s luwqem deg tiririt n ufaylu.',
+'api-error-http' => 'Tuccḍa tagensit : ur yezmer ara ad yeqqen ar uqeddac.',
+'api-error-ok-but-empty' => 'Tuccḍa tagensit : Ulac tamrarut seg uqeddac.',
+'api-error-stashfailed' => 'Tuccḍa tagensit : aqeddac ur yezmer ara ad yekles afaylu uɛḍil.',
+'api-error-unclassified' => 'Yefkad anezri warisem.',
+'api-error-unknown-code' => 'Tuccḍa warisem : « $1 »',
+'api-error-unknown-warning' => 'Alɣu warisem : "$1".',
+'api-error-unknownerror' => 'Tuccḍa warisem : « $1 »',
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|tasint|tisinin}}',
@@ -2985,4 +3476,6 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḍ ad tɛiwedeḍ axlaq n usebter-ag
 'duration-centuries' => '$1 {{PLURAL:$1|timiḍi|timiḍa}}',
 'duration-millennia' => '$1 {{PLURAL:$1|agimseggwas|agimseggwasen}}',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML deg ufaylu yekteren ur d-yetwesleḍ ara.',
 );
index d96e86b..8679a96 100644 (file)
@@ -76,7 +76,6 @@ $messages = array(
 'tog-minordefault' => 'Гулъытэгъуэшхуэ зимыӀэ хуэду щӀын гъэтэрэзыгъуэхэр',
 'tog-previewontop' => 'Япэ-еплъыр гъэтэрэзыным и пхырыплъым ипэ игъувэн',
 'tog-previewonfirst' => 'Япэ-еплъыр гъэтэрэзыным кӀуэным ипкӀэ гъэлъэгъуэн',
-'tog-nocache' => 'Кеш щӀыныр гъэункӀыфӀын напэкӀуэцӀ браузерым хэтхэм',
 'tog-enotifwatchlistpages' => 'Почтэм къэӀохун, тхылъ кӀэлъыплъыгъуэм хэт напэкӀуэцӀхэм я зэхъуэкӀыгъуэхэм',
 'tog-enotifusertalkpages' => 'Почтэм къэӀохун аккаунтым и напэкӀуэцӀ тепсэлъыхьыгъуэм и зэхъуэкӀыгъуэхэм',
 'tog-enotifminoredits' => 'Почтэм къэӀохун зэхъуэкӀыгъуэ цӀыкӀу халъхьэми',
@@ -196,7 +195,6 @@ $messages = array(
 'qbedit' => 'Гъэтэрэзын',
 'qbpageoptions' => 'НапэкӀуэцӀым и зэгъэзэхуэгъуэр',
 'qbmyoptions' => 'Уи зэгъэзэхуэгъуэхэр',
-'qbspecialpages' => 'Специал напэкӀуэцӀхэр',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -396,9 +394,6 @@ $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 /> 
-Функциэ: $1<br />
-ЩӀэлъэуэгъуэ: $2',
 'viewsource' => 'Хэплъэн',
 'viewsource-title' => 'НапэкӀуэцӀ $1 и япэрей тхыгъэ щытыкӀэм ухуоплъэщ',
 'actionthrottled' => 'ЩӀэхыгъэм убыдыгъэ иӀэ',
@@ -524,7 +519,6 @@ $2',
 'php-mail-error-unknown' => 'ХэщӀыкӀыгъуэ зымыӀэ хэукъуэгъуэ PHP-функциэ mail()',
 
 # Change password dialog
-'resetpass' => 'Пэролым и хъуэжын',
 'resetpass_announce' => 'Парол щӀэхкӀэ системэм зыкъебгъэцӀыхуа, уи электронэ почтэм къыпхуэкӀуамкӀэ. Системэм зыкъегъэцӀыхуныр нэбгъэсын щхьэкӀэ, парол щӀэ тебгъувэн хуэй.',
 'resetpass_header' => 'Аккаунтым и парол зэхъуэкӀыгъуэ',
 'oldpassword' => 'Паролыжьыр:',
@@ -828,10 +822,6 @@ $3 ар зтеухуауэ къитхыр: ''$2''",
 'revisiondelete' => 'Ихын/напэкӀуэцӀым и версиэхэр игъувэжын',
 'revdelete-nooldid-title' => 'Версиэ лъэшыр етауэ щыткъым',
 'revdelete-nooldid-text' => 'Версэ лъэшыр (иэ версиэхэр) ептауэ щыткъым, уигугъэр пщӀыным щхьэкӀэ.',
-'revdelete-nologtype-title' => 'Тхылъым и типыр зхуэдэр етакъым',
-'revdelete-nologtype-text' => 'Тхылъым и типыр ептакъым, лэжьыгъэ здебгъэкӀуэкӀыным уигугъэр.',
-'revdelete-nologid-title' => 'Тхылъым и хэукъуэгъэ хэтхэгъуэ',
-'revdelete-nologid-text' => 'Тхыгъэм и лъэшыгъу хъун хуеяр иптхакъым уи гугъэр быщӀын хьэкӀэ иэ лъэшыгъуэр щыӀэкъым.',
 'revdelete-no-file' => 'Къэгъэлъэгъуа файлыр щыӀэкъым.',
 'revdelete-show-file-confirm' => 'Арэзыуэ ущыт уеплъыну файл ихам и версиэ «<nowiki>$1</nowiki>» $2, $3 ?',
 'revdelete-show-file-submit' => 'НытӀэ',
@@ -865,8 +855,6 @@ $1",
 'logdelete-failure' => "'''Тхылъым и гъэлъэгъуэныр зэфӀэгъувакъым:'''
 $1",
 'revdel-restore' => 'лъагъукӀэр хъуэжын',
-'revdel-restore-deleted' => 'Иха версиэхэр',
-'revdel-restore-visible' => 'гъэлъэгъуа версиэхэр',
 'pagehist' => 'НапэкӀуэцӀым и тхыдэ',
 'deletedhist' => 'Ихыгъуэхэм я тхыдэ',
 'revdelete-hide-current' => 'Хэтхам и хэукъуэгъуэ $2, $1: мыр версиэ екӀуэкӀ.
@@ -935,10 +923,6 @@ $1",
 # Search results
 'searchresults' => 'Лъыхъуэным къыхэкӀахэр',
 'searchresults-title' => 'Ммыбы "$1" и лъыхъуэным къыхэкӀахэр',
-'searchresulttext' => 'Информациэ нэхъыбэ ухуэныкъуэмэ проэктым дежь напэкӀуэцӀ лъыхъуэнымкӀэ, еплъ [[{{MediaWiki:Helppage}}|щӀэупщӀэгъуэ лъэныкъуэм]].',
-'searchsubtitle' => 'Лъыхъуэгъуэ «[[:$1]]» ([[Special:Prefixindex/$1|напэкӀуэцӀу хъуар, апхуэдэцӀэкӀэ къэжьу]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|апхуэдэцӀэм техьэхэр]])',
-'searchsubtitleinvalid' => "ЩӀэупщӀэгъуэ '''$1'''",
-'notitlematches' => 'Зэтехуэ хэткъым напэкIуэцIхэм я цIэм',
 'notextmatches' => 'Зэтехуэ хэткъым напэкIуэцIхэм кІуэцІылъхэм',
 'prevn' => 'япэ итар {{PLURAL:$1|$1}}',
 'nextn' => 'яуж кӀуэр {{PLURAL:$1|$1}}',
@@ -952,13 +936,10 @@ $1",
 'search-interwiki-caption' => 'Проэкт къыдэщӀхэр',
 'search-interwiki-default' => '$1 къыхэкӀар:',
 'search-interwiki-more' => '(иджыри)',
-'nonefound' => "'''Гулъытыгъуэ.''' Тэрэзу имытхамэ узхуэныкъуэр, лъыхъуэгъуэр лъэныкъу хъуамкӀи ирегъэкӀуэкӀ. Къэгъэсэбэп ''all:'' пыгъувэгъуэр, зэгъэзэхуэгъуэ иӀэн щхьэкӀэ (хэтхэм я тепсэлъыхьыныгъэр, щапхъэхэр, нымыщӀхэр джоуэ хиубыдэным щхьэ), иэ узхуэныкъуэ лъэныкъуэр итхэ.",
 'search-nonefound' => 'Узлъыхъуэм техуэу щыӀэкъым.',
-'powersearch' => 'Убгъуауэ лъыхъу',
 'powersearch-legend' => 'Убгъуауэ лъыхъу',
 'powersearch-ns' => 'ЦIэзэхэтыгъуэм щылъыхъуэн',
 'powersearch-redir' => 'ЕгъэзэкӀахэри гъэлъэгъуэн',
-'powersearch-field' => 'Лъыхъуэн',
 'powersearch-togglelabel' => 'Къыхэхын:',
 'powersearch-toggleall' => 'Псори',
 'powersearch-togglenone' => 'Зыри/пари',
@@ -1004,7 +985,6 @@ $1",
 'recentchanges' => 'Гъэтэрэзыгъуэ щIэхэр',
 'recentchanges-legend' => 'Гъэтэрэзыгъуэ щӀэхэм я зэгъэзэхуэгъуэ',
 'recentchanges-feed-description' => 'Вики и иужырей зэхъуэкӀыгъeэхэм кӀэлъыплъын мы нэтыным.',
-'rcnote' => "{{PLURAL:$1|Яужырей '''$1''' зэхъуэкыгъуэ|Яужырей '''$1''' зэхъуэкыгъуэхэр}} '''$2''' {{PLURAL:$2|махуэ|махуэм}}, зэман $5 $4.",
 'rclistfrom' => 'ЗэхъуэкӀыгъуэхэр гъэлъэгъуэн $1 щыкӀэдзауэ',
 'rcshowhideminor' => '$1 мащІэу яхъуэжахэр',
 'rcshowhidebots' => 'Боту $1',
@@ -1228,8 +1208,6 @@ $1",
 'movepage-moved' => "'''«$1» напэкIуэцIым и цIэр хъуэжащ мыпхуэдэу: «$2»'''",
 'articleexists' => 'Апхуэдэ цӀэ зезыхьэ напэкӀуэц щыӀэщ, иэ хуэмыкӀуэ цӀэ иптха.
 НэмыщӀ цӀэ къыхэхын хуеуэ щытщ.',
-'talkexists' => "'''НапэкӀуэцӀым и цӀэр зэхъуэкӀащ, ауэ напэкӀуэцӀ тепсэлъыхьыгъуэм и цӀэр зэпхъуэкӀ хъукъым, апхуэдэ напэкӀуэцӀ зэрщыӀэм щхьэкӀэ. Уэр-уэру ӀэрыщӀкӀэ зэхэбгъэхьэн хуэйхэ.'''",
-'movedto' => 'зэдзэкIащ мыпхуэдэу',
 'movetalk' => 'НапэкӀуэцӀ тепсэлъыхьыгъуэ теухуам и цӀэр зэхъуэкӀын',
 'movelogpage' => 'ЦӀэхъуэкӀынхэм я тхылъ',
 'movereason' => 'Щхьэусыгъуэ:',
@@ -1332,10 +1310,6 @@ $1",
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Файлыр гъэтэрэзын, нэгъуэщӀ программэ и сэбэпкӀэ',
-'edit-externally-help' => '(нэхъыбу еплъ [https://www.mediawiki.org/wiki/Manual:External_editors илъхьэным и тепсэлъыхьыгъуэ])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'псори',
 'namespacesall' => 'псори',
index 7c987ae..4215cb8 100644 (file)
@@ -25,8 +25,11 @@ $namespaceNames = array(
 );
 
 $messages = array(
-'underline-always' => 'Bambala nyonso',
-'underline-never' => 'Ata mbala mosi ve',
+# User preference toggles
+'tog-showhiddencats' => 'Monisa bakalasi ya kubûmba',
+
+'underline-always' => 'Bambàla nyonso',
+'underline-never' => 'Ata mbàla mosi ve',
 
 # Dates
 'sunday' => 'Lumîngu',
@@ -79,14 +82,36 @@ $messages = array(
 'oct' => 'ng10',
 'nov' => 'ng11',
 'dec' => 'ng12',
+'january-date' => 'Ngônda 1 kilumbu $1',
+'february-date' => 'Ngônda 2 kilumbu $1',
+'march-date' => 'Ngônda 3 kilumbu $1',
+'april-date' => 'Ngônda 4 kilumbu $1',
+'may-date' => 'Ngônda 5 kilumbu $1',
+'june-date' => 'Ngônda 6 kilumbu $1',
+'july-date' => 'Ngônda 7 kilumbu $1',
+'august-date' => 'Ngônda 8 kilumbu $1',
+'september-date' => 'Ngônda 9 kilumbu $1',
+'october-date' => 'Ngônda 10 kilumbu $1',
+'november-date' => 'Ngônda 11 kilumbu $1',
+'december-date' => 'Ngônda 12 kilumbu $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kalasi|Bakalasi}}',
-'category_header' => 'Mikanda na kalasi "$1"',
+'pagecategories' => '{{PLURAL:$1|Mutîndu|Mitindu}}',
+'category_header' => 'Mikânda na mutîndu "$1"',
+'category-media-header' => 'Media na mutîndu "$1"',
+'category-empty' => 'Mutîndu yayi kele na mikânda to media ve.',
+'hidden-categories' => '{{PLURAL:$1|Mutîndu ya kubûmba|Mitîndu ya kubûmba}}',
+'hidden-category-category' => 'Mitîndu ya kubûmba',
+'category-article-count' => '{{PLURAL:$2|Mutîndu yayi kele na mukânda yangó.|{{PLURAL:$1|Mukânda|$1 mikânda }} kele na kati ya mutîndu yayi, $2 na kimvuka.}}',
+'category-article-count-limited' => '{{PLURAL:$1|Mukânda|$1 mikânda}} ya kulânda ke vwandaka na mutîndu yangó',
+'category-file-count' => '{{PLURAL:$2|Mutîndu yayi kele na kaka fisye mosi.|Mutîndu yayi kele na {{PLURAL:$1|fisye|$1 bafisye}} ya kulânda katuka $2 bafisye na kimvuka.}}',
+'category-file-count-limited' => '{{PLURAL:$1|Fisye|$1 bafisye}} ke vwandaka na mutîndu yangó.',
 
+'about' => 'Luzâbu',
 'article' => 'Pagina contenta continens',
 'cancel' => 'Katula',
-'mypage' => 'Lukaya ya munu',
+'moredotdotdot' => 'Dyaka...',
+'mypage' => 'Mukânda ya munu',
 'mytalk' => 'Disolo ya munu',
 'and' => '&#32;mpe',
 
@@ -94,129 +119,362 @@ $messages = array(
 'qbfind' => 'Sosa',
 'qbbrowse' => 'Tala',
 'qbedit' => 'Soba',
+'qbpageoptions' => 'Mukânda yayi',
+'qbmyoptions' => 'Mikânda ya munu',
+'faq' => 'Kyuvu ná mvutu',
+'faqpage' => 'Lukanu:Kyuvu ná mvutu',
 
 # Vector skin
 'vector-action-delete' => 'Kufwa',
 'vector-action-move' => 'Nata',
-'vector-view-edit' => 'Sonika',
+'vector-action-protect' => 'Keba',
+'vector-view-create' => 'Tunga',
+'vector-view-edit' => 'Soba',
 'vector-view-history' => 'Tala bansoba',
 'vector-view-view' => 'Tânga',
 
-'errorpagetitle' => 'Foti',
-'returnto' => 'Vutukila $1',
-'help' => 'Nsadisa',
+'errorpagetitle' => 'Fôti',
+'returnto' => 'Vutuka na $1',
+'tagline' => 'Katuka {{SITENAME}}',
+'help' => 'Lusadisu',
 'search' => 'Sosa',
 'searchbutton' => 'Sosa',
 'searcharticle' => 'Kwenda',
-'history' => 'Bansoba ya mukanda',
+'history' => 'Bansoba ya mukânda',
 'history_short' => 'Bansoba',
 'view' => 'Tala',
-'edit' => 'Sonika',
-'editthispage' => 'Soba mukanda yayi',
+'edit' => 'Soba',
+'create' => 'Tunga',
+'editthispage' => 'Soba mukânda yayi',
+'create-this-page' => 'Tunga mukânda yayi',
 'delete' => 'Kufwa',
-'deletethispage' => 'Kufwa mukanda yayi',
+'deletethispage' => 'Kufwa mukânda yayi',
+'undelete_short' => 'Vutula {{PLURAL:$1|nsoba mosi|bansoba $1}}',
+'viewdeleted_short' => 'Tala {{PLURAL:$1|nsoba mosi|bansoba $1}} ya kufwa',
+'protect' => 'Keba',
+'protect_change' => 'soba',
+'protectthispage' => 'Keba mukânda yayi',
+'newpage' => 'Mukânda ya yimpa',
+'talkpage' => 'Zônzana mukânda yayi',
 'talkpagelinktext' => 'Disolo',
+'postcomment' => 'Ndâmbu ya yimpa',
 'talk' => 'Disolo',
 'views' => 'Bantadilu',
 'toolbox' => 'Bisadilu',
+'userpage' => 'Tala mukânda ya kisadi',
+'projectpage' => 'Tala mukânda ya lukanu',
+'imagepage' => 'Tala fisye',
+'mediawikipage' => 'Tala mukânda ya nsângu',
+'viewhelppage' => 'Tala mukânda ya lusadisu',
+'categorypage' => 'Tala mukânda ya mutîndu',
 'viewtalkpage' => 'Tala disolo',
-'otherlanguages' => 'Bandinga ya nkaka',
-'redirectedfrom' => '(Balulama tuka $1)',
+'otherlanguages' => 'Bandînga ya nkaka',
+'redirectedfrom' => '(natama katuka $1)',
+'redirectpagesub' => 'Mukânda ya kunata',
 'lastmodifiedat' => 'Mukânda yayi me sobama na kilumbu $1 na ngûnga $2',
-'jumpto' => 'Pamuka na:',
+'viewcount' => 'Mukânda yayi talamaka {{PLURAL:$1|mbàla mosi|bambàla $1}}.',
+'protectedpage' => 'Mukânda ya kukeba',
+'jumpto' => 'Kwenda na:',
 'jumptosearch' => 'nsosa',
+'pool-errorunknown' => 'Fôti ya kuzâba ve',
+
+# 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).
+'aboutsite' => 'Luzâbu ya {{SITENAME}}',
+'aboutpage' => 'Lukanu:Luzâbu',
+'currentevents' => 'Mâmbu ya malu-malu',
+'currentevents-url' => 'Lukanu:Mâmbu ya malu-malu',
+'edithelp' => 'Lusadisu ya kusoba',
+'helppage' => 'Lusadisu:Mâmbu',
+'mainpage' => 'Mukânda ya ngudi',
+'mainpage-description' => 'Mukânda ya ngudi',
+'portal' => 'Mbôngi',
+'portal-url' => 'Lukanu:Mbôngi',
 
-# 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).
-'currentevents' => 'Mambu ya mpa',
-'currentevents-url' => 'Project:Mambu ya mpa',
-'mainpage' => 'Lukaya ya mfumu',
-'mainpage-description' => 'Lukaya ya mfumu',
+'badaccess' => 'Fôti ya luve',
+'badaccess-group0' => 'Nge kele na luve ve kusala kisalu yina nge me zola.',
 
-'retrievedfrom' => 'Receptum de "$1"',
+'ok' => 'Ee',
+'retrievedfrom' => 'Me kuzwa katuka "$1"',
 'youhavenewmessages' => 'Nge kele na $1 ($2).',
-'newmessageslink' => 'bansangu ya yimpa',
+'youhavenewmessagesfromusers' => 'Nge kele na $1 na {{PLURAL:$3|kisadi ya nkaka|$3 bisadi}} ($2).',
+'youhavenewmessagesmanyusers' => 'Nge kele na $1 na kisadi mîngi ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|nsângu ya yimpa|bansângu ya yimpa}}',
 'youhavenewmessagesmulti' => 'Nge kele na bansangu ya yimpa kuna $1',
 'editsection' => 'soba',
 'editold' => 'soba',
 'editlink' => 'soba',
 'editsectionhint' => 'Soba kibuku: $1',
+'showtoc' => 'monisa',
+'hidetoc' => 'bûmbisa',
+'viewdeleted' => 'Tala $1?',
 'red-link-title' => '$1 (mukanda kele ve)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Mukanda',
+'nstab-main' => 'Mukânda',
+'nstab-user' => 'Mukânda ya sadi',
+'nstab-project' => 'Mukânda ya lukanu',
+'nstab-image' => 'Fisyé',
 'nstab-mediawiki' => 'Nsangu',
-'nstab-category' => 'Kalasi',
+'nstab-help' => 'Mukânda ya lusadisu',
+'nstab-category' => 'Mutîndu',
+
+# General errors
+'error' => 'Fôti',
+'databaseerror' => 'Fôti na depó ya doné',
+'internalerror' => 'Fôti na kati',
+'internalerror_info' => 'Fôti na kati: $1',
+'filenotfound' => 'Fisyé "$1" me kutama ve.',
+'fileexistserror' => 'Yawu lênda kusonika ve fisyé "$1": Fisyé kele.',
+'cannotdelete' => 'Mukânda to fisyé "$1" me lênda kufwa ve. Muntu ya nkaka kufwaka yawu?',
+'cannotdelete-title' => 'Mukânda "$1" lênda kufwa ve',
+'badtitle' => 'Nkûmbu ya mbote ve',
+'viewsource' => 'Tala masono ya kisina',
+'viewsource-title' => 'Tala masono ya kisina ya $1',
+'namespaceprotected' => "Nge kele na luve ve kusoba mikânda na yinza-nkûmbu ya '''$1'''.",
+'customcssprotected' => 'Nge kele na luve ve kusoba mukânda CSS yayi, samu yawu kele na mâmbu ya muntu ya nkaka.',
+'customjsprotected' => 'Nge kele na luve ve kusoba mukânda yayi ya JavaScript, samu yawu kele na mâmbu ya muntu ya nkaka.',
+'exception-nologin' => 'Nge me kota ve',
 
 # Login and logout pages
+'welcomeuser' => 'Kwiza mbote, $1!',
 'yourname' => 'Nkûmbu ya nsoniki:',
+'userlogin-yourname' => 'Nkûmbu ya kisadi',
+'userlogin-yourname-ph' => 'Sonika nkûmbu ya kisadi',
 'yourpassword' => 'Mpovo ya kuluta:',
+'userlogin-yourpassword' => 'Mpôva ya nkota',
+'userlogin-yourpassword-ph' => 'Sonika mpôva ya nkota',
+'createacct-yourpassword-ph' => 'Sonika mpôva ya nkota',
+'yourpasswordagain' => 'Sonika dyaka mpôva ya nkota',
+'createacct-yourpasswordagain' => 'Ndima mpôva ya nkota',
+'createacct-yourpasswordagain-ph' => 'Sonika dyaka mpôva ya nkota',
+'yourdomainname' => 'Yinsi ya nge:',
+'password-change-forbidden' => 'Nge lênda ve kusoba bampovo ya kuluta na wiki yayi.',
 'login' => 'Kota',
+'nav-login-createaccount' => 'Kota / sala konti',
 'userlogin' => 'Kota / sala konti',
+'userloginnocreate' => 'Kota',
 'logout' => 'Basika',
 'userlogout' => 'Basika',
+'notloggedin' => 'Nge me kota ve',
+'userlogin-noaccount' => 'Nge kele na konti ve?',
+'userlogin-joinproject' => 'Yika {{SITENAME}}',
 'nologin' => 'Nge kele na konti ve? $1.',
 'nologinlink' => 'Sala konti',
 'createaccount' => 'Sala konti',
+'gotaccount' => 'Nge salaka konti? $1',
 'gotaccountlink' => 'Kota',
-'loginlanguagelabel' => 'Ndinga: $1',
+'userlogin-resetpassword-link' => 'Kuzwa mpôva ya nkota ya yimpa',
+'helplogin-url' => 'Lusadisu:Kukota',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Sadisa munu kukota]]',
+'createacct-realname' => 'Nkûmbu ya kyeleka:',
+'createaccountreason' => 'Samu:',
+'createacct-reason' => 'Samu',
+'createacct-reason-ph' => 'Samu na yinki nge ke na sala konti ya nkaka',
+'createacct-imgcaptcha-ph' => 'Sonika bisono yina kele na zulu',
+'createacct-submit' => 'Sala konti ya nge',
+'createacct-benefit-heading' => '{{SITENAME}} me salama na bantu na mutîndu ya nge.',
+'createacct-benefit-body1' => '{{PLURAL:$1|nsoba|bansoba}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|mukânda|mikânda}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|kisoniki|bisoniki}} ya malu-malu',
+'badretype' => 'Bampôva ya nkota kele mutîndu mosi ve.',
+'userexists' => 'Muntu ya nkaka kele na nkûmbu ya kisadi yangó.
+Pesa nkûmbu ya nkaka.',
+'loginerror' => 'Fôti na kukota',
+'createaccounterror' => 'Lênda kusala konti ve: $1',
+'loginsuccesstitle' => 'Kukota me salama',
+'loginsuccess' => "'''Nge me kota na {{SITENAME}} na nkûmbu ya \"\$1\".'''",
+'nosuchuser' => 'Kisadi, yina kele na nkûmbu "$1", kele ve.
+Sonika dyaka nkûmbu ya nge, to  [[Special:UserLogin/signup|sala konti ya yimpa]].',
+'nosuchusershort' => 'Kisadi, yina kele na nkûmbu "$1", kele ve.
+Sonika dyaka nkûmbu ya nge.',
+'nouserspecified' => 'Nge fwana sonika nkûmbu ya kisadi.',
+'wrongpassword' => 'Mpovo ya kuluta vwandaka ya mbote ve.
+Meka dyaka.',
+'wrongpasswordempty' => 'Mpovo ya kuluta vwandaka nkatu.
+Meka dyaka.',
+'passwordtooshort' => 'Mpovo ya kuluta fwana kele na {{PLURAL:$1|kisono 1|bisono $1}}.',
+'password-name-match' => 'Mpovo ya kuluta fwana kele nkaka na nkûmbu ya nge.',
+'mailmypassword' => 'Fidisa mpovo ya kuluta ya yimpa na email',
+'accountcreated' => 'Konti me salama',
+'createaccount-title' => 'Kusala konti na {{SITENAME}}',
+'loginlanguagelabel' => 'Ndînga: $1',
+
+# Change password dialog
+'resetpass_header' => 'Soba mpovo ya kukota',
+'oldpassword' => 'Mpovo ya nkulu:',
+'newpassword' => 'Mpovo ya yimpa:',
+'retypenew' => 'Sonika dyaka mpovo ya yimpa:',
+'resetpass-submit-loggedin' => 'Soba mpovo ya kukota',
+'resetpass-submit-cancel' => 'Sala ve',
+
+# Special:ChangeEmail
+'changeemail-none' => '(nkatu)',
+'changeemail-password' => 'Mpovo ya nge ya kukota {{SITENAME}}:',
+'changeemail-cancel' => 'Sala ve',
+
+# Edit page toolbar
+'bold_sample' => 'Kisono ya vimbu',
+'bold_tip' => 'Kisono ya vimbu',
+'italic_sample' => 'Kisono ya nswalu',
+'italic_tip' => 'Kisono ya nswalu',
 
 # Edit pages
+'minoredit' => 'Yayi kele nsoba ya fyoti',
+'watchthis' => 'Keba mukânda yayi',
+'savearticle' => 'Lunda mukânda',
+'showpreview' => 'Monisa mukânda',
+'showdiff' => 'Monisa bansoba',
+'loginreqtitle' => 'Nge fwana kukota ntete',
+'loginreqlink' => 'kukota',
+'loginreqpagetext' => 'Nge fwana $1 samu na kutala mikânda ya nkaka.',
 'newarticle' => '(Yimpa)',
 'editing' => 'Na kusonika $1',
+'creating' => 'Na kutûnga $1',
 'editingsection' => 'Na kusonika $1 (kibuku)',
+'editingcomment' => 'Na kusoba $1 (kibuku ya yimpa)',
+'template-protected' => '(ya kukeba)',
+'template-semiprotected' => '(ya mwa kukeba)',
+'permissionserrors' => 'Fôti ya luve',
+'permissionserrorstext' => 'Nge kele na luve ya kusala yayi ve, samu na:',
+'permissionserrorstext-withaction' => 'Nge kele na luve ve ku $2, samu na:',
+'postedit-confirmation' => 'Nsoba ya nge me lundama.',
+
+# Content models
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # History pages
+'page_first' => 'ntete',
+'page_last' => 'nsuka',
 'history-fieldset-title' => 'Monisa bansoba',
 'histfirst' => 'Ya ntete',
 'histlast' => 'Ya nsuka',
+'historyempty' => '(nkatu)',
+
+# Revision feed
+'history-feed-item-nocomment' => '$1 na $2',
+
+# Revision deletion
+'rev-delundel' => 'monisa/bûmbisa',
+'rev-showdeleted' => 'monisa',
+'revdelete-show-file-submit' => 'Ee',
+'revdelete-radio-same' => '(soba ve)',
+'revdelete-radio-set' => 'Ee',
+'revdelete-radio-unset' => 'Ve',
+'revdelete-log' => 'Samu:',
+'pagehist' => 'Bansoba ya mukânda',
+
+# History merging
+'mergehistory-from' => 'Mukânda ya kukwiza:',
+'mergehistory-into' => 'Mukânda ya kukwenda:',
 
 # Diffs
-'lineno' => 'Nzila ya $1:',
+'lineno' => 'Mulôngâ ya $1:',
 'editundo' => 'vutula',
 
 # Search results
+'searchresults' => 'Bandandu ya kusosa',
+'searchresults-title' => 'Bandandu ya kusosa ya "$1"',
 'prevn' => 'biyita {{PLURAL:$1|$1}}',
 'nextn' => 'bilandi {{PLURAL:$1|$1}}',
-'viewprevnext' => 'Mona ($1 {{int:pipe-separator}} $2) ($3).',
+'shown-title' => 'Monisa $1 {{PLURAL:$1|ndandu|bandandu}} na mukânda',
+'viewprevnext' => 'Tala ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-new' => "'''Tunga mukânda \"[[:\$1]]\" na wiki yayi!'''",
 'searchprofile-everything' => 'Nyonso',
 'searchprofile-articles-tooltip' => 'Sosa na $1',
 'searchprofile-project-tooltip' => 'Sosa na $1',
 'search-result-size' => '$1 ({{PLURAL:$2|mpovo 1|bampovo $2}})',
 'search-section' => '(kibuku $1)',
+'search-interwiki-default' => 'Bandându $1:',
+'search-interwiki-more' => '(dyaka)',
 'searchall' => 'nyonso',
-'powersearch' => 'Sosa',
+'powersearch-toggleall' => 'Nyonso',
+'powersearch-togglenone' => 'Nkatu',
 
 # Preferences page
 'mypreferences' => 'Konte ya munu',
-'yourlanguage' => 'Ndinga:',
+'prefs-skin' => 'Mpùsu',
+'saveprefs' => 'Lunda',
+'prefs-editing' => 'Kusoba',
+'searchresultshead' => 'Soba',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-asia' => 'Azia',
+'timezoneregion-australia' => 'Australia',
+'timezoneregion-europe' => 'Mputu',
+'timezoneregion-indian' => 'Mubu India',
+'timezoneregion-pacific' => 'Mubu Pasifika',
+'prefs-searchoptions' => 'Sosa',
+'prefs-files' => 'Bafisye',
+'yourrealname' => 'Nkûmbu ya kyeleka:',
+'yourlanguage' => 'Ndînga:',
+'gender-male' => 'Bakala',
+'gender-female' => 'Kênto',
+
+# User rights
+'userrights-reason' => 'Samu:',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'soba mukânda yayi',
 
 # Recent changes
 'recentchanges' => 'Bansoba ya yimpa',
-'recentchanges-label-minor' => 'Nsoba yayi kele ya fyoti-fyoti',
+'recentchanges-label-newpage' => 'Nsoba yayi me sala mukânda ya yimpa.',
+'recentchanges-label-minor' => 'Nsoba yayi kele ya fyoti',
 'recentchanges-label-bot' => 'Nsoba yayi me salama na robo',
-'rcshowhideminor' => '$1 bansoba ya fyoti-fyoti',
-'rcshowhidemine' => '$1 bansoba na munu',
+'rcshowhideminor' => '$1 bansoba ya fyoti',
+'rcshowhidemine' => '$1 bansoba ya munu',
 'diff' => 'nsoba',
 'hist' => 'nsoba',
+'hide' => 'Bûmbisa',
 'show' => 'Monisa',
 'minoreditletter' => 'f',
 
+# Recent changes linked
+'recentchangeslinked-page' => 'Nkûmbu ya mukânda:',
+
+# Upload
+'savefile' => 'Lunda fisyé',
+
+'license-header' => 'Baluve',
+
 # File description page
+'file-anchor-link' => 'Fisyé',
+'filehist-current' => 'bubu yayi',
 'filehist-datetime' => 'Kilumbu/Ngûnga',
-'filehist-user' => 'Nsoniki',
+'filehist-user' => 'Sadi',
 
 # Random page
-'randompage' => 'Lukaya na kintulumukini',
+'randompage' => 'Mukânda na bweso',
 
 # Miscellaneous special pages
 'ncategories' => '{{PLURAL:$1|kalasi|bakalasi}} $1',
-'newpages' => 'Mikanda ya yimpa',
+'newpages' => 'Mikânda ya yimpa',
+'move' => 'Nata',
 
 # Special:AllPages
+'allpages' => 'Mikânda nyonso',
 'alphaindexline' => '$1 tî $2',
+'allarticles' => 'Mikânda nyonso',
 
 # Special:Categories
-'categories' => 'Bakalasi',
+'categories' => 'Mitîndu',
+
+# Watchlist
+'watch' => 'Keba',
+
+# Delete
+'deletepage' => 'Kufwa mukânda',
+'actioncomplete' => 'Kisalu me manisamam',
+
+# Rollback
+'rollbacklink' => 'vutula',
+
+# Undelete
+'undeleteviewlink' => 'tala',
+
+# Namespace form on various pages
+'blanknamespace' => '(Ngudi)',
 
 # Contributions
 'mycontris' => 'Makabu ya munu',
@@ -224,35 +482,58 @@ $messages = array(
 'year' => 'Katuka mvula:',
 
 'sp-contributions-talk' => 'disolo',
+'sp-contributions-submit' => 'Sosa',
 
 # What links here
-'whatlinkshere' => 'Balukaya ke songa awa',
+'whatlinkshere' => 'Mikânda ke sônga awa',
+'whatlinkshere-page' => 'Mukânda:',
+
+# Block/unblock
+'ipboptions' => 'bangûnga 2:2 hours,kilumbu 1:1 day,bilumbu 3:3 days,Lumîngu 1:1 week,Balumîngu 2:2 weeks,ngônda 1:1 month,bangônda 3:3 months,bangônda 6:6 months,mvula 1:1 year,seko:infinite',
+'contribslink' => 'bisalu',
 
 # Move page
-'movearticle' => 'Nata lukaya:',
+'movearticle' => 'Nata mukânda:',
 'newtitle' => 'Nkûmbu ya nkaka:',
-'movepagebtn' => 'Nata lukaya',
+'movepagebtn' => 'Nata mukânda',
 'pagemovedsub' => 'Kunata me nunga',
 'movepage-moved' => '\'\'\'"$1" me natama na "$2"\'\'\'',
-'articleexists' => 'Lukaya ya nkaka kele na nkûmbu yango, to nkûmbu yango kele ya mbote ve.
+'articleexists' => 'Mukânda ya nkaka kele na nkûmbu yangó, to nkûmbu yangó kele ya mbote ve.
 Sôla nkûmbu ya nkaka.',
 'movereason' => 'Samu:',
 
+# Namespace 8 related
+'allmessagesname' => 'Nkûmbu',
+
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Mukanda ya munu',
+'tooltip-pt-userpage' => 'Mukânda ya munu',
 'tooltip-pt-mytalk' => 'Disolo ya munu',
 'tooltip-pt-logout' => 'Basika',
+'tooltip-ca-edit' => 'Nge lênda soba mukânda yayi. Bula "Monisa mukânda" ntete na kulunda.',
+'tooltip-ca-history' => 'Bansoba ya ntama na mukânda yayi',
+'tooltip-ca-protect' => 'Keba mukânda yayi',
+'tooltip-ca-delete' => 'Kufwa mukânda yayi',
+'tooltip-ca-move' => 'Nata mukânda yayi',
 'tooltip-search' => 'Sosa na {{SITENAME}}',
+'tooltip-search-fulltext' => 'Sosa mikânda yina kele na masono yayi',
+'tooltip-p-logo' => 'Tala mukânda ya ngudi',
+'tooltip-n-mainpage' => 'Tala mukânda ya ngudi',
+'tooltip-n-mainpage-description' => 'Tala mukânda ya ngudi',
+'tooltip-ca-nstab-main' => 'Tala mukânda',
+'tooltip-ca-nstab-user' => 'Tala mukânda ya kisadi',
+'tooltip-ca-nstab-image' => 'Tala mukânda ya fisyé',
+'tooltip-save' => 'Lunda bansoba ya nge',
 'tooltip-undo' => '"Vutula" ke vutula nsoba yayi mpe yawu ke monisa lumoni ya kusoba. Nge lênda sonika kikuma ya mvutula.',
 
 # 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'nyonso',
 'namespacesall' => 'nyonso',
 'monthsall' => 'nyonso',
 
 # Table pager
-'table_pager_next' => 'Lukaya ya kulanda',
-'table_pager_prev' => 'Lukaya ya kuyita',
-'table_pager_first' => 'Lukaya ya ntete',
-'table_pager_last' => 'Lukaya ya nsuka',
+'table_pager_next' => 'Mukânda ya kulânda',
+'table_pager_prev' => 'Mukânda ya kutwala',
+'table_pager_first' => 'Mukânda ya ntete',
+'table_pager_last' => 'Mukânda ya nsuka',
 
 );
index fe89e47..087c5d6 100644 (file)
 $fallback = 'ur';
 $rtl = true;
 
+$namespaceNames = array(
+       NS_MAIN             => '',
+       NS_MEDIA            => 'میڈیا',
+       NS_SPECIAL          => 'خاص',
+       NS_TALK             => 'مشقولگی',
+       NS_USER             => 'ممبار/یوزر',
+);
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'ربطو خط کشیدگی',
@@ -36,7 +44,6 @@ $messages = array(
 'tog-minordefault' => 'تھمامو ترمیماتن ہمیشہ بطورِ معمولی ترمیم نشانزد کورے',
 'tog-previewontop' => 'تدوینی خاناری پروشٹی نمائش پشاؤے',
 'tog-previewonfirst' => 'آویلو ترمیما نمائش پشاؤے',
-'tog-nocache' => 'بطن کاری صفحہو غیر فعال ساؤزاوے',
 'tog-enotifwatchlistpages' => 'کیاوتکہ مہ  زیرِنظرفہرستہو کیہ صفحہا تبدیلی واقع کہ ہوی تھے متے بشلی کغاز انزاوے',
 'tog-enotifusertalkpages' => 'کیاوتکہ مہ تبادلۂ خیالو صفحہ تبدیلی واقع کہ ہویی تھے متے بشلی کغاز(ای میل) انځاوے جما',
 'tog-enotifminoredits' => 'صفحاتہ معمولی ترمیماتن بارا دی متے بشلی کغاز انزاوے',
@@ -129,9 +136,9 @@ $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|مضمون شینی|{{Plural:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
+'category-article-count' => '{{PLURAL:$2|مضمون شینی|{{PLURAL:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
 'category-article-count-limited' => 'The following {{PLURAL:$1|صفحا|$1 صفحات}} in the current category.',
-'category-file-count' => '{{Plural:$2|مضمون شینی|{{Plural:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
+'category-file-count' => '{{PLURAL:$2|مضمون شینی|{{PLURAL:$1|صفحا|صفحا}} $2 ھیہ زمرا مضمون شینی}}',
 'category-file-count-limited' => 'The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
 'listingcontinuesabbrev' => 'جاری',
 'index-category' => 'نو انڈیکس صفحات',
@@ -156,7 +163,6 @@ $messages = array(
 'qbedit' => 'ترمیم',
 'qbpageoptions' => 'ھیہ صفحہ',
 'qbmyoptions' => 'مہ صفحات',
-'qbspecialpages' => 'خاص صفحات',
 'faq' => 'عام معلومات',
 'faqpage' => 'Project:معلوماتِ عامہ',
 
@@ -447,7 +453,6 @@ $1 (صفحہ موجود نیکی)',
 'loginlanguagelabel' => 'زبان: $1',
 
 # Change password dialog
-'resetpass' => 'پاسورڈو چینج کورے',
 'resetpass_announce' => 'تو ای برقی ارسال کردہ عارضی کوڈ ورڈو سوم جستہ داخل بیتی آسوس.
 داخلِ نوشتہ بیکو عملو مکمل کوریکو بچے تہ ھیارا نوغ پاسورڈ متعین کوریلک بوی:',
 'resetpass_header' => 'کھاتو پاسورڈو تبدیل کورے',
@@ -588,8 +593,6 @@ $1 (صفحہ موجود نیکی)',
 'revdelete-radio-set' => 'Yes/دی',
 'revdelete-radio-unset' => 'نو',
 'revdel-restore' => 'ظاہریتو تبدیل کورے',
-'revdel-restore-deleted' => 'حذف شدہ رویژنز',
-'revdel-restore-visible' => 'ویزیبل رویژنز',
 
 # History merging
 'mergehistory-revisionrow' => '$1 ($2) $3 . . $4 $5 $6',
@@ -607,11 +610,6 @@ $1 (صفحہ موجود نیکی)',
 # Search results
 'searchresults' => 'تلاشو نتیجہ',
 'searchresults-title' => 'نتائجِ تلاش برائے "$1"',
-'searchresulttext' => 'ویکیپیڈیا تلاشو باریا مزید معلوماتو بچے، ویکیپیڈیا تلاشو صفحہو لوڑے۔{{SITENAME}}, [[{{MediaWiki:Helppage}}|{{int:help}}]].
-{{SITENAME}}, [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'تہ تلاش برائے \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" شروع باک تمام صفحات]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" مربوط تمام صفحات]])',
-'searchsubtitleinvalid' => "تہ تلاش براۓ '''$1'''",
-'notitlematches' => 'کیہ دی مماثل عنوان صفحہ ملاو نو ھوی',
 'notextmatches' => 'ھیہ عنوانو سورا کیہ دی صفحہ موجود نیکی',
 'prevn' => 'آچھو{{PLURAL:$1|$1}}',
 'nextn' => 'پروشٹیو{{PLURAL:$1|$1}}',
@@ -642,14 +640,10 @@ $1 (صفحہ موجود نیکی)',
 'searchrelated' => 'متعلقہ',
 'searchall' => 'کھل',
 'showingresultsheader' => "{{PLURAL:$5|نتیجہ'''$1''' of '''$3'''|نتیجہ'''$1 - $2''' of '''$3'''}} بچے'''$4'''",
-'nonefound' => "'''یاددہانی''': عموماً صرف ای کما نامان تلاش کورونو بونیان۔
-تمام مواد (بشمول تبادلۂ خیال صفحات، سانچہ جات وغیران) تلاش کوریکو بچے تان استفساراری پروشٹی ''all:'' لیگاوے، یا تان پسندو نامو بطور سابقہ استعمال کورے",
 'search-nonefound' => 'استفسارو مطابقا نتائج ملاو نو ھونی.',
-'powersearch' => 'ایڈوانس تلاش',
 'powersearch-legend' => 'ایڈوانس سرچ',
 'powersearch-ns' => 'جائے ناما تلاش:',
 'powersearch-redir' => 'فہرستِ رجوع مکرر',
-'powersearch-field' => 'تلاش برائے',
 'powersearch-toggleall' => 'سف',
 
 # Preferences page
@@ -700,7 +694,6 @@ HTML tags لوڑے.',",
 'recentchanges-label-minor' => 'ھیہ ای معمولی ترمیم شیر',
 'recentchanges-label-bot' => 'ھیہ ایڈیٹو خود کار بوٹو زریعا انجام دیونو ہوی',
 'recentchanges-label-unpatrolled' => 'ھیہ ترمیمو ھمونیہ پت مراجعت(Patrolled) کورونو نو بیتی شیر',
-'rcnote' => "درج ذیل گزشتہ {{PLURAL:$2|بس|'''$2''' انوسا}} باک {{PLURAL:$1|'''ای''' تبدیلی شیر|آخری '''$1''' تبدیلی شینی}}، $5، $4.",
 'rcnotefrom' => "ھیہ موڑا '''$2''' کورونو بیرو تبدیلیان تفصیلات شینی ('''$1''' تبدیلیان پشینو بونیان)۔",
 'rclistfrom' => '$1 نوغ تبدیلیاں پشیک شروع کورے',
 'rcshowhideminor' => ' معمولی ترامیم $1',
@@ -814,8 +807,6 @@ HTML tags لوڑے.',",
 'allpagesfrom' => 'مطلوبہ حرفاری شروع باک صفحاتن نمائش:',
 'allpagesto' => 'مطلوبہ حرفاری ختم باک صفحاتن نمائش:',
 'allarticles' => 'تمام مقالات',
-'allpagesprev' => 'آچھو',
-'allpagesnext' => 'پروشٹیو',
 'allpagessubmit' => 'بوغے لا',
 
 # Special:Categories
@@ -925,7 +916,7 @@ HTML tags لوڑے.',",
 'isredirect' => 'خور ژاغا آلدو صفحہ',
 'istemplate' => 'ٹرانسکلوژن',
 'isimage' => 'ھوٹوان لنک',
-'whatlinkshere-prev' => '{{Plural:$1|سابقہ|سابقہ $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|سابقہ|سابقہ $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|پروشٹیو|پروشٹیو$1}}',
 'whatlinkshere-links' => '← لنکس',
 'whatlinkshere-hideredirs' => '$1 رجوع مکرر',
@@ -955,7 +946,6 @@ HTML tags لوڑے.',",
 'pagemovedsub' => 'انتقال کامیاب',
 'movepage-moved' => '\'\'\'"$1" ھیہ ووشکی منتقل کورونو ھوی "$2"\'\'\'',
 'articleexists' => 'ھیہ عنوانو سورا کیہ صفحہ پروشٹیاری موجودشیر یا تہ درخواست کاردو  نام مستعمل نیکی براۓ مہربانی خور نامو منتخب کورے۔',
-'movedto' => 'آلونو ھوی',
 'movelogpage' => 'نوشتۂ منتقلی',
 'movereason' => 'واجھہ',
 'revertmove' => 'رجوغ',
@@ -1070,11 +1060,6 @@ HTML tags لوڑے.',",
 
 'exif-dc-date' => 'تاریخ',
 
-# External editor support
-'edit-externally' => 'ھیہ مسلو ایڈیٹ کورے',
-'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)
-(مزید معلوماتو بچے ھیہ لنکہ بوغے [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] )',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'سف',
 'namespacesall' => 'تھمامو',
index f338c06..5676a99 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Erdemaslancan
  * @author Gorizon
+ * @author Marmase
  * @author Mirzali
  */
 
@@ -75,7 +76,6 @@ $messages = array(
 'tog-minordefault' => 'Vurnayisunê ho pêrune ‘vurnayiso qızkek’ nisan bıde',
 'tog-previewontop' => 'Verqayti pela nustene ser de bıasne',
 'tog-previewonfirst' => 'Vurnayiso verên de verqayti tım bıasne',
-'tog-nocache' => 'Pelunê cıfeteliyawoği mia ho viri',
 'tog-enotifwatchlistpages' => 'Zû pele ya ki dosyawa ke lista mına şêrkerdişi de vurnê mı rê e-poste bırusne',
 'tog-enotifusertalkpages' => 'Pela mına hurênayişi ke vurnê mı rê e-poste bırusne',
 'tog-enotifminoredits' => 'Vurnayisunê qızkekunê pelun u dosyu de ki mı rê e-poste bırusne',
@@ -193,9 +193,8 @@ $messages = array(
 'qbfind' => 'Bıvêne',
 'qbbrowse' => 'Çım ra viarne',
 'qbedit' => 'Bıvurne',
-'qbpageoptions' => 'Na pele',
+'qbpageoptions' => 'Na per',
 'qbmyoptions' => 'Pelê mı',
-'qbspecialpages' => 'Pelê xısusiy',
 'faq' => 'PZP (Persê ke zaf perşinê)',
 'faqpage' => 'Project:PZP',
 
@@ -281,7 +280,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).
-'aboutsite' => 'Heqdé {{SITENAME}}',
+'aboutsite' => 'Heqa {{SITENAME}} de',
 'aboutpage' => 'Project:Heqa',
 'copyright' => 'Zerrek bınê $1 dero.',
 'copyrightpage' => '{{ns:project}}:Telifheqiye',
@@ -398,9 +397,6 @@ Beno ke, tede jü ya ki jêdê isareti estê ke sernameu de nêgurinê.",
 'perfcachedts' => 'Ni daey nımıteyê, u tewr peyên $1 de biyê rocaniy. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Rocane-biyaena na pele nıka cadaiyê.
 Daey ita nıka newe nêbenê.',
-'wrong_wfQuery_params' => 'Parametreo ğelet serba wfPers()<br />
-Fonksiyon: $1<br />
-Pers: $2',
 'viewsource' => 'Çımey bıvêne',
 'actionthrottled' => 'Faeliyet xenekıt',
 'actionthrottledtext' => "Berqestiya tedbirê ''anti-spam''i ra vırastena ni faeliyeti rê sıma zafê rey zemano senık de  sindor viarna ra.
@@ -490,7 +486,7 @@ Kerem ke, oncia bıcerrebne.',
 'loginlanguagelabel' => 'Zon: $1',
 
 # Change password dialog
-'resetpass' => 'Parola bıvurne',
+'changepassword' => 'Parola bıvurne',
 'resetpass_header' => 'Parola hesabi bıvurne',
 'oldpassword' => 'Parola khane:',
 'newpassword' => 'Parola newiye:',
@@ -655,10 +651,6 @@ Sıma be idarekerênia ho ra şikinê hona [$1 nê ferqi bıvênê], eke wazenê
 'revisiondelete' => 'Çımraviarnaisu bestere/peyser bia',
 'revdelete-nooldid-title' => 'Çımraviarnaena waştiye nêvêrena',
 'revdelete-nooldid-text' => 'Sıma vırastena nê fonksiyoni rê ya jü çımraviarnaena waştiye diyar nêkerdo, çımraviarnaena diyarkerdiye çına, ya ki sıma wazenê ke çımraviarnaena nıkaêne bınımnê.',
-'revdelete-nologtype-title' => 'Qet qeydê cı nêdiya',
-'revdelete-nologtype-text' => 'Qeydê sımao diyar çino ke nê fealiyet kuyê.',
-'revdelete-nologid-title' => 'Cıkotene qebul nêbiye',
-'revdelete-nologid-text' => 'Sıma vırastena nê fonksiyoni rê ya jü cıkotena waştiye diyar nêkerda, ya ki çıkotena diyarkerdiye çina.',
 'revdelete-no-file' => 'Dosya diyarkerdiye çina.',
 'revdelete-show-file-confirm' => 'Sıma eminê ke wazenê çımraviarnaena esterıtiya na dosya "<nowiki>$1</nowiki>" $2 ra $3 de bıvênê?',
 'revdelete-show-file-submit' => 'Heya',
@@ -681,8 +673,6 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'revdelete-log' => 'Sebeb:',
 'revdelete-submit' => '{{PLURAL:$1|Çımraviarnaiso ke çiniyo|Çımraviarnaisê ke çiniyê}} we tetbiq ke',
 'revdel-restore' => 'asaişi bıvurne',
-'revdel-restore-deleted' => 'revizyonê esterıtey',
-'revdel-restore-visible' => 'revizyonê asaey',
 'pagehist' => 'Tarixê pele',
 'deletedhist' => 'Tarixo esterıte',
 'revdelete-otherreason' => 'Sebebo bin/ilaweki:',
@@ -708,10 +698,6 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 # Search results
 'searchresults' => 'Neticê cıfeteliyaene',
 'searchresults-title' => '"$1" rê neticê cıfeteliyaene',
-'searchresulttext' => 'Zerrê {{SITENAME}} de heqa cıfeteliyaene de serba melumat guretene, şikina qaytê [[{{MediaWiki:Helppage}}|{{int:help}}]] ke.',
-'searchsubtitle' => 'Tı serba \'\'\'[[:$1]]\'\'\' cıfeteliya. ([[Special:Prefixindex/$1|pelê ke pêro be "$1" ra dest niyê pıra]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pelê ke pêro be "$1"\' ra girê ho esto]])',
-'searchsubtitleinvalid' => "Serbacıfeteliyae: '''$1'''",
-'notitlematches' => 'Qet zu serrêze de nêvêniya',
 'notextmatches' => 'Qet zu pele de nêvêniya',
 'prevn' => '{{PLURAL:$1|$1}} verên',
 'nextn' => '{{PLURAL:$1|$1}} peyên',
@@ -743,14 +729,10 @@ Eke şertê ilawekerdey ke niyê ro, idarekerê bini {{SITENAME}} de nêşikinê
 'searchrelated' => 'alaqedar',
 'searchall' => 'pêro',
 'showingresultsheader' => "'''$4''' rê {{PLURAL:$5|'''$3''' netice ra '''$1'''i|'''$1 - $2''' miyan de '''$3''' netice}}",
-'nonefound' => "'''Not''': Teyna taê namê cau jê saybiyau cı fetelino.
-Verê cıfeteliyaene de be ilawekerdena verbendê '''all:'''i ra (ebe pelunê hurênaişi, şablonu uêb.) bıcerebnê ya ki namê cayo ke wajino jê verbendi bıgurênê.",
 'search-nonefound' => 'Neticeo ke ebe perşi zubini cêno çino.',
-'powersearch' => 'Cıcêraiso hira',
 'powersearch-legend' => 'Cıcêraiso hira',
 'powersearch-ns' => 'Caunê namun de cıcêre:',
 'powersearch-redir' => 'Girêun lista ke',
-'powersearch-field' => 'Serba cı qayt ke',
 'powersearch-togglelabel' => 'Weçine:',
 'powersearch-toggleall' => 'Pêro',
 'powersearch-togglenone' => 'Qet',
@@ -763,7 +745,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
 'preferences' => 'Tercihi',
 'mypreferences' => 'Tercihê mı',
 'prefs-edits' => 'Numra vurnaisun:',
-'changepassword' => 'Parola bıvurne',
 'prefs-skin' => 'Çerme',
 'skin-preview' => 'Verqayt',
 'datedefault' => 'Tercihi çinê',
@@ -777,12 +758,10 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
 'prefs-resetpass' => 'Parola bıvurne',
 'prefs-rendering' => 'Asais',
 'saveprefs' => 'Qeyd ke',
-'resetprefs' => 'Vurnaisunê qeydnêkerdun pak ke',
 'prefs-editing' => 'Vurnais',
 'rows' => 'Rêji:',
 'columns' => 'Ustıni:',
 'searchresultshead' => 'Cıcêre',
-'resultsperpage' => 'Pelgê be vênıtun:',
 'stub-threshold' => 'Tertibê şêmıga <a href="#" class="stub">stub link</a> (\'\'bytes\'\'):',
 'recentchangesdays' => 'Rozê ke vurnaisunê peyênun de asenê:',
 'recentchangesdays-max' => 'Maksimum $1 {{PLURAL:$1|roze|roji}}',
@@ -790,7 +769,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
 'savedprefs' => 'Tercihê sıma qeydi biy.',
 'timezonelegend' => 'Warê saete:',
 'localtime' => 'Waxto mehelın:',
-'timezoneoffset' => 'Ware¹:',
 'servertime' => "Waxtê ''server''i:",
 'guesstimezone' => "''Browser''i ra pırr ke",
 'timezoneregion-africa' => 'Afrika',
@@ -902,7 +880,6 @@ Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena
 'recentchanges-label-bot' => 'No vurnais terefê zu boti ra bi',
 'recentchanges-label-unpatrolled' => 'No vurnais hona çım ra ranêvêrdo',
 'recentchanges-legend-newpage' => '$1 - pela newiye',
-'rcnote' => "Cêr {{PLURAL:$1|'''1''' vurnaiso peyên|'''$1''' vurnaisê peyêni}} be {{PLURAL:$2|roza peyêne|'''$2''' rozunê peyênunê}} $5, $4 ra estê.",
 'rcnotefrom' => "Cêr de vurnayîşê esto ke '''$2''' ra raver  (heta '''$1''' mucnayiyo).",
 'rclistfrom' => '$1 ra hata nıka vurnaisunê newu bıasne',
 'rcshowhideminor' => '$1 vurnaisê qızkeki',
@@ -1204,7 +1181,6 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
 'undeletebtn' => 'Peyser bia',
 'undeletelink' => 'bıvêne/peyser bia',
 'undeleteviewlink' => 'bıvêne',
-'undeletereset' => 'Vaz be',
 'undeleteinvert' => 'Weçinıtey ters bıçarne',
 'undeletecomment' => 'Sebeb:',
 'undelete-header' => 'Peleyê ke veror de besterneyayê êna bıvinê: [[Special:Log/delete|qeydê esterneya]].',
@@ -1321,9 +1297,6 @@ Nê halu de, tı gunê pele ebe dest berê ya ki ser kerê eke wajiye.",
 'movepage-moved' => '\'\'\'"$1" berd be pela "$2"\'\'\'',
 'articleexists' => 'Pelê da ebe nê namey çina, ya ki nameo ke çiniyo we nêvêreno.
 Kerem ke, nameo de bin bıcerrebne.',
-'talkexists' => "'''Pele be ho ebe mıweffeq kırışiye, hema pela hurênaişi nêşikiye ke bıkırışiyo, çıke bınê na namey de hora jüye esta.
-Kerem ke, zerreki ebe ho dest bere.'''",
-'movedto' => 'berd be',
 'movetalk' => 'Pela hurênaişiê alaqedare bere',
 'movelogpage' => 'Qeydê berdene',
 'movereason' => 'Sebeb:',
@@ -1497,15 +1470,10 @@ Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê ne
 
 'exif-meteringmode-255' => 'Bin',
 
-# External editor support
-'edit-externally' => 'Na dosya be mırecaetê de teberi bıvurne',
-'edit-externally-help' => '(Serba daêna melumati qaytê pelga [https://www.mediawiki.org/wiki/Manual:External_editors ayarê gurenaena teberi] be)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'pêro',
 'namespacesall' => 'pêro',
 'monthsall' => 'pêro',
-'limitall' => 'pêro',
 
 # action=purge
 'confirm_purge_button' => 'Temam',
index ce4434b..815b471 100644 (file)
@@ -311,7 +311,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'بارلىق_بەتتەر' ),
        'Ancientpages'              => array( 'ەسكى_بەتتەر' ),
        'Block'                     => array( 'جايدى_بۇعاتتاۋ', 'IP_بۇعاتتاۋ' ),
-       'Blockme'                   => array( 'وزدىكتىك_بۇعاتتاۋ', 'وزدىك_بۇعاتتاۋ', 'مەنى_بۇعاتتاۋ' ),
        'Booksources'               => array( 'كىتاپ_قاينارلارى' ),
        'BrokenRedirects'           => array( 'جارامسىز_ايداعىشتار', 'جارامسىز_ايداتۋلار' ),
        'Categories'                => array( 'ساناتتار' ),
@@ -320,7 +319,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'ۇلەسى' ),
        'CreateAccount'             => array( 'جاڭا_تىركەلگى', 'تىركەلگى_جاراتۋ' ),
        'Deadendpages'              => array( 'تۇيىق_بەتتەر' ),
-       'Disambiguations'           => array( 'ايرىقتى_بەتتەر' ),
        'DoubleRedirects'           => array( 'شىنجىرلى_ايداعىشتار', 'شىنجىرلى_ايداتۋلار' ),
        'Emailuser'                 => array( 'حات_جىبەرۋ' ),
        'Export'                    => array( 'سىرتقا_بەرۋ' ),
@@ -413,7 +411,6 @@ $messages = array(
 'tog-minordefault' => 'ادەپكىدەن بارلىق وڭدەمەلەردى شاعىن دەپ بەلگىلە',
 'tog-previewontop' => 'قاراپ شىعۋ اۋماعى كىرىستىرۋ ورنى الدىندا',
 'tog-previewonfirst' => 'ٴبىرىنشى وڭدەگەندە قاراپ شىعۋ',
-'tog-nocache' => 'بەت بۇركەمەلەۋىن ٴوشىر',
 'tog-enotifwatchlistpages' => 'باقىلانعان بەت وزگەرگەندە ماعان حات جىبەر',
 'tog-enotifusertalkpages' => 'تالقىلاۋىم وزگەرگەندە ماعان حات جىبەر',
 'tog-enotifminoredits' => 'شاعىن وڭدەمە تۋرالى دا ماعان حات جىبەر',
@@ -518,7 +515,6 @@ $messages = array(
 'qbedit' => 'وڭدەۋ',
 'qbpageoptions' => 'بۇل بەت',
 'qbmyoptions' => 'بەتتەرىم',
-'qbspecialpages' => 'ارنايى بەتتەر',
 'faq' => 'ٴجىيى قويىلعان ساۋالدار',
 'faqpage' => 'Project:ٴجىيى قويىلعان ساۋالدار',
 
@@ -683,9 +679,6 @@ $messages = array(
 'perfcached' => 'كەلەسى دەرەك بۇركەمەلەنگەن, سوندىقتان تولىقتاي جاڭالانماعان بولۋى مۇمكىن. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 '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 />
-جەتە: $1<br />
-سۇرانىم: $2',
 'viewsource' => 'قاينار كوزىن قاراۋ',
 'actionthrottled' => 'ارەكەت باسەڭدەتىلدى',
 'actionthrottledtext' => 'سپامعا قارسى كۇرەس ەسەبىندە, وسى ارەكەتتى قىسقا ۋاقىتتا تىم كوپ رەت ورىنداۋىڭىز شەكتەلىندى, جانە بۇل شەكتەۋ شاماسىنان اسىپ كەتكەنسىز.
@@ -786,7 +779,7 @@ $2',
 'loginlanguagelabel' => 'ٴتىل: $1',
 
 # Change password dialog
-'resetpass' => 'تىركەلگىنىڭ قۇپىييا ٴسوزىن وزگەرتۋ',
+'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
 'resetpass_announce' => 'حاتپەن جىبەرىلگەن ۋاقىتشا كودىمەن كىرگەنسىز.
 كىرۋىڭىزدى ٴبىتىرۋ ٴۇشىن, جاڭا قۇپىييا ٴسوزىڭىزدى مىندا ەنگىزۋىڭىز ٴجون:',
 'resetpass_header' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
@@ -1085,12 +1078,8 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 
 # Search results
 'searchresults' => 'ىزدەۋ ناتىيجەلەرى',
-'searchresulttext' => '{{SITENAME}} جوباسىندا ىزدەۋ تۋرالى كوبىرەك اقپارات ٴۇشىن, [[{{MediaWiki:Helppage}}|{{int:help}} بەتىن]] قاراڭىز.',
-'searchsubtitle' => "ىزدەگەنىڭىز: '''[[:$1]]'''",
-'searchsubtitleinvalid' => "ىزدەگەنىڭىز: '''$1'''",
 'toomanymatches' => 'تىم كوپ سايكەس قايتارىلدى, وزگە سۇرانىمدى بايقاپ كورىڭىز',
 'titlematches' => 'بەت تاقىرىبىن اتى سايكەس كەلەدى',
-'notitlematches' => 'ەش بەت تاقىرىبىن اتى سايكەس ەمەس',
 'textmatches' => 'بەت ٴماتىنى سايكەس كەلەدى',
 'notextmatches' => 'ەش بەت ٴماتىنى سايكەس ەمەس',
 'prevn' => 'الدىڭعى {{PLURAL:$1|$1}}',
@@ -1105,17 +1094,13 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'search-interwiki-default' => '$1 ناتىيجە:',
 'search-interwiki-more' => '(كوبىرەك)',
 'search-relatedarticle' => 'قاتىستى',
-'mwsuggest-disable' => 'AJAX ۇسىنىمدارىن ٴوشىر',
 'searchrelated' => 'قاتىستى',
 'searchall' => 'بارلىق',
 'showingresults' => "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ بارىنشا '''$1''' ناتىيجە كورسەتىلەدى.",
 'showingresultsnum' => "تومەندە ٴنومىر '''$2''' ورنىنان باستاپ '''$3''' ناتىيجە كورسەتىلەدى.",
-'nonefound' => "'''اڭعارتپا''': ادەپكىدەن تەك كەيبىر ەسىم ايالاردان ىزدەلىنەدى. بارلىق ماعلۇمات ٴتۇرىن (سونىڭ ىشىندە تالقىلاۋ بەتتەردى, ۇلگىلەردى ت.ب.) ىزدەۋ ٴۇشىن سۇرانىمىڭىزدى ''بارلىق:'' دەپ باستاڭىز, نەمەسە قالاعان ەسىم اياسىن باستاۋىش ەسەبىندە قولدانىڭىز.",
-'powersearch' => 'كەڭەيتىلگەن ىزدەۋ',
 'powersearch-legend' => 'كەڭەيتىلگەن ىزدەۋ',
 'powersearch-ns' => 'مىنا ەسىم ايالاردا ىزدەۋ:',
 'powersearch-redir' => 'ايداتۋلاردى تىزىمدەۋ',
-'powersearch-field' => 'مىنانى ىزدەمەك:',
 'search-external' => 'شەتتىك ىزدەگىش',
 'searchdisabled' => '{{SITENAME}} ىزدەۋ قىزمەتى وشىرىلگەن.
 ازىرشە Google ارقىلى ىزدەۋگە بولادى.
@@ -1125,7 +1110,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'preferences' => 'باپتالىمدار',
 'mypreferences' => 'باپتالىمدارىم',
 'prefs-edits' => 'وڭدەمە سانى:',
-'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
 'prefs-skin' => 'مانەرلەر',
 'skin-preview' => 'قاراپ شىعۋ',
 'datedefault' => 'ەش قالاۋسىز',
@@ -1137,19 +1121,16 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'prefs-watchlist-edits' => 'كەڭەيتىلگەن باقىلاۋلارداعى وزگەرىستەردىڭ بارىنشا كورسەتپەك سانى:',
 'prefs-misc' => 'ارقىيلى',
 'saveprefs' => 'ساقتا',
-'resetprefs' => 'ساقتالماعان وزگەرىستەردى تازارت',
 'prefs-editing' => 'وڭدەۋ',
 'rows' => 'جولدار:',
 'columns' => 'باعاندار:',
 'searchresultshead' => 'ىزدەۋ',
-'resultsperpage' => 'بەت سايىن ناتىيجە سانى:',
 'stub-threshold' => '<a href="#" class="stub">بىتەمە سىلتەمەسىن</a> پىشىمدەۋ تابالدىرىعى (بايت):',
 'recentchangesdays' => 'جۇىقتاعى وزگەرىستەرىندە كورسەتپەك كۇن سانى:',
 'recentchangescount' => 'جۋىقتاعى وزگەرىستەردىندە, تارىيح جانە جۋرنال بەتتەرىندە كورسەتپەك وڭدەمە سانى:',
 'savedprefs' => 'باپتالىمدارىڭىز ساقتالدى.',
 'timezonelegend' => 'ۋاقىت بەلدەۋى',
 'localtime' => 'جەرگىلىكتى ۋاقىت',
-'timezoneoffset' => 'ساعات ىعىسۋى¹',
 'servertime' => 'سەرۆەر ۋاقىتى',
 'guesstimezone' => 'شولعىشتان الىپ تولتىرۋ',
 'allowemail' => 'باسقادان حات قابىلداۋىن قوس',
@@ -1287,7 +1268,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
 'recentchanges' => 'جۋىقتاعى وزگەرىستەر',
 'recentchanges-summary' => 'بۇل بەتتە وسى ۋىيكىيدەگى بولعان جۋىقتاعى وزگەرىستەر بايقالادى.',
 'recentchanges-feed-description' => 'بۇل ارنامەنەن ۋىيكىيدەگى ەڭ سوڭعى وزگەرىستەر قاداعالانادى.',
-'rcnote' => "$3 كەزىنە دەيىن — تومەندە سوڭعى {{PLURAL:$2|كۇندەگى|'''$2''' كۇندەگى}}, سوڭعى '''$1''' وزگەرىس كورسەتىلەدى.",
 'rcnotefrom' => "'''$2''' كەزىنەن بەرى — تومەندە '''$1''' جەتكەنشە دەيىن وزگەرىستەر كورسەتىلەدى.",
 'rclistfrom' => '$1 كەزىنەن بەرى — جاڭا وزگەرىستەردى كورسەت.',
 'rcshowhideminor' => 'شاعىن وڭدەمەلەردى $1',
@@ -1567,10 +1547,8 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانى
 'deadendpagestext' => 'كەلەسى بەتتەر {{SITENAME}} جوباسىنداعى باسقا بەتتەرگە سىلتەمەيدى.',
 'protectedpages' => 'قورعالعان بەتتەر',
 'protectedpages-indef' => 'تەك بەلگىسىز قورعاۋلار',
-'protectedpagestext' => 'كەلەسى بەتتەر وڭدەۋدەن نەمەسە جىلجىتۋدان قورعالعان',
 'protectedpagesempty' => 'اعىمدا مىناداي باپتالىمدارىمەن ەشبىر بەت قورعالماعان',
 'protectedtitles' => 'قورعالعان تاقىرىپ اتتارى',
-'protectedtitlestext' => 'كەلەسى تاقىرىپ اتتارىن باستاۋعا رۇقسات بەرىلمەگەن',
 'protectedtitlesempty' => 'بۇل باپتالىمدارمەن اعىمدا ەش تاقىرىپ اتتارى قورعالماعان.',
 'listusers' => 'قاتىسۋشى ٴتىزىمى',
 'newpages' => 'ەڭ جاڭا بەتتەر',
@@ -1612,9 +1590,6 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانى
 'allpagesfrom' => 'مىنا بەتتەن باستاپ كورسەتۋ:',
 'allarticles' => 'بارلىق بەت ٴتىزىمى',
 'allinnamespace' => 'بارلىق بەت ($1 ەسىم اياسى)',
-'allnotinnamespace' => 'بارلىق بەت ($1 ەسىم اياسىنان تىس)',
-'allpagesprev' => 'الدىڭعىعا',
-'allpagesnext' => 'كەلەسىگە',
 'allpagessubmit' => 'ٴوتۋ',
 'allpagesprefix' => 'مىنادان باستالعان بەتتەردى كورسەتۋ:',
 'allpagesbadtitle' => 'كەلتىرىلگەن بەت تاقىرىبىن اتى جارامسىز بولعان, نەمەسە ٴتىل-ارالىق نە ۋىيكىي-ارالىق باستاۋى بار بولدى.
@@ -1868,7 +1843,6 @@ $2 سوڭعى نۇسقاسىنا وزگەرتتى.',
 'undelete-nodiff' => 'ەش الدىڭعى تۇزەتۋ تابىلمادى.',
 'undeletebtn' => 'قالپىنا كەلتىر!',
 'undeletelink' => 'قالپىنا كەلتىرۋ',
-'undeletereset' => 'قايتا قوي',
 'undeletecomment' => 'ماندەمەسى:',
 'undeletedrevisions' => '$1 تۇزەتۋ قالپىنا كەلتىرىلدى',
 'undeletedrevisions-files' => '$1 تۇزەتۋ جانە $2 فايل قالپىنا كەلتىرىلدى',
@@ -1945,7 +1919,6 @@ $1',
 'ipadressorusername' => 'IP مەكەنجايى نە قاتىسۋشى اتى:',
 'ipbexpiry' => 'مەرزىمى بىتپەك:',
 'ipbreason' => 'سەبەبى:',
-'ipbreasonotherlist' => 'باسقا سەبەپ',
 'ipbreason-dropdown' => '* بۇعاتتاۋدىڭ جالپى سەبەبتەرى
 ** جالعان مالىمەت ەنگىزۋ
 ** بەتتەردەگى ماعلۇماتتى الاستاۋ
@@ -1960,8 +1933,6 @@ $1',
 'ipbsubmit' => 'قاتىسۋشىنى بۇعاتتا',
 'ipbother' => 'باسقا مەرزىمى:',
 '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',
-'ipbotheroption' => 'باسقا',
-'ipbotherreason' => 'باسقا/قوسىمشا سەبەپ:',
 'ipbhidename' => 'قاتىسۋشى اتىن بۇعاتتاۋ جۋرنالىننان, بەلسەندى بۇعاتتاۋ تىزىمىنەن, قاتىسۋشى تىزىمىنەن جاسىرۋ',
 'ipbwatchuser' => 'بۇل قاتىسۋشىنىڭ جەكە جانە تالقىلاۋ بەتتەرىن باقىلاۋ',
 'badipaddress' => 'جارامسىز IP مەكەنجايى',
@@ -2059,7 +2030,6 @@ $1 بۇعاتتاۋى ٴۇشىن كەلتىرىلگەن سەبەبى: «$2».',
 
 وسى ورايدا, قالاۋىڭىز بولسا, بەتتى قولدان جىلجىتا نە قوسا الاسىز.",
 'movearticle' => 'جىلجىتپاق بەت:',
-'movenologin' => 'جۇيەگە كىرمەگەنسىز',
 'movenologintext' => 'بەتتى جىلجىتۋ ٴۇشىن تىركەلگەن بولۋىڭىز جانە [[{{#special:UserLogin}}|كىرۋىڭىز]] ٴجون.',
 'movenotallowed' => '{{SITENAME}} جوباسىندا بەتتەردى جىلجىتۋ رۋقساتىڭىز جوق.',
 'newtitle' => 'جاڭا تاقىرىپ اتىنا:',
@@ -2069,9 +2039,6 @@ $1 بۇعاتتاۋى ٴۇشىن كەلتىرىلگەن سەبەبى: «$2».',
 'articleexists' => 'وسىلاي اتالعان بەت الداقاشان بار, نە تاڭداعان اتاۋىڭىز جارامدى ەمەس.
 وزگە اتاۋدى تاڭداڭىز',
 'cantmove-titleprotected' => 'بەتتى وسى ورىنعا جىلجىتا المايسىز, سەبەبى جاڭا تاقىرىپ اتى باستاۋدان قورعالعان',
-'talkexists' => "'''بەتتىڭ ٴوزى ٴساتتى جىلجىتىلدى, بىراق تالقىلاۋ بەتى بىرگە جىلجىتىلمادى, ونىڭ سەبەبى جاڭا تاقىرىپ اتىندا بىرەۋى الداقاشان بار.
-بۇنى قولمەن قوسىڭىز.'''",
-'movedto' => 'مىناعان جىلجىتىلدى:',
 'movetalk' => 'قاۋىمداستى تالقىلاۋ بەتىن جىلجىتۋ',
 'move-subpages' => 'بارلىق بەتشەلەرىن جىلجىتۋ, ەگەر قولدانبالى بولسا',
 'move-talk-subpages' => 'تالقىلاۋ بەتىنىڭ بارلىق بەتشەلەرىن جىلجىتۋ, ەگەر قولدانبالى بولسا',
@@ -2600,10 +2567,6 @@ $1',
 'exif-gpsdirection-t' => 'شىن باعىت',
 'exif-gpsdirection-m' => 'ماگنىيتتى باعىت',
 
-# External editor support
-'edit-externally' => 'بۇل فايلدى شەتتىك قوندىرما ارقىلى وڭدەۋ',
-'edit-externally-help' => 'كوبىرەك اقپارات ٴۇشىن [https://www.mediawiki.org/wiki/Manual:External_editors ورناتۋ نۇسقامالارىن] قاراڭىز.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'بارلىق',
 'namespacesall' => 'بارلىعى',
@@ -2632,7 +2595,6 @@ $1',
 'confirmemail_success' => 'ە-پوشتا مەكەنجايىڭىز قۇپتالدى.
 ەندى ۋىيكىيگە كىرىپ جۇمىسقا كىرىسۋگە بولادى',
 'confirmemail_loggedin' => 'ە-پوشتا مەكەنجايىڭىز ەندى قۇپتالدى.',
-'confirmemail_error' => 'قۇپتاۋڭىزدى ساقتاعاندا بەلگىسىز قاتە بولدى.',
 'confirmemail_subject' => '{{SITENAME}} تورابىنان ە-پوشتا مەكەنجايىڭىزدى قۇپتاۋ حاتى',
 'confirmemail_body' => 'كەيبىرەۋ, $1 دەگەن IP مەكەنجايىنان, ٴوزىڭىز بولۋى مۇمكىن,
 {{SITENAME}} جوباسىندا بۇل ە-پوشتا مەكەنجايىن قولدانىپ «$2» دەگەن تىركەلگى جاساپتى.
index 5023d89..1a5f4d5 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author AlefZet
  * @author Alibek Kisybay
+ * @author Amangeldy
  * @author Arystanbek
  * @author Bakytgul Salykhova
  * @author Daniyar
@@ -281,7 +282,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Барлық_беттер' ),
        'Ancientpages'              => array( 'Ескі_беттер' ),
        'Block'                     => array( 'Жайды_бұғаттау', 'IP_бұғаттау' ),
-       'Blockme'                   => array( 'Өздіктік_бұғаттау', 'Өздік_бұғаттау', 'Мені_бұғаттау' ),
        'Booksources'               => array( 'Кітап_қайнарлары' ),
        'BrokenRedirects'           => array( 'Жарамсыз_айдағыштар', 'Жарамсыз_айдатулар' ),
        'Categories'                => array( 'Санаттар' ),
@@ -290,7 +290,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Үлесі' ),
        'CreateAccount'             => array( 'Жаңа_тіркелгі', 'Тіркелгі_Жарату' ),
        'Deadendpages'              => array( 'Тұйық_беттер' ),
-       'Disambiguations'           => array( 'Айрықты_беттер' ),
        'DoubleRedirects'           => array( 'Шынжырлы_айдағыштар', 'Шынжырлы_айдатулар' ),
        'Emailuser'                 => array( 'Хат_жіберу' ),
        'Export'                    => array( 'Сыртқа_беру' ),
@@ -370,10 +369,10 @@ $messages = array(
 'tog-extendwatchlist' => 'Бақылау тізімді ұлғайту (барлық жарамды өзгерістерді көрсету)',
 'tog-usenewrc' => 'Кеңейтілген жуықтағы өзгерістер (JavaScript)',
 'tog-numberheadings' => 'Мазмұн тақырыптарын автоматты нөмірлеу',
-'tog-showtoolbar' => 'Өңдеу құралдары орналасқан аспаптар жақтауын көрсету (JavaScript-ті қажет етеді)',
-'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу (JavaScript)',
+'tog-showtoolbar' => 'Өңдеу құралдарын көрсету',
+'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу',
 'tog-editsection' => 'Бөлімдерді [өңдеу] сілтемесімен өңдеуін қос',
-'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен өңдеуін қос (JavaScript)',
+'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен бөлім өңдеуін қосу',
 'tog-showtoc' => 'Мазмұнын көрсету (3-тен астам бөлімі болған жағдайда ғана)',
 'tog-rememberpassword' => 'Тіркелгімді осы браузерде ұмытпа (ең көбі $1 {{PLURAL:$1|күн|күн}})',
 'tog-watchcreations' => 'Мен бастаған беттерді бақылау тізіміне қос',
@@ -383,7 +382,6 @@ $messages = array(
 'tog-minordefault' => 'Әдепкіден барлық өңдемелерді шағын деп белгіле',
 'tog-previewontop' => 'Қарап шығу аумағын өңдеу терезесінің жоғарғы жағында көрсету',
 'tog-previewonfirst' => 'Бірінші өңдегенде қарап шығу',
-'tog-nocache' => 'Бет бүркемелеуін өшір',
 'tog-enotifwatchlistpages' => 'Бақылауыңыздағы бет өзгергенде е-поштаға хабарлама жіберу',
 'tog-enotifusertalkpages' => 'Талқылау бетім өзгергенде маған хат жібер',
 'tog-enotifminoredits' => 'Шағын өңдеме туралы да маған хат жібер',
@@ -391,7 +389,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Бақылап тұрған қатысушылардың санын көрсет',
 'tog-oldsig' => 'Ағымдағы қолтаңбаңыз:',
 'tog-fancysig' => 'Қолтаңбаны уикимәтін ретінде қарастыру (автоматты сілтеме қойылмайды)',
-'tog-uselivepreview' => 'Тура қарап шығуды қолдану (JavaScript) (Сынақтама)',
+'tog-uselivepreview' => 'Тура қарап шығуды қолдану (сынақтық)',
 'tog-forceeditsummary' => 'Өңдеменің қысқаша мазмұндамасы бос қалғанда маған ескерт',
 'tog-watchlisthideown' => 'Өңдемелерімді бақылау тізімінен жасыр',
 'tog-watchlisthidebots' => 'Бот өңдемелерін бақылау тізімінен жасыр',
@@ -518,7 +516,6 @@ $messages = array(
 'qbedit' => 'Өңдеу',
 'qbpageoptions' => 'Бұл бет',
 'qbmyoptions' => 'Беттерім',
-'qbspecialpages' => 'Арнайы беттер',
 'faq' => 'Жиі қойылатын сұрақтар',
 'faqpage' => 'Project:Жиі қойылатын сұрақтар',
 
@@ -691,6 +688,7 @@ $1',
 'error' => 'Қате',
 'databaseerror' => 'Дерекқор қатесі',
 'databaseerror-query' => 'Сұрау:$1',
+'databaseerror-function' => 'Әрекет: $1',
 'databaseerror-error' => 'Қате:$1',
 'laggedslavemode' => "'''Ескерту:''' Бетте жуықтағы жаңартулар болмауы мүмкін.",
 'readonly' => 'Дерекқоры құлыпталған',
@@ -725,15 +723,13 @@ $1',
 'cannotdelete-title' => '«$1» бетін жою мүмкін емес',
 'delete-hook-aborted' => 'Түзету ілмек арқылы тоқтатылды.
 Қосымша түсіндірмелер көрсетілмеген.',
+'no-null-revision' => '"$1" беті үшін жаңа бос нұсқасын бастау мүмкін болмады.',
 'badtitle' => 'Жарамсыз тақырып аты',
 'badtitletext' => 'Сұралған бет тақырыбының аты жарамсыз, бос, тіларалық сілтемесі не уики-аралық тақырып аты бұрыс енгізілген.
 Мында тақырып атында қолдалмайтын бірқатар таңбалар болуы мүмкін.',
 'perfcached' => 'Келесі дерек бүркемеленген, сондықтан толықтай жаңаланбаған болуы мүмкін. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Келесі дерек бүркемеленген, соңғы жаңаланған кезі: $1. Кэште {{PLURAL:$4|жазбалардан}} артық сақталмайды..',
 'querypage-no-updates' => 'Бұл беттің жаңартылуы ағымда өшірілген. Деректері қазір өзгертілмейді.',
-'wrong_wfQuery_params' => 'wfQuery() функциясы үшін бұрыс бапталымдары бар<br />
-Жете: $1<br />
-Сұраным: $2',
 'viewsource' => 'Қайнарын қарау',
 'viewsource-title' => '$1 бетінің бастапқы мәтінін қарау',
 'actionthrottled' => 'Әрекет бәсеңдетілді',
@@ -815,6 +811,8 @@ $2',
 'userlogin-resetpassword-link' => 'Құпия сөздіңізді ұмыттыңыз ба?',
 'helplogin-url' => 'Help:Тіркелу',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Тіркелуге көмек]]',
+'userlogin-loggedin' => '{{GENDER:$1|$1}} ретінде әлдеқашан кіргенсіз.
+Төмендегі пішінді басқа қатысушы кіруі ретінде қолданыңыз.',
 'userlogin-createanother' => 'Басқа тіркелгі жасау',
 'createacct-join' => 'Төменге өзіңіз туралы ақпарат енгізіңіз.',
 'createacct-another-join' => 'Төменге жаңа тіркелгі туралы ақпарат енгізіңіз.',
@@ -910,7 +908,7 @@ $2',
 'user-mail-no-addy' => 'Е-пошта есімінсіз хабарлама жіберуге талпынды.',
 
 # Change password dialog
-'resetpass' => 'Тіркелгінің құпия сөзін өзгерту',
+'changepassword' => 'Құпия сөзді өзгерту',
 'resetpass_announce' => 'Хатпен жіберілген уақытша кодымен кіргенсіз.
 Кіруіңізді бітіру үшін, жаңа құпия сөзіңізді мында енгізуіңіз жөн:',
 'resetpass_header' => 'Құпия сөзді өзгерту',
@@ -1105,7 +1103,7 @@ IP-мекенжайыңыз бұл беттің түзету тарихында
 Егер жазуыңыздың еркін өңделуін қаламасаңыз, мында жарияламауыңыз жөн.<br />
 Тағы да, бұл мағлұмат өзіңіз жазғаныңызға, не қоғам қазынасынан немесе сондай ашық қорлардан көшірілгеніне бізге уәде бересіз (көбірек ақпарат үшін $1 қужатын қараңыз).
 '''АВТОРЛЫҚ ҚҰҚЫҚПЕН ҚОРҒАУҒАН МАҒЛҰМАТТЫ РҰҚСАТСЫЗ ЖАРИЯЛАМАҢЫЗ!'''",
-'longpageerror' => "'''ҚАТЕЛІК: Сақтамақ мәтініңіздін мөлшері — {{PLURAL:$1|килобайт|$1 килобайт}}, ең көбі {{PLURAL:$2|килобайт|$2 килобайт}} KB рұқсат етілген мөлшерінен асқан.
+'longpageerror' => "'''ҚАТЕЛІК: Сақтамақ мәтініңіздін мөлшері {{PLURAL:$1|килобайт|$1 килобайт}}, ең көбі {{PLURAL:$2|килобайт|$2 килобайт}} рұқсат етілген мөлшерінен асқан.
 Бұл сақталмайды.'''",
 'readonlywarning' => "'''ЕСКЕТУ: Дерекқор баптау үшін құлыпталған, сондықтан дәл қазір өңдемеңізді сақтай алмайсыз.
 Кейін қолдану үшін мәтінді қойып алып және қойып, мәтін файлына сақтауңызға болады.''' 
@@ -1122,7 +1120,7 @@ IP-мекенжайыңыз бұл беттің түзету тарихында
 'templatesusedsection' => 'Бұл бөлімде қолданылған {{PLURAL:$1|үлгі|үлгілер}}:',
 'template-protected' => '(қорғалған)',
 'template-semiprotected' => '(жартылай қорғалған)',
-'hiddencategories' => 'Бұл бет $1 {{PLURAL:$1|1 жасырын санаттың|$1 жасырын санаттардың}}: мүшесі:',
+'hiddencategories' => 'Бұл бет {{PLURAL:$1|1 жасырын санаттың|$1 жасырын санаттың}} мүшесі:',
 'nocreatetext' => '{{SITENAME}} жобасында жаңа бет бастауы шектелген.
 Кері қайтып бар бетті өңдеуіңізге болады, немесе [[Special:UserLogin|кіруіңізге не тіркелуіңізге]] болады.',
 'nocreate-loggedin' => 'Жаңа бет бастауға рұқсатыңыз жоқ.',
@@ -1196,10 +1194,9 @@ $3 келтірілген себебі: ''$2''",
 'last' => 'соң.',
 'page_first' => 'алғашқысына',
 'page_last' => 'соңғысына',
-'histlegend' => "</span><br /><span style=\"white-space:nowrap;\">Сыртқы құралдар: [http://vs.aka-online.de/cgi-bin/wppagehiststat.pl?lang=kk.wikipedia&page={{FULLPAGENAMEE}} Өңдеу статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://wikipedia.ramselehof.de/wikiblame.php?lang=kk&article={{FULLPAGENAMEE}} Өзгеріс тарихын іздеу] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~daniel/WikiSense/Contributors.php?wikilang=kk&wikifam=.wikipedia.org&grouped=on&page={{FULLPAGENAMEE}} Үлестер статистикасы] '''·'''</span> <span style=\"white-space:nowrap;\">[http://toolserver.org/~snottywong/usersearch.html?page={{FULLPAGENAMEE}} Қатысушы өңдемелері] '''·'''</span> <span style=\"white-space:nowrap;\">[//toolserver.org/~mzmcbride/cgi-bin/watcher.py?db=kkwiki_p&titles={{FULLPAGENAMEE}} Көрушілер саны] '''·'''</span> <span style=\"white-space:nowrap;\">[http://stats.grok.se/kk/latest/{{FULLPAGENAMEE}} Бетің қаралу статистикасы] '''·'''</span> Тағы қараңыз: <span style=\"white-space:nowrap;\">[{{fullurl:{{FULLPAGENAMEE}}|action=info}} бет туралы мәліметтер]</span>
-----
-Айырмасын бөлектеу: салыстырмақ нұсқаларының қосу көздерін белгілеп <Enter> пернесін басыңыз, немесе төмендегі батырманы нұқыңыз.<br />
-Шартты белгілер: <span style=\"white-space:nowrap;\">(ағым.) = ағымдық нұсқамен айырмасы, <span style=\"white-space:nowrap;\">(соң.) = алдыңғы нұсқамен айырмасы, </span> <span style=\"white-space:nowrap;\">&nbsp; '''ш''' = [[Уикипедия:Шағын өңдеме|шағын өңдеме]], → = [[Help:Бөлім#Бөлімін өңдеу|бөлімін өңдеу]]</span></div>",
+'histlegend' => 'Айырмасын бөлектеу: салыстырмақ нұсқаларының қосу көздерін белгілеп <Enter> пернесін басыңыз, немесе төмендегі батырманы нұқыңыз.<br />
+Шартты белгілер: (ағым.) = ағымдық нұсқамен айырмасы,
+(соң.) = алдыңғы нұсқамен айырмасы, ш = шағын өңдеме',
 'history-fieldset-title' => 'Тарихынан іздеу',
 'history-show-deleted' => 'Жойылғанын ғана көрсету',
 'histfirst' => 'Ең ескісіне',
@@ -1231,8 +1228,6 @@ $3 келтірілген себебі: ''$2''",
 'revdelete-nooldid-title' => 'Нысана түзету жарамсыз',
 'revdelete-nooldid-text' => 'Бұл жетені орындау үшін нысана түзетуін/түзетулерін келтірілмепсіз,
 келтірілген түзету жоқ, не ағымдық түзетуді жасыру үшін әрекеттеніп көрдіңіз.',
-'revdelete-nologtype-title' => 'Журнал түрі көрсетілмеген',
-'revdelete-nologid-title' => 'Журналдағы қате жазба',
 'revdelete-show-file-submit' => 'Иә',
 'revdelete-selected' => "'''[[:$1]] дегеннің бөлектенген {{PLURAL:$2|түзетуі|түзетулері}}:'''",
 'logdelete-selected' => "'''Бөлектенген {{PLURAL:$1|журнал оқиғасы|журнал оқиғалары}}:'''",
@@ -1258,8 +1253,6 @@ $3 келтірілген себебі: ''$2''",
 $1",
 'logdelete-success' => "'''Журнал көрінісі сәтті қойылды.'''",
 'revdel-restore' => 'Көрінісін өзгерту',
-'revdel-restore-deleted' => 'жойылған нұсқалары',
-'revdel-restore-visible' => 'көрінетін нұсқалары',
 'pagehist' => 'Бет тарихы',
 'deletedhist' => 'Жойылған тарихы',
 'revdelete-otherreason' => 'Басқа/қосымша себеп:',
@@ -1318,12 +1311,8 @@ $1",
 # 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}}',
@@ -1332,7 +1321,6 @@ $1",
 'nextn-title' => 'Келесі $1 {{PLURAL:$1|жазба|жазбалар}}',
 'shown-title' => 'Осы бетте {{PLURAL:$1|жазба}} көрсету.',
 'viewprevnext' => 'Көрсетілуі: ($1 {{int:pipe-separator}} $2) ($3) жазба',
-'searchmenu-legend' => 'Іздеу бапталымдары',
 'searchmenu-exists' => "'''Бұл жобада «[[:$1]]» деген бет бар.'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" осындай атпен бетті бастау'''",
 'searchprofile-articles' => 'Негізгі беттер',
@@ -1355,20 +1343,16 @@ $1",
 'search-interwiki-default' => '$1 нәтиже:',
 'search-interwiki-more' => '(көбірек)',
 'search-relatedarticle' => 'Қатысты',
-'mwsuggest-disable' => 'Іздеу ұсынымдарын өшір',
 'searcheverything-enable' => 'Белгіленген есім кеңістігінен іздеу',
 'searchrelated' => 'қатысты',
 'searchall' => 'барлық',
 'showingresults' => "Төменде нөмір '''$2''' орнынан бастап барынша '''$1''' нәтиже көрсетіледі.",
 'showingresultsnum' => "Төменде нөмір '''$2''' орнынан бастап '''$3''' нәтиже көрсетіледі.",
 'showingresultsheader' => "«'''$4'''» үшін {{PLURAL:$5|тек '''$1''' нәтиже табылды|табылған '''$3''' нәтиженің '''$1—$2''' аралығы көрсетілген}}",
-'nonefound' => "'''Аңғартпа''': Әдепкіден тек кейбір есім аялардан ізделінеді. Барлық мағлұмат түрін (соның ішінде талқылау беттерді, үлгілерді т.б.) іздеу үшін сұранымыңызды ''барлық:'' деп бастаңыз, немесе қалаған есім аясын бастауыш есебінде қолданыңыз.",
 'search-nonefound' => 'Сұрауға сәйкес нәтижелер табылмады.',
-'powersearch' => 'Кеңейтілген іздеу',
 'powersearch-legend' => 'Кеңейтілген іздеу',
-'powersearch-ns' => 'Ð\9cÑ\8bна ÐµÑ\81Ñ\96м Ð°Ñ\8fлаÑ\80Ð´а іздеу:',
+'powersearch-ns' => 'Ð\90Ñ\82аÑ\83 ÐºÐµÒ£Ñ\96Ñ\81Ñ\82Ñ\96кÑ\82еÑ\80Ñ\96 Ð±Ð¾Ð¹Ñ\8bнÑ\88а іздеу:',
 'powersearch-redir' => 'Айдатуларды тізімдеу',
-'powersearch-field' => 'Іздеу',
 'powersearch-togglelabel' => 'Белгілеу:',
 'powersearch-toggleall' => 'Барлығы',
 'powersearch-togglenone' => 'Ешқандай',
@@ -1381,7 +1365,6 @@ $1",
 'preferences' => 'Баптаулар',
 'mypreferences' => 'Баптаулар',
 'prefs-edits' => 'Өңдеме саны:',
-'changepassword' => 'Құпия сөзді өзгерту',
 'prefs-skin' => 'Мәнерлер',
 'skin-preview' => 'Қарап шығу',
 'datedefault' => 'Еш қалаусыз',
@@ -1404,25 +1387,22 @@ $1",
 'prefs-email' => 'Е-пошта баптаулары',
 'prefs-rendering' => 'Сырт көрініс',
 'saveprefs' => 'Сақтау',
-'resetprefs' => 'Сақталмаған өзгерістерді тазарту',
 'restoreprefs' => 'Барлығын бастапқы баптауларға қайтару',
 'prefs-editing' => 'Өңдеу',
 'rows' => 'Жолдар:',
 'columns' => 'Бағандар:',
 'searchresultshead' => 'Іздеу',
-'resultsperpage' => 'Бет сайын нәтиже саны:',
 'stub-threshold' => '<a href="#" class="stub">Бастама сілтемесін</a> пішімдеу табалдырығы (байт):',
 'stub-threshold-disabled' => 'Ажыратылған',
 'recentchangesdays' => 'Жуықтағы өзгерістерде көрсетілетін күн саны:',
 'recentchangesdays-max' => 'Ең көбі $1 {{PLURAL:$1|күн|күн}}',
 'recentchangescount' => 'Жуықтағы өзгерістердінде, тарих және журнал беттерінде көрсетпек өңдеме саны:',
-'prefs-help-recentchangescount' => 'Ð\96Ñ\83Ñ\8bÒ\9bÑ\82аÒ\93Ñ\8b Ó©Ð·Ð³ÐµÑ\80Ñ\96Ñ\81Ñ\82еÑ\80, Ð±ÐµÑ\82 Ñ\82аÑ\80иÑ\85Ñ\82аÑ\80Ñ\8bÒ\93 және журналдар қамтылады.',
+'prefs-help-recentchangescount' => 'Ð\91Ò±Ò\93ан Ð¶Ñ\83Ñ\8bÒ\9bÑ\82аÒ\93Ñ\8b Ó©Ð·Ð³ÐµÑ\80Ñ\96Ñ\81Ñ\82еÑ\80, Ð±ÐµÑ\82 Ñ\82аÑ\80иÑ\85Ñ\82аÑ\80Ñ\8b және журналдар қамтылады.',
 'savedprefs' => 'Бапталымдарыңыз сақталды.',
 'timezonelegend' => 'Уақыт белдеуі:',
 'localtime' => 'Жергілікті уақыт:',
 'timezoneuseserverdefault' => 'Уикидің баптауларын қолдану ($1)',
 'timezoneuseoffset' => 'Басқа (жылжытуды көрсетіңіз)',
-'timezoneoffset' => 'Сағат ығысуы¹:',
 'servertime' => 'Сервер уақыты:',
 'guesstimezone' => 'Шолғыштан алып толтыру',
 'timezoneregion-africa' => 'Африка',
@@ -1655,6 +1635,7 @@ $1",
 
 # Recent changes
 'nchanges' => '$1 өзгеріс',
+'enhancedrc-history' => 'Тарихы',
 'recentchanges' => 'Жуықтағы өзгерістер',
 'recentchanges-legend' => 'Жуықтағы өзгерістер баптаулары',
 'recentchanges-summary' => 'Бұл бетте осы уикидегі болған жуықтағы өзгерістер байқалады.',
@@ -1664,14 +1645,16 @@ $1",
 'recentchanges-label-minor' => 'Бұл шағын өңдеме',
 'recentchanges-label-bot' => 'Бұл өңдемені бот жасады.',
 'recentchanges-label-unpatrolled' => 'Бұл өңдеме әлі тексеруден өтпеді.',
-'recentchanges-legend-newpage' => '$1 - жаңа бет',
-'rcnote' => "Төменде $5, $4 кезіне дейінгі соңғы {{PLURAL:$2|күндегі|'''$2''' күндегі}}, {{PLURAL:$1| '''1''' өзгеріс|соңғы '''$1''' өзгеріс}}  көрсетіледі.",
+'recentchanges-label-plusminus' => 'Байт бойынша беттің өзгеріс мөлшері',
+'recentchanges-legend-heading' => "'''Шартты белгілер:'''",
+'recentchanges-legend-newpage' => 'қ. [[Special:NewPages|бөлек бетте]]',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Төменде '''$2''' кезінен бергі ('''$1''' жеткенше дейін) өзгерістер көрсетіледі.",
 'rclistfrom' => '$1 кезінен бергі жаңа өзгерістерді көрсет.',
 'rcshowhideminor' => 'Шағын өңдемелерді $1',
 'rcshowhidebots' => 'Боттарды $1',
 'rcshowhideliu' => 'Тіркелгендерді $1',
-'rcshowhideanons' => 'Ð\90нонимдÑ\96 Ò\9bаÑ\82Ñ\8bÑ\81Ñ\83Ñ\88Ñ\8bлаÑ\80дÑ\8b $1',
+'rcshowhideanons' => 'Ð\9aÑ\96Ñ\80мегендеÑ\80дÑ\96 $1',
 'rcshowhidepatr' => 'Зерттелген өңдемелерді $1',
 'rcshowhidemine' => 'Өңдемелерімді $1',
 'rclinks' => 'Соңғы $2 күнде болған, соңғы $1 өзгерісті көрсет<br />$3',
@@ -1860,6 +1843,9 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'listfiles_size' => 'Өлшемі',
 'listfiles_description' => 'Сипаттамасы',
 'listfiles_count' => 'Нұсқалары',
+'listfiles-latestversion' => 'Соңғы нұсқасы',
+'listfiles-latestversion-yes' => 'Иә',
+'listfiles-latestversion-no' => 'Жоқ',
 
 # File description page
 'file-anchor-link' => 'Файл беті',
@@ -2011,6 +1997,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'ninterwikis' => '$1 {{PLURAL:$1|интеруики|интеруикилер}}',
 'nlinks' => '$1 {{PLURAL:$1|сілтеме|сілтемелер}}',
 'nmembers' => '$1 {{PLURAL:$1|мүше|мүше}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|мүше|мүше}}',
 'nrevisions' => '$1 {{PLURAL:$1|түзету|түзету}}',
 'nviews' => '$1 {{PLURAL:$1|қаралу|қаралу}}',
 'nimagelinks' => '$1 {{PLURAL:$1|бетінде|беттерінде}} қолданылады',
@@ -2045,10 +2032,8 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'protectedpages' => 'Қорғалған беттер',
 'protectedpages-indef' => 'Тек белгісіз қорғаулар',
 'protectedpages-cascade' => 'Тек баулы қорғаулар',
-'protectedpagestext' => 'Келесі беттер өңдеуден немесе жылжытудан қорғалған',
 'protectedpagesempty' => 'Ағымда мынадай параметрлермен ешбір бет қорғалмаған.',
 'protectedtitles' => 'Қорғалған тақырып аттары',
-'protectedtitlestext' => 'Келесі тақырып аттарын бастауға рұқсат берілмеген',
 'protectedtitlesempty' => 'Бұл бапталымдармен ағымда еш тақырып аттары қорғалмаған.',
 'listusers' => 'Қатысушы тізімі',
 'listusers-editsonly' => 'Тек қатысушы өңдемелерін көрсету',
@@ -2096,9 +2081,6 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'allpagesto' => 'Мына беттерден аяқталғанды көрсету:',
 'allarticles' => 'Барлық беттер тізімі',
 'allinnamespace' => 'Барлық беттер ($1 есім кеңістігі)',
-'allnotinnamespace' => 'Барлық беттер ($1 есім кеңістігінен тыс)',
-'allpagesprev' => 'Алдыңғыға',
-'allpagesnext' => 'Келесіге',
 'allpagessubmit' => 'Өту',
 'allpagesprefix' => 'Мынадан басталған беттерді көрсету:',
 'allpagesbadtitle' => 'Келтірілген бет тақырыбын аты жарамсыз болған, немесе тіл-аралық не уики-аралық бастауы бар болды.
@@ -2220,7 +2202,7 @@ URL дұрыс екендігін және торап істеп тұрғаны
 'notvisiblerev' => 'Түзету жойылды',
 'watchlist-details' => 'Тізіміңізде $1 бет бар (талқылау беттері саналмайды).',
 'wlheader-enotif' => 'Ескерту хат жіберуі қосылған.',
-'wlheader-showupdated' => "Соңғы келіп-кетуіңізден бері өзгертілген беттерді '''жуан''' қаріпімен көрсет",
+'wlheader-showupdated' => "Соңғы келіп-кетуіңізден бері өзгертілген беттер '''жуан''' қаріпімен көрсетіледі.",
 'watchmethod-recent' => 'бақылаулы беттер үшін жуықтағы өзгерістерді тексеру',
 'watchmethod-list' => 'жуықтағы өзгерістер үшін бақылаулы беттерді тексеру',
 'watchlistcontains' => 'Бақылау тізіміңізде $1 бет бар.',
@@ -2311,6 +2293,7 @@ $NEWPAGE
 'delete-warning-toobig' => 'Бұл бетте үлкен өңдеу тарихы бар, $1 {{PLURAL:$1|түзетуден|түзетуден}} астам.
 Бұның жоюы {{SITENAME}} торабындағы дерекқор әрекеттерді үзіп тастауын мүмкін;
 бұны абайлап өткізіңіз.',
+'deleting-backlinks-warning' => "'''Ескерту:''' Сіз жоймақшы болған мақалаға басқа беттерден сілтенген.",
 
 # Rollback
 'rollback' => 'Өңдемелерді шегіндіру',
@@ -2431,7 +2414,6 @@ $2 соңғы нұсқасына қайта өзгертті.',
 'undeletebtn' => 'Қалпына келтір!',
 'undeletelink' => 'қарау/қалпына келтіру',
 'undeleteviewlink' => 'қарау',
-'undeletereset' => 'Қайта қой',
 'undeleteinvert' => 'Таңдалғанды алмастыру',
 'undeletecomment' => 'Себебі:',
 'undeletedrevisions' => '{{PLURAL:$1|1 түзету|$1 түзету}} қалпына келтірілді',
@@ -2469,9 +2451,9 @@ $1',
 'contributions' => '{{GENDER:$1|Қатысушы}} үлестері',
 'contributions-title' => '$1 есімді қатысушының үлесі',
 'mycontris' => 'Үлесім',
-'contribsub2' => '$1 ($2) үлесі',
+'contribsub2' => '{{GENDER:$3|$1}} ($2) үлесі',
 'nocontribs' => 'Осы іздеу шартына сәйкес өзгерістер табылған жоқ.',
-'uctop' => '(ағымдағы)',
+'uctop' => '(соңғы)',
 'month' => 'Мына айдан (және ертеректен):',
 'year' => 'Мына жылдан (және ертеректен):',
 
@@ -2517,15 +2499,13 @@ $1',
 'block' => 'Қатысушыны бұғаттау',
 'unblock' => 'Қатысушыны бұғаттамау',
 'blockip' => 'Қатысушыны бұғаттау',
-'blockip-title' => 'Қатысушыны бұғаттау',
 'blockip-legend' => 'Қатысушыны бұғаттау',
 'blockiptext' => 'Төмендегі пішін қатысушының жазу рұқсатын белгілі IP мекенжайымен не атымен бұғаттау үшін қолданылады.
-Бұны тек бұзақылықты қақпайлау үшін және де [[{{{{ns:mediawiki}}:Policy-url}}|ережелер]] бойынша атқаруыңыз жөн.
+Бұны тек бұзақылықты қақпайлау үшін және де [[{{Mediawiki:Policy-url}}|ережелер]] бойынша атқаруыңыз жөн.
 Төменде тиісті себебін толтырып көрсетіңіз (мысалы, дәйекке бұзақылықпен өзгерткен беттерді келтіріп).',
 'ipadressorusername' => 'IP-мекенжайы немесе қатысушы аты:',
 'ipbexpiry' => 'Мерзімі бітпек:',
 'ipbreason' => 'Себебі:',
-'ipbreasonotherlist' => 'Басқа себеп',
 'ipbreason-dropdown' => '* Бұғаттаудың жалпы себебтері
 ** Жалған мәлімет енгізу
 ** Беттердегі мағлұматты аластау
@@ -2541,8 +2521,6 @@ $1',
 'ipbsubmit' => 'Бұл қатысушыны бұғаттау',
 'ipbother' => 'Басқа мерзімі:',
 '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',
-'ipbotheroption' => 'басқа',
-'ipbotherreason' => 'Басқа/қосымша себеп:',
 'ipbhidename' => 'Қатысушы атын өңдемелерден және тізімдерден жасыру',
 'ipbwatchuser' => 'Бұл қатысушының жеке және талқылау беттерін бақылау',
 'ipb-disableusertalk' => 'Бұл қатысушыны бұғатталған кезде өзінің талқылау бетінін өңдеуіне  кедергі жасау',
@@ -2677,7 +2655,6 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 
 Ал мақаланың атауын өзгертем деп мағлұматын қолмен көшіруге болмайды, себебі беттің түзету тарихын өшіреді.",
 'movearticle' => 'Ағымдағы бет атауы:',
-'movenologin' => 'Сіз жүйеге кірмегенсіз',
 'movenologintext' => 'Бетті жылжыту үшін тіркелген болуыңыз және [[{{#special:UserLogin}}|кіруіңіз]] жөн.',
 'movenotallowed' => '{{SITENAME}} жобасында беттерді жылжытуға рұқсатыңыз жоқ.',
 'newtitle' => 'Жаңа бет атауы:',
@@ -2689,9 +2666,6 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 'articleexists' => 'Осылай аталған бет алдақашан бар, не таңдаған атауыңыз жарамды емес.
 Өзге атауды таңдаңыз.',
 'cantmove-titleprotected' => 'Бетті осы орынға жылжыта алмайсыз, себебі жаңа тақырып аты бастаудан қорғалған',
-'talkexists' => "'''Беттің өзі сәтті жылжытылды, бірақ талқылау беті бірге жылжытылмады, оның себебі жаңа тақырып атында біреуі алдақашан бар.
-Бұны қолмен қосыңыз.'''",
-'movedto' => 'мынаған жылжытылды:',
 'movetalk' => 'Қатысты талқылау бетін де жылжыту',
 'move-subpages' => 'Барлық бетшелерін жылжыту ($1 дейін)',
 'move-talk-subpages' => 'Талқылау бетінің барлық бетшелерін жылжыту ($1 дегенге)',
@@ -2722,6 +2696,8 @@ $1 бұғаттауы үшін келтірілген себебі: «$2».',
 'imagetypemismatch' => 'Файлдың жаңа кеңейтімі бұның түріне сәйкес емес',
 'imageinvalidfilename' => 'Файл атауы жарамсыз',
 'move-leave-redirect' => 'Ескі бетте айдату сілтемесін қалдыру',
+'semiprotectedpagemovewarning' => "'''Ескерту:''' Бұл бет жылжытудан қорғалған оны тек тіркелген қатысушылар ғана жылжытыта алады.
+Төменде ең соңғы журнал енгізілімі көрсетілген:",
 
 # Export
 'export' => 'Беттерді сыртқа беру',
@@ -2755,6 +2731,7 @@ MediaWiki жүйесінің [[{{#special:Import}}|сырттан алу бет
 'allmessages-filter-unmodified' => 'Өзгертілмегендер',
 'allmessages-filter-all' => 'Барлығы',
 'allmessages-filter-modified' => 'Өзгертілгендер',
+'allmessages-prefix' => 'Префикс бойынша сүзгі',
 'allmessages-language' => 'Тілі:',
 'allmessages-filter-submit' => 'Өту',
 
@@ -2923,7 +2900,7 @@ $2',
 'spam_blanking' => '$1 дегенге сілтемелері бар барлық түзетулер тазартылды',
 
 # Info page
-'pageinfo-title' => '"$1" үшін ақпараттар',
+'pageinfo-title' => '"$1" беті туралы мәлімет',
 'pageinfo-header-basic' => 'Негізгі ақпарат',
 'pageinfo-header-edits' => 'Өңдеу тарихы',
 'pageinfo-header-restrictions' => 'Бет қорғалуы',
@@ -2932,6 +2909,7 @@ $2',
 'pageinfo-length' => 'Бет ұзындығы (байтпен)',
 'pageinfo-article-id' => 'Бет ID-і',
 'pageinfo-language' => 'Бет мәлімет тілі',
+'pageinfo-content-model' => 'Бет мағұлымат қалпы',
 'pageinfo-robot-policy' => 'Индекстеуді робот жүргізеді',
 'pageinfo-robot-index' => 'Рұқсат берілген',
 'pageinfo-robot-noindex' => 'Рұқсат етілмеген',
@@ -2953,7 +2931,7 @@ $2',
 'pageinfo-hidden-categories' => 'Жасырылған {{PLURAL:$1|санат|санаттар}} ($1)',
 'pageinfo-templates' => 'Кіріктірілген {{PLURAL:$1|үлгі|үлгілер}} ($1)',
 'pageinfo-transclusions' => 'Kіріктірілген {{PLURAL:$1|бет|беттер}} ($1)',
-'pageinfo-toolboxlink' => 'Бет ақпараттары',
+'pageinfo-toolboxlink' => 'Бұл бет туралы мәлімет',
 'pageinfo-redirectsto' => 'Айдатылғандар',
 'pageinfo-redirectsto-info' => 'Информация',
 'pageinfo-contentpage-yes' => 'Иә',
@@ -2971,9 +2949,9 @@ $2',
 
 # Patrolling
 'markaspatrolleddiff' => 'Зерттелді деп белгілеу',
-'markaspatrolledtext' => 'Бұл бетті зерттелді деп белгіле',
-'markedaspatrolled' => 'Ð\97еÑ\80Ñ\82Ñ\82елді деп белгіленді',
-'markedaspatrolledtext' => 'Бөлектенген нұсқа [[:$1]]  зерттелді деп белгіленді.',
+'markaspatrolledtext' => 'Бұл бетті тексерілді деп белгілеу',
+'markedaspatrolled' => 'ТекÑ\81еÑ\80Ñ\96лді деп белгіленді',
+'markedaspatrolledtext' => 'Бөлектенген нұсқа [[:$1]] тексерілді деп белгіленді.',
 'rcpatroldisabled' => 'Жуықтағы өзгерістерді зерттеуі өшірілген',
 'rcpatroldisabledtext' => 'Жуықтағы өзгерістерді зерттеу мүмкіндігі ағымда өшірілген.',
 'markedaspatrollederror' => 'Зерттелді деп белгіленбейді',
@@ -3012,7 +2990,7 @@ $1',
 'svg-long-desc' => 'SVG файлы, кесімді $1 × $2 нүкте, файл мөлшері: $3',
 'svg-long-desc-animated' => 'SVG қозғалысты файлы, кесімді $1 × $2 нүкте, файл өлшемі: $3',
 'svg-long-error' => 'жарамсыз SVG файлы: $1',
-'show-big-image' => 'Ð\96оÒ\93аÑ\80Ñ\8b Ð°Ð¶Ñ\8bÑ\80аÑ\82Ñ\8bлÑ\8bмдÑ\8b',
+'show-big-image' => 'ТүпнұÑ\81Ò\9bа Ñ\84айл',
 'show-big-image-preview' => 'Бұл қарап шығудағы өлшемі: $1.',
 'show-big-image-other' => 'Басқа {{PLURAL:$2|ажыратылымдық|ажыратылымдық}}: $1.',
 'show-big-image-size' => '$1 × $2 нүкте',
@@ -3375,6 +3353,7 @@ $1',
 
 'exif-ycbcrpositioning-1' => 'Орталықты',
 
+'exif-dc-contributor' => 'Үлескерлер',
 'exif-dc-date' => 'Күн(дер)',
 'exif-dc-publisher' => 'Жариялаушы',
 'exif-dc-relation' => 'Қатысты медиа',
@@ -3399,15 +3378,10 @@ $1',
 'exif-urgency-low' => 'Төмен ($1)',
 'exif-urgency-high' => 'Жоғары ($1)',
 
-# External editor support
-'edit-externally' => 'Бұл файлды шеттік қондырма арқылы өңдеу',
-'edit-externally-help' => '(көбірек ақпарат үшін [https://www.mediawiki.org/wiki/Manual:External_editors орнату нұсқауларын] қараңыз)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'барлық',
 'namespacesall' => 'барлығы',
 'monthsall' => 'барлығы',
-'limitall' => 'барлығы',
 
 # Email address confirmation
 'confirmemail' => 'Е-пошта мекенжайын құптау',
@@ -3432,7 +3406,6 @@ $1',
 'confirmemail_success' => 'Е-пошта мекенжайыңыз құпталды.
 Енді уикиге кіріп жұмысқа кірісуге болады',
 'confirmemail_loggedin' => 'Е-пошта мекенжайыңыз енді құпталды.',
-'confirmemail_error' => 'Құптауңызды сақтағанда белгісіз қате болды.',
 'confirmemail_subject' => '{{SITENAME}} торабынан е-пошта мекенжайыңызды құптау хаты',
 'confirmemail_body' => 'Кейбіреу, $1 деген IP мекенжайынан, өзіңіз болуы мүмкін,
 {{SITENAME}} жобасында бұл Е-пошта мекенжайын қолданып «$2» деген тіркелгі жасапты.
@@ -3454,7 +3427,7 @@ $5
 # Scary transclusion
 'scarytranscludedisabled' => '[Уики-аралық кірікбеттер өшірілген]',
 'scarytranscludefailed' => '[$1 үшін үлгі келтіруі сәтсіз бітті; ғафу етіңіз]',
-'scarytranscludetoolong' => '[URL тым ұзын; ғафу етіңіз]',
+'scarytranscludetoolong' => '[URL тым ұзын]',
 
 # Delete conflict
 'deletedwhileediting' => 'Ескету: Бұл бетті өңдеуіңізді бастағанда, осы бет жойылды!',
@@ -3478,6 +3451,7 @@ $5
 # Separators for various lists, etc.
 'semicolon-separator' => ';',
 'colon-separator' => ':&#32;',
+'quotation-marks' => '"$1"',
 
 # Multipage image navigation
 'imgmultipageprev' => '← алдыңғы бетке',
@@ -3485,6 +3459,10 @@ $5
 'imgmultigo' => 'Өт!',
 'imgmultigoto' => '$1 бетіне өту',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(әдепкі тіл)',
+'img-lang-go' => 'Өту',
+
 # Table pager
 'ascending_abbrev' => 'өсу',
 'descending_abbrev' => 'кему',
@@ -3505,6 +3483,7 @@ $5
 
 # Size units
 'size-bytes' => '$1 байт',
+'size-kilobytes' => '$1 КБ',
 
 # Live preview
 'livepreview-loading' => 'Жүктеуде…',
@@ -3610,6 +3589,8 @@ $5
 'version-hook-subscribedby' => 'Тұзақ тартқыштары',
 'version-version' => '(Нұсқасы: $1)',
 'version-license' => 'Лицензиясы',
+'version-ext-license' => 'Лицензия',
+'version-ext-colheader-credits' => 'Автор(лары)',
 'version-poweredby-others' => 'басқалар',
 'version-software' => 'Орнатылған бағдарламалық жасақтама',
 'version-software-product' => 'Өнім',
@@ -3670,12 +3651,12 @@ $5
 'tags-active-header' => 'Белсенді ме?',
 'tags-hitcount-header' => 'Тегтелген өзгерістер',
 'tags-active-yes' => 'Иә',
+'tags-active-no' => 'Жоқ',
 'tags-edit' => 'өңдеу',
 'tags-hitcount' => '$1 {{PLURAL:$1|өзгеріс|өзгеріс}}',
 
 # Special:ComparePages
 'comparepages' => 'Беттерді салыстыру',
-'compare-selector' => 'Бет түзетулерін салыстыру',
 'compare-page1' => 'Бет 1',
 'compare-page2' => 'Бет 2',
 'compare-rev1' => 'Нұсқа 1',
@@ -3696,6 +3677,9 @@ $5
 # New logging system
 'logentry-delete-delete' => '$1 $3 деген бетті {{GENDER:$2|жойды}}',
 'logentry-delete-restore' => '$1 $3 деген бетті {{GENDER:$2|қалпына келтірді}}',
+'logentry-delete-event' => '$1 $3 бетіндегі {{PLURAL:$5|журнал оқиғасы|$5 журнал оқиғасы}} көрінісін {{GENDER:$2|өзгертті}}: $4',
+'logentry-delete-revision' => '$1 $3 бетіндегі {{PLURAL:$5|нұсқа|$5 нұсқа}} көрінісін {{GENDER:$2|өзгертті}}: $4',
+'logentry-suppress-event' => '$1 $3 бетіндегі {{PLURAL:$5|журнал оқиғасы|$5 журнал оқиғасы}} көрінісін құпия түрде {{GENDER:$2|өзгертті}}: $4',
 'revdelete-content-hid' => 'мағұлымат жасырылған',
 'revdelete-summary-hid' => 'өңдеу түйіндемесі жасырылған',
 'revdelete-uname-hid' => 'қатысушы есімі жасырылған',
@@ -3705,7 +3689,7 @@ $5
 'revdelete-restricted' => 'әкімшілерге тиымдар қолдады',
 'revdelete-unrestricted' => 'әкімшілерден тиымдарды аластады',
 'logentry-move-move' => '$1 $3 бетін $4 бетіне {{GENDER:$2|жылжытты}}',
-'logentry-move-move-noredirect' => '$1 $3 бетін $4 бетіне {{GENDER:$2|жылжытты}} (айдатқыш қалдырылмады)',
+'logentry-move-move-noredirect' => '$1 $3 бетін $4 бетіне {{GENDER:$2|жылжытты}} (айдатқыш қалдырмады)',
 'logentry-move-move_redir' => '$1 $3 бетін $4 деген айдатқыш үстіне {{GENDER:$2|жылжытты}}',
 'logentry-move-move_redir-noredirect' => '$1 $3 бетін $4 деген айдатқыш үстіне {{GENDER:$2|жылжытты}} (айдатқыш қалдырылмады)',
 'logentry-newusers-newusers' => '$1 жаңадан қатысушы тіркелгісін {{GENDER:$2|жасады}}',
@@ -3748,6 +3732,13 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|ғасыр|ғасыр}}',
 'duration-millennia' => '$1 {{PLURAL:$1|мың жылдық|мың жылдық}}',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
+'limitreport-walltime' => 'Нақты уақытта қолданылуы',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$1|байт|байт}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт|байт}}',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'Үлгілерді ұлғайту',
 'expand_templates_intro' => 'Осы құрал арнайы беті әлдебір мәтінді алады да,
index 9be27d3..459af18 100644 (file)
@@ -276,7 +276,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Barlıq_better' ),
        'Ancientpages'              => array( 'Eski_better' ),
        'Block'                     => array( 'Jaýdı_buğattaw', 'IP_buğattaw' ),
-       'Blockme'                   => array( 'Özdiktik_buğattaw', 'Özdik_buğattaw', 'Meni_buğattaw' ),
        'Booksources'               => array( 'Kitap_qaýnarları' ),
        'BrokenRedirects'           => array( 'Jaramsız_aýdağıştar', 'Jaramsız_aýdatwlar' ),
        'Categories'                => array( 'Sanattar' ),
@@ -285,7 +284,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Ülesi' ),
        'CreateAccount'             => array( 'Jaña_tirkelgi', 'Tirkelgi_Jaratw' ),
        'Deadendpages'              => array( 'Tuýıq_better' ),
-       'Disambiguations'           => array( 'Aýrıqtı_better' ),
        'DoubleRedirects'           => array( 'Şınjırlı_aýdağıştar', 'Şınjırlı_aýdatwlar' ),
        'Emailuser'                 => array( 'Xat_jiberw' ),
        'Export'                    => array( 'Sırtqa_berw' ),
@@ -376,7 +374,6 @@ $messages = array(
 'tog-minordefault' => 'Ädepkiden barlıq öñdemelerdi şağın dep belgile',
 'tog-previewontop' => 'Qarap şığw awmağı kiristirw ornı aldında',
 'tog-previewonfirst' => 'Birinşi öñdegende qarap şığw',
-'tog-nocache' => 'Bet bürkemelewin öşir',
 'tog-enotifwatchlistpages' => 'Baqılanğan bet özgergende mağan xat jiber',
 'tog-enotifusertalkpages' => 'Talqılawım özgergende mağan xat jiber',
 'tog-enotifminoredits' => 'Şağın öñdeme twralı da mağan xat jiber',
@@ -481,7 +478,6 @@ $messages = array(
 'qbedit' => 'Öñdew',
 'qbpageoptions' => 'Bul bet',
 'qbmyoptions' => 'Betterim',
-'qbspecialpages' => 'Arnaýı better',
 'faq' => 'Jïi qoýılğan sawaldar',
 'faqpage' => 'Project:Jïi qoýılğan sawaldar',
 
@@ -646,9 +642,6 @@ Mında taqırıp atında qoldalmaýtın birqatar tañbalar bolwı mümkin.',
 'perfcached' => 'Kelesi derek bürkemelengen, sondıqtan tolıqtaý jañalanmağan bolwı mümkin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Kelesi derek bürkemelengen, soñğı jañalanlğan kezi: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Bul bettiñ jañartılwı ağımda öşirilgen. Derekteri qazir özgertilmeýdi.',
-'wrong_wfQuery_params' => 'wfQuery() fwnkcïyası üşin burıs baptalımdarı bar<br />
-Jete: $1<br />
-Suranım: $2',
 'viewsource' => 'Qaýnar közin qaraw',
 'actionthrottled' => 'Äreket bäseñdetildi',
 'actionthrottledtext' => 'Spamğa qarsı küres esebinde, osı äreketti qısqa waqıtta tım köp ret orındawıñız şektelindi, jäne bul şektew şamasınan asıp ketkensiz.
@@ -749,7 +742,7 @@ Eger bul tirkelgi qatelikpen jasalsa, osı xabarğa elemewiñiz mümkin.',
 'loginlanguagelabel' => 'Til: $1',
 
 # Change password dialog
-'resetpass' => 'Tirkelginiñ qupïya sözin özgertw',
+'changepassword' => 'Qupïya sözdi özgertw',
 'resetpass_announce' => 'Xatpen jiberilgen waqıtşa kodımen kirgensiz.
 Kirwiñizdi bitirw üşin, jaña qupïya söziñizdi mında engizwiñiz jön:',
 'resetpass_header' => 'Qupïya sözdi özgertw',
@@ -1048,12 +1041,8 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
 
 # Search results
 'searchresults' => 'İzdew nätïjeleri',
-'searchresulttext' => "{{SITENAME}} saytında izlew haqqında ko'birek mag'lıwmat alg'ın'ız kelse, [[{{Mediawiki:helppage}}|{{int:help}} betine]] o'tip qarap ko'rin'.",
-'searchsubtitle' => "İzdegeniñiz: '''[[:$1]]'''",
-'searchsubtitleinvalid' => "İzdegeniñiz: '''$1'''",
 'toomanymatches' => 'Tım köp säýkes qaýtarıldı, özge suranımdı baýqap köriñiz',
 'titlematches' => 'Bet taqırıbın atı säýkes keledi',
-'notitlematches' => 'Eş bet taqırıbın atı säýkes emes',
 'textmatches' => 'Bet mätini säýkes keledi',
 'notextmatches' => 'Eş bet mätini säýkes emes',
 'prevn' => 'aldıñğı {{PLURAL:$1|$1}}',
@@ -1068,17 +1057,13 @@ Añğartpa: bağıttaw siltemelerin qoldanğanda bul bağan qaýta qoýıladı.'
 'search-interwiki-default' => '$1 nätïje:',
 'search-interwiki-more' => '(köbirek)',
 'search-relatedarticle' => 'Qatıstı',
-'mwsuggest-disable' => 'AJAX usınımdarın öşir',
 'searchrelated' => 'qatıstı',
 'searchall' => 'barlıq',
 'showingresults' => "Tömende nömir '''$2''' ornınan bastap barınşa '''$1''' nätïje körsetiledi.",
 'showingresultsnum' => "Tömende nömir '''$2''' ornınan bastap '''$3''' nätïje körsetiledi.",
-'nonefound' => "'''Esletpe''': Defolt boyınsha tek g'ana sheklengen isimler ko'pliginen izlenedi. Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.b.) izlew ushın izlewin'izdi ''barlıq:'' prefiksi menen baslan', yamasa qa'legen isimler ko'pligin prefiks esabında qollanın'.",
-'powersearch' => 'Keñeýtilgen izdew',
 'powersearch-legend' => 'Keñeýtilgen izdew',
 'powersearch-ns' => "Usı isimler ko'pliginen izlew:",
 'powersearch-redir' => "Qayta bag'ıtlawshı betlerdi ko'rset",
-'powersearch-field' => "İzlenetug'ın so'z (yamasa so'z dizbegi):",
 'search-external' => 'Şettik izdegiş',
 'searchdisabled' => '{{SITENAME}} izdew qızmeti öşirilgen.
 Äzirşe Google arqılı izdewge boladı.
@@ -1088,7 +1073,6 @@ Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümki
 'preferences' => 'Baptalımdar',
 'mypreferences' => 'Baptalımdarım',
 'prefs-edits' => 'Öñdeme sanı:',
-'changepassword' => 'Qupïya sözdi özgertw',
 'prefs-skin' => 'Mänerler',
 'skin-preview' => 'Qarap şığw',
 'datedefault' => 'Eş qalawsız',
@@ -1100,19 +1084,16 @@ Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümki
 'prefs-watchlist-edits' => 'Keñeýtilgen baqılawlardağı özgeristerdiñ barınşa körsetpek sanı:',
 'prefs-misc' => 'Ärqïlı',
 'saveprefs' => 'Saqta',
-'resetprefs' => 'Saqtalmağan özgeristerdi tazart',
 'prefs-editing' => 'Öñdew',
 'rows' => 'Joldar:',
 'columns' => 'Bağandar:',
 'searchresultshead' => 'İzdew',
-'resultsperpage' => 'Bet saýın nätïje sanı:',
 'stub-threshold' => '<a href="#" class="stub">Biteme siltemesin</a> pişimdew tabaldırığı (baýt):',
 'recentchangesdays' => 'Jüıqtağı özgeristerinde körsetpek kün sanı:',
 'recentchangescount' => 'Jwıqtağı özgeristerdinde, tarïx jäne jwrnal betterinde körsetpek öñdeme sanı:',
 'savedprefs' => 'Baptalımdarıñız saqtaldı.',
 'timezonelegend' => 'Waqıt beldewi',
 'localtime' => 'Jergilikti waqıt',
-'timezoneoffset' => 'Sağat ığıswı¹',
 'servertime' => 'Server waqıtı',
 'guesstimezone' => 'Şolğıştan alıp toltırw',
 'allowemail' => 'Basqadan xat qabıldawın qos',
@@ -1250,7 +1231,6 @@ Eger bunı jetistirwdi tañdasañız, bul tüzetwiñizdiñ awtorlığın anıqta
 'recentchanges' => 'Jwıqtağı özgerister',
 'recentchanges-summary' => 'Bul bette osı wïkïdegi bolğan jwıqtağı özgerister baýqaladı.',
 'recentchanges-feed-description' => 'Bul arnamenen wïkïdegi eñ soñğı özgerister qadağalanadı.',
-'rcnote' => "$3 kezine deýin — tömende soñğı {{PLURAL:$2|kündegi|'''$2''' kündegi}}, soñğı '''$1''' özgeris körsetiledi.",
 'rcnotefrom' => "'''$2''' kezinen beri — tömende '''$1''' jetkenşe deýin özgerister körsetiledi.",
 'rclistfrom' => '$1 kezinen beri — jaña özgeristerdi körset.',
 'rcshowhideminor' => 'Şağın öñdemelerdi $1',
@@ -1530,10 +1510,8 @@ Kirisi: mağlumat_türi/tür_tarawı, mısalı <code>image/jpeg</code>.',
 'deadendpagestext' => 'Kelesi better {{SITENAME}} jobasındağı basqa betterge siltemeýdi.',
 'protectedpages' => 'Qorğalğan better',
 'protectedpages-indef' => 'Tek belgisiz qorğawlar',
-'protectedpagestext' => 'Kelesi better öñdewden nemese jıljıtwdan qorğalğan',
 'protectedpagesempty' => 'Ağımda mınadaý baptalımdarımen eşbir bet qorğalmağan',
 'protectedtitles' => 'Qorğalğan taqırıp attarı',
-'protectedtitlestext' => 'Kelesi taqırıp attarın bastawğa ruqsat berilmegen',
 'protectedtitlesempty' => 'Bul baptalımdarmen ağımda eş taqırıp attarı qorğalmağan.',
 'listusers' => 'Qatıswşı tizimi',
 'newpages' => 'Eñ jaña better',
@@ -1575,9 +1553,6 @@ Jwrnal türin, qatıswşı atın, ne tïisti betin bölektep, tarıltıp qaraý
 'allpagesfrom' => 'Mına betten bastap körsetw:',
 'allarticles' => 'Barlıq bet tizimi',
 'allinnamespace' => 'Barlıq bet ($1 esim ayası)',
-'allnotinnamespace' => 'Barlıq bet ($1 esim ayasınan tıs)',
-'allpagesprev' => 'Aldıñğığa',
-'allpagesnext' => 'Kelesige',
 'allpagessubmit' => 'Ötw',
 'allpagesprefix' => 'Mınadan bastalğan betterdi körsetw:',
 'allpagesbadtitle' => 'Keltirilgen bet taqırıbın atı jaramsız bolğan, nemese til-aralıq ne wïkï-aralıq bastawı bar boldı.
@@ -1831,7 +1806,6 @@ Siltemeñiz jaramsız, ne tüzetw qalpına keltirilgen, nemese murağattan alast
 'undelete-nodiff' => 'Eş aldıñğı tüzetw tabılmadı.',
 'undeletebtn' => 'Qalpına keltir!',
 'undeletelink' => 'qalpına keltirw',
-'undeletereset' => 'Qaýta qoý',
 'undeletecomment' => 'Mändemesi:',
 'undeletedrevisions' => '$1 tüzetw qalpına keltirildi',
 'undeletedrevisions-files' => '$1 tüzetw jäne $2 faýl qalpına keltirildi',
@@ -1908,7 +1882,6 @@ Tömende tïisti sebebin toltırıp körsetiñiz (mısalı, däýekke buzaqılı
 'ipadressorusername' => 'IP mekenjaýı ne qatıswşı atı:',
 'ipbexpiry' => 'Merzimi bitpek:',
 'ipbreason' => 'Sebebi:',
-'ipbreasonotherlist' => 'Basqa sebep',
 'ipbreason-dropdown' => '* Buğattawdıñ jalpı sebebteri
 ** Jalğan mälimet engizw
 ** Betterdegi mağlumattı alastaw
@@ -1923,8 +1896,6 @@ Tömende tïisti sebebin toltırıp körsetiñiz (mısalı, däýekke buzaqılı
 'ipbsubmit' => 'Qatıswşını buğatta',
 'ipbother' => 'Basqa merzimi:',
 'ipboptions' => '2 sağat:2 hours,1 kün:1 day,3 kün:3 days,1 apta:1 week,2 apta:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 jıl:1 year,mängi:infinite',
-'ipbotheroption' => 'basqa',
-'ipbotherreason' => 'Basqa/qosımşa sebep:',
 'ipbhidename' => 'Qatıswşı atın buğattaw jwrnalınnan, belsendi buğattaw tiziminen, qatıswşı tiziminen jasırw',
 'ipbwatchuser' => 'Bul qatıswşınıñ jeke jäne talqılaw betterin baqılaw',
 'badipaddress' => 'Jaramsız IP mekenjaýı',
@@ -2022,7 +1993,6 @@ osınıñ saldarın baýımdawıñızdı ärekettiñ aldınan batıl bolıñız.
 
 Osı oraýda, qalawıñız bolsa, betti qoldan jıljıta ne qosa alasız.",
 'movearticle' => 'Jıljıtpaq bet:',
-'movenologin' => 'Jüýege kirmegensiz',
 'movenologintext' => 'Betti jıljıtw üşin tirkelgen bolwıñız jäne [[{{#special:UserLogin}}|kirwiñiz]] jön.',
 'movenotallowed' => '{{SITENAME}} jobasında betterdi jıljıtw rwqsatıñız joq.',
 'newtitle' => 'Jaña taqırıp atına:',
@@ -2033,9 +2003,6 @@ Osı oraýda, qalawıñız bolsa, betti qoldan jıljıta ne qosa alasız.",
 'articleexists' => 'Osılaý atalğan bet aldaqaşan bar, ne tañdağan atawıñız jaramdı emes.
 Özge atawdı tañdañız',
 'cantmove-titleprotected' => 'Betti osı orınğa jıljıta almaýsız, sebebi jaña taqırıp atı bastawdan qorğalğan',
-'talkexists' => "'''Bettiñ özi sätti jıljıtıldı, biraq talqılaw beti birge jıljıtılmadı, onıñ sebebi jaña taqırıp atında birewi aldaqaşan bar.
-Bunı qolmen qosıñız.'''",
-'movedto' => 'mınağan jıljıtıldı:',
 'movetalk' => 'Qawımdastı talqılaw betin jıljıtw',
 'move-subpages' => 'Barlıq betşelerin jıljıtw',
 'move-talk-subpages' => 'Talqılaw betiniñ barlıq betşelerin jıljıtw',
@@ -2563,10 +2530,6 @@ Basqaları ädepkiden jasırıladı.
 'exif-gpsdirection-t' => 'Şın bağıt',
 'exif-gpsdirection-m' => 'Magnïttı bağıt',
 
-# External editor support
-'edit-externally' => 'Bul faýldı şettik qondırma arqılı öñdew',
-'edit-externally-help' => 'Köbirek aqparat üşin [https://www.mediawiki.org/wiki/Manual:External_editors ornatw nusqamaların] qarañız.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'barlıq',
 'namespacesall' => 'barlığı',
@@ -2595,7 +2558,6 @@ Kod merzimi bitken şığar.',
 'confirmemail_success' => 'E-poşta mekenjaýıñız quptaldı.
 Endi wïkïge kirip jumısqa kiriswge boladı',
 'confirmemail_loggedin' => 'E-poşta mekenjaýıñız endi quptaldı.',
-'confirmemail_error' => 'Quptawñızdı saqtağanda belgisiz qate boldı.',
 'confirmemail_subject' => '{{SITENAME}} torabınan e-poşta mekenjaýıñızdı quptaw xatı',
 'confirmemail_body' => 'Keýbirew, $1 degen IP mekenjaýınan, öziñiz bolwı mümkin,
 {{SITENAME}} jobasında bul E-poşta mekenjaýın qoldanıp «$2» degen tirkelgi jasaptı.
index d0a97cb..2c93fde 100644 (file)
@@ -169,13 +169,12 @@ $messages = array(
 'jumptonavigation' => 'sumiissusersiuut',
 'jumptosearch' => 'ujarlerit',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} pillugu',
 'aboutpage' => 'Project:Pillugu',
 'currentevents' => 'Maannakkut pisut',
 'disclaimers' => 'Aalajangersagaq',
 'edithelp' => 'Ikiuutit',
-'edithelppage' => 'Help:Aaqqissuussineq',
 'helppage' => 'Help:Ikiuutit',
 'mainpage' => 'Saqqaa',
 'mainpage-description' => 'Saqqaa',
@@ -184,8 +183,6 @@ $messages = array(
 
 'retrievedfrom' => 'Uannga aaneqartoq "$1"',
 'youhavenewmessages' => '<!-- This sentence shall be empty because of kl grammar. --> $1 ($2)',
-'newmessageslink' => 'Allagarsivutit',
-'newmessagesdifflink' => 'allannguutini kingullerniit',
 'editsection' => 'aaqqissoruk',
 'editold' => 'aaqqissoruk',
 'viewsourceold' => 'toqqavia takuuk',
@@ -315,7 +312,6 @@ Peersinermut nuutsinermullu nalunaarsuutit ataani takuneqarsinnaapput.',
 'viewprevnext' => 'Takuuk ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-exists' => "'''Qupperneqarpoq \"[[:\$1]]\" -mik atilimmik maani wikimi'''",
 'searchmenu-new' => "'''Qupperneq [[:$1]] pilersiguk maani wikimi'''",
-'searchhelp-url' => 'Help:Ikiuutit',
 'searchprofile-articles' => 'Imarisai',
 'searchprofile-project' => 'Ikiuutit suliniutillu imaat',
 'searchprofile-everything' => 'Tamarmik',
@@ -325,7 +321,6 @@ Peersinermut nuutsinermullu nalunaarsuutit ataani takuneqarsinnaapput.',
 'search-suggest' => 'Una piviuk: $1',
 'showingresultsheader' => "{{PLURAL:$5|Inernera '''$1''' '''$3'''|Inerneri '''$1 - $2''' '''$3'''}}-suni '''$4'''-mut",
 'search-nonefound' => 'Ujaasineq inerneqanngilaq',
-'powersearch' => 'Ujarlerit',
 
 # Preferences page
 'mypreferences' => 'Inissiffissat',
@@ -343,6 +338,7 @@ Peersinermut nuutsinermullu nalunaarsuutit ataani takuneqarsinnaapput.',
 'recentchanges-label-newpage' => 'Tassaavoq qupperneq nutaaq',
 'recentchanges-label-minor' => 'Tassaavoq allannguut annikitsoq',
 'recentchanges-label-bot' => 'Bot-ip allannguutaa',
+'recentchanges-legend-newpage' => '$1 - qupperneq nutaaq',
 'rclistfrom' => 'Allannguutit kingulliit takukkit $1 -nngaanniit',
 'rcshowhideminor' => '$1 allannguutit annikitsut',
 'rcshowhidebots' => '$1 robottit',
@@ -400,8 +396,6 @@ Peersinermut nuutsinermullu nalunaarsuutit ataani takuneqarsinnaapput.',
 
 # Special:AllPages
 'allarticles' => 'Quppernerit tamarmik',
-'allpagesprev' => 'Siulii',
-'allpagesnext' => 'Tullii',
 'allpagessubmit' => 'Tassunngarit',
 
 # Special:Categories
index a98a1cc..31f4bd2 100644 (file)
@@ -100,7 +100,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'ទំព័រចាស់ៗ' ),
        'Blankpage'                 => array( 'ទំព័រទទេ' ),
        'Block'                     => array( 'រាំងខ្ទប់IP' ),
-       'Blockme'                   => array( 'រាំងខ្ទប់' ),
        'Booksources'               => array( 'ប្រភពសៀវភៅ' ),
        'BrokenRedirects'           => array( 'ការបញ្ជូនបន្តដែលខូច' ),
        'Categories'                => array( 'ចំណាត់ថ្នាក់ក្រុម' ),
@@ -111,7 +110,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'បង្កើតគណនី' ),
        'Deadendpages'              => array( 'ទំព័រទាល់' ),
        'DeletedContributions'      => array( 'ការរួមចំណែកដែលត្រូវបានលុបចោល' ),
-       'Disambiguations'           => array( 'ចំណងជើងស្រដៀងគ្នា' ),
        'DoubleRedirects'           => array( 'ការបញ្ជូនបន្តទ្វេដង' ),
        'Emailuser'                 => array( 'អ្នកប្រើប្រាស់អ៊ីមែល' ),
        'Export'                    => array( 'នាំចេញ' ),
@@ -284,7 +282,6 @@ $messages = array(
 'tog-minordefault' => 'ចំណាំ​គ្រប់កំណែប្រែ​របស់ខ្ញុំ​ថាជា​កំណែប្រែតិចតួច',
 'tog-previewontop' => 'បង្ហាញ​ការមើលមុន​ពីលើ​ប្រអប់​កែប្រែ',
 'tog-previewonfirst' => 'បង្ហាញ​ការមើលមុនសម្រាប់កំណែប្រែ​ដំបូងគេ',
-'tog-nocache' => 'មិនប្រើសតិភ្ជាប់​នៃ​ទំព័រ',
 'tog-enotifwatchlistpages' => 'ផ្ញើ​អ៊ីមែល​​មក​ខ្ញុំ​​កាល​បើ​​មាន​បន្លាស់​ប្ដូរ​នៃ​ទំព័រ​ណា​មួយ​ដែល​មាន​ក្នុង​បញ្ជី​តាម​ដាន​របស់​ខ្ញុំ',
 'tog-enotifusertalkpages' => 'ផ្ញើអ៊ីមែល​មកខ្ញុំ​កាលបើ​មានបន្លាស់ប្ដូរ​នៅ​ក្នុងទំព័រពិភាក្សា​របស់ខ្ញុំ',
 'tog-enotifminoredits' => 'ផ្ញើអ៊ីមែល​មកខ្ញុំពេលមានបន្លាស់ប្ដូរតិចតួច​លើទំព័រឬឯកសារផងដែរ​',
@@ -323,7 +320,7 @@ $messages = array(
 'monday' => 'ថ្ងៃច័ន្ទ',
 'tuesday' => 'ថ្ងៃអង្គារ',
 'wednesday' => 'ថ្ងៃពុធ',
-'thursday' => 'á\9e\90á\9f\83á\9f\92á\9e\84ព្រហស្បតិ៍',
+'thursday' => 'á\9e\90á\9f\92á\9e\84á\9f\83ព្រហស្បតិ៍',
 'friday' => 'ថ្ងៃសុក្រ',
 'saturday' => 'ថ្ងៃសៅរ៍',
 'sun' => 'អា',
@@ -408,7 +405,7 @@ $messages = array(
 'cancel' => 'បោះបង់',
 'moredotdotdot' => 'បន្ថែមទៀត...',
 'morenotlisted' => 'បញ្ជីនេះមិនទាន់ពេញលេញទេ។',
-'mypage' => 'ទំព័រ​ខ្ញុំ',
+'mypage' => 'ទំព័រ​',
 'mytalk' => 'ការពិភាក្សា​',
 'anontalk' => 'ទំព័រពិភាក្សាសំរាប់ IP នេះ',
 'navigation' => 'ការណែនាំ',
@@ -420,7 +417,6 @@ $messages = array(
 'qbedit' => 'កែប្រែ',
 'qbpageoptions' => 'ទំព័រនេះ',
 'qbmyoptions' => 'ទំព័ររបស់ខ្ញុំ',
-'qbspecialpages' => 'ទំព័រពិសេសៗ',
 'faq' => 'សំណួរដែលសួរញឹកញាប់',
 'faqpage' => 'Project:សំណួរដែលសួរញឹកញាប់',
 
@@ -455,7 +451,7 @@ $messages = array(
 'updatedmarker' => 'ត្រូវបានបន្ទាន់សម័យបន្ទាប់ពីពេលខ្ញុំចូលមើលចុងក្រោយ',
 'printableversion' => 'ទម្រង់​សម្រាប់បោះពុម្ភ',
 'permalink' => 'តំណភ្ជាប់អចិន្ត្រៃយ៍',
-'print' => 'á\9e\94á\9f\84á\9f\87á\9e\96á\9e»á\9e\98á\9f\92á\9e\97',
+'print' => 'á\9e\94á\9f\84á\9f\87á\9e\96á\9e»á\9e\98á\9f\92á\9e\96',
 'view' => 'មើល',
 'edit' => 'កែប្រែ',
 'create' => 'បង្កើត',
@@ -467,7 +463,7 @@ $messages = array(
 'undelete_short' => 'ឈប់លុប{{PLURAL:$1|កំណែប្រែមួយ|កំណែប្រែចំនួន$1}}វិញ',
 'viewdeleted_short' => 'មើល{{PLURAL:$1|កំណែប្រែមួយដែលត្រូវបានលុបចោល|កំណែប្រែចំនួន $1 ដែលត្រូវបានលុបចោល}}',
 'protect' => 'ការពារ',
-'protect_change' => 'ផ្លាស់ប្តូរការការពារ',
+'protect_change' => 'ផ្លាស់ប្តូរ',
 'protectthispage' => 'ការពារទំព័រនេះ',
 'unprotect' => 'ប្ដូរការការពារ',
 'unprotectthispage' => 'ផ្លាស់ប្ដូរការការពារទំព័រនេះ',
@@ -523,7 +519,7 @@ $1',
 'policy-url' => 'Project:គោលការណ៍',
 'portal' => 'ផតថលសហគមន៍',
 'portal-url' => 'Project:​ផតថលសហគមន៍',
-'privacy' => 'គោលការណ៍​ភាពឯកជន',
+'privacy' => 'គោលការណ៍នៃ​ភាពឯកជន',
 'privacypage' => 'Project:គោលការណ៍ភាពឯកជន',
 
 'badaccess' => 'បញ្ហាច្បាប់អនុញ្ញាត',
@@ -574,7 +570,7 @@ $1',
 'sort-ascending' => 'តម្រៀបតាមលំដាប់ឡើង',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'á\9e¢á\9e\8fá\9f\92á\9e\90á\9e\94á\9e\91',
+'nstab-main' => 'á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9a',
 'nstab-user' => 'ទំព័រអ្នកប្រើប្រាស់',
 'nstab-media' => 'ទំព័រមេឌា',
 'nstab-special' => 'ទំព័រពិសេស',
@@ -637,9 +633,6 @@ $1',
 'querypage-no-updates' => 'ការបន្ទាន់សម័យសម្រាប់ទំព័រនេះគឺមិនអាចធ្វើទៅរួចទេនាពេលឥឡូវទេ។
 
 ទិន្នន័យនៅទីនេះនឹងមិនត្រូវផ្លាស់ប្ដូរថ្មីនាពេលបច្ចុប្បន្នទេ។',
-'wrong_wfQuery_params' => 'ប៉ារ៉ា​មែត្រ​មិន​ត្រឹម​ត្រូវ​ចំពោះ​ wfQuery()<br />
-មុខងារ​៖ $1<br />
-អង្កេត​៖ $2',
 'viewsource' => 'មើល​កូដ',
 'viewsource-title' => 'មើលកូដរបស់ $1',
 'actionthrottled' => 'សកម្មភាពត្រូវបានកម្រិត',
@@ -780,7 +773,7 @@ $2',
 'passwordtooshort' => 'ពាក្យសម្ងាត់ត្រូវ​មាន​យ៉ាងតិចណាស់​ {{PLURAL:$1|១ តួអក្សរ|$1តួអក្សរ}}។',
 'password-name-match' => 'ពាក្យសម្ងាត់ត្រូវតែខុសគ្នាពីអត្តនាមរបស់អ្នក។',
 'password-login-forbidden' => 'ហាមប្រាមមិនអោយប្រើអត្តនាមនិងពាក្យសម្ងាត់នេះ។',
-'mailmypassword' => 'á\9e\95á\9f\92á\9e\89á\9e¾á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\90á\9f\92á\9e\98á\9e¸',
+'mailmypassword' => 'á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8bá\9e\9fá\9e¶á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89',
 'passwordremindertitle' => 'ពាក្យសម្ងាត់បណ្តោះអាសន្នថ្មីសម្រាប់{{SITENAME}}',
 'passwordremindertext' => 'មានអ្នកណាម្នាក់ (ប្រហែលជាអ្នក, ពីអាសយដ្ឋាន IP $1) បានស្នើសុំពាក្យសម្ងាត់ថ្មីមួយពី {{SITENAME}} ($4)។
 ពាក្យសម្ងាត់បណ្ដោះអាសន្នមួយសម្រាប់អ្នកប្រើប្រាស់ "$2" ត្រូវបានប្ដូរទៅជា "$3"។ បើសិនជានេះជាចេតនារបស់អ្នក សូមអ្នកកត់ឈ្មោះចូល​ហើយជ្រើសប្រើពាក្យសម្ងាត់ថ្មី។
@@ -836,7 +829,7 @@ $2',
 'user-mail-no-body' => 'បានព្យាយាមផ្ញើអ៊ីមែលដែលមានខ្លឹមសារទទេឬខ្លីជ្រុល។',
 
 # Change password dialog
-'resetpass' => 'â\80\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aâ\80\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bâ\80\8b',
+'changepassword' => 'á\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8b',
 'resetpass_announce' => 'អ្នកបានកត់ឈ្មោះចូលដោយ​អក្សរកូដ​បណ្តោះអាសន្ន​មួយដែលយើងខ្ញុំបានអ៊ីមែលទៅឱ្យ​។
 
 ដើម្បី​បញ្ចប់​ការកត់ឈ្មោះចូល អ្នកត្រូវតែ​កំណត់​ពាក្យសម្ងាត់ថ្មី​មួយនៅទីនេះ៖',
@@ -859,7 +852,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'កំណត់​ពាក្យសម្ងាត់​សាឡើងវិញ',
 'passwordreset-text-one' => 'បំពេញសំណុំបែបបទនេះដើម្បីស្ដារពាក្យសម្ងាត់របស់អ្នក។',
-'passwordreset-text-many' => '{{PLURAL:$1|á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\98á\9e½á\9e\99á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\85á\9f\86á\9e\8eá\9f\84á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89។}}',
+'passwordreset-text-many' => '{{PLURAL:$1|á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\98á\9e½á\9e\99á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\85á\9f\86á\9e\8eá\9f\84á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\91á\9e\91á\9e½á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\98á\9e½á\9e\99á\9e\8fá\9e¶á\9e\98á\9e\9aá\9e\99á\9f\88á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9b។}}',
 'passwordreset-legend' => 'កំណត់​ពាក្យសម្ងាត់​សាឡើងវិញ',
 'passwordreset-disabled' => 'មុខងារប្ដូរទៅពាក្យសម្ងាត់ដើមត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
 'passwordreset-emaildisabled' => 'មុខងារអ៊ីមែលត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
@@ -1222,17 +1215,15 @@ $2
 'revisiondelete' => 'លុបចេញ / លែងលុបចេញ កំណែនានា',
 'revdelete-nooldid-title' => 'កំណែគោលដៅមិនត្រឹមត្រូវ',
 'revdelete-nooldid-text' => 'អ្នកមិនបានផ្ដល់កំណែគោលដៅសំរាប់អនុវត្តសកម្មភាពនេះ ឬកំណែគោលដៅដែលបានផ្ដល់អោយមិនមាន ឬអ្នកកំពុងព្យាយាមលាក់កំណែបច្ចុប្បន្ន។',
-'revdelete-nologtype-title' => 'មិន​បាន​ឲ្យ​ប្រភេទ​នៃ​កំណត់ហេតុ​',
-'revdelete-nologtype-text' => 'អ្នក​មិន​បាន​ផ្ដល់ប្រភេទរបស់​​កំណត់​ហេតុ​ដើម្បី​អនុវត្ត​សកម្មភាព​នេះ​ទេ។',
-'revdelete-nologid-title' => 'ការ​វាយ​បញ្ចូល​កំណត់ហេតុ​ដែល​គ្មាន​សុពលភាព​',
 'revdelete-no-file' => 'មិនមានឯកសារ​ដែលអ្នកចង់រកទេ។',
 'revdelete-show-file-confirm' => 'តើ​អ្នក​ប្រាកដ​ហើយ​ថា​អ្នក​ចង់​មើល​កំណែ​ប្រែ​ដែល​បាន​លុប​នៃ​ឯកសារ​ "<nowiki>$1</nowiki>" ពី $2 នៅ $3 ?',
 'revdelete-show-file-submit' => 'បាទ/ចាស',
 'revdelete-selected' => "'''{{PLURAL:$2|កំណែប្រែ​ដែលបាន​ជ្រើសយក}}របស់​[[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|ព្រឹត្តិការណ៍​កំណត់​ហេតុ​ដែលបាន​ជ្រើសយក}}:'''",
 'revdelete-suppress-text' => "ការ​ហាមឃាត់​គួរ​ត្រូវ​បាន​អនុវត្តិ​លើ​ករណី​ដូច​ខាង​ក្រោម​នេះ​ប៉ុណ្ណោះ​៖
-* ព័ត៌មាន​ផ្ទាល់​ខ្លួន​ ឯកជន​មិន​សមរម្យ​
-*: ''អាសយដ្ឋាននៃ​គេហដ្ឋាន​​ ​លេខ​ទូរស័ព្ទ និងលេខ​សន្តិសុខ​សង្គម​ជាដើម​''",
+* ព័ត៌មានបង្ខូចកេរ្ដិ៍ឈ្មោះធ្ងន់ធ្ងរ
+* ព័ត៌មាន​ផ្ទាល់​ខ្លួន​មិន​សមរម្យ​
+*: ''អាសយដ្ឋាននៃ​គេហដ្ឋាន​​ ​លេខ​ទូរស័ព្ទ និងលេខ​អត្តសញ្ញាណប័ណ្ឌជាដើម​''",
 'revdelete-legend' => 'ដាក់កំហិតគំហើញ',
 'revdelete-hide-text' => 'បិទបាំងអត្ថបទកំណែប្រែ',
 'revdelete-hide-image' => 'បិទបាំងខ្លឹមសារនៃឯកសារ',
@@ -1254,8 +1245,6 @@ $1",
 'logdelete-failure' => "'''មិន​អាចកំណត់គំហើញនៃ​កំណត់​ហេតុ​​បាន​៖'''
 $1",
 'revdel-restore' => 'ផ្លាស់ប្ដូរគំហើញ',
-'revdel-restore-deleted' => 'កំណែដែលត្រូវបានលុប',
-'revdel-restore-visible' => 'កំណែដែលអាលមើលឃើញ',
 'pagehist' => 'ប្រវត្តិទំព័រ',
 'deletedhist' => 'ប្រវត្តិដែលត្រូវបានលុប',
 'revdelete-hide-current' => 'មាន​កំហុស​ពេល​កំពុង​លាក់​បាំង​វត្ថុ​ដែល​មាន​កាល​បរិច្ឆេទ $2, $1៖ នេះ​គឺ​ជា​កំណែបច្ចុប្បន្ន​។​
@@ -1331,12 +1320,8 @@ $1",
 # 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}}',
@@ -1345,10 +1330,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|លទ្ឋផល|លទ្ឋផល}}​បន្ទាប់​',
 'shown-title' => 'បង្ហាញ $1 {{PLURAL:$1|លទ្ធផល|លទ្ធផល}}ក្នុងមួយទំព័រ',
 'viewprevnext' => 'មើល ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ជម្រើសនានាក្នុងការស្វែងរក',
 'searchmenu-exists' => "* ទំព័រ '''[[$1]]'''",
 'searchmenu-new' => "'''បង្កើតទំព័រ \"[[:\$1]]\" នៅ​លើ​វិគី​នេះ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|រុក​រក​ក្នុង​ទំព័រ​នានា​ជាមួយ​បុព្វបទ​នេះ​]]',
 'searchprofile-articles' => 'ទំព័រ​មាតិកា',
 'searchprofile-project' => 'ជំនួយ និង​ទំព័រ​គម្រោង',
 'searchprofile-images' => 'ពហុ​ព័ត៌មាន',
@@ -1369,21 +1352,16 @@ $1",
 'search-interwiki-default' => 'លទ្ធផលពី$1៖',
 'search-interwiki-more' => '(បន្ថែមទៀត)',
 'search-relatedarticle' => 'ទាក់ទិន',
-'mwsuggest-disable' => 'មិនប្រើសំណើAJAX',
 'searcheverything-enable' => 'ស្វែងរកនៅក្នុងលំហឈ្មោះទាំងអស់',
 'searchrelated' => 'ទាក់ទិន',
 'searchall' => 'ទាំងអស់',
 'showingresults' => "ខាងក្រោមកំពុងបង្ហាញរហូតដល់ {{PLURAL:$1|'''១''' លទ្ឋផល|'''$1''' លទ្ឋផល}} ចាប់ផ្ដើមពីលេខ #'''$2'''។",
 'showingresultsnum' => "កំពុងបង្ហាញ {{PLURAL:$3|'''1''' result|'''$3''' លទ្ឋផល}}ខាងក្រោម ចាប់ផ្ដើមដោយ #'''$2''' ។",
 'showingresultsheader' => "{{PLURAL:$5|លទ្ឋផល '''$1''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''|លទ្ឋផល '''$1 - $2''' ក្នុងចំណោមលទ្ឋផលសរុប '''$3'''}} សម្រាប់ '''$4'''",
-'nonefound' => "'''កំណត់​ចំណាំ​'''៖ តាម​លំនាំ​ដើម មាន​តែ​លំហ​ឈ្មោះ​ខ្លះៗ​ប៉ុណ្ណោះ​ដែល​ត្រូវបាន​ស្វែងរក​។​​
-សូម​សាកប្រើ​បុព្វបទ ''all:''ក្នុង​សំណើ​របស់អ្នក ដើម្បី​ស្វែងរក​មាតិកាទាំងអស់ (រួមបញ្ចូល​ទាំង​ទំព័រ​ពិភាក្សានិងទំព័រគំរូជាដើម) ឬ​ក៏ប្រើ​លំហឈ្មោះដែលចង់រក​​ ជាបុព្វបទ​ក៏បាន​។​",
 'search-nonefound' => 'មិនមានលទ្ធផលណាមួយ​ត្រូវគ្នានឹងសំណើសុំនេះទេ',
-'powersearch' => 'ស្វែងរកថ្នាក់ខ្ពស់',
 'powersearch-legend' => 'ស្វែងរកថ្នាក់ខ្ពស់',
 'powersearch-ns' => 'ស្វែងរកក្នុងលំហឈ្មោះ៖',
 'powersearch-redir' => 'បញ្ជីការបញ្ជូនបន្ត',
-'powersearch-field' => 'ស្វែងរក',
 'powersearch-togglelabel' => 'គូសធីក៖',
 'powersearch-toggleall' => 'ទាំងអស់',
 'powersearch-togglenone' => 'ទទេ',
@@ -1397,7 +1375,6 @@ $1",
 'preferences' => 'ចំណង់ចំណូលចិត្ត',
 'mypreferences' => 'ចំណង់ចំណូលចិត្ត​',
 'prefs-edits' => 'ចំនួនកំណែប្រែ៖',
-'changepassword' => 'ប្តូរពាក្យសម្ងាត់',
 'prefs-skin' => 'សំបក',
 'skin-preview' => 'មើលជាមុន',
 'datedefault' => 'គ្មានចំណូលចិត្ត',
@@ -1421,13 +1398,11 @@ $1",
 ជំរើសទាក់ទិននឹងអ៊ីមែល',
 'prefs-rendering' => 'ការរចនា',
 'saveprefs' => 'រក្សាទុក',
-'resetprefs' => 'លុបចោលបន្លាស់ប្ដូរមិនបានរក្សាទុក',
 'restoreprefs' => 'ស្ដារ​ការកំណត់​ទាំងអស់​ទៅ​លំនាំដើម (គ្រប់ផ្នែកទាំងអស់)',
 'prefs-editing' => 'កំណែប្រែ',
 'rows' => 'ជួរដេក៖',
 'columns' => 'ជួរឈរ៖',
 'searchresultshead' => 'ស្វែងរក',
-'resultsperpage' => 'ចំនួនលទ្ធផលក្នុងមួយទំព័រ៖',
 'stub-threshold' => 'ទំហំអប្បបរមាសំរាប់ដាក់ជាទំរង់<a href="#" class="stub">តំណភ្ជាប់ទៅទំព័រកំប៉ិចកំប៉ុក</a> (គិតជាបៃ)៖',
 'stub-threshold-disabled' => 'មិនប្រើ',
 'recentchangesdays' => 'ចំនួនថ្ងៃបង្ហាញក្នុងទំព័របន្លាស់ប្តូរថ្មីៗ៖',
@@ -1442,7 +1417,6 @@ $1",
 'localtime' => 'ម៉ោងក្នុងស្រុក​៖',
 'timezoneuseserverdefault' => 'តាមការកំនត់ដើមរបស់វិគី ($1)',
 'timezoneuseoffset' => 'ផ្សេងទៀត (បញ្ចូលម៉ោងដោយខ្លួនឯង)',
-'timezoneoffset' => 'ទូទាត់¹​៖',
 'servertime' => 'ម៉ោងម៉ាស៊ីនបម្រើ​៖',
 'guesstimezone' => 'បំពេញពីកម្មវិធីរាវរក',
 'timezoneregion-africa' => 'អាហ្វ្រិក',
@@ -1579,7 +1553,7 @@ $1",
 'right-reupload-own' => 'សរសេរលុបពីលើឯកសារមានស្រាប់ដែលត្រូវបានផ្ទុកឡើងដោយម្ចាស់ដើម',
 'right-reupload-shared' => 'សរសេរលុបពីលើឯកសារនៅក្នុងថតមេឌារួមរបស់វិគីនេះ',
 'right-upload_by_url' => 'ផ្ទុកឡើងឯកសារមួយពីអាសយដ្ឋាន URL មួយ',
-'right-autoconfirmed' => 'á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\8bá\9e\80á\9e\8eá\9f\92á\9e\8aá\9e¶á\9e\9bá\9e\80á\9e¶á\9e\9aá\9e\96á\9e¶á\9e\9aá\9e\93á\9e¶á\9e\93á\9e',
+'right-autoconfirmed' => 'á\9e\98á\9e·á\9e\93á\9e\91á\9e\91á\9e½á\9e\9bá\9e\9aá\9e\84á\9e¥á\9e\91á\9f\92á\9e\92á\9e·á\9e\96á\9e\9bá\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\80á\9f\86á\9e á\9e·á\9e\8fá\9e\9bá\9f\92á\9e\94á\9e¿á\9e\93á\9e\8fá\9e¶á\9e\98IP',
 'right-bot' => 'ទុកជាដំណើរការស្វ័យប្រវត្តិមួយ',
 'right-nominornewtalk' => 'មិនបង្ហាញសាររំលឹក ពេលធ្វើកំនែតិចតួចនៅលើទំព័រពិភាក្សានានា',
 'right-writeapi' => 'ការប្រើប្រាស់ API សម្រាប់​សរសេរ',
@@ -1682,7 +1656,7 @@ $1",
 'nchanges' => '$1 {{PLURAL:$1|បន្លាស់ប្ដូរ|បន្លាស់ប្ដូរ}}',
 'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|គិតតាំងពីការបើកមើលចុងក្រោយ}}',
 'enhancedrc-history' => 'ប្រវត្តិ',
-'recentchanges' => 'á\9e\94á\9e\93á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aâ\80\8bថ្មីៗ',
+'recentchanges' => 'á\9e\94á\9f\86á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8aá\9e¼á\9e\9aថ្មីៗ',
 'recentchanges-legend' => 'ជម្រើសនានា​ សម្រាប់ការបង្ហាញបន្លាស់ប្ដូរថ្មីៗ',
 'recentchanges-summary' => 'តាមដានរាល់បំលាស់ប្ដូរថ្មីៗបំផុតចំពោះវិគីនៅលើទំព័រនេះ។',
 'recentchanges-feed-description' => 'តាមដាន​បន្លាស់ប្ដូរថ្មីៗ​បំផុត​នៃ​វិគី​នេះក្នុង​មតិព័ត៌មាន​នេះ​។',
@@ -1690,13 +1664,14 @@ $1",
 'recentchanges-label-minor' => 'នេះជាការកែប្រែតិចតួចមួយប៉ុណ្ណោះ',
 'recentchanges-label-bot' => 'ការកែប្រែនេះត្រូវបានធ្វើឡើងដោយរូបយន្ត',
 'recentchanges-label-unpatrolled' => 'ការកែប្រែនេះមិនទាន់ត្រូវបានល្បាតទេ',
-'recentchanges-legend-newpage' => '$1 - ទំព័រថ្មី',
-'rcnote' => "ខាងក្រោម​នេះ​ជា​{{PLURAL:$1|១បន្លាស់ប្ដូរ|'''$1'''បន្លាស់ប្ដូរ}}​ចុងក្រោយក្នុងរយៈពេល​{{PLURAL:$2|ថ្ងៃ|'''$2'''ថ្ងៃ}}​ចុងក្រោយគិតត្រឹម$5 $4 ។",
+'recentchanges-label-plusminus' => 'ទំហំទំព័រត្រូវបានផ្លាស់ប្ដូរគិតជាចំនួនបៃ',
+'recentchanges-legend-heading' => "''កំណត់សម្គាល់៖'''",
+'recentchanges-legend-newpage' => '(មើលផងដែរនូវ [[Special:NewPages|បញ្ជីទំព័រថ្មី]])',
 'rcnotefrom' => "ខាងក្រោមនេះជាបន្លាស់ប្ដូរនានាគិតចាប់តាំងពី '''$2''' (បង្ហាញអតិបរមាចំនួន '''$1''')។",
 'rclistfrom' => 'បង្ហាញបន្លាស់ប្ដូរថ្មីៗចាប់តាំងពី $1',
 'rcshowhideminor' => '$1កំណែប្រែ​តិចតួច',
 'rcshowhidebots' => '$1រូបយន្ត',
-'rcshowhideliu' => '$1á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9b',
+'rcshowhideliu' => '$1á\9e¢á\9f\92á\9e\93á\9e\80á\9e\94á\9f\92á\9e\9aá\9e¾á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\9fá\9f\8bá\9e\8aá\9f\82á\9e\9bá\9e\94á\9e¶á\9e\93á\9e\85á\9e»á\9f\87á\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\9aá\9e½á\9e\85',
 'rcshowhideanons' => '$1អ្នកប្រើប្រាស់អនាមិក',
 'rcshowhidepatr' => '$1កំណែប្រែដែលបានល្បាត',
 'rcshowhidemine' => '$1កំណែប្រែរបស់ខ្ញុំ',
@@ -2150,10 +2125,8 @@ $1',
 'protectedpages' => 'ទំព័រដែលត្រូវបានការពារ',
 'protectedpages-indef' => 'សំរាប់តែការការពារដែលមិនកំណត់ប៉ុណ្ណោះ',
 'protectedpages-cascade' => 'សំរាប់ការការពារជាថ្នាក់ប៉ុណ្ណោះ​',
-'protectedpagestext' => 'ទំព័រដូចតទៅនេះត្រូវបានការពារមិនឱ្យប្ដូរទីតាំងឬកែប្រែ',
 'protectedpagesempty' => '​មិន​មាន​ទំព័រ​ណា​ដែល​ត្រូវបាន​ការពារ ជាមួយប៉ារ៉ាម៉ែត​ទាំងនេះទេ។',
 'protectedtitles' => 'ចំណងជើងត្រូវបានការពារ',
-'protectedtitlestext' => 'ចំណងជើងទំព័រត្រូវបានការពារមិនឱ្យបង្កើត',
 'protectedtitlesempty' => 'មិន​មាន​ចំណងជើង​ណា​ដែល​ត្រូវ​បាន​ការពារ​ជាមួយនឹង​ប៉ារ៉ាម៉ែត​ទាំងនេះ​ទេ​នាពេលថ្មីៗនេះ។',
 'listusers' => 'បញ្ជីអ្នកប្រើប្រាស់',
 'listusers-editsonly' => 'បង្ហាញតែអ្នកប្រើប្រាស់ដែលបានកែប្រែអត្ថបទប៉ុណ្ណោះ',
@@ -2208,9 +2181,6 @@ $1',
 'allpagesto' => 'បង្ហាញទំព័របញ្ជប់ដោយ៖',
 'allarticles' => 'គ្រប់ទំព័រ',
 'allinnamespace' => 'គ្រប់ទំព័រ(ប្រភេទ$1)',
-'allnotinnamespace' => 'គ្រប់ទំព័រ(ក្រៅពីប្រភេទ$1)',
-'allpagesprev' => 'មុន',
-'allpagesnext' => 'បន្ទាប់',
 'allpagessubmit' => 'ទៅ',
 'allpagesprefix' => 'បង្ហាញទំព័រដែលចាប់ផ្ដើមដោយ ៖',
 'allpagesbadtitle' => 'ចំណងជើង​ទំព័រ​ដែល​ត្រូវ​បាន​ផ្តល់ឱ្យ​គឺ​គ្មាន​សុពលភាព​ឬក៏​មាន​បុព្វបទ​ដែល​មាន​អន្តរភាសា​ឬអ​ន្តរវីគី​។ ប្រហែលជា​វា​មាន​អក្សរ​មួយ​ឬ​ច្រើន ដែលគេហាមមិនឱ្យប្រើ​នៅក្នុង​ចំណងជើង​។',
@@ -2375,7 +2345,7 @@ $PAGEINTRO $NEWPAGE
 អ៊ីមែល៖ $PAGEEDITOR_EMAIL
 វិគី៖ $PAGEEDITOR_WIKI
 
-នឹងមិនមាន​ការផ្ដល់ដំណឹង​ជាលាយលក្សណ៍អក្សរ​ផ្សេងទៀតពេលមានសកម្មភាពលើសពីនេះទេ លើកលែងតែ​អ្នកចូលមើល​ទំព័រនេះរួចសិន។ អ្នកក៏អាចកំណត់ឡើងវិញអំពីការផ្ដល់ដំណឹងសម្រាប់​ទំព័រដែលអ្នកកំពុងតាមដានផងដែរ។
\9e\93á\9e¹á\9e\84á\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93â\80\8bá\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\8aá\9f\86á\9e\8eá\9e¹á\9e\84â\80\8bá\9e\87á\9e¶á\9e\9bá\9e¶á\9e\99á\9e\9bá\9e\80á\9f\92á\9e\9fá\9e\8eá\9f\8dá\9e¢á\9e\80á\9f\92á\9e\9fá\9e\9aâ\80\8bá\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\91á\9f\80á\9e\8fá\9e\96á\9f\81á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\9bá\9e¾á\9e\9fá\9e\96á\9e¸á\9e\93á\9f\81á\9f\87á\9e\91á\9f\81 á\9e\9bá\9e¾á\9e\80á\9e\9bá\9f\82á\9e\84á\9e\8fá\9f\82â\80\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e¼á\9e\9bá\9e\98á\9e¾á\9e\9bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\8aá\9f\84á\9e\99á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\9aá\9e½á\9e\85á\9e\9fá\9e·á\9e\93á\9f\94 á\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\8fá\9e¢á\9e¶á\9e\85á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89á\9e¢á\9f\86á\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\8aá\9f\86á\9e\8eá\9e¹á\9e\84á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\86á\9e\96á\9e»á\9e\84á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93á\9e\95á\9e\84á\9e\8aá\9f\82á\9e\9aá\9f\94
 
 ពីប្រព័ន្ធផ្តល់ដំណឹង {{SITENAME}}
 
@@ -2420,10 +2390,12 @@ $UNWATCHURL
 'deletecomment' => 'មូលហេតុ៖',
 'deleteotherreason' => 'មូលហេតុបន្ថែមផ្សេងទៀត៖',
 'deletereasonotherlist' => 'មូលហេតុផ្សេងទៀត',
-'deletereason-dropdown' => '*ហេតុផលទូទៅ
-** សំណើរបស់អ្នកនិពន្ធ
+'deletereason-dropdown' => '* មូលហេតុលុបចោលទូទៅ
+** ស្ប៉ាម
+** អំពើបំផ្លាញទ្រព្យសម្បត្តិឯកជនឬសាធារណៈ
 ** បំពានកម្មសិទ្ធិបញ្ញា
-** អំពើបំផ្លាញទ្រព្យសម្បត្តិឯកជនឬសាធារណៈ',
+** សំណើរបស់អ្នកនិពន្ធ
+** ការបញ្ជូនបន្តដែលខូច',
 'delete-edit-reasonlist' => 'ពិនិត្យផ្ទៀងផ្ទាត់ហេតុផលនៃការលុប',
 'delete-toobig' => 'ទំព័រនេះមានប្រវត្តិកែប្រែធំលើសពី $1 {{PLURAL:$1|កំណែ|កំណែ}}។
 
@@ -2547,7 +2519,6 @@ $UNWATCHURL
 'undeletebtn' => 'ស្ដារឡើងវិញ',
 'undeletelink' => 'មើល​/​ស្តារឡើងវិញ',
 'undeleteviewlink' => 'មើល',
-'undeletereset' => 'ធ្វើឱ្យដូចដើមវិញ',
 'undeleteinvert' => 'ក្រៅពីនោះ',
 'undeletecomment' => 'មូលហេតុ៖',
 'undeletedrevisions' => 'បានស្តារឡើងវិញនូវ{{PLURAL:$1|១កំណែ|$1កំណែ}}',
@@ -2636,7 +2607,6 @@ $1',
 'block' => 'ដាក់ការហាមឃាត់លើអ្នកប្រើប្រាស់',
 'unblock' => 'ដកការហាមឃាត់លើអ្នកប្រើប្រាស់',
 'blockip' => 'ដាក់ការហាមឃាត់លើអ្នកប្រើប្រាស់',
-'blockip-title' => 'ដាក់ការហាមឃាត់លើអ្នកប្រើប្រាស់',
 'blockip-legend' => 'ដាក់ការហាមឃាត់លើអ្នកប្រើប្រាស់',
 'blockiptext' => 'សូម​ប្រើប្រាស់​សំណុំ​បែបបទ​ខាងក្រោម​ដើម្បី​ហាមឃាត់ការសរសេរ​ពី​អាសយដ្ឋាន IP ឬ​ឈ្មោះ​អ្នកប្រើប្រាស់ណាមួយ​។
 ការ​ធ្វើ​បែបនេះ​គួរតែ​ធ្វើឡើង​ក្នុង​គោលបំណង​បង្ការ​ការប៉ុនប៉ង​បំផ្លាញ(vandalism)ដូច​ដែល​មាន​ចែង​ក្នុង[[{{MediaWiki:Policy-url}}|គោលការណ៍]]។
@@ -2644,7 +2614,6 @@ $1',
 'ipadressorusername' => 'អាសយដ្ឋានIP ឬអត្តនាម៖',
 'ipbexpiry' => 'រយៈពេលផុតកំណត់៖',
 'ipbreason' => 'មូលហេតុ៖',
-'ipbreasonotherlist' => 'មូលហេតុផ្សេងទៀត',
 'ipbreason-dropdown' => '*មូលហេតុហាមឃាត់ជាទូទៅ
 ** ដាក់បញ្ចូលព័ត៌មានមិនពិត
 ** ដកខ្លឹមទាំងស្រុងពីទំព័រនានា
@@ -2659,8 +2628,6 @@ $1',
 'ipbsubmit' => 'ដាក់ការហាមឃាត់លើអ្នកប្រើប្រាស់នេះ',
 'ipbother' => 'រយៈពេលផ្សេងទៀត៖',
 'ipboptions' => '២ម៉ោង:2 hours,១ថ្ងៃ:1 day,៣ថ្ងៃ:3 days,១សប្តាហ៍:1 week,២សប្តាហ៍:2 weeks,១ខែ:1 month,៣ខែ:3 months,៦ខែ:6 months,១ឆ្នាំ:1 year,គ្មានកំណត់:infinite',
-'ipbotheroption' => 'ផ្សេងៗទៀត',
-'ipbotherreason' => 'មូលហេតុ(ផ្សេងទៀតឬបន្ថែម)៖',
 'ipbhidename' => 'លាក់​ឈ្មោះ​អ្នក​ប្រើ​ប្រាស់​ពី​កំណែ​ប្រែ​នឹង​បញ្ជី​',
 'ipbwatchuser' => 'តាមដានទំព័រអ្នកប្រើប្រាស់និងទំព័រពិភាក្សារបស់អ្នកប្រើប្រាស់នេះ។',
 'ipb-disableusertalk' => 'ហាមអ្នកប្រើប្រាស់នេះមិនអោយធ្វើការកែប្រែទំព័រពិភាក្សារបស់ខ្លួនពេលត្រូវបានហាមឃាត់។',
@@ -2738,7 +2705,6 @@ $1',
 'sorbs_create_account_reason' => 'អាសយដ្ឋាន IP របស់អ្នកមានឈ្មោះក្នុងបញ្ជីប្រុកស៊ី(proxy)ចំហ នៅក្នុង DNSBL របស់ {{SITENAME}}។
 
 អ្នកមិនអាចបង្កើតគណនីបានទេ',
-'cant-block-while-blocked' => 'អ្នកមិនអាចដាក់ការហាមឃាត់លើអ្នកប្រើប្រាស់ដទៃបានទេ ពេលកំពុងជាប់ការហាមឃាត់នោះ។',
 
 # Developer tools
 'lockdb' => 'ចាក់សោមូលដ្ឋានទិន្នន័យ',
@@ -2765,15 +2731,15 @@ $1',
 # Move page
 'move-page' => 'ប្តូរទីតាំង $1',
 'move-page-legend' => 'ប្តូរទីតាំងទំព័រ',
-'movepagetext' => "ការប្រើប្រាស់​ទម្រង់​ខាងក្រោម​នឹង​ប្តូរ​ឈ្មោះ​ទំព័រ ប្តូរទីតាំង​គ្រប់​ប្រវត្តិ​របស់​វា​ទៅ​ឈ្មោះថ្មី​
\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84â\80\8bá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\80á\9f\92á\9e\9bá\9e¶á\9e\99á\9e\87á\9e¶â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fទៅ​ចំណងជើងថ្មី​។
\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\91á\9f\85â\80\8bá\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84 á\9e\93á\9f\83â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\98á\9e·á\9e\93â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9câ\80\8bá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9a; á\9e\9fá\9e¼á\9e\98â\80\8bá\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99á\9e\98á\9e¾á\9e\9b á\9e\80á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9f á\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e¾á\9e\8f á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fá\9e\91á\9f\92á\9e\9cá\9f\81 á\9e¬ á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fá\9e\94á\9e¶á\9e\80á\9f\8b á\9f\94
\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82á\9e\92á\9e¶á\9e\93á\9e¶á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\80á\9e\8a á\9e\90á\9e¶â\80\8bá\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\84á\9f\87 á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\9fá\9f\86á\9e\8aá\9f\85â\80\8bá\9e\91á\9f\85â\80\8bá\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\93á\9f\92á\9e\98á\9e\8f​។
+'movepagetext' => "ការប្រើប្រាស់សំណុំបែបបទខាងក្រោម​នឹង​ប្តូរ​ឈ្មោះ​ទំព័រ និងប្តូរទីតាំង​ប្រវត្តិទាំងអស់​របស់​វា​ទៅ​ឈ្មោះថ្មី​នោះ
\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84â\80\8bá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\80á\9f\92á\9e\9bá\9e¶á\9e\99á\9e\87á\9e¶â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fទៅ​ចំណងជើងថ្មី​។
\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\9fá\9e\98á\9f\90á\9e\99á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\8aá\9f\82á\9e\9bá\9e\9fá\9f\86á\9e\8aá\9f\85á\9e\91á\9f\85á\9e\9aá\9e\80á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84á\9e\85á\9e¶á\9e\9fá\9f\8bá\9e\8aá\9f\84á\9e\99á\9e\9fá\9f\92á\9e\9cá\9f\90á\9e\99á\9e\94á\9f\92á\9e\9aá\9e\9cá\9e\8fá\9f\92á\9e\8fá\9e·á\9f\94 á\9e\94á\9e¾á\9e\9fá\9e·á\9e\93á\9e\87á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fá\9e\98á\9e·á\9e\93á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\94á\9f\82á\9e\94á\9e\93á\9f\81á\9f\87 á\9e\9fá\9e¼á\9e\98á\9e\80á\9e»á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99 [[Special:DoubleRedirects|á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\91á\9f\92á\9e\9cá\9f\81á\9e\8aá\9e\84]] á\9e\93á\9e·á\9e\84[[Special:BrokenRedirects|á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\8aá\9f\82á\9e\9bá\9e\8aá\9e¶á\9e\85á\9f\8b]]á\9f\94 
\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e¶á\9e\93á\9e\97á\9e¶á\9e\9aá\9f\88á\9e\92á\9f\92á\9e\9cá\9e¾á\9e¢á\9f\84á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\80á\9e\8aá\9e\90á\9e¶á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\84á\9f\87á\9e\93á\9f\85á\9e\8fá\9f\82á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\9fá\9f\86á\9e\8aá\9f\85â\80\8bá\9e\91á\9f\85â\80\8bá\9e\80á\9e¶á\9e\93á\9f\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85á\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9c​។
 
-ទំព័រចាស់ នឹង'''មិន'''ត្រូវ បានប្តូរទីតាំង កាលបើ​មានទំព័រ​ក្នុងចំណងជើងថ្មី​។ បើគ្មានទំព័រ​ក្នុងចំណងជើងថ្មី, ទំព័ចាស់​នឹង​ទទេ ឬ ជា​ទំព័រប្តូរទិស និង​គ្មានប្រវត្តិកំណែប្រែ​។ វាមានន័យថា អ្នកអាចប្តូរឈ្មោះទំព័រ​ទៅទីតាំងដើម ករណី​អ្នកបានធ្វើកំហុស, និង ដែលអ្នកមិនអាច សរសេរជាន់ពីលើ ទំព័រមានស្រាប់​។
+ទំព័រចាស់នឹង'''មិន'''ត្រូវ បានប្តូរទីតាំង កាលបើ​មានទំព័រ​ក្នុងចំណងជើងថ្មី​រួចហើយ លើកលែងតែក្នុងករណីទំព័រ​ក្នុងចំណងជើងថ្មីជា​ទំព័របញ្ជូនបន្តហើយ​គ្មានប្រវត្តិកែប្រែពីមុន។ វាមានន័យថា អ្នកអាចប្តូរឈ្មោះទំព័រ​ទៅទីតាំងដើម ករណី​អ្នកបានធ្វើខុសដោយអចេនតនា ហើយអ្នកមិនអាចសរសេរជាន់ពីលើ ទំព័រមានស្រាប់​។
 
 '''ប្រយ័ត្ន!'''
-វាអាចជា បំលាស់ប្តូរដល់ឫសគល់ និង​មិននឹកស្មានជាមុន ចំពោះ​ទំព័រប្រជាប្រិយ​។ អ្នកត្រូវតែ​ដឹងប្រាកដ​អំពី​ផលវិបាកទាំងអស់ មុននឹង​បន្តទង្វើនេះ​។",
+វាអាចជាបន្លស់ប្តូរដល់ឫសគល់និង​មិននឹកស្មានជាមុន សម្រាប់​ទំព័រប្រជាប្រិយ​។ អ្នកត្រូវតែ​ដឹងប្រាកដ​អំពី​ផលវិបាកទាំងអស់ មុននឹង​បន្តទង្វើនេះ​។",
 'movepagetalktext' => "ទំព័រសហពិភាក្សាបើមាន នឹងត្រូវបានប្តូរទៅឈ្មោះ​ថ្មី​ជាមួយគ្នា​ដោយ​ស្វ័យប្រវត្តិ '''លើកលែងតែ៖'''
 *ទំព័រពិភាក្សាមិនទទេនិងមានរួចរាល់ក្រោមឈ្មោះថ្មី ឬ
 *អ្នក​ដោះប្រអប់ធីក​ខាងក្រោម។
@@ -2781,7 +2747,6 @@ $1',
 ក្នុង​ករណី​ទាំង​នោះ អ្នក​នឹង​ត្រូវតែ​ប្តូរឈ្មោះ​ទំព័រ​ឬ​បញ្ចូលរួមគ្នា​បើ​អ្នក​ចង់។",
 'movearticle' => 'ប្ដូរទីតាំងទំព័រ៖',
 'moveuserpage-warning' => "'''ប្រយ័ត្ន៖''' អ្នកបំរុងនឹងប្ដូរទីតាំងទំព័រអ្នកប្រើប្រាស់មួយហើយ។ សូមសំគាល់ថា ទំព័រនឹងត្រូវបានប្ដូរទីតាំង ក៏ប៉ុន្តែអ្នកប្រើប្រាស់នឹង''មិន''ត្រូវបានប្ដូរឈ្មោះទេ។",
-'movenologin' => 'មិនទាន់កត់ឈ្មោះចូលទេ',
 'movenologintext' => 'អ្នក​ត្រូវតែ​ជា​អ្នកប្រើប្រាស់​ដែល​បាន​ចុះឈ្មោះ ហើយបាន [[Special:UserLogin|កត់ឈ្មោះចូល]] ដើម្បីប្ដូរទីតាំងទំព័រមួយ។',
 'movenotallowed' => 'អ្នកមិនត្រូវបាន​អនុញ្ញាត​ឱ្យ​ប្តូរទីតាំងទំព័រ​ទេ។',
 'movenotallowedfile' => 'អ្នកគ្មានការអនុញ្ញាតអោយប្ដូរទីតាំងឯកសារនានាទេ។',
@@ -2797,8 +2762,6 @@ $1',
 'articleexists' => 'ទំព័រដែលមានឈ្មោះបែបនេះមានរួចហើយ ឬ ឈ្មោះដែលអ្នកបានជ្រើសរើសមិនត្រឹមត្រូវ។
 សូមជ្រើសរើសឈ្មោះមួយផ្សេងទៀត។',
 'cantmove-titleprotected' => 'អ្នកមិនអាច​ប្តូទីតាំង ទំព័រ​ ទៅទីតាំងនេះ, ព្រោះ ចំណងជើងថ្មី បានត្រូវការពារ ចំពោះការបង្កើតវា',
-'talkexists' => "'''ទំព័រ ខ្លួនវា បានត្រូវប្ដូរទីតាំង ដោយជោគជ័យ, ប៉ុន្តែ ទំព័រពិភាក្សា មិនអាចត្រូវបាន ប្ដូរទីតាំង ព្រោះ នៅមាន មួយទំព័រពិភាក្សា នៅ ចំណងជើងថ្មី  ។ សូម បញ្ចូលរួមគ្នា ពួកវា ដោយដៃ ។'''",
-'movedto' => 'បានប្ដូរទីតាំងទៅ',
 'movetalk' => 'ប្ដូរទីតាំងទំព័រសហពិភាក្សា',
 'move-subpages' => 'ប្តូរទីតាំង​គ្រប់​ទំព័ររង (ទៅ $1)',
 'move-talk-subpages' => 'ប្តូរទីតាំង​គ្រប់​ទំព័ររង​នៃ​ទំព័រ​ពិភាក្សា (ទៅ $1)',
@@ -2966,7 +2929,7 @@ $1',
 'tooltip-t-contributions' => 'បង្ហាញបញ្ជីរួមចំណែករបស់អ្នកប្រើប្រាស់នេះ',
 'tooltip-t-emailuser' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើប្រាស់នេះ',
 'tooltip-t-upload' => 'ឯកសារផ្ទុកឡើង',
-'tooltip-t-specialpages' => 'á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\81á\9e\9fá\9f\97á\9e\91á\9e¶á\9f\86á\9e\84á\9e¢á\9e\9fá\9f\8b',
+'tooltip-t-specialpages' => 'á\9e\94á\9e\89á\9f\92á\9e\87á\9e¸á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\81á\9e\9fá\9f\97á\9e\91á\9e¶á\9f\86á\9e\84á\9e\98á\9e¼á\9e\9b',
 'tooltip-t-print' => 'ទម្រង់សម្រាប់បោះពុម្ភរបស់ទំព័រនេះ',
 'tooltip-t-permalink' => 'តំណភ្ជាប់អចិន្ត្រៃយ៍ដែលភ្ជាប់មកកំណែនៃទំព័រនេះ',
 'tooltip-ca-nstab-main' => 'មើលទំព័រមាតិកា',
@@ -3142,7 +3105,7 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 នាទី|$1 នាទី}}',
 'hours' => '{{PLURAL:$1|$1 ម៉ោង|$1 ម៉ោង}}',
 'days' => '{{PLURAL:$1|$1 ថ្ងៃ|$1 ថ្ងៃ}}',
-'weeks' => '{{PLURAL: $1|$1 សប្តាហ៍|$1 សប្តាហ៍}}',
+'weeks' => '{{PLURAL:$1|$1 សប្តាហ៍|$1 សប្តាហ៍}}',
 'months' => '{{PLURAL:$1|$1 ខែ|$1 ខែ}}',
 'years' => '{{PLURAL:$1|$1 ឆ្នាំ|$1 ឆ្នាំ}}',
 'ago' => '$1 មុន',
@@ -3442,15 +3405,10 @@ $1',
 'exif-urgency-high' => 'ខ្ពស់ ($1)',
 'exif-urgency-other' => 'តាមការកំណត់របស់អ្នកប្រើប្រាស់ ($1)',
 
-# External editor support
-'edit-externally' => 'កែប្រែ​ឯកសារ​នេះដោយប្រើប្រាស់​កម្មវិធី​ខាងក្រៅ',
-'edit-externally-help' => '(សូមមើល[https://www.mediawiki.org/wiki/Manual:External_editors ការណែនាំ​អំពី​ការ​ប្រើប្រាស់​]សម្រាប់​​ព័ត៌មាន​បន្ថែម)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ទាំងអស់',
 'namespacesall' => 'ទាំងអស់',
 'monthsall' => 'ទាំងអស់',
-'limitall' => 'ទាំងអស់​',
 
 # Email address confirmation
 'confirmemail' => 'បញ្ជាក់ទទួលស្គាល់អាសយដ្ឋានអ៊ីមែល',
@@ -3477,7 +3435,6 @@ Mailer បាន​ត្រឡប់​មក​វិញ៖ $1',
 'confirmemail_needlogin' => 'អ្នកត្រូវការ$1ដើម្បីបញ្ជាក់ទទួលស្គាល់អាសយដ្ឋានអ៊ីមែលរបស់អ្នក។',
 'confirmemail_success' => 'អាសយដ្ឋានអ៊ីមែលរបស់អ្នកត្រូវបានបញ្ជាក់ទទួលស្គាល់ហើយ។ ពេលនេះអ្នកអាច[[Special:UserLogin|កត់ឈ្មោះចូល]] និងចូលរួមសប្បាយរីករាយជាមួយវិគីបានហើយ។',
 'confirmemail_loggedin' => 'អាសយដ្ឋានអ៊ីមែលរបស់អ្នកត្រូវបានបញ្ជាក់ទទួលស្គាល់ហើយនាពេលនេះ។',
-'confirmemail_error' => 'រក្សាទុក ​ការបញ្ជាក់ទទួលស្គាល់ របស់អ្នក មានបញ្ហា ។',
 'confirmemail_subject' => 'ការបញ្ជាក់ទទួលស្គាល់អាសយដ្ឋានអ៊ីមែល{{SITENAME}}',
 'confirmemail_body' => 'នរណាម្នាក់ ប្រហែលជាអ្នកពីអាសយដ្ឋានIP $1,
 បានចុះបញ្ជីគណនី "$2" ជាមួយនឹងអាសយដ្ឋានអ៊ីមែលនេះនៅលើ{{SITENAME}}។
@@ -3508,7 +3465,7 @@ $5
 'confirmemail_body_set' => 'នរណាម្នាក់ ប្រហែលជាខ្លួនអ្នកផ្ទាល់ មកពីអាស័យដ្ឋានIP $1,
 បានដាក់ភ្ជាប់អាស័យដ្ឋានអ៊ីមែលរបស់គណនី "$2" ជាមួយនឹងអាស័យដ្ឋានអ៊ីមែលនេះនៅលើ{{SITENAME}}។
 
\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\96á\9e·á\9e\8fá\9e\87á\9e¶á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\95á\9f\92á\9e\91á\9e¶á\9e\9bá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9f\82á\9e\93 á\9e\93á\9e·á\9e\84á\9e\8aá\9f\86á\9e\8eá\9e¾á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84{{SITENAME}}á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89
\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\96á\9e·á\9e\8fá\9e\87á\9e¶á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\95á\9f\92á\9e\91á\9e¶á\9e\9bá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9f\82á\9e\93 á\9e\93á\9e·á\9e\84á\9e\94á\9e¾á\9e\80á\9e\8aá\9f\86á\9e\8eá\9e¾á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84{{SITENAME}}
 សូមបើកតំណភ្ជាប់ខាងក្រោមនេះក្នុងកម្មវិធីរាយរកអ៊ីនធើណិតរបស់អ្នក៖
 
 $3
@@ -3553,6 +3510,9 @@ $5
 'imgmultigo' => 'ទៅ!',
 'imgmultigoto' => 'ទៅកាន់ទំព័រ$1',
 
+# Language selector for translatable SVGs
+'img-lang-go' => 'ទៅ',
+
 # Table pager
 'ascending_abbrev' => 'លំដាប់ឡើង',
 'descending_abbrev' => 'លំដាប់ចុះ',
@@ -3636,14 +3596,29 @@ $5
 'version-hook-name' => 'ឈ្មោះ​ Hook',
 'version-hook-subscribedby' => 'បានជាវ ជាប្រចាំ ដោយ',
 'version-version' => '(កំណែ $1)',
-'version-license' => 'អាជ្ញាប័ណ្ណ',
+'version-license' => 'អាជ្ញាបណ្ណ មេឌាវិគី',
+'version-ext-license' => 'អាជ្ញាបណ្ណ',
+'version-ext-colheader-version' => 'កំណែ',
+'version-ext-colheader-license' => 'អាជ្ញាបណ្ណ',
+'version-ext-colheader-description' => 'ការពិពណ៌នា',
+'version-ext-colheader-credits' => 'អ្នកនិពន្ធ',
+'version-license-title' => 'អាជ្ញាបណ្ណសម្រាប់ $1',
 'version-poweredby-credits' => "វិគីនេះឧបត្ថម្ភដោយ '''[https://www.mediawiki.org/ មេឌាវិគី]''', រក្សាសិទ្ធ © ២០០១-$1 $2។",
 'version-poweredby-others' => 'អ្នកដទៃទៀត',
+'version-poweredby-translators' => 'អ្នកបកប្រែ translatewiki.net',
 'version-software' => 'ផ្នែកទន់​ដែល​បានដំឡើង',
 'version-software-product' => 'ផលិតផល',
 'version-software-version' => 'កំណែ',
 'version-entrypoints-header-url' => 'URL',
 
+# Special:Redirect
+'redirect-submit' => 'ទៅ',
+'redirect-value' => 'តម្លៃ៖',
+'redirect-user' => 'អត្តលេខអ្នកប្រើប្រាស់',
+'redirect-page' => 'អត្តលេខទំព័រ',
+'redirect-file' => 'ឈ្មោះឯកសារ',
+'redirect-not-exists' => 'តម្លៃរ​រកមិនឃើញ​',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'ស្វែងរកឯកសារដូចគ្នាបេះបិទ',
 'fileduplicatesearch-legend' => 'ស្វែងរកឯកសារដូចគ្នាបេះបិទ',
@@ -3657,8 +3632,7 @@ $5
 # Special:SpecialPages
 'specialpages' => 'ទំព័រ​ពិសេស​ៗ',
 'specialpages-note' => '* ទំព័រពិសេសៗធម្មតា។
-* <span class="mw-specialpagerestricted">ទំព័រពិសេសៗដែលមានការដាក់កំហិត។</span>
-* <span class="mw-specialpagecached">ទំព័រពិសេសៗសំរាប់រក្សាទុក។</span>',
+* <span class="mw-specialpagerestricted">ទំព័រពិសេសៗដែលមានការដាក់កំហិត។</span>',
 'specialpages-group-maintenance' => 'របាយការណ៍នានាអំពីតំហែទាំ',
 'specialpages-group-other' => 'ទំព័រពិសេសៗផ្សេងៗទៀត',
 'specialpages-group-login' => 'កត់ឈ្មោះចូល / បង្កើតគណនី',
@@ -3685,13 +3659,15 @@ $5
 'tags-tag' => 'ឈ្មោះ​ស្លាក',
 'tags-display-header' => 'Appearance លើ​បញ្ជី​បំលាស់​ប្ដូរ​',
 'tags-description-header' => 'បរិយាយពេញលេញ​នៃអត្ថន័យ​',
+'tags-active-header' => 'សកម្ម?',
 'tags-hitcount-header' => 'បំលាស់​ប្ដូរ​ដែលមានស្លាក​',
+'tags-active-yes' => 'បាទ/ចាស',
+'tags-active-no' => 'ទេ',
 'tags-edit' => 'កែប្រែ',
 'tags-hitcount' => '$1 {{PLURAL:$1|បំលាស់ប្ដូរ|បំលាស់ប្ដូរ}}',
 
 # Special:ComparePages
 'comparepages' => 'ប្រៀបធៀបទំព័រ',
-'compare-selector' => 'ប្រៀបធៀបកំណែទំព័រ',
 'compare-page1' => 'ទំព័រ ១',
 'compare-page2' => 'ទំព័រ ២',
 'compare-rev1' => 'កំណែ ១',
@@ -3794,7 +3770,7 @@ $5
 'duration-minutes' => '$1 {{PLURAL:$1|នាទី|នាទី}}',
 'duration-hours' => '$1 {{PLURAL:$1|ម៉ោង|ម៉ោង}}',
 'duration-days' => '$1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}}',
-'duration-weeks' => '$1 {{PLURAL: $1|សប្តាហ៍|សប្តាហ៍}}',
+'duration-weeks' => '$1 {{PLURAL:$1|សប្តាហ៍|សប្តាហ៍}}',
 'duration-years' => '$1 {{PLURAL:$1|ឆ្នាំ|ឆ្នាំ}}',
 'duration-decades' => '$1 {{PLURAL:$1|ទសវត្សរ៍|ទសវត្សរ៍}}',
 'duration-centuries' => '$1 {{PLURAL:$1|សតវត្សរ៍|សតវត្សរ៍}}',
index c8ff643..17e2f71 100644 (file)
@@ -9,6 +9,7 @@
  *
  * @author Akoppad
  * @author Ashwath Mattur <ashwatham@gmail.com> http://en.wikipedia.org/wiki/User:Ashwatham
+ * @author Dimension10
  * @author Dipin
  * @author HPN
  * @author Hari Prasad Nadig <hpnadig@gmail.com> http://en.wikipedia.org/wiki/User:Hpnadig
@@ -71,12 +72,12 @@ $messages = array(
 'tog-hidepatrolled' => 'ಪಹರೆಯಲ್ಲಿ ಆದ ಸಂಪಾದನೆಗಳನ್ನು ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ಅಡಗಿಸು',
 'tog-newpageshidepatrolled' => 'ಪಹರೆಯಲ್ಲಿ ಆದ ಪುಟಗಳನ್ನು ಹೊಸ ಪುಟಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಅಡಗಿಸು',
 'tog-extendwatchlist' => 'ಕೇವಲ ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲದೆ, ಸಂಬಂಧಿತ ಎಲ್ಲಾ ಬದಲಾವಣೆಗಳನ್ನು ತೋರುವಂತೆ ಪಟ್ಟಿಯನ್ನು ವಿಸ್ತರಿಸಿ',
-'tog-usenewrc' => 'ಹೆಚ್ಚು ವರ್ಧಿಸಲಾದ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು ಪುಟ ಬಳಸು(ಜಾವಸ್ಕ್ರಿಪ್ಟ್ ಬೇಕಾಗುತ್ತದೆ)',
+'tog-usenewrc' => 'ಹೆಚ್ಚು ವರ್ಧಿಸಲಾದ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು ಪುಟ ಬಳಸು',
 'tog-numberheadings' => 'ತಲೆಬರಹಗಳಿಗೆ ಅಂಕಿಗಳನ್ನು ತೋರಿಸು',
-'tog-showtoolbar' => 'ಸಂಪಾದನೆಯ ಉಪಕರಣಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರು (JavaScript)',
-'tog-editondblclick' => 'ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಪುಟವು ಸಂಪಾದಿಸುವಂತಾಗಲಿ (JavaScript)',
+'tog-showtoolbar' => 'ಸಂಪಾದನೆಯ ಉಪಕರಣಗಳ ಪಟ್ಟಿಯನ್ನು ತೋರು',
+'tog-editondblclick' => 'ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿದಾಗ ಪುಟವು ಸಂಪಾದಿಸುವಂತಾಗಲಿ',
 'tog-editsection' => 'ಪುಟದ ವಿಭಾಗಗಳನ್ನು [ಬದಲಾಯಿಸು] ಕೊಂಡಿಗಳನ್ನು ಒತ್ತುವುದರಿಂದ ಸಂಪಾದನೆ ಮಾಡುವಂತೆ ಇರಲಿ',
-'tog-editsectiononrightclick' => 'ಪುಟದ ವಿಭಾಗಗಳನ್ನು ಅವುಗಳ ಶೀರ್ಷಿಕೆಯನ್ನು ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಸಂಪಾದನೆ ಮಾಡುವಂತೆ ಇರಲಿ (JavaScript)',
+'tog-editsectiononrightclick' => 'ಪುಟದ ವಿಭಾಗಗಳನ್ನು ಅವುಗಳ ಶೀರ್ಷಿಕೆಯನ್ನು ಎರಡು ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಿ ಸಂಪಾದನೆ ಮಾಡುವಂತೆ ಇರಲಿ',
 'tog-showtoc' => 'ಪರಿವಿಡಿಯನ್ನು ತೋರಿಸು (ಮೂರಕ್ಕಿಂತ ಹೆಚ್ಚು ತಲೆಬರಹಗಳನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳಿಗೆ)',
 'tog-rememberpassword' => 'ಈ ಗಣಕಯಂತ್ರದಲ್ಲಿ ನನ್ನ ಲಾಗಿನ್ ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊ (ಗರಿಷ್ಠ $1 {{PLURAL:$1|ದಿನದ|ದಿನಗಳ}}ವರೆಗೆ)',
 'tog-watchcreations' => 'ನಾನು ಪ್ರಾರಂಭಿಸುವ ಲೇಖನಗಳನ್ನು ನನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಗೆ ಸೇರಿಸು',
@@ -86,7 +87,6 @@ $messages = array(
 'tog-minordefault' => 'ನನ್ನ ಎಲ್ಲಾ ಸಂಪಾದನೆಗಳನ್ನು ಚುಟುಕಾದವು ಎಂದು ಗುರುತು ಮಾಡು',
 'tog-previewontop' => 'ಮುನ್ನೋಟವನ್ನು ಸಂಪಾದನೆ ಚೌಕದ ಮುಂಚೆ ತೋರು',
 'tog-previewonfirst' => 'ಮೊದಲ ಬದಲಾವಣೆಯ ನಂತರ ಮುನ್ನೋಟವನ್ನು ತೋರಿಸು',
-'tog-nocache' => 'ಪುಟಗಳನ್ನು ಸ್ಮರಣೆಯಲ್ಲಿಟ್ಟುಕೊಳ್ಳಬೇಡ',
 'tog-enotifwatchlistpages' => 'ನನ್ನ ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಲ್ಲಿರುವ ಯಾವುದಾದರೂ ಪುಟವು ಬದಲಾದಾಗ ನನಗೆ ಇ-ಅಂಚೆ ಕಳುಹಿಸು.',
 'tog-enotifusertalkpages' => 'ನನ್ನ ಚರ್ಚೆ ಪುಟ ಬದಲಾದರೆ ನನಗೆ ಇ-ಅಂಚೆ ಕಳುಹಿಸು',
 'tog-enotifminoredits' => 'ಚಿಕ್ಕ-ಪುಟ್ಟ ಬದಲಾವಣೆಗಳಾದಾಗಲೂ ಇ-ಅಂಚೆ ಕಳುಹಿಸು',
@@ -94,7 +94,7 @@ $messages = array(
 'tog-shownumberswatching' => 'ಪುಟವನ್ನು ವೀಕ್ಷಿಸುತ್ತಿರುವ ಸದಸ್ಯರ ಸಂಖ್ಯೆಯನ್ನು ತೋರಿಸು',
 'tog-oldsig' => 'ಪ್ರಸ್ತುತ ಸಹಿ',
 'tog-fancysig' => 'ಸರಳ ಸಹಿಗಳು (ಕೊಂಡಿ ಇಲ್ಲದಿರುವಂತೆ)',
-'tog-uselivepreview' => 'ನà³\87ರ à²®à³\81ನà³\8dನà³\8bà²\9fವನà³\8dನà³\81 à²\89ಪಯà³\8bà²\97ಿಸà³\81 (JavaScript) (ಪ್ರಾಯೋಗಿಕ)',
+'tog-uselivepreview' => 'ನà³\87ರ à²®à³\81ನà³\8dನà³\8bà²\9fವನà³\8dನà³\81 à²\89ಪಯà³\8bà²\97ಿಸಿ  (ಪ್ರಾಯೋಗಿಕ)',
 'tog-forceeditsummary' => 'ಸಂಪಾದನೆ ಸಾರಾಂಶವನ್ನು ಖಾಲಿ ಬಿಟ್ಟಲ್ಲಿ ನೆನಪಿಸು',
 'tog-watchlisthideown' => 'ವೀಕ್ಷಣಾ ಪಟ್ಟಿಯಲ್ಲಿ ನನ್ನ ಸಂಪಾದನೆಗಳನ್ನು ತೋರಿಸಬೇಡ',
 'tog-watchlisthidebots' => 'ವೀಕ್ಷಣಾಪಟ್ಟಿಯಲ್ಲಿ ಬಾಟ್ ಸಂಪಾದನೆಗಳನ್ನು ಅಡಗಿಸು',
@@ -107,6 +107,7 @@ $messages = array(
 'tog-showhiddencats' => 'ಅಡಗಿಸಲ್ಪಟ್ಟ ವರ್ಗಗಳನ್ನು ತೋರಿಸು',
 'tog-norollbackdiff' => 'ತೊಡೆದುಹಾಕಿದ ನಂತರ ವ್ಯತ್ಯಸವನ್ನು ಬಿದು',
 'tog-useeditwarning' => 'ಸಂಪಾದನೆಯನ್ನು ಉಳಿಸದೆ ಹೊರಟಲ್ಲಿ ನನಗೆ ಎಚ್ಚರಿಸು',
+'tog-prefershttps' => 'ಯಾವತ್ತು ಸಹ ಲಾಗಿನ್ ನಂತರ ಸುರಕ್ಷಿತ ಸಂಪರ್ಕವನ್ನು ಬಳಸಿ',
 
 'underline-always' => 'ಯಾವಾಗಲೂ',
 'underline-never' => 'ಎಂದಿಗೂ ಇಲ್ಲ',
@@ -198,8 +199,8 @@ $messages = array(
 'category-file-count' => '{{PLURAL:$2|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ ಫೈಲು ಇದೆ.|ಈ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಫೈಲನ್ನು|$1 ಫೈಲುಗಳನ್ನು}} ಸೇರಿಸಿ, ಒಟ್ಟು $2 ಇವೆ.}}',
 'category-file-count-limited' => 'ಪ್ರಸಕ್ತ ವರ್ಗದಲ್ಲಿ ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಫೈಲು ಇದೆ|$1 ಫೈಲುಗಳು ಇವೆ}}.',
 'listingcontinuesabbrev' => 'ಮುಂದು.',
-'index-category' => 'ಸà³\82à²\9aಿನಾಮದ à²ªà³\81ತಗಳು',
-'noindex-category' => 'à²\85ಸà³\81à²\9aಿನಾಮದ à²ªà³\81ತಗಳು',
+'index-category' => 'à²\85ನà³\81à²\95à³\8dರಮಣà³\86à²\97à³\8aà²\82ಡ à²ªà³\81à²\9fಗಳು',
+'noindex-category' => 'à²\85ನà³\81à²\95à³\8dರಮಣà³\86à²\97à³\8aಳಪಡದ à²ªà³\81à²\9fಗಳು',
 'broken-file-category' => 'ಕಡತ ಕೊಂಡಿಗಳು ಮುರಿದಿರುವ ಪುಟಗಳು',
 
 'about' => 'ನಮ್ಮ ಬಗ್ಗೆ',
@@ -207,7 +208,7 @@ $messages = array(
 'newwindow' => '(ಹೊಸ ಕಿಟಕಿಯನ್ನು ತೆರೆಯುತ್ತದೆ)',
 'cancel' => 'ವಜಾ ಮಾಡಿ',
 'moredotdotdot' => 'ಇನ್ನಷ್ಟು...',
-'morenotlisted' => 'ಹà³\86à²\9aà³\8dà²\9aಿನದನà³\8dನà³\81 à²ªà²\9fà³\8dà²\9fಿಮಾಡಲಾà²\97ಿಲà³\8dಲ...',
+'morenotlisted' => 'à²\88 à²ªà²\9fà³\8dà²\9fಿ à²ªà³\82ರ à²\87ಲà³\8dಲ.',
 'mypage' => 'ಪುಟ',
 'mytalk' => 'ಚರ್ಚೆ',
 'anontalk' => 'ಈ ಐ.ಪಿ ಗೆ ಮಾತನಾಡಿ',
@@ -220,7 +221,6 @@ $messages = array(
 'qbedit' => 'ಸಂಪಾದಿಸು',
 'qbpageoptions' => 'ಈ ಪುಟ',
 'qbmyoptions' => 'ನನ್ನ ಪುಟಗಳು',
-'qbspecialpages' => 'ವಿಶೇಷ ಪುಟಗಳು',
 'faq' => 'ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
 'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾಗಿ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು',
 
@@ -280,7 +280,7 @@ $messages = array(
 'articlepage' => 'ಲೇಖನ ಪುಟವನ್ನು ವೀಕ್ಷಿಸಿ',
 'talk' => 'ಚರ್ಚೆ',
 'views' => 'ನೋಟಗಳು',
-'toolbox' => 'ಉಪಕರಣ',
+'toolbox' => 'ಉಪಕರಣಗಳು',
 'userpage' => 'ಸದಸ್ಯರ ಪುಟ ತೋರು',
 'projectpage' => 'ಯೋಜನೆಯ ಪುಟವನ್ನು ನೋಡು',
 'imagepage' => 'ಕಡತದ ಪುಟ ವೀಕ್ಷಿಸಿ',
@@ -306,7 +306,7 @@ $messages = array(
 # 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).
 'aboutsite' => 'ಕನ್ನಡ {{SITENAME}} ಬಗ್ಗೆ',
 'aboutpage' => 'Project:ನಮ್ಮ ಬಗ್ಗೆ',
-'copyright' => 'à²\87ದà³\81 à²\88 à²\95ಾಪಿರà³\88à²\9fà³\8dâ\80\8cನಲà³\8dಲಿ à²²à²­à³\8dಯವಿದà³\86 $1.',
+'copyright' => 'ವಿಶà³\87ಷವಾà²\97ಿ à²¹à³\87ಳಲಲà³\8dಲಿದರà³\86 à²\87ದà³\81 "$1" à²\95ಾಪಿರà³\88à²\9fà³\8d à²\85ಲà³\8dಲಿ à²²à²­à³\8dಯ à²\89à²\82à²\9fà³\81',
 'copyrightpage' => '{{ns:project}}:ಕೃತಿಸ್ವಾಮ್ಯತೆಗಳು',
 'currentevents' => 'ಪ್ರಚಲಿತ',
 'currentevents-url' => 'Project:ಪ್ರಚಲಿತ',
@@ -332,7 +332,10 @@ $messages = array(
 'ok' => 'ಸರಿ',
 'retrievedfrom' => '"$1" ಇಂದ ಪಡೆಯಲ್ಪಟ್ಟಿದೆ',
 'youhavenewmessages' => 'ನಿಮಗೆ $1 ಇವೆ ($2).',
-'newmessagesdifflinkplural' => 'ಕಡೆಯ {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|ನಿನಗೆ}} {{PLURAL:$3|ಇನ್ನು ಒಂದು ಸದಸ್ಯನಿಂದ|$3 ಸದಸ್ಯಗಳಿಂದ}} $1 ಉಂಟು. ($2)',
+'youhavenewmessagesmanyusers' => ' ನಿಮಗೆ ಸುಮಾರು ಸದಸ್ಯಗಳಿಂದ $1 ಉಂಟು ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|ಒಂದು ಹೊಸ ಸಂದೇಶ|999=ಹೊಸ ಸಂದೇಶಗಳು}}',
+'newmessagesdifflinkplural' => 'ಇತ್ತೀಚಿನ {{PLURAL:$1|ಬದಲಾವಣೆ|999=ಬದಲಾವಣೆಗಳು}}',
 'youhavenewmessagesmulti' => '$1 ಅಲ್ಲಿ ನಿಮಗೆ ಹೊಸ ಸಂದೇಶಗಳಿವೆ',
 'editsection' => 'ಬದಲಾಯಿಸಿ',
 'editold' => 'ಬದಲಾಯಿಸಿ',
@@ -382,6 +385,12 @@ $messages = array(
 # General errors
 'error' => 'ದೋಷ',
 'databaseerror' => 'ಡೇಟಬೇಸ್ ದೋಷ',
+'databaseerror-text' => 'ಡೇಟಾಬೇಸ್ ಅನುರೋಧದಲ್ಲಿ ತ್ರುಟಿ ಆಗಿದೆ. 
+ಇದರ ಅರ್ಥ ಇರಬಹುದು ಎಂತ ಅಂದರೆ ಸಾಫ್ಟ್ವೇರಲ್ಲಿ ಒಂದು ಸಮಸ್ಯೆ ಇರಬಹುದು.',
+'databaseerror-textcl' => 'ಡೇಟಾಬೇಸ್ ಅನುರೋಧದಲ್ಲಿ ತ್ರುಟಿ ಆಗಿದೆ.',
+'databaseerror-query' => 'ಅನುರೋಧ: $1',
+'databaseerror-function' => 'ಕಾರ್ಯ: $1',
+'databaseerror-error' => 'ತ್ರುಟಿ: $1',
 'laggedslavemode' => 'ಎಚ್ಚರ: ಪುಟದಲ್ಲಿ ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳು ಕಾಣದಿರಬಹುದು.',
 'readonly' => 'ಡೇಟಬೇಸ್ ಮುಚ್ಚಲಾಗಿದೆ',
 'enterlockreason' => 'ಡೇಟಬೇಸ್ ಮುಚ್ಚುತಿರುವ ಕಾರಣವನ್ನು ಮತ್ತು ಮತ್ತೆ ಅದನ್ನು ತೆರೆಯುವ ಅಂದಾಜಿತ ಕಾಲವನ್ನು ತಿಳಿಸಿ',
@@ -420,7 +429,7 @@ $messages = array(
 'perfcachedts' => 'ಈ ಕೆಳಗಿನ ಮಾಹಿತಿ cache ಆಗಿರುವುದು, ಮತ್ತು ಇದರ ಕೊನೆಯ ಬದಲಾವಣೆ ಆಗಿರುವುದು $1. ಹೆಚ್ಚಂದರೆ  {{PLURAL:$4|one result is|$4 results are}} cacheನಲ್ಲಿ ಲಭ್ಯವಿರುವುದು',
 'querypage-no-updates' => 'ಈ ಪುಟದ ಅಪ್ಡೇಟ್‍ಗಳನ್ನು ಪ್ರಸಕ್ತವಾಗಿ ನಿಲುಗಡೆ ಮಾಡಲಾಗಿದೆ. ಇಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ಸದ್ಯಕ್ಕೆ ನವೀಕರಿಸಲಾಗುವುದಿಲ್ಲ.',
 'viewsource' => 'ಆಕರ ವೀಕ್ಷಿಸು',
-'viewsource-title' => 'ಮೂಲವನ್ನು ವಿಕ್ಷಿಸಿ',
+'viewsource-title' => '$1 ಇಗೆ  ಮೂಲವನ್ನು ವಿಕ್ಷಿಸಿ',
 'actionthrottled' => 'ಕ್ರಿಯೆಯನ್ನು ನಿಯಂತ್ರಿಸಲಾಗಿದೆ',
 'actionthrottledtext' => 'ಸ್ಪ್ಯಾಮ್ ವಿರೋಧಿ ವಿಧಾನದ ಪ್ರಕಾರ, ನಿಮ್ಮನ್ನು ಸ್ವಲ್ಪ ಸಮಯದಲ್ಲಿ ಬಹಳ ಸಲ ಈ ಕ್ರಿಯೆಯನ್ನು ಮಾಡುವುದರಿಂದ ನಿಯಂತ್ರಿಸಲಾಗಿದೆ ಮತ್ತು ನೀವು ಸೀಮೆಯನ್ನು ಮಿರಿದ್ದಿರಿ. ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ.',
 'protectedpagetext' => 'ಈ ಪುಟವನ್ನು ಸಂಪಾದನೆ ಮಾಡಲಾಗದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ.',
@@ -447,7 +456,8 @@ $2',
 'invalidtitle-knownnamespace' => '"$2"ನೇಮ್ ಸ್ಪೇಸ್ ಮತ್ತು "$3"ಪಠ್ಯದೊಂದಿಗೆ ಅಸಮಂಜಸ ತಲೆಬರಹ',
 'invalidtitle-unknownnamespace' => '$1ನೇಮ್ ಸ್ಪೇಸ್ ಮತ್ತು "$2"ಪಠ್ಯದೊಂದಿಗೆ ಅಸಮಂಜಸ ತಲೆಬರಹ',
 'exception-nologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
-'exception-nologin-text' => 'ಈ ಪುಟ ಅಥವಾ ಚಟುವಟಿಕೆಗೆ ನೀವು ಈ ವಿಕಿಗೆ ಲಾಗಿನ್ ಆಗಿರಬೇಕಾಗಿರುತ್ತದೆ',
+'exception-nologin-text' => 'ಈ ಪುಟ ಅಥವಾ ಚಟುವಟಿಕೆಗೆ ನೀವು ಈ ವಿಕಿಗೆ [[Special:Userlogin|ಲಾಗಿನ್]] ಆಗಿರಬೇಕಾಗಿರುತ್ತದೆ.',
+'exception-nologin-text-manual' => 'ಈ ಪುಟ ಅಥವಾ ಚಟುವಟಿಕೆಗೆ $1 ಮಾಡಿ',
 
 # Virus scanner
 'virus-badscanner' => "ಅಸಮಂಜಸ ವಿನ್ಯಾಸ:ಅಪರಿಚಿತ ವೈರಸ್ ಸ್ಕಾನರ್:''$1''",
@@ -456,13 +466,14 @@ $2',
 
 # Login and logout pages
 'logouttext' => "'''ನೀವು ಈಗ ಲಾಗ್ ಔಟ್ ಆಗಿರುವಿರಿ.'''
-
-ನೀವು {{SITENAME}} ಅನ್ನು ಅನಾಮಧೇಯವಾಗಿ ಉಪಯೋಗಿಸಬಹುದು, ಅಥವ ಮತ್ತೆ ಇದೇ ಹೆಸರಿನಲ್ಲಿ ಅಥವ ಬೇರೆ ಹೆಸರಿನಲ್ಲಿ <span class='plainlinks'>[$1 ಲಾಗ್ ಇನ್]</span> ಆಗಬಹುದು.
 ಗಮನಿಸಿ: ನಿಮ್ಮ ಬ್ರೌಸರ್‍ನ cache ಅನ್ನು ಅಳಿಸುವವರೆಗೂ ಕೆಲವು ಪುಟಗಳು ನೀವಿನ್ನೂ ಲಾಗ್ ಇನ್ ಆಗಿರುವಂತೆ ಪ್ರದರ್ಶಿತವಾಗಬಹುದು.",
 'welcomeuser' => 'ಸುಸ್ವಾಗತ,$1!',
 'welcomecreation-msg' => 'ನಿಮ್ಮ ಖಾತೆ ತೆರೆಯಲಾಗಿದೆ.ನಿಮ್ಮ [[Special:Preferences|{{SITENAME}} preferences]]ಬದಲಾಯಿಸಲು ಮರೆಯಬೇಡಿ.',
 'yourname' => 'ನಿಮ್ಮ ಬಳಕೆಯ ಹೆಸರು',
 'userlogin-yourname' => 'ಬಳಕೆದಾರ ಹೆಸರು',
+'userlogin-yourname-ph' => 'ನಿಮ್ಮ ಸದಸ್ಯನಾಮ ("ಯೋಸರ್ನೇಮ್") ಬರಿರಿ',
+'createacct-another-username-ph' => 'ಸದಸ್ಯನಾಮ ("ಯೋಸರ್ನೇಮ್") ಬರಿರಿ',
 'yourpassword' => 'ನಿಮ್ಮ ಪ್ರವೇಶಪದ',
 'userlogin-yourpassword' => 'ಪ್ರವೇಶಪದ',
 'userlogin-yourpassword-ph' => 'ನಿಮ್ಮ ಪ್ರವೇಶಪದ ನಮೂದಿಸಿ',
@@ -471,6 +482,8 @@ $2',
 'createacct-yourpasswordagain' => 'ಪ್ರವೇಶಪದವನ್ನು ಧೃಡೀಕರಿಸಿ',
 'createacct-yourpasswordagain-ph' => 'ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೊಮ್ಮೆ ನಮೂದಿಸಿ',
 'remembermypassword' => 'ಈ ಗಣಕಯಂತ್ರದಲ್ಲಿ ನನ್ನ ಲಾಗಿನ್ ನೆನಪಿನಲ್ಲಿಟ್ಟುಕೊ (ಗರಿಷ್ಠ $1 {{PLURAL:$1|ದಿನದ|ದಿನಗಳ}}ವರೆಗೆ)',
+'userlogin-remembermypassword' => 'ನನ್ನನ್ನ ಲೋಗ್ಗೆದ್ ಇನ್ ಎ ಇಡಿ.',
+'userlogin-signwithsecure' => 'ಸುರಕ್ಷಿತವಾದ ಕನೆಕ್ಷನ್ ಉಪಯೋಗಿಸಿ.',
 'yourdomainname' => 'ನಿಮ್ಮ ಕ್ಷೇತ್ರ:',
 'password-change-forbidden' => 'ನೀವು ಈ ವಿಕಿಯಲ್ಲಿ ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಲು ಸಾದ್ಯವಿಲ್ಲ.',
 'login' => 'ಲಾಗ್ ಇನ್',
@@ -482,21 +495,35 @@ $2',
 'userlogout' => 'ಲಾಗ್ ಔಟ್',
 'notloggedin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
 'userlogin-noaccount' => 'ಖಾತೆ ಇಲ್ಲವೇ?',
+'userlogin-joinproject' => '{{SITENAME}} ಸೇರಿ',
 'nologin' => "ಖಾತೆ ಇಲ್ಲವೇ? '''$1'''.",
 'nologinlink' => 'ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ',
 'createaccount' => 'ಹೊಸ ಖಾತೆ ತೆರೆಯಿರಿ',
 'gotaccount' => "ಈಗಾಗಲೇ ಖಾತೆಯಿದೆಯೇ? '''$1'''.",
 'gotaccountlink' => 'ಲಾಗ್ ಇನ್',
 'userlogin-resetlink' => 'ನಿಮ್ಮ ಲಾಗಿನ್ ವಿವರಗಳನ್ನು ಮರೆತಿದ್ದೀರಾ?',
+'userlogin-resetpassword-link' => 'ಗುಪ್ತಪದವನ್ನು ಮರಿತು ಹೊಯಿತ ?',
 'createacct-join' => 'ನಿಮ್ಮ ಮಾಹಿತಿಯನ್ನು ಕೆಳಗೆ ನಮೂದಿಸಿ',
 'createacct-emailrequired' => 'ಇ-ಮೇಲ್ ವಿಳಾಸ:',
 'createacct-email-ph' => 'ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ',
-'createaccountmail' => 'ಇ-ಅಂಚೆಯ ಮೂಲಕ',
+'createaccountmail' => '(ರಾಂಡಮ್) ತಾತ್ಕಾಲಿಕವಾಗಿ ಯಾದೃಚ್ಛಿಕ ಪಾಸ್ವರ್ಡ್ ಆಯ್ಕೆಮಾಡಿ ಮತ್ತು ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಸೂಚಿಸಿ: ಕಳುಹಿಸಿ',
+'createacct-realname' => 'ನಿಜವಾದ ಹೆಸರು (ಐಚ್ಛಿಕ)',
 'createaccountreason' => 'ಕಾರಣ:',
 'createacct-reason' => 'ಕಾರಣ',
+'createacct-reason-ph' => 'ನೀವು ಯಾಕೆ ಇನ್ನು ಒಂದು ಖಾತ ಮಾಡುತ ಇದ್ದೀರಿ ?',
+'createacct-captcha' => 'ಸುರಕ್ಷೆ ನಿಗ್ರಹಿಸು.',
+'createacct-imgcaptcha-ph' => 'ಮೇಲೆ ಕಾಣುವಂತ ಶಬ್ದಗಳು ಮತ್ತು ಅಂಕಗಳನ್ನು ಬರಿರಿ.',
+'createacct-submit' => 'ಖಾತೆಯನ್ನು ಸೃಷ್ಟಿಸಿ',
+'createacct-another-submit' => 'ಇನ್ನು ಒಂದು ಖಾತ ಮಾಡಿ',
+'createacct-benefit-heading' => '{{SITENAME}} ನಿಮ್ಮನ್ತವೆ ಜನರಿಂದ ಮಾಡಿದು',
+'createacct-benefit-body1' => '{{PLURAL:$1|ಸಂಪಾದನೆ|ಸಂಪಾದನೆಗಳು}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|ಪುಟ|ಪುಟಗಳು}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|ಕೊಡುಗೆ|ಕೊಡುಗೆಗಳು}}',
 'badretype' => 'ನೀವು ಕೊಟ್ಟ ಪ್ರವೇಶಪದಗಳು ಬೇರೆಬೇರೆಯಾಗಿವೆ.',
 'userexists' => 'ನೀವು ನೀಡಿದ ಸದಸ್ಯರ ಹೆಸರು ಆಗಲೆ ಬಳಕೆಯಲ್ಲಿದೆ. ದಯವಿಟ್ಟು ಬೇರೊಂದು ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.',
 'loginerror' => 'ಲಾಗಿನ್ ದೋಷ',
+'createacct-error' => 'ಖಾತೆ ನಿರ್ಮಾಣ ತ್ರುಟಿ',
+'createaccounterror' => 'ಖಾತೆ ನಿರ್ಮಾಣ ಮಾಡಲಿಕ್ಕೆ ಆಗಲಿಲ್ಲ.',
 'nocookiesnew' => 'ನಿಮ್ಮ ಬಳಕೆದಾರ ಖಾತೆಯು ಸೃಷ್ಟಿತವಾಗಿದೆ, ಆದರೆ ನೀವು ಲಾಗ್ ಇನ್ ಆಗಿಲ್ಲ.
 {{SITENAME}} ಲಾಗ್ ಇನ್ ಮಾಡಲು cookieಗಳನ್ನು ಉಪಯೋಗಿಸುತ್ತದೆ.
 ನಿಮ್ಮ ಗಣಕಯಂತ್ರದಲ್ಲಿ cookieಗಳು ನಿಷಿದ್ಧವಾಗಿದೆ.
@@ -550,7 +577,7 @@ $2',
 'loginlanguagelabel' => 'ಭಾಷೆ: $1',
 
 # Change password dialog
-'resetpass' => 'ಪ್ರವೇಶಪದವನ್ನು ಬದಲಾಯಿಸಿ',
+'changepassword' => 'ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ',
 'resetpass_announce' => 'ನೀವು ತಾತ್ಕಾಲಿಕ ಇ-ಅಂಚೆ ಕೋಡ್ ಅನ್ನು ಉಪಯೋಗಿಸಿ ಲಾಗ್ ಇನ್ ಆಗಿರುವಿರಿ.
 ಲಾಗ್ ಇನ್ ಪೂರ್ಣಗೊಳಿಸಲು ನೀವಿಲ್ಲ ಹೊಸ ಪ್ರವೇಶಪದ ನೀಡಬೇಕು:',
 'resetpass_header' => 'ಖಾತೆಯ ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ',
@@ -806,8 +833,6 @@ $2',
 'revdelete-log' => 'ಕಾರಣ:',
 'revdelete-submit' => 'ಆಯ್ಕೆ ಮಾಡಿದ ಬದಲಾವಣೆಗೆ ಅನ್ವಯಿಸು',
 'revdel-restore' => 'ಕಾಣಿಸುವಿಕೆಯನ್ನು ಬದಲಾಯಿಸು',
-'revdel-restore-deleted' => 'ಅಳಿಸಿಹಾಕಲಾದ ಆವೃತ್ತಿಗಳು',
-'revdel-restore-visible' => 'ಕಾಣುವ ಆವೃತ್ತಿಗಳು',
 'pagehist' => 'ಪುಟದ ಇತಿಹಾಸ',
 'deletedhist' => 'ಅಳಿಸಲ್ಪಟ್ಟ ಇತಿಹಾಸ',
 'revdelete-otherreason' => 'ಇತರ/ಹೆಚ್ಚುವರಿ ಕಾರಣ:',
@@ -856,12 +881,8 @@ $2',
 # 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}}',
@@ -891,20 +912,15 @@ $2',
 'search-interwiki-default' => '$1 ಫಲಿತಾಂಶಗಳು:',
 'search-interwiki-more' => '(ಹೆಚ್ಚು)',
 'search-relatedarticle' => 'ಸಂಬಂಧಿತ',
-'mwsuggest-disable' => 'AJAX ಸಲಹೆಗಳನ್ನು ತೋರದಿರು',
 '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-toggleall' => 'ಎಲ್ಲಾ',
 'powersearch-togglenone' => 'ಯಾವುದೂ ಇಲ್ಲ',
 'search-external' => 'ಬಾಹ್ಯ ಹುಡುಕಾಟ',
@@ -916,7 +932,6 @@ $2',
 'preferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
 'mypreferences' => 'ಪ್ರಾಶಸ್ತ್ಯಗಳು',
 'prefs-edits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖ್ಯೆ:',
-'changepassword' => 'ಪ್ರವೇಶ ಪದ ಬದಲಾಯಿಸಿ',
 'prefs-skin' => 'ಚರ್ಮ',
 'skin-preview' => 'ಮುನ್ನೋಟ',
 'datedefault' => 'ಯಾವುದೇ ಪ್ರಾಶಸ್ತ್ಯ ಇಲ್ಲ',
@@ -932,17 +947,14 @@ $2',
 'prefs-resetpass' => 'ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಿ',
 'prefs-email' => 'ಇ-ಅಂಚೆ ಇಚ್ಛೆಗಳು',
 'saveprefs' => 'ಉಳಿಸಿ',
-'resetprefs' => 'ಉಳಿಸಿಲ್ಲದ ಬದಲಾವಣೆಗಳನ್ನು ಅಳಿಸು',
 'prefs-editing' => 'ಸಂಪಾದನೆ',
 'rows' => 'ಸಾಲುಗಳು:',
 'searchresultshead' => 'ಹುಡುಕು',
-'resultsperpage' => 'ಪ್ರತಿ ಪುಟದಲ್ಲಿ ಫಲಿತಾಂಶಗಳು:',
 'recentchangesdays' => 'ಇತ್ತೀಚಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿ ತೋರಿಸಬೇಕಾದ ದಿನಗಳು:',
 'recentchangescount' => 'ಇತ್ತೀಚೆಗಿನ ಬದಲಾವಣೆಗಳಲ್ಲಿರುವ ವಿಷಯಗಳ ಸಂಖ್ಯೆ',
 'savedprefs' => 'ನಿಮ್ಮ ಇಚ್ಛೆಗಳನ್ನು ಉಳಿಸಲಾಯಿತು.',
 'timezonelegend' => 'ಸಮಯ ವಲಯ:',
 'localtime' => 'ಸ್ಥಳೀಯ ಸಮಯ:',
-'timezoneoffset' => 'ವ್ಯತ್ಯಾಸ¹',
 'servertime' => 'ಸರ್ವರ್ ಕಾಲ',
 'guesstimezone' => 'ಬ್ರೌಸರ್ ಇಂದ ತುಂಬು',
 'timezoneregion-africa' => 'ಆಫ್ರಿಕ',
@@ -1090,7 +1102,6 @@ $2',
 'recentchanges-label-minor' => 'ಇದು ಚುಟುಕಾದ ಬದಲಾವಣೆ',
 'recentchanges-label-bot' => 'ಈ ಸಂಪಾದನೆಯನ್ನು ಒಂದು ಬಾಟ್ ಮಾಡಿದೆ',
 'recentchanges-label-unpatrolled' => 'ಈ ಸಂಪಾದನೆಯನ್ನು ಇನ್ನೂ ಪರೀಕ್ಷೆಗೆ ಒಳಪಡಿಸಿಲ್ಲ',
-'rcnote' => "$5, $4 ವರೆಗೆ ಹಿಂದಿನ {{PLURAL:$2|ದಿನದಲ್ಲಿ|'''$2''' ದಿನಗಳಲ್ಲಿ}} ಮಾಡಲಾಗಿರುವ {{PLURAL:$1|'''೧''' ಬದಲಾವಣೆ|'''$1''' ಬದಲಾವಣೆಗಳು}} ಕೆಳಗಿವೆ.",
 'rcnotefrom' => "'''$2''' ಇಂದ ಆಗಿರುವ ಬದಲಾವಣೆಗಳು ಕೆಳಗಿವೆ (ಕೊನೆಯ '''$1'''ರವರೆಗೆ ತೋರಿಸಲಾಗಿದೆ).",
 'rclistfrom' => '$1 ಇಂದ ಪ್ರಾರಂಭಿಸಿ ಮಾಡಲಾದ ಬದಲಾವಣೆಗಳನ್ನು ನೋಡಿ',
 'rcshowhideminor' => 'ಚಿಕ್ಕಪುಟ್ಟ ಬದಲಾವಣೆಗಳನ್ನು $1',
@@ -1261,7 +1272,7 @@ $2',
 'filehist-user' => 'ಸದಸ್ಯ',
 'filehist-dimensions' => 'ಆಯಾಮಗಳು',
 'filehist-filesize' => 'ಫೈಲಿನ ಗಾತ್ರ',
-'filehist-comment' => 'ವà²\95à³\8dà²\95ಣà³\86',
+'filehist-comment' => 'à²\9fಿಪà³\8dಪಣಿ',
 'filehist-missing' => 'ಫೈಲು ಕಾಣೆಯಾಗಿದೆ',
 'imagelinks' => 'ಕಡತ ಬಳಕೆ',
 'linkstoimage' => 'ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಪುಟವು|$1 ಪುಟಗಳು}} ಈ ಚಿತ್ರಕ್ಕೆ ಸಂಪರ್ಕ {{PLURAL:$1|ಹೊಂದಿದೆ|ಹೊಂದಿವೆ}}:',
@@ -1378,10 +1389,8 @@ $2',
 'deadendpagestext' => 'ಈ ಕೆಳಗಿನ ಪುಟಗಳು {{SITENAME}} ಅಲ್ಲಿ ಇರುವ ಇತರ ಪುಟಗಳಿಗೆ ಕೊಂಡಿಯನ್ನು ಹೊಂದಿಲ್ಲ.',
 'protectedpages' => 'ಸಂರಕ್ಷಿತ ಪುಟಗಳು',
 'protectedpages-indef' => 'ಅನಿಯಮಿತ ಸಂರಕ್ಷಣೆಗಳು ಮಾತ್ರ',
-'protectedpagestext' => 'ಈ ಕೆಳಗಿನ ಪುಟಗಳು ಸ್ಥಳಾಂತರಿಕೆ ಅಥವ ಸಂಪಾದನೆ ಸಂರಕ್ಷಣೆಯನ್ನು ಹೊಂದಿವೆ',
 'protectedpagesempty' => 'ಈ ನಿಯಮಾವಳಿಗಳಲ್ಲಿ ಯಾವ ಪುಟವೂ ಸಂರಕ್ಷಿತವಾಗಿಲ್ಲ.',
 'protectedtitles' => 'ಸಂರಕ್ಷಿತ ಶೀರ್ಷಿಕೆಗಳು',
-'protectedtitlestext' => 'ಈ ಕೆಳಗಿನ ಶೀರ್ಷಿಕೆಗಳನ್ನು ಸೃಷ್ಟಿಸಲಾಗದಂತೆ ಸಂರಕ್ಷಿಸಲಾಗಿದೆ',
 'listusers' => 'ಸದಸ್ಯರ ಪಟ್ಟಿ',
 'usercreated' => '$1 ರಂದು $2 ಸಮಯಕ್ಕೆ {{GENDER:$3|ಸೃಷ್ಟಿಸಿದರು}}',
 'newpages' => 'ಹೊಸ ಪುಟಗಳು',
@@ -1416,9 +1425,6 @@ $2',
 'allpagesto' => 'ಇಲ್ಲಿಗೆ ಕೊನೆಗೊಳ್ಳುವ ಪುಟಗಳನ್ನು ತೋರಿಸು:',
 'allarticles' => 'ಎಲ್ಲ ಲೇಖನಗಳು',
 'allinnamespace' => 'ಎಲ್ಲಾ ಪುಟಗಳೂ ($1 ಪುಟಪ್ರಬೇಧ)',
-'allnotinnamespace' => 'ಎಲ್ಲಾ ಪುಟಗಳು ($1 ಪುಟಪ್ರಬೇಧ ಹೊರತುಪಡಿಸಿ)',
-'allpagesprev' => 'ಹಿಂದಕ್ಕೆ',
-'allpagesnext' => 'ಮುಂದಕ್ಕೆ',
 'allpagessubmit' => 'ಹೋಗು',
 'allpagesprefix' => 'ಈ ಪೂರ್ವಪದವನ್ನು ಹೊಂದಿರುವ ಪುಟಗಳನ್ನು ತೋರಿಸು:',
 'allpages-bad-ns' => '{{SITENAME}} ಅಲ್ಲಿ "$1" ಪುಟಪ್ರಬೇಧ ಇಲ್ಲ.',
@@ -1660,7 +1666,6 @@ $2',
 'ipadressorusername' => 'IP ವಿಳಾಸ ಅಥವ ಬಳಕೆಯ ಹೆಸರು:',
 'ipbexpiry' => 'ಅಂತ್ಯ:',
 'ipbreason' => 'ಕಾರಣ:',
-'ipbreasonotherlist' => 'ಇತರ ಕಾರಣ',
 'ipbreason-dropdown' => '*ತಡೆಹಿಡಿಯುವಿಕೆಗೆ ಸಾಧಾರಣ ಕಾರಣಗಳು
 ** ತಪ್ಪು ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸುವುದು
 ** ಪುಟದಲ್ಲಿರುವ ಮಾಹಿತಿಯನ್ನು ತೆಗೆಯುವುದು
@@ -1674,8 +1679,6 @@ $2',
 'ipbsubmit' => 'ಈ ಸದಸ್ಯರನ್ನು ತಡೆಹಿಡಿಯಿರಿ',
 'ipbother' => 'ಇತರ ಸಮಯ:',
 'ipboptions' => '೨ ಗಂಟೆಗಳು:2 hours,೧ ದಿನ:1 day,೩ ದಿನಗಳು:3 days,೧ ವಾರ:1 week,೨ ವಾರಗಳು:2 weeks,೧ ತಿಂಗಳು:1 month,೩ ತಿಂಗಳುಗಳು:3 months,೬ ತಿಂಗಳುಗಳು:6 months,೧ ವರ್ಷ:1 year,ಅನಿರ್ಧಿಷ್ಟ:infinite',
-'ipbotheroption' => 'ಇತರ',
-'ipbotherreason' => 'ಇತರ/ಹೆಚ್ಚುವರಿ ಕಾರಣ:',
 'badipaddress' => 'ಸರಿಯಿಲ್ಲದ IP ವಿಳಾಸ',
 'blockipsuccesssub' => 'ತಡೆಹಿಡಿಯುವಿಕೆ ಯಶಸ್ವಿಯಾಯಿತು.',
 'blockipsuccesstext' => '"$1" ಐಪಿ ಸಂಖ್ಯೆಯನ್ನು ತಡೆ ಹಿಡಿಯಲಾಗಿದೆ. <br /> ತಡೆಗಳನ್ನು ಪರಿಶೀಲಿಸಲು [[Special:BlockList|ತಡೆ ಹಿಡಿಯಲಾಗಿರುವ ಐಪಿ ಸಂಖ್ಯೆಗಳ ಪಟ್ಟಿ]] ನೋಡಿ.',
@@ -1745,7 +1748,6 @@ $2',
 
 ಈ ಪ್ರಸಂಗಗಳಲ್ಲಿ ನೀವು ಸ್ವತಃ ಚರ್ಚೆ ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಬೇಕು ಅಥವ ಒಂದುಗೂಡಿಸಬೇಕು.",
 'movearticle' => 'ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಿ',
-'movenologin' => 'ಲಾಗಿನ್ ಆಗಿಲ್ಲ',
 'movenologintext' => 'ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಲು ನೀವು ನೋಂದಾಯಿತ ಸದಸ್ಯರಾಗಿದ್ದು [[Special:UserLogin|ಲಾಗಿನ್]] ಆಗಿರಬೇಕು.',
 'movenotallowed' => 'ನಿಮಗೆ {{SITENAME}} ಅಲ್ಲಿ ಪುಟಗಳನ್ನು ಸ್ಥಳಾಂತರಿಸುವ ಅನುಮತಿ ಇಲ್ಲ.',
 'newtitle' => 'ಈ ಹೊಸ ಶೀರ್ಷಿಕೆಗೆ:',
@@ -1756,9 +1758,6 @@ $2',
 'articleexists' => 'ಆ ಹೆಸರಿನಲ್ಲಿ ಒಂದು ಪುಟ ಆಗಲೇ ಅಸ್ಥಿತ್ವದಲ್ಲಿದೆ ಅಥವ ನೀವು ಆಯ್ಕೆ ಮಾಡಿರುವ ಹೆಸರು ಇತರ ಕಾರಣಗಳಿಗೆ ಸ್ವೀಕಾರಾರ್ಹವಾಗಿಲ್ಲ.
 ದಯವಿಟ್ಟು ಬೇರೆ ಹೆಸರನ್ನು ಆಯ್ಕೆ ಮಾಡಿ.',
 'cantmove-titleprotected' => 'ಈ ಜಾಗಕ್ಕೆ ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಲು ಆಗುವುದಿಲ್ಲ, ಯಾಕೆಂದರೆ ಆ ಶೀರ್ಷಿಕೆಯು ಸೃಷ್ಟಿಯಾಗದಂತೆ ಸಂರಕ್ಷಿತವಾಗಿದೆ',
-'talkexists' => "'''ಪುಟವು ಯಶಸ್ವಿಯಾಗಿ ಸ್ಥಳಾಂತರಿಸಲ್ಪಟ್ಟಿತು, ಆದರೆ ಹೊಸದಾಗಿ ಸ್ಥಳಾಂತರಿಸಲ್ಪಟ್ಟ ಜಾಗದಲ್ಲಿ ಆಗಲೇ ಒಂದು ಚರ್ಚೆ ಪುಟ ಇರುವುದರಿಂದ ಈ ಪುಟದ ಚರ್ಚೆ ಪುಟವನ್ನು ಸ್ಥಳಾಂತರಿಸಲಾಗಲಿಲ್ಲ.
-ದಯವಿಟ್ಟು ಕೈಯಾರೆ ಈ ಎರಡು ಪುಟಗಳನ್ನು ಒಂದಾಗಿಸಿ.'''",
-'movedto' => 'ಸ್ಥಳಾಂತರಿಸಲ್ಪಟ್ಟ ನೆಲೆ',
 'movetalk' => 'ಜೊತೆಗಿನ ಚರ್ಚೆ ಪುಟವನ್ನೂ ಸ್ಥಳಾಂತರಿಸು',
 'movelogpage' => 'ಸ್ಥಳಾಂತರಿಕೆ ದಾಖಲೆ',
 'movelogpagetext' => 'ಸ್ಥಳಾಂತರಿಸಲಾಗಿರುವ ಪುಟಗಳ ಪಟ್ಟಿ ಕೆಳಗಿದೆ.',
@@ -1800,6 +1799,7 @@ $2',
 'import' => 'ಪುಟಗಳನ್ನು ಅಮದು ಮಾಡಿ',
 'import-interwiki-submit' => 'ಆಮದು',
 'import-interwiki-namespace' => 'ಪುಟಗಳನ್ನು ಈ ಪುಟಪ್ರಬೇಧಕ್ಕೆ ವರ್ಗಾಯಿಸು:',
+'import-comment' => 'ಟಿಪ್ಪಣಿ :',
 'importstart' => 'ಪುಟಗಳು ಆಮದಾಗುತ್ತಿದೆ...',
 'import-revision-count' => '$1 {{PLURAL:$1|ಬದಲಾವಣೆ|ಬದಲಾವಣೆಗಳು}}',
 'importnopages' => 'ಆಮದು ಮಾಡಲು ಯಾವ ಪುಟವೂ ಇಲ್ಲ.',
@@ -2036,15 +2036,10 @@ $1',
 'exif-gpsdirection-t' => 'ನಿಜ ದಿಕ್ಕು',
 'exif-gpsdirection-m' => 'ಆಯಸ್ಕಾಂತೀಯ ದಿಕ್ಕು',
 
-# External editor support
-'edit-externally' => 'ಬಾಹ್ಯ ತಂತ್ರಾಂಶವನ್ನು ಉಪಯೋಗಿಸಿ ಇದನ್ನು ಸಂಪಾದಿಸಿ',
-'edit-externally-help' => '(ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗೆ [https://www.mediawiki.org/wiki/Manual:External_editors ಸ್ಥಾಪನೆಯ ನಿರ್ದೇಶಗಳನ್ನು] ನೋಡಿ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ಎಲ್ಲಾ',
 'namespacesall' => 'ಎಲ್ಲಾ',
 'monthsall' => 'ಎಲ್ಲಾ',
-'limitall' => 'ಎಲ್ಲಾ',
 
 # Email address confirmation
 'confirmemail' => 'ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಖಾತ್ರಿ ಮಾಡಿ',
@@ -2064,7 +2059,6 @@ $1',
 'confirmemail_needlogin' => 'ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸವನ್ನು ಧೃಡೀಕರಿಸಲು ನೀವು $1 ಮಾಡಬೇಕು.',
 'confirmemail_success' => 'ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ ಖಾತ್ರಿಗೊಂಡಿದೆ. ಈಗ ನೀವು ಲಾಗಿನ್ ಆಗಿ ವಿಕಿಯನ್ನು ಉಪಯೋಗಿಸಬಹುದು.',
 'confirmemail_loggedin' => 'ನಿಮ್ಮ ಇ-ಅಂಚೆ ವಿಳಾಸ ಈಗ ಖಾತ್ರಿಗೊಂಡಿದೆ.',
-'confirmemail_error' => 'ನಿಮ್ಮ ಧೃಡೀಕರಣವನ್ನು ಉಳಿಸುವಲ್ಲಿ ಏನೋ ದೋಷವಾಯಿತು.',
 'confirmemail_subject' => '{{SITENAME}} ಇ-ಅಂಚೆ ವಿಳಾಸ ಧೃಡೀಕರಣ',
 'confirmemail_body' => 'ಈ ಇ-ಅಂಚೆ ವಿಳಾಸದೊಂದಿಗೆ {{SITENAME}} ಅಲ್ಲಿ, ಯಾರೊ (ಪ್ರಾಯಶಃ ನೀವು) $1 ಐಪಿ ವಿಳಾಸದಿಂದ ,
 "$2" ಖಾತೆಯನ್ನು ತೆರೆದಿದ್ದಾರೆ.
index d9a7ff7..409f006 100644 (file)
@@ -10,7 +10,9 @@
  * @author Albamhandae
  * @author Altostratus
  * @author Chanhee
+ * @author ChongDae
  * @author Chulki Lee
+ * @author Clockoon
  * @author Cwt96
  * @author Devunt
  * @author Ficell
  * @author ITurtle
  * @author Idh0854
  * @author Jmkim dot com
+ * @author Jskang
  * @author Kaganer
  * @author Klutzy
  * @author Kwj2772
  * @author LFM
+ * @author Leehoy
  * @author Mintz0223
  * @author Pi.C.Noizecehx
+ * @author Priviet
  * @author PuzzletChung
  * @author TheAlpha for knowledge
  * @author ToePeu
+ * @author Yjs5497
  * @author Yknok29
  * @author לערי ריינהארט
  * @author 관인생략
@@ -41,7 +47,7 @@
 
 $namespaceNames = array(
        NS_MEDIA            => '미디어',
-       NS_SPECIAL          => '특수기능',
+       NS_SPECIAL          => '특수',
        NS_TALK             => '토론',
        NS_USER             => '사용자',
        NS_USER_TALK        => '사용자토론',
@@ -59,7 +65,8 @@ $namespaceNames = array(
 );
 
 $namespaceAliases = array(
-       '특'  => NS_SPECIAL,
+       '특' => NS_SPECIAL,
+       '특수기능' => NS_SPECIAL,
        'MediaWiki토론' => NS_MEDIAWIKI_TALK,
        '그림' => NS_FILE,
        '파일토론' => NS_FILE_TALK,
@@ -68,12 +75,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( '활동적인사용자' ),
        'Allmessages'               => array( '모든메시지' ),
+       'AllMyUploads'              => array( '모든내올린파일', '모든내파일' ),
        'Allpages'                  => array( '모든문서' ),
        'Ancientpages'              => array( '오래된문서' ),
        'Badtitle'                  => array( '잘못된제목', '인식불가제목', '잘못된이름', '인식불가이름' ),
        'Blankpage'                 => array( '빈문서' ),
        'Block'                     => array( '차단', 'IP차단', '사용자차단' ),
-       'Blockme'                   => array( '자기차단', '자가차단' ),
        'Booksources'               => array( '책찾기' ),
        'BrokenRedirects'           => array( '끊긴넘겨주기' ),
        'Categories'                => array( '분류' ),
@@ -85,19 +92,19 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '계정만들기', '가입' ),
        'Deadendpages'              => array( '막다른문서' ),
        'DeletedContributions'      => array( '삭제된기여' ),
-       'Disambiguations'           => array( '동음이의', '동음이의문서' ),
        'DoubleRedirects'           => array( '이중넘겨주기' ),
        'EditWatchlist'             => array( '주시문서목록편집' ),
        'Emailuser'                 => array( '이메일보내기' ),
+       'ExpandTemplates'           => array( '틀전개' ),
        'Export'                    => array( '내보내기' ),
        'Fewestrevisions'           => array( '역사짧은문서' ),
-       'FileDuplicateSearch'       => array( '중복파일찾기' ),
+       'FileDuplicateSearch'       => array( '중복파일검색', '중복파일찾기' ),
        'Filepath'                  => array( '파일경로', '그림경로' ),
        'Import'                    => array( '가져오기' ),
        'Invalidateemail'           => array( '이메일인증취소', '이메일인증해제' ),
        'JavaScriptTest'            => array( '자바스크립트시험', '자바스크립트테스트' ),
-       'BlockList'                 => array( 'ì°¨ë\8b¨ë\90\9cì\82¬ì\9a©ì\9e\90', 'ì°¨ë\8b¨ëª©ë¡\9d', 'IPì°¨ë\8b¨ëª©ë¡\9d' ),
-       'LinkSearch'                => array( '링크찾기', '링크검색' ),
+       'BlockList'                 => array( 'ì°¨ë\8b¨ëª©ë¡\9d', 'IPì°¨ë\8b¨ëª©ë¡\9d', 'ì°¨ë\8b¨ë\90\9cì\82¬ì\9a©ì\9e\90' ),
+       'LinkSearch'                => array( '링크검색', '링크찾기' ),
        'Listadmins'                => array( '관리자', '관리자목록' ),
        'Listbots'                  => array( '봇', '봇목록' ),
        'Listfiles'                 => array( '파일', '그림', '파일목록', '그림목록' ),
@@ -109,7 +116,7 @@ $specialPageAliases = array(
        'Lonelypages'               => array( '외톨이문서', '홀로된문서' ),
        'Longpages'                 => array( '긴문서' ),
        'MergeHistory'              => array( '역사합치기' ),
-       'MIMEsearch'                => array( 'MIME찾기', 'MIME검색' ),
+       'MIMEsearch'                => array( 'MIME검색', 'MIME찾기' ),
        'Mostcategories'            => array( '많이분류된문서' ),
        'Mostimages'                => array( '많이쓰는파일', '많이쓰는그림' ),
        'Mostinterwikis'            => array( '인터위키많은문서' ),
@@ -133,12 +140,14 @@ $specialPageAliases = array(
        'Protectedpages'            => array( '보호된문서' ),
        'Protectedtitles'           => array( '만들기보호된문서', '생성보호된문서' ),
        'Randompage'                => array( '임의문서' ),
+       'RandomInCategory'          => array( '분류에있는임의문서' ),
        'Randomredirect'            => array( '임의넘겨주기' ),
        'Recentchanges'             => array( '최근바뀜' ),
        'Recentchangeslinked'       => array( '링크최근바뀜' ),
        'Redirect'                  => array( '넘겨주기' ),
+       'ResetTokens'               => array( '토큰재설정' ),
        'Revisiondelete'            => array( '특정판삭제' ),
-       'Search'                    => array( '찾기', '검색' ),
+       'Search'                    => array( '검색', '찾기' ),
        'Shortpages'                => array( '짧은문서' ),
        'Specialpages'              => array( '특수문서', '특수기능' ),
        'Statistics'                => array( '통계' ),
@@ -155,7 +164,7 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( '안쓰는틀', '쓰이지않는틀' ),
        'Unwatchedpages'            => array( '주시안되는문서' ),
        'Upload'                    => array( '올리기', '파일올리기', '그림올리기', '업로드' ),
-       'UploadStash'               => array( '올린비공개파일' ),
+       'UploadStash'               => array( '올린비공개파일', '비공개로올린파일' ),
        'Userlogin'                 => array( '로그인' ),
        'Userlogout'                => array( '로그아웃' ),
        'Userrights'                => array( '권한조정', '관리자하기', '봇하기' ),
@@ -239,6 +248,7 @@ $magicWords = array(
        'img_center'                => array( '1', '가운데', 'center', 'centre' ),
        'img_framed'                => array( '1', '프레임', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', '프레임없음', 'frameless' ),
+       'img_lang'                  => array( '1', '언어=$1', 'lang=$1' ),
        'img_page'                  => array( '1', '문서=$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', '위오른쪽', '위오른쪽=$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', '테두리', 'border' ),
@@ -281,6 +291,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', '판년', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', '판타임스탬프', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', '판사용자', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', '판크기', 'REVISIONSIZE' ),
        'plural'                    => array( '0', '복수:', '복수형:', 'PLURAL:' ),
        'fullurl'                   => array( '0', '전체주소:', 'FULLURL:' ),
        'fullurle'                  => array( '0', '전체주소E:', 'FULLURLE:' ),
@@ -364,7 +375,7 @@ $messages = array(
 'tog-editondblclick' => '더블 클릭으로 문서 편집하기',
 'tog-editsection' => '[편집] 링크로 부분 편집하기',
 'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 문단 편집하기 활성화',
-'tog-showtoc' => '문서의 차례 보여주기 (머릿글이 4개 이상인 경우)',
+'tog-showtoc' => '문서의 목차 보여주기 (머릿글이 4개 이상인 경우)',
 'tog-rememberpassword' => '이 브라우저에서 로그인 상태를 저장하기 (최대 $1{{PLURAL:$1|일}})',
 'tog-watchcreations' => '내가 만드는 문서와 내가 올린 파일을 주시문서 목록에 추가',
 'tog-watchdefault' => '내가 편집하는 문서와 파일을 주시문서 목록에 추가',
@@ -373,7 +384,6 @@ $messages = array(
 'tog-minordefault' => '사소한 편집을 기본적으로 선택하기',
 'tog-previewontop' => '편집 상자 앞에 미리 보기 보기',
 'tog-previewonfirst' => '처음 편집할 때 미리 보기 보기',
-'tog-nocache' => '브라우저 문서 캐시 비활성화',
 'tog-enotifwatchlistpages' => '주시문서 목록에 속한 문서나 파일이 바뀌면 이메일로 알림',
 'tog-enotifusertalkpages' => '내 토론 문서가 바뀌면 이메일로 알림',
 'tog-enotifminoredits' => '문서나 파일의 사소한 편집도 이메일로 알림',
@@ -509,7 +519,6 @@ $messages = array(
 'qbedit' => '편집',
 'qbpageoptions' => '문서 기능',
 'qbmyoptions' => '내 사용자 문서',
-'qbspecialpages' => '특수 문서',
 'faq' => '자주 묻는 질문',
 'faqpage' => 'Project:FAQ',
 
@@ -542,7 +551,7 @@ $messages = array(
 'history' => '문서 역사',
 'history_short' => '역사',
 'updatedmarker' => '마지막으로 방문한 뒤 바뀜',
-'printableversion' => '인쇄용 문서',
+'printableversion' => '인쇄용 ',
 'permalink' => '고유 링크',
 'print' => '인쇄',
 'view' => '보기',
@@ -728,9 +737,6 @@ URL을 잘못 입력하였거나, 잘못된 링크를 따라갔을 수 있습니
 'perfcachedts' => '다음 자료는 캐시된 것으로, $1에 마지막으로 새로 고쳐졌습니다.  캐시에 최대 {{PLURAL:$4|결과 $4개}}가 있습니다.',
 'querypage-no-updates' => '이 문서의 새로 고침이 현재 비활성화되어 있습니다.
 자료가 잠시 새로 고치지 않을 것입니다.',
-'wrong_wfQuery_params' => 'wfQuery()에서 잘못된 매개변수 발생<br />
-함수: $1<br />
-쿼리: $2',
 'viewsource' => '원본 보기',
 'viewsource-title' => '$1 문서 원본 보기',
 'actionthrottled' => '동작 중지',
@@ -780,7 +786,7 @@ $2',
 'yourname' => '사용자 이름:',
 'userlogin-yourname' => '사용자 이름',
 'userlogin-yourname-ph' => '사용자 이름을 입력하세요',
-'createacct-another-username-ph' => '사용자 이름을 입력하세요',
+'createacct-another-username-ph' => '사용자 이름(계정명)을 입력하세요',
 'yourpassword' => '비밀번호:',
 'userlogin-yourpassword' => '비밀번호',
 'userlogin-yourpassword-ph' => '비밀번호를 입력하세요',
@@ -805,7 +811,7 @@ $2',
 'userlogin-noaccount' => '계정이 없나요?',
 'userlogin-joinproject' => '{{SITENAME}}에 가입하세요',
 'nologin' => '계정이 없나요? $1.',
-'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93¤ê¸°',
+'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93\9cì\84¸ì\9a\94',
 'createaccount' => '계정 만들기',
 'gotaccount' => '계정이 이미 있다면, $1.',
 'gotaccountlink' => '로그인하세요',
@@ -866,7 +872,7 @@ $2',
 'passwordtooshort' => '비밀번호는 {{PLURAL:$1|$1 글자}} 이상이어야 합니다.',
 'password-name-match' => '비밀번호는 사용자 이름과 반드시 달라야 합니다.',
 'password-login-forbidden' => '이 사용자 이름과 비밀번호는 사용할 수 없습니다.',
-'mailmypassword' => '새 비밀번호를 이메일로 보내기',
+'mailmypassword' => '비밀번호 재설정',
 'passwordremindertitle' => '{{SITENAME}}의 새 임시 비밀번호',
 'passwordremindertext' => '$1 IP 주소에서 누군가가 아마 자신이 {{SITENAME}} ($4)의 새 비밀번호를 요청했습니다.
 "$2" 사용자의 임시 비밀번호는 "$3"로 설정되었습니다. 이것이 자신이 의도한 바라면
@@ -918,7 +924,7 @@ $1 기다렸다가 다시 시도하세요.',
 'user-mail-no-body' => '비어 있거나 지나치게 짧은 본문으로 이메일을 보내려고 했습니다.',
 
 # Change password dialog
-'resetpass' => '비밀번호 바꾸기',
+'changepassword' => '비밀번호 바꾸기',
 'resetpass_announce' => '이메일로 받은 임시 비밀번호로 로그인했습니다.
 로그인을 마치려면 새 비밀번호를 여기에서 설정해야 합니다:',
 'resetpass_text' => '<!-- 여기에 텍스트를 추가하세요 -->',
@@ -940,7 +946,7 @@ $1 기다렸다가 다시 시도하세요.',
 # Special:PasswordReset
 'passwordreset' => '비밀번호 재설정',
 'passwordreset-text-one' => '비밀번호를 재설정하려면 이 양식을 작성해주세요.',
-'passwordreset-text-many' => '{{PLURAL:$1|비밀번호를 재설정하려면 필드 중 하나를 채우세요.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|이메일로 임시 비밀번호를 발급받으려면 필드 중 하나를 채우세요.}}',
 'passwordreset-legend' => '비밀번호 재설정',
 'passwordreset-disabled' => '이 위키에서는 비밀번호를 재설정할 수 없습니다.',
 'passwordreset-emaildisabled' => '이 위키에서 이메일 기능이 비활성화되어 있습니다.',
@@ -1005,7 +1011,7 @@ $2
 'italic_sample' => '기울인 글씨',
 'italic_tip' => '기울인 글씨',
 'link_sample' => '링크 제목',
-'link_tip' => 'ì\95\88쪽 ë§\81í\81¬',
+'link_tip' => 'ë\82´ë¶\80 ê³ ë¦¬',
 'extlink_sample' => 'http://www.example.com 사이트 이름',
 'extlink_tip' => '바깥 링크 (주소 앞에 http://가 있어야 합니다)',
 'headline_sample' => '제목',
@@ -1020,7 +1026,7 @@ $2
 # Edit pages
 'summary' => '요약:',
 'subject' => '주제/제목:',
-'minoredit' => '사소한 편집',
+'minoredit' => '사소한 편집입니다',
 'watchthis' => '이 문서 주시하기',
 'savearticle' => '저장',
 'preview' => '미리 보기',
@@ -1212,6 +1218,8 @@ IP 주소는 여러 사용자가 공유할 수 있습니다.
 'content-not-allowed-here' => '"$1" 내용은 [[$2]] 문서예 허용하지 않습니다',
 'editwarning-warning' => '이 페이지에서 벗어나면 저장하지 않은 바뀜이 모두 사라집니다.
 로그인을 했다면, 환경 설정의 "편집 상자"에서 이 경고를 띄우지 않도록 설정할 수 있습니다.',
+'editpage-notsupportedcontentformat-title' => '지원하지 않는 컨텐츠 형식',
+'editpage-notsupportedcontentformat-text' => '컨텐츠 모델 $2 에서는 컨텐츠형식 $1을 지원하지 않습니다.',
 
 # Content models
 'content-model-wikitext' => '위키텍스트',
@@ -1227,8 +1235,8 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'post-expand-template-inclusion-warning' => "'''경고:''' 틀 포함 크기가 너무 큽니다.
 일부 틀은 포함되지 않을 수 있습니다.",
 'post-expand-template-inclusion-category' => '사용한 틀의 크기가 지나치게 큰 문서의 목록',
-'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 수가 하나 이상 포함되어 있습니다.
-이 수는 생략했습니다.",
+'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 수가 하나 이상 포함되어 있습니다.
+이 수는 생략했습니다.",
 'post-expand-template-argument-category' => '생략된 틀 변수를 포함한 문서',
 'parser-template-loop-warning' => '재귀적인 틀이 발견되었습니다: [[$1]]',
 'parser-template-recursion-depth-warning' => '틀 반복 횟수 제한을 초과함($1)',
@@ -1254,6 +1262,9 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'cantcreateaccount-text' => "현재 아이피 주소('''$1''')는 [[User:$3|$3]] 사용자에 의해 계정 만들기가 차단되었습니다.
 
 차단 이유는 다음과 같습니다: $2",
+'cantcreateaccount-range-text' => "당신의 IP 주소('''\$4''')가 속해 있는 '''\$1''' 대역에서의 계정 생성을 [[User:\$3|\$3]] 사용자가 차단하였습니다.
+
+\$3 사용자가 제시한 이유는 \"\$2\"입니다.",
 
 # History pages
 'viewpagelogs' => '이 문서의 기록 보기',
@@ -1322,10 +1333,6 @@ $2개 보다 적게 {{PLURAL:$2|써야}} 하지만 {{PLURAL:$1|지금은 $1개
 'revisiondelete' => '판 삭제/되살리기',
 'revdelete-nooldid-title' => '대상 판이 잘못되었습니다.',
 'revdelete-nooldid-text' => '이 기능을 수행할 특정 판을 제시하지 않았거나 해당 판이 없습니다. 또는 현재 판을 숨기려 하고 있을 수도 있습니다.',
-'revdelete-nologtype-title' => '기록의 종류가 제시되지 않았습니다.',
-'revdelete-nologtype-text' => '이 명령을 수행할 기록의 종류를 제시하지 않았습니다.',
-'revdelete-nologid-title' => '잘못된 기록',
-'revdelete-nologid-text' => '이 기능을 수행할 특정 기록을 제시하지 않았거나 제시한 기록이 존재하지 않습니다.',
 'revdelete-no-file' => '해당 파일이 존재하지 않습니다.',
 'revdelete-show-file-confirm' => '정말 "<nowiki>$1</nowiki>" 파일의 삭제된 $2 $3 버전을 보시겠습니까?',
 'revdelete-show-file-submit' => '예',
@@ -1359,8 +1366,6 @@ $1",
 'logdelete-failure' => "'''기록 보이기 설정을 바꾸지 못했습니다:'''
 $1",
 'revdel-restore' => '보이기 설정 바꾸기',
-'revdel-restore-deleted' => '삭제된 판',
-'revdel-restore-visible' => '공개된 판',
 'pagehist' => '문서 역사',
 'deletedhist' => '삭제된 역사',
 'revdelete-hide-current' => '$1 $2 판을 숨기는 도중 오류 발생: 이 판은 현재 판입니다.
@@ -1440,12 +1445,8 @@ $1",
 # 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개}}',
@@ -1454,10 +1455,8 @@ $1",
 'nextn-title' => '다음 {{PLURAL:$1|결과}} $1개',
 'shown-title' => '쪽마다 {{PLURAL:$1|결과}} $1개씩 보기',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) 보기',
-'searchmenu-legend' => '검색 설정',
 'searchmenu-exists' => "'''이 위키에 \"[[:\$1]]\"의 이름을 가진 문서가 있습니다.'''",
 'searchmenu-new' => "'''이 위키에 \"[[:\$1]]\" 문서를 만드세요!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|이 접두어로 시작하는 문서 찾아보기]]',
 'searchprofile-articles' => '본문',
 'searchprofile-project' => '도움말 및 프로젝트 문서',
 'searchprofile-images' => '멀티미디어',
@@ -1466,7 +1465,7 @@ $1",
 'searchprofile-articles-tooltip' => '$1에서 검색',
 'searchprofile-project-tooltip' => '$1에서 검색',
 'searchprofile-images-tooltip' => '파일 검색',
-'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 검색',
+'searchprofile-everything-tooltip' => '모든 문서 검색(토론 문서를 포함)',
 'searchprofile-advanced-tooltip' => '다음 설정한 이름공간에서 검색',
 'search-result-size' => '$1 ({{PLURAL:$2|1 단어|$2 단어}})',
 'search-result-category-size' => '{{PLURAL:$1|문서 1개|문서 $1개}}, {{PLURAL:$2|하위 분류 1개|하위 분류 $2개}}, {{PLURAL:$3|파일 1개|파일 $3개}}',
@@ -1478,21 +1477,16 @@ $1",
 'search-interwiki-default' => '$1 결과:',
 'search-interwiki-more' => '(더 보기)',
 'search-relatedarticle' => '관련',
-'mwsuggest-disable' => '검색 제안 비활성화',
 'searcheverything-enable' => '모든 이름공간에서 검색',
 'searchrelated' => '관련',
 'searchall' => '모두',
 'showingresults' => "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
 'showingresultsnum' => "'''$2'''번 부터의 {{PLURAL:$3|결과 '''1'''개|결과 '''$3'''개}} 입니다.",
-'showingresultsheader' => "'''$4''' 검색어에 대하여 {{PLURAL:$5|결과 '''$3'''개 중 '''$1'''개|결과 '''$3'''개 중 '''$1 - $2'''번째}}를 보여 주고 있습니다",
-'nonefound' => "'''참고''': 일부 이름공간만 기본으로 검색합니다.
-토론 문서나 틀 등의 모든 내용을 검색하려면 접두어로 '''all:'''를 시도하거나, 원하는 이름공간을 접두어로 사용하세요.",
+'showingresultsheader' => "'''$4''' 검색어에 대한 {{PLURAL:$5|결과 '''$3'''개 중 '''$1'''개|결과 '''$3'''개 중 '''$1 - $2'''번째}}",
 'search-nonefound' => '검색어와 일치하는 결과가 없습니다.',
-'powersearch' => '고급 검색',
 'powersearch-legend' => '고급 검색',
 'powersearch-ns' => '다음 이름공간에서 검색:',
 'powersearch-redir' => '넘겨주기 목록',
-'powersearch-field' => '검색',
 'powersearch-togglelabel' => '확인:',
 'powersearch-toggleall' => '모두',
 'powersearch-togglenone' => '모두 제외',
@@ -1507,7 +1501,6 @@ $1",
 'mypreferences' => '환경 설정',
 'prefs-edits' => '편집 횟수:',
 'prefsnologintext2' => '사용자 환경 설정을 설정하려면 $1하십시오.',
-'changepassword' => '비밀번호 바꾸기',
 'prefs-skin' => '스킨',
 'skin-preview' => '미리 보기',
 'datedefault' => '기본값',
@@ -1530,13 +1523,11 @@ $1",
 'prefs-email' => '이메일 설정',
 'prefs-rendering' => '문서 보이기 설정',
 'saveprefs' => '저장',
-'resetprefs' => '저장하지 않은 설정 되돌리기',
 'restoreprefs' => '(모든 부분에서) 모두 기본 설정으로 되돌리기',
 'prefs-editing' => '편집 상자',
 'rows' => '줄 수:',
 'columns' => '열 수:',
 'searchresultshead' => '검색',
-'resultsperpage' => '쪽마다 보이는 결과 수:',
 'stub-threshold' => '링크를 <a href="#" class="stub">토막글</a> 형식으로 보여줄 문서 크기 (바이트 수):',
 'stub-threshold-disabled' => '비활성화됨',
 'recentchangesdays' => '최근 바뀜에 보여줄 날짜 수:',
@@ -1551,7 +1542,6 @@ $1",
 'localtime' => '현지 시각:',
 'timezoneuseserverdefault' => '위키 기본값($1)을 사용',
 'timezoneuseoffset' => '기타 (시차를 입력해주세요)',
-'timezoneoffset' => '시차¹:',
 'servertime' => '서버 시각:',
 'guesstimezone' => '웹 브라우저 설정에서 가져오기',
 'timezoneregion-africa' => '아프리카',
@@ -1592,16 +1582,16 @@ HTML 태그를 확인하세요.',
 'badsiglength' => '서명이 너무 깁니다.
 서명은 $1 {{PLURAL:$1|글자}}보다 짧아야 합니다.',
 'yourgender' => '어떻게 성별을 알려주고 싶습니까?',
-'gender-unknown' => '자세히 알려주기 싫습니다',
+'gender-unknown' => '밝히고 싶지 않습니다.',
 'gender-male' => '위키 문서를 편집하는 남자입니다',
 'gender-female' => '위키 문서를 편집하는 여자입니다',
-'prefs-help-gender' => '이 사용자 환경 설정을 설정하는 것은 선택 사항입니다.
\86\8cí\94\84í\8a¸ì\9b¨ì\96´ë\8a\94 ë\8b¤ë¥¸ ì\82¬ì\9a©ì\9e\90ì\97\90ê²\8c í\99\94ë©´ì\9d\84 ë³´ì\97¬ì£¼ì\96´ ë\8b¹ì\8b ì\9d\84 ì\96¸ê¸\89í\95  ë\95\8c ì \81ì \88í\95\9c ì\84±ë³\84 ë¬¸ë²\95ì\9d\84 ì\82¬ì\9a©í\95\98ë\8a\94 ë\8d° ì\9d´ ê°\92ì\9d\84 ì\82¬ì\9a©í\95©ë\8b\88ë\8b¤.
-이 정보는 공개됩니다.',
+'prefs-help-gender' => '이 항목은 선택 사항입니다.
 \81ì \88í\95\9c ë¬¸ë²\95ì \81 ì\84±ë³\84ì\9d\84 ì\82¬ì\9a©í\95\98ì\97¬ ë\8b¹ì\8b ì\9d\84 ì§\80ì¹­í\95\98ê±°ë\82\98 ë\8b¤ë¥¸ ì\82¬ë\9e\8cë\93¤ì\97\90ê²\8c ë\8b¹ì\8b ì\9d\84 ì\96¸ê¸\89í\95\98ë\8a\94 ê²½ì\9a°ì\97\90 ì\9d´ í\95­ëª©ì\9d\98 ê°\92ì\9d´ ì\82¬ì\9a©ë\90©ë\8b\88ë\8b¤.
+이것은 공개 항목입니다.',
 'email' => '이메일',
 'prefs-help-realname' => '실명은 선택 사항입니다.
 실명을 입력하면 문서 기여에 자신의 이름이 들어가게 됩니다.',
-'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호 바꾸기를 위해 필요합니다.',
+'prefs-help-email' => '이메일 주소 입력은 선택 사항입니다. 다만 비밀번호를 잊었을 때 비밀번호를 재설정하기 위해 필요합니다.',
 'prefs-help-email-others' => '자신의 문서나 토론 문서에 있는 이메일 보내기 링크로 다른 사용자가 연락할 수 있게 할 수도 있습니다.
 이 경우에도 이메일 주소는 다른 사용자가 연락할 때 공개되지 않습니다.',
 'prefs-help-email-required' => '이메일 주소가 필요합니다.',
@@ -1623,6 +1613,7 @@ HTML 태그를 확인하세요.',
 'prefs-tokenwatchlist' => '토큰',
 'prefs-diffs' => '차이',
 'prefs-help-prefershttps' => '이 사용자 환경 설정은 다음 로그인에 적용됩니다.',
+'prefs-tabs-navigation-hint' => '팁: 탭 목록에서 탭 사이를 둘러보려면 왼쪽과 오른쪽 화살표 키를 사용할 수 있습니다.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => '이메일 주소가 올바른 것으로 보입니다',
@@ -1804,20 +1795,21 @@ HTML 태그를 확인하세요.',
 'recentchanges-summary' => '위키의 최근 바뀜이 나와 있습니다.',
 'recentchanges-noresult' => '지정한 조건과 일치하는 주어진 기간 동안 바뀜이 없습니다.',
 'recentchanges-feed-description' => '위키의 최근 바뀜이 나와 있습니다.',
-'recentchanges-label-newpage' => '새로운 문서',
+'recentchanges-label-newpage' => '새 문서',
 'recentchanges-label-minor' => '사소한 편집',
 'recentchanges-label-bot' => '봇의 편집',
-'recentchanges-label-unpatrolled' => '아직 검토하지 않은 편집',
+'recentchanges-label-unpatrolled' => '아직 순찰하지 않은 편집',
 'recentchanges-label-plusminus' => '바이트로 표기된 바뀐 문서 크기',
-'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서의 목록]]도 참고하세요)',
-'rcnote' => "다음은 $4 $5 까지의 {{PLURAL:$2|'''$2'''일}}동안 {{PLURAL:$1|바뀐 문서 '''$1'''개입니다}}.",
+'recentchanges-legend-heading' => "'''범례:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 보세요)',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 문서 '''$1'''개입니다.",
 'rclistfrom' => '$1 이래로 새로 바뀐 문서 보기',
 'rcshowhideminor' => '사소한 편집을 $1',
 'rcshowhidebots' => '봇을 $1',
-'rcshowhideliu' => '등록 사용자를 $1',
+'rcshowhideliu' => '등록 사용자를 $1',
 'rcshowhideanons' => '익명 사용자를 $1',
-'rcshowhidepatr' => '검토된 편집을 $1',
+'rcshowhidepatr' => '순찰된 편집을 $1',
 'rcshowhidemine' => '내 편집을 $1',
 'rclinks' => '최근 $2일간의 $1개 바뀐 문서 보기<br />$3',
 'diff' => '비교',
@@ -1844,7 +1836,7 @@ HTML 태그를 확인하세요.',
 'recentchangeslinked-summary' => "여기를 가리키는 문서(분류일 경우 이 분류에 포함된 문서)에 대한 최근 바뀜이 나와 있습니다.
 [[Special:Watchlist|주시하는 문서]]는 '''굵은''' 글씨로 나타납니다.",
 'recentchangeslinked-page' => '문서 이름:',
-'recentchangeslinked-to' => '해당 문서를 링크한 문서의 바뀜 보기',
+'recentchangeslinked-to' => '해당 문서를 가리키는 문서의 바뀜 보기',
 
 # Upload
 'upload' => '파일 올리기',
@@ -1938,6 +1930,7 @@ $2 {{PLURAL:$3|형식만 사용할 수 있습니다}}.',
 [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => '현재 올리고 있는 {{PLURAL:$1|파일}}이 아래 파일과 중복됩니다:',
 'file-deleted-duplicate' => '이 파일과 같은 파일 ([[:$1]])이 이전에 삭제된 적이 있습니다. 파일을 다시 올리기 전에 문서의 삭제 기록을 확인해 주시기 바랍니다.',
+'file-deleted-duplicate-notitle' => '이 파일과 같은 파일이 삭제된 이력이 있습니다. 업로드하기에 앞서, 삭제된 파일의 이력을 확인할 수 있는 권한을 가진 담당자에게 먼저 문의하기 바랍니다.',
 'uploadwarning' => '올리기 경고',
 'uploadwarning-text' => '아래의 파일 설명을 수정하고 다시 시도해 주세요.',
 'savefile' => '파일 저장',
@@ -2134,7 +2127,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'filehist-current' => '현재',
 'filehist-datetime' => '날짜/시간',
 'filehist-thumb' => '섬네일',
-'filehist-thumbtext' => '$1 판의 일',
+'filehist-thumbtext' => '$1 판의 섬네일',
 'filehist-nothumb' => '섬네일 없음',
 'filehist-user' => '사용자',
 'filehist-dimensions' => '크기',
@@ -2288,6 +2281,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'ninterwikis' => '{{PLURAL:$1|인터위키}} $1개',
 'nlinks' => '{{PLURAL:$1|링크}} $1개',
 'nmembers' => '{{PLURAL:$1|문서}} $1개',
+'nmemberschanged' => '$1 → $2{{PLURAL:$2|개}}',
 'nrevisions' => '{{PLURAL:$1|판}} $1개',
 'nviews' => '$1번 {{PLURAL:$1|읽음}}',
 'nimagelinks' => '{{PLURAL:$1|문서}} $1개에서 사용 중',
@@ -2326,10 +2320,9 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'protectedpages' => '보호된 문서 목록',
 'protectedpages-indef' => '오른쪽 조건에 맞는 보호만 보기',
 'protectedpages-cascade' => '연쇄적 보호만 보기',
-'protectedpagestext' => '다음 문서는 이동이나 편집이 불가능하도록 보호되어 있습니다.',
+'protectedpages-noredirect' => '넘겨주기 숨김',
 'protectedpagesempty' => '보호되어 있는 문서가 없습니다.',
 'protectedtitles' => '만들기 보호된 표제어 목록',
-'protectedtitlestext' => '다음 표제어는 만들기가 금지되어 있습니다.',
 'protectedtitlesempty' => '해당 조건에 맞는 만들기 금지 표제어가 없습니다.',
 'listusers' => '사용자 목록',
 'listusers-editsonly' => '기여가 있는 사용자만 보기',
@@ -2355,7 +2348,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'querypage-disabled' => '이 특수 문서는 성능상의 이유로 비활성화되었습니다.',
 
 # Book sources
-'booksources' => 'ì±\85 ì\9e\90ë£\8c',
+'booksources' => 'ì±\85 ì°¾ê¸°',
 'booksources-search-legend' => '책 원본 검색',
 'booksources-isbn' => 'ISBN:',
 'booksources-go' => '검색',
@@ -2382,9 +2375,6 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'allpagesto' => '다음으로 끝나는 문서 보기:',
 'allarticles' => '모든 문서',
 'allinnamespace' => '$1 이름공간의 모든 문서',
-'allnotinnamespace' => '$1 이름공간을 제외한 모든 문서',
-'allpagesprev' => '이전',
-'allpagesnext' => '다음',
 'allpagessubmit' => '보기',
 'allpagesprefix' => '다음으로 시작하는 문서 보기:',
 'allpagesbadtitle' => '주어진 문서 제목이 잘못되었거나 다른 사이트로 연결되는 인터위키가 있습니다.
@@ -2516,7 +2506,7 @@ URL이 맞고 해당 웹사이트가 작동하는지 확인해주세요.',
 'notvisiblerev' => '이 판은 삭제되었습니다.',
 'watchlist-details' => '토론을 제외하고 {{PLURAL:$1|문서 $1개}}를 주시하고 있습니다.',
 'wlheader-enotif' => '이메일 알림 기능이 활성화되었습니다.',
-'wlheader-showupdated' => "ë§\88ì§\80ë§\89ì\9c¼ë¡\9c ë°©ë¬¸í\95\9c ì\9d´í\9b\84ì\97\90 ë°\94ë\80\90 ë¬¸ì\84\9cë\8a\94 '''êµµì\9d\80 ê¸\80ì\94¨'''ë¡\9c ë³´ì\97¬ì§\91니다.",
+'wlheader-showupdated' => "ë§\88ì§\80ë§\89ì\9c¼ë¡\9c ë°©ë¬¸í\95\9c ì\9d´í\9b\84ì\97\90 ë°\94ë\80\90 ë¬¸ì\84\9cë\8a\94 '''êµµì\9d\80 ê¸\80ì\94¨'''ë¡\9c ë³´ì\9e\85니다.",
 'watchmethod-recent' => '주시된 문서를 확인하고자 최근 편집을 확인',
 'watchmethod-list' => '최근 편집을 확인하고자 주시된 문서 확인',
 'watchlistcontains' => '{{PLURAL:$1|문서 $1개}}를 주시하고 있습니다.',
@@ -2610,6 +2600,7 @@ $UNWATCHURL
 'delete-warning-toobig' => '이 문서에는 {{PLURAL:$1|편집 역사}}가 $1개 있습니다.
 편집 역사가 긴 문서를 삭제하면 {{SITENAME}} 데이터베이스 동작에 큰 영향을 줄 수 있습니다.
 주의해 주세요.',
+'deleting-backlinks-warning' => "'''경고:''' 삭제하려는 문서로의 링크를 가진 다른 문서가 있습니다.",
 
 # Rollback
 'rollback' => '편집 되돌리기',
@@ -2729,7 +2720,6 @@ $UNWATCHURL
 'undeletebtn' => '되살리기',
 'undeletelink' => '보기/되살리기',
 'undeleteviewlink' => '보기',
-'undeletereset' => '초기화',
 'undeleteinvert' => '선택 반전',
 'undeletecomment' => '이유:',
 'undeletedrevisions' => '{{PLURAL:$1|판 1개|판 $1개}}를 되살렸습니다',
@@ -2804,13 +2794,13 @@ $1',
 'nolinkshere' => "'''[[:$1]]''' 문서를 가리키는 문서가 없습니다.",
 'nolinkshere-ns' => "선택한 이름공간에는 '''[[:$1]]''' 문서를 가리키는 문서가 없습니다.",
 'isredirect' => '넘겨주기 문서',
-'istemplate' => '포함',
+'istemplate' => '끼워넣기',
 'isimage' => '파일 사용 중',
 'whatlinkshere-prev' => '{{PLURAL:$1|이전|이전 $1개}}',
 'whatlinkshere-next' => '{{PLURAL:$1|다음|다음 $1개}}',
 'whatlinkshere-links' => '← 가리키는 문서 목록',
 'whatlinkshere-hideredirs' => '넘겨주기를 $1',
-'whatlinkshere-hidetrans' => '틀을 $1',
+'whatlinkshere-hidetrans' => '끼워넣기를 $1',
 'whatlinkshere-hidelinks' => '링크를 $1',
 'whatlinkshere-hideimages' => '파일 링크를 $1',
 'whatlinkshere-filters' => '필터',
@@ -2820,7 +2810,6 @@ $1',
 'block' => '사용자 차단',
 'unblock' => '사용자 차단 해제',
 'blockip' => '사용자 차단',
-'blockip-title' => '특정 사용자를 차단하기',
 'blockip-legend' => '사용자 차단',
 'blockiptext' => '차단할 IP 주소나 사용자 이름을 아래에 적어 주세요.
 차단은 문서 훼손을 막기 위해, [[{{MediaWiki:Policy-url}}|정책]]에 의해서만 이루어져야 합니다.
@@ -2828,7 +2817,6 @@ $1',
 'ipadressorusername' => 'IP 주소 또는 사용자 이름:',
 'ipbexpiry' => '기한:',
 'ipbreason' => '이유:',
-'ipbreasonotherlist' => '다른 이유',
 'ipbreason-dropdown' => '*일반적인 차단 이유
 ** 거짓 정보를 넣음
 ** 문서 내용을 지움
@@ -2844,8 +2832,6 @@ $1',
 'ipbsubmit' => '사용자 차단',
 'ipbother' => '다른 기간:',
 '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',
-'ipbotheroption' => '수동으로 지정',
-'ipbotherreason' => '다른 이유/추가적인 이유:',
 'ipbhidename' => '사용자 이름을 편집 역사에서 숨기기',
 'ipbwatchuser' => '이 사용자 문서와 사용자 토론 문서를 주시하기',
 'ipb-disableusertalk' => '차단된 동안 자신의 사용자 토론 문서를 편집하지 못하도록 막기',
@@ -2857,6 +2843,7 @@ $1',
 차단된 사용자 목록은 [[Special:BlockList|여기]]에서 볼 수 있습니다.',
 'ipb-blockingself' => '자기 자신을 차단하려고 합니다! 정말로 실행할까요?',
 'ipb-confirmhideuser' => '사용자를 차단하면서 "사용자 숨기기" 설정을 선택했습니다. 모든 기록에서 이 사용자의 사용자 이름을 숨기게 됩니다. 정말로 계정을 숨기시겠습니까?',
+'ipb-confirmaction' => '그것을 정말로 하기 원한다면 아래에 있는 "{{int:ipb-confirm}}" 부분에 체크하세요',
 'ipb-edit-dropdown' => '차단 이유 목록 편집하기',
 'ipb-unblock-addr' => '$1 차단 해제하기',
 'ipb-unblock' => '사용자 또는 IP 주소 차단 해제하기',
@@ -2938,7 +2925,6 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'sorbs_create_account_reason' => '당신의 IP 주소는 {{SITENAME}}에서 사용하는 DNSBL 공개 프록시 목록에 들어 있습니다.
 계정을 만들 수 없습니다.',
 'xffblockreason' => 'X-Forwarded-For 헤더에 현재 사용하고 있는 프록시 서버 중 당신이나 해당 IP 주소가 차단되었습니다. 차단 이유는 다음과 같습니다: $1',
-'cant-block-while-blocked' => '자신이 차단되어 있는 동안에는 다른 사용자를 차단할 수 없습니다.',
 'cant-see-hidden-user' => '차단하려 하는 사용자는 이미 차단되었고 숨김 처리되었습니다.
 사용자 숨기기 권한을 갖고 있지 않기 때문에, 이 사용자의 차단 기록을 보거나 차단 설정을 바꿀 수 없습니다.',
 'ipbblocked' => '자신이 차단되어 있기 때문에 다른 사용자를 차단하거나 차단을 해제할 수 없습니다.',
@@ -2999,7 +2985,6 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 이 경우에는 문서를 직접 이동하거나 두 문서를 합쳐야 합니다.",
 'movearticle' => '문서 이동하기',
 'moveuserpage-warning' => "'''경고:''' 사용자 문서를 옮기려 하고 있습니다. 사용자 문서만 이동되며 사용자 이름이 바뀌지 '''않는다'''는 점을 참고하세요.",
-'movenologin' => '로그인하지 않음',
 'movenologintext' => '문서를 이동하려면 [[Special:UserLogin|로그인]]해야 합니다.',
 'movenotallowed' => '문서를 옮길 권한이 없습니다.',
 'movenotallowedfile' => '파일을 옮길 권한이 없습니다.',
@@ -3015,8 +3000,6 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'articleexists' => '문서가 이미 존재하거나 이름이 올바르지 않습니다.
 다른 이름을 선택하세요.',
 'cantmove-titleprotected' => '새로운 제목으로 문서를 만드는 것이 금지되어 있어 문서를 옮길 수 없습니다',
-'talkexists' => "'''문서는 이동되었습니다. 하지만 딸린 토론 문서의 새 이름으로 된 문서가 이미 있기 때문에 토론 문서는 옮기지 못했습니다. 직접 문서를 합쳐 주세요.'''",
-'movedto' => '새 이름',
 'movetalk' => '딸린 토론도 함께 이동합니다.',
 'move-subpages' => '하위 문서도 함께 ($1개 이하) 이동합니다.',
 'move-talk-subpages' => '토론 문서의 하위 문서도 ($1개까지) 함께 이동합니다.',
@@ -3096,7 +3079,7 @@ $1 사용자가 차단된 이유는 다음과 같습니다: "$2"',
 'allmessages-filter-modified' => '수정됨',
 'allmessages-prefix' => '접두어로 거르기:',
 'allmessages-language' => '언어:',
-'allmessages-filter-submit' => '실행',
+'allmessages-filter-submit' => '보기',
 
 # Thumbnails
 'thumbnail-more' => '실제 크기로',
@@ -3162,7 +3145,7 @@ $2',
 'import-error-interwiki' => '"$1" 문서는 제목이 바깥 링크(인터위키)용으로 할당되어 있기 때문에 가져오지 않습니다.',
 'import-error-special' => '"$1" 문서는 특수 문서에 속해 있기 때문에 가져오지 않습니다.',
 'import-error-invalid' => '"$1" 문서는 제목이 잘못되었기 때문에 가져오지 않습니다.',
-'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 콘텐츠 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
+'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 내용 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
 'import-options-wrong' => '잘못된 {{PLURAL:$2|선택 사항}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => '주어진 루트 문서는 잘못된 제목입니다.',
 'import-rootpage-nosubpage' => '루트 문서의 "$1" 이름공간은 하위 문서를 허용하지 않습니다.',
@@ -3218,9 +3201,9 @@ $2',
 'tooltip-n-portal' => '프로젝트에 대해 여러분이 할 수 있고, 정보를 찾을 수 있는 곳',
 'tooltip-n-currentevents' => '최근의 소식 알아 보기',
 'tooltip-n-recentchanges' => '위키의 최근 바뀜 목록',
-'tooltip-n-randompage' => '임의 문서 기',
+'tooltip-n-randompage' => '임의 문서 불러오기',
 'tooltip-n-help' => '도움말',
-'tooltip-t-whatlinkshere' => '여기를 링크한 모든 위키 문서의 목록',
+'tooltip-t-whatlinkshere' => '여기를 가리키는 모든 위키 문서의 목록',
 'tooltip-t-recentchangeslinked' => '이 문서에서 링크한 문서의 최근 바뀜',
 'tooltip-feed-rss' => '이 문서의 RSS 피드',
 'tooltip-feed-atom' => '이 문서의 Atom 피드',
@@ -3228,7 +3211,7 @@ $2',
 'tooltip-t-emailuser' => '이 사용자에게 이메일 보내기',
 'tooltip-t-upload' => '파일 올리기',
 'tooltip-t-specialpages' => '모든 특수 문서의 목록',
-'tooltip-t-print' => '이 문서의 인쇄용 버전',
+'tooltip-t-print' => '이 문서의 인쇄용 ',
 'tooltip-t-permalink' => '문서의 이 판에 대한 고유링크',
 'tooltip-ca-nstab-main' => '본문 보기',
 'tooltip-ca-nstab-user' => '사용자 문서 보기',
@@ -3244,7 +3227,7 @@ $2',
 'tooltip-save' => '바뀐 내용 저장하기',
 'tooltip-preview' => '바뀜을 미리 봅니다. 저장하기 전에 미리 보기를 해주세요!',
 'tooltip-diff' => '자신이 바꾼 내용 보기',
-'tooltip-compareselectedversions' => '이 문서에서 선택한 두 판간의 차이를 비교',
+'tooltip-compareselectedversions' => '이 문서에서 선택한 두 판 간의 차이를 비교',
 'tooltip-watch' => '이 문서를 주시문서 목록에 추가',
 'tooltip-watchlistedit-normal-submit' => '항목 제거하기',
 'tooltip-watchlistedit-raw-submit' => '주시문서 목록 새로 고침',
@@ -3254,7 +3237,7 @@ $2',
 'tooltip-undo' => '"편집 취소" 기능을 사용하면 이 편집이 되돌려지고 차이 보기 기능이 미리 보기 형식으로 나타납니다. 편집 요약에 이 편집을 왜 되돌리는지에 대한 이유를 쓸 수 있습니다.',
 'tooltip-preferences-save' => '환경 설정 저장하기',
 'tooltip-summary' => '짧은 요약을 적어주세요',
-'interlanguage-link-title' => '$2 - $1',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => '/* 이 CSS 설정은 모든 스킨에 동일하게 적용됩니다 */',
@@ -3300,7 +3283,7 @@ $2',
 'spamprotectiontext' => '스팸 필터가 문서 저장을 막았습니다.
 바깥 사이트로 연결하는 링크 중에 블랙리스트에 포함된 사이트가 있을 것입니다.',
 'spamprotectionmatch' => '문제가 되는 부분은 다음과 같습니다: $1',
-'spambot_username' => 'MediaWiki 스팸 제거',
+'spambot_username' => '미디어위키 스팸 정리',
 'spam_reverting' => '$1(을)를 포함하지 않는 최신 버전으로 되돌림',
 'spam_blanking' => '모든 버전에 $1 링크를 포함하고 있어 차단함',
 'spam_deleting' => '모든 버전에 $1 링크를 포함하고 있어 삭제함',
@@ -3319,7 +3302,7 @@ $2',
 'pageinfo-length' => '문서 길이 (바이트)',
 'pageinfo-article-id' => '문서 ID',
 'pageinfo-language' => '문서 내용 언어',
-'pageinfo-content-model' => '문서 콘텐츠 모델',
+'pageinfo-content-model' => '문서 내용 모델',
 'pageinfo-robot-policy' => '로봇에 의한 색인',
 'pageinfo-robot-index' => '허용됨',
 'pageinfo-robot-noindex' => '불허됨',
@@ -3365,7 +3348,7 @@ $2',
 'markaspatrolleddiff' => '검토한 문서로 표시',
 'markaspatrolledtext' => '이 문서를 검토한 것으로 표시',
 'markedaspatrolled' => '검토한 문서로 표시',
-'markedaspatrolledtext' => '[[:$1]] 문서의 선택한 판을 검토한 것으로 표시하였습니다.',
+'markedaspatrolledtext' => '[[:$1]] 문서의 선택한 판을 순찰한 것으로 표시하였습니다.',
 'rcpatroldisabled' => '최근 바뀜 검토 기능 비활성화됨',
 'rcpatroldisabledtext' => '최근 바뀜 검토 기능은 현재 비활성화되어 있습니다.',
 'markedaspatrollederror' => '검토한 것으로 표시할 수 없습니다.',
@@ -3471,8 +3454,8 @@ Variants for Chinese language
 
 # Metadata
 'metadata' => '메타데이터',
-'metadata-help' => '이 파일은 그 파일을 만들거나 디지털화하는 데 사용되는 카메라나 스캐너에서 기록한 부가 정보를 가지고 있습니다.
\94\84ë¡\9cê·¸ë\9e¨ì\97\90ì\84\9c í\8c\8cì\9d¼ì\9d\84 í\8e¸ì§\91í\95  경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.',
+'metadata-help' => '이 파일은 카메라나 스캐너가 파일을 만들거나 디지털화하는 데 사용하기위해 기록한 부가 정보를 포함하고 있습니다.
\94\84ë¡\9cê·¸ë\9e¨ì\97\90ì\84\9c í\8c\8cì\9d¼ì\9d\84 í\8e¸ì§\91í\95\9c 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.',
 'metadata-expand' => '자세한 정보 보이기',
 'metadata-collapse' => '자세한 정보 숨기기',
 'metadata-fields' => '파일 메타데이터 표가 접혀 있을 때, 이 메시지에 올라와 있는 다음 속성값만이 기본적으로 보이게 됩니다.
@@ -3658,7 +3641,7 @@ Variants for Chinese language
 'exif-preferredattributionname' => '이 저작물을 이용할 때 보일 저작자 이름',
 'exif-pngfilecomment' => 'PNG 파일 주석',
 'exif-disclaimer' => '면책 조항',
-'exif-contentwarning' => '콘텐츠 경고',
+'exif-contentwarning' => '내용 경고',
 'exif-giffilecomment' => 'GIF 파일 주석',
 'exif-intellectualgenre' => '항목 종류',
 'exif-subjectnewscode' => '주제 코드',
@@ -3884,15 +3867,10 @@ Variants for Chinese language
 'exif-urgency-high' => '높음 ($1)',
 'exif-urgency-other' => '사용자 정의 ($1)',
 
-# External editor support
-'edit-externally' => '이 파일을 바깥 어플리케이션을 사용해 편집하기',
-'edit-externally-help' => '(자세한 정보는 [https://www.mediawiki.org/wiki/Manual:External_editors 설치 방법]을 참고하세요)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '모두',
 'namespacesall' => '모두',
 'monthsall' => '모든 달',
-'limitall' => '모두',
 
 # Email address confirmation
 'confirmemail' => '이메일 주소 확인',
@@ -3917,7 +3895,6 @@ Variants for Chinese language
 'confirmemail_success' => '이메일 주소가 인증되었습니다.
 이제 [[Special:UserLogin|로그인]]해서 위키를 사용하세요.',
 'confirmemail_loggedin' => '이메일 주소가 인증되었습니다.',
-'confirmemail_error' => '인증을 저장하는 도중 오류가 발생했습니다.',
 'confirmemail_subject' => '{{SITENAME}} 이메일 주소 인증',
 'confirmemail_body' => '$1 IP 주소를 사용하는 사용자가
 {{SITENAME}}의 "$2" 계정에 이메일 인증 신청을 했습니다.
@@ -3998,6 +3975,11 @@ $5
 'imgmultigo' => '이동!',
 'imgmultigoto' => '$1 페이지로 가기',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(기본 언어)',
+'img-lang-info' => '이 그림을 $1로 렌더합니다. $2',
+'img-lang-go' => '보기',
+
 # Table pager
 'ascending_abbrev' => '오름차순',
 'descending_abbrev' => '내림차순',
@@ -4078,8 +4060,18 @@ $5
 'version-hook-name' => '훅 이름',
 'version-hook-subscribedby' => '훅이 사용된 위치',
 'version-version' => '(버전 $1)',
-'version-license' => '라이선스',
-'version-poweredby-credits' => "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
+'version-license' => '미디어위키 라이선스',
+'version-ext-license' => '라이선스',
+'version-ext-colheader-name' => '확장기능',
+'version-ext-colheader-version' => '버전',
+'version-ext-colheader-license' => '라이선스',
+'version-ext-colheader-description' => '설명',
+'version-ext-colheader-credits' => '저자',
+'version-license-title' => '$1 사용을 위한 라이센스',
+'version-license-not-found' => '이 확장기능에 대한 라이선스 세부 정보가 없습니다.',
+'version-credits-title' => '$1의 작성자',
+'version-credits-not-found' => '이 확장기능에 대한 크레딧 세부 정보가 없습니다.',
+'version-poweredby-credits' => "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''(미디어위키)를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
 'version-poweredby-others' => '그 외 다른 개발자',
 'version-poweredby-translators' => 'translatewiki.net 번역자',
 'version-credits-summary' => '[[Special:Version|미디어위키]]에 기여한 다음 사람에게 감사드립니다.',
@@ -4098,13 +4090,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath 스크립트 경로]',
 
 # Special:Redirect
-'redirect' => '파일, 사용자나 판 ID별 넘겨주기',
+'redirect' => '파일, 사용자, 문서나 판 ID로 넘겨주기',
 'redirect-legend' => '파일이나 문서로 넘겨주기',
-'redirect-summary' => 'ì\9d´ í\8a¹ì\88\98 ë¬¸ì\84\9cë\8a\94 í\8c\8cì\9d¼(í\8c\8cì\9d¼ ì\9d´ë¦\84ì\9d\84 ì§\80ì \95), ë¬¸ì\84\9c\8c\90 ID를 ì§\80ì \95\82\98 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c\82¬ì\9a©ì\9e\90 ID를 ì \95ì\88\98ë¡\9c ì§\80ì \95)ë¡\9c ë\84\98겨ì¤\8dë\8b\88ë\8b¤. ì\82¬ì\9a©ë²\95: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], í\98¹ì\9d\80 [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'ì\9d´ í\8a¹ì\88\98 ë¬¸ì\84\9cë\8a\94 í\8c\8cì\9d¼(í\8c\8cì\9d¼ ì\9d´ë¦\84ì\9d´ ì£¼ì\96´ì§\90), ë¬¸ì\84\9c\8c\90 IDë\82\98 ë¬¸ì\84\9c IDê°\80 ì£¼ì\96´ì§\90\82\98 ì\82¬ì\9a©ì\9e\90 ë¬¸ì\84\9c\88«ì\9e\90ë¡\9c í\91\9cì\8b\9cë\90\9c ì\82¬ì\9a©ì\9e\90 IDê°\80 ì£¼ì\96´ì§\90)ë¡\9c ë\84\98겨ì¤\8dë\8b\88ë\8b¤. ì\82¬ì\9a©ë²\95: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ë\98\90ë\8a\94 [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => '보기',
 'redirect-lookup' => '찾을 종류:',
 'redirect-value' => '값:',
 'redirect-user' => '사용자 ID',
+'redirect-page' => '문서 ID',
 'redirect-revision' => '문서 판',
 'redirect-file' => '파일 이름',
 'redirect-not-exists' => '값을 찾을 수 없습니다',
@@ -4171,7 +4164,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => '문서 비교',
-'compare-selector' => '문서의 특정판 비교',
 'compare-page1' => '첫 번째 문서',
 'compare-page2' => '두 번째 문서',
 'compare-rev1' => '첫 번째 판',
@@ -4299,6 +4291,7 @@ $5
 'api-error-overwrite' => '이미 있는 파일을 덮어쓸 수 없습니다.',
 'api-error-stashfailed' => '내부 오류: 서버가 임시 파일을 저장하지 못했습니다.',
 'api-error-publishfailed' => '내부 오류: 서버가 임시 파일을 게시하지 못했습니다.',
+'api-error-stasherror' => '파일을 안전한 곳으로 업로드 하는 동안 오류가 발생했습니다.',
 'api-error-timeout' => '서버가 제 시간 내에 응답하지 않았습니다.',
 'api-error-unclassified' => '알 수 없는 오류가 발생했습니다.',
 'api-error-unknown-code' => '알 수 없는 오류: "$1"',
@@ -4347,10 +4340,14 @@ $5
 'expand_templates_input' => '전개할 내용:',
 'expand_templates_output' => '결과',
 'expand_templates_xml_output' => 'XML 출력',
+'expand_templates_html_output' => '원본 HTML 출력',
 'expand_templates_ok' => '확인',
 'expand_templates_remove_comments' => '주석 제거',
 'expand_templates_remove_nowiki' => '결과에서 <nowiki> 태그를 숨기기',
 'expand_templates_generate_xml' => 'XML 구문 트리 보기',
+'expand_templates_generate_rawhtml' => '원본 HTML 보이기',
 'expand_templates_preview' => '미리 보기',
 
+# Unknown messages
+'uploadinvalidxml' => '이 업로드 된 파일의 XML 구문은 분석할 수 없습니다.',
 );
index 1d2463e..aeffcb8 100644 (file)
@@ -99,7 +99,6 @@ $messages = array(
 'qbedit' => 'Мöдкодьсьöтны',
 'qbpageoptions' => 'Этiя листбок',
 'qbmyoptions' => 'Листбоккезö',
-'qbspecialpages' => 'Тодильнöй листбоккез',
 'faq' => 'Отир сё юасьö',
 'faqpage' => 'Project:отир сё юасьö',
 
@@ -225,7 +224,6 @@ $messages = array(
 'loginlanguagelabel' => 'Кыв: $1',
 
 # Change password dialog
-'resetpass' => 'Вежны пароль',
 'oldpassword' => 'Важ пароль',
 'newpassword' => 'Виль пароль',
 'retypenew' => 'Мöдпöв гиж виль парольтö',
@@ -322,10 +320,6 @@ $messages = array(
 # Search results
 'searchresults' => 'Адззöм то мый:',
 'searchresults-title' => '"$1" сьöртi адззöм то мый:',
-'searchresulttext' => 'Унажык информация {{SITENAME}} кошшикö, видзöт [[{{MediaWiki:Helppage}}|{{int:help}}]] вылö.',
-'searchsubtitle' => 'Тэ кошшан \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|быдöс листбоккез, кöдна пондöтчöны "$1"-öн]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|быдöс листбоккез, кöдна ыстiсьöны "$1" вылö]])',
-'searchsubtitleinvalid' => '«$1» кошшикö',
-'notitlematches' => 'Листбоккез ниммезын абу öткодь торрез',
 'notextmatches' => 'Листбоккез тексттэзын абу öткодь торрез',
 'prevn' => '{{PLURAL:$1|одзжыкся $1}}',
 'nextn' => '{{PLURAL:$1|одзланься $1}}',
@@ -341,12 +335,9 @@ $messages = array(
 'search-interwiki-default' => '$1 результат:',
 'search-interwiki-more' => '(унажык)',
 'searchall' => 'быдöс',
-'nonefound' => "'''Пасйöт.''' Он кö нагладь шуан,  кытiсь кошшыны,  шедасö не быдöс тексттэз, кытöн пантасьö колан кылыс. Мед кошшыны быдöс тексттэзiсь (уджкериссез листбоккезiсь,  шаболоннэзiсь дмд.), гиж ''all:'',  нето утлянно мыччав,  кытiсь кошшыны.",
-'powersearch' => 'Паськытжыка кошшан',
 'powersearch-legend' => 'Паськытжыка кошшан',
 'powersearch-ns' => 'Ним чукöррезiсь кошшан:',
 'powersearch-redir' => 'Мöдлаö иньдöтöммез ним сьöртi',
-'powersearch-field' => 'Кошшан',
 'powersearch-toggleall' => 'Быдöс',
 'powersearch-togglenone' => 'Нем',
 
@@ -396,7 +387,6 @@ $messages = array(
 'recentchanges' => 'Медбöрья вильмöтöммез',
 'recentchanges-legend' => 'Медбöрья вильмöтöммез понда лöсьöтаннэз',
 'recentchanges-feed-description' => 'Синмавны медбöрья вильмöтöммез этiя вики визылын.',
-'rcnote' => "{{PLURAL:$1|Медбöрья '''$1''' вильмöтöм|Медбöрья '''$1''' вильмöтöм|Медбöрья'''$1''' вильмöтöм}} '''$2''' лун сьöрна, $5 $4  кежö.",
 'rclistfrom' => 'Мыччавны вильмöтöмсö  $1-сянь',
 'rcshowhideminor' => '$1 невунка мöдкöдьсьöтыштöм',
 'rcshowhidebots' => '$1 бот',
@@ -627,8 +617,6 @@ $messages = array(
 'movepage-moved' => "'''Листбоклiсь «$1» ним вежöм «$2»''' вылö",
 'articleexists' => 'Сэтшöм нимыс эм ни мöдiк листбоклöн, нето гижан бы непозян ним.
 Борйы кытшöмкö мöд ним.',
-'talkexists' => "'''Листбоклiсь ним вежöм ни, а сы йылiсь сёрнитанлiсь абу, мыля сэтшöм жö нима листбок эм ни. Öтлаöт жö нiйö кипонiсь.'''",
-'movedto' => 'нымыс вежöм … вылö',
 'movetalk' => 'Вежны ним и сёрнитан листбокыслiсь',
 'movelogpage' => 'Юрниммез вежöм йылiсь',
 'movereason' => 'Мыля:',
@@ -738,15 +726,10 @@ $messages = array(
 'exif-imagewidth' => 'Пасьта',
 'exif-imagelength' => 'Вылына',
 
-# External editor support
-'edit-externally' => 'Редактируйтны этiйö файлсö мöд программа пыр',
-'edit-externally-help' => '(унажык видзöт: [https://www.mediawiki.org/wiki/Manual:External_editors удж кежö лöсьöтны туйдöтан])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'быдöс',
 'namespacesall' => 'быдöс',
 'monthsall' => 'быдöс',
-'limitall' => 'быдöс',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Видзöт лöсялана вильмöтöммез',
index ca4e40f..d8b6b47 100644 (file)
@@ -45,7 +45,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Бютеу_бетле' ),
        'Blankpage'                 => array( 'Бош_бет' ),
        'Block'                     => array( 'Блок_эт' ),
-       'Blockme'                   => array( 'Мени_блок_эт' ),
        'Booksources'               => array( 'Китабланы_къайнакълары' ),
        'BrokenRedirects'           => array( 'Джыртылгъан_редиректле' ),
        'Categories'                => array( 'Категорияла' ),
@@ -57,7 +56,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Тергеу_джазыуну_къура', 'Къошулуучуну_къура', 'Регистрация_эт' ),
        'Deadendpages'              => array( 'Чыкъмазча_бетле' ),
        'DeletedContributions'      => array( 'Кетерилген_къошум' ),
-       'Disambiguations'           => array( 'Кёб_магъаналы' ),
        'DoubleRedirects'           => array( 'Экили_редирект' ),
        'EditWatchlist'             => array( 'Кёздеги_тизмени_тюрлендир' ),
        'Emailuser'                 => array( 'Къошулуучугъа_джазма', 'Джазма_ий' ),
@@ -119,14 +117,14 @@ $messages = array(
 'tog-hidepatrolled' => 'Джангы тюрлениулени тизмесинде тинтилген тюрлениулени кёргюзме',
 'tog-newpageshidepatrolled' => 'Джангы бетлени тизмесинде тинтилген бетлени кёргюзме',
 'tog-extendwatchlist' => 'Кёзде тургъан тизмени, къуру ахыр тюл, бютеу тюрлениулени кёрюр ючюн кенгерт',
-'tog-usenewrc' => 'Ахыр тюрлениуледе эм кёздеги тизмеде бетлени къауум тюрлениулери (JavaScript керекди)',
+'tog-usenewrc' => 'Ахыр тюрлениуледе эм кёздеги тизмеде бетлени тюрлениулерин къауумлашдыр',
 'tog-numberheadings' => 'Башлыкъланы (бёлюмлени атлары) автомат номерленсинле',
-'tog-showtoolbar' => 'ТÑ\8eÑ\80лендиÑ\80ген Ñ\81агÑ\8aаÑ\82да, Ð±Ð°Ñ\88Ñ\8bндагÑ\8aÑ\8b Ð°Ð´Ñ\8bÑ\80 Ð¿Ð°Ð½ÐµÐ»Ð½Ð¸ ÐºÑ\91Ñ\80гÑ\8eз (JavaScript)',
-'tog-editondblclick' => 'Эки басыу бла тюрлендириу бет ачылсын (JavaScript)',
+'tog-showtoolbar' => 'ТÑ\8eÑ\80лендиÑ\80иÑ\83 Ð°Ð´Ñ\8bÑ\80 Ð¿Ð°Ð½ÐµÐ»Ð½Ð¸ ÐºÑ\91Ñ\80гÑ\8eз',
+'tog-editondblclick' => 'Эки басыу бла бетлени тюрлендир',
 'tog-editsection' => 'Хар бёлюмге «тюрлендир» джибериуню кёргюз',
-'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендириу бетин ач',
+'tog-editsectiononrightclick' => 'Бёлюмлени бёлюм башлыкъгъа басханлай тюрлендир',
 'tog-showtoc' => 'Башларын кёргюз (3-ден кёб бёлюм башлыгъы болгъан бетлеге)',
-'tog-rememberpassword' => 'Ð\91Ñ\83 ÐºÐ¾Ð¼Ð¿Ñ\8cÑ\8eÑ\82еÑ\80де Ð¼ÐµÐ½Ð¸ Ñ\82еÑ\80геÑ\9e Ð´Ð¶Ð°Ð·Ñ\8bÑ\9eÑ\83мÑ\83 Ñ\81акÑ\8aла (Ñ\8dм ÐºÑ\91б $1 {{PLURAL:$1|кюн|кюн}})',
+'tog-rememberpassword' => 'Ð\91Ñ\83 Ð±Ñ\80аÑ\83зеÑ\80де Ð¼ÐµÐ½Ð¸ Ñ\82еÑ\80геÑ\9e Ð´Ð¶Ð°Ð·Ñ\8bÑ\9eÑ\83мÑ\83 Ñ\81акÑ\8aла (Ñ\8dм ÐºÑ\91б: $1 {{PLURAL:$1|биÑ\80 кюн|кюн}})',
 'tog-watchcreations' => 'Мен къурагъан (башлагъан) бетлени эм мен джюклеген файлланы кёзюмде тургъан тизмеме къош',
 'tog-watchdefault' => 'Мен тюрлендирген бетлени эм файлланы кёзюмде тургъан тизмеме къош',
 'tog-watchmoves' => 'Мен атларын ауушдургъан бетлени эм файлланы кёзюмде тургъан тизмеме къош',
@@ -134,7 +132,6 @@ $messages = array(
 'tog-minordefault' => 'Тынгылау бла бары тюрлениулени «аз магъаналы» белгиле',
 'tog-previewontop' => 'Ал къарауну тюрлендириу бетни башы бла кёргюз',
 'tog-previewonfirst' => 'Тюрледириу бетге кёчгенде ал къарауну кёргюз',
-'tog-nocache' => 'Бетлени браузерге кэш этерге къойма',
 'tog-enotifwatchlistpages' => 'Кёзюмде тургъан тизмемдеги бетлени неда файлланы тюрлениулерин e-mail бла билдир',
 'tog-enotifusertalkpages' => 'Энчи бетими тюрлениулерин e-mail бла билдир',
 'tog-enotifminoredits' => 'Бетлени неда файлланы гитче тюрлениулерин огъуна E-mail бла',
@@ -155,6 +152,7 @@ $messages = array(
 'tog-showhiddencats' => 'Джашыртын категорияланы кёргюз',
 'tog-norollbackdiff' => 'Къайтарыудан сора версияланы башхалыкъларын кёргюзме',
 'tog-useeditwarning' => 'Тюрлендириулени сакълатмай редакторлау бетден кетген сагъатымда билдир',
+'tog-prefershttps' => 'Системагъа киргенден сора джакъланнган байламны хаманда хайырландыр',
 
 'underline-always' => 'Хаманда',
 'underline-never' => 'Бир заманда да',
@@ -240,10 +238,10 @@ $messages = array(
 '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-subcat-count-limited' => 'Бу категорияда {{PLURAL:$1|тюбкатегория|$1 тюбкатегория}} барды.',
+'category-article-count' => '{{PLURAL:$2|Бу категорияда къуру бир бет барды.|Бу категориядагъы $2 бетден {{PLURAL:$1|бет|$1 бет}} кёргюзюлгенди.}}',
 'category-article-count-limited' => 'Бу категорияда {{PLURAL:$1|$1 бет}} барды.',
-'category-file-count' => '{{PLURAL:$2|Бу категорияда къуру бир файл барды.|Категориядагъы $2 файлдан {{PLURAL:$1|$1 файлы кёргюзюлгенди}}.}}',
+'category-file-count' => '{{PLURAL:$2|Бу категорияда къуру бир файл барды.|Категориядагъы $2 файлдан {{PLURAL:$1|бир файл|$1 файлы}} кёргюзюлгенди.}}',
 'category-file-count-limited' => 'Бу категория да {{PLURAL:$1|$1 файл}} барды.',
 'listingcontinuesabbrev' => '(баргъаны)',
 'index-category' => 'Индексленнген бетле',
@@ -268,7 +266,6 @@ $messages = array(
 'qbedit' => 'Тюрлендир',
 'qbpageoptions' => 'Бу бет',
 'qbmyoptions' => 'Бетлерим',
-'qbspecialpages' => 'Къуллукъчу бетле',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -311,8 +308,9 @@ $messages = array(
 'create-this-page' => 'Бу бетни къура',
 'delete' => 'Кетер',
 'deletethispage' => 'Бу бетни кетер',
-'undelete_short' => '$1 {{PLURAL:$1|тюрлендириуню}} къайтар',
-'viewdeleted_short' => '{{PLURAL:$1|1|$1}} кетерилген тюрлендириуге къарау',
+'undeletethispage' => 'Бу бетни ызына сал',
+'undelete_short' => '{{PLURAL:$1|Бир тюрлендириуню$1 тюрлендириуню}} ызына сал',
+'viewdeleted_short' => '{{PLURAL:$1|Бир кетерилген тюрлендириуню|$1 кетерилген тюрлендириуню}} кёрюу',
 'protect' => 'Джакъла',
 'protect_change' => 'тюрлендир',
 'protectthispage' => 'Бу бетни джакъла',
@@ -340,7 +338,7 @@ $messages = array(
 'redirectedfrom' => '(«$1» бетден джиберилгенди)',
 'redirectpagesub' => 'Башха бетге джибериучю бет',
 'lastmodifiedat' => 'Бу бетни ахыр тюрленнгени: $2, $1.',
-'viewcount' => 'Бу бетге {{PLURAL:$1|1|$1}} кере киргендиле.',
+'viewcount' => 'Бу бетге {{PLURAL:$1|бир|$1}} кере киргендиле.',
 'protectedpage' => 'Джакъланнган бет',
 'jumpto' => 'Бери кёчерге:',
 'jumptonavigation' => 'навигация',
@@ -375,7 +373,7 @@ $1',
 
 'badaccess' => 'Кириуню халаты',
 'badaccess-group0' => 'Сизни соргъан амалны этерге эркинлигигиз джокъду.',
-'badaccess-groups' => 'Сиз соргъан амалны къуру $1 {{PLURAL:$2|группаны|группаланы}} къошулуучуларыны этерге мадарлары барды.',
+'badaccess-groups' => 'Сиз соргъан амалны къуру $1 {{PLURAL:$2|1=группаны|группаланы}} къошулуучуларыны этерге мадарлары барды.',
 
 'versionrequired' => 'MediaWiki-ни $1 версиясы керекди',
 'versionrequiredtext' => 'Бу бетде ишлер ючюн MediaWiki-ни $1 версиясы керекди.  [[Special:Version|Хайырладырылгъан программаны версияларыны юсюнден информациягъа]] къара.',
@@ -383,9 +381,9 @@ $1',
 'ok' => 'ОК',
 'retrievedfrom' => 'Чыкъгъаны — «$1»',
 'youhavenewmessages' => 'Сизге $1 келдиле ($2).',
-'youhavenewmessagesfromusers' => '{{PLURAL:$3|Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$3|1=Башха бир къошулуучудан|$3 къошулуучудан}} сеннге $1 келди ($2).',
 'youhavenewmessagesmanyusers' => 'Талай къошулуучудан $1 барды. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|джангы билдириу|джангы билдириуле}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=джангы билдириу|джангы билдириуле}}',
 'newmessagesdifflinkplural' => 'ахыр {{PLURAL:$1|тюрлениу}}',
 'youhavenewmessagesmulti' => '$1 бетде джангы билдириуле бардыла.',
 'editsection' => 'тюрлендир',
@@ -401,7 +399,7 @@ $1',
 'collapsible-expand' => 'кёргюз',
 'thisisdeleted' => '$1 къараргъа неда къайтарыргъа (тургъузтургъа)?',
 'viewdeleted' => '$1 къараймыса?',
-'restorelink' => 'кетерилген {{PLURAL:$1|1|$1}} тюрлендириу',
+'restorelink' => 'кетерилген {{PLURAL:$1|1=1|$1}} тюрлендириу',
 'feedlinks' => 'Бу кёрюмде:',
 'feed-invalid' => 'Джазылыу каналны типи терсди.',
 'feed-unavailable' => 'Синдикация лентала табылынмайла бусагъатда',
@@ -473,12 +471,9 @@ $1',
 'badtitle' => 'Джарамагъан ат',
 'badtitletext' => 'Сорулгъан бетни аты терсди, бошду, неда интервики аты терс джазылгъанды. Келишмеген (хайырланыргъа болмагъан) символла хайырланыргъада боллукъдула атында.',
 'perfcached' => 'Бу информация кэшден алыннганды, ахыр тюрлениулени кёргюзмезге боллукъду. Кэшде максимум {{PLURAL:$1|джазыу}} сакъланады.',
-'perfcachedts' => 'Бу кэшден алыннган информацияды, ахыр кере ол $1 джангыртылыннганды. Кэшде эм кёбю бла  {{PLURAL:$4|джазыу|джазыу}} сакъланады.',
+'perfcachedts' => 'Бу кэшден алыннган информацияды, ахыр кере ол $1 джангыртылыннганды. Кэшде эм кёбю бла  {{PLURAL:$4|1=джазыу|джазыу}} сакъланады.',
 'querypage-no-updates' => 'Бу бетни бусагъатда джангыртыргъа болмайды.
 Мында келтирилген информация къабыл этилинник тюйюлдю.',
-'wrong_wfQuery_params' => 'wfQuery()<br /> функциягъа джарамагъан параметрле<br />
-Функция: $1<br />
-Соруу: $2',
 'viewsource' => 'Къарау',
 'viewsource-title' => '$1 бетни чыкъгъан текстине къарау',
 'actionthrottled' => 'Терклик чекленнгенди',
@@ -489,7 +484,7 @@ $1',
 'protectedinterface' => 'Бу бетде программаны интерфейс билдириую барды.
 Бютеу викиледе да бу билдириуню кёчюрмесин къошар неда тюрлендирир ючюн MediaWiki-ни локализациясыны сайты [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.',
 'editinginterface' => "'''Эс бёл:''' Сен системаны интерфейс бетин тюрлендире тураса. Бу, викини башха къошулуучуларына да тиерик затды. Кёчюрюр ючюн неда кёчюрмелени тюрлендирир ючюн, MediaWiki-ни локализация этиу проекти [//translatewiki.net/ translatewiki.net]-ни хайырландырыгъыз.",
-'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген  {{PLURAL:$1|бетге|бетлеге}} киргени ючюндю:
+'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каскадлы джакълау къабыл этилиннген  {{PLURAL:$1|1=бетге|бетлеге}} киргени ючюндю:
 $2',
 'namespaceprotected' => '«$1» ат аламда бетлени тюрлендирирге эркинлигигиз джокъду.',
 'customcssprotected' => 'Бу CSS-бетни тюрлендирирге эркинлигигиз джокъду, бу бетде башха къошулуучуну энчи джарашдырыулары барды.',
@@ -528,14 +523,14 @@ $2',
 'yourpasswordagain' => 'Паролну джангыдан джаз:',
 'createacct-yourpasswordagain' => 'Паролну бегит',
 'createacct-yourpasswordagain-ph' => 'Паролну энтда бир кере джаз',
-'remembermypassword' => 'Ð\91Ñ\83 ÐºÐ¾Ð¼Ð¿Ñ\8cÑ\8eÑ\82еÑ\80де Ð¼ÐµÐ½Ð¸ Ñ\82еÑ\80геÑ\9e Ð´Ð¶Ð°Ð·Ñ\8bÑ\9eÑ\83мÑ\83 Ñ\83нÑ\83Ñ\82ма (Ñ\8dм ÐºÑ\91б $1 {{PLURAL:$1|кюн|кюн}})',
+'remembermypassword' => 'Ð\91Ñ\83 ÐºÐ¾Ð¼Ð¿Ñ\8cÑ\8eÑ\82еÑ\80де Ð¼ÐµÐ½Ð¸ Ñ\82еÑ\80геÑ\9e Ð´Ð¶Ð°Ð·Ñ\8bÑ\9eÑ\83мÑ\83 Ñ\81акÑ\8aлаб Ñ\82Ñ\83Ñ\80 (Ñ\8dм ÐºÑ\91б: $1 {{PLURAL:$1|биÑ\80 кюн|кюн}})',
 'userlogin-remembermypassword' => 'Системада туруу',
 'userlogin-signwithsecure' => 'Джакъланнган байлам',
 'yourdomainname' => 'Сизни доменигиз:',
 'password-change-forbidden' => 'Бу викиде паролугъузну тюрлендиреллик тюлсюз.',
 'externaldberror' => 'Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.',
-'login' => 'Ð\9aириу',
-'nav-login-createaccount' => 'Ð\9aиÑ\80иÑ\83 / Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82иу',
+'login' => 'СиÑ\81Ñ\82емагÑ\8aа Ðºириу',
+'nav-login-createaccount' => 'СиÑ\81Ñ\82емагÑ\8aа ÐºÐ¸Ñ\80иÑ\83 / Ð\90ккаÑ\83нÑ\82 ÐºÑ\8aÑ\83Ñ\80ау',
 'loginprompt' => '{{SITENAME}} сайтха кирир ючюн «cookies» эркин этерге керексиз.',
 'userlogin' => 'Кир / регистрация эт',
 'userloginnocreate' => 'Кириу',
@@ -546,9 +541,9 @@ $2',
 'userlogin-joinproject' => '{{SITENAME}} сайтха къошул',
 'nologin' => 'Тергеу джазыуугъуз (аккаунтугъуз) джокъмуду? $1.',
 'nologinlink' => 'Тергеу джазыу (аккаунт) къурагъыз',
-'createaccount' => 'Ð\94жангÑ\8b ÐºÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83нÑ\83 Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82',
+'createaccount' => 'Ð\90ккаÑ\83нÑ\82 ÐºÑ\8aÑ\83Ñ\80аÑ\83',
 'gotaccount' => 'Тергеу джазыуугъуз (аккаунтугъуз) энди бармыды? $1.',
-'gotaccountlink' => 'Ð\9aиÑ\80иÑ\83',
+'gotaccountlink' => 'СиÑ\81Ñ\82емагÑ\8aа ÐºÐ¸Ñ\80',
 'userlogin-resetlink' => 'Кирир ючюн билгилеригизни унутхан этгенмисиз?',
 'userlogin-resetpassword-link' => 'Паролну джибериу',
 'helplogin-url' => 'Help:Кириу',
@@ -572,7 +567,7 @@ $2',
 'badretype' => 'Джазгъан паролларыгъыз бир-бирине келишмейдиле.',
 'userexists' => 'Джазылгъан ат хайырландырылады.
 Башха ат сайлагъыз.',
-'loginerror' => 'Кириу хата',
+'loginerror' => 'Кириуде халат',
 'createacct-error' => 'Тергеу джазыу къурауда халат',
 'createaccounterror' => 'Быллай тергеу джазыу (аккаунт) къураргъа болмайды: $1',
 'nocookiesnew' => 'Къошлуучу регистрацияны ётгенди, алай кирмегенди. {{SITENAME}} къошулуучуланы таныр ючюн «cookies»-ни хайырландырады. Сиз «cookies»-ни эркин этмегенсиз. «Cookies»-ни эркин этигиза да, андан сора джангы атыгъыз эм паролюгъуз бла киригиз.',
@@ -593,7 +588,7 @@ $2',
 'passwordtooshort' => '$1 {{PLURAL:$1|символдан}} аз болмазгъа керекди пароль.',
 'password-name-match' => 'Пароль къошулуучу атдан башха тюрлю болургъа керекди.',
 'password-login-forbidden' => 'Бу къошулуучу ат бла паролну хайырландыргъан джарамайды.',
-'mailmypassword' => 'Ð\9cеннге e-mail Ð±Ð»Ð° Ð´Ð¶Ð°Ð½Ð³Ñ\8b Ð¿Ð°Ñ\80олÑ\8c джибер',
+'mailmypassword' => 'Ð\9fаÑ\80олнÑ\83 джибер',
 'passwordremindertitle' => '{{SITENAME}}  къошулуучугъа джангы болджаллы пароль',
 'passwordremindertext' => 'Ким эседа (сиз болургъа боллукъсуз, IP-адрес: $1) {{SITENAME}} ($4) къошулуучугъа джангы пароль къураргъа соргъанды. $2 къошулуучугъа джангы пароль: $3. Сорууну джиберген сиз болгъан эсегиз, системагъа кирирге эм паролну алышдырыргъа тыйычлыды. Джангы паролну $5 {{PLURAL:$5|кюнню}} ичинде амалы боллукъду.
 
@@ -605,7 +600,7 @@ $2',
 Паролну алгъандан сора, джангыдан киригиз системагъа.',
 'blocked-mailpassword' => 'Сизни IP-адресигиз блокланыб турады, аны бла паролну къайтарыу функцияда.',
 'eauthentsent' => 'Джазылгъан электрон почтагъа адресни тюрлениуюн бегитирге соруу джиберилгенди. Письмода бу сизни электрон почтагъызны адреси болгъанын бегитир ючюн не этерге керек болгъаны да чертилгенди.',
-'throttled-mailpassword' => 'Паролну билдириу амал {{PLURAL:$1|ахыр $1 сагъатны}} ичинде бир кере хайырланылгъанды.
+'throttled-mailpassword' => 'Паролну билдириу амал {{PLURAL:$1|1=ахыр $1 сагъатны}} ичинде бир кере хайырланылгъанды.
 Джорукъдан чыгъыудан сакъланыр ючюн $1 {{PLURAL:$1|сагъатны}} ичинде къуру бир билдириу алыргъа болады.',
 'mailerror' => 'Почта джибериу хата: $1',
 'acct_creation_throttle_hit' => 'Кюн бла кечеге сизни IP-адресигизден {{PLURAL:$1|$1 тергеу джазыу (аккаунт)}} къуралгъанды. Бу амал энди бусагъатда джабыкъды.',
@@ -636,7 +631,7 @@ $2',
 'user-mail-no-body' => 'Бош неда магъанасыз къысха джазыу бла билдириу иерге изледи.',
 
 # Change password dialog
-'resetpass' => 'Паролну тюрлендириу',
+'changepassword' => 'Паролну ауушдур',
 'resetpass_announce' => 'Сиз, электрон почта бла ийилген, болджаллы пароль бла киргенсиз. Системагъа кириуню тамамларча, джангы пароль къурагъыз.',
 'resetpass_header' => 'Тергеу джазыуну (аккаунтну) паролун тюрлендириу',
 'oldpassword' => 'Эски пароль:',
@@ -755,7 +750,7 @@ $2',
 'nosuchsectiontext' => 'Сиз болмагъан бетни тюрлендирирге кюрешесиз.
 Бу бетге къарагъан заманыгъызда, кетерилирге неда башха джерге кёчюрюлюрге боллукъду.',
 'loginreqtitle' => 'Кирирге керекди',
-'loginreqlink' => 'Ð\9aириу',
+'loginreqlink' => 'кириу',
 'loginreqpagetext' => 'Сиз башха бетлеге къарар ючюн $1 керексиз.',
 'accmailtitle' => 'Пароль джиберилди',
 'accmailtext' => "[[User talk:$1|$1]] къошулуучугъа къуралгъан пароль $2 адресине джиберилгенди.
@@ -832,21 +827,21 @@ $2',
 Башхала сизни текстлеригизни тюрлендиргенлерин излемей эсегиз, былайгъа салмагъыз.<br />
 Сиз дагъыда этген къошакъларыгъызны автору болгъаныгъызны неда информацияны чыкъгъан джери эркин джаяргъа эм тюрлендирирге къойгъанын аны бегитесиз (къарагъыз: $1).
 '''ЭРКИНЛИКСИЗ АВТОР ХАКЪ БЛА ДЖАКЪЛАННГАН МАТЕРИАЛЛА САЛМАГЪЫЗ БЫЛАЙГЪА!'''",
-'longpageerror' => "'''ХАЛАТ: сиз сакълатхан текстни  {{PLURAL:$1|бир килобайт|$1 килобайт}} ёлчеми барды, ол {{PLURAL:$2|бир килобайт|$2 килобайт}} чекден кёбдю. Бет сакъланныкъ тюлдю.'''",
+'longpageerror' => "'''ХАЛАТ: сиз сакълатхан текстни  {{PLURAL:$1|1=бир килобайт|$1 килобайт}} ёлчеми барды, ол {{PLURAL:$2|1=бир килобайт|$2 килобайт}} чекден кёбдю. Бет сакъланныкъ тюлдю.'''",
 'readonlywarning' => "'''Эсгертиу. Кереклилерин тындырыу ишле себебли, билгилени базасы бусагъатда киритленибди. Ол себебден тюрлениулеригизни бусагъатда сакълаталлыкъ тюлсюз.''' Джазгъанларыгъызны башха бир текст файлда сакълаб, кечирек къошаргъа боллукъсуз. Киритлеген администратор бу билдириуню къойгъанды: $1",
 'protectedpagewarning' => "'''Эсгертиу: бу бет тюрлениуледен джакъланыбды, къуру администарторла тюрлендирелликдиле'''
 Тюбюнде, билги ючюн  журналдагъы ахыр джазыу берилгенди:",
 'semiprotectedpagewarning' => "'''Эсгертиу:''' бу бетни джангыз регистрация этген къошулуучула тюрлендирелликдиле.
 Тюбюнде, билги ючюн журналны ахыр джазыуу берилгенди:",
-'cascadeprotectedwarning' => "'''Эсгертиу:''' Бу бетни къуру Администраторла къауумдагъы къошулуучула тюрлендирирге боллукъду. Каскад джакълау {{PLURAL:$1|бетде|бетде}} хайырланнганы себебли:",
+'cascadeprotectedwarning' => "'''Эсгертиу:''' Бу бетни къуру Администраторла къауумдагъы къошулуучула тюрлендирирге боллукъду. Каскад джакълау {{PLURAL:$1|1=бетде|бетде}} хайырланнганы себебли:",
 'titleprotectedwarning' => "'''Эсгертиу: Бу бет джакъланыбды. Джангыз [[Special:ListGroupRights|энчи хакълары]] болгъанла текстни салыргъа боллукъдула.'''
 Тюбюнде, билги ючюн журналдан ахыр джазыу берилгенди:",
 'templatesused' => 'Бу бетде хайырланылгъан {{PLURAL:$1|шаблон|шаблонла}}:',
-'templatesusedpreview' => 'Ал къаралыучу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
-'templatesusedsection' => 'Бу бетде хайырланнган {{PLURAL:$1|шаблон|шаблонла}}:',
+'templatesusedpreview' => 'Ал къаралыучу бетде хайырланнган {{PLURAL:$1|1=шаблон|шаблонла}}:',
+'templatesusedsection' => 'Бу бетде хайырланнган {{PLURAL:$1|1=шаблон|шаблонла}}:',
 'template-protected' => '(джакъланнган)',
 'template-semiprotected' => '(джарты джакъланыбды)',
-'hiddencategories' => 'Бу бет $1 {{PLURAL:$1|1 джашырылыннган категориягъа|$1 джашырылыннган категориялагъа}} киреди:',
+'hiddencategories' => 'Бу бет $1 {{PLURAL:$1|1 джашырылгъан категориягъа|$1 джашырылгъан категориягъа}} киреди:',
 'edittools' => '<!-- Былайда орналгъан текст тюрлениу эмда джюклениу формада кёрюннюкдю. -->',
 'nocreatetext' => 'Бу сайтда джангы бет къуралыу тыйылгъанды.
 Ызына къайтыб болгъан бетни тюрлендирирге боллукъсуз, [[Special:UserLogin|системагъа кесигизни танытыргъа неда джангы тергеу джазыу (аккаунт) къураргъа]].',
@@ -854,8 +849,8 @@ $2',
 'sectioneditnotsupported-title' => 'Бёлюмлени тюрлендирир мадар джокъду.',
 'sectioneditnotsupported-text' => 'Бу бетде бёлюмлени тюрлендирирге болмайды.',
 'permissionserrors' => 'Эркинликлени халатлары',
-'permissionserrorstext' => 'Былайдагъы {{PLURAL:$1|чурум|чурумла}} ючюн, буну этерге хакъыгъыз джокъду:',
-'permissionserrorstext-withaction' => "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|Чуруму|Чурумлары}}:",
+'permissionserrorstext' => 'Былайдагъы {{PLURAL:$1|1=чурум|чурумла}} ючюн, буну этерге хакъыгъыз джокъду:',
+'permissionserrorstext-withaction' => "«'''$2'''» этерге амалыгъыз джокъду. {{PLURAL:$1|1=Чуруму|Чурумлары}}:",
 'recreate-moveddeleted-warn' => "'''Эс бёлюгюз! Сиз алгъын кетерилген бетни джангыдан къураргъа излейсиз'''
 
 Бетни джангыдан къураргъа кереклигине сагъыш этигиз.
@@ -887,7 +882,7 @@ $2',
 
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Эсгериу:''' Бу бетде асыры кёб къайнакълы функция барды.
-Бу $2 чакъырыудан аз болургъа керекди, бусагъатда {{PLURAL:$1|1 чакъырыу барды|$1 чакъырыу барды}}.",
+Бу $2 чакъырыудан аз болургъа керекди, бусагъатда {{PLURAL:$1|1=1 чакъырыу барды|$1 чакъырыу барды}}.",
 'expensive-parserfunction-category' => 'Асыры кёб къайнакълы функциялары болгъан бетле',
 'post-expand-template-inclusion-warning' => "'''Эсгериу:''' къошулгъан шаблонланы ёлчеми асыры уллуду.
 Бир-бир шаблонла бетге къошуллукъ тюлдюле.",
@@ -937,9 +932,9 @@ $3 джанындан берилген сылтау: ''$2''",
 'histlegend' => "Ангылатыула: '''({{int:cur}})''' — бусагъатдагъы версиядан башхалыгъы, '''({{int:last}})''' — алдагъы версиядан башхалыгъы; '''({{int:last}})''' — гитче тюрлениу",
 'history-fieldset-title' => 'Тарихине къара',
 'history-show-deleted' => 'Къуру кетерилгенле',
-'histfirst' => 'Эм эски',
-'histlast' => 'Эм джангы',
-'historysize' => '($1 {{PLURAL:$1|байт|байт}})',
+'histfirst' => 'эм эскиле',
+'histlast' => 'эм джангыла',
+'historysize' => '($1 {{PLURAL:$1|1=байт|байт}})',
 'historyempty' => '(бош)',
 
 # Revision feed
@@ -985,15 +980,11 @@ $3 джанындан берилген сылтау: ''$2''",
 'revisiondelete' => 'Бетни версияларын кетер/къайтар',
 'revdelete-nooldid-title' => 'Нюзюрлю версиясы берилмегенди',
 'revdelete-nooldid-text' => 'Бу функцияны тындырыр ючюн нюзюрленнген версиягъыз (неда версияларыгъыз) джокъду. Теджеген версиягъыз джараулу тюлдю, неда джараулу версияны джарырыгъа излейсиз.',
-'revdelete-nologtype-title' => 'Журналны типи белгиленмегенди',
-'revdelete-nologtype-text' => 'Иш тындырыргъа керек болгъан журналны типин белгилемегенсиз.',
-'revdelete-nologid-title' => 'Журналда джазыу халатлыды',
-'revdelete-nologid-text' => 'Бу функцияны тындырыр ючюн чырт бир журнал типи белгиленмегенди, неда белгиленген журнал тип джараусузду.',
 'revdelete-no-file' => 'Белгиленнген файл джокъду.',
 'revdelete-show-file-confirm' => '«<nowiki>$1</nowiki>» файлны $2 $3 датада кетерилген версиясына къараргъа излегенигизге ишексизмисиз?',
 'revdelete-show-file-submit' => 'Хоу',
-'revdelete-selected' => "'''[[:$1]] бетни {{PLURAL:$2|Сайланнган версия|сайланнган версиялары}}:'''",
-'logdelete-selected' => "'''Журналны {{PLURAL:$1|Сайланнган джазыу|сайланнган джазыулары}}:'''",
+'revdelete-selected' => "'''[[:$1]] бетни {{PLURAL:$2|1=Сайланнган версия|сайланнган версиялары}}:'''",
+'logdelete-selected' => "'''Журналны {{PLURAL:$1|1=Сайланнган джазыу|сайланнган джазыулары}}:'''",
 'revdelete-text' => "'''Кетерилге версияла бла болуула алкъын бетни тарихи бла журналлада кёрюннюкдю, алай а бир кесеги тюз кириучюледен джашырыллыкъды.'''
 {{SITENAME}} сайтдагъы башха администраторла джашырылгъан ичге кирирге эмда аны ызына салыргъа боллукъдула.",
 'revdelete-confirm' => 'Тилейбиз, буну этерге излегенигизни, эсеблерин ангылагъаныгъызны, эм буну [[{{MediaWiki:Policy-url}}|джорукълагъа]] кёре этгенигизни билдиригиз.',
@@ -1013,7 +1004,7 @@ $3 джанындан берилген сылтау: ''$2''",
 'revdelete-suppress' => 'Администраторладан да джашыра тур билгилени',
 'revdelete-unsuppress' => 'Ызына къайтарылгъан версияладан тыйгъычланы кетер',
 'revdelete-log' => 'Чурум:',
-'revdelete-submit' => '{{PLURAL:$1|Сайланнган версия|Сайланнган версиялада}} хайырлан',
+'revdelete-submit' => '{{PLURAL:$1|1=Сайланнган версия|Сайланнган версиялада}} хайырлан',
 'revdelete-success' => "'''Версияны кёрюнюую джетишимли тюрлендирилгенди'''",
 'revdelete-failure' => "'''Версияны кёрюнюую тюрленеллик тюлдю'''
 $1",
@@ -1021,8 +1012,6 @@ $1",
 'logdelete-failure' => "'''Журналны кёрюнюую салыналмады:'''
 $1",
 'revdel-restore' => 'кёрюнюуню тюрлендир',
-'revdel-restore-deleted' => 'кетерилген версияла',
-'revdel-restore-visible' => 'кёрюннген версияла',
 'pagehist' => 'Бетни тарихи',
 'deletedhist' => 'Кетериулени тарихи',
 'revdelete-hide-current' => '$2 $1 даталада джазыуну джашырыууну халаты: бу бусагъатдагъы версиясыды.
@@ -1065,7 +1054,7 @@ $1",
 'mergehistory-go' => 'Бирлешиннген тюрлендириулени кёргюз',
 'mergehistory-submit' => 'Тюрлениулени бирлештир',
 'mergehistory-empty' => 'Бирлешдирир ючюн тюрлениуле табылмагъандыла',
-'mergehistory-success' => '[[:$1]] бетни $3 {{PLURAL:$3|тюрлендириую|тюрлендириую}} тыйыншлы [[:$2]] ичинде бирлешдирилди.',
+'mergehistory-success' => '[[:$1]] бетни $3 {{PLURAL:$3|1=тюрлендириую|тюрлендириую}} тыйыншлы [[:$2]] ичинде бирлешдирилди.',
 'mergehistory-fail' => 'Бетлине тарихлери бирлешемеди, тилейбиз бетни эмда заманны параметрлерин джангыдан сынагъыз.',
 'mergehistory-no-source' => '$1 тамал бет джокъду',
 'mergehistory-no-destination' => '$1 нюзюр бет джокъду',
@@ -1091,9 +1080,9 @@ $1",
 'compareselectedversions' => 'Сайланнган версияланы тенглешдириу',
 'showhideselectedversions' => 'Сайланнган версияланы кёргюз/джашыр',
 '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|табылмады}}.
+'diff-multi' => '({{PLURAL:$2|Бир къошулуучу|$2 къошулуучу}} этген {{PLURAL:$1|Бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
+'diff-multi-manyusers' => '($2 къошулуучудан кёб {{PLURAL:$2|1=Бир къошулуучу|къошулуучу}} этген {{PLURAL:$1|1=бир аралыкъ тюрлениу|$1 аралыкъ тюрлениу}} кёргюзюлмегенди)',
+'difference-missing-revision' => 'Бу тенглешдириу ($1) ючюн {{PLURAL:$2|1=$2 версия}} {{PLURAL:$2|табылмады}}.
 
 
 Бу, эскирген джибериу бла кетерилген бетни версияларын тенглешдириуге кёчген сагъатда кёбюсюне болады.
@@ -1102,24 +1091,18 @@ $1",
 # Search results
 'searchresults' => 'Излеуню эсеби',
 'searchresults-title' => '«$1» ючюн излеуню эсеблери',
-'searchresulttext' => 'Проектни бетлеринде излеуню юсюндет толу информация табарча [[{{MediaWiki:Helppage}}|{{int:help}}]] бетге киригиз.',
-'searchsubtitle' => 'Изленнген «[[:$1]]» ([[Special:Prefixindex/$1|бу ат бла башланнган бетле]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|бу атха джибериу берген бетле]])',
-'searchsubtitleinvalid' => '«$1» сордугъуз',
 'toomanymatches' => 'Асыры кёб бирчалыкъ барды, джангыдан соруу джиберирге кюрешигиз',
 'titlematches' => 'Бетлени атында бирчалыкъ барды',
-'notitlematches' => 'Бетлени атларында бирчалыкълары джокъду',
 'textmatches' => 'Бетлени текстлеринде бирчалыкъла барды',
 'notextmatches' => 'Бетлени текстлеринде бирчалыкъ джокъду',
 'prevn' => 'алдагъы {{PLURAL:$1|$1}}',
 'nextn' => 'эндиги {{PLURAL:$1|$1}}',
 'prevn-title' => 'Алдагъы $1 {{PLURAL:$1|эсеб|эсеб}}',
-'nextn-title' => 'Ð\90Ñ\80Ñ\82дагÑ\8aÑ\8b $1 {{PLURAL:$1|эсеб|эсеб}}',
+'nextn-title' => 'Эндиги $1 {{PLURAL:$1|эсеб|эсеб}}',
 'shown-title' => 'Бетде $1 {{PLURAL:$1|джазыуну}} кёргюз',
 'viewprevnext' => 'Къара: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Излеуню джарашдырыулары',
 'searchmenu-exists' => "'''Бу викиде «[[:$1]]» бет барды'''",
 'searchmenu-new' => "'''Бу вики-проектде «[[:$1]]» бетни къура!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикс бла бетни кёргюз]]',
 'searchprofile-articles' => 'Баш бетле',
 'searchprofile-project' => 'Болушлукъ эм проект бетле',
 'searchprofile-images' => 'Мультимедия',
@@ -1130,8 +1113,8 @@ $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-size' => '$1 ({{PLURAL:$2|1 сёз|$2 сёз}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 элемент|$1 элемент}} ({{PLURAL:$2|1=1 тюбкатегория|$2 тюбкатегория}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
 'search-result-score' => 'Келишиулюк: $1%',
 'search-redirect' => '(Джиберилиниу $1)',
 'search-section' => '($1 бёлюм)',
@@ -1140,20 +1123,16 @@ $1",
 'search-interwiki-default' => '$1 эсеблери:',
 'search-interwiki-more' => '(дагъыда)',
 'search-relatedarticle' => 'Байламлы',
-'mwsuggest-disable' => 'Излеуде юретиулени джукълат',
 'searcheverything-enable' => 'Атланы бютеу аламларында изле',
 'searchrelated' => 'бейламлы',
 'searchall' => 'бютеу',
-'showingresults' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|эсеб|эсебле}} {{PLURAL:$1|кёргюзюлгенди|кёргюзюлгендиле}}.',
-'showingresultsnum' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|эсеб|эсебле}} {{PLURAL:$3|кёргюзюлгенди|кёргюзюлгендиле}}.',
-'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|'''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
-'nonefound' => "'''Эсгериу:''' тынгылау бла излеу бютеу атланы аламында бардырылмайды. Бютеу атланы аламында (къошулуучуланы сюзюулери, шаблонла эмда башхала) излер ючюн аллындан ''all:'' префиксни хайырландырыгъыз неда керекли атланы аламын белгилегиз.",
+'showingresults' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$1</strong> {{PLURAL:$1|1=эсеб|эсебле}} {{PLURAL:$1|1=кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsnum' => 'Тюбюрек №&nbsp;<strong>$2</strong> башлаб <strong>$3</strong> {{PLURAL:$3|1=эсеб|эсебле}} {{PLURAL:$3|1=кёргюзюлгенди|кёргюзюлгендиле}}.',
+'showingresultsheader' => "'''$4''' ючюн {{PLURAL:$5|1='''$3''' эсебден '''$1'''|'''$1 — $2''' арасы '''$3''' эсеб}}",
 'search-nonefound' => 'Соруу бла келишген эсеб джокъду',
-'powersearch' => 'Кенг излеу',
 'powersearch-legend' => 'Кенг излеу',
 'powersearch-ns' => 'Атла аламда излеу:',
 'powersearch-redir' => 'Джибериулени кёргюз',
-'powersearch-field' => 'Излеу:',
 'powersearch-togglelabel' => 'Белгиле:',
 'powersearch-toggleall' => 'Барысы да',
 'powersearch-togglenone' => 'Бири да',
@@ -1165,7 +1144,6 @@ $1",
 'preferences' => 'Джарашдырыула',
 'mypreferences' => 'Джарашдырыула',
 'prefs-edits' => 'Тюрлендириулени саны:',
-'changepassword' => 'Паролну ауушдур',
 'prefs-skin' => 'Джасауу',
 'skin-preview' => 'Ал къарау',
 'datedefault' => 'Сайлау джокъду',
@@ -1177,7 +1155,7 @@ $1",
 'prefs-rc' => 'Ахыр тюрлениуле',
 'prefs-watchlist' => 'Кёзде тургъан тизме',
 'prefs-watchlist-days' => 'Кёзде тургъан тизмеде кёргюзюллюк кюнлени саны:',
-'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|кюн|кюн}}',
+'prefs-watchlist-days-max' => 'Максимум $1 {{PLURAL:$1|1=кюн|кюн}}',
 'prefs-watchlist-edits' => 'Кёзде тургъан тизмени кенглешдирилген вариантында кёргюзюллюк тюрлениулени саны:',
 'prefs-watchlist-edits-max' => 'Максимум саны:1000',
 'prefs-watchlist-token' => 'Кёзде тургъан тизмени токени:',
@@ -1188,17 +1166,15 @@ $1",
 'prefs-email' => 'Электрон почтаны параметрлери',
 'prefs-rendering' => 'Кёрюнюую',
 'saveprefs' => 'Сакъла',
-'resetprefs' => 'Тюрлениулени ызына къайтар',
 'restoreprefs' => 'Тынгылау бла джарашдырыуланы ызына къайтар',
 'prefs-editing' => 'Тюрлендириу',
 'rows' => 'Тизгинле:',
 'columns' => 'Колонкала:',
 'searchresultshead' => 'Излеу',
-'resultsperpage' => 'Бетде кёргюзюллюк табылгъан джазыуланы саны:',
 'stub-threshold' => '<a href="#" class="stub">Стаблагъа джибериуню</a> формат этер ючюн марда (байтлада):',
 'stub-threshold-disabled' => 'Джукъланыбды',
 'recentchangesdays' => 'Ахыр тюрлениуледе кёргюзюллюк кюнле:',
-'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|кюн|кюн}})',
+'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|1=кюн|кюн}})',
 'recentchangescount' => 'Тынгылау бла кёргюзюллюк тюрлениулени саны:',
 'prefs-help-recentchangescount' => 'Бу, ахыр тюрлениулени, бетни тарихлерин эмда журналланы ичине къошады.',
 'savedprefs' => 'Джарашдырыуларыгъыз сакъландыла.',
@@ -1206,7 +1182,6 @@ $1",
 'localtime' => 'Джерли заман:',
 'timezoneuseserverdefault' => 'Серверни джарашдырыуларын хайырландыр ($1)',
 'timezoneuseoffset' => 'Башха (тебиндириуню беригиз)',
-'timezoneoffset' => 'Тебиндириу¹:',
 'servertime' => 'Сервер заман:',
 'guesstimezone' => 'Браузерден толтур',
 'timezoneregion-africa' => 'Африка',
@@ -1234,7 +1209,7 @@ $1",
 'youremail' => 'Электрон почта:',
 'username' => '{{GENDER:$1|Къошулуучу ат}}:',
 'uid' => '{{GENDER:$1|Къошулуучуну}} коду:',
-'prefs-memberingroups' => '{{PLURAL:$1|Группаны|Группаланы}} {{GENDER:$2|члени}}:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Группаны|Группаланы}} {{GENDER:$2|члени}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Регистрацияны этилген заманы:',
 'prefs-registration-date-time' => '$1',
@@ -1247,7 +1222,7 @@ $1",
 'badsig' => 'Джараусуз къол салыныу.
 HTML теглени осмакълагъыз.',
 'badsiglength' => 'Къол салыуугъуз бек узунду.
-$1 {{PLURAL:$1|символдан|символладан}} кеб болургъа болмайды.',
+$1 {{PLURAL:$1|1=символдан|символладан}} кеб болургъа болмайды.',
 'yourgender' => 'Эркиши/Тиширыу:',
 'gender-unknown' => 'Белгиленмегенди',
 'gender-male' => 'эркиши',
@@ -1444,13 +1419,13 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'recentchanges-label-minor' => 'Бу гитче тюрлениудю',
 'recentchanges-label-bot' => 'Бу тюрлендириуню бот этгенди',
 'recentchanges-label-unpatrolled' => 'Бу тюрлендириу алкъын патруль этилинмегенди',
-'recentchanges-legend-newpage' => '$1 — джангы бет',
-'rcnote' => '$4 $5 заманнга, арт {{PLURAL:$1|1|$1}} тюрлениу {{PLURAL:$2|1|$2}}  кюнню ичинде',
+'recentchanges-label-plusminus' => 'Бетни ёлчеми быллай бир байтха тюрленнгенди',
+'recentchanges-legend-newpage' => '(къарагъыз: [[Special:NewPages|джангы бетлени тизмеси]])',
 'rcnotefrom' => 'Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле',
 'rclistfrom' => '$1 башлаб джангы тюрлениулени кёргюз',
 'rcshowhideminor' => 'гитче тюрлендириулени $1',
 'rcshowhidebots' => 'ботланы $1',
-'rcshowhideliu' => 'кирген къошулуучуланы $1',
+'rcshowhideliu' => '$1 системагъа кирген къошулуучу',
 'rcshowhideanons' => 'анонимлени $1',
 'rcshowhidepatr' => '$1 патруль этилиннген тюрлендириуле',
 'rcshowhidemine' => 'кесими тюрлендириулерими $1',
@@ -1468,14 +1443,14 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'rc-change-size' => '$1',
 'rc-change-size-new' => 'Тюрлениуден сора ёлчеми: $1 {{PLURAL:$1|байт}}',
 'newsectionsummary' => '/* $1 */ Джангы бёлюм',
-'rc-enhanced-expand' => 'Ð\9aÑ\8aоÑ\88акÑ\8aланÑ\8b ÐºÑ\91Ñ\80гÑ\8eз (JavaScript Ñ\85айÑ\8bÑ\80ланадÑ\8b)',
+'rc-enhanced-expand' => 'ТолÑ\83Ñ\81Ñ\83 Ð±Ð»Ð° ÐºÑ\91Ñ\80гÑ\8eз',
 'rc-enhanced-hide' => 'Къошакъланы джашыр',
 'rc-old-title' => 'биринчи «$1» деб къуралгъан',
 
 # Recent changes linked
 'recentchangeslinked' => 'Байламлы тюрлениуле',
-'recentchangeslinked-feed' => 'Ð\91айламлÑ\8b Ñ\82Ñ\8eÑ\80лендиÑ\80иÑ\83ле',
-'recentchangeslinked-toolbox' => 'Байламлы тюрлендириуле',
+'recentchangeslinked-feed' => 'Байламлы тюрлениуле',
+'recentchangeslinked-toolbox' => 'Байлам тюрлениуле',
 'recentchangeslinked-title' => '$1 бет бла байламлы тюрлендириуле',
 'recentchangeslinked-summary' => "Белгиленнген бет (неда белгиленнген категориягъа киргенле) джиберген бетледе джангы тюрлениулени тизмеси.
 [[Special:Watchlist|Кёзде тургъан тизмеге]] кирген бетле '''чертилибдиле'''.",
@@ -1527,9 +1502,9 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 'filetype-badmime' => '«$1» MIME типли файлланы джюклениуюне эркинлик берлимейди.',
 'filetype-bad-ie-mime' => 'Internet Explorer, буну эркинлик берилмеген эмда потенциал заран берлик «$1» файл тип кибик таныгъаны ючюн бу файл джюклениллик тюлдю.',
 'filetype-unwanted-type' => "'''\".\$1\"''' изленмеген файл типиди.
-Изленнген {{PLURAL:\$3|файл тип|файл типле}} \$2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|джасакъланнган файл типди|джасакъланнган файл типледиле}}.
-Эркинлик берилген {{PLURAL:$3|файл тип|файл типле}}: $2.",
+Изленнген {{PLURAL:\$3|1=файл тип|файл типле}} \$2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}.
+Эркинлик берилген {{PLURAL:$3|1=файл тип|файл типле}}: $2.",
 'filetype-missing' => 'Файлны кенглешиуу джокъду (сёз ючюн, «.jpg» кибик)',
 'empty-file' => 'Сиз ийген файл бошду.',
 'file-too-large' => 'Сиз ийген файл асыры уллуду.',
@@ -1567,7 +1542,7 @@ $1 {{PLURAL:$1|символдан|символладан}} кеб болургъ
 Файлыгъызны джангыдан джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгъыз. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Быллай атлы файл файлланы сакълауну джеринде барды.
 Дагъыда файлыгъызны джюклерге излей эсегиз, ызына къайтыб джангы ат хайырланыгыз. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Бу файл эндиги {{PLURAL:$1|файлны|файлланы}} дубликатыды:',
+'file-exists-duplicate' => 'Бу файл эндиги {{PLURAL:$1|1=файлны|файлланы}} дубликатыды:',
 'file-deleted-duplicate' => 'Бу файлны ушашы болгъан башха файл ([[:$1]]) алгъаракъ кетерилгенди. Бу файлны джангыдан джюклерни аллы бла файлны кетериуюню тарихи бла танышыгъыз.',
 'uploadwarning' => 'Эсгертиу',
 'uploadwarning-text' => 'Файлны тюбюрекде келтирилген ачыкълауун тюрлендиригиз да джангыдан кёрюгюз.',
@@ -1645,7 +1620,7 @@ URL-адрес тюз болгъанын осмакълагъыз эмда дж
 'backend-fail-closetemp' => 'Болджаллы файлны джабалмайды.',
 'backend-fail-read' => '«$1» файлны окъуялмады.',
 'backend-fail-create' => '«$1» файлны джазалмады.',
-'backend-fail-maxsize' => 'Ёлчеми {{PLURAL:$2|бир байт|$2 байт}}дан кёб болгъаны себебли «$1» файл джазылмады.',
+'backend-fail-maxsize' => 'Ёлчеми {{PLURAL:$2|1=бир байт|$2 байт}}дан кёб болгъаны себебли «$1» файл джазылмады.',
 
 # Special:UploadStash
 'uploadstash' => 'Джашыртын джюклеу',
@@ -1729,14 +1704,14 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'filehist-comment' => 'Эсгериу',
 'filehist-missing' => 'Файл джокъду',
 'imagelinks' => 'Файлны хайырланыуу',
-'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|бет|$1 бет}} джибередиле:',
+'linkstoimage' => 'Бу файлгъа {{PLURAL:$1|1=бет|$1 бет}} джибередиле:',
 'linkstoimage-more' => '$1 дегенден артыкъ {{PLURAL:$1|бет}} бу файлгъа джибериу береди.
 Бу тизмеде бу файлгъа {{PLURAL:$1|къуру $1 джибериу}} кёргюзюледи.
 [[Special:WhatLinksHere/$2|Толу тизме]] да барды.',
 'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
 'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
 'linkstoimage-redirect' => '$1 (файл редирект) $2',
-'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
+'duplicatesoffile' => '{{PLURAL:$1|1=файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
 'sharedupload' => 'Бу файл $1денди эм башха проектледе хайырландыргъа боллукъду.',
 'sharedupload-desc-there' => 'Бу файл $1 базадан башха проектледе хайырландырыргъа боллукъду.
 Андан кёб билги ючюн [$2 файлны ангылатыу бетге] къарагъыз.',
@@ -1797,7 +1772,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Random page
 'randompage' => 'Эсде болмагъан бет',
-'randompage-nopages' => '{{PLURAL:$2|Ат аланында|Ат аланында}} чырт бир бет джокъду: $1.',
+'randompage-nopages' => '{{PLURAL:$2|1=Ат аланында|Ат аланында}} чырт бир бет джокъду: $1.',
 
 # Random redirect
 'randomredirect' => 'Сакъланмагъан джибериу',
@@ -1821,7 +1796,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'statistics-views-peredit' => 'Тюрлендириуге къарауну саны',
 'statistics-users' => 'Регистрация этилген [[Special:ListUsers|къошулуучула]]',
 'statistics-users-active' => 'Актив къошулуучула',
-'statistics-users-active-desc' => 'Ахыр {{PLURAL:$1|1 кюнде|$1 кюнде}} ишлеме этген къошулуучула',
+'statistics-users-active-desc' => 'Ахыр {{PLURAL:$1|1=1 кюнде|$1 кюнде}} ишлеме этген къошулуучула',
 'statistics-mostpopular' => 'Эм кёб къаралгъан бетле',
 
 'pageswithprop-submit' => 'Таб',
@@ -1846,14 +1821,14 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'fewestrevisions' => 'Эм аз версиясы болгъан бетле',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт}}',
-'ncategories' => '$1 {{PLURAL:$1|категория|категорияла}}',
-'nlinks' => '$1 {{PLURAL:$1|джибериу|джибериу}}',
-'nmembers' => '$1 {{PLURAL:$1|объект}}',
-'nrevisions' => '$1 {{PLURAL:$1|версия|версия}}',
-'nviews' => '$1 {{PLURAL:$1|къарау|къарау}}',
-'nimagelinks' => '$1 {{PLURAL:$1|бетде|бетде}} хайырланады',
-'ntransclusions' => '$1 {{PLURAL:$1|бетде|бетде}} хайырланады',
+'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
+'ncategories' => '$1 {{PLURAL:$1|1=категория|категорияла}}',
+'nlinks' => '$1 {{PLURAL:$1|1=джибериу|джибериу}}',
+'nmembers' => '$1 {{PLURAL:$1|объект|объект}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=версия|версия}}',
+'nviews' => '$1 {{PLURAL:$1|1=къарау|къарау}}',
+'nimagelinks' => '$1 {{PLURAL:$1|1=бетде|бетде}} хайырланады',
+'ntransclusions' => '$1 {{PLURAL:$1|1=бетде|бетде}} хайырланады',
 'specialpage-empty' => 'Сорма эсеб келтирмеди.',
 'lonelypages' => 'Ёксюз бетле',
 'lonelypagestext' => 'Тюбюндеги бетлеге {{SITENAME}} сайтдагъы башха бетледен джибериу берилмегенди неда ала башха бетлеге къошулмагъандыла.',
@@ -1883,15 +1858,13 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'protectedpages' => 'Къоруугъа алыннган бетле',
 'protectedpages-indef' => 'Къуру болджалсыз къоруу',
 'protectedpages-cascade' => 'Джангыз секиртме къоруу',
-'protectedpagestext' => 'Эндиги бетле атын ауушдуруу бла тюрлендириуден джакъланыбдыла.',
 'protectedpagesempty' => 'Бусагъатда бу параметрле бла джакъланнган бет джекъду.',
 'protectedtitles' => 'Джакъланнган башлыкъла',
-'protectedtitlestext' => 'Бу атланы хайырланыргъа эркинлик джокъду',
 'protectedtitlesempty' => 'Бусагъатда, бу параметрле бла джакъланнган башлыкъ джокъду.',
 'listusers' => 'Къошулуучуланы тизмеси',
 'listusers-editsonly' => 'Къуру тюрлендириу этген къошлуучуланы кёргюз',
 'listusers-creationsort' => 'Къуралгъан заманына кёре сафла',
-'usereditcount' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'usereditcount' => '$1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}}',
 'usercreated' => '$1 $2 заманда {{GENDER:$3|регистрацияны ётгенди}}',
 'newpages' => 'Джангы бетле',
 'newpages-username' => 'Къошулуучуну аты:',
@@ -1936,9 +1909,6 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'allpagesto' => 'Мында чыгъарыуну тохтат:',
 'allarticles' => 'Бютеу бетле',
 'allinnamespace' => '«$1» атла аламдагъы бютеу  бетле',
-'allnotinnamespace' => 'Бютеу бетле ($1 аламда болмагъанла)',
-'allpagesprev' => 'Аллындагъы',
-'allpagesnext' => 'Эндиги',
 'allpagessubmit' => 'Тындыр',
 'allpagesprefix' => 'Былайда джазгъан харифледен башланнган бетлени тизме эт:',
 'allpagesbadtitle' => 'Кирилген бет аты тиллени арасы байлм неда викилени арасында байлам болгъаны себебли джараусузду. Башлыкълада хайырланыуу джасакъ болгъан бир неда андан аслам символ тутаргъа болур.',
@@ -1950,7 +1920,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Special:Categories
 'categories' => 'Категорияла',
-'categoriespagetext' => 'Ызындан келген {{PLURAL:$1|категория|категорияла}} бет неда медия-файл тутадыла.
+'categoriespagetext' => 'Ызындан келген {{PLURAL:$1|1=категория|категорияла}} бет неда медия-файл тутадыла.
 [[Special:UnusedCategories|Хайырланмагъан категорияла]] былайда кёргюзюлмегендиле.
 Дагъыда [[Special:WantedCategories|изленнген категорияла]] гъакъарагъыз.',
 'categoriesfrom' => 'Бу бла башланнган категорияланы кёргюз:',
@@ -1981,8 +1951,8 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 
 # Special:ActiveUsers
 'activeusers' => 'Актив къошулуучуланы тизмеси',
-'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
-'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
+'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|1=кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы тизмесиди.',
+'activeusers-count' => 'Ахыр {{PLURAL:$3|1=кюнде|$3 кюнде}} $1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}}',
 'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
 'activeusers-hidebots' => 'Ботланы джашыр',
 'activeusers-hidesysops' => 'Администраторланы джашыр',
@@ -2000,12 +1970,12 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'listgrouprights-members' => '(къауумну тизмеси)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => '{{PLURAL:$2|Къауум|Къауум}} къошаргъа боллукъду: $1',
-'listgrouprights-removegroup' => 'бу {{PLURAL:$2|къауумдан|къауумладан}} къыстаргъа боллукъду: $1',
+'listgrouprights-addgroup' => '{{PLURAL:$2|1=Къауум|Къауум}} къошаргъа боллукъду: $1',
+'listgrouprights-removegroup' => 'бу {{PLURAL:$2|1=къауумдан|къауумладан}} къыстаргъа боллукъду: $1',
 'listgrouprights-addgroup-all' => 'Бютеу къауумлагъа къошаргъа боллукъду',
 'listgrouprights-removegroup-all' => 'бютеу къауумладан къыстаргъа боллукъду',
-'listgrouprights-addgroup-self' => 'кесини тергеу джазыууна {{PLURAL:$2|къауум|къауумла}} къошаллыкъды: $1',
-'listgrouprights-removegroup-self' => 'кесини тергеу джазыуундан {{PLURAL:$2|къауум|къауумланы}} къораталлыкъды: $1',
+'listgrouprights-addgroup-self' => 'кесини тергеу джазыууна {{PLURAL:$2|1=къауум|къауумла}} къошаллыкъды: $1',
+'listgrouprights-removegroup-self' => 'кесини тергеу джазыуундан {{PLURAL:$2|1=къауум|къауумланы}} къораталлыкъды: $1',
 'listgrouprights-addgroup-self-all' => 'Бютеу къауумланы кесини тергеу джазыууна къошаллыкъды',
 'listgrouprights-removegroup-self-all' => 'Кесини тергеу джазыуундан бютеу къауумланы къораталлыкъды',
 
@@ -2046,7 +2016,7 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'usermessage-editor' => 'Система билдириучю',
 
 # Watchlist
-'watchlist' => 'Кёзюмде тургъан тизмем',
+'watchlist' => 'Кёздеги тизме',
 'mywatchlist' => 'Кёздеги тизме',
 'watchlistfor2' => '$1 ючюн $2',
 'nowatchlist' => 'Кёзюгюзде тургъан тизмегиз бошду.',
@@ -2064,12 +2034,12 @@ URL-ни тюз , сайтны ачыкъ болгъанына ишексиз б
 'unwatchthispage' => 'Кёзде тутууну тохтат',
 'notanarticle' => 'Статья тюлдю',
 'notvisiblerev' => 'Версия кетерилгенди',
-'watchlist-details' => 'Кёзюгюзде тургъан тизмегизде, сюзюу бетлери саналмай {{PLURAL:$1|$1 бет|$1 бет}} барды.',
+'watchlist-details' => 'Кёздеги тизмегизде сюзюу бетлери саналмай {{PLURAL:$1|бет|бет}} барды.',
 'wlheader-enotif' => 'Эл. почта бла хапар бериу джандырылыбды.',
 'wlheader-showupdated' => "Ахыр кириуюгюзден сора бетни тюрлениулери '''къалын''' джазыу бла кёргюзюлгенди.",
 'watchmethod-recent' => 'кёзде тургъан бетледе этилген ахыр тюрлениуле кёрюу',
 'watchmethod-list' => 'кёзде тургъан бетледе этилген ахыр тюрлениуле кёрюу',
-'watchlistcontains' => 'Кёзюгюзде тургъан тизмегизде $1 {{PLURAL:$1|бет|бет}} барды.',
+'watchlistcontains' => 'Кёзюгюзде тургъан тизмегизде $1 {{PLURAL:$1|1=бет|бет}} барды.',
 'iteminvalidname' => "'$1' элемент бла проблемала, джараусуз ат...",
 'wlnote' => "Тюбюндеди кёргюзюлгенди: ахыр '''$2''' сагъатха этилген ахыр '''$1''' тюрлениу, $3 $4 заманнга дери.",
 'wlshowlast' => 'Арт $1 сагъат $2 кюннге $3 кёргюз',
@@ -2123,7 +2093,7 @@ $UNWATCHURL
 'exblank' => 'бет бош эди',
 'delete-confirm' => '«$1» — кетериу',
 'delete-legend' => 'Кетер',
-'historywarning' => "'''Эсгериу:''' кетериле тургъан бетни $1 {{PLURAL:$1|версиялы|версиялы}} тарихи барды:",
+'historywarning' => "'''Эсгериу:''' кетериле тургъан бетни $1 {{PLURAL:$1|1=версиялы|версиялы}} тарихи барды:",
 'confirmdeletetext' => 'Сиз бетни (неда суратны) бютеу тюрлениу тарихи бла толу кетерирге соргъансыз.
 Алай этерге керти излегенигизни эм  [[{{MediaWiki:Policy-url}}кетериу политика]] бёлюмде ачыкъланнган джорукъла бла этгенигизни, бегитигиз.',
 'actioncomplete' => 'Этим толтурулду',
@@ -2142,9 +2112,9 @@ $UNWATCHURL
 ** Автор хакъланы бузуу
 ** Вандализм',
 'delete-edit-reasonlist' => 'Чурумланы тизмесин тюрлендир',
-'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|версияла|версияла}} бла бек узун тарихи барды.
+'delete-toobig' => 'Бу бетни, $1 {{PLURAL:$1|1=версияла|версияла}} бла бек узун тарихи барды.
 Быллай бетлени кетерилиую, {{SITENAME}} сайтны бузмаз ючюн чекленгенди.',
-'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|версиядан|версиядан}} артыкъ.
+'delete-warning-toobig' => 'Бу бетни уллу тюрлендириу тарихи барды, $1 {{PLURAL:$1|1=версиядан|версиядан}} артыкъ.
 Буну кетериу {{SITENAME}} ишлеулени асхатыргъа боллукъду;
 эсгере андан ары ишлегиз.',
 
@@ -2193,7 +2163,7 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 'protect-locked-dblock' => "Актив билги базаны киритленнгени себебли, коъруулау параметрлени тюрлендиреллик тюлсюз.
 '''$1''' бет ючюн бусагъатдагъы параметрле:",
 'protect-locked-access' => "Сизге хакъ джетмейди бетни джакълау дараджасын тюрлендирирге. '''$1''' бетни бусагъатдагъы джакълау джарашдырыулары:",
-'protect-cascadeon' => 'Бу бет {{PLURAL:$1|тюбюнде белгиленнген бетге|тюбюнде белгиленнген бетлеге}} къошулгъаны ючюн джакъланыбды. Ол {{PLURAL:$1|бетде|бетледе}} каскадлы джакълау салыныб турады. Сиз бу бетни джакълау дараджасын тюрлендирирге боллукъсуз, алай а ол каскад джакълауну тюрледирлик тюлдю.',
+'protect-cascadeon' => 'Бу бет {{PLURAL:$1|1=тюбюнде белгиленнген бетге|тюбюнде белгиленнген бетлеге}} къошулгъаны ючюн джакъланыбды. Ол {{PLURAL:$1|1=бетде|бетледе}} каскадлы джакълау салыныб турады. Сиз бу бетни джакълау дараджасын тюрлендирирге боллукъсуз, алай а ол каскад джакълауну тюрледирлик тюлдю.',
 'protect-default' => 'Джакълаусуз',
 'protect-fallback' => '«$1» эркинлик керекди',
 'protect-level-autoconfirmed' => 'Джангы эм регистрация этмеген къошулуучуладан джакъла',
@@ -2238,11 +2208,11 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 'undeletepage' => 'Кетерилген бетлени къара эмда ызына къайтар.',
 'undeletepagetitle' => "'''Тюбюнде [[:$1|$1]] бетни кетерилген версиялары кёрюннгенди'''.",
 'viewdeletedpage' => 'Кетерилген бетлеге къара',
-'undeletepagetext' => 'Тюбюндеги {{PLURAL:$1|бет|$1 бет}} кетерилгенди, алай а алкъыр архивдеди эм ызына къайтарыр мадар барды.
+'undeletepagetext' => 'Тюбюндеги {{PLURAL:$1|1=бет|$1 бет}} кетерилгенди, алай а алкъыр архивдеди эм ызына къайтарыр мадар барды.
 Архив кёзюулю ариуланыргъа болады.',
 'undelete-fieldset-title' => 'Версияны ызына джюкле',
 'undeleteextrahelp' => "Бетле бла бирге тарихини ызына къайтарыр ючюн бютеу белгилени бош къоюгъузда '''Ызына къайтар''' тиекден басыгъыз. Бетни тарихини башха-башха къайтарыр ючюн къайтарыргъа излеген тюрлендириулени белгилеб '''Ызына къайтар''' тиекден басыгъыз. Сайланнган белгилени эм комментарийлени кетерир ючюн '''Ариула''' тиекден басыгъыз.",
-'undeleterevisions' => '$1 {{PLURAL:$1|версия|версия}} архив этилди',
+'undeleterevisions' => '$1 {{PLURAL:$1|1=версия|версия}} архив этилди',
 'undeletehistory' => 'Сиз бетни ызына къайтарсагъыз, аны тюрлендириу тарихи да ызына къайтады.
 Кетерилгенден сора ол ат бла джангы бет къуралса, ызына къайтхан версияла джангы версиланы аллында тюрлендириуню тарихинде чыгъарыкъдыла.',
 'undeleterevdel' => 'Ызына къайтарыу, ахыр версияны неда файлны бузаргъа болса, тохтатыллыкъды.
@@ -2255,12 +2225,11 @@ $2 тюрлендирген алгъаракъ версиясына къайты
 'undeletebtn' => 'Ызына къайтар',
 'undeletelink' => 'къара/ызына сал',
 'undeleteviewlink' => 'кёргюз',
-'undeletereset' => 'Ариула',
 'undeleteinvert' => 'Сайлауну ызына бур',
 'undeletecomment' => 'Чурум:',
-'undeletedrevisions' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}} ызына къайтарылды',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 версия|$1 версия}} бла {{PLURAL:$2|1 файл|$2 файл}} ызына къайтарылды',
-'undeletedfiles' => '{{PLURAL:$1|1 файл|$1 файл}} ызына къайтарылды',
+'undeletedrevisions' => '$1 {{PLURAL:$1|1=тюрлендириу|тюрлендириу}} ызына къайтарылды',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=1 версия|$1 версия}} бла {{PLURAL:$2|1=1 файл|$2 файл}} ызына къайтарылды',
+'undeletedfiles' => '{{PLURAL:$1|1=1 файл|$1 файл}} ызына къайтарылды',
 'cannotundelete' => 'Бетни неда медианы сизден алгъа башха къошулуучу ызына къайтаргъаны себебли сизини ызына къайтарыу ишлемигиз джараусузду.',
 'undeletedpage' => "'''$1 бет ызына къайтарылды '''
 
@@ -2288,12 +2257,12 @@ $1',
 'blanknamespace' => '(Баш)',
 
 # Contributions
-'contributions' => 'Къошулуучуну къошханы',
+'contributions' => '{{GENDER:$1|Къошулуучуну}} къошуму',
 'contributions-title' => '$1 къошулуучуну къошагъы',
 'mycontris' => 'Къошум',
-'contribsub2' => '$1 ($2) къошакъ',
+'contribsub2' => '{{GENDER:$3|$1}} къошуму ($2)',
 'nocontribs' => 'Бу критерийлеге келишген тюрлениуле табылмадыла',
-'uctop' => '(аÑ\85Ñ\8bÑ\80гъы)',
+'uctop' => '(бÑ\83Ñ\81агÑ\8aаÑ\82дагъы)',
 'month' => 'Айдан башлаб (эм алгъаракъ):',
 'year' => 'Джылдан башлаб (эм алгъаракъ):',
 
@@ -2315,7 +2284,7 @@ $1',
 'sp-contributions-submit' => 'Таб',
 
 # What links here
-'whatlinkshere' => 'Былайгъа джибериуле',
+'whatlinkshere' => 'Бетге джибериуле',
 'whatlinkshere-title' => '«$1» бетге джиберген бетле',
 'whatlinkshere-page' => 'Бет:',
 'linkshere' => "'''[[:$1]]''' битге джиберген бетле:",
@@ -2337,13 +2306,11 @@ $1',
 'block' => 'Къошулуучуну блокла',
 'unblock' => 'Къошулуучуну блок этилиуюн алыу',
 'blockip' => 'Бу къошулуучуну блок эт',
-'blockip-title' => 'Къошулуучуну блокга салыу',
 'blockip-legend' => 'Къошулуучуну блокга салыу',
 'blockiptext' => 'Тюбюндеги форманы хайырланыб белгили бир IP-ден неда регистрация этилген къошулуучуну тюрлениу этиуюню тыяллыкъсыз. Бу, джангыз вандализмни тыяр ючюн эм [[{{MediaWiki:Policy-url}}|джорукълагъа]] келишиулю этилирге керекди. Тюбюрек тыйыу бла байламлы ангылатыу джазыгъыз. (юлгю: -Бу- бетледе вандализм этилгенди).',
 'ipadressorusername' => 'IP-адрес неда къошулуучу ат:',
 'ipbexpiry' => 'Бошаллыкъды (ётсе):',
 'ipbreason' => 'Чурум:',
-'ipbreasonotherlist' => 'Башха чурум:',
 'ipbreason-dropdown' => '* Тыйылыуну асламысында тюбеген чурумлары
 ** Джалгъан билги къошуу
 ** Бетлени ичиндегин кетериу
@@ -2358,8 +2325,6 @@ $1',
 'ipbsubmit' => 'Бу адресни/къошулуучуну блокга сал',
 'ipbother' => 'Башха заман:',
 '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',
-'ipbotheroption' => 'башха',
-'ipbotherreason' => 'Башха/къошакъ чурум:',
 'ipbhidename' => 'Къошулуучуну атын тюрлендириуле бла спиоскладан джашыр',
 'ipbwatchuser' => 'Бу къошулуучуну, къошулуучу эмда сюзюу бетлерин кёзде тургъан тизмеге къош',
 'ipb-change-block' => 'Бу джарашдырыула бла къошулуучуну джангыдан тый',
@@ -2388,7 +2353,7 @@ $1',
 'blocklist-reason' => 'Чурум',
 'ipblocklist-submit' => 'Таб',
 'ipblocklist-localblock' => 'Локал блокга салыу',
-'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|блокга салыу|блокга салыула}}',
+'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|1=блокга салыу|блокга салыула}}',
 'infiniteblock' => 'Болджалсыз блокга салыу',
 'expiringblock' => '$1 $2 бошаллыкъды',
 'anononlyblock' => 'къуру анонимле',
@@ -2428,7 +2393,7 @@ $1',
 'ipb_hide_invalid' => 'Бу тергеу джазыуну джашырыр мадар джокъду; асыры кёб тюрлендириу болургъа болур.',
 'ipb_already_blocked' => '«$1» блокга салыныбды',
 'ipb-needreblock' => '$1 алайсызда тыйылыбды. Джарашдырыуланы тюрлендирирге излеймисиз?',
-'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|блок|блокла}}',
+'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|1=блок|блокла}}',
 'ipb_cant_unblock' => 'Халат: Блок ID $1 табылмагъанды.
 Блок къоратылгъан болур.',
 'ipb_blocked_as_range' => 'Халат: $1 IP-адрес ачыкъдан тыйылмагъаны себебли, блокдан чыгъараллыкъ тюлсюз.
@@ -2440,7 +2405,6 @@ $1',
 Тилейбиз, кесигизни интернет-провайдеригиз бла, неда дагъан болгъан къуллукъла бла байланыб, къоркъуусузлукъну бу проблемасын билдиригиз.',
 'sorbsreason' => 'IP-адресигиз, {{SITENAME}} сайтда  хайырланнган DNSBL-де ачыкъ прокси кибик саналады.',
 'sorbs_create_account_reason' => 'IP-адресигиз, translatewiki.net сайтда хайырланнган DNSBL-де ачыкъ прокси кибик саналады. Тергеу джазыу къураяллыкъ тюлсюз.',
-'cant-block-while-blocked' => 'Сиз кесигиз блокда заманда, башха къошулуучуланы блок этеллик тюлсюз.',
 'cant-see-hidden-user' => 'Тыяргъа излеген къошулуучу алайсызда тыйылыбды эмда джашырылыбды. Къошулуучуну джашырыргъа эркинлигигиз болмагъаны себебли, сиз бу блокну не къараяллыкъ, неда тюрлендиреллик тюлсюз.',
 'ipbblocked' => 'Кесигиз блокда болгъаныгъыз себебли, сиз башхаланы блокга салыргъа неда блокларын алыргъа мадарыгъыз джокъду',
 'ipbnounblockself' => 'Сиз кеси кесигизни блокдан алыр мадарыгъыз джокъду',
@@ -2497,7 +2461,6 @@ $1',
 Аллай ситуация болса, сиз бетлени къол бла кёчюрюрге неда къошаргъа керек боллукъсуз.",
 'movearticle' => 'Бетни атын тюрлендир:',
 'moveuserpage-warning' => "'''Эс бёлюгюз.''' Къошлуучуну бетини атын тюрлендирирге башлагъансыз. Къуру бетни аты тюрленникди, къошулуучуну аты тюрленник '''тюйюлдю'''.",
-'movenologin' => 'Системада тюлсюз.',
 'movenologintext' => 'Бетни атын тюрлендирир ючюн регистрациялы эмда [[Special:UserLogin|системада]] болургъа керексиз.',
 'movenotallowed' => 'Бетни атын тюрлендирирге эркинлигигиз джокъду.',
 'movenotallowedfile' => 'Файлланы атларын тюрлендирирге эркинлигигиз джокъду.',
@@ -2513,19 +2476,17 @@ $1',
 'articleexists' => 'Быллай аты бла бет барды неда сиз джазгъан ат джарамайды.
 Башха ат сайлагъыз.',
 'cantmove-titleprotected' => 'Бу бетни атын тюрлендиреллик тюлсюз, джангы ат джараусуз атланы тизмесиндеди.',
-'talkexists' => "'''Бетни аты тюрленнгенди, алай а сюзюу бетни кёчюрюрге джарамайды, аллай аты бла бет болгъаны ючюн. Къол бла къошугъуз аланы бири-бирлерине.'''",
-'movedto' => 'аты тюрленнгенди:',
 'movetalk' => 'Байламлы сюзюу бетни атын тюрлендир',
 'move-subpages' => 'Бет тюблени атларын ($1 бетге дери) тюрлендир',
 'move-talk-subpages' => 'Сюзюу бетни бет тюблерин атларын тюрлендир ($1 бетге дери)',
 'movepage-page-exists' => '$1 статья алайсызда барды эмда автомат халда джангыдан джазылалмаз.',
 'movepage-page-moved' => '$1 бет $2 бетге атын ауушдурду.',
 'movepage-page-unmoved' => '$1 бет $2 бетге атын ауушдуралмаз.',
-'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
+'movepage-max-pages' => 'Эм кёб $1 {{PLURAL:$1|бет}} атын тюрлендирди эм андан асламы автомат халда атын тюрлендирелмез.',
 'movelogpage' => 'Атла тюрлениуню журналы',
 'movelogpagetext' => 'Тюбюнде болгъан тизме аты тюрлендирилген бетлени кёргюзеди.',
-'movesubpage' => '{{PLURAL:$1|Subpage|Бет тюбле}}',
-'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|бет тюбю|бет тюбю}} барды.',
+'movesubpage' => '{{PLURAL:$1|1=Subpage|Бет тюбле}}',
+'movesubpagetext' => 'Бу бетни тюбюнде кёргюзюлген $1 {{PLURAL:$1|1=бет тюбю|бет тюбю}} барды.',
 'movenosubpage' => 'Бу бетни тюб бети джокъду.',
 'movereason' => 'Чурум:',
 'revertmove' => 'ызына къайтыу',
@@ -2618,9 +2579,9 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'import-comment' => 'Эсгериу:',
 'importtext' => 'Бетни къайнакъ викиден [[Special:Export|адырны хайырландырыб]] эскпорт этигиз. Файлны дискде сакълагъыз эм былайгъа джюклегиз.',
 'importstart' => 'Файлла импорт этиле турадыла...',
-'import-revision-count' => '$1 {{PLURAL:$1|версия|версия}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=версия|версия}}',
 'importnopages' => 'Импорт этиллик бет джокъду',
-'imported-log-entries' => 'Журналны {{PLURAL:$1|джазыуу|джазыуу}} импорт этилинди.',
+'imported-log-entries' => 'Журналны {{PLURAL:$1|1=джазыуу|джазыуу}} импорт этилинди.',
 'importfailed' => '$1 импорту джетишимсиз бошалды',
 'importunknownsource' => 'Билинмеген импорт къайнакъ типи',
 'importcantopen' => 'Импорт этилген файл ачылалмады',
@@ -2648,9 +2609,9 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'importlogpage' => 'Импортну журналы',
 'importlogpagetext' => 'Башха викиледен бетлени тюрлендириу тарихин администраторланы импорт этиую.',
 'import-logentry-upload' => '[[$1]] файл джюклениую бла импорт этилди',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|версия|версия}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=версия|версия}}',
 'import-logentry-interwiki' => '$1 трансвикиленди',
-'import-logentry-interwiki-detail' => '$2 бетден  $1 {{PLURAL:$1|весрия|версия}}',
+'import-logentry-interwiki-detail' => '$2 бетден  $1 {{PLURAL:$1|1=весрия|версия}}',
 
 # JavaScriptTest
 'javascripttest' => 'JavaScript тинтилиую',
@@ -2729,14 +2690,14 @@ MediaWiki локализациясына юлюш къошаргъа излей
 'notacceptable' => 'Бу вики-сервер сизни браузеригиз излеген форматда билгиле берелмейди.',
 
 # Attribution
-'anonymous' => 'сайтны аноним {{PLURAL:$1|къошулуучулары|къошулуучулары}}',
+'anonymous' => 'сайтны аноним {{PLURAL:$1|1=къошулуучулары|къошулуучулары}}',
 'siteuser' => '{{SITENAME}} къошулуучу $1',
 'anonuser' => '{{SITENAME}} аноним къошулуучу $1',
 'lastmodifiedatby' => 'Бет эм ахыр $3 джанындан $2, $1 заманда тюрлендирилгенди.',
 'othercontribs' => '$1 джанындан этилген ишге тамалланады.',
 'others' => 'башхала',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
-'anonusers' => '{{SITENAME}} аноним {{PLURAL:$2|къошулуучу|къошулуучула}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=къошулуучу|къошулуучула}} $1',
+'anonusers' => '{{SITENAME}} аноним {{PLURAL:$2|1=къошулуучу|къошулуучула}} $1',
 'creditspage' => 'Бетни кредитлери',
 'nocredits' => 'Бу къошулуучу ючюн кредит билги джокъду.',
 
@@ -2819,23 +2780,23 @@ $1',
 'imagemaxsize' => "Суратны ёлчемини чеги:<br />''(файлны ангылытыу бетле ючюн)''",
 'thumbsize' => 'Гитче ёлчем:',
 'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|бет|бет}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|1=бет|бет}}',
 'file-info' => 'файлны ёлчеми: $1, MIME типи: $2',
 'file-info-size' => '$1 × $2 пиксель, файлны ёлчеми: $3, MIME типи: $4',
 'file-nohires' => 'Мындан ары ачыкъланнган версиясы джокъду',
 'svg-long-desc' => 'SVG файл, шартлы $1 × $2 пиксель, файлны ёлчеми: $3',
-'show-big-image' => 'ТолÑ\83 Ð°Ñ\87Ñ\8bкÑ\8aлаÑ\83',
+'show-big-image' => 'ЧÑ\8bкÑ\8aгÑ\8aан Ñ\84айл',
 'show-big-image-preview' => 'Ал къарауда уллулугъу: $1.',
 'show-big-image-size' => '$1 × $2 пиксель',
 'file-info-gif-looped' => 'тогъайланнганды',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|1=фрейм|фрейм}}',
 'file-info-png-looped' => 'тогъайланнганды',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|кере|кере}} ойнатылды',
-'file-info-png-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|1=кере|кере}} ойнатылды',
+'file-info-png-frames' => '$1 {{PLURAL:$1|1=фрейм|фрейм}}',
 
 # Special:NewFiles
 'newimages' => 'Джангы файлланы галереясы',
-'imagelisttext' => "Тюбюрекде $2 кёре тизилген '''$1''' {{PLURAL:$1|файл|файл}} кёрюнеди.",
+'imagelisttext' => "Тюбюрекде $2 кёре тизилген '''$1''' {{PLURAL:$1|1=файл|файл}} кёрюнеди.",
 'newimages-summary' => 'Бу къуллукъ бет, кёб болмай джюкленнген файлланы кёргюзеди.',
 'newimages-legend' => 'Фильтр',
 'newimages-label' => 'Файлны аты (неда кесеги):',
@@ -2846,10 +2807,10 @@ $1',
 'sp-newimages-showfrom' => '$1, $2 замандан башлаб джангы файлланы кёргюз',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL:$1|$1 секунд|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 сагъат|$1 сагъат}}',
-'days' => '{{PLURAL:$1|$1 кюн|$1 кюн}}',
+'seconds' => '{{PLURAL:$1|1=$1 секунд|$1 секунд}}',
+'minutes' => '{{PLURAL:$1|1=$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 сагъат|$1 сагъат}}',
+'days' => '{{PLURAL:$1|1=$1 кюн|$1 кюн}}',
 'weeks' => '{{PLURAL:$1|ыйыкъ}}',
 'months' => '{{PLURAL:$1|ай}}',
 'years' => '{{PLURAL:$1|джыл}}',
@@ -3202,8 +3163,8 @@ $1',
 'exif-gpslongitude-w' => 'Кюнбатыш узунлукъ',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метрге|метрге}} тенгизден мийик',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метрге|метрге}} тенгизден алаша',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|1=метрге|метрге}} тенгизден мийик',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|1=метрге|метрге}} тенгизден алаша',
 
 'exif-gpsstatus-a' => 'Ёлчелеу бошалмагъанды',
 'exif-gpsstatus-v' => 'Ёлчелеу бошалгъанды',
@@ -3274,15 +3235,10 @@ $1',
 'exif-urgency-high' => 'Мийик ($1)',
 'exif-urgency-other' => 'Къошулуучу салгъан приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Бу файлны тыш программа бла тюрлендиригиз',
-'edit-externally-help' => '(толу информациягъа мында къарагъыз: [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бютеу',
 'namespacesall' => 'бютеу',
 'monthsall' => 'бютеу',
-'limitall' => 'бютеую',
 
 # Email address confirmation
 'confirmemail' => 'Электорн адресни мюкюл эт',
@@ -3303,7 +3259,6 @@ $1',
 'confirmemail_needlogin' => 'Электорн адресигизни мюкюл этер ючюн, алгъы бурун $1 этерге керексиз.',
 'confirmemail_success' => 'Электрон почтагъызны адреси мюкюл этилди. Олтуруу [[Special:UserLogin|ачыб]] Викини татыуун чыгъарыгъыз.',
 'confirmemail_loggedin' => 'Электорн почтагъызны адреси мюкюл этилди.',
-'confirmemail_error' => 'Мюкюл этилиуде билинмеген халат болду.',
 'confirmemail_subject' => '{{SITENAME}} электрон почта адресни мюкюл этилиую',
 'confirmemail_body' => 'Ким эседа, биз сагъышдан, $1 IP адресден,
 {{SITENAME}} сайтда бу электрон адрес бла $2 тергеу джазыу къурады.
@@ -3400,11 +3355,11 @@ $5
 Нормал ал къарауну хайырланыгъыз.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => '$1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмезге боллукъдула.',
-'lag-warn-high' => 'Билги базаны сервериндеги бек кечигиу себебли, $1 {{PLURAL:$1|секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмей къалыргъа болур.',
+'lag-warn-normal' => '$1 {{PLURAL:$1|1=секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмезге боллукъдула.',
+'lag-warn-high' => 'Билги базаны сервериндеги бек кечигиу себебли, $1 {{PLURAL:$1|1=секундан|секундан}} джангы тюрлендириуле бу тизмеде кёрюнмей къалыргъа болур.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Кёзде тургъан тизмеде {{PLURAL:$1|1 джазылгъан|$1 джазылгъан}} барды, сюзюу бетлени тышында.',
+'watchlistedit-numitems' => 'Кёзде тургъан тизмеде {{PLURAL:$1|1=1 джазылгъан|$1 джазылгъан}} барды, сюзюу бетлени тышында.',
 'watchlistedit-noitems' => 'Кёзюгюзде тургъан тизмегизде бир джазылгъан да джокъду.',
 'watchlistedit-normal-title' => 'Чынчыкълау спизокню тюрлендир',
 'watchlistedit-normal-legend' => 'Кёзюгюзде тургъан тизмегизден джазылгъанланы кетериу',
@@ -3412,7 +3367,7 @@ $5
 Джазылгъанланы кетерир ючюн, къатындагъы тёртгюлчюкде белгилеб, «{{int:Watchlistedit-normal-submit}}» тиекден басыгъыз.
 Сиз дагъыда [[Special:EditWatchlist/raw|тизмени текст кибик тюрлендирирге]] боллукъсуз.',
 'watchlistedit-normal-submit' => 'Башлыкъланы кетер',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 джазылгъан|$1 джазылгъан}}, кёзюгюзде тургъан тизмегизден кетерилди:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 джазылгъан|$1 джазылгъан}}, кёзюгюзде тургъан тизмегизден кетерилди:',
 'watchlistedit-raw-title' => 'Кёзде тургъан «чий» тизмени тюрлендир',
 'watchlistedit-raw-legend' => 'Кёзде тургъан «чий» тизмени тюрлендир',
 'watchlistedit-raw-explain' => 'Кёзюгюзде тургъан тизмегиздеги бетле тюбюнде кёрюнедиле. Хар тизгинде бир башлыкъ болады, бетлени къошуб неда кетериб тизмени тюрлендирирге боллукъсуз.
@@ -3421,8 +3376,8 @@ $5
 'watchlistedit-raw-titles' => 'Башлыкъла:',
 'watchlistedit-raw-submit' => 'Кёзде тургъан тизмени сакъла',
 'watchlistedit-raw-done' => 'Кёзюгюзде тургъан тизмегиз сакъланнганды.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} къошулду:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 башлыкъ|$1 башлыкъ}} кетерилди:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1=1 башлыкъ|$1 башлыкъ}} къошулду:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 башлыкъ|$1 башлыкъ}} кетерилди:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Тизмеден бетледе тюрлениуле',
@@ -3489,7 +3444,7 @@ $5
 # Special:Version
 'version' => 'Версия',
 'version-extensions' => 'Салыннган кенгертиуле',
-'version-specialpages' => 'Къуллукъчу бетле',
+'version-specialpages' => 'Къуллукъ бетле',
 'version-parserhooks' => 'Синтаксис анализаторну тутуучула',
 'version-variables' => 'Тюрленнгенле',
 'version-antispam' => 'Антиспам',
@@ -3525,17 +3480,17 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'fileduplicatesearch-submit' => 'Таб',
 'fileduplicatesearch-info' => '$1 × $2 пиксель<br />Файлны ёлчеми: $3<br />MIME-тип: $4',
 'fileduplicatesearch-result-1' => '«$1» файлны келишген дубликаты джокъду',
-'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
+'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1=1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
 'fileduplicatesearch-noresults' => '«$1» деген файл табылмады.',
 
 # Special:SpecialPages
-'specialpages' => 'Къуллукъчу бетле',
+'specialpages' => 'Къуллукъ бетле',
 'specialpages-note' => '* Тюз къуллукъчу бетле.
 * <span class="mw-specialpagerestricted">Кирирге эркинлик чекленнген къуллукъчу бетле.</span>
 * <span class="mw-specialpagecached">Кэш этилген къуллукъчу бетле (эски болургъа боллукъдула).</span>',
 'specialpages-group-maintenance' => 'Техника баджарыуну отчетлары',
 'specialpages-group-other' => 'Башха къуллукъчу бетле',
-'specialpages-group-login' => 'Ð\9aиÑ\80 / Ñ\80егиÑ\81Ñ\82Ñ\80аÑ\86иÑ\8f Ñ\8dÑ\82',
+'specialpages-group-login' => 'СиÑ\81Ñ\82емагÑ\8aа ÐºÐ¸Ñ\80иÑ\83 / Ð\90ккаÑ\83нÑ\82 ÐºÑ\8aÑ\83Ñ\80аÑ\83',
 'specialpages-group-changes' => 'Ахыр тюрлендириуле бла журналла',
 'specialpages-group-media' => 'Медиа-материалланы юсюнден отчетла бла джюклеуле',
 'specialpages-group-users' => 'Къошулуучула эм хакълары',
@@ -3571,11 +3526,10 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 'tags-description-header' => 'Магъананы толу ангылтыуу',
 'tags-hitcount-header' => 'Белгиленнген тюрлендириуле',
 'tags-edit' => 'тюрлендир',
-'tags-hitcount' => '$1 {{PLURAL:$1|тюрлениу|тюрлениу}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|1=тюрлениу|тюрлениу}}',
 
 # Special:ComparePages
 'comparepages' => 'Бетлени тенглешдир',
-'compare-selector' => 'Бет версияланы тенглешдир',
 'compare-page1' => 'Биринчи бет',
 'compare-page2' => 'Экинчи бет',
 'compare-rev1' => 'Биринчи версия',
@@ -3650,13 +3604,13 @@ MediaWiki хайырлы боллукъду деген умут бла джай
 
 # API errors
 'api-error-badtoken' => 'Ич халат: терс токен.',
-'api-error-duplicate-popup-title' => ' {{PLURAL:$1|Файлны|Файлны}} дубликаты',
+'api-error-duplicate-popup-title' => ' {{PLURAL:$1|1=Файлны|Файлны}} дубликаты',
 'api-error-empty-file' => 'Сиз ийген файлны ичи бошду.',
 'api-error-emptypage' => 'Ичи бош болгъан джангы бетле къураргъа болмайды.',
 '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|1=джасакъланнган файл типди|джасакъланнган файл типледиле}}. {{PLURAL:$3|1=Эркинлик берилген файл тип —|Эркинлик берилген файл типле:}} $2.',
 'api-error-filetype-missing' => 'Файлны кенгериую джокъду.',
 'api-error-hookaborted' => 'Сиз теджеген тюрлендириуню кенгертиуню сюзюучю джасакълагъанды.',
 'api-error-illegal-filename' => 'Джарамагъан файл ат.',
index 559b734..7911f3e 100644 (file)
@@ -133,7 +133,7 @@ $messages = array(
 'jumptonavigation' => 'navigeshon',
 'jumptosearch' => 'Luk fo',
 
-# 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).
+# 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).
 'aboutsite' => 'Na bot {{SITENAME}}',
 'aboutpage' => 'Project:Na bot',
 'copyright' => 'Dis kontent de onda $1 .',
@@ -142,7 +142,6 @@ $messages = array(
 'disclaimers' => 'Disklema-dem',
 'disclaimerpage' => 'Project:Jeneral disklema',
 'edithelp' => 'Advais foh we yu wan fo edit',
-'edithelppage' => 'Help:Editin',
 'helppage' => 'Help:Kontent-dem',
 'mainpage' => 'Men Pej',
 'mainpage-description' => 'Men Pej',
@@ -166,7 +165,6 @@ Luk [[Special:Version|version page]].',
 'retrievedfrom' => 'Dem ritriv am na"$1"',
 'youhavenewmessages' => 'Yu get $1 ($2).',
 'editsection' => 'edit',
-'editsection-brackets' => '[$1]',
 'editold' => 'chenj',
 'viewsourceold' => 'Luk di sos',
 'editlink' => 'edit',
@@ -270,7 +268,6 @@ Somtem dem don dilit am.',
 'searchresults' => 'Sach rizolt-dem',
 'prevn' => 'privios wan {{PLURAL:$1|$1}}',
 'nextn' => 'neks wan {{PLURAL:$1|$1}}',
-'searchhelp-url' => 'Help:Kohntehnt-dehm',
 'searchprofile-articles' => 'Kontent pej-dem',
 'searchprofile-everything' => 'Oltin',
 'searchprofile-advanced' => 'Advans',
@@ -279,18 +276,15 @@ Somtem dem don dilit am.',
 'search-result-size' => '$1 ({{PLURAL:$2|1 wod|$2 wod-dem}})',
 'search-suggest' => 'Yu bin min?: $1',
 'searchall' => 'ol',
-'powersearch' => 'Advans sach',
 'powersearch-legend' => 'Advans sach',
 'powersearch-ns' => 'Sach na nemspes-dem:',
 'powersearch-redir' => 'List de sen yu kam ya',
-'powersearch-field' => 'Luk fo',
 'search-external' => 'Ekstanal sach',
 'searchdisabled' => '{{websait-im nem}} Di sach no de wok.
 Na mintem yuz Google fo sach.
 Memba se somtem dem indeks-dem noh op tu det {{SITENAME}}.',
 
 # Preferences page
-'prefsnologin' => 'Yu no login yet',
 'searchresultshead' => 'Sach',
 'youremail' => 'Imel:',
 'username' => 'Yuzanem:',
@@ -412,7 +406,6 @@ Di [[Special:WhatLinksHere/$2|ful list]] de yah.',
 'blocklogpage' => 'Blok log',
 
 # Move page
-'movenologin' => 'Yu no login yet',
 'move-watch' => 'Wach dis pej-ya',
 'movelogpage' => 'Muf log',
 
index 19eea20..263a6a0 100644 (file)
@@ -112,8 +112,6 @@ $messages = array(
 'qbbrowse' => 'Bilid',
 'qbedit' => 'Iislan',
 'qbpageoptions' => 'Dya nga Pahina',
-'qbpageinfo' => 'Konteksto',
-'qbspecialpages' => 'Manga espesyal nga pahina',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -135,7 +133,7 @@ $messages = array(
 'delete' => 'Para',
 'deletethispage' => 'Paraun ang dya nga Pahina',
 'protect' => 'Amlig',
-'protect_change' => 'islan ang proteksyon',
+'protect_change' => 'iislan',
 'protectthispage' => 'Amligan ang dya nga pahina',
 'unprotect' => 'huksun ang proteksyon',
 'unprotectthispage' => 'Huksun ang proteksyon sa dya nga pahina',
@@ -154,13 +152,12 @@ $messages = array(
 'jumpto' => 'Lompat sa:',
 'jumptosearch' => 'sagap',
 
-# 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).
+# 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).
 'aboutsite' => 'Tunggəd sa {{SITENAME}}',
 'aboutpage' => 'Project:Tunggəd',
 'disclaimers' => 'Mga Panginwala',
 'disclaimerpage' => 'Project:Panginwala nga Pangtanan',
 'edithelp' => 'Panoytoy sa Pag-ilis',
-'edithelppage' => 'Help:Pag-ilis',
 'mainpage' => 'Pono nga Pahina',
 'mainpage-description' => 'Pono nga Pahina',
 'privacy' => 'Surundun sa Privacy',
@@ -176,8 +173,6 @@ Lantawa sa [[Special:Version|version kang page]].',
 
 'ok' => 'OK dun',
 'youhavenewmessages' => 'May rudyan kaw nga $1 ($2).',
-'newmessageslink' => 'bag-o nga manga mensahe',
-'newmessagesdifflink' => 'orihi nga ilis',
 'youhavenewmessagesmulti' => 'May rudyan kaw nga manga bag-o nga mensahe sa $1',
 'editsection' => 'iislan',
 'editold' => 'iislan',
@@ -188,7 +183,7 @@ Lantawa sa [[Special:Version|version kang page]].',
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Pahina',
 'nstab-media' => 'Pahina kang Midya',
-'nstab-special' => 'Espesyal',
+'nstab-special' => 'Espesyal nga pahina',
 'nstab-project' => 'Pahina kang Proyekto',
 'nstab-image' => 'Inayap',
 'nstab-mediawiki' => 'Mensahe',
@@ -211,7 +206,7 @@ Lantawa sa [[Special:Version|version kang page]].',
 'viewsource' => 'Turukun ang ginhalinan',
 
 # Login and logout pages
-'remembermypassword' => "Tandaan ang akun nga ''log-in'' sa dya nga ''computer'' (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'remembermypassword' => "Tandaan ang akun nga ''log-in'' sa dya nga ''browser'' (kang maximum nga $1 {{PLURAL:$1|ka adlaw|ka mga adlaw}})",
 'nologinlink' => "Himo ka sangka ''account''",
 'createaccount' => "Himo ka ''account''",
 
@@ -256,7 +251,7 @@ Lantawa sa [[Special:Version|version kang page]].',
 # Special:ListUsers
 'listusers-submit' => 'Ipakita',
 
-# E-mail user
+# Email user
 'emailmessage' => 'Mensahe',
 
 # Delete
@@ -268,7 +263,7 @@ Lantawa sa [[Special:Version|version kang page]].',
 # Undelete
 'undelete-search-submit' => 'Sagap',
 
-'sp-contributions-talk' => 'Wakal',
+'sp-contributions-talk' => 'wakal',
 'sp-contributions-submit' => 'Sagap',
 
 # What links here
@@ -310,13 +305,14 @@ Lantawa sa [[Special:Version|version kang page]].',
 # Special:Version
 'version-specialpages' => 'Manga espesyal nga pahina',
 
-# Special:FilePath
-'filepath-page' => 'Inayap:',
-
 # Special:FileDuplicateSearch
 'fileduplicatesearch-submit' => 'Sagap',
 
 # Special:SpecialPages
 'specialpages' => 'Manga espesyal nga pahina',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'OK dun',
+'expand_templates_preview' => 'Bilid',
+
 );
index cfd3f02..9ce0c75 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Kashmiri (कॉशुर - کٲشُر)
+/** Kashmiri (कॉशुर / کٲشُر)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
  */
 
 $fallback = 'ks-arab';
+
+$messages = array(
+# Dates
+'monday' => 'ژِنٛدٕروار',
+'february' => 'فرؤری',
+'april' => 'اپریٖل',
+'may_long' => 'مٔی',
+'june' => 'جوٗن',
+'august' => 'اَگست',
+'september' => 'سیٚپٹَمبَر',
+'november' => 'نَوَمبَر',
+'december' => 'ڈیٚسَمبَر',
+
+'about' => 'مُتعلِق',
+
+'help' => 'مَدَت',
+'search' => 'ژھارُن',
+'searchbutton' => 'ژھارُن',
+'history_short' => 'توٲریٖخ',
+'talkpagelinktext' => 'بَحَژ',
+'talk' => 'بَحَژ',
+'jumptosearch' => 'ژھارُن',
+
+# 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).
+'aboutsite' => 'مُتعلِق {{SITENAME}}',
+'mainpage' => 'گَرٕ',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'صَفہٕ',
+'nstab-category' => 'زٲژ',
+
+# Edit pages
+'summary' => 'خُلاسہٕ:',
+
+# Recent changes
+'recentchanges' => 'نَوِ تَبَدیٖلیٖ',
+
+# Upload
+'filedesc' => 'خُلاسہٕ',
+
+'sp-contributions-talk' => 'بَحَژ',
+'sp-contributions-submit' => 'ژھارُن',
+
+# Namespace 8 related
+'allmessagesname' => 'ناو',
+
+);
index e41f898..f73c3f2 100644 (file)
@@ -7,7 +7,9 @@
  * @ingroup Language
  * @file
  *
+ * @author Rachitrali
  * @author Rk_kaul (on ks.wikipedia.org)
+ * @author VibhasKS
  */
 
 $rtl = true;
@@ -53,14 +55,19 @@ $separatorTransformTable = array(
 $messages = array(
 # Dates
 'monday' => 'ژِنٛدٕروار',
+'january' => 'جنوری',
 'february' => 'فرؤری',
+'march' => 'مارچ',
 'april' => 'اپریٖل',
 'may_long' => 'مٔی',
 'june' => 'جوٗن',
+'july' => 'جولائی',
 'august' => 'اَگست',
 'september' => 'سیٚپٹَمبَر',
+'october' => 'اکتوبر',
 'november' => 'نَوَمبَر',
 'december' => 'ڈیٚسَمبَر',
+'jan' => 'جنوری',
 
 'about' => 'مُتعلِق',
 
@@ -78,9 +85,10 @@ $messages = array(
 'otherlanguages' => 'باقیَن زَبانَن منٛز',
 'jumptosearch' => 'ژھارُن',
 
-# 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).
+# 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).
 'aboutsite' => 'مُتعلِق {{SITENAME}}',
 'mainpage' => 'گَرٕ',
+'mainpage-description' => 'اہم صَفہٕ',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'صَفہٕ',
index 0ec0de7..0b7a756 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Rk_kaul (on ks.wikipedia.org)
+ * @author VibhasKS
  */
 
 $namespaceNames = array(
@@ -45,6 +46,12 @@ $digitTransformTable = array(
 $messages = array(
 'help' => 'मदद',
 
+# 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).
+'mainpage' => 'आहम सफ़ा',
+
+'editsectionhint' => '$1 शाबह तर तैयब दीउ',
+'red-link-title' => '$1 (सफ़ा ना आसुन)',
+
 # Recent changes
 'recentchanges' => 'नवि तबदीली',
 
index 658bf1c..99b17cc 100644 (file)
@@ -112,7 +112,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Ahl_Atikelle' ),
        'Blankpage'                 => array( 'Leddijje_Sigge' ),
        'Block'                     => array( 'IP-Sperre' ),
-       'Blockme'                   => array( 'Proxy-Sperre' ),
        'Booksources'               => array( 'ISBN', 'Böcher', 'Böösher' ),
        'BrokenRedirects'           => array( 'Ömleitunge_en_et_Leere' ),
        'Categories'                => array( 'Saachjruppe' ),
@@ -123,7 +122,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Aanmelde', 'Medmaacher_wääde', 'Metmaacher_wääde' ),
        'Deadendpages'              => array( 'Sigge_ohne_Links_dren' ),
        'DeletedContributions'      => array( 'Fotjeschmeße' ),
-       'Disambiguations'           => array( 'Wat-es-dat-Sigge', 'Watt_ėßß_datt?' ),
        'DoubleRedirects'           => array( 'Ömleitunge_op_Ömleitunge' ),
        'Emailuser'                 => array( 'Email', 'E-mail' ),
        'Export'                    => array( 'Expocht' ),
@@ -235,7 +233,6 @@ $messages = array(
 'tog-minordefault' => 'Dun all ming Änderunge jedes Mol als klein Mini-Änderunge vürschlage',
 'tog-previewontop' => 'Zeisch de Vör-Aanseesch övver däm Fäld för der Täx enzejävve aan.',
 'tog-previewonfirst' => 'Zeich de Vör-Aansich tirek för et eetste Mol beim Bearbeide aan',
-'tog-nocache' => 'Dun et Sigge Zweschespeichere en Dingem Brauser avschalte',
 'tog-enotifwatchlistpages' => 'Scheck mer en <i lang="en">e-mail</i>, wann en Sigg us minge Oppaßlėß verändert woode es',
 'tog-enotifusertalkpages' => 'Scheck mer en <i lang="en">e-mail</i>, wann ming Klaaf_Sigg jeändert weed',
 'tog-enotifminoredits' => 'Scheck mer och en <i lang="en">e-mail</i> för de klein Mini-Änderonge',
@@ -371,7 +368,6 @@ $messages = array(
 'qbedit' => 'Ändere',
 'qbpageoptions' => 'Sigge Enstellunge',
 'qbmyoptions' => 'Ming Sigge',
-'qbspecialpages' => 'Spezial Sigge',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -442,7 +438,7 @@ $messages = array(
 'viewtalkpage' => 'Klaaf aanluure',
 'otherlanguages' => 'En ander Schprooche',
 'redirectedfrom' => '(Ömjeleit vun $1)',
-'redirectpagesub' => 'Ömleitungssigg',
+'redirectpagesub' => 'Ömleidongssigg',
 'lastmodifiedat' => 'Heh di Sigg es et letz aam $1 öm $2 Uhr jeändert woode.',
 'viewcount' => 'De Sigg es bes jetz {{PLURAL:$1|eimol|$1 Mol|keijmol}} avjerofe woode.',
 'protectedpage' => 'Jeschötzte Sigg',
@@ -590,9 +586,6 @@ Muss De repareere.',
 'perfcachedts' => 'De Daate heenoh kumme usem Zweschespeicher (<i lang="en">cache</i>) un woodte aam $2 öm $3 opjenumme. Se künnte nit janz de allerneuste sin.
 {{PLURAL:$4|Bloß ein Antwoot es|Nit mieh wi $4 Antwoote sind|Kein Antwoot es}} doh ze han.',
 'querypage-no-updates' => "'''Heh die Sigg weed nit mieh op ene neue Stand jebraat.'''",
-'wrong_wfQuery_params' => 'Verkihrte Parameter för: <strong><code>wfQuery()</code></strong><br />
-De Funktion es: „<code>$1</code>“<br />
-De Aanfroch es: „<code>$2</code>“<br />',
 'viewsource' => 'Wikitex aanluure',
 'viewsource-title' => 'Der Wikitäx vun dä Sigg „$1“ belooere.',
 'actionthrottled' => "Dat ka'mer nit esu öff maache",
@@ -634,6 +627,7 @@ Dä Wiki_Köbes dovun hät beim Deeschmaache als Jrond aanjejovve: „$3“',
 'invalidtitle-unknownnamespace' => '„$2“ es ene onjöltijje Tittel för e Appachtemang met dä verkehte Nommer $1.',
 'exception-nologin' => 'Nit enjelogg',
 'exception-nologin-text' => 'Heh di Sigg udder heh dä Opdraach jeiht blooß, wann De heh em Wiki enjelogg bes.',
+'exception-nologin-text-manual' => 'De mööds ald $1, öm heh di Sigg udder di Axjuhn zohjriife ze dörve.',
 
 # Virus scanner
 'virus-badscanner' => "Fääler en de Enstellunge: Dat Projramm ''$1'' fö noh Kompjuterwiere ze söke, dat kenne mer nit.",
@@ -683,6 +677,7 @@ Wann De wells, künnts De Ding [[Special:Preferences|Enschtällonge aanpaße]].'
 'userlogin-resetpassword-link' => 'Paßwoot verjäße?',
 'helplogin-url' => 'Help:Övver et Enlogge',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hölp bem Enlogge]]',
+'userlogin-loggedin' => 'Do bes ald als {{GENDER:$1|Metmaacher|Metmaacherėn|Metmaacher|Metmaacherėn|Metmaacher}} [[User:$1]] enjelogg. Met heh dämm Fommolaa kanns De jäz onger enem andere Nahme enlogge.',
 'userlogin-createanother' => 'Donn ene zohsäzlejje Zohjang aanlääje',
 'createacct-join' => 'Jiv Ding Daate en:',
 'createacct-another-join' => 'Maach de nüüdeje Aanjaabe för dä neue Zohjaang.',
@@ -734,7 +729,7 @@ Udder donn_[[Special:UserLogin/signup|ene neue Metmaacher aanmelde]].',
 'passwordtooshort' => 'En Paßwööter {{PLURAL:$1|moß|möße|moß}} winnichstens {{PLURAL:$1|ei|$1|kei}} Zeiche, {{PLURAL:$1|Zeffer|Zeffere|Zeffere}}, udder Bochstave dren sin.',
 'password-name-match' => 'Ding Poßwoot moß anders wi Dinge Name als ene Metmaacher sin.',
 'password-login-forbidden' => 'Dä Zohjang met däm Metmaacher-Name un däm Paßwoot es verbodde.',
-'mailmypassword' => 'Passwood verjesse?',
+'mailmypassword' => 'Lohß jonn!',
 'passwordremindertitle' => 'Neu Paßwoot för {{GRAMMAR:Dat|{{SITENAME}}}}',
 'passwordremindertext' => 'Jod müjjelich, Do wors et selver,
 vun de IP Adress $1,
@@ -781,8 +776,8 @@ Netz aam hange bes, övver der letzte Daach (24 Stunde) zosamme jenumme ald
 {{PLURAL:$1|eine|$1|keine}} mol enen neuen Metmaacher aanjelaht.
 Mieh sin nit müjjelich. Dröm künne Lück, die jraad die IP-Addräß han,
 för der Momang nit noch mit Metmaacher neu aanmellde.',
-'emailauthenticated' => 'Ding E-Mail Adress wood aam <strong>$2</strong> öm <strong>$3</strong> Uhr bestätich.',
-'emailnotauthenticated' => 'Ding E-Mail Adress es <strong>nit</strong> bestätich. Dröm kann kein E-Mail aan Dich jescheck wääde för:',
+'emailauthenticated' => 'De Adräß för Ding <i lang="en" xml:lang="en">e-mail</i> wood aam $2 öm $3 Uhr beschtähtisch.',
+'emailnotauthenticated' => 'De Adräß för Ding <i lang="en" xml:lang="en">e-mail</i> wood noch nit beschtähtisch. Dröm kann kein E-Mail aan Desch jescheck wääde för:',
 'noemailprefs' => 'Dun en E-Mail Adress endrage, domet dat et all fluppe kann.',
 'emailconfirmlink' => 'Dun Ding <i lang="en">e-mail</i> Adräß beschtääteje lohße',
 'invalidemailaddress' => 'Wat De do als en Adreß för Ding <i lang="en">e-mail</i> aanjejovve häs, süht noh Dress us. En <i lang="en">e-mail</i> Adreß en däm Format, dat jitt et nit. Muss De repareere - oder Do mähs dat Feld leddich un schrievs nix eren. Un dann versök et noch ens.',
@@ -816,7 +811,7 @@ Wann dä aanjejovve es, weet_e jebruch, öm öffentlesch de Schriiver för Beidr
 'user-mail-no-body' => 'En dä <i lang="en">e-mail</i> schteiht nix udder zoh winnisch dren.',
 
 # Change password dialog
-'resetpass' => 'Passwood tuusche udder neu ußjävve',
+'changepassword' => 'Passwood *',
 'resetpass_announce' => 'De beß jez enjelogg med ennem Zweschepasswoot, wat De övver e-mail krääje häs. Dat kanns De nit einfar_esu behallde. Alsu donn jetz e neu Passwoot för op Duur aanjevve.',
 'resetpass_text' => '<!-- Donn der Täx hee dobei -->',
 'resetpass_header' => 'Neu Passwood faßlääje',
@@ -838,7 +833,7 @@ Do häs Der enzwesche e neu Zweschepaßwood jehollt.',
 # Special:PasswordReset
 'passwordreset' => 'Et Paßwoot zeröck säze',
 'passwordreset-text-one' => 'Föll dat Fommolaa uß, öm Ding Paßwoot ze ändere.',
-'passwordreset-text-many' => '{{PLURAL:$1|Föll ei Fäld en däm Fommolaa uß, öm Ding Paßwoot ze ändere.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Föll ei vun dä Fälder en heh däm Fommolaa uß, öm e Zwesche_Paßwoot ze krijje.}}',
 'passwordreset-legend' => 'Et Paßwoot zeröck säze',
 'passwordreset-disabled' => 'Et Paßwoot zeröck ze säze es heh em Wiki afjeschalldt.',
 'passwordreset-emaildisabled' => 'Heh dat Wiki määt nix met <i lang="en">e-mail</i>!',
@@ -1177,6 +1172,7 @@ Do kanns heh di Warnung affschallde, wann de aanjemelldt un enjelogg bes, dann k
 'undo-failure' => 'Dat kunnt mer nit zeröck nämme, dä Afschnedd wood enzwesche ald widder beärbeidt.',
 'undo-norev' => "Do ka'mer nix zeröck nämme. Di Version jidd_et nit, odder se es verstoche odder fottjeschmesse woode.",
 'undo-summary' => 'De Änderung $1 fum [[Special:Contributions/$2|$2]] ([[User talk:$2|Klaaf]]) zeröck jenomme.',
+'undo-summary-username-hidden' => 'Nemm di Väsjohn $1 vun enem verschtoche Metmaacher widder retuur.',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Kann keine Zojang enrichte',
@@ -1257,10 +1253,6 @@ Als ene Wiki_Köbes kanns De de Ungerscheide ävver aankike wann De wells.",
 'revisiondelete' => 'Versione fottschmieße un widder zeröck holle',
 'revdelete-nooldid-title' => 'Kein Version aanjejovve, oddeer en Stuß-Nommer',
 'revdelete-nooldid-text' => 'Do häs kein Version aanjejovve, womet mer dat maache sulle. Odder de Nommer wohr Stuß, verkeeht, et jitt se nit, odder De wellß de neuste Version fott maache.',
-'revdelete-nologtype-title' => 'Do häs kein Zoot vun Logboch aanjejovve.',
-'revdelete-nologtype-text' => 'Do häs kein Zoot vun Enndrääsh em Logboch aanjejovve, woh mer dat met maache sulle.',
-'revdelete-nologid-title' => 'Dat es ene onjöltijje Enndraach em Logboch.',
-'revdelete-nologid-text' => 'Do häs keine Enndraach em Logboch aanjejovve, woh mer dat met maache sulle, udder dä Enndraach jidd_et jaa_nit.',
 'revdelete-no-file' => 'De aanjejovve Dattei jidd_et nit.',
 'revdelete-show-file-confirm' => 'Beß De sescher, dat De de fottjeschmeße Version vun dä Dattei „<nowiki>$1</nowiki>“ vum $2 oö $3 Uhr aanloore wells?',
 'revdelete-show-file-submit' => 'Lohß Jonn!',
@@ -1271,8 +1263,9 @@ Ene Wiki Köbes kann de fottjeschmessene Krom immer noch aanluere un kann en och
 dem Wiki singe Installation dat anders fassjelaht woode es.",
 'revdelete-confirm' => 'Bes esu joot un doon dat beschtääteje, un donn domet ongerschriive, dat De dat donn wells, dat De weiß, wat dobei eruß kütt, un dat De dat och noh de [[{{MediaWiki:Policy-url}}|Rääjelle]] deihß.',
 'revdelete-suppress-text' => "Dat sullt '''blooß''' jedonn wäde för:
-* unjenehmesch persöönlesch Daate
-*: ''Aanschreffte, Tellefoon- un ander Nummere, <span lang=\"en\">e-mail</span> Adräß, uew.''",
+* onjesäzlesche Aanjaabe
+* unjenehmesch persöhnlesch Daate
+*: ''Aanschreffte, Tellefoon- un ander Nummere, <span lang=\"en\" xml:lang=\"en\">e-mail</span> Adräß, uew.''",
 'revdelete-legend' => 'Dä öffentlije Zojang enschränke',
 'revdelete-hide-text' => 'Dä Tex vun dä Version versteiche',
 'revdelete-hide-image' => 'De Enhallt vun däm Beld versteiche',
@@ -1293,8 +1286,6 @@ $1",
 'logdelete-success' => "'''Dä Enndraach em Logboch woot verstoche odder seeschba jemaat.'''",
 'logdelete-failure' => "'''Däm Enndraach em Logboch sing Seeschbaakeit kunnte mer nit ändere:''' $1",
 'revdel-restore' => 'Versteische udder Seeschba maache',
-'revdel-restore-deleted' => 'fottjeschmeße Versione',
-'revdel-restore-visible' => 'seeshtba Versione',
 'pagehist' => 'Älldere Versione',
 'deletedhist' => 'Fottjeschmesse Versione',
 'revdelete-hide-current' => 'Ene Fähler es opjetodde beim Verschteische. De Version vum $1 öm $2 Uhr es de neuste Version, un kann dröm nit verschtoche wääde.',
@@ -1368,12 +1359,8 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 # Search results
 'searchresults' => 'Wat beim Söke eruskom',
 'searchresults-title' => 'Noh „$1“ jesoht.',
-'searchresulttext' => 'Luur en de [[{{MediaWiki:Helppage}}|{{int:help}}]]-Sigge noh, wann de mieh drüvver wesse wells, wie mer {{GRAMMAR:em|{{SITENAME}}}} jet fingk.',
-'searchsubtitle' => 'För Ding Froch noh „[[:$1|$1]]“ — ([[Special:Prefixindex/$1|Sigge, di met „$1“ annfange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Sigge, di Links noh „$1“ han]])',
-'searchsubtitleinvalid' => 'För Ding Froch noh „$1“',
 'toomanymatches' => 'Dat wore zo vill Treffer, beß esu joot, un donn en annder Ußwahl probeere!',
 'titlematches' => 'Zopass Üvverschrefte',
-'notitlematches' => 'Kein zopass Üvverschrefte',
 'textmatches' => 'Sigge met däm Täx',
 'notextmatches' => 'Kein Sigg met däm Tex',
 'prevn' => 'de {{PLURAL:$1|ein|$1|0}} doför zeije',
@@ -1382,10 +1369,8 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'nextn-title' => '{{PLURAL:$1|Et näähßte|De nähßte $1|Kütt nix mieh}}',
 'shown-title' => 'Zeisch {{PLURAL:$1|ein|$1|nix}} pro Sigg',
 'viewprevnext' => 'Bläddere: ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Enschtällonge för et Söhke',
 'searchmenu-exists' => "*Sigg '''[[$1]]'''",
 'searchmenu-new' => "'''Donn de Sigg „[[:$1|$1]]“ hee em Wiki aanlääje'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeich all Sigge, di met däm Tex aanfange]]',
 'searchprofile-articles' => 'Sigge vum Enhalt',
 'searchprofile-project' => 'Hülp- ov Projäk-Sigge',
 'searchprofile-images' => 'Dateie met Medije',
@@ -1406,24 +1391,16 @@ Mieh doh drövver fengk mer em [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'search-interwiki-default' => '$1 hät heh di Träffer jefonge:',
 'search-interwiki-more' => '(mieh)',
 'search-relatedarticle' => 'Ähnlesch',
-'mwsuggest-disable' => 'Donn kein automattische Leß met Sigge beim Tippe em Feld för et Söhke aanzeije.',
 'searcheverything-enable' => 'En alle Appachtemangs söhke',
 'searchrelated' => 'ähnlesch',
 'searchall' => 'all',
 'showingresults' => 'Onge {{PLURAL:$1|weed <strong>eine</strong>|wääde bes <strong>$1</strong>|weed <strong>keine</strong>}} vun de jefonge Endrähsch jezeisch, vun de Nommer <strong>$2</strong> av.',
 'showingresultsnum' => 'Onge {{PLURAL:$3|es ein|sin <strong>$3</strong>|sin <strong>kein</strong>}} vun de jefonge Endrähsch opjeleß, vun de Nommer <strong>$2</strong> av.',
 'showingresultsheader' => "Jefonge un aanjezeisch: {{PLURAL:$5|'''$1''' vun '''$3'''|'''$1''' beß '''$2''' vun '''$3'''|nix}} för '''$4'''",
-'nonefound' => '<strong>Opjepass:</strong>
-Standatmääßesch don mer nur en bestemmpte Appachtemangs söke.
-Donn „<code>all:</code>“ för Ding Wööt saze, wan de en alle Appachtemangs
-söke wells, och Klaafsigge, Schabloone, un esu, udder nemm dä zopaß
-Appachtemangs-Name.',
 'search-nonefound' => 'Mer han nix zopaß jefonge för Ding Aanfrohch.',
-'powersearch' => 'Lohß jonn!',
 'powersearch-legend' => 'Extra Söhke',
 'powersearch-ns' => 'Söök en de Apachtemangs:',
-'powersearch-redir' => 'Ömleidunge aanzeije',
-'powersearch-field' => 'Söhk noh',
+'powersearch-redir' => 'Ömleidonge aanzeije',
 'powersearch-togglelabel' => '&nbsp;',
 'powersearch-toggleall' => 'Övverall Höhksche draan maache',
 'powersearch-togglenone' => 'All Höhksche fott nämme',
@@ -1443,7 +1420,7 @@ dat dänne ehr Daate topaktoell sin,
 'preferences' => 'ming Enstellunge',
 'mypreferences' => 'Enstellunge',
 'prefs-edits' => 'Aanzahl Änderunge am Wiki:',
-'changepassword' => 'Passwood *',
+'prefsnologintext2' => 'Do mööts ald $1, öm Ding Enschtällonge ze verändere.',
 'prefs-skin' => 'Et Ussinn',
 'skin-preview' => 'Vör-Ansich',
 'datedefault' => 'Ejaal - kein Vörliebe',
@@ -1466,13 +1443,11 @@ dat dänne ehr Daate topaktoell sin,
 'prefs-email' => '<i lang="en">e-mail</i>',
 'prefs-rendering' => 'Et Sigge-Aanzeije',
 'saveprefs' => 'Faßhalde',
-'resetprefs' => 'Zeröck setze',
 'restoreprefs' => 'Donn en alle Afschnedde alles op der Schtandatt retuur schtälle',
 'prefs-editing' => 'Beim Bearbeide',
 'rows' => 'Reihe:',
 'columns' => 'Spalte:',
 'searchresultshead' => 'Beim Söhke',
-'resultsperpage' => 'Zeich Treffer pro Sigg:',
 'stub-threshold' => 'Links passend för <a href="#" class="stub">klein Sigge</a> fomateere av esu vill Bytes:',
 'stub-threshold-disabled' => 'Ußjeschalldt',
 'recentchangesdays' => 'Aanzahl Dage en de Liss met de „Neuste Änderunge“ — als Standad:',
@@ -1484,7 +1459,6 @@ dat dänne ehr Daate topaktoell sin,
 'localtime' => 'De Zigg op Dingem Kompjuter:',
 'timezoneuseserverdefault' => 'Nemm däm Server sing Zigg ($1)',
 'timezoneuseoffset' => 'Söns jet, jiff dä Ungerscheid aan',
-'timezoneoffset' => 'Dä Ungerscheid¹ es:',
 'servertime' => 'De Uhrzigg om ẞööver es jetz:',
 'guesstimezone' => 'Vum Brauser övvernämme',
 'timezoneregion-africa' => 'Affrikka',
@@ -1538,6 +1512,7 @@ dat dänne ehr Daate topaktoell sin,
 'prefs-dateformat' => 'Dem Dattum sing Fommaat',
 'prefs-timeoffset' => 'Enshtellunge för de Uhrzigge',
 'prefs-advancedediting' => 'Extra Ußwahle',
+'prefs-editor' => 'Schriiver',
 'prefs-preview' => 'de Vör-Aansesch',
 'prefs-advancedrc' => 'Extra Ußwahle',
 'prefs-advancedrendering' => 'Extra Ußwahle',
@@ -1547,6 +1522,7 @@ dat dänne ehr Daate topaktoell sin,
 'prefs-displaysearchoptions' => 'Enstellunge för et Aanzeje',
 'prefs-displaywatchlist' => 'Enstellunge för et Aanzeje',
 'prefs-diffs' => 'Ongerscheide un Verjliische',
+'prefs-help-prefershttps' => 'Di Enschtällong kütt eets zom drahre, wann De nähksde Mohl enloggs.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'De Addräß fö de <i lang="en">e-mail</i> schingk en Odenung',
@@ -1611,7 +1587,7 @@ dat dänne ehr Daate topaktoell sin,
 'right-move-subpages' => 'Sigge, un ier Ungersigge, zosamme ömnenne',
 'right-move-rootuserpages' => '(Houp)-Metmaacher-Sigg Ömnänne',
 'right-movefile' => 'Dateie ömnenne',
-'right-suppressredirect' => 'Kein automatesche Ömleidung aanlääje beim Ömnenne',
+'right-suppressredirect' => 'Kein automatesche Ömleidong aanlääje beim Ömnenne',
 'right-upload' => 'Dateie huhlade',
 'right-reupload' => 'En Datei ußtuusche, di ussem Wiki kütt',
 'right-reupload-own' => 'En selvs huhjelade Datei ußtuusche',
@@ -1641,6 +1617,7 @@ dat dänne ehr Daate topaktoell sin,
 'right-unblockself' => 'Retuur nämme, wam_mer sellver jesperrt woode es',
 'right-protect' => 'Sigge schöze, jeschözde Sigge änndere, un der iere Schoz widder ophevve',
 'right-editprotected' => 'Sigge ändere, di met „{{int:protect-level-sysop}}“ jezöz sin',
+'right-editsemiprotected' => 'Sigge met däm Schoz „{{int:protect-level-autoconfirmed}}“ ändere',
 'right-editinterface' => 'Sigge met de Texte ändere, die et Wiki kallt',
 'right-editusercssjs' => 'Anderlücks CSS- un JS-Dateie ändere',
 'right-editusercss' => 'Anderlücks CSS-Dateie ändere',
@@ -1648,6 +1625,9 @@ dat dänne ehr Daate topaktoell sin,
 'right-editmyusercss' => 'De eije <i lang="en" xml:lang="en">CSS</i> Datteije aanlääje un ändere',
 'right-editmyuserjs' => 'Eije JaavaSkrepp-Datteije aanlääje un ändere',
 'right-viewmywatchlist' => 'De eije Oppaßleß beloore',
+'right-editmywatchlist' => 'De eije Oppaßleß ändere. Opjepaß: e paa axjuhne donn Sigge en di Liss-eren, och der ohne dat Rääsch.',
+'right-viewmyprivateinfo' => 'ding eije päsöhnlesche Dahte belohre, wi de Adräß för de <i lang="en" xml:lang="en">e-mail</i> udder Dinge ääschte Nahme',
+'right-editmyprivateinfo' => 'ding eije päsöhnlesche Dahte ändere, wi de Adräß för de <i lang="en" xml:lang="en">e-mail</i> udder der ääschte Nahme',
 'right-editmyoptions' => 'De eije Enschtällonge ändere',
 'right-rollback' => 'All de letzte Änderunge fom letzte Metmaacher aan ene Sigg retur maache',
 'right-markbotedits' => 'Retur jemaate Änderonge als Bot-Änderung makeere',
@@ -1728,13 +1708,15 @@ dat dänne ehr Daate topaktoell sin,
 'recentchanges-label-minor' => 'Heh dat es en Mini-Änderung',
 'recentchanges-label-bot' => 'Di Änderung es fun enem Bot jemaat woode',
 'recentchanges-label-unpatrolled' => 'Heh di Änderung es noch nit nohjeloort',
-'recentchanges-legend-newpage' => '$1 - neu Sigg',
-'rcnote' => '{{PLURAL:$1|Heh es de letzte Änderung us|Heh sin de letzte <strong>$1</strong> Änderunge us|Et jit <strong>kei</strong> Änderunge en}} {{PLURAL:$2|däm letzte Daach|de letzte <strong>$2</strong> Dääsch|dä Zick}} vum <strong>$4</strong> aff <strong>$5</strong> Uhr beß jetz.',
+'recentchanges-label-plusminus' => 'Der Ömvang vun dä Sigg hät sesch öm di Aanzahl Bytes verändert.',
+'recentchanges-legend-heading' => "'''Lejänd:'''",
+'recentchanges-legend-newpage' => '(Loor och noh de [[Special:NewPages|Leß met de neue Sigge]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => 'Hee {{PLURAL:$1|es ein|sin bes op <strong>$1</strong>|es keine}} fun de Änderunge zick dem <strong>$3</strong> öm <strong>$4</strong> Uhr opjelėß.',
 'rclistfrom' => 'Zeich de Änderunge vum $1 aan',
 'rcshowhideminor' => '$1 klein Mini-Änderunge',
 'rcshowhidebots' => '$1 de Bots ehr Änderunge',
-'rcshowhideliu' => '$1 de aanjemeldte Metmaacher ehr Änderunge',
+'rcshowhideliu' => 'De aanjemeldte Metmaacher ehr Änderunge: $1',
 'rcshowhideanons' => '$1 de namenlose Metmaacher ehr Änderunge',
 'rcshowhidepatr' => '$1 de nohjeluurte Änderunge',
 'rcshowhidemine' => '$1 ming eije Änderunge',
@@ -2160,12 +2142,14 @@ wääde, un luur Der der iehr ander Links aan!',
 
 # Random page in category
 'randomincategory' => 'En zohfälleje Sigg us ener Saachjropp',
+'randomincategory-invalidcategory' => '„$1“ es keine jölteje Nahme för en Saachjropp.',
 'randomincategory-nopages' => 'et sinn er kein Sigge en dä Saachjropp [[:Category:$1|$1]] dren.',
+'randomincategory-selectcategory' => 'Holl en zohfälleje Sigg us dä Saachjropp: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Lohß Jonn!',
 
 # Random redirect
 'randomredirect' => 'Zofällije Ömleitung',
-'randomredirect-nopages' => 'En däm Appachtemang „$1“ sin ja kein Ömleidunge dren.',
+'randomredirect-nopages' => 'En däm Appachtemang „$1“ sin ja kein Ömleidonge dren.',
 
 # Statistics
 'statistics' => 'Schtatistike',
@@ -2201,8 +2185,8 @@ zweite Ömleitung hin jeiht. För jewöhnlich es dat dann och de richtije Sigg,
 <del>Ußjeshtreshe</del> Reije sin ald äleedesh.
 Met däm „(Ändere)“-Link kanns De de eetste Sigg tirek aanpacke.
 Tipp: Merk Der dä Tittel vun dä Sigg dovör.',
-'double-redirect-fixed-move' => 'dubbel Ömleidung nohm Ömnenne automattesch opjelös: [[$1]] → [[$2]]',
-'double-redirect-fixed-maintenance' => 'De dubbelte Ömleidung vun [[$1]] noh [[$2]] wood opjelühß.',
+'double-redirect-fixed-move' => 'dubbel Ömleidong nohm Ömnenne automattesch opjelös: [[$1]] → [[$2]]',
+'double-redirect-fixed-maintenance' => 'De dubbelte Ömleidong vun [[$1]] noh [[$2]] wood opjelühß.',
 'double-redirect-fixer' => '(Opjaveleß)',
 
 'brokenredirects' => 'Ömleitunge, die en et Leere jonn',
@@ -2265,14 +2249,14 @@ Di sin dann <del>dorschjeschtresche</del>.',
 'protectedpages' => 'Jeschötzte Sigge',
 'protectedpages-indef' => 'Nor de Sigge zeije, woh alleins de Wiki-Köbesse draan dörrve',
 'protectedpages-cascade' => 'Nur Sigge en ener Schotz-Kaskad',
-'protectedpagestext' => '<!-- -->',
+'protectedpages-noredirect' => 'Ömleidonge verschteische',
 'protectedpagesempty' => 'Op di Aat sin jrad kein Sigge jeschötz.',
 'protectedtitles' => 'Verbodde Titele för Sigge',
-'protectedtitlestext' => 'Sigge met hee dä Tittele lohße mer nit zo, un di künne dröm nit aanjelääsch wäde:',
 'protectedtitlesempty' => 'Op di Aat sin jrad kein Sigge jäje et neu Aanlääje jeschötz.',
 'listusers' => 'De Metmaacherleß',
 'listusers-editsonly' => 'Donn nor Metmaacher zeije, di och ens jät jeschrevve han.',
 'listusers-creationsort' => 'Noh em Dattum vum Aanmellde zoteere',
+'listusers-desc' => 'Vun onge noch bove zoteere',
 'usereditcount' => '{{PLURAL:$1|Ein Änderung|$1 Änderunge|Nix jedonn}}',
 'usercreated' => '{{GENDER:$3|}}Aanjemelldt aam $1 öm $2 Uhr',
 'newpages' => 'Neu Sigge',
@@ -2334,15 +2318,12 @@ Bei de Name moß mer op Jruß- un Kleinschreff aachjävve.",
 'allpagesto' => 'Sigge aanzeije bes:',
 'allarticles' => 'All Atikkele',
 'allinnamespace' => 'All Sigge (Em Appachtemeng „$1“)',
-'allnotinnamespace' => 'All Sigge (usser em Appachtemeng „$1“)',
-'allpagesprev' => 'Zeröck',
-'allpagesnext' => 'Nächste',
 'allpagessubmit' => 'Lohß Jonn!',
 'allpagesprefix' => 'Sigge zeije, wo dä Name aanfängk met:',
 'allpagesbadtitle' => 'Dä Siggename es nit ze jebruche. Dä hät e Köözel för en Sproch oder för ne Interwiki Link am Aanfang, oder et kütt e Zeiche dren för, wat en Siggename nit jeiht, villeich och mieh wie
 eins vun all däm op eimol.',
 'allpages-bad-ns' => "Dat Appachtemeng „$1“ ha'mer nit.",
-'allpages-hide-redirects' => 'Ömleidunge fott lohße',
+'allpages-hide-redirects' => 'Ömleidonge fott lohße',
 
 # SpecialCachedPage
 'cachedspecial-viewing-cached-ttl' => 'Dat heh küdd ussem Zewescheschpeischer un kann bes op $1 alt sin.',
@@ -2678,7 +2659,6 @@ Versione för die neu Sigg enjerich. Die neu Sigg weed nit ersetz.',
 'undeletebtn' => 'Zeröckholle!',
 'undeletelink' => 'aanloore odder widder zeröckholle',
 'undeleteviewlink' => 'aanloore',
-'undeletereset' => 'De Felder usleere',
 'undeleteinvert' => 'De Ußwahl ömdrije',
 'undeletecomment' => 'Jrond (för en et Logboch):',
 'undeletedrevisions' => '{{PLURAL:$1|ein Version|$1 Versione}} zeröckjehollt',
@@ -2750,13 +2730,13 @@ De neuste Sperr ier Enndraach em Logbooch es:',
 'linkshere' => 'Dat sin de Sigge, die op <strong>„[[:$1]]“</strong> linke dun:',
 'nolinkshere' => 'Kein Sigg link noh <strong>„[[:$1]]“</strong>.',
 'nolinkshere-ns' => 'Nix link op <strong>„[[:$1]]“</strong> en dämm Appachtemang.',
-'isredirect' => 'Ömleidungssigg',
+'isredirect' => 'Ömleidongssigg',
 'istemplate' => 'weed enjeföch',
 'isimage' => 'weed aanjezeisch',
 'whatlinkshere-prev' => 'de vörijje {{PLURAL:$1||$1|noll}} zeije',
 'whatlinkshere-next' => 'de nächste {{PLURAL:$1||$1|noll}} zeije',
 'whatlinkshere-links' => '← Links',
-'whatlinkshere-hideredirs' => '$1 de Ömleidunge',
+'whatlinkshere-hideredirs' => '$1 de Ömleidonge',
 'whatlinkshere-hidetrans' => '$1 de Oproofe',
 'whatlinkshere-hidelinks' => '$1 de nommale Links',
 'whatlinkshere-hideimages' => '$1 de Links op Dateie',
@@ -2767,7 +2747,6 @@ De neuste Sperr ier Enndraach em Logbooch es:',
 'block' => 'Metmaacher udder en <i lang="en">IP</i>-Addräß sperre',
 'unblock' => 'Don en Sperr för ene Metmaacher udder en <i lang="en">IP</i>-Addräß ophävve',
 'blockip' => 'Metmaacher sperre',
-'blockip-title' => 'Metmaacher Schpärre',
 'blockip-legend' => 'Metmaacher ov IP-Adresse Sperre',
 'blockiptext' => 'Hee kanns De bestemmte Metmaacher oder IP-Adresse sperre, su dat se hee em Wiki nit mieh schrieve und Sigge ändere künne.
 Dat sollt nor jedon wääde om sujenannte Vandaale ze bremse. Un mer müsse uns dobei natörlich aan uns [[{{MediaWiki:Policy-url}}|Rejelle]] för esu en Fäll halde.
@@ -2775,7 +2754,6 @@ Drag bei „Aanlass“ ene möchlichs jenaue Jrund en, wöröm dat Sperre passee
 'ipadressorusername' => '<i lang="en">IP</i>-Adress oder Metmaacher Name:',
 'ipbexpiry' => 'Duur, för wie lang',
 'ipbreason' => 'Aanlass:',
-'ipbreasonotherlist' => 'Ne andere Bejründung',
 'ipbreason-dropdown' => '* Alljemein Jrönd för et Sperre
 ** hät fekeehte Behouptunge udder Leeje en Atikele jeschrevve
 ** hät Sigge fottjeschmesse udder leddig jemaat
@@ -2794,8 +2772,6 @@ Drag bei „Aanlass“ ene möchlichs jenaue Jrund en, wöröm dat Sperre passee
 'ipbsubmit' => 'Dun dä Metmaacher sperre',
 'ipbother' => 'För en ander Duur:',
 'ipboptions' => '2 Stund:2 hours,1 Dach:1 day,3 Däch:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Mond:1 month,3 Mond:3 months,6 Mond:6 months,1 Johr:1 year,Unbejrenz:infinite',
-'ipbotheroption' => 'Söns wie lang',
-'ipbotherreason' => 'Ander Jrund oder Zosätzlich:',
 'ipbhidename' => 'Don däm Metmaacher singe Name versteiche, en de Leste un däm sing Änderunge.',
 'ipbwatchuser' => 'Op däm Metmaacher sing Metmaachersigg un Klaafsigg oppasse',
 'ipb-disableusertalk' => 'Dä Metmaacher darf sing Klaafsigg nit ändere, esulang, wi hä jwesperrt es',
@@ -2889,7 +2865,6 @@ un verzäll dänne vun däm ärrje Risiko för de Secherheit fun dänne ehr Rä
 'sorbsreason' => 'Ding IP-Adress weed en de DNSbl als ene offe Proxy jeliss. Schwaad met Dingem System-Minsch oder Netzwerk-Techniker (ISP Internet Service Provider) drüvver, un verzäll dänne vun däm Risiko för ehr Secherheit!',
 'sorbs_create_account_reason' => 'Ding IP-Adress weed en de DNSbl als ene offe Proxy jeliss. Dröm kanns De Dich heh em Wiki nit als ene neue Metmaacher aanmelde. Schwaad met Dingem System-Minsch oder Netzwerk-Techniker oder (ISP Internet Service Provider) drüvver, un verzäll dänne vun däm Risiko för ehr Secherheit!',
 'xffblockreason' => 'En <i lang="en">IP-</i>Adräs en ener <code lang="en">X-Forwarded-For</i> Koppreih es jeschpächt: Et künnt de Dinge udder enem <i lang="en">proxy server</i> zweschedren sing Adräß sin. Der Jrond för et Schpärre woh orschprönglesch: $1',
-'cant-block-while-blocked' => 'Do kanns ander Metmaacher nit sperre, esu lang wi De sellver jesperrt bes.',
 'cant-see-hidden-user' => 'Dä Metmaacher, dä De shperre wells, es al jeshperrt un verschtoche. Weil De nit dat Rääsch häs. Metmaacher ze vershteiche (<code>hideuser</code>), kanns De däm sing Sperr och nit ändere.',
 'ipbblocked' => 'Do kanns kein ander Metmaachere sperrre, weil De sellver jesperrt bes',
 'ipbnounblockself' => 'Do kanns nit sellver ophävve, dat De jesperrt bes',
@@ -2933,19 +2908,19 @@ Wat beim Ömnenne erus kütt, künnt en opfällije un villeisch stüürende Änd
 Alsu bes secher, dat De verschteihs, wat De heh am maache bes, ih dat De et mähs!",
 'movepagetext-noredirectfixer' => "Heh kanns De en Sigg ömnenne.
 Domet kritt die Sigg ene neue Name, un all vörherije Versione vun dä Sigg och.
-Unger däm ahle Tittel weed automatisch en Ömleitung op dä neue Tittel enjedrage.
+Onger däm ahle Tittel weed automatisch en Ömleidong op dä neue Tittel enjedrare.
 
-Links op dä ahle Tittel blieve ävver, wie se wore.
-Dat heiß, Do muss selver nohluure, ov do jetz [[Special:DoubleRedirects|dubbelde]] oder [[Special:BrokenRedirects|kapodde Ömleidunge]] bei eruskumme.
-Wann De en Sigg ömnenne deis, häs Do och doför ze sorje, dat de betroffe Links do henjonn, wo se hen jonn solle.
-Alsu holl Der de Liss „Wat noh heh link“ fun dä Sigg heh un jangk se durch!
+Lenks op dä ahle Tittel bliive ävver, wie se wohre.
+Dat heiß, Do moß selver nohloore, ov doh jetz [[Special:DoubleRedirects|dubbelde]] oder [[Special:BrokenRedirects|kapodde Ömleidonge]] bei eruskumme.
+Wann De en Sigg ömnenne deiß, häs Do och doför ze sorje, dat de betroffe Links doh henjonn, wo se hen jonn solle.
+Alsu holl Der di Liss „Wat noh heh link“ fun dä Sigg heh un jangk se dorsch!
 
-De Sigg weed '''nit''' ömjenannt, wann et met däm neue Tittel ald en Sigg jitt, '''ußer''' do es nix drop, oder et es en Ömleitung un se es noch nie jeändert woode.
-Esu kam_mer en Sigg jlich widder retuur ömnenne, wam_mer sich mem Ömnenne verdonn hät, un mer kann och kein Sigge kapottmaache, wo ald jet drop steiht.
+Di Sigg weed '''nit''' ömjenannt, wann et met däm neue Tittel ald en Sigg jitt, '''ußer''' doh es nix drop, oder et es en Ömleidong un se es noch nie jeändert woode.
+Esu kam_mer en Sigg jlich widder retuur ömnänne, wam_mer sich mem Ömnänne verdonn hät, un mer kann och kein Sigge kapottmaache, wo ald jet drop schteiht.
 
-'''Oppjepass!'''
-Wat beim Ömnenne erus kütt, künnt en opfällije un villeich stürende Änderung aam Wiki sin, besönders bei öff jebruchte Sigge.
-Alsu bes secher, dat De versteihs, wat De heh am maache bes, ih dat De et mähs!",
+'''Oppjepaß!'''
+Wat beim Ömnänne erus kütt, künnt en opfällije un villeich stührende Änderung aam Wikki sin, besönders bei öff jebruchte Sigge.
+Alsu bes secher, dat De verschteihs, wat De heh am maache bes, ih dat De et mähs!",
 'movepagetalktext' => "Dä Sigg ehr Klaafsigg, wann se ein hät, weed automatisch met  ömjenannt, '''usser''' wann:
 * de Sigg en en ander Appachtemeng kütt,
 * en Klaafsigg met däm neue Name ald do es, un et steiht och jet drop,
@@ -2953,7 +2928,6 @@ Alsu bes secher, dat De versteihs, wat De heh am maache bes, ih dat De et mähs!
 En dänne Fäll, muss De Der dä Enhald vun dä Klaafsigge selvs vörnemme, un eröm kopeere watte bruchs.",
 'movearticle' => 'Sigg zem Ömnenne:',
 'moveuserpage-warning' => "'''Opjepaß:''' Do wells en Metmaachersigg ömnänne, domet weed ävver dä Metmaacher sellver ''nit'' met ömjenannt.",
-'movenologin' => 'Nit enjelogg',
 'movenologintext' => 'Do mööts ald aanjemeldt un [[Special:UserLogin|enjelogg]] sin, öm en Sigg ömzenenne.',
 'movenotallowed' => 'Do kriss nit erlaub, en däm Wiki heh de Sigge ömzenenne.',
 'movenotallowedfile' => 'Do häs nit dat Rääsch, Dateie ömzenenne.',
@@ -2964,12 +2938,10 @@ En dänne Fäll, muss De Der dä Enhald vun dä Klaafsigge selvs vörnemme, un e
 'movepagebtn' => 'Ömnenne',
 'pagemovedsub' => 'Dat Ömnenne hät jeflupp',
 'movepage-moved' => "'''De Sigg „$1“ es jez en „$2“ ömjenannt.'''",
-'movepage-moved-redirect' => 'En Ömleidung es aanjelaat woode.',
-'movepage-moved-noredirect' => 'Kein Ömleidung woodt aanjelaat.',
+'movepage-moved-redirect' => 'En Ömleidong es aanjelaat woode.',
+'movepage-moved-noredirect' => 'Kein Ömleidong woodt aanjelaat.',
 'articleexists' => "De Sigg met däm Name jitt et ald, oder dä Name ka'mer oder darf mer nit bruche.<br />Do muss Der ene andere Name ussöke.",
 'cantmove-titleprotected' => 'Die Sigg ömzenänne es esu nit möjjelesch, dänn dä neu Name vun dä Sigg es jäje et Neu-Aanlääje jeschötz.',
-'talkexists' => '<strong>Opjepass:</strong> De Sigg selver woodt jetz ömjenannt, ävver dä ehr Klaafsigg kunnte mer nit met ömnenne. Et jitt ald ein met däm neue Name. Bes esu jod un dun die zwei vun Hand zosamme läje!',
-'movedto' => 'ömjenannt en',
 'movetalk' => 'dä ehr Klaafsigg met ömnenne, wat et jeiht',
 'move-subpages' => 'Don de Ongersigge met_ömnënne, wann_er do sin.
 {{PLURAL:$1|Bloß ein Sigg weed|Beß $1 Sigge weede|Kei einzel Sigg weed}} ömjenannt.',
@@ -3002,8 +2974,8 @@ Di Sigg „[[:$1]]“ jitt et ald. Wollts De se fottschmieße, öm heh di Sigg 
 'nonfile-cannot-move-to-file' => 'Mer kann nix uußer Datteije esu ömnänne, dat et em Appachtemang „{{ns:file}}“ landt',
 'imagetypemismatch' => 'De neu Datei-Endong moß met däm Datei-Tüp zesamme passe',
 'imageinvalidfilename' => 'Dä Ziel-Name för de Datei es verkeht',
-'fix-double-redirects' => 'Don noh em Ömnenne de Ömleidunge automattesch ändere, di noch op dä ahle Tittel zeije, also de neu entshtande dubbelte Ömleidunge oplöse.',
-'move-leave-redirect' => 'Donn en Ömleidung doför ennreschte',
+'fix-double-redirects' => 'Don noh em Ömnenne de Ömleidonge automattesch ändere, di noch op dä ahle Tittel zeije, also de neu entshtande dubbelte Ömleidonge oplöse.',
+'move-leave-redirect' => 'Donn en Ömleidong doför ennreschte',
 'protectedpagemovewarning' => "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß de Wiki-Kööbeße se ömnänne künne.
 Heh kütt der neuste Enndrach em Logbooch doh drövver:",
 'semiprotectedpagemovewarning' => "'''Opjepaß:''' Heh di Sigg es jespert su dat blooß aanjemeldte Metmaacher se ömnänne künne.
@@ -3257,7 +3229,7 @@ Esu kam_mer noch en Aanmärkong en „{{int:summary}}“ maache.',
 'spam_reverting' => 'De letzte Version ohne de Links op „$1“ widder zerröckjehollt.',
 'spam_blanking' => 'All die Versione hatte Links op „$1“, die sin jetz erus jemaht.',
 'spam_deleting' => 'All di Versione met Lenks op „$1“ wääde fott jeschmeße',
-'simpleantispam-label' => 'SPAMschotz — donn hee nix endraare!',
+'simpleantispam-label' => 'Donn heh nix endraare!',
 
 # Info page
 'pageinfo-title' => 'Övver di Sigg: „$1“',
@@ -3357,7 +3329,7 @@ $1',
 'svg-long-desc' => 'SVG-Datei, de Basis es {{PLURAL:$1|ei Pixel|$1 Pixelle|kei Pixel}} breed × {{PLURAL:$2|ei Pixel|$2 Pixelle|kei Pixel}} huh, dä Dateiömfang es $3',
 'svg-long-desc-animated' => 'SVG-Datei met Bewääjong, de Basis es {{PLURAL:$1|ei Pixel|$1 Pixelle|kei Pixel}} breed × {{PLURAL:$2|ei Pixel|$2 Pixelle|kei Pixel}} huh, dä Dateiömfang es $3',
 'svg-long-error' => 'En kapodde <i lang="en">SVG</i>-Dattei: $1',
-'show-big-image' => 'Jröößer Oplöösung',
+'show-big-image' => 'Ojinaal-Dattei',
 'show-big-image-preview' => 'Heh di Vör_Aanseesch es $1 jruuß.',
 'show-big-image-other' => '{{PLURAL:$2|Ander Oplühsung|Ander Oplühsunge|kein ander Oplühsunge}}: $1.',
 'show-big-image-size' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh',
@@ -3842,15 +3814,10 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
 'exif-urgency-high' => 'Huh ($1)',
 'exif-urgency-other' => 'Selfs faßjelaat ($1)',
 
-# External editor support
-'edit-externally' => 'Dun de Datei met enem externe Projramm bei Dr om Rechner bearbeide',
-'edit-externally-help' => '(Luur en de [https://www.mediawiki.org/wiki/Manual:External_editors Aanleidong för de Enschtallazjuhn] noh mieh Henwiese)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'all',
 'namespacesall' => 'all',
 'monthsall' => 'all',
-'limitall' => 'alle',
 
 # Email address confirmation
 'confirmemail' => 'E-Mail Adress bestätije',
@@ -3868,7 +3835,6 @@ Dä E-Mail-ẞööver hät jesaat: ''$1''",
 'confirmemail_success' => 'Ding E-Mail Adress es jetz bestätich.
 Jetz künns De och noch enlogge. Vill Spass!',
 'confirmemail_loggedin' => 'Ding Addräß fö de <i lang="en">e-mail</i> es jäz beschtäätesch!',
-'confirmemail_error' => 'Beim E-Mail Adress Bestätije es jet donevve jejange, de Bestätijung kunnt nit avjespeichert wääde.',
 'confirmemail_subject' => 'Dun Ding e-mail Adress för {{GRAMMAR:Akkusativ|{{SITENAME}}}} bestäteje.',
 'confirmemail_body' => 'Künnt jod sin, Do wors et selver, vun de IP_Adress $1 hät sich
 jedenfalls einer jemeldt, un well dä Metmaacher "$2" {{GRAMMAR:vun|{{SITENAME}}}}
@@ -3971,6 +3937,11 @@ Wells Do jetz met en neu Version die Sigg widder neu aanläje?',
 'imgmultigo' => 'Lohß Jonn!',
 'imgmultigoto' => 'Jang noh de Sigg „$1“',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(Schtandatt_Schprohch)',
+'img-lang-info' => 'Zeisch heh dat Beld aan en $1. $2',
+'img-lang-go' => 'Lohß Jonn!',
+
 # Table pager
 'ascending_abbrev' => 'opwääts zoteet',
 'descending_abbrev' => 'raffkaz zoteet',
@@ -4095,7 +4066,14 @@ Dä Shtanndat-Zoot-Schlößel „$1“ övverschriif dä älldere Zoot-Schlöße
 'version-hook-name' => 'De Schnettstelle ier Name',
 'version-hook-subscribedby' => 'Opjeroofe vun',
 'version-version' => '(Väsjohn $1)',
-'version-license' => 'Lėzänz',
+'version-license' => 'MediaWiki sing Lėzänz',
+'version-ext-license' => '‎Lėzänz',
+'version-ext-colheader-name' => 'Zohsazprojramm',
+'version-ext-colheader-version' => 'Väsjohn',
+'version-ext-colheader-license' => 'Lėzänz',
+'version-ext-colheader-description' => 'Beschrevve',
+'version-ext-colheader-credits' => 'Schriiver',
+'version-license-title' => '‎Lėzänz för $1',
 'version-poweredby-credits' => "Dat Wiki heh löp met '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
 'version-poweredby-others' => 'sönß wää',
 'version-poweredby-translators' => 'de Övversäzer em translatewiki.net',
@@ -4115,7 +4093,7 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Der Pad noh de Skrepte]',
 
 # Special:Redirect
-'redirect' => 'Ömleite op en Dattei, ene Metmaacher udder de Väsjohn vun ener Sigg',
+'redirect' => 'Ömleide op en Dattei, ene Metmaacher udder de Väsjohn vun ener Sigg',
 'redirect-legend' => 'Ömleide ob_en Dattei udder Sigg',
 'redirect-summary' => 'Heh di {{int:specialpage}} leidt öm ob_en Dattei — doh mößd_Er ene Nahme aanjävve — udder en Sigg — doh mößd_Er en Kännong för en Väsjoh aanjävve — udder en Metmaachersigg — doh mößd_Er enem Metmaacher sing Kännong aanjävve.',
 'redirect-submit' => 'Lohß Jonn!',
@@ -4139,6 +4117,7 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
 
 # Special:SpecialPages
 'specialpages' => '{{int:nstab-special}}e',
+'specialpages-note-top' => 'Lejänd',
 'specialpages-note' => '* {{int:nstab-special}}e för jede Metmaacher.
 * <span class="mw-specialpagerestricted">{{int:nstab-special}}e för Metmaacher met besönder Räächde.</span>
 * <span class="mw-specialpagecached">Em Zwescheshpeisher jehallde {{int:nstab-special}}e. Di künnte ovverhollt sind.</span>',
@@ -4179,13 +4158,15 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
 'tags-tag' => 'Dä Makeerung iere Name',
 'tags-display-header' => 'Kennzeiche en de Leßte met Änderunge',
 'tags-description-header' => 'Bedüggtening',
+'tags-active-header' => 'Aktiiv?',
 'tags-hitcount-header' => 'Makeete Änderunge',
+'tags-active-yes' => 'Joh',
+'tags-active-no' => 'Näh',
 'tags-edit' => 'ändere',
 'tags-hitcount' => '{{PLURAL:$1|Ein Änderong|$1 Änderonge|Kein Änderonge}}',
 
 # Special:ComparePages
 'comparepages' => 'Sigge verjliesche',
-'compare-selector' => 'Versione vun Sigge verjlieshe',
 'compare-page1' => 'De ein Sigg',
 'compare-page2' => 'De ander Sigg',
 'compare-rev1' => 'de ein Version',
@@ -4200,6 +4181,7 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
 'dberr-problems' => 'Deit uns leid, die Sigg heh häd för der Momang e teschnisch Problem.',
 'dberr-again' => 'Versök eijfach en e paa Menutte, norr_ens die Sigg afzeroofe.',
 'dberr-info' => '(Mer han kei Verbindung noh_m Datebank-ẞööver krijje künne: $1)',
+'dberr-info-hidden' => '(Mer han kei Verbindung noh_m Datebank-ẞööver krijje künne)',
 'dberr-usegoogle' => 'De künnß zweschedorsch ad met <i lang="en">Google</i> söke.',
 'dberr-outofdate' => 'Müjjelesch, dat dat Verzeichnes vun uns Sigge do nit janß om neuste Shtannd es.',
 'dberr-cachederror' => 'Wat heh noh kütt es en Kopi vum Zwescheshpeisher vun dä Sigg,
@@ -4338,7 +4320,7 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'duration-minutes' => '{{PLURAL:$1|ein&nbsp;Menot|$1&nbsp;Menotte|kein&nbsp;Menot}}',
 'duration-hours' => '{{PLURAL:$1|en&nbsp;Schtond|$1&nbsp;Schtonde|kein&nbsp;Schtond}}',
 'duration-days' => '{{PLURAL:$1|ene&nbsp;Daach|$1&nbsp;Dääsch|keine&nbsp;Daach}}',
-'duration-weeks' => '{{PLURAL: $1|en&nbsp;Woch|$1&nbsp;Woche|kein&nbsp;Woch}}',
+'duration-weeks' => '{{PLURAL:$1|en&nbsp;Woch|$1&nbsp;Woche|kein&nbsp;Woch}}',
 'duration-years' => '{{PLURAL:$1|e&nbsp;Johr|$1&nbsp;Johre|kei&nbsp;Johr}}',
 'duration-decades' => '{{PLURAL:$1|zehn&nbsp;Johre|$1&nbsp;Johzehnte|kei&nbsp;Johzehnt}}',
 'duration-centuries' => '{{PLURAL:$1|e&nbsp;Johhondert|$1&nbsp;Johhonderte|kei&nbsp;Johhondert}}',
@@ -4355,9 +4337,9 @@ Wat De doh enjiß, kütt met Dingem Metmaachername un Dingem Brauser op die Sigg
 'limitreport-walltime-value' => '{{PLURAL:$1|ein&nbsp;Sekond|$1&nbsp;Sekonde|kein&nbsp;Sekond}}',
 'limitreport-ppvisitednodes-value' => '$1 vun $2',
 'limitreport-ppgeneratednodes-value' => '$1 vun $2',
-'limitreport-postexpandincludesize-value' => '$1 vun $2 Bytes',
+'limitreport-postexpandincludesize-value' => '$1 vun $2 {{PLURAL:$2|Byte|Bytes|Bytes}}',
 'limitreport-templateargumentsize' => 'Der Ömvang vun de Parrameeterre vun Schablohne',
-'limitreport-templateargumentsize-value' => '$1 vun $2 Bytes',
+'limitreport-templateargumentsize-value' => '$1 vun $2 {{PLURAL:$2|Byte|Bytes|Bytes}}',
 'limitreport-expansiondepth-value' => '$1 vun $2',
 'limitreport-expensivefunctioncount' => 'Oproofe vun „düüre“ Fonxjuhne em Paaser',
 'limitreport-expensivefunctioncount-value' => '$1 vun $2',
@@ -4373,10 +4355,12 @@ Derbei jehüüere enschtalleete Paaserfunxjuhne, alsu esu jät wi
 'expand_templates_input' => 'Wat De üvverpröfe wells:',
 'expand_templates_output' => 'Wat erus kütt es',
 'expand_templates_xml_output' => 'XML ußjevve',
+'expand_templates_html_output' => 'Röh HTML Ußjaav',
 'expand_templates_ok' => 'Lohß Jonn!',
 'expand_templates_remove_comments' => 'De ėnner Kommentare fottloohße',
 'expand_templates_remove_nowiki' => 'Donn de <nowiki>-Befähle ongerdröcke en dämm, wadd_eruß kütt',
 'expand_templates_generate_xml' => 'Och dä XML-Parser-Boum zeije',
+'expand_templates_generate_rawhtml' => 'Donn de Röh HTML Ußjaav aanzeije',
 'expand_templates_preview' => 'Vör-Aansich',
 
 );
index b2548fb..42f0b90 100644 (file)
@@ -83,7 +83,7 @@ $magicWords = array(
        'notoc'                     => array( '0', '_NAVEROKTUNE_', '__NOTOC__' ),
        'nogallery'                 => array( '0', '_GALERÎTUNE_', '__NOGALLERY__' ),
        'toc'                       => array( '0', '_NAVEROK_', '__TOC__' ),
-       'currentmonth1'             => array( '1', 'MEHANIHA1', 'CURRENTMONTH1' ),
+       'currentmonth1'             => array( '1', 'MEHA_NIHA_1', 'CURRENTMONTH1' ),
        'currentday'                => array( '1', 'ROJA_NIHA', 'CURRENTDAY' ),
        'currentday2'               => array( '1', 'ROJA_NIHA2', 'CURRENTDAY2' ),
        'currenttime'               => array( '1', 'DEMA_NIHA', 'CURRENTTIME' ),
@@ -105,6 +105,8 @@ $magicWords = array(
        'language'                  => array( '0', '#ZIMAN', '#LANGUAGE:' ),
        'numberofadmins'            => array( '1', 'HEJMARA_RÊVEBERAN', 'NUMBEROFADMINS' ),
        'special'                   => array( '0', 'taybet', 'special' ),
+       'pagesincategory_all'       => array( '0', 'hemû', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'rûpel', 'pages' ),
 );
 
 $messages = array(
@@ -130,7 +132,6 @@ $messages = array(
 'tog-minordefault' => 'Her guhertinekê weke guhertineke biçûk nîşan bide',
 'tog-previewontop' => 'Pêşdîtina gotarê li jorî cihê guherandinê nîşan bide',
 'tog-previewonfirst' => 'Li cem guherandinê hertim yekemîn pêşdîtinê nîşan bide',
-'tog-nocache' => 'Vegirtina rûpelan bisekinîne',
 'tog-enotifwatchlistpages' => 'Heke rûpeleke ez dişopînim hate guhertin ji min re E-nameyekê bişîne',
 'tog-enotifusertalkpages' => 'Dema rûpela min a Gotûbêjê hate guhertin e-nameyekê ji min re bişîne',
 'tog-enotifminoredits' => 'Ji bo guhertinên biçûk jî E-nameyekê ji min re bişîne',
@@ -244,7 +245,6 @@ $messages = array(
 'qbedit' => 'Biguherîne',
 'qbpageoptions' => 'Ev rûpel',
 'qbmyoptions' => 'Rûpelên min',
-'qbspecialpages' => 'Rûpelên taybet',
 'faq' => 'PGP',
 'faqpage' => 'Project:PGP',
 
@@ -428,9 +428,6 @@ Dibe ku di sernavê de karakterên nayên bikaranîn hatibin nivîsandin.',
 'perfcached' => 'Ev dane hatine veşartin û belkî ne rojane bin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Ev dane hatiye veşartin û cara paşîn $1 hatiye rojanekirin. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Fonksiyona rojanekirinê ya vê rûpelê hatiye sekinandin. Daneyên vir nayên rojanekirin.',
-'wrong_wfQuery_params' => 'Parametreyên şaş ji bo wfQuery()<br />
-Fonksiyon: $1<br />
-Pirs: $2',
 'viewsource' => 'Çavkaniyê bibîne',
 'actionthrottled' => 'Hejmara guherandinên hatine hesibandin',
 'actionthrottledtext' => 'Te ev tişt di demeke gelekî kin de kir. Ji kerema xwe çend xulekan bisekine û carekî din biceribîne.',
@@ -538,7 +535,7 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
 'user-mail-no-addy' => 'Hewl da e-nameyekê bê navnîşana e-nameyê bişîne',
 
 # Change password dialog
-'resetpass' => 'Şîfreyê biguherîne',
+'changepassword' => 'Şîfreyê biguherîne',
 'resetpass_announce' => 'Te xwe bi şîfreyekê tomar kiriye ku bi riya e-nameyekê ji te re hatiye şandin.
 Ji bo xelaskirina tomarkirinê, divê tu niha şîfreyeke nû binivîsî:',
 'resetpass_text' => '<!-- Nivîsê li vir binivisîne -->',
@@ -774,7 +771,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'rev-delundel' => 'nîşan bide/veşêre',
 'rev-showdeleted' => 'nîşan bide',
 'revisiondelete' => 'Guhertoyan jê bibe/nebe',
-'revdelete-nologid-title' => 'Têketina ne derbasdar',
 'revdelete-show-file-submit' => 'Erê',
 'revdelete-legend' => 'Guherandina qebûlkirina dîtinê',
 'revdelete-hide-text' => 'Nivîsa guhertoyê veşêre',
@@ -789,8 +785,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'revdelete-suppress' => 'Sedema jêbirinê ji rêveberan re jî veşêre',
 'revdelete-log' => 'Sedem',
 'revdel-restore' => 'xuyakirinê biguherîne',
-'revdel-restore-deleted' => 'revîzyonên hatine jêbirin',
-'revdel-restore-visible' => 'guhertoyên berbiçav',
 'pagehist' => 'Dîroka rûpelê',
 'deletedhist' => 'Dîroka jêbirî',
 'revdelete-otherreason' => 'Sedemekî din:',
@@ -821,11 +815,7 @@ Sedema qedexekirina $3 ev e: ''$2''",
 # Search results
 'searchresults' => 'Encamên lêgerînê',
 'searchresults-title' => 'Encamên lêgerrînê bo "$1"',
-'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} de, binêre [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Te daxwaza "[[:$1]]" kir. ([[Special:Prefixindex/$1|hemî rûpelên bi "$1" dest pê dikin]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hemî rûpelên ku bi "$1" ve hatine girêdan]])',
-'searchsubtitleinvalid' => "Tu li '''$1''' geriyayî",
 'titlematches' => 'Dîtinên di sernivîsên gotaran de',
-'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
 'textmatches' => 'Dîtinên di nivîsara rûpelan de',
 'notextmatches' => 'Di nav sernivîsan de nehat dîtin.',
 'prevn' => '{{PLURAL:$1|$1}} paş',
@@ -834,7 +824,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'nextn-title' => '$1 {{PLURAL:$1|encama|encamên}} pêştir',
 'shown-title' => 'Li her rûpelê $1 {{PLURAL:$1|encam|encaman}} nîşan bide',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Vebijartinên lêgerrînê',
 'searchmenu-exists' => "'''Rûpeleke bi navê \"[[:\$1]]\" li ser vê wîkiyê heye.'''",
 'searchmenu-new' => 'Rûpela "[[:$1]]" çêke!',
 'searchprofile-articles' => 'Rûpelên naverokê',
@@ -860,11 +849,9 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'showingresultsnum' => "{{PLURAL:$3|'''1'''|'''$3'''}} encam, bi #<b>$2</b> dest pê dike.",
 'showingresultsheader' => "{{PLURAL:$5|Encam '''$1''' ên '''$3'''|Encam '''$1 - $2''' ên '''$3'''}} ji bo '''$4'''",
 'search-nonefound' => 'Ti rûpelên wek ya daxwazkirî nînin.',
-'powersearch' => 'Lê bigere',
 'powersearch-legend' => 'Lê bigere',
 'powersearch-ns' => 'Di valahiya navan de lêbigere:',
 'powersearch-redir' => 'Lîsteya beralîkirinan',
-'powersearch-field' => 'Bigere li',
 'powersearch-togglelabel' => 'Kontrol bike:',
 'powersearch-toggleall' => 'Hemû',
 'powersearch-togglenone' => 'Tune',
@@ -876,7 +863,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'preferences' => 'Tercîhên min',
 'mypreferences' => 'Tercihên min',
 'prefs-edits' => 'Hejmarê guherandinan:',
-'changepassword' => 'Şîfreyê biguherîne',
 'prefs-skin' => 'Pêste',
 'skin-preview' => 'Pêşdîtin',
 'datedefault' => 'Tercih tune ne',
@@ -895,7 +881,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'prefs-email' => 'Vebijarkên E-nameyê',
 'prefs-rendering' => 'Rû',
 'saveprefs' => 'Tercîhan tomar bike',
-'resetprefs' => 'Guhertinên netomarkirî şûnde vegerîne',
 'restoreprefs' => 'Hemû eyarên berê ji nû ve ava bike',
 'prefs-editing' => 'Guherandin',
 'rows' => 'Rêz',
@@ -905,7 +890,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'savedprefs' => 'Tercîhên te qeyd kirî ne.',
 'timezonelegend' => 'Herêma demê:',
 'localtime' => 'Dema herêmî',
-'timezoneoffset' => 'Cudahî¹:',
 'servertime' => "Dema server'ê:",
 'guesstimezone' => 'Ji lêgerokê tevlî bike',
 'timezoneregion-africa' => 'Afrîka',
@@ -1053,7 +1037,6 @@ Sedema qedexekirina $3 ev e: ''$2''",
 'recentchanges-summary' => 'Guhertinên herî dawî yên wîkiyê li ser vê rûpelê bişopîne.',
 'recentchanges-label-minor' => 'Ev guhertineka biçûk e',
 'recentchanges-legend-newpage' => '$1 - rûpela nû',
-'rcnote' => "Jêr {{PLURAL:$1|guherandinek|'''$1''' guherandinên dawî}} di {{PLURAL:$2|rojê|'''$2''' rojên dawî}} de ji $3 şûnde tên nîşan dan.",
 'rclistfrom' => 'Guherandinên ji $1 şûnde nîşan bide',
 'rcshowhideminor' => 'Guherandinên biçûk $1',
 'rcshowhidebots' => "Bot'an $1",
@@ -1334,9 +1317,6 @@ Tu dikarî ji xwe re têketinekê hilbijêrî, navê bikarhêneriyê an navê r
 'allpagesto' => 'Rûpela di rêza dawî de:',
 'allarticles' => 'Hemû gotar',
 'allinnamespace' => 'Hemû rûpel (valahiya nav a $1)',
-'allnotinnamespace' => 'Hemû rûpel (ne di valahiya nav a $1 de ye)',
-'allpagesprev' => 'Pêş',
-'allpagesnext' => 'Paş',
 'allpagessubmit' => 'Here',
 'allpagesprefix' => 'Rûpelên bi pêşbendik nîşan bide:',
 'allpagesbadtitle' => 'Sernavê rûpelê qedexe bû ya "interwiki"- ya "interlanguage"-pêşnavekî xwe hebû. Meqûle ku zêdertirî tiştekî nikanin werin bikaranîn di sernavê da.',
@@ -1555,7 +1535,6 @@ Ger rûpeleke nû di dema jêbirinê de hatibe çêkirin, ew guherto wê were p
 'undeletebtn' => 'Dîsa çêke!',
 'undeletelink' => 'dîtin/dîsa çêkirin',
 'undeleteviewlink' => 'bibîne:',
-'undeletereset' => 'Nû bike',
 'undeleteinvert' => 'Hilbijartinê şûnde vegerîne',
 'undeletecomment' => 'Sedem:',
 'undeletedrevisions' => '{{PLURAL:$1|Versiyonek dîsa hate|$1 versiyon dîsa hatin}} çêkirin',
@@ -1622,7 +1601,6 @@ Ji bo jêbirinan û çêkirinên nû, ji kerema xwe li [[{{ns:special}}:Log/dele
 'block' => 'Bikarhêner asteng bike',
 'unblock' => 'Astengkirinê rake',
 'blockip' => 'Bikarhêner asteng bike',
-'blockip-title' => 'Bikarhêner asteng bike',
 'blockip-legend' => 'Bikarhêner asteng bike',
 'blockiptext' => "Ji bo astengkirina nivîsandinê ya ji navnîşaneke IP'yê an jî ji bikarhênerekî/ê, vê formê bikarbîne.
 Divê ev tenê ji bo sekinandina vandalîzmê were bikaranîn, ku divê li gorî [[{{MediaWiki:Policy-url}}|rêgezê]] be.
@@ -1631,7 +1609,6 @@ Sedemekê binivîse!",
 'ipadressorusername' => "adresê IP'yekê ya navekî bikarhênerekî",
 'ipbexpiry' => 'Dem:',
 'ipbreason' => 'Sedem',
-'ipbreasonotherlist' => 'Sedemeke din',
 'ipbreason-dropdown' => '*Sedemên astengkirinê
 ** Vandalîzm
 ** Agahiya şaş dikire gotarekê
@@ -1647,8 +1624,6 @@ Sedemekê binivîse!",
 'ipbsubmit' => 'Vê bikarhêner asteng bike',
 'ipbother' => 'Demekî din:',
 'ipboptions' => '2 saet:2 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 meh:1 month,3 meh:3 months,6 meh:6 months,1 sal:1 year,ji her demê re:infinite',
-'ipbotheroption' => 'yên din',
-'ipbotherreason' => 'Sedemeke din',
 'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nû û lîsteya bikarhêneran veşêre',
 'ipbwatchuser' => 'Rûpelên bikarhêner û gotûbêjê bişopîne',
 'ipb-confirm' => 'Astengkirinê piştrast bike',
@@ -1732,7 +1707,6 @@ Eger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.
 
 Xêra xwe navê nû û sedemê navgerandinê binivisîne.",
 'movearticle' => 'Rûpelê bigerîne',
-'movenologin' => 'Xwe tomar nekir',
 'movenologintext' => 'Tu dive bikarhênereke qeydkirî bî û [[Special:UserLogin|werî nav sîstemê]]
 da bikarî navê wê rûpelê biguherînî.',
 'movenotallowed' => 'Mafên te bo guherandina navên gotaran tune ye.',
@@ -1748,7 +1722,6 @@ da bikarî navê wê rûpelê biguherînî.',
 'movepage-moved-noredirect' => 'Beralîkirin nehate çêkirin.',
 'articleexists' => 'Rûpela bi vî navî heye, an navê ku te hilbijart derbas nabe. Navekî din hilbijêre.',
 'cantmove-titleprotected' => 'Tu nikanê vê rûpelê bervê vê cihê bigerînê ji ber ku sernava nuh tê parastin ji bo çêkirinê',
-'movedto' => 'bû',
 'movetalk' => "Heke gengaz be, rûpela '''gotûbêj'''a wê jî bigerîne.",
 'movepage-page-exists' => 'Rûpela $1 berê heye û ew nikane otomatîk were jêbirin.',
 'movepage-page-moved' => 'Navê $1 weke $2 hate guhertin.',
@@ -2021,14 +1994,10 @@ Ji ber ku girêdaneke derve di wê rûpelê de heye ev pirsgirêk pêk hat.',
 'exif-iimcategory-war' => 'Şer, pevçûn û alozî',
 'exif-iimcategory-wea' => 'Hewa',
 
-# External editor support
-'edit-externally-help' => '(Ji bo agahîyên zav [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] li vir binêre)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hemû',
 'namespacesall' => 'hemû',
 'monthsall' => 'hemû',
-'limitall' => 'hemû',
 
 # Email address confirmation
 'confirmemail' => 'Adrêsa e-nameyan nasbike',
@@ -2144,7 +2113,6 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.",
 
 # Special:ComparePages
 'comparepages' => 'Rûpelan bide ber hev',
-'compare-selector' => 'Guhertoyên rûpelan bide ber hev',
 'compare-page1' => 'Rûpel 1',
 'compare-page2' => 'Rûpel 2',
 'compare-rev1' => 'Revîzyon 1',
index b54ba16..f204e22 100644 (file)
@@ -113,7 +113,7 @@ $messages = array(
 'otherlanguages' => 'Мӧд кывъясӧн',
 'jumptosearch' => 'корсьысьӧм',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} йылысь',
 'currentevents' => 'Быд лунся лоӧмтор',
 'mainpage' => 'Медшӧр лист бок',
@@ -121,7 +121,6 @@ $messages = array(
 'portal' => 'Йитчӧм',
 'portal-url' => 'Project:Йитчӧм портал',
 
-'newmessageslink' => 'выль юӧртӧмъяс',
 'editsection' => 'веськӧдны',
 'editold' => 'веськӧдны',
 'editlink' => 'вежны',
index da0115d..696ec16 100644 (file)
@@ -60,14 +60,13 @@ $namespaceAliases = array(
 );
 
 $specialPageAliases = array(
-       'Activeusers'               => array( 'DevnydhyoryonByw' ),
+       'Activeusers'               => array( 'DevnydhyoryonVyw' ),
        'Allmessages'               => array( 'OllMessajys' ),
        'Allpages'                  => array( 'OllFolennow' ),
        'Ancientpages'              => array( 'FolennowKoth' ),
        'Badtitle'                  => array( 'TitelDrog' ),
        'Blankpage'                 => array( 'FolenWag' ),
        'Block'                     => array( 'Difenna' ),
-       'Blockme'                   => array( 'GulOwDifen' ),
        'Booksources'               => array( 'PennfentynyowLyver' ),
        'BrokenRedirects'           => array( 'DaskedyansowTerrys' ),
        'Categories'                => array( 'Klassys' ),
@@ -79,10 +78,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'FormyaAkont' ),
        'Deadendpages'              => array( 'FolennowFordhDhall' ),
        'DeletedContributions'      => array( 'KevrohowDiles' ),
-       'Disambiguations'           => array( 'Diamstyryansow' ),
        'DoubleRedirects'           => array( 'DaswedyansowDewblek' ),
-       'EditWatchlist'             => array( 'ChanjyaOwRolGolya' ),
+       'EditWatchlist'             => array( 'ChanjyaOwRolWolya' ),
        'Emailuser'                 => array( 'EbostyaDevnydhyer' ),
+       'ExpandTemplates'           => array( 'BrasheSkantlyns' ),
        'Export'                    => array( 'Esperthi' ),
        'Fewestrevisions'           => array( 'AnLyhaAmendyansow' ),
        'Filepath'                  => array( 'HynsAnFolen' ),
@@ -153,36 +152,36 @@ $specialPageAliases = array(
        'Wantedfiles'               => array( 'RestrennowHwansus' ),
        'Wantedpages'               => array( 'FolennowHwansus' ),
        'Wantedtemplates'           => array( 'SkantlynsHwansus' ),
-       'Watchlist'                 => array( 'Rol_golya' ),
+       'Watchlist'                 => array( 'Rol_wolya' ),
        'Whatlinkshere'             => array( 'OwKevrennaOmma' ),
        'Withoutinterwiki'          => array( 'HebInterwiki' ),
 );
 
 $magicWords = array(
-       'redirect'                  => array( '0', '#DASWEDYANS', '#REDIRECT' ),
+       'redirect'                  => array( '0', '#DASKEDYANS', '#REDIRECT' ),
        'numberofpages'             => array( '1', 'NIVERAFOLENNOW', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', 'NIVERAERTHYGLOW', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', 'NIVERARESTRENNOW', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'NIVERADHEVNYDHYORYON', 'NUMBEROFUSERS' ),
-       'numberofactiveusers'       => array( '1', 'NIVERADHEVNYDHYORYONVEW', 'NUMBEROFACTIVEUSERS' ),
+       'numberofactiveusers'       => array( '1', 'NIVERADHEVNYDHYORYONVYW', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', 'NIVERAJANJYOW', 'NUMBEROFEDITS' ),
-       'numberofviews'             => array( '1', 'NIVERAWELOW', 'NUMBEROFVIEWS' ),
+       'numberofviews'             => array( '1', 'NIVERAWELYANSOW', 'NUMBEROFVIEWS' ),
        'pagename'                  => array( '1', 'HANOWANFOLEN', 'PAGENAME' ),
        'fullpagename'              => array( '1', 'HANOWLEUNANFOLEN', 'FULLPAGENAME' ),
        'img_thumbnail'             => array( '1', 'skeusennik', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'skeusennik=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'dyhow', 'right' ),
-       'img_left'                  => array( '1', 'cledh', 'left' ),
+       'img_left'                  => array( '1', 'kledh', 'left' ),
        'img_none'                  => array( '1', 'nagonan', 'none' ),
-       'img_center'                => array( '1', 'cresel', 'center', 'centre' ),
+       'img_center'                => array( '1', 'kresel', 'center', 'centre' ),
        'img_framed'                => array( '1', 'fremys', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'hebfram', 'frameless' ),
        'img_page'                  => array( '1', 'folen=$1', 'folen_$1', 'page=$1', 'page $1' ),
        'img_top'                   => array( '1', 'gwartha', 'top' ),
-       'img_text_top'              => array( '1', 'text-gwartha', 'text-top' ),
-       'img_middle'                => array( '1', 'cres', 'middle' ),
+       'img_text_top'              => array( '1', 'tekst-gwartha', 'text-top' ),
+       'img_middle'                => array( '1', 'kres', 'middle' ),
        'img_bottom'                => array( '1', 'goles', 'bottom' ),
-       'img_text_bottom'           => array( '1', 'text-goles', 'text-bottom' ),
+       'img_text_bottom'           => array( '1', 'tekst-goles', 'text-bottom' ),
        'img_link'                  => array( '1', 'kevren=$1', 'link=$1' ),
        'sitename'                  => array( '1', 'HANOWANWIASVA', 'SITENAME' ),
        'pageid'                    => array( '0', 'IDANFOLEN', 'PAGEID' ),
@@ -190,18 +189,18 @@ $magicWords = array(
        'servername'                => array( '0', 'HANOWANSERVYER', 'SERVERNAME' ),
        'grammar'                   => array( '0', 'GRAMASEK:', 'GRAMMAR:' ),
        'fullurl'                   => array( '0', 'URLLEUN:', 'FULLURL:' ),
-       'displaytitle'              => array( '1', 'DISQWEDHESANTITEL', 'DISPLAYTITLE' ),
+       'displaytitle'              => array( '1', 'DISKWEDHESANTITEL', 'DISPLAYTITLE' ),
        'language'                  => array( '0', '#YETH:', '#LANGUAGE:' ),
        'numberofadmins'            => array( '1', 'NIVERAVENYSTRORYON', 'NUMBEROFADMINS' ),
        'special'                   => array( '0', 'arbennek', 'special' ),
-       'filepath'                  => array( '0', 'HENSANFOLEN:', 'FILEPATH:' ),
-       'hiddencat'                 => array( '1', '__CLASSCUDHYS__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', 'RESTRENNOWYNCLASS', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesize'                  => array( '1', 'MENSANRESTREN', 'PAGESIZE' ),
+       'filepath'                  => array( '0', 'HYNSANFOLEN:', 'FILEPATH:' ),
+       'hiddencat'                 => array( '1', '__KLASSKUDHYS__', '__HIDDENCAT__' ),
+       'pagesincategory'           => array( '1', 'RESTRENNOWYNKLASS', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                  => array( '1', 'MYNSANRESTREN', 'PAGESIZE' ),
        'index'                     => array( '1', '__MENEGVA__', '__INDEX__' ),
        'noindex'                   => array( '1', '__HEBMENEGVA__', '__NOINDEX__' ),
        'numberingroup'             => array( '1', 'NIVERYNBAGAS', 'NUMBERINGROUP', 'NUMINGROUP' ),
-       'url_path'                  => array( '0', 'HENS', 'PATH' ),
+       'url_path'                  => array( '0', 'HYNS', 'PATH' ),
        'pagesincategory_all'       => array( '0', 'oll', 'all' ),
        'pagesincategory_pages'     => array( '0', 'folennow', 'pages' ),
 );
@@ -345,7 +344,6 @@ $messages = array(
 'qbedit' => 'Chanjya',
 'qbpageoptions' => 'An folen-ma',
 'qbmyoptions' => 'Ow folennow',
-'qbspecialpages' => 'Folennow arbennek',
 'faq' => 'FAQ',
 
 # Vector skin
@@ -620,7 +618,7 @@ Hwi a yll skonya aswon an messach-ma mar peu an akont-ma gwruthys yn gwall.',
 'loginlanguagelabel' => 'Yeth: $1',
 
 # Change password dialog
-'resetpass' => 'Chanjya ger tremena',
+'changepassword' => 'Chanjya an ger-tremena',
 'resetpass_announce' => 'Hwi a omgelmis dre goden ebostyes anbarthus.
 Rag gorfenna omgelmi, res yw dhywgh settya ger tremena nowyth omma:',
 'resetpass_header' => 'Chanjya ger tremena an akont',
@@ -770,8 +768,6 @@ Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 'rev-delundel' => 'diskwedhes/kudha',
 'rev-showdeleted' => 'diskwedhes',
 'revdel-restore' => 'chanjya an hewelder',
-'revdel-restore-deleted' => 'amendyansow diles',
-'revdel-restore-visible' => 'amendyansow gweladow',
 'pagehist' => 'Istori an folen',
 
 # History merging
@@ -792,10 +788,6 @@ Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 # Search results
 'searchresults' => 'Sewyansow an hwilans',
 'searchresults-title' => 'Sewyansow an hwilans rag "$1"',
-'searchresulttext' => 'Rag moy kedhlow a-dro dhe hwilas yn {{SITENAME}}, gwelewgh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Hwi a hwilas \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|keniver folen ow talleth gans "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|keniver folen ow kevrenna dhe "$1"]])',
-'searchsubtitleinvalid' => "Hwi a hwilas '''$1'''",
-'notitlematches' => 'Nyns eus titel folen vyth owth omdhesedha',
 'notextmatches' => 'Nyns eus tekst folen vyth owth omdhesedha',
 'prevn' => '{{PLURAL:$1|$1}} kyns',
 'nextn' => 'nessa {{PLURAL:$1|$1}}',
@@ -803,7 +795,6 @@ Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 'nextn-title' => '$1 {{PLURAL:$1|sewyans}} nessa',
 'shown-title' => 'Diskwedhes $1 {{PLURAL:$1|sewyans}} yn folen',
 'viewprevnext' => 'Gweles ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Etholyow hwilas',
 'searchmenu-exists' => "''Yma folen henwys \"[[:\$1]]\" war an wiki-ma'''",
 'searchmenu-new' => "'''Gwruthyl an folen \"[[:\$1]]\" war an wiki-ma!'''",
 'searchprofile-articles' => 'Folennow dalgh',
@@ -825,19 +816,14 @@ Alhwedh: '''({{int:cur}})''' = an dyffrans dhyworth an amendyans diwettha, '''({
 'search-interwiki-default' => '$1 sewyansow:',
 'search-interwiki-more' => '(moy)',
 'search-relatedarticle' => 'Kelmys',
-'mwsuggest-disable' => 'Dialosegi profyansow hwilas',
 'searcheverything-enable' => 'Hwilas yn pub spas-hanow',
 'searchrelated' => 'kelmys',
 'searchall' => 'oll',
 'showingresultsheader' => "{{PLURAL:$5|Sewyans '''$1''' a '''$3'''|Sewyansow '''$1 - $2''' a '''$3'''}} rag '''$4'''",
-'nonefound' => "'''Noten''': Ny hwilir marnas yn rann a'n spasys-hanow dre dhefowt.
-Assayewgh rag-gorra agas govyn gans ''all:'' rag hwilas yn pub tyller (ynna an folennow keskows, skantlyns, etc), po devnydhyewgh an spas-hanow hwensys avel rag-gorrans.",
 'search-nonefound' => 'Nyns esa sewyans vyth owth omdhesedha orth an govyn.',
-'powersearch' => 'Hwilans avonsys',
 'powersearch-legend' => 'Hwilans avonsys',
 'powersearch-ns' => 'Hwilas yn spasys-hanow:',
 'powersearch-redir' => 'Rolya daskedyansow',
-'powersearch-field' => 'Hwilas',
 'powersearch-togglelabel' => 'Dewis:',
 'powersearch-toggleall' => 'Oll',
 'powersearch-togglenone' => 'Nagonan',
@@ -847,7 +833,6 @@ Assayewgh rag-gorra agas govyn gans ''all:'' rag hwilas yn pub tyller (ynna an f
 'preferences' => 'Dewisyansow',
 'mypreferences' => 'Dewisyansow',
 'prefs-edits' => 'Niver a janjyow:',
-'changepassword' => 'Chanjya an ger-tremena',
 'prefs-skin' => 'Krohen',
 'skin-preview' => 'Ragweles',
 'prefs-datetime' => 'Dedhyans hag eur',
@@ -861,7 +846,6 @@ Assayewgh rag-gorra agas govyn gans ''all:'' rag hwilas yn pub tyller (ynna an f
 'prefs-setemail' => 'Settya trigva ebost',
 'prefs-email' => 'Etholyow ebostya',
 'saveprefs' => 'Gwitha',
-'resetprefs' => 'Klerhe chanjyow nag yw gwithys',
 'restoreprefs' => 'Restorya pub settyans defowt',
 'prefs-editing' => 'Chanjya',
 'rows' => 'Rewyow:',
@@ -970,7 +954,6 @@ Ny dhiskwedhir agas trigva ebost pan gestaffo devnydhyoryon erel dhywgh.',
 'recentchanges-label-bot' => 'Gwrys veu an chanj-ma gans bott',
 'recentchanges-label-unpatrolled' => 'Ny veu an chanj-ma patrolyes hwath',
 'recentchanges-legend-newpage' => '$1 - folen nowyth',
-'rcnote' => "A-woles yma {{PLURAL:$1|'''1''' janj|an '''$1''' chanjyow diwettha}} y'n {{PLURAL:$2|dydh|'''$2''' dydh}} diwettha, a-dhia $5, $4.",
 'rclistfrom' => 'Diskwedhes chanjyow nowyth yn unn dhalleth dhyworth $1.',
 'rcshowhideminor' => '$1 chanjyow byhan',
 'rcshowhidebots' => '$1 bottow',
@@ -1124,8 +1107,6 @@ Diskwedhys a-woles yw an deskrifans war hy [$2 folen dheskrifans] ena.',
 'allpagesfrom' => 'Diskwedhes folennow yn unn dhalleth orth:',
 'allpagesto' => 'Diskwedhes folennow yn unn dhiwedha orth:',
 'allarticles' => 'Keniver folen',
-'allpagesprev' => 'Kyns',
-'allpagesnext' => 'Nessa',
 'allpagessubmit' => 'Mos',
 'allpages-hide-redirects' => 'Kudha daskedyansow',
 
@@ -1274,7 +1255,6 @@ Gwelewgh $2 rag kovadh a dhileansow a-dhiwedhes.',
 'blockip' => 'Lettya devnydhyer',
 'ipadressorusername' => 'Trigva IP po hanow-usyer:',
 'ipbreason' => 'Acheson:',
-'ipbreasonotherlist' => 'Acheson aral',
 'ipboptions' => '2 our:2 hours,1 jydh:1 day,3 dydh: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',
@@ -1312,7 +1292,6 @@ Surhewgh mar pleg hwi dhe gonvedhes sewyansow an gwrians-ma kyns mos yn-rag.",
 'movepagebtn' => 'Gwaya an folen',
 'pagemovedsub' => 'Gwaya a sewenis',
 'movepage-moved' => '\'\'\'Gwayys re beu "$1" dhe "$2"\'\'\'',
-'movedto' => 'gwayys dhe',
 'movelogpage' => 'Kovnoten waya',
 'movenosubpage' => "Ny's teves an folen-ma isfolen vyth.",
 'movereason' => 'Acheson:',
@@ -1441,14 +1420,10 @@ Hwi a yll gweles hy fennfenten.',
 
 'exif-subjectdistancerange-0' => 'Ankoth',
 
-# External editor support
-'edit-externally' => 'Chanjya an restren-ma dre dowlen a-ves',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'puptra',
 'namespacesall' => 'oll',
 'monthsall' => 'oll',
-'limitall' => 'oll',
 
 # Email address confirmation
 'confirmemail' => 'Afydhya an drigva ebost',
index 3f97368..630bbbe 100644 (file)
@@ -57,7 +57,6 @@ $messages = array(
 'tog-minordefault' => 'Жарыяланбасча бүт оңдоолорду майда деп белгилөө',
 'tog-previewontop' => 'Оңдоо терезесинин алдына алдын ала көрсөтүүнү жайгаштыруу',
 'tog-previewonfirst' => 'Оңдоого өтөөрдөн мурда алдын ала көрсөтүү',
-'tog-nocache' => 'Барактарды кэштөөнү браузерден өчүрүү',
 'tog-enotifwatchlistpages' => 'Көзөмөл тизмемдеги барак же файл өзгөртүлгөндө мага эл. почта аркылуу билдирүү',
 'tog-enotifusertalkpages' => 'Баарлашуу барагым өзгөртүлгөндө мага эл. почта аркылуу билдирүү',
 'tog-enotifminoredits' => 'Барак же файлдардын майда өзгөртүүлөрүн дагы мага эл. почта аркылуу билдирүү',
@@ -182,7 +181,6 @@ $messages = array(
 'qbedit' => 'Оңдоо',
 'qbpageoptions' => 'Бул барак',
 'qbmyoptions' => 'Барактарым',
-'qbspecialpages' => 'Кызматтык барактар',
 'faq' => 'КБС',
 'faqpage' => 'Project:КБС',
 
@@ -371,9 +369,6 @@ $1',
 'badtitle' => 'Туура эмес аталыш',
 'badtitletext' => 'Талап кылынган барактын аталышы туура эмес, бош, же тилдер-аралык же уики-аралык аталышы туура эмес шилтемеленген.
 Балким аталышта колдонулбай турган бир же андан көп белги камтылган.',
-'wrong_wfQuery_params' => 'wfQuery() функциясы үчүн жарабай турган параметрлер<br />
-Функция: $1<br />
-Суроо: $2',
 'viewsource' => 'Кайнарын кароо',
 'viewsource-title' => '$1 барагынын баштапкы кодун көрүү',
 'actionthrottled' => 'Аралык боюнча чектөө',
@@ -501,7 +496,7 @@ $1',
 'php-mail-error-unknown' => "PHP'нин mail() функциясындагы белгисиз ката.",
 
 # Change password dialog
-'resetpass' => 'Сырсөздү өзгөртүү',
+'changepassword' => 'Сырсөздү өзгөртүү',
 'resetpass_header' => 'Эсеп жазуунун сырсөзүн өзгөртүү',
 'oldpassword' => 'Эски сырсөз:',
 'newpassword' => 'Жаңы сырсөз:',
@@ -679,8 +674,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'rev-deleted-user' => '(колдонуучунун аты өчүрүлдү)',
 'rev-delundel' => 'көрсөтүү/жашыруу',
 'rev-showdeleted' => 'көрсөтүү',
-'revdelete-nologtype-title' => 'Журналдын түрү көрсөтүлгөн жок',
-'revdelete-nologid-title' => 'Журналдын туура эмес жазуусу',
 'revdelete-show-file-submit' => 'Ооба',
 'revdelete-hide-text' => 'Версия текстин жашыруу',
 'revdelete-hide-image' => 'Файл мазмунун жашыруу',
@@ -692,8 +685,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'revdelete-radio-unset' => 'Жок',
 'revdelete-log' => 'Себеби:',
 'revdel-restore' => 'көрүнүшүн өзгөртүү',
-'revdel-restore-deleted' => 'өчүрүлгөн версиялар',
-'revdel-restore-visible' => 'көрүнүүчү версиялары',
 'pagehist' => 'Барактын тарыхы',
 'deletedhist' => 'Өчүрүүлөрдүн тарыхы',
 'revdelete-reason-dropdown' => '*Өчүрүүнүн стандарттуу себептери
@@ -739,7 +730,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'nextn-title' => 'Кийинки $1 {{PLURAL:$1|жыйынтык}}',
 'shown-title' => 'Барактан $1 {{PLURAL:$1|жыйынтыкты}} көрсөтүү',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) кароо',
-'searchmenu-legend' => 'Издөө опциялары',
 'searchmenu-exists' => "'''Бул Уикиде \"[[:\$1]]\" деп аталган барак бар.'''",
 'searchmenu-new' => "'''Бул Уикиде \"[[:\$1]]\" барагын түз!'''",
 'searchprofile-articles' => 'Негизги барактар',
@@ -762,17 +752,14 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'search-interwiki-default' => '$1 жыйын.:',
 'search-interwiki-more' => '(көбүрөөк)',
 'search-relatedarticle' => 'Байланыштуу',
-'mwsuggest-disable' => 'AJAX-сунуштарын өчүрүү',
 'searcheverything-enable' => 'Бардык аталыш мейкиндиктеринен издөө',
 'searchrelated' => 'байланыштуу',
 'searchall' => 'баары',
 'showingresultsheader' => "'''$4''' үчүн {{PLURAL:$5|'''$3''' жыйынтыктан '''$1'''-и|'''$1 - $2''' -дан '''$3''' жыйынтык}}",
 'search-nonefound' => 'Талапка төп маалымат табылган жок.',
-'powersearch' => 'Кеңейтилген издөө',
 'powersearch-legend' => 'Кеңейтилген издөө',
 'powersearch-ns' => 'Аталыш мейкиндиктеринен издөө:',
 'powersearch-redir' => 'Багыттамаларды чыгаруу',
-'powersearch-field' => 'Издөө',
 'powersearch-togglelabel' => 'Белги салуу:',
 'powersearch-toggleall' => 'Баары',
 'powersearch-togglenone' => 'Эчнерсе',
@@ -782,7 +769,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'preferences' => 'Ырастоолор',
 'mypreferences' => 'Ырастоолор',
 'prefs-edits' => 'Өзгөртүүлөрдүн саны',
-'changepassword' => 'Сырсөздү өзгөртүү',
 'prefs-skin' => 'Тема',
 'skin-preview' => 'Алдын ала көрүү',
 'datedefault' => 'Жарыяланбасча',
@@ -802,7 +788,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'prefs-email' => 'Электрондук почта параметрлери',
 'prefs-rendering' => 'Сырткы көрүнүш',
 'saveprefs' => 'Сактоо',
-'resetprefs' => 'Сакталбаган өзгөртүүлөрдү тазалоо',
 'restoreprefs' => 'Жарыяланбасча ырастоолорду калыбына келтирүү',
 'prefs-editing' => 'Оңдоп-түзөө',
 'rows' => 'Сап:',
@@ -813,7 +798,6 @@ IP дарегиңиз бул барактын оңдоо тарыхына жаз
 'timezonelegend' => 'Сааттык алкак:',
 'localtime' => 'Жергиликтүү убакыт:',
 'timezoneuseoffset' => 'Башка (жылышты көрсөтүңүз)',
-'timezoneoffset' => 'Жылыш¹:',
 'servertime' => 'Сервер убактысы:',
 'timezoneregion-africa' => 'Африка',
 'timezoneregion-america' => 'Америка',
@@ -943,7 +927,6 @@ HTML-тегдеринин тууралыгын текшериңиз.',
 'recentchanges-label-minor' => 'Бул майда оңдоо',
 'recentchanges-label-bot' => 'Бул оңдоо бот тарабынан жасалды',
 'recentchanges-label-unpatrolled' => 'Бул оңдоо күзөттөн өтө элек.',
-'rcnote' => "Ылдый жакта $5, $4 карата соңку {{PLURAL:$2|күндө|'''$2''' күндө}} жасалган {{PLURAL:$1| '''1''' өзгөрүү| '''$1''' өзгөрүү}}.",
 'rcnotefrom' => "'''$2''' -тан өзгөрүүлөр ылдый жакта ('''$1''' чейин көрсөтүлдү).",
 'rclistfrom' => '$1 күнүнөн баштап жаңы өзгөртүүлөрдү көрсөтүү',
 'rcshowhideminor' => 'Майда оңдоолорду $1',
@@ -1138,9 +1121,6 @@ To include a file in a page, use a link in one of the following forms:
 'allpagesfrom' => '-дан башталган барактарды көрсөтүү:',
 'allarticles' => 'Бардык барактар',
 'allinnamespace' => '«$1» ат мейкиндигинин бүт барактары',
-'allnotinnamespace' => 'Бүт барактар («$1» ат мейкиндигинен башка)',
-'allpagesprev' => 'Абалкы',
-'allpagesnext' => 'Кийинки',
 'allpagessubmit' => 'Аткаруу',
 'allpagesprefix' => '- префикси менен барактарды көрсөтүү',
 
@@ -1229,7 +1209,6 @@ To include a file in a page, use a link in one of the following forms:
 'undeletebtn' => 'Калыбына келтирүү',
 'undeletelink' => 'кароо/калыбына келтирүү',
 'undeleteviewlink' => 'көрүнүшү',
-'undeletereset' => 'Түшүрүү',
 'undeletecomment' => 'Себеп:',
 'undelete-search-submit' => 'Издөө',
 'undelete-show-file-submit' => 'Ооба',
@@ -1279,15 +1258,12 @@ To include a file in a page, use a link in one of the following forms:
 # Block/unblock
 'block' => 'Колдонуучуну бөгөттөө',
 'blockip' => 'Колдонуучуну бөгөттөө',
-'blockip-title' => 'Колдонуучуну бөгөттөө',
 'blockip-legend' => 'Колдонуучуну бөгөттөө',
 'ipadressorusername' => 'IP-дарек же колдонуучунун аты:',
 'ipbreason' => 'Себеп:',
-'ipbreasonotherlist' => 'Башка себеп',
 'ipbsubmit' => 'Бул колдонуучуну бөгөттөө',
 'ipbother' => 'Башка убакыт:',
 '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',
-'ipbotheroption' => 'башка',
 'ipblocklist' => 'Бөгөттөлгөн колдонуучулар',
 'blocklist-target' => 'Максат',
 'blocklist-reason' => 'Себеп',
@@ -1316,7 +1292,6 @@ To include a file in a page, use a link in one of the following forms:
 'move-page' => '$1 — атын өзгөртүү',
 'move-page-legend' => 'Барактын атын өзгөртүү',
 'movearticle' => 'Барактын атын өзгөртүү:',
-'movenologin' => 'Системге кирген жоксуз',
 'newtitle' => 'Жаңы аталышка:',
 'movepagebtn' => 'Барактын атын өзгөртүү',
 'pagemovedsub' => 'Барактын аты өзгөртүлдү',
@@ -1671,15 +1646,10 @@ To include a file in a page, use a link in one of the following forms:
 'exif-iimcategory-spo' => 'Спорт',
 'exif-iimcategory-wea' => 'Аба-ырайы',
 
-# External editor support
-'edit-externally' => 'Бул файлды сырткы программа колдонуу аркылуу оңдоо',
-'edit-externally-help' => '(Толук маалымат алуу үчүн [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] барагына кайрылсаңыз болот)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'баары',
 'namespacesall' => 'баары',
 'monthsall' => 'баары',
-'limitall' => 'баары',
 
 # Email address confirmation
 'confirmemail' => 'Электрондук даректи аныктоо',
@@ -1776,7 +1746,6 @@ To include a file in a page, use a link in one of the following forms:
 
 # Special:ComparePages
 'comparepages' => 'Барактарды салыштыруу',
-'compare-selector' => 'Барактардын версияларын салыштыруу',
 'compare-page1' => 'Биринчи барак',
 'compare-page2' => 'Экинчи барак',
 'compare-rev1' => 'Биринчи версия',
index 3900b58..ba2c0cc 100644 (file)
@@ -78,7 +78,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Paginae_veterrimae' ),
        'Blankpage'                 => array( 'Pagina_vacua' ),
        'Block'                     => array( 'Usorem_obstruere' ),
-       'Blockme'                   => array( 'Usor_obstructus' ),
        'Booksources'               => array( 'Librorum_fontes' ),
        'BrokenRedirects'           => array( 'Redirectiones_fractae' ),
        'Categories'                => array( 'Categoriae' ),
@@ -88,9 +87,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Rationem_creare' ),
        'Deadendpages'              => array( 'Paginae_sine_nexu' ),
        'DeletedContributions'      => array( 'Conlationes_deletae', 'Conlationes_usoris_deletae' ),
-       'Disambiguations'           => array( 'Paginae_disambiguationis', 'Disambiguationes' ),
        'DoubleRedirects'           => array( 'Redirectiones_duplices' ),
        'Emailuser'                 => array( 'Litteras_electronicas_usori_mittere', 'Littera_electronica' ),
+       'ExpandTemplates'           => array( 'Formulas_resolvere' ),
        'Export'                    => array( 'Exportare', 'Paginas_exportare' ),
        'Fewestrevisions'           => array( 'Paginae_minime_mutatae' ),
        'FileDuplicateSearch'       => array( 'Quaerere_fasciculos_duplices', 'Quaerere_imagines_duplices' ),
@@ -184,7 +183,6 @@ $messages = array(
 'tog-minordefault' => 'Notare omnes recensiones quasi minores',
 'tog-previewontop' => 'Monstrare praevisum ante capsam recensiti, non post ipsam',
 'tog-previewonfirst' => 'Praevisum monstrare recensione incipiente',
-'tog-nocache' => 'Sistere paginas apothecare',
 'tog-enotifwatchlistpages' => 'Mittere mihi litteras electronicas si pagina a me custodita vel fasciculus a me custoditus mutatur',
 'tog-enotifusertalkpages' => 'Mittere mihi litteras electronicas si mea disputatio mutatur',
 'tog-enotifminoredits' => 'Mittere mihi litteras electronicas etiam pro recensionibus minoribus',
@@ -310,7 +308,6 @@ $messages = array(
 'qbedit' => 'Recensere',
 'qbpageoptions' => 'Optiones paginae',
 'qbmyoptions' => 'Paginae meae',
-'qbspecialpages' => 'Paginae speciales',
 'faq' => 'Quaestiones frequentes',
 'faqpage' => 'Project:Quaestiones frequentes',
 
@@ -485,9 +482,6 @@ Fortasse usor alius iam deleverat.',
 'cannotdelete-title' => 'Paginam "$1" delere non contigit',
 'badtitle' => 'Titulus malus',
 'badtitletext' => 'Nomen paginae quaestae fuit invalidum, vacuum, aut praeverbium interlingualem vel intervicialem habuit. Fortasse insunt una aut plus litterarum quae in titulis non possunt inscribier.',
-'wrong_wfQuery_params' => 'Parametri incorrectae pro wfQuery()<br />
-Functio: $1<br />
-Inquisitio: $2',
 'viewsource' => 'Fontem inspicere',
 'viewsource-title' => 'Fontem paginae $1 inspicere',
 'actionthrottled' => 'Actio strangulata',
@@ -603,7 +597,7 @@ Hunc nuntium ignorare potes, si nolis hac ratione uti.',
 'loginlanguagelabel' => 'Lingua: $1',
 
 # Change password dialog
-'resetpass' => 'Tesseram mutare',
+'changepassword' => 'Tesseram mutare',
 'resetpass_header' => 'Tesseram rationis mutare',
 'oldpassword' => 'Tessera vetus:',
 'newpassword' => 'Tessera nova:',
@@ -760,6 +754,7 @@ Hamus nullam causam dedit.',
 Haec pagina deleta esse videtur.',
 'edit-conflict' => 'Contentio recensionis.',
 'edit-no-change' => 'Recensio tua non servata est, quia contenta paginae non mutavisti.',
+'postedit-confirmation' => 'Recensio tua servata est.',
 'edit-already-exists' => 'Non potui paginam novam creare
 quia haec pagina iam est.',
 
@@ -817,8 +812,6 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'rev-showdeleted' => 'monstrare',
 'revisiondelete' => 'Emendationem delere',
 'revdelete-nooldid-title' => 'Emendatio-scopus invalida',
-'revdelete-nologtype-title' => 'Nullus typus actorum datus',
-'revdelete-nologid-title' => 'Perscriptio actorum invalida',
 'revdelete-show-file-submit' => 'Sic',
 'revdelete-selected' => "'''{{PLURAL:$2|Emendatio selecta|Emendationes selectae}} paginae [[:$1]]:'''",
 'revdelete-legend' => 'Modificare cohibitiones visibilitatis',
@@ -831,8 +824,6 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'revdelete-radio-unset' => 'Visibiles/visibilia',
 'revdelete-log' => 'Causa:',
 'revdel-restore' => 'visibilitatem mutare',
-'revdel-restore-deleted' => 'Recensiones deletae',
-'revdel-restore-visible' => 'Recensiones visibiles',
 'pagehist' => 'Historia paginae',
 'deletedhist' => 'Historia deleta',
 'revdelete-otherreason' => 'Causa alia vel explicatio:',
@@ -872,11 +863,7 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 # Search results
 'searchresults' => 'Eventum investigationis',
 'searchresults-title' => 'Responsa de "$1"',
-'searchresulttext' => 'Pro plurimis nuntiis de investigatione in {{grammar:ablative|{{SITENAME}}}}, vide [[{{MediaWiki:Helppage}}|{{MediaWiki:Help}}]].',
-'searchsubtitle' => 'Quaesitum est \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|omnes paginae quarum titulus incipit litteris "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|omnes paginae quae ad "$1" nectunt]])',
-'searchsubtitleinvalid' => 'Pro investigatione "$1"',
 'titlematches' => 'Exaequata indicibus rerum',
-'notitlematches' => 'Nulla exaequata',
 'textmatches' => 'Textus paginarum adaequat',
 'notextmatches' => 'Nihil verbis quaesitis congruit',
 'prevn' => '{{PLURAL:$1|$1}} superiores',
@@ -885,7 +872,6 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'nextn-title' => '{{PLURAL:$1|Eventus proximus|Eventus proximi}} $1',
 'shown-title' => 'Monstrare $1 {{PLURAL:$1|eventum|eventus}} per paginam',
 'viewprevnext' => 'Videre ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Optiones',
 'searchmenu-exists' => "'''Iam est pagina \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Creare paginam \"[[:\$1]]\"'''",
 'searchprofile-articles' => 'Paginae contentorum',
@@ -907,20 +893,15 @@ Titulus: '''({{int:cur}})''' = dissimilis ab emendatione novissima,
 'search-interwiki-default' => '$1 eventus:',
 'search-interwiki-more' => '(plus)',
 'search-relatedarticle' => 'Relata',
-'mwsuggest-disable' => 'Prohibere suggestiones AJAX',
 'searcheverything-enable' => 'Quaerere in omnibus spatiis nominalibus',
 'searchrelated' => 'relata',
 'searchall' => 'omnia',
 'showingresults' => "Subter monstrans {{PLURAL:$1|'''1''' eventu|'''$1''' eventibus}} tenus incipiens ab #'''$2'''.",
 'showingresultsnum' => "Subter monstrans {{PLURAL:$3|'''1''' eventum|'''$3''' eventus}} incipiens ab #'''$2'''.",
-'nonefound' => "'''Adnotatio''': Solum aliquae spatia nominalia quaesita sunt semper.
-Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (paginas, formulas et cetera) vel utere spatio nominali desiderato quasi praefixo.",
 'search-nonefound' => 'Nullae paginae quaesitionem tuam adaequant.',
-'powersearch' => 'Quaerere callidissime',
 'powersearch-legend' => 'Quaerere callidissime',
 'powersearch-ns' => 'Quaerere in spatiis nominalibus:',
 'powersearch-redir' => 'Monstrare redirectiones',
-'powersearch-field' => 'Quaerere',
 'powersearch-togglelabel' => 'Selegere:',
 'powersearch-toggleall' => 'Omnia',
 'powersearch-togglenone' => 'Nullum',
@@ -932,7 +913,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
 'preferences' => 'Praeferentiae',
 'mypreferences' => 'Praeferentiae',
 'prefs-edits' => 'Numerus recensionum:',
-'changepassword' => 'Tesseram mutare',
 'prefs-skin' => 'Aspectum',
 'skin-preview' => 'Praevisum',
 'datedefault' => 'Nullum praeferentiae',
@@ -951,19 +931,16 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
 'prefs-email' => 'Optiones inscriptionis electronicae',
 'prefs-rendering' => 'Conspectus',
 'saveprefs' => 'Servare praeferentias',
-'resetprefs' => 'Reddere praeferentias',
 'prefs-editing' => 'Mensura capsae verbi',
 'rows' => 'Lineae:',
 'columns' => 'Columnae:',
 'searchresultshead' => 'Figuratio eventorum investigationis',
-'resultsperpage' => 'Eventus per paginam:',
 'recentchangesdays' => 'Quot dies in nuper mutatis monstrandi:',
 'recentchangescount' => 'Quantum rerum in nuper mutatis, historiis et actis:',
 'savedprefs' => 'Praeferentiae tuae servatae sunt.',
 'timezonelegend' => 'Zona temporis:',
 'localtime' => 'Hora indigena:',
 'timezoneuseoffset' => 'Alia (da dissimilitudinem cinguli horae)',
-'timezoneoffset' => 'Dissimilitudo cinguli horae¹:',
 'servertime' => 'Hora moderatri:',
 'guesstimezone' => 'Hora ex navigatro scribere',
 'timezoneregion-africa' => 'Africa',
@@ -1142,10 +1119,10 @@ Si vis id dare, opera tua tibi ascribentur.',
 'recentchanges-feed-description' => 'Nuper mutata Viciae hoc in fluxu observare.',
 'recentchanges-label-newpage' => 'Haec recensio paginam novam creavit',
 'recentchanges-label-minor' => 'Haec est recensio minor',
-'recentchanges-label-bot' => 'Hanc emendationem automaton fecit',
+'recentchanges-label-bot' => 'Hanc recensionem automaton fecit',
 'recentchanges-label-unpatrolled' => 'Haec recensio nondum est examinata',
+'recentchanges-label-plusminus' => 'Magnitudo paginae per istam copiam octetorum mutata est',
 'recentchanges-legend-newpage' => '(vide etiam [[Special:NewPages|indicem paginarum novarum]])',
-'rcnote' => "Subter {{PLURAL:$1|est '''1''' nuper mutatum|sunt '''$1''' nuperrime mutata}} in {{PLURAL:$2|die proximo|'''$2''' diebus proximis}} ex $5, $4.",
 'rcnotefrom' => "Subter sunt '''$1''' nuperrime mutata in proxima '''$2''' die.",
 'rclistfrom' => 'Monstrare mutata nova incipiens ab $1',
 'rcshowhideminor' => '$1 recensiones minores',
@@ -1401,9 +1378,7 @@ Fortasse [$2 paginam descriptionis fasciculi] ibi sitam recensere vis.',
 'protectedpages' => 'Paginae protectae',
 'protectedpages-indef' => 'Solum protectiones infinitas',
 'protectedpages-cascade' => 'Solum protectiones defluentes quasi cataracta',
-'protectedpagestext' => 'Paginae sequentes protectae sunt a movendo ac recensendo',
 'protectedtitles' => 'Tituli protecti',
-'protectedtitlestext' => 'Hi tituli protecti sunt ne creentur paginae',
 'listusers' => 'Usores',
 'listusers-editsonly' => 'Monstrare solum usores qui recensuerunt',
 'listusers-creationsort' => 'Ordinare secundum diem creationis rationis',
@@ -1443,9 +1418,6 @@ Adspectum graciliorem potes facere modum indicum, nomen usoris (cave litteras ma
 'allpagesto' => 'Monstrare paginas usque ad:',
 'allarticles' => 'Omnes paginae',
 'allinnamespace' => 'Omnes paginae (in spatio nominali $1)',
-'allnotinnamespace' => 'Omnes paginae (quibus in spatio nominali $1 exclusis)',
-'allpagesprev' => 'Superior',
-'allpagesnext' => 'Proxima',
 'allpagessubmit' => 'Adhibere',
 'allpagesprefix' => 'Monstrare paginas quibus est praeverbium:',
 'allpagesbadtitle' => 'Nomen paginae datum fuit invalidum aut praverbium interlinguale vel interviciale habuit. Fortasse insunt una aut plus litterarum quae in titulis non possunt inscribier.',
@@ -1699,7 +1671,6 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
 'undeletebtn' => 'Restituere',
 'undeletelink' => 'inspicere/restituere',
 'undeleteviewlink' => 'inspicere',
-'undeletereset' => 'Reperscriptare',
 'undeleteinvert' => 'Selectionem invertere',
 'undeletecomment' => 'Causa:',
 'undeletedrevisions' => '{{PLURAL:$1|1 emendatio recuperata|$1 emendationes recuperatae}}',
@@ -1770,7 +1741,6 @@ Rationem certam subscribe (exempli gratia titulos paginarum quas iste usor modo
 'ipadressorusername' => 'Locus IP aut nomen usoris:',
 'ipbexpiry' => 'Exitus:',
 'ipbreason' => 'Causa:',
-'ipbreasonotherlist' => 'Causa alia',
 'ipbreason-dropdown' => '*Rationes crebriter adductae
 ** Ob scripta falsa
 ** Ob textum remotum
@@ -1784,8 +1754,6 @@ Rationem certam subscribe (exempli gratia titulos paginarum quas iste usor modo
 'ipbsubmit' => 'Obstruere hunc locum',
 'ipbother' => 'Exitus alius:',
 'ipboptions' => '2 horas:2 hours,1 diem:1 day,3 dies:3 days,1 hebdomadem:1 week,2 hebdomades:2 weeks,1 mensem:1 month,3 menses:3 months,6 menses:6 months,1 annum:1 year,infinite:infinite',
-'ipbotheroption' => 'alius',
-'ipbotherreason' => 'Causa alia vel explicatio:',
 'ipbwatchuser' => 'Paginam usoris disputationisque huius usoris custodire',
 'ipb-change-block' => 'Obstructionem usoris modificare',
 'badipaddress' => 'Locus IP male formatus',
@@ -1836,7 +1804,6 @@ Commodule notatio obstructionum subter datur.',
 'ipb-needreblock' => '$1 iam obstructus est. Visne obstructionem modificare?',
 'ip_range_invalid' => 'Latitudo IP irrita.',
 'proxyblocker' => 'Instrumentum obstructionis moderatorum',
-'cant-block-while-blocked' => 'Dum obstructus es, non potes usores alios obstruere.',
 
 # Developer tools
 'lockdb' => 'Basem datorum obstruere',
@@ -1876,7 +1843,6 @@ adfirma te consequentias intellegere antequam procedis.",
 Ergo manu necesse disputationes motare vel contribuere erit, si vis.",
 'movearticle' => 'Paginam movere:',
 'moveuserpage-warning' => "'''Monitio:''' Si paginam usoris moves, solum pagina movetur, usor '''non''' renominatur.",
-'movenologin' => 'Conventum non est apertum',
 'movenologintext' => 'Rationem usoris habere et [[Special:UserLogin|conventum aperire]] debes ad movendum paginam.',
 'movenotallowed' => 'Tibi non licet paginas movere.',
 'movenotallowedfile' => 'Tibi non licet fasciculos movere.',
@@ -1892,8 +1858,6 @@ Ergo manu necesse disputationes motare vel contribuere erit, si vis.",
 'articleexists' => 'Pagina huius tituli iam est, aut invalidum est nomen electum.
 Quaesumus, titulum alterum elige.',
 'cantmove-titleprotected' => 'Tibi non licet paginam ad hunc titulum movere, quia hic titulus protectus est ne creetur',
-'talkexists' => "'''Pagina prospere mota est, sed pagina disputationis not moveri potuit quia iam est pagina disputationis sub titulo novo. Disputationes recensendo iunge.'''",
-'movedto' => 'mota ad',
 'movetalk' => 'Movere etiam paginam disputationis',
 'move-subpages' => 'Movere subpaginas (tenus $1)',
 'move-talk-subpages' => 'Movere subpaginas paginae disputationis (tenus $1)',
@@ -2289,10 +2253,6 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
 'exif-gpsdirection-t' => 'Directio vera',
 'exif-gpsdirection-m' => 'Directio magnetica',
 
-# External editor support
-'edit-externally' => 'Hunc fasciculum in programmate externali recensere',
-'edit-externally-help' => '(Vide et [https://www.mediawiki.org/wiki/Manual:External_editors paginas adiutorias] programmatis externalis)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'omnes',
 'namespacesall' => 'omnia',
@@ -2313,7 +2273,6 @@ Nuntius reddidit: $1',
 'confirmemail_success' => 'Tua inscriptio electronica adfirmata est.
 Libenter [[Special:UserLogin|conventum aperias]] utarisque {{grammar:ablative|{{SITENAME}}}}.',
 'confirmemail_loggedin' => 'Inscriptio tua electronica iam adfirmata est.',
-'confirmemail_error' => 'Aliquid erravit quando adfirmationem tuam servabamus.',
 'confirmemail_subject' => '{{SITENAME}} - Adfirmatio inscriptionis electronicae',
 'confirmemail_body' => 'Aliquis (probabiliter tu, ex loco IP $1)
 rationem "$2" creavit sub hac inscriptione electronica apud {{grammar:accusative|{{SITENAME}}}}.
@@ -2400,7 +2359,7 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
 'version-parser-function-hooks' => 'Extensiones functionum programmatis analysis lexicalis',
 'version-hook-name' => 'Nomen extensionis',
 'version-hook-subscribedby' => 'Subscriptum ab',
-'version-version' => '(Versio $1)',
+'version-version' => '($1)',
 'version-license' => 'Permissio',
 'version-software-product' => 'Productum',
 'version-software-version' => 'Versio',
index 15f65ae..76c998e 100644 (file)
@@ -10,6 +10,7 @@
  * @author ILVI
  * @author Jewbask
  * @author Maor X
+ * @author Menachem.Moreira
  * @author Remember the dot
  * @author Runningfridgesrule
  * @author Taichi
@@ -80,7 +81,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'HojasViejas' ),
        'Blankpage'                 => array( 'VaziarHoja' ),
        'Block'                     => array( 'Bloquear' ),
-       'Blockme'                   => array( 'Bloquearme' ),
        'Booksources'               => array( 'FuentesDeLivros' ),
        'BrokenRedirects'           => array( 'DireksionesBozeadas' ),
        'Categories'                => array( 'Katēggorías' ),
@@ -91,10 +91,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'KrîarCuento' ),
        'Deadendpages'              => array( 'HojasSinAtamientos' ),
        'DeletedContributions'      => array( 'AjustamientosEfassados' ),
-       'Disambiguations'           => array( 'Apartamiento_de_senso' ),
        'DoubleRedirects'           => array( 'DireksionesDobles' ),
        'EditWatchlist'             => array( 'TrocarLista_de_Akavidamiento' ),
        'Emailuser'                 => array( 'MandarLetralUsador' ),
+       'ExpandTemplates'           => array( 'AlargarXabblones' ),
        'Export'                    => array( 'AktarearAfuera' ),
        'Fewestrevisions'           => array( 'MankoEddisyones' ),
        'FileDuplicateSearch'       => array( 'BuscarDosyasDobles' ),
@@ -184,34 +184,33 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Suliñar los atamientos:',
 'tog-justify' => 'Arrimar los paraggrafos de dos vandas',
-'tog-hideminor' => 'Esconder los trocamientos chiquiticos en la hoja de los "trocamientos freskos"',
+'tog-hideminor' => 'Esconder los trocamientos chikos en la hoja de los "trocamientos freskos"',
 'tog-hidepatrolled' => 'Esconder los trocamientos surveyados en la hoja de los "trocamientos freskos"',
 'tog-newpageshidepatrolled' => 'Esconder las hojas surveyadas de la lista de las hojas muevas',
 'tog-extendwatchlist' => 'Anchar mi lista de akavidamiento afín de àmostrar todos los trocamientos, no sólo los muevos',
-'tog-usenewrc' => 'Usar el modo adelantado (JavaScript es menester)',
-'tog-numberheadings' => 'Numerotar otomatika mente los títůlos de los kapítůlos',
-'tog-showtoolbar' => 'Àmostrar el chibuk de aparatos (JavaScript es menester)',
-'tog-editondblclick' => 'Trocar las hojas con doble klik (JavaScript es menester)',
+'tog-usenewrc' => 'Agrupar kambios por pajinas en kambios resiente y lista',
+'tog-numberheadings' => 'Numerotar otomatika mente los títolos de los kapítolos',
+'tog-showtoolbar' => 'Amostrar el chibuk de aparatos',
+'tog-editondblclick' => 'Trocar las hojas con doble klik',
 'tog-editsection' => 'Ofrir la possibilidad de trocar los kapítůlos con el atamiento [trocar]',
-'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo (JavaScript es menester)',
+'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo',
 'tog-showtoc' => 'Àmostrar el cuadro de contènidos (para las hojas que tienen más de 3 títůlos de capítůlo)',
 'tog-rememberpassword' => 'Acordarse de mi entrada en este navigador (a lo más muńcho $1 {{PLURAL:$1|día|días}})',
-'tog-watchcreations' => 'Akavidar las hojas que crîo',
-'tog-watchdefault' => 'Akavidar las hojas que troco',
-'tog-watchmoves' => 'Akavidar las hojas que taxireo',
-'tog-watchdeletion' => 'Akavidar las hojas que efasso',
+'tog-watchcreations' => 'Anyadir lad pajinas ke kree i archivos ke karge a mi lista',
+'tog-watchdefault' => 'Anyadir pajinas i archivos ke edite a mi lista',
+'tog-watchmoves' => 'Anyadir pajinas i archivo ke move a mi lista',
+'tog-watchdeletion' => 'Anyadir pajinas i archivos que efasso a mi lista',
 'tog-minordefault' => 'Yir marcando todos los trocamientos como chiquiticos',
 'tog-previewontop' => 'Àmostar el previsteo enriva del cuadro de trocamiento',
 'tog-previewonfirst' => 'Àmostar el previsteo al primer trocamiento',
-'tog-nocache' => 'Desaktivar la kaxé de las hojas del navigador',
-'tog-enotifwatchlistpages' => 'Cada vez que y ay un trocamiento en una hoja que está en mi lista de akavidamiento, mándame una letral (e-mail)',
+'tog-enotifwatchlistpages' => 'Embiame un korreo elektroniko kuando una pajina o archivo kambia en mi lista',
 'tog-enotifusertalkpages' => 'Cuando y ay un trocamineto en mi hoja de diskusyón, mándame una letral (e-mail)',
-'tog-enotifminoredits' => 'I para los trocamientos chiquiticos de las hojas, mándame una letral (e-mail)',
+'tog-enotifminoredits' => 'Tambien embiame un korreo elektroniko para los trocamientos chiquiticos de pajnas i archivos',
 'tog-enotifrevealaddr' => 'En las letrales de avizo, amóstrame á mi el adresso de letral mío',
 'tog-shownumberswatching' => 'Àmostrar el kadhar de usadores que están akavidando las hojas',
 'tog-oldsig' => 'La firma presente',
 'tog-fancysig' => 'Tratar la firma como un vikiteksto (sin un atamiento otomatiko)',
-'tog-uselivepreview' => 'Usar el "previsteo bivo" (JavaScript es menester) (eksperimental)',
+'tog-uselivepreview' => 'Usar el "previsteo bivo" (eksperimental)',
 'tog-forceeditsummary' => 'Avizarme cuando dexo el somaryo vazío',
 'tog-watchlisthideown' => 'Esconder mis trocamientos en mi lista de akavidamiento',
 'tog-watchlisthidebots' => 'Esconder trocamientos de bot en mi lista de akavidamiento',
@@ -223,10 +222,12 @@ $messages = array(
 'tog-diffonly' => 'No amostrar el contenido de la hoja debaxo las diffes (diferencias entre los trocamientos)',
 'tog-showhiddencats' => 'Amostrar las katēggorías escondidas',
 'tog-norollbackdiff' => 'No amostrar la diff doeśpués de aboltar',
+'tog-useeditwarning' => 'Avirteme kuando desho la pajina sin guardar los kambios',
+'tog-prefershttps' => 'Siempre uza un koneksyon segura kuando entra al sistema',
 
 'underline-always' => 'Siempre',
 'underline-never' => 'Nunca',
-'underline-default' => 'Que dessidde el navigador',
+'underline-default' => 'Aspekto o opsyon prederminada del navegador',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'Modo de tipografía de la rējión de trocamiento',
@@ -236,24 +237,24 @@ $messages = array(
 'editfont-serif' => 'Tipografía serif',
 
 # Dates
-'sunday' => 'Aljhad',
+'sunday' => 'Alkhad',
 'monday' => 'Lunes',
 'tuesday' => 'Martes',
 'wednesday' => 'Miércoles',
 'thursday' => 'Juğeves',
 'friday' => 'Viernes',
 'saturday' => 'Shabbath',
-'sun' => 'Aljh',
+'sun' => 'Alkh',
 'mon' => 'Lun',
 'tue' => 'Mar',
 'wed' => 'Mie',
 'thu' => 'Juğ',
 'fri' => 'Vie',
 'sat' => 'Shab',
-'january' => 'Enero',
+'january' => 'Jenero',
 'february' => 'Hevrero',
 'march' => 'Março',
-'april' => 'Abril',
+'april' => 'Avril',
 'may_long' => 'Mayo',
 'june' => 'Juño',
 'july' => 'Jullo',
@@ -262,10 +263,10 @@ $messages = array(
 'october' => 'Ochòvre',
 'november' => 'Noviembre',
 'december' => 'Deziembre',
-'january-gen' => 'Enero',
+'january-gen' => 'Jenero',
 'february-gen' => 'Hevrero',
 'march-gen' => 'Março',
-'april-gen' => 'Abril',
+'april-gen' => 'Avril',
 'may-gen' => 'Mayo',
 'june-gen' => 'Juño',
 'july-gen' => 'Jullo',
@@ -274,10 +275,10 @@ $messages = array(
 'october-gen' => 'Ochòvre',
 'november-gen' => 'Noviembre',
 'december-gen' => 'Deziembre',
-'jan' => 'Ene',
+'jan' => 'Jen',
 'feb' => 'Hev',
 'mar' => 'Mar',
-'apr' => 'Abr',
+'apr' => 'Avr',
 'may' => 'May',
 'jun' => 'Juñ',
 'jul' => 'Jull',
@@ -286,14 +287,26 @@ $messages = array(
 'oct' => 'Och',
 'nov' => 'Nov',
 'dec' => 'Dez',
+'january-date' => 'Jenero $1',
+'february-date' => 'Fevrero $1',
+'march-date' => 'Marso $1',
+'april-date' => 'Avril $1',
+'may-date' => 'Mayo $1',
+'june-date' => 'Junio $1',
+'july-date' => 'Djulio $1',
+'august-date' => 'Agosto $1',
+'september-date' => 'Sietembre $1',
+'october-date' => 'Oktubre $1',
+'november-date' => 'Noviembre $1',
+'december-date' => 'Disiembre $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kateggoría|Kateggorías}}',
-'category_header' => 'Artíkolos en la kateggoría "$1"',
-'subcategories' => 'Sòkateggorías',
-'category-media-header' => 'Arxivos de multimedya en la kateggoría "$1"',
-'category-empty' => "''Esta katēggoría oy día, no contiene ni artícůlos ni arxivos de multimedya''",
-'hidden-categories' => '{{PLURAL:$1|Kateggoría escondida|Kateggorías escondidas}}',
+'pagecategories' => '{{PLURAL:$1|Kategoría|Kategorías}}',
+'category_header' => 'Artíkolos en la kategoría "$1"',
+'subcategories' => 'Sòkategorías',
+'category-media-header' => 'Dosyas de multimedya en la kategoría "$1"',
+'category-empty' => "''Esta kategoría oy día, no contiene ni hojas ni dosyas de multimedya''",
+'hidden-categories' => '{{PLURAL:$1|Kategoría escondida|Kategorías escondidas}}',
 'hidden-category-category' => 'Katēggorías escondidas',
 'category-subcat-count' => '{{PLURAL:$2|Esta katēggoría contiene sólo una baxo-katēggoría:|Esta katēggoría contiene {{PLURAL:$1|esta baxo-katēggoría aquí abaxo|$1 baxo-katēggorías aquí abaxo}}, de un total de $2 baxo-katēggorías:}}',
 'category-subcat-count-limited' => 'Esta katēggoría contiene {{PLURAL:$1|la baxo-katēggoría venidera|$1 baxo-katēggorías venideras}}.',
@@ -310,12 +323,13 @@ $messages = array(
 'article' => 'Artícůlo de contenido',
 'newwindow' => '(Se avre en una mueva ventana)',
 'cancel' => 'Anular',
-'moredotdotdot' => 'Más...',
-'mypage' => 'Mi hoja',
+'moredotdotdot' => 'Mas...',
+'morenotlisted' => 'Esta lista no esta kompleta',
+'mypage' => 'Hoja',
 'mytalk' => 'Mi diskusyon',
 'anontalk' => 'Diskusyón para este adresso de IP',
 'navigation' => 'Navigación',
-'and' => '&#32;y',
+'and' => '&#32;i',
 
 # Cologne Blue skin
 'qbfind' => 'Topar',
@@ -323,18 +337,17 @@ $messages = array(
 'qbedit' => 'Trocar',
 'qbpageoptions' => 'Esta hoja',
 'qbmyoptions' => 'Mis hojas',
-'qbspecialpages' => 'Hojas especiales',
 'faq' => 'DAD',
 'faqpage' => 'Project:DDS',
 
 # Vector skin
-'vector-action-addsection' => 'Àjustar sujeto',
+'vector-action-addsection' => 'Ajustar sujeto',
 'vector-action-delete' => 'Efassar',
-'vector-action-move' => 'Taxirear',
-'vector-action-protect' => 'Guardar',
+'vector-action-move' => 'Taşirear',
+'vector-action-protect' => 'Guadrar',
 'vector-action-undelete' => 'Traer atrás',
-'vector-action-unprotect' => 'No guardar',
-'vector-simplesearch-preference' => 'Aktivar consejos de búsqueda adelantada (sólo pelejo Vector)',
+'vector-action-unprotect' => 'Trocar proteksyon',
+'vector-simplesearch-preference' => 'Aktivar barra de buskida simplifikada (solamente kon aspekto Vector)',
 'vector-view-create' => 'Criar',
 'vector-view-edit' => 'Trocar',
 'vector-view-history' => 'Ver la istoria',
@@ -344,15 +357,16 @@ $messages = array(
 'namespaces' => 'Espacios de nombres',
 'variants' => 'Formas diferentes',
 
+'navigation-heading' => 'Menu de navigasyon',
 'errorpagetitle' => 'Yerro',
 'returnto' => 'Tornar a $1.',
 'tagline' => 'De {{SITENAME}}',
 'help' => 'Ayudo',
-'search' => 'Busca',
-'searchbutton' => 'Busca',
-'go' => 'Vate',
-'searcharticle' => 'Vate',
-'history' => 'La îstoria de la hoja',
+'search' => 'Buxcar',
+'searchbutton' => 'Buxcar',
+'go' => 'Ir',
+'searcharticle' => 'Ir',
+'history' => 'La istoria de la hoja',
 'history_short' => 'Istoria',
 'updatedmarker' => 'trocado desde mi visita de alcavo',
 'printableversion' => 'Forma apropiada para imprimir',
@@ -362,13 +376,14 @@ $messages = array(
 'edit' => 'Trocar',
 'create' => 'Criar',
 'editthispage' => 'Trocar esta hoja',
-'create-this-page' => 'Crîar esta hoja',
+'create-this-page' => 'Criar esta hoja',
 'delete' => 'Efaçar',
 'deletethispage' => 'Efassar esta hoja',
+'undeletethispage' => 'Restorar esta pajina',
 'undelete_short' => 'Traer atrás $1 {{PLURAL:$1|trocamientos|trocamientos}}',
 'viewdeleted_short' => 'Ver {{PLURAL:$1|un trocamiento efassado|$1 trocamientos efassados}}',
-'protect' => 'Guardar',
-'protect_change' => 'troca el guardadijo',
+'protect' => 'Guadrar',
+'protect_change' => 'trocar el guardadijo',
 'protectthispage' => 'Guardar esta hoja',
 'unprotect' => 'Trocar guardadijo',
 'unprotectthispage' => 'Trocar el guardadijo desta hoja',
@@ -381,7 +396,7 @@ $messages = array(
 'articlepage' => 'Ver el artícůlo de contenido',
 'talk' => 'Diskusyón',
 'views' => 'Vistas',
-'toolbox' => 'Cuadro de aparates',
+'toolbox' => 'Aparatos',
 'userpage' => 'Ver la hoja del usador',
 'projectpage' => 'Ver la hoja del projeto',
 'imagepage' => 'Ver la hoja de la dosya',
@@ -394,19 +409,28 @@ $messages = array(
 'redirectedfrom' => '(Redirigido desde $1)',
 'redirectpagesub' => 'Hoja redirigida',
 'lastmodifiedat' => 'Esta hoja fue trocada por la dal cavo vez el $1, a las $2.',
+'viewcount' => 'Este pajina fue vijitado {{PLURAL:$1|una vez|$1 vezes}}.',
 'protectedpage' => 'Hoja guardada',
-'jumpto' => 'Salta a:',
+'jumpto' => 'Saltar a:',
 'jumptonavigation' => 'navigación',
-'jumptosearch' => 'búsquida',
+'jumptosearch' => 'buxcar',
+'view-pool-error' => 'Diskulpe, los servidores estan sovrekargado en est momento.
+Ay demaziado usuarios estan aprovando a ver esta pajina.
+Aspera un momento antes de aprovar esta pajina de muevo.
+
+$1',
+'pool-timeout' => 'Tiempo de asperar esta asperando por el kandado',
+'pool-queuefull' => 'Kola de lavoro esta yeno',
+'pool-errorunknown' => 'Yerro deskonosido',
 
 # 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).
-'aboutsite' => 'Encima de la {{SITENAME}}',
+'aboutsite' => 'Encima de {{SITENAME}}',
 'aboutpage' => 'Project:Encima de',
-'copyright' => 'El contenido se puede topar debaxo de la <i>$1</i>',
+'copyright' => 'El kontenido se puede topar debasho de la $1 salvo ke indika al kontrario.',
 'copyrightpage' => '{{ns:project}}:Derechos de autor',
 'currentevents' => 'Novedades',
 'currentevents-url' => 'Project:Novedades',
-'disclaimers' => 'Refuso de responsabilitá',
+'disclaimers' => 'Refuzo de responsabilitá',
 'disclaimerpage' => 'Project:Refuso de responsabilitá jeneral',
 'edithelp' => '¿Cómo se la troca?',
 'helppage' => 'Help:Contènidos',
@@ -415,17 +439,26 @@ $messages = array(
 'policy-url' => 'Project:Politikas',
 'portal' => 'Portal de la komunitá',
 'portal-url' => 'Project:Portal de la komunitá',
-'privacy' => 'Principio de particòlaridad',
+'privacy' => 'Prencipio de partikolaridad',
 'privacypage' => 'Project:Principio de particòlaridad',
 
 'badaccess' => 'Yerro de permissión',
+'badaccess-group0' => 'No estas autorizado a egzekutir el aksyon que a demandado.',
+'badaccess-groups' => 'El aksyon ke a demandado esta limitado a los usuarios ke estan en {{PLURAL:$2|el grupo|uno de los grupos}}: $1',
+
+'versionrequired' => 'Se nesesite la versyon $1 de MediaWiki',
+'versionrequiredtext' => 'Se nesesita versyon $1 de MediaWiki para uzar este pajina. Ver [[Special:Version|La pajina de versyon]].',
 
 'ok' => 'DE ACORDDO',
 'retrievedfrom' => 'Acòjido del adhresso "$1"',
-'youhavenewmessages' => 'Tienes $1 ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|Tienes}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Tiene}} $1 de {{PLURAL:$3|otro usuario|$3 usuarios}}($2).',
+'youhavenewmessagesmanyusers' => 'Tiene $1 de munchos usuarios ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|un muevo mesaje|999=mesajes muevos}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|ulitmo kambio|999=ultimos kambios}}',
 'youhavenewmessagesmulti' => 'Tienes messajes nuevos en $1',
-'editsection' => 'troca',
-'editold' => 'troca',
+'editsection' => 'trocar',
+'editold' => 'trocar',
 'viewsourceold' => 'Ver su manadero',
 'editlink' => 'trocar',
 'viewsourcelink' => 'ver su manadero',
@@ -433,102 +466,215 @@ $messages = array(
 'toc' => 'Contènidos',
 'showtoc' => 'Amostrar',
 'hidetoc' => 'esconder',
+'collapsible-collapse' => 'Eskonder',
+'collapsible-expand' => 'Revelar',
 'thisisdeleted' => 'Ver o restorar $1?',
 'viewdeleted' => 'Desea ver $1?',
+'restorelink' => '{{PLURAL:$1|un edisyon efasada|$1 edisyones efasadas}}',
+'feedlinks' => 'Kanal:',
+'feed-invalid' => 'Tipo de kanal de subskripsyon es invalido.',
+'feed-unavailable' => 'Kanales de subskripsyon no estan disponibles',
 'site-rss-feed' => 'Fuente de RSS de $1',
-'site-atom-feed' => 'Alimentela de Atom de $1',
+'site-atom-feed' => 'Kanal Atom de $1',
 'page-rss-feed' => '"$1" Fuente RSS',
 'page-atom-feed' => '"$1" Subscripción Atom',
-'red-link-title' => '$1 (esta hoja no egziste)',
+'red-link-title' => '$1 (la hoja no egziste)',
+'sort-descending' => 'Atakanar en orden desendente',
+'sort-ascending' => 'Atakanar en orden asendente',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Hoja',
-'nstab-user' => 'Hoja de empleador',
+'nstab-user' => 'Hoja de kullaneador',
 'nstab-media' => 'Hoja de Meddia',
 'nstab-special' => 'Hoja especial',
 'nstab-project' => 'Hoja del proyecto',
 'nstab-image' => 'Dosya',
 'nstab-mediawiki' => 'Messaj',
-'nstab-template' => 'Xablón',
+'nstab-template' => 'Şablón',
 'nstab-help' => 'Ayudo',
-'nstab-category' => 'Kateggoría',
+'nstab-category' => 'Kategoría',
 
 # Main script and global functions
+'nosuchaction' => 'No egziste esa aksyon',
+'nosuchactiontext' => 'La aksyon espesefikada por el URL es invalido.
+Es posivle ke el URL fue eskrito mal, o ke segite un enlase inkorrecto.
+Tambiem puede indikar un yerro en la programa uzado por {{SITENAME}}.',
 'nosuchspecialpage' => 'No ay tala hoja especial',
+'nospecialpagetext' => '<strong>Demandaste una pajina espesial invalida.</strong>
+
+Puede topar una lista de pajinas espesiales validas en[[Special:SpecialPages|{{int:specialpages}}]].',
 
 # General errors
 'error' => 'Yerro',
 'databaseerror' => 'Yerro de la Databasa',
+'databaseerror-text' => 'Afito un yerro en la demanda del base de data.
+Esto puede indikar un yerro en la programa.',
+'databaseerror-textcl' => 'Afito un yerro en la demanda del base de data.',
+'databaseerror-query' => 'Demanda: $1',
+'databaseerror-function' => 'Fonksyon: $1',
+'databaseerror-error' => 'Yerro: $1',
+'laggedslavemode' => "'''Aviso:''' Puede ke la pajina no kontiene las aktualizasyones mas resientes.",
+'readonly' => 'Base de datos blokeada',
+'enterlockreason' => 'Eskrive un razon por el blokeo,incluyendo un estimasyon de kuando libera el blokeo',
+'readonlytext' => 'La base de datos esta blokeada a muevas entradas i otras modifikasyones,probablemente para mantenemento rutinas, Kuando akava se enkontra dispozible.
+
+El administrador ke blokeo dio esta esplikasyon: $1',
 'missing-article' => 'La basa de dados no topó el teksto de la hoja llamada "$1" $2.
 
-En lo mas muncho, esto se cavsa de un "dif" anakróniko ou de un atamiento a la istoria de una hoja que se efaçó.
+En lo mas muncho, esto se cavsa de un "dif" anakróniko u de un atamiento de la istoria de una hoja que se efaçó.
 
 Si esto no es el cavso, puede ser que topates una chincha en el lojikal.
-Si puede ser mete un [[Special:ListUsers/sysop|administrador]] en corriente y también anota la URL.',
+Alora, avisa un [[Special:ListUsers/sysop|administrador]] si puede ser, también escriviéndolo la URL.',
 'missingarticle-rev' => '(nº. de revisión: $1)',
 'missingarticle-diff' => '(Dif.: $1, $2)',
+'readonly_lag' => 'La base de datos se a blokeado mientres los servidores se sinkronizan',
+'internalerror' => 'Yerro enterno',
+'internalerror_info' => 'Yerro enterno: $1',
+'fileappenderrorread' => 'No se pudo meldar "$1" durante enkashyon.',
+'fileappenderror' => 'No se pudo enkashar "$1" a "$2".',
 'filecopyerror' => 'No se pudo copiar el arxiv "$1" a "$2".',
-'badtitle' => 'Titolo malo',
+'filerenameerror' => 'No se pudo renombrar archivo "$1" a "$2".',
+'filedeleteerror' => 'No se pudo efasar archivo "$1".',
+'directorycreateerror' => 'No se pudo krear direktorio "$1".',
+'filenotfound' => 'No se pudo topar archivo "$1".',
+'fileexistserror' => 'No se pudo eskrivir al archivo "$1": Archivo ya egziste.',
+'unexpected' => 'Valor enasperado: "$1"="$2".',
+'formerror' => 'Yerro: No se pudo embiar fomulario.',
+'badarticleerror' => 'No se puede azer esta aksyon en este pajina.',
+'cannotdelete' => 'No pudo efasar esta pajina o archivo "$1".
+Puede ser ke ya a efasado otra persona.',
+'cannotdelete-title' => 'No se puede efasar pajina "$1"',
+'delete-hook-aborted' => 'Efasyon fue anulado por "hook".',
+'no-null-revision' => 'No pudo krear la mueva revizyon nula para la pajina "$1"',
+'badtitle' => 'Titolo negro',
 'badtitletext' => 'El título de la hoja demandada está vazío, no es valible, o es un link interlingua o interwiki incorrecto.
 Puede ser que contiene uno o más caracteres que no se pueden usar en los títulos.',
+'perfcached' => 'Los sigiente datos se enkontra en el cache i puede ser ke no esta aktualizada. Un maksimo de {{PLURAL:$1|un resultado esta|$1 resultados estan}} enkontrado en el cache.',
+'perfcachedts' => 'Los sigiente datos se enkontra en el cache, i fue aktualizado $1. Un maksimo de {{PLURAL:$4|un resultado esta|$1 resultados estan}} enkontrado en el cache.',
+'querypage-no-updates' => 'Las aktualizasyones de esta pajina esta desaktivado.
+Las datos no va aktualizar agora.',
 'viewsource' => 'Ver su manadero',
+'viewsource-title' => 'Ver la fuente de $1',
+'actionthrottled' => 'Aksyon limitada',
+'actionthrottledtext' => 'Komo prekosyon kontra el spam, ay un limite de kuanto vezes puede azer este aksyon en poko tiempo, i sovrepasaste este limite.
+Aprovar de muevo en unos minutos.',
+'protectedpagetext' => 'La pajina esta guardado kontra esdisyones i otras aksyones.',
+'viewsourcetext' => 'Puede ver i kopiar la fuente de este pajina:',
+'viewyourtext' => 'Puede ver i kopiar la fuente de "tus edisyones" a esta pajina:',
+'protectedinterface' => 'Esta pajina abastese teksto de la interfaz para la programa de este viki, i es guardado para empedir abuso.
+Para anyadir o kambiar traduksyones para todos los vikis, uza [//translatewiki.net/translatewiki.net], el projecto de lokalizasyon de MediaWiki.',
+'editinginterface' => "'''Aviso:''' Estas editando una pajina uzada para abasteser teksto de la interfaz para la programa.
+Kambios a esta pajina afectara la aparesemiento de la interfaz de usuario para los otros usuarios en este viki.
+Para anyadir o kambiar traduksyones para todos los vikis, uza [//translatewiki.net/translatewiki.net], el projecto de lokalizasyon de MediaWiki.",
+
+# Virus scanner
+'virus-unknownscanner' => 'antivirus deskonosido:',
 
 # Login and logout pages
-'yourname' => 'Su nombre de usuario',
-'yourpassword' => 'Parola',
-'yourpasswordagain' => 'Entra de muevo la parola',
-'remembermypassword' => 'Acórdate de mi entrada de usador en este bilgisayar/orddênador (por un maksimum de {{PLURAL:$1|día|días}})',
+'welcomeuser' => 'Bienvinidos, $1',
+'yourname' => 'Nombre de kullaneador:',
+'userlogin-yourname' => 'Nombre de usuario',
+'userlogin-yourname-ph' => 'Eskrive tu nombre de usuario',
+'createacct-another-username-ph' => 'Eskrive el nombre de usuario',
+'yourpassword' => 'Kóddiche:',
+'userlogin-yourpassword' => 'Kontrasenya',
+'userlogin-yourpassword-ph' => 'Eskriva tu kontrasenya',
+'createacct-yourpassword-ph' => 'Eskriva una kontrasenya',
+'yourpasswordagain' => 'Entra de muevo el kóddiche:',
+'createacct-yourpasswordagain' => 'Konfirme contrasenya',
+'createacct-yourpasswordagain-ph' => 'Eskrive la kontrasenya de muevo',
+'remembermypassword' => 'Acódrate de mi entrada de kullaneador en este navigador (por un maksimum de {{PLURAL:$1|día|días}})',
+'yourdomainname' => 'Tu dominyo:',
+'password-change-forbidden' => 'No se puede kambiar contrasenyas en este viki.',
 'login' => 'Entrar',
-'nav-login-createaccount' => 'Entrar / Criar un cuento',
+'nav-login-createaccount' => 'Entrar / criar un kuento',
 'loginprompt' => 'Kale tener "cookies" aktivadas enel navegador para enrejistrarse en {{SITENAME}}',
-'userlogin' => 'Entrar / Registrarse',
+'userlogin' => 'Entrar / Criar cuento',
 'logout' => 'Salir',
 'userlogout' => 'Salir',
+'userlogin-noaccount' => 'No tiene un kuento?',
+'userlogin-joinproject' => 'Abonar {{SITENAME}}',
 'nologin' => "¿No tienes un cuento? '''$1'''.",
-'nologinlink' => 'Crea un cuento',
-'createaccount' => 'Crea un nuevo cuento',
+'nologinlink' => 'Criar un kuento',
+'createaccount' => 'Criar un cuento',
 'gotaccount' => "¿Ya tienes un cuento? '''$1'''.",
 'gotaccountlink' => 'Entrar',
 'userlogin-resetlink' => 'Olvidates tus detalyos de akseso?',
-'createaccountmail' => 'por una letra electrónica',
-'userexists' => 'El nombre que entrates ya se usa.
-Si puede ser, escoge un otro nombre.',
+'userlogin-resetpassword-link' => 'Olvidaste tu kontrasenya?',
+'userlogin-createanother' => 'Krear otro kuento',
+'createacct-join' => 'Eskrive abasho tu informasyon',
+'createacct-emailrequired' => 'Adreso de korreo elektroniko',
+'createacct-emailoptional' => 'Korreo elektroniko (opsyonal)',
+'createacct-email-ph' => 'Eskrive tu adreso de korreo elektroniko',
+'createacct-another-email-ph' => 'Eskrive el adreso de korreo elektronico',
+'createaccountmail' => 'Uzar una contrasenya temporal y embiarla al korreo elektronico espesificado',
+'createacct-realname' => 'Nombre verdadero (opsyonal)',
+'createaccountreason' => 'Razon:',
+'createacct-reason' => 'Razon',
+'createacct-submit' => 'Krear tu cuento',
+'createacct-another-submit' => 'Krear otro kuento',
+'createacct-benefit-heading' => '{{SITENAME}} es izo por djente komo tu.',
+'createacct-benefit-body1' => '{{PLURAL:$1|edisyon|edisyones}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|pajina|pajinas}}',
+'userexists' => 'El nombre de usuario que eskrivites ya se uza.
+Eskoje un nombre diferente.',
+'createacct-error' => 'Yerro de kreasyon de kuento',
 'createaccounterror' => 'No se pudo crear el cuento: $1',
-'mailmypassword' => 'Embiar una nueva koddiche por e-mail',
+'password-name-match' => 'Tu contrasenya kale ser diferente de tu usuario.',
+'mailmypassword' => 'Restableser kóddiche',
+'mailerror' => 'Falta al embiar korreo: $1',
 'emailconfirmlink' => 'Confirma su adderesso de letra electrónica',
 'accountcreated' => 'Cuento creado',
-'accountcreatedtext' => 'El cuento del usuario para $1 fue creado.',
+'accountcreatedtext' => 'El kuento de usuario para [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) fue kreado.',
 'loginlanguagelabel' => 'Lingua: $1',
 
 # Change password dialog
+'changepassword' => 'Trocar el kóddiche',
+'resetpass_header' => 'Kambiar kontrasenya del kuento',
 'oldpassword' => 'Kóddiche viejo:',
 'newpassword' => 'Kóddiche muevo:',
+'retypenew' => 'Eskrive de muevo la kontrasenya mueva',
+'resetpass_forbidden' => 'No se puede kambiar las kontrasenyas',
+'resetpass-submit-loggedin' => 'Kambiar kontrasenya',
 'resetpass-submit-cancel' => 'Anular',
 
 # Special:PasswordReset
+'passwordreset' => 'Restableser kontrasenya',
+'passwordreset-legend' => 'Restableser kontrasenya',
 'passwordreset-username' => 'Nombre de usador:',
 'passwordreset-domain' => 'Dominio:',
 'passwordreset-email' => 'Adresso de letral:',
+'passwordreset-emailelement' => 'Usuario: $1
+Kontrasenya temporal: $2',
 
 # Special:ChangeEmail
+'changeemail' => 'Kambiar adreso de korreo elektroniko',
+'changeemail-header' => 'Kambiar adreso de korreo elektroniko de kuento',
+'changeemail-oldemail' => 'Adreso de korreo elektroniko aktual:',
+'changeemail-newemail' => 'Muevo adreso de korreo elektroniko:',
+'changeemail-none' => '(dinguno)',
+'changeemail-password' => 'Tu kontrasenya en {{SITENAME}}:',
 'changeemail-submit' => 'Trocar letral',
 'changeemail-cancel' => 'Anular',
 
+# Special:ResetTokens
+'resettokens-token-label' => '$1(valor aktual: $2)',
+
 # Edit page toolbar
-'bold_sample' => 'Teksto gordo',
-'bold_tip' => 'Teksto gordo',
-'italic_sample' => 'Teksto cursivo',
-'italic_tip' => 'Teksto en cursiva',
-'link_sample' => 'Título del link',
+'bold_sample' => 'Teksto reforçado',
+'bold_tip' => 'Teksto reforçado',
+'italic_sample' => 'Teksto aladado',
+'italic_tip' => 'Teksto aladado',
+'link_sample' => 'Títolo del atamiento',
 'link_tip' => 'Link interno',
-'extlink_sample' => 'http://www.example.com Título del link',
+'extlink_sample' => 'http://www.example.com Títolo del atamiento',
 'extlink_tip' => 'Link eksterno (acόrdate de ajustar el prefiks http://)',
-'headline_sample' => 'Escrituria de títůlo',
+'headline_sample' => 'Escritura de títolo',
 'headline_tip' => 'Titular de nivel 2',
 'nowiki_sample' => 'Escribid aquí texto sin formato',
 'nowiki_tip' => 'Iñorar el formato wiki',
 'image_tip' => 'Imagen incorporada',
-'media_tip' => 'Link al arxivo multimedia',
+'media_tip' => 'Atamiento de la dosya',
 'sig_tip' => 'Firma, data i ora',
 'hr_tip' => 'Liña orizontala (úsala de vez en cuando)',
 
@@ -538,7 +684,7 @@ Si puede ser, escoge un otro nombre.',
 'minoredit' => 'Esta es una edición chiquitica',
 'watchthis' => 'Cudia esta hoja',
 'savearticle' => 'Enrejistra la hoja',
-'preview' => 'Previsualizar',
+'preview' => 'Echar una ojada',
 'showpreview' => 'Mostrar la previsualización',
 'showlivepreview' => 'Previsteo bivo',
 'showdiff' => 'Amostrar los trocamientos',
@@ -548,12 +694,13 @@ Tu adresso de IP va ser enrejjistrado en la istoria de la hoja.",
 'blockedtitle' => 'El usador está blokeado',
 'blockednoreason' => 'La razόn no se diό',
 'whitelistedittext' => 'Tienes que $1 para pueder trocar artículos.',
+'nosuchsectiontitle' => 'No se puede topar seksyon',
 'loginreqtitle' => 'Entrar es menester',
 'loginreqlink' => 'entrar',
 'loginreqpagetext' => 'Tienes que $1 para pueder ver otras hojas.',
 'accmailtitle' => 'La kontrasenya ha sido embiada.',
-'accmailtext' => 'La kontrasenya para "$1" se ha embiado a $2.',
-'newarticle' => '(Nuevo)',
+'accmailtext' => "Se a embiado a $2 una kontrasenya jenerado por [[User talk:$1|$1]]. Se puede kambiar en la pajina ''[[Special:ChangePassword|cambiar kontrasenya]]'' al entrar.",
+'newarticle' => '(Muevo)',
 'newarticletext' => 'Arrivates a una hoja que daínda no egziste.
 Para crear esta hoja, empeça a escribir en la caxa de abaxo. Mira [[{{MediaWiki:Helppage}}|la hoja de ayudo]] para saber más.
 Si venites aquí por yerro, torna a la hoja de antes.',
@@ -565,6 +712,7 @@ ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} trocar esta hoja]</span>.',
 Puedes [[Special:Search/{{PAGENAME}}|bushkar este titolo de oja]] en otras pajinas,
 o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bushkar en los rejistros relasyonados]</span>.',
 'userpage-userdoesnotexist-view' => 'El cuento del usador $1 no está enrejistrado.',
+'updated' => '(Aktualizado)',
 'note' => "'''Nota:'''",
 'previewnote' => "¡Akórdate ke esto es sólo una previsualizasion i aínda no se enrejistró!'''
 Los tus trokamientos no se tienen guadrados!",
@@ -574,11 +722,11 @@ Los tus trokamientos no se tienen guadrados!",
 'yourtext' => 'Tu teksto',
 'yourdiff' => 'Diferencias',
 'copyrightwarning' => "Si puede ser, observa que todas las contribuciones a {{SITENAME}} se consideran hechas públicas abaxo la $2 (ver detalyos en $1). Si no queres que la gente endereche tus tekstos escritos sin piadad i los esparta libberamente, alora no los metas aquí. También nos estás asegurando ansí que escribites este teksto tu mismo i sos el dueño de los derechos de autor, o lo copiates desde el dominio público u otra fuente libbero.'''¡QUE N0 USES TEKSTOS ESCRITOS CON COPYRIGHT SIN PERMISSIÓN!'''<br />",
-'templatesused' => '{{PLURAL:$1|El xabblón usado|Los xabblones usados}} en esta hoja:',
+'templatesused' => '{{PLURAL:$1|El şablón usado|Los şablones usados}} en esta hoja:',
 'templatesusedpreview' => '{{PLURAL:$1|El xabblón usado|Los xabblones usados}} en esta vista:',
-'template-protected' => '(guardada)',
-'template-semiprotected' => '(media guardada)',
-'hiddencategories' => 'Esta hoja es un miembro de {{PLURAL:$1|1 kateggoría escondida|$1 kateggorías escondidas}}:',
+'template-protected' => '(guadrada)',
+'template-semiprotected' => '(media guadrada)',
+'hiddencategories' => 'Esta hoja es un miembro de {{PLURAL:$1|1 kategoría escondida|$1 kategorías escondidas}}:',
 'nocreate-loggedin' => 'No tienes el permisso de creas hojas nuevas.',
 'permissionserrorstext-withaction' => 'No tienes el permiso para $2, por las {{PLURAL:$1|razón|razones}} venideras:',
 'recreate-moveddeleted-warn' => "'''Aviso: Estas kriando una oja la kuala fue efassada antes.'''
@@ -586,6 +734,15 @@ Kale ke penses si es menesterozo editar esta oja.
 El enrejistro de efassado i taxireado para esta oja puede ser meldado aki:",
 'moveddeleted-notice' => "Esta ója fue efassada.
 El ''log'' de efassado i taxireado de la ója es amostrado abasho para dar referensia.",
+'edit-already-exists' => 'No se puede krear una pajina mueva.
+Ya egziste.',
+'defaultmessagetext' => 'Teksto de mesaje predeterminado',
+
+# Content models
+'content-model-wikitext' => 'vikiteksto',
+'content-model-text' => 'teksto simple',
+'content-model-javascript' => 'JavaScript',
+'content-model-css' => 'CSS',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => "'''Avizo:''' La contenencia de xablon está muy grande.
@@ -595,6 +752,9 @@ Algunos xablones no van á ser comprendidos.",
 Este o estos kampos no van ser amostrados",
 'post-expand-template-argument-category' => 'Ojas ke tienen xablones kon parametros no uzados',
 
+# Account creation failure
+'cantcreateaccounttitle' => 'No se puede krear el kuento',
+
 # History pages
 'viewpagelogs' => 'Ver los registros de esta hoja',
 'currentrev' => "Enderechamiento d'al cavo",
@@ -602,20 +762,20 @@ Este o estos kampos no van ser amostrados",
 'revisionasof' => 'Enderechamiento a las $1',
 'revision-info' => 'Revision en data $1 por $2',
 'previousrevision' => '← Enderechamiento de antes',
-'nextrevision' => 'Rêvisión venidera →',
+'nextrevision' => 'Revizión venidera →',
 'currentrevisionlink' => 'Revisión actual',
 'cur' => 'act',
 'next' => 'venidero',
-'last' => 'de alcabo',
+'last' => 'de alcavo',
 'page_first' => 'primeras',
 'page_last' => 'de alcabo',
 'histlegend' => "Selección de diferencias: marca los selectores de las versiones a comparar y pulsa ''enter'' o el botón de abajo.<br />
 Leyenda: (act) = diferencias con la versión actual,
 (prev) = diferencias con la versión previa, M = edición menor",
-'history-fieldset-title' => 'Buscar en la istoria',
+'history-fieldset-title' => 'Navegar en la istoria',
 'history-show-deleted' => 'Sólamente efassado',
-'histfirst' => 'Primeras',
-'histlast' => 'De alcabo',
+'histfirst' => 'Lo mas viejo',
+'histlast' => 'Lo mas muevo',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(vazío)',
 
@@ -624,21 +784,24 @@ Leyenda: (act) = diferencias con la versión actual,
 'history-feed-item-nocomment' => '$1 en $2',
 
 # Revision deletion
+'rev-deleted-user' => '(se kito el nombre de usuario)',
 'rev-delundel' => 'mostra/esconde',
 'rev-showdeleted' => 'mostra',
-'revdelete-show-file-submit' => 'Sí',
+'revdelete-show-file-submit' => 'Si',
+'revdelete-hide-image' => 'Eskonder el kontenido de archivo',
+'revdelete-hide-user' => 'Nombre de usuario/adreso de IP del Redaktor',
 'revdelete-radio-same' => '(no troques)',
-'revdelete-radio-set' => 'Sí',
-'revdelete-radio-unset' => 'No',
-'revdelete-log' => 'Razón:',
-'revdel-restore' => 'troca la visibilitá',
-'revdel-restore-deleted' => 'enderechamientos efaçados',
-'revdel-restore-visible' => 'enderechamientos visivles',
+'revdelete-radio-set' => 'Eskondido',
+'revdelete-radio-unset' => 'Visible',
+'revdelete-log' => 'Razon:',
+'revdel-restore' => 'troca la vizibilitá',
 'pagehist' => 'La storia de la hoja',
+'revdelete-otherreason' => 'Otro razon/razon adisiyonal',
 'revdelete-reasonotherlist' => 'Otra razón',
 
 # History merging
-'mergehistory-reason' => 'Razón:',
+'mergehistory-from' => 'Pajina de orijen',
+'mergehistory-reason' => 'Razon:',
 
 # Merge log
 'revertmerge' => 'Apartar',
@@ -646,17 +809,13 @@ Leyenda: (act) = diferencias con la versión actual,
 # Diffs
 'history-title' => 'Istorya de trokamientos para «$1»',
 'lineno' => 'Liña $1:',
-'compareselectedversions' => 'Comparar versiones escogidas',
-'editundo' => 'des-haze',
+'compareselectedversions' => 'Comparar versiones escojidas',
+'editundo' => 'des-hazer',
 'diff-multi' => '(No {{PLURAL:$1|es amostrado un trokamiento intermedio echo|son amostrados $1 trokamientos intermedios echos}} por {{PLURAL:$2|un usador|$2 usadores}})',
 
 # Search results
-'searchresults' => 'Resultados de la búsquida',
-'searchresults-title' => 'Resultados de la búsquida de «$1»',
-'searchresulttext' => 'Para saber más encima de buscar en {{SITENAME}}, mira la [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Buscates \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|todas las hojas que empeçan con "$1"]] {{int:pipe-separator}} [[Special:WhatLinksHere/$1|todas las hojas que dan link a «$1»]])',
-'searchsubtitleinvalid' => "Buscates '''$1'''",
-'notitlematches' => 'No se pudo topar en dingún título.',
+'searchresults' => 'Resultados de la búxquida',
+'searchresults-title' => 'Resultados de la búxquida de «$1»',
 'notextmatches' => 'No se pudo topar en dinguna hoja.',
 'prevn' => '{{PLURAL:$1|$1}} de antes',
 'nextn' => '{{PLURAL:$1|$1}} venideras',
@@ -665,17 +824,17 @@ Leyenda: (act) = diferencias con la versión actual,
 'shown-title' => 'Amostrar $1 {{PLURAL:$1|resultado|resultados}} por hoja',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
 'searchmenu-exists' => 'Egziste una oja yamada "[[:$1]]" en esta viki',
-'searchmenu-new' => "'''Crîar la hoja «[[:$1]]» en esta viki!'''",
+'searchmenu-new' => "'''Criar la hoja «[[:$1]]» en esta viki!'''{{PLURAL:$2|0=|También ver la hoja topado kon tu búxquida.|Tambier ver la resulta de tu búxquida.}}",
 'searchprofile-articles' => 'Hojas de contènido',
 'searchprofile-project' => 'Hojas de ayudo y hojas de projeto',
 'searchprofile-images' => 'Multimedya',
 'searchprofile-everything' => 'Todo',
 'searchprofile-advanced' => 'Adelantado',
-'searchprofile-articles-tooltip' => 'Buscar en $1',
-'searchprofile-project-tooltip' => 'Buscar en $1',
-'searchprofile-images-tooltip' => 'Buscar las dosyas',
-'searchprofile-everything-tooltip' => 'Buscar en todo el contènido (y también hojas de diskusyón)',
-'searchprofile-advanced-tooltip' => 'Buscar en espacios de nombres particůlares',
+'searchprofile-articles-tooltip' => 'Buxcar en $1',
+'searchprofile-project-tooltip' => 'Buxcar en $1',
+'searchprofile-images-tooltip' => 'Buxcar dosyas',
+'searchprofile-everything-tooltip' => 'Bushkar en todo el kontenido (i mismo en las hojas de diskusyón)',
+'searchprofile-advanced-tooltip' => 'Buxcar en espacios de nombres particòlares',
 'search-result-size' => '$1 ({{PLURAL:$2|1 biervo|$2 biervos}})',
 'search-result-category-size' => '{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 basho-kateggoria|$2 basho-kateggoria}}, {{PLURAL:$3|1 dossia|$3 dossias}})',
 'search-redirect' => '(direksión desde $1)',
@@ -683,64 +842,97 @@ Leyenda: (act) = diferencias con la versión actual,
 'search-suggest' => 'Quijites dezir: $1',
 'search-interwiki-caption' => 'Proyectos hermanos',
 'search-interwiki-default' => 'Los resultados de $1:',
-'search-interwiki-more' => '(más)',
+'search-interwiki-more' => '(mas)',
 'searchrelated' => 'lisionado',
 'searchall' => 'todos',
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': Por defecto sólo se busca en algunos espacios de nombre.
-Proba a usar el prefixo ''all:'' para buscar en todo el contenido (incluyendo las hojas de diskussión, xabblones, etc.) o usa el espacio de nombre que queres como prefixo. También puedes usar el formulario de búsqueda adelantada que aparece abaxo.
-
-Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de», que no están en el índice, o por especificar más de una palabra a buscar (sólo las hojas que contienen todos los términos de búsqueda van aparecer en el resultado).",
-'search-nonefound' => 'No ay resultados que acumplan los criterios de la búsqueda.',
-'powersearch' => 'Búsqueda adelantada',
+'search-nonefound' => 'No ay resultados que acumplan los criterios de la búxquida.',
 'powersearch-legend' => 'Búsqueda adelantada',
 'powersearch-ns' => 'Busca en los espacios de nombres:',
 'powersearch-redir' => 'Mostra las redirecciones',
-'powersearch-field' => 'Busca por',
 'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'dingun',
 'search-external' => 'Búsqueda eksterna',
 
 # Preferences page
 'preferences' => 'Preferencias',
-'mypreferences' => 'Las mis preferensias',
-'changepassword' => 'Trocar el kóddiche',
+'mypreferences' => 'Preferencias',
+'prefs-edits' => 'Numero de edisyones:',
 'prefs-skin' => 'Vista',
 'skin-preview' => 'Previstear',
+'prefs-datetime' => 'Data i ora',
+'prefs-user-pages' => 'Pajinas de usuario',
+'prefs-personal' => 'Profil de usuario',
 'prefs-rc' => 'Los Trocamientos de Alcabo',
 'prefs-watchlist' => 'Lista de los Trocamientos Preferidos',
 'prefs-watchlist-days' => 'El número de los días a mostrar en la lista de los trocamientos preferidos:',
-'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|días|días}} a lo más muncho',
+'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|diya|diyas}} a lo más muncho',
 'prefs-resetpass' => 'Trocar la parola',
+'prefs-changeemail' => 'Kambiar adreso de korreo elektroniko',
 'prefs-rendering' => 'Vista',
 'saveprefs' => 'Enrejistrar',
+'searchresultshead' => 'Bushkar',
 'timezoneregion-africa' => 'África',
 'timezoneregion-america' => 'América',
 'timezoneregion-antarctica' => 'Antárctica',
+'timezoneregion-arctic' => 'Artiko',
 'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oseano Atlantiko',
 'timezoneregion-australia' => 'Ostralia',
 'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oseano Indiko',
+'timezoneregion-pacific' => 'Oseano Pasifiko',
+'prefs-searchoptions' => 'Bushkar',
 'prefs-files' => 'Dosyas',
-'youremail' => 'El adderesso de tu letra electrόnica:',
-'username' => 'Nombre de usuario:',
+'youremail' => 'Letral:',
+'username' => '{{GENDER:$1|Nombre de usuario}}:',
 'yourrealname' => 'Nombre verdadero:',
-'yourlanguage' => 'Lingua:',
+'yourlanguage' => 'Lengua:',
 'yournick' => 'Firma mueva:',
-'email' => 'Letral',
-'prefs-help-email' => 'El adreso de e-posta es menester para alimpiar la tu parola, si la olvidates',
+'gender-unknown' => 'Prefiero no dezir',
+'gender-male' => 'El redakto pajinas de viki',
+'gender-female' => 'Eya redakto pajinas de viki',
+'email' => 'Korreo elektroniko',
+'prefs-help-email' => 'El adreso de korreo elektroniko es opsional, ma es menester para alimpiar la tu kontrasenya, si la olvidates',
 'prefs-help-email-others' => 'Endemas puedes eskojer si keres dar pueder a otros usadores de azer kontakto kon ti por modre de e-posta, a  traverso de un atamiento en tus ojas de usador i de diskusyon.',
+'prefs-help-email-required' => 'Se nesesita adreso de korreo elektroniko.',
+'prefs-info' => 'Informasyon basiko',
+'prefs-i18n' => 'Internasionalisasyion',
 'prefs-signature' => 'Firma',
+'prefs-editor' => 'Redaktor',
+
+# User rights
+'userrights-groupsmember' => 'Miembro de:',
+'userrights-reason' => 'Razon:',
 
 # Groups
+'group' => 'Grupo:',
 'group-user' => 'Usadorers',
+'group-bot' => 'Bots',
 'group-sysop' => 'Administradores',
+'group-bureaucrat' => 'Burokratos',
 'group-all' => '(todos)',
 
+'group-user-member' => '{{GENDER:$1|usuario}}',
+'group-bot-member' => '{{GENDER:$1|bot}}',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrato}}',
+
+'grouppage-user' => '{{ns:project}}:Usuarios',
+'grouppage-bot' => '{{ns:project}}:Bots',
 'grouppage-sysop' => '{{ns:project}}:Administradores',
+'grouppage-bureaucrat' => '{{ns:project}}:Burokratos',
 
 # Rights
+'right-read' => 'Meldar pajinas',
 'right-edit' => 'Trocar las hojas',
+'right-createpage' => 'Krear pajinas (ke no son pajinas de diskusyon)',
+'right-createtalk' => 'Krear pajinas de diskusyon',
+'right-createaccount' => 'Krear muevos kuentos de usuarios',
 'right-minoredit' => 'Marcar trocamientos como "chiquiticos"',
+'right-move' => 'Mover pajinas',
+'right-movefile' => 'Mover archivo',
 'right-delete' => 'Efassar hojas',
+'right-sendemail' => 'Embiar korreo elektroniko a otro usuario',
 
 # Special:Log/newusers
 'newuserlogpage' => 'Registro de creación de usuarios',
@@ -752,36 +944,42 @@ Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de
 'action-read' => 'meldar esta hoja',
 'action-edit' => 'trocar esta hoja',
 'action-createpage' => 'crear hojas',
+'action-createtalk' => 'Krear pajinas de diskusyon',
+'action-createaccount' => 'Krear este kuento de usuario',
+'action-minoredit' => 'sinyalar este kambio komo chiko',
 'action-delete' => 'efassar esta hoja',
+'action-sendemail' => 'embiar korreo elektronikos',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|trocamiento|trocamientos}}',
+'enhancedrc-history' => 'istoria',
 'recentchanges' => 'Trocamientos freskos',
 'recentchanges-legend' => 'Opciones encima de los trocamientos frescos',
 'recentchanges-summary' => 'Perseguid en esta hoja, los trocamientos de alcabo realizados en la Viki.',
 'recentchanges-feed-description' => 'Perseguir los trocamientos más nuevos en el viki en este feed.',
-'recentchanges-label-newpage' => 'Este trokamiento krio una mueva ója',
+'recentchanges-label-newpage' => 'Este trocamiento crió una mueva hoja',
 'recentchanges-label-minor' => 'Esta es un trocamiento chiquitico',
 'recentchanges-label-bot' => 'Este trokamiento fue echo por un bot',
-'recentchanges-label-unpatrolled' => 'Estre trokamiento no esta akavidado',
-'rcnote' => "Debaxo {{PLURAL:$1|ay '''1''' trocamiento realizado|están los dal cabo '''$1''' trocamientos realizados}} en  {{PLURAL:$2|el dal cabo día|los dal cabo '''$2''' días}}, hasta el $4, $5.",
+'recentchanges-label-unpatrolled' => 'Este trocamiento no está akavidado',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Debasho se amostran los trokamientos desde '''$2''' (amostrados fina <b>$1</b>)",
 'rclistfrom' => 'Mostra los trocamientos nuevos empeçando desde $1',
 'rcshowhideminor' => '$1 trocamientos chiquiticos',
 'rcshowhidebots' => '$1 bots',
-'rcshowhideliu' => '$1 empleadores enrējjistrados',
-'rcshowhideanons' => '$1 empleadores anonimes',
-'rcshowhidepatr' => '$1 trokamientos akavidados',
+'rcshowhideliu' => '$1 kullaneadores enrezhistrados',
+'rcshowhideanons' => '$1 kullaneadores anonimes',
+'rcshowhidepatr' => '$1 trocamientos akavidados',
 'rcshowhidemine' => '$1 mis ediciones',
-'rclinks' => 'Ver los dal cabo $1 trocamientos en los dal cabo $2 días.<br />$3',
+'rclinks' => 'Ver los dal cavo $1 trocamientos en los dal cavo $2 días.<br />$3',
 'diff' => 'dif',
 'hist' => 'ist',
 'hide' => 'Esconder',
-'show' => 'Àmostrar',
+'show' => 'Amostrar',
 'minoreditletter' => 'ch',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
-'rc-enhanced-expand' => 'Mostra los detalyos (cale JavaScript)',
+'rc_categories_any' => 'Kualkyer',
+'rc-enhanced-expand' => 'Amostrar los detalyos',
 'rc-enhanced-hide' => 'Guarda los detalyos',
 
 # Recent changes linked
@@ -789,82 +987,145 @@ Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de
 'recentchangeslinked-feed' => 'Trocamientos conectados',
 'recentchangeslinked-toolbox' => 'Trocamientos relatados',
 'recentchangeslinked-title' => 'Los trocamientos relacionados con "$1"',
-'recentchangeslinked-summary' => "Esto es la lista de los trocamientos de alcavo de las hojas que relatan á una hoja spēcifik (ou de los miembros de la katēggoría spēcifikada).
-Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son escritas '''con letras grexas'''.",
+'recentchangeslinked-summary' => "Esto es la lista de los trocamientos dalcavo de las hojas que relatan a una hoja particòlar (o de los miembros de la kategoría particòlar).
+Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son '''reforçadas'''.",
 'recentchangeslinked-page' => 'Nombre de la hoja',
-'recentchangeslinked-to' => 'Mostra los trocamientos freskos en lugar de la hoja indicada',
+'recentchangeslinked-to' => 'Amostra los trocamientos freskos en lugar de la hoja indicada',
 
 # Upload
 'upload' => 'Suvir una dosya',
 'uploadlogpage' => 'Subidas de arxivos',
+'filename' => 'Nombre de archivo',
 'filedesc' => 'Somario',
-'uploadedimage' => 'subió «[[$1]]»',
+'filereuploadsummary' => 'Kambios de archivo:',
+'filesource' => 'Fuente:',
+'filename-tooshort' => 'El nombre del archivo es muy kurto.',
+'savefile' => 'Guardar archivo',
+'uploadedimage' => 'suvió «[[$1]]»',
+
+# File backend
+'backend-fail-notexists' => 'El archivo $1 no egziste.',
+'backend-fail-alreadyexists' => 'El archivo "$1" ya egziste.',
+
+# img_auth script messages
+'img-auth-nofile' => 'El archivo "$1" no egziste.',
 
-'license' => 'Lesensia:',
+'license' => 'Lecencia:',
 'license-header' => 'Lesensiamyénto',
 
 # Special:ListFiles
+'imgfile' => 'archivo',
+'listfiles' => 'Lista de archivos',
+'listfiles_thumb' => 'Minyatura',
+'listfiles_date' => 'Data',
 'listfiles_name' => 'Nombre',
 'listfiles_user' => 'Usuario',
 'listfiles_size' => 'Boy',
+'listfiles-latestversion-yes' => 'Si',
+'listfiles-latestversion-no' => 'No',
 
 # File description page
-'file-anchor-link' => 'Archivo',
+'file-anchor-link' => 'Dosya',
 'filehist' => 'La istoria de la dosya',
-'filehist-help' => 'Klika encima de una data/ora para vel el arxivo de esta data.',
+'filehist-help' => 'Klika encima de una data/ora para vel la dosya desta data.',
 'filehist-revert' => 'aboltar',
 'filehist-current' => 'actual',
 'filehist-datetime' => 'Data/Ora',
 'filehist-thumb' => 'Minyatura',
 'filehist-thumbtext' => 'Minyatura de la versión á las $1',
-'filehist-user' => 'Usador',
+'filehist-nothumb' => 'Sin minyatura',
+'filehist-user' => 'Kullaneador',
 'filehist-dimensions' => 'Dimensiones',
 'filehist-filesize' => 'El boy de la dosya',
 'filehist-comment' => 'Comentario',
+'filehist-missing' => 'No se topa el archivo',
 'imagelinks' => 'El uso del dosya',
-'linkstoimage' => '{{PLURAL:$1|La hoja venidera da link|Las hojas venideras dan link}} a este arxivo:',
-'nolinkstoimage' => 'Dinguna ója tiene atamientos a esta imej',
+'linkstoimage' => '{{PLURAL:$1|La hoja venidera da link|Las hojas venideras dan link}} a esta dosya:',
+'nolinkstoimage' => 'No ay hojas con atamientos a esta dosya.',
 'sharedupload' => 'Este arxivo es de $1 i puede ser usado por otros proyectos.',
 'sharedupload-desc-here' => 'Esta hoja es de $1 y puede ser usado por otros projetos.
 La descripción en su [$2 hoja de descripción del arxivo] está amostrada debaxo.',
+'filepage-nofile' => 'No egziste dingun archivo de este nombre.',
 'uploadnewversion-linktext' => 'Subir una nueva versión de este arxivo',
+'shared-repo-from' => 'de $1',
+
+# File reversion
+'filerevert-comment' => 'Razon:',
+
+# File deletion
+'filedelete-comment' => 'Razon:',
+'filedelete-nofile' => "'''$1''' no egziste.",
+'filedelete-otherreason' => 'Otra razon/razon adisiyonal',
+'filedelete-reason-otherlist' => 'Otra razon',
+
+# MIME search
+'mimesearch' => 'bushkida por MIME',
+'download' => 'deskargar',
+
+# Unused templates
+'unusedtemplateswlh' => 'otros enlases',
 
 # Random page
-'randompage' => 'Hoja por asardo',
+'randompage' => 'Hoja por azardo',
+
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Ir',
 
 # Statistics
 'statistics' => 'Estatísticas',
+'statistics-articles' => 'Pajinas de kontenido',
+'statistics-pages' => 'Pajinas',
+'statistics-users-active' => 'Usuarios aktivos',
+
+'pageswithprop-submit' => 'Ir',
+
+'doubleredirects' => 'Redireksyones dobles',
+
+'brokenredirects-edit' => 'trocar',
+'brokenredirects-delete' => 'efasar',
+
+'withoutinterwiki' => 'Pajinas sin enlases de lenguas',
+'withoutinterwiki-submit' => 'Amostrar',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|bayt|baytes}}',
+'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
+'nlinks' => '$1 {{PLURAL:$1|enlase|enlases}}',
 'nmembers' => '$1 {{PLURAL:$1|miembro|miembros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|miembro|miembros}}',
+'nimagelinks' => 'Uzado en $1 {{PLURAL:$1|pajina|pajinas}}',
+'ntransclusions' => 'uzado en $1 {{PLURAL:$1|pajina|pajinas}}',
 'prefixindex' => 'Todas las hojas con prefixo',
+'shortpages' => 'Pajinas kurtas',
+'longpages' => 'Pajinas largas',
+'listusers' => 'Lista de usuario',
 'usercreated' => '{{GENDER:$3|Enrejistrado|Enrejistrada}} el $1 a las $2',
 'newpages' => 'Hojas muevas',
+'newpages-username' => 'Nombre de usuario:',
 'ancientpages' => 'Artikolos mas viejos',
-'move' => 'taxirea',
+'move' => 'taşirear',
 'movethispage' => 'Tashirea esta hoja',
 'pager-newer-n' => '{{PLURAL:$1|1 venidero|$1 venideros}}',
 'pager-older-n' => '{{PLURAL:$1|1 de antes|$1 de antes}}',
 
 # Book sources
-'booksources' => 'Fuentes de libros',
+'booksources' => 'Fuentes de livros',
 'booksources-search-legend' => 'Buscar fuentes de libros',
-'booksources-go' => 'Yir',
+'booksources-go' => 'Ir',
 
 # Special:Log
-'log' => 'Registros',
+'log' => 'Rejistros',
 
 # Special:AllPages
 'allpages' => 'Todas las hojas',
 'alphaindexline' => '$1 a $2',
+'nextpage' => 'La sigiente pajina ($1)',
 'prevpage' => 'Hoja de antés ($1)',
 'allpagesfrom' => 'Mostrar hojas que empecen por:',
 'allpagesto' => 'Mostrar hojas escapadas con:',
-'allarticles' => 'Todos los artikolos',
+'allarticles' => 'Todas las hojas',
 'allinnamespace' => 'Todas las pajinas (espasio $1)',
-'allpagesnext' => 'Siguiente',
-'allpagessubmit' => 'Àmostrar la lista',
+'allpagessubmit' => 'Amostrar la lista',
 
 # Special:Categories
 'categories' => 'Kategorías',
@@ -872,24 +1133,50 @@ La descripción en su [$2 hoja de descripción del arxivo] está amostrada debax
 'special-categories-sort-abc' => 'ordenar alefbeticamente',
 
 # Special:LinkSearch
-'linksearch' => 'Linkes eksternos',
-'linksearch-line' => 'Atamiento para $1 en la ója $2',
+'linksearch' => 'Bushkida de enlases eksternos',
+'linksearch-ok' => 'Bushkar',
+'linksearch-line' => 'Atamiento para $1 en la hoja $2',
+
+# Special:ListUsers
+'listusers-submit' => 'Amostrar',
+'listusers-noresult' => 'No se topo usuario',
+
+# Special:ActiveUsers
+'activeusers-hidebots' => 'Eskonder bots',
+'activeusers-noresult' => 'No se toparon usuario.',
 
 # Special:ListGroupRights
+'listgrouprights' => 'Derechos del grupo de usuario',
+'listgrouprights-group' => 'Grupo',
+'listgrouprights-rights' => 'Derechos',
+'listgrouprights-helppage' => 'Help:Derechos de grupo',
 'listgrouprights-members' => '(ver los miembros de este grupo)',
+'listgrouprights-addgroup' => 'Anyadir {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-removegroup' => 'Kitar {{PLURAL:$2|grupo|grupos}}: $1',
+'listgrouprights-addgroup-all' => 'Anyadir todos los grupos',
+'listgrouprights-removegroup-all' => 'Kitar todos los grupos',
 
 # Email user
-'emailuser' => 'Embia e-mail a este usuario',
+'emailuser' => 'Embia korreo elektroniko a este usuario',
+'emailuser-title-target' => 'Embiar un korreo elektroniko a {{Gender:$1|este usuario|esta usuaria}}',
+'emailuser-title-notarget' => 'Embiar un korreo elektroniko a un usuario',
+'emailpage' => 'Embiar un korreo elektroniko a un usuario',
+'defemailsubject' => 'Korreo elektroniko del usuario "$1" de {{SITENAME}}',
+'emailusername' => 'Nombre de usuario:',
+'emailfrom' => 'De:',
+'emailto' => 'Para:',
+'emailsubject' => 'Sujeto:',
+'emailmessage' => 'Mesaje:',
+'emailsend' => 'Embiar',
+'emailsent' => 'Korreo elektroniko embiado',
 
 # Watchlist
 'watchlist' => 'Lista de akavidamiento',
-'mywatchlist' => 'La mi lista de akavidamientos',
+'mywatchlist' => 'Mi lista de akavidamientos',
 'watchlistfor2' => 'Para $1 $2',
-'addedwatchtext' => "La hoja «[[:$1]]» fue ajustada a tu [[Special:Watchlist|lista de escogidas]]. Los trocamientos venideros en esta hoja i en tu hoja de diskussión associada se van indicar aí, i la hoja va aparecer '''gordo''' en la hoja de [[Special:RecentChanges|trocamientos freskos]] para hazerla más kolay de detektar.
-
-Cuando queres eliminar la hoja de tu lista de escogidas, piza «Dexar de cudiar» en el menú.",
+'addedwatchtext' => 'La pajina "[[:$1]]" fue anyadido a tu [[Special:Watchlist|lista de escogidas]]. Los trocamientos venideros en esta pajina i en tu pajina de diskusyon assosiada va apareser ayi.',
 'removedwatchtext' => 'La hoja «[[:$1]]» fue eliminada de tu [[Special:Watchlist|lista de escogidas]].',
-'watch' => 'cudia',
+'watch' => 'cudiar',
 'watchthispage' => 'Cudia esta hoja',
 'unwatch' => 'dexa de cudiar',
 'watchlist-details' => '{{PLURAL:$1|$1 hoja|$1 hojas}} en tu lista de escogidas, sin contar las de la diskussión.',
@@ -900,6 +1187,8 @@ Cuando queres eliminar la hoja de tu lista de escogidas, piza «Dexar de cudiar
 'watching' => 'Cudiando...',
 'unwatching' => 'Dexando de cudiar...',
 
+'enotif_impersonal_salutation' => '{{SITENAME}} usuario',
+
 # Delete
 'deletepage' => 'Efassar esta hoja',
 'confirmdeletetext' => 'Estás al punto de efassar una hoja
@@ -907,27 +1196,29 @@ en forma turable, ansí como todo su istoria.
 Si puede ser, confirma que de verdad queres hazer esto, que estás entendiendo las
 resultados, i que lo estás haziendo de acorddo con las [[{{MediaWiki:Policy-url}}|Políticas]].',
 'actioncomplete' => 'Aksion kompleta',
-'actionfailed' => 'Aksiyon sin reushitá',
+'actionfailed' => 'Aksión sin reuşitá',
 'deletedtext' => '"$1" fue efassado.
 Mira $2 para un registro de los efassados nuevos.',
 'dellogpage' => 'Registro de efassados',
 'deletecomment' => 'Razón:',
-'deleteotherreason' => 'Otra razón:',
+'deleteotherreason' => 'Otra razon/razon adisiyonal:',
 'deletereasonotherlist' => 'Otra razón',
-'deletereason-dropdown' => '* Motivos generales de efassamientos
-** La demanda del criador de la hoja
-** Violación de copyright
-** Vandalismo',
+'deletereason-dropdown' => '* Razones komunes de efassamientos
+** Spam
+** Vandalismo
+** Violasyon del derecho de otor
+** Demande del otor mizmo
+** Redireksyon rota',
 
 # Rollback
-'rollbacklink' => 'abolta',
+'rollbacklink' => 'aboltar',
 
 # Protect
 'protectlogpage' => 'Protecciones de las hojas',
 'protectedarticle' => 'guardó «[[$1]]»',
 'modifiedarticleprotection' => 'trocó el nivel de protección de «[[$1]]»',
 'prot_1movedto2' => '[[$1]] trasladado a [[$2]]',
-'protectcomment' => 'Razón:',
+'protectcomment' => 'Razon:',
 'protectexpiry' => 'Escapa:',
 'protect_expiry_invalid' => 'Tiempo de escapación yerrado.',
 'protect_expiry_old' => 'El tiempo de escapación está en el passado.',
@@ -936,19 +1227,28 @@ Mira $2 para un registro de los efassados nuevos.',
 A continuación se mostran las opciones actuales de la hoja '''$1''':",
 'protect-cascadeon' => 'Esta hoja está guardada en momento porque está incluida en {{PLURAL:$1|la hoja venidera|las hojas venideras}}, que tienen activada la opción de protección en grados. Puedes trocar el nivel de protección de esta hoja, ma no va afectar a la protección en grados.',
 'protect-default' => 'Permitir todos los usuarios',
-'protect-fallback' => 'Tiene menester del permiso «$1»',
-'protect-level-autoconfirmed' => 'Bloquear usuarios nuevos y no registrados',
-'protect-level-sysop' => 'Sólo administradores',
+'protect-fallback' => 'Solo permitir usuarios kon permiso "$1"',
+'protect-level-autoconfirmed' => 'Solo permitir usuarios otokonfirmados',
+'protect-level-sysop' => 'Solo permitir administradores',
 'protect-summary-cascade' => 'con grados',
 'protect-expiring' => 'caduca el $1 (UTC)',
 'protect-cascade' => 'Protección en cascada - guardar todas las hojas incluidas en ésta.',
 'protect-cantedit' => 'No puedes trocar el nivel de protección porque no tienes permissión para hazer ediciones.',
+'protect-otherreason' => 'Otra razon/razon adisiyonal',
+'protect-otherreason-op' => 'Otra razon',
+'protect-expiry-options' => '1 ora:1 hour,1 diya:1 day,1 semana:1 week,2 semanas:2 weeks,1 mez:1 month,3 mezes:3 months,6 mezes:6 months,1 anyo:1 year,para siempre:infinite',
 'restriction-type' => 'Permiso:',
 'restriction-level' => 'Nivel de restricción:',
 
+# Restrictions (nouns)
+'restriction-create' => 'Krear',
+
 # Undelete
-'undeletelink' => 've/trae atrás',
-'undeleteviewlink' => 've',
+'undeletelink' => 'ver/traer atrás',
+'undeleteviewlink' => 'ver',
+'undeletecomment' => 'Razon:',
+'undelete-search-submit' => 'Bushkar',
+'undelete-show-file-submit' => 'Si',
 
 # Namespace form on various pages
 'namespace' => 'Espacio de nombres:',
@@ -956,68 +1256,79 @@ A continuación se mostran las opciones actuales de la hoja '''$1''':",
 'blanknamespace' => '(Principal)',
 
 # Contributions
-'contributions' => 'Ajustamientos {{GENDER:$1|del usador|de la usadora}}',
+'contributions' => 'Ajustamientos {{GENDER:$1|del kullaneador|de la kullaneadera}}',
 'contributions-title' => 'Ajustamientos {{GENDER:$1|del usuario|de la usuaria}} $1',
-'mycontris' => 'Mis dados',
-'contribsub2' => '$1 ($2)',
-'uctop' => '(última modificación)',
+'mycontris' => 'Mis donos',
+'contribsub2' => 'Para {{GENDER:$3|$1}}($2)',
+'uctop' => '(korriente)',
 'month' => 'Desde el mes (i antes):',
-'year' => 'Desde el año (i antes):',
+'year' => 'Desde el anyo (i antes):',
 
 'sp-contributions-newbies' => 'Mostrar solo las ajustamientos de los usuarios nuevos',
 'sp-contributions-blocklog' => 'registro de bloqueos',
 'sp-contributions-uploads' => 'suvidas',
 'sp-contributions-logs' => 'enrejistros',
 'sp-contributions-talk' => 'Diskusyón',
-'sp-contributions-search' => 'Buscar ajustamientos',
-'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
+'sp-contributions-search' => 'Buxcar ajustamientos',
+'sp-contributions-username' => 'Adreso de IP o nombre de usuario:',
 'sp-contributions-toponly' => "Amostrar solo revisiones d'alkavo",
-'sp-contributions-submit' => 'Buscar',
+'sp-contributions-submit' => 'Buxcar',
 
 # What links here
-'whatlinkshere' => 'Atamientos a esta hoja',
+'whatlinkshere' => 'Hojas atadas',
 'whatlinkshere-title' => 'Hojas que dan link a "$1"',
 'whatlinkshere-page' => 'Hoja:',
 'linkshere' => "Las hojas venideras dan link a '''[[:$1]]''':",
 'nolinkshere' => "Dinguna ója tiene atamientos kon '''[[:$1]]'''",
 'isredirect' => 'Hoja redirigida',
 'istemplate' => 'inclusión',
-'isimage' => 'Atamiento de la dossia',
+'isimage' => 'atamiento de la dosya',
 'whatlinkshere-prev' => '{{PLURAL:$1|de antes|de antes $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|venidera|venideras $1}}',
-'whatlinkshere-links' => '← linkes',
+'whatlinkshere-links' => '← atamientos',
 'whatlinkshere-hideredirs' => '$1 redirecciones',
 'whatlinkshere-hidetrans' => '$1 inclusiones',
-'whatlinkshere-hidelinks' => '$1 linkes',
-'whatlinkshere-hideimages' => '$1 atamientos a imejes',
+'whatlinkshere-hidelinks' => '$1 atamientos',
+'whatlinkshere-hideimages' => '$1 atamientos a dosyas',
 'whatlinkshere-filters' => 'Filtres',
 
 # Block/unblock
 'blockip' => 'Bloquear usuario',
+'ipadressorusername' => 'Adreso de IP o nombre de usuario:',
+'ipbreason' => 'Razon:',
 'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
-'ipblocklist' => 'Usadores bloqueados',
-'blocklink' => 'bloka',
-'unblocklink' => 'quita el bloko',
-'change-blocklink' => 'troca el bloko',
-'contribslink' => 'donos',
-'blocklogpage' => 'Bloqueos de usuarios',
-'blocklogentry' => 'bloqueó a [[$1]] $3 durante un tiempo de $2',
+'badipaddress' => 'Adreso de IP invalido',
+'ipblocklist' => 'Usuarios blokeados',
+'blocklist-reason' => 'Razon',
+'ipblocklist-submit' => 'Bushkar',
+'infiniteblock' => 'para siempre',
+'blocklink' => 'blokar',
+'unblocklink' => 'quitar el bloko',
+'change-blocklink' => 'trocar el bloko',
+'contribslink' => 'kontribüsyones',
+'emaillink' => 'embiar korreo elektroniko',
+'blocklogpage' => 'Blokos de kullaneadores',
+'blocklogentry' => 'blokó a [[$1]] $3 durante un tiempo de $2',
 'unblocklogentry' => 'desbloqueó a "$1"',
-'block-log-flags-nocreate' => 'desactivada la creación de cuentos',
+'block-log-flags-nocreate' => 'desactivada la kreasyon de kuentos',
+'block-log-flags-hiddenname' => 'nombre de usuario eskondido',
+
+# Developer tools
+'lockedbyandtime' => '(por {{GENDER:$1|$1}} el $2 a la $3)',
 
 # Move page
-'movepagetext' => "Usando el formulario venidero se va renombrar una hoja, quitando todo su istoria a su nuevo nombre.
-El título de antes se va convertir en una redirección al nuevo título.
-Los linkes al antiguo título de la hoja no se van trocar.
-Asegúrate de no dexar [[Special:DoubleRedirects|redirecciones dobles]] o [[Special:BrokenRedirects|rotas]].
-Tú sos responsable de aranjjar los linkes de manera menesterosa.
-
-Acórdate que la hoja '''no''' va ser renombrada si ya egziste una hoja con esta nuevo título, a no ser que sea una hoja vazía o una redirección sin istoria.
-Esto siñifica que vas pueder renombrar una hoja a su título original si hazes un yerro, ma que no vas pueder sobrescribir una hoja que ya existe.
-
-'''¡Atansión!'''
-Este puede ser un trocamiento muy muy emportante e inesperado para una hoja popular;
-si puede ser, asegúrate de entender las resultados del lo que hazes antes de yir endelantre.",
+'movepagetext' => "Uzando el sigiente formulario va renombrar una pajina, kitando todo su istoria a su nuevo nombre.
+El titulo orijinal se va convertir en una redireksyon al muevo titulo.
+Puede aktualizar otomatikamente las redireksyones al titulo orijinal.
+Si eskoje no azerlo, asegurate de verifikar ke no ay  [[Special:DoubleRedirects|redireksyones dobles]] o [[Special:BrokenRedirects|rotas]].
+Tú sos responsable de asegurar ke los enlases funksyonan korrectamente.
+
+Nota ke la pajina '''no''' va ser renombrada si ya egziste una hoja con esta muevo título, a no ser que sea una redireksyon sin istoria.
+Esto sinyifica que vas pueder renombrar una pajina a su titulo orijinal si hazes un yerro, ma que no vas pueder sobreskrivir una pajina que ya existe.
+
+'''Aviso!'''
+Este puede ser un trocamiento muy muy emportante e inesperado para una pajina popular;
+asegurate de entender las resultados del lo que azes antes de ir endelantre.",
 'movepagetalktext' => "La hoja de diskussión associada, si egziste, va ser renombrada otomáticamente '''a menos que:'''
 *Esté renombrando la hoja entre espacios de nombres diferentes,
 *Una hoja de diskussión no vazía ya egziste con el nombre nuevo, o
@@ -1032,106 +1343,148 @@ En estos casos, va deber trasladar manualmente el contenido de la hoja de diskus
 'movepage-moved' => '\'\'\'"$1" fue renombrado a "$2".\'\'\'',
 'articleexists' => 'Una hoja con este nombre ya egziste, o el nombre que escogites no es valable.
 Si puede ser, escoge otro nombre.',
-'talkexists' => 'La hoja fue renombrada con reuxito, ma la diskussión no se pudo renombrar porque ya egziste una en el título nuevo. Si puede ser, házelo manualmente.',
-'movedto' => 'renombrado a',
 'movetalk' => 'Renombrar la hoja de diskussión también, si es possible.',
 'movelogpage' => 'Registro de traslados',
-'movereason' => 'Razón:',
-'revertmove' => 'abolta',
+'movereason' => 'Razon:',
+'revertmove' => 'aboltar',
 
 # Export
 'export' => 'Eksportar las hojas',
+'export-addcat' => 'Anyadir',
+'export-addns' => 'Anyadir',
+'export-download' => 'Guardar komo archivo',
 
 # Namespace 8 related
 'allmessages' => 'Mesajes del sistema',
 'allmessagesname' => 'Nombre',
 'allmessagesdefault' => 'Teksto por defekto',
 'allmessagescurrent' => 'Teksto aktual',
+'allmessages-filter-all' => 'Todos',
+'allmessages-language' => 'Lengua:',
+'allmessages-filter-submit' => 'Ir',
 
 # Thumbnails
 'thumbnail-more' => 'Engrandece',
-'thumbnail_error' => 'Yerro kriando la imej chika: $1',
+'thumbnail_error' => 'Yerro kriando la minyatura: $1',
+
+# Special:Import
+'import-interwiki-submit' => 'Importar',
+'import-upload-filename' => 'Nombre de archivo:',
+'importnopages' => 'No ay pajinas para importar.',
 
 # Tooltip help for the actions
-'tooltip-pt-userpage' => 'Tu hoja de usador',
+'tooltip-pt-userpage' => 'Tu hoja de kullaneador',
 'tooltip-pt-mytalk' => 'Tu hoja de diskusyón',
 'tooltip-pt-preferences' => 'Mis preferencias',
 'tooltip-pt-watchlist' => 'La lista de los trocamientos acontècidos en las hojas akavidadas.',
-'tooltip-pt-mycontris' => 'La lista de tus àjustamientos',
+'tooltip-pt-mycontris' => 'La lista de tus donos',
 'tooltip-pt-login' => 'Te encorajamos de entrar ma no estás obligado',
-'tooltip-pt-logout' => 'Salir',
+'tooltip-pt-logout' => 'Sal de tu cuento',
 'tooltip-ca-talk' => 'Diskusyón encima del artíkolo',
 'tooltip-ca-edit' => 'Puedes trocar esta hoja. Te rogamos, antes de enrejistrarla, echa una ojada en kullaneando el botón de previsteo',
-'tooltip-ca-addsection' => 'Empeça una nueva sección',
-'tooltip-ca-viewsource' => 'Esta hoja está guardada.
+'tooltip-ca-addsection' => 'Empeça a un muevo kapítolo',
+'tooltip-ca-viewsource' => 'Esta hoja está guadrada.
 Puedes ver su manadero',
 'tooltip-ca-history' => 'Enderechamientos passados de esta hoja',
 'tooltip-ca-protect' => 'Guardar esta hoja',
 'tooltip-ca-delete' => 'Efassar esta hoja',
 'tooltip-ca-move' => 'Taxirea (renombra) esta hoja',
 'tooltip-ca-watch' => 'Ajustar esta hoja a tu lista de akavidamientos',
-'tooltip-ca-unwatch' => 'Quita esta hoja de tu lista de escogidos',
-'tooltip-search' => 'Busca en {{SITENAME}}',
-'tooltip-search-go' => 'Si ay una hoja con este nombre egzakto, vate allá.',
-'tooltip-search-fulltext' => 'Busca este teksto en las hojas',
-'tooltip-p-logo' => 'Vate a la primera hoja',
-'tooltip-n-mainpage' => 'Vate a la primera hoja',
-'tooltip-n-mainpage-description' => 'Vate a la primera hoja',
-'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ánde topar todo',
+'tooltip-ca-unwatch' => 'Quita esta hoja de tu lista de escojidos',
+'tooltip-search' => 'Buxca en {{SITENAME}}',
+'tooltip-search-go' => 'Ir a la hoja con este nombre egzakto, si egziste.',
+'tooltip-search-fulltext' => 'Buxca este teksto en las hojas',
+'tooltip-p-logo' => 'Vijita la primera hoja',
+'tooltip-n-mainpage' => 'Vijitar la primera hoja',
+'tooltip-n-mainpage-description' => 'Vijitar la primera hoja',
+'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ande topar todo',
 'tooltip-n-currentevents' => 'Jhaberes y acontècimientos de oy día',
-'tooltip-n-recentchanges' => 'Lista de los trocamientos muevos en el viki',
-'tooltip-n-randompage' => 'Carga una hoja por asardo',
-'tooltip-n-help' => 'Para saver mas',
-'tooltip-t-whatlinkshere' => 'La lista de todas las hojas del viki que se atan con esta hoja',
+'tooltip-n-recentchanges' => 'Lista de los trocamientos dalcavo en el viki',
+'tooltip-n-randompage' => 'Carga una hoja por azardo',
+'tooltip-n-help' => 'Ambézate y topa ayudo',
+'tooltip-t-whatlinkshere' => 'Una lista de todas las hojas del viki que tienen atamientos a esta hoja',
 'tooltip-t-recentchangeslinked' => 'Los trocamientos muevos en las hojas atadas con esta hoja',
 'tooltip-feed-rss' => 'Sindicación RSS de esta hoja',
 'tooltip-feed-atom' => "Fuente de Atom d'esta hoja",
 'tooltip-t-contributions' => 'Ver la lista de ajustamientos de este usuario',
 'tooltip-t-emailuser' => 'A este usuario, mándale una letra electrόnica (ímey)',
-'tooltip-t-upload' => 'Suve las dosyas por aquí',
+'tooltip-t-upload' => 'Suve dosyas',
 'tooltip-t-specialpages' => 'Lista de todas las hojas especiales',
 'tooltip-t-print' => 'Forma apropiada para imprimir esta hoja',
 'tooltip-t-permalink' => 'Atamiento permanente a este enderechamiento de la hoja',
 'tooltip-ca-nstab-main' => 'Ve el artíkolo de contènido',
-'tooltip-ca-nstab-user' => 'Ve la hoja de usuario',
+'tooltip-ca-nstab-user' => 'Ver la pajina de usuario',
 'tooltip-ca-nstab-special' => 'Esta es una hoja especial, la hoja ya no se puede trocar',
 'tooltip-ca-nstab-project' => 'Ver la hoja del prodjekto',
 'tooltip-ca-nstab-image' => 'Ver la hoja de la dosya',
-'tooltip-ca-nstab-template' => 'Ver el xabblón',
+'tooltip-ca-nstab-template' => 'Ve el şablón',
 'tooltip-ca-nstab-category' => 'Ve la hoja de categoría',
 'tooltip-minoredit' => 'Márcalo como un trocamiento chiquitico',
-'tooltip-save' => 'Guardar los trocamientos',
+'tooltip-save' => 'Guadrar los trocamientos',
 'tooltip-preview' => 'Que previzualize sus trocamientos, ¡si puede ser, que use esto antes de enregistrar!',
 'tooltip-diff' => 'Mostra los trocamientos que él/ella hizo en el texhto.',
 'tooltip-compareselectedversions' => 'Ve las diferencias entre las dos versiones escogidas de esta hoja.',
-'tooltip-watch' => 'Ajusta esta hoja a tu lista de escogidas',
-'tooltip-rollback' => '«Abolta» abolta todas los trocamientos del usador de alcavo, sólo en klikando una vez.',
-'tooltip-undo' => '«Deshaze» abolta este trocamiento y la avre en el modo de previsteo. Permete ajustar una razón en el somario.',
+'tooltip-watch' => 'Ajusta esta hoja a tu lista de escojidas',
+'tooltip-rollback' => '«Abolta» abolta todos los trocamientos del kullaneador dalcavo, sólo en klikando una vez.',
+'tooltip-undo' => '«Des-hazer» abolta este trocamiento y la avre en el modo de previsteo. Permete ajustar una razón en el somario.',
 'tooltip-summary' => 'Entrar un somaryo kurto',
 
 # Attribution
 'anonymous' => '{{PLURAL:$1|Uzuario anonimo|Uzuarios anonimos}} de {{SITENAME}}',
 
+# Info page
+'pageinfo-contentpage-yes' => 'Si',
+'pageinfo-protect-cascading-yes' => 'Si',
+
 # Browsing diffs
 'previousdiff' => '← Trocamiento más antiguo',
 'nextdiff' => 'Edición más nueva →',
 
 # Media information
-'file-info-size' => '$1 × $2 píkseles; boy del arxivo: $3; tipo MIME: $4',
+'file-info-size' => '$1 × $2 píkseles; boy de la dosya: $3; tipo MIME: $4',
 'file-nohires' => 'No disponible a mayor resolución.',
 'svg-long-desc' => 'arxivo SVG, nominalmente $1 × $2 píkseles, boy del arxivo: $3',
-'show-big-image' => 'Resolución original',
+'show-big-image' => 'Dosya orijinal',
+
+# Special:NewFiles
+'showhidebots' => '($1 bots)',
+'ilsubmit' => 'Bushkar',
+'bydate' => 'por data',
+
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'seconds' => '{{PLURAL:$1|$1 segundo|$1 segundos}}',
+'minutes' => '{{PLURAL:$1|$1 minuto|$1 minutos}}',
+'hours' => '{{PLURAL:$1|$1 ora|$1 oras}}',
+'days' => '{{PLURAL:$1|$1 diya|$1 diyas}}',
+'weeks' => '{{PLURAL:$1|$1 semana|$1 semanas}}',
+'months' => '{{PLURAL:$1|$1 mez|$1 mezes}}',
+'years' => '{{PLURAL:$1|$1 anyo|$1 anyos}}',
+'ago' => 'aze $1',
+'just-now' => 'endagora',
+
+# Human-readable timestamps
+'hours-ago' => 'aze $1{{PLURAL:$1|ora|oras}}',
+'minutes-ago' => 'aze {{PLURAL:$1|minuto|minutos}}',
+'seconds-ago' => 'aze {{PLURAL:$1|segundo|segundos}}',
+'monday-at' => 'El lunes a la $1',
+'tuesday-at' => 'El martes a la $1',
+'wednesday-at' => 'El mierkoles a la $1',
+'thursday-at' => 'El djuves a la $1',
+'friday-at' => 'El viernes a la $1',
+'saturday-at' => 'El shabat a la $1',
+'sunday-at' => 'El alhad a la $1',
+'yesterday-at' => 'Ayer a la $1',
 
 # Bad image list
 'bad_image_list' => 'El formato es ansina:
 
 Sólo elementos de lista (liñas empeçando con *) se toman en konsidherasyón.
-El primer atamiento de cada liña deve de atarse con una dosya negra (la dosya que se quere blokar).
-Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones (yaani hojas ande la dosya puede aparecer encaxada en la liña)',
+El primer atamiento de cada liña se deve de atar a una dosya negra (la dosya que se quere blokar).
+Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones (hojas, ande la dosya puede aparecer en la liña, ande se puede kullânear la dosya).',
 
 # Metadata
 'metadata' => 'Metadatos',
-'metadata-help' => 'Este arxivo contiene enformación adicional (metadatos), probablemente ajustada por la cámara digital, el escáner o el programa usado para crearlo o digitalizarlo. Si el arxivo fue modificado desde su estado original, puede aver perdido algunos detalyos.',
+'metadata-help' => 'Esta dosya contiene mas información (metadatos), probablemente ajustada por la kamera dizhital, el eskáner o la proǵrama kullaneado para criarlo o dizhitalizarlo. Si la dosya fue trocada de su estado orizhinal, puede aver pèryido algunos detalyos.',
 'metadata-expand' => 'Mostra los detalyos ekstendidos',
 'metadata-collapse' => 'Esconder los detalyos ekstendidos',
 'metadata-fields' => 'Los campos de metadatos que se listan en este messaje se van a amostrar en la hoja de la deskripsión de la foto daínda cuando la tabla de metadatos está cerrada.
@@ -1151,9 +1504,17 @@ Los otros campos se van a guardar por defecto.
 * gpsaltitude',
 
 # Exif tags
+'exif-artist' => 'Otor',
 'exif-filesource' => 'Manadéro de archivo',
 'exif-gpstimestamp' => 'Tiémpo GPS (óra atómica)',
 'exif-gpsdatestamp' => 'Dáta GPS',
+'exif-languagecode' => 'Lengua',
+
+'exif-copyrighted-true' => 'Kon derechos del otor',
+
+'exif-componentsconfiguration-0' => 'no egziste',
+
+'exif-exposureprogram-1' => 'Giya',
 
 'exif-meteringmode-255' => 'Otro',
 
@@ -1172,10 +1533,7 @@ Los otros campos se van a guardar por defecto.
 
 'exif-iimcategory-hth' => 'Salud',
 'exif-iimcategory-lab' => 'Lavoro',
-
-# External editor support
-'edit-externally' => 'Trocar esto arxivo usando una aplicación eksterna',
-'edit-externally-help' => '(Melda las [https://www.mediawiki.org/wiki/Manual:External_editors enstruksiones de configuración] -en inglés- para saber más)',
+'exif-iimcategory-sci' => 'Sensiya i teknolojiya',
 
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todos',
@@ -1183,10 +1541,10 @@ Los otros campos se van a guardar por defecto.
 'monthsall' => '(todos)',
 
 # Email address confirmation
-'confirmemail' => 'Konfirmar direksion e-pósta',
+'confirmemail' => 'Konfirmar adreso de korreo elektronika',
 'confirmemail_send' => 'Embiar el kodigo de konfirmasion.',
 'confirmemail_sent' => 'Konfirmasion de pósta embiada.',
-'confirmemail_success' => 'Su direksion de pósta a sido konfirmada. Agóra puedes registrarse e kolaborar en el wiki.',
+'confirmemail_success' => 'Su adreso de korreo elektronika a sido konfirmada. Agóra puedes [[Special:UserLogin|entrar]] e kolaborar en el wiki.',
 
 # Delete conflict
 'recreate' => 'Krear de muevo',
@@ -1194,11 +1552,21 @@ Los otros campos se van a guardar por defecto.
 # action=purge
 'confirm_purge_button' => 'Akseptár',
 
+# action=watch/unwatch
+'confirm-watch-button' => "D'akodro",
+'confirm-unwatch-button' => "D'akodro",
+
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← pajina anterior',
 'imgmultipagenext' => 'siguiente pajina →',
 'imgmultigo' => 'Ir!',
 
+# Language selector for translatable SVGs
+'img-lang-go' => 'Ir',
+
 # Table pager
 'table_pager_next' => 'Pajina siguiente',
 'table_pager_prev' => 'Pajina anterior',
@@ -1209,7 +1577,7 @@ Los otros campos se van a guardar por defecto.
 
 # Auto-summaries
 'autoredircomment' => 'Redireksionado a [[$1]]',
-'autosumm-new' => 'Pajina mueva: $1',
+'autosumm-new' => 'Pajina kreado con "$1"',
 
 # Live preview
 'livepreview-loading' => 'Cargando...',
@@ -1228,11 +1596,19 @@ Los otros campos se van a guardar por defecto.
 'version-specialpages' => 'Pajinas espesiales',
 'version-other' => 'Otros',
 'version-version' => '(Versión $1)',
+'version-ext-colheader-credits' => 'Otores',
 'version-poweredby-others' => 'otros',
 'version-software-version' => 'Versión',
+'version-entrypoints-header-url' => 'URL',
+
+# Special:Redirect
+'redirect-submit' => 'Ir',
+'redirect-value' => 'Valor:',
+'redirect-file' => 'Nombre de archivo',
 
 # Special:FileDuplicateSearch
-'fileduplicatesearch-submit' => 'Buscar',
+'fileduplicatesearch-filename' => 'Nombre de archivo:',
+'fileduplicatesearch-submit' => 'Bushkar',
 
 # Special:SpecialPages
 'specialpages' => 'Hojas especiales',
@@ -1251,7 +1627,10 @@ Los otros campos se van a guardar por defecto.
 # Special:Tags
 'tag-filter' => 'Filtro de [[Special:Tags|etiquetas]]:',
 'tag-filter-submit' => 'Filtro',
+'tags-active-yes' => 'Si',
+'tags-active-no' => 'No',
 'tags-edit' => 'trocar',
+'tags-hitcount' => '$1 {{PLURAL:$1|kambio|kambios}}',
 
 # Special:ComparePages
 'compare-page1' => 'Hoja 1',
@@ -1262,13 +1641,36 @@ Los otros campos se van a guardar por defecto.
 
 # HTML forms
 'htmlform-selectorother-other' => 'Otro',
+'htmlform-no' => 'No',
+'htmlform-yes' => 'Si',
 
 # New logging system
-'logentry-newusers-autocreate' => 'El cuento $1 fue crîado otomatika mente',
+'logentry-newusers-autocreate' => 'El cuento de usuario $1 fue {{GENDER:$2|kreado}} otomatikamente',
+'rightsnone' => '(dinguno)',
 
 # Feedback
 'feedback-subject' => 'Sujeto',
 'feedback-message' => 'Messaje',
 'feedback-cancel' => 'Anular',
 
+# Search suggestions
+'searchsuggest-search' => 'Bushkar',
+
+# Durations
+'duration-seconds' => '$1{{PLURAL:$1|segundo|segundos}}',
+'duration-minutes' => '$1{{PLURAL:$1|minuto|minutos}}',
+'duration-hours' => '$1{{PLURAL:$1|ora|oras}}',
+'duration-days' => '$1{{PLURAL:$1|diya|diyas}}',
+'duration-weeks' => '$1{{PLURAL:$1|semana|semanas}}',
+'duration-years' => '$1{{PLURAL:$1|anyo|anyos}}',
+'duration-decades' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+'duration-centuries' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+
+# Limit report
+'limitreport-cputime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+
+# Special:ExpandTemplates
+'expand_templates_ok' => "D'akodro",
+
 );
index 2702c19..540d1b0 100644 (file)
@@ -57,7 +57,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Falschen_Titel' ),
        'Blankpage'                 => array( 'Eidel_Säit' ),
        'Block'                     => array( 'Spären' ),
-       'Blockme'                   => array( 'Mech_spären' ),
        'Booksources'               => array( 'Bicher_mat_hirer_ISBN_sichen' ),
        'BrokenRedirects'           => array( 'Futtis_Viruleedungen' ),
        'Categories'                => array( 'Kategorien' ),
@@ -69,10 +68,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Benotzerkont_opmaachen' ),
        'Deadendpages'              => array( 'Sakgaasse-Säiten' ),
        'DeletedContributions'      => array( 'Geläschte_Kontributiounen' ),
-       'Disambiguations'           => array( 'Homonymie' ),
        'DoubleRedirects'           => array( 'Duebel_Viruleedungen' ),
        'EditWatchlist'             => array( 'Iwwerwaachungslëscht_änneren' ),
        'Emailuser'                 => array( 'Dësem_Benotzer_eng_E-Mail_schécken' ),
+       'ExpandTemplates'           => array( 'Schablounen_erweideren' ),
        'Export'                    => array( 'Exportéieren' ),
        'Fewestrevisions'           => array( 'Säite_mat_de_mannsten_Ännerungen' ),
        'FileDuplicateSearch'       => array( 'No_duebele_Fichieren_sichen' ),
@@ -116,6 +115,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Protegéiert_Säiten' ),
        'Protectedtitles'           => array( 'Gespaarte_Säiten' ),
        'Randompage'                => array( 'Zoufälleg_Säit' ),
+       'RandomInCategory'          => array( 'Zoufälleg_Säit_aus_der_Kategorie' ),
        'Randomredirect'            => array( 'Zoufälleg_Viruleedung' ),
        'Recentchanges'             => array( 'Rezent_Ännerungen' ),
        'Recentchangeslinked'       => array( 'Ännerungen_op_verlinkte_Säiten' ),
@@ -207,7 +207,6 @@ $messages = array(
 'tog-minordefault' => "All Ännerungen automatesch als 'Kleng Ännerungen' markéieren.",
 'tog-previewontop' => "Déi ''nach-net gespäichert Versioun'' iwwer der Ännerungsfënster weisen",
 'tog-previewonfirst' => "Beim éischten Änneren déi  ''nach net gespäichert Versioun'' weisen.",
-'tog-nocache' => 'Säitecache vum Browser desaktivéieren',
 'tog-enotifwatchlistpages' => 'Schéckt mir eng E-Mail wann eng Säit oder e Fichier op menger Iwwerwaachungslëscht geännert gëtt',
 'tog-enotifusertalkpages' => 'Schéckt mir E-Maile wa meng Diskussiounssäit geännert gëtt.',
 'tog-enotifminoredits' => 'Schéckt mir och bei klengen Ännerungen op vu mir iwwerwaachte Säiten oder Fichieren eng E-Mail.',
@@ -343,7 +342,6 @@ $messages = array(
 'qbedit' => 'Änneren',
 'qbpageoptions' => 'Säitenoptiounen',
 'qbmyoptions' => 'Meng Säiten',
-'qbspecialpages' => 'Spezialsäiten',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -403,7 +401,7 @@ $messages = array(
 'articlepage' => 'Säit',
 'talk' => 'Diskussioun',
 'views' => 'Affichagen',
-'toolbox' => 'Geschir (Tools)',
+'toolbox' => 'Geschirkëscht',
 'userpage' => 'Benotzersäit',
 'projectpage' => 'Meta-Text',
 'imagepage' => 'Billersäit kucken',
@@ -559,9 +557,6 @@ Eng Erklärung gouf net ginn.",
 'perfcached' => 'Dës Date kommen aus dem Tëschespäicher a si méiglecherweis net aktuell. Maximal {{PLURAL:$1|ee Resultat ass|$1 Resultater sinn}} am Tësche späicher disponibel.',
 'perfcachedts' => "Dës Donnéeë kommen aus dem Tëschespäicher, a goufe fir d'lescht den $1 aktualiséiert. Maximal {{PLURAL:$4|ee Resultat ass|$4 Resultater sinn}} am Tëschespäicher disponibel.",
 'querypage-no-updates' => "D'Aktualiséierung vun dëser Säit ass zur Zäit ausgeschalt. D'Date gi bis op weideres net aktualiséiert.'''",
-'wrong_wfQuery_params' => 'Falsche Parameter fir wfQuery()<br />
-Funktioun: $1<br />
-Ufro: $2',
 'viewsource' => 'Quelltext kucken',
 'viewsource-title' => 'Quelltext vun der Säit $1 weisen',
 'actionthrottled' => 'Dës Aktioun gouf gebremst',
@@ -593,6 +588,7 @@ Den Administrateur den d\'Schreiwe gespaart huet, huet dës Erklärung uginn: "$
 'invalidtitle-unknownnamespace' => 'Net valabelen Titel mat der onbekannter Nummraum-Zuel $1 a mam Text "$2"',
 'exception-nologin' => 'Net ageloggt',
 'exception-nologin-text' => '[[Special:Userlogin|Loggt Iech w.e.g. a]] fir op dës Säit oder dës Aktioun zougräifen ze kënnen.',
+'exception-nologin-text-manual' => 'Dir musst Iech $1 fir dës Säit kucken ze kënne respektiv fir dës Aktioun ze maachen.',
 
 # Virus scanner
 'virus-badscanner' => "Schlecht Konfiguratioun: onbekannte Virescanner: ''$1''",
@@ -695,7 +691,7 @@ Probéiert w.e.g. nach eng Kéier.",
 'passwordtooshort' => 'Passwierder musse mindestens {{PLURAL:$1|1 Zeeche|$1 Zeeche}} laang sinn.',
 'password-name-match' => 'Äert Passwuert muss verschidde vun Ärem Benotzernumm sinn.',
 'password-login-forbidden' => "D'Benotze vun dësem Benotzernumm a Passwuert gouf verbueden.",
-'mailmypassword' => 'Neit Passwuert per E-Mail kréien',
+'mailmypassword' => 'Passwuert zrécksetzen',
 'passwordremindertitle' => 'Neit Passwuert fir ee {{SITENAME}}-Benotzerkont',
 'passwordremindertext' => 'Iergendeen (waarscheinlech Dir, mat der IP-Adress $1) huet en neit Passwuert fir {{SITENAME}} ($4) gefrot. Een temporäert Passwuert fir de Benotzer $2 gouf ugeluecht an et ass: $3. Wann et dat ass, wat Dir wollt, da sollt Dir Iech elo aloggen an en neit Passwuert eraussichen. Äert temporäert Passwuert leeft a(n) {{PLURAL:$5|engem Dag| $5 Deeg}} of.
 
@@ -745,7 +741,7 @@ Wann Dir en ugitt, gëtt e benotzt fir d'Benotzerattributiounen fir Är Aarbecht
 'user-mail-no-body' => 'Et gouf probéiert eng E-Mail ouni Text oder mat engem ze kuerzen Text ze schécken.',
 
 # Change password dialog
-'resetpass' => 'Passwuert änneren',
+'changepassword' => 'Passwuert änneren',
 'resetpass_announce' => 'Dir sidd mat engem temporären , per E-Mail geschéckte Code ageloggt.
 Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
 'resetpass_text' => '<!-- Schreiwt ären Text heihin-->',
@@ -767,7 +763,7 @@ Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwu
 # Special:PasswordReset
 'passwordreset' => 'Passwuert zrécksetzen',
 'passwordreset-text-one' => 'Fëllt dëse Formulaire aus fir Äert Passwuert zréckzesetzen.',
-'passwordreset-text-many' => '{{PLURAL:$1|Fëllt eent vun de Felder aus fir Äert Passwuert zeréckzesetzen.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Fëllt eent vun de Felder aus fir en temporäert Passwuert per E-Mail ze kréien.}}',
 'passwordreset-legend' => 'Passwuert zrécksetzen',
 'passwordreset-disabled' => "D'Zerécksetze vum Passwuert ass op dëser Wiki ausgeschalt.",
 'passwordreset-emaildisabled' => "D'E-Mail-Funktioune goufen op dëser Wiki ausgeschalt.",
@@ -971,7 +967,8 @@ Dir musst Är Ännerungen an dat iewescht Textfeld androen.
 '''Nëmmen''' den Text aus dem ieweschten Textfeld gëtt gehale wann Dir op \"{{int:savearticle}}\" klickt.",
 'yourtext' => 'Ären Text',
 'storedversion' => 'Gespäichert Versioun',
-'nonunicodebrowser' => "'''OPGEPASST:''' Äre Browser ass net Unicode kompatibel. Ännert dat w.e.g. éier Dir eng Säit ännert.",
+'nonunicodebrowser' => "'''OPGEPASST: Äre Browser ass net Unicode kompatibel.'''
+E 'workaround' gëtt agesat deen et erlaabt Säite sécher z'änneren: Net-ASCII Zeeche ginn an der Ännerungskëscht als hexadezimal-Code gewisen.",
 'editingold' => "'''OPGEPASST: Dir ännert eng al Versioun vun dëser Säit. Wann Dir späichert, sinn all rezent Versioune vun dëser Säit verluer.'''",
 'yourdiff' => 'Ënnerscheeder',
 'copyrightwarning' => "W.e.g. notéiert datt all Kontributiounen op {{SITENAME}} automatesch ënner der $2 (kuckt $1 fir méi Informatiounen) verëffentlecht sinn.
@@ -996,7 +993,7 @@ Den Administrateur den d'Datebank gespaart huet, huet dës Erklärung ginn: $1",
 'template-semiprotected' => '(gespaart fir net-ugemellten an nei Benotzer)',
 'hiddencategories' => 'Dës Säit gehéiert zu {{PLURAL:$1|1 verstoppter Kategorie|$1 verstoppte Kategorien}}:',
 'edittools' => '<!-- Dësen Text gëtt ënner dem "Ännere"-Formulaire souwéi dem "Eropluede"-Formulaire ugewisen. -->',
-'nocreatetext' => "Op {{SITENAME}} gouf d'Schafe vun neie Säite limitéiert. Dir kënnt Säiten déi scho bestinn änneren oder Iech [[Special:UserLogin|umellen]].",
+'nocreatetext' => "Op {{SITENAME}} gouf d'Schafe vun neie Säite limitéiert. Dir kënnt Säiten déi scho bestinn änneren oder Iech [[Special:UserLogin|aloggen oder e Benotzerkont opmaachen]].",
 'nocreate-loggedin' => 'Dir hutt keng Berechtigung fir nei Säiten unzeleeën.',
 'sectioneditnotsupported-title' => 'Ännere vum Abschnitt gëtt net ënnerstëtzt',
 'sectioneditnotsupported-text' => "D'Ännere vun Abschnitte gëtt op dëser Ännerungssäit net ënnerstëtzt.",
@@ -1023,6 +1020,7 @@ Si gouf anscheinend geläscht.",
 'content-not-allowed-here' => '"$1"-Inhalt ass op der Säit [[$2]] net erlaabt',
 'editwarning-warning' => 'Wann Dir dës Säit verloosst kann dat dozou féieren datt Dir all Ännerungen, déi Dir gemaach hutt, verléiert.
 Wann Dir ageloggt sidd, kënnt Dir dës Warnung an der Sektioun "Änneren" vun Ären Astellungen ausschalten.',
+'editpage-notsupportedcontentformat-text' => 'De Format vum Inhalt $1 gëtt net vum Modell vum Inhalt $2 ënnerstëtzt.',
 
 # Content models
 'content-model-wikitext' => 'Wikitext',
@@ -1057,6 +1055,9 @@ Et däerfen net méi wéi $2 {{PLURAL:$2|Ufro|Ufroe}} sinn, aktuell {{PLURAL:$2|
 'cantcreateaccount-text' => 'D\'Opmaache vu Benotzerkonten vun dëser IP Adress (\'\'\'$1\'\'\') gouf vum [[User:$3|$3]] gespaart.
 
 De Benotzer $3 huet "$2" als Grond uginn.',
+'cantcreateaccount-range-text' => "D'Uleeë vu Benotzerkonte vun IP-Adressen aus dem Beräich \"\$1\", zu deem Är IP-Adress ('''\$4''') gehéiert, gouf vum [[User:\$3|\$3]] gespaart.
+
+De Grond den den \$3 uginn huet ass ''\$2''",
 
 # History pages
 'viewpagelogs' => 'Logbicher fir dës Säit weisen',
@@ -1127,10 +1128,6 @@ Dir kënnt dësen Ënnerscheed gesinn; Detailer fannt Dir am [{{fullurl:{{#Speci
 'revisiondelete' => 'Versioune läschen/restauréieren',
 'revdelete-nooldid-title' => 'Ongülteg Zilversioun',
 'revdelete-nooldid-text' => 'Dir hutt entweder keng Versioun uginn fir dës Funktioun ze benotzen, déi Versioun déi Dir uginn hutt gëtt et net, oder dir versicht déi aktuell Versioun ze verstoppen.',
-'revdelete-nologtype-title' => 'Keen Typ vu Logbuch uginn',
-'revdelete-nologtype-text' => 'Dir hutt keen Typ vu Logbuch ugi fir dës Aktioun ze maachen.',
-'revdelete-nologid-title' => 'Net valabele Wäert am Logbuch',
-'revdelete-nologid-text' => 'Dir hutt kee Logtyp erausgesicht oder de gewielte Logtyp gëtt et net.',
 'revdelete-no-file' => 'De Fichier deen ugi war gëtt et net.',
 'revdelete-show-file-confirm' => 'Sidd Dir sécher datt Dir déi geläschte Versioun vum Fichier "<nowiki>$1</nowiki>" vum $2 ëm $3 gesi wëllt?',
 'revdelete-show-file-submit' => 'Jo',
@@ -1164,8 +1161,6 @@ $1",
 'logdelete-failure' => "'''D'Sichtbarkeet vum Logbuch konnt net agestllt ginn:'''
 $1",
 'revdel-restore' => 'Sichtbarkeet änneren',
-'revdel-restore-deleted' => 'geläscht Versiounen',
-'revdel-restore-visible' => 'sichtbar Versiounen',
 'pagehist' => 'Versioune vun dëser Säit',
 'deletedhist' => 'Geläscht Versiounen',
 'revdelete-hide-current' => 'Feeler beim Verstoppe vum Objet vum $2 ëm $1: et ass déi aktuell Versioun.
@@ -1247,12 +1242,8 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Resultat vum Sichen',
 'searchresults-title' => 'Resultater vum Sichen no "$1"',
-'searchresulttext' => "Fir méi Informatiounen iwwer d'Sichfunktiounen op {{SITENAME}}, kuckt w.e.g op [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Dir hutt no "[[:$1]]" gesicht ([[Special:Prefixindex/$1|all Säiten déi mat "$1" ufänken]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all Säiten déi op "$1" linken]])',
-'searchsubtitleinvalid' => 'Dir hutt no "$1" gesicht.',
 'toomanymatches' => 'Zevill Resultater goufe fonnt, versicht w.e.g. eng aner Ufro',
 'titlematches' => 'Iwwereneestëmmungen am Säitentitel',
-'notitlematches' => 'Keng Iwwereneestëmmunge mat Säitentitelen',
 'textmatches' => 'Iwwereneestëmmungen am Säitentext',
 'notextmatches' => 'Keng Iwwereneestëmmungen',
 'prevn' => 'vireg {{PLURAL:$1|$1}}',
@@ -1261,10 +1252,8 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => 'Nächst $1 {{PLURAL:$1|Resultat|Resultater}}',
 'shown-title' => '$1 {{PLURAL:$1|Resultat|Resultater}} pro Säit weisen',
 'viewprevnext' => 'Weis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Sichoptiounen',
 'searchmenu-exists' => "* Säit '''[[$1]]'''",
 'searchmenu-new' => "'''Opmaache vun der Säit ''[[:$1|$1]]'' op dëser Wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|All Säite weisen, déi mat dem Begrëff ufänken nodeem Dir sicht]]',
 'searchprofile-articles' => 'Säite mat Inhalt',
 'searchprofile-project' => 'Hëllef a Projetssäiten',
 'searchprofile-images' => 'Multimedia',
@@ -1285,20 +1274,16 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-default' => '$1 Resultater:',
 'search-interwiki-more' => '(méi)',
 'search-relatedarticle' => 'A Verbindung',
-'mwsuggest-disable' => 'Sich-Virschléi ausschalten',
 'searcheverything-enable' => 'An allen Nummraim sichen',
 'searchrelated' => 'a Verbindng',
 'searchall' => 'all',
 'showingresults' => "Hei gesitt der  {{PLURAL:$1| '''1''' Resultat|'''$1''' Resultater}}, ugefaange mat #'''$2'''.",
 'showingresultsnum' => "Hei gesitt der  {{PLURAL:$3|'''1''' Resultat|'''$3''' Resultater}}, ugefaange mat #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' vu(n) '''$3'''|Resultater '''$1 - $2''' vu(n) '''$3'''}} fir '''$4'''",
-'nonefound' => "'''Opgepasst''': Nëmmen e puer Nummraim gi ''par default'' duerchsicht. Versicht an ärer Ufro ''all:'' anzestellen fir de gesamten Inhalt (inklusiv Diskussiounssäiten, Schablonen, ...), oder benotzt déi gwënschten Nummraim als Virastellung.",
 'search-nonefound' => 'Fir Är Ufro gouf näischt fonnt.',
-'powersearch' => 'Erweidert Sich',
 'powersearch-legend' => 'Erweidert Sich',
 'powersearch-ns' => 'Sichen an den Nummraim:',
 'powersearch-redir' => 'Viruleedunge weisen',
-'powersearch-field' => 'Sichen no:',
 'powersearch-togglelabel' => 'Markéieren:',
 'powersearch-toggleall' => 'All',
 'powersearch-togglenone' => 'Keen',
@@ -1311,7 +1296,6 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'mypreferences' => 'Astellungen',
 'prefs-edits' => 'Zuel vun den Ännerungen:',
 'prefsnologintext2' => 'Dir musst Iech $1 fir Är Benotzerastellunge festzeleeën',
-'changepassword' => 'Passwuert änneren',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Kucken',
 'datedefault' => 'Egal (Standard)',
@@ -1334,13 +1318,11 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'prefs-email' => 'E-Mail-Optiounen',
 'prefs-rendering' => 'Ausgesinn',
 'saveprefs' => 'Späicheren',
-'resetprefs' => 'Net gespäichert Ännerungen zrécksetzen',
 'restoreprefs' => 'All Standardastellungen zrécksetzen (an allen Abschnitter)',
 'prefs-editing' => 'Änneren',
 'rows' => 'Zeilen',
 'columns' => 'Kolonnen',
 'searchresultshead' => 'Sichen',
-'resultsperpage' => 'Zuel vun de Resultater pro Säit:',
 'stub-threshold' => 'Maximum (a Byte) bei deem e Link nach ëmmer am <a href="#" class="stub">Skizze-Format</a> gewise gëtt:',
 'stub-threshold-disabled' => 'Desaktivéiert',
 'recentchangesdays' => 'Deeg déi an de Rezenten Ännerungen ugewise ginn:',
@@ -1353,7 +1335,6 @@ Detailer fannt Dir am [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'localtime' => 'Lokalzäit:',
 'timezoneuseserverdefault' => 'De Standardwäert vun der Wiki ($1) benotzen',
 'timezoneuseoffset' => 'Aner (Differenz uginn)',
-'timezoneoffset' => 'Zäit-Differenz¹:',
 'servertime' => 'Serverzäit:',
 'guesstimezone' => 'Vum Browser iwwerhuelen',
 'timezoneregion-africa' => 'Afrika',
@@ -1403,7 +1384,7 @@ Dës Informatioun ass ëffentlech.",
 'email' => 'E-Mail',
 'prefs-help-realname' => 'Äre richtegen Numm ass fakultativ. Wann Dir en ugitt, gëtt e benotzt fir Iech Är Kontributiounen zouzeuerdnen.',
 'prefs-help-email' => "D'E-Mailadress ass fakultativ, awer si gëtt gebraucht fir Iech Äert Passwuert ze mailen, wann Dir et géift vergiessen.",
-'prefs-help-email-others' => 'Dir kënnt Iech och dofir decidéieren datt Anerer Iech iwwer Är Diskussiounssäit kontaktéieren ouni datt Dir dobäi Är Identitéit verrode musst.',
+'prefs-help-email-others' => 'Dir kënnt Iech och dofir decidéieren datt Anerer Iech iwwer Är Diskussiounssäit kontaktéieren ouni datt Dir derbäi Är Identitéit verrode musst.',
 'prefs-help-email-required' => 'Eng gëlteg E-Mail-Adress gëtt heifir gebraucht.',
 'prefs-info' => 'Grondinformatioun',
 'prefs-i18n' => 'Internationalisatioun',
@@ -1423,6 +1404,7 @@ Dës Informatioun ass ëffentlech.",
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Ënnerscheeder',
 'prefs-help-prefershttps' => 'Dës Astellung gëtt déi nächste Kéier wierksam wou Dir Iech ageloggt.',
+'prefs-tabs-navigation-hint' => "Tipp: Dir kënnt d'Feiler no lénks an no riets benotze fir tëscht den Tabs an der Lëscht vun den Tabs ze navigéieren.",
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => "D'E-Mail-Adress schéngt valabel ze sinn",
@@ -1608,9 +1590,10 @@ Dës Informatioun ass ëffentlech.",
 'recentchanges-label-minor' => 'Dëst ass eng kleng Ännerung',
 'recentchanges-label-bot' => 'Dës Ännerung gouf vun engem Bot gemaacht',
 'recentchanges-label-unpatrolled' => 'Dës Ännerung gouf nach net nogekuckt',
+'recentchanges-label-plusminus' => "D'Gréisst vun der Säit huet sech ëm déi Zuel vu Bytes geännert",
+'recentchanges-legend-heading' => "'''Legend:'''",
 'recentchanges-legend-newpage' => '(kuckt och [[Special:NewPages|Lëscht vun den neie Säiten]])',
 'recentchanges-legend-plusminus' => "''(±123)''",
-'rcnote' => "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht '''$1''' Ännerungen}} {{PLURAL:$2|vum leschten Dag|vun de leschten '''$2''' Deeg}}, Stand: $4 ëm $5 Auer.",
 'rcnotefrom' => "Ugewise ginn d'Ännerunge vum '''$2''' un (maximal '''$1''' Ännerunge gi gewisen).",
 'rclistfrom' => 'Nei Ännerunge vu(n) $1 u weisen',
 'rcshowhideminor' => 'Kleng Ännerunge $1',
@@ -2057,6 +2040,7 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'ninterwikis' => '$1 {{PLURAL:$1|Interwiki-Link|Interwiki-Linken}}',
 'nlinks' => '$1 {{PLURAL:$1|Link|Linken}}',
 'nmembers' => '$1 {{PLURAL:$1|Member|Memberen}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|Member|Memberen}}',
 'nrevisions' => '$1 {{PLURAL:$1|Versioun|Versiounen}}',
 'nviews' => '$1 {{PLURAL:$1|Offro|Offroen}}',
 'nimagelinks' => 'Benotzt op {{PLURAL:$1|enger Säit|$1 Säiten}}',
@@ -2094,14 +2078,14 @@ An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun d
 'protectedpages' => 'Gespaart Säiten',
 'protectedpages-indef' => 'Nëmme onbegrenzt-gespaarte Säite weisen',
 'protectedpages-cascade' => 'Nëmme Säiten déi duerch Kaskade gespaart sinn',
-'protectedpagestext' => 'Dës Säite si gespaart sou datt si weder geännert nach geréckelt kënne ginn',
+'protectedpages-noredirect' => 'Viruleedunge verstoppen',
 'protectedpagesempty' => 'Elo si keng Säite mat dëse Parameteren gespaart.',
 'protectedtitles' => 'Gespaarten Titel',
-'protectedtitlestext' => 'Dës Titele si gespaart an et ka keng Säit mat deenen Titelen ugeluecht ginn',
 'protectedtitlesempty' => 'Zur Zäit si mat de Parameteren déi Dir uginn hutt keng Säite fir neit Uleeë gespaart.',
 'listusers' => 'Benotzerlëscht',
 'listusers-editsonly' => 'Nëmme Benotzer mat Ännerunge weisen',
 'listusers-creationsort' => 'Nom Datum vum Uleeën zortéieren',
+'listusers-desc' => 'Vu grouss op kleng zortéieren',
 'usereditcount' => '$1 {{PLURAL:$1|Ännerung|Ännerungen}}',
 'usercreated' => "{{GENDER:$3|De(n)|D'}} $1 ëm $2 Auer ugeluecht",
 'newpages' => 'Nei Säiten',
@@ -2148,9 +2132,6 @@ Dir kënnt d'Siche limitéieren wann Dir e Log-Typ, e Benotzernumm (case-senisit
 'allpagesto' => 'Weis Säite bis:',
 'allarticles' => 'All Säiten',
 'allinnamespace' => "All d'Säiten ($1 Nummraum)",
-'allnotinnamespace' => "All d'Säiten (net am $1 Nummraum)",
-'allpagesprev' => 'Vireg',
-'allpagesnext' => 'Nächst',
 'allpagessubmit' => 'Lass',
 'allpagesprefix' => 'Säite mat Prefix weisen:',
 'allpagesbadtitle' => 'Den Titel vun dëser Säit ass net valabel oder hat en Interwiki-Prefix. Et ka sinn datt een oder méi Zeechen drasinn, déi net an Titele benotzt kënne ginn.',
@@ -2252,7 +2233,7 @@ D\'E-Mail-Adress, déi Dir an [[Special:Preferences|Ären Astellungen]] aginn hu
 'emailccsubject' => 'Kopie vun denger Noriicht un $1: $2',
 'emailsent' => 'E-Mail geschéckt',
 'emailsenttext' => 'Är E-Mail gouf fortgeschéckt.',
-'emailuserfooter' => 'Dës E-Mail gouf vum $1 dem $2 geschéckt dobäi gouf d\'Funktioun "Benotzer E-Mail" op {{SITENAME}} benotzt.',
+'emailuserfooter' => 'Dës E-Mail gouf vum $1 dem $2 geschéckt derbäi gouf d\'Funktioun "Benotzer E-Mail" op {{SITENAME}} benotzt.',
 
 # User Messenger
 'usermessage-summary' => 'Benoriichtegung hannerloossen.',
@@ -2378,6 +2359,7 @@ D'Läsche vu sou Säite gouf limitéiert fir ongewollte Stéierungen op {{SITENA
 'delete-warning-toobig' => "Dës Säit huet eng laang Versiounsgeschicht, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.
 D'Läschen dovu kann zu Stéierungen am Fonctionnement vun {{SITENAME}} féieren;
 dës Aktioun soll mat Virsiicht gemaach ginn.",
+'deleting-backlinks-warning' => "'''Opgepasst:''' Aner Säite linken op d'Säit déi Dir am Gaang sidd ze läschen.",
 
 # Rollback
 'rollback' => 'Ännerungen zrécksetzen',
@@ -2491,7 +2473,6 @@ A sou Fäll däerf déi neist Versioun net markéiert ginn oder déi neist gelä
 'undeletebtn' => 'Restauréieren',
 'undeletelink' => 'weisen/restauréieren',
 'undeleteviewlink' => 'weisen',
-'undeletereset' => 'Ofbriechen',
 'undeleteinvert' => 'Auswiel ëmdréinen',
 'undeletecomment' => 'Grond:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|Versioun gouf|$1 Versioune goufe}} restauréiert',
@@ -2579,13 +2560,11 @@ $1',
 'block' => 'Benotzer spären',
 'unblock' => "D'Spär vum Benotzer ophiewen",
 'blockip' => 'Benotzer spären',
-'blockip-title' => 'Benotzer spären',
 'blockip-legend' => 'Benotzer spären',
 'blockiptext' => 'Benotzt dëse Formulaire fir eng spezifesch IP-Adress oder e Benotzernumm ze spären. Dëst soll nëmmen am Fall vu Vandalismus gemaach ginn, en accordance mat den [[{{MediaWiki:Policy-url}}|interne Richlinen]]. Gitt e spezifesche Grond un (zum Beispill Säite wou Vandalismus virgefall ass).',
 'ipadressorusername' => 'IP-Adress oder Benotzernumm:',
 'ipbexpiry' => 'Gültegkeet:',
 'ipbreason' => 'Grond:',
-'ipbreasonotherlist' => 'Anere Grond',
 'ipbreason-dropdown' => "*Heefeg Ursaache fir Benotzer ze spären:
 **Bewosst falsch Informatiounen an eng oder méi Säite gesat
 **Ouni Grond Inhalt vu Säite geläscht
@@ -2601,8 +2580,6 @@ $1',
 'ipbsubmit' => 'Dës IP-Adress resp dëse Benotzer spären',
 'ipbother' => 'Aner Dauer:',
 'ipboptions' => '2 Stonnen:2 hours,1 Dag:1 day,3 Deeg:3 days,1 Woch:1 week,2 Wochen:2 weeks,1 Mount:1 month,3 Méint:3 months,6 Méint:6 months,1 Joer:1 year,onbegrenzt:infinite',
-'ipbotheroption' => 'Aner Dauer',
-'ipbotherreason' => 'Aneren oder zousätzleche Grond:',
 'ipbhidename' => 'Benotzernumm op Lëschten a bei Ännerunge verstoppen',
 'ipbwatchuser' => 'Dësem Benotzer seng Benotzer- an Diskussiouns-Säit iwwerwaachen',
 'ipb-disableusertalk' => "Dëse Benotzer dorun hënnere fir seng eegen Diskussiounssäit z'ännere sou laang wéi et gespaart ass",
@@ -2615,6 +2592,7 @@ $1',
 Kuckt d'[[Special:BlockList|Spär-Lëscht]] fir all Spären nozekucken.",
 'ipb-blockingself' => 'Dir sidd am gaang Iech selwer ze spären! Sidd Dir sécher datt Dir dat maache wëllt?',
 'ipb-confirmhideuser' => 'Dir sidd am Gaang e Benotzer ze späre mat der Funktioun "Benotzer verstoppen" ageschalt. Dëst hëlt den Numm vum Benotzer aus alle Lëschten a Logbicher eraus. Sidd Dir sécher datt Dir dat maache wëllt?',
+'ipb-confirmaction' => 'Wann Dir sécher sidd datt Dir dat wierklech maache wëllt da markéiert w.e.g. d\'"{{int:ipb-confirm}}" hei drënner.',
 'ipb-edit-dropdown' => 'Spärgrënn änneren',
 'ipb-unblock-addr' => 'Spär vum $1 ophiewen',
 'ipb-unblock' => 'Spär vun enger IP-Adress oder engem Benotzer ophiewen',
@@ -2692,7 +2670,6 @@ Si ass awer als Deel vun der Rei $2 gespaart, an dës Spär kann opgehuewe ginn.
 'sorbsreason' => 'Är IP Adress steet als oppene Proxy an der schwaarzer Lëscht (DNSBL) déi vu {{SITENAME}} benotzt gëtt.',
 'sorbs_create_account_reason' => 'Är IP-Adress steet als oppene Proxy an der schwaarzer Lëscht déi op {{SITENAME}} benotzt gëtt. DIr kënnt keen neie Benotzerkont opmaachen.',
 'xffblockreason' => 'Eng IP-Adress am X-Forwarded-For-Header gouf gespaart, entweder Är oder déi vum Proxyserver deen Dir benotzt. De Grond vun der Spär war: $1',
-'cant-block-while-blocked' => 'Dir däerft keng aner Benotzer spären, sou lang wéi Dir selwer gespaart sidd.',
 'cant-see-hidden-user' => "De Benotzer deen Dir versicht ze spären ass scho gespaart a verstoppt. Well Dir d'Recht ''Hideuser'' net hutt kënnt Dir dëse Benotzer net gesinn an dem Benotzer seng Spär net änneren.",
 'ipbblocked' => 'Dir kënnt keng aner Benotzer spären oder hir Spär ophiewen well Dir selwer gespaart sidd',
 'ipbnounblockself' => 'Dir kënnt Är Spär net selwer ophiewen',
@@ -2755,7 +2732,6 @@ verstitt w.e.g. d'Konsequenze vun ärer Handlung ier Dir dëst maacht.",
 An deene Fäll musst Dir d'Diskussiounssäit manuell réckelen oder fusionéieren.",
 'movearticle' => 'Säit réckelen:',
 'moveuserpage-warning' => "'''Opgepasst:''' Dir sidd am gaang eng Benotzersäit ze réckelen. Denkt w.e.g. dorunn datt just d'Säit geréckelt gëtt an datt de Benotzer ''net'' ëmbenannt gëtt.",
-'movenologin' => 'Net ageloggt',
 'movenologintext' => 'Dir musst e registréierte Benotzer an [[Special:UserLogin|ageloggt]] sinn, fir eng Säit ze réckelen.',
 'movenotallowed' => 'Dir hutt net déi néideg Rechter fir Säiten ze réckelen.',
 'movenotallowedfile' => "Dir hutt net d'Recht fir Fichieren ze réckelen.",
@@ -2771,8 +2747,6 @@ An deene Fäll musst Dir d'Diskussiounssäit manuell réckelen oder fusionéiere
 'articleexists' => 'Eng Säit mat dësem Numm gëtt et schonn, oder den Numm deen Dir gewielt hutt gëtt net akzeptéiert.
 Wielt w.e.g. en aneren Numm.',
 'cantmove-titleprotected' => "Dir kënnt keng Säit op dës Plaz réckelen, well deen neien Titel fir d'Uleeë gespaart ass.",
-'talkexists' => "D'Säit selwer gouf geréckelt, mä d'Diskussiounssäit konnt net mat eriwwergeholl gi well et schonn eng ënner deem neien Titel gëtt. W.e.g. setzt dës manuell zesummen.",
-'movedto' => 'geréckelt op',
 'movetalk' => 'Déi associéiert Diskussiounssäit matréckelen',
 'move-subpages' => 'Ënnersäite (bis zu $1) réckelen',
 'move-talk-subpages' => 'Ënnersäite vun der Diskussiounssäit (bis zu $1), matréckelen',
@@ -2871,7 +2845,7 @@ $2',
 'import' => 'Säiten importéieren',
 'importinterwiki' => 'Transwiki-Import',
 'import-interwiki-text' => "Sicht eng Wiki an e Säitentitel eraus fir z'importéieren.
-D'Versiounsdatumen an d'Benotzernimm bleiwen dobäi erhalen.
+D'Versiounsdatumen an d'Benotzernimm bleiwen derbäi erhalen.
 All Transwiki-Import-Aktioune ginn am [[Special:Log/import|Import-Logbuch]] protokolléiert.",
 'import-interwiki-source' => 'Quelle Wiki/Säit:',
 'import-interwiki-history' => "Importéier all d'Versioune vun dëser Säit",
@@ -3168,7 +3142,7 @@ Duerch d'Opmaache vum Fichier kann Äre System beschiedegt ginn.",
 'minutes' => '{{PLURAL:$1|enger Minutt|$1 Minutten}}',
 'hours' => '{{PLURAL:$1|enger Stonn|$1 Stonnen}}',
 'days' => '{{PLURAL:$1|engem Dag|$1 Deeg}}',
-'weeks' => '{{PLURAL: $1|eng Woch|$1 Wochen}}',
+'weeks' => '{{PLURAL:$1|eng Woch|$1 Wochen}}',
 'months' => '{{PLURAL:$1|ee Mount|$1 Méint}}',
 'years' => '{{PLURAL:$1|ee Joer|$1 Joer}}',
 'ago' => 'viru(n) $1',
@@ -3526,8 +3500,8 @@ Déi aner sinn am Standard verstoppt.
 'exif-gpslongitude-w' => 'westlech Längt',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter|Meter}} iwwer dem Niveau vum Mier',
-'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter|Meter}} ënner dem Niveau vum Mier',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter}} iwwer dem Niveau vum Mier',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter}} ënner dem Niveau vum Mier',
 
 'exif-gpsstatus-a' => 'Miessung am Gaang',
 'exif-gpsstatus-v' => 'Interoperabilitéit vu der Miessung',
@@ -3596,15 +3570,10 @@ Déi aner sinn am Standard verstoppt.
 'exif-urgency-high' => 'Héich ($1)',
 'exif-urgency-other' => 'Benotzerdefinéiert Prioritéit ($1)',
 
-# External editor support
-'edit-externally' => 'Dëse Fichier mat engem externe Programm änneren',
-'edit-externally-help' => "(Fir gewuer ze gi wéi dat genee geet liest d'[https://www.mediawiki.org/wiki/Manual:External_editors Installatiounsinstruktiounen].)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'all',
 'namespacesall' => 'all',
 'monthsall' => 'all',
-'limitall' => 'all',
 
 # Email address confirmation
 'confirmemail' => 'E-Mailadress confirméieren',
@@ -3623,7 +3592,6 @@ Feelermeldung vum Mailserver: $1',
 'confirmemail_needlogin' => 'Dir musst iech $1, fir är E-Mail-Adress ze confirméieren.',
 'confirmemail_success' => 'Är E-Mailadress gouf confirméiert. Där kënnt iech elo aloggen an a vollem Ëmfang vun der Wiki profitéieren.',
 'confirmemail_loggedin' => 'Är E-Mail-Adress gouf elo confirméiert.',
-'confirmemail_error' => 'Et ass eppes falsch gelaf bäim Späichere vun ärer Confirmatioun.',
 'confirmemail_subject' => 'Confirmatioun vun der E-Mail-Adress fir {{SITENAME}}',
 'confirmemail_body' => 'E Benotzer, waarscheinlech dir selwer, hutt mat der IP Adress $1 de Benotzerkont "$2" um Site {{SITENAME}} opgemaach.
 
@@ -3694,6 +3662,11 @@ Dëse Confirmatiounscode leeft den $4 of.',
 'imgmultigo' => 'Lass!',
 'imgmultigoto' => "Géi op d'Säit $1",
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(Standard-Sprooch)',
+'img-lang-info' => 'Dëst Bild op $1 renderen. $2',
+'img-lang-go' => 'Lass',
+
 # Table pager
 'ascending_abbrev' => 'erop',
 'descending_abbrev' => 'erof',
@@ -3772,7 +3745,15 @@ Dir kënnt och [[Special:EditWatchlist|de Standard Editeur benotzen]].",
 'version-hook-name' => 'Numm vun der Klamer',
 'version-hook-subscribedby' => 'Opruff vum',
 'version-version' => '(Versioun $1)',
-'version-license' => 'Lizenz',
+'version-license' => 'MediaWiki-Lizenz',
+'version-ext-license' => 'Lizenz',
+'version-ext-colheader-name' => 'Erweiderung',
+'version-ext-colheader-version' => 'Versioun',
+'version-ext-colheader-license' => 'Lizenz',
+'version-ext-colheader-description' => 'Beschreiwung',
+'version-ext-colheader-credits' => 'Auteuren',
+'version-license-title' => 'Lizenz fir $1',
+'version-credits-title' => 'E spezielle Merci fir $1',
 'version-poweredby-credits' => "Dës Wiki funktionéiert mat '''[https://www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'anerer',
 'version-poweredby-translators' => 'translatewiki.net Iwwersetzer',
@@ -3790,14 +3771,15 @@ Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Viruleedung duerch e Fichier, Benotzer oder Versiouns-ID',
+'redirect' => 'Viruleedung duerch e Fichier, e Benotzer, eng Säit oder eng Versiouns-ID',
 'redirect-legend' => 'Viruleedung op ee Fichier oder eng Säit',
 'redirect-summary' => 'Dës Spezialsäit ass eng Viruleedung op e Fichier (Fichiersnumm uginn), eng Säit (Versiounsnummer uginn) oder eng Benotzersäit (numeresch Benotzeridentifikatioun uginn).
-Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], oder [[{{#Special:Redirect}}/user/101]].',
+Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], oder [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Lass',
 'redirect-lookup' => 'Nosichen:',
 'redirect-value' => 'Wäert:',
 'redirect-user' => 'Benotzernummer',
+'redirect-page' => 'ID (Nummer) vun der Säit',
 'redirect-revision' => 'Versioun vun der Säit',
 'redirect-file' => 'Numm vum Fichier',
 'redirect-not-exists' => 'Wäert net fonnt',
@@ -3864,7 +3846,6 @@ Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/re
 
 # Special:ComparePages
 'comparepages' => 'Säite vergläichen',
-'compare-selector' => 'Versioune vu Säite vergläichen',
 'compare-page1' => 'Säit 1',
 'compare-page2' => 'Säit 2',
 'compare-rev1' => 'Versioun 1',
@@ -3925,8 +3906,8 @@ Gebrauch: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/re
 'revdelete-unrestricted' => 'Limitatioune fir Administrateuren opgehuewen',
 'logentry-move-move' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}}",
 'logentry-move-move-noredirect' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} ouni eng Viruleedung unzeleeën",
-'logentry-move-move_redir' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} an dobäi gouf eng Viruleedung iwwerschriwwen",
-'logentry-move-move_redir-noredirect' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} an dobäi gouf eng Viruleedung iwwerschriwwen an et et gouf keng nei Viruleedung ugeluecht",
+'logentry-move-move_redir' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} an derbäi gouf eng Viruleedung iwwerschriwwen",
+'logentry-move-move_redir-noredirect' => "$1 huet d'Säit $3 op $4 {{GENDER:$2|geréckelt}} an derbä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 {{GENDER:$2|markéiert}}",
 'logentry-patrol-patrol-auto' => "$1 huet d'Versioun $4 vun der Säit $3 automatesch als nogekuckt  {{GENDER:$2|markéiert}}",
 'logentry-newusers-newusers' => 'De Benotzerkont $1 gouf {{GENDER:$2|ugeluecht}}',
@@ -4006,7 +3987,7 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'duration-minutes' => '$1 {{PLURAL:$1|Minutt|Minutten}}',
 'duration-hours' => '$1 {{PLURAL:$1|Stonn|Stonnen}}',
 'duration-days' => '$1 {{PLURAL:$1|Dag|Deeg}}',
-'duration-weeks' => '$1 {{PLURAL: $1|Woch|Wochen}}',
+'duration-weeks' => '$1 {{PLURAL:$1|Woch|Wochen}}',
 'duration-years' => '$1 {{PLURAL:$1|Joer|Joer}}',
 'duration-decades' => '$1 {{PLURAL:$1|Joerzéngt|Joerzéngten}}',
 'duration-centuries' => '$1 {{PLURAL:$1|Joerhonnert|Joerhonnerten}}',
@@ -4016,6 +3997,7 @@ Soss kënnt Dir den einfache Formulär hei drënner benotzen. Är Bemierkung gë
 'rotate-comment' => 'Bild ëm $1 {{PLURAL:$1|Grad}} an der Richtung vun der Auer gedréint',
 
 # Limit report
+'limitreport-title' => 'Profilingdate vum Parser:',
 'limitreport-cputime' => 'CPU-Zäit-Notzung',
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|Sekonn|Sekonnen}}',
 'limitreport-walltime' => 'Echtzäitnotzung',
@@ -4037,6 +4019,7 @@ Faktesch alles wat tëscht duebelen Accolade steet gëtt ausgewäert.',
 'expand_templates_remove_comments' => 'Bemierkunge läschen',
 'expand_templates_remove_nowiki' => '<nowiki>-Taggen am Resultat suppriméieren',
 'expand_templates_generate_xml' => "Weis d'Struktur vum XML",
+'expand_templates_generate_rawhtml' => 'HTML-Format weisen',
 'expand_templates_preview' => 'Kucken ouni ofzespäicheren',
 
 );
index ae90ef0..61f5419 100644 (file)
@@ -57,7 +57,7 @@ $messages = array(
 'talkpagelinktext' => 'Ихтилат',
 'talk' => 'Ихтилат',
 
-# 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).
+# 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).
 'currentevents' => 'Нанисса ишру',
 'currentevents-url' => 'Project:Нанисса ишру',
 'mainpage' => 'Агьаммур лажин',
@@ -99,7 +99,7 @@ $messages = array(
 # Special:Log
 'specialloguserlabel' => 'Гьурттучув:',
 
-# E-mail user
+# Email user
 'emailuser' => 'ГьурттучувначӀансса чагьар',
 
 # Watchlist
index 849e641..6198405 100644 (file)
@@ -72,7 +72,7 @@ $messages = array(
 'tog-editsection' => 'Пай [дуьзар хъувун] патал элячӀун къалура',
 'tog-editsectiononrightclick' => 'Пайдин кьилинцӀардиз эрчӀи патан тӀампӀ авуна пайдин дуьзар хъувуниз мумкинвал гун (JavaScript герекзава)',
 'tog-showtoc' => 'Къенеавайбурун сиягь къалурун (3-й гзаф кьилинцӀарар авай ччинар патал)',
-'tog-rememberpassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|югъ|йикъар}})',
+'tog-rememberpassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|1=югъ|йикъар}})',
 'tog-watchcreations' => 'За туькӀуьрнавай ччинар зи гуьзетунин сиягьдиз алава авун',
 'tog-watchdefault' => 'За дуьзар хъувунвай ччинар зи гуьзетунин сиягьдиз алава авун',
 'tog-watchmoves' => 'За тӀвар эхцигай ччинар зи гуьзетунин сиягьдиз алава авун',
@@ -149,19 +149,19 @@ $messages = array(
 'dec' => 'дек',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категорияр}}',
-'category_header' => '"$1" категориядин ччинар',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категорияр}}',
+'category_header' => '«$1» категориядин ччинар',
 'subcategories' => 'агъакатегорияр',
 'category-media-header' => '"$1" категориядин медиа',
 'category-empty' => "''Алай чӀава и категория ичӀи я.\"",
-'hidden-categories' => '{{PLURAL:$1|Чуьнуьхай категория|Чуьнуьхай категорияр}}',
+'hidden-categories' => '{{PLURAL:$1|1=Чуьнуьхай категория|Чуьнуьхай категорияр}}',
 'hidden-category-category' => 'Чуьнуьхай категорияр',
-'category-subcat-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авай подкатегория ава.|$2-кай {{PLURAL:$1|агъакатегория|$1 агъакатегорияр}} къалурнава }}',
-'category-subcat-count-limited' => 'И категорияда {{PLURAL:$1|агъакатегория|$1 агъакатегорияр}} ава.',
-'category-article-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди ччин ава |$2-кай къалурнавай {{PLURAL:$1|ччин|$1 ччин}} гьа а категориядин ччин я}}',
-'category-article-count-limited' => 'И категорияда {{PLURAL:$1|ччин|$1 ччин}} ава.',
-'category-file-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди файл ава |$2-кай къалурнавай {{PLURAL:$1|файл|$1 файлар}} гьа а категориядин файл я}}',
-'category-file-count-limited' => 'И категорияда {{PLURAL:$1|файл|$1 файлар}} ава.',
+'category-subcat-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авай подкатегория ава.|$2-кай {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} къалурнава }}',
+'category-subcat-count-limited' => 'И категорияда {{PLURAL:$1|1=агъакатегория|$1 агъакатегорияр}} ава.',
+'category-article-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди ччин ава |$2-кай къалурнавай {{PLURAL:$1|1=ччин|$1 ччин}} гьа а категориядин ччин я}}',
+'category-article-count-limited' => 'И категорияда {{PLURAL:$1|1=ччин|$1 ччин}} ава.',
+'category-file-count' => '{{PLURAL:$2|И категорияда анжах гуьгъуьна авайди файл ава |$2-кай къалурнавай {{PLURAL:$1|1=файл|$1 файлар}} гьа а категориядин файл я}}',
+'category-file-count-limited' => 'И категорияда {{PLURAL:$1|1=файл|$1 файлар}} ава.',
 'listingcontinuesabbrev' => '(кьатӀ)',
 'index-category' => 'Индексавунвай ччинар',
 'noindex-category' => 'Индекстежезвай ччин',
@@ -184,7 +184,6 @@ $messages = array(
 'qbedit' => 'Дегишарун',
 'qbpageoptions' => 'Ччинин низамарунар',
 'qbmyoptions' => 'Зи ччинар',
-'qbspecialpages' => 'КьетӀен хъувун',
 'faq' => 'Фад-фад гузвай жузунар (ФГЖ)',
 'faqpage' => 'Project:ФГС',
 
@@ -226,8 +225,8 @@ $messages = array(
 'create-this-page' => 'И ччин туькӀуьрун',
 'delete' => 'Алудун',
 'deletethispage' => 'И ччин алудун',
-'undelete_short' => '$1 {{PLURAL:$1|дуьзар хъувун|дуьзар хъувунар}} туьхкӀуьрун',
-'viewdeleted_short' => '{{PLURAL:$1|дуьзар хъувуниз|$1 дуьзар хъувунриз}} килигун',
+'undelete_short' => '$1 {{PLURAL:$1|1=дуьзар хъувун|дуьзар хъувунар}} туьхкӀуьрун',
+'viewdeleted_short' => '{{PLURAL:$1|1=дуьзар хъувуниз|$1 дуьзар хъувунриз}} килигун',
 'protect' => 'Xуьн',
 'protect_change' => 'масакӀа авун',
 'protectthispage' => 'И ччин блокарун',
@@ -311,7 +310,7 @@ $messages = array(
 'nstab-main' => 'Ччин',
 'nstab-user' => 'Уртахдин ччин',
 'nstab-media' => 'Медиа ччин',
-'nstab-special' => 'Квимекдин ччин',
+'nstab-special' => 'Куьмекдин ччин',
 'nstab-project' => 'Проектдин ччин',
 'nstab-image' => 'Файл',
 'nstab-mediawiki' => 'Малумат',
@@ -353,7 +352,7 @@ $messages = array(
 'yourname' => 'Уртахдин тӀвар',
 'yourpassword' => 'Парол',
 'yourpasswordagain' => 'Парол кхьин хъувун:',
-'remembermypassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|югъ|йикъар}})',
+'remembermypassword' => 'И браузерда зи логин рикӀел хуьхь (лап гзаф $1 {{PLURAL:$1|1=югъ|йикъар}})',
 'yourdomainname' => 'Куь домен',
 'login' => 'Гьахьун',
 'nav-login-createaccount' => 'Гьахьун/аккаунт туькӀуьрун',
@@ -375,7 +374,7 @@ $messages = array(
 'createaccounterror' => 'И аккаунт туькӀуьриз мумкин ттуш: $1',
 'loginsuccesstitle' => 'Агалкьунралди гьахьун',
 'wrongpasswordempty' => 'Тавакъу ийида, ичӀи тушир парол ттур.',
-'mailmypassword' => 'ЦÓ\80ийи Ð¿Ð°Ñ\80ол Ñ\8d-мейлдиз ÐºÑ\8aаÑ\87ун',
+'mailmypassword' => 'Ð\9fаÑ\80ол Ð°Ð»Ñ\83дна Ð³Ð°Ð´Ñ\80ун',
 'mailerror' => 'Чар ракъурунин гъалатӀ: $1',
 'emailconfirmlink' => 'Куь электрон почтунин адрес тестикьун.',
 'accountcreated' => 'Аккаунт туькӀуьрнава',
@@ -383,7 +382,7 @@ $messages = array(
 'loginlanguagelabel' => 'ЧӀал: $1',
 
 # Change password dialog
-'resetpass' => 'Куьлег дегишарун',
+'changepassword' => 'Парол дегишарун',
 'resetpass_header' => 'Аккаунтдин парол дегишун',
 'oldpassword' => 'ЦӀуру парол:',
 'newpassword' => 'ЦӀийи парол:',
@@ -470,13 +469,13 @@ $messages = array(
 Квез куьне кхьенвайбур азаддаказ чкIун ва гьар са кас  патахъай дуьзар хъувун кIанзавачтIа, а кхьенвайбур иниз эцигмир.<br />
 ГЬакIни, куьне тестикьзава хьи, кутазвай алавайрин автор кьун я, я тахьайтIа, куьне а алаваяр чпин къенеавайбур азад чкIунни дегишун ихтияр гузвай чешмедикай ччин къачунва.<br />
 '''АВТОРДИН ИХТИЯР ХУЬЗВАЙ МАЛУМАТАР ИХТИЯР ГАЛАЧИЗ ЭЦИГМИР!'''",
-'templatesused' => 'И ччина кардик кутунвай {{PLURAL:$1|Чешне|Чешнеяр}}:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблонар}},илемишзавай дуьз клигунра:',
+'templatesused' => 'И ччина кардик кутунвай {{PLURAL:$1|1=Чешне|Чешнеяр}}:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон|Шаблонар}},илемишзавай дуьз клигунра:',
 'template-protected' => '(хвенвай)',
 'template-semiprotected' => '(са кьадар хвенва)',
-'hiddencategories' => 'И ччин {{PLURAL: $1 | чуьнуьхай категориядиз | $1 чуьнуьхай категорийриз}} талукь я:',
+'hiddencategories' => 'И ччин {{PLURAL:$1 | чуьнуьхай категориядиз | $1 чуьнуьхай категорийриз}} талукь я:',
 'permissionserrors' => 'ГЬахьнин гъалатlар',
-'permissionserrorstext-withaction' => 'Квез и {{PLURAL:$1|себебдалди|себебралди}} $2 йиз ихтияр авайд туш:',
+'permissionserrorstext-withaction' => 'Квез и {{PLURAL:$1|1=себебдалди|себебралди}} $2 йиз ихтияр авайд туш:',
 'recreate-moveddeleted-warn' => "'''Дикъет! Куьне виликда алуднавай ччин туьхкlуьриз алахъзава.'''
 Квевай и ччинин туьхкlуьрунин гереквилиз килигиз тIалабзава.
 Агъадихъ и ччинин алудун ва тIвар эхцигунин журнал къалурнава.",
@@ -522,7 +521,7 @@ $messages = array(
 
 # Revision deletion
 'rev-deleted-comment' => 'Дуьзар хъувунин тегьерар кхьин алуднава',
-'rev-deleted-user' => '(иштиракчидин тIвар алуднава)',
+'rev-deleted-user' => '(уртахдин тӀвар алуднава)',
 'rev-deleted-event' => '(къейд алуднава)',
 'rev-delundel' => 'къалурун/кIевирун',
 'rev-showdeleted' => 'къалурун',
@@ -534,8 +533,6 @@ $messages = array(
 'revdelete-radio-unset' => 'Ваъ',
 'revdelete-log' => 'Кар',
 'revdel-restore' => 'Аквадайвал масакIа авун',
-'revdel-restore-deleted' => 'Алуднавай жуьреяр',
-'revdel-restore-visible' => 'Аквадай масакIавилер',
 'pagehist' => 'Ччинин тарих',
 'deletedhist' => 'Алудунин тарих',
 'revdelete-reasonotherlist' => 'Муькуь себеб',
@@ -560,27 +557,22 @@ $messages = array(
 'lineno' => 'ЦIар $1:',
 'compareselectedversions' => 'Хкягъай жуьреяр гекъигун',
 'editundo' => 'гьич авун',
-'diff-multi' => '({{PLURAL:$2|Са уртах|$2 уртахар}} патал авунвай {{PLURAL:$1|са арадин жуьре|$1 арадин жуьреяр}} къалурнавач)',
+'diff-multi' => '({{PLURAL:$2|1=Са уртах|$2 уртахар}} патал авунвай {{PLURAL:$1|1=са арадин жуьре|$1 арадин жуьреяр}} къалурнавач)',
 
 # Search results
 'searchresults' => 'Къекъуьнрин нетижаяр',
 'searchresults-title' => '"$1" жугъура',
-'searchresulttext' => '{{SITENAME}} къекъуьнихъай гегьенш малумат патал  [[{{MediaWiki:Helppage}}|{{int:малумат гудай пай}}]]диз килига.',
-'searchsubtitle' => '[[Special:WhatLinksHere/$1|И тIварциз элячIзавай]]) [[:$1]] жугъуруниз талукь тир ([[Special:Prefixindex/$1| тIварцихъ галаз эгечIзавай ччинар]]',
-'searchsubtitleinvalid' => "Жугъурзавай: '''$1'''",
 'titlematches' => 'Ччинрин тIварарин  ацалтунар',
-'notitlematches' => 'Ччинрин тIварара ацалтунар авач',
 'textmatches' => 'Ччинрин текстрин ацалтунар',
 'notextmatches' => 'Авач чарчин кьил матчар',
 'prevn' => 'Вилик фейи  {{PLURAL:$1|$1}}',
 'nextn' => 'Гуьгъуьнин {{PLURAL:$1|$1}}',
-'prevn-title' => 'Вилик фейи  $1 {{PLURAL:$1|нетижа|нетижаяр}}',
-'nextn-title' => 'КЪведай $1 {{PLURAL:$1|нетижа|нетижаяр}}',
-'shown-title' => 'Ччина $1 {{PLURAL:$1|нетижа|нетижа}} къалурун',
+'prevn-title' => 'Вилик фейи  $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
+'nextn-title' => 'КЪведай $1 {{PLURAL:$1|1=нетижа|нетижаяр}}',
+'shown-title' => 'Ччина $1 {{PLURAL:$1|1=нетижа|нетижа}} къалурун',
 'viewprevnext' => 'Килигун ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Жагъурунин низамарунар',
 'searchmenu-exists' => "'''И вики-проектда \"[[:\$1]]\" тlвар алай ччин ава.'''",
-'searchmenu-new' => "'''И вики-проектда \"[[:\$1]]\" ччин туькlуьрун !'''",
+'searchmenu-new' => "'''И вики-проектда «[[:$1]]» ччин туькӀуьрун!'''",
 'searchprofile-articles' => 'Асул ччинар',
 'searchprofile-project' => 'Куьмек гунин ва проектдин ччинар',
 'searchprofile-images' => 'Мультимедиа',
@@ -591,8 +583,8 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Файлар жугъура',
 'searchprofile-everything-tooltip' => 'Вири ччинра къекъуьгъ (веревирдрин ччинар кваз)',
 'searchprofile-advanced-tooltip' => 'Ганвай тlварарин генгвилера къекъуьгъ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 гаф|$2 гаф}})',
-'search-result-category-size' => '{{PLURAL:$1|1 элемент|$1 элементар}} ({{PLURAL:$2|1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1 файл|$3 файлар}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 гаф|$2 гаф}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 элемент|$1 элементар}} ({{PLURAL:$2|1=1 агъакатегория|$2 агъакатегорияр}}, {{PLURAL:$3|1=1 файл|$3 файлар}})',
 'search-redirect' => '(рахкъурун $1)',
 'search-section' => '(пай $1)',
 'search-suggest' => 'Мумкин я хьи, куьне им фикирда кьуна: $1',
@@ -602,31 +594,26 @@ $messages = array(
 'search-relatedarticle' => 'Галкlанавай',
 'searchrelated' => 'Галкlанавай',
 'searchall' => 'вири',
-'showingresultsheader' => "'''$4'''  патал {{PLURAL:$5|'''$3''' - кай  '''$1''' нетижа|'''$3''' - кай  '''$1 - $2''' нетижаяр}}",
-'nonefound' => "'''Асулзава''': Са шумуд тlарар жагъурзава хвенайвал.
-Клига префикс \"вири\" жагъурун паталди кхьинар (ихтилат ва рахунин чарар, шаблонар ва масабу), ва ишлемишна кlанзавай тlарар префикс патала.",
+'showingresultsheader' => "'''$4'''  патал {{PLURAL:$5|1='''$3''' - кай  '''$1''' нетижа|'''$3''' - кай  '''$1 - $2''' нетижаяр}}",
 'search-nonefound' => 'Тlалабдив кьадай са нетижани жагъанвач.',
-'powersearch' => 'Гегьенш жугъурун',
 'powersearch-legend' => 'Гегьенш жугъурун',
 'powersearch-ns' => 'Жугъурун тlварарин генгвилера:',
 'powersearch-redir' => 'Рахкъурунар къалура',
-'powersearch-field' => 'Идаз жагъурун',
 'powersearch-togglelabel' => 'Акун',
 'powersearch-toggleall' => 'Вири',
 'powersearch-togglenone' => 'Садни',
 
 # Preferences page
 'preferences' => 'Туькlуьрун',
-'mypreferences' => 'Ð\97и Ð½Ð¸Ð·Ð°Ð¼Ð°Ñ\80Ñ\83наÑ\80',
+'mypreferences' => 'низамарунар',
 'prefs-edits' => 'Дьузар хъувунрин кьадар',
-'changepassword' => 'Парол дегишарун',
 'prefs-skin' => 'Къайдадиз ттунин тема',
 'skin-preview' => 'Сифтедин килигун',
 'datedefault' => 'Туькlуьрмир',
 'prefs-beta' => 'Бета-мумкинвилер',
 'prefs-datetime' => 'Нумра ва вахт',
 'prefs-labs' => 'Экспериментдин мумкинвилер',
-'prefs-personal' => 'Ð\98Ñ\88Ñ\82иÑ\80акÑ\87идин профил',
+'prefs-personal' => 'УÑ\80Ñ\82аÑ\85дин профил',
 'prefs-rc' => 'Mукьвара хьайи дегишвилер',
 'prefs-watchlist' => 'Гуьзетунин сиягь',
 'prefs-watchlist-edits-max' => 'Максимум кьадар: 1000',
@@ -638,17 +625,14 @@ $messages = array(
 'prefs-email' => 'E-mail туькlуьрунин кьадарар',
 'prefs-rendering' => 'Къецепатан акунар',
 'saveprefs' => 'Хуьн',
-'resetprefs' => 'Хуьн тавунвай дегишвилер алудун',
 'restoreprefs' => 'Авайл хьиз кьунвай низамарунар туькIуьр хъувун',
 'prefs-editing' => 'Дуьзар хъувун',
 'rows' => 'ЦIарар',
 'columns' => 'Гулар:',
 'searchresultshead' => 'Ахтармишун',
-'resultsperpage' => 'Са ччиниз талукь тир жагъанвай нетижаяр',
 'stub-threshold-disabled' => 'Галуднава',
 'timezonelegend' => 'Вахтунин минзил',
 'localtime' => 'Чкадин вахт',
-'timezoneoffset' => 'Вахтунин тафават',
 'servertime' => 'Сервердир вахт:',
 'timezoneregion-africa' => 'Африка',
 'timezoneregion-america' => 'Америка',
@@ -671,9 +655,9 @@ $messages = array(
 'gender-male' => 'итимдин',
 'gender-female' => 'папарин',
 'email' => 'E-mail',
-'prefs-help-email' => 'Электрон почтунин адрес кхьи  мажбури туш, амма куьне парол рикIелай ракъурдатIа, ам герек жеда.',
+'prefs-help-email' => 'Электрон почтунин адрес кхьин  мажбури туш, амма куьне парол рикIелай ракъурдатIа, ам герек жеда.',
 'prefs-help-email-others' => 'Квевай куь уртахдин, ва я куь веревирдрин ччина элячIун къалурна муькуь уртахар галаз электрон почтадин куькмедалди алакъа хуьз жеда.
-Квез электрондин чар кхьидайла муькуь уртахриз куь электрондин почтадин адрес аквадач.',
+Квез электрон чар кхьидайла муькуь уртахриз куь электрон почтадин адрес аквадач.',
 'prefs-advancedediting' => 'Гегьенш низамарунар',
 'prefs-advancedrc' => 'Гегьенш низамарунар',
 'prefs-advancedrendering' => 'Гегьенш низамарунар',
@@ -735,7 +719,7 @@ $messages = array(
 'action-undelete' => 'и ччин туькIуьр хъувун',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|масакIавал|масакIавилер}}',
+'nchanges' => '$1 {{PLURAL:$1|1=масакIавал|масакIавилер}}',
 'recentchanges' => 'Mукьвара хьайи масакӀавилер',
 'recentchanges-legend' => 'Цlийи масакIавилерин низамарунар',
 'recentchanges-summary' => 'Викида хьанвай эхиримжи масакIавилер и ччина гуьзетун',
@@ -744,7 +728,6 @@ $messages = array(
 'recentchanges-label-minor' => 'Им гъвечlи дуьзар хъувун я',
 'recentchanges-label-bot' => 'И дуьзар хъувун ботди авунвайд я',
 'recentchanges-label-unpatrolled' => 'И дуьзар хъувундин винел патрулвал авунвач',
-'rcnote' => "$5, $4 чIавун кьатIдиз талукь {{PLURAL:$2|югъ|'''$2''' йикъар}} къене{{PLURAL:$1|эхиримжи'''1''' масакIавал|эхиримжи '''$1''' масакIавилер}}",
 'rcnotefrom' => "Агъадихъ '''$2'''-ай эгечIна масакIавилер къалурнава ( '''$1''' кьван  къалурнава).",
 'rclistfrom' => '$1-й эгечIна цIийи масакIавилер къалурун',
 'rcshowhideminor' => '$1 гъвечlи дуьзар хъувунар',
@@ -797,7 +780,7 @@ $messages = array(
 'upload-options' => 'Ппарунин шартIар',
 'watchthisupload' => 'И файл гуьзетун',
 
-'upload-file-error' => 'КЪенепатан гъалатI',
+'upload-file-error' => 'Къенепатан гъалатӀ',
 'upload-unknown-size' => 'Тийижир кьадар',
 
 # Special:UploadStash
@@ -807,7 +790,7 @@ $messages = array(
 'img-auth-accessdenied' => 'Гьахьун къадагъа авунва',
 
 'license' => 'Лицензиярун',
-'license-header' => 'Ð\9bиÑ\86инзиярун',
+'license-header' => 'Ð\9bиÑ\86ензиярун',
 'nolicense' => 'ЗатIни хкягънавач',
 'license-nopreview' => '(Сифтедин килигун авайд ттуш)',
 'upload_source_file' => ' (куь компьютерда авай файл)',
@@ -841,7 +824,7 @@ $messages = array(
 'filehist-comment' => 'Къейд',
 'filehist-missing' => 'Файл авачиз я',
 'imagelinks' => 'Файл кардик кутун',
-'linkstoimage' => 'Къведай {{PLURAL: $1 | ччин | $1 ччинар}} гьа и файлдиз элячlзава',
+'linkstoimage' => 'Къведай {{PLURAL:$1 | ччин | $1 ччинар}} гьа и файлдиз элячlзава',
 'nolinkstoimage' => 'И файлдиз элячlзавай ччинар авайд туш',
 'sharedupload' => 'И шикил $1 масса хакъидайра ишлемишатlа жезава.',
 'sharedupload-desc-here' => 'И файл $1-кай я ва ам маса проектра  кардик кутаз жеда.
@@ -885,11 +868,11 @@ $messages = array(
 'brokenredirects-edit' => 'дегишарун',
 'brokenredirects-delete' => 'алудун',
 
-'withoutinterwiki-submit' => 'КЪалурун',
+'withoutinterwiki-submit' => 'Къалурун',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байтар}}',
-'nmembers' => '$1 {{PLURAL:$1|уьзви|уьзвияр}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байтар}}',
+'nmembers' => '$1 {{PLURAL:$1|1=уьзви|уьзвияр}}',
 'lonelypages' => 'Eтим xъувун',
 'prefixindex' => 'Префикс галай вири ччинар',
 'shortpages' => 'Куьруь хъувун',
@@ -898,12 +881,12 @@ $messages = array(
 'listusers' => 'Уртахрин сиягь',
 'usercreated' => '{{GENDER:$3|Created}} идав $1 идал $2',
 'newpages' => 'ЦӀийи ччинар',
-'newpages-username' => 'Ð\98Ñ\88Ñ\82иÑ\80акÑ\87идин Ñ\82lвар',
+'newpages-username' => 'УÑ\80Ñ\82аÑ\85дин Ñ\82Ó\80вар',
 'ancientpages' => 'виридалайни цIуру ччинар',
-'move' => 'ТIвар эхцигун',
+'move' => 'ТӀвар эхцигун',
 'movethispage' => 'Юзун и хъувун',
-'pager-newer-n' => '{{PLURAL:$1|мадни цIийи 1|мадни цIийи $1}}',
-'pager-older-n' => '{{PLURAL:$1|мадни цIуру 1|мадни цIуру $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=мадни цIийи 1|мадни цIийи $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=мадни цIуру 1|мадни цIуру $1}}',
 'suppress' => 'Чуьнуьхун',
 
 # Book sources
@@ -921,15 +904,13 @@ $messages = array(
 'allpagesfrom' => 'Къалур хъувун,идалай гатIунай:',
 'allpagesto' => 'Акъудан чарар, куьтягь жезвай:',
 'allarticles' => 'Вири ччинар',
-'allpagesprev' => 'Вилик алатай',
-'allpagesnext' => 'Къведайди',
 'allpagessubmit' => 'ЭлячIун',
 
 # Special:Categories
 'categories' => 'Категорияр',
 
 # Special:LinkSearch
-'linksearch' => 'КЪецепатан элячIунар жугъурун',
+'linksearch' => 'Къецепатан элячӀунар жугъурун',
 'linksearch-ns' => 'Тlварарин генгвал:',
 'linksearch-ok' => 'Ахтармишун',
 'linksearch-line' => '$2-ай $1-аз элячlун',
@@ -957,12 +938,13 @@ $messages = array(
 'watchlist' => 'Зи вилив хуьнин сиягь',
 'mywatchlist' => 'Вилив хуьнин сиягь',
 'watchlistfor2' => '$1 $2 патал',
-'addedwatchtext' => "Чар \"[[:\$1]]\" тун хъувунай куьн [[Special:Watchlist|watchlist]].                                                                                                             Къвезмай дегишунар и чарчел ва галкlанавай чарчихъ ихтилатар жеда инна, ахъатдава \"сакlус яцlу''''' инна [[Special:RecentChanges|list of recent changes]] гьам кьизил авун.",
-'removedwatchtext' => 'Чар "[[:$1]]" Идай чlурнай [[Special:Watchlist|ахтармишунин цlарар]].',
+'addedwatchtext' => 'Чар «[[:$1]]» тун хъувунай куьн [[Special:Watchlist|watchlist]].
+Къвезмай дегишунар и чарчел ва галкӀанавай чарчихъ ихтилатар жеда инна, ахъатдава «сакӀус яцӀу» инна веревирд авун гьам кьизил авун.',
+'removedwatchtext' => 'Чар «[[:$1]]» идай чӀурнай [[Special:Watchlist|ахтармишунин цӀарар]].',
 'watch' => 'Вилив хуьн',
 'watchthispage' => 'Гелкъуьн и хъувун',
 'unwatch' => 'Вилив хуьмир',
-'watchlist-details' => 'Куь вилив хуьнин сиягьда {{PLURAL:$1|$1 ччин|$1 ччин}} авайди я, веревирдрин ччинар квачиз.',
+'watchlist-details' => 'Куь вилив хуьнин сиягьда {{PLURAL:$1|1=$1 ччин|$1 ччин}} авайди я, веревирдрин ччинар квачиз.',
 'wlshowlast' => 'Эхиримжи $1 сят $2 югъ $3 къалура',
 'watchlist-options' => 'Вилив хуьнин сиягьдин низамарунар',
 
@@ -1004,7 +986,7 @@ $messages = array(
 'protect_expiry_old' => 'Вахтун кьадар алатай заманда.',
 'protect-text' => "Квевай клигайтlа ва дегишарайтlа жеза хуьнин къайда чарчин '''$1'''.",
 'protect-locked-access' => "Квез ахтияр авач дегишариз чарчин хуьн къайда.                                                                                                                             Ингье физвай туькlуьрунар чарчиз '''$1''':",
-'protect-cascadeon' => 'Хуьн авун чарар къараул ийизвай алай вахтунда, гьама ктуна{{PLURAL:$1|чар, гьама|чарар, гьабур}} галай галай хуьн куькlуьрна.Куьвай жеза дегишариз хуьнин кьадар чарчин, гьама кядач галай галай хуьнив.',
+'protect-cascadeon' => 'Хуьн авун чарар къараул ийизвай алай вахтунда, гьама ктуна{{PLURAL:$1|1=чар, гьама|чарар, гьабур}} галай галай хуьн куькlуьрна.Куьвай жеза дегишариз хуьнин кьадар чарчин, гьама кядач галай галай хуьнив.',
 'protect-default' => ' Эхтияр гуз вири ишлемишчийриз',
 'protect-fallback' => 'Тlалабун "$1" эхтияр',
 'protect-level-autoconfirmed' => 'Къаб цlийи ва кхьитунавай ишлемишчияр',
@@ -1029,7 +1011,6 @@ $messages = array(
 'undeletebtn' => 'ТуьхкIуьрун',
 'undeletelink' => 'Килигун/гуьнгуьна хтун',
 'undeleteviewlink' => 'Килигун',
-'undeletereset' => 'Алудна гадрун',
 'undeletecomment' => 'Кар',
 'undelete-search-submit' => 'Жагъурун',
 'undelete-show-file-submit' => 'Э',
@@ -1044,7 +1025,7 @@ $messages = array(
 'contributions-title' => '$1 уртахди кутур крар',
 'mycontris' => 'Кутур кар',
 'contribsub2' => '($1)-ин кутур пай  ($2)',
-'uctop' => '(вини кьил)',
+'uctop' => 'алай',
 'month' => ' Вацралай (ва адалай вилик)',
 'year' => 'Иисалай (ва адалай вилик):',
 
@@ -1067,8 +1048,8 @@ $messages = array(
 'isredirect' => 'Рахкъурунин ччин',
 'istemplate' => 'кутун',
 'isimage' => 'Файлдин элячlун',
-'whatlinkshere-prev' => '{{PLURAL:$1|вилик фейи|вилик фейи $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|гуьгъуьнин|гуьгъуьнин $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=вилик фейи|вилик фейи $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=гуьгъуьнин|гуьгъуьнин $1}}',
 'whatlinkshere-links' => '← элячlунар',
 'whatlinkshere-hideredirs' => '$1 рахкъурунар',
 'whatlinkshere-hidetrans' => '$1 кутунар',
@@ -1096,7 +1077,7 @@ $messages = array(
 'block-log-flags-nocreate' => 'Аккаунт туькIуьрдай изинар авач',
 
 # Move page
-'move-page' => '$1 тIвар эхцигун',
+'move-page' => '$1 тӀвар эхцигун',
 'move-page-legend' => 'Юзун хъувун',
 'movepagetext' => "Ишлемишиз кlеневай къаб,чарчин тlар дегишариp, кьиспесдин  чка дегишарун, цlийи тlар авун.
 Иски тlарцlи ракъурда цlийи тlарцlел.
@@ -1112,19 +1093,17 @@ $messages = array(
 Буюр, килиг , куьне фикирзатlа вуч жезатlа, кхьин хъийидади.",
 'movepagetalktext' => "Ухшар авай чарар ихтилатдин, фида масса чкадал вуч вичиз ибур галаз''',амма:'''                                                                               *Эчlи чар ихтилатдин ава цlийи тlар алаз, ва                                                                                                                                           *Куьне иляйда пайдах кlеникай                                                                                                                                                                                  Гьа вахтунда, куьне чка дегишар авун или санал авуна чар гъилелди, кlанда",
 'movearticle' => 'Юзун хъувун:',
-'newtitle' => 'Цlийи тlарцlихъ:',
+'newtitle' => 'ЦӀийи тӀвар:',
 'move-watch' => 'Гелкъуьн и хъувун',
 'movepagebtn' => 'Юзун хъувун',
 'pagemovedsub' => 'Рахъурун хьана',
 'movepage-moved' => '\'\'"$1" рахъурнай "$2"\'\'\'',
 'articleexists' => 'Ахьтин тlар алай чар ава, амма тlар, куьне хкянай дуьз туш.Башуьсте, масса тlар хкяй.',
-'talkexists' => "'''Чарчин тlар дегишарна, чарчин ихтилатар дегишар жезатуш, вучиз лагьайтlа ихтилатар цlийи чарчел фена.Галкlура гълелди.'''",
-'movedto' => 'хтана иниз',
 'movetalk' => 'Югъун,галкlана рахун',
-'movelogpage' => 'Тlвар эхцигунрин журнал',
+'movelogpage' => 'ТӀвар эхцигунрин журнал',
 'movereason' => 'Фагьум:',
 'revertmove' => 'Рахкъурун',
-'delete_and_move' => 'Алудун ва тIвар эхцигун',
+'delete_and_move' => 'Алудун ва тӀвар эхцигун',
 
 # Export
 'export' => 'Ччинрин экспорт',
@@ -1162,7 +1141,7 @@ $messages = array(
 'tooltip-ca-history' => 'И ччинин алатай масакIавилерин журнал',
 'tooltip-ca-protect' => 'И ччин хуьн',
 'tooltip-ca-delete' => 'И ччин алудун',
-'tooltip-ca-move' => 'Ччиндин тIвар масакIа авун',
+'tooltip-ca-move' => 'Ччиндин тӀвар масакӀа авун',
 'tooltip-ca-watch' => 'И ччин куь вилив хуьнин сиягьдиз алава авун',
 'tooltip-ca-unwatch' => 'И ччин куь вилив хуьнин сиягьдай къахчун',
 'tooltip-search' => '{{SITENAME}} къекъуьн',
@@ -1261,15 +1240,10 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 
 'exif-sharpness-1' => 'Жими',
 
-# External editor support
-'edit-externally' => 'И файл патан программа куьмекдалди дуьзар хъувун',
-'edit-externally-help' => '(Алава малумат патал [https://www.mediawiki.org/wiki/Manual:External_editors эцигунин регьбервилиз] килига)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вири',
 'namespacesall' => 'вири',
 'monthsall' => 'вири',
-'limitall' => 'вири',
 
 # action=purge
 'confirm_purge_button' => 'ЭХь',
@@ -1305,7 +1279,7 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 'watchlistedit-normal-title' => 'Гуьзетунин сиягь дуьзар хъувун',
 'watchlistedit-raw-title' => 'Гуьзетунин сиягь текст хьиз дуьзар хъувун',
 'watchlistedit-raw-legend' => 'Гуьзетунин сиягь текст хьиз дуьзар хъувун',
-'watchlistedit-raw-titles' => 'КЬилинцIарар:',
+'watchlistedit-raw-titles' => 'КьилинцӀарар:',
 'watchlistedit-raw-submit' => 'Гуьзетунин сиягь цIийи хъувун',
 
 # Watchlist editing tools
@@ -1356,4 +1330,9 @@ Cиягьда авай анжах (* лишандихъ галаз эгечIза
 'feedback-cancel' => 'Гьич авун',
 'feedback-close' => 'Авунва',
 
+# Special:ExpandTemplates
+'expand_templates_xml_output' => 'XML акъудун',
+'expand_templates_ok' => 'ОК',
+'expand_templates_remove_comments' => 'Баянар алудун',
+
 );
index 27d94f1..d527c94 100644 (file)
@@ -56,7 +56,6 @@ $messages = array(
 'tog-minordefault' => 'Marca costumal tota editas como minor',
 'tog-previewontop' => 'Mostra la previde ante la caxa de editas',
 'tog-previewonfirst' => 'Mostra la previde a la edita prima',
-'tog-nocache' => 'Desengana la reserva de pajes',
 'tog-enotifwatchlistpages' => 'Envia un eposta a me cuando un paje ce me oserva es cambiada',
 'tog-enotifusertalkpages' => 'Envia me un eposta cuando me paje de discutes es cambiada',
 'tog-enotifminoredits' => 'Ance envia un eposta a me con edita minor de pajes',
@@ -152,7 +151,6 @@ $messages = array(
 'qbedit' => 'Edita',
 'qbpageoptions' => 'Esta paje',
 'qbmyoptions' => 'Me pajes',
-'qbspecialpages' => 'Pajes spesial',
 
 'errorpagetitle' => 'Era',
 'returnto' => 'Restora a $1.',
@@ -438,7 +436,6 @@ La arcivo de sutraes per esta paje es asi per conveni:",
 'search-interwiki-default' => 'Resultas de $1:',
 'search-interwiki-more' => '(plu)',
 'searchall' => 'tota',
-'powersearch' => 'Xerca avansada',
 
 # Preferences page
 'preferences' => 'Preferis',
@@ -499,7 +496,6 @@ La arcivo de sutraes per esta paje es asi per conveni:",
 'recentchanges' => 'Cambias resente',
 'recentchanges-summary' => 'Asi la lista de cambias resente en la vici.',
 'recentchanges-feed-description' => 'Seque la cambias plu resente a la vici en esta flue.',
-'rcnote' => 'Su es {{PLURAL:$1|cambia|cambias}} en la presedente {{PLURAL:$2|dia|dias}}, en $5, $4.',
 'rcnotefrom' => "A su es la cambias de '''$2''' (asta '''$1''' es mostrada).",
 'rclistfrom' => 'Mostra cambias nova, comensante de $1',
 'rcshowhideminor' => '$1 editas minor',
@@ -637,8 +633,6 @@ Pajes a [[Special:Watchlist|tu lista de pajes oservada]] es en leteras '''forte'
 'prevpage' => 'Paje presedente ($1)',
 'allpagesfrom' => 'Mostra pajes comensante a:',
 'allarticles' => 'Tota pajes',
-'allpagesprev' => 'Presedente',
-'allpagesnext' => 'Seguente',
 'allpagessubmit' => 'Vade',
 'allpagesprefix' => 'Mostra pajes con prefis:',
 
@@ -809,8 +803,6 @@ En esta casos, tu va nesesa move o fusa la paje per mano, si desirada.",
 'pagemovedsub' => 'La move ia susede',
 'movepage-moved' => '\'\'\'"$1" ia es moveda a "$2"\'\'\'',
 'articleexists' => 'Un paje con acel nom esiste ja, o la nom ce tu ia eleje no es un nom legal. Per favore, eleje un otra nom.',
-'talkexists' => "'''La paje se mesma ia es moveda, ma la paje de discutes no pote es moveda, per ce un esiste ja a la titulo nova. Per favore, fusa los per mano'''",
-'movedto' => 'moveda a',
 'movetalk' => 'Move la paje de discutes ance',
 'movelogpage' => 'Move arcive',
 'movelogpagetext' => 'A su es un lista de pajes moveda',
@@ -926,10 +918,6 @@ Si la fix ia es cambiada de se stato orijinal, alga detalias pote no es clara en
 # Exif tags
 'exif-exposuretime-format' => '$1 sec. ($2)',
 
-# External editor support
-'edit-externally' => 'Edita esta fix con un programa esterna',
-'edit-externally-help' => '(Vide la [https://www.mediawiki.org/wiki/Manual:External_editors instruis per comensa] per plu instruis)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tota',
 'namespacesall' => 'tota',
index 7833d4d..af265bf 100644 (file)
@@ -33,7 +33,6 @@ $messages = array(
 'tog-minordefault' => "Bulijjo, enkyukakyuka z'okola zirambibwe nti ntono",
 'tog-previewontop' => "Okulagako kubeerenga waggulu w'ekifo w'owandikira",
 'tog-previewonfirst' => 'Buli lwensooka okukyusa olupapula, ndagangako byenkoze',
-'tog-nocache' => "Ekyandaaza kiremenga kutereka koppi z'empapula z'okebera",
 'tog-enotifwatchlistpages' => "Nsindikiranga 'E-mail' empapula zengoberera buli lwe zikolebwako enkyukakyuka",
 'tog-enotifusertalkpages' => "Nsindikiranga 'E-mail' olupapula lwange olwa 'Yogera nange' buli lwe lukyusibwamu",
 'tog-enotifminoredits' => "Nsindikiranga 'E-mail' enkyukakyuka ne bwe ziba ntono",
@@ -152,7 +151,6 @@ $messages = array(
 'qbbrowse' => 'Lambula',
 'qbedit' => 'Kyusa',
 'qbmyoptions' => 'Empapula zange',
-'qbspecialpages' => 'Empapula enjawule',
 'faq' => 'Ebitera okubuuzibwa',
 'faqpage' => 'Project:Ebitera okubuuzibwa ku',
 
@@ -353,9 +351,6 @@ Erinnya eryo liyinza ate okubaamu ennukuta oba obubonero ebitakkirizibwa mu mann
 'perfcachedts' => "Data eddako wano eva mu ggwanika zzibizi, yasemba okutuukanizibwa n'ey'ennono ku saawa $3, nga $2. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Ku ssaawa eno olupapula luno terukkiriza kukyusibwamu.<br />
 Data eruliko ejjakugira nga tekyuka.',
-'wrong_wfQuery_params' => 'wfQuery() kirimu paramita ensobu zino<br />
-Mukolo: $1<br />
-Ekiragiro ekinoonyeza mu ggwanika lya data: $2',
 'viewsource' => "Kebera obulambike obw'ennono obw'olupapula luno",
 'actionthrottled' => 'Ekikolwa kigaanidwa',
 'actionthrottledtext' => "Okulwanyisa abasindika obubaka kiyaaye, twateekawo ekkomo ery'emirundi omuntu gy'ayinza okukola ekikolwa ekyo.<br />
@@ -484,7 +479,6 @@ oba mu puloguramu etereka n'eddamu okuyisa ebiragiro ebivudde awalala.",
 'php-mail-error-unknown' => "Wazzewo kiremya atategeerese mu mukolo mail() ogw'omu PHP",
 
 # Change password dialog
-'resetpass' => 'Kyusa ekigambo ekikuumi',
 'resetpass_announce' => "Weyambisa ekyama eky'ekiseerabuseera okuyingira.<br />
 Okuyingirira ddala, wetaaga okuwandika wano ekinaaba ekyama kyo ekya ddala:",
 'resetpass_header' => "Kyusa ekigambo ekikuumi eky'oku akawunti eno",
@@ -788,13 +782,8 @@ oba ku gano agali ku lupapula luno.<br />
 # Search results
 'searchresults' => 'Noonyeza mu bizuulidwa',
 'searchresults-title' => 'Ebizuulidwa ku "$1"',
-'searchresulttext' => "Okumanya ebisingawo ku konoonya bintu ku {{SITENAME}}, kebera ku '[[{{MediaWiki:Helppage}}|{{int:help}}]]'.",
-'searchsubtitle' => 'Onoonyezza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|empapula zonna ezitandika ne "$1"]]{{int:pipe-separator}}
-[[Special:WhatLinksHere/$1|empapula zonna ezikuggusa ku "$1"]])',
-'searchsubtitleinvalid' => "Onoonyezza '''$1'''",
 'toomanymatches' => "Ebikwataganya by'onoonyezesazza biyitiridde obungi. Ky'onoonyezesa kikyusemu",
 'titlematches' => 'Empapula ezirina emitwe egyefaananyiriza guno',
-'notitlematches' => 'Tewali mpapula zirina mutwe guno',
 'textmatches' => "Empapula eziriko ebigambo by'onoonyezesezza",
 'notextmatches' => 'Tewali mpapula ziriko bigambo bino',
 'prevn' => '{{PLURAL:$1|$1}} ezikulembedde zino',
@@ -803,10 +792,8 @@ oba ku gano agali ku lupapula luno.<br />
 'nextn-title' => '{{PLURAL:$1|Ekizuulidwa $1 ekiddako|Ebizuulidwa $1 ebiddako}}',
 'shown-title' => 'Ndaga {{PLURAL:$1|ekizuulidwa|ebizuulidwa}} $1 ku buli lupapula',
 'viewprevnext' => 'Laga ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Kyusamu ennoonya',
 'searchmenu-exists' => "'''Olupapula \"[[:\$1]]\" gyeruli ku wiki eno.'''",
 'searchmenu-new' => "'''Oba oyagala, olupapula \"[[:\$1]]\" gwe osobola okulukolawo ku wiki eno.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Kebera mu mpapula eziriko akatandikwa kano]]',
 'searchprofile-articles' => "Empapula ez'ensonga",
 'searchprofile-project' => "Empapula eziriko obuyambi n'eza Kawefube",
 'searchprofile-images' => "Mediya ey'ekintabuli - Bifaananyi, Vidiyo n'ebiWulirizibwa",
@@ -822,13 +809,9 @@ oba ku gano agali ku lupapula luno.<br />
 'search-interwiki-default' => 'ebizuulidwa ku $1:',
 'search-interwiki-more' => '(ebikyaliyo)',
 'searchall' => '',
-'nonefound' => "'''Wekkaanye''': Okunoonya kuno kukoma mu makuŋaanyizo amalondemu okugyako nga okulagidde okweyonera awalala.
-W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipediya yonna. Bw'obanga olina ekkuŋaanyizo limu lyokka lyoyagala okunoonyezamu, soosawo erinnya lyalyo w'owandikira by'onoonya.",
-'powersearch' => 'Noonya mu ngeri esunsula',
 'powersearch-legend' => 'Noonya mu ngeri esunsula',
 'powersearch-ns' => 'Noonyeza mu makuŋaaniro gano:',
 'powersearch-redir' => "Laga n'empapula ezikutwalabutwazi ku zinnaazo",
-'powersearch-field' => 'Nnoonyeza',
 'powersearch-togglelabel' => 'Londa:',
 'powersearch-toggleall' => 'Gonna',
 
@@ -841,7 +824,6 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'prefs-email' => 'Enteekateeka eza E-mail',
 'prefs-rendering' => 'Endabika',
 'saveprefs' => 'Bino bikaze',
-'resetprefs' => 'Gyawo enkyukakyuka ze sinnakaza',
 'restoreprefs' => 'Zawo enteekateeka zi nansangwawo',
 'prefs-editing' => 'Kukyusa',
 'searchresultshead' => 'Noonya',
@@ -850,7 +832,6 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'localtime' => "Ssaawa za w'oli:",
 'timezoneuseserverdefault' => "Kozesa ssaawa wiki eno z'ekozesa ($1)",
 'timezoneuseoffset' => 'Ndala (tegeka enjawulo mu budde)',
-'timezoneoffset' => 'Njawulo mu budde¹:',
 'servertime' => 'Ssaawa ya sisitemu:',
 'guesstimezone' => 'Kalambulanetti etegeke obudde',
 'timezoneregion-africa' => 'Afirika',
@@ -895,7 +876,6 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'recentchanges-legend' => "Awategekerwa endaga y'ebyakakyusibwa",
 'recentchanges-summary' => "Goberera enkyukakyuka empya ez'oku lupapula luno",
 'recentchanges-feed-description' => "Kozesa omukutu guno okugoberera enkyukakyuka empya ez'oku wiki",
-'rcnote' => "Wano olaba {{PLURAL:$1|olukyukakyuka '''1''' olukoledwawo|enkyukakyuka '''$1''' ezikoledwawo}} mu {{PLURAL:$2|lunaku olwakayita|naku '''$2''' ezaakayita}}. Bino byategeerese ku ssaawa $5 nga $4.",
 'rclistfrom' => 'Laga enkyukakyuka empya ezikoledwa okuva $1',
 'rcshowhideminor' => '$1 nkyukakyuka ntono',
 'rcshowhidebots' => '$1 ebya bboti',
@@ -987,7 +967,6 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
 'allpagesto' => 'Laga empapula okutuuka ku:',
 'allarticles' => 'Empapula zonna',
 'allinnamespace' => 'Empapula zonna (mu kkunngaanizo erya $1)',
-'allnotinnamespace' => 'Empapula zonna (ezitali mu kkunngaanizo erya $1)',
 'allpagessubmit' => 'Nona',
 'allpagesprefix' => 'Ndaga empapula eziriko akatandikwa kano:',
 
@@ -1170,9 +1149,6 @@ Ekimu ku ebyo ebibiri bwe kibawo, olwo gwe oba olina okwekyusiza olwa yogera nan
 'movepage-moved' => '\'\'\'"$1" kati luyitibwa "$2"\'\'\'',
 'articleexists' => 'Erinnya eryo waliwo olupapula olulala olulirina. Oba ssi ekyo, olonze erinnya eritakkirizibwa.
 Londayo eddala.',
-'talkexists' => "'''Olupapula lukyusidwa erinnya. Wabula tekisobose okukyusizako ne yogera nange, olwokubanga wasangidwawo yogera nange endala ku linnya eppya.
-Yogera nange gwe olina okugyegattira ku eyo esangidwawo.'''",
-'movedto' => 'kati lutumidwa',
 'movetalk' => "N'olupapula olwa yogera nange lwakwo lusimbulize",
 'movelogpage' => 'Ebikyusidwa manya',
 'movereason' => 'Nsonga:',
@@ -1305,10 +1281,6 @@ Ebirala biyinza butalabika okujjako ng'okiragidde.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Fayiro eno gikolereko mu pulogulamu endala',
-'edit-externally-help' => '[https://www.mediawiki.org/wiki/Manual:External_editors Nyiga wano] okuyiga ebisingawo ku kukozesa pulogulamu endala okukola enkyukakyuka.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Zonna',
 'namespacesall' => 'Gonna',
index b46693d..0e0a733 100644 (file)
@@ -58,7 +58,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Audste_pagina\'s' ),
        'Blankpage'                 => array( 'Laeg_pagina\'s' ),
        'Block'                     => array( 'Blokkere' ),
-       'Blockme'                   => array( 'Blokkeer_mich' ),
        'Booksources'               => array( 'Bookwinkele' ),
        'BrokenRedirects'           => array( 'Gebraoke_doorverwiezinge' ),
        'Categories'                => array( 'Categorieë' ),
@@ -68,7 +67,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Gebroeker_aonmake' ),
        'Deadendpages'              => array( 'Doedloupende_pagina\'s' ),
        'DeletedContributions'      => array( 'Eweggesjafde_biedrage' ),
-       'Disambiguations'           => array( 'Verdudelikingspagina\'s' ),
        'DoubleRedirects'           => array( 'Dobbel_doorverwiezinge' ),
        'Emailuser'                 => array( 'E-maile' ),
        'Export'                    => array( 'Exportere' ),
@@ -179,7 +177,6 @@ $messages = array(
 'tog-minordefault' => 'Markeer sjtanderd alle bewirkinge es klein',
 'tog-previewontop' => 'Veurvertuin baove bewèrkingsveld tuine',
 'tog-previewonfirst' => 'Preview laote zien bie de ierste bewirking',
-'tog-nocache' => 'Zèt de browserpaginacaching oet',
 'tog-enotifwatchlistpages' => "Versjik 'ne e-mail nao mich bie bewirkinge van pagina's en bestenj op mien volglies",
 'tog-enotifusertalkpages' => "'ne E-mail nao mich versjikke es emes mien euverlèkpagina verangert",
 'tog-enotifminoredits' => "Versjik  mich 'ne e-mail bie klein bewirkinge op pagina's en bestenj op mien volglies",
@@ -300,7 +297,6 @@ $messages = array(
 'qbedit' => 'Bewirke',
 'qbpageoptions' => 'Pagina-opties',
 'qbmyoptions' => 'mien opties',
-'qbspecialpages' => "Speciaal pagina's",
 'faq' => 'FAQ (väölgesjtèlde vraoge)',
 'faqpage' => 'Project:Väölgestjèlde vraoge',
 
@@ -504,9 +500,6 @@ D'r is gein toelichting besjikbaar.",
 'perfcached' => "De gegaeves koume oet 'n cache en zeen mäögelik neet actueel. 't Geuf {{PLURAL:$1|maximaal ei rizzeltaot|maximaal $1 rizzeltaote}} inne cache.",
 'perfcachedts' => "De getuunde gegaeves komme oet 'n cache en zeen veur 't letst biejgewèrk op $1. Maximaal guuef 't {{PLURAL:$4|ei rizzeltaot|$4 rizzeltaote}} inne cache.",
 'querypage-no-updates' => "Deze pagina kin op 't memènt neet biegewirk waere. Deze gegaeves waere neet verfrisj.",
-'wrong_wfQuery_params' => 'Verkeerde paramaeters veur wfQuery()<br />
-Funksie: $1<br />
-Query: $2',
 'viewsource' => 'Bekiek brónteks',
 'viewsource-title' => 'Bekiek brón van $1',
 'actionthrottled' => 'Hanjeling taengegehauwe',
@@ -632,7 +625,7 @@ Doe mós effe wachte ierdets te 't obbenuuts kens perbere.",
 'user-mail-no-addy' => "Perbeerdjes 'ne mail te sjikke zónger 'n adres",
 
 # Change password dialog
-'resetpass' => 'Wachwaord obbenuuts insjtèlle',
+'changepassword' => 'Wachwaord verangere',
 'resetpass_announce' => "Doe bös aangemeld mèt 'ne tiejdelikke code dae per e-mail is toegezönje. Veur 'n nuuj wachwaord in om 't aanmelje te voltooie:",
 'resetpass_header' => 'Wachwaord obbenuuts insjtèlle',
 'oldpassword' => 'Hujig wachwaord',
@@ -977,10 +970,6 @@ achtergrönj zeen meugelik te vinjen in 't [{{fullurl:{{#Special:Log}}/suppress|
 'revisiondelete' => 'Verwijder/herstel bewerkinge',
 'revdelete-nooldid-title' => 'Geine doelverzie',
 'revdelete-nooldid-text' => "Doe höbs gein(e) doelverzie(s) veur deze hanjeling opgegaeve, d'n aangaeving besteit neet, of doe perbeers de letste versie te verberge.",
-'revdelete-nologtype-title' => "d'r Is gein logbooktype opgegaeve",
-'revdelete-nologtype-text' => 'De höbs gein logbooktype opgegaeve om deze handeling op oet te voere.',
-'revdelete-nologid-title' => 'Ongeldige logbookregel',
-'revdelete-nologid-text' => 'De höbs ofwaal gein doellogbookregel opgegaeve of de aangegaeve logbookregel besteit neet.',
 'revdelete-no-file' => "'d Aangegaeve bestandj besteit neet.",
 'revdelete-show-file-confirm' => 'Wèt se zeker det se de gewösjdje versie ven \'t bestandj "<nowiki>$1</nowiki>" ven $2 óm $3 wils bekieke?',
 'revdelete-show-file-submit' => 'Jao',
@@ -1013,8 +1002,6 @@ $1",
 'logdelete-failure' => "'''De zichbaarheid van de logbookregel kos neet ingesteldj waere:'''
 $1",
 'revdel-restore' => 'Zichbaarheid verangere',
-'revdel-restore-deleted' => 'gwösj versies',
-'revdel-restore-visible' => 'zichber versies',
 'pagehist' => 'Paginagesjiedenis',
 'deletedhist' => 'Verwiederde gesjiedenis',
 'revdelete-hide-current' => "dr Is 'n fout opgetraoje bie 't verberge van 't objek van $1 óm $2 oer: dit is de hudige versie.
@@ -1086,12 +1073,8 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 # Search results
 'searchresults' => 'Zeukresultate',
 'searchresults-title' => 'Zeukresultate veur "$1"',
-'searchresulttext' => 'Veur mier informatie euver zeuke op {{SITENAME}}, zuug [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Doe zeukdes veur \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pagina\'s die beginne mit "$1"]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|pagina\'s die verwieze nao "$1"]])',
-'searchsubtitleinvalid' => 'Voor zoekopdracht "$1"',
 'toomanymatches' => "d'r Wore te väöl resultate. Probeer estebleef  'n anger zeukopdrach.",
 'titlematches' => 'Overeinkoms mèt volgende titels',
-'notitlematches' => 'Geine inkele paginatitel gevónje mit de opgegaeve zeukterm',
 'textmatches' => 'Euvereinkoms mèt artikelinhoud',
 'notextmatches' => 'Geen artikel gevonden met opgegeven zoekterm',
 'prevn' => 'veurige {{PLURAL:$1|$1}}',
@@ -1100,10 +1083,8 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultate}}',
 'shown-title' => '$1 {{PLURAL:$1|resultaat|resultate}} per pagina weergaeve',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bekieke.',
-'searchmenu-legend' => 'Zeukopties',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmake op deze wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanaome mit dit veurveugsel weergaeve]]',
 'searchprofile-articles' => "Inhaudelike pagina's",
 'searchprofile-project' => "Help- en projekpagina's",
 'searchprofile-images' => 'Bestenj',
@@ -1124,22 +1105,16 @@ Wees zeker det deze wieziging de gesjiedenisdoorloupendheid van de pagina zal be
 'search-interwiki-default' => '$1 resultate:',
 'search-interwiki-more' => '(meer)',
 'search-relatedarticle' => 'Gerelateerd',
-'mwsuggest-disable' => 'Suggesties via AJAX oetsjakele',
 'searcheverything-enable' => 'Zeuke in alle naamruumdes',
 'searchrelated' => 'gerelateerd',
 'searchall' => 'alle',
 'showingresults' => 'Hieonger staon de <b>$1</b> {{PLURAL:$1|resultaat|resultaat}}, vanaaf #<b>$2</b>.',
 'showingresultsnum' => "Hieonger {{PLURAL:$3|steit '''1''' resultaat|staon '''$3''' resultate}} vanaaf #<b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultate '''$1 - $2''' van '''$3'''}} veur '''$4'''",
-'nonefound' => "'''Lèt op:''' sjtandaard waere neet alle naamruumdes naogezeuk.
-Wens doe in dien zeukopdrach es veurvoegsel \"''all:''\" gebroeks waere alle pagina's naogezeuk (inclusief euverlèkpagina's, sjablone, enzoewiejer).
-Doe kans ouch 'n naamruumde es veurvoegsel gebroeke.",
 'search-nonefound' => "D'r zien gein resultate veur diene zeukopdrach.",
-'powersearch' => 'Zeuke',
 'powersearch-legend' => 'Oetgebreid zeuke',
 'powersearch-ns' => 'Zeuke in naamruumdes:',
 'powersearch-redir' => 'Doorverwiezinge waergaeve',
-'powersearch-field' => 'Zeuk nao',
 'powersearch-togglelabel' => 'Conterleer:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Gein',
@@ -1152,7 +1127,6 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
 'preferences' => 'Veurkäöre',
 'mypreferences' => 'Mien veurkäöre',
 'prefs-edits' => 'Aantal bewèrkinge:',
-'changepassword' => 'Wachwaord verangere',
 'prefs-skin' => '{{SITENAME}}-uterlik',
 'skin-preview' => 'Veurbesjouwing',
 'datedefault' => 'Gein veurkäör',
@@ -1175,13 +1149,11 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
 'prefs-email' => 'E-mailopsjes',
 'prefs-rendering' => 'Oeterlik',
 'saveprefs' => 'Veurkäöre opsjlaon',
-'resetprefs' => 'Sjtandaardveurkäöre hersjtèlle',
 'restoreprefs' => 'Terug nao standaardinstellinge',
 'prefs-editing' => 'Aafmeitinge tèksveld',
 'rows' => 'Regels',
 'columns' => 'Kolomme',
 'searchresultshead' => 'Insjtèllinge veur zeukresultate',
-'resultsperpage' => 'Aantal te tuine zeukresultate per pagina',
 'stub-threshold' => 'Drempel veur markering <a href="#" class="stub">begske</a>:',
 'stub-threshold-disabled' => 'Oetgezatj',
 'recentchangesdays' => 'Aantal daag te tuine in de recènte verangeringe:',
@@ -1193,7 +1165,6 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
 'localtime' => 'Plaatselike tied',
 'timezoneuseserverdefault' => 'Gebroek wikistanderd ($1)',
 'timezoneuseoffset' => 'Angers (gaef tiedversjil)',
-'timezoneoffset' => 'Tiedsversjil¹:',
 'servertime' => 'Server tied:',
 'guesstimezone' => 'Invulle van browser',
 'timezoneregion-africa' => 'Afrika',
@@ -1427,7 +1398,6 @@ Deze informatie is zichbaar veur angere gebroekers.',
 'recentchanges-label-bot' => "Dees bewirking is oetgeveurd door 'ne bot",
 'recentchanges-label-unpatrolled' => 'Dees bewirking is nog neet gekónterleerd',
 'recentchanges-legend-newpage' => '$1 - Nuuj pagina',
-'rcnote' => "Hiejónger {{PLURAL:$1|steit de lètste bewirking|staon de lètste '''$1''' bewirkinge}} van de aafgeloupe {{PLURAL:$2|daag|'''$2''' daag}}, op $4, um $5.",
 'rcnotefrom' => "Verangeringe sins <b>$2</b> (mit 'n maximum van <b>$1</b> verangeringe).",
 'rclistfrom' => 'Tuin de verangeringe vanaaf $1',
 'rcshowhideminor' => '$1 klein bewèrkinge',
@@ -1886,10 +1856,8 @@ De pafina's zeen ouk neet as sjabloon opgenome.",
 'protectedpages' => "Besjörmde pagina's",
 'protectedpages-indef' => 'Allein blokkades zonger verloupdatum',
 'protectedpages-cascade' => 'Allein beveiliginge mit de cascade-optie',
-'protectedpagestext' => "De volgende pagina's zeen beveilig en kinne neet bewerk en/of hernömp waere",
 'protectedpagesempty' => "d'r Zeen noe gein pagina's besjörmp die aan deze paramaetere voldaon.",
 'protectedtitles' => "Beveiligde pazjena's",
-'protectedtitlestext' => 'De volgende titels zeen beveilig en kinne neet aangemaak waere',
 'protectedtitlesempty' => "d'r Zeen momenteel gein titels beveilig die aan deze paramaeters voldaon.",
 'listusers' => 'Lies van gebroekers',
 'listusers-editsonly' => 'Allein gebroekers mit bewèrkinge weergaeve',
@@ -1941,9 +1909,6 @@ Controleer of se wellich n fout höbs gemaak bie de inveur.',
 'allpagesto' => "Pagina's betrachte tot:",
 'allarticles' => 'Alle artikele',
 'allinnamespace' => "Alle pazjena's (naamruumde $1)",
-'allnotinnamespace' => "Alle pazjena's (neet in naamruumde $1)",
-'allpagesprev' => 'Veurige',
-'allpagesnext' => 'Irsvolgende',
 'allpagessubmit' => 'Gank',
 'allpagesprefix' => "Betrach pazjena's mit 't veurvoogsel:",
 'allpagesbadtitle' => "De opgegaeve paginanaam is ongeldig of haj 'n intertaal of interwiki veurvoegsel. Meugelik bevatte de naam karakters die neet gebroek moge waere in paginanäöm.",
@@ -2254,7 +2219,6 @@ Es d'r 'ne nuuj pagina mit dezelfde naam is aangemaak sins de pagina is eweggesj
 'undeletebtn' => 'Trökzètte',
 'undeletelink' => 'bekieke/trökzètte',
 'undeleteviewlink' => 'Bekiek',
-'undeletereset' => 'Reset',
 'undeleteinvert' => 'Ómgedriejde selectie',
 'undeletecomment' => 'Reeje:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|versie|versies}} truukgeplaatsj',
@@ -2342,13 +2306,11 @@ De leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
 'block' => 'Blok gebroeker',
 'unblock' => 'Deblokkeer IP adres',
 'blockip' => 'Blokkeer dit IP-adres',
-'blockip-title' => 'Blok gebroeker',
 'blockip-legend' => "'ne Gebroeker of IP-adres blokkere",
 'blockiptext' => "Gebroek 't óngerstjaondj formeleer óm sjrieftoegank van e zeker IP-adres te verbeje. Dit maag allein gedaon weure om vandalisme te veurkómme en in euvereinkóms mitte [[{{MediaWiki:Policy-url}}|beleid]]. Gaef hiejónger de raeje óp (bv. inkel vandaliseerdje paazjes).",
 'ipadressorusername' => 'IP-adres of gebroekersnaam',
 'ipbexpiry' => "Verlöp (maak 'n keuze)",
 'ipbreason' => 'Reeje:',
-'ipbreasonotherlist' => 'Angere reje',
 'ipbreason-dropdown' => '*Väöl veurkommende rejer veur blokkaazjes
 ** Foutieve informatie inveure
 ** Verwiedere van informatie oet artikele
@@ -2364,8 +2326,6 @@ De leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
 'ipbsubmit' => 'Blokkeer dit IP-adres',
 'ipbother' => 'Anger verloup',
 'ipboptions' => '2 oer:2 hours,1 daag:1 day,3 daag:3 days,1 waek:1 week,2 waek:2 weeks,1 maondj:1 month,3 maondj:3 months,6 maondj:6 months,1 jaor:1 year,veur iwweg:infinite',
-'ipbotheroption' => 'anger verloup',
-'ipbotherreason' => 'Angere/eventuele rejer:',
 'ipbhidename' => 'Verberg gebroekersnaam van liester èn bewèrkinger',
 'ipbwatchuser' => 'Gebroekerspazjena en euverlèkpazjena op vólglies plaatse',
 'ipb-disableusertalk' => 'Veurkóm det deze gebroeker tiedes de blok de eige euverlègkpagina kin bewirke',
@@ -2451,7 +2411,6 @@ Wils se de instellinge wiezige?',
 'proxyblockreason' => "Dien IP-adres is geblokkeerd ómdat 't 'n aope proxy is. Contacteer estebleef diene internet service provider of technische óngersjteuning en informeer ze euver dit serjeus veiligheidsprebleem.",
 'sorbsreason' => 'Dien IP-adres is opgenaome in de DNS-blacklist es open proxyserver, dae {{SITENAME}} gebroek.',
 'sorbs_create_account_reason' => 'Dien IP-adres is opgenómme in de DNS-blacklist es open proxyserver, dae {{SITENAME}} gebroek. De kèns gein gebroekersaccount aanmake.',
-'cant-block-while-blocked' => 'De kins anger gebroekers neet blokkere terwiel se zelf geblokkeerd bös.',
 'cant-see-hidden-user' => 'De gebroeker dae se perbeers te blokke is al geblok en verbórge.
 Ómdes se \'t rèch "hideuser" neet höbs, kèns se de blok neet bekieke of bewerke.',
 'ipbblocked' => 'Doe kèns gein anger gebroekers (ónt)blokke, ómdet se zèlf geblók bös.',
@@ -2507,7 +2466,6 @@ Zörg deveur dets te die gevolge euverzuus ierdets te dees hanjeling oetvoers.",
 'movearticle' => 'Verplaats pagina:',
 'moveuserpage-warning' => "'''Waorsjoewing:''' doe geis 'ne gebroekerspagina hernömme.
 Haaj d'r raekening mit det allein de pagina wuuertj hernömp, ''neet'' de gebroeker.",
-'movenologin' => 'Neet aangemèld',
 'movenologintext' => "Veur 't verplaatse van 'n pagina mos te zien [[Special:UserLogin|aangemèld]].",
 'movenotallowed' => "De kèns gein pazjena's verplaatse.",
 'movenotallowedfile' => 'De höbs gein rechte om bestenj te hernömme.',
@@ -2522,8 +2480,6 @@ Haaj d'r raekening mit det allein de pagina wuuertj hernömp, ''neet'' de gebroe
 'movepage-moved-noredirect' => "d'r Is gein doorverwiezing aongemaak.",
 'articleexists' => "Dao is al 'n pagina mit deze titel of de titel is óngeljig. <br />Kees estebleef 'ne angere titel.",
 'cantmove-titleprotected' => "De kèns gein pazjena nao deze titel herneume, ómdet de nuje titel beveilig is taege 't aanmake d'rvan.",
-'talkexists' => "De pagina zelf is verplaats, meh de euverlèkpagina kós neet verplaats waere, ómdet d'r al 'n euverlèkpagina mit de nuje titel besjtóng. Combineer de euverlèkpagina's estebleef mit de hand.",
-'movedto' => 'verplaats nao',
 'movetalk' => 'Verplaats de euverlèkpagina ouch.',
 'move-subpages' => "Herneum subpagina's (maximaal $1)",
 'move-talk-subpages' => "Herneum subpagina's van euverlèkpagina's (maximaal $1)",
@@ -3273,15 +3229,10 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
 'exif-urgency-high' => 'Hoeg ($1)',
 'exif-urgency-other' => 'Door gebroeker gedefinieerde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => "Bewirk dit bestand mit 'n extern toepassing",
-'edit-externally-help' => '(zuug de [https://www.mediawiki.org/wiki/Manual:External_editors setupinsjtructies] veur mie informatie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'al',
 'namespacesall' => 'alle',
 'monthsall' => 'al',
-'limitall' => 'al',
 
 # Email address confirmation
 'confirmemail' => 'Bevèstig e-mailadres',
@@ -3302,7 +3253,6 @@ Zuug dien e-mailadres nao op óngeljige karakters.
 'confirmemail_needlogin' => 'Doe mós $1 óm dien e-mailadres te bevestige.',
 'confirmemail_success' => 'Dien e-mailadres is bevesteg. De kins noe inlogke en van de wiki genete.',
 'confirmemail_loggedin' => 'Dien e-mailadres is noe vasgelag.',
-'confirmemail_error' => "Bie 't opsjlaon van eur bevèstiging is get fout gegange.",
 'confirmemail_subject' => 'Bevèstiging e-mailadres veur {{SITENAME}}',
 'confirmemail_body' => "Emes, waorsjienlik doe vanaaf 't IP-adres $1, heet 'n account $2
 aangemaak mit dit e-mailadres op {{SITENAME}}.
@@ -3527,7 +3477,6 @@ Same mit dit programma heurs se 'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van d
 
 # Special:ComparePages
 'comparepages' => "Vergeliek pazjena's",
-'compare-selector' => 'Vergeliek pazjenaversies',
 'compare-page1' => 'Paasj 1',
 'compare-page2' => 'Paasj 2',
 'compare-rev1' => 'Versie 1',
index af073c6..913d56f 100644 (file)
@@ -55,7 +55,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Tûtte e paggine' ),
        'Ancientpages'              => array( 'Paggine meno reçenti' ),
        'Block'                     => array( 'Blocca' ),
-       'Blockme'                   => array( 'BloccaProxy' ),
        'Booksources'               => array( 'RiçercaISBN' ),
        'Categories'                => array( 'Categorîe' ),
        'ChangePassword'            => array( 'Rimposta paròlla d\'ordine' ),
@@ -147,7 +146,6 @@ $messages = array(
 'tog-minordefault' => 'Indica de longo comme menô e modiffiche',
 'tog-previewontop' => "Veddi l'anteprimma de d'äto a-o spaçio pe cangiâ",
 'tog-previewonfirst' => "Veddi l'anteprimma a-o primmo cangiamento",
-'tog-nocache' => 'Disabilita a cache de pagine do navegatô',
 'tog-enotifwatchlistpages' => "Famme savéi via e-mail quande 'na paggina o in file inti mæ osservæ a ven cangiâ.",
 'tog-enotifusertalkpages' => "Màndime un messaggio e-mail se gh'é de-e modìffiche inta pagina de discuscion da mæ pagina d'utente.",
 'tog-enotifminoredits' => 'Inviami una email pe e modifiche menoî ascì de pagine e di file',
@@ -273,7 +271,6 @@ $messages = array(
 'qbedit' => 'Cangia',
 'qbpageoptions' => "Opsioîn de 'sta paggina",
 'qbmyoptions' => 'E mæ paggine',
-'qbspecialpages' => 'Pagine speçiä',
 'faq' => 'Domande frequenti',
 'faqpage' => 'Project:Domande frequente',
 
@@ -549,7 +546,7 @@ Pe abilitâ l'invîo de messaggi e-mail pe quest'accesso, o se deive seguî l'is
 'user-mail-no-body' => "T'hæ çercou de mandâ un'e-mail troppo curta o proppio voeua",
 
 # Change password dialog
-'resetpass' => 'Cangia a pòula segretta',
+'changepassword' => 'Cangiâ a pòula segretta',
 'resetpass_announce' => "T'ê introu co in codiçe temporanio de l'e-mail.Pe completâ l'accesso ti devi çerne 'na neuva poula segretta chì:",
 'resetpass_header' => 'Cangia a pòula segretta do conto',
 'oldpassword' => 'Vegia poula segretta',
@@ -728,8 +725,6 @@ Legenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a ve
 'rev-delundel' => 'fanni védde/ascondi',
 'revdelete-radio-set' => 'Sci',
 'revdel-restore' => 'càngia a vixibilitæ',
-'revdel-restore-deleted' => 'Revixioìn scancelæ',
-'revdel-restore-visible' => 'revixioìn che se peuan védde',
 
 # Merge log
 'revertmerge' => 'Anùlla union',
@@ -744,8 +739,6 @@ Legenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a ve
 # Search results
 'searchresults' => 'Resultati da reçerca',
 'searchresults-title' => 'Rezoltati da riçerca de "$1"',
-'searchsubtitle' => "Ti t'è çercoö '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Ti t'è çercoö '''$1'''",
 'prevn' => 'Precedenti {{PLURAL:$1|$1}}',
 'nextn' => 'Proscima {{PLURAL:$1|$1}}',
 'prevn-title' => '{{PLURAL:$1|rezoltato precedénte|rezoltati precedénti}}',
@@ -773,12 +766,10 @@ Legenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a ve
 'searchall' => 'tùtti',
 'showingresultsheader' => "{{PLURAL:$5|Rizoltato '''$1''' di '''$3'''|Rizoltati '''$1 - $2''' de '''$3'''}} pe '''$4'''",
 'search-nonefound' => "Mi n'ho atrovòu ninte",
-'powersearch' => 'Çerca',
 
 # Preferences page
 'preferences' => 'Preferençe',
 'mypreferences' => 'Preferençe',
-'changepassword' => 'Cangiâ a pòula segretta',
 'skin-preview' => 'Anteprimma',
 'prefs-datetime' => 'Data e oùa',
 'saveprefs' => 'Sarva',
@@ -825,7 +816,6 @@ Legenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a ve
 'recentchanges-label-minor' => 'Cangiamento minô (m)',
 'recentchanges-label-bot' => "Sto cangiaménto o l'à fæto in bot",
 'recentchanges-label-unpatrolled' => "Sto cangiaménto o no l'é stæto ancón verificòu",
-'rcnote' => "Chì sotta {{PLURAL:$1|l'é elencou o cangiaménto ciù reçente|son elencæ i '''$1''' cangiaménti ciù reçenti}} a-o scîto {{PLURAL:$2|inte ùrtime 24 ôe|inti ùrtimi '''$2''' giorni}}; i dæti son agiornæ a-e $5 do $4.",
 'rcnotefrom' => "Chì sotta gh'è i cangiamenti fæti comensando da '''$2''' (scin a '''$1''').",
 'rclistfrom' => 'Fanni vedde e modiffiche apportæ partindo da $1',
 'rcshowhideminor' => '$1 cangiaménti minoi',
@@ -998,9 +988,6 @@ Ti te peu strinza a vista se ti te çerni un tipo de registro, un nomme de un ut
 'allpagesfrom' => 'Fanni vedde e paggine comensando da:',
 'allarticles' => 'Tùtte e pàgine',
 'allinnamespace' => 'Tutte e pagine ($1 namespace)',
-'allnotinnamespace' => 'Tutte e pagine (non in $1)',
-'allpagesprev' => 'De primma',
-'allpagesnext' => 'De dòppo',
 'allpagessubmit' => 'Vanni',
 'allpagesprefix' => 'Fanni vedde e paggine che inissian con:',
 'allpagesbadtitle' => 'O titolo pe a pagina o non va ben, o o tegne de i prefissi interlingua o interwiki. O peu tegne un o ciù caratteri non permissi in ti titoli ascì.',
@@ -1227,8 +1214,6 @@ Inte 'sti câxi, se o se vêu fâ coscì, o se deive stramûâ ò azzonze manual
 'movepagebtn' => 'Stramûâ a paggina',
 'pagemovedsub' => 'Remescio fæto',
 'articleexists' => "Ghe n'æmmo zà 'na paggina con 'sto nomme, oppûre quello che ti g'hæ scelto o no l'è permisso. Cangia nomme.",
-'talkexists' => "'''A paggina a l'è stæta stramûâa correttamente, ma o no l'è stæto poscibbile stramûâ a paggina de discûxon perché ghe n'è zà 'n'âtra co-o nêuvo tittolo. O se deive inserî manualmente i contegnûi de tûtte e doe.'''",
-'movedto' => 'Stramûâa a',
 'movetalk' => 'Stramûâ anche a paggina de discûxon',
 'movelogpage' => 'Lista di stramûi',
 'movereason' => 'Raxon',
@@ -1385,10 +1370,6 @@ I inganci sucescivi, in scia mæxima riga, van conscideræ comme eceçioìn (pag
 'exif-filesource' => 'Reixe do papê',
 'exif-languagecode' => 'Lengua',
 
-# External editor support
-'edit-externally' => 'Càngia sto file co-in programma esterno',
-'edit-externally-help' => 'Pe avéi ciù informaçioìn amia e [https://www.mediawiki.org/wiki/Manual:External_editors istruçioìn] (in ingléize)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Tùtti',
 'namespacesall' => 'Tùtti',
index 00ea60d..81afd0f 100644 (file)
@@ -298,8 +298,6 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 # Revision deletion
 'rev-delundel' => 'nägţ/vaŗ jarā',
 'revdel-restore' => 'Mõitiņt nǟdõbõzt',
-'revdel-restore-deleted' => 'jarā kištāntõd redaktsijõd',
-'revdel-restore-visible' => 'nǟdõbõd redaktsijõd',
 
 # Merge log
 'revertmerge' => 'Kīeld jarā kubbõ vieddimi',
@@ -314,11 +312,6 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 # Search results
 'searchresults' => 'Vȯtšimiz rezultātõd',
 'searchresults-title' => 'Vȯtšimiz "$1" rezultātõd',
-'searchresulttext' => 'Mūdõ tieutõkst iļ {{SITENAME}} vȯtšimiz pierāst vaņtligid  [[{{MediaWiki:Helppage}}| opātõksõst]]',
-'searchsubtitle' => "Vȯtšīztõ frāzõ '''[[:$1]]''' ( [[Special:Prefixindex/$1|amād sõnādõks ''$1'' irgõbõd lēḑõd]]{{int:pipe-separator}} 
-[[Special:WhatLinksHere/$1|amād lēḑõd, mis sizzõl um siḑīmḑi kēratõks ''$1'' jūrõ]])",
-'searchsubtitleinvalid' => "Tēg vȯtšīztõ frāzõ  '''$1'''",
-'notitlematches' => 'Kēratõks pēļikēris vȯtštõd sõņḑi äb ūo lieudtõd',
 'notextmatches' => 'Kēratõks sizzõl vȯtštõd tekstõ äb lieudtõd',
 'prevn' => '{{PLURAL:$1|jedmõli|jedmõlizt $1}}',
 'nextn' => '{{PLURAL:$1|pierrõ-tulbi|pierrõ-tulbizt $1}}',
@@ -349,13 +342,10 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 'searchrelated' => 'sidtõd',
 'searchall' => 'tikkiž',
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st rezultātõst|Rezultātõd '''$1–$2''' '''$3'''-st}} kizzimizõn '''$4'''",
-'nonefound' => "'''Pangid tǟdõl''': Vȯtšõbõd set mingizt nim-rūimõd sizāld. Až tēg tōgid vȯtšõ amšti nim-rūimšti (ka nõvpidāmiz lēḑõd, mallõd, jnj sizāld) kȭlbatõgid kizzimiz jedsõ prefiksõ ''all:''",
 'search-nonefound' => 'Vȯtšimizõn vȯtšimi äb lieudtõd vastūkst.',
-'powersearch' => 'Juo akurāt vȯtšimi',
 'powersearch-legend' => ' Juo akurāt vȯtšimi',
 'powersearch-ns' => 'Vȯtšimi nim-rūimšti:',
 'powersearch-redir' => 'Jeddõpēḑõn sōtimizt nimkēra',
-'powersearch-field' => 'Vȯtšõgid frāzõ',
 
 # Preferences page
 'preferences' => 'Mīeldõbõd ulzõ-vēļimizt',
@@ -389,7 +379,6 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 'recentchanges-label-minor' => 'Se um ikš piški parāmtimi',
 'recentchanges-label-bot' => 'Sīe mõitõks tei ikš robot',
 'recentchanges-label-unpatrolled' => 'Se mõitõks tēji vȯļ ikš robot',
-'rcnote' => "Allõ-pūol um andtõd {{PLURAL:$1| '''1''' mõitõks|'''$1''' mõitõks}} perīz {{PLURAL:$2|pǟva|'''$2''' pǟva}}, āigal kēratõd $5 kīela $4.",
 'rcnotefrom' => "Allõ-pūol um tūodõd mõitõkst  '''$2''' sōņõst: (nägţõbõd amā jemīņ '''$1''' mõitõkst)",
 'rclistfrom' => 'Nägţ mõitõkši sōņõst: $1',
 'rcshowhideminor' => '$1 piškizt parāmtimizt',
@@ -533,7 +522,7 @@ Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,,
 'protect_expiry_old' => ' Loppõmiz āiga um lǟndzāigas.',
 'protect-text' => "Täs võid vaņtlõ ja mõitiņtõ līed '''$1''' kaitsõmiz-ildõmt.",
 'protect-locked-access' => "Täddõn äb ūo õigõmt mõitiņtõ līed kaitsõmiz-ildõmt.   Allõ-pūol ātõ līed '''$1''' paldīž joūdõs vȯlbizt ulzõ-vēļimizt:",
-'protect-cascadeon' => 'Se lēḑ um kaitstõd, sīepierāst ku tǟnda um kȭlbatõd {{PLURAL:$1|page, which has|pages, which have}}  {{PLURAL:$1|sīesõ līeds, |lēḑis}}   {{plural:$1| sīesõ līeds| nēši  lēḑis}}, mis ātõ īž kaskād kaitsõmiz allõ. Sa sōd mõitiņtõ sīe līed kaitsõmizt, bet se äb mõitiņt kaskād kaitsõmizt.',
+'protect-cascadeon' => 'Se lēḑ um kaitstõd, sīepierāst ku tǟnda um kȭlbatõd {{PLURAL:$1|page, which has|pages, which have}}  {{PLURAL:$1|sīesõ līeds, |lēḑis}}   {{PLURAL:$1| sīesõ līeds| nēši  lēḑis}}, mis ātõ īž kaskād kaitsõmiz allõ. Sa sōd mõitiņtõ sīe līed kaitsõmizt, bet se äb mõitiņt kaskād kaitsõmizt.',
 'protect-default' => 'Āndagid lubā āmādõn kȭlbatijiztõn',
 'protect-fallback' => 'Ma tōb "$1" õigõmḑi',
 'protect-level-autoconfirmed' => 'Blokīerõgid ūd ja bäz pa-kēratõmõt kȭlbatijizt',
@@ -621,8 +610,6 @@ Až sugīz nei, sōd līed tōdõs kädūdõks jeddõpēḑõn sōtõ agā jūr
 'pagemovedsub' => 'Lēḑ um jeddõpēḑõn sōtõd',
 'movepage-moved' => '\'\'\'"$1" um jeddõpēḑõn sōtõd "$2"alā\'\'\'',
 'articleexists' => 'Sīe nimkõks kēratõks um jubā vȯlmizõs agā täd vēļdõt nim um äbkȭlbatõb. Pōlaks vēļõgid ūž nim.',
-'talkexists' => "'''Lēḑ um jeddõpēḑõn sōtõd, bet nõvpidāmiz-līedtõ äb sōnd jeddõpēḑõn sōtõ, sīestõ ku ūd nim allõ um nõvpidāmiz-lēḑ jubā vȯlmizõs. Pōlaks viedāgid nõvpidāmiz-lēḑõd īž kubbõ.'''",
-'movedto' => 'Jeddõpēḑõn sōtõd pēļizkēra alā:',
 'movetalk' => 'Sōtõgid jeddõpēḑõn ka nõvpidāmiz lēḑ',
 'movelogpage' => 'Jarā vīmiz log',
 'movereason' => 'Sī:',
@@ -728,10 +715,6 @@ Až sugīz nei, sōd līed tōdõs kädūdõks jeddõpēḑõn sōtõ agā jūr
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Protseššõgid failõ ulīz programmatūraks',
-'edit-externally-help' => '(Vaņ uļļizt redaktōrd adresõs [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] kȭlbatõmiz opātõkst)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tikkiž',
 'namespacesall' => 'tikkiž',
index d859eca..a41a52b 100644 (file)
@@ -75,7 +75,6 @@ $specialPageAliases = array(
        'BrokenRedirects'           => array( 'RedirezionS-cepada' ),
        'Categories'                => array( 'Categurij' ),
        'CreateAccount'             => array( 'CreaCünt' ),
-       'Disambiguations'           => array( 'Desambiguazion' ),
        'DoubleRedirects'           => array( 'RedirezionDubia' ),
        'Listadmins'                => array( 'ListaAministradur' ),
        'Listfiles'                 => array( 'Imagin' ),
@@ -127,7 +126,6 @@ süi titul dai sezziún (JavaScript)',
 'tog-minordefault' => 'Marca tücc i mudifegh cume piscinìn',
 'tog-previewontop' => "Fá vidé un'anteprima anaanz dala finèstra da redatazziún",
 'tog-previewonfirst' => "Fá vidé l'anteprima ala prima redatazziún",
-'tog-nocache' => 'DIsativa la "cache" per i paginn',
 'tog-enotifusertalkpages' => "Mandem un messagg e-mail quand che gh'è di mudifegh a la mè pàgina di ciaciarad",
 'tog-enotifminoredits' => 'Màndem un messagg e-mail anca per i mudifegh piscinín',
 'tog-enotifrevealaddr' => "Lassa vedè 'l mè indirizz e-mail int i messagg d'avis",
@@ -235,7 +233,6 @@ süi titul dai sezziún (JavaScript)',
 'qbedit' => 'Mudifega',
 'qbpageoptions' => 'Opzión de la pagina',
 'qbmyoptions' => 'I mè paginn',
-'qbspecialpages' => 'Paginn special',
 'faq' => 'FAQ',
 'faqpage' => 'Project:Dumand frequent',
 
@@ -472,6 +469,7 @@ Per piasè, ve drent anmò dop che te l'ricevüü.",
 'loginlanguagelabel' => 'Lengua: $1',
 
 # Change password dialog
+'changepassword' => "Mudifega la paròla d'urdin",
 'oldpassword' => "Paròla d'urdin végja:",
 'newpassword' => "Paròla d'urdin növa:",
 'retypenew' => "Scriv ancamò la paròla d'urdin növa:",
@@ -592,17 +590,12 @@ Per infurmazion, varda ind el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 # Search results
 'searchresults' => 'Risültaa de la recerca.',
 'searchresults-title' => 'Resültaa de la ricerca de "$1"',
-'searchresulttext' => 'Per vegh püssee infurmazión in de la ricerca interna de {{SITENAME}}, varda [[{{MediaWiki:Helppage}}|Ricerca in {{SITENAME}}]].',
-'searchsubtitle' => 'Tì t\'hee cercaa \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tüt i paginn che scumincen per "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tüt i paginn che porten a "$1"]])',
-'searchsubtitleinvalid' => 'T\'hee cercaa "$1"',
 'toomanymatches' => "Gh'è tropi curispundens. Mudifichè la richiesta.",
-'notitlematches' => "La vus che t'hee ciamaa la se tröa minga intra i tituj di articuj",
 'textmatches' => "Truvaa int 'l test di paginn",
 'notextmatches' => "La vus che t'hee ciamaa la gh'ha minga una curispundenza in del test di paginn.",
 'prevn' => 'precedent {{PLURAL:$1|$1}}',
 'nextn' => 'pròssim {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Vidé ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Upzión de ricerca',
 'searchmenu-new' => "'''Trà in pee la pagina \"[[:\$1]]\" ins quel sit chì!'''",
 'searchprofile-articles' => 'Paginn de cuntegnüü',
 'searchprofile-project' => 'Paginn de jüt e de pruget',
@@ -620,19 +613,14 @@ Per infurmazion, varda ind el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGE
 'search-interwiki-caption' => 'Pruget fredej',
 'search-interwiki-default' => '$1 resültaa',
 'search-interwiki-more' => '(püssee)',
-'nonefound' => "''''Tenzión''': la ricerca la vegn fada in utumategh dumà per un quaj namespace.
-Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespace (cumpres i discüssión, i mudel, etc...) o dupra el namespace vursüü 'me prefiss.",
-'powersearch' => 'Truvá',
 'powersearch-legend' => 'Recerca avanzada',
 'powersearch-ns' => 'Cerca in di namespace:',
 'powersearch-redir' => 'Lista i redirezión',
-'powersearch-field' => 'Cerca',
 
 # Preferences page
 'preferences' => 'Preferenz',
 'mypreferences' => 'i mè preferenz',
 'prefs-edits' => 'Quantità de mudifegh faa:',
-'changepassword' => "Mudifega la paròla d'urdin",
 'prefs-skin' => "Aspett de l'interfacia",
 'datedefault' => 'Nissüna preferenza',
 'prefs-datetime' => 'Data e urari',
@@ -644,7 +632,6 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
 'prefs-misc' => 'Ólter',
 'prefs-rendering' => 'Aparenza',
 'saveprefs' => 'Tegn i mudifech',
-'resetprefs' => 'Trá via i mudifech',
 'restoreprefs' => 'Ristabiliss i impustazión de default',
 'prefs-editing' => 'Mudifich',
 'rows' => 'Riich:',
@@ -655,7 +642,6 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
 'savedprefs' => 'I preferenz hinn stai salvaa.',
 'timezonelegend' => 'Lucalitaa',
 'localtime' => 'Urari lucaal',
-'timezoneoffset' => 'Diferenza¹',
 'servertime' => 'Urari dal sèrver',
 'guesstimezone' => 'Catá l urari dal sèrver',
 'allowemail' => 'Permètt ai altar üteent də cuntatamm par email',
@@ -738,7 +724,6 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
 'recentchanges-label-bot' => "Quela mudifega chì l'ha fada un bot",
 'recentchanges-label-unpatrolled' => "Quela mudifega chì a l'è stada mimga anmò verificada.",
 'recentchanges-legend-newpage' => '$1 - pagina növa',
-'rcnote' => "Chì de sota {{PLURAL:$1|gh'è '''1''' mudifega|a hinn i ültim '''$1''' mudifegh}} in di ültim {{PLURAL:$2|dì|'''$2''' dì}}, a partì dai $5 del $4.",
 'rcnotefrom' => "Chì de sota gh'è la lista di mudifegh de <b>$2</b> (fina a <b>$1</b>).",
 'rclistfrom' => 'Fà vidè i cambiament növ a partì de $1',
 'rcshowhideminor' => '$1 i mudifegh piscinín',
@@ -914,8 +899,6 @@ La descrizión sura la sua [$2 pagina de descrizión del file] l'è mustrada ch
 'allpagesfrom' => 'Fàm vedè i paginn a partì da:',
 'allpagesto' => 'Fàm ved i paginn fín a:',
 'allarticles' => 'Tucc i artícoj',
-'allpagesprev' => 'Precedent',
-'allpagesnext' => 'Pròssim',
 'allpagessubmit' => 'Inanz',
 'allpagesprefix' => "Varda i pagin ch'i scumenza per:",
 
@@ -1109,7 +1092,6 @@ Quest chì a hinn i regulazión curent per la pagina '''$1''':",
 
 # Block/unblock
 'blockip' => 'Bloca el dovrat',
-'blockip-title' => "Bloca 'l druvadur",
 'blockip-legend' => "Bloca 'l druvadur",
 'blockiptext' => "Druvee 'l mòdul chì de suta per blucà l'acess cun dirit de scritüra a un indirizz IP specifegh o a un druvadur registraa.
 El bloch gh'è de druvàl dumà per evità el vandalism e in acord cun i [[{{MediaWiki:Policy-url}}|regulament de {{SITENAME}}]].
@@ -1117,7 +1099,6 @@ Scrivee chì de suta 'l mutiv specifegh per el bloch (presempi, a pudii scriv i
 'ipadressorusername' => 'Indirizz IP o nom del druvdur:',
 'ipbexpiry' => 'Fina al:',
 'ipbreason' => 'Reson:',
-'ipbreasonotherlist' => 'Alter mutiv',
 'ipbreason-dropdown' => "*Mutiv püssee cumün per i blòch
 ** Avè caregaa di infurmazión fals
 ** Avè töt via del cuntegnüü dai paginn
@@ -1132,8 +1113,6 @@ Scrivee chì de suta 'l mutiv specifegh per el bloch (presempi, a pudii scriv i
 'ipbsubmit' => 'Blòca quel druvàt chì',
 'ipbother' => 'Altra dürada:',
 'ipboptions' => '2 ur:2 hours,1 dì:1 day,3 dì:3 days,1 semana:1 week,2 semann:2 weeks,1 mes:1 month,3 mes:3 months,6 mes:6 months,1 ann:1 year,infinii:infinite',
-'ipbotheroption' => 'Alter',
-'ipbotherreason' => 'Alter resón/spiegazión',
 'ipbhidename' => "Scund 'l nom del druvat dai mudifegh e da i list.",
 'ipbwatchuser' => "Tegn d'ögg i paginn duvrat e de discüssión de quel duvrat chì",
 'ipb-change-block' => 'Blocà ancamò el duvrat cun quij impustazión chì',
@@ -1194,8 +1173,6 @@ In quij cas chì, se'l var la pena, ghe sarà de spustà a man i infurmazión de
 'movepage-moved-redirect' => "L'è staa creaa un redirect.",
 'articleexists' => "Una pagina che la se ciama cumpagn la gh'è giamò, opüra el nom che hii scernüü al va minga ben. <br />
 Che 'l scerna, per piasè, un nom diferent per quel articul chì.",
-'talkexists' => "'''La pagina a l'è stada spustada ben, ma'l s'è pudüü minga spustà la pagina de discüssión perchè gh'en è giamò un altra cun l'istess nom. Per piasè met insema i cuntegnüü di dò paginn a man'''",
-'movedto' => 'spustaa vers:',
 'movetalk' => 'Sposta anca la pagina de discüssión',
 'movelogpage' => 'Register di San Martin',
 'movereason' => 'Resón:',
@@ -1322,10 +1299,6 @@ I ligam che i vegnen dopu, in sü l'istessa riga, i vegnen cónsideraa di ecezi
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Redatá chest archivi cunt un prugramari da fö',
-'edit-externally-help' => 'Varda [https://www.mediawiki.org/wiki/Manual:External_editors i istrüzión] per avègh püssee infurmazión (in ingles).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tücc',
 'namespacesall' => 'tücc',
index e29c4c0..ee15cd9 100644 (file)
@@ -14,6 +14,9 @@
 
 $fallback = 'fr';
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $linkPrefixExtension = true;
 
 # Same as the French (bug 8485)
@@ -102,7 +105,6 @@ $messages = array(
 'qbedit' => 'Kobɔngisa',
 'qbpageoptions' => 'Lonkásá óyo',
 'qbmyoptions' => 'Lonkásá na ngáí',
-'qbspecialpages' => 'Nkásá gudi',
 'faq' => 'Mitúná Mizóngelaka (MM)',
 
 # Vector skin
@@ -169,7 +171,7 @@ $messages = array(
 'jumptonavigation' => 'bolúki',
 'jumptosearch' => 'boluki',
 
-# 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).
+# 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).
 'aboutsite' => 'Elɔ́kɔ elobí {{SITENAME}}',
 'aboutpage' => 'Project:Etalí',
 'copyright' => 'Maloba ma nkomá mazalí na ndingisa ya $1.',
@@ -178,7 +180,6 @@ $messages = array(
 'disclaimers' => 'Ndelo ya boyanoli',
 'disclaimerpage' => 'Project:Boyanoli ndelo',
 'edithelp' => 'Kobimisela bosálisi',
-'edithelppage' => 'Help:Libɔngeli',
 'mainpage' => 'Lonkásá ya libosó',
 'mainpage-description' => 'Lokásá ya libosó',
 'portal' => 'Bísó na bísó',
@@ -188,7 +189,6 @@ $messages = array(
 'ok' => 'Nandimi',
 'retrievedfrom' => 'Ezwámí úta «$1»',
 'youhavenewmessages' => 'Ozweí $1 ($2).',
-'newmessageslink' => 'nsango ya sika',
 'editsection' => 'kobɔngisa',
 'editold' => 'kobɔngisa',
 'viewsourceold' => 'Komɔ́nisa mosólo',
@@ -346,10 +346,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí  na [[Special:SpecialPages|{{int:special
 # Search results
 'searchresults' => 'Bozwi bwa boluki',
 'searchresults-title' => 'Bozwi bwa boluka bwa «$1»',
-'searchresulttext' => 'Mpɔ̂ na liyébísí lya {{SITENAME}}, ótala [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Olukákí '''[[:$1]]'''  ([[Special:Prefixindex/$1|nkásá yɔ́nsɔ ibandí na « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|nkásá yɔ́nsɔ ikangísí na « $1 »]])",
-'searchsubtitleinvalid' => "Olukákí « '''$1''' »",
-'notitlematches' => 'Títɛlɛ yɔ̌kɔ́ tɛ́ ekokánísí',
 'notextmatches' => 'Nkomá ya nkásá yɔ̌kɔ́ tɛ́ ekokánísí',
 'prevn' => '{{PLURAL:$1|$1}} ya libosó',
 'nextn' => 'bolɛngɛli {{PLURAL:$1|$1}}',
@@ -367,13 +363,9 @@ Ezalí listɛ́ ya nkásá gudi bizalí  na [[Special:SpecialPages|{{int:special
 'search-interwiki-default' => 'Bozwi bwa $1 :',
 'search-interwiki-more' => '(elekí)',
 'searchall' => 'nyɔ́nsɔ',
-'nonefound' => "'''Notí''' : Boluki bwa likwá bosálí na ndámbo ya ntáká ya nkómbó.
-Ómeka kobakisa ''all:'' o libóso lya esɛ́ngi mpɔ̂ na koluka maloba ma nkomá mánsɔ (ekɔ́tí ntembe, bimekisele, b.n.b.), tǒ kobakisa ntáka ya nkómbó eye olingí o libóso.",
-'powersearch' => 'Boluki',
 'powersearch-legend' => 'Boluki bopúsání',
 'powersearch-ns' => 'Koluka o ntáká ya nkómbó :',
 'powersearch-redir' => 'Kotíya molɔngɔ́ mwa mayendisi',
-'powersearch-field' => 'Koluka',
 'powersearch-toggleall' => 'Nyɔ́nsɔ',
 'powersearch-togglenone' => 'Mɔ́kɔ́ tɛ́',
 
@@ -484,8 +476,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí  na [[Special:SpecialPages|{{int:special
 # Statistics
 'statistics' => 'Mitúya',
 
-'disambiguations' => 'Bokokani',
-
 'doubleredirects' => 'Boyendisi mbala míbalé',
 
 # Miscellaneous special pages
@@ -516,8 +506,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí  na [[Special:SpecialPages|{{int:special
 'nextpage' => 'Lonkásá ya nsima ($1)',
 'prevpage' => 'Lonkasá o libosó ($1)',
 'allarticles' => 'Nkásá ínsɔ',
-'allpagesprev' => '< ya libosó',
-'allpagesnext' => 'bolɛngɛli >',
 'allpagessubmit' => 'kokɛndɛ',
 
 # Special:Categories
@@ -629,7 +617,6 @@ Ezalí listɛ́ ya nkásá gudi bizalí  na [[Special:SpecialPages|{{int:special
 'movearticle' => 'Kobóngola nkómbó ya ekakoli :',
 'move-watch' => 'Kolánda lonkásá la líziba mpé lonkásá la tíndamelo',
 'movepagebtn' => 'Kobóngola lonkásá',
-'movedto' => 'nkómbó ya sika',
 'movelogpage' => 'Zuluná ya bobóngoli nkómbó',
 'movereason' => 'Ntína :',
 'revertmove' => 'kozóngela',
index e088865..1e5de0f 100644 (file)
@@ -42,7 +42,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'ການປະກອບສ່ວນ' ),
        'CreateAccount'             => array( 'ສ້າງບັນຊີ' ),
        'Deadendpages'              => array( 'ໜ້າທີ່ບໍ່ມີໜ້າໃດໂຍງມາ' ),
-       'Disambiguations'           => array( 'ແກ້ຄວາມກຳກວມ' ),
        'DoubleRedirects'           => array( 'ໂອນຊ້ອນ' ),
        'Listadmins'                => array( 'ລາຍຊື່ຜູ້ບໍລິຫານລະບົບ' ),
        'Listbots'                  => array( 'ລາຍຊື່ບອຕ' ),
@@ -116,7 +115,6 @@ $messages = array(
 'tog-minordefault' => 'ຖ້າບໍ່ມີການຕັ້ງ ກຳໜົດໃຫ້ທຸກໆການດັດແກ້ ເປັນ ການດັດແກ້ເລັກນ້ອຍ',
 'tog-previewontop' => 'ສະແດງ ຜົນການດັດແກ້ ເທິງ ຊ່ອງດັດແກ້',
 'tog-previewonfirst' => 'ສະແດງ ຜົນການດັດແກ້ ໃນ ເວລາດັດແກ້ເທື່ອທຳອິດ',
-'tog-nocache' => 'ບໍ່ບັນທຶກ ຂໍ້ມູນບົດຄວາມ ໄວ້ໃນຄອມພິວເຕີ',
 'tog-enotifwatchlistpages' => 'ສົ່ງອີເມລມາໃຫ້ຂ້ອຍ ເມື່ອ ໜ້າທີ່ຂ້ອຍຕິດຕາມໄດ້ຖືກປ່ຽນແປງ',
 'tog-enotifusertalkpages' => 'ສົ່ງ ອີເມລ ມາໃຫ້ ຂ້ອຍ ເວລາ ໜ້າສົນທະນາຂ້ອຍ ມີການປ່ຽນແປງ',
 'tog-enotifminoredits' => 'ສົ່ງ ອີເມລ ໃຫ້ຂ້ອຍ ເວລາມີການດັດແກ້ເລັກນ້ອຍນຳ',
@@ -217,7 +215,6 @@ $messages = array(
 'qbedit' => 'ດັດແກ້',
 'qbpageoptions' => 'ໜ້ານີ້',
 'qbmyoptions' => 'ໝ້າຂ້ອຍ',
-'qbspecialpages' => 'ໜ້າພິເສດ',
 
 'errorpagetitle' => 'ຜິດພາດ',
 'returnto' => 'ກັບໄປ  $1.',
@@ -371,6 +368,7 @@ $messages = array(
 'accountcreatedtext' => 'ບັນຊີ ຂອງ  $1 ໄດ້ ຖືກສ້າງແລ້ວ.',
 
 # Change password dialog
+'changepassword' => 'ປ່ຽນລະຫັດຜ່ານ',
 'oldpassword' => 'ລະຫັດຜ່ານເກົ່າ:',
 'newpassword' => 'ລະຫັດຜ່ານໃໝ່:',
 'retypenew' => 'ພິມລະຫັດຜ່ານໃໝ່ອີກ:',
@@ -466,8 +464,6 @@ $messages = array(
 'editundo' => 'ກັບຄືນ',
 
 # Search results
-'searchresulttext' => 'ສຳຫຼັບ ຂໍ້ມູນເພີ່ມເຕີມ ກ່ຽວກັບ ການຊອກຫາ ຢູ່ {{SITENAME}}, ກະລຸນາເບິ່ງ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "ທ່ານ ຊອກຫາ '''[[:$1]]'''",
 'prevn' => '{{PLURAL:$1|$1}} ກ່ອນໜ້າ',
 'nextn' => '{{PLURAL:$1|$1}} ຕໍ່ໄປ',
 'viewprevnext' => 'ເບິ່ງ ($1 {{int:pipe-separator}} $2) ($3).',
@@ -475,20 +471,15 @@ $messages = array(
 'search-result-score' => 'ຄວາມກ່ຽວຂ້ອງ: $1%',
 'search-redirect' => '(ໂອນ $1)',
 'search-relatedarticle' => 'ກ່ຽວຂ້ອງ',
-'mwsuggest-disable' => 'ບໍ່ໃຊ້ການແນະນຳ ໂດຍ AJAX',
 'searchrelated' => 'ກ່ຽວຂ້ອງ',
 'searchall' => 'ທັງໜົດ',
 'showingresults' => "ສະແດງທາງລຸ່ມ ຮອດ {{PLURAL:$1|'''1''' ຜົນ|'''$1''' ຜົນ}} ເລີ່ມຈາກ  #'''$2'''.",
 'showingresultsnum' => "ສະແດງທາງລຸ່ມ  {{PLURAL:$3|'''1''' ຜົນ|'''$3''' ຜົນ}} ເລີ່ມຈາກ #'''$2'''.",
-'nonefound' => "'''ໜາຍເຫດ''': ຈະຄົ້ນຫາແຕ່ໃນ ບາງຂອບເຂດຊື່ ຖ້າບໍ່ມີການຕັ້ງຄ່າ.
-ທົດລອງ ໃຊ້ຄຳນຳໝ້າ ''all:'' ໃນຂໍ້ຄວາມຊອກຫາ ຂອງ ທ່ານ ເພື່ອ ຄົ້ນຫາ ທຸກໆເນື້ອໃນ (ລວມທັງໝ້າສົນທະນາ, ແມ່ແບບ ແລະອື່ນໆ), ຫຼື ໃຊ້ ຂອບເຂດຊື່ໃດໝຶ່ງເປັນ ຄຳນຳໝ້າເລີຍ.",
-'powersearch' => 'ຊອກຫາ',
 
 # Preferences page
 'preferences' => 'ການຕັ້ງຄ່າ',
 'mypreferences' => 'ຕັ້ງຄ່າ',
 'prefs-edits' => 'ຈຳນວນການດັດແກ້:',
-'changepassword' => 'ປ່ຽນລະຫັດຜ່ານ',
 'prefs-skin' => 'ລວດລາຍ',
 'skin-preview' => 'ລອງເບິ່ງ',
 'datedefault' => 'ແນວໃດກໍ່ໄດ້',
@@ -500,7 +491,6 @@ $messages = array(
 'prefs-watchlist-edits' => 'ຈຳນວນການດັດແກ້ ສະແດງ ໃນ ລາຍການຕິດຕາມທີ່ຂະຫຍາຍອອກ:',
 'prefs-misc' => 'ແລະອື່ນໆ',
 'saveprefs' => 'ບັນທຶກ',
-'resetprefs' => 'ເລີ່ມຄືນໃໝ່',
 'prefs-editing' => 'ການດັດແກ້',
 'rows' => 'ແຖວ:',
 'columns' => 'ຖັນ:',
@@ -511,7 +501,6 @@ $messages = array(
 'savedprefs' => 'ການຕັ້ງຄ່າຂອງທ່ານໄດ້ຖືກບັນທຶກແລ້ວ.',
 'timezonelegend' => 'ເຂດເວລາ',
 'localtime' => 'ເວລາທ້ອງຖິ່ນ',
-'timezoneoffset' => 'ຫ່າງກັນ¹',
 'servertime' => 'ເວລາເຊີເວີ',
 'guesstimezone' => 'ເອົາເວລາຈາກໂປຣແກຣມທ່ອງເວັບ',
 'allowemail' => 'ອະນຸຍາດ ໃຫ້ຜູ້ໃຊ້ອື່ນ ສົ່ງອີເມລຫາຂ້ອຍ',
@@ -538,7 +527,6 @@ $messages = array(
 'recentchanges' => 'ການດັດແກ້ຫຼ້າສຸດ',
 'recentchanges-summary' => 'ເບິ່ງ ການປ່ຽນແປງ ຫຼ້າສຸດ ຢູ່ ໜ້າວິກີນີ້.',
 'recentchanges-feed-description' => 'ນຳເບິ່ງການປ່ຽນແປງຫຼ້າສຸດຢູ່ ວິກິນີ້ ໃນ ຟີດ',
-'rcnote' => "ທາງລຸ່ມ {{PLURAL:$1|ແມ່ນ'''1''' ການປ່ຽນແປງ|ແມ່ນ '''$1''' ການປ່ຽນແປງຫຼ້າສຸດ}} ໃນ {{PLURAL:$2|ມື້|'''$2''' ມື້}}, ເມື່ອ $3.",
 'rclistfrom' => 'ສະແດງ ການປ່ຽນແປງ ເລີ່ມແຕ່  $1',
 'rcshowhideminor' => '$1 ການດັດແກ້ເລັກນ້ອຍ',
 'rcshowhidebots' => '$1 ບອທ໌',
@@ -658,8 +646,6 @@ $messages = array(
 'prevpage' => 'ໜ້າກ່ອນ ($1)',
 'allpagesfrom' => 'ສະແດງທຸກໆໜ້າ ເລີ່ມແຕ່:',
 'allarticles' => 'ທຸກໆບົດຄວາມ',
-'allpagesprev' => 'ກ່ອນໜ້າ',
-'allpagesnext' => 'ຕໍ່ໄປ',
 'allpagessubmit' => 'ໄປ',
 'allpagesprefix' => 'ສະແດງ ໜ້າ ຂຶ້ນຕົ້ນດ້ວຍ:',
 
@@ -800,13 +786,11 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'movepagetext' => 'ທ່ານສາມາດ ປ່ຽນຊື່ໜ້າ ແລະ ຍ້າຍປະຫວັດການດັດແກ້ ຂອງໜ້າໃດໜຶ່ງ ໄປ ໜ້າໃໝ',
 'movepagetalktext' => "ໜ້າສົນທະນາຈະຖືກຍ້າຍໄປພ້ອມກັນ '''ເວັ້ນເສຍແຕ່:''",
 'movearticle' => 'ຍ້າຍໜ້າ:',
-'movenologin' => 'ຍັງບໍ່ໄດ້ເຊັນເຂົ້າເທື່ອ',
 'newtitle' => 'ຫາ ຫົວຂໍ້ໃໝ່',
 'move-watch' => 'ຕິດຕາມໜ້ານີ້',
 'movepagebtn' => 'ຍ້າຍໜ້າ',
 'articleexists' => 'ມີໜ້າຊື່ນີ້ແລ້ວ ຫຼື ຊື່ບໍ່ຖືກ.
 ກະລຸນາເລືອກຊື່ອື່ນ.',
-'movedto' => 'ໄດ້ຖືກຍ້າຍໄປ',
 'movetalk' => 'ຍ້າຍທັງ ໜ້າສົນທະນາ ທີ່ ກ່ຽວພັນ.',
 'movelogpage' => 'ບັນທຶກການຍ້າຍ',
 'movereason' => 'ເຫດຜົນ:',
@@ -895,10 +879,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'exif-artist' => 'ຜູ້ຂຽນ',
 'exif-copyright' => 'ເຈົ້າຂອງລິຂະສິດ',
 
-# External editor support
-'edit-externally' => 'ດັດແກ້ໄຟລ໌ນີ້ໂດຍໂປແກຣມພາຍນອກ',
-'edit-externally-help' => 'ເບິ່ງ ຂໍ້ມູນເພີ່ມຕື່ມ ຢູ່ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions]',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ທັງໝົດ',
 'namespacesall' => 'ທັງໝົດ',
@@ -921,7 +901,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'confirmemail_needlogin' => 'ທ່ານ ຈະຕ້ອງ $1 ເພື່ອ ຢືນຢັນ ທີ່ຢູ່ ອີເມລ ຂອງ ທ່ານ.',
 'confirmemail_success' => 'ທີ່ຢູ່ ອີເມລ ຂອງ ທ່ານ ໄດ້ຮັບການຢືນຢັນແລ້ວ. ທ່ານ ສາມາດ ເຊັນເຂົ້າ ແລະ ມ່ວນຊື່ນກັບ ວີກີ ໄດ້.',
 'confirmemail_loggedin' => 'ທີ່ຢູ່ ອີເມລ ຂອງ ທ່ານໄດ້ຖືກຢືນຢັນແລ້ວ.',
-'confirmemail_error' => 'ມີອັນໃດອັນໜຶ່ງຜິດພາດ ໃນ ເວລາບັນທຶກ ການຢືນຢັນຂອງທ່ານ.',
 'confirmemail_subject' => '{{SITENAME}} ຢືນຢັນ ທີ່ຢູ່ ອີເມລ',
 
 # Delete conflict
index 4f23f6d..10a15a4 100644 (file)
@@ -29,7 +29,6 @@ $messages = array(
 'tog-watchdeletion' => 'Pusize petulo a afi kulobala di zwa mukoloko di kentezi',
 'tog-previewontop' => "Kamukile PendiBe pre boks di hloli ye ng'i",
 'tog-previewonfirst' => 'Kamukile PendiBe kwa afi 1',
-'tog-nocache' => 'Amutembwe petulo kahili',
 'tog-enotifwatchlistpages' => 'Meli di zwa di petulo a kentezi sa petuhisize',
 'tog-enotifusertalkpages' => 'Meli di zwa di zwa bulelezi sa petuhisize',
 'tog-enotifrevealaddr' => 'Kamukile zwa adress di meli di xete peson kwa melina notifikasyona',
@@ -122,7 +121,6 @@ $messages = array(
 'qbedit' => "Hloli ye ng'i",
 'qbpageoptions' => 'Bye petulo',
 'qbmyoptions' => 'Zwa petulona',
-'qbspecialpages' => 'Petulo zwenti',
 'faq' => 'Alabile',
 'faqpage' => 'Project:Alabile',
 
@@ -256,9 +254,6 @@ $messages = array(
 'formerror' => 'Bufosi: ni bulukezi form',
 'badtitle' => 'Sebu sa bani',
 'badtitletext' => "Bufosi di petulo sigirikisize, kusize, interling'ki. A sa selt di bufosi.",
-'wrong_wfQuery_params' => "Inkorrekt parameteri di wfQuery()<br />
-Fung'ksyun: $1<br />
-Query: $2",
 'viewsource' => "Kamukile ng'i",
 'viewsourcetext' => 'A sa kamukile wiki-selt di bye petulo:',
 
@@ -312,7 +307,6 @@ Sa ku bye fatukile zwa sebu dafi e a ni petuho, ni petuho e mulumiwasibukirisize
 'loginlanguagelabel' => 'Zwa Siselect: $1',
 
 # Change password dialog
-'resetpass' => 'Lisetize sebelu sebu dafi',
 'resetpass_header' => 'Lisetize sebu dafi',
 'retypenew' => 'Sebu dafi:',
 'resetpass_submit' => 'Setize sebu dafi e menuhile',
@@ -439,10 +433,7 @@ Informasi: (bye) = petuho a nca selt,
 
 # Search results
 'searchresults' => 'Fatukile kamukile',
-'searchsubtitle' => "A fatukile di '''[[:$1]]'''",
-'searchsubtitleinvalid' => "A fatukile di '''$1'''",
 'titlematches' => 'Sebu di petulo ekali',
-'notitlematches' => 'Ni sebu di petulo ekali',
 'textmatches' => 'Selt di petulo ekali',
 'notextmatches' => 'Ni selt di petulo ekali',
 'prevn' => 'kona {{PLURAL:$1|$1}}',
@@ -451,7 +442,6 @@ Informasi: (bye) = petuho a nca selt,
 'searchall' => 'xete',
 'showingresults' => "Kamukile opi {{PLURAL:$1|'''1''' ekali|'''$1''' ekalina}} di #'''$2'''.",
 'showingresultsnum' => "Kamukile {{PLURAL:$3|'''1''' ekali|'''$3''' ekalina}} di #'''$2'''.",
-'powersearch' => 'Fatukile',
 
 # Preferences page
 'preferences' => 'Petohoni di sebelu',
@@ -464,13 +454,11 @@ Informasi: (bye) = petuho a nca selt,
 'prefs-rc' => 'Petuho nca',
 'prefs-watchlist' => 'Mukoloko di kentezi',
 'saveprefs' => 'Bulukezi',
-'resetprefs' => 'Lisetize',
 'prefs-editing' => "Hloli ye ng'i",
 'rows' => 'Roo:',
 'columns' => 'Kalom:',
 'searchresultshead' => 'Fatukile',
 'resultsperpage' => 'Hit di petulo:',
-'timezoneoffset' => 'Ufiseti¹',
 'default' => 'auto',
 'prefs-files' => 'Imegini',
 'youremail' => 'Imeli:',
@@ -497,7 +485,6 @@ Informasi: (bye) = petuho a nca selt,
 'nchanges' => '$1 {{PLURAL:$1|petuho|petuho}}',
 'recentchanges' => 'Petuho nca',
 'recentchanges-feed-description' => 'Kamukile petuho nca di wiki kwa bye feed.',
-'rcnote' => "Bye {{PLURAL:$1|sa '''1''' petuho|sa pu-lila '''$1''' petuhoni}} kwa pu-lila {{PLURAL:$2|dia|'''$2''' dia}}, di $3.",
 'rcnotefrom' => "Bye sa petuho di '''$2''' (di '''$1''' sa kamukile).",
 'rclistfrom' => 'Kamukile nca petuho di $1',
 'rcshowhideminor' => '$1 pili kenki',
@@ -663,8 +650,6 @@ di uplodezi media.',
 'prevpage' => 'Kona petulo ($1)',
 'allpagesfrom' => 'Kamukile petulo di:',
 'allarticles' => 'Mukoloko di petulo',
-'allpagesprev' => 'Kona',
-'allpagesnext' => 'Lila',
 'allpagessubmit' => 'Afi',
 'allpagesprefix' => 'Kamukile petulo di pifeto di:',
 
@@ -781,7 +766,6 @@ Petohoni di petulo '''$1''' sa:",
 'undelete' => 'Kamukile afi kulobala petulo',
 'viewdeletedpage' => 'Kamukile afi kulobala petulo',
 'undeletebtn' => 'Ati-afi kulobala',
-'undeletereset' => 'Lisetize',
 'undeletecomment' => 'Lyangutukezi:',
 'undelete-search-box' => 'Fatukile afi kulobala petulo',
 'undelete-search-prefix' => 'Kamukile petulo di:',
@@ -853,14 +837,11 @@ a sa gukilize di nyanganyisize.",
 
 Teri yaki, a nyanganyisize.",
 'movearticle' => 'Nyanganyisize petulo:',
-'movenologin' => 'A ni sa menuhile',
 'newtitle' => 'Di nca petulo:',
 'move-watch' => 'Kentezi bye petulo',
 'movepagebtn' => 'Nyanganyisize petulo',
 'pagemovedsub' => 'Nyanganyisize sa afi.',
 'articleexists' => 'Petulo zwa nyanganyisize afi sa, e nom sa bufosi. Xete nom sa kulikawi.',
-'talkexists' => "'''No bufosi di nyanganyisize petulo, bufosi di nyanganyisize bulelezi, tubi hani.'''",
-'movedto' => 'nyanganyisize di',
 'movetalk' => 'Nyanganyisize petulo di bulelezi',
 'movelogpage' => 'Desu di nyanganyisize',
 'movelogpagetext' => 'Bye mukoloko sa mukoloko di petulo nyanganyisize.',
@@ -1006,10 +987,6 @@ Xete ling'ki kwa lina sa konsidisize desepo. Petulo dimedi inlinenikusize.",
 # Exif tags
 'exif-imagedescription' => 'Sebu di imegi',
 
-# External editor support
-'edit-externally' => 'Kenki imegi sebilize pagini lakusi',
-'edit-externally-help' => 'Boniselelize [https://www.mediawiki.org/wiki/Manual:External_editors instruksi setup] kwa informasi.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'xeti',
 'namespacesall' => 'xeti',
index b5b9462..3d38cf9 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author Bonevarluri
  * @author Mogoeilor
  */
 
@@ -35,17 +36,31 @@ $messages = array(
 'tog-minordefault' => 'همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.',
 'tog-previewontop' => 'پیش سیل نه دما جعوه ویرایشت نشو بیئه',
 'tog-previewonfirst' => 'پیش سیل نه د اولین ویرایشت نشو بیئه',
+'tog-enotifwatchlistpages' => 'اوسه که یه گل بلگه یا فایلی د سیل برگ مه آلشت بوئه منه وا ایمیل خور کو',
 'tog-enotifusertalkpages' => 'وختی که بلگه گپسن کارور آلشت پیدا کرد منه وا ایمیل خور کو',
+'tog-enotifminoredits' => 'همچنو اوسه که ویرایشتیا کؤچکی د بلگیا یا فایلیا انجوم بوئه منه خور کو',
+'tog-enotifrevealaddr' => 'نشونی ایمیل منه د ایمیل اشگار نشو بیه',
 'tog-shownumberswatching' => 'انازه کاروریایی که د حالت دیئنن نشو بیه',
 'tog-oldsig' => 'امضايی هيئش:',
+'tog-fancysig' => 'وا امضا چی ویکی متن برخورد کو',
 'tog-uselivepreview' => 'د پیش سیل زنه استفاده کو',
+'tog-forceeditsummary' => 'منه وختی که یه گل چکسه ویرایشت حالی وارد بوئه سریع خور کو',
 'tog-watchlisthideown' => 'قام كو ويرايشت منه د',
+'tog-watchlisthidebots' => 'ویرایشت یا بوت نه د سیل برگ قام کو',
 'tog-watchlisthideminor' => 'قام كو ويرايشت کؤچک منه د',
+'tog-watchlisthideliu' => 'ویرایشت یا کاروریا وامئن سیستم نه د سیل برگ قام کو',
+'tog-watchlisthideanons' => 'ویرایشت یا کاروریا ناشناس نه د سیل برگ قام کو',
+'tog-watchlisthidepatrolled' => 'ویرایش تیا د تی رس نه د سیل برگ قام کو',
+'tog-ccmeonemails' => 'کپی ایمیل یا منه که سی کسونا تر می فرسنم سیم کل کو',
 'tog-diffonly' => 'بلگیایی که شومل فرخیا هارن نشون نیه',
 'tog-showhiddencats' => 'دسه يا قام بيئنه نشون بيه',
+'tog-norollbackdiff' => 'فرخیا نه د بین بوریت نها یه گل عقو گرد کردن',
+'tog-useeditwarning' => 'وختی که آلشتیا ذخیره نبیه د بلگه ویرایشت وه جا می نم خورم کو',
+'tog-prefershttps' => 'همیشه وختی که مه وامئن هئم د ارتواط امن استفاده کو',
 
 'underline-always' => 'هميشه',
 'underline-never' => 'هيژوخت',
+'underline-default' => 'پوسه یا مرورگر پیش فرض',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'راساگه فونت شلک نه ویرایشت کو',
@@ -126,8 +141,12 @@ $messages = array(
 'category-empty' => 'ای دسه واقعن شومل هیژ بلگه ای یا رسانه ای نی',
 'hidden-categories' => '{{PLURAL:$1|دسته قام بيه|دسته يا قام بيه}}',
 'hidden-category-category' => 'دسه یا قام بیه',
-'category-subcat-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای زیردسه, خارج د $2 کل.}}',
+'category-subcat-count' => '{{جمی:$2|ای دسه فقط زیر دسه دینداگر هان دش .|ای دسه {{جمی:$1| زیردسه|$1 زیردسه یا}}هئ , خارج د $2 کل.}}',
+'category-subcat-count-limited' => 'ای دسه وا دمال {{جمی:$1|زیردسه|$1زیردسه یا}} بوئه',
 'category-article-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای دسه, خارج د $2 کل.}}',
+'category-article-count-limited' => 'نها {{جمی:$1|بلگه هئ|$1بلگیا هئن}} د دسه ایسنی .',
+'category-file-count' => '{{جمی:$2|ای دسه فقط شامل فایل نهایی هئ file.| نهایی {{جمی:$1|فایل هئ|$1 فایلیا هئن}} د ای دسه, وه در د کل $2 .}}',
+'category-file-count-limited' => ' {{جمی:$1|فایل هئ|1$فایلیا هئن}}نهایی هان د دسه ایسنی.',
 'listingcontinuesabbrev' => 'دماله',
 'index-category' => 'بلگيا سيائه دار',
 'noindex-category' => 'بلگيا بی سيائه',
@@ -151,7 +170,6 @@ $messages = array(
 'qbedit' => 'ويرايشت',
 'qbpageoptions' => 'ای بلگه',
 'qbmyoptions' => 'بلگيا مه',
-'qbspecialpages' => 'بلگيا ويجه',
 'faq' => 'اف ای كيو',
 'faqpage' => 'پروجه:اف اي كيو',
 
@@ -162,6 +180,7 @@ $messages = array(
 'vector-action-protect' => 'حمايت بكيد',
 'vector-action-undelete' => 'حذف نبيئني',
 'vector-action-unprotect' => 'حمايت آلشت بكيد',
+'vector-simplesearch-preference' => 'یه گل اوزار پی جوری ساده نه دروس بکید',
 'vector-view-create' => 'راس كردن',
 'vector-view-edit' => 'ويرايشت',
 'vector-view-history' => 'ديئن ويرگار',
@@ -195,6 +214,7 @@ $messages = array(
 'deletethispage' => 'ای بلگه نه حذف بكيد',
 'undeletethispage' => 'ای بلگه نه حذف نكيد',
 'undelete_short' => 'پاک نکو {{جمی:$1|یه گل ویرایشت|$1 ویرایشتیا}}',
+'viewdeleted_short' => 'بوینیت {{[جمی:$1|یه گل ویرایشت پاک بیه|$1ویرایشتیا پاک بیه}}',
 'protect' => 'حمايت بكيد',
 'protect_change' => 'آلشت بكيد',
 'protectthispage' => 'ای بلگه نه حفاظت بكيد',
@@ -227,12 +247,15 @@ $messages = array(
 'jumpto' => 'پئرستن د',
 'jumptonavigation' => 'ناوگشتن',
 'jumptosearch' => 'پی جوری',
+'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).
 'aboutsite' => 'دباره {{SITENAME}}',
 'aboutpage' => 'پروجه:دباره',
-'copyrightpage' => '{{ns:پروجه}}:کپی رایت',
+'copyright' => 'محتوا د دسرس هئ سی $1 مر وه شلک هنی نوشته بوئه',
+'copyrightpage' => '{{ان اس:پروجه}}:کپی رایت',
 'currentevents' => 'پيشومدل تازه باو',
 'currentevents-url' => 'پروجه:پيشومدل تازه باو',
 'disclaimers' => 'منكرون',
@@ -249,15 +272,20 @@ $messages = array(
 
 'badaccess' => 'خطا :اجازه بئیر',
 'badaccess-group0' => 'شما اجازه انجوم کاری که حاستیت نارین',
+'badaccess-groups' => 'ای کاری که شما هاستیته سی کاروریا د  {{جمی:$2|گرو|یکی د گرویا}}: $1 مئدود بیه',
 
 'versionrequired' => 'یه نسقه د نیازمنیا ویکی رسانه
 $1',
+'versionrequiredtext' => 'نسقه $1 ویکی مدیا سی استفاده د ای بلگه لازم هئی .
+وه نه بوینیت [[ویجه:نسقه|نسقه بلگه]].',
 
 'ok' => 'خوئه',
 'retrievedfrom' => 'بازيافته د"$1"',
 'youhavenewmessages' => 'شما داريت $1($2)',
+'youhavenewmessagesfromusers' => '{{جمی:$4|شما }} $1 د {{جمی:$3|کارور هنی|$3 کاروریا}}داریتو($2).',
 'youhavenewmessagesmanyusers' => 'شما $1 د خيلی كاروريا داريت ($2).',
-'newmessagesdifflinkplural' => 'آخر {{PLURAL:$1|change|changes}}',
+'newmessageslinkplural' => '{{جمی:$1|یه گل پیغوم تازه|999=پیغوم ئل تازه}}',
+'newmessagesdifflinkplural' => 'آخر {{جمی:$1|آلشت|آلشتیا}}',
 'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
 'editsection' => 'ويرايشت',
 'editold' => 'ويرايشت',
@@ -272,8 +300,10 @@ $1',
 'collapsible-expand' => 'وا كردن',
 'thisisdeleted' => 'دیئن یا ورگنين $1?',
 'viewdeleted' => 'دیئن$1?',
+'restorelink' => '{{جمی:$1|یه گل ویرایشت پاک بیه|$1 ویرایشتیا پاک بیه}}',
 'feedlinks' => 'غذا دهنه:',
 'feed-invalid' => 'نوع مشترک بین خورحو نامعتور',
+'feed-unavailable' => 'خور حونیا د دسرس نئین',
 'site-rss-feed' => 'خورخو RSS سی $1',
 'site-atom-feed' => 'خور حون Atom سی $1',
 'page-rss-feed' => 'خورخو RSS سی «$1»',
@@ -296,7 +326,12 @@ $1',
 
 # Main script and global functions
 'nosuchaction' => 'چنو كاری وجود ناره',
+'nosuchactiontext' => 'کاری که وا یو آر ال مشقص بیه معتور نئ.
+شایت شما یو آر ال نه دروس ننشتیته، یا یه گل هوم پیوند نادرست وارد بیه.
+وه شاید وه یه گل باگ د نرم افزار استفاده بیه وا {{نوم مالگه}} هشاره داشتوه.',
 'nosuchspecialpage' => 'چنو بلگه خاصی وجود ناره',
+'nospecialpagetext' => '<strong>شما سی یه گل بلگه نامعتور درحاست داشتیته.</strong>
+یه گل نوم گه سی  اعتوار بلگه یا بوئه د [[ویجه:بلگه یا ویجه|{{رقم:بلگه یا ویجه}}]] پیدا با.',
 
 # General errors
 'error' => 'خطا',
@@ -308,32 +343,52 @@ $1',
 'databaseerror-error' => 'خطا: $1',
 'laggedslavemode' => 'زنهار:بلگه شايت شومل روزامديا تازه باو نبوئه',
 'readonly' => 'جاگه دونسمنيا بسه بيه',
-'missing-article' => 'پاگا داده نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
+'enterlockreason' => 'دلیل قلف کردن نه بنیست،یه وختی سی وا کردن قلف د ویر داشتویت.',
+'readonlytext' => 'پایگا دونسمنیا ایسه سی دئن ورودی یا تازه یا آلشتگریا هنی قلف بیه،شایت سی منن معمولی پایگا دونسمنی نها وه که ورئرده وه حالت عادیش.
+مدیری که ونه قلف کرده ونه گوته:$1',
+'missing-article' => 'پاگا دونمسمنی نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
 معمولند یه سی یه که فرخ ویرگار رئته دش بیه پاک بیه.',
 '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' => 'پاک بیئن وا قلاو جلوگری بیه.
+هیچ توضیئ سیش نئ.',
+'no-null-revision' => 'سی بلگه$1 دوواره خنثی دیئن راس بکید',
 'badtitle' => 'موضو گن',
 'badtitletext' => 'عنوان بلگه حاسته بیه معتور نی،یا  یه گل مئن زونی یا مئن ویکی عنوان غلطه.
 یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن',
 'viewsource' => 'سرچشمه نه بوينيت',
 'viewsource-title' => 'سرچشمه $1 بوينيت',
+'actionthrottled' => 'عمل جلوگئری بیه',
+'protectedpagetext' => 'دای بلگه نبوئه ویرایشت یا کاریا هنی بکید',
+'viewsourcetext' => 'شما تونیت سرچشمه ای بلگه نه بوینیت و دش ورداریت:',
+'viewyourtext' => 'شما تونیت سرچشمه ویرایشتیا تونه ای د بلگه بوینیت و دشو ورداریت',
 'mycustomcssprotected' => 'شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید',
 'mycustomjsprotected' => 'شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید',
 'myprivateinfoprotected' => 'شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید',
 'mypreferencesprotected' => 'شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید',
 'ns-specialprotected' => 'بلگیا ویجه نتونن ویرایشت بوئن',
 'exception-nologin' => 'نبوئه وارد بوئيد',
+'exception-nologin-text-manual' => 'خواهشمنیدم که $1 تونسه بوئه د ای بلگه دسرسی داشتوه یا کاری انجوم بیئه.',
 
 # Virus scanner
-'virus-scanfailed' => 'زل گشتن شکست حرد',
+'virus-scanfailed' => 'زل بیئن شکست حرد($1)',
 'virus-unknownscanner' => 'ويروس كش ناآشگار',
 
 # Login and logout pages
@@ -370,8 +425,9 @@ $1',
 'gotaccount' => 'ایسنی حساو کاروری داریتو؟$1',
 'gotaccountlink' => 'اومائن',
 'userlogin-resetlink' => 'جزییات وامین اومائن تونه د ویر بردیته',
-'userlogin-resetpassword-link' => 'Ù\87Ù\86Û\8c Ø±Ù\85ز Ù\88ارد Ø¨Ù\83Ù\8aد',
+'userlogin-resetpassword-link' => 'پاسÙ\88رد Ø¯ Ù\88Û\8cرتÙ\88 Ø±Ø¦ØªÙ\87Ø\9f',
 'helplogin-url' => 'هومياری:د حالت اومائن د سيستم',
+'userlogin-helplink' => '[[{{مدیاویکی:هومیاری وامئن اومائن-یو آر ال}}|هومیاری وا مئن اومائن]]',
 'userlogin-createanother' => 'يه گل حساوهنی راست بكيد',
 'createacct-join' => 'دونسمنيا دباره خوتونه د هار وارد بكيد',
 'createacct-another-join' => 'دونسمنیا یه گل حساو د هار وارد بکید',
@@ -379,6 +435,7 @@ $1',
 'createacct-emailoptional' => 'نشونی ايميل',
 'createacct-email-ph' => 'نوم نشون ايميلتونه وارد بكيت',
 'createacct-another-email-ph' => 'يه گل ايميل وارد بكيت',
+'createaccountmail' => 'د یه گل پاسورد موقتیه بختکی استفاده بکید و ونه سی یه گل نشونی ایمیل ویجه بفرسنیت',
 'createacct-realname' => 'نوم راستكی(مژبوری نيئ)',
 'createaccountreason' => 'دليل',
 'createacct-reason' => 'دليل',
@@ -388,17 +445,26 @@ $1',
 'createacct-submit' => 'حساو خوتونه راس بكيد',
 'createacct-another-submit' => 'يه گل حساوهنی راست بكيد',
 'createacct-benefit-heading' => '{{نوم مالگه}} وه دس خلکی چی شما راس بیه.',
-'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتا}}',
-'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگیا}}',
+'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتیا}}',
+'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگه یا}}',
+'createacct-benefit-body3' => 'تازه{{جمی:$1|هومیار|هومیارا}}',
 'badretype' => 'پاسوردی که شما دئیته مطاوقت ناره',
 'userexists' => 'کارور نوم که وارد بیه د ایسه استفاده بوئه.
 لطف بکید یه گل نوم هنی انتخاو بکید',
 'loginerror' => 'خطا اومائن د سيستم',
 'createacct-error' => 'خطا راس كردن حساو',
 'createaccounterror' => 'نبوئه حساو راس بكيد:$1',
+'nocookiesnew' => 'حساو کاروری راس بی،اما شما وامئن نیامایئته.{{نوم مالگه}} د کوکیا سی اومائن د سیستم کاروریا استفاده می که.کوکیا شما د کار افتائه.لطفن وا کارشو بونیت، اوسه وا نوم کاروری تازه و پسورد هنی بیایت وا مئن.',
+'nocookieslogin' => '{{نوم مالگه}} د کوکیا سی وامئن اومائن کاروریا استفاده می که. کوکیا شما د کار افتائه.
+لطف بکید د کارشو بونیت و دوواره تلاش بکید.',
+'nocookiesfornew' => 'حساو کاروری راس نبیه، سی یه ایما نتونیم سرچشمه ونه مئکم بکیم.
+مطمئن بوئیت که کوکیا فعال بینه، ای بلگه نه د نو سوار بکید و د نو تلاش بکید.',
 'noname' => 'شما یه گل نوم کاروری خو ناریت',
 'loginsuccesstitle' => 'اومائن د سيستم موفق بی',
 'loginsuccess' => 'شما ایسه وارد بیته {{SITENAME}} د دعنوان "$1".\'',
+'nosuchuser' => 'چنی کاروری و نوم  "$1" نئیش.
+نوم کاروری وه حرفیا حساس هئ.
+روشت نیسنن تونه وارسی بکید،یا [[ویجه:وامین اومائن کارور/ثوت نام کردن|یه گل حساو تازه راس بکید]].',
 'nosuchusershort' => 'چنو کاروری وا ای نوم $1 نی ئیش.
 نیسنن تونه دوواره نئری بکیتو',
 'nouserspecified' => 'شما باید یه نوم کارور اختصاص بئیتو',
@@ -409,16 +475,20 @@ $1',
 'passwordtooshort' => 'پاسورد با حداقل  {{PLURAL:$1|1 character|$1 characters}}          با',
 'password-name-match' => 'پاسوردتو با د نوم کاروریتو فرخ داشتوه',
 'password-login-forbidden' => 'وه کار گرتن ای پاسوردو نوم کاروری ممنو بیه.',
-'mailmypassword' => 'رÙ\85ز Ù\87Ù\86Û\8c Ù\86Ù\87 Ø§Ù\8aÙ\85Ù\8aÙ\84 Ø¨Ù\83Ù\8aد',
+'mailmypassword' => 'د Ù\86Û\88 Ù\88ارد Ù\83ردÙ\86 Ø±Ù\85ز',
 'passwordremindertitle' => 'پاسورد موقت تازه سی {{SITENAME}}',
 'noemail' => 'هیچ نشونی ایمیلی سی کارور $1 ضفط نبیه.',
 'noemailcreate' => 'شما باید یه نشونی نومه معتور فراهم بکید',
 'mailerror' => 'خطا داره کل موئه:$1',
+'emailauthenticated' => 'نشونی ایمیلتو د $2 سی 3$ مئکم بیه.',
 'emailconfirmlink' => 'نشونی ايملتو نه محكم بكيد',
+'cannotchangeemail' => 'نشونی ایمیل حساو نتونه د ای ویکی آلشت بوئه.',
 'emaildisabled' => 'ای مالگه نتونه ایمیل بفرسنه',
 'accountcreated' => 'حساو راس بی',
 'createaccount-title' => 'حساو راس کرده سی  {{SITENAME}}',
 'usernamehasherror' => 'نوم کاربری نتونه شومل نیسه یا هش بوئه',
+'login-throttled' => 'شما ایسنی فره سی وامین اومائن تلاش کردیته.
+$1 لطفن سی تلاش هنی صبر بکید',
 'login-abort-generic' => 'اومائن وامین تو شکست حرد-شکست حرده',
 'loginlanguagelabel' => 'زون:$1',
 
@@ -427,7 +497,7 @@ $1',
 'user-mail-no-addy' => 'سی کل کردن ایمیل بی نشونه ایمیل صورت گرته',
 
 # Change password dialog
-'resetpass' => 'پاسورد نه آلشت بكيت',
+'changepassword' => 'پاسورد نه آلشت بكيت',
 'resetpass_header' => 'پاسورد حساوتونه آلشت بکید',
 'oldpassword' => 'پاسورد قدیمی:',
 'newpassword' => 'پاسورد تازه:',
@@ -435,6 +505,7 @@ $1',
 'resetpass_submit' => 'پاسور بنیت و وامین بیایت',
 'changepassword-success' => 'پاسورد شما وا موفقیت آلشت بی',
 'resetpass_forbidden' => 'پاسوردیا نتونن آلشت بوئن',
+'resetpass-no-info' => 'شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت',
 'resetpass-submit-loggedin' => 'پاسورد نه آلشت بكيت',
 'resetpass-submit-cancel' => 'رد كردن',
 'resetpass-temp-password' => 'رمز موقت:',
@@ -442,15 +513,23 @@ $1',
 # Special:PasswordReset
 'passwordreset' => 'د نۈ وارد كردن رمز',
 'passwordreset-legend' => 'د نۈ وارد كردن رمز',
+'passwordreset-disabled' => 'نو کرد پاسورد د ای ویکی غیرفعال بیه.',
+'passwordreset-emaildisabled' => 'چی یا هنی ایمیل د ای ویکی غیرفعال بیه.',
 'passwordreset-username' => 'نوم كاروری:',
 'passwordreset-domain' => 'پوشگیر',
 'passwordreset-capture' => 'ایمیل نتیجه نه بوینیتو؟',
+'passwordreset-capture-help' => 'ار شما ای جعوه نه وارسی بکید. ایمیل و خوئی اوسه که سی کارور کل بیه بوئه بوینیتش.',
 'passwordreset-email' => 'نشونی ايميل',
+'passwordreset-emailtitle' => 'جزئیات حساو ها د {{نوم مالگه}}',
+'passwordreset-emailelement' => 'نوم کاروری: $1
+پاسورد موقتی: $2',
 'passwordreset-emailsent' => 'پاسورد هنی سی ایمیل کل بیه.',
+'passwordreset-emailsent-capture' => 'پاسورد تازه تو د ایمیلتو که د هار نشو دئه بیه کل بیه',
 
 # Special:ChangeEmail
 'changeemail' => 'ایمیل تو نه آلشت بکید',
 'changeemail-header' => 'ایمیل حساوتونه آلشت بکید',
+'changeemail-no-info' => 'شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت',
 'changeemail-oldemail' => 'نشونی ایمیل تازه باو:',
 'changeemail-newemail' => 'نشونی ایمیل تازه',
 'changeemail-none' => '(هيش كوم)',
@@ -458,6 +537,15 @@ $1',
 'changeemail-submit' => 'آلشت کردن ایمیل',
 'changeemail-cancel' => 'رد كردن',
 
+# Special:ResetTokens
+'resettokens' => 'تازه کردن نشونه یا',
+'resettokens-no-tokens' => 'هیژ نشونه ای سی تازه کردن نئ.',
+'resettokens-legend' => 'تازه کردن نشونه یا',
+'resettokens-tokens' => 'نشونه یا:',
+'resettokens-token-label' => '$1 (ارزشت تازه: $2)',
+'resettokens-done' => 'نشونه یا تازه بیه.',
+'resettokens-resetbutton' => 'نشونه یا انتخاو بیه تازه بوئن',
+
 # Edit page toolbar
 'bold_sample' => 'متن توپر بيه',
 'bold_tip' => 'متن توپر بيه',
@@ -478,6 +566,7 @@ $1',
 
 # Edit pages
 'summary' => 'چكسته',
+'subject' => 'موضو/سر خط:',
 'minoredit' => 'يه ويرايشت كؤچكيه',
 'watchthis' => 'ديئن ای بلگه',
 'savearticle' => 'بلگه ضبط بوئه',
@@ -489,12 +578,14 @@ $1',
 نشونی آی پی تو د ویرگار ویرایشت ای بلگه ضفط بوئه',
 'missingcommenttext' => 'لطفن د ایچه نظر بیئتو',
 'summary-preview' => 'چکسته پیش سیل:',
+'subject-preview' => 'پیش سیل موضو سرخط',
 'blockedtitle' => 'كارور قلف بيه',
 'blockednoreason' => 'هیژ دلیلی دئه نبیه',
 'whitelistedittext' => 'شما باید $1 سی ویرایشت بلگیا',
 'nosuchsectiontitle' => 'نبوئه بشخ پیدا بوئه',
 'loginreqtitle' => 'وامین اومائن لازمه',
 'loginreqlink' => 'اومائن',
+'loginreqpagetext' => '$1 لطف بکید بلگه یا هنی نه بوینیت',
 'accmailtitle' => 'پاسورد کل بی',
 'newarticle' => 'تازه',
 'newarticletext' => 'شما وادما هوم پیوندی هئیت که وجود ناره.
@@ -505,6 +596,9 @@ $1',
    [{{fullurl:{{FULLPAGENAME}}|action=edit}} یای ای بلگه نه ویرایشت بکیدpage]</span>.',
 'noarticletext-nopermission' => 'د تازه یا د ای بلگه متن نی.
 شما تونید د[[Special:Search/{{PAGENAME}}|search for this page title]] بگردید د ای بلگه یا د بلگیا هنی یا<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}   د هنی پی جوری بوئه  logs]</span>      اما شما حق ناریتو ای بلگه نه راس بکیت',
+'userpage-userdoesnotexist-view' => 'حساو کارور"$1" ثوت نبیه.',
+'blocked-notice-logextract' => 'ای کارور ایسنی دسرسی ناره.
+آخری نشون قلف ورودی د هار ایچه سی سرچشمه آماده بیه:',
 'updated' => '(تازه بيه)',
 'note' => "'''نيسنن:'''",
 'previewnote' => 'فقط ای پیش سیل د ویرتو با.
@@ -514,13 +608,28 @@ $1',
 'creating' => 'راس كردن $1',
 'editingsection' => 'د حال ویرایشت$1(بشخ)',
 'editingcomment' => 'د حال ویرایشت$1(بشخ تازه)',
+'editconflict' => 'تضاد د ویرایشت:$1',
+'explainconflict' => 'داوسه که شما شرو د ویرایشت ای بلگه کردیته، یه نفر هنی ای بلگه نه آلشت دئه.
+راساگه روئی متن بلگه متن نه چی یه که وجود داشتوه د ور میئره.
+آلشتیا شما د متن هاری نشو دئه هئ.
+شما با آلشتیاتونه د متن که هئش یکی بکید.
+فقط متنی که ها د رو د وختی که شما"{{رقم:ذخیره گوتار}}" نه گزارشت می کید ذخیره بوئه',
 'yourtext' => 'متن شما',
+'storedversion' => 'دوواره دیئن انبار بیه.',
 'yourdiff' => 'فرخيا',
 'templatesused' => '{{جمی:$1|قالو|قالویا}}د ای بلگه استفاده بیه:',
+'templatesusedpreview' => '{{جمی:$1|قالو|قالویا}}استفاده بیه د ای پیش سیل:',
+'templatesusedsection' => '{{جمی:$1|قالو|قالویا}} استفاده بیه د ای بخش:',
 'template-protected' => '(حمايت بيه)',
 'template-semiprotected' => '(نيم-حفاظت بيه)',
 'hiddencategories' => 'ای بلگه يه اندوم د{{PLURAL:$1|1 hidden category|$1 hidden categories}}: هئ',
+'nocreatetext' => '{{نوم مالگه}} سی راس کردن بلگه یا تازه محدود بیه.
+شما تونید روئیت وادما و بلگه ای که هئیش ویرایشت بکید ، یا [[ویجه:وامین اومائن کارور|بیایت وامین یا یه گل حساو بسازیت]].',
+'nocreate-loggedin' => 'شما حق ناریت  که بلگه یا تازه نه راس بکید.',
+'sectioneditnotsupported-title' => 'ویرایشت بخش حمایت نبوئه',
+'sectioneditnotsupported-text' => 'ویرایشت بشقی د ای بلگه نئیش.',
 'permissionserrors' => 'خطا اجازه دئین',
+'permissionserrorstext' => 'شما حق ناریت ونه انجوم بیئت, سی{{جمی:$1|دلیل|دلیلیا}} نهایی:',
 'permissionserrorstext-withaction' => 'شما سی $2 اجازه ناریت
 سی دمال کردن{{PLURAL:$1|reason|reasons}}:',
 'recreate-moveddeleted-warn' => "'''زنهار شما بلگه ای که وادما پاک بیه هنی راس کردیته'''
@@ -530,6 +639,13 @@ $1',
 پاک بین و جمشت ای بلگه سی سرچشمه دئین فراهم بیه',
 'edit-conflict' => 'مخالفت نه ویرایشت بکید',
 'postedit-confirmation' => 'ویرایشتتو ذخیره بی',
+'edit-already-exists' => 'نبوئه یه گل بلگه تازه راس بکید.
+وه هئیش.',
+'defaultmessagetext' => 'متن پیغوم پیش فرض',
+'content-failed-to-parse' => 'د یک تیچیسن چیا مئن $2 د مدل $1:$3',
+'invalid-content-data' => 'دنسمنی مینونه نامعتور',
+'content-not-allowed-here' => ' مینونه"$1" سی بلگه [[$2]] اجازه نه دئه بیه',
+'editpage-notsupportedcontentformat-title' => 'شلک مینونه دماگری نبیه',
 
 # Content models
 'content-model-wikitext' => 'ويكی متن',
@@ -543,9 +659,15 @@ $1',
 'post-expand-template-argument-warning' => 'زنهار ای بلگه شومل حداقل یه قالو سی چک چنه یه که انازه فره گپه.
 گپسنیا پاک بینه.',
 'post-expand-template-argument-category' => 'بلگه شومل قالو چک چنیا د بین رئته',
+'parser-template-loop-warning' => 'حلقه قالو کشف بیه:[[$1]]',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'نبوئه حساو راس بکید',
 
 # History pages
 'viewpagelogs' => 'سی ای بلگه بوینتو.',
+'nohistory' => 'هیچ ویرگار ویرایشتی د ای بلگه نئ.',
+'currentrev' => 'آخرین دوواره دیئن',
 'currentrev-asof' => 'آخرين دووار ديئن چی $1',
 'revisionasof' => 'دوواره ديئن $1',
 'revision-info' => 'دوواره سیل بیه چی $1 وا $2',
@@ -557,62 +679,103 @@ $1',
 'last' => 'دمايی',
 'page_first' => 'اولی',
 'page_last' => 'آخر',
+'histlegend' => "انتخاو فرخدار:جعویا رادیو نه سی دوواره دیئن و وارسی نشو دار بکید و یا ری رئتن کلیک بکید .<br />
+شرح نوشته: '''({{int:cur}})''' = وا آخری دوواره دیئن فرخ داره '''({{ int:last}})'''= وا دواره دیئن انجوم دئنی فرخ داره  '''{{int:minoreditletter}}''' =ویرایشت کؤچک.",
 'history-fieldset-title' => 'ویرگار مرور ون',
 'history-show-deleted' => 'فقط پاك بيه',
 'histfirst' => 'قديمي تري',
 'histlast' => 'تازه تري',
+'historysize' => '({{جمی:$1|1 بایت|$1 بایتیا}})',
 'historyempty' => '(حالی)',
 
 # Revision feed
+'history-feed-title' => 'ویرگار دوواره دیئن',
+'history-feed-description' => 'دوواره دیئن ویرگار سی بلگه د ویکی',
 'history-feed-item-nocomment' => '$1 د
 $2',
+'history-feed-empty' => 'بلگه حاسته بیه وجود ناره.
+شایت وه د ویکی پاک بیه، یا نومش آلشت بیه.
+سی بلگیا مرتوط تازه [[ویجه:پی جوری|پی جوری د ویکی]] کوششت بکید.',
 
 # Revision deletion
+'rev-deleted-comment' => '(ویرایشت چکسته جا وه جا بیه)',
+'rev-deleted-user' => '(نوم کاروری جا وه جا بیه)',
+'rev-deleted-user-contribs' => '[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]',
 'rev-delundel' => 'آلشت وضئيت ديئن',
 'rev-showdeleted' => 'نشو دائن',
+'revdelete-no-file' => 'فایل مشقص بیه وجود ناره.',
 'revdelete-show-file-submit' => 'هری',
+'revdelete-selected' => "'''{{جمی:$2|وانیری انتخاو بیه|وانیریا انتخاو بیه}} د[[:$1]]:'''",
+'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-unsuppress' => 'محدودیتیانه د وانیریا امباربیه جا وه جا بکید',
 'revdelete-log' => 'دلیل:',
+'revdelete-submit' => 'سی {{جمی:$1|وانیری|وانیریا}} انتخاو بیه وه کار بوریتو',
+'revdelete-success' => "'''دیئن وانیری وه خوئی وه هنگوم بی.'''",
+'revdelete-failure' => "'''دیئن وانیری وه خوئی وه هنگوم نبی:'''$1",
 'revdel-restore' => 'آلشت وضئيت ديئن',
-'revdel-restore-deleted' => 'پاك كردن مراجعيا',
-'revdel-restore-visible' => 'مراجعات ديئنی',
 'pagehist' => 'ويرگار بلگه',
 'deletedhist' => 'ویرگار پاک بیه',
 'revdelete-otherreason' => 'دلیل هنی:',
 'revdelete-reasonotherlist' => 'دلیل هنی',
 'revdelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+'revdelete-offender' => 'نیسنه وانیری:',
 
 # History merging
+'mergehistory' => 'ویرگاریا بلگه نه یکی بکید',
+'mergehistory-header' => 'ای بلگه وه شما اجازه می ئه که وانیریانه ویرگار سرچشمه بلگه نه د یه گل بلگه تازه سریک سازی بکید.
+مطمئن بویت که ای آلشت د لحاظ ویرگاری د مین بلگه موندگار هئ.',
+'mergehistory-box' => 'دوواره دیئن دوبلگه ای نه سر یک سازی کو:',
 'mergehistory-from' => 'بلگه سرچشمه:',
 'mergehistory-into' => 'بلگه مقصد:',
+'mergehistory-list' => 'ویرگار ویرایشت سر یک سازی بیئنی',
+'mergehistory-go' => 'ویرایشتیایی که سریک سازی بوئن نشو بیئه',
+'mergehistory-submit' => 'سر یک سازی دوواره دیئنیا',
+'mergehistory-empty' => 'هیپ دوواره دیئنی نبوئه یکی سازی بوئه.',
+'mergehistory-success' => '$3 {{جمی:$3|وانیری|وانیریا}} د [[:$1]] وه خوئی د [[:$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
+'pagemerge-logentry' => ' [[$1]] وا [[$2]] سریک سازی بی (وانیریا که د $3 فره تر هئن)',
 'revertmerge' => 'بی لوئه',
 
 # Diffs
 'history-title' => 'دوواره دیئن ویرگار$1',
+'difference-title' => 'فرخ مینجا وانیریا "$1"',
+'difference-title-multipage' => 'فرخ مینجا بلگه یا "$1" و "$2"',
+'difference-multipage' => '(فرخ مینجا بلگه یا)',
 'lineno' => 'خط $1:',
 'compareselectedversions' => 'دوبار دیئنیایی که انتخاو بینه مقایسه بکیتو',
+'showhideselectedversions' => 'شلک دیئن وانیریا انتخاو بیه نه آلشت بکید',
 'editundo' => 'رد كردن',
 'diff-empty' => '(بی فرق)',
 'diff-multi' => '({{جمی:$1|یه گل دوواره دیئن مینجایی|$1مینجا دوواره دیئنیا}} وا {{جمی:$2|یه کارور|$2 کاروریا}} نشو دئه نی)',
+'diff-multi-manyusers' => '({{جمی:$1|یه گل وانیری مینجاگرته|$1وانیریا مینجا گرته}} بیشتر د $2 {{جمی:$2|کارور|کاروریا}} نشو دئه نبیه)',
 
 # Search results
 'searchresults' => 'نتيجه يا پی جوری',
 'searchresults-title' => 'نتيجه يا پی جوری سی "$1"',
-'searchsubtitleinvalid' => 'شما پی جوریت سی',
 'titlematches' => 'عنوان بلگه مطاوقت داره',
 'prevn' => 'وادما {{PLURAL:$1|$1}}',
 'nextn' => 'نيايی {{PLURAL:$1|$1}}',
 'prevn-title' => 'پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
 'nextn-title' => 'نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
-'shown-title' => 'Ù\86Ø´Ù\88Ù\86 Ø¯Ø§Ø¦Ù\86 $1 {{PLURAL:$1|Ù\86تÙ\8aجÙ\87\86تÙ\8aجÙ\87}} Ø³Û\8c Ù\87Ù\85Ù\87 بلگه',
+'shown-title' => 'Ù\86Ø´Ù\88Ù\86 Ø¯Ø¦Ù\86 $1 {{جÙ\85Û\8c:$1|Ù\86تÙ\8aجÙ\87\86تÙ\8aجÙ\87}} Ø³Û\8c Ù\87ر بلگه',
 'viewprevnext' => 'ديئن ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'گزينه يا هنی پی جوری',
 'searchmenu-exists' => "'''ایچه بلگه ای هئ وه نوم\"[[:\$1]]\" که ها د ای ویکی'''",
 'searchmenu-new' => "'''ای بلگه نه راس كو \"[[:\$1]]\" د ای  ويكي!'''",
 'searchprofile-articles' => 'بلگيا محتوا',
@@ -625,20 +788,22 @@ $2',
 'searchprofile-images-tooltip' => 'بگرد سی فايليا',
 'searchprofile-everything-tooltip' => 'همه محتوا نه پی جوری كو (شاملا بلگيا چك چنه)',
 'searchprofile-advanced-tooltip' => 'نوم جايا نوم ديار بگرد',
-'search-result-size' => '$1 ({{PLURAL:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})',
-'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 فایل|$3 فایلیا}})',
+'search-result-size' => '$1 ({{جمی:$2|بی واچه يل|واچه تكی|واچه يل|$2 واچه يل|$2 واچه}})',
+'search-result-category-size' => '{{جمی:$1|1 اندوم|$1 اندومیا}} ({{جمی:$2|1 زیردسه|$2 زیردسه یا}}, {{جمی:$3|1 فایل|$3 فایلیا}}',
 'search-redirect' => '(ورگشتن $1)',
 'search-section' => '(بشق $1)',
 'search-suggest' => 'منظورت يه بی:$1',
+'search-interwiki-caption' => 'پروجه یا خوئر',
+'search-interwiki-default' => '$1 نتیجه یا:',
 'search-interwiki-more' => '(بیشتر)',
 'search-relatedarticle' => 'مرتوط',
+'searcheverything-enable' => 'همه نوم جايا نوم ديار بگرد',
 'searchrelated' => 'مرتوط',
 'searchall' => 'همه',
 'showingresultsheader' => "{{PLURAL:$5|نتيجه '''$1''' د'''$3'''|نتيجه يا '''$1 - $2''' د'''$3'''}} سيli'''$4'''",
 'search-nonefound' => 'هیژ نتیجه یی سی پی جست تو مطاوقت نکرده',
-'powersearch' => 'پی جوری پیشبرده',
 'powersearch-legend' => 'پی جوری پیشبرده',
-'powersearch-field' => 'پی جوری سی',
+'powersearch-ns' => 'نوم جايا نوم ديار بگرد:',
 'powersearch-togglelabel' => 'چك كردن:',
 'powersearch-toggleall' => 'همه',
 'powersearch-togglenone' => 'هيش كوم',
@@ -648,7 +813,6 @@ $2',
 'preferences' => 'خصوصيات هنی',
 'mypreferences' => 'خصوصيات هنی',
 'prefs-edits' => 'شماره ویرایشتا:',
-'changepassword' => 'پاسورد نه آلشت بكيت',
 'prefs-skin' => 'پوست',
 'skin-preview' => 'پیش سیل',
 'prefs-datetime' => 'وخت و زمون',
@@ -656,20 +820,27 @@ $2',
 'prefs-personal' => 'پروفایل کارور',
 'prefs-rc' => 'آلشتیا تازه باو',
 'prefs-watchlist' => 'سیل برگ',
+'prefs-watchlist-days' => 'روزیا نه د سیل برگ نشو دئه بو:',
+'prefs-watchlist-edits-max' => 'فره تری شماره:1000',
 'prefs-misc' => 'شيوسن',
 'prefs-resetpass' => 'پاسورد نه آلشت بكيت',
 'prefs-changeemail' => 'نشونی ایمیل تو نه آلشت بکید',
+'prefs-setemail' => 'يه گل ايميل بنیت',
+'prefs-rendering' => 'شلک و ری',
 'saveprefs' => 'ذخيره كردن',
 'prefs-editing' => 'د حالت ويرايشت',
 'rows' => 'رديفيا:',
 'columns' => 'ستينا:',
 'searchresultshead' => 'پی جوری',
 'stub-threshold-disabled' => 'د كار ونن',
+'recentchangesdays' => 'روزیا آلشتیا تازه باو نه نشو بیه:',
+'recentchangesdays-max' => 'فره ترین $1 {{جمی:$1|روز|روزیا}}',
+'savedprefs' => 'ویجه گیا هنی تو ذخیره بیه.',
 'timezonelegend' => 'وخت راساگه',
 'localtime' => 'وخت ولاتی:',
 'timezoneuseserverdefault' => 'وخت راساگه',
-'timezoneoffset' => 'آفست:',
 'servertime' => 'وخت سرور:',
+'guesstimezone' => 'وا جاگرد پر بوئه',
 'timezoneregion-africa' => 'افرقا',
 'timezoneregion-america' => 'امركا',
 'timezoneregion-antarctica' => 'قطو هار ونه',
@@ -680,43 +851,137 @@ $2',
 'timezoneregion-europe' => 'اوروپا',
 'timezoneregion-indian' => 'جهوناو هند',
 'timezoneregion-pacific' => 'جهوناو آروم',
+'allowemail' => 'ایمیل سی کاروریا هنی فعال کو',
 'prefs-searchoptions' => 'پی جوری',
 'prefs-namespaces' => 'نوم جایا',
 'default' => 'پيش فرض',
 'prefs-files' => 'فايلا',
+'prefs-emailconfirm-label' => 'مئکم کردن ایمیل:',
 'youremail' => 'ايميل:',
+'username' => '{{جنس:$1|نوم کاروری}}:',
+'uid' => '{{جنس:$1|کارور}}آی دی:',
+'prefs-memberingroups' => '{{جنس:$2|اندوم}}  {{جمی:$1|گرویا|گرویا}}:',
+'prefs-registration' => 'موقع ثوت نام:',
 'yourrealname' => 'نوم راستكی:',
 'yourlanguage' => 'زون:',
+'yourvariant' => 'محتوا آلشتگر زون:',
 'yournick' => 'امضا تازه:',
+'yourgender' => 'شما بیشتر میهایت که چه جوری گوته بوئه؟',
+'gender-unknown' => 'مه میهام چی یی نموئم',
+'gender-male' => 'وه(پیا) بلگه یا ویکی نه ویرایشت می که',
+'gender-female' => 'وه(زئنه)بلگه یا ویکی نه ویرایشت می که',
 'email' => 'پیومک برقی',
 'prefs-help-email' => 'نشونی ایمیل اختیاری هئ.اما سی بازجست پاسورد دش نیاز بوئه.شما باید پاسوردتونه د ویر بوریت',
 'prefs-help-email-others' => 'شما می تونید سی پیوند گرتن تو وا نهایین ایمیل مئن یه هوم پیوند د بلگه کاروری یا بلگه چک چنه تو انتخاو بکید.
 نشونی ایمیلتو وختی که کاروریا هنی وا تو پیوند می گرن دیار نی.',
+'prefs-help-email-required' => 'نشونی ایمیل لازم هئ.',
+'prefs-info' => 'دونسمنیا اولیه',
+'prefs-i18n' => 'جهون ولاتمنی',
+'prefs-signature' => 'امضا',
+'prefs-dateformat' => 'شلک وخت',
+'prefs-advancedediting' => 'گزینه یا عمومی',
 'prefs-editor' => 'ويرايشتگر',
 'prefs-preview' => 'پیش سیل',
+'prefs-advancedrc' => 'گزینه یا پیشکرده',
+'prefs-advancedrendering' => 'گزینه یا پیشکرده',
+'prefs-advancedsearchoptions' => 'گزینه یا پیشکرده',
+'prefs-advancedwatchlist' => 'گزینه یا پیشکرده',
+'prefs-displayrc' => 'گزینه یا نه نشو بیه',
+'prefs-displaysearchoptions' => 'گزینه یا نه نشو بیه',
+'prefs-displaywatchlist' => 'گزینه یا نه نشو بیه',
 'prefs-diffs' => 'فرخیا',
 
+# User preference: email validation using jQuery
+'email-address-validity-valid' => 'نشونی ایمیل دیار بیه خوئه',
+'email-address-validity-invalid' => 'یه گل نشونی ایمیل خو وارد بکید',
+
 # User rights
 'userrights-user-editname' => 'نوم كاروری ته وارد كو',
+'editusergroup' => 'ویرایشت گرویا کاروری',
+'userrights-editusergroup' => 'ویرایشت گرویا کاروری',
+'saveusergroups' => 'ذخیره کرد گرویا کاروری',
+'userrights-groupsmember' => 'اندوم:',
 'userrights-reason' => 'دليل:',
+'userrights-nodatabase' => 'پاگا دونسمنی $1 یا نیئش یا د ولاتنشین نئ.',
+'userrights-changeable-col' => 'گرویایی که شما تونیت ویرایشت بکید',
+'userrights-unchangeable-col' => 'گرویایی که شما نتونیت ویرایشت بکید',
 
 # Groups
 'group' => 'گرو',
+'group-user' => 'کاروریا',
+'group-autoconfirmed' => 'کاروریا خودوادار',
 'group-bot' => 'بتیا',
+'group-sysop' => 'مدیریا',
+'group-bureaucrat' => 'بروکراتیا',
 'group-all' => '(همه)',
 
+'group-user-member' => '{{جنس:$1|کارور}}',
+'group-bot-member' => '{{حنس:$1|بوت}}',
+'group-sysop-member' => '{{جنس:$1|مدیر}}',
+'group-bureaucrat-member' => '{{جنس:$1|بروکرات}}',
+
+# Rights
+'right-read' => 'حنن بلگیا',
+'right-edit' => 'ویرایشت بلگیا',
+'right-move' => 'بلگه یا جا وه جا کو',
+'right-move-subpages' => 'بلگه یا و زیر بلگه یا شونه جا وه جا کو',
+'right-move-rootuserpages' => 'بلگه یا ریشه ای کارور نه جا وه جا کو',
+'right-movefile' => 'فایلیا نه جا وه جا کو',
+'right-upload' => 'سوار کردن فايلا',
+'right-upload_by_url' => 'سوار کرد فایلیا د یو آر ال',
+'right-writeapi' => 'د نیسنن ای پی آی استفاده بکید',
+'right-delete' => 'بلگیا نه پاک کو',
+'right-browsearchive' => 'بلگه یا پاک بیه نه پی جوری کو',
+'right-undelete' => 'ای بلگه نه حذف نكيد',
+'right-unblockself' => 'خوشه قلف نکید',
+'right-editinterface' => 'راوط کارور نه ویرایشت کو',
+'right-editusercssjs' => 'فایلیا جاوا اسکریپت و سی اس اس کاروریا هنی نه ویرایشت کو',
+'right-editusercss' => 'فایلیا سی اس اس کاروریا هنی نه ویرایشت کو',
+'right-edituserjs' => 'فایلیا جاوا اسکریپت کاروریا هنی نه ویرایشت کو',
+'right-editmyusercss' => 'فایلیا سی اس اس کارور خوتو نه ویرایشت کو',
+'right-editmyuserjs' => 'فایلیا جاوا اسکریپت کارور خوتو نه ویرایشت کو',
+'right-viewmywatchlist' => 'سیل برگ خوتونه بوینیت',
+'right-viewmyprivateinfo' => 'دونسمنیا شصقی خوتونه بوینیت(چی نشونی ایمیل،نوم راستکی)',
+'right-editmyprivateinfo' => 'دونسمنیا شصقی خوتونه ویرایشت بکید(چی نشونی ایمیل،نوم راستکی)',
+'right-siteadmin' => 'پاگا دونسمنی نه قلف بکید یا نکید',
+'right-sendemail' => 'سی کاروریا هنی ایمیل کل بکید',
+'right-passwordreset' => 'پاسورد ایمیلیا د نو دئه بیه نه بوینیت',
+
 # Special:Log/newusers
 'newuserlogpage' => 'راس بیه وا کارور',
 
 # 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-upload_by_url' => 'ای فایله نه د یو آر ال سوار بکید',
+'action-writeapi' => 'د نیسنن ای پی آی استفاده بکید',
 'action-delete' => 'ای بلگه نه پاک کو',
 'action-deleterevision' => 'ای بازدئین پاک کو',
+'action-deletedhistory' => 'ویرگار پاک بیه ای بلگه نه بوینیت',
+'action-browsearchive' => 'بلگه یا پاک بیه نه پی جوری بکید',
 'action-undelete' => 'ای بلگه نه پاک نکو',
+'action-block' => 'ای کارور نه د ویرایشت کردن منع کو',
+'action-import' => 'بلگه یا نه د ویکی هنی وارد بکید',
+'action-importupload' => 'بلگه یا نه د فایل سوار بیه وارد بکید',
+'action-siteadmin' => 'پاگا دونسمنی نه قلف بکید یا نکید',
 'action-sendemail' => 'ایمیلیانه کل کو',
+'action-editmywatchlist' => 'سیل برگ خوتونه ویرایشت بکید',
+'action-viewmywatchlist' => 'سیل برگ خوتونه بوینیت',
+'action-viewmyprivateinfo' => 'دونسمنیا خوتونه بوینیت',
+'action-editmyprivateinfo' => 'دونسمنیا شصقی خوتونه ویرایشت بکید',
 
 # Recent changes
 'nchanges' => '$1 {{جمی:$1|آلشت|آلشتیا}}',
+'enhancedrc-since-last-visit' => '$1 {{جمی:$1|د آخری دیئن}}',
 'enhancedrc-history' => 'ويرگار',
 'recentchanges' => 'تغيريا تازه',
 'recentchanges-legend' => 'گزينه يا آلشتيا تازه',
@@ -725,12 +990,12 @@ $2',
 'recentchanges-label-minor' => 'يه ويرايشت كؤچكيه',
 'recentchanges-label-bot' => 'ای ويرايشت نه يه بوت انجوم ديئه',
 'recentchanges-label-unpatrolled' => 'ای ويرايشت هنی تيه واداشت نبيه',
-'rcnote' => "د هار{{جمی:$1|هئ'''1''' آلشت|آخری هئ ن '''$1'''آلشتیا}}د آخر{{جمی:$2|رو|'''$2''' روزیا}}, چی $5, $4.",
+'recentchanges-legend-newpage' => '(همچنو بوینیت [[ویجه:بلگیا تازه|نوم گه بلگیا تازه]])',
 'rcnotefrom' => 'د هار آلشتیا د $2 هیئن(د بال د $1 نشون دئه بیه)',
 'rclistfrom' => 'آلشتیا تازه ایی که وا $1 شرو بیه نشونش بئه',
 'rcshowhideminor' => 'ويرايشتيا کؤچک $1',
 'rcshowhidebots' => '$1 رواتيا یا بوتيا',
-'rcshowhideliu' => '$1 کارورياداخل بيه',
+'rcshowhideliu' => '$1 کاروريا ثوت نام کرده',
 'rcshowhideanons' => '$1 کاروريا ناشناس',
 'rcshowhidepatr' => '$1 ویرایشتیا تیه پرس بیه',
 'rcshowhidemine' => 'ويرايشتيا مه$1',
@@ -742,12 +1007,18 @@ $2',
 'minoreditletter' => 'م',
 'newpageletter' => 'ن',
 'boteditletter' => 'ب',
+'number_of_watching_users_pageview' => '[$1 دینه {{جمی:$1|کارور|کاروریا}}]',
+'rc_categories' => 'دسه یا نه محدود کو(وا "|" جگا بوئن',
 'rc_categories_any' => 'هرکوم',
+'rc-change-size-new' => '$1 {{جمی:$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-summary' => 'ای نوم گه تازه د بلگیایی که وا بلگیا ویجه هوم پیوند بینه آلشت بیه(یا سی اندومیا دسه بنی بیه)
@@ -757,22 +1028,62 @@ $2',
 
 # Upload
 'upload' => 'بلم گير كردن فايلا',
+'uploadbtn' => 'سوار کردن فایل',
+'uploadnologin' => 'وارد نبیه',
+'uploadnologintext' => 'لطفن $1 سی سوارکرد فایلیا.',
+'uploaderror' => 'خطا د سوار کردن',
 'uploadlogpage' => 'سوارکرد',
 'filename' => 'نوم فایل',
 'filedesc' => 'چكسته',
 'fileuploadsummary' => 'چکسه',
+'filereuploadsummary' => 'آلشتیا فایل:',
 'filesource' => 'سرچشمه:',
+'uploadedfiles' => 'فایلیا سواربیه',
+'empty-file' => 'فایلی که دئی ته حالی بیه.',
+'file-too-large' => 'فایلی که دئی ته فره گپ بی.',
+'filename-tooshort' => 'نوم فایل فره کؤچکه.',
+'illegal-filename' => 'نوم فایل اجاره ندئه بیه.',
+'unknown-error' => 'یه گل خطا ناشناس ری ون کرده.',
+'savefile' => 'فایل نه ذخیره کو',
 'uploadedimage' => 'سوارکرد"[[$1]]"',
+'uploaddisabled' => 'سوار کردن د کار نئ.',
+'copyuploaddisabled' => 'سوار کردن وا یو آر ال د کار نئ.',
+'uploadfromurl-queued' => 'سوارکرد تو ها د گئ.',
+'uploaddisabledtext' => 'سوار کرد فایلیا د کار نئ.',
 'upload-source' => 'سرچشمه فایل',
+'sourcefilename' => 'سرچشمه نوم فایل:',
+'sourceurl' => 'سرچشمه يو آر ال:',
+'destfilename' => 'نوم فایل مقصد:',
+'watchthisupload' => 'ای فایل بوینیت',
+'upload-success-subj' => 'سوار کرد خوش سرانجوم',
+'upload-failure-subj' => 'مشگل د سوارکردن',
+
+'upload-proto-error' => 'پروتکل نادروس',
+'upload-file-error' => 'خطا داخلی',
+'upload-misc-error' => 'خطا سوار کرد ناشناخته',
+'upload-unknown-size' => 'انازه نادیار',
+
+# File backend
+'backend-fail-notexists' => 'فایل $1 وجود ناره.',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'دسرسی منع بی',
+'img-auth-nofile' => 'فایل $1 وجود ناره.',
+
+# HTTP errors
+'http-invalid-url' => 'یو آر ال نامعتور:$1',
+'http-read-error' => 'خطا د حنن اچ تی تی پی.',
 
 'license' => 'ليانس دار بيئن',
 'license-header' => 'د شكل ليسانس دار بيئن',
+'nolicense' => 'هیچی انتخاو نبیه',
+'license-nopreview' => '(پیش سیل د دسرس نئ)',
+'upload_source_file' => '(یه گل فایل د انجومیار تو)',
 
 # Special:ListFiles
+'listfiles_search_for' => 'پی جوری سی نوم رسانه:',
 'imgfile' => 'فايل',
+'listfiles' => 'نوم گه فایل',
 'listfiles_thumb' => 'بن کلکی',
 'listfiles_date' => 'تاريخ',
 'listfiles_name' => 'نوم',
@@ -794,6 +1105,7 @@ $2',
 'filehist-datetime' => 'ويرگار/وخت',
 'filehist-thumb' => 'عسگ كؤچك بيه',
 'filehist-thumbtext' => 'كؤچك كردن سی  نسقه چی $1',
+'filehist-nothumb' => 'هیچ بن کلیکی نئ',
 'filehist-user' => 'كارور',
 'filehist-dimensions' => 'بعديا',
 'filehist-filesize' => 'انازه فایل',
@@ -801,42 +1113,102 @@ $2',
 'imagelinks' => 'استفاده د فايل',
 'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
 'nolinkstoimage' => 'ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی',
+'morelinkstoimage' => ' [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای فایل بونیت.',
 'sharedupload-desc-here' => 'فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.
 توضی دباره[$2 file description page] د هار نشو دئئه بیه',
+'filepage-nofile' => 'چنو فایلی وا ای نوم نئ.',
+'shared-repo-from' => 'د $1',
+
+# File reversion
+'filerevert-comment' => 'دليل:',
+'filerevert-submit' => 'ورگنین',
 
 # File deletion
+'filedelete' => '$1 پاک کو',
+'filedelete-legend' => 'فایل نه پاک کو',
 'filedelete-comment' => 'دليل:',
 'filedelete-submit' => 'پاك كردن',
+'filedelete-success' => '$1 پاک بیه.',
+'filedelete-nofile' => "'''$1''' وجود ناره.",
+'filedelete-otherreason' => 'دلیل هنی:',
+'filedelete-reason-otherlist' => 'دليل هنی',
+'filedelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+'filedelete-maintenance-title' => 'نبوئه ای فایل پاک بوئه',
 
 # MIME search
+'mimesearch' => 'پی جوری ام آی ام ای',
 'download' => 'گرتن',
 
+# Unwatched pages
+'unwatchedpages' => 'بلگه یا ندئیه بیه',
+
 # Unused templates
+'unusedtemplates' => 'قالویا وه کار نبرده بیه.',
 'unusedtemplateswlh' => 'هوم پیوندیا هنی',
 
 # Random page
 'randompage' => 'بلگه بختكی',
 
 # Random page in category
+'randomincategory' => 'بلگه بختی د ای دسه',
+'randomincategory-invalidcategory' => '"$1"  نوم دسه معتوری نئ.',
+'randomincategory-nopages' => 'هیچ بلگه ای د ای  [[:دسه نئ:$1|$1]] دسه.',
 'randomincategory-selectcategory-submit' => 'رو',
 
 # Statistics
 'statistics' => 'آماريا',
+'statistics-header-pages' => 'بلگه آماریا',
+'statistics-header-edits' => 'آماریا نه ویرایشت بکید',
+'statistics-header-views' => 'آماریا نه بوینیت',
+'statistics-header-users' => 'آماریا کارور',
+'statistics-header-hooks' => 'آماریا هنی',
+'statistics-articles' => 'بلگه یا مینونه',
 'statistics-pages' => 'بلگیا',
+'statistics-views-total' => 'همه نه بوینیت',
+'statistics-views-peredit' => 'هر ویرایشت نه بوینیت',
 'statistics-users-active' => 'کاروریا کارکو',
+'statistics-mostpopular' => 'بلگه یایی که بیشتر دیئه بینه',
 
 'pageswithprop-submit' => 'رو',
 
 'brokenredirects-edit' => 'ویرایشت',
 'brokenredirects-delete' => 'پاك كردن',
 
+'withoutinterwiki' => 'بلگه یایی که هوم پیوند زون نارن',
 'withoutinterwiki-legend' => 'پیشون',
 'withoutinterwiki-submit' => 'نشون دائن',
 
 # Miscellaneous special pages
-'nbytes' => '$1{{PLURAL:$1|كلی|بايت|بايت}}',
+'nbytes' => '$1{{جمی:$1|كلی|بايت|بايت}}',
+'ncategories' => '{{جمی:$1|دسه|دسه يا}}',
+'ninterwikis' => '$1 {{جمی:$1|مئن ویکی|مئن ویکیا}}',
+'nlinks' => '$1 {{جمی:$1|هوم پیوند|هوم پیوندیا}}',
 'nmembers' => '$1 {{PLURAL:$1|اندوم|اندوميا}}',
+'nmemberschanged' => '$1 → $2 {{جمی:$2|اندوم|اندومیا}}',
+'nviews' => '$1 {{جمی:$1|دیئن|دیئنیا}}',
+'nimagelinks' => '$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه',
+'ntransclusions' => '$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه',
+'lonelypages' => 'بلگه یا تک منه',
+'uncategorizedpages' => 'بلگه یا دسه بنی نبیه',
+'uncategorizedcategories' => 'دسه یا دسه بنی نبیه',
+'uncategorizedimages' => 'فایلیا دسه بنی نبیه',
+'uncategorizedtemplates' => 'قالویا دسه بنی نبیه',
+'unusedcategories' => 'دسه یا استفاده نبیه',
+'unusedimages' => 'فایلیا استفاده نبیه',
+'popularpages' => 'بلگه یا حاستنی',
+'wantedcategories' => 'بلگه یا حاستنی',
+'wantedpages' => 'بلگه یا حاستنی',
+'wantedfiles' => 'فایلیا حاستنی',
+'wantedtemplates' => 'قالویا حاستنی',
+'mostlinked' => 'بلگه یا که بیشتر هوم پیوند بینه',
+'mostlinkedcategories' => 'دسه یایی که بیشتر هوم پیوند بیه',
+'mostlinkedtemplates' => 'قالویایی که بیشتر هوم پیوند بینه',
+'mostcategories' => 'بلگه یا که بیشتر دسه بنی بینه',
+'mostimages' => 'فایلیایی که بیشتر هوم پیوند بینه',
 'prefixindex' => 'همه بلگيا وا پيشون',
+'shortpages' => 'بلگه یا کؤچک',
+'longpages' => 'بلگه یا گپ',
+'protectedpages' => 'بلگه یا حفاظت بيه',
 'usercreated' => '{{جنسیت:$3|راس بیه}}د $1 at $2',
 'newpages' => 'بلگيا نو',
 'move' => 'جاوه جا بوئيت',
@@ -848,6 +1220,9 @@ $2',
 'booksources-search-legend' => 'پی جوری سی سرچشمه یا کتاو',
 'booksources-go' => 'رو',
 
+# Special:Log
+'log' => 'نیسنن رخ ونیا',
+
 # Special:AllPages
 'allpages' => 'همه بلگيا',
 'alphaindexline' => '$1 د
@@ -910,6 +1285,7 @@ $2',
 'sp-contributions-newbies' => 'فقط هومیاری یایی که د حساو تازه بیه نشون بئه',
 'sp-contributions-blocklog' => 'قلف',
 'sp-contributions-uploads' => 'سواركرديا',
+'sp-contributions-logs' => 'نیسنن رخ ونیا',
 'sp-contributions-talk' => 'چك چنه',
 'sp-contributions-search' => 'سی هومیاریا پی جور با',
 'sp-contributions-username' => 'نوم نشون آی پی يا نوم كاروری:',
@@ -1015,6 +1391,7 @@ $2',
 'tooltip-rollback' => '"ورگشتن" لرستن د حالت اول  سی ای بلگه  که سی  يه كه هومياری  نيايی اصلاح بيه وا يه پورنسن',
 'tooltip-undo' => 'انجوم نگرتن ای ویرایشت ورگن و همه فرمیا ویرایشت تانه که حالت پیش سیل واکو.یه اجازه میئه سی اضاف کردن یه دلیل د چکسته.',
 'tooltip-summary' => 'يه چكسته كؤچك وارد بكيد',
+'interlanguage-link-title' => '$1-$2',
 
 # Browsing diffs
 'previousdiff' => '← ويرايشت كۈهنه تر',
@@ -1024,7 +1401,7 @@ $2',
 'file-info-size' => '$1 × $2 پیکسل, انازه فایل: $3, MIME نوع: $4',
 'file-nohires' => 'عسك ون بالاتري دش ني',
 'svg-long-desc' => 'اس وی جی فايل.نومنا $1 $2 پيكسل',
-'show-big-image' => 'تموم رخ ون',
+'show-big-image' => 'فایل اصلی',
 
 # Bad image list
 'bad_image_list' => 'دونسمنديانه وه ای شلگ وارد بكيت:
@@ -1050,10 +1427,6 @@ $2',
 *جی پی اس گپ حالت
 *جی پی اس همه حالت',
 
-# External editor support
-'edit-externally' => 'ای فایل سی ویرایشت وه در دیئن کاربردش استفاده بکید',
-'edit-externally-help' => '(بوینیت [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'همه شو',
 'namespacesall' => 'همه شو',
@@ -1067,6 +1440,12 @@ $2',
 # Core parser functions
 'duplicate-defaultsort' => 'زنهار کلیت پیش فرض جور بیه $2 تازه ای یا کلید پیش فرض جوربیه $1 رد بیه.',
 
+# Special:Version
+'version-ext-license' => 'ليسانس',
+'version-ext-colheader-version' => 'نسقه',
+'version-ext-colheader-license' => 'ليسانس',
+'version-ext-colheader-credits' => 'نیسنه یا',
+
 # Special:SpecialPages
 'specialpages' => 'بلگيا ويجه',
 
index 8573545..d2460db 100644 (file)
@@ -30,6 +30,7 @@
  * @author Urhixidur
  * @author Vilius2001
  * @author Vpovilaitis
+ * @author Xabier Armendaritz
  * @author לערי ריינהארט
  */
 
@@ -63,7 +64,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Seniausi_puslapiai' ),
        'Blankpage'                 => array( 'Tuščias_puslapis' ),
        'Block'                     => array( 'Blokuoti_IP' ),
-       'Blockme'                   => array( 'Užblokuoti_mane' ),
        'Booksources'               => array( 'Knygų_šaltiniai' ),
        'BrokenRedirects'           => array( 'Peradresavimai_į_niekur' ),
        'Categories'                => array( 'Kategorijos' ),
@@ -73,7 +73,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Sukurti_paskyrą' ),
        'Deadendpages'              => array( 'Puslapiai-aklavietės' ),
        'DeletedContributions'      => array( 'Ištrintas_indėlis' ),
-       'Disambiguations'           => array( 'Nukreipiamieji' ),
        'DoubleRedirects'           => array( 'Dvigubi_peradesavimai' ),
        'Emailuser'                 => array( 'Rašyti_laišką' ),
        'Export'                    => array( 'Eksportas' ),
@@ -208,7 +207,6 @@ $messages = array(
 'tog-minordefault' => 'Pagal nutylėjimą pažymėti redagavimus kaip smulkius',
 'tog-previewontop' => 'Rodyti peržiūrą virš redagavimo lauko',
 'tog-previewonfirst' => 'Rodyti peržiūrą pirmą kartą pakeitus',
-'tog-nocache' => 'Išjungti interneto naršyklės puslapių podėlį',
 'tog-enotifwatchlistpages' => 'Siųsti man laišką, kai pakeičiamas puslapis, kurį stebiu',
 'tog-enotifusertalkpages' => 'Siųsti man laišką, kai pakeičiamas mano naudotojo aptarimo puslapis',
 'tog-enotifminoredits' => 'Siųsti man laišką, kai puslapio keitimas yra smulkus',
@@ -285,7 +283,7 @@ $messages = array(
 'mar' => 'kov',
 'apr' => 'bal',
 'may' => 'geg',
-'jun' => 'bir',
+'jun' => 'Eka',
 'jul' => 'lie',
 'aug' => 'rgp',
 'sep' => 'rgs',
@@ -342,7 +340,6 @@ $messages = array(
 'qbedit' => 'Taisyti',
 'qbpageoptions' => 'Šis puslapis',
 'qbmyoptions' => 'Mano puslapiai',
-'qbspecialpages' => 'Specialieji puslapiai',
 'faq' => 'DUK',
 'faqpage' => 'Project:DUK',
 
@@ -553,9 +550,6 @@ Nebuvo duotas joks paaiškinimas.',
 'perfcached' => 'Rodoma išsaugota duomenų kopija, todėl duomenys gali būti ne patys naujausi. Maksimaliai $1 {{PLURAL:$1|rezultatas|rezultatai|rezultatų}} yra saugoma.',
 'perfcachedts' => 'Rodoma išsaugota duomenų kopija, kuri buvo atnaujinta $2 $3. Maksimaliai $4 {{PLURAL:$4|rezultatas|rezultatai|rezultatų}} yra saugoma.',
 'querypage-no-updates' => 'Atnaujinimai šiam puslapiui dabar yra išjungti. Duomenys čia dabar nebus atnaujinti.',
-'wrong_wfQuery_params' => 'Neteisingi parametrai į funkciją wfQuery()<br />
-Funkcija: $1<br />
-Užklausa: $2',
 'viewsource' => 'Žiūrėti kodą',
 'viewsource-title' => 'Peržiūrėti šaltinį $1',
 'actionthrottled' => 'Veiksmas apribotas',
@@ -635,6 +629,7 @@ Nepamirškite pakeisti savo [[Special:Preferences|{{SITENAME}} nustatymų]].',
 'userlogin-resetpassword-link' => 'Nustatykite slaptažodį iš naujo',
 'helplogin-url' => 'Help:Prisijungimas',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Prisijungimo pagalba]]',
+'userlogin-createanother' => 'Sukurti kitą paskyrą',
 'createacct-join' => 'Įveskite savo informaciją žemiau.',
 'createacct-another-join' => 'Įveskite naujos paskyros informaciją žemiau.',
 'createacct-emailrequired' => 'Elektroninio pašto adresas',
@@ -678,7 +673,7 @@ Patikrinkite rašybą, arba [[Special:UserLogin/signup|sukurkite naują paskyrą
 'passwordtooshort' => 'Slaptažodžiai turi būti bent $1 {{PLURAL:$1|simbolio|simbolių|simbolių}} ilgio.',
 'password-name-match' => 'Jūsų slaptažodis turi skirtis nuo jūsų naudotojo vardo.',
 'password-login-forbidden' => 'Šito naudotojo vardo ir slaptažodžio naudojimas yra uždraustas.',
-'mailmypassword' => 'Atsiųsti naują slaptažodį el. paštu',
+'mailmypassword' => 'Atkurti slaptažodį',
 'passwordremindertitle' => 'Laikinasis {{SITENAME}} slaptažodis',
 'passwordremindertext' => 'Kažkas (tikriausiai jūs, IP adresu $1)
 paprašė, kad atsiųstumėte naują slaptažodį projektui {{SITENAME}} ($4).
@@ -732,7 +727,7 @@ Palaukite prieš bandant vėl.',
 'user-mail-no-body' => 'Mėginta siųsti tuščia ar pernelyg trumpą E-pašto žinutė.',
 
 # Change password dialog
-'resetpass' => 'Keisti slaptažodį',
+'changepassword' => 'Pakeisti slaptažodį',
 'resetpass_announce' => 'Jūs prisijungėte su atsiųstu laikinuoju kodu. Norėdami užbaigti prisijungimą, čia jums reikia nustatyti naująjį slaptažodį:',
 'resetpass_text' => '<!-- Įterpkite čia tekstą -->',
 'resetpass_header' => 'Keisti paskyros slaptažodį',
@@ -1089,10 +1084,6 @@ Kaip administratorius, jūs galite ją pamatyti; daugiau detalių gali būti [{{
 'revisiondelete' => 'Trinti/atkurti versijas',
 'revdelete-nooldid-title' => 'Neleistina paskirties versija',
 'revdelete-nooldid-text' => 'Jūs nenurodėte versijos (-ų), kurioms įvykdyti šią funkciją, nurodyta versija neegzistuoja arba jūs bandote paslėpti esamą versiją.',
-'revdelete-nologtype-title' => 'Nenurodytas istorijos tipas',
-'revdelete-nologtype-text' => 'Jūs nenurodėte istorijos tipo, kuriam atlikti šį veiksmą.',
-'revdelete-nologid-title' => 'Neleistinas istorijos įrašas',
-'revdelete-nologid-text' => 'Jūs arba nenurodėte paskirties istorijos įvykio, kuriam atlikti šį veiksmą, arba nurodytas įrašas neegzistuoja.',
 'revdelete-no-file' => 'Nurodytas failas neegzistuoja.',
 'revdelete-show-file-confirm' => 'Ar tikrai norite peržiūrėti ištrintą failo „<nowiki>$1</nowiki>“ $2 $3 versiją?',
 'revdelete-show-file-submit' => 'Taip',
@@ -1125,8 +1116,6 @@ $1",
 'logdelete-failure' => "'''Sąrašo rodomumas negali būti nustatytas:'''
 $1",
 'revdel-restore' => 'Keisti matomumą',
-'revdel-restore-deleted' => 'Ištrintos versijos',
-'revdel-restore-visible' => 'Matomos versijos',
 'pagehist' => 'Puslapio istorija',
 'deletedhist' => 'Ištrinta istorija',
 'revdelete-hide-current' => 'Klaida slepiant $1, $2 keitimą: tai yra dabartinė versija.
@@ -1200,12 +1189,8 @@ Prašome patikrinti sąrašus.',
 # Search results
 'searchresults' => 'Paieškos rezultatai',
 'searchresults-title' => 'Paieškos rezultatai „$1“',
-'searchresulttext' => 'Daugiau informacijos apie paiešką projekte {{SITENAME}} rasite [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Jūs ieškote '''[[:$1]]''' ([[Special:Prefixindex/$1|visi puslapiai, prasidedantys „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|visi puslapiai, rodantys į „$1“]])",
-'searchsubtitleinvalid' => "Ieškoma '''$1'''",
 'toomanymatches' => 'Perdaug atitikmenų buvo grąžinta. Prašome pabandyti kitokią užklausą',
 'titlematches' => 'Puslapių pavadinimų atitikmenys',
-'notitlematches' => 'Jokių pavadinimo atitikmenų',
 'textmatches' => 'Puslapio turinio atitikmenys',
 'notextmatches' => 'Jokių puslapių teksto atitikmenų',
 'prevn' => '{{PLURAL:$1|atgal|ankstesnius $1}}',
@@ -1214,10 +1199,8 @@ Prašome patikrinti sąrašus.',
 'nextn-title' => '{{PLURAL:$1|Kitas $1 rezultatas|Kiti $1 rezultatai|Kiti $1 rezultatų}}',
 'shown-title' => 'Rodyti $1 {{PLURAL:$1|rezultatą|rezultatus|rezultatus}} puslapyje',
 'viewprevnext' => 'Žiūrėti ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Paieškos nustatymai',
 'searchmenu-exists' => "'''Puslapis pavadinimu „[[$1]]“ šioje wiki'''",
 'searchmenu-new' => "'''Sukurti puslapį „[[:$1]]“ šioje wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ieškoti puslapių su šiuo priešdėliu]]',
 'searchprofile-articles' => 'Turinio puslapiai',
 'searchprofile-project' => 'Pagalbos ir projekto puslapiai',
 'searchprofile-images' => 'Daugialypės terpės failai',
@@ -1238,20 +1221,16 @@ Prašome patikrinti sąrašus.',
 'search-interwiki-default' => '$1 rezultatai:',
 'search-interwiki-more' => '(daugiau)',
 'search-relatedarticle' => 'Susiję',
-'mwsuggest-disable' => 'Slėpti AJAX pasiūlymus',
 'searcheverything-enable' => 'Ieškoti visose vardų srityse',
 'searchrelated' => 'susiję',
 'searchall' => 'visi',
 'showingresults' => "Žemiau rodoma iki '''$1''' {{PLURAL:$1|rezultato|rezultatų|rezultatų}} pradedant #'''$2'''.",
 'showingresultsnum' => "Žemiau rodoma '''$3''' {{PLURAL:$3|rezultato|rezultatų|rezultatų}}rezultatų pradedant #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultatas '''$1''' iš '''$3'''|Rezultatai '''$1 - $2''' iš '''$3'''}} pagal užklausą '''$4'''",
-'nonefound' => "'''Pastaba''': Pagal nutylėjimą ieškoma tik kai kuriose vardų srityse. Pamėginkite prirašyti priešdėlį ''all:'', jei norite ieškoti viso turinio (įskaitant aptarimo puslapius, šablonus ir t. t.), arba naudokite norimą vardų sritį kaip priešdėlį.",
 'search-nonefound' => 'Nėra rezultatų, atitinkančių užklausą.',
-'powersearch' => 'Išplėstinė paieška',
 'powersearch-legend' => 'Išplėstinė paieška',
 'powersearch-ns' => 'Ieškoti vardų srityse:',
 'powersearch-redir' => 'Įtraukti peradresavimus',
-'powersearch-field' => 'Ieškoti',
 'powersearch-togglelabel' => 'Pažymėti:',
 'powersearch-toggleall' => 'Viską',
 'powersearch-togglenone' => 'Nieko',
@@ -1262,7 +1241,6 @@ Prašome patikrinti sąrašus.',
 'preferences' => 'Nustatymai',
 'mypreferences' => 'Nustatymai',
 'prefs-edits' => 'Keitimų skaičius:',
-'changepassword' => 'Pakeisti slaptažodį',
 'prefs-skin' => 'Išvaizda',
 'skin-preview' => 'Peržiūra',
 'datedefault' => 'Jokio pasirinkimo',
@@ -1285,13 +1263,11 @@ Prašome patikrinti sąrašus.',
 'prefs-email' => 'El. pašto nustatymai',
 'prefs-rendering' => 'Išvaizda',
 'saveprefs' => 'Išsaugoti',
-'resetprefs' => 'Išvalyti neišsaugotus pakeitimus',
 'restoreprefs' => 'Grąžinti visus numatytuosius nustatymus',
 'prefs-editing' => 'Redagavimas',
 'rows' => 'Eilutės:',
 'columns' => 'Stulpeliai:',
 'searchresultshead' => 'Paieškos nustatymai',
-'resultsperpage' => 'Rezultatų puslapyje:',
 'stub-threshold' => 'Puslapį žymėti <a href="#" class="stub">nebaigtu</a>, jei mažesnis nei:',
 'stub-threshold-disabled' => 'Išjungtas',
 'recentchangesdays' => 'Rodomos dienos paskutinių keitimų sąraše:',
@@ -1303,7 +1279,6 @@ Prašome patikrinti sąrašus.',
 'localtime' => 'Vietinis laikas:',
 'timezoneuseserverdefault' => 'Naudoti wiki pradinį ($1)',
 'timezoneuseoffset' => 'Kita (patikslinti skirtumą)',
-'timezoneoffset' => 'Skirtumas¹:',
 'servertime' => 'Serverio laikas:',
 'guesstimezone' => 'Paimti iš naršyklės',
 'timezoneregion-africa' => 'Afrika',
@@ -1548,8 +1523,8 @@ teisės",
 'recentchanges-label-minor' => 'Tai smulkus pakeitimas',
 'recentchanges-label-bot' => 'Šį keitimą atliko automatinė programa',
 'recentchanges-label-unpatrolled' => 'Šis keitimas dar nebuvo patikrintas',
+'recentchanges-label-plusminus' => 'Šiuo baitų skaičiumi pakeista puslapio apimtis',
 'recentchanges-legend-newpage' => '$1 - naujas puslapis',
-'rcnote' => "Žemiau yra {{PLURAL:$1|'''1''' pakeitimas|paskutiniai '''$1''' pakeitimai|paskutinių '''$1''' pakeitimų}} per {{PLURAL:$2|dieną|paskutiniąsias '''$2''' dienas|paskutiniųjų '''$2''' dienų}} skaičiuojant nuo $5, $4.",
 'rcnotefrom' => "Žemiau yra pakeitimai pradedant '''$2''' (rodoma iki '''$1''' pakeitimų).",
 'rclistfrom' => 'Rodyti naujus pakeitimus pradedant $1',
 'rcshowhideminor' => '$1 smulkius keitimus',
@@ -2006,10 +1981,8 @@ Kiekvienoje eilutėje yra nuorodos į pirmąjį ir antrąjį peradresavimą, tai
 'protectedpages' => 'Užrakinti puslapiai',
 'protectedpages-indef' => 'Tik neapibrėžtos apsaugos',
 'protectedpages-cascade' => 'Tik pakopinė apsauga',
-'protectedpagestext' => 'Šie puslapiai yra apsaugoti nuo perkėlimo ar redagavimo',
 'protectedpagesempty' => 'Šiuo metu nėra apsaugotas joks failas su šiais parametrais.',
 'protectedtitles' => 'Apsaugoti pavadinimai',
-'protectedtitlestext' => 'Šie pavadinimai yra apsaugoti nuo sukūrimo',
 'protectedtitlesempty' => 'Šiuo metu nėra jokių pavadinimų apsaugotų šiais parametrais.',
 'listusers' => 'Naudotojų sąrašas',
 'listusers-editsonly' => 'Rodyti tik keitimus atlikusius naudotojus',
@@ -2060,9 +2033,6 @@ Galima sumažinti rezultatų skaičių, patikslinant veiksmo rūšį, naudotoją
 'allpagesto' => 'Rodyti puslapius, besibaigiančius su:',
 'allarticles' => 'Visi puslapiai',
 'allinnamespace' => 'Visi puslapiai ($1 vardų sritis)',
-'allnotinnamespace' => 'Visi puslapiai (nesantys $1 vardų srityje)',
-'allpagesprev' => 'Atgal',
-'allpagesnext' => 'Pirmyn',
 'allpagessubmit' => 'Rodyti',
 'allpagesprefix' => 'Rodyti puslapiu su priedėliu:',
 'allpagesbadtitle' => 'Duotas puslapio pavadinimas yra neteisingas arba turi tarpkalbininį arba tarpprojektinį priedėlį. Jame yra vienas ar keli simboliai, kurių negalima naudoti pavadinimuose.',
@@ -2400,7 +2370,6 @@ Tokiais atvejais, jums reikia atžymėti arba atslėpti naujausią ištrintą ve
 'undeletebtn' => 'Atkurti',
 'undeletelink' => 'žiūrėti/atkurti',
 'undeleteviewlink' => 'žiūrėti',
-'undeletereset' => 'Iš naujo',
 'undeleteinvert' => 'Žymėti priešingai',
 'undeletecomment' => 'Priežastis:',
 'undeletedrevisions' => '{{PLURAL:$1|atkurta $1 versija|atkurtos $1 versijos|atkurta $1 versijų}}',
@@ -2488,14 +2457,12 @@ Paskutinis blokavimo įrašas pateikiamas žemiau:',
 'block' => 'Blokuoti naudotoją',
 'unblock' => 'Atblokuoti naudotoją',
 'blockip' => 'Blokuoti naudotoją',
-'blockip-title' => 'Blokuoti naudotoją',
 'blockip-legend' => 'Blokuoti naudotoją',
 'blockiptext' => 'Naudokite šią formą, kad uždraustumėte redagavimo prieigą pasirinktam IP adresui ar naudotojui. Tai turėtų būti atliekama tik tam, kad sustabdytumėte vandalizmą, ir neprieštarauti [[{{MediaWiki:Policy-url}}|projekte galiojančioms taisyklėms]].
 Žemiau pateikite tikslią priežastį (pavyzdžiui, nurodydami sugadintus puslapius).',
 'ipadressorusername' => 'IP adresas arba naudotojo vardas',
 'ipbexpiry' => 'Galiojimo laikas',
 'ipbreason' => 'Priežastis:',
-'ipbreasonotherlist' => 'Kita priežastis',
 'ipbreason-dropdown' => '*Bendrosios blokavimo priežastys
 ** Klaidingos informacijos įterpimas
 ** Turinio šalinimas iš puslapių
@@ -2511,8 +2478,6 @@ Paskutinis blokavimo įrašas pateikiamas žemiau:',
 'ipbsubmit' => 'Blokuoti šį naudotoją',
 'ipbother' => 'Kitoks laikas',
 'ipboptions' => '2 valandos:2 hours,1 diena:1 day,3 dienos:3 days,1 savaitė:1 week,2 savaitės:2 weeks,1 mėnesis:1 month,3 mėnesiai:3 months,6 mėnesiai:6 months,1 metai:1 year,neribotai:infinite',
-'ipbotheroption' => 'kita',
-'ipbotherreason' => 'Kita/papildoma priežastis',
 'ipbhidename' => 'Slėpti naudotojo vardą keitimuose bei sąrašuose',
 'ipbwatchuser' => 'Stebėti šio naudotojo puslapį ir jo aptarimų puslapį',
 'ipb-disableusertalk' => 'Neleisti redaguoti savo naudotojo aptarimo puslapio',
@@ -2601,7 +2566,6 @@ Jei norite pamatyti dabar blokuojamus adresus, žiūrėkite [[Special:BlockList|
 'proxyblockreason' => 'Jūsų IP adresas yra užblokuotas, nes jis yra atvirasis tarpinis serveris. Prašome susisiekti su savo interneto paslaugų tiekėju ar technine pagalba ir praneškite jiems apie šią svarbią saugumo problemą.',
 'sorbsreason' => 'Jūsų IP adresas yra įtrauktas į atvirųjų tarpinių serverių DNSBL sąrašą, naudojamą šios svetainės.',
 'sorbs_create_account_reason' => 'Jūsų IP adresas yra įtrauktas į atvirųjų tarpinių serverių DNSBL sąrašą, naudojamą šios svetainės. Jūs negalite sukurti paskyros',
-'cant-block-while-blocked' => 'Jūs negalite blokuoti kitų naudotojų, pats būdamas užblokuotas.',
 'cant-see-hidden-user' => 'Naudotojas, kurį bandote užblokuoti, jau yra užblokuotas arba paslėptas.
 Kadangi jūs neturi hideuser teisės, jūs negalite pamatyti arba pakeisti naudotojo blokavimo.',
 'ipbblocked' => 'Jūs negalite blokuoti ar atblokuoti kitų naudotojų, nes pats esate užblokuotas',
@@ -2673,7 +2637,6 @@ dėl to šį veiksmą vykdykite tik įsitikinę, kad suprantate visas pasekmes."
 Šiais atvejais jūs savo nuožiūra turite perkelti arba apjungti aptarimo puslapį.",
 'movearticle' => 'Pervardinti puslapį:',
 'moveuserpage-warning' => "'''Dėmesio:''' Jūs ruošiatės perkelti naudotojo puslapį. Atkreipkite dėmesį, kad bus perkeltas tik puslapis, naudotojas ''nebus'' pervadintas.",
-'movenologin' => 'Neprisijungęs',
 'movenologintext' => 'Norėdami pervadinti puslapį, turite būti užsiregistravęs naudotojas ir būti  [[Special:UserLogin|prisijungęs]].',
 'movenotallowed' => 'Jūs neturite teisių pervadinti puslapių.',
 'movenotallowedfile' => 'Jūs neturite teisės perkelti failus.',
@@ -2690,10 +2653,6 @@ dėl to šį veiksmą vykdykite tik įsitikinę, kad suprantate visas pasekmes."
 arba pasirinktas vardas yra neteisingas.
 Pasirinkite kitą pavadinimą.',
 'cantmove-titleprotected' => 'Jūs negalite pervadinti puslapio, nes naujasis pavadinimas buvo apsaugotas nuo sukūrimo',
-'talkexists' => "'''Pats puslapis buvo sėkmingai pervadintas, bet aptarimų puslapis nebuvo perkeltas, kadangi naujo
-pavadinimo puslapis jau turėjo aptarimų puslapį.
-Prašome sujungti šiuos puslapius.'''",
-'movedto' => 'pervardintas į',
 'movetalk' => 'Perkelti susijusį aptarimo puslapį.',
 'move-subpages' => 'Perkelti visus subpuslapius (baigiant $1)',
 'move-talk-subpages' => 'Perkelti visus aptarimo subpuslapius (iki $1)',
@@ -3051,7 +3010,7 @@ Jį paleidus jūsų sistema gali būti pažeista.",
 'svg-long-desc' => 'SVG failas, formaliai $1 × $2 taškų, failo dydis: $3',
 'svg-long-desc-animated' => 'Animuotas SVG failas, formaliai $1 × $2 pikselių, failo dydis: $3',
 'svg-long-error' => 'Neleistinas SVG failas: $1',
-'show-big-image' => 'Pilna raiška',
+'show-big-image' => 'Originalus failas',
 'show-big-image-preview' => 'Sumažintos iliustracijos dydis: $1 .',
 'show-big-image-other' => '{{PLURAL:$2|Kita rezoliucija|Kitos $2 rezoliucijos|Kitų $2 rezoliucijų}}: $1 .',
 'show-big-image-size' => '$1 × $2 taškų',
@@ -3517,15 +3476,10 @@ Visos kitos nuorodos toje pačioje eilutėje yra laikomos išimtimis, t. y. pusl
 'exif-urgency-high' => 'Aukštas ( $1 )',
 'exif-urgency-other' => 'Vartotojo nustatyta pirmenybė ($1)',
 
-# External editor support
-'edit-externally' => 'Atverti išoriniame redaktoriuje',
-'edit-externally-help' => '(Norėdami gauti daugiau informacijos, žiūrėkite [https://www.mediawiki.org/wiki/Manual:External_editors diegimo instrukcijas])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'visus',
 'namespacesall' => 'visos',
 'monthsall' => 'visi',
-'limitall' => 'visi',
 
 # Email address confirmation
 'confirmemail' => 'Patvirtinkite el. pašto adresą',
@@ -3545,7 +3499,6 @@ Pašto tarnyba atsakė: $1',
 'confirmemail_needlogin' => 'Jums reikia $1, kad patvirtintumėte savo el. pašto adresą.',
 'confirmemail_success' => 'Jūsų el. pašto adresas patvirtintas. Dabar galite prisijungti ir mėgautis projektu.',
 'confirmemail_loggedin' => 'Jūsų el. pašto adresas patvirtintas.',
-'confirmemail_error' => 'Patvirtinimo metu įvyko neatpažinta klaida.',
 'confirmemail_subject' => '{{SITENAME}} el. pašto adreso patvirtinimas',
 'confirmemail_body' => 'Kažkas, tikriausiai jūs IP adresu $1, užregistravo
 paskyrą „$2“ susietą su šiuo el. pašto adresu projekte {{SITENAME}}.
@@ -3791,7 +3744,6 @@ Jūs turėjote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public Licens
 
 # Special:ComparePages
 'comparepages' => 'Palyginti puslapius',
-'compare-selector' => 'Palyginti puslapio keitimus',
 'compare-page1' => 'Puslapis 1',
 'compare-page2' => 'Puslapis 2',
 'compare-rev1' => 'Pirma versija',
index 9640eee..9e2a931 100644 (file)
@@ -120,7 +120,6 @@ $messages = array(
 'qbedit' => 'Pataiseit',
 'qbpageoptions' => 'Ita puslopa',
 'qbmyoptions' => 'Munys puslopys',
-'qbspecialpages' => 'Specialuos puslopys',
 'faq' => 'BUV',
 'faqpage' => 'Project:BUV',
 
@@ -261,6 +260,7 @@ Par to var ziņuot [[Special:ListUsers/sysop|kaidam administratoram]], nūruodū
 'loginlanguagelabel' => 'Volūda: $1',
 
 # Change password dialog
+'changepassword' => 'Puormeit paroļu',
 'resetpass_text' => '<!-- Dalikt tekstu ite -->',
 'resetpass-submit-loggedin' => 'Puormeit paroļu',
 'resetpass-submit-cancel' => 'Atsaukt',
@@ -372,10 +372,6 @@ n = nasvareigs lobuojums.',
 # Search results
 'searchresults' => 'Mekliešonys rezultati',
 'searchresults-title' => 'Mekliešonys rezultati "$1"',
-'searchresulttext' => 'Lai dabuotu vaira informacejis par mekliešuonu {{grammar:akuzativs|{{SITENAME}}}}, vērtīs [[{{MediaWiki:Helppage}}|{{grammar:genitivs|{{SITENAME}}}} meklēšana]].',
-'searchsubtitle' => 'Pīprasejums: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|vysys lopys, kas suoknās ar "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vysys lopys, kuramuos ir saite iz "$1"]])',
-'searchsubtitleinvalid' => 'Pīprasejums: $1',
-'notitlematches' => 'Nav rezuļtata meklejūt lopys viersrokstā',
 'notextmatches' => 'Nav rezuļtatu meklejūt lopys tekstā',
 'prevn' => 'īprīškejuos {{PLURAL:$1|$1}}',
 'nextn' => 'nuokamuos {{PLURAL:$1|$1}}',
@@ -389,19 +385,15 @@ n = nasvareigs lobuojums.',
 'search-interwiki-default' => 'Rezuļtati nu $1',
 'search-interwiki-more' => '(vaira)',
 'searchall' => 'vysi',
-'nonefound' => "'''Pīzeime:''' bīži vin mekliešona ir naveiksmeiga, meklejūt plaši izplateitus vuordus, pīvadumam, \"kai\" voi \"ir\", deļ tam ka tī nateik īkļauti mekliešonys datu bazā, voi ari meklejūt vairuok par vīnu vuordu (deļ tam ka rezuļtatūs pasaruodeis tikai lopys, kuramuos ir visi meklietī vuordi). Vēļ, piec nūklusiejuma, puormeklej tikai dažys ''namespaces''. Lai meklētu vysuos, mekliešonys pīprasejumam prīškā juolīkn ''all:'', voi ari analogā veidā juonūruoda puormekliejamuo ''namespace''.",
-'powersearch' => 'Smolkuo mekliešona',
 'powersearch-legend' => 'Smolkuo mekliešona',
 'powersearch-ns' => 'Meklēt itamuos lopu grupuos:',
 'powersearch-redir' => 'Ruodeit puoradresacejis',
-'powersearch-field' => 'Meklēt',
 'powersearch-toggleall' => 'Vysi',
 'powersearch-togglenone' => 'Nikas',
 
 # Preferences page
 'preferences' => 'Īstatejumi',
 'mypreferences' => 'Muni īstatejumi',
-'changepassword' => 'Puormeit paroļu',
 'datedefault' => 'Piec nūklusiejuma',
 'prefs-datetime' => 'Data i laiks',
 'saveprefs' => 'Izglobuot',
@@ -462,7 +454,6 @@ n = nasvareigs lobuojums.',
 'recentchanges' => 'Nasenejis puormejis',
 'recentchanges-legend' => 'Pādejūs izmaiņu īspiejis',
 'recentchanges-feed-description' => 'Redzit jaunuokuos wiki izmainis ar itīm pādim.',
-'rcnote' => 'Tagad ir {{PLURAL:$1|radzama pādejuo <strong>$1</strong> izmaiņa, kas izdareita|redzamys pādejuos <strong>$1</strong> izmainis, kas izdareitys}} {{PLURAL:$2|pādejā|pādejuos}} <strong>$2</strong> {{PLURAL:$2|dīnā|dīnuos}} (da $4, $5).',
 'rclistfrom' => 'Paruodeit jaunys izmainis nu $1',
 'rcshowhideminor' => '$1 nasvareigūs',
 'rcshowhidebots' => '$1 robotprogramys',
@@ -695,7 +686,6 @@ Pašreizejī lopys '''$1''' īstatejumi ir:",
 # Block/unblock
 'blockip' => 'Nūblokēt lītuotuoju',
 'ipboptions' => '2 stuņdis:2 hours,1 dīna:1 day,3 dīnys:3 days,1 nedeļa:1 week,2 nedelis:2 weeks,1 mieness:1 month,3 mieneši:3 months,6 mieneši:6 months,1 gods:1 year,iz nanūsokamu laiku:infinite',
-'ipbotheroption' => 'cyts',
 'ipb-blocklist-contribs' => '$1 devīņs',
 'ipblocklist' => 'Nūblokēti lītuotuoji',
 'blocklink' => 'nūblokēt',
@@ -735,8 +725,6 @@ Ka gribiesi, tod tev itei sarunu lopa byus juopuolīk voi juoapvīnoj pošam.",
 'pagemovedsub' => 'Puorvītuošona nūtykuse veiksmeigai',
 'movepage-moved' => '\'\'\'"$1" tyka puorvītuots iz "$2"\'\'\'',
 'articleexists' => 'Lopa ar itaidu nūsaukumu jau ir voi ari tovs nūsaukums nav dereigs. Lyudzu, izavielejit cytu nūsaukumu.',
-'talkexists' => "'''Itei lopa tyka puorvītuota veiksmeigai, bet tuos sarunu lopu navarieja puorvītuot, deļ tuo ka jaunuo nūsaukuma lopai jau ir diskuseju lopa. Lyudzu apvīnoj ituos sarunu lopys pats.'''",
-'movedto' => 'puorvītuota iz',
 'movetalk' => 'Puorceļt sasītū sprīžu.',
 'movelogpage' => 'Puorvītuošonys registrs',
 'movesubpage' => '{{PLURAL:$1|Zampuslopa|Zampuslopys}}',
@@ -861,15 +849,10 @@ Puorejī lauki, piec nūklusiejuma, byus nūglobuoti.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Izmaineit itū failu ar uoreju programu',
-'edit-externally-help' => '(Verīs [https://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, kab dabuotu vaira informacejis).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'vysys',
 'namespacesall' => 'vysys',
 'monthsall' => 'vysi',
-'limitall' => 'vysys',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Apsavērt atbylstūšuos izmainis',
index a860c3b..6f7cf4f 100644 (file)
@@ -34,7 +34,6 @@ $messages = array(
 'tog-minordefault' => "Siamţhat tawh phawt chu 'tenau'-ah dah vek rawh",
 'tog-previewontop' => 'Siamţhatna bawm hmaah endikna dah rawh',
 'tog-previewonfirst' => 'Siamţhat vawi khatnaah endikna tilang rawh',
-'tog-nocache' => 'Fanna-in phêk a cache tur veng rawh',
 'tog-enotifwatchlistpages' => 'Ka ralvèn zinga phêk emaw taksa pakhat tihdanglam a nih apiangin e-lehkha min thawn rawh',
 'tog-enotifusertalkpages' => 'Ka hmangtu-sawihona phêk tihdanglam a nihin e-lehkha min thawn rawh',
 'tog-enotifminoredits' => 'Phêk leh taksa siamţhat tenauah pawh e-lehkha min thawn tho rawh',
@@ -130,7 +129,7 @@ $messages = array(
 'category-subcat-count' => '{{PLURAL:$2|He pawl hian he pawlpeng chauh hi a nei. |He pawl hian heng  {{PLURAL:$1|pawlpéng|pawlpéng $1-te}} hi a nei, avaia  $2  zingah.}}',
 'category-subcat-count-limited' => "He pawl hian  {{PLURAL:$1|hë pawlpéng chauh|$1 hê'ng pawlpéngte}} hi a nei.",
 'category-article-count' => "{{PLURAL:$2|He pawl hian hemi phêk chauh hi a nei. | Hê'ng phek {{PLURAL:$1||$1-te}} hi he pawlah hian a awm, avaia $2 zingah.}}",
-'category-article-count-limited' => '{{PLURAL: $1 |$1He|$1 Heng}} phekte hi hë pawl, i en mékah hian a awm.',
+'category-article-count-limited' => '{{PLURAL:$1 |$1He|$1 Heng}} phekte hi hë pawl, i en mékah hian a awm.',
 'category-file-count' => '{{PLURAL:$2|He pawl hian hë taksa chauh hi a kengtel.|{{PLURAL:$1|He taksa $1 |Heng taksa $1-te}} hi he pawlah hian a awm, a vaia $2 zingah}}',
 'category-file-count-limited' => '{{PLURAL:$1|He taksa|$1Heng taksate}} hi hemi pawl, i en mékah hian a awm.',
 'listingcontinuesabbrev' => 'chhunz.',
@@ -156,7 +155,6 @@ $messages = array(
 'qbedit' => 'Siamṭhatna',
 'qbpageoptions' => 'He phêk hi',
 'qbmyoptions' => 'Ka phêkte',
-'qbspecialpages' => 'Phêk vohbîkte',
 'faq' => 'Zawhzin',
 'faqpage' => 'Project: Zawhzin',
 
@@ -359,9 +357,6 @@ Tu emawin a nuaibo tawh a ni ang.',
 Phêk hminga hman theih loh hawrawp pahnih-khat a awm a ni mai thei bawk.',
 'querypage-no-updates' => 'He phêk tihdanglamna hi khàr hrih a ni.
 Heta châk (hmanrua) reng reng thlâk thar a ni hrih mai lo vang.',
-'wrong_wfQuery_params' => 'wfQuery()<br />-ah châkkhai dik lo a awm.
-Hnathawh: $1<br />
-Thil zawn: $2',
 'viewsource' => 'A hnar enna',
 'viewsource-title' => '$1 hnar en rawh',
 'actionthrottled' => 'Thiltih upbeh a ni.',
@@ -473,7 +468,7 @@ I tum leh hmain nghâk lawk ang che.',
 'user-mail-no-addy' => 'E-chenhmun awm lova e-lehkha thawn i tum.',
 
 # Change password dialog
-'resetpass' => 'Thurûk thlâkna',
+'changepassword' => 'Thurûk thlâkna',
 'resetpass_header' => 'Siangchan thurûk thlâkna',
 'oldpassword' => 'Thurûk hlui',
 'newpassword' => 'Thurûk thar:',
@@ -691,8 +686,6 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'revdelete-radio-unset' => 'Aih',
 'revdelete-log' => 'Chhan:',
 'revdel-restore' => 'lang chin tihdanglamna',
-'revdel-restore-deleted' => 'ennawnna nuaibo tawhte',
-'revdel-restore-visible' => 'ennawn hmuh theih chin',
 'pagehist' => 'Phêk chanchin',
 'deletedhist' => 'Chanchin nuaibo',
 'revdelete-reasonotherlist' => 'Chhan dang',
@@ -721,10 +714,8 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'nextn-title' => 'Zawnchhuah dawt leh $1 {{PLURAL:$1||}}',
 'shown-title' => 'Phek khatah zawnchhuah $1 {{PLURAL:$1||}} zel tilang rawh',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) en rawh',
-'searchmenu-legend' => 'Zawn duhthlanna',
 'searchmenu-exists' => "'''He wiki-ah hian \"[[:\$1]]\" tia koh phêk a awm.'''",
 'searchmenu-new' => "'''[[:$1]] phek hi he wiki-ah hian siam rawh le!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|He thuhmabet nei phêkte hi zawng rawh]]',
 'searchprofile-articles' => 'A chhunga thu awm',
 'searchprofile-project' => 'Ţanpuina leh hna-hmachhawp phekte',
 'searchprofile-images' => 'Maltimedia',
@@ -745,17 +736,14 @@ Lamtawi hmante: '''({{int:cur}})'''= ennawnna thar ber nena danglamna, '''({{int
 'search-interwiki-default' => 'Chhuak $1:',
 'search-interwiki-more' => '(tam)',
 'search-relatedarticle' => 'Laichin',
-'mwsuggest-disable' => 'AJAX rawtna tithi rawh',
 'searcheverything-enable' => 'Hminghmun zawng zawngah zawng rawh',
 'searchrelated' => 'laichin',
 'searchall' => 'a vaiin',
 'showingresultsheader' => "'''$4'''  tana {{PLURAL:$5|chhuak   '''$3'''  zinga  '''$1'''|chhuak  '''$3'''  zinga   '''$1 - $2'''  }}",
 'search-nonefound' => 'I zawn mil a awm lo',
-'powersearch' => 'Zawnna chi sang',
 'powersearch-legend' => 'Zawnna chi sang',
 'powersearch-ns' => 'Hemi hminghmun chhungah hian zawng rawh:',
 'powersearch-redir' => 'Thawnkual ngaiho',
-'powersearch-field' => 'Hei hi zawng rawh:',
 'powersearch-togglelabel' => 'Thai rawh:',
 'powersearch-toggleall' => 'A vaiin',
 'powersearch-togglenone' => 'Pakhat mah',
@@ -768,7 +756,6 @@ Google hmangin i lo zawng hrih thei ang.
 'preferences' => 'Duhdàn',
 'mypreferences' => 'Duhthlanna',
 'prefs-edits' => 'Siamţhat zât',
-'changepassword' => 'Thurûk thlâkna',
 'prefs-skin' => 'Vun',
 'skin-preview' => 'Enchhinna',
 'datedefault' => 'Duhdàn awm lo',
@@ -791,13 +778,11 @@ Google hmangin i lo zawng hrih thei ang.
 'prefs-email' => 'E-chenhmuh duhdàn',
 'prefs-rendering' => 'Landàn',
 'saveprefs' => 'Dahţhatna',
-'resetprefs' => 'Tihdanglamna dahţhat loh tifai rawh',
 'restoreprefs' => 'A awmdàn siamsaah dah lêt vek rawh',
 'prefs-editing' => 'Siamţhat',
 'rows' => 'Tlar:',
 'columns' => 'Thlur:',
 'searchresultshead' => 'Zawnna',
-'resultsperpage' => 'Phêk khat tawh zât:',
 'stub-threshold-disabled' => 'Tihnun a ni lo',
 'recentchangesdays' => 'Tihdanglam thar ni tihlan tùr chin:',
 'recentchangesdays-max' => 'A tam berah ni $1 {{PLURAL:$1||}}',
@@ -808,7 +793,6 @@ Google hmangin i lo zawng hrih thei ang.
 'localtime' => 'Tualchhung hun:',
 'timezoneuseserverdefault' => 'Wiki ($1) hi hmang rawh',
 'timezoneuseoffset' => 'A dang (sawi chiang la)',
-'timezoneoffset' => 'Darkar inthlauhna:',
 'servertime' => 'Server hun:',
 'guesstimezone' => 'Rangpuifanna aţang dahkhat rawh',
 'timezoneregion-africa' => 'Afrika',
@@ -987,7 +971,6 @@ Hmangtuten e-lehkha an thawn chein i e-chenhmun hrilh an ni chuang lo vang.',
 'recentchanges-label-minor' => 'Hei hi siamţhatna tenau a ni',
 'recentchanges-label-bot' => 'He siamţhat hi khawlmi tih a ni',
 'recentchanges-label-unpatrolled' => 'He siamţhat hi viltu la nei lo a ni',
-'rcnote' => "Ni $4, dar $5-a a landàna ni {{PLURAL:$2|khat|'''$2'''}} kaltaa tihdanglamna {{PLURAL:$1|'''1'''|thar ber ber '''$1'''}} a hnuaiah khuan kan rawn chhawp chhuak e.",
 'rcnotefrom' => "'''$2''' hnua tihdanglamna zawng zawng a hnuaiah khuan kan rawn tilang e ('''$1''' thleng chauh tihlan a ni).",
 'rclistfrom' => '$1 hnu lama tihdanglama tihlanna',
 'rcshowhideminor' => 'siamţhat tenau $1',
@@ -1272,7 +1255,6 @@ Taksa sawifiahna hi i siamṭha duh a nih chuan  [$2 taksa sawifiahna phêk] a
 'deadendpagestext' => 'A hnuaia phêkte hian {{SITENAME}}-a phêk dang pakhat mah zawmpui an nei lo.',
 'protectedpages' => 'Phêk vènhimte',
 'protectedpages-indef' => 'Phêk vènhim kumhlunho chauh',
-'protectedpagestext' => 'A hnuaia phêkte hi sawn emaw siam danglam theih loh tùra vènhim an ni',
 'protectedtitles' => 'Hming vènhimte',
 'listusers' => 'Hmangtu tlarna',
 'listusers-editsonly' => 'Siam danglam nei hmangtu chauh pholang rawh',
@@ -1312,9 +1294,6 @@ Taksa sawifiahna hi i siamṭha duh a nih chuan  [$2 taksa sawifiahna phêk] a
 'allpagesto' => 'Hemi chin thleng hian:',
 'allarticles' => 'Phek zawng zawngte',
 'allinnamespace' => 'Phêk zawng zawng (hminghmun $1-a mi)',
-'allnotinnamespace' => 'Phêk zawng zawng (hminghmun $1-a awm lo)',
-'allpagesprev' => 'Hma',
-'allpagesnext' => 'Dawt',
 'allpagessubmit' => 'Khai le',
 'allpagesprefix' => 'Hemi thuhmabeta neih zawng hi pholang rawh:',
 'allpagesbadtitle' => 'Phêk hming dik lo emaw ţawng dang/wiki dang thuhmabet a hmang palh a nih hmel.
@@ -1579,12 +1558,10 @@ $2-in a awmphung ngäiah a dahlêt leh.',
 
 # Block/unblock
 'blockip' => 'Hmangtu dangbet rawh',
-'blockip-title' => 'Hmangtu dangbet rawh',
 'blockip-legend' => 'Hmangtu dangbet rawh',
 'ipadressorusername' => 'Chenhmun-IP emaw hmangtuhming:',
 'ipbexpiry' => 'Tawphun:',
 'ipbreason' => 'Chhan:',
-'ipbreasonotherlist' => 'Chhan dang',
 'ipbsubmit' => 'Hmangtu dangbet rawh',
 'ipboptions' => 'darkar 2:2 hours, ni 1:1 day, ni 3:3 days, kar 1:1 week, kar 2:2 weeks, thla 1:1 month, thla 3:3 months, thla 6:6 months, kum 1:1 year, tiam chin awm lo:infinite',
 'ipb-blockingself' => 'Nangmah leh nangmah i indäl dáwn! I duh chiah maw?',
@@ -1614,7 +1591,6 @@ Phêk lar deuh tan chuan hei hi danglamna râpthlâk leh beisei loh tak i thlen
 phêk hming thlâkina a nghawng theih thilte i hrechiang tih infiah ang che.",
 'movearticle' => 'Phêk hming thlâk tùr:',
 'moveuserpage-warning' => "'''Vaukhanna:''' Hmangtu phêk i thlak dawn mek. A hmangtu phêk i thlak ringawt ang a, hmangtu hming erawh i thlâk dawn lo tih hria ang che.",
-'movenologin' => 'I la lût lo',
 'movenologintext' => 'Phêk hming thlâk tùrin  [[Special:UserLogin|i (inziah)luh]] a ngai.',
 'movenotallowed' => 'Phêk sawn phalna i nei lo.',
 'newtitle' => 'Hming thar:',
@@ -1852,10 +1828,6 @@ A bak zawng chu thuhrûk sa vek a ni ang.
 'exif-iimversion' => 'IIM chhuah',
 'exif-iimcategory' => 'Pawl',
 
-# External editor support
-'edit-externally' => 'Pawnlam hmanraw hmanga tihdanglamna',
-'edit-externally-help' => '(Hriat chian lehzualnan [https://www.mediawiki.org/wiki/Manual:External_editors bundàn kaihhruaina phek] hi en rawh)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'a vaiin',
 'namespacesall' => 'a vaiin',
index f3e2af9..0aa5a71 100644 (file)
@@ -75,7 +75,6 @@ $messages = array(
 'tog-minordefault' => 'Atzīmēt visus labojumus jau sākotnēji par maznozīmīgiem',
 'tog-previewontop' => 'Parādīt priekšskatījumu virs rediģēšanas lauka, nevis zem',
 'tog-previewonfirst' => 'Parādīt priekšskatījumu jau uzsākot rediģēšanu',
-'tog-nocache' => 'Atslēgt pārlūka lapu saglabāšanu kešatmiņā',
 'tog-enotifwatchlistpages' => 'Paziņot pa e-pastu par izmaiņām uzraugāmo rakstu sarakstā esošos rakstos un failos',
 'tog-enotifusertalkpages' => 'Paziņot pa e-pastu par izmaiņām manā diskusiju lapā',
 'tog-enotifminoredits' => 'Paziņot pa e-pastu arī par maznozīmīgiem labojumiem rakstos un failos',
@@ -83,7 +82,7 @@ $messages = array(
 'tog-shownumberswatching' => 'Rādīt uzraudzītāju skaitu',
 'tog-oldsig' => 'Pašreizējais paraksts:',
 'tog-fancysig' => 'Vienkāršs paraksts (bez automātiskās saites)',
-'tog-uselivepreview' => "Lietot tūlītējo priekšskatījumu (izmanto ''JavaScript''; eksperimentāla iespēja)",
+'tog-uselivepreview' => 'Lietot tūlītējo priekšskatījumu (eksperimentāla iespēja)',
 'tog-forceeditsummary' => 'Atgādināt man, ja kopsavilkuma ailīte ir tukša',
 'tog-watchlisthideown' => 'Paslēpt manus labojumus uzraugāmo lapu sarakstā',
 'tog-watchlisthidebots' => 'Paslēpt botu labojumus uzraugāmo lapu sarakstā',
@@ -210,7 +209,6 @@ $messages = array(
 'qbedit' => 'Izmainīšana',
 'qbpageoptions' => 'Šī lapa',
 'qbmyoptions' => 'Manas lapas',
-'qbspecialpages' => 'Īpašās lapas',
 'faq' => 'BUJ',
 'faqpage' => 'Project:BUJ',
 
@@ -324,8 +322,9 @@ $1',
 'ok' => 'Labi',
 'retrievedfrom' => 'Saturs iegūts no "$1"',
 'youhavenewmessages' => 'Tev ir $1 (skatīt $2).',
-'newmessageslinkplural' => '{{PLURAL:$1|jauns vēstījums|jauni vēstījumi}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|pēdējā izmaiņa|pēdējās izmaiņas}}',
+'youhavenewmessagesmanyusers' => 'Jums ir $1 no daudziem lietotājiem ($2).',
+'newmessageslinkplural' => '{{PLURAL:$1|jauns vēstījums|999=jauni vēstījumi}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|pēdējā izmaiņa|999=pēdējās izmaiņas}}',
 'youhavenewmessagesmulti' => 'Tev ir jauns ziņojums: $1',
 'editsection' => 'labot',
 'editold' => 'labot',
@@ -376,6 +375,8 @@ Derīgo īpašo lapu saraksts atrodas te: [[Special:SpecialPages|{{int:specialpa
 # General errors
 'error' => 'Kļūda',
 'databaseerror' => 'Datu bāzes kļūda',
+'databaseerror-text' => 'Datu bāzes vaicājuma kļūda.
+Iespējams, tā ir programmatūras kļūda.',
 'databaseerror-textcl' => 'Datu bāzes vaicājuma kļūda.',
 'databaseerror-query' => 'Vaicājums: $1',
 'databaseerror-function' => 'Funkcija: $1',
@@ -413,16 +414,14 @@ Par to varat ziņot [[Special:ListUsers/sysop|kādam administratoram]], norādot
 'perfcached' => 'Šie dati ir no servera kešatmiņas un var būt novecojuši. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => "Šie dati ir no servera kešatmiņas (''cache''), kas pēdējo reizi bija atjaunota $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Šīs lapas atjaunošana pagaidām ir atslēgta. Te esošie dati tuvākajā laikā netiks atjaunoti.',
-'wrong_wfQuery_params' => 'Nekorekti wfQuery() parametri<br />
-Funkcija: $1<br />
-Vaicājums: $2',
 'viewsource' => 'Aplūkot kodu',
 'viewsource-title' => 'Apskatīt $1 izejas kodu',
 'actionthrottled' => 'Darbība netika atļauta',
 'protectedpagetext' => 'Šī lapa ir aizsargāta, lai novērstu tās izmainīšanu vai citas darbības.',
 'viewsourcetext' => 'Tu vari apskatīties un nokopēt šīs lapas vikitekstu:',
-'protectedinterface' => 'Šī lapa satur programmatūras interfeisā lietotu tekstu un ir bloķēta pret izmaiņām, lai pasargātu no bojājumiem.',
-'editinginterface' => "'''Brīdinājums:''' Tu izmaini lapu, kuras saturu izmanto wiki programmatūras lietotāja saskarnē (''interfeisā''). Šīs lapas izmaiņas ietekmēs lietotāja saskarni citiem lietotājiem. Pēc modificēšanas, šīs izmaiņas būtu lietderīgi pievienot arī [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], kas ir MediaWiki lokalizēšanas projekts.",
+'protectedinterface' => "Šī lapa satur programmatūras interfeisā lietotu tekstu un ir bloķēta pret izmaiņām, lai pasargātu no bojājumiem.
+Lai pievienotu izmaiņas tulkojumā visās ''wiki'', lūdzam izmantot ''MediaWiki'' lokalizēšanas projektu [//translatewiki.net/ translatewiki.net].",
+'editinginterface' => "'''Brīdinājums:''' Tu izmaini lapu, kuras saturu izmanto wiki programmatūras lietotāja saskarnē (''interfeisā''). Šīs lapas izmaiņas ietekmēs lietotāja saskarni citiem lietotājiem. Pēc modificēšanas šīs izmaiņas būtu lietderīgi pievienot arī ''MediaWiki'' lokalizēšanas projektā [//translatewiki.net/ translatewiki.net].",
 'namespaceprotected' => "Tev nav atļaujas izmainīt lapas, kas atrodas '''$1''' ''namespacē''.",
 'customcssprotected' => 'Jums nav tiesību rediģēt šo CSS lapu, jo tā satur cita lietotāja personiskos iestatījumus.',
 'customjsprotected' => 'Jums nav tiesību rediģēt šo JavaScript lapu, jo tā satur cita lietotāja personiskos iestatījumus.',
@@ -519,7 +518,7 @@ Lūdzu, izvēlieties citu vārdu.',
 Tajā jābūt vismaz {{PLURAL:$1|1 zīmei|$1 zīmēm}}.',
 'password-name-match' => 'Tava parole nedrīkst būt tāda pati kā tavs lietotājvārds.',
 'password-login-forbidden' => 'Šī lietotājvārda un paroles izmantošana ir aizliegta.',
-'mailmypassword' => 'Atsūtīt man jaunu paroli',
+'mailmypassword' => 'Atiestatīt paroli',
 'passwordremindertitle' => 'Jauna pagaidu parole no {{SITENAME}}s',
 'passwordremindertext' => 'Kads (iespejams, Tu pats, no IP adreses $1)
 ludza, lai nosutam Tev jaunu {{SITENAME}} ($4) paroli.
@@ -558,7 +557,7 @@ Lūdzu, uzgaidiet $1 pirms mēģiniet vēlreiz.',
 'php-mail-error-unknown' => 'Nezināma kļūda PHP mail() funkcijā',
 
 # Change password dialog
-'resetpass' => 'Mainīt paroli',
+'changepassword' => 'Mainīt paroli',
 'resetpass_header' => 'Mainīt konta paroli',
 'oldpassword' => 'Vecā parole',
 'newpassword' => 'Jaunā parole',
@@ -802,6 +801,7 @@ Tā jau eksistē.',
 'content-not-allowed-here' => '"$1" saturs nav atļauts lapā [[$2]]',
 'editwarning-warning' => 'Atstājot šo lapu tu zaudēsi izdarītās izmaiņas. 
 Ja esi pieteicies, jūs vari atspējot šo brīdinājumu savās izvēlēs sadaļā "rediģēšana"',
+'editpage-notsupportedcontentformat-title' => 'Satura formāts nav atbalstīts',
 
 # Content models
 'content-model-wikitext' => 'vikiteksts',
@@ -881,22 +881,28 @@ Sīkāku informāciju var atrast [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'rev-suppressed-no-diff' => "Tu nevari aplūkot šīs izmaiņas, jo viena no versijām ir '''dzēsta'''.",
 'rev-delundel' => 'rādīt/slēpt',
 'rev-showdeleted' => 'parādīt',
-'revisiondelete' => 'Dzēst / atjaunot versijas',
+'revisiondelete' => 'Dzēst/atjaunot versijas',
 'revdelete-nooldid-title' => 'Nederīga mērķa versija',
-'revdelete-nologtype-title' => 'Nav dots reģistra veids.',
-'revdelete-nologid-title' => 'Nederīgs reģistra ieraksts',
 'revdelete-no-file' => 'Norādītais fails neeksistē.',
 'revdelete-show-file-submit' => 'Jā',
+'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|izvēlētā versija|izvēlētās versijas}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Izvēlētais reģistra ieraksts|Izvēlētie reģistra ieraksti}}:'''",
+'revdelete-text' => "'''Lapu hronoloģijā un reģistros izdzēstās versijas vēl joprojām būs redzamas, tomēr daļa informācijas nebūs pieejama publiski.''' Citi {{SITENAME}} administratori varēs apskatīt spēlto saturu un varēs to atslēpt, ja vien nav papildu ierobežojumi.",
+'revdelete-confirm' => 'Lūdzu apstiprini, ka Tu zini, ko dari, Tu apzinies sekas, tāpat Tu to dari saskaņā ar vadlīnijām.',
+'revdelete-suppress-text' => "Paslēpšanu izmantot vienīgi šādos gadījumos:
+* potenciāli apmelojoša informācija
+* nepiemērotā personīgā informācija
+*: ''mājas adrese, telefona numuri u.c.''",
 'revdelete-legend' => 'Uzstādīt redzamības ierobežojumus',
-'revdelete-hide-text' => 'Paslēpt versijas tekstu',
+'revdelete-hide-text' => 'Versijas teksts',
 'revdelete-hide-image' => 'Paslēpt faila saturu',
 'revdelete-hide-name' => 'Paslēpt darbību un tās objektu',
-'revdelete-hide-comment' => 'Paslēpt kopsavilkumu',
-'revdelete-hide-user' => 'Paslēpt autora lietotājvārdu/IP adresi',
+'revdelete-hide-comment' => 'Kopsavilkums',
+'revdelete-hide-user' => 'Autora lietotājvārds/IP adrese',
 'revdelete-hide-restricted' => 'Paslēpt datus arī no administratoriem',
 'revdelete-radio-same' => '(nemainīt)',
-'revdelete-radio-set' => '',
-'revdelete-radio-unset' => '',
+'revdelete-radio-set' => 'Slēpts',
+'revdelete-radio-unset' => 'Redzams',
 'revdelete-suppress' => 'Paslēpt datus arī no administratoriem',
 'revdelete-unsuppress' => 'Atcelt ierobežojumus atjaunotajām versijām',
 'revdelete-log' => 'Iemesls:',
@@ -908,14 +914,13 @@ $1",
 'logdelete-failure' => "'''Reģistra redzamību nevar uzstādīt:'''
 $1",
 'revdel-restore' => 'mainīt redzamību',
-'revdel-restore-deleted' => 'dzēstās versijas',
-'revdel-restore-visible' => 'redzamās versijas',
 'pagehist' => 'Lapas vēsture',
-'deletedhist' => 'Vēsture dzēsta',
+'deletedhist' => 'Dzēstā vēsture',
 'revdelete-modify-missing' => 'Kļūda, mainot vienumu ar ID $1: tas ir pazudis no datubāzes!',
 'revdelete-reason-dropdown' => '*Biežākie dzēšanas iemesli
 ** autortiesību pārkāpums
 ** nepiemērota personīgā informācija
+** nepiemērots lietotāja vārds
 ** potenciāli apmelojoša informācija',
 'revdelete-otherreason' => 'Cits/papildu iemesls:',
 'revdelete-reasonotherlist' => 'Cits iemesls',
@@ -961,12 +966,8 @@ $1",
 # Search results
 'searchresults' => 'Meklēšanas rezultāti',
 'searchresults-title' => 'Meklēšanas rezultāti "$1"',
-'searchresulttext' => 'Lai iegūtu vairāk informācijas par meklēšanu {{grammar:akuzatīvs|{{SITENAME}}}}, skat. [[{{MediaWiki:Helppage}}|{{grammar:ģenitīvs|{{SITENAME}}}} meklēšana]].',
-'searchsubtitle' => 'Pieprasījums: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|visas lapas, kas sākas ar "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|visas lapas, kurās ir saite uz "$1"]])',
-'searchsubtitleinvalid' => 'Pieprasījums: $1',
 'toomanymatches' => 'Tika atgriezti poārāk daudzi rezultāti, lūdzu pamēģini citādāku pieprasījumu',
 'titlematches' => 'Rezultāti virsrakstos',
-'notitlematches' => 'Neviena rezultāta, meklējot lapas virsrakstā',
 'textmatches' => 'Rezultāti lapu tekstos',
 'notextmatches' => 'Neviena rezultāta, meklējot lapas tekstā',
 'prevn' => 'iepriekšējās {{PLURAL:$1|$1}}',
@@ -975,7 +976,6 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Nākošais|INākošie}} $1 {{PLURAL:$1|rezultāts|rezultāti}}',
 'shown-title' => 'Parādīt $1 {{PLURAL:$1|rezultātu|rezultātus}} vienā lapā',
 'viewprevnext' => 'Skatīt ($1 {{int:pipe-separator}} $2) ($3 vienā lapā).',
-'searchmenu-legend' => 'Meklēšanas iespējas',
 'searchmenu-exists' => "'''Šajā projektā ir raksts ar nosaukumu \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Izveido rakstu \"[[:\$1]]\" šajā projektā!'''",
 'searchprofile-articles' => 'Rakstos',
@@ -998,20 +998,16 @@ $1",
 'search-interwiki-default' => 'Rezultāti no $1:',
 'search-interwiki-more' => '(vairāk)',
 'search-relatedarticle' => 'Saistītais',
-'mwsuggest-disable' => 'Atslēgt meklēšanas ieteikumus',
 'searcheverything-enable' => 'Meklēt visās nosaukumvietās',
 'searchrelated' => 'saistītais',
 'searchall' => 'viss',
 'showingresults' => "Šobrīd ir {{PLURAL:$1|redzama|redzamas}} '''$1''' {{PLURAL:$1|lapa|lapas}}, sākot ar #'''$2'''.",
 'showingresultsnum' => "Šobrīd ir {{PLURAL:$3|redzama|redzamas}} '''$3''' {{PLURAL:$3|lapa|lapas}}, sākot ar #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Šobrīd ir redzama '''$1''' lapa no '''$3'''|Šobrīd ir redzamas '''$1 — $2''' lapas no '''$3'''}}, kas satur '''$4'''",
-'nonefound' => "'''Piezīme:''' bieži vien meklēšana ir neveiksmīga, meklējot plaši izplatītus vārdus, piemēram, \"un\" vai \"ir\", jo tie netiek iekļauti meklēšanas datubāzē, vai arī meklējot vairāk par vienu vārdu (jo rezultātos parādīsies tikai lapas, kurās ir visi meklētie vārdi). Vēl, pēc noklusējuma, pārmeklē tikai dažas ''namespaces''. Lai meklētu visās, meklēšanas pieprasījumam priekšā jāieliek ''all:'', vai arī analogā veidā jānorāda pārmeklējamo ''namespaci''.",
 'search-nonefound' => 'Nav atrasti pieprasījumam atbilstoši rezultāti.',
-'powersearch' => 'Izvērstā meklēšana',
 'powersearch-legend' => 'Izvērstā meklēšana',
 'powersearch-ns' => 'Meklēt šajās lapu grupās:',
 'powersearch-redir' => 'Parādīt pāradresācijas',
-'powersearch-field' => 'Meklēt',
 'powersearch-togglelabel' => 'Pārbaudīt:',
 'powersearch-toggleall' => 'Viss',
 'powersearch-togglenone' => 'Neviena',
@@ -1024,7 +1020,6 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
 'preferences' => 'Izvēles',
 'mypreferences' => 'Izvēles',
 'prefs-edits' => 'Izmaiņu skaits:',
-'changepassword' => 'Mainīt paroli',
 'prefs-skin' => 'Apdare',
 'skin-preview' => 'Priekšskats',
 'datedefault' => 'Vienalga',
@@ -1047,13 +1042,11 @@ Pagaidām vari meklēt, izmantojot Google vai Yahoo.
 'prefs-email' => 'E-pasta uzstādījumi',
 'prefs-rendering' => 'Izskats',
 'saveprefs' => 'Saglabāt',
-'resetprefs' => 'Atcelt nesaglabātās izmaiņas',
-'restoreprefs' => 'Atjaunot noklusētos uzstādījumus',
+'restoreprefs' => 'Atjaunot noklusētos uzstādījumus (visās sadaļās)',
 'prefs-editing' => 'Rediģēšana',
 'rows' => 'Rindiņu skaits:',
 'columns' => 'Simbolu skaits rindiņā:',
 'searchresultshead' => 'Meklēšana',
-'resultsperpage' => 'Lappusē parādāmo rezultātu skaits',
 'stub-threshold' => 'Slieksnis <a href="#" class="stub">aizmetņa saites</a> formatēšanai (baiti):',
 'stub-threshold-disabled' => 'Atslēgts',
 'recentchangesdays' => 'Dienu skaits, kuru rādīt pēdējās izmaiņās:',
@@ -1068,7 +1061,6 @@ Ikvienam, kas to zinās, būs iespēja apskatīt tavu uzraugāmo lapu sarakstu,
 'localtime' => 'Vietējais laiks:',
 'timezoneuseserverdefault' => 'Lietot viki noklusēto ($1)',
 'timezoneuseoffset' => 'Cita (norādi starpību)',
-'timezoneoffset' => 'Starpība¹:',
 'servertime' => 'Servera laiks šobrīd:',
 'guesstimezone' => 'Izmantot datora sistēmas laiku',
 'timezoneregion-africa' => 'Āfrika',
@@ -1292,13 +1284,14 @@ Ja tu izvēlies to norādīt, tas tiks izmantots, lai identificētu tavu darbu (
 'recentchanges-label-minor' => 'Šī ir maznozīmīga izmaiņa',
 'recentchanges-label-bot' => 'Šī ir bota veikta izmaiņa',
 'recentchanges-label-unpatrolled' => 'Šis labojums vēl nav pārbaudīts',
-'recentchanges-legend-newpage' => '$1 - jauna lapa',
-'rcnote' => 'Šobrīd ir {{PLURAL:$1|redzama pēdējā <strong>$1</strong> izmaiņa, kas izdarīta|redzamas pēdējās <strong>$1</strong> izmaiņas, kas izdarītas}} {{PLURAL:$2|pēdējā|pēdējās}} <strong>$2</strong> {{PLURAL:$2|dienā|dienās}} (līdz $4, $5).',
+'recentchanges-label-plusminus' => 'Par tik baitiem tika izmainīts lapas izmērs',
+'recentchanges-legend-heading' => "'''Apzīmējumi:'''",
+'recentchanges-legend-newpage' => '(skatīt arī [[Special:NewPages|jaunās lapas]])',
 'rcnotefrom' => "Šobrīd redzamas izmaiņas kopš '''$2''' (parādītas ne vairāk par '''$1''').",
 'rclistfrom' => 'Parādīt jaunas izmaiņas kopš $1',
 'rcshowhideminor' => '$1 maznozīmīgos',
 'rcshowhidebots' => '$1 botus',
-'rcshowhideliu' => '$1 reģistrētos',
+'rcshowhideliu' => '$1 reģistrēti lietotāji',
 'rcshowhideanons' => '$1 anonīmos',
 'rcshowhidepatr' => '$1 pārbaudītie labojumi',
 'rcshowhidemine' => '$1 manus',
@@ -1707,8 +1700,8 @@ Katrā rindiņā ir saites uz pirmo un otro pāradresācijas lapu, kā arī pirm
 'protectedpages' => 'Aizsargātās lapas',
 'protectedpages-indef' => 'Tikai bezgalīgas aizsardzības',
 'protectedpages-cascade' => 'Tikai kaskādes aizsardzības',
+'protectedpages-noredirect' => 'Paslēpt pāradresācijas',
 'protectedtitles' => 'Aizsargātie nosaukumi',
-'protectedtitlestext' => 'Lapas ar šādiem nosaukumiem ir aizsargātas pret lapas izveidošanu',
 'protectedtitlesempty' => 'Pagaidām nevienas lapas nosaukums nav aizsargāts ar šiem paraametriem.',
 'listusers' => 'Lietotāju uzskaitījums',
 'listusers-editsonly' => 'Rādīt tikai lietotājus, kas ir izdarījuši kādas izmaiņas',
@@ -1752,9 +1745,6 @@ Tu vari sašaurināt aplūkojamo reģistru, izvēloties reģistra veidu, lietot
 'allpagesto' => 'Parādīt lapas līdz:',
 'allarticles' => 'Visi raksti',
 'allinnamespace' => 'Visas lapas ($1 vārdtelpa)',
-'allnotinnamespace' => 'Visas lapas (nav $1 vārdtelpa)',
-'allpagesprev' => 'Iepriekšējās',
-'allpagesnext' => 'Nākamās',
 'allpagessubmit' => 'Aiziet!',
 'allpagesprefix' => 'Parādīt lapas ar šādu virsraksta sākumu:',
 'allpages-bad-ns' => '{{SITENAME}} nav vārdkopas "$1".',
@@ -1949,6 +1939,7 @@ Papildinformācija:
 'delete-edit-reasonlist' => 'Izmainīt dzēšanas iemeslus',
 'delete-toobig' => 'Šai lapai ir liela izmaiņu hronoloģija, vairāk nekā $1 {{PLURAL:$1|versija|versijas}}.
 Šādu lapu dzēšana ir atslēgta, lai novērstu nejaušus traucējumus {{grammar:lokatīvs|{{SITENAME}}}}.',
+'deleting-backlinks-warning' => "'''Brīdinājums:''' uz lapu, ko grasies izdzēst, ved saites no citām lapām.",
 
 # Rollback
 'rollback' => 'Novērst labojumus',
@@ -1958,14 +1949,14 @@ Papildinformācija:
 'rollbacklinkcount-morethan' => 'atcelt vairāk kā $1 {{PLURAL:$1|labojumu|labojumus}}',
 'rollbackfailed' => 'Novēršana neizdevās',
 'cantrollback' => 'Nav iespējams novērst labojumu; iepriekšējais labotājs ir vienīgais lapas autors.',
-'alreadyrolled' => 'Nav iespējams novērst pēdējās izmaiņas, ko lapā [[:$1]] saglabāja [[User:$2|$2]] ([[User talk:$2|Diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]). Kāds cits jau ir rediģējis šo lapu vai novērsis izmaiņas.
+'alreadyrolled' => 'Nav iespējams novērst pēdējās izmaiņas, ko lapā [[:$1]] saglabāja [[User:$2|$2]] ([[User talk:$2|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]). Kāds cits jau ir rediģējis šo lapu vai novērsis izmaiņas.
 
 Pēdējās izmaiņas saglabāja [[User:$3|$3]] ([[User talk:$3|diskusija]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Attiecīgās izmaiņas kopsavilkums bija: \"''\$1''\".",
 'revertpage' => 'Novērsu izmaiņas, ko izdarīja [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskusija]]), atjaunoju versiju, ko saglabāja [[User:$1|$1]]',
 'revertpage-nouser' => 'Novērsu (lietotājvārds slēpts) izmaiņas, atjaunoju [[User:$1|$1]] versiju.',
-'rollback-success' => 'Tika novērstas $1 izdarītās izmaiņas;
-un tika atjaunota iepriekšējā versija, kuru bija izveidojis $2.',
+'rollback-success' => 'Novērsu izmaiņas, ko izdarīja $1;
+atjaunoju versiju, ko saglabāja $2.',
 
 # Edit tokens
 'sessionfailure-title' => 'sesijas kļūda',
@@ -2055,7 +2046,6 @@ Vai nu tu šeit esi nonācis lietojot kļūdainu saiti, vai arī šī versija ja
 'undeletebtn' => 'Atjaunot!',
 'undeletelink' => 'apskatīt/atjaunot',
 'undeleteviewlink' => 'skatīt',
-'undeletereset' => 'Notīrīt',
 'undeleteinvert' => 'Izvēlēties pretēji',
 'undeletecomment' => 'Iemesls:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|versija|versijas}} {{PLURAL:$1|atjaunota|atjaunotas}}',
@@ -2098,7 +2088,7 @@ $1',
 'sp-contributions-newbies' => 'Rādīt jauno lietotāju devumu',
 'sp-contributions-newbies-sub' => 'Jaunie lietotāji',
 'sp-contributions-blocklog' => 'Bloķēšanas reģistrs',
-'sp-contributions-deleted' => 'Izdzēstais lietotāju devums',
+'sp-contributions-deleted' => 'Izdzēstais lietotāja devums',
 'sp-contributions-uploads' => 'augšupielādes',
 'sp-contributions-logs' => 'reģistri',
 'sp-contributions-talk' => 'diskusija',
@@ -2136,14 +2126,12 @@ Pēdējais bloķēšanas reģistra ieraksts ir apskatāms zemāk:',
 'block' => 'Bloķēt lietotāju',
 'unblock' => 'Atbloķēt lietotāju',
 'blockip' => 'Bloķēt lietotāju',
-'blockip-title' => 'Bloķēt lietotāju',
 'blockip-legend' => 'Bloķēt lietotāju',
 'blockiptext' => 'Šo veidni izmanto, lai bloķētu kādas IP adreses vai lietotājvārda piekļuvi wiki lapu saglabāšanai. Dari to tikai, lai novērstu vandālismu atbilstoši [[{{MediaWiki:Policy-url}}|noteikumiem]].
 Norādi konkrētu iemeslu (piemēram, linkus uz vandalizētajām lapām).',
 'ipadressorusername' => 'IP adrese vai lietotājvārds',
 'ipbexpiry' => 'Termiņš',
 'ipbreason' => 'Iemesls:',
-'ipbreasonotherlist' => 'Cits iemesls',
 'ipbreason-dropdown' => '*Biežākie bloķēšanas iemesli
 ** Ievieto nepatiesu informāciju
 ** Dzēš lapu saturu
@@ -2158,8 +2146,6 @@ Norādi konkrētu iemeslu (piemēram, linkus uz vandalizētajām lapām).',
 'ipbsubmit' => 'Bloķēt šo lietotāju',
 'ipbother' => 'Cits laiks',
 'ipboptions' => '2 stundas:2 hours,1 diena:1 day,3 dienas:3 days,1 nedēļa:1 week,2 nedēļas:2 weeks,1 mēnesis:1 month,3 mēneši:3 months,6 mēneši:6 months,1 gads:1 year,uz nenoteiktu laiku:infinite',
-'ipbotheroption' => 'cits',
-'ipbotherreason' => 'Cits/papildu iemesls:',
 'ipbhidename' => "Slēpt lietot'javārdu no labojumiem un sarakstiem",
 'ipbwatchuser' => 'Uzraudzīt šī lietotāja lapu un lietotāja diskusijas lapu',
 'ipb-change-block' => 'Pārbloķēt ar šiem uzstādījumiem',
@@ -2236,7 +2222,6 @@ Tas, iespējams, jau ir atbloķēts.',
 Tā ir bloķēta kā daļa no IP adrešu diapazona $2, kuru var atbloķēt.',
 'ip_range_invalid' => 'Nederīgs IP diapazons',
 'proxyblocker' => 'Starpniekservera bloķētājs',
-'cant-block-while-blocked' => 'Tu nevari bloķēt citus lietotājus, kamēr pats esi bloķēts.',
 'ipbblocked' => 'Tu nevar bloķēt vai atbloķēt lietotājus, jo Tu pats esi bloķēts',
 'ipbnounblockself' => 'Tev nav atļauts sevi atbloķēt',
 
@@ -2274,7 +2259,6 @@ pirms turpināšanas vēlreiz pārdomā, vai tu izproti visas iespējamās sekas
 
 Ja tomēr vēlēsies, tad tev šī diskusiju lapa būs jāpārvieto vai jāapvieno pašam.",
 'movearticle' => 'Pārvietot lapu',
-'movenologin' => 'Neesi iegājis kā reģistrēts lietotājs',
 'movenologintext' => 'Tev ir jābūt reģistrētam lietotājam un jābūt [[Special:UserLogin|iegājušam]] {{grammar:lokatīvs|{{SITENAME}}}}, lai pārvietotu lapu.',
 'movenotallowed' => 'Tev nav atļaujas pārvietot lapas.',
 'movenotallowedfile' => 'Tev nav atļaujas pārvietot failus.',
@@ -2286,10 +2270,9 @@ Ja tomēr vēlēsies, tad tev šī diskusiju lapa būs jāpārvieto vai jāapvie
 'pagemovedsub' => 'Pārvietošana notikusi veiksmīgi',
 'movepage-moved' => '\'\'\'"$1" tika pārvietots uz "$2"\'\'\'',
 'movepage-moved-redirect' => 'Tika izveidota pāradresācija.',
+'movepage-moved-noredirect' => 'Netika izveidota pāradresācija.',
 'articleexists' => 'Lapa ar tādu nosaukumu jau pastāv vai arī tevis izvēlētais nosaukums ir nederīgs. Lūdzu, izvēlies citu nosaukumu.',
 'cantmove-titleprotected' => 'Tu nevari pārvietot lapu uz šo nosaukumu, tāpēc, ka jaunais nosaukums (lapa) ir aizsargāta pret izveidošanu',
-'talkexists' => "'''Šī lapa pati tika pārvietota veiksmīgi, bet tās diskusiju lapu nevarēja pārvietot, tapēc, ka jaunā nosaukuma lapai jau ir diskusiju lapa. Lūdzu apvieno šīs diskusiju lapas manuāli.'''",
-'movedto' => 'pārvietota uz',
 'movetalk' => 'Pārvietot arī diskusiju lapu, ja tāda ir.',
 'move-subpages' => 'Pārvietot apakšlapas (līdz $1 gab.)',
 'move-talk-subpages' => 'Pārvietot diskusiju lapas apakšlapas (līdz $1 gab.)',
@@ -2431,9 +2414,9 @@ Lūdzu, mēģiniet vēlreiz.',
 'tooltip-pt-anonuserpage' => 'Manas IP adreses lietotāja lapa',
 'tooltip-pt-mytalk' => 'Tava diskusiju lapa',
 'tooltip-pt-anontalk' => 'Diskusija par labojumiem, kas izdarīti no šīs IP adreses',
-'tooltip-pt-preferences' => 'Mani uzstādījumi',
-'tooltip-pt-watchlist' => 'Manis uzraudzītās lapas.',
-'tooltip-pt-mycontris' => 'Tavi ieguldījumi',
+'tooltip-pt-preferences' => 'Tavas izvēles',
+'tooltip-pt-watchlist' => 'Tevis uzraudzītās lapas',
+'tooltip-pt-mycontris' => 'Tavs devums',
 'tooltip-pt-login' => 'Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.',
 'tooltip-pt-anonlogin' => 'Aicinām tevi ieiet {{grammar:lokatīvs|{{SITENAME}}}}, tomēr tas nav obligāti.',
 'tooltip-pt-logout' => 'Iziet',
@@ -2584,7 +2567,7 @@ $1',
 'file-nohires' => 'Augstāka izšķirtspēja nav pieejama.',
 'svg-long-desc' => 'SVG fails, definētais izmērs $1 × $2 pikseļi, faila izmērs: $3',
 'svg-long-error' => 'Nederīgs SVG fails: $1',
-'show-big-image' => 'Pilnā izmērā',
+'show-big-image' => 'Sākotnējais fails',
 'show-big-image-preview' => 'Šī priekšskata izmērs: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Cits izmērs|Citi izmēri}}: $1.',
 'show-big-image-size' => '$1 × $2 pikseļi',
@@ -2931,15 +2914,10 @@ Pārējie lauki, pēc noklusējuma, būs paslēpti.
 'exif-urgency-high' => 'Augsta ($1)',
 'exif-urgency-other' => 'Lietotāja definēta prioritāte ($1)',
 
-# External editor support
-'edit-externally' => 'Izmainīt šo failu ar ārēju programmu',
-'edit-externally-help' => '(Skat. [https://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, lai iegūtu vairāk informācijas).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'visas',
 'namespacesall' => 'visas',
 'monthsall' => 'visi',
-'limitall' => 'visas',
 
 # Email address confirmation
 'confirmemail' => 'Apstiprini e-pasta adresi',
@@ -2962,7 +2940,6 @@ Nosūtīšanas programma atmeta atpakaļ: $1',
 'confirmemail_success' => 'Tava e-pasta adrese ir apstiprināta.
 Tagad vari [[Special:UserLogin|doties iekšā]] ar savu lietotājvārdu un pilnvērtīgi izmantot wiki iespējas.',
 'confirmemail_loggedin' => 'Tava e-pasta adrese tagad ir apstiprināta.',
-'confirmemail_error' => 'Notikusi kāda kļūme ar tava apstiprinājuma saglabāšanu.',
 'confirmemail_subject' => 'E-pasta adreses apstiprinajums no {{grammar:ģenitīvs|{{SITENAME}}}}',
 'confirmemail_body' => 'Kads, iespejams, tu pats, no IP adreses $1 ir registrejis {{grammar:ģenitīvs|{{SITENAME}}}} lietotaja vardu "$2" ar so e-pasta adresi.
 
@@ -3075,7 +3052,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 'version-hooks' => 'Aizķeres',
 'version-hook-name' => 'Aizķeres nosaukums',
 'version-version' => '(Versija $1)',
-'version-license' => 'Licence',
+'version-license' => 'MediaWiki licence',
 'version-poweredby-credits' => "Šis viki darbojas ar '''[https://www.mediawiki.org/ MediaWiki]''' programmatūru, autortiesības © 2001-$1 $2.",
 'version-poweredby-others' => 'citi',
 'version-poweredby-translators' => 'translatewiki.net tulkotāji',
@@ -3103,6 +3080,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # Special:SpecialPages
 'specialpages' => 'Īpašās lapas',
+'specialpages-note-top' => 'Apzīmējumi',
 'specialpages-note' => '* Normālas īpašās lapas.
 * <span class="mw-specialpagerestricted">Ierobežotas pieejas īpašās lapas.</span>
 * <span class="mw-specialpagecached">Iekešotās īpašās lapas.</span>',
@@ -3142,7 +3120,6 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # Special:ComparePages
 'comparepages' => 'Salīdzināt lapas',
-'compare-selector' => 'Salīdzināt lapu versijas',
 'compare-page1' => '1. lapa',
 'compare-page2' => '2. lapa',
 'compare-rev1' => '1. versija',
@@ -3237,7 +3214,7 @@ Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
 
 # Limit report
 'limitreport-title' => 'Parsētāja profilēšanas dati:',
-'limitreport-postexpandincludesize-value' => '$1/$2 baiti',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|baits|baiti}}',
 'limitreport-templateargumentsize' => 'Veidnes argumenta izmērs',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|baits|baiti}}',
 
index e7eaf7b..2dce02c 100644 (file)
@@ -15,6 +15,7 @@
  * @author Simon Shek
  * @author StephDC
  * @author Super Wang
+ * @author Xiaomingyan
  * @author Yanteng3
  */
 
@@ -34,7 +35,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '增簿' ),
        'Deadendpages'              => array( '此無路也' ),
        'DeletedContributions'      => array( '已刪之積' ),
-       'Disambiguations'           => array( '釋義' ),
        'DoubleRedirects'           => array( '窮渡' ),
        'EditWatchlist'             => array( '治哨站' ),
        'Emailuser'                 => array( '遺書' ),
@@ -172,7 +172,6 @@ $messages = array(
 'tog-minordefault' => '慣為校',
 'tog-previewontop' => '頂草覽',
 'tog-previewonfirst' => '覽首修',
-'tog-nocache' => '莫謄文',
 'tog-enotifwatchlistpages' => '哨新,遣函',
 'tog-enotifusertalkpages' => '議新,遣函',
 'tog-enotifminoredits' => '校新,遣函',
@@ -307,7 +306,6 @@ $messages = array(
 'qbedit' => '纂',
 'qbpageoptions' => '此頁',
 'qbmyoptions' => '吾好',
-'qbspecialpages' => '非凡',
 'faq' => '頻答問',
 'faqpage' => 'Project:頻答問',
 
@@ -505,9 +503,6 @@ $1',
 'badtitletext' => '或別、或缺、或違、或他山謬鏈,此題不存也。',
 'perfcached' => '下為謄本,恐不新也。 A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => '下為謄本,$1新之。 A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
-'wrong_wfQuery_params' => 'wfQuery()參數謬然<br />
-函式: $1<br />
-問語: $2',
 'viewsource' => '覽源',
 'viewsource-title' => '查$1之案',
 'actionthrottled' => '無為',
@@ -649,7 +644,7 @@ $2',
 'user-mail-no-body' => '試遞一空或過短郵',
 
 # Change password dialog
-'resetpass' => '變符',
+'changepassword' => '易符節',
 'resetpass_announce' => '爾乃過郵之臨符登之。要完登,汝乃需設新符節:',
 'resetpass_text' => '<!-- 加字 -->',
 'resetpass_header' => '改簿符',
@@ -924,10 +919,6 @@ $2',
 'revisiondelete' => '刪、還審',
 'revdelete-nooldid-title' => '無此審。',
 'revdelete-nooldid-text' => '審未擇,審未存,爾隱現審,不可為之。',
-'revdelete-nologtype-title' => '無誌類',
-'revdelete-nologtype-text' => '爾未定誌類以為之。',
-'revdelete-nologid-title' => '無效之誌項',
-'revdelete-nologid-text' => '爾未定標誌項以為之或其無存也。',
 'revdelete-no-file' => '指之檔無存也。',
 'revdelete-show-file-confirm' => '爾察於$2 $3刪「$1」檔之審?',
 'revdelete-show-file-submit' => '善',
@@ -958,8 +949,6 @@ $1",
 'logdelete-failure' => "'''見事無設也:'''
 $1",
 'revdel-restore' => '動見之',
-'revdel-restore-deleted' => '已刪之審',
-'revdel-restore-visible' => '可見之審',
 'pagehist' => '頁史',
 'deletedhist' => '刪史',
 'revdelete-hide-current' => '錯藏於$1 $2項:現之審也,無藏之。',
@@ -1030,12 +1019,8 @@ $1",
 # 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}}',
@@ -1044,10 +1029,8 @@ $1",
 'nextn-title' => '後$1之尋',
 'shown-title' => '每頁示 $1',
 'viewprevnext' => '見($1 {{int:pipe-separator}} $2)($3)',
-'searchmenu-legend' => '尋選',
 'searchmenu-exists' => "'''在此wiki中有頁為\"[[:\$1]]\"。'''",
 'searchmenu-new' => "'''在此wiki上建頁\"[[:\$1]]\"!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|查此首之頁]]',
 'searchprofile-articles' => '容',
 'searchprofile-project' => '助題',
 'searchprofile-images' => '媒',
@@ -1068,20 +1051,16 @@ $1",
 'search-interwiki-default' => '結果有$1:',
 'search-interwiki-more' => '(多)',
 'search-relatedarticle' => '關',
-'mwsuggest-disable' => '停AJAX議',
 'searcheverything-enable' => '尋全名集',
 'searchrelated' => '關',
 'searchall' => '全',
 'showingresults' => "見'''$1'''尋,自'''$2'''始:",
 'showingresultsnum' => "見'''$3'''尋,自'''$2'''始:",
 'showingresultsheader' => "見'''$4''',{{PLURAL:$5|'''$1''''''$3'''之尋|'''$1 - $2''',共'''$3'''之尋}}",
-'nonefound' => "'''注''':部名冊預尋也。。試''all:''尋全名刪之頁(含議模等),或可用要之名冊為前綴也。",
 'search-nonefound' => '詢中無結。',
-'powersearch' => '尋',
 'powersearch-legend' => '尋',
 'powersearch-ns' => '尋名集:',
 'powersearch-redir' => '轉表',
-'powersearch-field' => '尋',
 'powersearch-togglelabel' => '核:',
 'powersearch-toggleall' => '全',
 'powersearch-togglenone' => '無',
@@ -1092,7 +1071,6 @@ $1",
 'preferences' => '簿註',
 'mypreferences' => '簿註',
 'prefs-edits' => '數計:',
-'changepassword' => '易符節',
 'prefs-skin' => '面版',
 'skin-preview' => '草覽',
 'datedefault' => '原註',
@@ -1110,13 +1088,11 @@ $1",
 'prefs-email' => '傳書',
 'prefs-rendering' => '觀',
 'saveprefs' => '儲',
-'resetprefs' => '棄',
 'restoreprefs' => '重修',
 'prefs-editing' => '在修',
-'rows' => '行:',
-'columns' => '列:',
+'rows' => '行:',
+'columns' => '列:',
 'searchresultshead' => '尋',
-'resultsperpage' => '頁示尋',
 'stub-threshold' => '<a href="#" class="stub">短頁連</a>格式門檻(位元組):',
 'stub-threshold-disabled' => '禁',
 'recentchangesdays' => '近易示日:',
@@ -1128,7 +1104,6 @@ $1",
 'localtime' => '本地時:',
 'timezoneuseserverdefault' => '用伺服器之預定',
 'timezoneuseoffset' => '它(定偏)',
-'timezoneoffset' => '偏¹:',
 'servertime' => '伺服器時:',
 'guesstimezone' => '瀏覽器填之',
 'timezoneregion-africa' => '非洲',
@@ -1357,7 +1332,6 @@ $1",
 'recentchanges-label-bot' => '此乃機纂',
 'recentchanges-label-unpatrolled' => '是纂未巡',
 'recentchanges-legend-newpage' => '$1 - 新頁',
-'rcnote' => "下為自$4$5起,'''$2'''日內'''$1'''近易也。",
 'rcnotefrom' => "下為自'''$2'''至'''$1'''之易也。",
 'rclistfrom' => '自$1起之易也',
 'rcshowhideminor' => '$1校',
@@ -1770,9 +1744,6 @@ $1',
 'allpagesto' => '末頁:',
 'allarticles' => '全典',
 'allinnamespace' => '全$1名冊',
-'allnotinnamespace' => '非$1名冊',
-'allpagesprev' => '前',
-'allpagesnext' => '次',
 'allpagessubmit' => '往',
 'allpagesprefix' => '冠頁以:',
 'allpagesbadtitle' => '或冠有他語、他山、或含禁字,題標不格。',
@@ -2047,7 +2018,6 @@ $NEWPAGE
 'undeletebtn' => '還',
 'undeletelink' => '察焉,以定還否',
 'undeleteviewlink' => '察',
-'undeletereset' => '歸白',
 'undeleteinvert' => '反相',
 'undeletecomment' => '因:',
 'undeletedrevisions' => '$1審已還',
@@ -2126,13 +2096,11 @@ $1',
 
 # Block/unblock
 'blockip' => '禁簿',
-'blockip-title' => '禁簿',
 'blockip-legend' => '禁簿',
 'blockiptext' => '函下禁纂,簿、址明判;[[{{MediaWiki:Policy-url}}|秉據]]如斯,立法克亂。指罪證行,了冤無憾。',
 'ipadressorusername' => 'IP或簿名',
 'ipbexpiry' => '限期',
 'ipbreason' => '指證',
-'ipbreasonotherlist' => '常犯',
 'ipbreason-dropdown' => '*如下道:
 ** 造假報
 ** 毀文貌
@@ -2147,8 +2115,6 @@ $1',
 'ipbsubmit' => '禁簿',
 'ipbother' => '別期',
 'ipboptions' => '二時:2 hours,一日:1 day,三日:3 days,一週:1 week,二週:2 weeks,一月:1 month,三月:3 months,六月:6 months,一年:1 year,永如:infinite',
-'ipbotheroption' => '它',
-'ipbotherreason' => '補證、加證曰',
 'ipbhidename' => '簿名隱乎纂與表',
 'ipbwatchuser' => '哨該簿之齋與議',
 'ipb-change-block' => '用此設重禁此簿',
@@ -2210,7 +2176,6 @@ $1',
 'ip_range_invalid' => 'IP址圍不格',
 'ip_range_toolarge' => '大於 /$1 之禁段乃無容也。',
 'proxyblocker' => '禁Proxy',
-'cant-block-while-blocked' => '爾然被禁,勿施於人。',
 'cant-see-hidden-user' => '簿禁或藏矣。
 爾無藏之權,無視纂禁也。',
 'ipbblocked' => '爾無鎖或鎖他簿,因你自封也',
@@ -2250,7 +2215,6 @@ $1',
 膾炙遷焉,禍生不測;戒慎行之。",
 'movearticle' => '遷文:',
 'moveuserpage-warning' => "'''警:'''爾將遷頁齋。注之遷齋後之簿名乃為''無''變也。",
-'movenologin' => '未登簿',
 'movenologintext' => '遷文須[[Special:UserLogin|登簿]]。',
 'movenotallowed' => '無准遷檔也。',
 'cant-move-user-page' => '無動自齋(除字頁)。',
@@ -2264,8 +2228,6 @@ $1',
 'movepage-moved-noredirect' => '建渡已押。',
 'articleexists' => '此題早存,或名謬焉;請更之。',
 'cantmove-titleprotected' => '爾不可動頁至此,因新題已緘焉,防建之。',
-'talkexists' => "'''文遷成而議未移,蓋早存也;請併之。'''",
-'movedto' => '遷至',
 'movetalk' => '議並遷',
 'move-subpages' => '遷議(上至$1)',
 'move-talk-subpages' => '遷子議(上至$1)',
@@ -2632,15 +2594,10 @@ $1',
 'exif-gpsdestdistance-m' => '哩',
 'exif-gpsdestdistance-n' => '浬',
 
-# External editor support
-'edit-externally' => '以外部程式修此文',
-'edit-externally-help' => '(請閱[https://www.mediawiki.org/wiki/Manual:External_editors 安裝指引]以知詳情)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全',
 'namespacesall' => '全',
 'monthsall' => '全',
-'limitall' => '全',
 
 # Email address confirmation
 'confirmemail' => '核郵驛',
@@ -2845,7 +2802,6 @@ MediaWiki乃為用之發,無擔之責也;亦無售目之默擔也。參GNU
 
 # Special:ComparePages
 'comparepages' => '較頁',
-'compare-selector' => '較頁之審',
 'compare-page1' => '頁一',
 'compare-page2' => '頁二',
 'compare-rev1' => '審一',
index 264a1bb..737ea88 100644 (file)
@@ -147,7 +147,6 @@ $messages = array(
 'qbedit' => 'Doktiri',
 'qbpageoptions' => 'Am sayfa',
 'qbmyoptions' => 'Çkimi sayfape',
-'qbspecialpages' => 'Doxmeli sayfape',
 
 # Vector skin
 'vector-action-delete' => 'Jili',
@@ -191,7 +190,7 @@ $messages = array(
 'jumptonavigation' => 'ixmari',
 'jumptosearch' => 'mgori',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} şeni',
 'aboutpage' => 'Project:Ambarepe',
 'copyright' => 'Doloxe na renanpe, $1-şi ren.',
@@ -199,7 +198,6 @@ $messages = array(
 'disclaimers' => 'Kʼabuli na var ixvenu ondepe',
 'disclaimerpage' => 'Project:Mtelot kʼabuli na var ixvenu ondepe',
 'edithelp' => 'Muçʼoşi iktirinen?',
-'edithelppage' => 'Help:Butʼkʼa muçʼoşi iktirinen?',
 'helppage' => 'Help:Doloxe na renanpe',
 'mainpage' => 'Dudi Butʼkʼa',
 'mainpage-description' => "Dudi But'k'a",
@@ -211,8 +209,6 @@ $messages = array(
 'ok' => 'HO',
 'retrievedfrom' => '"$1" adresişen eizdinu',
 'youhavenewmessages' => 'Ağani $1 giğun. ($2)',
-'newmessageslink' => 'ağani mesajepe',
-'newmessagesdifflink' => 'çodinaşi oktiroba',
 'youhavenewmessagesmulti' => "$1's ağne mesajepe giğun",
 'editsection' => 'doktiri',
 'editold' => 'Doktiri',
@@ -353,10 +349,6 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
 # Search results
 'searchresults' => 'Ogoru sonucepe',
 'searchresults-title' => '"$1" şeni ogoru sonucepe',
-'searchresulttext' => '{{SITENAME}}-iş doloxe ogoru temas, mutxanepe oguru şeni [[{{MediaWiki:Helppage}}|{{int:help}}]] coxoni butʼkʼas o3ʼkʼedit.',
-'searchsubtitle' => 'Si \'\'\'[[:$1]]\'\'\' şeni gori. ([[Special:Prefixindex/$1|"$1" kʼala na gyoçʼkʼaps mtel butʼkʼape]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"\' butʼkʼa muşişa kʼontʼaktʼi na ikips mtel butʼkʼape]])',
-'searchsubtitleinvalid' => "'''$1''' şeni mgori",
-'notitlematches' => 'Çkar svas var iz*irinu',
 'notextmatches' => 'Çkar butʼkʼa var iz*irinu',
 'prevn' => 'ukʼuni {{PLURAL:$1|$1}}',
 'nextn' => 'mendi {{PLURAL:$1|$1}}',
@@ -369,13 +361,9 @@ Oxo3ʼonapape: (a3ʼineri) = a3ʼineri versiyoni kʼala na ren farkʼi,
 'search-interwiki-default' => '$1 sonucepe:',
 'search-interwiki-more' => '(çkva)',
 'searchall' => 'mteli',
-'nonefound' => "'''Notʼi''': Xvala, namtini svacoxope maartani oqʼopinot igoren.
-Ogoruşi dudis '''all:''' pʼrefiksi okʼatute doloçʼareli na ren iri şeyi (oğarğaluşi butʼkʼape, şablonepe, doçkva şeyepeti iqʼvasen) mgori varna pʼrefiksi oqʼopinot na igoren svacoxo ixmarit.",
-'powersearch' => 'Mordineri ogoru',
 'powersearch-legend' => 'Mordineri ogoru',
 'powersearch-ns' => 'Svacoxo-s mgori:',
 'powersearch-redir' => 'Redirektʼepe ilistʼeli',
-'powersearch-field' => 'Mgori:',
 
 # Preferences page
 'preferences' => 'Tercihepe',
@@ -651,8 +639,6 @@ Am situa3yonepes, butʼkʼa skanişkʼelen otiruşi ren.",
 'movepage-moved' => '\'\'\'"$1",  "$2" butʼkʼa muşişa itirinu\'\'\'',
 'articleexists' => 'Am coxos ar butʼkʼa koren varna na çʼari coxo mtini va ren.
 Mu iqʼven başka coxo doçʼari.',
-'talkexists' => "'''Butʼkʼa dido kʼai itirinu, mara oğarğaluşi butʼkʼa var itirinu çunki na itirinasen coxos zate ar butʼkʼa rtʼu. Mu iqʼven butʼkʼaşi doloçʼareli nç'arape majurani butʼkʼaşa ti-skani kʼala itirini.'''",
-'movedto' => 'itirinu:',
 'movetalk' => 'Korenna, "oğarğaluşi" butʼkʼa muşiti mendiği.',
 'movelogpage' => 'Coxo oktirobaşi kʼayitʼepe',
 'movereason' => 'Muşen:',
@@ -759,10 +745,6 @@ Ukʼaçxe na mulunan kʼontʼaktʼepe istʼisna oqʼopinot kʼabuli ixvenen. Mes
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Dosyas, kʼompʼuteris na renan pʼrogramepe kʼala oktirobape doqʼvi.',
-'edit-externally-help' => '(Dido çkina şeni metʼas na renan [//www.mediawiki.org/wiki/Manual:External_editors galeni xvenaş tercihepe] (İngilisuri) butʼkʼa muşis o3ʼkʼedit)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'mteli',
 'namespacesall' => 'mteli',
index 50aeb3f..84664d9 100644 (file)
@@ -50,7 +50,6 @@ $messages = array(
 'tog-minordefault' => 'हमर सभ सम्पादन पूर्वन्यस्त रूपेँ मामूली कहू',
 'tog-previewontop' => 'संपादन पेटीक ऊपर दृश्य देखाऊ',
 'tog-previewonfirst' => 'पहिल सम्पादनक बाद पूर्वावलोकन देखाउ',
-'tog-nocache' => 'गवेषक पृष्ठ उपस्मृति अशक्त करू',
 'tog-enotifwatchlistpages' => 'जौं हमर ध्यानसूचीक कोनो पन्नामे परिवर्तन हुअए तँ हमरा ई-पत्र पठाउ',
 'tog-enotifusertalkpages' => 'हमर सदस्य वार्ता पृष्ठ पर भेल परिवर्त्तनक हेतु हमरा ई-मेल करथि',
 'tog-enotifminoredits' => 'छोट परिवर्त्तनक हेतु सेहो हमरा ई-मेल पठाऊ',
@@ -170,7 +169,6 @@ $messages = array(
 'qbedit' => 'सम्पादन करू',
 'qbpageoptions' => 'ई पन्ना',
 'qbmyoptions' => 'हमर पन्ना सभ',
-'qbspecialpages' => 'विशेष पन्ना सभ',
 'faq' => 'त्वरित प्रश्नोत्तरी',
 'faqpage' => 'Project: त्वरित प्रश्नोत्तरी',
 
@@ -372,9 +370,6 @@ $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 />
-क्रिया : $1<br />
-अभ्यर्थना: $2',
 'viewsource' => 'जड़ि देखू',
 'viewsource-title' => '"$1" लेल जड़ि देखू',
 'actionthrottled' => 'क्रियाकेँ मोकल गेल',
@@ -500,7 +495,7 @@ $2',
 'user-mail-no-addy' => 'बिन ई-पत्र संकेतक ई-पत्र पठेबाक प्रयास',
 
 # Change password dialog
-'resetpass' => 'कूटशब्द बदलू',
+'changepassword' => 'कूटशब्द बदलू',
 'resetpass_announce' => 'अहाँ अस्थायी ई-पत्र विध्यादेशसँ सम्प्रवेश केने छी।
 सम्प्रवेश सम्पूर्ण करबा लेल, अहाँ एकटा नव कूटशब्द एतए निर्धारित करू:',
 'resetpass_text' => '<!-- पाठ एतऽ लिखू -->',
@@ -846,10 +841,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'revisiondelete' => 'मेटाउ / संशोधन फेरसँ आनू',
 'revdelete-nooldid-title' => 'अमान्य लक्ष्य संशोधन',
 'revdelete-nooldid-text' => 'अहाँ चाहे तँ ऐ प्रकार्यक निष्पादन लेल कोनो विशेष लक्ष्य संशोधन (संशोधन सभ) नै तँए-तफसिला केने छी, विशेष संशोधन नै उपस्थित अछि, वा अहाँ वर्तमान संशोधनकेँ नुकेबाक प्रयास कऽ रहल छी।',
-'revdelete-nologtype-title' => 'कोनो वृत्तलेख प्रकार नै देल गेल',
-'revdelete-nologtype-text' => 'ऐ प्रकार्यकेँ सम्पन्न करबा लेल अहाँ कोनो विशिष्ट वृत्तलेख प्रकार नै देने छी।',
-'revdelete-nologid-title' => 'अमान्य वृत्तलेख प्रविष्टि',
-'revdelete-nologid-text' => 'अहाँ ऐ प्रकार्यकेँ करबा लेल चाहे तँ कोनो लक्ष्य वृत्तलेख घटनाक उल्लेख नै केने छी वा ओ विशिष्ट प्रविष्टि अछिये नै।',
 'revdelete-no-file' => 'विषिष्ट संचिका अछिये नै।',
 'revdelete-show-file-confirm' => 'की अहाँ आश्वस्त छी जे अहाँ संचिकाक मेटाएल संशोधन देखऽ चाहै छी "<nowiki>$1</nowiki>" ऐ सँ $2 एतऽ $3?',
 'revdelete-show-file-submit' => 'हँ',
@@ -881,8 +872,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'logdelete-success' => "'''वृत्तलेख दृश्यता सफलतासँ निर्धारित भेल।'''",
 'logdelete-failure' => "'''वृत्तलेख दृश्यता निर्धारित नै भऽ सकल।'''$1",
 'revdel-restore' => 'दृष्टिकुशलता बदलू',
-'revdel-restore-deleted' => 'मेटाएल संशोधन सभ',
-'revdel-restore-visible' => 'देखाइ दैत संशोधन सभ',
 'pagehist' => 'पन्नाक इतिहास',
 'deletedhist' => 'मेटाएल इतिहास',
 'revdelete-hide-current' => 'तिथि $2, $1 क अनुक्रमकेँ नुकेबा काल भ्रम: ई वर्तमान संशोधन छी।
@@ -955,12 +944,8 @@ $3 द्वारा देल कारण अछि ''$2''",
 # Search results
 'searchresults' => 'तकबाक फलाफल',
 'searchresults-title' => 'तकबाक फलाफल "$1" लेल',
-'searchresulttext' => 'तकबा लेल विशेष सूचना {{अन्तर्जालक नाम}}, देखू [[{{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}}',
@@ -969,10 +954,8 @@ $3 द्वारा देल कारण अछि ''$2''",
 'nextn-title' => 'आगाँ $1 {{PLURAL:$1|परिणाम|परिणाम सभ}}',
 'shown-title' => 'प्रति पन्ना $1 {{PLURAL:$1|परिणाम|परिणाम सभ}} देखाउ',
 'viewprevnext' => 'देखू  ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "'''ऐ विकीपर एकटा पन्ना अछि \"[[:\$1]]\" नामसँ।'''",
 'searchmenu-new' => "''' पन्ना निर्माण \"[[:\$1]]\" ऐ विकीपर !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ऐ उपसर्गक पन्ना सभकेँ देखू]]',
 'searchprofile-articles' => 'अनुक्रम पन्ना सभ',
 'searchprofile-project' => 'सहायता आ परियोजना पन्ना सभ',
 'searchprofile-images' => 'दृश्य-श्रव्य',
@@ -993,21 +976,16 @@ $3 द्वारा देल कारण अछि ''$2''",
 'search-interwiki-default' => '$1 सभटा परिणाम:',
 'search-interwiki-more' => '(आर)',
 'search-relatedarticle' => 'सम्बन्धी',
-'mwsuggest-disable' => 'AJAX सलाह अमान्य करू',
 'searcheverything-enable' => 'सभ नामस्थान सभमे ताकू',
 'searchrelated' => 'सम्बन्धी',
 'searchall' => 'सभटा',
 'showingresults' => "नीचाँ एतऽ धरि {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम सभ}}  #'''$2''' सँ प्रारम्भ भऽ कऽ।",
 'showingresultsnum' => "नीचाँ देखबै छी {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम सभ}}  #'''$2'''सँ प्रारम्भ भऽ कऽ।",
 'showingresultsheader' => "{{PLURAL:$5|परिणाम '''$1''' एकर '''$3'''|परिणाम सभ '''$1 - $2''' एकर '''$3'''}} ऐ लेल '''$4'''",
-'nonefound' => "'''टिप्पणी''': मातर किछुए निर्धारक मूलभूत रूपेँ ताकल जाइए।
-सभ सामिग्रीमे (माने मंतव्य पन्ना, नमूना, इत्यादि) तकबाले अपन उत्कंठामे उपसर्ग ''all:'' लगाउ , नै तँ इच्छित निर्धारककेँ उपसर्ग सन प्रयुक्त करू।",
 'search-nonefound' => 'अभ्यर्थनासँ मेल खाइत कोनो परिणाम नै भेटल।',
-'powersearch' => 'त्वरित खोज',
 'powersearch-legend' => 'विशेष खोज',
 'powersearch-ns' => 'निर्धारकमे खोज',
 'powersearch-redir' => 'रस्ता बदलेनक सूची',
-'powersearch-field' => 'ऐ लेल ताकू',
 'powersearch-togglelabel' => 'जाँचू:',
 'powersearch-toggleall' => 'सभटा',
 'powersearch-togglenone' => 'कोनो नै',
@@ -1020,7 +998,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'preferences' => 'विकल्प',
 'mypreferences' => 'खासमखास',
 'prefs-edits' => 'सम्पादनक संख्या',
-'changepassword' => 'कूटशब्द बदलू',
 'prefs-skin' => 'रूप',
 'skin-preview' => 'पूर्वावलोकन',
 'datedefault' => 'कोनो मोनपसंद नै',
@@ -1042,13 +1019,11 @@ $3 द्वारा देल कारण अछि ''$2''",
 'prefs-email' => 'ई-पत्र चुनाव',
 'prefs-rendering' => 'मुँहकान',
 'saveprefs' => 'सुरक्षित करू',
-'resetprefs' => 'बिन सुरक्षितकेँ हटाउ',
 'restoreprefs' => 'सभटा पूर्वनिर्धारित चयनकेँ फेरसँ आनू',
 'prefs-editing' => 'सम्पादन कऽ रहल छी',
 'rows' => 'पाँती सभ',
 'columns' => 'स्तम्भ सभ',
 'searchresultshead' => 'ताकू',
-'resultsperpage' => 'एक पन्ना एतेक बेर देखल गेल:',
 'stub-threshold' => 'सीमा <a href="#" class="stub">काटल लागि</a> सँचियाएल (अष्टक):',
 'stub-threshold-disabled' => 'अशक्त कएल',
 'recentchangesdays' => 'आइ-काल्हिक परिवर्तनमे कतेक दिन देखाएल गेल:',
@@ -1060,7 +1035,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'localtime' => 'स्थानीय समए:',
 'timezoneuseserverdefault' => 'पूर्वनिर्धारित वितरक प्रयुक्त करू ($1)',
 'timezoneuseoffset' => 'आन (संतुलन केनिहारक निर्देश करू)',
-'timezoneoffset' => 'संतुलन घटक¹:',
 'servertime' => 'वितरक समए:',
 'guesstimezone' => 'गवेषकक प्रयोग कऽ भरू',
 'timezoneregion-africa' => 'अफ्रीका',
@@ -1297,7 +1271,6 @@ $3 द्वारा देल कारण अछि ''$2''",
 'recentchanges-label-minor' => 'ई एकटा लघु सम्पादन छी',
 'recentchanges-label-bot' => 'ई सम्पादन यांत्रिक छल।',
 'recentchanges-label-unpatrolled' => 'ऐ सम्पादनक पुनरीक्षण अखन धरि नै कएल गेल अछि।',
-'rcnote' => "$5, $4 तक पहिलुका {{PLURAL:$2|'''१''' दिन|'''$2''' दिन}}मे  {{PLURAL:$1|भेल '''१''' अंतिम परिवर्तन एना अछि| भेल '''$1''' परिवर्तन एना अछि}}।",
 'rcnotefrom' => "नीचाँमे '''$2''' सँ भेल परिवर्तन अछि ('''$1''' धरि देखाएल)।",
 'rclistfrom' => '$1 सँ शुरू भेल नव परिवर्तन देखू',
 'rcshowhideminor' => '$1 अल्प संपादन',
@@ -1722,10 +1695,8 @@ $1',
 'protectedpages' => 'संरक्षित पन्ना सभ',
 'protectedpages-indef' => 'अनन्तकालिक सुरक्षा मात्र',
 'protectedpages-cascade' => 'तराउपड़ी सुरक्षा मात्र',
-'protectedpagestext' => 'ई पन्ना सभ घसकएबा वा सम्पादन लेल प्रतिबन्धित अछि।',
 'protectedpagesempty' => 'कोनो पन्ना ऐ सभ परिमिति लेल सुरक्षित नै राखल गेल अछि।',
 'protectedtitles' => 'संरक्षित शीर्षक सभ',
-'protectedtitlestext' => 'ई शीर्षक सभ बनबासँ प्रतिबन्धित अछि',
 'protectedtitlesempty' => 'कोनो पन्ना ऐ सभ परिमिति लेल सुरक्षित नै राखल गेल अछि।',
 'listusers' => 'प्रयोक्ता सूची',
 'listusers-editsonly' => 'सम्पादन करैबला प्रयोक्ताकेँ मात्र देखाउ',
@@ -1776,9 +1747,6 @@ $1',
 'allpagesto' => 'एतऽ खतम होमएबला पन्नाक प्रदर्शन करू:',
 'allarticles' => 'सभटा पन्ना',
 'allinnamespace' => 'सभटा पन्ना ($1 नामगाम)',
-'allnotinnamespace' => 'सभटा पन्ना ($1 नामगाममे नै)',
-'allpagesprev' => 'पहिलुका',
-'allpagesnext' => 'आगाँ',
 'allpagessubmit' => 'जाउ',
 'allpagesprefix' => 'उपसर्गक संग दृश्य पन्ना सभ:',
 'allpagesbadtitle' => 'देल पन्नाक शीर्षक गलत, गलत सम्बन्धित अन्तर-भाषा अन्तर विकी शीर्षक छी। ई एक वा बेशी कलाकार युक्त भऽ सकैए जे शीर्षकमे प्रयुक्त नै कएल जा सकैए।',
@@ -2097,7 +2065,6 @@ $2 केर संपादित आखिरी अवतरण क पुन
 'undeletebtn' => 'घुराउ',
 'undeletelink' => 'देखू/ पहिने जकाँ',
 'undeleteviewlink' => 'देखू',
-'undeletereset' => 'फेरसँ शुरू करू',
 'undeleteinvert' => 'उनटा चयन',
 'undeletecomment' => 'कारण:',
 'undeletedrevisions' => '{{PLURAL:$1|1 revision|$1 revisions}} घुराएल',
@@ -2185,7 +2152,6 @@ $1',
 'block' => 'प्रयोक्ताकेँ प्रतिबन्धित करू',
 'unblock' => 'प्रयोक्ताकेँ प्रतिबन्धसँ हटाउ',
 'blockip' => 'प्रयोक्ताकेँ प्रतिबन्धित करू',
-'blockip-title' => 'प्रयोक्ताकेँ प्रतिबन्धित करू',
 'blockip-legend' => 'प्रयोक्ताकेँ प्रतिबन्धित करू',
 'blockiptext' => 'नीचाँक आवेदनक प्रयोग कोनो खास अनिकेत वा प्रयोक्तानामक लिखैक प्रवेशकेँ प्रतिबन्धित करबा लेल करू।
 ई अतत्तः करैबलाक विरुद्ध प्रयुक्त हुअए, आ एकर अनुसार [[{{MediaWiki:Policy-url}}|policy]]।
@@ -2193,7 +2159,6 @@ $1',
 'ipadressorusername' => 'अनिकेत संकेत वा प्रयोक्तानाम:',
 'ipbexpiry' => 'खतम हएत:',
 'ipbreason' => 'कारण:',
-'ipbreasonotherlist' => 'दोसर कारण',
 'ipbreason-dropdown' => '*सामान्य प्रतिबन्ध कारण
 ** गलत सूचना घुसेनाइ
 ** पन्ना सभसँ पाठ हटेनाइ
@@ -2209,8 +2174,6 @@ $1',
 'ipbsubmit' => 'ऐ प्रयोक्ताकेँ रोकू',
 'ipbother' => 'दोसर समए:',
 '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',
-'ipbotheroption' => 'आन',
-'ipbotherreason' => 'दोसर/ अतिरिक्त कारण:',
 'ipbhidename' => 'प्रयोक्तानामकेँ सम्पादन आ सूचीसँ हटाउ',
 'ipbwatchuser' => 'ऐ प्रयोक्ताक अपन आ वार्ता पन्नापर नजरि राखू',
 'ipb-disableusertalk' => 'ऐ प्रयोक्ताकेँ प्रतिबन्ध अवधिमे अपन वार्ता पन्नाक सम्पादनसँ रोकू।',
@@ -2301,7 +2264,6 @@ $1 एकर प्रतिबन्धक कारण अछि : "$2"',
 अहाँ अपन अन्तर्जाल सेवा दाता वा तकनीकी सहायकसँ सम्पर्क करू आ ऐ गम्भीर सुरक्षा समस्याक सूचना दिअ।',
 'sorbsreason' => 'अहाँक अनिकेत सूचित अछि सोझे-सोझ दोसराइतक रूपमे {{जालस्थल}} क डी.एन.एस.बी.एल.मे।',
 'sorbs_create_account_reason' => 'अहाँक अनिकेत एतए सूचित अछि खुजल दोसराइत सन डी.एन.बी.एस.एल. मे जे प्रयोग कएल जाइए {{अन्तर्जाल}} द्वारा।',
-'cant-block-while-blocked' => 'अहाँ जाधरि स्वयं प्रतिबन्धित छी दोसराकेँ प्रतिबन्धित नै कऽ सकै छी।',
 'cant-see-hidden-user' => 'जै प्रयोक्ताकेँ अहाँ प्रतिबन्धित करऽ चाहै छी से पहिनहियेसँ प्रतिबन्धित आ अदृश्य अछि।
 कारण अहाँ लग प्रयोक्ताकेँ अदृश्य करबाक अधिकार नै अछि, अहाँ प्रयोक्ताक प्रतिबन्धकेँ देख वा सम्पादित नै कऽ सकै छी।',
 'ipbblocked' => 'अहाँ दोसर प्रयोक्ताकेँ प्रतिबन्धित वा अप्रतिबन्धित नै कऽ सकै छी, कारण अहाँ स्वयं प्रतिबन्धित छी',
@@ -2365,7 +2327,6 @@ $1 एकर प्रतिबन्धक कारण अछि : "$2"',
 ताइ परिस्थितिमे, अहाँकेँ अपनेसँ पन्नाकेँ, आवश्यकतानुसार, घसकाबऽ वा मिज्झर करऽ पड़त।",
 'movearticle' => 'पन्ना घसकाउ:',
 'moveuserpage-warning' => "'''चेतौनी!'''अहाँ एकटा प्रयोक्ता पन्ना घसका रहल छी | मोन राखू कि खाली पन्ना घसकत आ प्रयोक्ताक नाम ''नै'' बदलत ।",
-'movenologin' => 'सम्प्रवेशित नै छी',
 'movenologintext' => 'अहाँकेँ पंजीकृत प्रयोक्ता हेबाक चाही आ [[Special:UserLogin|logged in]] पन्ना घसकेबा लेल।',
 'movenotallowed' => 'अहाँकेँ पन्ना घसकेबाक अधिकार नै अछि।',
 'movenotallowedfile' => 'अहाँकेँ संचिका सभकेँ घसकेबाक अधिकार नै अछि।',
@@ -2381,9 +2342,6 @@ $1 एकर प्रतिबन्धक कारण अछि : "$2"',
 'articleexists' => 'ओइ नामक एकटा पन्ना पहिनहियेसँ अछि, वा जे नाम अहाँ चयन केने छी से वांछित नै अछि। 
 कृपा कऽ दोसर नामक चयन करू।',
 'cantmove-titleprotected' => 'नब शीर्षक बनाबै  सें रोकहि के कारण, अहां अहि ठाम पर कोनो आन पृष्ठक ठाम बदलि नहि सकब.',
-'talkexists' => "'''ई पन्ना स्वयं घसकाएल गेल, मुदा चौबटिया पन्ना नै घसकाओल जा सकल कारण नव शीर्षकपर एकटा एहने पहिनहियेसँ अछि।
-कृपा कऽ एकरा सभकेँ अपनेसँ मिज्झर करू।'''",
-'movedto' => 'घसकाएल गेल',
 'movetalk' => 'सम्बन्धित चौबटिया पन्नाकेँ घसकाउ',
 'move-subpages' => 'उपपृष्ठ सेहो लेल जाऊ ($1 धरि)',
 'move-talk-subpages' => 'वार्ता पृष्ठक उपपृष्ठ लेने जाऊ ($1 धरि)',
@@ -3141,15 +3099,10 @@ Variants for Chinese language
 'exif-urgency-high' => 'बेशी ($1)',
 'exif-urgency-other' => 'प्रयोक्ता परिभाषित प्राथमिकता ($1)',
 
-# External editor support
-'edit-externally' => 'ऐ फाइलकेँ बाहरी अनुप्रयोगसँ हटाउ',
-'edit-externally-help' => '(देखू [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] विषेष जानकारी लेल)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सभ',
 'namespacesall' => 'सभटा',
 'monthsall' => 'सभ',
-'limitall' => 'सभटा',
 
 # Email address confirmation
 'confirmemail' => ' ई-पत्र सत्यापित करू',
@@ -3174,7 +3127,6 @@ Variants for Chinese language
 'confirmemail_success' => 'अहाँक ई-पत्र संकेत सत्यापित कएल गेल।
 अहाँ आब [[Special:UserLogin|सम्प्रवेश]]आ विकीक प्रयोग करू।',
 'confirmemail_loggedin' => 'अहाँक ई-पत्र संकेत आब सत्यापित भऽ गेल।',
-'confirmemail_error' => 'सत्यापित करबा काल किछु गड़बड़ भऽ गेल।',
 'confirmemail_subject' => '{{जालस्थल}} ई-पत्र संकेत सत्यापन',
 'confirmemail_body' => 'कियो, सम्भवतः अहाँ, अनिकेत $1 सँ,
 खाता "$2" पंजीकृत करबेने छथि ऐ ई-पत्र संकेतसँ {{जालस्थल}} पर।
@@ -3398,7 +3350,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'पन्ना सभक तुलना करू',
-'compare-selector' => 'पन्ना सभक संशोधनक तुलना करू',
 'compare-page1' => 'पन्ना १',
 'compare-page2' => 'पन्ना २',
 'compare-rev1' => 'संशोधन १',
index 93b6549..108ac26 100644 (file)
@@ -38,7 +38,6 @@ $messages = array(
 'tog-minordefault' => 'Otomatis nandani kabeh suntingan dadi suntingan cilik',
 'tog-previewontop' => 'Tidokna pratayang sedurunge kotak sunting',
 'tog-previewonfirst' => 'Tidokna pratayang nang suntingan sing pertama',
-'tog-nocache' => 'Nonaktifna penyinggahan kaca peramban',
 'tog-enotifwatchlistpages' => 'Kirimna imel maring inyong angger kaca awa berkas utsing mlebu daptar pangawasanne inyong diowaih',
 'tog-enotifusertalkpages' => 'Kirimna imel maring inyong angger kaca dhiskusine inyong owah',
 'tog-enotifminoredits' => 'Kirimna imel maring inyong uga nek ana suntingan cilik nang kaca lan berkas',
@@ -172,7 +171,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Kaca kiye',
 'qbmyoptions' => 'Kaca-ne inyong',
-'qbspecialpages' => 'Kaca-kaca astamiwa',
 'faq' => 'FAQ (Pitakonan sing sering ditakokna)',
 'faqpage' => 'Project:FAQ',
 
@@ -387,9 +385,6 @@ Kiya ndeyane ana siji utawa lewih karakter sing ora teyeng digunakna nang judul.
 'perfcachedts' => "Data kiye dijikot sekang singgahan (''cache''), lan dianyarna keri dhewek dong $1. Paling akeh ana  {{PLURAL:$4|siji asil|$4 asil}} disediakna nang papan singgahan.",
 'querypage-no-updates' => 'Update nggo kaca kiye lagi dipateni.
 Data sing ana nang kene sekiye ora teyeng dibaleni unggah maning.',
-'wrong_wfQuery_params' => 'Parameter salah maring wfQuery()<br />
-Fungsi: $1<br />
-Panyuwunan: $2',
 'viewsource' => 'Deleng sumbere',
 'viewsource-title' => 'Deleng sumbere nggo $1',
 'actionthrottled' => 'Tindakan diwatesi',
@@ -486,8 +481,8 @@ Aja kelalen ngowaih [[Special:Preferences|preferensi {{SITENAME}}]] Rika.',
 'createacct-another-submit' => 'Gawe akun liyane',
 'createacct-benefit-heading' => '{{SITENAME}} kuwe digawe nang wong kaya Rika.',
 'createacct-benefit-body1' => '{{PLURAL:$1|suntingan|suntingan}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|kaca|kaca}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|kontributor|kontributor}} anyaran',
+'createacct-benefit-body2' => '{{PLURAL:$1|kaca}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|kontributor}} anyaran',
 'badretype' => 'Tembung sandhi sing Rika lebokna ora gathuk.',
 'userexists' => 'Jeneng panganggo sing dilebokna uwis ana sing nganggo.
 Monggo pilih jeneng liyane.',
@@ -520,7 +515,7 @@ Monggo dijajal sepisan maning.',
 'passwordtooshort' => 'Tembung sandhi kuwe paling ora cacahe {{PLURAL:$1|1 karakter|$1 karakter}}.',
 'password-name-match' => 'Tembung sandhi Rika kudu sejen karo jeneng panganggone Rika.',
 'password-login-forbidden' => 'Jeneng panganggo lan tembung sandhi kiye ora olih dienggo.',
-'mailmypassword' => 'Imelna tembung sandhi anyar',
+'mailmypassword' => 'Tembung sandhi di-reset',
 'passwordremindertitle' => 'Tembung sandi anyar temporer kanggo {{SITENAME}}',
 'passwordremindertext' => 'Ana wong (ndeyane Rika dhewek, sekang alamat IP $1) sing njaluk
 tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandhi sawetara nggo panganggo 
@@ -537,7 +532,7 @@ terusna baen nggunakna tembung sandhine Rika sing lawas.',
 Monggoo mlebu log maning seuwise Rika nampa imel kuwe.',
 'blocked-mailpassword' => "Alamat IP-ne Rika diblokir sekang panyuntingan, mulane kuwe Rika ora olih nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
 'eauthentsent' => 'Pesen imel konfirmasi wis dikirim maring alamat imele Rika.
-Rika kudu ngetutna instruksi nang imel kuwe mau nggo mastekna nek alamat kuwe pancen imele Rika dhewek. {{SITENAME}} ora bakal ngaktifna fitur imel angger langkah kiye durung dilakokna.',
+Sedurunge imel liyane teyeng dikirim maring akun kuwe, Rika kudu ngetutna instruksi nang imel kuwe, nggo mastekna nek alamat kuwe pancen imele Rika dhewek.',
 'throttled-mailpassword' => 'Sawijining imel kanggo mbalekna tembung sandhi wis dikirim, jroning {{PLURAL:$1|jam|$1 jam}} pungkasan kiye.
 Kanggo nyegah salah-guna, mung siji imel tembung sandi thok sing teyeng dikirim saben {{PLURAL:$1|jam|$1 jam}}.',
 'mailerror' => 'Kasalahan dong ngirim imel: $1',
@@ -574,7 +569,7 @@ Angger Rika milih arep ngaweh, kiye bakal digunakna nggo aweh atribut maring kas
 'user-mail-no-body' => 'Njajal ngirim imel sing kosong urawa isine sithik thok.',
 
 # Change password dialog
-'resetpass' => 'Ganti tembung sandhi',
+'changepassword' => 'Ganti tembung sandhi',
 'resetpass_announce' => 'Rika wis mlebu log karo kode sementara sing dikirim maring imel.
 Nggo nerusna, Rika kudu nglebokna tembung sandhi anyar nang kene:',
 'resetpass_header' => 'Ganti tembung sandhine akun',
@@ -682,7 +677,7 @@ Kiye ndeyan anu uwis dipindah utawa dibusek dong Rika lagi ndeleng kaca kiye.',
 'accmailtitle' => 'Tembung sandhi wis dikirim.',
 'accmailtext' => "Tembung sandhi acak kanggo [[User talk:$1|$1]] wis digawe lan dikirim maring $2.
 
-Tembung sandhi kanggo akun anyarkiye teyeng diganti nang kaca ''[[Special:ChangePassword|ganti tembung sandhi]]'' seuwise mlebu log.",
+Tembung sandhi kanggo akun anyar kiye teyeng diganti nang kaca ''[[Special:ChangePassword|ganti tembung sandhi]]'' seuwise mlebu log.",
 'newarticle' => '(Anyar)',
 'newarticletext' => "Rika ngetutna pranala maring kaca sing durung ana.
 Kanggo nggawe kaca kuwe,molai baen ngetik nang kotak nang ngisor kiye (deleng [[{{MediaWiki:Helppage}}|kaca pitulung]] kanggo informasi lewih detil).
@@ -836,25 +831,21 @@ Rinciane teyeng ditemokna nang [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'rev-showdeleted' => 'tidokna',
 'revisiondelete' => 'Busek/ora-sida mbusek revisi',
 'revdelete-nooldid-title' => 'Target revisi ora ditemokna',
-'revdelete-nologtype-title' => 'Tipe log ora diwenehna',
-'revdelete-nologtype-text' => 'Rika ora aweh tipe log kanggo nglakokna tindakan kiye.',
-'revdelete-nologid-title' => 'Entri log ora valid',
-'revdelete-nologid-text' => 'Rika ndeyan durung nyebutna log prastawa target kanggo nglakokna fungsi kiye utawa entri sing dimaksudna pancen ora ana.',
 'revdelete-no-file' => 'Berkas sing dituju ora ana.',
 'revdelete-show-file-confirm' => 'Apa rika wis mantep arep ndeleng revisi sing wis dibusek nggone berkas "<nowiki>$1</nowiki>" sekang tanggal $2 jam $3?',
 'revdelete-show-file-submit' => 'Ya',
-'revdelete-selected' => "'''{{PLURAL:$2|Revisi kepilih|Revisi kepilih}} sekang '''$1''''''",
+'revdelete-selected' => "'''{{PLURAL:$2|Revisi kepilih}} sekang [[:$1]]:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|Log kepilih|Log kepilih}} kanggo:'''",
 'revdelete-legend' => 'Atur watesan',
-'revdelete-hide-text' => 'Umpetna tèks revisi',
+'revdelete-hide-text' => 'Tèks revisi',
 'revdelete-hide-image' => 'Umpetna isi berkas',
 'revdelete-hide-name' => 'Umpetna tindakan lan target',
-'revdelete-hide-comment' => 'Umpetna ringkesan suntingan',
-'revdelete-hide-user' => 'Umpetna jeneng panganggo/alamat IP penyunting',
+'revdelete-hide-comment' => 'ringkesan suntingan',
+'revdelete-hide-user' => 'Jeneng panganggo/alamat IP penyunting',
 'revdelete-hide-restricted' => 'Uga umpetna data sekang pangurus lan panganggo liyané',
 'revdelete-radio-same' => '(aja diowahi)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Ora',
+'revdelete-radio-set' => 'Umpetna',
+'revdelete-radio-unset' => 'Keton',
 'revdelete-suppress' => 'Uga umpetna data sekang pangurus lan panganggo liyané',
 'revdelete-unsuppress' => 'Busak watesan nang revisi sing dibalèkna',
 'revdelete-log' => 'Alesan:',
@@ -862,8 +853,6 @@ Rinciane teyeng ditemokna nang [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAG
 'revdelete-failure' => "'''Tampilan revisi ora teyeng dianyari:'''
 $1",
 'revdel-restore' => 'Ngowahi visiblitas (pangatonan)',
-'revdel-restore-deleted' => 'suntingan sing wis dibusak',
-'revdel-restore-visible' => 'tampilan revisi',
 'pagehist' => 'Sajarah kaca',
 'deletedhist' => 'Sajarah sing dibusak',
 'revdelete-hide-current' => 'Gagal ngumpetna revisi tanggal $1, jam $2: kiye kuwe revisi paling anyar.
@@ -911,12 +900,8 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 # Search results
 'searchresults' => 'Hasile penggoletan',
 'searchresults-title' => 'Hasile penggoletan sekang "$1"',
-'searchresulttext' => 'Kanggo informasi sabanjuré ngenani panggolètan nang {{SITENAME}}, monggo ndeleng [[{{MediaWiki:Helppage}}|kaca pitulung]].',
-'searchsubtitle' => 'Rika nggoleti \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kabeh kaca sing dimolai nganggo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kabeh kaca sing nggandeng maring "$1"]])',
-'searchsubtitleinvalid' => "Rika nggoleti '''$1'''",
 'toomanymatches' => "Pengoletane Rika ngasilna kakehan pituwas, monggo lebokna ''query'' liyane",
 'titlematches' => 'Judul kaca sing cocog',
-'notitlematches' => 'Ora ana judul kaca sing cocog',
 'textmatches' => 'Teks kaca sing cocog',
 'notextmatches' => 'Ora ana teks kaca sing cocog',
 'prevn' => '{{PLURAL:$1|$1}} sadurungé',
@@ -925,10 +910,8 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 'nextn-title' => '$1 {{PLURAL:$1|asil|asil}} sabanjuré',
 'shown-title' => 'Tidokna $1 {{PLURAL:$1|asil|asil}} saben kaca',
 'viewprevnext' => 'Deleng ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilihan panggoletan',
 'searchmenu-exists' => "''' Ana kaca nganggo jeneng \"[[:\$1]]\" nang wiki kiye.'''",
 'searchmenu-new' => "'''Gawe kaca \"[[:\$1]]\" nang wiki kiye!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Deleng daftar kaca sing nganggo tembung-wiwitan kiye]]',
 'searchprofile-articles' => 'Isine kaca',
 'searchprofile-project' => 'Kaca pitulung lan proyèk',
 'searchprofile-images' => 'Multimedia',
@@ -949,21 +932,16 @@ Gatèkna, angger nganggo pranala navigasi kuwe bakalan nge-reset kolom kiye.',
 'search-interwiki-default' => 'Hasil $1:',
 'search-interwiki-more' => '(terusane)',
 'search-relatedarticle' => 'Kagandhèng',
-'mwsuggest-disable' => 'Non-aktifna saran AJAX',
 'searcheverything-enable' => 'Goleti nang kabeh bilik jeneng',
 'searchrelated' => 'kagandhèng',
 'searchall' => 'kabèh',
 'showingresults' => "Nang ngisor kiye ditidokna ana {{PLURAL:$1|'''1''' kasil|'''$1''' kasil}}, dimulai sekang #'''$2'''.",
 'showingresultsnum' => "Nang ngisor kiye ditidokna ana {{PLURAL:$3'''1''' kasil|'''$3''' kasil}}, dimulai sekang #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Asil '''$1''' sekang '''$3'''|Asil '''$1 - $2''' sekang '''$3'''}} kanggo '''$4'''",
-'nonefound' => "'''Cathetan''': Mung sawetara bilik jeneng sing digolèti sacara baku. 
-Jajal aweh awalan ''all:'' kanggo nggolèti kabèh isi (kalebu kaca dhiskusi, cithakan lsp.), utawa nganggo bilik jeneng sing dipèngèni minangka préfiks.",
 'search-nonefound' => "Ora ana kasil sing cocog karo pitakonan (''query'').",
-'powersearch' => 'Panggoletan lanjut',
 'powersearch-legend' => 'Panggoletan lanjut',
 'powersearch-ns' => 'Goleti nang bilik jeneng:',
 'powersearch-redir' => 'Daftar pangalihan',
-'powersearch-field' => 'Sing digoleti',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Kabeh',
 'powersearch-togglenone' => 'Ora ana',
@@ -976,7 +954,6 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 'preferences' => 'Preferensi',
 'mypreferences' => 'Preferensi',
 'prefs-edits' => 'Jumlah suntingan:',
-'changepassword' => 'Ganti tembung sandhi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pratayang',
 'datedefault' => 'Ora ana préferènsi',
@@ -998,12 +975,10 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 'prefs-email' => 'Opsi imel',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpen',
-'resetprefs' => 'Bersihna owah-owahan sing ora disimpen',
-'restoreprefs' => 'Balekna kabeh setelan gawane',
+'restoreprefs' => 'Balekna kabeh setelan gawane (nang kabeh bagiyan)',
 'prefs-editing' => 'Panyuntingan',
 'rows' => 'Baris:',
 'searchresultshead' => 'Goleti',
-'resultsperpage' => 'Hasil saben kaca:',
 'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a> (bita):',
 'stub-threshold-disabled' => 'Dinonaktifna',
 'recentchangesdays' => 'Jumlah dina sing ditidokna nang Owahan anyar:',
@@ -1015,7 +990,6 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 'localtime' => 'Wektu lokal:',
 'timezoneuseserverdefault' => 'Gunakna standar gawane wiki ($1)',
 'timezoneuseoffset' => 'Liyane (tentukna bedane)',
-'timezoneoffset' => 'Prabédan¹:',
 'servertime' => 'Wektu server:',
 'guesstimezone' => 'Isikna sekang panjlajah web',
 'timezoneregion-africa' => 'Afrika',
@@ -1029,7 +1003,7 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 'timezoneregion-indian' => 'Samodra Hindia',
 'timezoneregion-pacific' => 'Samodra Pasifik',
 'allowemail' => 'Aktifna fitur nggo nampa imel sekang pangganggo liyane',
-'prefs-searchoptions' => 'Pilihan panggoletan',
+'prefs-searchoptions' => 'Goleti',
 'prefs-namespaces' => 'Bilik jeneng',
 'defaultns' => 'Utawa goleti nang bilik jeneng kiye:',
 'default' => 'baku',
@@ -1041,9 +1015,10 @@ Ningen Rika kudu eling nek indeks Google kanggo {{SITENAME}} bisa baen isine anu
 Pambalikan kiye ora teyeng dibatalna.',
 'prefs-emailconfirm-label' => 'Konfirmasi imel:',
 'youremail' => 'Imel:',
-'username' => 'Jeneng panganggo:',
-'uid' => 'ID panganggo:',
-'prefs-memberingroups' => 'Anggota {{PLURAL:$1|klompok|klompok-klompok}}:',
+'username' => '{{GENDER:$1|Jeneng panganggo}}:',
+'uid' => '{{GENDER:$1|ID panganggo}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Anggota}} 
+{{PLURAL:$1|klompok|klompok-klompok}}:',
 'prefs-registration' => 'Wektu régistrasi:',
 'yourrealname' => 'Jeneng asli:',
 'yourlanguage' => 'Basa:',
@@ -1234,7 +1209,6 @@ Aja kuatir, alamat imele Rika ora ditidokna dong pangganggo sejen ngontak Rika.'
 'recentchanges-label-minor' => 'Kiye suntingan cilik',
 'recentchanges-label-bot' => 'Suntingan iki dilakokna déning bot',
 'recentchanges-label-unpatrolled' => 'Suntingan kiye durung dipatroli',
-'rcnote' => "Sing ana nang ngisor kiye kuwe {{PLURAL:$1|'''1'''|'''$1'''}} owahan anyar nang {{PLURAL:$2|dina|'''$2''' dina}} pungkasan kiye, nganti tanggal $4, jam $5.",
 'rcnotefrom' => 'Nang ngisor kiye owah-owahan wiwit <strong>$2</strong> (kapacak nganti <strong>$1</strong> owah-owahan).',
 'rclistfrom' => 'Tidokna owahan anyar molai sekang tanggal $1',
 'rcshowhideminor' => '$1 suntingan cilik',
@@ -1427,10 +1401,8 @@ Kiye sekiye dialihna maring [[$2]].',
 'protectedpages' => 'Kaca sing direksa',
 'protectedpages-indef' => 'Mung kanggo pangreksan sing wektune ora dibatesi',
 'protectedpages-cascade' => 'Mung pangreksan runtun thok',
-'protectedpagestext' => 'Kaca-kaca nang ngisor kiye wis direksa ben ora teyeng dipindah utawa disunting',
 'protectedpagesempty' => 'Sekiye ora ana kaca sing lagi direksa nganggo parameter kuwe.',
 'protectedtitles' => 'Judul sing direksa',
-'protectedtitlestext' => 'Judul-judul kiye wis direksa lan ora teyeng digawe maning',
 'protectedtitlesempty' => 'Sekiye ora ana judul sing lagi direksa nganggo parameter kuwe.',
 'listusers' => 'Daftar panganggo',
 'listusers-editsonly' => 'Tidokna mung panganggo sing duwe kontribusi',
@@ -1480,7 +1452,6 @@ Rika teyeng mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sensitif
 'allpagesto' => 'Tidokna kaca-kaca sing dipungkasi gutul:',
 'allarticles' => 'Kabèh kaca',
 'allinnamespace' => 'Kabeh kaca ($1 namespace)',
-'allnotinnamespace' => 'Kabeh kaca (ora nang ruang jeneng $1)',
 'allpagessubmit' => 'Goleti',
 
 # Special:Categories
@@ -1815,10 +1786,6 @@ Sing liyane bakal diumpetna sacara ''default''.
 'exif-lightsource-18' => 'Cahya standar B',
 'exif-lightsource-19' => 'Cahya standar C',
 
-# External editor support
-'edit-externally' => 'Sunting berkas kiye nganggo aplikasi jaba',
-'edit-externally-help' => '(Deleng [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kabèh',
 'namespacesall' => 'kabèh',
index 42540c3..83bf6f4 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'КунардоньЛопат' ),
        'Blankpage'                 => array( 'ШаваЛопа' ),
        'Block'                     => array( 'СёлгомаIP' ),
-       'Blockme'                   => array( 'Сёлгомак' ),
        'Booksources'               => array( 'КинигаЛисьмот' ),
        'BrokenRedirects'           => array( 'СиньтьфШашфтфксне' ),
        'Categories'                => array( 'Категориет' ),
@@ -69,7 +68,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Сёрматфтомс' ),
        'Deadendpages'              => array( 'ПеньЛопат' ),
        'DeletedContributions'      => array( 'НардафПутксне' ),
-       'Disambiguations'           => array( 'Лама Смусть' ),
        'DoubleRedirects'           => array( 'КафонзафШашфтфксне' ),
        'Emailuser'                 => array( 'АдресТиись' ),
        'Export'                    => array( 'Вимс' ),
@@ -165,7 +163,6 @@ $messages = array(
 'tog-minordefault' => 'Тяшксемс сембе петема анцяйнятне мъзярс илякс изь мярьгов',
 'tog-previewontop' => 'Няфтемс сёрматфть васень няфтемать петемань седяфксть инголе',
 'tog-previewonfirst' => 'Васень няфтема васенце петнемада меле',
-'tog-nocache' => 'Кардамс интернетс вятиенди эслек ванфневи файлхнень тиема',
 'tog-enotifwatchlistpages' => 'Кучт тейне е-сёрма мзярда монь мельгеваномаста лопат илякстоптовихть',
 'tog-enotifusertalkpages' => 'Кучемс электрононь сёрма монь тиить корхтама лопанц илякстоптомада меле',
 'tog-enotifminoredits' => 'Кучт тейне е-сёрма нъльне мъзярда лопат эди файлхт аф ламне видептевихть',
@@ -285,7 +282,6 @@ $messages = array(
 'qbedit' => 'Петнема',
 'qbpageoptions' => 'Тя лопась',
 'qbmyoptions' => 'Монь лопане',
-'qbspecialpages' => 'Башка тевонь лопат',
 'faq' => 'Сидеста Кеподеви Кизефксне',
 'faqpage' => 'Project:Сидеста Кеподеви Кизефксне',
 
@@ -491,9 +487,6 @@ $1',
 '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' => 'Куроксшись кирьфтаф',
@@ -619,7 +612,7 @@ $2',
 'user-mail-no-addy' => 'Тяряфтыхть кучемс е-сёрма е-паргафтома',
 
 # Change password dialog
-'resetpass' => 'Полафтомс сувама валцень',
+'changepassword' => 'Сувама валть полафтомс',
 'resetpass_announce' => 'Тон сувать ёткопингонь сувама валть вельде кона сась электрононь адресозот. Сувама аделаманди тондейть эряви путомс тязк од сувама вал:',
 'resetpass_header' => 'Полафтомс сувама валцень',
 'oldpassword' => 'Сире сувама вал:',
@@ -910,8 +903,6 @@ $3 макссь туфталсь - ''$2''",
 'revdelete-success' => "'''Верзиеть няевоманц одонзафозь лац.'''",
 'logdelete-success' => "'''Сёрматфть няевомац арафтовсь лац.'''",
 'revdel-restore' => 'Полафтомс няевомац',
-'revdel-restore-deleted' => 'нардаф верзиет',
-'revdel-restore-visible' => 'няеви верзиет',
 'pagehist' => 'Лопать историяц',
 'deletedhist' => 'Нардаф историяц',
 'revdelete-edit-reasonlist' => 'Петнемс нардамань туфталхне',
@@ -963,12 +954,8 @@ $3 макссь туфталсь - ''$2''",
 # Search results
 'searchresults' => 'Мезе мувсь',
 'searchresults-title' => 'Мезе мувсь "$1" лемс',
-'searchresulttext' => '{{SITENAME}}-са вешендемань колга лама содаманкса ватт [[{{MediaWiki:Helppage}}|кизефтемань пялькссь]].',
-'searchsubtitle' => 'Тон вешить \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|сембе лопат "$1"ста ушедомс]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|сембе лопат сюлмафт "$1" мархта]])',
-'searchsubtitleinvalid' => "Тон вешить '''$1'''",
 'toomanymatches' => 'Пяк лама вешфонди малады муфкст, эняльттяма вешентть тага весть',
 'titlematches' => 'Лопать коняксоц мувсь',
-'notitlematches' => 'Лопать коняксоц изь мув',
 'textmatches' => 'Лопаса сёрматфсь мувсь',
 'notextmatches' => 'Лопаса сёрматфсь изь мув',
 'prevn' => 'сядынголень {{PLURAL:$1|$1}}',
@@ -977,10 +964,8 @@ $3 макссь туфталсь - ''$2''",
 'nextn-title' => 'Сядомелень $1 {{PLURAL:$1|сафкс|сафкст}}',
 'shown-title' => 'Няфтемс лопасонза $1 {{PLURAL:$1|сафкс|сафкст}}',
 'viewprevnext' => 'Ваномс ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Вешендема арафнематне',
 'searchmenu-exists' => "'''Тя Викиса ули лопась \"[[:\$1]]\" лем мархта'''",
 'searchmenu-new' => "'''Ушедомс лопась \"[[:\$1]]\" тя Викиса!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Мумс лопат тя валынголькссь мархта]]',
 'searchprofile-articles' => 'Потмонь лопат',
 'searchprofile-project' => 'Лезкс эди проектонь лопат',
 'searchprofile-images' => 'Мультимедиа',
@@ -1001,19 +986,15 @@ $3 макссь туфталсь - ''$2''",
 'search-interwiki-default' => '$1 муфкст:',
 'search-interwiki-more' => '(сяда лама)',
 'search-relatedarticle' => 'Мала',
-'mwsuggest-disable' => 'Лоткак AJAX мяль максоматне тевс нолдама',
 'searchrelated' => 'мала',
 'searchall' => 'сембе',
 'showingresults' => "Ала няфтеви {{PLURAL:$1|мувсь '''1'''|мувсть '''$1'''}} '''$2'''-ста ушедомс.",
 'showingresultsnum' => "Ала няфтеви {{PLURAL:$3|мувсь '''1'''|мувсть '''$3'''}} '''$2'''-ста ушедомс.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' сафкс '''$3'''-ста|'''$1 - $2''' сафкст '''$3'''-ста}} '''$4'''нди",
-'nonefound' => "'''Шарфтк мяльце''': Аньцек мъзярошка лемботмат вешендевихть инголе апак полафтт. Тяряфтт вешендема валда инголе путомс ''all:'' сембе потмонь вешендеманди (корхнема лопат ди шаблотт сявомок, ди с. т) эли кундак эрявикс лемботмос кода валынгольксс.",
 'search-nonefound' => 'Аш вешфксонди малады муфкст.',
-'powersearch' => 'Сядонга вешендемс',
 'powersearch-legend' => 'Анцяйняньбес вешендема',
 'powersearch-ns' => 'Вешендемс лемботмоса:',
 'powersearch-redir' => 'Шашфтфкснень лувомась',
-'powersearch-field' => 'Вешендемс',
 'powersearch-togglelabel' => 'Варжак:',
 'powersearch-toggleall' => 'Сембе',
 'powersearch-togglenone' => 'Фкявок аш',
@@ -1024,7 +1005,6 @@ $3 макссь туфталсь - ''$2''",
 'preferences' => 'Арафнематне',
 'mypreferences' => 'Монь латцемане',
 'prefs-edits' => 'Петнематнень лувсна:',
-'changepassword' => 'Сувама валть полафтомс',
 'prefs-skin' => 'Ванфонь латцема',
 'skin-preview' => 'Васень няфтема',
 'datedefault' => 'Апак полафтт',
@@ -1039,13 +1019,11 @@ $3 макссь туфталсь - ''$2''",
 'prefs-misc' => 'Калмоча',
 'prefs-resetpass' => 'Полафтомс сувама валцень',
 'saveprefs' => 'Ванфтомс',
-'resetprefs' => 'Валхтомс апак ванфтт полафнематнень',
 'restoreprefs' => 'Мърдафтомс васень латцематне',
 'prefs-editing' => 'Петнема',
 'rows' => 'Луфт (строкат):',
 'columns' => 'Орват (столбанят):',
 'searchresultshead' => 'Вешендема',
-'resultsperpage' => 'Муфкст фкя лопаса:',
 'stub-threshold' => 'Оторсь (лимитсь) <a href="#" class="stub">-нь керф сюлмафкснень</a> латцемаснонды (байтт):',
 'recentchangesdays' => 'Мъзяра шит няфтемс мекольце полафнемаса:',
 'recentchangesdays-max' => '(максимум $1 {{PLURAL:$1|ши|шит}})',
@@ -1055,7 +1033,6 @@ $3 макссь туфталсь - ''$2''",
 'localtime' => 'Тястоконь пинге:',
 'timezoneuseserverdefault' => 'Нолдак апак полафтт серверть тевс',
 'timezoneuseoffset' => 'Иля (путт явомась)',
-'timezoneoffset' => 'Явома¹:',
 'servertime' => 'Серверонь пинге:',
 'guesstimezone' => 'Сёрмадомс интернет полатксста',
 'timezoneregion-africa' => 'Африк',
@@ -1245,7 +1222,6 @@ $3 макссь туфталсь - ''$2''",
 'recentchanges-label-minor' => 'Тя ёмланя видептема',
 'recentchanges-label-bot' => 'Тя видептемась тизе кона-бди робот програм',
 'recentchanges-label-unpatrolled' => 'Тя видептемась ашесь пова патруль ала ни',
-'rcnote' => "Ала {{PLURAL:$1|мекольце '''1''' полафнема|мекольце '''$1''' полафнемат}} '''$2''' ётай  {{PLURAL:$2|шис|шис}}, $5, $4ста.",
 'rcnotefrom' => "Ала няфтезь полафнематне '''$2'''-ста ('''$1'''-с).",
 'rclistfrom' => 'Няфтемс од полафнематне $1-ста ушедомс',
 'rcshowhideminor' => '$1 ёмланя видептемат',
@@ -1547,10 +1523,8 @@ $3 макссь туфталсь - ''$2''",
 'protectedpages' => 'Аралаф лопат',
 'protectedpages-indef' => 'Аньцек апак кемокстак араламат',
 'protectedpages-cascade' => 'Аньцек каскад араламась',
-'protectedpagestext' => 'Ся лопатне шашфтомада эли петнемада аралафт',
 'protectedpagesempty' => 'Тя пингста аралаф лопат ся арафнематнень мархта ашет.',
 'protectedtitles' => 'Аралаф коняксне',
-'protectedtitlestext' => 'Ся лопа коняксне тиемада аралафт',
 'protectedtitlesempty' => 'Тя пингста аралаф лопа конякст ся арафнематнень мархта ашет.',
 'listusers' => 'Тиихне',
 'listusers-editsonly' => 'Няфтемс аньцек петнематнень мархта тиихнень',
@@ -1598,9 +1572,6 @@ $3 макссь туфталсь - ''$2''",
 'allpagesto' => 'Няфтемс лопат аделамс:',
 'allarticles' => 'Сембе лопат',
 'allinnamespace' => 'Сембе лопат ($1 лемботмоса)',
-'allnotinnamespace' => 'Сембе лопат (аф $1 лемботмоса)',
-'allpagesprev' => 'Сядынголень',
-'allpagesnext' => 'Сай',
 'allpagessubmit' => 'Ётамс',
 'allpagesprefix' => 'Няфтемс лопат инголькс мархта:',
 'allpagesbadtitle' => 'Тя лопать коняксоц афоль кондястикс эли сонь ульсь кяльётконь эли викиётконь инголькссь. Сонь, улема, фкя эли фкяда лама тяшкст, конат коняксова аф мярьговихть.',
@@ -1869,7 +1840,6 @@ $UNWATCHURL
 'undeletebtn' => 'Мърдафтомс',
 'undeletelink' => 'ваномс/мърдафтомс',
 'undeleteviewlink' => 'ваномс',
-'undeletereset' => 'Валхтомс',
 'undeleteinvert' => 'Валхтомс кочкама',
 'undeletecomment' => 'Мяльполаткс:',
 'undeletedrevisions' => '{{PLURAL:$1|1 верзие|$1 верзиет}} мърдафтфт',
@@ -1952,7 +1922,6 @@ $1',
 'ipadressorusername' => 'IP адрес эли тиить лемоц:',
 'ipbexpiry' => 'Сирелгоды:',
 'ipbreason' => 'Туфтал:',
-'ipbreasonotherlist' => 'Иля туфтал',
 'ipbreason-dropdown' => '* Кърдань сёлгома туфталхт
 ** Аф виде информациень путнема
 ** Лопаста сёрматфть нардама
@@ -1967,8 +1936,6 @@ $1',
 'ipbsubmit' => 'Сёлгомс тя тиить',
 'ipbother' => 'Иля пинге:',
 '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',
-'ipbotheroption' => 'иля',
-'ipbotherreason' => 'Иля/поладомань туфтал:',
 'ipbhidename' => 'Кяшемс тиить лемоц петнемада ди лувомада',
 'ipbwatchuser' => 'Ваномс тя тиить лопанц ди сонь корхнема лопанц мельге.',
 'ipb-change-block' => 'Сёлгомс одукс тя тиить ня латцематнень коряс',
@@ -2031,7 +1998,6 @@ $1',
 'sorbsreason' => 'Тонь IP адресце лувови панжада ётка якай сервероннекс DNSBL-са, конась нолдаф тевс {{SITENAME}}са.',
 'sorbs_create_account_reason' => 'Тонь IP адресце лувови панжада ётка якань сервероннекс DNSBL-са конась нолнезь тевс {{SITENAME}}са.
 Тондейть аш кода сёрматфтомать тиемс',
-'cant-block-while-blocked' => 'Тондейть аш кода сёлгомс иля тиихнень мъзярс тон тонць сёлкф.',
 
 # Developer tools
 'lockdb' => 'Пякстамс датабазать',
@@ -2073,7 +2039,6 @@ $1',
 
 Ся тефнень сюнеда тондейть сави кядьвельде лопать шашфтомс эли шоворемс кода эряви.",
 'movearticle' => 'Шашфтомс лопать иля вастс:',
-'movenologin' => 'Апак сувак',
 'movenologintext' => 'Эряви улемс сёрматфтф тиикс ди васенда [[Special:UserLogin|сувамс]] од вастс лопатнень шашфтоманди.',
 'movenotallowed' => 'Тон аф мярьговат шашфтомс лопат од вастс.',
 'movenotallowedfile' => 'Тон аф мярьговат шашфтомс файлхт.',
@@ -2089,8 +2054,6 @@ $1',
 'articleexists' => 'Тя лем мархта лопась ульсь ни эли лемсь, кона тон кочкать аф кондясти.
 Арьсек иля лем.',
 'cantmove-titleprotected' => 'Аш кода шашфтомс лопать тя вастс сяс мес тя од конякссь тиемада аралаф',
-'talkexists' => "'''Тя лопать шашфтомац анок, аньцек сонь корхнема лопац аф шашфтови, сяс мес од лемса фкя лопа ульсь ни. Эняльттяма, шоворьфтть синь кядьвельде.'''",
-'movedto' => 'шашфтфоль',
 'movetalk' => 'Шашфтт сотф мархтонза корхнема лопать',
 'move-subpages' => 'Шашфтт сембе сублопатне ($1с сявомок)',
 'move-talk-subpages' => 'Шашфтт сембе корхнема лопатнень сублопасна ($1с сявомок)',
@@ -2641,10 +2604,6 @@ $1',
 'exif-gpsdirection-t' => 'Виде ён',
 'exif-gpsdirection-m' => 'Магнитонь ён',
 
-# External editor support
-'edit-externally' => 'Петнемс тя файлть ушеширень програмонь вельде',
-'edit-externally-help' => '(Ванк [https://www.mediawiki.org/wiki/Manual:External_editors арафнемань вятемовалсь] сяда лама содаманкса)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'сембе',
 'namespacesall' => 'сембе',
@@ -2673,7 +2632,6 @@ $1',
 'confirmemail_success' => 'Тонь электрононь адресце кемокстафоль.
 Тондейть тяни ули кода сувамс Викис.',
 'confirmemail_loggedin' => 'Тонь электрононь адресце тяни кемокстаф.',
-'confirmemail_error' => 'Мезеге мольсь аф лац тонь кемокстаманц ванфтомать ёткста.',
 'confirmemail_subject' => '{{SITENAME}} электрононь адресть кемокстамась',
 'confirmemail_body' => 'Кати-кие, улема, тон $1 IP адресста ушедсь сёрматфтомась "$2" тя электрононь адресть мархта {{SITENAME}}-са.
 
index 952aad2..9a71666 100644 (file)
@@ -123,6 +123,9 @@ $namespaceAliases = array(
        'Discussion_Catégorie' => NS_CATEGORY_TALK,
 );
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Activeusers'               => array( 'Mpikambana_mavitrika' ),
        'Allmessages'               => array( 'Hafatra_rehetra' ),
@@ -130,7 +133,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Pejy_antitra' ),
        'Blankpage'                 => array( 'Pejy_fotsy' ),
        'Block'                     => array( 'Hanakana' ),
-       'Blockme'                   => array( 'Sakano_ahy' ),
        'Booksources'               => array( 'Boky_loharano' ),
        'BrokenRedirects'           => array( 'Fihodinana_tapaka' ),
        'Categories'                => array( 'Sokajy' ),
@@ -141,7 +143,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Hamorona_kaonty' ),
        'Deadendpages'              => array( 'Pejy_tsy_misy_rohy' ),
        'DeletedContributions'      => array( 'Fandraisan\'anjara_voafafa' ),
-       'Disambiguations'           => array( 'Pejy_mitovy_anarana' ),
        'DoubleRedirects'           => array( 'Fihodinana_miroa' ),
        'EditWatchlist'             => array( 'Hanova_ny_pejy_arahana' ),
        'Emailuser'                 => array( 'Handefa_imailaka' ),
@@ -220,11 +221,11 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'Hanipika ny rohy:',
 'tog-justify' => 'Hanitsy ny andiany',
-'tog-hideminor' => "Hanitsika ny fanovana madinika ao amin'ny fanovana farany",
-'tog-hidepatrolled' => "Hanitrika ny fanovana voaara-maso ao amin'ny fanovana farany",
+'tog-hideminor' => "Hanitsika ny fiovana madinika ao amin'ny fanovana farany",
+'tog-hidepatrolled' => "Hanitrika ny fiovana voaara-maso ao amin'ny fiovana farany",
 'tog-newpageshidepatrolled' => "Hanitsika ny pejy voaara-maso ao amin'ny pejy vaovao",
 'tog-extendwatchlist' => 'Hanitatra ny lisitra fanaraham-pejy mba haneho ny fanovana rehetra fa tsy ny vaovao indrindra fotsiny',
-'tog-usenewrc' => "Hamondrona ny fanovana araky ny pejy ao amin'ny fanovana farany ary ao amin'ny lisitry ny pejy arahana",
+'tog-usenewrc' => "Hampivondrona ny fiovana araky ny pejy ao amin'ny fiovana farany ary ao amin'ny lisitry ny pejy arahana",
 'tog-numberheadings' => 'Asio laharany ny lohateny',
 'tog-showtoolbar' => 'Haneho ny toolbar fanovana',
 'tog-editondblclick' => "Hanova pejy amin'ny alalan'ny tsindrim-boalavo roa misesy",
@@ -239,7 +240,6 @@ $messages = array(
 'tog-minordefault' => 'Mariho ho madinika foana aloha ny fanovana rehetra',
 'tog-previewontop' => "Asehoy alohan'ny boaty fanovana ny tsipalotra",
 'tog-previewonfirst' => "Asehoy ny tsipalotra amin'ny fanovana voalohany",
-'tog-nocache' => 'Tsy alefa ny fanehoana ny pejy voasitriky ny mpitety',
 'tog-enotifwatchlistpages' => 'Andefasana imailaka rehefa voaova ny pejy na ny rakitra arahako',
 'tog-enotifusertalkpages' => 'Andefaso imailaka aho rehefa miova ny pejin-dresako',
 'tog-enotifminoredits' => "Andefasana imailaka na dia fanovana madinika aza no atao amin'ny pejy sy ny rakitra",
@@ -374,7 +374,6 @@ $messages = array(
 'qbedit' => 'Hanova',
 'qbpageoptions' => 'Ity pejy ity',
 'qbmyoptions' => 'Ny pejiko',
-'qbspecialpages' => 'Pejy manokana',
 'faq' => 'FMM',
 'faqpage' => 'Project:FMM',
 
@@ -495,7 +494,7 @@ Mitaky version $1-n'i MediaWiki",
 'youhavenewmessagesfromusers' => "Manana $1 avy amin'ny mpikambana {{PLURAL:$3|hafa|$3}} ($2).",
 'youhavenewmessagesmanyusers' => "Manana $1 avy amin'ny mpikambana maro ($2).",
 'newmessageslinkplural' => '{{PLURAL:$1|hafatra iray|hafatra maro}}',
-'newmessagesdifflinkplural' => 'fanovana farany{{PLURAL:$1}}',
+'newmessagesdifflinkplural' => 'fiovana {{PLURAL:$1|farany|999=farany}}',
 'youhavenewmessagesmulti' => "Manana hafatra vaovao ianao eo amin'ny $1.",
 'editsection' => 'hanova',
 'editold' => 'hanova',
@@ -591,9 +590,6 @@ Tsy nanome fanazavana.",
 'perfcachedts' => "Ao amin'ny voatakona (cache) ny data aseho, ary tamin'ny $1 izy no navaozina farany. $4{{PLURAL:}} no isan'ny valim-pikarohana ao amin'ilay voatakona.",
 'querypage-no-updates' => "Tsy nalefa ny ''mise à jour'' (update) hoan'ity pejy ity.
 Mety tsy misy fifandraisana amin'ny zavamisy ankehitriny ny zavamisy ao anatin'ity pejy ity..",
-'wrong_wfQuery_params' => "Misy tsy fetezana amin'ny wfQuery()<br />
-Asa : $1<br />
-fangatahana : $2",
 'viewsource' => 'Hijery fango',
 'viewsource-title' => "Hijery ny fangon'i $1",
 'actionthrottled' => 'Tao voafetra',
@@ -780,7 +776,7 @@ Raha misafidy ny hanome azy ianao, ho ampiasaina amin'ny fanehoana ny anjara asa
 'user-mail-no-body' => 'Nanandrana nandefa mailaka babangoana na fohy loatra',
 
 # Change password dialog
-'resetpass' => 'Hanova ny tenimiafina',
+'changepassword' => 'Hanova tenimiafina',
 'resetpass_announce' => "Nihiditra tenimiafina mailaka nalefanay tamin'ny imailaka ianao. Ampidiro ity tenimiafina ity mba hanapitra ny fampidirana.",
 'resetpass_header' => "Hanova ny tenimiafin'ny kaonty",
 'oldpassword' => 'Tenimiafina taloha:',
@@ -1109,10 +1105,9 @@ Ao aorian'ny fivelarana, mety namoaka valy lava loatra angamba izy, ary tsy namp
 'last' => 'farany',
 'page_first' => 'voalohany',
 'page_last' => 'farany',
-'histlegend' => "
-Fifidianana ny votoatiny hampitahaina: mariho eo anilan'ny versions hampitahaina dia tsindrio ny bokotra Entrée na ny bokotra etsy ambany.<br />
-Tadidio: (ank) = fampitahana amin'ny votoatin'ny pejy ankehitriny,
-(farany) = fampitahana amin'ny version talohan'ity, M = fanovana madinika",
+'histlegend' => "Fisafidianana ny votoatiny hohampitahaina: Mario ny bokotra radiôn'ny fiovana hampitahazay ary tsintrio ny bokotra fanekena amin'ny faram-pejy<br />
+Maribolana: '''(ank)''' = fampitahana amin'ny votoatin'ny pejy ankehitriny,
+'''(farany)''' = fampitahana amin'ny version talohan'ity, M = fanovana madinika",
 'history-fieldset-title' => 'Karohy ny tantara',
 'history-show-deleted' => 'Voafafa ihany',
 'histfirst' => 'antitra indrindra',
@@ -1165,10 +1160,6 @@ Azonao jerena ilay diff ; ao amin'ny [{{fullurl:{{#Special:Log}}/suppress|page={
 'revdelete-nooldid-title' => 'Santiôna tanjona tsy mameno fetra.',
 'revdelete-nooldid-text' => 'Tsy voalazanao ny santiôna tanjona hanaovana ity tao ity, 
 tsy misy ilay izy, na ny santiôna ankehitriny no andramana asitrika.',
-'revdelete-nologtype-title' => 'Tsy nilaza karazana tatitra',
-'revdelete-nologtype-text' => 'Tsy natsofokao ny karazana tatitra/laogy hanatanterahana ilay asa.',
-'revdelete-nologid-title' => 'Iditra laogy tsy mameno fetra',
-'revdelete-nologid-text' => 'Tsy nanatsofoka iditra laogy anaovana ilay asa ianao, na tsy nisy ilay iditra natsofoka.',
 'revdelete-no-file' => 'Tsy misy ilay rakitra hofafàna.',
 'revdelete-show-file-confirm' => "Tapa-kevitra hamafa ny ''revision''-n'i rakitra <nowiki>$1</nowiki> tamin'ny $2 tamin'ny $3 ve ianao ?",
 'revdelete-show-file-submit' => 'Eny',
@@ -1201,8 +1192,6 @@ $1",
 'logdelete-failure' => "'''Tsy afaka novaina ny fisehon'ny tatitr’asa'''
 $1",
 'revdel-restore' => 'Ovay ny fahitàna',
-'revdel-restore-deleted' => 'santiôna voafafa',
-'revdel-restore-visible' => 'santiôna hita',
 'pagehist' => "Tantaran'ilay pejy",
 'deletedhist' => 'Tantara voafafa',
 'revdelete-hide-current' => "Tsi-fetezana tamin'ny zavatra voadaty tamin'ny $1 tamin'ny $2 : io ny reviziôna ankehitriny.
@@ -1275,12 +1264,8 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 # Search results
 'searchresults' => 'Valim-pikarohana',
 'searchresults-title' => "Valim-pikarohana ho an'ny « $1 »",
-'searchresulttext' => "Jereo ny [[{{MediaWiki:Helppage}}|fanazavana fanampiny momba ny fikarohana eto amin'ny {{SITENAME}}]].",
-'searchsubtitle' => "nitady lohatsoratra « '''[[:$1]]''' » ianao ([[Special:Prefixindex/$1|ny pejy rehetra manomboka amin'ny « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ny pejy rehetra manana rohy amin'ny « $1 »]])",
-'searchsubtitleinvalid' => "Nitady « '''$1''' » ianao",
 'toomanymatches' => "Betsaka loatra ny isan'ny mitovy naverina, mametraha fangatahana hafa.",
 'titlematches' => "Mifanitsy amin'ny lohatenin'ny lahatsoratra",
-'notitlematches' => 'Tsy nahitana lohateny mifanaraka',
 'textmatches' => "Mifanitsy amin'ny votoatin'ny pejy",
 'notextmatches' => 'Tsy nahitana votoatim-pejy mifanaraka',
 'prevn' => '{{PLURAL:$1|$1}} taloha',
@@ -1289,10 +1274,8 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 'nextn-title' => 'Valim-pikarohana manaraka $1{{PLURAL:}}',
 'shown-title' => 'Aseho valiny $1 isaky ny pejy iray{{PLURAL:}}',
 'viewprevnext' => 'Hijery ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Safidy mikasika ny fitadiavana',
 'searchmenu-exists' => "'''Misy pejy mitondra anarana « [[:$1]] » eto amin'ity wiki ity'''",
 'searchmenu-new' => "'''Hanamboatra ny pejy « [[:$1|$1]] » eto amin'ity wiki ity !'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Hitady pejy manomboka amin'io tovona io]]",
 'searchprofile-articles' => 'Pejy misy votoatiny',
 'searchprofile-project' => 'Pejy fanampiana sy pejy tetikasa',
 'searchprofile-images' => 'Multimedia',
@@ -1313,23 +1296,16 @@ $3 santiôna{{PLURAL:}} natsonika tamin'ny [[:$2]]",
 'search-interwiki-default' => "Valiny amin'ny $1 :",
 'search-interwiki-more' => '(be kokoa)',
 'search-relatedarticle' => 'voadinika',
-'mwsuggest-disable' => 'Tsy hampiasa ny toro-hevi-pikarohana AJAX',
 'searcheverything-enable' => "Hitady anatin'ny anaran-tsehatra rehetra:",
 'searchrelated' => 'voadinika',
 'searchall' => 'rehetra',
 'showingresults' => "Omeo ny valiny{{PLURAL:$1||}} miisa hatramin'ny <b>$1</b> manomboka ny #<b>$2</b>.",
 'showingresultsnum' => 'Omeo ny valiny miisa <b>$3</b> manomboka ny #<b>$2</b>.{{PLURAL:||}}',
 'showingresultsheader' => "{{PLURAL:$5}}Valim-pikaronhana '''$1x–$2''' an'i '''$3''' ho an'i '''$4'''",
-'nonefound' => "'''Fanamarihana''': ny mahatonga ny fikarohana tsy hahita vokany matetika dia ny
-fampiasanao teny miasa matetika toy ny \"izay\" sy ny \"tsy\",
-na ny fanomezanao teny mihoatra ny iray (ny pejy ahitana ny teny rehetra hokarohina
-ihany no miseho amin'ny vokatry ny karoka).",
 'search-nonefound' => 'Tsy nahitana valiny ilay fanontaniana.',
-'powersearch' => 'Fitadiavana',
 'powersearch-legend' => 'Fikarohana havanana',
 'powersearch-ns' => "Hitady anatin'ny anaran-tsehatra :",
 'powersearch-redir' => 'Ampiseho ny redirect',
-'powersearch-field' => 'Hitady',
 'powersearch-togglelabel' => 'Marihana:',
 'powersearch-toggleall' => 'Rehetra',
 'powersearch-togglenone' => 'Tsy misy',
@@ -1341,7 +1317,6 @@ ihany no miseho amin'ny vokatry ny karoka).",
 'preferences' => 'Ny momba anao',
 'mypreferences' => 'Safidy',
 'prefs-edits' => 'isa ny fanovàna :',
-'changepassword' => 'Hanova tenimiafina',
 'prefs-skin' => 'Endrika',
 'skin-preview' => 'Tsipalotra',
 'datedefault' => 'Tsy misy safidy',
@@ -1364,25 +1339,22 @@ ihany no miseho amin'ny vokatry ny karoka).",
 'prefs-email' => 'Safidy mikasika ny imailaka',
 'prefs-rendering' => 'Fampisehoana',
 'saveprefs' => 'Tehirizo',
-'resetprefs' => 'Avereno',
 'restoreprefs' => "Hamerina ny safidy taloha (amin'ny fizarana rehetra)",
 'prefs-editing' => 'Fanovana',
 'rows' => 'Filaharana :',
 'columns' => 'Tsanganana/Tioba :',
 'searchresultshead' => 'Fikarohana',
-'resultsperpage' => "Isa ny valiny isakin'ny pejy :",
 'stub-threshold' => 'Fetra ambony ho an\'i <a href="#" class="stub">rohim-bangovango</a> (oktety):',
 'stub-threshold-disabled' => 'Tsy alefa',
 'recentchangesdays' => "Isa ny andro ho ampiseho eo amin'ny fanovàna farany",
 'recentchangesdays-max' => '($1 andro{{PLURAL:$1||}} fara-faha betsany)',
 'recentchangescount' => "Isan'ny fanovana haseho (tsipalotra) :",
-'prefs-help-recentchangescount' => 'Misy ny fanovana farany, ny tantaram-pejy ary ny laogy',
+'prefs-help-recentchangescount' => 'Misy ny fiovana farany, ny tantaram-pejy ary ny laogy',
 'savedprefs' => 'Voatahiry ny mombamomba anao.',
 'timezonelegend' => "Faritr'ora :",
 'localtime' => 'Ora an-toerana',
 'timezoneuseserverdefault' => 'Sanda tsipalotry ny wiki ($1)',
 'timezoneuseoffset' => 'Hafa (safidio ny faritra)',
-'timezoneoffset' => "Fahasamihafan'ny ora<sup>1</sup>:",
 'servertime' => "Oran'ny lohamilina",
 'guesstimezone' => "
 Fenoy araka ny datin'ny solosainan'ny mpitsidika",
@@ -1563,7 +1535,7 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'right-importupload' => 'mampiditra na manafatra pejy avy amina rakitra iray',
 'right-patrol' => "Manamarina ny fanovan'ny hafa",
 'right-autopatrol' => 'Manamarika ny fanovany efa nomarihana',
-'right-patrolmarks' => "Mijery ny mariky ny fanamarihana any amin'ny fanovana farany",
+'right-patrolmarks' => "Mijery ny mariky ny fanamarihana any amin'ny fiovana farany",
 'right-unwatchedpages' => 'Mijery ny lisitry ny pejy tsy arahina',
 'right-mergehistory' => 'Manatsonika ny tantaram-pejy',
 'right-userrights' => "Manova ny fahefan'ny mpikambana",
@@ -1626,7 +1598,7 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'nchanges' => '{{PLURAL:$1|fanovana|fanovana}} $1',
 'enhancedrc-since-last-visit' => '$1 ({{PLURAL:$1|hatry ny famangiana farany}})',
 'enhancedrc-history' => 'tantara',
-'recentchanges' => 'Fanovana farany',
+'recentchanges' => 'Fiovana farany',
 'recentchanges-legend' => 'Safidy ny fanovàna farany',
 'recentchanges-summary' => "Jereo eto amin'ity pejy ity izay vao niova vao haingana teto amin'ity wiki ity.",
 'recentchanges-noresult' => "Tsy misy fanovana miady amin'ny fepe-potoana napetraka.",
@@ -1636,7 +1608,6 @@ Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa."
 'recentchanges-label-bot' => "Nataon'ny rôbô ity fanovana ity.",
 'recentchanges-label-unpatrolled' => 'Ity fanovana ity dia mbola tsy voamarina',
 'recentchanges-legend-newpage' => '$1 - pejy vaovao',
-'rcnote' => "!Ity ny {{PLURAL:$1|fanovàna farany|fanovàna farany}} $1 natao nandritra ny <b>$2</b> andro, hatramin'ny $4 tamin'ny ora faha $5.",
 'rcnotefrom' => "Ity eto ambany ity ny lisitry ny vao niova manomboka ny <b>$2</b> (hatramin'ny <b>$1</b> no miseho).",
 'rclistfrom' => 'Asehoy izay vao niova manomboka ny $1',
 'rcshowhideminor' => '$1 ny fanovàna kely',
@@ -1896,7 +1867,7 @@ ity wiki ity dia no-regler-na ho sarababem-bahoaka.",
 'license' => 'Lisansy:',
 'license-header' => "Navoaka tambanin'ny lisansy",
 'nolicense' => 'Tsy misy safidy',
-'license-nopreview' => '(Topi-maso tsy misy)',
+'license-nopreview' => '(Tsy misy topi-maso)',
 'upload_source_url' => " (URL misy ary azo vangian'ny daholobe)",
 'upload_source_file' => " (rakitra eo amin'ny milinao)",
 
@@ -2102,10 +2073,8 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny
 'protectedpages' => 'Pejy voaaro',
 'protectedpages-indef' => 'Ny fiarovana maharitra ihany',
 'protectedpages-cascade' => 'Ny fanovana an-driana ihany',
-'protectedpagestext' => "Ny pejy manaraka dia voaaro amin'ny fanovana sy ny famindrana.",
 'protectedpagesempty' => 'Tsy misy pejy voaaro ankehitriny.',
 'protectedtitles' => 'Lohateny voaaro',
-'protectedtitlestext' => "Ny lohateny manaraka dia voaaro amin'ny famoronana",
 'protectedtitlesempty' => "Tsy misy lohateny voaaro miaraka amin'ireo mpihazaka ireo.",
 'listusers' => 'Lisitry ny mpikambana',
 'listusers-editsonly' => "Ny mpikambana manam-pandraisan'anjara ihany no aseho",
@@ -2157,9 +2126,6 @@ Azonao ferana ny fahitana ny tao amin'ny fisafidianana karazana laogy iray, anar
 'allpagesto' => "Asehoy ny pejy manomboka amin'ny :",
 'allarticles' => 'Lahatsoratra rehetra',
 'allinnamespace' => 'Pejy rehetra ($1 namespace)',
-'allnotinnamespace' => "Ny pejy rehetra (tsy ao amin'ny $1 namespace)",
-'allpagesprev' => 'Aloha',
-'allpagesnext' => 'Manaraka',
 'allpagessubmit' => 'Alefa',
 'allpagesprefix' => "Asehoy ny pejy miantomboka amin'ny:",
 'allpagesbadtitle' => 'Tsy mety ny anaram-pejy : misy tovona iraisam-piteny na interwiki natokana, na misy soratra iray na maro tsy azo ampiasaina anaty anaram-pejy.',
@@ -2285,11 +2251,11 @@ na tsy maniry handray imailaka avy amin'ny mpikambana hafa izy.",
 'watchlist-details' => "Pejy $1{{PLURAL:}} ao amin'ny lisitry ny pejy arahanao, tsy isaina ny pejin-dresaka.",
 'wlheader-enotif' => "Alefa ny fampilazana amin'ny mailaka.",
 'wlheader-showupdated' => "Aseho '''sorabaventy''' ny pejy niova taorian'ny famangianao azy farany.",
-'watchmethod-recent' => 'fanamarinana ny fanovana farany hahitana pejy arahana',
-'watchmethod-list' => 'fanamarinana ny pejy arahana ahitana fanovana farany',
+'watchmethod-recent' => 'fanamarinana ny fiovana farany hahitana pejy arahana',
+'watchmethod-list' => 'fanamarinana ny pejy arahana hahitana fiovana vao haingana',
 'watchlistcontains' => "Ao amin'ny pejy arahanao dia ahitana pejy $1{{PLURAL:}}.",
 'iteminvalidname' => "Olana amin'ny zavatra « $1 » : tsy ara-dalàna ny anarana...",
-'wlnote' => "Eo ambany dia ahitana ny  {{PLURAL:$1|fanovana farany indrindra|ny fanovana ''$1'' farany}} natao tanatin'ny adin'ny {{PLURAL:$2|iray|'''$2'''}}, nanomboka ny $3, $4.",
+'wlnote' => "Eo ambany dia ahitana ny {{PLURAL:$1|fiovana farany indrindra|ny fiovana ''$1'' farany}} natao tanatin'ny adin'ny {{PLURAL:$2|iray|'''$2'''}}, nanomboka ny $3, $4.",
 'wlshowlast' => 'Haneho ny $1 ora farany, ny $2 andro farany na $3',
 'watchlist-options' => 'Safidy ny lisitry ny pejy arahana',
 
@@ -2376,15 +2342,15 @@ ataovy am-pitandremana ity tao ity.",
 'rollbacklink' => 'foano',
 'rollbacklinkcount' => 'hamoana fanovana{{PLURAL:$1}} $1',
 'rollbackfailed' => "Tsy voaverina amin'ny teo aloha",
-'cantrollback' => "Tsy afaka iverenana ny fanovana; ny mpanova farany ihany no tompon'ny pejy.",
-'alreadyrolled' => "Tsy afaka foanana ny fanovana ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
+'cantrollback' => "Tsy afaka iverenana ny fiovana; ny mpanova farany ihany no tompon'ny pejy.",
+'alreadyrolled' => "Tsy afaka foanana ny fiovan'ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
 
-Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fanovana farany.",
+Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fiovana farany.",
 'editcomment' => "Toy izao no fanamarihana momba io fanovana io: \"''\$1''\".",
 'revertpage' => "Voafafa ny fanovana ny [[Special:Contributions/$2|$2]] ([[User talk:$2|Dinika]]); voaverina amin'ny votoatiny teo aloha nataon'i [[User:$1|$1]]",
 'revertpage-nouser' => "Manala ny fanovana (nataom-pikambana voaafina), miverina any amin'ny filaza faran'i  [[User:$1|$1]]",
-'rollback-success' => "Fanalàna ny fanovana nataon'i $1 ;
-miverina any amin'ny santiôna farany nataon'i $2.",
+'rollback-success' => "Fanesorana ny fiovana nataon'i $1 ;
+fiverenana amin'ny fiovana farany nataon'i $2.",
 
 # Edit tokens
 'sessionfailure-title' => 'Tsi-fetezaka mikasika ny kaonty idirana',
@@ -2482,7 +2448,6 @@ Mety rohy tsy izy no anananao, na mety voafafa na naverina tamin'ny tahiry ilay
 'undeletebtn' => 'Avereno!',
 'undeletelink' => 'Topi-maso/averina',
 'undeleteviewlink' => 'hijery',
-'undeletereset' => 'Hamerina',
 'undeleteinvert' => 'Hampifamaidika ny safidy',
 'undeletecomment' => 'Antony :',
 'undeletedrevisions' => 'voaverina ny {{PLURAL:$1|fanovana|fanovana}} $1',
@@ -2543,7 +2508,7 @@ Aseho eo ambany ny laogim-panakanana mba hampahalala anao :",
 Aseho eo ambany ny iditra farany ao amin'ny laogim-panakanana  mba hampahalala :",
 'sp-contributions-search' => "Hikaroka fandraisan'anjara",
 'sp-contributions-username' => 'Adiresy IP na anaram-pikambana :',
-'sp-contributions-toponly' => 'Fanovana izay farany eo ihany no aseho',
+'sp-contributions-toponly' => 'Fiovana izay farany ihany no aseho',
 'sp-contributions-submit' => 'Hikaroka',
 
 # What links here
@@ -2570,7 +2535,6 @@ Aseho eo ambany ny iditra farany ao amin'ny laogim-panakanana  mba hampahalala :
 'block' => 'Hanakana ilay mpikambana',
 'unblock' => "Hanala ny sakan'ilay mpikambana",
 'blockip' => 'Sakano ny mpikambana',
-'blockip-title' => 'Hanakana ilay mpikambana',
 'blockip-legend' => 'Sakano ny mpikambana',
 'blockiptext' => "Ampiasao ity formulaire ity hisakanana ny fahazoan-dàlana hanoratra
 ananan'ny adiresy IP iray na solonanarana iray.
@@ -2580,7 +2544,6 @@ Fenoy etsy ambany ny antony manokana (ohatra, mitanisà pejy nosomparana).",
 'ipadressorusername' => 'Adiresy IP na solonanarana',
 'ipbexpiry' => 'Fahataperana',
 'ipbreason' => 'Antony :',
-'ipbreasonotherlist' => 'Antony hafa',
 'ipb-hardblock' => 'Hanakana ny mpikambana nisoratra anarana mampiasa ity adiresy IP ity',
 'ipbcreateaccount' => 'Hanakana ny fanokafana kaonty',
 'ipbemailban' => 'Hanakana ny fandefasana imailaka',
@@ -2588,8 +2551,6 @@ Fenoy etsy ambany ny antony manokana (ohatra, mitanisà pejy nosomparana).",
 'ipbsubmit' => 'Sakano',
 'ipbother' => 'Hafa',
 'ipboptions' => '2 ora:2 hours,1 andro:1 day,3 andro:3 days,1 herinandro:1 week,2 herinandro:2 weeks,1 volana:1 month,3 volana:3 months,6 volana:6 months,1 taona:1 year,mandrakizay:infinite',
-'ipbotheroption' => 'hafa',
-'ipbotherreason' => 'Antony hafa na fanampiny :',
 'ipbhidename' => "Hanitrika ny anaram-pikambana anatin'ny fanovana sy anaty lisitra",
 'ipbwatchuser' => "Hanaraka ny pejim-pikambana sy pejin-dresak'ity mpikambana ity",
 'ipb-disableusertalk' => 'Manakana ilay mpikambana hanova ny pejin-dresany mandritry ny sakana',
@@ -2680,7 +2641,6 @@ Ao amin'ny laharana $2 izay afaka alàna sakana anefa izy io.",
 'proxyblockreason' => "Voasakana ny adiresy IP-nao satria adiresy proxy malalaka izy io. Azafady mba lazao amin'ny mpanome internet anao io olana io.",
 'sorbsreason' => "Voasokokajin'ny DNSBL ho ao anatin'ny proxy midanadana ny adiresy IP-nao.",
 'sorbs_create_account_reason' => "Voasokajy ho isan'ny proxy midanadana ao amin'ny DNSBL ny adiresy IP-nao. Ireo IP ireo dia ahiana ho fitaovana azon'ny mpandefa spam ampiasaina. Tsy afaka manokatra kaonty ianao.",
-'cant-block-while-blocked' => 'Tsy azo sakananao ny mpikambana hafa raha mbola voasakana ianao.',
 'cant-see-hidden-user' => "Ny mpikambana andramanao sakanana dia efa nosakanana ary nasitrika.
 Noho ianao tsy manana ny zon'ny mpanitrika mpikambana (''hideuser''), tsy azonao jerena na ovaina ny sakan'ity mpikambana ity.",
 'ipbblocked' => "Tsy afaka manala ny sakan'ny mpikambana hafa ianao, satria voasakana koa ianao",
@@ -2734,7 +2694,6 @@ Mety ho fiovana lehibe ary tsy ampoizina ny fanaovana izany ho an'ny pejy voatsi
 
 Tokony ataonao rery io asa io (fusion)",
 'movearticle' => 'Afindrao toerana ny pejy',
-'movenologin' => 'Tsy mbola tafiditra ianao',
 'movenologintext' => 'Ny mpikambana nisoratra anarana sy [[Special:UserLogin|tafiditra]] ihany no afaka mamindra toerana takelaka.',
 'movenotallowed' => 'Tsy azo ovainao anarana ny pejy.',
 'movenotallowedfile' => 'Tsy mahazo ovainao anarana ny rakitra.',
@@ -2751,11 +2710,6 @@ Tokony ataonao rery io asa io (fusion)",
 tsy mety ny anarana nosafidianao.
 Azafady mba misafidiana anarana hafa.',
 'cantmove-titleprotected' => "Tsy azonao afindra any amin'io anarana io ny rakitra satria ny famoronana pejy mitondra io lohateny io dia voaaro.",
-'talkexists' => "
-'''Tafafindra soa aman-tsara ny pejy, fa ny pejin-dresaka
-miaraka aminy no tsy afaka nakisaka satria efa misy pejin-dresaka
-mifanaraka amin'ilay anarana vaovao. Azafady mba atambaro izay pejin-dresaka izay.'''",
-'movedto' => "voafindra any amin'ny",
 'movetalk' => 'Afindrao any koa ny "pejin-dresaka", raha mety.',
 'move-subpages' => "Hanova ny anaranan'ny zana-pejy (hatramin'ny pejy miisa $1)",
 'move-talk-subpages' => "Hanova ny anaranan'ny zana-pejin'ny pejin-dresaka (hatramin'ny pejy miisa $1).",
@@ -2795,15 +2749,12 @@ Anarana hafa omena.",
 
 # Export
 'export' => 'Hamoaka pejy',
-'exporttext' => "Afaka manondrana ny lahatsoratra miaraka amin'ny tantaram-panovana ny pejy na vondrom-pejy maromaro ianao.
-Aoriana dia mety hafaran'ny wiki iray mandeha amin'ny rindrankajy MediaWiki izany, na dia mbola tsy afaka
-atao aza izany amin'izao fotoana izao.
+'exporttext' => "Afaka mamoaka lahatsoratra ary tantaram-piovana amin'ny pejy tokana, na vondrom-pejy mifonona anaty XML ianao.
+Azo ampidirina amy wiki hafa izany amin'ny alalan'ny [[Special:Import|pejy fanafarana]].
 
-Ny fomba fanondranana pejy dia, manomeza lohateny izay na maromaro eto amin'ny boaty ety ambany eto, lohateny iray isaky ny andalana,
-ary safidio na ny votoatiny ankehitriny ihany no ilainao na miaraka amin'ny endriky ny pejy rehetra taloha, sy hoe ny votoatiny ankehitriny
-miampy fampahalalana momba ny fanovana farany fotsiny ve sa miaraka amin'ny tantaran'ny fanovana rehetra.
+Raha hamoaka pejy iray dia atso tsohy eo amin'ny boaty eo ambany ny lohatenin'ny pejinao, andalana iray isaky ny pejy, ary ataovy ny safidy: maka ny tantaram-piovany, na ny fiovana farany ihany.
 
-Etsy amin'ny toerana farany dia afaka mampiasa rohy ihany koa ianao, ohatra [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ho an'ny [[{{MediaWiki:Mainpage}}]].",
+Ho an'ny tranga voalaza farany, dia azonao ampaisaina ny rohy, ohatra [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ho an'ny pejy \"[[{{MediaWiki:Mainpage}}]]\".",
 'exportall' => 'Hamoaka ny pejy rehetra',
 'exportcuronly' => "Ny votoatiny ankehitriny ihany no haondrana fa tsy miaraka amin'ny tantarany iray manontolo",
 'exportnohistory' => "
@@ -3027,7 +2978,7 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'pageinfo-firstuser' => 'Mpamorona ilay pejy',
 'pageinfo-firsttime' => 'Daty namoronana ilay pejy',
 'pageinfo-lastuser' => 'Mpanova farany',
-'pageinfo-lasttime' => "Datin'ny fanovana farany",
+'pageinfo-lasttime' => 'Daty niovàna farany',
 'pageinfo-edits' => "Isa manontolon'ny fanovana",
 'pageinfo-authors' => "Isa manontolon'ny mpandray anjara",
 'pageinfo-recent-edits' => "Fanovana vao haingana (natao tanatin'ny $1)",
@@ -3053,7 +3004,7 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
 'markaspatrolledtext' => 'Marihana ho hita sy voatsara',
 'markedaspatrolled' => 'Voamarina',
 'markedaspatrolledtext' => "Ny santiôna voafidy an'ny [[:$1]] dia voamarika ho voamarina.",
-'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fanovana farany.",
+'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fiovana farany.",
 'rcpatroldisabledtext' => 'Tsy atao ankehitriny ny fanamarinana ny pejy novaina farany.',
 'markedaspatrollederror' => 'Tsy afaka marihana ho voamarina',
 'markedaspatrollederrortext' => 'Tsy maintsy misafidy santiôna iray ianao mba hahafahanao manamarika azy ho voamarina.',
@@ -3090,7 +3041,7 @@ Raha alefanao ilay izy, mety ho simban'io renifango io ny solosainao.",
 'file-info' => 'Haben-drakitra : $1, karazana MIME : $2',
 'file-info-size' => "$1 × $2 teboka, haben'ilay rakitra : $3, endrika MIME : $4",
 'file-info-size-pages' => '$1 × $2 teboka, haben-drakitra : $3, karazana MIME $4, pejy $5 {{PLURAL:}}',
-'file-nohires' => "Tsy misy sary ngeza non'io",
+'file-nohires' => 'Tsy misy sary lehiba noho io.',
 'svg-long-desc' => 'rakitra SVG, habe $1 × $2 teboka, habe : $3',
 'svg-long-error' => 'Rakitra SVG tsy ekena : $1',
 'show-big-image' => "Hijery ny tena haben'ny sary",
@@ -3365,15 +3316,10 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-m' => "Avaratra arak'andriamby",
 
-# External editor support
-'edit-externally' => "Ovao amin'ny alalan'ny fampiasana fitaovana ivelan'ity Wiki ity io rakitra io",
-'edit-externally-help' => "jereo any amin'[https://www.mediawiki.org/wiki/Manual:External_editors ny torolalana] ny fanazavana fanampiny,.",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'rehetra',
 'namespacesall' => 'rehetra',
 'monthsall' => 'rehetra',
-'limitall' => 'rehetra',
 
 # Email address confirmation
 'confirmemail' => 'Fanamarinana adiresy imailaka.',
@@ -3397,7 +3343,6 @@ Ity no naverin'ny mpandefa mailaka : $1",
 'confirmemail_needlogin' => 'Mila $1 ianao raha hanamarina ny adiresy imailakao.',
 'confirmemail_success' => 'Voamarina ny adiresy imailakao. Afaka [[Special:UserLogin|miditra]] ianao ankehitriny ary mankafia ny wiki.',
 'confirmemail_loggedin' => 'Voamarina ny adiresy imailakao ankehitriny.',
-'confirmemail_error' => 'Nisy tsy fetezana nandritra ny fanamarinana adiresy imailaka.',
 'confirmemail_subject' => "Fanamarinana adiresy imailaka avy amin'ny sehatra {{SITENAME}}",
 'confirmemail_body' => 'Nisy olona, izay ianao ihany angamba, avy tamin\'ny adiresy IP $1, nanokatra kaonty
 "$2" tamin\'ity adiresy imailaka ity tao amin\'ny sehatra {{SITENAME}}.
@@ -3524,7 +3469,7 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 'specialpages-group-maintenance' => 'laogy hikojakojana',
 'specialpages-group-other' => 'Pejy manokana hafa',
 'specialpages-group-login' => 'Hiditra / hisoratra anarana',
-'specialpages-group-changes' => 'Fanovana farany sy laogy',
+'specialpages-group-changes' => 'Fiovana farany sy laogy',
 'specialpages-group-media' => 'Laogy sy fampidirana rakitra media.',
 'specialpages-group-users' => 'Mpikambana sy satany',
 'specialpages-group-highuse' => 'Pejy ampiasaina mafy',
@@ -3563,7 +3508,6 @@ Azonao atao ihany koa ny [[Special:EditWatchlist/raw|manova ilay lisitra amin'ny
 
 # Special:ComparePages
 'comparepages' => 'Hampitaha pejy',
-'compare-selector' => 'Hampitaha ny santiôm-pejy',
 'compare-page1' => 'Pejy 1',
 'compare-page2' => 'Pejy 2',
 'compare-rev1' => 'Santiôna 1',
index 1c504f3..e5b3886 100644 (file)
@@ -12,6 +12,7 @@
  * @author Jose77
  * @author Kaganer
  * @author Lifeway
+ * @author Shirayuki
  * @author Сай
  * @author Санюн Вадик
  */
@@ -102,9 +103,9 @@ $messages = array(
 'tog-extendwatchlist' => 'Чыла вашталтышым, а пытартыш гына огылым ончыкташлан эскерыме лӱмерым кугемдаш',
 'tog-usenewrc' => 'У тӧрлатымаш саемдыме лӱмерым кучылташ (JavaScript кӱлеш)',
 'tog-numberheadings' => 'Вуймутым автоматик йӧн дене радамлаш',
-'tog-showtoolbar' => 'Тӧрлатымаш ӱзгараҥам ончыкташ (JavaScript кӱлеш)',
+'tog-showtoolbar' => 'Тӧрлатымаш ӱзгараҥам ончыкташ',
 'tog-showtoc' => 'Вуймут радамым ончыкташ (3 деч шуко вуймутан лаштык-влаклан)',
-'tog-rememberpassword' => 'Тиде компьютерышто мыйын шолыпмутым шарнаш (эн шуко $1 {{PLURAL:$1|кечылын|кечылан}})',
+'tog-rememberpassword' => 'Тиде компьютерышто мыйын шолыпмутым шарнаш (эн шуко $1 {{PLURAL:$1|1=кечылын|кечылан}})',
 'tog-watchcreations' => 'Мыйын ыштыме лаштык-влакым эскерыме лӱмерыш ешараш',
 'tog-watchdefault' => 'Мыйын тӧрлатыме лаштык-влакым эскерыме лӱмерыш ешараш',
 'tog-watchmoves' => 'Мыйын лӱмым вашталтыме лаштык-влакым эскерыме лӱмерыш ешараш',
@@ -112,7 +113,6 @@ $messages = array(
 'tog-minordefault' => 'Посна каласыме огыл гын, чыла тӧрлатымашым изи тӧрлатымаш гай палемдаш',
 'tog-previewontop' => 'Тӧрлатымаш тӧрза деч ончыч ончылгоч ончымашым шындаш',
 'tog-previewonfirst' => 'Ончылгоч ончымашым икымше тӧрлатымаш годым ончыкташ',
-'tog-nocache' => 'Лаштыкым кешироватлымым чараш',
 'tog-enotifwatchlistpages' => 'Мыйын эскерыме лӱмер гыч лаштыкыште тӧрлатымыш нерген электрон почто гоч шижтараш',
 'tog-enotifusertalkpages' => 'Мыйын каҥашымаш лаштыкыште тӧрлатымыш нерген электрон почто гоч шижтараш',
 'tog-oldsig' => 'Кызытсе кидпале',
@@ -180,16 +180,16 @@ $messages = array(
 'dec' => 'Теле',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категорий|Категорий}}',
+'pagecategories' => '{{PLURAL:$1|1=Категорий|Категорий}}',
 'category_header' => '"$1" категорийыште лаштык-влак',
 'subcategories' => 'Ӱлылкатегорий-влак',
 'category-media-header' => '"$1" категорийыште файл-влак',
 'category-empty' => "''Ты жаплан тиде категорийыште нимоат уке.''",
-'hidden-categories' => '{{PLURAL:$1|Шылтыме категорий|Шылтыме категорий-влак}}',
+'hidden-categories' => '{{PLURAL:$1|1=Шылтыме категорий|Шылтыме категорий-влак}}',
 'hidden-category-category' => 'Шылтымо категорий-влак',
-'category-subcat-count' => '{{PLURAL:$2|Тиде категорийыш ик ӱлылкатегорий гына пура.|{{PLURAL:$1|Тыгай $1 ӱлылкатегорий|Тыгане $1 ӱлылкатегорий-влак}} тиде категорийыште, чыла $2.}}',
-'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
-'category-file-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|$1 лаштык|$1 лаштык}} тиде категорийыште, чылажге $2.}}',
+'category-subcat-count' => '{{PLURAL:$2|Тиде категорийыш ик ӱлылкатегорий гына пура.|{{PLURAL:$1|1=Тыгай $1 ӱлылкатегорий|Тыгане $1 ӱлылкатегорий-влак}} тиде категорийыште, чыла $2.}}',
+'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|1=Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
+'category-file-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|1=$1 лаштык|$1 лаштык}} тиде категорийыште, чылажге $2.}}',
 'listingcontinuesabbrev' => '(умбакыжым)',
 'noindex-category' => 'Шотыш налдыме лаштык-влак',
 
@@ -208,7 +208,6 @@ $messages = array(
 'qbedit' => 'Тӧрлаташ',
 'qbpageoptions' => 'Тиде лаштык',
 'qbmyoptions' => 'Мыйын лаштык-влак',
-'qbspecialpages' => 'Лӱмын ыштыме лаштык-влак',
 'faq' => 'ЧӱВаЙо (Чӱчкыдын вашлиялтше йодыш-влак)',
 
 # Vector skin
@@ -259,7 +258,7 @@ $messages = array(
 'talk' => 'Каҥашымаш',
 'views' => 'Ончалаш',
 'toolbox' => 'Ӱзгар-влак',
-'userpage' => 'Пайдаланышын лаштыкым ончалаш',
+'userpage' => 'Ð\9fайдаланÑ\8bÑ\88Ñ\8bн Ð»Ð°Ñ\88Ñ\82Ñ\8bкÑ\88Ñ\8bм Ð¾Ð½Ñ\87алаÑ\88',
 'imagepage' => 'Файлын лаштыкым ончалаш',
 'templatepage' => 'Ямдылыкын лаштыкым ончалаш',
 'viewhelppage' => 'Полыш лаштыкым ончалаш',
@@ -361,7 +360,7 @@ $messages = array(
 'yourpasswordagain' => 'Шолыпмутым угыч пуртымаш:',
 'createacct-yourpasswordagain' => 'Шолыпмутым пеҥгыдемде',
 'createacct-yourpasswordagain-ph' => 'Шолыпмутым угыч пурто',
-'remembermypassword' => 'Тиде компьютерыште мыйым шарнаш (эн шуко $1 {{PLURAL:$1|кечылан|кечылан}})',
+'remembermypassword' => 'Тиде компьютерыште мыйым шарнаш (эн шуко $1 {{PLURAL:$1|1=кечылан|кечылан}})',
 'yourdomainname' => 'Тендан домен:',
 'login' => 'Шке денет палдаре',
 'nav-login-createaccount' => 'Пураш/Регистрацийым эрте',
@@ -388,7 +387,7 @@ $messages = array(
 Эше ик гана ыштен ончо.',
 'wrongpasswordempty' => 'Тый яра шолыпмутым пуртенат.
 Эше ик гана ыштен ончо.',
-'passwordtooshort' => 'Шолыпмут {{PLURAL:$1|1 символ|$1 символ}} деч шагал огыл лийшаш.',
+'passwordtooshort' => 'Шолыпмут {{PLURAL:$1|1=1 символ|$1 символ}} деч шагал огыл лийшаш.',
 'mailmypassword' => 'У шолыпмутым колташ',
 'passwordremindertitle' => '{{SITENAME}} сайтлан жаплан ыштыме у шолыпмут',
 'passwordremindertext' => '{{SITENAME}} сайтлан ($4) $1 IP адрес гыч ала кӧ (але тый шкеак) у шолыпмутым йодын. "$2" пайдаланышылан жаплан ыштыме у шолыпмутым ыштыме да "$3" электрон адресыш колтымо. Тидым тый йодынат гын, системыш у шолыпмут дене пуро.
@@ -401,7 +400,7 @@ $messages = array(
 'loginlanguagelabel' => 'Йылме: $1',
 
 # Change password dialog
-'resetpass' => 'Шолыпмутым вашталташ',
+'changepassword' => 'Шолыпмутым вашталташ',
 'oldpassword' => 'Тошто шолыпмут:',
 'newpassword' => 'У шолыпмут:',
 'retypenew' => 'Пеҥгыдемдыза у шолыпмутым:',
@@ -454,6 +453,7 @@ $messages = array(
 'previewnote' => "'''Тиде ончылгоч ончымаш гына;
 вашталтыш-влакым эше аралыме огыл!'''",
 'editing' => 'Тӧрлаталтеш $1',
+'creating' => '$1 лаштыкым ыштемаш',
 'editingsection' => 'Тӧрлаталтеш $1 (ужаш)',
 'yourtext' => 'Тендан текст',
 'yourdiff' => 'Ойыртем',
@@ -461,12 +461,12 @@ $messages = array(
 Возыметым нигӧлан пайдаланаш, тӧрлаташ ынет пу гын тышке тудым ит шыҥдаре.<br />
 Тыгак текстым шке возымо але тудым эрыкан вер гыч налме шотышто мутым пуэт.<br />
 '''АВТОР АЛЕ ТУДЫН ПРАВАМ АРАЛЫШЕ-ВЛАК ДЕЧ ЙОДДЕ МАТЕРИАЛЫМ ИТ ШЫҤДАРЕ!'''",
-'templatesused' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|ямдылык|ямдылык-влак}}:',
-'templatesusedpreview' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|ямыдылык|ямдылык-влак}}:',
+'templatesused' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|1=ямдылык|ямдылык-влак}}:',
+'templatesusedpreview' => 'Тиде лаштыкыште кучылтмо {{PLURAL:$1|1=ямыдылык|ямдылык-влак}}:',
 'template-protected' => '(тӧрлаташ чарыме)',
 'template-semiprotected' => '(верын аралыме)',
-'hiddencategories' => 'Тиде лаштык $1 {{PLURAL:$1|шылтыме категорийыш|шылтыме категорийыш}} лектеш:',
-'permissionserrorstext-withaction' => "Тыйын '''$2''' кертмашет шагал. Тиде {{PLURAL:$1|амал ден|амал дене}}:",
+'hiddencategories' => 'Тиде лаштык $1 {{PLURAL:$1|1=шылтыме категорийыш|шылтыме категорийыш}} лектеш:',
+'permissionserrorstext-withaction' => "Тыйын '''$2''' кертмашет шагал. Тиде {{PLURAL:$1|1=амал ден|амал дене}}:",
 'recreate-moveddeleted-warn' => "'''Йолташ, тиде лаштыкым тиддеч ончыч шӧреныт.''' Тудым илаҥдарыме деч ончыч, тыгай лаштык кӱлешак мо - тергыман. Ӱлнырак шӧрымаш да лӱм вашталтымаш журнал-влакым шергал лекташ лиеш.",
 'moveddeleted-notice' => 'Тиде лаштык шӧралтын.
 Лаштыклан шӧрымӧ да кусарыме нерген журнал ӱлнӧ ончыктымо.',
@@ -519,21 +519,17 @@ $messages = array(
 'lineno' => '$1 корно:',
 'compareselectedversions' => 'Ойырымо версий-влакым таҥастараш',
 'editundo' => 'чараш',
-'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточные версии|не показаны $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})',
+'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточных версий|не показаны $1 промежуточные версии}} {{PLURAL:$2|1=$2 участника|$2 участников}})',
 
 # Search results
 'searchresults' => 'Кычалын мумо',
 'searchresults-title' => '«$1»лан кычалын мумо',
-'searchresulttext' => "{{SITENAME}}'ыште кычалмаш нерген шукырак палнеда гын, [[{{MediaWiki:Helppage}}|полышым]] ончыза.",
-'searchsubtitle' => 'Тый кычалынат: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|чыла лаштык-влакым, кудыжо тӱҥалыт: "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|чыла лаштык-влакым, "$1" дене кылым палемдат]])',
-'searchsubtitleinvalid' => "Тый кычалыч '''$1'''",
-'notitlematches' => 'Лаштык-влакын лӱмыштышт икгайлык уке',
 'notextmatches' => 'Лаштык-влакыште икгайлык возымо уке',
 'prevn' => 'кодшо {{PLURAL:$1|$1}}',
 'nextn' => 'весе {{PLURAL:$1|$1}}',
 'prevn-title' => 'Кодшо $1 {{PLURAL:$1|результат}}',
 'nextn-title' => 'Весе $1 {{PLURAL:$1|результат}}',
-'shown-title' => 'Лаштыкыште $1 {{PLURAL:$1|возымаш|возымашым}} ончыкташ',
+'shown-title' => 'Лаштыкыште $1 {{PLURAL:$1|1=возымаш|возымашым}} ончыкташ',
 'viewprevnext' => 'Ончал ($1 {{int:pipe-separator}} $2) ($3)',
 'searchmenu-new' => "'''Тиде вики-проектыште «[[:$1]]» лӱман лаштыкым ышташ!'''",
 'searchprofile-articles' => 'Возымо лаштык-влак',
@@ -546,8 +542,8 @@ $messages = array(
 'searchprofile-images-tooltip' => 'Файл-влакым кычалмаш',
 'searchprofile-everything-tooltip' => 'Чыла лаштык-влакыште кычалаш (каҥашымаш лаштык-влакыштат)',
 'searchprofile-advanced-tooltip' => 'Искать в заданных пространствах имён',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 мут|$2 мут}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождения|вхождений}} ($2 {{PLURAL:$2|подкатегория|подкатегории|подкатегорий}}, $3 {{PLURAL:$3|файл|файла|файлов}}).',
+'search-result-size' => '$1 ({{PLURAL:$2|1=$2 мут|$2 мут}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождений|вхождения}} ($2 {{PLURAL:$2|подкатегория|подкатегорий|подкатегории}}, $3 {{PLURAL:$3|файл|файлов|файла}}).',
 'search-redirect' => '($1 вес вере колтымаш)',
 'search-section' => '(ужаш $1)',
 'search-suggest' => 'Але те $1 возынеда ыле',
@@ -556,14 +552,11 @@ $messages = array(
 'search-interwiki-more' => '(эше)',
 'searchrelated' => 'кылдалтше',
 'searchall' => 'чыла',
-'showingresultsheader' => "'''$4'''лан {{PLURAL:$5|'''$3''' гыч '''$1''' результат|'''$3''' гыч '''$1 - $2''' результат}}",
-'nonefound' => "'''Ешартыш''':  Посна палемдыме огыл гын, кычалмаш южо лӱм-влак коклаште гына эрта. Чыла лаштык-влак коклаште кычалашлан (каҥашымаш, ямдылык-влак да т.м.) шке йодмашыштет ''all:'' префиксым кучылт, але кӱлешан лӱм-влакым палемде.",
+'showingresultsheader' => "'''$4'''лан {{PLURAL:$5|1='''$3''' гыч '''$1''' результат|'''$3''' гыч '''$1 - $2''' результат}}",
 'search-nonefound' => 'Тыйын йодышет почеш нимо муалтын огыл',
-'powersearch' => 'Сайынрак кычал',
 'powersearch-legend' => 'Сайынрак кычалаш',
 'powersearch-ns' => 'Кычалаш тиде лӱм-влакын кумдыкышт-влакыште:',
 'powersearch-redir' => 'Вес вере колтымо лаштык-влакым ончыкташ',
-'powersearch-field' => 'Кычалаш',
 'powersearch-togglelabel' => 'Сайлаш:',
 'powersearch-toggleall' => 'Чыла',
 'powersearch-togglenone' => 'Нимо',
@@ -572,7 +565,6 @@ $messages = array(
 'preferences' => 'Келыштарымаш',
 'mypreferences' => 'Келыштарымаш',
 'prefs-edits' => 'Тӧрлатымаш чот:',
-'changepassword' => 'Шолыпмутым вашталташ',
 'prefs-skin' => 'Сӧрастарыме йӧн',
 'skin-preview' => 'Ончылгоч ончымаш',
 'prefs-datetime' => 'Кече да жап',
@@ -586,7 +578,6 @@ $messages = array(
 'prefs-email' => 'Электрон почто келыштарымаш',
 'prefs-rendering' => 'Тӱжвал сын',
 'saveprefs' => 'Аралаш',
-'resetprefs' => 'Тӧрлатымым шотыш налаш огыл',
 'restoreprefs' => 'Тӱҥалтыш келыштарымашым пӧртылташ',
 'prefs-editing' => 'Тöрлатымаш',
 'searchresultshead' => 'Кычалме',
@@ -611,7 +602,7 @@ $messages = array(
 'youremail' => 'Электрон почто:',
 'username' => '{{GENDER:$1|Пайдаланышын лӱмжӧ|Пайдаланышын лӱмжӧ}}:',
 'uid' => '{{GENDER:$1|Пайдаланышын}} ID-же:',
-'prefs-memberingroups' => '{{PLURAL:$1|Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Тӱшкаште шогышо|Тӱшка-влакыште шогышо}}:',
 'yourrealname' => 'Чын лӱмжӧ:',
 'yourlanguage' => 'Йылме:',
 'yournick' => 'Кидпале:',
@@ -653,7 +644,6 @@ $messages = array(
 'recentchanges-label-bot' => 'Тиде тӧрлатымашым бот ыштен',
 'recentchanges-label-unpatrolled' => 'Тиде тӧрлатымашым нигӧ терген огыл',
 'recentchanges-legend-newpage' => '$1 - у лаштык',
-'rcnote' => "Ӱлнӧ {{PLURAL:$1|'''1'''|'''$1'''}} вашталтыш пытартыш {{PLURAL:$2||'''$2'''}} кечылан, $5-лан, $4-лан.",
 'rcnotefrom' => "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
 'rclistfrom' => '$1 гыч тӱҥалын у вашталтымашым ончыкташ',
 'rcshowhideminor' => 'Изи тӧрлатымашым $1',
@@ -713,7 +703,7 @@ $messages = array(
 'filehist-filesize' => 'Файлын кугытшо',
 'filehist-comment' => 'Файл нерген:',
 'imagelinks' => 'Файлым кучылтмаш',
-'linkstoimage' => 'Тиде {{PLURAL:$1|$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:',
+'linkstoimage' => 'Тиде {{PLURAL:$1|1=$1 лаштык саде файл дене кылдалтын|$1 лаштык-влак саде файл дене кылдалтыныт}}:',
 'nolinkstoimage' => 'Тиде файл дене кылдалтше ик лаштыкат уке.',
 'sharedupload' => 'Тиде файлын верже: $1, туге гынат, тудым моло веренат кучылташ лиеш.',
 'uploadnewversion-linktext' => 'Тиде файлын у тӱрлыкшым пурташ',
@@ -747,7 +737,7 @@ $messages = array(
 'statistics-views-peredit' => 'Ик тӧрлатымашлан ончымо',
 'statistics-users' => 'Регистрацийым эртыше [[Special:ListUsers|пайдаланыше-влак]]',
 'statistics-users-active' => 'Чӱчкыдын пайдаланыше-влак',
-'statistics-users-active-desc' => 'Пытартыш {{PLURAL:$1|кечыште|$1 кечыште}} иктаж-мом ыштыше пайдаланыше-влак',
+'statistics-users-active-desc' => 'Пытартыш {{PLURAL:$1|1=кечыште|$1 кечыште}} иктаж-мом ыштыше пайдаланыше-влак',
 'statistics-mostpopular' => 'Эн чӱчкыдын ончымо лаштык-влак',
 
 'brokenredirects' => 'Пудыртымо вес вере колтымаш-влак',
@@ -757,9 +747,9 @@ $messages = array(
 'withoutinterwiki-submit' => 'ончыкташ',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байт}}',
-'nmembers' => '$1 {{PLURAL:$1|лаштык|лаштык-влак}}',
-'nviews' => '$1 {{PLURAL:$1|ончымо|ончымо-влак}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байт}}',
+'nmembers' => '$1 {{PLURAL:$1|1=лаштык|лаштык-влак}}',
+'nviews' => '$1 {{PLURAL:$1|1=ончымо|ончымо-влак}}',
 'lonelypages' => 'Тулык лаштык-влак',
 'wantedcategories' => 'Ыштыман категорий-влак',
 'wantedpages' => 'Ыштышаш лаштык-влак',
@@ -774,8 +764,8 @@ $messages = array(
 'newpages-username' => 'Пайдаланышын лӱмжӧ:',
 'move' => 'Кусараш',
 'movethispage' => 'Тиде лаштыкым кусараш',
-'pager-newer-n' => '{{PLURAL:$1|вес|вес}}',
-'pager-older-n' => '{{PLURAL:$1|ончычсо|ончычсо}}',
+'pager-newer-n' => '{{PLURAL:$1|1=вес|вес}}',
+'pager-older-n' => '{{PLURAL:$1|1=ончычсо|ончычсо}}',
 
 # Book sources
 'booksources' => 'Негызым пыштыше кнага-влак',
@@ -810,7 +800,7 @@ $messages = array(
 
 # Special:ActiveUsers
 'activeusers' => 'Чӱчкыдын пайдаланыше-влак',
-'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|кечыште|кечылаште}} $1 {{PLURAL:$1|тӧрлатымаш|тӧрлатымаш-влак}}',
+'activeusers-count' => 'Пытартыш $3 {{PLURAL:$3|1=кечыште|кечылаште}} $1 {{PLURAL:$1|1=тӧрлатымаш|тӧрлатымаш-влак}}',
 'activeusers-hidebots' => 'Бот-влакым шылташ',
 'activeusers-hidesysops' => 'Сайтвиктарыше-влакым шылташ',
 
@@ -832,7 +822,7 @@ $messages = array(
 'unwatch' => 'Эскерыман огыл',
 'unwatchthispage' => 'Эскерымым чарнаш',
 'watchlist-details' => 'Эскерымаш лӱмерыштет $1 {{PLURAL:$1|лаштык}}, каҥашымаш лаштык-влакым шотлыде',
-'watchlistcontains' => 'Тыйын лӱмерыште $1 {{PLURAL:$1|лаштык|лаштык}}.',
+'watchlistcontains' => 'Тыйын лӱмерыште $1 {{PLURAL:$1|1=лаштык|лаштык}}.',
 'wlshowlast' => 'Пытартыш $1 шагат $2 кечылан $3 ончыкташ',
 'watchlist-options' => 'Эскерыме лӱмерын келыштарымаш',
 
@@ -923,9 +913,9 @@ $messages = array(
 'nolinkshere-ns' => "Тыгай лӱм-влакын кумдыкышто '''[[:$1]]''' лаштык дене нимогай вес лаштык-влак кылым огыт кучо.",
 'isredirect' => 'вес вере колтышо лаштык',
 'istemplate' => 'пуртымаш',
-'isimage' => '!!FUZZY! файллан кылвер',
-'whatlinkshere-prev' => '{{PLURAL:$1|ончычсо|$1 ончычсо}}',
-'whatlinkshere-next' => '{{PLURAL:$1|вес|$1 вес}}',
+'isimage' => 'файллан кылвер',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=ончычсо|$1 ончычсо}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=вес|$1 вес}}',
 'whatlinkshere-links' => '← кылвер-влак',
 'whatlinkshere-hideredirs' => 'вес вере колтымаш-влакым $1',
 'whatlinkshere-hidetrans' => 'пуртымашым $1',
@@ -936,9 +926,7 @@ $messages = array(
 # Block/unblock
 'blockip' => 'Пайдаланышылан йӧным петыраш',
 'ipbreason' => 'Амал:',
-'ipbreasonotherlist' => 'Вес амал',
 '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',
-'ipbotherreason' => 'Вес/ешартыш амал:',
 'ipblocklist' => 'Блокироватлыме пайдаланыше-влак',
 'ipblocklist-submit' => 'Кычал',
 'blocklink' => 'йӧным петыраш',
@@ -978,8 +966,6 @@ $messages = array(
 'movepage-moved-redirect' => 'Вес вере колтымаш ыштыме.',
 'movepage-moved-noredirect' => 'Вес вере колтымаш ыштыме огыл.',
 'articleexists' => 'Тыгай лӱман лаштык уло але тиде лӱмым кучылташ огеш лий. Вес лӱмым ойыро.',
-'talkexists' => "'''Лаштыкым кусарыме гынат, тудын каҥашымаш лаштыкшым тыгай лӱман лаштык улмылан кӧра кусараш огеш лий. Нуным шке кидет дене иктыш ушно.'''",
-'movedto' => 'лаштыкыш кусарыме',
 'movetalk' => 'Каҥашымаш лаштыкым кусараш',
 'movelogpage' => 'Кусарыме нерген журнал',
 'movereason' => 'Амал:',
@@ -1010,7 +996,7 @@ $messages = array(
 'tooltip-ca-addsection' => 'У ужашым тӱҥалаш',
 'tooltip-ca-viewsource' => 'Тиде лаштыкым аралыме.
 Тый тудын тӱҥалтыш текстшым ончалын кертат.',
-'tooltip-ca-history' => 'Ð\9bаÑ\88Ñ\82Ñ\8bкÑ\8bм ондаксе тӧрлатымаш',
+'tooltip-ca-history' => 'Ð\9bаÑ\88Ñ\82Ñ\8bкÑ\8bн ондаксе тӧрлатымаш',
 'tooltip-ca-protect' => 'Тиде лаштыкым тӧрлатымаш деч аралаш',
 'tooltip-ca-delete' => 'Тиде лаштыкым шӧраш',
 'tooltip-ca-move' => 'Тиде лаштыкым кусараш',
@@ -1059,7 +1045,7 @@ $messages = array(
 'nextdiff' => 'Вес тӧрлатымаш →',
 
 # Media information
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|лаштык|лаштык}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|1=лаштык|лаштык}}',
 'file-info-size' => '$1 × $2 пиксел, файлын кугытшо: $3, MIME-тип: $4',
 'file-nohires' => 'Кугурак чаплык уке.',
 'svg-long-desc' => 'SVG файл, шкенжын кугытшо: $1 × $2 пиксел, файлын кугытшо: $3',
@@ -1098,10 +1084,6 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Файлым ӧрдыж программыште тӧрлаташ',
-'edit-externally-help' => '(Сайрак палашлан ончал [https://www.mediawiki.org/wiki/Manual:External_editors шындымаш нерген туныктымашым])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'чыла',
 'namespacesall' => 'чыла',
index 0ac1ac6..fce7f26 100644 (file)
@@ -38,9 +38,6 @@ $messages = array(
 'mytalk' => 'Karere mōku',
 'navigation' => 'Huarahi',
 
-# Cologne Blue skin
-'qbspecialpages' => 'Whārangi motuhake',
-
 # Vector skin
 'vector-view-view' => 'Rīti',
 
@@ -58,7 +55,7 @@ $messages = array(
 'talk' => 'Kōrerorero',
 'toolbox' => 'Pouaka utauta',
 
-# 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).
+# 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).
 'aboutsite' => 'Mo {{SITENAME}}',
 'currentevents' => 'Kōrero',
 'currentevents-url' => 'Project:Kōrero',
index 6bee8a8..1e97034 100644 (file)
@@ -21,7 +21,7 @@ $fallback = 'id';
 $namespaceNames = array(
        NS_MEDIA            => 'Media',
        NS_SPECIAL          => 'Istimewa',
-       NS_TALK             => 'Maota',
+       NS_TALK             => 'Rundiang',
        NS_USER             => 'Pangguno',
        NS_USER_TALK        => 'Rundiang_Pangguno',
        NS_PROJECT_TALK     => 'Rundiang_$1',
@@ -53,41 +53,43 @@ $namespaceAliases = array(
        'Pembicaraan_Bantuan'   => NS_HELP_TALK,
        'Kategori'              => NS_CATEGORY,
        'Pembicaraan_Kategori'  => NS_CATEGORY_TALK,
+
+       'Maota'                 => NS_TALK,
 );
 
 $specialPageAliases = array(
        'Activeusers'               => array( 'PanggunoAktip', 'Pangguno_aktip' ),
-       'Allmessages'               => array( 'PasanSistim', 'Pasan_sistem' ),
+       'Allmessages'               => array( 'PasanSistim', 'Pasan_sistim' ),
        'Allpages'                  => array( 'DaptaLaman', 'Dapta_laman' ),
        'Ancientpages'              => array( 'LamanLamo', 'Laman_lamo' ),
        'Badtitle'                  => array( 'JudulBuruak', 'Judul_indak_rancak' ),
        'Blankpage'                 => array( 'LamanKosong', 'Laman_kosong' ),
-       'Block'                     => array( 'Blokir', 'IPkanaiBlok', 'PanggunoTablokir' ),
-       'Blockme'                   => array( 'BlokDen', 'BlokirAmbo' ),
+       'Block'                     => array( 'Sakek', 'IPkanaiSakek', 'PanggunoTasakek' ),
        'Booksources'               => array( 'SumberBuku', 'Sumber_buku' ),
        'BrokenRedirects'           => array( 'PangaliahanRusak', 'Pangaliahan_rusak' ),
        'Categories'                => array( 'Kategori' ),
        'ChangeEmail'               => array( 'GantiSurel', 'Ganti_surel' ),
-       'ChangePassword'            => array( 'GantiSandi', 'TukaSandi', 'TukaKatoSandi' ),
+       'ChangePassword'            => array( 'GantiSandi', 'TukaKatoSandi' ),
        'ComparePages'              => array( 'BandiangkanLaman', 'Bandiangkan_laman' ),
        'Confirmemail'              => array( 'PastikanSurel', 'Pastikan_surel' ),
-       'Contributions'             => array( 'SuntiangPangguno', 'Suntiangan_pangguno' ),
+       'Contributions'             => array( 'SuntiangPangguno', 'Jariah' ),
        'CreateAccount'             => array( 'BuekAkun', 'Buek_akun' ),
        'Deadendpages'              => array( 'LamanBuntu', 'Laman_buntu' ),
        'DeletedContributions'      => array( 'SuntiangDihapuih', 'Suntiangan_kanai_hapuih' ),
-       'Disambiguations'           => array( 'SamoArti', 'Samo_arti' ),
-       'EditWatchlist'             => array( 'SuntiangDaptaPantau', 'Suntiang_dapta_pantau' ),
+       'DoubleRedirects'           => array( 'PangaliahanGanda', 'Pangaliahan_ganda' ),
+       'EditWatchlist'             => array( 'SuntiangPantauan', 'Suntiang_pantauan' ),
        'Emailuser'                 => array( 'SurelPangguno', 'Surel_pangguno' ),
        'Export'                    => array( 'Ekspor' ),
-       'Fewestrevisions'           => array( 'ParubahanTasaketek', 'Parubahan_tasaketek' ),
+       'Fewestrevisions'           => array( 'ParubahanTasangenek', 'Parubahan_tasangenek' ),
        'FileDuplicateSearch'       => array( 'CariBerkasDuplikat', 'Cari_berkas_duplikat' ),
        'Filepath'                  => array( 'LokasiBerkas', 'Lokasi_berkas' ),
        'Import'                    => array( 'Impor' ),
-       'Invalidateemail'           => array( 'BatalSurel', 'Batalkan_surel' ),
+       'Invalidateemail'           => array( 'BatalSurel', 'Batalan_surel' ),
        'JavaScriptTest'            => array( 'TesSkripJava', 'Tes_skrip_Java' ),
-       'BlockList'                 => array( 'DaptaBlokir', 'Dapta_pemblokiran', 'Dapta_IP_diblok' ),
-       'LinkSearch'                => array( 'CariTautan', 'Cari_tautan' ),
-       'Listadmins'                => array( 'DaptaPanguruih' ),
+       'BlockList'                 => array( 'DaptaSakek', 'Dapta_pemblokiran', 'Dapta_IP_disakek' ),
+       'LinkSearch'                => array( 'CariPautan', 'Cari_pautan' ),
+       'Listadmins'                => array( 'DaptaPanguruih', 'Dapta_panguruih' ),
+       'Listbots'                  => array( 'DaptaBot' ),
        'Listfiles'                 => array( 'DaptaBerkas', 'DaptaGamba' ),
        'Listgrouprights'           => array( 'DaptaHakKalompok', 'HakKalompokPangguno' ),
        'Listredirects'             => array( 'DaptaPangaliahan', 'Dapta_pangaliahan' ),
@@ -106,9 +108,58 @@ $specialPageAliases = array(
        'Mostlinkedtemplates'       => array( 'TemplatTautanTabanyak', 'TemplatAcokDipakai' ),
        'Mostrevisions'             => array( 'ParubahanTabanyak' ),
        'Movepage'                  => array( 'PindahLaman', 'Pindahkan_laman' ),
-       'Mycontributions'           => array( 'SuntianganAmbo', 'Suntiangan_ambo' ),
-       'Mypage'                    => array( 'LamanDenai', 'Laman_denai' ),
-       'Mytalk'                    => array( 'DiskusiAmbo' ),
+       'Mycontributions'           => array( 'JariahDenai', 'Jariah_Ambo' ),
+       'Mypage'                    => array( 'LamanDenai', 'Laman_Ambo' ),
+       'Mytalk'                    => array( 'RundiangDenai', 'Laman_rundiang__Ambo' ),
+       'Myuploads'                 => array( 'DenaiMuek', 'Nan_Ambo_muek' ),
+       'Newimages'                 => array( 'BerkasBaru', 'Berkas_baru' ),
+       'Newpages'                  => array( 'LamanBaru', 'Laman_baru' ),
+       'PagesWithProp'             => array( 'LamanJoProperti', 'Laman_jo_properti' ),
+       'PasswordReset'             => array( 'TukaSandi', 'Tuka_baliak_sandi' ),
+       'PermanentLink'             => array( 'PautanPamanen', 'Pautan_pamanen' ),
+       'Popularpages'              => array( 'LamanPopuler', 'Laman_populer' ),
+       'Preferences'               => array( 'Rujuakan' ),
+       'Prefixindex'               => array( 'DaptaAwalan' ),
+       'Protectedpages'            => array( 'LamanTalinduang', 'Laman_nan_dilinduang' ),
+       'Protectedtitles'           => array( 'JudulTalinduang' ),
+       'Randompage'                => array( 'LamanSumbarang' ),
+       'Randomredirect'            => array( 'PangaliahanSumbarang' ),
+       'Recentchanges'             => array( 'ParubahanBaru' ),
+       'Recentchangeslinked'       => array( 'ParubahanTakaik' ),
+       'Redirect'                  => array( 'Pangaliahan' ),
+       'Revisiondelete'            => array( 'HapuihRevisi' ),
+       'Search'                    => array( 'Cari', 'Pancarian' ),
+       'Shortpages'                => array( 'LamanPendek' ),
+       'Specialpages'              => array( 'LamanIstimewa' ),
+       'Unblock'                   => array( 'PambatalanSakek' ),
+       'Uncategorizedcategories'   => array( 'KategoriIndakTakategori' ),
+       'Uncategorizedimages'       => array( 'BerkasIndakTakategori' ),
+       'Uncategorizedpages'        => array( 'LamanIndakTakategori' ),
+       'Uncategorizedtemplates'    => array( 'TemplatIndakTakategori' ),
+       'Undelete'                  => array( 'BatalHapuih' ),
+       'Unlockdb'                  => array( 'BukakKunciBD' ),
+       'Unusedcategories'          => array( 'KategoriKosong' ),
+       'Unusedimages'              => array( 'BerkasIndakTapakai' ),
+       'Unusedtemplates'           => array( 'TemplatIndakTapakai' ),
+       'Unwatchedpages'            => array( 'LamanIndakTapantau' ),
+       'Upload'                    => array( 'Muek' ),
+       'Userlogin'                 => array( 'MasuakLog' ),
+       'Userlogout'                => array( 'KaluaLog' ),
+       'Userrights'                => array( 'HakPangguno' ),
+       'Wantedcategories'          => array( 'KategoriNanParalu' ),
+       'Wantedfiles'               => array( 'BerkasNanParalu' ),
+       'Wantedpages'               => array( 'LamanNanParalu' ),
+       'Wantedtemplates'           => array( 'TemplatNanParalu' ),
+       'Watchlist'                 => array( 'Pantauan' ),
+       'Whatlinkshere'             => array( 'PautanBaliak' ),
+       'Withoutinterwiki'          => array( 'InterwikiIndakAdo' ),
+);
+
+$magicWords = array(
+       'redirect'                  => array( '0', '#ALIAH', '#ALIH', '#REDIRECT' ),
+       'pagesincategory_all'       => array( '0', 'sado', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'laman', 'pages' ),
+       'pagesincategory_files'     => array( '0', 'berkas', 'files' ),
 );
 
 $messages = array(
@@ -134,7 +185,6 @@ $messages = array(
 'tog-minordefault' => 'Tandoi kasado suntiangan sabagai suntiangan ketek sacaro baku',
 'tog-previewontop' => 'Tunjuakan pratonton sabalun kotak suntiang',
 'tog-previewonfirst' => 'Tunjuakan pratonton pado suntiangan patamo',
-'tog-nocache' => 'Matikan panyinggahan laman paramban',
 'tog-enotifwatchlistpages' => 'Kiriman surel, kok laman atau gambar pado daftar pantau Ambo barubah',
 'tog-enotifusertalkpages' => 'Kiriman surel, koq laman maota Ambo barubah',
 'tog-enotifminoredits' => 'Kirimkan surel juo untuk saketek suntingan pado laman jo gambar',
@@ -268,7 +318,6 @@ $messages = array(
 'qbedit' => 'Suntiang',
 'qbpageoptions' => 'Laman ko',
 'qbmyoptions' => 'Laman denai',
-'qbspecialpages' => 'Laman istimewa',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -475,7 +524,6 @@ Indak ado keterangan.',
 'perfcached' => 'Data barikuik ko diambiak dari singgahan dan mungkin indak data nan baru. Nan tabanyak dari {{PLURAL:$1|$1 hasilnyo}} ado di singgahan.',
 'perfcachedts' => 'Data barikuik ko singgahan, dan tarakhia dipabarui tanggal $1. Nan tabanyak dari tanggal {{PLURAL:$1|$1}}, hasilnyo ado di singgahan.',
 'querypage-no-updates' => 'Pamutakhiran dari laman ko sadang dimatian. Data nan ado di siko kini ko indak akan dimuaik ulang.',
-'wrong_wfQuery_params' => 'Parameter salah ka wfQuery()<br />Fungsi: $1<br />Pamintaan: $2',
 'viewsource' => 'Caliak sumber',
 'viewsource-title' => 'Caliak sumber untuak $1',
 'actionthrottled' => 'Tindakan tabateh',
@@ -641,7 +689,7 @@ Tunggulah sabanta sabalun mancubo baliak.',
 'user-mail-no-body' => 'Mancubo mangirim surel kosong atau pasan talalu pendek',
 
 # Change password dialog
-'resetpass' => 'Tuka kato sandi',
+'changepassword' => 'Tuka kato sandi',
 'resetpass_announce' => 'Sanak alah masauk log jo kode samantaro nan dikirim malalui surel. Untuak malanjuikan, Sanak harus mamasuakan kato sandi baru di siko:',
 'resetpass_header' => 'Tuka kato sandi akun',
 'oldpassword' => 'Kato sandi lamo:',
@@ -1015,10 +1063,6 @@ Sanak dapek malieknyo; rinciannyo mungkin ado di [{{fullurl:{{#Special:Log}}/del
 'revisiondelete' => 'Hapuih/batal hapuih revisi',
 'revdelete-nooldid-title' => 'Target revisi indak basobok',
 'revdelete-nooldid-text' => 'Sanak alun mangagiah target revisi untuak manjalankan fungsi ko, revisi nan ditantuan indak ado, atau Sanak nio manyuruakan revisi kini ko.',
-'revdelete-nologtype-title' => 'Tipe log indak diagiah',
-'revdelete-nologtype-text' => 'Sanak indak mngagiah tipe log untuak manerapkan tindakan ko.',
-'revdelete-nologid-title' => 'Entri log indak sah',
-'revdelete-nologid-text' => 'Sanak mungkin indak manyabuik suatu log target kajadian untuak manjalanan fungsi iko atau entri nan dimakasuik indak basuo.',
 'revdelete-no-file' => 'Berkas nan dituju indak basobok.',
 'revdelete-show-file-confirm' => 'Apokah Sanak yakin nio mancaliak revisi nan alah dihapuih dari berkas "<nowiki>$1</nowiki>" per $3, $2?',
 'revdelete-show-file-submit' => 'Yo',
@@ -1051,8 +1095,6 @@ $1",
 'logdelete-failure' => "'''Log data indak dapek dipabarui:'''
 $1",
 'revdel-restore' => 'ganti tampilan',
-'revdel-restore-deleted' => 'suntiangan nan alah dihapuih',
-'revdel-restore-visible' => 'tampilan revisi',
 'pagehist' => 'Riwayaik laman',
 'deletedhist' => 'Riwayaik pangapuihan',
 'revdelete-reason-dropdown' => '*Alasan pangapuihan umum
@@ -1091,11 +1133,7 @@ $1",
 # Search results
 'searchresults' => 'Hasil pancarian',
 'searchresults-title' => 'Hasil pancarian untuak "$1"',
-'searchresulttext' => 'Untuak informasi labiah lanjuik tantang pancarian {{SITENAME}}, caliak [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Sanak mancari \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sado laman nan dimulai jo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sado laman nan tapauik ka "$1"]])',
-'searchsubtitleinvalid' => "Sanak mancari '''$1'''",
 'titlematches' => 'Judul laman pas',
-'notitlematches' => 'Indak ado judul nan pas',
 'textmatches' => 'Teks laman pas',
 'notextmatches' => 'Indak ado judul nan pas',
 'prevn' => '{{PLURAL:$1|$1}} sabalunnyo',
@@ -1104,10 +1142,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|hasil}} barikuiknyo',
 'shown-title' => 'Tampilkan $1 {{PLURAL:$1|hasil}} per laman',
 'viewprevnext' => 'Caliak ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Atua pancarian',
 'searchmenu-exists' => "'''Ado laman nan banamo \"[[:\$1]]\" pado wiki ko.'''",
 'searchmenu-new' => "'''Buek laman \"[[:\$1]]\" di wiki ko!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Cari laman jo awalan ko]]',
 'searchprofile-articles' => 'Laman isi',
 'searchprofile-project' => 'Laman Bantuan jo Proyek',
 'searchprofile-images' => 'Multimedia',
@@ -1128,21 +1164,16 @@ $1",
 'search-interwiki-default' => 'Hasil $1:',
 'search-interwiki-more' => '(salanjuiknyo)',
 'search-relatedarticle' => 'Bakaitan',
-'mwsuggest-disable' => 'Matian saran pancarian',
 'searcheverything-enable' => 'Cari kasado ruangnamo',
 'searchrelated' => 'bakaitan',
 'searchall' => 'sado',
 'showingresults' => "Di bawah ko dikaluaan sampai {{PLURAL:$1|'''$1''' hasil}}, dimulai dari #'''$2'''.",
 'showingresultsnum' => "Di bawah ko dikaluaan {{PLURAL:$3|'''$3'''}} hasil mulai dari #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1 - $2''' dari '''$3'''}} untuak '''$4'''",
-'nonefound' => "'''Catatan''': hanyo babarapo ruangnamo nan dicari sacaro default.
-Cubo awali pamintaan Sanak tu jo ''sadonyo:'' untuak mancari kasado kandungan (tamasuak laman rundiang, templat, dll), atau gunoan ruangnamo nan diinginkan sabagai awalan.",
 'search-nonefound' => 'Indak ado hasil nan cocok sasuai jo parmintaan',
-'powersearch' => 'Pencarian lanjut',
 'powersearch-legend' => 'Pencarian lanjut',
 'powersearch-ns' => 'Mancari di ruangnamo:',
 'powersearch-redir' => 'Daftar pangaliahan',
-'powersearch-field' => 'Mancari',
 'powersearch-togglelabel' => 'Piliah:',
 'powersearch-toggleall' => 'Sadonyo',
 'powersearch-togglenone' => 'Dak ado',
@@ -1155,7 +1186,6 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'preferences' => 'Pangaturan',
 'mypreferences' => 'Pangaturan',
 'prefs-edits' => 'Jumlah suntiangan:',
-'changepassword' => 'Tuka kato sandi',
 'prefs-skin' => 'Kulik',
 'skin-preview' => 'Caliak',
 'datedefault' => 'Indak usah diatua',
@@ -1178,13 +1208,11 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'prefs-email' => 'Piliahan surel',
 'prefs-rendering' => 'Tampilan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Batalan parubahan',
 'restoreprefs' => 'Baliakan ka setelan awal',
 'prefs-editing' => 'Panyuntiangan',
 'rows' => 'Barih:',
 'columns' => 'Kolom:',
 'searchresultshead' => 'Cari',
-'resultsperpage' => 'Hasil per laman:',
 'stub-threshold' => 'Ambang bateh untuak format <a href="#" class="stub">pautan rancangan</a>:',
 'stub-threshold-disabled' => 'Nonaktifkan',
 'recentchangesdays' => 'Jumlah hari nan ditunjuakan di parubahan baru:',
@@ -1196,7 +1224,6 @@ Ingek indeks Google untuak {{SITENAME}} mungkin lah kadaluarsa.',
 'localtime' => 'Wakatu satampaik:',
 'timezoneuseserverdefault' => 'Gunokan nan dari wiki ($1)',
 'timezoneuseoffset' => 'Lainnyo (tantuan pabedoannyo)',
-'timezoneoffset' => 'Pabedoan¹:',
 'servertime' => 'Wakatu server:',
 'guesstimezone' => 'Isian dari paramban web',
 'timezoneregion-africa' => 'Afrika',
@@ -1379,7 +1406,6 @@ Alamaik surel Sanak indakkan tau dek urang nan manghubuangi sanak tu.',
 'recentchanges-label-minor' => 'Iko suntiangan ketek',
 'recentchanges-label-bot' => 'Suntiang ko dibuek dek bot',
 'recentchanges-label-unpatrolled' => 'Suntiangan ko alun dipatroli',
-'rcnote' => "Berikuik ko {{PLURAL:$1|'''$1'''}} parubahan dalam {{PLURAL:$2|'''$2''' hari}} tarakhia, sampai $4, pukul $5.",
 'rcnotefrom' => "Di bawah ko ado parubahan mulai dari '''$2''' (sampai '''$1''' parubahan).",
 'rclistfrom' => 'Tunjuakan parubahan baru mulai dari tanggal $1',
 'rcshowhideminor' => '$1 suntiangan ketek',
@@ -1689,9 +1715,6 @@ Sanak dapek mamiliah jinih log nan ado, namo pangguno (bedoan hurup ketek/gadang
 'allpagesto' => 'Tunjuakan laman sampai:',
 'allarticles' => 'Kasado laman',
 'allinnamespace' => 'Kasado laman (ruang namo $1)',
-'allnotinnamespace' => 'Kasado laman (bukan ruang namo $1)',
-'allpagesprev' => 'Sabalun',
-'allpagesnext' => 'Lanjuik',
 'allpagessubmit' => 'Tuju',
 'allpagesprefix' => 'Tunjuakan laman jo awalan:',
 'allpages-bad-ns' => '{{SITENAME}} indak ado ruang namo "$1".',
@@ -1957,7 +1980,6 @@ Entri log sakek tabaru ado di bawah ko untuak referensi:',
 'block' => 'Sakek pangguno',
 'unblock' => 'Lapeh sakek',
 'blockip' => 'Sakek pangguno',
-'blockip-title' => 'Sakek pangguno',
 'blockip-legend' => 'Sakek pangguno',
 'blockiptext' => 'Gunoan formulir di bawah ko untuak manyakek akses dari sabuah alamaik IP atau pangguno.
 Iko hanyo buliah dilakuan untuak mancagah vandal, dan sajalan jo [[{{MediaWiki:Policy-url}}|kabijakan]].
@@ -1965,7 +1987,6 @@ Masuakan alasan sakek di bawah (contoh, mambuek karusakan atau vandal).',
 'ipadressorusername' => 'Alamaik IP atau namo pangguno:',
 'ipbexpiry' => 'Sampai:',
 'ipbreason' => 'Alasan:',
-'ipbreasonotherlist' => 'Alasan lain',
 'ipbreason-dropdown' => '*Alasan umum sakek
 ** Marusak (vandal)
 ** Mangagiah informasi palsu
@@ -1983,8 +2004,6 @@ Masuakan alasan sakek di bawah (contoh, mambuek karusakan atau vandal).',
 'ipbsubmit' => 'Sakek pangguno ko',
 'ipbother' => 'Salamo:',
 'ipboptions' => '2 jam:2 hours,1 ari:1 day,3 ari:3 days,1 pakan:1 week,2 pakan:2 weeks,1 bulan:1 month,3 bulan:3 months,6 bulan:6 months,1 taun:1 year,salamonyo:infinite',
-'ipbotheroption' => 'lainnyo',
-'ipbotherreason' => 'Alasan lain/tambahan:',
 'ipbhidename' => 'Suruakan namo pangguno dari daftar jo suntiangan',
 'ipbwatchuser' => 'Pantau laman pangguno ko jo laman rundiangnyo',
 'ipb-disableusertalk' => 'Halang pangguno ko manyuntiang laman diskusinyo wakatu disakek',
@@ -2090,7 +2109,6 @@ Iko dapek maakibaikan parubahan nan indak dipakiroan pado laman nan populer; jad
 Dalam kasus tu, kok amuah Sanak dapek mamindahan ataupun manggabuangan laman sacaro manual.",
 'movearticle' => 'Pindahkan laman',
 'moveuserpage-warning' => "'''Paringatan:''' Sanak tangah mamindahan laman pangguno. Paralu dikatahui bahwa hanyo laman nan ka bapindah namun pangguno ''indak akan'' baganti namo.",
-'movenologin' => 'Alun masuak log',
 'movenologintext' => 'Sanak musti pangguno tadaftar dan [[Special:UserLogin|masuak log]] untuak mamindahan laman.',
 'movenotallowed' => 'Sanak indak ado izin untuak mamindahan laman.',
 'movenotallowedfile' => 'Sanak indak ado izin untuak mamindahan berkas.',
@@ -2106,8 +2124,6 @@ Dalam kasus tu, kok amuah Sanak dapek mamindahan ataupun manggabuangan laman sac
 'articleexists' => 'Laman nan banamo tu lah ado, atau namo nan Sanak piliah indak tapek.
 Silakan piliah namo lain.',
 'cantmove-titleprotected' => 'Sanak indak dapek mamindahan laman kasiko dek judul barunyo kanai linduang dari dibuek',
-'talkexists' => "'''Laman tasabuik barasil dipindahan, tapi laman rundiangnyo indak dapek dipindahan dek lah ado laman rundiang disinan. Silakan digabuang laman rundiang tu sacaro manual.'''",
-'movedto' => 'pindahan ka',
 'movetalk' => 'Pindahkan laman rundiang nan takaik',
 'move-subpages' => 'Pindahkan sublaman (sampai $1)',
 'move-talk-subpages' => 'Pindahkan sublaman dari laman rundiang (sampai $1)',
@@ -2464,15 +2480,10 @@ Nan lainnyo akan tasuruak sacaro baku.
 'exif-usercomment' => 'Komen pangguno',
 'exif-relatedsoundfile' => 'Berkas audio nan bahubuangan',
 
-# External editor support
-'edit-externally' => 'Suntiang berkas ko jo aplikasi lua',
-'edit-externally-help' => '(Caliak [https://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] untuak informasi lanjuiknyo)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kasadonyo',
 'namespacesall' => 'sadonyo',
 'monthsall' => 'sadonyo',
-'limitall' => 'sadonyo',
 
 # Table pager
 'table_pager_limit_label' => 'Item per laman:',
@@ -2592,7 +2603,6 @@ Sanak mustilah alah manarimo [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi P
 
 # Special:ComparePages
 'comparepages' => 'Bandiangkan laman',
-'compare-selector' => 'Bandiangkan revisi laman',
 'compare-page1' => 'Laman 1',
 'compare-page2' => 'Laman 2',
 'compare-rev1' => 'Revisi 1',
@@ -2636,7 +2646,7 @@ Sanak mustilah alah manarimo [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi P
 'duration-minutes' => '$1 {{PLURAL:$1|minik}}',
 'duration-hours' => '$1 {{PLURAL:$1|jam}}',
 'duration-days' => '$1 {{PLURAL:$1|ari}}',
-'duration-weeks' => '{{PLURAL: $1|}}$1 pakan',
+'duration-weeks' => '{{PLURAL:$1|}}$1 pakan',
 'duration-years' => '$1 {{PLURAL:$1|taun}}',
 'duration-decades' => '$1 {{PLURAL:$1|dekade}}',
 'duration-centuries' => '$1 {{PLURAL:$1|abaik}}',
index d97a460..e433c2d 100644 (file)
@@ -95,12 +95,12 @@ $dateFormats = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'АктивниКорисници' ),
        'Allmessages'               => array( 'СитеПораки' ),
+       'AllMyUploads'              => array( 'СитеМоиПодигања' ),
        'Allpages'                  => array( 'СитеСтраници' ),
        'Ancientpages'              => array( 'НајстариСтраници' ),
        'Badtitle'                  => array( 'Лошнаслов' ),
        'Blankpage'                 => array( 'ПразнаСтраница' ),
        'Block'                     => array( 'Блокирање', 'БлокIP', 'БлокирајКорисник' ),
-       'Blockme'                   => array( 'БлокирајМе' ),
        'Booksources'               => array( 'ПечатенИзвор' ),
        'BrokenRedirects'           => array( 'ПрекинатиПренасочувања' ),
        'Categories'                => array( 'Категории' ),
@@ -112,10 +112,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'СоздајКорисничкаСметка' ),
        'Deadendpages'              => array( 'ЌорсокакСтраници' ),
        'DeletedContributions'      => array( 'ИзбришаниПридонеси' ),
-       'Disambiguations'           => array( 'Појаснувања' ),
        'DoubleRedirects'           => array( 'ДвојниПренасочувања' ),
        'EditWatchlist'             => array( 'УредиНабљудувања' ),
        'Emailuser'                 => array( 'Пиши_е-пошта_на_корисникот' ),
+       'ExpandTemplates'           => array( 'ПрошириШаблони' ),
        'Export'                    => array( 'Извоз' ),
        'Fewestrevisions'           => array( 'НајмалкуРевизии' ),
        'FileDuplicateSearch'       => array( 'ПребарувањеДупликатПодатотека' ),
@@ -156,14 +156,16 @@ $specialPageAliases = array(
        'PermanentLink'             => array( 'ПостојанаВрска' ),
        'Popularpages'              => array( 'ПопуларниСтраници' ),
        'Preferences'               => array( 'Нагодувања' ),
-       'Prefixindex'               => array( 'Ð\98ндекÑ\81Ð\9dаÐ\9fÑ\80еÑ\84икÑ\81и' ),
+       'Prefixindex'               => array( 'Ð\98ндекÑ\81Ð\9dаÐ\9fÑ\80еÑ\82Ñ\81Ñ\82авки' ),
        'Protectedpages'            => array( 'ЗаштитениСтраници' ),
        'Protectedtitles'           => array( 'ЗаштитениНаслови' ),
        'Randompage'                => array( 'Случајна', 'СлучајнаСтраница' ),
+       'RandomInCategory'          => array( 'СлучајнаВоКатегорија' ),
        'Randomredirect'            => array( 'СлучајноПренасочување' ),
        'Recentchanges'             => array( 'СкорешниПромени' ),
        'Recentchangeslinked'       => array( 'ПоврзаниПромени' ),
        'Redirect'                  => array( 'Пренасочување' ),
+       'ResetTokens'               => array( 'ВратиОдновоЗнаци' ),
        'Revisiondelete'            => array( 'БришењеРевизија' ),
        'Search'                    => array( 'Барај' ),
        'Shortpages'                => array( 'КраткиСтраници' ),
@@ -254,6 +256,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'центар', 'ц', 'center', 'centre' ),
        'img_framed'                => array( '1', 'рамка', 'ворамка', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'безрамка', 'frameless' ),
+       'img_lang'                  => array( '1', 'јаз=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'страница=$1', 'страница_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'исправено', 'исправено=$1', 'исправено_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'граничник', 'граница', 'border' ),
@@ -293,6 +296,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'ГОДИНАНАРЕВИЗИЈА', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'ВРЕМЕНАРЕВИЗИЈА', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'КОРИСНИКНАНАРЕВИЗИЈА', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'ГОЛЕМИНАНАРЕВИЗИЈА', 'REVISIONSIZE' ),
        'plural'                    => array( '0', 'МНОЖИНА:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'ПОЛНАURL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'ПОЛНАURLE:', 'FULLURLE:' ),
@@ -371,7 +375,6 @@ $messages = array(
 'tog-minordefault' => 'Обележувај ги сите уредувања како ситни по основно',
 'tog-previewontop' => 'Прикажи го прегледот пред кутијата за уредување',
 'tog-previewonfirst' => 'Прикажи преглед на првото уредување',
-'tog-nocache' => 'Оневозможи кеширање на страниците во прелистувачот',
 'tog-enotifwatchlistpages' => 'Испраќај ми е-пошта при промена на страница или податотека од мојот список на набљудувања',
 'tog-enotifusertalkpages' => 'Испраќај ми е-пошта при промена на мојата страница за разговор',
 'tog-enotifminoredits' => 'Испраќај ми е-пошта и за ситни промени во страниците и податотеките',
@@ -507,7 +510,6 @@ $messages = array(
 'qbedit' => 'Уреди',
 'qbpageoptions' => 'Оваа страница',
 'qbmyoptions' => 'Мои страници',
-'qbspecialpages' => 'Специјални страници',
 'faq' => 'ЧПП',
 'faqpage' => 'Project:ЧПП',
 
@@ -728,9 +730,6 @@ $1',
 'perfcachedts' => 'Следните податоци се кеширани, последен пат подновени на $1. Во кешот {{PLURAL:$4|е достапен највеќе еден резултат|се достапни највеќе $4 резултати}}.',
 'querypage-no-updates' => 'Подновите на оваа страница моментално се оневозможени.
 Податоците овде во моментов нема да се подновуваат.',
-'wrong_wfQuery_params' => 'Грешни параметри до wfQuery()<br />
-Функција: $1<br />
-Барање: $2',
 'viewsource' => 'Преглед',
 'viewsource-title' => 'Преглед на кодот на $1',
 'actionthrottled' => 'Дејството е успорено',
@@ -866,7 +865,7 @@ $2',
 'passwordtooshort' => 'Лозинката мора да има најмалку {{PLURAL:$1|1 знак|$1 знаци}}.',
 'password-name-match' => 'Лозинката мора да се разликува од корисничкото име.',
 'password-login-forbidden' => 'Употребата на ова корисничко име и лозинка е забранета.',
-'mailmypassword' => 'Ð\98Ñ\81пÑ\80аÑ\82и Ð½ова лозинка',
+'mailmypassword' => 'Ð\9dова лозинка',
 'passwordremindertitle' => 'Нова привремена лозинка за {{SITENAME}}',
 'passwordremindertext' => 'Некој (најверојатно вие, од IP-адреса $1) побара нова лозинка за {{SITENAME}} ($4).
 Создадена е привремена лозинка „$3“ за корисничката сметка „$2“.
@@ -917,7 +916,7 @@ $2',
 'user-mail-no-body' => 'Се обидовте да испратите писмо кое е празно или со неразумно куса содржина.',
 
 # Change password dialog
-'resetpass' => 'Промена на лозинка',
+'changepassword' => 'Смени лозинка',
 'resetpass_announce' => 'Најавени сте со привремена лозинка пратена по е-пошта.
 За да го завршите пријавувањето, мора да поставите нова лозинка овде:',
 'resetpass_text' => '<!-- Тука внесете текст -->',
@@ -939,7 +938,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Менување на лозинка',
 'passwordreset-text-one' => 'Пополнете го образецов за да ја измените лозинката.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ð\9fополнеÑ\82е ÐµÐ´Ð½Ð¾ Ð¾Ð´ Ð¿Ð¾Ð»Ð¸Ñ\9aаÑ\82а Ð·Ð° Ð´Ð° Ñ\98а Ñ\81мениÑ\82е Ð»Ð¾Ð·Ð¸Ð½ÐºÐ°та.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ð\9fополнеÑ\82е ÐµÐ´Ð½Ð¾ Ð¾Ð´ Ð¿Ð¾Ð»Ð¸Ñ\9aаÑ\82а Ð·Ð° Ð´Ð¾Ð±Ð¸ÐµÑ\82е Ð¿Ñ\80ивÑ\80емена Ð»Ð¾Ð·Ð¸Ð½ÐºÐ° Ð¿Ð¾ Ðµ-поÑ\88та.}}',
 'passwordreset-legend' => 'Нова лозинка',
 'passwordreset-disabled' => 'На ова вики е оневозможено задавање на нова лозинка.',
 'passwordreset-emaildisabled' => 'Можностите за е-пошта се исклучени на ова вики',
@@ -1211,6 +1210,8 @@ $2
 'content-not-allowed-here' => 'Содржините од моделот „$1“ не се допуштени на страницата [[$2]]',
 'editwarning-warning' => 'Ако ја напуштите страницата ќе ги изгубите сите промени кои сте ги направиле.
 Ако сте најавени, можете да го исклучите ова предупредување во одделот „Уредување“ во вашите нагодувања.',
+'editpage-notsupportedcontentformat-title' => 'Форматот на содржината не е поддржан',
+'editpage-notsupportedcontentformat-text' => 'Форматот $1 is не е поддржан од содржинскиот модел $2.',
 
 # Content models
 'content-model-wikitext' => 'викитекст',
@@ -1253,6 +1254,9 @@ $2
 'cantcreateaccount-text' => "Создавањето на корисничка сметка од оваа IP-адреса ('''$1''') е блокирано од страна на [[User:$3|$3]].
 
 Образложението дадено од страна на $3 е ''$2''",
+'cantcreateaccount-range-text' => "Создавањето на сметки од IP-адреси во опсегот '''$1''' каде спаѓа вашата IP-адреса ('''$4''') е блокирано од корисникот [[User:$3|$3]].
+
+$3 ја наведе следнава причина: ''$2''",
 
 # History pages
 'viewpagelogs' => 'Преглед на дневници за оваа страница',
@@ -1321,10 +1325,6 @@ $2
 'revisiondelete' => 'Избриши/врати ревизии',
 'revdelete-nooldid-title' => 'Бараната измена не постои',
 'revdelete-nooldid-text' => 'Не сте посочиле измена (измени) за да се изврши оваа функција или посочената измена не постои или се обидувате да ја скриете моменталната измена.',
-'revdelete-nologtype-title' => 'Не е наведен тип на дневник',
-'revdelete-nologtype-text' => 'Немате наведено тип на дневник за кој треба да се изврши ова дејство.',
-'revdelete-nologid-title' => 'Погрешно внесен запис во дневник.',
-'revdelete-nologid-text' => 'Немате наведено дневнички запис за извршување на оваа функција или наведената ставка не постои.',
 'revdelete-no-file' => 'Наведената податотека не постои.',
 'revdelete-show-file-confirm' => 'Дали сакате да ја погледнете избришаната ревизија на податотеката „<nowiki>$1</nowiki>“ од $2 во $3?',
 'revdelete-show-file-submit' => 'Да',
@@ -1358,8 +1358,6 @@ $1",
 'logdelete-failure' => "'''Дневникот на видливост не може да биде нагоден:'''
 $1",
 'revdel-restore' => 'Промена на видливост',
-'revdel-restore-deleted' => 'избришани ревизии',
-'revdel-restore-visible' => 'видливи ревизии',
 'pagehist' => 'Историја на страницата',
 'deletedhist' => 'Историја на бришења',
 'revdelete-hide-current' => 'Грешка при сокривање на ставката датирана на $2, $1: ова е актуелна ревизија.',
@@ -1435,12 +1433,8 @@ $1",
 # 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| претходни $1}}',
@@ -1449,10 +1443,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Следен|Следни}} $1 {{PLURAL:$1|резултат|резултати}}',
 'shown-title' => 'Прикажи $1 {{PLURAL:$1|резултат|резултати}} на страница',
 'viewprevnext' => 'Погледајте ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Нагодувања на пребарувањето',
 'searchmenu-exists' => "'''На ова вики има страница со наслов „[[:$1]]“'''",
 'searchmenu-new' => "Создајте ја страницата „[[:$1]]“ на ова вики!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Прелистување на страници со оваа претставка]]',
 'searchprofile-articles' => 'Статии',
 'searchprofile-project' => 'Помош и проектни страници',
 'searchprofile-images' => 'Податотеки',
@@ -1473,21 +1465,16 @@ $1",
 'search-interwiki-default' => 'Најдено на $1:',
 'search-interwiki-more' => '(уште)',
 'search-relatedarticle' => 'Поврзано',
-'mwsuggest-disable' => 'Оневозможи предлози во пребарувањето',
 'searcheverything-enable' => 'Барај во сите именски простори',
 'searchrelated' => 'поврзано',
 'searchall' => 'сè',
 'showingresults' => "Подолу {{PLURAL:$1|е прикажан '''1''' резултат|се прикажани '''$1''' резултати}} почнувајќи од бр. '''$2'''.",
 'showingresultsnum' => "Подолу {{PLURAL:$3|е прикажан '''1''' резултат|се прикажани '''$3''' резултати}} почнувајќи од '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултати '''$1 - $2''' од '''$3'''}} за '''$4'''",
-'nonefound' => "'''Напомена''': Само некои именски простори се пребаруваат по основно.
-Обидете се со додавање на претставката ''all:'' за да пребарувате низ сите содржини (вклучувајќи страници за разговор, шаблони, итн) или користете го бараниот именски простор како претставка.",
 'search-nonefound' => 'Нема резултати што одговараат на бараното.',
-'powersearch' => 'Напредно пребарување',
 'powersearch-legend' => 'Напредно пребарување',
 'powersearch-ns' => 'Пребарај во следниве именски простори:',
 'powersearch-redir' => 'Дај и пренасочувања',
-'powersearch-field' => 'Пребарување на',
 'powersearch-togglelabel' => 'Одбери:',
 'powersearch-toggleall' => 'Сè',
 'powersearch-togglenone' => 'Ништо',
@@ -1502,7 +1489,6 @@ $1",
 'mypreferences' => 'нагодувања',
 'prefs-edits' => 'Број на уредувања:',
 'prefsnologintext2' => 'Треба да сте $1 за да можете да ги поставувате корисничките нагодувања.',
-'changepassword' => 'Смени лозинка',
 'prefs-skin' => 'Руво',
 'skin-preview' => 'Преглед',
 'datedefault' => 'Небитно',
@@ -1525,13 +1511,11 @@ $1",
 'prefs-email' => 'Нагодувања за е-пошта',
 'prefs-rendering' => 'Изглед',
 'saveprefs' => 'Зачувај',
-'resetprefs' => 'Избриши незачувани измени',
 'restoreprefs' => 'Врати сè по основно (во сите делови)',
 'prefs-editing' => 'Уредување',
 'rows' => 'Редови:',
 'columns' => 'Колони:',
 'searchresultshead' => 'Пребарување',
-'resultsperpage' => 'Резултати по страница:',
 'stub-threshold' => 'Праг за <a href="#" class="stub">никулци</a> (бајти):',
 'stub-threshold-disabled' => 'Оневозможено',
 'recentchangesdays' => 'Денови за приказ во скорешните промени:',
@@ -1546,7 +1530,6 @@ $1",
 'localtime' => 'Локално време:',
 'timezoneuseserverdefault' => 'Од викито ($1)',
 'timezoneuseoffset' => 'Друго (посочете отстапување)',
-'timezoneoffset' => 'Отстапување¹:',
 'servertime' => 'Време на опслужувачот:',
 'guesstimezone' => 'Пополни од прелистувачот',
 'timezoneregion-africa' => 'Африка',
@@ -1616,6 +1599,7 @@ $1",
 'prefs-tokenwatchlist' => 'Шифра',
 'prefs-diffs' => 'Разлики',
 'prefs-help-prefershttps' => 'Поставката ќе се примени следниот пат кога ќе се најавите.',
+'prefs-tabs-navigation-hint' => 'Совет: Можете да ги користите стрелките на тастатурата за да преоѓате од едно на друго јазиче во списокот на јазичиња.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Исправно',
@@ -1803,9 +1787,9 @@ $1",
 'recentchanges-label-bot' => 'Ова уредување е направено од бот',
 'recentchanges-label-unpatrolled' => 'Ова уредување сè уште не е испатролирано',
 'recentchanges-label-plusminus' => 'Промена на големината на страницата во бајти',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(погл. и [[Special:NewPages|списокот на нови страници]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Подолу {{PLURAL:$1|е прикажана '''1''' промена|се прикажани последните '''$1''' промени}} {{PLURAL:$2|за денес|во последниве '''$2''' дена}}, заклучно со $5, $4.",
 'rcnotefrom' => 'Подолу се промените од <b>$2</b> (се прикажуваат до <b>$1</b>).',
 'rclistfrom' => 'Прикажи нови промени почнувајќи од $1',
 'rcshowhideminor' => '$1 ситни промени',
@@ -1930,6 +1914,8 @@ $1",
 Ако и понатаму сакате да ја подигнете податотеката, ве молиме вратете се и повторно подигнете ја податотеката со ново име. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Оваа податотека е дупликат со {{PLURAL:$1|следнава податотека|следниве податотеки}}:',
 'file-deleted-duplicate' => 'Податотека индентична со податотеката ([[:$1]]) претходно била избришана. Треба да проверите во дневникот на бришења за оваа податотека пред повторно да ја подигнете.',
+'file-deleted-duplicate-notitle' => 'Податотека сосем иста како оваа била претходно избришана, а насловот бил притаен.
+Треба да побарате од некој што има можност да гледа податоци за притаени податотеки да ја разгледа ситуацијата пред да продолжите со преподигањето.',
 'uploadwarning' => 'Предупредување при подигање',
 'uploadwarning-text' => 'Изменете го описот на податотеката подолу и обидете се повторно.',
 'savefile' => 'Зачувај податотека',
@@ -2280,6 +2266,7 @@ $1',
 'ninterwikis' => '$1 {{PLURAL:$1|меѓувики|меѓувикија}}',
 'nlinks' => '$1 {{PLURAL:$1|врска|врски}}',
 'nmembers' => '$1 {{PLURAL:$1|член|члена}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|член|члена}}',
 'nrevisions' => '$1 {{PLURAL:$1|измена|измени}}',
 'nviews' => '$1 {{PLURAL:$1|преглед|прегледи}}',
 'nimagelinks' => 'Се користи на $1 {{PLURAL:$1|страница|страници}}',
@@ -2318,10 +2305,9 @@ $1',
 'protectedpages' => 'Заштитени страници',
 'protectedpages-indef' => 'Само бесконечни заштити',
 'protectedpages-cascade' => 'Само каскадни заштити',
-'protectedpagestext' => 'Следните страници се заштитени во поглед на преместување и уредување',
+'protectedpages-noredirect' => 'Скриј пренасочувања',
 'protectedpagesempty' => 'Во моментов нема заштитени страници со параметрите кои ги зададовте.',
 'protectedtitles' => 'Заштитени наслови',
-'protectedtitlestext' => 'Следните наслови се забранети за создавање',
 'protectedtitlesempty' => 'Во овој момент нема заштитени наслови кои ги задоволуваат наведените критериуми.',
 'listusers' => 'Список на корисници',
 'listusers-editsonly' => 'Прикажи само корисници кои уредувале',
@@ -2375,9 +2361,6 @@ $1',
 'allpagesto' => 'Прикажи страници кои завршуваат со:',
 'allarticles' => 'Сите страници',
 'allinnamespace' => 'Сите страници (именски простор $1)',
-'allnotinnamespace' => 'Сите страници (кои не се во именскиот простор $1)',
-'allpagesprev' => 'Претходна',
-'allpagesnext' => 'Следна',
 'allpagessubmit' => 'Оди',
 'allpagesprefix' => 'Прикажи страници со претставка:',
 'allpagesbadtitle' => 'Дадениот наслов е неважечки или има меѓујазичен или меѓувики-претставка. Може да содржи повеќе знаци кои не смеат да се користат во наслови.',
@@ -2399,8 +2382,8 @@ $1',
 'special-categories-sort-abc' => 'подреди азбучно',
 
 # Special:DeletedContributions
-'deletedcontributions' => 'Ð\98збÑ\80иÑ\88ани ÐºÐ¾Ñ\80иÑ\81ниÑ\87ки Ð¿Ñ\80идонеÑ\81и',
-'deletedcontributions-title' => 'Ð\98збÑ\80иÑ\88ани ÐºÐ¾Ñ\80иÑ\81ниÑ\87ки Ð¿Ñ\80идонеÑ\81и',
+'deletedcontributions' => 'Ð\98збÑ\80иÑ\88ани Ð¿Ñ\80идонеÑ\81и Ð½Ð° ÐºÐ¾Ñ\80иÑ\81никоÑ\82',
+'deletedcontributions-title' => 'Ð\98збÑ\80иÑ\88ани Ð¿Ñ\80идонеÑ\81и Ð½Ð° ÐºÐ¾Ñ\80иÑ\81никоÑ\82',
 'sp-deletedcontributions-contribs' => 'придонеси',
 
 # Special:LinkSearch
@@ -2603,6 +2586,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|ревизија|ревизии}}.
 Бришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};
 продолжете доколку сте сигруни дека треба тоа да го сторите.',
+'deleting-backlinks-warning' => "'''Предупредување:''' До страницата што сакате да ја избришете водат други страници.",
 
 # Rollback
 'rollback' => 'Отповикај промени',
@@ -2723,7 +2707,6 @@ $UNWATCHURL
 'undeletebtn' => 'Врати',
 'undeletelink' => 'погледај/врати',
 'undeleteviewlink' => 'преглед',
-'undeletereset' => 'Одново',
 'undeleteinvert' => 'Обратен избор',
 'undeletecomment' => 'Причина:',
 'undeletedrevisions' => '{{PLURAL:$1|1 измена е обновена|$1 измени се обновени}}',
@@ -2762,7 +2745,7 @@ $1',
 'blanknamespace' => '(Главен)',
 
 # Contributions
-'contributions' => '{{GENDER:$1|Ð\9aоÑ\80иÑ\81ниÑ\87ки}} Ð¿Ñ\80идонеÑ\81и',
+'contributions' => '{{GENDER:$1|Ð\9fÑ\80идонеÑ\81и Ð½Ð° ÐºÐ¾Ñ\80иÑ\81никоÑ\82}}',
 'contributions-title' => 'Придонеси на корисникот $1',
 'mycontris' => 'придонеси',
 'contribsub2' => 'За {{GENDER:$3|$1}} ($2)',
@@ -2775,7 +2758,7 @@ $1',
 'sp-contributions-newbies-sub' => 'За нови кориснички сметки',
 'sp-contributions-newbies-title' => 'Придонеси на нови корисници',
 'sp-contributions-blocklog' => 'Дневник на блокирања',
-'sp-contributions-deleted' => 'избÑ\80иÑ\88ани ÐºÐ¾Ñ\80иÑ\81ниÑ\87ки Ð¿Ñ\80идонеÑ\81и',
+'sp-contributions-deleted' => 'избÑ\80иÑ\88ани Ð¿Ñ\80идонеÑ\81и Ð½Ð° ÐºÐ¾Ñ\80иÑ\81никоÑ\82',
 'sp-contributions-uploads' => 'подигања',
 'sp-contributions-logs' => 'дневници',
 'sp-contributions-talk' => 'разговор',
@@ -2812,7 +2795,6 @@ $1',
 'block' => 'Блокирај корисник',
 'unblock' => 'Одблокирај корисник',
 'blockip' => 'Блокирај корисник',
-'blockip-title' => 'Блокирај корисник',
 'blockip-legend' => 'Блокирај корисник',
 'blockiptext' => 'Користете го долниот образец за да го забраните пристапот за пишување од одредена IP-адреса или корисничко име.
 Ова единствено треба да се прави за да се спречи вандализам, во согласност со [[{{MediaWiki:Policy-url}}|правилата на Википедија]].
@@ -2820,7 +2802,6 @@ $1',
 'ipadressorusername' => 'IP-адреса или корисничко име:',
 'ipbexpiry' => 'Истек на рокот:',
 'ipbreason' => 'Причина:',
-'ipbreasonotherlist' => 'Друга причина',
 'ipbreason-dropdown' => '*Вообичаени причини за блокирање
 ** Вметнување лажни информации
 ** Бришење на содржини од страниците
@@ -2836,8 +2817,6 @@ $1',
 'ipbsubmit' => 'Блокирај го овој корисник',
 'ipbother' => 'Друг рок:',
 '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',
-'ipbotheroption' => 'друго',
-'ipbotherreason' => 'Друга, дополнителна причина:',
 'ipbhidename' => 'Скриј го корисничкото име во уредувањата и списоците',
 'ipbwatchuser' => 'Набљудувај ја корисничката страница и страницата за разговор на овој корисник',
 'ipb-disableusertalk' => 'Спречи го корисников да ја уредува неговата страница за разговор додека е блокиран',
@@ -2849,6 +2828,7 @@ $1',
 Блоковите можете да ги прегледате на [[Special:BlockList|списокот на блокови]].',
 'ipb-blockingself' => 'Се спремате да се блокирате самите себеси! Сигурни сте дека го сакате ова?',
 'ipb-confirmhideuser' => 'Сакате да блокирате корисник со можноста „скриј корисник“. Ова ќе го затаи името на корисникот во сите списоци и дневнички записи. Дали сте сигурни дека сакате да го направите тоа?',
+'ipb-confirmaction' => 'Ако сте сигурни дека навистина сакате да го направите ова, штиклирајте го полето „{{int:ipb-confirm}}“ најдолу.',
 'ipb-edit-dropdown' => 'Наведи причина за блокирање',
 'ipb-unblock-addr' => 'Одблокирај го $1',
 'ipb-unblock' => 'Одблокирај корисник или IP-адреса',
@@ -2932,7 +2912,6 @@ $1',
 'sorbs_create_account_reason' => 'Вашата IP-адреса е наведена како отворен застапникот (proxy) во DNSBL користена од {{SITENAME}}.
 Не можете да создадете корисничка сметка.',
 'xffblockreason' => 'Блокирана е IP-адреса присутна во заглавието X-Forwarded-For, која е ваша или на застапничкиот опслужувач што го користите. Наведеното образложение гласи: $1',
-'cant-block-while-blocked' => 'Не можете да блокирате други корисници додека и вие самите сте блокирани.',
 'cant-see-hidden-user' => 'Корисникот кој се обидувате да го блокирате е веќе блокиран и сокриен. Бидејќи вие немате права за сокривање на корисник, не можете да ги видите или уредувате корисничките блокирања.',
 'ipbblocked' => 'Не можете да блокирате или одблокирате други корисници бидејќи и самите сте блокирани',
 'ipbnounblockself' => 'Не е дозволено да се одблокирате самите себеси',
@@ -2991,7 +2970,6 @@ $1',
 Во овие случаи, ќе треба рачно да се премести или спои ако има потреба.',
 'movearticle' => 'Премести страница:',
 'moveuserpage-warning' => "'''Предупредување:''' На пат сте да преместите корисничка страница. Имајте предвид дека само страницата ќе биде преместена, а самиот корисник ''нема'' да биде преименуван.",
-'movenologin' => 'Не сте најавени',
 'movenologintext' => 'Мора да бидете регистриран корисник и да сте [[Special:UserLogin|најавени]] за да можете да преместувате страници.',
 'movenotallowed' => 'Немате доволно привилегии за преместување на страници.',
 'movenotallowedfile' => 'Немате дозвола за преместување податотеки.',
@@ -3007,9 +2985,6 @@ $1',
 'articleexists' => 'Веќе постои страница со тоа име, или името што го одбравте е неважечко.
 Изберете друго име.',
 'cantmove-titleprotected' => 'Не може да ја преместите страницата на тоа место бидејќи саканиот наслов е заштитен од создавање.',
-'talkexists' => "'''Самата страница е успешно преместена, но страницата за разговор не може да се премести бидејќи веќе постои страница со таков наслов.
-Спојте ги рачно.'''",
-'movedto' => 'преместена како',
 'movetalk' => 'Премести ја и страницата за разговор, ако е возможно.',
 'move-subpages' => 'Премести ги и потстраниците (највеќе до $1)',
 'move-talk-subpages' => 'Премести потстраници на страници за разговор (највеќе до $1)',
@@ -3821,10 +3796,10 @@ Variants for Chinese language
 'exif-whitebalance-0' => 'Автоматска рамнотежа на бело',
 'exif-whitebalance-1' => 'Рачна рамнотежа на бело',
 
-'exif-scenecapturetype-0' => 'СÑ\82андаÑ\80дно',
+'exif-scenecapturetype-0' => 'СÑ\82андаÑ\80ден',
 'exif-scenecapturetype-1' => 'Пејзаж',
 'exif-scenecapturetype-2' => 'Портрет',
-'exif-scenecapturetype-3' => 'Ноќна сцена',
+'exif-scenecapturetype-3' => 'Ноќна снимка',
 
 'exif-gaincontrol-0' => 'Нема',
 'exif-gaincontrol-1' => 'Мало зголемување',
@@ -3930,15 +3905,10 @@ Variants for Chinese language
 'exif-urgency-high' => 'Голема ($1)',
 'exif-urgency-other' => 'Кориснички-зададен приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Уреди ја податотеката со надворешен програм',
-'edit-externally-help' => '(Видете [https://www.mediawiki.org/wiki/Manual:External_editors повеќе напатствија] за нагодувањето).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'сите',
 'namespacesall' => 'сите',
 'monthsall' => 'сите',
-'limitall' => 'сите',
 
 # Email address confirmation
 'confirmemail' => 'Потврда на е-поштенска адреса',
@@ -3962,7 +3932,6 @@ Variants for Chinese language
 'confirmemail_success' => 'Вашата е-поштенска адреса е потврдена.
 Сега можете да се [[Special:UserLogin|најавите]]. Ви посакуваме пријатни мигови на викито!',
 'confirmemail_loggedin' => 'Вашата е-поштенска адреса сега е потврдена.',
-'confirmemail_error' => 'Нешто тргна наопаку при снимањето на вашата потврда.',
 'confirmemail_subject' => '{{SITENAME}} — Потврда на е-поштенска адреса',
 'confirmemail_body' => 'Некој, веројатно Вие, од IP-адресата $1, 
 на {{SITENAME}} ја регистрирал сметката „$2“ со оваа е-поштенска адреса .
@@ -4046,6 +4015,11 @@ $5
 'imgmultigo' => 'Оди!',
 'imgmultigoto' => 'Оди на страница $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(стандарден јазик)',
+'img-lang-info' => 'Испиши ја сликата на $1. $2',
+'img-lang-go' => 'Прикажи',
+
 # Table pager
 'ascending_abbrev' => 'раст',
 'descending_abbrev' => 'опаѓ',
@@ -4208,7 +4182,17 @@ $5
 'version-hook-subscribedby' => 'Претплатено од',
 'version-version' => '(Верзија $1)',
 'version-svn-revision' => '(рев. $2)',
-'version-license' => 'Лиценца',
+'version-license' => 'Лиценца на МедијаВики',
+'version-ext-license' => 'Лиценца',
+'version-ext-colheader-name' => 'Додаток',
+'version-ext-colheader-version' => 'Верзија',
+'version-ext-colheader-license' => 'Лиценца',
+'version-ext-colheader-description' => 'Опис',
+'version-ext-colheader-credits' => 'Автори',
+'version-license-title' => 'Лиценца за $1',
+'version-license-not-found' => 'Не најдов подробни лиценцни информации за овој додаток.',
+'version-credits-title' => 'Заслуги за $1',
+'version-credits-not-found' => 'Не најдов подробни информации за заслужните за овој додаток.',
 'version-poweredby-credits' => "Ова вики работи на '''[https://www.mediawiki.org/ МедијаВики]''', авторски права © 2001-$1 $2.",
 'version-poweredby-others' => 'други',
 'version-poweredby-translators' => 'преведувачи на translatewiki.net',
@@ -4228,13 +4212,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=mk Скрипта]',
 
 # Special:Redirect
-'redirect' => 'Ð\9fÑ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¿Ð¾ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82ека, корисник или назнака на ревизија',
+'redirect' => 'Ð\9fÑ\80енаÑ\81оÑ\87Ñ\83ваÑ\9aе Ð¿Ð¾ Ð¿Ð¾Ð´Ð°Ñ\82оÑ\82еки, корисник или назнака на ревизија',
 'redirect-legend' => 'Пренасочување кон податотека или страница',
-'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на ревизијата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Оваа специјална страница пренасочува кон податотека (се задава името), страница (се задава назнаката на ревизијата или страницата) или корисничка странца (се задава бројчената назнака на корисникот). Употреба: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Оди',
 'redirect-lookup' => 'Пребарај:',
 'redirect-value' => 'Вредност:',
 'redirect-user' => 'Корисничка назнака',
+'redirect-page' => 'Назнака на страницата',
 'redirect-revision' => 'Ревизија на страницата',
 'redirect-file' => 'Име на податотека',
 'redirect-not-exists' => 'Вредноста не е најдена',
@@ -4300,7 +4285,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'Спореди страници',
-'compare-selector' => 'Споредба на ревизии на страници',
 'compare-page1' => 'Страница 1',
 'compare-page2' => 'Страница 2',
 'compare-rev1' => 'Ревизија 1',
@@ -4428,6 +4412,7 @@ $5
 'api-error-overwrite' => 'Презапишувањето врз постоечки податотеки не е дозволено.',
 'api-error-stashfailed' => 'Внатрешна грешка: Опслужувачот не успеа да ја складира привремената податотека.',
 'api-error-publishfailed' => 'Внатрешна грешка: Опслужувачот не успеа да ја објави привремената податотека.',
+'api-error-stasherror' => 'Се јави грешка при подигањето на податотеката во складот.',
 'api-error-timeout' => 'Опслужувачот не одговори во очекуваното време.',
 'api-error-unclassified' => 'Се појави непозната грешка.',
 'api-error-unknown-code' => 'Непозната грешка: „$1“',
@@ -4443,7 +4428,7 @@ $5
 'duration-hours' => '$1 {{PLURAL:$1|час|часа}}',
 'duration-days' => '$1 {{PLURAL:$1|ден|дена}}',
 'duration-weeks' => '$1 {{PLURAL:$1|недела|недели}}',
-'duration-years' => '{{PLURAL: $1|година|години}}',
+'duration-years' => '{{PLURAL:$1|година|години}}',
 'duration-decades' => '$1 {{PLURAL:$1|деценија|децении}}',
 'duration-centuries' => '$1 {{PLURAL:$1|век|века}}',
 'duration-millennia' => '$1 {{PLURAL:$1|милениум|милениуми}}',
@@ -4477,10 +4462,14 @@ $5
 'expand_templates_input' => 'Влезен текст:',
 'expand_templates_output' => 'Извод',
 'expand_templates_xml_output' => 'XML излез',
+'expand_templates_html_output' => 'Сиров HTML-извод',
 'expand_templates_ok' => 'ОК',
 'expand_templates_remove_comments' => 'Отстрани коментари',
 'expand_templates_remove_nowiki' => 'Притаи <nowiki> ознаки во резултатот',
 'expand_templates_generate_xml' => 'Прикажи XML дрво на парсирање',
+'expand_templates_generate_rawhtml' => 'Прикажувај сиров HTML',
 'expand_templates_preview' => 'Преглед',
 
+# Unknown messages
+'uploadinvalidxml' => 'Не можев да го парсирам XML-от што се наоѓа во подигнатата податотека.',
 );
index f51284c..f686417 100644 (file)
@@ -86,12 +86,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'സജീവ_ഉപയോക്താക്കൾ' ),
        'Allmessages'               => array( 'സർവ്വസന്ദേശങ്ങൾ' ),
+       'AllMyUploads'              => array( 'എന്റെയെല്ലാഅപ്‌ലോഡുകളും', 'എന്റെയെല്ലാപ്രമാണങ്ങളും' ),
        'Allpages'                  => array( 'എല്ലാതാളുകളും' ),
        'Ancientpages'              => array( 'പുരാതന_താളുകൾ' ),
        'Badtitle'                  => array( 'മോശംതലക്കെട്ട്' ),
        'Blankpage'                 => array( 'ശൂന്യതാൾ' ),
        'Block'                     => array( 'തടയുക', 'ഐ.പി.തടയുക', 'ഉപയോക്തൃതടയൽ' ),
-       'Blockme'                   => array( 'എന്നെതടയുക' ),
        'Booksources'               => array( 'പുസ്തകസ്രോതസ്സുകൾ' ),
        'BrokenRedirects'           => array( 'പൊട്ടിയതിരിച്ചുവിടലുകൾ' ),
        'Categories'                => array( 'വർഗ്ഗങ്ങൾ' ),
@@ -103,10 +103,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'അംഗത്വമെടുക്കൽ' ),
        'Deadendpages'              => array( 'അന്ത്യസ്ഥാനത്തുള്ള_താളുകൾ' ),
        'DeletedContributions'      => array( 'മായ്ച്ച_സേവനങ്ങൾ' ),
-       'Disambiguations'           => array( 'വിവക്ഷിതങ്ങൾ' ),
        'DoubleRedirects'           => array( 'ഇരട്ടത്തിരിച്ചുവിടലുകൾ' ),
        'EditWatchlist'             => array( 'ശ്രദ്ധിക്കുന്നവയുടെപട്ടികതിരുത്തുക' ),
        'Emailuser'                 => array( 'ഉപയോക്തൃഇമെയിൽ' ),
+       'ExpandTemplates'           => array( 'ഫലകങ്ങൾ_വികസിപ്പിക്കുക' ),
        'Export'                    => array( 'കയറ്റുമതി' ),
        'Fewestrevisions'           => array( 'കുറഞ്ഞ_പുനരവലോകനങ്ങൾ' ),
        'FileDuplicateSearch'       => array( 'പ്രമാണത്തിന്റെ_അപരനുള്ള_തിരച്ചിൽ' ),
@@ -151,9 +151,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'സംരക്ഷിത_താളുകൾ' ),
        'Protectedtitles'           => array( 'സംരക്ഷിത_ശീർഷകങ്ങൾ' ),
        'Randompage'                => array( 'ക്രമരഹിതം', 'ക്രമരഹിതതാൾ' ),
+       'RandomInCategory'          => array( 'വർഗ്ഗത്തിൽനിന്ന്ക്രമരഹിതം' ),
        'Randomredirect'            => array( 'ക്രമരഹിതതിരിച്ചുവിടലുകൾ' ),
        'Recentchanges'             => array( 'സമീപകാലമാറ്റങ്ങൾ' ),
        'Recentchangeslinked'       => array( 'ബന്ധപ്പെട്ട_മാറ്റങ്ങൾ' ),
+       'Redirect'                  => array( 'തിരിച്ചുവിടൽ' ),
+       'ResetTokens'               => array( 'ചീട്ട്പുനഃസജ്ജീകരിക്കുക' ),
        'Revisiondelete'            => array( 'നാൾപ്പതിപ്പ്_മായ്ക്കൽ' ),
        'Search'                    => array( 'അന്വേഷണം' ),
        'Shortpages'                => array( 'ചെറിയ_താളുകൾ' ),
@@ -235,6 +238,8 @@ $magicWords = array(
        'fullpagenamee'             => array( '1', 'താളിന്റെമുഴുവൻപേര്സമഗ്രം', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', 'അനുബന്ധതാളിന്റെപേര്‌', 'SUBPAGENAME' ),
        'subpagenamee'              => array( '1', 'അനുബന്ധതാളിന്റെപേര്സമഗ്രം', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'മൂലതാളിന്റെപേര്', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'മൂലതാളിന്റെപേര്‌സമഗ്രം', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'അടിസ്ഥാനതാളിന്റെപേര്‌', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'അടിസ്ഥാനതാളിന്റെപേര്‌സമഗ്രം', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'സംവാദതാളിന്റെപേര്‌', 'TALKPAGENAME' ),
@@ -254,6 +259,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'നടുവിൽ', 'നടുക്ക്‌', 'center', 'centre' ),
        'img_framed'                => array( '1', 'ചട്ടം', 'ചട്ടത്തിൽ', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'ചട്ടരഹിതം', 'frameless' ),
+       'img_lang'                  => array( '1', 'ഭാഷ=$1', 'lang=$1' ),
        'img_page'                  => array( '1', 'താൾ=$1', 'താൾ_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'നേരേകുത്തനെ', 'നേരേകുത്തനെ=$1', 'നേരേകുത്തനെ_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'അതിർവര', 'border' ),
@@ -268,8 +274,10 @@ $magicWords = array(
        'img_link'                  => array( '1', 'കണ്ണി=$1', 'link=$1' ),
        'img_alt'                   => array( '1', 'പകരം=$1', 'alt=$1' ),
        'img_class'                 => array( '1', 'ശ്രേണി=$1', 'class=$1' ),
+       'int'                       => array( '0', 'സമ്പർക്കം:', 'INT:' ),
        'sitename'                  => array( '1', 'സൈറ്റിന്റെപേര്', 'SITENAME' ),
        'ns'                        => array( '0', 'നാമേ:', 'NS:' ),
+       'nse'                       => array( '0', 'നാമേസ:', 'NSE:' ),
        'localurl'                  => array( '0', 'ലോക്കൽയുആർഎൽ:', 'LOCALURL:' ),
        'localurle'                 => array( '0', 'ലോക്കൽയുആർഎൽഇ:', 'LOCALURLE:' ),
        'articlepath'               => array( '0', 'ലേഖനപഥം', 'ARTICLEPATH' ),
@@ -296,12 +304,16 @@ $magicWords = array(
        'revisionuser'              => array( '1', 'അവസാനംതിരുത്തിയയാൾ', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'ബഹുവചനം:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'പൂർണ്ണവിലാസം:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', 'പൂർണ്ണവിലാസംസമഗ്രം:', 'FULLURLE:' ),
+       'canonicalurl'              => array( '0', 'കാനോനിക്കൽവിലാസം:', 'CANONICALURL:' ),
+       'canonicalurle'             => array( '0', 'കാനോനിക്കൽവിലാസംസമഗ്രം:', 'CANONICALURLE:' ),
        'raw'                       => array( '0', 'അസംസ്കൃതം:', 'RAW:' ),
        'displaytitle'              => array( '1', 'ശീർഷകംപ്രദർശിപ്പിക്കുക', 'തലക്കെട്ട്പ്രദർശിപ്പിക്കുക', 'DISPLAYTITLE' ),
        'rawsuffix'                 => array( '1', 'വ', 'R' ),
        'newsectionlink'            => array( '1', '__പുതിയവിഭാഗംകണ്ണി__', '__പുതിയഖണ്ഡിക്കണ്ണി__', '__NEWSECTIONLINK__' ),
        'nonewsectionlink'          => array( '1', '__പുതിയവിഭാഗംകണ്ണിവേണ്ട__', '__പുതിയഖണ്ഡിക്കണ്ണിവേണ്ട__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'ഈപതിപ്പ്', 'CURRENTVERSION' ),
+       'urlencode'                 => array( '0', 'വിലാസഗൂഢീകരണം:', 'URLENCODE:' ),
        'currenttimestamp'          => array( '1', 'സമയമുദ്ര', 'CURRENTTIMESTAMP' ),
        'localtimestamp'            => array( '1', 'പ്രാദേശികസമയമുദ്ര', 'LOCALTIMESTAMP' ),
        'directionmark'             => array( '1', 'ദിശാസൂചിക', 'DIRECTIONMARK', 'DIRMARK' ),
@@ -345,7 +357,7 @@ $messages = array(
 # User preference toggles
 'tog-underline' => 'കണ്ണികൾക്ക് അടിവരയിടുക:',
 'tog-justify' => 'ഖണ്ഡികകളുടെ അരികുകൾ നേരെയാക്കുക',
-'tog-hideminor' => 'à´ªàµ\81തിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽ à´\9aàµ\86റിയ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´ªàµ\8dരദർശിപàµ\8dപിà´\95àµ\8dà´\95ാതിരിà´\95àµ\8dà´\95àµ\81à´\95',
+'tog-hideminor' => 'പുതിയ മാറ്റങ്ങളുടെ പട്ടികയിൽ ചെറിയ തിരുത്തുകൾ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-hidepatrolled' => 'റോന്തുചുറ്റിയ തിരുത്തുകൾ പുതിയമാറ്റങ്ങളിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-newpageshidepatrolled' => 'റോന്തുചുറ്റപ്പെട്ട താളുകൾ പുതിയതാളുകളുടെ പട്ടികയിൽ പ്രദർശിപ്പിക്കാതിരിക്കുക',
 'tog-extendwatchlist' => 'ഏറ്റവും പുതിയവ മാത്രമല്ല, എല്ലാ മാറ്റങ്ങളും ദൃശ്യമാകുന്ന വിധത്തിൽ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക വികസിപ്പിക്കുക.',
@@ -353,7 +365,7 @@ $messages = array(
 'tog-numberheadings' => 'ഉപവിഭാഗങ്ങൾക്ക് ക്രമസംഖ്യ കൊടുക്കുക',
 'tog-showtoolbar' => 'തിരുത്തൽ റ്റൂൾബാർ  പ്രദർശിപ്പിക്കുക',
 'tog-editondblclick' => 'താളുകളിൽ ഇരട്ട ക്ലിക്ക് ചെയ്യുമ്പോൾ തിരുത്താനനുവദിക്കുക',
-'tog-editsection' => '[തിരàµ\81à´¤àµ\8dà´¤àµ\81à´\95] à´\8eà´¨àµ\8dà´¨ à´\95à´£àµ\8dണിയàµ\81പയàµ\8bà´\97à´¿à´\9aàµ\8dà´\9aàµ\8d à´\89പവിഭാà´\97à´\99àµ\8dà´\99ൾ à´¤à´¿à´°àµ\81à´¤àµ\8dതാൻ à´\85നുവദിക്കുക',
+'tog-editsection' => '[തിരàµ\81à´¤àµ\8dà´¤àµ\81à´\95] à´\8eà´¨àµ\8dà´¨ à´\95à´£àµ\8dണിയàµ\81പയàµ\8bà´\97à´¿à´\9aàµ\8dà´\9aàµ\8d à´\89പവിഭാà´\97à´\99àµ\8dà´\99ൾ à´¤à´¿à´°àµ\81à´¤àµ\8dതാനനുവദിക്കുക',
 'tog-editsectiononrightclick' => 'ഉപവിഭാഗങ്ങളുടെ തലക്കെട്ടിൽ റൈറ്റ് ക്ലിക്ക് ചെയ്യുന്നതു വഴി തിരുത്താനനുവദിക്കുക',
 'tog-showtoc' => 'ഉള്ളടക്കപ്പട്ടിക പ്രദർശിപ്പിക്കുക (മൂന്നിൽ കൂടുതൽ ഉപശീർഷകങ്ങളുള്ള താളുകൾക്കു മാത്രം)',
 'tog-rememberpassword' => 'എന്റെ പ്രവേശനം ഈ ബ്രൗസറിൽ ({{PLURAL:$1|ഒരു ദിവസം|$1 ദിവസം}}) ഓർത്തുവെക്കുക',
@@ -361,25 +373,24 @@ $messages = array(
 'tog-watchdefault' => 'ഞാൻ തിരുത്തുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchmoves' => 'ഞാൻ തലക്കെട്ടു മാറ്റുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
 'tog-watchdeletion' => 'ഞാൻ നീക്കം ചെയ്യുന്ന താളുകളും പ്രമാണങ്ങളും ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ചേർക്കുക',
-'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´¸àµ\8dവതàµ\87 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലുകളായി അടയാളപ്പെടുത്തുക',
+'tog-minordefault' => 'à´\8eà´²àµ\8dലാ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81à´\95à´³àµ\81à´\82 à´¸àµ\8dവതàµ\87 à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dà´¤ുകളായി അടയാളപ്പെടുത്തുക',
 'tog-previewontop' => 'തിരുത്തൽ പെട്ടിക്കു മുകളിൽ പ്രിവ്യൂ കാണിക്കുക',
-'tog-previewonfirst' => 'ആദ്യത്തെ തിരുത്തലിന്റെ പ്രിവ്യൂ കാണിക്കുക',
-'tog-nocache' => 'ബ്രൗസറിൽ താളുകൾ തദ്ദേശീയമായി സംഭരിച്ചുവയ്ക്കുന്നത് നിർജ്ജീവമാക്കുക',
+'tog-previewonfirst' => 'ആദ്യത്തെ തിരുത്തിന്റെ പ്രിവ്യൂ കാണിക്കുക',
 'tog-enotifwatchlistpages' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകൾക്കോ പ്രമാണങ്ങൾക്കോ മാറ്റം സംഭവിച്ചാൽ എനിക്കു ഇമെയിൽ അയക്കുക',
-'tog-enotifusertalkpages' => 'à´\8eà´¨àµ\8dà´±àµ\86 à´¸à´\82â\80\8cവാദà´\82 താളിനു മാറ്റം സംഭവിച്ചാൽ ഇമെയിൽ അയക്കുക',
-'tog-enotifminoredits' => 'à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ൾà´\95àµ\8dà´\95àµ\81à´\82 à´\8eനിà´\95àµ\8dà´\95àµ\8d à´\87à´®àµ\86യിൽ à´\85യയàµ\8dà´\95àµ\8dà´\95àµ\81à´\95',
-'tog-enotifrevealaddr' => 'വിà´\9càµ\8dà´\9eാപന മെയിലുകളിൽ എന്റെ ഇമെയിൽ വിലാസം വെളിവാക്കാൻ അനുവദിക്കുക',
+'tog-enotifusertalkpages' => 'à´\8eà´¨àµ\8dà´±àµ\86 à´¸à´\82â\80\8cവാദതàµ\8dതാളിനു മാറ്റം സംഭവിച്ചാൽ ഇമെയിൽ അയക്കുക',
+'tog-enotifminoredits' => 'ചെറുതിരുത്തുകൾക്കും എനിക്ക് ഇമെയിൽ അയയ്ക്കുക',
+'tog-enotifrevealaddr' => 'à´\85റിയിപàµ\8dà´ªàµ\8d മെയിലുകളിൽ എന്റെ ഇമെയിൽ വിലാസം വെളിവാക്കാൻ അനുവദിക്കുക',
 'tog-shownumberswatching' => 'ശ്രദ്ധിക്കുന്ന ഉപയോക്താക്കളുടെ എണ്ണം കാണിക്കുക',
 'tog-oldsig' => 'നിലവിലുള്ള ഒപ്പ്:',
 'tog-fancysig' => 'ഒപ്പ് ഒരു വിക്കി എഴുത്തായി പരിഗണിക്കുക (കണ്ണി സ്വയം ചേർക്കേണ്ടതില്ല)',
 'tog-uselivepreview' => 'തത്സമയ പ്രിവ്യൂ ഉപയോഗപ്പെടുത്തുക (പരീക്ഷണാടിസ്ഥാനം)',
-'tog-forceeditsummary' => 'തിരàµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\9fàµ\86 à´\9aàµ\81à´°àµ\81à´\95àµ\8dà´\95à´\82 à´¨àµ½à´\95ിയിലàµ\8dà´²àµ\86à´\99àµ\8dà´\95ിൽ à´\8eà´¨àµ\8dà´¨àµ\86 à´\93ർമàµ\8dമിപàµ\8dപിà´\95àµ\8dà´\95àµ\81à´\95',
-'tog-watchlisthideown' => 'à´\9eാൻ à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽനിനàµ\8dà´¨àµ\8d à´\8eà´¨àµ\8dà´±àµ\86 à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´®à´±à´¯àµ\8dà´\95àµ\8dà´\95àµ\81à´\95',
+'tog-forceeditsummary' => 'തിരുത്തുകളുടെ ചുരുക്കം നൽകിയില്ലെങ്കിൽ എന്നെ ഓർമ്മിപ്പിക്കുക',
+'tog-watchlisthideown' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് എന്റെ തിരുത്തുകൾ മറയ്ക്കുക',
 'tog-watchlisthidebots' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് യന്ത്രങ്ങൾ വരുത്തിയ തിരുത്തലുകൾ മറയ്ക്കുക',
-'tog-watchlisthideminor' => 'à´\9eാൻ à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽനിനàµ\8dà´¨àµ\8d à´\9aàµ\86à´±àµ\81തിരàµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´®à´±à´¯àµ\8dà´\95àµ\8dà´\95àµ\81à´\95',
-'tog-watchlisthideliu' => 'à´\9eാൻ à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95ളിലàµ\86 à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ളിൽ à´¨à´¿à´¨àµ\8dà´¨àµ\81à´\82 à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´³àµ\8dളവരàµ\81à´\9fàµ\86 à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´®à´±à´¯àµ\8dà´\95àµ\8dà´\95àµ\81à´\95',
+'tog-watchlisthideminor' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് ചെറുതിരുത്തുകൾ മറയ്ക്കുക',
+'tog-watchlisthideliu' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും ലോഗിൻ ചെയ്തിട്ടുള്ളവരുടെ തിരുത്തുകൾ മറയ്ക്കുക',
 'tog-watchlisthideanons' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളിലെ മാറ്റങ്ങളിൽ നിന്നും അജ്ഞാത ഉപയോക്താക്കളുടെ തിരുത്തുകൾ മറയ്ക്കുക',
-'tog-watchlisthidepatrolled' => 'à´\9eാൻ à´¶àµ\8dà´°à´¦àµ\8dധിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86 à´ªà´\9fàµ\8dà´\9fà´¿à´\95യിൽനിനàµ\8dà´¨àµ\8d à´±àµ\8bà´¨àµ\8dà´¤àµ\81à´\9aàµ\81à´±àµ\8dറിയ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´®à´±à´¯àµ\8dà´\95àµ\8dà´\95àµ\81à´\95',
+'tog-watchlisthidepatrolled' => 'ഞാൻ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽനിന്ന് റോന്തുചുറ്റിയ തിരുത്തുകൾ മറയ്ക്കുക',
 'tog-ccmeonemails' => 'ഞാൻ മറ്റുള്ളവർക്കയക്കുന്ന ഇമെയിലുകളുടെ ഒരു പകർപ്പ് എനിക്കും അയക്കുക',
 'tog-diffonly' => 'രണ്ട് പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസത്തിനു താഴെ താളിന്റെ ഉള്ളടക്കം കാണിക്കരുത്.',
 'tog-showhiddencats' => 'മറഞ്ഞിരിക്കുന്ന വർഗ്ഗങ്ങളെ കാണിക്കുക',
@@ -489,7 +500,7 @@ $messages = array(
 'morenotlisted' => 'ഈ പട്ടിക പൂർണ്ണമല്ല.',
 'mypage' => 'താൾ',
 'mytalk' => 'സംവാദത്താൾ',
-'anontalk' => 'à´\88 à´\90.പി.à´¯àµ\81à´\9fàµ\86 à´¸à´\82â\80\8cവാദà´\82 താൾ',
+'anontalk' => 'à´\88 à´\90.പി.à´¯àµ\81à´\9fàµ\86 à´¸à´\82â\80\8cവാദതàµ\8dതാൾ',
 'navigation' => 'ഉള്ളടക്കം',
 'and' => '&#32;ഒപ്പം',
 
@@ -499,7 +510,6 @@ $messages = array(
 'qbedit' => 'തിരുത്തുക',
 'qbpageoptions' => 'ഈ താൾ',
 'qbmyoptions' => 'എന്റെ താളുകൾ',
-'qbspecialpages' => 'പ്രത്യേക താളുകൾ',
 'faq' => 'പതിവുചോദ്യങ്ങൾ',
 'faqpage' => 'Project:പതിവുചോദ്യങ്ങൾ',
 
@@ -522,7 +532,7 @@ $messages = array(
 
 'navigation-heading' => 'ഗമന വഴികാട്ടി',
 'errorpagetitle' => 'പിഴവ്',
-'returnto' => '$1 à´\8eà´¨àµ\8dà´¨ à´¤à´¾à´³à´¿à´²àµ\87à´\95àµ\8dà´\95àµ\8d à´¤à´¿à´°à´¿à´\9aàµ\8dà´\9aàµ\81à´ªàµ\8bà´µുക.',
+'returnto' => '$1 à´\8eà´¨àµ\8dà´¨ à´¤à´¾à´³à´¿à´²àµ\87à´\95àµ\8dà´\95àµ\8d à´®à´\9fà´\99àµ\8dà´\99ുക.',
 'tagline' => '{{SITENAME}} സംരംഭത്തിൽ നിന്ന്',
 'help' => 'സഹായം',
 'search' => 'തിരയൂ',
@@ -543,10 +553,10 @@ $messages = array(
 'delete' => 'മായ്ക്കുക',
 'deletethispage' => 'ഈ താൾ നീക്കം ചെയ്യുക',
 'undeletethispage' => 'ഈ താൾ പുനഃസ്ഥാപിക്കുക',
-'undelete_short' => '{{PLURAL:$1|à´\92à´°àµ\81 à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ|$1 à´¤à´¿à´°àµ\81à´¤àµ\8dതലുകൾ}} പുനഃസ്ഥാപിക്കുക',
+'undelete_short' => '{{PLURAL:$1|à´\92à´°àµ\81 à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d|$1 à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤ുകൾ}} പുനഃസ്ഥാപിക്കുക',
 'viewdeleted_short' => '{{PLURAL:$1|മായ്ക്കപ്പെട്ട ഒരു തിരുത്തൽ|മായ്ക്കപ്പെട്ട $1 തിരുത്തലുകൾ}} കാണുക',
 'protect' => 'സം‌രക്ഷിക്കുക',
-'protect_change' => 'à´¸à´\82à´°à´\95àµ\8dഷണമാനതàµ\8dതിൽ à´µàµ\8dയതിയാനം വരുത്തുക',
+'protect_change' => 'à´¸à´\82à´°à´\95àµ\8dഷണമാനതàµ\8dതിൽ à´®à´¾à´±àµ\8dà´±ം വരുത്തുക',
 'protectthispage' => 'ഈ താൾ സം‌രക്ഷിക്കുക',
 'unprotect' => 'സംരക്ഷണം',
 'unprotectthispage' => 'ഈ താളിന്റെ സംരക്ഷണത്തിൽ മാറ്റംവരുത്തുക',
@@ -633,7 +643,7 @@ $1',
 'collapsible-expand' => 'വികസിപ്പിക്കുക',
 'thisisdeleted' => '$1 കാണുകയോ പുനഃസ്ഥാപിക്കുകയോ ചെയ്യേണ്ടതുണ്ടോ?',
 'viewdeleted' => '$1 കാണണോ?',
-'restorelink' => '{{PLURAL:$1|à´¨àµ\80à´\95àµ\8dà´\95à´\82à´\9aàµ\86à´¯àµ\8dà´¤ à´\92à´°àµ\81 à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ|à´¨àµ\80à´\95àµ\8dà´\95à´\82à´\9aàµ\86à´¯àµ\8dà´¤ $1 à´¤à´¿à´°àµ\81à´¤àµ\8dതലുകൾ}}',
+'restorelink' => '{{PLURAL:$1|à´¨àµ\80à´\95àµ\8dà´\95à´\82à´\9aàµ\86à´¯àµ\8dà´¤ à´\92à´°àµ\81 à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d|à´¨àµ\80à´\95àµ\8dà´\95à´\82à´\9aàµ\86à´¯àµ\8dà´¤ $1 à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤ുകൾ}}',
 'feedlinks' => 'ഫീഡ്:',
 'feed-invalid' => 'അസാധുവായ സബ്‌സ്ക്രിപ്ഷൻ ഫീഡ് തരം.',
 'feed-unavailable' => 'സിൻഡിക്കേഷൻ ഫീഡുകൾ ലഭ്യമല്ല',
@@ -680,7 +690,7 @@ $1',
 'laggedslavemode' => 'മുന്നറിയിപ്പ്: താളിൽ അടുത്തകാലത്ത് വരുത്തിയ പുതുക്കലുകൾ ഉണ്ടാവണമെന്നില്ല.',
 'readonly' => 'ഡാറ്റാബേസ് ബന്ധിച്ചിരിക്കുന്നു',
 'enterlockreason' => 'ഡാറ്റാബേസ് ബന്ധിക്കുവാനുള്ള കാരണം സൂചിപ്പിക്കുക. അതോടൊപ്പം എപ്പോഴാണ്‌ ബന്ധനം അഴിക്കുവാൻ ഉദ്ദേശിക്കുന്നതെന്നും രേഖപ്പെടുത്തുക.',
-'readonlytext' => 'à´ªàµ\81തിയ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\82 à´®à´±àµ\8dà´±àµ\8d à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99à´³àµ\81à´\82 à´\85à´¨àµ\81വദനàµ\80യമലàµ\8dലാതàµ\8dà´¤ à´µà´¿à´§à´¤àµ\8dതിൽ à´¡à´¾à´±àµ\8dറാബàµ\87à´¸àµ\8d à´¬à´¨àµ\8dധിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´\95യാണàµ\8dâ\80\8c. à´\95àµ\8dരമപàµ\8dà´°à´\95ാരമàµ\81à´³àµ\8dà´³ à´µàµ\83à´¤àµ\8dതിയാà´\95àµ\8dà´\95ലിനàµ\81 à´µàµ\87à´£àµ\8dà´\9fà´¿ à´¬à´¨àµ\8dധിà´\9aàµ\8dà´\9a à´¡à´¾à´±àµ\8dറാബàµ\87à´¸àµ\8d à´¤à´¾à´®à´¸à´¿à´¯à´¾à´¤àµ\86 à´¤à´¨àµ\8dà´¨àµ\86 à´¸à´¾à´§à´¾à´°à´£ à´¨à´¿à´² à´\95àµ\88വരിà´\95àµ\8dà´\95àµ\81à´\82.
+'readonlytext' => 'പുതിയ തിരുത്തുകളും മറ്റ് മാറ്റങ്ങളും അനുവദനീയമല്ലാത്ത വിധത്തിൽ ഡാറ്റാബേസ് ബന്ധിച്ചിരിക്കുകയാണ്‌. ക്രമപ്രകാരമുള്ള വൃത്തിയാക്കലിനു വേണ്ടി ബന്ധിച്ച ഡാറ്റാബേസ് താമസിയാതെ തന്നെ സാധാരണ നില കൈവരിക്കും.
 
 ഡാറ്റാബേസ് ബന്ധിച്ച കാര്യനിർവാഹകൻ അതിനു സൂചിപ്പിച്ച കാരണം: $1',
 'missing-article' => 'താളിൽ ഉണ്ടായിരിക്കേണ്ട വിവരങ്ങൾ ("$1" $2), വിവരശേഖരത്തിൽ കണ്ടെത്താനായില്ല.
@@ -688,18 +698,18 @@ $1',
 നീക്കം ചെയ്യപ്പെട്ട ഒരു താളിലെ നാൾവഴിയുടേയോ മാറ്റത്തിന്റേയോ കണ്ണി പിന്തുടർന്നതിനാലായിരിക്കാം മിക്കവാറൂം ഇത് സംഭവിച്ചത്.
 
 അല്ലെങ്കിൽ ഇത് ഒരു സോഫ്റ്റ്‌വെയർ ബഗ്ഗ് ആയിരിക്കാം.
-ദയവായി à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86 à´¯àµ\81.à´\86ർ.à´\8eൽ à´¸à´¹à´¿à´¤à´\82 à´\92à´°àµ\81 [[Special:ListUsers/sysop|à´\95ാരàµ\8dയനിർവാഹà´\95à´¨àµ\86]] ഇത് അറിയിക്കുക.',
+ദയവായി à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86 à´¯àµ\81.à´\86ർ.à´\8eൽ à´¸à´¹à´¿à´¤à´\82 à´\92à´°àµ\81 [[Special:ListUsers/sysop|à´\95ാരàµ\8dയനിർവാഹà´\95à´¯àµ\86(à´¨àµ\86)]] ഇത് അറിയിക്കുക.',
 'missingarticle-rev' => '(മാറ്റം#: $1)',
 'missingarticle-diff' => '(വ്യത്യാസം: $1, $2)',
 'readonly_lag' => ' കീഴ്-വിവരശേഖര സെർവറുകൾ മാസ്റ്റർ വരെ എത്തിയതിനാൽ വിവരശേഖരം സ്വയം ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു',
 'internalerror' => 'ആന്തരിക പിഴവ്',
 'internalerror_info' => 'ആന്തരിക പിഴവ്: $1',
 'fileappenderrorread' => 'കൂട്ടിച്ചേർക്കുന്ന സമയം "$1" വായിച്ചെടുക്കാൻ കഴിഞ്ഞില്ല.',
-'fileappenderror' => '"$1" എന്നത് "$2"-ലേക്ക് കൂട്ടിച്ചേർക്കുവാൻ സാധിച്ചില്ല.',
+'fileappenderror' => '"$1" എന്നത് "$2" എന്നതിലേയ്ക്ക് കൂട്ടിച്ചേർക്കുവാൻ സാധിച്ചില്ല.',
 'filecopyerror' => '"$1" എന്ന പ്രമാണം "$2" എന്നതിലേയ്ക്ക് പകർത്താൻ സാധിച്ചില്ല.',
-'filerenameerror' => 'à´ªàµ\8dരമാണà´\82 "$1", "$2" à´\8eà´¨àµ\8dà´¨ à´¤à´²à´\95àµ\8dà´\95àµ\86à´\9fàµ\8dà´\9fà´¿à´²àµ\87à´¯àµ\8dà´\95àµ\8dà´\95àµ\81 മാറ്റാൻ സാധിച്ചില്ല.',
+'filerenameerror' => 'à´ªàµ\8dരമാണà´\82 "$1", "$2" à´\8eà´¨àµ\8dà´¨ à´¤à´²à´\95àµ\8dà´\95àµ\86à´\9fàµ\8dà´\9fà´¿à´²àµ\87à´¯àµ\8dà´\95àµ\8dà´\95àµ\8d മാറ്റാൻ സാധിച്ചില്ല.',
 'filedeleteerror' => '"$1" നീക്കം ചെയ്യാൻ സാധിച്ചില്ല.',
-'directorycreateerror' => '"$1" എന്ന directory സൃഷ്ടിക്കാൻ സാധിച്ചില്ല.',
+'directorycreateerror' => '"$1" എന്ന ഡയറക്റ്ററി സൃഷ്ടിക്കാൻ സാധിച്ചില്ല.',
 'filenotfound' => '"$1" എന്ന പ്രമാണം കണ്ടെത്താനായില്ല.',
 'fileexistserror' => '"$1" എന്ന പ്രമാണത്തിലേയ്ക്ക് എഴുതാൻ പറ്റിയില്ല: പ്രമാണം നിലവിലുണ്ട്',
 'unexpected' => 'പ്രതീക്ഷിക്കാത്ത മൂല്യം: "$1"="$2".',
@@ -716,29 +726,26 @@ $1',
 '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' => 'à´\88 à´¤à´¾àµ¾ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\8b à´®à´±àµ\8dà´±àµ\81 à´ªàµ\8dà´°à´µàµ\83à´¤àµ\8dതിà´\95à´³àµ\8b à´¤à´\9fയാനാà´\95àµ\81à´\82 à´µà´¿à´§à´\82 à´¸à´\82à´°à´\95àµ\8dà´·à´¿à´\95àµ\8dà´\95à´ªàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9fà´¿à´\9fàµ\8dà´\9fàµ\81à´³àµ\8dളതാണàµ\8d.',
+'protectedpagetext' => 'ഈ താൾ തിരുത്തോ മറ്റു പ്രവൃത്തികളോ തടയാനാകും വിധം സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്.',
 'viewsourcetext' => 'താങ്കൾക്ക് ഈ താളിന്റെ മൂലരൂപം കാണാനും പകർത്താനും സാധിക്കും:',
-'viewyourtext' => "താà´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´\88 à´¤à´¾à´³à´¿à´²àµ\86 '''താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95à´³àµ\81à´\9fàµ\86''' à´®àµ\82ലരàµ\82à´ªà´\82 à´\95ാണാനàµ\81à´\82 à´ªà´\95ർതàµ\8dതാനàµ\81à´\82 à´¸à´¾à´§à´¿à´\95àµ\8dà´\95àµ\81à´\82:",
+'viewyourtext' => "താങ്കൾക്ക് ഈ താളിലെ '''താങ്കളുടെ തിരുത്തുകളുടെ''' മൂലരൂപം കാണാനും പകർത്താനും സാധിക്കും:",
 'protectedinterface' => 'ഈ താൾ ഈ വിക്കിയുടെ സോഫ്റ്റ്‌വെയറിന്റെ സമ്പർക്കമുഖ എഴുത്തുകൾ നൽകുന്നു, അതുകൊണ്ട് ദുരുപയോഗം തടയാൻ ബന്ധിക്കപ്പെട്ടിരിക്കുന്നു. എല്ലാ വിക്കികൾക്കുമായി പരിഭാഷ കൂട്ടിച്ചേർക്കാനോ, പരിഭാഷയിൽ മാറ്റം വരുത്താനോ, ദയവായി മീഡിയവിക്കി പ്രാദേശീകരണ പദ്ധതിയായ [//translatewiki.net/ translatewiki.net] ഉപയോഗിക്കുക.',
 'editinginterface' => "'''മുന്നറിയിപ്പ്:''' സോഫ്റ്റ്‌വെയറിൽ സമ്പർക്കമുഖം നിലനിർത്തുന്ന താളാണു താങ്കൾ തിരുത്തുവാൻ പോകുന്നത്.
 ഈ താളിൽ താങ്കൾ വരുത്തുന്ന മാറ്റങ്ങൾ ഉപയോക്താക്കൾ വിക്കി കാണുന്ന വിധത്തെ മാറ്റിമറിച്ചേക്കാം.
 മീഡിയവിക്കി സന്ദേശങ്ങളുടെ പരിഭാഷകൾ കൂട്ടിച്ചേർക്കാനും മാറ്റംവരുത്താനും മീഡിയവിക്കി സന്ദേശങ്ങളുടെ പ്രാദേശികവത്കരണ പദ്ധതിയായ [//translatewiki.net/ translatewiki.net] ഉപയോഗിക്കുവാൻ താല്പര്യപ്പെടുന്നു.",
-'cascadeprotected' => 'നിർà´\9dà´°à´¿à´¤ (cascading) à´¸àµ\97à´\95à´°àµ\8dà´¯à´\82 à´\89പയàµ\8bà´\97à´¿à´\9aàµ\8dà´\9aàµ\8d à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ à´¨à´\9fà´¤àµ\8dà´¤àµ\81à´¨àµ\8dനതിനàµ\81 à´¸à´\82â\80\8cà´°à´\95àµ\8dà´·à´£à´\82 à´\8fർപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dതിയിà´\9fàµ\8dà´\9fàµ\81à´³àµ\8dà´³ {{PLURAL:$1|താഴàµ\86 à´\95àµ\8aà´\9fàµ\81à´¤àµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´³àµ\8dà´³ à´¤à´¾à´³à´¿à´¨àµ\8dà´±àµ\86|താഴàµ\86 à´\95àµ\8aà´\9fàµ\81à´¤àµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´³àµ\8dà´³ à´¤à´¾à´³àµ\81à´\95à´³àµ\81à´\9fàµ\86}} à´­à´¾à´\97മാണàµ\8dâ\80\8c à´\88 à´¤à´¾àµ¾. à´\85തിനാൽ à´\88 à´¤à´¾àµ¾ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81വാൻ à´¸à´¾à´§à´¿à´\95àµ\8dà´\95à´¿à´²àµ\8dà´²:
+'cascadeprotected' => 'നിർഝരിത (cascading) സൗകര്യം ഉപയോഗിച്ച് തിരുത്തൽ നടത്തുന്നതിനു സം‌രക്ഷണം ഏർപ്പെടുത്തിയിട്ടുള്ള {{PLURAL:$1|താഴെ കൊടുത്തിട്ടുള്ള താളിന്റെ|താഴെ കൊടുത്തിട്ടുള്ള താളുകളുടെ}} ഭാഗമാണ്‌ ഈ താൾ. അതിനാൽ ഈ താൾ തിരുത്താൻ സാധിക്കില്ല:
 $2',
 'namespaceprotected' => "'''$1''' നാമമേഖലയിലുള്ള താളുകൾ തിരുത്താൻ താങ്കൾക്ക് അനുവാദമില്ല.",
 'customcssprotected' => 'ഈ സി.എസ്.എസ്. താളിൽ മറ്റൊരു ഉപയോക്താവിന്റെ സ്വകാര്യസജ്ജീകരണങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതിനാൽ താങ്കൾക്ക് ഈ താൾ തിരുത്താൻ അനുവാദമില്ല.',
 'customjsprotected' => 'ഈ ജാവാസ്ക്രിപ്റ്റ് താളിൽ മറ്റൊരു ഉപയോക്താവിന്റെ സ്വകാര്യസജ്ജീകരണങ്ങൾ ഉൾക്കൊള്ളുന്നു, അതിനാൽ താങ്കൾക്ക് ഈ താൾ തിരുത്താൻ അനുവാദമില്ല.',
 'mycustomcssprotected' => 'ഈ സി.എസ്.എസ്.  താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്കില്ല.',
 'mycustomjsprotected' => 'ഈ ജാവാസ്ക്രിപ്റ്റ് താൾ തിരുത്താനുള്ള അനുമതി താങ്കൾക്കില്ല.',
-'myprivateinfoprotected' => 'താà´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´¸àµ\8dവനàµ\8dà´¤à´\82 à´¸àµ\8dà´µà´\95ാരàµ\8dയവിവരà´\99àµ\8dà´\99ൾ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81വാനàµ\81à´³àµ\8dà´³ à´\85à´¨àµ\81മതിയിലàµ\8dà´².',
-'mypreferencesprotected' => 'താà´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´¸àµ\8dവനàµ\8dà´¤à´\82 à´\95àµ\8dà´°à´®àµ\80à´\95à´°à´£à´\99àµ\8dà´\99ൾ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81വാനàµ\81à´³àµ\8dà´³ à´\85à´¨àµ\81മതിയിലàµ\8dà´².',
+'myprivateinfoprotected' => 'താങ്കൾക്ക് സ്വന്തം സ്വകാര്യവിവരങ്ങൾ തിരുത്താനുള്ള അനുമതിയില്ല.',
+'mypreferencesprotected' => 'താങ്കൾക്ക് സ്വന്തം ക്രമീകരണങ്ങൾ തിരുത്താനുള്ള അനുമതിയില്ല.',
 'ns-specialprotected' => 'പ്രത്യേകം എന്ന നാമമേഖലയിൽ വരുന്ന താളുകൾ തിരുത്താനാവുന്നവയല്ല.',
 'titleprotected' => "[[User:$1|$1]] എന്ന ഉപയോക്താവ് ഈ താൾ ഉണ്ടാക്കുന്നതു നിരോധിച്ചിരിക്കുന്നു.
 ''$2'' എന്നതാണു അതിനു കാണിച്ചിട്ടുള്ള കാരണം.",
@@ -821,13 +828,13 @@ $2',
 'createacct-benefit-body1' => '{{PLURAL:$1|തിരുത്ത്|തിരുത്തുകൾ}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|താൾ|താളുകൾ}}',
 'createacct-benefit-body3' => 'സമീപകാലത്ത് സംഭാവന {{PLURAL:$1|ചെയ്തയാൾ|ചെയ്തവർ}}',
-'badretype' => 'താà´\99àµ\8dà´\95ൾ à´¨àµ½à´\95à´¿à´¯ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\81à´\95ൾ à´¸à´®à´®ല്ല.',
+'badretype' => 'താà´\99àµ\8dà´\95ൾ à´¨àµ½à´\95à´¿à´¯ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\81à´\95ൾ à´\92à´¤àµ\8dà´¤àµ\81à´ªàµ\8bà´\95àµ\81à´¨àµ\8dനില്ല.',
 'userexists' => 'നൽകിയ ഉപയോക്തൃനാമം മുമ്പേ നിലവിലുണ്ട്.
 ദയവായി മറ്റൊരു ഉപയോക്തൃനാമം തിരഞ്ഞെടുക്കുക.',
 'loginerror' => 'പ്രവേശനം സാധിച്ചില്ല',
 'createacct-error' => 'അംഗത്വസൃഷ്ടിക്കിടെ പിഴവുണ്ടായി',
 'createaccounterror' => 'അംഗത്വമെടുക്കാൻ കഴിഞ്ഞില്ല:$1',
-'nocookiesnew' => 'à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83à´\85à´\82à´\97à´¤àµ\8dà´µà´\82 à´\89à´£àµ\8dà´\9fà´¾à´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81. à´ªà´\95àµ\8dà´·àµ\86 à´¤à´¾à´\99àµ\8dà´\95ൾ à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dതിà´\9fàµ\8dà´\9fà´¿à´²àµ\8dà´². {{SITENAME}} à´¸à´\82à´°à´\82à´­à´¤àµ\8dതിൽ à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dà´¯àµ\81വാൻ à´\95àµ\81à´\95àµ\8dà´\95à´¿à´\95ൾ à´¸à´\9càµ\8dà´\9cമാà´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95à´£à´\82. à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\95à´®àµ\8dà´ªàµ\8dà´¯àµ\82à´\9fàµ\8dà´\9fറിൽ à´¨à´¿à´²à´µà´¿àµ½ à´\95àµ\81à´\95àµ\8dà´\95à´¿à´\95ൾ à´¡à´¿à´¸àµ\87ബിൾ à´\9aàµ\86à´¯àµ\8dതിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81. à´\85à´¤àµ\81 à´\8eà´¨àµ\87ബിൾ à´\9aàµ\86à´¯àµ\8dà´¤àµ\81 താങ്കളുടെ ഉപയോക്തൃനാമവും രഹസ്യവാക്കും ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യൂ.',
+'nocookiesnew' => 'à´\89പയàµ\8bà´\95àµ\8dà´¤àµ\83à´\85à´\82à´\97à´¤àµ\8dà´µà´\82 à´\89à´£àµ\8dà´\9fà´¾à´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81. à´ªà´\95àµ\8dà´·àµ\86 à´¤à´¾à´\99àµ\8dà´\95ൾ à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dതിà´\9fàµ\8dà´\9fà´¿à´²àµ\8dà´². {{SITENAME}} à´¸à´\82à´°à´\82à´­à´¤àµ\8dതിൽ à´²àµ\8bà´\97ിൻ à´\9aàµ\86à´¯àµ\8dയാൻ à´\95àµ\81à´\95àµ\8dà´\95à´¿à´\95ൾ à´¸à´\9càµ\8dà´\9cമാà´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95à´£à´\82. à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\95à´®àµ\8dà´ªàµ\8dà´¯àµ\82à´\9fàµ\8dà´\9fറിൽ à´¨à´¿à´²à´µà´¿àµ½ à´\95àµ\81à´\95àµ\8dà´\95à´¿à´\95ൾ à´ªàµ\8dരവർതàµ\8dതനരഹിതമാà´\95àµ\8dà´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81. à´\85à´¤àµ\8d à´¸à´\9càµ\8dà´\9cമാà´\95àµ\8dà´\95à´¿à´¯ à´¶àµ\87à´·à´\82 താങ്കളുടെ ഉപയോക്തൃനാമവും രഹസ്യവാക്കും ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യൂ.',
 'nocookieslogin' => '{{SITENAME}} സംരംഭത്തിൽ ലോഗിൻ ചെയ്യുവാൻ കുക്കികൾ സജ്ജമാക്കിയിരിക്കണം. പക്ഷെ താങ്കൾ കുക്കികൾ സജ്ജമാക്കിയിട്ടില്ല. കുക്കികൾ സജ്ജമാക്കിയതിനു ശേഷം വീണ്ടും ലോഗിൻ ചെയ്യാൻ ശ്രമിക്കൂ.',
 'nocookiesfornew' => 'ഞങ്ങൾക്ക് ഇതിന്റെ സ്രോതസ് കണ്ടെത്താനാകാതിരുന്നതിനാൽ ഉപയോക്തൃ അംഗത്വം സൃഷ്ടിച്ചിട്ടില്ല.
 കുക്കികൾ സജ്ജമാക്കിയ ശേഷം, താൾ വീണ്ടുമെടുത്ത്, വീണ്ടും ശ്രമിക്കുക.',
@@ -846,7 +853,7 @@ $2',
 'passwordtooshort' => 'രഹസ്യവാക്കിൽ കുറഞ്ഞതു {{PLURAL:$1|ഒരു അക്ഷരം|$1 അക്ഷരങ്ങൾ}} ഉണ്ടായിരിക്കണം.',
 'password-name-match' => 'താങ്കളുടെ രഹസ്യവാക്ക് ഉപയോക്തൃനാമത്തിൽ നിന്നും വ്യത്യസ്തമായിരിക്കണം.',
 'password-login-forbidden' => 'ഈ ഉപയോക്തൃനാമത്തിന്റെയും രഹസ്യവാക്കിന്റെയും ഉപയോഗം നിരോധിച്ചിരിക്കുന്നു.',
-'mailmypassword' => 'à´ªàµ\81തിയ à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´\87à´®àµ\86യിൽ à´\9aàµ\86à´¯àµ\8dà´¯ുക',
+'mailmypassword' => 'രഹസàµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´ªàµ\81à´¨à´\83à´\95àµ\8dà´°à´®àµ\80à´\95à´°à´¿à´\95àµ\8dà´\95ുക',
 'passwordremindertitle' => '{{SITENAME}} സംരംഭത്തിൽ ഉപയോഗിക്കാനുള്ള താത്കാലിക രഹസ്യവാക്ക്',
 'passwordremindertext' => 'ആരോ ഒരാൾ ($1 എന്ന ഐ.പി. വിലാസത്തിൽനിന്ന് ഒരാൾ, ഒരു പക്ഷേ താങ്കളായിരിക്കാം) {{SITENAME}} ($4) സംരംഭത്തിലേക്ക് പുതിയ രഹസ്യവാക്ക് ആവശ്യപ്പെട്ടിരിക്കുന്നു. "$2" എന്ന ഉപയോക്താവിന്റെ താത്കാലിക രഹസ്യവാക്കായി "$3" സജ്ജീകരിച്ചിരിക്കുന്നു. താങ്കൾക്ക് ആവശ്യമെങ്കിൽ, താങ്കൾ പ്രവേശിച്ചശേഷം പുതിയ രഹസ്യവാക്ക് സജ്ജീകരിക്കേണ്ടതാണ്. താങ്കളുടെ താത്കാലിക രഹസ്യവാക്കിന്റെ കാലാവധി {{PLURAL:$5|ഒരു ദിവസമാകുന്നു|$5 ദിവങ്ങളാകുന്നു}}.
 
@@ -879,7 +886,7 @@ $2',
 പുതിയതായി ശ്രമിക്കുന്നതിനു മുമ്പ് $1 ദയവായി കാത്തിരിക്കുക.',
 'login-abort-generic' => 'താങ്കളുടെ പ്രവേശിക്കൽ പരാജയപ്പെട്ടു - റദ്ദാക്കപ്പെട്ടിരിക്കുന്നു',
 'loginlanguagelabel' => 'ഭാഷ: $1',
-'suspicious-userlogout' => 'à´²àµ\8bà´\97àµ\97à´\9fàµ\8dà´\9fàµ\8d à´\9aàµ\86à´¯àµ\8dയാനàµ\81à´³àµ\8dà´³ à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\85à´­àµ\8dയർതàµ\8dഥന à´¨à´¿à´°à´¸à´¿à´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81, à´\95ാരണà´\82 à´\85à´¤àµ\8d à´¤à´\95ർനàµ\8dà´¨ ബ്രൗസറിൽ നിന്നോ കാഷിങ് പ്രോക്സിയിൽ നിന്നോ ഉണ്ടായതുപോലെ അനുഭവപ്പെടുന്നു.',
+'suspicious-userlogout' => 'à´²àµ\8bà´\97àµ\97à´\9fàµ\8dà´\9fàµ\8d à´\9aàµ\86à´¯àµ\8dയാനàµ\81à´³àµ\8dà´³ à´¤à´¾à´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´\85à´­àµ\8dയർതàµ\8dഥന à´¨à´¿à´°à´¸à´¿à´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81, à´\95ാരണà´\82 à´\85à´¤àµ\8d à´\95àµ\87à´\9fായ ബ്രൗസറിൽ നിന്നോ കാഷിങ് പ്രോക്സിയിൽ നിന്നോ ഉണ്ടായതുപോലെ അനുഭവപ്പെടുന്നു.',
 'createacct-another-realname-tip' => 'താങ്കളുടെ യഥാർത്ഥ പേര്‌ നൽകണമെന്നു നിർബന്ധമില്ല.
 
 എങ്കിലും അങ്ങനെ ചെയ്താൽ, ഉപയോക്താക്കൾക്ക് അവരരവരുടെ പേരിൽ തന്നെ തങ്ങളുടെ സൃഷ്ടിക്ക് കടപ്പാട് ലഭിക്കുന്നതാണ്.',
@@ -890,7 +897,7 @@ $2',
 'user-mail-no-body' => 'ശൂന്യമായതോ അസാമാന്യമായി ചെറുതോ ആയ ഉള്ളടക്കമുള്ള ഇമെയിൽ അയയ്ക്കാൻ ശ്രമിച്ചു.',
 
 # Change password dialog
-'resetpass' => 'രഹസ്യവാക്ക് മാറ്റുക',
+'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
 'resetpass_announce' => 'താങ്കൾക്ക് ഇമെയിൽ ആയി കിട്ടിയ താൽക്കാലിക കോഡ് ഉപയോഗിച്ചാണ്‌ ഇപ്പോൾ ലോഗിൻ ചെയ്തിരിക്കുന്നതു്‌. ലോഗിൻ പ്രക്രിയ പൂർത്തിയാകുവാൻ പുതിയൊരു രഹസ്യവാക്ക് ഇവിടെ കൊടുക്കുക:',
 'resetpass_text' => '<!-- എഴുത്ത് ഇവിടെ ചേർക്കുക -->',
 'resetpass_header' => 'അംഗത്വത്തിന്റെ രഹസ്യവാക്ക് മാറ്റുക',
@@ -911,7 +918,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക',
 'passwordreset-text-one' => 'രഹസ്യവാക്ക് പുനർസജ്ജീകരിക്കാനായി ഈ ഫോം പൂരിപ്പിക്കുക.',
-'passwordreset-text-many' => '{{PLURAL:$1|താà´\99àµ\8dà´\95à´³àµ\81à´\9fàµ\86 à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´ªàµ\81നസà´\9càµ\8dà´\9càµ\80à´\95à´°à´¿à´\95àµ\8dà´\95ാൻ à´\92à´°àµ\81 à´«àµ\8bà´\82 പൂരിപ്പിച്ചു നൽകുക.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à´\87à´®àµ\86യിൽ à´µà´´à´¿ à´¤à´¾à´¤àµ\8dà´\95ാലിà´\95 à´°à´¹à´¸àµ\8dയവാà´\95àµ\8dà´\95àµ\8d à´²à´­à´¿à´\95àµ\8dà´\95ാനായി à´¤à´¾à´´àµ\86 à´¨àµ½à´\95ിയിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dനവയിൽ à´\8fà´¤àµ\86à´\99àµ\8dà´\95à´¿à´²àµ\81à´®àµ\8aà´¨àµ\8dà´¨àµ\8d പൂരിപ്പിച്ചു നൽകുക.}}',
 'passwordreset-legend' => 'രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കുക',
 'passwordreset-disabled' => 'ഈ വിക്കിയിൽ രഹസ്യവാക്ക് പുനഃക്രമീകരിക്കലുകൾ പ്രവർത്തരഹിതമാക്കിയിരിക്കുകയാണ്.',
 'passwordreset-emaildisabled' => 'ഈ വിക്കിയിൽ ഇമെയിൽ സൗകര്യങ്ങൾ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു.',
@@ -1095,7 +1102,7 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
 'creating' => '$1 സൃഷ്ടിക്കുന്നു',
 'editingsection' => 'തിരുത്തുന്ന താൾ:- $1 (ഉപവിഭാഗം)',
 'editingcomment' => 'തിരുത്തുന്ന താൾ:- $1 (പുതിയ ഉപവിഭാഗം)',
-'editconflict' => 'തിരàµ\81à´¤àµ\8dതൽ സമരസപ്പെടായ്ക: $1',
+'editconflict' => 'തിരàµ\81à´¤àµ\8dà´¤àµ\8d സമരസപ്പെടായ്ക: $1',
 'explainconflict' => "താങ്കൾ തിരുത്താൻ തുടങ്ങിയതിനു ശേഷം ഈ താൾ മറ്റാരോ തിരുത്തി സേവ് ചെയ്തിരിക്കുന്നു.
 മുകളിലുള്ള ടെക്സ്റ്റ് ഏരിയയിൽ നിലവിലുള്ള ഉള്ളടക്കം കാണിക്കുന്നു.
 താങ്കൾ ഉള്ളടക്കത്തിൽ വരുത്തിയ മാറ്റങ്ങൾ താഴെയുള്ള ടെക്സ്റ്റ് ഏരിയയിൽ കാണിക്കുന്നു.
@@ -1115,7 +1122,7 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
 ഇതു താങ്കൾത്തന്നെ എഴുതിയതാണെന്നും, അതല്ലെങ്കിൽ പകർപ്പവകാശ നിയമങ്ങളുടെ പരിധിയിലില്ലാത്ത ഉറവിടങ്ങളിൽനിന്നും പകർത്തിയതാണെന്നും ഉറപ്പാക്കുക (കുടുതൽ വിവരത്തിനു $1 കാണുക).
 '''പകർപ്പവകാശ സംരക്ഷണമുള്ള സൃഷ്ടികൾ ഒരു കാരണവശാലും ഇവിടെ പ്രസിദ്ധീകരിക്കരുത്!'''",
 'longpageerror' => "'''പിഴവ്: താങ്കൾ സമർപ്പിച്ച എഴുത്തുകൾക്ക് {{PLURAL:$1|ഒരു കിലോബൈറ്റ്|$1 കിലോബൈറ്റ്സ്}} വലിപ്പമുണ്ട്. പരമാവധി അനുവദനീയമായ വലിപ്പം {{PLURAL:$2|ഒരു കിലോബൈറ്റ്|$2 കിലോബൈറ്റ്സ്}} ആണ്‌. അതിനാലിതു സേവ് ചെയ്യാൻ സാദ്ധ്യമല്ല.'''",
-'readonlywarning' => "'''à´®àµ\81à´¨àµ\8dനറിയിപàµ\8dà´ªàµ\8d: à´¡àµ\87à´±àµ\8dറാബàµ\87à´¸àµ\8d à´ªà´°à´¿à´ªà´¾à´²à´¨à´¤àµ\8dതിനàµ\81 à´µàµ\87à´£àµ\8dà´\9fà´¿ à´¬à´¨àµ\8dധിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81, à´\85à´¤àµ\81à´\95àµ\8aà´£àµ\8dà´\9fàµ\8d à´¤à´¾à´\99àµ\8dà´\95ളിപàµ\8dà´ªàµ\8bൾ à´µà´°àµ\81à´¤àµ\8dതിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´¸àµ\87à´µàµ\8d à´\9aàµ\86à´¯àµ\8dയാൻ à´¸à´¾à´¦àµ\8dà´§àµ\8dയമലàµ\8dà´².''' à´¤à´¾à´\99àµ\8dà´\95ൾ à´µà´°àµ\81à´¤àµ\8dതിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´\92à´°àµ\81 à´\9fàµ\86à´\95àµ\8dà´¸àµ\8dà´±àµ\8dà´±àµ\8d à´ªàµ\8dരമാണതàµ\8dതിലàµ\87à´\95àµ\8dà´\95àµ\8d à´ªà´\95ർതàµ\8dതി (à´\95àµ\8bà´ªàµ\8dപി & à´ªàµ\87à´¸àµ\8dà´±àµ\8dà´±àµ\8d) à´ªà´¿à´¨àµ\8dà´¨àµ\80à´\9fàµ\81à´³àµ\8dà´³ à´\89പയàµ\8bà´\97à´¤àµ\8dതിനായി à´¸àµ\87à´µàµ\8d à´\9aàµ\86à´¯àµ\8dà´¯àµ\81à´µാൻ താല്പര്യപ്പെടുന്നു. ഡേറ്റാബേസ് ബന്ധിച്ച അഡ്മിനിസ്ട്രേറ്റർ നൽകിയ വിശദീകരണം: $1",
+'readonlywarning' => "'''à´®àµ\81à´¨àµ\8dനറിയിപàµ\8dà´ªàµ\8d: à´¡àµ\87à´±àµ\8dറാബàµ\87à´¸àµ\8d à´ªà´°à´¿à´ªà´¾à´²à´¨à´¤àµ\8dതിനàµ\81 à´µàµ\87à´£àµ\8dà´\9fà´¿ à´¬à´¨àµ\8dധിà´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81, à´\85à´¤àµ\81à´\95àµ\8aà´£àµ\8dà´\9fàµ\8d à´¤à´¾à´\99àµ\8dà´\95ളിപàµ\8dà´ªàµ\8bൾ à´µà´°àµ\81à´¤àµ\8dതിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´¸àµ\87à´µàµ\8d à´\9aàµ\86à´¯àµ\8dയാൻ à´¸à´¾à´¦àµ\8dà´§àµ\8dയമലàµ\8dà´².''' à´¤à´¾à´\99àµ\8dà´\95ൾ à´µà´°àµ\81à´¤àµ\8dതിയ à´®à´¾à´±àµ\8dà´±à´\99àµ\8dà´\99ൾ à´\92à´°àµ\81 à´\9fàµ\86à´\95àµ\8dà´¸àµ\8dà´±àµ\8dà´±àµ\8d à´«à´¯à´²à´¿à´²àµ\87à´\95àµ\8dà´\95àµ\8d à´ªà´\95ർതàµ\8dതി (à´\95àµ\8bà´ªàµ\8dപി & à´ªàµ\87à´¸àµ\8dà´±àµ\8dà´±àµ\8d) à´ªà´¿à´¨àµ\8dà´¨àµ\80à´\9fàµ\81പയàµ\8bà´\97à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dനതിനായി à´\95à´°àµ\81തിവà´\95àµ\8dà´\95ാൻ താല്പര്യപ്പെടുന്നു. ഡേറ്റാബേസ് ബന്ധിച്ച അഡ്മിനിസ്ട്രേറ്റർ നൽകിയ വിശദീകരണം: $1",
 'protectedpagewarning' => "'''മുന്നറിയിപ്പ്:  ഈ താൾ കാര്യനിർവാഹക പദവിയുള്ളവർക്കു മാത്രം തിരുത്താൻ സാധിക്കാവുന്ന തരത്തിൽ സം‌രക്ഷിക്കപ്പെട്ടിരിക്കുന്നു.''' അവലംബമായി രേഖകളിൽ ലഭ്യമായ ഏറ്റവും പുതിയ വിവരം താഴെ നൽകിയിരിക്കുന്നു:",
 'semiprotectedpagewarning' => "'''ശ്രദ്ധിക്കുക:'''അംഗത്വമെടുത്തിട്ടുള്ളവർക്കുമാത്രം തിരുത്താൻ സാധിക്കുന്ന വിധത്തിൽ ഈ താൾ സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്നു. അവലംബമായി രേഖകളിലെ ഏറ്റവും പുതിയ വിവരം താഴെ കൊടുത്തിരിക്കുന്നു:",
 'cascadeprotectedwarning' => "'''മുന്നറിയിപ്പ്:''' ഈ താൾ കാര്യനിർവാഹക അവകാശമുള്ളവർക്കു മാത്രം തിരുത്തുവാൻ സാധിക്കുന്ന വിധത്തിൽ സം‌രക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌. {{PLURAL:$1|താൾ|താളുകൾ}} കാസ്കേഡ് സം‌രക്ഷണം ചെയ്തപ്പോൾ അതിന്റെ ഭാഗമായി സംരക്ഷിക്കപ്പെട്ടിട്ടുള്ളതാണ്‌ ഈ താൾ.",
@@ -1186,8 +1193,8 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
 'converter-manual-rule-error' => 'മാനുഷികമായുള്ള ഭാഷാ പരിവർത്തന നിയമത്തിൽ പിഴവ് കണ്ടെത്തി',
 
 # "Undo" feature
-'undo-success' => 'à´\88 à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ à´¤à´¾à´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´¤à´¿à´°à´¸àµ\8dà´\95àµ\8dà´\95à´°à´¿à´\95àµ\8dà´\95ാവàµ\81à´¨àµ\8dനതാണàµ\8dâ\80\8c. à´¤à´¾à´´àµ\86 à´\95àµ\8aà´\9fàµ\81à´¤àµ\8dതിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81à´\95ൾ à´¤à´®àµ\8dമിലàµ\81à´³àµ\8dà´³ à´¤à´¾à´°à´¤à´®àµ\8dà´¯à´\82 à´\92à´¨àµ\8dà´¨àµ\81à´\95àµ\82à´\9fà´¿ à´ªà´°à´¿à´¶àµ\8bധിà´\9aàµ\8dà´\9aàµ\8d à´\88 à´ªàµ\8dà´°à´µàµ\83à´¤àµ\8dതി à´\9aàµ\86à´¯àµ\8dയണàµ\8b à´\8eà´¨àµ\8dà´¨àµ\8d à´\92à´¨àµ\8dà´¨àµ\81à´\95àµ\82à´\9fà´¿ à´\89റപàµ\8dപാà´\95àµ\8dà´\95àµ\81à´\95. à´\89റപàµ\8dപാണàµ\86à´\99àµ\8dà´\95ിൽ à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ തിരസ്ക്കരിക്കുവാൻ താൾ സേവ് ചെയ്യുക.',
-'undo-failure' => 'à´\87à´\9fà´¯àµ\8dà´\95àµ\8dà´\95àµ\81à´³àµ\8dà´³ à´¤à´¿à´°àµ\81à´¤àµ\8dതലàµ\81à´\95ൾ à´¤à´®àµ\8dമിൽ à´¸à´®à´°à´¸à´ªàµ\8dà´ªàµ\86à´\9fാതàµ\8dതതàµ\81 à´\95ാരണà´\82 à´\88 à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ തിരസ്ക്കരിക്കുവാനാവില്ല.',
+'undo-success' => 'à´\88 à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d à´¤à´¾à´\99àµ\8dà´\95ൾà´\95àµ\8dà´\95àµ\8d à´¤à´¿à´°à´¸àµ\8dà´\95àµ\8dà´\95à´°à´¿à´\95àµ\8dà´\95ാവàµ\81à´¨àµ\8dനതാണàµ\8dâ\80\8c. à´¤à´¾à´´àµ\86 à´\95àµ\8aà´\9fàµ\81à´¤àµ\8dതിരിà´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨ à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81à´\95ൾ à´¤à´®àµ\8dമിലàµ\81à´³àµ\8dà´³ à´¤à´¾à´°à´¤à´®àµ\8dà´¯à´\82 à´\92à´¨àµ\8dà´¨àµ\81à´\95àµ\82à´\9fà´¿ à´ªà´°à´¿à´¶àµ\8bധിà´\9aàµ\8dà´\9aàµ\8d à´\88 à´ªàµ\8dà´°à´µàµ\83à´¤àµ\8dതി à´\9aàµ\86à´¯àµ\8dയണàµ\8b à´\8eà´¨àµ\8dà´¨àµ\8d à´\92à´¨àµ\8dà´¨àµ\81à´\95àµ\82à´\9fà´¿ à´\89റപàµ\8dപാà´\95àµ\8dà´\95àµ\81à´\95. à´\89റപàµ\8dപാണàµ\86à´\99àµ\8dà´\95ിൽ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d തിരസ്ക്കരിക്കുവാൻ താൾ സേവ് ചെയ്യുക.',
+'undo-failure' => 'à´\87à´\9fà´¯àµ\8dà´\95àµ\8dà´\95àµ\81à´³àµ\8dà´³ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\81à´\95ൾ à´¤à´®àµ\8dമിൽ à´¸à´®à´°à´¸à´ªàµ\8dà´ªàµ\86à´\9fാതàµ\8dതതàµ\81 à´\95ാരണà´\82 à´\88 à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d തിരസ്ക്കരിക്കുവാനാവില്ല.',
 'undo-norev' => 'ഈ തിരുത്തൽ നിലവിലില്ലാത്തതിനാലോ മായ്ക്കപ്പെട്ടതിനാലോ പൂർവസ്ഥിതിയിലാക്കുവാൻ സാധിക്കുകയില്ല.',
 'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|സംവാദം]]) ചെയ്ത നാൾപ്പതിപ്പ് $1 നീക്കം ചെയ്യുന്നു',
 'undo-summary-username-hidden' => 'മറയ്ക്കപ്പെട്ട ഉപയോക്താവ് ചെയ്ത നാൾപ്പതിപ്പ് $1 തിരസ്കരിക്കുക',
@@ -1197,6 +1204,9 @@ $1 ആണ് ഈ തടയൽ നടത്തിയത്. ''$2'' എന്ന
 'cantcreateaccount-text' => "ഈ ഐ.പി. ('''$1''') വിലാസത്തിൽ നിന്നു അംഗത്വം സൃഷ്ടിക്കുന്നത് [[User:$3|$3]] നിരോധിച്ചിരിക്കുന്നു.
 
 $3 അതിനു കാണിച്ചിരിക്കുന്ന കാരണം ''$2'' ആണ്‌.",
+'cantcreateaccount-range-text' => "താങ്കളുടെ ഐ.പി. വിലാസം ('''$4''') ഉൾപ്പെടുന്ന '''$1''' എന്ന പരിധിയിലെ ഐ.പി. വിലാസങ്ങളിൽ നിന്ന് അംഗത്വമെടുക്കുന്നത് [[User:$3|$3]] തടഞ്ഞിരിക്കുകയാണ്.
+
+$3 നൽകിയിരിക്കുന്ന കാരണം ''$2'' എന്നാണ്",
 
 # History pages
 'viewpagelogs' => 'ഈ താളുമായി ബന്ധപ്പെട്ട രേഖകൾ കാണുക',
@@ -1215,7 +1225,7 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
 'page_last' => 'അവസാന',
 'histlegend' => "വ്യത്യാസങ്ങൾ ഒത്തുനോക്കാൻ: ഒത്തുനോക്കേണ്ട പതിപ്പുകൾക്കൊപ്പമുള്ള റേഡിയോ ബട്ടൺ തിരഞ്ഞെടുത്ത് ''\"തിരഞ്ഞെടുത്ത പതിപ്പുകൾ തമ്മിലുള്ള വ്യത്യാസം കാണുക\"'' എന്ന ബട്ടൺ ഞെക്കുകയോ ''എന്റർ'' കീ അമർത്തുകയോ ചെയ്യുക.<br />
 
-à´¸àµ\82à´\9aà´¨: (à´\87à´ªàµ\8dà´ªàµ\8bൾ) = à´¨à´¿à´²à´µà´¿à´²àµ\81à´³àµ\8dà´³ à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81മായàµ\81à´³àµ\8dà´³ à´µàµ\8dയതàµ\8dയാസà´\82, (à´®àµ\81à´®àµ\8dà´ªàµ\8d) = à´¤àµ\8aà´\9fàµ\8dà´\9fàµ\81à´®àµ\81ൻപതàµ\8dà´¤àµ\86 à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81മായàµ\81à´³àµ\8dà´³ à´µàµ\8dയതàµ\8dയാസà´\82, (à´\9aàµ\86.) = à´\9aàµ\86റിയ à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ.",
+à´¸àµ\82à´\9aà´¨: (à´\87à´ªàµ\8dà´ªàµ\8bൾ) = à´¨à´¿à´²à´µà´¿à´²àµ\81à´³àµ\8dà´³ à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81മായàµ\81à´³àµ\8dà´³ à´µàµ\8dയതàµ\8dയാസà´\82, (à´®àµ\81à´®àµ\8dà´ªàµ\8d) = à´¤àµ\8aà´\9fàµ\8dà´\9fàµ\81à´®àµ\81ൻപതàµ\8dà´¤àµ\86 à´ªà´¤à´¿à´ªàµ\8dà´ªàµ\81മായàµ\81à´³àµ\8dà´³ à´µàµ\8dയതàµ\8dയാസà´\82, (à´\9aàµ\86.) = à´\9aàµ\86റിയ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d.",
 'history-fieldset-title' => 'നാൾവഴി പരിശോധന',
 'history-show-deleted' => 'മായ്ക്കപ്പെട്ടവ മാത്രം',
 'histfirst' => 'ഏറ്റവും പഴയവ',
@@ -1267,10 +1277,6 @@ $3 അതിനു കാണിച്ചിരിക്കുന്ന കാര
 'revisiondelete' => 'പതിപ്പുകൾ ഒഴിവാക്കുകയോ/പുനഃസ്ഥാപിക്കുകയോ ചെയ്യുക',
 'revdelete-nooldid-title' => 'അസാധുവായ ലക്ഷ്യ നാൾപ്പതിപ്പ്',
 'revdelete-nooldid-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാനാവശ്യമായ ഉദ്ദിഷ്ട പതിപ്പ്/പതിപ്പുകൾ താങ്കൾ തിരഞ്ഞെടുത്തിട്ടില്ല അല്ലെങ്കിൽ ഉദ്ദിഷ്ട പതിപ്പ് നിലവിലില്ല അതുമല്ലെങ്കിൽ താങ്കൾ നിലവിലുള്ള പതിപ്പ് മറയ്ക്കുവാൻ ശ്രമിക്കുന്നു.',
-'revdelete-nologtype-title' => 'പ്രവർത്തനരേഖയുടെ തരം നൽകിയിട്ടില്ല',
-'revdelete-nologtype-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാൻ പ്രവർത്തനരേഖയുടെ തരം താങ്കൾ വ്യക്തമാക്കിയിട്ടില്ല.',
-'revdelete-nologid-title' => 'തെറ്റായ തിരുത്തൽ പട്ടിക',
-'revdelete-nologid-text' => 'ഈ പ്രവൃത്തി ചെയ്യുവാനായി രേഖയിൽ ലക്ഷ്യം വെയ്ക്കേണ്ട സംഭവം താങ്കൾ വ്യക്തമാക്കിയിട്ടില്ല അല്ലെങ്കിൽ വ്യക്തമാക്കിയത് നിലനിൽക്കുന്നില്ല.',
 'revdelete-no-file' => 'നിർദ്ദേശിച്ച പ്രമാണം നിലവിലില്ല.',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" പ്രമാണത്തിന്റെ $2 തീയതി $3 -യ്ക്കു നിലനിന്നിരുന്ന മായ്ക്കപ്പെട്ട പതിപ്പു  കാണണം എന്നു താങ്കൾക്ക് ഉറപ്പാണോ?',
 'revdelete-show-file-submit' => 'അതെ',
@@ -1305,8 +1311,6 @@ $1",
 'logdelete-failure' => "'''രേഖയുടെ ദൃശ്യത നിശ്ചിതപ്പെടുത്താൻ കഴിഞ്ഞില്ല:'''
 $1",
 'revdel-restore' => 'കാണുന്ന രൂപത്തിൽ മാറ്റം വരുത്തുക',
-'revdel-restore-deleted' => 'മായ്ക്കപ്പെട്ട നാൾപ്പതിപ്പുകൾ',
-'revdel-restore-visible' => 'ദൃശ്യമായ നാൾപ്പതിപ്പുകൾ',
 'pagehist' => 'താളിന്റെ നാൾവഴി',
 'deletedhist' => 'ഒഴിവാക്കപ്പെട്ട നാൾവഴി',
 'revdelete-hide-current' => '$2, $1 തീയതിയിലെ ഇനം മറയ്ക്കുമ്പോൾ പിഴവ് സംഭവിച്ചു: ഇത് ഇപ്പോഴുള്ള നാൾപ്പതിപ്പാണ്.
@@ -1384,12 +1388,8 @@ $1",
 # 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}}',
@@ -1398,10 +1398,8 @@ $1",
 'nextn-title' => 'അടുത്ത {{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}}',
 'shown-title' => '{{PLURAL:$1|ഒരു ഫലം|$1 ഫലങ്ങൾ}} വീതം താളിൽ കാണിക്കുക',
 'viewprevnext' => '$1 {{int:pipe-separator}} $2 എണ്ണം കാണുക ($3)',
-'searchmenu-legend' => 'തിരച്ചിൽ ഉപാധികൾ',
 'searchmenu-exists' => "'''\"[[:\$1]]\" എന്ന തലക്കെട്ടിൽ ഒരു താൾ ഈ വിക്കിയിൽ നിലവിലുണ്ട്'''",
 'searchmenu-new' => "'''ഈ വിക്കിയിൽ \"[[:\$1]]\" താൾ നിർമ്മിക്കുക!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ഈ പൂർവ്വപദങ്ങളുള്ള താളുകൾ ബ്രൗസ് ചെയ്യുക]]',
 'searchprofile-articles' => 'ലേഖനങ്ങളിൽ',
 'searchprofile-project' => 'സഹായം, പദ്ധതി താളുകളിൽ',
 'searchprofile-images' => 'പ്രമാണങ്ങളിൽ',
@@ -1422,20 +1420,16 @@ $1",
 'search-interwiki-default' => '$1 ഫലങ്ങൾ:',
 'search-interwiki-more' => '(കൂടുതൽ)',
 'search-relatedarticle' => 'ബന്ധപ്പെട്ടവ',
-'mwsuggest-disable' => 'തിരച്ചിലിനു നിർദ്ദേശങ്ങൾ നൽകുന്നത് പ്രവർത്തനരഹിതമാക്കുക',
 'searcheverything-enable' => 'എല്ലാ നാമമേഖലകളും തിരയുക',
 'searchrelated' => 'ബന്ധപ്പെട്ടവ',
 'searchall' => 'എല്ലാം',
 'showingresults' => "'''$2''' മുതലുള്ള {{PLURAL:$1|'''ഒരു''' ഫലം|'''$1''' ഫലങ്ങൾ}} താഴെ പ്രദർശിപ്പിക്കുന്നു.",
 'showingresultsnum' => "'''$2''' മുതലുള്ള {{PLURAL:$3|'''ഒരു''' ഫലം|'''$3''' ഫലങ്ങൾ}} താഴെ പ്രദർശിപ്പിക്കുന്നു.",
 'showingresultsheader' => "'''$4''' എന്ന പദത്തിനു ആകെ ലഭിച്ച {{PLURAL:$5| '''$3''' ഫലത്തിൽ '''$1''' എണ്ണം|'''$3''' ഫലത്തിൽ '''$1 മുതൽ $2''' വരെയുള്ളവ}}",
-'nonefound' => "'''ശ്രദ്ധിക്കുക''': ചില നാമമേഖലകൾ മാത്രമേ സ്വതേ തിരയാറുള്ളൂ. എല്ലാ വിവരങ്ങളിലും തിരയാൻ '''തിരയേണ്ട നാമമേഖലകൾ''' ''എല്ലാം'' എന്നതോ ആവശ്യമായ നാമമേഖലമാത്രം തിരയുവാൻ (സംവാദം, ഫലകം, തുടങ്ങിയവ) അതു മാത്രമായോ ടിക്ക് ചെയ്യേണ്ടതാണ്.",
 'search-nonefound' => 'താങ്കൾ തിരഞ്ഞ പദത്തിനു യോജിച്ച ഫലങ്ങളൊന്നും ലഭിച്ചില്ല.',
-'powersearch' => 'തിരയൂ',
 'powersearch-legend' => 'വിപുലീകൃത തിരച്ചിൽ',
 'powersearch-ns' => 'തിരയേണ്ട നാമമേഖലകൾ',
 'powersearch-redir' => 'തിരിച്ചുവിടലുകൾ കാണിക്കുക',
-'powersearch-field' => 'ഇതിനു വേണ്ടി തിരയുക',
 'powersearch-togglelabel' => 'അടയാളപ്പെടുത്തുക:',
 'powersearch-toggleall' => 'എല്ലാം',
 'powersearch-togglenone' => 'ഒന്നുംവേണ്ട',
@@ -1448,7 +1442,6 @@ $1",
 'mypreferences' => 'ക്രമീകരണങ്ങൾ',
 'prefs-edits' => 'ആകെ തിരുത്തുകൾ:',
 'prefsnologintext2' => 'താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി $1.',
-'changepassword' => 'രഹസ്യവാക്ക് മാറ്റുക',
 'prefs-skin' => 'ദൃശ്യരൂപം',
 'skin-preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
 'datedefault' => 'ക്രമീകരണങ്ങൾ വേണ്ട',
@@ -1471,13 +1464,11 @@ $1",
 'prefs-email' => 'ഇമെയിൽ ക്രമീകരണങ്ങൾ',
 'prefs-rendering' => 'ദൃശ്യരൂപം',
 'saveprefs' => 'സേവ് ചെയ്യുക',
-'resetprefs' => 'സേവ് ചെയ്തിട്ടില്ലാത്ത മാറ്റങ്ങൾ പുനഃക്രമീകരിക്കുക',
 'restoreprefs' => 'സ്വതേയുള്ള ക്രമീകരണങ്ങൾ പുനഃസ്ഥാപിക്കുക (എല്ലാ ഭാഗങ്ങളിലേയും)',
 'prefs-editing' => 'തിരുത്തൽ',
 'rows' => 'വരി:',
 'columns' => 'നിര:',
 'searchresultshead' => 'തിരയൂ',
-'resultsperpage' => 'ഒരു താളിലുള്ള ശരാശരി സന്ദർശനം:',
 'stub-threshold' => '<a href="#" class="stub">അപൂർണ്ണമായ കണ്ണിയെന്നു</a> സ്ഥാപിക്കാനുള്ള ത്വരകം (ബൈറ്റുകൾ):',
 'stub-threshold-disabled' => 'നിർജ്ജീവമാക്കപ്പെട്ടിരിക്കുന്നു',
 'recentchangesdays' => 'പുതിയ മാറ്റങ്ങളിൽ കാണിക്കേണ്ട ദിവസങ്ങളുടെ എണ്ണം:',
@@ -1492,7 +1483,6 @@ $1",
 'localtime' => 'പ്രാദേശിക സമയം:',
 'timezoneuseserverdefault' => 'വിക്കിയിൽ സ്വതേയുള്ളത് ഉപയോഗിക്കുക ($1)',
 'timezoneuseoffset' => 'മറ്റുള്ളത് (എന്താണെന്നു നൽകുക)',
-'timezoneoffset' => 'വ്യത്യാസം¹:',
 'servertime' => 'സെർവർ സമയം:',
 'guesstimezone' => 'സമയവ്യത്യാസം ബ്രൗസറിൽ നിന്നും ശേഖരിക്കൂ',
 'timezoneregion-africa' => 'ആഫ്രിക്ക',
@@ -1561,6 +1551,7 @@ $1",
 'prefs-tokenwatchlist' => 'ചീട്ട്',
 'prefs-diffs' => 'വ്യത്യാസങ്ങൾ',
 'prefs-help-prefershttps' => 'താങ്കൾ അടുത്ത പ്രാവശ്യം പ്രവേശിക്കുമ്പോൾ ഇവ ഫലത്തിൽ വരുന്നതാണ്.',
+'prefs-tabs-navigation-hint' => 'സൂചന: ടാബുകളുടെ പട്ടികയിലെ ടാബുകളിലൂടെ നീങ്ങാൻ ഇടത്തും വലത്തും ആരോ കീകൾ ഉപയോഗിക്കാവുന്നതാണ്.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'സാധുതയുള്ളതെന്ന് തോന്നുന്നു',
@@ -1745,16 +1736,16 @@ $1",
 'recentchanges-feed-description' => 'ഈ ഫീഡ് ഉപയോഗിച്ച് വിക്കിയിലെ പുതിയ മാറ്റങ്ങൾ നിരീക്ഷിക്കുക.',
 'recentchanges-label-newpage' => 'ഒരു പുതിയ താൾ സൃഷ്ടിച്ചിരിക്കുന്നു',
 'recentchanges-label-minor' => 'ഇതൊരു ചെറിയ തിരുത്താണ്',
-'recentchanges-label-bot' => 'à´\87à´¤àµ\8aà´°àµ\81 à´¯à´¨àµ\8dà´¤àµ\8dà´°à´\82 à´¨à´\9fà´¤àµ\8dതിയ തിരുത്താണ്',
-'recentchanges-label-unpatrolled' => 'ഇതുവരെ റോന്തു ചുറ്റപ്പെടാത്ത ഒരു തിരുത്താണിത്',
+'recentchanges-label-bot' => 'à´\87à´¤àµ\8d à´¯à´¨àµ\8dà´¤àµ\8dà´°à´\82 à´\9aàµ\86à´¯àµ\8dà´¤ തിരുത്താണ്',
+'recentchanges-label-unpatrolled' => 'ഇതുവരെ റോന്തുചുറ്റപ്പെടാത്ത തിരുത്ത്',
 'recentchanges-label-plusminus' => 'താളിന്റെ വലിപ്പം ഇത്രയും ബൈറ്റുകൾ മാറിയിരിക്കുന്നു',
+'recentchanges-legend-heading' => "'''സൂചന:'''",
 'recentchanges-legend-newpage' => '([[Special:NewPages|പുതിയ താളുകളുടെ പട്ടികയും]] കാണുക)',
-'rcnote' => "കഴിഞ്ഞ {{PLURAL:$2|ദിവസം|'''$2''' ദിവസങ്ങൾക്കുള്ളിൽ}} സംഭവിച്ച, {{PLURAL:$1|'''1''' തിരുത്തൽ|'''$1''' തിരുത്തലുകൾ}} താഴെക്കാണാം. ശേഖരിച്ച സമയം: $4, $5.",
 'rcnotefrom' => '<b>$2</b> മുതലുള്ള മാറ്റങ്ങൾ (<b>$1</b> എണ്ണം വരെ കാണാം).',
 'rclistfrom' => '$1 മുതലുള്ള മാറ്റങ്ങൾ പ്രദർശിപ്പിക്കുക',
 'rcshowhideminor' => 'ചെറുതിരുത്തലുകൾ $1',
 'rcshowhidebots' => 'യന്ത്രങ്ങളെ $1',
-'rcshowhideliu' => 'à´ªàµ\8dà´°à´µàµ\87ശിà´\9aàµ\8dà´\9aിട്ടുള്ളവരെ $1',
+'rcshowhideliu' => 'à´\85à´\82à´\97à´¤àµ\8dവമàµ\86à´\9fàµ\81à´¤àµ\8dà´¤ിട്ടുള്ളവരെ $1',
 'rcshowhideanons' => 'അജ്ഞാത ഉപയോക്താക്കളെ $1',
 'rcshowhidepatr' => 'റോന്തു ചുറ്റിയ മാറ്റങ്ങൾ $1',
 'rcshowhidemine' => 'എന്റെ തിരുത്തലുകൾ $1',
@@ -1766,6 +1757,7 @@ $1",
 'minoreditletter' => '(ചെ.)',
 'newpageletter' => '(പു.)',
 'boteditletter' => '(യ.)',
+'unpatrolledletter' => '(!)',
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|ഒരു ഉപയോക്താവ്|$1 ഉപയോക്താക്കൾ}} ഈ താൾ ശ്രദ്ധിക്കുന്നുണ്ട്]',
 'rc_categories' => 'വർഗ്ഗങ്ങളുടെ പരിധി ("|" ഉപയോഗിച്ച് പിരിക്കുക)',
 'rc_categories_any' => 'ഏതും',
@@ -1872,6 +1864,8 @@ $2 {{PLURAL:$3|തരത്തിലുള്ള പ്രമാണം|തരങ
 'file-exists-duplicate' => 'ഈ പ്രമാണം ഇനി പറയുന്ന {{PLURAL:$1|പ്രമാണത്തിന്റെ|പ്രമാണങ്ങളുടെ}} പകർപ്പാണ്‌:',
 'file-deleted-duplicate' => 'ഈ പ്രമാണത്തിനു സദൃശമായ പ്രമാണം ([[:$1]]) മുമ്പ് മായ്ക്കപ്പെട്ടിട്ടുണ്ട്.
 ആ പ്രമാണത്തിന്റെ മായ്ക്കൽ ചരിത്രം എടുത്തു പരിശോധിച്ച ശേഷം മാത്രം വീണ്ടും അപ്‌‌ലോഡ് ചെയ്യുക.',
+'file-deleted-duplicate-notitle' => 'ഈ പ്രമാണത്തിന് സദൃശമായ ഒന്ന് മുമ്പ് മായ്ക്കപ്പെട്ടിട്ടുണ്ട്, ആ തലക്കെട്ടിന്റെ ഉപയോഗം ഒതുക്കിയിരിക്കുന്നു.
+പുനർ-അപ്‌ലോഡിങ് ചെയ്യുന്നതിനു മുമ്പ് ഒതുക്കപ്പെട്ട പ്രമാണവിവരങ്ങൾ സംശോധനം ചെയ്ത് സാഹചര്യം വിശകലനം ചെയ്യാൻ അനുമതിയുള്ള ആരെയെങ്കിലും സമീപിച്ച് പ്രവൃത്തി ഉറപ്പാക്കുക.',
 'uploadwarning' => 'അപ്‌ലോഡ് മുന്നറിയിപ്പ്',
 'uploadwarning-text' => 'ദയവായി താഴെയുള്ള പ്രമാണ വിവരണങ്ങൾ പുതുക്കി വീണ്ടും ശ്രമിക്കുക.',
 'savefile' => 'പ്രമാണം കാത്ത് സൂക്ഷിക്കുക',
@@ -2156,7 +2150,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'statistics-header-hooks' => 'മറ്റു സ്ഥിതിവിവരക്കണക്കുകൾ',
 'statistics-articles' => 'ലേഖനങ്ങൾ',
 'statistics-pages' => 'താളുകൾ',
-'statistics-pages-desc' => 'à´¸à´\82â\80\8cവാദà´\82 താളുകൾ, തിരിച്ചുവിടലുകൾ തുടങ്ങിയവയടക്കം വിക്കിയിലെ എല്ലാ താളുകളും.',
+'statistics-pages-desc' => 'à´¸à´\82â\80\8cവാദതàµ\8dതാളുകൾ, തിരിച്ചുവിടലുകൾ തുടങ്ങിയവയടക്കം വിക്കിയിലെ എല്ലാ താളുകളും.',
 'statistics-files' => 'അപ്‌ലോഡ് ചെയ്തിട്ടുള്ള പ്രമാണങ്ങൾ',
 'statistics-edits' => '{{SITENAME}} സം‌രംഭത്തിന്റെ തുടക്കം മുതലുള്ള തിരുത്തലുകൾ',
 'statistics-edits-average' => 'ഒരു താളിലെ ശരാശരി തിരുത്തലുകൾ',
@@ -2199,6 +2193,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'ninterwikis' => '{{PLURAL:$1|ഒരു അന്തർവിക്കി|$1 അന്തർവിക്കികൾ}}',
 'nlinks' => '{{PLURAL:$1|ഒരു കണ്ണി|$1 കണ്ണികൾ}}',
 'nmembers' => '{{PLURAL:$1|ഒരു അംഗം|$1 അംഗങ്ങൾ}}',
+'nmemberschanged' => '$1 → {{PLURAL:$2|ഒരു അംഗം|$2 അംഗങ്ങൾ}}',
 'nrevisions' => '{{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}}',
 'nviews' => '{{PLURAL:$1|ഒരു സന്ദർശനം|$1 സന്ദർശനങ്ങൾ}}',
 'nimagelinks' => '{{PLURAL:$1|ഒരു താളിൽ|$1 താളുകളിൽ}} ഉപയോഗിച്ചിരിക്കുന്നു',
@@ -2237,10 +2232,9 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'protectedpages' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന താളുകൾ',
 'protectedpages-indef' => 'അനന്തകാലത്തേയ്ക്ക് സംരക്ഷിക്കപ്പെട്ടവ മാത്രം',
 'protectedpages-cascade' => 'നിർഝരിത സംരക്ഷണങ്ങൾ മാത്രം',
-'protectedpagestext' => 'താഴെ പ്രദർശിപ്പിച്ചിരിക്കുന്ന താളുകൾ തലക്കെട്ട് മാറ്റുന്നതിൽ നിന്നും തിരുത്തൽ വരുത്തുന്നതിൽ നിന്നും സം‌രക്ഷിച്ചിരിക്കുന്നു',
+'protectedpages-noredirect' => 'തിരിച്ചുവിടലുകൾ മറയ്ക്കുക',
 'protectedpagesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു താളുകൾ ഒന്നും തന്നെ സം‌രക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
 'protectedtitles' => 'സംരക്ഷിക്കപ്പെട്ടിരിക്കുന്ന തലക്കെട്ടുകൾ',
-'protectedtitlestext' => 'താഴെക്കാണുന്ന തലക്കെട്ടുകൾ സൃഷ്ടിക്കുന്നത് നിരോധിച്ചിരിക്കുന്നു',
 'protectedtitlesempty' => 'ഈ ചരങ്ങൾ ഉപയോഗിച്ചു തലക്കെട്ടുകൾ ഒന്നും തന്നെ സം‌രക്ഷിക്കപ്പെട്ടിട്ടില്ല.',
 'listusers' => 'ഉപയോക്താക്കളുടെ പട്ടിക',
 'listusers-editsonly' => 'തിരുത്തലുകൾ ചെയ്തിട്ടുള്ള ഉപയോക്താക്കളെ മാത്രം കാണിക്കുക',
@@ -2292,9 +2286,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'allpagesto' => 'ഇതിൽ അവസാനിക്കുന്ന താളുകൾ കാട്ടുക:',
 'allarticles' => 'എല്ലാ താളുകളും',
 'allinnamespace' => 'എല്ലാ താളുകളും ($1 നാമമേഖല)',
-'allnotinnamespace' => 'എല്ലാ താളുകളും ($1 നാമമേഖലയിലല്ലാത്തവ)',
-'allpagesprev' => 'മുമ്പത്തെ',
-'allpagesnext' => 'അടുത്തത്',
 'allpagessubmit' => 'പോകൂ',
 'allpagesprefix' => 'ഇങ്ങനെ തുടങ്ങുന്ന താളുകൾ പ്രദർശിപ്പിക്കുക:',
 'allpagesbadtitle' => 'താളിനു നൽകിയ തലക്കെട്ട് അസാധുവാണ്‌ അല്ലെങ്കിൽ അന്തർഭാഷയ്ക്കുള്ളതോ അന്തർവിക്കിയ്ക്കുള്ളതോ ആയ പൂർവ്വപദം ഉപയോഗിച്ചിരിക്കുന്നു.
@@ -2422,7 +2413,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'unwatchthispage' => 'ശ്രദ്ധിക്കുന്നത് അവസാനിപ്പിക്കുക',
 'notanarticle' => 'ലേഖന താൾ അല്ല',
 'notvisiblerev' => 'മറ്റൊരു ഉപയോക്താവ് സൃഷ്ടിച്ച അവസാനത്തെ നാൾപ്പതിപ്പ് മായ്ച്ചിരിക്കുന്നു',
-'watchlist-details' => 'à´¸à´\82â\80\8cവാദà´\82 താളുകൾ ഉൾപ്പെടുത്താതെ {{PLURAL:$1|ഒരു താൾ|$1 താളുകൾ}} താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിലുണ്ട്.',
+'watchlist-details' => 'à´¸à´\82â\80\8cവാദതàµ\8dതാളുകൾ ഉൾപ്പെടുത്താതെ {{PLURAL:$1|ഒരു താൾ|$1 താളുകൾ}} താങ്കൾ ശ്രദ്ധിക്കുന്നവയുടെ പട്ടികയിലുണ്ട്.',
 'wlheader-enotif' => 'ഇമെയിൽ അറിയിപ്പുകൾ സജ്ജമാക്കിയിരിക്കുന്നു.',
 'wlheader-showupdated' => "താങ്കളുടെ അവസാന സന്ദർശനത്തിനു ശേഷം മാറ്റം വന്ന താളുകൾ  '''കടുപ്പിച്ച്''' കാണിച്ചിരിക്കുന്നു",
 'watchmethod-recent' => 'ശ്രദ്ധിക്കുന്ന താളുകൾക്കുവേണ്ടി പുതിയ മാറ്റങ്ങൾ പരിശോധിക്കുന്നു',
@@ -2442,7 +2433,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization കാണുക.',
 'enotif_reset' => 'എല്ലാ താളുകളും സന്ദർശിച്ചതായി രേഖപ്പെടുത്തുക',
 'enotif_impersonal_salutation' => '{{SITENAME}} ഉപയോക്താവ്',
 'enotif_subject_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു',
-'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തിl $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}} മാറ്റം വരുത്തിയിരിക്കുന്നു',
@@ -2517,6 +2508,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => 'മായ്ക്കലിന്റെ കാരണം തിരുത്തുക',
 'delete-toobig' => 'ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സം‌രംഭത്തിന്റെ നിലനില്പ്പിനെ തന്നെ ബാധിക്കുമെന്നതിനാൽ ഈ താൾ മായ്ക്കുന്നതിനുള്ള അവകാശം പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.',
 'delete-warning-toobig' => 'ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. അതായത്, ഇതിനു് $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സം‌രംഭത്തിന്റെ ഡാറ്റാബേസ് ഓപ്പറേഷനെ ബാധിച്ചേക്കാം. അതിനാൽ വളരെ ശ്രദ്ധാപൂർവ്വം തുടർനടപടികളിലേക്കു നീങ്ങുക.',
+'deleting-backlinks-warning' => "'''മുന്നറിയിപ്പ്:''' മറ്റു താളുകളിൽ നിന്നും താളിലേയ്ക്കുള്ള കണ്ണികൾ താങ്കൾ മായ്ക്കാൻ പോവുകയാണ്.",
 
 # Rollback
 'rollback' => 'തിരുത്തലുകൾ റോൾബാക്ക് ചെയ്യുക',
@@ -2525,14 +2517,14 @@ $UNWATCHURL
 'rollbacklinkcount' => '{{PLURAL:$1|ഒരു തിരുത്ത്|$1 തിരുത്തുകൾ}} മുൻപ്രാപനം ചെയ്യുക',
 'rollbacklinkcount-morethan' => '{{PLURAL:$1|ഒന്നിലധികം തിരുത്തുകൾ|$1 എണ്ണത്തിലധികം തിരുത്തുകൾ}} മുൻപ്രാപനം ചെയ്യുക',
 'rollbackfailed' => 'റോൾബാക്ക് പരാജയപ്പെട്ടു',
-'cantrollback' => 'തിരàµ\81à´¤àµ\8dതൽ തിരസ്കരിക്കുവാൻ സാധിക്കുകയില്ല. ഒരു ഉപയോക്താവ് മാത്രമാണ് ഈ താളിൽ സം‌ഭാവന ചെയ്തിരിക്കുന്നത്.',
+'cantrollback' => 'തിരàµ\81à´¤àµ\8dà´¤àµ\8d തിരസ്കരിക്കുവാൻ സാധിക്കുകയില്ല. ഒരു ഉപയോക്താവ് മാത്രമാണ് ഈ താളിൽ സം‌ഭാവന ചെയ്തിരിക്കുന്നത്.',
 'alreadyrolled' => '[[:$1]] എന്ന താളിൽ [[User:$2|$2]] ([[User talk:$2|സംവാദം]]{{int:pipe-separator}}[[Special:Contributions/$2|{{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' => 'മറയ്ക്കപ്പെട്ട ഉപയോക്താവ് നടത്തിയ തിരുത്തലുകൾ {{GENDER:$1|[[User:$1|$1]]}} സൃഷ്ടിച്ച അവസാന പതിപ്പിലേയ്ക്ക് മുൻപ്രാപനം ചെയ്തിരിക്കുന്നു',
-'rollback-success' => '$1 à´\9aàµ\86à´¯àµ\8dà´¤ à´¤à´¿à´°àµ\81à´¤àµ\8dതൽ തിരസ്ക്കരിച്ചിരിക്കുന്നു; $2 ചെയ്ത തൊട്ടു മുൻപത്തെ പതിപ്പിലേക്ക് സേവ് ചെയ്യുന്നു.',
+'rollback-success' => '$1 à´\9aàµ\86à´¯àµ\8dà´¤ à´¤à´¿à´°àµ\81à´¤àµ\8dà´¤àµ\8d തിരസ്ക്കരിച്ചിരിക്കുന്നു; $2 ചെയ്ത തൊട്ടു മുൻപത്തെ പതിപ്പിലേക്ക് സേവ് ചെയ്യുന്നു.',
 
 # Edit tokens
 'sessionfailure-title' => 'സെഷൻ പരാജയപ്പെട്ടിരിക്കുന്നു',
@@ -2632,7 +2624,6 @@ $UNWATCHURL
 'undeletebtn' => 'പുനഃസ്ഥാപിക്കുക',
 'undeletelink' => 'കാണുക/പുനഃസ്ഥാപിക്കുക',
 'undeleteviewlink' => 'കാണുക',
-'undeletereset' => 'പുനഃക്രമീകരിക്കുക',
 'undeleteinvert' => 'വിപരീതം തിരഞ്ഞെടുക്കുക',
 'undeletecomment' => 'കാരണം:',
 'undeletedrevisions' => '{{PLURAL:$1|ഒരു പതിപ്പ്|$1 പതിപ്പുകൾ}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു',
@@ -2697,7 +2688,7 @@ $1',
 'sp-contributions-submit' => 'തിരയൂ',
 
 # What links here
-'whatlinkshere' => 'à´\85à´¨àµ\81ബനàµ\8dà´§കണ്ണികൾ',
+'whatlinkshere' => 'à´\88 à´¤à´¾à´³à´¿à´²àµ\87à´\95àµ\8dà´\95àµ\81à´³àµ\8dà´³ കണ്ണികൾ',
 'whatlinkshere-title' => '"$1" എന്ന താളിലേക്കുള്ള കണ്ണികൾ',
 'whatlinkshere-page' => 'താൾ:',
 'linkshere' => "താഴെക്കൊടുത്തിരിക്കുന്ന താളുകളിൽ നിന്നും '''[[:$1]]''' എന്ന താളിലേക്ക് കണ്ണികളുണ്ട്:",
@@ -2720,7 +2711,6 @@ $1',
 'block' => 'ഉപയോക്താവിനെ തടയുക',
 'unblock' => 'ഉപയോക്താവിനുള്ള തടയൽ നീക്കുക',
 'blockip' => 'ഉപയോക്താവിനെ തടയുക',
-'blockip-title' => 'ഉപയോക്താവിനെ തടയുക',
 'blockip-legend' => 'ഉപയോക്താവിനെ തടയുക',
 'blockiptext' => 'ഏതെങ്കിലും ഐ.പി. വിലാസത്തേയോ ഉപയോക്താവിനേയോ തടയുവാൻ താഴെയുള്ള ഫോം ഉപയോഗിക്കുക.
 [[{{MediaWiki:Policy-url}}|വിക്കിയുടെ നയം]] അനുസരിച്ച് നശീകരണപ്രവർത്തനം തടയാൻ മാത്രമേ ഇതു ചെയ്യാവൂ.
@@ -2728,7 +2718,6 @@ $1',
 'ipadressorusername' => 'ഐ.പി. വിലാസം അല്ലെങ്കിൽ ഉപയോക്തൃനാമം:',
 'ipbexpiry' => 'കാലാവധി:',
 'ipbreason' => 'കാരണം:',
-'ipbreasonotherlist' => 'മറ്റു കാരണം',
 'ipbreason-dropdown' => '*തടയലിനു യോഗ്യമായ കാരണങ്ങൾ
 ** തെറ്റായ വിവരങ്ങൾ ചേർക്കുക
 ** താളിൽ നിന്നു വിവരങ്ങൾ മായ്ക്കുക
@@ -2744,8 +2733,6 @@ $1',
 'ipbsubmit' => 'ഈ ഉപയോക്താവിനെ തടയുക',
 'ipbother' => 'മറ്റ് കാലാവധി:',
 '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',
-'ipbotheroption' => 'മറ്റുള്ളവ',
-'ipbotherreason' => 'മറ്റ്/കൂടുതൽ കാരണം:',
 'ipbhidename' => 'തിരുത്തലുകൾ, പട്ടികകൾ എന്നിവയിൽ നിന്നും ഉപയോക്തൃനാമം മറയ്ക്കുക',
 'ipbwatchuser' => 'ഈ ഉപയോക്താവിന്റെ താളും സംവാദം താളും ശ്രദ്ധിക്കുക',
 'ipb-disableusertalk' => 'തടയപ്പെട്ടിരിക്കുമ്പോൾ സ്വന്തം സംവാദം താൾ തിരുത്തുന്നതിൽ നിന്നും ഈ ഉപയോക്താവിനെ തടയുക',
@@ -2757,6 +2744,7 @@ $1',
 തടയൽ പുനഃപരിശോധിക്കാൻ [[Special:BlockList|തടയൽ പട്ടിക]] കാണുക.',
 'ipb-blockingself' => 'താങ്കൾ താങ്കളെ തന്നെ തടയാൻ പോകുകയാണ്! അത് ചെയ്യണം എന്ന് താങ്കൾക്കുറപ്പാണോ?',
 'ipb-confirmhideuser' => 'താങ്കൾ "ഉപയോക്താവിനെ മറച്ചുകൊണ്ട്" ഒരു തടയൽ ചെയ്യാൻ പോവുകയാണ്. ഇത് എല്ലാ പട്ടികകളിൽ നിന്നും രേഖകളിൽ നിന്നും ഉപയോക്താവിന്റെ പേര് മറച്ച് വെയ്ക്കും. ഇപ്രകാരം വേണമെന്ന് തീർച്ചയാണോ?',
+'ipb-confirmaction' => 'ഇത് ചെയ്തേ മതിയാവൂ എന്നുണ്ടെങ്കിൽ താഴെയുള്ള "{{int:ipb-confirm}}" കാണുക.',
 'ipb-edit-dropdown' => 'തടഞ്ഞതിന്റെ കാരണം തിരുത്തുക',
 'ipb-unblock-addr' => '$1 അംഗത്വത്തിനുള്ള തടയൽ നീക്കുക',
 'ipb-unblock' => 'ഒരു ഐ.പി. വിലാസത്തിനോ ഉപയോക്താവിനോ ഉള്ള തടയൽ നീക്കംചെയ്യുക',
@@ -2833,7 +2821,6 @@ $1',
 'sorbsreason' => '{{SITENAME}} ഉപയോഗിക്കുന്ന DNSBL ൽ താങ്കളുടെ ഐ.പി. വിലാസം ഒരു ഓപ്പൺ പ്രോക്സിയായാണു രേഖപ്പെടുത്തിട്ടുള്ളത്.',
 'sorbs_create_account_reason' => '{{SITENAME}} ഉപയോഗിക്കുന്ന DNSBL ൽ താങ്കളുടെ ഐ.പി. വിലാസം ഒരു ഓപ്പൺ പ്രോക്സിയായാണു രേഖപ്പെടുത്തിട്ടുള്ളത്. താങ്കൾക്ക് അംഗത്വമെടുക്കാൻ സാദ്ധ്യമല്ല.',
 'xffblockreason' => 'എക്സ്-ഫോർവേഡഡ്-ഫോർ ഹെഡറിലെ ഒരു ഐ.പി. വിലാസം, താങ്കളുടേതോ താങ്കൾ ഉപയോഗിക്കുന്ന പ്രോക്സി സെർവറിലേതോ ആകാം, തടയപ്പെട്ടിരിക്കുന്നതാണ്. തടയലിന്റെ കാരണം: $1',
-'cant-block-while-blocked' => 'താങ്കൾ തടയപ്പെട്ടിരിക്കുമ്പോൾ മറ്റുപയോക്താക്കളെ തടയാൻ താങ്കൾക്ക് സാധിക്കില്ല.',
 'cant-see-hidden-user' => 'താങ്കൾ തടയാൻ ശ്രമിക്കുന്ന ഉപയോക്താവ് മുമ്പേ തടയപ്പെടുകയും മറയ്ക്കപ്പെടുകയും ചെയ്യപ്പെട്ടതാണ്. താങ്കൾക്ക് ഉപയോക്താവിനെ മറയ്ക്കാനുള്ള അവകാശം ഇല്ലെങ്കിൽ, ഉപയോക്താവിനെതിരെ ഉള്ള തടയൽ കാണാനോ തിരുത്താനോ കഴിയുന്നതല്ല.',
 'ipbblocked' => 'മറ്റുള്ളവരെ തടയാനോ അവരുടെ തടയൽ നീക്കാനോ താങ്കൾക്ക് കഴിയില്ല. കാരണം താങ്കൾ തന്നെ തടയപ്പെട്ടിരിക്കുകയാണ്',
 'ipbnounblockself' => 'താങ്കൾക്ക് സ്വന്തം തടയൽ നീക്കാൻ അനുമതിയില്ല',
@@ -2892,14 +2879,13 @@ $1',
 '''മുന്നറിയിപ്പ്!:'''
 ഈ പ്രവൃത്തി ഒരു നല്ലതാളിൽ അപ്രതീക്ഷിതവും, ഉഗ്രവുമായ ഫലങ്ങൾ സൃഷ്ടിച്ചേക്കാം.
 മുന്നോട്ടു പോകുന്നതിനു മുമ്പ് താങ്കൾ ചെയ്യുന്നതെന്താണെന്ന് വ്യക്തമായി മനസ്സിലാക്കുക.",
-'movepagetalktext' => "'''ബനàµ\8dധപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9f à´¸à´\82â\80\8cവാദà´\82 à´¤à´¾à´³àµ\81à´\82 സ്വയം മാറ്റപ്പെടാതിരിക്കാനുള്ള കാരണങ്ങൾ'''
-*à´\85à´¤àµ\87 à´ªàµ\87രിൽ à´¤à´¨àµ\8dà´¨àµ\86 à´¶àµ\82à´¨àµ\8dയമലàµ\8dലാതàµ\8dà´¤ à´\92à´°àµ\81 à´¸à´\82â\80\8cവാദà´\82 താൾ നിലവിലുണ്ടെങ്കിൽ
+'movepagetalktext' => "'''ബനàµ\8dധപàµ\8dà´ªàµ\86à´\9fàµ\8dà´\9f à´¸à´\82â\80\8cവാദതàµ\8dതാൾ സ്വയം മാറ്റപ്പെടാതിരിക്കാനുള്ള കാരണങ്ങൾ'''
+*à´\85à´¤àµ\87 à´ªàµ\87രിൽ à´¤à´¨àµ\8dà´¨àµ\86 à´¶àµ\82à´¨àµ\8dയമലàµ\8dലാതàµ\8dà´¤ à´\92à´°àµ\81 à´¸à´\82â\80\8cവാദതàµ\8dതാൾ നിലവിലുണ്ടെങ്കിൽ
 *താങ്കൾ താഴെയുള്ള ചെൿബോക്സ് ഉപയോഗിച്ചിട്ടില്ലെങ്കിൽ
 
-à´\85à´¤àµ\8dതരà´\82 à´¸à´¨àµ\8dദർഭà´\99àµ\8dà´\99ളിൽ à´¸à´\82â\80\8cവാദà´\82 താളുകൾ താങ്കൾ സ്വയം കൂട്ടിച്ചേർക്കേണ്ടതാണ്.",
+à´\85à´¤àµ\8dതരà´\82 à´¸à´¨àµ\8dദർഭà´\99àµ\8dà´\99ളിൽ à´¸à´\82â\80\8cവാദതàµ\8dതാളുകൾ താങ്കൾ സ്വയം കൂട്ടിച്ചേർക്കേണ്ടതാണ്.",
 'movearticle' => 'മാറ്റേണ്ട താൾ',
 'moveuserpage-warning' => "'''മുന്നറിയിപ്പ്:''' ഉപയോക്താവിനുള്ള താളാണ് താങ്കൾ മാറ്റാൻ പോകുന്നത്. താൾ മാത്രമേ മാറുകയുള്ളു എന്നും ഉപയോക്താവിന്റെ പേര് ''മാറുകയില്ലെന്നും'' ദയവായി ഓർക്കുക.",
-'movenologin' => 'ലോഗിൻ ചെയ്തിട്ടില്ല',
 'movenologintext' => 'തലക്കെട്ടു മാറ്റാനുള്ള അനുമതി കൈവരിക്കാൻ താങ്കൾ ഒരു രജിസ്റ്റേർഡ് ഉപയോക്താവായിരിക്കുകയും [[Special:UserLogin|ലോഗിൻ ചെയ്തിരിക്കുകയും]] ചെയ്യേണ്ടത് അത്യന്താപേക്ഷിതമാണ്‌.',
 'movenotallowed' => 'താളുകളുടെ തലക്കെട്ടു മാറ്റുവാനുള്ള അനുവാദം താങ്കൾക്കില്ല.',
 'movenotallowedfile' => 'പ്രമാണങ്ങൾ മാറ്റാനുള്ള അനുമതി താങ്കൾക്കില്ല.',
@@ -2914,9 +2900,7 @@ $1',
 'movepage-moved-noredirect' => 'തിരിച്ചുവിടലിന്റെ സൃഷ്ടി ഒതുക്കിയിരിക്കുന്നു.',
 'articleexists' => 'ഈ പേരിൽ മറ്റൊരു താൾ ഉള്ളതായി കാണുന്നു, അല്ലെങ്കിൽ താങ്കൾ തിരഞ്ഞെടുത്ത തലക്കെട്ട് സ്വീകാര്യമല്ല. ദയവായി മറ്റൊരു തലക്കെട്ട് തിരഞ്ഞെടുക്കുക.',
 'cantmove-titleprotected' => 'താൾ സൃഷ്ടിക്കുന്നതിനു നിരോധനം ഏർപ്പെടുത്തിയിട്ടുള്ള ഒരു തലക്കെട്ടു താങ്കൾ തിരഞ്ഞെടുത്ത കാരണം താങ്കൾക്ക് താൾ ആ സ്ഥാനത്തേക്കു മാറ്റുവാൻ സാധിക്കില്ല.',
-'talkexists' => "'''താളിന്റെ തലക്കെട്ട് വിജയകരമായി മാറ്റിയിരിക്കുന്നു. പക്ഷെ താളിന്റെ സംവാദത്തിനു അതേ പേരിൽ മറ്റൊരു സംവാദംതാൾ നിലവിലുള്ളതിനാൽ മാറ്റം സാധിച്ചില്ല. അതിനാൽ സംവാദംതാൾ താങ്കൾ തന്നെ സംയോജിപ്പിക്കുക.'''",
-'movedto' => 'ഇവിടേക്ക് മാറ്റിയിരിക്കുന്നു',
-'movetalk' => 'ബന്ധപ്പെട്ട സം‌വാദം താളും കൂടെ നീക്കുക',
+'movetalk' => 'ബന്ധപ്പെട്ട സം‌വാദത്താളും കൂടെ നീക്കുക',
 'move-subpages' => 'ഉപതാളുകൾ  മാറ്റുക ( $1 വരെ)',
 'move-talk-subpages' => 'സംവാദം താളിന്റെ ഉപതാളുകൾ മാറ്റുക ($1 എണ്ണം)',
 'movepage-page-exists' => '$1 എന്ന താൾ നിലനിൽക്കുന്നുണ്ട്, അതിനു മുകളിൽ സൃഷ്ടിക്കാൻ സ്വതേ കഴിയില്ല.',
@@ -3756,15 +3740,10 @@ $1',
 'exif-urgency-high' => 'ഉന്നതം ($1)',
 'exif-urgency-other' => 'ഉപയോക്തൃ-നിർവചിത മുൻഗണന ($1)',
 
-# External editor support
-'edit-externally' => 'ഈ പ്രമാണം ഒരു ബാഹ്യ ആപ്ലിക്കേഷൻ ഉപയോഗിച്ച് തിരുത്തുക',
-'edit-externally-help' => '(കൂടുതൽ വിവരത്തിനു [https://www.mediawiki.org/wiki/Manual:External_editors സജ്ജമാക്കൽ നിർദ്ദേശങ്ങൾ] കാണുക)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'എല്ലാം',
 'namespacesall' => 'എല്ലാം',
 'monthsall' => 'എല്ലാം',
-'limitall' => 'എല്ലാം',
 
 # Email address confirmation
 'confirmemail' => 'ഇമെയിൽ വിലാസം സ്ഥിരീകരിക്കൽ',
@@ -3782,7 +3761,6 @@ $1',
 'confirmemail_needlogin' => 'ഇ-മെയിൽ വിലാസം സ്ഥിരീകരിക്കാൻ താങ്കൾ $1 ചെയ്തിരിക്കണം.',
 'confirmemail_success' => 'താങ്കളുടെ ഇ-മെയിൽ വിലാസം സ്ഥിരീകരിക്കപ്പെട്ടിരിക്കുന്നു. താങ്കൾക്ക് ഇനി [[Special:UserLogin|ലോഗിൻ ചെയ്ത്]] വിക്കി ആസ്വദിക്കാം.',
 'confirmemail_loggedin' => 'താങ്കളുടെ ഇ-മെയിൽ വിലാസം സ്ഥിരീകരിക്കപ്പെട്ടിരിക്കുന്നു.',
-'confirmemail_error' => 'താങ്കളുടെ സ്ഥിരീകരണം സൂക്ഷിച്ചുവയ്ക്കാനുള്ള ശ്രമത്തിനിടയ്ക്ക് എന്തോ പിഴവ് സംഭവിച്ചു.',
 'confirmemail_subject' => '{{SITENAME}} ഇ-മെയിൽ വിലാസ സ്ഥിരീകരണം',
 'confirmemail_body' => '$1 എന്ന ഐ.പി. വിലാസത്തിൽ നിന്നു (ഒരു പക്ഷെ താങ്കളായിരിക്കാം), "$2" എന്ന പേരോടു കൂടിയും ഈ ഇ-മെയിൽ വിലാസത്തോടു കൂടിയും {{SITENAME}} സം‌രംഭത്തിൽ ഒരു അംഗത്വം സൃഷ്ടിച്ചിരിക്കുന്നു.
 
@@ -3857,6 +3835,11 @@ $5
 'imgmultigo' => 'പോകൂ!',
 'imgmultigoto' => '$1 താളിലേക്ക് പോകുക',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(സ്വതേ വേണ്ട ഭാഷ)',
+'img-lang-info' => 'ഈ ചിത്രം ഈ ഭാഷയിൽ കാണിക്കുക: $1. $2',
+'img-lang-go' => 'പോകൂ',
+
 # Table pager
 'ascending_abbrev' => 'ആരോഹണം',
 'descending_abbrev' => 'അവരോഹണം',
@@ -3900,7 +3883,7 @@ $5
 'lag-warn-high' => 'ഡേറ്റാബേസ് സെർവറിന്റെ കൂടിയ താമസം മൂലം, {{PLURAL:$1|ഒരു സെക്കന്റിൽ|$1 സെക്കന്റുകളിൽ}} നടന്ന മാറ്റങ്ങൾ പട്ടികയിൽ കാണണമെന്നില്ല.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'താà´\99àµ\8dà´\95ൾ à´¸à´\82â\80\8cവാദà´\82 താളുകൾ ഒഴിച്ച് {{PLURAL:$1|ഒരു താൾ|$1 താളുകൾ}} ശ്രദ്ധിക്കുന്നുണ്ട്.',
+'watchlistedit-numitems' => 'താà´\99àµ\8dà´\95ൾ à´¸à´\82â\80\8cവാദതàµ\8dതാളുകൾ ഒഴിച്ച് {{PLURAL:$1|ഒരു താൾ|$1 താളുകൾ}} ശ്രദ്ധിക്കുന്നുണ്ട്.',
 'watchlistedit-noitems' => 'താങ്കൾ നിലവിൽ ഒരു താളും ശ്രദ്ധിക്കുന്നില്ല.',
 'watchlistedit-normal-title' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക തിരുത്തുക',
 'watchlistedit-normal-legend' => 'ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ നിന്നും ഒഴിവാക്കുക',
@@ -3946,7 +3929,17 @@ $5
 'version-hook-name' => 'കൊളുത്തിന്റെ പേര്',
 'version-hook-subscribedby' => 'വരിക്കാരനായത്',
 'version-version' => '(പതിപ്പ് $1)',
-'version-license' => 'അനുമതി',
+'version-license' => 'മീഡിയവിക്കി ഉപയോഗാനുമതി',
+'version-ext-license' => 'അനുമതി',
+'version-ext-colheader-name' => 'അനുബന്ധം',
+'version-ext-colheader-version' => 'പതിപ്പ്',
+'version-ext-colheader-license' => 'ഉപയോഗാനുമതി',
+'version-ext-colheader-description' => 'വിവരണം',
+'version-ext-colheader-credits' => 'രചയിതാക്കൾ',
+'version-license-title' => '$1 ഉപയോഗാനുമതി',
+'version-license-not-found' => 'ഈ അനുബന്ധത്തോടൊപ്പം ഉപയോഗാനുമതി വിവരങ്ങൾ കണ്ടെത്താനായില്ല.',
+'version-credits-title' => '$1 കടപ്പാട്',
+'version-credits-not-found' => 'ഈ അനുബന്ധത്തോടൊപ്പം കടപ്പാട് വിവരങ്ങൾ കണ്ടെത്താനായില്ല.',
 'version-poweredby-credits' => "ഈ വിക്കി പ്രവർത്തിക്കാൻ '''[https://www.mediawiki.org/ മീഡിയവിക്കി]''' ഉപയോഗിക്കുന്നു. പകർപ്പവകാശം © 2001-$1 $2.",
 'version-poweredby-others' => 'മറ്റുള്ളവർ',
 'version-poweredby-translators' => 'പരിഭാഷാവിക്കിയിലെ പരിഭാഷകർ',
@@ -3966,13 +3959,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath സ്ക്രിപ്റ്റ് പഥം]',
 
 # Special:Redirect
-'redirect' => 'പ്രമാണത്താൽ, ഉപയോക്താവിനാൽ അഥവാ നാൾപ്പതിപ്പ് ഐ.ഡി. ചെയ്യുന്ന തിരിച്ചുവിടൽ',
+'redirect' => 'പ്രമാണത്താൽ, ഉപയോക്താവിനാൽ, താളിനാൽ അഥവാ നാൾപ്പതിപ്പ് ഐ.ഡി.യാൽ ചെയ്യുന്ന തിരിച്ചുവിടൽ',
 'redirect-legend' => 'ഒരു പ്രമാണത്തിലോട്ടോ താളിലോട്ടോ ഉള്ള തിരിച്ചുവിടൽ',
-'redirect-summary' => 'ഈ പ്രത്യേക താൾ ഒരു പ്രമാണത്തിലേയ്ക്കോ (പ്രമാണത്തിന്റെ പേര് തന്നിട്ടുണ്ട്), ഒരു താളിലേയ്ക്കോ (നാൾപ്പതിപ്പിന്റെ ഐഡി തന്നിട്ടുണ്ട്), അല്ലെങ്കിൽ ഒരു ഉപയോക്തൃതാളിലേയ്ക്കോ (ഉപയോക്താവിന്റെ സംഖ്യാ ഐ.ഡി. തന്നിട്ടുണ്ട്) തിരിച്ചുവിടുന്നു. ഉപയോഗം Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], അല്ലെങ്കിൽ [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'ഈ പ്രത്യേക താൾ ഒരു പ്രമാണത്തിലേയ്ക്കോ (പ്രമാണത്തിന്റെ പേര് തന്നിട്ടുണ്ട്), ഒരു താളിലേയ്ക്കോ (നാൾപ്പതിപ്പിന്റെ ഐ.ഡി. അല്ലെങ്കിൽ താൾ തന്നിട്ടുണ്ട്), അല്ലെങ്കിൽ ഒരു ഉപയോക്തൃതാളിലേയ്ക്കോ (ഉപയോക്താവിന്റെ സംഖ്യാ ഐ.ഡി. തന്നിട്ടുണ്ട്) തിരിച്ചുവിടുന്നു. ഉപയോഗം: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],  [[{{#Special:Redirect}}/revision/328429]], അല്ലെങ്കിൽ [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'പോകൂ',
 'redirect-lookup' => 'തേടുക:',
 'redirect-value' => 'വില:',
 'redirect-user' => 'ഉപയോക്തൃ ഐ.ഡി.',
+'redirect-page' => 'താളിന്റെ ഐ.ഡി.',
 'redirect-revision' => 'താളിന്റെ നാൾപ്പതിപ്പ്',
 'redirect-file' => 'പ്രമാണത്തിന്റെ പേര്',
 'redirect-not-exists' => 'വില കണ്ടെത്താൻ കഴിഞ്ഞില്ല',
@@ -4039,7 +4033,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'താളുകൾ താരതമ്യപ്പെടുത്തുക',
-'compare-selector' => 'താളിന്റെ നാൾപ്പതിപ്പുകൾ താരതമ്യപ്പെടുത്തുക',
 'compare-page1' => 'താൾ 1',
 'compare-page2' => 'താൾ 2',
 'compare-rev1' => 'നാൾപ്പതിപ്പ് 1',
@@ -4167,6 +4160,7 @@ $5
 'api-error-overwrite' => 'നിലവിലുള്ള പ്രമാണത്തിന്റെ മുകളിൽ സ്ഥാപിക്കൽ അനുവദിച്ചിട്ടില്ല.',
 'api-error-stashfailed' => 'ആന്തരിക പിഴവ്: പ്രമാണം താത്കാലികമായി സംഭരിക്കുന്നതിൽ സെർവർ പരാജയപ്പെട്ടു.',
 'api-error-publishfailed' => 'ആന്തരിക പിഴവ്: താത്കാലിക പ്രമാണം പ്രസിദ്ധീകരിക്കുന്നതിൽ സെർവർ പരാജയപ്പെട്ടു.',
+'api-error-stasherror' => 'പ്രമാണം സ്റ്റാഷിലേയ്ക്ക് അപ്‌ലോഡ് ചെയ്യുന്നതിനിടെ പിഴവുണ്ടായി.',
 'api-error-timeout' => 'പ്രതീക്ഷിക്കപ്പെട്ട കാലാവധിക്കുള്ളിൽ സെർവർ പ്രതികരിച്ചില്ല.',
 'api-error-unclassified' => 'അപരിചിതമായ പിഴവ് സംഭവിച്ചിരിക്കുന്നു',
 'api-error-unknown-code' => 'അപരിചിതമായ പിഴവ്: "$1"',
@@ -4215,10 +4209,12 @@ $5
 'expand_templates_input' => 'ഇൻപുട്ട് ടെക്സ്റ്റ്:',
 'expand_templates_output' => 'ഫലം',
 'expand_templates_xml_output' => 'എക്സ്.എം.എൽ. ഔട്ട്പുട്ട്',
+'expand_templates_html_output' => 'അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. ഔട്ട്പുട്ട്',
 'expand_templates_ok' => 'ശരി',
 'expand_templates_remove_comments' => 'അഭിപ്രായങ്ങൾ ഒഴിവാക്കുക',
 'expand_templates_remove_nowiki' => 'ഫലങ്ങളിലെ <nowiki> റ്റാഗുകൾ ഒതുക്കുക',
 'expand_templates_generate_xml' => 'എക്സ്.എം.എൽ. പാഴ്‌സർ ട്രീ പ്രദർശിപ്പിക്കുക',
+'expand_templates_generate_rawhtml' => 'അസംസ്കൃത എച്ച്.റ്റി.എം.എൽ. പ്രദർശിപ്പിക്കുക',
 'expand_templates_preview' => 'എങ്ങനെയുണ്ടെന്നു കാണുക',
 
 );
index 5ec243b..53384e8 100644 (file)
@@ -11,7 +11,9 @@
  * @author E.shijir
  * @author Kaganer
  * @author Meno25
+ * @author MongolWiki
  * @author Wisdom
+ * @author Zorigt
  * @author לערי ריינהארט
  */
 
@@ -64,7 +66,6 @@ $messages = array(
 'tog-minordefault' => 'Бүх засваруудаа бага зэргийн гэж автоматаар тэмдэглэх',
 'tog-previewontop' => 'Засварлах талбарын өмнө урьдчилж харсан байдлыг үзүүлэх',
 'tog-previewonfirst' => 'Эхний засварын үед урьдчилж харсан байдлыг үзүүлэх',
-'tog-nocache' => 'Вэб хөтөчийн хуудасны кешингийг болиулах',
 'tog-enotifwatchlistpages' => 'Миний хянах жагсаалт дахь хуудас өөрчлөгдсөн бол и-мэйл явуулах',
 'tog-enotifusertalkpages' => 'Миний хэлэлцүүлгийн хуудас өөрчлөгдөхөд и-мэйл явуулах',
 'tog-enotifminoredits' => 'Хуудасны өнгөц өөрчлөлтийг мөн и-мейлээр явуул.',
@@ -147,18 +148,30 @@ $messages = array(
 'oct' => '10-р сар',
 'nov' => '11-р сар',
 'dec' => '12-р сар',
+'january-date' => 'Нэгдүгээр сарын $1',
+'february-date' => 'Хоёрдугаар сарын $1',
+'march-date' => 'Гуравдугаар сарын $1',
+'april-date' => 'Дөрөвдүгээр сарын $1',
+'may-date' => 'Тавдугаар сарын $1',
+'june-date' => 'Зургаадугаар сарын $1',
+'july-date' => 'Долоодугаар сарын $1',
+'august-date' => 'Наймдугаар сарын $1',
+'september-date' => 'Есдүгээр сарын $1',
+'october-date' => 'Аравдугаар сарын $1',
+'november-date' => 'Арван нэгдүгээр сарын $1',
+'december-date' => 'Арван хоёрдугаар сарын $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Ангилал|Ангиллууд}}',
-'category_header' => '"$1" Ð°Ð½Ð³Ð¸Ð»Ð°Ð» Ð´Ð°Ñ\85Ñ\8c Ñ\85Ñ\83Ñ\83дÑ\81Ñ\83Ñ\83д',
-'subcategories' => 'Ð\94Ñ\8dд Ð°Ð½Ð³Ð¸Ð»Ð»Ñ\83Ñ\83д',
-'category-media-header' => '"$1" Ð°Ð½Ð³Ð¸Ð»Ð°Ð» Ð´Ð°Ñ\85Ñ\8c Ð¼ÐµÐ´Ð¸Ð° Ñ\84айлÑ\83Ñ\83д',
+'pagecategories' => '{{PLURAL:$1|Анги|Ангилал}}',
+'category_header' => '"$1" Ð°Ð½Ð³Ð¸Ð¹Ð½ Ð±Ò¯Ñ\80Ñ\8dлдÑ\8dÑ\85үүн',
+'subcategories' => 'Ð\90нгийн Ð±Ò¯Ð»Ñ\8dг',
+'category-media-header' => '"$1" Ð°Ð½Ð³Ð¸Ð¹Ð½ Ñ\84айл',
 'category-empty' => "''Одоогийн байдлаар энэ ангилалд хуудас, медиа файл байхгүй байна.''",
 'hidden-categories' => '{{PLURAL:$1|Нуугдсан ангилал|Нуугдсан ангиллууд}}',
 'hidden-category-category' => 'Нуугдсан ангиллууд',
-'category-subcat-count' => '{{PLURAL:$2|Энэ ангилалд дараах дэд ангилал л байна.|Энэ ангилалд нийт $2-с $1 дэд ангилал байна.}}',
+'category-subcat-count' => '{{PLURAL:$2|Энэ ангилалд дараах дэд ангилал л байна.|Энэ анги дотроо $2 анги, бүлэгтэй. Үүнээс $1 доор харагдаж байна.}}',
 'category-subcat-count-limited' => 'Энэ ангилалд {{PLURAL:$1| дэд ангилал|$1-н дэд ангилалууд}} байна.',
-'category-article-count' => '{{PLURAL:$2|Энэ ангилалд дараах хуудас л байна.|Энэ ангилалд нийт $2-с дараах $1 хуудас байна.}}',
+'category-article-count' => '{{PLURAL:$2|Энд нэг хуудас байна.|Энд $2 хуудас байна. Үүнээс $1 доор харагдаж байна.}}',
 'category-article-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|хуудас|$1 хуудаснууд}} байна.',
 'category-file-count' => '{{PLURAL:$2|Энэ ангилалд дараах файл л байна.|Энэ ангилалд нийт $2-с дараах $1 файл байна.}}',
 'category-file-count-limited' => 'Энэ ангилалд дараах {{PLURAL:$1|файл|$1 файлнууд}} байна.',
@@ -172,6 +185,7 @@ $messages = array(
 'newwindow' => '(шинэ цонх нээгдэнэ)',
 'cancel' => 'Цуцлах',
 'moredotdotdot' => 'Дэлгэрэнгүй...',
+'morenotlisted' => 'Энэ жагсаалт нь бүрэн биш.',
 'mypage' => 'Хэрэглэгчийн хуудас',
 'mytalk' => 'Миний хэлэлцүүлэг',
 'anontalk' => 'Энэ IP-н яриа',
@@ -184,7 +198,6 @@ $messages = array(
 'qbedit' => 'Засварлах',
 'qbpageoptions' => 'Энэ хуудас',
 'qbmyoptions' => 'Миний хуудсууд',
-'qbspecialpages' => 'Тусгай хуудсууд',
 'faq' => 'Тогтмол тавигддаг асуултууд',
 'faqpage' => 'Project:Тогтмол тавигддаг асуултууд',
 
@@ -273,7 +286,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).
 'aboutsite' => '{{SITENAME}}-н тухай',
 'aboutpage' => 'Project:Тухай',
-'copyright' => 'Ð\90гÑ\83Ñ\83лгÑ\8bг $1-н Ñ\85Ñ\83вÑ\8cд хэрэглэх боломжтой.',
+'copyright' => 'ТÑ\83Ñ\81гайлÑ\81ан Ñ\82айлбаÑ\80 Ð±Ð°Ð¹Ñ\85гүй Ð±Ð¾Ð» Ñ\8dнÑ\8d Ð°Ð³Ñ\83Ñ\83лгÑ\8bг $1 Ð»Ð¸Ñ\86ензийн Ð´Ð°Ð³Ñ\83Ñ\83 хэрэглэх боломжтой.',
 'copyrightpage' => '{{ns:project}}:Зохиогчийн эрх',
 'currentevents' => 'Сүүлийн үеийн мэдээ',
 'currentevents-url' => 'Project:Сүүлийн үеийн мэдээ',
@@ -302,8 +315,8 @@ $1',
 'youhavenewmessages' => 'Таньд $1 ($2) байна.',
 'youhavenewmessagesfromusers' => 'Танд {{PLURAL:$3|өөр нэгэн хэрэглэгчээс |$3 хэрэглэгчээс}} $1 ирсэн байна ($2).',
 'youhavenewmessagesmanyusers' => 'Танд ($2) олон хэрэглэгчидээс $1.',
-'newmessageslinkplural' => '{{PLURAL:$1|нэг шинэ меммеж| шинэ мессеж}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|сүүлд хийсэн өөрчлөлт|сүүлд хийсэн өөрчлөлт}}',
+'newmessageslinkplural' => '{{PLURAL:$1|шинэ зурвас}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|сүүлд хийгдсэн өөрчлөлт}}',
 'youhavenewmessagesmulti' => 'Таньд $1 дээр шинэ мессеж ирсэн байна',
 'editsection' => 'засварлах',
 'editold' => 'засварлах',
@@ -341,7 +354,7 @@ $1',
 'nstab-mediawiki' => 'Мэдэгдэл',
 'nstab-template' => 'Загвар',
 'nstab-help' => 'Тусламж',
-'nstab-category' => 'Ангилал',
+'nstab-category' => 'Анги',
 
 # Main script and global functions
 'nosuchaction' => 'Тийм үйлдэл байхгүй байна',
@@ -394,9 +407,6 @@ $1',
 'perfcached' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
 'perfcachedts' => 'Дараах тоо баримт нь нөөц хуулбар учраас хуучирсан мэдээлэлтэй байж магадгүй. Дээд тал нь {{PLURAL:$1|нэг илэрц|$1 илэрцүүд}} нөөцөд бэлэн байна.',
 'querypage-no-updates' => 'Одоогийн байдлаар энэ хуудсанд шинэчлэлүүд хаагдсан байна. Энд байгаа тоо баримт одоохондоо сэргээгдэхгүй.',
-'wrong_wfQuery_params' => 'wfQuery()-д буруу параметр оруулсан байна<br />
-Функц: $1<br />
-Асуудал: $2',
 'viewsource' => 'Кодыг харах',
 'viewsource-title' => '$1 хуудсын эх сурвалжийг харах',
 'actionthrottled' => 'Үйлдэл хязгаарлагдлаа',
@@ -422,7 +432,7 @@ $2',
 'invalidtitle-knownnamespace' => 'Гарчигийг "$2" namespace, "$3" бичвэртэй буруу оруулсан байна',
 'invalidtitle-unknownnamespace' => '$1 гэсэн үл мэдэгдэх неймспайсын дугаар, "$2" бичвэртэй буруу гарчиг байна.',
 'exception-nologin' => 'Та хэрэглэгчийн нэрээр нэвтрээгүй байна.',
-'exception-nologin-text' => 'Уг Ñ\85Ñ\83Ñ\83даÑ\81, Ò¯Ð¹Ð»Ð´Ð»Ð¸Ð¹Ð³ Ñ\85ийÑ\85Ñ\8dд Ñ\82а Ð²Ð¸ÐºÐ¸Ñ\80Ñ\83Ñ\83 Ñ\85олбогдÑ\81он Ð±Ð°Ð¹Ñ\85 Ñ\88ааÑ\80длагаÑ\82ай.',
+'exception-nologin-text' => 'ЭнÑ\8d Ñ\85Ñ\83Ñ\83дÑ\81анд Ñ\85андаÑ\85, Ñ\8dÑ\81вÑ\8dл Ñ\83г Ò¯Ð¹Ð»Ð´Ð»Ð¸Ð¹Ð³ Ñ\85ийÑ\85ийн Ñ\82Ñ\83лд [[Special:Userlogin|нÑ\8dвÑ\82Ñ\8dÑ\80нÑ\8d]] Ò¯Ò¯.',
 
 # Virus scanner
 'virus-badscanner' => "Буруу тохиргоо: үл мэдэгдэх вирус илрүүлэгч программ: ''$1''",
@@ -438,8 +448,16 @@ $2',
 'welcomecreation-msg' => 'Таны бүртгэл хийгдсэн байна.
 Та өөрийн [[Special:Preferences|{{SITENAME}}-н тохиргоогоо]]  өөрчлөхөө бүү мартаарай.',
 'yourname' => 'Хэрэглэгчийн нэр:',
+'userlogin-yourname' => 'Хэрэглэгчийн нэр',
+'userlogin-yourname-ph' => 'Хэрэглэгчийн нэрээ оруулна уу',
+'createacct-another-username-ph' => 'Хэрэглэгчийн нэрээ оруулна уу',
 'yourpassword' => 'Нууц үг:',
+'userlogin-yourpassword' => 'Нууц үг',
+'userlogin-yourpassword-ph' => 'Нууц үгээ оруулна уу',
+'createacct-yourpassword-ph' => 'Нууц үгээ оруулна уу',
 'yourpasswordagain' => 'Нууц үгээ дахин оруулах:',
+'createacct-yourpasswordagain' => 'Нууц үгээ баталгаажуулна уу',
+'createacct-yourpasswordagain-ph' => 'Нууц үгээ дахиж оруулна уу',
 'remembermypassword' => 'Энэ компьютер дээрх миний нэвтрэлтийг сана (хамгийн дээд талдаа $1 {{PLURAL:$1|өдрийн|өдрийн}} туршид)',
 'yourdomainname' => 'Таны домэйн:',
 'password-change-forbidden' => 'Та энэ вики дээрх нууц үгээ сольж болохгүй.',
@@ -452,14 +470,29 @@ $2',
 'logout' => 'Гарах',
 'userlogout' => 'Гарах',
 'notloggedin' => 'Нэвтрээгүй байна',
+'userlogin-joinproject' => '{{SITENAME}}-д бүртгүүлэх',
 'nologin' => "Бүртгэлгүй юу? '''$1'''.",
 'nologinlink' => 'Бүртгүүлэх',
 'createaccount' => 'Бүртгүүлэх',
 'gotaccount' => "Та бүртгэлтэй юу? '''$1'''",
 'gotaccountlink' => 'Нэвтрэх',
 'userlogin-resetlink' => 'Нэвтрэх мэдээллээ мартаа юу?',
+'userlogin-resetpassword-link' => 'Нууц үгээ мартсан уу?',
+'helplogin-url' => 'Help:Нэвтрэх',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Нэвтрэхэд тусламж]]',
+'userlogin-loggedin' => 'Та {{GENDER:$1|$1}} нэрээр нэвтэрсэн байна.
+Өөр нэрээр нэвтрэх бол доорх маягтыг ашиглана уу.',
+'userlogin-createanother' => 'Өөр бүртгэл үүсгэх',
+'createacct-join' => 'Мэдээллээ оруулна уу.',
+'createacct-another-join' => 'Шинэ бүртгэлийн мэдээллээ оруулна уу.',
 'createaccountmail' => 'Мэйлээр илгээх',
+'createacct-realname' => 'Жинхэнэ нэр (хоосон орхиж болно)',
 'createaccountreason' => 'Шалтгаан:',
+'createacct-reason' => 'Шалтгаан',
+'createacct-reason-ph' => 'Өөр бүртгэл үүсгэх шалтгаан',
+'createacct-benefit-heading' => '{{SITENAME}}-г тан шиг хүмүүс хийж байна.',
+'createacct-benefit-body1' => '{{PLURAL:$1|засвар}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|хуудас}}',
 'badretype' => 'Таны оруулсан хоёр нууц үг таарахгүй байна.',
 'userexists' => 'Хэрэглэгчийн нэр ашиглагдаж байна.
 Өөр нэрээр нэвтэрнэ үү.',
@@ -489,7 +522,7 @@ $2',
 Хамгийн багадаа {{PLURAL:$1|1 үсэгтэй|$1 үсэгтэй}} байх ёстой.',
 'password-name-match' => 'Таны нууц үг хэрэглэгчийн нэрнээс ялгаатай байх ёстой.',
 'password-login-forbidden' => 'Ийм хэрэглэгчийн, нууц үгээр нэвтрэхийг хориглож байна.',
-'mailmypassword' => 'Ð\9cÑ\8dйл Ñ\85аÑ\8fгааÑ\80 Ñ\88инÑ\8d Ð½Ñ\83Ñ\83Ñ\86 Ò¯Ð³Ð¸Ð¹Ð³ Ð¸Ð»Ð³Ñ\8dÑ\8d',
+'mailmypassword' => 'Ð\9dÑ\83Ñ\83Ñ\86 Ò¯Ð³Ñ\8dÑ\8d Ñ\81Ñ\8dÑ\80гÑ\8dÑ\8dÑ\85',
 'passwordremindertitle' => '{{SITENAME}}-д нэвтрэх түр зуурын шинэ нууц үг',
 'passwordremindertext' => 'Хэн нэгэн (магадгүй та, $1 гэх IP хаягаас) {{SITENAME}} ($4) хуудсанд нэвтрэх шинэ нууц үг явуулах хүсэлтийг тавьсан байна. "$3" гэсэн түр хугацаанд хэрэглэж болох нууц үгийг хэрэглэгч "$2"-д олгов.
 Хэрэв та ингэхийг хүссэн бол нэвтэрч ороод шинэ нууц үгээ сонгоно уу.
@@ -536,7 +569,7 @@ $2',
 'user-mail-no-addy' => 'Цахин шуудангийн хаягийг оруулалгүйгээр шуудан явуулахыг оролдлоо.',
 
 # Change password dialog
-'resetpass' => 'Нууц үгээ солих',
+'changepassword' => 'Нууц үгээ солих',
 'resetpass_announce' => 'Та мэйлээр илгээгдсэн түр зуурын нууц үгээр нэвтэрч орсон байна
 Бүрэн нэвтэрэхэд та энд шинэ нууц үгээ оруулах хэрэгтэй:',
 'resetpass_text' => '<!-- Энд текст нэм -->',
@@ -902,10 +935,6 @@ $3-н тодорхойлсон шалтгаан нь ''$2''",
 'revisiondelete' => 'Засваруудыг устгах/сэргээх',
 'revdelete-nooldid-title' => 'Зорьсон засвар байхгүй байна',
 'revdelete-nooldid-text' => 'Та нэг бол энэ үйлдлийг хийхэд зорьсон засвар(ууд)ыг тодорхойлоогүй, зорьсон засвар нь байхгүй, эсвэл одоогийн засварыг нуух гэж байна.',
-'revdelete-nologtype-title' => 'Логийн төрөл өгөгдөөгүй байна',
-'revdelete-nologtype-text' => 'Энэ үйлдлийг хийх логийн төрөл өгөгдөөгүй байна.',
-'revdelete-nologid-title' => 'Хүчингүй логийн бүртгэл',
-'revdelete-nologid-text' => 'Та энэ функцийг хийх логийн үйл явдлыг тусгаж өгөөгүй, эсвэл тусгаж өгсөн бүртгэл байхгүй байна.',
 'revdelete-no-file' => 'Өгөгдсөн файл байхгүй байна.',
 'revdelete-show-file-confirm' => '$2-ий $3 дахь "<nowiki>$1</nowiki>" файлын устгагдсан засварыг үзмээр байгаадаа итгэлтэй байна уу?',
 'revdelete-show-file-submit' => 'Тийм',
@@ -939,8 +968,6 @@ $1",
 'logdelete-failure' => "'''Логийн үзэгдэх байдлыг тохируулж чадсангүй:'''
 $1",
 'revdel-restore' => 'Харагдах байдлыг өөрчлөх',
-'revdel-restore-deleted' => 'устгагдсан засварууд',
-'revdel-restore-visible' => 'үзэгдэх засварууд',
 'pagehist' => 'Хуудасны түүх',
 'deletedhist' => 'Устгагдсан түүх',
 'revdelete-hide-current' => '$2, $1 огноотой зүйлийг нуухад алдаа гарав: энэ бол одоогийн засвар.
@@ -1014,12 +1041,8 @@ $1",
 # 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}}',
@@ -1028,10 +1051,8 @@ $1",
 'nextn-title' => 'Дараагийн $1 {{PLURAL:$1|үр дүн|үр дүн}}',
 'shown-title' => 'Хуудас бүрд $1 {{PLURAL:$1|үр дүн}} гаргах',
 'viewprevnext' => 'Үзэх: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Хайх сонголтууд',
 'searchmenu-exists' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудас байна'''",
 'searchmenu-new' => "'''Энэ викид \"[[:\$1]]\" гэсэн хуудсыг үүсгэх!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Энэ угтвартай хуудсуудыг гүйлгэж харах]]',
 'searchprofile-articles' => 'Агуулгын хуудсууд',
 'searchprofile-project' => 'Тусламжийн болон төслийн хуудсууд',
 'searchprofile-images' => 'Мультмедиа',
@@ -1052,21 +1073,16 @@ $1",
 'search-interwiki-default' => '$1 үр дүн:',
 'search-interwiki-more' => '(илүү их)',
 'search-relatedarticle' => 'Холбоотой',
-'mwsuggest-disable' => 'AJAX саналуудыг болиулах',
 'searcheverything-enable' => 'Бүх нэрний зайнуудад хайх',
 'searchrelated' => 'холбоотой',
 'searchall' => 'бүгдийг',
 'showingresults' => "Доор #'''$2'''-с эхлэсэн '''$1''' илэрцийг үзүүлж байна.",
 'showingresultsnum' => "Доор #'''$2'''-с эхлэсэн '''$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' => 'Байхгүй',
@@ -1079,7 +1095,6 @@ $1",
 'preferences' => 'Хэрэглэгчийн тохиргоо',
 'mypreferences' => 'Миний тохиргоо',
 'prefs-edits' => 'Засваруудын тоо:',
-'changepassword' => 'Нууц үгээ солих',
 'prefs-skin' => 'Арьс',
 'skin-preview' => 'Урьдчилж харах',
 'datedefault' => 'Анхны байдал',
@@ -1102,13 +1117,11 @@ $1",
 'prefs-email' => 'И-мэйлийн сонгох тохиргоо',
 'prefs-rendering' => 'Харагдац',
 'saveprefs' => 'Хадгалах',
-'resetprefs' => 'Хадгалаагүй өөрчлөлтүүдийг арилгах',
 'restoreprefs' => 'Бүх тохиргоог анхны байдалд оруулах',
 'prefs-editing' => 'Засварлах',
 'rows' => 'Мөр:',
 'columns' => 'Багана:',
 'searchresultshead' => 'Хайлт',
-'resultsperpage' => 'Хуудас тус бүр дээрх илэрцийн тоо:',
 'stub-threshold' => '<a href="#" class="stub">Түүхий холбоосийг</a> форматлах босго (байт):',
 'stub-threshold-disabled' => 'Идэвхигүйжүүлсэн',
 'recentchangesdays' => 'Сүүлийн өөрчлөлтүүдэд үзүүлэх өдрийн тоо:',
@@ -1120,7 +1133,6 @@ $1",
 'localtime' => 'Орон нутгийн цаг:',
 'timezoneuseserverdefault' => 'Серверийн ердийн тохиргоо ($1)-г хэрэглэх \\',
 'timezoneuseoffset' => 'Бусад (зөрөөг заах)',
-'timezoneoffset' => 'Зөрөө¹:',
 'servertime' => 'Серверийн цаг:',
 'guesstimezone' => 'Броузераас бөглөх',
 'timezoneregion-africa' => 'Африк',
@@ -1352,8 +1364,7 @@ $1 тэмдэгтээс богино байх ёстой.',
 'recentchanges-label-minor' => 'Энэ нь бага зэргийн засвар байна',
 'recentchanges-label-bot' => 'Энэ засварыг бот гүйцэтгэсэн байна',
 'recentchanges-label-unpatrolled' => 'Энэ засварыг одоогийн байдлаар манаагүй байна',
-'recentchanges-legend-newpage' => '$1 - шинэ хуудас',
-'rcnote' => "Доорх нь $5, $4-ий байдлаарх сүүлийн '''$2''' өдрийн турших '''$1''' засвар юм.",
+'recentchanges-legend-newpage' => '([[Special:NewPages|Шинэ хуудсуудын жагсаалтыг]] бас үзнэ үү.',
 'rcnotefrom' => "Доорх нь '''$2'''-с хойших өөрчлөлтүүд ('''$1''' хүртэлхийг харуулав) юм.",
 'rclistfrom' => '$1-с хойших шинэ засваруудыг үзүүлэх',
 'rcshowhideminor' => 'Бага зэргийн засваруудыг $1',
@@ -1787,7 +1798,7 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 
 # Miscellaneous special pages
 'nbytes' => '$1 байт',
-'ncategories' => '$1 ангилал',
+'ncategories' => '$1 анги',
 'nlinks' => '$1 линк',
 'nmembers' => '$1 гишүүн',
 'nrevisions' => '$1 засвар',
@@ -1795,12 +1806,12 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'nimagelinks' => '$1 {{PLURAL:$1|хуудсанд|хуудсанд}} ашигласан',
 'specialpage-empty' => 'Энэ мэдүүлэгт үр дүн гарсангүй.',
 'lonelypages' => 'Өнчин хуудсууд',
-'lonelypagestext' => 'Энэ хуудсууд {{SITENAME}}-дахь бусад хуудсуудтай холбогдоогүй эсвэл заагаас хэтэрсэн байна.',
+'lonelypagestext' => 'Энэ хуудсууд {{SITENAME}}-дахь бусад хуудастай холбогдоогүй эсвэл заагаас хэтэрсэн байна.',
 'uncategorizedpages' => 'Ангилагдаагүй хуудсууд',
-'uncategorizedcategories' => 'Ангилагдаагүй ангиллууд',
+'uncategorizedcategories' => 'Ангилагдаагүй анги',
 'uncategorizedimages' => 'Ангилагдаагүй зургууд',
 'uncategorizedtemplates' => 'Ангилагдаагүй загварууд',
-'unusedcategories' => 'Ð\90Ñ\88иглагдаагүй Ð°Ð½Ð³Ð¸Ð»Ð»Ñ\83Ñ\83д',
+'unusedcategories' => 'ХооÑ\81он Ð°Ð½Ð³Ð¸',
 'unusedimages' => 'Ашиглагдаагүй файлууд',
 'popularpages' => 'Эрэлттэй хуудсууд',
 'wantedcategories' => 'Хэрэгцээт ангиллууд',
@@ -1822,10 +1833,8 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'protectedpages' => 'Хамгаалагдсан хуудсууд',
 'protectedpages-indef' => 'Зөвхөн хугацаагүй хамгаалалтууд',
 'protectedpages-cascade' => 'Зөвхөн давхар хамгаалалтууд',
-'protectedpagestext' => 'Дараах хуудсууд нь зөөх ба засварлах явдлаас хамгаалагдсан байна',
 'protectedpagesempty' => 'Эдгээр параметрээр хамгаалагдсан хуудас байхгүй байна.',
 'protectedtitles' => 'Хамгаалагдсан гарчигууд',
-'protectedtitlestext' => 'Дараах гарчигуудтай хуудсуудыг үүсгэхээс хамгаалсан байна',
 'protectedtitlesempty' => 'Эдгээр параметрээр хамгаалагдсан гарчиг байхгүй байна.',
 'listusers' => 'Хэрэглэгчдийн жагсаалт',
 'listusers-editsonly' => 'Засвар хийсэн хэрэглэгчдийг л үзүүлэх',
@@ -1875,9 +1884,6 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'allpagesto' => 'Дараах гэж дуусах хуудсуудыг үзүүлэх:',
 'allarticles' => 'Бүх хуудас',
 'allinnamespace' => 'Бүх хуудас ($1 namespace)',
-'allnotinnamespace' => 'Бүх хуудас (нэрэндээ $1-г агуулаагүй)',
-'allpagesprev' => 'Өмнөх',
-'allpagesnext' => 'Дараагийн',
 'allpagessubmit' => 'Явах',
 'allpagesprefix' => 'Дараах угтвараар эхэлсэн хуудсуудыг үзүүлэх:',
 'allpagesbadtitle' => 'Хуудасны нэр нь хүчингүй эсвэл интер-хэл буюу интер-викид байгаа нэр байна. Нэрэнд хэрэглэж болохгүй тэмдэгт агуулагдаж байж болзошгүй юм.',
@@ -1887,11 +1893,11 @@ URL нь зөв болон сайт ажиллагаатай байгаа эсэ
 'cachedspecial-refresh-now' => 'Саяханы хуудсыг харах',
 
 # Special:Categories
-'categories' => 'Ангиллууд',
+'categories' => 'Анги',
 'categoriespagetext' => 'Дараах {{PLURAL:$1|ангилалд|ангиллуудад}} хуудас эсвэл медиа файл агуулагдаж байна.
 [[Special:UnusedCategories|Хэрэглэгдэхгүй байгаа]] ангиллуудыг энд харуулсангүй.
 [[Special:WantedCategories|Хэрэгтэй ангиллууд]] гэдгийг харна уу.',
-'categoriesfrom' => 'Хамгийн Ñ\8dÑ\85Ñ\8dлж Ñ\85аÑ\80Ñ\83Ñ\83лаÑ\85 ангилал:',
+'categoriesfrom' => 'ЭÑ\85ний ангилал:',
 'special-categories-sort-count' => 'тоогоор ялгах',
 'special-categories-sort-abc' => 'үсгийн дарааллаар ялгах',
 
@@ -2200,7 +2206,6 @@ $UNWATCHURL
 'undeletebtn' => 'Сэргээх',
 'undeletelink' => 'үзэх/сэргээх',
 'undeleteviewlink' => 'харах',
-'undeletereset' => 'Дахин эхлүүлэх',
 'undeleteinvert' => 'Эсрэгээр нь болгох',
 'undeletecomment' => 'Шалтгаан:',
 'undeletedrevisions' => '{{PLURAL:$1|1 хувилбар|$1 хувилбар}}  сэргээгдлээ',
@@ -2286,7 +2291,6 @@ $1',
 'block' => 'Хэрэглэгчийг блок хийх',
 'unblock' => 'Хэрэглэгчийг блокоос гаргах',
 'blockip' => 'Хэрэглэгчийг түгжих',
-'blockip-title' => 'Хэрэглэгчийг түгжих',
 'blockip-legend' => 'Хэрэглэгчийг түгжих',
 'blockiptext' => 'Доорх маягтыг ашиглан тодорхой IP хаяг эсвэл хэрэглэгчийн нэрийг засвар хийхээс түгжинэ үү.
 Энэ нь зөвхөн вандализм үйлдэх явдлаас сэргийлэхийн тулд, [[{{MediaWiki:Policy-url}}|бодлого, баримтлалын]] дагуу хийгдэх ёстой.
@@ -2294,7 +2298,6 @@ $1',
 'ipadressorusername' => 'IP хаяг буюу хэрэглэгчийн нэр',
 'ipbexpiry' => 'Түгжээ нь нээгдэх хугацаа',
 'ipbreason' => 'Шалтгаан:',
-'ipbreasonotherlist' => 'Өөр шалтгаан',
 'ipbreason-dropdown' => '*Ерөнхий түгжих шалтгаанууд
 ** Худал мэдээлэл оруулсан
 ** Хуудаснуудаас агуулга устгасан
@@ -2310,8 +2313,6 @@ $1',
 'ipbsubmit' => 'Энэ хэрэглэгчийг түгжих',
 'ipbother' => 'Өөр хугацаа:',
 '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',
-'ipbotheroption' => 'бусад',
-'ipbotherreason' => 'Өөр/нэмэлт шалтгаан:',
 'ipbhidename' => 'Хэрэглэгчийн нэрийг жагсаалт болон өөрчлөлтөөс нуух',
 'ipbwatchuser' => 'Энэ хэрэглэгчийн хэрэглэгчийн ба ярианы хуудсуудыг хянах',
 'ipb-disableusertalk' => 'Энэ хэрэглэгчийг блоклогдсон үедээ өөрийн ярианы хуудсыг янзлахаас зайлс хийлгэх',
@@ -2402,7 +2403,6 @@ $1',
 'sorbsreason' => '{{SITENAME}}-н хэрэглэдэг DNSBL-д таны IP хаягийг чөлөөт прокси хэмээн тодорхойлсон байна.',
 'sorbs_create_account_reason' => '{{SITENAME}}-н хэрэглэдэг DNSBL-д таны IP хаягийг чөлөөт прокси гэж тэмдэглэсэн байна.
 Та бүртгэл үүсгэх боломжгүй.',
-'cant-block-while-blocked' => 'Өөрөө түгжигдсэн үед бусад хэрэглэгчдийг түгжих боломжгүй.',
 'cant-see-hidden-user' => 'Таны түгжих гэж оролдож буй хэрэглэгчийг аль хэдийнээ түгжиж, нуусан байна.
 Таньд хэрэглэгчийг нуух эрх байхгүй тул та хэрэглэгчийн түгжээг харах буюу засварлах боломжгүй.',
 'ipbblocked' => 'Та өөрөө түгжигдсэн тул бусад хэрэглэгчдийг түгжих буюу тэдний түгжээг тайлах эрхгүй',
@@ -2446,7 +2446,6 @@ $1',
 Эдгээр тохиолдлуудад уг хуудсыг гар аргаар зөөх эсвэл нэгтгэх шаардлагатай болно.",
 'movearticle' => 'Хуудсыг зөөх:',
 'moveuserpage-warning' => "'''Анхаар:''' Та хэрэглэгчийн хуудсыг зөөх гэж байна. Зөвхөн хуудас нь л зөөгдөнө, харин хэрэглэгчийн нэр ''солигдохгүй'' гэдгийг анхаарана уу.",
-'movenologin' => 'нэвтрээгүй байна',
 'movenologintext' => 'Та хуудсыг зөөхийн тулд бүртгэлтэй бөгөөд [[Special:UserLogin|холбогдсон]] байх ёстой.',
 'movenotallowed' => 'Таньд хуудас зөөх зөвшөөрөл байхгүй байна.',
 'movenotallowedfile' => 'Таньд файл зөөх эрх байхгүй.',
@@ -2462,9 +2461,6 @@ $1',
 'articleexists' => 'Ийм нэртэй хуудсыг өмнө нь үүсгэсэн, эсвэл сонгосон нэр тань хүчингүй байна.
 Өөр нэр сонгоно уу.',
 'cantmove-titleprotected' => 'Шинэ гарчигтай хуудас нь үүсгэгдэхээс хамгаалагдсан тул та ийшээ хуудсыг зөөх боломжгүй.',
-'talkexists' => "'''Хуудас өөрөө амжилттай зөөгдсөн боловч шинэ нэр дээр хэлэлцүүлэг байгаа тул хэлэлцүүлгийн хуудас нь зөөгдсөнгүй.
-Хэлэлцүүлгийн хуудсуудыг гар аргаар нэгтгэнэ үү.'''",
-'movedto' => 'Зөөгдсөн газар:',
 'movetalk' => 'Харгалзах хэлэлцүүлгийн хуудсыг зөөх',
 'move-subpages' => 'Дэд хуудсуудыг зөөх ($1 хүртэлх)',
 'move-talk-subpages' => 'Хэлэлцүүлгийн хуудасны дэд хуудсуудыг зөөх ($1 хүртэл)',
@@ -2779,7 +2775,7 @@ $1',
 'file-nohires' => 'Илүү чанартай хувилбар байхгүй байна.',
 'svg-long-desc' => 'SVG файл, $1 × $2 пиксэл, файлын хэмжээ: $3',
 'svg-long-error' => '$1 : Буруу SVG файл',
-'show-big-image' => 'Хамгийн Ñ\81айн Ñ\87анаÑ\80Ñ\82ай Ñ\85Ñ\83вилбаÑ\80',
+'show-big-image' => 'ЭÑ\85 Ñ\84айл',
 'show-big-image-preview' => 'Үзлэгийн хэмжээ : $1',
 'show-big-image-other' => 'Бусад {{PLURAL:$2|зургын нягтрал|зургын нягтрал}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксел',
@@ -2972,7 +2968,7 @@ $1',
 'exif-writer' => 'Бичсэн',
 'exif-languagecode' => 'Хэл',
 'exif-iimversion' => 'IIM хувилбар',
-'exif-iimcategory' => 'Ангилал',
+'exif-iimcategory' => 'Анги',
 'exif-datetimeexpires' => 'түүний дараа бүү хэрэглэ',
 'exif-datetimereleased' => 'Гарсан өдөр',
 'exif-originaltransmissionref' => '',
@@ -3154,15 +3150,10 @@ $1',
 'exif-iimcategory-war' => 'Дайн, мөргөлдөөн ба үймээн самуун',
 'exif-iimcategory-wea' => 'Цаг агаар',
 
-# External editor support
-'edit-externally' => 'Гадны программыг ашиглан энэ файлыг засварлах',
-'edit-externally-help' => '(Нэмэлт мэдээллийг [https://www.mediawiki.org/wiki/Manual:External_editors тохируулгын зааврын] хуудаснаас харна уу)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бүгдийг',
 'namespacesall' => 'бүгдийг',
 'monthsall' => 'бүгдийг',
-'limitall' => 'бүгдийг',
 
 # Email address confirmation
 'confirmemail' => 'Мэйл хаягийг баталгаажуулах',
@@ -3185,7 +3176,6 @@ $1',
 'confirmemail_success' => 'Таны мэйл хаяг баталгаажлаа.
 Та одоо викид [[Special:UserLogin|нэвтэрч]] үйлдэл хийх боломжтой',
 'confirmemail_loggedin' => 'Таны мэйл хаяг баталгаажлаа.',
-'confirmemail_error' => 'Таны баталгаажуулалтыг хадгалах үед ямар нэг алдаа гарлаа.',
 'confirmemail_subject' => '{{SITENAME}}-н мэйл хаягийн баталгаажуулалт',
 'confirmemail_body' => 'Хэн нэгэн, магадгүй та $1 IP хаягнаас $2 гэсэн нэрээр энэ мэйл хаягтайгаар {{SITENAME}} хуудсанд данс нээсэн байна.
 
@@ -3387,7 +3377,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'Хуудсуудыг харьцуулах',
-'compare-selector' => 'Хуудасны засваруудыг харьцуулах',
 'compare-page1' => 'Нэгдүгээр хуудас',
 'compare-page2' => 'Хоёрдугаар хуудас',
 'compare-rev1' => 'Нэгдүгээр засвар',
index b05ccc4..0827327 100644 (file)
@@ -108,7 +108,7 @@ $messages = array(
 'jumptonavigation' => 'навигацие',
 'jumptosearch' => 'кэутаре',
 
-# 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).
+# 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).
 'aboutsite' => 'Деспре {{SITENAME}}',
 'aboutpage' => 'Project:Деспре',
 'copyright' => 'Концинутул есте диспонибил суб $1.',
@@ -116,7 +116,6 @@ $messages = array(
 'disclaimers' => 'Деклараций',
 'disclaimerpage' => 'Project:Декларацие ӂенералэ',
 'edithelp' => 'Ажутор пентру едитаре',
-'edithelppage' => 'Help:Едитаре',
 'helppage' => 'Help:Купринс',
 'mainpage' => 'Прима паӂина',
 'mainpage-description' => 'Прима паӂина',
@@ -127,7 +126,6 @@ $messages = array(
 
 'retrievedfrom' => 'Адус де ла «$1»',
 'youhavenewmessages' => 'Ай $1 ($2).',
-'newmessageslink' => 'месаже ной',
 'editsection' => 'едитязэ',
 'editold' => 'едитязэ',
 'editlink' => 'едитязэ',
@@ -242,10 +240,6 @@ $messages = array(
 # 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'''",
-'notitlematches' => 'Ничь ун резултат ын титлуриле артиколелор',
 'notextmatches' => 'Ничь ун резултат ын текстеле артиколелор',
 'prevn' => 'антериоареле {{PLURAL:$1|$1}}',
 'nextn' => 'урмэтоареле {{PLURAL:$1|$1}}',
@@ -257,13 +251,9 @@ $messages = array(
 'search-interwiki-caption' => 'Проекте ынрудите',
 'search-interwiki-default' => '$1 резултате:',
 'search-interwiki-more' => '(май мулт)',
-'nonefound' => "'''Нотэ''': Нумай унеле спаций де нуме сынт кэутате импличит.
-Ынчеркэ сэ пуй ка ши префикс ал кэутэрий ''all:'' пентру а кэута ын тот концинутул (инклузынд ши паӂиниле де дискуций, формате, етч), сау фолосеште спациул де нуме дорит ка ши префикс.",
-'powersearch' => 'Кэутаре авансатэ',
 'powersearch-legend' => 'Кэутаре авансатэ',
 'powersearch-ns' => 'Кэутаре ын спацииле де нуме:',
 'powersearch-redir' => 'Афишазэ редиректэриле',
-'powersearch-field' => 'Каутэ дупэ',
 
 # Preferences page
 'preferences' => 'Преферинце',
@@ -557,10 +547,6 @@ $messages = array(
 'metadata-expand' => 'Афишазэ деталий суплиментаре',
 'metadata-collapse' => 'Аскунде деталий суплиментаре',
 
-# 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' => 'тоате',
 'namespacesall' => 'тоате',
index aec7bbb..4479717 100644 (file)
@@ -81,7 +81,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'जुनी_पाने' ),
        'Blankpage'                 => array( 'कोरे_पान' ),
        'Block'                     => array( 'प्रतिबंध', 'अंकपत्ता_प्रतिबंध', 'सदस्य_प्रतिबंध' ),
-       'Blockme'                   => array( 'मला_प्रतिबंध_करा' ),
        'Booksources'               => array( 'पुस्तक_स्रोत' ),
        'BrokenRedirects'           => array( 'चुकीची_पुनर्निर्देशने' ),
        'Categories'                => array( 'वर्ग' ),
@@ -93,9 +92,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'सदस्य_नोंद' ),
        'Deadendpages'              => array( 'टोकाची_पाने' ),
        'DeletedContributions'      => array( 'वगळलेली_योगदाने' ),
-       'Disambiguations'           => array( 'निःसंदिग्धीकरण' ),
        'DoubleRedirects'           => array( 'दुहेरी_पुनर्निर्देशने' ),
        'Emailuser'                 => array( 'विपत्र_वापरकर्ता' ),
+       'ExpandTemplates'           => array( 'साचेविस्तारकरा' ),
        'Export'                    => array( 'निर्यात' ),
        'Fewestrevisions'           => array( 'कमीत_कमी_आवर्तने' ),
        'FileDuplicateSearch'       => array( 'दुहेरी_संचिका_शोध' ),
@@ -173,7 +172,7 @@ $magicWords = array(
        'nogallery'                 => array( '0', '__प्रदर्शननको__', '__NOGALLERY__' ),
        'forcetoc'                  => array( '0', '__अनुक्रमणिकाहवीच__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__अनुक्रमणिका__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__असंपादनक्षम__', '__NOEDITSECTION__' ),
+       'noeditsection'             => array( '0', '__विभाà¤\97à¤\85सà¤\82पादनà¤\95à¥\8dषम__', '__NOEDITSECTION__' ),
        'currentmonth'              => array( '1', 'सद्यमहिना', 'सद्यमहिना२', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', 'सद्यमहिना१', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'सद्यमहिनानाव', 'CURRENTMONTHNAME' ),
@@ -207,6 +206,7 @@ $magicWords = array(
        'pagenamee'                 => array( '1', 'लेखानावव', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'नामविश्व', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'नामविश्वा', 'नामविश्वाचे', 'NAMESPACEE' ),
+       'namespacenumber'           => array( '1', 'नामविश्वक्रमांक', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'चर्चाविश्व', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'चर्चाविश्वा', 'चर्चाविश्वाचे', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'विषयविश्व', 'लेखविश्व', 'SUBJECTSPACE', 'ARTICLESPACE' ),
@@ -233,8 +233,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'मध्यवर्ती', 'center', 'centre' ),
        'img_framed'                => array( '1', 'चौकट', 'फ़्रेम', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'विनाचौकट', 'विनाफ़्रेम', 'frameless' ),
-       'img_page'                  => array( '1', 'पान=$1', 'पान $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'उभा', 'उभा=$1', 'उभा $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'पान=$1', 'पान_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'उभा', 'उभा=$1', 'उभा_$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'सीमा', 'border' ),
        'img_baseline'              => array( '1', 'तळरेषा', 'आधाररेषा', 'baseline' ),
        'img_sub'                   => array( '1', 'अधो', 'sub' ),
@@ -304,6 +304,11 @@ $magicWords = array(
        'staticredirect'            => array( '1', '__अविचलपुर्ननिर्देश__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'सुरक्षास्तर', 'PROTECTIONLEVEL' ),
        'formatdate'                => array( '0', 'दिनांकनपद्धती', 'formatdate', 'dateformat' ),
+       'url_wiki'                  => array( '0', 'विकि', 'WIKI' ),
+       'pagesincategory_all'       => array( '0', 'सर्व', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'पाने', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'उपवर्ग', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'संचिका', 'files' ),
 );
 
 $digitTransformTable = array(
@@ -346,7 +351,6 @@ $messages = array(
 'tog-minordefault' => "सर्व संपादने 'छोटा बदल' म्हणून आपोआप जतन करा.",
 'tog-previewontop' => 'झलक संपादन खिडकीच्या आधी दाखवा',
 'tog-previewonfirst' => 'पहिल्या संपादनानंतर झलक दाखवा',
-'tog-nocache' => 'न्याहाळकाची पान-सय (कॅशिंग) अक्षम (निकामी) करा',
 'tog-enotifwatchlistpages' => 'माझ्या निरीक्षणसूचीत असलेल्या पानांमध्ये अथवा संचिकेत बदल झाल्यास मला विपत्र (ई-मेल) पाठवा.',
 'tog-enotifusertalkpages' => 'माझ्या चर्चा पानावर बदल झाल्यास मला विरोप (ई-मेल) पाठवा',
 'tog-enotifminoredits' => 'मला पानांच्या आणि संचिकांच्या छोट्या बदलांकरीता सुद्धा विरोप पाठवा',
@@ -481,7 +485,6 @@ $messages = array(
 'qbedit' => 'संपादन',
 'qbpageoptions' => 'हे पान',
 'qbmyoptions' => 'माझी पाने',
-'qbspecialpages' => 'विशेष पाने',
 'faq' => 'नेहमी विचारण्यात येणारे प्रश्न',
 'faqpage' => 'Project:प्रश्नावली',
 
@@ -596,8 +599,8 @@ $1',
 'youhavenewmessages' => 'तुमच्यासाठी $1 आहे. ($2)',
 'youhavenewmessagesfromusers' => 'तुमच्यासाठी {{PLURAL:$3|इतर सदस्याकडून|$3 सदस्यांकडून}} $1 आहेत. ($2)',
 'youhavenewmessagesmanyusers' => 'तुमच्यासाठी बऱ्याच सदस्यांकडून $1 आहेत. ($2)',
-'newmessageslinkplural' => '{{PLURAL:$1|नवà¥\80न à¤¸à¤\82दà¥\87श|नवीन संदेश}}',
-'newmessagesdifflinkplural' => 'मागील {{PLURAL:$1|बदल}}',
+'newmessageslinkplural' => '{{PLURAL:$1|à¤\8fà¤\95 à¤¨à¤µà¥\80न à¤¸à¤\82दà¥\87श|९९९=नवीन संदेश}}',
+'newmessagesdifflinkplural' => 'मागील {{PLURAL:$1|999=बदल}}',
 'youhavenewmessagesmulti' => '$1 वर तुमच्यासाठी नवीन संदेश आहेत.',
 'editsection' => 'संपादन',
 'editold' => 'संपादन',
@@ -696,9 +699,6 @@ $1',
 'perfcached' => 'खालील माहिती सयीमधील (कॅशे) असल्यामुळे ती अद्ययावत् नाही.जास्तीतजास्त {{PLURAL:$1|एक प्रतिफळ |$1 प्रतिफळे }} सयीमध्ये असतात.',
 'perfcachedts' => 'खालील माहिती सयीमधील (कॅशे) आहे व ती  $1 पर्यंत अद्ययावत् आहे. जास्तीतजास्त {{PLURAL:$4|एक प्रतिफळ |$4 प्रतिफळे}} सयीमध्ये असतात.',
 'querypage-no-updates' => 'सध्या या पानाकरिता नवी अद्यतने अनुपलब्ध केली आहेत.आत्ताच येथील विदा तरोताजा होणार नाही.',
-'wrong_wfQuery_params' => 'wfQuery()साठी चुकिची प्राचले दिलेली आहेत<br />
-(कार्य) function: $1<br />
-(पृच्छा)Query: $2',
 'viewsource' => 'स्रोत पहा',
 'viewsource-title' => '$1 चा उगम बघा',
 'actionthrottled' => 'कृती नियामक(थ्रॉटल) केली',
@@ -727,7 +727,7 @@ $2',
 'invalidtitle-knownnamespace' => '"$2" नामविश्वात "$3" मजकूराचे अयोग्य शीर्षक',
 'invalidtitle-unknownnamespace' => 'अनोळखी नामविश्वाच्या आकड्यासह अवैध मथळा $1 व मजकूर "$2"',
 'exception-nologin' => 'सनोंद-प्रवेशित नाही',
-'exception-nologin-text' => 'हे पान किंवा क्रिया करण्यासाठी आपल्याला या विकिवर सनोंद- प्रवेशित असावयास हवे.',
+'exception-nologin-text' => 'हे पान किंवा क्रिया करण्यासाठी आपल्याला या विकिवर [[Special:Userlogin|सनोंद- प्रवेशित]] असावयास हवे.',
 
 # Virus scanner
 'virus-badscanner' => "खराब विन्यास (कॉन्फिगरेशन): अनोळखी व्हायरस स्कॅनर: ''$1''",
@@ -775,7 +775,7 @@ $2',
 'gotaccount' => 'पूर्वीचे खाते आहे? $1.',
 'gotaccountlink' => 'सनोंद-प्रवेश करा',
 'userlogin-resetlink' => 'सनोंद-प्रवेश तपशील विसरला असाल तर येथे टिचकी मारा.',
-'userlogin-resetpassword-link' => 'परवलà¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤ªà¥\81नà¥\8dहा à¤\9cà¥\81ळवा (रिसà¥\87à¤\9f)',
+'userlogin-resetpassword-link' => 'à¤\86पला à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤µà¤¿à¤¸à¤°à¤²à¤¾à¤¤?',
 'helplogin-url' => 'Help:सनोंद प्रवेशासाठी(लॉगिंग-ईन)',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|सनोंद-प्रवेशासाठी(लॉग-ईन) सहाय्य]]',
 'userlogin-loggedin' => 'आपण पुर्वीच {{GENDER:$1|$1}} म्हणून सनोंद प्रवेशित आहात.वेगळ्या सदस्यनावाने सनोंद प्रवेशासाठी खालील आवेदन वापरा.',
@@ -821,7 +821,7 @@ $2',
 'passwordtooshort' => 'तुमच्या परवलीच्या शब्दात किमान {{PLURAL:$1|१ अक्षर |$1 अक्षरे}} हवीत.',
 'password-name-match' => 'आपला परवलीचा शब्द हा आपल्या सदस्यनावापेक्षा वेगळा हवा.',
 'password-login-forbidden' => 'या सदस्यनामाचा व परवलीच्या शब्दाचा वापर निषिद्ध आहे.',
-'mailmypassword' => 'नवà¥\80न à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤µà¤¿à¤ªà¤¤à¥\8dर (à¤\88-मà¥\87ल) à¤ªà¤¤à¥\8dतà¥\8dयावर à¤ªà¤¾à¤ à¤µा',
+'mailmypassword' => 'नवà¥\80न à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤ªà¥\81नरà¥\8dसà¥\8dथापित(रिसà¥\87à¤\9f) à¤\95रा',
 'passwordremindertitle' => '{{SITENAME}}करिता नवा तात्पुरता परवलीचा शब्दांक.',
 'passwordremindertext' => 'कुणीतरी (कदाचित तुम्ही, अंकपत्ता $1 कडून) {{SITENAME}} करिता ’नवा परवलीचा शब्दांक पाठवावा’ अशी विनंती केली आहे ($4).
 "$2" सदस्याकरिता तात्पुरता परवलीचा शब्दांक "$3" झाला आहे.
@@ -834,13 +834,13 @@ $2',
 
 तो मिळाल्यावर पुन्हा सनोंद-प्रवेश करा.',
 'blocked-mailpassword' => 'तुमच्या अंकपत्त्यास संपादनापासून प्रतिबंधित करण्यात आले आहे,आणि म्हणून दुरूपयोग टाळ्ण्याच्या दृष्टीने, परवलीचा शब्द परत मिळवण्याची क्रिया करण्यास आपणास परवानगी नाही.',
-'eauthentsent' => 'नामाà¤\82à¤\95ित ई-मेल पत्त्यावर एक निश्चितता स्वीकारक ई-मेल पाठविला गेला आहे.
+'eauthentsent' => 'नमà¥\82द à¤\95à¥\87लà¥\87लà¥\8dया ई-मेल पत्त्यावर एक निश्चितता स्वीकारक ई-मेल पाठविला गेला आहे.
 खात्यावर कोणताही इतर ई-मेल पाठविण्यापूर्वी - तो ई-मेल पत्ता तुमचाच आहे, हे सुनिश्चित करण्यासाठी - तुम्हाला त्या ई-मेल मधील सूचनांचे पालन करावे लागेल.',
 'throttled-mailpassword' => 'मागील {{PLURAL:$1|तासात|$1 तासांत}} परवलीचा शब्द बदलण्यासाठीची सूचना विपत्राद्वारे पाठविलेली आहे. दुरुपयोग टाळण्यासाठी, {{PLURAL:$1|एका तासामध्ये|$1 तासांमध्ये}} फक्त एकदाच सूचना दिली जाईल.',
 'mailerror' => 'विपत्र पाठवण्यात त्रुटी: $1',
 'acct_creation_throttle_hit' => 'माफ करा, तुम्ही आत्तापर्यंत {{PLURAL:$1|१ खाते उघडले आहे|$1 खाती उघडली आहेत}}. तुम्हाला आणखी खाती उघडता येणार नाहीत.',
-'emailauthenticated' => 'तुमचा विपत्रपत्ता $3 येथे $2 यावेळी तपासण्यात आला आहे.',
-'emailnotauthenticated' => 'तà¥\81मà¤\9aा à¤\88-मà¥\87ल à¤ªà¤¤à¥\8dता à¤\85दà¥\8dयाप à¤\85धिपà¥\8dरमाणित(à¤\91थà¥\87à¤\82à¤\9fिà¤\95à¥\87à¤\9fà¥\87ड) à¤¨à¤¾à¤¹à¥\80. à¤\96ालà¥\80ल à¤\95à¥\8bणतà¥\8dयाहà¥\80 à¤«à¤¿à¤\9aरà¥\8dसà¤\95रिता ई-मेल पाठविला जाणार नाही.',
+'emailauthenticated' => 'तुमचा विपत्रपत्ता $2 ला $3 यावेळी तपासण्यात आला आहे.',
+'emailnotauthenticated' => 'तà¥\81मà¤\9aà¥\8dया à¤\88-मà¥\87ल à¤ªà¤¤à¥\8dतà¥\8dयाà¤\9aà¥\80 à¤\85दà¥\8dयाप à¤¨à¤¿à¤¶à¥\8dà¤\9aितà¥\80 à¤\9dालà¥\87लà¥\80 à¤¨à¤¾à¤¹à¥\80. à¤\96ालà¥\80ल à¤\95à¥\8bणतà¥\8dयाहà¥\80 à¤«à¤¿à¤\9aरà¥\8dससाठà¥\80 ई-मेल पाठविला जाणार नाही.',
 'noemailprefs' => 'खालील सुविधा कार्यान्वित करण्यासाठी,पसंतीक्रमात ई-मेल पत्ता नमूद करा.',
 'emailconfirmlink' => 'आपला ई-मेल पत्ता निश्चित करा.',
 'invalidemailaddress' => 'तुम्ही दिलेला ई-मेल पत्ता चुकीचा आहे, कारण तो योग्यप्रकारे लिहिलेला नाही. कृपया योग्यप्रकारे ई-मेल पत्ता लिहा अथवा ती जागा मोकळी सोडा.',
@@ -867,7 +867,7 @@ $2',
 'user-mail-no-body' => 'रिकामे किंवा अत्यंत छोटा मजकूर असलेले विपत्र पाठविण्याचा प्रयत्न करण्यात आला',
 
 # Change password dialog
-'resetpass' => 'परवलीचा शब्द बदला',
+'changepassword' => 'परवलीचा शब्द बदला',
 'resetpass_announce' => 'तुम्ही ई-मेल मधून दिलेल्या तात्पुरत्या शब्दांकाने सनोंद प्रवेशित आहात. आपला सनोंद-प्रवेश पूर्ण करण्यासाठी, कृपया येथे नवीन परवलीचा शब्द द्या:',
 'resetpass_text' => '<!-- मजकूर इथे लिहा -->',
 'resetpass_header' => 'खात्याचा परवलीचा शब्द बदला',
@@ -888,7 +888,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'परवलीचा शब्द पूर्ववत करा',
 'passwordreset-text-one' => 'आपला परवलीचा शब्द बदलण्यास हे आवेदन भरा.',
-'passwordreset-text-many' => '{{PLURAL:$1|à¤\86पला à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤ªà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\8dयास à¤\95à¥\8bणताहà¥\80 à¤\8fà¤\95 à¤¤à¥\81à¤\95डा à¤µà¤¾à¤ªरा.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¤\86पला à¤¤à¤¾à¤¤à¥\8dपà¥\81रता à¤ªà¤°à¤µà¤²à¥\80à¤\9aा à¤¶à¤¬à¥\8dद à¤µà¤¿à¤ªà¤¤à¥\8dरामारà¥\8dफत à¤ªà¥\8dरापà¥\8dत à¤\95रणà¥\8dयास à¤\96ालà¥\80ल à¤\95à¥\8dषà¥\87तà¥\8dरातà¥\80ल à¤\8fà¤\96ादà¥\87 à¤­रा.}}',
 'passwordreset-legend' => 'परवलीचा शब्द पूर्ववत करा',
 'passwordreset-disabled' => 'या विकिवर परवलीचा शब्द पुनर्स्थापित करता येत नाही.',
 'passwordreset-emaildisabled' => "या विकिवर विपत्र पाठविणे 'अशक्य' करण्यात आलेले आहे.",
@@ -968,7 +968,7 @@ $2',
 'showdiff' => 'बदल दाखवा',
 'anoneditwarning' => "'''इशारा:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आयपी) नोंदला जाईल.",
 'anonpreviewwarning' => "\"'''सावधान:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आय.पी. ॲड्रेस) नोंदला जाईल.\"",
-'missingsummary' => "'''à¤\86ठवण:''' à¤¤à¥\81मà¥\8dहà¥\80 à¤¸à¤\82पादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤ªà¥\81रवलà¥\87ला à¤¨à¤¾à¤¹à¥\80.à¤\86पण 'à¤\9cतन à¤\95रा' à¤µà¤° à¤ªà¥\81नà¥\8dहा à¤\9fिà¤\9aà¤\95à¥\80 à¤®à¤¾à¤°à¤²à¥\80 à¤¤à¤° à¤¤à¥\87 à¤¤à¥\8dयाशिवाय जतन होईल.",
+'missingsummary' => "'''à¤\86ठवण:''' à¤\86पण à¤¸à¤\82पादन à¤¸à¤¾à¤°à¤¾à¤\82श à¤ªà¥\81रवलà¥\87ला à¤¨à¤¾à¤¹à¥\80.à¤\86पण 'à¤\9cतन à¤\95रा' à¤µà¤° à¤ªà¥\81नà¥\8dहा à¤\9fिà¤\9aà¤\95à¥\80 à¤®à¤¾à¤°à¤²à¥\80 à¤¤à¤°, à¤¤à¥\87 à¤¤à¥\8dयाशिवायà¤\9a जतन होईल.",
 'missingcommenttext' => 'कृपया खाली प्रतिक्रिया भरा.',
 'missingcommentheader' => "'''आठवण:''' आपण या लेखनाकरिता विषय किंवा मथळा दिलेला नाही. आपण पुन्हा \"{{int:savearticle}}\" वर टिचकले तर, तुमचे संपादन त्याशिवायच जतन होईल.",
 'summary-preview' => 'आढाव्याची झलक:',
@@ -1232,10 +1232,6 @@ $3ने ''$2'' कारण दिले आहे.",
 'revisiondelete' => 'आवृत्त्या वगळा/पुनर्स्थापित करा',
 'revdelete-nooldid-title' => 'अवैध लक्ष्य आवृत्ती',
 'revdelete-nooldid-text' => 'आपण एकतर ही कृती करावयासाठीच्या लक्ष्य आवृत्ती(त्त्या) नमूद केल्या नाहीत / दिलेली आवृत्ती अस्तित्वात नाही, किंवा, तुम्ही सध्याची आवृत्ती लपविण्याचा प्रयत्न करीत आहात.',
-'revdelete-nologtype-title' => 'कोणताही क्रमलेखप्रकार दिलेला नाही',
-'revdelete-nologtype-text' => 'ही क्रिया करण्यासाठी तुम्ही क्रमलेखप्रकार  नमूद केला नाही.',
-'revdelete-nologid-title' => 'अवैध क्रमलेख प्रविष्टी',
-'revdelete-nologid-text' => 'तुम्ही हे कार्य होण्यासाठी एकतर लक्ष्य क्रमलेख प्रसंग निवडला नाही किंवा दिलेली प्रविष्टी अस्तित्वात नाही.',
 'revdelete-no-file' => 'नमूद केलेली संचिका अस्तित्वात नाही.',
 'revdelete-show-file-confirm' => 'तुम्ही "<nowiki>$1</nowiki>" या संचिकेची  $2 ला $3 वेळी  वगळलेली आवृत्ती नक्की पहाणार आहात?',
 'revdelete-show-file-submit' => 'होय',
@@ -1246,19 +1242,19 @@ $3ने ''$2'' कारण दिले आहे.",
 अजून इतर  प्रतिबंध घातल्याशिवाय {{SITENAME}}चे इतर प्रबंधक लपविलेला मजकूर याच दुव्याने परतवू शकतील.",
 'revdelete-confirm' => "कृपया '''याची खात्री करा''' की तुम्ही जे करीत आहात, त्याचे परिणाम आपण जाणत आहात आणि, ते काम [[{{MediaWiki:Policy-url}}|मीडियाविकीच्या नीती]]नुसार आहे.",
 'revdelete-suppress-text' => "लपवण्याचा वापर '''फक्त''' पुढील बाबतीत होतो:
-* à¤\85नà¥\81पयà¥\8bà¤\97à¥\80 माहिती
+* à¤\89à¤\9aà¥\8dà¤\9a à¤¦à¤°à¥\8dà¤\9cाà¤\9aà¥\80 à¤¬à¤¦à¤¨à¤¾à¤®à¥\80à¤\95ारà¤\95 माहिती
 * अयोग्य व्यक्तिगत माहिती
-*: ''à¤\97à¥\83हपतà¥\8dतà¥\87, à¤¦à¥\82रधà¥\8dवनà¥\80 à¤\95à¥\8dरमाà¤\82à¤\95 à¤µ à¤¸à¤¾à¤®à¤¾à¤\9cिà¤\95 à¤¸à¥\81रà¤\95à¥\8dषा क्रमांक वगैरे''",
+*: ''à¤\97à¥\83हपतà¥\8dतà¥\87, à¤¦à¥\82रधà¥\8dवनà¥\80 à¤\95à¥\8dरमाà¤\82à¤\95 à¤µ à¤°à¤¾à¤·à¥\8dà¤\9fà¥\8dरà¥\80य à¤\93ळà¤\96 क्रमांक वगैरे''",
 'revdelete-legend' => 'दृश्य बंधने स्थापित करा',
-'revdelete-hide-text' => 'आवर्तीत मजकूर लपवा',
+'revdelete-hide-text' => 'आवर्तीत मजकूर',
 'revdelete-hide-image' => 'संचिका आशय लपवा',
 'revdelete-hide-name' => 'कृती आणि लक्ष्य लपवा',
-'revdelete-hide-comment' => 'सà¤\82पादन à¤¸à¤\82à¤\95à¥\8dषà¥\87प à¤²à¤ªà¤µà¤¾',
-'revdelete-hide-user' => 'संपादकाचे सदस्यनाव/आयपी अंकपत्ता लपवा',
+'revdelete-hide-comment' => 'सà¤\82पादन à¤¤à¤ªà¤¶à¥\80ल',
+'revdelete-hide-user' => 'संपादकाचे सदस्यनाव/आयपी अंकपत्ता',
 'revdelete-hide-restricted' => 'प्रशासकांद्वारेची माहिती दडपा तसेच ईतरांचीही',
 'revdelete-radio-same' => '(कृपया बदलू नये)',
-'revdelete-radio-set' => 'हà¥\8bय',
-'revdelete-radio-unset' => 'नाहà¥\80',
+'revdelete-radio-set' => 'लपविलà¥\87लà¥\87',
+'revdelete-radio-unset' => 'दà¥\83शà¥\8dय',
 'revdelete-suppress' => 'प्रशासकांद्वारेची माहिती दडपा तसेच ईतरांचीही',
 'revdelete-unsuppress' => 'पुर्नस्थापीत आवृत्त्यांवरील बंधने ऊठवा',
 'revdelete-log' => 'कारण:',
@@ -1270,21 +1266,19 @@ $1",
 'logdelete-failure' => "'''नोंदींची दृश्यता स्थापिल्या गेली नाही.'''
 $1",
 'revdel-restore' => 'दृश्यता बदला',
-'revdel-restore-deleted' => 'वगळलेल्या आवृत्त्या',
-'revdel-restore-visible' => 'दृष्य आवृत्त्या',
 'pagehist' => 'पानाचा इतिहास',
 'deletedhist' => 'वगळलेला इतिहास',
 'revdelete-hide-current' => '$1 मधील $2 या वेळचे आवर्तन लपविण्यात त्रूटी : ते सद्य पुनरावर्तन आहे.
 ते लपवता येत नाही.',
-'revdelete-show-no-access' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 दाखवताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
+'revdelete-show-no-access' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ दाखवताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
 तुम्ही तिच्यापर्यंत पोचू शकत नाही.',
-'revdelete-modify-no-access' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 संपादताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
+'revdelete-modify-no-access' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ संपादताना अडचण: ती "प्रतिबंधित" खूण असलेली आहे.
 तुम्ही तिच्यापर्यंत पोचू शकत नाही.',
-'revdelete-modify-missing' => 'वसà¥\8dतà¥\82 क्र. $1 ला संपादताना त्रुटी: ती माहितीकोषात नाही!',
-'revdelete-no-change' => "'''सà¥\82à¤\9aना:''' $2, $1 à¤\9aà¥\8dया à¤µà¤¸à¥\8dतà¥\82ने अगोदरच दृश्यता रुपरेषा मागितल्या आहेत.",
-'revdelete-concurrent-change' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 à¤¸à¤\82पादताना à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤¤à¤¿à¤²à¤¾ à¤¸à¤\82पादताना à¤¦à¥\81सऱà¥\8dया à¤µà¥\8dयà¤\95à¥\8dतिनà¥\87 à¤µà¤¸à¥\8dतà¥\82स à¤¸à¤\82पादले असावे.
+'revdelete-modify-missing' => 'बाब क्र. $1 ला संपादताना त्रुटी: ती माहितीकोषात नाही!',
+'revdelete-no-change' => "'''सà¥\82à¤\9aना:''' $2, $1 à¤\9aà¥\8dया à¤¬à¤¾à¤¬à¥\80ने अगोदरच दृश्यता रुपरेषा मागितल्या आहेत.",
+'revdelete-concurrent-change' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ à¤¸à¤\82पादताना à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤¤à¤¿à¤²à¤¾ à¤¸à¤\82पादताना à¤¦à¥\81सऱà¥\8dया à¤µà¥\8dयà¤\95à¥\8dतिनà¥\87  à¤¬à¤¾à¤¬à¥\80स à¤¸à¤\82पादिले असावे.
 कृपया याद्या तपासा.',
-'revdelete-only-restricted' => '$2, $1 à¤\9aà¥\80 à¤µà¤¸à¥\8dतà¥\82 à¤²à¤ªà¤µà¤¤à¤¾à¤¨à¤¾ à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤\87तर à¤¦à¥\83शà¥\8dयता à¤ªà¤°à¥\8dयायाà¤\82ना à¤¨à¤¿à¤µà¤¡à¤²à¥\8dयाशिवाय à¤ªà¥\8dरà¤\9aालà¤\95ाà¤\82पासà¥\82न à¤µà¤¸à¥\8dतà¥\82 लपवू शकत नाही.',
+'revdelete-only-restricted' => '$2, $1 à¤\9aà¥\80 à¤¬à¤¾à¤¬ à¤²à¤ªà¤µà¤¤à¤¾à¤¨à¤¾ à¤\9aà¥\82à¤\95: à¤¤à¥\81मà¥\8dहà¥\80 à¤\87तर à¤¦à¥\83शà¥\8dयता à¤ªà¤°à¥\8dयायाà¤\82ना à¤¨à¤¿à¤µà¤¡à¤²à¥\8dयाशिवाय à¤ªà¥\8dरà¤\9aालà¤\95ाà¤\82पासà¥\82न à¤¬à¤¾à¤¬ लपवू शकत नाही.',
 'revdelete-reason-dropdown' => '* वगळण्याची सामान्य कारणे
 ** प्रताधिकार उल्लंघन
 ** अयोग्य टिप्पणी किंवा व्यक्तिगत माहिती
@@ -1346,12 +1340,8 @@ $1",
 # Search results
 'searchresults' => 'शोध निकाल',
 'searchresults-title' => '"$1" साठीचे शोध निकाल',
-'searchresulttext' => '{{SITENAME}} वरील माहिती कशी शोधावी, याच्या माहितीकरता पहा - [[{{MediaWiki:Helppage}}|{{SITENAME}} वर शोध कसा घ्यावा]].',
-'searchsubtitle' => 'तुम्ही \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" ने सुरू होणारी सर्व पाने]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ला जोडणारी सर्व पाने]]) याचा शोध घेत आहात.',
-'searchsubtitleinvalid' => "तुम्ही '''$1''' या शब्दाचा शोध घेत आहात.",
 'toomanymatches' => 'खूप एकसारखी उत्तरे मिळाली, कृपया पृच्छा वेगळ्या तऱ्हेने करून पहा',
 'titlematches' => 'पानाचे शीर्षक जुळते',
-'notitlematches' => 'कोणत्याही पानाचे शीर्षक जुळत नाही',
 'textmatches' => 'पानातील मजकूर जुळतो',
 'notextmatches' => 'कोणत्याही पानातील मजकुराशी जुळत नाही',
 'prevn' => 'मागील {{PLURAL:$1|$1}}',
@@ -1360,13 +1350,11 @@ $1",
 'nextn-title' => 'पुढील $1 {{PLURAL:$1|निकाल}}',
 'shown-title' => '$1 {{PLURAL:$1|निकाल}} प्रतिपान पहा',
 'viewprevnext' => 'पहा ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'विकल्प शोधा',
 'searchmenu-exists' => "'''या विकिवर \"[[:\$1]]\" या नावाचे पान आहे.'''",
 'searchmenu-new' => "'''या विकिवर \"[[:\$1]]\" हे पान तयार करा!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|या उपसर्गानिशी असलेली पाने न्याहाळा]]',
 'searchprofile-articles' => 'आशय-पाने',
 'searchprofile-project' => 'साहाय्य व प्रकल्प पाने',
-'searchprofile-images' => 'मलà¥\8dà¤\9fिमà¥\80डिया',
+'searchprofile-images' => 'बहà¥\81माधà¥\8dयमà¥\87',
 'searchprofile-everything' => 'सगळे',
 'searchprofile-advanced' => 'प्रगत',
 'searchprofile-articles-tooltip' => '$1 मध्ये शोधा',
@@ -1376,28 +1364,24 @@ $1",
 'searchprofile-advanced-tooltip' => 'निवडलेल्या नामविश्वांमध्ये शोधा:',
 'search-result-size' => '$1 ({{PLURAL:$2|१ शब्द|$2 शब्द}})',
 'search-result-category-size' => '{{PLURAL:$1|१ सदस्य|$1 सदस्य}} ({{PLURAL:$2|१ उपवर्ग|$2 उपवर्ग}}, {{PLURAL:$3|1 संचिका|$3 संचिका}})',
-'search-result-score' => 'à¤\9cà¥\81ळणà¥\80: $1%',
+'search-result-score' => 'à¤\85नà¥\8dवरà¥\8dथà¤\95ता: $1%',
 'search-redirect' => '(पुनर्निर्देशन $1)',
 'search-section' => '(विभाग $1)',
 'search-suggest' => 'तुम्हाला हेच म्हणायचे का: $1',
-'search-interwiki-caption' => 'à¤\87तर प्रकल्प',
+'search-interwiki-caption' => 'सह प्रकल्प',
 'search-interwiki-default' => '$1चे निकाल:',
 'search-interwiki-more' => '(आणखी)',
 'search-relatedarticle' => 'जवळील',
-'mwsuggest-disable' => 'शोध सुचवणी रद्द करा',
 'searcheverything-enable' => 'सर्वनामविश्वांमध्ये शोधा:',
 'searchrelated' => 'संबंधित',
 'searchall' => 'सर्व',
 'showingresults' => "#'''$2'''पासून {{PLURAL:$1|'''1'''पर्यंतचा निकाल|'''$1'''पर्यंतचे निकाल}} खाली दाखवले आहे.",
 'showingresultsnum' => "खाली दिलेले #'''$2'''पासून सुरू होणारे  {{PLURAL:$3|'''1''' निकाल|'''$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' => 'काहीही नाही',
@@ -1406,10 +1390,9 @@ $1",
 'search-error' => 'शोध घेतांना घडलेली त्रूटी:$1',
 
 # Preferences page
-'preferences' => 'माà¤\9dà¥\8dया à¤ªà¤¸à¤\82तà¥\80',
+'preferences' => 'पसà¤\82तà¥\80à¤\95à¥\8dरम',
 'mypreferences' => 'पसंतीक्रम',
 'prefs-edits' => 'संपादनांची संख्या:',
-'changepassword' => 'परवलीचा शब्द बदला',
 'prefs-skin' => 'त्वचा',
 'skin-preview' => 'झलक',
 'datedefault' => 'प्राथमिकता नाही',
@@ -1419,39 +1402,36 @@ $1",
 'prefs-user-pages' => 'सदस्य पान',
 'prefs-personal' => 'सदस्य व्यक्तिरेखा',
 'prefs-rc' => 'अलीकडील बदल',
-'prefs-watchlist' => 'नितà¥\8dय à¤ªà¤¹à¤¾à¤£à¥\8dयाà¤\9aà¥\80 सूची',
-'prefs-watchlist-days' => 'पहाऱà¥\8dयाà¤\9aà¥\8dया सूचीमध्ये दिसणाऱ्या दिवसांची संख्या:',
+'prefs-watchlist' => 'निरà¥\80à¤\95à¥\8dषणसूची',
+'prefs-watchlist-days' => 'निरà¥\80à¤\95à¥\8dषणसूचीमध्ये दिसणाऱ्या दिवसांची संख्या:',
 'prefs-watchlist-days-max' => 'जास्तीत जास्त $1 {{PLURAL:$1|दिवस|दिवस}}',
-'prefs-watchlist-edits' => 'वाढà¥\80व à¤ªà¤¹à¤¾à¤±à¥\8dयाà¤\9aà¥\8dया सूचीमध्ये दिसणाऱ्या संपादनांची संख्या:',
+'prefs-watchlist-edits' => 'वाढà¥\80व à¤¨à¤¿à¤°à¥\80à¤\95à¥\8dषणसूचीमध्ये दिसणाऱ्या संपादनांची संख्या:',
 'prefs-watchlist-edits-max' => 'अधिकतम अंक:  १०००.',
-'prefs-watchlist-token' => 'पहाऱà¥\8dयाà¤\9aà¥\8dया सूचीचा बिल्ला:',
-'prefs-misc' => 'à¤\87तर',
+'prefs-watchlist-token' => 'निरà¥\80à¤\95à¥\8dषणसूचीचा बिल्ला:',
+'prefs-misc' => 'à¤\95िरà¤\95à¥\8bळ',
 'prefs-resetpass' => 'परवलीचा शब्द बदला.',
 'prefs-changeemail' => 'विपत्रपत्ता बदला',
 'prefs-setemail' => 'तुमचा ई-मेल पत्ता लिहा.',
 'prefs-email' => 'विपत्र पर्याय',
 'prefs-rendering' => 'देखावा',
 'saveprefs' => 'जतन करा',
-'resetprefs' => 'न जतन केलेले बदल रद्द करा',
 'restoreprefs' => 'सर्व डिफॉल्ट मांडणी पूर्ववत करा (सर्व विभागात)',
 'prefs-editing' => 'संपादन',
 'rows' => 'ओळी:',
 'columns' => 'स्तंभ:',
 'searchresultshead' => 'शोध',
-'resultsperpage' => 'प्रति पान धडका:',
 'stub-threshold' => '<a href="#" class="stub">अंकुरीत दुव्यांच्या</a> रचनेची नांदी (बाईट्स):',
 'stub-threshold-disabled' => 'अक्षम केले',
 'recentchangesdays' => 'अलीकडील बदल मधील दाखवावयाचे दिवस:',
-'recentchangesdays-max' => 'जास्तीतजास्त $1 {{PLURAL:$1|दिवस|दिवस}}',
-'recentchangescount' => 'à¤\85लà¥\80à¤\95डà¥\80ल à¤¬à¤¦à¤², à¤\87तिहास à¤µ à¤¨à¥\8bà¤\82द à¤ªà¤¾à¤¨à¤¾à¤\82मधà¥\8dयà¥\87 à¤¦à¤¾à¤\96वायाच्या संपादनांची संख्या:',
-'prefs-help-recentchangescount' => 'यात à¤¨à¥\81à¤\95तà¥\87à¤\9a à¤\9dालà¥\87लà¥\87 à¤¬à¤¦à¤², à¤ªà¤¾à¤¨à¤¾à¤\82à¤\9aà¥\87 à¤\87तिहास à¤µ à¤¯à¤¾à¤¦à¥\8dया या गोष्टी असतात.',
+'recentchangesdays-max' => 'जास्तीतजास्त $1 {{PLURAL:$1|दिवस}}',
+'recentchangescount' => 'à¤\85विà¤\9aलरितà¥\8dया à¤¦à¤¾à¤\96वावयाच्या संपादनांची संख्या:',
+'prefs-help-recentchangescount' => 'यात à¤¨à¥\81à¤\95तà¥\87à¤\9a à¤\9dालà¥\87लà¥\87 à¤¬à¤¦à¤², à¤ªà¤¾à¤¨à¤¾à¤\82à¤\9aà¥\87 à¤\87तिहास à¤µ à¤¨à¥\8bà¤\82दà¥\80 या गोष्टी असतात.',
 'prefs-help-watchlist-token2' => "ही आपल्या निरिक्षणसूचीच्या 'वेब फिड'ची गुप्त चाबी आहे.ज्या कोणास त्याची माहिती होईल तो आपली निरिक्षणसूची बघू शकेल,म्हणुन कोणास यात सहभागी करून घेउ नका.[[Special:ResetTokens|पुनर्स्थापनाची आपणास गरज असल्यास येथे टिचकी द्या]].",
 'savedprefs' => 'तुमच्या पसंती जतन केल्या आहेत.',
 'timezonelegend' => 'वेळक्षेत्र',
 'localtime' => 'स्थानिक वेळ:',
 'timezoneuseserverdefault' => 'सर्व्हर मूलस्थिती वापरा ($1)',
 'timezoneuseoffset' => 'इतर (वेळेतील अंतर लिहा)',
-'timezoneoffset' => 'समासफरक¹:',
 'servertime' => 'विदागारदात्याची वेळ',
 'guesstimezone' => 'विचरकातून भरा',
 'timezoneregion-africa' => 'आफ्रिका',
@@ -1473,7 +1453,7 @@ $1",
 'prefs-custom-css' => 'सीएसएस पद्धत बदला',
 'prefs-custom-js' => 'जावास्क्रिप्ट पद्धत बदला',
 'prefs-common-css-js' => 'मिळून वापरलेले सर्व त्वचांसाठींचे सीएसएस / जावास्क्रिप्ट:',
-'prefs-reset-intro' => 'à¤\86पन à¤¦à¥\8dदà¥\80लà¥\87लà¥\87 à¤¸à¤°à¥\8dव à¤ªà¥\8dरà¥\80फà¥\8dरà¥\8dनà¥\8dसà¥\87सà¥\8d à¤µà¤ªà¤°à¥\8dनà¥\8dयासथि à¤¤à¥\81मà¥\8dहà¥\80 à¤¹à¥\87 à¤ªà¥\87à¤\9cà¥\8d à¤µà¤¾à¤ªरू शकता.',
+'prefs-reset-intro' => 'à¤\86पण à¤¯à¤¾ à¤ªà¤¾à¤¨à¤¾à¤\9aा à¤µà¤¾à¤ªà¤°, à¤¯à¤¾ à¤¸à¤\82à¤\95à¥\87तसà¥\8dथळà¤\9aà¥\8dया à¤\85विà¤\9aलनà¥\81सार, à¤\86पला à¤ªà¤¸à¤\82तà¥\80à¤\95à¥\8dरम à¤ªà¥\81नरà¥\8dसà¥\8dथापनà¥\87साठà¥\80 à¤\95रू शकता.',
 'prefs-emailconfirm-label' => 'विपत्र निश्चितीकरण:',
 'youremail' => 'विपत्र:',
 'username' => '{{GENDER:$1|सदस्यनाम}}:',
@@ -1502,7 +1482,7 @@ $1",
 'prefs-info' => 'मूलभूत माहिती',
 'prefs-i18n' => 'आंतरराष्ट्रीयीकरण',
 'prefs-signature' => 'स्वाक्षरी',
-'prefs-dateformat' => 'तारà¥\80à¤\96 à¤°à¤\9aना',
+'prefs-dateformat' => 'दिनाà¤\82à¤\95 à¤ªà¥\8dरारà¥\81पण',
 'prefs-timeoffset' => 'वेळ बरोबरी',
 'prefs-advancedediting' => 'सर्वसामान्य पर्याय',
 'prefs-editor' => 'संपादक',
@@ -1589,7 +1569,7 @@ $1",
 'right-upload_by_url' => 'एखाद्या URL वरील संचिकेचे अपभारण करा',
 'right-purge' => 'एखाद्या पानाची सय रिकामी करा',
 'right-autoconfirmed' => 'आयपी आधारित दर-मर्यादेचा प्रभाव पडु देऊ नका.',
-'right-bot' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\95ारà¥\8dयाप्रमाणे वागणूक मिळवा',
+'right-bot' => 'सà¥\8dवयà¤\82à¤\9aलित à¤ªà¥\8dरणालà¥\80प्रमाणे वागणूक मिळवा',
 'right-nominornewtalk' => 'चर्चा पृष्ठावर छोटी संपादने जी नवीन चर्चा दर्शवितात ती नकोत',
 'right-apihighlimits' => 'API पृच्छांमध्ये उच्चतर मर्यादा वापरा',
 'right-writeapi' => 'लेखन एपीआय चा उपयोग',
@@ -1612,7 +1592,7 @@ $1",
 'right-protect' => 'सुरक्षा पातळी बदलवा व निपात-प्रतिबंधित पानांचे संपादन करा',
 'right-editprotected' => ' "{{int:protect-level-sysop}}"म्हणून नमुद केलेली सुरक्षित पाने संपादा',
 'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" म्हणून नमुद केलेली सुरक्षित पाने संपादा',
-'right-editinterface' => 'सदस्य पसंती बदला',
+'right-editinterface' => 'सदस्य पसंतीक्रम बदला',
 'right-editusercssjs' => 'इतर सदस्यांच्या CSS व JS संचिका संपादित करा',
 'right-editusercss' => 'इतर सदस्यांच्या CSS संचिका संपादित करा',
 'right-edituserjs' => 'इतर सदस्यांच्या JS संचिका संपादित करा',
@@ -1702,13 +1682,15 @@ $1",
 'recentchanges-label-minor' => 'हे एक किरकोळ संपादन आहे',
 'recentchanges-label-bot' => 'हे संपादन एका सांगकाम्याकडून केले गेले आहे',
 'recentchanges-label-unpatrolled' => 'हे संपादन अजून तपासल्या गेले नाही',
-'recentchanges-legend-newpage' => '$1 - नवीन पान',
-'rcnote' => "खाली $4, $5 पर्यंतचे गेल्या {{PLURAL:$2|'''१''' दिवसातील|'''$2''' दिवसांतील}} {{PLURAL:$1|शेवटचा '''1''' बदल|शेवटचे '''$1''' बदल}} दिलेले आहेत.",
+'recentchanges-label-plusminus' => 'या पानाचा आकार इतक्या बाइट्स ने बदलला',
+'recentchanges-legend-heading' => "'''विवरण:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|नविन पानांची यादी]] हेही पाहा)',
+'recentchanges-legend-plusminus' => "(''±१२३'')",
 'rcnotefrom' => "खाली <b>$2</b> पासूनचे ('''$1''' पर्यंत) बदल दाखविले आहेत.",
 'rclistfrom' => '$1 नंतर केले गेलेले बदल दाखवा.',
 'rcshowhideminor' => 'छोटे बदल $1',
 'rcshowhidebots' => 'सांगकामे(बॉट्स) $1',
-'rcshowhideliu' => 'सनोंद प्रवेशित सदस्य $1',
+'rcshowhideliu' => '$1नोंदणीकृत सदस्य',
 'rcshowhideanons' => 'अनामिक सदस्य $1',
 'rcshowhidepatr' => '$1 पहारा असलेली संपादने',
 'rcshowhidemine' => 'माझे बदल $1',
@@ -1741,7 +1723,7 @@ $1",
 
 # Upload
 'upload' => 'संचिका चढवा',
-'uploadbtn' => 'सà¤\82à¤\9aिà¤\95ा à¤\9aढवा',
+'uploadbtn' => 'सà¤\82à¤\9aिà¤\95à¥\87à¤\9aà¥\87 à¤\85पभारण à¤\95रा',
 'reuploaddesc' => 'अपभारण रद्द करुन ,अपभारणाच्या अर्जाकडे परत जा',
 'upload-tryagain' => 'बदललेले संचिका वर्णन पाठवा',
 'uploadnologin' => 'सनोंद-प्रवेशित नाही',
@@ -1788,14 +1770,14 @@ $1",
 'filename-tooshort' => 'संचिकानाम खूपच छोटे आहे',
 'filetype-banned' => 'याप्रकारची संचिका प्रतिबंधित आहे.',
 'verification-error' => 'संचिका पडताळणीत ही संचिका अनुत्तीर्ण झाली.',
-'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिणारà¥\87 à¤¸à¤\82पादन à¤¬à¤¾à¤¹à¥\8dय à¤¹à¥\81à¤\95 à¤¦à¥\8dवारà¥\87 à¤¥ंबवण्यात आले.',
+'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिणारà¥\87 à¤¬à¤¦à¤² à¤µà¤¿à¤¸à¥\8dतारà¤\95ादà¥\8dवारà¥\87 à¤¥à¤¾ंबवण्यात आले.',
 'illegal-filename' => 'या संचिकानामास परवानगी नाही.',
 'overwrite' => 'अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.',
 'unknown-error' => 'एक अज्ञात चूक उद्भवली.',
 'tmp-create-error' => 'तात्पुरती संचिका बनवता आली नाही.',
 'tmp-write-error' => 'तात्पुरती संचिका लिहीतांना चूकी',
 'large-file' => 'संचिका $1 पेक्षा कमी आकाराची असण्याची अपेक्षा आहे, ही संचिका $2 एवढी आहे.',
-'largefileserver' => 'सेवा संगणकावर (सर्वर) निर्धारित केलेल्या आकारापेक्षा या संचिकेचा आकार मोठा आहे.',
+'largefileserver' => 'सà¥\87वा à¤¸à¤\82à¤\97णà¤\95ावर (सरà¥\8dवà¥\8dहर) à¤¨à¤¿à¤°à¥\8dधारित à¤\95à¥\87लà¥\87लà¥\8dया à¤\86à¤\95ारापà¥\87à¤\95à¥\8dषा à¤¯à¤¾ à¤¸à¤\82à¤\9aिà¤\95à¥\87à¤\9aा à¤\86à¤\95ार à¤®à¥\8bठा à¤\86हà¥\87.',
 'emptyfile' => 'चढवलेली संचिका रिकामी आहे.असे संचिकानाम चुकीचे लिहिल्याने होउ शकते. कृपया तुम्हाला हीच संचिका चढवायची आहे का ते तपासा.',
 'windows-nonascii-filename' => 'या विकिवर विशेष वर्ण असलेल्या संचिकानामाचा आधार घेता येणार नाही.',
 'fileexists' => 'या नावाची संचिका आधीच अस्तित्वात आहे, कृपया ही संचिका बदलण्याबद्दल तुम्ही साशंक असाल तर <strong>[[:$1]]</strong> तपासा.
@@ -1810,8 +1792,8 @@ $1",
 कृपया <strong>[[:$1]]</strong> ही संचिका तपासा.
 जर तपासलेली संचिका ही याच आकाराची असेल तर नवीन प्रतिकृती चढविण्याची गरज नाही.",
 'file-thumbnail-no' => 'या संचिकेचे नाव <strong>$1</strong> पासून सुरू होत आहे. ही कदाचित झलक असू शकते.
-जर तुमच्या कडे पूर्ण रिझोल्यूशनची संचिका असेल तर चढवा अथवा संचिकेचे नाव बदला.',
-'fileexists-forbidden' => 'या à¤¨à¤¾à¤µà¤¾à¤\9aà¥\80 à¤¸à¤\82à¤\9aिà¤\95ा à¤\85à¤\97à¥\8bदरà¤\9a à¤\85सà¥\8dतितà¥\8dतà¥\8dवात à¤\86हà¥\87; à¤\95à¥\83पया à¤ªà¥\81नà¥\8dहा à¤®à¤¾à¤\97à¥\87 जाऊन ही संचिका नवीन नावाने चढवा.
+जर तुमच्याकडे पूर्ण रिझोल्यूशनची संचिका असेल तर चढवा अथवा संचिकेचे नाव बदला.',
+'fileexists-forbidden' => 'या à¤¨à¤¾à¤µà¤¾à¤\9aà¥\80 à¤¸à¤\82à¤\9aिà¤\95ा à¤\85à¤\97à¥\8bदरà¤\9a à¤\85सà¥\8dतितà¥\8dतà¥\8dवात à¤\86हà¥\87; à¤\95à¥\83पया à¤ªà¥\81नà¥\8dहा à¤ªà¤°à¤¤ जाऊन ही संचिका नवीन नावाने चढवा.
 [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'हे नाव असलेली एक संचिका शेअर्ड संचिका कोशात आधी पासून आहे; कृपया परत मागे जा आणि नवीन, वेगळ्या नावाने ही संचिका पुन्हा चढवा. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'ही संचिका खालील {{PLURAL:$1|संचिकेची|संचिकांची}} प्रत आहे:',
@@ -1830,8 +1812,7 @@ $1",
 कृपया file_uploads मांडणी (setting) तपासावी.',
 'uploadscripted' => 'या संचिकेत HTML किंवा स्क्रिप्ट कोडचा आंतर्भाव आहे, त्याचा एखाद्या विचरकाकडून विचित्र अर्थ लावला जाऊ शकतो.',
 'uploadvirus' => 'ह्या संचिकेत व्हायरस आहे. अधिक माहिती: $1',
-'uploadjava' => 'ही फाईल झीप् ह्या प्रकारातील आहे ज्यामधे जाव्हा .क्लास फाईल. आहे,
- जाव्हा फाईल  ह्यात वापर्ता  येनार नाहीत ,कारन इथे सुरक्षेचे कारने येतात्',
+'uploadjava' => 'ही फाईल झीप ह्या प्रकारातील आहे ज्यामधे जावा .क्लास फाईल. आहे,जावा फाईलचे अपभारणास परवानगी नाही कारण त्याने सुरक्षा-बंधने टाळल्या जाऊ शकतात.',
 'upload-source' => 'स्रोत संचिका',
 'sourcefilename' => 'स्रोत-संचिकानाम:',
 'sourceurl' => 'स्रोत युआरएल',
@@ -1842,8 +1823,8 @@ $1",
 'watchthisupload' => 'या पानावर बदलांसाठी लक्ष ठेवा.',
 'filewasdeleted' => 'या नावाची संचिका या पूर्वी एकदा चढवून नंतर वगळली होती.तुम्ही ती पुन्हा चढवण्या अगोदर $1 तपासा.',
 'filename-bad-prefix' => "तुम्ही चढवत असलेल्या संचिकेचे नाव '''\"\$1\"''' पासून सुरू होते, जे की अंकीय छाउ (कॅमेरा) ने दिलेले अवर्णनात्मक नाव आहे.कृपया तुमच्या संचिकेकरिता अधिक वर्णनात्मक नाव निवडा.",
-'upload-success-subj' => 'यशसà¥\8dवà¥\80रà¥\80तà¥\8dया à¤\9aढवले',
-'upload-success-msg' => 'तुमचे [$2] येथून्ब चढवणे यशस्वी ठरले. ते येथे उपलब्ध आहे: [[:{{ns:file}}:$1]]',
+'upload-success-subj' => 'यशसà¥\8dवà¥\80रà¥\80तà¥\8dया à¤\85पभारित à¤\95à¥\87ले',
+'upload-success-msg' => 'तुमचे [$2] येथून अपभारण यशस्वी ठरले. ते येथे उपलब्ध आहे: [[:{{ns:file}}:$1]]',
 'upload-failure-subj' => 'चढवण्यातील त्रूटि:',
 'upload-failure-msg' => '[$2] येथून तुमच्या चढवण्यात चूक झाली:
 
@@ -1866,7 +1847,7 @@ $1',
 'backend-fail-stream' => '$1 या संचिकेचा स्त्रोत शोधता आला नाही.',
 'backend-fail-backup' => '$1 या संचिकेची आधारप्रत बनविता आली नाही.',
 'backend-fail-notexists' => '$1 ही संचिका अस्तित्वात नाही.',
-'backend-fail-hashes' => 'तà¥\81लना à¤\95रणà¥\8dयासाठà¥\80 à¤«à¤¾à¤\87ल à¤¹à¤¾शेस मिळाले नाही',
+'backend-fail-hashes' => 'तà¥\81लना à¤\95रणà¥\8dयासाठà¥\80 à¤«à¤¾à¤\87ल à¤¹à¥\85शेस मिळाले नाही',
 'backend-fail-notsame' => ' $1 येथे यापेक्षा विभिन्न असलेली संचिका पूर्वीच विद्यमान आहे',
 'backend-fail-invalidpath' => '$1 हा वैध संग्राहक-पथ नाही.',
 'backend-fail-delete' => '$1 ही संचिका (फाईल) बनवता आली नाही.',
@@ -1880,13 +1861,13 @@ $1',
 'backend-fail-closetemp' => 'तात्पुरती संचिका बंद करणे जमले नाही.',
 'backend-fail-read' => '$1 ही संचिका वाचता आली नाही.',
 'backend-fail-create' => '$1 ही संचिका लिहिता आली नाही.',
-'backend-fail-maxsize' => '$1 ही संचिका लिहिता आली नाही कारण ती {{PLURAL:$2|one byte|$2 bytes}} पेक्षा मोठी आहे.',
+'backend-fail-maxsize' => '$1 ही संचिका लिहिता आली नाही कारण ती {{PLURAL:$2|एक बाइट|$2 बाइट्स}} पेक्षा मोठी आहे.',
 'backend-fail-readonly' => 'पार्श्वभौमीक साठवण "$1" “फक्त वाचा” असे आहे. दिलेले कारण "$2" आहे.',
 'backend-fail-synced' => 'अंतर्गत पार्श्वभौमीक साठवणीतील फाईल "$1" विसंगत आहे.',
 'backend-fail-connect' => 'पार्श्वभौमीक साठा "$1"शी संबंध जोडू शकत नाही.',
 'backend-fail-internal' => 'पार्श्वभौमीक साठा "$1" यात अज्ञात चूक झाली आहे.',
 'backend-fail-contenttype' => '"$1" मध्ये ठेवलेल्या फाईलचा महितीचा प्रकार कळत नाही',
-'backend-fail-batchsize' => 'पार्श्वभौमीक साठयातील बॅच $1 फाईल{{PLURAL:$1|operation|operations}}; मधे मर्यादित कस्त $२ {{PLURAL:$2|operation|operations}} असू शकते',
+'backend-fail-batchsize' => 'पार्श्वभौमीक साठयातील बॅच $1 फाईल{{PLURAL:$1|क्रियेत|क्रियांमध्ये}}; मर्यादित कस्त $२ {{PLURAL:$2|क्रिया}} असू शकते',
 'backend-fail-usable' => 'अपुऱ्या परवानगीमुळे किंवा निर्देशिकेच्या/धारिकेच्या(डिरेक्टरीज/कंटेनर्स) अभावामुळे "$1" संचिका वाचु अथवा लिहू शकत नाही.',
 
 # File journal errors
@@ -1900,7 +1881,7 @@ $1',
 'lockmanager-fail-acquirelock' => '"$1" साठी लॉक फाइल मिळवू शकत नाही',
 'lockmanager-fail-openlock' => '"$1" साठी लॉक फाइल उघडू शकत नाही',
 'lockmanager-fail-releaselock' => '"$1" साठी लॉक उघडू शकत नाही',
-'lockmanager-fail-db-bucket' => '$1 à¤¬à¤¾à¤¸à¥\8dà¤\95à¥\87à¤\9f à¤®à¤§à¥\80ल à¤\95à¥\81लà¥\82प à¤¬à¤\82द à¤¡à¥\87à¤\9fाबà¥\87सशà¥\80 à¤ªà¥\81रà¥\87सा à¤¸à¤\82परà¥\8dà¤\95 à¤¹à¥\8bवà¥\82 à¤¶à¤\95त à¤¨à¤¾à¤¹à¥\80',
+'lockmanager-fail-db-bucket' => '$1 à¤¬à¤\95à¥\87à¤\9f à¤®à¤§à¥\80ल à¤\95à¥\81लà¥\82प à¤¬à¤\82द à¤¡à¥\87à¤\9fाबà¥\87सशà¥\80 à¤ªà¥\81रà¥\87सा à¤¸à¤\82परà¥\8dà¤\95 à¤¹à¥\8bवà¥\82 à¤¶à¤\95त à¤¨à¤¾à¤¹à¥\80.',
 'lockmanager-fail-db-release' => '"$1" डाटाबेस वरील लॉक उघडू शकत नाही',
 'lockmanager-fail-svr-acquire' => 'सर्व्हर "$1" वरील कुलूप उघडू शकत नाही',
 'lockmanager-fail-svr-release' => 'सर्व्हर "$1" वरील् लॉक उघडू शकत नाही',
@@ -1910,21 +1891,21 @@ $1',
 'zip-wrong-format' => 'ही संचिका "झिप" प्रकारची नाही.',
 'zip-bad' => 'ही संचिका दूषित किंवा न वाचता येणारी झिप संचिका आहे.
 ती सुरक्षिततेसाठी नीट तपासता आली नाही.',
-'zip-unsupported' => 'हि à¤¸à¤\82à¤\9aिà¤\95ा à¤\8fà¤\95 ZIP à¤¸à¤\82à¤\9aिà¤\95ा à¤\86हà¥\87 à¤\9cà¥\80 à¤®à¤¿à¤¡à¥\80याविà¤\95à¥\80 à¤¦à¥\8dवरे  (support) न केलेले ZIP वैशिष्ट्ये (features) वापरते.
-या संचिकेची सुरक्षा पडताळणीसाठी व्यवस्थितरीत्या होऊ शकत नाही.',
+'zip-unsupported' => 'हà¥\80 à¤¸à¤\82à¤\9aिà¤\95ा à¤\8fà¤\95 ZIP à¤¸à¤\82à¤\9aिà¤\95ा à¤\86हà¥\87 à¤\9cà¥\80 à¤®à¤¿à¤¡à¥\80याविà¤\95à¥\80 à¤¦à¥\8dवारे  (support) न केलेले ZIP वैशिष्ट्ये (features) वापरते.
+या संचिकेची सुरक्षा पडताळणी व्यवस्थितरीत्या होऊ शकत नाही.',
 
 # Special:UploadStash
 'uploadstash' => 'चढवणे लपवा',
 'uploadstash-summary' => 'या पानावर अश्या संचिका पहावयास् मिळतात ज्या चढवल्या आहेत (अथवा चढवल्या जात आहेत) परंतु अजून विकी वर प्रकाशित केल्या नाहित. या संचिका फक्त त्या सदस्यास् दिसतील ज्याने त्या चढवल्या आहेत, इतर सदस्यांस् त्या दिसणार नाहीत.',
 'uploadstash-clear' => 'लपवलेल्या संचिका काढा',
 'uploadstash-nofiles' => 'तुमच्याकडे लपवलेल्या संचिका नाहीत.',
-'uploadstash-badtoken' => 'हि कृती अयशस्वी होती. कदाचित आपल्या संपादन अधिकारपत्राची (editing credentials) मुदत संपली.',
+'uploadstash-badtoken' => 'हà¥\80 कृती अयशस्वी होती. कदाचित आपल्या संपादन अधिकारपत्राची (editing credentials) मुदत संपली.',
 'uploadstash-errclear' => 'संचिका स्वच्छ करणे अयशस्वी.',
 'uploadstash-refresh' => 'संचिकांची यादी ताजीतवानी करा',
 'invalid-chunk-offset' => 'अग्राह्य चंक ऑफसेट',
 
 # img_auth script messages
-'img-auth-accessdenied' => 'परवानà¤\97à¥\80 à¤¨à¤¾à¤¹à¥\80',
+'img-auth-accessdenied' => 'पà¥\8bहà¥\8bà¤\9a à¤¨à¤¾à¤\95ारलà¥\8dया à¤\97à¥\87लà¥\80.',
 'img-auth-nopathinfo' => 'मार्ग माहिती आढळली नाही.
 आपला सर्व्हर ही माहिती पोचवू शकत नाही.
 तो सीजीआय-आधारित व इमेज_ऑथला समर्थन न देऊ शकणारा असू शकतो.
@@ -1937,8 +1918,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization कृपया हे
 फक्त संचिका वापरण्याची परवानगी आहे.',
 'img-auth-streaming' => 'स्ट्रीमिंग "$1".',
 'img-auth-public' => 'img_auth.php हे  वैयक्तिक विकीमधून  माहिती प्रदान करण्याचे कार्य करते.
-हा विकि सार्वजनिक विकि म्हणून सब्चित करण्यात आला आ.े.
-à¤\89à¤\9aित à¤¸à¥\81रà¤\95à¥\8dषा à¤\95à¥\87 à¤²à¤¿à¤\8f img_auth.php à¤\95à¥\8b à¤¨à¤¿à¤·à¥\8dà¤\95à¥\83य à¤\95िया à¤¹à¥\81à¤\86 à¤¹à¥\88।',
+हा विकि सार्वजनिक विकि म्हणून सब्चित करण्यात आला आे.
+à¤\95िमान à¤¸à¥\81रà¤\95à¥\8dषà¥\87साठà¥\80 img_auth.php à¤²à¤¾ à¤\85à¤\95à¥\8dषम à¤\95à¥\87लà¥\87 à¤\86हà¥\87.',
 'img-auth-noread' => 'तुम्हाला "$1" वाचण्याची परवानगी नाही',
 'img-auth-bad-query-string' => 'या दुव्यामध्ये (URL) अवैध query string आहे.',
 
@@ -1969,7 +1950,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization कृपया हे
 'listfiles_search_for' => 'चित्र नावाने शोध:',
 'imgfile' => 'संचिका',
 'listfiles' => 'चित्र यादी',
-'listfiles_thumb' => 'पà¥\8dरारà¥\81प',
+'listfiles_thumb' => 'नà¤\96à¥\81लà¥\87',
 'listfiles_date' => 'दिनांक',
 'listfiles_name' => 'नाव',
 'listfiles_user' => 'सदस्य',
@@ -1992,7 +1973,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization कृपया हे
 'filehist-datetime' => 'दिनांक/वेळ',
 'filehist-thumb' => 'नखुले',
 'filehist-thumbtext' => '$1 च्या आवृत्तीचे नखुले',
-'filehist-nothumb' => 'पà¥\8dरारà¥\81प नाही',
+'filehist-nothumb' => 'नà¤\96à¥\81लà¥\87à¤\9aितà¥\8dर नाही',
 'filehist-user' => 'सदस्य',
 'filehist-dimensions' => 'आकार',
 'filehist-filesize' => 'संचिकेचा आकार (बाईट्स)',
@@ -2015,7 +1996,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization कृपया हे
 'sharedupload-desc-edit' => "संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली जाऊ शकते.आपणास हवे असल्यास,या पानाच्या[$2 'संचिका वर्णन पान'] येथे,त्याची माहिती संपादु शकता.",
 'sharedupload-desc-create' => "संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली जात असल्याची शक्यता आहे.आपणास हवे असल्यास,या पानाच्या[$2 'संचिका वर्णन पान'] येथे,त्याची माहिती संपादु शकता",
 'filepage-nofile' => 'या नावाची संचिका अस्तित्वात नाही.',
-'filepage-nofile-link' => 'या à¤¨à¤¾à¤µà¤¾à¤\9aà¥\80 à¤¸à¤\82à¤\9aिà¤\95ा à¤\85सà¥\8dतितà¥\8dयà¥\8dवात à¤¨à¤¾à¤¹à¥\80, à¤ªà¤£ à¤¤à¥\81मà¥\8dहà¥\80 à¤¤à¥\80 [$1 à¤\9aढवà¥\82 à¤¶à¤\95ता].',
+'filepage-nofile-link' => 'या नावाची संचिका अस्तित्वात नाही, पण तुम्ही ती [$1 चढवू शकता].',
 'uploadnewversion-linktext' => 'या संचिकेची नवीन आवृत्ती चढवा',
 'shared-repo-from' => '$1 पासून',
 'shared-repo' => 'एक मुक्त कोश',
@@ -2042,13 +2023,13 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization कृपया हे
 'filedelete-success-old' => '<span class="plainlinks">$3, $2 वेळी \'\'\'[[Media:$1|$1]]\'\'\' चे आवर्तन वगळण्यात आले आहे .</span>',
 'filedelete-nofile' => "'''$1''' अस्तित्वात नाही.",
 'filedelete-nofile-old' => "सांगितलेल्या गुणधर्मानुसार  '''$1'''चे कोणतेही विदा आवर्तन संचित नाही.",
-'filedelete-otherreason' => 'à¤\87तर/शिवाय à¤\85धिà¤\95 कारण:',
+'filedelete-otherreason' => 'दà¥\81सरà¥\87/à¤\85तिरिà¤\95à¥\8dत कारण:',
 'filedelete-reason-otherlist' => 'इतर कारण',
 'filedelete-reason-dropdown' => '*वगळण्याची सामान्य कारणे
 ** प्रताधिकार उल्लंघन
 ** जुळी संचिका',
 'filedelete-edit-reasonlist' => 'वगळण्याची कारणे संपादित करा',
-'filedelete-maintenance' => 'फाà¤\88ल à¤µà¤\97ळनà¥\87 à¤\86णि à¤ªà¥\81नà¥\8d:सà¥\8dथापित à¤\95रणà¥\8d',
+'filedelete-maintenance' => 'दà¥\87à¤\96भालà¥\80दरमà¥\8dयान, à¤¸à¤\82à¤\9aिà¤\95ा à¤µà¤\97ळणà¥\87 à¤µ à¤ªà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\87 à¤¤à¤¾à¤¤à¥\8dपà¥\81रतà¥\87 à¤\85à¤\95à¥\8dषम à¤\95à¥\87लà¥\8dया à¤\97à¥\87लà¥\87 à¤\86हà¥\87.',
 'filedelete-maintenance-title' => 'संचिका (फाईल) वगळू शकत नाही.',
 
 # MIME search
@@ -2056,13 +2037,13 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization कृपया हे
 'mimesearch-summary' => 'हे पान विविधामाप (माईम)-प्रकारांकरिता संचिकांची चाळणी करण्याची सुविधा पुरवते:
 Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'mimetype' => 'विविधामाप (माईम) प्रकार:',
-'download' => 'à¤\89तरवा',
+'download' => 'à¤\85धिभारण à¤\95रा',
 
 # Unwatched pages
-'unwatchedpages' => 'लà¤\95à¥\8dष नसलेली पाने',
+'unwatchedpages' => 'दà¥\87à¤\96रà¥\87à¤\96 नसलेली पाने',
 
 # List redirects
-'listredirects' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनà¥\87 à¤¦à¤¾à¤\96वा',
+'listredirects' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनाà¤\82à¤\9aà¥\80 à¤¯à¤¾à¤¦à¥\80',
 
 # Unused templates
 'unusedtemplates' => 'न वापरलेले साचे',
@@ -2091,14 +2072,14 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'statistics-header-views' => 'सांख्यिकी पहा',
 'statistics-header-users' => 'सदस्य सांख्यिकी',
 'statistics-header-hooks' => 'इतर सांख्यिकी',
-'statistics-articles' => 'सà¤\82बà¤\82धित पाने',
+'statistics-articles' => 'à¤\86शय पाने',
 'statistics-pages' => 'पाने',
 'statistics-pages-desc' => 'विकीमधील सर्व पाने, पुनर्निर्देशने, चर्चापानांसहित.',
-'statistics-files' => 'à¤\9aढवलà¥\87लà¥\8dया संचिका',
+'statistics-files' => 'à¤\85पभारà¥\80त संचिका',
 'statistics-edits' => '{{SITENAME}} च्या सुरुवातीपासूनची पानांची संपादने',
 'statistics-edits-average' => 'प्रतिपान सरासरी संपादने',
 'statistics-views-total' => 'सर्व दाखवते',
-'statistics-views-total-desc' => 'à¤\9cà¥\87 à¤ªà¤¾à¤¨à¥\87 à¤¯à¤¾à¤®à¤§à¥\8dदà¥\87 à¤¨à¤¾à¤¹à¥\80त à¤¤à¥\87 à¤ªà¤¾à¤¹à¤¾ à¤\86नि à¤\96ास à¤ªà¤¾à¤¨à¥\87 à¤¸à¤¾à¤®à¤¿à¤²à¤¾ à¤\95रà¥\82 à¤¨à¤\95ा.',
+'statistics-views-total-desc' => 'à¤\85सà¥\8dतितà¥\8dवात à¤¨à¤¸à¤²à¥\87लà¥\80 à¤ªà¤¾à¤¨à¥\87 à¤µ à¤µà¤¿à¤¶à¥\87ष à¤ªà¤¾à¤¨à¥\87 à¤¯à¤¾à¤\82à¤\9aà¥\80 à¤¦à¥\83षà¥\8dयता à¤¯à¤¾à¤¤ à¤\85à¤\82तरà¥\8dभà¥\82त à¤¨à¤¾à¤¹à¥\80',
 'statistics-views-peredit' => 'प्रति संपादनामागे पाहणे',
 'statistics-users' => 'नोंदणीकृत [[Special:ListUsers|सदस्य]]',
 'statistics-users-active' => 'कार्यरत सदस्य',
@@ -2114,13 +2095,16 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'pageswithprop-prophidden-binary' => 'बायनरी गुणधर्माची किंमत लपविलेली आहे ($1)',
 
 'doubleredirects' => 'दुहेरी-पुनर्निर्देशने',
-'doubleredirectstext' => 'हे पान अशा पानांची सूची पुरवते की जी पुर्ननिर्देशीत पाने दुसऱ्या पुर्ननिर्देशीत पानाकडे निर्देशित झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनास दुवा दिला आहे सोबतच दुसरे पुर्ननिर्देशन ज्या पानाकडे पोहचते ते पण दिले आहे, जे की बरोबर असण्याची शक्यता आहे ,ते वस्तुतः पहिल्या पानापासूनचेही पुर्ननिर्देशन असावयास हवे.',
+'doubleredirectstext' => 'हे पान, अशा पानांची यादी पुरवते की जी पाने, दुसऱ्या पुर्ननिर्देशीत पानाकडे पुर्ननिर्देशीत झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनाचा दुवा दिला आहे,तसेच, दुसऱ्या  पुर्ननिर्देशनाचे लक्ष्य पान पण दिले आहे,जे मुळात ते 
+लक्ष्यपान आहे ज्याकडे, पहिले पुनर्निर्देशन असावयास हवे.
+
+<del>खोडलेल्या प्रविष्टी</del>समायोजित करण्यात आलेल्या आहेत.',
 'double-redirect-fixed-move' => '[[$1]] हलवले गेले आहे.
-ते [[$2]] येथे निर्देशित होते.',
-'double-redirect-fixed-maintenance' => '[[$1]] à¤¤à¥\87 [[$2]] à¤¹à¥\87 à¤\9aà¥\81à¤\95à¥\80à¤\9aà¥\87 à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤¨à¥\80à¤\9f केले.',
-'double-redirect-fixer' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤¨à¥\80à¤\9f करणारा',
+ते आता [[$2]] येथे निर्देशित होते.',
+'double-redirect-fixed-maintenance' => '[[$1]] à¤¤à¥\87 [[$2]] à¤¹à¥\87 à¤\9aà¥\81à¤\95à¥\80à¤\9aà¥\87 à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤ à¤¿à¤\95ठाà¤\95 केले.',
+'double-redirect-fixer' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤ à¤¿à¤\95ठाà¤\95 करणारा',
 
-'brokenredirects' => 'मà¥\8bडà¤\95à¥\87 à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन',
+'brokenredirects' => 'मà¥\8bडà¤\95à¥\80 à¤ªà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनà¥\87',
 'brokenredirectstext' => 'खालील पुनर्निर्देशने अस्तित्वात नसलेली पाने जोडतात:',
 'brokenredirects-edit' => 'संपादन',
 'brokenredirects-delete' => 'वगळा',
@@ -2176,10 +2160,9 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'protectedpages' => 'सुरक्षित पाने',
 'protectedpages-indef' => 'फक्त अनंत काळासाठी सुरक्षित केलेले',
 'protectedpages-cascade' => 'केवळ एकामेकांवर अवलंबून कास्केडींग सुरक्षा (सुरक्षा शिडी)',
-'protectedpagestext' => 'खालील पाने स्थानांतरण किंवा संपादन यांपासून सुरक्षित आहेत',
+'protectedpages-noredirect' => 'पुनर्निर्देशने लपवा',
 'protectedpagesempty' => 'सध्या या नियमावलीने कोणतीही पाने सुरक्षित केलेली नाहीत.',
 'protectedtitles' => 'सुरक्षीत शीर्षके',
-'protectedtitlestext' => 'पुढील शीर्षके बदल घडवण्यापासून सुरक्षित आहेत.',
 'protectedtitlesempty' => 'या नियमावलीने सध्या कोणतीही शीर्षके सुरक्षित केलेली नाहीत.',
 'listusers' => 'सदस्यांची यादी',
 'listusers-editsonly' => 'फक्त संपादनांसहित सदस्य दाखवा',
@@ -2229,9 +2212,6 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'allpagesto' => 'इथे संपणारी पाने दाखवा:',
 'allarticles' => 'सगळे लेख',
 'allinnamespace' => 'सर्व पाने ($1 नामविश्व)',
-'allnotinnamespace' => 'सर्व पाने ($1 नामविश्वात नसलेली)',
-'allpagesprev' => 'मागील',
-'allpagesnext' => 'पुढील',
 'allpagessubmit' => 'चला',
 'allpagesprefix' => 'पुढील शब्दाने सुरू होणारी पाने दाखवा:',
 'allpagesbadtitle' => 'दिलेले शीर्षक चुकीचे किंवा आंतरभाषीय किंवा आंतरविकि शब्दाने सुरू होणारे होते. त्यात एक किंवा अधिक शीर्षकात न वापरता येणारी अक्षरे असावीत.',
@@ -2294,14 +2274,14 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'listgrouprights-rights' => 'अधिकार',
 'listgrouprights-helppage' => 'Help:गट अधिकार',
 'listgrouprights-members' => '(सदस्यांची यादी)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|गट|गट}} वाढवा: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|गट|गट}} वगळा: $1',
+'listgrouprights-addgroup' => '{{PLURAL:$2|गट}} वाढवा: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|गट}} वगळा: $1',
 'listgrouprights-addgroup-all' => 'सर्व गट वाढवा',
-'listgrouprights-removegroup-all' => 'सरà¥\8dव à¤¸à¤®à¥\82ह काढून टाका',
-'listgrouprights-addgroup-self' => 'स्वतःच्या खात्यात हे {{PLURAL:$2|गट|गट}} मिळवा: $1',
-'listgrouprights-removegroup-self' => 'स्वतःच्या खात्यातून हे {{PLURAL:$2|गट|गट}} वगळा: $1',
-'listgrouprights-addgroup-self-all' => 'सरà¥\8dव à¤¸à¤®à¥\82ह à¤¸à¥\8dवतà¤\83à¤\9aà¥\8dया à¤\96ातà¥\8dयात à¤®à¤¿à¤³à¤µा',
-'listgrouprights-removegroup-self-all' => 'सरà¥\8dव à¤¸à¤®à¥\82ह स्वतःच्या खात्यातून काढून टाका',
+'listgrouprights-removegroup-all' => 'सरà¥\8dव à¤\97à¤\9f काढून टाका',
+'listgrouprights-addgroup-self' => 'स्वतःच्या खात्यात हे {{PLURAL:$2|गट}} मिळवा: $1',
+'listgrouprights-removegroup-self' => 'स्वतःच्या खात्यातून हे {{PLURAL:$2|गट}} वगळा: $1',
+'listgrouprights-addgroup-self-all' => 'सरà¥\8dव à¤\97à¤\9f à¤¸à¥\8dवतà¤\83à¤\9aà¥\8dया à¤\96ातà¥\8dयात à¤\9cà¥\8bडा',
+'listgrouprights-removegroup-self-all' => 'सरà¥\8dव à¤\97à¤\9f स्वतःच्या खात्यातून काढून टाका',
 
 # Email user
 'mailnologin' => 'पाठविण्याचा पत्ता नाही',
@@ -2320,22 +2300,22 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'noemailtitle' => 'विपत्र पत्ता नाही',
 'noemailtext' => 'या सदस्याने वैध विपत्र पत्ता नमूद केलेला नाही.',
 'nowikiemailtitle' => 'विपत्र प्रतिबंधित',
-'nowikiemailtext' => 'हा à¤ªà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\85नà¥\8dय à¤ªà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\95डà¥\82न  à¤\88-मà¥\87ल à¤\98à¥\87à¤\8a à¤\87à¤\9aà¥\8dà¤\9bित à¤¨à¤¾à¤¹à¥\80.',
-'emailnotarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dता à¤\95रà¥\80ता à¤\85सà¥\8dतितà¥\8dवात à¤¨à¤¸à¤²à¥\87लà¥\87  à¤\95िà¤\82वा à¤\85वà¥\88ध à¤¸à¤¦à¤¸à¥\8dय',
-'emailtarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dता à¤ªà¥\8dरयà¥\8bà¤\95à¥\8dताà¤\9aà¥\87 à¤¨à¤¾à¤\82व à¤\9fाà¤\95ा.',
+'nowikiemailtext' => 'या à¤¸à¤¦à¤¸à¥\8dयानà¥\87 à¤\85नà¥\8dय à¤¸à¤¦à¤¸à¥\8dयाà¤\82à¤\95डà¥\82न  à¤\88-मà¥\87ल à¤¯à¥\87à¤\8a à¤¨ à¤¦à¥\87णà¥\8dयाà¤\9aà¥\87 (à¤\90à¤\9aà¥\8dà¤\9bिà¤\95) à¤¨à¤¿à¤µà¤¡à¤²à¥\87 à¤\86हà¥\87.',
+'emailnotarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dतà¥\8dयाà¤\9aà¥\87 à¤\85सà¥\8dतितà¥\8dवात à¤¨à¤¸à¤²à¥\87लà¥\87  à¤\95िà¤\82वा à¤\85वà¥\88ध à¤¸à¤¦à¤¸à¥\8dयनाम.',
+'emailtarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dतà¥\8dयाà¤\9aà¥\87 à¤¸à¤¦à¤¸à¥\8dयनाम à¤\9fाà¤\95ा',
 'emailusername' => 'सदस्यनाम:',
 'emailusernamesubmit' => 'पाठवा',
-'email-legend' => 'à¤\88मà¥\87ल à¤\85नà¥\8dय à¤¸à¤¦à¤¸à¥\8dयाला पाठवा',
-'emailfrom' => 'प्रेषक',
+'email-legend' => 'à¤\85नà¥\8dय {{SITENAME}} à¤µà¤°à¥\80ल à¤¸à¤¦à¤¸à¥\8dयाला à¤\88मà¥\87ल पाठवा',
+'emailfrom' => 'प्रेषक:',
 'emailto' => 'प्रति:',
 'emailsubject' => 'विषय:',
 'emailmessage' => 'संदेश:',
 'emailsend' => 'पाठवा',
-'emailccme' => 'माà¤\9dà¥\8dया à¤¸à¤\82दà¥\87शाà¤\9aà¥\80 à¤®à¤²à¤¾ à¤µà¤¿à¤ªà¤¤à¥\8dर à¤ªà¥\8dरत पाठवा.',
-'emailccsubject' => 'तुमच्या विपत्राची प्रत कडे $1: $2',
+'emailccme' => 'माà¤\9dà¥\8dया à¤¸à¤\82दà¥\87शाà¤\9aà¥\80 à¤ªà¥\8dरत à¤®à¤²à¤¾ à¤µà¤¿à¤ªà¤¤à¥\8dरादà¥\8dवारà¥\87 पाठवा.',
+'emailccsubject' => '$1 ला पाठविलेल्या आपल्या विपत्राची प्रत: $2',
 'emailsent' => 'विपत्र पाठवले',
 'emailsenttext' => 'तुमचा विपत्र संदेश पाठवण्यात आला आहे.',
-'emailuserfooter' => 'हे विपत्र $1 ने $2 ला {{SITENAME}} वरील "सदस्यास विपत्र पाठवा" वापरुन पाठवले आहे.',
+'emailuserfooter' => '$1 ने $2 ला हे विपत्र, {{SITENAME}} वरील, "सदस्यास विपत्र पाठवा" ही प्रक्रिया वापरुन पाठवले आहे.',
 
 # User Messenger
 'usermessage-summary' => 'प्रणाली संदेश देत आहे.',
@@ -2347,8 +2327,8 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'watchlistfor2' => '$1 $2 साठी',
 'nowatchlist' => 'तुमची पहाऱ्याची सूची रिकामी आहे.',
 'watchlistanontext' => 'तुमच्या पहाऱ्याच्या सूचीमधील बाबी पाहण्याकरता किंवा संपादित करण्याकरता, कृपया $1.',
-'watchnologin' => 'पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला नाही',
-'watchnologintext' => 'तà¥\81मà¤\9aà¥\80 à¤ªà¤¹à¤¾à¤±à¥\8dयाà¤\9aà¥\80 à¤¸à¥\82à¤\9aà¥\80 à¤¬à¤¦à¤²à¤¾à¤¯à¤\9aà¥\80 à¤\85सà¥\87ल à¤¤à¤° à¤¤à¥\81मà¥\8dहà¥\80 [[Special:UserLogin|पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला]] à¤\85सलाà¤\9a à¤ªà¤¾à¤¹à¥\80à¤\9cà¥\87.',
+'watchnologin' => 'सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शित नाही',
+'watchnologintext' => 'à¤\86पलà¥\80 à¤ªà¤¹à¤¾à¤±à¥\8dयाà¤\9aà¥\80 à¤¸à¥\82à¤\9aà¥\80 à¤¬à¤¦à¤²à¤µà¤¾à¤¯à¤\9aà¥\80 à¤\85सà¥\87ल à¤¤à¤° à¤\86पणास [[Special:UserLogin|सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शित]] à¤\85सावà¥\87 à¤²à¤¾à¤\97à¥\87ल.',
 'addwatch' => 'पहाऱ्याच्या सूचीमध्ये टाका',
 'addedwatchtext' => '"[[:$1]]"  हे पान तुमच्या  [[Special:Watchlist|\'माझी निरीक्षणसूची\']]मध्ये टाकले आहे. या पानावरील तसेच त्याच्या चर्चा पानावरील भविष्यातील बदल तेथे दाखवले जातील',
 'removewatch' => 'पहाऱ्याच्या सूचीतून वगळा',
@@ -2357,7 +2337,7 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'watchthispage' => 'या पानावर बदलांसाठी लक्ष ठेवा.',
 'unwatch' => 'पहारा काढा',
 'unwatchthispage' => 'पहारा काढून टाका',
-'notanarticle' => 'मà¤\9cà¤\95à¥\81र à¤µà¤¿à¤°à¤¹à¤¿à¤¤ à¤ªà¤¾à¤¨',
+'notanarticle' => 'हà¥\87 à¤\86शयपान à¤¨à¤¾à¤¹à¥\80',
 'notvisiblerev' => 'आवृत्ती वगळण्यात आलेली आहे',
 'watchlist-details' => 'पहाऱ्याच्या सूचीमधील {{PLURAL:$1|$1 पान|$1 पाने}}, यात चर्चा पाने मोजलेली नाहीत.',
 'wlheader-enotif' => 'विपत्र अधिसूचना सुविधा शक्य केली.',
@@ -2365,17 +2345,17 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'watchmethod-recent' => 'पहाऱ्यातील पानांकरिता अलीकडील बदलांचा तपास',
 'watchmethod-list' => 'अलीकडील बदलांकरिता पहाऱ्यातील पानांचा तपास',
 'watchlistcontains' => 'तुमचा $1 {{PLURAL:$1|पानावर|पानांवर}} पहारा आहे.',
-'iteminvalidname' => "'$1'बाबà¥\80स à¤¸à¤®à¤¸à¥\8dया, à¤\85मानà¥\8dय नाव...",
+'iteminvalidname' => "'$1'या à¤¬à¤¾à¤¬à¥\80साठà¥\80 à¤¸à¤®à¤¸à¥\8dया, à¤\85वà¥\88ध नाव...",
 'wlnote' => "खाली $3, $4 पर्यंतचे गेल्या {{PLURAL:$2| '''१''' तासातील|'''$2''' तासातील}} {{PLURAL:$1|शेवटचा बदल दिला आहे|शेवटाचे '''$1'''बदल दिले आहेत}}.",
 'wlshowlast' => 'मागील $1 तास $2 दिवस $3 पहा',
 'watchlist-options' => 'पहाऱ्याच्या सूचीचे पर्याय',
 
 # Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'पाहताहे...',
+'watching' => 'पहारा à¤¦à¥\87त à¤\86हे...',
 'unwatching' => 'पहारा काढत आहे...',
 'watcherrortext' => '$1 साठीच्या तुमच्या पहाऱ्याच्या सूचीमधील मांडणीत (watchlist settings) बदल करताना त्रुटी आली.',
 
-'enotif_mailer' => '{{SITENAME}} सूचना विपत्र',
+'enotif_mailer' => '{{SITENAME}} à¤\85धिसà¥\82à¤\9aना à¤µà¤¿à¤ªà¤¤à¥\8dर',
 'enotif_reset' => 'सर्व पानास भेट दिल्याचे नमूद करा',
 'enotif_impersonal_salutation' => '{{SITENAME}} सदस्य',
 'enotif_subject_deleted' => '{{SITENAME}} पानाला $1 {{gender:$2|$2}} ने वगळले',
@@ -2388,9 +2368,9 @@ Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
 'enotif_body_intro_moved' => '{{SITENAME}} हे $1 या लेखनामाचे पान या $PAGEEDITDATE (या संपादनाच्या तारखेस)$2 ने {{GENDER:$2|हलविले.}} अद्यतन आवृत्तीसाठी कृपया $3 बघा.',
 'enotif_body_intro_restored' => '{{SITENAME}} हे $1 या लेखनामाचे पान या $PAGEEDITDATE (या संपादनाच्या तारखेस)$2 ने {{GENDER:$2|पुनर्स्थापित केले.}}अद्यतन आवृत्तीसाठी कृपया $3 बघा.',
 'enotif_body_intro_changed' => '{{SITENAME}} हे $1 या लेखनामाचे पान या $PAGEEDITDATE (या संपादनाच्या तारखेस)$2 ने {{GENDER:$2|बदलविले.}} अद्यतन आवृत्तीसाठी कृपया $3 बघा.',
-'enotif_lastvisited' => 'तà¥\81मà¤\9aà¥\8dया à¤¶à¥\87वà¤\9fà¤\9aà¥\8dया à¤­à¥\87à¤\9fà¥\80नà¤\82तरà¤\9aà¥\87 à¤¬à¤¦à¤² à¤¬à¤\98णयासाठà¥\80 à¤ªà¤¹à¤¾ - $1.',
+'enotif_lastvisited' => 'तà¥\81मà¤\9aà¥\8dया à¤¶à¥\87वà¤\9fà¤\9aà¥\8dया à¤­à¥\87à¤\9fà¥\80नà¤\82तरà¤\9aà¥\87 à¤¬à¤¦à¤² à¤¬à¤\98णà¥\8dयासाठà¥\80 $1 à¤ªà¤¹à¤¾.',
 'enotif_lastdiff' => 'हा बदल पहाण्याकरिता $1 पहा.',
-'enotif_anon_editor' => 'à¤\85नामिà¤\95 à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dता $1',
+'enotif_anon_editor' => 'à¤\85नामिà¤\95 à¤¸à¤¦à¤¸à¥\8dय $1',
 'enotif_body' => 'प्रिय $WATCHINGUSERNAME,
 
 {{SITENAME}}या लेखनावाचे $PAGETITLE (या मथळ्याचे) पान $PAGEEDITOR ने $PAGEEDITDATE ( या तारखेस) $CHANGEDORCREATED तयार केले किंवा बदलले आहे. सध्याची आवृत्ती पाहण्यासाठी खालील दुव्यावर टिचकी मारा.
@@ -2430,8 +2410,8 @@ $UNWATCHURL
 'delete-confirm' => '"$1" वगळा',
 'delete-legend' => 'वगळा',
 'historywarning' => 'सूचना: तुम्ही वगळत असलेल्या पानाला $1 {{PLURAL:$1|आवर्तनाचा|आवर्तनांचा}} इतिहास आहे:',
-'confirmdeletetext' => 'तुम्ही एक लेख त्याच्या सर्व इतिहासासोबत वगळण्याच्या तयारीत आहात.
-कृपया तुम्ही करत असलेली कृती ही मीडियाविकीच्या [[{{MediaWiki:Policy-url}}|नीतीनुसार]] आहे ह्याची खात्री करा. तसेच तुम्ही करित असलेल्या कृतीचे परिणाम कृती करण्यापूर्वी जाणून घ्या.',
+'confirmdeletetext' => 'तुम्ही एक लेखपान त्याच्या सर्व इतिहासासोबत वगळण्याच्या तयारीत आहात.
+कृपया, तुम्ही करीत असलेली कृती ही मीडियाविकीच्या [[{{MediaWiki:Policy-url}}|नीतीनुसार]] आहे ह्याची खात्री करा. तसेच, तुम्ही करीत असलेल्या कृतीचे परिणाम, कृती करण्यापूर्वी जाणून घ्या.',
 'actioncomplete' => 'काम पूर्ण',
 'actionfailed' => 'कृती अयशस्वी झाली',
 'deletedtext' => '"$1" हा लेख वगळला. अलीकडे वगळलेले लेख पाहण्यासाठी $2 पहा.',
@@ -2449,17 +2429,16 @@ $UNWATCHURL
 ** लेखकाची(लेखिकेची) विनंती
 ** तुटकी पुनर्निर्देशने',
 'delete-edit-reasonlist' => 'वगळण्याची कारणे संपादित करा',
-'delete-toobig' => 'या पानाला खूप मोठी इतिहास यादी आहे, तसेच हे पान $1 {{PLURAL:$1|पेक्षा|पेक्षा}}पेक्षा जास्त वेळा बदलण्यात आलेले आहे. अशी पाने वगळणे हे {{SITENAME}} ला धोकादायक ठरू नये म्हणून शक्य केलेले नाही.',
-'delete-warning-toobig' => 'या पानाला खूप मोठी इतिहास यादी आहे, तसेच हे पान $1 {{PLURAL:$1|पेक्षा|पेक्षा}} पेक्षा जास्त वेळा बदलण्यात आलेले आहे.
-अशी पाने वगळणे हे {{SITENAME}} ला धोकादायक ठरू शकते;
-कृपया काळजीपूर्वक हे पान वगळा.',
+'delete-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे. {{SITENAME}} वर आकस्मिक होणारी उलथापालथ वाचविण्यासाठी, अश्या पानांचे वगळणे प्रतिबंधित केल्या गेले आहे.',
+'delete-warning-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे.त्याचे वगळण्याने {{SITENAME}} वर डाटाबेसच्या क्रियांची उलथापालथ होऊ शकते; सावधगिरीने पुढे जा.',
+'deleting-backlinks-warning' => "'''ईशारा:'''आपण वगळत असणाऱ्या पानास इतर पानांचे दुवे आहेत.",
 
 # Rollback
 'rollback' => 'बदल वेगात माघारी न्या',
 'rollback_short' => 'द्रुतमाघार',
 'rollbacklink' => 'द्रुतमाघार',
 'rollbacklinkcount' => 'उलटवा $1 {{PLURAL:$1|संपादन|संपादने}}',
-'rollbacklinkcount-morethan' => '$1 पेक्षा अधिक उलटवा {{PLURAL:$1|संपादन|संपादने}}',
+'rollbacklinkcount-morethan' => '$1 पेक्षा अधिक {{PLURAL:$1|संपादन|संपादने}} उलटवा',
 'rollbackfailed' => 'द्रूतमाघार फसली',
 'cantrollback' => 'जुन्या आवृत्तीकडे परतवता येत नाही; शेवटचा संपादक या पानाचा एकमात्र लेखक आहे.',
 'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]] [[Special:Contributions/$2|{{int:contribslink}}]])चे शेवटाचे [[:$1]]वे संपादन माघारी परतवता येत नाही; पान आधीच कुणी माघारी परतवले आहे किंवा संपादित केले आहे.
@@ -2467,12 +2446,13 @@ $UNWATCHURL
 शेवटचे संपादन [[User:$3|$3]] ([[User talk:$3|Talk]] [[Special:Contributions/$3|{{int:contribslink}}]])-चे होते.',
 'editcomment' => "संपादन सारांश \"''\$1''\" होता.",
 'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|चर्चा]]) यांनी केलेले बदल [[User:$1|$1]] यांच्या आवृत्तीकडे पूर्वपदास नेले.',
-'revertpage-nouser' => 'लपविलेल्या सदस्याची संपादने उलटवून {{GENDER:$1|[[सदस्य:$1|$1]]}} यांच्या आवृत्तीप्रमाणे पूर्ववत केले.',
+'revertpage-nouser' => 'लपविलेल्या सदस्याची संपादने उलटवून मागील आवृत्तीप्रमाणे पूर्ववत केले{{GENDER:$1|[[सदस्य:$1|$1]]}}',
 'rollback-success' => '$1 ने उलटवलेली संपादने;$2 च्या आवृत्तीस परत नेली.',
 
 # Edit tokens
 'sessionfailure-title' => 'सत्र त्रुटी',
-'sessionfailure' => 'तुमच्या दाखल सत्रात काही समस्या दिसते;सत्र अपहारणा पासून काळजी घेण्याच्या दृष्टीने ही कृती रद्द केली गेली आहे.कपया आपल्या विचरकाच्या "back" कळीवर टिचकी मारा आणि तुम्ही ज्या पानावरून आला ते पुन्हा चढवा,आणि प्रत प्रयत्न करा.',
+'sessionfailure' => 'तुमच्या दाखल सत्रात काही समस्या दिसते;सत्र अपहारणापासून 
+वाचविण्याचे दृष्टीने ही कृती रद्द केल्या गेली आहे.कृपया आपल्या विचरकाच्या "back" कळीवर टिचकी मारा आणि तुम्ही ज्या पानावरून आला ते पुन्हा चढवा,आणि परत प्रयत्न करा.',
 
 # Protect
 'protectlogpage' => 'सुरक्षा नोंदी',
@@ -2506,7 +2486,7 @@ $UNWATCHURL
 'protect-level-sysop' => 'केवळ प्रचालकांना परवानगी आहे',
 'protect-summary-cascade' => 'शिडी',
 'protect-expiring' => '$1 (UTC) ला संपेल',
-'protect-expiring-local' => '$1 à¤²à¤¾ à¤¸à¤®à¥\8dपते',
+'protect-expiring-local' => '$1 à¤²à¤¾ à¤¸à¤\82पते',
 'protect-expiry-indefinite' => 'अनंत',
 'protect-cascade' => 'या पानात असलेली पाने सुरक्षित करा (सुरक्षा शिडी)',
 'protect-cantedit' => 'तुम्ही या पानाची सुरक्षा पातळी बदलू शकत नाही कारण तुम्हाला तसे करण्याची परवानगी नाही.',
@@ -2544,22 +2524,22 @@ $UNWATCHURL
 'undeletepage' => 'वगळलेली पाने पहा आणि पुनर्स्थापित करा',
 'undeletepagetitle' => "'''खाली [[:$1]] च्या वगळलेल्या आवृत्त्या समाविष्ट केलेल्या आहेत'''.",
 'viewdeletedpage' => 'काढून टाकलेले लेख पहा',
-'undeletepagetext' => 'à¤\96ालà¥\80ल {{PLURAL:$1|पान à¤µà¤\97ळलà¥\87 à¤\86हà¥\87 à¤¤à¤°à¥\80सà¥\81दà¥\8dधा à¤µà¤¿à¤¦à¤¾à¤\97ारात à¤\9cतन à¤\86हà¥\87 à¤\86णि à¤ªà¥\81रà¥\8dनà¥\8dसà¥\8dथापित à¤\95रणà¥\87 à¤¶à¤\95à¥\8dय à¤\86हà¥\87|$1 à¤ªà¤¾à¤¨à¥\87 à¤µà¤\97ळलà¥\80 à¤\86हà¥\87त à¤¤à¤°à¥\80 à¤¸à¥\81दà¥\8dधा à¤µà¤¿à¤¦à¤¾à¤\97ारात à¤\9cतन à¤\86हà¥\87त à¤\86णि à¤ªà¥\81रà¥\8dन्स्थापित करणे शक्य आहेत}}. विदागारातील साठवण ठरावीक कालावधीने स्वच्छ करता येते.',
+'undeletepagetext' => 'à¤\96ालà¥\80ल {{PLURAL:$1|पान à¤µà¤\97ळलà¥\87 à¤\86हà¥\87 à¤¤à¤°à¥\80सà¥\81दà¥\8dधा à¤µà¤¿à¤¦à¤¾à¤\97ारात à¤\9cतन à¤\86हà¥\87 à¤\86णि à¤ªà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\87 à¤¶à¤\95à¥\8dय à¤\86हà¥\87|$1 à¤ªà¤¾à¤¨à¥\87 à¤µà¤\97ळलà¥\80 à¤\86हà¥\87त à¤¤à¤°à¥\80 à¤¸à¥\81दà¥\8dधा à¤µà¤¿à¤¦à¤¾à¤\97ारात à¤\9cतन à¤\86हà¥\87त à¤\86णि à¤ªà¥\81नर्स्थापित करणे शक्य आहेत}}. विदागारातील साठवण ठरावीक कालावधीने स्वच्छ करता येते.',
 'undelete-fieldset-title' => 'आवर्तने पुनर्स्थापित करा',
-'undeleteextrahelp' => "संपूर्ण पान पुनर्स्थापित करण्याकरिता,सारे रकाने रिकामे ठेवा आणि '''''पुनर्स्थापन'''''वर टिचकी मारा. निवडक पुनर्स्थापन करण्याकरिता, ज्या आवर्तनांचे पुनर्स्थापन करावयाचे त्यांचे रकाने निवडा , आणि '''''पुनर्स्थापन'''''वर टिचकी मारा. '''''पुनर्योजन ''''' वर टिचकी मारल्यास सारे रकाने आणि प्रतिक्रिया खिडकी रिकामी होईल.",
+'undeleteextrahelp' => "पानाचा संपूर्ण इतिहास पुनर्स्थापित करण्यासाठी,साऱ्या चौकटपेट्या (चेकबॉक्सेस) रिकाम्या ठेवा
+आणि  '''''{{int:undeletebtn}}''''' वर टिचकी मारा. निवडक पुनर्स्थापन करण्याकरिता, ज्या आवर्तनांचे पुनर्स्थापन करावयाचे त्यांचेशी सुसंगत चौकटपेट्या (चेकबॉक्सेस) निवडा , आणि '''''{{int:undeletebtn}}''''' वर टिचकी मारा.",
 'undeleterevisions' => '$1 {{PLURAL:$1|आवर्तन|आवर्तने}}विदागारात संचीत',
 'undeletehistory' => 'जर तुम्ही पान पुनर्स्थापित केले तर ,सारी आवर्तने इतिहासात पुनर्स्थापित होतील.
 वगळल्या पासून त्याच नावाचे नवे पान तयार केले गेले असेले तर, पुनर्स्थापित आवर्तने पाठीमागील इतिहासात दिसतील. पुनर्स्थापना नंतर संचिकांच्या आवर्तनांवरील बंधने गळून पडतील याची नोंद घ्या.',
 'undeleterevdel' => 'पृष्ठ पानाचे आवर्तन अर्धवट वगळले जाणार असेल तर पुनर्स्थापनाची कृती केली जाणार नाही.
 अशा प्रसंगी, तुम्ही अगदी अलीकडील वगळलेली आवर्तने अनचेक किंवा अनहाईड केलीच पाहिजे.',
-'undeletehistorynoadmin' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤µà¤\97ळलà¥\87 à¤\97à¥\87लà¥\87 à¤\86हà¥\87.वà¤\97ळणà¥\8dयाà¤\9aà¥\87 à¤\95ारण à¤\96ालà¥\80ल à¤\86ढावà¥\8dयात,वà¤\97ळणà¥\8dयापà¥\82रà¥\8dवà¥\80 à¤¸à¤\82पादित à¤\95रणाऱà¥\8dया à¤¸à¤\82पादà¤\95ाà¤\82à¤\9aà¥\8dया à¤®à¤¾à¤¹à¤¿à¤¤à¥\80 à¤¸à¥\8bबत,दाà¤\96वलà¥\87 à¤\86हà¥\87. à¤µà¤\97ळलà¥\87लà¥\8dया à¤\86वरà¥\8dतà¥\8dनाà¤\82à¤\9aा à¤¨à¥\87मà¤\95ा à¤®à¤\9cà¤\95à¥\82र à¤\95à¥\87वळ à¤ªà¥\8dरà¤\9aालà¤\95ाà¤\82ना à¤\89पलबà¥\8dध à¤\85सà¥\87ल.',
+'undeletehistorynoadmin' => 'हे पान वगळले गेले आहे.वगळण्याचे कारण खालील आढाव्यात,वगळण्यापूर्वी संपादित करणाऱ्या संपादकांच्या माहिती सोबत,दाखवले आहे. वगळलेल्या आवर्तनांचा नेमका मजकूर केवळ प्रचालकांना उपलब्ध असेल.',
 'undelete-revision' => '$1चे($4चे, $5 येथील) आवर्तन $3 ने वगळले:',
-'undeleterevision-missing' => 'अयोग्य अथवा नसापडणारे आवर्तन. तुमचा दुवा कदाचित चुकीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले असेल.',
+'undeleterevision-missing' => 'अयोग्य अथवा न सापडणारे आवर्तन. तुमचा दुवा कदाचित चुकीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले गेले असेल.',
 'undelete-nodiff' => 'पूर्वीचे कोणतेही आवर्तन आढळले नाही.',
 'undeletebtn' => 'वगळण्याची क्रिया रद्द करा',
 'undeletelink' => 'पहा/पुनर्स्थापित करा',
 'undeleteviewlink' => 'पहा',
-'undeletereset' => 'पूर्ववत',
 'undeleteinvert' => 'निवड उलट करा',
 'undeletecomment' => 'प्रतिक्रिया:',
 'undeletedrevisions' => '{{PLURAL:$1|1 आवर्तन|$1 आवर्तने}} पुनर्स्थापित',
@@ -2579,7 +2559,7 @@ $UNWATCHURL
 'undelete-bad-store-key' => '$1 वेळ दिलेली संचिका आवर्तन पुनर्स्थापित करता येत नाही:संचिका वगळण्यापूर्वी पासून मिळाली नव्हती.',
 'undelete-cleanup-error' => 'न वापरलेली विदा संचिका "$1" वगळताना त्रुटी दाखवते.',
 'undelete-missing-filearchive' => 'संचिका विदास्मृती ID $1 पुनर्स्थापित करू शकत नाही कारण ती विदागारात उपलब्ध नाही. ती आधीच पुनर्स्थापित केली असण्याची शक्यता सुद्धा असू शकते.',
-'undelete-error' => 'à¤\9cर à¤ªà¤¾à¤¨à¤¾ à¤\95ाढà¥\82न à¤¨à¤¾à¤¹à¥\80 à¤\9fाà¤\95लà¥\87 à¤¤à¤° à¤ªà¤¾à¤¨ à¤¶à¥\80रà¥\8dषà¤\95',
+'undelete-error' => 'पान à¤ªà¥\81नरà¥\8dसà¥\8dथापनात à¤¤à¥\8dरà¥\82à¤\9fà¥\80',
 'undelete-error-short' => 'संचिकेचे वगळणे उलटवताना त्रूटी: $1',
 'undelete-error-long' => 'संचिकेचे वगळणे उलटवताना त्रुटींचा अडथळा आला:
 
@@ -2590,7 +2570,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'नामविश्व:',
 'invert' => 'निवडीचा क्रम उलटा करा',
-'tooltip-invert' => 'निवडलेल्या नामविश्वातील (आणि तसे निवडल्यास संबंधित नामविश्वातील)  पानांचे बदल  अदृष्य करण्या साटी टिचकी मारा',
+'tooltip-invert' => 'निवडलेल्या नामविश्वातील (आणि तसे निवडल्यास संबंधित नामविश्वातील)  पानांचे बदल  अदृष्य करण्यासाठी टिचकी मारा',
 'namespace_association' => 'सहभागी नामविश्वे',
 'tooltip-namespace_association' => 'निवडलेल्या नामविश्वासंबधीत विषय अथवा चर्चा नामविश्वसुद्धा आंतर्भूत करण्याकरिता हा बॉक्स टिचकवून चिह्नित करा',
 'blanknamespace' => '(मुख्य)',
@@ -2643,11 +2623,10 @@ $1',
 'whatlinkshere-filters' => 'गाळण्या',
 
 # Block/unblock
-'autoblockid' => '#$1ला स्वयंचलितपणे प्रतिबंधित करा',
+'autoblockid' => 'स्वयंचलितपणे #$1ला प्रतिबंधित करा',
 'block' => 'सदस्यास प्रतिबंध करा',
-'unblock' => 'सदस्य सोडवा',
+'unblock' => 'सदस्यप्रतिबंध काढा',
 'blockip' => 'हा अंकपत्ता अडवा',
-'blockip-title' => 'सदस्यास प्रतिबंध करा',
 'blockip-legend' => 'सदस्यास प्रतिबंध करा',
 'blockiptext' => 'एखाद्या विशिष्ट अंकपत्त्याची किंवा सदस्याची लिहिण्याची क्षमता प्रतिबंधित  करण्याकरिता खालील सारणी वापरा.
 हे केवळ उच्छेद टाळण्याच्याच दृष्टीने आणि [[{{MediaWiki:Policy-url}}|निती]]स अनुसरून केले पाहिजे.
@@ -2655,7 +2634,6 @@ $1',
 'ipadressorusername' => 'अंकपत्ता किंवा सदस्यनाम:',
 'ipbexpiry' => 'समाप्ति:',
 'ipbreason' => 'कारण:',
-'ipbreasonotherlist' => 'इतर कारण',
 'ipbreason-dropdown' => '*प्रतिबंधनाची सामान्य कारणे
 ** चुकीची माहिती भरणे
 ** पानांवरील मजकूर काढणे
@@ -2671,13 +2649,11 @@ $1',
 'ipbsubmit' => 'हा पत्ता अडवा',
 'ipbother' => 'इतर वेळ:',
 'ipboptions' => '२ तास:2 hours,१ दिवस:1 day,३ दिवस:3 days,१ आठवडा:1 week,२ आठवडे:2 weeks,१ महिना:1 month,३ महिने:3 months,६ महिने:6 months,१ वर्ष:1 year,अनंत:infinite',
-'ipbotheroption' => 'इतर',
-'ipbotherreason' => 'इतर/अजून कारण:',
 'ipbhidename' => 'सदस्य नाम प्रतिबंधन नोंदी, प्रतिबंधनाची चालू यादी आणि सदस्य यादी इत्यादीतून लपवा',
 'ipbwatchuser' => 'या सदस्याच्या सदस्य तसेच चर्चा पानावर पहारा ठेवा',
 'ipb-disableusertalk' => 'सदस्यास स्वत:चे चर्चापान संपादण्यापासून प्रतिबंधित करा',
-'ipb-change-block' => 'यà¥\81पयà¥\8bà¤\97à¤\95रà¥\8dताला à¤ªà¥\81नà¥\8dहा à¤¬à¥\8dलाà¤\95 à¤\95रा à¤¸à¥\8bबत à¤¸à¥\8dथानिà¤\95 à¤¸à¥\87थिà¤\81à¤\97.',
-'ipb-confirm' => 'à¤\85डथाळा सुनिश्चित करा.',
+'ipb-change-block' => 'या à¤¸à¥\87à¤\9fà¥\80à¤\82à¤\97à¥\8dà¤\9cसह à¤¸à¤¦à¤¸à¥\8dयास à¤ªà¥\81नà¥\8dहा à¤ªà¥\8dरतिबà¤\82धित à¤\95रा.',
+'ipb-confirm' => 'पà¥\8dरतिबà¤\82ध सुनिश्चित करा.',
 'badipaddress' => 'अंकपत्ता बरोबर नाही.',
 'blockipsuccesssub' => 'अडवणूक यशस्वी झाली',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]ला प्रतिबंधित केले.<br />
@@ -2714,7 +2690,7 @@ $1',
 'infiniteblock' => 'अनंत',
 'expiringblock' => 'समाप्ति $1 $2',
 'anononlyblock' => 'केवळ अनामिक',
-'noautoblockblock' => 'सà¥\8dवà¥\8dयà¤\82à¤\9aलितपà¥\8dरतिबà¤\82धन à¤¸à¥\8dथà¤\97ित केले',
+'noautoblockblock' => 'सà¥\8dवयà¤\82à¤\9aलित à¤ªà¥\8dरतिबà¤\82धन à¤\85वरà¥\82दà¥\8dध केले',
 'createaccountblock' => 'खात्याची निर्मिती प्रतिबंधित केली',
 'emailblock' => 'विपत्र प्रतिबंधीत',
 'blocklist-nousertalk' => 'ला स्वतःचे चर्चापान संपादता येत नाही',
@@ -2725,9 +2701,10 @@ $1',
 'change-blocklink' => 'रोध बदला',
 'contribslink' => 'योगदान',
 'emaillink' => 'ई-मेल पाठवा.',
-'autoblocker' => 'स्वयंचलितप्रतिबंधन केले गेले कारण तुमचा अंकपत्ता अलीकडे "[[User:$1|$1]]"ने वापरला होता. $1 च्या प्रतिबंधनाकरिता दिलेले कारण: "$2" आहे.',
+'autoblocker' => 'स्वयंचलित प्रतिबंधन केले गेले कारण तुमचा अंकपत्ता अलीकडे "[[User:$1|$1]]"ने वापरला होता. $1 च्या प्रतिबंधनाकरिता दिलेले कारण: "$2" आहे.',
 'blocklogpage' => 'रोध नोंदी',
-'blocklog-showlog' => 'या सदस्यावर आधी बन्दी घालन्यात आली आहे. बन्दी सन्दर्भातील अधिक नोन्दी येथे आहेत',
+'blocklog-showlog' => 'हा सदस्य पूर्वी प्रतिबंधित अथवा लपविल्या गेला होता.
+लपविलेल्या नोंदी  संदर्भाकरिता खाली उपलब्ध आहेत.',
 'blocklog-showsuppresslog' => 'हा सदस्य पूर्वी प्रतिबंधित अथवा लपविला गेला होता.
 लपविलेल्या नोंदी खाली संदर्भाकरिता उपलब्ध आहेत.',
 'blocklogentry' => '[[$1]] ला $2 पर्यंत $3 मुळे रोधित केलेले आहे',
@@ -2746,7 +2723,7 @@ $1',
 'range_block_disabled' => 'प्रचालकांची पल्ला बंधने घालण्याची क्षमता अनुपलब्ध केली आहे.',
 'ipb_expiry_invalid' => 'अयोग्य समाप्ती काळ.',
 'ipb_expiry_temp' => 'लपविलेले सदस्यनाम प्रतिबंधन कायमस्वरूपी असले पाहिजे.',
-'ipb_hide_invalid' => 'हà¥\87 à¤\96ात à¤¦à¤¾à¤¬à¤¨à¥\8dयासाथि à¤\85समरà¥\8dथ: à¤¤à¥\87 à¤¸à¥\81धà¥\8dदा à¤¬à¤¦à¤² à¤\95रनà¥\8dयाà¤\9aि à¤¸कतात.',
+'ipb_hide_invalid' => 'हà¥\87 à¤\96ात à¤¦à¤¾à¤¬à¤£à¥\8dयासाठà¥\80 à¤\85समरà¥\8dथ; à¤¤à¥\8dयानà¥\87 à¤\85नà¥\87à¤\95 à¤¸à¤\82पादनà¥\87 à¤\95à¥\87लà¥\87लà¥\80 à¤\85सà¥\82 à¤¶कतात.',
 'ipb_already_blocked' => '"$1" आधीच अवरूद्ध केलेले आहे.',
 'ipb-needreblock' => '$1 आधीच प्रतिबंधित आहे . तुम्हाला त्याची सेटींग्स बदलण्याची इच्छा आहे का ?',
 'ipb-otherblocks-header' => '{{PLURAL:$1|दुसरे प्रतिबंधन|इतर प्रतिबंधने}}',
@@ -2754,26 +2731,25 @@ $1',
 'ipb_cant_unblock' => 'त्रूटी: प्रतिबंधन क्र.$1 मिळाला नाही. त्यावरील प्रतिबंधन कदाचित आधीच उठवले असेल.',
 'ipb_blocked_as_range' => 'त्रूटी:अंकपत्ता IP $1 हा प्रत्यक्षपणे प्रतिबंधित केलेला नाही आणि अप्रतिबंधीत करता येत नाही.तो,अर्थात,$2पल्ल्याचा भाग म्हाणून तो प्रतिबंधित केलेला आहे,जो की अप्रतिबंधीत करता येत नाही.',
 'ip_range_invalid' => 'अंकपत्ता अयोग्य टप्प्यात.',
-'ip_range_toolarge' => '/$1 पेक्षा मोठ्या Range प्रतिबंधनाची परवानगी नाह् are not allowed.',
-'proxyblocker' => 'प्रातिनिधी(प्रॉक्झी)प्रतिबंधक',
-'proxyblockreason' => 'तुमचा अंकपत्ता प्रतिबंधित केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्ना कडे लक्ष वेधा.',
+'ip_range_toolarge' => '/$1 पेक्षा मोठ्या रेंज प्रतिबंधनाची परवानगी नाही.',
+'proxyblocker' => 'प्रातिनिधी(प्रॉक्झी)प्रतिबंधक',
+'proxyblockreason' => 'तुमचा अंकपत्ता प्रतिबंधित केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्नाकडे लक्ष वेधा.',
 'sorbsreason' => '{{SITENAME}}ने वापरलेल्या DNSBL मध्ये तुमच्या अंकपत्त्याची नोंद उघड-उघड प्रतिनिधी म्हणून सूचित केली आहे.',
 'sorbs_create_account_reason' => '{{SITENAME}}च्या DNSBLने तुमचा अंकपत्ता उघड-उघड प्रतिनिधी म्हणून सूचित केला आहे.तुम्ही खाते उघडू शकत नाही',
 'xffblockreason' => '(X-Forwarded-For header) मधील अंकपत्ता,आपला किंवा आपण वापरत असलेल्या सर्व्हरचा,प्रतिबंधित केल्या गेला आहे.प्रतिबंधित करण्याचे मुळ कारण होते:$1',
-'cant-block-while-blocked' => 'तुम्ही स्वतः प्रतिबंधित असताना इतरांना प्रतिबंधित करू शकत नाही.',
-'cant-see-hidden-user' => 'तुम्ही प्रतिब्ंधकरण्याचा प्रयत्न करत असलेले सदस्य खाते आधीपासूनच प्रतिबंधित आणि लपविले गेले आहे.
-तुमच्याकडे सदस्य लपविण्याचे अधिकार नसल्यामुळे , तुम्ही सदस्य प्रतिबंधन  पाहू अथवा संपादित करू शकत नाही',
+'cant-see-hidden-user' => 'तुम्ही प्रतिबंध करण्याचा प्रयत्न करत असलेले सदस्य खाते आधीपासूनच प्रतिबंधित आणि लपविले गेले आहे.
+तुमच्याकडे सदस्य लपविण्याचे अधिकार नसल्यामुळे , तुम्ही सदस्य प्रतिबंधन  पाहू अथवा संपादित करू शकत नाही.',
 'ipbblocked' => 'तुमचे स्वत:चेच खाते प्रतिबंधित असल्यामुळे तुम्ही इतर सदस्यांना प्रतिबंधित किंवा अप्रतिबंधीत करू शकत नाही',
-'ipbnounblockself' => 'तुम्ही स्वतः अप्रतिबंधित करू शकत नाही',
+'ipbnounblockself' => 'तुम्ही स्वतः अप्रतिबंधित करू शकत नाही',
 
 # Developer tools
 'lockdb' => 'विदागारास ताळे ठोका',
 'unlockdb' => 'विदागाराचे ताळे उघडा',
 'lockdbtext' => 'विदागारास ताळे ठोकल्याने सर्व सदस्यांची संपादन क्षमता, त्यांच्या सदस्य पसंती बदलणे,त्यांच्या पहाऱ्याच्या सूची संपादित करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टी संस्थगित होतील.
-à¤\95à¥\83पया à¤¤à¥\81मà¥\8dहाला à¤¹à¥\87à¤\9a à¤\95रावयाà¤\9aà¥\87 à¤\86हà¥\87 à¤\86णि à¤­à¤°à¤£-पà¥\8bषणा à¤¨à¤\82तर विदागाराचे ताळे उघडावयाचे आहे हे निश्चित करा.',
+à¤\95à¥\83पया à¤¤à¥\81मà¥\8dहाला à¤¹à¥\87à¤\9a à¤\95रावयाà¤\9aà¥\87 à¤\86हà¥\87 à¤\86णि à¤\85नà¥\81रà¤\95à¥\8dषणानà¤\82तर (मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dस)विदागाराचे ताळे उघडावयाचे आहे हे निश्चित करा.',
 'unlockdbtext' => 'विदागाराचे ताळे उघडल्याने सर्व सदस्यांची संपादन क्षमता, त्यांच्या सदस्य पसंती बदलणे,त्यांच्या पहाऱ्याच्या सूची संपादित करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टीची क्षमता पुन्हा उपलब्ध होईल.
 कृपया तुम्हाला हेच करावयाचे आहे हे निश्चित करा.',
-'lockconfirm' => 'होय,मला खरेच विदागारास ताळे ठोकायच आहे.',
+'lockconfirm' => 'होय,मला खरेच विदागारास ताळे ठोकायच आहे.',
 'unlockconfirm' => 'होय,मला खरेच विदागाराचे ताळे उघडवयाचे आहे.',
 'lockbtn' => 'विदागारास ताळे ठोका',
 'unlockbtn' => 'विदागारचे ताळे काढा',
@@ -2781,7 +2757,7 @@ $1',
 'lockdbsuccesssub' => 'विदागरास ताळे यशस्वी',
 'unlockdbsuccesssub' => 'विदागाराचे ताळे काढले',
 'lockdbsuccesstext' => 'विदागारास ताळे ठोकण्यात आले आहे.<br />
-तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\82न à¤­à¤°à¤£-पà¥\8bषण à¤ªà¥\82रà¥\8dण à¤\9dालà¥\8dया नंतर [[Special:UnlockDB|ताळे उघडण्याचे]] लक्षात ठेवा.',
+तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\82न à¤\85नà¥\81रà¤\95à¥\8dषण à¤ªà¥\82रà¥\8dण à¤\9dालà¥\8dयानंतर [[Special:UnlockDB|ताळे उघडण्याचे]] लक्षात ठेवा.',
 'unlockdbsuccesstext' => 'विदागाराचे ताळे उघडण्यात आले आहे.',
 'lockfilenotwritable' => 'विदा ताळे संचिका लेखनीय नाही.विदेस ताळे लावण्याकरिता किंवा उघडण्याकरिता, ती आंतरजाल विदादात्याकडून लेखनीय असावयास हवी.',
 'databasenotlocked' => 'विदागारास ताळे नही',
@@ -2817,16 +2793,15 @@ $1',
 'movepagetalktext' => "संबंधित चर्चा पृष्ठ याबरोबर स्थानांतरीत होणार नाही '''जर:'''
 * तुम्ही पृष्ठ दुसऱ्या नामविश्वात स्थानांतरीत करत असाल
 * या नावाचे चर्चा पान अगोदरच अस्तित्वात असेल तर, किंवा
-* à¤\96ालà¥\80ल à¤\9aà¥\87à¤\95बà¥\89à¤\95à¥\8dस à¤¤à¥\81मà¥\8dहà¥\80 à¤\95ाढà¥\82न à¤\9fाà¤\95ला तर.
+* à¤\96ालà¥\80ल à¤\9aà¥\8cà¤\95à¤\9fपà¥\87à¤\9fà¥\80 (à¤\9aà¥\87à¤\95बà¥\89à¤\95à¥\8dस) à¤°à¤¿à¤\95ामà¥\80 à¤ à¥\87वलà¥\80 तर.
 
 या बाबतीत तुम्हाला स्वतःला ही पाने एकत्र करावी लागतील.",
 'movearticle' => 'पृष्ठाचे स्थानांतरण',
-'moveuserpage-warning' => "'''सावधान:''' आपण एक सदस्य पान स्थलांतरित करत आहात. कृपया लक्षात घ्या की, फक्त हे पान स्थलांतरित होइल, सदस्य नाम बदलले जणार नाही.",
-'movenologin' => 'प्रवेश केलेला नाही',
-'movenologintext' => 'पान स्थानांतरित करण्यासाठी तुम्हाला [[Special:UserLogin|प्रवेश]] करावा लागेल.',
-'movenotallowed' => '{{SITENAME}}वरील पाने स्थानांतरीत करण्याची आपल्यापाशी परवानगी नाही.',
-'movenotallowedfile' => 'तुम्हाला दस्तावैज स्थानांतरीत करण्याची परवानगी नाही.',
-'cant-move-user-page' => 'तुम्हाला सदस्याचे दस्तावैज स्थानांतरीत करण्याची परवानगी नाही.',
+'moveuserpage-warning' => "'''सावधान:''' आपण एक सदस्य पान स्थलांतरित करत आहात. कृपया लक्षात घ्या की, फक्त हे पान स्थलांतरित होइल, सदस्य नाम बदलले जाणार नाही.",
+'movenologintext' => 'पान स्थानांतरित करण्यासाठी तुम्ही नोंदीकृत सदस्य हवे व तुम्हाला [[Special:UserLogin|सनोंद-प्रवेश]] करावा लागेल.',
+'movenotallowed' => '{{SITENAME}}वरील पाने स्थानांतरीत करण्याची आपल्यास परवानगी नाही.',
+'movenotallowedfile' => 'तुम्हाला संचिका स्थानांतरीत करण्याची परवानगी नाही.',
+'cant-move-user-page' => 'तुम्हाला सदस्यपान स्थानांतरीत करण्याची परवानगी नाही.(उपपानाव्यतिरिक्त)',
 'cant-move-to-user-page' => 'तुम्हाला एखाद्या पानास सदस्य पानांवर (सदस्य उप-पाने सोडून) घेऊन जाण्यास परवानगी नाही.',
 'newtitle' => 'नवीन शीर्षकाकडे:',
 'move-watch' => 'स्रोत पान व लक्ष  पानांवर निगराणी ठेवा',
@@ -2834,15 +2809,12 @@ $1',
 'pagemovedsub' => 'स्थानांतरण यशस्वी',
 'movepage-moved' => '\'\'\'"$1" ला "$2" मथळ्याखाली स्थानांतरीत केले\'\'\'',
 'movepage-moved-redirect' => 'एक पुनर्निर्देशन तयार केले आहे.',
-'movepage-moved-noredirect' => 'पà¥\81नà¤\83निरà¥\8dदà¥\87शà¥\80त à¤ªà¤¾à¤¨ à¤¤à¤¯à¤¾à¤° à¤\95à¥\87लà¥\87लà¥\87 à¤¨à¤¾à¤¹à¥\80',
-'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले
-नाव योग्य नाही आहे.
+'movepage-moved-noredirect' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन à¤¤à¤¯à¤¾à¤° à¤\95रणà¥\87 à¤¦à¤¡à¤ªà¤£à¥\8dयात à¤\86लà¥\87 à¤\86हà¥\87.',
+'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले नाव योग्य नाही.
+
 कृपया दुसरे नाव शोधा.',
 'cantmove-titleprotected' => 'नवे शीर्षक निर्मित करण्या पासून सुरक्षित केलेले असल्यामुळे,तुम्ही या जागी एखादे पान स्थानांतरीत करू शकत नाही.',
-'talkexists' => 'पृष्ठ यशस्वीरीत्या स्थानांतरीत झाले पण चर्चा पृष्ठ स्थानांतरीत होवू
-शकले नाही कारण त्या नावाचे पृष्ठ आधीच अस्तित्वात होते. कृपया तुम्ही स्वतः ती पृष्ठे एकत्र करा.',
-'movedto' => 'कडे स्थानांतरण केले',
-'movetalk' => 'शक्य असल्यास "चर्चा पृष्ठ" स्थानांतरीत करा',
+'movetalk' => 'संलग्न "चर्चा पान" स्थानांतरीत करा',
 'move-subpages' => 'उपपाने स्थानांतरीत करा (जास्तीतजास्त $1)',
 'move-talk-subpages' => 'चर्चा पानाची सर्व उपपाने स्थानांतरीत करा (जास्तीतजास्त $1)',
 'movepage-page-exists' => '$1 पान अगोदरच अस्तित्त्वात आहे व त्याच्यावर आपोआप पुनर्लेखन करता येणार नाही.',
@@ -2857,15 +2829,15 @@ $1',
 'movereason' => 'कारण:',
 'revertmove' => 'पूर्वपदास न्या',
 'delete_and_move' => 'वगळा आणि स्थानांतरित करा',
-'delete_and_move_text' => '==वगळण्याची आवशकता==
+'delete_and_move_text' => '==वà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤\86वशà¥\8dयà¤\95ता==
 
-लक्ष्यपान  "[[:$1]]" आधीच अस्तित्वात आहे.स्थानांतराचा मार्ग मोकळाकरण्या करिता तुम्हाला ते वगळावयाचे आहे काय?',
+लक्ष्यपान  "[[:$1]]" आधीच अस्तित्वात आहे.स्थानांतराचा मार्ग मोकळा करण्याकरिता तुम्हाला ते वगळावयाचे आहे काय?',
 'delete_and_move_confirm' => 'होय, पान वगळा',
 'delete_and_move_reason' => '"[[$1]]" पासून वगळून स्थानांतर केले.',
 'selfmove' => 'स्रोत आणि लक्ष्य पाने समान आहेत; एखादे पान स्वत:च्याच जागी स्थानांतरीत करता येत नाही.',
 'immobile-source-namespace' => 'नामविश्व "$1" मधील पाने हलवता आली नाहीत.',
 'immobile-target-namespace' => 'नामविश्व "$1" मध्ये पाने हलवता आली नाहीत.',
-'immobile-target-namespace-iw' => 'पà¥\81ढà¥\87 à¤\9aाल à¤\95रणà¥\8dयासाठà¥\80 à¤¹à¤¾ à¤µà¤¿à¤\95िà¤\85à¤\82तरà¥\8dà¤\97त à¤¦à¥\81वा à¤¯à¥\8bà¤\97à¥\8dय à¤²à¤\95à¥\8dष à¤¨à¤¾à¤¹à¥\80',
+'immobile-target-namespace-iw' => 'पान à¤¸à¥\8dथानाà¤\82तरासाठà¥\80, à¤¹à¤¾ à¤µà¤¿à¤\95िà¤\9aा à¤\85à¤\82तरà¥\8dà¤\97त à¤¦à¥\81वा à¤¯à¥\8bà¤\97à¥\8dय à¤²à¤\95à¥\8dषà¥\8dय à¤¨à¤¾à¤¹à¥\80.',
 'immobile-source-page' => 'हे पान हलवता येत नाही',
 'immobile-target-page' => 'लक्ष्य मथळा हलवता येत नाही.',
 'bad-target-model' => 'तुमचे ईच्छित स्थानक हे वेगळे आशय नमुना (कंटेंट मॉडेल) वापरते.  $1 चे $2 मध्ये रुपांतर करु शकत नाही.',
@@ -3196,7 +3168,7 @@ $1',
 'svg-long-desc' => 'SVG संचिका, साधारणपणे $1 × $2 pixels, संचिकेचा आकार: $3',
 'svg-long-desc-animated' => 'सामान्यतः $1 × $2 पिक्सेलची असलेली संजीवक एसव्हीजी संचिका, संचिका-आकार: $3',
 'svg-long-error' => 'अयोग्य SVG प्रकारातील संचिका: $1',
-'show-big-image' => 'सà¤\82पà¥\82रà¥\8dण à¤°à¤¿à¤\9cà¥\8bलà¥\8dयà¥\82शन',
+'show-big-image' => 'मà¥\82ळ à¤¸à¤\82à¤\9aिà¤\95ा',
 'show-big-image-preview' => 'या झलकेचा आकार: $1. पिक्सेल',
 'show-big-image-other' => 'इतर {{PLURAL:$2|resolution|resolutions}}: $1.',
 'show-big-image-size' => '$1 × $2 पिक्सेल',
@@ -3520,8 +3492,7 @@ $1',
 'exif-lightsource-255' => 'इतर प्रकाश स्रोत',
 
 # Flash modes
-'exif-flash-fired-0' => 'Flash did not fire
-फ्लॅशदिवा प्रज्ज्वलित झाला नाही',
+'exif-flash-fired-0' => 'फ्लॅशदिवा प्रज्ज्वलित झाला नाही',
 'exif-flash-fired-1' => 'क्षणदीप(फ्लेशदिवा)प्रज्ज्वलित झाला',
 'exif-flash-return-0' => 'लखलखाट (फ्लॅश) - प्रकाश परावर्तन नोंदणीची सुविधा अनुपलब्ध',
 'exif-flash-return-2' => 'लखलखाटाच्या (फ्लॅश)   परावर्तन प्रकाशाची नोंद झाली नाही',
@@ -3544,19 +3515,19 @@ $1',
 
 'exif-filesource-3' => 'स्थिरचित्र  अंकीय छाउ (डिजीटल स्टील कॅमेरा)',
 
-'exif-scenetype-1' => 'डायरà¥\87à¤\95à¥\8dà¤\9fलà¥\80 छायाचित्रीत चित्र',
+'exif-scenetype-1' => 'थà¥\87à¤\9f छायाचित्रीत चित्र',
 
 'exif-customrendered-0' => 'नियमीत प्रक्रीया',
-'exif-customrendered-1' => 'à¤\86वडà¥\80नà¥\81सार प्रक्रीया',
+'exif-customrendered-1' => 'पारà¤\82पारिà¤\95 प्रक्रीया',
 
-'exif-exposuremode-0' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\9bायाà¤\82à¤\95न',
+'exif-exposuremode-0' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\85नावरण',
 'exif-exposuremode-1' => 'अस्वयंचलित छायांकन',
 'exif-exposuremode-2' => 'स्वयंसिद्ध कंस',
 
 'exif-whitebalance-0' => 'ऍटो व्हाईट बॅलेन्स',
 'exif-whitebalance-1' => 'मॅन्यूअल व्हाईट बॅलेन्स',
 
-'exif-scenecapturetype-0' => 'दरà¥\8dà¤\9cा',
+'exif-scenecapturetype-0' => 'दरà¥\8dà¤\9cà¥\87दार',
 'exif-scenecapturetype-1' => 'आडवे',
 'exif-scenecapturetype-2' => 'उभे',
 'exif-scenecapturetype-3' => 'रात्रीचे दृश्य',
@@ -3572,8 +3543,8 @@ $1',
 'exif-contrast-2' => 'कठीण',
 
 'exif-saturation-0' => 'सर्व साधारण',
-'exif-saturation-1' => 'à¤\95मà¥\80 à¤¸à¥\85à¤\9aà¥\82रà¥\87शन',
-'exif-saturation-2' => 'à¤\9cासà¥\8dत à¤¸à¥\85à¤\9aà¥\82रà¥\87शन',
+'exif-saturation-1' => 'निमà¥\8dन à¤¸à¤\82तà¥\83पà¥\8dति',
+'exif-saturation-2' => 'à¤\89à¤\9aà¥\8dà¤\9a à¤¸à¤\82तà¥\83पà¥\8dति',
 
 'exif-sharpness-0' => 'सर्वसाधारण',
 'exif-sharpness-1' => 'मृदू',
@@ -3593,7 +3564,7 @@ $1',
 'exif-gpslongitude-w' => 'पश्चिम रेखांश',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => 'समुद्रपातळीच्यावर $1 {{PLURAL:$1|मीटर|मीटर}}',
+'exif-gpsaltitude-above-sealevel' => 'समुद्रपातळीच्यावर $1 {{PLURAL:$1|मीटर}}',
 'exif-gpsaltitude-below-sealevel' => 'समुद्रपातळीच्याखाली $1 {{PLURAL:$1|मीटर|मीटर}}',
 
 'exif-gpsstatus-a' => 'मोजणी काम चालू आहे',
@@ -3665,15 +3636,10 @@ $1',
 'exif-urgency-high' => 'उच्चतम ($1)',
 'exif-urgency-other' => '($1) उपयोगकर्ता-निश्चित  प्राधान्य',
 
-# External editor support
-'edit-externally' => 'बाहेरील संगणक प्रणाली वापरून ही संचिका संपादित करा.',
-'edit-externally-help' => 'अधिक माहितीसाठी  [https://www.mediawiki.org/wiki/Manual:External_editors स्थापन करण्याच्या सूचना] येथे पहा.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सर्व',
 'namespacesall' => 'सर्व',
 'monthsall' => 'सर्व',
-'limitall' => 'सर्व',
 
 # Email address confirmation
 'confirmemail' => 'ई-मेल पत्ता पडताळून पहा',
@@ -3691,7 +3657,6 @@ $1',
 'confirmemail_needlogin' => 'तुमचा विपत्रपत्ता प्रमाणित करण्यासाठी तुम्ही $1 करावयास हवे.',
 'confirmemail_success' => 'तुमचा विपत्र (ई-मेल) पत्ता प्रमाणित झाला आहे.तुम्ही आता [[Special:UserLogin|दाखल]] होऊ शकता आणि विकिचा आनंद घेऊ शकता.',
 'confirmemail_loggedin' => 'तुमचा विपत्र (ई-मेल) पत्ता आता प्रमाणित झाला आहे.',
-'confirmemail_error' => 'तुमची निश्चिती जतन करताना काही तरी चूकले',
 'confirmemail_subject' => '{{SITENAME}} विपत्र (ई-मेल) पत्ता प्रमाणित',
 'confirmemail_body' => 'कुणीतरी, बहुतेक तुम्ही, $1 या पत्त्यावारून, "$2" खाते हा ईमेल पत्ता वापरून {{SITENAME}} या संकेतस्थळावर उघडले आहे.
 
@@ -3752,7 +3717,7 @@ $5
 # action=watch/unwatch
 'confirm-watch-button' => 'ठीक आहे',
 'confirm-watch-top' => 'हे पान तुमच्या पहारा सूचीमध्ये टाकायचे?',
-'confirm-unwatch-button' => 'ठà¥\80à¤\95',
+'confirm-unwatch-button' => 'ठिà¤\95 à¤\86हà¥\87',
 'confirm-unwatch-top' => 'हे पान तुमच्या नित्य पहाण्याच्या सूचीतून काढायचे?',
 
 # Multipage image navigation
@@ -3777,7 +3742,7 @@ $5
 'autosumm-blank' => 'या पानावरील सगळा मजकूर काढला',
 'autosumm-replace' => "पान '$1' वापरून बदलले.",
 'autoredircomment' => '[[$1]] कडे पुनर्निर्देशित',
-'autosumm-new' => 'नवीन पान: $1',
+'autosumm-new' => 'नवीन पान "$1"',
 
 # Size units
 'size-bytes' => '$1 बा.',
@@ -3841,8 +3806,13 @@ $5
 'version-parser-function-hooks' => 'पृथकक कार्य अंकुश',
 'version-hook-name' => 'अंकुश नाव',
 'version-hook-subscribedby' => 'वर्गणीदार',
-'version-version' => '(आवृत्ती $1)',
-'version-license' => 'परवाना',
+'version-version' => '($1)',
+'version-license' => 'मिडियाविकि परवाना',
+'version-ext-license' => 'परवाना',
+'version-ext-colheader-name' => 'विस्तारक',
+'version-ext-colheader-version' => 'आवृत्ती',
+'version-ext-colheader-license' => 'परवाना',
+'version-ext-colheader-description' => 'वर्णन',
 'version-poweredby-credits' => "हा विकी '''[https://www.mediawiki.org/ मीडियाविकी]'''द्वारे संचालित आहे, प्रताधिकारित © २००१-$1 $2.",
 'version-poweredby-others' => 'इतर',
 'version-poweredby-translators' => 'ट्रांसलेटविकि.नेट वरील भाषांतरकार',
@@ -3862,7 +3832,8 @@ $5
 # Special:Redirect
 'redirect' => 'संचिका,सदस्य किंवा आवृत्ती या ओळखणीनुसार पुनर्निर्देशन',
 'redirect-legend' => 'संचिका अथवा पानास पुनर्निर्देशन',
-'redirect-summary' => 'हे विशेष पान एक संचिकेस पुनर्निर्देशित करते(दिलेले संचिकानाम),एक पान(दिलेली आवृत्ती ओळ्खण) किंवा एक सदस्यपान(दिलेला सदस्य अंक).',
+'redirect-summary' => 'हे विशेष पान एक संचिकेस पुनर्निर्देशित करते(दिलेले संचिकानाम),एक पान(दिलेली आवृत्ती किंवा पान ओळखण) किंवा एक सदस्यपान(दिलेला सदस्य अंक).
+वापर:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], किंवा [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'जा',
 'redirect-lookup' => 'बघा:',
 'redirect-value' => 'मुल्य:',
@@ -3884,8 +3855,9 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'विशेष पृष्ठे',
+'specialpages-note-top' => 'विवरण',
 'specialpages-note' => '* सर्वसाधारण विशेष पृष्ठे.
-* <strong class="mw-specialpagerestricted">प्रतिबंधित विशेष पृष्ठे.</strong>',
+* <span class="mw-specialpagerestricted">प्रतिबंधित विशेष पृष्ठे.</span>',
 'specialpages-group-maintenance' => 'व्यवस्थापन अहवाल',
 'specialpages-group-other' => 'इतर विशेष पृष्ठे',
 'specialpages-group-login' => 'प्रवेश / नवीन सदस्य नोंदणी',
@@ -3930,7 +3902,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'पानांची तुलना करा',
-'compare-selector' => 'पानांच्या आवर्तनांची तुलना करा',
 'compare-page1' => 'पान १',
 'compare-page2' => 'पान २',
 'compare-rev1' => 'आवर्तन १',
@@ -4089,10 +4060,9 @@ $5
 
 # Special:ExpandTemplates
 'expandtemplates' => 'साचे वाढवा',
-'expand_templates_intro' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤\95ाहà¥\80 à¤®à¤\9cà¤\95à¥\82र à¤\98à¥\87à¤\8aन à¤¤à¥\8dयातिल सर्व साचे वाढविते. तसेच हे पान पार्सर फंक्शन्स जसे की
+'expand_templates_intro' => 'हà¥\87 à¤ªà¤¾à¤¨ à¤\95ाहà¥\80 à¤®à¤\9cà¤\95à¥\82र à¤\98à¥\87à¤\8aन à¤\86वरà¥\8dतà¥\80 à¤ªà¤¦à¥\8dधतà¥\80नà¥\87 à¤¤à¥\8dयातà¥\80ल सर्व साचे वाढविते. तसेच हे पान पार्सर फंक्शन्स जसे की
 <nowiki>{{</nowiki>#language:...}}, व बदलणार्‍या किमती (variables) जसे की
-<nowiki>{{</nowiki>CURRENTDAY}}&mdash;म्हणजेच दोन ब्रेसेसमधील सर्व मजकूर वाढविते.
-मीडियाविकिमधून पार्सर स्टेज मागवून हे केले जाते.',
+<nowiki>{{</nowiki>CURRENTDAY}}&mdash;म्हणजेच दोन ब्रेसेसमधील बरेच काही वाढविते.',
 'expand_templates_title' => '{{FULLPAGENAME}} वगैरे करीता, कन्टेक्स्ट शीर्षक:',
 'expand_templates_input' => 'इनपुट मजकूर:',
 'expand_templates_output' => 'निकाल',
@@ -4103,4 +4073,6 @@ $5
 'expand_templates_generate_xml' => 'XML चा पार्स (parse) वृक्ष दाखवा',
 'expand_templates_preview' => 'झलक',
 
+# Unknown messages
+'uploadinvalidxml' => 'अपभारीत संचिकेतील XML पार्स करता आले नाही.',
 );
index 503dca4..0e9b35d 100644 (file)
@@ -75,7 +75,6 @@ $messages = array(
 'tog-shownumberswatching' => 'Манярын ӹлӹштӓшӹм вӓнгӹмӹ списокышкышты пыртенӹт, анжыкташ',
 'tog-oldsig' => 'Ылшы сирӹмӹ подписьӹм анзыцок анжен лӓктӓш',
 'tog-fancysig' => 'Вики-пӓлӹкӹн ӹшке подписьшӹ (автоматический ажедмӓш гӹц пасна)',
-'tog-showjumplinks' => '«ванжаш» палшышы ажедмӓшвлӓм чӱктӓш',
 'tog-uselivepreview' => 'Текстӹм пӹсӹн анзыц анжен лӓкмӹм кычылташ (эксперимент семӹнь JavaScript)',
 'tog-forceeditsummary' => 'Мам тӧрлӹмӹ тӹ «нырын» охыр ылмыжы гишӓн пӓлдӹртӓш',
 'tog-watchlisthideown' => 'Мам тӧрленӓм, тӹдӹм вӓнгӹмӹ спискышты шӹлтӓш, анжыкташ агыл',
@@ -211,7 +210,7 @@ $messages = array(
 'jumptonavigation' => 'навигаци',
 'jumptosearch' => 'кӹчӓлӓш',
 
-# 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).
+# 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).
 'aboutsite' => 'Тидӹ гишӓн сирӹмӓш {{grammar:genitive|{{SITENAME}}}}',
 'aboutpage' => 'Project:Сирӹмӓш',
 'copyright' => 'Тидӹ, тидӹ семӹнь ылеш $1.',
@@ -219,7 +218,6 @@ $messages = array(
 'disclaimers' => 'Вӓшештӹмӹ шая (ответственность) гӹц карангмаш',
 'disclaimerpage' => 'Project:Вӓшештӹмӓш (ответственность) гӹц карангмаш',
 'edithelp' => 'Тӧрлӓш манын палшык',
-'edithelppage' => 'Help:Тӧрлӓш манын палшык',
 'helppage' => 'Help:Палшык',
 'mainpage' => 'Тӹнг ӹлӹштӓш',
 'mainpage-description' => 'Тӹнг ӹлӹштӓш',
@@ -230,8 +228,6 @@ $messages = array(
 
 'retrievedfrom' => 'Кышец нӓлмӹ «$1»',
 'youhavenewmessages' => 'Тӓ нӓлӹндӓ $1 ($2).',
-'newmessageslink' => 'у увервлӓ',
-'newmessagesdifflink' => 'пӹтӓртӹш вашталтымаш',
 'editsection' => 'тӧрлӓш',
 'editold' => 'тӧрлӓш',
 'editlink' => 'тӧрлӓш',
@@ -354,10 +350,6 @@ $messages = array(
 # Search results
 'searchresults' => 'Кӹчӓлмӓшӹн результатшы',
 'searchresults-title' => 'Кӹчӓлӓш «$1»',
-'searchresulttext' => 'Ӹлӹштӓшӹшты шукырак информацим нӓлӓш манын [[{{MediaWiki:Helppage}}| палшыкым анжал]]',
-'searchsubtitle' => 'Кӹчӓлмӹ годым«[[:$1]]» ([[Special:Prefixindex/$1|кыды, ти лӹм доно тӹнгӓлӓлтеш]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|кыдывлӓ ти лӹмӹм анжыктенӹт]])',
-'searchsubtitleinvalid' => 'Ядмы семӹнь «$1»',
-'notitlematches' => 'Ӹлӹштӓшвлӓн лӹм икань агыл',
 'notextmatches' => 'Ӹлӹштӓшӹн текствлӓ доно икань агыл',
 'prevn' => '{{PLURAL:$1|анзылнышы $1|анзылнышывлӓ $1|анзылнышывлӓ $1}}',
 'nextn' => '{{PLURAL:$1|паштек кешӹ $1|паштек кешӹвлӓ $1|паштек кешӹвлӓ $1}}',
@@ -369,12 +361,9 @@ $messages = array(
 'search-interwiki-caption' => 'Техеньок проектвлӓ',
 'search-interwiki-default' => '$1 результ.:',
 'search-interwiki-more' => '(эче)',
-'nonefound' => "'''Шотыш нӓлдӓ.''' Нимат ак лиӓлт гӹнь, керӓл шамакым цилӓ вӓреок кӹчӓлӓш ак тӹнгӓл. Кӹчӓлжӹ манын,   ''all:'' префиксӹм кычылтда.  Тенге тӓ лӹмвлӓм мода (кӱ тишкӹ сирӓ, нӹнӹн Кӓнгӓшӹмӓшвлӓштӹмӓт, шаблонвлӓмӓт дӓ молымат), уке гӹнь, шукырак лӹмӹм анжыктыда",
-'powersearch' => 'Кымдан кӹчӓлмӓш',
 'powersearch-legend' => 'Кымдан кӹчӓлмӓш',
 'powersearch-ns' => 'Кымдецвлӓштӹ лӹмвлӓм кӹчӓлмӓш:',
 'powersearch-redir' => 'Ажедмӓшвлӓм анжыкташ',
-'powersearch-field' => 'Кӹчӓлӓш',
 
 # Preferences page
 'preferences' => 'Настройкывлӓ',
@@ -608,8 +597,6 @@ $messages = array(
 'pagemovedsub' => 'Ӹлӹштӓшӹн лӹмжӹм вашталтымы',
 'movepage-moved' => "'''Ӹлӹштӓшӹн  «$1» лӹмжӹ ӹнде«$2»'''",
 'articleexists' => 'Техень лӹмӓн ӹлӹштӓш тӹтежӓт улы. Пуры лидӓ, вес лӹмӹм айырыда.',
-'talkexists' => "'''Ӹлӹштӓш лӹм вашталтымы, но техень лӹмӓн ӹлӹштӓш тӹтежӓт улы, кӓнгӓшӹмӓш ӹлӹштӓшӹн лӹмжӹм вашталташ ак ли. Пуры лидӓ, кид доно нӹнӹм ушыда.'''",
-'movedto' => 'техеньӹш вашталтымы',
 'movetalk' => 'Ти кӓнгӓшӹмӓш ӹлӹштӓшӹн лӹмжӹм вашталташ',
 'movelogpage' => 'Лӹмвлӓм вашталтымы журнал',
 'movereason' => 'Ӓмӓлжӹ:',
@@ -712,10 +699,6 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
-# 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' => 'цилӓ',
 'namespacesall' => 'цилӓ',
index 18db5e9..b79a9fd 100644 (file)
@@ -111,7 +111,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Laman_lapuk' ),
        'Blankpage'                 => array( 'Laman_kosong' ),
        'Block'                     => array( 'Sekat_IP' ),
-       'Blockme'                   => array( 'Sekat_saya' ),
        'Booksources'               => array( 'Sumber_buku' ),
        'BrokenRedirects'           => array( 'Lencongan_rosak', 'Pelencongan_rosak' ),
        'Categories'                => array( 'Kategori' ),
@@ -123,9 +122,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Buka_akaun' ),
        'Deadendpages'              => array( 'Laman_buntu' ),
        'DeletedContributions'      => array( 'Sumbangan_dihapuskan' ),
-       'Disambiguations'           => array( 'Penyahtaksaan', 'Nyahkekaburan' ),
        'DoubleRedirects'           => array( 'Lencongan_berganda', 'Pelencongan_berganda' ),
        'Emailuser'                 => array( 'E-mel_pengguna' ),
+       'ExpandTemplates'           => array( 'Kembangkan_templat' ),
        'Export'                    => array( 'Eksport' ),
        'Fewestrevisions'           => array( 'Semakan_tersikit' ),
        'FileDuplicateSearch'       => array( 'Cari_fail_berganda' ),
@@ -220,7 +219,6 @@ $messages = array(
 'tog-minordefault' => 'Tandakan semua suntingan sebagai kecil secara asali',
 'tog-previewontop' => 'Tunjukkan pralihat di atas kotak sunting',
 'tog-previewonfirst' => 'Tunjukkan pralihat pada suntingan pertama',
-'tog-nocache' => 'Lumpuhkan pengagregatan laman',
 'tog-enotifwatchlistpages' => 'E-mel kepada saya tentang perubahan pada halaman-halaman dan fail-fail dalam senarai pantau saya',
 'tog-enotifusertalkpages' => 'E-melkan saya apabila berlaku perubahan pada laman perbincangan saya',
 'tog-enotifminoredits' => 'Juga e-mel kepada saya tentang suntingan kecil pada halaman-halaman dan fail-fail',
@@ -356,7 +354,6 @@ $messages = array(
 'qbedit' => 'Sunting',
 'qbpageoptions' => 'Laman ini',
 'qbmyoptions' => 'Laman-laman saya',
-'qbspecialpages' => 'Laman khas',
 'faq' => 'Soalan Lazim',
 'faqpage' => 'Project:Soalan Lazim',
 
@@ -416,7 +413,7 @@ $messages = array(
 'articlepage' => 'Lihat laman kandungan',
 'talk' => 'Perbincangan',
 'views' => 'Rupa',
-'toolbox' => 'Alatan',
+'toolbox' => 'Peralatan',
 'userpage' => 'Lihat laman pengguna',
 'projectpage' => 'Lihat laman projek',
 'imagepage' => 'Lihat laman fail',
@@ -476,8 +473,8 @@ $1',
 'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
 'youhavenewmessagesfromusers' => 'Anda menerima $1 daripada {{PLURAL:$3|seorang|$3 orang}} pengguna lain ($2).',
 'youhavenewmessagesmanyusers' => 'Anda menerima $1 daripada ramai pengguna ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|pesanan|pesanan-pesanan}} baru',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|perubahan-perubahan}} terkini',
+'newmessageslinkplural' => '{{PLURAL:$1|satu pesanan|999=beberapa pesanan}} baru',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|999=beberapa perubahan}} terkini',
 'youhavenewmessagesmulti' => 'Anda telah menerima pesanan baru pada $1',
 'editsection' => 'sunting',
 'editold' => 'sunting',
@@ -576,9 +573,6 @@ Tiada sebab diberikan.',
 'perfcachedts' => 'Data yang berikut disimpan dalam cache dan kali terakhir dikemaskinikan pada $1. Semaksimum {{PLURAL:$4|satu hasil|$4 hasil}} terdapat dalam cache.',
 'querypage-no-updates' => 'Buat masa ini, pengkemaskinian laman ini telah dilumpuhkan.
 Data yang ada di sini tidak akan disegarkan semula sekarang.',
-'wrong_wfQuery_params' => 'Parameter salah bagi wfQuery()<br />
-Fungsi: $1<br />
-Pertanyaan: $2',
 'viewsource' => 'Lihat sumber',
 'viewsource-title' => 'Lihat sumber bagi $1',
 'actionthrottled' => 'Tindakan didikitkan',
@@ -606,7 +600,8 @@ Pentadbir yang menguncinya memberikan penjelasan yang berikut: "$3".',
 'invalidtitle-knownnamespace' => 'Tajuk tidak sah dengan ruang nama "$2" dan teks "$3"',
 'invalidtitle-unknownnamespace' => 'Tajuk tidak sah dengan nombor ruang nama tidak dikenali $1 dan teks "$2"',
 'exception-nologin' => 'Belum log masuk',
-'exception-nologin-text' => 'Halaman atau tindakan ini memerlukan anda untuk log masuk ke dalam wiki ini.',
+'exception-nologin-text' => 'Sila [[Special:Userlogin|log masuk]] untuk dapat mengakses halaman atau tindakan ini.',
+'exception-nologin-text-manual' => 'Sila $1 untuk dapat mengakses halaman atau tindakan ini.',
 
 # Virus scanner
 'virus-badscanner' => "Konfigurasi rosak: pengimbas virus yang tidak diketahui: ''$1''",
@@ -653,9 +648,11 @@ Jangan lupa untuk mengubah [[Special:Preferences|keutamaan anda di {{SITENAME}}]
 'gotaccount' => "Sudah mempunyai akaun? '''$1'''.",
 'gotaccountlink' => 'Log masuk',
 'userlogin-resetlink' => 'Lupa nama pengguna/kata laluan anda?',
-'userlogin-resetpassword-link' => 'Reset kata laluan anda',
+'userlogin-resetpassword-link' => 'Lupa kata laluan anda?',
 'helplogin-url' => 'Help:Log masuk',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Bantuan untuk log masuk]]',
+'userlogin-loggedin' => 'Anda sudah log masuk sebagai {{GENDER:$1|$1}}. Gunakan borang di bawah untuk log masuk sebagai pengguna lain.',
+'userlogin-createanother' => 'Buka satu lagi akaun',
 'createacct-join' => 'Isikan keterangan anda di bawah.',
 'createacct-another-join' => 'Masukkan maklumat akaun baru di bawah.',
 'createacct-emailrequired' => 'Alamat e-mel',
@@ -698,7 +695,7 @@ Pastikan anda telah bolehkan kuki, muat semula laman ini dan cuba lagi.',
 'passwordtooshort' => 'Kata laluan mestilah sekurang-kurangnya {{PLURAL:$1|1 aksara|$1 aksara}}.',
 'password-name-match' => 'Kata laluan anda mesti berbeza daripada nama pengguna anda.',
 'password-login-forbidden' => 'Penggunaan nama pengguna dan kata laluan ini adalah dilarang.',
-'mailmypassword' => 'E-melkan kata laluan baru',
+'mailmypassword' => 'Set semula kata laluan',
 'passwordremindertitle' => 'Pengingat kata laluan daripada {{SITENAME}}',
 'passwordremindertext' => 'Seseorang (mungkin anda, dari alamat IP $1) telah meminta kata laluan baru untuk {{SITENAME}} ($4). Kata laluan sementara baru untuk pengguna "$2" ialah "$3". Untuk menamatkan prosedur ini, anda perlu log masuk dan tetapkan kata laluan yang baru dengan segera. Kata laluan sementara anda akan luput dalam $5 hari.
 
@@ -710,17 +707,15 @@ e-mel yang didaftarkan oleh "$1".
 Sila log masuk semula setelah anda menerima e-mel tersebut.',
 'blocked-mailpassword' => 'Alamat IP anda telah disekat daripada sebarang penyuntingan, oleh itu, untuk
 mengelak penyalahgunaan, anda tidak dibenarkan menggunakan ciri pemulihan kata laluan.',
-'eauthentsent' => 'Sebuah e-mel pengesahan telah dikirim kepada alamat e-mel tersebut.
-Sebelum e-emel lain boleh dikirim kepada alamat tersebut, anda perlu mengikuti segala arahan dalam e-mel tersebut
-untuk membuktikan bahawa alamat tersebut memang milik anda.',
+'eauthentsent' => 'Sepucuk e-mel pengesahan telah dikirim kepada alamat e-mel yang dinyatakan.
+Sebelum e-mel lain boleh dikirim kepada alamat tersebut, anda perlu mematuhi arahan-arahan pada e-mel pengesahan tersebut untuk mengesahkan bahawa alamat tersebut benar-benar kepunyaan anda.',
 'throttled-mailpassword' => 'E-mel set semula kata laluan telah dihantar dalam tempoh $1 jam yang lalu.
 Untuk mencegah salah guna, hanya sepucuk e-mel set semula kata laluan dihantar setiap {{PLURAL:$1|jam|$1 jam}}.',
 'mailerror' => 'Ralat ketika mengirim e-mel: $1',
 'acct_creation_throttle_hit' => 'Pengunjung wiki ini yang menggunakan alamat IP anda telah membuka sebanyak $1 akaun semenjak sehari lepas, iaitu merupakan had maksimum yang dibenarkan dalam tempoh tersebut.
 Akibatknya, pengunjung dari alamat IP ini tidak boleh membuka akaun lagi pada masa sekarang.',
 'emailauthenticated' => 'Alamat e-mel anda telah disahkan pada $2, $3.',
-'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu,
-e-mel bagi ciri-ciri berikut tidak boleh dikirim.',
+'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu, e-mel tidak boleh dikirim bagi ciri-ciri berikut.',
 'noemailprefs' => 'Anda perlu menetapkan alamat e-mel terlebih dahulu untuk menggunakan ciri-ciri ini.',
 'emailconfirmlink' => 'Sahkan alamat e-mel anda.',
 'invalidemailaddress' => 'Alamat e-mel tersebut tidak boleh diterima kerana ia tidak sah. Sila masukkan alamat e-mel yang betul atau kosongkan sahaja ruangan tersebut.',
@@ -749,7 +744,7 @@ Jika anda memilih untuk menyatakannya, ini akan digunakan untuk memberikan atrib
 'user-mail-no-body' => 'Anda telah cuba menghantar e-mel dengan isi yang kosong atau terlampau ringkas.',
 
 # Change password dialog
-'resetpass' => 'Tukar kata laluan',
+'changepassword' => 'Tukar kata laluan',
 'resetpass_announce' => 'Anda sedang log masuk dengan kata laluan sementara. Untuk log masuk dengan sempurna, sila tetapkan kata laluan baru di sini:',
 'resetpass_text' => '<!-- Tambah teks di sini -->',
 'resetpass_header' => 'Tukar kata laluan',
@@ -770,7 +765,7 @@ Anda mungkin telah pun berjaya menukar kata laluan anda atau meminta kata laluan
 # Special:PasswordReset
 'passwordreset' => 'Set semula kata laluan',
 'passwordreset-text-one' => 'Lengkapkan borang ini untuk mengeset semula kata laluan anda.',
-'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan untuk mengeset semula kata laluan anda.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan berikut untuk menerima kata laluan sementara melalui e-mel.}}',
 'passwordreset-legend' => 'Set semula kata laluan',
 'passwordreset-disabled' => 'Ciri set semula kata laluan telah dimatikan di wiki ini.',
 'passwordreset-emaildisabled' => 'Ciri-ciri e-mel telah dipadamkan di wiki ini.',
@@ -1061,6 +1056,9 @@ Argumen-argumen ini telah ditinggalkan.',
 'cantcreateaccounttitle' => 'Akaun tidak dapat dibuka',
 'cantcreateaccount-text' => "Pembukaan akaun daripada alamat IP ini (<b>$1</b>) telah disekat oleh [[User:$3|$3]].
 
+Sebab yang diberikan oleh $3 ialah ''$2''",
+'cantcreateaccount-range-text' => "Pembukaan akaun dari alamat-alamat IP dalam julat '''$1''', termasuk alamat IP anda ('''$4'''), telah disekat oleh [[User:$3|$3]].
+
 Sebab yang diberikan oleh $3 ialah ''$2''",
 
 # History pages
@@ -1131,10 +1129,6 @@ Anda boleh melihat perbezaan ini; butiran boleh didapati di [{{fullurl:{{#Specia
 'revisiondelete' => 'Hapus/nyahhapus semakan',
 'revdelete-nooldid-title' => 'Tiada semakan sasaran',
 'revdelete-nooldid-text' => 'Anda tidak menyatakan semakan sasaran.',
-'revdelete-nologtype-title' => 'Jenis log tidak diberi',
-'revdelete-nologtype-text' => 'Anda tidak menyatakan jenis log untuk tindakan ini.',
-'revdelete-nologid-title' => 'Entri log tidak sah',
-'revdelete-nologid-text' => 'Anda tidak menyatakan peristiwa log sasaran perkara untuk melakukan fungsi ini atau entri ynag dinyatakan tidak wujud.',
 'revdelete-no-file' => 'Fail yang dinyatakan tidak wujud.',
 'revdelete-show-file-confirm' => 'Anda pasti anda mahu paparkan semakan yang telah dihapuskan bagi fail "<nowiki>$1</nowiki>" dari $2 pada $3?',
 'revdelete-show-file-submit' => 'Ya',
@@ -1143,19 +1137,20 @@ Anda boleh melihat perbezaan ini; butiran boleh didapati di [{{fullurl:{{#Specia
 'revdelete-text' => "'''Semakan dan peristiwa yang dihapuskan akan tetap muncul dalam sejarah laman dan log, tetapi kandungannya tidak boleh diakses awam.'''
 Pentadbir {{SITENAME}} boleh melihat kandungan tersebut dan menyahhapuskannya semula melalui laman ini melainkan mempunyai batasan.",
 'revdelete-confirm' => 'Sila sahkan bahawa anda bertujuan melakukan ini, bahawa anda faham akibatnya, dan anda melakukannya menurut [[{{MediaWiki:Policy-url}}| polisi]].',
-'revdelete-suppress-text' => "Pembatasan ini '''hanya''' untuk digunakan dalam kes-kes berikut:
-* Maklumat peribadi tidak sesuai
+'revdelete-suppress-text' => "Sekatan seharusnya digunakan '''hanya''' untuk kes-kes berikut:
+* maklumat yang mungkin berunsur fitnah
+* maklumat peribadi tidak sesuai
 *: ''alamat rumah dan nombor telefon, nombor keselamatan sosial, dsbg.''",
 'revdelete-legend' => 'Tetapkan batasan:',
-'revdelete-hide-text' => 'Sembunyikan teks semakan',
+'revdelete-hide-text' => 'Teks semakan',
 'revdelete-hide-image' => 'Sembunyikan kandungan fail',
 'revdelete-hide-name' => 'Sembunyikan tindakan dan sasaran',
-'revdelete-hide-comment' => 'Sembunyikan komen suntingan',
-'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
+'revdelete-hide-comment' => 'Ringkasan suntingan',
+'revdelete-hide-user' => 'Nama pengguna/IP penyunting',
 'revdelete-hide-restricted' => 'Sekat data daripada penyelia dan pengguna lain',
 'revdelete-radio-same' => '(jangan tukar)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Tidak',
+'revdelete-radio-set' => 'Tersembunyi',
+'revdelete-radio-unset' => 'Kelihatan',
 'revdelete-suppress' => 'Sekat data daripada semua pengguna, termasuk penyelia',
 'revdelete-unsuppress' => 'Buang batasan pada semakan yang dipulihkan',
 'revdelete-log' => 'Sebab:',
@@ -1167,8 +1162,6 @@ $1",
 'logdelete-failure' => "'''Log nampak tidak dapat diset:'''
 $1",
 'revdel-restore' => 'Tukar kebolehnampakan',
-'revdel-restore-deleted' => 'semakan dihapuskan',
-'revdel-restore-visible' => 'semakan nampak',
 'pagehist' => 'Sejarah laman',
 'deletedhist' => 'Sejarah yang dihapuskan',
 'revdelete-hide-current' => 'Ralat menyembunyikan item bertarikh $2, $1: ini adalah versi semasa.
@@ -1248,12 +1241,8 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 # Search results
 'searchresults' => 'Hasil carian',
 'searchresults-title' => 'Hasil carian "$1"',
-'searchresulttext' => 'Untuk maklumat lanjut tentang carian dalam {{SITENAME}}, sila lihat [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Anda mencari \'\'\'[[$1]]\'\'\' ([[Special:Prefixindex/$1|semua laman dengan awalan "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|semua laman yang mengandungi pautan ke "$1"]])',
-'searchsubtitleinvalid' => 'Untuk pertanyaan "$1"',
 'toomanymatches' => 'Terlalu banyak padanan dipulangkan, sila cuba pertanyaan lain',
 'titlematches' => 'Padanan tajuk laman',
-'notitlematches' => 'Tiada tajuk laman yang sepadan',
 'textmatches' => 'Padanan teks laman',
 'notextmatches' => 'Tiada teks laman yang sepadan',
 'prevn' => '{{PLURAL:$1|$1 sebelumnya}}',
@@ -1262,10 +1251,8 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 'nextn-title' => '$1 hasil berikutnya',
 'shown-title' => 'Papar $1 hasil setiap laman',
 'viewprevnext' => 'Lihat ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Pilihan carian',
 'searchmenu-exists' => "* Laman '''[[$1]]'''",
 'searchmenu-new' => "'''Cipta laman \"[[:\$1]]\" di wiki ini!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Senarai laman dengan awalan ini]]',
 'searchprofile-articles' => 'Laman kandungan',
 'searchprofile-project' => 'Laman bantuan dan projek',
 'searchprofile-images' => 'Multimedia',
@@ -1286,21 +1273,16 @@ Butirannya boleh didapati di [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGEN
 'search-interwiki-default' => 'Keputusan daripada $1:',
 'search-interwiki-more' => '(lagi)',
 'search-relatedarticle' => 'Berkaitan',
-'mwsuggest-disable' => 'Matikan ciri cadangan carian',
 'searcheverything-enable' => 'Cari dalam semua ruang nama',
 'searchrelated' => 'berkaitan',
 'searchall' => 'semua',
 'showingresults' => "Yang berikut ialah '''$1''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
 'showingresultsnum' => "Yang berikut ialah '''$3''' hasil bermula daripada yang {{PLURAL:$2|pertama|ke-'''$2'''}}.",
 'showingresultsheader' => "{{PLURAL:$5|Keputusan '''$1''' daripada '''$3'''|Keputusan '''$1 - $2''' daripada '''$3'''}} untuk '''$4'''",
-'nonefound' => "'''Catatan''': Hanya sesetengah ruang nama dicari secara asali.
-Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbincangan, templat, dan lain-lain), atau gunakan ruang nama yang dikehendaki sebagai awalan.",
 'search-nonefound' => 'Tiada hasil yang sepadan dengan pertanyaan.',
-'powersearch' => 'Carian lanjutan',
 'powersearch-legend' => 'Carian lanjutan',
 'powersearch-ns' => 'Cari dalam ruang nama:',
 'powersearch-redir' => 'Termasuk lencongan',
-'powersearch-field' => 'Cari',
 'powersearch-togglelabel' => 'Pilih:',
 'powersearch-toggleall' => 'Semua',
 'powersearch-togglenone' => 'Tiada',
@@ -1312,7 +1294,7 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
 'preferences' => 'Keutamaan',
 'mypreferences' => 'Keutamaan',
 'prefs-edits' => 'Jumlah suntingan:',
-'changepassword' => 'Tukar kata laluan',
+'prefsnologintext2' => 'Sila $1 untuk melihat hasil suntingan anda.',
 'prefs-skin' => 'Rupa',
 'skin-preview' => 'Pralihat',
 'datedefault' => 'Tiada keutamaan',
@@ -1335,13 +1317,11 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
 'prefs-email' => 'Pilihan e-mel',
 'prefs-rendering' => 'Penampilan',
 'saveprefs' => 'Simpan',
-'resetprefs' => 'Set semula',
 'restoreprefs' => 'Pulihkan semua tetapan asali (dalam semua bahagian)',
 'prefs-editing' => 'Menyunting',
 'rows' => 'Baris:',
 'columns' => 'Lajur:',
 'searchresultshead' => 'Cari',
-'resultsperpage' => 'Jumlah padanan bagi setiap halaman:',
 'stub-threshold' => 'Ambang bagi pemformatan <a href="#" class="stub">pautan ke rencana ringkas</a> (bait):',
 'stub-threshold-disabled' => 'Dimatikan',
 'recentchangesdays' => 'Bilangan hari dalam perubahan terkini:',
@@ -1356,7 +1336,6 @@ Sesiapa yang mengetahuinya akan boleh membaca senarai pantau anda, jadi jangan k
 'localtime' => 'Waktu tempatan:',
 'timezoneuseserverdefault' => 'Gunakan tetapan sediaan wiki ($1)',
 'timezoneuseoffset' => 'Lain-lain (nyatakan imbangan)',
-'timezoneoffset' => 'Imbangan¹:',
 'servertime' => 'Waktu pelayan:',
 'guesstimezone' => 'Gunakan tetapan pelayar saya',
 'timezoneregion-africa' => 'Afrika',
@@ -1423,6 +1402,7 @@ Tindakan ini tidak boleh dibatalkan.',
 'prefs-displaywatchlist' => 'Pilihan paparan',
 'prefs-diffs' => 'Beza',
 'prefs-help-prefershttps' => 'Keutamaan inu akan berkuatkuasa pada lain kali anda log masuk.',
+'prefs-tabs-navigation-hint' => 'Petua: Anda boleh menggunakan kekunci anak panah kiri atau kanan untuk beralihan dari tab ke tab pada senarai tab.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Alamat e-mel adalah sah',
@@ -1609,13 +1589,14 @@ Tindakan ini tidak boleh dibatalkan.',
 'recentchanges-label-minor' => 'Ini ialah suntingan kecil',
 'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
 'recentchanges-label-unpatrolled' => 'Suntingan ini belum dirondai',
-'recentchanges-legend-newpage' => '$1 - laman baru',
-'rcnote' => "Yang berikut ialah '''$1''' perubahan terakhir sejak '''$2''' hari yang lalu sehingga $5, $4.",
+'recentchanges-label-plusminus' => 'Saiz halaman telah berubah sebanyak jumlah bait ini',
+'recentchanges-legend-heading' => "'''Petunjuk:'''",
+'recentchanges-legend-newpage' => '(lihat juga [[Special:NewPages|senarai halaman baru]])',
 'rcnotefrom' => 'Yang berikut ialah semua perubahan sejak <b>$2</b> (sehingga <b>$1</b>).',
 'rclistfrom' => 'Papar perubahan sejak $1',
 'rcshowhideminor' => '$1 suntingan kecil',
 'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 pengguna log masuk',
+'rcshowhideliu' => '$1 pengguna berdaftar',
 'rcshowhideanons' => '$1 pengguna tanpa nama',
 'rcshowhidepatr' => '$1 suntingan dirondai',
 'rcshowhidemine' => '$1 suntingan saya',
@@ -2065,6 +2046,7 @@ Masukan yang <del>dipotong</del> telah diselesaikan.',
 'ninterwikis' => '$1 pautan antara wiki',
 'nlinks' => '$1 pautan',
 'nmembers' => '$1 ahli',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|ahli}}',
 'nrevisions' => '$1 semakan',
 'nviews' => 'Dilihat $1 kali',
 'nimagelinks' => 'Digunakan pada {{PLURAL:$1|sebuah|$1 buah}} laman',
@@ -2103,10 +2085,8 @@ Masukan yang <del>dipotong</del> telah diselesaikan.',
 'protectedpages' => 'Laman dilindungi',
 'protectedpages-indef' => 'Perlindungan tanpa had sahaja',
 'protectedpages-cascade' => 'Perlindungan separa sahaja',
-'protectedpagestext' => 'Laman-laman berikut dilindungi daripada pemindahan dan penyuntingan',
 'protectedpagesempty' => 'Tiada laman yang dilindungi dengan kriteria ini.',
 'protectedtitles' => 'Tajuk dilindungi',
-'protectedtitlestext' => 'Tajuk-tajuk berikut dilindungi daripada dicipta',
 'protectedtitlesempty' => 'Tiada tajuk yang dilindungi yang sepadan dengan kriteria yang diberikan.',
 'listusers' => 'Senarai pengguna',
 'listusers-editsonly' => 'Hanya papar pengguna yang telah membuat suntingan',
@@ -2158,9 +2138,6 @@ serta mungkin mempunyai maklumat lanjut mengenai buku yang anda cari:',
 'allpagesto' => 'Tunjukkan laman berakhir pada:',
 'allarticles' => 'Semua laman',
 'allinnamespace' => 'Semua laman (ruang nama $1)',
-'allnotinnamespace' => 'Semua laman (bukan dalam ruang nama $1)',
-'allpagesprev' => 'Sebelumnya',
-'allpagesnext' => 'Berikutnya',
 'allpagessubmit' => 'Pergi',
 'allpagesprefix' => 'Tunjukkan laman dengan awalan:',
 'allpagesbadtitle' => 'Tajuk laman yang dinyatakan tidak sah atau mempunyai awalam antara bahasa atau antara wiki. Ia mungkin mengandungi aksara yang tidak boleh digunakan dalam tajuk laman.',
@@ -2333,9 +2310,9 @@ Hubungi penyunting:
 mel: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Tiada lagi pemberitahuan lanjut sekiranya terdapat suntingan selanjutnya melainkan anda mengunjungi halaman berkenaan. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
+Tiada lagi pemberitahuan lanjut sekiranya terdapat kegiatan selanjutnya melainkan anda mengunjungi halaman berkenaan apabila log masuk. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
 
-                        Sistem pemberitahuan {{SITENAME}} yang mesra
+Sistem pemberitahuan {{SITENAME}} yang mesra
 
 --
 Untuk mengubah tetapan pemberitahuan melalui e-mel anda, kunjungi
@@ -2377,12 +2354,15 @@ Sila lihat $2 untuk rekod penghapusan terkini.',
 'deleteotherreason' => 'Sebab lain/tambahan:',
 'deletereasonotherlist' => 'Sebab lain',
 'deletereason-dropdown' => '* Sebab-sebab lazim
-** Permintaan pengarang
+** Spam
+** Vandalisme
 ** Melanggar hak cipta
-** Vandalisme',
+** Permintaan pengarang
+** Lencongan terputus',
 'delete-edit-reasonlist' => 'Ubah sebab-sebab hapus',
 'delete-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Oleh itu, laman ini dilindungi daripada dihapuskan untuk mengelak kerosakan di {{SITENAME}} yang tidak disengajakan.',
 'delete-warning-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Menghapuskannya boleh mengganggu perjalanan pangkalan data {{SITENAME}}. Sila berhati-hati.',
+'deleting-backlinks-warning' => "'''Amaran:''' Terdapat halaman-halaman lain yang berpaut pada halaman yang hendak anda hapus itu.",
 
 # Rollback
 'rollback' => 'Undurkan suntingan.',
@@ -2497,7 +2477,6 @@ atau semakan tersebut telah dipulihkan atau dibuang daripada arkib.',
 'undeletebtn' => 'Pulihkan',
 'undeletelink' => 'lihat/pulihkan',
 'undeleteviewlink' => 'papar',
-'undeletereset' => 'Set semula',
 'undeleteinvert' => 'Kecualikan pilihan',
 'undeletecomment' => 'Sebab:',
 'undeletedrevisions' => '$1 semakan dipulihkan',
@@ -2537,7 +2516,7 @@ $1',
 'contributions' => 'Sumbangan {{GENDER:$1|pengguna}}',
 'contributions-title' => 'Sumbangan oleh $1',
 'mycontris' => 'Sumbangan',
-'contribsub2' => 'Oleh $1 ($2)',
+'contribsub2' => 'Untuk {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Tiada sebarang perubahan yang sepadan dengan kriteria-kriteria ini.',
 'uctop' => '(terkini)',
 'month' => 'Sebelum bulan:',
@@ -2583,7 +2562,6 @@ $1',
 'block' => 'Sekat pengguna',
 'unblock' => 'Nyahsekat pengguna',
 'blockip' => 'Sekat pengguna',
-'blockip-title' => 'Sekat pengguna',
 'blockip-legend' => 'Sekat pengguna',
 'blockiptext' => 'Gunakan borang di bawah untuk menyekat
 penyuntingan daripada alamat IP atau pengguna tertentu.
@@ -2594,7 +2572,6 @@ dirosakkan).',
 'ipadressorusername' => 'Alamat IP atau nama pengguna:',
 'ipbexpiry' => 'Tamat:',
 'ipbreason' => 'Sebab:',
-'ipbreasonotherlist' => 'Lain-lain',
 'ipbreason-dropdown' => '*Sebab lazim
 ** Memasukkan maklumat palsu
 ** Membuang kandungan daripada laman
@@ -2610,8 +2587,6 @@ dirosakkan).',
 'ipbsubmit' => 'Sekat pengguna ini',
 'ipbother' => 'Waktu lain:',
 '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,selama-lamanya:infinite',
-'ipbotheroption' => 'lain',
-'ipbotherreason' => 'Sebab tambahan/lain:',
 'ipbhidename' => 'Sembunyikan nama pengguna daripada senarai suntingan dan pengguna',
 'ipbwatchuser' => 'Pantau laman pengguna dan laman perbincangan bagi pengguna ini',
 'ipb-disableusertalk' => 'Halang pengguna ini daripada menyunting laman perbincangan sendiri apabila disekat',
@@ -2700,7 +2675,6 @@ Sila hubungi penyedia perkhidmatan Internet anda atau pihak sokongan teknikal da
 'sorbsreason' => 'Alamat IP anda telah disenaraikan sebagai proksi terbuka dalam DNSBL yang digunakan oleh {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Alamat IP anda telah disenaraikan sebagai proksi terbuka dalam DNSBL yang digunakan oleh {{SITENAME}}. Oleh itu, anda tidak dibenarkan membuka akaun baru.',
 'xffblockreason' => 'Alamat IP yang terdapat dalam pengepala X-Forwarded-For, sama ada milik anda ataupun pelayan proksi yang anda gunakan, telah disekat. Sebab asal sekatan adalah: $1',
-'cant-block-while-blocked' => 'Anda tidak boleh menyekat orang lain sedangkan anda disekat.',
 'cant-see-hidden-user' => 'Pengguna yang anda cuba sekat telahpun disekat dan tersorok.
 Memandangkan anda tidak mempunyai hak untuk menyorokkan pengguna, anda tidak boleh melihat atau menyunting sekatan pengguna tersebut.',
 'ipbblocked' => 'Anda tidak boleh menyekat atau menyahsekat pengguna lain kerana anda sendiri telah disekat',
@@ -2765,7 +2739,6 @@ sila pastikan anda faham akibat yang mungkin timbul sebelum meneruskannya.",
 Dalam kes tersebut, anda terpaksa melencongkan atau menggabungkan laman secara manual, jika perlu.",
 'movearticle' => 'Pindahkan laman:',
 'moveuserpage-warning' => "'''Amaran:''' Anda sudah hendak memindahkan suatu laman pengguna. Sila ambil perhatian bahawa hanya laman tersebut akan dipindahkan dan nama pengguna yang berkenaan ''tidak'' berubah.",
-'movenologin' => 'Belum log masuk.',
 'movenologintext' => 'Anda mesti [[Special:UserLogin|log masuk]] terlebih dahulu untuk memindahkan laman.',
 'movenotallowed' => 'Anda tidak mempunyai keizinan untuk memindahkan laman.',
 'movenotallowedfile' => 'Anda tidak mempunyai keizinan untuk memindahkan fail.',
@@ -2782,8 +2755,6 @@ Dalam kes tersebut, anda terpaksa melencongkan atau menggabungkan laman secara m
 atau nama yang anda pilih tidak sah.
 Sila pilih nama lain.',
 'cantmove-titleprotected' => 'Anda tidak boleh memindah sebarang laman ke sini kerana tajuk ini telah dilindungi daripada dicipta',
-'talkexists' => "'''Laman tersebut berjaya dipindahkan, akan tetapi laman perbincangannya tidak dapat dipindahkan kerana laman dengan tajuk baru tersebut telah pun wujud. Anda perlu menggabungkannya secara manual.'''",
-'movedto' => 'dipindahkan ke',
 'movetalk' => 'Pindahkan laman perbincangan yang berkaitan',
 'move-subpages' => 'Pindahkan semua sublaman sekali (sehingga $1)',
 'move-talk-subpages' => 'Pindahkan semua sublaman bagi laman perbincangan sekali (sehingga $1)',
@@ -3045,7 +3016,8 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'spam_reverting' => 'Membalikkan kepada versi terakhir yang tidak mengandungi pautan ke $1',
 'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
 'spam_deleting' => 'Menghapuskan semua semakan yang mengandungi pautan ke $1',
-'simpleantispam-label' => "Pemeriksaan anti-spam. '''JANGAN''' isi ruangan ini!",
+'simpleantispam-label' => "Pemeriksaan anti-spam.
+'''JANGAN''' isi ruangan ini!",
 
 # Info page
 'pageinfo-title' => 'Maklumat untuk "$1"',
@@ -3059,6 +3031,7 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
 'pageinfo-length' => 'Kepanjangan halaman (bait)',
 'pageinfo-article-id' => 'ID halaman',
 'pageinfo-language' => 'Bahasa isi kandungan halaman',
+'pageinfo-content-model' => 'Model kandungan halaman',
 'pageinfo-robot-policy' => 'Indeks oleh robot',
 'pageinfo-robot-index' => 'Dibenarkan',
 'pageinfo-robot-noindex' => 'Tidak dibenarkan',
@@ -3146,7 +3119,7 @@ Dengan menjalankannya, komputer anda mungkin akan terjejas.",
 'svg-long-desc' => 'Fail SVG, ukuran dasar $1 × $2 piksel, saiz fail: $3',
 'svg-long-desc-animated' => 'Fail SVG animasi, ukuran dasar $1 × $2 piksel, saiz fail: $3',
 'svg-long-error' => 'Fail SVG tidak sah: $1',
-'show-big-image' => 'Leraian penuh',
+'show-big-image' => 'Fail asli',
 'show-big-image-preview' => 'Saiz pralihat ini: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Leraian|Leraian-leraian}} lain: $1.',
 'show-big-image-size' => '$1 × $2 piksel',
@@ -3613,15 +3586,10 @@ Ruangan-ruangan yang lain pula akan disembunyikan pada asali.
 'exif-urgency-high' => 'Tinggi ($1)',
 'exif-urgency-other' => 'Keutamaan tentuan pengguna ($1)',
 
-# External editor support
-'edit-externally' => 'Sunting fail ini menggunakan perisian luar',
-'edit-externally-help' => '(Lihat [https://www.mediawiki.org/wiki/Manual:External_editors arahan pemasangan] untuk maklumat lanjut)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'semua',
 'namespacesall' => 'semua',
 'monthsall' => 'semua',
-'limitall' => 'semua',
 
 # Email address confirmation
 'confirmemail' => 'Sahkan alamat e-mel',
@@ -3645,7 +3613,6 @@ Pelayan mel memulangkan: $1',
 'confirmemail_needlogin' => 'Anda perlu $1 terlebih dahulu untuk mengesahkan alamat e-mel anda.',
 'confirmemail_success' => 'Alamat e-mel anda telah disahkan. Sekarang anda boleh melog masuk dan berseronok di wiki ini.',
 'confirmemail_loggedin' => 'Alamat e-mel anda telah disahkan.',
-'confirmemail_error' => 'Sesuatau yang tidak kena berlaku ketika kami menyimpan pengesahan anda.',
 'confirmemail_subject' => 'Pengesahan alamat e-mel di {{SITENAME}}',
 'confirmemail_body' => 'Seseorang, barangkali anda, dari alamat IP $1, telah mendaftarkan akaun "$2" dengan alamat e-mel ini di {{SITENAME}}.
 
@@ -3714,6 +3681,11 @@ Sila sahkan bahawa anda mahu mencipta semula laman ini.",
 'imgmultigo' => 'Pergi!',
 'imgmultigoto' => 'Pergi ke halaman $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(bahasa azali)',
+'img-lang-info' => 'Paparkan gambar ini dalam $1. $2',
+'img-lang-go' => 'Jalan',
+
 # Table pager
 'ascending_abbrev' => 'menaik',
 'descending_abbrev' => 'menurun',
@@ -3825,13 +3797,14 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Laluan skrip]',
 
 # Special:Redirect
-'redirect' => 'Lencongkan mengikut fail, ID pengguna atau ID semakan',
+'redirect' => 'Lencongkan mengikut ID fail, pengguna, halaman atau semakan',
 'redirect-legend' => 'Lencongkan ke fail atau halaman',
-'redirect-summary' => 'Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan) atau halaman pengguna (dengan ID pengguna berangka).',
+'redirect-summary' => 'Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan atau ID halaman) atau halaman pengguna (dengan ID pengguna berangka). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Pergi',
 'redirect-lookup' => 'Cari:',
 'redirect-value' => 'Nilai:',
 'redirect-user' => 'ID Pengguna',
+'redirect-page' => 'ID halaman',
 'redirect-revision' => 'Semakan halaman',
 'redirect-file' => 'Nama fail',
 'redirect-not-exists' => 'Nilai tidak dijumpai',
@@ -3849,9 +3822,9 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 
 # Special:SpecialPages
 'specialpages' => 'Laman khas',
+'specialpages-note-top' => 'Petunjuk',
 'specialpages-note' => '* Laman khas biasa.
-* <span class="mw-specialpagerestricted">Laman khas terhad.</span>
-* <span class="mw-specialpagecached">Laman khas tercache (mungkin lapuk).</span>',
+* <span class="mw-specialpagerestricted">Laman khas terhad.</span>',
 'specialpages-group-maintenance' => 'Laporan penyenggaraan',
 'specialpages-group-other' => 'Laman khas lain',
 'specialpages-group-login' => 'Log masuk / buka akaun',
@@ -3889,13 +3862,15 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
 'tags-tag' => 'Nama label',
 'tags-display-header' => 'Rupa dalam senarai perubahan',
 'tags-description-header' => 'Keterangan makna',
+'tags-active-header' => 'Aktif?',
 'tags-hitcount-header' => 'Perubahan',
+'tags-active-yes' => 'Ya',
+'tags-active-no' => 'Tidak',
 'tags-edit' => 'sunting',
 'tags-hitcount' => '$1 perubahan',
 
 # Special:ComparePages
 'comparepages' => 'Perbandingan laman',
-'compare-selector' => 'Bandingkan semakan laman',
 'compare-page1' => 'Laman 1',
 'compare-page2' => 'Laman 2',
 'compare-rev1' => 'Semakan 1',
@@ -4072,10 +4047,12 @@ Sebenarnya, ia mengembangkan segalanya dalam tanda kurung panah berganda.',
 'expand_templates_input' => 'Teks input:',
 'expand_templates_output' => 'Hasil',
 'expand_templates_xml_output' => 'Output XML',
+'expand_templates_html_output' => 'Output HTML mentah',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Buang ulasan',
 'expand_templates_remove_nowiki' => 'Sekat tag <nowiki> dalam hasil',
 'expand_templates_generate_xml' => 'Papar pepohon hurai XML',
+'expand_templates_generate_rawhtml' => 'Paparkan HTML mentah',
 'expand_templates_preview' => 'Pralihat',
 
 );
index 6d16bc5..ad5013c 100644 (file)
@@ -56,7 +56,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'TitluĦażin' ),
        'Blankpage'                 => array( 'PaġnaVojta' ),
        'Block'                     => array( 'BlokkaIP' ),
-       'Blockme'                   => array( 'Imblukkani' ),
        'Booksources'               => array( 'SorsiKotba' ),
        'BrokenRedirects'           => array( 'RindirizziMiksura' ),
        'Categories'                => array( 'Kategoriji' ),
@@ -67,9 +66,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'OħloqKont' ),
        'Deadendpages'              => array( 'PaġniWieqfa' ),
        'DeletedContributions'      => array( 'KontribuzzjonijietImħassra' ),
-       'Disambiguations'           => array( 'Diżambigwazzjoni' ),
        'DoubleRedirects'           => array( 'RindirizziDoppji' ),
        'Emailuser'                 => array( 'IbgħatUtent' ),
+       'ExpandTemplates'           => array( 'EspandiMudelli' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'L-InqasReviżjonijiet' ),
        'FileDuplicateSearch'       => array( 'FittexFajlDuplikat' ),
@@ -296,7 +295,6 @@ $messages = array(
 'tog-minordefault' => 'Immarka awtomatikament kull modifika bħala waħda minuri',
 'tog-previewontop' => 'Uri dehra proviżorja tal-paġna fuq il-kaxxa tal-immodifikar',
 'tog-previewonfirst' => 'Uri dehra proviżorja mal-ewwel modifika',
-'tog-nocache' => 'Iddiżattiva l-cache tal-paġni tal-browser',
 'tog-enotifwatchlistpages' => "Ibgħatli ittre kull meta sseħħ modifika fuq paġna jew fajl li jinsab fil-lista ta' osservazzjoni tiegħi",
 'tog-enotifusertalkpages' => "Ibgħatli ittra-e kull meta l-paġna ta' diskussjoni tiegħi tiġi modifikata",
 'tog-enotifminoredits' => 'Ibgħatli wkoll ittra-e għall-modifiki minuri fuq paġni u fajls',
@@ -431,7 +429,6 @@ $messages = array(
 'qbedit' => 'Immodifika',
 'qbpageoptions' => 'Din il-paġna',
 'qbmyoptions' => 'Il-paġni tiegħi',
-'qbspecialpages' => 'Paġni speċjali',
 'faq' => 'Mistoqsijiet komuni',
 'faqpage' => 'Project:FAQ',
 
@@ -635,9 +632,6 @@ Jista\' jkun li diġà ġie mħassar minn xi ħaddieħor.',
 'perfcached' => "L-informazzjoni li jmiss huwa kopja ''cache'' u jista' ma jkunx aġġornat. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => "Id-dati segwenti huma estratt ta' kopja cache tad-database. L-aħħar aġġornament: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Aġġornamenti għal din il-paġna huma temporalment sospesi. L-Informazzjoni hawnhekk preżentament mhux qiegħed jiġi aġġornat.',
-'wrong_wfQuery_params' => 'Parametri skoretti għal wfQuery()<br />
-Funżjoni: $1<br />
-Rikjesta: $2',
 'viewsource' => 'Ara s-sors',
 'viewsource-title' => "Ara s-sors ta' $1",
 'actionthrottled' => 'Azzjoni miżmuma',
@@ -786,7 +780,7 @@ Jekk jogħġbok stenna qabel ma terġa' tipprova.",
 'user-mail-no-addy' => 'Pruvajt tibgħat posta elettronika mingħajr indirizz.',
 
 # Change password dialog
-'resetpass' => 'Biddel il-password',
+'changepassword' => 'Ibdel il-password',
 'resetpass_announce' => "L-aċċess ġe effetwat permezz ta' kodiċi temporanju, li ntbagħat permezz tal-posta elettronika.
 Biex tkompli l-aċċess tal-kont tiegħek huwa neċessarju li toħloq password ġdida hawnhekk:",
 'resetpass_text' => '<!-- Żied il-kliem hawnhekk -->',
@@ -1142,10 +1136,6 @@ Bħala amministratur inti xorta waħda tista' tarah dan il-konfront; ikkonsulta
 'revisiondelete' => 'Ħassar/irkupra reviżjonijiet',
 'revdelete-nooldid-title' => 'Verżjoni mhux speċifikata',
 'revdelete-nooldid-text' => 'Ma ġiet speċifikata l-ebda reviżjoni tal-paġna fuq liema se ssir din l-azzjoni, ir-reviżjoni speċifikata ma teżistix, jew inkella qiegħed tipprova taħbi r-reviżjoni kurrenti.',
-'revdelete-nologtype-title' => "L-ebda tip ta' reġistru ma ġie speċifikat",
-'revdelete-nologtype-text' => "Ma ġie speċifikat l-ebda tip ta' reġistru fuqiex l-azzjoni se ssir.",
-'revdelete-nologid-title' => 'Daħla invalida għar-reġistru',
-'revdelete-nologid-text' => 'Ma ġie speċifikat l-ebda avveniment tar-reġistru fuqiex il-funzjoni se ssir jew id-daħla speċifikata ma teżistix.',
 'revdelete-no-file' => 'Il-fajl speċifikat ma jeżistix.',
 'revdelete-show-file-confirm' => 'Tinsab ċert li trid tara reviżjoni mħassra tal-fajl "<nowiki>$1</nowiki>" tal-$2 fil-$3?',
 'revdelete-show-file-submit' => 'Iva',
@@ -1179,8 +1169,6 @@ $1",
 'logdelete-failure' => "'''Il-viżibilità tar-reġistru ma tistax tiġi stabbilita:'''
 $1",
 'revdel-restore' => 'Biddel visibilitá',
-'revdel-restore-deleted' => 'reviżjonijiet imħassra',
-'revdel-restore-visible' => 'reviżjonijiet viżibbli',
 'pagehist' => 'Kronoloġija tal-paġna',
 'deletedhist' => 'Kronoloġija mħassra',
 'revdelete-hide-current' => 'L-oġġett bid-data $1 $2 ma jistax jinħeba minħabba li huwa r-reviżjoni attwali.',
@@ -1251,12 +1239,8 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 # Search results
 'searchresults' => 'Riżultat tat-tfittxija',
 'searchresults-title' => 'Riżultati tat-tfittxija għal "$1"',
-'searchresulttext' => "Aktar informazzjoni dwar ir-riċerka ta' {{SITENAME}}, ara [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Int fittixt għal \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|il-paġni kollha li jibdew b\'"$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|il-paġni kollha li jwasslu għal "$1"]])',
-'searchsubtitleinvalid' => "Int fittixt għal '''$1'''",
 'toomanymatches' => 'Ħafna tqabbil ġew ritornati, jekk jogħġbok prova inkjesta differenti',
 'titlematches' => 'Titlu tal-paġna taqbel',
-'notitlematches' => "L-ebda titlu ta' paġna ma jaqbel",
 'textmatches' => 'It-test tal-paġni, jaqbel',
 'notextmatches' => "L-ebda test ta' paġna ma jaqbel",
 'prevn' => "{{PLURAL:$1|$1}} ta' qabel",
@@ -1265,10 +1249,8 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 'nextn-title' => '{{PLURAL:$1|Riżultat suċċessiv|$1 riżultati suċċessivi}}',
 'shown-title' => 'Uri {{PLURAL:$1|riżultat|$1 riżultati}} kull paġna',
 'viewprevnext' => 'Ara ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Preferenzi għat-tfittxija',
 'searchmenu-exists' => "'''Hemm paġna bl-isem ta' \"[[:\$1]]\" fuq din il-wiki'''",
 'searchmenu-new' => "'''Oħloq il-paġna \"[[:\$1]]\" fuq din il-wiki!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Uri l-paġni b'dan il-prefiss]]",
 'searchprofile-articles' => "Paġni ta' kontenut",
 'searchprofile-project' => "Paġni ta' għajnuna u ta' proġett",
 'searchprofile-images' => 'Multimedja',
@@ -1289,21 +1271,16 @@ Nota li l-użu tal-links tan-navigazzjoni jagħmel reset tal-kolonna.",
 'search-interwiki-default' => "Riżultati ta' $1:",
 'search-interwiki-more' => '(aktar)',
 'search-relatedarticle' => 'Relatati',
-'mwsuggest-disable' => 'Neħħi suġġeriment tal-AJAX',
 'searcheverything-enable' => 'Fittex fl-ispazji tal-isem kollha',
 'searchrelated' => 'relatati',
 'searchall' => 'kollha',
 'showingresults' => "Hawn taħt ġie inkluż massimu ta' {{PLURAL:$1|riżultat '''1''' li jibda|'''$1''' riżultat li jibdew}} bin-numru '''$2'''.",
 'showingresultsnum' => "Hawn taħt {{PLURAL:$3|jinsab riżultat '''1''' li jibda|jinsabu '''$3''' riżultati li jibdew}} bin-numru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Riżultat '''$1''' minn '''$3'''|Riżultati '''$1 - $2''' minn '''$3'''}} għal '''$4'''",
-'nonefound' => "'''Nota''': Awtomatikament, huma ftit spazji tal-isem imfittxija.
-Ipprova għamel prefiss għall-inkjesta tiegħek ma' ''all:'' sabiex tfittex il-kontenut kollu (inkluż paġni ta' diskussjoni, mudelli, etċ), jew uża l-ispazju tal-isem mixtieq bħala prefiss.",
 'search-nonefound' => 'It-tfittxija ma tat l-ebda riżultat.',
-'powersearch' => 'Tfittxija avvanzata',
 'powersearch-legend' => 'Tfittxija avvanzata',
 'powersearch-ns' => 'Fittex fl-ispazju tal-isem:',
 'powersearch-redir' => 'Uri r-rindirizzi',
-'powersearch-field' => 'Fittex',
 'powersearch-togglelabel' => 'Agħżel:',
 'powersearch-toggleall' => 'Kollha',
 'powersearch-togglenone' => 'Ebda',
@@ -1316,7 +1293,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'preferences' => 'Preferenzi',
 'mypreferences' => 'Preferenzi',
 'prefs-edits' => "Numru ta' modifiki:",
-'changepassword' => 'Ibdel il-password',
 'prefs-skin' => 'Aspett grafiku (skin)',
 'skin-preview' => 'dehra proviżorja',
 'datedefault' => 'L-ebda preferenza',
@@ -1338,13 +1314,11 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'prefs-email' => 'Opzjonijiet għall-posta elettronika',
 'prefs-rendering' => 'Dehra',
 'saveprefs' => 'Salva l-preferenzi',
-'resetprefs' => 'Neħħi modifiki mhux salvati',
 'restoreprefs' => 'Irkupra l-impostazzjonijiet awtomatiċi',
 'prefs-editing' => 'Modifiki',
 'rows' => 'Fillieri:',
 'columns' => 'Kolonni:',
 'searchresultshead' => 'Fittex',
-'resultsperpage' => "Numru ta' riżultati għal kull paġna:",
 'stub-threshold' => 'Valur minimu għall-<a href="#" class="stub">ħoloq għall-abozzi</a>, f\'bytes:',
 'stub-threshold-disabled' => 'Diżattivat',
 'recentchangesdays' => "Numru ta' ġranet li għandhom jintwerew fit-tibdil riċenti:",
@@ -1356,7 +1330,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'localtime' => 'Ħin lokali:',
 'timezoneuseserverdefault' => 'Uża l-ħin użat mill-wiki ($1)',
 'timezoneuseoffset' => 'Ieħor (speċifika d-differenza)',
-'timezoneoffset' => 'Differenza¹:',
 'servertime' => 'Ħin tas-server:',
 'guesstimezone' => "Uża l-ħin tal-''browser'' tiegħek",
 'timezoneregion-africa' => 'Afrika',
@@ -1588,7 +1561,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
 'recentchanges-label-bot' => 'Din il-modifika ġiet effettwata minn bot',
 'recentchanges-label-unpatrolled' => 'Din il-modifika għadha ma ġietx verifikata',
 'recentchanges-legend-newpage' => '$1 - paġna ġdida',
-'rcnote' => "Hawn taħt {{PLURAL:$1|tinsab l-aktar modifika riċenti|jinsabu l-'''$1''' modifiki riċenti}} għas-sit fl-aħħar {{PLURAL:$2|24 siegħa|'''$2''' ġranet}}, id-dati ġew aġġornati fil-$5 ta' $4.",
 'rcnotefrom' => "Ħawn taħt jinsabu l-modifiki minn '''$2''' (sa '''$1''').",
 'rclistfrom' => 'Uri l-modifiki ġodda jibdew minn $1',
 'rcshowhideminor' => '$1 modifiki żgħar',
@@ -2032,10 +2004,8 @@ Daħliet <del>maqtugħa</del> saritilhom it-tiswija.',
 'protectedpages' => 'Paġni protetti',
 'protectedpages-indef' => 'Protezzjoni indefinit biss',
 'protectedpages-cascade' => 'Protezzjonijiet rikorsivi biss',
-'protectedpagestext' => 'Il-Paġni segwenti huma protetti minn modifiki u ċaqlieq',
 'protectedpagesempty' => "M'hawnx paġni protetti bħalissa b'dawn il-parametri.",
 'protectedtitles' => 'Titli protetti',
-'protectedtitlestext' => 'It-Titli segwenti huma protetti mill-ħolqien',
 'protectedtitlesempty' => "L-Ebda titli bħalissa huma protetti b'dawn il-parametri.",
 'listusers' => 'Lista tal-utenti',
 'listusers-editsonly' => 'Uri biss utenti li għamlu xi modifika',
@@ -2086,9 +2056,6 @@ Kun af li siti elettroniċi oħra jistgħu jorbtu b'ħolqa diretta lejn il-fajl,
 'allpagesto' => "Uri l-paġni li jispiċċaw b':",
 'allarticles' => 'Il-paġni kollha',
 'allinnamespace' => 'Il-paġni kollha fl-ispazju tal-isem $1',
-'allnotinnamespace' => 'Il-paġni kollha, minbarra dawk fl-ispazju tal-isem $1',
-'allpagesprev' => "Ta' qabel",
-'allpagesnext' => 'Li jmiss',
 'allpagessubmit' => 'Mur',
 'allpagesprefix' => 'Uri l-paġni bil-prefiss:',
 'allpagesbadtitle' => "It-titlu indikat għal dil-paġna mhuwiex validu jew inkella fih xi prefiss interlingwa jew interwiki. Għaldaqstant, jista' ikun fih xi karratru(i) li ma jistgħux jintużaw fit-titli.",
@@ -2410,7 +2377,6 @@ Int jista' jkollhok link ħażin, jew jista' jkun li ir-reviżjoni ġie rkuprat
 'undeletebtn' => 'Irkupra',
 'undeletelink' => 'uri/irkupra',
 'undeleteviewlink' => 'uri',
-'undeletereset' => 'Irrisettja',
 'undeleteinvert' => 'Inverti s-selezzjoni',
 'undeletecomment' => 'Raġuni:',
 'undeletedrevisions' => '{{PLURAL:$1|reviżjoni irkuprata|$1 reviżjonijiet irkuprati}}',
@@ -2500,7 +2466,6 @@ L-aħħar daħla fir-reġistru tal-imblokki tinsab hawn taħt bħala referenza:'
 'block' => 'Imblokka utent',
 'unblock' => 'Żblokka utent',
 'blockip' => 'Imblokka lil utent',
-'blockip-title' => "Imblokka 'l-utent",
 'blockip-legend' => "Imblokka 'l-utent",
 'blockiptext' => "Uża l-formola t'hawn taħt sabiex biex tibblokkja l-aċċess tal-kitba lil IP speċifiku jew utent.
 Il-blokk irid ikun użat biss sabiex jitnaqqas iċ-ċans ta' vandaliżmu, u għandu josservja b'mod strett il-[[{{MediaWiki:Policy-url}}|politika ta' {{SITENAME}}]].
@@ -2508,7 +2473,6 @@ Indika r-raġuni speċifika għalfejn tixtieq tipproċedi bil-blokk (per eżempj
 'ipadressorusername' => 'Indirizz tal-IP jew isem tal-utent:',
 'ipbexpiry' => 'Skadenza tal-imblokk:',
 'ipbreason' => 'Raġuni:',
-'ipbreasonotherlist' => 'Raġuni oħra',
 'ipbreason-dropdown' => "*Raġunijiet komuni dwar blokki
 ** Iddaħħal informazzjoni falza
 ** Tneħħi kontenut mill-paġni
@@ -2524,8 +2488,6 @@ Indika r-raġuni speċifika għalfejn tixtieq tipproċedi bil-blokk (per eżempj
 'ipbsubmit' => 'Imblokka lil dan l-utent',
 'ipbother' => 'Ħin ieħor:',
 'ipboptions' => 'sagħtejn:2 hours,ġurnata 1:1 day,3 ġranet:3 days,ġimgħa 1:1 week,ġimgħatejn:2 weeks,xahar 1:1 month,3 xhur:3 months,6 xhur:6 months,sena 1:1 year,infinita:infinite',
-'ipbotheroption' => 'ieħor',
-'ipbotherreason' => 'Raġunijiet oħra/addizzjonali:',
 'ipbhidename' => 'Aħbi l-isem tal-utent mill-modifiki u mill-elenki.',
 'ipbwatchuser' => "Osserva l-paġni u d-diskussjonijiet ta' dan l-utent",
 'ipb-disableusertalk' => "Ipprevjeni dan l-utent milli jimmodifika l-paġna ta' diskussjoni personali waqt li hu mblukkat.",
@@ -2609,7 +2571,6 @@ Ara l-[[Special:BlockList|lista tal-blokki]] sabiex tara l-blokki attivi.',
 'proxyblockreason' => "L-indirizz IP tiegħek ġie imblukkat peress li huwa proxy miftuħ. Jekk jogħġbok, ikkuntattja lill-provdituri tas-servizz tal-internet (ISP) jew lis-''support'' tekniku tiegħek u infurmahom b'din il-problema serja ta' sigurtà.",
 'sorbsreason' => 'L-indirizz IP tiegħek huwa mniżżel bħala proxy miftuħ fid-DNSBL użat minn {{SITENAME}}.',
 'sorbs_create_account_reason' => 'L-indirizz IP tiegħek huwa mniżżel bħala proxy miftuħ fid-DNSBL użat minn {{SITENAME}}. Ma tistax toħloq kont.',
-'cant-block-while-blocked' => 'Ma tistax timblokka lil utenti oħra waqt li inti mblukkat.',
 'cant-see-hidden-user' => 'L-utent li qiegħed tipprova timblokka diġà ġie imblukkat u moħbi.
 Minħabba li inti m\'għandikx id-dritt li "taħbi \'l-utent", ma tistax tara jew timmodifika l-blokk tal-utent.',
 'ipbblocked' => 'Ma tistax timblokka jew tiżblokka utenti oħra, minħabba li inti stess tinsab imblukkat',
@@ -2664,7 +2625,6 @@ Din tista' tkun bidla drastika għal paġna populari; kun ċert li tifhem il-kon
 F'dawn il-każi, inti trid iċaqlaq jew tagħqad il-paġna manwalment jekk dan huwa mixtieq.",
 'movearticle' => 'Ċaqlaq il-paġna:',
 'moveuserpage-warning' => "'''Twissija:''' Inti se tmexxi paġna tal-utent. Kun af li hi l-paġna biss li se titmexxa. L-utent ''mhux'' se jitmexxa.",
-'movenologin' => 'Aċċess mhux imwettaq',
 'movenologintext' => "Trid [[Special:UserLogin|tidħol]] bħalha utent reġistrat sabiex tkun tista' iċaqlaq din il-paġna.",
 'movenotallowed' => "Inti m'għandekx il-permessi meħtieġa sabiex tmexxi l-paġni.",
 'movenotallowedfile' => "M'għandekx il-permessi neċessarji sabiex tmexxi fajls.",
@@ -2680,9 +2640,6 @@ F'dawn il-każi, inti trid iċaqlaq jew tagħqad il-paġna manwalment jekk dan h
 'articleexists' => "Diġà teżisti paġna b'dak l-isem, jew inkella l-isem li għażilt mhux validu.
 Jekk jogħġbok, agħżel isem ieħor.",
 'cantmove-titleprotected' => 'Ma tistax iċċaqlaq paġna hemmhekk, minħabba li t-titlu l-ġdid ġie protett milli jiġi maħluq.',
-'talkexists' => "'''Il-paġna tmexxiet sewwa, iżda mhux il-paġna tad-diskussjoni, peress diġà teżisti waħda b'dan it-titlu.
-Jekk jogħġbok, waħħad iż-żewġ paġni manwalment.'''",
-'movedto' => 'Imċaqlaq għal',
 'movetalk' => "Mexxi wkoll il-paġna ta' diskussjoni",
 'move-subpages' => 'Mexxi s-sottopaġni (sa $1)',
 'move-talk-subpages' => "Mexxi is-sottopaġni kollha tal-paġna ta' diskussjoni (sa $1)",
@@ -3461,15 +3418,10 @@ Oħrajn jiġu moħbija kif inhu definit oriġinarjament.
 'exif-urgency-high' => 'Għoli ($1)',
 'exif-urgency-other' => 'Prijorità definita mill-utent ($1)',
 
-# External editor support
-'edit-externally' => "Immodifika dan il-fajl b'użu ta' applikazzjoni esterna",
-'edit-externally-help' => '(Għal aktar informazzjoni ara l-[https://www.mediawiki.org/wiki/Manual:External_editors istruzzjonijiet])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kollha',
 'namespacesall' => 'kollha',
 'monthsall' => 'kollha',
-'limitall' => 'kollha',
 
 # Email address confirmation
 'confirmemail' => 'Ikkonferma l-indirizz tal-posta elettronika',
@@ -3491,7 +3443,6 @@ Il-kodiċi setgħat tkun skadiet.",
 'confirmemail_needlogin' => 'Huwa neċessarju $1 biex tikkonferma l-indirizz propju tal-posta elettronika.',
 'confirmemail_success' => "L-indirizz tal-posta elettronika tiegħek ġie konfermat. Issa tista' [[Special:UserLogin|tidħol fil-kont tiegħek]] u tgawdi bis-sħiħ din il-wiki.",
 'confirmemail_loggedin' => 'L-indirizz tal-posta elettronika tiegħek ġie ikkonfermat.',
-'confirmemail_error' => 'Problema fis-salvataġġ tal-konferma.',
 'confirmemail_subject' => '{{SITENAME}}: rikjesta tal-konferma tal-indirizz',
 'confirmemail_body' => 'Xi ħadd, probabbilment int, mill-indirizz tal-IP $1,
 irreġistra l-kont "$2" b\'dan l-indirizz tal-posta elettronika fuq {{SITENAME}}.
@@ -3739,7 +3690,6 @@ Flimkien ma' dan il-programm suppost kellek tirċievi [{{SERVER}}{{SCRIPTPATH}}/
 
 # Special:ComparePages
 'comparepages' => 'Qabbel il-paġni',
-'compare-selector' => "Ikkumpara reviżjonijiet ta' paġna",
 'compare-page1' => 'Paġna 1',
 'compare-page2' => 'Paġna 2',
 'compare-rev1' => 'Reviżjoni 1',
index a7a7ce7..f6f056a 100644 (file)
@@ -100,7 +100,6 @@ $messages = array(
 'tog-minordefault' => 'Por oumisson, marcar todas las eidiçones cumo menores',
 'tog-previewontop' => "Amostrar l'antebison antes de la caixa d'eidiçon",
 'tog-previewonfirst' => "Amostrar l'antebison na purmeira eidiçon",
-'tog-nocache' => 'Zatibar caching de páiginas',
 'tog-enotifwatchlistpages' => 'Notificar-me por correio eiletrónico quando ua páigina begiada ye altarada',
 'tog-enotifusertalkpages' => 'Abisar -me por correio eiletrónico quando la mie páigina de çcusson ye eiditada',
 'tog-enotifminoredits' => 'Abisar-me por correio eiletrónico tamien quando las eidiçones fúren pequeinhas',
@@ -209,7 +208,6 @@ $messages = array(
 'qbedit' => 'Eiditar',
 'qbpageoptions' => 'Esta páigina',
 'qbmyoptions' => 'Mies páiginas',
-'qbspecialpages' => 'Páiginas speciales',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -412,7 +410,6 @@ de modo a cunfirmar que la cuonta ye mesmo la tue.',
 'loginlanguagelabel' => 'Lhéngua: $1',
 
 # Change password dialog
-'resetpass' => 'Demudar palabra-chabe',
 'retypenew' => 'Pon outra beç la nuoba palabra chabe:',
 
 # Edit page toolbar
@@ -541,10 +538,6 @@ Legenda: (atu) = defrénças de la berson atual,
 # Search results
 'searchresults' => 'Resultados de la percura',
 'searchresults-title' => 'Resultados de la percura por "$1"',
-'searchresulttext' => 'Pa mais anformaçones subre cumo percurar an {{SITENAME}}, bei [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tu percureste por \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páiginas ampeçadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páiginas que apuntan pa "$1"]])',
-'searchsubtitleinvalid' => 'Tu percureste por "$1"',
-'notitlematches' => 'Nanhun títalo de páigina bate cierto cula percura',
 'notextmatches' => 'Nun fui possible achar, ne l cuntenido de las páiginas, la palabra percurada',
 'prevn' => 'anteriores {{PLURAL:$1|$1}}',
 'nextn' => 'próssimos {{PLURAL:$1|$1}}',
@@ -560,12 +553,9 @@ Legenda: (atu) = defrénças de la berson atual,
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(mais)',
 'searchall' => 'todos',
-'nonefound' => "'''Abiso''': solo alguns spácios nominales son percurados por oumisson. Spurmenta outelizar l perfixo ''all:'' na percura, pa percurar por todos ls cuntenidos desta Biqui (até páiginas de çcusson, modelos etc), ó mesmo, outelizando l spácio nominal que queiras cumo perfixo.",
-'powersearch' => 'Percura Abançada',
 'powersearch-legend' => 'Percura abançada',
 'powersearch-ns' => 'Percurar ne ls spácios nominales:',
 'powersearch-redir' => 'Listar ancaminamientos',
-'powersearch-field' => 'Percurar',
 
 # Preferences page
 'preferences' => 'Perfréncias',
@@ -652,7 +642,6 @@ Causo l çponiblizes, este será outelizado pa te dar crédito pul tou trabalho.
 'recentchanges-legend' => 'Oupçones de las redadeiras altaraçones',
 'recentchanges-feed-description' => 'Acumpanha las redadeiras altaraçones de l biqui por esta semiente.',
 'recentchanges-legend-newpage' => '$1 - nuoba páigina',
-'rcnote' => "A seguir {{PLURAL:$1|stá listada '''ua''' altaraçon feita|stan '''$1''' altaraçones feitas}} {{PLURAL:$2|ne l redadeiro die|ne ls redadeiros '''$2''' dies}}, a partir de las $5 de $4.",
 'rcnotefrom' => 'Alteraçones feitas zde <b>$2</b> (amostradas até <b>$1</b>).',
 'rclistfrom' => 'Amostrar las noubas altaraçones a partir de $1',
 'rcshowhideminor' => '$1 eidiçones pequerrixas',
@@ -997,8 +986,6 @@ Nestes causos, tu terás que arrastrar ou ajuntar la páigina a la mano, se assi
 'movepage-moved' => '\'\'\'"$1" fui arrastrado pa "$2"\'\'\'',
 'articleexists' => 'Yá eisiste ua páigina cun este títalo, ou l títalo que scolhiste ye ambálido.
 Por fabor, scuolhe outro nome.',
-'talkexists' => "'''La páigina an si fui arrastrada cun éisito. Inda assi, la páigina de çcusson nun fui arrastrada, ua beç que yá eisistie ua cun este títalo. Por fabor, ajunta-las a la mano.'''",
-'movedto' => 'arrastrado pa',
 'movetalk' => 'Arrastrar tamien la páigina de çcusson associada.',
 'movelogpage' => "Registro d'arrastros",
 'movereason' => 'Rezon:',
@@ -1150,10 +1137,6 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
 
 'exif-subjectdistancerange-0' => 'Çcoincido',
 
-# External editor support
-'edit-externally' => 'Eiditar este fexeiro outelizando ua aplicaçon sterna',
-'edit-externally-help' => '(Bei las [https://www.mediawiki.org/wiki/Manual:External_editors anstruçones de anstalaçon] pa mais anformaçon).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todas',
 'namespacesall' => 'todas',
index a5c791a..e5afd9c 100644 (file)
@@ -82,7 +82,6 @@ $messages = array(
 'tog-minordefault' => 'တည်းဖြတ်မှုအားလုံးသည် အရေးမကြီးသော တည်းဖြတ်မှုဟု ပုံသေသတ်မှတ်ရန်',
 'tog-previewontop' => 'တည်းဖြတ်သည့်အကွက်မတိုင်မီ နမူနာကို ပြရန်',
 'tog-previewonfirst' => 'ပထမတည်းဖြတ်မှုတွင် နမူနာကို ပြရန်',
-'tog-nocache' => 'ဘရောက်ဇာ၏ page caching သိမ်းဆည်းမှုကို ပိတ်ထားရန်',
 'tog-enotifwatchlistpages' => 'ကျွန်ုပ်၏စောင့်ကြည့်စာရင်းမှ စာမျက်နှာတစ်ခု သို့မဟုတ် ဖိုင်တစ်ခုကို ပြောင်းလဲလိုက်ပါက ကျွနုပ်ဆီ အီးမေးပို့ရန်',
 'tog-enotifusertalkpages' => 'ကျွန်ုပ်၏ဆွေးနွေးချက်စာမျက်နှာ ပြောင်းလဲမှုရှိပါက ကျွန်ုပ်ထံ အီးမေးပို့ရန်',
 'tog-enotifminoredits' => 'စာမျက်နှာများနှင့် ဖိုင်များ၏ အရေးမကြီးသော တည်းဖြတ်မှုများကိုလည်း အီးမေးပို့ရန်',
@@ -214,7 +213,6 @@ $messages = array(
 'qbedit' => 'ပြင်​ဆင်​ရန်​',
 'qbpageoptions' => 'ဤစာမျက်နှာ',
 'qbmyoptions' => 'ကျွန်ုပ် စာမျက်နှာများ',
-'qbspecialpages' => 'အ​ထူး​စာ​မျက်​နှာ​',
 'faq' => 'မေးလေ့ရှိကြသည်များ',
 'faqpage' => 'Project:မေးလေ့ရှိကြသည်များ',
 
@@ -455,7 +453,7 @@ $1',
 'loginlanguagelabel' => 'ဘာသာ: $1',
 
 # Change password dialog
-'resetpass' => 'စကားဝှက်ပြောင်းရန်',
+'changepassword' => 'စကားဝှက် ပြောင်းရန်',
 'resetpass_announce' => 'သင်သည် ယာယီ စကားဝှက်ဖြင့် ဝင်ရောက်ခြင်းဖြစ်သည်။
 စကားဝှက် အသစ်အား ဤနေရာတွင်ရိုက်ပါ :',
 'resetpass_header' => 'အကောင့်စကားဝှက်ပြောင်းရန်',
@@ -609,8 +607,6 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 'rev-showdeleted' => 'ပြ',
 'revisiondelete' => 'မူများကို ဖျက်ရန်/မဖျက်တော့ရန်',
 'revdelete-nooldid-title' => 'တရားမဝင်သော မူအမည်',
-'revdelete-nologtype-title' => 'မှတ်တမ်းအမျိုးအစား ပေးမထားပါ',
-'revdelete-nologid-title' => 'တရားမဝင်သော မှတ်တမ်းရေးသွင်းချက်',
 'revdelete-no-file' => 'ဖော်ပြထားသောဖိုင် မရှိပါ။',
 'revdelete-show-file-submit' => 'မှန်',
 'revdelete-legend' => 'မြင်နိုင်စွမ်းရှိမှုတို့အား ကန့်သတ်ခြင်းကို သတ်မှတ်ရန်',
@@ -626,8 +622,6 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 'revdelete-submit' => 'ရွေးချယ်ထားသော {{PLURAL:$1|မူ|မူများ}}ကို သက်ရောက်စေရန်',
 'revdelete-success' => "'''မူမြင်နိုင်စွမ်းရှိမှုကို အောင်မြင်စွာ update လုပ်ပြီးပါပြီ။'''",
 'revdel-restore' => 'မည်မျှ ရှုမြင်နိုင်သည်ကို ပြောင်းရန်',
-'revdel-restore-deleted' => 'ဖျက်ပစ်လိုက်သောမူများ',
-'revdel-restore-visible' => 'မြင်နိုင်သော မူများ',
 'pagehist' => 'စာမျက်နှာ မှတ်တမ်း',
 'deletedhist' => 'ဖျက်ပစ်လိုက်သော မှတ်တမ်း',
 'revdelete-otherreason' => 'အခြားသော/နောက်ထပ် အကြောင်းပြချက် -',
@@ -670,12 +664,8 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 # 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}}',
@@ -684,7 +674,6 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 'nextn-title' => 'နောက်ထပ်ရလဒ် $1 {{PLURAL:$1|ခု|ခု}}',
 'shown-title' => 'စာမျက်နှာတစ်ခုလျှင် ရလဒ် $1 {{PLURAL:$1|ခု|ခု}} ပြရန်',
 'viewprevnext' => '($1 {{int:မှ}} $2) အထိကြား ရလဒ် ($3) ခုကို ကြည့်ရန်',
-'searchmenu-legend' => 'ရှာဖွေရန် ရွေးချယ်မှု',
 'searchmenu-exists' => "'''ဤဝီကီတွင် \"[[:\$1]]\" အမည်နှင့် စာမျက်နှာတစ်ခုရှိသည်။'''",
 'searchmenu-new' => "'''ဤဝီကီတွင် \"[[:\$1]]\" အမည်နှင့် စာမျက်နှာကို ဖန်တီးပါ။'''",
 'searchprofile-articles' => 'မာတိကာစာမျက်နှာများ',
@@ -707,23 +696,16 @@ Legend: '''({{int:cur}})''' = နောက်ဆုံးမူနှင့် 
 'search-interwiki-default' => 'ရလဒ် $1 ခု -',
 'search-interwiki-more' => '(နောက်ထပ်)',
 'search-relatedarticle' => 'ဆက်နွယ်သော',
-'mwsuggest-disable' => 'AJAX အကြံပြုချက်များကို ပိတ်ထားရန်',
 'searcheverything-enable' => 'အမည်ညွှန်းအားလုံးတွင် ရှာရန်',
 'searchrelated' => 'ဆက်နွယ်သော',
 'searchall' => 'အားလုံး',
 'showingresults' => "'''$2''' နှင့်စသော ရလဒ် {{PLURAL:$1|'''1''' ခု|'''$1''' ခု}}ထိကို အောက်တွင် ပြထားသည်။",
 'showingresultsnum' => "'''$2''' နှင့်စသော ရလဒ် {{PLURAL:$3|'''1''' ခု|'''$3''' ခု}} ကို အောက်တွင် ပြထားသည်။",
 'showingresultsheader' => "'''$4''' အတွက် {{PLURAL:$5|ရလဒ် '''$3''' ခု အနက်မှ '''$1'''|ရလဒ် '''$3'''ခု အနက်မှ '''$1 - $2'''}}",
-'nonefound' => "'''Note''': Only some namespaces are searched by default.
-ပုံမှန်အားဖြင့် အမည်ညွှန်းအချို့ကိုသာ ရှာပေးမည်ဖြစ်သည်။
-Try prefixing your query with ''all:'' to search all content (including talk pages, templates, etc), or use the desired namespace as prefix.
-ရှာရာတွင် ''all:''ကို ရှေ့ဆုံးမှ prefix ထည့်ပြီး ရှာဖွေခြင်းဖြင့် ရှိရှိသမျှ စာမျက်နှာများတွင် (ဆွေးနွေးချက်များ၊ တမ်းပလိတ်များ စသည်) ရှာနိုင်သည်။ သို့မဟုတ် သင်အလိုရှိရာ အမည်ညွှန်းကို prefix ထည့်ပြီး ရှာပါ။",
 'search-nonefound' => 'စုံစမ်းမှုနှင့်ကိုက်ညီသော ရလဒ်မရှိပါ။',
-'powersearch' => 'အထူးပြု ရှာ​ဖွေ​ရန်​',
 'powersearch-legend' => 'အထူးပြု ရှာဖွေရန်',
 'powersearch-ns' => 'အမည်ညွှန်းတို့တွင် ရှာရန် -',
 'powersearch-redir' => 'ပြန်ညွှန်းသည့် လင့်များကို စာရင်းပြုစုရန်',
-'powersearch-field' => 'ဤအကြောင်းအရာအတွက် ရှာဖွေရန်',
 'powersearch-togglelabel' => 'စစ်ဆေးရန် -',
 'powersearch-toggleall' => 'အားလုံး',
 'powersearch-togglenone' => 'အမည်ညွှန်းမရှိ',
@@ -733,7 +715,6 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
 'preferences' => '​ရွေး​ချယ်​စ​ရာ​များ​',
 'mypreferences' => '​ရွေး​ချယ်​စ​ရာ​များ​',
 'prefs-edits' => 'တည်းဖြတ်မှုအရေအတွက် -',
-'changepassword' => 'စကားဝှက် ပြောင်းရန်',
 'prefs-skin' => 'အသွင်အပြင်',
 'skin-preview' => 'နမူနာ',
 'datedefault' => 'မရွေးချယ်',
@@ -751,13 +732,11 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
 'prefs-email' => 'အီးမေးအတွက် ရွေးချယ်စရာ',
 'prefs-rendering' => 'ပုံပန်းသွင်ပြင်',
 'saveprefs' => 'သိမ်းရန်',
-'resetprefs' => 'မသိမ်းရသေးသော အပြောင်းအလဲများကို ရှင်းလင်းရန်',
 'restoreprefs' => 'မူလဆက်တင်များသို့ အားလုံး ပြန်ပြောင်းရန်',
 'prefs-editing' => 'တည်းဖြတ်ခြင်း',
 'rows' => 'အလျားလိုက်တန်း -',
 'columns' => 'ဒေါင်လိုက်တန်း -',
 'searchresultshead' => 'ရှာ​ဖွေ​ရန်​',
-'resultsperpage' => 'စာတစ်မျက်နှာလျှင် ဝင်ကြည့်နှုန်း -',
 'stub-threshold-disabled' => 'ပိတ်ထားသည်',
 'recentchangesdays' => 'လတ်တလောအပြောင်းအလဲများကို ပြရန်နေ့များ -',
 'recentchangesdays-max' => 'အများဆုံး $1 {{PLURAL:$1|ရက်|ရက်}}',
@@ -950,7 +929,6 @@ Your e-mail address is not revealed when other users contact you.
 'recentchanges-label-minor' => 'အရေးမကြီးသော ​ပြင်​ဆင်​မှု ​ဖြစ်​သည်​',
 'recentchanges-label-bot' => 'ဤတည်းဖြတ်မှုကို ဘော့က လုပ်ဆောင်သွားသည်။',
 'recentchanges-label-unpatrolled' => 'ဤတည်းဖြတ်မှုကို မစောင့်ကြပ်မစစ်ဆေးရသေးပါ',
-'rcnote' => "အောက်ပါတို့သည် ပြီးခဲ့သော {{PLURAL:$2|ရက်|'''$2''' ရက်}}, $5, $4 ရက်စွဲအရ နောက်ဆုံး{{PLURAL:$1|ပြောင်းလဲမှု '''တစ်''' ခု|ပြောင်းလဲမှု '''$1''' ခု}}ဖြစ်သည်။",
 'rcnotefrom' => "အောက်ပါတို့သည် '''$2''' ကတည်းက အ​ပြောင်းအလဲများ ြဖစ်သည် ('''$1''' ခု ြပထားသည်)။",
 'rclistfrom' => '$1 မှစသော အပြောင်းအလဲအသစ်များကို ပြရန်',
 'rcshowhideminor' => 'အရေးမကြီးသော ပြင်ဆင်မှု $1ရန်',
@@ -1198,7 +1176,6 @@ Your e-mail address is not revealed when other users contact you.
 'deadendpages' => 'လမ်းပိတ်နေသော (လင့်မရှိသော) စာမျက်နှာများ',
 'protectedpages' => 'ကာကွယ်ထားသော စာမျက်နှာများ',
 'protectedtitles' => 'ကာကွယ်ထားသော ခေါင်းစဉ်များ',
-'protectedtitlestext' => 'အောက်ပါခေါင်းစဉ်များကို ဖန်တီးမရအောင် ကာကွယ်ထားသည်',
 'listusers' => 'အသုံးပြုသူစာရင်း',
 'listusers-editsonly' => 'တည်းဖြတ်ထားဖူးသော အသုံးပြုသူများကိုသာ ဖော်ပြရန်',
 'listusers-creationsort' => 'စတင်ရေးသားသည့်ရက်စွဲအလိုက် စီရန်',
@@ -1232,9 +1209,6 @@ Your e-mail address is not revealed when other users contact you.
 'allpagesto' => 'ဤသည်တွင်ဆုံးသော စာမျက်နှာများကို ပြရန် -',
 'allarticles' => 'စာမျက်နှာအားလုံး',
 'allinnamespace' => 'စာမျက်နှာအားလုံး (အမည်ညွှန်း $1)',
-'allnotinnamespace' => 'စာမျက်နှာအားလုံး (အမည်ညွှန်း $1 တွင်မဟုတ်)',
-'allpagesprev' => 'နောက်',
-'allpagesnext' => 'ရှေ့',
 'allpagessubmit' => 'သွား​ပါ​',
 
 # Special:Categories
@@ -1400,7 +1374,6 @@ Your e-mail address is not revealed when other users contact you.
 'undeletebtn' => 'ပြန်လည် ထိန်းသိမ်းရန်',
 'undeletelink' => 'စောင့်ကြည့်ရန်/ပြန်လည်ထိန်းသိမ်းရန်',
 'undeleteviewlink' => 'ကြည့်ရန်',
-'undeletereset' => 'Reset ချရန်',
 'undeleteinvert' => 'selection ကို ပြောင်းပြန်လှန်ရန်',
 'undeletecomment' => 'အ​ကြောင်း​ပြ​ချက် -',
 'undeletedrevisions' => '{{PLURAL:$1|မူတစ်ခု|မူ $1 ခု}} ကိုပြန်လည် ထိန်းသိမ်းပြီး',
@@ -1454,19 +1427,15 @@ Your e-mail address is not revealed when other users contact you.
 
 # Block/unblock
 'blockip' => 'အသုံးပြုသူကို ပိတ်ပင်ရန်',
-'blockip-title' => 'အသုံးပြုသူကို ပိတ်ပင်ရန်',
 'blockip-legend' => 'အသုံးပြုသူကို ပိတ်ပင်ရန်',
 'ipadressorusername' => 'အိုင်ပီလိပ်စာ သို့ အသုံးပြုသူအမည် -',
 'ipbexpiry' => 'သက်တမ်းကုန်လွန်ရက် -',
 'ipbreason' => 'အ​ကြောင်း​ပြ​ချက်:',
-'ipbreasonotherlist' => 'အခြား အကြောင်းပြချက်',
 'ipbcreateaccount' => 'အကောင့်အသစ်ပြုလုပ်ခြင်းကို တားဆီးရန်',
 'ipbemailban' => 'အီးမေးပို့ခြင်းမှ အသုံးပြုသူကို တားဆီးရန်',
 'ipbsubmit' => 'ဤအသုံးပြုသူကို ပိတ်ပင်ရန်',
 'ipbother' => 'အခြားအချိန်:',
 'ipboptions' => '၂ နာရီ:2 hours,၁ ရက်:1 day,၃ ရက်:3 days,၁ ပတ်:1 week,၂ ပတ်:2 weeks,၁ လ:1 month,၃ လ:3 months,၆ လ:6 months,၁ နှစ်:1 year,အနန္တ:infinite',
-'ipbotheroption' => 'အခြား',
-'ipbotherreason' => 'အခြားသော/နောက်ထပ် အကြောင်းပြချက် -',
 'ipbhidename' => 'အသုံးပြုသူအမည်ကို တည်းဖြတ်မှုများနှင့် စာရင်းမှထဲတွင် ဝှက်ထားရန်',
 'ipbwatchuser' => 'ဤအသုံးပြုသူ၏စာမျက်နှနှင့် ဆွေးနွေးချက်တို့ကို စောင့်ကြည့်ရန်',
 'badipaddress' => 'တရားမဝင်သော IP address',
@@ -1528,7 +1497,6 @@ Your e-mail address is not revealed when other users contact you.
 
 ဤကိစ္စမျိုး ကြုံလာခဲ့ပါက သင် ဆန္ဒရှိလျှင် စာမျက်နှာကို မိမိကိုယ်တိုင် သွားရောက်ရွှေ့ပြောင်း ပေါင်းစပ်နိုင်သည်။",
 'movearticle' => 'စာ​မျက်​နှာ​ကို ရွှေ့ပြောင်းရန် -',
-'movenologin' => 'logged in ဝင်မထားပါ',
 'newtitle' => 'ခေါင်းစဉ်အသစ်သို့:',
 'move-watch' => 'မူရင်းစာမျက်နှာနှင့် ဦးတည်ထားသော စာမျက်နှာတို့ကို စောင့်ကြည့်ရန်',
 'movepagebtn' => 'စာ​မျက်​နှာ​ကို ရွှေ့ပြောင်းရန်',
@@ -1537,9 +1505,6 @@ Your e-mail address is not revealed when other users contact you.
 'movepage-moved-redirect' => 'ပြန်ညွှန်းတစ်ခုကို ဖန်တီးပြီးဖြစ်သည်။',
 'articleexists' => 'ထိုအမည်ဖြင့် စာမျက်နှာတစ်ခု ရှိနှင့်ပြီးဖြစ်သည် (သို့) သင်ရွေးလိုက်သော အမည်သည် တရားမဝင်ပါ။
 ကျေးဇူးပြု၍ အခြားအမည်တစ်ခုကို ရွေးပေးပါ။',
-'talkexists' => "'''စာမျက်နှာကို အောင်မြင်စွာ ရွှေ့ပြီးဖြစ်သည်။ သို့သော် ဆွေးနွေးချက် စာမျက်နှာကိုမူ ရွေ့မရနိုင်ပါ။ အကြောင်းမှာ ခေါင်းစဉ်အသစ်တွင် ရှိပြီးဖြစ်သောကြောင့် ဖြစ်သည်။
-ကျေးဇူးပြု၍ ယင်းတို့ကို မိမိဘာသာ ပြန်ပေါင်းပေးပါ။'''",
-'movedto' => 'ရွေ့​ပြောင်း​ရန်​နေ​ရာ​',
 'movetalk' => 'ယှက်နွယ်နေသော ဆွေးနွေးချက်စာမျက်နှာများကို ရွှေ့ရန်',
 'movepage-page-moved' => 'စာမျက်နှာ $1 ကို $2 သို့ ရွှေ့ပြီးပြီ ဖြစ်သည်။',
 'movepage-page-unmoved' => 'စာမျက်နှာ $1 ကို $2 သို့ ရွှေ့မရနိုင်ပါ။',
@@ -1778,15 +1743,10 @@ Your e-mail address is not revealed when other users contact you.
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-m' => 'တစ်နာရီလျှင် ရှိသည့် မိုင်နှုန်း',
 
-# External editor support
-'edit-externally' => 'ပြင်ပ application တစ်ခုခုကိုသုံး၍ ဤဖိုင်ကို ပြင်ရန်',
-'edit-externally-help' => '(နောက်ထပ်သတင်းအချက်အလက်များအတွက်[https://www.mediawiki.org/wiki/Manual:External_editors တပ်ဆင်မှု လမ်းညွှန်များ] ကို ကြည့်ရန်)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'အားလုံး',
 'namespacesall' => 'အားလုံး',
 'monthsall' => 'အားလုံး',
-'limitall' => 'အားလုံး',
 
 # Email address confirmation
 'confirmemail' => 'အီးမေးကိုအတည်ပြုပါ',
@@ -1885,7 +1845,6 @@ Your e-mail address is not revealed when other users contact you.
 
 # Special:ComparePages
 'comparepages' => 'စာမျက်နှာများကို နှုိင်းယှဉ်ရန်',
-'compare-selector' => 'စာမျက်နှာမူများကို နှုိင်းယှဉ်ရန်',
 'compare-page1' => 'စာမျက်နှာတစ်',
 'compare-page2' => 'စာမျက်နှာနှစ်',
 'compare-rev1' => 'မူ တစ်',
index b1efd38..95d8581 100644 (file)
@@ -49,7 +49,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'ТюштяПингеньЛопат' ),
        'Blankpage'                 => array( 'ЧавоЛопа' ),
        'Block'                     => array( 'СаймасСаемсIP' ),
-       'Blockme'                   => array( 'СаймасСаемизь' ),
        'Booksources'               => array( 'КнигаЛисьмапрят' ),
        'BrokenRedirects'           => array( 'СинденьЛиявНевтемат' ),
        'Categories'                => array( 'Категорият' ),
@@ -58,6 +57,7 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ТеемсШкамсСовамоТарка' ),
        'Deadendpages'              => array( 'ЛисемаСюлмавомаПевтемеЛопат' ),
        'DoubleRedirects'           => array( 'КавтоньКирданьЛиявНевтемат' ),
+       'ExpandTemplates'           => array( 'ПоладомсЛопаПарцунт' ),
        'Export'                    => array( 'Экспортировамс' ),
        'Fewestrevisions'           => array( 'ВесемедеАламокстьЛиякстомтозь' ),
        'Filepath'                  => array( 'ФайланьКи' ),
@@ -152,7 +152,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'куншкасо', 'центр', 'center', 'centre' ),
        'img_framed'                => array( '1', 'кундсо', 'обрамить', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'кундовтомо', 'безрамки', 'frameless' ),
-       'img_page'                  => array( '1', 'лопа=$1', 'лопа $1', 'страница=$1', 'страница $1', 'страница $1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'лопа=$1', 'лопа_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ),
        'img_top'                   => array( '1', 'верькс', 'сверху', 'top' ),
        'img_text_top'              => array( '1', 'текст-верькс', 'текст-сверху', 'text-top' ),
        'img_middle'                => array( '1', 'куншка', 'посередине', 'middle' ),
@@ -200,7 +200,7 @@ $messages = array(
 'tog-editsection' => 'Невтемс сюлмавома пенть «витемс» эрьва секциянтень-пельксэнтень',
 'tog-editsectiononrightclick' => 'Витнемс секциятнень-пелькстнэнь, лепштямс сёрмадовксонть лемензэ лангс чеерень витьёнсе повнесэ',
 'tog-showtoc' => 'Невтемс сёрмадовкспотмокс (лопатненень, конатнесэ 3-до ламо сёрмадовкст)',
-'tog-rememberpassword' => 'Ледстемс совамо валом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'tog-rememberpassword' => 'Ледстемс совамо валом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|1=чи|чить}})',
 'tog-watchcreations' => 'Совавтомс ванома лемрисьмезэнь монь теевть лопатнень ды сень, мезе йовкстан',
 'tog-watchdefault' => 'Совавтомс монь витевть лопатнень ванома лемрисьмезэнь',
 'tog-watchmoves' => 'Совавтомс монь одов лемдявт лопатнень-керьмазтнэнь ванома лемрисьмезэнь',
@@ -208,7 +208,6 @@ $messages = array(
 'tog-minordefault' => 'Тешкстамс витевкстнэнь апокшкэкс, бути лиякс апак ёвта',
 'tog-previewontop' => 'Невтемс сёрмадовксонть васнянь невтевксэнь вальманть витеманьседенть икеле',
 'tog-previewonfirst' => 'Васнянь невтевкс васенцеде витнемстэ-петнемстэ',
-'tog-nocache' => 'Лоткавтомс браузерэнь лопань кешировамонть',
 'tog-enotifwatchlistpages' => 'Кучомс тень ёндол-сёрмине, зярдо ванстнема лемрисьмень лопатнес-керьмазтнэс теевить лиякстомтомат',
 'tog-enotifusertalkpages' => 'Пачтямс е-сёрма теицянь ванома лемрисьмесэнь теезь лиякстомтоматнеде',
 'tog-enotifminoredits' => 'Кучомс тень ёндол-сёрмине сестэяк, зярдо апокшкыне витнемат-петнемат теевить монь ванстевть лопатнесэ-керьмазтнэсэ',
@@ -304,19 +303,19 @@ $messages = array(
 'december-date' => 'Ацамков $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категорият}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категорият}}',
 'category_header' => '"$1" категориясонть лопатне',
 'subcategories' => 'Алкскатегорият',
 'category-media-header' => '"$1" категориясонть медиясь',
 'category-empty' => "''Те категориясонть арасть лопат-медият.''",
-'hidden-categories' => '{{PLURAL:$1|Кекшень категория|Кекшень категорият}}',
+'hidden-categories' => '{{PLURAL:$1|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 Не файлатне}} вановиця категориянтень кандови.',
+'category-subcat-count' => '{{PLURAL:$2|Те категориясонть вейкине явкс категория.|Те категориясонть  {{PLURAL:$1|1=явкс категория|$1 явкс категорият}}, $2 -тнень эйстэ.}}',
+'category-subcat-count-limited' => 'Те категориясонть {{PLURAL:$1|1=алкс категория|$1 алкс категорият}}.',
+'category-article-count' => '{{PLURAL:$2|Те категориясонть вейкине лопась вана косо.|{{PLURAL:$1|1=Те лопась кандови|$1 Не лопатне кандовить}} те категориянтень, категориясонть лопатнеде весемезэ $2.}}',
+'category-article-count-limited' => '{{PLURAL:$1|1=Те лопась|$1 Не лопатне}} те категориясонть.',
+'category-file-count' => '{{PLURAL:$2|Те категориясонть вейкине файлась вана косо.|{{PLURAL:$1|1=Те файлась кандови|$1 Не файлатне кандовить}} те категориянтень, категориясонть файлатнеде весемезэ $2.}}',
+'category-file-count-limited' => '{{PLURAL:$1|1=Те файлась|$1 Не файлатне}} вановиця категориянтень кандови.',
 'listingcontinuesabbrev' => 'поладксозо моли',
 'index-category' => 'Индекс марто лопатне',
 'noindex-category' => 'Индекстэме лопатне',
@@ -340,7 +339,6 @@ $messages = array(
 'qbedit' => 'Витнеме-петнеме',
 'qbpageoptions' => 'Те лопась',
 'qbmyoptions' => 'Монь лопан',
-'qbspecialpages' => 'Башка тевень лопат',
 'faq' => 'Сеедьстэ кепедень кевкстемат',
 'faqpage' => 'Project:Сеедьстэ кепедень кевкстемат',
 
@@ -382,8 +380,8 @@ $messages = array(
 'delete' => 'Нардамс',
 'deletethispage' => 'Нардамс те лопанть',
 'undeletethispage' => 'Вельмевтемс мекев те лопанть',
-'undelete_short' => 'Велявтомс нардазенть {{PLURAL:$1|вейке витнема-петнема|$1 витнемат-петнемат}}',
-'viewdeleted_short' => 'Ваномс {{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
+'undelete_short' => 'Велявтомс нардазенть {{PLURAL:$1|1=вейке витнема-петнема|$1 витнемат-петнемат}}',
+'viewdeleted_short' => 'Ваномс {{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
 'protect' => 'Аравтомс прянь ванстомас',
 'protect_change' => 'полавтомс',
 'protectthispage' => 'Аравтомс те лопанть ванстомас',
@@ -411,7 +409,7 @@ $messages = array(
 'redirectedfrom' => '(Ютавтозь $1 вельде)',
 'redirectpagesub' => 'Лиясто ютавтозь лопа',
 'lastmodifiedat' => 'Те лопанть меельседе витнезь-петнезь $2, $1.',
-'viewcount' => 'Те лопантень совасть {{PLURAL:$1|весть|$1-ксть}}.',
+'viewcount' => 'Те лопантень совасть {{PLURAL:$1|1=весть|$1-ксть}}.',
 'protectedpage' => 'Те лопась ванстомасо',
 'jumpto' => 'Тёкадемс тей:',
 'jumptonavigation' => 'Новигациясь-лездамось',
@@ -444,7 +442,7 @@ $1',
 
 'badaccess' => 'Меревемань асатыкс',
 'badaccess-group0' => 'Тонеть а мерить теемс мезе вешить.',
-'badaccess-groups' => 'Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|куронь|куротнень}} теицятненень.',
+'badaccess-groups' => 'Тевтеемась, конань вешить, тееви ансяк «$1» {{PLURAL:$2|1=куронь|куротнень}} теицятненень.',
 
 'versionrequired' => 'МедияВикинь $1 версиясь эряви',
 'versionrequiredtext' => 'МедияВикинь $1 версиясь эряви те лопанть тевс нолдамга.
@@ -467,7 +465,7 @@ $1',
 'collapsible-expand' => 'Келейгавтомс',
 'thisisdeleted' => '$1-нть ваномс эли велявтомс мекев?',
 'viewdeleted' => 'Ванномс $1?',
-'restorelink' => '{{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
+'restorelink' => '{{PLURAL:$1|1=нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
 'feedlinks' => 'Максовкс:',
 'feed-invalid' => 'А маштови сёрмадстома каналонть сортозо.',
 'site-rss-feed' => 'RSS-нть максовкс $1 -нть кисэ',
@@ -552,7 +550,7 @@ $1',
 'yourpasswordagain' => 'Омбоцеде сёрмадык кирдицянь леметь:',
 'createacct-yourpasswordagain' => 'Кемекстык салававалонть',
 'createacct-yourpasswordagain-ph' => 'Совавтык салававалонть одов',
-'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|чи|чить}})',
+'remembermypassword' => 'Ледстемс совамом те бравзерсэнть (сех кувать $1 {{PLURAL:$1|1=чи|чить}})',
 'userlogin-remembermypassword' => 'Кирдемизь совавтозекс',
 'userlogin-signwithsecure' => 'Нолдак тевс ванстозь сюлмавкс',
 'yourdomainname' => 'Эсеть доменэть:',
@@ -581,7 +579,7 @@ $1',
 'createacct-submit' => 'Шкик совамотаркат',
 'createacct-another-submit' => 'Шкак од совамотарка',
 'createacct-benefit-heading' => '«{{SITENAME}}» сайтэнть теизь тонь кондямо ломанть.',
-'createacct-benefit-body2' => '{{PLURAL:$1|лопа|лопат}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|1=лопа|лопат}}',
 'badretype' => 'Сёрмадыть салава валот кавксть: сынь аволь вейкеть.',
 'userexists' => 'Те лемесь уш саезь.
 Арсека эстеть лия, инеськеть.',
@@ -601,7 +599,7 @@ $1',
 'login-userblocked' => 'Те теицясь аравтозь саймас. Совамонзо а мерить.',
 'wrongpassword' => 'Аволь истя сёрмадык совамо валот. Варчыка одов.',
 'wrongpasswordempty' => 'Салавань валот кадовсь апак сёрмадо. Сёрмадыка одов.',
-'passwordtooshort' => 'Совамо валонть кувалмозо  {{PLURAL:$1|улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
+'passwordtooshort' => 'Совамо валонть кувалмозо  {{PLURAL:$1|1=улезэ 1 тешкс| улезт $1 тешкст}}, аволь седе аламо.',
 'password-name-match' => 'Салава валонтень эряви явовомс теицянь леметь эйстэ.',
 'password-login-forbidden' => 'Те теицянь лемесь ды салававалось а мерить нолдамс тевс.',
 'mailmypassword' => 'Кучт е-сёрмасо од салававал',
@@ -610,7 +608,7 @@ $1',
 кедьстэнек кучомс теицянь од совамо вал {{SITENAME}} ($4) сайтс совамга.<br />
 Теицянтень "$2" кучозь нурькине шкань совамо вал, конась  ней "$3".<br />
 Бути те тон ульнить, сави ней совамс ды кочкамс од совамо вал эстеть.<br />
-Нурькине шкань совамо валот нолдави тевс {{PLURAL:$5|вейке чи|$5 чить}}.
+Нурькине шкань совамо валот нолдави тевс {{PLURAL:$5|1=вейке чи|$5 чить}}.
 
 Бути аволь тон вешицясь, эли мелезэть ледстик совамо валонть, иля яво мель те пачтямнэнтень. Нолдык тевс мельсэ аштицянть - мельс ледстязенть.',
 'noemail' => '"$1" теицянть арась е-сёрмапаргозо.',
@@ -619,7 +617,7 @@ $1',
 Инеськеть, кодак валось пачкоди, совака одов.',
 'eauthentsent' => 'Электрононь сёрмапаргозот кучозь кемекстамонь е-сёрмине.<br /> Сонзэ эйсэ сёрмадозь мезе кода теемс. Ансяк седе мейле, зярдо невтик, сёрмапаргось алкукс эсеть, карматано кучомо лия сёрмат.',
 'mailerror' => 'Е-сёрма кучомсто ильведькс: $1',
-'acct_creation_throttle_hit' => 'Те викисэ тонь IP адресстэть совасть теицят, конат теисть {{PLURAL:$1|1 сёрмадовкс|$1 сёрмадовкст}} меельсе чынть перть, седе ламо полавтомат а мерить теемс истя зняронь шкань перть.
+'acct_creation_throttle_hit' => 'Те викисэ тонь IP адресстэть совасть теицят, конат теисть {{PLURAL:$1|1=1 сёрмадовкс|$1 сёрмадовкст}} меельсе чынть перть, седе ламо полавтомат а мерить теемс истя зняронь шкань перть.
 Тень кисэ, те   IP адресэнть коряс седе тов а маштови теемс-шкамс од сёрмадовкст, зярс.',
 'emailauthenticated' => 'Е-сёрмапаргот кемекстазель $2 чистэ $3 цяссто.',
 'emailconfirmlink' => 'Кемекстык е-сёрмапаргот',
@@ -631,7 +629,7 @@ $1',
 'user-mail-no-addy' => 'Терявтыть кучомс е-сёрма е-сёрмапарговтомо.',
 
 # Change password dialog
-'resetpass' => 'Полавтомс совамо валот',
+'changepassword' => 'Салавань валонь полавтома',
 'resetpass_announce' => 'Совавить нурька шкань салававалсо, кона кучозель куляпаргозот. Совамот прядомга эряви путомс од салававал вана тезэень:',
 'resetpass_header' => 'Полавтомс совамо валот',
 'oldpassword' => 'Ташто совамо валот:',
@@ -750,16 +748,16 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 '''ИЛЯ МАКСО ВАНСТОНЬ ВИДЕЧИСЭ ЛОМАНЕНЬ ВАЖОДЕМАНТЬ АПАК КЕВКСТНЕ!'''",
 'titleprotectedwarning' => "'''ВАНОК:  Те лопась сёлгозь, сонзэ шкамга-теемга [[Special:ListGroupRights|башка видечыть]] эрявить.'''
 Журналонь меельсе сёрмадовксось максозь ало, эрявиндеряй сонзэ ваномс.",
-'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
-'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь  {{PLURAL:$1|лопа парцун|лопа парцунт}}:',
-'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|лопа парцунось|лопа парцунтнэ}}:',
+'templatesused' => 'Те лопасонть тевс нолдазь {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
+'templatesusedpreview' => 'Те икелькс вановкссонть тевс нолдазь  {{PLURAL:$1|1=лопа парцун|лопа парцунт}}:',
+'templatesusedsection' => 'Те пелькссэнть тевс нолдазь {{PLURAL:$1|1=лопа парцунось|лопа парцунтнэ}}:',
 'template-protected' => '(ванстозь)',
 'template-semiprotected' => '(пельс ванстозь)',
-'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|кекшень 1 категорияс|кекшень $1 категорияс}}:',
+'hiddencategories' => 'Те лопась совавтови {{PLURAL:$1|1=кекшень 1 категорияс|кекшень $1 категорияс}}:',
 'nocreatetext' => 'Те {{SITENAME}} лопасонть пирязь од лопань теемась. Тонь ули мелеть велявтомс удалов ды  питнемензе-витнемензе улиця лопанть, али [[Special:UserLogin|совамс али теемс од совама]].',
 'nocreate-loggedin' => 'Тонеть а мерить теемс-шкамс од лопат.',
-'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|тувталось|тувталтнэ}}:',
-'permissionserrorstext-withaction' => 'Тонеть а мерить теемс $2, {{PLURAL:$1|тувталось|тувталтнэ}} вана:',
+'permissionserrorstext' => 'Тонеть а мерить теемс тень, вана {{PLURAL:$1|1=тувталось|тувталтнэ}}:',
+'permissionserrorstext-withaction' => 'Тонеть а мерить теемс $2, {{PLURAL:$1|1=тувталось|тувталтнэ}} вана:',
 'recreate-moveddeleted-warn' => "'''Ванок: Вельмевтят лопа, кона нардазель.'''
 
 Васня арьсек, эряви - а эряви полалемс ды витнемс-петнемс те лопанть.
@@ -802,7 +800,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'history-show-deleted' => 'Ансяк нардазь',
 'histfirst' => 'весемеде умонь',
 'histlast' => 'Меельце',
-'historysize' => '({{PLURAL:$1|1 байт|$1 байтт}})',
+'historysize' => '({{PLURAL:$1|1=1 байт|$1 байтт}})',
 'historyempty' => '(чаво)',
 
 # Revision feed
@@ -818,10 +816,9 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'rev-delundel' => 'невтемс/кекшемс',
 'rev-showdeleted' => 'невтемс',
 'revisiondelete' => 'Нардамс/вельмевтемс лиякстомтоматнень',
-'revdelete-nologtype-title' => 'Журнал типесь апак максо',
 'revdelete-show-file-confirm' => 'Алкукс ули мелеть ваномс «<nowiki>$1</nowiki>» керьмазонть нардазь ревизиянзо, конась саезь $2-нть эйстэ ды ашти тесэ $3?',
 'revdelete-show-file-submit' => 'Ули',
-'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
+'revdelete-selected' => "'''[[:$1]]-нь {{PLURAL:$2|1=Кочкань лиякстомтомась|Кочкань лиякстомтоматне}}:'''",
 'revdelete-legend' => 'Аравтомс неявомачынь петне',
 'revdelete-hide-text' => 'Кекшемс лиякстомтомань текстэнть',
 'revdelete-hide-image' => 'Кекшемс мезе файлатнесэ',
@@ -830,10 +827,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'revdelete-hide-user' => 'Кекшемс витницянть-петницянть теиця лемензэ/IP-нзэ',
 'revdelete-radio-same' => '(иляк лиякстомто)',
 'revdelete-log' => 'Тувталось:',
-'revdelete-submit' => 'Аравтомс кочказь {{PLURAL:$1|лиякстомтомантень|лиякстомтоматненень}}',
+'revdelete-submit' => 'Аравтомс кочказь {{PLURAL:$1|1=лиякстомтомантень|лиякстомтоматненень}}',
 'revdel-restore' => 'Полавтомс неявомачынзэ',
-'revdel-restore-deleted' => 'нардазь верзиятне',
-'revdel-restore-visible' => 'неявиця верзият',
 'pagehist' => 'Лопанть икелькс умазо',
 'deletedhist' => 'Нардань икелькс умазо',
 'revdelete-reasonotherlist' => 'Лия тувтал',
@@ -866,25 +861,20 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'lineno' => 'Киксэсь $1:',
 'compareselectedversions' => 'Кочказь версиятнень аравтомс карадо-каршо',
 'editundo' => 'Велявтомс мекев мезе витнинь-петнинь',
-'diff-multi' => '↓({{PLURAL:$2|Вейке совицясь тейсь {{PLURAL:$1|юткине версия, конась|$1 юткине версият, конатне}}|$2 совицят тейсть {{PLURAL:$1| юткине версия, конась|$1 юткине версият, конатне}}}} апак невте.)',
+'diff-multi' => '↓({{PLURAL:$2|Вейке совицясь тейсь {{PLURAL:$1|1=юткине версия, конась|$1 юткине версият, конатне}}|$2 совицят тейсть {{PLURAL:$1|1= юткине версия, конась|$1 юткине версият, конатне}}}} апак невте.)',
 
 # Search results
 'searchresults' => 'Мезе муевсь',
 'searchresults-title' => 'Мезе муевсь "$1" вешнемасо',
-'searchresulttext' => '{{SITENAME}} сайтсэ вешнэмадо седе ламо содамга вант [[{{MediaWiki:Helppage}}|кевкстемань пельксэнть]].',
-'searchsubtitle' => 'Вешнить \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|весе лопатне "$1" лопасто саезь]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" лопа марто сюлмазь весе лопатне]])',
-'searchsubtitleinvalid' => "Вешнить '''$1'''",
 'titlematches' => 'Лопанть коняксонзо марто вейтьс прась',
-'notitlematches' => 'Лопанть коняксонзо марто вейтьс прамот арасть',
 'textmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот',
 'notextmatches' => 'Лопанть сёрмадсткэнзэ марто вейтьс прамот арасть',
 'prevn' => 'седе икелень {{PLURAL:$1|$1}}',
 'nextn' => 'сы {{PLURAL:$1|$1}}',
-'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|савкс|савкст}}',
-'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|савкс|савкст}}',
-'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|савкс|савкст}}',
+'prevn-title' => 'Седе икелень $1 {{PLURAL:$1|1=савкс|савкст}}',
+'nextn-title' => 'Седе меелень $1 {{PLURAL:$1|1=савкс|савкст}}',
+'shown-title' => 'Невтть лопазонзо $1 {{PLURAL:$1|1=савкс|савкст}}',
 'viewprevnext' => 'Ванномс ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Вешнемань аравтомкат',
 'searchmenu-exists' => "'''Те викисэнть ули \"[[\$1]]\" лем марто лопа'''",
 'searchmenu-new' => "'''Шкик \"[[:\$1]]\" лопанть те викисэнть!'''",
 'searchprofile-articles' => 'Потмокс лопат',
@@ -897,8 +887,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'searchprofile-images-tooltip' => 'Вешнемс файлат',
 'searchprofile-everything-tooltip' => 'Вешнемс весе лопатнева (кортнема лопатневаяк)',
 'searchprofile-advanced-tooltip' => 'Вешнемс башка теезь лемпотмотнестэ',
-'search-result-size' => '$1 ({{PLURAL:$2|1 вал|$2 валт}})',
-'search-result-category-size' => '{{PLURAL:$1|1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1 файла|$3 файлат}})',
+'search-result-size' => '$1 ({{PLURAL:$2|1=1 вал|$2 валт}})',
+'search-result-category-size' => '{{PLURAL:$1|1=1 совицязо|$1 совицянзо}} ({{PLURAL:$2|1=1 явкскатегориязо|$2 явкскатегориянзо}}, {{PLURAL:$3|1=1 файла|$3 файлат}})',
 'search-redirect' => '(йутавтт $1-с)',
 'search-section' => '(пелькс $1)',
 'search-suggest' => 'Истя мерикскелить: $1',
@@ -906,19 +896,14 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'search-interwiki-default' => '$1 савкс:',
 'search-interwiki-more' => '(седе ламо)',
 'search-relatedarticle' => 'Малавикс',
-'mwsuggest-disable' => 'Лоткавтомс вешнемань превспутыенть',
 'searcheverything-enable' => 'Вешнемс весе лем потмотнестэ',
 'searchrelated' => 'малавикс',
 'searchall' => 'весе',
-'showingresultsheader' => "{{PLURAL:$5|муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
-'nonefound' => "'''Ванта''': Башка лем потмонь апак аравто ансяк кона-кона лем потмот понгить вешнэма таркакс.
-Аравтта вешнэма икельксэкс ''all:'', зярдо мель саят вешнэмс эрьва кодамо таркасто (сайсынек: кортнема лопатнень, лопа парцунтнэнь, ды седе тов), лиякс аравтыка эрявикс лем потмонть вешнэма икельксэкс.",
+'showingresultsheader' => "{{PLURAL:$5|1=муевсь '''$1''' вана '''$3'''-тнень эйстэ|муевсть '''$1 - $2''' '''$3'''-тнень эйстэ}} '''$4''' вешнеманть лангс",
 'search-nonefound' => 'Те вешнема лангс мезеяк эзь муеве.',
-'powersearch' => 'Седеяк вешнемс',
 'powersearch-legend' => 'Седе келейстэ вешнема',
 'powersearch-ns' => 'Вешнемс не лемпотмотнестэ:',
 'powersearch-redir' => 'Лия таркав ютавтоматнень сёрмалема',
-'powersearch-field' => 'Вешнемс',
 'powersearch-toggleall' => 'Весе',
 'powersearch-togglenone' => 'Арась мезе невтемс',
 'search-external' => 'Ушо йондонь вешнема',
@@ -927,7 +912,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'preferences' => 'Аравтомат',
 'mypreferences' => 'Аравтомат',
 'prefs-edits' => 'Зяроксть витнезь-петнезь:',
-'changepassword' => 'Салавань валонь полавтома',
 'prefs-skin' => 'Неемань ладсема',
 'skin-preview' => 'Васнянь неевтезэ',
 'datedefault' => 'Икелькс вешема арась',
@@ -938,7 +922,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'prefs-personal' => 'Теицядо',
 'prefs-rc' => 'Чиень полавтнемат-лиякстомтомат',
 'prefs-watchlist' => 'Ванома лемрисьме',
-'prefs-watchlist-days-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
+'prefs-watchlist-days-max' => 'Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}',
 'prefs-watchlist-edits-max' => 'Весемеде покш цётось: 1000',
 'prefs-misc' => 'Минеть-сюнот',
 'prefs-resetpass' => 'Салавань валонь полавтома',
@@ -947,21 +931,18 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'prefs-email' => 'Е-сёрмат-мезть',
 'prefs-rendering' => 'Тюсозо-лангозо',
 'saveprefs' => 'Ванстомс',
-'resetprefs' => 'Нардамс апак вансто полавтнемат',
 'restoreprefs' => 'Велявтомс мекев весе ушодкс ладсематнень',
 'prefs-editing' => 'Витнема-петнема',
 'rows' => 'Валчилькстнэ (строкатне):',
 'columns' => 'Палманть:',
 'searchresultshead' => 'Вешнема',
-'resultsperpage' => 'Зяроксть вастневи ве лопасо:',
 'recentchangesdays' => 'Зяро чить невтемс чиень полавтнематнесэ-лиякстомтоматнесэ:',
-'recentchangesdays-max' => 'Весемеде куватьс $1 {{PLURAL:$1|чис|чис}}',
+'recentchangesdays-max' => 'Весемеде куватьс $1 {{PLURAL:$1|1=чис|чис}}',
 'recentchangescount' => 'Васень аравтоматнень коряс зяро витнемат-петнемат невтемс:',
 'prefs-help-recentchangescount' => 'Тезэнь совавтозь чиень полавтнемат-лиякстомтомат, лопань лувт-путовкст, журналт.',
 'timezonelegend' => 'Шкань зонась:',
 'localtime' => 'Теицянь шкась:',
 'timezoneuseserverdefault' => 'Нолдамс тевс викинь ($1) аравтнематнень',
-'timezoneoffset' => 'Офсет¹:',
 'servertime' => 'Серверэнь шкась:',
 'guesstimezone' => 'Пештемс интернет икельксстэть',
 'timezoneregion-africa' => 'Африка',
@@ -985,7 +966,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'yourlanguage' => 'Келесь:',
 'yournick' => 'Кедень путома:',
 'badsiglength' => 'Кедень путомат пек кувака.
-Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|тешкст|тешкст}}.',
+Эйсэнзэ иляст уле $1 -до ламо {{PLURAL:$1|1=тешкст|тешкст}}.',
 'yourgender' => 'Сыметь (цёрань-тейтерень):',
 'gender-unknown' => 'А меревлинь',
 'gender-male' => 'Сон витни-петни викилопатнесэ',
@@ -1099,7 +1080,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'action-sendemail' => 'кучомс е-сёрмат',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|полавтнема|полавтнемат}}',
+'nchanges' => '$1 {{PLURAL:$1|1=полавтнема|полавтнемат}}',
 'recentchanges' => 'Чыяконь полавтнемат-лиякстомтомат',
 'recentchanges-legend' => 'Улконь полавтнематнень аравтнемаст',
 'recentchanges-summary' => '',
@@ -1109,7 +1090,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'recentchanges-label-bot' => 'Те витнеманть-петнеманть теизе кона-кона бот',
 'recentchanges-label-unpatrolled' => '',
 'recentchanges-legend-newpage' => '(вантаять [[Special:NewPages|од лопань лемрисьме]])',
-'rcnote' => "$5, $4 шканть коряс муят алдо {{PLURAL:$1|Меельсе '''1''' лиякстомтоманть|Меельсе '''$1''' лиякстомтоматнень}}  меельсе {{PLURAL:$2|чинть|'''$2''' читнень}} шкасто.",
 'rcnotefrom' => "Ало невтезь  '''$2''' лиякстомтомасто саезь ('''$1''' видс).",
 'rclistfrom' => 'Невтемс од витьнематнень $1-нть эйстэ саезь.',
 'rcshowhideminor' => '$1 апокшкэ витнемат-петнемат',
@@ -1168,7 +1148,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'file-thumbnail-no' => "Файланть лемезэ ушодови  <strong>$1</strong>.
 Сонсь маряви вишкалгавтозь фотокуво, покшолмазо ''(кенжешка)''.
 Улиндеряй файланть покш верзиязо, йовкстыка сонзэ  - арась, полавтыка тетень лемензэ.",
-'file-exists-duplicate' => 'Те кавонзавкс файла вана {{PLURAL:$1|те файланть|неть файлатнень}} эйстэ:',
+'file-exists-duplicate' => 'Те кавонзавкс файла вана {{PLURAL:$1|1=те файланть|неть файлатнень}} эйстэ:',
 'uploadwarning' => 'Совавтомадо кардамонь пачтямо',
 'savefile' => 'Ванстомс файланть',
 'uploadedimage' => 'йовкстазь "[[$1]]"',
@@ -1247,7 +1227,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'filehist-comment' => 'Мельполадкс',
 'filehist-missing' => 'Файлась арась',
 'imagelinks' => 'Ков файлась нолдави тевс',
-'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
+'linkstoimage' => 'Те файланть марто сюлмавозь вана {{PLURAL:$1|1=истямо сюлмавома пене|$1 истят сюлмавома пенеть}}:',
 'nolinkstoimage' => 'Арась вейкеяк лопа, кона сюлмавови те файланть марто.',
 'sharedupload' => 'Те файлась саезь "$1" файлань пусмосто, сон нолдави тевс лия проектсэяк.',
 'sharedupload-desc-here' => 'Те файлась сась истямо $1 таркасто, паряк сон нолдави тевс лия проектсэ.
@@ -1292,7 +1272,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # Random page
 'randompage' => 'Кодамо понгсь лопа',
-'randompage-nopages' => '{{PLURAL:$2|Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.',
+'randompage-nopages' => '{{PLURAL:$2|1=Те лем потмосо|Не лем потмотнесэ}}: $1 лопат арасть.',
 
 # Random redirect
 'randomredirect' => 'Апак фатя ёнксось',
@@ -1328,12 +1308,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'fewestrevisions' => 'Лопат, конатнесэ весемеде аламо лиякстомтомат',
 
 # Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|байт|байтт}}',
-'ncategories' => '$1 {{PLURAL:$1|категория|категорият}}',
-'nlinks' => '$1 {{PLURAL:$1|невтевкс|невтевкст|невтевкснедэ}}',
-'nmembers' => '$1 {{PLURAL:$1|теиця|теицятне}}',
-'nrevisions' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
-'nviews' => '$1 {{PLURAL:$1|ванома потмо|ванома потмот}}',
+'nbytes' => '$1 {{PLURAL:$1|1=байт|байтт}}',
+'ncategories' => '$1 {{PLURAL:$1|1=категория|категорият}}',
+'nlinks' => '$1 {{PLURAL:$1|невтевкс|невтевкснедэ|невтевкст}}',
+'nmembers' => '$1 {{PLURAL:$1|1=теиця|теицятне}}',
+'nrevisions' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
+'nviews' => '$1 {{PLURAL:$1|1=ванома потмо|ванома потмот}}',
 'lonelypages' => 'Лопаурозкэть',
 'uncategorizedpages' => 'Категориявтомо лопат',
 'uncategorizedcategories' => 'Категориявтомо категорият',
@@ -1359,12 +1339,11 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'deadendpages' => 'Поладкстомо-лисемавтомо лопат',
 'deadendpagestext' => 'Не вана лопатне апак сюлмаво {{SITENAME}} сайтсэ лия лопа марто.',
 'protectedpages' => 'Ванстонь лопат',
-'protectedpagestext' => 'Не вана лопатне ванстозь, иляст понго печтевтемс эли витнемс-петнемс',
 'protectedtitles' => 'Ванстонь конякст',
 'listusers' => 'Теицят-кить',
 'listusers-editsonly' => 'Невтемс ансяк витнема-петнема марто совийтнень-лисийтнень',
 'listusers-creationsort' => 'Аравтомс мельга мельцек шкамо чинь коряс',
-'usereditcount' => '$1 {{PLURAL:$1|витнема-петнема|витнемат-петнемат}}',
+'usereditcount' => '$1 {{PLURAL:$1|1=витнема-петнема|витнемат-петнемат}}',
 'usercreated' => '{{GENDER:$3|Шказь}} on $1 чистэ $2 шкасто',
 'newpages' => 'Од лопат',
 'newpages-username' => 'Теицянь лем:',
@@ -1374,8 +1353,8 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'notargettitle' => 'Совавтома лопа арась',
 'nopagetitle' => 'Истямо вешема лопа арась',
 'nopagetext' => 'Истямо лопа, конань вешить, арась.',
-'pager-newer-n' => '{{PLURAL:$1|седе од 1|седе одт $1}}',
-'pager-older-n' => '{{PLURAL:$1|седе ташто 1|седе таштт $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=седе од 1|седе одт $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=седе ташто 1|седе таштт $1}}',
 'suppress' => 'А ванома',
 
 # Book sources
@@ -1399,16 +1378,13 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'allpagesto' => 'Невтемс лопатнень, конатне прядовить:',
 'allarticles' => 'Весе сёрмадовкст',
 'allinnamespace' => 'Весе лопат ($1 сёрмадовксонть лемезе)',
-'allnotinnamespace' => 'Весе лопатне («$1» лемпотмонь томбалеть)',
-'allpagesprev' => 'Икеле',
-'allpagesnext' => 'Сыця',
 'allpagessubmit' => 'Молемс',
 'allpagesprefix' => 'Невтевкс лопась полаткс марто:',
 'allpages-bad-ns' => '{{SITENAME}} сайтсэнть арась лем потмо "$1".',
 
 # Special:Categories
 'categories' => 'Категорият',
-'categoriespagetext' => '{{PLURAL:$1|Те категориясонть|Не категориятнесэ}} улить лопат эли медият.
+'categoriespagetext' => '{{PLURAL:$1|1=Те категориясонть|Не категориятнесэ}} улить лопат эли медият.
 [[Special:UnusedCategories|тевс апак нолда категориятне]] тесэ а невтевить.
 Истяжо ванытя [[Special:WantedCategories|вешень категориятнень]].',
 'special-categories-sort-count' => 'аравтомс цётонь коряс',
@@ -1475,7 +1451,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'unwatch' => 'А ванстнемс тень мельга',
 'unwatchthispage' => 'Лоткамс ванстомадонзо',
 'notvisiblerev' => 'Лиякстомтомась нардазь',
-'watchlist-details' => 'Ванома лемрисьмесэть {{PLURAL:$1|$1 лопа|$1 лопат}}, апак лово кортнема лопатнень.',
+'watchlist-details' => 'Ванома лемрисьмесэть {{PLURAL:$1|1=$1 лопа|$1 лопат}}, апак лово кортнема лопатнень.',
 'wlshowlast' => 'Невтемс мельсе $1 цяст $2 чить $3',
 'watchlist-options' => 'Ванома потмонь аравтнемат',
 
@@ -1498,7 +1474,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'exblank' => 'лопась чаволь',
 'delete-confirm' => 'Нардамс "$1"',
 'delete-legend' => 'Нардамс',
-'historywarning' => 'Ванок: Лопанть, конань нардамонзо пурнат,  лиякстомтомань икелькс $1 {{PLURAL:$1|умазо|уманзо}}:',
+'historywarning' => 'Ванок: Лопанть, конань нардамонзо пурнат,  лиякстомтомань икелькс $1 {{PLURAL:$1|1=умазо|уманзо}}:',
 'confirmdeletetext' => 'Кундыть нардамо лопа (эли невтевкс-артовкс) вейтьсэ лиякстомтоматнеде икелькс уманзо марто.<br />
 Инеськеть,  кемекстык, эсеть мелеть коряс тень тейсак, алкукс содат, мезе лияды теде мейле, ды алкукс теят тень видечинть (правилатьнень) коряс, конат сёрмадозь [[{{MediaWiki:Policy-url}}]].',
 'actioncomplete' => 'Тевень теемась топавтовсь',
@@ -1536,7 +1512,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'protect_expiry_old' => 'Прядома  шкась амаштовикс.',
 'protect-text' => "Тесэ тынь вансынк ды лиякстомсынк ванстоманть покшолманзо лопаньте '''$1'''.",
 'protect-locked-access' => "Кирдицянь совамо таркат а максы видечи лиякстомтомс лопанть ванстома лувонзо. Тесэ вана лопанть уликс путовксонзо-аравтоманзо '''$1''':",
-'protect-cascadeon' => 'Те лопась ванстозь,  сон путозь {{PLURAL:$1|невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каскадонь ванстомась. Тынь лиякставсынк те ванстома сэренть, ансяк те кодаяк а полавсы каскадонь ванстоманть.',
+'protect-cascadeon' => 'Те лопась ванстозь,  сон путозь {{PLURAL:$1|1=невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каскадонь ванстомась. Тынь лиякставсынк те ванстома сэренть, ансяк те кодаяк а полавсы каскадонь ванстоманть.',
 'protect-default' => 'Весе теицятненень маштови',
 'protect-fallback' => 'Вешеви ве мельс прамось «$1»-нть',
 'protect-level-autoconfirmed' => 'Саймас аравтомс од ды апак сёрмадстово теицятнень',
@@ -1576,9 +1552,9 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'undeleteviewlink' => 'ваномс',
 'undeleteinvert' => 'Кочказень таркас апаконь кочкамо',
 'undeletecomment' => 'Тувталось:',
-'undeletedrevisions' => '{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь',
-'undeletedrevisions-files' => '{{PLURAL:$1|1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1 файла|$2 файлат}} вельмевтезь',
-'undeletedfiles' => '{{PLURAL:$1|1 файла|$1 файлат}} вельмевтезь',
+'undeletedrevisions' => '{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} вельмевтезь',
+'undeletedrevisions-files' => '{{PLURAL:$1|1=1 лиякстомтома|$1 лиякстомтомат}} ды {{PLURAL:$2|1=1 файла|$2 файлат}} вельмевтезь',
+'undeletedfiles' => '{{PLURAL:$1|1=1 файла|$1 файлат}} вельмевтезь',
 'undelete-search-box' => 'Вешнемс нардань лопатнень йутксто',
 'undelete-search-prefix' => 'Невтемс лопат тестэ саезь:',
 'undelete-search-submit' => 'Вешнэмс',
@@ -1620,10 +1596,10 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'isredirect' => 'Лиякс витнинк-петнинк лопанть',
 'istemplate' => 'совавтомс',
 'isimage' => 'файлань сюлмавома пене',
-'whatlinkshere-prev' => '{{PLURAL:$1|икеле|седе икелень $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|сыця|сы $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=икеле|седе икелень $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=сыця|сы $1}}',
 'whatlinkshere-links' => '← сюлмавомапеть',
-'whatlinkshere-hideredirs' => '$1 {{PLURAL:$1|тарка йутавты|таркат йутавтыть}} тей',
+'whatlinkshere-hideredirs' => '$1 {{PLURAL:$1|1=тарка йутавты|таркат йутавтыть}} тей',
 'whatlinkshere-hidetrans' => '$1 сюлмавозь пелькстнэнь',
 'whatlinkshere-hidelinks' => '$1 сюлмавома петь',
 'whatlinkshere-hideimages' => '$1 файланть сюлмавомапензэ',
@@ -1633,17 +1609,13 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'block' => 'Аравтомс теицянть саймас',
 'unblock' => 'Нолдамс теицянть саймасто',
 'blockip' => 'Аравтомс теицянть саймас',
-'blockip-title' => 'Аравтомс теицянть саймас',
 'blockip-legend' => 'Аравтомс теицянть саймас',
 'ipadressorusername' => 'IP адрес эли теицянь лем:',
 'ipbexpiry' => 'Таштомома шказо:',
 'ipbreason' => 'Тувталось:',
-'ipbreasonotherlist' => 'Лия тувтал',
 'ipbsubmit' => 'Озавтомс те теицянть саймес',
 'ipbother' => 'Лия шка:',
 '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',
-'ipbotheroption' => 'лия',
-'ipbotherreason' => 'Лия/поладкс тувтал:',
 'ipb-confirm' => 'Кемекстамс саймес саеманть',
 'badipaddress' => 'Амаштовикс IP адрес',
 'blockipsuccesssub' => 'Саймес озавтовсь',
@@ -1706,7 +1678,6 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 Зярдо истят тевтне, сави тонстеть лопатнень кучомс-сюлмамс, кедьсэ.",
 'movearticle' => 'Одов лемдемс лопанть:',
-'movenologin' => 'Апак сова',
 'movenotallowed' => 'Арась меремат печтевтемс лопатнесэ.',
 'newtitle' => 'Од леменьтэ:',
 'move-watch' => 'Ваномс лопанть',
@@ -1714,14 +1685,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'pagemovedsub' => 'Лопась печтевтевсь',
 'movepage-moved' => "'''«$1»-сь печтевтезь «$2»-с'''",
 'articleexists' => 'Лопась истямо лем марто ули али невтезь тынк эйсэ лемесь анолдавиксев.<br />Инескеть, кочкадо лия лем.',
-'talkexists' => "'''Сонсь лопась печтевтевсь, ансяк кортамонь лопась кодаяк эзь печтевтеве, вана мекс,  истямо лем марто лопась ули. Инеськеть, пурныть сынст вейтьс кедьсэ.'''",
-'movedto' => 'печтевтезь',
 'movetalk' => 'Печтевтемань кортамо лопа',
 'movepage-page-moved' => '"$1" лопась печтевтезь "$2"-с.',
 'movepage-page-unmoved' => 'Лопа $1 эзь печтевтеве $2 лопас.',
 'movelogpage' => 'Печтевтемань журнал',
-'movesubpage' => '{{PLURAL:$1|Алкслопа|Алкслопа}}',
-'movesubpagetext' => 'Те лопасонть ало невтеви $1 {{PLURAL:$1|алкслопа|алкслопа}}.',
+'movesubpage' => '{{PLURAL:$1|1=Алкслопа|Алкслопа}}',
+'movesubpagetext' => 'Те лопасонть ало невтеви $1 {{PLURAL:$1|1=алкслопа|алкслопа}}.',
 'movenosubpage' => 'Те лопасонть алкслопат арасть.',
 'movereason' => 'Тувталось:',
 'revertmove' => 'велявтодо',
@@ -1769,7 +1738,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'import-upload-filename' => 'Файла лемесь:',
 'import-comment' => 'Арсемат-мельть:',
 'importstart' => 'Лопатне совавтовить...',
-'import-revision-count' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
+'import-revision-count' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
 'importnopages' => 'Ёвкстамс лопат арасть',
 'importfailed' => 'Совавтома тевесь эзь лисе: <nowiki>$1</nowiki>',
 'importcantopen' => 'Совавтозь файлась эзь панжово',
@@ -1782,7 +1751,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # Import log
 'importlogpage' => 'Импортонть журналось',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|лиякстомтома|лиякстомтомат}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|1=лиякстомтома|лиякстомтомат}}',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Теицянь лопат',
@@ -1847,12 +1816,12 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'tooltip-summary' => 'Сёрмадт нурькинестэ совавтозденть',
 
 # Attribution
-'anonymous' => '{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|теицязо|теицянзо}}',
+'anonymous' => '{{SITENAME}} сайтэнть лемтеме {{PLURAL:$1|1=теицязо|теицянзо}}',
 'siteuser' => '{{SITENAME}}-нь теиця $1',
 'lastmodifiedatby' => 'Меельседе те лопанть полавтызе $3 $2, $1.',
 'othercontribs' => '$1-нь важодеманзо лангс нежедезь.',
 'others' => 'лият',
-'siteusers' => '{{SITENAME}} сайтэнть {{PLURAL:$2|теицязо|теицянзо}} $1',
+'siteusers' => '{{SITENAME}} сайтэнть {{PLURAL:$2|1=теицязо|теицянзо}} $1',
 'creditspage' => 'Лопасонть кинь путовксонзо',
 
 # Spam protection
@@ -1891,7 +1860,7 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 
 # Media information
 'thumbsize' => 'Кенжешканть покшолмазо:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|лопа|$3 лопат}}',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1=лопа|$3 лопат}}',
 'file-info' => 'файлонть-путовксонть сталмозо: $1, MIME типезе: $2',
 'file-info-size' => '$1 × $2 пиксельть, файлонть-путовксонть сталмозо: $3, MIME типезе: $4',
 'file-nohires' => 'Арась версия покш разрешения марто.',
@@ -2116,21 +2085,15 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'exif-urgency-low' => 'Аламо ($1)',
 'exif-urgency-high' => 'Ламо ($1)',
 
-# External editor support
-'edit-externally' => 'Витнемс-петнемс те файланть, тевс нолдазь ушо ёнксонь программанть',
-'edit-externally-help' => '(Вант [https://www.mediawiki.org/wiki/Manual:External_editors аравтома инструкциятнень] седе ламо информациянть кис.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'весе',
 'namespacesall' => 'весе',
 'monthsall' => 'весе',
-'limitall' => 'весе',
 
 # Email address confirmation
 'confirmemail' => 'Кемекстамс е-почтань сёрмапаргот',
 'confirmemail_send' => 'Кучомс е-сёрмасо кемекстамонь код',
 'confirmemail_loggedin' => 'Е-сёрма паргот апак кемекста.',
-'confirmemail_error' => 'Кемекстамот ванстомсто мезе-бути лиссь.',
 
 # Scary transclusion
 'scarytranscludetoolong' => '[URL пек кувака]',
@@ -2167,13 +2130,13 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 # Watchlist editor
 'watchlistedit-normal-title' => 'Витнемс-петнемс ванстома лопанть',
 'watchlistedit-normal-submit' => 'Нардамс конякстнэнь',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 конякс|$1 конякст}} нардазь ваномань лопастот:',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1=1 конякс|$1 конякст}} нардазь ваномань лопастот:',
 'watchlistedit-raw-title' => 'Витнеме-петнеме верек ваномалопанть',
 'watchlistedit-raw-legend' => 'Витнеме-петнеме верек ваномалопанть',
 'watchlistedit-raw-titles' => 'Конякст:',
 'watchlistedit-raw-submit' => 'Мезе мельга ванстнят, спискаст одкстомтомс',
-'watchlistedit-raw-added' => 'Поладозь {{PLURAL:$1|1 конякс|$1 конякст}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 конякс нардазь|$1 конякст нардазь}}:',
+'watchlistedit-raw-added' => 'Поладозь {{PLURAL:$1|1=1 конякс|$1 конякст}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1=1 конякс нардазь|$1 конякст нардазь}}:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Лиякстоматьне лопатнесэ потмоксстонть',
@@ -2258,15 +2221,15 @@ IP-тешкстэть — $3, саймас совавтоманть ID-сь —
 'api-error-unknownerror' => 'Апак содань ильведевкс: «$1».',
 
 # 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|тёжтьие|тёжтьиеть}}',
+'duration-seconds' => '$1 {{PLURAL:$1|1=секунда|секундат}}',
+'duration-minutes' => '$1 {{PLURAL:$1|1=минут|минутт}}',
+'duration-hours' => '$1 {{PLURAL:$1|1=цяс|цяст}}',
+'duration-days' => '$1 {{PLURAL:$1|1=чи|чить}}',
+'duration-weeks' => '$1 {{PLURAL:$1|1=тарго|таргот}}',
+'duration-years' => '$1 {{PLURAL:$1|1=ие|иеть}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=кеменьие|кеменьиеть}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=пинге|пингеть}}',
+'duration-millennia' => '$1 {{PLURAL:$1|1=тёжтьие|тёжтьиеть}}',
 
 # Special:ExpandTemplates
 'expand_templates_preview' => 'Васнянь неевтезэ',
index 13b8baf..93bcbf6 100644 (file)
@@ -148,7 +148,6 @@ $messages = array(
 'tog-minordefault' => 'همه صفحه‌ئون دچیه ره جزئی پیش‌گامون دار',
 'tog-previewontop' => 'نمایش پیش‌نمایش قبل از دچی‌ین ِجعبه(نا قبل از وه).',
 'tog-previewonfirst' => 'پیش نیمایش زمون اولین دچی‌ین',
-'tog-nocache' => 'حافظهٔ نهونی مرورگر از کار دمبداء بوو',
 'tog-enotifwatchlistpages' => 'اگه منه پگری‌ئون ره تغییر هدانه مسّه ایمیل بزن',
 'tog-enotifusertalkpages' => 'هر گادر منه کاروری صفخه‌ی گپ دله ات چی بنویشنه مه سّه ایمیل بزن',
 'tog-enotifminoredits' => 'هرگادر صحه ها دله اتا خورد چی ره عوض هکردنه مه وسّه ایمیل بزن',
@@ -268,7 +267,6 @@ $messages = array(
 'qbedit' => 'دچی‌ین',
 'qbpageoptions' => 'این صفحه',
 'qbmyoptions' => 'مه صفحه‌ئون',
-'qbspecialpages' => 'شا صفحه‌ئون',
 'faq' => 'معمولی سوالا',
 'faqpage' => 'Project:FAQ',
 
@@ -472,9 +470,6 @@ $2، $1',
 'perfcached' => 'این چیون ثبت بَیی حافظه جه انّه و ممکنه آپدیت نَوائن. حداکثر {{PLURAL:$1|اتا نتیجه|$1تا نتیجه}} قدیمی حافظه دله دره.',
 'querypage-no-updates' => 'این صفحه فعلاً نَونه آپدیت بَواشه.
 همینسه ونه دله بنویشته‌ئون شاید قدیمی بائن.',
-'wrong_wfQuery_params' => 'پارامترون wfQuery()‎ غلطه<br />
-تابع: $1<br />
-پرس‌وجو: $2',
 'viewsource' => 'منبع ره بدی‌ین',
 'viewsource-title' => '$1 مبدأ ره سِراق هدائِن',
 'actionthrottled' => 'شمه پیش ره بیتنه',
@@ -645,8 +640,6 @@ $2، $1',
 
 # Search results
 'searchresults' => 'بچرخستن ِجوابون',
-'searchsubtitle' => "شما '''[[:$1]]''' دمبال بگردستنی ([[Special:Prefixindex/$1|صفحه‌ئونی که با «$1» شروع وانّه]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|صفحه‌ئونی که به «$1» لینک هدانه]])",
-'notitlematches' => 'هیچ صفحه‌یی شمه گپ واری نیّه',
 'prevn' => 'پـیـشـیـن {{PLURAL:$1|$1}}',
 'nextn' => 'تا پَس‌تر {{PLURAL:$1|$1}}',
 'viewprevnext' => 'هارشائن ($1 {{int:pipe-separator}} $2) ($3)',
@@ -657,11 +650,9 @@ $2، $1',
 'search-suggest' => 'شما اینتا ره نخاسنی: $1',
 'search-interwiki-caption' => 'خاخر پروژه‌ئون',
 'search-interwiki-more' => '(ویشتر)',
-'powersearch' => 'ململ بَیی دور هایتن',
 'powersearch-legend' => 'ململ بَیی دور هایتن',
 'powersearch-ns' => 'بچرخستن اینان دله:',
 'powersearch-redir' => '',
-'powersearch-field' => 'دور هایتن اینتا وسه:',
 
 # Preferences page
 'mypreferences' => 'مه خاستنی‌ئون',
@@ -707,7 +698,6 @@ $2، $1',
 'recentchanges-label-newpage' => 'اینتا ویرایش اته نو صفحه ایجاد هاکرده',
 'recentchanges-label-minor' => 'اینتا ویرایش خله جزئی بیه',
 'recentchanges-label-bot' => 'اینتا ویرایش‌ره اته ربات انجام هدائه',
-'rcnote' => "اینجه {{PLURAL:$1|دگاردسته‌یی|'''$1''' دگاردسته‌ئونی}} که $4، $5 جه، '''$2''' روز پیش‌تر دچی‎یه بینه ره اشنّی",
 'rclistfrom' => 'نِمایش تازه‌دگاردسته‌ئون با شروع از $1',
 'rcshowhideminor' => 'پچیک دچی‌یه‌ئون $1',
 'rcshowhidebots' => 'ربوت‌ئون $1',
@@ -898,7 +888,6 @@ $2، $1',
 
 # Block/unblock
 'blockip' => 'کارور ره دَوستن',
-'blockip-title' => 'کارور ره دَوستن',
 'blockip-legend' => 'کارور ره دَوستن',
 'ipbsubmit' => 'ای کارور دأبه‌س بأوه',
 'ipboptions' => '۲ ساعت:2 hours,۱ روز:1 day,۳ روز:3 days,۱ هفته:1 week,۲ هفته:2 weeks,۱ ماه:1 month,۳ ماه:3 months,۶ ماه:6 months,۱ سال:1 year,بی‌پایون:infinite',
@@ -1022,9 +1011,6 @@ $2، $1',
 'exif-orientation-3' => '180 درجه چرخ بزوئن',
 'exif-orientation-4' => 'عمودی په‌شت ئو روبئی',
 
-# External editor support
-'edit-externally' => 'ای فـایـل ره، أتـا دأیـا بـه‌رنـومـه هـه‌مـرا، دأچـیـه‌نـیـن',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'همه',
 'namespacesall' => 'همه',
index c029652..910adb0 100644 (file)
@@ -38,11 +38,10 @@ $messages = array(
 'unprotect' => 'Eab oberei',
 'toolbox' => 'Dabadi n bwait makur',
 
-# 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).
+# 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).
 'currentevents' => 'Imwin',
 'currentevents-url' => 'Project:Imwin',
 'edithelp' => 'Oomo/edar Ipuok',
-'edithelppage' => 'Help:Oomo/edar',
 'helppage' => 'Help:Oangan',
 'mainpage' => 'Bwiema peij',
 'mainpage-description' => 'Bwiema peij',
@@ -73,10 +72,6 @@ $messages = array(
 'editing' => 'Oomo/edar $1',
 'editingsection' => 'Oomo/edar $1 (itubwang)',
 
-# Search results
-'searchhelp-url' => 'Help:Oangan',
-'powersearch' => 'Anani ko',
-
 # Preferences page
 'prefs-skin' => 'Witsin',
 'searchresultshead' => 'Anani ko',
@@ -97,7 +92,7 @@ $messages = array(
 # Special:AllPages
 'allpagessubmit' => 'nuwa ko',
 
-# E-mail user
+# Email user
 'emailuser' => 'Emaileiy amune',
 'emailfrom' => 'Atsiu',
 'emailto' => 'Animwen',
index 1ab8959..7ac970f 100644 (file)
@@ -85,9 +85,9 @@ $messages = array(
 'tog-hidepatrolled' => 'Motlàtìs tlapîpialli tlayèktlàlilistli ìpan welok tlapảtlalistli',
 'tog-newpageshidepatrolled' => 'Mokintlàtis tlapîpialtlaìxtlapaltìn ìwikpa ìtlapòpòwaltekpànal in yâyankuik tlaìxtlapaltìn',
 'tog-extendwatchlist' => 'Mìxmảnas in tlapòpòwaltekpàntlachialli ìka mỏtas nochi in tlapảtlalistli, âmò in san okachi yankuik.',
-'tog-usenewrc' => 'Colōloāz in tlapatlaiztli īca yancuīc tlapatlaliztli īhuān in tlachiyaliztli tlapōhualāmatl (monequi JavaScript)',
-'tog-showtoolbar' => 'Tiquittāz in tlein motequitiltia tlapatlaliztechcopa (JavaScript)',
-'tog-editondblclick' => 'Tiquimpatlāz zāzaniltin ōme clicca (JavaScript)',
+'tog-usenewrc' => 'Molōloāzqueh in tlapatlaliztli in yancuīc tlapatlaliztli āmapan īhuān in tlachiyaliztli tlapōhualāmapan (monequi JavaScript)',
+'tog-showtoolbar' => 'Motlaīxtlatīz in tlachihchīhualōni pāntli',
+'tog-editondblclick' => 'Tiquimpatlāz in zāzanilli intlā ōme tiquimpachoa',
 'tog-showtoc' => 'Tiquittāz in tlein cah zāzotlahcuilōlco',
 'tog-rememberpassword' => 'Ticpiyāz moMotlatequitiltilīltōca īhuān motlahtōlichtacāyo inīn chīuhpōhualhuazco (īxquich {{PLURAL:$1|tōnalli}})',
 'tog-watchcreations' => 'Moaquiāz in āmatl mā niquinyōcoya īhuān in tlahcuilōlli mā niquinquetza īpan notlachiyaliz',
@@ -205,7 +205,6 @@ $messages = array(
 'qbedit' => 'Ticpatlāz',
 'qbpageoptions' => 'Inīn zāzanilli',
 'qbmyoptions' => 'Nozāzanil',
-'qbspecialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
 'faq' => 'Zan īc tētlatlanīliztli',
 'faqpage' => 'Project:FAQ',
 
@@ -258,7 +257,7 @@ $messages = array(
 'articlepage' => 'Xiquittaz in tlahcuilōlli',
 'talk' => 'tēixnāmiquiliztli',
 'views' => 'Tlachiyaliztli',
-'toolbox' => 'In tlein motequitiltia',
+'toolbox' => 'Tlachihchīhualōni',
 'userpage' => 'Xiquitta tlatequitiltilīlli zāzanilli',
 'projectpage' => 'Xiquitta tlachīhualiztli zāzanilli',
 'imagepage' => 'Tiquittaz in zāzanilli īāma',
@@ -280,7 +279,7 @@ $messages = array(
 # 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).
 'aboutsite' => 'Ītechcopa {{SITENAME}}',
 'aboutpage' => 'Project:Ītechcopa',
-'copyright' => 'Tlahcuilōltzin cah yōllōxoxouhqui īpan $1',
+'copyright' => 'In tlahcuilōlli cah tlacēcencāhuani īpan $1 tel ahmo intlā īcuepca motēnēhua.',
 'copyrightpage' => '{{ns:project}}:Tlachīhualōni ītlapiyaliz',
 'currentevents' => 'Āxcāncāyōtl',
 'currentevents-url' => 'Project:Āxcāncāyōtl',
@@ -391,7 +390,7 @@ Hueliz quimpiya tlahtōl tlein ahmo mohuelītih motequitiltia tōcāpan.',
 'createaccount' => 'Ticchīhuāz cē cuentah',
 'gotaccount' => "¿Ye ticpiya cē cuentah? '''$1'''.",
 'gotaccountlink' => 'Ximocalaqui',
-'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō moēhualtīz in maltzinteyōtl netitlanizyeyāntli',
+'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō in tiquēhualtīz in maltzinteyōtl monetitlanizyeyān',
 'createaccountreason' => 'Tlèka:',
 'badretype' => 'Ahneneuhqui motlahtōlichtacāyo.',
 'userexists' => 'In tlatequitiltilīltōcāitl in ōquipehpen ye ia.
@@ -410,25 +409,25 @@ Xiquitta moyēquihcuilōl.',
 Timitztlātlauhtia xicchīhua occeppa.',
 'wrongpasswordempty' => 'Ayāc motlahtōlichtacāyo.
 Timitztlātlauhtia xicchīhua occeppa.',
-'mailmypassword' => 'Notech moēhualtia maltzinteyōtl netitlaniztica yancuīc ichtacātlahtōlli',
+'mailmypassword' => 'Motlacuepilīz mochtacātlahtōl',
 'noemail' => '"$1" ahmo quipiya īe-mailcān.',
 'passwordsent' => 'Ōmoihuah yancuīc motlahtōlichtacāyo īhuīc mo e-mail ("$1").
 Occeppa xicalaqui niman ticmatīz.',
 'mailerror' => 'Ahcuallōtl e-mailcopa: $1',
 'emailconfirmlink' => 'Ticchicāhua mo e-mail',
 'accountcreated' => 'Cuentah ōmochīuh',
-'accountcreatedtext' => 'Tlatequitiltilīlcuentah ic $1 ōmochīuh.',
+'accountcreatedtext' => 'In ītlatequitiltilīllapōhual in [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) ōquiyōcoyalo.',
 'createaccount-title' => 'Cuentah ītlachīhualiz ic {{SITENAME}}',
 'loginlanguagelabel' => 'Tlâtòlli: $1',
 
 # Change password dialog
-'resetpass' => 'Ticpatlāz motlahtōlichtacāyo',
+'changepassword' => 'Ticpatlāz motlahtōlichtacāyo',
 'resetpass_header' => 'Xicpatlāz motlahtōlichtacāyo',
 'oldpassword' => 'Huēhueh motlahtōlichtacayo:',
 'newpassword' => 'Yancuīc motlahtōlichtacayo:',
 'retypenew' => 'Occeppa xiquihcuiloa yancuīc motlahtōlichtacayo:',
 'resetpass_submit' => 'Xicpatlāz motlahtōlichtacāyo auh xicalaquīz',
-'changepassword-success' => '¡Cualli ōmopatlac motlahtōlichtacāyo! Āxcān ticalaquicah...',
+'changepassword-success' => 'Mochtacātlahtōl cualli ōtlapatlalo.',
 'resetpass_forbidden' => 'Tlahtōlichtacayōtl ahmo mohuelītih mopatlah',
 'resetpass-submit-loggedin' => 'Ticpatlāz motlahtōlichtacāyo',
 'resetpass-submit-cancel' => 'Ticcuepāz',
@@ -473,9 +472,7 @@ Occeppa xicalaqui niman ticmatīz.',
 'loginreqlink' => 'ximocalaqui',
 'loginreqpagetext' => 'Tihuīquilia $1 ic tiquintta occequīntīn zāzaniltin.',
 'accmailtitle' => 'Tlahtōlichtacāyōtl ōmoihuah.',
-'accmailtext' => "Cē zāzotlahtōlichtacāyōtl ōcyōcox [[User talk:$1|$1]]  moquitītlani īhuīc $2.
-
-In tlahtōlichtacāyōtl īpal inīn yancuīc cuenta hueliti ticpatlalo zāzanilpan ''[[Special:ChangePassword|tlahtōlichtacāyōtl patlaliztli]]'' zatepan ōticalac.",
+'accmailtext' => "Ōquiyōcox zāzochtacātlahtōlli in [[User talk:$1|$1]] auh ōmoquitītlan īhuīc $2. Tihueliti ticpatlaz īpan ''[[Special:ChangePassword|Ticpatlaz in ]]'' in ōticalaco achtopa.",
 'newarticle' => '(Yancuīc)',
 'newarticletext' => 'Ōtictocac cētiliztli cē zāzanilhuīc oc ahmo ia. Intlā quiēlēhuia quichīhua, xitlahcuiloa niman (nō xiquitta [[{{MediaWiki:Helppage}}|tēpalēhuiliztli zāzanilli]] huehca ōmpa tlapatlaliztli). Intlā ahmo, yāuh achtopa zāzanilli.',
 'noarticletext' => 'In āxcān, ahmō onca tlahcuilōlli inīn zāzanilpan.
@@ -506,7 +503,7 @@ Tihuelīti [[Special:Search/{{PAGENAME}}|tictēmoa inīn zāzaniltōcācopa]] oc
 'hiddencategories' => 'Inīn zāzanilli mopiya {{PLURAL:$1|1 neneuhcāyōc ōmotlāti|$1 neneuhcāyōc ōmotlāti}}:',
 'nocreatetext' => 'Inīn huiqui ōquitzacuili tlahuelītiliztli ic tlachīhua yancuīc zāzaniltin. Tichuelīti ticcuepa auh ticpatla cē zāzanilli, [[Special:UserLogin|xicalaqui nozo xicchīhua cē cuentah]].',
 'nocreate-loggedin' => 'Ahmo tihuelīti tiquinchīhua yancuīc zāzaniltin.',
-'permissionserrors' => 'Huelītiliztechcopa ahcuallōtl',
+'permissionserrors' => 'Tēmācāhualiztli aiuhcāyōtl',
 'permissionserrorstext' => 'Ahmo tihuelīti quichīhua inōn, inīn {{PLURAL:$1|īxtlamatilizpampa}}:',
 'permissionserrorstext-withaction' => 'Ahmo tiquihuelīti $2 inīn {{PLURAL:$1|īxtlamatilizpampa}}:',
 'moveddeleted-notice' => 'Inīn zāzanilli ōmopolo.
@@ -540,8 +537,8 @@ Ye ia.',
 'page_last' => 'xōcoyōc',
 'history-fieldset-title' => 'Tictēmōz īpan tlahcuilōlloh',
 'history-show-deleted' => 'Zan tlapolōlli',
-'histfirst' => 'Achto',
-'histlast' => 'Yancuīc',
+'histfirst' => 'in achto',
+'histlast' => 'in tlatzaucticah',
 'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
 'historyempty' => '(iztāc)',
 
@@ -558,13 +555,11 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'revisiondelete' => 'Tiquimpolōz/ahtiquimpolōz tlachiyaliztli',
 'revdelete-show-file-submit' => 'Quēmah',
 'revdelete-selected' => "'''{{PLURAL:$2|Tlachiyaliztli ōmoēlēhui|Tlachiyaliztli ōmoēlēhuih}} [[:$1]] ītechcopa:'''",
-'revdelete-hide-text' => 'Tictlātīz tlachiyaliztli ītlahcuilōl',
+'revdelete-hide-text' => 'In tlahtlachiyaliztli ītlahcuilōl',
 'revdelete-hide-image' => 'Tictlātīz tlahcuilōlli ītlapiyaliz',
-'revdelete-radio-set' => 'Quēmah',
-'revdelete-radio-unset' => 'Ahmo',
+'revdelete-radio-set' => 'Tlaīnāyalli',
+'revdelete-radio-unset' => 'Ittalōni',
 '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',
@@ -589,8 +584,6 @@ 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:$1|mochīhualiztli}} cece āmac',
@@ -615,11 +608,9 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'search-relatedarticle' => 'Ītechcopa',
 'searchrelated' => 'ītechcopa',
 'searchall' => 'mochīntīn',
-'powersearch' => 'Chicāhuac tlatēmoliztli',
 'powersearch-legend' => 'Chicāhuac tlatēmoliztli',
 'powersearch-ns' => 'Tlatēmōz tōcātzimpan:',
 'powersearch-redir' => 'Quimpiya tlacuepaliztli',
-'powersearch-field' => 'Tlatēmōz',
 'powersearch-toggleall' => 'Mochi',
 'powersearch-togglenone' => 'Ahtlein',
 'search-external' => 'Tlatēmotiliztli calāmpa',
@@ -628,7 +619,6 @@ Hueliz ōmopolo huiqui nozo ōmozacac.
 'preferences' => 'Tlaēlēhuiliztli',
 'mypreferences' => 'Notlaēlēhuiliz',
 'prefs-edits' => 'Tlapatlaliztli tlapōhualli:',
-'changepassword' => 'Ticpatlāz motlahtōlichtacāyo',
 'skin-preview' => 'Xiquitta quemeh yez',
 'datedefault' => 'Ayāc tlanequiliztli',
 'prefs-beta' => 'Ìtlâtlamảtilis in tlayêyẻkòlli',
@@ -758,11 +748,10 @@ Intlā ticnequi, tlācah quimatīzqueh motequi.',
 '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',
 'rcshowhidebots' => '$1 tepoztlācah',
-'rcshowhideliu' => '$1 tlatequitiltilīlli ōmocalacqueh',
+'rcshowhideliu' => '$1 tēmachiyōmacalli tlatequitiltilīltin',
 'rcshowhideanons' => '$1 ahtōcā tlatequitiltilīlli',
 'rcshowhidepatr' => '$1 tlapatlaliztli mochiyahua',
 'rcshowhidemine' => '$1 notlahcuilōl',
@@ -937,9 +926,7 @@ Timitztlātlauhtiah, xitlahcuiloa occē tōcāitl.',
 'deadendpages' => 'Ahtlaquīzaliztli zāzaniltin',
 'protectedpages' => 'Zāzaniltin ōmoquīxti',
 'protectedpages-indef' => 'Zan ahcāhuitl tlaquīxtiliztli',
-'protectedpagestext' => 'Inīn zāzaniltin ōmoquīxtih, auh ahmo mohuelītih mozacah nozo mopatlah',
 'protectedtitles' => 'Tōcāitl ōmoquīxtih',
-'protectedtitlestext' => 'Inīn tōcāitl ōmoquīxtih, auh ahmo mohuelītih mochīhuah',
 'listusers' => 'Tlatequitiltilīlli',
 'newpages' => 'Yancuīc zāzaniltin',
 'newpages-username' => 'Tlatequitiltilīltōcāitl:',
@@ -966,9 +953,6 @@ Timitztlātlauhtiah, xitlahcuiloa occē tōcāitl.',
 'prevpage' => 'Achto zāzanilli ($1)',
 'allarticles' => 'Mochīntīn tlahcuilōlli',
 'allinnamespace' => 'Mochīntīn zāzanilli (īpan $1)',
-'allnotinnamespace' => 'Mochīntīn zāzanilli (quihcuāc $1)',
-'allpagesprev' => 'Achtopa',
-'allpagesnext' => 'Niman',
 'allpagessubmit' => 'Tiquittāz',
 
 # Special:Categories
@@ -1113,7 +1097,7 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
 'contributions-title' => 'Tlatequitiltilīlli $1 ītlahcuilōl',
 'mycontris' => 'Notlahcuilōl',
 'contribsub2' => '$1 ($2)',
-'uctop' => '(ahco)',
+'uctop' => '(āxcān tlapatlaliztli)',
 'month' => 'Īhuīcpa mētztli (auh achtopa):',
 'year' => 'Xiuhhuīcpa (auh achtopa):',
 
@@ -1148,12 +1132,9 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
 'ipadressorusername' => 'IP nozo tlatequitiltilīlli ītōcā:',
 'ipbexpiry' => 'Motlamia:',
 'ipbreason' => 'Īxtlamatiliztli:',
-'ipbreasonotherlist' => 'Occē īxtlamatiliztli',
 'ipbsubmit' => 'Tiquitzacuilīz inīn tlatequitiltilīlli',
 'ipbother' => 'Occē cāuhpan:',
 'ipboptions' => '2 cāhuitl:2 hours,1 tōnalli:1 day,3 tōnaltin:3 days,1 chicuēyilhuitl:1 week,2 chicuēyilhuitl:2 weeks,1 mētztli:1 month,3 mētztli:3 months,6 mētztli:6 months,1 xihuitl:1 year,mochipa:infinite',
-'ipbotheroption' => 'occē',
-'ipbotherreason' => 'Occē īxtlamatiliztli:',
 'ipbwatchuser' => 'Tiquinchiyāz inīn tlatequitiltilīlli in ītlatequitiltilīlzāzanil auh in ītēixnāmiquiliz',
 'badipaddress' => 'Ahcualli IP',
 'blockipsuccesssub' => 'Cualli tlatzacuiliztli',
@@ -1186,14 +1167,12 @@ Quihtōznequi tihuelītīz ticuepāz cē zāzanilli īhuīc ītlācatōca intlā
 '''¡XICPŌHUA!'''
 Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl auh ahcuallōtl achtopa ticzacāz.",
 'movearticle' => 'Ticzacāz tlahcuilōlli',
-'movenologin' => 'Ahmo ōtimocalac',
 'movenotallowed' => 'Ahmo tihuelīti tiquinzaca zāzaniltin.',
 'newtitle' => 'Yancuīc tōcāhuīc',
 'move-watch' => 'Tictlachiyāz inīn zāzanilli',
 'movepagebtn' => 'Ticzacāz zāzanilli',
 'pagemovedsub' => 'Cualli ōmozacac',
 'movepage-moved' => '\'\'\'"$1" ōmotlacuep īhuīc "$2".\'\'\'',
-'movedto' => 'ōmozacac īhuīc',
 'movetalk' => 'Ticzacāz nō tēixnāmiquiliztli tlahcuilōltechcopa.',
 'movepage-page-moved' => 'Zāzanilli $1 ōmozacac īhuīc $2.',
 'movepage-page-unmoved' => 'Ahmo huelīti $1 mozaca īhuīc $2.',
@@ -1394,7 +1373,6 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
 'watchlistall2' => 'mochīntīn',
 'namespacesall' => 'mochīntīn',
 'monthsall' => '(mochīntīn)',
-'limitall' => 'mochi',
 
 # Email address confirmation
 'confirmemail' => 'Ticchicāhuāz e-mail',
@@ -1402,7 +1380,6 @@ Hueliz cah inīn huēyi tlapatlaliztli. Timitztlātlauhtia ticmatīz cuallōtl a
 'confirmemail_success' => 'Mocorreo ōmotlahtōlneltilih
 Niman tihuelīti [[Special:UserLogin|timocalaqui]] auh ticpactiāz huiquitica.',
 'confirmemail_loggedin' => 'Mo e-mailcān ōmochicāuh.',
-'confirmemail_error' => 'Achi ōcatcah ahcualli mochicāhualiztechcopa.',
 'confirmemail_subject' => 'e-mailcān {{SITENAME}} ītlachicāhualiz',
 
 # Scary transclusion
@@ -1458,7 +1435,7 @@ Niman tihuelīti [[Special:UserLogin|timocalaqui]] auh ticpactiāz huiquitica.',
 'version' => 'Machiyōtzin',
 'version-specialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
 'version-other' => 'Occē',
-'version-version' => '(Machiyōtzin $1)',
+'version-version' => '($1)',
 'version-software-version' => 'Machiyōtzin',
 
 # Special:FileDuplicateSearch
index 432caf8..081ec4d 100644 (file)
@@ -12,6 +12,8 @@
  * @author Kaihsu
  */
 
+$fallback = 'cdo, zh-hant';
+
 $datePreferences = array(
        'default',
        'ISO 8601',
@@ -46,7 +48,6 @@ $messages = array(
 'tog-minordefault' => 'Chiām-tēng bī-lâi ê siu-kái lóng sī sió-siu-ká',
 'tog-previewontop' => 'Sûn-khoàⁿ ê lōe-iông tī pian-chi̍p keh-á thâu-chêng',
 'tog-previewonfirst' => 'Thâu-pái pian-chi̍p seng khoàⁿ-māi',
-'tog-nocache' => 'Koaiⁿ-tiāu ia̍h ê cache',
 'tog-enotifwatchlistpages' => 'Kam-sī-tuann ū ē bûn-tsiunn nā ū kái-piàn, kià tiān-tsú-phue hōo guá.',
 'tog-enotifusertalkpages' => 'Guá ê thó-lūn ia̍h  nā ū lâng kái,  kià tiān-tsú-phue hōo guá.',
 'tog-enotifminoredits' => 'Sió pian-chi̍p mā kià tiān-tsú-phue hōo guá.',
@@ -166,7 +167,6 @@ $messages = array(
 'qbedit' => 'Siu-kái',
 'qbpageoptions' => 'Chit ia̍h',
 'qbmyoptions' => 'Goá ê ia̍h',
-'qbspecialpages' => 'Te̍k-sû-ia̍h',
 'faq' => 'Būn-tah',
 'faqpage' => 'Project:Būn-tah',
 
@@ -281,8 +281,6 @@ Chhiáⁿ khoàⁿ [[Special:Version|pán-pún ia̍h]].',
 'ok' => 'Hó ah',
 'retrievedfrom' => 'Lâi-goân: "$1"',
 'youhavenewmessages' => 'Lí ū $1 ($2).',
-'newmessageslink' => 'sin sìn-sit',
-'newmessagesdifflink' => 'chêng 2 ê siu-tēng-pún ê diff',
 'youhavenewmessagesmulti' => 'Lí tī $1 ū sin sìn-sit',
 'editsection' => 'siu-kái',
 'editold' => 'siu-kái',
@@ -334,6 +332,9 @@ Che mā khó-lêng sī {{SITENAME}} só͘ sú-iōng ê nńg-thé chhut būn-tê.
 # General errors
 'error' => 'Chhò-gō·',
 'databaseerror' => 'Chu-liāu-khò· chhò-gō·',
+'databaseerror-query' => '揣:',
+'databaseerror-function' => '功能:',
+'laggedslavemode' => "'''提醒:'''頁內容可能毋是上新的。",
 'readonly' => 'Chu-liāu-khò· só tiâu leh',
 'enterlockreason' => 'Phah beh hong-só ê lí-iû, pau-koah ko͘-kè siáⁿ-mi̍h sî-chūn ē kái-tû hong-só.',
 'readonlytext' => 'Chu-liāu-khò· hiān-chú-sî só tiâu leh, bô khai-hòng hō· lâng siu-kái. Che tāi-khài sī in-ūi teh pān î-siu khang-khòe, oân-sêng liáu-āu èng-tong tō ē hôe-ho̍k chèng-siông. Hū-chek ê hêng-chèng jîn-oân lâu chit-ê soat-bêng: $1',
@@ -342,6 +343,9 @@ Che mā khó-lêng sī {{SITENAME}} só͘ sú-iōng ê nńg-thé chhut būn-tê.
 Che it-poaⁿ sī in-ūi koè-sî ê cheng-chha ia̍h sī le̍k-sú liân-kiat ê ia̍h í-keng hông thâi tiàu.
 
 Nā m̄-sī hit chióng chêng-hêng, lí khó-lêng tú tio̍h nńg-thé ê chhò-ngō͘. Chhiáⁿ pò hō͘ chi̍t ūi [[Special:ListUsers/sysop|koán-lí-goân]], ūi liân-kiat hiâ khì lâu thong-ti .',
+'missingarticle-rev' => '(修訂版本#:$1)',
+'missingarticle-diff' => '(精差:$1,$2)',
+'readonly_lag' => '佇附屬的資料庫更新到主要資料庫資料的時陣,資料庫會自動鎖定。',
 'internalerror' => 'Loē-pō͘ ê chhò-ngō͘',
 'internalerror_info' => 'Loē-pō͘ ê chhò-ngō͘: $1',
 'fileappenderrorread' => 'Ka-ji̍p(append) ê sî bô-hoat-tō͘ thak "$1".',
@@ -355,16 +359,14 @@ Nā m̄-sī hit chióng chêng-hêng, lí khó-lêng tú tio̍h nńg-thé ê chh
 'unexpected' => 'Koài-koài ê pió-tat: "$1"="$2"。',
 'formerror' => 'Chhò-gō·: bô-hoat-tō· kā pió sàng chhut khì.',
 'badarticleerror' => 'Bē-tàng tiàm chit ia̍h chip-hêng chit ê tōng-chok.',
-'cannotdelete' => 'Bô-hoat-tō· kā hit ê ia̍h a̍h-sī iáⁿ-siōng thâi tiāu. (Khó-lêng pa̍t-lâng í-keng kā thâi tiāu ah.)',
+'cannotdelete' => 'Bô-hoat-tō· kā hit ê ia̍h a̍h-sī iáⁿ-siōng 「$1」 thâi tiāu. (Khó-lêng pa̍t-lâng í-keng kā thâi tiāu ah.)',
+'cannotdelete-title' => '無法度共"$1"這頁刣掉。',
 'badtitle' => 'M̄-chiâⁿ piau-tê',
 'badtitletext' => 'Iau-kiû ê piau-tê sī bô-hāu ê, khang ê, a̍h-sī liân-kiat chhò-gō· ê inter-language/inter-wiki piau-tê.',
 'perfcached' => 'Ē-kha ê chu-liāu tùi lâi--ê, só·-í bī-pit oân-choân hoán-èng siōng sin ê chōng-hóng. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Ē-kha ê chu-liāu tùi lâi--ê, tī $1 keng-sin--koè. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Chit-má bē-sái kái chit ia̍h.
 Chia ê chu-liāu bē-tàng sui tiông-sin chéng-lí.',
-'wrong_wfQuery_params' => 'Chhò-ngō͘ ê chham-sò͘ chhoân hō͘ wfQuery()<br />
-Hâm-sò͘: $1<br />
-Cha-sûn: $2',
 'viewsource' => 'Khoàⁿ goân-sú lōe-iông',
 'actionthrottled' => 'Tōng-chok hông tóng leh.',
 'actionthrottledtext' => 'Ūi-tio̍h thê-hông lah-sap ê chhú-tì,  lí ū hông hān-chè tī té sî-kan lāi chò siuⁿ chē pái chit ê tōng-chok,  taⁿ lí í-keng chhiau-koè hān-chè.
@@ -434,7 +436,7 @@ Tùi khoàⁿ-māi,  lí phah--ê.',
 'user-mail-no-addy' => 'Siūⁿ beh kià tiān-chú-phoe, m̄-koh bô siá tē-chí.',
 
 # Change password dialog
-'resetpass' => 'Kái bi̍t-bé',
+'changepassword' => 'Oāⁿ bi̍t-bé',
 'resetpass_header' => 'Kái káu-chō ê bi̍t-bé.',
 'oldpassword' => 'Kū bi̍t-bé:',
 'newpassword' => 'Sin bi̍t-bé:',
@@ -574,9 +576,7 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 # Search results
 'searchresults' => 'Kiám-sek kiat-kó',
 'searchresults-title' => 'Chhoé "$1" ê kiat-kó',
-'searchresulttext' => 'Koan-hē kiám-sek {{SITENAME}} ê siông-sè pō·-sò·, chhiáⁿ chham-khó [[{{MediaWiki:Helppage}}|{{int:help}}]].',
 'titlematches' => 'Phiau-tê ū-tùi ê bûn-chiuⁿ',
-'notitlematches' => 'Bô sio-tùi ê ia̍h-piau-tê',
 'textmatches' => 'Lōe-iông ū-tùi ê bûn-chiuⁿ',
 'notextmatches' => 'Bô sio-tùi ê bûn-chiuⁿ lōe-iông',
 'prevn' => 'chêng {{PLURAL:$1|$1}} hāng',
@@ -594,15 +594,11 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'searchall' => 'choân-pō·',
 'showingresults' => 'Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$1</b> hāng kiat-kó.',
 'showingresultsnum' => 'Ē-kha tùi #<b>$2</b> khai-sí hián-sī <b>$3</b> hāng kiat-kó.',
-'powersearch' => 'Kiám-sek',
 'powersearch-legend' => 'Kiám-sek',
 
 # Preferences page
 'preferences' => 'Siat-tēng',
 'mypreferences' => 'Góa ê siat-tēng',
-'prefsnologin' => 'Bô teng-ji̍p',
-'prefsnologintext' => 'Lí it-tēng ài [[Special:UserLogin|teng-ji̍p]] chiah ē-tàng chhiâu iōng-chiá ê siat-tēng.',
-'changepassword' => 'Oāⁿ bi̍t-bé',
 'prefs-skin' => 'Phôe',
 'skin-preview' => 'Chhì khoàⁿ',
 'datedefault' => 'Chhìn-chhái',
@@ -614,19 +610,16 @@ Lí ê kái-piàn tī ē-kha ê bûn-jī-keh. Lí su-iàu chiōng lí chò ê k
 'prefs-watchlist-edits' => 'Khok-chhiong ê kàm-sī-toaⁿ tio̍h hián-sī kúi hāng pian-chi̍p:',
 'prefs-misc' => 'Kî-thaⁿ ê siat-tēng',
 'saveprefs' => 'Pó-chûn siat-tēng',
-'resetprefs' => 'Têng siat-tēng',
 'prefs-editing' => 'Pian-chi̍p',
 'rows' => 'Chōa:',
 'columns' => 'Nôa',
 'searchresultshead' => 'Chhiau-chhōe kiat-kó ê siat-tēng',
-'resultsperpage' => '1 ia̍h hián-sī kúi kiāⁿ:',
 'recentchangesdays' => 'Hián-sī kúi ji̍t chòe-kīn ê kái-piàn:',
 'recentchangesdays-max' => 'siōng-choē $1 {{PLURAL:$1|kang|kang}}',
 'recentchangescount' => 'Hián-sī kúi tiâu chòe-kīn ê kái-piàn:',
 'savedprefs' => 'Lí ê iōng-chiá siat-tēng í-keng pó-chûn khí lâi ah.',
 'timezonelegend' => 'Sî-khu',
 'localtime' => 'Chāi-tē sî-kan sī',
-'timezoneoffset' => 'Sî-chha¹',
 'servertime' => 'Server sî-kan hiān-chāi sī',
 'guesstimezone' => 'Tùi liû-lám-khì chhau--lâi',
 'allowemail' => 'Ún-chún pa̍t-ê iōng-chiá kià email kòe-lâi',
@@ -783,7 +776,6 @@ Tī pat-lâng liân-lo̍k lí ê sî-chūn bē kā e-mail tsū-tsí siá chhut--
 'deadendpages' => 'Khu̍t-thâu-ia̍h',
 'deadendpagestext' => 'Ē-kha ê ia̍h bô liân kàu wiki lāi-té ê kî-thaⁿ ia̍h.',
 'protectedpages' => 'Siū pó-hō͘ ê ia̍h',
-'protectedpagestext' => 'Ē-kha ê ia̍h siū pó-hō͘, bē-tit soá-ūi ia̍h pian-chi̍p',
 'listusers' => 'Iōng-chiá lia̍t-toaⁿ',
 'newpages' => 'Sin ia̍h',
 'newpages-username' => 'Iōng-chiá miâ-chheng:',
@@ -810,9 +802,6 @@ Tī pat-lâng liân-lo̍k lí ê sî-chūn bē kā e-mail tsū-tsí siá chhut--
 'allpagesfrom' => 'Tùi chit ia̍h khai-sí hián-sī:',
 'allarticles' => 'Só·-ū ê bûn-chiuⁿ',
 'allinnamespace' => 'Só·-ū ê ia̍h ($1 miâ-khong-kan)',
-'allnotinnamespace' => 'Só·-ū ê ia̍h (bô tī $1 miâ-khong-kan)',
-'allpagesprev' => 'Téng 1 ê',
-'allpagesnext' => 'ē 1 ê',
 'allpagessubmit' => 'Lâi-khì',
 
 # Special:Categories
@@ -973,15 +962,12 @@ Tùi chē lâng tha̍k ê ia̍h lâi kóng, soá-ūi sī toā tiâu tāi-chì.
 Liâu--lo̍h-khì chìn-chêng, chhiáⁿ seng khak-tēng lí ū liáu-kái chiah-ê hiō-kó.",
 'movepagetalktext' => "Siong-koan ê thó-lūn-ia̍h (chún ū) oân-nâ ē chū-tōng tòe leh sóa-ūi. Í-hā ê chêng-hêng '''bô chún-sǹg''': *Beh kā chit ia̍h tùi 1 ê miâ-khong-kan (namespace) soá khì lēng-gōa 1 ê miâ-khong-kan, *Sin piau-tê í-keng ū iōng--kòe ê thó-lūn-ia̍h, he̍k-chiá *Ē-kha ê sió-keh-á bô phah-kau. Í-siōng ê chêng-hêng nā-chún tī leh, lí chí-hó iōng jîn-kang ê hong-sek sóa ia̍h a̍h-sī kā ha̍p-pèng (nā ū su-iàu).",
 'movearticle' => 'Sóa ia̍h:',
-'movenologin' => 'Bô teng-ji̍p',
 'movenologintext' => 'Lí it-tēng ài sī chù-chheh ê iōng-chiá jī-chhiáⁿ ū [[Special:UserLogin|teng-ji̍p]] chiah ē-tàng sóa ia̍h.',
 'newtitle' => 'Khì sin piau-tê:',
 'move-watch' => 'Kàm-sī chit ia̍h',
 'movepagebtn' => 'Sóa ia̍h',
 'pagemovedsub' => 'Sóa-ūi sêng-kong',
 'articleexists' => 'Kāng miâ ê ia̍h í-keng tī leh, a̍h-sī lí kéng ê miâ bô-hāu. Chhiáⁿ kéng pa̍t ê miâ.',
-'talkexists' => "'''Ia̍h ê loē-bûn ū soá cháu, m̄-koh siong-koan ê thó-lūn-ia̍h bô toè leh soá, in-ūi sin piau-tê pun-té tō ū hit ia̍h. Chhiáⁿ iōng jîn-kang ê hoat-tō· kā ha̍p-pèng.'''",
-'movedto' => 'sóa khì tī',
 'movetalk' => 'Sūn-sòa sóa thó-lūn-ia̍h',
 'movepage-page-moved' => '$1 í-keng sóa khì tī $2.',
 'movelogpagetext' => 'Ē-kha lia̍t-chhut hông soá-ūi ê ia̍h.',
@@ -1085,15 +1071,10 @@ Lí ē-sái khoàⁿ i ê goân-sú-bé.',
 'metadata-expand' => 'Hián-sī iù-chiat',
 'metadata-collapse' => 'Am iù-chiat',
 
-# External editor support
-'edit-externally' => 'Iōng gōa-pō· èng-iōng nńg-thé pian-chi̍p chit-ê tóng-àn',
-'edit-externally-help' => 'Chham-khó [http://www.mediawiki.org/wiki/Manual:External_editors Help:External_editors] ê soat-bêng.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'choân-pō͘',
 'namespacesall' => 'choân-pō·',
 'monthsall' => 'choân-pō͘',
-'limitall' => '全部',
 
 # Email address confirmation
 'confirmemail' => 'Khak-jīn e-mail chū-chí',
@@ -1103,7 +1084,6 @@ Lí ē-sái khoàⁿ i ê goân-sú-bé.',
 'confirmemail_invalid' => 'Bô-hāu ê khak-jīn pian-bé. Pian-bé khó-lêng í-keng kòe-kî.',
 'confirmemail_success' => 'í ê e-mail chū-chí khak-jīn oân-sêng. Lí ē-sái teng-ji̍p, khai-sí hiáng-siū chit ê wiki.',
 'confirmemail_loggedin' => 'Lí ê e-mail chū-chí í-keng khak-jīn ū-hāu.',
-'confirmemail_error' => 'Pó-chûn khak-jīn chu-sìn ê sî-chūn hoat-seng būn-tê.',
 'confirmemail_subject' => '{{SITENAME}} e-mail chu-chi khak-jin phoe',
 'confirmemail_body' => 'Ū lâng (IP $1, tāi-khài sī lí pún-lâng) tī {{SITENAME}} ēng chit-ê e-mail chū-chí chù-chheh 1 ê kháu-chō "$2".
 
@@ -1169,4 +1149,10 @@ Chit tiuⁿ phoe ê khak-jīn-bé ē chū-tōng tī $4 kòe-kî.',
 # Special:SpecialPages
 'specialpages' => 'Te̍k-sû-ia̍h',
 
+# Special:ExpandTemplates
+'expandtemplates' => 'Khok-chhiong pang-bô͘',
+'expand_templates_input' => 'Su-ji̍p bûn-jī:',
+'expand_templates_output' => 'Kiat-kó:',
+'expand_templates_remove_comments' => 'Comments the̍h tiāu',
+
 );
index db67e15..ae3abe8 100644 (file)
@@ -63,10 +63,10 @@ $messages = array(
 'tog-extendwatchlist' => "Spanne ll'asservate speciale pe fà vedé tutte 'e cagnàmiente, nun solo l'ultimo",
 'tog-usenewrc' => 'Urdeme càgnamiente avanzate (JavaScript)',
 'tog-numberheadings' => "Annúmmera automatecamente 'e títule",
-'tog-showtoolbar' => "Aspone 'a barra d''e stromiente 'e cagno (JavaScript)",
-'tog-editondblclick' => "Cagna 'e pàggene cliccanno ddoje vote (JavaScript)",
+'tog-showtoolbar' => "Aspone 'a barra d''e stromiente 'e cagno",
+'tog-editondblclick' => "Cagna 'e pàggene cliccanno ddoje vote",
 'tog-editsection' => "Permette 'e cagnà 'e sezzione cu a jonta [cagna]",
-'tog-editsectiononrightclick' => "Permette 'e cangne 'e sezzione cliccanno p''o tasto destro ncopp 'e titule 'e sezzione (JavaScript)",
+'tog-editsectiononrightclick' => "Permette 'e cangne 'e sezzione cliccanno p''o tasto destro ncopp 'e titule 'e sezzione",
 'tog-showtoc' => "Mosta ll'innece pe 'e paggene cu cchiù 'e 3 sezzione",
 'tog-rememberpassword' => "Ricurda 'a registrazzione pe' cchiu sessione (ppe 'numassimo 'e $1 {{PLURAL:$1|juorno|juorne}})",
 
@@ -155,7 +155,7 @@ $messages = array(
 'newwindow' => "(s'arape n'ata fenèsta)",
 'cancel' => 'Scancèlla',
 'moredotdotdot' => 'Cchiù...',
-'morenotlisted' => 'Atro...',
+'morenotlisted' => 'Chisto elenco nun è cumpreto.',
 'mypage' => 'Paggena',
 'mytalk' => "'E mmie chiàcchieriate",
 'anontalk' => 'Chiacchierate pe chisto IP',
@@ -168,7 +168,6 @@ $messages = array(
 'qbedit' => 'Càgna',
 'qbpageoptions' => 'Chesta paggena',
 'qbmyoptions' => "'E ppaggene mie",
-'qbspecialpages' => 'Pàggene speciàle',
 'faq' => 'FAQ',
 'faqpage' => 'Project:Domanne frequente',
 
@@ -248,7 +247,7 @@ $messages = array(
 # 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).
 'aboutsite' => "'Nfrummazione ncòpp'a {{SITENAME}}",
 'aboutpage' => "Project:'Nfrummazione",
-'copyright' => "Cuntenuti suggietti a licienza 'e uso $1.",
+'copyright' => "Cuntenute suggiette a licienza 'e auso $1 se nun fuje ritto atro.",
 'copyrightpage' => '{{ns:project}}:Copyrights',
 'currentevents' => 'Novità',
 'currentevents-url' => 'Project:Novità',
@@ -303,7 +302,7 @@ $messages = array(
 'internalerror' => "Errore 'nterno",
 'internalerror_info' => "Errore 'nterno: $1",
 'filedeleteerror' => 'Nun se pô scancellà \'o file "$1"',
-'cannotdelete' => "Nun è possibbele scassà 'a paggena o 'a fiura addamannata. (Putria éssere stato già scancellato.)",
+'cannotdelete' => "Nun è possibbele scassà 'a paggena o 'a fiura $1 addamannata. Putria éssere stato già scancellato.",
 'badtitle' => "'O nnomme nun è jùsto",
 'viewsource' => 'Vere sorgente',
 'viewsource-title' => "Vere surgente 'e $1",
@@ -312,7 +311,7 @@ $messages = array(
 # Login and logout pages
 'logouttext' => "'''Site asciùte.'''
 
-Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putite trasì n'ata vota, cu 'o stesso nomme o cu n'ato nomme.",
+Nota ca arcune paggene potrebbero cuntinuà ad apparire comme se 'o logout nun fosse avvenuto finché nun venne pulita 'a cache d\"o proprio browser.",
 'welcomeuser' => 'Bemmenuto, $1!',
 'yourname' => 'Nomme utente',
 'userlogin-yourname' => 'Nomme utente',
@@ -354,12 +353,13 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'loginsuccess' => "'''Si stato cunnesso ô server 'e {{SITENAME}} cu 'o nomme utente 'e \"\$1\".'''",
 'nosuchusershort' => 'Nun ce stanno utente cu o nòmme "$1". Cuntrolla si scrivìste buòno.',
 'nouserspecified' => "Tiene 'a dìcere nu nomme pricìso.",
-'acct_creation_throttle_hit' => 'Ce dispiace, haje già criato $1 utente. Nun ne pô crià ate.',
+'acct_creation_throttle_hit' => "{{PLURAL:$1|1 registrazzione è già stata effettuata|$1 registrazzione song già state effettuate}} 'e qualcuno cu 'o tujo stisso innerezzo IP dint'ô urdemo juorno: è 'o massimo cunsentito 'n chisto periodo 'e tiempo.
+Perciò, 'e utente ca ausano chisto innerezzo IP nun possono registrarse ppe 'o mumiento.",
 'accountcreated' => 'Cunto criato',
 'loginlanguagelabel' => 'Lengua: $1',
 
 # Change password dialog
-'resetpass' => 'Càgna password',
+'changepassword' => 'Cagna password',
 'resetpass-submit-cancel' => 'Canciella',
 
 # Special:PasswordReset
@@ -396,7 +396,7 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'loginreqlink' => "aseguì ll'acciesso",
 'loginreqpagetext' => "Pe' veré ate ppaggene abbesognate $1.",
 'accmailtitle' => "'O password è stato mannato.",
-'accmailtext' => '\'A password pe ll\'utente "$1" fuje mannata ô nnerizzo $2.',
+'accmailtext' => "'Na password gennerata casualmente ppe [[User talk:$1|$1]] è stata mannata a $2. Chista password può essere càgnata dint'â paggena ppe ''[[Special:ChangePassword|càgna 'a password]]'' subbeto doppo l'acciesso.",
 'newarticle' => '(Novo)',
 'previewnote' => "'''Chesta è sola n'anteprimma; 'e cagnamiénte â paggena nun songo ancora sarvate!'''",
 'editing' => "Cagnamiento 'e $1",
@@ -431,8 +431,8 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'rev-delundel' => 'faje vedé/annascunne',
 'rev-showdeleted' => 'faje vedé',
 'revdelete-show-file-submit' => 'Sì',
-'revdelete-radio-set' => '',
-'revdelete-radio-unset' => 'No',
+'revdelete-radio-set' => 'Nasconde',
+'revdelete-radio-unset' => 'Faje vedé',
 'revdel-restore' => 'càgna visiblità',
 
 # Diffs
@@ -442,8 +442,6 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 # Search results
 'searchresults' => "Risultato d''a recerca",
 'searchresults-title' => 'Ascià risultate ppe "$1"',
-'searchresulttext' => "Pe sapé de cchiù ncopp'â comme ascia 'a {{SITENAME}}, vere [[{{MediaWiki:Helppage}}|Ricerca in {{SITENAME}}]].",
-'notitlematches' => "Voce addemannata nun truvata dint' 'e titule 'e articulo",
 'notextmatches' => "Voce addemannata nun truvata dint' 'e teste 'e articulo",
 'prevn' => '{{PLURAL:$1|precedente|precedente $1}}',
 'nextn' => '{{PLURAL:$1|successivo|successive $1}}',
@@ -468,11 +466,9 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'search-interwiki-caption' => 'Prugiette frate',
 'searchall' => 'Tutte',
 'search-nonefound' => "'A ricerca nun ha produtto risultate.",
-'powersearch' => 'Truova',
 
 # Preferences page
 'mypreferences' => "Preferenze d''e mmeje",
-'changepassword' => 'Cagna password',
 'prefs-rc' => 'Urdeme nove',
 'prefs-watchlist' => 'Asservate speciale',
 'saveprefs' => 'Sarva',
@@ -494,7 +490,6 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'recentchanges-label-newpage' => "Chista modifica ha criato 'na nova paggena",
 'recentchanges-label-minor' => 'Chisto è nu cagnamiénto piccerillo',
 'recentchanges-label-unpatrolled' => "Chista modifica nun è stata 'ncora verificata",
-'rcnote' => "Ccà sotto nce songo ll'urdeme {{PLURAL:$1|cangiamiento|'''$1''' cangiamiente}} 'e ll'urdeme {{PLURAL:$2|juorno|'''$2''' juorne}}, agghiuornate alle $5 ddo $4.",
 'rclistfrom' => "Faje vedé 'e cagnamiénte fatte a partì 'a $1",
 'rcshowhideminor' => "$1 'e cagnamiénte piccerille",
 'rcshowhidebots' => "$1 'e bot",
@@ -510,7 +505,7 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 'newpageletter' => 'N',
 'boteditletter' => 'b',
 'rc_categories_any' => 'Qualònca',
-'rc-enhanced-expand' => 'Fa vede dettaglie (richiede JavaScript)',
+'rc-enhanced-expand' => 'Fa vede dettaglie',
 'rc-enhanced-hide' => 'Annascunne dettaglie',
 
 # Recent changes linked
@@ -582,9 +577,9 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
 
 # Special:Categories
 'categories' => 'Categurìe',
-'categoriespagetext' => "Lista cumpleta d\"e categurie presente ncopp' 'o sito.
-[[Special:UnusedCategories|Unused categories]] are not shown here.
-Also see [[Special:WantedCategories|wanted categories]].",
+'categoriespagetext' => "{{PLURAL:$1|'A categurìa 'nnecata 'e seguito cuntiene|'E categurìe 'nnecate 'e seguito cuntengono}} paggene o file multimediale.
+'E [[Special:UnusedCategories|categurìe vuote]] nun song mostrate ccà.
+Vere anche 'e [[Special:WantedCategories|categurìe richieste]].",
 
 # Special:LinkSearch
 'linksearch-ok' => 'Truova',
@@ -622,7 +617,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 # Protect
 'protectedarticle' => 'ha prutetto "[[$1]]"',
 'prot_1movedto2' => 'ha spustato [[$1]] a [[$2]]',
-'protect-expiry-options' => '2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite',
+'protect-expiry-options' => '1 ore:1 hour,1 juorno:1 day,1 semmana:1 week,2 semmane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anno:1 year,infinito:infinite',
 
 # Undelete
 'viewdeletedpage' => "Vìre 'e ppàggine scancellate",
@@ -636,7 +631,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 # Contributions
 'contributions' => 'Contribbute {{GENDER:$1|utente}}',
 'mycontris' => "'E ffatiche d''e mmeje",
-'contribsub2' => 'Ppe $1 ($2)',
+'contribsub2' => 'Ppe {{GENDER:$3|$1}} ($2)',
 'uctop' => '(attuale)',
 'month' => 'D"o mese (e primma):',
 'year' => "'E ll'anno (e primma):",
@@ -675,14 +670,13 @@ Also see [[Special:WantedCategories|wanted categories]].",
 'contribslink' => 'contribuzzione',
 'blocklogpage' => 'Blocche',
 'blocklogentry' => 'ha fermato "[[$1]]" pe\' nu mumento \'e $2 $3',
-'blocklogtext' => "Chesta è 'a lista d''e azzione 'e blocco e sblocco utente.  'E nnerizze IP bloccate automaticamente nun nce so'. Addumannà 'a [[Special:BlockList|lista IP bloccate]] pp' 'a lista d''e nnerizze e nomme utente 'o ca blocco nce sta.",
+'blocklogtext' => "Chesta è 'a lista d''e azzione 'e blocco e sblocco utente.  'E nnerizze IP bloccate automaticamente nun nce so'. Addumannà 'a [[Special:BlockList|lista bloccate]] pp' 'a lista d''e nnerizze e nomme utente 'o ca blocco nce sta.",
 
 # Move page
 'movearticle' => "Spusta 'a paggena",
 'newtitle' => 'Titulo nuovo:',
 'movepagebtn' => "Spusta 'a paggena",
 'articleexists' => "Na paggena cu chisto nomme asiste già, o pure 'o nomme scegliuto nun è buono.  Scegliere n'ato titulo.",
-'movedto' => 'spustata a',
 'movelogpage' => 'Spustamente',
 'movereason' => 'Raggióne',
 'revertmove' => 'ripristina',
@@ -760,7 +754,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 
 # Media information
 'file-info-size' => '$1 × $2 pixel, dimenzione ddo file: $3, tipo MIME: $4',
-'show-big-image' => 'Vversione ad ata risoluzione',
+'show-big-image' => "File 'e origgine",
 
 # Special:NewFiles
 'noimages' => "Nun nc'è nind' 'a veré.",
@@ -782,9 +776,6 @@ Also see [[Special:WantedCategories|wanted categories]].",
 
 'exif-subjectdistancerange-0' => 'Scanusciuta',
 
-# External editor support
-'edit-externally-help' => "Pe piglià cchiù nfromma veré 'e [https://www.mediawiki.org/wiki/Manual:External_editors struzione] ('n ngrese)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutte',
 'namespacesall' => 'Tutte',
@@ -795,7 +786,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 'confirmemail_loggedin' => "'O nnerizzo 'e e-mail è vàleto",
 
 # Delete conflict
-'deletedwhileediting' => 'Attenziòne: quaccherùno have scancellàto chesta pàggena prìmma ca tu accuminciàste â scrìvere!',
+'deletedwhileediting' => 'Attenziòne: quaccherùno have scancellàto chesta pàggena doppo ca tu accuminciàste â scrìvere!',
 
 # Auto-summaries
 'autoredircomment' => 'Redirect â paggena [[$1]]',
index 4166e4f..795aef5 100644 (file)
@@ -26,6 +26,7 @@
  * @author Jeblad
  * @author Jsoby
  * @author Jóna Þórunn
+ * @author Kjetil r
  * @author Kph
  * @author Kph-no
  * @author Laaknor
@@ -104,7 +105,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Ugyldig_tittel' ),
        'Blankpage'                 => array( 'Blank_side' ),
        'Block'                     => array( 'Blokker', 'Blokker_IP', 'Blokker_bruker' ),
-       'Blockme'                   => array( 'Blokker_meg' ),
        'Booksources'               => array( 'Bokkilder' ),
        'BrokenRedirects'           => array( 'Ødelagte_omdirigeringer' ),
        'Categories'                => array( 'Kategorier' ),
@@ -116,10 +116,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Opprett_konto' ),
        'Deadendpages'              => array( 'Blindveisider' ),
        'DeletedContributions'      => array( 'Slettede_bidrag' ),
-       'Disambiguations'           => array( 'Pekere' ),
        'DoubleRedirects'           => array( 'Doble_omdirigeringer' ),
        'EditWatchlist'             => array( 'Rediger_overvåkningsliste' ),
        'Emailuser'                 => array( 'E-post' ),
+       'ExpandTemplates'           => array( 'Utvid_maler' ),
        'Export'                    => array( 'Eksporter' ),
        'Fewestrevisions'           => array( 'Færrest_revisjoner' ),
        'FileDuplicateSearch'       => array( 'Filduplikatsøk' ),
@@ -161,6 +161,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Beskyttede_sider' ),
        'Protectedtitles'           => array( 'Beskyttede_titler' ),
        'Randompage'                => array( 'Tilfeldig', 'Tilfeldig_side' ),
+       'RandomInCategory'          => array( 'Tilfeldig_fra_kategori' ),
        'Randomredirect'            => array( 'Tilfeldig_omdirigering' ),
        'Recentchanges'             => array( 'Siste_endringer' ),
        'Recentchangeslinked'       => array( 'Relaterte_endringer' ),
@@ -339,7 +340,6 @@ $messages = array(
 'tog-minordefault' => 'Merk i utgangspunktet alle redigeringer som mindre',
 'tog-previewontop' => 'Vis forhåndsvisningen over redigeringsboksen',
 'tog-previewonfirst' => 'Vis forhåndsvisning når du begynner å redigere',
-'tog-nocache' => 'Deaktiver nettlesermellomlagring av sider («caching»)',
 'tog-enotifwatchlistpages' => 'Send meg en e-post når sider og filer på overvåkningslisten min blir endret',
 'tog-enotifusertalkpages' => 'Send meg en e-post når brukerdiskusjonssiden min endres',
 'tog-enotifminoredits' => 'Send meg e-post også ved mindre endringer av sider og filer',
@@ -461,7 +461,7 @@ $messages = array(
 'newwindow' => '(åpnes i et nytt vindu)',
 'cancel' => 'Avbryt',
 'moredotdotdot' => 'Mer …',
-'morenotlisted' => 'Mer som ikke er oppført&nbsp;…',
+'morenotlisted' => 'Denne lista er ufullstendig.',
 'mypage' => 'Min brukerside',
 'mytalk' => 'Min diskusjonsside',
 'anontalk' => 'Brukerdiskusjon for denne IP-adressen',
@@ -474,7 +474,6 @@ $messages = array(
 'qbedit' => 'Rediger',
 'qbpageoptions' => 'Sideinnstillinger',
 'qbmyoptions' => 'Egne innstillinger',
-'qbspecialpages' => 'Spesialsider',
 'faq' => 'Ofte stilte spørsmål',
 'faqpage' => 'Project:Ofte stilte spørsmål',
 
@@ -539,7 +538,7 @@ $messages = array(
 'projectpage' => 'Vis prosjektside',
 'imagepage' => 'Vis filside',
 'mediawikipage' => 'Vis beskjedside',
-'templatepage' => 'Vis mal',
+'templatepage' => 'Vis malside',
 'viewhelppage' => 'Vis hjelpeside',
 'categorypage' => 'Vis kategoriside',
 'viewtalkpage' => 'Vis diskusjon',
@@ -572,8 +571,8 @@ $1',
 'disclaimerpage' => 'Project:Generelle forbehold',
 'edithelp' => 'Redigeringshjelp',
 'helppage' => 'Help:Innhold',
-'mainpage' => 'Hovedside',
-'mainpage-description' => 'Hovedside',
+'mainpage' => 'Forside',
+'mainpage-description' => 'Forside',
 'policy-url' => 'Project:Retningslinjer',
 'portal' => 'Prosjektportal',
 'portal-url' => 'Project:Prosjektportal',
@@ -584,16 +583,16 @@ $1',
 'badaccess-group0' => 'Du har ikke tilgang til å utføre handlingen du prøvde på.',
 'badaccess-groups' => 'Handlingen du prøvde å utføre kan kun utføres av brukere i {{PLURAL:$2|gruppa|gruppene}} $1.',
 
-'versionrequired' => 'Versjon $1 av MediaWiki er påkrevd',
-'versionrequiredtext' => 'Versjon $1 av MediaWiki er nødvendig for å bruke denne siden. Se [[Special:Version|versjonsiden]]',
+'versionrequired' => 'MediaWiki-versjon $1 er påkrevd',
+'versionrequiredtext' => 'MediaWiki-versjon $1 er nødvendig for å bruke denne siden. Se [[Special:Version|versjonsiden]]',
 
 'ok' => 'OK',
 'retrievedfrom' => 'Hentet fra «$1»',
 'youhavenewmessages' => 'Du har $1 ($2).',
 'youhavenewmessagesfromusers' => 'Du har $1 fra {{PLURAL:$3|en annen bruker| $3 brukere}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 fra mange brukere ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|en ny melding|nye meldinger}}',
-'newmessagesdifflinkplural' => 'siste {{PLURAL:$1|endring|endringer}}',
+'newmessageslinkplural' => '{{PLURAL:$1|en ny melding|999=nye meldinger}}',
+'newmessagesdifflinkplural' => 'siste {{PLURAL:$1|endring|999=endringer}}',
 'youhavenewmessagesmulti' => 'Du har nye beskjeder på $1',
 'editsection' => 'rediger',
 'editold' => 'rediger',
@@ -645,7 +644,13 @@ En liste over gyldige spesialsider finnes på [[Special:SpecialPages|{{int:speci
 # General errors
 'error' => 'Feil',
 'databaseerror' => 'Databasefeil',
-'laggedslavemode' => 'Advarsel: Dette kan være en eldre versjon av siden.',
+'databaseerror-text' => 'En feil skjedde med en databasespørring.
+Dette kan være et tegn på feil med programvaren.',
+'databaseerror-textcl' => 'En feil skjedde med en databasespørring.',
+'databaseerror-query' => 'Spørring: $1',
+'databaseerror-function' => 'Funksjon: $1',
+'databaseerror-error' => 'Feil: $1',
+'laggedslavemode' => "'''Advarsel:''' Dette kan være en eldre versjon av siden.",
 'readonly' => 'Databasen er skrivebeskyttet',
 'enterlockreason' => 'Skriv en begrunnelse for skrivebeskyttelsen, inkludert et estimat for når den blir opphevet',
 'readonlytext' => 'Databasen er for øyeblikket skrivebeskyttet, sannsynligvis på grunn av rutinemessig vedlikehold.
@@ -685,9 +690,6 @@ Den inneholder kanskje ett eller flere tegn som ikke kan brukes i titler.',
 'perfcached' => 'Følgende data er en tidligere kopi og ikke nødvendigvis den siste versjonen i databasen. Maksimalt {{PLURAL:$1|ett resultat|$1 resultater}} er {{PLURAL:$1|tilgjengelig|tilgjengelige}} som tidligere kopier.',
 'perfcachedts' => 'Følgende data er en tidligere kopi, og ble sist oppdatert $1. Maksimalt {{PLURAL:$4|ett resultat|$4 resultater}} er {{PLURAL:$4|tilgjengelig|tilgjengelige}} som tidligere kopier.',
 'querypage-no-updates' => 'Oppdateringer for denne siden er slått av. Data her blir ikke gjenoppfrisket.',
-'wrong_wfQuery_params' => 'Gale paramtere til wfQuery()<br />
-Funksjon: $1<br />
-Spørring: $2',
 'viewsource' => 'Vis kilde',
 'viewsource-title' => 'Vis kilden til $1',
 'actionthrottled' => 'Handlingsgrense overskredet',
@@ -695,8 +697,8 @@ Spørring: $2',
 'protectedpagetext' => 'Denne siden har blitt låst for endringer.',
 'viewsourcetext' => 'Du kan se og kopiere kilden til denne siden:',
 'viewyourtext' => "Du kan se og kopiere kilden til '''dine endringer''' på denne siden:",
-'protectedinterface' => 'Denne siden fremskaffer brukergrensesnittekst for programvaren, og er låst for å hindre misbruk.',
-'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes for å fremskaffe grensesnittekst for programvaren.
+'protectedinterface' => 'Denne siden kontrollerer brukergrensesnittekst for programvaren, og er låst for å hindre misbruk.',
+'editinginterface' => "'''Advarsel:''' Du redigerer en side som brukes til å kontrollere grensesnittekst for programvaren.
 Endringer av denne siden vil påvirke hvordan grensesnittet vil se ut for andre brukere.
 For oversettelser er det best om du bruker [//translatewiki.net/wiki/Main_Page?setlang=nb translatewiki.net], prosjektet for oversettelse av MediaWiki.",
 'cascadeprotected' => 'Denne siden er låst for redigering fordi den inkluderes på følgende sider som har dypbeskyttelse slått på:<!--{{PLURAL:$1}}-->
@@ -717,17 +719,18 @@ Administrators nærmere begrunnelse: «$3».',
 'invalidtitle-knownnamespace' => 'Ugyldig tittel med navnerommet «$2» og teksten «$3»',
 'invalidtitle-unknownnamespace' => 'Ugyldig tittel med ukjent navneromsnummer $1 og teksten «$2»',
 'exception-nologin' => 'Ikke innlogget',
-'exception-nologin-text' => 'Denne siden eller handlingen krever at du er innlogget på denne wikien.',
+'exception-nologin-text' => '[[Special:Userlogin|Logg inn]] for å kunne se siden eller utføre denne handlingen.',
+'exception-nologin-text-manual' => 'Du må $1 for å få tilgang til denne siden eller handlingen.',
 
 # Virus scanner
-'virus-badscanner' => "Dårlig konfigurasjon: Ukjent virusskanner: ''$1''",
+'virus-badscanner' => "Feilkonfigurasjon: Ukjent virusskanner: ''$1''",
 'virus-scanfailed' => 'skanning mislyktes (kode $1)',
 'virus-unknownscanner' => 'ukjent antivirusprogram:',
 
 # Login and logout pages
 'logouttext' => "'''Du er nå logget ut.'''
 
-Vær oppmerksom på at noen sider kan fortsette å dukke opp som om du fortsatt var innlogget, helt til du nullstiller nettleserens cache.",
+Vær oppmerksom på at noen sider kan fortsette å dukke opp som om du fortsatt var innlogget, helt til du nullstiller nettleserens mellomlager (cache).",
 'welcomeuser' => 'Velkommen, $1!',
 'welcomecreation-msg' => 'Kontoen din har blitt opprettet.
 Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.',
@@ -764,9 +767,12 @@ Ikke glem å endre [[Special:Preferences|innstillingene dine]] på {{SITENAME}}.
 'gotaccount' => 'Har du allerede en konto? $1.',
 'gotaccountlink' => 'Logg inn',
 'userlogin-resetlink' => 'Har du glemt påloggingsdetaljene dine?',
-'userlogin-resetpassword-link' => 'Tilbakestill passordet ditt',
+'userlogin-resetpassword-link' => 'Glemt passordet?',
 'helplogin-url' => 'Help:Innlogging',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hjelp med innlogging]]',
+'userlogin-loggedin' => 'Du er allerede logget inn som {{GENDER:$1|$1}}.
+Bruk skjemaet nedenfor for å logge inn som en annen bruker.',
+'userlogin-createanother' => 'Opprett ny konto',
 'createacct-join' => 'Skriv inn informasjonen din under.',
 'createacct-another-join' => 'Legg inn den nye kontoens informasjon under.',
 'createacct-emailrequired' => 'E-postadresse',
@@ -810,7 +816,7 @@ Sjekk stavemåten eller [[Special:UserLogin/signup|opprett en ny konto]].',
 'passwordtooshort' => 'Passord må ha minst {{PLURAL:$1|ett tegn|$1 tegn}}.',
 'password-name-match' => 'Passord og brukernavn kan ikke være det samme.',
 'password-login-forbidden' => 'Bruken av dette brukernavnet og passordet er forbudt.',
-'mailmypassword' => 'Send nytt passord',
+'mailmypassword' => 'Tilbakestill passord',
 'passwordremindertitle' => 'Nytt midlertidig passord fra {{SITENAME}}',
 'passwordremindertext' => 'Noen (antagelig deg, fra IP-adressen $1) ba oss sende deg et nytt
 passord til {{SITENAME}} ($4). Et midlertidig passord for «$2» har
@@ -860,7 +866,7 @@ Hvis du velger å oppgi det, vil det blir anvendt for å gi deg som bruker anerk
 'user-mail-no-body' => 'Prøvde å sende e-post med tom eller for kort brødtekst.',
 
 # Change password dialog
-'resetpass' => 'Endre passord',
+'changepassword' => 'Endre passord',
 'resetpass_announce' => 'Du logget inn med en midlertidig e-postkode. For å fullføre innloggingen må du oppgi et nytt passord her:',
 'resetpass_text' => '<!-- Legg til tekst her -->',
 'resetpass_header' => 'Endre passord',
@@ -881,7 +887,7 @@ Du kan ha allerede byttet passordet, eller bedt om et nytt midlertidig passord.'
 # Special:PasswordReset
 'passwordreset' => 'Tilbakestilling av passord',
 'passwordreset-text-one' => 'Fyll ut skjemaet for å tilbakestille passordet',
-'passwordreset-text-many' => '{{PLURAL:$1|Fyll inn et av datafeltene for å tilbakestille passordet ditt.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Fyll inn ett av datafeltene for å tilbakestille passordet ditt via epost.}}',
 'passwordreset-legend' => 'Nullstill passord',
 'passwordreset-disabled' => 'Nullstilling av passord er deaktivert på denne wikien.',
 'passwordreset-emaildisabled' => 'E-posttjenester er slått av på denne wikien.',
@@ -938,7 +944,7 @@ Og du burde gjøre det hvis du har avslørt nøklene for noen.',
 'resettokens-legend' => 'Nullstill merker',
 'resettokens-tokens' => 'Merker:',
 'resettokens-token-label' => '$1 (aktuell verdi: $2)',
-'resettokens-watchlist-token' => 'Webmatenøkkel for overvåkningslisten',
+'resettokens-watchlist-token' => 'Webmatenøkkel (Atom/RSS) for [[Special:Watchlist|endringer av sider på din overvåkningsliste]]',
 'resettokens-done' => 'Nullstilling av merker.',
 'resettokens-resetbutton' => 'Nullstill valgte merker',
 
@@ -1146,6 +1152,8 @@ Slette- og flytteloggen vises nedenfor.',
 'invalid-content-data' => 'Ugyldig innhold',
 'content-not-allowed-here' => 'Innholdsmodellen «$1» er ikke tillatt på siden [[$2]]',
 'editwarning-warning' => 'Ved å forlate siden kan du miste alle endringer du har utført. Om du er logget inn kan du slå av denne advarselen under «Redigering»-seksjonen i innstillingene.',
+'editpage-notsupportedcontentformat-title' => 'Innholdsformatet er ikke støttet',
+'editpage-notsupportedcontentformat-text' => 'Innholdsformatet $1 er ikke støttet av innholdsmodellen $2.',
 
 # Content models
 'content-model-wikitext' => 'WikiTekst',
@@ -1187,6 +1195,9 @@ Disse parameterne har blitt utelatt.',
 'cantcreateaccount-text' => "Kontooppretting fra denne IP-adressen ('''$1''') har blitt blokkert av [[User:$3|$3]].
 
 Grunnen som ble oppgitt av $3 er ''$2''",
+'cantcreateaccount-range-text' => "Opprettelsen av en brukerkonto fra IP-adresser i intervallet '''$1''', som inneholder din IP-adresse ('''$4'''), er blitt blokkert av [[User:$3|$3]].
+
+Årsaken angitt av $3 er ''$2''",
 
 # History pages
 'viewpagelogs' => 'Vis logger for denne siden',
@@ -1255,10 +1266,6 @@ Du kan se denne diffen; det kan finnes detaljer i [{{fullurl:{{#Special:Log}}/su
 'revisiondelete' => 'Slett/gjenopprett revisjoner',
 'revdelete-nooldid-title' => 'Ugyldig målversjon',
 'revdelete-nooldid-text' => 'Du har ikke angitt en målversjon for denne funksjonen, den angitte versjonen finnes ikke, eller du forsøker å skjule den nåværende versjonen.',
-'revdelete-nologtype-title' => 'Ingen loggtype spesifisert',
-'revdelete-nologtype-text' => 'Du har ikke spesifisert en loggtype å utføre denne handlingen på.',
-'revdelete-nologid-title' => 'Ugyldig loggelement',
-'revdelete-nologid-text' => 'Enten fins ikke det angitte loggelementet, eller så har du ikke angitt noe loggelement å utføre denne funksjonen på.',
 'revdelete-no-file' => 'Den spesifiserte filen finnes ikke.',
 'revdelete-show-file-confirm' => 'Er du sikker på at du ønsker å vise en slettet versjon av filen «<nowiki>$1</nowiki>» fra $2 kl. $3?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1269,7 +1276,7 @@ Andre administratorer på {{SITENAME}} vil fortsatt kunne se det skjulte innhold
 'revdelete-confirm' => 'Bekreft at du ønsker å gjøre dette, at du forstår konsekvensene, og at du gjør det i samsvar med [[{{MediaWiki:Policy-url}}|retningslinjene]].',
 'revdelete-suppress-text' => "Skjuling bør '''kun''' brukes i følgende tilfeller:
 * Mulig injurierende utsagn
-* Upassende personlige opplysninger, herunder
+* Følsomme personlige opplysninger
 *: ''privatadresser og -telefonnumre, fødselsnumre og lignende''",
 'revdelete-legend' => 'Fastsett synlighetsbegrensninger',
 'revdelete-hide-text' => 'Skjul revisjonstekst',
@@ -1279,8 +1286,8 @@ Andre administratorer på {{SITENAME}} vil fortsatt kunne se det skjulte innhold
 'revdelete-hide-user' => 'Skjul bidragsyters brukernavn eller IP-adresse',
 'revdelete-hide-restricted' => 'La disse begrensningene gjelde for administratorer også',
 'revdelete-radio-same' => '(ikke endre)',
-'revdelete-radio-set' => 'Ja',
-'revdelete-radio-unset' => 'Nei',
+'revdelete-radio-set' => 'Skjult',
+'revdelete-radio-unset' => 'Synlig',
 'revdelete-suppress' => 'Skjul informasjon også fra administratorer',
 'revdelete-unsuppress' => 'Fjern betingelser på gjenopprettede revisjoner',
 'revdelete-log' => 'Årsak:',
@@ -1292,8 +1299,6 @@ $1",
 'logdelete-failure' => "'''Loggens synlighet kunne ikke bli stilt inn:'''
 $1",
 'revdel-restore' => 'endre synlighet',
-'revdel-restore-deleted' => 'slettede revisjoner',
-'revdel-restore-visible' => 'synlige revisjoner',
 'pagehist' => 'Sidehistorikk',
 'deletedhist' => 'Slettet historikk',
 'revdelete-hide-current' => 'Feil under skjuling av objektet datert $2, $1: dette er den gjeldende revisjonen.
@@ -1370,12 +1375,8 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Søkeresultater',
 'searchresults-title' => 'Søkeresultater for «$1»',
-'searchresulttext' => 'For mer informasjon om søking i {{SITENAME}}, se [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Du søkte etter '''[[:$1]]''' ([[Special:Prefixindex/$1|alle sider som begynner med «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som lenker til «$1»]])",
-'searchsubtitleinvalid' => "Du søkte etter '''$1'''",
 'toomanymatches' => 'For mange mulige svar, prøv med en annen spørring',
 'titlematches' => 'Artikkeltitler med treff på forespørselen',
-'notitlematches' => 'Ingen sidetitler samsvarte med søket',
 'textmatches' => 'Artikkeltekster med treff på forespørselen',
 'notextmatches' => 'Inden sidetekst samsvarte med søket',
 'prevn' => 'forrige {{PLURAL:$1|$1}}',
@@ -1384,10 +1385,8 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'nextn-title' => 'Neste $1 {{PLURAL:$1|resultat|resultater}}',
 'shown-title' => 'Vis $1 {{PLURAL:$1|resultat|resultater}} per side',
 'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Søkeinnstillinger',
 'searchmenu-exists' => "* Siden '''[[$1]]'''",
 'searchmenu-new' => "'''Opprett siden ''[[:$1]]'' på denne wikien.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Vis alle sider som begynner med dette]]',
 'searchprofile-articles' => 'Innholdssider',
 'searchprofile-project' => 'Hjelp- og prosjektsider',
 'searchprofile-images' => 'Multimedia',
@@ -1408,21 +1407,16 @@ Detaljer kan finnes i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-default' => '$1-resultater:',
 'search-interwiki-more' => '(mer)',
 'search-relatedarticle' => 'Relatert',
-'mwsuggest-disable' => 'Slå av AJAX-forslag',
 'searcheverything-enable' => 'Søk i alle navnerom',
 'searchrelated' => 'relatert',
 'searchall' => 'alle',
 'showingresults' => "Nedenfor vises opptil {{PLURAL:$1|'''ett''' resultat|'''$1''' resultater}} fra og med nummer <b>$2</b>.",
 'showingresultsnum' => "Nedenfor vises {{PLURAL:$3|'''ett''' resultat|'''$3''' resultater}} fra og med nummer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
-'nonefound' => "'''Merk''': Som standard søkes det kun i enkelte navnerom.
-For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler, osv), eller bruk det ønskede navnerommet som prefiks.",
 'search-nonefound' => 'Ingen resultater passet til søket.',
-'powersearch' => 'Avansert søk',
 'powersearch-legend' => 'Avansert søk',
 'powersearch-ns' => 'Søk i navnerom:',
 'powersearch-redir' => 'Vis omdirigeringer',
-'powersearch-field' => 'Søk etter',
 'powersearch-togglelabel' => 'Merk:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Ingen',
@@ -1434,7 +1428,7 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
 'preferences' => 'Innstillinger',
 'mypreferences' => 'Innstillinger',
 'prefs-edits' => 'Antall redigeringer:',
-'changepassword' => 'Endre passord',
+'prefsnologintext2' => 'Vennligst $1 å endre dine preferanser.',
 'prefs-skin' => 'Utseende',
 'skin-preview' => 'Forhåndsvisning',
 'datedefault' => 'Ingen foretrukket',
@@ -1457,13 +1451,11 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
 'prefs-email' => 'Alternativer for e-post',
 'prefs-rendering' => 'Utseende',
 'saveprefs' => 'Lagre',
-'resetprefs' => 'Tilbakestill ulagrede endringer',
 'restoreprefs' => 'Tilbakestill alt til standardinnstillinger',
 'prefs-editing' => 'Redigering',
 'rows' => 'Rader:',
 'columns' => 'Kolonner',
 'searchresultshead' => 'Søk',
-'resultsperpage' => 'Resultater per side:',
 'stub-threshold' => 'Grense for <span class="mw-stub-example">stubblenkeformatering</span>:',
 'stub-threshold-disabled' => 'Deaktivert',
 'recentchangesdays' => 'Antall dager som skal vises i siste endringer:',
@@ -1478,7 +1470,6 @@ Enhver som kjenner nøkkelen vil kunne lese din overvåkningsliste, så ikke vis
 'localtime' => 'Lokaltid:',
 'timezoneuseserverdefault' => 'Bruk wikistandard ($1)',
 'timezoneuseoffset' => 'Annet (spesifiser forskjell)',
-'timezoneoffset' => 'Forskjell¹:',
 'servertime' => 'Serverens tid er nå:',
 'guesstimezone' => 'Hent tidssone fra nettleseren',
 'timezoneregion-africa' => 'Afrika',
@@ -1546,6 +1537,8 @@ Informasjonen vil være offentlig.',
 'prefs-displaywatchlist' => 'Visningsalternativer',
 'prefs-tokenwatchlist' => 'Merke',
 'prefs-diffs' => 'Forskjeller',
+'prefs-help-prefershttps' => 'Denne preferansen vil virke etter neste innlogging.',
+'prefs-tabs-navigation-hint' => 'Tips: Du kan bruke venstre- og høyrepiltastene for å navigere mellom fanene i fanelisten',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-postadressen ser gyldig ut',
@@ -1732,15 +1725,17 @@ Informasjonen vil være offentlig.',
 'recentchanges-label-minor' => 'Dette er en mindre endring',
 'recentchanges-label-bot' => 'Denne redigeringen ble gjort av en bot',
 'recentchanges-label-unpatrolled' => 'Denne redigeringen har ikke blitt patruljert ennå',
-'recentchanges-legend-newpage' => '$1 – ny side',
-'rcnote' => "Nedenfor vises {{PLURAL:$1|'''1''' endring|de siste '''$1''' endringene}} fra {{PLURAL:$2|det siste døgnet|de siste '''$2''' døgnene}}, per $5 $4.",
+'recentchanges-label-plusminus' => 'Sidestørrelsen kan endres med dette antallet bytes',
+'recentchanges-legend-heading' => "'''Tegnforklaring:'''",
+'recentchanges-legend-newpage' => '(se også [[Special:NewPages|liste av nye sider]])',
+'recentchanges-legend-plusminus' => '«(±123)»',
 'rcnotefrom' => "Nedenfor er endringene siden '''$2''' (opp til '''$1''' vises).",
 'rclistfrom' => 'Vis nye endringer med start fra $1',
 'rcshowhideminor' => '$1 mindre endringer',
 'rcshowhidebots' => '$1 roboter',
-'rcshowhideliu' => '$1 innloggede brukere',
+'rcshowhideliu' => '$1 registrerte brukere',
 'rcshowhideanons' => '$1 anonyme brukere',
-'rcshowhidepatr' => '$1 godkjente endringer',
+'rcshowhidepatr' => '$1 patruljerte endringer',
 'rcshowhidemine' => '$1 mine endringer',
 'rclinks' => 'Vis siste $1 endringer i de siste $2 dagene<br />$3',
 'diff' => 'diff',
@@ -1853,6 +1848,7 @@ Om du fortsatt ønsker å laste opp filen, gå tilbake og last den opp under et
 Om du fortsatt ønsker å laste opp filen, gå tilbake og last den opp under et nytt navn. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Denne filen er en dublett av følgende {{PLURAL:$1|fil|filer}}:',
 'file-deleted-duplicate' => 'En fil identisk med denne filen ([[:$1]]) har tidligere blitt slettet. Du bør sjekke denne filens slettehistorikk før du prøver å laste den opp på nytt.',
+'file-deleted-duplicate-notitle' => 'En annen fil identisk med denne filen har tidligere blitt slettet og tittelen har blitt fjernet. Du bør sjekke med noen som kan se på fjernede fildata å vurdere saken før filen lastes opp igjen.',
 'uploadwarning' => 'Opplastingsadvarsel',
 'uploadwarning-text' => 'Vennligst endre filbeskrivelsen nedenfor og prøv igjen.',
 'savefile' => 'Lagre fil',
@@ -2128,7 +2124,7 @@ Kanskje du vil redigere beskrivelsen på dens [$2 filbeskrivelsesside].',
 # Random page in category
 'randomincategory' => 'Tilfeldig side innenfor kategorien',
 'randomincategory-invalidcategory' => '«$1» er ikke et gyldig kategorinavn.',
-'randomincategory-nopages' => 'Det finnes ingen sider i [[:Kategori:$1]]-kategorien.',
+'randomincategory-nopages' => 'Det finnes ingen sider i [[:Category:$1|$1]]-kategorien.',
 'randomincategory-selectcategory' => 'Hent en tilfeldig side fra kategori: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Start',
 
@@ -2191,6 +2187,7 @@ Hver rad inneholder lenker til første og andre omdirigering, samt målet for de
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikier}}',
 'nlinks' => '$1 {{PLURAL:$1|lenke|lenker}}',
 'nmembers' => '$1 {{PLURAL:$1|medlem|medlemmer}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|medlem|medlemmer}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisjon|revisjoner}}',
 'nviews' => '$1 {{PLURAL:$1|visning|visninger}}',
 'nimagelinks' => 'Brukt på $1 {{PLURAL:$1|side|sider}}',
@@ -2229,14 +2226,14 @@ Hver rad inneholder lenker til første og andre omdirigering, samt målet for de
 'protectedpages' => 'Låste sider',
 'protectedpages-indef' => 'Kun beskyttelser på ubestemt tid',
 'protectedpages-cascade' => 'Kun dypbeskyttelse',
-'protectedpagestext' => 'Følgende sider er låst for flytting eller redigering',
+'protectedpages-noredirect' => 'Skjul omdirigeringer',
 'protectedpagesempty' => 'Ingen sider er for øyeblikket låst med disse paramterne.',
 'protectedtitles' => 'Beskyttede titler',
-'protectedtitlestext' => 'Følgende titler er beskyttet fra opprettelse',
 'protectedtitlesempty' => 'Ingen titler beskyttes med disse parameterne for øyeblikket.',
 'listusers' => 'Brukerliste',
 'listusers-editsonly' => 'Vis bare brukere med redigeringer',
 'listusers-creationsort' => 'Sorter etter opprettelsesdato',
+'listusers-desc' => 'Sorter i avtakende rekkefølge',
 'usereditcount' => '{{PLURAL:$1|én redigering|$1 redigeringer}}',
 'usercreated' => '{{GENDER:$3|Opprettet}} $2 $1',
 'newpages' => 'Nye sider',
@@ -2283,9 +2280,6 @@ Du kan minske antallet resultater ved å velge loggtype, brukernavn eller den si
 'allpagesto' => 'Vis sider som slutter på:',
 'allarticles' => 'Alle sider',
 'allinnamespace' => 'Alle sider i $1-navnerommet',
-'allnotinnamespace' => 'Alle sider (ikke i $1-navnerommet)',
-'allpagesprev' => 'Forrige',
-'allpagesnext' => 'Neste',
 'allpagessubmit' => 'Gå',
 'allpagesprefix' => 'Vis sider med prefikset:',
 'allpagesbadtitle' => 'Den angitte sidetittelen var ugyldig eller hadde et interwiki-prefiks. Den kan inneholde ett eller flere tegn som ikke kan brukes i titler.',
@@ -2455,8 +2449,7 @@ Kontakt brukeren:
 e-post: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Det vil ikke komme flere varsler om endringer på denne siden med mindre du besøker den.
-Du kan også fjerne varslingsflagg for alle overvåkede sider i overvåkningslisten din.
+Det vil ikke komme flere varsler om endringer på denne siden med mindre du besøker den mens du er innlogget. Du kan også fjerne varslingsflagg for alle overvåkede sider i overvåkningslisten din.
 
              Ditt vennlige varslingssystem for {{SITENAME}}
 
@@ -2507,6 +2500,7 @@ Se $2 for en oversikt over de siste slettingene.',
 'delete-edit-reasonlist' => 'Rediger begrunnelser for sletting',
 'delete-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Muligheten til å slette slike sider er begrenset for å unngå utilsiktet forstyrring av {{SITENAME}}.',
 'delete-warning-toobig' => 'Denne siden har en stor redigeringshistorikk, med over {{PLURAL:$1|$1&nbsp;revisjon|$1&nbsp;revisjoner}}. Sletting av denne siden kan forstyrre databasen til {{SITENAME}}; vær varsom.',
+'deleting-backlinks-warning' => "'''Advarsel:''' Andre sider har lenker til den siden du skal til å slette.",
 
 # Rollback
 'rollback' => 'Fjern redigeringer',
@@ -2521,7 +2515,8 @@ Se $2 for en oversikt over de siste slettingene.',
 Den siste redigeringen ble foretatt av [[User:$3|$3]] ([[User talk:$3|diskusjon]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
 'editcomment' => "Redigeringskommentaren var: «''$1''»",
 'revertpage' => 'Tilbakestilte endring av [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusjon]]) til siste versjon av [[User:$1|$1]]',
-'revertpage-nouser' => 'Tilbakestilte endringer av (fjernet brukernavn) til siste versjon av [[User:$1|$1]]',
+'revertpage-nouser' => 'Tilbakestilt endringer av skjult bruker til siste versjon av
+{{GENDER:$1|[[User:$1|$1]]}}',
 'rollback-success' => 'Tilbakestilte endringer av $1; endret til siste versjon av $2.',
 
 # Edit tokens
@@ -2615,7 +2610,6 @@ Dersom en ny side ved samme navn har blitt oprettet etter slettingen, vil de gje
 'undeletebtn' => 'Gjenopprett',
 'undeletelink' => 'vis/gjenopprett',
 'undeleteviewlink' => 'vis',
-'undeletereset' => 'Nullstill',
 'undeleteinvert' => 'Inverter valg',
 'undeletecomment' => 'Årsak:',
 'undeletedrevisions' => '{{PLURAL:$1|Én revisjon|$1 revisjoner}} gjenopprettet',
@@ -2656,7 +2650,7 @@ $1',
 'contributions' => '{{GENDER:$1|Brukerbidrag}}',
 'contributions-title' => 'Brukerbidrag av $1',
 'mycontris' => 'Bidrag',
-'contribsub2' => 'For $1 ($2)',
+'contribsub2' => 'For {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Ingen endringer er funnet som passer disse kriteriene.',
 'uctop' => '(siste)',
 'month' => 'Fra måned (og tidligere):',
@@ -2704,13 +2698,11 @@ Den siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:',
 'block' => 'Blokker bruker',
 'unblock' => 'Fjern blokkering av bruker',
 'blockip' => 'Blokker bruker',
-'blockip-title' => 'Blokker bruker',
 'blockip-legend' => 'Blokker bruker',
 'blockiptext' => 'Bruk skjemaet under for å blokkere en IP-adresses tilgang til å redigere artikler. Dette må kun gjøres for å forhindre hærverk, og i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjene]]. Fyll ut en spesiell begrunnelse under.',
 'ipadressorusername' => 'IP-adresse eller brukernavn',
 'ipbexpiry' => 'Varighet:',
 'ipbreason' => 'Årsak:',
-'ipbreasonotherlist' => 'Annen grunn',
 'ipbreason-dropdown' => '*Vanlige blokkeringsgrunner
 ** Legger inn feilinformasjon
 ** Fjerner innhold fra sider
@@ -2726,8 +2718,6 @@ Den siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:',
 'ipbsubmit' => 'Blokker denne brukeren',
 'ipbother' => 'Annen tid',
 'ipboptions' => '2 timer:2 hours,1 dag:1 day,3 dager:3 days,1 uke:1 week,2 uker:2 weeks,1 måned:1 month,3 måneder:3 months,6 måneder:6 months,1 år:1 year,uendelig:infinite',
-'ipbotheroption' => 'annet',
-'ipbotherreason' => 'Annen/utdypende grunn:',
 'ipbhidename' => 'Skjul brukernavn fra endringer og lister',
 'ipbwatchuser' => 'Overvåk brukerens brukerside og diskusjonsside',
 'ipb-disableusertalk' => 'Hindre denne brukeren i å redigere sin egen diskusjonsside mens han/hun er blokkert',
@@ -2739,6 +2729,7 @@ Den siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:',
 Se [[Special:BlockList|blokkeringslisten]] for alle blokkeringer.',
 'ipb-blockingself' => 'Du er i ferd med å blokkere deg selv! Er du sikker på at du vil gjøre det?',
 'ipb-confirmhideuser' => 'Du er i ferd med å blokkere en bruker med «skjul bruker» aktivert. Dette vil skjule brukerens navn i alle lister og loggoppføringer. Er du sikker på at du vil gjøre dette?',
+'ipb-confirmaction' => 'Marker feltet "{{int:ipb-confirm}}" nederst om du er sikker på at du virkelig vil gjøre det.',
 'ipb-edit-dropdown' => 'Rediger blokkeringsgrunner',
 'ipb-unblock-addr' => 'Avblokker $1',
 'ipb-unblock' => 'Avblokker et brukernavn eller en IP-adresse',
@@ -2814,7 +2805,6 @@ Skjulingsloggen vises nedenfor.',
 'sorbsreason' => 'Din IP-adresse angis som en åpen proxy i DNSBL-en brukt av {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Din IP-adresse angis som en åpen proxy i DNSBL-en brukt av {{SITENAME}}. Du kan ikke opprette en konto',
 'xffblockreason' => 'En IP-adresse som er tilstede i X-Forwarded-For-headeren, enten din eller en som tilhører en proxyserver du bruker, har blitt blokkert. Den opprinnelige blokkeringsgrunnen var: $1',
-'cant-block-while-blocked' => 'Du kan ikke blokkere andre mens du selv er blokkert.',
 'cant-see-hidden-user' => 'Brukeren du prøver å blokkere har allerede blitt blokkert og skjult. Ettersom du ikke har rett til å skjule brukere (hideuser), kan du ikke se eller endre brukerens blokkering.',
 'ipbblocked' => 'Du kan ikke blokkere eller avblokkere andre brukere, siden du selv er blokkert',
 'ipbnounblockself' => 'Du har ikke tillatelse til å avblokkere deg selv',
@@ -2877,7 +2867,6 @@ vær sikker på at du forstår konsekvensene av dette før du fortsetter.",
 I disse tilfellene er du nødt til å flytte eller flette siden manuelt, om ønskelig.",
 'movearticle' => 'Flytt side:',
 'moveuserpage-warning' => "'''Advarsel:''' Du er i ferd med å flytte en brukerside. Merk at kun siden vil bli flyttet; brukernavnet vil ''ikke'' bli endret.",
-'movenologin' => 'Ikke logget inn',
 'movenologintext' => 'Du må være registrert bruker og være [[Special:UserLogin|logget på]] for å flytte en side.',
 'movenotallowed' => 'Du har ikke tillatelse til å flytte sider.',
 'movenotallowedfile' => 'Du har ikke tillatelse til å flytte filer.',
@@ -2893,9 +2882,6 @@ I disse tilfellene er du nødt til å flytte eller flette siden manuelt, om øns
 'articleexists' => 'En side med det navnet finnes allerede eller det valgte navn er ugyldig.
 Velg et annet navn.',
 'cantmove-titleprotected' => 'Du kan ikke flytte en side til dette navnet, fordi den nye tittelen er beskyttet fra opprettelse.',
-'talkexists' => "'''Siden ble flyttet korrekt, men den tilhørende diskusjonssiden kunne ikke flyttes fordi det allerede finnes en under den nye tittelen.
-Du er nødt til å flette dem manuelt.'''",
-'movedto' => 'flyttet til',
 'movetalk' => 'Flytt tilhørende diskusjonsside.',
 'move-subpages' => 'Flytt alle undersider (opp til $1)',
 'move-talk-subpages' => 'Flytt alle undersider av diskusjonssiden (opp til $1)',
@@ -3178,6 +3164,7 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
 'pageinfo-length' => 'Sidelengde (i bytes)',
 'pageinfo-article-id' => 'Side-ID',
 'pageinfo-language' => 'Språk for sideinnholdet',
+'pageinfo-content-model' => 'Modell for sideinnhold',
 'pageinfo-robot-policy' => 'Bot-indeksering',
 'pageinfo-robot-index' => 'Tillatt',
 'pageinfo-robot-noindex' => 'Ikke tillatt',
@@ -3218,20 +3205,20 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
 'skinname-modern' => 'Moderne',
 
 # Patrolling
-'markaspatrolleddiff' => 'Godkjenn endringen',
-'markaspatrolledtext' => 'Godkjenn denne siden',
-'markedaspatrolled' => 'Merket som godkjent',
-'markedaspatrolledtext' => 'Den valgte revisjonen av [[:$1]] har blitt markert som patruljert.',
+'markaspatrolleddiff' => 'Merk som patruljert',
+'markaspatrolledtext' => 'Merk denne siden som patruljert',
+'markedaspatrolled' => 'Merket som patruljert',
+'markedaspatrolledtext' => 'Den valgte revisjonen av [[:$1]] har blitt merket som patruljert.',
 'rcpatroldisabled' => 'Siste endringer-patruljering er slått av',
 'rcpatroldisabledtext' => 'Siste endringer-patruljeringsfunksjonen er slått av.',
-'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.',
+'markedaspatrollederror' => 'Kunne ikke merke som patruljert',
+'markedaspatrollederrortext' => 'Du må spesifisere en versjon å merke som patruljert.',
+'markedaspatrollederror-noautopatrol' => 'Du har ikke lov å merke dine egne endringer som patruljerte.',
 'markedaspatrollednotify' => 'Denne endringen av $1 har blitt patruljert.',
 'markedaspatrollederrornotify' => 'Patruljering feilet.',
 
 # Patrol log
-'patrol-log-page' => 'Godkjenningslogg',
+'patrol-log-page' => 'Patruljeringslogg',
 'patrol-log-header' => 'Dette er en logg over patruljerte sideversjoner.',
 'log-show-hide-patrol' => '$1 patruljeringslogg',
 
@@ -3263,7 +3250,7 @@ Ved å åpne den kan systemet ditt kompromitteres.",
 'svg-long-desc' => 'SVG-fil, standardstørrelse $1 × $2 piksler, filstørrelse: $3',
 'svg-long-desc-animated' => 'Animert SVG-fil, standardstørrelse $1 × $2 piksler, filstørrelse: $3',
 'svg-long-error' => 'Ugyldig SVG-fil: $1',
-'show-big-image' => 'Full oppløsning',
+'show-big-image' => 'Opprinnelig fil',
 'show-big-image-preview' => 'Størrelse på denne forhåndsvisningen: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Annen oppløsning|Andre oppløsninger}}: $1.',
 'show-big-image-size' => '$1 × $2 piksler',
@@ -3732,15 +3719,10 @@ Rotert 90° mot klokka og vridd vertikalt',
 'exif-urgency-high' => 'Høy ($1)',
 'exif-urgency-other' => 'Brukerdefinert prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Rediger denne filen med et eksternt program',
-'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonene] for mer informasjon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
 'monthsall' => 'alle',
-'limitall' => 'alle',
 
 # Email address confirmation
 'confirmemail' => 'Bekreft e-postadresse',
@@ -3758,7 +3740,6 @@ E-postsenderen ga følgende melding: $1',
 'confirmemail_needlogin' => 'Du må $1 for å bekrefte e-postadressen din.',
 'confirmemail_success' => 'Din e-postadresse er nå bekreftet. Du kan nå logge inn og nyte wikien.',
 'confirmemail_loggedin' => 'E-postadressen din er bekreftet.',
-'confirmemail_error' => 'Noe gikk galt under lagringen av din bekreftelse.',
 'confirmemail_subject' => 'Bekreftelsesmelding fra {{SITENAME}}',
 'confirmemail_body' => 'Noen, antageligvis deg, har registrert kontoen «$2» på {{SITENAME}}, fra IP-adressen $1.
 
@@ -3821,12 +3802,20 @@ Denne bekreftelseskoden utløper $4.',
 'confirm-unwatch-button' => 'OK',
 'confirm-unwatch-top' => 'Fjern denne siden fra overvåkningslisten din?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '«$1»',
+
 # Multipage image navigation
 'imgmultipageprev' => '← forrige side',
 'imgmultipagenext' => 'neste side &rarr;',
 'imgmultigo' => 'Gå!',
 'imgmultigoto' => 'Gå til siden $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standardspråk)',
+'img-lang-info' => 'Vis dette bildet i $1.$2',
+'img-lang-go' => 'Start',
+
 # Table pager
 'ascending_abbrev' => 'stig.',
 'descending_abbrev' => 'synk.',
@@ -3937,6 +3926,16 @@ Du kan også [[Special:EditWatchlist|bruke standardverktøyet]].',
 'version-hook-subscribedby' => 'Brukes av',
 'version-version' => '(versjon $1)',
 'version-license' => 'Lisens',
+'version-ext-license' => 'Lisens',
+'version-ext-colheader-name' => 'Utvidelse',
+'version-ext-colheader-version' => 'Versjon',
+'version-ext-colheader-license' => 'Lisens',
+'version-ext-colheader-description' => 'Beskrivelse',
+'version-ext-colheader-credits' => 'Forfattere',
+'version-license-title' => 'Lisens for $1',
+'version-license-not-found' => 'Ingen detaljert lisensinformasjon ble funnet for denne utvidelsen.',
+'version-credits-title' => 'Anerkjennelser for $1',
+'version-credits-not-found' => 'Ingen detaljert anerkjennelsesinformasjon ble funnet for denne utvidelsen.',
 'version-poweredby-credits' => "Denne wikien er drevet av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'andre',
 'version-poweredby-translators' => 'translatewiki.net-oversettere',
@@ -3954,13 +3953,15 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Omdiriger via filnavn, bruker, eller versjonsid',
+'redirect' => 'Omdiriger via filnavn, bruker eller versjonsid',
 'redirect-legend' => 'Omdiriger til en fil eller side',
-'redirect-summary' => 'Denne spesialsiden omdirigerer til en fil (hvis den gis et filnavn), en side (hvis den gis et versjonsnummer), eller en brukerside (hvis den gis en nummerisk brukerid).',
+'redirect-summary' => 'Denne spesialsiden omdirigerer til en fil (hvis et filnavn angis), en side (hvis et redigeringsnummer angis) eller en brukerside (hvis en numerisk brukeridentifikator angis).
+Eksempler:[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Gå',
 'redirect-lookup' => 'Oppslag:',
 'redirect-value' => 'Verdi:',
 'redirect-user' => 'Bruker-ID',
+'redirect-page' => 'Side-ID',
 'redirect-revision' => 'Sideversjon',
 'redirect-file' => 'Filnavn',
 'redirect-not-exists' => 'Verdi er ikke funnet',
@@ -3978,9 +3979,9 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 
 # Special:SpecialPages
 'specialpages' => 'Spesialsider',
+'specialpages-note-top' => 'Tegnforklaring',
 'specialpages-note' => '* Normale spesialsider.
-* <span class="mw-specialpagerestricted">Spesialsider med begrenset tilgang.</span>
-* <span class="mw-specialpagecached">Spesialsider som oppdateres periodisk (kan være foreldede).</span>',
+* <span class="mw-specialpagerestricted">Spesialsider med begrenset tilgang.</span>',
 'specialpages-group-maintenance' => 'Vedlikeholdsrapporter',
 'specialpages-group-other' => 'Andre spesialsider',
 'specialpages-group-login' => 'Innlogging / opprette bruker',
@@ -4018,13 +4019,15 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 'tags-tag' => 'Taggnavn',
 'tags-display-header' => 'Utseende på endringslister',
 'tags-description-header' => 'Fullstendig betydning',
+'tags-active-header' => 'Aktive?',
 'tags-hitcount-header' => 'Taggede endringer',
+'tags-active-yes' => 'Ja',
+'tags-active-no' => 'Nei',
 'tags-edit' => 'rediger',
 'tags-hitcount' => '{{PLURAL:$1|én endring|$1 endringer}}',
 
 # Special:ComparePages
 'comparepages' => 'Sammenlign sider',
-'compare-selector' => 'Sammenlign siderevisjoner',
 'compare-page1' => 'Side 1',
 'compare-page2' => 'Side 2',
 'compare-rev1' => 'Revisjon 1',
@@ -4039,6 +4042,7 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
 'dberr-problems' => 'Siden har tekniske problemer.',
 'dberr-again' => 'Prøv å oppdatere siden om noen minutter.',
 'dberr-info' => '(Kan ikke kontakte databasetjeneren: $1)',
+'dberr-info-hidden' => '(Får ikke kontakt med databasetjeneren)',
 'dberr-usegoogle' => 'Du kan prøve å søke via Google imens.',
 'dberr-outofdate' => 'Merk at deres indeks over våre sider kan være utdatert.',
 'dberr-cachederror' => 'Følgende er en mellomlagret kopi av den etterspurte siden, og kan være foreldet.',
@@ -4151,6 +4155,7 @@ Om det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. K
 'api-error-overwrite' => 'Det er ikke tillatt å overskrive eksisterende filer.',
 'api-error-stashfailed' => 'Internal error: tjeneren greide ikke å lagre midlertidig fil.',
 'api-error-publishfailed' => 'Intern feil: Tjeneren greide ikke å publisere midlertidig fil.',
+'api-error-stasherror' => 'Det oppstod en feil mens filen ble lastet opp til stash.',
 'api-error-timeout' => 'Serveren svarte ikke innenfor forventet tid.',
 'api-error-unclassified' => 'En ukjent feil har oppstått',
 'api-error-unknown-code' => 'Ukjent feil: "$1"',
@@ -4182,9 +4187,10 @@ Om det ikke er tilfellet, kan du bruke det enkle skjemaet som du finner under. K
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|sekund|sekunder}}',
 'limitreport-ppvisitednodes' => 'Nodebesøkstelling for preprosessor',
 'limitreport-ppgeneratednodes' => 'Preprosessor-generert nodetall',
-'limitreport-postexpandincludesize-value' => '$1/$2 byte',
+'limitreport-postexpandincludesize' => 'Inkludert størrelse etter utvidelse',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 'limitreport-templateargumentsize' => 'Malargument-størrelse',
-'limitreport-templateargumentsize-value' => '$1/$2 byte',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 'limitreport-expansiondepth' => 'Største ekspansjonsdybde',
 'limitreport-expensivefunctioncount' => 'Antall kostbare parserfunksjoner',
 
@@ -4199,10 +4205,14 @@ Faktisk utvider den det meste innkapslet i doble krøllparenteser.',
 'expand_templates_input' => 'Skriv inn tekst:',
 'expand_templates_output' => 'Resultat',
 'expand_templates_xml_output' => 'XML-resultat',
+'expand_templates_html_output' => 'Rå HTML-utskrift',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Fjern kommentarer',
 'expand_templates_remove_nowiki' => 'Ikke vis <nowiki>-merkelapper i resultatet',
 'expand_templates_generate_xml' => 'Vis parsetre som XML',
+'expand_templates_generate_rawhtml' => 'Vis ubehandlet HTML',
 'expand_templates_preview' => 'Forhåndsvisning',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML-en i den opplastede filen kunne ikke tolkes.',
 );
index 0c14985..cc1db15 100644 (file)
@@ -138,7 +138,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Ole Sieden' ),
        'Blankpage'                 => array( 'Leddige Sied' ),
        'Block'                     => array( 'Blocken' ),
-       'Blockme'                   => array( 'Proxy-Sparr' ),
        'Booksources'               => array( 'ISBN-Söök' ),
        'BrokenRedirects'           => array( 'Kaputte Redirects' ),
        'Categories'                => array( 'Kategorien' ),
@@ -147,7 +146,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Bidrääg' ),
        'CreateAccount'             => array( 'Brukerkonto anleggen' ),
        'Deadendpages'              => array( 'Sackstraatsieden' ),
-       'Disambiguations'           => array( 'Mehrdüdige Begrepen' ),
        'DoubleRedirects'           => array( 'Dubbelte Redirects' ),
        'Emailuser'                 => array( 'E-Mail an Bruker' ),
        'Export'                    => array( 'Exporteren' ),
@@ -238,7 +236,6 @@ $messages = array(
 'tog-minordefault' => 'Alle Ännern as lütt markeern',
 'tog-previewontop' => 'Vörschau vör dat Editeerfinster wiesen',
 'tog-previewonfirst' => "Vörschau bi'n eersten Ännern wiesen",
-'tog-nocache' => 'Twischenspieker vun’n Webkieker utstellen',
 'tog-enotifwatchlistpages' => 'Schriev mi en Nettbreef, wenn ene Siet, op de ik oppass, ännert warrt',
 'tog-enotifusertalkpages' => 'Schriev mi en Nettbreef, wenn ik ne’e Narichten heff',
 'tog-enotifminoredits' => 'Schriev mi en Nettbreef, ok wenn dat blots en lütte Ännern weer',
@@ -358,7 +355,6 @@ $messages = array(
 'qbedit' => 'Ännern',
 'qbpageoptions' => 'Disse Sied',
 'qbmyoptions' => 'Instellen',
-'qbspecialpages' => 'Spezialsieten',
 'faq' => 'Faken stellte Fragen',
 'faqpage' => 'Project:Faken stellte Fragen',
 
@@ -558,9 +554,6 @@ Wenn dat nich de Fall is, denn hest du villicht en Fehler in de Software funnen.
 'perfcached' => "Disse Daten kamen ut den Cache un sünd mööglicherwies nich aktuell. Op't Höögst {{PLURAL:$1|en Resultat is|$1 Resultaten sünd}} in'n Cache verföögbor.",
 'perfcachedts' => "Disse Daten sünd ut’n Cache, tolest aktuell maakt worrn sünd se $1. Op't Höögst {{PLURAL:$4|en Resultat is|$4 Resultaten sünd}} in'n Cache verföögbor.",
 'querypage-no-updates' => "'''Dat aktuell Maken vun disse Siet is opstunns utstellt. De Daten warrt för’t Eerste veröllert blieven.'''",
-'wrong_wfQuery_params' => 'Falschen Parameter för wfQuery()<br />
-Funktschoon: $1<br />
-Query: $2',
 'viewsource' => 'Dokmentborn ankieken',
 'viewsource-title' => 'De Born vun $1 wiesen.',
 'actionthrottled' => 'Akschoon in de Tall begrenzt',
@@ -674,7 +667,7 @@ Tööv en Stoot, ehrdat du dat noch wedder versöchst.',
 'user-mail-no-addy' => 'Versöch en E-Mail ahn E-Mail-Adress to sennen.',
 
 # Change password dialog
-'resetpass' => 'Passwoord ännern',
+'changepassword' => 'Passwoort ännern',
 'resetpass_announce' => 'Du hest di mit en Kood anmellt, de di över E-Mail toschickt worrn is. Dat anmellen aftosluten, söök di nu en neet Passwoord ut:',
 'resetpass_header' => 'Passwoord trüchsetten',
 'oldpassword' => 'Oolt Passwoort:',
@@ -967,10 +960,6 @@ As Administrater kannst du [$1 mit dissen Lenk] den Ünnerscheed ankieken.',
 'revisiondelete' => 'Versionen wegsmieten/wedderhalen',
 'revdelete-nooldid-title' => 'kene Versionen dor, de passt',
 'revdelete-nooldid-text' => 'Du hest keen Version för disse Akschoon angeven, de utwählte Version gifft dat nich oder du versöchst, de ne’este Version wegtodoon.',
-'revdelete-nologtype-title' => 'Keen Logbooktyp angeven',
-'revdelete-nologtype-text' => 'Du hest keen Logtyp för disse Akschoon angeven.',
-'revdelete-nologid-title' => 'Ungüllig Logindrag',
-'revdelete-nologid-text' => 'Is keen Logtyp utwählt oder den utwählten Logtyp gifft dat nich.',
 'revdelete-no-file' => 'De angeven Datei gifft dat nich.',
 'revdelete-show-file-confirm' => 'Wullt du worraftig en wegsmeten Version vun de Datei „<nowiki>$1</nowiki>“ vun $2, $3 ankieken?',
 'revdelete-show-file-submit' => 'Jo',
@@ -1000,8 +989,6 @@ As Administrater kannst du [$1 mit dissen Lenk] den Ünnerscheed ankieken.',
 $1",
 'logdelete-success' => "'''Sichtborkeit in Logbook mit Spood ännert.'''",
 'revdel-restore' => 'Sichtborkeit ännern',
-'revdel-restore-deleted' => 'löschte Verschonen',
-'revdel-restore-visible' => 'sichtbore Verschonen',
 'pagehist' => 'Versionshistorie',
 'deletedhist' => 'wegsmetene Versionen',
 'revdelete-edit-reasonlist' => 'Grünn för’t Wegsmieten ännern',
@@ -1052,12 +1039,8 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 # Search results
 'searchresults' => 'Söökresultaten',
 'searchresults-title' => 'Söökresultaten för „$1“',
-'searchresulttext' => 'För mehr Informatschonen över {{SITENAME}}, kiek [[{{MediaWiki:Helppage}}|{{SITENAME}} dörsöken]].',
-'searchsubtitle' => 'Du hest na „[[:$1]]“ söcht ([[Special:Prefixindex/$1|all Sieden, de mit „$1“ anfangt]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all Sieden, de na „$1“ wiest]])',
-'searchsubtitleinvalid' => 'För de Söökanfraag „$1“',
 'toomanymatches' => 'To veel Sieden funnen för de Söök, versöök en annere Affraag.',
 'titlematches' => 'Övereenstimmen mit Överschriften',
-'notitlematches' => 'Kene Övereenstimmen',
 'textmatches' => 'Övereenstimmen mit Texten',
 'notextmatches' => 'Kene Övereenstimmen',
 'prevn' => 'vörige {{PLURAL:$1|$1}}',
@@ -1066,10 +1049,8 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 'nextn-title' => 'Tokamen {{PLURAL:$1|Resultat|$1 Resultaten}}',
 'shown-title' => 'Wies $1 {{PLURAL:$1|Resultat|Resultaten}} per Sied',
 'viewprevnext' => 'Wies ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Söökoptionen',
 'searchmenu-exists' => "* Sied '''[[$1]]'''",
 'searchmenu-new' => "'''Stell de Sied „[[:$1]]“ in dit Wiki nee op!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies Sieden, de mit disse Bookstaven anfangt]]',
 'searchprofile-articles' => 'Inholdsieden',
 'searchprofile-project' => 'Hülp- un Projektsieden',
 'searchprofile-images' => 'Datein',
@@ -1090,21 +1071,16 @@ Seh to, dat de Versionsgeschicht vun’n Artikel vun de Historie her bi de Reeg
 'search-interwiki-default' => '$1 Resultaten:',
 'search-interwiki-more' => '(mehr)',
 'search-relatedarticle' => 'Verwandt',
-'mwsuggest-disable' => 'Vörslääg per Ajax utstellen',
 'searcheverything-enable' => 'In all Naamrüüm söken',
 'searchrelated' => 'verwandt',
 'searchall' => 'all',
 'showingresults' => "Hier {{PLURAL:$1|is een Resultat|sünd '''$1''' Resultaten}}, anfungen mit #'''$2'''.",
 'showingresultsnum' => "Hier {{PLURAL:$3|is een Resultat|sünd '''$3''' Resultaten}}, anfungen mit #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' vun '''$3'''|Resultaten '''$1 - $2''' vun '''$3'''}} för '''$4'''",
-'nonefound' => "'''Henwies''': Na de Standardinstellung warrt blot en poor Naamrüüm dörsöcht.
-Du kannst dat Woord ''all:'' vör dien Söökwoord setten, dat all Naamrüüm (ok Diskuschoonssieden, Vörlagen usw.) dörsöcht warrt. Dat sülve geit mit de Naams vun de enkelten Naamrüüm.",
 'search-nonefound' => 'För de Söökanfraag geev dat keen Resultaten.',
-'powersearch' => 'Betere Söök',
 'powersearch-legend' => 'Betere Söök',
 'powersearch-ns' => 'Söök in Naamrüüm:',
 'powersearch-redir' => 'Redirects wiesen',
-'powersearch-field' => 'Söök na:',
 'powersearch-togglelabel' => 'Utwählen:',
 'powersearch-toggleall' => 'All',
 'powersearch-togglenone' => 'Keen',
@@ -1116,7 +1092,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
 'preferences' => 'Instellen',
 'mypreferences' => 'För mi Instellen',
 'prefs-edits' => 'Wo faken du in dit Wiki Sieden ännert hest:',
-'changepassword' => 'Passwoort ännern',
 'prefs-skin' => 'Utsehn vun de Steed',
 'skin-preview' => 'Vörschau',
 'datedefault' => 'Standard',
@@ -1134,13 +1109,11 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
 'prefs-email' => 'E-Mail-Instellungen',
 'prefs-rendering' => 'Utsehn vun de Sied',
 'saveprefs' => 'Spiekern',
-'resetprefs' => 'Trüchsetten',
 'restoreprefs' => 'All Standardinstellungen wedderhalen',
 'prefs-editing' => 'Grött vun’t Textfeld',
 'rows' => 'Regen',
 'columns' => 'Spalten',
 'searchresultshead' => 'Söökresultaten',
-'resultsperpage' => 'Treffer pro Siet',
 'stub-threshold' => 'Grött ünner de Lenken op <a href="#" class="stub">Stubbens un lütte Sieden</a> farvlich kenntekent warrn schöölt (in Bytes):',
 'stub-threshold-disabled' => 'Utstellt',
 'recentchangesdays' => 'Daag, de de List vun de „Ne’esten Ännern“ wiesen schall:',
@@ -1152,7 +1125,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
 'localtime' => 'Oortstied:',
 'timezoneuseserverdefault' => 'Tied op’n Server bruken',
 'timezoneuseoffset' => 'Anners (Ünnerscheed angeven)',
-'timezoneoffset' => 'Ünnerscheed¹:',
 'servertime' => 'Tied op den Server:',
 'guesstimezone' => 'Ut den Browser övernehmen',
 'timezoneregion-africa' => 'Afrika',
@@ -1371,7 +1343,6 @@ Dat kann nich wedder ungeschehn maakt warrn.',
 'recentchanges-label-minor' => 'Dat is en lütte Ännern',
 'recentchanges-label-bot' => 'Düsse Ännern worr maakt vun en Bot',
 'recentchanges-label-unpatrolled' => 'Düsse Ännern is noch nich kontrolleert worrn',
-'rcnote' => "Hier sünd de letzten '''$1''' Ännern vun {{PLURAL:$2|den letzten Dag|de letzten '''$2''' Daag}} (Stand $5, $4). ('''N''' - Ne’e Sieden; '''L''' - Lütte Ännern)",
 'rcnotefrom' => 'Dit sünd de Ännern siet <b>$2</b> (bet to <b>$1</b> wiest).',
 'rclistfrom' => 'Wies ne’e Ännern siet $1',
 'rcshowhideminor' => '$1 lütte Ännern',
@@ -1687,10 +1658,8 @@ to den vun den tweeten Wiederleiden wiest warrt, un to den de eerste Wiederleide
 'protectedpages' => 'Schuulte Sieden',
 'protectedpages-indef' => 'Blot unbeschränkt schuulte Sieden wiesen',
 'protectedpages-cascade' => 'Blot Sieden mit Kaskadenschutz',
-'protectedpagestext' => 'Disse Sieden sünd vör dat Schuven oder Ännern schuult',
 'protectedpagesempty' => 'Opstunns sünd kene Sieden schuult',
 'protectedtitles' => 'Sparrte Sieden',
-'protectedtitlestext' => 'Disse Sieden sünd för dat nee Opstellen sperrt',
 'protectedtitlesempty' => 'Opstunns sünd mit disse Parameters kene Sieden sperrt.',
 'listusers' => 'Brukerlist',
 'listusers-editsonly' => 'Blot Brukers mit Bidrääg wiesen',
@@ -1738,9 +1707,6 @@ Du kannst de List körter maken, wenn du den Logbook-Typ, den Brukernaam (grote
 'allpagesto' => 'Sieden wiesen bet:',
 'allarticles' => 'Alle Artikels',
 'allinnamespace' => 'Alle Sieden (Naamruum $1)',
-'allnotinnamespace' => 'Alle Sieden (nich in Naamruum $1)',
-'allpagesprev' => 'vörig',
-'allpagesnext' => 'tokamen',
 'allpagessubmit' => 'Los',
 'allpagesprefix' => 'Sieden wiesen, de anfangt mit:',
 'allpagesbadtitle' => 'De ingevene Siedennaam gellt nich: Kann angahn, dor steiht en Afkörten för en annere Spraak oder en anneret Wiki an’n Anfang oder dor sünd Tekens binnen, de in Siedennaams nich bruukt warrn dröfft.',
@@ -2029,7 +1995,6 @@ Den Text vun de wegsmetene Sied köönt blot Administraters sehn.',
 'undeletebtn' => 'Wedderhalen!',
 'undeletelink' => 'ankieken/wedderhalen',
 'undeleteviewlink' => 'bekieken',
-'undeletereset' => 'Afbreken',
 'undeleteinvert' => 'Utwahl ümkehrn',
 'undeletecomment' => 'Grund:',
 'undeletedrevisions' => '{{PLURAL:$1|ene Version|$1 Versionen}} wedderhaalt',
@@ -2110,7 +2075,6 @@ De jüngste Indrag in dat Sperr-Logbook wart ünnen wiest:',
 'block' => 'Bruker blocken',
 'unblock' => 'Bruker freegeven',
 'blockip' => 'IP-Adress blocken',
-'blockip-title' => 'Bruker sperren',
 'blockip-legend' => 'Bruker blocken',
 'blockiptext' => 'Bruuk dat Formular, ene IP-Adress to blocken.
 Dit schall blots maakt warrn, Vandalismus to vermasseln, aver jümmer in Övereenstimmen mit uns [[{{MediaWiki:Policy-url}}|Leidlienen]].
@@ -2118,7 +2082,6 @@ Ok den Grund för dat Blocken indregen.',
 'ipadressorusername' => 'IP-Adress oder Brukernaam:',
 'ipbexpiry' => 'Aflooptiet',
 'ipbreason' => 'Grund:',
-'ipbreasonotherlist' => 'Annern Grund',
 'ipbreason-dropdown' => '* Allgemene Sperrgrünn
 ** Tofögen vun verkehrte Infos
 ** Leddigmaken vun Sieden
@@ -2131,8 +2094,6 @@ Ok den Grund för dat Blocken indregen.',
 'ipbsubmit' => 'Adress blocken',
 'ipbother' => 'Annere Tiet:',
 'ipboptions' => '2 Stünnen:2 hours,1 Dag:1 day,3 Daag:3 days,1 Week:1 week,2 Weken:2 weeks,1 Maand:1 month,3 Maand:3 months,6 Maand:6 months,1 Johr:1 year,ahn Enn:infinite',
-'ipbotheroption' => 'Annere Duer',
-'ipbotherreason' => 'Annern Grund:',
 'ipbhidename' => 'Brukernaam narms mehr wiesen',
 'ipbwatchuser' => 'Op Brukersiet un Brukerdiskuschoon oppassen',
 'ipb-change-block' => 'Mit disse Sperrparameters noch wedder nee sperren',
@@ -2195,7 +2156,6 @@ Kiek [[Special:BlockList|IP-Blocklist]] för en List vun den blockten Brukern.',
 Kontakteer dien Provider oder diene Systemtechnik un informeer se över dat möögliche Sekerheitsproblem.',
 'sorbsreason' => 'Diene IP-Adress steiht in de DNSBL vun {{SITENAME}} as apen PROXY.',
 'sorbs_create_account_reason' => 'Diene IP-Adress steiht in de DNSBL vun {{SITENAME}} as apen PROXY. Du kannst keen Brukerkonto nee opstellen.',
-'cant-block-while-blocked' => 'Du kannst kene annern Brukers sperren, wenn du sülvst sperrt büst.',
 
 # Developer tools
 'lockdb' => 'Datenbank sparren',
@@ -2238,7 +2198,6 @@ Dit kann sik temlich dull utwarken bi veel bruukte Sieden. Stell seker, dat du w
 
 In disse Fäll musst du de Siet, wenn du dat willst, vun Hand schuven.",
 'movearticle' => 'Siet schuven',
-'movenologin' => 'Du büst nich anmellt',
 'movenologintext' => 'Du muttst en registreert Bruker un
 [[Special:UserLogin|anmellt]] ween,
 üm en Siet to schuven.',
@@ -2256,9 +2215,6 @@ In disse Fäll musst du de Siet, wenn du dat willst, vun Hand schuven.",
 'articleexists' => 'Ünner dissen Naam gifft dat al ene Siet.
 Bitte söök en annern Naam ut.',
 'cantmove-titleprotected' => 'Du kannst de Siet nich na dissen ne’en Naam schuven. De Naam is gegen dat nee Opstellen schuult.',
-'talkexists' => 'Dat Schuven vun de Siet sülvst hett Spood, aver dat Schuven vun de
-Diskuschoonssiet nich, vun wegen dat dat dor al ene Siet mit dissen Titel gifft. De Inholt mutt vun Hand anpasst warrn.',
-'movedto' => 'schaven na',
 'movetalk' => 'De Diskuschoonssiet ok schuven, wenn mööglich.',
 'move-subpages' => 'All Ünnersieden (bet to $1) mit schuven',
 'move-talk-subpages' => 'All Ünnersieden vun Diskuschoonssieden (bet to $1) mit schuven',
@@ -2853,15 +2809,10 @@ Wiedere warrt standardmatig nich anwiest:
 'exif-iimcategory-spo' => 'Sport',
 'exif-iimcategory-wea' => 'Wedder',
 
-# External editor support
-'edit-externally' => 'Änner disse Datei mit en extern Programm',
-'edit-externally-help' => '(Lees de [https://www.mediawiki.org/wiki/Manual:External_editors Installatschoonshelp] wenn du dor mehr to weten wullt)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
 'monthsall' => 'alle',
-'limitall' => 'all',
 
 # Email address confirmation
 'confirmemail' => 'Nettbreefadress bestätigen',
@@ -2878,7 +2829,6 @@ Fehler bi’t Versennen: $1',
 'confirmemail_needlogin' => 'Du musst $1, dat diene Nettbreefadress bestätigt warrt.',
 'confirmemail_success' => 'Diene Nettbreefadress is nu bestätigt.',
 'confirmemail_loggedin' => 'Diene Nettbreefadress is nu bestätigt.',
-'confirmemail_error' => 'Dat Spiekern vun diene Bestätigung hett nich klappt.',
 'confirmemail_subject' => '{{SITENAME}} Nettbreefadress-Bestätigung',
 'confirmemail_body' => 'Een, villicht du vun de IP-Adress $1 ut, hett dat Brukerkonto „$2“ mit disse Nettbreefadress op {{SITENAME}} anmellt.
 
@@ -3063,7 +3013,6 @@ Du kannst ok de [[Special:EditWatchlist|normale Sied to’n Ännern]] bruken.',
 
 # Special:ComparePages
 'comparepages' => 'Sieden verglieken',
-'compare-selector' => 'Siedenversionen verglieken',
 'compare-page1' => 'Sied 1',
 'compare-page2' => 'Sied 2',
 'compare-rev1' => 'Version 1',
index 83c2d2e..1d1162c 100644 (file)
@@ -75,13 +75,14 @@ $bookstoreList = array(
 
 #!!# Translation <b>HLEERSTE:</b> is used more than once for <a href="#mw-sp-magic-lcfirst">lcfirst</a> and <a href="#mw-sp-magic-ucfirst">ucfirst</a>.
 $magicWords = array(
-       'redirect'                  => array( '0', '#DEURVERWIEZING', '#DOORVERWIJZING', '#REDIRECT' ),
+       'redirect'                  => array( '0', '#DEURVERWIEZING', '#DUURVERWIEZING', '#DOORVERWIJZING', '#REDIRECT' ),
        'notoc'                     => array( '0', '__GIENONDERWARPEN__', '__GEENINHOUD__', '__NOTOC__' ),
-       'nogallery'                 => array( '0', '__GIENGALLERIEJE__', '__GEEN_GALERIJ__', '__NOGALLERY__' ),
-       'forcetoc'                  => array( '0', '__FORSEERONDERWARPEN__', '__INHOUD_DWINGEN__', '__FORCEERINHOUD__', '__FORCETOC__' ),
+       'nogallery'                 => array( '0', '__GIENGALLERIEJE__', '__GIENGALDERIEJE__', '__GEEN_GALERIJ__', '__NOGALLERY__' ),
+       'forcetoc'                  => array( '0', '__FORSEERONDERWARPEN_', '__INHOUD_DWINGEN__', '__FORCEERINHOUD__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__ONDERWARPEN__', '__INHOUD__', '__TOC__' ),
        'noeditsection'             => array( '0', '__GIENBEWARKSEKSIE__', '__NIETBEWERKBARESECTIE__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'DISSEMAOND', 'HUIDIGEMAAND', 'HUIDIGEMAAND2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth'              => array( '1', 'DISSEMAOND', 'DISSEMAOND2', 'HUIDIGEMAAND', 'HUIDIGEMAAND2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth1'             => array( '1', 'DISSEMAOND1', 'HUIDIGEMAAND1', 'CURRENTMONTH1' ),
        'currentmonthname'          => array( '1', 'DISSEMAONDNAAM', 'HUIDIGEMAANDNAAM', 'CURRENTMONTHNAME' ),
        'currentmonthnamegen'       => array( '1', 'DISSEMAONDGEN', 'HUIDIGEMAANDGEN', 'CURRENTMONTHNAMEGEN' ),
        'currentmonthabbrev'        => array( '1', 'DISSEMAONDAOFK', 'HUIDIGEMAANDAFK', 'CURRENTMONTHABBREV' ),
@@ -102,35 +103,38 @@ $magicWords = array(
        'localyear'                 => array( '1', 'LOKAALJAOR', 'PLAATSELIJKJAAR', 'LOKAALJAAR', 'LOCALYEAR' ),
        'localtime'                 => array( '1', 'LOKALETIED', 'PLAATSELIJKETIJD', 'LOKALETIJD', 'LOCALTIME' ),
        'localhour'                 => array( '1', 'LOKAALURE', 'PLAATSELIJKUUR', 'LOKAALUUR', 'LOCALHOUR' ),
-       'numberofpages'             => array( '1', 'ANTALPAGINAS', 'ANTALPAGINA\'S', 'ANTALPAGINA’S', 'AANTALPAGINAS', 'AANTALPAGINA\'S', 'AANTALPAGINA’S', 'NUMBEROFPAGES' ),
+       'numberofpages'             => array( '1', 'ANTALZIEJEN', 'AANTALPAGINAS', 'AANTALPAGINA\'S', 'AANTALPAGINA’S', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', 'ANTALARTIKELS', 'AANTALARTIKELEN', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', 'ANTALBESTANDEN', 'AANTALBESTANDEN', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'ANTALGEBRUKERS', 'AANTALGEBRUIKERS', 'NUMBEROFUSERS' ),
        'numberofactiveusers'       => array( '1', 'ANTALAKTIEVEGEBRUKERS', 'AANTALACTIEVEGEBRUIKERS', 'ACTIEVEGEBRUIKERS', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', 'ANTALBEWARKINGEN', 'AANTALBEWERKINGEN', 'NUMBEROFEDITS' ),
        'numberofviews'             => array( '1', 'ANTALKERENBEKEKEN', 'AANTALKERENBEKEKEN', 'NUMBEROFVIEWS' ),
-       'pagename'                  => array( '1', 'PAGINANAAM', 'PAGENAME' ),
-       'pagenamee'                 => array( '1', 'PAGINANAAME', 'PAGENAMEE' ),
+       'pagename'                  => array( '1', 'ZIEDNAAM', 'PAGINANAAM', 'PAGENAME' ),
+       'pagenamee'                 => array( '1', 'ZIEDNAAME', 'PAGINANAAME', 'PAGENAMEE' ),
        'namespace'                 => array( '1', 'NAAMRUUMTE', 'NAAMRUIMTE', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'NAAMRUUMTEE', 'NAAMRUIMTEE', 'NAMESPACEE' ),
+       'namespacenumber'           => array( '1', 'NAAMRUUMTENUMMER', 'NAAMRUIMTENUMMER', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'OVERLEGRUUMTE', 'OVERLEGRUIMTE', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'OVERLEGRUUMTEE', 'OVERLEGRUIMTEE', 'TALKSPACEE' ),
        'subjectspace'              => array( '1', 'ONDERWARPRUUMTE', 'ARTIKELRUUMTE', 'ONDERWERPRUIMTE', 'ARTIKELRUIMTE', 'SUBJECTSPACE', 'ARTICLESPACE' ),
        'subjectspacee'             => array( '1', 'ONDERWARPRUUMTEE', 'ARTIKELRUUMTEE', 'ONDERWERPRUIMTEE', 'ARTIKELRUIMTEE', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
-       'fullpagename'              => array( '1', 'HELEPAGINANAAM', 'VOLLEDIGEPAGINANAAM', 'FULLPAGENAME' ),
-       'fullpagenamee'             => array( '1', 'HELEPAGINANAAME', 'VOLLEDIGEPAGINANAAME', 'FULLPAGENAMEE' ),
-       'subpagename'               => array( '1', 'DEELPAGINANAAM', 'SUBPAGENAME' ),
-       'subpagenamee'              => array( '1', 'DEELPAGINANAAME', 'SUBPAGENAMEE' ),
+       'fullpagename'              => array( '1', 'HELEZIEDNAAM', 'VOLLEDIGEPAGINANAAM', 'FULLPAGENAME' ),
+       'fullpagenamee'             => array( '1', 'HELEZIEDNAAME', 'VOLLEDIGEPAGINANAAME', 'FULLPAGENAMEE' ),
+       'subpagename'               => array( '1', 'DEELZIEDNAAM', 'DEELPAGINANAAM', 'SUBPAGENAME' ),
+       'subpagenamee'              => array( '1', 'DEELZIEDNAAME', 'DEELPAGINANAAME', 'SUBPAGENAMEE' ),
+       'rootpagename'              => array( '1', 'ROOTZIEDNAAM', 'ROOTPAGINANAAM', 'ROOTPAGENAME' ),
+       'rootpagenamee'             => array( '1', 'ROOTZIEDNAAME', 'ROOTPAGINANAAME', 'ROOTPAGENAMEE' ),
        'basepagename'              => array( '1', 'BAOSISPAGINANAAM', 'BASISPAGINANAAM', 'BASEPAGENAME' ),
        'basepagenamee'             => array( '1', 'BAOSISPAGINANAAME', 'BASISPAGINANAAME', 'BASEPAGENAMEE' ),
        'talkpagename'              => array( '1', 'OVERLEGPAGINANAAM', 'TALKPAGENAME' ),
        'talkpagenamee'             => array( '1', 'OVERLEGPAGINANAAME', 'TALKPAGENAMEE' ),
-       'subjectpagename'           => array( '1', 'ONDERWARPPAGINANAAM', 'ARTIKELPAGINANAAM', 'ONDERWERPPAGINANAAM', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
-       'subjectpagenamee'          => array( '1', 'ONDERWARPPAGINANAAME', 'ARTIKELPAGINANAAME', 'ONDERWERPPAGINANAAME', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
+       'subjectpagename'           => array( '1', 'ONDERWARPZIEDNAAM', 'ARTIKELZIEDNAAM', 'ONDERWERPPAGINANAAM', 'ARTIKELPAGINANAAM', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       'subjectpagenamee'          => array( '1', 'ONDERWARZIEDNAAME', 'ARTIKELZIEDNAAME', 'ONDERWERPPAGINANAAME', 'ARTIKELPAGINANAAME', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
        'msg'                       => array( '0', 'BERICHT:', 'MSG:' ),
        'subst'                     => array( '0', 'VERVANG:', 'VERV:', 'SUBST:' ),
        'msgnw'                     => array( '0', 'BERICHTNW', 'MSGNW:' ),
-       'img_thumbnail'             => array( '1', 'miniatuur', 'duumnegel', 'doemnaegel', 'thumbnail', 'thumb' ),
+       'img_thumbnail'             => array( '1', 'duum', 'doem', 'miniatuur', 'mini', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'miniatuur=$1', 'duumnegel=$1', 'doemnaegel=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'rechts', 'right' ),
        'img_left'                  => array( '1', 'links', 'left' ),
@@ -138,7 +142,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'esentreerd', 'gecentreerd', 'center', 'centre' ),
        'img_framed'                => array( '1', 'umraand', 'omkaderd', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'kaoderloos', 'kaderloos', 'frameless' ),
-       'img_page'                  => array( '1', 'pagina=$1', 'pagina_$1', 'pagina $1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'zied=$1', 'zied_$1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'rechtop', 'rechtop=$1', 'rechtop$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'raand', 'rand', 'border' ),
        'img_baseline'              => array( '1', 'grondliende', 'grondlijn', 'baseline' ),
@@ -147,7 +151,7 @@ $magicWords = array(
        'img_middle'                => array( '1', 'midden', 'middle' ),
        'img_bottom'                => array( '1', 'benejen', 'beneden', 'bottom' ),
        'img_text_bottom'           => array( '1', 'tekste-benejen', 'tekst-beneden', 'text-bottom' ),
-       'img_link'                  => array( '1', 'verwiezing=$1', 'verwijzing=$1', 'koppeling=$1', 'link=$1' ),
+       'img_link'                  => array( '1', 'verwiezing=$1', 'koppeling=$1', 'verwijzing=$1', 'link=$1' ),
        'sitename'                  => array( '1', 'WEBSTEENAAM', 'SITENAAM', 'SITENAME' ),
        'ns'                        => array( '0', 'NR:', 'NS:' ),
        'localurl'                  => array( '0', 'LOKALEURL', 'LOCALURL:' ),
@@ -157,30 +161,32 @@ $magicWords = array(
        'stylepath'                 => array( '0', 'STIELPAD', 'STIJLPAD', 'STYLEPATH' ),
        'grammar'                   => array( '0', 'GRAMMATIKA:', 'GRAMMATICA:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'GESLACHTE:', 'GESLACHT:', 'GENDER:' ),
-       'notitleconvert'            => array( '0', '__GIENTITELKONVERSIE__', '__GIENTC__', '__GEENTITELCONVERSIE__', '__GEENTC__', '__GEENPAGINANAAMCONVERSIE__', '__NOTITLECONVERT__', '__NOTC__' ),
-       'nocontentconvert'          => array( '0', '__GIENINHOUDKONVERSIE__', '__GIENIC__', '__GEENINHOUDCONVERSIE__', '__GEENIC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'notitleconvert'            => array( '0', '__GIENTITELKONVERSIE__', '__GIENTK__', '__GEENPAGINANAAMCONVERSIE__', '__GEENTITELCONVERSIE__', '__GEENTC__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'          => array( '0', '__GIENINHOUDKONVERSIE__', '__GIENIK__', '__GEENINHOUDCONVERSIE__', '__GEENIC__', '__NOCONTENTCONVERT__', '__NOCC__' ),
        'currentweek'               => array( '1', 'DISSEWEKE', 'HUIDIGEWEEK', 'CURRENTWEEK' ),
        'currentdow'                => array( '1', 'DISSEDVDW', 'HUIDIGEDVDW', 'CURRENTDOW' ),
        'localweek'                 => array( '1', 'LOKALEWEKE', 'PLAATSELIJKEWEEK', 'LOKALEWEEK', 'LOCALWEEK' ),
        'localdow'                  => array( '1', 'LOKALEDVDW', 'PLAATSELIJKEDVDW', 'LOCALDOW' ),
-       'revisionid'                => array( '1', 'REVISIEID', 'REVISIE-ID', 'VERSIEID', 'REVISIONID' ),
-       'revisionday'               => array( '1', 'REVISIEDAG', 'VERSIEDAG', 'REVISIONDAY' ),
-       'revisionday2'              => array( '1', 'REVISIEDAG2', 'VERSIEDAG2', 'REVISIONDAY2' ),
-       'revisionmonth'             => array( '1', 'REVISIEMAOND', 'VERSIEMAAND', 'REVISIONMONTH' ),
-       'revisionyear'              => array( '1', 'REVISIEJAOR', 'VERSIEJAAR', 'REVISIONYEAR' ),
-       'revisiontimestamp'         => array( '1', 'REVISIETIEDSTEMPEL', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
+       'revisionid'                => array( '1', 'VERSIEID', 'REVISIONID' ),
+       'revisionday'               => array( '1', 'VERSIEDAG', 'REVISIONDAY' ),
+       'revisionday2'              => array( '1', 'VERSIEDAG2', 'REVISIONDAY2' ),
+       'revisionmonth'             => array( '1', 'VERSIEMAOND', 'VERSIEMAAND', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'VERSIEMAOND1', 'VERSIEMAAND1', 'REVISIONMONTH1' ),
+       'revisionyear'              => array( '1', 'VERSIEJAOR', 'VERSIEJAAR', 'REVISIONYEAR' ),
+       'revisiontimestamp'         => array( '1', 'VERSIETIEDSTEMPEL', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'VERSIEGEBRUKER', 'VERSIEGEBRUIKER', 'REVISIONUSER' ),
        'plural'                    => array( '0', 'MEERVOUD:', 'PLURAL:' ),
-       'fullurl'                   => array( '0', 'HELEURL', 'VOLLEDIGEURL', 'VOLLEDIGEURL:', 'FULLURL:' ),
-       'fullurle'                  => array( '0', 'HELEURLE', 'VOLLEDIGEURLE', 'VOLLEDIGEURLE:', 'FULLURLE:' ),
+       'fullurl'                   => array( '0', 'HELEURL', 'VOLLEDIGEURL:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', 'HELEURLE', 'VOLLEDIGEURLE:', 'FULLURLE:' ),
        'lcfirst'                   => array( '0', 'KLEERSTE:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', 'GLEERSTE:', 'HLEERSTE:', 'UCFIRST:' ),
        'lc'                        => array( '0', 'KL:', 'LC:' ),
        'uc'                        => array( '0', 'HL:', 'UC:' ),
        'raw'                       => array( '0', 'RAUW:', 'RUW:', 'RAW:' ),
-       'displaytitle'              => array( '1', 'TEUNTITEL', 'TOONTITEL', 'TITELTONEN', 'WEERGEGEVENTITEL', 'DISPLAYTITLE' ),
-       'newsectionlink'            => array( '1', '__NIEJESECTIEVERWIEZING__', '__NIEUWESECTIELINK__', '__NIEUWESECTIEKOPPELING__', '__NEWSECTIONLINK__' ),
-       'nonewsectionlink'          => array( '1', '__GIENNIEJKOPJENVERWIEZING__', '__GEENNIEUWKOPJEVERWIJZING__', '__GEENNIEUWESECTIELINK__', '__GEENNIEUWKOPJEKOPPELING__', '__NONEWSECTIONLINK__' ),
+       'displaytitle'              => array( '1', 'TEUNTITEL', 'WEERGEGEVENTITEL', 'TOONTITEL', 'DISPLAYTITLE' ),
+       'nocommafysuffix'           => array( '0', 'GIENSCHEIDINGSTEKEN', 'GEENSCHEIDINGSTEKEN', 'NOSEP' ),
+       'newsectionlink'            => array( '1', '__NIEJESEKSIEVERWIEZING__', '__NIEUWESECTIELINK__', '__NIEUWESECTIEKOPPELING__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'          => array( '1', '__GIENNIEJKOPJENVERWIEZING__', '__GEENNIEUWKOPJEKOPPELING__', '__GEENNIEUWESECTIELINK__', '__GEENNIEUWKOPJEVERWIJZING__', '__NONEWSECTIONLINK__' ),
        'currentversion'            => array( '1', 'DISSEVERSIE', 'HUIDIGEVERSIE', 'CURRENTVERSION' ),
        'urlencode'                 => array( '0', 'URLKODEREN', 'URLCODEREN', 'CODEERURL', 'URLENCODE:' ),
        'anchorencode'              => array( '0', 'ANKERKODEREN', 'ANKERCODEREN', 'CODEERANKER', 'ANCHORENCODE' ),
@@ -189,7 +195,7 @@ $magicWords = array(
        'directionmark'             => array( '1', 'RICHTINGMARKERING', 'RICHTINGSMARKERING', 'DIRECTIONMARK', 'DIRMARK' ),
        'language'                  => array( '0', '#TAAL:', '#LANGUAGE:' ),
        'contentlanguage'           => array( '1', 'INHOUDSTAAL', 'INHOUDTAAL', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
-       'pagesinnamespace'          => array( '1', 'PAGINASINNAAMRUUMTE', 'PAGINA’SINNAAMRUUMTE', 'PAGINA\'SINNAAMRUUMTE', 'PAGINASINNAAMRUIMTE', 'PAGINA’SINNAAMRUIMTE', 'PAGINA\'SINNAAMRUIMTE', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+       'pagesinnamespace'          => array( '1', 'ZIEJENINNAAMRUUMTE', 'PAGINASINNAAMRUIMTE', 'PAGINA’SINNAAMRUIMTE', 'PAGINA\'SINNAAMRUIMTE', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
        'numberofadmins'            => array( '1', 'ANTALBEHEERDERS', 'AANTALBEHEERDERS', 'AANTALADMINS', 'NUMBEROFADMINS' ),
        'formatnum'                 => array( '0', 'FORMATTEERNUM', 'NUMFORMATTEREN', 'FORMATNUM' ),
        'padleft'                   => array( '0', 'LINKSOPVULLEN', 'PADLEFT' ),
@@ -199,36 +205,43 @@ $magicWords = array(
        'filepath'                  => array( '0', 'BESTAANDSPAD:', 'BESTANDSPAD:', 'FILEPATH:' ),
        'tag'                       => array( '0', 'etiket', 'label', 'tag' ),
        'hiddencat'                 => array( '1', '__VERBÖRGENKAT__', '__VERBORGENCAT__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', 'PAGINASINKATEGORIE', 'PAGINASINKAT', 'PAGINASINCATEGORIE', 'PAGINASINCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesize'                  => array( '1', 'PAGINAGROOTTE', 'PAGESIZE' ),
+       'pagesincategory'           => array( '1', 'ZIEJENINKATEGORIE', 'PAGINASINCATEGORIE', 'PAGINASINCAT', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                  => array( '1', 'ZIEDGROOTTE', 'PAGINAGROOTTE', 'PAGESIZE' ),
        'noindex'                   => array( '1', '__GIENINDEX__', '__GEENINDEX__', '__NOINDEX__' ),
        'numberingroup'             => array( '1', 'ANTALINGROEP', 'AANTALINGROEP', 'NUMBERINGROUP', 'NUMINGROUP' ),
        'staticredirect'            => array( '1', '__STAOTIESEDEURVERWIEZING__', '__STATISCHEDOORVERWIJZING__', '__STATISCHEREDIRECT__', '__STATICREDIRECT__' ),
        'protectionlevel'           => array( '1', 'BEVEILIGINGSNIVO', 'BEVEILIGINGSNIVEAU', 'PROTECTIONLEVEL' ),
        'formatdate'                => array( '0', 'daotumopmaak', 'datumopmaak', 'formatdate', 'dateformat' ),
        'url_query'                 => array( '0', 'ZEUKOPDRACHTE', 'ZOEKOPDRACHT', 'QUERY' ),
+       'defaultsort_noerror'       => array( '0', 'gienfout', 'geenfout', 'noerror' ),
+       'pagesincategory_pages'     => array( '0', 'ziejen', 'paginas', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'onderkategorieen', 'ondercategorieen', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'bestaanden', 'bestanden', 'files' ),
 );
 
 $specialPageAliases = array(
        'Activeusers'               => array( 'Aktieve_gebrukers' ),
        'Allmessages'               => array( 'Alle_systeemteksten' ),
-       'Allpages'                  => array( 'Alle_pagina\'s' ),
-       'Ancientpages'              => array( 'Oudste_pagina\'s' ),
-       'Blankpage'                 => array( 'Lege_pagina' ),
-       'Block'                     => array( 'Blokkeer_IP' ),
-       'Blockme'                   => array( 'Blokkeer_mien' ),
+       'Allpages'                  => array( 'Alle_ziejen' ),
+       'Ancientpages'              => array( 'Oudste_ziejen' ),
+       'Badtitle'                  => array( 'Verkeerde_ziednaam' ),
+       'Blankpage'                 => array( 'Lege_zied' ),
+       'Block'                     => array( 'Blokkeren' ),
        'Booksources'               => array( 'Boekinformasie' ),
        'BrokenRedirects'           => array( 'Ebreuken_deurverwiezingen' ),
        'Categories'                => array( 'Kategorieën' ),
+       'ChangeEmail'               => array( 'Netpost_wiezigen' ),
        'ChangePassword'            => array( 'Wachtwoord_wiezigen' ),
+       'ComparePages'              => array( 'Ziejen_vergelieken' ),
        'Confirmemail'              => array( 'Netpost_bevestigen' ),
        'Contributions'             => array( 'Biedragen' ),
        'CreateAccount'             => array( 'Gebruker_anmaken' ),
        'Deadendpages'              => array( 'Gien_verwiezingen' ),
        'DeletedContributions'      => array( 'Vort-edaone_gebrukersbiedragen' ),
-       'Disambiguations'           => array( 'Deurverwiespagina\'s' ),
        'DoubleRedirects'           => array( 'Dubbele_deurverwiezingen' ),
+       'EditWatchlist'             => array( 'Volglieste_bewarken' ),
        'Emailuser'                 => array( 'Bericht_sturen' ),
+       'ExpandTemplates'           => array( 'Mallen_substitueren' ),
        'Export'                    => array( 'Uutvoeren' ),
        'Fewestrevisions'           => array( 'Minste_bewarkingen' ),
        'FileDuplicateSearch'       => array( 'Dubbele_bestaanden_zeuken' ),
@@ -245,50 +258,53 @@ $specialPageAliases = array(
        'Listusers'                 => array( 'Gebrukerslieste' ),
        'Lockdb'                    => array( 'Databanke_blokkeren' ),
        'Log'                       => array( 'Logboeken' ),
-       'Lonelypages'               => array( 'Weespagina\'s' ),
+       'Lonelypages'               => array( 'Weesziejen' ),
        'Longpages'                 => array( 'Lange_artikels' ),
        'MergeHistory'              => array( 'Geschiedenisse_bie_mekaar_doon' ),
        'MIMEsearch'                => array( 'MIME-zeuken' ),
        'Mostcategories'            => array( 'Meeste_kategorieën' ),
        'Mostimages'                => array( 'Meestgebruukten_bestaanden' ),
-       'Mostlinked'                => array( 'Meest_naor_verwezen_pagina\'s' ),
+       'Mostinterwikis'            => array( 'Meeste_interwikiverwiezingen' ),
+       'Mostlinked'                => array( 'Meest_naor_verwezen_ziejen' ),
        'Mostlinkedcategories'      => array( 'Meestgebruukten_kategorieën' ),
        'Mostlinkedtemplates'       => array( 'Meestgebruken_mallen' ),
        'Mostrevisions'             => array( 'Meeste_bewarkingen' ),
-       'Movepage'                  => array( 'Herneum_pagina' ),
+       'Movepage'                  => array( 'Zied_herneumen' ),
        'Mycontributions'           => array( 'Mien_biedragen' ),
-       'Mypage'                    => array( 'Mien_gebrukerspagina' ),
+       'Mypage'                    => array( 'Mien_gebrukerszied' ),
        'Mytalk'                    => array( 'Mien_overleg' ),
-       'Myuploads'                 => array( 'Mien_in-elaojen_bestanen' ),
+       'Myuploads'                 => array( 'Mien_in-elaojen_bestaanden' ),
        'Newimages'                 => array( 'Nieje_bestaanden' ),
-       'Newpages'                  => array( 'Nieje_pagina\'s' ),
+       'Newpages'                  => array( 'Nieje_ziejen' ),
+       'PagesWithProp'             => array( 'Ziejen_mit_eigenschap' ),
        'PasswordReset'             => array( 'Wachtwoord_opniej_instellen' ),
        'PermanentLink'             => array( 'Vaste_verwiezing' ),
-       'Popularpages'              => array( 'Populaire_artikels' ),
+       'Popularpages'              => array( 'Populaere_artikels' ),
        'Preferences'               => array( 'Veurkeuren' ),
        'Prefixindex'               => array( 'Veurvoegselindex' ),
-       'Protectedpages'            => array( 'Beveiligden_pagina\'s' ),
+       'Protectedpages'            => array( 'Beveiligden_ziejen' ),
        'Protectedtitles'           => array( 'Beveiligden_titels' ),
-       'Randompage'                => array( 'Zo_mer_n_artikel' ),
-       'Randomredirect'            => array( 'Zo_mer_n_deurverwiezing' ),
+       'Randompage'                => array( 'Netzelde_welk_artikel' ),
+       'Randomredirect'            => array( 'Netzelde_welke_deurverwiezing' ),
        'Recentchanges'             => array( 'Leste_wiezigingen' ),
-       'Recentchangeslinked'       => array( 'Volg_verwiezingen' ),
+       'Recentchangeslinked'       => array( 'Leste_wiezigingen_ekoppeld' ),
+       'Redirect'                  => array( 'Deurverwiezen' ),
        'Revisiondelete'            => array( 'Versie_vortdoon' ),
        'Search'                    => array( 'Zeuken' ),
        'Shortpages'                => array( 'Korte_artikels' ),
-       'Specialpages'              => array( 'Spesiale_pagina\'s' ),
+       'Specialpages'              => array( 'Spesiale_ziejen' ),
        'Statistics'                => array( 'Staotistieken' ),
        'Tags'                      => array( 'Etiketten' ),
        'Uncategorizedcategories'   => array( 'Kategorieën_zonder_kategorie' ),
        'Uncategorizedimages'       => array( 'Bestaanden_zonder_kategorie' ),
-       'Uncategorizedpages'        => array( 'Pagina\'s_zonder_kategorie' ),
+       'Uncategorizedpages'        => array( 'Ziejen_zonder_kategorie' ),
        'Uncategorizedtemplates'    => array( 'Mallen_zonder_kategorie' ),
        'Undelete'                  => array( 'Weerummeplaotsen' ),
        'Unlockdb'                  => array( 'Databanke_vriegeven' ),
        'Unusedcategories'          => array( 'Ongebruukten_kategorieën' ),
        'Unusedimages'              => array( 'Ongebruukten_bestaanden' ),
        'Unusedtemplates'           => array( 'Ongebruukten_mallen' ),
-       'Unwatchedpages'            => array( 'Niet-evolgden_pagina\'s' ),
+       'Unwatchedpages'            => array( 'Niet-evolgden_ziejen' ),
        'Upload'                    => array( 'Bestaanden_opsturen' ),
        'UploadStash'               => array( 'Bestaandenstallige' ),
        'Userlogin'                 => array( 'Anmelden' ),
@@ -297,10 +313,10 @@ $specialPageAliases = array(
        'Version'                   => array( 'Versie' ),
        'Wantedcategories'          => array( 'Gewunste_kategorieën' ),
        'Wantedfiles'               => array( 'Gewunste_bestaanden' ),
-       'Wantedpages'               => array( 'Gewunste_pagina\'s' ),
+       'Wantedpages'               => array( 'Gewunste_ziejen' ),
        'Wantedtemplates'           => array( 'Gewunste_mallen' ),
        'Watchlist'                 => array( 'Volglieste' ),
-       'Whatlinkshere'             => array( 'Verwiezingen_naor_disse_pagina' ),
+       'Whatlinkshere'             => array( 'Verwiezingen_naor_disse_zied' ),
        'Withoutinterwiki'          => array( 'Gien_interwiki' ),
 );
 
@@ -329,7 +345,6 @@ $messages = array(
 'tog-minordefault' => "Markeer alle veraanderingen as 'kleine wieziging'",
 'tog-previewontop' => 'De naokiekzied boven t bewarkingsveld zetten',
 'tog-previewonfirst' => 'Naokieken bie eerste wieziging',
-'tog-nocache' => 'De tussenopslag van de webkieker uutzetten',
 'tog-enotifwatchlistpages' => 'Stuur mien n berichjen over zied- of bestaandswiezigingen uut mien volglieste.',
 'tog-enotifusertalkpages' => 'Stuur mien n berichjen as mien overlegzied ewiezigd is.',
 'tog-enotifminoredits' => 'Stuur mien oek n berichjen bie kleine bewarkingen van ziejen en bestaanden',
@@ -465,7 +480,6 @@ $messages = array(
 'qbedit' => 'Bewark',
 'qbpageoptions' => 'Disse zied',
 'qbmyoptions' => 'Veurkeuren',
-'qbspecialpages' => 'Spesiale ziejen',
 'faq' => 'Vragen die vake esteld wörden',
 'faqpage' => 'Project:Vragen die vake esteld wörden',
 
@@ -679,9 +693,6 @@ Der is gien veerdere informasie beschikbaor.',
 'perfcached' => 'Disse gegevens koemen uut t tussengeheugen en bin misschien niet aktueel. Der {{PLURAL:$1|is hooguut een resultaot|bin hooguut $1 resultaoten}} beschikbaor in t tussengeheugen.',
 'perfcachedts' => 'Disse gegevens koemen uut t tussengeheugen die veur t lest bie-ewörken is op $2 um $3. Der {{PLURAL:$4|is hooguut een resultaot|bin hooguut $4 resultaoten}} beschikbaor in t tussengeheugen.',
 'querypage-no-updates' => "'''Disse zied wörden niet meer bie-ewörken.'''",
-'wrong_wfQuery_params' => 'Parameters veur wfQuery() waren verkeerd<br />
-Funksie: $1<br />
-Zeukopdrachte: $2',
 'viewsource' => 'Brontekste bekieken',
 'viewsource-title' => 'Bron bekieken van $1',
 'actionthrottled' => 'Haandeling tegenehöllen',
@@ -860,7 +871,7 @@ A'j t invullen, dan zu'w t gebruken um erkenning te geven veur joew warkzaamheje
 'user-mail-no-body' => 'Der is eprobeerd n netbreef zonder tekste of mit n biester korte tekste te versturen.',
 
 # Change password dialog
-'resetpass' => 'Wachtwoord wiezigen',
+'changepassword' => 'Wachtwoord wiezigen',
 'resetpass_announce' => "Je bin an-emeld mit n veurlopige kode die mit de netpost toe-estuurd wörden. Um t anmelden te voltooien, mu'j n niej wachtwoord invoeren:",
 'resetpass_text' => '<!-- Tekste hier invoegen -->',
 'resetpass_header' => 'Wachtwoord wiezigen',
@@ -1244,10 +1255,6 @@ Je kunnen disse verschillen bekieken. Misschien steet der over in t [{{fullurl:{
 'revisiondelete' => 'Wiezigingen vortdoon/herstellen',
 'revdelete-nooldid-title' => 'Gien doelversie',
 'revdelete-nooldid-text' => 'Je hebben gien versie an-egeven waor disse aksie op uutevoerd mut wörden.',
-'revdelete-nologtype-title' => 'Der is gien logboektype op-egeven',
-'revdelete-nologtype-text' => 'Je hebben gien logboektype op-egeven um disse haandeling op uut te voeren.',
-'revdelete-nologid-title' => 'Ongeldige logboekregel',
-'revdelete-nologid-text' => 'Of je hebben gien doellogboekregel op-egeven of de an-egeven logboekregel besteet niet.',
 'revdelete-no-file' => 't Op-egeven bestaand besteet niet.',
 'revdelete-show-file-confirm' => 'Bi\'j der wisse van da\'j de vortedaone versie van t bestaand "<nowiki>$1</nowiki>" van $2 um $3 bekieken willen?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1280,8 +1287,6 @@ $1",
 'logdelete-failure' => "'''De zichtbaorheid van de logboekregel kon niet in-esteld wörden:'''
 $1",
 'revdel-restore' => 'Zichtbaorheid wiezigen',
-'revdel-restore-deleted' => 'vortedaone versies',
-'revdel-restore-visible' => 'zichtbaore versies',
 'pagehist' => 'Ziedgeschiedenisse',
 'deletedhist' => 'Geschiedenisse die vortehaold is',
 'revdelete-hide-current' => 'Fout bie t verbargen van t objekt van $1 um $2 uur: dit is de versie van noen.
@@ -1358,12 +1363,8 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 # Search results
 'searchresults' => 'Zeukresultaoten',
 'searchresults-title' => 'Zeukresultaoten veur "$1"',
-'searchresulttext' => 'Veur meer informasie over zeuken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Je zöchten naor \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alle ziejen die beginnen mit "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle ziejen die verwiezen naor "$1"]])',
-'searchsubtitleinvalid' => 'Veur zeukopdrachte "$1"',
 'toomanymatches' => 'Der waren te veule resultaoten. Probeer n aandere zeukopdrachte.',
 'titlematches' => 'Overeenkomst mit t onderwarp',
-'notitlematches' => 'Gien overeenstemming',
 'textmatches' => 'Overeenkomst mit teksten',
 'notextmatches' => 'Gien overeenstemming',
 'prevn' => 'veurige {{PLURAL:$1|$1}}',
@@ -1372,10 +1373,8 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'nextn-title' => '{{PLURAL:$1|Volgend resultaot|Volgende $1 resultaoten}}',
 'shown-title' => 'Laot $1 {{PLURAL:$1|resultaot|resultaoten}} per zied zien',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Zeukopsies',
 'searchmenu-exists' => "'''Der is n zied mit de naam \"[[:\$1]]\" op disse wiki.'''",
 'searchmenu-new' => "'''De zied \"[[:\$1]]\" op disse wiki anmaken!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ziednamen mit dit veurvoegsel laoten zien]]',
 'searchprofile-articles' => 'Artikels',
 'searchprofile-project' => 'Hulp- en projektziejen',
 'searchprofile-images' => 'Multimedia',
@@ -1396,20 +1395,16 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'search-interwiki-default' => '$1 resultaoten:',
 'search-interwiki-more' => '(meer)',
 'search-relatedarticle' => 'Verwaant',
-'mwsuggest-disable' => 'Zeuksuggesties uutzetten',
 'searcheverything-enable' => 'In alle naamruumten zeuken',
 'searchrelated' => 'verwaant',
 'searchall' => 'alles',
 'showingresults' => "Hieronder {{PLURAL:$1|steet '''1''' resultaot|staon '''$1''' resultaoten}}  <b>$1</b> vanaof nummer <b>$2</b>.",
 'showingresultsnum' => "Hieronder {{PLURAL:$3|steet '''1''' resultaot|staon '''$3''' resultaoten}} vanaof nummer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaot '''$1''' van '''$3'''|Resultaoten '''$1 - $2''' van '''$3'''}} veur '''$4'''",
-'nonefound' => "<strong>Let wel:</strong> standard wörden niet alle naamruumtes deurzöcht. A'j in zeukopdrachte as veurvoegsel \"''all:'' gebruken wörden alle ziejen deurzöcht (oek overlegziejen, mallen en gao zo mer deur). Je kunnen oek n naamruumte as veurvoegsel gebruken.",
 'search-nonefound' => 'Der bin gien resultaoten veur de zeukopdrachte.',
-'powersearch' => 'Zeuk',
 'powersearch-legend' => 'Uutebreid zeuken',
 'powersearch-ns' => 'Zeuken in naamruumten:',
 'powersearch-redir' => 'Deurverwiezingen bekieken',
-'powersearch-field' => 'Zeuken naor',
 'powersearch-togglelabel' => 'Selekteren:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Gien',
@@ -1421,7 +1416,6 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'preferences' => 'Veurkeuren',
 'mypreferences' => 'Mien veurkeuren',
 'prefs-edits' => 'Antal bewarkingen:',
-'changepassword' => 'Wachtwoord wiezigen',
 'prefs-skin' => '{{SITENAME}}-uterlik',
 'skin-preview' => 'bekieken',
 'datedefault' => 'Gien veurkeur',
@@ -1444,13 +1438,11 @@ Waorschienlik ku'j der meer gegevens over vienen in t [{{fullurl:{{#Special:Log}
 'prefs-email' => 'Instellingen veur netpost',
 'prefs-rendering' => 'Ziedweergave',
 'saveprefs' => 'Veurkeuren opslaon',
-'resetprefs' => 'Standardveurkeuren herstellen',
 'restoreprefs' => 'Alle standardinstellingen weerummezetten (veur alle seksies)',
 'prefs-editing' => 'Bewarkingsveld',
 'rows' => 'Regels',
 'columns' => 'Kolommen',
 'searchresultshead' => 'Zeukresultaoten',
-'resultsperpage' => 'Antal zeukresultaoten per zied',
 'stub-threshold' => 'Verwiezingsformattering van <a href="#" class="stub">beginnetjes</a>:',
 'stub-threshold-disabled' => 'uutezet',
 'recentchangesdays' => 'Antal dagen die "Leste wiezigingen" löt zien:',
@@ -1465,7 +1457,6 @@ Je kunnen de [[Special:ResetTokens|tokens opniej instellen]] a'j dat willen.",
 'localtime' => 'Plaotselike tied:',
 'timezoneuseserverdefault' => 'Wikistandard gebruken ($1)',
 'timezoneuseoffset' => 'Aanders (tiedverschil angeven)',
-'timezoneoffset' => 'Tiedverschil¹:',
 'servertime' => 'Tied op de server:',
 'guesstimezone' => 'Vanuut webkieker overnemen',
 'timezoneregion-africa' => 'Afrika',
@@ -1720,8 +1711,8 @@ Disse informasie is zichtbaor veur aandere gebrukers.',
 'recentchanges-label-minor' => 'Dit is n kleine wieziging',
 'recentchanges-label-bot' => 'Disse bewarking is uutevoerd deur n bot',
 'recentchanges-label-unpatrolled' => 'Disse bewarking is nog niet nao-ekeken',
-'recentchanges-legend-newpage' => '$1 - nieje pagina',
-'rcnote' => "Hieronder {{PLURAL:$1|steet de leste bewarking|staon de leste '''$1''' bewarkingen}} van de aofgeleupen {{PLURAL:$2|dag|'''$2''' dagen}} (per: $5, $4).",
+'recentchanges-label-plusminus' => 'Disse ziedgrootte is mit dit antal bytes ewiezigd',
+'recentchanges-legend-newpage' => '(zie oek de [[Special:NewPages|lieste mit nieje ziejen]])',
 'rcnotefrom' => 'Dit bin de wiezigingen sinds <b>$2</b> (maximum van <b>$1</b> wiezigingen).',
 'rclistfrom' => 'Bekiek wiezigingen vanaof $1',
 'rcshowhideminor' => '$1 kleine wiezigingen',
@@ -2207,10 +2198,8 @@ Meestentieds is leste zied de gewunste doelzied, waor oek de eerste zied heer zo
 'protectedpages' => 'Ziejen die beveiligd bin',
 'protectedpages-indef' => 'Allinnig blokkeringen zonder verloopdaotum',
 'protectedpages-cascade' => 'Allinnig beveiligingen mit de kaskadeopsie',
-'protectedpagestext' => 'De volgende ziejen bin beveiligd en kunnen niet herneumd of bewarkt wörden.',
 'protectedpagesempty' => 'Der bin op t moment gien beveiligden ziejen',
 'protectedtitles' => 'Ziednamen die beveiligd bin',
-'protectedtitlestext' => 'De volgende ziejen bin beveiligd, zodat ze niet opniej an-emaakt kunnen wörden',
 'protectedtitlesempty' => 'Der bin noen gien titels beveiligd die an disse veurweerden voldoon.',
 'listusers' => 'Gebrukerslieste',
 'listusers-editsonly' => 'Allinnig gebrukers mit bewarkingen laoten zien',
@@ -2265,9 +2254,6 @@ Je kunnen oek kiezen veur bepaolde logboeken en filteren op gebruker (heufdlette
 'allpagesto' => 'Laot ziejen zien tot:',
 'allarticles' => 'Alle artikels',
 'allinnamespace' => 'Alle ziejen (naamruumte $1)',
-'allnotinnamespace' => 'Alle ziejen (niet in naamruumte $1)',
-'allpagesprev' => 'veurige',
-'allpagesnext' => 'volgende',
 'allpagessubmit' => 'Zeuk',
 'allpagesprefix' => 'Ziejen bekieken die beginnen mit:',
 'allpagesbadtitle' => 'De op-egeven ziednaam is ongeldig of der steet n interwikiveurvoegsel in. Meugelikerwieze staon der karakters in de naam die niet gebruukt maggen wörden in ziednamen.',
@@ -2602,7 +2588,6 @@ In dat geval mu'j de leste versie as zichtbaor instellen.",
 'undeletebtn' => 'Weerummeplaotsen',
 'undeletelink' => 'bekiek/weerummeplaotsen',
 'undeleteviewlink' => 'bekieken',
-'undeletereset' => 'Herstel',
 'undeleteinvert' => 'Seleksie ummekeren',
 'undeletecomment' => 'Reden:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|versie|versies}} weerummeplaotst',
@@ -2692,7 +2677,6 @@ De leste regel uut t blokkeerlogboek steet as referensie',
 'block' => 'Gebruker blokkeren',
 'unblock' => 'Gebruker deblokkeren',
 'blockip' => 'Gebruker blokkeren',
-'blockip-title' => 'Gebruker blokkeren',
 'blockip-legend' => 'n Gebruker of IP-adres blokkeren',
 'blockiptext' => 'Gebruuk dit formulier um n IP-adres of gebrukersnaam te blokkeren. 
 t Is bedoeld um vandalisme te veurkoemen en mut akkederen mit t [[{{MediaWiki:Policy-url}}|beleid]]. 
@@ -2700,7 +2684,6 @@ Geef hieronder n reden op (bieveurbeeld op welke ziejen de vandalisme epleegd is
 'ipadressorusername' => 'IP-adres of gebrukersnaam',
 'ipbexpiry' => 'Verlöp nao',
 'ipbreason' => 'Reden:',
-'ipbreasonotherlist' => 'aandere reden',
 'ipbreason-dropdown' => '*Algemene redens veur t blokkeren
 ** verkeerde informasie invoeren
 ** ziejen leegmaken
@@ -2716,8 +2699,6 @@ Geef hieronder n reden op (bieveurbeeld op welke ziejen de vandalisme epleegd is
 'ipbsubmit' => 'adres blokkeren',
 'ipbother' => 'Aandere tied',
 'ipboptions' => '2 uren:2 hours,1 dag:1 day,3 dagen:3 days,1 weke:1 week,2 weken:2 weeks,1 maond:1 month,3 maonden:3 months,6 maonden:6 months,1 jaor:1 year,onbeparkt:infinite',
-'ipbotheroption' => 'aanders',
-'ipbotherreason' => 'Aandere/extra reden:',
 'ipbhidename' => 'Verbarg de gebrukersnaam in bewarkingen en liesten',
 'ipbwatchuser' => 'Gebrukerszied en overlegzied op volglieste zetten',
 'ipb-disableusertalk' => 'Veurkoemen dat disse gebruker tiejens de blokkering de eigen overlegzied kan bewarken',
@@ -2807,7 +2788,6 @@ De blokkering is onderdeel van de reeks $2, waorvan de blokkering wel op-eheven
 'sorbs_create_account_reason' => "Joew IP-adres is op-eneumen as open proxyserver in de zwarte lieste van DNS, die'w veur {{SITENAME}} gebruken.
 Je kunnen gien gebrukerszied anmaken.",
 'xffblockreason' => "n IP-adres dat jie gebruken is eblokkeerd. Dit steet in de kop 'X-Forwarded-For'. De oorspronkelike reden veur de blokkerings is: $1",
-'cant-block-while-blocked' => "Je kunnen aandere gebrukers niet blokkeren a'j zelf oek eblokkeerd bin.",
 'cant-see-hidden-user' => "De gebruker die'j proberen te blokkeren is al eblokkeerd en verbörgen.
 Umda'j gien rech hebben um gebrukers te verbargen, ku'j de blokkering van de gebruker niet bekieken of bewarken.",
 'ipbblocked' => "Je kunnen gien aandere gebrukers (de)blokkeren, umda'j zelf eblokkeerd bin",
@@ -2865,7 +2845,6 @@ Zörg derveur da'j de gevolgen overzien veurda'j veerder gaon.",
 * a'j t onderstaonde vinkjen vorthaolen",
 'movearticle' => 'Herneum',
 'moveuserpage-warning' => "'''Waorschuwing:''' Je staon op t punt um n gebrukerszied te herneumen. Allinnig disse zied zal herneumd wörden, '''niet''' de gebruker.",
-'movenologin' => 'Niet an-emeld.',
 'movenologintext' => 'Je mutten [[Special:UserLogin|an-emeld]] ween um de naam van n zied te wiezigen.',
 'movenotallowed' => 'Je hebben gien rechten um ziejen te herneumen.',
 'movenotallowedfile' => 'Je hebben gien rechten um bestaanden te herneumen.',
@@ -2880,8 +2859,6 @@ Zörg derveur da'j de gevolgen overzien veurda'j veerder gaon.",
 'movepage-moved-noredirect' => 'Der is gien deurverwiezing an-emaakt.',
 'articleexists' => 'Onder disse naam besteet al n zied. Kies n aandere naam.',
 'cantmove-titleprotected' => 'Je kunnen gien zied naor disse titel herneumen, umdat de nieje titel beveiligd is tegen t anmaken dervan.',
-'talkexists' => 'De zied zelf is herneumd, mer de overlegzied kon niet verherneumd wörden, umdat de doelnaam al n niet-lege overlegzied had. Kombineer de overlegziejen mit de haand.',
-'movedto' => 'wiezigen naor',
 'movetalk' => 'De overlegzied oek wiezigen, as t meuglik is.',
 'move-subpages' => 'Herneum de ziejen die deronder hangen (tot en mit $1)',
 'move-talk-subpages' => 'Herneum de ziejen die onder de overlegziejen hangen (tot en mit $1)',
@@ -3272,7 +3249,7 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minuut|$1 minuten}}',
 'hours' => '{{PLURAL:$1|$1 ure|$1 uren}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dagen}}',
-'weeks' => '{{PLURAL: $1|één weke|$1 weken}}',
+'weeks' => '{{PLURAL:$1|één weke|$1 weken}}',
 'months' => '{{PLURAL:$1|een maond|$1 maonden}}',
 'years' => '{{PLURAL:$1|één jaor|$1 jaor}}',
 'ago' => '$1 eleen',
@@ -3708,15 +3685,10 @@ Aandere velden wörden verbörgen.
 'exif-urgency-high' => 'Hoog ($1)',
 'exif-urgency-other' => 'Deur gebruker in-estelde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => 'Wiezig dit bestaand mit n extern programma',
-'edit-externally-help' => '(Zie de [https://www.mediawiki.org/wiki/Manual:External_editors installasie-instruksies] veur meer informasie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alles',
 'monthsall' => 'alles',
-'limitall' => 'alles',
 
 # Email address confirmation
 'confirmemail' => 'Bevestig netpostadres',
@@ -3734,7 +3706,6 @@ Fout bie t versturen: $1',
 'confirmemail_needlogin' => 'Je mutten $1 um joew netpostadres te bevestigen.',
 'confirmemail_success' => 'Joew netpostadres is bevestigd. Je kunnen noen [[Special:UserLogin|anmelden]] en {{SITENAME}} gebruken.',
 'confirmemail_loggedin' => 'Joew netpostadres is noen bevestig.',
-'confirmemail_error' => 'Der is iets fout egaon bie t opslaon van joew bevestiging.',
 'confirmemail_subject' => 'Bevestiging netpostadres veur {{SITENAME}}',
 'confirmemail_body' => 'Ene mit IP-adres $1, warschienlik jie zelf, hef zien eigen mit dit netpostadres eregistreerd as de gebruker "$2" op {{SITENAME}}.
 
@@ -3983,7 +3954,6 @@ Samen mit dit programma heur je n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de
 
 # Special:ComparePages
 'comparepages' => 'Ziejen vergelieken',
-'compare-selector' => 'Ziedversies vergelieken',
 'compare-page1' => 'Zied 1',
 'compare-page2' => 'Zied 2',
 'compare-rev1' => 'Versie 1',
index a998926..3d7a017 100644 (file)
@@ -13,6 +13,7 @@
  * @author Ganesh Paudel
  * @author Indiver
  * @author Kaganer
+ * @author Krish Dulal
  * @author Lkhatiwada
  * @author RajeshPandey
  * @author Reedy
@@ -58,7 +59,7 @@ $messages = array(
 'tog-justify' => 'अनुच्छेद जस्टिफाइ(justify) गर्ने',
 'tog-hideminor' => 'भर्खरका मामूली सम्पादनहरुलाई लुकाउने',
 'tog-hidepatrolled' => 'गस्ती(patrolled)सम्पादनहरु हालका परिवर्तनहरुमा लुकाउने',
-'tog-newpageshidepatrolled' => 'गस्ती(patrolled) पृष्ठहरु नयाँ पृष्ठ सूचीबाट लुकाउने',
+'tog-newpageshidepatrolled' => 'गस्ती गरिएका पृष्ठहरू नयाँ पृष्ठ सूचीबाट लुकाउने',
 'tog-extendwatchlist' => 'निगरानी सूचीलाई सबै परिवर्तनहरू देखाउने गरी बढाउने , हालैको  बाहेक',
 'tog-usenewrc' => 'पृष्ठका भर्खरका परिवर्तन र अवलोकन सूचीको आधारमा सामूहिक परिवर्तनहरु ( जाभास्क्रिप्ट चाहिन्छ)',
 'tog-numberheadings' => 'शीर्षकहरुलाई स्वत:अङ्कित गर्नुहोस्',
@@ -70,15 +71,14 @@ $messages = array(
 'tog-rememberpassword' => 'यस ब्राउजरमा मेरो प्रवेशलाई सम्झनुहोस् (अधिकतम $1 {{PLURAL:$1|दिन|दिनहरु}} सम्म)',
 'tog-watchcreations' => 'मेरो निगरानी सूचीमा मैले सृजना गरेको पृष्ठ र अपलोड जोड्ने',
 'tog-watchdefault' => 'मैले सम्पादन गरेको पृष्ठ र फाइल निगरानी सूचीमा थप्ने',
-'tog-watchmoves' => 'मà¥\88लà¥\87 à¤¸à¤¾à¤°à¥\87à¤\95à¥\8b à¤ªà¥\83षà¥\8dठहरà¥\81 à¤° à¤«à¤¾à¤\87लहरà¥\81लाई निगरानी सूचीमा थप्ने',
-'tog-watchdeletion' => 'मà¥\88लà¥\87 à¤¹à¤\9fाà¤\8fà¤\95à¥\8b à¤ªà¥\83षà¥\8dठहरà¥\81 à¤° à¤«à¤¾à¤\87लहरà¥\81लाई निगरानी सूचीमा थप्ने',
+'tog-watchmoves' => 'मà¥\88लà¥\87 à¤¸à¤¾à¤°à¥\87à¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82 à¤° à¤«à¤¾à¤\87लहरà¥\82लाई निगरानी सूचीमा थप्ने',
+'tog-watchdeletion' => 'मà¥\88लà¥\87 à¤¹à¤\9fाà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82 à¤° à¤«à¤¾à¤\87लहरà¥\82लाई निगरानी सूचीमा थप्ने',
 'tog-minordefault' => 'सबै सम्पादनहरुलाई पूर्वनिर्धारित रुपमा सामान्य चिनो लगाउने',
 'tog-previewontop' => 'सम्पादन सन्दुक अगि पूर्वरुप देखाउने',
 'tog-previewonfirst' => 'पहिलो सम्पादनमा पूर्वरुप देखाउने',
-'tog-nocache' => 'ब्राउजर पृष्ठ क्यासिङ्ग निस्क्रिय पार्ने',
 'tog-enotifwatchlistpages' => 'मेरो निगरानी सूचीमा रहेका पृष्ठ अथवा फाइलहरु परिवर्तन गरिए मलाई ई-मेल गरियोस्',
 'tog-enotifusertalkpages' => 'मेरो प्रयोगकर्ता वार्ता पृष्ठ परिवर्तन गरिए मलाई ई-मेल गर्ने',
-'tog-enotifminoredits' => 'पà¥\83षà¥\8dठहरà¥\81 à¤° à¤«à¤¾à¤\87लहरà¥\81à¤\95à¥\8b सामान्य सम्पादन भएमा पनि मलाई ई-मेल गरियोस्',
+'tog-enotifminoredits' => 'पà¥\83षà¥\8dठहरà¥\82 à¤° à¤«à¤¾à¤\87लहरà¥\82मा सामान्य सम्पादन भएमा पनि मलाई ई-मेल गरियोस्',
 'tog-enotifrevealaddr' => 'जानकारी इ-मेलहरुमा मेरो इ-मेल खुलाउने',
 'tog-shownumberswatching' => 'निगरानी गरिरहेका प्रयोगकर्ताहरुको संख्या देखाउने',
 'tog-oldsig' => 'वर्तमान हस्ताक्षर:',
@@ -175,17 +175,17 @@ $messages = array(
 'december-date' => 'डिसेम्बर $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|शà¥\8dरà¥\87णà¥\80|शà¥\8dरà¥\87णà¥\80हरà¥\81}}',
+'pagecategories' => '{{PLURAL:$1|शà¥\8dरà¥\87णà¥\80|शà¥\8dरà¥\87णà¥\80हरà¥\82}}',
 'category_header' => '"$1" श्रेणीमा भएका लेखहरू',
 'subcategories' => 'उपश्रेणीहरु',
 'category-media-header' => '"$1" श्रेणीमा रहेका मिडियाहरू',
 'category-empty' => "''यो श्रेणीमा हाल कुनै पृष्ठ या मिडियाहरु रहेका छैनन् ।''",
-'hidden-categories' => '{{PLURAL:$1|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b à¤¶à¥\8dरà¥\87णà¥\80|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\81}}',
-'hidden-category-category' => 'लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\81',
-'category-subcat-count' => '{{PLURAL:$2|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा à¤¨à¤¿à¤®à¥\8dन à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\81 à¤®à¤¾à¤¤à¥\8dर à¤\9bनà¥\8d।|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80à¤\95à¥\8b à¤¨à¤¿à¤®à¥\8dन {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\81}},  $2 à¤\95à¥\81ल à¤®à¤§à¥\8dयà¥\87 à¤¶à¥\8dरà¥\87णà¥\80हरà¥\81 छन् ।}}',
+'hidden-categories' => '{{PLURAL:$1|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b à¤¶à¥\8dरà¥\87णà¥\80|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\82}}',
+'hidden-category-category' => 'लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\82',
+'category-subcat-count' => '{{PLURAL:$2|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा à¤¨à¤¿à¤®à¥\8dन à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\82 à¤®à¤¾à¤¤à¥\8dर à¤\9bनà¥\8d।|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80à¤\95à¥\8b à¤¨à¤¿à¤®à¥\8dन {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\82}},  $2 à¤\95à¥\81ल à¤®à¤§à¥\8dयà¥\87 à¤¶à¥\8dरà¥\87णà¥\80हरà¥\82 छन् ।}}',
 'category-subcat-count-limited' => 'यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरु}} छ।',
-'category-article-count' => '{{PLURAL:$2|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 à¤®à¤¾à¤¤à¥\8dर à¤ªà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|à¤\95à¥\81ल $2 à¤®à¤§à¥\8dयà¥\87 à¤¯à¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\81}} रहेका छन् । }}',
-'category-article-count-limited' => 'निमà¥\8dन {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\81}} यस श्रेणीमा रहेको ।',
+'category-article-count' => '{{PLURAL:$2|यà¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 à¤®à¤¾à¤¤à¥\8dर à¤ªà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|à¤\95à¥\81ल $2 à¤®à¤§à¥\8dयà¥\87 à¤¯à¥\8b à¤¶à¥\8dरà¥\87णà¥\80मा {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\82}} रहेका छन् । }}',
+'category-article-count-limited' => 'निमà¥\8dन {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 à¤ªà¥\83षà¥\8dठहरà¥\82}} यस श्रेणीमा रहेको ।',
 'category-file-count' => '{{PLURAL:$2|यो श्रेणीमा निम्न फाइल मात्र छ ।|निम्न श्रेणीमा {{PLURAL:$1|फाइल|$1 फाइलहरु}} , कुल  $2 मध्ये रहेको ।}}',
 'category-file-count-limited' => 'निम्न  {{PLURAL:$1|फाइल|$1 फाइलहरु}} यस श्रेणीमा रहेको ।',
 'listingcontinuesabbrev' => 'निरन्तरता...',
@@ -211,7 +211,6 @@ $messages = array(
 'qbedit' => 'सम्पादन गर्ने',
 'qbpageoptions' => 'यो पेज',
 'qbmyoptions' => 'मेरो पेज',
-'qbspecialpages' => 'विशेष पृष्ठहरु',
 'faq' => 'धैरै सोधिएका प्रश्नहरु',
 'faqpage' => 'Project:FAQ',
 
@@ -303,8 +302,8 @@ $1',
 'aboutpage' => 'Project:बारेमा',
 'copyright' => 'सामाग्री $1 अनुसार उपलब्ध छ, खुलाइएको अवस्था बाहेकको हकमा ।',
 'copyrightpage' => '{{ns:project}}:प्रतिलिपी अधिकारहरु',
-'currentevents' => 'हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\81',
-'currentevents-url' => 'Project:हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\81',
+'currentevents' => 'हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\82',
+'currentevents-url' => 'Project:हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\82',
 'disclaimers' => 'अस्विकारोक्तिहरु',
 'disclaimerpage' => 'Project:सामान्य अस्वीकारोक्ति',
 'edithelp' => 'सम्पादन सहायता',
@@ -333,7 +332,7 @@ $1',
 'youhavenewmessages' => 'तपाईंको लागि ($2) मा  $1 छ ।',
 'youhavenewmessagesfromusers' => 'तपाईंको लागि  {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरु}} ($2) बाट $1',
 'youhavenewmessagesmanyusers' => 'तपाईँलाई धेरै प्रयोगकर्ताहरू($2) बाट $1 छ ।',
-'newmessageslinkplural' => '{{PLURAL:$1|नयाà¤\81 à¤¸à¤¨à¥\8dदà¥\87श|नयाँ सन्देशहरू}}',
+'newmessageslinkplural' => '{{PLURAL:$1|à¤\8fà¤\89à¤\9fा à¤¨à¤¯à¤¾à¤\81 à¤¸à¤¨à¥\8dदà¥\87श|999=नयाँ सन्देशहरू}}',
 'newmessagesdifflinkplural' => 'अन्तिम {{PLURAL:$1|सम्पादन|सम्पादनहरू}}',
 'youhavenewmessagesmulti' => 'तपाईंको लागि $1 मा  नयाँ सन्देशहरू छन्',
 'editsection' => 'सम्पादन',
@@ -432,9 +431,6 @@ $1',
 'perfcachedts' => 'निम्न आँकडा क्याच हो र $1 पहिला अद्यतन गरिएको थियो।  यस क्याचमा उपलब्ध {{PLURAL:$4|एउटा कारण हो|$4 कारणहरु हुन्}}।',
 'querypage-no-updates' => 'यो पृष्ठको अद्यतन कार्य निस्क्रिय गरिएको छ।
 यहाँको डेटा हालमा ताजा पारिने  छैन।',
-'wrong_wfQuery_params' => ' wfQuery()को लागि गलत प्यारामेटर<br />
-कार्य: $1<br />
-खोज: $2',
 'viewsource' => 'स्रोत हेर्नुहोस',
 'viewsource-title' => ' $1 को स्रोत हेर्नुहोस',
 'actionthrottled' => 'कार्य रोकियो',
@@ -453,6 +449,8 @@ $2',
 'namespaceprotected' => " '''$1'''  नेमस्पेसमा रहेका पृष्ठहरु सम्पादन गर्ने अनुमति यहाँलाई छैन ।",
 'customcssprotected' => 'तपाईलाई यस  पृष्ठ सम्पादन गर्ने अनुमति छैन, किनकी यसमा कुनै अर्को प्रयोगकर्ताको व्यक्तिगत अभिरुचीहरु संग्रहित छन् ।',
 'customjsprotected' => 'तपाईलाई यस जाभास्कृप्ट पृष्ठ सम्पादन गर्ने अनुमति छैन, किनकी यसमा कुनै अर्को प्रयोगकर्ताको व्यक्तिगत अभिरुचीहरु संग्रहित छन् ।',
+'mycustomcssprotected' => 'यस CSSपृष्ठ सम्पादन गर्नको लागि लागि तपाईँलाई अनुमति छैन ।',
+'mycustomjsprotected' => 'यस JavaScript पृष्ठ सम्पादन गर्नको लागि लागि तपाईँलाई अनुमति छैन ।',
 'ns-specialprotected' => 'विशेष पृष्ठ सम्पादन गर्न सकिदैन ।',
 'titleprotected' => ' [[User:$1|$1]]द्वारा यो शीर्षक निर्माणहुनबाट जोगाइएको छ।
 कारण   "\'\'$2\'\'" हो ।',
@@ -494,7 +492,7 @@ $2',
 'userlogin' => 'प्रवेश गर्ने / नयाँ खाता बनाउने',
 'userloginnocreate' => 'लग इन',
 'logout' => 'निर्गमन',
-'userlogout' => 'निरà¥\8dà¤\97मन (लà¤\97 à¤\86à¤\89à¤\89)',
+'userlogout' => 'निरà¥\8dà¤\97मन (लà¤\97 à¤\86à¤\89à¤\9f)',
 'notloggedin' => 'प्रवेश (लग ईन) नगरिएको',
 'userlogin-noaccount' => 'के खाता छैन ?',
 'userlogin-joinproject' => '{{SITENAME}} मा खाता खोल्नुहोस् ।',
@@ -504,7 +502,7 @@ $2',
 'gotaccount' => "के तपाईँसँग पहिले देखि नै खाता छ ? '''$1''' ।",
 'gotaccountlink' => 'लग इन',
 'userlogin-resetlink' => 'प्रवेश सम्बन्धी विवरणहरु बिर्सनु भयो?',
-'userlogin-resetpassword-link' => 'पासवरà¥\8dड à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d',
+'userlogin-resetpassword-link' => 'पासवरà¥\8dड à¤­à¥\81लà¥\8dनà¥\81भयà¥\8b?',
 'userlogin-createanother' => 'अर्को खाता खोल्नुहोस्',
 'createacct-join' => 'तपाईँका जानकारीहरू तल थप्नुहोस् ।',
 'createacct-another-join' => 'नयाँ खाताको जानकारी तल थप्नुहोस ।',
@@ -523,10 +521,13 @@ $2',
 'createacct-another-submit' => 'अर्को खाता सिर्जना गर्नुहोस्',
 'createacct-benefit-heading' => '{{SITENAME}} तपाईँ जस्तै मानिसहरूद्वारा सिर्जना गरिएको हो ।',
 'createacct-benefit-body1' => '{{PLURAL:$1|सम्पादन|सम्पादनहरू}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|पृष्ठ|पृष्ठहरू}}',
+'createacct-benefit-body3' => 'हालैका {{PLURAL:$1|योगदान कर्ता|योगदान कर्ताहरू}}',
 'badretype' => 'तपाईंले दिनुभएको पासवर्ड मिल्दैन।',
 'userexists' => 'तपाईले प्रविष्ट गर्नुभएको प्रयोगकर्ताको नाम पहिले देखिनै प्रयोगमा छ ।
 कृपया फरक नाम छान्नुहोस् ।',
 'loginerror' => 'प्रवेश त्रुटि',
+'createacct-error' => 'खाता बनाउँदा त्रुटि',
 'createaccounterror' => 'खाता बनाउन सकिएन: $1',
 'nocookiesnew' => 'तपाईँको खाता बनाइयो, तर तपाईँ प्रवेश गर्नुभएको छैन ।
 {{SITENAME}} ले प्रयोगकर्ता प्रवेश गराउन कुकीहरू प्रयोग गर्छ ।
@@ -593,7 +594,7 @@ $2',
 'user-mail-no-addy' => 'इमेल ठेगाना बिना नै इमेल पठाउन खोजिएको थियो।',
 
 # Change password dialog
-'resetpass' => 'प्रवेशशव्द परिवर्तन गर्नुहोस्',
+'changepassword' => 'पासवर्ड परिवर्तन गर्नुहोस्',
 'resetpass_announce' => 'तपाईंले अस्थायी ई-मेल कोडको आधारमा प्रवेश गर्नु भएकोछ।
 प्रवेशकार्य पूरा गर्न नयाँ प्रवेश शव्द यहाँ दिनुहोस्:',
 'resetpass_text' => '<!-- Add text here -->',
@@ -649,6 +650,12 @@ $2
 'changeemail-submit' => 'इमेल परिवर्तन गर्ने',
 'changeemail-cancel' => 'रद्द गर्ने',
 
+# Special:ResetTokens
+'resettokens' => 'टोकन पूर्वरुपमा फर्काउने',
+'resettokens-no-tokens' => 'पूर्वरुपमा फर्काउन कुनै पनि टोकन छैन ।',
+'resettokens-legend' => 'टोकनहरू पूर्वरुपमा फर्काउने',
+'resettokens-tokens' => 'टोकनहरू:',
+
 # Edit page toolbar
 'bold_sample' => 'गाढा अक्षर',
 'bold_tip' => 'गाढा अक्षर',
@@ -815,12 +822,12 @@ $2
 'semiprotectedpagewarning' => "'''सूचना:''' यो पृष्ठलाई सुरक्षित गरिएको हुँदा दर्ता भएका प्रयोगकर्ताहरुले मात्र यसलाई सम्पादन गर्न सक्छन्। संदर्भको लागि नविनतम लग प्रविष्टि  तल दिइएको छ:",
 'cascadeprotectedwarning' => "'''चेतावनी:''' यस पृष्ठलाई सुरक्षित गरिएको छ यसकारण संशोधन प्रबन्धनको विशेषाधिकार प्राप्त प्रयोगकर्ताले मात्र सम्पादन गर्न सक्नेछन् किन भनें यो {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}को सुरक्षित निम्न सुचिमा सुरक्षित छ :",
 'titleprotectedwarning' => "'''चेतावनी:''' यो पृष्ठलाई सुरक्षित गरिएकोछ र यसलाई सृजना गर्न  [[Special:ListGroupRights|विशेषाधिकार]] चाहिन्छ । संदर्भको लागि नवीनतम लग प्रविष्टि  तल दिइएको छ:",
-'templatesused' => 'यस à¤ªà¥\83षà¥\8dठमा à¤ªà¥\8dरयà¥\8bà¤\97 à¤­à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(नमà¥\82ना)हरà¥\81}} :',
-'templatesusedpreview' => 'यस à¤ªà¥\83षà¥\8dठमा à¤ªà¥\8dरयà¥\8bà¤\97 à¤­à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(नमà¥\82ना)हरà¥\81}} :',
+'templatesused' => 'यस à¤ªà¥\83षà¥\8dठमा à¤ªà¥\8dरयà¥\8bà¤\97 à¤­à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(ढाà¤\81à¤\9aा)हरà¥\82}} :',
+'templatesusedpreview' => 'यस à¤ªà¥\83षà¥\8dठमा à¤ªà¥\8dरयà¥\8bà¤\97 à¤­à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(ढाà¤\81à¤\9aा)हरà¥\82}} :',
 'templatesusedsection' => '{{PLURAL:$1|ढाँचा प्रयोग गरिएकोछ|ढाँचाहरु प्रयोग गरिएकाछन्}} यस खण्डमा:',
 'template-protected' => '(सुरक्षित)',
 'template-semiprotected' => '(अर्ध-सुरक्षित)',
-'hiddencategories' => 'यà¥\8b à¤ªà¥\83षà¥\8dठ à¤¨à¤¿à¤®à¥\8dन {{PLURAL:$1|1 à¤²à¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b à¤¶à¥\8dरà¥\87णà¥\80|$1 à¤²à¥\81à¤\95ाà¤\87à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\81}}को सदस्य हो :',
+'hiddencategories' => 'यà¥\8b à¤ªà¥\83षà¥\8dठ à¤¨à¤¿à¤®à¥\8dन {{PLURAL:$1|1 à¤²à¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b à¤¶à¥\8dरà¥\87णà¥\80|$1 à¤²à¥\81à¤\95ाà¤\87à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\82}}को सदस्य हो :',
 'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
 'edittools-upload' => '-',
 'nocreatetext' => '{{SITENAME}} ले नयाँ पृष्ठ सृजना गर्न सक्ने क्षमतामा रोक लगाएको छ।
@@ -844,8 +851,11 @@ $2
 यो मेटिएको जस्तो देखिन्छ ।',
 'edit-conflict' => 'द्वन्द्व सम्पादन गर्ने ।',
 'edit-no-change' => 'तपाईँको सम्पादन वेवास्ता गरियो, किनकि कुनै पनि पाठ परिवर्तन गरिएन ।',
+'postedit-confirmation' => 'तपाईंको सम्पादन संग्रह गरिएको थियो ।',
 'edit-already-exists' => 'नयाँ पृष्ठ बनाउन सकिएन ।
 यो पहिले देखि नै रहेको छ।',
+'defaultmessagetext' => 'डिफल्ट सन्देश पाठ',
+'invalid-content-data' => 'अमान्य सामग्री डेटा',
 
 # Content models
 'content-model-wikitext' => 'विकिपाठ',
@@ -855,7 +865,7 @@ $2
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''चेतावनी:''' यस पृष्टका अति धेरै संख्याका महँगा पार्सर फंक्सन कल्स (expensive parser function calls)  छन्।
 यसमा $2 भन्दा कम {{PLURAL:$2|कल|कल्स}} हुनुपर्छ,  यहाँ {{PLURAL:$1|अहिले $1 कल छ|अहिले $1 कल्स छ्न्}}.",
-'expensive-parserfunction-category' => "à¤\85ति à¤§à¥\87रà¥\87 à¤®à¥\87हनत à¤ªà¤°à¥\8dनà¥\87 '''पारà¥\8dसर à¤«à¤\99à¥\8dसन à¤\95ल'''हरà¥\81 à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81",
+'expensive-parserfunction-category' => "à¤\85ति à¤§à¥\87रà¥\88 à¤®à¥\87हनत à¤ªà¤°à¥\8dनà¥\87 '''पारà¥\8dसर à¤«à¤\99à¥\8dसन à¤\95ल'''हरà¥\82 à¤­à¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82",
 'post-expand-template-inclusion-warning' => "'''चेतावनी:''' समेट्नुपर्ने टेम्प्लेट(नमुना) आकार अति ठूलो छ।
 केही टेम्प्लेटहरु(नमुनाहरु) समेटिने छैनन् ।",
 'post-expand-template-inclusion-category' => 'पृष्ठहरु जहाँ  समेटिएको टेम्पलेट आकार हुनुपर्ने भन्दा बढि छ ।',
@@ -945,10 +955,6 @@ $2
 'rev-showdeleted' => 'देखाउनुहोस्',
 'revisiondelete' => 'मेटाउने/मेटाएको रद्दगर्ने  पुनरावलोकनहरु',
 'revdelete-nooldid-title' => 'अमान्य पुनरावलोकन लक्ष',
-'revdelete-nologtype-title' => 'कुनै पनि लग प्रकार खुलाइएन',
-'revdelete-nologtype-text' => 'यो कार्यको लागि तपाईँले लग प्रकार खुलाउनु भएको छैन ।',
-'revdelete-nologid-title' => 'अमान्य लग प्रविष्टि',
-'revdelete-nologid-text' => 'या यो कार्यको लागि तपाईँले लग प्रकार खुलाउनु भएको छैन या खुलाइएको लग अस्तित्वमा छैन ।',
 'revdelete-no-file' => 'खुलाइएको पृष्ठ अस्तित्वमा छैन',
 'revdelete-show-file-confirm' => 'तपाईँ $2 बाट $3 मा मेटिएको फाइल "<nowiki>$1</nowiki>" को पुनरावलोकन हेर्न चाहनुहुन्छ भन्ने कुरामा निश्चित हुनुहुन्छ ?',
 'revdelete-show-file-submit' => 'हो',
@@ -962,8 +968,8 @@ $2
 'revdelete-hide-user' => 'सम्पादकको प्रयोगकर्ता नाम/IP लुकाउने',
 'revdelete-hide-restricted' => 'प्रवन्धक वा अरुबाट डेटा कम लिने',
 'revdelete-radio-same' => '(परिवर्तन नगर्नुहोस्)',
-'revdelete-radio-set' => 'हà¥\81नà¥\8dà¤\9b',
-'revdelete-radio-unset' => 'हà¥\81à¤\81दà¥\88न',
+'revdelete-radio-set' => 'लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b',
+'revdelete-radio-unset' => 'दà¥\87à¤\96िनà¥\87',
 'revdelete-suppress' => 'प्रवन्धक वा अरुबाट डेटा कम लिने',
 'revdelete-unsuppress' => 'पुनर्स्थापित पुनरावृत्तिबाट बन्देज हटाउने',
 'revdelete-log' => 'कारण :',
@@ -975,8 +981,6 @@ $1",
 'logdelete-failure' => "'''लग दृष्टि मिलाउन सकिएन :'''
 $1",
 'revdel-restore' => 'दृष्टि परिवर्तन गर्ने',
-'revdel-restore-deleted' => 'मेटिएको पुनरावलोकन',
-'revdel-restore-visible' => 'प्रकट संशोधन',
 'pagehist' => 'पृष्ठको इतिहास',
 'deletedhist' => 'मेटाएका इतिहास',
 'revdelete-hide-current' => '$2, $1: मिति गरिएका वस्तुहरु लुकाउन मिलेन यो नै सबैभन्दा नयाँ संस्करण हो ।
@@ -1044,12 +1048,8 @@ $1",
 # 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}}',
@@ -1058,11 +1058,9 @@ $1",
 'nextn-title' => 'यस पछिको $1 {{PLURAL:$1|नतिजा |नतिजाहरु}}',
 'shown-title' => 'देखाउने $1 {{PLURAL:$1|नतिजा|नतिजाहरु}} प्रति पृष्ठ',
 'viewprevnext' => 'हेर्नुहोस् ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकल्प',
 'searchmenu-exists' => "''' \"[[:\$1]]\" नाम गरेको पृष्ठ  यो विकीमा रहेको छ'''",
 'searchmenu-new' => "'''यस विकिमा  \"[[:\$1]]\" शीर्षक भएको पृष्ठ बनाउनुहोस् !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|पृष्ठहरु प्रिफिक्सले हेर्नुहोस् ]]',
-'searchprofile-articles' => 'सामग्री पृष्ठहरु',
+'searchprofile-articles' => 'सामग्री पृष्ठहरू',
 'searchprofile-project' => 'सहायता र आयोजना पृष्ठहरु',
 'searchprofile-images' => 'मल्टिमिडिया(श्रव्य दृश्य)',
 'searchprofile-everything' => 'सब थोक',
@@ -1082,21 +1080,16 @@ $1",
 'search-interwiki-default' => '$1 नतिजाहरु:',
 'search-interwiki-more' => '(अझै)',
 'search-relatedarticle' => 'सम्बन्धित',
-'mwsuggest-disable' => 'खोज सुझावहरु अक्षम पार्ने',
 'searcheverything-enable' => 'सबै नेमस्पेसेजहरुमा खोज्नुहोस्',
 'searchrelated' => 'सम्बन्धित',
 'searchall' => 'सबै',
 'showingresults' => "देखाउदै  {{PLURAL:$1|'''१''' नतिजा|'''$1''' नतिजाहरु }} , #'''$2''' बाट सुरुहुने ।",
 'showingresultsnum' => "तल देखाउदै  {{PLURAL:$3|'''१''' नतिजा|'''$3''' नतिजाहरु }}, #'''$2''' बाट सुरुहुने ।",
 'showingresultsheader' => "{{PLURAL:$5|नतिजा '''$1''' को '''$3'''|नतिजाहरु '''$1 - $2''' को'''$3'''}}  ,'''$4''' को लागि",
-'nonefound' => "'''द्रष्टव्य''': पूर्वनिर्धारित रुपमा केहीमात्र नेमस्पेसेजहरू खोजिन्छ ।
-तपाईँको खोजलाई  ''all:'' राखी सवै(वार्तालाप , ढाँचा सहित, इत्यादि) सामग्री खोज्ने गरी मिलाउनुहोस् , ‍नत्र चाहेको नेमस्पेसलाई अगाडि जोड्नुहोस् ।",
 'search-nonefound' => 'तपाईँको क्वेरीसँग मेल खाने नतिजाहरू भेटिएनन्',
-'powersearch' => 'उन्नत खोज',
 'powersearch-legend' => 'उन्नत खोज',
 'powersearch-ns' => 'नेमस्पेसेजहरुमा खोज्ने :',
 'powersearch-redir' => 'अनुप्रेषित सूचीकृत गर्ने',
-'powersearch-field' => 'को लागि खोज्ने',
 'powersearch-togglelabel' => 'जाँच्ने :',
 'powersearch-toggleall' => 'सबै',
 'powersearch-togglenone' => 'कुनै पनि होइन',
@@ -1109,7 +1102,6 @@ $1",
 'preferences' => 'रोजाईहरू',
 'mypreferences' => 'प्राथमिकताहरु',
 'prefs-edits' => 'सम्पादन संख्या:',
-'changepassword' => 'पासवर्ड परिवर्तन गर्नुहोस्',
 'prefs-skin' => 'काँचुली',
 'skin-preview' => 'पूर्वावलोकन',
 'datedefault' => 'कुनै अभिरुचि छैन',
@@ -1118,7 +1110,7 @@ $1",
 'prefs-labs' => 'प्रयोगशाला गुणहरु',
 'prefs-user-pages' => 'प्रयोगकर्ता पृष्ठहरू',
 'prefs-personal' => 'प्रयोगकर्ताको विवरण',
-'prefs-rc' => 'नयाà¤\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\81',
+'prefs-rc' => 'नयाà¤\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82',
 'prefs-watchlist' => 'अवलोकन पृष्ठ',
 'prefs-watchlist-days' => 'निगरानी सूचीमा देखाउन दिनहरु:',
 'prefs-watchlist-days-max' => 'धेरैमा $1 {{PLURAL:$1|दिन|दिन}}',
@@ -1132,13 +1124,11 @@ $1",
 'prefs-email' => 'इमेल  विकल्पहरु',
 'prefs-rendering' => 'स्वरुप',
 'saveprefs' => 'संग्रह',
-'resetprefs' => 'संग्रह नगरिएका परिवर्तनहरु सफागर्ने',
 'restoreprefs' => 'सबै पूर्वनिर्धारित स्थिती कायम गर्ने(सबै खण्डहरूमा)',
 'prefs-editing' => 'सम्पादन',
 'rows' => 'हरफहरु :',
 'columns' => 'स्तम्भहरु :',
 'searchresultshead' => 'खोज',
-'resultsperpage' => 'प्रति पृष्ठ खोज मेल(hits):',
 'stub-threshold' => '<a href="#" class="stub">ठूटो</a> को लागि थ्रेसहोल्ड स्वरूपण (बाइट):',
 'stub-threshold-disabled' => 'निष्क्रिय',
 'recentchangesdays' => 'हालको परिवर्तनमा देखाउने दिनहरु:',
@@ -1150,7 +1140,6 @@ $1",
 'localtime' => 'स्थानिय समय:',
 'timezoneuseserverdefault' => 'विकि मूल  ($1) रुपमा प्रयोग गर्ने',
 'timezoneuseoffset' => 'अरु नै(अफसेट खुलाउनुहोस्)',
-'timezoneoffset' => 'अफसेट¹:',
 'servertime' => 'सर्भर समय:',
 'guesstimezone' => 'ब्राउजरबाट भराउनुहोस्',
 'timezoneregion-africa' => 'अफ्रिका',
@@ -1378,7 +1367,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
 'enhancedrc-history' => 'इतिहास',
-'recentchanges' => 'नयाà¤\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\81',
+'recentchanges' => 'नयाà¤\81 à¤ªà¤°à¤¿à¤µà¤°à¥\8dतनहरà¥\82',
 'recentchanges-legend' => 'हालैको परिवर्तन विकल्पहरु',
 'recentchanges-summary' => 'विकिका भर्खरका परिवर्तनहरुलाई यस पृष्ठमा पहिल्याउने',
 'recentchanges-feed-description' => 'यो फिडमा रहेको विकीको सवैभन्दा अन्तिम परिवर्तनहरुको जानकारी राख्नुहोस्',
@@ -1387,7 +1376,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'recentchanges-label-bot' => 'यो सम्पादन बोट द्वारा गरिएको थियो',
 'recentchanges-label-unpatrolled' => 'यो सम्पादन अहिले सम्म पट्रोल गरिएको छैन',
 'recentchanges-legend-newpage' => '$1 - नयाँ पृष्ठ',
-'rcnote' => "तल पछिल्ला {{PLURAL:$2|day|'''$2''' दिनहरु}} मा  $5, $4 सम्म भएका {{PLURAL:$1|is '''1''' change|पछिल्ला '''$1''' परिवर्तनहरु}} देखाइएको छ ।",
+'recentchanges-legend-plusminus' => "(''±१२३'')",
 'rcnotefrom' => "'''$2''' देखिका परिवर्तनहरु तल ('''$1''' सम्मका देखाइन्छ)।",
 'rclistfrom' => '$1 देखिका नयाँ परिवर्तनहरू देखाउनु',
 'rcshowhideminor' => '$1 सामान्य सम्पादन',
@@ -1411,7 +1400,7 @@ HTML ट्यागहरु जाँच्नुहोस् ।',
 'rc-change-size' => '$1',
 'rc-change-size-new' => 'परिवर्तनपछि $1 {{PLURAL:$1|बाइट|बाइट}}',
 'newsectionsummary' => '/* $1 */ नयाँ खण्ड',
-'rc-enhanced-expand' => 'à¤\9cानà¤\95ारà¥\80 à¤¦à¥\87à¤\96ाà¤\89नà¥\87( à¤\9cाभा à¤¸à¥\8dà¤\95à¥\8dरिपà¥\8dà¤\9f à¤\9aाहिनà¥\87)',
+'rc-enhanced-expand' => 'विसà¥\8dतà¥\83त à¤\9cानà¤\95ारà¥\80 à¤¹à¥\87रà¥\8dनà¥\87',
 'rc-enhanced-hide' => 'जानकारी लुकाउने',
 'rc-old-title' => 'मौलिक तौरमा "$1" रुपमा बनाइएको',
 
@@ -1669,6 +1658,9 @@ $1',
 'randompage' => 'कुनै एक लेख',
 'randompage-nopages' => '{{PLURAL:$2| $1 नाम भएको कुनै पृष्ट छैन|$1 नाम भएका कुनै पृष्टहरु छैनन्}}',
 
+# Random page in category
+'randomincategory-selectcategory-submit' => 'जाने',
+
 # Random redirect
 'randomredirect' => 'कुनै एउटा अनुप्रेषितमा जाने',
 'randomredirect-nopages' => '"$1" नामस्थानमा अनुप्रेषित छैन।',
@@ -1680,7 +1672,7 @@ $1',
 'statistics-header-views' => 'तथ्याङ्क देखाउनुहोस्',
 'statistics-header-users' => 'प्रयोगकर्ता तथ्याङ्कहरु',
 'statistics-header-hooks' => 'अन्य तथ्याङ्कहरु',
-'statistics-articles' => 'सामà¤\97à¥\8dरà¥\80 à¤ªà¥\83षà¥\8dठहरà¥\81',
+'statistics-articles' => 'सामà¤\97à¥\8dरà¥\80 à¤ªà¥\83षà¥\8dठहरà¥\82',
 'statistics-pages' => 'पृष्ठहरु',
 'statistics-pages-desc' => 'विकिका सबै पृष्ठहरु , वार्तापका पृष्ठहरु समेत , रिडाइरेक्ट , इत्यादि ।',
 'statistics-files' => 'उर्ध्वभरण गरिएका फाइलहरु',
@@ -1721,37 +1713,35 @@ $1',
 'nimagelinks' => '$1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}माथि प्रयोग गरिएको',
 'ntransclusions' => '$1 {{PLURAL:$1पृष्ठमा प्रयोग गरिएको|पृष्ठहरुमा प्रयोग गरिएका}}',
 'specialpage-empty' => 'यो पृष्ठ खाली छ।',
-'lonelypages' => 'à¤\85नाथ à¤ªà¥\83षà¥\8dठहरà¥\81',
+'lonelypages' => 'à¤\85नाथ à¤ªà¥\83षà¥\8dठहरà¥\82',
 'uncategorizedpages' => 'श्रेणीकरण नभएका पृष्ठहरु',
-'uncategorizedcategories' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण à¤¨à¤­à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\81',
+'uncategorizedcategories' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण à¤¨à¤­à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\82',
 'uncategorizedimages' => 'श्रेणीकरण नभएका फाइलहरु',
 'uncategorizedtemplates' => 'श्रेणीकरण नभएका टेम्प्लेटहरु',
-'unusedcategories' => 'पà¥\8dरयà¥\8bà¤\97 à¤¨à¤­à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\81',
+'unusedcategories' => 'पà¥\8dरयà¥\8bà¤\97 à¤¨à¤­à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\82',
 'unusedimages' => 'प्रयोग नभएका फाइलहरु',
 'popularpages' => 'धेरै रूचाईएका पृष्ठहरू',
-'wantedcategories' => 'माà¤\97 à¤­à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\81',
-'wantedpages' => 'à¤\96à¥\8bà¤\9cिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'wantedcategories' => 'माà¤\97 à¤­à¤\8fà¤\95ा à¤¶à¥\8dरà¥\87णà¥\80हरà¥\82',
+'wantedpages' => 'à¤\96à¥\8bà¤\9cिà¤\8fà¤\95ा à¤ªà¥\83षà¥\8dठहरà¥\82',
 'wantedpages-badtitle' => 'नतिजा सूचीमा अमान्य शीर्षक:$1',
 'wantedfiles' => 'माग भएका फाइलहरु',
 'wantedtemplates' => 'माग भएका टेम्प्लेटहरु',
 'mostlinked' => 'सबैभन्दा बढि लिंक भएको पृष्ठ',
-'mostlinkedcategories' => 'सबै भन्दा बढी जोडिएको श्रेणीहरु',
+'mostlinkedcategories' => 'सबैभन्दा बढी लिंक भएका श्रेणीहरू',
 'mostlinkedtemplates' => 'ढाँचाहरुसित सबैभन्दा बढि लिंक भएको',
 'mostcategories' => 'सबैभन्दा धेरै श्रेणीहरू भएका लेखहरू',
 'mostimages' => 'सबैभन्दा बढि लिंक भएको चित्र',
 'mostrevisions' => 'सबैभन्दा बढी संशोधित लेखहरू',
 'prefixindex' => 'प्रिफिक्स सहितका पृष्ठहरु',
-'shortpages' => 'à¤\9bà¥\8bà¤\9fा à¤ªà¥\83षà¥\8dठहरà¥\81',
+'shortpages' => 'à¤\9bà¥\8bà¤\9fा à¤ªà¥\83षà¥\8dठहरà¥\82',
 'longpages' => 'लामो पृष्ठहरु',
 'deadendpages' => 'हदै-अन्तकि पृष्ठहरु',
 'deadendpagestext' => 'निम्न पृष्ठहरु {{SITENAME}}मा रहेका अरु पृष्ठहरुसँग जोडिदैनन् ।',
-'protectedpages' => 'सà¤\82रà¤\95à¥\8dषित à¤ªà¥\83षà¥\8dठहरà¥\81',
+'protectedpages' => 'सà¤\82रà¤\95à¥\8dषित à¤ªà¥\83षà¥\8dठहरà¥\82',
 'protectedpages-indef' => 'नखुलेको सुरक्षा मात्र',
 'protectedpages-cascade' => 'लामबद्ध सुरक्षाहरु मात्रा',
-'protectedpagestext' => 'निम्न पृष्ठहरु सम्पादितनहुन र सारिनबाट  जोगाइएका छन्',
 'protectedpagesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका पृष्ठहरु छैनन् ।',
 'protectedtitles' => 'सुरक्षा गरिएका शिर्षकहरु',
-'protectedtitlestext' => 'निम्न शिर्षकहरु शृजनाहुनबाट सुरक्षित गरिएको छ',
 'protectedtitlesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका शीर्षकहरु छैनन् ।',
 'listusers' => 'प्रयोगकर्ता सूची',
 'listusers-editsonly' => 'सम्पादन गरेका प्रयोगकर्तामात्र देखाउने',
@@ -1760,7 +1750,7 @@ $1',
 'usercreated' => ' $1को $2 मा {{GENDER:$3|सृजना}} गरिएको',
 'newpages' => 'नयाँ पृष्ठहरू',
 'newpages-username' => 'प्रयोगकर्ता नाम:',
-'ancientpages' => 'सबà¥\88भनà¥\8dदा à¤ªà¥\81राना à¤ªà¥\83षà¥\8dठहरà¥\81',
+'ancientpages' => 'सबà¥\88भनà¥\8dदा à¤ªà¥\81राना à¤ªà¥\83षà¥\8dठहरà¥\82',
 'move' => 'सार्ने',
 'movethispage' => 'यो पृष्ठ सार्नुहोस्',
 'notargettitle' => 'कुनैपनि निसाना(टारगेट) छैन',
@@ -1784,17 +1774,14 @@ $1',
 'log-title-wildcard' => 'पाठबाट सुरुहुने शीर्षकहरु खोज्नुहोस्',
 
 # Special:AllPages
-'allpages' => 'सबà¥\88 à¤ªà¥\83षà¥\8dठहरà¥\81',
+'allpages' => 'सबà¥\88 à¤ªà¥\83षà¥\8dठहरà¥\82',
 'alphaindexline' => '$1 लाई $2 मा',
 'nextpage' => 'अर्को पृष्ठ ($1)',
 'prevpage' => 'पहिलो पृष्ठ ($1)',
-'allpagesfrom' => 'यहाà¤\81दà¥\87à¤\96ि à¤¶à¥\81रà¥\81 à¤¹à¥\81नà¥\87 à¤ªà¥\83षà¥\8dठहरà¥\81 देखाउनुहोस्:',
+'allpagesfrom' => 'यहाà¤\81दà¥\87à¤\96ि à¤¶à¥\81रà¥\81 à¤¹à¥\81नà¥\87 à¤ªà¥\83षà¥\8dठहरà¥\82 देखाउनुहोस्:',
 'allpagesto' => 'निम्नमा अन्तहुने पृष्ठहरु देखाउने:',
 'allarticles' => 'सबै लेखहरु',
 'allinnamespace' => 'सबै पृष्ठहरु ($1 नेमस्पेस)',
-'allnotinnamespace' => 'सबै पृष्ठहरु ($1 नेमस्पेसमा छैनन् )',
-'allpagesprev' => 'अघिल्लो',
-'allpagesnext' => 'अर्को',
 'allpagessubmit' => 'जाने',
 'allpagesprefix' => 'यी सुरुका अक्षरसहितका पृष्ठहरु हेर्ने:',
 'allpagesbadtitle' => 'दिएको पृष्ठ शीर्षक अमान्य, खाली वा गलत रुपमा अन्तर भाषा वा अन्तर विकी सम्बन्ध गरिएको थियो।  
@@ -1804,7 +1791,7 @@ $1',
 
 # Special:Categories
 'categories' => 'श्रेणीहरू',
-'categoriesfrom' => 'शà¥\8dरà¥\87णà¥\80हरà¥\81 देखाउन शुरु हुने यहाँ:',
+'categoriesfrom' => 'शà¥\8dरà¥\87णà¥\80हरà¥\82 देखाउन शुरु हुने यहाँ:',
 'special-categories-sort-count' => 'गणना क्रममा राख्नुहोस्',
 'special-categories-sort-abc' => 'वर्णानुक्रम अनुसार मिलाउने',
 
@@ -1900,7 +1887,7 @@ $1',
 'watchnologintext' => 'आफ्नो अवलोकनलाइ परिवर्तन गर्नको लागि त तपाइ यसमा [[Special:UserLogin|प्रवेश(लगइन)]] गर्नुपर्छ।',
 'addwatch' => 'निगरानी सुचीमा थप्ने',
 'addedwatchtext' => '"[[:$1]]" पृष्ठ [[Special:Watchlist|अवलोकनसूची]]मा थपियो
-यो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन  सूचिबद्ध गरिनेछ र यो पृष्ठ [[Special:RecentChanges|नयाँ परिवर्तनहरु]]मा छान्न सजिलोकोलागि गाढा अक्षरमा देखा पर्नेछ।',
+यो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन सूचिबद्ध गरिनेछ र यो पृष्ठ [[Special:RecentChanges|नयाँ परिवर्तनहरू]]मा छान्न सजिलोकोलागि गाढा अक्षरमा देखा पर्नेछ।',
 'removewatch' => 'निगरानी सुचीबाट हटाउने',
 'removedwatchtext' => 'पृष्ठ "[[:$1]]" [[Special:Watchlist|तपाईको निगरानी सूची]]बाट हटाइएको छ।',
 'watch' => 'अवलोकन',
@@ -2093,7 +2080,6 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'undeletebtn' => 'पूर्वावस्थामा ल्याउनुहोस्',
 'undeletelink' => 'हेर्ने/पूर्वरुपमा फर्काउने',
 'undeleteviewlink' => 'अवलोकन',
-'undeletereset' => 'रिसेट गर्नुहोस्',
 'undeleteinvert' => ' चयन उल्ट्याउने',
 'undeletecomment' => 'कारण :',
 'undeletedrevisions' => '{{PLURAL:$1|एउटा संशोधन|$1 संशोधनहरु}} पुनर्स्थापित गरियो',
@@ -2104,6 +2090,7 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'undeletedpage' => "'''$1लाई पूर्वावस्थामा ल्याइयो'''
 भर्खरै मेटाइएको रिकर्डहरु र पुनर्स्थापनाहरु हेर्न [[Special:Log/delete|मेटाइएको लग]]मा जानुहोस्।",
 'undelete-header' => 'भर्खर मेटिएका पृष्ठहरु हेर्न [[Special:Log/delete|मेटाइएका लग]]मा जानुहोस्।',
+'undelete-search-title' => 'मेटिएका पृष्ठहरु खोज्नुहोस',
 'undelete-search-box' => 'मेटिएका पृष्ठहरु खोज्नुहोस',
 'undelete-search-prefix' => 'बाट सुरु हुने  पृष्ठहरु देखाउनुहोस :',
 'undelete-search-submit' => 'खोजी गर्नुहोस्',
@@ -2113,6 +2100,7 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'undelete-cleanup-error' => 'प्रोगमा नआएको "$1" अभिलेख फाइल मेट्दा त्रुटी',
 'undelete-missing-filearchive' => 'फाइल अभिलेख आइडी $1 पुन:स्थापित गर्दा त्रुटी किनकी यो डेटाबेसमा छैन।
 यो पहिले नै पुन: स्थापित गरिसकिएको हुनछक्छ ।',
+'undelete-error' => 'पृष्ठ मेट्दा त्रुटि भयो',
 'undelete-error-short' => '$1  मेटाएको रद्द गर्दा त्रुटी भयो',
 'undelete-error-long' => 'फाइल $1 मेट्दै गर्दा त्रुटि आइलाग्यो।',
 'undelete-show-file-confirm' => 'के तपाईंले $3 मा $2 बाट मेटिएको "<nowiki>$1</nowiki>" फाइलको मेटिएको संस्करण हेर्ने निश्चय लिनु भएकै हो?',
@@ -2130,7 +2118,7 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'contributions' => '{{GENDER:$1|प्रयोगकर्ता}}का योगदानहरू',
 'contributions-title' => '$1को प्रयोगकर्ता योगदानहरु',
 'mycontris' => 'योगदानहरु',
-'contribsub2' => ' $1 ($2)को लागि',
+'contribsub2' => ' {{GENDER:$3|$1}} ($2)को लागि',
 'nocontribs' => 'यस मापदण्ड अनुसार परिवर्त पाइएन।',
 'uctop' => '(वर्तमान)',
 'month' => 'महिना देखि (र पहिले):',
@@ -2178,7 +2166,6 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'block' => 'प्रयोगकर्तालाई रोकलगाउने',
 'unblock' => 'प्रयोगकर्ता माथिको प्रतिबन्ध हटाउने',
 'blockip' => 'प्रयोगकर्तालाइ निषेध गर्ने',
-'blockip-title' => 'प्रयोगकर्तालाई रोक लगाउनुहोस्',
 'blockip-legend' => 'प्रयोगकर्ता रोक्नुहोस',
 'blockiptext' => 'विशेष IP ठेगाना अथवा प्रयोगकर्तालाई रोक लगाउन निम्न प्रपत्र (form) प्रयोग गर्नुहोस्।
 यसो गर्नुको कारण [[{{MediaWiki:Policy-url}}|नीति]] अनुरुप विकिमा गरिने बर्बरताका कार्य रोक्नु मात्र हो।
@@ -2186,7 +2173,6 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'ipadressorusername' => ' ip ठेगाना या प्रयोगकर्ता नाम :',
 'ipbexpiry' => 'समाप्ति:',
 'ipbreason' => 'कारण:',
-'ipbreasonotherlist' => 'अन्य कारण',
 'ipbreason-dropdown' => '*रोक लगाउनुका समान्य कारणहरु
 ** झूटो सूचना दिइएको
 ** पृष्ठहरुबाट सामाग्रीहरु हटाइएको
@@ -2202,8 +2188,6 @@ $3द्वारा $1को ($4को  समय $5 मा) मेटाइए
 'ipbsubmit' => 'यो प्रयोगकर्तालाई रोक्नुहोस',
 'ipbother' => 'अरु समय:',
 'ipboptions' => '२ घण्टाहरु:2 hours,१ दिन :1 day,३ दिनहरु:3 days,१ हप्ता:1 week,२ हप्ताहरु:2 weeks,१ महिना:1 month,३ महिनाहरु:3 months,६ महिनाहरु:6 months,१ वर्ष:1 year,अनगिन्ती:infinite',
-'ipbotheroption' => 'अन्य',
-'ipbotherreason' => 'अन्य / थप कारणहरु:',
 'ipbhidename' => 'प्रयोगकर्ताको नाम सम्पादनबाट र सूचीबाट हटाउने',
 'ipbwatchuser' => 'यो प्रयोगकर्ताको  प्रयपोगकर्ता र वार्तलाप पृष्ठ हेर्नुहोस्',
 'ipb-disableusertalk' => 'यस प्रयोगकर्तालाई निषेधित समयमा आफ्नै वार्तालाप पृष्ठ सम्पादन गर्न नदिने',
@@ -2297,7 +2281,6 @@ $1को बन्देजको कारण : "$2" हो',
 'sorbsreason' => 'तपाईको IP ठेगाना खुल्ला प्रोक्सीको रुपमा  DNSBL मा सुचीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।',
 'sorbs_create_account_reason' => 'तपाईको IP ठेगाना खुल्ला प्रोक्सीको रुपमा  DNSBL मा सुचीकरण गरिएको छ यसलाई{{SITENAME}}ले प्रयोगमा ल्याएको छ।
 तपाईले खाता खोल्न सक्नुहुन्न ।',
-'cant-block-while-blocked' => 'तपाईलाई रोक लागेको बेला अर्को प्रयोगकर्ताहरुलाई रोक लगाउन सक्नुहुन्न ।',
 'cant-see-hidden-user' => 'तपाईले रोक लगाउन खोज्नु भएको प्रयोगकर्ता पहिले नै रोकलगाइ लुकाइ सकिएको छ ।
 तपाईसँग hideuser अधिकार नभएकोले यसलाई हेर्ना या सम्पादन गर्न सक्नुहुन्न ।',
 'ipbblocked' => 'तपाईंले अरु प्रयोगकर्ताहरुलाई प्रतिबन्धित गर्न वा उनीहरुको प्रतिबन्ध खोल्न सक्नुहुन्न किनभनें तपाईं आफैं प्रतिबन्धित हुनुहुन्छ।',
@@ -2339,7 +2322,6 @@ $1को बन्देजको कारण : "$2" हो',
 यस्तो भएमा, तपाईंको इच्छाले आफैंले (manually) पृष्ठ सार्नु अथवा मिलाउनु पर्ने हुन्छ।",
 'movearticle' => 'पृष्ठ सार्नुहोस्',
 'moveuserpage-warning' => "'''चेतावनी:''' तपाईंले प्रयोगकर्ता पृष्ठ सार्न आँट्नु भएकोछ। कृपया याद राख्नुहोस् पृष्ठ मात्र सारिने छ र प्रयोगकर्ताको अर्को नाम राख्न '''सकिंदैन'''।",
-'movenologin' => 'प्रवेश (लग ईन) नगरिएको',
 'movenologintext' => 'पृष्ठ सार्नको लागि तपाई दर्ता गरिएको र [[Special:UserLogin|प्रवेश गरेको]] प्रयोगकर्ता हुनुपर्छ ।',
 'movenotallowed' => 'तपाईँलाई पृष्ठ सार्ने अनुमति छैन',
 'movenotallowedfile' => 'फाइल हटाउने अनुमति तपाईँलाई  छैन।',
@@ -2355,8 +2337,6 @@ $1को बन्देजको कारण : "$2" हो',
 'articleexists' => 'यस नामको पृष्ठ पहिले देखि नै रहेको ,या तपाईँले छान्नु भएको नाम अमान्य छ।
 कृपया अर्कै नाम छान्नुहोस् ।',
 'cantmove-titleprotected' => 'तपाईले यो स्थानमा पृष्ठ सार्न सक्नुहुन्न, किनकी यो नयाँ शिर्षकलाई सिर्जना हुनबाट जोगाइएको छ',
-'talkexists' => "'''यो पृष्ठ सफलतापूर्वक सारियो तर वार्तालाप पृष्ठ सार्न सकिएन किनभनें नयाँ शीर्षकको वार्तालाप पृष्ठ खालि छैन कृपया आफैं सार्ने अथवा मिलाउने काम गर्नुहोला।'''",
-'movedto' => 'मा सारियो',
 'movetalk' => 'सम्बन्धित वार्ता पृष्ठ',
 'move-subpages' => 'सहायक पृष्ठहरु सार्ने($1 सम्मको)',
 'move-talk-subpages' => 'वार्तालाप पृष्ठको सह-पृष्ठहरु सार्ने($1 सम्मको )',
@@ -2366,7 +2346,7 @@ $1को बन्देजको कारण : "$2" हो',
 'movepage-max-pages' => 'अधिकतम $1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}} सारिसकिएको छ र अरु स्वत: सारिने छैन ।',
 'movelogpage' => 'लग सार्ने',
 'movelogpagetext' => 'सबै सारिएका पृष्ठहरुको सूची तल दिइएकोछ।',
-'movesubpage' => '{{PLURAL:$1|à¤\89पपà¥\83षà¥\8dठ|à¤\89पपà¥\83षà¥\8dठहरà¥\81}}',
+'movesubpage' => '{{PLURAL:$1|à¤\89पपà¥\83षà¥\8dठ|à¤\89पपà¥\83षà¥\8dठहरà¥\82}}',
 'movesubpagetext' => 'यस पृष्ठको $1 {{PLURAL:$1|सह-पृष्ठ|सह-पृष्ठहरु}} तल देखाइएको :',
 'movenosubpage' => 'यस पृष्ठका उप पृष्ठहरु छैनन्।',
 'movereason' => 'कारण :',
@@ -2427,7 +2407,7 @@ $1को बन्देजको कारण : "$2" हो',
 'thumbnail_image-missing' => 'फाइल हराएको भान भइरहेछ: $1',
 
 # Special:Import
-'import' => 'पà¥\83षà¥\8dठहरà¥\81 आयात गर्नुहोस्',
+'import' => 'पà¥\83षà¥\8dठहरà¥\82 आयात गर्नुहोस्',
 'importinterwiki' => 'Transwiki आयात',
 'import-interwiki-source' => 'स्रोत विकि/ पृष्ठ :',
 'import-interwiki-history' => 'यो पृष्ठकोलागि सबै इतिहास संशोधनहरु प्रतिलिपि गर्ने',
@@ -2494,7 +2474,7 @@ $1को बन्देजको कारण : "$2" हो',
 'tooltip-ca-unwatch' => 'यो पृष्ठलाई तपाईँको अवलोकनसूचीबाट हटाउनुहोस्',
 'tooltip-search' => '{{SITENAME}} मा खोज्नुहोस्',
 'tooltip-search-go' => 'यदि यो नामको पृष्ठ रहेको छ भने त्यसमा जाने',
-'tooltip-search-fulltext' => 'यà¥\8b à¤ªà¤¾à¤ à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\83षà¥\8dठहरà¥\81 खोज्नुहोस्',
+'tooltip-search-fulltext' => 'यà¥\8b à¤ªà¤¾à¤ à¤\95à¥\8b à¤²à¤¾à¤\97ि à¤ªà¥\83षà¥\8dठहरà¥\82 खोज्नुहोस्',
 'tooltip-p-logo' => 'मुख्य पृष्ठ',
 'tooltip-n-mainpage' => 'मुख्य पृष्ठमा जाने',
 'tooltip-n-mainpage-description' => 'मुख्य पृष्ठमा जानुहो्स्',
@@ -2533,7 +2513,7 @@ $1को बन्देजको कारण : "$2" हो',
 'tooltip-watchlistedit-raw-submit' => 'निगरानी सूची अध्यावधि गर्ने',
 'tooltip-recreate' => 'मेटिएको भए ता पनि यो पृष्ट पुन:निर्माण गर्नुहोस् ।',
 'tooltip-upload' => 'उर्ध्वभरण(upload) सुरुगर्ने',
-'tooltip-rollback' => '"पà¥\82रà¥\8dवरà¥\81प" à¤²à¥\87 à¤¯à¥\8b à¤ªà¥\83षà¥\8dठà¤\95à¥\8b à¤¸à¤®à¥\8dपादन(हरà¥\81) à¤\96ारà¥\87à¤\9c à¤\97रà¥\80 à¤ªà¥\83षà¥\8dठलाà¤\88 à¤ªà¤\9bिलà¥\8dलà¥\8b à¤¸à¤®à¥\8dपादनमा à¤\8fà¤\95 à¤\95à¥\8dलिà¤\95मा à¤ªà¥\81रà¥\8dâ\80\8dयाà¤\87 दिन्छ',
+'tooltip-rollback' => '"पà¥\82रà¥\8dवरà¥\81प" à¤²à¥\87 à¤¯à¥\8b à¤ªà¥\83षà¥\8dठà¤\95à¥\8b à¤¸à¤®à¥\8dपादन(हरà¥\82) à¤\96ारà¥\87à¤\9c à¤\97रà¥\80 à¤ªà¥\83षà¥\8dठलाà¤\88 à¤\8fà¤\95 à¤\95à¥\8dलिà¤\95मा à¤ªà¤\9bिलà¥\8dलà¥\8b à¤¸à¤®à¥\8dपादनमा à¤ªà¥\81रà¥\8dâ\80\8dयाà¤\87दिन्छ',
 'tooltip-undo' => '"रद्द"ले पछिल्लो सम्पादन खारेज गरी पूर्वावलोकनमा देखाउँछ ।
 यसले सारांशमा कारण राख्न दिनेछ।',
 'tooltip-preferences-save' => 'अभिरुचिहरु संग्रह गर्नुहोस्',
@@ -2573,11 +2553,18 @@ $1को बन्देजको कारण : "$2" हो',
 
 # Info page
 'pageinfo-title' => ' "$1"को लागि जाकारी',
-'pageinfo-header-edits' => 'सम्पादनहरु',
+'pageinfo-header-basic' => 'साधारण जानकारी',
+'pageinfo-header-edits' => 'सम्पादन इतिहास',
+'pageinfo-header-restrictions' => 'पृष्ठ सुरक्षा',
+'pageinfo-header-properties' => 'पृष्ठ गुणहरू',
+'pageinfo-display-title' => 'प्रदर्शन शिर्षक',
 'pageinfo-views' => 'अवलोकन संख्या',
 'pageinfo-watchers' => 'निगरानी कर्ताहरुको संख्या',
 'pageinfo-edits' => 'सम्पादन संख्या',
 'pageinfo-authors' => 'फरक सम्पादकरुको संख्या',
+'pageinfo-redirectsto-info' => 'जानकारी',
+'pageinfo-contentpage-yes' => 'हो',
+'pageinfo-protect-cascading-yes' => 'हो',
 
 # Skin names
 'skinname-cologneblue' => 'कोलोग्ने निलो',
@@ -2662,6 +2649,16 @@ $1',
 'days' => '{{PLURAL:$1|$1 दिन|$1 दिनहरु}}',
 'ago' => '$1 पहिले',
 
+# Human-readable timestamps
+'monday-at' => 'सोमबार $1 मा',
+'tuesday-at' => 'मङ्गलबार $1मा',
+'wednesday-at' => 'बुधबार $1मा',
+'thursday-at' => 'बिहिबार $1मा',
+'friday-at' => 'शुक्रबार $1मा',
+'saturday-at' => 'शनिबार $1मा',
+'sunday-at' => 'आइतबार $1मा',
+'yesterday-at' => 'हिजो $1मा',
+
 # Bad image list
 'bad_image_list' => '(* बाट शुरु हुने पंक्ति)को  विषय सूची मात्र मान्य छ।  पंक्तिको पहिलो लिङ्क नराम्रो फाइलसित लिङ्क हुनैपर्छ । एउटै पंक्तिमा कुनै पछिबाट हुने लिंकलाई अपवाद मानिनेछ अर्थात् जुन पृष्ठमा फाइल इन-लाइन हुनसक्छ।',
 
@@ -2901,7 +2898,7 @@ $8',
 'exif-exposureprogram-1' => 'स्वयं',
 'exif-exposureprogram-2' => 'साधारण कार्यक्रम',
 'exif-exposureprogram-3' => 'एपर्चर प्राथमिकता',
-'exif-exposureprogram-4' => 'à¤टर प्राथमिकता',
+'exif-exposureprogram-4' => 'सटर प्राथमिकता',
 'exif-exposureprogram-5' => 'शृजनात्मक कार्यक्रम(गहिराइसँग बाझिएको)',
 'exif-exposureprogram-6' => 'क्रिया कार्यक्रम (तेज शटर गतितर्फ झु्केको)',
 
@@ -3072,15 +3069,10 @@ $8',
 'exif-urgency-high' => 'उच्च ($1)',
 'exif-urgency-other' => 'प्रयोगकर्ताले निर्धारण गरेको प्राथमिकता ($1)',
 
-# External editor support
-'edit-externally' => 'यो फाइललाई बाह्य अनुप्रयोग प्रयोग गरेर सम्पादन गर्ने',
-'edit-externally-help' => '(थप जानकारीको लागि [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] मा हेर्नुहोस् )',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सबै',
 'namespacesall' => 'सबै',
 'monthsall' => 'सबै',
-'limitall' => 'सबै',
 
 # Email address confirmation
 'confirmemail' => 'इमेल ठेगाना पक्का गर्नुहोस्',
@@ -3101,7 +3093,6 @@ $8',
 'confirmemail_success' => 'तपाईको इमेल ठेगाना प्रमाणिकरण गरिएको छ।
 तपाई [[Special:UserLogin|प्रवेश गरी]] विकिको मजा लिन सक्नुहुन्छ ।',
 'confirmemail_loggedin' => 'तपाईको इमेल ठेगाना प्रमाणित भयो।',
-'confirmemail_error' => 'तपाईंको निश्चयलाई संग्रह गर्दा केहि त्रुटि भएकोछ।',
 'confirmemail_subject' => '{{SITENAME}} ई मेलl ठेगानाको पुष्टि',
 'confirmemail_body' => 'कसैले, सायद तपाईंले, आई पी ठेगाना $1बाट,
 {{SITENAME}}मा एउटा  खाता  "$2"को नाममा यस ई मेल ठेगानामा  पञ्जीकरण गरेकोछ।
@@ -3389,7 +3380,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'पृष्ठहरु दाज्ने',
-'compare-selector' => 'पृष्ठ संस्करणहरु दाज्ने',
 'compare-page1' => 'पृष्ठ 1',
 'compare-page2' => 'पृष्ठ 2',
 'compare-rev1' => 'संशोधन 1',
index 939f036..0e7dfad 100644 (file)
@@ -69,7 +69,6 @@ $messages = array(
 'tog-enotifrevealaddr' => 'जिगु इ-मेल थाय्‌बाय्‌ नोटिफिकेसन इ-मेलय् क्यनादिसँ',
 'tog-shownumberswatching' => 'स्वयाच्वंपिं छ्यलामितेगु ल्याखँ क्यनादिसँ',
 'tog-fancysig' => 'कच्चा हस्ताक्षर (अटोम्याटिक लिङ्क मदेःकः)',
-'tog-showjumplinks' => '"जम्प टु" एसिसिबिलिटी लिङ्क इनेबल यानादिसँ',
 'tog-uselivepreview' => 'लाइभ प्रिभ्यु (जाभास्क्रिप्ट) इनेबल यानादिसँ (परिक्षणकाल)',
 'tog-forceeditsummary' => 'सम्पादन सार खालि त्वतिबिले जित सशंकित यानादिसँ',
 'tog-watchlisthideown' => 'जिगु सम्पादन वाचलिस्टय् सुचुकादिसँ',
@@ -166,7 +165,6 @@ $messages = array(
 'qbedit' => 'सम्पादन',
 'qbpageoptions' => 'थ्व पौ',
 'qbmyoptions' => 'जिगु पौ',
-'qbspecialpages' => 'विशेष पौ',
 'faq' => 'आपालं न्यनिगु न्ह्यसः (FAQ)',
 'faqpage' => 'Project:आपालं न्यनिगु न्ह्यसःत (FAQ)',
 
@@ -209,7 +207,7 @@ $messages = array(
 'jumptosearch' => 'मालादिसँ',
 '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).
+# 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).
 'aboutsite' => '{{SITENAME}}या बारेय्',
 'aboutpage' => 'Project:बारेय्',
 'copyright' => 'कण्टेण्ट $1 कथं उपलब्ध दु।',
@@ -219,7 +217,6 @@ $messages = array(
 'disclaimers' => 'डिस्क्लेमर्स',
 'disclaimerpage' => 'Project:साधारण डिस्क्लेमर्स',
 'edithelp' => 'सम्पादन ग्वहालि',
-'edithelppage' => 'Help:सम्पादन',
 'helppage' => 'Help:धलःपौ',
 'mainpage' => 'मू पौ',
 'mainpage-description' => 'मू पौ',
@@ -238,8 +235,6 @@ $messages = array(
 स्वयादिसँ [[विशेष:संस्करण|संस्करण पौ]]।',
 
 'ok' => 'ज्यु',
-'newmessageslink' => 'न्हुगु सन्देश',
-'newmessagesdifflink' => 'न्हापाया हिलेज्या',
 'youhavenewmessagesmulti' => '$1य् छित न्हुगु सन्देश वगु दु',
 'editsection' => 'सम्पादन',
 'editold' => 'सम्पादन',
@@ -272,12 +267,6 @@ $messages = array(
 
 # General errors
 'databaseerror' => 'डेटाबेस इरर',
-'dberrortext' => 'छगू डेटाबेस क्वेरी सिन्ट्याक्स इरर जूगु दु।
-थ्व इररं सफ्टवेयरय् bug दूगु इंगीत यायेफु।
-थ्व स्वया न्हः कोशिस जूगु डेटाबेस क्वेरी
-"<tt>$2</tt>" फंक्सनया
-<blockquote><tt>$1</tt></blockquote> ख।
-MySQL नं इरर "<tt>$3: $4</tt>" क्यंगु दु।',
 'laggedslavemode' => 'चेतावनी: पतिइ न्हुगु अपदेत मदेफु ।',
 'readonly' => 'देताबेस संरक्षित',
 'enterlockreason' => 'पौ कुनातयेगुया निंतिं कारण बियादिसँ, नापं पौ गब्ले चायेकिगु जुइफु उकिया अनुमान नं बियादिसँ',
@@ -309,7 +298,7 @@ MySQL नं इरर "<tt>$3: $4</tt>" क्यंगु दु।',
 'loginlanguagelabel' => 'भाषा: $1',
 
 # Change password dialog
-'resetpass' => 'पासवर्द हिलादिसँ',
+'changepassword' => 'पासवर्द हिलादिसँ',
 
 # Special:ChangeEmail
 'changeemail-submit' => 'इ-मेल हिलादिसँ',
@@ -353,16 +342,13 @@ MySQL नं इरर "<tt>$3: $4</tt>" क्यंगु दु।',
 'previousrevision' => '←पुलांगु संस्करण',
 
 # Search results
-'searchhelp-url' => 'Help:धलःपौ',
 'searchprofile-everything' => 'दक्वं',
 'search-result-size' => '$1 ({{PLURAL:$2|1 खँग्वः |$2 खँग्वःत}})',
 'searchrelated' => 'स्वापू दुःगु',
 'searchall' => 'सकल',
-'powersearch' => 'मालादिसँ',
 
 # Preferences page
 'mypreferences' => 'जिगु प्राथमिकता',
-'changepassword' => 'पासवर्द हिलादिसँ',
 'prefs-skin' => 'भुँसा',
 'prefs-datetime' => 'दिं व ई',
 'prefs-personal' => 'छ्य्‌लामि प्रोफाइल',
@@ -487,7 +473,6 @@ MySQL नं इरर "<tt>$3: $4</tt>" क्यंगु दु।',
 'monobook.css' => '/* थन तःगु CSS नं मोनोबुक स्किनया छ्य्‌लामितेत असर याइ */',
 'modern.css' => '/* थन तःगु CSS नं मोडर्न स्किनया छ्य्‌लामितेत असर याइ */',
 'print.css' => '/* थन तःगु CSS नं प्रिन्ट आउटपुटयात असर याइ */',
-'handheld.css' => '/* थन तःगु CSS नं $wgHandheldStyle आधारित ह्याण्डहेल्ड यन्त्रयात असर याइ */',
 
 # Attribution
 'others' => 'मेमेगु',
index bc49067..c4fd283 100644 (file)
@@ -54,7 +54,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbedit' => 'Fakahakohako',
-'qbspecialpages' => 'Tau Lau Mahuiga',
 
 'help' => 'Lagomatai',
 'search' => 'Kumi',
@@ -74,7 +73,7 @@ $messages = array(
 'jumptonavigation' => 'navikati',
 'jumptosearch' => 'kumi',
 
-# 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).
+# 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).
 'aboutsite' => 'Hagaao ke he {{SITENAME}}',
 'aboutpage' => 'Project: Hagaao',
 'currentevents' => 'Tau Fakaholoaga Mogonei',
@@ -87,7 +86,6 @@ $messages = array(
 'privacy' => 'Ko e puipuiaga ke he tau talahauaga mo e talahauaga fakatagata',
 
 'youhavenewmessages' => 'Fai $1 ($2).',
-'newmessageslink' => 'tau tohi foou',
 'youhavenewmessagesmulti' => 'Fai tohi foou a koe he $1',
 'editsection' => 'fakahakohako',
 'editold' => 'fakahakohako',
@@ -102,9 +100,6 @@ $messages = array(
 'viewsource' => 'Kitekite ke mouaga',
 
 # Login and logout pages
-'welcomecreation' => '== Fakalofa atu, kua fiafia ke hu mai $1 ==
-Kua talaga e haau a poko.
-Ua nimo ke hiki e haau tau [[Special:Preferences|manako {{SITENAME}}]].',
 'yourname' => 'Matahigoa he tagata:',
 'yourpassword' => 'Kupu fufu:',
 'yourpasswordagain' => 'Liu lolomi e kupu fufu:',
@@ -139,7 +134,6 @@ Ua nimo ke hiki e haau tau [[Special:Preferences|manako {{SITENAME}}]].',
 
 # Preferences page
 'mypreferences' => 'Haaku a tau manako',
-'prefsnologin' => 'Ai la hu ki loto',
 'prefs-rc' => 'Hikihikiaga mogoia',
 'searchresultshead' => 'Kumi',
 'youremail' => 'Meli hila:',
@@ -220,9 +214,7 @@ Ua nimo ke hiki e haau tau [[Special:Preferences|manako {{SITENAME}}]].',
 'ipblocklist-submit' => 'Kumi',
 
 # Move page
-'movenologin' => 'Ai la hu ki loto',
 'move-watch' => 'Onoono e lau e',
-'movedto' => 'kua une ke he',
 'movereason' => 'Kakano:',
 
 # Namespace 8 related
index c5bd0ee..deb2b3b 100644 (file)
@@ -37,6 +37,7 @@
  * @author Mwpnl
  * @author Naudefj
  * @author Niels
+ * @author Niknetniko
  * @author Paul B
  * @author Romaine
  * @author SPQRobin
@@ -178,7 +179,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'gecentreerd', 'center', 'centre' ),
        'img_framed'                => array( '1', 'omkaderd', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'kaderloos', 'frameless' ),
-       'img_page'                  => array( '1', 'pagina=$1', 'pagina $1', 'page=$1', 'page $1' ),
+       'img_lang'                  => array( '1', 'taal=$1', 'lang=$1' ),
+       'img_page'                  => array( '1', 'pagina=$1', 'pagina_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'rechtop', 'rechtop=$1', 'rechtop$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'rand', 'border' ),
        'img_baseline'              => array( '1', 'grondlijn', 'baseline' ),
@@ -188,6 +190,7 @@ $magicWords = array(
        'img_bottom'                => array( '1', 'beneden', 'bottom' ),
        'img_text_bottom'           => array( '1', 'tekst-beneden', 'text-bottom' ),
        'img_link'                  => array( '1', 'koppeling=$1', 'verwijzing=$1', 'link=$1' ),
+       'img_class'                 => array( '1', 'klasse=$1', 'class=$1' ),
        'sitename'                  => array( '1', 'SITENAAM', 'SITENAME' ),
        'ns'                        => array( '0', 'NR:', 'NS:' ),
        'nse'                       => array( '0', 'NRE:', 'NSE:' ),
@@ -214,6 +217,7 @@ $magicWords = array(
        'revisionyear'              => array( '1', 'VERSIEJAAR', 'REVISIONYEAR' ),
        'revisiontimestamp'         => array( '1', 'VERSIETIJD', 'REVISIONTIMESTAMP' ),
        'revisionuser'              => array( '1', 'VERSIEGEBRUIKER', 'REVISIONUSER' ),
+       'revisionsize'              => array( '1', 'VERSIEGROOTTE', 'REVISIONSIZE' ),
        'plural'                    => array( '0', 'MEERVOUD:', 'PLURAL:' ),
        'fullurl'                   => array( '0', 'VOLLEDIGEURL:', 'FULLURL:' ),
        'fullurle'                  => array( '0', 'VOLLEDIGEURLE:', 'FULLURLE:' ),
@@ -268,12 +272,12 @@ $magicWords = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'ActieveGebruikers' ),
        'Allmessages'               => array( 'AlleBerichten', 'Systeemberichten' ),
+       'AllMyUploads'              => array( 'AlMijnUploads' ),
        'Allpages'                  => array( 'AllePaginas', 'AllePagina’s', 'AllePagina\'s' ),
        'Ancientpages'              => array( 'OudstePaginas', 'OudstePagina’s', 'OudstePagina\'s' ),
        'Badtitle'                  => array( 'OnjuistePaginanaam' ),
        'Blankpage'                 => array( 'LegePagina' ),
        'Block'                     => array( 'Blokkeren', 'IPblokkeren', 'BlokkeerIP', 'BlokkeerIp' ),
-       'Blockme'                   => array( 'BlokkeerMij', 'MijBlokkeren' ),
        'Booksources'               => array( 'Boekbronnen', 'Boekinformatie' ),
        'BrokenRedirects'           => array( 'GebrokenDoorverwijzingen' ),
        'Categories'                => array( 'Categorieën' ),
@@ -285,10 +289,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'GebruikerAanmaken' ),
        'Deadendpages'              => array( 'VerwijslozePaginas', 'VerwijslozePagina’s', 'VerwijslozePagina\'s' ),
        'DeletedContributions'      => array( 'VerwijderdeBijdragen' ),
-       'Disambiguations'           => array( 'Doorverwijzingen' ),
        'DoubleRedirects'           => array( 'DubbeleDoorverwijzingen' ),
        'EditWatchlist'             => array( 'VolglijstBewerken' ),
        'Emailuser'                 => array( 'GebruikerE-mailen', 'E-mailGebruiker' ),
+       'ExpandTemplates'           => array( 'SjablonenSubstitueren' ),
        'Export'                    => array( 'Exporteren' ),
        'Fewestrevisions'           => array( 'MinsteVersies', 'MinsteHerzieningen', 'MinsteRevisies' ),
        'FileDuplicateSearch'       => array( 'BestandsduplicatenZoeken' ),
@@ -332,10 +336,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'BeveiligdePaginas', 'BeveiligdePagina\'s', 'BeschermdePaginas', 'BeschermdePagina’s', 'BeschermdePagina\'s' ),
        'Protectedtitles'           => array( 'BeveiligdeTitels', 'BeschermdeTitels' ),
        'Randompage'                => array( 'Willekeurig', 'WillekeurigePagina' ),
+       'RandomInCategory'          => array( 'WillekeurigeUitCategorie' ),
        'Randomredirect'            => array( 'WillekeurigeDoorverwijzing' ),
        'Recentchanges'             => array( 'RecenteWijzigingen' ),
        'Recentchangeslinked'       => array( 'RecenteWijzigingenGelinkt', 'VerwanteWijzigingen' ),
        'Redirect'                  => array( 'Doorverwijzen' ),
+       'ResetTokens'               => array( 'TokensOpnieuwInstellen' ),
        'Revisiondelete'            => array( 'VersieVerwijderen', 'HerzieningVerwijderen', 'RevisieVerwijderen' ),
        'Search'                    => array( 'Zoeken' ),
        'Shortpages'                => array( 'KortePaginas', 'KortePagina’s', 'KortePagina\'s' ),
@@ -393,7 +399,6 @@ $messages = array(
 'tog-minordefault' => 'Mijn bewerkingen als ‘klein’ markeren',
 'tog-previewontop' => 'Voorvertoning boven bewerkingsveld weergeven',
 'tog-previewonfirst' => 'Voorvertoning bij eerste bewerking weergeven',
-'tog-nocache' => "Cachen van pagina's door de browser uitschakelen",
 'tog-enotifwatchlistpages' => 'Mij e-mailen bij bewerkingen van pagina’s of bestanden op mijn volglijst',
 'tog-enotifusertalkpages' => 'Mij e-mailen als iemand mijn overlegpagina wijzigt',
 'tog-enotifminoredits' => 'Mij e-mailen bij kleine bewerkingen van pagina’s en bestanden op mijn volglijst',
@@ -529,7 +534,6 @@ $messages = array(
 'qbedit' => 'Bewerken',
 'qbpageoptions' => 'Deze pagina',
 'qbmyoptions' => "Mijn pagina's",
-'qbspecialpages' => 'Speciale pagina’s',
 'faq' => 'Veel gestelde vragen',
 'faqpage' => 'Project:Veelgestelde vragen',
 
@@ -574,7 +578,7 @@ $messages = array(
 'deletethispage' => 'Deze pagina verwijderen',
 'undeletethispage' => 'Pagina terugplaatsen',
 'undelete_short' => '$1 {{PLURAL:$1|bewerking|bewerkingen}} terugplaatsen',
-'viewdeleted_short' => '{{PLURAL: $1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken',
+'viewdeleted_short' => '{{PLURAL:$1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken',
 'protect' => 'Beveiligen',
 'protect_change' => 'wijzigen',
 'protectthispage' => 'Deze pagina beveiligen',
@@ -748,9 +752,6 @@ Wellicht bevat de paginanaam niet toegestane tekens.',
 'perfcachedts' => 'Deze gegevens komen uit een cache die voor het laatst is bijgewerkt op $2 om $3. Er {{PLURAL:$4|is maximaal één resultaat|zijn maximaal $4 resultaten}} beschikbaar in de cache.',
 'querypage-no-updates' => 'Deze pagina wordt niet bijgewerkt.
 Gegevens op deze pagina worden niet ververst.',
-'wrong_wfQuery_params' => 'Verkeerde parameters voor wfQuery()<br />
-Functie: $1<br />
-Zoekopdracht: $2',
 'viewsource' => 'Brontekst bekijken',
 'viewsource-title' => 'Brontekst bekijken van $1',
 'actionthrottled' => 'Handeling tegengehouden',
@@ -783,7 +784,7 @@ De opgegeven reden is "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en tekst "$3"',
 'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekend naamruimtenummer $1 en tekst "$2"',
 'exception-nologin' => 'Niet aangemeld',
-'exception-nologin-text' => 'Om deze pagina te bekijken of deze handeling uit te kunnen voeren moet u [[Special:Userlogin|aangemeld]] zijn bij deze wiki.',
+'exception-nologin-text' => '[[Special:Userlogin|Meld u aan]] om deze pagina te bekijken of deze handeling uit te voeren.',
 'exception-nologin-text-manual' => 'U moet $1 om deze pagina te kunnen bekijken of de handeling uit te voeren.',
 
 # Virus scanner
@@ -823,7 +824,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'logout' => 'Afmelden',
 'userlogout' => 'Afmelden',
 'notloggedin' => 'Niet aangemeld',
-'userlogin-noaccount' => 'Hebt u geen geregistreerde gebruiker?',
+'userlogin-noaccount' => 'Hebt u geen gebruiker?',
 'userlogin-joinproject' => 'Word lid van {{SITENAME}}',
 'nologin' => 'Nog geen gebruikersnaam? $1.',
 'nologinlink' => 'Registreren',
@@ -831,7 +832,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
 'gotaccount' => 'Hebt u al een gebruikersnaam? $1.',
 'gotaccountlink' => 'Aanmelden',
 'userlogin-resetlink' => 'Bent u uw aanmeldgegevens vergeten?',
-'userlogin-resetpassword-link' => 'Uw wachtwoord opnieuw instellen',
+'userlogin-resetpassword-link' => 'Wachtwoord vergeten?',
 'helplogin-url' => 'Help:Aanmelden',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hulp bij aanmelden]]',
 'userlogin-loggedin' => 'U bent al aangemeld als {{GENDER:$1|$1}}.
@@ -946,7 +947,7 @@ Als u deze opgeeft, wordt deze naam gebruikt worden om u erkenning te geven voor
 'user-mail-no-body' => 'Er is geprobeerd een e-mail te verzenden zonder inhoud of met een hele korte inhoud.',
 
 # Change password dialog
-'resetpass' => 'Wachtwoord wijzigen',
+'changepassword' => 'Wachtwoord wijzigen',
 'resetpass_announce' => 'U bent aangemeld met een tijdelijke code die u per e-mail is toegezonden.
 Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
 'resetpass_text' => '<!-- Voeg hier tekst toe -->',
@@ -968,7 +969,7 @@ Mogelijk hebt u uw wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aan
 # Special:PasswordReset
 'passwordreset' => 'Wachtwoord opnieuw instellen',
 'passwordreset-text-one' => 'Vul dit formulier in om uw wachtwoord opnieuw in te stellen.',
-'passwordreset-text-many' => '{{PLURAL:$1|Vul een van de gegevensvelden in om uw wachtwoord opnieuw in te stellen.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Vul een van de gegevensvelden in om per e-mail een tijdelijk wachtwoord te ontvangen.}}',
 'passwordreset-legend' => 'Wachtwoord opnieuw instellen',
 'passwordreset-disabled' => 'Het is in deze wiki niet mogelijk uw wachtwoord opnieuw in te stellen.',
 'passwordreset-emaildisabled' => 'E-mailmogelijkheden zijn uitgeschakeld op deze wiki.',
@@ -1236,6 +1237,8 @@ Deze bestaat al.',
 'content-not-allowed-here' => 'De inhoud "$1" is niet toegestaan op pagina [[$2]].',
 'editwarning-warning' => 'Als u deze pagina verlaat verliest u mogelijk wijzigingen die u hebt gemaakt.
 Als u bent aangemeld, kunt u deze waarschuwing uitschakelen in het tabblad "{{int:prefs-editing}}" in uw voorkeuren.',
+'editpage-notsupportedcontentformat-title' => 'Inhoudsformaat niet ondersteund',
+'editpage-notsupportedcontentformat-text' => 'Het inhoudsformaat $1 wordt niet ondersteund door het inhoudsmodel $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitekst',
@@ -1279,6 +1282,9 @@ Controleer voor het opslaan of het resultaat gewenst is.',
 'cantcreateaccount-text' => "Registreren vanaf dit IP-adres ('''$1''') is geblokkeerd door [[User:$3|$3]].
 
 De door $3 opgegeven reden is ''$2''",
+'cantcreateaccount-range-text' => 'Het aanmaken van gebruikers vanaf IP-adressen in de reeks <strong>$1</strong> is niet mogelijk doordat dit is ingesteld door [[User:$3|$3]]. Uw IP-adres $4 bevindt zich in deze reeks.
+
+De reden voor de blokkade is <em>$2</em>',
 
 # History pages
 'viewpagelogs' => 'Logboek voor deze pagina bekijken',
@@ -1347,10 +1353,6 @@ U kunt deze verschillen bekijken. Er kunnen details te vinden zijn in het [{{ful
 'revisiondelete' => 'Versies verwijderen of terugplaatsen',
 'revdelete-nooldid-title' => 'Ongeldige doelversie',
 'revdelete-nooldid-text' => 'U hebt geen doelversie(s) voor deze handeling opgegeven. De opgegeven versie bestaat niet of u probeert de laatste versie te verbergen.',
-'revdelete-nologtype-title' => 'Er is geen logboektype opgegeven',
-'revdelete-nologtype-text' => 'U hebt geen logboektype opgegeven om deze handeling op uit te voeren.',
-'revdelete-nologid-title' => 'Ongeldige logboekregel',
-'revdelete-nologid-text' => 'U hebt ofwel geen doellogboekregel opgegeven of de opgegeven logboekregel bestaat niet.',
 'revdelete-no-file' => 'Het opgegeven bestand bestaat niet.',
 'revdelete-show-file-confirm' => 'Weet u zeker dat u de verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wilt bekijken?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1359,15 +1361,16 @@ U kunt deze verschillen bekijken. Er kunnen details te vinden zijn in het [{{ful
 'revdelete-text' => "'''Verwijderde bewerkingen zijn zichtbaar in de geschiedenis en logboeken, maar delen van de inhoud zijn niet langer publiek toegankelijk.'''
 Andere beheerders van {{SITENAME}} kunnen de verborgen inhoud benaderen en de verwijdering ongedaan maken met behulp van dit formulier, tenzij er aanvullende beperkingen gelden die zijn ingesteld door de systeembeheerder.",
 'revdelete-confirm' => 'Bevestig dat u dit wilde doen, dat u de consequenties begrijpt en dat u dit doet in overeenstemming met het geldende [[{{MediaWiki:Policy-url}}|beleid]].',
-'revdelete-suppress-text' => "Versies verbergen dient '''alleen''' gebruikt te worden in de volgende gevallen:
-* Ongepaste persoonlijke informatie
-*: ''woonadres, telefoonnummers, Burger Service Nummers, enzovoort.''",
+'revdelete-suppress-text' => "Gebruik versies verbergen '''alleen''' in de volgende gevallen:
+* Mogelijk smadelijke informatie;
+* Ongepaste persoonlijke gegevens, zoals:
+*: ''adres, telefoonnummers, Burger Service Nummers, enzovoort.''",
 'revdelete-legend' => 'Zichtbaarheidsbeperkingen instellen',
-'revdelete-hide-text' => 'Bewerkte tekst verbergen',
+'revdelete-hide-text' => 'Versietekst',
 'revdelete-hide-image' => 'Bestandsinhoud verbergen',
 'revdelete-hide-name' => 'Handeling en doel verbergen',
-'revdelete-hide-comment' => 'Bewerkingssamenvatting verbergen',
-'revdelete-hide-user' => 'Gebruikersnaam/IP-adres van de gebruiker verbergen',
+'revdelete-hide-comment' => 'Bewerkingssamenvatting',
+'revdelete-hide-user' => 'Gebruikersnaam of IP-adres van de gebruiker',
 'revdelete-hide-restricted' => 'Deze beperkingen ook op beheerders toepassen',
 'revdelete-radio-same' => '(niet wijzigen)',
 'revdelete-radio-set' => 'Verborgen',
@@ -1383,8 +1386,6 @@ $1",
 'logdelete-failure' => "'''De zichtbaarheid van de logboekregel kon niet ingesteld worden:'''
 $1",
 'revdel-restore' => 'Zichtbaarheid wijzigen',
-'revdel-restore-deleted' => 'verwijderde versies',
-'revdel-restore-visible' => 'zichtbare versies',
 'pagehist' => 'Geschiedenis',
 'deletedhist' => 'verwijderde geschiedenis',
 'revdelete-hide-current' => 'Er is een fout opgetreden bij het verbergen van het object van $1 om $2 uur: dit is de huidige versie.
@@ -1464,13 +1465,9 @@ Meer gegevens zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|
 # Search results
 'searchresults' => 'Zoekresultaten',
 'searchresults-title' => 'Zoekresultaten voor "$1"',
-'searchresulttext' => 'Voor meer informatie over zoeken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'U hebt gezocht naar \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pagina\'s die beginnen met "$1"]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|pagina\'s die verwijzen naar "$1"]])',
-'searchsubtitleinvalid' => "U hebt gezocht naar '''$1'''",
 'toomanymatches' => 'Er waren te veel resultaten.
 Probeer een andere zoekopdracht.',
 'titlematches' => 'Overeenkomst met onderwerp',
-'notitlematches' => 'Geen resultaten gevonden',
 'textmatches' => 'Overeenkomst met inhoud',
 'notextmatches' => "Geen pagina's gevonden",
 'prevn' => 'vorige {{PLURAL:$1|$1}}',
@@ -1479,10 +1476,8 @@ Probeer een andere zoekopdracht.',
 'nextn-title' => 'Volgende {{PLURAL:$1|resultaat|$1 resultaten}}',
 'shown-title' => '$1 {{PLURAL:$1|resultaat|resultaten}} per pagina weergeven',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bekijken.',
-'searchmenu-legend' => 'Zoekopties',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''De pagina \"[[:\$1]]\" aanmaken op deze wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Paginanamen met dit voorvoegsel weergeven]]',
 'searchprofile-articles' => "Inhoudelijke pagina's",
 'searchprofile-project' => "Hulp- en projectpagina's",
 'searchprofile-images' => 'Multimedia',
@@ -1503,22 +1498,16 @@ Probeer een andere zoekopdracht.',
 'search-interwiki-default' => '$1 resultaten:',
 'search-interwiki-more' => '(meer)',
 'search-relatedarticle' => 'Gerelateerd',
-'mwsuggest-disable' => 'Zoeksuggesties uitschakelen',
 'searcheverything-enable' => 'In alle naamruimten zoeken',
 'searchrelated' => 'gerelateerd',
 'searchall' => 'alle',
 'showingresults' => "Hieronder {{PLURAL:$1|staat '''1''' resultaat|staan '''$1''' resultaten}} vanaf #'''$2'''.",
 'showingresultsnum' => "Hieronder {{PLURAL:$3|staat '''1''' resultaat|staan '''$3''' resultaten}} vanaf #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaat '''$1''' van '''$3'''|Resultaten '''$1 - $2''' van '''$3'''}} voor '''$4'''",
-'nonefound' => "'''Let op''': standaard worden niet alle naamruimten doorzocht.
-Als u in uw zoekopdracht als voorvoegsel \"''all:''\" gebruikt, worden alle pagina's doorzocht (inclusief overlegpagina's, sjablonen, enzovoort).
-U kunt ook een naamruimte als voorvoegsel gebruiken.",
 'search-nonefound' => 'Er zijn geen resultaten voor uw zoekopdracht.',
-'powersearch' => 'Uitgebreid zoeken',
 'powersearch-legend' => 'Uitgebreid zoeken',
 'powersearch-ns' => 'Zoeken in naamruimten:',
 'powersearch-redir' => 'Doorverwijzingen weergeven',
-'powersearch-field' => 'Zoeken naar',
 'powersearch-togglelabel' => 'Selecteren:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Geen',
@@ -1533,7 +1522,6 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 'mypreferences' => 'Voorkeuren',
 'prefs-edits' => 'Aantal bewerkingen:',
 'prefsnologintext2' => 'U moet $1 om voorkeuren in te stellen.',
-'changepassword' => 'Wachtwoord wijzigen',
 'prefs-skin' => 'Vormgeving',
 'skin-preview' => 'Voorvertoning',
 'datedefault' => 'Geen voorkeur',
@@ -1556,13 +1544,11 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 'prefs-email' => 'E-mail',
 'prefs-rendering' => 'Uiterlijk',
 'saveprefs' => 'Opslaan',
-'resetprefs' => 'Niet opgeslagen wijzigingen herstellen',
 'restoreprefs' => 'Voorkeuren herstellen (voor alle instellingen)',
 'prefs-editing' => 'Bewerken',
 'rows' => 'Regels:',
 'columns' => 'Kolommen:',
 'searchresultshead' => 'Zoekresultaten',
-'resultsperpage' => 'Resultaten per pagina:',
 'stub-threshold' => 'Drempel voor markering als <a href="#" class="stub">beginnetje</a>:',
 'stub-threshold-disabled' => 'Uitgeschakeld',
 'recentchangesdays' => 'Aantal dagen weer te geven in de recente wijzigingen:',
@@ -1577,7 +1563,6 @@ U kunt de [[Special:ResetTokens|tokens opnieuw instellen]] als u dat wilt.',
 'localtime' => 'Plaatselijke tijd:',
 'timezoneuseserverdefault' => 'Wikistandaard gebruiken ($1)',
 'timezoneuseoffset' => 'Anders (tijdverschil opgeven)',
-'timezoneoffset' => 'Tijdsverschil¹:',
 'servertime' => 'Servertijd:',
 'guesstimezone' => 'Vanuit de browser toevoegen',
 'timezoneregion-africa' => 'Afrika',
@@ -1650,6 +1635,7 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Verschillen',
 'prefs-help-prefershttps' => 'Deze voorkeur wordt toegepast bij de volgende keer aanmelden.',
+'prefs-tabs-navigation-hint' => 'Tip: U kunt de pijltjestoetsen naar links en naar rechts gebruiken om te navigeren tussen de tabbladen in de lijst.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Het e-mailadres lijkt geldig',
@@ -1836,14 +1822,14 @@ Als u deze opgeeft, kan deze naam gebruikt worden om u erkenning te geven voor u
 'recentchanges-label-bot' => 'Deze bewerking is uitgevoerd door een bot',
 'recentchanges-label-unpatrolled' => 'Deze bewerking is nog niet gecontroleerd',
 'recentchanges-label-plusminus' => 'Deze paginagrootte is met dit aantal bytes gewijzigd',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => "Zie ook de [[Special:NewPages|Lijst met nieuwe pagina's]].",
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Hieronder {{PLURAL:$1|staat de laatste bewerking|staan de laatste '''$1''' bewerkingen}} in de laatste {{PLURAL:$2|dag|'''$2''' dagen}}, op $4 om $5.",
 'rcnotefrom' => "Wijzigingen sinds '''$2''' (met een maximum van '''$1''' wijzigingen).",
 'rclistfrom' => 'Wijzigingen bekijken vanaf $1',
 'rcshowhideminor' => 'Kleine wijzigingen $1',
 'rcshowhidebots' => 'bots $1',
-'rcshowhideliu' => 'aangemelde gebruikers $1',
+'rcshowhideliu' => 'geregistreerde gebruikers $1',
 'rcshowhideanons' => 'anonieme gebruikers $1',
 'rcshowhidepatr' => 'gecontroleerde bewerkingen $1',
 'rcshowhidemine' => 'mijn bewerkingen $1',
@@ -1969,6 +1955,8 @@ Als u het bestand alsnog wilt uploaden, ga dan terug en kies een andere naam.
 'file-exists-duplicate' => 'Dit bestand is identiek aan {{PLURAL:$1|het volgende bestand|de volgende bestanden}}:',
 'file-deleted-duplicate' => 'Een bestand dat identiek is aan dit bestand ([[:$1]]) is voorheen verwijderd.
 Raadpleeg het verwijderingslogboek voordat u verder gaat.',
+'file-deleted-duplicate-notitle' => 'Er is een verwijderd bestand aangetroffen dat identiek is aan dit bestand, en de naam van het bestand is onderdrukt.
+Vraag iemand die onderdrukte bestandsgegevens kan bekijken om de situatie opnieuw te beoordelen voordat u het bestand opnieuw toevoegt.',
 'uploadwarning' => 'Uploadwaarschuwing',
 'uploadwarning-text' => 'Pas de onderstaande bestandsbeschrijving aan en probeer het daarna opnieuw.',
 'savefile' => 'Bestand opslaan',
@@ -2097,7 +2085,7 @@ De veiligheid kan niet worden gecontroleerd.',
 
 # img_auth script messages
 'img-auth-accessdenied' => 'Toegang geweigerd',
-'img-auth-nopathinfo' => 'PATH_INFO mist.
+'img-auth-nopathinfo' => 'PATH_INFO ontbreekt.
 Uw server is niet ingesteld om deze gegevens door te geven.
 Misschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.
 Zie https://www.mediawiki.org/wiki/Manual:Image_Authorization voor meer informatie.',
@@ -2320,6 +2308,7 @@ Meestal is de laatste pagina het eigenlijke doel, waar de eerste pagina naar zou
 'ninterwikis' => '$1 {{PLURAL:$1|interwikikoppeling|interwikikoppelingen}}',
 'nlinks' => '$1 {{PLURAL:$1|koppeling|koppelingen}}',
 'nmembers' => '$1 {{PLURAL:$1|item|items}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|lid|leden}}',
 'nrevisions' => '$1 {{PLURAL:$1|versie|versies}}',
 'nviews' => '{{PLURAL:$1|1 keer|$1 keer}} bekeken',
 'nimagelinks' => "Gebruikt op {{PLURAL:$1|één pagina|$1 pagina's}}",
@@ -2359,10 +2348,9 @@ De pagina's zijn ook niet als sjabloon opgenomen.",
 'protectedpages' => "Beveiligde pagina's",
 'protectedpages-indef' => 'Alleen blokkades zonder vervaldatum',
 'protectedpages-cascade' => 'Alleen beveiligingen met de cascade-optie',
-'protectedpagestext' => "De volgende pagina's zijn beveiligd en kunnen niet bewerkt of hernoemd worden",
+'protectedpages-noredirect' => 'Doorverwijzingen verbergen',
 'protectedpagesempty' => "Er zijn momenteel geen pagina's beveiligd die aan deze voorwaarden voldoen.",
 'protectedtitles' => 'Beveiligde paginanamen',
-'protectedtitlestext' => 'De volgende paginanamen zijn beveiligd en kunnen niet aangemaakt worden',
 'protectedtitlesempty' => 'Er zijn geen paginanamen beveiligd die aan deze voorwaarden voldoen.',
 'listusers' => 'Gebruikerslijst',
 'listusers-editsonly' => 'Alleen gebruikers met bewerkingen weergeven',
@@ -2416,9 +2404,6 @@ U kunt ook kiezen voor specifieke logboeken en filteren op gebruiker (hoofdlette
 'allpagesto' => "Pagina's bekijken tot:",
 'allarticles' => "Alle pagina's",
 'allinnamespace' => "Alle pagina's (naamruimte $1)",
-'allnotinnamespace' => "Alle pagina's (niet in naamruimte $1)",
-'allpagesprev' => 'Vorige',
-'allpagesnext' => 'Volgende',
 'allpagessubmit' => 'OK',
 'allpagesprefix' => "Pagina's bekijken die beginnen met:",
 'allpagesbadtitle' => 'De opgegeven paginanaam is ongeldig of had een intertaal- of interwikivoorvoegsel.
@@ -2644,6 +2629,7 @@ Het verwijderen van dit soort pagina's is met rechten beperkt om het per ongeluk
 'delete-warning-toobig' => 'Deze pagina heeft een lange bewerkingsgeschiedenis, meer dan $1 {{PLURAL:$1|versie|versies}}.
 Het verwijderen van deze pagina kan de werking van de database van {{SITENAME}} verstoren.
 Wees voorzichtig.',
+'deleting-backlinks-warning' => "'''Waarschuwing:''' andere pagina's verwijzen naar de pagina die u wilt verwijderen.",
 
 # Rollback
 'rollback' => 'Wijzigingen ongedaan maken',
@@ -2762,7 +2748,6 @@ Mogelijk hebt u een verkeerde koppeling of is de versie hersteld of verwijderd u
 'undeletebtn' => 'Terugplaatsen',
 'undeletelink' => 'bekijken/terugplaatsen',
 'undeleteviewlink' => 'bekijken',
-'undeletereset' => 'Formulier wissen',
 'undeleteinvert' => 'Selectie omkeren',
 'undeletecomment' => 'Reden:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|versie|versies}} teruggeplaatst',
@@ -2852,7 +2837,6 @@ De laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergege
 'block' => 'Gebruiker blokkeren',
 'unblock' => 'Gebruiker deblokkeren',
 'blockip' => 'Gebruiker blokkeren',
-'blockip-title' => 'Gebruiker blokkeren',
 'blockip-legend' => 'Gebruiker blokkeren',
 'blockiptext' => "Gebruik het onderstaande formulier om schrijftoegang voor een gebruiker of IP-adres in te trekken.
 Doe dit alleen als bescherming tegen vandalisme en in overeenstemming met het [[{{MediaWiki:Policy-url}}|beleid]].
@@ -2860,7 +2844,6 @@ Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
 'ipadressorusername' => 'IP-adres of gebruikersnaam:',
 'ipbexpiry' => 'Vervalt (maak een keuze):',
 'ipbreason' => 'Reden:',
-'ipbreasonotherlist' => 'Andere reden',
 'ipbreason-dropdown' => "*Veel voorkomende redenen voor blokkades
 ** Foutieve informatie invoeren
 ** Verwijderen van informatie uit pagina's
@@ -2876,8 +2859,6 @@ Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
 'ipbsubmit' => 'Deze gebruiker blokkeren',
 'ipbother' => 'Andere duur:',
 'ipboptions' => '2 uur:2 hours,1 dag:1 day,3 dagen:3 days,1 week:1 week,2 weken:2 weeks,1 maand:1 month,3 maanden:3 months,6 maanden:6 months,1 jaar:1 year,onbepaald:infinite',
-'ipbotheroption' => 'ander verval',
-'ipbotherreason' => 'Andere/extra reden:',
 'ipbhidename' => 'Gebruiker in bewerkingen en lijsten verbergen',
 'ipbwatchuser' => 'Gebruikerspagina en overlegpagina op volglijst plaatsen',
 'ipb-disableusertalk' => 'Voorkomen dat deze gebruiker tijdens de blokkade de eigen overlegpagina kan bewerken',
@@ -2889,6 +2870,7 @@ Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
 Zie de [[Special:BlockList|blokkadelijst]] voor recente blokkades.',
 'ipb-blockingself' => 'U staat op het punt uzelf te blokkeren. Weet u zeker dat u dat wilt doen?',
 'ipb-confirmhideuser' => 'U staat op het punt een verborgen gebruiker te blokkeren. Hiervoor worden gebruikersnamen in alle lijsten en logboekregels verborgen. Weet u het zeker?',
+'ipb-confirmaction' => 'Weet u zeker dat u dit wilt doen? Vink dank het vakje "{{int:ipb-confirm}}" hieronder aan.',
 'ipb-edit-dropdown' => 'Lijst van redenen bewerken',
 'ipb-unblock-addr' => '$1 deblokkeren',
 'ipb-unblock' => 'Een gebruiker of IP-adres deblokkeren',
@@ -2971,7 +2953,6 @@ Neem contact op met uw internetprovider of uw helpdesk en stel die op de hoogte
 'sorbs_create_account_reason' => 'Uw IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.
 U kunt geen gebruiker registreren.',
 'xffblockreason' => 'Een IP-adres dat u gebruikt is geblokkeerd. Dit staat de X-Forwarded-For van de header. De oorspronkelijke blokkadereden is: $1',
-'cant-block-while-blocked' => 'U kunt andere gebruikers niet blokkeren terwijl u zelf geblokkeerd bent.',
 'cant-see-hidden-user' => 'De gebruiker die u probeert te blokken is al geblokkeerd en verborgen.
 Omdat u het recht "hideuser" niet hebt, kunt u de blokkade van de gebruiker niet bekijken of bewerken.',
 'ipbblocked' => 'U kunt geen andere gebruikers (de)blokkeren, omdat u zelf geblokkeerd bent',
@@ -3031,7 +3012,6 @@ Zorg ervoor dat u die gevolgen overziet voordat u deze handeling uitvoert.",
 In die gevallen moet u de pagina handmatig hernoemen of samenvoegen.",
 'movearticle' => 'Te hernoemen pagina:',
 'moveuserpage-warning' => "'''Waarschuwing:''' u gaat een gebruikerspagina hernoemen. Houd er rekening mee dat alleen de pagina wordt hernoemd, ''niet'' de gebruiker.",
-'movenologin' => 'Niet aangemeld',
 'movenologintext' => 'U moet [[Special:UserLogin|aangemeld]] zijn om een pagina te hernoemen.',
 'movenotallowed' => "U hebt geen rechten om pagina's te hernoemen.",
 'movenotallowedfile' => 'U hebt geen rechten om bestanden te hernoemen.',
@@ -3047,9 +3027,6 @@ In die gevallen moet u de pagina handmatig hernoemen of samenvoegen.",
 'articleexists' => 'De pagina bestaat al of de paginanaam is ongeldig.
 Kies een andere paginanaam.',
 'cantmove-titleprotected' => 'U kunt geen pagina naar deze naam hernoemen, omdat deze naam beveiligd is tegen het aanmaken ervan.',
-'talkexists' => "'''De pagina is hernoemd, maar de overlegpagina kon niet hernoemd worden omdat er al een pagina met de nieuwe naam bestaat.
-Combineer de overlegpagina's handmatig.'''",
-'movedto' => 'hernoemd naar',
 'movetalk' => 'Bijbehorende overlegpagina hernoemen',
 'move-subpages' => "Subpagina's hernoemen (maximaal $1)",
 'move-talk-subpages' => "Subpagina's van overlegpagina's hernoemen (maximaal $1)",
@@ -3146,7 +3123,7 @@ $2',
 'thumbnail_invalid_params' => 'Onjuiste parameters voor miniatuurafbeelding',
 'thumbnail_dest_directory' => 'Niet in staat doelmap aan te maken',
 'thumbnail_image-type' => 'Dit bestandstype wordt niet ondersteund',
-'thumbnail_gd-library' => 'De instellingen voor de GD-bibliotheek zijn incompleet. De functie $1 mist',
+'thumbnail_gd-library' => 'De instellingen voor de GD-bibliotheek zijn incompleet. De functie $1 ontbreekt',
 'thumbnail_image-missing' => 'Het bestand lijkt niet aanwezig te zijn: $1',
 
 # Special:Import
@@ -3299,6 +3276,7 @@ U kunt wel de broncode bekijken.',
 'print.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de printuitvoer */',
 'noscript.css' => '/ * CSS die hier wordt geplaatst heeft invloed voor gebruikers die JavaScript hebben uitgeschakeld * /',
 'group-autoconfirmed.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op automatisch bevestigde gebruikers */',
+'group-user.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op geregistreerde gebruikers */',
 'group-bot.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op robots */',
 'group-sysop.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op beheerders */',
 'group-bureaucrat.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op bureaucraten */',
@@ -3310,6 +3288,7 @@ U kunt wel de broncode bekijken.',
 'modern.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Modern gebruiken */',
 'vector.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */',
 'group-autoconfirmed.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op automatisch bevestigde gebruikers */',
+'group-user.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op geregistreerde gebruikers */',
 'group-bot.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op robots */',
 'group-sysop.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op beheerders */',
 'group-bureaucrat.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op bureaucraten */',
@@ -3366,11 +3345,11 @@ Vul dit veld '''NIET''' in!",
 'pageinfo-firstuser' => 'Gebruiker die de pagina heeft aangemaakt',
 'pageinfo-firsttime' => 'Datum waarop de pagina is aangemaakt',
 'pageinfo-lastuser' => 'Laatste bewerker',
-'pageinfo-lasttime' => 'Datum van laatste bewerking',
-'pageinfo-edits' => 'Totaal aantal bewerkingen',
-'pageinfo-authors' => 'Totaal aantal verschillende auteurs',
-'pageinfo-recent-edits' => 'Recent aantal bewerkingen (binnen de afgelopen $1).',
-'pageinfo-recent-authors' => 'Recent aantal verschillende auteurs',
+'pageinfo-lasttime' => 'Laatste bewerking',
+'pageinfo-edits' => 'Aantal bewerkingen',
+'pageinfo-authors' => 'Auteurs totaal',
+'pageinfo-recent-edits' => 'Recente bewerkingen (binnen de afgelopen $1)',
+'pageinfo-recent-authors' => 'Recente auteurs',
 'pageinfo-magic-words' => '{{PLURAL:$1|Magisch woord|Magische woorden}} ($1)',
 'pageinfo-hidden-categories' => 'Verborgen {{PLURAL:$1|categorie|categorieën}} ($1)',
 'pageinfo-templates' => '{{PLURAL:$1|Gebruikt sjabloon|Gebruikte sjablonen}} ($1)',
@@ -3470,11 +3449,11 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 minuut|$1 minuten}}',
 'hours' => '{{PLURAL:$1|$1 uur|$1 uur}}',
 'days' => '{{PLURAL:$1|$1 dag|$1 dagen}}',
-'weeks' => '{{PLURAL: $1|één week|$1 weken}}',
+'weeks' => '{{PLURAL:$1|één week|$1 weken}}',
 'months' => '{{PLURAL:$1|één maand|$1 maanden}}',
 'years' => '{{PLURAL:$1|één jaar|$1 jaar}}',
 'ago' => '$1 geleden',
-'just-now' => 'Daarnet',
+'just-now' => 'Zojuist',
 
 # Human-readable timestamps
 'hours-ago' => '$1 {{PLURAL:$1|uur}} geleden',
@@ -3907,15 +3886,10 @@ Andere velden worden verborgen.
 'exif-urgency-high' => 'Hoog ($1)',
 'exif-urgency-other' => 'Door gebruiker gedefinieerde prioriteit ($1)',
 
-# External editor support
-'edit-externally' => 'Dit bestand in een extern programma bewerken',
-'edit-externally-help' => '(zie de [https://www.mediawiki.org/wiki/Manual:External_editors handleiding voor instellingen] voor meer informatie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alles',
 'namespacesall' => 'alle',
 'monthsall' => 'alle',
-'limitall' => 'alle',
 
 # Email address confirmation
 'confirmemail' => 'E-mailadres bevestigen',
@@ -3940,7 +3914,6 @@ Mogelijk is de code verlopen.',
 'confirmemail_success' => 'Uw e-mailadres is bevestigd.
 U kunt zich nu [[Special:UserLogin|aanmelden]] en de wiki gebruiken.',
 'confirmemail_loggedin' => 'Uw e-mailadres is nu bevestigd.',
-'confirmemail_error' => 'Er is iets verkeerd gegaan tijdens het opslaan van uw bevestiging.',
 'confirmemail_subject' => 'Bevestiging e-mailadres voor {{SITENAME}}',
 'confirmemail_body' => 'Iemand, waarschijnlijk u, met het IP-adres $1,
 heeft zich met dit e-mailadres geregistreerd als gebruiker "$2" op {{SITENAME}}.
@@ -4016,6 +3989,11 @@ Bevestig dat u de pagina opnieuw wilt aanmaken.',
 'imgmultigo' => 'OK',
 'imgmultigoto' => 'Ga naar pagina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standaard taal)',
+'img-lang-info' => 'Deze afbeeldingen renderen in de taal $1. $2',
+'img-lang-go' => 'OK',
+
 # Table pager
 'ascending_abbrev' => 'opl.',
 'descending_abbrev' => 'afl.',
@@ -4114,7 +4092,17 @@ U kunt ook [[Special:EditWatchlist|het standaard bewerkingsscherm gebruiken]].',
 'version-hook-name' => 'Hooknaam',
 'version-hook-subscribedby' => 'Geabonneerd door',
 'version-version' => '(Versie $1)',
-'version-license' => 'Licentie',
+'version-license' => 'Licentie voor MediaWiki',
+'version-ext-license' => 'Licentie',
+'version-ext-colheader-name' => 'Uitbreiding',
+'version-ext-colheader-version' => 'Versie',
+'version-ext-colheader-license' => 'Licentie',
+'version-ext-colheader-description' => 'Beschrijving',
+'version-ext-colheader-credits' => 'Auteurs',
+'version-license-title' => 'Licentie voor $1',
+'version-license-not-found' => 'Er zijn geen gedetaillieerde licentiegegevens aangetroffen voor deze uitbreiding.',
+'version-credits-title' => 'Vermeldingen voor $1',
+'version-credits-not-found' => 'Er zijn geen gedetailleerde meldingen aangetroffen voor deze uitbreiding.',
 'version-poweredby-credits' => "Deze wiki wordt aangedreven door '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'anderen',
 'version-poweredby-translators' => 'translatewiki.net-vertalers',
@@ -4134,13 +4122,14 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
 
 # Special:Redirect
-'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer of versienummer',
+'redirect' => 'Doorverwijzen op bestandsnaam, gebruikersnummer, paginanummer, of versienummer',
 'redirect-legend' => 'Doorverwijzen naar een bestand of pagina',
-'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Deze speciale pagina verwijst door naar een bestand (als een bestandsnaam wordt opgegeven), een pagina (als een paginanummer of versienummer wordt opgegeven) of een gebruikerspagina (als een gebruikersnummer wordt opgegeven). Gebruik: [[{{#Special:Redirect}}/file/Voorbeeld.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] of [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'OK',
 'redirect-lookup' => 'Opzoeken:',
 'redirect-value' => 'Waarde:',
 'redirect-user' => 'Gebruikersnummer',
+'redirect-page' => 'Pagina-ID',
 'redirect-revision' => 'Paginaversie',
 'redirect-file' => 'Bestandsnaam',
 'redirect-not-exists' => 'Waarde niet gevonden',
@@ -4207,7 +4196,6 @@ Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van
 
 # Special:ComparePages
 'comparepages' => "Pagina's vergelijken",
-'compare-selector' => 'Paginaversies vergelijken',
 'compare-page1' => 'Pagina 1',
 'compare-page2' => 'Pagina 2',
 'compare-rev1' => 'Versie 1',
@@ -4335,6 +4323,7 @@ Anders kunt u ook het eenvoudige formulier hieronder gebruiken. Uw reactie wordt
 'api-error-overwrite' => 'Het overschrijven van een bestand bestand is niet toegestaan.',
 'api-error-stashfailed' => 'Interne fout: de server kon het tijdelijke bestand niet opslaan.',
 'api-error-publishfailed' => 'Interne fout: de server kon het tijdelijke bestand niet publiceren.',
+'api-error-stasherror' => 'Er is een fout opgetreden tijdens het uploaden van het bestand naar de tijdelijke opslagruimte.',
 'api-error-timeout' => 'De server heeft niet binnen de verwachte tijd geantwoord.',
 'api-error-unclassified' => 'Er is een onbekende fout opgetreden',
 'api-error-unknown-code' => 'Interne fout: "$1"',
@@ -4384,10 +4373,12 @@ Vrijwel alle tekst tussen dubbele accolades wordt gesubstitueerd.',
 'expand_templates_input' => 'Invoertekst:',
 'expand_templates_output' => 'Resultaat',
 'expand_templates_xml_output' => 'XML-uitvoer',
+'expand_templates_html_output' => 'Ruwe HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Opmerkingen verwijderen',
 'expand_templates_remove_nowiki' => 'Tags <nowiki> in resultaat onderdrukken',
 'expand_templates_generate_xml' => 'XML-parserboom bekijken',
+'expand_templates_generate_rawhtml' => 'Ruwe HTML weergeven',
 'expand_templates_preview' => 'Voorvertoning',
 
 );
index f52c86b..ef11ac5 100644 (file)
@@ -7,6 +7,7 @@
  * @ingroup Language
  * @file
  *
+ * @author HanV
  * @author MarkvA
  * @author Siebrand
  * @author Tedjuh10
 $fallback = 'nl';
 
 $messages = array(
-'view-pool-error' => 'Sorry, de servers zijn op het moment overbelast.
+'view-pool-error' => 'De servers zijn op het moment helaas overbelast.
 Te veel gebruikers proberen deze pagina te bekijken.
-Wacht alstublieft even voordat je opnieuw toegang probeert te krijgen tot deze pagina.
+Wacht even voordat je opnieuw toegang probeert te krijgen tot deze pagina.
 
 $1',
 
 'badaccess-group0' => 'Je hebt geen rechten om de gevraagde handeling uit te voeren.',
 
 'youhavenewmessages' => 'Je hebt $1 ($2).',
+'youhavenewmessagesfromusers' => 'Je hebt $1 van {{PLURAL:$3|een andere gebruiker|$3 gebruikers}} ($2).',
+'youhavenewmessagesmanyusers' => 'Je hebt $1 van een groot aantal gebruikers ($2).',
 'youhavenewmessagesmulti' => 'Je hebt nieuwe berichten op $1',
 
 # Main script and global functions
 'nosuchactiontext' => 'De opdracht in de URL is ongeldig.
-Mogelijk heb je een typefout gemaakt in de URL of een onjuiste verwijzing gevolgd.
+Mogelijk heb je een typefout gemaakt in de URL of een onjuiste koppeling gevolgd.
 Het kan ook wijzen op een fout in de software van {{SITENAME}}.',
 'nospecialpagetext' => '<strong>Je hebt een onbestaande speciale pagina opgevraagd.</strong>
 
@@ -37,41 +40,48 @@ Een lijst met bestaande speciale pagina’s staat op [[Special:SpecialPages|spec
 # General errors
 'missing-article' => 'In de database is geen inhoud aangetroffen voor de pagina "$1" die er wel zou moeten zijn ($2).
 
-Dit kan voorkomen als je een verouderde verwijzing naar het verschil tussen twee versies van een pagina volgt of een versie opvraagt die is verwijderd.
+Dit kan voorkomen als je een verouderde koppeling naar het verschil tussen twee versies van een pagina volgt of een versie opvraagt die is verwijderd.
 
 Als dit niet het geval is, heb je wellicht een fout in de software gevonden.
-Maak hiervan melding bij een [[Special:ListUsers/sysop|systeembeheerder]] van {{SITENAME}} en vermeld daarbij de URL van deze pagina.',
+Maak hiervan melding bij een [[Special:ListUsers/sysop|beheerder]] van {{SITENAME}} en vermeld daarbij de URL van deze pagina.',
 'actionthrottledtext' => 'Als maatregel tegen spam is het aantal keren per tijdseenheid dat je deze handeling kunt verrichten beperkt.
 De limiet is overschreden.
 Probeer het over een aantal minuten opnieuw.',
 'viewsourcetext' => 'Je kunt de brontekst van deze pagina bekijken en kopiëren:',
-'editinginterface' => "'''Waarschuwing:''' Je bewerkt een pagina die gebruikt wordt door de software.
-Bewerkingen op deze pagina beïnvloeden de gebruikersinterface van iedereen.
-Overweeg voor vertalingen om [//translatewiki.net/wiki/Main_Page?setlang=nl translatewiki.net] te gebruiken, het vertalingsproject voor MediaWiki.",
+'viewyourtext' => "Je kunt '''uw bewerkingen''' aan de brontekst van deze pagina bekijken en kopiëren:",
+'editinginterface' => "'''Waarschuwing:''' je bewerkt een pagina die interfacetekst voor de software bevat.
+Bewerkingen op deze pagina beïnvloeden de gebruikersinterface van iedereen op deze wiki.
+Gebruik [//translatewiki.net/ translatewiki.net], het vertaalproject voor MediaWiki, om vertalingen toe te voegen of te wijzigen voor alle wiki's.",
 'namespaceprotected' => "Je hebt geen rechten om pagina's in de naamruimte '''$1''' te bewerken.",
+'customcssprotected' => 'Je kunt deze CSS-pagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
+'customjsprotected' => 'Je kunt deze JavaScriptpagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
+'exception-nologin-text' => 'Om deze pagina te bekijken of deze handeling uit te kunnen voeren moet je aangemeld zijn bij deze wiki.',
 
 # Login and logout pages
 'logouttext' => "'''Je bent nu afgemeld.'''
 
-Je kunt {{SITENAME}} nu anoniem gebruiken of weer [[Special:UserLogin|aanmelden]] als dezelfde of een andere gebruiker.
+Je 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 je aangemeld bent totdat je de cache van uw browser leegt.",
-'welcomecreation' => '== Welkom, $1! ==
-Je gebruiker is geregistreerd.
+'welcomecreation-msg' => 'Je gebruiker is aangemaakt.
 Vergeet niet je [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te passen.',
 'yourpasswordagain' => 'Geef je wachtwoord opnieuw in:',
 'yourdomainname' => 'Je domein:',
-'externaldberror' => 'Er is een fout opgetreden bij het aanmelden bij de database of je hebt geen toestemming uw externe gebruiker bij te werken.',
+'password-change-forbidden' => 'Je kunt je wachtwoord niet wijzigen in deze wiki.',
+'externaldberror' => 'Er is een fout opgetreden bij het aanmelden bij de database of je hebt geen toestemming je externe gebruiker bij te werken.',
 'loginprompt' => 'Je moet cookies ingeschakeld hebben om je te kunnen aanmelden bij {{SITENAME}}.',
 'gotaccount' => "Heb je al een gebruikersnaam? '''$1'''.",
-'nocookiesnew' => 'De gebruiker is geregistreerd, maar niet aangemeld.
+'userlogin-resetlink' => 'Ben je je aanmeldgegevens vergeten?',
+'nocookiesnew' => 'De gebruiker is geregistreerd, maar jij bent niet aangemeld.
 {{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.
 Schakel die in en meld daarna aan met je nieuwe gebruikersnaam en wachtwoord.',
 'nocookieslogin' => '{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.
 Cookies zijn uitgeschakeld in je browser.
 Schakel deze optie aan en probeer het opnieuw.',
+'nocookiesfornew' => 'De gebruiker is niet gemaakt omdat de bron niet bevestigd kon worden.
+Zorg ervoor dat je cookies hebt ingeschakeld, herlaad deze pagina en probeer het opnieuw.',
 'noname' => 'Je hebt geen geldige gebruikersnaam opgegeven.',
 'loginsuccess' => "'''Je bent nu aangemeld bij {{SITENAME}} als \"\$1\".'''",
-'nouserspecified' => 'Je dient een gebruikersnaam op te geven.',
+'nouserspecified' => 'Geef een gebruikersnaam op.',
 'password-name-match' => 'Je wachtwoord en uw gebruikersnaam mogen niet overeenkomen.',
 'passwordremindertext' => 'Iemand, waarschijnlijk jijzelf, heeft vanaf IP-adres $1 een verzoek
 gedaan tot het toezenden van een nieuw wachtwoord voor {{SITENAME}}
@@ -88,13 +98,13 @@ dan en blijf je bestaande wachtwoord gebruiken.',
 Meld je aan nadat je het hebt ontvangen.',
 'blocked-mailpassword' => 'Je IP-adres is geblokkeerd voor het maken van wijzigingen.
 Om misbruik te voorkomen is het niet mogelijk om een nieuw wachtwoord aan te vragen.',
-'eauthentsent' => 'Er is een bevestigingse-mail naar het opgegeven e-mailadres gezonden.
+'eauthentsent' => 'Er is ter bevestiging een e-mail naar het opgegeven e-mailadres gezonden.
 Volg de aanwijzingen in de e-mail om aan te geven dat het jouw e-mailadres is.
-Tot die tijd kunnen er geen e-mails naar het e-mailadres gezonden worden.',
-'acct_creation_throttle_hit' => 'Bezoekers van deze wiki met hetzelfde IP-adres als jij hebben de afgelopen dag {{PLURAL:$1|al 1 gebruiker|al $1 gebruikers}} geregistreerd, wat het maximale aantal in deze periode is.
-Daarom kun je als vanaf jouw IP-adres op dit moment geen nieuwe gebruiker registreren.',
+Tot die tijd worden er geen e-mails naar het e-mailadres gezonden.',
+'acct_creation_throttle_hit' => 'Bezoekers van deze wiki met hetzelfde IP-adres als jij hebben de afgelopen dag al $1 gebruiker{{PLURAL:$1||s}} geregistreerd, wat het maximale aantal in deze periode is.
+Daarom kan je vanaf je IP-adres op dit moment geen nieuwe gebruikers registreren.',
 'emailauthenticated' => 'Je e-mailadres is bevestigd op $2 om $3.',
-'emailnotauthenticated' => 'Je e-mailadres is <strong>niet bevestigd</strong>.
+'emailnotauthenticated' => 'Je e-mailadres is niet bevestigd.
 Je ontvangt geen e-mail voor de onderstaande functies.',
 'noemailprefs' => 'Geef een e-mailadres op in je voorkeuren om deze functies te gebruiken.',
 'emailconfirmlink' => 'Bevestig je e-mailadres',
@@ -105,17 +115,40 @@ Meld je aan en wijzig je wachtwoord.
 Negeer dit bericht als deze gebruiker zonder jouw medeweten is aangemaakt.',
 'login-throttled' => 'Je hebt recentelijk te vaak geprobeerd aan te melden met een onjuist wachtwoord.
 Wacht even voordat je het opnieuw probeert.',
+'login-abort-generic' => 'Je bent niet aangemeld. De procedure is afgebroken.',
 'suspicious-userlogout' => 'Je verzoek om af te melden is genegeerd, omdat het lijkt alsof het verzoek is verzonden door een browser of cacheproxy die stuk is.',
 
 # Change password dialog
 'resetpass_announce' => 'Je bent aangemeld met een tijdelijke code die je per e-mail is toegezonden.
 Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
-'resetpass_success' => 'Je wachtwoord is gewijzigd.
+'changepassword-success' => 'Je wachtwoord is gewijzigd.
 Bezig met aanmelden…',
-'resetpass-no-info' => 'Je dient aangemeld zijn voordat je deze pagina kunt gebruiken.',
+'resetpass-no-info' => 'Je moet aangemeld zijn voordat je deze pagina kunt gebruiken.',
 'resetpass-wrong-oldpass' => 'Het huidige of tijdelijke wachtwoord is ongeldig.
 Mogelijk heb je je wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aangevraagd.',
 
+# Special:PasswordReset
+'passwordreset-capture-help' => 'Als je dit vakje aanvinkt, wordt de e-mail (met het tijdelijke wachtwoord) naar de gebruiker verzonden en ook aan jou weergegeven.',
+'passwordreset-emailtext-ip' => 'Iemand, waarschijnlijk jij, heeft vanaf het IP-adres $1 je gebruikersgegevens voor {{SITENAME}} ($4) opgevraagd.
+De volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:
+
+$2
+
+{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}.
+Meld je aan en wijzig het wachtwoord nu. Als je dit verzoek niet zelf hebt gedaan, of als je het oorspronkelijke wachtwoord nog kent en het niet wilt wijzigen, negeer dit bericht dan en blijf je oude wachtwoord gebruiken.',
+'passwordreset-emailtext-user' => 'Gebruiker $1 op de site {{SITENAME}} heeft je gebruikersgegevens voor {{SITENAME}} ($4) opgevraagd.
+De volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:
+
+$2
+
+{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}.
+Meld je aan en wijzig het wachtwoord nu. Als je dit verzoek niet zelf hebt gedaan, of als je het oorspronkelijke wachtwoord nog kent en het niet wilt wijzigen, negeer dit bericht dan en blijf je oude wachtwoord gebruiken.',
+
+# Special:ChangeEmail
+'changeemail-text' => 'Vul dit formulier in om je e-mailadres te wijzigen. Je moet je wachtwoord invoeren om deze wijziging te bevestigen.',
+'changeemail-no-info' => 'Je moet aangemeld zijn om rechtstreeks toegang te hebben tot deze pagina.',
+'changeemail-password' => 'Jouw wachtwoord voor {{SITENAME}}:',
+
 # Edit page toolbar
 'sig_tip' => 'Je handtekening met datum en tijd',
 
@@ -124,11 +157,11 @@ Mogelijk heb je je wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aan
 Je IP-adres wordt opgeslagen als je wijzigingen op deze pagina maakt.",
 'anonpreviewwarning' => "''Je bent niet aangemeld.''
 ''Door je bewerking op te slaan wordt je IP-adres opgeslagen in de paginageschiedenis.''",
-'missingsummary' => "'''Herinnering:''' je hebt geen samenvatting opgegeven voor je bewerking.
+'missingsummary' => "'''Let op:''' je hebt geen samenvatting opgegeven voor je bewerking.
 Als je nogmaals op ''Pagina opslaan'' klikt wordt de bewerking zonder samenvatting opgeslagen.",
-'missingcommenttext' => 'Plaats je opmerking hieronder.',
-'missingcommentheader' => "'''Let op:''' Je hebt geen onderwerp/kop voor deze opmerking opgegeven.
-Als je opnieuw op \"{{int:savearticle}}\" klikt, wordt je wijziging zonder een onderwerp/kop opgeslagen.",
+'missingcommenttext' => 'Plaats je reactie hieronder.',
+'missingcommentheader' => "'''Let op:''' Je hebt geen onderwerp/kop voor deze reactie opgegeven.
+Als je opnieuw op \"{{int:savearticle}}\" klikt, wordt je wijziging zonder een onderwerp of koptekst opgeslagen.",
 'blockedtext' => '\'\'\'Je gebruiker of IP-adres is geblokkeerd.\'\'\'
 
 De blokkade is uitgevoerd door $1.
@@ -139,7 +172,7 @@ De opgegeven reden is \'\'$2\'\'.
 * Bedoeld te blokkeren: $7
 
 Je kunt contact opnemen met $1 of een andere [[{{MediaWiki:Grouppage-sysop}}|beheerder]] om de blokkade te bespreken.
-Je kunt geen gebruik maken van de functie "Deze gebruiker e-mailen", tenzij je een geldig e-mailadres hebt opgegeven in uw [[Special:Preferences|voorkeuren]] en het gebruik van deze functie niet geblokkeerd is.
+Je kunt geen gebruik maken van de functie "Deze gebruiker e-mailen", tenzij je een geldig e-mailadres hebt opgegeven in je [[Special:Preferences|voorkeuren]] en het gebruik van deze functie niet geblokkeerd is.
 Je huidige IP-adres is $3 en het blokkadenummer is #$5.
 Vermeld alle bovenstaande gegevens als je ergens op deze blokkade reageert.',
 'autoblockedtext' => 'Je IP-adres is automatisch geblokkeerd, omdat het is gebruikt door een andere gebruiker, die is geblokkeerd door $1.
@@ -159,14 +192,14 @@ Je huidige IP-adres is $3 en het blokkadenummer is #$5.
 Vermeld alle bovenstaande gegevens als je ergens op deze blokkade reageert.',
 'whitelistedittext' => "Je moet $1 om pagina's te bewerken.",
 'confirmedittext' => 'Je moet je e-mailadres bevestigen voor je kunt bewerken.
-Voer je e-mailadres in en bevestig het via [[Special:Preferences|je voorkeuren]].',
+Voer je e-mailadres in en bevestig het via je [[Special:Preferences|voorkeuren]].',
 'nosuchsectiontext' => 'Je probeerde een subkopje te bewerken dat niet bestaat.
 Wellicht is het verplaatst of verwijderd terwijl je de pagina aan het bekijken was.',
 'loginreqpagetext' => "Je moet je $1 om andere pagina's te kunnen bekijken.",
 'newarticletext' => "Deze pagina bestaat niet.
 Typ in het onderstaande veld om de pagina aan te maken (meer informatie staat op de [[{{MediaWiki:Helppage}}|hulppagina]]).
 Gebruik de knop '''vorige''' in je browser als je hier per ongeluk terecht bent gekomen.",
-'anontalkpagetext' => "----''Deze overlegpagina hoort bij een anonieme gebruiker die hetzij geen gebruikersnaam heeft, hetzij deze niet gebruikt.
+'anontalkpagetext' => "----''Deze overlegpagina hoort bij een anonieme gebruiker die geen gebruikersnaam heeft of deze niet gebruikt.
 Daarom wordt het IP-adres ter identificatie gebruikt.
 Het is mogelijk dat meerdere personen hetzelfde IP-adres gebruiken.
 Mogelijk ontvang je hier berichten die niet voor je bedoeld zijn.
@@ -175,23 +208,24 @@ Als je dat wilt voorkomen, [[Special:UserLogin/signup|registreer je]] of [[Speci
 Je kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken] of [{{fullurl:{{FULLPAGENAME}}|action=edit}} deze pagina bewerken]</span>.',
 'noarticletext-nopermission' => 'Deze pagina bevat geen tekst.
 Je kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s of
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>.',
-'userpage-userdoesnotexist' => 'Je bewerkt een gebruikerspagina van een gebruiker die niet bestaat (gebruiker "<nowiki>$1</nowiki>").
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>, maar je mag de pagina niet aanmaken.',
+'userpage-userdoesnotexist' => 'Je bewerkt een gebruikerspagina van een gebruiker die niet bestaat (gebruiker "$1").
 Controleer of je deze pagina wel wilt aanmaken/bewerken.',
 'clearyourcache' => "'''Let op!''' Nadat je de wijzigingen hebt opgeslagen is het wellicht nodig je browsercache te legen.
 * '''Firefox / Safari:''' houd ''Shift'' ingedrukt terwijl je op ''Vernieuwen'' klikt of druk op ''Ctrl-F5'' of ''Ctrl-R'' (''⌘-Shift-R'' op een Mac)
 * '''Google Chrome:''' druk op ''Ctrl-Shift-R'' (''⌘-Shift-R'' op een Mac)
 * '''Internet Explorer:''' houd ''Ctrl'' ingedrukt terwijl je op ''Vernieuwen'' klikt of druk op ''Ctrl-F5''
 * '''Opera:''' leeg je cache in ''Extra → Voorkeuren''",
-'usercssyoucanpreview' => "'''Tip:''' Gebruik de knop \"{{int:showpreview}}\" om je nieuwe CSS te testen alvorens op te slaan.",
-'userjsyoucanpreview' => "'''Tip:''' Gebruik de knop \"{{int:showpreview}}\" om je nieuwe JavaScript te testen alvorens op te slaan.",
+'usercssyoucanpreview' => "'''Tip:''' gebruik de knop \"{{int:showpreview}}\" om je nieuwe CSS te testen alvorens op te slaan.",
+'userjsyoucanpreview' => "'''Tip:''' gebruik de knop \"{{int:showpreview}}\" om je nieuwe JavaScript te testen alvorens op te slaan.",
 'usercsspreview' => "'''Dit is alleen een voorvertoning van je persoonlijke CSS.
 Deze is nog niet opgeslagen!'''",
 'userjspreview' => "'''Let op: je test nu je persoonlijke JavaScript.'''
 '''De pagina is niet opgeslagen!'''",
-'userinvalidcssjstitle' => "'''Waarschuwing:''' er is geen skin \"\$1\".
-Let op: je eigen .css- en .js-pagina's beginnen met een kleine letter, bijvoorbeeld {{ns:user}}:Naam/vector.css in plaats van {{ns:user}}:Naam/Vector.css.",
-'previewnote' => "'''Let op: dit is een controlepagina; je tekst is niet opgeslagen!'''",
+'userinvalidcssjstitle' => "'''Waarschuwing:''' er is geen uiterlijk \"\$1\".
+Je eigen .css- en .js-pagina's beginnen met een kleine letter, bijvoorbeeld {{ns:user}}:Naam/vector.css in plaats van {{ns:user}}:Naam/Vector.css.",
+'previewnote' => "'''Let op: dit is een controlepagina.'''
+Je tekst is niet opgeslagen!",
 'previewconflict' => 'Deze voorvertoning geeft aan hoe de tekst in het bovenste veld eruit ziet als je deze opslaat.',
 'session_fail_preview' => "'''Je bewerking is niet verwerkt, omdat de sessiegegevens verloren zijn gegaan.
 Probeer het opnieuw.
@@ -202,32 +236,32 @@ Als het dan nog niet lukt, [[Special:UserLogout|meld jezelf dan af]] en weer aan
 
 '''Als dit een legitieme bewerking is, probeer het dan opnieuw.
 Als het dan nog niet lukt, [[Special:UserLogout|meld jezelf dan af]] en weer aan.'''",
-'token_suffix_mismatch' => "'''Je bewerking is geweigerd, omdat je browser de leestekens in het bewerkingstoken onjuist heeft behandeld.
+'token_suffix_mismatch' => "'''Je bewerking is geweigerd, omdat je browser de leestekens in het bewerkingstoken onjuist heeft behandeld.'''
 De bewerking is geweigerd om verminking van de paginatekst te voorkomen.
-Dit gebeurt soms als er een webgebaseerde proxydienst wordt gebruikt die fouten bevat.'''",
+Dit gebeurt soms als er een webgebaseerde proxydienst wordt gebruikt die fouten bevat.",
+'edit_form_incomplete' => "'''Sommige onderdelen van het bewerkingsformulier hebben de server niet bereikt. Controleer of je bewerkingen intact zijn en probeer het opnieuw.'''",
 'explainconflict' => "Een andere gebruiker heeft deze pagina bewerkt sinds je met je bewerking bent begonnen.
 In het bovenste deel van het venster staat de tekst van de huidige pagina.
 Je bewerking staat in het onderste gedeelte.
 Je dient je bewerkingen in te voegen in de bestaande tekst.
 '''Alleen''' de tekst in het bovenste gedeelte wordt opgeslagen als je op \"{{int:savearticle}}\" klikt.",
 'yourtext' => 'Je tekst',
-'nonunicodebrowser' => "'''WAARSCHUWING: Je browser kan niet goed overweg met unicode.
-Hiermee wordt door de MediaWiki-software rekening gehouden zodat je toch zonder problemen pagina's kunt bewerken: niet-ASCII karakters worden in het bewerkingsveld weergegeven als hexadecimale codes.'''",
-'editingold' => "'''WAARSCHUWING!
-Je bewerkt een oude versie van deze pagina.
-Als je je bewerking opslaat, gaan alle wijzigingen die na deze versie gemaakt zijn verloren.'''",
-'copyrightwarning' => "Opgelet: alle bijdragen aan {{SITENAME}} worden geacht te zijn vrijgegeven onder de $2 (zie $1 voor details).
-Als je niet wilt dat je tekst door anderen naar believen bewerkt en verspreid kan worden, kies dan niet voor ‘Pagina opslaan’.<br />
+'nonunicodebrowser' => "'''Waarschuwing: je browser kan niet goed overweg met Unicode.'''
+Hiermee wordt door de MediaWiki-software rekening gehouden zodat je toch zonder problemen pagina's kunt bewerken: niet-ASCII tekens worden in het bewerkingsveld weergegeven als hexadecimale codes.",
+'editingold' => "'''Waarschuwing: je bewerkt een oude versie van deze pagina.'''
+Als je je bewerking opslaat, gaan alle wijzigingen verloren die na deze versie zijn gemaakt.",
+'copyrightwarning' => "Let op: alle bijdragen aan {{SITENAME}} worden geacht te zijn vrijgegeven onder de \$2 (zie \$1 voor details).
+Als je niet wilt dat je tekst door anderen naar believen bewerkt en verspreid kan worden, kies dan niet voor \"Pagina opslaan\".<br />
 Hierbij beloof je ons tevens dat je deze tekst zelf hebt geschreven of overgenomen uit een vrije, openbare bron.<br />
-'''GEBRUIK GEEN MATERIAAL DAT BESCHERMD WORDT DOOR AUTEURSRECHT, TENZIJ JE DAAR TOESTEMMING VOOR HEBT!'''",
+'''Gebruik geen materiaal dat beschermd wordt door auteursrecht, tenzij je daarvoor toestemming hebt!'''",
 'copyrightwarning2' => "Al je bijdragen aan {{SITENAME}} kunnen bewerkt, gewijzigd of verwijderd worden door andere gebruikers.
 Als je niet wilt dat je teksten rigoureus aangepast worden door anderen, plaats ze hier dan niet.<br />
 Je belooft ook dat je de oorspronkelijke auteur bent van dit materiaal of dat je het hebt gekopieerd uit een bron in het publieke domein of een soortgelijke vrije bron (zie $1 voor details).
-'''GEBRUIK GEEN MATERIAAL DAT BESCHERMD WORDT DOOR AUTEURSRECHT, TENZIJ JE DAARVOOR TOESTEMMING HEBT!'''",
-'longpageerror' => "'''FOUT: de tekst die je hebt toegevoegd is $1 kilobyte groot, wat groter is dan het maximum van $2 kilobyte.
-Opslaan is niet mogelijk.'''",
-'readonlywarning' => "'''WAARSCHUWING: De database is geblokkeerd voor bewerkingen, waarschijnlijk voor regulier databaseonderhoud, dus je kunt deze nu niet opslaan.
-Het is misschien verstandig om je tekst tijdelijk in een tekstbestand op te slaan om dit te bewaren voor wanneer de blokkering van de database opgeheven is.'''
+'''Gebruik geen materiaal dat beschermd wordt door auteursrecht, tenzij je daarvoor toestemming hebt!'''",
+'longpageerror' => "'''Fout: de tekst die je hebt toegevoegd is {{PLURAL:$1|één kilobyte|$1 kilobyte}} groot, wat groter is dan het maximum van {{PLURAL:$2|één kilobyte|$2 kilobyte}}.'''
+Opslaan is niet mogelijk.",
+'readonlywarning' => "'''Waarschuwing: je kunt deze bewerking nu niet opslaan omdat de database is geblokkeerd voor bewerkingen wegens onderhoudswerkzaamheden.'''
+Het is misschien verstandig om je tekst tijdelijk in een tekstbestand op te slaan om dit te bewaren voor wanneer de blokkering van de database opgeheven is.
 
 Een beheerder heeft de database geblokkeerd om de volgende reden: $1",
 'nocreatetext' => "{{SITENAME}} heeft de mogelijkheid om nieuwe pagina's te maken beperkt.
@@ -240,75 +274,66 @@ Je kunt reeds bestaande pagina's wijzigen of je kunt [[Special:UserLogin|jezelf
 Overweeg of het terecht is dat je verder werkt aan deze pagina.
 Voor je gemak staan hieronder het verwijderingslogboek en het hernoemingslogboek voor deze pagina:",
 'edit-no-change' => 'Je bewerking is genegeerd, omdat er geen wijziging aan de tekst is gemaakt.',
+'editwarning-warning' => 'Als je deze pagina verlaat verlies je mogelijk wijzigingen die je hebt gemaakt.
+Als je bent aangemeld, kan je deze waarschuwing uitschakelen in het tabblad "Bewerken" in je voorkeuren.',
 
 # Revision deletion
-'rev-deleted-text-unhide' => "Deze versie van de pagina is '''verwijderd'''.
-Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].
-Als beheerder kun je  [$1 deze versie bekijken] als je wil.",
+'rev-deleted-text-unhide' => "Deze paginaversie is '''verwijderd'''.
+Er kunnen details te vinden zijn in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].
+Als je wilt kan je [$1 deze versie bekijken].",
 'rev-suppressed-text-unhide' => "Deze paginaversie is '''onderdrukt'''.
-Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek onderdrukte versies].
-Als beheerder kun je [$1 de verschillen bekijken] als je wil.",
-'rev-deleted-text-view' => "Deze bewerking is '''verwijderd'''.
-Als beheerder kun je deze zien;
-er kunnen details aanwezig zijn in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
+Er kunnen details te vinden zijn in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek onderdrukte versies].
+Als je wilt kan je [$1 deze versie bekijken].",
+'rev-deleted-text-view' => "Deze paginaversie is '''verwijderd'''.
+Je kunt deze bekijken; er kunnen details te vinden zijn in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
 'rev-suppressed-text-view' => "Deze paginaversie is '''onderdrukt'''.
-Als beheerder kun je deze bekijken;
-achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek onderdrukte versies].",
+Je kunt deze bekijken; er kunnen details te vinden zijn in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} logboek onderdrukte versies].",
 'rev-deleted-no-diff' => "Je kunt de verschillen niet bekijken, omdat een van de versies is '''verwijderd'''.
 Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].",
 'rev-suppressed-no-diff' => "Je kunt de verschillen niet bekijken, omdat een van de versies is '''verwijderd'''.",
 'rev-deleted-unhide-diff' => "Een van de bewerkingen voor de verschillen die je hebt opgevraagd is '''verwijderd'''.
-Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].
-Als beheerder kun je [$1 de verschillen bekijken] als je wil.",
+Er kunnen details te vinden zijn in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].
+Als je wilt kan je [$1 de verschillen bekijken].",
 'rev-suppressed-unhide-diff' => "Een van de versies in deze verschillen is '''onderdrukt'''.
-Achtergronden zijn mogelijk te vinden in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek].
-Als beheerder kunt je [$1 deze versie bekijken] als je wil.",
-'rev-deleted-diff-view' => "Een van de versies voor de verschillen die je hebt opgevraagd, is '''verwijderd'''.
-Jij kunt deze verschillen bekijken. Mogelijk zijn details zichtbaar in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderlogboek].",
-'rev-suppressed-diff-view' => "Een van de bewerkingen voor de verschillen die je hebt opgevraagd, is '''onderdrukt'''.
-Als beheerder kun je deze verschillen bekijken. Mogelijk zijn details zichtbaar in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek].",
-'revdelete-nooldid-text' => 'Je hebt geen doelversie(s) voor deze handeling opgegeven, de aangegeven versie bestaat niet of je probeert de laatste versie te verbergen.',
-'revdelete-nologtype-text' => 'Je hebt geen logboektype opgegeven om deze handeling op uit te voeren.',
-'revdelete-nologid-text' => 'Je hebt ofwel geen doellogboekregel opgegeven of de aangegeven logboekregel bestaat niet.',
-'revdelete-show-file-confirm' => 'Weet je zeker dat u de verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wilt bekijken?',
+Er kunnen details te vinden zijn in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek].
+Als je wilt kan je [$1 deze versie bekijken].",
+'rev-deleted-diff-view' => 'Een van de versies van de verschillen die je hebt opgevraagd is verwijderd, 
+Je kunt deze verschillen bekijken. Mogelijk zijn details zichtbaar in het [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} verwijderingslogboek].',
+'rev-suppressed-diff-view' => "Een van de bewerkingen voor de verschillen die u hebt opgevraagd, is '''onderdrukt'''.
+Je kunt deze verschillen bekijken. Er kunnen details te vinden zijn in het [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} verbergingslogboek].",
+'revdelete-nooldid-text' => 'Je hebt geen doelversie(s) voor deze handeling opgegeven, de opgegeven versie bestaat niet of je probeert de laatste versie te verbergen.',
+'revdelete-show-file-confirm' => 'Weet je zeker dat je de verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wilt bekijken?',
 'revdelete-confirm' => 'Bevestig dat je dit wilde doen, dat je de consequenties begrijpt en dat je dit doet in overeenstemming met het geldende [[{{MediaWiki:Policy-url}}|beleid]].',
-'revdelete-show-no-access' => 'Er is een fout opgetreden bij het weergeven van het object van $1 om $2 uur: dit object is gemarkeerd als "beschermd".
+'revdelete-show-no-access' => 'Er is een fout opgetreden tijdens het weergeven van het object van $1 om $2: dit object is gemarkeerd als "beschermd".
 Je hebt geen toegang tot dit object.',
-'revdelete-modify-no-access' => 'Er is een fout opgetreden bij het wijzigen van het object van $1 om $2 uur: dit object is gemarkeerd als "beschermd".
+'revdelete-modify-no-access' => 'Er is een fout opgetreden tijdens het wijzigen van het object van $1 om $2: dit object is gemarkeerd als "beschermd".
 Je hebt geen toegang tot dit object.',
-'revdelete-only-restricted' => 'Er is een fout opgetreden bij het verbergen van het item van $1, $2: je kunt geen items onderdrukken uit het zicht van beheerders zonder ook een van de andere zichtbaarheidsopties te selecteren.',
+'revdelete-only-restricted' => 'Er is een fout opgetreden tijdens het verbergen van het item van $1, $2: je kunt geen items onderdrukken uit het zicht van beheerders zonder ook een van de andere zichtbaarheidsopties te selecteren.',
 
 # History merging
-'mergehistory-header' => 'Via deze pagina kun je versies van de geschiedenis van een bronpagina naar een nieuwere pagina samenvoegen.
-Zorg dat deze wijziging de geschiedenisdoorlopendheid van de pagina behoudt.',
+'mergehistory-header' => 'Via deze pagina kan je versies van de geschiedenis van een bronpagina naar een nieuwere pagina samenvoegen.
+Zorg dat deze wijziging de geschiedenis van de pagina behoudt.',
 
 # Search results
-'searchsubtitle' => 'Je zocht naar \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pagina\'s die beginnen met "$1"]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|pagina\'s die verwijzen naar "$1"]])',
-'searchsubtitleinvalid' => "Je hebt gezocht naar '''$1'''",
 'search-suggest' => 'Bedoelde je: $1',
-'nonefound' => "'''Opmerking''': standaard worden niet alle naamruimten doorzocht.
-Als je in uw zoekopdracht als voorvoegsel \"''all:''\" gebruikt worden alle pagina's doorzocht (inclusief overlegpagina's, sjablonen, enzovoort).
-Je kunt ook een naamruimte als voorvoegsel gebruiken.",
 'searchdisabled' => 'Zoeken in {{SITENAME}} is niet mogelijk.
 Je kunt gebruik maken van Google.
 De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
 
 # Preferences page
-'prefsnologintext' => 'Je moet <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} aangemeld]</span> zijn om je voorkeuren te kunnen instellen.',
-'prefs-help-watchlist-token' => 'Door hier een geheime sleutel in te vullen wordt een RSS-feed voor je volglijst aangemaakt.
-Iedereen die deze sleutel kent kan je volglijst lezen, dus kies een veilige sleutel.
-Hier volgt een willekeurig gegenereerde waarde die je kunt gebruiken: $1',
 'savedprefs' => 'Je voorkeuren zijn opgeslagen.',
 'prefs-reset-intro' => 'Gebruik deze functie om je voorkeuren te herstellen naar de standaardinstellingen.
 Deze handeling kan niet ongedaan gemaakt worden.',
-'youremail' => 'Je e-mailadres:',
+'youremail' => 'E-mailadres:',
+'prefs-help-variant' => "Jouw voorkeursvariant of -spelling om de inhoudspagina's van deze wiki in weer te geven.",
 'prefs-help-signature' => 'Reacties op de overlegpagina\'s worden meestal ondertekend met "<nowiki>~~~~</nowiki>".
 De tildes worden omgezet in je ondertekening en een datum en tijd van de bewerking.',
-'badsiglength' => 'Uw ondertekening is te lang.
-Deze moet minder dan $1 {{PLURAL:$1|karakters|karakters}} bevatten.',
-'prefs-help-realname' => 'Echte naam is optioneel, als je deze opgeeft kan deze naam gebruikt worden om je erkenning te geven voor uw werk.',
-'prefs-help-email' => 'E-mailadres is optioneel, maar maakt het mogelijk om je jouw wachtwoord te e-mailen als je het bent vergeten.
-Je kunt ook anderen in staat stellen per e-mail contact met je op te nemen via een verwijzing op je gebruikers- en overlegpagina zonder dat u uw identiteit prijsgeeft.',
+'badsiglength' => 'Je ondertekening is te lang.
+Deze moet minder dan $1 {{PLURAL:$1|teken|tekens}} bevatten.',
+'prefs-help-realname' => 'Echte naam is optioneel.
+Als je deze opgeeft, kan deze naam gebruikt worden om je erkenning te geven voor je werk.',
+'prefs-help-email' => 'E-mailadres is optioneel, maar maakt het mogelijk om jou je wachtwoord te e-mailen als je het bent vergeten.',
+'prefs-help-email-others' => 'Je kunt ook anderen in staat stellen per e-mail contact met je op te nemen via een koppeling op uw gebruikers- en overlegpagina zonder dat je je identiteit prijsgeeft.',
 
 # User rights
 'userrights-groups-help' => 'Je kunt de groepen wijzigen waar deze gebruiker lid van is.
@@ -316,20 +341,20 @@ Je kunt ook anderen in staat stellen per e-mail contact met je op te nemen via e
 * Een niet aangekruist vakje betekent dat de gebruiker geen lid is van de groep.
 * Een "*" betekent dat je een gebruiker niet uit een groep kunt verwijderen nadat je die hebt toegevoegd of vice versa.',
 'userrights-no-interwiki' => "Je hebt geen rechten om gebruikersrechten op andere wiki's te wijzigen.",
-'userrights-nologin' => 'Je moet jezelf [[Special:UserLogin|aanmelden]] met een gebruiker met de juiste rechten om gebruikersrechten toe te wijzen.',
-'userrights-notallowed' => 'Je hebt geen rechten om gebruikersrechten toe te wijzen.',
+'userrights-nologin' => 'Je moet [[Special:UserLogin|aangemeld]] zijn met een gebruiker met de juiste rechten om gebruikersrechten toe te wijzen.',
+'userrights-notallowed' => 'Je hebt geen rechten om gebruikersrechten toe te voegen of te verwijderen.',
 'userrights-changeable-col' => 'Groepen die je kunt beheren',
 'userrights-unchangeable-col' => 'Groepen die je niet kunt beheren',
 
 # Recent changes linked
-'recentchangeslinked-summary' => "Deze speciale pagina geeft de laatste bewerkingen weer op pagina's waarheen verwezen wordt vanaf een aangegeven pagina of vanuit pagina's in een aangegeven pagina een categorie.
-Pagina's die op [[Special:Watchlist|je volglijst]] staan worden '''vet''' weergegeven.",
+'recentchangeslinked-summary' => "Deze speciale pagina geeft de laatste bewerkingen weer op pagina's waarheen verwezen wordt vanaf een opgegeven pagina of op pagina's in een opgegeven categorie.
+Pagina's die op [[Special:Watchlist|uw volglijst]] staan worden '''vet''' weergegeven.",
 
 # Upload
 'uploadnologintext' => 'Je moet [[Special:UserLogin|aangemeld]] zijn om bestanden te uploaden.',
 'empty-file' => 'Het bestand dat je probeerde te uploaden had geen inhoud.',
 'file-too-large' => 'Het bestand dat je probeerde te uploaden was te groot.',
-'hookaborted' => 'De wijziging die je probeerde te maken is afgebroken door een uitbreidingshook.',
+'hookaborted' => 'De wijziging die je probeerde te maken is afgebroken door een uitbreiding.',
 'emptyfile' => 'Het bestand dat je hebt geüpload lijkt leeg te zijn.
 Dit zou kunnen komen door een typefout in de bestandsnaam.
 Ga na of je dit bestand werkelijk bedoelde te uploaden.',
@@ -337,8 +362,9 @@ Ga na of je dit bestand werkelijk bedoelde te uploaden.',
 Controleer <strong>[[:$1]]</strong> als je niet zeker weet of je het huidige bestand wilt overschrijven.
 [[$1|thumb]]',
 'filepageexists' => 'De beschrijvingspagina voor dit bestand bestaat al op <strong>[[:$1]]</strong>, maar er bestaat geen bestand met deze naam.
-De samenvatting die je hebt opgegeven zal niet op de beschrijvingspagina verschijnen.
-Bewerk de pagina handmatig om je beschrijving daar weer te geven. [[$1|miniatuur]]',
+De samenvatting die je hebt opgegeven verschijnt niet op de beschrijvingspagina.
+Bewerk de pagina handmatig om je beschrijving daar weer te geven.
+[[$1|miniatuur]]',
 'file-thumbnail-no' => "De bestandsnaam begint met <strong>$1</strong>.
 Het lijkt een verkleinde afbeelding te zijn ''(miniatuurafbeelding)''.
 Als je deze afbeelding in volledige resolutie hebt, upload die afbeelding dan.
@@ -346,7 +372,7 @@ Wijzig anders de bestandsnaam.",
 'fileexists-forbidden' => 'Er bestaat al een bestand met deze naam, en dat kan niet overschreven worden.
 Upload je bestand onder een andere naam.
 [[File:$1|thumb|center|$1]]',
-'fileexists-shared-forbidden' => 'Er bestaat al een bestand met deze naam bij de gedeelte bestanden.
+'fileexists-shared-forbidden' => 'Er bestaat al een bestand met deze naam bij de gedeelde bestanden.
 Als je het bestand alsnog wilt uploaden, ga dan terug en kies een andere naam.
 [[File:$1|thumb|center|$1]]',
 'file-deleted-duplicate' => 'Een bestand dat identiek is aan dit bestand ([[:$1]]) is voorheen verwijderd.
@@ -363,9 +389,12 @@ $1',
 'upload-warning-msg' => 'Er was een probleem met je upload van [$2].
 Ga terug naar het [[Special:Upload/stash/$1|uploadformulier]] om dit probleem te verhelpen.',
 
+# Special:UploadStash
+'uploadstash-badtoken' => 'Het uitvoeren van de handeling is mislukt. Dit komt mogelijk doordat je bewerkingsreferenties zijn verlopen. Probeer het opnieuw.',
+
 # img_auth script messages
 'img-auth-nopathinfo' => 'PATH_INFO mist.
-Je server is niet ingesteld om deze informatie door te geven.
+Je server is niet ingesteld om deze gegevens door te geven.
 Misschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.
 Zie https://www.mediawiki.org/wiki/Manual:Image_Authorization voor meer informatie.',
 'img-auth-nologinnWL' => 'Je bent niet aangemeld en "$1" staat niet op de witte lijst.',
@@ -380,7 +409,12 @@ Je kunt het misschien proberen als het minder druk is.',
 'upload_source_file' => '(een bestand op je computer)',
 
 # File description page
+'sharedupload-desc-edit' => 'Dit bestand komt van $1 en kan ook in andere projecten gebruikt worden.
+Je kunt de [$2 pagina met de bestandsbeschrijving] daar bewerken.',
+'sharedupload-desc-create' => 'Dit bestand komt van $1 en kan ook in andere projecten gebruikt worden.
+Je kunt de beschrijving bewerken op de [$2 pagina met de bestandsbeschrijving].',
 'filepage-nofile-link' => 'Er bestaat geen bestand met deze naam, maar je kunt het [$1 uploaden].',
+'upload-disallowed-here' => 'Je kunt dit bestand niet overschrijven.',
 
 # File reversion
 'filerevert-intro' => "Je bent '''[[Media:$1|$1]]''' aan het terugdraaien tot de [$4 versie op $2, $3].",
@@ -390,7 +424,7 @@ Je kunt het misschien proberen als het minder druk is.',
 'filedelete-intro-old' => "Je bent de versie van '''[[Media:$1|$1]]''' van [$4 $3, $2] aan het verwijderen.",
 
 # Miscellaneous special pages
-'notargettext' => 'Je hebt niet opgegeven voor welke pagina of gebruiker u deze handeling wilt uitvoeren.',
+'notargettext' => 'Je hebt niet opgegeven voor welke pagina of gebruiker je deze handeling wilt uitvoeren.',
 'nopagetext' => 'De pagina die je wilt hernoemen bestaat niet.',
 
 # Book sources
@@ -400,9 +434,13 @@ Je kunt het misschien proberen als het minder druk is.',
 'alllogstext' => 'Dit is het gecombineerde logboek van {{SITENAME}}.
 Je kunt ook kiezen voor specifieke logboeken en filteren op gebruiker (hoofdlettergevoelig) en paginanaam (hoofdlettergevoelig).',
 
-# E-mail user
+# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'Je bekijkt een cacheversie van deze pagina, die maximaal $1 oud is.',
+'cachedspecial-viewing-cached-ts' => 'Je bekijkt een cacheversie van deze pagina, die mogelijk niet volledig is bijgewerkt.',
+
+# Email user
 'mailnologintext' => 'Je moet [[Special:UserLogin|aangemeld]] zijn en een geldig e-mailadres in je [[Special:Preferences|voorkeuren]] vermelden om andere gebruikers te kunnen e-mailen.',
-'emailpagetext' => 'Via dit formulier kun je een e-mail aan deze gebruiker verzenden.
+'emailpagetext' => 'Via dit formulier kan je een e-mail aan {{GENDER:$1|deze gebruiker}} verzenden.
 Het e-mailadres dat je hebt opgegeven bij [[Special:Preferences|je voorkeuren]] wordt als afzender gebruikt.
 De ontvanger kan dus direct naar je reageren.',
 'usermaildisabledtext' => 'Je kunt geen e-mail verzenden naar andere gebruikers op deze wiki',
@@ -413,39 +451,42 @@ De ontvanger kan dus direct naar je reageren.',
 'nowatchlist' => 'Je volglijst is leeg.',
 'watchlistanontext' => 'Om je volglijst te bekijken of te bewerken moet je je $1.',
 'watchnologintext' => 'Je dient [[Special:UserLogin|aangemeld]] te zijn om je volglijst te bewerken.',
-'addedwatchtext' => "De pagina \"[[:\$1]]\" is toegevoegd aan je [[Special:Watchlist|volglijst]].
-Toekomstige bewerkingen van deze pagina en de bijbehorende overlegpagina worden op [[Special:Watchlist|je volglijst]] vermeld en worden '''vet''' weergegeven in de [[Special:RecentChanges|lijst van recente wijzigingen]].",
+'addedwatchtext' => 'De pagina "[[:$1]]" is toegevoegd aan je [[Special:Watchlist|volglijst]].
+Toekomstige bewerkingen van deze pagina en de bijbehorende overlegpagina worden op daar weergegeven.',
 'removedwatchtext' => 'De pagina "[[:$1]]" is van [[Special:Watchlist|je volglijst]] verwijderd.',
-'watchnochange' => "Geen van de pagina's op je volglijst is in deze periode bewerkt.",
 'watchlist-details' => "Er {{PLURAL:$1|staat één pagina|staan $1 pagina's}} op je volglijst, exclusief overlegpagina's.",
-'wlheader-showupdated' => "Pagina's die zijn bewerkt sinds je laatste bezoek worden '''vet''' weergegeven.",
-'watchlistcontains' => "Er {{PLURAL:$1|staat 1 pagina|staan $1 pagina's}} op je volglijst.",
+'wlheader-showupdated' => "Pagina's die zijn bewerkt sinds je laatste bezoek worden '''vet''' weergegeven",
+'watchlistcontains' => "Er {{PLURAL:$1|staat één pagina|staan $1 pagina's}} op je volglijst.",
 
-'enotif_lastvisited' => 'Zie $1 voor alle wijzigingen sinds je laatste bezoek.',
-'enotif_body' => 'Beste $WATCHINGUSERNAME,
+# Displayed when you click the "watch" button and it is in the process of watching
+'watcherrortext' => 'Er is een fout opgetreden tijdens het wijzigen van je volglijstinstellingen voor "$1".',
 
-De pagina $PAGETITLE op {{SITENAME}} is $CHANGEDORCREATED op $PAGEEDITDATE door $PAGEEDITOR, zie $PAGETITLE_URL voor de huidige versie.
+'enotif_lastvisited' => 'Zie $1 voor alle wijzigingen sinds je laatste bezoek.',
+'enotif_body' => 'Hoi $WATCHINGUSERNAME,
 
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Samenvatting van de wijziging: $PAGESUMMARY $PAGEMINOREDIT
 
 Contactgegevens van de auteur:
-E-mail: $PAGEEDITOR_EMAIL
+E-mailadres: $PAGEEDITOR_EMAIL
 Wiki: $PAGEEDITOR_WIKI
 
-Tenzij je deze pagina bezoekt, komen er geen verdere berichten. Op je volglijst kun je voor alle gevolgde pagina\'s de waarschuwingsinstellingen opschonen.
+Tenzij je deze pagina bezoekt, komen er geen verdere berichten. Op je volglijst kan je voor alle gevolgde pagina\'s de waarschuwingsinstellingen opschonen.
 
-             Groet van je {{SITENAME}} waarschuwingssysteem.
+Groet van je {{SITENAME}}-waarschuwingssysteem.
 
 --
+Je kunt je e-mailinstellingen wijzigen op:
+{{canonicalurl:{{#special:Preferences}}}}
+
 Je kunt je volglijstinstellingen wijzigen op:
 {{canonicalurl:Special:Watchlist/edit}}
 
-Je kunt de pagina van uw volglijst verwijderen via de volgende verwijzing:
+Je kunt de pagina van je volglijst verwijderen via de volgende koppeling:
 $UNWATCHURL
 
-Feedback en andere assistentie:
+Terugkoppeling en verdere assistentie:
 {{canonicalurl:{{MediaWiki:Helppage}}}}',
 
 # Delete
@@ -470,50 +511,62 @@ Dit zijn de huidige instellingen voor de pagina '''$1''':",
 'undeletehistory' => 'Als je een pagina terugplaatst, worden alle versies hersteld.
 Als er al een nieuwe pagina met dezelfde naam is aangemaakt sinds de pagina is verwijderd, worden de eerder verwijderde versies teruggeplaatst en blijft de huidige versie intact.',
 'undeleterevision-missing' => 'Ongeldige of missende versie.
-Mogelijk heb je een verkeerde verwijzing of is de versie hersteld of verwijderd uit het archief.',
-'undelete-show-file-confirm' => 'Weet je zeker dat je een verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wil bekijken?',
+Mogelijk heb je een verkeerde koppeling of is de versie hersteld of verwijderd uit het archief.',
+'undelete-show-file-confirm' => 'Weet je zeker dat je een verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wilt bekijken?',
 
 # Block/unblock
+'ipb-blockingself' => 'Je staat op het punt jezelf te blokkeren. Weet je zeker dat je dat wilt doen?',
+'ipb-confirmhideuser' => 'Je staat op het punt een verborgen gebruiker te blokkeren. Hiervoor worden gebruikersnamen in alle lijsten en logboekregels verborgen. Weet je het zeker?',
 'ipb-needreblock' => '$1 is al geblokkeerd.
 Wil je de instellingen wijzigen?',
+'unblock-hideuser' => 'Je kunt deze gebruiker niet deblokkeren, omdat de gebruikersnaam verborgen is.',
 'proxyblockreason' => 'Dit is een automatische preventieve blokkade, omdat je gebruik maakt van een open proxyserver.
-Neem contact op met je Internet-provider of je helpdesk en stel die op de hoogte van dit ernstige beveiligingsprobleem.',
+Neem contact op met je internetprovider of je helpdesk en stel die op de hoogte van dit ernstige beveiligingsprobleem.',
 'sorbsreason' => 'Je IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.',
 'sorbs_create_account_reason' => 'Je IP-adres staat bekend als open proxyserver in de DNS-blacklist die {{SITENAME}} gebruikt.
 Je kunt geen gebruiker registreren.',
 'cant-block-while-blocked' => 'Je kunt andere gebruikers niet blokkeren terwijl je zelf geblokkeerd bent.',
-'cant-see-hidden-user' => "De gebruiker die je probeert te blokken is al geblokkeerd en verborgen.
-Omdat je het recht 'hideuser' niet hebt, kun je de blokkade van de gebruiker niet bekijken of bewerken.",
+'cant-see-hidden-user' => 'De gebruiker die je probeert te blokken is al geblokkeerd en verborgen.
+Omdat je het recht "hideuser" niet hebt, kun je de blokkade van de gebruiker niet bekijken of bewerken.',
 'ipbblocked' => 'Je kunt geen andere gebruikers (de)blokkeren, omdat je zelf geblokkeerd bent',
 'ipbnounblockself' => 'Je mag jezelf niet deblokkeren',
 
 # Developer tools
 'lockdbtext' => "Waarschuwing: de database blokkeren heeft tot gevolg dat geen enkele gebruiker meer in staat is pagina's te bewerken, voorkeuren te wijzigen of iets anders te doen waarvoor wijzigingen in de database nodig zijn.
-
 Bevestig dat je deze handeling wilt uitvoeren en dat je de database vrijgeeft nadat het onderhoud is uitgevoerd.",
 'unlockdbtext' => "Na het vrijgeven van de database kunnen gebruikers weer pagina's bewerken, hun voorkeuren wijzigen of iets anders te doen waarvoor er wijzigingen in de database nodig zijn.
-
 Bevestig dat je deze handeling wil uitvoeren.",
 'locknoconfirm' => 'Je hebt je keuze niet bevestigd via het vinkvakje.',
 'lockdbsuccesstext' => 'De database is afgesloten.<br />
 Vergeet niet de [[Special:UnlockDB|database vrij te geven]] zodra je klaar bent met je onderhoud.',
 
 # Move page
-'movepagetext' => "Door middel van het onderstaande formulier kun je een pagina hernoemen.
+'movepagetext' => "Door middel van het onderstaande formulier kan je een pagina hernoemen.
 De geschiedenis gaat mee naar de nieuwe pagina.
 * De oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.
-* Verwijzingen naar de oude pagina worden niet aangepast.
+* Koppelingen naar de oude pagina worden niet aangepast.
 * De pagina's die doorverwijzen naar de oorspronkelijke paginanaam worden automatisch bijgewerkt.
-Als je dit niet wenst, controleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.
+Als je dit niet wilt, controleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.
 
 Een pagina kan '''alleen''' hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.
 
-'''WAARSCHUWING!'''
+'''Waarschuwing!'''
 Voor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.
 Zorg ervoor dat je die gevolgen overziet voordat je deze handeling uitvoert.",
+'movepagetext-noredirectfixer' => "Door middel van het onderstaande formulier kunt u een pagina en alle bijbehorende oude versies hernoemen.
+De oude naam wordt automatisch een doorverwijzing naar de nieuwe pagina.
+Controleer dan of er geen [[Special:DoubleRedirects|dubbele]] of [[Special:BrokenRedirects|onjuiste doorverwijzingen]] zijn ontstaan.
+
+Een pagina kan '''alleen''' hernoemd worden als de nieuwe paginanaam niet bestaat of een doorverwijspagina zonder verdere geschiedenis is.
+Je kunt dus een pagina die per ongeluk is hernoemd terug hernoemen en je kunt een bestaande pagina niet overschrijven. 
+
+'''Waarschuwing:''' voor veel bekeken pagina's kan het hernoemen drastische en onvoorziene gevolgen hebben.
+Zorg ervoor dat je die gevolgen overziet voordat je deze handeling uitvoert.",
 'movepagetalktext' => "De bijbehorende overlegpagina krijgt automatisch een andere naam, '''tenzij''':
 * De overlegpagina onder de nieuwe naam al bestaat;
-* Je het onderstaande vinkje deselecteert.",
+* Je het onderstaande vinkje deselecteert.
+
+In die gevallen moet je de pagina handmatig hernoemen of samenvoegen.",
 'moveuserpage-warning' => "'''Waarschuwing:''' Je gaat een gebruikerspagina hernoemen.
 Houd er rekening mee dat alleen de pagina wordt hernoemd, ''niet'' de gebruiker.",
 'movenologintext' => 'Je moet [[Special:UserLogin|aangemeld]] zijn om een pagina te hernoemen.',
@@ -521,7 +574,7 @@ Houd er rekening mee dat alleen de pagina wordt hernoemd, ''niet'' de gebruiker.
 'movenotallowedfile' => 'Je hebt geen rechten om bestanden te hernoemen.',
 'cant-move-user-page' => "Je hebt geen rechten om gebruikerspagina's te hernoemen (met uitzondering van subpagina's).",
 'cant-move-to-user-page' => 'Je hebt geen rechten om een pagina naar een gebruikerspagina te hernoemen. Hernoemen naar een subpagina is wel mogelijk.',
-'cantmove-titleprotected' => 'Je kunt geen pagina naar deze paginaam hernoemen, omdat deze paginanaam beveiligd is tegen het aanmaken ervan.',
+'cantmove-titleprotected' => 'Je kunt geen pagina naar deze naam hernoemen, omdat deze naam beveiligd is tegen het aanmaken ervan.',
 'delete_and_move_text' => '==Verwijdering nodig==
 Onder de naam "[[:$1]]" bestaat al een pagina.
 Wil je deze verwijderen om plaats te maken voor de te hernoemen pagina?',
@@ -532,14 +585,17 @@ Dit exportbestand is daarna te importeren in een andere MediaWiki via de [[Speci
 
 Geef in het onderstaande veld de namen van de te exporteren pagina\'s op, één pagina per regel, en geef aan of je alle versies met de bewerkingssamenvatting of alleen de huidige versies met de bewerkingssamenvatting wilt exporteren.
 
-In het laatste geval kun je ook een verwijzing gebruiken, bijvoorbeeld [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] voor de pagina "[[{{MediaWiki:Mainpage}}]]".',
+In het laatste geval kan je ook een koppeling gebruiken, bijvoorbeeld [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] voor de pagina "[[{{MediaWiki:Mainpage}}]]".',
 
 # Namespace 8 related
 'allmessagestext' => 'Hieronder staan de systeemberichten uit de MediaWiki-naamruimte.
-Ga naar [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] als je wilt bijdragen aan de algemene vertaling voor MediaWiki.',
+Ga naar [https://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] als je wilt bijdragen aan de algemene vertaling voor MediaWiki.',
 
 # Special:Import
-'importtext' => 'Gebruik de [[Special:Export|exportfunctie]] in de wiki waar de informatie vandaan komt, sla de uitvoer op je eigen systeem op, en voeg die daarna hier toe.',
+'importtext' => 'Gebruik de [[Special:Export|exportfunctie]] in de wiki waar de informatie vandaan komt.
+Sla de uitvoer op je eigen computer op, en voeg die daarna hier toe.',
+'import-error-edit' => 'De pagina "$1" is niet geïmporteerd omdat je niet de rechten hebt om die te bewerken.',
+'import-error-create' => 'De pagina "$1" is niet geïmporteerd omdat je niet de rechten hebt om die aan te maken.',
 
 # Tooltip help for the actions
 'tooltip-pt-userpage' => 'Jouw gebruikerspagina',
@@ -555,6 +611,7 @@ Gebruik de voorbeeldweergaveknop alvorens te bewaren.',
 Je kunt wel de broncode bekijken.',
 'tooltip-ca-nstab-special' => 'Dit is een speciale pagina, je kunt de pagina zelf niet bewerken',
 'tooltip-save' => 'Je wijzigingen opslaan',
+'tooltip-preview' => 'Een voorvertoning maken. Gebruik dit voordat je opslaat!',
 'tooltip-watch' => 'Deze pagina aan je volglijst toevoegen',
 
 # Metadata
@@ -562,7 +619,7 @@ Je kunt wel de broncode bekijken.',
 
 # Spam protection
 'spamprotectiontext' => 'De pagina die je wilde opslaan is geblokkeerd door het spamfilter.
-Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
+Meestal wordt dit door een externe koppeling op een zwarte lijst veroorzaakt.',
 
 # Patrolling
 'markedaspatrollederror-noautopatrol' => 'Je kunt je eigen wijzigingen niet als gecontroleerd markeren.',
@@ -570,12 +627,12 @@ Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
 # Media information
 'mediawarning' => "'''Waarschuwing''': dit bestandstype bevat mogelijk programmacode die je systeem schade kan berokkenen.",
 
-# E-mail address confirmation
-'confirmemail_noemail' => 'Je hebt geen geldig e-mailadres ingegeven in je [[Special:Preferences|gebruikersvoorkeuren]].',
+# Email address confirmation
+'confirmemail_noemail' => 'Je hebt geen geldig e-mailadres opgegeven in je [[Special:Preferences|gebruikersvoorkeuren]].',
 'confirmemail_text' => '{{SITENAME}} eist bevestiging van je e-mailadres voordat je de e-mailmogelijkheden kunt gebruiken.
 Klik op de onderstaande knop om een bevestigingsbericht te ontvangen.
-Dit bericht bevat een verwijzing met een code.
-Open die verwijzing om je e-mailadres te bevestigen.',
+Dit bericht bevat een koppeling met een code.
+Open die koppeling om je e-mailadres te bevestigen.',
 'confirmemail_pending' => 'Er is al een bevestigingsbericht aan je verzonden.
 Als je recentelijk je gebruiker hebt aangemaakt, wacht dan een paar minuten totdat die aankomt voordat je opnieuw een e-mail laat sturen.',
 'confirmemail_oncreate' => 'Er is een bevestigingscode naar je e-mailadres verzonden.
@@ -592,11 +649,11 @@ Je kunt jezelf nu [[Special:UserLogin|aanmelden]] en {{SITENAME}} gebruiken.',
 'confirmemail_body' => 'Iemand, waarschijnlijk jijzelf, met het IP-adres $1,
 heeft zich met dit e-mailadres geregistreerd als gebruiker "$2" op {{SITENAME}}.
 
-Open de volgende verwijzing in je webbrowser om te bevestigen dat je deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} te activeren:
+Open de volgende koppeling in je webbrowser om te bevestigen dat je deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} te activeren:
 
 $3
 
-Als je jezelf *niet* hebt aangemeld, volg dan de volgende verwijzing om de bevestiging van je e-mailadres te annuleren:
+Als je jezelf *niet* hebt aangemeld, volg dan de volgende koppeling om de bevestiging van je e-mailadres te annuleren:
 
 $5
 
@@ -604,11 +661,23 @@ De bevestigingscode vervalt op $4.',
 'confirmemail_body_changed' => 'Iemand, waarschijnlijk jijzelf, met het IP-adres $1,
 heeft het het e-mailadres geregistreerd voor gebruiker "$2" op {{SITENAME}} gewijzigd naar dit e-mailadres.
 
-Open de volgende verwijzing in je webbrowser om te bevestigen dat je deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} opnieuw te activeren:
+Open de volgende koppeling in je webbrowser om te bevestigen dat je deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} opnieuw te activeren:
+
+$3
+
+Als je jezelf *niet* hebt aangemeld, volg dan de volgende koppeling om de bevestiging van je e-mailadres te annuleren:
+
+$5
+
+De bevestigingscode vervalt op $4.',
+'confirmemail_body_set' => 'Iemand, waarschijnlijk jij, met het IP-adres $1,
+heeft het het e-mailadres voor gebruiker "$2" op {{SITENAME}} ingesteld op dit e-mailadres.
+
+Open de volgende koppeling in je webbrowser om te bevestigen dat jij deze gebruiker bent en om de e-mailmogelijkheden op {{SITENAME}} opnieuw te activeren:
 
 $3
 
-Als je jezelf *niet* hebt aangemeld, volg dan de volgende verwijzing om de bevestiging van je e-mailadres te annuleren:
+Als jij deze wijziging *niet* hebt gemaakt, volg dan de volgende koppeling om de bevestiging van uw e-mailadres te annuleren:
 
 $5
 
@@ -619,6 +688,12 @@ De bevestigingscode vervalt op $4.',
 'confirmrecreate' => "Nadat je begonnen bent met je wijziging heeft [[User:$1|$1]] ([[User talk:$1|overleg]]) deze pagina verwijderd met opgave van de volgende reden:
 : ''$2''
 Bevestig dat je de pagina opnieuw wilt aanmaken.",
+'confirmrecreate-noreason' => 'Nadat je begonnen bent met je wijziging heeft [[User:$1|$1]] ([[User talk:$1|overleg]]) deze pagina verwijderd.
+Bevestig dat je de pagina opnieuw wilt aanmaken.',
+
+# action=watch/unwatch
+'confirm-watch-top' => 'Deze pagina toevoegen aan je volglijst?',
+'confirm-unwatch-top' => 'Deze pagina verwijderen uit je volglijst?',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Je volglijst bevat {{PLURAL:$1|1 pagina|$1 pagina’s}}, zonder overlegpagina’s.',
@@ -626,13 +701,13 @@ Bevestig dat je de pagina opnieuw wilt aanmaken.",
 'watchlistedit-normal-explain' => 'Hieronder worden de pagina’s op je volglijst weergegeven.
 Klik op het vierkantje ernaast en daarna op "{{int:Watchlistedit-normal-submit}}" om een pagina te verwijderen.
 Je kunt ook de [[Special:EditWatchlist/raw|ruwe lijst bewerken]].',
-'watchlistedit-normal-done' => 'Er {{PLURAL:$1|is 1 pagina|zijn $1 pagina’s}} verwijderd van je volglijst:',
+'watchlistedit-normal-done' => 'Er {{PLURAL:$1|is één pagina|zijn $1 pagina’s}} verwijderd van je volglijst:',
 'watchlistedit-raw-explain' => 'Hieronder staan pagina’s op je volglijst.
 Je kunt de lijst bewerken door pagina’s te verwijderen en toe te voegen.
 Eén pagina per regel.
 Als je klaar bent, klik dan op "{{int:Watchlistedit-raw-submit}}".
 Je kunt ook [[Special:EditWatchlist|het standaard bewerkingsscherm gebruiken]].',
-'watchlistedit-raw-done' => 'Jr volglijst is bijgewerkt.',
+'watchlistedit-raw-done' => 'Je volglijst is bijgewerkt.',
 
 # Special:Version
 'version-license-info' => 'MediaWiki is vrije software; je kunt MediaWiki verspreiden en/of aanpassen onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation; ofwel versie 2 van de Licentie, of - zo je wilt - enige latere versie.
@@ -641,10 +716,29 @@ MediaWiki wordt verspreid in de hoop dat het nuttig is, maar ZONDER ENIGE GARANT
 
 Samen met dit programma hoor je een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te hebben ontvangen; zo niet, schrijf dan naar de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lees de licentie online].',
 
+# Special:ComparePages
+'compare-title-not-exists' => 'De titel die je hebt opgegeven bestaat niet.',
+'compare-revision-not-exists' => 'De versie die je hebt opgegeven bestaat niet.',
+
 # Database error messages
 'dberr-usegoogle' => 'Wellicht kun je in de tussentijd zoeken via Google.',
 
 # HTML forms
 'htmlform-float-invalid' => 'De waarde die je hebt opgegeven is geen getal.',
 
+# Feedback
+'feedback-bugornote' => 'Als je zover bent om een technisch probleem in detail te beschrijven, [$1 rapporteer dan een bug].
+Anders kan je ook het eenvoudige formulier hieronder gebruiken.
+Je reactie wordt dan toegevoegd aan de pagina "[$3 $2]", samen met je gebruikersnaam en de browser die je gebruikt.',
+'feedback-thanks' => 'Bedankt! Je terugkoppeling is op de pagina "[$2 $1]" geplaatst.',
+
+# API errors
+'api-error-badaccess-groups' => 'Je mag geen bestanden uploaden in deze wiki.',
+'api-error-empty-file' => 'Het bestand dat je hebt geüpload is leeg.',
+'api-error-file-too-large' => 'Het bestand dat je hebt geüpload is te groot.',
+'api-error-hookaborted' => 'De wijziging die je probeert te maken is afgebroken door een uitbreiding.',
+'api-error-internal-error' => 'Interne fout: er is iets misgegaan tijdens het verwerken van je upload door de wiki.',
+'api-error-mustbeloggedin' => 'Je moet aangemeld zijn om bestanden te kunnen uploaden.',
+'api-error-unknown-error' => 'Interne fout: er is iets misgegaan tijdens het uploaden van je bestand.',
+
 );
index 0d02088..fc692ab 100644 (file)
@@ -217,23 +217,23 @@ $namespaceNames = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Verksame_brukarar', 'Aktive_brukarar' ),
        'Allmessages'               => array( 'Alle_systemmeldingar' ),
+       'AllMyUploads'              => array( 'Alle_opplastingane_mine' ),
        'Allpages'                  => array( 'Alle_sider' ),
        'Ancientpages'              => array( 'Gamle_sider' ),
        'Badtitle'                  => array( 'Dårleg_tittel' ),
        'Blankpage'                 => array( 'Tom_side' ),
        'Block'                     => array( 'Blokker' ),
-       'Blockme'                   => array( 'Blokker_meg' ),
        'Booksources'               => array( 'Bokkjelder' ),
        'BrokenRedirects'           => array( 'Blindvegsomdirigeringar' ),
        'Categories'                => array( 'Kategoriar' ),
        'ChangeEmail'               => array( 'Endra_e-post', 'Endre_e-post' ),
        'ChangePassword'            => array( 'Nullstill_passord' ),
+       'ComparePages'              => array( 'Samanlikna_sider', 'Samanlikne_sider', 'Samanlikn_sider' ),
        'Confirmemail'              => array( 'Stadfest_e-postadresse' ),
        'Contributions'             => array( 'Bidrag' ),
        'CreateAccount'             => array( 'Opprett_konto' ),
        'Deadendpages'              => array( 'Blindvegsider' ),
        'DeletedContributions'      => array( 'Sletta_brukarbidrag' ),
-       'Disambiguations'           => array( 'Fleirtydingssider' ),
        'DoubleRedirects'           => array( 'Doble_omdirigeringar' ),
        'EditWatchlist'             => array( 'Endra_overvakingsliste', 'Endre_overvakingsliste' ),
        'Emailuser'                 => array( 'E-post' ),
@@ -243,8 +243,9 @@ $specialPageAliases = array(
        'Filepath'                  => array( 'Filstig', 'Filsti' ),
        'Import'                    => array( 'Importer' ),
        'Invalidateemail'           => array( 'Gjer_e-post_ugyldig' ),
+       'JavaScriptTest'            => array( 'Utrøyning_av_JavaScript', 'JavaScript-test' ),
        'BlockList'                 => array( 'Blokkeringsliste' ),
-       'LinkSearch'                => array( 'Lenkjesøk' ),
+       'LinkSearch'                => array( 'Lenkjesøk', 'Lenkesøk' ),
        'Listadmins'                => array( 'Administratorliste', 'Administratorar' ),
        'Listbots'                  => array( 'Bottliste', 'Bottar', 'Robotliste', 'Robotar' ),
        'Listfiles'                 => array( 'Filliste' ),
@@ -259,6 +260,7 @@ $specialPageAliases = array(
        'MIMEsearch'                => array( 'MIME-søk' ),
        'Mostcategories'            => array( 'Flest_kategoriar' ),
        'Mostimages'                => array( 'Mest_brukte_filer' ),
+       'Mostinterwikis'            => array( 'Flest_interwikilenkjer', 'Mest_interwiki' ),
        'Mostlinked'                => array( 'Mest_lenka_sider', 'Mest_lenkja_sider' ),
        'Mostlinkedcategories'      => array( 'Mest_brukte_kategoriar' ),
        'Mostlinkedtemplates'       => array( 'Mest_brukte_malar' ),
@@ -339,7 +341,6 @@ $messages = array(
 'tog-minordefault' => 'Merk endringar som «småplukk» som standard',
 'tog-previewontop' => 'Vis førehandsvisinga før endringsboksen',
 'tog-previewonfirst' => 'Førehandsvis første endring',
-'tog-nocache' => 'Deaktiver nettlesaren sitt mellomlager («cache»)',
 'tog-enotifwatchlistpages' => 'Send meg ein e-post når ei side eller ei fil på overvakingslista mi vert endra',
 'tog-enotifusertalkpages' => 'Send e-post når brukarsida mi vert endra',
 'tog-enotifminoredits' => 'Send meg e-post sjølv for mindre endringar på sider og filer',
@@ -475,7 +476,6 @@ $messages = array(
 'qbedit' => 'Endre',
 'qbpageoptions' => 'Denne sida',
 'qbmyoptions' => 'Sidene mine',
-'qbspecialpages' => 'Spesialsider',
 'faq' => 'OSS',
 'faqpage' => 'Project:OSS',
 
@@ -644,6 +644,7 @@ Dette kan òg skuldast ein feil i programvara som er nytta av {{SITENAME}}.',
 # General errors
 'error' => 'Feil',
 'databaseerror' => 'Databasefeil',
+'databaseerror-error' => 'Feil: $1',
 'laggedslavemode' => 'Åtvaring: Det er mogleg at sida ikkje er heilt oppdatert.',
 'readonly' => 'Databasen er skriveverna',
 'enterlockreason' => 'Skriv ein grunn for vernet, inkludert eit overslag for kva tid det vil bli oppheva',
@@ -682,7 +683,6 @@ Funksjonen oppgav inga årsak.',
 'perfcached' => 'Dei følgjande dataa er frå mellomlageret åt tenaren og er ikkje utan vidare oppdatert. Høgst {{PLURAL:$1|eitt resultat er tilgjengeleg|$1 resultat er tilgjengelege}} i mellomlageret.',
 'perfcachedts' => 'Desse dataa er mellomlagra, og vart sist oppdaterte $1. Høgst {{PLURAL:$4|eitt resultat er tilgjengeleg|$4 resultat er tilgjengelege}} i mellomlageret.',
 'querypage-no-updates' => 'Oppdatering av denne sida er slått av, og data her vil ikkje verte fornya.',
-'wrong_wfQuery_params' => 'Feil parameter gjevne til wfQuery()<br />Funksjon: $1<br />Førespurnad: $2',
 'viewsource' => 'Sjå kjelda',
 'viewsource-title' => 'Sjå kjelda til $1',
 'actionthrottled' => 'Handlinga vart stoppa',
@@ -807,7 +807,7 @@ Brukarnamn skil mellom stor og liten bokstav. Sjekk at du har skrive brukarnamet
 'passwordtooshort' => 'Passord må innehalda minst {{PLURAL:$1|eitt teikn|$1 teikn}}.',
 'password-name-match' => 'Passordet ditt lyt vera noko anna enn brukarnamnet ditt.',
 'password-login-forbidden' => 'Bruk av dette brukarnamnet og passordet er vorte forbode.',
-'mailmypassword' => 'Send nytt passord',
+'mailmypassword' => 'Attendestill passord',
 'passwordremindertitle' => 'Nytt passord til {{SITENAME}}',
 'passwordremindertext' => 'Nokon (truleg du, frå IP-adressa $1) bad oss sende deg eit nytt passord til {{SITENAME}} ($4). Eit mellombels passord for «$2» er oppretta, og er sett til «$3». Om det var det du ville, må du logge inn
 og velje eit nytt passord no.
@@ -848,7 +848,7 @@ Du kan sjå bort frå denne meldinga dersom kontoen vart oppretta med eit uhell.
 'user-mail-no-body' => 'Freista å senda e-post med tom eller urimeleg stutt brødtekst.',
 
 # Change password dialog
-'resetpass' => 'Endra passord',
+'changepassword' => 'Skift passord',
 'resetpass_announce' => 'Du logga inn med eit mellombels passord du fekk på e-post. For å fullføre innlogginga må du lage eit nytt passord her:',
 'resetpass_text' => '<!-- Legg til tekst her -->',
 'resetpass_header' => 'Endra passord',
@@ -1208,10 +1208,6 @@ Du kan sjå skilnaden; detaljar finst i [{{fullurl:{{#Special:Log}}/suppcess|pag
 'revisiondelete' => 'Slett/attopprett versjonar',
 'revdelete-nooldid-title' => 'Ugyldig målversjon',
 'revdelete-nooldid-text' => 'Du har ikkje oppgjeve kva for versjon(ar) du vil utføre denne handlinga på, versjonen eksisterer ikkje, eller du prøver å gøyme den noverande versjonen.',
-'revdelete-nologtype-title' => 'Ingen loggtype oppgjeven',
-'revdelete-nologtype-text' => 'Du har ikkje oppgjeve ein loggtype som denne handlinga skal verta utførd på.',
-'revdelete-nologid-title' => 'Ugyldig loggelement',
-'revdelete-nologid-text' => 'Du har anten ikkje oppgjeve eit loggelement som denne funksjonen skal nytta, eller det oppgjeve loggelementet finst ikkje.',
 'revdelete-no-file' => 'Fila som vart synt til finst ikkje.',
 'revdelete-show-file-confirm' => 'Er du viss på at du ynskjer å sjå ein sletta versjon av fila "<nowiki>$1</nowiki>" frå $2 ved $3?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1245,8 +1241,6 @@ $1",
 'logdelete-failure' => "'''Korleis loggen skal vera synleg kunne ikkje verta stilt inn:'''
 $1",
 'revdel-restore' => 'endra synlegdomen',
-'revdel-restore-deleted' => 'sletta versjonar',
-'revdel-restore-visible' => 'synlege versjonar',
 'pagehist' => 'Sidehistorikk',
 'deletedhist' => 'Sletta historikk',
 'revdelete-hide-current' => 'Feil under løyning av objektet datert $2, $1: dette er den gjeldande versjonen.
@@ -1324,12 +1318,8 @@ Detaljar kan ein finna i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 # Search results
 'searchresults' => 'Søkjeresultat',
 'searchresults-title' => 'Søkjeresultat for «$1»',
-'searchresulttext' => 'For meir info om søkjefunksjonen i {{SITENAME}}, sjå [[{{MediaWiki:Helppage}}|Hjelp]].',
-'searchsubtitle' => "Du søkte etter '''[[:$1]]''' ([[Special:Prefixindex/$1|alle sider som byrjar med «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle sider som lenkjer til «$1»]])",
-'searchsubtitleinvalid' => 'Du søkte etter «$1»',
 'toomanymatches' => 'Søket gav for mange treff, prøv ei anna spørjing',
 'titlematches' => 'Sidetitlar med treff på førespurnaden',
-'notitlematches' => 'Ingen sidetitlar hadde treff på førespurnaden',
 'textmatches' => 'Sider med treff på førespurnaden',
 'notextmatches' => 'Ingen sider hadde treff på førespurnaden',
 'prevn' => 'førre {{PLURAL:$1|$1}}',
@@ -1338,10 +1328,8 @@ Detaljar kan ein finna i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'nextn-title' => 'Neste $1 {{PLURAL:$1|resultat|resultat}}',
 'shown-title' => 'Syn $1 {{PLURAL:$1|resultat|resultat}} for kvar side',
 'viewprevnext' => 'Vis ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Søkjeval',
 'searchmenu-exists' => "* Sida '''[[$1]]'''",
 'searchmenu-new' => "'''Opprett sida «[[:$1|$1]]» på denne wikien.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sjå gjennom alle sider med denne forstavinga]]',
 'searchprofile-articles' => 'Innhaldssider',
 'searchprofile-project' => 'Hjelp- og prosjektsider',
 'searchprofile-images' => 'Multimedia',
@@ -1362,21 +1350,16 @@ Detaljar kan ein finna i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'search-interwiki-default' => '$1-resultat:',
 'search-interwiki-more' => '(meir)',
 'search-relatedarticle' => 'Relatert',
-'mwsuggest-disable' => 'Slå av søkjeframlegg',
 'searcheverything-enable' => 'Søk i alle namneroma',
 'searchrelated' => 'relatert',
 'searchall' => 'alle',
 'showingresults' => "Nedanfor er opp til {{PLURAL:$1|'''eitt'''|'''$1'''}} resultat som byrjar med nummer '''$2''' vist{{PLURAL:$1||e}}.",
 'showingresultsnum' => "Nedanfor er {{PLURAL:$3|'''eitt'''|'''$3'''}} resultat som byrjar med nummer '''$2''' {{PLURAL:$3|vist|viste}}.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} for '''$4'''",
-'nonefound' => "'''Merk:''' Som standard blir det berre søkt i enkelte namnerom.
-For å søkja i alle, bruk prefikset ''all:'' (det inkluderer diskusjonssider, malar etc.), eller bruk det ønskte namnerommet som prefiks.",
 'search-nonefound' => 'Ingen resultat svarte til førespurnaden.',
-'powersearch' => 'Søk',
 'powersearch-legend' => 'Avansert søk',
 'powersearch-ns' => 'Søk i namnerom:',
 'powersearch-redir' => 'Vis omdirigeringar',
-'powersearch-field' => 'Søk etter',
 'powersearch-togglelabel' => 'Hak av:',
 'powersearch-toggleall' => 'Alle',
 'powersearch-togglenone' => 'Ingen',
@@ -1390,7 +1373,6 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'preferences' => 'Innstillingar',
 'mypreferences' => 'Innstillingar',
 'prefs-edits' => 'Tal på endringar:',
-'changepassword' => 'Skift passord',
 'prefs-skin' => 'Drakt',
 'skin-preview' => 'førehandsvis',
 'datedefault' => 'Standard',
@@ -1413,13 +1395,11 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'prefs-email' => 'Val for e-post',
 'prefs-rendering' => 'Utsjånad',
 'saveprefs' => 'Lagre',
-'resetprefs' => 'Rull attende',
 'restoreprefs' => 'Hent attende alle standardinnstillingane (i alle bolkane)',
 'prefs-editing' => 'Endring',
 'rows' => 'Rekkjer',
 'columns' => 'Kolonnar',
 'searchresultshead' => 'Søk',
-'resultsperpage' => 'Resultat per side',
 'stub-threshold' => 'Grense (i byte) for at frø/spirer skal formaterast <a href="#" class="stub">slik</a>:',
 'stub-threshold-disabled' => 'Deaktivert',
 'recentchangesdays' => 'Tal på dagar som viser på siste endringar:',
@@ -1431,7 +1411,6 @@ Ver merksam på at registra deira kan vera utdaterte.',
 'localtime' => 'Lokaltid:',
 'timezoneuseserverdefault' => '↓Nytt standardinnstillinga til wikien ($1)',
 'timezoneuseoffset' => 'Anna (oppgje skilnad)',
-'timezoneoffset' => 'Skilnad¹:',
 'servertime' => 'Tenartid:',
 'guesstimezone' => 'Hent tidssone frå nettlesaren',
 'timezoneregion-africa' => 'Afrika',
@@ -1670,15 +1649,16 @@ Denne informasjonen vil vera offentleg.',
 'recentchanges-feed-description' => 'Fylg med på dei siste endringane på denne wikien med dette abonnementet.',
 'recentchanges-label-newpage' => 'Endringa oppretta ei ny side',
 'recentchanges-label-minor' => 'Endringa er småplukk',
-'recentchanges-label-bot' => 'Denne endringa vart gjort av ein bot',
+'recentchanges-label-bot' => 'Endringa vart gjord av ein robot',
 'recentchanges-label-unpatrolled' => 'Endringa er ikkje patruljert enno',
-'recentchanges-legend-newpage' => '$1 – ny side',
-'rcnote' => "Nedanfor er {{PLURAL:$1|den siste endringa gjord|dei siste '''$1''' endringane gjorde}} {{PLURAL:$2|den siste dagen|dei siste '''$2''' dagane}}, for $4, kl. $5.",
+'recentchanges-label-plusminus' => 'Storleiken til sida vart endra med så mange byte',
+'recentchanges-legend-heading' => "'''Tyding:'''",
+'recentchanges-legend-newpage' => '(sjå dessutan [[Special:NewPages|lista over nye sider]])',
 'rcnotefrom' => "Nedanfor vert opp til '''$1''' endringar sidan  ''' $2''' viste.",
 'rclistfrom' => 'Vis nye endringar sidan $1',
 'rcshowhideminor' => '$1 småplukk',
 'rcshowhidebots' => '$1 robotar',
-'rcshowhideliu' => '$1 innlogga brukarar',
+'rcshowhideliu' => '$1 registrerte brukarar',
 'rcshowhideanons' => '$1 anonyme brukarar',
 'rcshowhidepatr' => '$1 godkjende endringar',
 'rcshowhidemine' => '$1 endringane mine',
@@ -2149,10 +2129,8 @@ Du vil kan henda endra skildringa på [$2 filskildringssida] hennar der.',
 'protectedpages' => 'Verna sider',
 'protectedpages-indef' => 'Berre vern på uavgrensa tid',
 'protectedpages-cascade' => 'Berre djupvern',
-'protectedpagestext' => 'Desse sidene er verna mot flytting og endring',
 'protectedpagesempty' => 'Ingen sider er verna på den valde måten akkurat no.',
 'protectedtitles' => 'Verna sidenamn',
-'protectedtitlestext' => 'Desse sidene er verna mot oppretting',
 'protectedtitlesempty' => 'Ingen sider er verna på den valde måten akkurat no.',
 'listusers' => 'Brukarliste',
 'listusers-editsonly' => 'Vis berre brukarar med endringar',
@@ -2202,9 +2180,6 @@ Merk at andre internettsider kan ha direkte lenkjer til filer, og difor kan file
 'allpagesto' => 'Vis sider til og med:',
 'allarticles' => 'Alle sider',
 'allinnamespace' => 'Alle sider ($1-namnerommet)',
-'allnotinnamespace' => 'Alle sider (ikkje i $1-namnerommet)',
-'allpagesprev' => 'Førre',
-'allpagesnext' => 'Neste',
 'allpagessubmit' => 'Vis',
 'allpagesprefix' => 'Vis sider med prefikset:',
 'allpagesbadtitle' => 'Det oppgjevne sidenamnet var ugyldig eller hadde eit interwiki-prefiks. Det kan også ha hatt eitt eller fleire teikn som ikkje kan brukast i sidenamn.',
@@ -2526,7 +2501,6 @@ Innhaldet i dei sletta versjonane er berre tilgjengeleg for administratorar.',
 'undeletebtn' => 'Attopprett',
 'undeletelink' => 'sjå/attopprett',
 'undeleteviewlink' => 'syn',
-'undeletereset' => 'Nullstill',
 'undeleteinvert' => 'Inverter val',
 'undeletecomment' => 'Årsak:',
 'undeletedrevisions' => '{{PLURAL:$1|Éin versjon|$1 versjonar}} attoppretta.',
@@ -2613,13 +2587,11 @@ $1',
 'block' => 'Blokker brukar',
 'unblock' => 'Opphev blokkeringa av brukaren',
 'blockip' => 'Blokker brukar',
-'blockip-title' => 'Blokker brukar',
 'blockip-legend' => 'Blokker brukar',
 'blockiptext' => 'Bruk skjemaet nedanfor for å blokkere skrivetilgangen frå ei spesifikk IP-adresse eller brukarnamn. Dette bør berre gjerast for å hindre hærverk, og i samsvar med [[{{MediaWiki:Policy-url}}|retningslinene]].',
 'ipadressorusername' => 'IP-adresse eller brukarnamn',
 'ipbexpiry' => 'Opphøyrstid:',
 'ipbreason' => 'Årsak:',
-'ipbreasonotherlist' => 'Annan grunn',
 'ipbreason-dropdown' => '*Vanlege grunnar for blokkering
 ** Legg inn usann tekst/tull
 ** Fjernar innhald frå sider
@@ -2634,8 +2606,6 @@ $1',
 'ipbsubmit' => 'Blokker brukaren',
 'ipbother' => 'Anna tid',
 'ipboptions' => '2 timar:2 hours,1 dag:1 day,3 dagar:3 days,1 veke:1 week,2 veker:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,endelaus:infinite',
-'ipbotheroption' => 'anna tid',
-'ipbotherreason' => 'Annan grunn/tilleggsgrunn:',
 'ipbhidename' => 'Gøym brukarnamnet frå endringar og lister',
 'ipbwatchuser' => 'Overvak brukarsida og diskusjonssida til brukaren',
 'ipb-disableusertalk' => 'Hindra brukaren i å endra eiga diskusjonsside medan blokkeringa gjeld',
@@ -2723,7 +2693,6 @@ IP-adresser som blir automatisk blokkerte er ikkje lista her. Sjå [[Special:Blo
 'sorbsreason' => 'IP-adressa di er lista som ein open mellomtenar i DNSBL.',
 'sorbs_create_account_reason' => 'IP-adressa di er lista som ein open mellomtenar i DNSBL, og difor får du ikkje registrert deg.',
 'xffblockreason' => 'Ei IP-adresse i X-Forwarded-For-tittelen, anten di eller den som høyrer til ein proksytenar du nyttar, er blokkert. Den opphavlege blokkeringsgrunnen var: $1',
-'cant-block-while-blocked' => 'Du kan ikkje blokkere andre medan du sjølv er blokkert.',
 'cant-see-hidden-user' => 'Brukaren du prøver å blokkera har allereie vorte blokkert og skjult. Sidan du ikkje har rett til å skjula brukarar, kan du ikkje sjå eller endra blokkeringa til brukaren.',
 'ipbblocked' => 'Du kan ikkje blokkera eller avblokkera andre brukarar sidan du sjølv er blokkert',
 'ipbnounblockself' => 'Du kan ikkje avblokkera deg sjølv',
@@ -2776,7 +2745,6 @@ ver viss på at du skjøner konsekvensane av flyttinga før du held fram.",
 I desse falla lyt du flytta eller fletta sida manuelt, om ynskjeleg.",
 'movearticle' => 'Flytt side:',
 'moveuserpage-warning' => "'''Åtvaring:''' Du er i ferd med å flytta ei brukarside. Merk at berre sida vert flytt og at brukarnamnet '''ikkje''' vert endra.",
-'movenologin' => 'Ikkje innlogga',
 'movenologintext' => 'Du lyt vera registrert brukar og vera [[Special:UserLogin|innlogga]] for å flytte ei side.',
 'movenotallowed' => 'Du har ikkje tilgang til å flytte sider.',
 'movenotallowedfile' => 'Du har ikkje løyve til å flytta filer.',
@@ -2791,8 +2759,6 @@ I desse falla lyt du flytta eller fletta sida manuelt, om ynskjeleg.",
 'movepage-moved-noredirect' => 'Det vart ikkje oppretta ei omdirigering.',
 'articleexists' => 'Ei side med det namnet finst allereie, eller det namnet du har valt er ikkje gyldig. Vel eit anna namn.',
 'cantmove-titleprotected' => 'Du kan ikkje flytte sida hit, fordi det nye sidenamnet er verna mot oppretting.',
-'talkexists' => "'''Innhaldssida vart flytt, men diskusjonssida som høyrer til kunne ikkje flyttast fordi det allereie finst ei side med den nye tittelen. Du lyt difor flette dei saman manuelt.'''",
-'movedto' => 'er flytt til',
 'movetalk' => 'Flytt diskusjonssida òg om ho finst.',
 'move-subpages' => 'Flytt undersider (opp til $1)',
 'move-talk-subpages' => 'Flytt undersider av diskusjonssida (opp til $1)',
@@ -3622,15 +3588,10 @@ Andre er gøymde som standard.
 'exif-urgency-high' => 'Høg ($1)',
 'exif-urgency-other' => 'Brukardefinert prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Endre denne fila med eit eksternt program',
-'edit-externally-help' => '(Sjå [https://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonane] for meir informasjon)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
 'monthsall' => 'alle',
-'limitall' => 'alle',
 
 # Email address confirmation
 'confirmemail' => 'Stadfest e-postadresse',
@@ -3653,7 +3614,6 @@ E-postsendaren gav denne meldinga: $1',
 'confirmemail_needlogin' => 'Du må $1 for å stadfeste e-postadressa di.',
 'confirmemail_success' => 'E-postadressa di er stadfest. Du kan no logge inn og kose deg med {{SITENAME}}.',
 'confirmemail_loggedin' => 'E-postadressa di er stadfest.',
-'confirmemail_error' => 'Noko gjekk gale når stadfestinga di skulle lagrast.',
 'confirmemail_subject' => 'Stadfesting av e-postadresse frå {{SITENAME}}',
 'confirmemail_body' => 'Nokon, truleg du, frå IP-adressa $1, har registrert kontoen «$2» med di e-postadresse på {{SITENAME}}.
 
@@ -3845,6 +3805,7 @@ Du skal ha motteke [{{SERVER}}{{SCRIPTPATH}}/COPYING ein kopi av GNU General Pub
 
 # Special:SpecialPages
 'specialpages' => 'Spesialsider',
+'specialpages-note-top' => 'Tyding',
 'specialpages-note' => '* Vanlege spesialsider.
 * <span class="mw-specialpagerestricted">Spesialsider med avgrensa tilgang.</span>',
 'specialpages-group-maintenance' => 'Vedlikehaldsrapportar',
@@ -3893,7 +3854,6 @@ Du skal ha motteke [{{SERVER}}{{SCRIPTPATH}}/COPYING ein kopi av GNU General Pub
 
 # Special:ComparePages
 'comparepages' => 'Samanlikna sider',
-'compare-selector' => 'Samanlikn sideversjonar',
 'compare-page1' => 'Side 1',
 'compare-page2' => 'Side 2',
 'compare-rev1' => 'Versjon 1',
index bfee3ab..c5a6f89 100644 (file)
@@ -89,7 +89,6 @@ $messages = array(
 'qbedit' => 'Modifika',
 'qbpageoptions' => 'Disi pagine',
 'qbmyoptions' => 'Men pagines',
-'qbspecialpages' => 'Spesial pagines',
 
 # Vector skin
 'vector-action-delete' => 'Ekarta',
@@ -131,7 +130,7 @@ $messages = array(
 'jumptonavigation' => 'navigatione',
 'jumptosearch' => 'sercha',
 
-# 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).
+# 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).
 'aboutsite' => 'Pri {{SITENAME}}',
 'aboutpage' => 'Project:Pri',
 'currentevents' => 'Nuni eventes',
@@ -146,8 +145,6 @@ $messages = array(
 'badaccess' => 'Permisione erore',
 
 'youhavenewmessages' => 'Vu have $1 ($2).',
-'newmessageslink' => 'novi mesajes',
-'newmessagesdifflink' => 'lasti chanjo',
 'youhavenewmessagesmulti' => 'Vu have novi mesajes pri $1',
 'editsection' => 'modifika',
 'editold' => 'modifika',
@@ -231,23 +228,16 @@ Proba [[Special:Search|sercho sur li wiki]] por relatet pagines.',
 
 # Search results
 'searchresults' => 'Resultes de sercho',
-'searchresulttext' => 'Por plu multi informatione pri sercho {{SITENAME}}, vida [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Vu serchad '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Vu serchad '''$1'''",
 'prevn' => 'lasti {{PLURAL:$1|$1}}',
 'nextn' => 'sekuenti {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Vida ($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:Kontenaje',
 'search-result-size' => '$1 ({{PLURAL:$2|1 vorde|$2 vordes}})',
 'showingresults' => "Montrant subu {{PLURAL:$1|'''1''' resulte|'''$1''' resultes}} amaxim komensant fro #'''$2'''.",
 'showingresultsnum' => "Montrant subu {{PLURAL:$3|'''1''' result|'''$3''' results}} komensant fro #'''$2'''.",
-'powersearch' => 'Sercha',
 
 # Preferences page
 'preferences' => 'Preferos',
 'mypreferences' => 'Men preferos',
-'prefsnologin' => 'Non ensignatat',
-'prefsnologintext' => 'Vu mus es <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} ensignatat] por determina useren preferos.',
 'prefs-rc' => 'Resenti chanjos',
 'searchresultshead' => 'Sercha',
 'timezoneregion-africa' => 'Afrika',
@@ -330,9 +320,6 @@ Proba [[Special:Search|sercho sur li wiki]] por relatet pagines.',
 'alphaindexline' => '$1 a $2',
 'allarticles' => 'Omni artikles',
 'allinnamespace' => 'Omni pagines ($1 nome-spatie)',
-'allnotinnamespace' => 'Omni pagines (non in $1 nome-spatie)',
-'allpagesprev' => 'Antei',
-'allpagesnext' => 'Sekuenti',
 'allpagessubmit' => 'Vada',
 
 # Special:Categories
@@ -404,9 +391,7 @@ Si vu voli plu tardim ekarta li pagine fro vun observa-liste, klikta \"Desobserv
 
 # Move page
 'movearticle' => 'Mova pagine',
-'movenologin' => 'Non ensignatat',
 'move-watch' => 'Observa disi pagine',
-'movedto' => 'movat a',
 'movereason' => 'Resone:',
 'delete_and_move' => 'Ekarta e mova',
 'delete_and_move_confirm' => 'Yes, ekarta li pagine',
index c2edf96..52307fe 100644 (file)
@@ -59,7 +59,6 @@ $messages = array(
 'tog-minordefault' => 'Swaya diphetogo ka moka bjalo ka diphetogo tše nnyenyane',
 'tog-previewontop' => 'Bontšha Ponopele pele ga lepokisi la diphetogo',
 'tog-previewonfirst' => 'Bontšha Ponopeleka phetogo ya pele',
-'tog-nocache' => "Thibela go tsenya matlakala go segakolodi (''cache'')",
 'tog-enotifwatchlistpages' => 'Nthomele molaetša ge letlaka leo ke le tlhapetšego le eba le diphetogo',
 'tog-enotifusertalkpages' => 'Nromele molaetša ge letlakala la Dipoledišano laka le fetoga',
 'tog-enotifminoredits' => 'Ethomele e-mail ge goba le diphetogo tše nnyenyane go matlakala',
@@ -155,7 +154,6 @@ $messages = array(
 'qbedit' => 'Fetola',
 'qbpageoptions' => 'Letlakala le',
 'qbmyoptions' => 'Matlakala a ka',
-'qbspecialpages' => 'Matlakala a kgethegilego',
 'faq' => '"FAQ"',
 
 # Vector skin
@@ -377,6 +375,7 @@ Ga wa dumelwa go tlhoma tše dingwe.',
 'loginlanguagelabel' => 'Polelo: $1',
 
 # Change password dialog
+'changepassword' => 'Fetola ditlhaka-tša-siphiri',
 'resetpass_text' => '<!-- Tsenya ditlhaka mo -->',
 'oldpassword' => 'Ditlhaka-tša-siphiri tša kgale:',
 'newpassword' => 'Ditlhaka-tša-siphiri tše mpsha:',
@@ -524,8 +523,6 @@ Leka [[Special:Search|go fetleka wikii]] go humana matlakala a mapsha.',
 'revdelete-log' => 'Lebaka:',
 'revdel-restore' => '
 fetola tshenolo',
-'revdel-restore-deleted' => 'pušeletšo tšago phumulwa',
-'revdel-restore-visible' => 'pušeletšo tšago bonagala',
 'pagehist' => 'Histori ya letlakala',
 
 # History merging
@@ -546,10 +543,6 @@ fetola tshenolo',
 # Search results
 'searchresults' => 'Sephetho sa go fetleka',
 'searchresults-title' => 'Diphetho tša go fetleka "$1"',
-'searchresulttext' => 'Go hwetša sedi ka go fetleka {{SITENAME}}, lebelela [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'O fetleka o nyaka \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|matlaka ka moka ago thoma ka "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|matlakala ka moka a go hlamaganya go  "$1"]])',
-'searchsubtitleinvalid' => "O fetlekile o nyaka  '''$1'''",
-'notitlematches' => 'Gago letlakala la thaetlele yago swana',
 'notextmatches' => 'Gago mangwalo letlakaleng a go swana',
 'prevn' => 'gofeta {{PLURAL:$1|$1}}',
 'nextn' => 'latela {{PLURAL:$1|$1}}',
@@ -580,21 +573,15 @@ fetola tshenolo',
 'searchrelated' => 'tswalana',
 'searchall' => 'tšohle',
 'showingresultsheader' => "{{PLURAL:$5|Sepheto '''$1''' tša '''$3'''|Dipheto '''$1 - $2''' tša '''$3'''}} tša '''$4'''",
-'nonefound' => "'''Hloko''': Ke di \"namespace\" tše dingwe tšeo di  fetlekwago go \"default.\"
-
-Leka go fetleka ka go ngwala ''all:'' go fetleka mateng ka moka, goba o šumiše \"namespace\" yeo o nyakago go e fetleka.",
 'search-nonefound' => 'Gago dipheto tšago sepelelana le "query".',
-'powersearch' => 'Fetleka ka tlhoko',
 'powersearch-legend' => 'Fetleka ya tšwetše',
 'powersearch-ns' => 'Fetleka go di "namespace"',
 'powersearch-redir' => 'Lenano la di "redirect"',
-'powersearch-field' => 'Fetleka',
 
 # Preferences page
 'preferences' => 'Dikgatlhegelo',
 'mypreferences' => 'Dikgatlhegelo tša ka',
 'prefs-edits' => 'Palo ya diphetogo:',
-'changepassword' => 'Fetola ditlhaka-tša-siphiri',
 'skin-preview' => 'Ponopele',
 'prefs-datetime' => 'Tšatšikgwedi le nako',
 'prefs-rc' => 'Diphetogo tša bjale',
@@ -660,7 +647,6 @@ Ga re fane ka e-poso ya gago go bašumiši ba bangwe ge ba polela le wena ka yon
 'recentchanges-label-minor' => 'Ye ke phetogo ye nnyenyane',
 'recentchanges-label-bot' => 'Phetogo ye e dirilwe ke "bot"',
 'recentchanges-label-unpatrolled' => 'Phetogo ye ga ese e "patrollwe"',
-'rcnote' => "Go latela {{PLURAL:$1|phetogo ye '''1'''|diphetogo tša bofelo tše '''$1'''}} ka {{PLURAL:$2|letšatši|matšatši a '''$2'''}} a go feta, go tloga $4, $5.",
 'rcnotefrom' => "Tlase ke diphetogo go tloga ka '''$2''' (go  fihla ka '''$1''').",
 'rclistfrom' => 'Laêtša dipheto tše mfsa go thoma go $1',
 'rcshowhideminor' => '$1 ya diphetogo tše nnyenyane',
@@ -1008,11 +994,9 @@ Seemo sa go lota ga letlakala '''$1''':",
 'blockip' => 'Thibela mošomiši go tsena',
 'ipbexpiry' => 'Fetatšatši:',
 'ipbreason' => 'Lebaka:',
-'ipbreasonotherlist' => 'Lebaka le lengwe',
 'ipbsubmit' => 'Thiba mošomiši yo',
 'ipbother' => 'Nako yengwe:',
 'ipboptions' => '2 diiri:2 hours,1 letšatši:1 day,3 matšatši:3 days,1 beke:1 week,2 dibeke:2 weeks,1 kgwedi:1 month,3 digkwedi:3 months,6 dikgwedi:6 months,1 ngwaga:1 year,ga efele:infinite',
-'ipbotheroption' => 'yengwe',
 'ipblocklist' => "Bašumiši bao bathibilwego(''blocked'')",
 'ipblocklist-submit' => 'Fetleka',
 'emailblock' => 'e-mail e thibilwe',
@@ -1055,8 +1039,6 @@ Ge go le bjalo,o tla swanela ke go huduša goba go kopanya matlakala ka bowena."
 'articleexists' => 'Letlakala la goba le leina le legona, goba
 leina leo o le kgethilego ga la dumelega.
 Ka kgopelo, kgetha leina le lengwe.',
-'talkexists' => "'''Letlakala le hudugile ka katlego, efele letlakala la dipolešano ga la huduga kage gobe go ina letlakala leineng le lemphsa. Ka kgopelo, a gahlanye ka bowena.'''",
-'movedto' => 'hudugetše go',
 'movetalk' => 'Huduša letlakala la dipoledišano la go hlobana le letlakala le',
 'movelogpage' => "''log'' yago huduša",
 'movereason' => 'Lebaka:',
@@ -1209,10 +1191,6 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
 
 'exif-meteringmode-1' => 'Palogare',
 
-# External editor support
-'edit-externally' => 'Fetola faele ye o šumiša thulusi ya ka ntle',
-'edit-externally-help' => '(Lebelela [https://www.mediawiki.org/wiki/Manual:External_editors Taelo ya go thoma] go humana sedi)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ka moka',
 'namespacesall' => 'ka moka',
index 5a17c91..11c0709 100644 (file)
@@ -120,19 +120,17 @@ $messages = array(
 'redirectpagesub' => 'dah astsihígíí',
 'lastmodifiedat' => 'Díí naaltsoos $1/$2 łahgo ályaa.',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}} baa haneʼ',
 'aboutpage' => 'Project: baa haneʼ',
 'copyright' => 'Díí naaltsoos bikáaʼgi saad shijaaʼígíí "$1" beehazʼą́ąnii bikʼehgo choidííłįįł',
 'edithelp' => 'anáʼálwoʼ',
-'edithelppage' => 'Help:Haitʼéegoshąʼ naaltsoos łahgo áshłééh?',
 'helppage' => 'Help:Bee hadítʼéhígíí',
 'mainpage' => 'Íiyisíí Naaltsoos',
 'mainpage-description' => 'Íiyisíí Naaltsoos',
 
 'retrievedfrom' => '"$1" bitsʼą́ą́dę́ę́ʼ',
 'youhavenewmessages' => 'Háíshį́į́ $1 nichʼįʼ áyiilaa. <small>($2)</small>',
-'newmessageslink' => 'haneʼ ániidígíí',
 'editsection' => 'łahgo áshłééh',
 'editold' => 'łahgo áshłééh',
 'editlink' => 'łahgo áshłééh',
@@ -209,10 +207,6 @@ $messages = array(
 'editundo' => 'ńdíídleeł!',
 
 # Search results
-'searchresulttext' => '{{SITENAME}} bikáaʼgi haʼnitáhígíí bíhoołʼaahgo biniiyé [[{{MediaWiki:Helppage}}|{{int:help}}]] yidíiłtah.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' hanínítą́ą́ʼ ([[Special:Prefixindex/$1|naaltsoos "$1" wolyéhígíí tʼáá ałtso]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" baa atiinígíí tʼáá ałtso]])',
-'searchsubtitleinvalid' => "'''$1''' hanínítą́ą́ʼ",
-'notitlematches' => 'naaltsoos ádin',
 'viewprevnext' => '($1) ($2) ($3) shinááł',
 'search-result-size' => '$1 ({{PLURAL:$2|1 saad bikáaʼgi hólǫ́|$2 saad bikáaʼgi dahólǫ́}})',
 'search-redirect' => '("$1"dę́ę́ʼ)',
@@ -279,7 +273,7 @@ $3',
 # Special:LinkSearch
 'linksearch' => 'linksígíí tłʼóoʼdi siʼánígíí',
 
-# E-mail user
+# Email user
 'emailuser' => 'E-mail bichʼįʼ áshłééh nisin',
 
 # Watchlist
@@ -360,10 +354,6 @@ $3',
 'metadata-expand' => 'yishʼį́ nisin',
 'metadata-collapse' => 'doo yishʼį́ nisin da',
 
-# External editor support
-'edit-externally' => "''external application''ígíí choinishʼįįhgo díí eʼelyaaígíí łahgo áshłééh nisin.",
-'edit-externally-help' => '([//www.mediawiki.org/wiki/Manual:External_editors anáʼálwoʼ] (Bilagáanakʼehjí))',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tʼáá ałtso',
 'namespacesall' => 'tʼáá ałtso',
index 7f1793e..5a2a4a2 100644 (file)
  */
 
 $messages = array(
-'help'          => 'Chithandizo',
-'search'        => 'Fufuzani',
-'searchbutton'  => 'Fufuzani',
+'help' => 'Chithandizo',
+'search' => 'Fufuzani',
+'searchbutton' => 'Fufuzani',
 'searcharticle' => 'Pitani',
-'toolbox'       => 'zida',
+'toolbox' => 'zida',
 
-# 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).
-'mainpage'             => 'Tsamba Lalikulu',
+# 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).
+'mainpage' => 'Tsamba Lalikulu',
 'mainpage-description' => 'Tsamba Lalikulu',
-'portal'               => 'Tsamba la anthu wonse',
+'portal' => 'Tsamba la anthu wonse',
 
 'youhavenewmessagesmulti' => 'Muli ndi mauthenga atsopano ku $1',
 
index 8c184dd..fa0940b 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Paginas_ancianas' ),
        'Blankpage'                 => array( 'Pagina_blanca', 'PaginaBlanca' ),
        'Block'                     => array( 'Blocar', 'Blocatge' ),
-       'Blockme'                   => array( 'Blocatz_me', 'Blocatz-me' ),
        'Booksources'               => array( 'Obratge_de_referéncia', 'Obratges_de_referéncia' ),
        'BrokenRedirects'           => array( 'Redireccions_copadas', 'RedireccionsCopadas' ),
        'Categories'                => array( 'Categorias' ),
@@ -74,7 +73,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Crear_un_compte', 'CrearUnCompte', 'CrearCompte' ),
        'Deadendpages'              => array( 'Paginas_sul_camin_d\'enlòc' ),
        'DeletedContributions'      => array( 'Contribucions_escafadas', 'ContribucionsEscafadas' ),
-       'Disambiguations'           => array( 'Omonimia', 'Omonimias', 'Paginas_d\'omonimia' ),
        'DoubleRedirects'           => array( 'Redireccions_doblas', 'RedireccionsDoblas' ),
        'Emailuser'                 => array( 'Corrièr_electronic', 'Email', 'Emèl', 'Emèil' ),
        'Export'                    => array( 'Exportar', 'Exportacion' ),
@@ -314,7 +312,6 @@ $messages = array(
 'tog-minordefault' => 'Considerar mas modificacions coma menoras per defaut',
 'tog-previewontop' => 'Far veire la previsualizacion al dessús de la zòna de modificacion',
 'tog-previewonfirst' => 'Far veire la previsualizacion al moment de la primièra edicion',
-'tog-nocache' => "Desactivar l'escondedor de las paginas pel navigador",
 'tog-enotifwatchlistpages' => 'M’avertir per corrièr electronic quand una pagina o un fichièr de ma lista de seguiment es modificat',
 'tog-enotifusertalkpages' => 'M’avertir per corrièr electronic en cas de modificacion de ma pagina de discussion',
 'tog-enotifminoredits' => 'M’avertir per corrièr electronic quitament en cas de modificacions menoras de las paginas o dels fichièrs',
@@ -400,18 +397,18 @@ $messages = array(
 'oct' => "d'oct",
 'nov' => 'de nov',
 'dec' => 'de dec',
-'january-date' => '$1 genièr',
-'february-date' => '$1 febrièr',
-'march-date' => '$1 març',
-'april-date' => '$1 abril',
-'may-date' => '$1 mai',
-'june-date' => '$1 junh',
-'july-date' => '$1 julhet',
-'august-date' => '$1 agost',
-'september-date' => '$1 setembre',
-'october-date' => '$1 octobre',
-'november-date' => '$1 novembre',
-'december-date' => '$1 decembre',
+'january-date' => '$1 de genièr',
+'february-date' => '$1 de febrièr',
+'march-date' => '$1 de març',
+'april-date' => "$1 d'abril",
+'may-date' => '$1 de mai',
+'june-date' => '$1 de junh',
+'july-date' => '$1 de julhet',
+'august-date' => "$1 d'agost",
+'september-date' => '$1 de setembre',
+'october-date' => "$1 d'octobre",
+'november-date' => '$1 de novembre',
+'december-date' => '$1 de decembre',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categoria|Categorias}}',
@@ -450,7 +447,6 @@ $messages = array(
 'qbedit' => 'Modificar',
 'qbpageoptions' => 'Opcions de la pagina',
 'qbmyoptions' => 'Mas opcions',
-'qbspecialpages' => 'Paginas especialas',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -665,9 +661,6 @@ Cap d'explicacion es pas estada provesida.",
 'perfcached' => "Las donadas seguendas son en escondedor e benlèu, son pas a jorn. Un maximum de {{PLURAL:$1|un resultat|$1 resultats}} es disponible dins l'escondedor.",
 'perfcachedts' => "Las donadas seguendas son en escondedor e benlèu, son pas a jorn. Un maximum de {{PLURAL:$1|un resultat|$1 resultats}} es disponible dins l'escondedor.",
 'querypage-no-updates' => 'Las mesas a jorn per aquesta pagina son actualamnt desactivadas. Las donadas çaijós son pas mesas a jorn.',
-'wrong_wfQuery_params' => 'Paramètres incorrèctes sus wfQuery()<br />
-Foncion : $1<br />
-Requèsta : $2',
 'viewsource' => 'Vejatz lo tèxte font',
 'viewsource-title' => 'Veire la font de $1',
 'actionthrottled' => 'Accion limitada',
@@ -793,7 +786,7 @@ Verificatz qu'avètz plan ortografiat lo nom, o [[Special:UserLogin/signup|creat
 'passwordtooshort' => 'Vòstre senhal deu conténer al mens {{PLURAL:$1|1 caractèr|$1 caractèrs}}.',
 'password-name-match' => 'Vòstre senhal deu èsser diferent de vòstre nom d’utilizaire.',
 'password-login-forbidden' => "L'usatge d'aquestes nom d'utilizaire e senhal es pas autorisat",
-'mailmypassword' => 'Mandar un senhal novèl per corrièr electronic',
+'mailmypassword' => 'Reïnicializar lo senhal',
 'passwordremindertitle' => 'Senhal temporari novèl sus {{SITENAME}}',
 'passwordremindertext' => "Qualqu'un (probablament vos, amb l'adreça IP $1) a demandat un senhal novèl
 per {{SITENAME}} ($4). Un senhal temporari es estat creat per
@@ -844,7 +837,7 @@ Se decidissètz de lo provesir, serà utilizat per atribuir a l’utilizaire sos
 'user-mail-no-body' => "Ensag de mandadís d'un corrièr electronic amb un còs void o desrasonablament cort.",
 
 # Change password dialog
-'resetpass' => 'Cambiar lo senhal del compte',
+'changepassword' => 'Modificacion del senhal',
 'resetpass_announce' => 'Vos sètz enregistrat amb un senhal temporari mandat per corrièr electronic. Per acabar l’enregistrament, vos cal picar un senhal novèl aicí :',
 'resetpass_text' => '<!-- Apondètz lo tèxte aicí -->',
 'resetpass_header' => 'Modificar lo senhal del compte',
@@ -1150,6 +1143,7 @@ D'unas inclusions seràn pas efectuadas.",
 'cantcreateaccount-text' => "La creacion de compte dempuèi aquesta adreça IP ('''$1''') es estada blocada per [[User:$3|$3]].
 
 La rason balhada per $3 èra ''$2''.",
+'cantcreateaccount-range-text' => "La creacion de compte dempuèi las adressas IP  '''$1''', que la vòstra n'es ('''$4''') es estada blocada per [[User:$3|$3]].",
 
 # History pages
 'viewpagelogs' => 'Vejatz las operacions per aquesta pagina',
@@ -1218,10 +1212,6 @@ Podètz veire aquesta diff ; i pòt aver mai de detalhs dins lo [{{fullurl:{{#Sp
 'revisiondelete' => 'Suprimir/Restablir de versions',
 'revdelete-nooldid-title' => 'Cibla per la revision invalida',
 'revdelete-nooldid-text' => "Avètz pas precisat la o las revision(s) cibla(s) per utilizar aquesta foncion, la revision cibla existís pas, o alara la revision cibla es la qu'es en cors.",
-'revdelete-nologtype-title' => 'Cap de tipe de jornal pas balhat',
-'revdelete-nologtype-text' => 'Avètz pas especificat un tipe de jornal sul qual aquesta accion deu èsser realizada.',
-'revdelete-nologid-title' => 'Entrada del jornal invalida',
-'revdelete-nologid-text' => 'Siá avètz pas especificat un eveniment del jornal sul qual aquesta accion se deu realizar, siá existís pas.',
 'revdelete-no-file' => 'Lo fichièr especificat existís pas.',
 'revdelete-show-file-confirm' => 'Sètz segur(a) que volètz veire la revision suprimida del fichièr « <nowiki>$1</nowiki> » datant del $2 a $3?',
 'revdelete-show-file-submit' => 'Òc',
@@ -1255,8 +1245,6 @@ $1",
 'logdelete-failure' => "'''La visibilitat del jornal a pas pogut èsser definida :'''
 $1",
 'revdel-restore' => 'Modificar la visibilitat',
-'revdel-restore-deleted' => 'revisions suprimidas',
-'revdel-restore-visible' => 'revisions visiblas',
 'pagehist' => 'Istoric de la pagina',
 'deletedhist' => 'Istoric de las supressions',
 'revdelete-hide-current' => "Error al moment de la supression de l'element datat del $1 e $2 : es la revision correnta.
@@ -1333,12 +1321,8 @@ Podètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 # Search results
 'searchresults' => 'Resultats de la recèrca',
 'searchresults-title' => 'Resultats de la recèrca per « $1 »',
-'searchresulttext' => "Per mai d'informacions sus la recèrca dins {{SITENAME}}, vejatz [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => "Avètz recercat « '''[[:$1]]''' » ([[Special:Prefixindex/$1|totas las paginas que començan per « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totas las paginas qu'an un ligam cap a « $1 »]])",
-'searchsubtitleinvalid' => 'Avètz recercat « $1 »',
 'toomanymatches' => 'Tròp d’ocuréncias son estadas trobadas, sètz pregat de sometre una requèsta diferenta.',
 'titlematches' => "Correspondéncias dins los títols d'articles",
-'notitlematches' => "Cap de títol d'article correspond pas a la recèrca.",
 'textmatches' => "Correspondéncias dins los tèxtes d'articles",
 'notextmatches' => "Cap de tèxte d'article correspond pas a la recèrca",
 'prevn' => '{{PLURAL:$1|precedenta|$1 precedentas}}',
@@ -1347,10 +1331,8 @@ Podètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'nextn-title' => '$1 {{PLURAL:$1|resultat seguent|resultats seguents}}',
 'shown-title' => 'Afichar $1 {{PLURAL:$1|resultat|resultats}} per pagina',
 'viewprevnext' => 'Veire ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opcions de recèrca',
 'searchmenu-exists' => "* Pagina '''[[$1]]'''",
 'searchmenu-new' => "'''Crear la pagina ''[[:$1|$1]]'' sus aqueste wiki !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Recercar las paginas amb aqueste prefix]]',
 'searchprofile-articles' => 'Paginas de contengut',
 'searchprofile-project' => "Paginas d'ajuda e del projècte",
 'searchprofile-images' => 'Multimèdia',
@@ -1371,21 +1353,16 @@ Podètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'search-interwiki-default' => '$1 resultats :',
 'search-interwiki-more' => '(mai)',
 'search-relatedarticle' => 'Relatat',
-'mwsuggest-disable' => 'Desactivar las suggestions de recèrca',
 'searcheverything-enable' => 'Recercar dins totes los espacis de noms',
 'searchrelated' => 'relatat',
 'searchall' => 'Totes',
 'showingresults' => "Afichatge {{PLURAL:$1|d''''1''' resultat|de '''$1''' resultats}} a partir del #'''$2'''.",
 'showingresultsnum' => "Afichatge {{PLURAL:$3|d''''1''' resultat|de '''$3''' resultats}} a partir del #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1'''|Resultats '''$1 - $2'''}} de '''$3''' per '''$4'''",
-'nonefound' => "<strong>Nòta</strong>: Sonque qualques espacis de noms son recercats per defaut
-Ensajatz en utilizant lo prefix ''all:'' per recercar tot lo contengut (tot incluent las paginas de discussion, los modèls, etc), o utilizatz l'espaci de nom coma prefix.",
 'search-nonefound' => 'I a pas cap de resultat correspondent a la requèsta.',
-'powersearch' => 'Recèrca avançada',
 'powersearch-legend' => 'Recèrca avançada',
 'powersearch-ns' => 'Recercar dins los espacis de nom :',
 'powersearch-redir' => 'Lista de las redireccions',
-'powersearch-field' => 'Recercar',
 'powersearch-togglelabel' => 'Marcar :',
 'powersearch-toggleall' => 'Tot',
 'powersearch-togglenone' => 'Pas cap',
@@ -1400,7 +1377,6 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
 'mypreferences' => 'Preferéncias',
 'prefs-edits' => 'Nombre d’edicions :',
 'prefsnologintext2' => "$1 per definir las preferéncias d'utilizaire.",
-'changepassword' => 'Modificacion del senhal',
 'prefs-skin' => 'Aparéncia',
 'skin-preview' => 'Previsualizar',
 'datedefault' => 'Cap de preferéncia',
@@ -1423,13 +1399,11 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
 'prefs-email' => 'Opcions del corrièr electronic',
 'prefs-rendering' => 'Aparéncia',
 'saveprefs' => 'Enregistrar las preferéncias',
-'resetprefs' => 'Restablir las preferéncias',
 'restoreprefs' => 'Restablir totes los paramètres per defaut (dins totas las seccions)',
 'prefs-editing' => 'Fenèstra de modificacion',
 'rows' => 'Rengadas :',
 'columns' => 'Colomnas :',
 'searchresultshead' => 'Recèrca',
-'resultsperpage' => 'Nombre de responsas per pagina :',
 'stub-threshold' => 'Limit superior pels <a href="#" class="stub">ligams cap als esbòsses</a> (octets) :',
 'stub-threshold-disabled' => 'Desactivat',
 'recentchangesdays' => "Nombre de jorns d'afichar dins los darrièrs cambiaments :",
@@ -1444,7 +1418,6 @@ Tota persona que la coneis poirà legir vòstra lista de seguiment, doncas, la c
 'localtime' => 'Ora locala :',
 'timezoneuseserverdefault' => 'Utilizar la valor del servidor ($1)',
 'timezoneuseoffset' => 'Autre (especificar lo descalatge)',
-'timezoneoffset' => 'Decalatge orari¹ :',
 'servertime' => 'Ora del servidor :',
 'guesstimezone' => 'Utilizar la valor del navigador',
 'timezoneregion-africa' => 'Africa',
@@ -1698,8 +1671,8 @@ Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagi
 'recentchanges-label-minor' => 'Aqueste cambiament es menor',
 'recentchanges-label-bot' => 'Aqueste cambiament es estat efectuat per un bòt.',
 'recentchanges-label-unpatrolled' => 'Aqueste cambiament es pas estat verificat encara.',
-'recentchanges-legend-newpage' => '$1 - pagina novèla',
-'rcnote' => 'Vaquí {{PLURAL:$1|lo darrièr cambiament|los $1 darrièrs cambiaments}} dempuèi {{PLURAL:$2|lo darrièr jorn|los <b>$2</b> darrièrs jorns}}, determinat{{PLURAL:$1||s}} lo $4, a $5.',
+'recentchanges-legend-heading' => "'''Legenda :'''",
+'recentchanges-legend-newpage' => '(veire tanben la [[Special:NewPages|lista de las paginas novèlas]]).',
 'rcnotefrom' => "Vaquí los cambiaments efectuats dempuèi lo '''$2''' ('''$1''' al maximum).",
 'rclistfrom' => 'Afichar las modificacions novèlas dempuèi lo $1.',
 'rcshowhideminor' => '$1 los cambiaments menors',
@@ -2182,10 +2155,9 @@ Las entradas <del>barradas</del> son estadas resolgudas.',
 'protectedpages' => 'Paginas protegidas',
 'protectedpages-indef' => 'Unicament las proteccions permanentas',
 'protectedpages-cascade' => 'Unicament las proteccions en cascada',
-'protectedpagestext' => 'Las paginas seguentas son protegidas contra las modificacions e/o lo cambiament de nom :',
+'protectedpages-noredirect' => 'Amagar las redireccions',
 'protectedpagesempty' => 'Cap de pagina es pas protegida actualament.',
 'protectedtitles' => 'Títols protegits',
-'protectedtitlestext' => 'Los títols seguents son protegits a la creacion',
 'protectedtitlesempty' => 'Cap de títol es pas actualament protegit amb aquestes paramètres.',
 'listusers' => 'Lista dels participants',
 'listusers-editsonly' => "Far veire sonque los utilizaires qu'an al mens una contribucion",
@@ -2238,9 +2210,6 @@ Podètz restrénher la vista en seleccionant un tipe de jornal, un nom d’utili
 'allpagesto' => 'Afichar las paginas fins a :',
 'allarticles' => 'Totas las paginas',
 'allinnamespace' => 'Totas las paginas (espaci de noms $1)',
-'allnotinnamespace' => 'Totas las paginas (que son pas dins l’espaci de noms $1)',
-'allpagesprev' => 'Precedent',
-'allpagesnext' => 'Seguent',
 'allpagessubmit' => 'Validar',
 'allpagesprefix' => 'Afichar las paginas que començan pel prefix :',
 'allpagesbadtitle' => 'Lo títol rensenhat per la pagina es incorrècte o possedís un prefix reservat. Conten segurament un o mantun caractèr especial que pòt pas èsser utilizats dins los títols.',
@@ -2575,7 +2544,6 @@ S'una pagina novèla amb lo meteis nom es estada creada dempuèi la supression,
 'undeletebtn' => 'Restablir',
 'undeletelink' => 'veire/restablir',
 'undeleteviewlink' => 'veire',
-'undeletereset' => 'Reïnicializar',
 'undeleteinvert' => 'Inversar la seleccion',
 'undeletecomment' => 'Motiu :',
 'undeletedrevisions' => '{{PLURAL:$1|1 revision restablida|$1 revisions restablidas}}',
@@ -2661,7 +2629,6 @@ La darrièra intrada del jornal dels blocatges es indicada çaijós a títol d
 'block' => 'Blocar un utilizaire',
 'unblock' => 'Desblocar un utilizaire',
 'blockip' => 'Blocar en escritura',
-'blockip-title' => 'Blocar l’utilizaire',
 'blockip-legend' => 'Blocar en escritura',
 'blockiptext' => "Utilizatz lo formulari çaijós per blocar l'accès a las modificacions a partir d'una adreça IP especifica o d'un nom d'utilizaire.
 Una tala mesura deu pas èsser presa pas que per empachar lo vandalisme e en acòrdi amb las [[{{MediaWiki:Policy-url}}|règlas intèrnas]].
@@ -2669,7 +2636,6 @@ Donatz çaijós un motiu precís (per exemple en citant las paginas que son esta
 'ipadressorusername' => 'Adreça IP o nom d’utilizaire :',
 'ipbexpiry' => 'Durada del blocatge :',
 'ipbreason' => 'Motiu :',
-'ipbreasonotherlist' => 'Autre motiu',
 'ipbreason-dropdown' => '* Motius de blocatge mai frequents
 ** Vandalisme
 ** Insercion d’informacions faussas
@@ -2686,8 +2652,6 @@ Donatz çaijós un motiu precís (per exemple en citant las paginas que son esta
 'ipbsubmit' => 'Blocar aqueste utilizaire',
 'ipbother' => 'Autra durada',
 'ipboptions' => '2 oras:2 hours,1 jorn:1 day,3 jorns:3 days,1 setmana:1 week,2 setmanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 an:1 year,indefinidament:infinite',
-'ipbotheroption' => 'autre',
-'ipbotherreason' => 'Motiu diferent o suplementari',
 'ipbhidename' => 'Amagar lo nom d’utilizaire de las modificacions e de las listas',
 'ipbwatchuser' => "Seguir las paginas d'utilizaire e de discussion d'aqueste utilizaire",
 'ipb-disableusertalk' => "Empachar l'utilizaire de modificar sa pagina de discussion pendent lo blocatge",
@@ -2773,7 +2737,6 @@ Consultatz la [[Special:BlockList|lista dels utilizaires blocats]] per veire los
 'sorbsreason' => 'Vòstra adreça IP es listada en tant que mandatari (proxy) dobèrt DNSBL per {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Vòstra adreça IP es listada en tant que mandatari (proxy) dobèrt DNSBL per {{SITENAME}}.
 Podètz pas crear un compte',
-'cant-block-while-blocked' => "Podètz pas blocar d'autres utilizaires pendent que sètz blocat(ada).",
 'cant-see-hidden-user' => "L'utilizaire qu'ensajatz de blocar es ja estat blocat e amagat. Sens lo drech hideuser, podètz pas veire o modificar lo blocatge de l'utilizaire.",
 'ipbblocked' => "Podètz pas blocar o desblocar d'autres utilizaire, perque vos {{GENDER:|meteis|meteissa|meteis}} sètz {{GENDER:|blocat|blocada|blocat}}.",
 'ipbnounblockself' => 'Sètz pas autorizat a vos desblocar vos meteis',
@@ -2817,7 +2780,6 @@ Aquò pòt provocar un cambiament radical e imprevist per una pagina consultada
 Dins aqueste cas, vos caldrà desplaçar o fusionar la pagina manualament se o volètz.",
 'movearticle' => "Tornar nomenar l'article",
 'moveuserpage-warning' => "'''Atencion :''' Sètz a mand de tornar nomenar una pagina d’utilizaire. Notatz que sola la pagina serà renomenada e que l’utilizaire '''ne''' serà '''pas''' renomenat.",
-'movenologin' => 'Vos sètz pas identificat(ada)',
 'movenologintext' => "Per poder tornar nomenar un article, vos cal èsser [[Special:UserLogin|connectat(ada)]]
 en tant qu'utilizaire enregistrat.",
 'movenotallowed' => 'Avètz pas la permission de tornar nomenar de paginas.',
@@ -2834,10 +2796,6 @@ en tant qu'utilizaire enregistrat.",
 'articleexists' => "Existís ja un article que pòrta aqueste títol, o lo títol qu'avètz causit es pas valid.
 Causissètz-ne un autre.",
 'cantmove-titleprotected' => 'Avètz pas la possibilitat de desplaçar una pagina cap a aqueste emplaçament perque lo títol es estat protegit a la creacion.',
-'talkexists' => "La pagina ela-meteissa es estada desplaçada amb succès, mas
-la pagina de discussion a pas pogut èsser desplaçada perque ja n'existissiá una
-jol nom novèl. Se vos plai, fusionatz-las manualament.",
-'movedto' => 'renomenat en',
 'movetalk' => 'Tornar nomenar tanben la pagina de discussion associada',
 'move-subpages' => 'Tornar nomenar las sospaginas (fins a $1 paginas)',
 'move-talk-subpages' => 'Tornar nomenar las sospaginas de la pagina de discussion (fins a $1 paginas)',
@@ -3669,15 +3627,10 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
 'exif-urgency-high' => 'Nauta ($1)',
 'exif-urgency-other' => "Urgéncia definida per l'utilizaire ($1)",
 
-# External editor support
-'edit-externally' => 'Modificar aqueste fichièr en utilizant una aplicacion extèrna',
-'edit-externally-help' => "(Consultatz [https://www.mediawiki.org/wiki/Manual:External_editors/oc las instruccions d'installacion] per mai d’entresenhas)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tot',
 'namespacesall' => 'Totes',
 'monthsall' => 'totes',
-'limitall' => 'totes',
 
 # Email address confirmation
 'confirmemail' => "Confirmar l'adreça de corrièr electronic",
@@ -3696,7 +3649,6 @@ Retorn del programa de corrièr : $1',
 'confirmemail_needlogin' => 'Vos cal vos $1 per confirmar vòstra adreça de corrièr electronic.',
 'confirmemail_success' => 'Vòstra adreça de corrièr electronic es confirmada. Ara, vos podètz connectar e aprofechar del wiki.',
 'confirmemail_loggedin' => 'Ara, vòstra adreça es confirmada',
-'confirmemail_error' => "Un problèma s'es produch en volent enregistrar vòstra confirmacion.",
 'confirmemail_subject' => 'Confirmacion d’adreça de corrièr electronic per {{SITENAME}}',
 'confirmemail_body' => "Qualqu’un, probablament vos,e amb l’adreça IP $1, a enregistrat un compte « $2 » amb aquesta adreça de corrièr electronic sul site {{SITENAME}}.
 
@@ -3775,6 +3727,11 @@ Confirmatz que desiratz tornar crear aqueste article.",
 'imgmultigo' => 'Accedir !',
 'imgmultigoto' => 'Anar a la pagina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(lenga per defaut)',
+'img-lang-info' => 'Afichar aqueste imatge en $1 $2.',
+'img-lang-go' => 'Amodar',
+
 # Table pager
 'ascending_abbrev' => 'creissent',
 'descending_abbrev' => 'descreissent',
@@ -3874,6 +3831,7 @@ Ensajatz la previsualizacion normala.',
 'redirect-lookup' => 'Recèrca :',
 'redirect-value' => 'Valor :',
 'redirect-user' => "ID de l'utilizaire",
+'redirect-page' => 'ID de pagina',
 'redirect-revision' => 'Revision de la pagina',
 'redirect-file' => 'Nom del fichièr',
 'redirect-not-exists' => 'Valor pas trobada',
@@ -3891,9 +3849,9 @@ Ensajatz la previsualizacion normala.',
 
 # Special:SpecialPages
 'specialpages' => 'Paginas especialas',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Paginas especialas normalas.
-* <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>
-* <span class="mw-specialpagecached">Paginas especialas solament en escondedor (poirián èsser obsolètas).</span>',
+* <span class="mw-specialpagerestricted">Paginas especialas restrenchas.</span>',
 'specialpages-group-maintenance' => 'Rapòrts de mantenença',
 'specialpages-group-other' => 'Autras paginas especialas',
 'specialpages-group-login' => "S'identificar / s'inscriure",
@@ -3940,7 +3898,6 @@ Ensajatz la previsualizacion normala.',
 
 # Special:ComparePages
 'comparepages' => 'Comparar de paginas',
-'compare-selector' => 'Comparar las versions de las paginas',
 'compare-page1' => 'Pagina 1',
 'compare-page2' => 'Pagina 2',
 'compare-rev1' => 'Version 1',
@@ -4110,10 +4067,12 @@ Ensajatz la previsualizacion normala.',
 'expand_templates_input' => 'Picatz vòstre tèxte aicí :',
 'expand_templates_output' => 'Visualizatz lo resultat :',
 'expand_templates_xml_output' => 'Sortida XML',
+'expand_templates_html_output' => 'Sortida en HTML sens filtrar',
 'expand_templates_ok' => "D'acòrdi",
 'expand_templates_remove_comments' => 'Suprimir los comentaris.',
 'expand_templates_remove_nowiki' => 'Suprimís los marcadors <nowiki> dins lo resultat',
 'expand_templates_generate_xml' => "Veire l'arborescéncia XML",
+'expand_templates_generate_rawhtml' => 'Afichar lo HTML brut',
 'expand_templates_preview' => 'Previsualizacion',
 
 );
index 61c1e36..d5c8fb1 100644 (file)
@@ -52,7 +52,7 @@ $messages = array(
 'history_short' => 'Seena',
 'edit' => 'Barressu',
 
-# 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).
+# 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).
 'aboutsite' => "Wa'ee {{SITENAME}}",
 'aboutpage' => "Project:Wa'ee",
 'currentevents' => 'Gocha amma',
index 2561283..060dd3d 100644 (file)
@@ -83,7 +83,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ଖରାପନାମ' ),
        'Blankpage'                 => array( 'ଖାଲିପୃଷ୍ଠା' ),
        'Block'                     => array( 'ଅଟକାଇବେ', 'ଆଇପିଅଟକାଇବେ', 'ସଭ୍ୟଅଟକାଇବେ' ),
-       'Blockme'                   => array( 'ମୋତେଅଟକାଇବେ' ),
        'Booksources'               => array( 'ବହିସ୍ରୋତ' ),
        'BrokenRedirects'           => array( 'ଭଙ୍ଗାଲେଉଟାଣି' ),
        'Categories'                => array( 'ଶ୍ରେଣୀ' ),
@@ -95,7 +94,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ଖାତାଖୋଲିବେ' ),
        'Deadendpages'              => array( 'ଆଗକୁରାହାନଥିବାପୃଷ୍ଠା' ),
        'DeletedContributions'      => array( 'ହଟାଇଦିଆଯାଇଥିବାଅବଦାନ' ),
-       'Disambiguations'           => array( 'ବହୁବିକଳ୍ପୀ' ),
        'DoubleRedirects'           => array( 'ଦୁଇଥରଲେଉଟାଣି' ),
        'EditWatchlist'             => array( 'ଧ୍ୟାନସୂଚୀବଦଳାଇବେ' ),
        'Emailuser'                 => array( 'ସଭ୍ୟଙ୍କୁମେଲକରିବେ' ),
@@ -281,7 +279,6 @@ $messages = array(
 'tog-minordefault' => 'ସବୁଯାକ ସମ୍ପାଦନାକୁ ଛାଏଁ ଛୋଟ ବଦଳ ଭାବରେ ସୂଚିତ କରିବେ',
 'tog-previewontop' => 'ଏଡ଼ିଟ ବାକ୍ସ ଆଗରୁ ଦେଖଣା ଦେଖାଇବେ',
 'tog-previewonfirst' => 'ପ୍ରଥମ ବଦଳର ଦେଖଣା ଦେଖାଇବେ',
-'tog-nocache' => 'ବ୍ରାଉଜର ପୃଷ୍ଠା ସାଇତିବାକୁ ଅକାମୀ କରନ୍ତୁ',
 'tog-enotifwatchlistpages' => 'ମୋ ଦେଖଣାତାଲିକାରେ ଥିବା ପୃଷ୍ଠା ବା ଫାଇଲରେ କିଛି ବଦଳ ହେଲେ ମୋତେ ଇମେଲ କରିବେ',
 'tog-enotifusertalkpages' => 'ମୋର ଆଲୋଚନା ପୃଷ୍ଠାରେ କିଛି ବଦଳ ହେଲେ ମୋତେ ଇ-ମେଲ କରିବେ',
 'tog-enotifminoredits' => 'ପୃଷ୍ଠାରେ ଏବଂ ଫାଇଲଗୁଡିକରେ ଛୋଟ ଛୋଟ ବଦଳ ହେଲେ ବି ମୋତେ ଇ-ମେଲ କରିବେ',
@@ -415,7 +412,6 @@ $messages = array(
 'qbedit' => 'ସମ୍ପାଦନା (Edit)',
 'qbpageoptions' => 'ଏହି ପୃଷ୍ଠାଟି',
 'qbmyoptions' => 'ମୋ ପୃଷ୍ଠାଗୁଡ଼ିକ',
-'qbspecialpages' => 'ବିଶେଷ ପୃଷ୍ଠା',
 'faq' => 'ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ',
 'faqpage' => 'Project:ବାରମ୍ବାର ପଚରାଯାଉଥିବା ପ୍ରଶ୍ନ',
 
@@ -624,9 +620,6 @@ $1',
 'perfcachedts' => 'ତଳଲିଖିତ ତଥ୍ୟଗୁଡିକୁ ଅସ୍ଥାୟୀ ଭାବେ ରଖାଗଲା ଏବଂ  $1ରେ ଶେଷଥର ଅପଡେଟ ହୋଇଥିଲା । ଅତିବେଶିରେ {{PLURAL:$1|ଫଳ|$1ଫଳଗୁଡିକ }} ଅସ୍ଥାୟୀ ରୂପେ ରହି ପାରିବ ।',
 'querypage-no-updates' => 'ଏହି ପୃଷ୍ଠାଟି ପାଇଁ ଅପଡେଟସବୁ ଏବେ ଅଚଳ କରାଯାଇଅଛି ।
 ଏଠାରେ ଥିବା ତଥ୍ୟ ସବୁ ଏବେ ସତେଜ ହୋଇପାରିବ ନାହିଁ ।',
-'wrong_wfQuery_params' => 'wfQuery() ପାଇଁ ଭୁଲ ପାରାମିଟର<br />
-କାମ: $1<br />
-ଖୋଜା ପ୍ରଶ୍ନ: $2',
 'viewsource' => 'ମୂଳାଧାର ଦେଖିବେ',
 'viewsource-title' => '$1 ନିମନ୍ତେ ଆଧାର ଦେଖିବେ',
 'actionthrottled' => 'କାମଟି ବନ୍ଦ କରିଦିଆଗଲା',
@@ -800,7 +793,7 @@ continue using your old password.',
 'user-mail-no-body' => 'ଏକ ଖାଲି କିମ୍ବା ଅଦରକାରୀ ଛୋଟ ଲେଖା ଥିବା ମେଲ ପଠେଇବାକୁ ଚେଷ୍ଟା କରିଥିଲେ',
 
 # Change password dialog
-'resetpass' => 'ପାସୱାର୍ଡ଼ ବଦଳାନ୍ତୁ',
+'changepassword' => 'ପାସୱର୍ଡ଼ ବଦଳାନ୍ତୁ',
 'resetpass_announce' => 'ଆପଣ ଏକ ଅସ୍ଥାୟୀ ଇ-ମେଲରେ ଯାଇଥିବା କୋଡ଼ ସହାୟତାରେ ଲଗ ଇନ କରିଅଛନ୍ତି ।
 ଲଗ ଇନ ଶେଷ କରିବା ନିମନ୍ତେ ଆପଣଙ୍କୁ ଏହିଠାରେ ନୂଆ ପାସବାର୍ଡ଼ଟିଏ ଦେବାକୁ ପଡ଼ିବ:',
 'resetpass_header' => 'ଖାତାର ପାସୱାର୍ଡ଼ଟିକୁ ବଦଳାଇ ଦିଅନ୍ତୁ',
@@ -1189,10 +1182,6 @@ $3ଙ୍କ ଦେଇ ଦିଆଯାଇଥିବା କାରଣ ହେଲା '
 'revisiondelete' => 'ସଙ୍କଳନମାନ ଲିଭାଇଦିଅନ୍ତୁ/ଲିଭାଯାଇଥିଲେ ପଛକୁ ଫେରାଇ ନିଅନ୍ତୁ',
 'revdelete-nooldid-title' => 'ଲକ୍ଷ କରାଯାଇଥିବା ସଙ୍କଳନଟି ଭୁଲ ଅଟେ',
 'revdelete-nooldid-text' => 'ଆପଣ ବୋଧେ ଏହି କାମ କରିବା ପାଇଁ ଏକ ନିର୍ଦିଷ୍ଟ ସଂସ୍କରଣ ଧାର୍ଯ୍ୟ କରିନାହାନ୍ତି, ଦିଆଯାଇଥିବା ସଂସ୍କରଣଟି ନାହିଁ, ବା ଆପଣ ଏବେକର ସଂସ୍କରଣଟିକୁ ଲୁଚାଇଦେବାକୁ ଚେଷ୍ଟା କରୁଛନ୍ତି ।',
-'revdelete-nologtype-title' => 'କିଛି ଲଗ ପ୍ରକାର ଦିଆଯାଇ ନାହିଁ',
-'revdelete-nologtype-text' => 'ଆପଣ ଏହି କାମଟି କରିବା ନିମନ୍ତେ ଗୋଟିଏ ନିର୍ଦିଷ୍ଟ ଲଗ ଟାଇପ ବାବଦରେ ଜଣାଇନାହାନ୍ତି ।',
-'revdelete-nologid-title' => 'ଭୁଲ ଲଗଟିଏ ଦିଆହୋଇଅଛି',
-'revdelete-nologid-text' => 'ଆପଣ ବୋଧେ ଏହି କାମ କରିବା ପାଇଁ ଏକ ନିର୍ଦିଷ୍ଟ ଇତିହାସ ଘଟଣା ଦେଇନାହାନ୍ତି ବା ଦିଆଯାଇଥିବା ନିବେଶ ମୂଳରୁ ନାହିଁ ।',
 'revdelete-no-file' => 'ଆପଣ ସୂଚିତ କରିଥିବା ଫାଇଲଟି ନାହିଁ ।',
 'revdelete-show-file-confirm' => '$2 ତାରିଖ $3 ବେଳେ "<nowiki>$1</nowiki>" ଫାଇଲର ଏକ ଲିଭାଯାଇଥିବା ସଙ୍କଳନକୁ ଦେଖିବାକୁ ଚାହାନ୍ତି ବୋଲି ଆପଣ ନିଶ୍ଚିତ କି ?',
 'revdelete-show-file-submit' => 'ହଁ',
@@ -1226,8 +1215,6 @@ $1",
 'logdelete-failure' => "'''ଲଗ ଦେଖଣା ଥୟ କରାଯାଇପାରିଲା ନାହିଁ:'''
 $1",
 'revdel-restore' => 'ଦେଖଣାକୁ ବଦଳାଇବେ',
-'revdel-restore-deleted' => 'ଲିଭାଯାଇଥିବା ସଙ୍କଳନସବୁ',
-'revdel-restore-visible' => 'ଦେଖାଯାଉଥିବା ସଙ୍କଳନସବୁ',
 'pagehist' => 'ପୃଷ୍ଠାର ଇତିହାସ',
 'deletedhist' => 'ଲିଭାଯାଇଥିବା ଇତିହାସ',
 'revdelete-hide-current' => '$2,$1 ତାରିଖରେ ହୋଇଥିବା ଲେଖାଗୁଡିକ ଦେଖାଇବାରେ ଅସୁବିଧା ହେଉଛି : ଏହା ହେଉଛି ବର୍ତମାନର ପୁନଃଦେଖା ।
@@ -1305,12 +1292,8 @@ $1",
 # 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}}ର ଆଗରୁ',
@@ -1319,10 +1302,8 @@ $1",
 'nextn-title' => 'ଆଗର $1ଟି  {{PLURAL:$1|result|ଫଳସବୁ}}',
 'shown-title' => '$1 ପ୍ରତି ପୃଷ୍ଠାର {{PLURAL:$1|ଫଳାଫଳ|ଫଳାଫଳ}} ଦେଖାଇବେ ।',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) ଟି ଦେଖିବେ',
-'searchmenu-legend' => 'ଖୋଜିବା ବିକଳ୍ପ',
 'searchmenu-exists' => "'''ଏହି ଉଇକିରେ \"[[:\$1]]\" ନାଆଁରେ ପୃଷ୍ଠାଟିଏ ଅଛି ।'''",
 'searchmenu-new' => "'''ଏହି ପ୍ରସଙ୍ଗଟି ଆଗରୁ ନାହିଁ, ତେଣୁ ''[[:$1]]'' ନାମରେ ପ୍ରସଙ୍ଗଟିଏ ଏଠାରେ ଗଢ଼ନ୍ତୁ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ଏହି ନାମ ଆଗରୁ ଥିବା ପୃଷ୍ଠାସବୁ ଖୋଜିବେ]]',
 'searchprofile-articles' => 'ସୂଚୀ ପୃଷ୍ଠା',
 'searchprofile-project' => 'ସାହାଯ୍ୟ ଓ ପ୍ରକଳ୍ପ ପୃଷ୍ଠା',
 'searchprofile-images' => 'ମଲ୍ଟିମିଡ଼ିଆ',
@@ -1343,21 +1324,16 @@ $1",
 'search-interwiki-default' => '$1 ଫଳାଫଳ:',
 'search-interwiki-more' => '(ଅଧିକ)',
 'search-relatedarticle' => 'ଯୋଡ଼ା',
-'mwsuggest-disable' => 'ଖୋଜା ମତାମତକୁ ଅଚଳ କରାଇବେ',
 'searcheverything-enable' => 'ସବୁଗୁଡ଼ିକ ନେମସ୍ପେସରେ ଖୋଜିବେ',
 'searchrelated' => 'ଯୋଡ଼ା',
 'searchall' => 'ସବୁ',
 'showingresults' => "ତଳେ {{PLURAL:$1|'''ଗୋଟିଏ'''  ଫଳାଫଳ|'''$1'''ଟି ଫଳାଫଳ}} ଦେଖାଉଛୁ ଯାହା #'''$2'''ରେ ଆରମ୍ଭ ହୋଇଅଛି ।",
 'showingresultsnum' => "ତଳେ {{PLURAL:$3|ଗୋଟିଏ ଫଳାଫଳ|'''$3'''ଟି ଫଳାଫଳ}} ଦେଖାଉଛୁ ଯାହା #'''$2'''ରେ ଆରମ୍ଭ ହୋଇଅଛି ।",
 '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' => 'କିଛି ନାହିଁ',
@@ -1370,7 +1346,6 @@ $1",
 'preferences' => 'ପସନ୍ଦ',
 'mypreferences' => 'ପସନ୍ଦ',
 'prefs-edits' => 'ସମ୍ପାଦନା ସଂଖ୍ୟା:',
-'changepassword' => 'ପାସୱର୍ଡ଼ ବଦଳାନ୍ତୁ',
 'prefs-skin' => 'ବହିରାବରଣ',
 'skin-preview' => 'ସାଇତା ଆଗରୁ ଦେଖଣା',
 'datedefault' => 'କୌଣସି ପସନ୍ଦ ନାହିଁ',
@@ -1393,13 +1368,11 @@ $1",
 'prefs-email' => 'ଇ-ମେଲ ବିକଳ୍ପମାନ',
 'prefs-rendering' => 'ଦେଖଣା',
 'saveprefs' => 'ସାଇତିବେ [Save]',
-'resetprefs' => 'ସାଇତା ହୋଇନଥିବା ବଦଳ ଲିଭାଇଦେବେ',
 'restoreprefs' => 'ଆପେଆପେ ଥିବା ମୂଳ ସଜାଣିକୁ ଫେରିଯିବେ',
 'prefs-editing' => 'ସମ୍ପାଦନା',
 'rows' => 'ଧାଡ଼ି:',
 'columns' => 'ସ୍ତମ୍ଭସବୁ:',
 'searchresultshead' => 'ଖୋଜିବା',
-'resultsperpage' => 'ପୃଷ୍ଠା ପ୍ରତି ହିଟ:',
 'stub-threshold' => '<a href="#" class="stub">ଅସମ୍ପୂର୍ଣ ପୃଷ୍ଠା ଲିଙ୍କ</a> ସଜାଣି (ବାଇଟ) ପାଇଁ ସୀମା:',
 'stub-threshold-disabled' => 'ଅଚଳ କରିଦିଆଯାଇଛି',
 'recentchangesdays' => 'ନଗଦ ବଦଳରେ ଦେଖାଇବା ପାଇଁ ବାକିଥିବା ଦିନ:',
@@ -1411,7 +1384,6 @@ $1",
 'localtime' => 'ସ୍ଥାନୀୟ ସମୟ:',
 'timezoneuseserverdefault' => 'ଉଇକିର ଆପେଆପେ ଆସୁଥିବା ($1) ବ୍ୟବହାର କରିବେ',
 'timezoneuseoffset' => 'ବାକି (ଅଫସେଟ ସ୍ଥିର କରନ୍ତୁ)',
-'timezoneoffset' => 'ଅଫସେଟ¹:',
 'servertime' => 'ସର୍ଭର ସମୟ:',
 'guesstimezone' => 'ବ୍ରାଉଜରରୁ ଭରିଦିଅନ୍ତୁ',
 'timezoneregion-africa' => 'ଆଫ୍ରିକା',
@@ -1650,7 +1622,6 @@ HTML ଟାଗ ପରଖିନିଅନ୍ତୁ ।',
 'recentchanges-label-minor' => 'ଏହା ଗୋଟିଏ ଛୋଟ ବଦଳ',
 'recentchanges-label-bot' => "ଏହି ବଦଳଟି ଜଣେ '''ବଟ'''ଙ୍କ ଦେଇ କରାଯାଇଥିଲା",
 'recentchanges-label-unpatrolled' => 'ଏହି ବଦଳଟିକୁ ଏ ଯାଏଁ ପରଖା ଯାଇନାହିଁ',
-'rcnote' => "ଗତ $5, $4 ସୁଦ୍ଧା {{PLURAL:$2|ଦିନ|'''$2''' ଦିନ}}ରେ ତଳ {{PLURAL:$1|'''ଗୋଟିଏ''' ବଦଳ|'''$1'''ଟି ଶେଷ ବଦଳ}} ହୋଇଅଛି ।",
 'rcnotefrom' => "'''$2''' ପରର ବଦଳସବୁ ତଳେ ଦିଆଗଲା ('''$1''' ଯାଏଁ ଦେଖାଯାଇଛି) ।",
 'rclistfrom' => '$1ରୁ ଆରମ୍ଭ କରି ନୂଆ ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ',
 'rcshowhideminor' => '$1 ଟି ଛୋଟମୋଟ ବଦଳ',
@@ -2134,10 +2105,8 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'protectedpages' => 'କିଳାଯାଇଥିବା ପୃଷ୍ଠାମାନ',
 'protectedpages-indef' => 'କେବଳ ଆସିମୀତ କାଳ ପାଇଁ କିଳିବା',
 'protectedpages-cascade' => 'କିଲାଯାଇଥିବା ପୃଷ୍ଠାସବୁକୁ ଏକାଠି ସଜାଇ ରଖୁଅଛୁଁ',
-'protectedpagestext' => 'ଏହି ତଳଲିଖିତ ପୃଷ୍ଠାମାନ ଘୁଞ୍ଚାଇବାରୁ ବା ସମ୍ପାଦନାରୁ କିଳାଯାଇଅଛି',
 'protectedpagesempty' => 'ଏହି ସବୁ ସଜାଣି ସହ ଗୋଟିଏ ବି ପୃଷ୍ଠା ଏବେ କିଳାଯାଇ ନାହିଁ ।',
 'protectedtitles' => 'କିଳାଯାଇଥିବା ଶିରୋନାମାମାନ',
-'protectedtitlestext' => 'ତଳଲିଖିତ ଶିରୋନାମା ସବୁ ତିଆରି କରିବାରୁ କିଳାଯାଇଅଛି ।',
 'protectedtitlesempty' => 'ଏହି ସବୁ ସଜାଣି ସହ ଗୋଟିଏ ବି ପୃଷ୍ଠା ଏବେ କିଳାଯାଇ ନାହିଁ ।',
 'listusers' => 'ବ୍ୟବହାରକାରୀଙ୍କ ତାଲିକା',
 'listusers-editsonly' => 'କେବଳ କିଛି ସମ୍ପାଦନା କରିଥିବା ସଭ୍ୟମାନଙ୍କୁ ଦେଖାଇବେ',
@@ -2188,9 +2157,6 @@ URLଟି ଠିକ ଅଚିକି କି ନାଁ ଓ ସାଇଟଟି ସ
 'allpagesto' => 'ଏହି ନାଆଁରେ ଶେଷ ହେଉଥିବା ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଦେଖାଇବେ:',
 'allarticles' => 'ସବୁ ପୃଷ୍ଠା',
 'allinnamespace' => 'ସବୁ ପୃଷ୍ଠା ($1 ନେମସ୍ପେସ)',
-'allnotinnamespace' => 'ସବୁ ପୃଷ୍ଠା ($1 ନେମସ୍ପେସରେ ନାହିଁ)',
-'allpagesprev' => 'ପୂର୍ବବର୍ତ୍ତୀ',
-'allpagesnext' => 'ପର',
 'allpagessubmit' => 'ଯିବେ',
 'allpagesprefix' => 'ଉପସର୍ଗ ଥିବା ପୃଷ୍ଠାସମୂହର ଦେଖଣା:',
 'allpagesbadtitle' => 'ଆପଣ ଅନୁରୋଧ କରିଥିବା ପୃଷ୍ଠାଟି ଭୁଲ, ଅଲଗା ଭାଷାର ବ୍ୟବହାର କରାଯାଇଛି ବା ଭୁଲ ଇଣ୍ଟର ଉଇକି ଉପସର୍ଗ ଦିଆଯାଇଛି ।
@@ -2527,7 +2493,6 @@ $2ଙ୍କ ଦେଇ ଶେଷଥର ହୋଇଥିବା ସଂସ୍କର
 'undeletebtn' => 'ପୁନଃସ୍ଥାପନ',
 'undeletelink' => 'ଦେଖିବା/ପୁନଃସ୍ଥାପନ',
 'undeleteviewlink' => 'ଦେଖଣା',
-'undeletereset' => 'ପୁନସ୍ଥାପନ',
 'undeleteinvert' => 'ବଛାଯାଇଥିବା ଲେଖାକୁ ଓଲଟେଇଦେବେ',
 'undeletecomment' => 'କାରଣ:',
 'undeletedrevisions' => '{{PLURAL:$1|ଗୋଟିଏ ସଂକଳନ|$1 ଗୋଟି ସଂକଳନ}} ପୁନସ୍ଥାପନ କରାଗଲା',
@@ -2617,7 +2582,6 @@ $1',
 'block' => 'ସଭ୍ୟଙ୍କୁ ଅଟକାଇବେ',
 'unblock' => 'ବାସନ୍ଦ ହୋଇଥିବା ସଭ୍ୟଙ୍କୁ ମୁକୁଳାଇବେ',
 'blockip' => 'ସଭ୍ୟଙ୍କୁ ଅଟକାଇବେ',
-'blockip-title' => 'ସଭ୍ୟଙ୍କୁ ବାସନ୍ଦ କରିବେ',
 'blockip-legend' => 'ସଭ୍ୟଙ୍କୁ ବାସନ୍ଦ କରିବେ',
 'blockiptext' => 'ଏକ ନିର୍ଦିଷ୍ଟ IP ଠିକଣା ବା ବ୍ୟବହାରକାରୀଙ୍କ ଲେଖିବା ସୁବିଧାକୁ ବାରାଁ କରିବା ନିମନ୍ତେ ଏହି ତଳ ଫର୍ମଟି ବ୍ୟବହାର କରନ୍ତୁ ।
 ଏହା କେବଳ ଅପବ୍ୟବହାରକୁ ରୋକିବା ନିମନ୍ତେ କରାଯାଇଥାଏ, ଏହା [[{{MediaWiki:Policy-url}}|ନୀତି]] ଅନୁସାରେ କରାଯାଇଥାଏ ।
@@ -2625,7 +2589,6 @@ $1',
 'ipadressorusername' => 'ବ୍ୟବହାରକାରୀଙ୍କର IP ଠିକଣା ବା ଇଉଜର ନାମ:',
 'ipbexpiry' => 'ମିଆଦ:',
 'ipbreason' => 'କାରଣ:',
-'ipbreasonotherlist' => 'ଅଲଗା କାରଣ',
 'ipbreason-dropdown' => '*ସାଧାରଣ ଅଟକ କାରଣ
 ** ଭୁଲ ବିବରଣୀ ଦେବା
 ** ପୃଷ୍ଠାରୁ ବିବରଣୀ କାଢିବା
@@ -2641,8 +2604,6 @@ $1',
 'ipbsubmit' => 'ସଭ୍ୟଙ୍କୁ ଅଟକାଇଦେବେ',
 'ipbother' => 'ବାକି ସମୟ:',
 'ipboptions' => '୨ ଘଣ୍ଟା:2 hours,୧ ଦିନ:1 day,୩ ଦିନ:3 days,୧ ସପ୍ତାହ:1 week,୨ ସପ୍ତାହ:2 weeks,୧ ମାସ:1 month,୩ ମାସ:3 months,୬ ମାସ:6 months,୧ ବର୍ଷ:1 year,ଅସିମୀତ କାଳ:infinite',
-'ipbotheroption' => 'ବାକି',
-'ipbotherreason' => 'ବାକି/ଅଧିକ କାରଣ:',
 'ipbhidename' => 'ଇଉଜର ନାମକୁ ସମ୍ପାଦନା ଓ ତାଲିକାରୁ ଲୁଚାଇବେ',
 'ipbwatchuser' => 'ସଭ୍ୟଙ୍କ ପୃଷ୍ଠା ଓ ତାହାଙ୍କର ଆଲୋଚନା ପୃଷ୍ଠକୁ ଦେଖିବେ',
 'ipb-disableusertalk' => 'ଅଟକାଯାଇଥିବା ବେଳେ ଏହି ସଭ୍ୟଙ୍କୁ ତାହାଙ୍କ ନିଜ ଆଲୋଚନା ପୃଷ୍ଠାକୁ ବଦଳାଇବାକୁ ବାରଣ କରନ୍ତୁ',
@@ -2734,7 +2695,6 @@ $1ର ଅଟକ ପାଇଁ ଦିଆଯାଇଥିବା କାରଣଟି 
 'sorbsreason' => '{{SITENAME}} ଦେଇ ଆପଣଙ୍କ IP ଠିକଣାଟି DNSBL ଭିତରେ ଏକ ଖୋଲା ପ୍ରକ୍ସି ଭାବରେ ନଥିଭୁକ୍ତ ହୋଇଅଛି ।',
 'sorbs_create_account_reason' => '{{SITENAME}} ଦେଇ ଆପଣଙ୍କ IP ଠିକଣାଟି DNSBL ଭିତରେ ଏକ ଖୋଲା ପ୍ରକ୍ସି ଭାବରେ ନଥିଭୁକ୍ତ ହୋଇଅଛି ।
 ଆପଣ ନୂଆ ଖାତାଟିଏ ଖୋଲି ପାରିବେ ନାହିଁ',
-'cant-block-while-blocked' => 'ଆପଣ ନିଜେ ଅଟକାଯାଇଥିବା ଯାଏଁ କେବେ ଅନ୍ୟମାନଙ୍କୁ ଅଟକାଇପାରିବେ ନାହିଁ ।',
 'cant-see-hidden-user' => 'ଆପଣ ଅଟକାଇବାକୁ ଚାହୁଁଥିବା ସଭ୍ୟଜଣକ ଆଗରୁ ଅଟକାଯାଇଛନ୍ତି ଓ ଲୁଚାଯାଇଛନ୍ତି ।
 ଯେହେତୁ ଆପଣଙ୍କ ପାଖରେ ସଭ୍ୟଙ୍କୁ ଲୁଚାଇବା ଅଧିକାର ନାହୀଁ, ଆପଣ ସଭ୍ୟଙ୍କର ଅଟକକୁ ଦେଖିପାରିବେ ବା ବଦଳାଇପାରିବେ ନାହିଁ ।',
 'ipbblocked' => 'ଯେହେତୁ ଆପଣଙ୍କୁ ଅଟକାଯାଇଛି ଆପଣ ବାକି ସଭ୍ୟମାନଙ୍କୁ ଅଟକାଇ ବା ଅଟକରୁ ଛାଡ଼ କରିପାରିବେ ନାହିଁ ।',
@@ -2796,7 +2756,6 @@ $1ର ଅଟକ ପାଇଁ ଦିଆଯାଇଥିବା କାରଣଟି 
 ସେହି ଯାଗାରେ, ଆପଣଙ୍କୁ ପ୍ରୁଷ୍ଠାଟିକୁ ଘୁଞ୍ଚାଇବାକୁ/ମିଶାଇବାକୁ ପଡ଼ିବ ।',
 'movearticle' => 'ପୃଷ୍ଠା ଘୁଞ୍ଚେଇବା:',
 'moveuserpage-warning' => "'''ସୂଚନା:''' ଆପଣ ଏକ ବ୍ୟବହାରକାରୀ ପୃଷ୍ଠାକୁ ଘୁଞ୍ଚାଇବାକୁ ଯାଉଛନ୍ତି । ଦୟାକରି ଜାଣିରଖନ୍ତୁ ଯେ ପୃଷ୍ଠାଟି କେବଳ ଘୁଞ୍ଚିଯିବ ଓ ବ୍ୟବହାରକାରୀ ''ଘୁଞ୍ଚିବେ ନାହିଁ'' ।",
-'movenologin' => 'ଲଗ‌‌ ଇନ କରିନାହାନ୍ତି',
 'movenologintext' => 'ଏହି ପୃଷ୍ଠାଟିକୁ ଘୁଞ୍ଚାଇବା ପାଇଁ ଆପଣ ନିହାତି ଜଣେ ପଞ୍ଜୀକୃତ ସଭ୍ୟ ହୋଇଥିବେ ଏବଂ [[Special:UserLogin|logged in]]',
 'movenotallowed' => 'ଆପଣଙ୍କର ପୃଷ୍ଠାଗୁଡିକୁ ଘୁଞ୍ଚାଇବା ଅଧିକାର ନହିଁ ।',
 'movenotallowedfile' => 'ଆପଣଙ୍କର ଫାଇଲ ଘୁଞ୍ଚାଇବାର ଅଧିକାର ନହିଁ ।',
@@ -2812,9 +2771,6 @@ $1ର ଅଟକ ପାଇଁ ଦିଆଯାଇଥିବା କାରଣଟି 
 'articleexists' => 'ସେହି ନାମରେ ଆଗରୁ ପୃଷ୍ଠାଟିଏ ଅଛି, କିମ୍ବା ଆପଣ ବାଛିଥିବା ନାମଟି ବୈଧ ନୁହେଁ ।
 ଦୟାକରି ଆଉଗୋଟେ ନାମ ବାଛନ୍ତୁ ।',
 'cantmove-titleprotected' => 'ଆପଣ ଏହି ଲକ୍ଷସ୍ଥଳକୁ ପୃଷ୍ଠାଟିଏ ଘୁଞ୍ଚାଇପାରିବେ ନାହିଁ, କାରଣ ନୂଆ ନାମ ତିଆରିକୁ ଅଟକାଯାଇଛି ।',
-'talkexists' => "'''ଏହି ପୃଷ୍ଠାଟି ସଫଳଭାବେ ଘୁଞ୍ଚାଇଦିଆଗଲା, କିନ୍ତୁ ଆଲୋଚନା ପୃଷ୍ଠାଟି ଘୁଞ୍ଚାଯଇ ପାରିବ ନାହିଁ କାରଣ ନୂଆ ନାମରେ ଆଗରୁ ଆଲୋଚନା ପୃଷ୍ଠାଟିଏ ଅଛି ।
-ଦୟାକରି ସେଦୁହିଁଙ୍କୁ ମିଶାଇଦିଅନ୍ତୁ ।'''",
-'movedto' => 'ଘୁଞ୍ଚାଗଲା',
 'movetalk' => 'ଏଥି ସହିତ ଯୋଡ଼ା ଆଲୋଚନା ପୃଷ୍ଠାସବୁ ଘୁଞ୍ଚାଇବେ',
 'move-subpages' => 'ଉପପୃଷ୍ଠା ଗୁଡ଼ିକୁ ଘୁଞ୍ଚାଇବେ ($1 ଯାଏଁ)',
 'move-talk-subpages' => 'ଆଲୋଚନାର ଉପପୃଷ୍ଠାକୁ ଘୁଞ୍ଚାଇଦିଅନ୍ତୁ ($1 ଯାଏଁ)',
@@ -3627,15 +3583,10 @@ $1',
 'exif-urgency-high' => 'ଅଧିକ ($1)',
 'exif-urgency-other' => 'ବ୍ୟବହାରକାରୀ ଦେଇ ଦିଆହୋଇଥିବା ଗୁରୁତ୍ଵ ($1)',
 
-# External editor support
-'edit-externally' => 'ଏକ ବାହାର ଆପ୍ଲିକେସନ ବ୍ୟବହାର କରି ଏହି ଫାଇଲଟିକୁ ବଦଳାଇବା',
-'edit-externally-help' => '(ଆହୁରି ବି [https://www.mediawiki.org/wiki/Manual:External_editors ସଜାଡିବା ନିର୍ଦେଶ] ଦେଖନ୍ତୁ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ସବୁ',
 'namespacesall' => 'ସବୁ',
 'monthsall' => 'ସବୁ',
-'limitall' => 'ସବୁ',
 
 # Email address confirmation
 'confirmemail' => 'ଆପଣଙ୍କ ଇମେଲ ଠିକଣା ଟି ଠିକ ବୋଲି ଥୟ କରନ୍ତୁ',
@@ -3660,7 +3611,6 @@ $1',
 'confirmemail_success' => 'ଆପଣଙ୍କ ଇମେଲଟି ଠିକ ବୋଲି ନିଶ୍ଚିତ ହୋଇଗଲା ।
 ଆପଣ ଏବେ [[Special:UserLogin|ଲଗ ଇନ]] କରି ଏହି ଉଇକିକୁ ଉପଭୋଗ କରିପାରନ୍ତି ।',
 'confirmemail_loggedin' => 'ଆପଣଙ୍କ ଇମେଲ ଠିକଣା ସଠିକ ବୋଲି ପରଖାଗଲା ।',
-'confirmemail_error' => 'ଆପଣ ନିଶ୍ଚିତ କରିଲା ବେଳେ କେଉଁ ଏକ ଅଘଟଣ ଘଟିଲା ।',
 'confirmemail_subject' => '{{SITENAME}} ଇମେଲ ଠିକଣା ନିଶ୍ଚିତ କରିବା',
 'confirmemail_body' => 'କେହିଜଣେ, ବୋଧହୁଏ ଆପଣ ହିଁ $1 ଆଇ.ପି. ଠିକଣାରୁ,
 ଏହି ଇ-ମେଲ ଆଇ.ଡି.ରେ "$2" ନାଆଁରେ {{SITENAME}} ଠାରେ ଖାତାଟିଏ ଖୋଲିଛନ୍ତି ।
@@ -3885,7 +3835,6 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 
 # Special:ComparePages
 'comparepages' => 'ବଦଳ ତୁଳନା କରିବେ',
-'compare-selector' => 'ପୃଷ୍ଠା ସଂସ୍କରଣ ତୁଳନା କରିବେ',
 'compare-page1' => 'ପୃଷ୍ଠା ୧',
 'compare-page2' => 'ପୃଷ୍ଠା ୨',
 'compare-rev1' => 'ପୁନରାବୃତ୍ତି୧',
@@ -4026,7 +3975,7 @@ MediaWiki ଉପଯୋଗୀ ହେବା ଲକ୍ଷରେ ବଣ୍ଟାଯ
 'duration-minutes' => '$1 {{PLURAL:$1|ମିନିଟ|ମିନିଟ}}',
 'duration-hours' => '$1 {{PLURAL:$1|ଘଣ୍ଟା|ଘଣ୍ଟା}}',
 'duration-days' => '$1 {{PLURAL:$1|ଦିନ|ଦିନଗୁଡିକ}}',
-'duration-weeks' => '$1 {{PLURAL: $1|ସପ୍ତାହ|ସପ୍ତାହଗୁଡିକ}}',
+'duration-weeks' => '$1 {{PLURAL:$1|ସପ୍ତାହ|ସପ୍ତାହଗୁଡିକ}}',
 'duration-years' => '$1 {{PLURAL:$1|year|years}}',
 'duration-decades' => '$1 {{PLURAL:$1|decade|decades}}',
 'duration-centuries' => '$1 {{PLURAL:$1|century|centuries}}',
index c445194..cd8138c 100644 (file)
@@ -59,7 +59,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Æвзæрном' ),
        'Blankpage'                 => array( 'АфтидФарс' ),
        'Block'                     => array( 'Блок' ),
-       'Blockme'                   => array( 'НыблокМæКæн' ),
        'Booksources'               => array( 'ЧингуытыРавзæрæнтæ' ),
        'BrokenRedirects'           => array( 'ЦъæлРарвыстытæ' ),
        'Categories'                => array( 'Категоритæ' ),
@@ -71,7 +70,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'АккаунтСкæнын' ),
        'Deadendpages'              => array( 'ХæдбарФæрстæ' ),
        'DeletedContributions'      => array( 'ХафтБавæрд' ),
-       'Disambiguations'           => array( 'Бирæнысаниуæгджынтæ' ),
        'DoubleRedirects'           => array( 'ДывæрÆрвыстытæ' ),
        'EditWatchlist'             => array( 'ЦæстдардИвын' ),
        'Emailuser'                 => array( 'АрхайæгмæEmail' ),
@@ -208,7 +206,6 @@ $messages = array(
 'tog-minordefault' => 'Æппæт ивддзинæдтæ банысан кæн куыд чысылтæ',
 'tog-previewontop' => 'Разæркасты рудзынг ивыны рудзынджы уæлдæр',
 'tog-previewonfirst' => 'Æвдисын иу разæркаст фыццаг ивды рæстæджы',
-'tog-nocache' => 'Ахицæн кæнын браузеры кешкæнынад',
 'tog-enotifwatchlistpages' => 'Æз цы фæрстæм æмæ цы файлтæм дарын мæ цæст, уыдонæй иу ивд куы æрцæуа, уæд-иу мæм E-mail æрцæуæд',
 'tog-enotifusertalkpages' => 'Электронон постæй мæм хъуысынгæнинаг æрвыст уа, мæ тæрхоны фарс куы ивд æрцæуа, уæд',
 'tog-enotifminoredits' => 'Фарс кæнæ файлы ивд чысыл куы уа, уæддæр-иу мæм E-mail æрбацæуæт',
@@ -330,7 +327,6 @@ $messages = array(
 'qbedit' => 'Ивын',
 'qbpageoptions' => 'Ацы фарс',
 'qbmyoptions' => 'Мæ фæрстæ',
-'qbspecialpages' => 'Сæрмагонд фæрстæ',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -542,9 +538,6 @@ $1',
 'perfcachedts' => 'Бындæр цы рардтæ ис, уыдон сты кешгонд æмæ фæстаг хатт нæуæггонд æрцыдысты $1. Кешы гæнæн ис уа æппæты фылдæр {{PLURAL:$4|иу фæстиуæг|$4 фæстиуæджы}}.',
 'querypage-no-updates' => 'Ацы фарсы нæуæгкæнын ныртæккæ хицæн у.
 Цы рардтæ дзы ис, уыдон нæуæг нæ кæндзысты.',
-'wrong_wfQuery_params' => 'Рæдыд параметртæ wfQuery() функцийæн<br />
-Функци: $1<br />
-Домæн: $2',
 'viewsource' => 'Код кæсын',
 'viewsource-title' => 'Фенын {{grammar:genitive|$1}} равзæрæн текст',
 'actionthrottled' => 'Архайд урæд æрцыд',
@@ -670,7 +663,7 @@ $2',
 'passwordtooshort' => 'Паролтæ хъуамæ уой уæддæр {{PLURAL:$1|1 дамгъæйы|$1 дамгъæйы}} дæргъæн.',
 'password-name-match' => 'Дæ парол ма хъуамæ уа дæ фæсномыгы хуызæн.',
 'password-login-forbidden' => 'Ацы фæсномыг æмæ паролæй нæй гæнæн архайын.',
-'mailmypassword' => 'РаÑ\80виÑ\82 Ð¼Ã¦Ð¼ Ð½Ð¾Ð³ пароль',
+'mailmypassword' => 'Ð\91аив пароль',
 'passwordremindertitle' => 'Ног рæстæгмæ пароль {{grammar:dative|{{SITENAME}}}}',
 'passwordremindertext' => 'Чидæр (æвæццæгæн ды, $1 IP адрисæй) æрдомтта ног парол {{grammar:dative|{{SITENAME}}}} ($4). "$2" архайæгæн арæзт æрцыд рæстæгмæ парол. Парол у "$3". Кæд уый ды уыдтæ, уæд дын ныр хъæудзæн бахизын æмæ равзарын ног парол.
 Дæ рæстæгмæ парол ма кусдзæнис {{PLURAL:$5|иу бон|$5 боны}}.
@@ -716,7 +709,7 @@ $2',
 'user-mail-no-body' => 'Фæлварста афтид кæнæ æнæбары мидисимæ фыстæг арвитын.',
 
 # Change password dialog
-'resetpass' => 'Пароль фæивын',
+'changepassword' => 'Пароль ивæн',
 'resetpass_announce' => 'Ды бахызтæ e-mail-æй æрвыст рæстæгмæ паролæй.
 Цæмæй кæронмæ бахизай системæмæ, уый тыххæй ам хъуамæ сæвæрай ног пароль.',
 'resetpass_text' => '<!-- Бахæсс дæ текст ам -->',
@@ -1000,8 +993,6 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'revdelete-radio-set' => 'О',
 'revdelete-radio-unset' => 'Нæ',
 'revdel-restore' => 'ивын зынæн',
-'revdel-restore-deleted' => 'хафт ивдтытæ',
-'revdel-restore-visible' => 'зынгæ ивдтытæ',
 'pagehist' => 'Фарсы истори',
 'revdelete-reason-dropdown' => '*Хафыны арæхдæр бындуртæ
 ** Сфæлдисæгы барты æфхæрд
@@ -1028,7 +1019,6 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'searchresults' => 'Агуырды фæстиуджытæ',
 'searchresults-title' => 'Агуырды фæстиуæг: «$1»',
 'titlematches' => 'Уацы ном æмбæлы',
-'notitlematches' => 'Никæцы фарсы ном æмбæлы',
 'textmatches' => 'Уацты æмцаутæ',
 'prevn' => 'рæздæры {{PLURAL:$1|$1}}',
 'nextn' => 'иннæ {{PLURAL:$1|$1}}',
@@ -1061,17 +1051,14 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'searchall' => 'иууылдæр',
 'showingresultsheader' => "{{PLURAL:$5|Фæстиуæг '''$1''' '''$3'''-йæ|Фæстиуджытæ '''$1 - $2''' '''$3'''-йæ}} '''{{grammar:dative|$4}}'''",
 'search-nonefound' => 'Ницы разындис домæнæн',
-'powersearch' => 'Сæрмагонд агуырд',
 'powersearch-legend' => 'Сæрмагонд агуырд',
 'powersearch-redir' => 'Рарвыстытæ æвдисын',
-'powersearch-field' => 'Агуырд',
 'powersearch-toggleall' => 'Иууылдæр',
 
 # Preferences page
 'preferences' => 'Уагæвæрдтæ',
 'mypreferences' => 'Уагæвæрдтæ',
 'prefs-edits' => 'Ивдтыты нымæц:',
-'changepassword' => 'Пароль ивæн',
 'prefs-skin' => 'Цъар',
 'skin-preview' => 'Разæркаст',
 'prefs-beta' => 'Бета уагæвæрдтæ',
@@ -1092,7 +1079,6 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'localtime' => 'Бынæттон рæстæг:',
 'timezoneuseserverdefault' => 'Архайын серверы æвæрдæй ($1)',
 'timezoneuseoffset' => 'Æндæр (бацамон гæпп)',
-'timezoneoffset' => 'Гæпп¹:',
 'servertime' => 'Серверы рæстæг:',
 'guesstimezone' => 'Райсын браузерæй',
 'timezoneregion-africa' => 'Африкæ',
@@ -1206,12 +1192,11 @@ ASCII нысæнттæм чи нæ хауы, уыдон ивыны бынаты
 'recentchanges-label-minor' => 'Ай у чысыл ивд',
 'recentchanges-label-bot' => 'Ацы ивд бот сарызта',
 'recentchanges-label-unpatrolled' => 'Ацы ивд нырмæ нæу фидар гонд',
-'rcnote' => 'Дæлдæр нымад сты афæстаг <strong>$2</strong> боны дæргъы конд <strong>{{PLURAL:$1|иу ивд|$1 ивды}}</strong>, $5, $4 уавæрмæ гæсгæ.',
 'rcnotefrom' => "Бындæр сты æвдыст ивдтытæ '''$2'''-æй ('''{{grammar:genitive|$1}}''' йонг).",
 'rclistfrom' => 'Равдисын ивдтытæ амæй фæстæ: $1',
 'rcshowhideminor' => '$1 чысыл ивдтытæ',
 'rcshowhidebots' => '$1 роботты',
-'rcshowhideliu' => '$1, йæхи чи бацамыдта, уыцы архайджыты',
+'rcshowhideliu' => '$1 регистрацигонд архайæджы',
 'rcshowhideanons' => '$1 æнæном архайджыты',
 'rcshowhidepatr' => '$1 бæрæггонд ивдтæ',
 'rcshowhidemine' => '$1 мæ ивдтытæ',
@@ -1226,7 +1211,7 @@ $3',
 'boteditletter' => 'б',
 'rc_categories_any' => 'Кæцы фæнды',
 'newsectionsummary' => '/* $1 */ ног хай',
-'rc-enhanced-expand' => 'Лæмбынæг информаци равдисын (домы JavaScript)',
+'rc-enhanced-expand' => 'Лæмбынæг информаци равдисын',
 'rc-enhanced-hide' => 'Айсын лæмбынæг информаци',
 'rc-old-title' => 'фыццаг арæзт æрцыд куыд "$1"',
 
@@ -1383,8 +1368,6 @@ $3',
 'nextpage' => 'Фæдылдзог фарс ($1)',
 'prevpage' => 'Раздæры фарс ($1)',
 'allarticles' => 'Иууылдæр фæрстæ',
-'allpagesprev' => 'фæстæмæ',
-'allpagesnext' => 'дарддæр',
 'allpagessubmit' => 'Ацæуын',
 
 # Special:Categories
@@ -1519,15 +1502,11 @@ $3',
 # Block/unblock
 'block' => 'Архайæгыл хъоды кæнын',
 'blockip' => 'Бахъоды кæнын',
-'blockip-title' => 'Архайæгыл хъоды',
 'blockip-legend' => 'Архайæгыл хъоды кæнын',
 'ipadressorusername' => 'IP адрис кæнæ фæсномыг:',
 'ipbexpiry' => 'Фæуыны афон:',
 'ipbreason' => 'Аххос:',
-'ipbreasonotherlist' => 'Æндæр тыххæй',
 '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',
-'ipbotheroption' => 'æндæр',
-'ipbotherreason' => 'Æндæр кæнæ уæлæмхасæн аххос:',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] хъодыгонд æрцыд.<br />
 Кæс [[Special:Ipblocklist|хъодыгонд IP-адристы номхыгъд]].',
 'ipb-blocklist' => 'Актуалон хъоды равдис',
@@ -1552,7 +1531,6 @@ $3',
 
 # Move page
 'movearticle' => 'Номивгæ фарс:',
-'movenologin' => 'Системæйæн дæхи нæ бацамыдтай',
 'newtitle' => 'Ног ном:',
 'move-watch' => 'Зæронд æмæ нæуæг фæрстæм цæст æрдарын',
 'movepagebtn' => 'Фарсы ном ивын',
@@ -1667,7 +1645,7 @@ $3',
 'file-info-size' => '$1 × $2 пикселы, файлы уæз: $3, MIME тип: $4',
 'file-nohires' => 'Нæй ын стырдæр фæлтæр .',
 'svg-long-desc' => 'SVG файл, номиналон $1 × $2 пикселы, файлы бæрц: $3',
-'show-big-image' => 'Æнæхъæнæй',
+'show-big-image' => 'Оригиналы файл',
 
 # Special:NewFiles
 'newimages' => 'Ног нывты галерей',
@@ -1719,15 +1697,10 @@ $3',
 
 'exif-gaincontrol-0' => 'Нæй',
 
-# External editor support
-'edit-externally' => 'Ивын ацы файл æддаг программæйæ',
-'edit-externally-help' => '(Кæс [https://www.mediawiki.org/wiki/Manual:External_editors сывæрыны уагæвæрдтæ] фылдæр базонынæн)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'иууылдæр',
 'namespacesall' => 'иууылдæр',
 'monthsall' => 'иууылдæр',
-'limitall' => 'иууылдæр',
 
 # action=purge
 'confirm_purge_button' => 'Афтæ уæд!',
index 0573a1a..16ffe68 100644 (file)
@@ -17,6 +17,7 @@
  * @author Jimidar
  * @author Kaganer
  * @author Raj Singh
+ * @author Satdeep gill
  * @author Saurabh123
  * @author Sukh
  * @author Surinder.wadhawan
@@ -31,8 +32,8 @@ $namespaceNames = array(
        NS_MEDIA            => 'ਮੀਡੀਆ',
        NS_SPECIAL          => 'ਖ਼ਾਸ',
        NS_TALK             => 'ਗੱਲ-ਬਾਤ',
-       NS_USER             => 'ਵਰਤà©\8cਂਕਾਰ',
-       NS_USER_TALK        => 'ਵਰਤà©\8cਂਕਾਰ_ਗੱਲ-ਬਾਤ',
+       NS_USER             => 'ਵਰਤà©\8bਂਕਾਰ',
+       NS_USER_TALK        => 'ਵਰਤà©\8bਂਕਾਰ_ਗੱਲ-ਬਾਤ',
        NS_PROJECT_TALK     => '$1_ਗੱਲ-ਬਾਤ',
        NS_FILE             => 'ਤਸਵੀਰ',
        NS_FILE_TALK        => 'ਤਸਵੀਰ_ਗੱਲ-ਬਾਤ',
@@ -51,6 +52,8 @@ $namespaceAliases = array(
        'ਚਰਚਾ' => NS_TALK,
        'ਮੈਂਬਰ' => NS_USER,
        'ਮੈਂਬਰ_ਚਰਚਾ' => NS_USER_TALK,
+       'ਵਰਤੌਂਕਾਰ' => NS_USER,
+       'ਵਰਤੌਂਕਾਰ_ਗੱਲ-ਬਾਤ' => NS_USER_TALK,
        '$1_ਚਰਚਾ' => NS_PROJECT_TALK,
        'ਤਸਵੀਰ_ਚਰਚਾ' => NS_FILE_TALK,
        'ਮੀਡੀਆਵਿਕਿ' => NS_MEDIAWIKI,
@@ -64,24 +67,22 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'ਸਰਗਰਮ_ਵਰਤੋਂਕਾਰ' ),
        'Allmessages'               => array( 'ਸਾਰੇ_ਸਨੇਹੇ' ),
-       'Allpages'                  => array( 'ਸਾਰà©\87_ਪੰਨੇ' ),
-       'Ancientpages'              => array( 'ਪà©\81ਰਾਣà©\87_ਪੰਨੇ' ),
+       'Allpages'                  => array( 'ਸਾਰà©\87_ਸਫ਼ੇ' ),
+       'Ancientpages'              => array( 'ਪà©\81ਰਾਣà©\87_ਸਫ਼ੇ' ),
        'Badtitle'                  => array( 'ਖ਼ਰਾਬ_ਸਿਰਲੇਖ' ),
-       'Blankpage'                 => array( 'à¨\96਼ਾਲà©\80_ਪੰਨਾ' ),
+       'Blankpage'                 => array( 'à¨\96਼ਾਲà©\80_ਸਫ਼ਾ' ),
        'Block'                     => array( 'ਪਾਬੰਦੀ_ਲਾਓ', 'IP_’ਤੇ_ਪਾਬੰਦੀ_ਲਾਓ', 'ਵਰਤੋਂਕਾਰ_’ਤੇ_ਪਾਬੰਦੀ_ਲਾਓ' ),
-       'Blockme'                   => array( 'ਮੇਰੇ_’ਤੇ_ਪਾਬੰਦੀ_ਲਾਓ' ),
        'Booksources'               => array( 'ਕਿਤਾਬ_ਸਰੋਤ' ),
        'BrokenRedirects'           => array( 'ਟੁੱਟੇ_ਰੀਡਿਰੈਕਟ' ),
        'Categories'                => array( 'ਸ਼੍ਰੇਣੀਆਂ' ),
        'ChangeEmail'               => array( 'ਈ-ਮੇਲ_ਬਦਲੋ' ),
        'ChangePassword'            => array( 'ਪਾਸਵਰਡ_ਬਦਲੋ', 'ਪਾਸਵਰਡ_ਰੀਸੈੱਟ_ਕਰੋ' ),
-       'ComparePages'              => array( 'ਪੰਨਿਆਂ_ਦੀ_ਤੁਲਨਾ_ਕਰੋ' ),
+       'ComparePages'              => array( 'ਸਫ਼ਿਆਂ_ਦੀ_ਤੁਲਨਾ_ਕਰੋ' ),
        'Confirmemail'              => array( 'ਈ-ਮੇਲ_ਤਸਦੀਕ_ਕਰੋ' ),
        'Contributions'             => array( 'ਯੋਗਦਾਨ' ),
        'CreateAccount'             => array( 'ਖਾਤਾ_ਬਣਾਓ' ),
-       'Deadendpages'              => array( 'ਬੰਦ_ਪੰਨੇ' ),
+       'Deadendpages'              => array( 'ਬੰਦ_ਸਫ਼ੇ' ),
        'DeletedContributions'      => array( 'ਮਿਟਾਏ_ਯੋਗਦਾਨ' ),
-       'Disambiguations'           => array( 'ਗੁੰਝਲਖੋਲ੍ਹ' ),
        'DoubleRedirects'           => array( 'ਦੂਹਰੇ_ਰੀਡਿਰੈਕਟ' ),
        'EditWatchlist'             => array( 'ਨਿਗਰਾਨੀ-ਲਿਸਟ_ਸੋਧੋ' ),
        'Emailuser'                 => array( 'ਵਰਤੋਂਕਾਰ_ਨੂੰ_ਈ-ਮੇਲ_ਕਰੋ' ),
@@ -92,62 +93,62 @@ $specialPageAliases = array(
        'Import'                    => array( 'ਆਯਾਤ' ),
        'Invalidateemail'           => array( 'ਗਲਤ_ਈ-ਮੇਲ_ਪਤਾ' ),
        'JavaScriptTest'            => array( 'ਜਾਵਾਸਕ੍ਰਿਪਟ_ਪਰਖ' ),
-       'BlockList'                 => array( 'ਪਾਬੰਦà©\80à¨\86à¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
+       'BlockList'                 => array( 'ਪਾਬੰਦà©\80à¨\86à¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
        'LinkSearch'                => array( 'ਲਿੰਕ_ਖੋਜੋ' ),
-       'Listadmins'                => array( 'ਪà©\8dਰਬੰਧà¨\95ਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listbots'                  => array( 'ਬà©\8bà¨\9fਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listfiles'                 => array( 'ਫ਼ਾà¨\88ਲਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listgrouprights'           => array( 'ਵਰਤੋਂਕਾਰ_ਹੱਕ_ਸੂਚੀ' ),
-       'Listredirects'             => array( 'ਰà©\80ਡਿਰà©\88à¨\95à¨\9fਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
-       'Listusers'                 => array( 'ਵਰਤà©\8bà¨\82à¨\95ਾਰਾà¨\82_ਦà©\80_ਸà©\82à¨\9aà©\80' ),
+       'Listadmins'                => array( 'ਪà©\8dਰਬੰਧà¨\95ਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listbots'                  => array( 'ਬà©\8bà¨\9fਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listfiles'                 => array( 'ਫ਼ਾà¨\88ਲਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listgrouprights'           => array( 'ਵਰਤੋਂਕਾਰ_ਹੱਕਾਂ_ਦੀ_ਲਿਸਟ' ),
+       'Listredirects'             => array( 'ਰà©\80ਡਿਰà©\88à¨\95à¨\9fਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
+       'Listusers'                 => array( 'ਵਰਤà©\8bà¨\82à¨\95ਾਰਾà¨\82_ਦà©\80_ਲਿਸà¨\9f' ),
        'Lockdb'                    => array( 'ਡੈਟਾਬੇਸ_’ਤੇ_ਤਾਲਾ_ਲਗਾਓ' ),
        'Log'                       => array( 'ਚਿੱਠਾ', 'ਚਿੱਠੇ' ),
-       'Lonelypages'               => array( 'à¨\87à¨\95ੱਲà©\87_ਪੰਨੇ' ),
-       'Longpages'                 => array( 'ਲੰਬà©\87_ਪੰਨੇ' ),
+       'Lonelypages'               => array( 'à¨\87à¨\95ੱਲà©\87_ਸਫ਼ੇ' ),
+       'Longpages'                 => array( 'ਲੰਬà©\87_ਸਫ਼ੇ' ),
        'MergeHistory'              => array( 'ਰਲਾਉਣ_ਦਾ_ਅਤੀਤ' ),
        'MIMEsearch'                => array( 'MIME_ਖੋਜੋ' ),
        'Mostcategories'            => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Mostimages'                => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਜੁੜੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
        'Mostinterwikis'            => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਇੰਟਰਵਿਕੀ' ),
-       'Mostlinked'                => array( 'ਸਭ_ਤà©\8bà¨\82_ਵੱਧ_à¨\9cà©\81à©\9cà©\87_ਪੰਨੇ' ),
+       'Mostlinked'                => array( 'ਸਭ_ਤà©\8bà¨\82_ਵੱਧ_à¨\9cà©\81à©\9cà©\87_ਸਫ਼ੇ' ),
        'Mostlinkedcategories'      => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਜੁੜੀਆਂ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Mostlinkedtemplates'       => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਜੁੜੇ_ਫਰਮੇ' ),
        'Mostrevisions'             => array( 'ਸਭ_ਤੋਂ_ਵੱਧ_ਰੀਵਿਜ਼ਨ' ),
        'Movepage'                  => array( 'ਸਿਰਲੇਖ_ਬਦਲੋ' ),
        'Mycontributions'           => array( 'ਮੇਰੇ_ਯੋਗਦਾਨ' ),
-       'Mypage'                    => array( 'ਮà©\87ਰਾ_ਪੰਨਾ' ),
+       'Mypage'                    => array( 'ਮà©\87ਰਾ_ਸਫ਼ਾ' ),
        'Mytalk'                    => array( 'ਮੇਰੀ_ਚਰਚਾ' ),
        'Myuploads'                 => array( 'ਮੇਰੇ_ਅੱਪਲੋਡ' ),
        'Newimages'                 => array( 'ਨਵੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
-       'Newpages'                  => array( 'ਨਵà©\87à¨\82_ਪੰਨੇ' ),
+       'Newpages'                  => array( 'ਨਵà©\87à¨\82_ਸਫ਼ੇ' ),
        'PasswordReset'             => array( 'ਪਾਸਵਰਡ_ਰੀਸੈੱਟ' ),
        'PermanentLink'             => array( 'ਪੱਕਾ_ਲਿੰਕ' ),
-       'Popularpages'              => array( 'ਮਸ਼ਹà©\82ਰ_ਪੰਨੇ' ),
+       'Popularpages'              => array( 'ਮਸ਼ਹà©\82ਰ_ਸਫ਼ੇ' ),
        'Preferences'               => array( 'ਪਸੰਦਾਂ' ),
        'Prefixindex'               => array( 'ਅਗੇਤਰ_ਤਤਕਰਾ' ),
-       'Protectedpages'            => array( 'ਸà©\81ਰੱà¨\96ਿà¨\85ਤ_ਪੰਨੇ' ),
+       'Protectedpages'            => array( 'ਸà©\81ਰੱà¨\96ਿà¨\85ਤ_ਸਫ਼ੇ' ),
        'Protectedtitles'           => array( 'ਸੁਰੱਖਿਅਤ_ਸਿਰਲੇਖ' ),
-       'Randompage'                => array( 'ਰਲਵਾà¨\82_ਪੰਨਾ' ),
+       'Randompage'                => array( 'ਰਲਵਾà¨\82_ਸਫ਼ਾ' ),
        'Randomredirect'            => array( 'ਸੁਰੱਖਿਅਤ_ਰੀਡਿਰੈਕਟ' ),
-       'Recentchanges'             => array( 'ਹਾਲ_\'ਚ_ਹੋਈਆਂ_ਤਬਦੀਲੀਆਂ' ),
+       'Recentchanges'             => array( 'ਹਾਲੀਆ_ਤਬਦੀਲੀਆਂ' ),
        'Recentchangeslinked'       => array( 'ਜੁੜੀਆਂ_ਤਾਜ਼ਾ_ਤਬਦੀਲੀਆਂ' ),
-       'Revisiondelete'            => array( 'ਰੀਵਿਜਨ_ਮਿਟਾਓ' ),
+       'Revisiondelete'            => array( 'ਰà©\80ਵਿà¨\9c਼ਨ_ਮਿà¨\9fਾà¨\93' ),
        'Search'                    => array( 'ਖੋਜੋ' ),
-       'Shortpages'                => array( 'à¨\9bà©\8bà¨\9fà©\87_ਪੰਨੇ' ),
-       'Specialpages'              => array( 'à¨\96਼ਾਸ_ਪੰਨੇ' ),
+       'Shortpages'                => array( 'à¨\9bà©\8bà¨\9fà©\87_ਸਫ਼ੇ' ),
+       'Specialpages'              => array( 'à¨\96਼ਾਸ_ਸਫ਼ੇ' ),
        'Statistics'                => array( 'ਅੰਕੜੇ' ),
        'Tags'                      => array( 'ਟੈਗ' ),
        'Unblock'                   => array( 'ਪਾਬੰਦੀ_ਹਟਾਓ' ),
        'Uncategorizedcategories'   => array( 'ਸ਼੍ਰੇਣੀਹੀਣ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Uncategorizedimages'       => array( 'ਸ਼੍ਰੇਣੀਹੀਣ_ਫ਼ਾਈਲਾਂ' ),
-       'Uncategorizedpages'        => array( 'ਸ਼à©\8dਰà©\87ਣà©\80ਹà©\80ਣ_ਪੰਨੇ' ),
+       'Uncategorizedpages'        => array( 'ਸ਼à©\8dਰà©\87ਣà©\80ਹà©\80ਣ_ਸਫ਼ੇ' ),
        'Uncategorizedtemplates'    => array( 'ਸ਼੍ਰੇਣੀਹੀਣ_ਫਰਮੇ' ),
        'Undelete'                  => array( 'ਅਣ-ਹਟਾਓਣ' ),
        'Unlockdb'                  => array( 'ਡੈਟਾਬੇਸ_ਖੋਲ੍ਹੋ' ),
        'Unusedcategories'          => array( 'ਅਣਵਰਤੀਆਂ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Unusedimages'              => array( 'ਅਣਵਰਤੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
        'Unusedtemplates'           => array( 'ਅਣਵਰਤੇ_ਫਰਮੇ' ),
-       'Unwatchedpages'            => array( 'ਬà©\87-ਨਿà¨\97ਰਾਨ_ਪੰਨੇ' ),
+       'Unwatchedpages'            => array( 'ਬà©\87-ਨਿà¨\97ਰਾਨ_ਸਫ਼ੇ' ),
        'Upload'                    => array( 'ਅੱਪਲੋਡ' ),
        'Userlogin'                 => array( 'ਵਰਤੋਂਕਾਰ_ਲਾਗਇਨ' ),
        'Userlogout'                => array( 'ਵਰਤੋਂਕਾਰ_ਲਾਗਆਊਟ' ),
@@ -155,10 +156,10 @@ $specialPageAliases = array(
        'Version'                   => array( 'ਰੂਪ' ),
        'Wantedcategories'          => array( 'ਚਾਹੀਦੀਆਂ_ਸ਼੍ਰੇਣੀਆਂ' ),
        'Wantedfiles'               => array( 'ਚਾਹੀਦੀਆਂ_ਫ਼ਾਈਲਾਂ' ),
-       'Wantedpages'               => array( 'à¨\9aਾਹà©\80ਦà©\87_ਪੰਨੇ', 'ਟੁੱਟੇ_ਜੋੜ' ),
+       'Wantedpages'               => array( 'à¨\9aਾਹà©\80ਦà©\87_ਸਫ਼ੇ', 'ਟੁੱਟੇ_ਜੋੜ' ),
        'Wantedtemplates'           => array( 'ਚਾਹੀਦੇ_ਫਰਮੇ' ),
        'Watchlist'                 => array( 'ਨਿਗਰਾਨੀ-ਲਿਸਟ' ),
-       'Whatlinkshere'             => array( 'à¨\95ਿਹà©\9cà©\87_ਪੰਨੇ_ਇੱਥੇ_ਜੋੜਦੇ_ਹਨ' ),
+       'Whatlinkshere'             => array( 'à¨\95ਿਹà©\9cà©\87_ਸਫ਼ੇ_ਇੱਥੇ_ਜੋੜਦੇ_ਹਨ' ),
        'Withoutinterwiki'          => array( 'ਬਿਨਾਂ_ਇੰਟਰਵਿਕੀਆਂ_ਵਾਲੇ' ),
 );
 
@@ -211,7 +212,6 @@ $messages = array(
 'tog-minordefault' => 'ਸਾਰੀਆਂ ਸੋਧਾਂ ’ਤੇ ਮੂਲ ਰੂਪ ਵਿਚ ਛੋਟੇ ਹੋਣ ਦਾ ਨਿਸ਼ਾਨ ਲਾਓ',
 'tog-previewontop' => 'ਸੋਧ ਬਕਸੇ ਤੋਂ ਪਹਿਲਾਂ ਝਲਕ ਵਖਾਓ',
 'tog-previewonfirst' => 'ਪਹਿਲੀ ਸੋਧ ਉੱਤੇ ਝਲਕ ਵਖਾਓ',
-'tog-nocache' => 'ਬਰਾਊਜ਼ਰ ਸਫ਼ਾ ਕੈਸ਼ ਕਰਨਾ ਬੰਦ ਕਰੋ',
 'tog-enotifwatchlistpages' => 'ਜਦੋਂ ਮੇਰੀ ਨਿਗਰਾਨੀ-ਲਿਸਟ ਵਿੱਚ ਦਰਜ ਕੋਈ ਸਫ਼ਾ ਜਾਂ ਫ਼ਾਈਲ ਬਦਲੀ ਜਾਵੇ ਤਾਂ ਮੈਨੂੰ ਈਮੇਲ ਭੇਜੋ',
 'tog-enotifusertalkpages' => 'ਜਦੋਂ ਮੇਰਾ ਗੱਲ-ਬਾਤ ਸਫ਼ਾ ਬਦਲਿਆ ਜਾਵੇ ਤਾਂ ਮੈਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ',
 'tog-enotifminoredits' => 'ਸਫ਼ਿਆਂ ਅਤੇ ਫ਼ਾਈਲਾਂ ਦੀਆਂ ਛੋਟੀਆਂ ਤਬਦੀਲੀਆਂ ਲਈ ਵੀ ਮੈਨੂੰ ਈ-ਮੇਲ ਭੇਜੋ',
@@ -345,7 +345,6 @@ $messages = array(
 'qbedit' => 'ਸੋਧ',
 'qbpageoptions' => 'ਇਹ ਸਫ਼ਾ',
 'qbmyoptions' => 'ਮੇਰੇ ਸਫ਼ੇ',
-'qbspecialpages' => 'ਖ਼ਾਸ ਸਫ਼ੇ',
 'faq' => 'ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸੁਆਲ',
 'faqpage' => 'Project:ਸਵਾਲ-ਜਵਾਬ',
 
@@ -405,7 +404,7 @@ $messages = array(
 'articlepage' => 'ਸਮੱਗਰੀ ਸਫ਼ਾ ਵੇਖੋ',
 'talk' => 'ਚਰਚਾ',
 'views' => 'ਵਿਊ',
-'toolbox' => 'ਸੰਦ ਬਕਸਾ',
+'toolbox' => 'ਸੰਦ',
 'userpage' => 'ਵਰਤੋਂਕਾਰ ਸਫ਼ਾ ਵੇਖੋ',
 'projectpage' => 'ਪ੍ਰੋਜੈਕਟ ਸਫ਼ਾ ਵੇਖੋ',
 'imagepage' => 'ਫਾਇਲ ਸਫ਼ਾ ਵੇਖੋ',
@@ -515,6 +514,9 @@ $1',
 # General errors
 'error' => 'ਗ਼ਲਤੀ',
 'databaseerror' => 'ਡਾਟਾਬੇਸ ਗਲਤੀ',
+'databaseerror-query' => 'ਪੁੱਛ-ਗਿੱਛ: $1',
+'databaseerror-function' => 'ਕਰਤੱਵ: $1',
+'databaseerror-error' => 'ਦੋਸ਼: $1',
 'laggedslavemode' => "'''ਖ਼ਬਰਦਾਰ:''' ਹੋ ਸਕਦਾ ਹੈ ਸਫ਼ੇ ਵਿਚ ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਸ਼ਾਮਲ ਨਾ ਹੋਣ।",
 'readonly' => 'ਡਾਟਾਬੇਸ ਨੂੰ ਤਾਲ਼ਾ ਲੱਗਿਆ ਹੋਇਆ ਹੈ',
 'enterlockreason' => 'ਤਾਲਾ-ਬੰਦੀ ਲਈ ਕਾਰਨ ਦਾਖ਼ਲ ਕਰੋ, ਨਾਲ਼ ਹੀ ਤਾਲਾ-ਬੰਦੀ ਦੇ ਰਿਲੀਜ਼ ਹੋਣ ਦਾ ਅੰਦਾਜ਼ਨ ਵਕਤ',
@@ -550,9 +552,6 @@ $1',
 'perfcachedts' => 'ਹੇਠ ਦਿੱਤੀ ਸਮੱਗਰੀ ਕੈਸ਼ ਵਿਚ ਹੈ ਅਤੇ ਆਖ਼ਰੀ ਵਾਰ ਅੱਪਡੇਟ $1 ਨੂੰ ਕੀਤੀ ਗਈ ਸੀ। ਕੈਸ਼ ਵਿਚ ਵੱਧ ਤੋਂ ਵੱਧ {{PLURAL:$4|ਇੱਕ ਨਤੀਜੇ|$4 ਨਤੀਜਿਆਂ}} ਦੀ ਉਪਲਬਧੀ ਹੈ।',
 'querypage-no-updates' => 'ਇਸ ਪੇਜ  ਦਾ ਆਧੁਨੀਕਰਣ ਵਰਜਿਤ ਹੈ।
 ਆਂਕੜੇ ਹੱਲੇ ਤਾਜ਼ੇ ਨਹੀ ਹੋ ਸਕਦੇ ।',
-'wrong_wfQuery_params' => ' wfQuery()<br /> ਨੂ ਲਤ ਰਾਸ਼ੀ ਮਿਲੇ ਹੋਯੇ ਨੇ
- ਫੁਨ੍ਕ੍ਤਿਓਂ:$1<br />
- ਪ੍ਰਸ਼ਨ: $2',
 'viewsource' => 'ਸਰੋਤ ਵੇਖੋ',
 'viewsource-title' => '$1 ਲਈ ਸਰੋਤ ਵੇਖੋ',
 'actionthrottled' => 'ਕਾਰਵਾਈ ਬੰਦ ਕੀਤੀ ਗਈ।',
@@ -632,6 +631,7 @@ $2',
 'userlogin-resetpassword-link' => 'ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ?',
 'helplogin-url' => 'Help: ਲਾਗਇਨ ਕਰਨਾ',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ਲਾਗਇਨ ਹੋਣ ਲਈ ਮੱਦਦ]]',
+'userlogin-createanother' => 'ਹੋਰ ਖਾਤਾ ਬਣਾਓ',
 'createacct-join' => 'ਆਪਣੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-another-join' => 'ਆਪਣੇ ਅਕਾਊਂਟ ਦੀ ਜਾਣਕਾਰੀ ਹੇਠਾਂ ਦਿਉ।',
 'createacct-emailrequired' => 'ਈਮੇਲ ਪਤਾ',
@@ -694,7 +694,7 @@ $2',
 'acct_creation_throttle_hit' => 'ਤੁਹਾਡਾ IP ਪਤਾ ਵਰਤ ਕੇ ਆਉਣ ਵਾਲ਼ਿਆਂ ਨੇ ਆਖ਼ਰੀ ਦਿਨਾਂ ਵਿਚ ਇਸ ਵਿਕੀ ’ਤੇ {{PLURAL:$1|੧ ਖਾਤਾ ਬਣਾਇਆ ਹੈ|$1 ਖਾਤੇ ਬਣਾਏ ਹਨ}} ਜੋ ਕਿ, ਹਾਲ ਦੀ ਘੜੀ, ਖਾਤੇ ਬਣਾਉਣ ਦੀ ਆਖ਼ਰੀ ਹੱਦ ਹੈ।
 ਨਤੀਜੇ ਵਜੋਂ ਇਸ IP ਪਤੇ ਨੂੰ ਵਰਤਣ ਵਾਲ਼ੇ ਫ਼ਿਲਹਾਲ ਹੋਰ ਖਾਤੇ ਨਹੀਂ ਬਣਾ ਸਕਦੇ।',
 'emailauthenticated' => 'ਤੁਹਾਡਾ ਈ-ਮੇਲ ਪਤਾ $2 ਨੂੰ $3 ’ਤੇ ਤਸਦੀਕ ਕੀਤਾ ਗਿਆ।',
-'emailnotauthenticated' => 'ਤà©\81ਹਾਡਾ à¨\88ਮà©\87ਲ à¨ªà¨¤à¨¾ à¨¹à¨¾à¨²à©\87 à¨¤à¨¸à¨\95ਦà©\80à¨\95 à¨¨à¨¹à©\80à¨\82 à¨¹à©\8bà¨\87à¨\86। à¨¹à©\87ਠ à¨¦à¨¿à©±à¨¤à©\87 à¨«à©\80à¨\9aਰਾà¨\82 à¨²à¨\88 à¨\95à©\8bà¨\88 à¨µà©\80 à¨\88ਮà©\87ਲ à¨¨à¨¹à©\80à¨\82 à¨­à©\87à¨\9cà©\80 à¨\9cਾਵà©\87à¨\97à©\80।',
+'emailnotauthenticated' => 'ਤੁਹਾਡਾ ਈਮੇਲ ਪਤਾ ਹਾਲੇ ਤਸਦੀਕ ਨਹੀਂ ਹੋਇਆ। ਹੇਠ ਦਿੱਤੇ ਫੀਚਰਾਂ ਲਈ ਕੋਈ ਵੀ ਈਮੇਲ ਨਹੀਂ ਭੇਜੀ ਜਾਵੇਗੀ।',
 'noemailprefs' => 'ਇਹਨਾਂ ਸਹੂਲਤਾਂ ਦੀ ਵਰਤੋਂ ਲਈ ਆਪਣੀਆਂ ਪਸੰਦਾਂ ਵਿਚ ਇਕ ਈ-ਮੇਲ ਪਤਾ ਦਿਓ।',
 'emailconfirmlink' => 'ਆਪਣਾ ਈਮੇਲ ਪਤਾ ਤਸਦੀਕ ਕਰਾਓ',
 'invalidemailaddress' => 'ਈਮੇਲ ਪਤਾ ਕਬੂਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਸਹੀ ਅੰਦਾਜ਼ ਵਿਚ ਲਿਖਿਆ ਨਹੀਂ ਜਾਪਦਾ ਹੈ।
@@ -710,10 +710,12 @@ $2',
 ਜੇ ਇਹ ਖਾਤਾ ਗ਼ਲਤੀ ਨਾਲ਼ ਬਣ ਗਿਆ ਹੈ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ।',
 'usernamehasherror' => 'ਵਰਤੋਂਕਾਰ ਦੇ ਨਾਂ ਵਿਚ ਹੈਸ਼ ਅੱਖਰ ਨਹੀਂ ਹੋ ਸਕਦੇ',
 'login-throttled' => 'ਤੁਸੀਂ ਬਹੁਤ ਸਾਰੀਆਂ ਤਾਜ਼ਾ ਲਾਗਇਨ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਹਨ।
-ਫà©\87ਰ à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰਨ à¨¤à©\8bà¨\82 à¨ªà¨¹à¨¿à¨²à¨¾à¨\82 à¨¥à©\8bà©\9cà©\8dਹà©\80 ਉਡੀਕ ਕਰੋ ਜੀ।',
+ਮà©\81à©\9c à¨\95à©\8bਸ਼ਿਸ਼ à¨\95ਰਨ à¨¤à©\8bà¨\82 à¨ªà¨¹à¨¿à¨²à¨¾à¨\82 $1 ਉਡੀਕ ਕਰੋ ਜੀ।',
 'login-abort-generic' => 'ਤੁਹਾਡਾ ਦਾਖ਼ਲਾ ਨਾਕਾਮ ਸੀ - ਅਧੂਰਾ ਛੱਡਿਆ',
 'loginlanguagelabel' => 'ਭਾਸ਼ਾ: $1',
 'suspicious-userlogout' => 'ਤੁਹਾਡੀ ਵਿਦਾਇਗੀ ਦੀ ਬੇਨਤੀ ਨਕਾਰ ਦਿੱਤੀ ਗਈ ਕਿਉਂਕਿ ਲੱਗਦਾ ਹੈ ਕਿ ਇਹ ਕਿਸੇ ਟੁੱਟੇ ਹੋਏ ਬਰਾਊਜ਼ਰ ਜਾਂ ਕੈਸ਼ ਹੋਈ ਪ੍ਰਾਕਸੀ ਤੋਂ ਭੇਜੀ ਗਈ ਸੀ।',
+'createacct-another-realname-tip' => 'ਅਸਲੀ ਨਾਂ ਚੋਣਵਾਂ ਹੈ।
+ਜੇਕਰ ਤੁਸੀਂ ਇਹ ਦਿੱਤਾ ਹੈ ਤਾਂ ਤੁਹਾਡੇ ਕੰਮ ਵਾਸਤੇ ਗੁਣ ਦੇ ਤੌਰ ਉੱਤੇ ਵਰਤਿਆ ਜਾਵੇਗਾ।',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP ਦੇ ਮੇਲ() ਕਰਜ ਵਿੱਚ ਅਣਜਾਣ ਦੋਸ਼',
@@ -721,7 +723,7 @@ $2',
 'user-mail-no-body' => 'ਖ਼ਾਲੀ ਜਾਂ ਬਹੁਤੀ ਛੋਟੀ ਸਮੱਗਰੀ ਨਾਲ਼ ਈਮੇਲ ਭੇਜਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਗਈ',
 
 # Change password dialog
-'resetpass' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
+'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
 'resetpass_announce' => 'ਤੁਸੀਂ ਇੱਕ ਆਰਜ਼ੀ ਈ-ਮੇਲ ਕੀਤੇ ਕੋਡ ਨਾਲ ਲਾਗਇਨ ਕੀਤਾ ਹੈ। ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਥੇ ਨਵਾਂ ਪਾਸਵਰਡ ਦੇਣਾ ਪਵੇਗਾ:',
 'resetpass_header' => 'ਅਕਾਊਂਟ ਪਾਸਵਰਡ ਬਦਲੋ',
 'oldpassword' => 'ਪੁਰਾਣਾ ਪਾਸਵਰਡ:',
@@ -778,6 +780,9 @@ $2
 
 # Special:ResetTokens
 'resettokens' => 'ਟੋਕਨ ਮੁੜ-ਸੈੱਟ ਕਰੋ',
+'resettokens-tokens' => 'ਟੋਕਨ:',
+'resettokens-token-label' => '$1 (ਚਾਲੂ ਮੁੱਲ: $2)',
+'resettokens-resetbutton' => 'ਚੁਣੇ ਹੋਏ ਟੋਕਨ ਮੁੜ ਸੈੱਟ ਕਰੋ',
 
 # Edit page toolbar
 'bold_sample' => 'ਗੂੜੀ ਲਿਖਤ',
@@ -1017,19 +1022,16 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'rev-showdeleted' => 'ਵਿਖਾਓ',
 'revisiondelete' => 'ਰੀਵਿਜ਼ਨ ਹਟਾਓ/ਹਟਾਇਆ-ਵਾਪਸ',
 'revdelete-nooldid-title' => 'ਕੋਈ ਨਿਸ਼ਾਨੇ ਵਾਲੀ ਰੀਵਿਜ਼ਨ ਨਹੀਂ',
-'revdelete-nologtype-title' => 'ਚਿੱਠੇ ਦੀ ਕਿਸਮ ਨਹੀਂ ਦੱਸੀ ਗਈ',
-'revdelete-nologtype-text' => 'ਇਹ ਕਾਰਵਾਈ ਕਰਨ ਲਈ ਤੁਸੀਂ ਚਿੱਠੇ ਦੀ ਕਿਸਮ ਨਹੀਂ ਦੱਸੀ।',
-'revdelete-nologid-title' => 'ਗ਼ਲਤ ਦਾਖ਼ਲਾ ਇੰਦਰਾਜ',
 'revdelete-no-file' => 'ਦਿੱਤੀ ਗਈ ਫਾਇਲ ਮੌਜੂਦ ਨਹੀਂ ਹੈ।',
 'revdelete-show-file-confirm' => 'ਤੁਹਾਨੂੰ ਯਕੀਨ ਹੈ ਤੁਸੀਂ $2 ਨੂੰ $3 ਦੀ ਫ਼ਾਈਲ "<nowiki>$1</nowiki>" ਦੀ ਮਿਟਾਈ ਗਈ ਰੀਵਿਜ਼ਨ ਵੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ?',
 'revdelete-show-file-submit' => 'ਹਾਂ',
 'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|ਦੀ ਚੁਣੀ ਹੋਈ ਰੀਵਿਜ਼ਨ|ਦੀਆਂ ਚੁਣੀਆਂ ਹੋਈਆਂ ਰੀਵਿਜ਼ਨਾਂ}}:'''",
 'revdelete-legend' => 'ਵੇਖਣ ਪਾਬੰਦੀਆਂ ਸੈੱਟ ਕਰੋ:',
-'revdelete-hide-text' => 'ਰà©\80ਵਿà¨\9c਼ਨ à¨²à¨¿à¨\96ਤ à¨\93ਹਲà©\87',
+'revdelete-hide-text' => 'ਦà©\81ਹਰਾà¨\88 à¨²à¨¿à¨\96ਤ',
 'revdelete-hide-image' => 'ਫ਼ਾਈਲ ਸਮੱਗਰੀ ਓਹਲੇ',
 'revdelete-hide-name' => 'ਕਾਰਵਾਈ ਅਤੇ ਟਾਰਗੇਟ ਓਹਲੇ',
-'revdelete-hide-comment' => 'ਸੋਧ ਸਾਰ ਲੁਕਾਓ',
-'revdelete-hide-user' => 'ਸà©\8bਧਣ à¨µà¨¾à¨²à¨¼à©\87 à¨¦à¨¾ à¨®à©\88à¨\82ਬਰ-ਨਾà¨\82/IP à¨ªà¨¤à¨¾ à¨²à©\81à¨\95ਾà¨\93',
+'revdelete-hide-comment' => 'ਸੋਧ ਸਾਰ',
+'revdelete-hide-user' => 'ਸà©\8bਧਣ à¨µà¨¾à¨²à¨¼à©\87 à¨¦à¨¾ à¨µà¨°à¨¤à©\8bà¨\82à¨\95ਾਰà©\80 à¨¨à¨¾à¨\82/IP à¨ªà¨¤à¨¾',
 'revdelete-hide-restricted' => 'ਪ੍ਰਸ਼ਾਸਕਾਂ ਅਤੇ ਹੋਰਾਂ ਦੀ ਸਮੱਗਰੀ ਲੁਕਾਓ',
 'revdelete-radio-same' => '(ਨਾ ਬਦਲੋ)',
 'revdelete-radio-set' => 'ਲੁਕਵਾਂ',
@@ -1038,14 +1040,15 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'revdelete-unsuppress' => 'ਮੁੜ ਬਹਾਲ ਕੀਤੀਆਂ ਰੀਵਿਜ਼ਨਾਂ ਤੋਂ ਰੋਕਾਂ ਹਟਾਓ',
 'revdelete-log' => 'ਕਾਰਨ:',
 'revdelete-submit' => 'ਚੁਣੇ ਹੋਏ {{PLURAL:$1|ਸੁਧਾਰ|ਸੁਧਾਰਾਂ}} ਉੱਤੇ ਲਾਗੂ ਕਰੋ',
+'revdelete-success' => "'''ਦੁਹਰਾਈ ਦੀ ਪ੍ਰਤੱਖਤਾ ਅੱਪਡੇਟ ਕਰਨੀ ਸਫ਼ਲ ਹੋਈ।'''",
+'revdelete-failure' => "'''ਦੁਹਰਾਈ ਦੀ ਪ੍ਰਤੱਖਤਾ ਅੱਪਡੇਟ ਨਾ ਹੋ ਸਕੀ:'''
+$1",
 'logdelete-success' => "'''ਚਿੱਠੇ ਦੀ ਦਿੱਖ ਕਾਮਯਾਬੀ ਨਾਲ਼ ਸੈੱਟ ਕੀਤੀ।'''",
 'logdelete-failure' => "'''ਚਿੱਠੇ ਦੀ ਦਿੱਖ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ:''' $1",
 'revdel-restore' => 'ਦਿੱਖ ਬਦਲੋ',
-'revdel-restore-deleted' => 'ਹਟਾਏ ਗਏ ਰੀਵੀਜਨ',
-'revdel-restore-visible' => 'ਦਿਸਣਯੋਗ ਰੀਵੀਜਨ',
 'pagehist' => 'ਸਫ਼ਾ ਅਤੀਤ',
 'deletedhist' => 'ਹਟਾਇਆ ਗਿਆ ਅਤੀਤ',
-'revdelete-hide-current' => 'ਤਾਰੀਖ &2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਰੀਵਿਜ਼ਨ ਹੈ।
+'revdelete-hide-current' => 'ਤਾਰੀਖ $2, $1 ਦੀ ਚੀਜ਼ ਲੁਕਾਉਣ ਵਿਚ ਗ਼ਲਤੀ: ਇਹ ਮੌਜੂਦਾ ਦੁਹਰਾਈ ਹੈ।
 ਇਹ ਲੁਕਾਈ ਨਹੀਂ ਜਾ ਸਕਦੀ।',
 'revdelete-otherreason' => 'ਹੋਰ/ਵਾਧੂ ਕਾਰਨ:',
 'revdelete-reasonotherlist' => 'ਹੋਰ ਕਾਰਨ',
@@ -1088,16 +1091,14 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'compareselectedversions' => 'ਚੁਣੇ ਵਰਜਨਾਂ ਦੀ ਤੁਲਨਾ',
 'showhideselectedversions' => 'ਚੁਣੇ ਰੀਵਿਜ਼ਨ ਵਖਾਓ/ਲੁਕਾਓ',
 'editundo' => 'ਰੱਦ ਕਰੋ',
+'diff-empty' => '(ਕੋਈ ਫ਼ਰਕ ਨਹੀਂ)',
 'diff-multi' => '({{PLURAL:$2|ਵਰਤੋਂਕਾਰ ਦੀ|$2 ਵਰਤੋਂਕਾਰਾਂ ਦੀਆਂ}} {{PLURAL:$1|ਵਿਚਕਾਰਲੀ ਰੀਵਿਜਨ ਨਹੀਂ ਦਿਖਾਈ ਜਾ ਰਹੀ|ਵਿਚਕਾਰਲੀਆਂ $1 ਰੀਵਿਜਨਾਂ ਨਹੀਂ ਦਿਖਾਈਆਂ ਜਾ ਰਹੀਆਂ}})',
 
 # 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}}',
@@ -1106,10 +1107,8 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'nextn-title' => '{{PLURAL:$1|ਅਗਲਾ|ਅਗਲੇ}} $1 {{PLURAL:$1|ਨਤੀਜਾ|ਨਤੀਜੇ}}',
 'shown-title' => 'ਪ੍ਰਤੀ ਸਫ਼ਾ $1 {{PLURAL:$1|ਨਤੀਜਾ|ਨਤੀਜੇ}} ਵਿਖਾਓ',
 'viewprevnext' => 'ਵੇਖੋ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ਖੋਜ-ਸਬੰਧੀ ਚੋਣਾਂ',
 'searchmenu-exists' => "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:\$1]]\" ਨਾਮ ਦਾ ਸਫਾ ਹੈ।'''",
 'searchmenu-new' => "'''ਇਸ ਵਿਕੀ ’ਤੇ \"[[:\$1]]\" ਸਫ਼ਾ ਬਣਾਓ!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ਇਸ ਅਗੇਤਰ ਵਾਲ਼ੇ ਸਫ਼ੇ ਵੇਖੋ]]',
 'searchprofile-articles' => 'ਸਮੱਗਰੀ ਸਫ਼ੇ',
 'searchprofile-project' => 'ਮਦਦ ਤੇ ਪਰੋਜੈਕਟ ਸਫ਼ੇ',
 'searchprofile-images' => 'ਮਲਟੀਮੀਡੀਆ',
@@ -1130,7 +1129,6 @@ page={{FULLPAGENAMEE}}}} ਜ਼ਬਤੀ ਦੇ ਚਿੱਠੇ] ਵਿਚ ਵ
 'search-interwiki-default' => '$1 ਨਤੀਜੇ:',
 'search-interwiki-more' => '(ਹੋਰ)',
 'search-relatedarticle' => 'ਸਬੰਧਤ',
-'mwsuggest-disable' => 'ਖੋਜ ਦੀਆਂ ਸਲਾਹਾਂ ਬੰਦ ਕਰੋ',
 'searcheverything-enable' => 'ਸਾਰੇ ਥਾਂ-ਨਾਂਵਾਂ ਵਿਚ ਖੋਜੋ',
 'searchrelated' => 'ਸਬੰਧਤ',
 'searchall' => 'ਸਭ',
@@ -1140,11 +1138,9 @@ $1|'''1''' ਨਤੀਜਾ|'''$1''' ਤੱਕ ਨਤੀਜੇ}} ਵਖਾਓ।"
 $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'showingresultsheader' => "'''$4''' ਵਾਸਤੇ {{PLURAL:$5|'''$3''' ਵਿੱਚੋਂ '''$1''' ਨਤੀਜੇ|'''$3''' ਵਿੱਚੋਂ '''$1 - $2''' ਨਤੀਜੇ}}",
 'search-nonefound' => 'ਤੁਹਾਡੀ ਖੋਜ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਕੋਈ ਨਤੀਜੇ ਨਹੀਂ ਮਿਲੇ।',
-'powersearch' => 'ਤਕਨੀਕੀ ਖੋਜ',
 'powersearch-legend' => 'ਤਕਨੀਕੀ ਖੋਜ',
 'powersearch-ns' => 'ਨੇਮ-ਸਪੇਸ ਵਿੱਚ ਖੋਜ:',
 'powersearch-redir' => 'ਰੀ-ਡਿਰੈਕਟ ਸੂਚੀਬੱਧ ਕਰੋ',
-'powersearch-field' => 'ਇਸ ਲਈ ਖੋਜ',
 'powersearch-togglelabel' => 'ਜਾਂਚੋ:',
 'powersearch-toggleall' => 'ਸਭ',
 'powersearch-togglenone' => 'ਕੋਈ ਨਹੀਂ',
@@ -1155,7 +1151,6 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'preferences' => 'ਪਸੰਦਾਂ',
 'mypreferences' => 'ਪਸੰਦਾਂ',
 'prefs-edits' => 'ਸੋਧਾਂ ਦੀ ਗਿਣਤੀ:',
-'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
 'prefs-skin' => 'ਸਕਿਨ',
 'skin-preview' => 'ਝਲਕ',
 'datedefault' => 'ਕੋਈ ਪਸੰਦ ਨਹੀਂ',
@@ -1178,13 +1173,11 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'prefs-email' => 'ਈਮੇਲ ਚੋਣਾਂ',
 'prefs-rendering' => 'ਦਿੱਖ',
 'saveprefs' => 'ਸੰਭਾਲੋ',
-'resetprefs' => 'ਅਣ-ਸਾਂਭੀਆਂ ਤਬਦੀਲੀਆਂ ਸਾਫ਼ ਕਰੋ',
 'restoreprefs' => 'ਸਭ ਮੂਲ ਸੈਟਿੰਗਾਂ ਮੋੜ ਲਿਆਓ',
 'prefs-editing' => 'ਸੋਧ ਜਾਰੀ',
 'rows' => 'ਕਤਾਰਾਂ:',
 'columns' => 'ਕਾਲਮ:',
 'searchresultshead' => 'ਖੋਜ',
-'resultsperpage' => 'ਪ੍ਰਤੀ ਸਫ਼ਾ ਫੇਰੀਆਂ:',
 'stub-threshold-disabled' => 'ਬੰਦ ਹੈ',
 'recentchangesdays' => 'ਤਾਜ਼ਾ ਤਬਦੀਲੀਆਂ ਵਿਚ ਵਿਖਾਉਣ ਲਈ ਦਿਨ:',
 'recentchangesdays-max' => 'ਵੱਧ ਤੋਂ ਵੱਧ $1 {{PLURAL:$1|ਦਿਨ|ਦਿਨ}}',
@@ -1195,7 +1188,6 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'localtime' => 'ਸਥਾਨਕ ਸਮਾਂ:',
 'timezoneuseserverdefault' => 'ਵਿਕੀ ਮੂਲ ($1) ਵਰਤੋ',
 'timezoneuseoffset' => 'ਹੋਰ (ਆਫ਼ਸੈੱਟ ਦੱਸੋ)',
-'timezoneoffset' => 'ਆਫ਼ਸੈੱਟ¹:',
 'servertime' => 'ਸਰਵਰ ਦਾ ਟਾਈਮ:',
 'guesstimezone' => 'ਬਰਾਊਜ਼ਰ ਤੋਂ ਭਰੋ',
 'timezoneregion-africa' => 'ਅਫ਼ਰੀਕਾ',
@@ -1231,7 +1223,7 @@ $3|'''1''' ਨਤੀਜਾ|'''$3''' ਨਤੀਜੇ}} ਵਖਾਓ।",
 'badsig' => 'ਗ਼ਲਤ ਕੱਚੇ ਦਸਤਖ਼ਤ।
 HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'badsiglength' => 'ਦਸਤਖ਼ਤ ਬਹੁਤ ਲੰਬਾ ਹੋ ਗਿਆ ਹੈ। ਇਹ {{PLURAL:$1|ਅੱਖਰ|ਅੱਖਰਾਂ}} ਤੋਂ ਲੰਬਾ ਨਹੀਂ ਹੋਣਾ ਚਾਹੀਦਾ।',
-'yourgender' => 'ਲਿੰà¨\97:',
+'yourgender' => 'ਤà©\81ਸà©\80à¨\82 à¨\86ਪਣਾ à¨µà¨°à¨£à¨¨ à¨\95ਿਵà©\87à¨\82 à¨\95ਰਨਾ à¨ªà¨¸à©°à¨¦ à¨\95ਰà©\8bà¨\97à©\87?',
 'gender-unknown' => 'ਮੈਂ ਦੱਸਣਾ ਨਹੀਂ ਚਾਹੁੰਦਾ/ਚਾਹੁੰਦੀ',
 'gender-male' => 'ਉਹ ਵਿਕੀ ਸਫ਼ੇ ਸੋਧਦਾ ਹੈ',
 'gender-female' => 'ਉਹ ਵਿਕੀ ਸਫ਼ੇ ਸੋਧਦੀ ਹੈ',
@@ -1256,7 +1248,9 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'prefs-displayrc' => 'ਵੇਖਾਉਣ ਚੋਣਾਂ',
 'prefs-displaysearchoptions' => 'ਵੇਖਾਉਣ ਚੋਣਾਂ',
 'prefs-displaywatchlist' => 'ਵੇਖਾਉਣ ਚੋਣਾਂ',
+'prefs-tokenwatchlist' => 'ਟੋਕਨ',
 'prefs-diffs' => 'ਫ਼ਰਕ',
+'prefs-help-prefershttps' => 'ਇਹ ਪਸੰਦ ਤੁਹਾਡੇ ਅਗਲੇ ਦਾਖ਼ਲੇ ਤੋਂ ਚਾਲੂ ਹੋ ਜਾਵੇਗੀ।',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ਈ-ਮੇਲ ਪਤਾ ਸਹੀ ਲਗਦਾ ਹੈ',
@@ -1293,6 +1287,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'group-bot-member' => 'ਬੌਟ',
 
 'grouppage-user' => '{{ns:project}}:ਵਰਤੋਂਕਾਰ',
+'grouppage-autoconfirmed' => '{{ns:project}}:ਸਵੈ-ਤਸਦੀਕੀ ਵਰਤੋਂਕਾਰ',
 'grouppage-bot' => '{{ns:project}}:ਬੌਟ',
 'grouppage-sysop' => '{{ns:project}}:ਪ੍ਰਸ਼ਾਸਕ',
 'grouppage-bureaucrat' => '{{ns:project}}:ਅਫ਼ਸਰ',
@@ -1383,6 +1378,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|ਤਬਦੀਲੀ|ਤਬਦੀਲੀਆਂ}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|ਆਖ਼ਰੀ ਫੇਰੀ ਤੋਂ ਲੈ ਕੇ}}',
+'enhancedrc-history' => 'ਅਤੀਤ',
 'recentchanges' => 'ਹਾਲ ’ਚ ਹੋਈਆਂ ਤਬਦੀਲੀਆਂ',
 'recentchanges-legend' => 'ਹਾਲ ਦੀਆਂ ਤਬਦੀਲੀਆਂ ਸਬੰਧੀ ਚੋਣਾਂ',
 'recentchanges-summary' => 'ਇਸ ਵਿਕੀ ’ਤੇ ਹੋਈਆਂ ਸਭ ਤੋਂ ਨਵੀਆਂ ਤਬਦੀਲੀਆਂ ਇਸ ਸਫ਼ੇ ’ਤੇ ਵੇਖੋ।',
@@ -1392,7 +1389,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'recentchanges-label-bot' => 'ਇਹ ਸੋਧ ਇੱਕ ਬੋਟ ਦੁਆਰਾ ਕੀਤੀ ਗਈ ਸੀ',
 'recentchanges-label-unpatrolled' => 'ਇਹ ਫੇਰ-ਬਦਲ ਹਾਲੇ ਵੇਖਿਆ ਨਹੀਂ ਗਿਆ',
 'recentchanges-legend-newpage' => '$1 - ਨਵਾਂ ਸਫ਼ਾ',
-'rcnote' => "$4, $5 ਤੱਕ ਆਖਰੀ {{PLURAL:$2|ਦਿਨ|'''$2''' ਦਿਨਾਂ}} ਵਿੱਚ {{PLURAL:$1|'''1''' ਬਦਲੀ ਹੋਈ ਹੈ।|'''$1''' ਬਦਲੀਆਂ ਹੋਈਆਂ ਹਨ।}}",
+'recentchanges-legend-plusminus' => "(''±੧੨੩'')",
 'rcnotefrom' => "'''$2''' ਤੱਕ ('''$1''' ਤੱਕ ਦਿੱਸਦੇ) ਬਦਲਾਵ ਹੇਠ ਦਿੱਤੀਆਂ ਹਨ।",
 'rclistfrom' => '$1 ਤੋਂ ਸ਼ੁਰੂ ਕਰਕੇ ਨਵੀਆਂ ਸੋਧਾਂ ਵਖਾਓ',
 'rcshowhideminor' => 'ਛੋਟੀਆਂ ਤਬਦੀਲੀਆਂ $1',
@@ -1511,6 +1508,7 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'uploadstash-refresh' => 'ਫ਼ਾਈਲਾਂ ਦੀ ਲਿਸਟ ਨੂੰ ਤਾਜ਼ਾ ਕਰੋ',
 
 # img_auth script messages
+'img-auth-accessdenied' => 'ਪਹੁੰਚ ਨਕਾਰੀ ਗਈ',
 'img-auth-nofile' => 'ਫ਼ਾਈਲ "$1" ਮੌਜੂਦ ਨਹੀਂ ਹੈ।',
 
 # Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
@@ -1536,6 +1534,8 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'listfiles_size' => 'ਆਕਾਰ',
 'listfiles_description' => 'ਵੇਰਵਾ',
 'listfiles_count' => 'ਵਰਜਨ',
+'listfiles-latestversion-yes' => 'ਹਾਂ',
+'listfiles-latestversion-no' => 'ਨਹੀਂ',
 
 # File description page
 'file-anchor-link' => 'ਫ਼ਾਈਲ',
@@ -1614,6 +1614,12 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'randompage' => 'ਰਲ਼ਵਾਂ ਸਫ਼ਾ',
 'randompage-nopages' => '{{PLURAL:$2|ਇਸ ਥਾਂ-ਨਾਮ|ਇਹਨਾਂ ਥਾਂ-ਨਾਂਵਾ}} ਵਿਚ ਕੋਈ ਸਫ਼ਾ ਨਹੀਂ ਹੈ: $1।',
 
+# Random page in category
+'randomincategory' => 'ਸ਼੍ਰੇਣੀ ਵਿਚਲਾ ਰਲ਼ਵਾਂ ਸਫ਼ਾ',
+'randomincategory-invalidcategory' => '"$1" ਕੋਈ ਸਹੀ ਸ਼੍ਰੇਣੀ ਦਾ ਨਾਂ ਨਹੀਂ ਹੈ।',
+'randomincategory-nopages' => '[[:Category:$1|$1]] ਸ਼੍ਰੇਣੀ ਵਿਚ ਕੋਈ ਸਫ਼ਾ ਨਹੀਂ ਹੈ।',
+'randomincategory-selectcategory-submit' => 'ਜਾਓ',
+
 # Random redirect
 'randomredirect' => 'ਰਲ਼ਵਾਂ ਰੀਡਿਰੈਕਟ',
 
@@ -1680,7 +1686,6 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'longpages' => 'ਲੰਮੇ ਸਫ਼ੇ',
 'protectedpages' => 'ਸੁਰੱਖਿਅਤ ਸਫ਼ੇ',
 'protectedtitles' => 'ਸੁਰੱਖਿਅਤ ਸਿਰਲੇਖ',
-'protectedtitlestext' => 'ਹੇਠ ਲਿਖੇ ਸਿਰਲੇਖਾਂ ਨੂੰ ਬਣਾਉਣ ਤੋਂ ਸੁਰੱਖਿਅਤ ਕੀਤਾ ਹੋਇਆ ਹੈ।',
 'listusers' => 'ਯੂਜ਼ਰ ਲਿਸਟ',
 'listusers-editsonly' => 'ਸਿਰਫ਼ ਸੋਧਾਂ ਵਾਲੇ ਵਰਤੋਂਕਾਰ ਵਿਖਾਓ',
 'listusers-creationsort' => 'ਬਣਾਉਣ ਦੀ ਮਿਤੀ ਮੁਤਾਬਕ ਤਰਤੀਬ ਵਿਚ ਕਰੋ',
@@ -1720,9 +1725,6 @@ HTML ਟੈਗ ਚੈੱਕ ਕਰੋ।',
 'allpagesto' => 'ਇਸਤੇ ਖ਼ਤਮ ਹੋਣ ਵਾਲ਼ੇ ਸਫ਼ੇ ਵਖਾਓ:',
 'allarticles' => 'ਸਭ ਸਫ਼ੇ',
 'allinnamespace' => 'ਸਭ ਸਫ਼ੇ ($1 ਨਾਂ-ਥਾਂ)',
-'allnotinnamespace' => 'ਸਭ ਸਫ਼ੇ ($1 ਨਾਂ-ਥਾਂ ਵਿਚ ਨਹੀਂ)',
-'allpagesprev' => 'ਪਿੱਛੇ',
-'allpagesnext' => 'ਅੱਗੇ',
 'allpagessubmit' => 'ਜਾਓ',
 'allpagesprefix' => 'ਇਸ ਅਗੇਤਰ ਵਾਲ਼ੇ ਸਫ਼ੇ ਵਖਾਓ:',
 'allpages-bad-ns' => '{{SITENAME}} ’ਤੇ "$1" ਥਾਂ-ਨਾਮ ਨਹੀਂ ਹੈ।',
@@ -1943,7 +1945,6 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'undeletebtn' => 'ਮੁੜ-ਸਟੋਰ',
 'undeletelink' => 'ਵੇਖੋ/ਮੁੜ ਬਹਾਲ ਕਰੋ',
 'undeleteviewlink' => 'ਵੇਖੋ',
-'undeletereset' => 'ਮੁੜ-ਸੈੱਟ',
 'undeletecomment' => 'ਕਾਰਨ:',
 'undelete-header' => 'ਤਾਜ਼ੇ ਹਟਾਏ ਗਏ ਪੰਨਿਆਂ ਲਈ  [[Special:Log/delete|ਹਟਾਇਆ ਚਿੱਠਾ]] ਵੇਖੋ।',
 'undelete-search-title' => 'ਮਿਟਾਏ ਹੋਏ ਸਫ਼ੇ ਖੋਜੋ',
@@ -1963,7 +1964,7 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'contributions' => '{{GENDER:$1|ਮੈਂਬਰ}} ਯੋਗਦਾਨ',
 'contributions-title' => '$1 ਲਈ ਵਰਤੋਂਕਾਰ ਯੋਗਦਾਨ',
 'mycontris' => 'ਯੋਗਦਾਨ',
-'contribsub2' => '$1 ($2) ਲਈ',
+'contribsub2' => '{{GENDER:$3|$1}} ($2) ਲਈ',
 'uctop' => '(ਮੌਜੂਦਾ)',
 'month' => 'ਇਸ (ਅਤੇ ਪਿਛਲੇ) ਮਹੀਨੇ ਤੋਂ :',
 'year' => 'ਇਸ (ਅਤੇ ਪਿਛਲੇ) ਸਾਲ ਤੋਂ :',
@@ -2007,19 +2008,15 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'block' => "ਵਰਤੋਂਕਾਰ 'ਤੇ ਪਾਬੰਦੀ ਲਾਓ",
 'unblock' => "ਵਰਤੋਂਕਾਰ 'ਤੇ ਲੱਗੀ ਪਾਬੰਦੀ ਹਟਾਓ",
 'blockip' => 'ਵਰਤੋਂਕਾਰ ’ਤੇ ਪਾਬੰਦੀ ਲਾਓ',
-'blockip-title' => "ਵਰਤੋਂਕਾਰ 'ਤੇ ਪਾਬੰਦੀ ਲਾਓ",
 'blockip-legend' => "ਵਰਤੋਂਕਾਰ 'ਤੇ ਪਾਬੰਦੀ ਲਾਓ",
 'ipadressorusername' => 'IP ਐਡਰੈਸ ਜਾਂ ਯੂਜ਼ਰ ਨਾਂ:',
 'ipbexpiry' => 'ਮਿਆਦ:',
 'ipbreason' => 'ਕਾਰਨ:',
-'ipbreasonotherlist' => 'ਹੋਰ ਕਾਰਨ',
 'ipbcreateaccount' => "ਖਾਤਾ ਬਣਾਉਣ 'ਤੇ ਰੋਕ ਲਾਓ",
 'ipbemailban' => 'ਵਰਤੋਂਕਾਰ ਉੱਤੇ ਈਮੇਲ ਭੇਜਣ ਦੀ ਰੋਕ ਲਾਓ',
 'ipbsubmit' => 'ਇਹ ਯੂਜ਼ਰ ਲਈ ਪਾਬੰਦੀ',
 'ipbother' => 'ਹੋਰ ਟਾਈਮ:',
 'ipboptions' => '2 ਘੰਟੇ:2 hours, 1 ਦਿਨ:1 day, 3 ਦਿਨ:3 days, 1 ਹਫ਼ਤਾ:1 week, 2 ਹਫ਼ਤੇ:2 weeks, 2 ਮਹੀਨਾ:1 month, 3 ਮਹੀਨੇ:3 months, 6 ਮਹੀਨੇ:6 months, 1 ਸਾਲ:1 year, ਹਮੇਸ਼ਾਂ ਲਈ:infinite',
-'ipbotheroption' => 'ਹੋਰ',
-'ipbotherreason' => 'ਹੋਰ/ਆਮ ਕਾਰਨ:',
 'ipbhidename' => 'ਸੋਧਾਂ ਅਤੇ ਕੜੀਆਂ ਤੋਂ ਵਰਤੋਂਕਾਰ ਦਾ ਨਾਂ ਲੁਕਾਓ',
 'ipbwatchuser' => 'ਇਸ ਵਰਤੋਂਕਾਰ ਦੇ ਵਰਤੋਂਕਾਰ ਅਤੇ ਗੱਲ-ਬਾਤ ਸਫ਼ਿਆਂ ਤੇ ਨਜ਼ਰ ਰੱਖੋ',
 'ipb-confirm' => 'ਪਾਬੰਦੀ ਤਸਦੀਕ ਕਰੋ',
@@ -2079,7 +2076,6 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'ipb-otherblocks-header' => 'ਹੋਰ {{PLURAL:$1|ਪਾਬੰਦੀ|ਪਾਬੰਦੀਆਂ}}',
 'unblock-hideuser' => 'ਤੁਸੀਂ ਇਸ ਮੈਂਬਰ ’ਤੇ ਪਾਬੰਦੀ ਨਹੀਂ ਲਾ ਸਕਦੇ ਕਿਉਂਕਿ ਇਸਦਾ ਮੈਂਬਰ-ਨਾਂ ਲੁਕਾਇਆ ਹੋਇਆ ਹੈ।',
 'ipb_cant_unblock' => 'ਗ਼ਲਤੀ: ਪਾਬੰਦੀ ਪਤਾ $1 ਨਹੀਂ ਲੱਭਿਆ। ਸ਼ਾਇਦ ਇਹ ਪਹਿਲਾਂ ਹੀ ਪਾਬੰਦੀ-ਮੁਕਤ ਹੋ ਚੁੱਕਾ ਹੈ।',
-'cant-block-while-blocked' => 'ਤੁਸੀਂ ਦੂਜੇ ਮੈਂਬਰਾਂ ’ਤੇ ਪਾਬੰਦੀ ਨਹੀਂ ਲਾ ਸਕਦੇ ਜਦੋਂ ਤੁਸੀਂ ਖ਼ੁਦ ਪਾਬੰਦੀਸ਼ੁਦਾ ਹੋ।',
 'ipbblocked' => 'ਤੁਸੀਂ ਦੂਜੇ ਮੈਂਬਰਾਂ ਨੂੰ ਪਾਬੰਦੀਸ਼ੁਦਾ ਜਾਂ ਪਾਬੰਦੀ-ਮੁਕਤ ਨਹੀਂ ਕਰ ਸਕਦੇ ਕਿਉਂਕਿ ਤੁਸੀਂ ਖ਼ੁਦ ਪਾਬੰਦੀਸ਼ੁਦਾ ਹੋ',
 'ipbnounblockself' => 'ਤੁਹਾਨੂੰ ਖ਼ੁਦ ਨੂੰ ਪਾਬੰਦੀ-ਮੁਕਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ',
 
@@ -2090,7 +2086,6 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'move-page' => '$1 ਭੇਜੋ',
 'move-page-legend' => 'ਸਫ਼ਾ ਭੇਜੋ',
 'movearticle' => 'ਸਫ਼ਾ ਭੇਜੋ:',
-'movenologin' => 'ਲਾਗਇਨ ਨਹੀਂ ਹੋ',
 'movenologintext' => 'ਇਕ ਸਫ਼ੇ ਦਾ ਸਿਰਲੇਖ ਬਦਲਣ ਲਈ ਤੁਸੀਂ ਰਜਿਸਟਰਡ ਮੈਂਬਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹੋ ਅਤੇ [[Special:UserLogin|ਲਾਗਇਨ]] ਕੀਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।',
 'movenotallowedfile' => 'ਤੁਹਾਨੂੰ ਫ਼ਾਈਲਾਂ ਭੇਜਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।',
 'cant-move-user-page' => 'ਤੁਹਾਨੂੰ ਵਰਤੋਂਕਾਰ ਸਫ਼ਿਆਂ (ਉਪ-ਸਫ਼ਿਆਂ ਤੋਂ ਛੁੱਟ) ਨੂੰ ਭੇਜਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।',
@@ -2102,7 +2097,6 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'movepage-moved-redirect' => 'ਇੱਕ ਰੀਡਿਰੈਕਟ ਬਣਾ ਦਿੱਤਾ ਗਿਆ।',
 'articleexists' => 'ਇਸ ਨਾਮ ਦਾ ਸਫ਼ਾ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ ਜਾਂ ਤੁਹਾਡਾ ਚੁਣਿਆ ਹੋਇਆ ਨਾਮ ਸਹੀ ਨਹੀਂ ਹੈ।
 ਮਿਹਰਬਾਨੀ ਕਰਕੇ ਕੋਈ ਹੋਰ ਨਾਮ ਚੁਣੋ।',
-'movedto' => 'ਭੇਜਿਆ',
 'movetalk' => 'ਨਾਲ਼ ਲੱਗਦਾ ਗੱਲ-ਬਾਤ ਸਫ਼ਾ ਭੇਜੋ',
 'movepage-page-moved' => 'ਸਫ਼ਾ $1 ਨੂੰ $2 ’ਤੇ ਭੇਜਿਆ ਜਾ ਚੁੱਕਾ ਹੈ।',
 'movelogpage' => 'ਸਿਰਲੇਖ ਬਦਲੀ ਦਾ ਚਿੱਠਾ',
@@ -2543,15 +2537,10 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 'exif-urgency-low' => 'ਨੀਵਾਂ ($1)',
 'exif-urgency-high' => 'ਉੱਚਾ ($1)',
 
-# External editor support
-'edit-externally' => 'ਬਾਹਰੀ ਐਪਲੀਕੇਸ਼ਨ ਵਰਤ ਕੇ ਇਸ ਫ਼ਾਈਲ ਨੂੰ ਸੋਧੋ',
-'edit-externally-help' => '(ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ਵੇਖੋ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ਸਭ',
 'namespacesall' => 'ਸਭ',
 'monthsall' => 'ਸਭ',
-'limitall' => 'ਸਭ',
 
 # Email address confirmation
 'confirmemail' => 'ਈ-ਮੇਲ ਪਤਾ ਤਸਦੀਕ ਕਰੋ',
@@ -2709,7 +2698,6 @@ $1|ਤਬਦੀਲੀ ਹੋਈ|'''$1''' ਤਬਦੀਲੀਆਂ ਹੋਈਆ
 
 # Special:ComparePages
 'comparepages' => 'ਸਫ਼ੇ ਮਿਲਾਓ',
-'compare-selector' => 'ਸਫ਼ੇ ਦੀਆਂ ਰਿਵੀਜਨਾਂ ਮਿਲਾਓ',
 'compare-page1' => 'ਸਫ਼ਾ ੧',
 'compare-page2' => 'ਸਫ਼ਾ ੨',
 'compare-rev1' => 'ਰਿਵੀਜਨ 1',
index 7e4e2a5..223994d 100644 (file)
@@ -31,7 +31,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbpageoptions' => 'Ayan bolong',
-'qbspecialpages' => 'Niduma ran Bolobolong',
 
 'returnto' => 'Impawel ed $1.',
 'help' => 'Tolong',
@@ -65,7 +64,7 @@ $messages = array(
 'protectedpage' => 'Iyayagel yan bolong',
 'jumptosearch' => 'anapen',
 
-# 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).
+# 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).
 'aboutsite' => 'Nipakar ed {{SITENAME}}',
 'aboutpage' => 'Project:Nipaakar',
 'currentevents' => 'Saray nagagawa natan',
@@ -80,8 +79,6 @@ $messages = array(
 'badaccess-group0' => 'Agmo sarag ya gaween so action ya kekerewen mo.',
 
 'youhavenewmessages' => 'Walay $1 ($2).',
-'newmessageslink' => 'balo ran pakabat',
-'newmessagesdifflink' => 'sampot ya binalo',
 'youhavenewmessagesmulti' => 'Walay balo ran pakabat mo ed $1',
 'viewdeleted' => 'Nengnengen so $1?',
 
@@ -109,6 +106,7 @@ $messages = array(
 'accountcreatedtext' => 'Agawa la so user account para $1.',
 
 # Change password dialog
+'changepassword' => 'Salatan so password',
 'newpassword' => 'Balon password:',
 
 # Edit page toolbar
@@ -144,18 +142,8 @@ San ipropromisam met ya insulat mo yan dili o kinopyam ya manlapo ed sakey ya pu
 'histfirst' => 'Sankaunaan',
 'histlast' => 'Sankautetan',
 
-# Search results
-'searchsubtitle' => "'''[[:$1]]''' so inanap mo.",
-'searchsubtitleinvalid' => "'''$1''' so inanap mo.",
-'searchhelp-url' => 'Help:Saray Laman',
-'powersearch' => 'Anapen',
-
-# Quickbar
-'qbsettings-none' => 'Anggapo',
-
 # Preferences page
 'mypreferences' => 'Saray preference ko',
-'changepassword' => 'Salatan so password',
 'datedefault' => 'Anggapoy preference',
 'prefs-datetime' => 'Bilang na agew san oras',
 'prefs-rc' => 'Sampot ran binalo',
@@ -230,9 +218,6 @@ San ipropromisam met ya insulat mo yan dili o kinopyam ya manlapo ed sakey ya pu
 'allpagesfrom' => 'Ipanengneng ray bolobolong ya manlapod:',
 'allarticles' => 'Amin ran bolobolong',
 'allinnamespace' => 'Amin ya bolobolong ($1 namespace)',
-'allnotinnamespace' => 'Amin ya bolobolong (anggapo ed namespace ya $1)',
-'allpagesprev' => 'Enbeneg',
-'allpagesnext' => 'Ontombok',
 'allpagessubmit' => 'Ula',
 'allpagesprefix' => 'Ipanengneng so saray bolobolong ya walay prefix:',
 
@@ -241,7 +226,7 @@ San ipropromisam met ya insulat mo yan dili o kinopyam ya manlapo ed sakey ya pu
 'linksearch-pat' => 'Anapen so pattern:',
 'linksearch-ok' => 'Anapen',
 
-# E-mail user
+# Email user
 'emailuser' => 'E-mail so ayan user',
 'emailfrom' => 'Manlapud',
 'emailto' => 'Para ed',
@@ -262,9 +247,8 @@ No labay mon ekalen may bolong diad listaan na babantayan, tapik mo labat so \"e
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'Babantayan...',
 
-'enotif_newpagetext' => 'Balo yan bolong.',
-'changed' => 'asalatan',
 'created' => 'agawa',
+'changed' => 'asalatan',
 
 # Delete
 'deletepage' => 'Buralen so bolong',
@@ -355,7 +339,7 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
 # Special:NewFiles
 'ilsubmit' => 'Anapen',
 
-# EXIF tags
+# Exif tags
 'exif-filesource' => 'File na pinanlapuan',
 
 # 'all' in various places, this might be different for inflected languages
@@ -363,7 +347,7 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
 'namespacesall' => 'amin',
 'monthsall' => 'amin',
 
-# E-mail address confirmation
+# Email address confirmation
 'confirmemail' => 'Kumpirmaen so E-mail address',
 'confirmemail_sent' => 'Empawet so confirmation e-mail.',
 'confirmemail_needlogin' => 'Nakaukulan mo ya $1 umpian nakompirma so email address mo.',
index 65685c7..969deff 100644 (file)
@@ -38,7 +38,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'tog-minordefault' => 'Tambing lang tatakan a malati (minor) deng edit a e mimarkan.',
 'tog-previewontop' => 'Pakit ya ing preview bayu ing kahun nung nu mag-edit (edit box)',
 'tog-previewonfirst' => 'Pakit ya ing preview keng mumunang pamag-edit',
-'tog-nocache' => 'Patdan ya ing page caching (pamag-simpan kareng bulung)',
 'tog-enotifwatchlistpages' => 'I e-mail mu ku ustung ing bulung a babanten ku meyalili ya',
 'tog-enotifusertalkpages' => 'E-mail mu ku ustung ing kanakung gamit talamitam meyalili ya',
 'tog-enotifminoredits' => 'E-mail mu ku kareng mangalating alili da reng bulung',
@@ -146,7 +145,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
 'qbedit' => 'Mag-edit',
 'qbpageoptions' => 'Ining bulung',
 'qbmyoptions' => 'Deng kakung bulung',
-'qbspecialpages' => 'Bulung a makabukud',
 'faq' => 'Maralas a Kukutang (MAK)',
 'faqpage' => 'Project:MAK',
 
@@ -328,9 +326,6 @@ Pakisabi ya iti king metung a  [[Special:ListUsers/sysop|administrator]], at pak
 'perfcachedts' => 'Makasimpan (cached) ya ing makatuking data, at tauli yang mibayu kanitang $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Updates for this page are currently disabled. Data here will not presently be refreshed.
 Kasalungsungan yang makapatda ing pamagbayu (update) king bulung a ini. E la miyalilan ketang pekatauli (refreshed) deng makabiling data keti.',
-'wrong_wfQuery_params' => 'E la ustu deng sukad (parameter) king wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Lon ya ing pikuanan',
 'actionthrottled' => 'Mepigil ing pamangimut',
 'actionthrottledtext' => 'Metung ya kareng paralan ba yang sabatan ing spam ing pamaglimita king pamanulit king kimut (action) a iti kilub ning makuyad a panaun, at alagpusan mu ne itang angganan.
@@ -428,7 +423,7 @@ Malyari meng e pansinan ining mensahi, nung pamagkamali ing pamaglalang na nitin
 'loginlanguagelabel' => 'Amanu: $1',
 
 # Change password dialog
-'resetpass' => 'Alilan ya ing account password',
+'changepassword' => 'Alilan ya ing password',
 'resetpass_announce' => 'Gagamit kang pansamantalang code a me e-mail keka aniang mig-login ka.
 Bang mayari ing kekang pamag-login, kailangan mung mangibiling bayung password keni:',
 'resetpass_header' => 'Alilan ya ing password',
@@ -680,8 +675,6 @@ Abusni da pa murin deng aliwang talapanibala (admin) king {{SITENAME}} itang lam
 '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 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',
@@ -730,12 +723,8 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay
 # Search results
 'searchresults' => 'Ding linual (resulta) king pamanintun',
 'searchresults-title' => 'Resulta ning pamanintun king "$1"',
-'searchresulttext' => 'Nung bisa kang karagdagang impormasiun tungkul king pamanintun king {{SITENAME}}, lon me ing [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Penintun me ing \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|deng anggang bulung a magumpisa king "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|Deng anggang bulung a makasuglung king "$1"]])',
-'searchsubtitleinvalid' => "Penintunan me ing '''$1'''",
 'toomanymatches' => 'Masiadu lang dakal deng tinud (matches); subukan meng alilan ing kekang kutang (query)',
 'titlematches' => 'Deng tinud/mipareu kareng bansag bulung (page title matches)',
-'notitlematches' => 'Ala yang kapareu kareng bansag da ring bulung (page title)',
 'textmatches' => 'Deng kapareu na king kasulatan (text) da reng bulung',
 'notextmatches' => 'Alang tinud/pareu kareng bansag bulung (no page title matches)',
 'prevn' => 'minunang {{PLURAL:$1|$1}}',
@@ -763,17 +752,13 @@ Tutuking $1 {{PLURAL:$1|result|results}}',
 'search-interwiki-default' => '$1 linual/resulta:',
 'search-interwiki-more' => '(dakal pa)',
 'search-relatedarticle' => 'Kamaganak',
-'mwsuggest-disable' => 'Patdan la reng munikalang AJAX',
 'searchrelated' => 'kaugne',
 'searchall' => 'eganagana',
 'showingresults' => "Ing/ding {{PLURAL:$1|'''1''' a resulta|'''$1''' resulta}} manibatan king #'''$2'''.",
 'showingresultsnum' => "Ing/ding {{PLURAL:$3|'''1''' a resulta|'''$3''' resulta}} manibatan king #'''$2'''.",
-'nonefound' => "'''Kapabaluan''': Den mung aliwang pirinan lagiu (namespace) ing tambing a masisiasat o masusuri. Subukan meng umpisan king  ''eganagana:'' (''all:'') ing kekang kutang ba kang makapanintun king sablang laman (kayabe no reng pamisabi-sabi o talk pages, modelu o template, atlwp.), o gamitan me ing pirinan lagiung buri mu antimong mumunang paniapi (prefix) o mumunang/magumpisang lagiu.",
-'powersearch' => 'Espesial a pamanintun',
 'powersearch-legend' => 'Espesial a pamanintun',
 'powersearch-ns' => 'Maintun ka kareng namespace:',
 'powersearch-redir' => 'Ilista la reng redirect (pamanaliling direccion).',
-'powersearch-field' => 'Paintunan ya ing',
 'search-external' => 'Pamanintun king kilual',
 'searchdisabled' => 'Makapatda/e gagana ing pamanintun king {{SITENAME}}.
 Samantala, maliari kang maintun kapamilatan ning Google.
@@ -783,7 +768,6 @@ Pakitandanan mung maliaring e no makapanaun deng karelang index king kalamnan ni
 'preferences' => 'Pinili',
 'mypreferences' => '↓Deng pinili ku',
 'prefs-edits' => 'Bilang da reng edit:',
-'changepassword' => 'Alilan ya ing password',
 'prefs-skin' => 'Balat',
 'skin-preview' => 'I-preview',
 'datedefault' => 'Alang mepili',
@@ -795,12 +779,10 @@ Pakitandanan mung maliaring e no makapanaun deng karelang index king kalamnan ni
 'prefs-watchlist-edits' => 'Pekamaragul a bilang da reng miyalilan a lunto king miragdagan a tala da reng babanten (expanded watchlist):',
 'prefs-misc' => 'Alwp',
 'saveprefs' => 'I-save',
-'resetprefs' => 'Buran la retang miyalilan a e me-save',
 'prefs-editing' => 'Mag-edit',
 'rows' => 'Dane (rows):',
 'columns' => 'Ding asias:',
 'searchresultshead' => 'Maintun',
-'resultsperpage' => 'Tinud (hits) balang bulung:',
 'stub-threshold' => 'Angganan ning <a href="#" class="stub">stub link</a> formatting (byte):',
 'recentchangesdays' => 'Deng aldong ipalto king bayung mengayalili:',
 'recentchangescount' => 'Bilang da reng me-edit a ipalto king bayung mengayalili:',
@@ -939,7 +921,6 @@ Nung ibie me, magamit ya bang kilalanan ing kekang ambag.',
 'recentchanges-legend' => 'Pipamilinan kareng bayung mengayalili',
 'recentchanges-summary' => 'Talukyan mo reng tawling diling mengayalilan king bulung a ini.',
 'recentchanges-feed-description' => 'Talukian mo reng bayung diling mengayalili king wiki king feed a ini.',
-'rcnote' => "King lalam {{PLURAL:$1|is '''1''' change|ding tauling '''$1''' pamagbayu}} aniang tauling {{PLURAL:$2|day|'''$2''' aldo}}, aniang $5, $4.",
 'rcnotefrom' => 'Atilu king lalam deng miyalilan manibat anyang <b>$2</b> (angga king <b>$1</b> makalto).',
 'rclistfrom' => 'Pakit la reng bayung miyalilan manibat anyang $1',
 'rcshowhideminor' => '$1 malating edit',
@@ -1215,10 +1196,8 @@ Isulat (input): contenttype/subtype, alimbawa <code>image/jpeg</code>.',
 'deadendpagestext' => 'E la makatuglung kareng aliwang bulung king wiking iti deng bulung a makatuki.',
 'protectedpages' => 'Bulung a protektadu',
 'protectedpages-indef' => 'Den mung proteksiung ali eksaktu (indefinite)',
-'protectedpagestext' => 'Protektadu/makakambil la reng makatuking bulung manibat king pamanalis o pamanalili',
 'protectedpagesempty' => 'Alang bulung a protektadu/makakambil kareng sukad (parameter) a deti king salukuyan.',
 'protectedtitles' => 'Bansag a protektadu/makakambil',
-'protectedtitlestext' => 'Protektadu/makakambil la king pamaglalang deng makatuking bansag (title)',
 'protectedtitlesempty' => 'Alang bansag a protektadu/makakambil king salukuyan a maki sukad (parameter) anti kareti.',
 'listusers' => 'Tala da reng talagamit',
 'newpages' => 'Deng bayung bulung',
@@ -1259,9 +1238,6 @@ Malyari meng kitiran ing panimanman o akakit, kapamilatan ning pamamili ning nun
 'allpagesto' => 'Ipakit la reng bulung a mayayari king:',
 'allarticles' => 'Deng eganaganang artikulu',
 'allinnamespace' => 'Deng eganaganang bulung ($1 lagyungpilatan)',
-'allnotinnamespace' => 'Deng eganaganang bulung (ala king $1 lagyungpilatan)',
-'allpagesprev' => 'Dati',
-'allpagesnext' => 'Tutuki',
 'allpagessubmit' => 'Sulung',
 'allpagesprefix' => 'Ipakit la reng bulung a atin prefix:',
 'allpagesbadtitle' => 'E matatanggap ing mibyeng bansag ning bulung o mekad maki mumuna yang panyaping (prefix) inter-language o inter-wiki. Mapalyaring atin yang metung o maygit pang letra o kulit a bawal gamitan kareng bansag.',
@@ -1507,7 +1483,6 @@ Mapaliaring putut ya ing kekang suglung, o misubli (restored) ya o milako king s
 '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',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 pamagbayung|$1 pamagbayung}} ampong {{PLURAL:$2|1 simpan|$2 simpan}} a misubli',
@@ -1587,7 +1562,6 @@ mu nung sanu retang bulung a sinira da).',
 'ipadressorusername' => 'IP Address o lagyungtalagamit (username):',
 'ipbexpiry' => 'Mayari:',
 'ipbreason' => 'Sangkan:',
-'ipbreasonotherlist' => 'Aliwang sangkan',
 'ipbreason-dropdown' => '*Keraklan a sangkan king pamaniabat
 ** Mangibiling e tutung impormasiun
 ** Maglakong laman kareng bulung
@@ -1602,8 +1576,6 @@ mu nung sanu retang bulung a sinira da).',
 'ipbsubmit' => 'Sabatan ya ing talagamit a ini',
 'ipbother' => 'Keng tutuki',
 'ipboptions' => '2 oras:2 hours,metung a yaldo:1 day,3ng aldo:3 days,paruminggu:1 week,2ng duminggu:2 weeks,pabulan:1 month,3ng bulan:3 months,6 a bulan:6 months,pabanua:1 year,alang kapupusan:infinite',
-'ipbotheroption' => 'aliwa',
-'ipbotherreason' => 'Karagdagang/aliuang sangkan:',
 'ipbhidename' => 'Isalikut ya ing lagyungtalagamit (username) king tala ring mesabat (block log), tala ring makasabat (active block list), ampong tala ring talagamit (user list)',
 'badipaddress' => 'E matatanggap ing IP address',
 'blockipsuccesssub' => 'Ing sabat migtagumpe ya',
@@ -1698,7 +1670,6 @@ sana siguraduan mung aintindian mung mayap ing kabaldugan na niti bayu mu isundu
 
 Nung makanyan pin ing milyari, kailangan meng iyalis o isanib (merge) ing bulung a saparadu nung ita ing buri mung gawan.",
 'movearticle' => 'Ialis ya ing bulung',
-'movenologin' => 'E maka-login',
 'movenologintext' => 'Kailangan, metung kang talagamit a makarehistru at [[Special:UserLogin|maka-login]] ka ba kang makapanalis bulung.',
 'movenotallowed' => 'Ala kang paintulut a manalis bulung king {{SITENAME}}.',
 'newtitle' => 'King bayung bansag:',
@@ -1710,9 +1681,6 @@ Nung makanyan pin ing milyari, kailangan meng iyalis o isanib (merge) ing bulung
 ing lagyu ginamit mu e malyari.
 Gumamit na kang aliwang lagyu.',
 'cantmove-titleprotected' => 'E ka maliaring manalis bulung keni uling protektadu/makakambil ya king pangalalang ing bayung bansag',
-'talkexists' => "'''Melaus ing pamanalis na ning mismung bulung, oneng e miyalis ing bulung-pisasabian (talk page) uling atin nang sadya ketang bayung bansag.
-Nung malyari, tunggal-tunggal mu lang piyabe/piyanib.'''",
-'movedto' => 'miyalis ya king',
 'movetalk' => 'Iyalis me ing kayabe nang bulung-pisasabian (talk page)',
 'movelogpage' => 'Iyalis ya ing tala/log',
 'movelogpagetext' => 'Makabili ya king lalam ing tala (list) da reng bulung a miyalis.',
@@ -2169,10 +2137,6 @@ Detang aliwa tambing (by default) lang makasalikut.
 # Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
 'exif-gpsdirection-t' => 'Tutung direksiun',
 
-# External editor support
-'edit-externally' => 'I-edit me ing simpan a ini kapamilatan ning aplikasiun o program a ibat king kilual.',
-'edit-externally-help' => '(Lon me ing [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para king karagdagang informacion)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'eganagana',
 'namespacesall' => 'ila ngan',
@@ -2202,7 +2166,6 @@ Mapaliaring mepasu ne ing code.',
 'confirmemail_success' => 'Mekumpirma ne ing kekang e-mail address.
 Maliari na kang mag-login at gumamit king wiki.',
 'confirmemail_loggedin' => 'Mekumpirma ne ing kekang e-mail address.',
-'confirmemail_error' => 'E melaus ing pamag-save ning kekang pamipatutu (confirmation).',
 'confirmemail_subject' => 'Pamagkumpirma na king e-mail address ning {{SITENAME}}',
 'confirmemail_body' => 'Ating tau, mapaliaring ika, ibat king IP address $1,
 ing migrehistrung account a "$2" a maki e-mail address a anti kaniti king {{SITENAME}}.
index 45b2e9d..77fa986 100644 (file)
@@ -107,7 +107,7 @@ $messages = array(
 'jumptonavigation' => 'Nabegashon',
 'jumptosearch' => 'Buska',
 
-# 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).
+# 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).
 'aboutsite' => 'Tokante {{SITENAME}}',
 'aboutpage' => 'Project:Info',
 'copyright' => 'E kontenido ta disponibel bou di $1.',
@@ -117,7 +117,6 @@ $messages = array(
 'disclaimers' => 'Deklarashon di Liberashon for di Responsabilidatnan',
 'disclaimerpage' => 'Project:Deklarashon di Liberashon for di Responsabilidat General',
 'edithelp' => 'Ayudo ku editamentu',
-'edithelppage' => 'Help:Kon pa editá artíkulo',
 'helppage' => 'Help:Kontenido',
 'mainpage' => 'Página Prinsipal',
 'mainpage-description' => 'Página Prinsipal',
@@ -131,7 +130,6 @@ $messages = array(
 'badaccess-group0' => 'Bo no tin outorisashon pa ehekutá e akshon ku bo a skohe.',
 
 'youhavenewmessages' => 'Bo tin $1 ($2).',
-'newmessageslink' => 'mensahe nobo',
 'youhavenewmessagesmulti' => 'Bo tin mensahe nobo riba $1',
 'editsection' => 'editá',
 'toc' => 'Kontenido',
@@ -164,9 +162,6 @@ Bo por haña un lista di tur [[Special:SpecialPages|{{int:specialpages}}]].',
 'viewsource' => 'Wak fuente',
 
 # Login and logout pages
-'welcomecreation' => '== Bon bini, $1! ==
-Bo kuenta ta trahá.
-No lubidá di kambia bo [[Special:Preferences|{{SITENAME}} preferensianan]].',
 'yourname' => 'Nòmber di uzadó',
 'yourpassword' => 'Kontraseña',
 'yourpasswordagain' => 'Hinka kontraseña atrobe',
@@ -183,6 +178,9 @@ No lubidá di kambia bo [[Special:Preferences|{{SITENAME}} preferensianan]].',
 'accountcreated' => 'Kuenta trahá',
 'accountcreatedtext' => 'E kuenta di uzadó pa $1 tabata trahá.',
 
+# Change password dialog
+'changepassword' => 'Kambia kontraseña',
+
 # Edit pages
 'watchthis' => 'Observá e página aki',
 'anoneditwarning' => 'Bo no a outentiká bo mes.
@@ -209,12 +207,10 @@ Bo por kambia página libremente, pero tene kuenta ku lo nota bo IP adrès den e
 
 # Search results
 'nextn' => 'siguiente {{PLURAL:$1|$1}}',
-'searchhelp-url' => 'Help:Kontenido',
 
 # Preferences page
 'preferences' => 'Preferensianan',
 'mypreferences' => 'Mi preferensianan',
-'changepassword' => 'Kambia kontraseña',
 'timezonelegend' => 'Zona di tempu',
 'allowemail' => 'Akseptá e-mail di otro uzadó',
 'youremail' => 'E-mail:',
@@ -267,9 +263,6 @@ Bo por skohe un tipo di registro tambe, òf filtrá e bista ku un nòmber di uza
 'allpagesfrom' => 'Mustra páginanan kuminsando na:',
 'allarticles' => 'Tur artíkulo',
 'allinnamespace' => 'Tur página (dominio $1)',
-'allnotinnamespace' => 'Tur página (no den dominio di $1)',
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Siguiente',
 'allpagesprefix' => 'Mustra páginanan kuminsando ku e prefiho:',
 
 # Special:Categories
@@ -278,7 +271,7 @@ Bo por skohe un tipo di registro tambe, òf filtrá e bista ku un nòmber di uza
 [[Special:UnusedCategories|Unused categories]] are not shown here.
 Also see [[Special:WantedCategories|wanted categories]].',
 
-# E-mail user
+# Email user
 'emailuser' => 'Manda e-mail pa e uzadó aki',
 'emailpage' => 'Manda e-mail',
 'emailpagetext' => 'E formulario aki lo manda un e-mail pa e uzadò aki.
@@ -309,8 +302,8 @@ Si despues bo ke kita e página for di bo lista di observashon, primi \"Stop di
 'watchlistcontains' => 'Bo lista di observashon tin $1 {{PLURAL:$1|página|páginanan}}.',
 'wlshowlast' => 'Mustra último $1 oranan $2 dianan $3',
 
-'changed' => 'kambiá',
 'created' => 'trahá',
+'changed' => 'kambiá',
 
 # Delete
 'confirm' => 'Konfirmá',
@@ -370,7 +363,7 @@ Por fabor skohe un otro título.',
 'watchlistall2' => 'tur',
 'namespacesall' => 'tur',
 
-# E-mail address confirmation
+# Email address confirmation
 'confirmemail' => 'Konfirmá e-mail adrès',
 'confirmemail_text' => 'Bo mester validá bo e-mail adrès pa uza funkshonnan di e-mail.
 Primi e boton abou pa manda un e-mail di konfirmashon pa bo e-mail adrès.
index e66f8f7..c8bcebf 100644 (file)
@@ -13,6 +13,9 @@
 
 $fallback = 'fr';
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Loïens soulinés:',
@@ -141,7 +144,6 @@ $messages = array(
 'qbedit' => 'Editer',
 'qbpageoptions' => 'Chol pache-lo',
 'qbmyoptions' => 'Mes paches',
-'qbspecialpages' => 'Espéciales paches',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -346,7 +348,7 @@ j'm'escuse mais i feut prinde un aute nom.",
 'loginlanguagelabel' => 'Langache: $1',
 
 # Change password dialog
-'resetpass' => "Canger ch'mot d'passe",
+'changepassword' => "Canger ch'mot d'passe",
 'resetpass_header' => "Canger ch'mot d'passe dech conpte",
 'oldpassword' => "Anthiu mot d'passe:",
 'newpassword' => "Nouvieu mot d'passe:",
@@ -452,8 +454,6 @@ Léginde : ({{MediaWiki:Cur}}) = différinches aveuc el vérchon à ch'momint-ch
 # Revision deletion
 'rev-delundel' => 'montrer/mucher',
 'revdel-restore' => 'cange écmint vir',
-'revdel-restore-deleted' => 'canjemints abolis',
-'revdel-restore-visible' => 'canjemints visibes',
 'pagehist' => 'Histoère del pache',
 
 # Merge log
@@ -469,10 +469,6 @@ Léginde : ({{MediaWiki:Cur}}) = différinches aveuc el vérchon à ch'momint-ch
 # Search results
 'searchresults' => 'Tracher chés résultats',
 'searchresults-title' => 'Tracher chés résultats pou "$1"',
-'searchresulttext' => "Pou pus d'informachons quant qu'vos trachez {{SITENAME}}, vir [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => "Vos trachez  « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes chés paches aroutant pèr « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes chés paches qu'ont un loïen dsus « $1 »]])",
-'searchsubtitleinvalid' => "vos trachez apreu '''$1'''",
-'notitlematches' => "Éj déniche mie d'pache aveuc ch'tite-lo",
 'textmatches' => 'Teske del pache déniché',
 'notextmatches' => "I n'y o poin d'pache aveuc ch'teske-lo",
 'prevn' => 'dvant {{PLURAL:$1|$1}}',
@@ -504,18 +500,14 @@ Léginde : ({{MediaWiki:Cur}}) = différinches aveuc el vérchon à ch'momint-ch
 'searchrelated' => 'relaté',
 'searchall' => 'tout',
 'showingresultsheader' => "{{PLURAL:$5|Résultat '''$1'''|Résultats '''$1–$2'''}} éd '''$3''' pour '''$4'''",
-'nonefound' => "'''Note''': il y o tasseulemint quéques éspaces éd noms éq sont trachés pèr défeut. <br /> Pou tracher din tous chés contnus (paches éd pérlache, modéles, etc... comprins) insséyer in imploéyant ch'préfixe ''all:'' o bin imploéyer echl éspace éd noms édmindé conme préfixe.",
 'search-nonefound' => 'Y a autchun résultat pour chol dmanne.',
-'powersearch' => 'Érvue avanchée',
 'powersearch-legend' => 'Érvue avanchée',
 'powersearch-ns' => 'Tracher din chés éspaches éd chés noms:',
 'powersearch-redir' => "Lisse d'chés érdirécchons",
-'powersearch-field' => 'Tracher pou',
 
 # Preferences page
 'preferences' => 'Préférinches',
 'mypreferences' => 'Mes préférinches',
-'changepassword' => "Canger ch'mot d'passe",
 'timezoneregion-europe' => 'Urope',
 'youremail' => 'Imèle:',
 'username' => "Nom d'uzeu:",
@@ -587,7 +579,6 @@ Ale doét mie éte pu longue éq $1 {{PLURAL:$1|caracter|caractéres}}.',
 'recentchanges-label-minor' => "C'est un tiot canjemint",
 'recentchanges-label-bot' => 'Chol modificacion ale o té foaite pèr un robot.',
 'recentchanges-label-unpatrolled' => 'Chol modificacion ale n’o poin coèr té controlée.',
-'rcnote' => "Vlo {{PLURAL:$1|ech darin canjemint foait|chés $1 darins canjemints foaits}} din {{PLURAL:$2|l'darinne jornèe|chés <b>$2</b> darins jours}} dusque  l' $4 à $5.",
 'rcnotefrom' => "Vlo chés modificacions foaites édpuis l' '''$2''' (dousqu'à '''$1''' au plus).",
 'rclistfrom' => "Montrer chés nouvieus cangemints d'puis $1",
 'rcshowhideminor' => '$1 tiotes éditions',
@@ -722,9 +713,6 @@ Vir l'pache [$2 édseur Commons].",
 'allpagesto' => "Foaire vir chés paches qui s'términette à:",
 'allarticles' => 'Tertous chés artikes',
 'allinnamespace' => 'Tertous chés paches ($1 namespace)',
-'allnotinnamespace' => 'Tertous chés paches (mie din $1 namespace)',
-'allpagesprev' => "D'vant",
-'allpagesnext' => "D'apreu",
 'allpagessubmit' => 'Aler',
 'allpagesprefix' => "Foaire vir chés paches aveuc ch'préfix:",
 
@@ -865,13 +853,11 @@ Vlo chés réglages del pache '''$1''' à ch'momint-chi:",
 # Block/unblock
 'block' => "Blotcher l'uzeu",
 'blockip' => "Blotcher l'uzeu",
-'blockip-title' => "Blotcher l'uzeu",
 'blockip-legend' => "Blotcher l'uzeu",
 'blockiptext' => "Uzer dech teske-lo pour blotcher l’ahérse aux canjemints foaits dpui eune adrèche IP éspéchifique o bin d’un nom d’uzeu.
 I feut l'foaire seleumint pour inréyer ech vindalime et pi i feut ète acordant aveuc chés [[{{MediaWiki:Policy-url}}|usages intérnes]].
 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',
@@ -902,8 +888,6 @@ Din chés cas-lo, I feut érlonmer ou ratatouiller l'pache aveuc l'main.",
 'pagemovedsub' => 'Déplachemint réussi',
 'movepage-moved' => '\'\'\'"$1" o té déplaché su "$2"\'\'\'',
 'articleexists' => "Il y o eune pache aveuc ch'nom-lo dja, ou bin ch'tite couési n'est poin valabe. <br /> I feut in prinde un eute",
-'talkexists' => "'''L'pache ale o té déplachée   mais l'pache d'pérlache n'put poin éte déplachée ker il y o pécho eune pache d'pérlache aveuc ch'nouvieu nom. <br /> I feut foaire un touillache al main.'''",
-'movedto' => 'Déplaché dsus',
 'movetalk' => "Canjer ch'nom del pache d'pérlache apparièe",
 'movelogpage' => 'Jornal éd chés déplachemints',
 'movereason' => 'Motif:',
@@ -1022,10 +1006,6 @@ Chés eutes cans is s'ront muchés pèr défeut.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => "Éditer ch'fichié-lo aveuc eune éstérne aplicachon",
-'edit-externally-help' => '(Vir [https://www.mediawiki.org/wiki/Manual:External_editors/fr chés instruccions d’installachon] pou pus d’informachons)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tertous',
 'namespacesall' => 'tous',
@@ -1088,7 +1068,6 @@ Chés eutes cans is s'ront muchés pèr défeut.
 
 # Special:ComparePages
 'comparepages' => 'Compérer dés paches',
-'compare-selector' => 'Compérer chés vèrsions dés paches',
 'compare-page1' => 'Pache 1',
 'compare-page2' => 'Pache 2',
 'compare-rev1' => 'Canjemint 1',
index d5e0088..aa79503 100644 (file)
@@ -62,7 +62,6 @@ $messages = array(
 'tog-underline' => 'Gleecher unnerleine:',
 'tog-hideminor' => 'Gleene Enneringe verschwinne losse',
 'tog-watchdefault' => 'Vun mir gennerte Ardickele watsche',
-'tog-nocache' => 'Bledder-Scheier ausmache',
 'tog-watchlisthideown' => 'Mei Ardickele vun mei Watsch-Lischt verschwinne losse',
 'tog-watchlisthidebots' => 'Enneringe vun Bots vun mei Watsch-Lischt verschwinne losse',
 'tog-watchlisthideminor' => 'Gleene Enneringe vun mei Watsch-Lischt verschwinne losse',
@@ -149,7 +148,6 @@ $messages = array(
 'qbedit' => 'Ennere',
 'qbpageoptions' => 'Des Blatt',
 'qbmyoptions' => 'Mei Bledder',
-'qbspecialpages' => 'Besunnere Bledder',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -300,7 +298,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
 'loginlanguagelabel' => 'Schprooch: $1',
 
 # Change password dialog
-'resetpass' => 'Paesswatt ennere',
+'changepassword' => 'Paesswatt ennere',
 'oldpassword' => 'Aldes Paesswatt:',
 'newpassword' => 'Neies Paesswatt:',
 'resetpass_forbidden' => 'Paesswatt iss net zu ennere',
@@ -392,7 +390,6 @@ Paesswatt fer nau: $2',
 # Search results
 'searchresults' => 'Results vum Uffgucke',
 'searchresults-title' => 'Results vum Uffgucke fer „$1“',
-'searchsubtitle' => 'Du hoscht nooch \'\'\'[[:$1]]\'\'\' gsucht ([[Special:Prefixindex/$1|alle Bledder wu mit "$1" aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Bledder wu uff "$1" zeige]])',
 'prevn' => '{{PLURAL:$1|letscht|letscht $1}}',
 'nextn' => 'neegschte {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
@@ -409,10 +406,8 @@ Paesswatt fer nau: $2',
 'search-interwiki-default' => '$1 Results:',
 'search-interwiki-more' => '(weidere)',
 'searchall' => 'all',
-'powersearch' => 'Guck uff',
 'powersearch-ns' => 'Guck uff in Blatznaame:',
 'powersearch-redir' => 'Lischt vun Weiterleidinge',
-'powersearch-field' => 'Such fer',
 'powersearch-toggleall' => 'All',
 'powersearch-togglenone' => 'Ken',
 'search-external' => 'Guck im Gewebb',
@@ -420,14 +415,12 @@ Paesswatt fer nau: $2',
 # Preferences page
 'preferences' => 'Paerseenlich Profil',
 'mypreferences' => 'Uffschtellinge',
-'changepassword' => 'Paesswatt ennere',
 'skin-preview' => 'Aagucke',
 'prefs-personal' => 'Yuuser Profile',
 'prefs-watchlist' => 'Watsch-Lischt',
 'prefs-watchlist-days' => 'Daage in de Watsch-Lischt:',
 'prefs-resetpass' => 'Paesswatt ennere',
 'saveprefs' => 'Uffstellinge beilege',
-'resetprefs' => 'Ausduh',
 'prefs-editing' => 'Ennere',
 'columns' => 'Kallems:',
 'searchresultshead' => 'Guck uff',
@@ -641,9 +634,6 @@ Paesswatt fer nau: $2',
 'prevpage' => 'Letscht Blatt ($1)',
 'allarticles' => 'Alle Bledder',
 'allinnamespace' => 'Alle Bledder (Blatznaame: $1)',
-'allnotinnamespace' => 'Alle Bledder (net vun $1 Blatznaame)',
-'allpagesprev' => 'Letscht',
-'allpagesnext' => 'Neegschte',
 'allpagessubmit' => 'Zeige',
 'allpages-bad-ns' => '{{SITENAME}} hot ken Blatznaame „$1“.',
 
@@ -775,16 +765,12 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
 # Block/unblock
 'block' => 'Yuuser aabinne',
 'blockip' => 'Yuuser aabinne',
-'blockip-title' => 'Yuuser aabinne',
 'blockip-legend' => 'Yuuser aabinne',
 'ipadressorusername' => 'IP-Adress odder Yuusernaame:',
 'ipbreason' => 'Grund:',
-'ipbreasonotherlist' => 'Annerer Grund',
 'ipbsubmit' => 'Daen Yuuser aabinne',
 'ipbother' => 'Annere Zeit (englisch):',
 'ipboptions' => '2 Schtund:2 hours,1 Daag:1 day,3 Daag:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Munet:1 month,3 Munede:3 months,6 Monate:6 months,1 Yaar:1 year,Fer immer:infinite',
-'ipbotheroption' => 'Anneres',
-'ipbotherreason' => 'Annerer Grund:',
 'blocklist-reason' => 'Grund',
 'ipblocklist-submit' => 'Guck uff',
 'infiniteblock' => 'fer immer',
@@ -799,7 +785,6 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
 'movepagebtn' => 'Blatt ziehe',
 'pagemovedsub' => 'Blatt iss gezoge warre',
 'movepage-moved' => "'''Es Blatt „$1“ iss gezoge warre uff „$2“'''",
-'movedto' => 'gezoge uff',
 'movereason' => 'Grund:',
 'revertmove' => 'zerick ziehe',
 'delete_and_move_confirm' => 'Ya, es Blatt lösche',
@@ -920,7 +905,6 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
 'watchlistall2' => 'all',
 'namespacesall' => 'all',
 'monthsall' => 'all',
-'limitall' => 'all',
 
 # Scary transclusion
 'scarytranscludetoolong' => '[URL iss zu lang]',
index 013c818..fe31813 100644 (file)
@@ -7,7 +7,10 @@
  * @ingroup Language
  * @file
  *
+ * @author Geitost
+ * @author Murma174
  * @author Purodha
+ * @author Shirayuki
  * @author Slomox
  * @author Wikipeeta
  */
@@ -108,7 +111,6 @@ $messages = array(
 'qbedit' => 'Endre',
 'qbpageoptions' => 'Dise Sied',
 'qbmyoptions' => 'Miene Siede',
-'qbspecialpages' => "Opp'poate Siede",
 
 'errorpagetitle' => 'Fäla',
 'returnto' => 'Trigj no $1.',
@@ -157,7 +159,7 @@ $messages = array(
 'jumptonavigation' => 'Navigatioon',
 'jumptosearch' => 'Setje',
 
-# 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).
+# 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).
 'aboutsite' => 'Äwa {{SITENAME}}',
 'aboutpage' => 'Project:Äwa',
 'copyright' => 'Enhault es to habe unja $1.',
@@ -166,7 +168,6 @@ $messages = array(
 'disclaimers' => 'Impressum',
 'disclaimerpage' => 'Project:Impressum',
 'edithelp' => 'Help tom Beoabeide',
-'edithelppage' => 'Help:Help tom Beoabeide',
 'helppage' => 'Help:Enhault',
 'mainpage' => 'Hauptsied',
 'mainpage-description' => 'Hauptsied',
@@ -183,8 +184,6 @@ $messages = array(
 
 'retrievedfrom' => 'Von "$1"',
 'youhavenewmessages' => 'Dü hast $1 ($2).',
-'newmessageslink' => 'Niee Norechte',
-'newmessagesdifflink' => "Latztet mol je'endat",
 'youhavenewmessagesmulti' => 'Du hast niee Norechte bie $1',
 'editsection' => 'Beoabeide',
 'editold' => 'endre',
@@ -226,12 +225,6 @@ Aula bruckboare Spezialsiede send bie [[Special:SpecialPages|{{int:specialpages}
 # General errors
 'error' => 'Fehla',
 'databaseerror' => 'Fehla enne Dotebank',
-'dberrortext' => 'Daut gauf een Syntaxfehla biem Opproope vonne Dotebank.
-Doa kaun een Probleem enne Software senne.
-Daut latzte Opproope vonne Dotebank we:
-<blockquote><tt>$1</tt></blockquote>
-ute Funktioon "<tt>$2</tt>".
-MySQL mald dem Fehla "<tt>$3: $4</tt>".',
 'laggedslavemode' => 'Oppjepausst: Dee jewesne Sied es nich onbedinjt dee latzte Versioon.',
 'readonly' => 'Dotebank es jeschlote',
 'enterlockreason' => 'Nan bitte een Grunt doafea, wurom dee Dotebank jeschlote saul en saj, woolang daut onjefea diere saul',
@@ -252,7 +245,7 @@ Bitte schriew eene Notiz aun [[Special:ListUsers/sysop|administrator]], en lot d
 'logout' => 'Rut hia',
 'userlogout' => 'Rut hia',
 'notloggedin' => 'Nich aunjemaldt',
-'nologin' => "Hast tjeen Bruckakonto? '''$1'''.",
+'nologin' => 'Hast tjeen Bruckakonto? $1.',
 'nologinlink' => 'Nieet Bruckakonto moake',
 'createaccount' => 'Bruckakonto moake',
 'gotaccount' => "Hast aul een Bruckakonto? '''$1'''.",
@@ -310,15 +303,11 @@ Bitte nemm eenen aundren.',
 # Search results
 'searchresults' => 'Setj Resultaute',
 'searchresults-title' => 'Setj Resultaute fe "$1"',
-'searchsubtitle' => 'Du sochst \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|all pages starting with "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
 'prevn' => '{{PLURAL:$1|$1}} ferhäa',
 'nextn' => 'näakjste {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Tjitj ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Enhault',
 'search-result-size' => '$1 ({{PLURAL:$2|1 Wot|$2 Wed}})',
-'powersearch' => 'Bätre Sääk',
 'powersearch-legend' => 'Betret Setje',
-'powersearch-field' => 'Setj no',
 
 # Preferences page
 'preferences' => 'Ennstalinje',
@@ -350,7 +339,6 @@ Bitte nemm eenen aundren.',
 'recentchangeslinked-feed' => 'Endarunge aun velinkte Siede',
 'recentchangeslinked-toolbox' => 'Endarunge aun velinkte Siede',
 'recentchangeslinked-title' => 'Endarunge aun Siede, woone von "$1" velinkt send',
-'recentchangeslinked-noresult' => 'Em utjesochten Tietrum es aun dee velinkte Siede nuscht aundasch jemoakt worde.',
 'recentchangeslinked-summary' => "Dit es eene List mette latzte Endarunge aune velinkte Siede (ooda bie Kategorien von Mettjlieda von dise Kategorie). Dee Siede opp diene [[Special:Watchlist|your watchlist]] woare '''fat''' jewese.",
 'recentchangeslinked-page' => 'Siednome:',
 'recentchangeslinked-to' => 'Wies Endarunge opp Siede, woone mett dise Sied velinkt send',
@@ -377,7 +365,7 @@ Bitte nemm eenen aundren.',
 'imagelinks' => 'Links',
 
 # MIME search
-'mimesearch' => 'MIME-Säkj',
+'mimesearch' => 'Schük efter MIME-Typ',
 
 # List redirects
 'listredirects' => 'Wiedawiesinje wiese',
index ab0b726..6d52eaf 100644 (file)
@@ -165,7 +165,6 @@ $messages = array(
 'qbedit' => 'Beawaide',
 'qbpageoptions' => 'Die Said',
 'qbmyoptions' => 'Moi Saide',
-'qbspecialpages' => 'Schbezialsaide',
 'faq' => 'Ofd gschdeldi Froche',
 
 # Vector skin
@@ -381,7 +380,6 @@ Nemmen onnare.',
 'loginlanguagelabel' => 'Schbrooch: $1',
 
 # Change password dialog
-'resetpass' => 'Kennword wegsle',
 'oldpassword' => 'Alds Kennword',
 'newpassword' => 'Naijes Kennword',
 'retypenew' => 'Naijes Kennword nomol oigewe:',
@@ -525,8 +523,6 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'revdelete-log' => 'Grund:',
 'revdelete-submit' => 'Uff die {{PLURAL:$1|gewehld Asugab|gewehldi Ausgawe}} owende',
 'revdel-restore' => 'Sischdbakaid ännare',
-'revdel-restore-deleted' => 'gleschdi Ännarunge',
-'revdel-restore-visible' => 'sischdbari Ännarunge',
 'pagehist' => 'Gschischd vunde Said',
 'deletedhist' => 'Gleschde Gschischde',
 'revdelete-reasonotherlist' => 'Õnnare Grund',
@@ -550,10 +546,6 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 # Search results
 'searchresults' => 'Eagewnis nochgugge',
 'searchresults-title' => 'Eagewnis gugge fa "$1"',
-'searchresulttext' => 'Fa mea Ogawe iwwas Nochgugge uff {{SITENAME}}, guggmol uff [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Du hoschd noch \'\'\'[[:$1]]\'\'\' geguggd ([[Special:Prefixindex/$1|alle Saide, wu mid "$1" aafange]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alle Saide, wu uff "$1" valinggd sinn]])',
-'searchsubtitleinvalid' => "Du hoschd '''$1''' gsuchd",
-'notitlematches' => 'Kän Saidedidl gfunne',
 'notextmatches' => 'Kä Iwwaoinschdimmunge midm Tegschd',
 'prevn' => 'ledschda {{PLURAL:$1|$1}}',
 'nextn' => 'negschd {{PLURAL:$1|$1}}',
@@ -583,18 +575,14 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'search-interwiki-default' => '$1 Ergebnis:',
 'search-interwiki-more' => '(meh)',
 'search-relatedarticle' => 'Vawond',
-'mwsuggest-disable' => 'Schald Voaschlesch ab',
 'searcheverything-enable' => 'Gugg iwwaraal',
 'searchrelated' => 'vawond',
 'searchall' => 'alle',
 'showingresultsheader' => "{{PLURAL:$5|Eagewnis '''$1''' vun '''$3'''|Eagewnis '''$1–$2''' vun '''$3'''}} fa '''$4'''",
-'nonefound' => "'''Hiiwais:''' S werre standardmäßich numme e Dail Namensraim durchsucht. Setz ''all:'' vor Dai Suchbegriff zum alle Saide (mit Dischbediersaide, Voalaache usw.) durchsuche odder direkt de Name vum Namensraum, wu durchsucht werre sell.",
 'search-nonefound' => 'Kä Eagewnis vunde Õfroch.',
-'powersearch' => 'Erwaiterte Such',
 'powersearch-legend' => 'Erwaiterte Such',
 'powersearch-ns' => 'In de Namensraim suche:',
 'powersearch-redir' => 'Waiderlaidunge aazaische',
-'powersearch-field' => 'Suche noch',
 'powersearch-togglelabel' => 'Wehl:',
 'powersearch-toggleall' => 'Alli',
 'powersearch-togglenone' => 'Kään',
@@ -608,7 +596,6 @@ Ealaidarung: '''({{int:cur}})''' = Unnaschied zu jezd,
 'prefs-misc' => 'Schunschdisches',
 'prefs-rendering' => 'Uffdridd',
 'saveprefs' => 'Oischdellunge schbaischere',
-'resetprefs' => 'Oischdellunge vawerfe',
 'prefs-editing' => 'Schaffe',
 'rows' => 'Zaile',
 'columns' => 'Schbalde',
@@ -693,7 +680,6 @@ Doi Address werd ned gzaischd, wõnse midda babbln.',
 'recentchanges-label-minor' => "S'ische glenni Beawaidung",
 'recentchanges-label-bot' => 'Ännarunge duaschn Bod',
 'recentchanges-label-unpatrolled' => 'Die Ännarung isch noch nedd iwwabriefd worre',
-'rcnote' => "Õgzaischd {{PLURAL:$1|werd '''1''' Ännarung|werren die ledschde '''$1''' Ännarunge}} {{PLURAL:$2|vum ledschde Daach|inde ledschde '''$2''' Daache}} (Schdond: $4, $5)",
 'rcnotefrom' => "Unne sinn Ännarunge said '''$2''' (bis '''$1''').",
 'rclistfrom' => 'Zaisch die ledschde Ännarunge ab $1',
 'rcshowhideminor' => 'Glenni Ännarunge $1',
@@ -840,8 +826,6 @@ Saide uff [[Special:Watchlist|Doina Beowachdungslischd]] sinn '''fedd'''.",
 'allpagesfrom' => 'Saide aazaische wu aafange mid:',
 'allpagesto' => 'Saide aazaische wu ufhere mid:',
 'allarticles' => 'Alle Saide',
-'allpagesprev' => 'Voriche',
-'allpagesnext' => 'Negschd',
 'allpagessubmit' => 'Zaische',
 
 # Special:Categories
@@ -946,7 +930,6 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uf
 'undeletebtn' => 'Widderherschdelle',
 'undeletelink' => 'õgugge/widda herschdelle',
 'undeleteviewlink' => 'Õgugge',
-'undeletereset' => 'Zuriggsedze',
 'undelete-show-file-submit' => 'Ja',
 
 # Namespace form on various pages
@@ -995,7 +978,6 @@ Der Schutzstatus vun derre Said kannscht ännere, awwer des hot kää Aifluss uf
 'blockip' => 'Middawaida bloggiere',
 'ipbsubmit' => 'Middawaida bloggiere',
 'ipboptions' => '2 Schdunne:2 hours,1 Daach:1 day,3 Daach:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Monad:1 month,3 Monad:3 months,6 Monad:6 months,1 Johr:1 year,Fa imma:infinite',
-'ipbotheroption' => 'onnari',
 'ipusubmit' => 'Die Adreß fraigewwe',
 'ipblocklist' => 'Gschberrdi IP-Adress un Middawaidanõme',
 'infiniteblock' => 'ubgrensd',
@@ -1040,9 +1022,6 @@ In denne Fäll misst mer d Dischbediersaid vun Hand kopiere.",
 'movepage-moved' => '\'\'\'"$1" isch verschowe worre uff "$2"\'\'\'',
 'articleexists' => 'E Said mid dem Name gebbt s schun, orrer de Name, wu du gewählt hoscht, isch nid gildich.
 Bitte nemm e annere Name.',
-'talkexists' => "'''Die Said selwerschd, isch verschowe worre, awwer d Dischbediersaid hot nid kenne verschowe werre, wail s schun enni gebbt mid dem Name.
-Bitte duu se vun Hand zammefiehre.'''",
-'movedto' => 'vaschowe uff',
 'movetalk' => 'Dischbediersaid, wu dezu ghert, verschiewe',
 'movelogpage' => 'Vaschiewungs-Logbuch',
 'movereason' => 'Grund:',
@@ -1177,10 +1156,6 @@ Wonn die Dadai vaännad worre isch, donn konns soi, daß zusedzlischi Õgawe fa
 
 'exif-gaincontrol-0' => 'Kään',
 
-# External editor support
-'edit-externally' => 'Die Dadai midm õnnare Weagzaisch beawaide',
-'edit-externally-help' => '(Gugg uff [https://www.mediawiki.org/wiki/Manual:External_editors Inschdallazionsõwaisunge] fa mea Auskinfd)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alle',
 'namespacesall' => 'alle',
index 1c2b21f..859643d 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/** Pali (पािऴ)
+/** Pali (पालि)
  *
  * See MessagesQqq.php for message documentation incl. usage of parameters
  * To improve a translation please visit http://translatewiki.net
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Eukesh (on pi.wikipedia.org)
+ * @author Hemant wikikosh1
  * @author Vibhijain
  */
 
@@ -45,40 +46,102 @@ $digitTransformTable = array(
 
 $messages = array(
 # Dates
-'january'   => 'ज्यानुवरी',
-'february'  => 'फ़रवरी',
-'march'     => 'मार्च',
-'april'     => 'अप्रैल',
-'may_long'  => 'मई',
-'june'      => 'जून',
-'july'      => 'जुलाई',
-'august'    => 'अगस्त',
+'january' => 'ज्यानुवरी',
+'february' => 'फ़रवरी',
+'march' => 'मार्च',
+'april' => 'अप्रैल',
+'may_long' => 'मई',
+'june' => 'जून',
+'july' => 'जुलाई',
+'august' => 'अगस्त',
 'september' => 'सेप्टेम्बर',
-'october'   => 'ओक्टोबर',
-'november'  => 'नवम्बर',
-'december'  => 'दिसम्बर',
+'october' => 'ओक्टोबर',
+'november' => 'नवम्बर',
+'december' => 'दिसम्बर',
 
 'article' => 'लेख पत्त',
 
-'searchbutton'  => 'खोज',
+# Vector skin
+'vector-view-create' => 'रचेतु',
+
+'help' => 'सहायता',
+'search' => 'अन्वेसना',
+'searchbutton' => 'खोज',
 'searcharticle' => 'गच्छामि',
+'create' => 'रचेतु',
+'talkpagelinktext' => 'सम्भासनं',
+'talk' => 'सम्भासनं',
 
-# 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).
-'mainpage'             => 'पमुख पत्त',
+# 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).
+'aboutsite' => '{{SITENAME}} इच्चस्स विसये',
+'disclaimers' => 'पच्चाक्खानं',
+'mainpage' => 'पमुख पत्त',
 'mainpage-description' => 'पमुख पत्त',
+'portal' => 'समुदायद्वारं',
+'portal-url' => 'Project:समुदायद्वारं',
+'privacy' => 'गोपनीयता-नीति',
+
+'editsection' => 'सम्पादेतु',
+'editsectionhint' => 'एतं विभागं सम्पादेतु',
+'red-link-title' => '$1 (पिट्ठं न वत्तति)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'पिट्ठं',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''पबोधो:''' फलकानं योजनस्स आकारो अतिविसालो वत्तति।
+कानिचन फलकानि योजेतुं न सक्कन्ति ।",
+
+# History pages
+'currentrev-asof' => 'वत्तमाना आवुत्ति  $1 इति समये',
+'previousrevision' => '↓← पुरातनं अवतरणं',
+
+# Search results
+'searchmenu-new' => 'अस्मिं विकियं "[[:$1]]" इति पिट्ठं रचेतु।',
+'search-result-size' => '$1 ({{PLURAL:$2|1 सद्दो|$2 सद्दा}})',
+
+# Recent changes
+'recentchanges' => 'सज्जोजातानि परिवत्तनानि',
+'hide' => 'गोपेतु',
+'show' => 'दस्सेतु',
+
+# Random page
+'randompage' => 'यदिच्छकपिट्ठं',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|बाइटं|बाइटानि}}',
 
 # Book sources
 'booksources-go' => 'गच्छामि',
 
 # Special:AllPages
-'allarticles'    => 'सब्ब लेखा',
+'allarticles' => 'सब्ब लेखा',
 'allpagessubmit' => 'गच्छामि',
 
+# Block/unblock
+'contribslink' => 'योगदानानि',
+
+# Export
+'export' => 'पिट्ठानं निय्यातं करोतु',
+
 # Namespace 8 related
 'allmessagesname' => 'नाम',
 
-# EXIF tags
-'exif-gpslatitude'  => 'अक्षांश',
+# Tooltip help for the actions
+'tooltip-ca-talk' => 'पिट्ठन्तग्गतविसये सम्भासनं',
+'tooltip-ca-move' => 'इदं पिट्ठं चालेतु',
+'tooltip-ca-watch' => 'इदं पिट्ठं भवतो अवेक्खणसूचियं योजेतु',
+'tooltip-search' => '{{SITENAME}} इच्चेत्थ अन्विस्सतु',
+'tooltip-search-fulltext' => 'एतं वचनं पिट्ठेसु अन्विस्सतु',
+'tooltip-p-logo' => 'मुखपिट्ठं गच्छतु',
+'tooltip-n-recentchanges' => 'सज्जोजातानं परिवत्तनानं सूची',
+'tooltip-n-randompage' => 'यदिच्छकं पिट्ठं गच्छतु',
+'tooltip-n-help' => 'अन्वेसनठानं',
+'tooltip-t-specialpages' => 'सब्बेसं पमुखानं पिट्ठानं सूची',
+'tooltip-summary' => 'संखित्तं सारंसं योजेतु',
+
+# Exif tags
+'exif-gpslatitude' => 'अक्षांश',
 'exif-gpslongitude' => 'देशान्तर',
 
 'exif-sensingmethod-1' => 'अपरिभाषित',
index 106b248..4b73c29 100644 (file)
@@ -33,7 +33,7 @@ $messages = array(
 'edit' => 'Edet',
 'talk' => 'diskushun',
 
-# 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).
+# 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).
 'currentevents' => 'Dem Kurent Iwent',
 'currentevents-url' => 'Project:Dem Kurent Iwent',
 'helppage' => 'Help:Dem Kontent',
@@ -47,9 +47,6 @@ $messages = array(
 'nstab-main' => 'Artikal',
 'nstab-help' => 'Hiiwp Paij',
 
-# Search results
-'searchhelp-url' => 'Help:Dem Kontent',
-
 # Preferences page
 'prefs-rc' => 'Dem Riisent Chayng',
 
index 0ab98ac..601896c 100644 (file)
@@ -40,6 +40,7 @@
  * @author Odder
  * @author Odie2
  * @author Olgak85
+ * @author Peter Bowman
  * @author Przemub
  * @author Reedy
  * @author Remedios44
@@ -130,7 +131,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Zły_tytuł' ),
        'Blankpage'                 => array( 'Pusta_strona' ),
        'Block'                     => array( 'Blokuj' ),
-       'Blockme'                   => array( 'Zablokuj_mnie' ),
        'Booksources'               => array( 'Książki' ),
        'BrokenRedirects'           => array( 'Zerwane_przekierowania' ),
        'Categories'                => array( 'Kategorie' ),
@@ -142,15 +142,16 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Utwórz_konto', 'Stwórz_konto' ),
        'Deadendpages'              => array( 'Bez_linków' ),
        'DeletedContributions'      => array( 'Usunięty_wkład' ),
-       'Disambiguations'           => array( 'Ujednoznacznienia' ),
        'DoubleRedirects'           => array( 'Podwójne_przekierowania' ),
        'EditWatchlist'             => array( 'Edytuj_obserwowane' ),
        'Emailuser'                 => array( 'E-mail' ),
+       'ExpandTemplates'           => array( 'Rozwijanie_szablonów' ),
        'Export'                    => array( 'Eksport' ),
        'Fewestrevisions'           => array( 'Najmniej_edycji' ),
        'FileDuplicateSearch'       => array( 'Szukaj_duplikatu_pliku' ),
        'Filepath'                  => array( 'Ścieżka_do_pliku' ),
        'Invalidateemail'           => array( 'Anuluj_e-mail' ),
+       'JavaScriptTest'            => array( 'Test_JavaScriptu' ),
        'BlockList'                 => array( 'Zablokowani' ),
        'LinkSearch'                => array( 'Wyszukiwarka_linków' ),
        'Listadmins'                => array( 'Administratorzy' ),
@@ -179,6 +180,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( 'Moje_pliki' ),
        'Newimages'                 => array( 'Nowe_pliki' ),
        'Newpages'                  => array( 'Nowe_strony' ),
+       'PagesWithProp'             => array( 'Strony_z_własnością' ),
        'PasswordReset'             => array( 'Wyczyść_hasło' ),
        'PermanentLink'             => array( 'Niezmienny_link' ),
        'Popularpages'              => array( 'Popularne_strony' ),
@@ -187,9 +189,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Zabezpieczone_strony' ),
        'Protectedtitles'           => array( 'Zabezpieczone_nazwy_stron' ),
        'Randompage'                => array( 'Losowa_strona', 'Losowa' ),
+       'RandomInCategory'          => array( 'Losowa_w_kategorii', 'Losowa_strona_w_kategorii' ),
        'Randomredirect'            => array( 'Losowe_przekierowanie' ),
        'Recentchanges'             => array( 'Ostatnie_zmiany', 'OZ' ),
        'Recentchangeslinked'       => array( 'Zmiany_w_linkowanych', 'Zmiany_w_linkujących' ),
+       'Redirect'                  => array( 'Przekieruj' ),
+       'ResetTokens'               => array( 'Resetuj_tokeny' ),
        'Revisiondelete'            => array( 'Usuń_wersję' ),
        'Search'                    => array( 'Szukaj' ),
        'Shortpages'                => array( 'Najkrótsze_strony' ),
@@ -331,7 +336,6 @@ $messages = array(
 'tog-minordefault' => 'Wszystkie edycje domyślnie oznaczaj jako drobne',
 'tog-previewontop' => 'Pokazuj podgląd powyżej obszaru edycji',
 'tog-previewonfirst' => 'Pokazuj podgląd strony podczas pierwszej edycji',
-'tog-nocache' => 'Wyłącz pamięć podręczną przeglądarki',
 'tog-enotifwatchlistpages' => 'Wyślij do mnie e‐mail, gdy strona lub plik z mojej listy obserwowanych zostaną zmodyfikowane',
 'tog-enotifusertalkpages' => 'Wyślij do mnie e‐mail, gdy moja strona dyskusji zostanie zmodyfikowana',
 'tog-enotifminoredits' => 'Wyślij e‐mail także w przypadku drobnych zmian na stronach lub w plikach',
@@ -436,7 +440,7 @@ $messages = array(
 'subcategories' => 'Podkategorie',
 'category-media-header' => 'Pliki w kategorii „$1”',
 'category-empty' => "''Obecnie w tej kategorii brak stron oraz plików.''",
-'hidden-categories' => '{{PLURAL:$1|Ukryta kategoria|Ukryte kategorie}}',
+'hidden-categories' => '{{PLURAL:$1|Ukryta kategoria|Ukryte kategorie|Ukrytych kategorii}}',
 'hidden-category-category' => 'Ukryte kategorie',
 'category-subcat-count' => '{{PLURAL:$2|Ta kategoria ma tylko jedną podkategorię.|Poniżej wyświetlono $1 spośród wszystkich $2 podkategorii tej kategorii.}}',
 'category-subcat-count-limited' => 'Ta kategoria ma {{PLURAL:$1|1 podkategorię|$1 podkategorie|$1 podkategorii}}.',
@@ -467,7 +471,6 @@ $messages = array(
 'qbedit' => 'Edycja',
 'qbpageoptions' => 'Ta strona',
 'qbmyoptions' => 'Moje strony',
-'qbspecialpages' => 'strony specjalne',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -684,9 +687,6 @@ Przyczyna nieokreślona.',
 'perfcached' => 'Poniższe dane są kopią z pamięci podręcznej i mogą być nieaktualne. Maksymalnie {{PLURAL:$1|jeden wynik jest|$1 wyniki są|$1 wyników jest}} w pamięci podręcznej.',
 'perfcachedts' => 'Poniższe dane są kopią z pamięci podręcznej. Ostatnia aktualizacja odbyła się $1. Maksymalnie {{PLURAL:$4|jeden wynik jest|$4 wyniki są|$4 wyników jest}} w pamięci podręcznej.',
 'querypage-no-updates' => 'Uaktualnienia dla tej strony są obecnie wyłączone. Znajdujące się tutaj dane nie zostaną odświeżone.',
-'wrong_wfQuery_params' => 'Nieprawidłowe parametry przekazane do wfQuery()<br />
-Funkcja: $1<br />
-Zapytanie: $2',
 'viewsource' => 'Tekst źródłowy',
 'viewsource-title' => 'Tekst źródłowy strony $1',
 'actionthrottled' => 'Akcja wstrzymana',
@@ -820,7 +820,7 @@ Sprawdź poprawność pisowni.',
 'passwordtooshort' => 'Hasło musi mieć co najmniej $1 {{PLURAL:$1|znak|znaki|znaków}}.',
 'password-name-match' => 'Hasło musi być inne niż nazwa użytkownika.',
 'password-login-forbidden' => 'Wykorzystanie tej nazwy użytkownika lub hasła zostało zabronione.',
-'mailmypassword' => 'Wyślij mi nowe hasło poprzez e‐mail',
+'mailmypassword' => 'Zresetuj hasło',
 'passwordremindertitle' => 'Nowe tymczasowe hasło do {{GRAMMAR:D.lp|{{SITENAME}}}}',
 'passwordremindertext' => 'Ktoś (prawdopodobnie Ty, spod adresu IP $1)
 poprosił o przesłanie nowego hasła do {{GRAMMAR:D.lp|{{SITENAME}}}} ($4).
@@ -872,7 +872,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'user-mail-no-body' => 'Próbowano wysłać e-mail o psutej lub krótkiej treści.',
 
 # Change password dialog
-'resetpass' => 'Zmień hasło',
+'changepassword' => 'Zmiana hasła',
 'resetpass_announce' => '{{GENDER:|Zalogowałeś|Zalogowałaś}} się, wykorzystując tymczasowe hasło otrzymane poprzez e‐mail.
 Aby zakończyć proces logowania, musisz ustawić nowe hasło:',
 'resetpass_text' => '<!-- Dodaj tekst -->',
@@ -894,7 +894,7 @@ Być może właśnie zmienił{{GENDER:|eś|aś|eś(‐aś)}} swoje hasło lub po
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
 'passwordreset-text-one' => 'Wypełnij ten formularz, aby zresetować hasło.',
-'passwordreset-text-many' => '{{PLURAL:$1|Wypełnij jedno z poniższych pól, aby zresetować hasło.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Wypełnij jedno z poniższych pól, aby otrzymać tymczasowe hasło przez e-mail.}}',
 'passwordreset-legend' => 'Zresetuj hasło',
 'passwordreset-disabled' => 'Na tej wiki wyłączono możliwość resetowania haseł.',
 'passwordreset-emaildisabled' => 'Wysyłanie emaili zostało wyłączone na tej wiki',
@@ -1135,7 +1135,7 @@ Możesz edytować istniejące strony bądź też [[Special:UserLogin|zalogować
 'sectioneditnotsupported-text' => 'Edycja sekcji na tej stronie nie jest obsługiwana.',
 'permissionserrors' => 'Błąd uprawnień',
 'permissionserrorstext' => 'Nie masz uprawnień do tego działania z {{PLURAL:$1|następującej przyczyny|następujących przyczyn}}:',
-'permissionserrorstext-withaction' => 'Nie masz uprawnień do $2, z {{PLURAL:$1|następującego powodu|następujących powodów}}:',
+'permissionserrorstext-withaction' => 'Nie masz uprawnień do $2 z {{PLURAL:$1|następującego powodu|następujących powodów}}:',
 'recreate-moveddeleted-warn' => "'''Uwaga! Zamierzasz utworzyć stronę, która została wcześniej usunięta.'''
 
 Upewnij się, czy ponowne utworzenie tej strony jest uzasadnione.
@@ -1198,6 +1198,9 @@ Argument ten będzie pominięty.',
 'cantcreateaccounttitle' => 'Nie można utworzyć konta',
 'cantcreateaccount-text' => "Tworzenie konta z tego adresu IP ('''$1''') zostało zablokowane przez [[User:$3|$3]].
 
+Podany przez $3 powód to ''$2''",
+'cantcreateaccount-range-text' => "Tworzenie konta z adresów IP w zakresie '''$1''', który zawiera i twój adres IP ('''$4'''), zostało zablokowane przez [[User:$3|$3]].
+
 Podany przez $3 powód to ''$2''",
 
 # History pages
@@ -1269,10 +1272,6 @@ Jeśli chcesz możesz zobaczyć porównanie. Szczegóły mogą znajdować się w
 'revdelete-nooldid-title' => 'Nieprawidłowa wersja do przeprowadzenia operacji',
 'revdelete-nooldid-text' => 'Nie wybrano wersji, na których ma zostać wykonana ta operacja,
 wybrana wersja nie istnieje lub próbowano ukryć wersję bieżącą.',
-'revdelete-nologtype-title' => 'Brak typu rejestru',
-'revdelete-nologtype-text' => 'Nie określ{{GENDER:|iłeś|iłaś|ono}} rodzaju rejestru do przeprowadzenia tej operacji.',
-'revdelete-nologid-title' => 'Nieprawidłowy wpis w rejestrze',
-'revdelete-nologid-text' => 'Nie określ{{GENDER:|iłeś|iłaś|ono}} wpisu w rejestrze do przeprowadzenia operacji albo wybrany wpis nie istnieje.',
 'revdelete-no-file' => 'Wybrany plik nie istnieje.',
 'revdelete-show-file-confirm' => 'Czy jesteś pewien, że chcesz zobaczyć usuniętą wersję pliku „<nowiki>$1</nowiki>” z $2 o $3?',
 'revdelete-show-file-submit' => 'Tak',
@@ -1306,8 +1305,6 @@ $1",
 'logdelete-failure' => "'''Widoczność rejestru nie może zostać ustawiona – '''
 $1",
 'revdel-restore' => 'zmień widoczność',
-'revdel-restore-deleted' => 'usunięte wersje',
-'revdel-restore-visible' => 'widoczne wersje',
 'pagehist' => 'Historia edycji strony',
 'deletedhist' => 'Usunięta historia edycji',
 'revdelete-hide-current' => 'Wystąpił błąd przy ukrywaniu wersji datowanej na $2, $1. To jest najnowsza wersja strony, która nie może zostać ukryta.',
@@ -1383,12 +1380,8 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 # Search results
 'searchresults' => 'Wyniki wyszukiwania',
 'searchresults-title' => 'Wyniki wyszukiwania „$1”',
-'searchresulttext' => 'Więcej informacji o przeszukiwaniu {{GRAMMAR:D.lp|{{SITENAME}}}} odnajdziesz na [[{{MediaWiki:Helppage}}|stronach pomocy]].',
-'searchsubtitle' => "Wyniki dla zapytania '''[[:$1]]''' ([[Special:Prefixindex/$1|strony zaczynające się od „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|strony, które linkują do „$1”]])",
-'searchsubtitleinvalid' => "Dla zapytania '''$1'''",
 'toomanymatches' => 'Zbyt wiele elementów pasujących do wzorca, spróbuj innego zapytania',
 'titlematches' => 'Znaleziono w tytułach',
-'notitlematches' => 'Nie znaleziono w tytułach',
 'textmatches' => 'Znaleziono w treści stron',
 'notextmatches' => 'Nie znaleziono w treści stron',
 'prevn' => '{{PLURAL:$1|poprzedni|poprzednie $1}}',
@@ -1397,10 +1390,8 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 'nextn-title' => '{{PLURAL:$1|Następny|Następne}} $1 {{PLURAL:$1|wynik|wyniki|wyników}}',
 'shown-title' => 'Pokaż po $1 {{PLURAL:$1|wyniku|wyniki|wyników}} na stronę',
 'viewprevnext' => 'Zobacz ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcje wyszukiwania',
 'searchmenu-exists' => "* Strona '''[[$1]]'''",
 'searchmenu-new' => "'''Utwórz stronę „[[:$1|$1]]” na tej wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglądaj strony zaczynające się od tego przedrostka]]',
 'searchprofile-articles' => 'Strony',
 'searchprofile-project' => 'Strony pomocy i projektu',
 'searchprofile-images' => 'Multimedia',
@@ -1421,20 +1412,16 @@ Zazwyczaj jest to spowodowane przestarzałym linkiem do usuniętej strony. Powó
 'search-interwiki-default' => 'Wyniki dla $1:',
 'search-interwiki-more' => '(więcej)',
 'search-relatedarticle' => 'Pokrewne',
-'mwsuggest-disable' => 'Wyłącz podpowiedzi wyszukiwania',
 'searcheverything-enable' => 'Szukaj we wszystkich przestrzeniach nazw',
 'searchrelated' => 'pokrewne',
 'searchall' => 'wszystkie',
 'showingresults' => "Poniżej znajduje się lista {{PLURAL:$1|z '''1''' wynikiem|'''$1''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
 'showingresultsnum' => "Poniżej znajduje się lista {{PLURAL:$3|z '''1''' wynikiem|'''$3''' wyników}}, rozpoczynając od wyniku numer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wynik '''$1''' z '''$3'''|Wyniki '''$1 – $2''' z '''$3'''}} dla '''$4'''",
-'nonefound' => "'''Uwaga''': Domyślnie przeszukiwane są wyłącznie niektóre przestrzenie nazw. Spróbuj poprzedzić wyszukiwaną frazę przedrostkiem ''all:'', co spowoduje przeszukanie całej zawartości {{GRAMMAR:D.lp|{{SITENAME}}}} (włącznie ze stronami dyskusji, szablonami itp) lub spróbuj użyć jako przedrostka wybranej, jednej przestrzeni nazw.",
 'search-nonefound' => 'Brak wyników spełniających kryteria podane w zapytaniu.',
-'powersearch' => 'Szukaj',
 'powersearch-legend' => 'Wyszukiwanie zaawansowane',
 'powersearch-ns' => 'Przeszukaj przestrzenie nazw:',
 'powersearch-redir' => 'Pokaż przekierowania',
-'powersearch-field' => 'Szukaj',
 'powersearch-togglelabel' => 'Zaznacz',
 'powersearch-toggleall' => 'wszystko',
 'powersearch-togglenone' => 'nic',
@@ -1449,7 +1436,6 @@ Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google ni
 'mypreferences' => 'Preferencje',
 'prefs-edits' => 'Liczba edycji',
 'prefsnologintext2' => 'Musisz $1 aby ustawić preferencje.',
-'changepassword' => 'Zmiana hasła',
 'prefs-skin' => 'Skórka',
 'skin-preview' => 'podgląd',
 'datedefault' => 'Domyślny',
@@ -1472,13 +1458,11 @@ Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google ni
 'prefs-email' => 'E‐mail',
 'prefs-rendering' => 'Wygląd',
 'saveprefs' => 'Zapisz',
-'resetprefs' => 'Cofnij niezapisane zmiany',
 'restoreprefs' => 'Przywróć wszystkie domyślne preferencje (we wszystkich sekcjach)',
 'prefs-editing' => 'Edycja',
 'rows' => 'Wiersze',
 'columns' => 'Kolumny',
 'searchresultshead' => 'Wyszukiwanie',
-'resultsperpage' => 'Liczba wyników na stronie',
 'stub-threshold' => 'Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href="#" class="stub">zalążek (stub)</a>',
 'stub-threshold-disabled' => 'Wyłączone',
 'recentchangesdays' => 'Liczba dni prezentowanych w ostatnich zmianach',
@@ -1493,7 +1477,6 @@ Każdy, kto go zna, będzie mógł je zobaczyć, więc zachowaj go dla siebie.
 'localtime' => 'Czas lokalny',
 'timezoneuseserverdefault' => 'Użyj domyślnej dla tej wiki ($1)',
 'timezoneuseoffset' => 'Inna (określ różnicę czasu)',
-'timezoneoffset' => 'Różnica¹',
 'servertime' => 'Czas serwera',
 'guesstimezone' => 'Pobierz z przeglądarki',
 'timezoneregion-africa' => 'Afryka',
@@ -1561,6 +1544,7 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'prefs-tokenwatchlist' => 'Token',
 'prefs-diffs' => 'Zmiany',
 'prefs-help-prefershttps' => 'Ta opcja zacznie działać przy twoim następnym zalogowaniu.',
+'prefs-tabs-navigation-hint' => 'Wskazówka: do poruszania się między zakładkami możesz użyć klawiszy strzałek w lewo i w prawo',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Wygląda na prawidłowy',
@@ -1747,13 +1731,14 @@ Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje auto
 'recentchanges-label-bot' => 'Ta edycja została wykonana przez bota',
 'recentchanges-label-unpatrolled' => 'Ta edycja nie została jeszcze sprawdzona',
 'recentchanges-label-plusminus' => 'Zmieniony rozmiar strony (liczba bajtów)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(zobacz też [[Special:NewPages|listę nowych stron]])',
-'rcnote' => "Poniżej {{PLURAL:$1|znajduje się '''1''' ostatnia zmiana wykonana|znajdują się ostatnie '''$1''' zmiany wykonane|znajduje się ostatnich '''$1''' zmian wykonanych}} w ciągu {{PLURAL:$2|ostatniego dnia|ostatnich '''$2''' dni}}, licząc od $5 dnia $4.",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Poniżej pokazano zmiany wykonane po '''$2''' (nie więcej niż '''$1''' pozycji).",
 'rclistfrom' => 'Pokaż nowe zmiany od $1',
 'rcshowhideminor' => '$1 drobne zmiany',
 'rcshowhidebots' => '$1 boty',
-'rcshowhideliu' => '$1 zalogowanych',
+'rcshowhideliu' => '$1 zarejestrowanych',
 'rcshowhideanons' => '$1 anonimowych',
 'rcshowhidepatr' => '$1 sprawdzone',
 'rcshowhidemine' => '$1 moje edycje',
@@ -1873,6 +1858,7 @@ Cofnij się i załaduj plik pod inną nazwą. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Ten plik jest kopią {{PLURAL:$1|pliku|następujących plików:}}',
 'file-deleted-duplicate' => 'Identyczny do tego plik ([[:$1]]) został wcześniej usunięty.
 Sprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.',
+'file-deleted-duplicate-notitle' => 'Plik jest identyczny z plikiem, który został wcześniej usunięty, a jego nazwa została ukryta. Należy poprosić kogoś z możliwością przeglądania ukrytych danych, aby przeanalizował sytuację przed przystąpieniem do jego ponownego przesłania.',
 'uploadwarning' => 'Ostrzeżenie o przesyłaniu',
 'uploadwarning-text' => 'Zmień poniższy opis pliku i spróbuj ponownie.',
 'savefile' => 'Zapisz plik',
@@ -2218,6 +2204,7 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwiki|interwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|link|linki|linków}}',
 'nmembers' => '$1 {{PLURAL:$1|element|elementy|elementów}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|element|elementy|elementów}}',
 'nrevisions' => '$1 {{PLURAL:$1|wersja|wersje|wersji}}',
 'nviews' => 'odwiedzono $1 {{PLURAL:$1|raz|razy}}',
 'nimagelinks' => 'Używane na $1 {{PLURAL:$1|stronie|stronach}}',
@@ -2256,10 +2243,9 @@ Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, d
 'protectedpages' => 'Strony zabezpieczone',
 'protectedpages-indef' => 'Tylko strony zabezpieczone na zawsze',
 'protectedpages-cascade' => 'Tylko strony zabezpieczone rekursywnie',
-'protectedpagestext' => 'Poniższe strony zostały zabezpieczone przed przenoszeniem lub edytowaniem.',
+'protectedpages-noredirect' => 'Ukryj przekierowania',
 'protectedpagesempty' => 'Żadna strona nie jest obecnie zabezpieczona z podanymi parametrami.',
 'protectedtitles' => 'Zabezpieczone nazwy stron',
-'protectedtitlestext' => 'Utworzenie stron o następujących nazwach jest zablokowane',
 'protectedtitlesempty' => 'Dla tych ustawień dopuszczalne jest utworzenie stron o dowolnej nazwie.',
 'listusers' => 'Lista użytkowników',
 'listusers-editsonly' => 'Pokaż tylko użytkowników z edycjami',
@@ -2311,9 +2297,6 @@ Możesz zawęzić liczbę wyników poprzez wybranie typu rejestru, nazwy użytko
 'allpagesto' => 'Strony o tytułach kończących się na',
 'allarticles' => 'Wszystkie artykuły',
 'allinnamespace' => 'Wszystkie strony (w przestrzeni nazw $1)',
-'allnotinnamespace' => 'Wszystkie strony (oprócz przestrzeni nazw $1)',
-'allpagesprev' => 'Poprzednia',
-'allpagesnext' => 'Następna',
 'allpagessubmit' => 'Pokaż',
 'allpagesprefix' => 'Pokaż strony o tytułach rozpoczynających się od',
 'allpagesbadtitle' => 'Podana nazwa jest nieprawidłowa, zawiera prefiks międzyprojektowy lub międzyjęzykowy. Może ona także zawierać w sobie jeden lub więcej znaków, których użycie w nazwach jest niedozwolone.',
@@ -2533,6 +2516,7 @@ Zobacz na stronie $2 rejestr ostatnio wykonanych usunięć.',
 Usuwanie jej zostało ograniczone ze względu na możliwość zakłócenia pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.',
 'delete-warning-toobig' => 'Ta strona ma bardzo długą historię edycji – ponad $1 {{PLURAL:$1|zmianę|zmiany|zmian}}.<br />
 Bądź ostrożny, ponieważ usunięcie jej może spowodować zakłócenia w pracy {{GRAMMAR:D.lp|{{SITENAME}}}}.',
+'deleting-backlinks-warning' => "''' Uwaga:''' Do strony, którą masz zamiar usunąć, odwołują się inne strony.",
 
 # Rollback
 'rollback' => 'Cofnij edycję',
@@ -2562,9 +2546,9 @@ Naciśnij „wstecz” w przeglądarce, przeładuj stronę, po czym ponownie wyd
 'protectlogpage' => 'Zabezpieczone',
 'protectlogtext' => 'Poniżej znajduje się lista zmian w zabezpieczeniu pojedynczych stron.
 Wszystkie aktywne zabezpieczenia odnajdziesz na liście [[Special:ProtectedPages|zabezpieczonych stron]].',
-'protectedarticle' => 'zabezpieczono "[[$1]]"',
-'modifiedarticleprotection' => 'zmieniono stopień zabezpieczenia "[[$1]]"',
-'unprotectedarticle' => 'odbezpieczył [[$1]]',
+'protectedarticle' => 'zabezpieczył(a) „[[$1]]”',
+'modifiedarticleprotection' => 'zmienił(a) stopień zabezpieczenia „[[$1]]”',
+'unprotectedarticle' => 'odbezpieczył(a) „[[$1]]”',
 'movedarticleprotection' => 'przeniósł ustawienia zabezpieczeń z [[$2]] do [[$1]]',
 'protect-title' => 'Zmiana stopnia zabezpieczenia „$1”',
 'protect-title-notallowed' => 'Podgląd stopnia zabezpieczenia „$1”',
@@ -2649,7 +2633,6 @@ Możesz mieć zły link lub wersja mogła zostać odtworzona lub usunięta z arc
 'undeletebtn' => 'Odtwórz',
 'undeletelink' => 'pokaż lub odtwórz',
 'undeleteviewlink' => 'pokaż',
-'undeletereset' => 'Wyczyść',
 'undeleteinvert' => 'Odwróć zaznaczenie',
 'undeletecomment' => 'Powód',
 'undeletedrevisions' => 'odtworzono {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}',
@@ -2738,7 +2721,6 @@ Poniżej znajduje się ostatni wpis w rejestrze blokowania.',
 'block' => 'Zablokuj użytkownika',
 'unblock' => 'Odblokuj użytkownika',
 'blockip' => 'Zablokuj użytkownika',
-'blockip-title' => 'Zablokowanie użytkownika',
 'blockip-legend' => 'Zablokuj użytkownika',
 'blockiptext' => 'Użyj poniższego formularza do zablokowania możliwości edycji spod określonego adresu IP lub konkretnemu użytkownikowi.
 Blokować należy jedynie po to, by zapobiec wandalizmom, zgodnie z [[{{MediaWiki:Policy-url}}|przyjętymi zasadami]].
@@ -2746,7 +2728,6 @@ Podaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandal
 'ipadressorusername' => 'Adres IP lub nazwa użytkownika',
 'ipbexpiry' => 'Upływa',
 'ipbreason' => 'Powód',
-'ipbreasonotherlist' => 'Inny powód',
 'ipbreason-dropdown' => '*Najczęstsze przyczyny blokad
 ** Ataki na innych użytkowników
 ** Naruszenie praw autorskich
@@ -2764,8 +2745,6 @@ Podaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandal
 'ipbsubmit' => 'Zablokuj użytkownika',
 'ipbother' => 'Inny okres',
 'ipboptions' => '2 godziny:2 hours,1 dzień:1 day,3 dni:3 days,1 tydzień:1 week,2 tygodnie:2 weeks,1 miesiąc:1 month,3 miesiące:3 months,6 miesięcy:6 months,1 rok:1 year,na zawsze:infinite',
-'ipbotheroption' => 'inny okres',
-'ipbotherreason' => 'Inne lub dodatkowy powód',
 'ipbhidename' => 'Ukryj nazwę użytkownika w edycjach i listach',
 'ipbwatchuser' => 'Obserwuj stronę osobistą i stronę dyskusji tego użytkownika',
 'ipb-disableusertalk' => 'Zablokuj możliwość edytowania przez tego użytkownika własnej strony dyskusji w czasie trwania blokady.',
@@ -2856,7 +2835,6 @@ O tym poważnym problemie dotyczącym bezpieczeństwa należy poinformować dost
 'sorbs_create_account_reason' => 'Twój adres IP znajduje się na liście serwerów open proxy w DNSBL, używanej przez {{GRAMMAR:B.lp|{{SITENAME}}}}.
 Nie możesz utworzyć konta',
 'xffblockreason' => 'Adres IP obecny w nagłówku X-Forwarded-For – twój lub serwera proxy, z którego korzystasz – został zablokowany. Powód blokady to: $1',
-'cant-block-while-blocked' => 'Nie możesz zablokować innych użytkowników, kiedy sam jesteś zablokowany.',
 'cant-see-hidden-user' => 'Konto użytkownika, które próbujesz zablokować, zostało już zablokowane oraz ukryte. Bez uprawnienia do ukrywania kont nie możesz zobaczyć oraz modyfikować blokady tego użytkownika.',
 'ipbblocked' => 'Nie możesz blokować i odblokowywać innych użytkowników, ponieważ sam jesteś zablokowany',
 'ipbnounblockself' => 'Nie możesz odblokować samego siebie',
@@ -2915,7 +2893,6 @@ Upewnij się co do konsekwencji tej operacji, zanim się na nią zdecydujesz.",
 W takich przypadkach treść dyskusji można przenieść tylko ręcznie.',
 'movearticle' => 'Przeniesienie strony',
 'moveuserpage-warning' => "'''Uwaga!''' Masz zamiar przenieść stronę użytkownika. Miej na uwadze, że zostanie przeniesiona tylko strona, a '''nazwa użytkownika pozostanie niezmieniona'''.",
-'movenologin' => 'Nie jesteś zalogowany',
 'movenologintext' => 'Przenoszenie stron jest możliwe dopiero po zarejestrowaniu się i [[Special:UserLogin|zalogowaniu]].',
 'movenotallowed' => 'Nie masz uprawnień do przenoszenia stron.',
 'movenotallowedfile' => 'Nie masz uprawnień do przenoszenia plików.',
@@ -2931,8 +2908,6 @@ W takich przypadkach treść dyskusji można przenieść tylko ręcznie.',
 'articleexists' => 'Strona o podanej nazwie już istnieje albo wybrana przez Ciebie nazwa nie jest poprawna.
 Wybierz inną nazwę.',
 'cantmove-titleprotected' => 'Nie możesz przenieść strony, ponieważ nowa nazwa strony jest niedozwolona z powodu zabezpieczenia przed utworzeniem.',
-'talkexists' => "'''Strona treści została przeniesiona, natomiast strona dyskusji nie – strona dyskusji o nowym tytule już istnieje. Połącz teksty obu dyskusji ręcznie.'''",
-'movedto' => 'przeniesiono do',
 'movetalk' => 'Przenieś także stronę dyskusji, jeśli to możliwe.',
 'move-subpages' => 'Przenieś podstrony (nie więcej niż $1)',
 'move-talk-subpages' => 'Przenieś strony dyskusji podstron (nie więcej niż $1)',
@@ -3084,9 +3059,9 @@ Brak katalogu dla plików tymczasowych.',
 # Import log
 'importlogpage' => 'Rejestr importu',
 'importlogpagetext' => 'Rejestr przeprowadzonych importów stron z innych serwisów wiki.',
-'import-logentry-upload' => 'Zaimportowano [[$1]] przez pobieranie plików',
+'import-logentry-upload' => 'zaimportował(a) [[$1]] przez pobieranie plików',
 'import-logentry-upload-detail' => '$1 {{PLURAL:$1|wersja|wersje|wersji}}',
-'import-logentry-interwiki' => 'zaimportowano $1 używając transwiki',
+'import-logentry-interwiki' => 'zaimportował(a) $1 używając transwiki',
 'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|wersja|wersje|wersji}} z $2',
 
 # JavaScriptTest
@@ -3168,6 +3143,7 @@ Brak katalogu dla plików tymczasowych.',
 Pozwala na wpisanie powodu w opisie zmian.',
 'tooltip-preferences-save' => 'Zapisz preferencje',
 'tooltip-summary' => 'Wpisz krótki opis',
+'interlanguage-link-title' => '$1 – $2',
 
 # Stylesheets
 'common.css' => '/* Umieszczony tutaj kod CSS zostanie zastosowany we wszystkich skórkach */',
@@ -3789,15 +3765,10 @@ Pozostałe pola zostaną domyślnie ukryte.
 'exif-urgency-high' => 'Wysoki ($1)',
 'exif-urgency-other' => 'Priorytet zdefiniowany przez użytkownika ($1)',
 
-# External editor support
-'edit-externally' => 'Edytuj plik, używając zewnętrznej aplikacji',
-'edit-externally-help' => '(Więcej informacji o używaniu [https://www.mediawiki.org/wiki/Manual:External_editors zewnętrznych edytorów]).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wszystkie',
 'namespacesall' => 'wszystkie',
 'monthsall' => 'wszystkie',
-'limitall' => 'wszystkie',
 
 # Email address confirmation
 'confirmemail' => 'Potwierdzanie adresu e‐mail',
@@ -3821,7 +3792,6 @@ Kod może być przedawniony.',
 'confirmemail_success' => 'Adres e‐mail został potwierdzony.
 Możesz [[Special:UserLogin|zalogować się]] i korzystać z szerszego wachlarza funkcji wiki.',
 'confirmemail_loggedin' => 'Twój adres email został zweryfikowany.',
-'confirmemail_error' => 'Pojawiły się błędy przy zapisywaniu potwierdzenia.',
 'confirmemail_subject' => '{{SITENAME}} – weryfikacja adresu e‐mail',
 'confirmemail_body' => 'Ktoś łącząc się z komputera o adresie IP $1
 zarejestrował w {{GRAMMAR:MS.lp|{{SITENAME}}}} konto „$2”, podając niniejszy adres e‐mail.
@@ -3904,6 +3874,11 @@ Czy na pewno chcesz ją ponownie utworzyć?",
 'imgmultigo' => 'Przejdź',
 'imgmultigoto' => 'Idź do $1 strony',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(język domyślny)',
+'img-lang-info' => 'Wyświetl tę ilustrację w $1. $2',
+'img-lang-go' => 'Dalej',
+
 # Table pager
 'ascending_abbrev' => 'rosn.',
 'descending_abbrev' => 'mal.',
@@ -4026,7 +4001,14 @@ Możesz także użyć [[Special:EditWatchlist|standardowego edytora obserwowanyc
 'version-hook-name' => 'Nazwa haka (ang. hook name)',
 'version-hook-subscribedby' => 'Zapotrzebowany przez',
 'version-version' => '(Wersja $1)',
-'version-license' => 'Licencja',
+'version-license' => 'Licencja MediaWiki',
+'version-ext-license' => 'Licencja',
+'version-ext-colheader-name' => 'Rozszerzenie',
+'version-ext-colheader-version' => 'Wersja',
+'version-ext-colheader-license' => 'Licencja',
+'version-ext-colheader-description' => 'Opis',
+'version-ext-colheader-credits' => 'Autorzy',
+'version-license-not-found' => 'Nie znaleziono szczegółowych informacji licencyjnych dla tego rozszerzenia.',
 'version-poweredby-credits' => "Ta wiki korzysta z oprogramowania '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001‐$1 $2.",
 'version-poweredby-others' => 'inni',
 'version-poweredby-translators' => 'tłumacze translatewiki.net',
@@ -4044,13 +4026,14 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Przekierowanie według pliku, użytkownika albo identyfikatora wersji',
+'redirect' => 'Przekierowanie według pliku, użytkownika, strony lub identyfikatora wersji',
 'redirect-legend' => 'Przekieruj do pliku lub strony',
-'redirect-summary' => 'Ta strona specjalna przekierowuje do: pliku (o podanej nazwie), do strony (o podanym numerze wersji) albo do strony użytkownika (o podanym identyfikatorze numerycznym). Sposób użycia: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] albo [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Ta strona specjalna przekierowuje do: pliku (o podanej nazwie), do strony (o podanym numerze wersji lub identyfikatorze strony) albo do strony użytkownika (o podanym identyfikatorze numerycznym). Sposób użycia: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] albo [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Przejdź',
 'redirect-lookup' => 'Wyszukaj:',
 'redirect-value' => 'Wartość:',
 'redirect-user' => 'ID użytkownika',
+'redirect-page' => 'Identyfikator strony',
 'redirect-revision' => 'Wersja strony',
 'redirect-file' => 'Nazwa pliku',
 'redirect-not-exists' => 'Nie znaleziono wartości',
@@ -4117,7 +4100,6 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
 
 # Special:ComparePages
 'comparepages' => 'Porównanie stron',
-'compare-selector' => 'Porównanie wersji stron',
 'compare-page1' => 'Strona 1',
 'compare-page2' => 'Strona 2',
 'compare-rev1' => 'Wersja 1',
@@ -4294,10 +4276,12 @@ W zasadzie rozwijane jest prawie wszystko w podwójnych nawiasach klamrowych.',
 'expand_templates_input' => 'Tekst wejściowy',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'wynik w formacie XML',
+'expand_templates_html_output' => 'Wyświetlanie surowego HTML',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Usuń komentarze',
 'expand_templates_remove_nowiki' => 'Ukrywaj w wyniku znaczniki <nowiki>',
 'expand_templates_generate_xml' => 'Pokaż drzewo analizatora składni w formacie XML',
+'expand_templates_generate_rawhtml' => 'Pokaż surowy HTML',
 'expand_templates_preview' => 'Podgląd',
 
 );
index f2099d7..4862297 100644 (file)
@@ -64,7 +64,6 @@ $messages = array(
 'tog-minordefault' => 'Marché tute le modìfiche coma cite coma predefinission',
 'tog-previewontop' => 'Smon-e la preuva dzora al quàder ëd modìfica dël test e nen sota',
 'tog-previewonfirst' => 'Smon-e na preuva la prima vira che as fa na modìfica',
-'tog-nocache' => 'Disabilité la memòria local ëd le pàgine dël navigador',
 'tog-enotifwatchlistpages' => "Mandeme un mëssagi an pòsta eletrònica quand a-i son dle modìfiche a le pàgine ch'im ten-o sot-euj",
 'tog-enotifusertalkpages' => 'Mandeme un mëssagi ëd pòsta eletrònica quand a-i son dle modìfiche a mia pàgina dle ciaciarade',
 'tog-enotifminoredits' => "Mandeme un mëssagi an pòsta eletrònica bele che për le modìfiche cite dle pàgine o dj'archivi",
@@ -200,7 +199,6 @@ $messages = array(
 'qbedit' => 'Modifiché',
 'qbpageoptions' => 'Costa pàgina',
 'qbmyoptions' => 'Mie pàgine',
-'qbspecialpages' => 'Pàgine speciaj',
 'faq' => 'Chestion frequente',
 'faqpage' => 'Project:Soèns An Ciamo',
 
@@ -415,9 +413,6 @@ A l'ha smonù gnun-e spiegassion.",
 'perfcached' => "Ij dat sì-dapress a sòn ëstàit memorisà an local e a peulo esse nen agiornà. Al pi {{PLURAL:$1|n'arzultà a l'é disponìbil|$1 arzultà a son disponìbij}} ant la memòria local.",
 'perfcachedts' => "Ij dat sì-dapress a son ëstàit memorisà an local, e a son ëstàit agiornà l'ùltima vira ël $1. Al pi {{PLURAL:$4|n'arzultà a l'é disponìbil|$4 arzultà a son disponìbij}} ant la memòria local.",
 'querypage-no-updates' => "J'agiornament për sta pàgina-sì për adess a marcio nen. Ij dat ambelessì a saran nen agiornà.",
-'wrong_wfQuery_params' => 'Paràmetro nen giust për wfQuery()<br />
-Funsion: $1<br />
-Arcesta: $2',
 'viewsource' => 'Vardé la sorgiss',
 'viewsource-title' => 'Vëdde la sorgiss ëd $1',
 'actionthrottled' => 'Assion limità',
@@ -547,7 +542,7 @@ Che a preuva torna, për piasì.",
 'passwordtooshort' => 'Le ciav a devo avèj almanch {{PLURAL:$1|1 caràter|$1 caràter}}.',
 'password-name-match' => 'Soa ciav a dev esse diferenta da sò stranòm.',
 'password-login-forbidden' => "L'usagi ëd së stranòm d'utent e ëd sa ciav a son ëstàit proibì.",
-'mailmypassword' => 'Mandeme na neuva ciav për pòsta eletrònica',
+'mailmypassword' => 'Riamposté la ciav',
 'passwordremindertitle' => 'Neuva ciav provisòria për {{SITENAME}}',
 'passwordremindertext' => "Cheidun (a l'é belfé che a sia stàit pròpe chiel, da 'nt l'adrëssa IP $1) a l'ha ciamà na neuva
 ciav për rintré ant ël sistema ëd {{SITENAME}} ($4).
@@ -598,7 +593,7 @@ S'a decid ëd butelo, a sarà dovrà për dé a l'utent ël mérit ëd sò trava
 'user-mail-no-body' => 'Tentativ ëd mandé un mëssagi con un còrp veuid o curt ëd fasson esagerà.',
 
 # Change password dialog
-'resetpass' => "Cangé 'd ciav",
+'changepassword' => 'Cangé la ciav',
 'resetpass_announce' => "A l'é rintrà ant ël sistema con na ciav provisòria mandà për pòsta eletrònica. Për podèj livré la procedura a l'ha da butesse na ciav neuva ambelessì:",
 'resetpass_text' => '<!-- Gionté ël test ambelessì -->',
 'resetpass_header' => 'Cangé la ciav dël cont',
@@ -619,7 +614,7 @@ Peul desse ch'a l'ha già cambià la ciav o a l'ha ciamà na neuva ciav provisò
 # Special:PasswordReset
 'passwordreset' => 'Ri-inissialisassion ëd la ciav',
 'passwordreset-text-one' => "Ch'a completa 's formolari për reimposté soa ciav.",
-'passwordreset-text-many' => "{{PLURAL:$1|Ch'a compila un dij camp për riamposté soa ciav.}}",
+'passwordreset-text-many' => "{{PLURAL:$1|Ch'a compila un dij camp për arsèive na ciav provisòria për pòsta eletrònica.}}",
 'passwordreset-legend' => 'Riampostassion ëd la ciav',
 'passwordreset-disabled' => "La reinissialisassion ëd le ciav a l'é stàita disabilità su sta wiki.",
 'passwordreset-emaildisabled' => 'Le fonsionalità ëd pòsta eletrònica a son ëstàite disativà su sta wiki.',
@@ -876,6 +871,8 @@ A esist già.",
 'content-not-allowed-here' => "Ël contnù «$1» a l'é nen autorisà an sla pàgina [[$2]]",
 'editwarning-warning' => "Chité sta pàgina-sì a peul feje perde tute le modìfiche ch'a l'ha fàit.
 S'a l'é rintrà ant ël sistema, a peul disabilité st'avis ant la session «Modìfica» dij sò gust.",
+'editpage-notsupportedcontentformat-title' => 'Formà ëd contnù nen mantnù',
+'editpage-notsupportedcontentformat-text' => "Ël formà ëd contnù $1 a l'é nen mantnù dal model Ëd contnù $2.",
 
 # Content models
 'content-model-wikitext' => 'test wiki',
@@ -917,6 +914,9 @@ Costi paràmeter a son stàit ignorà.",
 'cantcreateaccount-text' => "La cression ëd cont neuv a parte da st'adrëssa IP-sì ('''$1''') a l'é stàita blocà da [[User:$3|$3]].
 
 La rason butà da $3 për ël blocagi a l'é stàita: ''$2''",
+'cantcreateaccount-range-text' => "La creassion ëd cont da l'adrëssa IP ant l'antërval '''$1''', ch'a comprend soa adrëssa IP ('''$4'''), a l'é stàita blocà da [[User:$3|$3]].
+
+La rason dàita da $3 a l'é ''$2''",
 
 # History pages
 'viewpagelogs' => 'Smon ij registr dë sta pàgina-sì',
@@ -986,10 +986,6 @@ Chiel a peul ancora s-ciairé costa diferensa; a peulo essje pì 'd detaj ant ë
 'revisiondelete' => 'Scancela/disdëscancela revision',
 'revdelete-nooldid-title' => 'Version nen spessificà',
 'revdelete-nooldid-text' => "A l'ha nen spessificà na version ëd la pàgina për aplicheje costa fonsion, la version spessificà a esist pa, o a preuva a stërmé la version corenta.",
-'revdelete-nologtype-title' => "Gnun-a sòrt d'argistr spessificà",
-'revdelete-nologtype-text' => "A l'ha nen spessificà na sòrt ëd registr për fé costa assion.",
-'revdelete-nologid-title' => 'Intrada dël registr pa giusta',
-'revdelete-nologid-text' => "A l'ha pa spessificà n'event dël registr bërsaj andoa apliché costa fonsion o l'intrada spessificà a esist nen.",
 'revdelete-no-file' => "L'archivi sërcà a-i é pa.",
 'revdelete-show-file-confirm' => 'É-lo sigur ëd vorèj vëdde na vërsion scancelà dl\'archivi "<nowiki>$1</nowiki>" da $2 a $3?',
 'revdelete-show-file-submit' => 'Bò!',
@@ -1023,8 +1019,6 @@ $1",
 'logdelete-failure' => "'''La visibilità dël registr a peul pa esse ampostà:'''
 $1",
 'revdel-restore' => 'cambia visibilità',
-'revdel-restore-deleted' => 'revision ëscancelà',
-'revdel-restore-visible' => 'revision visìbij',
 'pagehist' => 'Stòria dla pàgina',
 'deletedhist' => 'Stòria scancelà',
 'revdelete-hide-current' => "Eror an stërmand l'element datà $2, $1: costa-sì a l'é la version corenta.
@@ -1102,12 +1096,8 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 # Search results
 'searchresults' => "Arzultà dl'arserca",
 'searchresults-title' => "Arzultà dl'arserca për «$1»",
-'searchresulttext' => "Për avèj pì d'anformassion ant sl'arserca interna ëd {{SITENAME}}, che a varda [[{{MediaWiki:Helppage}}|Arserca ant la {{SITENAME}}]].",
-'searchsubtitle' => 'A l\'ha sërcà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tute le pàgine che a ancamin-o con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tute le pàgine che a men-o a "$1"]])',
-'searchsubtitleinvalid' => 'Domanda "$1"',
 'toomanymatches' => "Parèj a-i ven fòra tròpa ròba, për piasì, ch'a preuva n'arserca diferenta.",
 'titlematches' => "Ant ij tìtoj dj'artìcoj",
-'notitlematches' => "La vos che a l'ha ciamà a l'é pa trovasse antrames aj tìtoj dj'articoj",
 'textmatches' => "Ant ël test ëd j'artìcoj",
 'notextmatches' => "La vos che a l'ha ciamà a l'é pa trovasse antrames aj test dj'artìcoj",
 'prevn' => 'ij {{PLURAL:$1|$1}} prima',
@@ -1116,10 +1106,8 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 'nextn-title' => '$1 {{PLURAL:$1|arzultà|arzultà}} apress',
 'shown-title' => 'Smon-e $1 {{PLURAL:$1|arzultà|arzultà}} për pàgina',
 'viewprevnext' => 'Che a varda ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => "Opsion d'arserca",
 'searchmenu-exists' => "'''A-i é na pàgina ciamà \"[[:\$1]]\" dzora a costa wiki'''",
 'searchmenu-new' => "'''Creé la pàgina «[[:$1]]» ansima a sta wiki-sì!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualisé le pàgine con sto prefiss-sì]]',
 'searchprofile-articles' => 'Pàgine ëd contnù',
 'searchprofile-project' => "Pàgine d'agiut e ëd proget",
 'searchprofile-images' => 'Multimedia',
@@ -1140,21 +1128,16 @@ Sòn a l'é normalment causà da l'andèje dapress a na veja liura stòrica a na
 'search-interwiki-default' => 'Arzultà da $1:',
 'search-interwiki-more' => '(ëd pì)',
 'search-relatedarticle' => 'Corelà',
-'mwsuggest-disable' => "Disabilité ij sugeriment d'arserca",
 'searcheverything-enable' => 'Sërché ant tùit jë spassi nominaj',
 'searchrelated' => 'corelà',
 'searchall' => 'tuti',
 'showingresults' => "Ambelessì-sota a treuva fin a {{PLURAL:$1|'''1'''|'''$1'''}} arzultà, a parte dal nùmer #'''$2'''.",
 'showingresultsnum' => "Ambelessì-sota a treuva {{PLURAL:$3|'''1'''|'''$3'''}} arzultà a parte da #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Arzultà '''$1''' ëd '''$3'''|Arzultà '''$1 - $2''' ëd '''$3'''}} për '''$4'''",
-'nonefound' => "'''Nòta''': për stàndard a s'arserca mach an chèich ëspassi nominal.
-Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an tùit jë spassi nominaj (comprèis le discussion, jë stamp, e via fòrt), o ch'a deuvra lë spassi nominal vorsù com prefiss.",
 'search-nonefound' => "A-i é gnun arzultà për l'arserca.",
-'powersearch' => 'Arserca avansà',
 'powersearch-legend' => 'Arserca avansà',
 'powersearch-ns' => 'Sërché ant jë spassi nominaj:',
 'powersearch-redir' => 'Smon-e le ridiression',
-'powersearch-field' => 'Sërché',
 'powersearch-togglelabel' => 'Buté na marca:',
 'powersearch-toggleall' => 'Tùit',
 'powersearch-togglenone' => 'Gnun',
@@ -1167,7 +1150,6 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
 'mypreferences' => 'Gust',
 'prefs-edits' => 'Nùmer ëd modìfiche fàite:',
 'prefsnologintext2' => "Për piasì, ch'a $1 për definì ij gust d'utent.",
-'changepassword' => 'Cangé la ciav',
 'prefs-skin' => 'Facia',
 'skin-preview' => 'Preuva',
 'datedefault' => "Franch l'istess",
@@ -1190,13 +1172,11 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
 'prefs-email' => 'Opsion ëd pòsta eletrònica',
 'prefs-rendering' => 'Sembiansa',
 'saveprefs' => 'Salvé ij sò gust',
-'resetprefs' => 'Buté torna ij "mè gust" coma a-i ero al prinsipi',
 'restoreprefs' => "Buté torna j'ampostassion dë stàndard (an tute le session)",
 'prefs-editing' => 'Quàder ëd modìfica dël test',
 'rows' => 'Righe:',
 'columns' => 'Colòne:',
 'searchresultshead' => "Specifiché soe preferense d'arserca",
-'resultsperpage' => 'Arzultà da mostré për vira pàgina:',
 'stub-threshold' => 'Valor mìnim për j\'<a href="#" class="stub">anliure a jë sbòss</a>:',
 'stub-threshold-disabled' => 'Disabilità',
 'recentchangesdays' => "Vàire dì smon-e ant j'ùltime modìfiche:",
@@ -1211,7 +1191,6 @@ Qualsëssìa përson-a ch'a la conòssa a podrà lese la lista ëd lòn che chie
 'localtime' => 'Ora local:',
 'timezoneuseserverdefault' => 'Dovré lë stàndard ëd la wiki ($1)',
 'timezoneuseoffset' => 'Àutr (spessifiché la diferensa)',
-'timezoneoffset' => 'Diferensa oraria¹:',
 'servertime' => 'Ora dël servent:',
 'guesstimezone' => "Ciapa sù l'ora da 'nt ël mè programa ëd navigassion (browser)",
 'timezoneregion-africa' => 'Àfrica',
@@ -1282,6 +1261,7 @@ Costa anformassion a sarà pùblica.",
 'prefs-tokenwatchlist' => 'Geton',
 'prefs-diffs' => 'Diferense',
 'prefs-help-prefershttps' => 'Costa preferensa a ancaminrà a marcé a soa pròssima conession.',
+'prefs-tabs-navigation-hint' => 'Astussia: A peul dovré le flece a snistra e a drita për navighé antra le schede ant la lista dle schede.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'A smija bon',
@@ -1469,9 +1449,9 @@ Costa anformassion a sarà pùblica.",
 'recentchanges-label-bot' => "Sa modìfica a l'é stàita fàita da un trigomiro",
 'recentchanges-label-unpatrolled' => "Sta modìfica-sì a l'é pa ancó stàita verificà",
 'recentchanges-label-plusminus' => "La taja dla pàgina a l'é cangià d'un nùmer ëd bytes",
+'recentchanges-legend-heading' => "'''Legend:'''",
 'recentchanges-legend-newpage' => '(vëdde ëdcò [[Special:NewPages|lista dle pàgine neuve]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Ambelessì sota a-i {{PLURAL:$1|é '''1''' modìfica|son j'ùltime '''$1''' modìfiche}} ant j'ùltim {{PLURAL:$2|di|'''$2''' di}}, a parte da $5 dël $4.",
 'rcnotefrom' => ' Ambelessì sota a-i é la lista dle modìfiche da <b>$2</b> (fin-a a <b>$1</b>).',
 'rclistfrom' => 'Mostré le modìfiche a parte da $1',
 'rcshowhideminor' => '$1 le modìfiche cite',
@@ -1595,6 +1575,8 @@ Se a veul ancó carié sò archivi, për piasì ch'a torna andré e ch'a deuvra
 'file-exists-duplicate' => "S'archivi a l'é un duplicà ëd {{PLURAL:$1|cost-sì|costi-sì}}:",
 'file-deleted-duplicate' => "N'archivi idéntich a cost-sì ([[:$1]]) a l'é scàit ëscancelà an passà.
 A dovrìa controlé la stòria djë scancelament ëd l'archivi prima ëd carielo torna.",
+'file-deleted-duplicate-notitle' => "N'archivi idéntich a cost-sì a l'é già stàit ëscancelà e ël tìtol a l'é stàit eliminà.
+A dovrìa ciamé a cheidun con la possibilità ëd vëdde ij dàit dj'archivi eliminà ëd riesaminé la situassion prima ëd carielo torna.",
 'uploadwarning' => 'Avis che i soma dapress a carié',
 'uploadwarning-text' => "Për piasì, ch'a modìfica la descrission ëd l'archivi sì-sota e ch'a preuva torna.",
 'savefile' => "Salvé l'archivi",
@@ -1938,6 +1920,7 @@ Adess a l'é na ridiression a [[$2]].",
 'ninterwikis' => '$1 {{PLURAL:$1|antërwiki|antërwiki}}',
 'nlinks' => '$1 {{PLURAL:$1|anliura|anliure}}',
 'nmembers' => '$1 {{PLURAL:$1|element|element}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|mèmber}}',
 'nrevisions' => '{{PLURAL:$1|na revision|$1 revision}}',
 'nviews' => '{{PLURAL:$1|na consultassion|$1 consultassion}}',
 'nimagelinks' => 'Dovrà dzora a $1 {{PLURAL:$1|pàgina|pàgine}}',
@@ -1976,10 +1959,9 @@ Adess a l'é na ridiression a [[$2]].",
 'protectedpages' => 'Pàgine sota protession',
 'protectedpages-indef' => 'Mach protession anfinìe',
 'protectedpages-cascade' => 'Mach protession a cascà',
-'protectedpagestext' => "Ambelessì-sota a-i é na lista ëd pàgine ch'a son protegiùe përchè as peulo nen modifichesse ò pura tramudesse",
+'protectedpages-noredirect' => 'Stërmé le ridiression',
 'protectedpagesempty' => 'Për adess a-i é pa gnun-a pàgina protegiùa',
 'protectedtitles' => 'Tìtoj protegiù',
-'protectedtitlestext' => 'Ij tìtoj ambelessì-sota as peulo pa creesse',
 'protectedtitlesempty' => "A-i é pa gnun tìtol protegiù ch'a-i intra coi criteri ch'a l'ha butà.",
 'listusers' => "Lista dj'utent",
 'listusers-editsonly' => "Mostré mach j'utent ch'a l'han fàit dle modìfiche",
@@ -2031,9 +2013,6 @@ A peul arstrenze la visualisassion an selessionand la sòrt ëd registr, lë str
 'allpagesto' => 'Smon-e le pàgine fin-a a:',
 'allarticles' => "Tùit j'artìcoj",
 'allinnamespace' => 'Tute le pàgine (spassi nominal $1)',
-'allnotinnamespace' => 'Tute le pàgine (che a son nen ant lë spassi nominal $1)',
-'allpagesprev' => 'Cole prima',
-'allpagesnext' => 'Cole che a ven-o',
 'allpagessubmit' => 'Andé',
 'allpagesprefix' => "Smon-e le pàgine che a l'han ël prefiss:",
 'allpagesbadtitle' => "Ël tìtol che a l'ha daje a la pàgina a va nen bin, ò pura a l'ha andrinta un prefiss inter-lenga ò inter-wiki. A peul esse ëdcò che a l'abia andrinta dij caràter che as peulo nen dovresse ant ij tìtoj.",
@@ -2259,6 +2238,7 @@ Lë scancelassion ëd pàgine parèj a l'é stàita limità për evité ch'as fa
 'delete-warning-toobig' => "Sta pàgina-sì a l'ha na stòria motobin longa, bele pì che $1 {{PLURAL:$1|revision|revision}}.
 A scancelela as peul fesse darmagi a j'operassion dla base ëd dat ëd {{SITENAME}};
 ch'a daga da ment a lòn ch'a fa.",
+'deleting-backlinks-warning' => "'''Avis:''' D'àutre pàgine a l'han na liura a la pàgina che chiel a veul ëscancelé.",
 
 # Rollback
 'rollback' => 'Gavé via le modìfiche',
@@ -2372,7 +2352,6 @@ l'avìa travajaje ansima anans che a la scancelèisso.
 'undeletebtn' => 'Ripristiné',
 'undeletelink' => 'vëdde/ripristiné',
 'undeleteviewlink' => 'vëdde',
-'undeletereset' => "Buté torna tut tanme 'l sòlit",
 'undeleteinvert' => 'Anvertì la selession',
 'undeletecomment' => 'Rason:',
 'undeletedrevisions' => '{{PLURAL:$1|Na revision pijàita|$1 revision pijàite}} andré',
@@ -2460,7 +2439,6 @@ L'ùltima intrada dël registr dij blocagi a l'é butà sì-sota për arferiment
 'block' => "Bloché l'utent",
 'unblock' => "Dësbloché l'utent",
 'blockip' => "Bloché l'utent",
-'blockip-title' => "Bloché l'utent",
 'blockip-legend' => "Bloché l'utent",
 'blockiptext' => "Che a deuvra ël mòdulo ëd domanda 'd blocagi ambelessì sota për bloché l'acess con drit dë scritura da chèich adrëssa IP o stranòm.<br />
 Ës blocagi-sì as dev dovresse MACH për evité dij comportament vandàlich, ën strèita osservansa ëd tùit ij prinsipi dle [[{{MediaWiki:Policy-url}}|régole ëd {{SITENAME}}]].<br />
@@ -2470,7 +2448,6 @@ Che a scriva codì che st'adrëssa IP o së stranòm a dev second chiel esse blo
 'ipadressorusername' => 'Adrëssa IP ò stranòm',
 'ipbexpiry' => 'Fin-a al',
 'ipbreason' => 'Rason:',
-'ipbreasonotherlist' => 'Àotr motiv',
 'ipbreason-dropdown' => "*Motiv sòlit për ij blocagi
 ** Avej butà d'anformassion fàosse
 ** Avej gavà dël contnù da 'nt le pàgine
@@ -2486,8 +2463,6 @@ Che a scriva codì che st'adrëssa IP o së stranòm a dev second chiel esse blo
 'ipbsubmit' => "Bloché st'utent-sì",
 'ipbother' => "N'àutra durà",
 'ipboptions' => "2 ore:2 hours,1 di:1 day,3 di:3 days,na sman-a:1 week,2 sman-e:2 weeks,1 mèis:1 month,3 mèis:3 months,6 mèis:6 months,n'ann:1 year,për sempe:infinite",
-'ipbotheroption' => "d'àutr",
-'ipbotherreason' => 'Àotri motiv/spiegon',
 'ipbhidename' => "Stërmé lë stranòm da 'nt le modìfiche e da 'nt j'elench",
 'ipbwatchuser' => "Ten-e d'euj le pàgine utent e ëd discussion dë st'utent-sì",
 'ipb-disableusertalk' => "Proibì a st'utent ëd modifiché soa pàgina ëd discussion quand a l'é blocà",
@@ -2499,6 +2474,7 @@ Che a scriva codì che st'adrëssa IP o së stranòm a dev second chiel esse blo
 Ch'a consulta la [[Special:BlockList|lista dij blocagi]] për rivëdde ij blocagi.",
 'ipb-blockingself' => "A l'é an camin ch'as blòca chiel-midem! É-lo sigur ëd vorèj fé lòn?",
 'ipb-confirmhideuser' => "A l'é an camin ch'a blòca n'utent con «stërmé l'utent» abilità. Sòn a gaverà lë stranòm ëd l'utent da tute le liste e le vos ëd registr. É-lo sigur ëd vorèj fé lòn?",
+'ipb-confirmaction' => "S'a l'é sigur ëd vorèj pròpe felo, për piasì ch'a marca ël camp «{{int:ipb-confirm}}» al fond.",
 'ipb-edit-dropdown' => 'Modifiché le rason dël blocagi',
 'ipb-unblock-addr' => 'Dësbloché $1',
 'ipb-unblock' => "Dësbloché n'utent ò n'adrëssa IP",
@@ -2576,7 +2552,6 @@ Për piasì che a contata sò fornitor ëd conession e che a lo anforma. As trat
 'sorbsreason' => "Soa adrëssa IP a l'é listà coma arpetitor duvert (open proxy) ansima al DNSBL dovrà da {{SITENAME}}.",
 'sorbs_create_account_reason' => "Soa adrëssa IP a l'é listà coma arpetitor duvèrt (open proxy) ansima al DNSBL dovrà da {{SITENAME}}. A peul nen creésse un cont.",
 'xffblockreason' => "N'adrëssa IP ant l'antestassion X-Forwarded-For, la soa o cola d'un servent fantasma che chiel a deuvra, a l'é stàita blocà. La rason dël blocagi inissial a l'era: $1",
-'cant-block-while-blocked' => "A peul pa bloché d'àutri utent antramentre che chiel a l'é blocà.",
 'cant-see-hidden-user' => "L'utent ch'a l'é an camin ch'a preuva a bloché a l'é già stàit blocà e stërmà. Da già ch'a l'ha pa ël drit hideuser, a peul pa vëdde o modifiché ël blocagi ëd cost utent.",
 'ipbblocked' => "A peul pa bloché o dësbloché d'àutri utent, përchè a l'é blocà chiel-midem",
 'ipbnounblockself' => "A l'é nen autorisà a dësblochesse da sol",
@@ -2636,7 +2611,6 @@ për piasì ch'as renda bin cont ëd le conseguense ëd sòn prima d'andé anans
 Ant costi cas-sì, se a chërd dë felo, a-j farà da manca dë tramudesse la pàgina ëd discussion daspërchiel, a man.",
 'movearticle' => "Cangeje nòm a l'artìcol:",
 'moveuserpage-warning' => "'''Atension:''' A sta për tramudé na pàgina d'utent. Për piasì ch'a nòta che a sarà tramudà mach la pàgina e che l'utent a sarà ''pa'' arbatjà.",
-'movenologin' => "Che a varda che chiel a l'é pa rintrà ant ël sistema",
 'movenologintext' => "A venta esse n'Utent registrà e esse [[Special:UserLogin|rintrà ant ël sistema]]
 për podèj tramudé na pàgina.",
 'movenotallowed' => "A l'ha pa ij përmess dont a fa da manca për tramudé le pàgine.",
@@ -2653,8 +2627,6 @@ për podèj tramudé na pàgina.",
 'articleexists' => "Na pàgina che as ciama parej a-i é già, ò pura ël nòm che a l'ha sërnù a va nen bin.<br />
 Che as sërna, për piasì, un nòm diferent për st'artìcol.",
 'cantmove-titleprotected' => "As peul pa fesse San Martin ambelelì, për via che col tìtol-lì a l'é stàit proibì e a peul pa ess-ie na pàgina ciamà parèj",
-'talkexists' => "La pàgina a l'é staita bin tramudà, ma a l'é pa podusse tramudé soa pàgina ëd discussion, përchè a-i në j'é già n'àutra ant la pàgina con ël tìtol neuv. Për piasì, che a modìfica a man ij contnù dle doe pàgine ëd discussion, an manera che as perdo nen dij pensé anteressant.",
-'movedto' => 'tramudà a',
 'movetalk' => "Tramudé ëdcò la pàgina ëd discussion che a l'ha tacà",
 'move-subpages' => 'Tramudé le sot-pàgine (fin a $1)',
 'move-talk-subpages' => 'Tramudé le sot-pàgine ëd la pàgina ëd discussion (fin a $1)',
@@ -3058,6 +3030,7 @@ An fasend-lo marcé ansima a sò ordinator chiel a podrìa porteje ëd dann a s
 'just-now' => 'pròpi adess',
 
 # Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|ora|ore}} fa',
 'minutes-ago' => '$1 {{PLURAL:$1|minuta|minute}} fa',
 'seconds-ago' => '$1 {{PLURAL:$1second}} fa',
 'monday-at' => 'Lùn-es a $1',
@@ -3492,15 +3465,10 @@ J'àutri a saran stërmà coma stàndard.
 'exif-urgency-high' => 'Àuta ($1)',
 'exif-urgency-other' => "Priorità definìa da l'utent ($1)",
 
-# External editor support
-'edit-externally' => "Modifiché st'archivi con un programa estern",
-'edit-externally-help' => "(Lese [https://www.mediawiki.org/wiki/Manual:External_editors j'anstrussion d'anstalassion] për avèj pì d'anformassion)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tute',
 'namespacesall' => 'tùit',
 'monthsall' => 'tuti',
-'limitall' => 'tùit',
 
 # Email address confirmation
 'confirmemail' => "Confermé l'adrëssa postal",
@@ -3525,7 +3493,6 @@ Che a controla l'adrëssa che a l'ha dane, mai che a-i fusso dij caràter nen v
 'confirmemail_needlogin' => 'A venta $1 për confermé soa adrëssa ëd pòsta eletrònica.',
 'confirmemail_success' => "Soa adrëssa a l'é stàita confermà, adess a peul [[Special:UserLogin|rintré ant ël sistema]] e i-j auguroma da fessla bin ant la wiki!",
 'confirmemail_loggedin' => "Motobin mersì. Soa adrëssa ëd pòsta eletrònica adess a l'é confermà.",
-'confirmemail_error' => "Cheicòs a l'é andà mal ën salvand soa conferma.",
 'confirmemail_subject' => "Conferma dl'adrëssa postal da 'nt la {{SITENAME}}",
 'confirmemail_body' => "Cheidun, a l'é belfé che a sia stàit pròpe chiel, da 'nt l'adrëssa IP $1,
 a l'ha duvertà un cont utent «$2» ansima a {{SITENAME}}, lassand-ne st'adrëssa ëd pòsta eletrònica-sì.
@@ -3604,6 +3571,11 @@ Për piasì, che an conferma che da bon a veul torna creélo.",
 'imgmultigo' => 'Andé!',
 'imgmultigoto' => 'Andé a la pàgina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(lenga predefinìa)',
+'img-lang-info' => 'Rende costa plancia an $1. $2',
+'img-lang-go' => 'Andé',
+
 # Table pager
 'ascending_abbrev' => 'a chërse',
 'descending_abbrev' => 'a calé',
@@ -3701,8 +3673,18 @@ As peul ëdcò [[Special:EditWatchlist|dovré l'editor sòlit]].",
 '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-version' => '($1)',
+'version-license' => 'Licensa MediaWiki',
+'version-ext-license' => 'Licensa',
+'version-ext-colheader-name' => 'Estension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licensa',
+'version-ext-colheader-description' => 'Descrission',
+'version-ext-colheader-credits' => 'Autor',
+'version-license-title' => 'Licensa për $1',
+'version-license-not-found' => "Gnu-a anformassion detajà ëd la licensa a l'é stàita trovà për costa estension.",
+'version-credits-title' => 'Arconossiment për $1',
+'version-credits-not-found' => "Gnun-a anformassion detajà d'arconossiment a l'é stàita trovà për costa estension.",
 'version-poweredby-credits' => "Costa wiki-sì a marcia grassie a '''[https://www.mediawiki.org/ MediaWiki]''', licensa © 2001-$1 $2.",
 'version-poweredby-others' => 'àutri',
 'version-poweredby-translators' => 'tradutor ëd translatewiki.net',
@@ -3721,13 +3703,14 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath Senté d\'artìcol]',
 
 # Special:Redirect
-'redirect' => 'Ridirigiù da archivi, utent o ID ëd revision',
+'redirect' => 'Ridirigiù da archivi, utent, pàgina o ID ëd revision',
 'redirect-legend' => "Ridirige a n'archivi o na pàgina",
-'redirect-summary' => "Costa pàgina special a ponta a n'archivi (dàit ël nòm dl'archivi), na pàgina (dàita n'ID a la revision) o na pàgina d'utent (dàit n'identificativ numérich a l'utent). Usagi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Costa pàgina special a ponta a n'archivi (dàit ël nòm dl'archivi), na pàgina (dàit n'ID ëd revision o n'ID ëd pàgina) o na pàgina d'utent (dàit n'identificativ numérich a l'utent). Usagi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], o [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Andé',
 'redirect-lookup' => 'Arserca:',
 'redirect-value' => 'Valor:',
 'redirect-user' => "ID dl'utent",
+'redirect-page' => 'Identificativ ëd la pàgina',
 'redirect-revision' => 'Revision ëd la pàgina',
 'redirect-file' => "Nòm ëd l'archivi",
 'redirect-not-exists' => 'Valor nen trovà',
@@ -3794,7 +3777,6 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
 
 # Special:ComparePages
 'comparepages' => 'Confronté dle pàgine',
-'compare-selector' => 'Confronté le revision dle pàgine',
 'compare-page1' => 'Pàgina 1',
 'compare-page2' => 'Pàgina 2',
 'compare-rev1' => 'Revision 1',
@@ -3922,6 +3904,7 @@ Dësnò, a peul dovré ël formolari semplificà sì-sota. Sò coment a sarà gi
 'api-error-overwrite' => "Dzorascrive ansima a n'archivi esistent a l'é nen përmëttù.",
 'api-error-stashfailed' => "Eror antern: ël servent a l'ha pa podù memorisé l'archivi a temp.",
 'api-error-publishfailed' => "Eror antern: Ël servent a l'ha pa podù publiché l'archivi provisòri.",
+'api-error-stasherror' => "A-i é staje n'eror durant ël cariament dl'archivi da stërmé.",
 'api-error-timeout' => "Ël servent a l'ha pa rëspondù ant ël temp ëspetà.",
 'api-error-unclassified' => "A l'é capitaje n'eror nen conossù.",
 'api-error-unknown-code' => 'Eror sconossù: «$1».',
@@ -3971,10 +3954,14 @@ An efet, a espand praticament tut lòn ch'a-i é antrames dle grafe dobie.",
 'expand_templates_input' => 'Test da analisé:',
 'expand_templates_output' => 'Arzultà',
 'expand_templates_xml_output' => 'Output an XML',
+'expand_templates_html_output' => 'Surtìa an HTML sempi',
 'expand_templates_ok' => 'Bin parèj',
 'expand_templates_remove_comments' => 'Gava via ij coment',
 'expand_templates_remove_nowiki' => "Gava ij tag <nowiki> ant l'arzultà",
 'expand_templates_generate_xml' => "Mosta l'erbo ëd parse XML",
+'expand_templates_generate_rawhtml' => "Smon-e l'HTML sempi",
 'expand_templates_preview' => 'Preuva',
 
+# Unknown messages
+'uploadinvalidxml' => "L'XML ant l'archivi carià a l'ha nen podù esse analisà.",
 );
index 6dc3836..a8b2ffb 100644 (file)
@@ -43,7 +43,6 @@ $messages = array(
 'tog-minordefault' => 'ساریاں تبدیلیاں نوں نکا ڈیفالٹ نال دسو۔',
 'tog-previewontop' => 'ایڈٹ باکس توں پہلے پریویو وکھاؤ',
 'tog-previewonfirst' => 'پہلی تبدیلی تے پریویو وکھاؤ',
-'tog-nocache' => 'براؤزر چ صفحے دی کیشنگ روک دیو',
 'tog-enotifwatchlistpages' => 'اگر میری اکھ تھلیاں صفحیاں چوں کسے چ تبدیلی ہوۓ، تے مینوں ای میل کر دیو',
 'tog-enotifusertalkpages' => 'اگر میرے گلاں باتاں آلے صفحے چ کوئی تبدیلی کرے، تے مینوں ای میل کر دیو',
 'tog-enotifminoredits' => 'صفحیاں چ چھوٹیاں موٹیاں تبدیلیاں تے وی مینوں ای میل کر دیو',
@@ -164,7 +163,6 @@ $messages = array(
 'qbedit' => 'لکھو',
 'qbpageoptions' => 'اے صفہ',
 'qbmyoptions' => 'میرے صفے',
-'qbspecialpages' => 'خاص صفے',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -362,9 +360,6 @@ $messages = array(
 'perfcachedts' => 'تھلے دتا گیا ڈیٹا کاشیڈ اے تے  $1 نوں نواں کیتا گیا۔ زیادہ توں زیادہ {{PLURAL:$4|اک نتیجہ ہووے|$4 نتیجے ہوون}} نتیجے کاشے چ ہیگے نیں .',
 'querypage-no-updates' => 'اس صفحے نوں اپڈیٹ فلحال نئیں کیتا جا سکدا۔
 ایدا مال ہلے نواں نئیں کیتا جاۓ گا۔',
-'wrong_wfQuery_params' => 'غلط پیرامیٹرز وفکویریدے()<br />
-فنکشن: $1<br />
-کویری: $2',
 'viewsource' => 'ویکھو',
 'viewsource-title' => '$1 لئی سورس ویکھو',
 'actionthrottled' => 'اے کم کئی واری کیتا گیا اے',
@@ -489,7 +484,7 @@ Note that some pages may continue to be displayed as if you were still logged in
 'user-mail-no-addy' => 'ای-میل پتے بنا ای-میل کلن دی کوشش۔',
 
 # Change password dialog
-'resetpass' => 'کنجی بدلو',
+'changepassword' => 'کنجی بدلو',
 'resetpass_announce' => 'تسی اک کچے ای-میل کود تے لاگ ان ہوگۓ او۔
 لاگ ان مکان لئی تھوانوں ایتھے اک نویں کنجی بنانی پوے گی:',
 'resetpass_header' => 'کھاتے دی کنجی بدلو',
@@ -832,10 +827,6 @@ $3 نے ''$2'' وجہ دسی اے۔",
 'revdelete-nooldid-title' => 'ناں منی جان والی تارگٹ ریوین',
 'revdelete-nooldid-text' => 'تساں یا تے اک تارگٹ دی ریوین نئیں دسی ایس کم نوں کرن لئی،
 خاص ریوین ہے نئیں، یا فیر تسیں ہن دی تبدیلی نوں لکارۓ او۔',
-'revdelete-nologtype-title' => 'لاگ ٹائپ نئیں دسی گئی۔',
-'revdelete-nologtype-text' => 'ایہ کم کرن لئی تساں لاگ ٹائپ نئیں دسی۔',
-'revdelete-nologid-title' => 'ناں منی جان والی لاگ انٹری',
-'revdelete-nologid-text' => 'تساں یا تے اک خاص تارگٹ لاگ ایوینٹ دسیا ایس کم نوں کرن لئی یا خاص انٹری ہے ای نئیں',
 'revdelete-no-file' => 'فائل جیہڑی کئی گئی اے ہے ای نئیں۔',
 'revdelete-show-file-confirm' => 'تساں نوں کیا پک اے جے تسیں فائل "<nowiki>$1</nowiki>" دی مٹائی ریوین  $2 توں $3 تک؟',
 'revdelete-show-file-submit' => 'ہاں',
@@ -869,8 +860,6 @@ $1",
 'logdelete-failure' => "'''لاک وکھالہ ویکھیا نئیں جاسکدا:'''
 $1",
 'revdel-restore' => 'وکھالا بدلو',
-'revdel-restore-deleted' => 'مٹائیاں ریویناں',
-'revdel-restore-visible' => 'دسدیاں ریویناں',
 'pagehist' => 'صفحے دی تریخ',
 'deletedhist' => 'مٹائی گئی تریخ',
 'revdelete-hide-current' => 'آئیٹم نوں $2 تے $1 تریخاں چ لکان چ غلطی۔
@@ -940,12 +929,8 @@ $1",
 # Search results
 'searchresults' => 'کھوج دا نتارا',
 'searchresults-title' => '"$1" دے کھوج نتارے',
-'searchresulttext' => 'وکیپیڈیا چ کھوجن دے بارے چ ہور معلومات آستے کھوجن دا صفحہ ویکھو',
-'searchsubtitle' => "تواڈی لفظ '''[[:$1]] آستے کھوج",
-'searchsubtitleinvalid' => "'''$1''' آستے کھوج کیتی",
 'toomanymatches' => 'چوکھے سارے رلدے جوڑے سامنے آے نیں، اک ہور کھوج دی کوشش کرو۔',
 'titlematches' => 'صفے دا سرناواں رلدا اے',
-'notitlematches' => 'اے لفظ کسی صفحے دے ناں چ نئیں اے۔',
 'textmatches' => 'صفہ لکھت رلدا',
 'notextmatches' => 'کوئی صفح نئیں لبیا',
 'prevn' => 'پہلا {{PLURAL:$1|$1}}',
@@ -954,10 +939,8 @@ $1",
 'nextn-title' => 'اگلے $1 {{PLURAL:$1|نتیجے}}',
 'shown-title' => 'وکھاؤ $1 {{PLURAL:$1|نتیجے}}',
 'viewprevnext' => 'ویکھو ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'چنوتیاں کھوجو',
 'searchmenu-exists' => "'''ایس وکی تے \"[[:\$1]]\" ناں دا صفہ ہے۔.'''",
 'searchmenu-new' => "'''ایس وکی تے \"[[:\$1]]\" بناؤ'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ایس پریفکس نال صفے کھوجو]]',
 'searchprofile-articles' => 'لسٹ صفے',
 'searchprofile-project' => 'مدد تے ویونت صفے',
 'searchprofile-images' => 'ملٹیمیڈیا',
@@ -978,21 +961,16 @@ $1",
 'search-interwiki-default' => '$1 نتارے:',
 'search-interwiki-more' => '(اور)',
 'search-relatedarticle' => 'جڑیاں',
-'mwsuggest-disable' => 'اجاکس مشورے نکارہ کرو',
 'searcheverything-enable' => 'ہر ناں چ لبو',
 'searchrelated' => 'جڑیا',
 'searchall' => 'سارے',
 'showingresults' => "تھلیوں دسے گۓ  {{PLURAL:$1|'''1''' نتیجہ|'''$1''' نتیجے}}  شروع #'''$2'''.",
 'showingresultsnum' => "تھلے دسدا اے {{PLURAL:$3|'''1''' نتیجہ|'''$3''' نتیجے}} #'''$2''' توں ٹرن والے۔",
 'showingresultsheader' => "{{PLURAL:$5|نتیجہ '''$1''' دا '''$3'''|نتیجے '''$1 - $2''' دے '''$3'''}} لئی '''$4'''",
-'nonefound' => "'''صفحیاں دے ناں ڈیفالٹ تے کھوجے جاندے نیں'''
-اپنے لفظ توں پہلاں ''all:'' لا کے کھوجو۔ اس نال گلاں باتاں آلے صفحے، سچے وغیرہ سب چ تواڈا لفظ کھوجیا جاۓ گل۔",
 'search-nonefound' => 'سوال نال رلدے کوئی نتارے نئیں سن۔',
-'powersearch' => 'ودیا کھوج',
 'powersearch-legend' => 'ہور کھوج',
 'powersearch-ns' => 'ناں الیاں جگہاں چ لبو:',
 'powersearch-redir' => 'ریڈائریکٹس دی لسٹ وکھاؤ',
-'powersearch-field' => 'لئی کھوج',
 'powersearch-togglelabel' => 'ویکھو:',
 'powersearch-toggleall' => 'سارے',
 'powersearch-togglenone' => 'کوئی نئیں',
@@ -1005,7 +983,6 @@ $1",
 'preferences' => 'تانگاں',
 'mypreferences' => 'میریاں تانگاں',
 'prefs-edits' => 'تبدیلیاں دی گنتی:',
-'changepassword' => 'کنجی بدلو',
 'prefs-skin' => 'چھاڑ',
 'skin-preview' => 'کچا کم',
 'datedefault' => 'خاص پسند نئیں',
@@ -1027,13 +1004,11 @@ $1",
 'prefs-email' => 'ای-میل چنوتیاں',
 'prefs-rendering' => 'وکھالہ',
 'saveprefs' => 'بچاؤ',
-'resetprefs' => 'ناں بچائیاں ہویاں تبدیلیاں مکاؤ',
 'restoreprefs' => 'ڈیفالٹ سیٹنگز دوبارہ لیاؤ',
 'prefs-editing' => 'لکھائی',
 'rows' => 'قطار:',
 'columns' => 'کالم:',
 'searchresultshead' => 'کھوج',
-'resultsperpage' => 'ہر صفے ویکھیا گیا:',
 'stub-threshold' => 'بوآ <a href="#" class="stub">stub link</a> formatting (bytes): لئی',
 'stub-threshold-disabled' => 'ناکارہ',
 'recentchangesdays' => 'نیڑے دیاں ہویاں تبدیلیاں چ دن دسو:',
@@ -1045,7 +1020,6 @@ $1",
 'localtime' => 'مقامی ویلا:',
 'timezoneuseserverdefault' => 'وکی ڈیفالٹ ($1) ورتو۔',
 'timezoneuseoffset' => 'دوجے (آفسٹ دسو)',
-'timezoneoffset' => 'آفسیٹ:',
 'servertime' => 'سرور دا ویلا:',
 'guesstimezone' => 'براؤزر توں پعرو۔',
 'timezoneregion-africa' => 'افریقہ',
@@ -1281,7 +1255,6 @@ $1",
 'recentchanges-label-minor' => 'اے اک چھوٹی تبدیلی اے۔',
 'recentchanges-label-bot' => 'ایس تبدیلی نوں بوٹ نے کیتا اے۔',
 'recentchanges-label-unpatrolled' => 'ایس تبدیلی تے ہلے گشت نئیں ہوئی۔',
-'rcnote' => "تھلے $5،$4 تک {{PLURAL:$2|آخری '''$2''' دناں دی }} {{PLURAL:$1|'''$1''' تبدیلیاں نیں}}۔",
 'rcnotefrom' => "ہلے تک '''$2''' توں '''$1''' تبدیلیاں تھلے دتیاں گئیاں نیں۔",
 'rclistfrom' => '$1 توں ہونے آلیاں نویاں تبدیلیاں وکھاؤ',
 'rcshowhideminor' => '$1 معمولی تبدیلیاں',
@@ -1745,10 +1718,8 @@ $1",
 'protectedpages' => 'بچاۓ گۓ صفے',
 'protectedpages-indef' => 'صرف انڈیفینٹ بچاؤ',
 'protectedpages-cascade' => 'کیسکیڈنگ بچاؤ صرف',
-'protectedpagestext' => 'تھلے دتے کے صفے ہٹان یا تبدیلی تون بچاۓ گے نیں۔',
 'protectedpagesempty' => 'ایناں ولگناں نال کوئی صفے نئیں بچاۓ گۓ۔',
 'protectedtitles' => 'بچاۓ ہوۓ صفحے',
-'protectedtitlestext' => 'تھلے دتے گۓ سرناویں بنان توں بچاۓ گۓ نیں۔',
 'protectedtitlesempty' => 'ایناں ولگناں نال کوئی سرناویں نئیں بچاۓ گۓ۔',
 'listusers' => 'ورتن والیاں دے ناں',
 'listusers-editsonly' => 'تبدیلیاں کرن والے ورتن والے ای دسو۔',
@@ -1798,9 +1769,6 @@ $1",
 'allpagesto' => 'اس تے ختم ہون آلے صفحے وکھاؤ:',
 'allarticles' => 'سارے صفے',
 'allinnamespace' => 'سارے صفے ($1 ناں)',
-'allnotinnamespace' => 'سارے صفے ($1 ناں چ نئیں)',
-'allpagesprev' => 'پچھلا',
-'allpagesnext' => 'اگلا',
 'allpagessubmit' => 'چلو',
 'allpagesprefix' => 'اگیتر نال صفے وکھاؤ:',
 'allpagesbadtitle' => 'دتا گیا سرناواں کم نئیں کردا یا ایدے ناں انٹر لینگويج یا انٹر وکی پریفکس لگیا اے۔
@@ -2128,7 +2096,6 @@ $2 نے آخری ریوین تک واپس کیتا۔',
 'undeletebtn' => 'بحال کرو',
 'undeletelink' => 'ویکھو/بحال کرو',
 'undeleteviewlink' => 'وکھالہ',
-'undeletereset' => 'پہلی حالت تے لے آؤ',
 'undeleteinvert' => 'وچوں چناؤ',
 'undeletecomment' => 'وجہ',
 'undeletedrevisions' => '{{PLURAL:$1|1 ریوین|$1 ریویناں}} واپس',
@@ -2217,14 +2184,12 @@ $1',
 'block' => 'ورتن آلے نوں روکو',
 'unblock' => 'ورتن آلے تے روک بند کرو',
 'blockip' => 'اس ورتن والے نو روکو',
-'blockip-title' => 'ورتن آلے نوں روکو',
 'blockip-legend' => 'ورتن آلے نوں روکو',
 'blockiptext' => 'تھلے دتا گیا فارم ورتو کسے خاص آئی پی پتے یا ورتن ناں  نوں لکھن روک لئی۔ ایہ صرف ونڈالزم توں بچن لئی اے، تے [[{{MediaWiki:Policy-url}}|policy]] دے نال اے۔ 
 تھلے خاص وجہاں دسو (ادھارن لئی خاص صفیاں دی دس دیو جیہڑے خراب کیتے گۓ۔)',
 'ipadressorusername' => 'آئی پی پتہ یا ورتن آلے دا ناں:',
 'ipbexpiry' => 'انت:',
 'ipbreason' => 'وجہ:',
-'ipbreasonotherlist' => 'ہور وجہ',
 'ipbreason-dropdown' => '*روکن دیاں عام وجہاں
 ** غلط جانکاری دینا
 ** صفیاں توں مواد مٹانا
@@ -2240,8 +2205,6 @@ $1',
 'ipbsubmit' => 'اس ورتن آلے نوں روکو',
 'ipbother' => 'دوجے ویلے:',
 'ipboptions' => 'دو کینٹے: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',
-'ipbotheroption' => 'دوجا',
-'ipbotherreason' => 'دوجیاں ہور وجہ:',
 'ipbhidename' => 'ورتن ناں نوں تبدیلیاں تے لسٹاں توں بچاؤ',
 'ipbwatchuser' => 'ایس ورتن والے دے ورتن تے گل بات صفے تے اکھ رکھو۔',
 'ipb-disableusertalk' => 'ایس ورتن والے نوں جدوں تک ایدے تے روک اے اپنے گلبات صفے چ تبدیلی کرن توں روکو',
@@ -2332,7 +2295,6 @@ $1',
 'sorbsreason' => 'تیرا آئی پی پتہ اک کھلی پراکسی وانگوں دتا گیا اے ڈی این ایس بی ایل چ {{سائیٹناں}} نے۔',
 'sorbs_create_account_reason' => 'تواڈا پتہ اک کھلا پراکسی لسٹ چ اے ڈی این ایس بی ایل نال {{سائیٹناں}} چ۔
 تسیں اک کھاتہ نئیں کھول سکدے۔',
-'cant-block-while-blocked' => 'جدوں تواڈے تے روک لگی ہووے تے تسیں دوجیاں تے روک نئیں لاسکدے۔',
 'cant-see-hidden-user' => 'جس ورتن والے تے تسیں روک لارۓ اوہ اوہ پہلے روکیا جا چکیا اے تے لکیا اے۔
 کیوں جے تواڈے کول لکن ورتن والے دے ح‌ نئیں  تسیں ورتن والے دے روک ناں ویکھ سکدے او ناں بدل سکدے او۔',
 'ipbblocked' => 'تسیں دوجے ورتن والیاں تے ناں ای روک لا سکدے اوہ تے ناں ای دوجیاں دی روک کھول سکدے او، کیوں جے تسیں آپ ای روکے ہووے اوہ۔',
@@ -2388,7 +2350,6 @@ $1',
 ایوجیاں مسئلیاں چ توانوں دوویں صفحیاں نوں آپے ہی ملانے ہوۓ گا اگر تسی چاندے او۔",
 'movearticle' => 'صفحہ لے چلو:',
 'moveuserpage-warning' => "'''خبردار''' تسیں اک ورتن صفہ ہلا رۓ اوہ۔ مہربانی کرکے اے گل یادرکھو جے صفہ ہلایا جائیگا تے ورتن والے دا ناں نئیں بدلیا جائیگا۔",
-'movenologin' => 'لاگ ان نئیں ہوۓ او',
 'movenologintext' => 'تواڈا لازمی رجسٹرڈ ورتنوالا ہونا چائیدا اے [[Special:UserLogin|لاگڈان]] صفے نوں ہلان لئی۔',
 'movenotallowed' => 'تواڈے کول صفحے لے چلن دی اجازت نئیں اے۔',
 'movenotallowedfile' => 'تواڈے کول صفحے لے چلن دی اجازت نئیں اے۔',
@@ -2404,8 +2365,6 @@ $1',
 'articleexists' => 'اس ناں دا صفحہ یا تے پہلاں توں ہی موجود اے یا فیر جیڑا ناں تسی چنیا اے درست نہیں۔<br />
 کوئی دوجا ناں چنو۔',
 'cantmove-titleprotected' => 'تسیں ایتھے صفہ نئیں لیا سکدے، کیوں جے نواں سرناواں بنان توں بچا دتا گیا اے۔',
-'talkexists' => "'''اے صفحہ کامیابی دے نال ے جایا گیا مگر ایدا گلاں باتاں آلا صفحہ رنہیں لے جایا جا سکدا کیونکہ اک نیا اسی ناں نال موجود اے۔ ایناں نوں ہتھ نال ملا دیو۔'''",
-'movedto' => 'لے جایا گیا',
 'movetalk' => 'تبدیلی نال جڑیاں گلاں باتاں والا صفحہ',
 'move-subpages' => 'نکے صفیاں نوں نوں لے چلو ($1 تک)',
 'move-talk-subpages' => 'گل بات صفے دے نکے صفے لے چلو ($1 تک)',
@@ -3156,15 +3115,10 @@ $1',
 'exif-urgency-high' => 'اچا ($1)',
 'exif-urgency-other' => '($1)  ورتن ڈیفائینڈ پراورٹی',
 
-# External editor support
-'edit-externally' => 'بارلا سافٹ ویئر استعال کردے ہوۓ اے فائل لکھو',
-'edit-externally-help' => 'زیادہ معلومات آسطے اے [https://www.mediawiki.org/wiki/Manual:External_editors] ویکھو۔',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'سارے',
 'namespacesall' => 'سارے',
 'monthsall' => 'سارے',
-'limitall' => 'سارے',
 
 # Email address confirmation
 'confirmemail' => 'ای میل پتہ پکا کرو',
@@ -3187,7 +3141,6 @@ $1',
 'confirmemail_success' => 'تھواڈا ای-میل پتہ پکا ہوچکیا اے۔
 تسی ہن [[Special:UserLogin|لاگان]] ہوسکدے اے تے وکی دے مزے کن سکدے او۔',
 'confirmemail_loggedin' => 'تھواڈا ای-میل پتہ ہن پکا ہوچکیا اے۔',
-'confirmemail_error' => 'تھواڈی کنفرمیشن نوں بچاندیاں ہویاں کوئی چیز غلط ہوگئی اے۔',
 'confirmemail_subject' => '{{SITENAME}} ای-میل پتہ کنفرمیشن',
 'confirmemail_body' => 'کسے نیں خبرے تساں ای آئی پی پتے $1 توں،
 اک کھاتہ  "$2" ایس ای میل پتے نال  {{SITENAME}}   تے بنایا اے۔
@@ -3411,7 +3364,6 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 
 # Special:ComparePages
 'comparepages' => 'صفے سامنے کرو',
-'compare-selector' => 'صفیاں تے دوبارہ ویکھ دیکھو',
 'compare-page1' => 'صفہ 1',
 'compare-page2' => 'صفہ 2',
 'compare-rev1' => 'دوبارہ وکھالہ 1',
index 12dc82c..1a9aa80 100644 (file)
@@ -161,7 +161,6 @@ $messages = array(
 'qbedit' => 'Άλλαξον',
 'qbpageoptions' => 'Ατή η σελίδαν',
 'qbmyoptions' => "Τ' εμά τα σελίδας",
-'qbspecialpages' => 'Ειδικά σελίδας',
 'faq' => 'Πολλά ερωτήσεις (FAQ)',
 'faqpage' => 'Project:Πολλά ερωτήσεις (FAQ)',
 
@@ -404,7 +403,7 @@ $messages = array(
 'loginlanguagelabel' => 'Γλώσσαν: $1',
 
 # Change password dialog
-'resetpass' => 'Νέον σημάδιν',
+'changepassword' => 'Άλλαξον σημάδιν',
 'resetpass_header' => "Άλλαξον σημάδ'",
 'oldpassword' => 'Παλαιόν σημάδιν:',
 'newpassword' => 'Καινούρεον σημάδιν:',
@@ -582,10 +581,6 @@ $messages = array(
 # 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'''",
-'notitlematches' => "Κανέναν όνομαν σελίδας 'κ ταιριάζ",
 'notextmatches' => "Κανέναν γράψιμον 'κ ταιριάζ",
 'prevn' => '{{PLURAL:$1|$1}} προηγουμένων',
 'nextn' => '{{PLURAL:$1|$1}} επομένων',
@@ -600,12 +595,9 @@ $messages = array(
 'search-interwiki-default' => '$1 αποτελέσματα:',
 'search-interwiki-more' => '(πλέα)',
 'searchall' => 'ούλαι',
-'nonefound' => "'''Σημείωση:''' Κανονικά ολίγα περιοχάς ονοματίων αραεύκουνταν μαναχόν. Βαλέστεν ''all:'' ασην λέξην εμπροστά για ίνεται το αράεμαν σ'όλεα τα σελίδας (και σελίδας καλατσεματί, πρότυπα κλπ.) ή βαλέστεν ους πρόθεμαν την περιοχήν ονοματίων π'θέλετε για να αραεύετε εκαικά.",
-'powersearch' => 'Αναλυτικόν αράεμαν',
 'powersearch-legend' => 'Αναλυτικόν αράεμαν',
 'powersearch-ns' => "Αράεμαν σα τόπε τ' ονοματίων:",
 'powersearch-redir' => 'Κατάλογον με διπλά συνδέσμ',
-'powersearch-field' => 'Αράεμαν τη',
 'powersearch-toggleall' => 'Όλια',
 'powersearch-togglenone' => 'Τιδέν',
 'search-external' => 'Εύρον σα εξ μερέαν',
@@ -613,7 +605,6 @@ $messages = array(
 # Preferences page
 'preferences' => 'Αγαπεμένα',
 'mypreferences' => "Τ' εμά τ' αγαπεμένα",
-'changepassword' => 'Άλλαξον σημάδιν',
 'prefs-skin' => 'Όψην',
 'skin-preview' => 'Πρώτον τέρεμαν',
 'prefs-datetime' => 'Ημερομηνίαν και ώραν',
@@ -624,7 +615,6 @@ $messages = array(
 'searchresultshead' => 'Εύρον',
 'timezonelegend' => 'Χρονικόν ζώνην:',
 'localtime' => 'Τοπικόν χρόνον:',
-'timezoneoffset' => 'Διαφοράν ωρίων¹:',
 'timezoneregion-africa' => 'Αφρικήν',
 'timezoneregion-america' => 'Αμερικήν',
 'timezoneregion-antarctica' => 'Ανταρκτικήν',
@@ -717,7 +707,6 @@ $messages = array(
 'recentchanges' => 'Υστερνά αλλαγάς',
 'recentchanges-legend' => 'Επιλογάς υστερνιδίων αλλαγίων',
 'recentchanges-feed-description' => "Τ' ασ' όλεα καινούρεα αλλαγάς τη wiki ωρία σ' αβούτεν την περίληψην.",
-'rcnote' => "Αφκά {{PLURAL:$1|έχ' '''1''' αλλαγήν|έχ' τα '''$1''' τελευταία αλλαγάς}} τη {{PLURAL:$2|τελευταίας ημέρας|τελευταίων '''$2''' ημερίων}}, σα $5, $4.",
 'rcnotefrom' => "Αφκά καικά ευρίουνταν τ' αλλαγάς ασό <b>$2</b> (εμφάνιση <b>$1</b> αλλαγίων max).",
 'rclistfrom' => "Δείξον τ' αλλαγάς ασα $1 μαναχόν",
 'rcshowhideminor' => '$1 τα μικρά αλλαγάς',
@@ -911,8 +900,6 @@ $messages = array(
 'allpagesfrom' => "Τέρεμαν σελιδίων ντ' εσκαλών'νε ασό:",
 'allpagesto' => "Δείξον τα σελίδας π' τελειών'νε σε:",
 'allarticles' => 'Όλεα τα σελίδας',
-'allpagesprev' => 'Προτεσνά',
-'allpagesnext' => 'Επόμενα',
 'allpagessubmit' => 'Δέβα',
 'allpagesprefix' => 'Τέρεμαν σελιδίων με πρόθεμαν:',
 
@@ -1080,12 +1067,9 @@ $messages = array(
 'blockip-legend' => 'Ασπάλισον το χρήστ',
 'ipbexpiry' => 'Τέλεμαν:',
 'ipbreason' => 'Αιτία:',
-'ipbreasonotherlist' => 'Άλλον αιτία',
 'ipbsubmit' => 'Ασπάλισον τον χρήστεν',
 'ipbother' => 'Άλλον ώρα:',
 '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',
-'ipbotheroption' => "άλλ'",
-'ipbotherreason' => 'Άλλον/κιάλλον αιτία:',
 'badipaddress' => 'Άχρηστον IP',
 'blockipsuccesssub' => "Τ' ασπάλιγμαν εγέντον",
 'ipb-edit-dropdown' => 'Άλλαξον αιτίας ασπαλιγματί',
@@ -1144,9 +1128,6 @@ $messages = array(
 'articleexists' => 'Σελίδαν με αΐκον όνεμαν υπάρχει.
 Βαλέστεν άλλο όνεμαν.',
 'cantmove-titleprotected' => "'Κ επορείτε ν' εφτάτε σελίδαν με τ' αβούτον τ' όνεμαν επειδή εσπάλισανατο.",
-'talkexists' => "'''Η σελίδαν ετερχλαεύτεν, άμαν η σελίδαν καλατσεματί επέμνεν επειδή σο καινούρεον τίτλον έχ' άλλον σελίδα.
-Ποισέστεν τα έναν.'''",
-'movedto' => 'ετεροχλαεύτεν σο',
 'movetalk' => 'Ετεροχλάεμαν τη σελίδας καλατσεματί',
 'movelogpage' => 'Αρχείον ετεροχλαεματί',
 'movereason' => 'Λόγον:',
@@ -1344,10 +1325,6 @@ $messages = array(
 'exif-gpsspeed-m' => 'Μίλιαν την ώραν',
 'exif-gpsspeed-n' => 'Κορδίλαι',
 
-# External editor support
-'edit-externally' => "Αλλαγήν τ' αρχείου με προγράμματα ασα εξ μερέα",
-'edit-externally-help' => '(Τερέστεν τα [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] και θα ευρίετε κι άλλα πληροφορίας)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ούλαι',
 'namespacesall' => 'ούλαι',
index d9db050..65a4bde 100644 (file)
@@ -35,7 +35,6 @@ $messages = array(
 'tog-minordefault' => 'Ebzentlis auprestaminai wissans kitawidīnsnans kāigi malkans',
 'tog-previewontop' => 'Waidinnais pirmādiran pirzdau redigīsnas laūkan',
 'tog-previewonfirst' => 'Waidinnais pirmādiran prei pirman redigīsenin',
-'tog-nocache' => 'Izklaūjais rānkas minīsnan',
 'tog-enotifwatchlistpages' => 'Tenginnais mi e-mail, ik pāusan iz majjan listin stēisan nadirītan ast kitawīdintan',
 'tog-enotifusertalkpages' => 'Iztenginnais mi e-mail, ik majjan diskusiōnis pāusan wīrst būwun kitawīdintan',
 'tog-enotifminoredits' => 'Tenginnais mi e-mail dīgi kaddan kitawīdinsnas as malkan',
@@ -150,7 +149,6 @@ Pāusai en kategōrijai "$1"',
 'qbedit' => 'Redigīs',
 'qbpageoptions' => 'Šin pāusan',
 'qbmyoptions' => 'Majāi pāusai',
-'qbspecialpages' => 'Speciālai pāusai',
 'faq' => 'Ukadeznai prasīsenei',
 'faqpage' => 'Project:Ukadeznai prasīsenei',
 
@@ -330,9 +328,6 @@ Mazīngi, kāi pastāi jāu āupausintan pra ainuntan kittan.',
 'perfcached' => 'Šin dātan ast rānkas minīsnas kōpija be mazzi būtwei niaktuālin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Šin dātan ast rānkas minīsnas kōpija. Panzdaums ernaunīnsenis bēi en $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Šisse pāusan etnaunīnsna tēntiskai ast izklāutan. Sēnti stwi dātan ni wīrst pastāwun etnaunīntan.',
-'wrong_wfQuery_params' => 'Nitikrōmiskai parāmeterei perlaīstan wfQuery()<br />
-Funkciōni: $1<br />
-Prasīsenis: $2',
 'viewsource' => 'Wīdais appun',
 'actionthrottled' => 'Dīlasenis stalīntan',
 'protectedpagetext' => 'Redigīsnas mazīngisku per šin pāusan pastāi izklāutan.',
@@ -443,7 +438,7 @@ Gēideis biskin, pirzdau tu wīrst bandāwuns etkūmps.',
 'loginlanguagelabel' => 'Bilā: $1',
 
 # Change password dialog
-'resetpass' => 'Kitawīdinais kliptaswīrdan',
+'changepassword' => 'Kitawīdinais kliptaswīrdan',
 'resetpass_announce' => 'Tū assei engūbuns(si) sen kīsmingiskan kliptaswīrdan gaūtan pra e-mail. Kāi wangīnlai enēisenes prōcesan, ensadinnais nāunan kliptaswīrdan stwi:',
 'resetpass_header' => 'Kitawīdinais kliptaswīrdan per swajjan rekkenan',
 'oldpassword' => 'Wūrs kliptaswīrds',
@@ -685,9 +680,6 @@ Bandais [[Special:Search|laukītun]] sirzdau nāunans pāusans en wiki',
 'revisiondelete' => 'Āupausinais/etgaūneis wersiōnins',
 'revdelete-nooldid-title' => 'Nitikrōmiska wersiōni, kāi izpilninlai šin dīlasenin',
 'revdelete-nooldid-text' => 'Ni etrīnkā di wersiōnins, na kawīdans šis dīlasenis turīlai būtwei izpilnintan, etrīnkta wersiōni ni ekzistijja, anga bandāi di kliptintun bigāntin wersiōnin.',
-'revdelete-nologtype-title' => 'Registeres tīps nisātaui',
-'revdelete-nologtype-text' => 'Ni assei etrīnkuns registeres tīpan kāi izpilninlai šin dīlasenin.',
-'revdelete-nologid-title' => 'Nitikrōmiskas enpeisāsenis en registerin',
 'revdelete-no-file' => 'Etrīnkts zūrbrukis ni ekzistijja.',
 'revdelete-show-file-submit' => 'Jā',
 'revdelete-selected' => "{{PLURAL:$2|Pazentlitā pāusas [[:$1]] wersiōni|Pazentlitas pāusas [[:$1]] wersiōnis}}:'''",
@@ -765,12 +757,8 @@ Nawigaciōnis autengīsenin terpausnā naikinna etrīnksenin en kōlunei.',
 # Search results
 'searchresults' => 'Laukīsnas rezultātai',
 'searchresults-title' => 'Laukīsnas rezultātai per "$1"',
-'searchresulttext' => 'Tūls infōrmaciōnis ezze laukīsnan en {{SITENAME}} tū mazzi aupaltun en [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Rezultātai per prasīsenin '''[[:$1]]''' ([[Special:Prefixindex/$1|pāusai, kawīdai pagaūne si sen „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pāusai, kawīdai autenginna prei „$1”]])",
-'searchsubtitleinvalid' => "Per prasīsenin '''$1'''",
 'toomanymatches' => 'Per tūlin etrāsenei gaūtan, bandais kittan prasīsenin',
 'titlematches' => 'Aupalā di en tītelamans',
-'notitlematches' => 'Ni aupalā di en tītelamans',
 'textmatches' => 'Aupalā di en pāusan ēnturu',
 'notextmatches' => 'Ni aupalā di en pāusan ēnturu',
 'prevn' => '{{PLURAL:$1|pirzdaums|pirzdaumai $1}}',
@@ -779,10 +767,8 @@ Nawigaciōnis autengīsenin terpausnā naikinna etrīnksenin en kōlunei.',
 'nextn-title' => '{{PLURAL:$1|Ripīntin $1 rezultātan|Ripīntei $1 rezultātai}}',
 'shown-title' => 'Waidinnais $1 {{PLURAL:$1|rezultātan|rezultātai}} en pāusu',
 'viewprevnext' => 'Wīdais ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Laukīsnas mazīngiskwas',
 'searchmenu-exists' => "'''Ast pāusan \"[[:\$1]]\" en šissei wikkin''",
 'searchmenu-new' => "'''Teīkeis pāusan \"[[:\$1|\$1]]\" en šissei wikki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pradirēis pāusans sen šin prefiksan]]',
 'searchprofile-project' => 'Pagalbas be prōjaktas pāusai',
 'searchprofile-everything' => 'Wiss',
 'searchprofile-advanced' => 'Ēmpirsin treppun',
@@ -800,20 +786,15 @@ Nawigaciōnis autengīsenin terpausnā naikinna etrīnksenin en kōlunei.',
 'search-interwiki-default' => 'Rezultātai per $1:',
 'search-interwiki-more' => '(tūls)',
 'search-relatedarticle' => 'Ristan',
-'mwsuggest-disable' => 'Izklaūjais AJAX nadāsnans',
 'searcheverything-enable' => 'Laukīs en wisēimans tītelin plattibins',
 'searchrelated' => 'gintawai',
 'searchall' => 'wisāi',
 'showingresults' => "Zemmais ast listi {{PLURAL:$1|sen '''1''' rezultātan|stēisan '''$1''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
 'showingresultsnum' => "Zemmais ast listi {{PLURAL:$3|sen '''1''' rezultātan|stēisan '''$3''' rezultātan}}, pagaūnintei ezze '''$2'''-asmu rezutātan.",
-'nonefound' => "'''Nōda''': Auprestaminai pralaukītan ast tēr ainuntas tītelin plattibis.
-Bandais pagaūtun laukītan frāzin sen prefiksan \"all:\", kāi pralaukīlai pastippan ēnturan stesse {{SITENAME}} (ēmpiri sen diskusiōnis pāusans, šablōnins, be t.t.), anga tērpaus palaipsītan tītelin plattibin kāigi prefiksan.",
 'search-nonefound' => 'Nisatausnā stēisan rezultātan izpilnintan prasīsenes kritērijans.',
-'powersearch' => 'Paplatintā laukīsna',
 'powersearch-legend' => 'Paplatintā laukīsna',
 'powersearch-ns' => 'Laukīs en tītelin plattibimans:',
 'powersearch-redir' => 'Waidinnais prawessenins',
-'powersearch-field' => 'Laukīs',
 'powersearch-toggleall' => 'Wisāi',
 'powersearch-togglenone' => 'Nika',
 'search-external' => 'Izwinaīna laukisnā',
@@ -825,7 +806,6 @@ Pamēnais, kāi tenēisan indicai mazzi ni būtwei aktuālin.',
 'preferences' => 'Pirminiskwas',
 'mypreferences' => 'Majjas pirminiskwas',
 'prefs-edits' => 'Kitawīdinsnan gīrbis:',
-'changepassword' => 'Kitawīdinais kliptaswīrdan',
 'prefs-skin' => 'Prusna',
 'skin-preview' => 'Pirmādira',
 'datedefault' => 'Auprestaminan',
@@ -842,12 +822,10 @@ Pamēnais, kāi tenēisan indicai mazzi ni būtwei aktuālin.',
 'prefs-email' => 'E-mailas mazīngiskwas',
 'prefs-rendering' => 'Prusna',
 'saveprefs' => 'Enpeisāis',
-'resetprefs' => 'Ausadinnais nienpeisātans kitawīdinsnans',
 'restoreprefs' => 'Etwārtai wartinnais wissans auprestaminans pirminiskwans',
 'rows' => 'Rīndas:',
 'columns' => 'Kōlunis:',
 'searchresultshead' => 'Laukīs',
-'resultsperpage' => 'Rezultātan gīrbis en pāusu',
 'stub-threshold' => 'Maksimālin debban stesse pāusan ebzentlitan kāigi <a href="#" class="stub">daīgan (stub)</a>',
 'recentchangesdays' => 'Dēinan gīrbis, waidīnts en panzdaumamans kitawīdinsnans:',
 'recentchangesdays-max' => 'Maksimālai $1 {{PLURAL:$1|deinā|dēinas}}',
@@ -857,7 +835,6 @@ Pamēnais, kāi tenēisan indicai mazzi ni būtwei aktuālin.',
 'localtime' => 'Lōkala kerdā:',
 'timezoneuseserverdefault' => 'Tērpaus auprestaminan sērwerin kērdan',
 'timezoneuseoffset' => 'Kitā (patikrinais šlaitīntan)',
-'timezoneoffset' => 'Šlaitīntan:',
 'servertime' => 'Sērweres kerdā:',
 'guesstimezone' => 'Paimmais iz lasātlin',
 'timezoneregion-africa' => 'Afrika',
@@ -1063,7 +1040,6 @@ Tū mazzi dīgi etrīnktun dātun kitēimans drāugautwei sen tin pra tērpautaj
 'recentchanges-label-bot' => 'Sta ast redigīsenis segītan pra bōtan',
 'recentchanges-label-unpatrolled' => 'Šis redigīsenis ni ast dabber izbandātan',
 'recentchanges-legend-newpage' => '$1 - nāunan pāusan',
-'rcnote' => "Zemmais ast {{PLURAL:$1|'''1''' kitawīdinsna segīta|panzdaumas '''$1''' kitawīdinsnas segītas}} en panzdaumamans {{PLURAL:$2|dēinan|'''$2''' dēinans}}, gīrbawintei ezze $5, $4.",
 'rcnotefrom' => "Zemmais ast kitawīdisnas ezze '''$2''' (ērgi '''$1''' waidīntan).",
 'rclistfrom' => 'Waidinnais nāunans kitawīdinsnans pagaūnintei ezze $1',
 'rcshowhideminor' => '$1 malkas kitawīdisnas',
@@ -1396,10 +1372,8 @@ Teinū tennan prawedda prei [[$2]].',
 'protectedpages' => 'Pakūnstai pāusai',
 'protectedpages-indef' => 'Tēr pāusai pakūnstai per wisaddan',
 'protectedpages-cascade' => 'Tēr pāusai sen weldītan pakūnsenin.',
-'protectedpagestext' => 'Šāi pāusai ast pakūnstan prīki praskajjinsnan anga redigīsnan.',
 'protectedpagesempty' => 'Ni ast tēnti pāusai pakūnstan sen padātans parāmeterins.',
 'protectedtitles' => 'Pakūstai pāusan tītelai',
-'protectedtitlestext' => 'Ripīntei pāusan tītelai ast pakūnstan prīki teīksnan',
 'protectedtitlesempty' => 'Niaīnai tītelai ast tēntiskai pakūnstan sen šins parāmeterins.',
 'listusers' => 'Tērpautajan listi',
 'listusers-editsonly' => 'Waidinnais tēr tērpautajans sen redigīsenins',
@@ -1447,9 +1421,6 @@ Tu mazzi anzitun rezultātans etrīnkantei registeres tīpan, tērpautajas pabil
 'allpagesto' => 'Waidinnais pāusans wangīntans sen:',
 'allarticles' => 'Wisāi pāusai',
 'allinnamespace' => 'Wisāi pāusai (en tītelin plattibei: $1)',
-'allnotinnamespace' => 'Wisāi pāusai (šlāit dins en tītelin plattibei: $1)',
-'allpagesprev' => 'Panzdauman',
-'allpagesnext' => 'Ripīntin',
 'allpagessubmit' => 'Waidinnais',
 'allpagesprefix' => 'Waidinnais pāusans sen tītelins pagaūnintins sen:',
 'allpagesbadtitle' => 'Padāts tītels ast nitikrōmiskan, turri ēn sen sirzdauprōjaktiskan anga sirzdaubilliskan prefiksan. Tennan mazzi dīgi turritun ēn sen aīnan anga tūls zentlins, kawīdan tērpausenis en tītelamans ni ast preiwērptan.',
@@ -1697,7 +1668,6 @@ Tu mazzi turītun wārgan autengīnsnan anga wersiōni pastāi etwārtai wartīn
 'undeletebtn' => 'Etwārtai wartinnais',
 'undeletelink' => 'wīdais/etwārtai wartinnais',
 'undeleteviewlink' => 'wīdais',
-'undeletereset' => 'Etkraūneis',
 'undeleteinvert' => 'Etwartinnais pazentlisenin',
 'undeletecomment' => 'Kumentārs:',
 'undeletedrevisions' => '{{PLURAL:$1|1 wersiōni|$1 wersiōnis}} etwārtai wartīntan',
@@ -1773,7 +1743,6 @@ $1',
 
 # Block/unblock
 'blockip' => 'Blōkis tērpautajan',
-'blockip-title' => 'Blōkis tērpautajan',
 'blockip-legend' => 'Blōkis tērpautajan',
 'blockiptext' => 'Tērpaus zemmaisin fōrmularan, kāi blōkilai enpeisāsenes mazīngiskwan iz kōnkretai IP adressin anga kōnkretasmu tērpautajan.
 Blōkitun prawerru tēr kāi ebsergītun ezze wandalisman be preitarīngi sen [[{{MediaWiki:Policy-url}}|pōlitikin]].
@@ -1781,15 +1750,12 @@ Padāis brewīnslin zemmais (p. endījanei tītelins stēisan wandalizītan pāu
 'ipadressorusername' => 'IP adressi anga tērpautajas pabilisnā:',
 'ipbexpiry' => 'Blōkisenis wanginna:',
 'ipbreason' => 'Brewīnsli:',
-'ipbreasonotherlist' => 'Kitā brewīnsli',
 'ipbcreateaccount' => 'Ebsergēis ezze rekkenas teīkseņu',
 'ipbemailban' => 'Ebsergēis ezze e-mailas tengīnsnas mazīngiskwai',
 'ipbenableautoblock' => 'Blōkis panzdauman šisse tērpautajas IP adressin be autōmatiskai wissans ripīntins, iz kawīdans tāns wīrst bandāwuns redigītun',
 'ipbsubmit' => 'Blōkis šin tērpautajan',
 'ipbother' => 'Kitā kerdā',
 'ipboptions' => '2 stūndis:2 hours, 1 deinā:1 day,3 dēinas:3 days,1 sawaīti:1 week,2 sawaītis:2 weeks,1 mīnss:1 month,3 mīnsei:3 months,6 mīnsei:6 months,1 mettan:1 year,bewangiskai:infinite',
-'ipbotheroption' => 'kits',
-'ipbotherreason' => 'Kitā/papilnimina brewīnsli:',
 'ipbhidename' => 'Kliptinais tērpautajas pabilīsnan en redigīsenimans be listimans',
 'ipbwatchuser' => 'Nadirēis šisse tērpautajas persōniskan pāusan be diskusiōnis pāusan',
 'ipb-change-block' => 'Kitawīdinais blōkisenes ensadīnsenins',
@@ -1857,7 +1823,6 @@ Sta ast, šlāit, blōkitan kāigi delīks stesse $2 ebīmtan, kawīdan mazzi b
 'sorbsreason' => 'Twajā IP adressi ast en listei stēisan open proxy sērwerin en DBSBL, tērpautan pra {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Twajā IP adressi ast en listei stēisan open proxy sērwerin en DBSBL, tērpautan pra {{SITENAME}}.
 Tū ni mazzi teīktun rekkenan',
-'cant-block-while-blocked' => 'Tū ni mazzi blōkitun kittan tērpautajans, kaddan subs assei blōkitan.',
 
 # Developer tools
 'lockdb' => 'Izklaūjais dātanbazin',
@@ -1897,7 +1862,6 @@ madli seīs aušaudīwingi, kāi tū izpresta rīplins pirzdau tū ēilai tālis
 
 En kitēimans prēipalins tū mazzi praskajjintun anga senlaītun pāusan ter rānkiskai.',
 'movearticle' => 'Praskajjinais pāusan:',
-'movenologin' => 'Ni assei engūbun',
 'movenologintext' => 'Tu turri būtwei registrītan be [[Special:UserLogin|engūbun]] kāi praskajjinlai pāusan.',
 'movenotallowed' => 'Tū ni assei enwarīntan, kāi praskajjinlai pāusans.',
 'movenotallowedfile' => 'Tū ni assei enwarīntan, kāi praskajjinlai zūrbrukins.',
@@ -1913,9 +1877,6 @@ En kitēimans prēipalins tū mazzi praskajjintun anga senlaītun pāusan ter r
 'articleexists' => 'Pāusan sēn šin tītelin jāu ast, anga etrīnkts tītels ni ast tikrōmiskan.
 Madli etrīnkais kittan tītelin.',
 'cantmove-titleprotected' => 'Tū ni mazi praskajjintun pāusan, beggi nāuns pāusas tītels pastāi pakūnstan ezze teīksnan',
-'talkexists' => "'''Pāusan pastāi praskajjintan izpalawīngi, adder diskusiōnis pāusan ni mazēi būtwei praskajjintan, beggi diskusiōnis pāusan sen stawīdan tītelin jāu ekzistijja.
-Madli senlajjais tennans rānkiskai.'''",
-'movedto' => 'praskajjintan en',
 'movetalk' => 'Praskajjinais dīgi diskusiōnis pāusan',
 'move-subpages' => 'Praskajjinais pōpausans (ni tūls nikāi $1)',
 'move-talk-subpages' => 'Praskajjinais diskusiōnis pāusas pōpausans (ni tūls nikāi $1)',
@@ -2447,15 +2408,10 @@ Kitāi wīrst būwusis kliptan auprestaminai.
 'exif-gpsdirection-t' => 'Arwis līnkis',
 'exif-gpsdirection-m' => 'Magnetiskas līnkis',
 
-# External editor support
-'edit-externally' => 'Redigīs šin pāusan tērpawintei izwinaīnan prōgraman',
-'edit-externally-help' => '(Skaitāis [https://www.mediawiki.org/wiki/Manual:External_editors instrukciōnins], kāi gaūlai tūls infōrmaciōnins).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'wisāi',
 'namespacesall' => 'wisāi',
 'monthsall' => 'wisāi',
-'limitall' => 'wisāi',
 
 # Email address confirmation
 'confirmemail' => 'Padrūktinais e-mail adressin',
@@ -2480,7 +2436,6 @@ Kōdan mazzi būtwei jāu ni aktuālin.',
 'confirmemail_success' => 'Twajā e-mail adressi pastāi padrūktintan.
 Tu mazzi jāu [[Special:UserLogin|enēitwei]] be tuldītun si sen wiki.',
 'confirmemail_loggedin' => 'Twajā e-mail adressi pastāi padrūktintan.',
-'confirmemail_error' => 'Tikka blāndas prei twāise padrūktinsnas enpeisāsnan.',
 'confirmemail_subject' => '{{SITENAME}} e-mail adressis',
 'confirmemail_invalidated' => 'E-mailas adressis padrūktinsna naikīntan',
 'invalidateemail' => 'Naikinnais e-mail padrūktinsnan',
index cdcd880..a181dac 100644 (file)
@@ -180,7 +180,6 @@ $messages = array(
 'tog-minordefault' => 'په تلواليزه توگه ټول سمونونه واړه په نخښه کول',
 'tog-previewontop' => 'د سمون بکس نه دمخه مخکتنه ښکاره کول',
 'tog-previewonfirst' => 'په لومړي سمون کې مخکتنه ښکاره کول',
-'tog-nocache' => 'د کتنمل د مخ ياده ساتنې چار ناچارندول',
 'tog-enotifwatchlistpages' => 'کله چې زما د کتنلړ په يوې دوتنې يا يو مخ کې بدلون راځي نو ما ته دې د بدلون په اړه برېښليک راشي',
 'tog-enotifusertalkpages' => 'کله چې زما د خبرو اترو په مخ کې بدلون پېښېږي نو ما ته دې يو برېښليک ولېږلی شي.',
 'tog-enotifminoredits' => 'کله چې په مخونو او دوتنو کې وړې سمونې کېږي نو ماته دې د بدلون په اړه برېښليک راشي',
@@ -315,7 +314,6 @@ $messages = array(
 'qbedit' => 'سمول',
 'qbpageoptions' => 'همدا مخ',
 'qbmyoptions' => 'زما پاڼې',
-'qbspecialpages' => 'ځانگړي مخونه',
 'faq' => 'ډ-ځ-پ',
 'faqpage' => 'Project:ډ-ځ-پ',
 
@@ -375,7 +373,7 @@ $messages = array(
 'articlepage' => 'د مخ مېنځپانگه ښکاره کول',
 'talk' => 'خبرې اترې',
 'views' => 'کتنې',
-'toolbox' => 'اوزاربکس',
+'toolbox' => 'اوزارونه',
 'userpage' => 'د کارن پاڼه کتل',
 'projectpage' => 'د پروژې مخ کتل',
 'imagepage' => 'د دوتنې مخ کتل',
@@ -393,7 +391,7 @@ $messages = array(
 'jumpto' => 'ورټوپ کړه:',
 'jumptonavigation' => 'گرځښت',
 'jumptosearch' => 'پلټل',
-'view-pool-error' => 'اÙ\88بخÚ\9aÛ\8dØ\8c Ø¯Ù\85 Ú«ړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.
+'view-pool-error' => 'اÙ\88بخÚ\9aÛ\8dØ\8c Ø¯Ù\85 Ú¯ړۍ پالنگران د ډېر بارېدو ستونزې سره مخامخ شوي.
 ډېر زيات کارنان د همدې مخ د کتلو په هڅه کې دي.
 لطفاً د دې مخ د کتلو د بيا هڅې نه دمخه يو څو شېبې صبر وکړۍ.
 
@@ -433,8 +431,8 @@ $1',
 'youhavenewmessages' => 'تاسې $1 لری  ($2).',
 'youhavenewmessagesfromusers' => 'تاسې د {{PLURAL:$3|يو بل کارن|$3 کارنانو}} لخوا $1 لرۍ ($2).',
 'youhavenewmessagesmanyusers' => 'تاسې د يو شمېر کارنانو لخوا $1 لرۍ ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|يو نوی پيغام|نوي پيغامونه}}',
-'newmessagesdifflinkplural' => 'وروستي {{PLURAL:$1|بدلون|بدلونونه}}',
+'newmessageslinkplural' => '{{PLURAL:$1|يو نوی پيغام|999=نوي پيغامونه}}',
+'newmessagesdifflinkplural' => 'تېر {{PLURAL:$1|بدلون|999=بدلونونه}}',
 'youhavenewmessagesmulti' => 'تاسې په $1 کې نوي پېغامونه لرۍ',
 'editsection' => 'سمول',
 'editold' => 'سمول',
@@ -486,6 +484,7 @@ $1',
 # General errors
 'error' => 'تېروتنه',
 'databaseerror' => 'د ډاټابېز تېروتنه',
+'databaseerror-error' => 'تېروتنه: $1',
 'laggedslavemode' => "'''گواښنه:''' په دې مخ کې کېدای شي تازه اوسمهالېدنې نه وي.",
 'readonly' => 'توکبنسټ تړل شوی',
 'enterlockreason' => 'د بنديز يو سبب وليکۍ، او همداراز د بنديز د ليرې کېدلو يوه اټکليزه نېټه هم څرگنده کړۍ',
@@ -585,13 +584,14 @@ $1',
 'gotaccount' => 'آيا وار دمخې يو گڼون لری؟ $1.',
 'gotaccountlink' => 'ننوتل',
 'userlogin-resetlink' => 'د ننوتلو مالومات مو هېر شوي؟',
-'userlogin-resetpassword-link' => 'پټنوم مو بياپرځايول',
+'userlogin-resetpassword-link' => 'پټنوم مو هېر شوی؟',
+'userlogin-createanother' => 'بل گڼون جوړول',
 'createacct-join' => 'خپل مالومات لاندې ورکړۍ',
 'createacct-emailrequired' => 'برېښليک پته',
 'createacct-emailoptional' => 'برېښليک پته (اختياري)',
 'createacct-email-ph' => 'برېښليک پته مو وټاپۍ',
 'createacct-another-email-ph' => 'برېښليک پته مو ورکړۍ',
-'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او په لاندې ورکړل شوې برېښليک پته کې ورلېږل',
+'createaccountmail' => 'يو لنډمهاله ناټاکلی پټنوم کارول او ځانگړې شوې برېښليک پتې ته ورلېږل',
 'createacct-realname' => 'آر نوم (اختياري)',
 'createaccountreason' => 'سبب:',
 'createacct-reason' => 'سبب',
@@ -607,7 +607,7 @@ $1',
 'badretype' => 'دا پټنوم چې تاسې ليکلی د مخکني پټنوم سره ورته نه دی.',
 'userexists' => 'کوم کارن نوم چې تاسې ورکړی هغه بل چا کارولی.
 لطفاً يو بل نوم وټاکۍ.',
-'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\86Û\90 ستونزه',
+'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\84Ù\88 ستونزه',
 'createacct-error' => 'د گڼون جوړېدنې ستونزه',
 'createaccounterror' => 'گڼون مو جوړ نه شو: $1',
 'nocookiesnew' => 'ستاسې گڼون جوړ شو، خو تاسې لا غونډال ته نه ياست ورننوتلي.
@@ -631,7 +631,7 @@ $1',
 'passwordtooshort' => 'بايد چې پټنوم مو لږ تر لږه {{PLURAL:$1|1 توری|$1 توري}} وي.',
 'password-name-match' => 'ستاسې پټنوم بايد ستاسې د کارن-نوم سره توپير ولري.',
 'password-login-forbidden' => 'د دې کارن-نوم او پټنوم په کارېدنې بنديز دی.',
-'mailmypassword' => 'Ù\86Ù\88Û\8c Ù¾Ù¼Ù\86Ù\88Ù\85 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ú©ول',
+'mailmypassword' => 'پټÙ\86Ù\88Ù\85 Ø¨Ù\8aاپرÚ\81اÙ\8aول',
 'passwordremindertitle' => 'د {{SITENAME}} لپاره نوی لنډمهاله پټنوم',
 'passwordremindertext' => 'يو چا (کېدای شي چې تاسې پخپله، د $1 IP پتې نه)
 د {{SITENAME}} ($4) وېبځي لپاره د يوه نوي پټنوم د ورلېږلو غوښتنه کړې.
@@ -645,13 +645,13 @@ $1',
 'passwordsent' => 'د "$1" لپاره يو نوی پټنوم د اړونده کارن برېښليک پتې ته ولېږل شو.
 لطفاً کله چې پټنوم مو ترلاسه کړ نو بيا غونډال ته ننوځۍ.',
 'blocked-mailpassword' => 'ستاسې په IP پتې بنديز لگېدلی او تاسې نه شی کولای چې ليکنې وکړی، په همدې توگه تاسې نه شی کولای چې د پټنوم د پرځای کولو کړنې وکاروی دا ددې لپاره چې د وراني مخنيوی وشي.',
-'eauthentsent' => 'ستاسې ورکړ شوې برېښليک پتې ته مو يو تاييدي برېښليک درولېږه.
-تر دې دمخه چې ستاسې گڼون ته کوم بل برېښليک درولېږو، پکار ده چې تاسې په برېښليک کې درلېږل شوې لارښوونې پلي کړی او ددې پخلی وکړی چې همدا گڼون په رښتيا ستاسې خپل دی.',
+'eauthentsent' => 'ستاسې برېښليک پتې ته مو يو تاييدي برېښليک درولېږه.
+تر دې دمخه چې ستاسې گڼون ته کوم بل برېښليک درولېږو، بايد تاسې په برېښليک کې درلېږل شوې لارښوونې پلي کړی او د دې پخلی وکړی چې همدا گڼون په رښتيا ستاسې خپل دی.',
 'mailerror' => 'د برېښليک د لېږلو ستونزه: $1',
 'acct_creation_throttle_hit' => 'د همدې ويکي کارنانو په وروستيو ورځو کې ستاسې د IP پتې په کارولو سره {{PLURAL:$1|1 گڼون|$1 گڼونونه}} جوړ کړي، چې دا په همدې مودې کې د گڼونونو د جوړولو تر ټولو ډېر شمېر دی چې اجازه يې ورکړ شوې.
 نو په همدې خاطر د اوس لپاره د همدې IP پتې کارنان نه شي کولای چې نور گڼونونه جوړ کړي.',
-'emailauthenticated' => 'ستاسÛ\90 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 Ù¾Ù\87 $2 Ù\86Û\90Ù¼Ù\87 Ù¾Ù\87 $3 Ø¨Ø¬Ù\88 Ø¯ Ù\85Ù\86Ù\84Ù\88 Ù\88Ú\93 Ù\88گرÚ\81Û\90دÙ\87.',
-'emailnotauthenticated' => 'Ù\84ا ØªØ± Ø§Ù\88سÙ\87 Ø³ØªØ§Ø³Û\90 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 Ø¯ Ù\85Ù\86Ù\84Ù\88 Ù\88Ú\93 Ù\86Ù\87 Ø¯Ù\87 Ú«Ø±Ú\81Û\90دÙ\84Û\90. Ø¯ Ù\84اÙ\86دÛ\90 Ú\81اÙ\86Ú«ړتياو لپاره به تاسې ته هېڅ کوم برېښليک و نه لېږل شي.',
+'emailauthenticated' => 'ستاسې برېښليک پته په $2 په $3 بجو د منلو وړ وگرځېده.',
+'emailnotauthenticated' => 'Ù\84ا ØªØ± Ø§Ù\88سÙ\87 Ø³ØªØ§Ø³Û\90 Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 Ø¯ Ù\85Ù\86Ù\84Ù\88 Ù\88Ú\93 Ù\86Ù\87 Ø¯Ù\87 Ú¯Ø±Ú\81Û\90دÙ\84Û\90. Ø¯ Ù\84اÙ\86دÛ\90 Ú\81اÙ\86Ú¯ړتياو لپاره به تاسې ته هېڅ کوم برېښليک و نه لېږل شي.',
 'noemailprefs' => 'ددې لپاره چې دا کړنې کار وکړي نو تاسو يو برېښليک وټاکۍ.',
 'emailconfirmlink' => 'د خپل د برېښليک پتې پخلی وکړی',
 'invalidemailaddress' => 'دا برېښليک پته نه منل کېږي، دا ځکه چې دا پته يوه ناکره بڼه لري.
@@ -667,7 +667,7 @@ $1',
 که چېرته دا کړنه په تېروتنه کې شوی وي نو تاسې کولای شی چې دا پيغام بابېزه وگڼۍ.',
 'usernamehasherror' => 'کارن-نوم نشي کېدلای چې کرښکې لوښې ولري',
 'login-throttled' => 'تاسې څو واره هڅه کړې چې غونډال ته ورننوځۍ.
-لطفاً د بيا هڅې نه مخکې يو څو شېبې تم شۍ.',
+لطفاً د بيا هڅې نه مخکې $1 شېبې تم شۍ.',
 'login-abort-generic' => 'غونډال کې مو ننوتل نابريالی شو - ناڅاپي بند شو',
 'loginlanguagelabel' => 'ژبه: $1',
 
@@ -675,14 +675,13 @@ $1',
 'user-mail-no-addy' => 'د يوې برېښليک پتې پرته د برېښليک لېږلو هڅه شوې.',
 
 # Change password dialog
-'resetpass' => 'پټنوم بدلول',
+'changepassword' => 'پټنوم بدلول',
 'resetpass_header' => 'د گڼون پټنوم بدلول',
 'oldpassword' => 'زوړ پټنوم:',
 'newpassword' => 'نوی پټنوم:',
 'retypenew' => 'نوی پټنوم بيا وليکه:',
 'resetpass_submit' => 'پټنوم مو وټاکۍ او بيا غونډال ته ورننوځۍ',
-'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!
-اوس غونډال کې د ورننوتلو په حال کې يو ...',
+'changepassword-success' => 'ستاسې پټنوم په برياليتوب سره بدل شو!',
 'resetpass_forbidden' => 'پټنومونه مو نه شي بدلېدلای',
 'resetpass-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'resetpass-submit-loggedin' => 'پټنوم بدلول',
@@ -692,6 +691,7 @@ $1',
 
 # Special:PasswordReset
 'passwordreset' => 'پټنوم بياپرځايول',
+'passwordreset-text-many' => '{{PLURAL:$1|د برېښليک له لارې د يو لنډمهاله پټنوم د ترلاسه کولو لپاره له لاندينيو ډگرونو څخه يو يې ډک کړۍ.}}',
 'passwordreset-legend' => 'پټنوم بياپرځايول',
 'passwordreset-disabled' => 'په دې ويکي پټنوم بياپرځای کولو کړنه ناچارنه شوې.',
 'passwordreset-username' => 'کارن-نوم:',
@@ -707,6 +707,7 @@ $1',
 # Special:ChangeEmail
 'changeemail' => 'برېښليک پته بدلول',
 'changeemail-header' => 'د گڼون برېښليک پته بدلول',
+'changeemail-text' => 'د برېښليک پتې بدلولو لپاره مو همدا فورمه ډکه کړۍ. د دې بدلون د تاييد لپاره بايد پټنوم مو ورکړۍ.',
 'changeemail-no-info' => 'دې مخ ته د لاسرسي لپاره بايد غونډال کې ورننوځۍ.',
 'changeemail-oldemail' => 'اوسنۍ برېښليک پته:',
 'changeemail-newemail' => 'نوې برېښليک پته:',
@@ -736,7 +737,7 @@ $1',
 # Edit pages
 'summary' => 'لنډيز:',
 'subject' => 'سکالو/سرليک:',
-'minoredit' => 'دا يوه وړه سمونه ده',
+'minoredit' => 'دا يو وړوکی سمون دی',
 'watchthis' => 'همدا مخ کتل',
 'savearticle' => 'مخ خوندي کول',
 'preview' => 'مخليدنه',
@@ -822,7 +823,7 @@ $1',
 'creating' => '$1 جوړېدنې کې دی',
 'editingsection' => '$1 (برخه) په سمېدنې کې دی',
 'editingcomment' => 'د $1 سمون (نوې برخه)',
-'editconflict' => 'په سمادولو کې خنډ: $1',
+'editconflict' => 'په سمولو کې خنډ: $1',
 'yourtext' => 'ستاسې متن',
 'storedversion' => 'زېرمه شوې مخکتنه',
 'yourdiff' => 'توپيرونه',
@@ -925,23 +926,20 @@ $1',
 'rev-delundel' => 'ښکاره کول/ پټول',
 'rev-showdeleted' => 'ښکاره کول',
 'revisiondelete' => 'د ړنگولو/ناړنگولو مخکتنې',
-'revdelete-nologtype-title' => 'د يادښت ډول نه دی ځانگړی شوی',
 'revdelete-no-file' => 'ځانگړې شوې دوتنه نشته.',
 'revdelete-show-file-submit' => 'هو',
 'revdelete-selected' => "'''د [[:$1]] {{PLURAL:$2|ټاکلې بڼه|ټاکلې بڼې}}:'''",
 'revdelete-legend' => 'د ښکارېدنې محدوديتونه ټاکل',
-'revdelete-hide-text' => 'د مخکتنې متن پټول',
+'revdelete-hide-text' => 'د مخکتنې متن',
 'revdelete-hide-image' => 'د دوتنې مېنځپانگه پټول',
 'revdelete-hide-name' => 'کړنه او موخه پټول',
-'revdelete-hide-comment' => 'د سمون لنډيز پټول',
-'revdelete-hide-user' => 'د سمونگر کارن-نوم/آی پي پته پټول',
+'revdelete-hide-comment' => 'د سمون لنډيز',
+'revdelete-hide-user' => 'د سمونگر کارن-نوم/آی پي پته',
 'revdelete-radio-same' => '(مه بدلوه)',
-'revdelete-radio-set' => 'Ù\87Ù\88',
-'revdelete-radio-unset' => 'نه',
+'revdelete-radio-set' => 'پټ',
+'revdelete-radio-unset' => 'ښکاره',
 'revdelete-log' => 'سبب:',
 'revdel-restore' => 'ښکارېدنه بدلول',
-'revdel-restore-deleted' => 'ړنګې شوې بڼې',
-'revdel-restore-visible' => 'ښکاره بڼې',
 'pagehist' => 'د مخ پېښليک',
 'deletedhist' => 'د ړنگولو پېښليک',
 'revdelete-reason-dropdown' => '*د ړنگولو ټولگړي سببونه
@@ -981,11 +979,7 @@ $1',
 # Search results
 'searchresults' => 'د پلټنې پايلې',
 'searchresults-title' => 'د "$1" د پلټنې پايلې',
-'searchresulttext' => 'په {{SITENAME}} کې د لټون د نورو مالوماتو لپاره، [[{{MediaWiki:Helppage}}|{{int:لارښود}}]] وگورۍ.',
-'searchsubtitle' => 'تاسې د \'\'\'[[:$1]]\'\'\' لپاره پلټنه کړې ([[Special:Prefixindex/$1|ټول هغه مخونه چې په "$1" پېلېږي]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ټول هغه مخونه چې "$1" سره تړنې لري]])',
-'searchsubtitleinvalid' => "تاسې د '''$1''' لټون کړی",
 'titlematches' => 'د مخ سرليک ورسره ورته دی',
-'notitlematches' => 'د هېڅ يوه مخ سرليک ورسره ورته نه دی',
 'textmatches' => 'د مخ متن ورسره ورته دی',
 'notextmatches' => 'د هېڅ کوم مخ متن ورسره سمون نه خوري',
 'prevn' => 'تېر {{PLURAL:$1|$1}}',
@@ -994,7 +988,6 @@ $1',
 'nextn-title' => 'راتلونکې $1 {{PLURAL:$1|پايله|پايلې}}',
 'shown-title' => 'په هر مخ $1 {{PLURAL:$1|پايله|پايلې}} ښکاره کول',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) کتل',
-'searchmenu-legend' => 'د پلټلو خوښنې',
 'searchmenu-exists' => "'''په دې ويکي يو مخ د \"[[:\$1]]\" په نامه دی'''",
 'searchmenu-new' => "'''په دې ويکي د \"[[:\$1]]\" مخ جوړول!'''",
 'searchprofile-articles' => 'مېنځپانگيز مخونه',
@@ -1017,20 +1010,15 @@ $1',
 'search-interwiki-default' => '$1 پايلې:',
 'search-interwiki-more' => '(نور)',
 'search-relatedarticle' => 'اړونده',
-'mwsuggest-disable' => 'د پلټنې وړانديزونه ناچارنول',
 'searcheverything-enable' => 'په ټولو نوم-تشيالونو کې پلټل',
 'searchrelated' => 'اړونده',
 'searchall' => 'ټول',
 'showingresults' => "دلته لاندې تر {{PLURAL:$1|'''1''' پايله|'''$1''' پايلې}} ښکاره شوي پيل له #'''$2''' شوی.",
 'showingresultsheader' => "د «'''$4'''» لپاره {{PLURAL:$5|له '''$1''' نه تر '''$3''' پايله|له '''$1 نه تر $2''' پايلې، ټولې پايلې '''$3''' }}",
-'nonefound' => "'''يادښت''': يوازې يو څو نوم-تشيالونو په تلواليزه توگه پلټل کېږي.
-د ''ټول:'' مختاړي په کارولو سره به ستاسې د پلټنې لپاره، په ټوله مېنځپانگه کې پلټنه وشي (د خبرواترو، کينډۍ او نورو مخونو په گډون), او يا هم د خپلې خوښې نوم-تشيال د مختاړي په توگه وکاروۍ.",
 'search-nonefound' => 'ستاسې دغوښتنې اړونده پايلې و نه موندل شوې.',
-'powersearch' => 'ژوره پلټنه',
 'powersearch-legend' => 'ژوره پلټنه',
 'powersearch-ns' => 'په نوم-تشيالونو کې پلټنه:',
 'powersearch-redir' => 'مخ گرځونې په لړليک کې اوډل',
-'powersearch-field' => 'پلټنه د',
 'powersearch-togglelabel' => 'نښه کول:',
 'powersearch-toggleall' => 'ټول',
 'powersearch-togglenone' => 'هېڅ',
@@ -1040,7 +1028,6 @@ $1',
 'preferences' => 'غوره توبونه',
 'mypreferences' => 'غوره توبونه',
 'prefs-edits' => 'د سمونو شمېر:',
-'changepassword' => 'پټنوم بدلول',
 'prefs-skin' => 'پوښۍ',
 'skin-preview' => 'مخکتنه',
 'datedefault' => 'هېڅ نه ټاکل',
@@ -1061,13 +1048,11 @@ $1',
 'prefs-email' => 'د برېښليک خوښنې',
 'prefs-rendering' => 'ښکارېدنه',
 'saveprefs' => 'خوندي کول',
-'resetprefs' => 'بيا سمول',
-'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول',
+'restoreprefs' => 'ټولې تلواليزې امستنې پرځای کول (په ټولو برخو کې)',
 'prefs-editing' => 'سمېدنې کې دی',
 'rows' => 'ليکې:',
 'columns' => 'ستنې:',
 'searchresultshead' => 'پلټل',
-'resultsperpage' => 'په هر مخ کې د پايلو شمېر:',
 'stub-threshold-disabled' => 'ناچارن',
 'recentchangesdays' => 'د هغو ورځو شمېر وټاکی چې په وروستي بدلونو کې يې ليدل غواړی:',
 'recentchangesdays-max' => 'حد اکثر $1 {{PLURAL:$1|ورځ|ورځې}}',
@@ -1078,7 +1063,6 @@ $1',
 'localtime' => 'سيمه ايز وخت:',
 'timezoneuseserverdefault' => 'د ويکي تلواليزه بڼه کارول ($1)',
 'timezoneuseoffset' => 'بل (توپير ځانگړی کړی)',
-'timezoneoffset' => 'توپير¹:',
 'servertime' => 'د پالنگر وخت:',
 'guesstimezone' => 'له کتنمل نه ډکول',
 'timezoneregion-africa' => 'افريقا',
@@ -1108,10 +1092,10 @@ $1',
 'prefs-registration' => 'د نومليکنې وخت:',
 'yourrealname' => 'اصلي نوم:',
 'yourlanguage' => 'ژبه:',
-'yournick' => 'کورنی نوم:',
+'yournick' => 'نوی لاسليک:',
 'badsiglength' => 'ستاسو لاسليک ډېر اوږد دی.
 بايد چې لاسليک مو له $1 {{PLURAL:$1|توري|تورو}} نه لږ وي.',
-'yourgender' => 'جنس:',
+'yourgender' => 'څنگه غواړۍ ځان څرگند کړۍ؟',
 'gender-unknown' => 'ناڅرگنده',
 'gender-male' => 'نارينه',
 'gender-female' => 'ښځينه',
@@ -1133,7 +1117,7 @@ $1',
 'prefs-advancedrendering' => 'پرمختللې خوښنې',
 'prefs-advancedsearchoptions' => 'پرمختللې خوښنې',
 'prefs-advancedwatchlist' => 'پرمختللې خوښنې',
-'prefs-displayrc' => 'د Ú\9aکارÛ\90دÙ\86Û\90 خوښنې',
+'prefs-displayrc' => 'د Ú\9aکارÛ\90دÙ\88 خوښنې',
 'prefs-displaysearchoptions' => 'د ښکارېدنې خوښنې',
 'prefs-displaywatchlist' => 'د ښکارېدنې خوښنې',
 'prefs-diffs' => 'توپيرونه',
@@ -1145,12 +1129,13 @@ $1',
 # User rights
 'userrights' => 'د کارن رښتو سمبالښت',
 'userrights-lookup-user' => 'کارن ډلې سمبالول',
-'userrights-user-editname' => 'يو کارن نوم وليکۍ:',
+'userrights-user-editname' => 'يو کارن نوم ورکړئ:',
 'editusergroup' => 'کارن ډلې سمول',
-'editinguser' => '',
+'editinguser' => "د '''[[کارن:$1|$1]]''' کارن رښتې بدلول $2",
 'userrights-editusergroup' => 'کارن ډلې سمول',
 'saveusergroups' => 'کارن ډلې خوندي کول',
 'userrights-groupsmember' => 'غړی د:',
+'userrights-groupsmember-auto' => 'ضمني غړی د:',
 'userrights-groups-help' => 'تاسې هغه ډلې چې همدا کارن يې غړی دی بدلولی شی:
 * يو په نښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب لري.
 * يو نانښه شوی بکس د دې مانا لري چې کارن د هغې ډلې غړيتوب نلري.
@@ -1189,7 +1174,7 @@ $1',
 'right-edit' => 'مخونه سمول',
 'right-createpage' => 'مخونه جوړول (هغه چې د خبرو اترو مخونه نه دي)',
 'right-createtalk' => 'د خبرو اترو مخونه جوړول',
-'right-createaccount' => 'Ù\86Ù\88Ù\8a Ú©Ø§Ø±Ù\86 Ø­Ø³Ø§Ø¨ونه جوړول',
+'right-createaccount' => 'Ù\86Ù\88Ù\8a Ú¯Ú¼Ù\88Ù\86ونه جوړول',
 'right-minoredit' => 'سمونونه واړه په نخښه کول',
 'right-move' => 'مخونه لېږدول',
 'right-move-subpages' => 'مخونه د خپلو څېرمه مخونو سره لېږدول',
@@ -1200,16 +1185,19 @@ $1',
 'right-delete' => 'مخونه ړنگول',
 'right-bigdelete' => 'د اوږدو پېښليکونو مخونه ړنگول',
 'right-browsearchive' => 'ړنگ شوي مخونه پلټل',
-'right-undelete' => 'Ù\8aÙ\88 Ù\85Ø® Ù\86اÚ\93Ù\86Ú«ول',
+'right-undelete' => 'Ù\8aÙ\88 Ù\85Ø® Ù\86اÚ\93Ù\86Ú¯ول',
 'right-suppressionlog' => 'شخصي يادښتونه کتل',
 'right-block' => 'پر نورو کارنانو د سمون د آسانتياوؤ بنديز لگول',
 'right-blockemail' => 'پر يوه کارن د برېښليک لېږلو بنديز لگول',
 'right-hideuser' => 'پر يوه کارن-نوم بنديز لگول او له خلکو نه يې پټول',
-'right-protect' => 'د ژغورنې کچه بدلول او ژغورلي مخونه سمول',
+'right-protect' => 'د Ú\98غÙ\88رÙ\86Û\90 Ú©Ú\86Ù\87 Ø¨Ø¯Ù\84Ù\88Ù\84 Ø§Ù\88 Ú\81Ù\88Ú\93اÙ\88بÛ\90زÙ\87 Ú\98غÙ\88رÙ\84Ù\8a Ù\85Ø®Ù\88Ù\86Ù\87 Ø³Ù\85Ù\88Ù\84',
 'right-editinterface' => 'د کارن ليدنمخ سمول',
 'right-editusercssjs' => 'د نورو کارنانو د CSS او JS (جاوا سکرېپټ) دوتنې سمول',
 'right-editusercss' => 'د نورو کارنانو د CSS دوتنې سمول',
 'right-edituserjs' => 'د نورو کارنانو د JS (جاوا سکرېپټ) دوتنې سمول',
+'right-viewmywatchlist' => 'خپل کتنلړ کتل',
+'right-editmyprivateinfo' => 'خپل شخصي مالومات سمول (بېلگه. برېښليک پته، آرنوم)',
+'right-editmyoptions' => 'خپل غوره توبونه سمول',
 'right-unwatchedpages' => 'د ناکتلو مخونو يو لړليک کتل',
 'right-userrights' => 'د کارن ټولې رښتې سمول',
 'right-userrights-interwiki' => 'په نورو ويکي گانو د نورو کارنانو  کارن-رښتې سمول',
@@ -1239,7 +1227,7 @@ $1',
 'action-deleterevision' => 'دا مخکتنه ړنگول',
 'action-deletedhistory' => 'د دې مخ ړنگ شوی پېښليک کتل',
 'action-browsearchive' => 'ړنگ مخونه پلټل',
-'action-undelete' => 'Ù\87Ù\85دا Ù\85Ø® Ù\86اÚ\93Ù\86Ú«ول',
+'action-undelete' => 'Ù\87Ù\85دا Ù\85Ø® Ù\86اÚ\93Ù\86Ú¯ول',
 'action-suppressionlog' => 'دا شخصي يادښت کتل',
 'action-block' => 'پر دې کارن د سمون د آسانتياوؤ بنديز لگول',
 'action-protect' => 'د دې مخ د ژغورنې کچه بدلول',
@@ -1249,24 +1237,27 @@ $1',
 'action-userrights-interwiki' => 'په نورو ويکي گانو د کارنانو رښتې سمول',
 'action-siteadmin' => 'توکبنسټ کولپول يا نه کولپول',
 'action-sendemail' => 'برېښليکونه لېږل',
+'action-editmyprivateinfo' => 'خپل شخصي مالومات سمول',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|بدلون|بدلونونه}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|له وروستنۍ کتنې راپدېخوا}}',
+'enhancedrc-history' => 'پېښليک',
 'recentchanges' => 'وروستي بدلونونه',
 'recentchanges-legend' => 'د ورستي بدلونو خوښنې',
 'recentchanges-summary' => 'په دې مخ د ويکي ترټولو تازه وروستي بدلونونه وڅارۍ.',
 'recentchanges-feed-description' => 'همدلته د ويکي ترټولو تازه وروستي بدلونونه وڅارۍ او وگورۍ چې څه پېښ شوي.',
 'recentchanges-label-newpage' => 'دغه سمون يو نوی مخ جوړ کړی',
-'recentchanges-label-minor' => 'دا يوه وړه سمونه ده',
-'recentchanges-label-bot' => 'دغÙ\87 Ø³Ù\85Ù\88Ù\86 Ø¯ Ù\8aÙ\88 Ø±Ù\88باټ Ù\84Ø®Ù\88ا ØªØ±Ø³Ø±Ù\87 Ø´Ù\88ی',
+'recentchanges-label-minor' => 'دا يو وړکی سمون دی',
+'recentchanges-label-bot' => 'دا Ø³Ù\85Ù\88Ù\86 Ù\8aÙ\88 Ø±Ù\88باټ ØªØ±Ø³Ø±Ù\87 Ú©Ú\93ی',
 'recentchanges-label-unpatrolled' => 'دغه سمون تر اوسه پورې نه دی څارل شوی',
-'recentchanges-legend-newpage' => '$1 - نوی مخ',
-'rcnote' => "دلته لاندې {{PLURAL:$1|وروستی '''1''' بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په  {{PLURAL:$2| يوې ورځ|'''$2''' ورځو}} کې تر $4 نېټې او $5 بجو پېښ شوي.",
+'recentchanges-label-plusminus' => 'د بايټونو د شمېر له مخې د مخ د بدلون کچه',
+'recentchanges-legend-newpage' => '(دا هم وگورۍ [[Special:NewPages|د نويو مخونو لړليک]])',
 'rcnotefrom' => "په همدې ځای کې لاندې هغه بدلونونه دي چې د '''$2''' نه راپدېخوا پېښ شوي (تر '''$1''' پورې ښکاره شوي).",
 'rclistfrom' => 'هغه نوي بدلونونه ښکاره کول چې له $1 نه پيلېږي',
 'rcshowhideminor' => 'وړې سمونې $1',
 'rcshowhidebots' => 'روباټ $1',
-'rcshowhideliu' => 'غÙ\88Ù\86Ú\89اÙ\84 Ú©Û\90 Ù\86Ù\86Ù\88تي کارنان $1',
+'rcshowhideliu' => 'ثبت Ø´Ù\88ي کارنان $1',
 'rcshowhideanons' => 'بې نومه کارنان $1',
 'rcshowhidepatr' => '$1 څارلې سمونې',
 'rcshowhidemine' => 'زما سمونې $1',
@@ -1401,7 +1392,8 @@ $1',
 'upload_source_file' => '(ستاسو په کمپيوټر کې يوه دوتنه)',
 
 # Special:ListFiles
-'listfiles_search_for' => 'د انځور د نوم لټون:',
+'listfiles-summary' => 'همدا ځانگړی مخ ټولې پورته شوې دوتنې ښکاره کوي.',
+'listfiles_search_for' => 'د رسنۍ نوم پلټنه:',
 'imgfile' => 'دوتنه',
 'listfiles' => 'د دوتنو لړليک',
 'listfiles_thumb' => 'بټنوک',
@@ -1411,6 +1403,9 @@ $1',
 'listfiles_size' => 'کچه (بايټونه)',
 'listfiles_description' => 'څرگندونه',
 'listfiles_count' => 'بڼې',
+'listfiles-latestversion' => 'اوسنۍ بڼه',
+'listfiles-latestversion-yes' => 'هو',
+'listfiles-latestversion-no' => 'نه',
 
 # File description page
 'file-anchor-link' => 'دوتنه',
@@ -1482,7 +1477,9 @@ $1',
 'randompage-nopages' => 'په لانديني {{PLURAL:$2|نوم-تشيال|نوم-تشيالونو}} کې هېڅ کوم مخ نشته: $1.',
 
 # Random page in category
+'randomincategory' => 'په وېشنيزه کې ناټاکلی مخ',
 'randomincategory-selectcategory' => 'يو ناټاکلی مخ له وېشنيزې موندل: $1 $2.',
+'randomincategory-selectcategory-submit' => 'ورځه',
 
 # Random redirect
 'randomredirect' => 'ناټاکلی ورگرځېدنه',
@@ -1507,6 +1504,9 @@ $1',
 'statistics-users-active-desc' => 'هغه کارنان چې په {{PLURAL:$1|وروستۍ ورځ|وروستيو $1 ورځو}} کې فعاله ونډه لرلې',
 'statistics-mostpopular' => 'ډېر کتل شوي مخونه',
 
+'pageswithprop' => 'د مخ ځانتياو څخه برخمن مخونه',
+'pageswithprop-legend' => 'د مخ ځانتياو څخه برخمن مخونه',
+'pageswithprop-prop' => 'د ځانتيا نوم:',
 'pageswithprop-submit' => 'ورځه',
 
 'doubleredirects' => 'دوه ځلي ورگرځېدنې',
@@ -1564,15 +1564,17 @@ $1',
 'listusers' => 'کارن لړليک',
 'listusers-editsonly' => 'يوازې هغه کارنان چې سمونونه يې کړي ښکاره کول',
 'listusers-creationsort' => 'د جوړېدو د نېټې له مخې اوډل',
+'listusers-desc' => 'مخښکته اوډل',
 'usereditcount' => '{{PLURAL:$1|سمون|سمونونه}}',
 'usercreated' => 'په $1 نېټه په $2 بجو {{GENDER:$3|جوړ شو}}',
 'newpages' => 'نوي مخونه',
 'newpages-username' => 'کارن-نوم:',
 'ancientpages' => 'تر ټولو زاړه مخونه',
 'move' => 'لېږدول',
-'movethispage' => 'دا Ù\85Ø® Ù\88Ù\84Û\90Ú\96دÙ\88Ù\87',
+'movethispage' => 'دا Ù\85Ø® Ù\84Û\90Ú\96دÙ\88Ù\84',
 'unusedimagestext' => 'دا لاندينۍ دوتنې په هېڅ کوم مخ کې نه دي ټومبېدلي. لطفاً په پام کې وساتۍ چې نور وېبځايونه به د دغو دوتنو له يو دوتنې سره يو راسن يو آر ال (URL) ولري او لا تر اوسه به دوتنه د فعالې کارېدنې سره سره دلته پرته وي.',
 'notargettitle' => 'بې موخې',
+'nopagetitle' => 'داسې کوم مخ نشته',
 'pager-newer-n' => '{{PLURAL:$1|نوی 1|نوي $1}}',
 'pager-older-n' => '{{PLURAL:$1|زوړ 1|زاړه $1}}',
 'suppress' => 'څارن',
@@ -1601,9 +1603,6 @@ $1',
 'allpagesto' => 'هغه مخونه کتل چې پای يې وي:',
 'allarticles' => 'ټول مخونه',
 'allinnamespace' => 'ټول مخونه ($1 نوم-تشيال)',
-'allnotinnamespace' => 'ټول مخونه (د $1 نوم-تشيال پرته)',
-'allpagesprev' => 'پخواني',
-'allpagesnext' => 'راتلونکي',
 'allpagessubmit' => 'ورځه',
 'allpagesprefix' => 'هغه مخونه ښکاره کړه چې مختاړی يې وي:',
 'allpagesbadtitle' => 'ورکړ شوی سرليک سم نه دی او يا هم د ژبو او يا د بېلابېلو ويکي گانو مختاړی لري. ستاسو په سرليک کې يو يا څو داسې ابېڅې دي کوم چې په سرليک کې نه شي کارېدلی.',
@@ -1623,8 +1622,8 @@ $1',
 'special-categories-sort-abc' => 'د ابېڅو له مخې اوډل',
 
 # Special:DeletedContributions
-'deletedcontributions' => 'Ú\93Ù\86Ú«Û\90 Ø´Ù\88Û\90 ونډې',
-'deletedcontributions-title' => 'Ú\93Ù\86Ú«Û\90 Ø´Ù\88Û\90 ونډې',
+'deletedcontributions' => 'Ú\93Ù\86Ú¯Û\90دÙ\84Û\90 Ú©Ø§Ø±Ù\86 ونډې',
+'deletedcontributions-title' => 'Ú\93Ù\86Ú¯Û\90دÙ\84Û\90 Ú©Ø§Ø±Ù\86 ونډې',
 'sp-deletedcontributions-contribs' => 'ونډې',
 
 # Special:LinkSearch
@@ -1665,7 +1664,7 @@ $1',
 'listgrouprights-removegroup-self-all' => 'خپل گڼون نه ټولې ډلې ليري کول',
 
 # Email user
-'mailnologin' => 'هېڅ کومه لېږل شوې پته نشته',
+'mailnologin' => 'د لېږلو پته نشته',
 'emailuser' => 'کارن ته برېښليک لېږل',
 'emailuser-title-target' => 'دې {{GENDER:$1|کارن}} ته برېښليک لېږل',
 'emailuser-title-notarget' => 'کارن ته برېښليک لېږل',
@@ -1686,9 +1685,9 @@ $1',
 'emailmessage' => 'پيغام:',
 'emailsend' => 'لېږل',
 'emailccme' => 'زما د پيغام يوه بېلگه دې ماته هم برېښليک شي.',
-'emailccsubject' => '$1 ته ستاسو د پيغام لمېسه: $2',
+'emailccsubject' => '$1 ته ستاسې د پيغام لمېسه: $2',
 'emailsent' => 'برېښليک مو ولېږل شو',
-'emailsenttext' => 'ستاسو برېښليکي پيغام ولېږل شو.',
+'emailsenttext' => 'ستاسې برېښليکي پيغام ولېږل شو.',
 'emailuserfooter' => 'دا برېښليک د $1 لخوا $2 ته د {{SITENAME}} په وېبځي کې د "کارن ته برېښليک لېږل" د کړنې په مرسته لېږل شوی.',
 
 # User Messenger
@@ -1714,8 +1713,8 @@ $1',
 'unwatchthispage' => 'څارنې په ټپه درول',
 'notanarticle' => 'يو منځپانګيز مخ نه دی',
 'watchlist-details' => 'ستاسې کتنلړ کې {{PLURAL:$1|$1 مخ دی|$1 مخونه دي}}، د خبرو اترو مخونه مو پکې نه دي شمېرلي.',
-'wlheader-enotif' => 'د Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù\84Ù\87 Ù\84ارÛ\90 Ø®Ø¨Ø±Ù\88Ù\84 Ú\86ارÙ\86 Ø´Ù\88Û\8c.*',
-'wlheader-showupdated' => "هغه مخونه چې وروستی ځل ستاسو د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک نښه شوي.",
+'wlheader-enotif' => 'برÛ\90Ú\9aÙ\84Ù\8aÚ© Ø®Ø¨Ø±Ù\88Ù\86Ù\87 Ú\86ارÙ\86Ù\87 Ø´Ù\88Û\90.',
+'wlheader-showupdated' => "هغه مخونه چې ستاسې د کتلو نه وروسته بدلون موندلی په '''روڼ''' ليک په نښه شوي.",
 'watchlistcontains' => 'ستاسې کتنلړ $1 {{PLURAL:$1|مخ|مخونه}} لري.',
 'iteminvalidname' => "د '$1' توکي سره ستونزه، ناسم نوم ...",
 'wlnote' => "دلته لاندې {{PLURAL:$1|وروستی بدلون دی|وروستي '''$1''' بدلونونه دي}} چې په {{PLURAL:$2|تېر ساعت|تېرو '''$2''' ساعتونو}} کې تر $3 نېټې او $4 بجو پېښ شوي.",
@@ -1811,7 +1810,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'movedarticleprotection' => 'د ژغورنې امستنې له "[[$2]]" څخه "[[$1]]" ته ولېږدېدې',
 'protect-title' => 'د "$1" لپاره د ژغورنې کچه بدلول',
 'prot_1movedto2' => '[[$1]]، [[$2]] ته ولېږدېده',
-'protect-legend' => 'د ژغورلو پخلی کول',
+'protect-legend' => 'ژغورنه تاييدول',
 'protectcomment' => 'سبب:',
 'protectexpiry' => 'د پای نېټه:',
 'protect_expiry_invalid' => 'د پای وخت ناسم دی.',
@@ -1863,17 +1862,19 @@ $UNWATCHURL  نه ليدنه وکړۍ
 # Undelete
 'undelete' => 'ړنگ شوي مخونه کتل',
 'undeletepage' => 'ړنگ شوي مخونه کتل او بيا پرځای کول',
+'undeletepagetitle' => "'''د [[:$1|$1]] ړنگې شوې بڼې په لاندې توگه دي'''.",
 'viewdeletedpage' => 'ړنگ شوي مخونه کتل',
+'undeletehistory' => 'که تاسې همدا مخ بيازېرمه کوۍ، نو ټولې بڼې به يې پېښليک کې زېرمه شي.
+که چېرته د ړنگېدو وروسته په همدې نوم يو بل نوی مخ جوړ شوی وي، نو زېرمه شوې بڼې به يې په پخواني پېښليک کې ښکاره شي.',
 'undeletebtn' => 'بيازېرمل',
 'undeletelink' => 'کتل/بيازېرمل',
 'undeleteviewlink' => 'کتل',
-'undeletereset' => 'بياايښودل',
 'undeleteinvert' => 'ټاکنې سرچپه کول',
 'undeletecomment' => 'سبب:',
 'undeletedfiles' => '{{PLURAL:$1|1 دوتنه بيازېرمه شوه|$1 دوتنې بيازېرمه شوې}}',
 'undelete-header' => 'د وروستيو ړنگو شوو مخونو لپاره [[Special:Log/delete|د ړنگولو يادښت]] وگورۍ.',
 'undelete-search-box' => 'ړنگ شوي مخونه لټول',
-'undelete-search-prefix' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\9aکارÙ\87 Ú©Ú\93Ù\87 Ú\86Û\90 Ù¾Û\90لېږي په:',
+'undelete-search-prefix' => 'Ù\87غÙ\87 Ù\85Ø®Ù\88Ù\86Ù\87 Ú\86Û\90 Ù¾Ù\8aلېږي په:',
 'undelete-search-submit' => 'پلټل',
 'undelete-show-file-submit' => 'هو',
 
@@ -1887,7 +1888,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'contributions' => '{{GENDER:$1|کارن}} ونډې',
 'contributions-title' => 'د $1 کارن ونډې',
 'mycontris' => 'ونډې',
-'contribsub2' => 'د $1 لپاره ($2)',
+'contribsub2' => 'د {{GENDER:$3|$1}} لپاره ($2)',
 'nocontribs' => 'دې شرطونو سره سم بدلونونه و نه موندل شول.',
 'uctop' => '(اوسنی)',
 'month' => 'له مياشتې د (او پخواني):',
@@ -1895,11 +1896,13 @@ $UNWATCHURL  نه ليدنه وکړۍ
 
 'sp-contributions-newbies' => 'د نوو گڼونونو ونډې ښکاره کول',
 'sp-contributions-newbies-sub' => 'د نوو گڼونونو لپاره',
+'sp-contributions-newbies-title' => 'د نويو گڼونونو لپاره د کارن ونډې',
 'sp-contributions-blocklog' => 'د بنديز يادښت',
-'sp-contributions-deleted' => 'Ú\93Ù\86Ú«Û\90 Ø´Ù\88Û\90 ونډې',
+'sp-contributions-deleted' => 'Ú\93Ù\86Ú¯Û\90دÙ\84Û\90 Ú©Ø§Ø±Ù\86 ونډې',
 'sp-contributions-uploads' => 'پورته کېدنې',
 'sp-contributions-logs' => 'يادښتونه',
 'sp-contributions-talk' => 'خبرې اترې',
+'sp-contributions-userrights' => 'د کارن رښتو سمبالښت',
 'sp-contributions-blocked-notice' => 'دم مهال په دې کارن بنديز لگېدلی.
 د بنديز يادښت تازه مالومات په لاندې توگه دي:',
 'sp-contributions-search' => 'د ونډو پلټنه',
@@ -1929,12 +1932,10 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'block' => 'په کارن بنديز لگول',
 'unblock' => 'کارن له بنديزه وېستل',
 'blockip' => 'په کارن بنديز لگول',
-'blockip-title' => 'په کارن بنديز لگول',
 'blockip-legend' => 'په کارن بنديز لگول',
 'ipadressorusername' => 'IP پته يا کارن نوم',
 'ipbexpiry' => 'د پای نېټه:',
 'ipbreason' => 'سبب:',
-'ipbreasonotherlist' => 'بل لامل',
 'ipbreason-dropdown' => '*د بنديز ټولگړي سببونه
 ** د ناسمو مالوماتو خپرول
 ** د مخونو د مېنځپانگې ړنگول
@@ -1944,11 +1945,10 @@ $UNWATCHURL  نه ليدنه وکړۍ
 ** د گڼ شمېر گڼونونو نه ناوړه گټه اخيستل
 ** نه مننونکی کارن-نوم کارول',
 'ipbcreateaccount' => 'د گڼون جوړولو مخنيول',
+'ipbemailban' => 'د کارن لخوا په برېښليک رالېږلو بنديز',
 'ipbsubmit' => 'په دې کارن بنديز لگول',
 'ipbother' => 'بل وخت:',
 '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',
-'ipbotheroption' => 'نور',
-'ipbotherreason' => 'بل/اضافه سبب:',
 'ipbhidename' => 'کارن-نوم له سمون او لړليکونو پټول',
 'ipb-confirm' => 'د بنديز تاييد',
 'badipaddress' => 'ناسمه IP پته',
@@ -1961,6 +1961,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'ipb-blocklist' => 'شته بنديزونه کتل',
 'ipb-blocklist-contribs' => 'د $1 ونډې',
 'unblockip' => 'کارن له بنديزه وېستل',
+'unblockiptext' => 'د لاندې فورمې په کارولو سره يو بنديز شوي کارن يا آی پي پتې ته د ليکلو لاسرسی ورکولی شی.',
 'ipusubmit' => 'دا بنديز ليرې کول',
 'unblocked' => 'له [[User:$1|$1]] بنديز ليري شو',
 'unblocked-range' => 'له $1 بنديز ليرې شو',
@@ -2044,22 +2045,18 @@ $UNWATCHURL  نه ليدنه وکړۍ
 نو په هغه وخت کې پکار ده چې د خبرواترو د مخ لېږدونه او د نوي مخ سره د يوځای کولو کړنه په لاسي توگه ترسره کړی.",
 'movearticle' => 'مخ لېږدول',
 'moveuserpage-warning' => "'''گواښنه:''' تاسې د يو کارن مخ د لېږدولو په حال کې ياست. لطفاً دا مه هېروۍ چې يوازې همدا مخ به ولېږدول شي او د کارن نوم به ''نه'' بدلېږي.",
-'movenologin' => 'غونډال کې نه ياست ننوتي',
 'movenologintext' => 'ددې لپاره چې يو مخ ولېږدوی، نو تاسې بايد يو ثبت شوی کارن او غونډال کې [[Special:UserLogin|ننوتي]] اوسۍ.',
 'movenotallowed' => 'تاسې د مخونو د لېږدولو پرېښله نلرۍ.',
 'movenotallowedfile' => 'تاسې د دوتنو د لېږدولو پرېښله نلرۍ.',
 'cant-move-user-page' => 'تاسې د کارن مخونو د لېږدولو پرېښله نلرۍ (د څېرمه مخونو نه پرته).',
 'cant-move-to-user-page' => 'تاسې د يو کارن مخ ته د يوه بل مخ د لېږدولو پرېښله نلرۍ (د يو کارن د څېرمه مخ نه پرته).',
-'newtitle' => 'Ù\8aÙ\88 Ù\86Ù\88Ù\8a Ø³Ø±Ù\84Ù\8aÚ© ØªÙ\87:',
+'newtitle' => 'نوي سرليک ته:',
 'move-watch' => 'همدا مخ کتل',
 'movepagebtn' => 'مخ لېږدول',
 'pagemovedsub' => 'لېږدول په برياليتوب سره ترسره شوه',
 'movepage-moved' => '\'\'\'د "$1" په نامه دوتنه، "$2" ته ولېږدېده\'\'\'',
 'movepage-moved-redirect' => 'يو مخ گرځونی جوړ شو.',
 'articleexists' => 'په همدې نوم يوه بله پاڼه د پخوا نه شته او يا خو دا نوم چې تاسې ټاکلی سم نه دی. لطفاً يو بل نوم وټاکۍ.',
-'talkexists' => "'''همدا مخ په برياليتوب سره نوي سرليک ته ولېږدېده، خو د خبرواترو مخ يې و نه لېږدول شو دا ځکه چې نوی سرليک له پخوا نه ځانته د خبرواترو يو مخ لري.
-لطفاً د خبرواترو دا دواړه مخونه په لاسي توگه سره يو ځای کړی.'''",
-'movedto' => 'ته ولېږدول شو',
 'movetalk' => 'د خبرو اترو اړونده مخ ورسره لېږدول',
 'movelogpage' => 'د لېږدولو يادښت',
 'movelogpagetext' => 'دا لاندې د لېږدول شوو مخونو لړليک دی.',
@@ -2116,6 +2113,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'import-upload-filename' => 'د دوتنې نوم:',
 'import-comment' => 'تبصره:',
 'import-revision-count' => '$1 {{PLURAL:$1|بڼه|بڼې}}',
+'importnotext' => 'تش او يا بې متنه مخ',
 
 # Import log
 'importlogpage' => 'د واردولو يادښت',
@@ -2173,7 +2171,7 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-ca-nstab-image' => 'د دوتنې مخ کتل',
 'tooltip-ca-nstab-mediawiki' => 'د غونډال پيغامونه کتل',
 'tooltip-ca-nstab-template' => 'کينډۍ کتل',
-'tooltip-ca-nstab-help' => 'د لارښود مخ کتل',
+'tooltip-ca-nstab-help' => 'لارښود مخ کتل',
 'tooltip-ca-nstab-category' => 'د وېشنيزې مخ ښکاره کول',
 'tooltip-minoredit' => 'دا لکه يوه وړه سمونه په نښه کوي[alt-i]',
 'tooltip-save' => 'ستاسې بدلونونه خوندي کوي',
@@ -2181,6 +2179,8 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'tooltip-diff' => 'دا هغه بدلونونه چې تاسې په متن کې ترسره کړي، ښکاره کوي. [alt-v]',
 'tooltip-compareselectedversions' => 'د همدې مخ د دوو ټاکل شويو بڼو تر مېنځ توپيرونه وگورۍ.',
 'tooltip-watch' => 'دا مخ ستاسې کتنلړ کې ورگډوي [alt-w]',
+'tooltip-watchlistedit-normal-submit' => 'سرليکونه غورځول',
+'tooltip-watchlistedit-raw-submit' => 'کتنلړ اوسمهالول',
 'tooltip-upload' => 'د پورته کولو پيل',
 'tooltip-rollback' => 'په همدې مخ کې "په شابېول" د وروستني ونډوال سمون (سمونونه) په يوه کلېک په څټ ورګرځوي.',
 'tooltip-undo' => '"ناکړ" همدا سمون پر شا گرځوي او د سمون کړکۍ د مخکتنې په بڼه پرانيزي.
@@ -2214,9 +2214,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pageinfo-length' => 'مخ اوږدوالی (په بايټونو)',
 'pageinfo-article-id' => 'د مخ پېژند',
 'pageinfo-language' => 'د مخ د مېنځپانگې ژبه',
-'pageinfo-robot-policy' => 'د پلټن ماشين دريځ',
-'pageinfo-robot-index' => 'Ù\84Ù\8aÚ©Ù\84Ú\93Ù\88Ú\93',
-'pageinfo-robot-noindex' => 'Ù\84Ù\8aÚ©Ù\84Ú\93Ù\88Ú\93 Ù\86Ù\87',
+'pageinfo-robot-policy' => 'ليکلړ اوډنه د روباټونو لخوا',
+'pageinfo-robot-index' => 'پرÛ\90Ú\9aÙ\84',
+'pageinfo-robot-noindex' => 'Ù\86اپرÛ\90Ú\9aÙ\84',
 'pageinfo-views' => 'د کتنو شمېر',
 'pageinfo-watchers' => 'د مخ د کتونکو شمېر',
 'pageinfo-redirects-name' => 'دې مخ ته د ورگرځونو شمېر',
@@ -2230,6 +2230,9 @@ $UNWATCHURL  نه ليدنه وکړۍ
 'pageinfo-contentpage' => 'مېنځپانگيز مخ کې شمېرل شوی',
 'pageinfo-contentpage-yes' => 'هو',
 'pageinfo-protect-cascading-yes' => 'هو',
+'pageinfo-category-info' => 'د وېشنيزې مالومات',
+'pageinfo-category-pages' => 'د مخونو شمېر',
+'pageinfo-category-subcats' => 'د څېرمه وېشنيزو شمېر',
 'pageinfo-category-files' => 'د دوتنو شمېر',
 
 # Skin names
@@ -2256,10 +2259,13 @@ $1',
 # Media information
 'thumbsize' => 'د بټنوک کچه:',
 'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|مخ|مخونه}}',
+'file-info' => 'د دوتنې کچه: $1, MIME ډول: $2',
 'file-info-size' => '$1 × $2 پېکسل, د دوتنې کچه: $3, MIME بڼه: $4',
 'file-nohires' => 'تر دې کچې لوړې بېلن نښې نشته.',
 'svg-long-desc' => 'SVG دوتنه، نومېنلي $1 × $2 پېکسل، د دوتنې کچه: $3',
-'show-big-image' => 'بشپړ بېلن نښې',
+'show-big-image' => 'آرنۍ دوتنه',
+'show-big-image-preview' => 'د همدې ليدنې کچه: $1.',
+'show-big-image-size' => '$1 × $2 پېکسل',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
 'file-info-png-repeat' => '$1 {{PLURAL:$1|ځل|ځله}} وغږېده',
 'file-info-png-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
@@ -2282,11 +2288,18 @@ $1',
 'minutes' => '{{PLURAL:$1|$1 دقيقه|$1 دقيقې}}',
 'hours' => '{{PLURAL:$1|$1 ساعت|$1 ساعتونه}}',
 'days' => '{{PLURAL:$1|$1 ورځ|$1 ورځې}}',
+'weeks' => '{{PLURAL:$1|$1 اونۍ|$1 اونۍ}}',
 'months' => '{{PLURAL:$1|$1 مياشت|$1 مياشتې}}',
 'years' => '{{PLURAL:$1|$1 کال|$1 کالونه}}',
 'ago' => '$1 دمخه',
 'just-now' => 'همدا اوس',
 
+# Human-readable timestamps
+'hours-ago' => '$1 {{PLURAL:$1|گړۍ|گړۍ}} دمخه',
+'minutes-ago' => '$1 {{PLURAL:$1|دقيقه|دقيقې}} دمخه',
+'seconds-ago' => '$1 {{PLURAL:$1|ثانيه|ثانيې}} دمخه',
+'monday-at' => 'Monday at $1',
+
 # Bad image list
 'bad_image_list' => 'بڼه يې په لاندې توگه ده:
 
@@ -2319,6 +2332,7 @@ $1',
 # Exif tags
 'exif-imagewidth' => 'سوروالی',
 'exif-imagelength' => 'لوړوالی',
+'exif-stripoffsets' => 'د انځور مالوماتځی',
 'exif-datetime' => 'د دوتنې د بدلون وخت او نېټه',
 'exif-imagedescription' => 'انځور سرليک',
 'exif-make' => 'د کامرې جوړونکی',
@@ -2328,7 +2342,7 @@ $1',
 'exif-copyright' => 'د رښتو خاوند',
 'exif-colorspace' => 'رنگ تشيال',
 'exif-pixelydimension' => 'د انځور سور',
-'exif-pixelxdimension' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¬Ú«والی',
+'exif-pixelxdimension' => 'د Ø§Ù\86Ú\81Ù\88ر Ø¬Ú¯والی',
 'exif-usercomment' => 'د کارن تبصرې',
 'exif-relatedsoundfile' => 'اړونده غږيزه دوتنه',
 'exif-datetimedigitized' => 'د گڼياليز کېدنې وخت او نېټه',
@@ -2376,7 +2390,7 @@ $1',
 'exif-copyrighted-true' => 'په رښتو سمبال',
 'exif-copyrighted-false' => 'د خپراوي د رښتو دريځ نه دی ټاکل شوی',
 
-'exif-unknowndate' => 'نامالومه نېټه',
+'exif-unknowndate' => 'ناڅرگنده نېټه',
 
 'exif-orientation-1' => 'نورمال',
 
@@ -2483,18 +2497,13 @@ $1',
 'exif-urgency-low' => 'لږ ($1)',
 'exif-urgency-high' => 'ډېر ($1)',
 
-# External editor support
-'edit-externally' => 'د باندنيو پروګرامونو په کارولو سره دا دوتنه سمول',
-'edit-externally-help' => 'د نورو مالوماتو لپاره [https://www.mediawiki.org/wiki/Manual:External_editors د امستنو لارښوونې] وگورۍ.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ټول',
 'namespacesall' => 'ټول',
 'monthsall' => 'ټول',
-'limitall' => 'ټول',
 
 # Email address confirmation
-'confirmemail' => 'د Ø¨Ø±Û\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÛ\90 Ù¾Ø®Ù\84Û\8c Ù\88Ú©Ú\93Û\8c',
+'confirmemail' => 'برÛ\90Ú\9aÙ\84Ù\8aÚ© Ù¾ØªÙ\87 ØªØ§Ù\8aÙ\8aدÙ\88Ù\84',
 'confirmemail_noemail' => 'تاسې يوه سمه برېښليک پته نه ده ثبته کړې مهرباني وکړی [[Special:Preferences|د کارن غوره توبونه]] مو بدل کړۍ.',
 'confirmemail_send' => 'يو تاييدي کوډ لېږل',
 'confirmemail_sent' => 'تاييدي برېښليک ولېږل شو.',
@@ -2502,7 +2511,6 @@ $1',
 که تاسې غونډال ته ورننوځی نو تاسې دې کوډ ته اړتيا نه لرۍ، خو تاسې هغه وخت همدې درلېږل شوي کوډ ته اړتيا لرۍ، کله چې په ويکي کې د برېښليک پر بنسټ نورې کړنې چارنول غواړی.',
 'confirmemail_needlogin' => 'ددې لپاره چې ستاسې د برېښليک پتې پخلی وشي، تاسې ته پکار ده چې $1.',
 'confirmemail_loggedin' => 'اوس ستاسې د برېښليک پتې پخلی وشو.',
-'confirmemail_error' => 'ستاسې د برېښليک پتې د تاييد په خوندي کولو کې يوه ستونزه رامېنڅ ته شوه.',
 'confirmemail_subject' => 'د {{SITENAME}} د برېښليک پتې تاييد',
 'confirmemail_body' => 'يو چا او يا هم کيدای شي چې تاسې پخپله، د $1 IP پتې نه،
 د "$2" په نامه يو گڼون په همدې بريښليک پتې د {{SITENAME}} په وېبځي کې ثبت کړی.
@@ -2525,7 +2533,7 @@ $5
 
 # action=purge
 'confirm_purge_button' => 'ښه',
-'confirm-purge-top' => 'په رښتيا د همدې مخ حافظه سپينول غواړۍ؟',
+'confirm-purge-top' => 'آيا د همدې مخ حافظه سپينول غواړۍ؟',
 
 # action=watch/unwatch
 'confirm-watch-button' => 'ښه',
@@ -2542,6 +2550,10 @@ $5
 'imgmultigo' => 'ورځه!',
 'imgmultigoto' => 'د $1 مخ ته ورځه',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(تلواليزه ژبه)',
+'img-lang-go' => 'ورځه',
+
 # Table pager
 'ascending_abbrev' => 'ختند',
 'descending_abbrev' => 'مخښکته',
@@ -2557,7 +2569,7 @@ $5
 # Auto-summaries
 'autosumm-blank' => 'مخ تش شو',
 'autosumm-replace' => "دا مخ د '$1' پرځای راوستل",
-'autoredircomment' => '[[$1]] ته وګرځولی شو',
+'autoredircomment' => '[[$1]] ته وروگرځېده',
 'autosumm-new' => 'د "$1" تورو مخ جوړ شو',
 
 # Size units
@@ -2642,6 +2654,8 @@ $5
 'version-specialpages' => 'ځانگړي مخونه',
 'version-skins' => 'پوښۍ',
 'version-other' => 'بل',
+'version-hooks' => 'کونډۍ',
+'version-hook-name' => 'کونډۍ نوم',
 'version-version' => '(بڼه $1)',
 'version-license' => 'منښتليک',
 'version-poweredby-credits' => "دا ويکي د '''[https://www.mediawiki.org/ مېډياويکي]''' په سېک چلېږي، ټولې رښتې خوندي دي © 2001-$1 $2.",
@@ -2655,6 +2669,14 @@ $5
 'version-software-product' => 'اېبره',
 'version-software-version' => 'بڼه',
 
+# Special:Redirect
+'redirect-submit' => 'ورځه',
+'redirect-value' => 'ارزښت:',
+'redirect-user' => 'کارن پېژند',
+'redirect-page' => 'د مخ پېژند',
+'redirect-file' => 'د دوتنې نوم',
+'redirect-not-exists' => 'ارزښت و نه موندل شو',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'د دوه گونو دوتنو پلټنه',
 'fileduplicatesearch-legend' => 'د دوه گونو دوتنو پلټنه',
@@ -2667,8 +2689,7 @@ $5
 # Special:SpecialPages
 'specialpages' => 'ځانگړي مخونه',
 'specialpages-note' => '* نورماله ځانگړي مخونه.
-* <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>
-* <span class="mw-specialpagecached">رانيولي ځانگړي مخونه (کېدای شي منسوخ شوی وي).</span>',
+* <strong class="mw-specialpagerestricted">محدوده ځانگړي مخونه.</strong>',
 'specialpages-group-maintenance' => 'د څارنې راپورونه',
 'specialpages-group-other' => 'نور ځانگړي مخونه',
 'specialpages-group-login' => 'ننوتل / گڼون جوړول',
@@ -2707,7 +2728,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'مخونه پرتلل',
-'compare-selector' => 'د مخ بڼې سره پرتلل',
 'compare-page1' => '۱ مخ',
 'compare-page2' => '۲ مخ',
 'compare-rev1' => '۱ بڼه',
@@ -2780,6 +2800,13 @@ $5
 'duration-centuries' => '$1 {{PLURAL:$1|پېړۍ|پېړۍ}}',
 'duration-millennia' => '$1 {{PLURAL:$1|زرمه|زرمې}}',
 
+# Limit report
+'limitreport-cputime' => 'سي پي يو وخت کارېدنه',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
+'limitreport-walltime' => 'اصلي وخت کارېدنه',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايټ|بايټونه}}',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'کينډۍ غځول',
 'expand_templates_input' => 'ځايونکی متن:',
index 3e75c3c..62eb1d2 100644 (file)
@@ -57,6 +57,7 @@
  * @author Teles
  * @author Urhixidur
  * @author Villate
+ * @author Vitorvicentevalente
  * @author Waldir
  * @author Yves Marques Junqueira
  * @author לערי ריינהארט
@@ -117,7 +118,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Título_inválido' ),
        'Blankpage'                 => array( 'Página_em_branco' ),
        'Block'                     => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
-       'Blockme'                   => array( 'Bloquear-me', 'Auto-bloqueio' ),
        'Booksources'               => array( 'Fontes_de_livros' ),
        'BrokenRedirects'           => array( 'Redireccionamentos_quebrados', 'Redirecionamentos_quebrados' ),
        'Categories'                => array( 'Categorias' ),
@@ -128,10 +128,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Criar_conta' ),
        'Deadendpages'              => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
        'DeletedContributions'      => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
-       'Disambiguations'           => array( 'Desambiguações', 'Páginas_de_desambiguação', 'Desambiguar' ),
        'DoubleRedirects'           => array( 'Redireccionamentos_duplos', 'Redirecionamentos_duplos' ),
        'EditWatchlist'             => array( 'Editar_lista_de_páginas_vigiadas' ),
        'Emailuser'                 => array( 'Contactar_utilizador', 'Contactar_usuário', 'Contatar_usuário' ),
+       'ExpandTemplates'           => array( 'Expandir_predefinições' ),
        'Export'                    => array( 'Exportar' ),
        'Fewestrevisions'           => array( 'Páginas_com_menos_edições', 'Artigos_com_menos_edições', 'Artigos_menos_editados' ),
        'FileDuplicateSearch'       => array( 'Busca_de_ficheiros_duplicados', 'Busca_de_arquivos_duplicados' ),
@@ -192,8 +192,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'Predefinições_não_utilizadas', 'Predefinições_sem_uso' ),
        'Unwatchedpages'            => array( 'Páginas_não_vigiadas', 'Páginas_não-vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
        'Upload'                    => array( 'Carregar_imagem', 'Carregar_ficheiro', 'Carregar_arquivo', 'Enviar' ),
-       'Userlogin'                 => array( 'Entrar', 'Login' ),
-       'Userlogout'                => array( 'Sair', 'Logout' ),
+       'Userlogin'                 => array( 'Entrar' ),
+       'Userlogout'                => array( 'Sair' ),
        'Userrights'                => array( 'Privilégios', 'Direitos', 'Estatutos' ),
        'Version'                   => array( 'Versão', 'Sobre' ),
        'Wantedcategories'          => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
@@ -265,8 +265,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'centro', 'center', 'centre' ),
        'img_framed'                => array( '1', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'semmoldura', 'semborda', 'frameless' ),
-       'img_page'                  => array( '1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'borda', 'border' ),
        'img_baseline'              => array( '1', 'linhadebase', 'baseline' ),
        'img_top'                   => array( '1', 'acima', 'top' ),
@@ -330,7 +330,7 @@ $messages = array(
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de edição',
 'tog-editondblclick' => 'Editar páginas quando houver um clique duplo',
-'tog-editsection' => 'Possibilitar a edição de seções com links [editar]',
+'tog-editsection' => 'Possibilitar a edição de secções com links [editar]',
 'tog-editsectiononrightclick' => 'Possibilitar a edição de seções por clique com o botão direito no título da seção',
 'tog-showtoc' => 'Mostrar índice (para páginas com mais de três seções)',
 'tog-rememberpassword' => 'Recordar os meus dados neste browser (no máximo, durante $1 {{PLURAL:$1|dia|dias}})',
@@ -341,7 +341,6 @@ $messages = array(
 'tog-minordefault' => 'Por omissão, marcar todas as edições como menores',
 'tog-previewontop' => 'Mostrar a antevisão antes da caixa de edição',
 'tog-previewonfirst' => 'Mostrar a antevisão na primeira edição',
-'tog-nocache' => 'Desativar a cache de páginas do browser',
 'tog-enotifwatchlistpages' => 'Notificar-me por correio electrónico quando uma página ou ficheiro vigiado for alterado',
 'tog-enotifusertalkpages' => 'Notificar-me por correio electrónico quando a minha página de discussão é editada',
 'tog-enotifminoredits' => 'Notificar-me por correio electrónico também sobre edições menores de páginas ou ficheiros',
@@ -383,14 +382,14 @@ $messages = array(
 'wednesday' => 'quarta-feira',
 'thursday' => 'quinta-feira',
 'friday' => 'sexta-feira',
-'saturday' => 'Sábado',
-'sun' => 'Dom',
-'mon' => 'Seg',
-'tue' => 'Ter',
-'wed' => 'Qua',
-'thu' => 'Qui',
-'fri' => 'Sex',
-'sat' => 'Sáb',
+'saturday' => 'sábado',
+'sun' => 'dom',
+'mon' => 'seg',
+'tue' => 'ter',
+'wed' => 'qua',
+'thu' => 'qui',
+'fri' => 'sex',
+'sat' => 'sáb',
 'january' => 'janeiro',
 'february' => 'fevereiro',
 'march' => 'março',
@@ -403,18 +402,18 @@ $messages = array(
 'october' => 'outubro',
 'november' => 'novembro',
 'december' => 'dezembro',
-'january-gen' => 'Janeiro',
-'february-gen' => 'Fevereiro',
+'january-gen' => 'janeiro',
+'february-gen' => 'fevereiro',
 'march-gen' => 'Março',
-'april-gen' => 'Abril',
-'may-gen' => 'Maio',
-'june-gen' => 'Junho',
-'july-gen' => 'Julho',
-'august-gen' => 'Agosto',
-'september-gen' => 'Setembro',
-'october-gen' => 'Outubro',
-'november-gen' => 'Novembro',
-'december-gen' => 'Dezembro',
+'april-gen' => 'abril',
+'may-gen' => 'maio',
+'june-gen' => 'junho',
+'july-gen' => 'julho',
+'august-gen' => 'agosto',
+'september-gen' => 'setembro',
+'october-gen' => 'outubro',
+'november-gen' => 'novembro',
+'december-gen' => 'dezembro',
 'jan' => 'Jan.',
 'feb' => 'Fev.',
 'mar' => 'Mar.',
@@ -477,7 +476,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta página',
 'qbmyoptions' => 'As minhas páginas',
-'qbspecialpages' => 'Páginas especiais',
 'faq' => 'Perguntas frequentes',
 'faqpage' => 'Project:FAQ',
 
@@ -530,7 +528,7 @@ $messages = array(
 'unprotectthispage' => 'Alterar a proteção desta página',
 'newpage' => 'Página nova',
 'talkpage' => 'Discutir esta página',
-'talkpagelinktext' => 'discussão',
+'talkpagelinktext' => 'Discussão',
 'specialpage' => 'Página especial',
 'personaltools' => 'Ferramentas pessoais',
 'postcomment' => 'Seção nova',
@@ -604,7 +602,7 @@ Consulte a página da [[Special:Version|versão do sistema]].',
 'viewsourceold' => 'ver código-fonte',
 'editlink' => 'editar',
 'viewsourcelink' => 'ver código-fonte',
-'editsectionhint' => 'Editar seção: $1',
+'editsectionhint' => 'Editar secção: $1',
 'toc' => 'Índice',
 'showtoc' => 'mostrar',
 'hidetoc' => 'esconder',
@@ -696,9 +694,6 @@ Talvez contenha um ou mais caracteres que não podem ser usados em títulos.',
 'perfcachedts' => "Os seguintes dados encontram-se armazenados na ''cache'' e foram atualizados pela última vez a $1. No máximo {{PLURAL:$4|um resultado está disponível|$4 resultados estão disponíveis}} na ''cache''.",
 'querypage-no-updates' => 'As atualizações estão presentemente desativadas para esta página.
 Por enquanto, os dados aqui presentes não poderão ser atualizados.',
-'wrong_wfQuery_params' => 'Parâmetros incorretos para wfQuery()<br />
-Função: $1<br />
-Consulta: $2',
 'viewsource' => 'Ver código-fonte',
 'viewsource-title' => 'Mostrar código-fonte de $1',
 'actionthrottled' => 'Operação limitada',
@@ -710,14 +705,14 @@ Consulta: $2',
 'editinginterface' => "'''Aviso:''' Está a editar uma página usada para fornecer texto de interface ao software. Alterações a esta página afetarão a aparência da interface de utilizador para os outros utilizadores. Para traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt translatewiki.net], um projeto destinado à tradução do MediaWiki.",
 'cascadeprotected' => 'Esta página foi protegida contra edições por estar incluída {{PLURAL:$1|na página listada|nas páginas listadas}} a seguir, ({{PLURAL:$1|página essa que está protegida|páginas essas que estão protegidas}} com a opção de proteção "em cascata" ativada):
 $2',
-'namespaceprotected' => "Não possui permissão para editar páginas no espaço nominal '''$1'''.",
-'customcssprotected' => 'Não tem permissões para editar esta página de CSS porque ela contém as configurações pessoais de outro utilizador.',
-'customjsprotected' => 'Não tem permissões para editar esta página de JavaScript porque ela contém as configurações pessoais de outro utilizador.',
+'namespaceprotected' => "Não tem permissão para editar páginas no espaço nominal '''$1'''.",
+'customcssprotected' => 'Não tem permissão para editar esta página de CSS porque esta contém as configurações pessoais de outro utilizador.',
+'customjsprotected' => 'Não tem permissão para editar esta página de JavaScript porque esta contém as configurações pessoais de outro utilizador.',
 'mycustomcssprotected' => 'Não tem permissão para editar esta página de CSS.',
 'mycustomjsprotected' => 'Não tem permissão para editar esta página de JavaScript.',
-'myprivateinfoprotected' => 'Você não tem permissão para editar sua informação privada.',
-'mypreferencesprotected' => 'Você não tem permissão para editar as suas preferências.',
-'ns-specialprotected' => 'Não é possível editar páginas especiais',
+'myprivateinfoprotected' => 'Não tem permissão para editar a sua informação privada.',
+'mypreferencesprotected' => 'Não tem permissão para editar as suas preferências.',
+'ns-specialprotected' => 'Não é possível editar páginas especiais.',
 'titleprotected' => 'Este título foi protegido contra criação por [[User:$1|$1]].
 A justificação foi "\'\'$2\'\'".',
 'filereadonlyerror' => 'Não é possível modificar o ficheiro "$1" porque o repositório de ficheiros "$2" está em modo de leitura.
@@ -828,7 +823,7 @@ Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
 'passwordtooshort' => 'A palavra-chave deve ter no mínimo $1 {{PLURAL:$1|carácter|caracteres}}.',
 'password-name-match' => 'A sua palavra-chave tem de ser diferente do seu nome de utilizador.',
 'password-login-forbidden' => 'Foi proibido o uso deste nome de utilizador e palavra-chave.',
-'mailmypassword' => 'Enviar uma palavra-chave nova por correio electrónico',
+'mailmypassword' => 'Reiniciar a palavra-chave',
 'passwordremindertitle' => 'Nova palavra-chave temporária na {{SITENAME}}',
 'passwordremindertext' => 'Alguém (provavelmente você, a partir do endereço IP $1) solicitou uma palavra-chave nova para a sua conta na {{SITENAME}} ($4).
 Foi criada a palavra-chave temporária "$3" para o utilizador "$2".
@@ -879,7 +874,7 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'user-mail-no-body' => 'Tentou mandar email sem conteúdo ou com conteúdo demasiado pequeno.',
 
 # Change password dialog
-'resetpass' => 'Alterar palavra-chave',
+'changepassword' => 'Alterar palavra-chave',
 'resetpass_announce' => 'Autenticou-se usando uma palavra-chave temporária enviada por correio electrónico.
 Para prosseguir, será necessário definir uma nova palavra-chave.',
 'resetpass_text' => '<!-- Adicionar texto aqui -->',
@@ -901,7 +896,7 @@ Pode ter já alterado com sucesso a sua palavra-chave ou solicitado uma nova pal
 # Special:PasswordReset
 'passwordreset' => 'Repor palavra-chave',
 'passwordreset-text-one' => 'Preencha este formulário para repor a sua palavra-passe.',
-'passwordreset-text-many' => '{{PLURAL:$1|Preencha um dos campos para redefinir sua senha.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Preencha um dos campos para redefinir sua senha via correio eletrónico.}}',
 'passwordreset-legend' => 'Reiniciar a palavra-chave',
 'passwordreset-disabled' => 'O reinício da palavra-chave foi impossibilitado nesta wiki.',
 'passwordreset-emaildisabled' => 'Recursos de e-mail foram desativados neste wiki.',
@@ -1030,7 +1025,7 @@ Inclua todos os detalhes acima em quaisquer contactos relacionados com este bloq
 'confirmedittext' => 'Precisa de confirmar o seu endereço de correio electrónico antes de começar a editar páginas.
 Introduza e valide o endereço através das [[Special:Preferences|preferências do utilizador]], por favor.',
 'nosuchsectiontitle' => 'Não foi possível encontrar a seção',
-'nosuchsectiontext' => 'Tentou editar uma seção que não existe.
+'nosuchsectiontext' => 'Tentou editar uma secção que não existe.
 Ela pode ter sido movida ou removida enquanto estava a ver a página.',
 'loginreqtitle' => 'Autenticação necessária',
 'loginreqlink' => 'autenticar-se',
@@ -1098,8 +1093,8 @@ Isso acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal
 'edit_form_incomplete' => "'''Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.'''",
 'editing' => 'A editar $1',
 'creating' => 'A criar $1',
-'editingsection' => 'A editar $1 (seção)',
-'editingcomment' => 'A editar $1 (nova seção)',
+'editingsection' => 'A editar $1 (secção)',
+'editingcomment' => 'A editar $1 (nova secção)',
 'editconflict' => 'Conflito de edição: $1',
 'explainconflict' => "A página foi alterada por alguém desde que começou a editá-la.
 A caixa de texto abaixo mostra o texto existente neste momento.
@@ -1108,9 +1103,9 @@ Terá de reintegrar as suas mudanças no texto da caixa abaixo.
 '''Só''' o texto desta caixa será gravado quando clicar \"{{int:savearticle}}\".",
 'yourtext' => 'O seu texto',
 'storedversion' => 'Versão guardada',
-'nonunicodebrowser' => "'''Aviso: O seu browser não é compatível com as especificações Unicode.
-Foi ativado um sistema de edição alternativo que lhe permite editar as páginas com segurança: os caracteres não-ASCII aparecerão na caixa de edição no formato de códigos hexadecimais.'''",
-'editingold' => "'''Aviso: Está a editar uma revisão desatualizada desta página.'''
+'nonunicodebrowser' => "'''Aviso: O seu navegador não é compatível com as especificações Unicode.
+Foi activado um sistema de edição alternativo que lhe permite editar as páginas com segurança: os caracteres não-ASCII aparecerão na caixa de edição no formato de códigos hexadecimais.'''",
+'editingold' => "'''Aviso: Está a editar uma revisão desactualizada desta página.'''
 Se gravar, todas as mudanças feitas a partir desta revisão serão perdidas.",
 'yourdiff' => 'Diferenças',
 'copyrightwarning' => "Note, por favor, que todas as suas contribuições na {{SITENAME}} são consideradas publicadas nos termos da licença $2 (consulte $1 para mais detalhes).
@@ -1284,10 +1279,6 @@ Você pode ver a diferença entre revisões; podem existir mais detalhes no [{{f
 'revisiondelete' => 'Eliminar/restaurar edições',
 'revdelete-nooldid-title' => 'Edição de destino inválida',
 'revdelete-nooldid-text' => 'Ocorreu uma das seguintes: não especificou a revisão (ou revisões) de destino para realizar esta função, a revisão que especificou não existe, ou está tentando ocultar a revisão atual.',
-'revdelete-nologtype-title' => 'Tipo de registo não especificado',
-'revdelete-nologtype-text' => 'Não especificou um tipo de registo sobre o qual será executada esta operação.',
-'revdelete-nologid-title' => 'Entrada de registo inválida',
-'revdelete-nologid-text' => 'Ou não especificou um evento do registo sobre o qual executar esta função, ou a entrada que especificou não existe.',
 'revdelete-no-file' => 'O ficheiro especificado não existe.',
 'revdelete-show-file-confirm' => 'Tem a certeza de que quer ver uma revisão eliminada do ficheiro "<nowiki>$1</nowiki>" de $2 às $3?',
 'revdelete-show-file-submit' => 'Sim',
@@ -1321,8 +1312,6 @@ $1",
 'logdelete-failure' => "'''Não foi possível definir a visibilidade da entrada do registo:'''
 $1",
 'revdel-restore' => 'Alterar visibilidade',
-'revdel-restore-deleted' => 'revisões eliminadas',
-'revdel-restore-visible' => 'revisões visíveis',
 'pagehist' => 'Histórico da página',
 'deletedhist' => 'Histórico de eliminações',
 'revdelete-hide-current' => 'Erro ao ocultar o item datado de $2, $1: esta é a revisão atual.
@@ -1402,12 +1391,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Resultados da pesquisa',
 'searchresults-title' => 'Resultados da pesquisa de "$1"',
-'searchresulttext' => 'Para mais informações sobre pesquisas na {{SITENAME}}, consulte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Pesquisou \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páginas iniciadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páginas que apontam para "$1"]])',
-'searchsubtitleinvalid' => 'Pesquisou "$1"',
 'toomanymatches' => 'Foram devolvidos demasiados resultados; tente outro termo de pesquisa, por favor',
 'titlematches' => 'Resultados no título das páginas',
-'notitlematches' => 'Nenhum título de página coincide com o termo pesquisado',
 'textmatches' => 'Resultados no conteúdo das páginas',
 'notextmatches' => 'Não foi possível localizar, no conteúdo das páginas, o termo pesquisado',
 'prevn' => '{{PLURAL:$1|anterior|$1 anteriores}}',
@@ -1416,10 +1401,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|próximo|próximos}} $1 {{PLURAL:$1|resultado|resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opções de pesquisa',
 'searchmenu-exists' => "'''Há uma página com o nome \"[[:\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''Crie a página \"[[:\$1]]\" nesta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegar as páginas com este prefixo]]',
 'searchprofile-articles' => 'Páginas de conteúdo',
 'searchprofile-project' => 'Páginas de ajuda e de projeto',
 'searchprofile-images' => 'Multimédia',
@@ -1440,21 +1423,16 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(mais)',
 'search-relatedarticle' => 'Relacionado',
-'mwsuggest-disable' => 'Desativar sugestões de pesquisa',
 'searcheverything-enable' => 'Pesquisar em todos os espaços nominais',
 'searchrelated' => 'relacionados',
 'searchall' => 'todos',
 'showingresults' => "{{PLURAL:$1|É apresentado '''um''' resultado|São apresentados até '''$1''' resultados}} abaixo{{PLURAL:$1||, começando pelo '''$2'''º}}.",
 'showingresultsnum' => "{{PLURAL:$3|É apresentado '''um''' resultado|São apresentados '''$3''' resultados}} abaixo{{PLURAL:$3||, começando pelo '''$2'''º}}.",
 'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1–$2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': Por omissão, só alguns dos espaços nominais são pesquisados.
-Tente usar o prefixo ''all:'' para pesquisar todo o conteúdo (incluindo páginas de discussão, predefinições, etc.), ou use como prefixo o espaço nominal desejado.",
 'search-nonefound' => 'A pesquisa não produziu resultados.',
-'powersearch' => 'Pesquisa avançada',
 'powersearch-legend' => 'Pesquisa avançada',
 'powersearch-ns' => 'Pesquisar nos espaços nominais:',
 'powersearch-redir' => 'Listar redirecionamentos',
-'powersearch-field' => 'Pesquisar',
 'powersearch-togglelabel' => 'Marcar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Nenhum',
@@ -1469,7 +1447,6 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
 'mypreferences' => 'Preferências',
 'prefs-edits' => 'Número de edições:',
 'prefsnologintext2' => 'Por favor, precisa de $1 para definir as suas preferências.',
-'changepassword' => 'Alterar palavra-chave',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Antever tema',
 'datedefault' => 'Sem preferência',
@@ -1492,13 +1469,11 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
 'prefs-email' => 'Opções do correio electrónico',
 'prefs-rendering' => 'Aparência',
 'saveprefs' => 'Gravar',
-'resetprefs' => 'Eliminar as alterações que não foram gravadas',
 'restoreprefs' => 'Repor todas as configurações padrão (em todas as secções)',
 'prefs-editing' => 'Edição',
 'rows' => 'Linhas:',
 'columns' => 'Colunas:',
 'searchresultshead' => 'Pesquisar',
-'resultsperpage' => 'Resultados por página:',
 'stub-threshold' => 'Links para páginas curtas terão <a href="#" class="stub">este formato</a> se elas ocuparem menos de (bytes):',
 'stub-threshold-disabled' => 'Desativado',
 'recentchangesdays' => 'Dias a apresentar nas mudanças recentes:',
@@ -1513,7 +1488,6 @@ Qualquer pessoa que conheça a chave será capaz de ler a sua lista de páginas
 'localtime' => 'Hora local:',
 'timezoneuseserverdefault' => 'Usar padrão da wiki ($1)',
 'timezoneuseoffset' => 'Outro (especificar diferença)',
-'timezoneoffset' => 'Diferença horária¹:',
 'servertime' => 'Hora do servidor:',
 'guesstimezone' => 'Preencher a partir do browser',
 'timezoneregion-africa' => 'África',
@@ -1584,6 +1558,7 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'prefs-tokenwatchlist' => 'Chave',
 'prefs-diffs' => 'Diferenças',
 'prefs-help-prefershttps' => 'Esta preferência terá efeito no seu próximo início de sessão.',
+'prefs-tabs-navigation-hint' => 'Dica: Você pode utilizar as setas direita-esquerda do teclado para navegar entre as guias na lista.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Parece válido',
@@ -1765,12 +1740,13 @@ Se optar por revelá-lo, ele será utilizado para atribuir-lhe crédito pelo seu
 'recentchanges-summary' => 'Acompanhe nesta página as mudanças mais recentes da wiki.',
 'recentchanges-noresult' => 'Nenhuma alteração correspondente a esses critérios foi realizada durante o período selecionado.',
 'recentchanges-feed-description' => "Acompanhe neste ''feed'' as mudanças mais recentes da wiki.",
-'recentchanges-label-newpage' => 'Esta edição criou uma página nova',
+'recentchanges-label-newpage' => 'Esta edição criou uma nova página',
 'recentchanges-label-minor' => 'Esta é uma edição menor',
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
-'recentchanges-legend-newpage' => '(ver também a [[Special:NewPages|lista de páginas novas]])',
-'rcnote' => "A seguir {{PLURAL:$1|está listada '''uma''' alteração ocorrida|estão listadas '''$1''' alterações ocorridas}} {{PLURAL:$2|no último dia|nos últimos '''$2''' dias}}, a partir das $5 de $4.",
+'recentchanges-label-plusminus' => 'Alteração no tamanho da página, em bytes',
+'recentchanges-legend-heading' => "'''Legenda:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|lista de páginas novas]])',
 'rcnotefrom' => 'Abaixo estão as mudanças desde <b>$2</b> (mostradas até <b>$1</b>).',
 'rclistfrom' => 'Mostrar as novas mudanças a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
@@ -2227,7 +2203,7 @@ Agora redirecciona para [[$2]].',
 'brokenredirects-delete' => 'eliminar',
 
 'withoutinterwiki' => 'Páginas sem links interlínguas',
-'withoutinterwiki-summary' => 'As seguintes páginas não têm links para versões noutras línguas.',
+'withoutinterwiki-summary' => 'As seguintes páginas não têm ligação para versões noutras línguas.',
 'withoutinterwiki-legend' => 'Prefixo',
 'withoutinterwiki-submit' => 'Mostrar',
 
@@ -2277,10 +2253,8 @@ Agora redirecciona para [[$2]].',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Apenas proteções indefinidas',
 'protectedpages-cascade' => 'Apenas proteções em cascata',
-'protectedpagestext' => 'As seguintes páginas estão protegidas contra edição ou movimentação',
 'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
 'protectedtitles' => 'Títulos protegidos',
-'protectedtitlestext' => 'Os títulos a seguir encontram-se protegidos contra criação',
 'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
 'listusers' => 'Utilizadores',
 'listusers-editsonly' => 'Mostrar apenas utilizadores com edições',
@@ -2332,9 +2306,6 @@ Pode reduzir a lista escolhendo um tipo de registo, um nome de utilizador ou um
 'allpagesto' => 'Apresentar páginas até:',
 'allarticles' => 'Todas as páginas',
 'allinnamespace' => 'Todas as páginas (espaço nominal $1)',
-'allnotinnamespace' => 'Todas as páginas (exceto as do espaço nominal $1)',
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Próximo',
 'allpagessubmit' => 'Ver',
 'allpagesprefix' => 'Apresentar páginas iniciadas por:',
 'allpagesbadtitle' => 'O título de página fornecido era inválido ou tinha um prefixo interlínguas ou interwikis.
@@ -2502,16 +2473,16 @@ $PAGEINTRO $NEWPAGE
 Resumo da edição: $PAGESUMMARY $PAGEMINOREDIT
 
 Contacte o editor:
-correio eletrónico: $PAGEEDITOR_EMAIL
+correio electrónico: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Até que visite esta página, não receberá mais notificações das alterações futuras.
-Pode também reativar as notificações para todas páginas na sua lista de páginas vigiadas.
+Até que visite novamente esta página com a sua conta ligada, não receberá mais notificações das alterações futuras.
+Pode também reactivar as notificações para todas páginas na sua lista de páginas vigiadas.
 
-             O seu sistema de notificação amigável da {{SITENAME}}
+O seu sistema de notificação amigável da {{SITENAME}}
 
 --
-Para alterar as suas preferências das notificações por correio eletrónico, visite
+Para alterar as suas preferências das notificações por correio electrónico, visite
 {{canonicalurl:{{#special:Preferences}}}}
 
 Para alterar as suas preferências das páginas vigiadas, visite
@@ -2560,6 +2531,7 @@ A eliminação de páginas como esta foi restringida na {{SITENAME}}, para evita
 'delete-warning-toobig' => 'Esta página tem um histórico de edições longo, com mais de $1 {{PLURAL:$1|edição|edições}}.
 Eliminá-la poderá causar problemas na base de dados da {{SITENAME}};
 prossiga com precaução.',
+'deleting-backlinks-warning' => "'''Aviso:''' Outras páginas têm ligação à página que está prestes a eliminar.",
 
 # Rollback
 'rollback' => 'Reverter edições',
@@ -2675,7 +2647,6 @@ Pode ter usado um link incorreto ou talvez a revisão tenha sido restaurada ou r
 'undeletebtn' => 'Restaurar',
 'undeletelink' => 'ver/restaurar',
 'undeleteviewlink' => 'ver',
-'undeletereset' => 'Limpar',
 'undeleteinvert' => 'Inverter seleção',
 'undeletecomment' => 'Motivo:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|edição restaurada|edições restauradas}}',
@@ -2744,7 +2715,7 @@ Para referência é apresentado abaixo o último registo de bloqueio:',
 'whatlinkshere' => 'Páginas afluentes',
 'whatlinkshere-title' => 'Páginas que têm links para "$1"',
 'whatlinkshere-page' => 'Página:',
-'linkshere' => "As seguintes páginas têm links para '''[[:$1]]''':",
+'linkshere' => "As seguintes páginas têm ligação a '''[[:$1]]''':",
 'nolinkshere' => "Não existem afluentes para '''[[:$1]]''' com as condições especificadas.",
 'nolinkshere-ns' => "Não existem links para '''[[:$1]]''' no espaço nominal selecionado.",
 'isredirect' => 'página de redirecionamento',
@@ -2764,14 +2735,12 @@ Para referência é apresentado abaixo o último registo de bloqueio:',
 'block' => 'Bloquear utilizador',
 'unblock' => 'Desbloquear utilizador',
 'blockip' => 'Bloquear utilizador',
-'blockip-title' => 'Bloquear utilizador',
 'blockip-legend' => 'Bloquear utilizador',
 'blockiptext' => 'Utilize o formulário abaixo para bloquear o acesso de escrita a um endereço IP específico ou a um nome de utilizador.
 Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Indique a seguir um motivo de bloqueio específico (por exemplo, indicando as páginas que foram alvo de vandalismo).',
 'ipadressorusername' => 'Endereço IP ou nome de utilizador:',
 'ipbexpiry' => 'Expiração:',
 'ipbreason' => 'Motivo:',
-'ipbreasonotherlist' => 'Outro motivo',
 'ipbreason-dropdown' => '*Razões comuns para um bloqueio
 ** Inserção de informações falsas
 ** Remoção de conteúdos de páginas
@@ -2787,8 +2756,6 @@ Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki
 'ipbsubmit' => 'Bloquear este utilizador',
 'ipbother' => 'Outro período:',
 'ipboptions' => '2 horas:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite',
-'ipbotheroption' => 'outro',
-'ipbotherreason' => 'Outro motivo/motivo adicional:',
 'ipbhidename' => 'Ocultar nome de utilizador nas edições e listas',
 'ipbwatchuser' => 'Vigiar as páginas de utilizador e de discussão deste utilizador',
 'ipb-disableusertalk' => 'Impedir que este utilizador edite a sua página de discussão enquanto estiver bloqueado',
@@ -2878,7 +2845,6 @@ Contacte o seu fornecedor de internet ou o serviço de apoio técnico e informe-
 'sorbsreason' => "O seu endereço IP encontra-se listado como ''proxy'' aberto na DNSBL utilizada pela {{SITENAME}}.",
 'sorbs_create_account_reason' => "O seu endereço IP encontra-se listado como ''proxy'' aberto na DNSBL utilizada pela {{SITENAME}}. Não pode criar uma conta",
 'xffblockreason' => 'Um endereço IP presente no cabeçalho X-Forwarded-For, seja seu ou de um servidor de proxy que estiver a usar, foi bloqueado. A razão do bloqueio original foi: $1',
-'cant-block-while-blocked' => 'Não pode bloquear outros utilizadores enquanto estiver bloqueado.',
 'cant-see-hidden-user' => "O utilizador que está tentando bloquear já está bloqueado e oculto.
 Como não tem o privilégio para ocultar utilizadores ''(hideuser)'', não pode ver ou editar o bloqueio deste utilizador.",
 'ipbblocked' => 'Não pode bloquear ou desbloquear outros, porque está bloqueado',
@@ -2938,7 +2904,6 @@ certifique-se de que compreende as consequências da operação antes de continu
 Nestes casos, terá de mover a página de discussão manualmente, ou fundi-la com a existente, se assim desejar.",
 'movearticle' => 'Mover página',
 'moveuserpage-warning' => "'''Aviso:''' Está prestes a mover uma página de utilizador. Note que a página será apenas movida, ''sem'' alterar o nome do utilizador.",
-'movenologin' => 'Não autenticado',
 'movenologintext' => 'Precisa de ser um utilizador registado e [[Special:UserLogin|autenticado]] para poder mover uma página.',
 'movenotallowed' => 'Não tem permissão para mover páginas.',
 'movenotallowedfile' => 'Não possui permissão para mover ficheiros.',
@@ -2954,9 +2919,6 @@ Nestes casos, terá de mover a página de discussão manualmente, ou fundi-la co
 'articleexists' => 'Uma página com este nome já existe, ou o nome que escolheu é inválido.
 Escolha outro nome, por favor.',
 'cantmove-titleprotected' => 'Não pode mover uma página para esse destino, porque o novo título foi protegido para evitar a sua criação',
-'talkexists' => "'''A página em si foi movida com sucesso, mas a página de discussão não foi movida porque já existia uma com o mesmo título.
-Faça a fusão manual das páginas de discussão, por favor.'''",
-'movedto' => 'movido para',
 'movetalk' => 'Mover também a página de discussão associada.',
 'move-subpages' => 'Mover subpáginas (até $1)',
 'move-talk-subpages' => 'Mover subpáginas da página de discussão (até $1)',
@@ -3193,6 +3155,7 @@ Utilize o botão "Antever resultado" antes de gravar, por favor.',
 Permite colocar uma justificação no resumo da edição.',
 'tooltip-preferences-save' => 'Gravar preferências',
 'tooltip-summary' => 'Introduza um resumo breve',
+'interlanguage-link-title' => '$1 — $2',
 
 # Stylesheets
 'common.css' => '/* Código CSS colocado aqui será aplicado a todos os temas */',
@@ -3201,6 +3164,7 @@ Permite colocar uma justificação no resumo da edição.',
 'modern.css' => '/* Código CSS colocado aqui afectará os utilizadores do tema Moderno */',
 'vector.css' => '/* Código CSS colocado aqui afectará os utilizadores do tema Vector */',
 'print.css' => '/* Código CSS colocado aqui afectará as impressões */',
+'noscript.css' => '/* Os estilos CSS colocados aqui afetarão os utilizadores que tenham o JavaScript desativado em seus navegadores */',
 
 # Scripts
 'common.js' => '/* Código Javascript colocado aqui será carregado para todos os utilizadores em cada carregamento de página */',
@@ -3248,6 +3212,7 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
 'pageinfo-length' => 'Tamanho da página (em bytes)',
 'pageinfo-article-id' => 'ID da página',
 'pageinfo-language' => 'Idioma do conteúdo da página',
+'pageinfo-content-model' => 'Modelo de conteúdo de página',
 'pageinfo-robot-policy' => 'Indexação por robôs',
 'pageinfo-robot-index' => 'Permitida',
 'pageinfo-robot-noindex' => 'Não permitida',
@@ -3799,15 +3764,10 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridade definida pelo utilizador ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este ficheiro utilizando uma aplicação externa',
-'edit-externally-help' => '(Consulte as [https://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para mais informações)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todas',
 'namespacesall' => 'todos',
 'monthsall' => 'todos',
-'limitall' => 'tudo',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar endereço de correio electrónico',
@@ -3831,7 +3791,6 @@ O sistema de correio devolveu o erro: $1',
 'confirmemail_success' => 'O seu endereço de correio electrónico foi confirmado.
 Pode agora [[Special:UserLogin|autenticar-se]] e desfrutar da wiki.',
 'confirmemail_loggedin' => 'O seu endereço de correio electrónico foi confirmado.',
-'confirmemail_error' => 'Alguma coisa correu mal ao gravar a sua confirmação.',
 'confirmemail_subject' => 'Confirmação de endereço de correio electrónico da {{SITENAME}}',
 'confirmemail_body' => 'Alguém, provavelmente você a partir do endereço IP $1,
 registrou uma conta "$2" com este endereço de correio eletrónico na {{SITENAME}}.
@@ -3912,6 +3871,11 @@ Confirme que deseja realmente recriar esta página, por favor.",
 'imgmultigo' => 'Ir!',
 'imgmultigoto' => 'Ir para a página $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(língua padrão)',
+'img-lang-info' => 'Renderizar essa imagem em $1. $2',
+'img-lang-go' => 'Ir',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -4010,9 +3974,9 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirecionar pelo ID do ficheiro, utilizador ou revisão',
+'redirect' => 'Redireccionar pelo ID do ficheiro, utilizador ou revisão',
 'redirect-legend' => 'Redirecionar para um ficheiro ou página',
-'redirect-summary' => 'Esta página especial redireciona a um ficheiro (dado o nome do ficheiro), a uma página (dado um ID de revisão) ou a uma página de utilizador (dado o ID do utilizador). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta página especial redirecciona a um ficheiro (dado o nome do ficheiro), a uma página (dado um ID de revisão) ou a uma página de utilizador (dado o ID do utilizador). Utilização: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ou [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Ir',
 'redirect-lookup' => 'Pesquisa:',
 'redirect-value' => 'Valor:',
@@ -4083,7 +4047,6 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 
 # Special:ComparePages
 'comparepages' => 'Comparar páginas',
-'compare-selector' => 'Comparar edições da página',
 'compare-page1' => 'Página 1',
 'compare-page2' => 'Página 2',
 'compare-rev1' => 'Edição 1',
@@ -4236,7 +4199,9 @@ Caso contrário, pode facilmente usar o formulário abaixo. O seu comentário se
 
 # Limit report
 'limitreport-title' => 'Dados de perfis do analisador:',
+'limitreport-cputime' => 'Tempo de utilização da CPU',
 'limitreport-cputime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime' => 'Tempo real de utilização',
 'limitreport-walltime-value' => '$1 {{PLURAL:$1|segundo|segundos}}',
 'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|byte|bytes}}',
 'limitreport-templateargumentsize' => 'Tamanho dos argumentos da predefinição',
index b10dd6c..865ee9b 100644 (file)
@@ -49,6 +49,7 @@
  * @author McDutchie
  * @author MetalBrasil
  * @author MisterSanderson
+ * @author Mordecaista
  * @author Nemo bis
  * @author OTAVIO1981
  * @author Opraco
@@ -58,6 +59,7 @@
  * @author Raylton P. Sousa
  * @author Rodrigo Calanca Nishino
  * @author Rodrigo Padula
+ * @author Rodrigo codignoli
  * @author Sir Lestaty de Lioncourt
  * @author Teles
  * @author TheGabrielZaum
@@ -124,7 +126,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Título_inválido' ),
        'Blankpage'                 => array( 'Página_em_branco' ),
        'Block'                     => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
-       'Blockme'                   => array( 'Bloquear-me', 'Auto-bloqueio' ),
        'Booksources'               => array( 'Fontes_de_livros' ),
        'BrokenRedirects'           => array( 'Redirecionamentos_quebrados' ),
        'Categories'                => array( 'Categorias' ),
@@ -135,7 +136,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Criar_conta' ),
        'Deadendpages'              => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
        'DeletedContributions'      => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
-       'Disambiguations'           => array( 'Páginas_de_desambiguação', 'Desambiguar', 'Desambiguações' ),
        'DoubleRedirects'           => array( 'Redirecionamentos_duplos' ),
        'EditWatchlist'             => array( 'Editar_lista_de_páginas_vigiadas' ),
        'Emailuser'                 => array( 'Contatar_usuário', 'Contactar_usuário', 'Contactar_utilizador' ),
@@ -199,8 +199,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'Predefinições_sem_uso', 'Predefinições_não_utilizadas' ),
        'Unwatchedpages'            => array( 'Páginas_não-vigiadas', 'Páginas_não_vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
        'Upload'                    => array( 'Carregar_arquivo', 'Carregar_imagem', 'Carregar_ficheiro', 'Enviar' ),
-       'Userlogin'                 => array( 'Autenticar-se', 'Entrar', 'Login' ),
-       'Userlogout'                => array( 'Sair', 'Logout' ),
+       'Userlogin'                 => array( 'Autenticar-se', 'Entrar' ),
+       'Userlogout'                => array( 'Sair' ),
        'Userrights'                => array( 'Privilégios', 'Direitos', 'Estatutos' ),
        'Version'                   => array( 'Versão', 'Sobre' ),
        'Wantedcategories'          => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
@@ -272,8 +272,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'centro', 'center', 'centre' ),
        'img_framed'                => array( '1', 'commoldura', 'comborda', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'semmoldura', 'semborda', 'frameless' ),
-       'img_page'                  => array( '1', 'página=$1', 'página $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'página=$1', 'página_$1', 'página $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'superiordireito', 'superiordireito=$1', 'superiordireito_$1', 'superiordireito $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'borda', 'border' ),
        'img_baseline'              => array( '1', 'linhadebase', 'baseline' ),
        'img_top'                   => array( '1', 'acima', 'top' ),
@@ -337,7 +337,7 @@ $messages = array(
 'tog-usenewrc' => 'Agrupar alterações por páginas nas mudanças recentes e nas páginas vigiadas',
 'tog-numberheadings' => 'Auto-numerar cabeçalhos',
 'tog-showtoolbar' => 'Mostrar barra de ferramentas de edição',
-'tog-editondblclick' => 'Editar páginas quando houver clique duplo (requer JavaScript)',
+'tog-editondblclick' => 'Editar páginas quando houver clique duplo',
 'tog-editsection' => 'Ativar a edição de seções com links [editar]',
 'tog-editsectiononrightclick' => 'Habilitar edição de seção por clique com o botão direito no título da seção (requer JavaScript)',
 'tog-showtoc' => 'Mostrar Tabela de Conteúdos (para páginas com mais de três cabeçalhos)',
@@ -349,7 +349,6 @@ $messages = array(
 'tog-minordefault' => 'Marcar todas as edições como menores por padrão',
 'tog-previewontop' => 'Mostrar previsão antes da caixa de edição',
 'tog-previewonfirst' => 'Mostrar previsão na primeira edição',
-'tog-nocache' => 'Desativar o cache de páginas do navegador',
 'tog-enotifwatchlistpages' => 'Notificar-me por email quando uma página ou arquivo vigiado for alterado',
 'tog-enotifusertalkpages' => 'Receber email quando minha página de discussão for editada',
 'tog-enotifminoredits' => 'Notificar-me por email também sobre edições menores de páginas ou arquivos',
@@ -485,7 +484,6 @@ $messages = array(
 'qbedit' => 'Editar',
 'qbpageoptions' => 'Esta página',
 'qbmyoptions' => 'Minhas páginas',
-'qbspecialpages' => 'Páginas especiais',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -604,8 +602,8 @@ Veja a [[Special:Version|página sobre a versão do sistema]].',
 'youhavenewmessages' => 'Você tem $1 ($2).',
 'youhavenewmessagesfromusers' => 'Você tem $1 de {{PLURAL:$3|outro usuário|$3 usuários}} ($2)',
 'youhavenewmessagesmanyusers' => 'Você tem $1 de muitos usuários ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|uma mensagem nova|mensagens novas}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|última alteração|últimas alterações}}',
+'newmessageslinkplural' => '{{PLURAL:$1|uma mensagem nova|999=mensagens novas}}',
+'newmessagesdifflinkplural' => 'último {{PLURAL:$1|mudança|999=mudanças}}',
 'youhavenewmessagesmulti' => 'Você tem novas mensagens em $1',
 'editsection' => 'editar',
 'editold' => 'editar',
@@ -703,9 +701,6 @@ Talvez contenha um ou mais caracteres que não podem ser usados em títulos.',
 'perfcached' => "Os seguintes dados encontram-se armazenados na ''cache'' e podem não estar atualizados. No máximo {{PLURAL:$1|um resultado está disponível|$1 resultados estão disponíveis}} na ''cache''.",
 'perfcachedts' => "Os seguintes dados encontram-se armazenados no ''cache'' e foram atualizados as $1. No máximo {{PLURAL:$4|um resultado está disponível|$4 resultados estão disponíveis}} no ''cache''.",
 'querypage-no-updates' => 'Momentaneamente as atualizações para esta página estão desativadas. Por enquanto, os dados aqui presentes não poderão ser atualizados.',
-'wrong_wfQuery_params' => 'Parâmetros incorretos para wfQuery()<br />
-Função: $1<br />
-Consulta: $2',
 'viewsource' => 'Ver código-fonte',
 'viewsource-title' => 'Exibir código-fonte para $1',
 'actionthrottled' => 'Ação controlada',
@@ -738,7 +733,8 @@ O administrador que bloqueou ofereceu a seguinte explicação: "$3".',
 'invalidtitle-knownnamespace' => 'Título inválido para o espaço nominal "$2" e texto "$3"',
 'invalidtitle-unknownnamespace' => 'Título inválido para o espaço nominal de número desconhecido ($1) e texto "$2"',
 'exception-nologin' => 'Não está autenticado',
-'exception-nologin-text' => 'Esta página ou ação requer que você esteja autenticado neste wiki.',
+'exception-nologin-text' => 'Por favor clique [[Special:Userlogin|log in]] para poder acessar esta página ou ação',
+'exception-nologin-text-manual' => 'Por favor clique $1 para poder acessar essa página ou ação.',
 
 # Virus scanner
 'virus-badscanner' => "Má configuração: antivírus desconhecido: ''$1''",
@@ -837,7 +833,7 @@ Tente novamente.',
 'passwordtooshort' => 'As senhas devem ter no mínimo {{PLURAL:$1|1 caractere|$1 caracteres}}.',
 'password-name-match' => 'A sua senha deve ser diferente do seu nome de usuário.',
 'password-login-forbidden' => 'O uso deste nome de usuário e senha foi desautorizado.',
-'mailmypassword' => 'Enviar uma nova senha por e-mail',
+'mailmypassword' => 'Redefinir senha',
 'passwordremindertitle' => 'Nova senha temporária em {{SITENAME}}',
 'passwordremindertext' => 'Alguém (provavelmente você, a partir do endereço de IP $1) solicitou uma nova senha para {{SITENAME}} ($4). Foi criada uma senha temporária para o usuário "$2", sendo ela "$3". Se esta era sua intenção, você precisará se autenticar e escolher uma nova senha agora.
 A sua senha temporária expirará em {{PLURAL:$5|um dia|$5 dias}}.
@@ -856,7 +852,8 @@ Para prevenir abusos, apenas um lembrete poderá ser enviado a cada {{PLURAL:$1|
 'acct_creation_throttle_hit' => 'Visitantes deste wiki utilizando o seu endereço IP criaram {{PLURAL:$1|1 conta|$1 contas}} no último dia, o que é o máximo permitido neste período de tempo.
 Como resultado, visitantes que usam este endereço IP não podem criar mais nenhuma conta no momento.',
 'emailauthenticated' => 'O seu endereço de e-mail foi autenticado às $3 de $2.',
-'emailnotauthenticated' => 'O seu endereço de e-mail ainda não foi autenticado. Não lhe será enviado nenhum e-mail sobre nenhuma das seguintes funcionalidades.',
+'emailnotauthenticated' => 'O seu endereço de e-mail ainda não foi autenticado.
+Não lhe será enviado nenhum e-mail sobre nenhuma das seguintes funcionalidades.',
 'noemailprefs' => 'Especifique um endereço de e-mail para que os seguintes recursos funcionem.',
 'emailconfirmlink' => 'Confirme o seu endereço de e-mail',
 'invalidemailaddress' => "O endereço de ''e-mail'' não pode ser aceite devido a talvez possuir um formato inválido. Por favor, introduza um endereço bem formatado ou esvazie o campo.",
@@ -884,7 +881,7 @@ Se você optar por fornecê-lo, este nome será utilizado para dar ao usuário a
 'user-mail-no-body' => 'Você tentou enviar com o campo de e-mail vazio ou com poucos caracteres.',
 
 # Change password dialog
-'resetpass' => 'Alterar senha',
+'changepassword' => 'Alterar senha',
 'resetpass_announce' => 'Você foi autenticado através de uma senha temporária. Para prosseguir, será necessário definir uma nova senha.',
 'resetpass_text' => '<!-- Adicionar texto aqui -->',
 'resetpass_header' => 'Alterar a senha da conta',
@@ -956,6 +953,7 @@ Senha temporária: $2',
 Você só deve reiniciá-los se compartilhou-os com alguém ou se a sua conta foi comprometida.',
 'resettokens-no-tokens' => 'Não existem tokens para reiniciar.',
 'resettokens-legend' => 'Reiniciar tokens',
+'resettokens-tokens' => 'Símbolos:',
 'resettokens-token-label' => '$1 (valor atual: $2)',
 'resettokens-watchlist-token' => 'Tokens para o feed da web (Atom/RSS) das [[Special:Watchlist|mudanças de páginas em sua lista de páginas vigiadas]]',
 'resettokens-done' => 'Tokens reiniciados.',
@@ -1170,6 +1168,8 @@ Ela já existia.',
 'content-not-allowed-here' => 'Conteúdo do tipo "$1" não é permitido na página [[$2]]',
 'editwarning-warning' => 'Abandonar esta página pode fazer com que você perca todas as alterações que fez.
 Se você estiver autenticado, você pode desabilitar este aviso na seção "Edição" de suas preferências.',
+'editpage-notsupportedcontentformat-title' => 'Formato do conteúdo não suportado',
+'editpage-notsupportedcontentformat-text' => 'O formato de conteúdo $1 não é suportando pelo modelo de conteúdo $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitexto',
@@ -1279,10 +1279,6 @@ Você pode ver esta comparação; detalhes podem ser encontrados no [{{fullurl:{
 'revisiondelete' => 'Eliminar/restaurar edições',
 'revdelete-nooldid-title' => 'Nenhuma revisão selecionada',
 'revdelete-nooldid-text' => 'Você ou não especificou uma(s) edição(ões) de destino, a edição especificada não existe ou, ainda, você está tentando ocultar a edição atual.',
-'revdelete-nologtype-title' => 'Tipo de registro não especificado',
-'revdelete-nologtype-text' => 'Você não especificou um tipo de registro sobre o qual executar esta ação.',
-'revdelete-nologid-title' => 'Entrada de registro inválida',
-'revdelete-nologid-text' => 'Você não especificou um evento de registro alvo para executar esta função ou a entrada especificada não existe.',
 'revdelete-no-file' => 'O arquivo especificado não existe.',
 'revdelete-show-file-confirm' => 'Tem a certeza de que quer visualizar uma revisão eliminada do arquivo "<nowiki>$1</nowiki>" de $2 em $3?',
 'revdelete-show-file-submit' => 'Sim',
@@ -1292,10 +1288,11 @@ Você pode ver esta comparação; detalhes podem ser encontrados no [{{fullurl:{
 Outros administradores no {{SITENAME}} continuarão podendo acessar ao conteúdo escondido e restaurá-lo através desta mesma ''interface'', a menos que uma restrição adicional seja definida.",
 'revdelete-confirm' => 'Por favor confirme que pretende executar esta ação, que compreende as suas consequências e que o faz em concordância com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]].',
 'revdelete-suppress-text' => "A supressão deverá ser usada '''apenas''' para os seguintes casos:
+* Informação potencialmente difamatória
 * Informação pessoal inapropriada
 *: ''endereços de domicílio e números de telefone, números da segurança social, etc''",
 'revdelete-legend' => 'Definir restrições de visualização',
-'revdelete-hide-text' => 'Ocultar texto da edição',
+'revdelete-hide-text' => 'Texto de revisão',
 'revdelete-hide-image' => 'Ocultar conteúdos do arquivo',
 'revdelete-hide-name' => 'Ocultar ação e alvo',
 'revdelete-hide-comment' => 'Sumário de edição',
@@ -1315,8 +1312,6 @@ $1",
 'logdelete-failure' => "'''A visibilidade do registro não pôde ser estabelecida:'''
 $1",
 'revdel-restore' => 'alterar visibilidade',
-'revdel-restore-deleted' => 'edições eliminadas',
-'revdel-restore-visible' => 'edições visíveis',
 'pagehist' => 'Histórico da página',
 'deletedhist' => 'Histórico de eliminações',
 'revdelete-hide-current' => 'Erro ao ocultar o item datado de $2, $1: esta é a revisão atual.
@@ -1394,12 +1389,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Resultados da pesquisa',
 'searchresults-title' => 'Resultados da pesquisa por "$1"',
-'searchresulttext' => 'Para mais informações de como pesquisar na {{SITENAME}}, consulte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Você pesquisou por \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|páginas iniciadas por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|páginas que apontam para "$1"]])',
-'searchsubtitleinvalid' => 'Você pesquisou por "$1"',
 'toomanymatches' => 'Foram retornados muitos resultados. Por favor, tente um filtro de pesquisa diferente',
 'titlematches' => 'Resultados nos títulos das páginas',
-'notitlematches' => 'Nenhum título de página coincide',
 'textmatches' => 'Resultados nos textos das páginas',
 'notextmatches' => 'Não foi possível localizar, no conteúdo das páginas, o termo pesquisado',
 'prevn' => '{{PLURAL:$1|anterior|$1 anteriores}}',
@@ -1408,10 +1399,8 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|próximo|próximos}} $1 {{PLURAL:$1|resultado|resultados}}',
 'shown-title' => 'Mostrar $1 {{PLURAL:$1|resultado|resultados}} por página',
 'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opções de pesquisa',
 'searchmenu-exists' => "'''Há uma página com o nome \"[[:\$1]]\" nesta wiki'''",
 'searchmenu-new' => "'''Criar a página \"[[:\$1|\$1]]\" nesta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Navegue pelas páginas com este prefixo]]',
 'searchprofile-articles' => 'Páginas de conteúdo',
 'searchprofile-project' => 'Ajuda e páginas de projeto',
 'searchprofile-images' => 'Multimídia',
@@ -1432,21 +1421,16 @@ Os detalhes podem ser encontrados no [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => 'Resultados de $1:',
 'search-interwiki-more' => '(mais)',
 'search-relatedarticle' => 'Relacionado',
-'mwsuggest-disable' => 'Desativar sugestões de pesquisa',
 'searcheverything-enable' => 'Procurar em todos os espaços nominais',
 'searchrelated' => 'relacionados',
 'searchall' => 'todos',
 'showingresults' => "A seguir {{PLURAL:$1|é mostrado '''um''' resultado|são mostrados até '''$1''' resultados}}, iniciando no '''$2'''º.",
 'showingresultsnum' => "A seguir {{PLURAL:$3|é mostrado '''um''' resultado|são mostrados '''$3''' resultados}}, iniciando com o '''$2'''º.",
 'showingresultsheader' => "{{PLURAL:$5|Resulado '''$1''' de '''$3'''|Resultados '''$1 - $2''' de '''$3'''}} para '''$4'''",
-'nonefound' => "'''Nota''': apenas alguns espaços nominais são pesquisados por padrão.
-Tente utilizar o prefixo ''all:'' em sua busca, para pesquisar por todos os conteúdos deste wiki (inclusive páginas de discussão, predefinições etc), ou mesmo, utilizando o espaço nominal desejado como prefixo.",
 'search-nonefound' => 'Não há resultados que correspondam à consulta.',
-'powersearch' => 'Pesquisa avançada',
 'powersearch-legend' => 'Pesquisa avançada',
 'powersearch-ns' => 'Pesquisar nos espaços nominais:',
 'powersearch-redir' => 'Listar redirecionamentos',
-'powersearch-field' => 'Pesquisar',
 'powersearch-togglelabel' => 'Selecionar:',
 'powersearch-toggleall' => 'Todos',
 'powersearch-togglenone' => 'Nenhum',
@@ -1460,7 +1444,7 @@ Note que os índices do sistema de busca externo poderão conter referências de
 'preferences' => 'Preferências',
 'mypreferences' => 'Preferências',
 'prefs-edits' => 'Número de edições:',
-'changepassword' => 'Alterar senha',
+'prefsnologintext2' => 'Por favor clique $1 para alterar suas preferências',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Pré-visualização',
 'datedefault' => 'Sem preferência',
@@ -1483,13 +1467,11 @@ Note que os índices do sistema de busca externo poderão conter referências de
 'prefs-email' => 'Opções de email',
 'prefs-rendering' => 'Aparência',
 'saveprefs' => 'Salvar',
-'resetprefs' => 'Eliminar as alterações não-salvas',
 'restoreprefs' => 'Restaurar todas as configurações padrão (em todas as seções)',
 'prefs-editing' => 'Opções de edição',
 'rows' => 'Linhas:',
 'columns' => 'Colunas:',
 'searchresultshead' => 'Pesquisar',
-'resultsperpage' => 'Resultados por página:',
 'stub-threshold' => 'Links para páginas de conteúdo aparecerão <a href="#" class="stub">desta forma</a> se elas possuírem menos de (bytes):',
 'stub-threshold-disabled' => 'Desabilitado',
 'recentchangesdays' => 'Dias a apresentar nas mudanças recentes:',
@@ -1504,7 +1486,6 @@ Qualquer pessoa que descobrir esta senha será capaz de ler sua lista, então n
 'localtime' => 'Horário local:',
 'timezoneuseserverdefault' => 'Utilizar padrão do wiki ($1)',
 'timezoneuseoffset' => 'Outro (especifique diferença horária)',
-'timezoneoffset' => 'Diferença horária¹',
 'servertime' => 'Horário do servidor:',
 'guesstimezone' => 'Preencher a partir do navegador',
 'timezoneregion-africa' => 'África',
@@ -1573,6 +1554,7 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'prefs-tokenwatchlist' => 'Senha',
 'prefs-diffs' => 'Diferenças',
 'prefs-help-prefershttps' => 'Esta preferência terá efeito no seu próximo início de sessão.',
+'prefs-tabs-navigation-hint' => 'Dica: Você pode usar as teclas de seta esquerda e direita para navegar entre as abas da lista de abas.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Parece válido',
@@ -1758,8 +1740,10 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
 'recentchanges-label-minor' => 'Esta é uma edição menor',
 'recentchanges-label-bot' => 'Esta edição foi feita por um robô',
 'recentchanges-label-unpatrolled' => 'Esta edição ainda não foi patrulhada',
-'recentchanges-legend-newpage' => '$1 - nova página',
-'rcnote' => "A seguir {{PLURAL:$1|está listada '''uma''' alteração ocorrida|estão listadas '''$1''' alterações ocorridas}} {{PLURAL:$2|no último dia|nos últimos '''$2''' dias}}, a partir das $5 de $4.",
+'recentchanges-label-plusminus' => 'Alteração no tamanho da página, em bytes',
+'recentchanges-legend-heading' => "'''Legenda''':",
+'recentchanges-legend-newpage' => '(veja também a [[Special:NewPages|lista de páginas novas]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Seguem as alterações desde as '''$4''' de '''$3''' (limitadas a '''$1''').",
 'rclistfrom' => 'Mostrar as novas alterações a partir das $1',
 'rcshowhideminor' => '$1 edições menores',
@@ -2204,6 +2188,8 @@ Talvez você deseje editar a descrição na sua [$2 página de descrição de ar
 'pageswithprop-text' => 'Esta página lista as páginas que usam uma determinada propriedade de página.',
 'pageswithprop-prop' => 'Nome da propriedade:',
 'pageswithprop-submit' => 'Ir',
+'pageswithprop-prophidden-long' => 'Longa propriedade de texto oculta ($1)',
+'pageswithprop-prophidden-binary' => 'Valor de propriedade binária oculta ($1)',
 
 'doubleredirects' => 'Redirecionamentos duplos',
 'doubleredirectstext' => 'Esta página lista as páginas que redirecionam para outros redirecionamentos.
@@ -2223,14 +2209,15 @@ Entradas <del>riscadas</del> foram resolvidas.',
 'withoutinterwiki-legend' => 'Prefixo',
 'withoutinterwiki-submit' => 'Exibir',
 
-'fewestrevisions' => 'Páginas de conteúdo com menos edições',
+'fewestrevisions' => 'Páginas com menos edições',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
 'ncategories' => '$1 {{PLURAL:$1|categoria|categorias}}',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|Interwikis}}',
-'nlinks' => '$1 {{PLURAL:$1|linque|linques}}',
+'nlinks' => '$1 {{PLURAL:$1|link|links}}',
 'nmembers' => '$1 {{PLURAL:$1|membro|membros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membro|membros}}',
 'nrevisions' => '$1 {{PLURAL:$1|revisão|revisões}}',
 'nviews' => '$1 {{PLURAL:$1|visita|visitas}}',
 'nimagelinks' => 'Utilizada em $1 {{PLURAL:$1|página|páginas}}',
@@ -2269,10 +2256,9 @@ Entradas <del>riscadas</del> foram resolvidas.',
 'protectedpages' => 'Páginas protegidas',
 'protectedpages-indef' => 'Proteções infinitas apenas',
 'protectedpages-cascade' => 'Apenas proteções progressivas',
-'protectedpagestext' => 'As seguintes páginas encontram-se protegidas contra edições ou movimentações',
+'protectedpages-noredirect' => 'Ocultar redirecionamentos',
 'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
 'protectedtitles' => 'Títulos protegidos',
-'protectedtitlestext' => 'Os títulos a seguir encontram-se protegidos contra criação',
 'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
 'listusers' => 'Lista de usuários',
 'listusers-editsonly' => 'Mostrar apenas usuários com edições',
@@ -2324,9 +2310,6 @@ Você pode diminuir a lista escolhendo um tipo de registro, um nome de usuário
 'allpagesto' => 'Última página na listagem:',
 'allarticles' => 'Todas as páginas',
 'allinnamespace' => 'Todas as páginas (espaço nominal $1)',
-'allnotinnamespace' => 'Todas as páginas (exceto as do espaço nominal $1)',
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Próximo',
 'allpagessubmit' => 'Ver',
 'allpagesprefix' => 'Exibir páginas com o prefixo:',
 'allpagesbadtitle' => 'O título de página fornecido encontrava-se inválido ou tinha um prefixo interlíngua ou inter-wiki. Ele poderá conter um ou mais caracteres que não podem ser utilizados em títulos.',
@@ -2551,6 +2534,7 @@ A eliminação de tais páginas foi restrita, a fim de se evitarem problemas aci
 'delete-warning-toobig' => 'Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.
 Eliminá-la poderá causar problemas na base de dados de {{SITENAME}};
 prossiga com cuidado.',
+'deleting-backlinks-warning' => "'''Cuidado:''' Outras páginas redirecionam para a página que você está prestes a deletar.",
 
 # Rollback
 'rollback' => 'Reverter edições',
@@ -2664,7 +2648,6 @@ Em tais casos, deverá desselecionar ou reverter a ocultação da versão apagad
 'undeletebtn' => 'Restaurar',
 'undeletelink' => 'ver/restaurar',
 'undeleteviewlink' => 'visualizar',
-'undeletereset' => 'Limpar',
 'undeleteinvert' => 'Inverter seleção',
 'undeletecomment' => 'Motivo:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|edição restaurada|edições restauradas}}',
@@ -2752,14 +2735,12 @@ Segue, para referência, a entrada mais recente no registro de bloqueios:',
 'block' => 'Bloquear usuário',
 'unblock' => 'Desbloquear usuário',
 'blockip' => 'Bloquear usuário',
-'blockip-title' => 'Bloquear usuário',
 'blockip-legend' => 'Bloquear usuário',
 'blockiptext' => 'Utilize o formulário abaixo para bloquear o acesso à escrita de um endereço específico de IP ou nome de usuário.
 Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Preencha com um motivo específico a seguir (por exemplo, citando páginas que sofreram vandalismo).',
 'ipadressorusername' => 'Endereço de IP ou nome de usuário:',
 'ipbexpiry' => 'Expiração:',
 'ipbreason' => 'Motivo:',
-'ipbreasonotherlist' => 'Outro motivo',
 'ipbreason-dropdown' => '*Razões comuns para um bloqueio
 ** Inserindo informações falsas
 ** Removendo o conteúdo de páginas
@@ -2775,8 +2756,6 @@ Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWik
 'ipbsubmit' => 'Bloquear este usuário',
 'ipbother' => 'Outro período:',
 'ipboptions' => '2 horas:2 hours,1 dia:1 day,3 dias:3 days,1 semana:1 week,2 semanas:2 weeks,1 mês:1 month,3 meses:3 months,6 meses:6 months,1 ano:1 year,indefinido:infinite',
-'ipbotheroption' => 'outro',
-'ipbotherreason' => 'Outro motivo/motivo adicional:',
 'ipbhidename' => 'Ocultar nome de usuário em edições e listas',
 'ipbwatchuser' => 'Vigiar a página de usuário e a página de discussão deste usuário',
 'ipb-disableusertalk' => 'Impedir que este usuário edite a sua página de discussão enquanto estiver bloqueado',
@@ -2788,6 +2767,7 @@ Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWik
 Consulte a [[Special:BlockList|lista de bloqueios]].',
 'ipb-blockingself' => 'Você está prestes a bloquear-se a si próprio. Você tem a certeza de que pretende fazê-lo?',
 'ipb-confirmhideuser' => 'Você está prestes a bloquear um utilizador com "Ocultar nome de utilizador/IP" ativado. Isto irá suprimir o nome do usuário de todas as listas e entradas dos registos. Tem a certeza de que pretende fazê-lo?',
+'ipb-confirmaction' => 'Se você tem certeza que realmente quer fazer isto, por favor verifique o campo "{{int:ipb-confirm}}" no final.',
 'ipb-edit-dropdown' => 'Editar motivos de bloqueio',
 'ipb-unblock-addr' => 'Desbloquear $1',
 'ipb-unblock' => 'Desbloquear um usuário ou endereço de IP',
@@ -2865,7 +2845,6 @@ Consulte a [[Special:BlockList|lista de bloqueios]] para obter a lista de bloque
 'sorbsreason' => 'O seu endereço IP encontra-se listado como proxy aberto pela DNSBL utilizada por {{SITENAME}}.',
 'sorbs_create_account_reason' => 'O seu endereço de IP encontra-se listado como proxy aberto na DNSBL utilizada por {{SITENAME}}. Você não pode criar uma conta',
 'xffblockreason' => 'Um endereço IP presente no cabeçalho X-Forwarded-For, seu ou do servidor proxy que está usando, foi bloqueado. O motivo original do bloqueio foi: $1',
-'cant-block-while-blocked' => 'Você não pode bloquear outros usuários enquanto estiver bloqueado.',
 'cant-see-hidden-user' => 'O usuário que você está tentando bloquear já está bloqueado ou oculto. Como você não possui privilégio de ocultar usuários, você não pode ver ou editar o bloqueio desse usuário.',
 'ipbblocked' => 'Não é possível que você bloqueie ou desbloqueie outros usuários, já que você se encontra bloqueado',
 'ipbnounblockself' => 'Não é permitido que você se desbloqueie',
@@ -2924,7 +2903,6 @@ certifique-se de que compreende as consequências da operação antes de continu
 Nestes casos, você terá que mover ou mesclar a página manualmente, se assim desejar.",
 'movearticle' => 'Mover página',
 'moveuserpage-warning' => "'''Aviso:''' Você irá mover uma página de usuário. Note que apenas a página será movida, ''sem'' alterar o nome do usuário.",
-'movenologin' => 'Não autenticado',
 'movenologintext' => 'Você precisa ser um usuário registrado e [[Special:UserLogin|autenticado]] para poder mover uma página.',
 'movenotallowed' => 'Você não possui permissão para mover páginas.',
 'movenotallowedfile' => 'Você não possui permissão para mover arquivos.',
@@ -2940,8 +2918,6 @@ Nestes casos, você terá que mover ou mesclar a página manualmente, se assim d
 'articleexists' => 'Uma página com este título já existe, ou o título que escolheu é inválido.
 Por favor, escolha outro nome.',
 'cantmove-titleprotected' => 'Você não pode mover uma página para tal denominação uma vez que o novo título se encontra protegido contra criação',
-'talkexists' => "'''A página em si foi movida com sucesso. No entanto, a página de discussão não foi movida, uma vez que já existia uma com este título. Por favor, mescle-as manualmente.'''",
-'movedto' => 'movido para',
 'movetalk' => 'Mover também a página de discussão associada.',
 'move-subpages' => 'Mover subpáginas (até $1)',
 'move-talk-subpages' => 'Mover subpáginas da página de discussão (até $1)',
@@ -3225,6 +3201,7 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
 'pageinfo-length' => 'Tamanho da página (em bytes)',
 'pageinfo-article-id' => 'ID da página',
 'pageinfo-language' => 'Idioma do conteúdo da página',
+'pageinfo-content-model' => 'Modelo de conteúdo de página',
 'pageinfo-robot-policy' => 'Indexado por robôs',
 'pageinfo-robot-index' => 'Autorizado',
 'pageinfo-robot-noindex' => 'Desautorizado',
@@ -3310,7 +3287,7 @@ Executá-lo poderá comprometer a segurança do seu sistema.",
 'svg-long-desc' => 'arquivo SVG, de $1 × $2 pixels, tamanho: $3',
 'svg-long-desc-animated' => 'arquivo SVG animado, de $1 × $2 pixels e de tamanho: $3',
 'svg-long-error' => 'Arquivo SVG inválido: $1',
-'show-big-image' => 'Resolução original',
+'show-big-image' => 'Arquivo original',
 'show-big-image-preview' => 'Tamanho desta previsualização: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Outra resolução|Outras resoluções}}: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
@@ -3776,15 +3753,10 @@ Por padrão, outros campos estarão ocultos.
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Prioridade definida pelo usuário ($1)',
 
-# External editor support
-'edit-externally' => 'Editar este arquivo a partir de um programa externo',
-'edit-externally-help' => '(Consulte as [https://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para maiores informações)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'todas',
 'namespacesall' => 'todos',
 'monthsall' => 'todos',
-'limitall' => 'todas',
 
 # Email address confirmation
 'confirmemail' => 'Confirmar endereço de E-mail',
@@ -3806,7 +3778,6 @@ O mailer retornou: $1',
 'confirmemail_needlogin' => 'Precisa de $1 para confirmar o seu endereço de e-mail.',
 'confirmemail_success' => 'O seu endereço de e-mail foi confirmado. Pode agora se ligar.',
 'confirmemail_loggedin' => 'O seu endereço de e-mail foi agora confirmado.',
-'confirmemail_error' => 'Alguma coisa correu mal ao guardar a sua confirmação.',
 'confirmemail_subject' => '{{SITENAME}} confirmação de endereço de e-mail',
 'confirmemail_body' => 'Alguém, provavelmente você, com o endereço de IP $1,
 registrou uma conta "$2" com este endereço de e-mail em {{SITENAME}}.
@@ -3881,12 +3852,20 @@ Por favor, confirme que realmente deseja recriar esta página.",
 'confirm-unwatch-button' => 'OK',
 'confirm-unwatch-top' => 'Remover esta página das páginas vigiadas?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '$1',
+
 # Multipage image navigation
 'imgmultipageprev' => '← página anterior',
 'imgmultipagenext' => 'próxima página →',
 'imgmultigo' => 'Ir!',
 'imgmultigoto' => 'Ir para a página $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(Idioma padrão)',
+'img-lang-info' => 'Renderizar essa imagem em $1. $2',
+'img-lang-go' => 'Ir',
+
 # Table pager
 'ascending_abbrev' => 'asc',
 'descending_abbrev' => 'desc',
@@ -3966,7 +3945,17 @@ Você também pode [[Special:EditWatchlist|editar a lista da maneira convenciona
 'version-hook-name' => 'Nome do hook',
 'version-hook-subscribedby' => 'Subscrito por',
 'version-version' => '(Versão $1)',
-'version-license' => 'Licença',
+'version-license' => 'Licença do MediaWiki',
+'version-ext-license' => 'Licença',
+'version-ext-colheader-name' => 'Extensão',
+'version-ext-colheader-version' => 'Versão',
+'version-ext-colheader-license' => 'Licença',
+'version-ext-colheader-description' => 'Descrição',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licença para $1',
+'version-license-not-found' => 'Nenhuma informação detalhada dessa licença foi encontrada para esta extensão.',
+'version-credits-title' => 'Créditos para $1',
+'version-credits-not-found' => 'Nenhuma informação detalhada de crédito foi encontrada para esta extensão.',
 'version-poweredby-credits' => "Este é um wiki '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'outros',
 'version-poweredby-translators' => 'tradutores da translatewiki.net',
@@ -3986,11 +3975,12 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 # Special:Redirect
 'redirect' => 'Redirecionar por arquivo, usuário ou ID de revisão',
 'redirect-legend' => 'Redirecionar para um arquivo ou página',
-'redirect-summary' => 'Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão) ou a uma página de usuário (dado o ID do usuário).',
+'redirect-summary' => 'Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão ou ID da página) ou a uma página de usuário (dado o ID do usuário). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Ir',
 'redirect-lookup' => 'Buscar',
 'redirect-value' => 'Valor:',
 'redirect-user' => 'ID do usuário',
+'redirect-page' => 'ID da página',
 'redirect-revision' => 'Revisão da página',
 'redirect-file' => 'Nome do arquivo',
 'redirect-not-exists' => 'Valor não encontrado',
@@ -4008,6 +3998,7 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 
 # Special:SpecialPages
 'specialpages' => 'Páginas especiais',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Páginas especiais normais.
 * <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>',
 'specialpages-group-maintenance' => 'Relatórios de manutenção',
@@ -4056,7 +4047,6 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
 
 # Special:ComparePages
 'comparepages' => 'Comparar páginas',
-'compare-selector' => 'Comparar edições da página',
 'compare-page1' => 'Página 1',
 'compare-page2' => 'Página 2',
 'compare-rev1' => 'Edição 1',
@@ -4184,6 +4174,7 @@ Caso contrário, você poderá usar o formulário simplificado a seguir. Seu com
 'api-error-overwrite' => 'Não é permitido sobrescrever um arquivo já existente.',
 'api-error-stashfailed' => 'Erro interno: o servidor não conseguiu armazenar o arquivo temporário.',
 'api-error-publishfailed' => 'Erro interno: O servidor falhou ao publicar o arquivo temporário.',
+'api-error-stasherror' => 'Houve um erro durante o upload do arquivo para a pilha.',
 'api-error-timeout' => 'O servidor não respondeu dentro do tempo esperado.',
 'api-error-unclassified' => 'Ocorreu um erro desconhecido',
 'api-error-unknown-code' => 'Erro desconhecido: "$1"',
@@ -4233,10 +4224,14 @@ Na verdade, expande tudo que está entre chaves duplas.',
 'expand_templates_input' => 'Texto de entrada:',
 'expand_templates_output' => 'Resultado',
 'expand_templates_xml_output' => 'Resultado XML',
+'expand_templates_html_output' => 'Saída HTML puro',
 'expand_templates_ok' => 'Expandir',
 'expand_templates_remove_comments' => 'Remover comentários',
 'expand_templates_remove_nowiki' => 'Suprima marcações <nowiki> no resultado',
 'expand_templates_generate_xml' => 'Mostrar árvore de análise (parse) do XML',
+'expand_templates_generate_rawhtml' => 'Mostrar HTML puro',
 'expand_templates_preview' => 'Pré-visualização',
 
+# Unknown messages
+'uploadinvalidxml' => 'O XML no arquivo enviado não pôde ser analisado.',
 );
index 755ccbe..80c2d6a 100644 (file)
@@ -27,6 +27,7 @@
  * @author Boivie
  * @author Brest
  * @author BrokenArrow
+ * @author Byfserag
  * @author Byrial
  * @author BáthoryPéter
  * @author Claudia Hattitten
@@ -58,6 +59,7 @@
  * @author Iwan Novirion
  * @author Jon Harald Søby
  * @author Karduelis
+ * @author Kazu89
  * @author Kghbln
  * @author Kizito
  * @author Klenje
@@ -78,6 +80,7 @@
  * @author Matma Rex
  * @author MaxSem
  * @author McDutchie
+ * @author MegaAlex
  * @author Meno25
  * @author Metalhead64
  * @author MichaelFrey
  * @author PhiLiP
  * @author Piangpha
  * @author Platonides
+ * @author PleaseStand
  * @author Prima klasy4na
  * @author Prometheus.pyrphoros
  * @author Psubhashish
  * @author Sp5uhe
  * @author Srhat
  * @author Subhashkataria21.90
+ * @author TMg
  * @author Tedjuh10
  * @author Tgr
  * @author The Evil IP address
@@ -192,7 +197,6 @@ Parameters:
 'tog-minordefault' => "[[Special:Preferences]], tab 'Edit'. Offers user to mark all edits minor by default.  {{Gender}}",
 'tog-previewontop' => 'Toggle option used in [[Special:Preferences]]. {{Gender}}',
 'tog-previewonfirst' => 'Toggle option used in [[Special:Preferences]]. {{Gender}}',
-'tog-nocache' => "[[Special:Preferences]], tab 'Misc.'. Offers the user the option of disabling caching of pages in the browser. {{Gender}}",
 'tog-enotifwatchlistpages' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}',
 'tog-enotifusertalkpages' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}',
 'tog-enotifminoredits' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}
@@ -483,7 +487,6 @@ This can also appear in the credits page if the credits feature is enabled,for e
 {{Identical|This page}}',
 'qbmyoptions' => 'Heading in the Cologne Blue skin user menu containing links to user (talk) page, preferences, watchlist, etc.
 {{Identical|My pages}}',
-'qbspecialpages' => '{{Identical|Special page}}',
 'faq' => "FAQ is short for ''frequently asked questions''.
 {{Identical|FAQ}}",
 'faqpage' => '{{doc-important|Do not translate <code>Project:</code> part.}}
@@ -820,19 +823,27 @@ Appears in subtitle. Parameters:
 
 Parameters:
 * $1 - a link back to the current page: {{FULLURL:{{FULLPAGENAME}}}}',
-'youhavenewmessages' => 'The yellow message appearing when someone edited your user talk page.
+'youhavenewmessages' => "The yellow message appearing when someone edited your user talk page.
 
-The format is: "{{int:youhavenewmessages| [[MediaWiki:Newmessageslinkplural/{{SUBPAGENAME}}|{{int:newmessageslinkplural}}]] |[[MediaWiki:Newmessagesdifflinkplural/{{SUBPAGENAME}}|{{int:newmessagesdifflinkplural}}]]}}"
+The format is: {{int:youhavenewmessages| [[MediaWiki:Newmessageslinkplural/{{SUBPAGENAME}}|{{int:newmessageslinkplural}}]] |[[MediaWiki:Newmessagesdifflinkplural/{{SUBPAGENAME}}|{{int:newmessagesdifflinkplural}}]]}}
 
 Parameters:
 * $1 - a link points to new messages. Its text is {{msg-mw|Newmessageslinkplural}}
 * $2 - a link points to new messages diff. Its text is {{msg-mw|Newmessagesdifflinkplural}}
+* $3 - 1 or 999:
+** 1 if there was '''one''' new edit since the last time the user has seen their talk page
+** 999 - if there was '''more than one''' new edit since the last time the user has seen their talk page
 See also:
-* {{msg-mw|Youhavenewmessagesmanyusers}}',
-'youhavenewmessagesfromusers' => 'New talk indicator message: the message appearing when someone edited your user talk page. Parameters:
+* {{msg-mw|Youhavenewmessagesmanyusers}}",
+'youhavenewmessagesfromusers' => "New talk indicator message: the message appearing when someone edited your user talk page.
+
+Parameters:
 * $1 - defined as {{msg-mw|newmessageslinkplural}}
 * $2 - defined as {{msg-mw|newmessagesdifflinkplural}}
-* $3 - the number of authors who have edited the talk page since the owning user last viewed it',
+* $3 - the number of authors who have edited the talk page since the owning user last viewed it
+* $4 - 1 or 999:
+** 1 if there was '''one''' new edit since the last time the user has seen their talk page
+** 999 - if there was '''more than one''' new edit since the last time the user has seen their talk page",
 'youhavenewmessagesmanyusers' => 'New talk indicator message: the message appearing when someone edited your user talk page.
 
 Used when more than 10 users edited the user talk page since the owning user last viewed it, similar to {{msg-mw|youhavenewmessages}}.
@@ -1154,9 +1165,6 @@ Parameters:
 * $3 - a time (optional)
 * $4 - the cut off limit for cached results ($wgQueryCacheLimit). If there are more then this many results for the query, only the first $4 of those will be listed on the page. Usually $4 is about 1000.',
 'querypage-no-updates' => 'Text on some special pages, e.g. [[Special:FewestRevisions]].',
-'wrong_wfQuery_params' => 'Used as error message. Parameters:
-* $1 - function name
-* $2 - query',
 'viewsource' => 'The text displayed in place of the {{msg-mw|Edit}} tab when the user has no permission to edit the page.
 
 See also:
@@ -1325,7 +1333,6 @@ See example: [[Special:UserLogin]]',
 {{Identical|Create an account}}',
 'createaccount' => 'Used on the top of the page for logged out users, where it appears next to {{msg-mw|login}}, so consider making them similar.
 
-It is also used on the submit button in the form/special page where you register a new account.
 {{doc-special|CreateAccount}}
 {{Identical|Create account}}',
 'gotaccount' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED. Parameter:
@@ -1333,9 +1340,9 @@ It is also used on the submit button in the form/special page where you register
 'gotaccountlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.
 {{Identical|Log in}}',
 'userlogin-resetlink' => 'Since 1.22 no longer used in core, but may be used by some extensions. DEPRECATED.',
-'userlogin-resetpassword-link' => 'Used as link text on login form.
+'userlogin-resetpassword-link' => 'Used as link text in the login form.
 
-The link points to the local [[Special:PasswordReset]].
+The link points to the local page [[Special:PasswordReset]].
 
 See example: [[Special:UserLogin]]
 
@@ -1474,6 +1481,7 @@ Parameters:
 Parameters:
 * $1 - (Optional) username, for GENDER support',
 'wrongpassword' => 'Used as error message when the provided password is wrong.
+This message is used in html.
 {{Identical|Please try again}}',
 'wrongpasswordempty' => 'Error message displayed when entering a blank password.
 {{Identical|Please try again}}',
@@ -1483,7 +1491,8 @@ Parameters:
 * $1 - the minimum number of characters in the password',
 'password-name-match' => 'Used as error message when password validity check failed.',
 'password-login-forbidden' => 'Error message shown when the user has tried to log in using one of the special username/password combinations used for MediaWiki testing. (See [[mwr:75589]], [[mwr:75605]].)',
-'mailmypassword' => 'Heading in [[Special:PasswordReset]]',
+'mailmypassword' => 'Used as label for Submit button in [[Special:PasswordReset]].
+{{Identical|Reset password}}',
 'passwordremindertitle' => 'Title of email which contains temporary password',
 'passwordremindertext' => 'This text is used in an email sent when a user requests a new temporary password (he has forgotten his password) or when an sysop creates a new user account choosing to have password and username sent to the new user by email.
 
@@ -1565,7 +1574,8 @@ Parameters:
 ** {{msg-mw|Duration-seconds}}
 
 This is a protection against robots trying to find the password by trying lots of them.
-The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].',
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.',
 'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
 'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. Parameters:
 * $1 - a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
@@ -1581,9 +1591,8 @@ Used on the account creation form when creating another user's account. Similar
 'user-mail-no-body' => 'This is the error message in case an email has an empty or unreasonably short body.',
 
 # Change password dialog
-'resetpass' => 'The caption of [[Special:ChangePassword]]
-
-{{Identical|Change password}}',
+'changepassword' => "Section heading on [[Special:Preferences]], tab 'User profile'.
+{{Identical|Change password}}",
 'resetpass_announce' => 'Used in [[Special:UserLogin]].',
 'resetpass_text' => '{{optional}}',
 'resetpass_header' => 'Header on box on special page [[Special:ChangePassword]].
@@ -1595,7 +1604,10 @@ Used on the account creation form when creating another user's account. Similar
 'resetpass_submit' => 'Submit button on [[Special:ChangePassword]]',
 'changepassword-success' => 'Used in [[Special:ChangePassword]].',
 'resetpass_forbidden' => "Used as error message in changing password. Maybe the external auth plugin won't allow local password changes.",
-'resetpass-no-info' => 'Error message for [[Special:ChangePassword]].',
+'resetpass-no-info' => 'Error message for [[Special:ChangePassword]].
+
+Parameters:
+* $1 (unused) - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
 'resetpass-submit-loggedin' => 'Button on [[Special:ResetPass]] to submit new password.
 
 {{Identical|Change password}}',
@@ -1666,7 +1678,10 @@ See also:
 'changeemail' => 'Title of [[Special:ChangeEmail|special page]].',
 'changeemail-header' => 'Header on [[Special:ChangeEmail]].',
 'changeemail-text' => 'Text of [[Special:ChangeEmail]].',
-'changeemail-no-info' => 'Error message for [[Special:ChangeEmail]].',
+'changeemail-no-info' => 'Error message for [[Special:ChangeEmail]].
+
+Parameters:
+* $1 (unused) - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
 'changeemail-oldemail' => 'Label for e-mail address field in [[Special:ChangeEmail]].',
 'changeemail-newemail' => 'Label for e-mail address field in [[Special:ChangeEmail]].',
 'changeemail-none' => "Probably appears in 'Current E-mail address' field when no address held, in [[Special:ChangeEmail]].
@@ -1780,7 +1795,8 @@ See also:
 See also:
 * {{msg-mw|Showdiff}}
 * {{msg-mw|Accesskey-diff}}
-* {{msg-mw|Tooltip-diff}}',
+* {{msg-mw|Tooltip-diff}}
+{{Identical|Show change}}',
 'anoneditwarning' => 'Shown when editing a page anonymously.
 See also:
 * {{msg-mw|Sf autoedit anoneditwarning}}
@@ -1857,10 +1873,14 @@ See also:
 {{Identical|Login required}}',
 'loginreqlink' => 'Take a look on inflection. Used as <code>$1</code> in the following messages:
 * {{msg-mw|loginreqpagetext}}
+* {{msg-mw|exception-nologin-text-manual}}
 * {{msg-mw|whitelistedittext}}
 * {{msg-mw|Uploadnologintext}}
-* {{msg-mw|watchlistanontext‎}}
-* {{msg-mw|Confirmemail needlogin}}
+* {{msg-mw|watchlistanontext}}
+* {{msg-mw|confirmemail_needlogin}}
+* {{msg-mw|changeemail-no-info}}
+* {{msg-mw|resetpass-no-info}}
+* {{msg-mw|prefsnologintext2}}
 {{Identical|Log in}}',
 'loginreqpagetext' => 'This message is displayed if an anonymous reader attempts to access a page which is only available to logged-in users.
 
@@ -1996,7 +2016,7 @@ Parameters:
 'semiprotectedpagewarning' => '{{Related|Semiprotectedpagewarning}}',
 'cascadeprotectedwarning' => 'Parameters:
 * $1 - number of pages, for PLURAL support',
-'titleprotectedwarning' => 'Warning message above the edit form when editing a page that has been protected aginst creation.',
+'titleprotectedwarning' => 'Warning message above the edit form when editing a page that has been protected against creation.',
 'templatesused' => 'Displayed below the page when editing it. It indicates a list of templates which are used on that page.
 
 Parameters:
@@ -2118,6 +2138,10 @@ Parameters:
 'editwarning-warning' => "{{doc-important|Do ''not'' use <nowiki>{{int:prefs-editing}}</nowiki> for \"Editing\". It is forbidden in this message, see [[mwr:68405]].}}
 
 but you can see the text of that button here: {{msg-mw|Prefs-editing}}",
+'editpage-notsupportedcontentformat-title' => 'Title of error page shown when using an incompatible format on EditPage',
+'editpage-notsupportedcontentformat-text' => 'Error message shown when using an incompatible format on EditPage. Parameters:
+* $1 - the format id
+* $2 - the content model name',
 
 # Content models
 'content-model-wikitext' => 'Name for the wikitext content model, used when decribing what type of content a page contains.
@@ -2247,10 +2271,17 @@ See also:
 
 # Account creation failure
 'cantcreateaccounttitle' => 'Used as title of the error message {{msg-mw|Cantcreateaccount-text}}.',
-'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|cantcreateaccounttitle}}.
+'cantcreateaccount-text' => 'Used as error message, with the title {{msg-mw|Cantcreateaccounttitle}}.
 * $1 - target IP address
-* $2 - reason or {{msg-mw|blockednoreason}}
-* $3 - username',
+* $2 - reason or {{msg-mw|Blockednoreason}}
+* $3 - username
+See also:
+* {{msg-mw|Cantcreateaccount-range-text}}',
+'cantcreateaccount-range-text' => "Used as more detailed version of the {{msg-mw|Cantcreateaccount-text}} error message, with the title {{msg-mw|Cantcreateaccounttitle}}.
+* $1 - target IP range
+* $2 - reason or {{msg-mw|Blockednoreason}}
+* $3 - username
+* $4 - current user's IP address",
 
 # History pages
 'viewpagelogs' => 'Link displayed in history of pages',
@@ -2378,14 +2409,6 @@ See [{{canonicalurl:x|feed=atom&action=history}} example].',
 {{doc-special|RevisionDelete|unlisted=1}}',
 'revdelete-nooldid-title' => '{{RevisionDelete}}',
 'revdelete-nooldid-text' => '{{RevisionDelete}}',
-'revdelete-nologtype-title' => 'See also:
-* {{msg-mw|Revdelete-nologtype-text}}',
-'revdelete-nologtype-text' => 'See also:
-* {{msg-mw|Revdelete-nologtype-title}}',
-'revdelete-nologid-title' => 'See also:
-* {{msg-mw|Revdelete-nologid-text}}',
-'revdelete-nologid-text' => 'See also:
-* {{msg-mw|Revdelete-nologid-title}}',
 'revdelete-no-file' => 'Used as error message in [[Special:RevisionDelete]].',
 'revdelete-show-file-confirm' => 'A confirmation message shown on [[Special:Revisiondelete]] when the request does not contain a valid token (e.g. when a user clicks a link received in mail).
 
@@ -2507,8 +2530,6 @@ Possible alternative message - "Restrictions could not be set on the visibility
 Parameters:
 * $1 - ...',
 'revdel-restore' => '{{RevisionDelete}}',
-'revdel-restore-deleted' => '{{RevisionDelete}}',
-'revdel-restore-visible' => '{{RevisionDelete}}',
 'pagehist' => '{{RevisionDelete}}
 Links to page history at Special:RevisionDelete header together with links to the logs and [[Special:Undelete]].
 {{Identical|Page history}}',
@@ -2772,25 +2793,10 @@ Parameters:
 
 Parameters:
 * $1 - the search term',
-'searchresulttext' => '{{doc-important|Do not translate <code><nowiki>[[{{MediaWiki:Helppage}}|{{int:help}}]]</nowiki></code>.}}
-See also:
-* {{msg-mw|Helppage}}
-* {{msg-mw|Help}}',
-'searchsubtitle' => 'Refers to {{msg-mw|Pipe-separator}}.
-
-Parameters:
-* $1 - search term
-See also:
-* {{msg-mw|Searchsubtitleinvalid}}',
-'searchsubtitleinvalid' => 'Parameters:
-* $1 - search term
-See also:
-* {{msg-mw|Searchsubtitle}}',
 'toomanymatches' => 'Used as section header in [[Special:Search]], when there are too many hits.',
 'titlematches' => 'Used as section header in [[Special:Search]].
 
 This message is followed by search results.',
-'notitlematches' => 'Header of results page after a search for a title for which no page exists',
 'textmatches' => 'When displaying search results',
 'notextmatches' => 'Error message when there are no results',
 'prevn' => "This is part of the navigation message on the top and bottom of Special pages (lists of things in alphabetical order, i.e. the '[[Special:Categories]]' page), where it is used as the first argument of {{msg-mw|Viewprevnext}}.
@@ -2827,18 +2833,16 @@ For Special pages, the navigation bar is prefixed by "({{msg-mw|Page first}} | {
 Viewprevnext is sometimes preceded by the {{msg-mw|Showingresults}} or {{msg-mw|Showingresultsnum}} message (for Special pages) or by the {{msg-mw|Linkshere}} message (for Whatlinkshere pages).
 
 Refers to {{msg-mw|Pipe-separator}}.',
-'searchmenu-legend' => '{{Identical|Search options}}',
 'searchmenu-exists' => 'An option shown in a menu beside search form offering a link to the existing page having the specified title (when using the default MediaWiki search engine).
 
 Parameters:
-* $1 - page title',
+* $1 - page title
+* $2 - the number of search results found',
 'searchmenu-new' => 'An option shown in a menu beside search form offering a red link to the not yet existing page having the specified title (when using the default MediaWiki search engine).
 
 Parameters:
-* $1 - page title',
-'searchmenu-prefix' => '{{doc-important|Do not translate "Special:PrefixIndex"}}
-Parameters:
-* $1 - prefix string',
+* $1 - page title
+* $2 - the number of search results found',
 'searchprofile-articles' => "A quick link in the advanced search box on [[Special:Search]]. Clicking on this link starts a search in the content pages of the wiki.
 
 A 'content page' is a page that forms part of the purpose of the wiki. It includes the main page and pages in the main namespace and any other namespaces that are included when the wiki is customised. For example on Wikimedia Commons 'content pages' include pages in the file and category namespaces. On Wikinews 'content pages' include pages in the Portal namespace. For technical definition of 'content namespaces' see [[mw:Manual:Using_custom_namespaces#Content_namespaces|MediaWiki]].
@@ -2918,7 +2922,6 @@ Parameters:
 'search-interwiki-more' => '{{Identical|More}}',
 'search-relatedarticle' => 'This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]
 {{Identical|Related}}',
-'mwsuggest-disable' => "The text of an option on the 'search options' tab of a user's Preferences.",
 'searcheverything-enable' => 'Used in [[Special:Preferences]], tab "Search".',
 'searchrelated' => 'This is a search result (and I guess search engine) dependent messages. I do not know how to trigger the feature. The message is displayed if the search result contains information that related pages can also be provided from the search engine. I assume this is "More Like This" functionality. Microsoft glossary defines MLT as "A way to refine search by identifying the right set of documents and then locating similar documents. This allows the searcher to control the direction of the search and focus on the most fruitful lines of inquiry."[http://www.microsoft.com/enterprisesearch/en/us/search-glossary.aspx]
 {{Identical|Related}}',
@@ -2940,18 +2943,12 @@ See also:
 * $3 - total number of results
 * $4 - the search term
 * $5 - number of results',
-'nonefound' => 'This message appears on the search results page if no results are found.
-{{doc-important|Do not translate "all:".}}',
 'search-nonefound' => 'Message shown when a search returned no results (when using the default MediaWiki search engine).',
-'powersearch' => 'Verb. Text of search button at the bottom of [[Special:Search]], for searching in selected namespaces.
-
-{{Identical|Advanced search}}',
 'powersearch-legend' => 'Advanced search
 
 {{Identical|Advanced search}}',
 'powersearch-ns' => 'Used in the extended search form at [[Special:Search]]',
 'powersearch-redir' => 'Used in the extended search form at [[Special:Search]]',
-'powersearch-field' => 'Used in the extended search form at [[Special:Search]]',
 'powersearch-togglelabel' => 'Used in [{{canonicalurl:Special:Search|advanced=1}} Advanced search]. Synonym: "Select" as verb.
 {{Identical|Check}}',
 'powersearch-toggleall' => '"All" refers to namespaces. It is used in Advanced search: {{canonicalurl:Special:Search|advanced=1}}
@@ -2979,8 +2976,6 @@ See also:
 'prefs-edits' => 'In user preferences.',
 'prefsnologintext2' => 'Parameters:
 * $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
-'changepassword' => "Section heading on [[Special:Preferences]], tab 'User profile'.
-{{Identical|Change password}}",
 'prefs-skin' => 'Used in user preferences.
 {{Identical|Skin}}',
 'skin-preview' => '{{doc-actionlink}}
@@ -3037,7 +3032,6 @@ See also:
 * {{msg-mw|Accesskey-preferences-save}}
 * {{msg-mw|Tooltip-preferences-save}}
 {{Identical|Save}}',
-'resetprefs' => 'Button for resetting changes in the preferences page.',
 'restoreprefs' => 'Used as link text in [[Special:Preferences]]. The link points to [[Special:Preferences/reset]] which shows the "Restore all default settings" form.
 
 Also used as label for the Submit button in [[Special:Preferences/reset]].',
@@ -3048,10 +3042,9 @@ When changing this message, please also update {{msg-mw|vector-editwarning-warni
 {{Identical|Row}}',
 'columns' => 'Used on [[Special:Preferences]], "Editing" section in the "Size of editing window" fieldset.
 {{Identical|Column}}',
-'searchresultshead' => 'This is the label of the tab in [[Special:Preferences|my preferences]] which contains options for searching the wiki.
+'searchresultshead' => 'Replaced by {{msg-mw|prefs-searchoptions}}, though may still be used in some extensions. DEPRECATED.
 
 {{Identical|Search}}',
-'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
 'stub-threshold' => 'Used in [[Special:Preferences]], tab "Misc".',
 'stub-threshold-disabled' => 'Used in [[Special:Preferences]].
 {{Identical|Disabled}}',
@@ -3073,7 +3066,6 @@ This option lets your time zone setting use the one that is used on the wiki (of
 Parameters:
 * $1 - timezone name, or timezone offset (in "%+03d:%02d" format)',
 'timezoneuseoffset' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.',
-'timezoneoffset' => "Text next to input box in [[Special:Preferences]], tab 'date and time', section 'timezone'.",
 'servertime' => 'Used as label in [[Special:Preferences#mw-prefsection-datetime|preferences]].',
 'guesstimezone' => 'Option to fill in the timezone from the browser setting',
 'timezoneregion-africa' => 'Used in "Time zone" listbox in [[Special:Preferences#mw-prefsection-datetime|preferences]], "date and time" tab.
@@ -3247,6 +3239,7 @@ Used in [[Special:Preferences]], tab "Watchlist".
 The checkbox has the label {{msg-mw|Tog-prefershttps}}.
 
 See example: [[mw:Special:Preferences]].',
+'prefs-tabs-navigation-hint' => 'Hint message that explains the arrow key navigation for the tabs on [[Special:Preferences]] to screenreader users.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Used as hint for {{msg-mw|changeemail-newemail}} field in [[Special:ChangeEmail]], when the provided E-mail address is valid.',
@@ -3614,23 +3607,10 @@ See also:
 'recentchanges-label-plusminus' => 'Legend item for plus/minus.
 
 Preceded by legend example {{msg-mw|Recentchanges-legend-plusminus}}.',
+'recentchanges-legend-heading' => 'Used as a heading for legend box on [[Special:RecentChanges]] and [[Special:Watchlist]].
+{{Identical|Legend}}',
 'recentchanges-legend-newpage' => 'Used as legend in [[Special:RecentChanges]]. Preceded by {{msg-mw|Recentchanges-label-newpage}}.',
 'recentchanges-legend-plusminus' => 'A plus/minus sign with a number for the legend.',
-'rcnote' => 'Used on [[Special:RecentChanges]].
-
-Similar to {{msg-mw|wlnote}} which is used on [[Special:Watchlist]].
-
-Parameters:
-* $1 - the number of changes shown
-* $2 - the number of days for which the changes are shown
-* $3 - (Unused) a date and time
-* $4 - a date alone
-* $5 - a time alone
-
- <!--Example: "\'\'Below are the last 50 changes in the last 7 days, as of 14:48, 24 January 2008.\'\'"-->
- Example: "\'\'{{int:rcnote/en|50|7||24 January 2008|14:48}}\'\'"
-See also:
-* {{msg-mw|Rcnotefrom}}',
 'rcnotefrom' => 'This message is displayed at [[Special:RecentChanges]] when viewing recentchanges from some specific time.
 
 The corresponding message is {{msg-mw|Rclistfrom}} (without split of date and time, [[bugzilla:19104|Bug 19104]]).
@@ -3639,9 +3619,7 @@ Parameters:
 * $1 - the maximum number of changes that are displayed
 * $2 - a date and time
 * $3 - (Optional) a date
-* $4 - (Optional) a time
-See also:
-* {{msg-mw|Rcnote}}',
+* $4 - (Optional) a time',
 'rclistfrom' => 'Used on [[Special:RecentChanges]].
 
 Parameters:
@@ -4067,7 +4045,14 @@ This message is followed by the gallery of the duplicate files.
 Parameters:
 * $1 - number of duplicate files',
 'file-deleted-duplicate' => 'Used in [[Special:Upload]. Parameters:
-* $1 - page title of the file',
+* $1 - page title of the file
+
+See also:
+* {{msg-mw|file-deleted-duplicate-notitle}}',
+'file-deleted-duplicate-notitle' => 'Used in [[Special:Upload]] when the title of the deleted duplicate is not available.
+
+See also:
+* {{msg-mw|file-deleted-duplicate}}',
 'uploadwarning' => 'Used as section header in [[Special:Upload]].',
 'uploadwarning-text' => 'Used in [[Special:Upload]].',
 'savefile' => 'When uploading a file',
@@ -4223,22 +4208,22 @@ See also:
 
 # File backend
 'backend-fail-stream' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-backup' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-notexists' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-hashes' => 'Definition of "[[w:en:Hash_function|hashes]]".',
 'backend-fail-notsame' => 'Parametreler:
 * $1 bir dosya ismi.',
 'backend-fail-invalidpath' => 'Parameters:
-* $1 is a storage path.',
+* $1 - a storage path',
 'backend-fail-delete' => 'Parameters:
-* $1 is a file path.',
+* $1 - a file path',
 'backend-fail-describe' => 'Parameters:
-* $1 is a file path.',
+* $1 - a file path',
 'backend-fail-alreadyexists' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-store' => 'Parameters:
 * $1 - a filename
 * $2 - a storage path',
@@ -4258,7 +4243,7 @@ See also:
 * $1 - filename
 {{Related|Backend-fail}}',
 'backend-fail-create' => 'Parameters:
-* $1 is a filename.',
+* $1 - a filename',
 'backend-fail-maxsize' => 'Parameters:
 * $1 - destination storage path
 * $2 - max file size (in bytes)',
@@ -4290,7 +4275,7 @@ Parameters:
 
 A "[[:wikipedia:Front and back ends|backend]]" is a system or component that ordinary users don\'t interact with directly and don\'t need to know about, and that is responsible for a distinct task or service - for example, a storage back-end is a generic system for storing data which other applications can use. Possible alternatives for back-end are "system" or "service", or (depending on context and language) even leave it untranslated.',
 'backend-fail-usable' => 'Parameters:
-* $1 is the file name, including the path, formatted for the storage backend used',
+* $1 - the file name, including the path, formatted for the storage backend used',
 
 # File journal errors
 'filejournal-fail-dbconnect' => 'Parameters:
@@ -4889,7 +4874,19 @@ See also:
 Parameters:
 * $1 - the number of interwiki links",
 'nlinks' => 'This appears in brackets after each entry on the special page [[Special:MostLinked]]. $1 is the number of wiki links.',
-'nmembers' => 'Appears in brackets after each category listed on the special page [[Special:WantedCategories]]. $1 is the number of members of the category.',
+'nmembers' => 'Appears in brackets after each category listed on the special page [[Special:WantedCategories]].
+
+Parameters:
+* $1 - the number of members of the category
+See also:
+* {{msg-mw|Nmemberschanged}}',
+'nmemberschanged' => 'Appears in brackets after each category listed on the special page [[Special:WantedCategories]] if the number of pages in the category has changed since the list was last refreshed.
+
+Parameters:
+* $1 - the original number of members of the category
+* $2 - the current one
+See also:
+* {{msg-mw|Nmembers}}',
 'nrevisions' => 'Used as link text in [[Special:FewestRevisions]].
 
 The link points to the page history (action=history).
@@ -4956,10 +4953,10 @@ See the following search results:
 'protectedpages' => '{{doc-special|ProtectedPages}}',
 'protectedpages-indef' => 'Option in [[Special:ProtectedPages]]',
 'protectedpages-cascade' => 'Option in [[Special:ProtectedPages]]',
-'protectedpagestext' => 'Shown on top of [[Special:ProtectedPages]]',
+'protectedpages-noredirect' => 'Option in [[Special:ProtectedPages]].
+{{Identical|Hide redirect}}',
 'protectedpagesempty' => 'Used in [[Special:ProtectedPages]], when there are no protected pages with the specified parameters.',
 'protectedtitles' => '{{doc-special|ProtectedTitles}}',
-'protectedtitlestext' => 'Shown on top of list of titles on [[Special:ProtectedTitles]]. If the list is empty the message [[MediaWiki:Protectedtitlesempty]] appears instead of this. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
 'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
 'listusers' => '{{doc-special|ListUsers}}',
 'listusers-editsonly' => 'Option in [[Special:ListUsers]].',
@@ -4996,7 +4993,7 @@ See also:
 See also:
 * {{msg-mw|Notargettitle|title}}
 * {{msg-mw|Notargettext|text}}',
-'nopagetitle' => 'Used as title of [[Special:MovePage]], when the oldtitle does not exist.
+'nopagetitle' => 'Used as title on special pages like [[Special:MovePage]] (when the oldtitle does not exist) or [[Special:PermaLink]].
 
 The text is {{msg-mw|nopagetext}}.
 
@@ -5083,19 +5080,6 @@ Parameters:
 See also:
 * {{msg-mw|Allnotinnamespace}}
 {{Identical|All pages}}',
-'allnotinnamespace' => 'Presumably intended to be used as a page title of [[Special:Allpages]] and probably also in [[Special:PrefixIndex]] when the user limit the display to other than a certain namespace.
-
-Parameters:
-* $1 - namespace name
-See also:
-* {{msg-mw|Allinnamespace}}
-{{Identical|All pages}}',
-'allpagesprev' => "Allegedly used in [[Special:AllPages]], although I haven't seen it.
-
-{{Identical|Previous}}",
-'allpagesnext' => "Allegedly used in [[Special:AllPages]], although I haven't seen it.
-
-{{Identical|Next}}",
 'allpagessubmit' => 'Text on submit button in [[Special:AllPages]], [[Special:RecentChanges]], [[Special:RecentChangesLinked]], [[Special:NewPages]], [[Special:Log]], [[Special:ListUsers]], [[Special:ProtectedPages]], [[Special:ProtectedTitles]], [[Special:WhatLinksHere]] and [[Special:Watchlist]].
 
 {{Identical|Go}}',
@@ -5103,7 +5087,8 @@ See also:
 'allpagesbadtitle' => 'Used in [[Special:AllPages]], [[Special:PrefixIndex]] and [[Special:RecentChangesLinked]].',
 'allpages-bad-ns' => 'Used as error message. Parameters:
 * $1 - namespace name, other than "Main" namespace',
-'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].',
+'allpages-hide-redirects' => 'Label for a checkbox. If the checkbox is checked redirects will not be shown in the list. Used in [[Special:PrefixIndex]] and [[Special:Allpages]].
+{{Identical|Hide redirect}}',
 
 # SpecialCachedPage
 'cachedspecial-viewing-cached-ttl' => 'Message notifying they are watching a cached page. $1 is a duration (ie "1 hour and 30 minutes")',
@@ -5433,9 +5418,7 @@ See also:
 * {{msg-mw|Watchlist-details}}',
 'iteminvalidname' => 'Parameters:
 * $1 - item name',
-'wlnote' => 'Used on [[Special:Watchlist]] when the maximum number of days is specified.
-
-Similar to {{msg-mw|rcnote}} which is used on [[Special:RecentChanges]].
+'wlnote' => 'Used on [[Special:Watchlist]] when a maximum number of hours or days is specified.
 
 Parameters:
 * $1 - the number of changes shown
@@ -5630,6 +5613,7 @@ See also:
 * $1 - the upper limit of number of revisions
 See also:
 * {{msg-mw|Delete-toobig}}',
+'deleting-backlinks-warning' => 'A warning shown when a page that is being deleted has links to it.',
 
 # Rollback
 'rollback' => '{{Identical|Rollback}}',
@@ -5935,8 +5919,6 @@ Example (in English):
 'undeleteviewlink' => 'First part of {{msg-mw|undeletelink}}.
 Display name of link to view a deleted page used on [[Special:Log/delete]].
 {{Identical|View}}',
-'undeletereset' => 'Shown on [[Special:Undelete]] as button caption.
-{{Identical|Reset}}',
 'undeleteinvert' => '{{Identical|Invert selection}}',
 'undeletecomment' => '{{Identical|Reason}}',
 'undeletedrevisions' => 'Used as reason in the log entry. Parameters:
@@ -6014,15 +5996,17 @@ Parameters:
 * $3 - the time of the displayed revision
 {{Identical|Are you sure you want to view the deleted revision of the file...}}',
 'undelete-show-file-submit' => '{{Identical|Yes}}',
-'undelete-revisionrow' => "{{Optional}}
+'undelete-revision-row' => "{{Optional}}
 A revision row in the undelete page. Parameters:
 * $1 is a checkBox to indicate whether to restore this specific revision
 * $2 is a link to the revision
 * $3 is a link to the last revision of a page ({{msg-mw|last}})
 * $4 is a link to the page
 * $5 is a link to the revision's user
-* $6 is the revision size
-* $7 is the revision comment",
+* $6 is the revision's minor edit identifier
+* $7 is the revision size
+* $8 is the revision comment
+* $9 is the revision's tags",
 
 # Namespace form on various pages
 'namespace' => 'This message is located at [[Special:Contributions]].
@@ -6265,10 +6249,9 @@ See also:
 'block' => '{{doc-special|Block}}
 {{Identical|Block user}}',
 'unblock' => '{{doc-special|Unblock}}',
-'blockip' => 'The title of the special page [[Special:BlockIP]].
+'blockip' => 'Used as the text of a link in the sidebar toolbox. Clicking this link takes you to [[Special:Block]], with a relevant username or IP address (e.g. "Username" on [[User talk:Username]], [[Special:Contributions/Username]], etc.) already filled in.
 
 {{Identical|Block user}}',
-'blockip-title' => '{{Identical|Block user}}',
 'blockip-legend' => 'Legend/Header for the fieldset around the input form of [[Special:Block]].
 
 {{Identical|Block user}}',
@@ -6285,7 +6268,6 @@ See also:
 'ipbreason' => 'Label of the block reason dropdown in [[Special:BlockIP]] and the unblock reason textfield in [{{fullurl:Special:IPBlockList|action=unblock}} Special:IPBlockList?action=unblock].
 
 {{Identical|Reason}}',
-'ipbreasonotherlist' => '{{Identical|Other reason}}',
 'ipbreason-dropdown' => 'Used as item list for dropdown on [[Special:Block]].
 
 The label for this dropdown is {{msg-mw|Ipbreason}}.',
@@ -6322,8 +6304,6 @@ See also:
 'ipboptions' => "{{doc-important|Be careful: '''1 translation:1 english''', so the first part is the translation and the second part should stay in English.}}
 Options for the duration of the block. Example: See e.g. [[MediaWiki:Ipboptions/nl]] if you still don't know how to do it.
 {{Identical|Infinite}}",
-'ipbotheroption' => '{{Identical|Other}}',
-'ipbotherreason' => '{{Identical|Other/additional reason}}',
 'ipbhidename' => 'This is the label for a checkbox in the user block form on [[Special:Block]].
 
 See also:
@@ -6811,7 +6791,6 @@ See also:
 * {{msg-mw|move-watch|label for checkbox}}
 {{Identical|Move page}}',
 'moveuserpage-warning' => 'Used as warning in [[Special:MovePage]], when moving a user page.',
-'movenologin' => '{{Identical|Not logged in}}',
 'movenologintext' => "Text of message on special page 'Permissions Errors', which appears when somebody tries to move a page without being logged in.
 
 See also:
@@ -7882,6 +7861,7 @@ CSS applied to users using Monobook skin.',
 'print.css' => '{{optional}}',
 'noscript.css' => '{{optional}}',
 'group-autoconfirmed.css' => '{{doc-group|autoconfirmed|css}}',
+'group-user.css' => '{{doc-group|user|css}}',
 'group-bot.css' => '{{doc-group|bot|css}}',
 'group-sysop.css' => '{{doc-group|sysop|css}}',
 'group-bureaucrat.css' => '{{doc-group|bureaucrat|css}}',
@@ -7895,6 +7875,7 @@ JS for users using Monobook skin.',
 'modern.js' => '{{optional}}',
 'vector.js' => '{{optional}}',
 'group-autoconfirmed.js' => '{{doc-group|autoconfirmed|js}}',
+'group-user.js' => '{{doc-group|user|js}}',
 'group-bot.js' => '{{doc-group|bot|js}}',
 'group-sysop.js' => '{{doc-group|sysop|js}}',
 'group-bureaucrat.js' => '{{doc-group|bureaucrat|js}}',
@@ -8033,7 +8014,8 @@ The label and the input box are always hidden.',
 'pageinfo-display-title' => 'The title that is displayed when the page is viewed.',
 'pageinfo-default-sort' => 'The key by which the page is sorted in categories by default.',
 'pageinfo-length' => 'The length of the page, in bytes.',
-'pageinfo-article-id' => 'The numeric identifier of the page.',
+'pageinfo-article-id' => 'The numeric identifier of the page.
+{{Identical|Page ID}}',
 'pageinfo-language' => 'Language in which the page content is written.',
 'pageinfo-content-model' => 'The model in which the page content is written.
 
@@ -8058,7 +8040,8 @@ Preceded by the label {{msg-mw|Pageinfo-robot-policy}}.',
 'pageinfo-few-watchers' => 'Message displayed when there are fewer than $wgUnwatchedPageThreshold watchers. $1 is the value of $wgUnwatchedPageThreshold.',
 'pageinfo-redirects-name' => 'Header of the row in the first table of the info action.
 
-Followed by the number of redirects to the page.
+Followed by {{msg-mw|Pageinfo-redirects-value}}.
+
 Used as link text. The link points to "{{int:Whatlinkshere-title}}" page ([[Special:WhatLinksHere]]).
 
 See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
@@ -8067,7 +8050,8 @@ Parameters:
 * $1 - the number of redirects to the page',
 'pageinfo-subpages-name' => 'Header of the row in the first table of the info action.
 
-Followed by the number of subpages of the page.
+Followed by {{msg-mw|Pageinfo-subpages-value}}.
+
 Used as link text. The link points to the "{{int:Prefixindex}}" page ([[Special:PrefixIndex]]).
 
 See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
@@ -9444,11 +9428,6 @@ Parameters:
 * $1 - numeric priority. Most specs define 0 and 9 to either be reserved or not allowed. However the exiftool documentation defines 0 to be reserved and 9 to be user-defined priority.
 {{Related|Exif-urgency}}',
 
-# External editor support
-'edit-externally' => 'Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
-'edit-externally-help' => '{{doc-important|Please leave the link "<code>https://www.mediawiki.org/wiki/Manual:External_editors</code>" exactly as it is.}}
-Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Appears on [[Special:Watchlist]].
 
@@ -9458,9 +9437,6 @@ Used as <code>$3</code> in the message {{msg-mw|Wlshowlast}}.
 
 {{Identical|All}}',
 'monthsall' => 'Used in a drop-down box on [[Special:Contributions]] as an option for "all months". See also {{msg-mw|Month}}.
-{{Identical|All}}',
-'limitall' => 'Used on [[Special:AllMessages]] (and potentially other TablePager based tables) to display "all" the messages.
-
 {{Identical|All}}',
 
 # Email address confirmation
@@ -9480,10 +9456,11 @@ See also:
 * {{msg-mw|Confirmemail oncreate}}',
 'confirmemail_invalid' => 'Error message on [[Special:ConfirmEmail]] on error of confirmation.',
 'confirmemail_needlogin' => 'Used on [[Special:ConfirmEmail]] when you are logged out.
-* $1 is a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
+
+Parameters:
+* $1 - a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
 'confirmemail_success' => 'Explanation on [[Special:ConfirmEmail]] on completion of confirmation.',
 'confirmemail_loggedin' => 'Explanation on [[Special:ConfirmEmail]] on completion of confirmation.',
-'confirmemail_error' => 'Error message on [[Special:ConfirmEmail]]',
 'confirmemail_subject' => 'Subject of the e-mail sent to user during e-mail address confirmation
 {{Identical|SITENAME e-mail address confirmation}}',
 'confirmemail_body' => 'Body of the email sent to user when their account is created or they confirm their email address.
@@ -9606,6 +9583,34 @@ See also:
 See also:
 * {{msg-mw|Imgmultigo|Submit button text}}',
 
+# Language selector for translatable SVGs
+'img-lang-opt' => '{{optional}}
+Items in the language drop down on the image page for a translated SVG file. For an example see [[:File:Gerrit patchset 25838 test.svg]].
+
+Parameters:
+* $1 - language code
+* $2 - language name (Either in the language in question, or the name of that language translated to the current users interface language)
+See also:
+* {{msg-mw|Img-lang-info}}',
+'img-lang-default' => 'An option in the drop down of a translatable file. For example see [[:File:Gerrit patchset 25838 test.svg]].
+
+Used when it cannot be determined what the default fallback language is.
+
+However it should be noted that most of the time, the content displayed for this option would be in English.
+{{Identical|Default language}}',
+'img-lang-info' => 'Label for drop down box. Appears underneath the image on the image description page. See [[:File:Gerrit patchset 25838 test.svg]] for an example.
+
+Parameters:
+* $1 - a drop down box with language options, uses the following messages:
+** {{msg-mw|Img-lang-default}}
+** {{msg-mw|Img-lang-opt}}. e.g. "English (en)", "日本語 (ja)"
+* $2 - a submit button, which uses the text from {{msg-mw|Img-lang-go}}',
+'img-lang-go' => 'Go button for the language select for translatable files. See [[:File:Gerrit patchset 25838 test.svg]] for an example.
+
+See also:
+* {{msg-mw|img-lang-info}}
+{{Identical|Go}}',
+
 # Table pager
 'ascending_abbrev' => 'Abbreviation of ascending order.
 See also:
@@ -9943,18 +9948,50 @@ This message is followed by the list of parser extension tags like <code><nowiki
 'version-parser-function-hooks' => 'Shown in [[Special:Version]]',
 'version-hook-name' => 'Shown in [[Special:Version]]',
 'version-hook-subscribedby' => 'Shown in [[Special:Version]]',
-'version-version' => 'Used in [[Special:Version]].
-
-Preceded by the MediaWiki extension name.
+'version-version' => '{{Optional}}
+Used in [[Special:Version]]. Preceded by the MediaWiki extension name.
 
 Parameters:
-* $1 - version number of the extension
-{{Identical|Version}}',
+* $1 - version number of the extension',
 'version-svn-revision' => '{{Identical|Revision}}{{optional}}
 Used in [[Special:Version]], preceeding the Subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345"). Parameters:
 * $1 - (Unused) directory revision number or empty string
 * $2 - checkout revision number',
-'version-license' => '{{Identical|License}}',
+'version-license' => 'Used specifically for the MediaWiki software.
+
+Used as heading in [[Special:Version]].',
+'version-ext-license' => "Used in [[Special:Version]].
+
+Used as label for the link pointing to the extension's license page. e.g. [[Special:Version/License/Maps]]
+{{Identical|License}}",
+'version-ext-colheader-name' => 'Column header for the name of an extension.
+{{Identical|Extension}}',
+'version-ext-colheader-version' => 'Column header for describing an extensions version.
+{{Identical|Version}}',
+'version-ext-colheader-license' => 'Column header for describing an extensions license.
+{{Identical|License}}',
+'version-ext-colheader-description' => 'Column header for the description of an extension.
+{{Identical|Description}}',
+'version-ext-colheader-credits' => 'Column header for the list of authors and credits for an extension.
+{{Identical|Author}}',
+'version-license-title' => 'Page title for an extended license for a piece of software.
+
+Used as page title for the license page. e.g. [[Special:Version/License/Maps]].
+
+Parameters:
+* $1 - the name of software',
+'version-license-not-found' => 'Descriptive error used when detailed license text for a piece of software is not found.
+
+See example: [[Special:Version/License/Foo]]',
+'version-credits-title' => 'Page title for an about/credits page for a MediaWiki extension.
+
+Used as heading in credits page. e.g. [[Special:Version/Credits]] and [[Special:Version/Credits/UniversalLanguageSelector]]
+
+Parameters:
+* $1 - the name of the extension',
+'version-credits-not-found' => 'Descriptive error used when detailed about/credits for an extension are not available.
+
+See example: [[Special:Version/Credits/Foo]]',
 'version-poweredby-credits' => 'Message shown on [[Special:Version]]. Parameters:
 * $1 - the current year
 * $2 - a list of selected MediaWiki authors',
@@ -9983,7 +10020,7 @@ A short description of the script path entry point. Links to the mediawiki.org d
 
 # Special:Redirect
 'redirect' => "{{doc-special|Redirect}}
-This means \"Redirect by file'''name''', user '''ID''', or revision ID\".",
+This means \"Redirect by file'''name''', user '''ID''', page '''ID''', or revision ID\".",
 'redirect-legend' => 'Legend of fieldset around input box in [[Special:Redirect]]',
 'redirect-summary' => 'Shown at top of [[Special:Redirect]]',
 'redirect-submit' => 'Button label in [[Special:Redirect]].
@@ -9992,12 +10029,15 @@ This means \"Redirect by file'''name''', user '''ID''', or revision ID\".",
 
 Followed by the select box which has the following options:
 * {{msg-mw|Redirect-user}}
+* {{msg-mw|Redirect-page}}
 * {{msg-mw|Redirect-revision}}
 * {{msg-mw|Redirect-file}}',
 'redirect-value' => 'Second field label in [[Special:Redirect]]
 {{Identical|Value}}',
 'redirect-user' => 'Description of lookup type for [[Special:Redirect]].
 {{Identical|User ID}}',
+'redirect-page' => 'Description of lookup type for [[Special:Redirect]].
+{{Identical|Page ID}}',
 'redirect-revision' => "Description of lookup type for [[Special:Redirect]].
 
 This means \"Page revision '''ID'''\".",
@@ -10052,7 +10092,7 @@ See also:
 'specialpages-group-media' => '{{doc-special-group|like=[[Special:FilePath]], [[Special:MIMESearch]] and [[Special:Upload]]}}',
 'specialpages-group-users' => '{{doc-special-group|like=[[Special:ActiveUsers]], [[Special:Contributions]] and [[Special:ListGroupRights]]}}',
 'specialpages-group-highuse' => '{{doc-special-group|like=[[Special:MostCategories]], [[Special:MostLinked]] and [[Special:MostRevisions]]}}',
-'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]], 
+'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]],
 [[Special:Disambiguations]], etc}}',
 'specialpages-group-pagetools' => '{{doc-special-group|like=[[Special:MovePage]], [[Special:Undelete]], [[Special:WhatLinksHere]], [[Special:Export]] etc}}',
 'specialpages-group-wiki' => '{{doc-special-group|like=[[Special:Version]], [[Special:Statistics]], [[Special:LockDB]], etc}}',
@@ -10076,7 +10116,7 @@ See definition of [[w:Regular_expression|regular expression]] on Wikipedia.",
 # Special:Tags
 'tags' => "Shown on [[Special:Specialpages]] for page listing the tags that the software may mark an edit with, and their meaning. For more information on tags see [[mw:Manual:Tags|MediaWiki]].
 
-It appears that the word 'valid' describes 'tags', not 'change'. It also appears that you could use the term 'defined' instead of 'valid', or perhaps use a phrase meaning 'Change tags in use'.",
+It appears that the word 'valid' describes 'tags', not 'change'. It also appears that you could use the term 'defined' instead of 'valid', or perhaps use a phrase meaning 'The change tags that are in use'.",
 'tag-filter' => 'Caption of a filter shown on lists of changes (e.g. [[Special:Log]], [[Special:Contributions]], [[Special:Newpages]], [[Special:Recentchanges]], [[Special:Recentchangeslinked]], page histories)',
 'tag-filter-submit' => 'Caption of the submit button displayed next to the tag filter on lists of changes (e.g. [[Special:Log]], [[Special:Contributions]], [[Special:Newpages]], [[Special:Recentchanges]], [[Special:Recentchangeslinked]], page histories)
 
@@ -10118,7 +10158,6 @@ Parameters:
 
 # Special:ComparePages
 'comparepages' => 'The title of [[Special:ComparePages]]',
-'compare-selector' => 'Header of the form on [[Special:ComparePages]]',
 'compare-page1' => 'Label for the field of the 1st page in the comparison for [[Special:ComparePages]]
 {{Identical|Page}}',
 'compare-page2' => 'Label for the field of the 2nd page in the comparison for [[Special:ComparePages]]
@@ -10442,6 +10481,7 @@ See also:
 'api-error-overwrite' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-stashfailed' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-publishfailed' => 'API error message that can be used for client side localisation of API errors.',
+'api-error-stasherror' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-timeout' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-unclassified' => 'API error message that can be used for client side localisation of API errors.',
 'api-error-unknown-code' => 'API error message that can be used for client side localisation of API errors.
@@ -10559,10 +10599,31 @@ For more information, see [[mw:Extension:ExpandTemplates]]',
 'expand_templates_input' => '{{Identical|Input text}}',
 'expand_templates_output' => '{{Identical|Result}}',
 'expand_templates_xml_output' => 'Used as HTML <code><nowiki><h2></nowiki></code> heading.',
+'expand_templates_html_output' => 'Used as HTML <code><nowiki><h2></nowiki></code> heading.',
 'expand_templates_ok' => '{{Identical|OK}}',
 'expand_templates_remove_comments' => 'Check box to tell [[mw:Extension:ExpandTemplates]] to not show comments in the expanded template.',
-'expand_templates_remove_nowiki' => 'Option on [[Special:Expandtemplates]]',
+'expand_templates_remove_nowiki' => "Option on [[Special:Expandtemplates]]
+
+Here's what the tick box does:
+
+For:
+<pre>
+&lt;nowiki>test&lt;/nowiki>
+</pre>
+
+Not ticked:
+<pre>
+&lt;nowiki>test&lt;/nowiki>
+</pre>
+
+Ticked:
+<pre>
+test
+</pre>",
 'expand_templates_generate_xml' => 'Used as checkbox label.',
+'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
 'expand_templates_preview' => '{{Identical|Preview}}',
 
+# Unknown messages
+'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
 );
index 611cf3d..e884afe 100644 (file)
@@ -46,7 +46,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'MawkaPanqa' ),
        'Blankpage'                 => array( 'PanqataChusaqchay' ),
        'Block'                     => array( 'Harkay', 'RuraqtaHarkay', 'IPHarkay' ),
-       'Blockme'                   => array( 'Harkaway' ),
        'Booksources'               => array( 'PukyuLiwru' ),
        'BrokenRedirects'           => array( 'PantaPusapuna', 'PitisqaPusapuna' ),
        'Categories'                => array( 'Katiguriyakuna' ),
@@ -56,7 +55,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'RakiqunaKamariy' ),
        'Deadendpages'              => array( 'Lluqsinannaq' ),
        'DeletedContributions'      => array( 'QullusqaRurasqa', 'QullusqaLlamkapusqa' ),
-       'Disambiguations'           => array( 'SutichanaQillqa' ),
        'DoubleRedirects'           => array( 'IskayllaPusapuna' ),
        'Emailuser'                 => array( 'EChaskitaManakuy' ),
        'Export'                    => array( 'HawamanQuy' ),
@@ -192,7 +190,7 @@ $magicWords = array(
        'img_center'                => array( '1', 'chawpi', 'centro', 'centrado', 'centrada', 'centrar', 'center', 'centre' ),
        'img_framed'                => array( '1', 'inchuyuq', 'inchu', 'marco', 'enmarcado', 'enmarcada', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'inchunnaq', 'sinmarco', 'sin_embarcar', 'sinenmarcar', 'sin_enmarcar', 'frameless' ),
-       'img_page'                  => array( '1', 'panqa=$1', 'pagina=$1', 'página=$1', 'pagina $1', 'página $1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ),
+       'img_page'                  => array( '1', 'panqa=$1', 'pagina=$1', 'página=$1', 'pagina_$1', 'página_$1', 'page=$1', 'page $1' ),
        'img_upright'               => array( '1', 'sayaq', 'sayaq=$1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'saywa', 'borde', 'border' ),
        'img_baseline'              => array( '1', 'tiksisiqi', 'baseline' ),
@@ -287,7 +285,6 @@ $messages = array(
 'tog-minordefault' => 'Tukuy hukchasqakunata kikinmanta aslla nispa sananchay',
 'tog-previewontop' => "Rikch'ay qhawana ñawpaqman, ama qhipanpi kachunchu",
 'tog-previewonfirst' => "Manaraq llamk'apuspa rikch'ayta qhaway",
-'tog-nocache' => "Llika wamp'unap ''cache'' nisqa paki hallch'anman ama niy",
 'tog-enotifwatchlistpages' => "Watiqasqay p'anqa icha willañiqi hukchasqa kaptinqa, e-chaskita kachamuway",
 'tog-enotifusertalkpages' => "Rimachinay p'anqa hukchasqa kaptinqa, e-chaskita kachamuway",
 'tog-enotifminoredits' => "P'anqapi icha willañiqipi uchuy hukchasqamantapas willawaspa e-chaskita kachamuway",
@@ -423,7 +420,6 @@ $messages = array(
 'qbedit' => "Llamk'apuy",
 'qbpageoptions' => "P'anqap akllanankuna",
 'qbmyoptions' => 'Akllanaykuna',
-'qbspecialpages' => "Sapaq p'anqakuna",
 'faq' => 'Pasaq tapuykuna',
 'faqpage' => 'Project:Pasaq tapuykuna',
 
@@ -638,9 +634,6 @@ Manam nirqanchu imarayku.",
 'perfcached' => "Kay qatiq willakunaqa ''cache'' nisqa pakasqa hallch'apim kachkan, chayrayku manañachá musuqchasqachu. {{PLURAL:$1|Huklla|$1-lla}} taripasqam pakasqa hallch'api aypalla kachkan, manam aswanchu.",
 'perfcachedts' => "Kay willakunaqa hallch'asqam. Qhipaq musuqchasqaqa $1 karqan. {{PLURAL:$4|Huklla|$4-lla}} taripasqam pakasqa hallch'api aypalla kachkan, manam aswanchu.",
 'querypage-no-updates' => "Kay p'anqata musuqchayqa manam atichkanchu. Kunanqa kaypi willakuna manam musuqchasqachu kanqa.",
-'wrong_wfQuery_params' => 'Kaypa pantasqa kuskanachina tupunkuna: wfQuery()<br />
-Ruray paqtachi: $1<br />
-Tapuna: $2',
 'viewsource' => 'Pukyu qillqata qhaway',
 'viewsource-title' => "$1 sutiyuq p'anqap pukyu qillqanta qhaway",
 'actionthrottled' => "Rurayniykiqa hark'asqam",
@@ -806,7 +799,7 @@ Kay willay pantasqa kaptinqa, qhawarparillay.',
 'user-mail-no-body' => 'Mana kurkuyuq icha ancha pisilla kurkuyuq e-chaskita kachayta munarqanki.',
 
 # Change password dialog
-'resetpass' => 'Ruraqpa yaykuna rimanta hukchay',
+'changepassword' => 'Yaykuna rimata hukchay',
 'resetpass_announce' => "E-chaskiwan kachasqa mit'alla yaykuna rimawanmi yaykurqunki. Ama hina kaspa, musuq yaykuna rimaykita qillqamuy:",
 'resetpass_text' => '<!-- Añada texto aquí -->',
 'resetpass_header' => 'Yaykuna rimata hukchay',
@@ -1182,10 +1175,6 @@ Kay wakin kayta qhawayta atinkim; astawanchá rikunkiman [{{fullurl:{{#Special:L
 'revisiondelete' => "Mawk'a llamk'apusqakunata qulluy/paqarichiy",
 'revdelete-nooldid-title' => "Taripana llamk'apusqaqa manam allinchu",
 'revdelete-nooldid-text' => "Manam taripana llamk'apusqata akllarqunkichu imawanchus kay ruranata aknachanaykipaq, icha akllasqa llamk'apusqaqa manam kanchu, icha kachkaq llamk'apusqata pakaykachachkanki.",
-'revdelete-nologtype-title' => "Mana ima qusqa hallch'a layapas",
-'revdelete-nologtype-text' => "Manam ima hallch'a layatapas qurqankichu kay rurayta qallarinaykipaq.",
-'revdelete-nologid-title' => "Hallch'asqa willayqa manam allinchu",
-'revdelete-nologid-text' => "Manam taripana hallch'a rurayta churarqankichu kay ruranata qallarinaykipaq, icha churasqayki willayqa manam kanchu.",
 'revdelete-no-file' => 'Sapaqchasqa willañiqiqa manam kanchu.',
 'revdelete-show-file-confirm' => 'Allinta yachankichu "<nowiki>$1</nowiki>" willañiqimanta qullusqa $2-manta $3-pi musuqchasqata qhawayta munaspayki?',
 'revdelete-show-file-submit' => 'Arí',
@@ -1218,8 +1207,6 @@ $1",
 'logdelete-failure' => "'''Manam atinichu hallch'ap rikunalla kayninta churayta:'''
 $1",
 'revdel-restore' => 'Rikunalla kayta hukchay',
-'revdel-restore-deleted' => 'qullusqa musuqchasqakuna',
-'revdel-restore-visible' => 'rikuna musuqchasqakuna',
 'pagehist' => "P'anqap wiñay kawsaynin",
 'deletedhist' => 'Qullusqa wiñay kawsay',
 'revdelete-hide-current' => "Pantasqa, imatapas pakaspa $2 pacha, $1 p'unchawmanta: kayqa kunan kachkaq musuqchasqam.
@@ -1296,12 +1283,8 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 # Search results
 'searchresults' => 'Maskaymanta tarisqakuna',
 'searchresults-title' => '"$1" nisqapaq maskaspa taripasqakuna',
-'searchresulttext' => '{{SITENAME}}pi maskaymanta astawan ñawirinaykipaqqa, [[{{MediaWiki:Helppage}}|{{int:help}}]] nisqapi qhaway.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' nisqatam maskanki ([[Special:Prefixindex/$1|tukuy "$1" nisqawan qallariq p\'anqakuna]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tukuy "$1" nisqaman t\'inkimuq p\'anqakuna]])',
-'searchsubtitleinvalid' => '"$1" nisqatam maskanki',
 'toomanymatches' => 'Nisyu taripasqakunam kutisqa, ama hina kaspa, huk taripanawan ruraykachay',
 'titlematches' => "P'anqakunap sutinkunapi tarisqa",
-'notitlematches' => "Manam ima p'anqakunap sutinkunapipas tarisqachu",
 'textmatches' => "P'anqakunap qillqankunapi tarisqa",
 'notextmatches' => "Manam ima p'anqakunap qillqankunapipas tarisqachu",
 'prevn' => '{{PLURAL:$1|$1}} ñawpaq',
@@ -1310,10 +1293,8 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'nextn-title' => 'Qatiq $1 {{PLURAL:$1|taripasqa|taripasqakuna}}',
 'shown-title' => "Huk p'anqapi $1 {{PLURAL:$1|taripasqata|taripasqakunata}} rikuchiy",
 'viewprevnext' => 'Qhaway ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Maskaypaq akllanakuna',
 'searchmenu-exists' => "'''Kay wikipiqa «[[$1]]» sutiyuq p'anqam kachkan'''",
 'searchmenu-new' => "'''Kay wikipi \"[[:\$1]]\" sutiyuq p'anqata kamariy!'''",
-'searchmenu-prefix' => "[[Special:PrefixIndex/$1|Kay ñawpa k'askaqchayuq huk p'anqakunata maskay]]",
 'searchprofile-articles' => "Samiq p'anqakuna",
 'searchprofile-project' => "Yanapanapaq ruraykamaypaqpas p'anqakuna",
 'searchprofile-images' => 'Multimidya',
@@ -1334,20 +1315,16 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'search-interwiki-default' => '$1 taripasqakuna:',
 'search-interwiki-more' => '(aswan)',
 'search-relatedarticle' => 'Apanakuq',
-'mwsuggest-disable' => 'Maskana rimapuykunaman ama niy',
 'searcheverything-enable' => "Tukuy suti k'itikunapi maskay",
 'searchrelated' => 'apanakuq',
 'searchall' => 'tukuy',
 'showingresults' => "Qhipanpiqa rikuchkanki {{PLURAL:$1|'''1''' tarisqatam|'''$1'''-kama tarisqakunatam}}, '''$2''' huchhawan qallarispa.",
 'showingresultsnum' => "Qhipanpiqa rikuchkanki {{PLURAL:$3|'''1''' tarisqatam|'''$3''' tarisqakunatam}}, '''$2''' yupaywan qallarispa.",
 'showingresultsheader' => "{{PLURAL:$5|Taripasqa: '''$1''', '''$3'''-manta|Taripasqa: '''$1 - $2''', '''$3'''-manta}}, '''$4'''-paq",
-'nonefound' => "'''Musyay''': Kikinmantaqa huk suti k'itikunallapim maskanki, manataqmi tukuykunapichu. Ñawpaqninpi ''all:'' nisqata qillqaspaykiqa, tukuy suti k'itikunapim maskanki (rimachinakunapipas, plantillakunapipas). Huk sapaq suti k'itipi maskayta munaspaykiqa, chay k'itip sutinta k'askaq hina ñawpaqninpi qillqamuy.",
 'search-nonefound' => 'Maskaypaq kay hina kachun nisqakamaqa manam kanchu taripasqakuna.',
-'powersearch' => 'Maskay',
 'powersearch-legend' => 'Ñawparikusqa maskay',
 'powersearch-ns' => "Kay suti k'itikunapi maskay:",
 'powersearch-redir' => 'Pusapunakunata rikuchiy',
-'powersearch-field' => 'Kayta maskay:',
 'powersearch-togglelabel' => 'Llanchiy:',
 'powersearch-toggleall' => 'Tukuy',
 'powersearch-togglenone' => 'Mana imapas',
@@ -1359,7 +1336,6 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'preferences' => 'Allinkachinakuna',
 'mypreferences' => 'Allinkachinaykuna',
 'prefs-edits' => 'Hukchasqakunap yupaynin:',
-'changepassword' => 'Yaykuna rimata hukchay',
 'prefs-skin' => 'Qara',
 'skin-preview' => 'Ñawpaqta qhaway',
 'datedefault' => 'Kikinmanta allinkachina',
@@ -1382,13 +1358,11 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'prefs-email' => 'E-chaskipaq akllanakuna',
 'prefs-rendering' => "Rikch'akuynin",
 'saveprefs' => 'Allinkachinakunata waqaychay',
-'resetprefs' => 'Mana waqaychasqa hukchasqakunaman ama niy',
 'restoreprefs' => 'Tukuy kikinmanta allinkachinakunata kutichimuy (tukuy rakirikunapi)',
 'prefs-editing' => "Llamk'apusqa",
 'rows' => 'Sinrukuna:',
 'columns' => 'Wachukuna:',
 'searchresultshead' => 'Maskay',
-'resultsperpage' => "Huk p'anqapi hayk'a tarinakuna:",
 'stub-threshold' => 'Kay hatun kaykamam <a href="#" class="stub">t\'una qillqasqa t\'inki</a> nisqa kachun (byte):',
 'stub-threshold-disabled' => 'Ama nisqa',
 'recentchangesdays' => "Ñaqha hukchasqakunapi rikuchina p'unchawkuna:",
@@ -1400,7 +1374,6 @@ Imaymanata [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} qulluy ha
 'localtime' => 'Tiyaylla pacha:',
 'timezoneuseserverdefault' => "Wikip kikinmanta pachanta llamk'achiy ($1)",
 'timezoneuseoffset' => 'Huk pacha (pachap wakin kayninta willay)',
-'timezoneoffset' => 'Huk kay¹:',
 'servertime' => 'Sirwiqpa pachan:',
 'guesstimezone' => 'Pacha suyuta chaskimuy',
 'timezoneregion-africa' => 'Aphrika',
@@ -1651,7 +1624,6 @@ $1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
 'recentchanges-label-bot' => "Kayqa rurana antachap llamk'apusqanmi",
 'recentchanges-label-unpatrolled' => "Kay llamk'apusqaqa manaraqmi patrullasqachu",
 'recentchanges-legend-newpage' => "$1 - musuq p'anqa",
-'rcnote' => "Kay qatiqpiqa qhipaq {{PLURAL:$1|'''1''' hukchasqam|'''$1''' hukchasqakunam}} qhipaq {{PLURAL:$2|p'unchawpi|'''$2''' p'unchawkunapi}}, musuqchasqa $5, $4.",
 'rcnotefrom' => "Kay qatiqpiqa '''$2'''-mantapacha ('''$1'''-kama) hukchasqakunatam rikunki.",
 'rclistfrom' => '$1-manta musuq hukchasqakunata rikuchiy',
 'rcshowhideminor' => "$1 uchuylla llamk'apusqakunata",
@@ -2120,10 +2092,8 @@ Ama hina kaspa, [$2 willañiqi ch'uyanchana p'anqata] qhaway astawan willachikun
 'protectedpages' => "Amachasqa p'anqakuna",
 'protectedpages-indef' => 'Wiñaypaq amachasqakuna chaylla',
 'protectedpages-cascade' => 'Phaqchallallapi amachay',
-'protectedpagestext' => "Kay p'anqakunaqa llamk'apuymanta icha astaymanta amachasqam",
 'protectedpagesempty' => "Kay kuskanachina tupukunawan amachasqa p'anqakunaqa manam kachkanchu.",
 'protectedtitles' => "Amachasqa p'anqa sutikuna",
-'protectedtitlestext' => "Kay sutikunayuq p'anqakunaqa kamarinamanta hark'asqam",
 'protectedtitlesempty' => "Manam kachkanchu kay kuskanachina tupukunawan amachasqa p'anqakuna.",
 'listusers' => 'Tukuy ruraqkuna',
 'listusers-editsonly' => "Llamk'apusqayuq ruraqkunallata rikuchiy",
@@ -2174,9 +2144,6 @@ Rikuyniykitaqa k'ullkuchaytam atinki hallch'a layata, ruraqpa sutinta (uchuy ich
 'allpagesto' => "Kaywan tukukuq p'anqakunata rikuchiy:",
 'allarticles' => 'Tukuy qillqasqakuna',
 'allinnamespace' => "Tukuy p'anqakuna ($1 suti k'itipi)",
-'allnotinnamespace' => "Tukuy p'anqakuna (manataq $1 suti k'itipi)",
-'allpagesprev' => 'ñawpaq',
-'allpagesnext' => 'qatiq',
 'allpagessubmit' => 'Riy',
 'allpagesprefix' => "Rikuchiy kay k'askaqwan qallariq p'anqakunata:",
 'allpagesbadtitle' => "Qusqa p'anqap sutinqa manam allinchu icha rimaypura, interwiki ñawpa k'askaqniyuq. P'anqa sutipaq mana saqillasqa sananchayuqchá.",
@@ -2504,7 +2471,6 @@ Huklla llamk'apusqakunata paqarichinaykipaqqa, munasqayki llamk'apusqakunata akl
 'undeletebtn' => 'Paqarichiy!',
 'undeletelink' => 'qhaway/paqarichiy',
 'undeleteviewlink' => 'qhaway',
-'undeletereset' => 'Mana imapas',
 'undeleteinvert' => "Akllasqantinta t'ikrachiy",
 'undeletecomment' => 'Kayrayku:',
 'undeletedrevisions' => "{{PLURAL:$1|Huk paqarichisqa llamk'apusqa|$1 paqarichisqa llamk'apusqakuna}}",
@@ -2591,7 +2557,6 @@ Qhipaq hark'ay hallch'a yaykuchisqatam kay qatiqpi rikunki:",
 'block' => "Ruraqta hark'ay",
 'unblock' => "Hark'asqa ruraqta qispichiy",
 'blockip' => "Ruraqta hark'ay",
-'blockip-title' => "Ruraqta hark'ay",
 'blockip-legend' => "Ruraqta hark'ay",
 'blockiptext' => "Kay qatiq hunt'ana p'anqata llamk'achiy huk sapaq IP huchhamanta icha ruraqpa rakiqunanmanta qillqay atiyta hark'anapaq.
 Kayqa rurasqa kachun wandalismullatam hark'anapaq, [[{{MediaWiki:Policy-url}}|{{SITENAME}}pa kawpayninkamallam]].
@@ -2599,7 +2564,6 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
 'ipadressorusername' => 'IP huchha icha ruraqpa sutin',
 'ipbexpiry' => "Hark'ay kaykama:",
 'ipbreason' => 'Kayrayku:',
-'ipbreasonotherlist' => 'Huk rayku',
 'ipbreason-dropdown' => "*Hark'anapaq sapsi raykukuna
 ** Llulla willayta qillqamuy
 ** P'anqata samiqninmanta ch'usaqchay
@@ -2615,8 +2579,6 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
 'ipbsubmit' => "Kay ruraqta hark'ay",
 'ipbother' => 'Huk puchukana pacha:',
 'ipboptions' => "2 ura:2 hours,1 p'unchaw:1 day,3 p'unchaw:3 days,1 simana:1 week,2 simana:2 weeks,1 killa:1 month,3 killa:3 months,6 killa:6 months,1 wata:1 year,Wiña-wiñaypaq:infinite",
-'ipbotheroption' => 'huk',
-'ipbotherreason' => 'Huk/aswan rayku:',
 'ipbhidename' => "Ruraqpa sutinta llamk'apusqakunamanta, sutisuyukunamantapas pakay",
 'ipbwatchuser' => "Kay ruraqpa p'anqanta rimachinantapas watiqay",
 'ipb-disableusertalk' => "Kay ruraq hark'asqa kaspa kikinpa rimanakuy p'anqanta ama llamk'apuchunchu",
@@ -2699,7 +2661,6 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
 'proxyblockreason' => "IP huchhaykiqa hark'asqam kichasqa proxy kaptinmi. Ama hina kaspa, internet mink'aqniykiman icha allwiya yanapaqniykiman kay hatun qasi sasachakuymanta willay.",
 'sorbsreason' => 'IP huchhaykiqa kichasqa proxy nispa {{SITENAME}}pi DNSBL nisqapi qillqasqam.',
 'sorbs_create_account_reason' => 'IP huchhaykiqa kichasqa proxy nispa {{SITENAME}}pi DNSBL nisqapi qillqasqam. Manam atinkichu rakiqunata kichayta',
-'cant-block-while-blocked' => "Kikiyki hark'asqa kaspaykiqa, manam huk ruraqkunata hark'ayta atinkichu.",
 'cant-see-hidden-user' => "Hark'aykachasqayki ruraqqa pipapas hark'asqanñam pakasqanñapas. Ruraqta pakay hayñiyuq mana kaspaykim, manam atinkichu ruraqpaq hark'ay hallch'asqata rikuyta icha hukchasqayta.",
 'ipbblocked' => "Kikiyki hark'asqa kaspaykim, manam hukkunata hark'ayta icha hark'asqa kaymanta qispichiyta atinkichu",
 'ipbnounblockself' => "Kikiykitaqa manam hark'asqa kaymanta qispikuyta atinkichu",
@@ -2752,7 +2713,6 @@ ama hina kaspa, yuyarillay imachus kay astanaykita saqispa tukunata atinman.",
 Hinaptinqa, kay rimachina p'anqap samiqninta makiykiwan astanaykim tiyanqa.",
 'movearticle' => "P'anqata astay",
 'moveuserpage-warning' => "'''Paqtataq:''' Ruraqpa p'anqantam astaykachachkanki. Qhawariy, p'anqallam astasqa kanqa, ruraqpa sutintaq '''manam''' wakinchasqachu kanqa.",
-'movenologin' => "Manam qallarisqachu llamk'apuy tiyayniyki",
 'movenologintext' => "P'anqata astanaykipaqqa hallch'asqa ruraqmi kanayki [[Special:UserLogin|llamk'apuy tiyay qallarinaykipas]] tiyan.",
 'movenotallowed' => "Manam saqillasunkichu p'anqata astayta.",
 'movenotallowedfile' => 'Manam atinkichu willañiqikunata astayta.',
@@ -2767,8 +2727,6 @@ Hinaptinqa, kay rimachina p'anqap samiqninta makiykiwan astanaykim tiyanqa.",
 'movepage-moved-noredirect' => "Pusapuna kamariyqa hark'asqam.",
 'articleexists' => "Kay sutiyuq p'anqaqa kachkanñam icha akllasqayki sutiqa manam allinchu. Ama hina kaspa, huk sutita akllay.",
 'cantmove-titleprotected' => "Manam atinkichu p'anqata kayman astamuyta, musuq p'anqa suti kamarinamanta hark'asqa kaptinmi",
-'talkexists' => "P'anqaqa astasqañam, manataq rimanakuy p'anqachu, musuq sutiyuq rimanakuy p'anqa kachkaptinñam. Ama hina kaspa, makillaykiwan samiqninkuta huñuy.",
-'movedto' => 'kayman astasqa:',
 'movetalk' => 'Rimachinapas, atikuq hinaptin.',
 'move-subpages' => "Urin p'anqakunata astay ($1-kama)",
 'move-talk-subpages' => "Urin rimanakuy p'anqakunata astay ($1-kama)",
@@ -3591,15 +3549,10 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
 'exif-urgency-high' => 'Hatun ($1)',
 'exif-urgency-other' => 'Ruraqpa churasqan ñawpaqchay ($1)',
 
-# External editor support
-'edit-externally' => "Kay willañiqita hawa rurana wakichiwan llamk'apuy",
-'edit-externally-help' => 'Astawan willasunaykipaqqa [https://www.mediawiki.org/wiki/Manual:External_editors tiyachina yanapata] (inlish simipi) ñawiriy.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'lliw',
 'namespacesall' => 'tukuy',
 'monthsall' => '(tukuy)',
-'limitall' => 'tukuy',
 
 # Email address confirmation
 'confirmemail' => 'E-chaski imamaytaykita takyachiy',
@@ -3618,7 +3571,6 @@ Kutichisqa chaski: $1',
 'confirmemail_success' => 'E-chaski imamaytaykiqa takyachisqañam.
 Kunanqa wikiman [[Special:UserLogin|yaykamuspayki]] ayniytam atinki.',
 'confirmemail_loggedin' => 'E-chaski imamaytaykiqa takyachisqañam.',
-'confirmemail_error' => 'Ima pantasqapas tukurqan takyachinaykita waqaychaypi.',
 'confirmemail_subject' => '{{SITENAME}} e-chaski imamayta takyachina',
 'confirmemail_body' => 'Pipas (qamchiki, $1 IP huchhayuq tiyaymanta) kicharirqan {{SITENAME}}paq "$2" sutiyuq rakiqunatam, kay e-chaski imamaytayuq.
 
@@ -3850,7 +3802,6 @@ MediaWikitaqa mast'ariyku runakunata yanapanapaqmi, ichataq MANAM FIYAKUYTA ATIY
 
 # Special:ComparePages
 'comparepages' => "P'anqakunata wakichay",
-'compare-selector' => 'Musuqchasqakunata wakichay',
 'compare-page1' => "P'anqa 1",
 'compare-page2' => "P'anqa 2",
 'compare-rev1' => 'Musuqchasqa 1',
index 713c469..f53a3c3 100644 (file)
@@ -56,7 +56,6 @@ $messages = array(
 'tog-watchdeletion' => 'Ñukapak pichashka pankakunata rikuna',
 'tog-minordefault' => 'Nimata nikpika, ñukapak killkaykunata uchillami nina',
 'tog-previewontop' => 'Ñauwpak rikuchik pankata killkana pankapak hawapi churana',
-'tog-nocache' => 'Wampunapi ama rikushka pankakunata yuyana',
 'tog-enotifwatchlistpages' => 'Shuk rikushka pankata shukchishka kakpika, e-chaskita kachamushpami willaway',
 'tog-enotifusertalkpages' => 'Ñukapak rimana pankapi mushuk killkayta tiyakpi, e-chaskiwan willaway',
 'tog-enotifminoredits' => 'Mushuk killkayta uchilla kakpipash e-chaskiwan willaway',
@@ -163,7 +162,6 @@ $messages = array(
 'qbedit' => 'Killkana',
 'qbpageoptions' => 'Pankapak akllanakuna',
 'qbmyoptions' => 'Ñukapak pankakuna',
-'qbspecialpages' => 'mans shukkunashina pankakuna',
 'faq' => 'Ashtawan tapushkaka tapunakuna',
 'faqpage' => 'Project:ashta ministishka tapuykuna',
 
@@ -449,8 +447,6 @@ Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
 # Revision deletion
 'rev-delundel' => 'Rikuchiy/pakay',
 'revdel-restore' => 'Rikuyukkunata shukchina',
-'revdel-restore-deleted' => 'pichashka shukchiykuna',
-'revdel-restore-visible' => 'Mana pakashka shukchiykuna',
 
 # Merge log
 'revertmerge' => 'Shukllachiyta kutichina',
@@ -465,10 +461,6 @@ Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
 # Search results
 'searchresults' => 'Maskaymanta pankakuna',
 'searchresults-title' => '"$1" maskaymanta pankakuna',
-'searchresulttext' => '{{SITENAME}}pi maskaymanta ashtawan yachaykunata rikunkapa, [[{{MediaWiki:Helppage}}|{{int:help}}]] rikuripay',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' pankata maskashkanki ([[Special:Prefixindex/$1|tukuy "$1" killkaywan kallarik pankakuna]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tukuy "$1" killkaywan kallarik pankakuna]])',
-'searchsubtitleinvalid' => '"$1"-ta maskashkapanki',
-'notitlematches' => 'Mana shina pankata tiyanchu',
 'notextmatches' => 'Mana pankaka kay rimaykunata charin',
 'prevn' => '{{PLURAL:$1|$1}} ñawpak',
 'nextn' => '{{PLURAL:$1|$1}} katik',
@@ -499,14 +491,10 @@ Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
 'searchrelated' => 'tinkishka',
 'searchall' => 'tukuy',
 'showingresultsheader' => "{{PLURAL:$5|Maskashka panka: '''$1''', '''$3'''-manta|Maskashka pankakuna: '''$1 - $2''', '''$3'''-manta}}, '''$4''' maskashpaka",
-'nonefound' => "'''Musyay''': kikinka mana shina rimakpika, mana tukuy shuti-suyupi maskapanki. 
-Icha ''all:'' rimaywan (icha shuk shutisuyupa rimaywan) kikinpa killkata kallarikpika taripankimi.",
 'search-nonefound' => 'Kikinka maskashka rimaykunaka mana tiyanchu.',
-'powersearch' => 'Ashtawan alli maskana',
 'powersearch-legend' => 'Ashtawan alli maskana',
 'powersearch-ns' => 'Chay shutipak kitikunapi maskana :',
 'powersearch-redir' => 'Kutinpushaykunata rikuchiy',
-'powersearch-field' => 'Kayta maskana :',
 
 # Preferences page
 'preferences' => 'Akllaykuna',
@@ -541,7 +529,6 @@ Shuk rurakkunaka kikinpa e-chaski ''dirección''ta mana yachankachu.",
 'recentchanges-label-minor' => 'Kay killkayka uchillami kan',
 'recentchanges-label-bot' => 'Kay killkata shuk killkachik-antakami rurarka',
 'recentchanges-label-unpatrolled' => 'Chay killkayka mana kutin rikushkachu kan',
-'rcnote' => "Kay uraypi {{PLURAL:$1|'''1''' mushuk killkay|'''$1''' mushuk killkaykuna}} kipak {{PLURAL:$2|punchapi|'''$2''' punchakunapi}} ($5, $4 rurashka).",
 'rcnotefrom' => "Katikka tukuy '''$2''' manta mushuk killkaykunata rikuchinchik ('''$1'''-kamanlla)",
 'rclistfrom' => '$1-manta mushuk killkaykunata rikuchiy',
 'rcshowhideminor' => 'uchilla killkaykunata $1',
@@ -754,8 +741,6 @@ $2 rikpika, ima pankakunaka pichashkami kan yachakupanki.',
 'movepage-moved' => '\'\'\'"$1" pankaka "$2"shutiman apakushka\'\'\'',
 'articleexists' => 'Shuk pankaka ñami kay shutita charin, icha kay shutiyuk man alli kan.
 Shuk shutita akllapay.',
-'talkexists' => 'Kay pankapa shutita ñami shukchishkami kan, shinapash paypa rimanakuyta shuk rimanakuyka ñami tiyakpika mana apamushkami kan : makillawan kay ishkay rimanakuykunata tantachipay.',
-'movedto' => 'Kayman apakushka :',
 'movetalk' => 'Tinkishka rimanakuyta shinalla apakuna',
 'movelogpage' => 'Shutikunata shukchiykunapa kamu',
 'movereason' => 'Imashpa:',
@@ -863,10 +848,6 @@ Shuk aspipi, shukniki tinkika ima tinkita wichkashkami kanka nin, kay aspipi shu
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Kay archiwuta shuk hawa antanawan llankana',
-'edit-externally-help' => 'Ashtawan yachakunkakak [https://www.mediawiki.org/wiki/Manual:External_editors kay yanapata] (inlish shimipi) killkakatipay',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tukuy',
 'namespacesall' => 'tukuy',
index d7c6e0c..bb496be 100644 (file)
@@ -44,7 +44,6 @@ $messages = array(
 'tog-shownumberswatching' => "Fam' avdè e' nòmar d'j utent ch'j tèn sta pàgina sot occ",
 'tog-oldsig' => 'Anteprèma dla fírma bona',
 'tog-fancysig' => "Tràta la firma cumpagna e' test int'la wiki (senza nissön ligam automatich)",
-'tog-showjumplinks' => "Fa' funzionè j leghèm d'acesibilitè tipo \"Va' a\"",
 'tog-uselivepreview' => 'Drova la funziòn "Anteprèma dal viv" (u j vo Javascript; sperimentêl)',
 'tog-forceeditsummary' => "Dam la vos quènd l'ugèt dla mudèfica l'è vut",
 'tog-watchlisthideown' => "Nascond al mi mudèfic dala lèsta dal pàgin da tnì d'occ",
@@ -156,7 +155,6 @@ $messages = array(
 'qbedit' => 'Mudèfica',
 'qbpageoptions' => 'Upziòn dla pàgina',
 'qbmyoptions' => 'Al mi pàgin',
-'qbspecialpages' => 'Pàgin particulèri',
 'faq' => 'Question frequenti',
 'faqpage' => 'Prugèt:Question frequenti',
 
@@ -200,7 +198,7 @@ $messages = array(
 'jumptonavigation' => 'navgaziòn',
 'jumptosearch' => 'zerca',
 
-# 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).
+# 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).
 'aboutsite' => 'A prupòsit de {{SITENAME}}',
 'aboutpage' => 'Project: A pruposit',
 'copyright' => "Oci! T'an fèga e' patàca. Sora 'ste scrètt u j è e' brevet $1.",
@@ -208,7 +206,6 @@ $messages = array(
 'disclaimers' => 'Infurmaziòn legêli',
 'disclaimerpage' => 'Project: Avìs generèl',
 'edithelp' => 'Livar dal spiegaziòn',
-'edithelppage' => 'Help: Scrivar un artècul',
 'helppage' => 'Help:Tòt j argumént',
 'mainpage' => 'Prèma Pagina',
 'privacy' => 'Léz sora agli infurmaziòn persunèli',
@@ -218,8 +215,6 @@ $messages = array(
 
 'retrievedfrom' => 'Tiré fora da "$1"',
 'youhavenewmessages' => "A j ò fët ch't'epa $1 ($2).",
-'newmessageslink' => 'mesàz nuv',
-'newmessagesdifflink' => "U j è una quèlca diferenza cun l'ultma versiòn",
 'editsection' => 'Mudèfica',
 'editold' => 'mudèfica',
 'editlink' => 'mudèfiga',
@@ -346,10 +341,6 @@ Lezenda: '''({{int:cur}})''' = difarenzi cun la versiòn d'adès; '''({{int:last
 # Search results
 'searchresults' => 'I tu risulté',
 'searchresults-title' => 'I tu risulté par "$1"',
-'searchresulttext' => "A vut una mân par zarchè dagl'infurmaziòn sora {{SITENAME}}? Và a vdé [[{{MediaWiki:Helppage}}|zerca int é {{SITENAME}}]].",
-'searchsubtitle' => 'T\'e\' zarchè \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toti al pàgin chj cminzèpia cun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toti al pàgin chj è atachedi a "$1"]])',
-'searchsubtitleinvalid' => "T'ë zarchè '''$1'''",
-'notitlematches' => "T'é zarchè un'artècul, ma guèrda che u'gn'è brisa 'ste nom. Si't sicur t'épa scrètt ben?",
 'notextmatches' => "T'e' zarché un quel ch'u'n à purté a gninto. U'n's trova gninto int'j parol dal pàgin.",
 'prevn' => "{{PLURAL:quel prèma|i $1 prèma}} d'sti què",
 'nextn' => "{{PLURAL:quél dòp|i $1 dòp}} d'sti què",
@@ -361,12 +352,9 @@ Lezenda: '''({{int:cur}})''' = difarenzi cun la versiòn d'adès; '''({{int:last
 'search-interwiki-caption' => 'I prugèt fradel',
 'search-interwiki-default' => 'Arsultèd da $1:',
 'search-interwiki-more' => '(ad piò)',
-'nonefound' => "'''Oci''': la rizerca l'a vèn fata in automatico sol in zert spàzi di nòm. S't'vù zirchè fra tot al pàgin (cumpresi al pàgin d'cunversaziòn, i template, ecc) próva a metar \"all:\", in inglés, dadnenz a é nòm ch't'é scrètt, piotòst scriv é spàzi di nòm, s't'al sé, e pu é nòm.",
-'powersearch' => 'Scandaja a fònd',
 'powersearch-legend' => 'Scandaja a fònd',
 'powersearch-ns' => "Zerca int'j spàzi d'nom:",
 'powersearch-redir' => "Fà una lèsta d'al ri-direziòn",
-'powersearch-field' => 'Zerca par',
 
 # Preferences page
 'preferences' => 'I mì gost',
@@ -611,9 +599,6 @@ In tot sti chès, s'et pazienzia, t'pù spustè a man tot quel c'u j è scrètt
 'movepage-moved' => "'''\"\$1\" l'à cambié post a \"\$2\"'''",
 'articleexists' => "La j è za una pàgina ch'la s-cjama acsè. O e nom ch'ta j e dë un va brisa ben.
 Par piaser, daij un ètar nom.",
-'talkexists' => "'''La pàgina l'è stëda spusteda ben, invezi la pàgina d'cunversaziòn l'è andëda a cuzè cun òna ch'l'à ê stes nom. Csa fasègna?
-Par piasé, met insem al du pàgin te, fasend copia e incola.",
-'movedto' => 'Spusté vers:',
 'movetalk' => "Sposta ènca la pàgina d'cunversaziòn",
 'movelogpage' => "Regéstar d'j muvimént",
 'movereason' => 'Rasòn:',
@@ -717,10 +702,6 @@ Se parò un qvelcadon à lavurè sora sta figura, zerti infurmaziòn j n' curesp
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Mudèfica ste file cun un prugrama esteran',
-'edit-externally-help' => "(Guèrda e' [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] par avé d'j ètri infurmaziòn) (l'è in inglés)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tòt',
 'namespacesall' => 'töt',
index 63cf5da..74e9a20 100644 (file)
@@ -84,7 +84,6 @@ $messages = array(
 # Cologne Blue skin
 'qbfind' => 'Af',
 'qbedit' => 'Ẓṛeg',
-'qbspecialpages' => 'Tudmawin Special',
 
 # Vector skin
 'vector-action-move' => 'Smuṭṭi',
@@ -126,7 +125,7 @@ $messages = array(
 'jumptonavigation' => 'tagriwa',
 'jumptosearch' => 'tarezzut',
 
-# 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).
+# 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).
 'aboutsite' => 'Awal xef {{SITENAME}}',
 'aboutpage' => 'Project:Awal xef',
 'copyrightpage' => '{{ns:project}}:izrefan ussenɣel',
@@ -135,7 +134,6 @@ $messages = array(
 'disclaimers' => 'Ismigilen',
 'disclaimerpage' => 'Project:Asmigel amatu',
 'edithelp' => 'Tallalt deg uẓareg',
-'edithelppage' => 'Help:Aẓareg',
 'helppage' => 'Help:Tira d yiwlafen',
 'mainpage' => 'Tasna Tamezwarut',
 'mainpage-description' => 'Tasna Tamezwarut',
@@ -146,8 +144,6 @@ $messages = array(
 
 'retrievedfrom' => 'Itwarr-d zi "$1"',
 'youhavenewmessages' => 'Ghar-k / Ghar-m $1 ($2).',
-'newmessageslink' => 'tibratin timaynutin',
-'newmessagesdifflink' => 'Taẓṛigt tanggarut',
 'editsection' => 'Ẓṛeg',
 'editold' => 'ẓṛeg',
 'viewsourceold' => 'ẓeṛ aɣbalu',
@@ -325,7 +321,6 @@ Tasarut: (cur) = imṣebḍiyen ag tunɣilt n ruxa,
 # Search results
 'searchresults' => 'Tifellawin n tarezzut',
 'searchresults-title' => 'Tifellawin n tarezzut xef "$1"',
-'searchsubtitle' => 'Trezzud xef \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|marra tasniwin issentan s "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|marra tasniwin iteqqnen ghar "$1"]])',
 'prevn' => 'Amzray {{PLURAL:$1|$1}}',
 'nextn' => 'wn d-itasn {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Ẓeṛ ($1 {{int:pipe-separator}} $2) ($3)',
@@ -338,7 +333,6 @@ Tasarut: (cur) = imṣebḍiyen ag tunɣilt n ruxa,
 'search-interwiki-caption' => 'Awmatn n usnfar',
 'search-interwiki-more' => '(ujar)',
 'searchall' => 'maṛṛa',
-'powersearch' => 'Tarzzut tanmhazt',
 'powersearch-legend' => 'Tarzzut tanmhazt',
 
 # Preferences page
@@ -385,7 +379,6 @@ mala tucit-id, ataf Lxdant inec a tetwassan ila inec.',
 'recentchangeslinked-feed' => 'Tiẓṛigin ag ta',
 'recentchangeslinked-toolbox' => 'Tiẓṛigin ag ta',
 'recentchangeslinked-title' => 'Tiẓṛigin ssaɣant-id ɣar "$1"',
-'recentchangeslinked-noresult' => 'War llint ca n tiẓṛigin di Tasna ya di lwaqt id-tucid .',
 'recentchangeslinked-summary' => "Ta d tabdart n isnfiln itwaggn drus zggwami di tasniwin id-iqqnen zg ict tasna nniḍn (nigh iqqnen ghar iwdan zi ca n taggayt).
 Tasniwin di [[Special:Watchlist|your watchlist]] d '''tizurarin'''.",
 'recentchangeslinked-page' => 'Izwl n tasna:',
@@ -440,8 +433,6 @@ Tasniwin di [[Special:Watchlist|your watchlist]] d '''tizurarin'''.",
 # Statistics
 'statistics' => 'tisiḍanin',
 
-'disambiguations' => 'Tasniwin n usefhem',
-
 'doubleredirects' => '(redirects) ɛɛawdent',
 
 'brokenredirects' => '(redirects) arẓent',
@@ -653,9 +644,6 @@ mala amya, itxessa cekk ad tesnaqled s ufus mala txisd.",
 'movepage-moved' => '\'\'\'"$1" twanql ɣar "$2"\'\'\'',
 'articleexists' => 'Tasna s isem a tella da, niɣ isem itucid war icni.
 ixdar isem nniḍn.',
-'talkexists' => "'''Tasna twanql , maca Tasna n usiwl ins war twanqel ca maymmi qaddin ict nninḍ.
-snaqlitent s ufus.'''",
-'movedto' => 'smutti ghar',
 'movetalk' => 'Snaqel Tasniwin n usiwl igg illan akid-s',
 'movelogpage' => 'Snaql aɣmis',
 'movereason' => 'Ssebba:',
@@ -768,10 +756,6 @@ Innḍni ad twaffrn dg umzwar.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Ẓṛeg afaylu a s usnas zi baṛṛa',
-'edit-externally-help' => 'Xemm [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] i ktar n tilɣa(informations).',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'marra',
 'namespacesall' => 'marra',
index 9c2ad54..4ba0fb1 100644 (file)
@@ -50,12 +50,12 @@ $messages = array(
 'tog-hidepatrolled' => 'Zuppentar midadas controlladas en las «ultimas midadas»',
 'tog-newpageshidepatrolled' => 'Zuppentar paginas controlladas en las «paginas novas»',
 'tog-extendwatchlist' => "Extender la glista d'observaziun per mussar tut las midadas e betg be las ultimas",
-'tog-usenewrc' => "Gruppar las midadas tenor pagina en las ''ultimas midadas'' ed la ''glista d'observaziun'' (basegna JavaScript)",
+'tog-usenewrc' => "Gruppar las midadas tenor pagina en las ''ultimas midadas'' e la ''glista d'observaziun''",
 'tog-numberheadings' => 'Numerar automaticamain ils titels',
-'tog-showtoolbar' => "Mussa la trav d'utensils (basegna JavaScript)",
-'tog-editondblclick' => 'Modifitgar paginas cun in clic dubel (basegna JavaScript)',
+'tog-showtoolbar' => "Mussar la trav d'utensils per modifitgar",
+'tog-editondblclick' => 'Modifitgar paginas cun in clic dubel',
 'tog-editsection' => 'Mussar colliaziuns [modifitgar] per modifitgar singulas secziuns',
-'tog-editsectiononrightclick' => 'Activar la pussaivladad da modifitgar secziuns cun in clic dretg (basegna JavaScript)',
+'tog-editsectiononrightclick' => 'Activar la pussaivladad da modifitgar secziuns cun in clic dretg sin il titel',
 'tog-showtoc' => 'Mussar ina tabla da cuntegn sin paginas cun dapli che trais tetels',
 'tog-rememberpassword' => "S'annunziar permanantamain cun quest navigatur (per maximalmain $1 {{PLURAL:$1|di|dis}})",
 'tog-watchcreations' => "Agiuntar paginas ch'jeu creesch e datotecas ch'jau transferesch a la glista d'observaziun",
@@ -65,7 +65,6 @@ $messages = array(
 'tog-minordefault' => 'Marcar tut las modificaziuns per ordinari sco pitschnas',
 'tog-previewontop' => "Mussar la prevista sur il champ d'endatziun",
 'tog-previewonfirst' => "Adina mussar la prevista suenter l'emprima modificaziun",
-'tog-nocache' => 'Impedir che tes navigatur memorisescha las paginas en il cache',
 'tog-enotifwatchlistpages' => "Ma trametter in e-mail sch'ina pagina u ina datoteca sin mia glista d'observaziun vegn midada",
 'tog-enotifusertalkpages' => "Trametta in e-mail sch'i ha dà midadas sin mia pagina da discussiun.",
 'tog-enotifminoredits' => 'Era ma trametter in e-mail en cas da midadas pitschnas vid paginas u datotecas',
@@ -73,7 +72,7 @@ $messages = array(
 'tog-shownumberswatching' => "Mussar il dumber d'utilisaders che obervan questa pagina",
 'tog-oldsig' => 'Signatura actuala:',
 'tog-fancysig' => "Suttascripziun senza link automatic tar la pagina da l'utilisader.",
-'tog-uselivepreview' => 'Utilisar la prevista dinamica (basegna JavaScript) (experiment!)',
+'tog-uselivepreview' => 'Utilisar la prevista dinamica (experiment!)',
 'tog-forceeditsummary' => 'Avertir durant memoriar sche la resumaziun manca',
 'tog-watchlisthideown' => "Zuppentar mias modificaziuns en la glista d'observaziun",
 'tog-watchlisthidebots' => "Zuppentar modificaziuns da bots en la glista d'observaziun",
@@ -185,7 +184,6 @@ $messages = array(
 'qbedit' => 'Modifitgar',
 'qbpageoptions' => 'Questa pagina',
 'qbmyoptions' => 'Mia pagina',
-'qbspecialpages' => 'paginas spezialas',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -274,7 +272,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).
 'aboutsite' => 'Davart {{SITENAME}}',
 'aboutpage' => 'Project:Davart',
-'copyright' => 'Cuntegn disponibel sut $1.',
+'copyright' => 'Il cuntegn è disponibel sut la licenza $1 sche betg inditgà autramain.',
 'copyrightpage' => '{{ns:project}}:Resguardar_dretgs_d_autur',
 'currentevents' => 'Events actuals',
 'currentevents-url' => 'Project:Events actuals',
@@ -302,8 +300,8 @@ $1',
 'youhavenewmessages' => 'Ti has $1 ($2).',
 'youhavenewmessagesfromusers' => 'Ti has $1 da{{PLURAL:$3|d in utilisader| $3 utilisaders}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ti has $1 da divers utilisaders ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|in nov messadi|novs messadis}}',
-'newmessagesdifflinkplural' => 'ultima{{PLURAL:$1| midada|s midadas}}',
+'newmessageslinkplural' => '{{PLURAL:$1|in nov messadi|999=novs messadis}}',
+'newmessagesdifflinkplural' => 'ultima{{PLURAL:$1| midada|999=s midadas}}',
 'youhavenewmessagesmulti' => 'Ti as novs messadis en $1',
 'editsection' => 'modifitgar',
 'editold' => 'modifitgar',
@@ -397,9 +395,6 @@ El po cuntegnair in u plirs segns che na pon betg vegnir utilisads en titels.',
 'perfcachedts' => 'Las suandantas datas derivan dal cache, ultima actualisaziun ils $2 las $3. Maximalmain {{PLURAL:$4|in resultat è disponibel|$4 resultats èn disponibels}} en il cache.',
 'querypage-no-updates' => 'Las actualisaziuns da questa pagina èn deactivadas. 
 Las datas qua vegnan da preschent betg actualisadas.',
-'wrong_wfQuery_params' => 'Parameters fauss per wfQuery()<br />
-Funcziun: $1<br />
-Query: $2',
 'viewsource' => 'Mussar il code da fontauna',
 'viewsource-title' => 'Vesair il code da funtauna da $1',
 'actionthrottled' => 'Acziun limitada',
@@ -426,7 +421,7 @@ L\'administratur che ha bloccà l\'access da scriva ha dà suandanta explicaziun
 'invalidtitle-knownnamespace' => 'Titel nunvalid cun tip da pagina "$2" e text "$3"',
 'invalidtitle-unknownnamespace' => 'Titel nunvalid cun numer da tip da pagina nunenconuschent $1 e text "$2"',
 'exception-nologin' => "Betg s'annunzià",
-'exception-nologin-text' => "Questa pagina u acziun pretenda che ti es s'annunzià en quest vichi.",
+'exception-nologin-text' => "Ti stos [[Special:Userlogin|t'annunziar]] per acceder questa pagina u acziun.",
 
 # Virus scanner
 'virus-badscanner' => "Configuraziun fauss: antivirus nunenconuschent: ''$1''",
@@ -436,7 +431,7 @@ L\'administratur che ha bloccà l\'access da scriva ha dà suandanta explicaziun
 # Login and logout pages
 '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.",
+Resguarda ch'entginas paginas pon tuttina anc vesair or sco sche ti eras annunzià(da) enfin che ti has svidà il cache da tes navigatur.",
 'welcomeuser' => 'Bainvegni, $1!',
 'welcomecreation-msg' => "Tes conto è vegnì creà. 
 N'emblida betg da midar tias [[Special:Preferences|{{SITENAME}} preferenzas]].",
@@ -461,7 +456,7 @@ N'emblida betg da midar tias [[Special:Preferences|{{SITENAME}} preferenzas]].",
 'gotaccount' => "Gia in conto d'utilisader? '''$1'''.",
 'gotaccountlink' => "T'annunziar",
 'userlogin-resetlink' => "Emblidà tias datas per s'annunziar?",
-'createaccountmail' => 'per e-mail',
+'createaccountmail' => "Dovrar per il mument in pled-clav casual ed inviar el a l'adressa d'e-mail inditgada.",
 'createaccountreason' => 'Motiv:',
 'badretype' => 'Ils dus pleds-clav na corrispundan betg.',
 'userexists' => "Quest num d'utilisader vegn gia duvrà. 
@@ -480,10 +475,10 @@ Controllescha che ti has activà ils cookies, rechargia la pagina ed emprova dan
 'noname' => "Ti n'has betg inditgà in num d'utilisader valid.",
 'loginsuccesstitle' => "T'annunzià cun success",
 'loginsuccess' => "'''Ti es t'annunzia tar {{SITENAME}} sco \"\$1\".'''",
-'nosuchuser' => 'I exista nagin utilisader cun il num "$1".
+'nosuchuser' => 'I n\'exista nagin utilisader cun il num "$1".
 Fa stim dad utilisar correctamain maiusclas e minusclas.
 Curregia il num u [[Special:UserLogin/signup|creescha in nov conto]].',
-'nosuchusershort' => 'I dat nagin utilisader cun il num "$1".
+'nosuchusershort' => 'I na dat nagin utilisader cun il num "$1".
 Curregia ti\'endataziun.',
 'nouserspecified' => "Inditgescha per plaschair in num d'utilisader.",
 'login-userblocked' => "Quest utilisader è bloccà. Betg pussaivel da t'annunziar.",
@@ -492,7 +487,7 @@ Curregia ti\'endataziun.',
 'passwordtooshort' => 'Tes pled-clav sto cuntegnair almain {{PLURAL:$1|in bustab|$1 bustabs}}.',
 'password-name-match' => "Il pled-clav na dastga betg esser il medem sco il num d'utilisader.",
 'password-login-forbidden' => "L'utilisaziun da quest num d'utilisader e pled-clav è vegnida scumandada.",
-'mailmypassword' => 'Trametter in nov pled-clav per e-mail',
+'mailmypassword' => 'Redefinir il pled-clav',
 'passwordremindertitle' => 'Nov pled-clav temporar per {{SITENAME}}',
 'passwordremindertext' => 'Insatgi (probablamain ti, cun l\'adressa dad IP $1) ha dumandà in nov pled-clav per {{SITENAME}} ($4). Il pled-clav temporar "$3" per l\'utilisader "$2" è vegnì creà. Sche quai era tes intent, ti al dovras per t\'annunziar e tscherner lura in nov pled-clav. Quest pled-clav temporar vegn a scrudar en {{PLURAL:$5|in di|$5 dis}}.
 
@@ -502,16 +497,16 @@ Sch\'insatgi auter ha fatg questa dumonda, ni sch\'il pled-clav è vegnì endame
 'passwordsent' => "In nov pled-clav è vegnì tramess a l'adressa dad e-mail ch'è registrada per l'utilisader \"\$1\".
 T'annunzia per plaschair sche ti has retschavì el.",
 'blocked-mailpassword' => "L'adressa dad IP che ti utiliseschas è vegnida bloccada per midar paginas. Plinavant è era la funcziun da generar in nov pled-clav vegnida bloccada per impedir in abus da questa funcziun.",
-'eauthentsent' => "In e-mail da confermaziun è vegnì tramess a l'adressa dad e-mail numnada.
+'eauthentsent' => "In e-mail da confermaziun è vegnì tramess a l'adressa d'e-mail inditgada.
 Suonda las infurmaziuns en l'e-mail per confermar ch'il conto d'utilisader è il tes.",
-'throttled-mailpassword' => "Entaifer {{PLURAL:$1|l'ultima ura|las ultimas $1 uras}} è gia vegnì tramess in pled-clav temporar.
-Per impedir abus vegn be tramess in pled-clav temporar entaifer {{PLURAL:$1|in ura|$1 uras}}.",
+'throttled-mailpassword' => "Entaifer {{PLURAL:$1|l'ultima ura|las ultimas $1 uras}} è gia vegnì tramess in e-mail per redefinir il pled-clav.
+Per impedir abus vegn be tramess in e-mail per redefinir il pled-clav entaifer {{PLURAL:$1|in ura|$1 uras}}.",
 'mailerror' => "Errur cun trametter l'e-mail: $1",
 'acct_creation_throttle_hit' => "Visitaders da questa wiki cun tia adressa dad IP han gia creà {{PLURAL:$1|1 conto|$1 contos}} l'ultim di. Quai è il maximum lubì en questa perioda.
 Perquai pon visitaders cun questa IP betg pli crear dapli contos per il mument.",
-'emailauthenticated' => 'Tia adressa dad e-mail è vegnida verifitgada ils $2 las $3.',
-'emailnotauthenticated' => "Vus n'avais betg anc <strong>confermà vossa adressa dad e-mail</strong>.<br />
-Perquei è anc nagin retschaiver e trametter dad e-mails per las suandantas funcziuns pussaivel.",
+'emailauthenticated' => "Tia adressa d'e-mail è vegnida confermada ils $2 a las $3.",
+'emailnotauthenticated' => "Ti n'has betg anc betg confermà tia adressa d'e-mail.
+Las suandantas funcziun èn pir disponiblas suenter che l'adressa è confermada.",
 'noemailprefs' => 'Inditgescha ina adressa dad e-mail en tias preferenzas, per che suandantas funcziuns ta stattan a disposiziun.',
 'emailconfirmlink' => "Confermar l'adressa dad e-mail",
 'invalidemailaddress' => "L'adressa dad e-mail na po betg vegnir acceptada perquai ch'ella para dad avair in format nunvalid. 
@@ -519,14 +514,14 @@ Endatescha per plaschair ina adressa formatada correctamain u svida cumplettamai
 'cannotchangeemail' => "L'adressa dad e-mail dal conto na po betg vegnir midada sin questa vichi.",
 'emaildisabled' => 'Questa pagina na sa betg trametter e-mails.',
 'accountcreated' => "Creà il conto d'utilisader",
-'accountcreatedtext' => "Il conto d'utilisader per $1 è vegnì creà.",
+'accountcreatedtext' => "Il conto d'utilisader [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) è vegnì creà.",
 'createaccount-title' => 'Crear in conto per {{SITENAME}}',
 'createaccount-text' => "Insatgi ha creà in conto d'utilisader per tia adressa dad e-mail sin {{SITENAME}} ($4). Il pled-clav generà automaticamain per l'utilisader «$2» è «$3». Ti ta duessas t'annunzar uss e midar tes pled-clav. 
 
 Sche ti na levas betg crear quest conto d'utilisader pos ti ignorar quest e-mail.",
 'usernamehasherror' => "Il num d'utilisader na po betg cuntegnair il segn da rauta (#)",
 'login-throttled' => "Ti has empruvà memia savens da t'annunziar.
-Spetga per plaschair avant ch'empruvar anc ina giada.",
+Spetga $1 avant ch'empruvar anc ina giada.",
 'login-abort-generic' => 'Annunzia senza success - Annullà',
 'loginlanguagelabel' => 'Lingua: $1',
 'suspicious-userlogout' => "Tia dumonda per partir è vegnida refusada perquai ch'i para ch'ella è vegnida tramessa d'in navigatur che funcziuna betg correctamain u d'in proxy da cache.",
@@ -536,7 +531,7 @@ Spetga per plaschair avant ch'empruvar anc ina giada.",
 'user-mail-no-addy' => 'Empruvà da trametter in e-mail senza ina adressa dad e-mail.',
 
 # Change password dialog
-'resetpass' => 'Midar il pled-clav',
+'changepassword' => 'Midar pled-clav',
 'resetpass_announce' => "Ti ès t'annunzià cun in pled-clav temporar che ti has retschavì per e-mail. 
 Per finir da t'annunziar stos ti definir qua in nov pled-clav:",
 'resetpass_header' => 'Midar il pled-clav dal conto',
@@ -544,8 +539,7 @@ Per finir da t'annunziar stos ti definir qua in nov pled-clav:",
 'newpassword' => 'pled-clav nov:',
 'retypenew' => 'repeter pled-clav nov:',
 'resetpass_submit' => "Definir il pled clav e m'annunziar",
-'changepassword-success' => 'Tes pled-clav è vegnì midà cun success. 
-Ti vegns annunzià…',
+'changepassword-success' => 'Tes pled-clav è vegnì midà cun success!',
 'resetpass_forbidden' => 'Il pled-clav na po betg vegnir midà',
 'resetpass-no-info' => "Ti stos t'annunziar per acceder directamain questa pagina.",
 'resetpass-submit-loggedin' => 'Midar il pled-clav',
@@ -564,25 +558,25 @@ Eventualmain has ti gia midà cun success tes pled-clav u dumandà per in nov pl
 'passwordreset-capture-help' => "Sche ti activeschas quest champ vegn l'e-mail (cun il pled-clav temporar) mussà a ti sco era tramess a l'utilisader.",
 'passwordreset-email' => 'Adressa dad e-mail:',
 'passwordreset-emailtitle' => 'Detagls davart il conto sn {{SITENAME}}',
-'passwordreset-emailtext-ip' => "Insatgi (probablamain ti da l'adressa dad IP $1) ha dumandà in nov pled-clav per la pagina {{SITENAME}} ($4). 
-{{PLURAL:$3|Il suandant conto d'utilisader è collià|Ils suandants contos d'utilisader èn colliads}} cun questa adressa dad e-mail:
+'passwordreset-emailtext-ip' => "Insatgi (probablamain ti, da l'adressa IP $1) ha dumandà da redefinir il pled-clav per la pagina {{SITENAME}} ($4). 
+{{PLURAL:$3|Il suandant conto d'utilisader è collià|Ils suandants contos d'utilisader èn colliads}} cun questa adressa d'e-mail:
 
 $2
 
 {{PLURAL:$3|Quest pled-clav temporar|Quests pleds-clav temporars}} èn valids {{PLURAL:$5|in di|$5 dis}}.
-Ti duessas t'annunziar e tscherner ussa in nov pled-clav. Sch'enzatgi auter ha empustà quests novs pleds-clav u sche ti ta regordas puspè da tes pled-clav original e na vuls betg pli midar il pled-clav pos ti ignorar quest messadi e cuntinuar dad utilisar tes pled-clav original.",
-'passwordreset-emailtext-user' => "L'utilisader $1 sin {{SITENAME}} ha dumandà in nov pled-clav per tes conto d'utilisader sin la pagina {{SITENAME}} ($4). 
+Ti duessas t'annunziar ussa e tscherner in nov pled-clav. Sch'enzatgi auter ha empustà quests novs pleds-clav u sche ti ta regordas puspè da tes pled-clav original e na vuls betg pli midar el, pos ti ignorar quest messadi e cuntinuar d'utilisar tes pled-clav original.",
+'passwordreset-emailtext-user' => "L'utilisader $1 sin {{SITENAME}} ha dumandà da redefinir il pled-clav per {{SITENAME}} ($4). 
 {{PLURAL:$3|Il suandant conto d'utilisader è collià|Ils suandants contos d'utilisader èn colliads}} cun questa adressa dad e-mail:
 
 $2
 
 {{PLURAL:$3|Quest pled-clav temporar|Quests pled-clav temporars}} èn valids {{PLURAL:$5|in di|$5 dis}}.
-Ti duessas t'annunziar e tscherner ussa in nov pled-clav. Sche ti na levas betg quests novs pleds-clav u sche ti ta regordas puspè da tes pled-clav original e na vuls betg pli midar il pled-clav pos ti ignorar quest messadi e cuntinuar dad utilisar tes pled-clav original.",
+Ti duessas t'annunziar ussa e tscherner in nov pled-clav. Sche ti na levas betg quests novs pleds-clav u sche ti ta regordas puspè da tes pled-clav original e na vuls betg pli midar il pled-clav pos ti ignorar quest messadi e cuntinuar dad utilisar tes pled-clav original.",
 'passwordreset-emailelement' => "Num d'utilisader: $1
 Pled-clav temporar: $2",
-'passwordreset-emailsent' => 'In e-mail cun in nov pled-clav è vegnì tramess.',
-'passwordreset-emailsent-capture' => "L'e-mail per far endament, che vegn mussà sutvart, è vegnì tramess.",
-'passwordreset-emailerror-capture' => "L'e-mail per far endament, che vegn mussà sutvart, è vegnì generà, ma ha dentant betg pudì vegnir spedì a l'utilisader: $1",
+'passwordreset-emailsent' => 'In e-mail per redefinir il pled-clav è vegnì tramess.',
+'passwordreset-emailsent-capture' => 'In e-mail (sco mussà sutvart) per redefinir il pled-clav è vegnì tramess.',
+'passwordreset-emailerror-capture' => "In e-mail (sco mussà sutvart) per redefinir il pled-clav è vegnì generà ma n'ha betg pudì envià a l'{{GENDER:$2|utilisader|utilisadra}}: $1",
 
 # Special:ChangeEmail
 'changeemail' => "Midar l'adressa dad e-mail",
@@ -673,20 +667,18 @@ Ella è eventualmain vegnida spustada u stizzada durant che ti has contemplà la
 'loginreqlink' => "t'annunziar",
 'loginreqpagetext' => 'Ti stos $1 per vesair autras paginas.',
 'accmailtitle' => 'Il pled-clav è vegnì tramess.',
-'accmailtext' => "In pled-clav casual per l'utilisader [[User talk:$1|$1]] è vegnì tramess a $2.
-
-Il pled-clav per quest nov conto po vegnir midà sin la pagina ''[[Special:ChangePassword|midar pled-clav]]'' suenter che ti t'es annunzià.",
+'accmailtext' => "In pled-clav casual per [[User talk:$1|$1]] è vegnì tramess a $2. El po vegnir midà sin la pagina ''[[Special:ChangePassword|midar pled-clav]]'' suenter che ti t'es annunzià.",
 'newarticle' => '(Nov)',
-'newarticletext' => "Ti has cliccà in link ad ina pagina che exista anc betg. Per crear ina pagina, entschaiva a tippar en la stgaffa sutvart (guarda [[{{MediaWiki:Helppage}}|la pagina d'agid]] per t'infurmar).",
+'newarticletext' => "Ti has cliccà ina colliaziun ad ina pagina che n'exista anc betg. Per crear ina pagina, entschaiva a tippar en la stgaffa sutvart (guarda [[{{MediaWiki:Helppage}}|la pagina d'agid]] per t'infurmar).",
 'anontalkpagetext' => "----''Quai è la pagina da discussiun per in utilisader anomim che n'ha anc betg creà in conto d'utilisader u che n'al utilisescha betg.
 Perquai avain nus d'utilisar l'adressa dad IP per l'identifitgar.
 Ina tala adressa dad IP po vegnir utilisada da differents utilisaders.
 Sche ti es in utilisaders anonim e pensas che commentaris che na pertutgan betg tai vegnan adressads a tai, lura [[Special:UserLogin/signup|creescha in conto]] u [[Special:UserLogin|t'annunzia]] per evitar en futur che ti vegns sbaglià cun auters utilisaders.''",
-'noarticletext' => 'Quest artitgel cuntegna actualmain nagin text.
+'noarticletext' => 'Quest artitgel na cuntegna actualmain nagin text.
 Ti pos [[Special:Search/{{PAGENAME}}|tschertgar il term]] sin in\'autra pagina,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tschertgar en ils logs],
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tschertgar en ils protocols],
 u [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear questa pagina]</span>.',
-'noarticletext-nopermission' => 'Questa pagina cuntegna actualmain nagin text.
+'noarticletext-nopermission' => 'Questa pagina na cuntegna actualmain nagin text.
 Ti pos [[Special:Search/{{PAGENAME}}|tschertgar quest titel]] en autras paginas u <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tschertgar en ils protocols correspundents]</span>, ma ti n\'has betg ils dretgs da crear questa pagina.',
 'missing-revision' => 'La versiun #$1 da la pagina cun il num "{{PAGENAME}}" n\'exista betg.
 
@@ -696,7 +688,7 @@ Detagls pon vegnri chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 Controllescha sch ti vuls propi crear/modiftgar questa pagina.',
 'userpage-userdoesnotexist-view' => 'Il conto d\'utilisader "$1" n\'exista betg.',
 'blocked-notice-logextract' => "Quai utilisader è bloccà actualmain. 
-L'ultima endataziun dal log da bloccar vegn mussà sutvart sco referenza:",
+L'ultima endataziun en il protocol da bloccadas vegn mussà sutvart sco referenza:",
 'clearyourcache' => "'''Remartga''' Suenter memorisar las midadas stos ti eventualmain svidar il chache da tes navigatur per vesair las midadas.
 * '''Firefox / Safari:''' Tegnair ''Shift'' durant cliccar ''chargiar danovamain'', u smatgar ''Ctrl-F5'' u ''Ctrl-R'' (''⌘-R'' sin in Mac)
 * '''Google Chrome:''' Smatgar ''Ctrl-Shift-R'' (''⌘-Shift-R'' sin in Mac)
@@ -760,17 +752,17 @@ Ti confermas era che ti has scrit sez quest text u al has copià d'ina funtaunda
 '''Betg trametta ovras protegidas dal dretg d'autur senza lubientscha!'''",
 'longpageerror' => "'''Errur: Il text che ti has tramess è {{PLURAL:$1|in kilobyte|$1 kilobytes}} grond. Quei ei pli grond ch'il maximum da {{PLURAL:$2|in kilobyte|$2 kilobytes}}.'''
 Il text na po betg vegnir memorisà.",
-'readonlywarning' => "'''Attenziun: La banca da datas è vegnida bloccada per motivs da mantegniment, uschia che ti na sas betg memorisar tias modificaziuns gest ussa.'''
-Per betg perder las midadas ta recummandain nus da copiar il text en in editur da text sin tes computer ed al memorisar per pli tard. 
+'readonlywarning' => "'''Attenziun: La banca da datas è vegnida bloccada per motivs da mantegniment, uschia che ti na sas betg memorisar tias modificaziuns per il mument.'''
+Per betg perder tias modificaziuns ta recummandain nus da copiar il text en ina datoteca da text e da memorisar el per pli tard. 
 
 Igl adminstratur che ha bloccà la banca da datas ha inditgà suandant motiv: $1",
-'protectedpagewarning' => "'''Attenziun: Questa pagina è vegnida bloccada, uschè che be utilisaders cun dretgs dad administraturs la pon modifitgar. '''
-Sco infurmaziun vegn mussada sutvart l'ultima endataziun dal cudesch da log:",
+'protectedpagewarning' => "'''Attenziun: Questa pagina è vegnida protegida, uschè che be utilisaders cun dretgs d'administratur la pon modifitgar. '''
+Sco infurmaziun vegn mussada sutvart l'ultima endataziun en il protocol:",
 'semiprotectedpagewarning' => "'''Attenziun: Questa pagina è vegnida bloccada, uschè che be utilisaders registrads la pon modifitgar.'''
-Sco infurmaziun vegn mussada sutvart l'ultima endataziun dal cudesch da log:",
+Sco infurmaziun vegn mussada sutvart l'ultima endataziun en il protocol:",
 'cascadeprotectedwarning' => "'''Attenziun:''' Questa pagina è vegnida protegiada uschia che be utilisaders cun dretgs d'administratur la pon modifitgar. Quella protecziun è activa perquai che la pagina è integrada en suandanta{{PLURAL:$1| pagina|s paginas}} cun activà l'opziun «protecziun ertada»:",
 'titleprotectedwarning' => "'''Attenziun: Questa pagina è vegnida protegia uschia che [[Special:ListGroupRights|dretgs specifics]] èn necessaris per la crear.'''
-L'ultima endataziun dal log vegn mussada sco referenza:",
+L'ultima endataziun dal protocol vegn mussada sco referenza:",
 'templatesused' => '{{PLURAL:$1|In model utilisà|Models utilisads}} sin questa pagina:',
 'templatesusedpreview' => '{{PLURAL:$1|In model utilisà|Models utilisads}} per questa prevista:',
 'templatesusedsection' => '{{PLURAL:$1|In model|Models}} utilisads en quest chapitel:',
@@ -787,11 +779,11 @@ Ti pos ir anavos e modifitgar ina pagina existenta, u [[Special:UserLogin|t'annu
 'permissionserrorstext-withaction' => "Ti n'has betg la permissiun da $2. Quai ord {{PLURAL:$1|il suandant motiv|ils suandants motivs}}:",
 'recreate-moveddeleted-warn' => "'''Attenziun: Ti recreeschas in artitgel ch'è vegni stizzà pli baud.'''
 
-Esi propi adattà da puspè crear questa pagina?
-Qua pos guardar il log da stizzar e spustar da la pagina:",
+Èsi propi adattà da crear questa pagina danovamain?
+Qua pos ti guardar il protocol d'eliminaziuns e spustaments da la pagina:",
 'moveddeleted-notice' => 'Questa pagina è vegnida stizzada. 
-Ils logs da stizzar e spustar da la pagina vegnan mussads sutvart sin questa pagina.',
-'log-fulllog' => 'Mussar il log cumplain',
+Ils protocols da stizzar e spustar da la pagina vegnan mussads sutvart sin questa pagina.',
+'log-fulllog' => 'Mussar il protocol cumplain',
 'edit-hook-aborted' => 'La modificaziun è vegnida interrutta dal hook.
 Nagina decleraziun inditgada.',
 'edit-gone-missing' => "La pagina na pudeva betg vegnir actualisada. 
@@ -846,7 +838,7 @@ Controlleschan en la vista per cumparegliar sutvart sche quei è quai che ti vul
 Il motiv inditgà da $3 è ''$2''",
 
 # History pages
-'viewpagelogs' => 'Guardar ils logs da questa pagina',
+'viewpagelogs' => 'Guardar ils protocols da questa pagina',
 'nohistory' => "Per questa pagina n'exista nagina cronologia.",
 'currentrev' => 'Versiun actuala',
 'currentrev-asof' => 'Versiun actuala dals $2, las $3 uras',
@@ -866,8 +858,8 @@ Il motiv inditgà da $3 è ''$2''",
 * M = Midà be bagatellas',
 'history-fieldset-title' => 'tschertgar en la cronica',
 'history-show-deleted' => 'be versiuns stizzadas',
-'histfirst' => 'pli veglia',
-'histlast' => 'pli nova',
+'histfirst' => 'la pli veglia',
+'histlast' => 'la pli nova',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(vid)',
 
@@ -881,48 +873,44 @@ Emprova da [[Special:Search|tschertgar]] novas paginas sumegliantas en la wiki."
 
 # Revision deletion
 'rev-deleted-comment' => '(allontanà la resumaziun da las modificaziuns)',
-'rev-deleted-user' => "(stidà num d'utilisader)",
-'rev-deleted-event' => '(stidà acziun dal log)',
+'rev-deleted-user' => "(stizzà num d'utilisader)",
+'rev-deleted-event' => '(stizzà acziun dal protocol)',
 'rev-deleted-user-contribs' => "[Allontanà il num d'utilisader u l'adressa IP - zupentà la modificaziun da las contribuziuns]",
 'rev-deleted-text-permission' => "Questa versiun da la pagina è vegnida '''stizzada'''.
-Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log da stizzar].",
+Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protocol d'eliminaziuns].",
 'rev-deleted-text-unhide' => "Questa versiun da la pagina è vegnida '''stizzada'''.
-Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log da stizzar].
+Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protocol d'eliminaziuns].
 Ti sas anc adina [$1 contemplar questa versiun].",
 'rev-suppressed-text-unhide' => "Questa versiun da la pagina è vegnida '''supprimida'''.
-Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log da supprimer].
+Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protocol da suppressiuns].
 Ti pos anc adina [$1 contemplar questa versiun].",
 'rev-deleted-text-view' => "Questa versiun da la pagina è vegnida '''stizzada'''.
-Ti pos la vesair; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log da stizzar].",
+Ti pos la vesair; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protocol d'eliminaziuns].",
 'rev-suppressed-text-view' => "Questa versiun da la pagina è vegnida '''supprimida'''.
-Ti pos la vesair; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}  log da supprimer].",
+Ti pos la vesair; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protocol da suppressiuns].",
 'rev-deleted-no-diff' => "Ti na pos betg guardar quest diff perquai ch'ina da las versiuns è vegnida '''stizzada'''.
-Detagls pos ti chattar en [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log da stizzar].",
+Detagls chattas ti en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protocol d'eliminaziuns].",
 'rev-suppressed-no-diff' => "Ti na pos betg guardar quest diff perquai ch'ina da las versiuns è vegnida '''stizzada'''.",
 'rev-deleted-unhide-diff' => "Ina da las versiuns da quest diff è vegnida '''stizzada'''.
-Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log da stizzar].
+Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protocol d'eliminaziuns].
 Ti pos anc adina [$1 contemplar quest diff] sche ti vuls cuntinuar.",
 'rev-suppressed-unhide-diff' => "Ina da las versiuns da quest diff è vegnida '''supprimida'''.
-Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log da supprimer].
+Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protocol d'eliminaziuns].
 Ti pos anc adina [$1 contemplar quest diff] sche ti vuls cuntinuar.",
 'rev-deleted-diff-view' => "Ina da las versiuns da quest diff è vegnida '''stizzada'''.
-Ti pos vesair quest diff; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log da stizzar].",
+Ti pos vesair quest diff; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protocol d'eliminaziuns].",
 'rev-suppressed-diff-view' => "Ina da las versiuns da quest diff è vegnida '''supprimida'''.
-Ti pos vesair quest diff; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}  log da supprimer].",
+Ti pos vesair quest diff; detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protocol da suppressiuns].",
 'rev-delundel' => 'mussar/zuppentar',
 'rev-showdeleted' => 'mussar',
 'revisiondelete' => 'Stizzar/restituir versiuns',
 'revdelete-nooldid-title' => 'Inditgà versiun nunvalida',
 'revdelete-nooldid-text' => "Ti n'has u betg inditga ina versiun per exequir questa funcziun, la versiun n'exista betg u che ti emprovas da zuppentar la versiun actuala.",
-'revdelete-nologtype-title' => 'Inditgà nagin tip da log',
-'revdelete-nologtype-text' => "Ti n'has betg inditgà in tip da log per exequir questa acziun.",
-'revdelete-nologid-title' => 'Endataziun nunvalida dal log',
-'revdelete-nologid-text' => "Ti n'has u betg inditga ina versiun per exequir questa funcziun u che la versiun inditgada n'exista betg.",
 'revdelete-no-file' => "La datoteca specifitgada n'exista betg.",
 'revdelete-show-file-confirm' => 'Es ti segir che ti vuls vesar ina versiun stizzada da la datoteca "<nowiki>$1</nowiki>" dals $2 las $3?',
 'revdelete-show-file-submit' => 'Gea',
 'revdelete-selected' => "'''{{PLURAL:$2|Versiun tschernida|Versiuns tschernidas}} da [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Elements dal log tschernì|Elements dal log tschernids}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Element dal protocol tschernì|Elements dal protocol tschernids}}:'''",
 'revdelete-text' => "'''Versiuns ed ocurrenzas stizzadas cumparan era vinavant en la cronologia ed en ils protocols, dentant èn parts dal cuntegn betg accessibels al public.'''
 Auters administraturs sin {{SITENAME}} vegnan tuttina ad avair access al cuntegn zuppentà e pon restaurar puspè la pagina, sch'i na vegnan betg definidas restricziuns supplementaras.",
 'revdelete-confirm' => 'Confermescha che ti vuls far quai, che ti chapeschas las consequenzas e che ti fas quai en accordanza cun [[{{MediaWiki:Policy-url}}|las directivas]].',
@@ -931,15 +919,15 @@ Auters administraturs sin {{SITENAME}} vegnan tuttina ad avair access al cuntegn
 * Infurmaziuns persunalas deplazzadas
 *: ''Adressas e numers da telefon, numers d'AVS, etc.''",
 'revdelete-legend' => 'Definir restricziuns da la visibilitad',
-'revdelete-hide-text' => 'Zuppetar il text da la versiun',
+'revdelete-hide-text' => 'Text da la versiun',
 'revdelete-hide-image' => 'Zuppentar il cuntegn da la datoteca',
 'revdelete-hide-name' => "Zuppentar l'acziun ed la destinaziun",
-'revdelete-hide-comment' => 'Zuppentar la resumaziun da la midada',
-'revdelete-hide-user' => "Zuppentar il num d'utilisader/l'adressa IP da l'autur",
+'revdelete-hide-comment' => 'Resumaziun da la modificaziun',
+'revdelete-hide-user' => "Num d'utilisader/adressa IP da l'autur",
 'revdelete-hide-restricted' => 'Supprimer las datas per administraturs sco per auters',
 'revdelete-radio-same' => '(na betg midar)',
-'revdelete-radio-set' => 'Gea',
-'revdelete-radio-unset' => 'Na',
+'revdelete-radio-set' => 'Zuppentà',
+'revdelete-radio-unset' => 'Vesaivel',
 'revdelete-suppress' => 'Supprimer il motiv per administraturs sco per auters',
 'revdelete-unsuppress' => 'Allontanar las restricziuns per versiuns restauradas',
 'revdelete-log' => 'Motiv:',
@@ -951,10 +939,8 @@ $1",
 'logdelete-failure' => "'''Betg pussaivel da midar la visibilitad dal protocol:'''
 $1",
 'revdel-restore' => 'midar la visibilitad',
-'revdel-restore-deleted' => 'versiuns stizzadas',
-'revdel-restore-visible' => 'versiuns visiblas',
 'pagehist' => 'Istorgia da las versiuns',
-'deletedhist' => 'Cronologia da stizzar',
+'deletedhist' => "Cronologia d'eliminaziuns",
 'revdelete-hide-current' => "Errur cun zuppentar l'element datà ils $1 las $2: Quai è la versiun actuala. 
 Ella na po betg vegnir zuppentada.",
 'revdelete-show-no-access' => 'Errur cun mussar l\'element datà ils $1 las $2: Quest element è vegnì marcà sco "restrenschì".
@@ -1007,7 +993,7 @@ Fa stim che navigar cun agid da las coalliziuns reinizialisescha tia tscherna.',
 'mergehistory-reason' => 'Motiv:',
 
 # Merge log
-'mergelog' => "Log d'unir",
+'mergelog' => 'Protocol da fusiuns',
 'pagemerge-logentry' => 'unì [[$1]] a [[$2]] (versiuns enfin $3)',
 'revertmerge' => 'Revocar la fusiun',
 'mergelogpagetext' => "Sutvart è ina glista da las ultimas cronologias ch'èn vegnidas unidas cun autras.",
@@ -1031,12 +1017,8 @@ Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 # Search results
 'searchresults' => 'Resultats da tschertga',
 'searchresults-title' => 'Resultats da tschertga per "$1"',
-'searchresulttext' => "Per dapli infurmaziuns davart il tschertgar sin {{SITENAME}}, guarda l'[[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Ti has tschertgà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tut las paginas che entschevan cun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|colliaziuns a "$1"]])',
-'searchsubtitleinvalid' => "Ti has tschertgà '''$1'''",
 'toomanymatches' => 'Il dumber dals resultats è memia grond. Tschertga per plaschair auters terms.',
 'titlematches' => 'Titels da paginas che correspundan',
-'notitlematches' => 'Nagin titel correspunda',
 'textmatches' => 'Texts da paginas che correspundan',
 'notextmatches' => 'Nagin text correspunda',
 'prevn' => 'davos {{PLURAL:$1|$1}}',
@@ -1045,10 +1027,8 @@ Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'nextn-title' => '{{PLURAL:$1|Proxim resultat|Proxims resultats}}',
 'shown-title' => 'Mussar $1 {{PLURAL:$1|resultat|resultats}} per pagina',
 'viewprevnext' => 'Mussar ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opziuns da tschertgar',
 'searchmenu-exists' => "'''Igl exista ina pagina cun il num \"[[:\$1]] sin questa vichi\"'''",
 'searchmenu-new' => "'''Crear la pagina \"[[:\$1]]\" sin questa vichi!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Mussar tut las paginas cun quest prefix]]',
 'searchprofile-articles' => 'Paginas da cuntegn',
 'searchprofile-project' => 'Agid e paginas dal project',
 'searchprofile-images' => 'Multimedia',
@@ -1069,21 +1049,16 @@ Detagls pon vegnir chattads en il [{{fullurl:{{#Special:Log}}/delete|page={{FULL
 'search-interwiki-default' => '$1 resultats:',
 'search-interwiki-more' => '(dapli)',
 'search-relatedarticle' => 'Sumegliant',
-'mwsuggest-disable' => 'Deactivar propostas AJAX',
 'searcheverything-enable' => 'Tschertgar en tut ils tips da pagina',
 'searchrelated' => 'sumegliant',
 'searchall' => 'tuts',
 'showingresults' => "Sutvart èn enfin {{PLURAL:$1|'''in''' resultat|'''$1''' resultats}} cumenzond cun il numer '''$2'''.",
 'showingresultsnum' => "Qua èn {{PLURAL:$3|'''1''' resultat|'''$3''' resultats}}, cumenzond cun il number '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' da '''$3'''|Resultats '''$1-$2''' da '''$3'''}} per '''$4'''",
-'nonefound' => "'''Remartga''': Sco standard vegn be tschertga en tscherts tips da pagina.
-Scriva il prefix ''all:'' avant il term che ti vuls tschertgar, per tschertgar en tut las paginas (incl. discussiuns, models etc.) u scriva directamain il prefix dal spazi da num en il qual ti vuls tschertgar.",
 'search-nonefound' => 'Per il term tschertgà èn nagins resultats vegnids chattads.',
-'powersearch' => 'retschertgar',
 'powersearch-legend' => 'Tschertga extendida',
 'powersearch-ns' => 'Tschertgar en tips da pagina:',
 'powersearch-redir' => 'Mussar renviaments',
-'powersearch-field' => 'Tschertgar',
 'powersearch-togglelabel' => 'Tscherna:',
 'powersearch-toggleall' => 'Tuts',
 'powersearch-togglenone' => 'Nagins',
@@ -1096,7 +1071,6 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 'preferences' => 'Preferenzas',
 'mypreferences' => 'Preferenzas',
 'prefs-edits' => 'Dumber da las modificaziuns:',
-'changepassword' => 'Midar pled-clav',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Prevista',
 'datedefault' => 'Nagina preferenza',
@@ -1119,13 +1093,11 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 'prefs-email' => 'Opziuns dad e-mail',
 'prefs-rendering' => 'Cumparsa',
 'saveprefs' => 'memorisar',
-'resetprefs' => 'remetter las preferenzas (reset)',
-'restoreprefs' => 'Restituir tut las preferenzas da standard',
+'restoreprefs' => 'Restituir tut las preferenzas da standard (en tut las secziuns)',
 'prefs-editing' => 'Modifitgar',
 'rows' => 'Lingias:',
 'columns' => 'Colonnas:',
 'searchresultshead' => 'Tschertga',
-'resultsperpage' => 'resultats per pagina:',
 'stub-threshold' => 'Limita per la formataziun sco <a href="#" class="stub">colliaziun a stubs</a>, en bytes:',
 'stub-threshold-disabled' => 'Deactivà',
 'recentchangesdays' => 'Dumber da dis che duain vegnir mussads en las ultimas midadas:',
@@ -1137,7 +1109,6 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
 'localtime' => 'Temp local:',
 'timezoneuseserverdefault' => 'Utilisar il standard dal wiki ($1)',
 'timezoneuseoffset' => 'Auter (inditgar la differenza)',
-'timezoneoffset' => 'Differenza¹:',
 'servertime' => 'Temp dal server:',
 'guesstimezone' => 'Surprender dal navigatur',
 'timezoneregion-africa' => 'Africa',
@@ -1177,7 +1148,7 @@ Questa operaziun na po betg vegnir revocada.',
 Controllai ils tags da HTML.',
 'badsiglength' => 'Vossa signatura è memia lunga. 
 Ella na dastga betg esser pli lunga che $1 {{PLURAL:$1|caracter|caracters}}.',
-'yourgender' => 'Schlattaina',
+'yourgender' => 'Schlattaina:',
 'gender-unknown' => 'Betg inditgà',
 'gender-male' => 'Masculin',
 'gender-female' => 'Feminin',
@@ -1194,7 +1165,7 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'prefs-signature' => 'Signatura',
 'prefs-dateformat' => 'Format da la data',
 'prefs-timeoffset' => 'Differenza da temp',
-'prefs-advancedediting' => 'Opziuns extendidas',
+'prefs-advancedediting' => 'Opziuns generalas',
 'prefs-advancedrc' => 'Opziuns extendidas',
 'prefs-advancedrendering' => 'Opziuns extendidas',
 'prefs-advancedsearchoptions' => 'Opziuns extendidas',
@@ -1226,7 +1197,7 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'userrights-no-interwiki' => "Ti n'has betg la permissiun da midar dretgs d'utilisaders sin autras wikis.",
 'userrights-nodatabase' => "La banca da datas $1 n'exista betg u n'è betg locala.",
 'userrights-nologin' => "Ti stos [[Special:UserLogin|t'annunziar]] cun in conto d'aministratur per modifitgar ils dretgs d'utilisader.",
-'userrights-notallowed' => "Tes conto d'utilisader n'ha betg la permissiun dad agiuntar u allontanar dretgs d'utilisaders.",
+'userrights-notallowed' => "Ti n'has betg la permissiun d'agiuntar u allontanar dretgs d'utilisader.",
 'userrights-changeable-col' => 'Gruppas che ti pos modifitgar',
 'userrights-unchangeable-col' => 'Gruppas che ti nas pos betg modifitgar',
 
@@ -1286,7 +1257,7 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'right-browsearchive' => 'Tschertgar paginas stizzadas',
 'right-undelete' => 'Restituir ina pagina',
 'right-suppressrevision' => "Examinar e restituir versiuns ch'èn era betg vesaivlas per ils administraturs",
-'right-suppressionlog' => 'Vesair logs privats',
+'right-suppressionlog' => 'Vesair protocols privats',
 'right-block' => "Impedir utilisaders ch'els pon betg pli modifitgar",
 'right-blockemail' => "Impedir utilisaders ch'els pon trametter e-mails",
 'right-hideuser' => "Bloccar e zuppentar in num d'utilisader",
@@ -1294,7 +1265,7 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'right-proxyunbannable' => "N'è betg pertutgà da bloccadas automaticas da proxys",
 'right-unblockself' => 'Debloccar sasez',
 'right-protect' => 'Midar il livel da protecziun e modifitgar paginas protegidas',
-'right-editprotected' => 'Modifitgar paginas protegidas (senza protecziun ertada)',
+'right-editprotected' => 'Modifitgar paginas protegidas cun «{{int:protect-level-sysop}}»',
 'right-editinterface' => "Modifitgar l'interfascha per l'utilisader",
 'right-editusercssjs' => "Modifitgar datotecas da CSS e JavaScript d'auters utilisaders",
 'right-editusercss' => "Modifitgar datotecas da CSS d'auters utilisaders",
@@ -1317,12 +1288,12 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'right-passwordreset' => "Vesair l'e-mail per redefinir pleds-clav",
 
 # Special:Log/newusers
-'newuserlogpage' => "Log d'utilisaders creads",
-'newuserlogpagetext' => "Quai è il log dals contos d'utilisader ch'èn vegnids creads.",
+'newuserlogpage' => "Protocol d'utilisaders creads",
+'newuserlogpagetext' => "Quai è il protocol dals contos d'utilisader ch'èn vegnids creads.",
 
 # User rights log
-'rightslog' => "Log dals dretgs d'utilisader",
-'rightslogtext' => "Quai è il log da las midadas en ils dretgs d'utilisaders.",
+'rightslog' => "Protocol dals dretgs d'utilisader",
+'rightslogtext' => "Quai è il protocol da las midadas en ils dretgs d'utilisaders.",
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-read' => 'leger questa pagina',
@@ -1346,12 +1317,12 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'action-browsearchive' => 'tschertgar paginas stizzadas',
 'action-undelete' => 'restituir questa pagina',
 'action-suppressrevision' => 'vesair e restituir questa versiun zuppentada',
-'action-suppressionlog' => 'vesair quest log privat',
+'action-suppressionlog' => 'vesair quest protocol privat',
 'action-block' => "bloccar quest utilisader ch'el na po betg pli modifitgar",
 'action-protect' => 'midar il livel da protecziun da questa pagina',
 'action-rollback' => "revocar spert las midadas da l'ultim utilisader che ha modifitgà ina pagina particulara",
-'action-import' => "importar questa pagina d'in auter wiki",
-'action-importupload' => "importar questa pagina d'ina datoteca chargiada si",
+'action-import' => "importar paginas d'in auter wiki",
+'action-importupload' => "importar paginas d'ina datoteca chargiada si",
 'action-patrol' => "marcar modificaziuns d'auters sco controlladas",
 'action-autopatrol' => 'marcar tias modificaziuns sco controlladas',
 'action-unwatchedpages' => 'vesair la glista da las paginas betg contempladas',
@@ -1371,8 +1342,7 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'recentchanges-label-minor' => 'Quai è ina pitschna modificaziun',
 'recentchanges-label-bot' => 'Questa modificaziun è vegnida exequida dad in bot',
 'recentchanges-label-unpatrolled' => "Questa midada n'è anc betg vegnida controllada",
-'recentchanges-legend-newpage' => '$1 - nova pagina',
-'rcnote' => "Sutvart {{PLURAL:$1|è '''ina''' midada|èn las ultimas '''$1''' midadass}} {{PLURAL:$2|da l'ultim di|dals ultims '''$2''' dis}}, versiun dals  $4 $5.",
+'recentchanges-legend-newpage' => '(vesair era la [[Special:NewPages|glista da novas paginas]])',
 'rcnotefrom' => "Midadas dapi '''$2''' (maximalmain '''$1''' vegnan mussads).",
 'rclistfrom' => 'Mussar las novas midadas entschavend cun $1',
 'rcshowhideminor' => '$1 midadas pitschnas',
@@ -1394,14 +1364,14 @@ Tia adressa dad e-mail na vegn betg mussada sche auters utilisaders ta contactes
 'rc_categories_any' => 'Tuts',
 'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} suenter la midada',
 'newsectionsummary' => 'Nov chapitel /* $1 */',
-'rc-enhanced-expand' => 'Mussar detagls (JavaScript è necessari)',
+'rc-enhanced-expand' => 'Mussar detagls',
 'rc-enhanced-hide' => 'Zuppentar detagls',
 'rc-old-title' => 'creà oriundamain sco "$1"',
 
 # Recent changes linked
-'recentchangeslinked' => 'Midadas sin paginas cun colliaziuns',
-'recentchangeslinked-feed' => 'midadas sin paginas colliadas',
-'recentchangeslinked-toolbox' => 'midadas sin paginas colliadas',
+'recentchangeslinked' => 'Modificaziuns sin paginas colliadas',
+'recentchangeslinked-feed' => 'Modificaziuns sin paginas colliadas',
+'recentchangeslinked-toolbox' => 'Modificaziuns sin paginas colliadas',
 'recentchangeslinked-title' => 'Midadas en artitgels ch\'èn colliads cun "$1"',
 'recentchangeslinked-summary' => "Quest è ina glista da las midadas ch'èn vegnidas fatgas da curt en artitgels ch'èn colliads cun ina pagina specifica (ni en commembers d'ina categoria specifica).
 Paginas sin [[Special:Watchlist|tia glista d'observaziun]] èn '''grassas'''.",
@@ -1414,15 +1384,15 @@ Paginas sin [[Special:Watchlist|tia glista d'observaziun]] èn '''grassas'''.",
 'reuploaddesc' => 'Enavos tar la pagina da chargiar si.',
 'upload-tryagain' => 'Trametter la descripziun da la datoteca midada',
 'uploadnologin' => "Betg t'annunzià",
-'uploadnologintext' => "Ti stos [[Special:UserLogin|t'annunziar]] per chargiar si datotecas.",
+'uploadnologintext' => 'Ti stos $1 per chargiar si datotecas.',
 'upload_directory_missing' => "L'ordinatur per chargiar viaden ($1) n'exista betg e na pudeva betg vegnir creà dal server.",
 'upload_directory_read_only' => "L'ordinatur per chargiar viaden ($1) na po betg vegnir modifitgà dal server.",
 'uploaderror' => 'Errur cun chargiar si',
-'upload-recreate-warning' => "'''Attenziun: Ina datoteca cun quest num è vegnida stizzada u spustada.'''
+'upload-recreate-warning' => "'''Attenziun: Ina datoteca cun quest num è gia vegnida stizzada u spustada.'''
 
-Il log da stizzar e spustar vegn mussà sutvart:",
+Il protocol d'eliminaziuns e spustaments vegn mussà sutvart:",
 'uploadtext' => "Utilisescha quest formular per chargiar si datotecas.
-Per contemplar u tschertgar datotecas gia chargiada si, visita la pagina [[Special:FileList|glista da datotecas chargiadas si]]. Tut las datotecas che vegnan chargiadas si èn era notads en il [[Special:Log/upload|log da chargiar si]], quellas ch'èn vegnidas stizzadas en il [[Special:Log/delete|log dal stizzar]].
+Per contemplar u tschertgar datotecas gia chargiadas si, visita la [[Special:FileList|glista da datotecas chargiadas si]]. Tut las datotecas che vegnan chargiadas si èn era notads en il [[Special:Log/upload|protocol da datotecas chargiadas si]], quellas ch'èn vegnidas stizzadas en il [[Special:Log/delete|protocol d'eliminaziuns]].
 
 Per integrar ina datoteca en in artitgel pos ti per exempel duvrar in dals suandants cumonds:
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' per utilisar la versiun cumplaina da la datoteca
@@ -1431,8 +1401,8 @@ Per integrar ina datoteca en in artitgel pos ti per exempel duvrar in dals suand
 'upload-permitted' => 'Tips da datotecas lubids: $1.',
 'upload-preferred' => 'Tips da datotecas preferids: $1.',
 'upload-prohibited' => 'Tips da datotecas betg lubids: $1.',
-'uploadlog' => 'Log dal chargiar si',
-'uploadlogpage' => 'Log da chargiar si',
+'uploadlog' => 'protocol da datotecas chargiadas si',
+'uploadlogpage' => 'Protocol da datotecas chargiadas si',
 'uploadlogpagetext' => "Quai è ina glista da las datotecas ch'èn vegnidas chargiadas si sco ultimas.
 Guarda era la [[Special:NewFiles|galleria da novas datotecas]] per ina survista pli visuala.",
 'filename' => 'Num da datoteca',
@@ -1654,8 +1624,7 @@ Eventualmain stos ti empruvar danovamain d'in temp ch'i marscha pli pac.",
 'upload_source_file' => ' (ina datoteca sin tes computer)',
 
 # Special:ListFiles
-'listfiles-summary' => "Questa pagina speziala mussa tut las datotecas ch'èn vegnidas chargiada si.
-Sche la pagina vegn filtrada tenor utilisaders vegnan be datotecas nua che l'utilisader ha chargià si la pli nova versiun da la datotecas mussadas.",
+'listfiles-summary' => "Questa pagina speziala mussa tut las datotecas ch'èn vegnidas chargiada si.",
 'listfiles_search_for' => 'Tschtgar tenor il num da dateoca:',
 'imgfile' => 'datoteca',
 'listfiles' => 'Glista dals maletgs',
@@ -1851,10 +1820,8 @@ I renviescha uss a [[$2]].',
 'protectedpages' => 'Paginas protegidas',
 'protectedpages-indef' => 'Be mussar paginas protegidas illimitadamain',
 'protectedpages-cascade' => 'Be mussar protecziuns ertadas',
-'protectedpagestext' => 'Suandantas paginas èn protegidas encunter spustar u modifitgar.',
 'protectedpagesempty' => 'Naginas paginas èn actualmain protegidas cun quests parameters.',
 'protectedtitles' => 'Titels bloccads',
-'protectedtitlestext' => 'Suandants titels èn bloccads per vegnir creads.',
 'protectedtitlesempty' => 'Cun ils parameters inditgads èn naginas titels actualmain bloccads per vegnir creads.',
 'listusers' => 'Glista dals utilisaders',
 'listusers-editsonly' => 'Be mussar utilisaders cun modificaziuns',
@@ -1888,8 +1855,8 @@ Fa stim che era websites externas pon avair ina colliaziun a questa datoteca cun
 # Special:Log
 'specialloguserlabel' => 'Acziun exequida da:',
 'speciallogtitlelabel' => 'Destinaziun (titel u utilisader):',
-'log' => 'logs / cudesch da navigaziun',
-'all-logs-page' => 'Tut ils logs publics',
+'log' => 'Protocols',
+'all-logs-page' => 'Tut ils protocols publics',
 'alllogstext' => "Quai è ina visualisaziun cumbinada da tut ils protocols da {{SITENAME}}.
 Ti pos restrenscher la vista cun tscherner in tip da protocol, il num d'utilisader (resguardar maiusclas/minusclas) u la pagina pertutgada (era resguardar maiusclas/minusclas).",
 'logempty' => 'Nagins elements correspundents en il protocol.',
@@ -1905,9 +1872,6 @@ Ti pos restrenscher la vista cun tscherner in tip da protocol, il num d'utilisad
 'allpagesto' => 'Mussar paginas enfin:',
 'allarticles' => 'Tut ils artitgels',
 'allinnamespace' => 'tut las paginas (tip da pagina $1)',
-'allnotinnamespace' => 'Tut ils artitgels (betg dal tip da pagina $1)',
-'allpagesprev' => 'enavos',
-'allpagesnext' => 'enavant',
 'allpagessubmit' => 'Mussar',
 'allpagesprefix' => 'Mussar paginas cun il prefix:',
 'allpagesbadtitle' => 'Il titel da pagina inditgà è nunvalid u ha in prefix dad inter-linguas u inter-wiki.
@@ -1954,7 +1918,7 @@ Dovra almain ina top-level domain, per exempel "*.org".<br />
 # Special:ActiveUsers
 'activeusers' => 'Glista dals utilisaders activs',
 'activeusers-intro' => "Quai è ina glista dals utilisaders che han gì activitads {{PLURAL:$1|l'ultim di|en ils ultims $1 dis}}.",
-'activeusers-count' => "$1 {{PLURAL:$1|modificaziun|modificaziuns}} {{PLURAL:$3|l'ultim di|ils ultims $3 dis}}",
+'activeusers-count' => "$1 {{PLURAL:$1|acziun|acziuns}} {{PLURAL:$3|l'ultim di|ils ultims $3 dis}}",
 'activeusers-from' => 'Mussar utilisaders davent da:',
 'activeusers-hidebots' => 'Zuppentar bots',
 'activeusers-hidesysops' => 'Zuppentar administraturs',
@@ -1964,7 +1928,8 @@ Dovra almain ina top-level domain, per exempel "*.org".<br />
 'listgrouprights' => "Dretgs da las gruppas d'utilisaders",
 'listgrouprights-summary' => "Sutvart vegn mussada ina glista da las gruppas d'utilisaders sin questa wiki cun ils dretgs d'access associads.
 Infurmaziuns supplementaras davart ils singuls dretgs chattas [[{{MediaWiki:Listgrouprights-helppage}}|sin questa pagina]].",
-'listgrouprights-key' => '* <span class="listgrouprights-granted">Dretg asssegnà</span>
+'listgrouprights-key' => 'Legenda:
+* <span class="listgrouprights-granted">Dretg asssegnà</span>
 * <span class="listgrouprights-revoked">Dretg revocà</span>',
 'listgrouprights-group' => 'Gruppa',
 'listgrouprights-rights' => 'Dretgs',
@@ -2035,9 +2000,9 @@ Midadas futuras vid questa pagina e la pagina da discussiun appertegnenta vegnan
 'unwatchthispage' => 'Betg pli observar',
 'notanarticle' => "Quai n'è betg ina pagina da cuntegn",
 'notvisiblerev' => "L'ultima versiun d'in auter utilisader è vegnida stizzada",
-'watchlist-details' => "{{PLURAL:$1|Ina pagina|$1 paginas}} èn sin tia glista d'observaziun (senza dumbrar las paginas da discussiun).",
+'watchlist-details' => "Ti has {{PLURAL:$1|$1 pagina|$1 paginas}} sin tia glista d'observaziun, paginas da discussiun exclusas.",
 'wlheader-enotif' => "Il servetsch d'infurmaziun per e-mail è activà.",
-'wlheader-showupdated' => "Artitgels ch'èn vegnids midads suenter che ti has vis els la davosa giada èn mussads '''grass'''",
+'wlheader-showupdated' => "Paginas ch'èn vegnidas modifitgadas suenter che ti has vis els la davosa giada èn mussads '''grass'''",
 'watchmethod-recent' => "intercurir las davosas midadas per la glista d'observaziun",
 'watchmethod-list' => 'intercurir las paginas observadas davart novas midadas',
 'watchlistcontains' => "Tia glista d'observaziun cuntegna $1 {{PLURAL:$1|pagina|paginas}}.",
@@ -2113,17 +2078,19 @@ Conferma per plaschair che ti ta es conscient da las consequenzas e che ti agesc
 'actionfailed' => "L'acziun n'è betg reussida",
 'deletedtext' => '"$1" è vegnì stizzà.
 Sin $2 chattas ti ina glista dals davos artitgels stizzads.',
-'dellogpage' => 'log dal stizzar',
+'dellogpage' => "Protocol d'eliminaziuns",
 'dellogpagetext' => "Sutvart è ina glista dals elements stizzads l'ultim.",
-'deletionlog' => 'log da stizzar',
+'deletionlog' => "protocol d'eliminaziuns",
 'reverted' => 'Reinizialisà ina versiun da pli baud',
 'deletecomment' => 'Motiv:',
 'deleteotherreason' => 'Autra / supplementara raschun:',
 'deletereasonotherlist' => 'Autra raschun:',
-'deletereason-dropdown' => "*Motivs frequents per stizzar
-** Dumonda da l'autur
-** Violaziun dals dretgs d'autur
-** Vandalissem",
+'deletereason-dropdown' => "* Motivs frequents per stizzar
+** spam
+** vandalissem
+** violaziun dals dretgs d'autur
+** dumonda da l'autur
+** renviament defect",
 'delete-edit-reasonlist' => 'Midar ils motivs per il stizzar',
 'delete-toobig' => "Questa pagina ha in grond dumber da midadas (passa $1 {{PLURAL:$1|versiun|versiuns}}).
 La funcziun da stizzar è vegnida restrenschida per talas paginas per evitar ch'il server da {{SITENAME}} vegni surchargià.",
@@ -2145,8 +2112,8 @@ Enzatgi auter ha gia modifitga u reinizialisà qeusta pagina.
 
 L'ultima modificaziun vid questa pagina è da [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).",
 'editcomment' => "La resumaziun da la midada era: \"''\$1''\"",
-'revertpage' => "Annullà las modificaziun da [[Special:Contributions/$2|$2]] ([[User talk:$2|discussiun]]), l'ultima versiun da [[User:$1|$1]] è vegnida restaurada",
-'revertpage-nouser' => "Annullà las modificaziuns da (allontanà il num d'utilisader), l'ultima versiun da [[User:$1|$1]] è vegnida restaurada",
+'revertpage' => "Annullà las modificaziuns da [[Special:Contributions/$2|$2]] ([[User talk:$2|discussiun]]) e restaurà l'ultima versiun da [[User:$1|$1]]",
+'revertpage-nouser' => "Annullà las modificaziuns d'in utilisader zuppentà e restaurà l'ultima versiun da {{GENDER:$1|[[User:$1|$1]]}}",
 'rollback-success' => "Annullà las modificaziuns da $1;
 restaurà l'ultima versiun da $2.",
 
@@ -2157,7 +2124,7 @@ questa acziun è vegnida interrutta sco mesira da precauziun encunter hijacking
 Turna a l'ultima pagina, rechargia la pagina ed emprova anc ina giada.",
 
 # Protect
-'protectlogpage' => 'Log da las protecziuns',
+'protectlogpage' => 'Protocol da protecziuns',
 'protectlogtext' => 'Sutvart è ina glista da midadas vid protecziuns da paginas.
 Guarda la [[Special:ProtectedPages|glista da paginas protegidas]] per vesair la glista da las protecziuns actualmain activas.',
 'protectedarticle' => 'bloccà "[[$1]]"',
@@ -2248,7 +2215,6 @@ Eventualmain es ti suandà ina colliaziun faussa u la versiun è vegnida restaur
 'undeletebtn' => 'restituir',
 'undeletelink' => 'mussar/restituir',
 'undeleteviewlink' => 'contemplar',
-'undeletereset' => 'Redefinir',
 'undeleteinvert' => 'Invertar la selecziun',
 'undeletecomment' => 'Motiv:',
 'undeletedrevisions' => 'Restituì {{PLURAL:$1|1 versiun|$1 versiuns}}',
@@ -2258,8 +2224,8 @@ Eventualmain es ti suandà ina colliaziun faussa u la versiun è vegnida restaur
 $1',
 'undeletedpage' => "'''$1 è vegnì restaurà'''
 
-Consultescha il [[Special:Log/delete|protocol da stizzar]] per retschaiver ina survista da las ultimas paginas stizzadas u restauradas.",
-'undelete-header' => 'Legia il [[Special:Log/delete|protocol da stizzar]] per retschaiver ina survista da las ultimas paginas stizzadas u restauradas.',
+Consultescha il [[Special:Log/delete|protocol d'eliminaziuns]] per retschaiver ina survista da las ultimas paginas stizzadas u restauradas.",
+'undelete-header' => "Legia il [[Special:Log/delete|protocol d'eliminaziuns]] per retschaiver ina survista da las ultimas paginas stizzadas u restauradas.",
 'undelete-search-title' => 'Tschertgar paginas stizzadas',
 'undelete-search-box' => 'Tschertgar paginas stizzadas',
 'undelete-search-prefix' => 'Mussar paginas che cumenzan cun:',
@@ -2290,7 +2256,7 @@ $1',
 'contributions' => "Contribuziuns {{GENDER:$1|da l'utilisader|da l'utilisadra}}",
 'contributions-title' => "Contribuziuns d'utilisader da $1",
 'mycontris' => 'Contribuziuns',
-'contribsub2' => 'Per $1 ($2)',
+'contribsub2' => 'Per {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Chattà naginas modificaziuns che correspundan a quests criteris.',
 'uctop' => '(actual)',
 'month' => 'dal mais (e pli baud):',
@@ -2299,16 +2265,16 @@ $1',
 'sp-contributions-newbies' => 'Be mussar contribuziuns da contos novs',
 'sp-contributions-newbies-sub' => "Per novs contos d'utilisader",
 'sp-contributions-newbies-title' => "Contribuziuns da novs contos d'utilisader",
-'sp-contributions-blocklog' => 'log dal bloccar',
+'sp-contributions-blocklog' => 'protocol da bloccadas',
 'sp-contributions-deleted' => 'Contribuziuns da commembers stizzadas',
 'sp-contributions-uploads' => 'datotecas chargiadas si',
-'sp-contributions-logs' => 'logs',
+'sp-contributions-logs' => 'protocols',
 'sp-contributions-talk' => 'discussiun',
 'sp-contributions-userrights' => "administraziun da dretgs d'utilisaders",
-'sp-contributions-blocked-notice' => "Quai utilisader è bloccà actualmain. 
-L'ultima endataziun dal log da bloccar vegn mussà sutvart sco referenza:",
+'sp-contributions-blocked-notice' => "Quest utilisader è bloccà actualmain. 
+L'ultima endataziun en il protocol da bloccadas vegn mussà sutvart sco referenza:",
 'sp-contributions-blocked-notice-anon' => "Questa adressa IP è bloccada actualmain. 
-L'ultima endataziun dal log da bloccar vegn mussà sutvart sco referenza:",
+L'ultima endataziun en il protocol da bloccadas vegn mussà sutvart sco referenza:",
 'sp-contributions-search' => "Tschertgar contribuziuns d'utilisaders",
 'sp-contributions-username' => "Adressa IP u num d'utilisader:",
 'sp-contributions-toponly' => "Be mussar modificaziuns ch'èn las ulimas versiuns",
@@ -2338,7 +2304,6 @@ L'ultima endataziun dal log da bloccar vegn mussà sutvart sco referenza:",
 'block' => "Bloccar l'utilisader",
 'unblock' => 'Debloccar in utilisader',
 'blockip' => "Bloccar l'utilisader",
-'blockip-title' => "Bloccar l'utilisader",
 'blockip-legend' => "Bloccar l'utilisader",
 'blockiptext' => "Utilisescha il formular sutvart per bloccar ina adressa IP u in utilisader uschia ch'el na po betg pli far midadas.
 Ti duessas be far quai per impedir vandalissem e en ina moda confurma a las [[{{MediaWiki:Policy-url}}|directivas]].
@@ -2346,7 +2311,6 @@ Inditgescha sutvart in motiv (per exempel pos ti inditgar paginas ch'èn vegnida
 'ipadressorusername' => "Adressa IP u num d'utilisader:",
 'ipbexpiry' => 'Bloccà enfin:',
 'ipbreason' => 'Motiv:',
-'ipbreasonotherlist' => 'Auter motiv',
 'ipbreason-dropdown' => "*Motivs generals per bloccar
 ** Inserir infurmaziuns faussas
 ** Stizzar cuntegn da paginas
@@ -2362,8 +2326,6 @@ Inditgescha sutvart in motiv (per exempel pos ti inditgar paginas ch'èn vegnida
 'ipbsubmit' => 'Bloccar quest utilisader',
 'ipbother' => 'Auter temp:',
 'ipboptions' => '2 uras:2 hours,1 di:1 day,3 dis:3 days,1 emna:1 week,2 emnas:2 weeks,1 mais:1 month,3 mais:3 months,6 mais:6 months,1 onn:1 year,permanent:infinite',
-'ipbotheroption' => 'auter',
-'ipbotherreason' => 'Auter/ulteriur motiv:',
 'ipbhidename' => "Zuppentar il num d'utilisader en las modicaziuns e glistas",
 'ipbwatchuser' => "Observar las paginas d'utilisader e da discussiun da quest utilisader",
 'ipb-disableusertalk' => "Evitar che quest utilisader po modifitgar sia pagina da discussiun durant ch'el è bloccà.",
@@ -2417,11 +2379,11 @@ La [[Special:BlockList|glista da bloccadas]] mussa tut las bloccadas.',
 'contribslink' => 'contribuziuns',
 'emaillink' => 'Trametter in e-mail',
 'autoblocker' => "Vossa adressa dad IP è vegnida bloccada perquai che vus utilisais ina adressa dad IP cun [[User:$1|$1]]. Motiv per bolccar $1: '''$2'''.",
-'blocklogpage' => 'Log dal bloccar',
+'blocklogpage' => 'Protocol da bloccadas',
 'blocklog-showlog' => 'Quest utilisader è gia vegnì bloccà pli baud.
-Qua il log da bloccaziun sco infurmaziun:',
-'blocklog-showsuppresslog' => 'Quest utilisader è pli baud vegnì bloccà e zuppentà.
-Quai è il log da supprimer sco infurmaziun:',
+Qua il protocol da bloccadas sco infurmaziun:',
+'blocklog-showsuppresslog' => 'Quest utilisader è gia vegnì bloccà e zuppentà pli baud.
+Quai è il protocol da suppressiuns sco infurmaziun:',
 'blocklogentry' => 'bloccà [[$1]] per $2. Motiv: $3',
 'reblock-logentry' => 'ha midà las opziuns da bloccada per [[$1]] enfin ils: $2 $3',
 'blocklogtext' => 'Quai è in protocol dad acziuns da bloccar e debloccar utilisaders.
@@ -2456,7 +2418,6 @@ Contactescha tes provider dals survetschs d'internet u ils administraturs dal si
 'sorbsreason' => 'Tia adressa IP fa part da la glista da proxys averts da DNSBL che vegn utilisada da {{SITENAME}}.',
 'sorbs_create_account_reason' => "Tia adressa IP fa part da la glista da proxys averts da DNSBL che vegn utilisada da {{SITENAME}}.
 Ti na pos betg crear in conto d'utilisader.",
-'cant-block-while-blocked' => 'Ti na pos betg bloccar auters utilisaders durant che ti es sez bloccà',
 'cant-see-hidden-user' => "L'utilisader che ti emprovas da bloccar è gia bloccà e zuppentà.
 Perquai che ti h'has betg il dretg «hideuser» na pos ti betg vesair u modifitgar la bloccada da l'utilisader.",
 'ipbblocked' => 'Ti na pos betg bloccar u debloccar auters utilisaders perquai che ti es sez bloccà',
@@ -2517,7 +2478,6 @@ sajas conscient da las consequenzas che quai process po avair.",
 En quests cas as ti da spustar u colliar manualmain las paginas, sche giavischà.",
 'movearticle' => 'Spustar artitgel:',
 'moveuserpage-warning' => "'''Attenziun:''' Ti es londervi da spustar ina pagina d'utilisader. Considerescha che be la pagina vegn spustada ed il num da l'utilisader na vegn ''betg'' midà.",
-'movenologin' => "Ti n'ès betg t'annunzià",
 'movenologintext' => "Ti stos [[Special:UserLogin|t'annunziar]] per spustar in artitgel.",
 'movenotallowed' => "Ti n'has betg il dretg da spustar paginas.",
 'movenotallowedfile' => "Ti n'has betg il dretg da spustar datotecas.",
@@ -2532,8 +2492,6 @@ En quests cas as ti da spustar u colliar manualmain las paginas, sche giavischà
 'movepage-moved-noredirect' => 'I è vegnì impedì da crear in renviament.',
 'articleexists' => 'I exista gia in artitgel cun quai num. Tscherni per plaschair in auter.',
 'cantmove-titleprotected' => "Ti na pos betg spustar questa pagina en quai lieu, perquai ch'il titel da destinaziun è bloccà e na dastga betg vegnir creà.",
-'talkexists' => "'''L'artitgel è vegnì spustà cun success. Dentant exista sut il nov num gia ina pagina da discussiun, perquai è la pagina da discussiun betg vegnida spustada. Fa quai p. pl. a maun.'''",
-'movedto' => 'spustà a',
 'movetalk' => "Spustar la pagina da discussiun che tutga tar l'artitgel",
 'move-subpages' => 'Spustar sutpaginas (fin a $1)',
 'move-talk-subpages' => 'Spustar sutpaginas da paginas da discussiun (fin a $1)',
@@ -2541,7 +2499,7 @@ En quests cas as ti da spustar u colliar manualmain las paginas, sche giavischà
 'movepage-page-moved' => 'La pagina $1 è vegnida spustada a $2.',
 'movepage-page-unmoved' => 'Betg pussaivel da spustar la pagina $1 a $2.',
 'movepage-max-pages' => 'Il dumber maximal da $1 {{PLURAL:$1|pagina|paginas}} è vegnì spustà. Tut las ulteriuras na pon betg vegnir spustadas automaticamain.',
-'movelogpage' => 'Log dal spustar',
+'movelogpage' => 'Protocol da spustaments',
 'movelogpagetext' => 'Sut è ina glista da tut las paginas spustadas.',
 'movesubpage' => '{{PLURAL:$1|Sutpagina|Sutpaginas}}',
 'movesubpagetext' => 'Questa pagina ha $1 {{PLURAL:$1|sutpagina mussada|sutpaginasmussadas}} sutvart.',
@@ -2569,9 +2527,9 @@ betg pussaivel da spustar ina pagina en il medem lieu.',
 'fix-double-redirects' => 'Schliar renviaments dubels suenter il spustar',
 'move-leave-redirect' => 'Crear renviament',
 'protectedpagemovewarning' => "'''Attenziun:''' Questa pagina è vegnida protegida uschia che be utilisaders cun dretgs d'administratur la pon spustar. 
-Sco infurmaziun l'ultima endataziun en il log:",
+Sco infurmaziun l'ultima endataziun en il protocol:",
 'semiprotectedpagemovewarning' => "'''Attenziun:''' Questa pagina è vegnida protegida uschia che be utilisaders registrads la pon spustar. 
-Sco infurmaziun l'ultima endataziun en il log:",
+Sco infurmaziun l'ultima endataziun en il protocol:",
 'move-over-sharedrepo' => '== Datoteca exista == 
 [[:$1]] exista gia en in repositori communabel. Spustar ina datoteca a quest titel vegn a remplazzar la datoteca communabla.',
 'file-exists-sharedrepo' => 'Il num da datoteca tschernì exista gia en in repositori communabel.
@@ -2633,9 +2591,9 @@ Fai ina visita sin [https://www.mediawiki.org/wiki/Localisation MediaWiki Locali
 # Special:Import
 'import' => 'Impurtar paginas',
 'importinterwiki' => 'Import transwiki',
-'import-interwiki-text' => "Tscherna ina wiki ed in titel da pagina per importar.
+'import-interwiki-text' => "Tscherna in wiki ed in titel da pagina per importar.
 Las datas da las versiuns ed ils nums dals contribuents vegnan mantegnids.
-Tut ils imports transwiki vegnan registrads en il [[Special:Log/import|log d'importar]].",
+Tut ils imports transwiki vegnan registrads en il [[Special:Log/import|protocol d'imports]].",
 'import-interwiki-source' => 'Wiki/pagina da funtauna:',
 'import-interwiki-history' => "Copiar l'entira cronologia da questa pagina",
 'import-interwiki-templates' => 'Includer tut ils models',
@@ -2649,7 +2607,7 @@ La memorisescha sin tes computer e chargia si ella qua.",
 'importstart' => 'Importar paginas…',
 'import-revision-count' => '{{PLURAL:$1|Ina versiun|$1 versiuns}}',
 'importnopages' => 'Nagina pagina per importar.',
-'imported-log-entries' => 'Importà $1 {{PLURAL:$1|endataziun dal log|endataziuns dal log}}.',
+'imported-log-entries' => 'Importà $1 {{PLURAL:$1|endataziun dal protocol|endataziuns dal protocol}}.',
 'importfailed' => "Betg reussì d'importar: <nowiki>$1</nowiki>",
 'importunknownsource' => "Funtauna d'import nunenconuschenta",
 'importcantopen' => "Betg pussaivel dad avrir la datoteca d'import",
@@ -2684,7 +2642,7 @@ Emprova danovamain.',
 'import-rootpage-nosubpage' => 'Il tip da pagina "$1" da la pagina principala na lubescha naginas sutpaginas.',
 
 # Import log
-'importlogpage' => 'Log dals imports',
+'importlogpage' => 'Protocol dals imports',
 'importlogpagetext' => 'Import administrativ da paginas cun cronologia da modificaziuns dad autras wikis.',
 'import-logentry-upload' => 'ha importà [[$1]] cun chargiar si ina datoteca',
 'import-logentry-upload-detail' => '{{PLURAL:$1|Ina versiun|$1 versiuns}}',
@@ -2817,11 +2775,11 @@ Probablamien è quai capità pervia dad in link ad ina pagina externa ch'è sin
 'pageinfo-article-id' => 'ID da la pagina',
 'pageinfo-language' => 'Lingua dal cuntegn da la pagina',
 'pageinfo-robot-policy' => 'Status per maschinas da tschertgar',
-'pageinfo-robot-index' => 'Indexabel',
-'pageinfo-robot-noindex' => 'Betg indexabel',
+'pageinfo-robot-index' => 'Lubì',
+'pageinfo-robot-noindex' => 'Betg lubì',
 'pageinfo-views' => 'Dumber da visitas',
 'pageinfo-watchers' => 'Dumber dad observaturs da la pagina',
-'pageinfo-redirects-name' => 'Renviaments a questa pagina',
+'pageinfo-redirects-name' => 'Dumber da renviaments a questa pagina',
 'pageinfo-subpages-name' => 'Sutpaginas da questa pagina',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|renviament|renviaments}}; $3 {{PLURAL:$3|betg in renviament|betg renviaments}})',
 'pageinfo-firstuser' => 'Creatur da la pagina',
@@ -2858,9 +2816,9 @@ Probablamien è quai capità pervia dad in link ad ina pagina externa ch'è sin
 'markedaspatrollederrornotify' => 'Sbagl durant marcar sco controllà.',
 
 # Patrol log
-'patrol-log-page' => 'Log da controlla',
-'patrol-log-header' => 'Quai è il log da las versiuns controlladas.',
-'log-show-hide-patrol' => '$1 il log da controllas',
+'patrol-log-page' => 'Protocol da controllas',
+'patrol-log-header' => 'Quai è il protocol da las versiuns controlladas.',
+'log-show-hide-patrol' => '$1 il protocol da controllas',
 
 # Image deletion
 'deletedrevision' => 'Stizzà la versiun veglia $1.',
@@ -2890,7 +2848,7 @@ Cun exequir questa datoteca po tes sistem vegnir donnegià.",
 'svg-long-desc' => 'datoteca da SVG, grondezza da basa $1 × $2 pixels, grondezza da datoteca: $3',
 'svg-long-desc-animated' => 'Datoteca da SVG animada, dimensiun normala $1 x $2 pixels, grondezza da datoteca: $3',
 'svg-long-error' => 'Datoteca da SVG nundalida: $1',
-'show-big-image' => 'Resoluziun cumplaina',
+'show-big-image' => 'Datoteca originala',
 'show-big-image-preview' => 'Grondezza da questa prevista: $1.',
 'show-big-image-other' => 'Other {{PLURAL:$2|resoluziun|resoluziuns}}: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
@@ -3135,7 +3093,7 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
 'exif-compression-4' => 'CCITT gruppa 4 codaziun da fax',
 
 'exif-copyrighted-true' => "Protegì dal dretg d'auturs",
-'exif-copyrighted-false' => 'Domena publica',
+'exif-copyrighted-false' => "Il stadi da copyright n'è betg vegnì definì.",
 
 'exif-unknowndate' => 'Data nunenconuschenta',
 
@@ -3339,15 +3297,10 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
 'exif-urgency-high' => 'Aut ($1)',
 'exif-urgency-other' => "Prioritad definida da l'utilisader ($1)",
 
-# External editor support
-'edit-externally' => 'Modifitgar questa datoteca cun in program extern',
-'edit-externally-help' => "(Legia [https://www.mediawiki.org/wiki/Manual:External_editors instrucziuns d'installaziun] per ulteriuras infurmaziuns)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tut',
 'namespacesall' => 'tuts',
 'monthsall' => 'tuts',
-'limitall' => 'tuts',
 
 # Email address confirmation
 'confirmemail' => "Confermar l'adressa dad e-mail",
@@ -3371,7 +3324,6 @@ Il server dad e-mail ha returnà: $1",
 'confirmemail_success' => "Tia adressa dad e-mail è vegnida confermada. 
 Ussa pos ti [[Special:UserLogin|t'annunziar]] ed utilisar la wiki.",
 'confirmemail_loggedin' => 'Tia adressa dad e-mail è ussa vegnida confermada.',
-'confirmemail_error' => 'Insatge è crappà cun tes mail da confermaziun. Stgisa foll!',
 'confirmemail_subject' => "{{SITENAME}} - Confermaziun da l'adressa dad e-mail",
 'confirmemail_body' => 'Insatgi cun l\'adressa dad IP $1, probablamain ti, 
 ha creà il conto "$2" sin {{SITENAME}} cun questa adressa dad e-mail.
@@ -3433,7 +3385,7 @@ Conferma per plaschair che ti vuls propi crear danovamain quest artitgel.",
 
 # action=purge
 'confirm_purge_button' => 'ok',
-'confirm-purge-top' => 'Stizzar il cache da questa pagina?',
+'confirm-purge-top' => 'Svidar il cache da questa pagina?',
 'confirm-purge-bottom' => 'Svida il cache dad ina pagina e sforza da mussar la versiun actuala.',
 
 # action=watch/unwatch
@@ -3557,18 +3509,17 @@ Ti duessas avair retschavì [{{SERVER}}{{SCRIPTPATH}}/COPYING ina copia da la GN
 # Special:SpecialPages
 'specialpages' => 'Paginas spezialas',
 'specialpages-note' => '* Paginas spezialas normalas.
-* <span class="mw-specialpagerestricted">Paginas spezialas restrenschidas.</span>
-* <span class="mw-specialpagecached">Paginas spezialas en il cache (pon esser antiquadas).</span>',
+* <span class="mw-specialpagerestricted">Paginas spezialas restrenschidas.</span>',
 'specialpages-group-maintenance' => 'Rapports da mantegnamant',
 'specialpages-group-other' => 'Autras paginas spezialas',
 'specialpages-group-login' => "S'annunziar / crear in conto",
-'specialpages-group-changes' => 'Ultimas midadas e logs',
+'specialpages-group-changes' => 'Ultimas midadas e protocols',
 'specialpages-group-media' => 'Rapports ed elements multimedials',
 'specialpages-group-users' => 'Utilisaders e dretgs',
 'specialpages-group-highuse' => 'Paginas utilisadas savens',
 'specialpages-group-pages' => 'Glistas da paginas',
 'specialpages-group-pagetools' => 'Utensils per paginas',
-'specialpages-group-wiki' => 'Utensils e datas da la wiki',
+'specialpages-group-wiki' => 'Datas ed utensils',
 'specialpages-group-redirects' => 'Paginas specialas che renvieschan',
 'specialpages-group-spam' => 'Utensils da spam',
 
@@ -3601,7 +3552,6 @@ Ti duessas avair retschavì [{{SERVER}}{{SCRIPTPATH}}/COPYING ina copia da la GN
 
 # Special:ComparePages
 'comparepages' => 'Cumparegliar paginas',
-'compare-selector' => "Cumparegliar versiuns d'ina pagina",
 'compare-page1' => 'Pagina 1',
 'compare-page2' => 'Pagina 2',
 'compare-rev1' => 'Versiun 1',
@@ -3637,8 +3587,8 @@ Ti duessas avair retschavì [{{SERVER}}{{SCRIPTPATH}}/COPYING ina copia da la GN
 'sqlite-no-fts' => '$1 senza sustegn per la retschertga da text integrala',
 
 # New logging system
-'logentry-delete-delete' => '$1 ha stizzà la pagina $3',
-'logentry-delete-restore' => '$1 ha restaurà la pagina $3',
+'logentry-delete-delete' => '$1 {{GENDER:$2|ha stizzà}} la pagina $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|ha restaurà}} la pagina $3',
 'logentry-delete-event' => "$1 ha midà la visibilitad da{{PLURAL:$5|d ina occurrenza en il protocol| $5 occurrenzas en il protocol}} da '''$3''': $4",
 'logentry-delete-revision' => '$1 ha midà la visibilitad da{{PLURAL:$5|d ina versiun| $5 versiuns}} da la pagina $3: $4',
 'logentry-delete-event-legacy' => '$1 ha midà la visibilitad dad occurrenzas da protocol sin $3',
index 9cae704..4aa2c0d 100644 (file)
@@ -84,7 +84,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbedit' => 'Editisar',
-'qbspecialpages' => 'Uzalutne patrya',
 
 'errorpagetitle' => 'Dosh',
 'returnto' => 'Ja palpale kai $1.',
@@ -120,7 +119,7 @@ $messages = array(
 'jumptonavigation' => 'phiripen',
 'jumptosearch' => 'rodipen',
 
-# 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).
+# 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).
 'aboutsite' => 'Andar {{SITENAME}}',
 'aboutpage' => 'Project:Andar',
 'copyright' => 'Ander dino tar o $1.',
@@ -130,7 +129,6 @@ $messages = array(
 'disclaimers' => 'Termenurya',
 'disclaimerpage' => 'Project:Termenurya',
 'edithelp' => 'Editisaripnasko zhutipen',
-'edithelppage' => 'Help:Sar te editisares ek patrin',
 'helppage' => 'Help:Zhutipen',
 'mainpage' => 'Sherutni patrin',
 'mainpage-description' => 'Sherutni patrin',
@@ -161,7 +159,6 @@ $messages = array(
 'nospecialpagetext' => 'Manglyas ekh [[Special:SpecialPages|uzalutni patrin]] so na arakhel pes kai {{SITENAME}}.',
 
 # General errors
-'wrong_wfQuery_params' => 'Doshalo gin le parametrengo ko wfQuery()<br />I function: $1<br />Query: $2',
 'viewsource' => 'Dikh i sursa',
 
 # Login and logout pages
@@ -208,6 +205,7 @@ Mishto si te jas kai {{SITENAME}} thai te paruves tiro lav sigo.',
 'accountcreatedtext' => 'Kerdo o akonto le jenesko ko $1.',
 
 # Change password dialog
+'changepassword' => 'Paruv o nakhavipnasko lav',
 'oldpassword' => 'Purano nakahvipnasko lav',
 'newpassword' => 'Nevo nakhavipnasko lav:',
 
@@ -256,23 +254,18 @@ Kana avilyan kathe doshatar, ja palpale.',
 'prevn' => 'mai neve {{PLURAL:$1|$1}}',
 'nextn' => 'mai purane {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Dikh ($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:Zhutipen',
 'showingresults' => 'Tele si <b>$1</b> rezultaturya shirdindoi le ginestar <b>$2</b>.',
 'showingresultsnum' => 'Tele si <b>$3</b> rezultaturya shirdindoi le ginestar <b>$2</b>.',
-'powersearch' => 'Rod',
 
 # Preferences page
 'preferences' => 'Kamimata',
-'changepassword' => 'Paruv o nakhavipnasko lav',
 'prefs-skin' => 'Dikhimos',
 'datedefault' => 'Ni ekh kamipen',
 'prefs-datetime' => 'Dives thai chaso',
 'prefs-rc' => 'Neve paruvimata',
 'saveprefs' => 'Uxtav le kamimata',
-'resetprefs' => 'Thov le kamimata sar ko shirdipen',
 'columns' => 'Uche vortorina:',
 'localtime' => 'Thanutno vaxt',
-'timezoneoffset' => 'Ververipen',
 'guesstimezone' => 'Le les katar o browser',
 'allowemail' => 'De drom te aven e-mailurya katar aver jene',
 'defaultns' => 'Rod savaxt vi kai kadale riga:',
@@ -440,7 +433,6 @@ Dikh ando $2 ek patrinipen le palutne butyange khosle.',
 'movearticle' => 'Inger i patrin',
 'movepagebtn' => 'Inger i patrin',
 'pagemovedsub' => 'I patrin sas bićhaldi.',
-'movedto' => 'ingerdi kai',
 'delete_and_move' => 'Khos thai inger',
 
 # Export
index 6e8e3cf..a8347e0 100644 (file)
@@ -25,6 +25,7 @@
  * @author Silviubogan
  * @author Stelistcristi
  * @author Strainu
+ * @author TTO
  * @author Urhixidur
  * @author לערי ריינהארט
  */
@@ -200,7 +201,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Pagini_vechi' ),
        'Blankpage'                 => array( 'Pagină_goală' ),
        'Block'                     => array( 'Blochează_IP' ),
-       'Blockme'                   => array( 'Blochează-mă' ),
        'Booksources'               => array( 'Referințe_în_cărți' ),
        'BrokenRedirects'           => array( 'Redirectări_invalide' ),
        'Categories'                => array( 'Categorii' ),
@@ -210,7 +210,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Înregistrare' ),
        'Deadendpages'              => array( 'Pagini_fără_legături' ),
        'DeletedContributions'      => array( 'Contribuții_șterse' ),
-       'Disambiguations'           => array( 'Dezambiguizări' ),
        'DoubleRedirects'           => array( 'Redirectări_duble' ),
        'Emailuser'                 => array( 'Email_utilizator' ),
        'Export'                    => array( 'Exportă' ),
@@ -302,25 +301,24 @@ $messages = array(
 'tog-underline' => 'Sublinierea legăturilor:',
 'tog-justify' => 'Aranjează justificat paragrafele',
 'tog-hideminor' => 'Ascunde modificările minore în schimbări recente',
-'tog-hidepatrolled' => 'Ascunde în schimbări recente editările patrulate',
+'tog-hidepatrolled' => 'Ascunde modificările patrulate în schimbări recente',
 'tog-newpageshidepatrolled' => 'Ascunde paginile patrulate din lista de pagini noi',
 'tog-extendwatchlist' => 'Extinde lista de articole urmărite pentru a arăta toate schimbările efectuate, nu doar pe cele mai recente',
 'tog-usenewrc' => 'Grupează modificările după pagină în cadrul schimbărilor recente și listei paginilor urmărite',
 'tog-numberheadings' => 'Numerotează automat secțiunile',
 'tog-showtoolbar' => 'Afișează bara de unelte pentru modificare',
-'tog-editondblclick' => 'Activează modificarea paginii prin dublu clic',
+'tog-editondblclick' => 'Modifică paginile prin dublu clic',
 'tog-editsection' => 'Activează modificarea secțiunilor prin legăturile [modifică]',
 'tog-editsectiononrightclick' => 'Activează modificarea secţiunilor prin clic dreapta pe titlul secțiunii',
 'tog-showtoc' => 'Arată cuprinsul (pentru paginile cu mai mult de 3 paragrafe cu titlu)',
 'tog-rememberpassword' => 'Autentificare automată de la acest navigator (expiră după $1 {{PLURAL:$1|zi|zile|de zile}})',
-'tog-watchcreations' => 'Adaugă paginile pe care le creez și fișierele pe care le încarc la lista mea de urmărire',
+'tog-watchcreations' => 'Adaugă paginile pe care le creez și fișierele pe care le încarc la lista mea de pagini urmărite',
 'tog-watchdefault' => 'Adaugă paginile și fișierele pe care le modific la lista mea de urmărire',
 'tog-watchmoves' => 'Adaugă paginile și fișierele pe care le redenumesc la lista mea de urmărire',
 'tog-watchdeletion' => 'Adaugă paginile și fișierele pe care le șterg la lista mea de urmărire',
 'tog-minordefault' => 'Marchează din oficiu toate modificările ca fiind minore',
 'tog-previewontop' => 'Arată previzualizarea deasupra căsuței de modificare',
 'tog-previewonfirst' => 'Arată previzualizarea la prima modificare',
-'tog-nocache' => 'Dezactivează opțiunea navigatorului de memorare în cache a paginilor',
 'tog-enotifwatchlistpages' => 'Trimite-mi un e-mail atunci când o pagină sau un fișier din lista mea de pagini urmărite suferă modificări',
 'tog-enotifusertalkpages' => 'Trimite-mi un email când pagina mea de discuții este modificată',
 'tog-enotifminoredits' => 'Trimite-mi, de asemenea, un e-mail în caz de modificări minore asupra paginilor și fișierelor',
@@ -456,7 +454,6 @@ $messages = array(
 'qbedit' => 'Modificare',
 'qbpageoptions' => 'Opțiuni ale paginii',
 'qbmyoptions' => 'Paginile mele',
-'qbspecialpages' => 'Pagini speciale',
 'faq' => 'Întrebări frecvente',
 'faqpage' => 'Project:Întrebări frecvente',
 
@@ -673,9 +670,6 @@ Poate conține unul sau mai multe caractere ce nu pot fi folosite în titluri.',
 'perfcached' => 'Datele următoare au fost păstrate în cache și s-ar putea să nu fie actualizate. Un maxim de {{PLURAL:$1|un rezultat este disponibil|$1 rezultate sunt disponibile}} în cache.',
 'perfcachedts' => 'Informațiile de mai jos provin din cache, ultima actualizare efectuându-se la $1. Un maxim de {{PLURAL:$4|un rezultat este disponibil|$4 rezultate sunt disponibile}} în cache.',
 'querypage-no-updates' => 'Actualizările acestei pagini sunt momentan dezactivate. Informațiile de aici nu sunt împrospătate.',
-'wrong_wfQuery_params' => 'Număr incorect de parametri pentru wfQuery()<br />
-Funcția: $1<br />
-Interogarea: $2',
 'viewsource' => 'Sursă pagină',
 'viewsource-title' => 'Vizualizare sursă pentru $1',
 'actionthrottled' => 'Acțiune limitată',
@@ -706,7 +700,7 @@ Motivul invocat este ''$2''.",
 Administratorul care a efectuat blocarea a furnizat explicația: „$3”.',
 'invalidtitle-knownnamespace' => 'Titlu invalid cu spațiul de nume „$2” și textul „$3”',
 'invalidtitle-unknownnamespace' => 'Titlu invalid cu numărul spațiului de nume $1 necunoscut și textul „$2”',
-'exception-nologin' => 'Neautentificat{{GENDER:||ă}}.',
+'exception-nologin' => 'Neautentificat{{GENDER:||ă}}',
 'exception-nologin-text' => 'Vă rugăm să vă [[Special:Userlogin|autentificați]] pentru a accesa această pagină sau acțiune.',
 'exception-nologin-text-manual' => 'Vă rugăm să vă $1 pentru a accesa această pagină sau acțiune.',
 
@@ -805,7 +799,7 @@ Verificați ortografierea.',
 'passwordtooshort' => 'Parola trebuie să aibă cel puțin {{PLURAL:$1|1 caracter|$1 caractere|$1 de caractere}}.',
 'password-name-match' => 'Parola dumneavoastră trebuie să fie diferită de numele de utilizator.',
 'password-login-forbidden' => 'Utilizarea acestui nume de utilizator și a acestei parole este interzisă.',
-'mailmypassword' => 'Trimite-mi parola pe e-mail!',
+'mailmypassword' => 'Resetează parola',
 'passwordremindertitle' => 'Noua parolă temporară la {{SITENAME}}',
 'passwordremindertext' => 'Cineva (probabil dumneavoastră, de la adresa $1)
 a cerut să vi se trimită o nouă parolă pentru {{SITENAME}} ($4).
@@ -854,7 +848,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a atribui utilizatoru
 'user-mail-no-body' => 'S-a încercat trimiterea unui e-mail fără conținut sau nejustificat de scurt.',
 
 # Change password dialog
-'resetpass' => 'Modificare parolă',
+'changepassword' => 'Schimbare parolă',
 'resetpass_announce' => 'Sunteți autentificat cu un cod temporar trimis pe e-mail. Pentru a termina acțiunea de autentificare, trebuie să setați o parolă nouă aici:',
 'resetpass_text' => '<!-- Adăugați text aici -->',
 'resetpass_header' => 'Modificare parolă',
@@ -875,7 +869,7 @@ Este posibil să fi reușit deja schimbarea parolei sau să fi cerut o parolă t
 # Special:PasswordReset
 'passwordreset' => 'Resetare parolă',
 'passwordreset-text-one' => 'Completați acest formular pentru a vă reseta parola.',
-'passwordreset-text-many' => '{{PLURAL:$1|Completați unul din câmpuri pentru a vă reseta parola.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Completați unul din câmpuri pentru a primi o parolă temporară prin e-mail.}}',
 'passwordreset-legend' => 'Resetare parolă',
 'passwordreset-disabled' => 'Resetarea parolei a fost dezactivată pe acest wiki.',
 'passwordreset-emaildisabled' => 'Funcțiile de e-mail au fost dezactivate de pe acest wiki.',
@@ -1140,6 +1134,8 @@ Ea există deja.',
 'content-not-allowed-here' => 'Conținutul de tip „$1” nu este permis pe pagina [[$2]]',
 'editwarning-warning' => 'Părăsind această pagină, există riscul pierderii modificărilor efectuate.
 Dacă sunteți autentificat, puteți dezactiva această avertizare în secțiunea „Modificare” a preferințelor dumneavoastră.',
+'editpage-notsupportedcontentformat-title' => 'Formatul conținutului nu este acceptat',
+'editpage-notsupportedcontentformat-text' => 'Formatul de conținut $1 nu este acceptat de modelul de conținut $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitext',
@@ -1180,6 +1176,9 @@ Acsete argumente au fost omise.',
 'cantcreateaccounttitle' => 'Crearea contului nu poate fi realizată',
 'cantcreateaccount-text' => "Crearea de conturi de la această adresă IP ('''$1''') a fost blocată de [[User:$3|$3]].
 
+Motivul invocat de $3 este ''$2''",
+'cantcreateaccount-range-text' => "Crearea de conturi de la adresele IP din gama '''$1''', care o include și pe a dumneavoastră ('''$4'''), a fost blocată de [[User:$3|$3]].
+
 Motivul invocat de $3 este ''$2''",
 
 # History pages
@@ -1195,8 +1194,8 @@ Motivul invocat de $3 este ''$2''",
 'cur' => 'actuală',
 'next' => 'următoarea',
 'last' => 'prec',
-'page_first' => 'prim',
-'page_last' => 'ultim',
+'page_first' => 'prima',
+'page_last' => 'ultima',
 'histlegend' => 'Legendă: (actuală) = diferențe față de versiunea curentă,
 (prec) = diferențe față de versiunea precedentă, M = modificare minoră',
 'history-fieldset-title' => 'Răsfoire istoric',
@@ -1250,10 +1249,6 @@ Ca administrator puteți vedea în continuare această diferență dinte versiun
 'revdelete-nooldid-title' => 'Versiune invalidă',
 'revdelete-nooldid-text' => 'Fie nu ați specificat versiunea pentru a efectua această
 funcție, fie versiunea specificată nu există, ori sunteți pe cale să ascundeți versiunea curentă.',
-'revdelete-nologtype-title' => 'Niciun tip de jurnal specificat',
-'revdelete-nologtype-text' => 'Nu ai specificat niciun tip de jurnal pentru a putea efectua această acțiune.',
-'revdelete-nologid-title' => 'Intrare în jurnal invalidă',
-'revdelete-nologid-text' => 'Ori nu nu ai specificat o țintă pentru jurnal pentru a efectua această funcție sau intrarea specificată nu există.',
 'revdelete-no-file' => 'Fișierul specificat nu există.',
 'revdelete-show-file-confirm' => 'Sigur doriți să vedeți versiunea ștearsă a fișierului „<nowiki>$1</nowiki>” din $2 ora $3?',
 'revdelete-show-file-submit' => 'Da',
@@ -1286,8 +1281,6 @@ $1",
 'logdelete-failure' => "'''Vizibilitatea jurnalului nu poate fi definită:'''
 $1",
 'revdel-restore' => 'Schimbă vizibilitatea',
-'revdel-restore-deleted' => 'versiuni șterse',
-'revdel-restore-visible' => 'versiuni vizibile',
 'pagehist' => 'Istoricul paginii',
 'deletedhist' => 'Istoric șters',
 'revdelete-hide-current' => 'Eroare la ștergerea elementului datat $2, $1: reprezintă versiunea curentă și nu poate fi ștearsă.',
@@ -1365,12 +1358,8 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 # Search results
 'searchresults' => 'Rezultatele căutării',
 'searchresults-title' => 'Rezultatele căutării pentru „$1”',
-'searchresulttext' => 'Pentru mai multe detalii despre căutarea în {{SITENAME}}, vezi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ai căutat \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|toate paginile care încep cu "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toate paginile care se leagă de "$1"]])',
-'searchsubtitleinvalid' => 'Pentru căutarea "$1"',
 'toomanymatches' => 'Prea multe rezultate au fost întoarse, încercă o căutare diferită',
 'titlematches' => 'Rezultate din titlurile paginilor',
-'notitlematches' => 'Nici un rezultat în titlurile articolelor',
 'textmatches' => 'Rezultate din conținutul paginilor',
 'notextmatches' => 'Nici un rezultat în textele articolelor',
 'prevn' => 'anterioarele {{PLURAL:$1|$1}}',
@@ -1379,10 +1368,8 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'nextn-title' => '{{PLURAL:$1|următorul|următoarele}} $1 {{PLURAL:$1|rezultat|rezultate}}',
 'shown-title' => 'Arată $1 {{PLURAL:$1|rezultat|rezultate}} pe pagină',
 'viewprevnext' => 'Vezi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opțiuni căutare',
 'searchmenu-exists' => "'''Există o pagină cu titlul „[[:$1]]'” pe acest site.'''",
 'searchmenu-new' => "'''Creați pagina „[[:$1]]” pe acest wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Răsfoiește paginile cu acest prefix]]',
 'searchprofile-articles' => 'Pagini cu conținut',
 'searchprofile-project' => 'Pagini din spațiile Proiect și Ajutor',
 'searchprofile-images' => 'Multimedia',
@@ -1403,21 +1390,16 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'search-interwiki-default' => '$1 rezultate:',
 'search-interwiki-more' => '(mai mult)',
 'search-relatedarticle' => 'Relaționat',
-'mwsuggest-disable' => 'Dezactivează sugestiile de căutare',
 'searcheverything-enable' => 'Caută în toate spațiile de nume',
 'searchrelated' => 'relaționat',
 'searchall' => 'toate',
 'showingresults' => "Mai jos {{PLURAL:$1|apare '''1''' rezultat|apar '''$1''' rezultate|apar '''$1''' de rezultate}} începând cu nr. <b>$2</b>.",
 'showingresultsnum' => "Mai jos {{PLURAL:$3|apare '''1''' rezultat|apar '''$3''' rezultate|apar '''$3''' de rezultate}} cu nr. <b>$2</b>.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultatul '''$1''' din '''$3'''|Rezultatele '''$1 - $2''' din '''$3'''}} pentru '''$4'''",
-'nonefound' => "'''Notă''': Numai unele spații de nume sunt căutate implicit.
-Încercați să puneți ca și prefix al căutării ''all:'' pentru a căuta în tot conținutul (incluzând și paginile de discuții, formate, etc), sau folosiți spațiul de nume dorit ca și prefix.",
 'search-nonefound' => 'Nu sunt rezultate conforme interogării.',
-'powersearch' => 'Căutare avansată',
 'powersearch-legend' => 'Căutare avansată',
 'powersearch-ns' => 'Căutare în spațiile de nume:',
 'powersearch-redir' => 'Afișează redirecționările',
-'powersearch-field' => 'Caută după',
 'powersearch-togglelabel' => 'Selectare:',
 'powersearch-toggleall' => 'Tot',
 'powersearch-togglenone' => 'Nimic',
@@ -1430,7 +1412,6 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'mypreferences' => 'Preferințe',
 'prefs-edits' => 'Număr de modificări:',
 'prefsnologintext2' => 'Vă rugăm să vă $1 pentru a vă seta preferințele de utilizator.',
-'changepassword' => 'Schimbare parolă',
 'prefs-skin' => 'Aspect',
 'skin-preview' => 'Previzualizare',
 'datedefault' => 'Nici o preferință',
@@ -1453,13 +1434,11 @@ Detalii se pot găsi în [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE
 'prefs-email' => 'Opțiuni e-mail',
 'prefs-rendering' => 'Aspect',
 'saveprefs' => 'Salvează preferințele',
-'resetprefs' => 'Resetează preferințele',
 'restoreprefs' => 'Restaurează toate valorile implicite (în toate secțiunile)',
 'prefs-editing' => 'Modificare',
 'rows' => 'Rânduri:',
 'columns' => 'Coloane:',
 'searchresultshead' => 'Parametri căutare',
-'resultsperpage' => 'Numărul de rezultate per pagină',
 'stub-threshold' => 'Valoarea minimă pentru un <a href="#" class="stub">ciot</a> (octeți):',
 'stub-threshold-disabled' => 'Dezactivat',
 'recentchangesdays' => 'Numărul de zile afișate în schimbări recente:',
@@ -1474,7 +1453,6 @@ Oricine o cunoaște vă va putea citi lista de pagini urmărite, așa că n-o pa
 'localtime' => 'Ora locală:',
 'timezoneuseserverdefault' => 'Folosește ora implicită a wikiului ($1)',
 'timezoneuseoffset' => 'Altul (specifică diferența)',
-'timezoneoffset' => 'Diferența¹:',
 'servertime' => 'Ora serverului:',
 'guesstimezone' => 'Încearcă determinarea automată a diferenței',
 'timezoneregion-africa' => 'Africa',
@@ -1544,6 +1522,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'prefs-tokenwatchlist' => 'Jeton',
 'prefs-diffs' => 'Diferențe',
 'prefs-help-prefershttps' => 'Această preferință va avea efect la următoarea autentificare.',
+'prefs-tabs-navigation-hint' => 'Sfat: Puteți folosi tastele săgeată stânga și dreapta pentru a naviga între filele din cadrul listei de file.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Adresa de e-mail pare validă',
@@ -1730,14 +1709,14 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
 'recentchanges-label-bot' => 'Această modificare a fost efectuată de un robot',
 'recentchanges-label-unpatrolled' => 'Această modificare nu a fost încă verificată',
 'recentchanges-label-plusminus' => 'Dimensiunea paginii s-a modificat corespunzător acestui număr de octeți',
-'recentchanges-legend-newpage' => '(vezi și [[Special:NewPages|lista cu pagini noi]])',
+'recentchanges-legend-heading' => "'''Legendă:'''",
+'recentchanges-legend-newpage' => '(vedeți și [[Special:NewPages|lista cu pagini noi]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "Mai jos se află {{PLURAL:\$|ultima modificare|ultimele '''\$1''' modificări|ultimele '''\$1''' de modificări}} din {{PLURAL:\$2|ultima zi|ultimele '''\$2''' zile|ultimele '''\$2''' de zile}}, începând cu \$5, \$4.",
 'rcnotefrom' => 'Dedesubt sunt modificările de la <b>$2</b> (maxim <b>$1</b> de modificări sunt afișate - schimbă numărul maxim de linii alegând altă valoare mai jos).',
 'rclistfrom' => 'Se arată modificările începând cu $1',
 'rcshowhideminor' => '$1 modificările minore',
 'rcshowhidebots' => '$1 roboții',
-'rcshowhideliu' => '$1 utilizatorii autentificați',
+'rcshowhideliu' => '$1 utilizatorii înregistrați',
 'rcshowhideanons' => '$1 utilizatorii anonimi',
 'rcshowhidepatr' => '$1 modificările patrulate',
 'rcshowhidemine' => '$1 contribuțiile mele',
@@ -1854,6 +1833,8 @@ Mergeți înapoi și încărcați acest fișier sub un nume nou. [[File:$1|thumb
 'fileexists-shared-forbidden' => 'Un fișier cu acest nume există deja în magazia de imagini comune; mergeți înapoi și încărcați fișierul sub un nou nume. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Acest fișier este dublura {{PLURAL:$1|fișierului|fișierelor}}:',
 'file-deleted-duplicate' => 'Un fișier identic cu acesta ([[:$1]]) a fost șters anterior. Verificați istoricul ștergerilor fișierului înainte de a-l reîncărca.',
+'file-deleted-duplicate-notitle' => 'Un fișier identic cu acesta a fost șters anterior, iar titlul a fost suprimat.
+Ar trebui să contactați pe cineva care poate vizualiza datele suprimate ale fișierului pentru a evalua situația înainte de a începe să-l reîncărcați.',
 'uploadwarning' => 'Avertizare la trimiterea fișierului',
 'uploadwarning-text' => 'Vă rugăm să modificați descrierea fișierului mai jos și să încercați din nou.',
 'savefile' => 'Salvează fișierul',
@@ -2109,9 +2090,7 @@ Această pagină specială permite căutarea fișierelor în funcție de tipul M
 * Imagini animate : <code>image/gif</code>
 * Fișiere sunet : <code>audio/ogg</code>, <code>audio/x-ogg</code>
 * Fișiere video : <code>video/ogg</code>, <code>video/x-ogg</code>
-* Fișiere PDF : <code>application/pdf</code>
-
-Lista tipurilor MIME recunoscute de MediaWiki poate fi găsită la [http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/includes/mime.types?view=markup fișiere mime.types].',
+* Fișiere PDF : <code>application/pdf</code>',
 'mimetype' => 'Tip MIME:',
 'download' => 'descarcă',
 
@@ -2197,6 +2176,7 @@ Intrările <del>tăiate</del> au fost rezolvate.',
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|legături interwiki|de legături interwiki}}',
 'nlinks' => '{{PLURAL:$1|o legătură|$1 legături|$1 de legături}}',
 'nmembers' => '$1 {{PLURAL:$1|membru|membri|de membri}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membru|membri|de membri}}',
 'nrevisions' => '{{PLURAL:$1|o versiune|$1 versiuni|$1 de versiuni}}',
 'nviews' => '{{PLURAL:$1|o accesare|$1 accesări|$1 de accesări}}',
 'nimagelinks' => 'Utilizat pe $1 {{PLURAL:$1|pagină|pagini}}',
@@ -2233,12 +2213,11 @@ Intrările <del>tăiate</del> au fost rezolvate.',
 'deadendpages' => 'Pagini fără legături',
 'deadendpagestext' => 'Următoarele pagini nu se leagă de alte pagini din acestă wiki.',
 'protectedpages' => 'Pagini protejate',
-'protectedpages-indef' => 'Doar protecțiile pe termen nelimitat',
+'protectedpages-indef' => 'Doar protejări pe termen nelimitat',
 'protectedpages-cascade' => 'Doar protejări în cascadă',
-'protectedpagestext' => 'Următoarele pagini sunt protejate la mutare sau editare',
+'protectedpages-noredirect' => 'Ascunde redirecționările',
 'protectedpagesempty' => 'Nu există pagini protejate',
 'protectedtitles' => 'Titluri protejate',
-'protectedtitlestext' => 'Următoarele titluri sunt protejate la creare',
 'protectedtitlesempty' => 'Nu există titluri protejate cu acești parametri.',
 'listusers' => 'Listă utilizatori',
 'listusers-editsonly' => 'Arată doar utilizatorii cu modificări',
@@ -2290,9 +2269,6 @@ Puteți limita vizualizarea selectând tipul jurnalului, numele de utilizator sa
 'allpagesto' => 'Afișează paginile terminând cu:',
 'allarticles' => 'Toate articolele',
 'allinnamespace' => 'Toate paginile (spațiu de nume $1)',
-'allnotinnamespace' => 'Toate paginile (în afara spațiului de nume $1)',
-'allpagesprev' => 'Anterior',
-'allpagesnext' => 'Următor',
 'allpagessubmit' => 'Trimite',
 'allpagesprefix' => 'Se afișează paginile cu prefixul:',
 'allpagesbadtitle' => 'Titlul paginii este nevalid sau conține un prefix inter-wiki. Este posibil să conțină unul sau mai multe caractere care nu pot fi folosite în titluri.',
@@ -2422,7 +2398,7 @@ Modificările viitoare efectuate asupra acestei pagini dar și asupra paginii de
 'notvisiblerev' => 'Versiunea a fost ștearsă',
 'watchlist-details' => '{{PLURAL:$1|O pagină|$1 pagini urmărite|$1 de pagini urmărite}}, excluzând paginile de discuție.',
 'wlheader-enotif' => 'Notificarea prin e-mail este activată.',
-'wlheader-showupdated' => "Paginile care au fost modificate ulterior accesării lor ultima dată de către dumneavoastră sunt '''îngroșate'''.",
+'wlheader-showupdated' => "Paginile care au fost modificate după ultima dumneavoastră vizită sunt afișate '''îngroșat'''.",
 'watchmethod-recent' => 'căutarea schimbărilor recente pentru paginile urmărite',
 'watchmethod-list' => 'căutarea paginilor urmărite pentru schimbări recente',
 'watchlistcontains' => 'Lista de pagini urmărite conține $1 {{PLURAL:$1|element|elemente|de elemente}}.',
@@ -2514,6 +2490,7 @@ Accesați $2 pentru o listă cu elementele recent șterse.',
 'delete-warning-toobig' => 'Această pagină are un istoric al modificărilor mult prea mare, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.
 Ștergerea sa poate afecta baza de date a sitului {{SITENAME}};
 acționați cu precauție.',
+'deleting-backlinks-warning' => "'''Atenție:''' Alte pagini se leagă de pagina pe care doriți să o ștergeți.",
 
 # Rollback
 'rollback' => 'Editări de revenire',
@@ -2626,7 +2603,6 @@ S-ar putea ca legătura să fie greșită, ori versiunea să fi fost restaurată
 'undeletebtn' => 'Recuperează',
 'undeletelink' => 'vizualizare/recuperare',
 'undeleteviewlink' => 'vezi',
-'undeletereset' => 'Resetează',
 'undeleteinvert' => 'Exclude spațiul',
 'undeletecomment' => 'Motiv:',
 'undeletedrevisions' => '{{PLURAL:$1|o versiune restaurată|$1 versiuni restaurate|$1 de versiuni restaurate}}',
@@ -2716,7 +2692,6 @@ Iată aici ultima înregistrare relevantă din jurnalul blocărilor:',
 'block' => 'Blocare utilizator',
 'unblock' => 'Deblocare utilizator',
 'blockip' => 'Blocare utilizator',
-'blockip-title' => 'Blocare utilizator',
 'blockip-legend' => 'Blocare utilizator/adresă IP',
 'blockiptext' => "Pentru a bloca un utilizator completați rubricile de mai jos.<br />
 '''Respectați [[{{MediaWiki:Policy-url}}|politica de blocare]].'''<br />
@@ -2724,7 +2699,6 @@ Precizați motivul blocării; de exemplu indicați paginile vandalizate de acest
 'ipadressorusername' => 'Adresă IP sau nume de utilizator',
 'ipbexpiry' => 'Expiră',
 'ipbreason' => 'Motiv:',
-'ipbreasonotherlist' => 'Alt motiv',
 'ipbreason-dropdown' => '*Motivele cele mai frecvente
 ** Introducere de informații false
 ** Ștergere conținut fără explicații
@@ -2740,8 +2714,6 @@ Precizați motivul blocării; de exemplu indicați paginile vandalizate de acest
 'ipbsubmit' => 'Blochează acest utilizator',
 'ipbother' => 'Alt termen:',
 'ipboptions' => '2 ore:2 hours,1 zi:1 day,3 zile:3 days,1 săptămână:1 week,2 săptămâni:2 weeks,1 lună:1 month,3 luni:3 months,6 luni:6 months,1 an:1 year,infinit:infinite',
-'ipbotheroption' => 'altul',
-'ipbotherreason' => 'Motiv diferit/adițional:',
 'ipbhidename' => 'Ascunde numele de utilizator la editare și afișare',
 'ipbwatchuser' => 'Urmărește pagina sa de utilizator și de discuții',
 'ipb-disableusertalk' => 'Se interzice acestui utilizator modificarea propriei pagini de discuții în timpul blocării',
@@ -2753,6 +2725,7 @@ Precizați motivul blocării; de exemplu indicați paginile vandalizate de acest
 Vedeți [[Special:BlockList|lista blocărilor]] pentru a revizui adresele blocate.',
 'ipb-blockingself' => 'Sunteți pe cale să vă autoblocați! Sunteți sigur că doriți să continuați?',
 'ipb-confirmhideuser' => 'Sunteți pe cale să blocați un utilizator cu funcția „ascunde utilizator” activată. Acest lucru va înlătura numele său de utilizator din toate listele și jurnalele. Sunteți sigur că vreți să continuați?',
+'ipb-confirmaction' => 'Dacă sunteți într-adevăr sigur(ă) că doriți să acționați, bifați câmpul „{{int:ipb-confirm}}” din partea de jos.',
 'ipb-edit-dropdown' => 'Modifică motivele blocării',
 'ipb-unblock-addr' => 'Deblochează utilizatorul $1',
 'ipb-unblock' => 'Deblocați un nume de utilizator sau o adresă IP',
@@ -2832,7 +2805,6 @@ Vă rugăm să vă contactați furnizorul de servicii Internet sau tehnicienii I
 'sorbs_create_account_reason' => 'Adresa dumneavoastră IP este listată ca un proxy deschis în lista neagră DNS.
 Nu vă puteți crea un cont',
 'xffblockreason' => 'O adresă IP prezentă în antetul X-Forwarded-For — fie a dumneavoastră, fie a serverului proxy pe care îl folosiți — a fost blocată. Motivul original al blocării a fost: $1',
-'cant-block-while-blocked' => 'Nu puteți bloca alți utilizatori în timp ce sunteți dumneavoastră înșivă blocat.',
 'cant-see-hidden-user' => 'Utilizatorul pe care încercați să îl blocați este deja blocat și ascuns. Atata timp cât nu aveți drept de hideuser, nu puteți vedea sau modifica blocarea acestuia.',
 'ipbblocked' => 'Nu puteți bloca sau debloca alți utilizatori în timp ce sunteți dumneavoastră înșivă blocat.',
 'ipbnounblockself' => 'Nu aveți permisiunea de a vă debloca singur',
@@ -2898,7 +2870,6 @@ automat odată cu aceasta în '''afara următoarelor cazuri''':
 manual paginile de discuții, dacă doriți acest lucru.",
 'movearticle' => 'Pagina de redenumit:',
 'moveuserpage-warning' => "'''Atenție''': sunteți pe cale să redenumiți o pagină de utilizator. Vă rugăm să rețineți că singura redenumită va fi pagina, nu și utilizatorul.",
-'movenologin' => 'Nu sunteți autentificat{{GENDER:||ă}}.',
 'movenologintext' => 'Trebuie să fiți un utilizator înregistrat și [[Special:UserLogin|autentificat]] pentru a redenumi o pagină.',
 'movenotallowed' => 'Nu aveți permisiunea de a redenumi pagini.',
 'movenotallowedfile' => 'Nu aveți permisiunea de a redenumi fișiere.',
@@ -2913,9 +2884,6 @@ manual paginile de discuții, dacă doriți acest lucru.",
 'movepage-moved-noredirect' => 'Crearea redirecționărilor a fost suprimată.',
 'articleexists' => 'O pagină cu același nume există deja, sau numele pe care l-ați ales este invalid. Sunteți rugat să alegeți un alt nume.',
 'cantmove-titleprotected' => 'Nu puteți redenumi o pagină cu acest nume, pentru că noul titlu a fost protejat la creare.',
-'talkexists' => "'''Pagina în sine a fost redenumită cu succes, dar pagina de discuții nu a putut fi redenumită deoarece o alta deja există la noul titlu.
-Vă rugăm să le unificați manual.'''",
-'movedto' => 'redenumită în',
 'movetalk' => 'Redenumește pagina de discuții asociată',
 'move-subpages' => 'Redenumește subpaginile (până la $1)',
 'move-talk-subpages' => 'Redenumește subpaginile paginii de discuții (până la $1)',
@@ -3754,15 +3722,10 @@ Altele vor fi ascunse implicit.
 'exif-urgency-high' => 'Ridicat ($1)',
 'exif-urgency-other' => 'Prioritate definită de utilizator ($1)',
 
-# External editor support
-'edit-externally' => 'Editează acest fișier folosind o aplicație externă.',
-'edit-externally-help' => '(Vedeți [https://www.mediawiki.org/wiki/Manual:External_editors instrucțiuni de instalare] pentru mai multe informații)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'toate',
 'namespacesall' => 'toate',
 'monthsall' => 'toate',
-'limitall' => 'toate',
 
 # Email address confirmation
 'confirmemail' => 'Confirmare adresă e-mail',
@@ -3784,7 +3747,6 @@ Serverul de mail a returnat: $1',
 'confirmemail_needlogin' => 'Trebuie să vă $1 pentru a vă confirma adresa de e-mail.',
 'confirmemail_success' => 'Adresa de e-mail a fost confirmată. Acum vă puteți [[Special:UserLogin|autentifica]] și bucura de wiki.',
 'confirmemail_loggedin' => 'Adresa de e-mail a fost confirmată.',
-'confirmemail_error' => 'Ceva nu a funcționat la salvarea confirmării.',
 'confirmemail_subject' => 'Confirmarea adresei de e-mail la {{SITENAME}}',
 'confirmemail_body' => 'Cineva, probabil dumneavoastră de la adresa IP $1, și-a înregistrat la {{SITENAME}} contul „$2” cu această adresă de e-mail.
 
@@ -3856,6 +3818,12 @@ Vă rugăm să confirmați faptul că într-adevăr doriți să recreați acest
 'imgmultigo' => 'Du-te!',
 'imgmultigoto' => 'Du-te la pagina $1',
 
+# Language selector for translatable SVGs
+'img-lang-opt' => '$2 ($1)',
+'img-lang-default' => '(limba implicită)',
+'img-lang-info' => 'Randează această imagine în $1. $2',
+'img-lang-go' => 'Du-te',
+
 # Table pager
 'ascending_abbrev' => 'cresc',
 'descending_abbrev' => 'desc',
@@ -3933,8 +3901,18 @@ Puteți folosi în schimb [[Special:EditWatchlist|editorul standard]].',
 'version-parser-function-hooks' => 'Hook-uri funcții parser',
 'version-hook-name' => 'Nume hook',
 'version-hook-subscribedby' => 'Subscris de',
-'version-version' => '(Versiune $1)',
-'version-license' => 'Licență',
+'version-version' => '($1)',
+'version-license' => 'Licență MediaWiki',
+'version-ext-license' => 'Licență',
+'version-ext-colheader-name' => 'Extensie',
+'version-ext-colheader-version' => 'Versiune',
+'version-ext-colheader-license' => 'Licență',
+'version-ext-colheader-description' => 'Descriere',
+'version-ext-colheader-credits' => 'Autori',
+'version-license-title' => 'Licență pentru $1',
+'version-license-not-found' => 'Nu s-au găsit informații detaliate despre licența acestei extensii.',
+'version-credits-title' => 'Credite pentru $1',
+'version-credits-not-found' => 'Nu s-au găsit informații detaliate despre creditele acestei extensii.',
 'version-poweredby-credits' => "Acest wiki este motorizat de '''[https://www.mediawiki.org/ MediaWiki]''', drepturi de autor © 2001-$1 $2.",
 'version-poweredby-others' => 'alții',
 'version-poweredby-translators' => 'traducătorii de la translatewiki.net',
@@ -3952,13 +3930,14 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Redirecționare după fișier, utilizator sau ID-ul versiunii',
+'redirect' => 'Redirecționare după fișier, utilizator, ID-ul paginii sau al versiunii',
 'redirect-legend' => 'Redirecționare către un fișier sau o pagină',
-'redirect-summary' => 'Această pagină specială vă redirecționează către un fișier (dat fiind un nume de fișier), o pagină (dat fiind ID-ul unei versiuni) sau o pagină de utilizator (dat fiind un ID numeric al utilizatorului). Utilizare: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] sau [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Această pagină specială vă redirecționează către un fișier (dat fiind un nume de fișier), o pagină (dat fiind ID-ul unei versiuni sau ID-ul unei pagini) sau o pagină de utilizator (dat fiind un ID numeric al utilizatorului). Utilizare: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] sau [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Du-te',
 'redirect-lookup' => 'Căutare:',
 'redirect-value' => 'Valoare:',
 'redirect-user' => 'ID utilizator',
+'redirect-page' => 'ID pagină',
 'redirect-revision' => 'Versiune de pagină',
 'redirect-file' => 'Nume de fișier',
 'redirect-not-exists' => 'Valoarea nu a fot găsită',
@@ -4025,7 +4004,6 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 
 # Special:ComparePages
 'comparepages' => 'Comparație între pagini',
-'compare-selector' => 'Comparație între versiuni',
 'compare-page1' => 'Pagina 1',
 'compare-page2' => 'Pagina 2',
 'compare-rev1' => 'Versiunea 1',
@@ -4198,10 +4176,14 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
 'expand_templates_input' => 'Introduceți textul aici:',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'Ieșire XML',
+'expand_templates_html_output' => 'Ieșire HTML brut',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Elimină comentariile',
 'expand_templates_remove_nowiki' => 'Suprimă etichetele <nowiki> în rezultat',
 'expand_templates_generate_xml' => 'Arată arborele de analiză XML',
+'expand_templates_generate_rawhtml' => 'Arată HTML brut',
 'expand_templates_preview' => 'Previzualizare',
 
+# Unknown messages
+'uploadinvalidxml' => 'Nu s-a putut analiza conținutul XML din fișierul încărcat.',
 );
index 5bdbeec..a013382 100644 (file)
@@ -46,7 +46,6 @@ $messages = array(
 'tog-minordefault' => 'Pe convenzione signe tutte le cangiaminde cumme stuédeche',
 'tog-previewontop' => "Fa vedè l'andeprime apprime d'a caselle de le cangiaminde",
 'tog-previewonfirst' => "Fà vedè l'andeprime sus a 'u prime cangiamende",
-'tog-nocache' => "Disabbilite 'u caching d'a pàgene sfogliate",
 'tog-enotifwatchlistpages' => "Manneme 'na mail quanne 'a pàgene ca stoche a condrolle ha cangiate",
 'tog-enotifusertalkpages' => "Manneme 'na mail quanne 'a pàgene de le 'ngazzaminde ha cangiate",
 'tog-enotifminoredits' => "Manneme 'na mail quanne onne state fatte cangiaminde stuèdeche sus a le pàggene",
@@ -183,7 +182,6 @@ $messages = array(
 'qbedit' => 'Cange',
 'qbpageoptions' => 'Pàgene currende',
 'qbmyoptions' => 'Pàggene mije',
-'qbspecialpages' => 'Pàggene speciale',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -407,9 +405,6 @@ Pò essere ca tène une o cchiù carattere ca non ge ponne essere ausete jndr'à
 'perfcachedts' => "'U date seguende stè jndr'à cache e, l'urteme aggiornamende ha state $1. 'Nu massime de {{PLURAL:$4|'nu resultate ste|$4 resultate stonne}} disponibbile jndr'à cache.",
 'querypage-no-updates' => "L'aggiornaminde pe sta pàgene sonde, pe mò, disabbilitete.
 Le date ca stonne aqquà jndre non ge sonde aggiornete.",
-'wrong_wfQuery_params' => "Parametre incorrette sus 'a wfQuery()<br />
-Function: $1<br />
-Query: $2",
 'viewsource' => "Vide 'u sorgende",
 'viewsource-title' => "Vide 'a sorgende pe $1",
 'actionthrottled' => 'Azione inderrotte',
@@ -596,7 +591,7 @@ Ce tu scacchie de metterle, quiste avène ausate pe dà 'u giuste merite a 'a fa
 'user-mail-no-body' => "Pruvate a mannà 'na mail cu 'nu cuèrpe vacande o troppe curte.",
 
 # Change password dialog
-'resetpass' => "Cange 'a password",
+'changepassword' => "Cange 'a password",
 'resetpass_announce' => "Tu tè colleghete cu 'nu codece mannete pe e-mail temboranee.
 Pe spiccià 'a procedure de collegamende, tu a 'mbostà 'na password nove aqquà:",
 'resetpass_text' => "<!-- Mitte 'u teste aqquà -->",
@@ -1000,10 +995,6 @@ Tu puè vedè ste differenze; pò essere ca stonne cchiù 'mbormaziune jndr'à l
 'revisiondelete' => 'Scangille/Repristine revisiune',
 'revdelete-nooldid-title' => 'Revisione de destinazione invalida',
 'revdelete-nooldid-text' => "Tu non g'è specificate 'na revisione da arrivà pe abbilità sta funzione. 'A specifica revisione non g'esiste oppure tu stè pruève a scunnè 'a revisona corrende.",
-'revdelete-nologtype-title' => 'Nisciune tipe de archivije ha state specifichete',
-'revdelete-nologtype-text' => "Tu non g'è specificate 'u tipe de l'archivije pe eseguì st'aziona.",
-'revdelete-nologid-title' => "Richieste jndr'à l'archivije invalide",
-'revdelete-nologid-text' => "Tu non g'è specificate l'archivije de destinazione de l'evende pe eseguì sta funzione o 'a specifiche entrate non g'esiste.",
 'revdelete-no-file' => "'U file specificate non g'esiste.",
 'revdelete-show-file-confirm' => 'Si secure ca vuè ccu vide \'a revisione scangellate d\'u file "<nowiki>$1</nowiki>" \'u $2 a le $3?',
 'revdelete-show-file-submit' => 'Sìne',
@@ -1037,8 +1028,6 @@ $1",
 'logdelete-failure' => "'''L'archivije d'a visibbilità non ge pò essere 'mbostate:'''
 $1",
 'revdel-restore' => "Cange 'a visibilità",
-'revdel-restore-deleted' => 'revisiune scangellate',
-'revdel-restore-visible' => 'Revisiune visibbele',
 'pagehist' => "Storie d'a vôsce",
 'deletedhist' => "Storie d'u scangellamende",
 'revdelete-hide-current' => "Errore scunnènne le artichele datate $2, $1: queste ète 'a versiona corrende.
@@ -1119,12 +1108,8 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 # Search results
 'searchresults' => "Resultete d'a ricerche",
 'searchresults-title' => 'Resultete d\'a ricerche pe "$1"',
-'searchresulttext' => "Pe cchiù 'mbormaziune sus 'a recerche de {{SITENAME}}, vide [[{{MediaWiki:Helppage}}|{{int:help}}]].",
-'searchsubtitle' => 'Tu è cerchete pe \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutte le pàggene ca accumenzene cu "$1"]]{{int:pipe-separator}} [[Special:WhatLinksHere/$1|tutte le pàggene ca appondene a "$1"]])',
-'searchsubtitleinvalid' => "Tu è cerchete pe '''$1'''",
 'toomanymatches' => "Troppe combronde sciute bbuene onne state returnete, pe piacere prueve cu 'n'otra inderrogazione",
 'titlematches' => "'U titele d'a pàgene se iacchje",
-'notitlematches' => "Nisciune titele de pàgene s'accocchie cu 'a recerche",
 'textmatches' => "'U teste d'a pàgene combacie",
 'notextmatches' => "Nisciune teste de pàgene s'accocchie cu 'a recerche",
 'prevn' => 'rrede {{PLURAL:$1|$1}}',
@@ -1133,10 +1118,8 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 'nextn-title' => 'Successive $1 {{PLURAL:$1|resultete|resultete}}',
 'shown-title' => 'Fà vedè le $1 {{PLURAL:$1|resultete|resultete}} pe pàgene',
 'viewprevnext' => 'Vide ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opzione de ricerche',
 'searchmenu-exists' => "'''Stè 'na pàgene nnumenete \"[[\$1]]\" sus 'a sta Uicchipèdie'''",
 'searchmenu-new' => "'''[[:\$1|Ccreje]] 'a pàgene \"[[:\$1|\$1]]\" sus 'a sta Uicchipèdie!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sfogghije le pàggene cu stu prefisse]]',
 'searchprofile-articles' => 'Vôsce',
 'searchprofile-project' => 'Pàggene de ajiute e de pruggette',
 'searchprofile-images' => 'Multimedia',
@@ -1157,21 +1140,16 @@ Le dettaglie le puè acchià jndr'à l'[{{fullurl:{{#Special:Log}}/delete|page={
 'search-interwiki-default' => '$1 resultete:',
 'search-interwiki-more' => '(de cchiù)',
 'search-relatedarticle' => 'Colleghete',
-'mwsuggest-disable' => 'Disabbilete le conziglie in AJAX',
 'searcheverything-enable' => "Cirche jndr'à tutte le namespace",
 'searchrelated' => 'colleghete',
 'searchall' => 'tutte',
 'showingresults' => "Stoche a fazze vedè aqquà sotte {{PLURAL:$1|'''1''' resultete|'''$1''' resultete}} ca accumenzene cu #'''$2'''.",
 'showingresultsnum' => "Stoche a fazze vedè {{PLURAL:$3|'''1''' resultete|'''$3''' resultete}} ca accumenzene cu #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultate '''$1''' de '''$3'''|Resultate '''$1 - $2''' de '''$3'''}} pe '''$4'''",
-'nonefound' => "'''Vide bbuene''': Sulamende sus a certe namespace avène fatte 'a ricerche pe default.
-Prueve mettènne nnande a l'inderrogaziona toje 'u prefisse '''all:''' pe cercà jndr'à tutte le namespace (ingludenne le pàggene de le 'ngazzaminde, le template, etc), o ause 'u namespace addò vuliva fa 'a ricerche cumme prefisse.",
 'search-nonefound' => "Non ge stonne resultete ca soddisfecene l'inderrogazione.",
-'powersearch' => 'Ricerche avanzete',
 'powersearch-legend' => 'Ricerche avanzete',
 'powersearch-ns' => "Cirche jndr'à le namespace:",
 'powersearch-redir' => 'Liste de le ridirezionaminde',
-'powersearch-field' => 'Cirche pe',
 'powersearch-togglelabel' => 'Verifiche:',
 'powersearch-toggleall' => 'Tutte',
 'powersearch-togglenone' => 'Ninde',
@@ -1185,7 +1163,6 @@ Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàgg
 'preferences' => 'Me piece accussì',
 'mypreferences' => 'Me piace accussì',
 'prefs-edits' => 'Numere de cangiaminde:',
-'changepassword' => "Cange 'a password",
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Andeprime',
 'datedefault' => 'Nisciuna preferenze',
@@ -1208,13 +1185,11 @@ Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàgg
 'prefs-email' => "Opziune de l'e-mail",
 'prefs-rendering' => 'Aspette',
 'saveprefs' => 'Reggistre',
-'resetprefs' => "Pulizze le cangiaminde ca non g'è reggistrete",
 'restoreprefs' => "Repristine tutte le 'mbostaziune origgenale",
 'prefs-editing' => 'Stoche a cange',
 'rows' => 'Righe:',
 'columns' => 'Culonne:',
 'searchresultshead' => 'Cirche',
-'resultsperpage' => 'Trasute pe pàgene:',
 'stub-threshold' => 'Soglie pe <a href="#" class="stub">collegamende stub</a> de formattazione (byte):',
 'stub-threshold-disabled' => 'Disabbilitate',
 'recentchangesdays' => "Sciurne da fà vedè jndr'à le cangiaminde recende:",
@@ -1229,7 +1204,6 @@ Cengate vò ccu canosce ce pò leggere l'elenghe de le pàggene condrollate tune
 'localtime' => 'Orarie lochele:',
 'timezoneuseserverdefault' => "Ause 'u valore de default de uicchi ($1)",
 'timezoneuseoffset' => "Otre (specifiche 'a distanze)",
-'timezoneoffset' => 'Distanze¹:',
 'servertime' => "Orarie d'u server:",
 'guesstimezone' => "Jnghie da 'u browser",
 'timezoneregion-africa' => 'Africa',
@@ -1487,7 +1461,6 @@ Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
 'recentchanges-label-bot' => "Stu cangiamende ha state fatte da 'nu bot",
 'recentchanges-label-unpatrolled' => "Stu cangiamende non g'à state angore condrollate",
 'recentchanges-legend-newpage' => '$1 - pàgena nove',
-'rcnote' => "Sotte {{PLURAL:$1|jè '''1''' cangiamende|sonde le urteme '''$1''' cangiaminde}} jndr'à l'urteme{{PLURAL:$2|sciurne|'''$2''' sciurne}}, jndr'à $5, $4.",
 'rcnotefrom' => "Sotte stonne le cangiaminde da '''$2''' (fine a '''$1''' mustrete).",
 'rclistfrom' => 'Fà vedè le urteme cangiaminde partenne da $1',
 'rcshowhideminor' => '$1 cangiaminde stuèdeche',
@@ -2004,10 +1977,8 @@ Mò s'avène redirette a [[$2]].",
 'protectedpages' => 'Pàggene prutette',
 'protectedpages-indef' => 'Sulamende protezziune indefinite',
 'protectedpages-cascade' => 'Sulamende prutezzione a cascata',
-'protectedpagestext' => 'Le pàggene ca seguene sonde prutette da spustaminde e cangiaminde',
 'protectedpagesempty' => 'Nisciuna pàgene jè prutette pe mò cu ste parametre.',
 'protectedtitles' => 'Titele prutette',
-'protectedtitlestext' => "Le titele ca seguene sonde prutette da 'a ccreazione",
 'protectedtitlesempty' => 'Nisciune titele jè pe mò prutette cu ste parametre.',
 'listusers' => "Liste de l'utende",
 'listusers-editsonly' => "Fà vedè sulamende l'utinde cu cangiaminde fatte",
@@ -2059,9 +2030,6 @@ Tu puè restringere 'a viste selezionanne 'u tipe de archivije, 'u nome utende (
 'allpagesto' => "Fà vedè pàggene ca spiccene 'u:",
 'allarticles' => 'Tutte le pàggene',
 'allinnamespace' => 'Tutte le pàggene (neimspeise $1)',
-'allnotinnamespace' => "Tutte le pàggene (ca non ge stonne jndr'à 'u namespace $1)",
-'allpagesprev' => 'Precedende',
-'allpagesnext' => 'Prossime',
 'allpagessubmit' => 'Veje',
 'allpagesprefix' => "Fa vedè le pàggene cu 'u prefisse:",
 'allpagesbadtitle' => "'U titele d'a vôsce ca è date ere invalide o tenève 'nu prefisse inter-lènghe o inter-uicchi.
@@ -2407,7 +2375,6 @@ Tu puè avè 'nu collegamende sbagliate o 'a revisione pò essere ca ha state re
 'undeletebtn' => 'Repristine',
 'undeletelink' => 'vide/repristine',
 'undeleteviewlink' => 'vide',
-'undeletereset' => 'Azzere',
 'undeleteinvert' => 'Selezione a smerse',
 'undeletecomment' => 'Mutive:',
 'undeletedrevisions' => '{{PLURAL:$1|1 revisione|$1 revisiune}} ripristinete',
@@ -2437,7 +2404,6 @@ Pò essere ca già ha state scangellate.",
 $1",
 'undelete-show-file-confirm' => 'Sì secure ca tu vuè ccu vide \'na revisiona scangellate d\'u file "<nowiki>$1</nowiki>" d\'u $2 a le $3?',
 'undelete-show-file-submit' => 'Sine',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Namespace:',
@@ -2498,7 +2464,6 @@ L'urteme archivije de le bloccaminde se iacche aqquà sotte pe referimende:",
 'block' => "Bluècche l'utende",
 'unblock' => "Sbluècche l'utende",
 'blockip' => "Blocche l'utende",
-'blockip-title' => "Bluecche l'utende",
 'blockip-legend' => "Bluecche l'utende",
 'blockiptext' => "Ause 'a schermata de sotte pe bloccà l'accesse in scritture de 'nu specifiche indirizze IP o utende.
 Quiste avessa essere fatte sulamende pe prevenìe 'u vandalisme e in accorde cu [[{{MediaWiki:Policy-url}}|le reghele]].
@@ -2506,7 +2471,6 @@ Mitte pure 'nu mutive specifiche aqquà sotte (pe esembije, nnomene 'a pàgene a
 'ipadressorusername' => "Indirizze IP o nome de l'utende:",
 'ipbexpiry' => 'More:',
 'ipbreason' => 'Mutive:',
-'ipbreasonotherlist' => 'Otre mutive',
 'ipbreason-dropdown' => "*Mutive comune de blocche
 ** Inzerimende de 'mbormaziune fause
 ** Scangellamende de condenute da le vôsce
@@ -2522,8 +2486,6 @@ Mitte pure 'nu mutive specifiche aqquà sotte (pe esembije, nnomene 'a pàgene a
 'ipbsubmit' => "Blocche st'utende",
 'ipbother' => 'Otre orarie:',
 'ipboptions' => '2 ore:2 hours,1 giurne:1 day,3 giurne:3 days,1 sumane:1 week,2 sumane:2 weeks,1 mese:1 month,3 mise:3 months,6 mise:6 months,1 anne:1 year,infinite:infinite',
-'ipbotheroption' => 'otre',
-'ipbotherreason' => 'Otre mutive:',
 'ipbhidename' => 'Scunne le nome utinde da le cangiaminde e da le liste',
 'ipbwatchuser' => "Vide a pàgena utende e quedde de le 'ngazzaminde de stu utende",
 'ipb-disableusertalk' => "Non ge face cangià a stu utende 'a pàgena de le 'ngazzaminde sue fine ca jè bloccate",
@@ -2618,7 +2580,6 @@ Pe piacere condatte 'u provider de Indernette tue o 'u supporte tecniche e 'mbor
 'sorbs_create_account_reason' => "L'indirizze IP tue jè elegate cumme a 'nu proxy apirte jndr'à DNSBL ausate da {{SITENAME}}.
 Tu nonge puè ccrejà 'nu cunde utende",
 'xffblockreason' => "'N'indirizze IP presende jndr'à testate X-Forwarded-For, tutte e doje le tune o 'nu server proxy ca ste ause, onne state bloccate. 'U mutive d'u blocche origgenale ere: $1",
-'cant-block-while-blocked' => 'Tu non ge puè bloccà otre utinde quanne tu si blocchete.',
 'cant-see-hidden-user' => "L'utende ca tu ste pruève a bloccà ha state già bloccate e scunnute. Ce tu non ge tine le deritte ''hideuser'', tu non ge puè vedè o cangià 'u blocche de l'utende.",
 'ipbblocked' => 'Tu non ge puè bloccà o sbloccà otre utinde, purcé tu sì ppure bloccate',
 'ipbnounblockself' => "Non ge t'è permesse de sbloccarte da sule",
@@ -2679,7 +2640,6 @@ Pe piacere ha essere secure secure de avere capite le conzeguenze apprime de sc
 Jndr'à ste case, 'a pàgene non g'avène spustete e pò t'a cupià a màne 'u codenute sue.",
 'movearticle' => 'Spuèste:',
 'moveuserpage-warning' => "'''Attenziò:''' Tu stè spuèste 'na pàgene utende. Vide bbuène ca sulamende 'a pàgene avène spustate ma l'utende ''non'' g'avene renomenate.",
-'movenologin' => 'Non ge sinde colleghete',
 'movenologintext' => "Tu a essere 'n'utende reggistrete e [[Special:UserLogin|colleghete]] pe spustà 'na pàgene.",
 'movenotallowed' => "Tu non ge tìne 'u permesse pe spustà le pàggene.",
 'movenotallowedfile' => "Tu non ge tìne 'u permesse pe spustà le file.",
@@ -2695,9 +2655,6 @@ Jndr'à ste case, 'a pàgene non g'avène spustete e pò t'a cupià a màne 'u c
 'articleexists' => "'Na pàgene cu stu nome già esiste, o 'u nome ca tu è scacchiete non g'è valide.
 Pe piacere scacchie n'otre nome.",
 'cantmove-titleprotected' => "Tu non ge puè spustà 'na pògene jndr'à sta locazzione purcè 'u titele nuève ha state protette da 'a ccrejazione",
-'talkexists' => "''''A pàgene ha state spustete, però 'a pàgene de le 'ngazzaminde pò essere ca non g'à state spustete purcè ne ste n'otre già cu 'u titele nuéve.
-Videta tu 'a màne a 'ngollà 'a pàgena vecchie cu quedda nova.'''",
-'movedto' => 'spustete a',
 'movetalk' => "Spuéste 'a pàgene de le 'ngazzaminde associete",
 'move-subpages' => 'Spuèste le sottopàggene (fine a $1)',
 'move-talk-subpages' => "Spuèste le sotto pàggene de le 'ngazzainde (fine a $1)",
@@ -3121,8 +3078,8 @@ Ce l'esegue sus a 'u sisteme tue pò essere ca se combromette.",
 'days-abbrev' => '$1g',
 'seconds' => '{{PLURAL:$1|seconde|seconde}}',
 'minutes' => '{{PLURAL:$1|$1 minute|$1 minute}}',
-'hours' => '{{PLURAL: $1|$1ore|$1 ore}}',
-'days' => '{{PLURAL: $1|$1 sciurne|$1 sciurne}}',
+'hours' => '{{PLURAL:$1|$1ore|$1 ore}}',
+'days' => '{{PLURAL:$1|$1 sciurne|$1 sciurne}}',
 'weeks' => '{{PLURAL:$1|$1 sumàne}}',
 'months' => '{{PLURAL:$1|$1 mese|$1 mise}}',
 'years' => '{{PLURAL:$1|$1 anne}}',
@@ -3656,15 +3613,10 @@ $8',
 'exif-urgency-high' => 'Ierte ($1)',
 'exif-urgency-other' => "Priorità definite da l'utende ($1)",
 
-# External editor support
-'edit-externally' => "Cange stu fail usanne n'applicazione esterne",
-'edit-externally-help' => "(Vide le [https://www.mediawiki.org/wiki/Manual:External_editors 'struzione de configurazione] pe avèje cchiù dettaglie)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutte',
 'namespacesall' => 'tutte',
 'monthsall' => 'tutte',
-'limitall' => 'tutte',
 
 # Email address confirmation
 'confirmemail' => "Conferme l'indirizze e-mail",
@@ -3689,7 +3641,6 @@ Pò essere ca 'u codece ha scadute.",
 'confirmemail_success' => "L'indirizze e-mail tue ha state confermate.
 Tu, mò te puè [[Special:UserLogin|collegà]] e te puè devertì sus 'a Uicchipèdie.",
 'confirmemail_loggedin' => "L'indirizze e-mail tue ha state confermate.",
-'confirmemail_error' => "Quacchedune ha sbagliate reggistranne 'a conferma toje.",
 'confirmemail_subject' => 'Indirizze email de conferme pe {{SITENAME}}',
 'confirmemail_body' => "Quacchedune, pò essere tu, fa l'indirizze IP \$1,
 ha reggistrate 'nu cunde utende \"\$2\" cu st'indirizze email sus a {{SITENAME}}.
@@ -4024,7 +3975,6 @@ Avisse avè ricevute [{{SERVER}}{{SCRIPTPATH}}/COPYING 'na copie d'a GNU (Licenz
 
 # Special:ComparePages
 'comparepages' => 'Combronde le pàggene',
-'compare-selector' => "Combronde le revisiune d'à pàgene",
 'compare-page1' => 'Pàgene 1',
 'compare-page2' => 'Pàgene 2',
 'compare-rev1' => 'Revisione 1',
@@ -4164,10 +4114,10 @@ Ce nò, tu puè ausà 'u module facile aqquà sotte. 'U commende tune avène agg
 # Durations
 'duration-seconds' => '{{PLURAL:$1|seconde|seconde}}',
 'duration-minutes' => '{{PLURAL:$1|minute|minute}}',
-'duration-hours' => '{{PLURAL: $1|ore|ore}}',
+'duration-hours' => '{{PLURAL:$1|ore|ore}}',
 'duration-days' => '$1 {{PLURAL:$1|sciurne|sciurne}}',
-'duration-weeks' => '{{PLURAL: $1|sumàne|sumàne}}',
-'duration-years' => '{{PLURAL: $1|anne|anne}}',
+'duration-weeks' => '{{PLURAL:$1|sumàne|sumàne}}',
+'duration-years' => '{{PLURAL:$1|anne|anne}}',
 'duration-decades' => '$1 {{PLURAL:$1|decade|decade}}',
 'duration-centuries' => '$1 {{PLURAL:$1|sechele|sechele}}',
 'duration-millennia' => '$1 {{PLURAL:$1|millennie|millennie}}',
index f8179ed..c24ca8c 100644 (file)
@@ -26,6 +26,7 @@
  * @author Biathlon
  * @author Bouron
  * @author Chilin
+ * @author Cinemantique
  * @author Claymore
  * @author Comp1089
  * @author Cryptocoryne
@@ -70,6 +71,7 @@
  * @author Matma Rex
  * @author MaxBioHazard
  * @author MaxSem
+ * @author Milicevic01
  * @author NBS
  * @author Nemo bis
  * @author Okras
@@ -78,6 +80,7 @@
  * @author Putnik
  * @author Rave
  * @author Rubin
+ * @author Rubin16
  * @author Sagan
  * @author Shirayuki
  * @author Sk
@@ -132,11 +135,11 @@ $namespaceGenderAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Активные_участники' ),
        'Allmessages'               => array( 'Системные_сообщения' ),
+       'AllMyUploads'              => array( 'Все_мои_файлы' ),
        'Allpages'                  => array( 'Все_страницы' ),
        'Badtitle'                  => array( 'Недопустимое_название' ),
        'Blankpage'                 => array( 'Пустая_страница' ),
        'Block'                     => array( 'Заблокировать' ),
-       'Blockme'                   => array( 'Заблокируй_меня' ),
        'Booksources'               => array( 'Источники_книг' ),
        'BrokenRedirects'           => array( 'Разорванные_перенаправления' ),
        'Categories'                => array( 'Категории' ),
@@ -148,10 +151,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Создать_учётную_запись', 'Создать_пользователя', 'Зарегистрироваться' ),
        'Deadendpages'              => array( 'Тупиковые_страницы' ),
        'DeletedContributions'      => array( 'Удалённый_вклад' ),
-       'Disambiguations'           => array( 'Неоднозначности' ),
        'DoubleRedirects'           => array( 'Двойные_перенаправления' ),
        'EditWatchlist'             => array( 'Править_список_наблюдения' ),
        'Emailuser'                 => array( 'Письмо_участнику', 'Отправить_письмо' ),
+       'ExpandTemplates'           => array( 'Развёртка_шаблонов' ),
        'Export'                    => array( 'Экспорт', 'Выгрузка' ),
        'Fewestrevisions'           => array( 'Редко_редактируемые' ),
        'FileDuplicateSearch'       => array( 'Поиск_дубликатов_файлов' ),
@@ -453,7 +456,7 @@ $messages = array(
 'tog-editsection' => 'Показывать ссылку «править» для каждой секции',
 'tog-editsectiononrightclick' => 'Править секции при правом щелчке мышью на заголовке',
 'tog-showtoc' => 'Показывать оглавление (для страниц более чем с 3 заголовками)',
-'tog-rememberpassword' => 'Помнить мою учётную запись в этом браузере (не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'tog-rememberpassword' => 'Помнить мою учётную запись в этом браузере (не более $1 {{PLURAL:$1|дня|дней}})',
 'tog-watchcreations' => 'Добавлять в список наблюдения созданные мной страницы и загруженные мной файлы',
 'tog-watchdefault' => 'Добавлять в список наблюдения изменённые мной страницы и описания файлов',
 'tog-watchmoves' => 'Добавлять в список наблюдения переименованные мной страницы и файлы',
@@ -461,9 +464,8 @@ $messages = array(
 'tog-minordefault' => 'Помечать по умолчанию правки как малозначимые',
 'tog-previewontop' => 'Помещать предпросмотр перед окном редактирования',
 'tog-previewonfirst' => 'Показывать предпросмотр при переходе к редактированию',
-'tog-nocache' => 'Отключить кэширование страниц в браузере',
-'tog-enotifwatchlistpages' => 'Уведомлять по эл. почте об изменениях страниц и файлов из списка наблюдения',
-'tog-enotifusertalkpages' => 'Уведомлять по эл. почте об изменении персональной страницы обсуждения',
+'tog-enotifwatchlistpages' => 'Уведомлять по электронной почте об изменениях страниц и файлов из списка наблюдения',
+'tog-enotifusertalkpages' => 'Уведомлять по электронной почте об изменении персональной страницы обсуждения',
 'tog-enotifminoredits' => 'Уведомлять даже при незначительных изменениях страниц и файлов',
 'tog-enotifrevealaddr' => 'Показывать мой почтовый адрес в сообщениях оповещения',
 'tog-shownumberswatching' => 'Показывать число участников, включивших страницу в свой список наблюдения',
@@ -476,7 +478,7 @@ $messages = array(
 'tog-watchlisthideminor' => 'Скрывать малые правки из списка наблюдения',
 'tog-watchlisthideliu' => 'Скрывать правки представившихся участников из списка наблюдения',
 'tog-watchlisthideanons' => 'Скрывать правки анонимных участников из списка наблюдения',
-'tog-watchlisthidepatrolled' => 'СкÑ\80Ñ\8bваÑ\82Ñ\8c Ð¾Ñ\82паÑ\82Ñ\80Ñ\83лиÑ\80ованнÑ\8bе Ð¿Ñ\80авки Ð² Ñ\81пиÑ\81ке наблюдения',
+'tog-watchlisthidepatrolled' => 'СкÑ\80Ñ\8bваÑ\82Ñ\8c Ð¾Ñ\82паÑ\82Ñ\80Ñ\83лиÑ\80ованнÑ\8bе Ð¿Ñ\80авки Ð¸Ð· Ñ\81пиÑ\81ка наблюдения',
 'tog-ccmeonemails' => 'Отправлять мне копии писем, которые я посылаю другим участникам',
 'tog-diffonly' => 'Не показывать содержание страницы под сравнением двух версий',
 'tog-showhiddencats' => 'Показывать скрытые категории',
@@ -561,19 +563,19 @@ $messages = array(
 'december-date' => 'Декабрь $1',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категория|Категории}}',
+'pagecategories' => '{{PLURAL:$1|1=Категория|Категории}}',
 'category_header' => 'Страницы в категории «$1»',
 'subcategories' => 'Подкатегории',
 'category-media-header' => 'Файлы в категории «$1»',
 'category-empty' => "''Эта категория в данный момент пуста.''",
-'hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытые категории}}',
+'hidden-categories' => '{{PLURAL:$1|1=Скрытая категория|Скрытые категории}}',
 'hidden-category-category' => 'Скрытые категории',
-'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|подкатегорию|подкатегории}} из $2 всего.}}',
-'category-subcat-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8f|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ии|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ий}}.',
-'category-article-count' => '{{#ifeq:$2|1|Эта категория содержит только следующую страницу.|Эта категория содержит следующ{{PLURAL:$1|ую $1 страницу|ие $1 страницы|ие $1 страниц}} из $2.}}',
-'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страницы|$1 страниц}}.',
-'category-file-count' => '{{#ifeq:$2|1|Эта категория содержит только один файл.|Следующ{{PLURAL:$1|ий $1 файл|ие $1 файла|ие $1 файлов}} из $2 имеющ{{PLURAL:$2|его|их}}ся принадлеж{{PLURAL: ит|ат}} к этой категории.}}',
-'category-file-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ñ\84айл|$1 Ñ\84айла|$1 Ñ\84айлов}}.',
+'category-subcat-count' => '{{PLURAL:$2|Эта категория содержит только следующую подкатегорию.|Эта категория содержит $1 {{PLURAL:$1|1=подкатегорию|подкатегории}} из $2 всего.}}',
+'category-subcat-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80иÑ\8f|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ий|$1 Ð¿Ð¾Ð´ÐºÐ°Ñ\82егоÑ\80ии}}.',
+'category-article-count' => '{{PLURAL:$2|Эта категория содержит единственную страницу.|{{PLURAL:$1|Показана $1 страница|Показано $1 страниц|Показаны $1 страницы}} из $2, {{PLURAL:$2|находящейся|находящихся|находящихся}} в данной категории.}}',
+'category-article-count-limited' => 'В этой категории {{PLURAL:$1|$1 страница|$1 страниц|$1 страницы|1=только одна страница}}.',
+'category-file-count' => '{{PLURAL:$2|Эта категория содержит единственный файл.|{{PLURAL:$1|Показан $1 файл|Показано $1 файлов|Показаны $1 файла}} из $2, {{PLURAL:$2|находящегося|находящихся|находящихся}} в данной категории.}}',
+'category-file-count-limited' => 'Ð\92 Ñ\8dÑ\82ой ÐºÐ°Ñ\82егоÑ\80ии {{PLURAL:$1|$1 Ñ\84айл|$1 Ñ\84айлов|$1 Ñ\84айла|1=Ñ\82олÑ\8cко Ð¾Ð´Ð¸Ð½ Ñ\84айл}}.',
 'listingcontinuesabbrev' => '(продолжение)',
 'index-category' => 'Индексируемые страницы',
 'noindex-category' => 'Неиндексируемые страницы',
@@ -597,7 +599,6 @@ $messages = array(
 'qbedit' => 'Править',
 'qbpageoptions' => 'Настройки страницы',
 'qbmyoptions' => 'Ваши настройки',
-'qbspecialpages' => 'Специальные страницы',
 'faq' => 'ЧаВО',
 'faqpage' => 'Project:ЧаВО',
 
@@ -641,8 +642,8 @@ $messages = array(
 'delete' => 'Удалить',
 'deletethispage' => 'Удалить эту страницу',
 'undeletethispage' => 'Восстановить эту страницу',
-'undelete_short' => 'Восстановить $1 {{PLURAL:$1|правку|правки|правок}}',
-'viewdeleted_short' => 'Просмотр $1 {{PLURAL:$1|удалённой правки|удалённых правок|удалённых правок}}',
+'undelete_short' => 'Восстановить {{PLURAL:$1|$1 правку|$1 правок|$1 правки|1=правку}}',
+'viewdeleted_short' => 'Просмотр {{PLURAL:$1|$1 удалённой правки|$1 удалённых правок|удалённой правки}}',
 'protect' => 'Защитить',
 'protect_change' => 'изменить',
 'protectthispage' => 'Защитить эту страницу',
@@ -670,7 +671,7 @@ $messages = array(
 'redirectedfrom' => '(перенаправлено с «$1»)',
 'redirectpagesub' => 'Страница-перенаправление',
 'lastmodifiedat' => 'Последнее изменение этой страницы: $2, $1.',
-'viewcount' => 'К этой странице обращались $1 {{PLURAL:$1|раз|раза|раз}}.',
+'viewcount' => 'К этой странице обращались $1 {{PLURAL:$1|раз|раз|раза}}.',
 'protectedpage' => 'Защищённая страница',
 'jumpto' => 'Перейти к:',
 'jumptonavigation' => 'навигация',
@@ -705,7 +706,7 @@ $1',
 
 'badaccess' => 'Ошибка доступа',
 'badaccess-group0' => 'Вы не можете выполнять запрошенное действие.',
-'badaccess-groups' => 'Запрошенное действие могут выполнять только участники из {{PLURAL:$2|группы|групп}} «$1».',
+'badaccess-groups' => 'Запрошенное действие могут выполнять только участники {{PLURAL:$2|1=из группы «$1»|одной из следующих групп: $1}}',
 
 'versionrequired' => 'Требуется MediaWiki версии $1',
 'versionrequiredtext' => 'Для работы с этой страницей требуется MediaWiki версии $1. См. [[Special:Version|информацию об программном обеспечении]].',
@@ -714,7 +715,7 @@ $1',
 'pagetitle' => '$1 — {{SITENAME}}',
 'retrievedfrom' => 'Источник — «$1»',
 'youhavenewmessages' => 'Вы получили $1 ($2).',
-'youhavenewmessagesfromusers' => 'Вы получили $1 от {{PLURAL:$3|$3 участника|$3 участников}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Вы получили}} $1 от {{PLURAL:$3|$3 участника|$3 участников|1=другого участника}} ($2).',
 'youhavenewmessagesmanyusers' => 'Вы получили $1 от множества пользователей ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|новое сообщение|999=новые сообщения}}',
 'newmessagesdifflinkplural' => '{{PLURAL:$1|последнее изменение|999=последние изменения}}',
@@ -732,7 +733,7 @@ $1',
 'collapsible-expand' => 'развернуть',
 'thisisdeleted' => 'Просмотреть или восстановить $1?',
 'viewdeleted' => 'Просмотреть $1?',
-'restorelink' => '{{PLURAL:$1|$1 удалённую правку|$1 удалённые правки|$1 удалённых правок}}',
+'restorelink' => '{{PLURAL:$1|$1 удалённую правку|$1 удалённых правок|$1 удалённые правки|1=удалённую правку}}',
 'feedlinks' => 'В виде:',
 'feed-invalid' => 'Неправильный тип канала для подписки.',
 'feed-unavailable' => 'Ленты синдикации недоступны',
@@ -803,20 +804,17 @@ $1',
 'formerror' => 'Ошибка: невозможно передать данные формы',
 'badarticleerror' => 'Это действие не может быть выполнено на данной странице.',
 'cannotdelete' => 'Невозможно удалить или переименовать страницу или файл «$1».
\92озможно, Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\83же Ð±Ñ\8bла Ñ\83далена.',
\92озможно, Ñ\83же Ð±Ñ\8bло Ð¿Ñ\80оизведено Ñ\83даление.',
 'cannotdelete-title' => 'Нельзя удалить страницу «$1»',
 'delete-hook-aborted' => 'Правка отменена процедурой-перехватчиком.
 Дополнительных пояснений не приведено.',
 'no-null-revision' => 'Не удалось создать новую нулевую правку для страницы «$1»',
 'badtitle' => 'Недопустимое название',
 'badtitletext' => 'Запрашиваемое название страницы неправильно, пусто, либо неверно указано межъязыковое или интервики название. Возможно, в названии используются недопустимые символы.',
-'perfcached' => 'Следующие данные взяты из кэша и могут не учитывать последних изменений. В кэше хранится не более $1 {{PLURAL:$1|записи|записей|записей}}.',
-'perfcachedts' => 'Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более $4 {{PLURAL:$4|записи|записей|записей}}.',
+'perfcached' => 'Следующие данные взяты из кэша и могут не учитывать последних изменений. В кэше хранится не более $1 {{PLURAL:$1|записи|записей}}.',
+'perfcachedts' => 'Следующие данные взяты из кэша, последний раз он обновлялся в $1. В кэше хранится не более $4 {{PLURAL:$4|записи|записей}}.',
 'querypage-no-updates' => 'Обновление этой страницы сейчас отключено.
 Представленные здесь данные не будут обновляться.',
-'wrong_wfQuery_params' => 'Недопустимые параметры для функции wfQuery()<br />
-Функция: $1<br />
-Запрос: $2',
 'viewsource' => 'Просмотр',
 'viewsource-title' => 'Просмотр исходного текста страницы $1',
 'actionthrottled' => 'Ограничение по скорости',
@@ -829,7 +827,7 @@ $1',
 'editinginterface' => "'''Внимание:''' Вы редактируете страницу, содержащую текст интерфейса программного обеспечения.
 Её изменение повлияет на внешний вид интерфейса для других пользователей этой вики.
 Чтобы добавить или изменить перевод этого сообщения, пожалуйста, используйте сайт локализации MediaWiki [//translatewiki.net/ translatewiki.net].",
-'cascadeprotected' => 'Страница защищена от изменений, поскольку она включена в {{PLURAL:$1|следующую страницу, для которой|следующие страницы, для которых}} включена каскадная защита:
+'cascadeprotected' => 'Страница защищена от изменений, поскольку она включена в {{PLURAL:$1|1=следующую страницу, для которой|следующие страницы, для которых}} включена каскадная защита:
 $2',
 'namespaceprotected' => 'У вас нет разрешения редактировать страницы в пространстве имён «$1».',
 'customcssprotected' => 'У вас нет разрешения редактировать эту CSS-страницу, так как она содержит личные настройки другого участника.',
@@ -873,7 +871,7 @@ $2',
 'yourpasswordagain' => 'Повторный набор пароля:',
 'createacct-yourpasswordagain' => 'Подтвердите пароль',
 'createacct-yourpasswordagain-ph' => 'Введите пароль еще раз',
-'remembermypassword' => 'Помнить мою учётную запись на этом компьютере (не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'remembermypassword' => 'Помнить мою учётную запись на этом компьютере (не более $1 {{PLURAL:$1|дня|дней}})',
 'userlogin-remembermypassword' => 'Оставаться в системе',
 'userlogin-signwithsecure' => 'Защищённое соединение',
 'yourdomainname' => 'Ваш домен:',
@@ -916,10 +914,10 @@ $2',
 'createacct-imgcaptcha-ph' => 'Введите текст, который вы видите выше',
 'createacct-submit' => 'Создать учётную запись',
 'createacct-another-submit' => 'Создать ещё одну учётную запись',
-'createacct-benefit-heading' => '{{SITENAME}} создана такими же людьми, как вы.',
-'createacct-benefit-body1' => '{{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|статья|статьи|статей}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|Ñ\83Ñ\87аÑ\81Ñ\82ник|Ñ\83Ñ\87аÑ\81Ñ\82ника|Ñ\83Ñ\87аÑ\81Ñ\82ников}} за последнее время',
+'createacct-benefit-heading' => '{{SITENAME}} — совместный труд таких же людей, как вы.',
+'createacct-benefit-body1' => '{{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|статья|статей|статьи}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|Ñ\83Ñ\87аÑ\81Ñ\82ник|Ñ\83Ñ\87аÑ\81Ñ\82ников|Ñ\83Ñ\87аÑ\81Ñ\82ника}} за последнее время',
 'badretype' => 'Введённые вами пароли не совпадают.',
 'userexists' => 'Введённое имя участника уже используется.
 Пожалуйста, выберите другое имя.',
@@ -941,16 +939,16 @@ $2',
 'login-userblocked' => 'Этот участник заблокирован. Вход в систему не разрешён.',
 'wrongpassword' => 'Введённый вами пароль неверен. Попробуйте ещё раз.',
 'wrongpasswordempty' => 'Пожалуйста, введите непустой пароль.',
-'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов|символов}}.',
+'passwordtooshort' => 'Пароль должен состоять не менее чем из $1 {{PLURAL:$1|символа|символов}}.',
 'password-name-match' => 'Введённый пароль должен отличаться от имени участника.',
 'password-login-forbidden' => 'Использование этого имени участника и пароля запрещено.',
-'mailmypassword' => 'Ð\92Ñ\8bÑ\81лаÑ\82Ñ\8c Ð½Ð¾Ð²Ñ\8bй Ð¿Ð°Ñ\80олÑ\8c Ð¿Ð¾ Ñ\8dлекÑ\82Ñ\80онной Ð¿Ð¾Ñ\87Ñ\82е',
+'mailmypassword' => 'СбÑ\80оÑ\81иÑ\82Ñ\8c Ð¿Ð°Ñ\80олÑ\8c',
 'passwordremindertitle' => 'Напоминание пароля участника {{grammar:genitive|{{SITENAME}}}}',
 'passwordremindertext' => 'Кто-то (вероятно, вы, с IP-адреса $1) запросил создать
 новый пароль для {{grammar:genitive|{{SITENAME}}}} ($4). Для участника $2
 создан временный пароль: $3. Если это был ваш запрос,
 вам следует представиться системе и выбрать новый пароль.
-Ваш временный пароль будет действовать в течение $5 {{PLURAL:$5|дня|дней|дней}}.
+Ваш временный пароль будет действовать в течение $5 {{PLURAL:$5|дня|дней}}.
 
 Если вы не посылали запроса на смену пароля, или если вы уже вспомнили свой пароль,
 и не желаете его менять, вы можете проигнорировать данное сообщение и
@@ -963,10 +961,10 @@ $2',
 'blocked-mailpassword' => 'Редактирование с вашего IP-адреса запрещено, поэтому заблокирована и функция восстановления пароля.',
 'eauthentsent' => 'На указанный адрес электронной почты отправлено письмо. 
 Чтоб получать письма в дальнейшем, следуйте изложенным там инструкциям для подтверждения того, что этот адрес действительно принадлежит вам.',
-'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|последнего часа|последних $1 часов}}.
-Для предотвращения злоупотреблений, разрешено запрашивать не более одного напоминания за $1 {{PLURAL:$1|час|часа|часов}}.',
+'throttled-mailpassword' => 'Функция напоминания пароля уже использовалась в течение {{PLURAL:$1|1=последнего часа|последних $1 часов}}.
+Для предотвращения злоупотреблений, разрешено запрашивать не более одного напоминания {{PLURAL:$1|за $1 час|за $1 часов|за $1 часа|1=в час}}.',
 'mailerror' => 'Ошибка при отправке почты: $1',
-'acct_creation_throttle_hit' => 'За сутки с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись участника|было создано $1 учётных записей участников|было создано $1 учётных записей участников}}, что является пределом для данного отрезка времени.
+'acct_creation_throttle_hit' => 'За сутки с вашего IP-адреса {{PLURAL:$1|была создана $1 учётная запись участника|было создано $1 учётных записей участников|1=уже была создана учётная запись участника}}, что является пределом для данного отрезка времени.
 Таким образом, пользователи, обладающие данным IP-адресом, в данный момент больше не могут создавать новых учётных записей.',
 'emailauthenticated' => 'Ваш адрес электронной почты подтверждён $2 в $3.',
 'emailnotauthenticated' => 'Ваш адрес электронной почты ещё не был подтверждён.
@@ -1000,7 +998,7 @@ $2',
 'user-mail-no-body' => 'Пытался отправить электронное письмо с пустым или бессмысленно коротким содержанием.',
 
 # Change password dialog
-'resetpass' => 'Изменение пароля',
+'changepassword' => 'Изменение пароля',
 'resetpass_announce' => 'Вы представились с помощью временного пароля, полученного по электронной почте. Для завершения входа в систему вы должны установить новый пароль.',
 'resetpass_text' => '<!-- Добавьте сюда текст -->',
 'resetpass_header' => 'Изменение пароля учётной записи',
@@ -1021,7 +1019,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'Сброс пароля',
 'passwordreset-text-one' => 'Заполните эту форму, чтобы сбросить свой пароль.',
-'passwordreset-text-many' => '{{PLURAL:$1|Заполните одно из полей для сброса пароля.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Заполните одно из полей для получения временного пароля по электронной почте.}}',
 'passwordreset-legend' => 'Сбросить пароль',
 'passwordreset-disabled' => 'Сбросы пароля отключены на этой вики.',
 'passwordreset-emaildisabled' => 'Функции электронной почты отключены в этой вики.',
@@ -1032,20 +1030,20 @@ $2',
 'passwordreset-email' => 'Адрес электронной почты:',
 'passwordreset-emailtitle' => 'Сведения об учётной записи {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Кто-то (возможно, вы, с IP-адреса $1) запросил сброс пароля к вашей учётной записи в проекте {{SITENAME}} ($4).
-С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
+С этим адресом электронной почты {{PLURAL:$3|1=связана следующая учётная запись|связаны следующие учётные записи}}:
 
 $2
 
-{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
+{{PLURAL:$3|1=Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дней|$5 дня|1=один день}}.
 Вы должны представиться системе и выбрать новый пароль. 
 Если вы не делали этого запроса, или вспомнили свой исходный пароль и не желаете его менять, 
 то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
 'passwordreset-emailtext-user' => 'Участник $1 из проекта {{SITENAME}} запросил сброс пароля для вашей учётной записи в проекте {{SITENAME}} ($4).
-С этим адресом электронной почты {{PLURAL:$3|связана следующая учётная запись|связаны следующие учётные записи}}:
+С этим адресом электронной почты {{PLURAL:$3|1=связана следующая учётная запись|связаны следующие учётные записи}}:
 
 $2
 
-{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дня|$5 дней}}.
+{{PLURAL:$3|1=Этот временный пароль будет|Эти временные пароли будут}} действовать {{PLURAL:$5|$5 день|$5 дней|$5 дня|1=один день}}.
 Вы должны представиться системе и выбрать новый пароль.
 Если вы не делали этого запроса или вспомнили свой исходный пароль и не желаете его менять, 
 то можете проигнорировать это сообщение и продолжить использовать свой старый пароль.',
@@ -1241,7 +1239,7 @@ $2
 Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.<br />
 Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. $1).
 '''НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!'''",
-'longpageerror' => "'''ОШИБКА: записываемый вами текст имеет размер {{PLURAL:$1|$1 килобайт|$1 килобайта|$1 килобайт}}, что больше, чем установленный предел в {{PLURAL:$2|$2 килобайт|$2 килобайта|$2 килобайт}}. Страница не может быть сохранена.'''",
+'longpageerror' => "'''ОШИБКА: записываемый вами текст имеет размер $1 {{PLURAL:$1|килобайт|килобайт|килобайта}}, что больше, чем установленный предел в $2 {{PLURAL:$2|килобайт|килобайт|килобайта}}. Страница не может быть сохранена.'''",
 'readonlywarning' => "'''Предупреждение. База данных заблокирована в связи с процедурами обслуживания, поэтому вы не можете записать ваши изменения прямо сейчас.'''
 Возможно, вам следует скопировать этот текст в текстовый файл, чтобы сохранить его на будущее.
 
@@ -1250,15 +1248,15 @@ $2
 Ниже для справки приведена последняя запись журнала:",
 'semiprotectedpagewarning' => "'''Замечание.''' Эта страница была защищена; редактировать её могут только зарегистрированные участники.
 Ниже для справки приведена последняя запись журнала:",
-'cascadeprotectedwarning' => "'''Предупреждение:''' Данную страницу могут редактировать только участники группы «Администраторы», поскольку она включена {{PLURAL:$1|в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
+'cascadeprotectedwarning' => "'''Предупреждение:''' Данную страницу могут редактировать только участники с административными правами, поскольку она включена {{PLURAL:$1|1=в следующую страницу, для которой|в следующие страницы, для которых}} включена каскадная защита:",
 'titleprotectedwarning' => "'''Предупреждение.  Это название защищено. Создать эту страницу могут только участники с [[Special:ListGroupRights|соответствующими правами]].'''
 Ниже для справки приведена последняя запись журнала:",
-'templatesused' => '{{PLURAL:$1|Шаблон, использованный|Шаблоны, использованные}} на этой странице:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, используемые}} в предпросматриваемой странице:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон, используемый|Шаблоны, использованные}} в этом разделе:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} на этой странице:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} в режиме предпросмотра:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон, используемый|Шаблоны, используемые}} в этом разделе:',
 'template-protected' => '(защищено)',
 'template-semiprotected' => '(частично защищено)',
-'hiddencategories' => 'Эта страница относится к $1 {{PLURAL:$1|скрытой категории|скрытым категориям}}:',
+'hiddencategories' => 'Эта страница относится к {{PLURAL:$1|$1 скрытой категории|$1 скрытым категориям|1=одной скрытой категории}}:',
 'edittools' => '<!-- Расположенный здесь текст будет показываться под формой редактирования и формой загрузки. -->',
 'nocreatetext' => 'На этом сайте ограничена возможность создания новых страниц.
 Вы можете вернуться назад и отредактировать существующую страницу, [[Special:UserLogin|представиться системе или создать новую учётную запись]].',
@@ -1266,8 +1264,8 @@ $2
 'sectioneditnotsupported-title' => 'Редактирование разделов не поддерживается',
 'sectioneditnotsupported-text' => 'На этой странице не поддерживается редактирование разделов',
 'permissionserrors' => 'Ошибка прав доступа',
-'permissionserrorstext' => 'У вас нет прав на выполнение этой операции по {{PLURAL:$1|следующей причине|следующим причинам}}:',
-'permissionserrorstext-withaction' => 'У вас нет прав на $2 по {{PLURAL:$1|следующей причине|следующим причинам}}:',
+'permissionserrorstext' => 'У вас нет прав на выполнение этой операции по {{PLURAL:$1|1=следующей причине|следующим причинам}}:',
+'permissionserrorstext-withaction' => 'У вас нет прав на $2 по {{PLURAL:$1|1=следующей причине|следующим причинам}}:',
 'recreate-moveddeleted-warn' => "'''Внимание. Вы пытаетесь воссоздать страницу, которая ранее удалялась.'''
 
 Проверьте, действительно ли вам нужно воссоздавать эту страницу.
@@ -1290,6 +1288,8 @@ $2
 'content-not-allowed-here' => 'Содержимое "$1" недопустимо на странице [[$2]]',
 'editwarning-warning' => 'Переход на другую страницу может привести к потере сделанных вами изменений.
 Если вы зарегистрированы в системе, то вы можете отключить это предупреждение в разделе «Редактирование» ваших настроек.',
+'editpage-notsupportedcontentformat-title' => 'Формат содержимого не поддерживается',
+'editpage-notsupportedcontentformat-text' => 'Формат содержимого $1 не поддерживается моделью содержимого $2.',
 
 # Content models
 'content-model-wikitext' => 'вики-текст',
@@ -1300,7 +1300,7 @@ $2
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Внимание!''' Эта страница содержит слишком много вызовов ресурсоёмких функций.
 
-Должно быть не более $2 {{PLURAL:$2|вызова|вызовов}}, в то время как сейчас здесь $1 {{PLURAL:$1|вызов|вызова|вызовов}}.",
+Должно быть не более {{PLURAL:$2|$2 вызова|$2 вызовов|1=одного вызова}}, в то время как сейчас здесь $1 {{PLURAL:$1|вызов|вызовов|вызова}}.",
 'expensive-parserfunction-category' => 'Страницы со слишком большим количеством вызовов ресурсоёмких функций',
 'post-expand-template-inclusion-warning' => 'Предупреждение: суммарный размер включаемых шаблонов слишком велик.
 Некоторые шаблоны не будут включены.',
@@ -1331,6 +1331,9 @@ $2
 'cantcreateaccount-text' => "Создание учётных записей с этого IP-адреса ('''$1''') было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].
 
 $3 {{GENDER:$3|указал|указала}} следующую причину: ''$2''.",
+'cantcreateaccount-range-text' => "{{GENDER:$3|Участник|Участница}} [[User:$3|$3]] {{GENDER:$3|установил|установила}} запрет на создание учётных записей из диапазона IP-адресов '''$1''', включающего ваш IP-адрес ('''$4'''). 
+
+Была указана следующая причина: $2.",
 
 # History pages
 'viewpagelogs' => 'Показать журналы для этой страницы',
@@ -1353,7 +1356,7 @@ $3 {{GENDER:$3|указал|указала}} следующую причину:
 'history-show-deleted' => 'Только удалённые',
 'histfirst' => 'старейшие',
 'histlast' => 'новейшие',
-'historysize' => '($1 {{PLURAL:$1|байт|байта|байт}})',
+'historysize' => '($1 {{PLURAL:$1|байт|байт|байта}})',
 'historyempty' => '(пусто)',
 
 # Revision feed
@@ -1399,15 +1402,11 @@ $3 {{GENDER:$3|указал|указала}} следующую причину:
 'revisiondelete' => 'Удалить / восстановить версии страницы',
 'revdelete-nooldid-title' => 'Не задана целевая версия',
 'revdelete-nooldid-text' => 'Вы не задали целевую версию (или версии) для выполнения этой функции.',
-'revdelete-nologtype-title' => 'Не указан тип журнала',
-'revdelete-nologtype-text' => 'Вы не указали тип журнала, в котором следует выполнить действие.',
-'revdelete-nologid-title' => 'Ошибочная запись журнала',
-'revdelete-nologid-text' => 'Вы не указали целевую запись журнала для выполнения действия или указанной записи не существует.',
 'revdelete-no-file' => 'Указанный файл не существует.',
 'revdelete-show-file-confirm' => 'Вы уверены, что вы хотите просмотреть удалённую версию файла «<nowiki>$1</nowiki>» от $2, $3?',
 'revdelete-show-file-submit' => 'Да',
-'revdelete-selected' => "'''{{PLURAL:$2|Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Выбранная запись|Выбранные записи}} журнала:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Выбранная версия|Выбранные версии}} страницы [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Выбранная запись|Выбранные записи}} журнала:'''",
 'revdelete-text' => "'''Удалённые версии страниц и события будут показываться в истории страницы и журналах, но часть их содержания будет недоступна обычным посетителям.'''
 Администраторы проекта {{SITENAME}} будут иметь доступ к скрытому содержанию и смогут восстановить его через этот же интерфейс, за исключением случаев, когда установлено дополнительное ограничение.",
 'revdelete-confirm' => 'Пожалуйста, подтвердите, что вы действительно желаете совершить это действие, осознаёте последствия, делаете это в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].',
@@ -1428,7 +1427,7 @@ $3 {{GENDER:$3|указал|указала}} следующую причину:
 'revdelete-suppress' => 'Скрывать данные также и от администраторов',
 'revdelete-unsuppress' => 'Снять ограничения с восстановленных версий',
 'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Применить к {{PLURAL:$1|выбранной версии|выбранным версиям}}',
+'revdelete-submit' => 'Применить к {{PLURAL:$1|1=выбранной версии|выбранным версиям}}',
 'revdelete-success' => "'''Видимость версии успешно изменена.'''",
 'revdelete-failure' => "'''Видимость версии не может быть изменена:'''
 $1",
@@ -1436,8 +1435,6 @@ $1",
 'logdelete-failure' => "'''Видимость журнала не установлена:'''
 $1",
 'revdel-restore' => 'изменить видимость',
-'revdel-restore-deleted' => 'удалённые версии',
-'revdel-restore-visible' => 'видимые версии',
 'pagehist' => 'История страницы',
 'deletedhist' => 'История удалений',
 'revdelete-hide-current' => 'Ошибка скрытия записи от $2, $1: это текущая версия.
@@ -1478,7 +1475,7 @@ $1",
 'mergehistory-go' => 'Показать объединяемые правки',
 'mergehistory-submit' => 'Объединить правки',
 'mergehistory-empty' => 'Не найдены правки для объединения.',
-'mergehistory-success' => '$3 {{PLURAL:$3|пÑ\80авка|пÑ\80авки|пÑ\80авок}} Ð¸Ð· [[:$1]] Ñ\83Ñ\81пеÑ\88но {{PLURAL:$3|пеÑ\80енеÑ\81ена|пеÑ\80енеÑ\81енÑ\8b|перенесены}} в [[:$2]].',
+'mergehistory-success' => '$3 {{PLURAL:$3|пÑ\80авка|пÑ\80авок|пÑ\80авки}} Ð¸Ð· [[:$1]] Ñ\83Ñ\81пеÑ\88но {{PLURAL:$3|пеÑ\80енеÑ\81ена|перенесены}} в [[:$2]].',
 'mergehistory-fail' => 'Не удалось произвести объединение историй страниц, пожалуйста, проверьте параметры страницы и времени.',
 'mergehistory-no-source' => 'Исходная страница «$1» не существует.',
 'mergehistory-no-destination' => 'Целевая страница «$1» не существует.',
@@ -1505,34 +1502,28 @@ $1",
 'showhideselectedversions' => 'Показать/скрыть выбранные версии',
 'editundo' => 'отменить',
 'diff-empty' => '(нет различий)',
-'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия|не показаны $1 промежуточные версии|не показаны $1 промежуточных версий}} {{PLURAL:$2|$2 участника|$2 участников}})',
-'diff-multi-manyusers' => '(не {{PLURAL:$1|показана $1 промежуточная версия|показаны $1 промежуточные версии|показаны $1 промежуточных версий}}, сделанные более чем $2 {{PLURAL:$2|участником|участниками}})',
-'difference-missing-revision' => '{{PLURAL:$2|$2 версия|$2 версии|$2 версий}} для этого сравнения ($1) {{PLURAL:$2|не обнаружена|не обнаружены}}.
+'diff-multi' => '({{PLURAL:$1|не показана $1 промежуточная версия, сделанная|не показаны $1 промежуточных версий, сделанных|не показаны $1 промежуточные версии, сделанные|1=не показана промежуточная версия, сделанная}} {{PLURAL:$2|$2 участником|$2 участниками|1=одним участником}})',
+'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 промежуточная версия, сделанная|не показаны $1 промежуточных версий, сделанных|не показаны $1 промежуточные версии, сделанные}} более чем {{PLURAL:$2|$2 участником|$2 участниками}})',
+'difference-missing-revision' => 'Не {{PLURAL:$2|1=найдена|найдены}} {{PLURAL:$2|$2 версия|$2 версий|$2 версии|1=одна из версий}} для этого сравнения ($1).
 
­Ñ\82о Ð¾Ð±Ñ\8bÑ\87но Ð±Ñ\8bваеÑ\82, ÐµÑ\81ли Ð¿ÐµÑ\80ейÑ\82и по устаревшей ссылке сравнения версий для страницы, которая была удалена.
¢Ð°ÐºÐ¾Ðµ Ð¾Ð±Ñ\8bÑ\87но Ñ\81лÑ\83Ñ\87аеÑ\82Ñ\81Ñ\8f Ð¿Ñ\80и Ð¿ÐµÑ\80еÑ\85оде по устаревшей ссылке сравнения версий для страницы, которая была удалена.
 Подробности могут быть в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журнале удалений].',
 
 # Search results
 'searchresults' => 'Результаты поиска',
 'searchresults-title' => 'Поиск «$1»',
-'searchresulttext' => 'Для получения более подробной информации о поиске на страницах проекта, см. [[{{MediaWiki:Helppage}}|справочный раздел]].',
-'searchsubtitle' => 'По запросу «[[:$1]]» ([[Special:Prefixindex/$1|страницы, начинающиеся с этого названия]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|ссылающиеся на это название]])',
-'searchsubtitleinvalid' => 'По запросу «$1»',
 'toomanymatches' => 'Найдено слишком много соответствий; пожалуйста, попробуйте сформулировать запрос иначе',
 'titlematches' => 'Совпадения в названиях страниц',
-'notitlematches' => 'Нет совпадений в названиях страниц',
 'textmatches' => 'Совпадения в текстах страниц',
 'notextmatches' => 'Нет совпадений в текстах страниц',
-'prevn' => '{{PLURAL:$1|предыдущая|предыдущие}} $1',
-'nextn' => '{{PLURAL:$1|следующая|следующие|следующие}} $1',
-'prevn-title' => '{{PLURAL:$1|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей}}',
-'nextn-title' => '{{PLURAL:$1|СледÑ\83Ñ\8eÑ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей}}',
+'prevn' => '{{PLURAL:$1|1=предыдущая|предыдущие}} $1',
+'nextn' => '{{PLURAL:$1|1=следующая|следующие}} $1',
+'prevn-title' => '{{PLURAL:$1|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей|Ð\9fÑ\80едÑ\8bдÑ\83Ñ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и}}',
+'nextn-title' => '{{PLURAL:$1|СледÑ\83Ñ\8eÑ\89аÑ\8f $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81ей|СледÑ\83Ñ\8eÑ\89ие $1 Ð·Ð°Ð¿Ð¸Ñ\81и}}',
 'shown-title' => 'Показывать $1 {{PLURAL:$1|запись|записи|записей}} на странице',
 'viewprevnext' => 'Просмотреть ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Настройки поиска',
 'searchmenu-exists' => "'''В этой вики есть страница «[[:$1]]»'''",
 'searchmenu-new' => "'''Создать страницу «[[:$1]]» в этом вики-проекте!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показать страницы с этим префиксом]]',
 'searchprofile-articles' => 'Основные страницы',
 'searchprofile-project' => 'Страницы справки и проекта',
 'searchprofile-images' => 'Мультимедиа',
@@ -1543,8 +1534,8 @@ $1",
 'searchprofile-images-tooltip' => 'Поиск файлов',
 'searchprofile-everything-tooltip' => 'Поиск на всех страницах (включая страницы обсуждений)',
 'searchprofile-advanced-tooltip' => 'Искать в заданных пространствах имён',
-'search-result-size' => '$1 ({{PLURAL:$2|$2 слово|$2 слова|$2 слов}})',
-'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождения|вхождений}} ($2 {{PLURAL:$2|подкатегория|подкатегории|подкатегорий}}, $3 {{PLURAL:$3|файл|файла|файлов}}).',
+'search-result-size' => '$1 ({{PLURAL:$2|$2 слово|$2 слов|$2 слова}})',
+'search-result-category-size' => '$1 {{PLURAL:$1|вхождение|вхождений|вхождения}} ($2 {{PLURAL:$2|подкатегория|подкатегорий|подкатегории}}, $3 {{PLURAL:$3|файл|файлов|файла}})',
 'search-result-score' => 'Релевантность: $1%.',
 'search-redirect' => '(перенаправление с $1)',
 'search-section' => '(раздел «$1»)',
@@ -1553,20 +1544,16 @@ $1",
 'search-interwiki-default' => '$1 результ.:',
 'search-interwiki-more' => '(ещё)',
 'search-relatedarticle' => 'Связанный',
-'mwsuggest-disable' => 'Отключить подсказки поиска',
 'searcheverything-enable' => 'Поиск по всем пространствам имён',
 'searchrelated' => 'связанный',
 'searchall' => 'все',
-'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|результата|результатов}}, начиная с №'''$2'''.",
-'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с №'''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
-'nonefound' => "'''Замечание:''' по умолчанию поиск производится не во всех пространствах имён. Используйте приставку ''all:'', чтобы искать во всех пространствах имён (включая обсуждения участников, шаблоны и пр.), или укажите требуемое пространство имён.",
+'showingresults' => "Ниже {{PLURAL:$1|1=показан результат|показаны  результаты}} с № '''$2''' и вплоть до № '''$1'''.",
+'showingresultsnum' => "Ниже {{PLURAL:$3|1=показан|показаны}} '''$3''' {{PLURAL:$3|результат|результатов|результата}}, начиная с № '''$2'''.",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
 'search-nonefound' => 'Соответствий запросу не найдено.',
-'powersearch' => 'Расширенный поиск',
 'powersearch-legend' => 'Расширенный поиск',
 'powersearch-ns' => 'Поиск в пространствах имён:',
 'powersearch-redir' => 'Выводить перенаправления',
-'powersearch-field' => 'Поиск',
 'powersearch-togglelabel' => 'Отметить:',
 'powersearch-toggleall' => 'Все',
 'powersearch-togglenone' => 'Ничего',
@@ -1579,7 +1566,6 @@ $1",
 'mypreferences' => 'Настройки',
 'prefs-edits' => 'Количество правок:',
 'prefsnologintext2' => 'Необходимо $1, чтобы изменять настройки.',
-'changepassword' => 'Изменение пароля',
 'prefs-skin' => 'Тема оформления',
 'skin-preview' => 'Предпросмотр',
 'datedefault' => 'По умолчанию',
@@ -1602,17 +1588,15 @@ $1",
 'prefs-email' => 'Параметры электронной почты',
 'prefs-rendering' => 'Внешний вид',
 'saveprefs' => 'Сохранить',
-'resetprefs' => 'Сбросить',
 'restoreprefs' => 'Восстановить настройки по умолчанию',
 'prefs-editing' => 'Редактирование',
 'rows' => 'Строк:',
 'columns' => 'Столбцов:',
 'searchresultshead' => 'Поиск',
-'resultsperpage' => 'Количество найденных записей на страницу:',
 'stub-threshold' => 'Порог для определения оформления <a href="#" class="stub">ссылок на заготовки</a> (в байтах):',
 'stub-threshold-disabled' => 'Отключён',
 'recentchangesdays' => 'Количество дней, за которые показывать свежие правки:',
-'recentchangesdays-max' => '(не более $1 {{PLURAL:$1|дня|дней|дней}})',
+'recentchangesdays-max' => '(не более $1 {{PLURAL:$1|дня|дней}})',
 'recentchangescount' => 'Количество правок, отображаемое по умолчанию:',
 'prefs-help-recentchangescount' => 'Включает свежие правки, истории страниц, журналы.',
 'prefs-help-watchlist-token2' => 'Это секретный ключ для веб-канала вашего списка наблюдений.
@@ -1622,7 +1606,6 @@ $1",
 'localtime' => 'Местное время:',
 'timezoneuseserverdefault' => 'Использовать настройки сервера ($1)',
 'timezoneuseoffset' => 'Иное (укажите смещение)',
-'timezoneoffset' => 'Смещение¹:',
 'servertime' => 'Время сервера:',
 'guesstimezone' => 'Заполнить из браузера',
 'timezoneregion-africa' => 'Африка',
@@ -1650,7 +1633,7 @@ $1",
 'youremail' => 'Электронная почта:',
 'username' => '{{GENDER:$1|Имя участника|Имя участницы}}:',
 'uid' => 'Код {{GENDER:$1|участника|участницы}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Член|Член}} {{PLURAL:$1|группы|групп}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Член|Член}} {{PLURAL:$1|1=группы|групп}}:',
 'prefs-registration' => 'Время регистрации:',
 'yourrealname' => 'Настоящее имя:',
 'yourlanguage' => 'Язык интерфейса:',
@@ -1660,7 +1643,7 @@ $1",
 'prefs-help-signature' => 'Комментарии на страницах обсуждений должны быть подписаны посредством добавления символов «<nowiki>~~~~</nowiki>», которые будут преобразованы в вашу подпись и время.',
 'badsig' => 'Неверная подпись. Проверьте корректность HTML-тегов.',
 'badsiglength' => 'Слишком длинная подпись.
\9fодпиÑ\81Ñ\8c Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð° Ð¿Ñ\80евÑ\8bÑ\88аÑ\82Ñ\8c $1 {{PLURAL:$1|Ñ\81имвола|Ñ\81имволов|Ñ\81имволов}}.',
\9fодпиÑ\81Ñ\8c Ð½Ðµ Ð´Ð¾Ð»Ð¶Ð½Ð° Ð¿Ñ\80евÑ\8bÑ\88аÑ\82Ñ\8c $1 {{PLURAL:$1|Ñ\81имвола|Ñ\81имволов|Ñ\81имвола}}.',
 'yourgender' => 'Какое описание вам более подходит?',
 'gender-unknown' => 'Я предпочитаю не указывать',
 'gender-male' => 'Он редактирует страницы вики',
@@ -1692,6 +1675,7 @@ $1",
 'prefs-tokenwatchlist' => 'Токен',
 'prefs-diffs' => 'Разница версий',
 'prefs-help-prefershttps' => 'Эта настройка будет применена после следующего представления системе.',
+'prefs-tabs-navigation-hint' => 'Совет: Вы можете использовать клавиши стрелок влево и вправо для перехода между вкладками в списке вкладок.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Выглядит корректно',
@@ -1865,7 +1849,7 @@ $1",
 'action-editmyprivateinfo' => 'редактирование вашей частной информации',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|изменение|изменения|изменений}}',
+'nchanges' => '$1 {{PLURAL:$1|изменение|изменений|изменения}}',
 'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|с последнего посещения}}',
 'enhancedrc-history' => 'история',
 'recentchanges' => 'Свежие правки',
@@ -1876,11 +1860,11 @@ $1",
 'recentchanges-label-newpage' => 'Этой правкой была создана новая страница.',
 'recentchanges-label-minor' => 'Это незначительное изменение',
 'recentchanges-label-bot' => 'Эта правка сделана ботом',
-'recentchanges-label-unpatrolled' => 'Эта правку ещё никем не патрулировалась',
+'recentchanges-label-unpatrolled' => 'Эта правка ещё никем не патрулировалась',
 'recentchanges-label-plusminus' => 'Размер страницы изменился на данное количество байт',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(см. также [[Special:NewPages|список новых страниц]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "{{PLURAL:$1|Последнее '''$1''' изменение|Последние '''$1''' изменения|Последние '''$1''' изменений}} за '''$2''' {{PLURAL:$2|день|дня|дней}}, на момент времени $5 $4.",
 'rcnotefrom' => "Ниже перечислены изменения с '''$2''' (не более '''$1''').",
 'rclistfrom' => 'Показать изменения с $1.',
 'rcshowhideminor' => '$1 малые правки',
@@ -1898,10 +1882,10 @@ $1",
 'newpageletter' => 'Н',
 'boteditletter' => 'б',
 'unpatrolledletter' => '!',
-'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблÑ\8eдаÑ\8eÑ\89ий Ñ\83Ñ\87аÑ\81Ñ\82ник|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ника|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников}}]',
+'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|наблÑ\8eдаÑ\8eÑ\89ий Ñ\83Ñ\87аÑ\81Ñ\82ник|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ников|наблÑ\8eдаÑ\8eÑ\89иÑ\85 Ñ\83Ñ\87аÑ\81Ñ\82ника}}]',
 'rc_categories' => 'Только из категорий (разделитель «|»)',
 'rc_categories_any' => 'Любой',
-'rc-change-size-new' => 'Размер после изменения: $1 {{PLURAL:$1|байт|байта|байт}}',
+'rc-change-size-new' => 'Размер после изменения: $1 {{PLURAL:$1|байт|байт|байта}}',
 'newsectionsummary' => '/* $1 */ новая тема',
 'rc-enhanced-expand' => 'Показать подробности',
 'rc-enhanced-hide' => 'Скрыть подробности',
@@ -1960,10 +1944,10 @@ $1",
 'filetype-mime-mismatch' => 'Расширение файла «.$1» не соответствует его MIME-типу ($2).',
 'filetype-badmime' => 'Файлы, имеющие MIME-тип «$1», не могут быть загружены.',
 'filetype-bad-ie-mime' => 'Невозможно загрузить этот файл, так как Internet Explorer будет определять его как «$1», то есть неразрешённым и потенциально опасным типом файла.',
-'filetype-unwanted-type' => "'''\".\$1\"''' — нежелательный тип файла.
-{{PLURAL:\$3|Предпочтительным типом файла является|Предпочтительные типы файлов:}} \$2.",
-'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|запрещённый тип файла|запрещённые типы файлов}}.
-{{PLURAL:$3|Разрешённым типом файла является|Разрешённые типы файлов:}} $2.",
+'filetype-unwanted-type' => "'''«.$1»''' — нежелательный тип файла.
+{{PLURAL:$3|1=Предпочтительным типом файла является|Предпочтительные типы файлов:}} $2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|1=запрещённый тип файла|запрещённые типы файлов}}.
+{{PLURAL:$3|1=Разрешённым типом файла является|Разрешённые типы файлов:}} $2.",
 'filetype-missing' => 'Отсутствует расширение у файла (например, «.jpg»).',
 'empty-file' => 'Отправленный вами файл пуст.',
 'file-too-large' => 'Отправленный вами файл слишком велик.',
@@ -2000,8 +1984,10 @@ $1",
 Если всё равно хотите загрузить данный файл, пожалуйста, вернитесь назад и загрузите его под другим именем. [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Файл с этим именем уже существует в общем хранилище файлов.
 Если вы всё-таки хотите загрузить этот файл, пожалуйста, вернитесь назад и измените имя файла. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Этот файл является дубликатом {{PLURAL:$1|следующего файла|следующих файлов}}:',
+'file-exists-duplicate' => 'Этот файл является дубликатом {{PLURAL:$1|1=следующего файла|следующих файлов}}:',
 'file-deleted-duplicate' => 'Подобный файл ([[:$1]]) уже удалялся. Пожалуйста, ознакомьтесь с историей удаления файла, прежде чем загружать его снова.',
+'file-deleted-duplicate-notitle' => 'Файл, идентичный этому файлу, был ранее удалён, а имя файла было запрещено.
+Вам следует попросить кого-нибудь с правами просмотра данных по запрещённым файлам, чтобы он проанализировал ситуацию перед тем, как загружать файл снова.',
 'uploadwarning' => 'Предупреждение',
 'uploadwarning-text' => 'Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.',
 'savefile' => 'Записать файл',
@@ -2079,13 +2065,13 @@ $1',
 'backend-fail-closetemp' => 'Не удаётся закрыть временный файл.',
 'backend-fail-read' => 'Не удалось прочитать файл $1.',
 'backend-fail-create' => 'Не удалось записать файл $1.',
-'backend-fail-maxsize' => 'Не удалось записать файл $1, так как его размер превышает {{PLURAL:$2|$2 байт|$2 байта|$2 байт}}.',
+'backend-fail-maxsize' => 'Не удалось записать файл $1, так как его размер превышает $2 {{PLURAL:$2|байт|байт|байта}}.',
 'backend-fail-readonly' => 'Хранилище «$1» сейчас находится в режиме «только чтение». Причина: «$2»',
 'backend-fail-synced' => 'Файл «$1» находится в несогласованном состоянии во внутреннем хранилище',
 'backend-fail-connect' => 'Не удалось подключиться к хранилищу «$1».',
 'backend-fail-internal' => 'Произошла неизвестная ошибка в хранилище «$1».',
 'backend-fail-contenttype' => 'Не удалось определить тип содержимого файла, чтобы сохранить его в «$1».',
-'backend-fail-batchsize' => 'Хранилище получило блок из $1 {{PLURAL:$1|файловой операции|файловых операций|файловых операций}}, ограничение составляет $2 {{PLURAL:$1|операцию|операции|файловых операций}}.',
+'backend-fail-batchsize' => 'Хранилище получило блок из $1 {{PLURAL:$1|файловой операции|файловых операций}}, ограничение составляет $2 {{PLURAL:$1|файловую операцию|файловых операций|файловых операции}}.',
 'backend-fail-usable' => 'Не удалось прочитать или записать файл «$1» из-за нехватки прав или отсутствия нужных папок.',
 
 # File journal errors
@@ -2198,14 +2184,14 @@ $1',
 'filehist-comment' => 'Примечание',
 'filehist-missing' => 'Файл отсутствует',
 'imagelinks' => 'Использование файла',
-'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страницы ссылаются|Следующие $1 страниц ссылаются}} на данный файл:',
-'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц|страниц}} ссылаются на этот файл.
\92 Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ\81пиÑ\81ке {{PLURAL:$1|пÑ\80едÑ\81Ñ\82авлена Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлка|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлки|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлок}} на этот файл.
+'linkstoimage' => '{{PLURAL:$1|Следующая $1 страница ссылается|Следующие $1 страниц ссылаются|Следующие $1 страницы ссылаются}} на данный файл:',
+'linkstoimage-more' => 'Более $1 {{PLURAL:$1|страницы|страниц}} ссылаются на этот файл.
\92 Ð´Ð°Ð½Ð½Ð¾Ð¼ Ñ\81пиÑ\81ке {{PLURAL:$1|пÑ\80едÑ\81Ñ\82авлена Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлка|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлок|пÑ\80едÑ\81Ñ\82авленÑ\8b Ñ\82олÑ\8cко $1 Ñ\81Ñ\81Ñ\8bлки}} на этот файл.
 Доступен также [[Special:WhatLinksHere/$2|полный список]].',
 'nolinkstoimage' => 'Нет страниц, ссылающихся на данный файл.',
 'morelinkstoimage' => 'Просмотреть [[Special:WhatLinksHere/$1|остальные ссылки]] на этот файл.',
 'linkstoimage-redirect' => '$1 (файловое перенаправление) $2',
-'duplicatesoffile' => '{{PLURAL:$1|Следующий $1 файл является дубликатом|Следующие $1 файла являются дубликатами|Следующие $1 файлов являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Следующий файл является дубликатом|Следующие $1 файлов являются дубликатами|Следующие $1 файла являются дубликатами}} этого файла ([[Special:FileDuplicateSearch/$2|подробности]]):',
 'sharedupload' => 'Этот файл из $1 и может использоваться в других проектах.',
 'sharedupload-desc-there' => 'Этот файл из $1 и может использоваться в других проектах.
 Дополнительную информацию можно найти на [$2 странице описания файла].',
@@ -2273,7 +2259,7 @@ $1',
 
 # Random page
 'randompage' => 'Случайная статья',
-'randompage-nopages' => 'В {{PLURAL:$2|следующем пространстве имён отсутствуют страницы|следующих пространствах имён нет страниц}}: $1.',
+'randompage-nopages' => 'В {{PLURAL:$2|1=следующем пространстве имён отсутствуют страницы|следующих пространствах имён нет страниц}}: $1.',
 
 # Random page in category
 'randomincategory' => 'Случайная страница в категории',
@@ -2304,7 +2290,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 дней|последние $1 дня}}',
 'statistics-mostpopular' => 'Наиболее часто просматриваемые страницы',
 
 'pageswithprop' => 'Страницы с переопределёнными свойствами',
@@ -2336,15 +2322,16 @@ $1',
 'fewestrevisions' => 'Страницы с наименьшим количеством версий',
 
 # 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|версия|версии|версий}}',
-'nviews' => '$1 {{PLURAL:$1|просмотр|просмотра|просмотров}}',
-'nimagelinks' => 'Используется на $1 {{PLURAL:$1|странице|страницах|страницах}}',
-'ntransclusions' => 'используется на $1 {{PLURAL:$1|странице|страницах|страницах}}',
+'nbytes' => '$1 {{PLURAL:$1|байт|байтов|байта}}',
+'ncategories' => '$1 {{PLURAL:$1|категория|категорий|категории}}',
+'ninterwikis' => '$1 {{PLURAL:$1|интервики-ссылка|интервики-ссылок|интервики-ссылки}}',
+'nlinks' => '$1 {{PLURAL:$1|ссылка|ссылок|ссылки}}',
+'nmembers' => '$1 {{PLURAL:$1|объект|объектов|объекта}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|объект|объектов|объекта}}',
+'nrevisions' => '$1 {{PLURAL:$1|версия|версий|версии}}',
+'nviews' => '$1 {{PLURAL:$1|просмотр|просмотров|просмотра}}',
+'nimagelinks' => 'Используется на $1 {{PLURAL:$1|странице|страницах}}',
+'ntransclusions' => 'используется на $1 {{PLURAL:$1|странице|страницах}}',
 'specialpage-empty' => 'Запрос не дал результатов.',
 'lonelypages' => 'Страницы-сироты',
 'lonelypagestext' => 'На следующие страницы нет ссылок с других страниц {{grammar:genitive|{{SITENAME}}}}, и они не включаются в другие страницы.',
@@ -2379,16 +2366,15 @@ $1',
 'protectedpages' => 'Защищённые страницы',
 'protectedpages-indef' => 'Только бессрочные защиты',
 'protectedpages-cascade' => 'Только каскадная защита',
-'protectedpagestext' => 'Следующие страницы защищены от переименования или изменения.',
+'protectedpages-noredirect' => 'Скрыть перенаправления',
 'protectedpagesempty' => 'В настоящий момент нет защищённых страниц с указанными параметрами',
 'protectedtitles' => 'Защищённые названия',
-'protectedtitlestext' => 'Следующие названия не разрешается использовать',
 'protectedtitlesempty' => 'В настоящий момент нет запрещённых названий с указанными параметрами.',
 'listusers' => 'Список участников',
 'listusers-editsonly' => 'Показать только тех участников, кто сделал хотя бы одну правку',
 'listusers-creationsort' => 'Упорядочить по дате создания',
 'listusers-desc' => 'Сортировать по убыванию',
-'usereditcount' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}}',
+'usereditcount' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}}',
 'usercreated' => '{{GENDER:$3|зарегистрировался|зарегистрировалась}} $1 в $2',
 'newpages' => 'Новые страницы',
 'newpages-username' => 'Участник:',
@@ -2402,8 +2388,8 @@ $1',
 'notargettext' => 'Вы не указали целевую страницу или участника для этого действия.',
 'nopagetitle' => 'Нет такой целевой страницы',
 'nopagetext' => 'Указанной целевой страницы не существует.',
-'pager-newer-n' => '$1 {{PLURAL:$1|более новая|более новые|более новых}}',
-'pager-older-n' => '$1 {{PLURAL:$1|более старая|более старые|более старых}}',
+'pager-newer-n' => '$1 более {{PLURAL:$1|новая|новых|новые}}',
+'pager-older-n' => '$1 более {{PLURAL:$1|старая|старых|старые}}',
 'suppress' => 'Сокрытие',
 'querypage-disabled' => 'Эта спецстраница отключена для повышения производительности.',
 
@@ -2435,9 +2421,6 @@ $1',
 'allpagesto' => 'Остановить вывод на:',
 'allarticles' => 'Все страницы',
 'allinnamespace' => 'Все страницы в пространстве имён «$1»',
-'allnotinnamespace' => 'Все страницы (кроме пространства имён «$1»)',
-'allpagesprev' => 'Предыдущие',
-'allpagesnext' => 'Следующие',
 'allpagessubmit' => 'Выполнить',
 'allpagesprefix' => 'Найти страницы, начинающиеся с:',
 'allpagesbadtitle' => 'Недопустимое название страницы. Заголовок содержит интервики, межъязыковой префикс или запрещённые в заголовках символы.',
@@ -2451,7 +2434,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категории',
-'categoriespagetext' => '{{PLURAL:$1|Следующая категория содержит|Следующие категории содержат}} страницы или медиа-файлы.
+'categoriespagetext' => '{{PLURAL:$1|1=Следующая категория содержит|Следующие категории содержат}} страницы или медиа-файлы.
 Здесь не показаны [[Special:UnusedCategories|неиспользуемые категории]].
 См. также [[Special:WantedCategories|список требуемых категорий]].',
 'categoriesfrom' => 'Показать категории, начинающиеся с:',
@@ -2469,8 +2452,8 @@ $1',
 'linksearch-ns' => 'Пространство имён:',
 'linksearch-ok' => 'Найти',
 'linksearch-text' => 'Можно использовать подстановочные символы, например, <code>*.wikipedia.org</code>.
-Необходим по крайней мере домен верхнего уровня, например <code>*.org</code><br />
-Поддерживаемые {{PLURAL:$2|протокол|протоколы}}: <code>$1</code> (по умолчанию подставляется http://, если протокол явно не задан).',
+Необходимо указать по крайней мере домен верхнего уровня, например <code>*.org</code><br />
+{{PLURAL:$2|1=Поддерживаемый протокол|Поддерживаемые протоколы}}: <code>$1</code> (если протокол явно не задан, по умолчанию подставляется http://).',
 'linksearch-line' => 'Ссылка на $1 из $2',
 'linksearch-error' => 'Подстановочные символы могут использоваться только в начале адресов.',
 
@@ -2482,8 +2465,8 @@ $1',
 
 # Special:ActiveUsers
 'activeusers' => 'Список активных участников',
-'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дня|последние $1 дней}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авки|пÑ\80авок}} Ð·Ð° {{PLURAL:$3|$3 Ð¿Ð¾Ñ\81ледний Ð´ÐµÐ½Ñ\8c|поÑ\81ледние $3 Ð´Ð½Ñ\8f|поÑ\81ледние $3 Ð´Ð½ÐµÐ¹}}',
+'activeusers-intro' => 'Это список участников, совершавших какие-либо действия за {{PLURAL:$1|последний $1 день|последние $1 дней|последние $1 дня|1=последний день}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|пÑ\80авка|пÑ\80авок|пÑ\80авки}} Ð·Ð° {{PLURAL:$3|$3 Ð¿Ð¾Ñ\81ледний Ð´ÐµÐ½Ñ\8c|поÑ\81ледние $3 Ð´Ð½ÐµÐ¹|поÑ\81ледние $3 Ð´Ð½Ñ\8f|1=поÑ\81ледний Ð´ÐµÐ½Ñ\8c}}',
 'activeusers-from' => 'Показать участников, начиная с:',
 'activeusers-hidebots' => 'Скрыть ботов',
 'activeusers-hidesysops' => 'Скрыть администраторов',
@@ -2502,12 +2485,12 @@ $1',
 'listgrouprights-members' => '(список участников)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 (<code>$2</code>)</span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 (<code>$2</code>)</span>',
-'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|группу|группы}}: $1',
-'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|группы|групп}}: $1',
+'listgrouprights-addgroup' => 'может добавлять в {{PLURAL:$2|1=группу|группы}}: $1',
+'listgrouprights-removegroup' => 'может исключать из {{PLURAL:$2|1=группы|групп}}: $1',
 'listgrouprights-addgroup-all' => 'может добавлять во все группы',
 'listgrouprights-removegroup-all' => 'может исключать из всех групп',
-'listgrouprights-addgroup-self' => 'можеÑ\82 Ð´Ð¾Ð±Ð°Ð²Ð¸Ñ\82Ñ\8c {{PLURAL:$2|гÑ\80Ñ\83ппÑ\83|гÑ\80Ñ\83ппÑ\8b}} Ðº Ñ\81воей Ñ\83Ñ\87Ñ\91Ñ\82ной Ð·Ð°Ð¿Ð¸Ñ\81и: $1',
-'listgrouprights-removegroup-self' => 'может удалить {{PLURAL:$2|группу|группы}} со своей учётной записи: $1',
+'listgrouprights-addgroup-self' => 'можеÑ\82 Ð´Ð¾Ð±Ð°Ð²Ð»Ñ\8fÑ\82Ñ\8c Ñ\81воÑ\8e Ñ\83Ñ\87Ñ\91Ñ\82нÑ\83Ñ\8e Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c Ð² {{PLURAL:$2|1=гÑ\80Ñ\83ппÑ\83|гÑ\80Ñ\83ппÑ\8b}}: $1',
+'listgrouprights-removegroup-self' => 'может удалять свою учётную запись из {{PLURAL:$2|1=группы|групп}}: $1',
 'listgrouprights-addgroup-self-all' => 'Может добавлять все группы к своей учётной записи',
 'listgrouprights-removegroup-self-all' => 'может удалять все группы со своей учётной записи',
 
@@ -2567,14 +2550,14 @@ $1',
 'unwatchthispage' => 'Прекратить наблюдение',
 'notanarticle' => 'Не статья',
 'notvisiblerev' => 'Версия была удалена',
-'watchlist-details' => 'В вашем списке наблюдения $1 {{PLURAL:$1|страница|страницы|страниц}}, не считая страниц обсуждения.',
+'watchlist-details' => 'В вашем списке наблюдения $1 {{PLURAL:$1|страница|страниц|страницы}}, не считая страниц обсуждений.',
 'wlheader-enotif' => 'Уведомления по эл. почте включены.',
 'wlheader-showupdated' => "Страницы, изменившиеся с вашего последнего их посещения, выделены '''жирным''' шрифтом.",
 'watchmethod-recent' => 'просмотр последних изменений для наблюдаемых страниц',
 'watchmethod-list' => 'просмотр наблюдаемых страниц для последних изменений',
-'watchlistcontains' => 'Ваш список наблюдения содержит $1 {{PLURAL:$1|страница|страницы|страниц}}.',
+'watchlistcontains' => 'Ваш список наблюдения содержит $1 {{PLURAL:$1|страница|страниц|страницы}}.',
 'iteminvalidname' => 'Проблема с элементом «$1», недопустимое название…',
-'wlnote' => "Ниже {{PLURAL:$1|показано последнее $1 изменение|показаны последние $1 изменения|показаны последние $1 изменений}} за {{PLURAL:$2|последний|последние|последние}} '''$2''' {{plural:$2|час|часа|часов}}, на момент времени $3 $4.",
+'wlnote' => "Ниже {{PLURAL:$1|показано $1 последнее изменение|показаны $1 последних изменений|показаны $1 последние изменения|1=показано последнее изменение}} за {{PLURAL:$2|'''$2''' последний час|последние '''$2''' часов|последние '''$2''' часа|1=последний час}}, по состоянию на $3 $4.",
 'wlshowlast' => 'Показать за последние $1 часов $2 дней $3',
 'watchlist-options' => 'Настройки списка наблюдения',
 
@@ -2637,7 +2620,7 @@ $UNWATCHURL
 'exblank' => 'страница была пуста',
 'delete-confirm' => '$1 — удаление',
 'delete-legend' => 'Удаление',
-'historywarning' => "'''Внимание:''' эта страница имеет историю изменений приблизительно из $1 {{PLURAL:$1|версии|версий|версий}}:",
+'historywarning' => "'''Внимание:''' эта страница имеет историю изменений приблизительно из $1 {{PLURAL:$1|версии|версий}}:",
 'confirmdeletetext' => 'Вы запросили полное удаление страницы (или изображения) и всей её истории изменений. Пожалуйста, подтвердите, что вы действительно желаете это сделать, понимаете последствия своих действий, и делаете это в соответствии [[{{MediaWiki:Policy-url}}|с правилами]].',
 'actioncomplete' => 'Действие выполнено',
 'actionfailed' => 'Действие не выполнено',
@@ -2657,18 +2640,19 @@ $UNWATCHURL
 ** по запросу автора
 ** неработающее перенаправление',
 'delete-edit-reasonlist' => 'Править список причин',
-'delete-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий|версий}}.
-Удаление таких страниц было запрещено во избежание нарушений в работе сайта {{SITENAME}}.',
-'delete-warning-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий|версий}}.
-Её удаление может привести к нарушению нормальной работы базы данных сайта {{SITENAME}};
+'delete-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.
+Удаление таких страниц было запрещено во избежание нарушений в работе сайта «{{SITENAME}}».',
+'delete-warning-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий}}.
+Её удаление может привести к нарушению нормальной работы базы данных сайта «{{SITENAME}}»;
 действуйте с осторожностью.',
+'deleting-backlinks-warning' => "'''Предупреждение.''' Некоторые другие страницы ссылаются на данную удаляемую страницу.",
 
 # Rollback
 'rollback' => 'Откатить изменения',
 'rollback_short' => 'Откат',
 'rollbacklink' => 'откатить',
-'rollbacklinkcount' => 'оÑ\82каÑ\82иÑ\82Ñ\8c $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авки|пÑ\80авок}}',
-'rollbacklinkcount-morethan' => 'оÑ\82каÑ\82иÑ\82Ñ\8c Ð±Ð¾Ð»Ñ\8cÑ\88е, Ñ\87ем $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авки|пÑ\80авок}}',
+'rollbacklinkcount' => 'оÑ\82каÑ\82иÑ\82Ñ\8c $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авок|пÑ\80авки}}',
+'rollbacklinkcount-morethan' => 'оÑ\82каÑ\82иÑ\82Ñ\8c Ð±Ð¾Ð»Ñ\8cÑ\88е, Ñ\87ем $1 {{PLURAL:$1|пÑ\80авкÑ\83|пÑ\80авок|пÑ\80авки}}',
 'rollbackfailed' => 'Ошибка при совершении отката',
 'cantrollback' => 'Невозможно откатить изменения. Последний, кто вносил изменения, является единственным автором этой страницы.',
 'alreadyrolled' => 'Невозможно откатить последние изменения страницы «[[:$1]]», совершённые [[User:$2|$2]] ([[User talk:$2|обсуждение]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]),
@@ -2713,7 +2697,7 @@ $UNWATCHURL
 'protect-locked-dblock' => "Уровень защиты не может быть изменён, так как основная база данных временно заблокирована.
 Текущие установки для страницы '''$1''':",
 'protect-locked-access' => "У вашей учётной записи недостаточно прав для изменения уровня защиты страницы. Текущие установки для страницы '''$1''':",
-'protect-cascadeon' => 'Эта страница защищена в связи с тем, что она включена {{PLURAL:$1|в указанную ниже страницу, на которую|в нижеследующие страницы, на которые}} установлена каскадная защита. Вы можете изменить уровень защиты этой страницы, но это не повлияет на каскадную защиту.',
+'protect-cascadeon' => 'Эта страница защищена в связи с тем, что она включена {{PLURAL:$1|1=в указанную ниже страницу, для которой|в нижеследующие страницы, для которых}} установлена каскадная защита. Вы можете изменить уровень защиты этой страницы, но это не повлияет на каскадную защиту.',
 'protect-default' => 'Без защиты',
 'protect-fallback' => 'Разрешено только участникам с правами «$1»',
 'protect-level-autoconfirmed' => 'Разрешено только автоподтверждённым участникам',
@@ -2758,12 +2742,12 @@ $UNWATCHURL
 'undeletepage' => 'Просмотр и восстановление удалённых страниц',
 'undeletepagetitle' => "'''Ниже перечислены удалённые версии страницы [[:$1]]'''.",
 'viewdeletedpage' => 'Просмотр удалённых страниц',
-'undeletepagetext' => '{{PLURAL:$1|Следующая $1 страница была удалена|Следующие $1 страницы были удалены|Следующие $1 страниц были удалены}}, однако {{PLURAL:$1|она всё ещё находится в архиве и поэтому может быть восстановлена|они всё ещё находятся в архиве и поэтому могут быть восстановлены}}.
+'undeletepagetext' => '{{PLURAL:$1|Следующая $1 страница была удалена|Следующие $1 страниц были удалены|Следующие $1 страницы были удалены|1=Следующая страница была удалена}}, однако {{PLURAL:$1|1=она всё ещё находится в архиве и поэтому может быть восстановлена|они всё ещё находятся в архиве и поэтому могут быть восстановлены}}.
 Архив может периодически очищаться.',
 'undelete-fieldset-title' => 'Восстановить версии',
 'undeleteextrahelp' => "Для полного восстановления истории страницы оставьте все отметки пустыми и нажмите '''«{{int:undeletebtn}}»'''.
 Для частичного восстановления отметьте те версии страницы, которые нужно восстановить, и нажмите '''«{{int:undeletebtn}}»'''.",
-'undeleterevisions' => 'в архиве $1 {{PLURAL:$1|версия|версии|версий}}',
+'undeleterevisions' => '$1 {{PLURAL:$1|версия|версий|версии}} {{PLURAL:$1|помещена|помещены}} в архив',
 'undeletehistory' => 'При восстановлении страницы восстанавливается и её история правок.
 Если после удаления была создана новая страница с тем же названием, то восстановленные версии появятся в истории правок перед новыми версиями.',
 'undeleterevdel' => 'Восстановление не будет произведено, если оно приведёт к частичному удалению последней версии страницы или файла.
@@ -2775,12 +2759,11 @@ $UNWATCHURL
 'undeletebtn' => 'Восстановить',
 'undeletelink' => 'просмотреть/восстановить',
 'undeleteviewlink' => 'просмотреть',
-'undeletereset' => 'Очистить',
 'undeleteinvert' => 'Обратить выделение',
 'undeletecomment' => 'Причина:',
-'undeletedrevisions' => '$1 {{PLURAL:$1|изменение|изменения|изменений}} восстановлено',
-'undeletedrevisions-files' => '$1 {{PLURAL:$1|версия|версии|версий}} и $2 {{PLURAL:$2|файл|файла|файлов}} восстановлено',
-'undeletedfiles' => '$1 {{PLURAL:$1|файл восстановлен|файла восстановлено|файлов восстановлено}}',
+'undeletedrevisions' => '{{PLURAL:$1|восстановлено|восстановлены}} $1 {{PLURAL:$1|изменение|изменений|изменения}}',
+'undeletedrevisions-files' => 'восстановлены $1 {{PLURAL:$1|версия|версий|версии}} и $2 {{PLURAL:$2|файл|файлов|файла}}',
+'undeletedfiles' => '{{PLURAL:$1|восстановлен|восстановлены}} $1 {{PLURAL:$1|файл|файлов|файла}}',
 'cannotundelete' => 'Ошибка восстановления:
 $1',
 'undeletedpage' => "'''Страница «$1» была восстановлена.'''
@@ -2849,8 +2832,8 @@ $1',
 'isredirect' => 'страница-перенаправление',
 'istemplate' => 'включение',
 'isimage' => 'файловая ссылка',
-'whatlinkshere-prev' => '{{PLURAL:$1|предыдущая|предыдущие}} $1',
-'whatlinkshere-next' => '{{PLURAL:$1|следующая|следующие}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=предыдущая|предыдущие}} $1',
+'whatlinkshere-next' => '{{PLURAL:$1|1=следующая|следующие}} $1',
 'whatlinkshere-links' => '← ссылки',
 'whatlinkshere-hideredirs' => '$1 перенаправления',
 'whatlinkshere-hidetrans' => '$1 включения',
@@ -2863,7 +2846,6 @@ $1',
 'block' => 'Блокировка участника',
 'unblock' => 'Разблокировка участника',
 'blockip' => 'Заблокировать',
-'blockip-title' => 'Блокирование участника',
 'blockip-legend' => 'Блокировка участника',
 'blockiptext' => 'Используйте форму ниже, чтобы заблокировать возможность записи с определённого IP-адреса.
 Это может быть сделано только для предотвращения вандализма и только в соответствии с [[{{MediaWiki:Policy-url}}|правилами]].
@@ -2871,7 +2853,6 @@ $1',
 'ipadressorusername' => 'IP-адрес или имя участника:',
 'ipbexpiry' => 'Закончится через:',
 'ipbreason' => 'Причина:',
-'ipbreasonotherlist' => 'Другая причина',
 'ipbreason-dropdown' => '* Стандартные причины блокировок
 ** Вставка ложной информации
 ** Удаление содержимого страниц
@@ -2887,8 +2868,6 @@ $1',
 'ipbsubmit' => 'Заблокировать этот адрес/участника',
 'ipbother' => 'Другое время:',
 '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',
-'ipbotheroption' => 'другое',
-'ipbotherreason' => 'Другая причина / дополнение:',
 'ipbhidename' => 'Скрыть имя участника из правок и списков',
 'ipbwatchuser' => 'Добавить в список наблюдения личную страницу участника и его страницу обсуждения',
 'ipb-disableusertalk' => 'Запретить этому участнику редактировать свою страницу обсуждения во время блокировки',
@@ -2900,6 +2879,7 @@ $1',
 См. [[Special:BlockList|список заблокированных IP-адресов]] для просмотра блокировок.',
 'ipb-blockingself' => 'Вы пытаетесь заблокировать себя самого! Вы уверены, что вы хотите это сделать?',
 'ipb-confirmhideuser' => 'Вы намереваетесь заблокировать участника и скрыть его имя. Оно не будет отображаться в списках и журналах. Вы уверены, что хотите это сделать?',
+'ipb-confirmaction' => 'Если вы уверены, что вы действительно хотите сделать это, пожалуйста, поставьте ниже отметку «{{int:ipb-confirm}}».',
 'ipb-edit-dropdown' => 'Править список причин',
 'ipb-unblock-addr' => 'Разблокировать $1',
 'ipb-unblock' => 'Разблокировать участника или IP-адрес',
@@ -2926,7 +2906,7 @@ $1',
 'blocklist-reason' => 'Причина',
 'ipblocklist-submit' => 'Найти',
 'ipblocklist-localblock' => 'Локальная блокировка',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Другая блокировка|Другие блокировки}}',
 'infiniteblock' => 'бессрочно',
 'expiringblock' => 'завершится $1 в $2',
 'anononlyblock' => 'только анонимов',
@@ -2964,7 +2944,7 @@ $1',
 'ipb_hide_invalid' => 'Невозможно скрыть учётную запись, возможно, с неё сделано слишком много правок.',
 'ipb_already_blocked' => '«$1» уже заблокирован.',
 'ipb-needreblock' => '$1 уже {{GENDER:$1|заблокирован|заблокирована}}. Хотите изменить параметры блокировки?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Другая блокировка|Другие блокировки}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Другая блокировка|Другие блокировки}}',
 'unblock-hideuser' => 'Вы не можете разблокировать этого участника, так как его имя было скрыто.',
 'ipb_cant_unblock' => 'Ошибка: не найдена блокировка $1. Возможно, она уже была снята.',
 'ipb_blocked_as_range' => 'Ошибка: IP-адрес $1 был заблокирован не напрямую и не может быть разблокирован. Однако, он принадлежит к заблокированному диапазону $2, который можно разблокировать.',
@@ -2975,7 +2955,6 @@ $1',
 'sorbsreason' => 'Ваш IP-адрес числится как открытый прокси в DNSBL.',
 'sorbs_create_account_reason' => 'Ваш IP-адрес числится как открытый прокси в DNSBL. Вы не можете создать учётную запись.',
 'xffblockreason' => 'Был заблокирован IP-адрес, присутствующий в заголовке X-Forwarded-For и принадлежащий либо вам, либо используемому вами прокси-серверу. Первоначальная причина блокировки была следующей: $1',
-'cant-block-while-blocked' => 'Вы не можете блокировать других участников, пока вы сами заблокированы.',
 'cant-see-hidden-user' => 'Участник, которого вы пытаетесь заблокировать, уже заблокирован и скрыт. Поскольку у вас нет разрешения на работу по сокрытию участников, вы не можете просмотреть или изменить данную блокировку.',
 'ipbblocked' => 'Вы не можете блокировать или разблокировать других участников, так как вы сами заблокированы',
 'ipbnounblockself' => 'Вы не можете разблокировать самого себя',
@@ -3039,7 +3018,6 @@ $1',
 В этих случаях, вы будете вынуждены переместить или объединить страницы вручную, если это нужно.",
 'movearticle' => 'Переименовать страницу',
 'moveuserpage-warning' => "'''Внимание.''' Вы собираетесь переименовать страницу участника. Пожалуйста, обратите внимание, что переименована будет только страница, участник '''не''' будет переименован.",
-'movenologin' => 'Вы не представились системе',
 'movenologintext' => 'Вы должны [[Special:UserLogin|представиться системе]],
 чтобы иметь возможность переименовать страницы.',
 'movenotallowed' => 'У вас нет разрешения переименовывать страницы.',
@@ -3056,19 +3034,17 @@ $1',
 'articleexists' => 'Страница с таким именем уже существует или указанное вами название недопустимо.
 Пожалуйста, выберите другое название.',
 'cantmove-titleprotected' => 'Невозможно переименовать страницу, так как новое название входит в список запрещённых.',
-'talkexists' => "'''Страница была переименована, но страница обсуждения не может быть переименована, потому что страница с таким названием уже существует. Пожалуйста, объедините их вручную.'''",
-'movedto' => 'переименована в',
 'movetalk' => 'Переименовать соответствующую страницу обсуждения',
 'move-subpages' => 'Переименовать подстраницы (до $1)',
 'move-talk-subpages' => 'Переименовать подстраницы страницы обсуждения (до $1)',
 'movepage-page-exists' => 'Страница $1 уже существует и не может быть автоматически перезаписана.',
 'movepage-page-moved' => 'Страница $1 была переименована в $2.',
 'movepage-page-unmoved' => 'Страница $1 не может быть переименована в $2.',
-'movepage-max-pages' => '$1 {{PLURAL:$1|страница была переименована|страницы было переименовано|страниц было переименовано}} — это максимум, больше страниц нельзя переименовать автоматически.',
+'movepage-max-pages' => '{{PLURAL:$1|Была переименована|Были переименованы|Было переименовано}} $1 {{PLURAL:$1|страница|страниц|страницы}} — это максимум; большее число страниц автоматически переименовать нельзя.',
 'movelogpage' => 'Журнал переименований',
 'movelogpagetext' => 'Ниже представлен список переименованных страниц.',
-'movesubpage' => '{{PLURAL:$1|Подстраница|Подстраницы}}',
-'movesubpagetext' => 'У этой страницы $1 {{PLURAL:$1|подстраница|подстраницы|подстраниц}}.',
+'movesubpage' => '{{PLURAL:$1|1=Подстраница|Подстраницы}}',
+'movesubpagetext' => 'У этой страницы $1 {{PLURAL:$1|подстраница|подстраниц|подстраницы}}.',
 'movenosubpage' => 'У этой страницы нет подстраниц.',
 'movereason' => 'Причина:',
 'revertmove' => 'возврат',
@@ -3170,9 +3146,9 @@ $2',
 'import-comment' => 'Примечание:',
 'importtext' => 'Пожалуйста, экспортируйте страницу из исходной вики, используя [[Special:Export|соответствующий инструмент]]. Сохраните файл на диск, а затем загрузите его сюда.',
 'importstart' => 'Импортирование страниц…',
-'import-revision-count' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
+'import-revision-count' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
 'importnopages' => 'Нет страниц для импортирования.',
-'imported-log-entries' => '{{PLURAL:$1|Ð\98мпоÑ\80Ñ\82иÑ\80ована $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\98мпоÑ\80Ñ\82иÑ\80овано $1 Ð·Ð°Ð¿Ð¸Ñ\81и|Ð\98мпоÑ\80Ñ\82иÑ\80овано $1 Ð·Ð°Ð¿Ð¸Ñ\81ей}} журнала.',
+'imported-log-entries' => '{{PLURAL:$1|Ð\98мпоÑ\80Ñ\82иÑ\80ована $1 Ð·Ð°Ð¿Ð¸Ñ\81Ñ\8c\98мпоÑ\80Ñ\82иÑ\80овано $1 Ð·Ð°Ð¿Ð¸Ñ\81ей|Ð\98мпоÑ\80Ñ\82иÑ\80ованÑ\8b $1 Ð·Ð°Ð¿Ð¸Ñ\81и}} журнала.',
 'importfailed' => 'Не удалось импортировать: $1',
 'importunknownsource' => 'Неизвестный тип импортируемой страницы',
 'importcantopen' => 'Невозможно открыть импортируемый файл',
@@ -3198,7 +3174,7 @@ $2',
 'import-error-special' => 'Страница «$1» не была импортирована, так как она относится к особому пространству имён, не позволяющему создавать страницы.',
 'import-error-invalid' => 'Страница «$1» не была импортирована из-за недопустимого названия.',
 'import-error-unserialize' => 'Версия $2 страницы «$1» не может быть структурирована (десериализована). Получено сообщение, что в этой версии использована модель содержимого $3,  сериализуемая в формате $4.',
-'import-options-wrong' => '{{PLURAL:$2|Неверная опция|Неверные опции}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Неверная опция|Неверные опции}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Указанное название корневой страницы некорректно.',
 'import-rootpage-nosubpage' => 'В пространстве имён указанной корневой страницы «$1» подстраницы запрещены.',
 
@@ -3206,9 +3182,9 @@ $2',
 'importlogpage' => 'Журнал импорта',
 'importlogpagetext' => 'Импортирование администраторами страниц с историей изменений из других вики.',
 'import-logentry-upload' => '«[[$1]]» — импорт из файла',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}}',
+'import-logentry-upload-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}}',
 'import-logentry-interwiki' => '«$1» — межвики импорт',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ии|веÑ\80Ñ\81ий}} из $2',
+'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|веÑ\80Ñ\81иÑ\8f|веÑ\80Ñ\81ий|веÑ\80Ñ\81ии}} из $2',
 
 # JavaScriptTest
 'javascripttest' => 'Проверка JavaScript',
@@ -3319,14 +3295,14 @@ $2',
 The wiki server can't provide data in a format your client can read.",
 
 # Attribution
-'anonymous' => '{{PLURAL:$1|Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Анонимный участник|Анонимные участники}} {{grammar:genitive|{{SITENAME}}}}',
 'siteuser' => '{{GENDER:$2|участник|участница}} {{grammar:genitive|{{SITENAME}}}} $1',
 'anonuser' => 'анонимный участник {{grammar:genitive|{{SITENAME}}}} $1',
 'lastmodifiedatby' => 'Эта страница последний раз была изменена $1 в $2, автор изменения — $3.',
 'othercontribs' => 'В создании приняли участие: $1.',
 'others' => 'другие',
-'siteusers' => '{{PLURAL:$2|участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=участник|участники}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=анонимный участник|анонимные участники}} {{grammar:genitive|{{SITENAME}}}} $1',
 'creditspage' => 'Благодарности',
 'nocredits' => 'Нет списка участников для этой статьи',
 
@@ -3364,7 +3340,7 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-redirects-name' => 'Количество перенаправлений на эту страницу',
 'pageinfo-redirects-value' => '$1',
 'pageinfo-subpages-name' => 'Подстраницы данной страницы',
-'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправление|перенаправления|перенаправлений}}; $3 {{PLURAL:$3|обычная|обычные|обычных}})',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|перенаправление|перенаправлений|перенаправления}}; $3 {{PLURAL:$3|обычная|обычных|обычные}})',
 'pageinfo-firstuser' => 'Создатель страницы',
 'pageinfo-firsttime' => 'Дата создания страницы',
 'pageinfo-lastuser' => 'Последний редактор',
@@ -3373,10 +3349,10 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-authors' => 'Общее число различных авторов',
 'pageinfo-recent-edits' => 'Правок за последнее время (в течение $1)',
 'pageinfo-recent-authors' => 'Уникальных авторов за последнее время',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магическое слово|Магические слова}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Скрытая категория|Скрытых категорий}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Шаблон|Шаблонов}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|Включаемые страницы|Включаемых страниц}} ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Волшебное слово|Волшебные слова}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Скрытая категория|Скрытых категорий}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Шаблон|Шаблонов}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|1=Включаемая страница|Включаемых страниц}} ($1)',
 'pageinfo-toolboxlink' => 'Сведения о странице',
 'pageinfo-redirectsto' => 'Перенаправление',
 'pageinfo-redirectsto-info' => 'сведения',
@@ -3434,29 +3410,29 @@ $1',
 'imagemaxsize' => "Ограничение на размер изображения:<br />''(для страницы описания файла)''",
 'thumbsize' => 'Размер уменьшенной версии изображения:',
 'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|страница|страницы|страниц}}',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|страница|страниц|страницы}}',
 'file-info' => 'размер файла: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3, MIME-тип: $4',
-'file-info-size-pages' => '$1 × $2 пикселей, размер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|страница|страницы|страниц}}',
+'file-info-size' => '$1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пикселей, размер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|страница|страниц|страницы}}',
 'file-nohires' => 'Нет версии с бо́льшим разрешением.',
-'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
-'svg-long-desc-animated' => 'Анимированный SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}, размер файла: $3',
+'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3',
+'svg-long-desc-animated' => 'Анимированный SVG-файл, номинально $1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}, размер файла: $3',
 'svg-long-error' => 'неправильный SVG-файл: $1',
 'show-big-image' => 'Исходный файл',
 'show-big-image-preview' => 'Размер при предпросмотре: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Другое разрешение|Другие разрешения}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Другое разрешение|Другие разрешения}}: $1.',
 'show-big-image-size' => '$1 × $2 пикселей',
 'file-info-gif-looped' => 'закольцованный',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñ\84Ñ\80ейм|Ñ\84Ñ\80ейма|Ñ\84Ñ\80еймов}}',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñ\84Ñ\80ейм|Ñ\84Ñ\80еймов|Ñ\84Ñ\80ейма}}',
 'file-info-png-looped' => 'закольцованный',
-'file-info-png-repeat' => 'проигрывается $1 {{PLURAL:$1|раз|раза|раз}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадÑ\80|кадÑ\80а|кадÑ\80ов}}',
+'file-info-png-repeat' => 'проигрывается $1 {{PLURAL:$1|раз|раз|раза}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадÑ\80|кадÑ\80ов|кадÑ\80а}}',
 'file-no-thumb-animation' => "'''Примечание. По техническим причинам миниатюры этого файла не будет анимироваться.'''",
 'file-no-thumb-animation-gif' => "'''Примечание. По техническим причинам миниатюры подобных GIF-изображений высокого разрешения не анимируются.'''",
 
 # Special:NewFiles
 'newimages' => 'Галерея новых файлов',
-'imagelisttext' => "Ниже представлен список из '''$1''' {{PLURAL:$1|файла|файлов|файлов}}, отсортированных $2.",
+'imagelisttext' => "Ниже представлен список из '''$1''' {{PLURAL:$1|файла|файлов}}, отсортированных $2.",
 'newimages-summary' => 'На этой служебной странице показаны недавно загруженные файлы.',
 'newimages-legend' => 'Фильтр',
 'newimages-label' => 'Имя файла (или его часть):',
@@ -3472,20 +3448,20 @@ $1',
 'minutes-abbrev' => '$1 м',
 'hours-abbrev' => '$1 ч',
 'days-abbrev' => '$1 д',
-'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунды|$1 секунд}}',
-'minutes' => '{{PLURAL:$1|$1 минута|$1 минуты|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 Ñ\87аÑ\81|$1 Ñ\87аÑ\81а|$1 Ñ\87аÑ\81ов}}',
-'days' => '{{PLURAL:$1|$1 день|$1 дня|$1 дней}}',
-'weeks' => '{{PLURAL:$1|$1 неделя|$1 недели|$1 недель}}',
-'months' => '{{PLURAL:$1|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86а|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86ев}}',
-'years' => '{{PLURAL:$1|$1 Ð³Ð¾Ð´|$1 Ð³Ð¾Ð´Ð°|$1 Ð»ÐµÑ\82}}',
+'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунд|$1 секунды}}',
+'minutes' => '{{PLURAL:$1|$1 минута|$1 минут|$1 минуты}}',
+'hours' => '{{PLURAL:$1|$1 Ñ\87аÑ\81|$1 Ñ\87аÑ\81ов|$1 Ñ\87аÑ\81а}}',
+'days' => '{{PLURAL:$1|$1 день|$1 дней|$1 дня}}',
+'weeks' => '{{PLURAL:$1|$1 неделя|$1 недель|$1 недели}}',
+'months' => '{{PLURAL:$1|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86ев|$1 Ð¼ÐµÑ\81Ñ\8fÑ\86а}}',
+'years' => '{{PLURAL:$1|$1 Ð³Ð¾Ð´|$1 Ð»ÐµÑ\82|$1 Ð³Ð¾Ð´Ð°}}',
 'ago' => '$1 назад',
 'just-now' => 'только что',
 
 # Human-readable timestamps
-'hours-ago' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81а|Ñ\87аÑ\81ов}} назад',
-'minutes-ago' => '$1 {{PLURAL:$1|минуту|минуты|минут}} назад',
-'seconds-ago' => '$1 {{PLURAL:$1|секунду|секунды|секунд}} назад',
+'hours-ago' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81ов|Ñ\87аÑ\81а}} назад',
+'minutes-ago' => '$1 {{PLURAL:$1|минуту|минут|минуты}} назад',
+'seconds-ago' => '$1 {{PLURAL:$1|секунду|секунд|секунды}} назад',
 'monday-at' => 'в понедельник в $1',
 'tuesday-at' => 'во вторник в $1',
 'wednesday-at' => 'в среду в $1',
@@ -3741,7 +3717,7 @@ $1',
 'exif-exposureprogram-7' => 'Портретный режим (для снимков на близком расстоянии, с фоном не в фокусе)',
 'exif-exposureprogram-8' => 'Пейзажный режим (для пейзажных снимков, с фоном в фокусе)',
 
-'exif-subjectdistance-value' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}}',
+'exif-subjectdistance-value' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}}',
 
 'exif-meteringmode-0' => 'Неизвестно',
 'exif-meteringmode-1' => 'Средний',
@@ -3843,8 +3819,8 @@ $1',
 'exif-gpslongitude-w' => 'западной долготы',
 
 # Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}} над уровнем моря',
-'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80а|меÑ\82Ñ\80ов}} ниже уровня моря',
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}} над уровнем моря',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|меÑ\82Ñ\80|меÑ\82Ñ\80ов|меÑ\82Ñ\80а}} ниже уровня моря',
 
 'exif-gpsstatus-a' => 'Измерение не закончено',
 'exif-gpsstatus-v' => 'Готов к передаче данных',
@@ -3915,15 +3891,10 @@ $1',
 'exif-urgency-high' => 'Высокая ($1)',
 'exif-urgency-other' => 'Определённый пользователем приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Редактировать этот файл, используя внешнюю программу',
-'edit-externally-help' => '(подробнее см. в [https://www.mediawiki.org/wiki/Manual:External_editors руководстве по установке])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'все',
 'namespacesall' => 'все',
 'monthsall' => 'все',
-'limitall' => 'все',
 
 # Email address confirmation
 'confirmemail' => 'Подтверждение адреса электронной почты',
@@ -3946,7 +3917,6 @@ $1',
 'confirmemail_needlogin' => 'Вы должны $1 для подтверждения вашего адреса электронной почты.',
 'confirmemail_success' => 'Ваш адрес электронной почты подтверждён.',
 'confirmemail_loggedin' => 'Ваш адрес электронной почты подтверждён.',
-'confirmemail_error' => 'Во время процедуры подтверждения адреса электронной почты произошла ошибка.',
 'confirmemail_subject' => '{{SITENAME}}:Запрос на подтверждение адреса электронной почты',
 'confirmemail_body' => 'Кто-то (возможно вы) с IP-адресом $1 зарегистрировал
 на сервере проекта {{SITENAME}} учётную запись «$2»,
@@ -4035,6 +4005,11 @@ $5
 'imgmultigo' => 'Перейти!',
 'imgmultigoto' => 'Перейти на страницу $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(язык по умолчанию)',
+'img-lang-info' => 'Показать это изображение на языке $1 $2',
+'img-lang-go' => 'Применить',
+
 # Table pager
 'ascending_abbrev' => 'возр',
 'descending_abbrev' => 'убыв',
@@ -4073,11 +4048,11 @@ $5
 'livepreview-error' => 'Не удалось установить соединение: $1 «$2». Попробуйте воспользоваться обычным предпросмотром.',
 
 # Friendlier slave lag warnings
-'lag-warn-normal' => 'Изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунды|секунд}} назад, могут быть не показаны в этом списке.',
-'lag-warn-high' => 'Из-за большого отставания в синхронизации серверов баз данных изменения, сделанные менее чем $1 {{PLURAL:$1|секунду|секунды|секунд}} назад, могут быть не показаны в этом списке.',
+'lag-warn-normal' => 'Изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад, могут не отображаться в этом списке.',
+'lag-warn-high' => 'Из-за большого отставания в синхронизации серверов баз данных изменения, сделанные менее {{PLURAL:$1|$1 секунды|$1 секунд|1=секунды}} назад, могут не отображаться в этом списке.',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Ð\92аÑ\88 Ñ\81пиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f Ñ\81одеÑ\80жиÑ\82 $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}, не считая страниц обсуждений.',
+'watchlistedit-numitems' => 'Ð\92аÑ\88 Ñ\81пиÑ\81ок Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f Ñ\81одеÑ\80жиÑ\82 $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}, не считая страниц обсуждений.',
 'watchlistedit-noitems' => 'Ваш список наблюдения не содержит записей.',
 'watchlistedit-normal-title' => 'Изменение списка наблюдения',
 'watchlistedit-normal-legend' => 'Удаление записей из списка наблюдения',
@@ -4085,7 +4060,7 @@ $5
 Для удаления записей отметьте соответствующие позиции и нажмите кнопку «{{int:Watchlistedit-normal-submit}}».
 Вы также можете [[Special:EditWatchlist/raw|править список как текст]].',
 'watchlistedit-normal-submit' => 'Удалить записи',
-'watchlistedit-normal-done' => 'Ð\98з Ð²Ð°Ñ\88его Ñ\81пиÑ\81ка Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f {{PLURAL:$1|бÑ\8bла Ñ\83далена|бÑ\8bли Ñ\83даленÑ\8b|бÑ\8bло Ñ\83далено}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
+'watchlistedit-normal-done' => 'Ð\98з Ð²Ð°Ñ\88его Ñ\81пиÑ\81ка Ð½Ð°Ð±Ð»Ñ\8eдениÑ\8f {{PLURAL:$1|бÑ\8bла Ñ\83далена|бÑ\8bло Ñ\83далено|бÑ\8bли Ñ\83даленÑ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
 'watchlistedit-raw-title' => 'Редактирование списка наблюдения как текста',
 'watchlistedit-raw-legend' => 'Редактирование списка наблюдения',
 'watchlistedit-raw-explain' => 'Ниже перечислены страницы, находящиеся в вашем списке наблюдения. Вы можете изменять этот список, добавляя и удаляя из него строки с названиями, по одному названию на строке.
@@ -4094,8 +4069,8 @@ $5
 'watchlistedit-raw-titles' => 'Записи:',
 'watchlistedit-raw-submit' => 'Сохранить список',
 'watchlistedit-raw-done' => 'Ваш список наблюдения сохранён.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|Ð\91Ñ\8bла Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð°|Ð\91Ñ\8bли Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ\8b\91Ñ\8bло Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|Ð\91Ñ\8bла Ñ\83далена|Ð\91Ñ\8bли Ñ\83даленÑ\8b\91Ñ\8bло Ñ\83далено}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81и|запиÑ\81ей}}:',
+'watchlistedit-raw-added' => '{{PLURAL:$1|Ð\91Ñ\8bла Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð°|Ð\91Ñ\8bло Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¾|Ð\91Ñ\8bли Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|Ð\91Ñ\8bла Ñ\83далена|Ð\91Ñ\8bло Ñ\83далено|Ð\91Ñ\8bли Ñ\83даленÑ\8b}} $1 {{PLURAL:$1|запиÑ\81Ñ\8c|запиÑ\81ей|запиÑ\81и}}:',
 
 # Watchlist editing tools
 'watchlisttools-view' => 'Изменения на страницах из списка',
@@ -4183,7 +4158,17 @@ $5
 'version-hook-name' => 'Имя перехватчика',
 'version-hook-subscribedby' => 'Подписан на',
 'version-version' => '(Версия $1)',
-'version-license' => 'Лицензия',
+'version-license' => 'Лицензия MediaWiki',
+'version-ext-license' => 'Лицензия',
+'version-ext-colheader-name' => 'Расширение',
+'version-ext-colheader-version' => 'Версия',
+'version-ext-colheader-license' => 'Лицензия',
+'version-ext-colheader-description' => 'Описание',
+'version-ext-colheader-credits' => 'Авторы',
+'version-license-title' => 'Лицензия для $1',
+'version-license-not-found' => 'Для этого расширения нет подробных сведений о лицензии.',
+'version-credits-title' => 'Список авторов для $1',
+'version-credits-not-found' => 'Для этого расширения нет подробных сведений об авторах.',
 'version-poweredby-credits' => "Эта вики работает на движке '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'другие',
 'version-poweredby-translators' => 'переводчики translatewiki.net',
@@ -4203,14 +4188,14 @@ MediaWiki распространяется в надежде, что она бу
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Путь к скрипту]',
 
 # Special:Redirect
-'redirect' => 'Перенаправление с файла, участника или идентификатора версии',
+'redirect' => 'Перенаправление с файла, участника, страницы или идентификатора версии',
 'redirect-legend' => 'Перенаправление на файл или страницу',
-'redirect-summary' => 'Эта специальная страница перенаправляет на файл (с имени файла), страницу (с идентификатора версии) или страницу участника (с числового идентификатора участника).
-Использование: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Эта служебная страница перенаправляет на файл (с имени файла), страницу (с идентификатора версии или страницы) или страницу участника (с числового идентификатора участника). Использование: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] или [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Перейти',
 'redirect-lookup' => 'Поиск:',
 'redirect-value' => 'Значение:',
 'redirect-user' => 'Идентификатор участника',
+'redirect-page' => 'Идентификатор страницы',
 'redirect-revision' => 'Версия страницы',
 'redirect-file' => 'Название файла',
 'redirect-not-exists' => 'Значение не найдено',
@@ -4221,9 +4206,9 @@ MediaWiki распространяется в надежде, что она бу
 'fileduplicatesearch-legend' => 'Поиск дубликатов',
 'fileduplicatesearch-filename' => 'Имя файла:',
 'fileduplicatesearch-submit' => 'Найти',
-'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселя|пикселей}}<br />Размер файла: $3<br />MIME-тип: $4',
+'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пиксель|пикселей|пикселя}}<br />Размер файла: $3<br />MIME-тип: $4',
 'fileduplicatesearch-result-1' => 'Файл «$1» не имеет идентичных дубликатов.',
-'fileduplicatesearch-result-n' => 'Файл Â«$1» Ð¸Ð¼ÐµÐµÑ\82 $2 {{PLURAL:$2|иденÑ\82иÑ\87нÑ\8bй Ð´Ñ\83бликаÑ\82|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82а|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82ов}}.',
+'fileduplicatesearch-result-n' => 'Файл Â«$1» Ð¸Ð¼ÐµÐµÑ\82 $2 {{PLURAL:$2|иденÑ\82иÑ\87нÑ\8bй Ð´Ñ\83бликаÑ\82|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82ов|иденÑ\82иÑ\87нÑ\8bÑ\85 Ð´Ñ\83бликаÑ\82а}}.',
 'fileduplicatesearch-noresults' => 'Не найден файл с именем «$1».',
 
 # Special:SpecialPages
@@ -4262,7 +4247,7 @@ MediaWiki распространяется в надежде, что она бу
 'tags' => 'Действующие метки изменений',
 'tag-filter' => 'Фильтр [[Special:Tags|меток]]:',
 'tag-filter-submit' => 'Отфильтровать',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Метка|Метки}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Метка|Метки}}]]: $2)',
 'tags-title' => 'Метки',
 'tags-intro' => 'На этой странице приведён список меток, которыми программное обеспечение отмечает правки, а также значения этих меток.',
 'tags-tag' => 'Имя метки',
@@ -4273,11 +4258,10 @@ MediaWiki распространяется в надежде, что она бу
 'tags-active-yes' => 'Да',
 'tags-active-no' => 'Нет',
 'tags-edit' => 'править',
-'tags-hitcount' => '$1 {{PLURAL:$1|изменение|изменения|изменений}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|изменение|изменений|изменения}}',
 
 # Special:ComparePages
 'comparepages' => 'Сравнение страниц',
-'compare-selector' => 'Сравнение версий страниц',
 'compare-page1' => 'Первая страница',
 'compare-page2' => 'Вторая страница',
 'compare-rev1' => 'Первая версия',
@@ -4319,13 +4303,13 @@ MediaWiki распространяется в надежде, что она бу
 # New logging system
 'logentry-delete-delete' => '$1 {{GENDER:$2|удалил|удалила}} страницу $3',
 'logentry-delete-restore' => '$1 {{GENDER:$2|восстановил|восстановила}} страницу $3',
-'logentry-delete-event' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
-'logentry-delete-revision' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
+'logentry-delete-event' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей|1=записи}} журнала для $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий|1=версии}} страницы $3: $4',
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|изменил|изменила}} видимость записей журнала $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|изменил|изменила}} видимость версий на странице $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|подавил|подавила}} страницу $3',
-'logentry-suppress-event' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей}} журнала на $3: $4',
-'logentry-suppress-revision' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий}} на странице $3: $4',
+'logentry-suppress-event' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 записи|$5 записей|1=записи}} журнала для $3: $4',
+'logentry-suppress-revision' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость {{PLURAL:$5|$5 версии|$5 версий|1=версии}} для  странице $3: $4',
 'logentry-suppress-event-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость записей журнала $3',
 'logentry-suppress-revision-legacy' => '$1 скрытно {{GENDER:$2|изменил|изменила}} видимость версий на странице $3',
 'revdelete-content-hid' => 'содержание скрыто',
@@ -4376,10 +4360,10 @@ MediaWiki распространяется в надежде, что она бу
 'api-error-badaccess-groups' => 'Вам не разрешено загружать файлы в эту вики.',
 'api-error-badtoken' => 'Внутренняя ошибка:  некорректный токен.',
 'api-error-copyuploaddisabled' => 'Загрузка по URL-адресу отключена на этом сервере.',
-'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|файла|файлов}}, которые уже были удалены.',
-'api-error-duplicate-popup-title' => 'Дубликат {{PLURAL:$1|файла|файлов}}',
+'api-error-duplicate' => 'Уже {{PLURAL:$1|1=существует [$2 другой файл]|существуют [$2 другие файлы]}} с таким же содержимым',
+'api-error-duplicate-archive' => 'Раньше на сайте {{PLURAL:$1|1=уже был [$2 файл]|были [$2 файлы]}} с точно таким же содержанием, но {{PLURAL:$1|1=он был удалён|они были удалены}}.',
+'api-error-duplicate-archive-popup-title' => 'Дубликаты {{PLURAL:$1|1=файла|файлов}}, которые уже были удалены.',
+'api-error-duplicate-popup-title' => 'Дубликат {{PLURAL:$1|1=файла|файлов}}.',
 'api-error-empty-file' => 'Отправленный вами файл пуст.',
 'api-error-emptypage' => 'Не допускается создание новых пустых страниц.',
 'api-error-fetchfileerror' => 'Внутренняя ошибка: что-то пошло не так при получении файла.',
@@ -4388,7 +4372,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|1=запрещённый тип файла|запрещённые типы файлов}}. {{PLURAL:$3|1=Разрешённый тип файлов —|Разрешённые типы файлов:}} $2.',
 'api-error-filetype-missing' => 'У этого файла отсутствует расширение.',
 'api-error-hookaborted' => 'Изменение, которые вы пытались сделать, прервано обработчиком расширения.',
 'api-error-http' => 'Внутренняя ошибка: не удаётся подключиться к серверу.',
@@ -4405,6 +4389,7 @@ MediaWiki распространяется в надежде, что она бу
 'api-error-overwrite' => 'Не допускается замена существующего файла.',
 'api-error-stashfailed' => 'Внутренняя ошибка: сервер не смог сохранить временный файл.',
 'api-error-publishfailed' => 'Внутренняя ошибка: сервер не смог сохранить временный файл.',
+'api-error-stasherror' => 'При загрузке файла в хранилище произошла ошибка.',
 'api-error-timeout' => 'Сервер не отвечает в течение ожидаемого времени.',
 'api-error-unclassified' => 'Произошла неизвестная ошибка',
 'api-error-unknown-code' => 'Неизвестная ошибка: «$1»',
@@ -4415,31 +4400,31 @@ MediaWiki распространяется в надежде, что она бу
 'api-error-verification-error' => 'Возможно, этот файл повреждён или имеет неправильное расширение.',
 
 # Durations
-'duration-seconds' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
-'duration-minutes' => '$1 {{PLURAL:$1|минута|минуты|минут}}',
-'duration-hours' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81а|Ñ\87аÑ\81ов}}',
-'duration-days' => '$1 {{PLURAL:$1|день|дня|дней}}',
-'duration-weeks' => '$1 {{PLURAL:$1|неделя|недели|недель}}',
-'duration-years' => '$1 {{PLURAL:$1|год|года|леÑ\82}}',
-'duration-decades' => '$1 {{PLURAL:$1|десятилетие|десятилетия|десятилетий}}',
-'duration-centuries' => '$1 {{PLURAL:$1|век|века|веков}}',
-'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетия|тысячелетий}}',
+'duration-seconds' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минута|минут|минуты}}',
+'duration-hours' => '$1 {{PLURAL:$1|Ñ\87аÑ\81\87аÑ\81ов|Ñ\87аÑ\81а}}',
+'duration-days' => '$1 {{PLURAL:$1|день|дней|дня}}',
+'duration-weeks' => '$1 {{PLURAL:$1|неделя|недель|недели}}',
+'duration-years' => '$1 {{PLURAL:$1|год|леÑ\82|года}}',
+'duration-decades' => '$1 {{PLURAL:$1|десятилетие|десятилетий|десятилетия}}',
+'duration-centuries' => '$1 {{PLURAL:$1|век|веков|века}}',
+'duration-millennia' => '$1 {{PLURAL:$1|тысячелетие|тысячелетий|тысячелетия}}',
 
 # Image rotation
-'rotate-comment' => 'Ð\98зобÑ\80ажение Ð¿Ð¾Ð²Ñ\91Ñ\80нÑ\83Ñ\82о Ð½Ð° $1 Ð³Ñ\80адÑ\83Ñ\81{{PLURAL:$1||а|ов}} по часовой стрелке',
+'rotate-comment' => 'Ð\98зобÑ\80ажение Ð¿Ð¾Ð²Ñ\91Ñ\80нÑ\83Ñ\82о Ð½Ð° $1 Ð³Ñ\80адÑ\83Ñ\81{{PLURAL:$1||ов|а}} по часовой стрелке',
 
 # Limit report
 'limitreport-title' => 'Данные анализатора:',
 'limitreport-cputime' => 'Использование времени процессора',
-'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
 'limitreport-walltime' => 'Использование в режиме реального времени',
-'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунды|секунд}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунд|секунды}}',
 'limitreport-ppvisitednodes' => 'Количество узлов, посещённых препроцессором',
 'limitreport-ppgeneratednodes' => 'Количество сгенерированных препроцессором узлов',
 'limitreport-postexpandincludesize' => 'Размер раскрытых включений',
-'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82а|байÑ\82ов}}',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82ов|байÑ\82а}}',
 'limitreport-templateargumentsize' => 'Размер аргумента шаблона',
-'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82а|байÑ\82ов}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байÑ\82|байÑ\82ов|байÑ\82а}}',
 'limitreport-expansiondepth' => 'Наибольшая глубина расширения',
 'limitreport-expensivefunctioncount' => 'Количество «дорогих» функций анализатора',
 
@@ -4453,10 +4438,14 @@ MediaWiki распространяется в надежде, что она бу
 'expand_templates_input' => 'Входной текст:',
 'expand_templates_output' => 'Результат',
 'expand_templates_xml_output' => 'XML вывод',
+'expand_templates_html_output' => 'HTML-вывод',
 'expand_templates_ok' => 'OK',
 'expand_templates_remove_comments' => 'Удалить комментарии',
 'expand_templates_remove_nowiki' => 'Подавлять теги <nowiki> в результате',
 'expand_templates_generate_xml' => 'Показать дерево разбора XML',
+'expand_templates_generate_rawhtml' => 'Показать HTML',
 'expand_templates_preview' => 'Предпросмотр',
 
+# Unknown messages
+'uploadinvalidxml' => 'XML в загруженном файле не может быть проанализирован.',
 );
index f99444e..3a6041d 100644 (file)
@@ -51,7 +51,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Планый_тітул' ),
        'Blankpage'                 => array( 'Порожня_сторінка' ),
        'Block'                     => array( 'Заблоковати' ),
-       'Blockme'                   => array( 'Заблокуйте_ня' ),
        'Booksources'               => array( 'Жрідла_книг' ),
        'BrokenRedirects'           => array( 'Розорваны_напрямлїня' ),
        'Categories'                => array( 'Катеґорії' ),
@@ -63,7 +62,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Створити_конто' ),
        'Deadendpages'              => array( 'Сторінкы_без_одказів' ),
        'DeletedContributions'      => array( 'Вымазаный_вклад' ),
-       'Disambiguations'           => array( 'Неєднозначны_одказы' ),
        'DoubleRedirects'           => array( 'Подвійны_напрямлїня' ),
        'EditWatchlist'             => array( 'Правити_список_мерькованя' ),
        'Emailuser'                 => array( 'Писмо_хоснователёви' ),
@@ -140,7 +138,6 @@ $messages = array(
 'tog-minordefault' => 'Імпліцітно позначіти вшыткы зміны як малы',
 'tog-previewontop' => 'Вказовати нагляд перед окном едітованя  (не за ним)',
 'tog-previewonfirst' => 'Вказати нагляд при першій едітації',
-'tog-nocache' => 'Выпнути кешованя сторінок бровсером',
 'tog-enotifwatchlistpages' => 'Послати електронічну пошту, кідь ся змінила сторінка або файл з мого списку слїдованя',
 'tog-enotifusertalkpages' => 'Послати електронічну пошту при змінї моёй діскузной сторінкы',
 'tog-enotifminoredits' => 'Послати електронічну пошту і про меншы едітованя сторінок і файлів',
@@ -275,7 +272,6 @@ $messages = array(
 'qbedit' => 'Едітовати',
 'qbpageoptions' => 'Тота сторінка',
 'qbmyoptions' => 'Мої сторінкы',
-'qbspecialpages' => 'Шпеціалны сторінкы',
 'faq' => 'Часты звідованя',
 'faqpage' => 'Project:Часты звідованя',
 
@@ -491,9 +487,6 @@ $1',
 'perfcached' => 'Слїдуючі дата суть взяты з кешу і не мусять быти актуалны. Кеш може обсяговати не веце як {{PLURAL:$1|єден резултат|$1 резултаты|$1 резултатів}}.',
 'perfcachedts' => 'Слїдуючі дата суть взяты з кешу, яка была остатнїй раз актуалізована $1. Кеш може обсяговати не веце як {{PLURAL:$4|єден резултат|$4 резултаты|$4 резултатів}}.',
 'querypage-no-updates' => 'Зміны той сторінкы заборонены. Дата нынї не можуть быти обновлены.',
-'wrong_wfQuery_params' => 'Неправилны параметры функцій wfQuery()<br />
-Функція: $1<br />
-Запрос: $2',
 'viewsource' => 'Видїти код',
 'viewsource-title' => 'Видїти жрідло сторінкы $1',
 'actionthrottled' => 'Акція была придушена',
@@ -667,7 +660,7 @@ $2',
 'user-mail-no-body' => 'Спроба послати порожнїй або барз куртый імейл.',
 
 # Change password dialog
-'resetpass' => 'Змінити гесло',
+'changepassword' => 'Змінити гесло',
 'resetpass_announce' => 'Приголошуєте ся дочасным геслом, котре было послане електронічнов поштов. Про закончіня приголошіня треба задати нове гесло ту:',
 'resetpass_header' => 'Зміна гесла',
 'oldpassword' => 'Старе гесло:',
@@ -1044,10 +1037,6 @@ $3 зазначів тоту причіну: ''$2''",
 'revisiondelete' => 'Вылучіти/обновити ревізії',
 'revdelete-nooldid-title' => 'Хыбна цілёва ревізія',
 'revdelete-nooldid-text' => 'Не зволили сьте ревізії, на котрых хочете тоту функцію выконати.',
-'revdelete-nologtype-title' => 'Нестановленый тіп запису',
-'revdelete-nologtype-text' => '{{GENDER:|Не становив|Не становила|Не становили}} сьте книгу протоколовачіх записів, на котрых ся має операція выконати.',
-'revdelete-nologid-title' => 'Неплатный протоколовачій запис',
-'revdelete-nologid-text' => 'Будь сьте не зазначіли цілёвый запис в протоколї або даный запис не екзістує.',
 'revdelete-no-file' => 'Зазначеный файл не єствує.',
 'revdelete-show-file-confirm' => 'На певно собі хочете посмотрити вылучену ревізію файлу „<nowiki>$1</nowiki>“ з $2, $3?',
 'revdelete-show-file-submit' => 'Гей',
@@ -1082,8 +1071,6 @@ $1",
 'logdelete-failure' => "'''Не вдало ся наставити видимость протоколу.'''
 $1",
 'revdel-restore' => 'Змінити видимость',
-'revdel-restore-deleted' => 'вылучены ревізії',
-'revdel-restore-visible' => 'видимы ревізії',
 'pagehist' => 'Історія сторінкы',
 'deletedhist' => 'Вымазана історія',
 'revdelete-hide-current' => 'Хыба сховаваня положкы з $1 $2: їднать ся о сучасну ревізію.
@@ -1160,12 +1147,8 @@ $1",
 # Search results
 'searchresults' => 'Резултаты гляданя',
 'searchresults-title' => 'Резултаты гляданя "$1"',
-'searchresulttext' => 'Про детайлнїшы інформації про гляданя у проєктї, смоть [[{{MediaWiki:Helppage}}|сторінка помочі]]',
-'searchsubtitle' => 'Глядали сьте «[[:$1]]» ([[Special:Prefixindex/$1|вшыткы сторінкы, што ся зачінають на «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|вшыткы сторінкы, што мають одказ на «$1»]])',
-'searchsubtitleinvalid' => "Глядали сте '''$1'''",
 'toomanymatches' => 'Пожадавцї одповідать дуже много згод, спробуйте іншый запыт.',
 'titlematches' => 'Сторінкы з одповідаючов назвов',
-'notitlematches' => 'Нїт згоды в назвах сторінок',
 'textmatches' => 'Сторінкы з одповідаючім текстом',
 'notextmatches' => 'Немає згоду в текстах сторінок',
 'prevn' => '{{PLURAL:$1|попередня $1|попереднї $1|попереднїх $1}}',
@@ -1174,10 +1157,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Далшый резултат|Далшы $1 резултаты|Далшых $1 резултатів}}',
 'shown-title' => 'Вказати $1 {{PLURAL:$1|резултат|резултаты|резултатів}} на сторінку',
 'viewprevnext' => 'Перегляднути ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Параметры гляданя',
 'searchmenu-exists' => "'''У тій вікі є сторінка з назвов «[[:$1]]»'''",
 'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у тій вікі!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Вказати сторінкы з тым префіксом]]',
 'searchprofile-articles' => 'Статї',
 'searchprofile-project' => 'Сторінкы помочі і проєкту',
 'searchprofile-images' => 'Мултімедія',
@@ -1198,21 +1179,16 @@ $1",
 'search-interwiki-default' => '$1 резултаты:',
 'search-interwiki-more' => '(веце)',
 'search-relatedarticle' => 'Звязаный',
-'mwsuggest-disable' => 'Выпнути пораду під час гляданя',
 'searcheverything-enable' => 'Глядати во вшыткых просторах назв',
 'searchrelated' => 'звязаный',
 'searchall' => 'вшыткы',
 'showingresults' => "Ниже {{PLURAL:$1|вказане|вказаны|вказаных}} '''$1''' {{PLURAL:$1|резултат|резултаты|резултатів}}, почінаючіх з №&nbsp;'''$2'''",
 'showingresultsnum' => 'Ниже вказано <strong>$3</strong> {{PLURAL:$3|резултат|резултаты|резултатів}}, почінаючі з №&nbsp;<strong>$2</strong>.',
 'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' з '''$3'''|Резултаты '''$1 — $2''' з '''$3'''}}  про '''$4'''",
-'nonefound' => "'''Позначка:''' Штандартно ся глядать лем в дакотрых просторах назв.
-Хоснуйте префікс ''all:'', жебы глядати у вшыткых просторах назв (рахувчі тыж сторінкы діскузії, шаблоны ітд.), або зазначте потрібный простор назв.",
 'search-nonefound' => 'На вашу пожадавку не были найджены жадны резултаты.',
-'powersearch' => 'Росшырене гляданя',
 'powersearch-legend' => 'Росшырене гляданя',
 'powersearch-ns' => 'Глядати у просторах назв:',
 'powersearch-redir' => 'Список напрямлинь',
-'powersearch-field' => 'Глядати',
 'powersearch-togglelabel' => 'Позначіти:',
 'powersearch-toggleall' => 'Вшыткы',
 'powersearch-togglenone' => 'Жадный',
@@ -1224,7 +1200,6 @@ $1",
 'preferences' => 'Наставлїня',
 'mypreferences' => 'Наставлїня',
 'prefs-edits' => 'Чісло едітовань:',
-'changepassword' => 'Змінити гесло',
 'prefs-skin' => 'Взгляд',
 'skin-preview' => 'Попереднїй нагляд',
 'datedefault' => 'Імпліцітный',
@@ -1247,13 +1222,11 @@ $1",
 'prefs-email' => 'Параметры електронічной пошты',
 'prefs-rendering' => 'Взгляд',
 'saveprefs' => 'Уложыти',
-'resetprefs' => 'Вернути неуложены зміны',
 'restoreprefs' => 'Обновити вшыткы штандартны наставлїня (у вшыткых секціях)',
 'prefs-editing' => 'Едітованя',
 'rows' => 'Рядкы:',
 'columns' => 'Колонкы:',
 'searchresultshead' => 'Гляданя',
-'resultsperpage' => 'Чісло резултатів на сторінку:',
 'stub-threshold' => 'Поріг про форматованя одказу як <a href="#" class="stub">одказів на "stub"</a> (v bajtech):',
 'stub-threshold-disabled' => 'Выпнуте',
 'recentchangesdays' => 'За кілько днїв вказовати новы едітованя',
@@ -1267,7 +1240,6 @@ $1",
 'localtime' => 'Містный час:',
 'timezoneuseserverdefault' => 'Хосновати штандартне наставлїня вікі ($1)',
 'timezoneuseoffset' => 'Інше (задайте посун)',
-'timezoneoffset' => 'Посун¹:',
 'servertime' => 'Час сервера:',
 'guesstimezone' => 'Начітати з переглядача',
 'timezoneregion-africa' => 'Африка',
@@ -1523,7 +1495,6 @@ $1",
 'recentchanges-label-bot' => 'Тото едітованя зроблене ботом',
 'recentchanges-label-unpatrolled' => 'Тота зміна дотеперь не была патролёвана.',
 'recentchanges-legend-newpage' => '$1 — нова сторінка',
-'rcnote' => "{{PLURAL:$1|Послїдня '''$1''' зміна|Послїднї '''$1''' зміны|Послїднїх '''$1''' змін}} за '''$2''' {{PLURAL:$2|день|днї|днїв}}, на час $5, $4.",
 'rcnotefrom' => 'Ниже {{PLURAL:$1|є|суть|є}} найвеце <b>$1</b> {{PLURAL:$1|зміна|зміны|змін}} од <b>$2</b>.',
 'rclistfrom' => 'Вказати едітованя почінаючі з $1.',
 'rcshowhideminor' => '$1 маленькы едітованя',
@@ -1600,7 +1571,7 @@ $1",
 'filetype-mime-mismatch' => 'Росшырїня файлу ".$1" не одповідать ёго MIME тіпу ($2).',
 'filetype-badmime' => 'Не є дозволено наладововати файлы MIME тіп „$1“.',
 'filetype-bad-ie-mime' => 'Неможливо наладовати тот файл, бо Internet Explorer бы го тримав за „$1“, што є не дозволеный і потенціално небеспечный тіп файлу.',
-'filetype-unwanted-type' => "„.$1“''' є нежеланый формат файлу. {{plural:$3|Желаный формат файлів є|Желаны форматы файлів суть}} $2.",
+'filetype-unwanted-type' => "„.$1“''' є нежеланый формат файлу. {{PLURAL:$3|Желаный формат файлів є|Желаны форматы файлів суть}} $2.",
 'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|є недозволеный формат файлів|суть недозволены форматы файлів}}.
 {{PLURAL:$3|Дозволеный формат фалів|Дозволены форматы файлів суть}} $2.",
 'filetype-missing' => 'Файл не має росшырїня (наприклад, «.jpg»).',
@@ -1828,7 +1799,7 @@ $1',
 'nolinkstoimage' => 'На тот файл не одказує жадна сторінка',
 'morelinkstoimage' => 'Видїти [[Special:WhatLinksHere/$1|далшы одказы]] на тот файл.',
 'linkstoimage-redirect' => '$1 (напрямлїня файлу) $2',
-'duplicatesoffile' => '{{plural:$1|Наслїдуючій файл є дуплікат|Наслїдуючі $1 файлы суть дуплікаты|Наслїдуючіх $1 файлів є дуплікатами}} того файлу ([[Special:FileDuplicateSearch/$2|детайлы]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Наслїдуючій файл є дуплікат|Наслїдуючі $1 файлы суть дуплікаты|Наслїдуючіх $1 файлів є дуплікатами}} того файлу ([[Special:FileDuplicateSearch/$2|детайлы]]):',
 'sharedupload' => 'Тот файл є з $1 і є доступным про іншы проекты.',
 'sharedupload-desc-there' => 'Тот файл походить з {{grammar:2sg|$1}} і можуть го хосновати другы проєкты.
 Веце інформацій обсягує ёго [$2 сторінка з пописом файлу].',
@@ -1925,7 +1896,7 @@ $1',
 'statistics-views-peredit' => 'Чісло зображінь на едітованя',
 'statistics-users' => 'Реґістрованы [[Special:ListUsers|хоснователї]]',
 'statistics-users-active' => 'Актівны хоснователї',
-'statistics-users-active-desc' => 'Хоснователї, котры в {{plural:$1|минулого дня|минулых  $1 днїв}} провели даяку операцію',
+'statistics-users-active-desc' => 'Хоснователї, котры в {{PLURAL:$1|минулого дня|минулых  $1 днїв}} провели даяку операцію',
 'statistics-mostpopular' => 'Найчітанїшы сторінкы',
 
 'pageswithprop' => 'Сторінкы з властностями',
@@ -2000,10 +1971,8 @@ $1',
 'protectedpages' => 'Замкнуты сторінкы',
 'protectedpages-indef' => 'Лем замкы на нестановлено',
 'protectedpages-cascade' => 'Лем каскадовы замкы',
-'protectedpagestext' => 'Наслїдуючі сторінкы суть замкнуты або напів замкнуты про едітованя або переменованя',
 'protectedpagesempty' => 'Жадна сторінка не є замкнута з тыма параметрами.',
 'protectedtitles' => 'Замкнуты назвы сторінок',
-'protectedtitlestext' => 'Наслїдуючі назвы суть замкнуты і не дозволены про сторінкы',
 'protectedtitlesempty' => 'Жадна назва не є замкнута з тыма параметрами.',
 'listusers' => 'Список хоснователїв',
 'listusers-editsonly' => 'Вказати лем хоснователїв з едітованями',
@@ -2054,9 +2023,6 @@ $1',
 'allpagesto' => 'Зобразити сторінкы кінчачі на:',
 'allarticles' => 'Вшыткы сторінкы',
 'allinnamespace' => 'Вшыткы сторінкы (простор назв $1)',
-'allnotinnamespace' => 'Вшыткы сторінкы (окрем простору назв $1)',
-'allpagesprev' => 'Попереднї',
-'allpagesnext' => 'Далшы',
 'allpagessubmit' => 'Выконати',
 'allpagesprefix' => 'Вказати сторінкы што ся зачінають на:',
 'allpagesbadtitle' => 'Задана назва сторінкы не была правилна або обсяговала префікс міджіязыкового або міджівікі одказу. Може обсяговав буквы, котры не суть дозволены.',
@@ -2255,7 +2221,7 @@ $UNWATCHURL
 'exblank' => 'сторінка была порожня',
 'delete-confirm' => 'Змазаня  $1',
 'delete-legend' => 'Вымазати',
-'historywarning' => "'''Варованя:''' Сторінка, котру хочете змазати, має історію з приближно $1 {{plural:$1|ревізії|ревізіями}}:",
+'historywarning' => "'''Варованя:''' Сторінка, котру хочете змазати, має історію з приближно $1 {{PLURAL:$1|ревізії|ревізіями}}:",
 'confirmdeletetext' => 'Рыхтуєте ся вымазати сторінку і вшыткы єй лоґы едітовань.
 Просиме Вас, потвердьте, же справды тото хочете зробити, повно розумієте наслїдкы і же робите тото в одповідности з [[{{MediaWiki:Policy-url}}|правилами]].',
 'actioncomplete' => 'Дїя выконана',
@@ -2274,8 +2240,8 @@ $UNWATCHURL
 ** Порушїня авторьскых прав
 ** Вандалізм',
 'delete-edit-reasonlist' => 'Едітовати причіны вымазаня',
-'delete-toobig' => 'Тота сторінка має велику історію едітованя, через $1 {{plural:$1|верзії|верзій|верзій}}. Мазаня такых сторінок є обмеджено, жебы ся заборонило нехоченому нарушіню {{grammar:2sg|{{SITENAME}}}}.',
-'delete-warning-toobig' => 'Тота сторінка має велику історію едітацій, через $1 {{plural:$1|верзії|верзій|верзій}}. Мазаня такых сторінок може нарушыти датабазовы операцім {{grammar:2sg|{{SITENAME}}}}; мерькуйте.',
+'delete-toobig' => 'Тота сторінка має велику історію едітованя, через $1 {{PLURAL:$1|верзії|верзій|верзій}}. Мазаня такых сторінок є обмеджено, жебы ся заборонило нехоченому нарушіню {{grammar:2sg|{{SITENAME}}}}.',
+'delete-warning-toobig' => 'Тота сторінка має велику історію едітацій, через $1 {{PLURAL:$1|верзії|верзій|верзій}}. Мазаня такых сторінок може нарушыти датабазовы операцім {{grammar:2sg|{{SITENAME}}}}; мерькуйте.',
 
 # Rollback
 'rollback' => 'Вернути назад едітованя',
@@ -2386,7 +2352,6 @@ $UNWATCHURL
 'undeletebtn' => 'Обновити',
 'undeletelink' => 'видїти/обновити',
 'undeleteviewlink' => 'видїти',
-'undeletereset' => 'Ресетовати',
 'undeleteinvert' => 'Інвертовати селекцію',
 'undeletecomment' => 'Причіна:',
 'undeletedrevisions' => '{{PLURAL:$1|Обновлена $1 верзія|Обновлены $1 верзії|Обновленых $1 верзій}}',
@@ -2475,7 +2440,6 @@ $1',
 'block' => 'Заблоковати хоснователя',
 'unblock' => 'Одблоковати хоснователя',
 'blockip' => 'Заблоковати хоснователя',
-'blockip-title' => 'Блокованя хоснователя',
 'blockip-legend' => 'Блокованя хоснователя',
 'blockiptext' => 'Тот формуларь служыть про заблокованя едітованя з конкретной IP адресы або мена хоснователя.
 Тото бы мало быти хосноване лем в згодї з [[{{MediaWiki:Policy-url}}|правилами]].
@@ -2483,7 +2447,6 @@ $1',
 'ipadressorusername' => 'IP-адреса або мено хоснователя:',
 'ipbexpiry' => 'Кінчіть:',
 'ipbreason' => 'Причіна:',
-'ipbreasonotherlist' => 'Інша причіна',
 'ipbreason-dropdown' => '*Часты причіны блокованя
 ** Вкладаня неправдивых інформацій
 ** Одстранёваня обсягу сторінок
@@ -2499,8 +2462,6 @@ $1',
 'ipbsubmit' => 'Заблоковати',
 'ipbother' => 'Іншый час:',
 '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',
-'ipbotheroption' => 'іншый',
-'ipbotherreason' => 'Інша/додаткова причіна:',
 'ipbhidename' => 'Сховати мено хоснователя в едітованях і списках',
 'ipbwatchuser' => 'Слїдовати хосновательску і діскузну сторінку того хоснователя',
 'ipb-disableusertalk' => 'Заборонити тому хоснователёви едітовати властну хосновательску діскузію по час блокованя',
@@ -2589,7 +2550,6 @@ $1',
 'sorbsreason' => 'Ваша IP-адреса є веджена як отвореный проксі в DNSBL.',
 'sorbs_create_account_reason' => 'Ваша IP-адреса є веджена як одкрытый проксі в DNSBL. З той адресы собі не можете створити конто.',
 'xffblockreason' => 'IP адреса написана в голові X-Forwarded-For, ці уж ваша, або проксі сервера, што хоснуєете, была заблокована. Оріґінална прічіна того блокованя: $1',
-'cant-block-while-blocked' => 'Не можете блоковати іншых хоснователїв, кідь сьте сам заблокованый(а).',
 'cant-see-hidden-user' => 'Хоснователь, котрого хочете заблоковати, уж быв заблокованый і схованый. Кідьже не маєте права hideuser, не можете собі наставлїня блокованя того хоснователя посмотрити ани го змінити.',
 'ipbblocked' => 'Не можете блоковати або одблоковати іншых хоснователїв, {{GENDER:|сам|сама|сам}} сьте {{GENDER:|заблокованый|заблокована|заблокованый}}',
 'ipbnounblockself' => 'Не маєте дозволене одблоковати {{GENDER:|сам|сама|сам}} себе',
@@ -2647,7 +2607,6 @@ $1',
 В тых припадох будете мусити переменовати ці злучіти сторінкы ручнї кідь желаєте єй переменованя.",
 'movearticle' => 'Переменовати сторінку',
 'moveuserpage-warning' => "'''Увага:''' Рихтуєте ся переменовати сторінку хоснователя. Усвідомте собі, же буде переменована лем тота сторінка, а хоснователь  ''не буде'' переменованый.",
-'movenologin' => 'Не сьте приголошеный(а)!',
 'movenologintext' => 'Про переменованя сторінок ся мусите [[Special:UserLogin|приголосити]].',
 'movenotallowed' => 'Не маєте права переменовати сторінкы.',
 'movenotallowedfile' => 'Не маєте права переменовати файлы.',
@@ -2663,8 +2622,6 @@ $1',
 'articleexists' => 'Сторінка з таков назвов уж екзістує або назва вамі выбрата не є платна.
 Просиме, выберте іншу назву.',
 'cantmove-titleprotected' => 'Сторінка ся не дасть переменовати на дане місце, бо єй назва є замкнута проти створїню',
-'talkexists' => "'''Сторінка була переменована, але діскузна сторінка не могла быти переменована, бо сторінка з таков назвов уж екзістує. Просиме Вас, злучте їх ручнї.'''",
-'movedto' => 'теперь ся называє',
 'movetalk' => 'Переменовати одповідну діскузну сторінку',
 'move-subpages' => 'Переменовати підсторінкы (до $1)',
 'move-talk-subpages' => 'Переменовати підсторінкы діскузной сторінкы (до $1)',
@@ -2675,7 +2632,7 @@ $1',
 'movelogpage' => 'Лоґ переменовань',
 'movelogpagetext' => 'Тото є список вшыткых переменованый сторінок.',
 'movesubpage' => '{{PLURAL:$1|Підсторінка|Підсторінкы}}',
-'movesubpagetext' => 'Тота сторінка має $1 {{plural:$1|підсторінку|підсторінкы|підсторінок}} ниже.',
+'movesubpagetext' => 'Тота сторінка має $1 {{PLURAL:$1|підсторінку|підсторінкы|підсторінок}} ниже.',
 'movenosubpage' => 'Тота сторінка не має підсторінок.',
 'movereason' => 'Причіна:',
 'revertmove' => 'вернути',
@@ -3029,7 +2986,7 @@ $1',
 
 # Special:NewFiles
 'newimages' => 'Ґалерія новых файлів',
-'imagelisttext' => "Ниже є {{plural:$1|єден файл|список '''$1'''&nbsp;файлів сортованых $2|список '''$1'''&nbsp;файлів сортованых $2}}.",
+'imagelisttext' => "Ниже є {{PLURAL:$1|єден файл|список '''$1'''&nbsp;файлів сортованых $2|список '''$1'''&nbsp;файлів сортованых $2}}.",
 'newimages-summary' => 'На тій шпеціалній сторінцї ся зображують остатнї наладованы файлы.',
 'newimages-legend' => 'Філтер',
 'newimages-label' => 'Назва файлу (або єй часть):',
@@ -3481,15 +3438,10 @@ $1',
 'exif-urgency-high' => 'Высока ($1)',
 'exif-urgency-other' => 'Хоснователём дефінована пріоріта ($1)',
 
-# External editor support
-'edit-externally' => 'Едітовати тот файл хоснувчі екстерну аплікацію',
-'edit-externally-help' => '(Веце інформацій найдете в [https://www.mediawiki.org/wiki/Manual:External_editors інштрукції про наставлїня].)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'вшыткы',
 'namespacesall' => 'вшыткы',
 'monthsall' => 'вшыткы',
-'limitall' => 'вшыткы',
 
 # Email address confirmation
 'confirmemail' => 'Потверджіня адресы ел. пошты',
@@ -3508,7 +3460,6 @@ $1',
 'confirmemail_needlogin' => 'Про потверджіня своёй адрес ел. пошты ся мусите $1.',
 'confirmemail_success' => 'Ваша адреса ел. пошты была потверджена. Нынї ся можете [[Special:UserLogin|приголосити]] і хосновати вікі.',
 'confirmemail_loggedin' => 'Ваша адреса ел. пошты была потверджена.',
-'confirmemail_error' => 'Не вдало ся уложыти ваше потверджіня.',
 'confirmemail_subject' => 'Потверджіня адресы ел. пошты про  {{grammar:4sg|{{SITENAME}}}}',
 'confirmemail_body' => 'Хтось (асі вы, з IP адресы $1) собі реґістровав конто з меном "$2" і тов адресов ел. пошты на {{grammar:6sg|{{SITENAME}}}}.
 
@@ -3748,7 +3699,6 @@ MediaWiki є дістрібуована в надїї, же буде хосно
 
 # Special:ComparePages
 'comparepages' => 'Порівнаня сторінок',
-'compare-selector' => 'Порівнаня ревізій сторінок',
 'compare-page1' => 'Сторінка 1',
 'compare-page2' => 'Сторінка 2',
 'compare-rev1' => 'Ревізія 1',
index f19be29..30bbcc3 100644 (file)
@@ -7,11 +7,21 @@
  * @ingroup Language
  * @file
  *
+ * @author D'AroemenenZullenNiVergaan
  * @author Dumitrachi T. Fundu
  * @author Hakka
  */
 
 $messages = array(
+# User preference toggles
+'tog-underline' => 'Subliniadză ligâturâ:',
+'tog-hideminor' => 'Ascundi alâxirile ńici.',
+'tog-numberheadings' => 'Numără automat secțiunili.',
+'tog-editondblclick' => "Aravdă alâxirea frundzâl'ei ti dublu click (caftă JavaScript)",
+
+'underline-always' => 'Dipriunâ',
+'underline-never' => 'Vârâoarâ',
+
 # Dates
 'sunday' => 'Dumãnicã',
 'monday' => 'Lune',
@@ -20,18 +30,18 @@ $messages = array(
 'thursday' => 'Gioia',
 'friday' => 'Vinirã',
 'saturday' => 'Sãmbãtã',
-'january' => 'Yinar',
-'february' => 'Shcurtu',
-'march' => 'Martsu',
-'april' => 'Aprir',
-'may_long' => 'Mailu',
-'june' => 'Cirishar',
-'july' => 'Alunar',
-'august' => 'Avgustu',
-'september' => 'Yizmaciunjle',
-'october' => 'Xumedru',
-'november' => 'Brumar',
-'december' => 'Andreulu',
+'january' => 'yinar',
+'february' => 'șcurtu',
+'march' => 'marțu',
+'april' => 'aprir',
+'may_long' => 'maiu',
+'june' => 'cirișar',
+'july' => 'alunar',
+'august' => 'avgustu',
+'september' => 'yizmăciun',
+'october' => 'xumedru',
+'november' => 'brumar',
+'december' => 'andreu',
 'january-gen' => 'Yinar',
 'february-gen' => 'Shcurtu',
 'march-gen' => 'Martsu',
@@ -44,58 +54,96 @@ $messages = array(
 'october-gen' => 'Xumedru',
 'november-gen' => 'Brumar',
 'december-gen' => 'Andreulu',
+'jan' => 'yinar',
+'feb' => 'șcurtu',
+'mar' => 'marțu',
+'apr' => 'aprir',
+'may' => 'maiu',
+'jun' => 'cirișar',
+'jul' => 'alunar',
+'aug' => 'avgustu',
+'sep' => 'yizmăciun',
+'oct' => 'xumedru',
+'nov' => 'brumar',
+'dec' => 'andreu',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Categorie|Categorii}}',
+'category_header' => 'Frândzâ ti categoria "$1"',
+'hidden-categories' => '{{PLURAL:$1|Categorie ascumsâ|Categorii ascumsi}}',
 
 'article' => 'Articlu',
+'newwindow' => "(discl'idi tu nauâ fereastă)",
 'cancel' => 'Alasã',
+'moredotdotdot' => 'Ma multu...',
 'mytalk' => 'Zburare-a mea',
-'navigation' => 'Navigatsia',
+'navigation' => 'Navigație',
 
 # Cologne Blue skin
+'qbfind' => 'Caftă',
 'qbedit' => 'Alãxiri',
-'qbspecialpages' => 'Frãndzã spetsiale',
+'qbpageoptions' => 'Aestă frândză',
+'qbmyoptions' => 'Frândzili a meali',
 
+# Vector skin
+'vector-action-addsection' => 'Dimândari nauâ',
+'vector-view-history' => 'Vedz istoric',
+'namespaces' => 'Spațiu di numi',
+'variants' => 'Variante',
+
+'tagline' => 'Dit {{SITENAME}}',
 'help' => 'Agiutor',
-'search' => 'Caftã',
+'search' => 'Câftare',
 'searchbutton' => 'Caftã',
 'go' => 'Du-vã',
 'searcharticle' => 'Du-vã',
-'history_short' => 'Istoria',
+'history_short' => 'Istoric',
 'printableversion' => 'Verzia ti tipuseare',
-'permalink' => 'Ligãtura permanentã',
-'edit' => 'Alãxiri',
+'permalink' => 'Legătură permanentă',
+'edit' => 'Alâxire',
 'delete' => 'Ashcirdzire',
 'protect' => 'Apurã',
+'newpage' => 'Frândzâ nauă',
+'talkpagelinktext' => 'Zburari',
 'talk' => 'Discusiur',
+'views' => 'Videri',
 'toolbox' => 'Cutia di hãlate',
 'otherlanguages' => 'Pi alte limbe',
 'jumptonavigation' => 'Navigatsia',
-'jumptosearch' => 'Caftã',
+'jumptosearch' => 'Câftare',
 
-# 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).
+# 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).
+'aboutsite' => 'Tu {{SITENAME}}',
 'currentevents' => 'Evenimente di tora',
 'disclaimers' => 'Nipricunuschire',
 'edithelp' => 'Agiutor ti alãxire',
-'mainpage' => 'Prota frãndzã',
+'helppage' => 'Help:Conținut',
+'mainpage' => 'Prota frândză',
 'mainpage-description' => 'Prota frãndzã',
-'portal' => 'Portal-a comunitatiljei',
+'portal' => 'Portal-a comunitatiľei',
+'portal-url' => 'Project:Portal-a comunitatiľei',
+'privacy' => 'Politică di confidențialitate',
 
-'newmessageslink' => 'dimãndare nao',
 'youhavenewmessagesmulti' => 'Avets nãi dimãndãri pi $1',
-'editsection' => 'Alãxiri',
-'editold' => 'Alãxiri',
+'editsection' => 'alâxire',
+'editold' => 'Alâxiri',
+'viewsourceold' => 'videari izvor',
+'viewsourcelink' => 'videari izvor',
+'editsectionhint' => 'Alâxire parti: $1',
+'site-atom-feed' => '$1 Atom feed',
+'red-link-title' => '$1 (frândza nu easti)',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Articlu',
 'nstab-user' => 'Frãndza-a ufilizitirolui',
-'nstab-template' => 'Shablon',
+'nstab-special' => 'Frândzâ specială',
+'nstab-template' => 'Format',
+'nstab-category' => 'Categorie',
 
 # General errors
 'viewsource' => 'Videts-u fãntãnã',
 
 # Login and logout pages
-'welcomecreation' => '== Ghine vinish, $1 ==
-
-Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {{SITENAME}}.',
 'yourname' => 'Numa di ufilizitor:',
 'yourpassword' => 'Cljao:',
 'yourpasswordagain' => 'Bãgats-u cljao iara:',
@@ -117,24 +165,37 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
 'showdiff' => 'Spuni le-alãxirle',
 'loginreqlink' => 'Ligats-vã',
 
+# Diffs
+'lineno' => 'Linia $1:',
+'editundo' => 'arisire',
+
 # Search results
-'powersearch' => 'Caftã',
+'searchresults' => 'Rezultate di câftare',
+'searchresults-title' => 'Rezultate di câftare ti "$1"',
+'shown-title' => 'Vedz $1 {{PLURAL:$1|rezultat|rezultate}} pi frândză',
+'searchprofile-everything' => 'Tuti',
+'searchprofile-project-tooltip' => 'Câftare ti $1',
+'search-result-size' => '$1 ({{PLURAL:$2|1 zbor|$2 zboarâ}})',
+'search-section' => '(partea $1)',
+'searchall' => 'tuti',
 
 # Preferences page
 'preferences' => 'Alidzerle-a meale',
 'mypreferences' => 'Alidzerle-a meale',
-'prefsnologin' => 'Nu hits ligats',
 'searchresultshead' => 'Caftã',
 'youremail' => 'E-mail:',
 'username' => 'Numa di ufilizitor:',
 
 # Recent changes
-'recentchanges' => 'Alãxiri',
+'recentchanges' => 'Alâxiri',
+'diff' => 'dif',
+'hist' => 'ist',
+'show' => 'Vedz',
 
 # Recent changes linked
 'recentchangeslinked' => 'Alãxiri ligate',
 'recentchangeslinked-feed' => 'Alãxiri ligate',
-'recentchangeslinked-toolbox' => 'Alãxiri ligate',
+'recentchangeslinked-toolbox' => 'Alâxiri ligate',
 
 # Upload
 'upload' => 'Pitritsets file',
@@ -143,13 +204,17 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
 'filedesc' => 'Rezime',
 'watchthisupload' => 'Mutrits-u frãndzã aistã',
 
+# File description page
+'file-anchor-link' => 'Fișier',
+
 # Random page
-'randompage' => 'Frãndzã di nipandicã',
+'randompage' => 'FrândzÄ\83 di nipandicÄ\83',
 
 'brokenredirects-edit' => 'Alãxiri',
 'brokenredirects-delete' => 'Ashcirdzire',
 
 # Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|octet|octeți}}',
 'newpages-username' => 'Numa di ufilizitor:',
 'move' => 'Tradzets',
 'movethispage' => 'Tradzets-u frãndza aistã',
@@ -178,6 +243,9 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
 # Undelete
 'undelete-search-submit' => 'Caftã',
 
+# Namespace form on various pages
+'blanknamespace' => '(Prota)',
+
 # Contributions
 'contributions' => 'Ufilizitor:Contributsiur',
 'mycontris' => 'Contributsiile-a meale',
@@ -186,17 +254,18 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
 
 # What links here
 'whatlinkshere' => 'Tsi s-leadze cu aistu',
+'whatlinkshere-page' => 'Frândză:',
 
 # Block/unblock
 'ipbreason' => 'Itia:',
 'ipblocklist-submit' => 'Caftã',
+'contribslink' => 'contribuții',
 
 # Move page
 'move-page-legend' => 'Tradzets-u frãndzã',
 'movearticle' => 'Tradzets-u frãndzã:',
 'move-watch' => 'Mutrits-u frãndzã aistã',
 'movepagebtn' => 'Tradzets-u frãndzã',
-'movedto' => 'tradzitã tu',
 'movereason' => 'Itia:',
 
 # Namespace 8 related
@@ -205,7 +274,11 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
 # Tooltip help for the actions
 'tooltip-pt-preferences' => 'Alidzerle-a meale',
 'tooltip-pt-logout' => 'Disligats-vã',
+'tooltip-search' => 'Câftare tru {{SITENAME}}',
 'tooltip-p-logo' => 'Prota frãndzã',
+'tooltip-n-mainpage' => 'Vedz prota frândză',
+'tooltip-t-specialpages' => 'Unâ listâ di tuti frândzele',
+'tooltip-ca-nstab-category' => 'Vedz frândza di categorie',
 
 # Special:NewFiles
 'ilsubmit' => 'Caftã',
@@ -217,6 +290,6 @@ Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {
 'table_pager_limit_submit' => 'Du-vã',
 
 # Special:SpecialPages
-'specialpages' => 'Frãndzã spetsiale',
+'specialpages' => 'Frândzâ speciale',
 
 );
index cdc7fbd..600196b 100644 (file)
@@ -97,7 +97,7 @@ $messages = array(
 'jumptonavigation' => 'навигацион',
 'jumptosearch' => 'каутај',
 
-# 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).
+# 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).
 'aboutsite' => 'дајпул {{SITENAME}}',
 'aboutpage' => 'Project:дајпул {{SITENAME}}',
 'copyrightpage' => '{{ns:project}}:Права даутору',
@@ -106,7 +106,6 @@ $messages = array(
 'disclaimers' => 'Тајменулс',
 'disclaimerpage' => 'Project:тајменул',
 'edithelp' => 'Ајутор пентре едитаере',
-'edithelppage' => 'Help:Едитаере',
 'helppage' => 'Help:Ајутор',
 'mainpage' => 'Пажу принципу',
 'mainpage-description' => 'Пажу принципу',
@@ -115,7 +114,6 @@ $messages = array(
 
 'retrievedfrom' => 'адусе де "$1"',
 'youhavenewmessages' => 'Весес $1 ($2).',
-'newmessageslink' => 'Месагес новес',
 'editsection' => 'едитаере',
 'editold' => 'едита',
 'editsectionhint' => 'Едитаере ћисецион: $1',
@@ -191,8 +189,6 @@ $messages = array(
 
 # Search results
 'viewprevnext' => 'Ву ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Ајутор',
-'powersearch' => 'каутај авансата',
 
 # Preferences page
 'mypreferences' => 'Мај префиренћу',
index d5e23a5..d1c1c5c 100644 (file)
@@ -97,7 +97,7 @@ $messages = array(
 'jumptonavigation' => 'navigacion',
 'jumptosearch' => 'kaută',
 
-# 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).
+# 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).
 'aboutsite' => 'Dajpul {{SITENAME}}',
 'aboutpage' => 'Project:Dajpul {{SITENAME}}',
 'copyrightpage' => "{{ns:project}}:Prava d'autoru",
@@ -106,7 +106,6 @@ $messages = array(
 'disclaimers' => 'tǎmenuls',
 'disclaimerpage' => 'Project:tǎmenul',
 'edithelp' => 'Ajutor pentru editaere',
-'edithelppage' => 'Help:Editaere',
 'helppage' => 'Help:Ajutor',
 'mainpage' => 'Pažu principu',
 'mainpage-description' => 'Pažu principu',
@@ -115,7 +114,6 @@ $messages = array(
 
 'retrievedfrom' => 'Aduse de "$1"',
 'youhavenewmessages' => 'Veses $1 ($2).',
-'newmessageslink' => 'mesages noves',
 'editsection' => 'Editaere',
 'editold' => 'edita',
 'editsectionhint' => 'Editaere ţisecion: $1',
@@ -191,8 +189,6 @@ Te rog notari la din kontribuţi al {{SITENAME}} sunt konsideraere relesavat sup
 
 # Search results
 'viewprevnext' => 'Vu ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Ajutor',
-'powersearch' => 'kaută avansata',
 
 # Preferences page
 'mypreferences' => 'Maj prefirenţu',
index 1706698..1d0f27e 100644 (file)
@@ -87,7 +87,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'पूर्वतनपृष्टानि' ),
        'Blankpage'                 => array( 'रिक्तपृष्ठ' ),
        'Block'                     => array( 'सदस्यप्रतिबन्ध' ),
-       'Blockme'                   => array( 'मदर्थेप्रतिबन्ध' ),
        'Booksources'               => array( 'पुस्तकस्रोत' ),
        'BrokenRedirects'           => array( 'खण्डीतपुनर्निर्देशन' ),
        'Categories'                => array( 'वर्गः' ),
@@ -97,9 +96,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'सृज्उपयोजकसंज्ञा' ),
        'Deadendpages'              => array( 'निराग्रपृष्टानि' ),
        'DeletedContributions'      => array( 'परित्यागितयोगदान' ),
-       'Disambiguations'           => array( 'नि:संदिग्धीकरण' ),
        'DoubleRedirects'           => array( 'पुनर्निर्देशनद्वंद्व' ),
        'Emailuser'                 => array( 'विपत्रयोजक' ),
+       'ExpandTemplates'           => array( 'बिंबधरविस्तारकरोसि' ),
        'Export'                    => array( 'निर्यात' ),
        'Fewestrevisions'           => array( 'स्वल्पपरिवर्तन' ),
        'FileDuplicateSearch'       => array( 'अनुकृतसंचिकाशोध' ),
@@ -139,6 +138,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'सुरक्षितपृष्टानि' ),
        'Protectedtitles'           => array( 'सुरक्षितशिर्षकम्' ),
        'Randompage'                => array( 'अविशीष्टपृष्ठम्' ),
+       'RandomInCategory'          => array( 'अविशिष्टवर्ग' ),
        'Randomredirect'            => array( 'अविशीष्टविचालन्‌' ),
        'Recentchanges'             => array( 'नवीनतम_परिवर्तन' ),
        'Recentchangeslinked'       => array( 'नवीनतमसम्भन्दिन_परिवर्त' ),
@@ -300,7 +300,6 @@ $messages = array(
 मम सर्वाणि सम्पादनानि लघुत्वेन वर्त्यन्ताम्।',
 'tog-previewontop' => 'सम्पादनात् पूर्वं प्राग्दृश्यं दर्श्यताम्।',
 'tog-previewonfirst' => 'प्रथमसम्पादनस्य प्राग्दृश्यं दर्श्यताम्।',
-'tog-nocache' => 'पृष्ठ धारक-ब्राउजरं निस्क्रियतु ।',
 'tog-enotifwatchlistpages' => 'मम अवेक्षणसूच्यां विद्यमाने पृष्ठे परिवर्तिते सति ईपत्रद्वारा ज्ञाप्यताम्।',
 'tog-enotifusertalkpages' => 'मम योजकसंभाषणपृष्ठे परिवर्तिते सति ईपत्रद्वारा ज्ञाप्यताम्',
 'tog-enotifminoredits' => 'लघुपरिवर्तनेषु सत्सु अपि ईपत्रद्वारा ज्ञाप्यताम्',
@@ -422,7 +421,6 @@ The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
 'qbedit' => 'सम्पाद्यताम्',
 'qbpageoptions' => 'इदं पृष्ठम्',
 'qbmyoptions' => 'मम पृष्ठानि',
-'qbspecialpages' => 'विशेषपृष्ठानि',
 'faq' => 'बहुधा पृच्छ्यमानाः प्रश्नाः',
 'faqpage' => 'Project:बहुधा पृछ्यमानाः प्रश्नाः',
 
@@ -626,9 +624,6 @@ $1',
 'perfcachedts' => 'अधोनिदेशितलेखः सञ्चितः । पूर्वपदोन्नतिः $1 । $4 {{PLURAL:}} अधिकाधिकपरिणामः सञ्चये उपलब्धः ।',
 'querypage-no-updates' => 'अस्य पृष्ठस्य परिशोधनं विफलीकृतमस्ति । 
 सद्यः अत्रत्यः विषयः न नवीक्रियते ।',
-'wrong_wfQuery_params' => 'wfQuery() इत्येतस्य अशुद्धः मानदण्डः दत्तः अस्ति<br />
-कार्यम्: $1<br />
-पृच्छा: $2',
 'viewsource' => 'स्रोतः दृश्यताम्',
 'viewsource-title' => '$1 इत्येतस्य स्रोतः दृश्यताम् ।',
 'actionthrottled' => 'कार्यम् अवरुद्धम् अस्ति',
@@ -727,7 +722,7 @@ $2',
 कृपया पुनः लिख्यताम्।',
 'wrongpasswordempty' => 'लिखितः कूटशब्दः रिक्तः विद्यते।
 कृपया पुनः लिख्यताम्।',
-'passwordtooshort' => 'कूटशब्दः न्यूनातिन्यूनं {{PLURAL: $1| 1 अक्षरात्मकः|$1 अक्षरात्मकमः}} अवश्यमेव भवेत्।',
+'passwordtooshort' => 'कूटशब्दः न्यूनातिन्यूनं {{PLURAL:$1| 1 अक्षरात्मकः|$1 अक्षरात्मकमः}} अवश्यमेव भवेत्।',
 'password-name-match' => 'भवतः कूटशब्दः भवतः प्रयोक्तृनामतः अवश्यम् भिन्नं  भवेत् ।',
 'password-login-forbidden' => 'अस्य प्रयोक्तृनाम्नः कूटशब्दस्य च प्रयोगः वर्जितोऽस्ति।',
 'mailmypassword' => 'नूतनः कूटशब्दः ईपत्रद्वारा प्रेष्यताम्',
@@ -782,7 +777,7 @@ You may ignore this message, if this account was created in error.',
 'user-mail-no-body' => 'भवता खलु विद्युत्पत्रं रिक्ततया अथवा अतिलघुरूपेण प्रेषितुं चेष्टितम्।',
 
 # Change password dialog
-'resetpass' => 'कूटशब्दः परिवर्त्यताम्',
+'changepassword' => 'कूटशब्दः परिवर्त्यताम्',
 'resetpass_announce' => 'भवान् तात्कालिक-ईपत्रद्वारा अत्र प्रविष्टः अस्ति ।
 प्रवेशनस्य समापनाय भवता अत्र नूतनः कूटशब्दः दातव्यः:',
 'resetpass_text' => '<!-- पाठं अत्र लिखतु -->',
@@ -1130,10 +1125,6 @@ You can still [$1 view this revision]",
 'revisiondelete' => 'अवतरणं परिमार्जयतु/पुनस्थापयतु',
 'revdelete-nooldid-title' => 'लक्ष्यरूपा आवृत्तिः अमान्याऽस्ति।',
 'revdelete-nooldid-text' => 'एतत्कार्यं कर्तुं भवतः अवतरणं न दत्तम् । अथवा भवता दत्तावतरणस्य अस्तित्वं नास्ति । अथवा सद्यः अवतरणस्य सङ्गोपनं कुर्वन् अस्ति ।',
-'revdelete-nologtype-title' => 'अभिलेखस्य प्रकारः न प्रदत्तः',
-'revdelete-nologtype-text' => 'अस्यै क्रियायै भवता न कोऽपि अभिलेखप्रकारः निर्दिष्टः।',
-'revdelete-nologid-title' => 'अमान्या अभिलेख-प्रविष्टिः',
-'revdelete-nologid-text' => 'एतत् कार्यं साधयितुं भवान् प्रवेशलक्ष्यं न स्पष्टीकृतवान् अथवा प्रवेशः अस्तित्वे नास्ति ।',
 'revdelete-no-file' => 'निर्दिष्टा सञ्चिका न विद्यते ।',
 'revdelete-show-file-confirm' => '$2 तः $3 मध्ये "<nowiki>$1</nowiki>" इति सञ्चिकायाः निरस्तं परिष्करणं भवान् नूनं द्रष्टुम् इच्छति ?',
 'revdelete-show-file-submit' => 'आम्',
@@ -1165,8 +1156,6 @@ You can still [$1 view this revision]",
 'logdelete-success' => 'नामाङ्कनदृश्यता साफल्येन योजिता ।',
 'logdelete-failure' => 'नामाभिलेखदृश्यता सपला नाभवत् । $1',
 'revdel-restore' => 'दृष्टिविषयः परिवर्त्यताम्',
-'revdel-restore-deleted' => 'अपास्तानि संस्करणानि',
-'revdel-restore-visible' => 'दृष्टिगोचराणि संस्करणानि',
 'pagehist' => 'पृष्ठस्य इतिहासः',
 'deletedhist' => 'परिमार्जितेतिहासः ।',
 'revdelete-hide-current' => '$2 $1 दिनाङ्कितस्य गोपने दोषः । एतत् प्रकृतावतरणम्, एतत् न गोपनीयम् ।',
@@ -1236,12 +1225,8 @@ You can still [$1 view this revision]",
 # 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}}',
@@ -1250,10 +1235,8 @@ You can still [$1 view this revision]",
 'nextn-title' => 'प्राक्तन-{{PLURAL:$1|फलितम्| फलितानि}}',
 'shown-title' => 'प्रत्येकस्मिन् पृष्ठे $1 {{PLURAL:$1|फलितम्|फलितानि}} दर्श्यताम्',
 'viewprevnext' => 'दर्श्यताम् ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'अन्वेषणस्य विकल्पाः ।',
 'searchmenu-exists' => 'अस्मिन् विकिमध्ये "[[:$1]]"नामकं पृष्ठं विद्यते।',
 'searchmenu-new' => "'''अस्यां विक्यां \"[[:\$1]]\" इति पृष्ठं सृज्यताम्!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|एतदुपसर्गयुक्तपुटं पश्यतु ]]',
 'searchprofile-articles' => 'आन्तर्यम्',
 'searchprofile-project' => 'सहायता प्रकल्पपृष्ठानि च',
 'searchprofile-images' => 'बहुमाध्यमः',
@@ -1274,22 +1257,16 @@ You can still [$1 view this revision]",
 'search-interwiki-default' => '$1 परिणामाः :',
 'search-interwiki-more' => '(अधिकानि)',
 'search-relatedarticle' => 'सम्बद्धानि ।',
-'mwsuggest-disable' => 'निष्क्रियाः AJAX सूचनाः ।',
 'searcheverything-enable' => 'सर्वनामावकाशे अन्विषतु ।',
 'searchrelated' => 'सम्बद्धानि',
 'searchall' => 'सर्वाणि',
 'showingresults' => "निम्नगतक्रमाङ्कस्य '''$2''' तः आरभ्य अधिकतमं परिणामः'''$1''' {{PLURAL:$1| दर्शितः}}।",
 'showingresultsnum' => "निम्नगतक्रमाङ्क'''$2'''तः आरभ्य अधिकतमः '''$3''' परिणामः {{PLURAL:$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' => 'नास्ति',
@@ -1302,7 +1279,6 @@ You can still [$1 view this revision]",
 'preferences' => 'इष्टतमानि',
 'mypreferences' => 'मम इष्टतमानि',
 'prefs-edits' => 'सम्पादनानां सख्याः',
-'changepassword' => 'कूटशब्दः परिवर्त्यताम्',
 'prefs-skin' => 'त्वक्',
 'skin-preview' => 'प्राग्दृश्यम्',
 'datedefault' => 'वरीयांसि नास्ति',
@@ -1325,13 +1301,11 @@ You can still [$1 view this revision]",
 'prefs-email' => 'इमेल वैकल्पिकाः',
 'prefs-rendering' => 'स्वरुपः',
 'saveprefs' => 'संरक्ष्यताम्',
-'resetprefs' => 'असंरक्षितानि परिवर्तनानि विलुप्यन्ताम्',
 'restoreprefs' => 'समग्राः व्यवस्थादय व्यवस्थानुसारं पुनः संरक्ष्यताम्',
 'prefs-editing' => 'सम्पादनम्',
 'rows' => 'पंक्ति',
 'columns' => 'अध: पंक्त्याः',
 'searchresultshead' => 'अन्वेषणम्',
-'resultsperpage' => 'प्रति पृष्ट हिट्स:',
 'stub-threshold' => '<a href="#" class="stub">आधारानुबन्धानां </a>अधिकतमाकारः ।',
 'stub-threshold-disabled' => 'निष्क्रियः',
 'recentchangesdays' => 'दिवसानि पर्यन्तो सद्यावधि-परिवर्तनानि दृश्यतु:',
@@ -1343,7 +1317,6 @@ You can still [$1 view this revision]",
 'localtime' => 'स्थानीय समय:',
 'timezoneuseserverdefault' => 'विकिनिश्चितं ($1) उपयुज्यताम् ।',
 'timezoneuseoffset' => 'अन्ये (समयान्तरं निर्दिशतु )',
-'timezoneoffset' => 'समयान्तरम् ¹',
 'servertime' => 'वितारकसमयः ।',
 'guesstimezone' => 'जालदर्शिकातः पूरयतु ।',
 'timezoneregion-africa' => 'कालद्वीप',
@@ -1576,7 +1549,6 @@ You can still [$1 view this revision]",
 'recentchanges-label-minor' => 'इदं लघु परिवर्तनम्',
 'recentchanges-label-bot' => 'एतद् यन्त्रेण कृतं सम्पादनम् आसीत्',
 'recentchanges-label-unpatrolled' => 'एतद् सम्पादनम् एतावता परिशीलितं नास्ति ।',
-'rcnote' => "अधस्तात् {{PLURAL:$1|'''1''' परिवर्तनमस्ति|अन्तिमानि '''$1''' परिवर्तनानि सन्ति}},{{PLURAL:$2|गते दिवसे|'''$2''' गतेषु दिवसेषु}}, $5, $4 इति समये।",
 'rcnotefrom' => "अधः '''$2''' तः  ('''$1''' पर्यन्तं) परिवर्तनानि दर्शितानि सन्ति ।",
 'rclistfrom' => '$1 तः जातानि नूतनानि परिवर्तनानि दर्श्यताम्',
 'rcshowhideminor' => '$1 लघूनि सम्पादनानि',
@@ -2052,10 +2024,8 @@ See https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'protectedpages' => 'सुरक्षितानि पुतानि ।',
 'protectedpages-indef' => 'अनिर्दिष्टसुरक्षा केवलम् ।',
 'protectedpages-cascade' => 'प्रपातसंरक्षणं केवलम् ।',
-'protectedpagestext' => 'अधोसूचितपुटानि चालनात् सम्पादनात् वा सुरक्षितानि ।',
 'protectedpagesempty' => 'अनेन विस्तारेण न किमपि पुटं सद्यः न सुरक्षितम् ।',
 'protectedtitles' => 'सुरक्षितानि शीर्षकानि ।',
-'protectedtitlestext' => 'अधो दत्तशीर्षकाणि सर्जनात् रक्षितानि ।',
 'protectedtitlesempty' => 'एतैः विस्तारैः न किमपि शीर्षकं सद्यः परिरक्षितानि ।',
 'listusers' => 'योजक सूचि',
 'listusers-editsonly' => 'केवलं सम्पादनसहितयोजकान् दर्शयतु ।',
@@ -2105,9 +2075,6 @@ See https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
 'allpagesto' => 'तानि पृष्ठानि दर्श्यन्तां येषाम् अन्त्यम् एवम् :',
 'allarticles' => 'सर्वाणि पृष्ठानि',
 'allinnamespace' => 'सर्वपुटानि ($1 नामस्थानम्)',
-'allnotinnamespace' => 'सर्वपुटानि ($1 नामस्थानं विना)',
-'allpagesprev' => 'पूर्वतन',
-'allpagesnext' => 'अग्रिम',
 'allpagessubmit' => 'गम्यताम्',
 'allpagesprefix' => 'उपसर्गयुक्तपुटानि दर्शयतु ।',
 'allpagesbadtitle' => 'दत्तपुटशीर्षकम् अमान्यम् अथवा आन्तर्भाषिकम्, आन्तर्विकीयं वा अस्ति । 
@@ -2437,7 +2404,6 @@ $2 द्वारा सम्पादितां अन्तिमावृ
 'undeletebtn' => 'पुन्थापयतु ।',
 'undeletelink' => 'दृश्यताम्/प्रत्यानीयताम्',
 'undeleteviewlink' => 'दृश्यताम्',
-'undeletereset' => 'पुनर्योजयतु ।',
 'undeleteinvert' => 'चयनं परिवर्तयतु ।',
 'undeletecomment' => 'कारणम् :',
 'undeletedrevisions' => '{{PLURAL:$1| पुनरावृत्तिः पुनस्थापिता|$1 पुनरावृत्तयः पुनस्थापिताः}} अस्ति|सन्ति ।',
@@ -2524,7 +2490,6 @@ $2 द्वारा सम्पादितां अन्तिमावृ
 'block' => 'योजकम् अवरुणद्धु ।',
 'unblock' => 'योजकम् अनवरुणद्धु ।',
 'blockip' => 'प्रयोक्तारं निरुध्नातु',
-'blockip-title' => 'योजकम् अवरुणद्धु ।',
 'blockip-legend' => 'योजकम् अवरुणद्धु ।',
 'blockiptext' => 'विशिष्टं  IP सङ्केतम् अथवा योजकनाम लेखानाधिकारस्य प्राप्तये निम्नदत्तपत्रस्य उपयोगं करोतु ।
 केवलं नाशकत्वम् अवरोद्धुं एतस्य उपयोगं करोतु । [[{{MediaWiki:Policy-url}}|नीतिः]] इत्यानुसारं करणीयम् ।
@@ -2532,7 +2497,6 @@ $2 द्वारा सम्पादितां अन्तिमावृ
 'ipadressorusername' => 'आइ.पी.सङ्केतः अथवा योजकनाम :',
 'ipbexpiry' => 'समाप्तिः :',
 'ipbreason' => 'कारणम् :',
-'ipbreasonotherlist' => 'अन्यत् कारणम्',
 'ipbreason-dropdown' => '* अवरोधस्य सामान्यानि कारणानि ।  
 ** मिथ्या योजकनाम । 
 ** एकाधिकयोजकस्थानं निर्मीय तेषां दुरुपयोगः । 
@@ -2548,8 +2512,6 @@ $2 द्वारा सम्पादितां अन्तिमावृ
 'ipbsubmit' => 'एतं योजकम् अवरुणद्धु ।',
 'ipbother' => 'अन्यः समयः ।',
 'ipboptions' => '२ होराः:2 hours,१ दिनम्:1 day,३ दिनानि:3 days,१ सप्ताहः:1 week,२ सप्ताहौ:2 weeks,१ मासः:1 month,३ मासाः:3 months,६ मासाः:6 months,१ वर्षः:1 year,अनन्तम्:infinite',
-'ipbotheroption' => 'अन्य',
-'ipbotherreason' => 'अपरं/अतिरिक्तं कारणम् :',
 'ipbhidename' => 'सम्पादनेभ्यः आवलीभ्यः च योजकनाम सङ्गोपयतु ।',
 'ipbwatchuser' => 'अस्य योजकस्य योजकपुटानि सम्भाषणपुटानि च अवलोकयतु ।',
 'ipb-disableusertalk' => 'एतं योजकम् अवरोधकाले स्वस्य सम्भाषणपुटस्य सम्पानात् निवारयतु ।',
@@ -2640,7 +2602,6 @@ $2 इति प्रकारस्य अवरोधं कर्तुं 
 अन्तर्जालसेवादायकं सम्पर्कयतु गभीरायाः सुरक्षासमस्यायाः विषये सूचयतु च',
 'sorbsreason' => 'DNSBL उपयोगः {{SITENAME}} कृतस्य भवतः ऐपिसङ्केतः मुक्तप्रतिहस्तकः इति आवलीगतः',
 'sorbs_create_account_reason' => 'DNSBL उपयुक्तः {{SITENAME}} अतः भवतः ऐपिसङ्केतः अवरुद्धः यतः अयं मुक्तप्रतिहस्तकः इति आवलीगतः । अतः भवान् योजकस्थानं निर्मातुं न शक्नोति ।',
-'cant-block-while-blocked' => 'अन्ययोजकान् अवरोद्धुं भवान् नैव शक्नोति यतः भवान् अवरुद्धः ।',
 'cant-see-hidden-user' => 'यं योजकः अवरोद्धं भवान् प्रयतमानः सः पूर्वमेव अवरुद्धः सङ्गुप्तः च ।
 भवान् तु योजकसङ्गोपनाधिकारयुक्तः न । अतः भवान् योजकावरोधं दृष्टुं सम्पादयितुं वा न शक्नोति ।',
 'ipbblocked' => 'भवान् अन्ययोजकान् अवरोद्धुम् विमोचयितुं वा न शक्नोति । यतः भवान् तु अवरुद्धः अस्ति ।',
@@ -2702,7 +2663,6 @@ $2 इति प्रकारस्य अवरोधं कर्तुं 
 अस्मिन् विषये यदि इच्छति तर्हि भवता पुटानि चालनीयानि अथवा संयोजनीयानि ।',
 'movearticle' => 'पृष्ठं चाल्यताम्',
 'moveuserpage-warning' => 'पूर्वसूचा : योजकपुटं चालयितुम् उद्युक्तः । स्मरतु केवलं पुटं स्थानान्तरितं भवति न तु योजकनाम परिवर्तनं न भविष्यति ।',
-'movenologin' => 'न नामाभिलितम्',
 'movenologintext' => ' [[Special:UserLogin|logged in]] पञ्जीकृतयोजकः भवता नामाभिलेखनं करणीयं भवति ।',
 'movenotallowed' => 'पुटानि स्थानान्तरियितुम् अनुमतिः नाश्ति ।',
 'movenotallowedfile' => 'सञ्चिकाः स्थानान्तरयितुम् अनुमतिः नास्ति ।',
@@ -2717,8 +2677,6 @@ $2 इति प्रकारस्य अवरोधं कर्तुं 
 'movepage-moved-noredirect' => 'पुनर्निदेशनसृष्टिः निग्रहितः ।',
 'articleexists' => 'अनेन नाम्ना पृष्ठमेकं पूर्वेऽपि विद्यते, अथवा भवता चितं नाम तु अमान्यमस्ति। कृपया इतरं किमपि नाम चिनोतु।',
 'cantmove-titleprotected' => 'अस्मिन् स्थाने पुटस्थानान्तरणं न भवति । यतः नूतनशीर्षकं सर्जनात् सुरक्षितम् ।',
-'talkexists' => "'''पृष्ठं साफल्येन चालितमस्ति, परं चर्चापृष्ठं चालयितुं न शक्यम्, यतो नवेऽपि पृष्ठे चर्चापृष्ठं विद्यते। कृपया तं स्वयमेव चालयतु।'''",
-'movedto' => 'इदं प्रति चालितम्।',
 'movetalk' => 'सहगामिनं चर्चापृष्ठं चालयतु।',
 'move-subpages' => 'उपपुटनि चालयतु । ($1 पर्यन्तम्)',
 'move-talk-subpages' => 'सम्भाषणपुटानाम् उपपुटानि चालयतु ।($1 पर्यन्तम्)',
@@ -3517,15 +3475,10 @@ $2 इति प्रकारस्य अवरोधं कर्तुं 
 'exif-urgency-high' => 'उन्नतम् ($1)',
 'exif-urgency-other' => 'योजकनिरूपिता आद्यता : $1',
 
-# External editor support
-'edit-externally' => 'बाह्यां प्रणालीम् उपयुज्य इयं सञ्चिका सम्पाद्यताम् ।',
-'edit-externally-help' => '(अधिकासूचनार्थं [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] इत्येतत् दृश्यताम्)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'सर्वाणि',
 'namespacesall' => 'सर्वाणि',
 'monthsall' => 'सर्वाणि',
-'limitall' => 'सर्वाणि',
 
 # Email address confirmation
 'confirmemail' => 'ईपत्रसङ्केतः प्रमाणीक्रियताम्',
@@ -3549,7 +3502,6 @@ $2 इति प्रकारस्य अवरोधं कर्तुं 
 'confirmemail_success' => 'भवतः विद्युन्मानपत्रसङ्केतः इदानीं दृढीकृतः अस्ति । [[Special:UserLogin|log in]]
 अधुना भवान् नामाभिलेखेन विकिविहरस्य आनन्दम् अनुभवितुं शक्नोति ।',
 'confirmemail_loggedin' => 'भवतः विद्युन्मानपत्रसङ्केतः दृढीकृतः ।',
-'confirmemail_error' => 'भवतः दृढीकरणावसरे काचित् समस्या उत्पन्ना ।',
 'confirmemail_subject' => '{{SITENAME}}विद्युन्मानपत्रसङ्केतस्य दृढीकरणम् ।',
 'confirmemail_body' => 'कोऽपि अथवा भवान् $1 इति ऐपिसङ्केतद्वारा {{SITENAME}}इत्यस्मिन् "$2" इति नाम्ना योजकस्थाननिर्माणार्थम् अभ्यर्थनं दत्तवान् ।
 एतत् योजकस्थानं भवतः एव अपि च {{SITENAME}} इत्यस्मिन् उलब्धे विद्युन्मानपत्रसङ्केतः ।
@@ -3768,7 +3720,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'पृष्ठानि तोल्यन्ताम्',
-'compare-selector' => 'पृष्ठसंस्करणानि तोलयतु',
 'compare-page1' => 'पृष्ठम् १',
 'compare-page2' => 'पृष्ठम् २',
 'compare-rev1' => 'संस्करणम् 1',
index a9df4d0..5298a22 100644 (file)
@@ -66,7 +66,6 @@ $messages = array(
 'tog-minordefault' => 'Уларытыылары атын этиллибэтэҕинэ кыра уларытыы курдук бэлиэтээ',
 'tog-previewontop' => 'Хайдах буоларын уларытар түннүк үрдүнэн (иннигэр) көрдөр',
 'tog-previewonfirst' => 'Хайдах буоларын тута көрдөр',
-'tog-nocache' => 'Браузерга сирэйи кэштыыры араар',
 'tog-enotifwatchlistpages' => 'Кэтиир сирэйдэрим уонна билэлэрим уларыйдахтарына e-mail көмөтүнэн биллэр',
 'tog-enotifusertalkpages' => 'Ырытар сирэйим уларыйдаҕына эл. почтанан биллэр',
 'tog-enotifminoredits' => 'Кыра да уларытыы киирдэҕинэ эл. почтанан биллэрээр',
@@ -201,7 +200,6 @@ $messages = array(
 'qbedit' => 'Уларыт',
 'qbpageoptions' => 'Бу сирэй',
 'qbmyoptions' => 'Мин сирэйдэрим',
-'qbspecialpages' => 'Аналлаах сирэйдэр',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -413,9 +411,6 @@ $1',
 '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' => 'Түргэнин хааччахтааһын',
@@ -596,7 +591,7 @@ $2',
 'user-mail-no-body' => 'Кураанах эбэтэр суолтата суох кылгас тиэкистээх суругу ыыта сатаабыт.',
 
 # Change password dialog
-'resetpass' => 'Киирии тылы уларытыы',
+'changepassword' => 'Киирии тылы уларытарга',
 'resetpass_announce' => 'Бу быстах кэмҥэ туттуллар киирии тылынан киирдиҥ. Түмүккэ саҥа киирии тылла суруй:',
 'resetpass_text' => '<!-- Тиэкиһи манна эбэн суруйуҥ -->',
 'resetpass_header' => 'Аат киирии тылын уларытыы',
@@ -986,10 +981,6 @@ IP-аадырыһа эрэ көстөр.
 'revdelete-nooldid-title' => 'Барыл чопчу ыйыллыбата',
 'revdelete-nooldid-text' => 'Бу дьайыыны оҥорорго торуму (торумнары) чуолаан ыйбатаххын,
 эбэтэр торум ончу суох, эбэтэр кистэммит торум.',
-'revdelete-nologtype-title' => 'Сурунаал көрүҥэ ыйыллыбатах',
-'revdelete-nologtype-text' => 'Дьайыыны оҥорор сурунаалыҥ көрүҥүн эппэтэххин.',
-'revdelete-nologid-title' => 'Сурунаал сыыһа суруга',
-'revdelete-nologid-text' => 'Сурунаалга суруллуохтаах сурук туох эрэ сыыһалаах эбэтэр ол сурук олох да суох.',
 'revdelete-no-file' => 'Ыйыллыбыт билэ суох.',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" билэ баччаҕа $2, $3 сотуллубут барылын көрүөххүн баҕараҕын дуо?',
 'revdelete-show-file-submit' => 'Сөп',
@@ -1023,8 +1014,6 @@ $1",
 'logdelete-failure' => "'''Сурунаал дөбөҥө быһаарыллыбата:'''
 $1",
 'revdel-restore' => 'Көстүүтүн уларытыы',
-'revdel-restore-deleted' => 'сотуллубут барыллар',
-'revdel-restore-visible' => 'көстөр барыллар',
 'pagehist' => 'Историятын сирэйэ',
 'deletedhist' => 'Сотуллубут история',
 'revdelete-hide-current' => 'Баччаҕа оҥоһуллубут $2, $1 сурук кистээһинигэр алҕас таҕыста: бу билиҥҥи барыл.
@@ -1101,12 +1090,8 @@ $1",
 # Search results
 'searchresults' => 'Булулунна',
 'searchresults-title' => 'Көрдөөһүн түмүгэ "$1"',
-'searchresulttext' => 'Көрдөөһүн туһунан сиһилии ааҕыаххын баҕардаххына [[{{MediaWiki:Helppage}}|маны]] көр.',
-'searchsubtitle' => 'Эн [[:$1]] көмөтүнэн ([[Special:Prefixindex/$1|"$1" саҕаланар сирэйдэри ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" сигэнэр сирэйдэри]]) көрдөөбүтүҥ',
-'searchsubtitleinvalid' => 'По запросу «$1»',
 'toomanymatches' => 'Наһаа элбэх ыйытыы төнүннэ, бука диэн атыннык көрдөө',
 'titlematches' => 'Ыстатыйалар ааттара хоһулаһар',
-'notitlematches' => 'Ыстатыйалар ааттара хоһуласпаттар',
 'textmatches' => 'Ыстатыйалар истэрэ хатыланар',
 'notextmatches' => 'Ыстатыйалар истэрэ хатыламмат',
 'prevn' => 'инники {{PLURAL:$1|$1}}',
@@ -1115,10 +1100,8 @@ $1",
 'nextn-title' => 'Бу кэннинээҕи $1 {{PLURAL:$1|сурук|суруктар}}',
 'shown-title' => 'Сирэйгэ $1 {{PLURAL:$1|суругу|суруктары}} көрдөр',
 'viewprevnext' => 'Көр ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Көрдөөһүн туруоруулара',
 'searchmenu-exists' => "'''Бу биикигэ бу сирэй маннык ааттаах \"[[\$1]]\"'''",
 'searchmenu-new' => "'''Бу биикигэ \"[[:\$1]]\" сирэйи айарга!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Маннык префикстаах сирэйдэри көрөргө]]',
 'searchprofile-articles' => 'Ыстатыйалар истэрэ',
 'searchprofile-project' => 'Көмө уонна Бырайыак сирэйдэрэ',
 'searchprofile-images' => 'Мультимедиа',
@@ -1139,20 +1122,16 @@ $1",
 'search-interwiki-default' => '$1 түмүгэ:',
 'search-interwiki-more' => '(өссө)',
 'search-relatedarticle' => 'Сигэнэр',
-'mwsuggest-disable' => 'Көрдөөһүн этэн биэриилэрин араар',
 'searcheverything-enable' => 'Туох баар аат далларыгар көрдөөһүн',
 'searchrelated' => 'сибээстэммит',
 'searchall' => 'бары',
 'showingresults' => 'Манна {{PLURAL:$1|түмүк|түмүктэр}} {{PLURAL:$1|көрдөрүлүннэ|көрдөрүлүннүлэр}} <strong>$1</strong> , мантан саҕалаан №&nbsp;<strong>$2</strong>.',
 'showingresultsnum' => 'Манна {{PLURAL:$3|түмүк|түмүктэр}} {{PLURAL:$3|көрдөрөлүннэ|көрдөрүлүннүлэр}} <strong>$3</strong>, мантан саҕалаан №&nbsp;<strong>$2</strong>.',
 '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' => 'Бэлиэтээмэ',
@@ -1164,7 +1143,6 @@ $1",
 'preferences' => 'Уларытыылар',
 'mypreferences' => 'Туруоруулар',
 'prefs-edits' => 'Көннөрүү ахсаана:',
-'changepassword' => 'Киирии тылы уларытарга',
 'prefs-skin' => 'Тас көстүү',
 'skin-preview' => 'Хайдах буолара',
 'datedefault' => 'Көннөрү көстүүтэ',
@@ -1187,13 +1165,11 @@ $1",
 'prefs-email' => 'Email туруоруулара',
 'prefs-rendering' => 'Тас көрүҥэ',
 'saveprefs' => 'Бигэргэт',
-'resetprefs' => 'Бигэргэтиллибэтэх уларыйыылары сот',
 'restoreprefs' => 'Туруоруулары саҥаттан (салааларга барыларыгар)',
 'prefs-editing' => 'Уларытыы',
 'rows' => 'Строкаалара:',
 'columns' => 'Колонкалара:',
 'searchresultshead' => 'Көрдөөһүн түмүгэ',
-'resultsperpage' => 'Сирэйгэ булуллубут суруктар ахсааннара:',
 'stub-threshold' => '<a href="#" class="stub">омооннорго ыйынньыктары</a> оҥоруу боруога:',
 'stub-threshold-disabled' => 'Арахсыбыт',
 'recentchangesdays' => 'Хас хонук иһинэн уларытыылары көрдөрөргө:',
@@ -1205,7 +1181,6 @@ $1",
 'localtime' => 'Олохтоох кэмим:',
 'timezoneuseserverdefault' => 'Сиэрбэр туруоруутунан ($1)',
 'timezoneuseoffset' => 'Атын (сыҕарыйыытын көрдөр)',
-'timezoneoffset' => 'Сыҕарыйыы¹:',
 'servertime' => 'Сиэрбэр бириэмэтэ:',
 'guesstimezone' => 'Интэриниэтим бырагыраамматыттан ылан толор',
 'timezoneregion-africa' => 'Африка',
@@ -1457,7 +1432,6 @@ $1 {{PLURAL:$1|бэлиэттэн|бэлиэттэн (буукубаттан)}}
 'recentchanges-label-bot' => 'Бу уларытыыны робот оҥорбут',
 'recentchanges-label-unpatrolled' => 'Бу уларытыы өссө ботурууллана илик',
 'recentchanges-legend-newpage' => '$1 — саҥа сирэй',
-'rcnote' => "{{PLURAL:$2|хонук|'''$2''' хонуктар}} иһинэн бүтэһик {{PLURAL:$1|'''1''' уларыйыы|'''$1''' уларыйыылар}}, $5, $4.",
 'rcnotefrom' => "Мантан '''$2''' маныаха '''$1''' дылы уларыыйылар көрдөрүлүннүлэр.",
 'rclistfrom' => 'Бу кэм $1 кэнниттэн оҥоһуллубуттары көрдөр',
 'rcshowhideminor' => '$1 кыра уларыйыылары',
@@ -1955,10 +1929,8 @@ $1',
 'protectedpages' => 'Көмүскэммит ыстатыйалар',
 'protectedpages-indef' => 'Болдьоҕо суох эрэ көмүскэллэр',
 'protectedpages-cascade' => 'Каскаадынан эрэ көмүскэнии',
-'protectedpagestext' => 'Бу ыстатыйалар аатын уларытартан уонна көннөрөртөн көмүскэммиттэр',
 'protectedpagesempty' => 'Билигин этиллибит параметрдаах көмүскэниллибит ыстатыйалар суохтар.',
 'protectedtitles' => 'Көмүскэммит ааттар',
-'protectedtitlestext' => 'Бу ааттары оҥорор/айар бобуллар',
 'protectedtitlesempty' => 'Биир да аат бу параметрдарынан көмүскэммэт',
 'listusers' => 'Кыттааччылар испииһэктэрэ',
 'listusers-editsonly' => 'Саатар биир көннөрүүнү оҥорбут кыттааччылары көрдөр',
@@ -2009,9 +1981,6 @@ $1',
 'allpagesto' => 'Көрдөрүүнү манна тохтот:',
 'allarticles' => 'Бары ыстатыйалар',
 'allinnamespace' => 'Бары сирэйдэр (пространство имен $1)',
-'allnotinnamespace' => 'Бары сирэйдэр ($1 namespace-тан уратылар)',
-'allpagesprev' => 'Бу иннинээҕилэр',
-'allpagesnext' => 'Бу кэнниттэн кэлэллэр',
 'allpagessubmit' => 'Толор',
 'allpagesprefix' => 'Мантан саҕаланар сирэйдэри бул:',
 'allpagesbadtitle' => 'Сирэй маннык ааттанара сатаммат: аакка туттуллуо суохтаах бэлиэлэрдээх эбэтэр тыллар ыккардыларыгар туһаныллар ыйынньыктаах.',
@@ -2347,7 +2316,6 @@ $UNWATCHURL
 'undeletebtn' => 'Төннөр',
 'undeletelink' => 'көрүү/төннөрүү',
 'undeleteviewlink' => 'көрүү',
-'undeletereset' => 'Саҥаттан',
 'undeleteinvert' => 'Хараардыллыбыты инверсиялаа',
 'undeletecomment' => 'Төрүөтэ:',
 'undeletedrevisions' => '{{PLURAL:$1|1 уларытыы|$1 уларытыы}} төннөрүлүннэ',
@@ -2435,7 +2403,6 @@ $1',
 'block' => 'Кыттааччыны хааччахтааһын',
 'unblock' => 'Кытааччы хааччаҕын устуу',
 'blockip' => 'IP аадырыстан киириини бобуу',
-'blockip-title' => 'Кыттааччыны бобуу',
 'blockip-legend' => 'Кыттааччыны хааччахтааһын',
 'blockiptext' => 'Ханнык эмит IP-ттан суруйары манна баар форманы туһанан боп.
 Вандализмы утаран уонна [[{{MediaWiki:Policy-url}}]]
@@ -2445,7 +2412,6 @@ $1',
 'ipadressorusername' => 'IP аадырыһа эбэтэр кыттааччы аата:',
 'ipbexpiry' => 'Түмүктэниэ:',
 'ipbreason' => 'Төрүөтэ:',
-'ipbreasonotherlist' => 'Атын биричиинэ',
 'ipbreason-dropdown' => '* Бобуу сүрүн биричиинэлэрэ
 ** Сымыйаны суруйуу
 ** Сирэй иһинээҕитин суох оҥоруу
@@ -2461,8 +2427,6 @@ $1',
 'ipbsubmit' => 'Бу кыттааччыны тохтот',
 'ipbother' => 'Атын кэм:',
 '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',
-'ipbotheroption' => 'атын',
-'ipbotherreason' => 'Атын/эбии биричиинэлэр:',
 'ipbhidename' => 'Кыттааччы аатын көннөрүүлэргэ уонна испииһэктэргэ көрдөрүмэ',
 'ipbwatchuser' => 'Кыттааччы бэйэтин туһунан сирэйин уонна ырытыытын сирэйин кэтииргэ',
 'ipb-disableusertalk' => 'Бу кыттааччы бэйэтин ырытыы сирэйигэр суруйарын хааччахтааһын',
@@ -2549,7 +2513,6 @@ $1',
 'sorbsreason' => 'Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар.',
 'sorbs_create_account_reason' => 'Эн IP-ҥ {{SITENAME}} саайт DNSBL-гар аһаҕас прокси быһыытынан сылдьар. Саҥаттан бэлиэтэнэр кыаҕыҥ суох.',
 'xffblockreason' => 'X-Forwarded-For баһыгар баар IP-аадырыс бобуллубут. Бу IP Эйиэнэ эбэтэр туһанар проксиҥ гиэнэ буолуон сөп. Бобуу төрүөтэ маннык эбит: $1',
-'cant-block-while-blocked' => 'Бэйэҥ хааччахтаммыт кэмҥэр атын кыттааччылары хааччахтыыр кыаҕыҥ суох.',
 'cant-see-hidden-user' => 'Эн хааччахтаары гыммыт кыттааччыҥ урут хааччахтаммыт уонна кистэммит эбит. Кыттааччылары кистиир кыаҕыҥ суох буолан ол туһунан суругу көрөр да уларытар да быраабыҥ суох.',
 'ipbblocked' => 'Атын кыттааччылары хааччахтыыр да, хааччахтарын да устар кыаҕыҥ суох, тоҕо диэтэххэ бэйэҥ хааччахтааххын',
 'ipbnounblockself' => 'Эн бэйэҥ хааччаххын кыайан устубаккын',
@@ -2610,7 +2573,6 @@ $1',
 Ити түгэннэргэ сирэйдэри бэйэҥ көһөрүөхтээххин эбэтэр холбуохтааххын.',
 'movearticle' => 'Бу аатын уларыт:',
 'moveuserpage-warning' => "'''Болҕой:''' Эн кыттааччы тус сирэйин аатын уларытаары гынныҥ. Инньэ гыннаххына сирэй аата эрэ уларыйыа, кыттааччы бэйэтин аата уларыйыа '''суоҕа'''.",
-'movenologin' => 'Ааккын билиһиннэрбэтэххин',
 'movenologintext' => 'Эн аакын [[Special:UserLogin|билиһиннэрдэххинэ]] эрэ сирэй аатын уларытар кыахтаныаҥ.',
 'movenotallowed' => 'Cирэйдэр ааттарын уларытар кыаҕыҥ суох.',
 'movenotallowedfile' => 'Билэлэр ааттарын уларытар кыаҕыҥ суох.',
@@ -2627,8 +2589,6 @@ $1',
 маннык аат көҥүллэммэт эбит.
 Атын аатта таларгар көрдөһөбүт.',
 'cantmove-titleprotected' => 'Сирэйи көһөрөр кыаҕыҥ суох: саҥа аат оҥоһуллара бобуллубут',
-'talkexists' => "'''Сирэй аата уларыйда, ол гынан баран ырытыы аата сатаан уларыйбата, тоҕо диэтэххэ маннык ааттаах ырытыы сирэйэ баар эбит. Онон бэйэҥ ол икки ырытыы сирэйдэрин холбууруҥ буоллар.'''",
-'movedto' => 'аатын манныкка уларытыллыбыт:',
 'movetalk' => 'Сөп түбэһэр ырытыы сирэйин аатын эмиэ уларыт',
 'move-subpages' => 'Анныкы сирэйдэр (подстраницы) ааттарын уларытыы ($1 дылы)',
 'move-talk-subpages' => 'Ырытыы анныкы сирэйдэрин (подстраницы) ааттарын уларытыы ($1 дылы)',
@@ -3461,15 +3421,10 @@ $1',
 'exif-urgency-high' => 'Үрдүк ($1)',
 'exif-urgency-other' => 'Кыттааччы эппит приоритета ($1)',
 
-# External editor support
-'edit-externally' => 'Бу билэни таһынааҕы бырагыраамма көмөтүнэн уларытарга',
-'edit-externally-help' => 'Сиһилии бу ыйынньыгынан баран көр: [https://www.mediawiki.org/wiki/Manual:External_editors туруоруулар туһунан].',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'бары',
 'namespacesall' => 'бары',
 'monthsall' => 'бары',
-'limitall' => 'бары',
 
 # Email address confirmation
 'confirmemail' => 'Электроннай аадырыһы бигэргэтии',
@@ -3493,7 +3448,6 @@ $1',
 'confirmemail_success' => 'Электроннай аадырыһыҥ бигэргэтилиннэ.
 [[Special:UserLogin|Ааккын этэн]] биикигэ киириэххин сөп.',
 'confirmemail_loggedin' => 'Электроннай почтаҥ аадырыһа бигэргэтилиннэ.',
-'confirmemail_error' => 'Бигэргэтии кэмигэр моһол таҕыста.',
 'confirmemail_subject' => '{{SITENAME}}: эл. почта аадырыһын бигэргэтии',
 'confirmemail_body' => 'Ким эрэ, баҕар эн буолуо бу IP-ттан: $1, {{SITENAME}} сиэрбэригэр
 «$2» диэн ааты бэлиэтээтэ уонна бу электроннай аадырыһы ыйда.
@@ -3733,7 +3687,6 @@ MediaWiki туһалаах буоллун диэн тарҕатыллар, ол
 
 # Special:ComparePages
 'comparepages' => 'Сирэйдэри тэҥнииргэ',
-'compare-selector' => 'Сирэйдэр барылларын тэҥнииргэ',
 'compare-page1' => 'Бастакы сирэй',
 'compare-page2' => 'Иккис сирэй',
 'compare-rev1' => 'Бастакы барыл',
index 9d46180..4741e2e 100644 (file)
@@ -42,7 +42,6 @@ $messages = array(
 'tog-minordefault' => 'Etohoṕre sanam joṛao purạoanaḱko do bekor unuduḱ lekate cinhạkma',
 'tog-previewontop' => 'Joṛao bakso purạo lahare unuduḱ hoyoḱma',
 'tog-previewonfirst' => 'Pạhil joṛao purạore unuduḱ hoyoḱma',
-'tog-nocache' => 'Brajar sakam reaḱ kasiṅ bondoemẽ',
 'tog-enotifwatchlistpages' => 'E-mailạńme one tinre in̕aḱ n̕eloḱ tạlika do bodolok',
 'tog-enotifusertalkpages' => 'E-mailạn̕me one tinre in̕aḱ roṛaḱ laṛcaṛ sakam do bodoloḱa',
 'tog-enotifminoredits' => 'E-mailạn̕me arhõ one tinre in̕aḱ sakamre huḍiń kạmi hoyoḱ',
@@ -162,7 +161,6 @@ $messages = array(
 'qbedit' => 'Tońge',
 'qbpageoptions' => 'Noa sakam',
 'qbmyoptions' => 'In̕anḱ sakamko',
-'qbspecialpages' => 'Asokay teaḱ sakamko',
 'faq' => 'Baḍae kupuliko',
 'faqpage' => 'Project:FAQ',
 
@@ -358,9 +356,6 @@ Pasec eṭaḱ hoṛ noa do lahareko get giḍi akada.',
 'badtitletext' => 'Amaḱ nehorakaḱ sakam ńutum do bań puraoa, bạnuka, se be sudhrạo joṛao bhitri katha se bhitri wiki ńutum.
 Noa re do mit se aema bisó menaḱa oka do ńutumre bań beoharok.',
 'querypage-no-updates' => 'Noa sakam reaḱ nahaḱ halot bondo gea. Nonḍe doho akana ḍaṭako do baṅ saphaḱa.',
-'wrong_wfQuery_params' => 'wfQuery ()-re vul perameṭar em hoeakana<br />
-Fańson: $1<br />
-Query: $2',
 'viewsource' => 'Vitrireaḱ ńelme',
 'viewsource-title' => '$1 renaḱ ńamoḱ ṭhại ńelmẽ',
 'actionthrottled' => 'Kạmi reaḱ dhara bại',
@@ -460,7 +455,7 @@ Arhõ kurumuṭue lahare dayakate thoṛagan tạṅgiemẽ.',
 'user-mail-no-addy' => 'Jahan e-mail ṭhikana bạgi kate e-mail kul kurumuṭu hoena.',
 
 # Change password dialog
-'resetpass' => 'Oku nambar bodol',
+'changepassword' => 'Uku nombor bodolme',
 'resetpass_header' => 'Ekaunṭ oku namber bodol',
 'oldpassword' => 'Mare uku nombor',
 'newpassword' => 'Nãwã oku nomber',
@@ -650,8 +645,6 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'rev-delundel' => 'ńeloḱ/danaṅ',
 'rev-showdeleted' => 'Uduḱme',
 'revisiondelete' => 'Get giḍi/nãwã aro baṅ getgiḍi',
-'revdelete-nologtype-title' => 'Jahan cạbi ṭayep baṅ em emakana',
-'revdelete-nologtype-text' => 'Am do paseć noa kạmie lạgit́te jahan cạbi bam bachao akada.',
 'revdelete-show-file-submit' => 'Hẽ',
 'revdelete-hide-text' => 'Nãwã aroe olko ukuemẽ',
 'revdelete-hide-image' => 'Rẽt reaḱ babotko ukue mẽ',
@@ -663,8 +656,6 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'revdelete-radio-unset' => 'Baṅ',
 'revdelete-log' => 'Babot:',
 'revdel-restore' => 'Judạ lekate ńel',
-'revdel-restore-deleted' => 'giḍikaḱ ńel ruạṛ',
-'revdel-restore-visible' => 'Ńeloḱ leka paṛhao ruạṛ',
 'pagehist' => 'Sakam reaḱ jạṛ',
 'deletedhist' => 'Get giḍi jạṛ',
 'revdelete-reasonotherlist' => 'Eṭaḱak karon',
@@ -704,7 +695,7 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'searchprofile-everything-tooltip' => 'Sanam ko modre sẽndra ( roṛ sakam modre hõ)',
 'searchprofile-advanced-tooltip' => 'Judạ ńutum re sẽndra',
 'search-result-size' => '$1 ({{PLURAL:$2 1 Aṛaṅ$2 Aṛaṅko}})',
-'search-result-category-size' => '{{PLURAL: $1 1 gãoren $1 gãota renko}} ({{PLURAL: $2 1 kạṭic rokom sokom $ 2 goṭen}}, {{PLURAL:$3 1 rẽt $3 rẽtko}})',
+'search-result-category-size' => '{{PLURAL:$1 1 gãoren $1 gãota renko}} ({{PLURAL:$2 1 kạṭic rokom sokom $ 2 goṭen}}, {{PLURAL:$3 1 rẽt $3 rẽtko}})',
 'search-redirect' => '($1 te sujhi doṛha )',
 'search-section' => '(Pahaṭa $1)',
 'search-suggest' => 'Am do cet́ $1 em menocoyet tãhẽkana',
@@ -722,7 +713,6 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 # Preferences page
 'preferences' => 'Pạsindko',
 'mypreferences' => 'Iñaḱ pạsindko',
-'changepassword' => 'Uku nombor bodolme',
 'prefs-skin' => 'Harta',
 'skin-preview' => 'Ńel, Unuduḱ',
 'datedefault' => 'Pạsind banuḱa',
@@ -730,7 +720,6 @@ Unuduḱ: '''({{int:cur}})''' = nahaḱ nãwã aroeko saõte tulạo, '''({{int:
 'prefs-changeemail' => 'E-mail ṭhikạna bodolme',
 'prefs-setemail' => 'E-mail ṭhikana benaome',
 'saveprefs' => 'Rukhiyạymẽ',
-'resetprefs' => 'Baṅ rukhiyạaḱ ocogmẽ',
 'rows' => 'Sạrko:',
 'searchresultshead' => 'Sendra',
 'timezoneregion-africa' => 'Aphrika',
@@ -790,7 +779,6 @@ Amaḱ e-mail ṭhikạna do bań cabaḱa tinre onko do ko beohara',
 'recentchanges-label-minor' => 'Noado hudiń mạchi sompadonkana',
 'recentchanges-label-bot' => 'Noa sompadon do bot darate purauena',
 'recentchanges-label-unpatrolled' => 'Noa sompadon do ńit́ hạbić baṅ ńel ńamakana',
-'rcnote' => "Latar reaḱ {{PLURAL:$2 dinre '''$2''' dinre}} hoyena {{PLURAL:$1 '''1''' '''$1'''}}gan bodol latare uduḱena ((okare nitaḱ okte ar tạrikh do $5, $4).",
 'rcnotefrom' => '$2 habić bodolak ko do latare ńeloḱkana',
 'rclistfrom' => 'Nãwã  bodolko uduḱme $1 khon ehoṕkate',
 'rcshowhideminor' => '$1 kaṭic culuń tońge',
@@ -899,8 +887,6 @@ Noa reaḱ pasnao katha [$2 rẽt pasnao sakam] latare emena',
 'allpages' => 'joto sakam',
 'alphaindexline' => '$1 hạbić $2',
 'allarticles' => 'Sanam sakam',
-'allpagesprev' => 'Tayom sećaḱ',
-'allpagesnext' => 'Laha seć',
 'allpagessubmit' => 'Calaḱme',
 
 # Special:Categories
@@ -1017,7 +1003,6 @@ Noa reaḱ pasnao katha [$2 rẽt pasnao sakam] latare emena',
 # Block/unblock
 'block' => 'Beoharić esedem',
 'blockip' => 'Beoharić esedem',
-'blockip-title' => 'Beoharić esedem',
 'blockip-legend' => 'Beoharić esedem',
 'ipboptions' => '2 Ghonṭa : 2 hours, 1 maha:1 day, 3 maha : 3 days,1 hapta :1 week, 2 hapta : 2 weeks, 1 cando :1 month, 3 cando : 3 months,6 cando :6 months,  1 serma :1 year,  Aemamaha : infinite',
 'ipblocklist' => 'Beoharic esetgeyay',
@@ -1158,10 +1143,6 @@ jeleń',
 'exif-datetime' => 'Rẽt bodol reaḱ tạrikh ar okte',
 'exif-artist' => 'Onoliạ',
 
-# External editor support
-'edit-externally' => 'Noa rẽt tońge joṛao lạgitte bahre reaḱ koejoń  beoharme',
-'edit-externally-help' => '(Nonḍe ńelme [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] bạṛtite baḍay lạgit)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Sanam, sanamak, sanamko',
 'namespacesall' => 'sanam',
index 7eba0ea..a486599 100644 (file)
@@ -78,7 +78,6 @@ $messages = array(
 'tog-minordefault' => 'Signa totu is acontzos comente minores pro difetu',
 'tog-previewontop' => "Ammustra s'antiprima a subra sa casella de acontzu e no a suta",
 'tog-previewonfirst' => "Ammustra s'antiprima pro su primu acontzu",
-'tog-nocache' => "Disativa sa ''cache'' pro is pàginas de su ''browser''",
 'tog-enotifwatchlistpages' => 'Spedi·mi una missada eletrònica cando una pàgina de sa watchlist mea est acontzada',
 'tog-enotifusertalkpages' => 'Spedi·mi una missada eletrònica cando sa pàgina de is cuntierras mias est acontzada',
 'tog-enotifminoredits' => 'Spedi·mi una missada eletrònica fintzas pro is acontzos minores de is pàginas',
@@ -194,7 +193,6 @@ $messages = array(
 'qbedit' => 'Acontza',
 'qbpageoptions' => 'Possibilidades de sa pàgina',
 'qbmyoptions' => 'Is preferèntzias meas',
-'qbspecialpages' => 'Pàginas spetziales',
 'faq' => 'Pregontas/Respostas (FAQ)',
 'faqpage' => 'Project:FAQ',
 
@@ -436,7 +434,7 @@ Pro praxere, cando dda retzis identìfica·ti torra.',
 'loginlanguagelabel' => 'Limba: $1',
 
 # Change password dialog
-'resetpass' => 'Càmbia sa password',
+'changepassword' => 'Càmbia password',
 'resetpass_header' => 'Càmbia sa password de su account',
 'oldpassword' => 'Password betza:',
 'newpassword' => 'Password noa:',
@@ -582,8 +580,6 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
 'revdelete-show-file-submit' => 'Eja',
 'revdelete-radio-set' => 'Eja',
 'revdel-restore' => 'Muda sa visibilidade',
-'revdel-restore-deleted' => 'revisiones burradas',
-'revdel-restore-visible' => 'revisiones visìbiles',
 'pagehist' => 'Istòria de sa pàgina',
 'deletedhist' => 'Istòria fuliada',
 'revdelete-reasonotherlist' => 'Àteru motivu',
@@ -606,18 +602,13 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
 # Search results
 'searchresults' => 'Resurtados de sa chirca',
 'searchresults-title' => 'Resurtados pro sa chirca de "$1"',
-'searchresulttext' => 'Pro àteras informatziones a subra sa chirca intre de {{SITENAME}}, càstia [[{{MediaWiki:Helppage}}|Chirca in {{SITENAME}}]].',
-'searchsubtitle' => 'Chirca de \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|totu is pàginas ca incumentzant pro "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totu is pàginas chi ligant a "$1"]])',
-'searchsubtitleinvalid' => 'As chircadu "$1"',
 'titlematches' => "Currispondèntzias in su tìtulu de s'artìculu",
-'notitlematches' => 'Peruna currispondentzia de is tìtulos de pàgina',
 'textmatches' => "Currispondèntzias in su testu de s'artìculu",
 'notextmatches' => "Peruna currispondèntzia in su testu de s'artìculu",
 'prevn' => '{{PLURAL:$1|cabudianu|cabudianos $1}}',
 'nextn' => '{{PLURAL:$1|imbeniente|imbenientes $1}}',
 'shown-title' => 'Ammustra $1 {{PLURAL:$1|resurtadu|resurtados}} pro pàgina',
 'viewprevnext' => 'Càstia ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Possibilidades de chirca',
 'searchprofile-everything' => 'Totu',
 'searchprofile-advanced' => 'Avantzada',
 'searchprofile-articles-tooltip' => 'Chirca in $1',
@@ -635,13 +626,9 @@ Cosas de ammentare: '''({{int:cur}})''' = diferèntzias cun sa versione currente
 'searchall' => 'totu',
 'showingresults' => "Inoghe sighende {{PLURAL:$1|benit ammustradu '''1''' resurtadu|benint ammustrados '''$1''' resurtados}} incumentzende dae su nùmeru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultadu '''$1''' de '''$3'''|Resultadus '''$1 - $2''' de '''$3'''}} pro '''$4'''",
-'nonefound' => "'''Annota''': sa chirca est fata \"pro definidura\" sceti in unos cantos Nùmene-logos.
-Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàginas de cuntierra, template, etc), opuru sèbera comente prefissu su pretzisu Nùmene-logu ki boles.",
-'powersearch' => 'Chirca',
 'powersearch-legend' => 'Chirca delantada',
 'powersearch-ns' => 'Chirca in su nùmene-logu:',
 'powersearch-redir' => 'Lista re-indiritzamentos',
-'powersearch-field' => 'Chirca',
 'powersearch-togglelabel' => 'Seletziona:',
 'powersearch-toggleall' => 'Totu',
 'powersearch-togglenone' => 'Nudda',
@@ -650,7 +637,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'preferences' => 'Preferèntzias',
 'mypreferences' => 'Preferèntzias meas',
 'prefs-edits' => 'Nùmeru de acontzos:',
-'changepassword' => 'Càmbia password',
 'prefs-skin' => 'Bisura',
 'skin-preview' => 'Antiprima',
 'prefs-datetime' => 'Data e ora',
@@ -660,18 +646,15 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'prefs-misc' => 'Àteras preferèntzias',
 'prefs-resetpass' => 'Càmbia password',
 'saveprefs' => 'Sarva preferèntzias',
-'resetprefs' => 'Re-imposta is preferèntzias',
 'prefs-editing' => 'Box de acontzadura',
 'rows' => 'Lìnias:',
 'columns' => 'Colunnas:',
 'searchresultshead' => 'Settaggio delle preferenze per la ricerca',
-'resultsperpage' => 'Risultati da visualizzare per pagina',
 'stub-threshold-disabled' => 'Disativadu',
 'recentchangescount' => 'Nùmeru de acontzos de amostare pro definidura:',
 'savedprefs' => 'Is preferèntzias tuas sunt stadas sarbadas.',
 'timezonelegend' => 'Zona de oràriu:',
 'localtime' => 'Ora locale:',
-'timezoneoffset' => 'Diferèntzia¹:',
 'timezoneregion-africa' => 'Àfrica',
 'timezoneregion-america' => 'Amèrica',
 'timezoneregion-antarctica' => 'Antàrtide',
@@ -772,7 +755,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
 'recentchanges-label-minor' => 'Custu est unu acontzu minore',
 'recentchanges-label-bot' => 'Custu acontzu est stadu fatu dae unu bot',
 'recentchanges-legend-newpage' => '$1 - pàgina noa',
-'rcnote' => "Inoghe sighende {{PLURAL:$1|b'est s'ùrtima mudàntzia|bi sunt is ùrtimas '''$1''' mudàntzias}} {{PLURAL:$2|in s'ùrtima die|in is ùrtimas '''$2''' dies}}; is datos sunt agiornados a  $5, $4.",
 'rcnotefrom' => "Sas chi sighint sunt sas mudàntzias dae '''$2''' (fintzas a '''$1''').",
 'rclistfrom' => 'Ammustra mudàntzias dae $1',
 'rcshowhideminor' => '$1 acontzos minores',
@@ -1169,18 +1151,15 @@ Chi est istada creada una pàgina cun su matessi tìtulu, is revisiones recupera
 
 # Block/unblock
 'blockip' => 'Blocca usuàriu',
-'blockip-title' => 'Blocca usuàriu',
 'blockip-legend' => 'Blocca usuàriu',
 'blockiptext' => "Usa il modulo sottostante per bloccare l'accesso con diritto di scrittura da uno specifico indirizzo IP. Questo blocco deve essere operato SOLO per prevenire atti di vandalismo, ed in stretta osservanza dei principi tutti della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]]. Il blocco non può in nessun caso essere applicato per motivi ideologici.
 Scrivi un motivo specifico per il quale questo indirizzo IP dovrebbe a tuo avviso essere bloccato (per esempio, cita i titoli di pagine eventualmente già oggetto di vandalismo editoriale).",
 'ipadressorusername' => 'Indiritzu IP o nùmene usuàriu:',
 'ipbexpiry' => 'Scadèntzia:',
 'ipbreason' => 'Motivu:',
-'ipbreasonotherlist' => 'Àteru motivu',
 'ipbsubmit' => 'Blocca custu usuàriu',
 'ipbother' => 'Àteru perìodu:',
 'ipboptions' => '2 oras:2 hours,1 die:1 day,3 dies:3 days,1 chida:1 week,2 chidas:2 weeks,1 mese:1 month,3 meses:3 months,6 meses:6 months,1 annu:1 year,infinidu:infinite',
-'ipbotheroption' => 'àteru',
 'badipaddress' => "S'indiritzu IP indicadu non est currègidu.",
 'blockipsuccesssub' => 'Bloccu esecutivu',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] è stadu bloccadu. <br />
@@ -1245,7 +1224,6 @@ pro praxere depes èsser seguru de àer cumpresu is cunsighèntzias prima de sig
 
 In custos casos, si cheres, depes mòvere a manu su cuntènnidu de sa pàgina.",
 'movearticle' => 'Move sa pàgina',
-'movenologin' => 'No identificadu (login)',
 'movenologintext' => 'Depes èsser unu usuàriu registradu e [[Special:UserLogin|identificadu]] pro pòder mòver una pàgina',
 'newtitle' => 'Tìtulu nou:',
 'move-watch' => 'Pone ogru a custa pàgina',
@@ -1254,8 +1232,6 @@ In custos casos, si cheres, depes mòvere a manu su cuntènnidu de sa pàgina.",
 'movepage-moved' => '\'\'\'"$1" est istada mòvida a "$2"\'\'\'',
 'articleexists' => "Una pàgina cun custu nùmene esistit giai, o su nùmene ki as seberadu no est bàlidu.
 Pro praxere sèbera un'àteru nùmene.",
-'talkexists' => "'''Su movimentu de sa pàgina est andadu bene, ma no est stadu possìbile mòver sa pàgina de cuntierras pro ite nde esistit giai un'àtera cun su matessi tìtulu. Pro praxere giunghe tue su cuntestu de sa pàgina betza.'''",
-'movedto' => 'mòvida a',
 'movetalk' => 'Move sa pàgina de cuntierra galu',
 'movelogpage' => 'Moviduras',
 'movereason' => 'Motivu:',
@@ -1436,15 +1412,10 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
 
 'exif-sharpness-0' => 'Normale',
 
-# External editor support
-'edit-externally' => 'Acontza custu file usendi unu programma de foras',
-'edit-externally-help' => '(Pro àteras informatziones càstia is [https://www.mediawiki.org/wiki/Manual:External_editors istrutziones])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totu',
 'namespacesall' => 'totu',
 'monthsall' => 'totu',
-'limitall' => 'totu',
 
 # Email address confirmation
 'confirmemail' => "Cunfirma s'indiritzu e-mail",
index f3e97f4..32c6c06 100644 (file)
@@ -58,7 +58,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'TitoloErrato' ),
        'Blankpage'                 => array( 'PaginaVuota' ),
        'Block'                     => array( 'Blocca' ),
-       'Blockme'                   => array( 'BloccaProxy' ),
        'Booksources'               => array( 'RicercaISBN' ),
        'BrokenRedirects'           => array( 'RedirectErrati' ),
        'Categories'                => array( 'Categorie' ),
@@ -70,10 +69,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'CreaAccount' ),
        'Deadendpages'              => array( 'PagineSenzaUscita' ),
        'DeletedContributions'      => array( 'ContributiCancellati' ),
-       'Disambiguations'           => array( 'Disambigua' ),
        'DoubleRedirects'           => array( 'RedirectDoppi' ),
        'EditWatchlist'             => array( 'ModificaOsservati', 'ModificaOsservatiSpeciali', 'ModificaListaSeguiti' ),
        'Emailuser'                 => array( 'InviaEMail' ),
+       'ExpandTemplates'           => array( 'EspandiTemplate' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMenoRevisioni' ),
        'FileDuplicateSearch'       => array( 'CercaFileDuplicati' ),
@@ -117,6 +116,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'PagineProtette' ),
        'Protectedtitles'           => array( 'TitoliProtetti' ),
        'Randompage'                => array( 'PaginaCasuale' ),
+       'RandomInCategory'          => array( 'CasualeInCategoria' ),
        'Randomredirect'            => array( 'RedirectCasuale' ),
        'Recentchanges'             => array( 'UltimeModifiche' ),
        'Recentchangeslinked'       => array( 'ModificheCorrelate' ),
@@ -138,8 +138,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'TemplateNonUsati' ),
        'Unwatchedpages'            => array( 'PagineNonOsservate' ),
        'Upload'                    => array( 'Carica' ),
-       'Userlogin'                 => array( 'Entra', 'Login' ),
-       'Userlogout'                => array( 'Esci', 'Logout' ),
+       'Userlogin'                 => array( 'Entra' ),
+       'Userlogout'                => array( 'Esci' ),
        'Userrights'                => array( 'PermessiUtente' ),
        'Version'                   => array( 'Versione' ),
        'Wantedcategories'          => array( 'CategorieRichieste' ),
@@ -174,7 +174,6 @@ $messages = array(
 'tog-minordefault' => 'Ìndica ogni canciamentu comu nicu (sulu comu pridifinitu)',
 'tog-previewontop' => "Ammustra l'antiprima prima dâ casella di canciamentu e nun doppu",
 'tog-previewonfirst' => "Ammustra l'antiprima supra lu primu canciamentu",
-'tog-nocache' => 'Disabbìlita la cache dî pàggini dû navigaturi',
 'tog-enotifwatchlistpages' => 'Mànnami na e-mail siddu la pàggina subbisci canciamenti',
 'tog-enotifusertalkpages' => 'Mànnimi nu missaggiu email quannu la mè pàggina di discussioni è canciata',
 'tog-enotifminoredits' => 'Mànnami na e-mail macari pi li canciamenti nichi di sta pàggina',
@@ -309,7 +308,6 @@ $messages = array(
 'qbedit' => 'Cancia',
 'qbpageoptions' => 'Opzioni pàggina',
 'qbmyoptions' => 'Li mè pàggini',
-'qbspecialpages' => 'Pàggini spiciali',
 'faq' => 'Dumanni cumuni',
 'faqpage' => 'Project:Dumanni comuni',
 
@@ -513,9 +511,6 @@ Nun desi nudda spiecazzioni.",
 'perfcached' => "'''Nota:''' li dati ca sèquinu sunnu stratti di na copia ''cache'' dû database, nun aggiurnati n tempu riali. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => 'Li dati ccà sutta foru attruvati e sunnu aggiurnati ô $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "L'aggiurnamenti dâ pàggina sunnu timpuraniamenti suspisi. Li dati 'n chidda cuntinuti nun vèninu aggiurnati.",
-'wrong_wfQuery_params' => 'Paràmitri errati pi wfQuery()<br />
-Funzioni: $1<br />
-Query: $2',
 'viewsource' => 'Talìa la fonti',
 'viewsource-title' => 'Visualizza la surgenti di $1',
 'actionthrottled' => 'Azzioni ritardata',
@@ -651,7 +646,7 @@ Aspetta tanticchia prima di pruvari  n'àutra vota.",
 'suspicious-userlogout' => 'La tò dumanna di discunnissioni fu niàta prichì pari ca veni di nu browser nun funziunanti o nu proxy di caching.',
 
 # Change password dialog
-'resetpass' => "Scrivi n'àutra vota la password",
+'changepassword' => 'Cancia la password',
 'resetpass_announce' => "Hai effittuatu l'accessu cu na password timpurània ca t'hà statu mannata via email. Pi tirminari l'accessu, hai a nziriri na password nova ccà:",
 'resetpass_text' => '<!-- Agghiunci lu testu ccà -->',
 'resetpass_header' => 'Rimposta la password',
@@ -923,10 +918,6 @@ All'amministratura è ancora possibili [$1 talìari lu confrontu] si nicissariu.
 'revisiondelete' => 'Cancella o riprìstina virsioni',
 'revdelete-nooldid-title' => 'Virsioni nun spicificata',
 'revdelete-nooldid-text' => 'Nun hà statu spicificata arcuna virsioni dâ pàggina supra cui esèquiri sta funzioni.',
-'revdelete-nologtype-title' => 'Nuddu tipu di log spicificatu',
-'revdelete-nologtype-text' => "Nun è statu spicificatu nuddu registru su cui fari l'azioni.",
-'revdelete-nologid-title' => 'Vuci di riggistru ca non vali',
-'revdelete-nologid-text' => 'Nun è statu spicificatu nuddu registru su cui fari sta funzioni oppuru lu riggistru nun esisti.',
 'revdelete-no-file' => 'Lu file spicificatu nun esisti.',
 'revdelete-show-file-confirm' => 'Si desidira talìari la virsioni cancillata dô file "<nowiki>$1</nowiki>" dô $2 ê $3?',
 'revdelete-show-file-submit' => 'Sì',
@@ -958,8 +949,6 @@ $1",
 'logdelete-failure' => "'''La visibilità dû eventu nun po essiri impustata:'''
 $1",
 'revdel-restore' => 'Cancia la visibbilità',
-'revdel-restore-deleted' => 'rivisioni scancillati',
-'revdel-restore-visible' => 'rivisioni visibbili',
 'pagehist' => 'Storia dâ pàggina',
 'deletedhist' => 'Storia cancillata',
 'revdelete-hide-current' => "Impussibili ammucciari l'oggettu cu la data $1 $2 in quantu è la rivisoni currenti.",
@@ -1018,12 +1007,8 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 # Search results
 'searchresults' => 'Risurtati dâ circata',
 'searchresults-title' => 'Risurtati dâ circata di "$1"',
-'searchresulttext' => 'Pi cchiossai nfurmazzioni supra la circata nterna di {{SITENAME}}, talìa [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Pruvasti a circari: '''[[$1]]'''",
-'searchsubtitleinvalid' => "Circata di '''$1'''",
 'toomanymatches' => 'Troppi currispunnenzi. Cancia la richiesta.',
 'titlematches' => "Ntê tìtuli di l'artìculi",
-'notitlematches' => 'Nudda currispunnenza ntê tìtuli dî pàggini',
 'textmatches' => "Ntô testu di l'artìculi",
 'notextmatches' => 'Nudda currispunnenza ntô testu dî pàggini',
 'prevn' => 'li pricidenti {{PLURAL:$1|$1}}',
@@ -1032,10 +1017,8 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'nextn-title' => '{{PLURAL:$1|Risultatu successivu|$1 risultata successivi}}',
 'shown-title' => 'Ammustra {{PLURAL:$1|nu risultatu|$1 risultati}} pi pàggina',
 'viewprevnext' => 'Talìa ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzioni di circata',
 'searchmenu-exists' => "* Pàggina '''[[$1]]'''",
 'searchmenu-new' => "'''Crea la pàggina \"[[:\$1]]\" supra sta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Visualizza li pàggini cu stu prifissu]]',
 'searchprofile-articles' => 'Pàggini di cuntinutu',
 'searchprofile-project' => "Pàggini d'ajutu e dô pruggettu",
 'searchprofile-images' => 'Multimedia',
@@ -1056,20 +1039,16 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'search-interwiki-default' => 'Risultati da $1:',
 'search-interwiki-more' => '(cchiù)',
 'search-relatedarticle' => 'Risultati currilati',
-'mwsuggest-disable' => 'Astuta suggirimenti AJAX',
 'searcheverything-enable' => 'Cerca ni tutti li namespace',
 'searchrelated' => 'currilati',
 'searchall' => 'tutti',
 'showingresults' => "Ammustra nzinu a {{PLURAL:$1|'''1''' risurtatu|'''$1''' risurtati}} a pàrtiri dô nùmmuru '''$2'''.",
 'showingresultsnum' => "L'alencu cunteni {{PLURAL:$3|'''1''' risurtatu|'''$3''' risurtati}} a pàrtiri dû nùmmuru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultatu '''$1''' di '''$3'''|Risultati '''$1 - $2''' di '''$3'''}} pi '''$4'''",
-'nonefound' => "'''Nota''': la circata è effittuata pi default sulu nta arcuni namespace. Prova a primèttiri ''all:'' ô testu dâ circata pi circari nta tutti li namespace (cumprisi pàggini di discussioni, template, ecc) oppuru usa lu namespace disidiratu comu prifissu.",
 'search-nonefound' => 'La circata nun desi nuddu risurtatu.',
-'powersearch' => 'Arriscedi',
 'powersearch-legend' => 'Ricerca avanzata',
 'powersearch-ns' => 'Cerca ntê namespace:',
 'powersearch-redir' => 'Elenca redirect',
-'powersearch-field' => 'Cerca',
 'powersearch-togglelabel' => 'Silizziona:',
 'powersearch-toggleall' => 'Tutti',
 'powersearch-togglenone' => 'Nuddu',
@@ -1080,7 +1059,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'preferences' => 'prifirenzi',
 'mypreferences' => 'Li mè prifirenzi',
 'prefs-edits' => 'Nùmmuru di canciamenti:',
-'changepassword' => 'Cancia la password',
 'prefs-skin' => 'Aspettu',
 'skin-preview' => 'Antiprima',
 'datedefault' => 'Nudda prifirenza',
@@ -1100,13 +1078,11 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'prefs-email' => 'Opzioni email',
 'prefs-rendering' => 'Aspettu',
 'saveprefs' => 'Sarva li prifirenzi',
-'resetprefs' => 'Annulla',
 'restoreprefs' => 'Ripristina li mpustazzioni di default',
 'prefs-editing' => 'Cancia',
 'rows' => 'Righi:',
 'columns' => 'Culonni:',
 'searchresultshead' => 'Circata',
-'resultsperpage' => 'Nùmmiru di risurtati pi pàggina:',
 'stub-threshold' => 'Valuri minimu pî <a href="#" class="stub">liami a li stub</a>:',
 'stub-threshold-disabled' => 'Disabbìlitatu',
 'recentchangesdays' => "Nùmmuru di jorna a ammustrari nte l'urtimi cancaiamenti:",
@@ -1118,7 +1094,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
 'localtime' => 'Uràriu lucali',
 'timezoneuseserverdefault' => 'Usa uràriu dû server',
 'timezoneuseoffset' => 'Àutru (spicificari diffirenza)',
-'timezoneoffset' => 'Uri di diffirenza¹',
 'servertime' => 'Uràriu dû server',
 'guesstimezone' => "Usa l'ura dû tò browser",
 'timezoneregion-africa' => 'Africa',
@@ -1328,12 +1303,12 @@ L'operazioni nun pò èssiri annullata.",
 'recentchanges-legend' => 'Opzioni ùrtimi canciamenti',
 'recentchanges-summary' => 'Chista pàggina prisenta li canci cchiù ricenti ê cuntinuti dô situ.',
 'recentchanges-feed-description' => 'Stu feed riporta li canciamenti cchiù ricenti a li cuntinuti dû situ.',
-'recentchanges-label-newpage' => 'This edit havi creatu na nova pàggina',
-'recentchanges-label-minor' => 'Chista è nu canciamentu nnicu',
+'recentchanges-label-newpage' => 'Stu canciu criau na pàggina nova',
+'recentchanges-label-minor' => 'Chistu è nu canciamentu nicu',
 'recentchanges-label-bot' => 'Stu canciamentu fu fattu dû bot',
 'recentchanges-label-unpatrolled' => 'Stu canciamentu nun havi ancora statu virificatu',
+'recentchanges-label-plusminus' => 'La diminsioni dâ pàggina canciau di stu nùmmuru di bytes',
 'recentchanges-legend-newpage' => '$1 - pàggina nova',
-'rcnote' => "Ccà sutta {{PLURAL:$1|c'è lu canciamentu cchiù ricenti appurtatu|cci sunnu l'ùrtimi '''$1''' canciamenti appurtati}} ô situ {{PLURAL:$2|nta l'ùrtimi 24 uri|nta l'ùrtimi '''$2''' giorni}}; li dati sunnu aggiurnati ê $5 dû $4.",
 'rcnotefrom' => 'Ccà sutta cci sunnu li canciamenti a pàrtiri dû <b>$2</b> (ammustrati nzinu ô <b>$1</b>).',
 'rclistfrom' => 'Ammustra li canciamenti novi a pàrtiri di $1',
 'rcshowhideminor' => '$1 li canciamenti nichi',
@@ -1662,10 +1637,8 @@ Li redirect <del>cancillati</del> furunu curretti.',
 'protectedpages' => 'Pàggini prutetti',
 'protectedpages-indef' => 'Sulu prutizzioni nfiniti',
 'protectedpages-cascade' => 'Sulu prutizzioni ricursivi',
-'protectedpagestext' => 'Sta pàggina hà statu prutiggiuta pi mpidìrinni lu canciamentu.',
 'protectedpagesempty' => 'A lu mumentu nun ci sunnu pàggini prutetti',
 'protectedtitles' => 'Tituli prutiggiuti',
-'protectedtitlestext' => 'Nun si ponnu criari pàggini ccu li tìtuli nnicati di sècutu',
 'protectedtitlesempty' => 'Nta stu mumentu nun ci sunnu tìtuli prutetti ccu li paràmitri nnicati.',
 'listusers' => 'Lista di utilizzatura',
 'listusers-editsonly' => 'Ammustra sulu utenti cu cuntribbuti',
@@ -1714,9 +1687,6 @@ chisti putìssiru quinni èssiri utilizzati puru siddu cumpàrinu nta l'alencu."
 'allpagesto' => 'Ammustra li pàggini nzinu a:',
 'allarticles' => "Tutti l'artìculi",
 'allinnamespace' => 'Tutti li pàggini dû namespace $1',
-'allnotinnamespace' => 'Tutti li pàggini, sparti lu namespace $1',
-'allpagesprev' => "'n arreri",
-'allpagesnext' => "'n avanti",
 'allpagessubmit' => 'Vai',
 'allpagesprefix' => 'Ammustra li pàggini chi accumìnzanu cu:',
 'allpagesbadtitle' => 'Lu tìtulu ndicatu pi la pàggina nun è vàlidu o cunteni prifissi interlingua o interwiki. Putissi noltri cuntèniri unu o cchiù caràttiri lu cui usu nun è ammissu ntê tìtuli.',
@@ -1989,7 +1959,6 @@ Li mpostazzioni correnti pâ pàggina sugnu '''$1''':",
 'undeletebtn' => 'Riprìstina!',
 'undeletelink' => 'riprìstina',
 'undeleteviewlink' => 'talìa',
-'undeletereset' => 'Rimposta',
 'undeleteinvert' => 'Scancia la silizzioni',
 'undeletecomment' => 'Cummentu:',
 'undeletedrevisions' => '$1 rivisioni ricupirat{{PLURAL:$1|a|i}}',
@@ -2069,7 +2038,6 @@ $1',
 'ipadressorusername' => 'Ndirizzu IP o nomu utenti:',
 'ipbexpiry' => 'Durata dû bloccu:',
 'ipbreason' => 'Mutivu:',
-'ipbreasonotherlist' => 'Àutru mutivu',
 'ipbreason-dropdown' => '*Mutivi cchiù cumuni pî blocchi
 ** Nzerimentu di nformazziuni falsi
 ** Cancillazzioni di cuntinuti dê pàggini
@@ -2084,8 +2052,6 @@ $1',
 'ipbsubmit' => "Blocca st'utenti",
 'ipbother' => 'Durata nun n alencu',
 'ipboptions' => '2 uri:2 hours,1 jornu:1 day,3 jorna:3 days,1 simana:1 week,2 simani:2 weeks,1 misi:1 month,3 misi:3 months,6 misi:6 months,1 annu:1 year,nfinitu:infinite',
-'ipbotheroption' => 'àutru',
-'ipbotherreason' => 'Àutri mutivi/dittagghi:',
 'ipbhidename' => 'Ammuccia lu nomu utenti dê canciamenti e dê listi',
 'ipbwatchuser' => "Talìa li pàggini e li discussioni utenti di st'utenti",
 'ipb-disableusertalk' => 'Nun pirmettiri a stu utilizzaturi di canciari la sò pàggina di discussioni na mentri ca è bluccatu',
@@ -2146,7 +2112,6 @@ Pi maggiuri nfurmazzioni, talìa la [[Special:BlockList|lista di l'IP bluccati]]
 'proxyblockreason' => "Lu tò ndirizzu IP hà statu bluccatu pirchì è un open proxy. Pi favuri cuntatta lu tò furnituri d'accessu a Internet o lu supportu tècnicu e nfòrmali di stu gravi prubbrema di sicurizza.",
 'sorbsreason' => 'Lu tò ndirizzu IP è alincatu comu proxy apertu ntâ lista DNSBL.',
 'sorbs_create_account_reason' => 'Lu tò ndirizzu IP è alincatu comu open proxy ntâ DNSBL. Nun poi criari un utenti.',
-'cant-block-while-blocked' => 'Nun putiti bluccari àutri utenti ntô mentri ca vui stissi siti bluccati.',
 
 # Developer tools
 'lockdb' => 'Blocca lu database',
@@ -2192,7 +2157,6 @@ Chistu pò èssiri nu canciamentu dràsticu pi na pàggina pupulari; aviti a ès
 
 Nta sti casi, tu hai a spustari o agghiùnciri manuarmenti la pàggina di discussioni.",
 'movearticle' => 'Sposta la pàggina',
-'movenologin' => 'Accessu nun effittuatu',
 'movenologintext' => "Lu spustamentu dî pàggini è cunzintitu sulu a l'utenti riggistrati c'hannu esiquitu l'[[Special:UserLogin|accessu]] a lu situ.",
 'movenotallowed' => 'Nun hai li pirmessi nicissari a lu spustamentu dê pàggini.',
 'movenotallowedfile' => "Nun ci su' li pirmessi nicissàrii pi spustari file.",
@@ -2207,8 +2171,6 @@ Nta sti casi, tu hai a spustari o agghiùnciri manuarmenti la pàggina di discus
 'movepage-moved-noredirect' => 'La criazzioni di nu riinnirizzamentu vinni scancillata.',
 'articleexists' => "Na pàggina cu stu nomu esisti già, oppuru lu nomu scigghiutu nun è vàlidu. Scègghiri n'àutru tìtulu.",
 'cantmove-titleprotected' => 'Nun putiti spustari la pàggina pirchì lu tìtulu novu fu prutiggiutu pi mpidìrini la criazzioni',
-'talkexists' => "'''La pàggina hà statu spustata currettamenti, ma nun hà statu pussìbbili spustari la pàggina di discussioni pirchì nn'esisti già n'àutra cu lu tìtulu novu. Ntigrari manuarmenti li cuntinuti dî dui pàggini.'''",
-'movedto' => 'spustata a',
 'movetalk' => 'Sposta puru la pàggina di discussioni, eventuarmenti.',
 'move-subpages' => 'Sposta li suttapàggini (finu a $1)',
 'move-talk-subpages' => 'Sposta li suttapàggini di discussioni (finu a $1)',
@@ -2784,10 +2746,6 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
 'exif-gpsdirection-t' => 'Direzzioni riali',
 'exif-gpsdirection-m' => 'Direzzioni magnètica',
 
-# External editor support
-'edit-externally' => 'Cancia stu file usannu un prugramma sternu',
-'edit-externally-help' => "Pi chiossai nfurmazzioni cunzurtari l'[https://www.mediawiki.org/wiki/Manual:External_editors istruzzioni] ('n ngrisi)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutti',
 'namespacesall' => 'Tutti',
@@ -2808,7 +2766,6 @@ Missaggiu d'erruri dû mailer: $1",
 'confirmemail_needlogin' => 'È nicissariu $1 pi cunfirmari lu propiu ndirizzu e-mail.',
 'confirmemail_success' => "Lu ndirizzu e-mail è cunfirmatu. Ora è pussìbbili esèquiri l'accessu e fari chinu usu dû situ.",
 'confirmemail_loggedin' => 'Lu tò nnirizzu email fu ora cunfirmatu.',
-'confirmemail_error' => 'Erruri ntô sarvataggiu dâ cunferma.',
 'confirmemail_subject' => '{{SITENAME}}: richiesta di cunferma di lu ndirizzu',
 'confirmemail_body' => 'Quarcunu, prubbabbirmenti tu stissu di lu ndirizzu IP $1, hà riggistratu l\'account "$2" supra {{SITENAME}} ndicannu stu ndirizzu e-mail.
 
index c4e01f1..428cc69 100644 (file)
@@ -45,7 +45,6 @@ $messages = array(
 'tog-minordefault' => 'Mairk aa edits "smaa" bi defaut',
 'tog-previewontop' => 'Shaw scance afore edit box an no efter it',
 'tog-previewonfirst' => 'Shaw scance on first edit',
-'tog-nocache' => 'Disable page cachin',
 'tog-enotifwatchlistpages' => 'Send me an email on page chynges',
 'tog-enotifusertalkpages' => 'Send me an email whan ma uiser collogue page is chynged',
 'tog-enotifminoredits' => 'Send me an email for smaa edits o pages an aa',
@@ -158,7 +157,6 @@ $messages = array(
 'qbedit' => 'Edit',
 'qbpageoptions' => 'This page',
 'qbmyoptions' => 'Ma pages',
-'qbspecialpages' => 'Byordinar pages',
 'faq' => 'ASQ',
 'faqpage' => 'Project:ASQ',
 
@@ -339,9 +337,6 @@ Please lat an [[Special:ListUsers/sysop|administrator]] ken aboot this, makin no
 'perfcached' => 'The follaeing data is cached an michtna be richt up tae date. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'The followin data is cached, an wis hindermaist chynged $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Updates for this page ar disablit at the meenit. Data here wilnae be refreshit at the meenit.',
-'wrong_wfQuery_params' => 'Wrang parameters tae wfQuery()<br />
-Exerce: $1<br />
-Aks: $2',
 'viewsource' => 'View soorce',
 'actionthrottled' => 'Action devalit',
 'actionthrottledtext' => 'As an anti-spam meisur, ye ar limitit frae daein this action ower mony times in a ower short tid, an ye hae exceedit this limit. Please try again in a wee.',
@@ -439,7 +434,7 @@ Ye dinna hae tae heed this message, if this accoont wis creatit by mistak.',
 'loginlanguagelabel' => 'Leid: $1',
 
 # Change password dialog
-'resetpass' => 'Chynge passwaird',
+'changepassword' => 'Chynge password',
 'resetpass_announce' => 'Ye loggit in wi a short term e-mailed code. To be duin logging in, ye hae tae mak a new passwaird here:',
 'resetpass_header' => 'Chynge accoont password',
 'oldpassword' => 'Auld password',
@@ -665,8 +660,6 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'revdelete-radio-set' => 'Yea',
 'revdelete-radio-unset' => 'Nae',
 'revdel-restore' => 'change visibility',
-'revdel-restore-deleted' => 'deletit revisions',
-'revdel-restore-visible' => 'visible revisions',
 'pagehist' => 'Page history',
 
 # History merging
@@ -686,11 +679,7 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 # Search results
 'searchresults' => 'Rake results',
 'searchresults-title' => 'Rake affcome for "$1"',
-'searchresulttext' => 'For mair information aboot rakin {{SITENAME}}, see [[{{MediaWiki:Helppage}}|Rakin {{SITENAME}}]].',
-'searchsubtitle' => "Ye raked for '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Ye raked for '''$1'''",
 'titlematches' => 'Airticle teitle matches',
-'notitlematches' => 'Nae page teitle matches',
 'notextmatches' => 'Nae page text matches',
 'prevn' => 'foregaun {{PLURAL:$1|$1}}',
 'nextn' => 'neist {{PLURAL:$1|$1}}',
@@ -721,17 +710,13 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'showingresults' => "Shawin ablo up tae {{PLURAL:$1|'''1''' result|'''$1''' results}} stertin wi #'''$2'''.",
 'showingresultsnum' => "Shawin ablo {{PLURAL:$3|'''1''' result|'''$3''' results}} stertin wi #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Ootcome '''$1''' of '''$3'''|Ootcomes '''$1 - $2''' of '''$3'''}} for '''$4'''",
-'nonefound' => "'''Mynd''': unsuccessfu rakes is afttimes caused bi rakin for common words like \"hae\" an \"frae\", that isna indexed, or bi specifeein mair nor ae rake term (juist pages haudin aa the rake terms will kythe in the result).",
 'search-nonefound' => "Thare wur na ootcomes matching th' query.",
-'powersearch' => 'Rake',
 'powersearch-redir' => 'Leet redirects',
-'powersearch-field' => 'Rake for',
 'powersearch-toggleall' => 'Aw',
 'searchdisabled' => 'Rakin throu {{SITENAME}} is disabled for performance raesons. Ye can rake via Google juist nou. Mynd that thair indexes o {{SITENAME}} content micht be oot o date.',
 
 # Preferences page
 'mypreferences' => 'Ma preferences',
-'changepassword' => 'Chynge password',
 'prefs-skin' => 'Huil',
 'skin-preview' => 'First Leuk',
 'datedefault' => 'Nae preference',
@@ -748,7 +733,6 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
 'stub-threshold-disabled' => 'Tuckie',
 'recentchangescount' => 'Nummer o teitles in recent chynges',
 'savedprefs' => 'Yer preferences haes been hained.',
-'timezoneoffset' => 'Affset',
 'servertime' => 'Server time is nou',
 'guesstimezone' => 'Fill in frae brouser',
 'allowemail' => 'Allou email frae ither uisers',
@@ -813,7 +797,6 @@ Yer e-mail address insae revealed whin ither uisers contact ye.",
 'recentchanges-label-minor' => 'This is a smaa edit',
 'recentchanges-label-bot' => 'This edit wis performed by a bot',
 'recentchanges-label-unpatrolled' => 'This edit haes nae yet bin patrolled',
-'rcnote' => "Below {{PLURAL:$1|is '''1''' change|are the last '''$1''' chynges}} in the last {{PLURAL:$2|day|'''$2''' days}}, as of $5, $4.",
 'rcnotefrom' => 'Ablo is the chynges syne <b>$2</b> (up tae <b>$1</b> shawn).',
 'rclistfrom' => 'Shaw new chynges stertin frae $1',
 'rcshowhideminor' => '$1 smaa edits',
@@ -1011,9 +994,6 @@ Th' description oan tis [$2 file description page] thare is shown below.",
 'allpagesfrom' => 'Shaw pages stairtin at:',
 'allarticles' => 'Aa airticles',
 'allinnamespace' => 'Aa pages ($1 namespace)',
-'allnotinnamespace' => 'Aa pages (nae in $1 namespace)',
-'allpagesprev' => 'Afore-gaun',
-'allpagesnext' => 'Neist',
 'allpagessubmit' => 'Gang',
 'allpagesprefix' => 'Shaw pages wi prefix:',
 'allpagesbadtitle' => 'The page teitle gien wis wrang or haed a cross-lied or cross-wiki prefix. It micht hae ane or twa characters that canna be uised in teitles',
@@ -1202,7 +1182,6 @@ afore it wis delete. The actual text o thir deletit reveisions is available tae
 'ipbsubmit' => 'Block this uiser',
 'ipbother' => 'Ither time',
 'ipboptions' => '2 hours:2 hours,1 day:1 day,3 days:3 days,1 week:1 week,2 weeks:2 weeks,1 month:1 month,3 months:3 months,6 months:6 months,1 year:1 year,indefinite:infinite',
-'ipbotheroption' => 'ither',
 'badipaddress' => 'That IP address is nae guid',
 'blockipsuccesssub' => 'Block succeedit',
 'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] haes been blockit.
@@ -1258,14 +1237,11 @@ This can be a drastic and unexpectit chynge for a popular page;
 please be siccar ye unnerstaun the consequences o this afore proceedin.",
 'movepagetalktext' => "The associate Collogue page, gin onie, will be autaematically flittit alang wi it '''unless:''' *Ye'r flittin the page across namespaces, *A collogue page that isna tuim aareadies exists unner the new name, or *Ye tak the tick oot o the box ablo. In thae cases, ye maun flit or merge the page manually later gin ye hae saicont thochts.",
 'movearticle' => 'Flit page:',
-'movenologin' => 'No loggit in',
 'movenologintext' => 'Ye maun be a registert uiser an [[Special:UserLogin|loggit in]] tae flit a page.',
 'newtitle' => 'Tae new teitle',
 'movepagebtn' => 'Flit page',
 'pagemovedsub' => 'Flittin succeedit',
 'articleexists' => "A page o that name aareadies exists, or the name ye'v waled isna guid. Please wale anither name.",
-'talkexists' => 'The page itsel wis flittit fine, but the collogue page cuidna be flittit sith ane aareadies exists at the new teitle. Please merge thaim manually.',
-'movedto' => 'flittit ti',
 'movetalk' => 'Flit "collogue" page an aa, gin it\'s applicable.',
 'movelogpage' => 'Flit log',
 'movelogpagetext' => "A leet o pages that's flitted is ablo.",
@@ -1445,15 +1421,10 @@ If th' file haes bin modified frae tis original state, some details kin nae full
 
 'exif-contrast-1' => 'Saft',
 
-# External editor support
-'edit-externally' => 'Edit this file uisin an external application',
-'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for mair guidance.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aw',
 'namespacesall' => 'aa',
 'monthsall' => 'aw',
-'limitall' => 'aw',
 
 # Email address confirmation
 'confirmemail_noemail' => 'Ye dinna hae a valid email address set in yer [[Special:Preferences|uiser preferences]].',
@@ -1468,7 +1439,6 @@ Mailer returned: $1',
 'confirmemail_needlogin' => 'Ye maun $1 for tae confirm yer email address.',
 'confirmemail_success' => 'Yer e-mail address haes been confirmed. Ye can nou log in an enjoy the wiki.',
 'confirmemail_loggedin' => 'Yer e-mail address haes noo been confirmed.',
-'confirmemail_error' => 'Something gaed agley hainin yer confirmation.',
 'confirmemail_body' => 'A bodie, maist likely you frae IP address $1, haes registert an
 accoont "$2" wi this e-mail address on {{SITENAME}}.
 
index 5724a93..f1dc240 100644 (file)
@@ -37,13 +37,11 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'سڀ صفحا' ),
        'Ancientpages'              => array( 'قديم صفحا' ),
        'Block'                     => array( 'آءِ پي بندش' ),
-       'Blockme'                   => array( 'مونکي بندشيو' ),
        'BrokenRedirects'           => array( 'ٽٽل چورڻا' ),
        'Categories'                => array( 'زمرا' ),
        'Confirmemail'              => array( 'برقٽپال تصديقيو' ),
        'Contributions'             => array( 'ڀاڱيداريون' ),
        'CreateAccount'             => array( 'کاتو کوليو' ),
-       'Disambiguations'           => array( 'سلجھائپ' ),
        'DoubleRedirects'           => array( 'ٻٽا چورڻا' ),
        'Emailuser'                 => array( 'برقٽپال يوزر' ),
        'Export'                    => array( 'برآمد' ),
@@ -248,7 +246,6 @@ $messages = array(
 'qbedit' => 'سنواريو',
 'qbpageoptions' => 'هيءُ صفحو',
 'qbmyoptions' => 'منهنجا صفحا',
-'qbspecialpages' => 'خاص صفحا',
 'faq' => 'ڪپوس',
 'faqpage' => 'Project:ڪپوس',
 
@@ -423,6 +420,7 @@ $messages = array(
 'accountcreatedtext' => '$1 نالي يوزر کاتو کلي چڪو آھي.',
 
 # Change password dialog
+'changepassword' => 'ڳجھو لفظ تبديل ڪريو',
 'retypenew' => 'نئون ڳجھو لفظ ٻيهر ٽائيپ ڪندا:',
 
 # Edit page toolbar
@@ -521,13 +519,11 @@ You cannot use the 'e-mail this user' feature unless a valid e-mail address is s
 'prevn' => 'پويان {{PLURAL:$1|$1}}',
 'nextn' => 'اڳيان {{PLURAL:$1|$1}}',
 'viewprevnext' => 'ڏسو ($1 {{int:pipe-separator}} $2) ($3)',
-'powersearch' => 'نفيس ڳولا',
 'powersearch-redir' => 'چورڻن جي فهرست ڏيکاريو',
 
 # Preferences page
 'preferences' => 'ترجيحات',
 'mypreferences' => 'منهنجون ترجيحات',
-'changepassword' => 'ڳجھو لفظ تبديل ڪريو',
 'skin-preview' => 'پيش نگاهه',
 'datedefault' => 'بلا ترجيحا',
 'prefs-datetime' => 'تاريخ ۽ وقت',
@@ -557,7 +553,6 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
 'nchanges' => '$1 {{PLURAL:$1|تبديلي|تبديليون}}',
 'recentchanges' => 'تازيون تبديليون',
 'recentchanges-feed-description' => 'ۡهن روان رسد ۾ آيل تازيون تبديليون لهو',
-'rcnote' => "پوين {{PLURAL:$2|ڏينهن|'''$2''' ڏينهن}} ۾، يعني $3 تائين آيل {{PLURAL:$1| '''1''' تبديلي|'''$1''' تبديليون}} هيٺ پيش ڪجن ٿيون.",
 'rcnotefrom' => "هيٺ '''$2''' کان ٿيندڙ تبديليون پيش ڪجن ٿيون ('''$1''' تائين ڏيکارجن ٿيون).",
 'rclistfrom' => '$1 کان شروع ٿيندڙ نيون تبديليون',
 'rcshowhideminor' => '$1 معمولي ترميمون',
@@ -680,7 +675,6 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
 'prevpage' => 'پويون صفحو ($1)',
 'allpagesfrom' => 'ھتان شروع ٿيندڙ صفحا نمايو',
 'allarticles' => 'سمورا مضمون',
-'allpagesprev' => 'اڳوڻو',
 'allpagessubmit' => 'ھلو',
 'allpagesprefix' => 'صفحا نمايو بمع اڳياڙي:',
 
@@ -815,9 +809,6 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
 'pagemovedsub' => 'چورڻ جو عمل ڪامياب ٿيو',
 'movepage-moved' => '\'\'\'"$1" کي چوري "$2" تي رکيو ويو آهي\'\'\'',
 'articleexists' => 'ان نالي سان صفحو اڳي ئي وجود رکي ٿو، يا ته توهان جو ڏنل نالو ناقابلڪار آهي.',
-'talkexists' => "
-'''موادي صفحو پاڻ ته ڪاميابيءَ سان چُري ويو، پر لاڳاپيل مباحثي صفحو چُري نه سگھيو ڇاڪاڻ ته نئين عنوان تي اڳي ئي هڪ مباحثي صفحو موجود آهي. براءِ مهرباني انهن ٻنهي هٿ سان ضمائيندا.",
-'movedto' => 'چوريو ويو برسر',
 'movetalk' => 'لاڳاپيل مباحثي صفحو چوريو',
 'movelogpage' => 'چورڻ لاگ',
 'movereason' => 'سبب:',
@@ -950,10 +941,6 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننڍي هوڻ گھرجي.',
 'exif-gpsspeed-m' => 'ميل في ڪلاڪ',
 'exif-gpsspeed-n' => 'ڳنڍيون',
 
-# External editor support
-'edit-externally' => 'هيءُ فائيل ڪنهن خارجي منتقڪريءَ سان سنواريو',
-'edit-externally-help' => 'وڌيڪ معلومات لاءِ [https://www.mediawiki.org/wiki/Manual:External_editors هدايتون براءِ تنصيبڪاري] ڏسندا.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'سڀ',
 'namespacesall' => 'سڀ',
index 26e1232..1d54759 100644 (file)
@@ -10,6 +10,7 @@
  * @author Antofa
  * @author Cornelia
  * @author Felis
+ * @author Jun Misugi
  * @author Kaganer
  */
 
@@ -35,14 +36,12 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'TuttiLiPàgini' ),
        'Ancientpages'              => array( 'PàginiMancuRizzenti' ),
        'Block'                     => array( 'Brocca' ),
-       'Blockme'                   => array( 'BroccaProxy' ),
        'Booksources'               => array( 'ZirchaISBN' ),
        'BrokenRedirects'           => array( 'RinviiIbbagliaddi' ),
        'Categories'                => array( 'Categuri' ),
        'ChangePassword'            => array( 'RimpusthàParàuraDÓrdhini' ),
        'Contributions'             => array( 'Cuntributi', 'CuntributiUtente' ),
        'Deadendpages'              => array( 'PàginiChenaIscidda' ),
-       'Disambiguations'           => array( 'CuLuMatessiInnommu' ),
        'DoubleRedirects'           => array( 'RinviiDoppi' ),
        'Emailuser'                 => array( 'InviaPosthaErettrònica' ),
        'Export'                    => array( 'Ippurtha' ),
@@ -94,8 +93,8 @@ $specialPageAliases = array(
        'Unusedtemplates'           => array( 'MudelliInutirizaddi' ),
        'Unwatchedpages'            => array( 'PàginiNòAbbaidaddi' ),
        'Upload'                    => array( 'Carrigga' ),
-       'Userlogin'                 => array( 'Intra', 'Login', 'Accesso' ),
-       'Userlogout'                => array( 'Isci', 'Logout', 'Uscita' ),
+       'Userlogin'                 => array( 'Intra', 'Accesso' ),
+       'Userlogout'                => array( 'Isci', 'Uscita' ),
        'Userrights'                => array( 'PrimmissiUtenti' ),
        'Version'                   => array( 'Versioni' ),
        'Wantedcategories'          => array( 'CateguriDumandaddi' ),
@@ -118,7 +117,7 @@ $messages = array(
 'tog-editsection' => 'Mudìfigga di li sezzioni attrabessu lu cullegamentu [mudifigga]',
 'tog-editsectiononrightclick' => "Mudìfigga di li sezzioni attrabessu lu clic dresthu i' lu tìturu (nezzessàriu JavaScript)",
 'tog-showtoc' => "Musthra l'indizi pa li pàgini cun più di 3 sezzioni",
-'tog-rememberpassword' => "Ammenta la paràura d'órdhini (nezzessàriu azzittà li cookie) (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'tog-rememberpassword' => "Ammenta la paràura d'órdhini (nezzessàriu azzittà li cookie) (for a maximum of $1 {{PLURAL:$1|dì|dì}})",
 'tog-watchcreations' => "Aggiungi li pàgini criaddi a l'abbaidaddi ippiziari",
 'tog-watchdefault' => "Aggiungi li pàgini mudìfiggaddi a l'abbaidaddi ippiziari",
 'tog-watchmoves' => "Aggiungi li pàgini ippusthaddi a l'abbaidaddi ippiziari",
@@ -126,12 +125,12 @@ $messages = array(
 'tog-minordefault' => "Indica tutti li mudìfigghi cumenti 'minori' in otomàtiggu",
 'tog-previewontop' => "Musthra l'antiprimma sobra la casella di mudìfigga",
 'tog-previewonfirst' => "Musthra l'antiprimma pa la primma mudìfigga",
-'tog-nocache' => 'Disattiba la mimória cache pa li pàgini',
 'tog-enotifwatchlistpages' => 'Signàrami pa postha erettrònica li mudìfigghi a li pàgini abbaidaddi',
 'tog-enotifusertalkpages' => "Signàrami pa postha erettrònica li mudìfigghi a la me' pàgina di dischussioni",
 'tog-enotifminoredits' => 'Signàrami pa postha erettrònica puru li mudìfigghi minori',
 'tog-enotifrevealaddr' => "Rivera lu me' indirizzu di postha erettrònica i' l'imbasciaddi d'avvisu",
 'tog-shownumberswatching' => "Musthra lu nùmaru d'utenti ch'àni la pàgina abbaidadda",
+'tog-oldsig' => 'Fimma esisthenti',
 'tog-fancysig' => "Interpreta i cumandi wiki i' la fimma (chena cullegaumentu otomatiggu)",
 'tog-uselivepreview' => "Attiba la funzioni ''Live preview'' (dumanda JavaScript; ippirimintari)",
 'tog-forceeditsummary' => "Dumanda cunfèimma si l'oggettu di la mudìfigga è bioddu",
@@ -198,6 +197,18 @@ $messages = array(
 'oct' => 'SAini',
 'nov' => 'SAndria',
 'dec' => 'Nad',
+'january-date' => '$1 Ginnagiu',
+'february-date' => '$1 Fribagiu',
+'march-date' => '$1 Matzu',
+'april-date' => '$1 Abriri',
+'may-date' => '$1 Maggiu',
+'june-date' => '$1 Làmpada',
+'july-date' => '$1 Tríura',
+'august-date' => '$1 Aosthu',
+'september-date' => '$1 Cabbidanni',
+'october-date' => '$1 Santuaini',
+'november-date' => "$1 Sant'Andria",
+'december-date' => '$1 Naddari',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Categuria|Categuri}}',
@@ -208,13 +219,14 @@ $messages = array(
 'hidden-categories' => '{{PLURAL:$1|Categuria cuadda|Categuri cuaddi}}',
 'hidden-category-category' => 'Categuri cuaddi',
 'category-subcat-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica sottocateguria, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la sottocateguria indicadda|li $1 sottocategurì indicaddi}} inogghi, i' un tutari di $2.}}",
-'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica pagina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pagina indicadda|li $1 pagini indicaddi}} inogghi, i' un tutari di $2.}}",
+'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'única pàgina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pàgina indicadda|li $1 pàgini indicaddi}} inogghi, i' un tutari di $2.}}",
+'category-file-count' => "{{PLURAL:$2|Chistha categuria cunteni unu únicu file, indicaddu inogghi.|{{PLURAL:$1|Lu file sighenti è|$1 Li file sighenti so}} inogghi, i' un tutari di $2.}}",
 'listingcontinuesabbrev' => '(séguiddu)',
 
 'about' => 'Infuimmazioni',
 'article' => 'Pagina',
 'newwindow' => "(s'abbri in d'unu nobu balchoni)",
-'cancel' => 'Annulla',
+'cancel' => 'Annullà',
 'moredotdotdot' => 'Althru...',
 'mypage' => 'La mea pàgina',
 'mytalk' => "Li me' dischussioni",
@@ -228,16 +240,22 @@ $messages = array(
 'qbedit' => 'Mudifigga',
 'qbpageoptions' => 'Prifirenzi pàgina',
 'qbmyoptions' => "Li me' pàgini",
-'qbspecialpages' => 'Pàgini ippiziari',
 'faq' => 'FAQ (infuimmazioni e aggiuddu)',
 'faqpage' => 'Project:FAQ (infuimmazioni e aggiuddu)',
 
 # Vector skin
+'vector-action-addsection' => 'Aggiungì oggettu',
 'vector-action-delete' => 'Canzella',
 'vector-action-move' => 'Ippustha',
+'vector-action-protect' => 'Pruteggì',
 'vector-view-create' => 'Cria',
 'vector-view-edit' => 'Mudifigga',
+'vector-view-history' => 'Vèdi isthòria',
 'vector-view-view' => 'Leggi',
+'vector-view-viewsource' => 'Vèdi fonti',
+'actions' => 'Azioni',
+'namespaces' => 'Tipi di pàgina:',
+'variants' => 'Varianti',
 
 'errorpagetitle' => 'Errori',
 'returnto' => 'Turra a $1.',
@@ -272,7 +290,7 @@ $messages = array(
 'personaltools' => 'Isthrumenti passunari',
 'postcomment' => 'Noba sezzioni',
 'articlepage' => 'Vedi la bozi',
-'talk' => 'dischussioni',
+'talk' => 'Dischussioni',
 'views' => 'Vìsiti',
 'toolbox' => 'Isthrumenti',
 'userpage' => 'Visuarizza la pàgina utenti',
@@ -323,7 +341,7 @@ $messages = array(
 'retrievedfrom' => 'Buggaddu da "$1"',
 'youhavenewmessages' => 'Ài $1 ($2).',
 'youhavenewmessagesmulti' => 'Ài nobi imbasciaddi i $1',
-'editsection' => 'mudifigga',
+'editsection' => 'Mudìfigga',
 'editold' => 'mudifigga',
 'viewsourceold' => "visuarizza l'orìgini",
 'editlink' => 'mudifigga',
@@ -396,9 +414,6 @@ Si priga di cuntattà un'[[Special:ListUsers/sysop|amministhradore]], ippizzific
 'perfcached' => "Li dati chi seghini so cabaddi da una còpia i' la mimória cache di la bancadati, no aggiornaddi in tempu riari. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => "Li dati chi seghini so cabaddi da una còpia i' la mimória cache di la bancadati. Ulthimu aggiornamentu: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => "L'aggiornamenti di la pàgina so timpuraniamenti suippesi. Li dati in edda cuntinuddi no sarani aggiornaddi.",
-'wrong_wfQuery_params' => "Errori i' li parametri inviaddi a la funzioni wfQuery()<br />
-funzioni: $1<br />
-Interrogazioni: $2",
 'viewsource' => 'Vèdi còdizi',
 'actionthrottled' => 'Azioni limitadda',
 'actionthrottledtext' => "Cumenti rimédiu anti-spam, v'è un lìmiti a l'azioni ch'è pussìbiri eseguì i'nu tempu isthabiriddu, e abà suparaddu. Pògu tèmpu e pói riprubà.",
@@ -421,7 +436,7 @@ Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia
 'yourname' => 'Innòmu utenti',
 'yourpassword' => "Paràura d'órdhini",
 'yourpasswordagain' => "Ripeti la paràura d'órdhini",
-'remembermypassword' => "Ammenta la paràura d'órdhini (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'remembermypassword' => "Ammenta la me' paràura d'órdhini in chisthu nabiggadori (par un màssimu di $1 {{PLURAL:$1|dì|dì}})",
 'yourdomainname' => 'Ippizzificà lu dumìniu',
 'externaldberror' => "S'è verifiggaddu un errori cu lu server di autentificazioni esthernu, oppuru nò si diponi di l'autorizazioni nezzessàri pa aggiornà la propria registhrazioni estherna.",
 'login' => 'Intra',
@@ -432,10 +447,11 @@ Zerthuni pàgini pudìani continuà a apparì cumenti si la iscidda nò fùssia
 'userlogout' => 'Esci',
 'notloggedin' => 'Intradda no effettuadda',
 'nologin' => "No ài una registhrazioni? '''$1'''.",
-'nologinlink' => 'Crèara abà',
+'nologinlink' => 'Crea una noba registhrazioni',
 'createaccount' => 'Crea una noba registhrazioni',
 'gotaccount' => "Ài già'na registhrazioni? '''$1'''.",
 'gotaccountlink' => 'Intra',
+'userlogin-resetlink' => "Hai immintiggaddu li minuddi d'intradda?",
 'createaccountmail' => 'via postha erettrònica',
 'badretype' => "Li paràuri d'órdhini insiriddi nò cuinzidhini tra èddi.",
 'userexists' => "L'innòmu utenti insiriddu è già utirizaddu. Pa pazieri chirria un'innòmu utenti dibessu.",
@@ -484,7 +500,7 @@ Si la registhrazioni è isthadda criadda pa un\'errori, pói ignorà chisth\'imb
 'loginlanguagelabel' => 'Linga: $1',
 
 # Change password dialog
-'resetpass' => "Ciamba paràura d'órdhini",
+'changepassword' => "Ciamba paràura d'órdhini",
 'resetpass_announce' => "L'intradda è isthadda effettuadda cun un còdizi timpuràniu, inviaddu via postha erettrònica.
 
 Pa cumprità la registhrazioni è nezzessàriu impusthà una noba paràura d'órdhini inogghi:",
@@ -522,7 +538,7 @@ Pa cumprità la registhrazioni è nezzessàriu impusthà una noba paràura d'ór
 'subject' => 'Tìturu:',
 'minoredit' => 'Chistha è una mudìfigga minori',
 'watchthis' => "Aggiungi a l'abbaidaddi ippiziari",
-'savearticle' => 'Saivva la pagina',
+'savearticle' => 'Saivvà la pagina',
 'preview' => 'Antiprimma',
 'showpreview' => 'Visuarizza antiprimma',
 'showlivepreview' => "Funzioni ''Live preview''",
@@ -581,6 +597,7 @@ Si vói crià la pàgina abà, pói sùbidu ischribì in giossu (abbaidda li [[{
 S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni '''Indareddu''' i' lu propriu nabiggadori.",
 'anontalkpagetext' => "----''Chistha è la pàgina di dischussioni di un'utenti anònimu, chi no ha ancora criaddu una registhrazioni o, in dugna modu, no la usa. Pa identifiggallu è dunca nezzessàriu usà lu sóiu nùmaru di l'indirizzu IP. L'indirizzi IP, parò, poni assé cundibisi da più utenti. Si sei un'utenti anònimu e vói chi li cummenti prisenti in chistha pàgina no si rifèrini a te, [[Special:UserLogin|crea una noba registhrazion o intra]] cu' chidda ch'hai già pa evità d'assé confusu cu' althri utenti anònimi in futuru.''",
 'noarticletext' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tituru]] i' l'althri pàgini di lu situ, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri curriraddi] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifiggà la pagina abà]</span>.",
+'noarticletext-nopermission' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tìturu]] i' l'althri pàgini di lu situ, oppuru <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri reratibi]</span>, parò nò pói crià chistha pàgina.",
 'userpage-userdoesnotexist' => 'La registhrazioni "<nowiki>$1</nowiki>" nò curripundi a un\'utenti rigisthraddu. Verifiggà chi s\'aggia avveru gana di crià o mudìfiggà chistha pàgina.',
 'clearyourcache' => "'''Nota:''' daboi abé saivaddu è nezzessàriu pulì la mimória cache di lu propriu nabiggadori pà vidé li ciambamenti. Pa '''Mozilla / Firefox / Safari''': fà clic i Ricàrrigga incalchendi lu buttoni di li maiuschuri, oppuru incalchà ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' i Mac); pa '''Internet Explorer:''' mantinì incalchaddu lu tasthu ''Ctrl'' mentri s'incalcha lu buttoni ''Aggiorna'' o incalchà ''Ctrl-F5''; pa '''Konqueror''': incalchà lu buttoni ''Ricarica'' o lu tasthu ''F5''; pa '''Opera''' pò assé nezzessàriu ibbuiddà cumpretamenti la mimória cache da lu menù ''Strumenti → Preferenze''.",
 'usercssyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi CSS primma di sàivvaddi.",
@@ -599,7 +616,7 @@ S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni
 
 '''Si lu probrema prisisthi, pói prubà à iscì e turrà a intrà.'''",
 'token_suffix_mismatch' => "'''La mudìfigga nò è isthadda sàivvadda parchí lu nabiggadori à musthraddu di gesthì in modu erraddu i caràtteri di punteggiaddura i' lu identifigganti di la mudìfigga. Pa evità una pussìbiri corruzioni di lu testhu di la pàgina, è isthadda rifiutadda l'intrea mudìfigga. Chistha situazioni pó verifiggassi, calch’e voltha, candu so usaddi zerthuni sivvìzi di proxy anònimi via reti chi àni di l'errori.'''",
-'editing' => 'Mudifigga di $1',
+'editing' => 'Mudìfigga di $1',
 'editingsection' => 'Mudifigga di $1 (sezzioni)',
 'editingcomment' => 'Mudifigga di $1 (cummentu)',
 'editconflict' => "Cuntrasthu d'edizioni i $1",
@@ -673,8 +690,9 @@ La rasgioni frunidda da $3 è ''$2''",
 
 Ippiegazioni: (curr) = diffarènzi cu la versioni currenti, (priz) = diffarènzi cu la versioni prizzidenti, '''m''' = mudìfigga minori, '''b''' = mudìfigga d'un bot, '''N''' = pàgina noba",
 'history-fieldset-title' => "Ischurri i' la cronologia",
-'histfirst' => 'Primma',
-'histlast' => 'Ulthima',
+'history-show-deleted' => 'Musthrà soru versioni annulladdi',
+'histfirst' => 'primma',
+'histlast' => 'ùlthimi',
 'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
 'historyempty' => '(biodda)',
 
@@ -693,7 +711,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rev-deleted-text-view' => "Chistha versioni di la pàgina è isthadda buggadda da l'archìbi visìbiri a lu pùbbriggu.
 Lu testhu pò assé visuarizzaddu soru da l'amministhradori di lu situ.
 Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigisthru di canzilladdura] pa althri dettàgli.",
-'rev-delundel' => 'musthra/cua',
+'rev-delundel' => 'musthrà/cuà',
 'revisiondelete' => 'Canzella o ricùpara versioni',
 'revdelete-nooldid-title' => 'Versioni nò ippizzificadda',
 'revdelete-nooldid-text' => "No ài ippizzificaddu la o li versioni di la pàgina i' li quari eseguì chistha funzioni; pò assé chi nò esisthini.",
@@ -747,19 +765,29 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 # Search results
 'searchresults' => 'Risulthaddi di la zercha',
 'searchresults-title' => 'Risulthaddi di la zercha di "$1"',
-'searchresulttext' => 'Pà maggiori infuimmazioni i cumenti zirchà i {{SITENAME}}, vèdi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Zercha di \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tutti li pagini ch\'ischumenzani pa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tutti li pagini chi puntani a "$1"]])',
-'searchsubtitleinvalid' => "Zirchendi '''$1'''",
 'titlematches' => 'Curripundènzi i lu tìturu di li pagini',
-'notitlematches' => 'Nisciuna curripundènzia i lu tìturi di li pàgini',
 'textmatches' => 'Curripundènzi i lu teshu di li pàgini',
 'notextmatches' => 'Nisciuna curripundènzia i lu teshu di li pàgini',
 'prevn' => 'prizzidenti {{PLURAL:$1|$1}}',
 'nextn' => 'sighenti {{PLURAL:$1|$1}}',
+'prevn-title' => 'Prizzidenti $1 {{PLURAL:$1|risulthaddu|risulthaddi}}',
+'nextn-title' => 'Sighenti $1 {{PLURAL:$1|risulthaddu|risulthaddi}}',
+'shown-title' => 'Musthra {{PLURAL:$1|un risulthaddu|$1 risulthaddi}} pa pàgina',
 'viewprevnext' => 'Vèdi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzioni di zercha',
+'searchmenu-exists' => "'''Z'è una pàgina ciamadda\"[[:\$1]]\" in chisthu vichi.''' {{PLURAL:\$2|0=|Vèdi puru li althri risulthaddi agattaddi.}}",
+'searchmenu-new' => "'''Crea la pàgina \"[[:\$1]]\" in chistha vichi!''' {{PLURAL:\$2|0=|Vèdi puru la pàgina agattadda cun la zercha tòia.|Vèdi puru li risulthaddi agattaddi .}}",
+'searchprofile-articles' => 'Bozi',
+'searchprofile-project' => "Pàgini d'aggiuddu e di prugettu",
+'searchprofile-images' => 'Mùrthimediari',
 'searchprofile-everything' => 'Tuttu',
+'searchprofile-advanced' => 'Abanzaddu',
+'searchprofile-articles-tooltip' => 'Zercha in $1',
+'searchprofile-project-tooltip' => 'Zercha in $1',
+'searchprofile-images-tooltip' => 'Zirchà dati',
+'searchprofile-everything-tooltip' => 'Zercha in tuttu lu cuntinuddu (pàgini di dischussioni cumpresi)',
+'searchprofile-advanced-tooltip' => 'Zercha in althri tipi di pàgina',
 'search-result-size' => '$1 ({{PLURAL:$2|una paraura|$2 parauri}})',
+'search-result-category-size' => '{{PLURAL:$1|1 erementu|$1 erementi}} ({{PLURAL:$2|1 sottucateguria|$2 sottucateguri}}, {{PLURAL:$3|1 file|$3 file}})',
 'search-redirect' => '(rinviu $1)',
 'search-section' => '(sezzioni $1)',
 'search-suggest' => 'Forsi zerchabi: $1',
@@ -771,12 +799,11 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'searchall' => 'tutti',
 'showingresults' => "Accó {{PLURAL:$1|màssimu '''1''' risulthaddu|màssimu li '''$1''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
 'showingresultsnum' => "Accó {{PLURAL:$3|'''1''' risulthaddu |li '''$3''' risulthaddi}} à partì da lu nùmaru #'''$2'''.",
-'nonefound' => "'''Nota''': Soru zerthi tipi di pàgina so zirchaddi i'otomàtiggu. Pruba ischribendi primma di la zercha toia ''all:'' pa zirchà tutti li cuntinuddi (dischussioni, mudelli, etc), o usa lu tipi di pàgina disizaddu cumenti prefissu.",
-'powersearch' => 'Zercha abanzadda',
+'showingresultsheader' => "{{PLURAL:$5|Risulthaddu '''$1''' of '''$3'''|Risulthaddi '''$1 - $2''' di '''$3'''}} pa '''$4'''",
+'search-nonefound' => "Nisciuni risulthaddi pa la to' zercha",
 'powersearch-legend' => 'Zercha abanzadda',
 'powersearch-ns' => "Zercha i' li tipi di pàgina:",
 'powersearch-redir' => 'Listha rinvii',
-'powersearch-field' => 'Zercha',
 'powersearch-toggleall' => 'Tutti',
 'powersearch-togglenone' => 'Nisciunu',
 'searchdisabled' => 'Abà no pói zirchà in {{SITENAME}}; proba cun Google o sìmiri, ma ammèntaddi chi li cuntinuddi di {{SITENAME}} poni assé no aggiornaddi.',
@@ -785,7 +812,6 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'preferences' => 'Prifirenzi',
 'mypreferences' => "Li me' prifirenzi",
 'prefs-edits' => 'Mudìfigghi effettuaddi:',
-'changepassword' => "Ciamba paràura d'órdhini",
 'prefs-skin' => 'Aipettu gràficu',
 'skin-preview' => 'antiprimma',
 'datedefault' => 'Nisciuna prifirènzia',
@@ -797,19 +823,16 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'prefs-watchlist-edits' => 'Nùmaru di mudìfigghi da musthrà cu li funzioni abanzaddi:',
 'prefs-misc' => 'Vari',
 'saveprefs' => 'Saivva li prifirenzi',
-'resetprefs' => 'Rimpusthà li prifirènzi',
 'prefs-editing' => 'Casella di mudìfigga',
 'rows' => 'Righi:',
 'columns' => 'Curonni:',
 'searchresultshead' => 'Zercha',
-'resultsperpage' => 'Nùmaru di risulthaddi pa pàgina:',
 'stub-threshold' => 'Varori mìminu pa i <a href="#" class="stub">cullegamenti a li sàgumi</a>:',
 'recentchangesdays' => 'Nùmaru di dì da musthrà i li ulthimi mudìfigghi:',
 'recentchangescount' => 'Numaru pridifiniddu di mudifigghi da musthrà:',
 'savedprefs' => 'Li tó prifirènzi so isthaddi saivvaddi.',
 'timezonelegend' => 'Fusu oràriu:',
 'localtime' => 'Ora lucari:',
-'timezoneoffset' => 'Diffarènzia¹:',
 'servertime' => 'Ora di lu server:',
 'guesstimezone' => "Usa l'ora di lu tóiu nabiggadori",
 'allowemail' => "Cunsenti lu rizzibimentu di postha erettrònica d'althri utenti (1)",
@@ -878,7 +901,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'grouppage-bureaucrat' => '{{ns:project}}:Buròcrati',
 
 # Special:Log/newusers
-'newuserlogpage' => 'Nobi utenti',
+'newuserlogpage' => 'Rigisthru di nobi utenti',
 
 # User rights log
 'rightslog' => 'Diritti di li utenti',
@@ -890,10 +913,13 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|mudìfigga|mudìfigghi}}',
 'recentchanges' => 'Ulthimi mudìfigghi',
-'recentchanges-legend' => 'Opzioni ulthimi mudifigghi',
+'recentchanges-legend' => 'Opzioni ùlthimi mudìfigghi',
 'recentchanges-summary' => 'Chistha pàgina prisinta li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
 'recentchanges-feed-description' => 'Chisthu feed cunteni li mudìfigghi più rizzenti a li cuntinuddi di lu situ.',
-'rcnote' => "Inogghi {{PLURAL:$1|è erencadda la mudìfigga più rizzenti arriggadda|so erencaddi li '''$1''' mudìfigghi più rizzenti arriggaddi}} a lu situ {{PLURAL:$2|i' l'ulthimi 24 ori|i' li '''$2''' dì passaddi}}; i dati so aggiornaddi a li $5 di lu $4.",
+'recentchanges-label-newpage' => 'Noba pàgina',
+'recentchanges-label-minor' => 'Chistha è una mudìfigga minori',
+'recentchanges-label-bot' => 'Chistha è una mudìfigga pa unu bot',
+'recentchanges-label-unpatrolled' => 'Mudìfigga nò ancora contrulladda',
 'rcnotefrom' => "Inogghi so erencaddi li mudìfigghi arriggaddi a parthì da '''$2''' (finz'a '''$1''').",
 'rclistfrom' => 'Musthra li mudìfigghi arriggaddi à partì da $1',
 'rcshowhideminor' => '$1 li mudìfigghi minori',
@@ -905,8 +931,8 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rclinks' => "Musthra li $1 mudìfigghi più rizzenti arriggaddi i' l'ulthimi $2 dì<br />$3",
 'diff' => 'diff',
 'hist' => 'cron',
-'hide' => 'cua',
-'show' => 'musthra',
+'hide' => 'Cua',
+'show' => 'Musthra',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -914,7 +940,7 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
 'rc_categories' => 'Limita a li categuri (siparaddi da "|")',
 'rc_categories_any' => 'Cassisia',
 'newsectionsummary' => '/* $1 */ noba sezzioni',
-'rc-enhanced-expand' => 'Musthra dettagli (dumanda JavaScript)',
+'rc-enhanced-expand' => 'Musthrà dettagli (dumanda JavaScript)',
 'rc-enhanced-hide' => 'Cua dettàgli',
 
 # Recent changes linked
@@ -1009,6 +1035,7 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'upload-curl-error28-text' => "Lu situ à impiegaddu troppu tempu a rippundì. Verifiggà chi lu situ sia attibu, aisittà calchi minuti e turrà a prubà, pussibiimmenti candu v'è mancu genti.",
 
 'license' => "Licènzia d'usu:",
+'license-header' => "Licènzia d'usu:",
 'nolicense' => 'Nisciuna licènzia indicadda',
 'license-nopreview' => '(Antiprimma nò dipunìbiri)',
 'upload_source_url' => " (un'indirizzu vàriddu e pùbbriggu)",
@@ -1039,10 +1066,11 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'filehist-dimensions' => 'Misuri',
 'filehist-filesize' => 'Misuri di lu file',
 'filehist-comment' => 'Oggettu',
-'imagelinks' => 'Cullegamenti a lu file',
+'imagelinks' => 'Utirizazioni di lu file',
 'linkstoimage' => "{{PLURAL:$1|La sighenti pàgina pùnta|Li sighenti $1 pàgini pùntani}} a l'immàgina:",
 'nolinkstoimage' => "Nisciuna pàgina cunteni cullegamenti a l'immàgina.",
 'sharedupload' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti.',
+'sharedupload-desc-here' => 'Chisthu file prubeni da $1 e pó assé utirizaddu da althri prugetti. La deschrizioni di la [$2 pàgina di deschrizioni] è indicadda in giossu.',
 'uploadnewversion-linktext' => 'Carrigga una nóba versioni di chistu file',
 
 # File reversion
@@ -1143,12 +1171,12 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'deadendpages' => 'Pàgini chena iscidda',
 'deadendpagestext' => 'Li sighenti pàgini so chena cullegamenti bessu althri pàgini di {{SITENAME}}.',
 'protectedpages' => 'Pàgini prutiggiddi',
-'protectedpagestext' => "Inogghi v'è un'erencu di li pàgini prutiggiddi, di li quari è impididda la mudìfigga o l'ippusthamentu",
+'protectedpages-noredirect' => 'Cuà rinvii',
 'protectedpagesempty' => 'Abà nò vi so pàgini prutiggiddi.',
 'protectedtitles' => 'Tìturi prutiggiddi',
-'protectedtitlestext' => 'Li sighenti tìturi so prutiggiddi da la criazioni di pàgini nobi',
 'protectedtitlesempty' => 'Abà nò vi so tìturi prutiggiddi.',
 'listusers' => 'Erencu di li utenti',
+'usercreated' => '{{GENDER:$3|Criaddu}} lu $1 a $2',
 'newpages' => 'Pàgini più rizzenti',
 'newpages-username' => 'Nommu utenti:',
 'ancientpages' => 'Pàgini mancu rizzenti',
@@ -1185,9 +1213,6 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
 'allpagesto' => "Musthra li pagini finz'a:",
 'allarticles' => 'Tutti li pàgini',
 'allinnamespace' => 'Tutti li pàgini di lu namespace $1',
-'allnotinnamespace' => 'Tutti lì pàgini, eschrusu lu namespace $1',
-'allpagesprev' => 'Prizzidenti',
-'allpagesnext' => 'Sighenti',
 'allpagessubmit' => 'Vai',
 'allpagesprefix' => "Musthra li pàgini ch'ischuminzani cun:",
 'allpagesbadtitle' => "Lu tìturu indicaddu pa la pàgina nò è vàriddu o cunteni prefissi interlinga o interwiki. Pudia puru cuntinì unu o più caràtteri chi nò si pudiani usà i' li tìturi.",
@@ -1202,6 +1227,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
 # Special:LinkSearch
 'linksearch' => 'Cullegamenti estherni',
 'linksearch-ok' => 'Zercha',
+'linksearch-line' => '$1 ha liaddura da $2',
 
 # Special:ListUsers
 'listusersfrom' => "Musthra l'utenti parthendi da:",
@@ -1233,7 +1259,8 @@ Also see [[Special:WantedCategories|wanted categories]].",
 
 # Watchlist
 'watchlist' => 'Abbaidaddi ippiziari',
-'mywatchlist' => 'Abbaidaddi ippiziari',
+'mywatchlist' => 'Abbaiddaddi ippiziari',
+'watchlistfor2' => 'Pa $1 $2',
 'nowatchlist' => "La listha di l'abbaidaddi ippiziari è biodda.",
 'watchlistanontext' => "Pa visuarizzà e mudìfiggà l'erencu di l'abbaidaddi ippiziari è nezzessàriu $1.",
 'watchnologin' => 'Intradda nò effettuadda',
@@ -1309,8 +1336,9 @@ Pa dì cosa ni pensi e dumandà assisthènzia:
 'confirmdeletetext' => "Sei canzillendi pa sempri da la bancati una pàgina o un'immàgina, umpari a la cronologia d'edda.
 Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguènzi di l'azioni tóia e ch'edda è cunfòimmi a li [[{{MediaWiki:Policy-url}}|lìni ghia]].",
 'actioncomplete' => 'Azioni cumpritadda',
+'actionfailed' => 'Azioni craccadda',
 'deletedtext' => 'La pàgina "$1" è isthadda canzilladda. Cunsultha lu $2 pa un\'erencu di li pàgini canzilladdi da poggu tempu.',
-'dellogpage' => 'Canzilladduri',
+'dellogpage' => 'Rigisthru di li canzilladduri',
 'dellogpagetext' => 'Inogghi so erencaddi li pàgini canzilladdi da poggu tempu.',
 'deletionlog' => 'Rigisthru di li canzilladduri',
 'reverted' => 'Turra a la versioni prizzidenti',
@@ -1326,7 +1354,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
 # Rollback
 'rollback' => 'Annulla li mudìfigghi',
 'rollback_short' => 'Turra che primma',
-'rollbacklink' => 'turra che primma',
+'rollbacklink' => 'turrà che primma',
 'rollbackfailed' => 'Nò è ridisciddu a turrà che primma',
 'cantrollback' => "Impussìbiri annullà li mudìfigghi; l'utenti chi n'è l'autori è l'unicu cuntribudori di la pàgina.",
 'editcomment' => "L'oggettu di la mudìfigga era: \"''\$1''\".",
@@ -1336,7 +1364,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
 'sessionfailure' => "S'è verifigaddu un probrema i' la sissioni ch'identifigga l'intradda; lu sistham nò à eseguiddu lu cumandu imparthiddu pa precauzioni. Turrà a la pàgina prizzidenti cu' lu buttoni \"Indareddu\" di lu proprio nabigaddori, turrà a carriggà la pàgina e riprubà.",
 
 # Protect
-'protectlogpage' => 'Prutizioni',
+'protectlogpage' => 'Rigisthru di prutizioni',
 'protectlogtext' => "Inogghi v'è la listha di li pàgini broccaddi e ibbruccaddi. Védi la [[Special:ProtectedPages|listha di li pàgini prutiggiddi]] pa chiddi chi so attuarmenti prutiggiddi.",
 'protectedarticle' => 'à prutiggiddu "[[$1]]"',
 'modifiedarticleprotection' => 'ha mudìfiggaddu lu libellu di prutizioni di "[[$1]]"',
@@ -1390,7 +1418,7 @@ L'impusthazioni currenti pa la pàgina so '''$1''':",
 'undelete-nodiff' => 'Nò è isthadda acciappadda nisciuna ribisioni prizzidenti.',
 'undeletebtn' => 'Turra che primma',
 'undeletelink' => 'visuarizza/rimpustha',
-'undeletereset' => 'Rimpustha',
+'undeleteviewlink' => 'vidé',
 'undeletecomment' => 'Cummentu:',
 'undeletedrevisions' => '{{PLURAL:$1|Una ribisioni ricuparadda|$1 ribisioni ricuparaddi}}',
 'undeletedrevisions-files' => '{{PLURAL:$1|Una ribisioni|$1 ribisioni}} e {{PLURAL:$2|un file ricuparaddu|$2 file ricuparaddi}}',
@@ -1416,39 +1444,43 @@ $1",
 'blanknamespace' => '(Prinzipari)',
 
 # Contributions
-'contributions' => 'Cuntributi utenti',
+'contributions' => '{{GENDER:$1|Cuntributi utenti}}',
 'contributions-title' => 'Cuntributi di $1',
-'mycontris' => "li me' cuntributi",
-'contribsub2' => 'Pa $1 ($2)',
+'mycontris' => "Li me' cuntributi",
+'contribsub2' => 'Par {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Nò so isthaddi acciappaddi mudifigghi cunfoimmi a li criteri sciubaraddi.',
-'uctop' => '(ulthima pa la pàgina)',
+'uctop' => '(currenti)',
 'month' => 'A parthì da lu mesi (e prizzidenti):',
 'year' => "A parthì da l'anni (e prizzidenti):",
 
 'sp-contributions-newbies' => 'Musthra soru li cuntributi di li nobi utenti',
 'sp-contributions-newbies-sub' => 'Pa li nobi utenti',
 'sp-contributions-blocklog' => 'Brocchi',
+'sp-contributions-uploads' => 'carriggamentu',
+'sp-contributions-logs' => 'rigisthri',
 'sp-contributions-talk' => 'dischussioni',
 'sp-contributions-search' => 'Zercha cuntributi',
 'sp-contributions-username' => 'Indirizzu IP o nommu utenti:',
+'sp-contributions-toponly' => 'Soru musthrà li versioni attuari',
 'sp-contributions-submit' => 'Zercha',
 
 # What links here
 'whatlinkshere' => 'Puntani inogghi',
 'whatlinkshere-title' => 'Pàgini chi pùntani a "$1"',
 'whatlinkshere-page' => 'Pàgina:',
-'linkshere' => "Le sighenti pàgini cuntenani dei cullegamenti a '''[[:$1]]''':",
+'linkshere' => "Li sighenti pàgini cuntenani cullegamenti a '''[[:$1]]''':",
 'nolinkshere' => "Nisciuna pàgina cunteni dei cullegamenti chi pùntani a '''[[:$1]]'''.",
 'nolinkshere-ns' => "Nò vi so pàgini chi pùntani a '''[[:$1]]''' i' lu namespace sciubaraddu.",
 'isredirect' => 'rinviu',
 'istemplate' => 'incrusioni',
-'isimage' => "cullegamentu a l'immàgina",
+'isimage' => 'Cullegamentu a file',
 'whatlinkshere-prev' => '{{PLURAL:$1|prizzidenti|prizzidenti $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|sighenti|sighenti $1}}',
 'whatlinkshere-links' => '← cullegamenti',
 'whatlinkshere-hideredirs' => '$1 rinvii',
 'whatlinkshere-hidetrans' => '$1 incrusioni',
 'whatlinkshere-hidelinks' => '$1 cullegamenti',
+'whatlinkshere-hideimages' => '$1 liadduri a file',
 'whatlinkshere-filters' => 'Filthri',
 
 # Block/unblock
@@ -1456,15 +1488,12 @@ $1",
 'ipadressorusername' => 'Indirizzu IP o innòmu utenti:',
 'ipbexpiry' => 'Ischadènzia di lu broccu:',
 'ipbreason' => 'Mutibu di lu broccu:',
-'ipbreasonotherlist' => 'Althra mutibazioni',
 'ipbcreateaccount' => "Impidisci la criazioni d'althri registhrazioni",
 'ipbemailban' => "Impidisci a l'utenti l'inviu di postha erettrònica",
 'ipbenableautoblock' => "Brocca automatiggamenti l'ulthimu indirizzu IP usaddu da l'utenti e l'althri chi zerchani di fà mudìfigghi",
 'ipbsubmit' => "Brocca l'utenti",
 'ipbother' => 'Duradda nò in erencu:',
 'ipboptions' => '2 ori:2 hours,1 dì:1 day,3 dì:3 days,1 chedda:1 week,2 cheddi:2 weeks,1 mesi:1 month,3 mesi:3 months,6 mesi:6 months,1 anni:1 year,infiniddu:infinite',
-'ipbotheroption' => 'althru',
-'ipbotherreason' => 'Althri dettàgli/rasgioni aggiuntiba:',
 'ipbhidename' => "Cua l'innòmu utenti da lu rigisthru di li brocchi, da l'erencu di li brocci attibi e da l'erencu utenti.",
 'badipaddress' => 'Indirizzu IP invàriddu',
 'blockipsuccesssub' => 'Broccu eseguiddu',
@@ -1490,7 +1519,7 @@ $1",
 'emailblock' => 'postha erettrònica broccadda',
 'ipblocklist-empty' => "L'erencu di li brocchi è bioddu.",
 'ipblocklist-no-results' => "L'indirizzu IP o innòmmu utenti ciamaddu nò è broccaddu.",
-'blocklink' => 'brocca',
+'blocklink' => 'broccà',
 'unblocklink' => 'ibbrucca',
 'change-blocklink' => 'ciamba broccu',
 'contribslink' => 'cuntributi',
@@ -1547,7 +1576,6 @@ azzirthati d'abé cumpresu li cunsiguènzi di l'ippusthamentu!",
 
 In chisthi casi, si lu vói avveru, débi ippusthà o aggiugnì a manu le infuimmazioni cuntinuddi i' la pàgina di dischussioni.",
 'movearticle' => 'Ippustha la pàgina',
-'movenologin' => 'Intradda nò effettuadda',
 'movenologintext' => "L'ippusthamentu di li pàgini è cunsintiddu soru a l'utenti registhraddi chi so [[Special:UserLogin|intraddi]] i' lu situ.",
 'movenotallowed' => "Nò si diponi di li primmissi nezzessàri a l'ippusthamentu di pàgini.",
 'newtitle' => 'Nobu tìturu:',
@@ -1557,8 +1585,6 @@ In chisthi casi, si lu vói avveru, débi ippusthà o aggiugnì a manu le infuim
 'movepage-moved' => '\'\'\'"$1" è isthadda ippusthadda a "$2"\'\'\'',
 'articleexists' => "Una pàgina cun chisth'innòmmu isisthi già, oppuru l'innòmmu sciubaraddu no à vàriddu. Sciubarà un'althru tìturu.",
 'cantmove-titleprotected' => "L'ippusthamentu di la pàgina nò è pussìbiri parchí lu nobu tìturu è isthaddu prutiggiddu pa impidinni la criazioni",
-'talkexists' => "'''La pàgina è isthadda ippusthadda currettamenti, ma nò è isthaddu pussìbiri ippusthà la pàgina di dischussioni parchí ni isisthi già un'althra cu' lu nobu tìturu. Aggiugnì a manu li cuntiniddi di li dui pàgini.'''",
-'movedto' => 'ippusthadda a',
 'movetalk' => 'Ippustha puru la pàgina di dischussioni.',
 'movelogpage' => 'Ippusthamenti',
 'movelogpagetext' => "Chisthu è l'erencu di li pàgini ippusthaddi.",
@@ -1573,7 +1599,7 @@ La pàgina di disthinazioni "[[:$1]]" isisthi già. Vói canzillalla pa rindì p
 'selfmove' => "Lu nobu tìturu è uguari a lu vécciu; impussìbiri ippusthà la pàgina cu' lu matessi innòmmu.",
 
 # Export
-'export' => 'Ippurtha li pàgini',
+'export' => 'Ippurthà pàgini',
 'exporttext' => "È pussìbiri ippurthà lu testhu e la cronologia di li mudìfigghi di una pàgina o di un gruppu di pàgini in fuimmaddu XML pa impurthalli i'althri siti ch'utilizzanni lu software MediaWiki, attrabessu [[Special:Import]].
 
 Pa ippurthà li pàgina indicà i tìturi i' la casella di testhu in giossu, unu pa riga, e ippizzificà si s'à gana d'uttinì la versioni currenti e tutti li versioni prizzidenti, cu' li dati di la cronologia di la pàgina, oppure soru l'ulthima versioni e i dati curripundenti a l'ulthima mudìfigga.
@@ -1602,7 +1628,7 @@ Pa piazeri utirizà [https://www.mediawiki.org/wiki/Localisation MediaWiki Lucar
 'allmessages-filter-submit' => 'Vai',
 
 # Thumbnails
-'thumbnail-more' => 'Immannitta',
+'thumbnail-more' => 'Immannittà',
 'filemissing' => 'File mancanti',
 'thumbnail_error' => "Errori i' la criazioni di la miniadduri: $1",
 'djvu_page_error' => 'Nùmaru di pàgina DjVu ibbagliaddu',
@@ -1658,7 +1684,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-pt-logout' => 'Iscidda',
 'tooltip-ca-talk' => 'Vèdi li dischussioni reratibi a chistha pàgina',
 'tooltip-ca-edit' => "Pói mudìfiggà chistha pàgina. Pa piazeri usa lu buttoni d'antiprimma primma di saivvà",
-'tooltip-ca-addsection' => 'Ischumenza una sezzioni noba',
+'tooltip-ca-addsection' => 'Ischuminzà una sezzioni noba',
 'tooltip-ca-viewsource' => 'Chistha pàgina è prutiggidda, ma pói vidé lu còdizi soiu.',
 'tooltip-ca-history' => 'Versioni prizzidenti di chistha pàgina',
 'tooltip-ca-protect' => 'Prutiggi chistha pàgina',
@@ -1668,10 +1694,11 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-ca-watch' => "Aggiungi chistha pàgina a la listha tóia di l'abbaidaddi ippiziari",
 'tooltip-ca-unwatch' => "Elimina chistha pàgina da la tóia listha d'abbaidaddi ippiziari",
 'tooltip-search' => 'Zercha di dentru a {{SITENAME}}',
-'tooltip-search-go' => "Via a una pàgina cu' lu tìturu indicaddu, si v'è",
+'tooltip-search-go' => "Vai a una pàgina cu' lu tìturu indicaddu, si v'è",
 'tooltip-search-fulltext' => "Zercha lu testhu indicaddu i' li pàgini",
-'tooltip-p-logo' => 'Pagina prinzipari',
+'tooltip-p-logo' => 'Visita la pàgina prinzipari',
 'tooltip-n-mainpage' => 'Visita la pàgina prinzipari',
+'tooltip-n-mainpage-description' => 'Visita la pàgina prinzipari',
 'tooltip-n-portal' => "Deschrizioni di lu prugettu, cosa pói fà, und'agattà li cosi",
 'tooltip-n-currentevents' => "Infuimmazioni i' l'eventi d'attuarità",
 'tooltip-n-recentchanges' => "Erencu di l'ulthimi mudìfigghi i' lu situ",
@@ -1690,7 +1717,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-ca-nstab-main' => 'Vèdi la bozi',
 'tooltip-ca-nstab-user' => 'Vèdi la pàgina utenti',
 'tooltip-ca-nstab-media' => 'Vedi la pàgina di lu file mùrthimediari',
-'tooltip-ca-nstab-special' => 'Chistha è una pàgina ippiziari, nò pó assé mudìfiggadda.',
+'tooltip-ca-nstab-special' => 'Chistha è una pàgina ippiziari, nò pó assé mudifiggadda.',
 'tooltip-ca-nstab-project' => 'Vèdi la pàgina di saivvìziu',
 'tooltip-ca-nstab-image' => "Vèdi la pàgina di l'immàgina",
 'tooltip-ca-nstab-mediawiki' => "Vèdi l'imbasciadda di sisthema",
@@ -1705,8 +1732,9 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
 'tooltip-watch' => "Aggiungi chistha pàgina a la listha di l'abbaidaddi ippiziari",
 'tooltip-recreate' => "Ricrea la pàgina puru s'è già isthadda canzilladda.",
 'tooltip-upload' => 'Ischuminza lu carriggamentu',
-'tooltip-rollback' => '"Turra che primma" annulla li mudifigghi a chistha pagina di l\'ulthimu cuntributori cu\' un soru clic.',
+'tooltip-rollback' => '"Turra che primma" annulla li mudìfigghi a chistha pagina di l\'ulthimu cuntributori cu\' un soru clic.',
 'tooltip-undo' => "\"Annulla\"  pilmitti d'annullà chistha mudifigga e abbri lu modulu di mudifigga d'antiprimma. Pilmitti d'insirì una mutibazioni i' l'oggettu di la mudifigga.",
+'tooltip-summary' => 'Ischribbi un riassuntu corthu',
 
 # Metadata
 'notacceptable' => "Lu server wiki nò è bonu a frunì li dati i' un fuimmaddu liggìbiri da lu nabiggadori utirizaddu.",
@@ -1767,7 +1795,7 @@ $1",
 'file-info-size' => '$1 × $2 punti, misuri: $3, tipu MIME: $4',
 'file-nohires' => 'Nò so dipunìbiri versioni a risoruzioni maggiori.',
 'svg-long-desc' => 'file in fuimmaddu SVG, misuri nominari $1 × $2 punti, misuri di lu file: $3',
-'show-big-image' => 'Versioni a altha risoruzioni',
+'show-big-image' => "File d'orìgini",
 
 # Special:NewFiles
 'newimages' => 'Galleria di li file nobi',
@@ -1865,13 +1893,9 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-n' => 'Nodi',
 
-# External editor support
-'edit-externally' => 'Mudìfigga chistu file usendi un prugramma esthernu',
-'edit-externally-help' => "Pa maggiori infuimmazioni cunsulthà l'[https://www.mediawiki.org/wiki/Manual:External_editors isthruzioni] (in ingresu).",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tutti',
-'namespacesall' => 'Tutti',
+'namespacesall' => 'tutti',
 'monthsall' => 'tutti',
 
 # Email address confirmation
@@ -1889,7 +1913,6 @@ Imbasciadda d'errori: $1",
 'confirmemail_needlogin' => 'È nezzessàriu $1 pa cunfèimmà lu propriu indirizzu di postha erettrònica.',
 'confirmemail_success' => "L'indirizzu di postha erettrònica è cunfèimmaddu. Abà è pussìbiri eseguì l'intradda e si godì lu situ.",
 'confirmemail_loggedin' => "L'indirizzu di postha erettrònica è isthaddu cunfèimmaddu.",
-'confirmemail_error' => 'Errori i lu saivvamentu di la cunfèimma.',
 'confirmemail_subject' => "{{SITENAME}}: prigonta di cunfèimma di l'indirizzu di postha erettrònica",
 'confirmemail_body' => "Calchunu, forsi tu cu' l'indirizzu IP \$1,
 s'è rigisthraddu cumenti \"\$2\" i' {{SITENAME}} cun chisthu indirizzu di postha erettrònica.
@@ -1989,6 +2012,7 @@ Pa piazeri, cunfèimma chi vòi ricrià avveru chistha pàgina.",
 'specialpages-group-login' => 'Intra / registhrazioni',
 
 # Special:Tags
+'tag-filter' => '[[Special:Tags|Tag]] filthru:',
 'tags-edit' => 'mudifigga',
 
 # HTML forms
index 4deb798..43d81a0 100644 (file)
@@ -50,7 +50,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Veadjemeahttun_bajilčála' ),
        'Blankpage'                 => array( 'Guoros_siidu' ),
        'Block'                     => array( 'Hehtte', 'Hehtte_geavaheaddji', 'Hehtte_IP' ),
-       'Blockme'                   => array( 'Hehtte_mu' ),
        'Booksources'               => array( 'Girjegáldut' ),
        'BrokenRedirects'           => array( 'Boatkanan_stivremat', 'Boatkanan_ođđasitstivremat' ),
        'Categories'                => array( 'Kategoriijat' ),
@@ -60,7 +59,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Rievdadusat' ),
        'CreateAccount'             => array( 'Ráhkat_dovddaldaga', 'Ráhkat_konttu' ),
        'DeletedContributions'      => array( 'Sihkkojuvvon_rievdadusat' ),
-       'Disambiguations'           => array( 'Liŋkkat_dárkonsiidduide' ),
        'DoubleRedirects'           => array( 'Guoktegeardásaš_ođđasitstivremat' ),
        'EditWatchlist'             => array( 'Rievdat_čuovvunlisttu' ),
        'Emailuser'                 => array( 'Sádde_e-poastta' ),
@@ -162,7 +160,6 @@ $messages = array(
 'tog-minordefault' => 'Rievdadusat leat unnit, jus ii eará álmmuhuvvo',
 'tog-previewontop' => 'Čájet siidduid rievdadusaid ovddalgihtii geahččama ođasmahttin lođá bajábealde',
 'tog-previewonfirst' => 'Čájehišgoađe siidduid rievdadusaid ovddalgihtii, go siiddu rievdadeapmi álggahuvvo',
-'tog-nocache' => 'Ále vurke siidduid gaskaboddasašmuitui',
 'tog-enotifwatchlistpages' => 'Sádde dieđu e-poasttain go mu čuovvunlistui gullevaš siidu rievdaduvvo',
 'tog-enotifusertalkpages' => 'Sádde e-poasta, go geavaheaddjisiiddu ságastallansiidu rievdaduvvo',
 'tog-enotifminoredits' => 'Sádde dieđu e-poasttain maid unna rievdadusaid birra',
@@ -255,7 +252,6 @@ $messages = array(
 'qbedit' => 'Rievdat',
 'qbpageoptions' => 'Siidoásahusat',
 'qbmyoptions' => 'Ásahusat',
-'qbspecialpages' => 'Doaibmasiiddut',
 
 # Vector skin
 'vector-action-addsection' => 'Lasit fáttá',
@@ -343,8 +339,6 @@ $messages = array(
 
 'retrievedfrom' => 'Vižžojuvvon čujuhusas $1',
 'youhavenewmessages' => 'Dutnje leat $1 ($2).',
-'newmessageslink' => 'ođđa dieđut',
-'newmessagesdifflink' => 'maŋimus rievdadus',
 'youhavenewmessagesmulti' => 'Dutnje lea ođđa dieđut siiddus $1',
 'editsection' => 'rievdat',
 'editold' => 'rievdat',
@@ -453,7 +447,7 @@ Sáhtát joatkit {{GRAMMAR:genitive|{{SITENAME}}}} geavaheami anonyman dahje log
 'loginlanguagelabel' => 'Giella: $1',
 
 # Change password dialog
-'resetpass' => 'Suollemassáni gurren',
+'changepassword' => 'Suollemassáni molson',
 'resetpass_announce' => 'Čálligohtet sisa e-poasttain sáddejuvvon suollemassánin. Fertet addit ođđa suollemassáni dasa:',
 'resetpass_text' => '<!-- Lasit dasa teavstta -->',
 'resetpass_header' => 'Ođđa suollemassáni čállin',
@@ -608,9 +602,6 @@ Eará bajasdoallit sáhtet lohkat čihkojuvvon sisdoalu ja máhcahit dan.",
 # Search results
 'searchresults' => 'Ohcanbohtosat',
 'searchresults-title' => 'Ohcanbohtosat: «$1»',
-'searchsubtitle' => 'Ohcan tearpmain [[:$1]]',
-'searchsubtitleinvalid' => 'Ohcan tearpmain $1',
-'notitlematches' => 'Ohcansátni ii dihtton ovttasge bájilčállagis',
 'prevn' => '← {{PLURAL:$1|$1}} ovddit',
 'nextn' => '{{PLURAL:$1|$1}} čuovvovaš →',
 'viewprevnext' => 'Čájet [$3] oktanaga.
@@ -623,7 +614,6 @@ $1 {{int:pipe-separator}} $2',
 'searchprofile-advanced' => 'Viiddiduvvon',
 'showingresults' => "{{PLURAL:$1|'''Okta''' boađus|'''$1''' bohtosa}} bohtosa'''$2''' rájes.",
 'showingresultsnum' => "Vuolábealde {{PLURAL:$3|lea '''okta''' ohcanboađus|leat '''$3''' ohcanbohtosa}} '''$2.''' bohtosa rájes.",
-'powersearch' => 'Oza',
 'powersearch-ns' => 'Oza nammagomuvuođain:',
 'powersearch-redir' => 'Listu ođđasitstivremiin',
 'powersearch-togglelabel' => 'Rievdat válljema:',
@@ -634,8 +624,6 @@ $1 {{int:pipe-separator}} $2',
 'preferences' => 'Ásahusat',
 'mypreferences' => 'Ásahusat',
 'prefs-edits' => 'Rievdadusaid mearri:',
-'prefsnologin' => 'It leat čálligoahtán sisa',
-'changepassword' => 'Suollemassáni molson',
 'prefs-skin' => 'Olggosoaidnu',
 'skin-preview' => 'ovdalgihtii geahččan...',
 'datedefault' => 'Eai válljemat',
@@ -646,7 +634,6 @@ $1 {{int:pipe-separator}} $2',
 'prefs-watchlist-edits' => 'Rievdadusaid mearri čuovvunlisttus',
 'prefs-misc' => 'Eará',
 'saveprefs' => 'Vurke ásahusaid',
-'resetprefs' => 'Máhcat vurkejuvvon ásahusaid',
 'prefs-editing' => 'Rievdadeapmi',
 'rows' => 'Gurgadasa:',
 'columns' => 'Kolumnat',
@@ -656,7 +643,6 @@ $1 {{int:pipe-separator}} $2',
 'savedprefs' => 'Du ásahusid vurken lihkosmuvai.',
 'timezonelegend' => 'Áigeavádat',
 'localtime' => 'Báikálaš áigi',
-'timezoneoffset' => 'Áigeearru',
 'servertime' => 'Servera áigi',
 'guesstimezone' => 'Jeara neahttabláđejeaddjis',
 'timezoneregion-africa' => 'Afrihkká',
@@ -728,7 +714,6 @@ $1 {{int:pipe-separator}} $2',
 'recentchanges' => 'Varas rievdadusat',
 'recentchanges-summary' => 'Dán siiddus sáhtát čuovvut varas rievdadusaid {{SITENAME}}s.',
 'recentchanges-feed-description' => 'Dán siiddus sáhtat čuovvut varas {{GRAMMAR:illative|{{SITENAME}}}} rievdadusaid.',
-'rcnote' => 'Vuollin {{PLURAL:$1|lea okta rievdadus|leat $1 varas rievdadusa}} {{PLURAL:$2|ovtta beaivvi|$2 maŋimus jándora}} áigge gitta $3 rádjái.',
 'rcnotefrom' => "Vuolábealde leat rievdadusat '''$2''' rájes. Eanemusta '''$1''' mearkkastaga čájehuvvo.",
 'rclistfrom' => 'Čájet ođđa rievdadusat $1 rájes',
 'rcshowhideminor' => '$1 unna rievdádusat',
@@ -933,7 +918,6 @@ $1 {{int:pipe-separator}} $2',
 'protectedpages' => 'Suodjáluvvon siiddut',
 'protectedpages-indef' => 'Beare siiddut, maid suodjaleapmi lea bissovaš',
 'protectedpages-cascade' => 'Beare siiddut, maid suodjaleapmi lea viiddiduvvon',
-'protectedpagestext' => 'Čuovvovaš siiddut leat suodjáluvvon sirdimiin ja rievdadusain',
 'protectedtitles' => 'Suodjaluvvon siidonamat',
 'listusers' => 'Geavaheaddjilistu',
 'newpages' => 'Ođđa siiddut',
@@ -967,9 +951,6 @@ $1 {{int:pipe-separator}} $2',
 'prevpage' => 'Ovddit siidu ($1)',
 'allarticles' => 'Buot siiddut',
 'allinnamespace' => 'Buot siiddut nammagomuvuođas $1',
-'allnotinnamespace' => 'Buot siiddut, mat eai gula nammagomuvuhtii $1',
-'allpagesprev' => 'Ovddit',
-'allpagesnext' => 'Čuovvovaš',
 'allpagessubmit' => 'Oza',
 'allpagesbadtitle' => 'Čállojuvvon bájilčála lei dohkemeahtun dahje das lei wikiid gaskasaš álgooassi.',
 'allpages-bad-ns' => '{{GRAMMAR:inessive|{{SITENAME}}}} ii leat nammagomuvuohta ”$1”.',
@@ -1132,7 +1113,6 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'viewdeletedpage' => 'Sihkojuvvon siidduid bláđen',
 'undeleterevisions' => '{{PLURAL:$1|Okta veršuvdna|$1 veršuvnna}} lasihuvvon arkiivii.',
 'undeletebtn' => 'Máhcat',
-'undeletereset' => 'Gurre',
 'undeletecomment' => 'Kommeanta:',
 'undeletedrevisions' => '$1 veršuvnna máhcahuvvui',
 'undeletedrevisions-files' => '$1 veršuvnna ja $2 fiilla máhcahuvvui',
@@ -1178,12 +1158,10 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 # Block/unblock
 'block' => 'Hehtte geavaheaddji',
 'blockip' => 'Hehtte rievdadeamis',
-'blockip-title' => 'Cagge geavaheaddji',
 'blockip-legend' => 'Cagge geavaheaddji',
 'ipadressorusername' => 'IP-čujuhus dahje geavaheaddjidovddaldat',
 'ipbexpiry' => 'Guhkkodat',
 'ipbreason' => 'Sivva',
-'ipbreasonotherlist' => 'Eará sivva',
 'ipbreason-dropdown' => '*Dábálas cakkastallansivat
 ** Boasto dieđuid lasiheapmi
 ** Sisdoalu sihkkun
@@ -1198,8 +1176,6 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 'ipbsubmit' => 'Hehtte dán geavaheaddji',
 'ipbother' => 'Eará áigi',
 'ipboptions' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
-'ipbotheroption' => 'eará',
-'ipbotherreason' => 'Eará sivva',
 'badipaddress' => 'IP-čujuhus lea boastut.',
 'blockipsuccesssub' => 'Hehtten lihkosmuvai',
 'blockipsuccesstext' => "Geavaheaddji dahje IP-čujuhus '''$1''' lea eston.<br />Dálá easttut gávdnot [[Special:BlockList|easttolisttus]].",
@@ -1227,13 +1203,10 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
 # Move page
 'move-page-legend' => 'Sirdde siiddu',
 'movearticle' => 'Sirdde siiddu',
-'movenologin' => 'It leat čálligoahtán sisa',
 'newtitle' => 'Ođđa namma siidui',
 'move-watch' => 'Čuovo dán siiddu',
 'movepagebtn' => 'Sirdde siiddu',
 'pagemovedsub' => 'Sirdin lihkosmuvai',
-'talkexists' => "'''Siiddu sirdin iešalddes lihkosmuvai, earret siiddu ságastallansiiddu sirdin daningo ođđa bájilčálas lea jo ságastallansiidu. Leage buorre ja sirdde ságastallamiid manuálalažžat.'''",
-'movedto' => 'Sirdojuvvun ođđa bájilčállagin',
 'movetalk' => 'Sirdde maid ságastallansiiddu.',
 'movelogpage' => 'Sirdinlogga',
 'movelogpagetext' => 'Dát lea logga sirdojuvvon siidduin.',
index e1d8e0d..3bb8079 100644 (file)
@@ -35,7 +35,6 @@ $messages = array(
 'tog-minordefault' => 'Jömde ticpatlöx coccebj bajlöxamde auto',
 'tog-previewontop' => "Cohuatlöx cuáxiit boxde ticpatlöx 'pre",
 'tog-previewonfirst' => 'Cohuatlöx cuáxiitde 1. ticpatlöx',
-'tog-nocache' => 'Necoccebj cachede páhinám',
 'tog-enotifwatchlistpages' => 'E-iitom he páhina he cáminot coccebj quiih',
 'tog-enotifusertalkpages' => 'E-iitom he czaxö páhina he cáminot coccebj quiih',
 'tog-enotifminoredits' => 'E-iitom hede ticpatlöx bajlöxde páhinám',
@@ -131,7 +130,6 @@ $messages = array(
 'qbedit' => 'Ticpatlöx',
 'qbpageoptions' => 'Jan páhina',
 'qbmyoptions' => 'Hepáhinám',
-'qbspecialpages' => 'Páhinám extravám',
 'faq' => 'Cocmíiit cmaa',
 'faqpage' => 'Project:Cocmíiit cmaa',
 
@@ -216,8 +214,6 @@ $messages = array(
 'ok' => 'ton',
 'retrievedfrom' => 'Paluatlde "$1"',
 'youhavenewmessages' => 'Mecui $1 ($2).',
-'newmessageslink' => 'huniitóm',
-'newmessagesdifflink' => 'quiixcui',
 'youhavenewmessagesmulti' => 'Mecui huniitom $1 iti',
 'editsection' => 'ticpatlöx',
 'editold' => 'ticpatlöx',
@@ -283,9 +279,6 @@ Jan pos-coccebj plusöxde 1 jöx 1 characterám jan nepos-coccebj usadas titlen
 'perfcached' => 'Jan data coccebj cache ö necoccebj updatenom. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => "Jan data coccebj cache ö coccebjöx updatenom $1 'de. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Updatenámde jan páhina coccebj disablenöx cmaa. Jan data necanj cmaa.',
-'wrong_wfQuery_params' => 'Parameterám incorrectámde wfQuery()<br />
-Funccion: $1<br />
-Query: $2',
 'viewsource' => 'Cohuatlöx sourcenam',
 'protectedpagetext' => 'Jan páhina coccebj lockom neticpatlöx pos-poop.',
 'viewsourcetext' => 'Mecohuatlöx ö copynom sourcenam zode jan páhina:',
@@ -363,7 +356,7 @@ confirmom account zo coccebj de'me.",
 'loginlanguagelabel' => 'Itom: $1',
 
 # Change password dialog
-'resetpass' => "Account quimx canj'reset",
+'changepassword' => "Reset'quimx canj",
 'resetpass_announce' => "Me caápo code temp e-iitomöx mii. Fini caápo, me reset' hunquimx canj cmaadexepe:",
 'resetpass_header' => "Reset'quimx canj",
 'oldpassword' => 'Janquimx canj:',
@@ -557,21 +550,14 @@ Informacion: (curt) = quiíxde vercion currentua,
 
 # Search results
 'searchresults' => 'Resuluámde yahöx',
-'searchresulttext' => 'Plusöxde informaciónde yahöx {{SITENAME}} iti, jumpöx [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Me yahöx '''[[:$1]]''' iti",
-'searchsubtitleinvalid' => "Me yahöx '''$1''' iti",
 'prevn' => 'jan {{PLURAL:$1|$1}}',
 'nextn' => 'hun {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Cohuatlöx ($1 {{int:pipe-separator}} $2) ($3)',
-'powersearch' => 'Yahöx',
 
 # Preferences page
 'preferences' => 'Quáatlaác',
 'mypreferences' => 'Hequáatlaác',
 'prefs-edits' => 'Ticpatlöx jöxualtec ID-cort:',
-'prefsnologin' => 'Necaápo',
-'prefsnologintext' => 'Zo coccebj Neces [[Special:UserLogin|caápo]] quiixom hequáatlaác.',
-'changepassword' => "Reset'quimx canj",
 'prefs-skin' => 'Zuláugaum',
 'skin-preview' => 'Cuáxiit',
 'datedefault' => 'Diiquáatlaac',
@@ -581,7 +567,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'prefs-watchlist' => 'Listade cáminot',
 'prefs-misc' => 'Jömc',
 'saveprefs' => 'Xuniim',
-'resetprefs' => "Reset'",
 'prefs-editing' => 'Ticpatlöx',
 'rows' => 'Rowám:',
 'columns' => 'Columnám:',
@@ -589,7 +574,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'savedprefs' => 'Hequáatlaác coccebj xuniimöx.',
 'timezonelegend' => 'Zonede xepe',
 'localtime' => 'Xepe locale',
-'timezoneoffset' => "Minus'set¹",
 'servertime' => 'Xepede server',
 'guesstimezone' => "Xuniimyabuatlecaún dai'browser",
 'allowemail' => 'Pos-coccebj e-iitomde diijömde caitóm',
@@ -642,7 +626,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'recentchanges' => 'Camjöx cmaa',
 'recentchanges-summary' => 'Caitom camjöx cmaa quiíx zode Wiki zo jan páhina iti.',
 'recentchanges-feed-description' => 'Caitom camjöx cmaa quiíx zode Wiki zo jan fiiyt iti.',
-'rcnote' => "!-cmaa coccebj {{PLURAL:$1|'''1''' quiixde|'''$1''' hunquiíxde}} {{PLURAL:$2|'''1''' hunzaah|'''$2''' hunixaáp}} zo iti, $3 'de.",
 'rcnotefrom' => "!-cmaa coccebj quiíx zode '''$2''' (plusöxiti '''$1''' visi).",
 'rclistfrom' => "Cohuatlöx hunquiix startom $1 'de",
 'rcshowhideminor' => '$1 editám bajlöxám',
@@ -787,7 +770,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'deadendpages' => 'Páhinám huiquiix',
 'deadendpagestext' => 'Jan páhinám huiquiix linkámde jömdeman páhinám jan wiki iti.',
 'protectedpages' => 'Páhinám protectöx',
-'protectedpagestext' => 'Jan páhinám coccebj protectöxde yacom jöx ticpatlöx',
 'protectedpagesempty' => '0 páhinám currentua coccebj protectöx jan parameterám mii.',
 'listusers' => 'Listade caitóm',
 'newpages' => 'Jan páhinám',
@@ -812,9 +794,6 @@ Informacion: (curt) = quiíxde vercion currentua,
 'allpagesfrom' => 'Xuniim páhinám startomde:',
 'allarticles' => 'Jöxde artículóm',
 'allinnamespace' => 'Jömde páhinám ($1 ipartuatl)',
-'allnotinnamespace' => "Jömde páhinám ($1 ipartuatl 'ne)",
-'allpagesprev' => 'Jan',
-'allpagesnext' => 'Hun',
 'allpagessubmit' => 'Caátemöx',
 'allpagesprefix' => 'Xuniim páhinám jan prefix mii:',
 'allpages-bad-ns' => '{{SITENAME}} necoccebj ipartuatl "$1".',
@@ -878,7 +857,6 @@ iitom e-iitomde diijömde caitóm.',
 'restriction-move' => 'Yacom',
 
 # Undelete
-'undeletereset' => "Reset'",
 'undeletecomment' => 'Commentua:',
 'undelete-search-box' => 'Yahöx páhinám delatám',
 'undelete-search-submit' => 'Yahöx',
@@ -904,11 +882,8 @@ iitom e-iitomde diijömde caitóm.',
 'blockip' => 'Block caitom',
 'ipadressorusername' => 'Addressade IP jöx caitom ID:',
 'ipbreason' => 'Ra:',
-'ipbreasonotherlist' => "Ra pac'de",
 'ipbsubmit' => 'Block jan caitom',
 'ipbother' => "Pac'de xepe:",
-'ipbotheroption' => "pac'de",
-'ipbotherreason' => "Pac'de rae (addicionale):",
 'badipaddress' => 'Addressade IP invalida',
 'ipb-edit-dropdown' => 'Blockde ticpatlöx rá',
 'ipb-unblock-addr' => 'Diiblockom $1',
@@ -937,10 +912,8 @@ iitom e-iitomde diijömde caitóm.',
 # Move page
 'move-page-legend' => 'Yacom páhina',
 'movearticle' => 'Yacom páhina:',
-'movenologin' => 'Necaápo',
 'move-watch' => 'Cáminot jan páhina',
 'movepagebtn' => 'Yacom páhina',
-'movedto' => 'yacomöxde',
 'movetalk' => 'Yacom czaxö páhina yodina ipríi',
 'movereason' => 'Ra:',
 'delete_and_move' => 'Delatom ö yacom',
index a0cff5a..61856d8 100644 (file)
@@ -13,6 +13,9 @@
 
 $fallback = 'fr';
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # User preference toggles
 'tog-underline' => 'Gbënëngö-gbê',
@@ -137,9 +140,7 @@ $messages = array(
 'qbbrowse' => 'Hasa',
 'qbedit' => 'Sepe',
 'qbpageoptions' => 'Lêmbëtï sô',
-'qbpageinfo' => 'Ndongoro',
 'qbmyoptions' => 'Âlêmbëtï tî mbï',
-'qbspecialpages' => 'Âlêmbëtï ndê',
 'faq' => 'Âhûnda',
 'faqpage' => 'Project:Âhûnda',
 
@@ -192,7 +193,7 @@ $messages = array(
 'jumptonavigation' => 'Simba',
 'jumptosearch' => 'Gi',
 
-# 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).
+# 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).
 'aboutsite' => 'Na ndö tî {{SITENAME}}',
 'aboutpage' => 'Project:Na ndö tî...',
 'currentevents' => 'Âsango',
index 48580a5..5066568 100644 (file)
@@ -64,7 +64,7 @@ $messages = array(
 'tog-justify' => 'Līgintė pastraipas palē abi poses',
 'tog-hideminor' => 'Pakavuotė mažus pataisėmus vielībūju taisīmu sārašė',
 'tog-extendwatchlist' => 'Ėšpliestė keravuojamu sāraša, kū ruodītu vėsus tėnkamus pakeitėmus',
-'tog-usenewrc' => 'Pažongē ruodomė vielibė̅jė pakeitėmā (rēk JavaScript)',
+'tog-usenewrc' => 'Grupoutė keitėmus vielībūsiūs pakeitėmūs ė keravuojamu poslapiu sārašė',
 'tog-numberheadings' => 'Autuomatėškā numeroutė skėrsnelios',
 'tog-showtoolbar' => 'Ruodītė redagavėma rakondinė (JavaScript)',
 'tog-editondblclick' => 'Poslapiu redagavėms dvėgobu paspaudėmu (JavaScript)',
@@ -79,7 +79,6 @@ $messages = array(
 'tog-minordefault' => 'Palē nutīliejėma pažīmietė redagavėmus kāp mažus',
 'tog-previewontop' => 'Ruodītė parvaiza vėrš redagavėma lauka',
 'tog-previewonfirst' => 'Ruodītė straipsnė parvėiza pėrmu redagavėmu',
-'tog-nocache' => "Nenauduotė poslapiu kaupėma (''caching'')",
 'tog-enotifwatchlistpages' => 'Siōstė mon gromata, kūmet pakeitams poslapis, katra stebiu',
 'tog-enotifusertalkpages' => 'Siōstė mon gromata, kūmet pakaitams mona nauduotuojė aptarėma poslapis',
 'tog-enotifminoredits' => 'Siōstė mon gromata, kūmet poslapė keitėms īr mažos',
@@ -196,7 +195,6 @@ $messages = array(
 'qbedit' => 'Taisītė',
 'qbpageoptions' => 'Tas poslapis',
 'qbmyoptions' => 'Mona poslapē',
-'qbspecialpages' => 'Specēlė̅jė poslapē',
 'faq' => 'DOK',
 'faqpage' => 'Project:DOK',
 
@@ -313,6 +311,8 @@ $1',
 'toc' => 'Torėnīs',
 'showtoc' => 'ruodītė',
 'hidetoc' => 'kavuotė',
+'collapsible-collapse' => 'Sugōžtė',
+'collapsible-expand' => 'Atsklēstė',
 'thisisdeleted' => 'Veizėtė a atkortė $1?',
 'viewdeleted' => 'Ruodītė $1?',
 'restorelink' => '$1 {{PLURAL:$1|ėštrinta keitėma|ėštrintos keitėmos|ėštrintū keitėmu}}',
@@ -371,9 +371,6 @@ Prašuom aple šėtā paskelbtė [[Special:ListUsers/sysop|adminėstratoriō]],
 'badtitletext' => 'Nuruodīts poslapė pavadėnėms bova neleistėns, toščės a neteisėngā sojongts terpkalbinis a terppruojektėnis pavadėnėms. Anamė gal būtė vėins a daugiau sėmbuoliu, neleistėnū pavadėnėmūs',
 'perfcachedts' => 'Ruodoma ėšsauguota doumenū kopėjė, katra bova atnaujėnta $1. Daugiausē $4 {{PLURAL:$4|rezoltats|rezoltatā|rezoltatu}} īr sauguoma.',
 'querypage-no-updates' => 'Atnaujėnėmā tam poslapiō nūnā ėšjongtė īr. Doumenīs nūnā čė nebus atnaujėntė.',
-'wrong_wfQuery_params' => 'Netaisingė parametrā i funkcėjė wfQuery()<br />
-Funkcėjė: $1<br />
-Ožklausėms: $2',
 'viewsource' => 'Veizėtė kuoda',
 'protectedpagetext' => 'Šėts poslapis īr ožrakints, saugont anū nū redagavėma.',
 'viewsourcetext' => 'Tomsta galėt veizietė ėr kopėjoutė poslapė kuoda:',
@@ -460,7 +457,7 @@ nebus siontamas ni vėinam žemiau ėšvardėntam puoslaugiō.',
 'loginlanguagelabel' => 'Kalba: $1',
 
 # Change password dialog
-'resetpass' => 'Keistė slaptažuodi',
+'changepassword' => 'Pakeistė slaptažuodė',
 'resetpass_header' => 'Keistė paskīruos slaptažuodi',
 'oldpassword' => 'Sens slaptažuodis:',
 'newpassword' => 'Naus slaptažuodis:',
@@ -618,6 +615,7 @@ Tuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
 'moveddeleted-notice' => 'Tas poslapis bova ėštrėnts.
 Ėštrėnta poslapė versėju sārašos īr pateikts paveiziejėmō žemiau.',
 'edit-conflict' => 'Redagavėma kuonflėktos',
+'postedit-confirmation' => 'Tamstas padėrbts pakeitėms ėšsauguots īr.',
 
 # Parser/template warnings
 'post-expand-template-inclusion-warning' => 'Perspiejėms: Šabluonu īterpėma dėdoms īr par dėdelis.
@@ -658,7 +656,7 @@ $3 nuruodīta prīžastis īr ''$2''",
 'history-fieldset-title' => 'Naršītė istuorėjuo',
 'history-show-deleted' => 'Tėktās ėštrintė',
 'histfirst' => 'Seniausė',
-'histlast' => 'VielibÄ\97Ì\85jė',
+'histlast' => 'VielibÄ\97Ì\84jė',
 'historysize' => '($1 {{PLURAL:$1|baits|baitā|baitu}})',
 'historyempty' => '(nieka nier)',
 
@@ -677,8 +675,6 @@ Pamiegīkėt [[Special:Search|ėiškoutė pruojektė]] sosėjosiu naujū poslapi
 Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta torėni ėr galės ana atkortė viel par šėta pate sasaja, nabent īr nostatītė papėlduomė aprėbuojėmā.",
 'revdelete-unsuppress' => 'Šalėntė apribuojėmos atkortuos versėjės',
 'revdel-restore' => 'Keistė veizėmuma',
-'revdel-restore-deleted' => 'Ėštrintas versėjės',
-'revdel-restore-visible' => 'Veizėmas versėjės',
 'revdelete-edit-reasonlist' => 'Keistė trīnėma prīžastis',
 
 # Suppression log
@@ -702,11 +698,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 # Search results
 'searchresults' => 'Paėiškuos rezoltatā',
 'searchresults-title' => 'Paėiškuos rezoltatā "$1"',
-'searchresulttext' => 'Daugiau infuormacėjės aple paėiška pruojektė {{SITENAME}} rasėt [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tamsta ėiškuojot \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|vėsė poslapē katrėi prasėded so "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vėsė poslapē katrėi ruod i "$1"]])',
-'searchsubtitleinvalid' => 'Jėškuom „$1“',
 'titlematches' => 'Straipsniu pavadėnėmu atitėkmenīs',
-'notitlematches' => 'Juokiū pavadinėma atitikmenū',
 'textmatches' => 'Poslapė torėnė atėtikmenīs',
 'notextmatches' => 'Juokiū poslapė teksta atitikmenū',
 'prevn' => 'onkstesnius {{PLURAL:$1|$1}}',
@@ -715,10 +707,8 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'nextn-title' => '{{PLURAL:$1|Kėts $1 rezoltats|Kėto $1 rezoltato|Kėti $1 rezoltatā}}',
 'shown-title' => 'Ruodītė $1 {{PLURAL:$1|rezoltata|rezultato|rezoltatus}} poslapī',
 'viewprevnext' => 'Veizėtė ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Paėiškuos nustatīmā',
 'searchmenu-exists' => "'''Poslapis pavadėnts „[[$1]]“ šėtuo wiki'''",
 'searchmenu-new' => "'''Sokortė poslapi „[[:$1]]“ šėtuo wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ėiškuotė poslapiu so šėtuom prīšdielio]]',
 'searchprofile-articles' => 'Torėnė poslapē',
 'searchprofile-project' => 'Pagelbas ė pruojekta poslapē',
 'searchprofile-images' => 'Daugēlīpės terpės failā',
@@ -739,29 +729,28 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'search-interwiki-default' => '$1 rezoltatā:',
 'search-interwiki-more' => '(daugiau)',
 'search-relatedarticle' => 'Sosėjėn',
-'mwsuggest-disable' => 'Kavuotė AJAX pasiūlīmus',
 'searchrelated' => 'sosėjėn',
 'searchall' => 'vėsė',
 'showingresults' => "Žemiau ruodoma lėgė '''$1''' {{PLURAL:$1|rezoltata|rezoltatu|rezoltatu}} pradedont #'''$2'''.",
 'showingresultsnum' => "Žemiau ruodoma '''$3''' {{PLURAL:$3|rezoltata|rezoltatu|rezoltatu}} pradedant #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezoltats '''$1''' ėš '''$3'''|Rezoltatā '''$1 - $2''' ėš '''$3'''}} vagol paklausėma '''$4'''",
-'nonefound' => "'''Pastebiejėms''': Palē nutīliejėma ėiškuoma tėktās kāp katruosė vardū srėtīsė. Pamiegīkėt prirašītė prėišdieli ''all:'', jēgo nuorėt ėiškiuotė vėsa torėnė (tamė tarpė aptarėma poslapius, šabluonus ė tēp tuoliau), aba nauduokėt nuorėma vardū srėti kāp prėišdieli.",
 'search-nonefound' => 'Nier rezoltatu, katrėi atitėktu ožklausėma.',
-'powersearch' => 'Ėiškuotė',
 'powersearch-legend' => 'Prapliesta paėiška',
 'powersearch-ns' => 'Ėiškoutė vardū srėtīsė:',
 'powersearch-redir' => 'Itrauktė paradresavėmus',
-'powersearch-field' => 'Ėiškoutė',
+'powersearch-togglelabel' => 'Pažīmietė:',
+'powersearch-toggleall' => 'Vėskon',
+'powersearch-togglenone' => 'Nieka',
 'search-external' => 'Ėšuorėnė paėiška',
 
 # Preferences page
 'preferences' => 'Nustatīmā',
 'mypreferences' => 'Mona nustatīmā',
 'prefs-edits' => 'Keitėmu skaitlius:',
-'changepassword' => 'Pakeistė slaptažuodė',
 'prefs-skin' => 'Ėšruoda',
 'skin-preview' => 'Parveiza',
 'datedefault' => 'Juokė pasėrėnkėma',
+'prefs-beta' => 'Beta fonkcėjės',
 'prefs-datetime' => 'Data ė čiesos',
 'prefs-personal' => 'Nauduotuojė pruopilis',
 'prefs-rc' => 'Vielībė̅jė pakeitėmā',
@@ -772,14 +761,13 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'prefs-watchlist-edits-max' => '(dėdliausias skaitlius: 1000)',
 'prefs-misc' => 'Ivairė nustatīmā',
 'prefs-resetpass' => 'Keistė slaptažuodi',
+'prefs-rendering' => 'Ėšruoda',
 'saveprefs' => 'Ėšsauguotė',
-'resetprefs' => 'Atstatītė nostatīmos',
 'restoreprefs' => 'Atstatītė vėsus numatītūsius nustatīmus',
 'prefs-editing' => 'Redagavėms',
 'rows' => 'Eilotės:',
 'columns' => 'Štolpalē:',
 'searchresultshead' => 'Paėiškuos nostatīmā',
-'resultsperpage' => 'Rezoltatu poslapie:',
 'stub-threshold' => 'Minimums <a href="#" class="stub">nabėngta poslapė</a> fuormatavėmō:',
 'recentchangesdays' => 'Ruodomas dėinas vielībūju pakeitėmu sārašė:',
 'recentchangesdays-max' => '(daugiausē $1 {{PLURAL:$1|dėina|dėinū|dėinas}})',
@@ -789,7 +777,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'localtime' => 'Vėitinis čiesos:',
 'timezoneuseserverdefault' => 'Nauduotė palē nutīliejėma ėš serverė',
 'timezoneuseoffset' => 'Kėta (patikslėntė skėrtoma)',
-'timezoneoffset' => 'Skėrtoms¹:',
 'servertime' => 'Serverė čiesos:',
 'guesstimezone' => 'Paimtė ėš naršīklės',
 'timezoneregion-africa' => 'Afrėka',
@@ -811,6 +798,7 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
 'username' => 'Nauduotuojė vards:',
 'uid' => 'Nauduotuojė ID:',
 'prefs-memberingroups' => '{{PLURAL:$1|Gropės|Gropiu}} narīs:',
+'prefs-registration' => 'Ožsėregėstravėma čiesos:',
 'yourrealname' => 'Tėkros vards:',
 'yourlanguage' => 'Aplėnkuos kalba:',
 'yourvariant' => 'Variants',
@@ -825,6 +813,12 @@ Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuol
 'email' => 'El. pašts',
 'prefs-help-realname' => 'Tėkrs vards nier privaluoms, vuo jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmō.',
 'prefs-help-email' => 'El. pašta adresos nier privaloms, ale uns leid Tamstā gautė nauja slaptažuodi, jēgo pamėršuot kuoks uns bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė a nauduotuojė aptarėma poslapi neatsklėidont Tamstas tapatoma.',
+'prefs-info' => 'Glavnuojė infuormacėjė',
+'prefs-i18n' => 'Kalbuos nustatīmā',
+'prefs-dateformat' => 'Datuos skvarma',
+'prefs-timeoffset' => 'Čiesa skėrtoms',
+'prefs-advancedrc' => 'Papėlduomė nustatīmā',
+'prefs-diffs' => 'Skėrtomā',
 
 # User rights
 'userrights' => 'Nauduotuoju teisiu valdīms',
@@ -878,13 +872,13 @@ Ana gal sodarītė ne daugiau kāp $1 {{PLURAL:$1|sėmbuolis|sėmbuolē|sėmbuol
 'nchanges' => '$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}',
 'recentchanges' => 'Vielībė̅jė pakeitėmā',
 'recentchanges-legend' => 'Vielībuju pakeitėmu pasėrinkėmā',
-'recentchanges-summary' => 'Tamė poslapī īr patīs vielībė̅ jė paketėmā tom pruojėktė.',
+'recentchanges-summary' => 'Keravuokėt patius vielībiausius wiki pakeitėmus tamė poslapī.',
 'recentchanges-feed-description' => 'Keravuokėt patius vielībiausius pakeitėmus pruojektō tamė šaltėnī.',
 'recentchanges-label-newpage' => 'Šėto keitėmo sukurts naus poslapis',
 'recentchanges-label-minor' => 'Tas īr mažos pataisīms',
 'recentchanges-label-bot' => 'Šėta keitėma padėrba autuomatėnė pruograma',
 'recentchanges-label-unpatrolled' => 'Tas keitėms da nebova patikrints',
-'rcnote' => "Žemiau īr '''$1''' {{PLURAL:$1|paskotinis pakeitims|paskotinē pakeitimā|paskotiniu pakeitimu}} par $2 {{PLURAL:$2|paskotinė̅jė dėina|paskotėniasės '''$2''' dėinas|paskotėniuju '''$2''' dėinū}} skaitlioujant nū $4, $5.",
+'recentchanges-label-plusminus' => 'Ton baitu skaitliom pakeists straipsnė apmiers',
 'rcnotefrom' => 'Žemiau īr pakeitėma pradedant nū <b>$2</b> (ruodom lėgė <b>$1</b> pakeitėmu).',
 'rclistfrom' => 'Ruodītė naujus pakeitėmus pradedant nū $1',
 'rcshowhideminor' => '$1 mažus pakeitėmus',
@@ -963,9 +957,11 @@ Prašuom ėšsėrėnktė kėta varda.',
 'uploaddisabledtext' => 'Failu ikielėmā oždraustė īr.',
 'uploadscripted' => 'Šėts failos tor HTML a programėni kuoda, katros gal būtė klaidėngā soprasts interneta naršīklės.',
 'uploadvirus' => 'Šėtom faile īr virosas! Ėšsamiau: $1',
+'upload-source' => 'Faila šaltėnis',
 'sourcefilename' => 'Ikeliams fails',
 'destfilename' => 'Nuorims faila pavadinims',
 'upload-maxfilesize' => 'Dėdliausias faila dėdoms: $1',
+'upload-options' => 'Nostatīmā īkelėmō',
 'watchthisupload' => 'Keravuotė šėta poslapė',
 'upload-success-subj' => 'Ikelt siekmėngā',
 
@@ -1077,13 +1073,16 @@ Infuormacėjė ėš [$2 faila aprašīma poslapė] īr pateikta žemiau.',
 'statistics-header-edits' => 'Redagavėmu statėstėka',
 'statistics-header-views' => 'Parveizu statistėka',
 'statistics-header-users' => 'Nauduotuoju statėstėka',
+'statistics-header-hooks' => 'Kėta statėstėka',
 'statistics-articles' => 'Torėnė poslapē',
 'statistics-pages' => 'Poslapē',
+'statistics-pages-desc' => 'Vėsė poslapē, terp anū: aptarėma, nukrėipėmu ė kėtė.',
 'statistics-files' => 'Ikeltė failā',
 'statistics-edits' => 'Poslapiu redagavėmu skaitlius nū {{SITENAME}} sokūrėma',
 'statistics-edits-average' => 'Vėdotėnis keitėmu skaitlius poslapiō',
 'statistics-users' => 'Ožsėregėstravosiu [[Special:ListUsers|nauduotuoju]]',
 'statistics-users-active' => 'Aktīviu nauduotuoju',
+'statistics-users-active-desc' => 'Nauduotuojē, katrėi par {{PLURAL:$1|paskiausė dėina|paskiausė 2 dėinė|paskiausės $1 dėinas|paskiausiu $1 dėinū}} padėrba keitėmu',
 'statistics-mostpopular' => 'Daugiausē ruodītė poslapē',
 
 'doubleredirects' => 'Dvėgobė paradresavėmā',
@@ -1133,7 +1132,6 @@ Infuormacėjė ėš [$2 faila aprašīma poslapė] īr pateikta žemiau.',
 'deadendpages' => 'Straipsnē-aklavėitės',
 'deadendpagestext' => 'Tė poslapē netor nūruodu i kėtus poslapius šėtom pruojektė.',
 'protectedpages' => 'Apsauguotė poslapē',
-'protectedpagestext' => 'Šėtē poslapē īr apsauguotė nū parkielėma a redagavėma',
 'protectedpagesempty' => 'Šėtu čiesu nier apsauguots anėjuoks fails so šėtās parametrās.',
 'protectedtitles' => 'Apsauguotė pavadinėmā',
 'protectedtitlesempty' => 'Šėtou čieso nier anėjuokė pavadinėma, katros apsauguots tās parametrās.',
@@ -1167,6 +1165,7 @@ katram ivīkdītė šėta funkcėjė.',
 Īr galėmībė somažintė rezoltatu skaitliu patėkslėnont vēksma tėpa, nauduotuojė a sosėjosė poslapė.',
 'logempty' => 'Istuorėjuo nier anėjuokiū atitinkontiu atsėtėkimu.',
 'log-title-wildcard' => 'Ėiškuotė pavadinėmu, katrė prasėded šėtuo teksto',
+'showhideselectedlogentries' => 'Ruodītė/kavuotė sāraša ponktus, katrūs pasėrėnkot',
 
 # Special:AllPages
 'allpages' => 'Vėsė straipsnē',
@@ -1177,13 +1176,11 @@ katram ivīkdītė šėta funkcėjė.',
 'allpagesto' => 'Ruodītė poslapius, basėbengėnčios so:',
 'allarticles' => 'Vėsė straipsnē',
 'allinnamespace' => 'Vėsė poslapē (srėtis - $1)',
-'allnotinnamespace' => 'Vėsė poslapē (nesontīs šiuo srėtie - $1)',
-'allpagesprev' => 'Onkstesnis',
-'allpagesnext' => 'Sekontis',
 'allpagessubmit' => 'Tink',
 'allpagesprefix' => 'Ruodītė poslapios so prīdelēs:',
 'allpagesbadtitle' => 'Douts poslapė pavadėnėms īr neteisings a tor terpkalbėnė a terppruojektėnė prīdielė. Anamė īr vėns a kelė žėnklā, katrū negal nauduotė pavadėnėmūs.',
 'allpages-bad-ns' => '{{SITENAME}} netor „$1“ vardū srėtėis.',
+'allpages-hide-redirects' => 'Kavuotė nukrėipėmus',
 
 # Special:Categories
 'categories' => 'Kateguorėjės',
@@ -1210,7 +1207,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:ListGroupRights
 'listgrouprights' => 'Nauduotuoju gropiu teisės',
 'listgrouprights-group' => 'Gropė',
-'listgrouprights-members' => '(nariū sārošos)',
+'listgrouprights-members' => '(nariū sārašos)',
 
 # Email user
 'mailnologin' => 'Nier adresa',
@@ -1301,6 +1298,7 @@ Paskotiniu pašalinėmu istuorėjė - $2.',
 'rollback' => 'Atmestė pakeitėmos',
 'rollback_short' => 'Atmestė',
 'rollbacklink' => 'atmestė',
+'rollbacklinkcount' => 'atmestė $1 {{PLURAL:$1|keitėms|keitėmo|keitėmus|keitėmu}}',
 'rollbackfailed' => 'Atmetims napavīka',
 'cantrollback' => 'Negalėma atmestė redagavėma; paskotinis keitės nauduotuos īr tuo poslapė autorius.',
 'alreadyrolled' => 'Nepavīka atmestė paskotėnė [[User:$2|$2]] ([[User talk:$2|Aptarėms]]) darīta straipsnė [[$1]] keitėma;
@@ -1395,7 +1393,6 @@ lėgė trīnima. Ėštrintū poslapiu tekstos īr galėmas tėk admėnėstratuor
 'undeletebtn' => 'Atkortė',
 'undeletelink' => 'veizietė/atstatītė',
 'undeleteviewlink' => 'veizietė',
-'undeletereset' => 'Ėš naujė',
 'undeleteinvert' => 'Žīmietė prīšėngā',
 'undeletecomment' => 'Kuomentars:',
 'undeletedrevisions' => 'atkorta $1 {{PLURAL:$1|versėjė|versėjės|versėju}}',
@@ -1414,6 +1411,7 @@ Parveizėkiet [[Special:Log/delete|trīnimu sāraša]], nuoriedamė rastė pasko
 # Namespace form on various pages
 'namespace' => 'Vardū srėtis:',
 'invert' => 'Žīmietė prīšėngā',
+'namespace_association' => 'Sosėrėšos vardū srėtės',
 'blanknamespace' => '(Pagrėndinė)',
 
 # Contributions
@@ -1466,7 +1464,6 @@ Parveizėkiet [[Special:Log/delete|trīnimu sāraša]], nuoriedamė rastė pasko
 'ipadressorusername' => 'IP adresos a nauduotuojė vards',
 'ipbexpiry' => 'Galiuojėma čiesos',
 'ipbreason' => 'Prīžastis:',
-'ipbreasonotherlist' => 'Kėta prīžastis',
 'ipbreason-dropdown' => '*Dažniausės bluokavėma prižastīs
 ** Melagėngas infuormacėjės rašīms
 ** Torėnė trīnims ėš poslapiu
@@ -1481,8 +1478,6 @@ Parveizėkiet [[Special:Log/delete|trīnimu sāraša]], nuoriedamė rastė pasko
 'ipbsubmit' => 'Blokoutė šėta nauduotuoja',
 'ipbother' => 'Kėtuoks čiesos',
 'ipboptions' => '2 adīnas:2 hours,1 dėina:1 day,3 dėinas:3 days,1 nedielė:1 week,2 nedielės:2 weeks,1 mienou:1 month,3 mienesē:3 months,6 mienesē:6 months,1 metā:1 year,omžėms:infinite',
-'ipbotheroption' => 'kėta',
-'ipbotherreason' => 'Kėta/papėlduoma prižastis',
 'ipbwatchuser' => 'Keravuotė tuo nauduotuojė poslapi ėr anuo aptarėma poslapi',
 'ipb-change-block' => 'Parblokoutė ta nauduotuoja so šėtās nustatīmās',
 'badipaddress' => 'Nelaistėns IP adresos',
@@ -1555,7 +1550,6 @@ kū soprantat vėsas pasiekmes.",
 *Paliksėt žemiau asontė varnale nepažīmieta.
 Šėtās atviejās Tamsta sava nužiūra torėt parkeltė a apjongtė aptarėma poslapi.",
 'movearticle' => 'Parvadintė poslapi:',
-'movenologin' => 'Neprisėjongės',
 'movenologintext' => 'Nuoriedamė parvadintė poslapi, torėt būtė ožsėregėstravės nauduotuos ė tēpuogi būtė [[Special:UserLogin|prisėjongės]].',
 'newtitle' => 'Naus pavadėnėms:',
 'move-watch' => 'Keravuotė šėta poslapi',
@@ -1566,10 +1560,6 @@ kū soprantat vėsas pasiekmes.",
 'articleexists' => 'Straipsnis so tuokiu vardo jau īr
 a parinktāsis vards īr bluogs.
 Parinkat kėta varda.',
-'talkexists' => "'''Patsā poslapis bova siekmėngā parvadints, no aptarėmu poslapis nabova parkelts, kadongi nauja
-pavadėnėma straipsnis jau tor aptarėmu poslapi.
-Prašuom sojongtė šėtuos poslapios.'''",
-'movedto' => 'parvadints i',
 'movetalk' => 'Parkeltė sosėta aptarėma poslapi.',
 'movelogpage' => 'Parvardinėmu istuorėjė',
 'movelogpagetext' => 'Sārašos parvadintu poslapiu.',
@@ -1688,6 +1678,9 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
 'spam_reverting' => 'Atkoriama i onkstesne versėje, katra nator nūruodu i $1',
 'spam_blanking' => 'Vėsos versėjės toriejė nūruodu i $1. Ėšvaluoma',
 
+# Info page
+'pageinfo-toolboxlink' => 'Poslapė infuormacėjė',
+
 # Patrolling
 'markaspatrolleddiff' => 'Žīmietė, kū patikrėnta',
 'markaspatrolledtext' => 'Pažīmietė, ka poslapis patėkrėnts īr',
@@ -1786,10 +1779,6 @@ Vėsas kėtas nūoruodas tuo patiuo eilotie īr laikomas ėšėmtim, tas rēšk
 'exif-contrast-1' => 'Mažos',
 'exif-contrast-2' => 'Dėdlis',
 
-# External editor support
-'edit-externally' => 'Atdarītė ėšuoriniam redaktuorio',
-'edit-externally-help' => 'Nuoriedamė gautė daugiau infuormacėjės, veiziekėt [https://www.mediawiki.org/wiki/Manual:External_editors kruovėma instrokcėjės].',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'vėsos',
 'namespacesall' => 'vėsas',
@@ -1938,6 +1927,9 @@ Tamsta tēpuogi galėt [[Special:EditWatchlist/raw|redagoutė grīnaji keravuoja
 'logentry-newusers-autocreate' => 'Paskīra $1 bova padėrbta autuomatėškā',
 'rightsnone' => '(juokiū)',
 
+# Search suggestions
+'searchsuggest-containing' => 'katrėi tor...',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'Ėšskeistė šabluonus',
 
index cdd8fd7..035f28f 100644 (file)
@@ -36,7 +36,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'Sve_stranice' ),
        'Ancientpages'              => array( 'Najstarije_stranice' ),
        'Blankpage'                 => array( 'Prazna_stranica' ),
-       'Blockme'                   => array( 'Blokiraj_me' ),
        'Booksources'               => array( 'Traži_ISBN' ),
        'BrokenRedirects'           => array( 'Kriva_preusmjerenja' ),
        'Categories'                => array( 'Kategorije' ),
@@ -45,7 +44,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Stvori_račun' ),
        'Deadendpages'              => array( 'Mrtve_stranice' ),
        'DeletedContributions'      => array( 'Obrisani_doprinosi' ),
-       'Disambiguations'           => array( 'Razvrstavanja' ),
        'DoubleRedirects'           => array( 'Dvostruka_preusmjerenja' ),
        'Emailuser'                 => array( 'E-mail', 'Elektronska_pošta' ),
        'Export'                    => array( 'Izvezi' ),
@@ -230,7 +228,6 @@ $messages = array(
 'tog-minordefault' => 'Označi da su sve izmjene u pravilu manje',
 'tog-previewontop' => 'Prikaži pretpregled prije kutije za uređivanje',
 'tog-previewonfirst' => 'Prikaži pretpregled na prvoj izmjeni',
-'tog-nocache' => 'Onemogući keš (cache) stranica u pregledniku',
 'tog-enotifwatchlistpages' => 'Pošalji mi e-mail kada se promijeni stranica ili datoteka na mom spisku praćenja',
 'tog-enotifusertalkpages' => 'Pošalji mi e-poštu kad se promijeni moja korisnička stranica za razgovor',
 'tog-enotifminoredits' => 'Pošalji mi e-mail i kod manjih izmjena stranica i datoteka',
@@ -364,7 +361,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Opcije stranice',
 'qbmyoptions' => 'Moje opcije',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'ČPP',
 'faqpage' => 'Project:ČPP',
 
@@ -575,9 +571,6 @@ Može sadržavati jedno ili više slova koja se ne mogu koristiti u naslovima.',
 'perfcachedts' => 'Sledeći podaci su keširani, a poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata|$4 rezultata}}.',
 'querypage-no-updates' => 'Ažuriranje ove stranice je isključeno.
 Podaci koji se ovdje nalaze neće biti biti ažurirani.',
-'wrong_wfQuery_params' => 'Netačni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Pretraga: $2',
 'viewsource' => 'Pogledaj kod',
 'viewsource-title' => 'Prikaz izvora stranice $1',
 'actionthrottled' => 'Akcija je usporena',
@@ -756,7 +749,7 @@ Molimo Vas da sačekate prije nego što pokušate ponovo.',
 'user-mail-no-body' => 'Pokušano slanje e-maila s praznim ili nerazumno kratkim sadržajem.',
 
 # Change password dialog
-'resetpass' => 'Promijeni korisničku šifru',
+'changepassword' => 'Promijeni lozinku',
 'resetpass_announce' => 'Prijavili ste se sa privremenim kodom koji ste dobili na e-mail.
 Da biste završili prijavu, morate unijeti novu šifru ovdje:',
 'resetpass_header' => 'Obnovi lozinku za račun',
@@ -1147,10 +1140,6 @@ Možete je pogledati; više detalja možete naći u [{{fullurl:{{#Special:Log}}/
 'revdelete-nooldid-title' => 'Nije unesena tačna revizija',
 'revdelete-nooldid-text' => 'Niste precizno odredili odredišnu reviziju/revizije da se izvrši ova funkcija,
 ili ta revizija ne postoji, ili pokušavate sakriti trenutnu reviziju.',
-'revdelete-nologtype-title' => 'Nije naveden tip registra',
-'revdelete-nologtype-text' => 'Niste odredili tip registra za izvršavanje ove akcije na njemu.',
-'revdelete-nologid-title' => 'Nevaljana stavka registra',
-'revdelete-nologid-text' => 'Niste odredili ciljnu stavku registra za izvršavanje ove funkcije ili navedena stavka ne postoji.',
 'revdelete-no-file' => 'Navedena datoteka ne postoji.',
 'revdelete-show-file-confirm' => 'Da li ste sigurni da želite pogledati obrisanu reviziju datoteke "<nowiki>$1</nowiki>" od $2 u $3?',
 'revdelete-show-file-submit' => 'Da',
@@ -1183,8 +1172,6 @@ $1",
 'logdelete-failure' => "'''Registar vidljivosti nije mogao biti postavljen:'''
 $1",
 'revdel-restore' => 'promijeni dostupnost',
-'revdel-restore-deleted' => 'izbrisane izmjene',
-'revdel-restore-visible' => 'vidljive izmjene',
 'pagehist' => 'Historija stranice',
 'deletedhist' => 'Izbrisana historija',
 'revdelete-hide-current' => 'Greška pri sakrivanju stavke od $2, $1: ovo je trenutna revizija.
@@ -1263,12 +1250,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati pretrage za "$1"',
-'searchresulttext' => 'Za više informacija o pretraživanju {{SITENAME}}, v. [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Tražili ste \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sve stranice koje počinju sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do "$1"]])',
-'searchsubtitleinvalid' => "Tražili ste '''$1'''",
 'toomanymatches' => 'Pronađeno je previše rezultata, molimo pokušajte unijeti konkretniji izraz',
 'titlematches' => 'Naslov članka odgovara',
-'notitlematches' => 'Nijedan naslov stranice ne odgovara',
 'textmatches' => 'Tekst stranice odgovara',
 'notextmatches' => 'Tekst stranice ne odgovara',
 'prevn' => 'prethodna {{PLURAL:$1|$1}}',
@@ -1277,10 +1260,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '{{PLURAL:$1|Slijedeći $1 rezultat|Slijedeća $1 rezultata|Slijedećih $1 rezultata}}',
 'shown-title' => 'Pokaži $1 {{PLURAL:$1|rezultat|rezultata}} po stranici',
 'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Opcije pretrage',
 'searchmenu-exists' => "'''Postoji stranica pod nazivom \"[[:\$1]]\" na ovoj wiki'''",
 'searchmenu-new' => "'''Napravi stranicu \"[[:\$1|\$1]]\" na ovoj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice sa ovim prefiksom]]',
 'searchprofile-articles' => 'Stranice sadržaja',
 'searchprofile-project' => 'Stranice pomoći i projekta',
 'searchprofile-images' => 'Multimedija',
@@ -1301,21 +1282,16 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
 'search-relatedarticle' => 'Povezano',
-'mwsuggest-disable' => 'Onemogući prijedloge pretrage',
 'searcheverything-enable' => 'Pretraga u svim imenskim prostorima',
 'searchrelated' => 'povezano',
 'searchall' => 'sve',
 'showingresults' => "Dole {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od '''$2'''.",
 'showingresultsnum' => "Dolje {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultati '''$1 - $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Napomene''': Samo neki imenski prostori se pretražuju po početnim postavkama.
-Pokušajte u svoju pretragu staviti ''all:'' da se pretražuje cjelokupan sadržaj (uključujući stranice za razgovor, šablone/predloške itd.), ili koristite imenski prostor kao prefiks.",
 'search-nonefound' => 'Nisu pronađeni rezultati koji odgovaraju upitu.',
-'powersearch' => 'Napredna pretraga',
 'powersearch-legend' => 'Napredna pretraga',
 'powersearch-ns' => 'Pretraga u imenskim prostorima:',
 'powersearch-redir' => 'Pokaži spisak preusmjerenja',
-'powersearch-field' => 'Traži',
 'powersearch-togglelabel' => 'Označi:',
 'powersearch-toggleall' => 'Sve',
 'powersearch-togglenone' => 'Ništa',
@@ -1329,7 +1305,6 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'preferences' => 'Postavke',
 'mypreferences' => 'Postavke',
 'prefs-edits' => 'Broj izmjena:',
-'changepassword' => 'Promijeni lozinku',
 'prefs-skin' => 'Izgled (skin)',
 'skin-preview' => 'Pretpregled',
 'datedefault' => 'Bez preferenci',
@@ -1352,13 +1327,11 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'prefs-email' => 'E-mail opcije',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Snimi postavke',
-'resetprefs' => 'Poništi nesnimljene promjene postavki',
 'restoreprefs' => 'Vrati sve pretpostavljene postavke',
 'prefs-editing' => 'Uređivanje',
 'rows' => 'Redova:',
 'columns' => 'Kolona:',
 'searchresultshead' => 'Postavke rezultata pretrage',
-'resultsperpage' => 'Pogodaka po stranici:',
 'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u začetku</a> (bajtova):',
 'stub-threshold-disabled' => 'Isključen/a',
 'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
@@ -1370,7 +1343,6 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
 'localtime' => 'Lokalno vrijeme:',
 'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
 'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
 'servertime' => 'Vrijeme na serveru:',
 'guesstimezone' => 'Popuni iz preglednika',
 'timezoneregion-africa' => 'Afrika',
@@ -1622,7 +1594,6 @@ Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
 'recentchanges-label-bot' => 'Ovu je izmjenu učinio bot',
 'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
 'recentchanges-legend-newpage' => '$1 - nova stranica',
-'rcnote' => "Ispod {{PLURAL:$1|je '''$1''' promjena|su '''$1''' zadnje promjene|su '''$1''' zadnjih promjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
 'rcnotefrom' => "Ispod {{PLURAL:$1|je '''$1''' izmjena|su '''$1''' zadnje izmjene|su '''$1''' zadnjih izmjena}} u {{PLURAL:$2|posljednjem '''$2''' danu|posljednja '''$2''' dana|posljednjih '''$2''' dana}}, od $4, $5.",
 'rclistfrom' => 'Prikaži nove izmjene počevši od $1',
 'rcshowhideminor' => '$1 male izmjene',
@@ -2105,10 +2076,8 @@ Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju tekst
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'Samo neograničena zaštićenja',
 'protectedpages-cascade' => 'Samo prenosive zaštite',
-'protectedpagestext' => 'Slijedeće stranice su zaštićene od izmjena i premještanja',
 'protectedpagesempty' => 'Trenutno nijedna stranica nije zaštićena s ovim parametrima.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Članci sa slijedećim naslovima su zaštićeni od kreiranja.',
 'protectedtitlesempty' => 'Nema naslova zaštićenih članaka sa ovim parametrima.',
 'listusers' => 'Spisak korisnika',
 'listusers-editsonly' => 'Pokaži samo korisnike koji su uređivali',
@@ -2160,9 +2129,6 @@ Možete specificirati prikaz izabiranjem specifičnog spiska, korisničkog imena
 'allpagesto' => 'Pokaži stranice koje završavaju na:',
 'allarticles' => 'Sve stranice',
 'allinnamespace' => 'Sve stranice (imenski prostor $1)',
-'allnotinnamespace' => 'Sve stranice (van imenskog prostora $1)',
-'allpagesprev' => 'Prethodna',
-'allpagesnext' => 'Slijedeće',
 'allpagessubmit' => 'Idi',
 'allpagesprefix' => 'Prikaži stranice sa prefiksom:',
 'allpagesbadtitle' => 'Dati naziv stranice je nepravilan ili ima međujezički ili interwiki prefiks.
@@ -2502,7 +2468,6 @@ Možda ste unijeli pogrešan link, ili je revizija vraćena ili uklonjena iz arh
 'undeletebtn' => 'Vrati',
 'undeletelink' => 'pogledaj/vrati',
 'undeleteviewlink' => 'pogledaj',
-'undeletereset' => 'Očisti',
 'undeleteinvert' => 'Sve osim odabranog',
 'undeletecomment' => 'Razlog:',
 'undeletedrevisions' => '{{PLURAL:$1|$1 revizija vraćena|$1 revizije vraćene|$1 revizija vraćeno}}',
@@ -2592,7 +2557,6 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
 'block' => 'Blokiraj korisnika',
 'unblock' => 'Odblokiraj korisnika',
 'blockip' => 'Blokiraj korisnika',
-'blockip-title' => 'Blokiraj korisnika',
 'blockip-legend' => 'Blokiranje korisnika',
 'blockiptext' => 'Upotrebite donji upitnik da biste uklonili prava pisanja sa određene IP adrese ili korisničkog imena.  
 Ovo bi trebalo da bude urađeno samo da bi se spriječio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]]. 
@@ -2600,7 +2564,6 @@ Unesite konkretan razlog ispod (na primjer, navodeći koje konkretne stranice su
 'ipadressorusername' => 'IP adresa ili korisničko ime:',
 'ipbexpiry' => 'Ističe:',
 'ipbreason' => 'Razlog:',
-'ipbreasonotherlist' => 'Ostali razlog/zi',
 'ipbreason-dropdown' => '*Najčešći razlozi blokiranja
 **Unošenje netačnih informacija
 **Uklanjanje sadržaja stranica
@@ -2616,8 +2579,6 @@ Unesite konkretan razlog ispod (na primjer, navodeći koje konkretne stranice su
 'ipbsubmit' => 'Blokirajte ovog korisnika',
 'ipbother' => 'Ostali period:',
 'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 sedmica:1 week,2 sedmice:2 weeks,1 mjesec:1 month,3 mjeseca:3 months,6 mjeseci:6 months,1 godine:1 year,zauvijek:infinite',
-'ipbotheroption' => 'ostalo',
-'ipbotherreason' => 'Ostali/dodatni razlog/zi:',
 'ipbhidename' => 'Sakrij korisničko ime iz uređivanja i spiskova',
 'ipbwatchuser' => 'Prati korisničku stranicu i stranicu za razgovor ovog korisnika',
 'ipb-disableusertalk' => 'Onemogući ovog korisnika da uređuje svoju vlastitu stranicu za razgovor dok je blokiran',
@@ -2712,7 +2673,6 @@ Molimo vas da kontaktirate vašeg davatelja internetskih usluga (Internet Servic
 'sorbs_create_account_reason' => 'Vaša IP adresa je prikazana kao otvoreni proxy u DNSBL korišten od {{SITENAME}}.
 Ne možete napraviti račun',
 'xffblockreason' => 'IP adresa koja postoji u zagljavlju X-Forwarded-For, ili Vaša ili od proxy servera koji koristite, je blokirana. Originalni razlog za blokiranje je bio: $1',
-'cant-block-while-blocked' => 'Ne možete blokirati druge korisnike dok ste blokirani.',
 'cant-see-hidden-user' => 'Korisnik kojeg pokušavate blokirati je već blokiran i sakriven. 
 Pošto nemate prava hideuser (sakrivanje korisnika), ne možete vidjeti ni urediti korisnikovu blokadu.',
 'ipbblocked' => 'Ne možete blokirati ili deblokirati druge korisnike, jer ste i sami blokirani',
@@ -2773,7 +2733,6 @@ drastična i neočekivana promjena za korisnike; molimo budite sigurni da ste sh
 U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.",
 'movearticle' => 'Premjestite stranicu:',
 'moveuserpage-warning' => "'''Upozorenje:''' Premještate korisničku stranicu. Molimo da zapamtite da će se samo stranica premjestiti a korisnik se ''neće'' preimenovati.",
-'movenologin' => 'Niste prijavljeni',
 'movenologintext' => 'Morate biti registrovani korisnik i [[Special:UserLogin|prijavljeni]] da biste premjestili stranicu.',
 'movenotallowed' => 'Nemate dopuštenje za premještanje stranica.',
 'movenotallowedfile' => 'Nemate dopuštenja da premještate datoteke.',
@@ -2789,8 +2748,6 @@ U tim slučajevima, moraćete ručno da premjestite stranicu ukoliko to želite.
 'articleexists' => 'Stranica pod tim imenom već postoji, ili je ime koje ste izabrali neispravno.
 Molimo Vas da izaberete drugo ime.',
 'cantmove-titleprotected' => 'Ne možete premjestiti stranicu na ovu lokaciju, jer je novi naslov zaštićen od pravljenja',
-'talkexists' => "'''Sama stranica je uspješno premještena, ali stranica za razgovor nije mogla biti premještena jer takva već postoji na novom naslovu.  Molimo Vas da ih spojite ručno.'''",
-'movedto' => 'premještena na',
 'movetalk' => 'Premjestite pridruženu stranicu za razgovor',
 'move-subpages' => 'Premjesti sve podstranice (do $1)',
 'move-talk-subpages' => 'Premjesti podstranice stranica za razgovor (do $1)',
@@ -3619,15 +3576,10 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Priorite definiran od korisnika ($1)',
 
-# External editor support
-'edit-externally' => 'Izmijeni ovu datoteku/fajl koristeći eksternu aplikaciju',
-'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
 'namespacesall' => 'sve',
 'monthsall' => 'sve',
-'limitall' => 'sve',
 
 # Email address confirmation
 'confirmemail' => 'Potvrdite adresu e-pošte',
@@ -3652,7 +3604,6 @@ Moguće je da je kod istekao.',
 'confirmemail_success' => 'Adresa vaše e-pošte je potvrđena.
 Možete sad da se [[Special:UserLogin|prijavite]] i uživate u viki.',
 'confirmemail_loggedin' => 'Adresa Vaše e-pošte je potvrđena.',
-'confirmemail_error' => 'Nešto je pošlo krivo prilikom snimanja vaše potvrde.',
 'confirmemail_subject' => '{{SITENAME}} adresa e-pošte za potvrdu',
 'confirmemail_body' => 'Neko, vjerovatno Vi, je sa IP adrese $1 registrovao nalog "$2" sa ovom adresom e-pošte na {{SITENAME}}.
 
@@ -3890,7 +3841,6 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
 
 # Special:ComparePages
 'comparepages' => 'Usporedi stranice',
-'compare-selector' => 'Usporedi revizije stranica',
 'compare-page1' => 'Stranica 1',
 'compare-page2' => 'Stranica 2',
 'compare-rev1' => 'Ispravljanje 1',
index 2e97f04..c916647 100644 (file)
@@ -35,7 +35,6 @@ $messages = array(
 'tog-minordefault' => 'Rcm kullu iẓṛign li fssusni sɣiklli gan.',
 'tog-previewontop' => 'Mel iẓri amzwaru ɣ uflla ɣ taɣzut n imbddln',
 'tog-previewonfirst' => 'Ml imzray n imbdln imzwura',
-'tog-nocache' => 'ador itsjjal lmtasaffih tawriqt ad',
 'tog-enotifwatchlistpages' => 'sifd yi tabrat  igh ibdl kra yat twriqt ghomdfor inu',
 'tog-enotifusertalkpages' => 'sifd yi tabrat  igh tbdl tawriqt ohokko-no',
 'tog-enotifminoredits' => 'sifd yi tabrat  i ibdln mziynin',
@@ -155,7 +154,6 @@ $messages = array(
 'qbedit' => 'Sbadl',
 'qbpageoptions' => 'Tasnat ad',
 'qbmyoptions' => 'Tisnatin inu',
-'qbspecialpages' => 'Tisnatin timzlay',
 'faq' => 'Isqsitn li bdda tsutulnin',
 'faqpage' => 'Project: Isqqsit li bdda',
 
@@ -396,7 +394,7 @@ Ussaɣ n isqdacn ḥiln hlli.
 'php-mail-error-unknown' => 'Kra ur igadda tasɣnt btbratin() n PHP.',
 
 # Change password dialog
-'resetpass' => 'bddl taguri n uzray',
+'changepassword' => 'bdl awal ihdan',
 'resetpass_announce' => 'Tkcmt {{GENDER:||e|(e)}} s yat tangalt lli kin ilkmt s tbrat emeil . tangaltad ur tgi abla tin yat twalt. Bac ad tkmlt tqqiyyidank kcm tangalt tamaynut nk ɣid:',
 'resetpass_header' => 'Sbadl taguri n tangalt n umiḍal (compte)',
 'oldpassword' => 'Awal iḥḍan aqbur',
@@ -538,8 +536,6 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 'revdelete-unsuppress' => 'Kkiss iqqntn i imcggrn llid n surri.',
 'revdelete-log' => 'Maɣ..acku:',
 'revdel-restore' => 'sbadl tannayt',
-'revdel-restore-deleted' => 'Imsurritn lli ttuykkasnin',
-'revdel-restore-visible' => 'Imsurritn lli baynnin',
 'pagehist' => 'Amzruy n tasna',
 'deletedhist' => 'Amzruy lli ittuykkasn',
 
@@ -584,12 +580,8 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 # Search results
 'searchresults' => 'Mad akkan icnubcn',
 'searchresults-title' => 'Mad akkan icnubcn f "$1"',
-'searchresulttext' => 'Inɣmisn yaḍnin f {{SITENAME}},  ẓr  [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ar tsiggilt f \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tisniwin li kullu ttiswirnin s "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tisniwin li kullu ttiswirnin s "$1"]])',
-'searchsubtitleinvalid' => "Tsiggelt  '''$1'''",
 'toomanymatches' => 'Illa bzzaf maygan zund maya. sbadl taguri yad skra yaḍn',
 'titlematches' => 'Assaɣ n tasna iga zund',
-'notitlematches' => 'Ur ityuffa kra ntansa zund ɣwad',
 'textmatches' => 'Aṭṛiṣ n tasna iga zund',
 'notextmatches' => 'Ur ittyufa kra nu uṭṛiṣ igan zund ɣwad',
 'prevn' => 'Tamzwarut {{PLURAL:$1|$1}}',
@@ -598,7 +590,6 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 'nextn-title' => '$1 {{PLURAL:$1|askfa d itfrn|iskfatn d itfrn}}',
 'shown-title' => 'Fsr $1 tayafut{{PLURAL:$1||s}} s tasna',
 'viewprevnext' => 'Mel ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Istayn ucnubc',
 'searchmenu-exists' => '"\'Tlla yat tasna lli ilan assaɣ « [[:$1]] » ɣ wiki yad',
 'searchmenu-new' => "'''Skr Tasna « [[:$1|$1]] » ɣ wiki !'''",
 'searchprofile-articles' => 'Mayllan ɣ tasna',
@@ -621,20 +612,16 @@ Tigira n ujbbad ns, ar takka yat tayafut bahra imqqurn,  ɣayan afan ur ttili.',
 'search-interwiki-default' => '$1 imyakkatn',
 'search-interwiki-more' => '(Uggar)',
 'search-relatedarticle' => 'Tzdi',
-'mwsuggest-disable' => 'Asbid AJAX n maryttuynnan ayttuyskar',
 'searcheverything-enable' => 'Cabba ɣ graygat agmmaḍ',
 'searchrelated' => 'Tuyzday',
 'searchall' => 'Kullu',
 'showingresults' => "Ẓr azddar  {{PLURAL:$1|'''1''' May tuykfan|'''$1''' Mad kfan}} Bdu s #'''$2'''",
 'showingresultsnum' => "Ẓr azddar (ifsr ɣ uzddar) {{PLURAL:$3|'''1''' may kfa|'''$3''' mad kfan}} Bdu s #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|May kfa '''$1''' ar '''$3'''|Mad kfan '''$1 - $2''' ar '''$3'''}} i '''$4'''",
-'nonefound' => "'''Arra''': Icnubbu ar tilin ɣir tiɣulin tuyzlaynin. Iɣ trit at cabbat ɣ kullu may tyuran d ḥtta tisnatin nu umsgdal s ''all:'', bdu acnubc  nek s kullu ma ɣɣid imun, ulla s assaɣ n tɣult li trit.",
 'search-nonefound' => 'Ur ittuykfa walu maygan zund ɣayli trit',
-'powersearch' => 'Amsigl imzwarn',
 'powersearch-legend' => 'Amsigl imzwarn',
 'powersearch-ns' => 'Icnubbucn ɣ tɣulin',
 'powersearch-redir' => 'Afsr n ismmatayn (Tifilit n ismmatayn)',
-'powersearch-field' => 'Acnubc ɣ',
 'powersearch-togglelabel' => 'Sti',
 'powersearch-toggleall' => 'Kullu',
 'powersearch-togglenone' => 'Walu',
@@ -647,7 +634,6 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
 'preferences' => 'Timssusmin',
 'mypreferences' => 'Timssusmin',
 'prefs-edits' => 'Uṭṭun n n imbddeln',
-'changepassword' => 'bdl awal ihdan',
 'prefs-skin' => 'odm',
 'skin-preview' => 'Ammal',
 'datedefault' => 'Timssusmin',
@@ -663,7 +649,6 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
 'prefs-email' => 'lkhiyarat n Email',
 'prefs-rendering' => 'adm',
 'saveprefs' => 'sjjl',
-'resetprefs' => 'hiyd tghyirat li orsjilnin',
 'restoreprefs' => 'sglbd kollo regalega',
 'prefs-editing' => 'tahrir',
 'rows' => 'sfof:',
@@ -739,7 +724,6 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
 'recentchanges-label-minor' => 'Imbddl ifssusn',
 'recentchanges-label-bot' => 'Ambddl ad iskr robot',
 'recentchanges-label-unpatrolled' => 'Ambddl ad ura jju ittmẓra',
-'rcnote' => 'Γid {{PLURAL:$1|ambddl amggaru lli ittuysgarn| $1 Imbddln imggura lli ittuyskarn}} ɣ {{PLURAL:$2|was amggaru| <b>$2</b> Ussan imggura}} ar $5 n $4.',
 'rcnotefrom' => "Had imbddln lli ittuyskarn z '''$2''' ('''$1''' ɣ uggar).",
 'rclistfrom' => 'Mel imbdeltn imaynutn z $1',
 'rcshowhideminor' => '$1 iẓṛign fssusnin',
@@ -868,9 +852,6 @@ Mel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.',
 'allpagesto' => 'Mel tasniwin li ttgurunin s',
 'allarticles' => 'Tasniwin kullu tnt',
 'allinnamespace' => 'Tasniwin kullu tnt ɣ ($1 assaɣadɣar)',
-'allnotinnamespace' => 'Tasniwin kullu tnt ur llant ɣ ($1 assaɣadɣar)',
-'allpagesprev' => 'Amzwaru (walli izwarn)',
-'allpagesnext' => 'Imal (wad yuckan)',
 'allpagessubmit' => 'Ftu',
 'allpagesprefix' => 'Mel tasniwin li ttizwirnin s',
 
@@ -1000,7 +981,6 @@ Ha riglaj n ɣila lli f tlla tasna '''$1''' :",
 # Block/unblock
 'blockip' => 'Qn f umsqdac',
 'ipboptions' => '2 ikudn:2 hours,1 as:1 day,3 ussan:3 days,1 imalas:1 week,2 imalasn:2 weeks,1 ayur:1 month,3 irn:3 months,6 irn:6 months,1 asggas:1 year,tusut ur iswuttan:infinite',
-'ipbotheroption' => 'wayya',
 'ipbhidename' => 'ḥbu assaɣ n umsqdac ɣ imbdln d umuɣn',
 'ipbwatchuser' => 'Tfr tisniwin d imsgdaln n umqdac',
 'ipblocklist' => 'Imsqdacn ttuẓnin',
@@ -1035,8 +1015,6 @@ Maya Iẓḍar ad iglb zzu uzddar ar aflla tasna yad lli bdda n nttagga. Illa fl
 'pagemovedsub' => 'tmmutti bla tamukrist',
 'movepage-moved' => '\'\'\'"$1" tmmutti s "$2"\'\'\'',
 'articleexists' => 'Tlla yad tasna illan assaɣ zund ɣwa niɣd assaɣ llid tiwid urt iga. Sti assaɣ yaḍn tarmt.',
-'talkexists' => 'Tasna tmmutti mzyan, mac tasna n umsgdal (imdiwiln) ur tmmutti acku tlla f wassaɣ ad amaynu.Illa fllak aggisnt tskrt yat s ufus nk.',
-'movedto' => 'Tmmuti s',
 'movetalk' => 'Sbadl assaɣ tasna n imdiwiln lli izdin d ɣi.',
 'movelogpage' => 'Iɣmisn n ismmattrayn',
 'movelogpagetext' => 'Γid umuɣ n tisniwin lli sbadlnin assaɣ d tilli mmuttini.',
@@ -1210,15 +1188,10 @@ Wiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn.
 # Pseudotags used for GPSSpeedRef
 'exif-gpsspeed-n' => 'Knots',
 
-# External editor support
-'edit-externally' => 'Bddl asdaw ad s wasnas abrrani',
-'edit-externally-help' => '(Ẓṛ [https://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] bac ad taf uggar n inɣmisn)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kraygat (kullu)',
 'namespacesall' => 'kullu',
 'monthsall' => 'kullu',
-'limitall' => 'Kullu',
 
 # Delete conflict
 'recreate' => 'awd skr',
@@ -1305,7 +1278,6 @@ Wiyyaḍ raggis ḥbun s ɣiklli sttin kkan gantn.
 
 # Special:ComparePages
 'comparepages' => 'qarnn tiwriqin',
-'compare-selector' => 'qarn lmorajaa ntwriqin',
 'compare-page1' => 'tawriqt 1',
 'compare-page2' => 'tawriqt 2',
 'compare-rev1' => 'morajaa 1',
index b1f7653..aacad49 100644 (file)
@@ -17,6 +17,7 @@
  * @author Pasanbhathiya2
  * @author Romaine
  * @author Singhalawap
+ * @author Thushara
  * @author චතුනි අලහප්පෙරුම
  * @author තඹරු විජේසේකර
  * @author දසනැබළයෝ
@@ -63,7 +64,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'නුසුසුදු_මාතෘකාව' ),
        'Blankpage'                 => array( 'හිස්_පිටුව' ),
        'Block'                     => array( 'වාරණය_කරන්න', 'IP_වාරණය_කරන්න', 'පරිශීලක_වාරණය_කරන්න' ),
-       'Blockme'                   => array( 'මා_වාරණය_කරන්න' ),
        'Booksources'               => array( 'ග්‍රන්ථ_මූලාශ්‍ර' ),
        'BrokenRedirects'           => array( 'භින්න_යළි-යොමුකිරීම්' ),
        'Categories'                => array( 'ප්‍රවර්ග' ),
@@ -73,7 +73,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'ගිණුම_තැනීමට' ),
        'Deadendpages'              => array( 'අග_ඇවුරුණු_පිටුව' ),
        'DeletedContributions'      => array( 'මකාදැමුණු_දායකත්වයන්' ),
-       'Disambiguations'           => array( 'වක්‍රෝත්තිහරණයන්' ),
        'DoubleRedirects'           => array( 'ද්විත්ව_යළි-යොමුකිරීම්' ),
        'Emailuser'                 => array( 'පරිශීලකට_විද්‍යුත්-තැපැලක්_යැවිම' ),
        'Export'                    => array( 'නිර්යාතකරන්න' ),
@@ -214,7 +213,6 @@ $messages = array(
 'tog-minordefault' => 'සියළු සංස්කරණයන් පෙර-නිමියෙන් සුළු-සංස්කරණ ලෙස සලකුණු කරන්න',
 'tog-previewontop' => 'සංස්කරණ කොටුවට ඉදිරියෙන් පෙර-දසුන පෙන්වන්න',
 'tog-previewonfirst' => 'පළමු සංස්කරණයෙහිදී පෙර-දසුන පෙන්වන්න',
-'tog-nocache' => 'ගවේශක පිටු මතක තබා ගැනීම අක්‍රීය කරන්න',
 'tog-enotifwatchlistpages' => 'මාගේ මුර ලැයිස්තුවෙහි පිටුවක් හෝ ගොනුවක් හෝ වෙනස්වූ විට මා හට විද්‍යුත් තැපැල් පණිවුඩයක් එවන්න',
 'tog-enotifusertalkpages' => 'මගේ පරිශීලක සාකච්ඡා පිටුව වෙනස් වූ විට මා හට විද්‍යුත්-තැපෑලක් එවන්න',
 'tog-enotifminoredits' => 'පිටුවල හෝ ගොනුවල හෝ  සුළු-සංස්කරණයකදී පවා මට විද්‍යුත් තැපැල් පණිවුඩයක් එවන්න',
@@ -349,7 +347,6 @@ $messages = array(
 'qbedit' => 'සංස්කරණය',
 'qbpageoptions' => 'මෙම පිටුව',
 'qbmyoptions' => 'මගේ පිටු',
-'qbspecialpages' => 'විශේෂ පිටු',
 'faq' => 'නිවිප්‍ර',
 'faqpage' => 'Project:නිවිප්‍ර',
 
@@ -409,7 +406,7 @@ $messages = array(
 'articlepage' => 'අන්තර්ගත පිටුව නරඹන්න',
 'talk' => 'සාකච්ඡාව',
 'views' => 'දෘෂ්ටි',
-'toolbox' => 'මෙවලම් ගොන්න',
+'toolbox' => 'මෙවලම්',
 'userpage' => 'පරිශීලක පිටුව නරඹන්න',
 'projectpage' => 'ව්‍යාපෘති පිටුව නරඹන්න',
 'imagepage' => 'ගොනු පිටුව නරඹන්න',
@@ -446,7 +443,7 @@ $1",
 'disclaimers' => 'වියාචනයන්',
 'disclaimerpage' => 'Project:පොදු වියාචන',
 'edithelp' => 'සංස්කරණ උදවු',
-'helppage' => 'Help:පටà·\94න',
+'helppage' => 'Help:à¶\85නà·\8aතරà·\8aà¶\9cතයනà·\8a',
 'mainpage' => 'මුල් පිටුව',
 'mainpage-description' => 'මුල් පිටුව',
 'policy-url' => 'Project:ප්‍රතිපත්තිය',
@@ -468,8 +465,8 @@ $1",
 'youhavenewmessages' => 'ඔබ හට $1 ($2)',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|තවත් එක් පරිශීලකයෙකුගෙන්|පරිශීලකයන් $3 දෙනෙකුගෙන්}} ඔබ හට $1 ඇත ($2).',
 'youhavenewmessagesmanyusers' => 'බොහෝ පරිශීලකයන් වෙතින් ඔබ හට $1 ඇත ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|නව පණිවුඩයක්|නව පණිවුඩ}}',
-'newmessagesdifflinkplural' => 'අවසන් {{PLURAL:$1|වෙනස්වීම|වෙනස්වීම්}}',
+'newmessageslinkplural' => '{{PLURAL:$1|නව පණිවුඩයක්|999=nනව පණිවුඩ}}',
+'newmessagesdifflinkplural' => 'අවසන් {{PLURAL:$1|වෙනස්වීම|999=වෙනස්වීම්}}',
 'youhavenewmessagesmulti' => 'ඔබ හට $1 හි නව පණිවුඩ ඇත',
 'editsection' => 'සංස්කරණය',
 'editold' => 'සංස්කරණය',
@@ -563,9 +560,6 @@ URL  සඳහන් කරමින්, මෙම කරුණ [[Special:ListUs
 'perfcachedts' => 'පහත දත්ත පූර්වාපේක්‍ෂීව සංචිත කෙරී ඇති (කෑෂ් කෙරී ඇති) අතර, අවසන් වරට යාවත්කාලීන කර ඇත්තේ  $1 දීය. {{PLURAL:$4|එක් ප්‍රතිඵලයක|ප්‍රතිඵල $4 ක}} උපරිමයකට යටත්ව පූර්වාපේක්‍ෂීව සංචිත කෙරී ඇත.',
 'querypage-no-updates' => 'මෙම පිටුව සඳහා යාවත්කාල කිරීම් දැනට අක්‍රීය කොට ඇත.
 දැනට මෙහිදී දත්ත පුනස්ථාපනය සිදු නොවේ.',
-'wrong_wfQuery_params' => ' wfQuery() සඳහා සාවද්‍ය පරාමිතිකයන්<br />
-ශ්‍රිතය: $1<br />
-විමසුම: $2',
 'viewsource' => 'මූලාශ්‍රය නරඹන්න',
 'viewsource-title' => '$1 සඳහා මුලාශ්‍රය නරඹන්න',
 'actionthrottled' => 'ක්‍රියාව අවකරණය කරන ලදි',
@@ -643,12 +637,17 @@ $2',
 'createacct-emailrequired' => 'වි-තැපෑල ලිපිනය',
 'createacct-emailoptional' => 'වි-තැපෑල ලිපිනය (විකල්ප)',
 'createacct-email-ph' => 'ඔබගේ වි-තැපෑල ලිපිනය ඇතුළු කරන්න',
-'createaccountmail' => 'තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති වි-තැපැල් ලිපිනයට යවන්න',
+'createacct-another-email-ph' => 'ඊ මේල් ලිපිනය ඇතුළත් කරන්න.',
+'createaccountmail' => 'තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති විද්යුත් තැපැල් ලිපිනයට යවන්න',
 'createacct-realname' => 'නියම නම (වෛකල්පීය)',
 'createaccountreason' => 'හේතුව:',
 'createacct-reason' => 'හේතුව',
 'createacct-reason-ph' => 'ඔබ තවත් ගිණුමක් තනන්නේ කුමක් නිසාද',
 'createacct-captcha' => 'ආරක්ෂක පරික්ෂාව',
+'createacct-imgcaptcha-ph' => 'ඉහතින් දැක්වෙන වචනය ඇතුළත් කරන්න',
+'createacct-submit' => 'ඔබේ ගිණුම තනන්න',
+'createacct-another-submit' => 'තවත් ගිණුමක් ආරම්භ කරන්න',
+'createacct-benefit-heading' => '{{වෙබ් අඩවි නම}} ඔබ වැනි අයෙක් විසින් නිමවා ඇත',
 'createacct-benefit-body1' => '{{PLURAL:$1|සංස්කරණය|සංස්කරණ}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|පිටුව|පිටු}}',
 'createacct-benefit-body3' => 'මෑත{{PLURAL:$1|දායකයා|දායකයෝ}}',
@@ -684,7 +683,7 @@ $2',
 'passwordtooshort' => 'මුරපදය අඩුම වශයෙන් {{PLURAL:$1|එක් අක්ෂරයක්|අක්ෂර $1 ක්}} සහිත විය යුතුය.',
 'password-name-match' => 'ඔබගේ මුරපදය, ඔබගේ පරිශීලක නාමයෙන් වෙනස් එකක් විය යුතුය.',
 'password-login-forbidden' => 'මෙම පරිශීලක නාමයේ හා මුරපදයේ භාවිතය වලක්වා ඇත.',
-'mailmypassword' => 'නà·\80 à¶¸à·\94රපදය à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a à¶­à·\90පà·\91ලâ\80\8dට à¶ºà·\80න්න',
+'mailmypassword' => 'මà·\94රපදය à¶´à·\8aâ\80\8dරතà·\8aâ\80\8dයà·\8fරමà·\8aභ à¶\9aරන්න',
 'passwordremindertitle' => '{{SITENAME}} සඳහා නව තාවකාලික මුර-පදය',
 'passwordremindertext' => 'යම් අයෙකු  ($1 අන්තර්ජාල ලිපිනය තුලින් සමහර විට ඔබ) විසින්  {{SITENAME}} ($4)සඳහා නව මුර-පදයක් ඉල්ලා සිට ඇත. පරිශීලක "$2"  වෙනුවෙන් තාවකාලික  මුර-පදයක් තනා "$3" බවට නියම කර ඇත. මෙය ඔබගේ අභිලාශය වූයේ නම් ඔබ විසින් ළහිළහියේ ප්‍රවිෂ්ට වී, නව මුර-පදයක් තෝරා ගත යුතුව ඇත.ඔබගේ තාවකාලික මුරපදය  {{PLURAL:$5|එක් දිනකින්|දින $5 කින්}}කල් ඉකුත්වනු ඇත.
 
@@ -694,15 +693,15 @@ $2',
 'passwordsent' => ' "$1" වෙනුවෙන් ලේඛනගත කර ඇති විද්‍යුත් තැපැල් ලිපිනයට නව මුර පදයක් යවා ඇත.
 ඔබට එය ලැබුනු පසු නැවත ප්‍රවිෂ්ට වන්න.',
 'blocked-mailpassword' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කරමින් සංස්කරණයෙහි යෙදීම වාරණය කොට ඇති අතර, අපයෙදුම වළකනු වස්,  මුර-පදය පුනරුත්ථාන  කෘත්‍යය භාවිත කිරීමට අවසරයද අහිමි කොට ඇත.',
-'eauthentsent' => 'නම් කර ඇති විද්‍යුත්-ලිපි ලිපිනය වෙත, තහවුරු කිරීම් විද්‍යුත්-ලිපියක් යවා ඇත.
-ගිණුම වෙත වෙනත් විද්‍යුත්-ලිපියක්  යැවීමට පෙර, ගිණුම සත්‍ය වශයෙන්ම ඔබගේම බව තහවුරු කරනු වස්, විද්‍යුත්-ලිපියෙහි අඩංගු උපදෙස්  පිළිපදින්න.',
+'eauthentsent' => 'නම් කර ඇති විද්‍යුත් තැපැල් ලිපිනය වෙත තහවුරු කිරීම් විද්‍යුත්-ලිපියක් යවා ඇත.
+ගිණුම වෙත වෙනත් විද්‍යුත් තැපෑලක් යැවීමට පෙර, ගිණුම සත්‍ය වශයෙන්ම ඔබගේම බව තහවුරු කරනු පිණිස විද්‍යුත්-ලිපියෙහි අඩංගු උපදෙස්  පිළිපදින්න.',
 'throttled-mailpassword' => 'අවසන් {{PLURAL:$1|පැය|පැය $1}} තුල, මුරපද යළි සැකසුම් ඊ-ලිපියක් යවාඇත.
 අපයෙදුම වළකනු වස්, {{PLURAL:$1|එක් පැයක|පැය $1 ක}}ට වරක් එක් මුරපද යළි සැකසුම් ඊ-ලිපියක් පමණක් යවනු ලැබේ.',
 'mailerror' => 'තැපෑල යැවීමේදී වූ දෝෂය: $1',
 'acct_creation_throttle_hit' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කල මෙම විකියට අමුත්තන් විසින් {{PLURAL:$1|එක් ගිණුමක්|ගිණුම් $1 ක්}} පසුගිය දිනය තුලදී තනා ඇති අතර, එය මෙම කාල පරිච්ඡේදය තුලදී ඉඩ දෙනු ලබන උපරිමය වෙයි.
 මේ හේතුවෙන්, මෙම අන්තර්ජාල ලිපිනය භාවිතා කරන අමුත්තන් විසින් මෙම අවස්ථාවෙහිදී තවත් ගිණුම් තැනීම සිදු කල නොහැකිව ඇත.',
-'emailauthenticated' => '$2 දින $3 වේලාවෙහිදී ඔබගේ විද්‍යුත්-තැපැල් ලිපිනය සත්‍යවත් කරන ලදි.',
-'emailnotauthenticated' => 'ඔබගේ විද්‍යුත්-තැපැල් ලිපිනය තවමත් සත්‍යවත් කර නොමැත.
+'emailauthenticated' => '$2 දින $3 වේලාවෙහිදී ඔබගේ විද්‍යුත්-තැපැල් ලිපිනයෙහි සත්‍යතාව තහවුරු කරන ලදි.',
+'emailnotauthenticated' => 'ඔබගේ විද්‍යුත්-තැපැල් ලිපිනයෙහි නිවැරදිබව තවමත් තගහවුරු කර නොමැත.
 පහත හැකියාවන් කිසිවක් ඉටුකරනු වස් විද්‍යුත්-තැපෑල  යවනු නොලැබේ.',
 'noemailprefs' => 'පහත හැකියාවන් ඉටුකිරීමට ඉඩ සලසනු වස් විද්‍යුත්-තැපැල් ලිපිනයක් හුවා දක්වන්න.',
 'emailconfirmlink' => 'ඔබගේ විද්‍යුත් තැපැල් ලිපිනය තහවුරු කරන්න',
@@ -719,7 +718,7 @@ $2',
 මෙම ගිණුම තැනී ඇත්තේ වැරදීමකින් නම්, මෙම පණිවුඩය නොසලකා හැරිය හැක.',
 'usernamehasherror' => 'පරිශීලක නාමයේ පූරක අනුලකුණු අඩංගු විය නොහැකිය',
 'login-throttled' => 'ඔබ විසින් මෑතදී  පමණට වඩා වාර ගණනක් පිවිසීමෙහි උත්සාහයන් දරා ඇත.
-යළි උත්සාහ කිරීමට පෙර මඳ වේලාවක් රැඳී සිටින්න.',
+යළි උත්සාහ කිරීමට පෙර $1 වේලාවක් රැඳී සිටින්න.',
 'login-abort-generic' => 'ඔබගේ පිවිසීම අසාර්ථකයි - අතහැර දමනලදී',
 'loginlanguagelabel' => 'භාෂාව: $1',
 'suspicious-userlogout' => 'නිෂ්ක්‍රමණය සඳහා ඔබගේ අයැදුම නිෂ්ප්‍රභා කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කැඩුනු) බ්‍රවුසරයකින් හෝ නිවේෂණය කෙරෙමින් පවතින ප්‍රොක්සියක් වෙතින් යැයි බැලූ බැල්මට පෙනෙන බැවිනි.',
@@ -729,7 +728,7 @@ $2',
 'user-mail-no-addy' => 'විද්‍යුත් තැපැල් ලිපිනයක් නොමැතිව විද්‍යුත් තැපැල් පණිවුඩයක් යැවීමට උත්සහ දරා ඇත.',
 
 # Change password dialog
-'resetpass' => 'මුරපදය වෙනස් කරන්න',
+'changepassword' => 'මුරපදය වෙනස් කරන්න',
 'resetpass_announce' => 'විද්‍යුත්-තැපෑලෙන් එවනු ලැබූ තාවකාලික කේතයක් උපයෝගීකර ඔබ පිවිසීඇත.
 පිවිසීම නිසි ලෙස නිමකිරීමට ඔබ නව මුර-පදයක් මෙහි බහාලිය යුතුය:',
 'resetpass_text' => '<!-- මෙතැනට පෙළ එක් කරන්න -->',
@@ -738,7 +737,7 @@ $2',
 'newpassword' => 'නව මුර-පදය:',
 'retypenew' => 'නව මුර-පදය නැවත ඇතුළු කරන්න:',
 'resetpass_submit' => 'මුර-පදය පූරණය කොට ඉන් පසු ප්‍රවිෂ්ට වන්න',
-'changepassword-success' => 'à¶\94බà¶\9cà·\9a à¶¸à·\94ර-පදය à·\83à·\8fරà·\8aථà¶\9a à¶½à·\99à·\83 à·\80à·\99නà·\83à·\8a à¶\9aරන à¶½à¶¯à·\92! à¶¯à·\90නà·\8a à¶\94බà·\80 à¶´à·\8aâ\80\8dරà·\80à·\92à·\82à·\8aට à¶\9aරà¶\9cනà·\92මà·\92නà·\8a...',
+'changepassword-success' => 'à¶\94බà¶\9cà·\9a à¶¸à·\94ර-පදය à·\83à·\8fරà·\8aථà¶\9a à¶½à·\99à·\83 à·\80à·\99නà·\83à·\8a à¶\9aරන à¶½à¶¯à·\93!',
 'resetpass_forbidden' => 'මුර-පදයන් වෙනස් කිරීම  සිදු කල නොහැක',
 'resetpass-no-info' => 'මෙම පිටුව සෘජු ලෙස පරිශීලනය කෙරුමට ඔබ පළමු ප්‍රවිෂ්ට විය යුතුය.',
 'resetpass-submit-loggedin' => 'මුර-පදය වෙනස්කරන්න',
@@ -749,8 +748,10 @@ $2',
 
 # Special:PasswordReset
 'passwordreset' => 'මුරපදය වෙනස් කරන්න',
+'passwordreset-text-one' => 'තාවකාලික මුර-පදයක් විද්‍යුත් තැපෑළ මගින් ලබා ගැනීම සඳහා මෙම පෝරමය සම්පූර්ණ කරන්න.',
 'passwordreset-legend' => 'මුරපදය යළි පිහිටුවන්න',
 'passwordreset-disabled' => 'මෙම විකියෙහි මුර පද ප්‍රත්‍යාරම්භ කිරීම් අක්‍රීය කොට ඇත.',
+'passwordreset-emaildisabled' => 'විද්‍යුත්  තැපැල් පහසුකම මෙම විකි ය සඳහා අවලංගු කොට ඇත.',
 'passwordreset-username' => 'පරිශීලක නාමය:',
 'passwordreset-domain' => 'වසම:',
 'passwordreset-capture' => 'ප්‍රතිපලදායක විද්‍යුත් තැපෑල නරඹනවාද?',
@@ -766,8 +767,8 @@ $2
 ඔබ දැන් ප්‍රවිෂ්ට වී නව මුරපදයක් තෝරාගත යුතුයි. වෙන යම් අයෙක් මෙම ඉල්ලීම කර ඇත්නම් හෝ, ඔබගේ මුල් මුරපදය ඔබගේ මතකයට පැමිණ ඇති නම් හා, එය වෙනස් කිරීමට ඔබ හට තවදුරටත් අවශ්‍ය නොවේ නම්, ඔබ විසින් මෙම පණිවුඩය නොසලකා හැර පැරණි මුරපදය තවදුරටත් පාවිච්චි කළ හැක.',
 'passwordreset-emailelement' => 'පරිශීලක නාමය: $1
 තාවකාලික මුරපදය: $2',
-'passwordreset-emailsent' => 'à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a තà·\90පà·\90ලà·\8a මතà¶\9aà·\8aà¶\9aà·\92රà·\93මක් යවන ලදී.',
-'passwordreset-emailsent-capture' => 'මතà¶\9aà·\8a à¶\9aà·\92රà·\93මà·\9a à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a à¶­à·\90පà·\90ලà·\8a à¶´à¶«à·\92à·\80à·\94ඩය යවන ලදී, එය පහත දැක්වේ.',
+'passwordreset-emailsent' => 'මà·\94ර-පදය à¶±à·\90à·\80ත à·\83à¶\9aà·\83à·\8a à¶\9aà·\92රà·\93ම à¶´à·\92à·\85à·\92බඳà·\80 à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a තà·\90පà·\91ලක් යවන ලදී.',
+'passwordreset-emailsent-capture' => 'මà·\94ර-පදය à·\80à·\99නà·\83à·\8a à¶\9aà·\92රà·\93ම à¶´à·\92à·\85à·\92බඳà·\80 à·\80à·\92දà·\8aâ\80\8dයà·\94තà·\8a à¶­à·\90පà·\91ලà¶\9aà·\8a යවන ලදී, එය පහත දැක්වේ.',
 'passwordreset-emailerror-capture' => 'සිහිකැඳවුම් ඊ-තැපෑල ජනිත කරනු ලැබූ අතර, එය පහත දැක්වේ, නමුත් එය පරිශීලකයාට යැවීම අසාර්ථක වුනි: $1',
 
 # Special:ChangeEmail
@@ -1093,10 +1094,6 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
 'revdelete-nooldid-title' => 'ඉලක්කගත සංශෝධනය අනීතිකයි',
 'revdelete-nooldid-text' => 'මෙම කාර්යය ඉටු කිරීම සඳහා එක්කෝ ඔබ විසින් ඉලක්කගත සංශෝධනය(න්) නොදක්වයි,
 සඳහන් කල සංශෝධනය නොපවතියි, නැතහොත්, වත්මන් සංශෝධනය සැඟවීමට ඔබ යත්න දරයි.',
-'revdelete-nologtype-title' => 'ලඝු-සටහන් වර්ගයක් දක්වා නොමැත',
-'revdelete-nologtype-text' => 'මෙම ක්‍රියාව සිදු කල හැකි වන පරිදී  ලඝු-සටහන් වර්ගයක් දැක්විය යුතු වුවද ඔබ එසේ කර නොමැත.',
-'revdelete-nologid-title' => 'අනීතික ලඝු-සටහන් නිවේශිතය',
-'revdelete-nologid-text' => 'මෙම කෘත්‍යය සිදු කල හැකි වන පරිදී ඔබ විසින් එක්කෝ ඉලක්කගත ලඝු-සටහන් තැබිය යුතු සිදුවීමක් දක්වා නොමැත නැතිනම් දක්වා ඇති නිවේශිතය නොපවතියි.',
 'revdelete-no-file' => 'නිවේශිත ගොනුව නොපවතියි.',
 'revdelete-show-file-confirm' => '$2 දින $3 වේලාවේදී මකාදැමුනු "<nowiki>$1</nowiki>" ගොනුවෙහි සංශෝධනයක් නැරඹීමට ඔබ හට සහතික වශයෙන් ඇවැසිද?',
 'revdelete-show-file-submit' => 'ඔව්',
@@ -1116,8 +1113,8 @@ $3 විසින් සපයා ඇති හේතුව ''$2'' වේ",
 'revdelete-hide-user' => 'සංස්කාරකගේ පරිශීලක නාමය/IP ලිපිනය සඟවන්න',
 'revdelete-hide-restricted' => 'අනෙකුන් මෙන්ම පරිපාලකවරුන් ගෙන්ද මෙම දත්ත යටපත්කරන්න',
 'revdelete-radio-same' => '(වෙනස් නොකරන්න)',
-'revdelete-radio-set' => 'à\94à·\80à·\8a',
-'revdelete-radio-unset' => 'නà·\90ත',
+'revdelete-radio-set' => 'à·\83à¶\9fà·\80නලද',
+'revdelete-radio-unset' => 'දà·\98à·\81à·\8aâ\80\8dයමà·\8fන',
 'revdelete-suppress' => 'අනෙකුන්ගෙන් මෙන්ම පරිපාලකයන්ගෙන්ද දත්ත යටපත් කරන්න',
 'revdelete-unsuppress' => 'ප්‍රතිෂ්ඨාපනය කරන ලද සංශෝධනයන් විෂයයෙහි පැනවුනු පරිසීමා ඉවත්කරන්න',
 'revdelete-log' => 'හේතුව:',
@@ -1129,8 +1126,6 @@ $1",
 'logdelete-failure' => "'''සටහන් දෘශ්‍යතාවය නියම කිරීම කල නොහැකි විය:'''
 $1",
 'revdel-restore' => 'දෘශ්‍යතාවය වෙනස් කරන්න',
-'revdel-restore-deleted' => 'සංශෝධන මකා දමන ලදී',
-'revdel-restore-visible' => 'දෘශ්‍ය සංශෝධන',
 'pagehist' => 'පිටු ඉතිහාසය',
 'deletedhist' => 'මකාදැමූ ඉතිහාසය',
 'revdelete-hide-current' => '$1දින, $2 වේලාවෙහි, අයිතමය සැඟවීමෙහිදී දෝෂයක් ඇති වී ඇත: මෙය මෑත සංශෝධනය වෙයි.
@@ -1203,12 +1198,8 @@ $1",
 # 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}}',
@@ -1217,10 +1208,8 @@ $1",
 'nextn-title' => 'මීලඟ {{PLURAL:$1|ප්‍රතිඵලය|ප්‍රතිඵල $1}}',
 'shown-title' => 'එක් පිටුවකට {{PLURAL:$1|ප්‍රතිඵලයක්|ප්‍රතිඵල $1 ක්}} බැගින් පෙන්වන්න',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) නරඹන්න',
-'searchmenu-legend' => 'ගවේෂණ තෝරාගැනීම්',
 'searchmenu-exists' => "'''මෙම විකියෙහි \"[[:\$1]]\" ලෙස නම් කර ඇති පිටුවක් ඇත.'''",
 'searchmenu-new' => "'''මෙම විකියෙහි \"[[:\$1]]\" පිටුව තනන්න!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|මෙම උපසර්ගය භාවිත කරමින් පිටු පිරික්සන්න]]',
 'searchprofile-articles' => 'අන්තර්ගත පිටු',
 'searchprofile-project' => 'උදවු හා ව්‍යාපෘති පිටු',
 'searchprofile-images' => 'බහුමාධ්‍ය',
@@ -1241,21 +1230,16 @@ $1",
 'search-interwiki-default' => '$1 වෙතින් ප්‍රතිඵල:',
 'search-interwiki-more' => '(තවත්)',
 'search-relatedarticle' => 'සහසම්බන්ධිත',
-'mwsuggest-disable' => 'සෙවුම් යෝජනා අක්‍රීය කරන්න',
 'searcheverything-enable' => 'සියළු නාමඅවකාශයන්හි ගවේෂණය කරන්න',
 'searchrelated' => 'ආශ්‍රිත',
 'searchall' => 'සියල්ල',
 'showingresults' => "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$1|ප්‍රතිඵල '''1'''  ක් |ප්‍රතිඵල '''$1''' ක්}} දක්වා පහත පෙන්වා ඇත.",
 'showingresultsnum' => "#'''$2''' ගෙන් ආරම්භ කොට, {{PLURAL:$3|ප්‍රතිඵල '''1'''  ක් |ප්‍රතිඵල '''$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' => 'කිසිවක් නොමැත',
@@ -1268,7 +1252,6 @@ $1",
 'preferences' => 'අභිරුචි',
 'mypreferences' => 'අභිරුචීන්',
 'prefs-edits' => 'සංස්කරණයන් සංඛ්‍යාව:',
-'changepassword' => 'මුරපදය වෙනස් කරන්න',
 'prefs-skin' => 'ඡවිය',
 'skin-preview' => 'පෙරදසුන',
 'datedefault' => 'අභිරුචියක් නොමැත',
@@ -1291,13 +1274,11 @@ $1",
 'prefs-email' => 'විද්‍යුත්-ලිපි තෝරාගැනීම්',
 'prefs-rendering' => 'පෙනුම',
 'saveprefs' => 'සුරැකුම',
-'resetprefs' => 'නොසුරැකූ වෙනස්වීම් නිෂ්කාශනය කරන්න',
 'restoreprefs' => 'පෙරනිමි සැකසුම් සියල්ලම යළි-පිහිටුවන්න',
 'prefs-editing' => 'සංස්කරණය කිරීම්',
 'rows' => 'පේළි:',
 'columns' => 'තීරු:',
 'searchresultshead' => 'ගවේෂණය',
-'resultsperpage' => 'පිටුවකට හිට් ගණන:',
 'stub-threshold' => '<a href="#" class="stub">කොට සබැඳි</a> ආකෘතිකරණය සඳහා සීමකය (බයිට්):',
 'stub-threshold-disabled' => 'අක්‍රිය කෙරිණි',
 'recentchangesdays' => 'මෑත වෙනස්වීම්හි පෙන්විය යුතු දිනයන්:',
@@ -1309,7 +1290,6 @@ $1",
 'localtime' => 'ප්‍රාදේශීය වේලාව:',
 'timezoneuseserverdefault' => 'විකියෙහි සාමාන්‍ය විදිහ භාවිත කරන්න ($1)',
 'timezoneuseoffset' => 'වෙනත් (හිලව්ව නියමාකාරයෙන් දක්වන්න)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'සේවාදායකයේ වේලාව:',
 'guesstimezone' => 'බ්‍රවුසරයෙන් පුරවන්න',
 'timezoneregion-africa' => 'අප්‍රිකාව',
@@ -1543,12 +1523,11 @@ HTML ටැගයන් පිරික්සන්න.',
 'recentchanges-label-bot' => 'මෙය රොබෝවක් විසින් කරන ලද සංස්කරණයකි',
 'recentchanges-label-unpatrolled' => 'මෙම සංස්කරණය තවම විමර්ශනය කර නොමැත',
 'recentchanges-legend-newpage' => '$1 -  නව පිටුව',
-'rcnote' => "$4 දින, $5 වන තෙක්, අවසන් {{PLURAL:$2|දිනදී|දින '''$2''' තුලදී}} සිදුවී ඇති, {{PLURAL:$1| '''1''' ක් වෙනස|අවසන් වෙනස්වීම් '''$1'''}} පහත දැක්වේ.",
 'rcnotefrom' => "'''$2''' න් පසු සිදුවී ඇති වෙනස්කම් මෙහි පහත දැක්වේ ('''$1''' ක ප්‍රමාණයක උපරිමයක් පෙන්වා ඇත).",
 'rclistfrom' => '$1 සිට බලපැවැත්වෙන මෑත වෙනස්වීම් පෙන්වන්න',
 'rcshowhideminor' => 'සුළු සංස්කරණ $1',
 'rcshowhidebots' => 'රොබෝ $1',
-'rcshowhideliu' => 'පà·\92à·\80à·\92à·\83à·\94නà·\94 à¶´à¶»à·\92à·\81à·\93ලà¶\9aයනà·\8a $1',
+'rcshowhideliu' => 'ලà·\9aà¶\9bනà¶\9cත à¶´à¶»à·\92à·\81à·\93ලà¶\9aයà·\9d $1',
 'rcshowhideanons' => 'නිර්නාමික පරිශීලකයන් $1',
 'rcshowhidepatr' => 'පරික්‍ෂා කර බැලූ සංස්කරණයන් $1',
 'rcshowhidemine' => 'මගේ සංස්කරණයන් $1',
@@ -2012,10 +1991,8 @@ When filtered by user, only files where that user uploaded the most recent versi
 'protectedpages' => 'ආරක්ෂිත පිටු',
 'protectedpages-indef' => 'අනිශ්චිත ආරක්ෂණයන් පමණයි',
 'protectedpages-cascade' => 'තීරු-දර්ශන ආරක්ෂණයන් පමණයි',
-'protectedpagestext' => 'ඉදිරියේ දැක්වෙන පිටු ගෙනයාම හෝ සංස්කරණය කිරීම හෝ වාරණය කොට ඇත',
 'protectedpagesempty' => 'මෙම පරාමිතීන් හා සමග සැලකූ කල,  කිසිදු පිටුවක් දැනට ආරක්ෂිත වී නොමැත.',
 'protectedtitles' => 'ආරක්‍ෂිත ශීර්ෂයන්',
-'protectedtitlestext' => 'පහත දැක්වෙන ශීර්ෂයන් තැනිය නොහැකි වන පරිදි ආරක්‍ෂණය කොට ඇත',
 'protectedtitlesempty' => 'මෙම පරාමිතීන් හා සමග සැලකූ කල, කිසිදු ශීර්ෂයක් දැනට ආරක්ෂිත වී නොමැත.',
 'listusers' => 'පරිශීලක ලැයිස්තුව',
 'listusers-editsonly' => 'සංස්කරණයන් සිදුකර ඇති පරිශීලකයන් පමණක් පෙන්වන්න',
@@ -2066,9 +2043,6 @@ When filtered by user, only files where that user uploaded the most recent versi
 'allpagesto' => 'මෙහිදී කෙළවර වන පිටු පෙන්වන්න:',
 'allarticles' => 'සියළු පිටු',
 'allinnamespace' => 'සියළු පිටු ($1 නාමඅවකාශය)',
-'allnotinnamespace' => 'සියළු පිටු ($1 නාමඅවකාශයෙහි නොමැති)',
-'allpagesprev' => 'පෙර',
-'allpagesnext' => 'මීලඟ',
 'allpagessubmit' => 'යන්න',
 'allpagesprefix' => 'මෙම උපසර්ගය සහිත පිටු පෙන්වන්න:',
 'allpagesbadtitle' => 'සපයා ඇති පිටු ශීර්ෂය අනීතික විය නැතහොත් එහි අන්තර්-භාෂා හෝ අන්තර් විකී උපසර්ගයක් අඩංගු විය.
@@ -2280,6 +2254,7 @@ Feedback and further assistance:
 'delete-warning-toobig' => 'මෙම පිටුවට, {{PLURAL:$1|එක් සංශෝධනයකට|සංශෝධන $1 කට}} වඩා වැඩි විශාල සංස්කරණ ඉතිහාසයක් ඇත.
 මෙය මකාදැමීම  {{SITENAME}} හි දත්ත-ගබඩා ක්‍රියාකාරකම් වලට අවහිරතා පැන නැංවීමට හේතු විය හැක;
 පරිස්සමින් ඉදිරි කටයුතු කරන්න.',
+'deleting-backlinks-warning' => "'''ප්‍රවේශමෙන්:''' ඔබ සූදානම් වන්නේ ඔබ පරිශීලනය කරන පිටුවට සම්බන්ධ වූ අනෙක් පිටු මකා දැමීමටයි.",
 
 # Rollback
 'rollback' => 'සංස්කරණයන් පුනරාවර්තනය කරන්න',
@@ -2396,7 +2371,6 @@ $2 ගේ අවසන් අනුවාදය වෙතට යළි වෙන
 'undeletebtn' => 'යලි පිහිටුවන්න',
 'undeletelink' => 'නරඹන්න/ප්‍රත්‍යර්පණය',
 'undeleteviewlink' => 'නරඹන්න',
-'undeletereset' => 'ප්‍රත්‍යාරම්භ කරන්න',
 'undeleteinvert' => 'තෝරාගැනුම කණපිට පෙරලන්න',
 'undeletecomment' => 'හේතුව:',
 'undeletedrevisions' => '{{PLURAL:$1|සංශෝධනයක්|සංශෝධන $1 ක්}} ප්‍රතිෂ්ඨාපනය කරන ලදි',
@@ -2436,7 +2410,7 @@ $1',
 'contributions' => '{{GENDER:$1|පරිශීලකගේ}} දායකත්වයන්',
 'contributions-title' => ' $1 සඳහා පරිශීලක දායකත්වයන්',
 'mycontris' => 'දායකත්ව',
-'contribsub2' => '$1 සඳහා ($2)',
+'contribsub2' => '{{GENDER:$3|$1}} සඳහා ($2)',
 'nocontribs' => 'මෙම උපමානයන් හා ගැලපෙන වෙනස්වීම් හමුනොවිණි.',
 'uctop' => '(වත්මන්)',
 'month' => 'මෙම මස (හා ඉන් පෙර) සිට:',
@@ -2484,7 +2458,6 @@ $1',
 'block' => 'පරිශීලකයා වාරණය කරන්න',
 'unblock' => 'පරිශීලකයාගේ වාරණය අත්හිටුවන්න',
 'blockip' => 'පරිශීලකයා වාරණය කරන්න',
-'blockip-title' => 'පරිශීලකයා වාරණය කරන්න',
 'blockip-legend' => 'වාරණයකල පරිශීලක',
 'blockiptext' => 'විශේෂිත අන්තර්ජාල ලිපිනයකින් හෝ ප්‍රතිශීලක නාමයකින් ලිවීම් ප්‍රවේශය වාරණය කෙරුමට පහත ආකෘති පත්‍රය භාවිතා කරන්න.
 වන්ධල්‍යය වැලැක්වීමේ හුදු  අභිලාෂයෙන් හා, [[{{MediaWiki:Policy-url}}|ප්‍රතිපත්ති]] ප්‍රකාරව මෙය සිදුකල යුත්තේය.
@@ -2492,7 +2465,6 @@ $1',
 'ipadressorusername' => 'පරිශීලක නාමය හෝ IP ලිපිනය:',
 'ipbexpiry' => 'කල් ඉකුත්වීම:',
 'ipbreason' => 'හේතුව:',
-'ipbreasonotherlist' => 'අනෙකුත් හේතුව',
 'ipbreason-dropdown' => '*සාමාන්‍ය වාරණ හේතූන්
 ** සාවද්‍ය තොරතුරු බහාලීම
 ** පිටුවලින් අන්තර්ගතය ඉවත්කිරීම
@@ -2508,8 +2480,6 @@ $1',
 'ipbsubmit' => 'මෙම පරිශීලක වාරණය කරන්න',
 'ipbother' => 'අනෙකුත් වේලාව:',
 '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',
-'ipbotheroption' => 'අනෙකුත්',
-'ipbotherreason' => 'අනෙකුත්/අමතර හේතුව:',
 'ipbhidename' => 'පරිශීලක-නාමය සංස්තරණයන් ගෙන් හා ලැයිස්තු වලින් සඟවන්න',
 'ipbwatchuser' => 'මෙම පරිශීලකයාගේ පරිශීලක හා සාකච්ඡා පිටු මුර-කරන්න',
 'ipb-disableusertalk' => 'මෙම පරිශීලකයා වාරණය කර තැබෙන විට ඔවුන්ගේම සාකච්ඡා පිටුව සංස්කරණය කිරීම වලක්වන්න',
@@ -2603,7 +2573,6 @@ $1 ගේ වාරණයට හේතුව මෙය වේ: "$2"',
 'sorbsreason' => 'ඔබගේ අන්තර්ජාල ලිපිනය, {{SITENAME}} විසින් භාවිත වන DNSBL හි විවෘත නියුතුවක් (ප්‍රොක්සියක්) ලෙස ලැයිස්තුගත කොට ඇත.',
 'sorbs_create_account_reason' => 'ඔබගේ අන්තර්ජාල ලිපිනය, {{SITENAME}} විසින් භාවිත වන DNSBL හි විවෘත නියුතුවක් (ප්‍රොක්සියක්) ලෙස ලැයිස්තුගත කොට ඇත.
 ඔබ හට ගිණුමක් තැනිය නොහැක',
-'cant-block-while-blocked' => 'ඔබ වාරණයට ලක්ව සිටින අතරතුර අනෙක් පරිශීලකයන් වාරණය කිරීමට ඔබ හට නොහැක.',
 'cant-see-hidden-user' => 'අවහිර කිරීමට උත්සාහ කරන පරිශීලකයා දැනටමත් අවහිර කර සඟවා ඇත.පරිශීලක සැඟවුම් අයිතිය ඔබ සතු නොවන බැවින් ,ඔබට පරිශීලක අවහිරය නැරඹීමට හෝ සංස්කරණය කිරීමට නොහැකිය.',
 'ipbblocked' => 'ඔබද වාරණය කොට ඇති බැවින් අනෙකුත් පරිශීලකයන් වාරණය කිරීම හෝ වාරණයෙන් මුදවීම ඔබ හට කල නොහැක',
 'ipbnounblockself' => 'ඔබ විසින්ම ඔබගේ වාරණයෙන් බැහැර වීමට ඉඩදෙනු නොලැබේ',
@@ -2664,7 +2633,6 @@ $1 ගේ වාරණයට හේතුව මෙය වේ: "$2"',
 මෙවන් අවස්ථා වලදී, අවශ්‍යතාවය පැන නගී නම්, හස්තීය ලෙස ගෙන යාම හෝ ඒකාබද්ධ කිරීම හෝ සිදු කිරීමට ඔබ හට සිදුවේ.",
 'movearticle' => 'පිටුව ගෙනයන්න:',
 'moveuserpage-warning' => "'''අවවාදයයි:''' ඔබ යත්න දරමින් සිටිනුයේ පරිශීලක පිටුවක් ගෙන යෑමටයි. පිටුව ගෙන යෑම පමණක් සිදුවන බවද පරිශීලකයා යළි-නම්කෙරුම සිදු ''නොවන'' බවද කරුණාවෙන් සිහි තබා ගන්න.",
-'movenologin' => 'ප්‍රවිෂ්ටවී නොමැත',
 'movenologintext' => 'පිටුවක් ගෙනයෑමට පෙර, ඔබ ලේඛනගත පරිශීලකයෙකු වී [[Special:UserLogin|ප්‍රවිෂ්ට වී]] සිටිය යුතුය.',
 'movenotallowed' => 'පිටු ගෙනයෑමට ඔබ හට අවසර නොමැත.',
 'movenotallowedfile' => 'ගොනු ගෙන යෑමට අවසර ඔබ සතුව නොමැත.',
@@ -2680,9 +2648,6 @@ $1 ගේ වාරණයට හේතුව මෙය වේ: "$2"',
 'articleexists' => 'මෙම නම ඇති පිටුවක් දැනටමත් පවතී, නැත්නම් ඔබ විසින් තෝරා ගෙන ඇති පිටු නාමය වලංගු එකක් නොවේ.
 වෙනත් නමක් තෝරාගන්න.',
 'cantmove-titleprotected' => 'මෙම පරිස්ථානයට පිටුවක් ගෙනයෑමට ඔබ හට නොහැකි වන්නේ, තැනීමක් සිදුනොකෙරෙන අයුරින් නව ශිර්ෂය රක්ෂණය කර ඇති නිසාය',
-'talkexists' => "'''මෙම පිටුව සාර්ථක ලෙස ගෙන ගිය නමුදු, සාකච්ඡා පිටුව එසේ ගෙන යාම කල නොහැකි වූයේ නව පිටු නාමයට අදාලව සාකච්ඡා පිටුවක් දැනටමත් පවතින බැවිනි.
-කරුණාකර ඒවා ඔබ විසින් ඒකාබද්ධ කරන්න.'''",
-'movedto' => 'වෙත ගෙන යන ලදි',
 'movetalk' => 'ආශ්‍රිත සාකච්ඡා පිටුව ගෙන යන්න',
 'move-subpages' => 'උපපිටු ($1 දක්වා) ගෙනයන්න',
 'move-talk-subpages' => 'සාකච්ඡා පිටුවෙහි උපපිටු ($1 දක්වා) ගෙනයන්න',
@@ -3026,7 +2991,7 @@ $1',
 'file-nohires' => 'මෙයට ඉහල විසර්ජනයක් දක්වා එළඹිය නොහැක.',
 'svg-long-desc' => 'SVG ගොනුව, නාමමාත්‍රිකව $1 × $2 පික්සල්, ගොනු විශාලත්වය: $3',
 'svg-long-error' => 'අනීතික SVG ගොනුව: $1',
-'show-big-image' => 'පà·\96රà·\8aණ à·\80à·\92භà·\9aදනය',
+'show-big-image' => 'මà·\94ලà·\8a à¶\9cà·\9cනà·\94à·\80',
 'show-big-image-preview' => 'මෙම පෙරදසුනෙහි තරම: $1.',
 'show-big-image-other' => 'අනෙකුත් {{PLURAL:$2|විභේදනය|විභේදනයන්}}: $1.',
 'show-big-image-size' => '$1 × $2  පික්සල',
@@ -3534,15 +3499,10 @@ Others will be hidden by default.
 'exif-urgency-high' => 'ඉහළයි ($1)',
 'exif-urgency-other' => 'පරිශීලක-අර්ථ දැක්වූ ප්‍රමුඛත්වය ($1)',
 
-# External editor support
-'edit-externally' => 'බාහිර  උපයෝගයක් භාවිතා කරමින් මෙම ගොනුව සංස්කරණය කරන්න',
-'edit-externally-help' => '(වැඩිදුර තොරතුරු සඳහා [https://www.mediawiki.org/wiki/Manual:External_editors පිහිටුවීම් උපදෙස්] බලන්න.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'සියල්ල',
 'namespacesall' => 'සියල්ල',
 'monthsall' => 'සියළු',
-'limitall' => 'සියල්ලම',
 
 # Email address confirmation
 'confirmemail' => 'විද්‍යුත්-තැපැල් ලිපිනය තහවුරු කරන්න',
@@ -3567,7 +3527,6 @@ Others will be hidden by default.
 'confirmemail_success' => 'ඔබගේ විද්‍යුත්-තැපැල් ලිපිනය තහවුරුකොට ඇත.
 ඔබහට දැන් [[Special:UserLogin|පුවිෂ්ට වී]] විකිය භුක්තිවිඳිය හැක.',
 'confirmemail_loggedin' => 'ඔබගේ විද්‍යුත්-තැපැල් ලිපිනය දැන් තහවුරුකොට ඇත.',
-'confirmemail_error' => 'ඔබගේ තහවුරුකිරීම සුරැකීමට උත්සාහ කිරීමේදී යම් ගැටළුවක් පැනනැගුණි.',
 'confirmemail_subject' => '{{SITENAME}} විද්‍යුත්-තැපැල් ලිපිනය තහවුරුකිරීම',
 'confirmemail_body' => 'යම් අයෙකු, අන්තර්ජාල ලිපිනය $1 මගින්, සමහර විට ඔබ,
 {{SITENAME}} හි  "$2" නමැති ගිණුමක් මෙම විද්‍යුත්-තැපැල් ලිපිනය සහිතව ලියාපදිංචි කර ඇත .
@@ -3861,7 +3820,6 @@ MediaWiki බෙදාහැර ඇත්තේ එය ප්‍රයෝජන
 
 # Special:ComparePages
 'comparepages' => 'පිටු සසඳන්න',
-'compare-selector' => 'පිටුවේ සංශෝධන සසඳන්න',
 'compare-page1' => 'පිටුව 1',
 'compare-page2' => 'පිටුව 2',
 'compare-rev1' => '1වන සංශෝධනය',
@@ -3984,7 +3942,7 @@ MediaWiki බෙදාහැර ඇත්තේ එය ප්‍රයෝජන
 'duration-minutes' => '{{PLURAL:$1|මිනිත්තු|මිනිත්තු}} $1 ක්',
 'duration-hours' => '{{PLURAL:$1|පැය|පැය}} $1 ක්',
 'duration-days' => '{{PLURAL:$1|දින|දින}} $1 ක්',
-'duration-weeks' => '{{PLURAL: $1|සති|සති}} $1 ක්',
+'duration-weeks' => '{{PLURAL:$1|සති|සති}} $1 ක්',
 'duration-years' => '{{PLURAL:$1|වසර|වසර}} $1 ක්',
 'duration-decades' => '{{PLURAL:$1|දශක|දශක}} $1 ක්',
 'duration-centuries' => '{{PLURAL:$1|ශතවර්ෂ|ශතවර්ෂ}} $1 ක්',
index 0c49e3c..b7ae1e3 100644 (file)
@@ -41,7 +41,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'StaréStránky' ),
        'Blankpage'                 => array( 'PrázdnaStránka' ),
        'Block'                     => array( 'Blokovanie' ),
-       'Blockme'                   => array( 'ZablokovaťMa' ),
        'Booksources'               => array( 'KnižnéZdroje' ),
        'BrokenRedirects'           => array( 'PokazenéPresmerovania' ),
        'Categories'                => array( 'Kategórie' ),
@@ -51,7 +50,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'VytvorenieÚčtu' ),
        'Deadendpages'              => array( 'StránkyBezOdkazov' ),
        'DeletedContributions'      => array( 'ZmazanéPríspevky' ),
-       'Disambiguations'           => array( 'RozlišovacieStránky' ),
        'DoubleRedirects'           => array( 'DvojitéPresmerovania' ),
        'Emailuser'                 => array( 'EmailPoužívateľovi' ),
        'Fewestrevisions'           => array( 'NajmenejRevízií' ),
@@ -307,7 +305,6 @@ $messages = array(
 'tog-minordefault' => 'Označovať všetky zmeny štandardne ako drobné',
 'tog-previewontop' => 'Zobrazovať náhľad pred textovým poľom úprav, nie až za ním',
 'tog-previewonfirst' => 'Zobraziť náhľad pred prvou úpravou',
-'tog-nocache' => 'Zakázať ukladanie stránok do vyrovnávacej pamäte prehliadača',
 'tog-enotifwatchlistpages' => 'Upozorniť ma emailom, keď sa zmení stránka alebo súbor z môjho zoznamu sledovaných',
 'tog-enotifusertalkpages' => 'Upozorniť ma emailom po zmene mojej používateľskej diskusnej stránky',
 'tog-enotifminoredits' => 'Upozorniť ma emailom aj na drobné úpravy stránok a súborov',
@@ -443,7 +440,6 @@ $messages = array(
 'qbedit' => 'Upraviť',
 'qbpageoptions' => 'Táto stránka',
 'qbmyoptions' => 'Moje stránky',
-'qbspecialpages' => 'Špeciálne stránky',
 'faq' => 'Často kladené otázky',
 'faqpage' => 'Project:Často kladené otázky',
 
@@ -659,9 +655,6 @@ Neudala vysvetlenie.',
 'perfcached' => 'Nasledujúce údaje pochádzajú z vyrovnávacej pamäte a nemusia byť úplne aktuálne. Vo vyrovnávacej pamäti {{PLURAL:$1|je dostupný|sú dostupné|je dostupných}} najviac {{PLURAL:$1|jeden výsledok|$1 výsledky|$1 výsledkov}}.',
 'perfcachedts' => 'Nasledujúce údaje pochádzajú z vyrovnávacej pamäte a naposledy boli aktualizované $1. Vo vyrovnávacej pamäti {{PLURAL:$4|je dostupný|sú dostupné|je dostupných}} najviac {{PLURAL:$4|jeden výsledok|$4 výsledky|$4 výsledkov}}.',
 'querypage-no-updates' => 'Aktualizácie tejto stránky sú momentálne vypnuté. Tieto dáta sa v súčasnosti nebudú obnovovať.',
-'wrong_wfQuery_params' => 'Nesprávny parameter pre wfQuery()<br />
-Funkcia: $1<br />
-Požiadavka: $2',
 'viewsource' => 'Zobraziť zdroj',
 'viewsource-title' => 'Zobrazenie zdroja stránky $1',
 'actionthrottled' => 'Činnosť bola spomalená',
@@ -670,10 +663,10 @@ Požiadavka: $2',
 'viewsourcetext' => 'Môžete si zobraziť a kopírovať zdroj tejto stránky:',
 'viewyourtext' => "Môžete si prehliadnuť a skopírovať zdrojový kód '''vašich zmien''' tejto stránky:",
 'protectedinterface' => 'Táto stránka poskytuje text používateľského rozhrania tejto wiki a je zamknutá, aby sa predišlo jej zneužitiu.
-Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/wiki/Main_Page?setlang=sk translatewiki.net], projekt lokalizácie MediaWiki.',
+Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/ translatewiki.net], projekt lokalizácie MediaWiki.',
 'editinginterface' => "'''Upozornenie:''' Upravujete stránku, ktorá poskytuje text používateľského rozhrania.
 Zmeny tejto stránky ovplyvnia vzhľad používateľského rozhrania ostatným používateľom.
-Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/wiki/Main_Page?setlang=sk translatewiki.net], projekt lokalizácie MediaWiki.",
+Ak chcete pridať alebo zmeniť preklady pre všetky wiki, prosím, použite [//translatewiki.net/ translatewiki.net], projekt lokalizácie MediaWiki.",
 'cascadeprotected' => 'Táto stránka bola zamknutá proti úpravám, pretože je použitá na {{PLURAL:$1|nasledovnej stránke, ktorá je zamknutá|nasledovných stránkach, ktoré sú zamknuté}} voľbou „kaskádového zamknutia“:
 $2',
 'namespaceprotected' => "Nemáte povolenie upravovať stránky v mennom priestore '''$1'''.",
@@ -841,7 +834,7 @@ Ak sa rozhodnete ho poskytnúť, použije sa na označenie vašej práce.',
 'user-mail-no-body' => 'Sa pokúsil poslať email s prázdnym alebo neprimerane krátkym telom správy.',
 
 # Change password dialog
-'resetpass' => 'Zmeniť heslo',
+'changepassword' => 'Zmeniť heslo',
 'resetpass_announce' => 'Prishlásili ste sa pomocou dočasného emailom zaslaného kódu. Pre dokončenie prihlásenia je potrebné tu nastaviť nové heslo:',
 'resetpass_text' => '<!-- Sem pridajte text -->',
 'resetpass_header' => 'Zmeniť heslo k účtu',
@@ -1237,10 +1230,6 @@ Ako správca si môžete tento rozdiel zobraziť; podrobnosti môžete nájsť v
 'revisiondelete' => 'Zmazať/obnoviť revízie',
 'revdelete-nooldid-title' => 'Neplatná cieľová revízia',
 'revdelete-nooldid-text' => 'Neuviedli ste cieľovú revíziu alebo revízie, na ktorých sa má táto funkcia vykonať, uvedená revízia neexistuje alebo sa pokúšate skryť aktuálnu revíziu.',
-'revdelete-nologtype-title' => 'Nebol zadaný typ záznamu',
-'revdelete-nologtype-text' => 'Nezadali ste typ záznamu, na ktorom sa má vykonať táto operácia.',
-'revdelete-nologid-title' => 'Neplatná položka záznamu',
-'revdelete-nologid-text' => 'Buď ste neuviedli cieľovú udalosť záznamu, na ktorej sa má vykonať táto operácia alebo zadaná položka neexistuje.',
 'revdelete-no-file' => 'Uvedený súbor neexistuje.',
 'revdelete-show-file-confirm' => 'Ste si istý, že chcete zobraziť zmazanú revíziu súboru „<nowiki>$1</nowiki>“ z $2 $3?',
 'revdelete-show-file-submit' => 'Áno',
@@ -1274,8 +1263,6 @@ $1",
 'logdelete-failure' => "'''Viditeľnosť záznamu nebolo možné nastaviť:'''
 $1",
 'revdel-restore' => 'Zmeniť viditeľnosť',
-'revdel-restore-deleted' => 'zmazané revízie',
-'revdel-restore-visible' => 'viditeľné revízie',
 'pagehist' => 'História stránky',
 'deletedhist' => 'Zmazaná história',
 'revdelete-hide-current' => 'Chyba pri skrývaní položky s dátumom $2, $1: toto je aktuálna revízia.
@@ -1352,12 +1339,8 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 # Search results
 'searchresults' => 'Výsledky vyhľadávania',
 'searchresults-title' => 'Výsledky hľadania „$1“',
-'searchresulttext' => 'Viac informácií o vyhľadávaní vo {{GRAMMAR:lokál|{{SITENAME}}}} nájdete na stránke [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Hľadali ste „'''[[:$1]]'''“ ([[Special:Prefixindex/$1|všetky stránky začínajúce na „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|všetky stránky odkazujúce na „$1“]])",
-'searchsubtitleinvalid' => 'Na vyhľadávaciu požiadavku „$1“',
 'toomanymatches' => 'Hľadanie vrátilo príliš veľa výsledkov. Prosím, skúste inú požiadavku.',
 'titlematches' => 'Vyhovujúce názvy stránok',
-'notitlematches' => 'V názvoch stránok nebola nájdená zhoda',
 'textmatches' => 'Zhody v textoch stránok',
 'notextmatches' => 'V textoch stránok nebola nájdená zhoda',
 'prevn' => '{{PLURAL:$1|predošlá|predošlé|predošlých}} $1',
@@ -1366,10 +1349,8 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'nextn-title' => '{{PLURAL:$1|Ďalší $1 výsledok|Ďalšie $1 výsledky|Ďalších $1 výsledkov}}',
 'shown-title' => 'Zobraziť $1 {{PLURAL:$1|výsledok|výsledky|výsledkov}} na stránku',
 'viewprevnext' => 'Zobraziť ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Možnosti hľadania',
 'searchmenu-exists' => "*Stránka '''[[$1]]'''",
 'searchmenu-new' => "'''Vytvoriť stránku „[[:$1|$1]]“ na tejto wiki'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Prehliadať stránky s touto predponou]]',
 'searchprofile-articles' => 'Stránky s obsahom',
 'searchprofile-project' => 'Stránky pomocníka a projektu',
 'searchprofile-images' => 'Multimédiá',
@@ -1390,20 +1371,16 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'search-interwiki-default' => '$1 výsledkov:',
 'search-interwiki-more' => '(viac)',
 'search-relatedarticle' => 'Súvisiace',
-'mwsuggest-disable' => 'Vypnúť návrhy vyhľadávania',
 'searcheverything-enable' => 'Vyhľadať vo všetkých menných priestoroch',
 'searchrelated' => 'súvisiace',
 'searchall' => 'všetko',
 'showingresults' => "Nižšie {{PLURAL:$1|je zobrazený jeden výsledok|sú zobrazené '''1''' výsledky|je zobrazených '''$1''' výsledkov}}, počnúc od  #<b>$2</b>.",
 'showingresultsnum' => "Nižšie {{PLURAL:$3|je zobrazený najviac '''1''' výsledok|sú zobrazené najviac '''$3''' výsledky|je zobrazených najviac '''$3''' výsledkov}}, počnúc od  #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Výsledok '''$1''' z '''$3'''|Výsledky '''$1 - $2''' z '''$3'''}} pre '''$4'''",
-'nonefound' => "'''Poznámka''': Štandardne sa vyhľadáva iba v niektorých menných priestoroch. Skúste pred vyhľadávaný reťazec napísať ''all:'', aby sa hľadalo v celom obsahu (vrátane diskusných stránok, šablón atď.) alebo použite ako predponu požadovaný menný priestor.",
 'search-nonefound' => 'Vyhľadávanie nenašlo žiadne výsledky.',
-'powersearch' => 'Vyhľadávanie',
 'powersearch-legend' => 'Pokročilé hľadanie',
 'powersearch-ns' => 'Hľadať v menných priestoroch:',
 'powersearch-redir' => 'Vypísať presmerovania',
-'powersearch-field' => 'Hľadať',
 'powersearch-togglelabel' => 'Skontrolovať:',
 'powersearch-toggleall' => 'Všetky',
 'powersearch-togglenone' => 'Žiadne',
@@ -1415,7 +1392,6 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'preferences' => 'Nastavenia',
 'mypreferences' => 'Nastavenia',
 'prefs-edits' => 'Počet úprav:',
-'changepassword' => 'Zmeniť heslo',
 'prefs-skin' => 'Vzhľad',
 'skin-preview' => 'Náhľad',
 'datedefault' => 'štandardný',
@@ -1438,13 +1414,11 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}
 'prefs-email' => 'Možnosti emailu',
 'prefs-rendering' => 'Vzhľad',
 'saveprefs' => 'Uložiť nastavenia',
-'resetprefs' => 'Obnoviť pôvodné nastavenia',
 'restoreprefs' => 'Obnoviť všetky predvolené nastavenia (vo všetkých sekciách)',
 'prefs-editing' => 'Úpravy',
 'rows' => 'Riadky:',
 'columns' => 'Stĺpce:',
 'searchresultshead' => 'Vyhľadávanie',
-'resultsperpage' => 'Počet vyhovujúcich výsledkov zobrazených na stránku:',
 'stub-threshold' => 'Prah formátovania <a href="#" class="stub">výhonkov</a> (v bajtoch):',
 'stub-threshold-disabled' => 'Vypnuté',
 'recentchangesdays' => 'Koľko dní zobrazovať v posledných úpravách:',
@@ -1459,7 +1433,6 @@ každý, kto ho pozná si bude môcť prečítať váš zoznam sledovaných str
 'localtime' => 'Miestny čas:',
 'timezoneuseserverdefault' => 'Použiť predvoľby wiki ($1)',
 'timezoneuseoffset' => 'Iné (uvedením rozdielu)',
-'timezoneoffset' => 'Rozdiel¹:',
 'servertime' => 'Aktuálny čas na serveri:',
 'guesstimezone' => 'Prevziať z prehliadača',
 'timezoneregion-africa' => 'Afrika',
@@ -1707,12 +1680,13 @@ Softvér používa toto nastavenie na správne oslovenie a označenie vás ostat
 'recentchanges-summary' => 'Pomocou tejto stránky sledujete posledné úpravy wiki.',
 'recentchanges-noresult' => 'V danom období nie sú zmeny spĺňajúce tieto kritériá.',
 'recentchanges-feed-description' => 'Sledovať posledné úpravy tejto wiki týmto kanálom.',
-'recentchanges-label-newpage' => 'Táto úprava vytvorila novú stránku.',
+'recentchanges-label-newpage' => 'Táto úprava vytvorila novú stránku',
 'recentchanges-label-minor' => 'Toto je drobná úprava',
-'recentchanges-label-bot' => 'Túto úpravy vykonal robot',
+'recentchanges-label-bot' => 'Túto úpravu vykonal bot',
 'recentchanges-label-unpatrolled' => 'Táto úprava zatiaľ nebola strážená',
+'recentchanges-label-plusminus' => 'Veľkosť stránky sa zmenila o toľkoto bajtov',
+'recentchanges-legend-heading' => "'''Legenda:'''",
 'recentchanges-legend-newpage' => '(pozri tiež [[Special:NewPages|zoznam nových stránok]])',
-'rcnote' => "Tu {{PLURAL:$1|je posledná úprava|sú posledné '''$1''' úpravy|je posledných '''$1''' úprav}} počas {{PLURAL:$2|posledného dňa|posledných '''$2''' dní}} z $4, $5.",
 'rcnotefrom' => "Nižšie sú zobrazené úpravy od '''$2''' (do '''$1''').",
 'rclistfrom' => 'Zobraziť nové úpravy počnúc od $1',
 'rcshowhideminor' => '$1 drobné úpravy',
@@ -2208,10 +2182,8 @@ Každý riadok obsahuje odkaz na prvé a druhé presmerovanie a tiež prvý riad
 'protectedpages' => 'Zamknuté stránky',
 'protectedpages-indef' => 'Zamknutia iba na neurčito',
 'protectedpages-cascade' => 'Iba kaskádové zamykanie',
-'protectedpagestext' => 'Upravovanie alebo presúvanie nasledovných stránok je zamknuté',
 'protectedpagesempty' => 'Momentálne nie sú žiadne stránky s týmito parametrami zamknuté.',
 'protectedtitles' => 'Zamknuté názvy',
-'protectedtitlestext' => 'Možnosť vytvoriť stránky s nasledovnými názvami bola zamknutá',
 'protectedtitlesempty' => 'Tieto parametre momentálne nezamykajú žiadne názvy stránok.',
 'listusers' => 'Zoznam používateľov',
 'listusers-editsonly' => 'Vynechať používateľov bez úprav',
@@ -2264,9 +2236,6 @@ Môžete zúžiť rozsah, ak zvolíte typ záznamu, používateľské meno alebo
 'allpagesto' => 'Zobraziť stránky končiace na:',
 'allarticles' => 'Všetky stránky',
 'allinnamespace' => 'Všetky stránky (menný priestor $1)',
-'allnotinnamespace' => 'Všetky stránky (nie z menného priestoru $1)',
-'allpagesprev' => 'Predchádzajúci',
-'allpagesnext' => 'Ďalší',
 'allpagessubmit' => 'Vykonať',
 'allpagesprefix' => 'Zobraziť stránky začínajúce na:',
 'allpagesbadtitle' => 'Zadaný názov stránky je neplatný alebo mal medzijazykový alebo interwiki prefix. Môže obsahovať jeden alebo viac znakov, ktoré nie je možné použiť v názve stránky.',
@@ -2595,7 +2564,6 @@ Ak bola od zmazania vytvorená nová stránka s rovnakým názvom, obnovené rev
 'undeletebtn' => 'Obnoviť!',
 'undeletelink' => 'zobraziť/obnoviť',
 'undeleteviewlink' => 'zobraziť',
-'undeletereset' => 'Reset',
 'undeleteinvert' => 'Invertovať výber',
 'undeletecomment' => 'Dôvod:',
 'undeletedrevisions' => '{{PLURAL:$1|jedna verzia bola obnovená|$1 verzie boli obnovené|$1 verzií bolo obnovených}}',
@@ -2683,7 +2651,6 @@ Nižšie si môžete pozrieť najnovšiu položku záznamu blokovaní:',
 'block' => 'Zablokovať používateľa',
 'unblock' => 'Odblokovať používateľa',
 'blockip' => 'Zablokovať používateľa',
-'blockip-title' => 'Zablokovať používateľa',
 'blockip-legend' => 'Zablokovať používateľa',
 'blockiptext' => 'Použite tento formulár na zablokovanie možnosti zápisov uskutočnených z konkrétnej IP adresy alebo od používateľa.
 Mali by ste to urobiť len v prípade bránenia vandalizmu a v súlade so [[{{MediaWiki:Policy-url}}|zásadami a smernicami {{GRAMMAR:genitív|{{SITENAME}}}}]].
@@ -2691,7 +2658,6 @@ Nižšie uveďte konkrétny dôvod (napríklad uveďte konkrétne stránky, ktor
 'ipadressorusername' => 'IP adresa/meno používateľa:',
 'ipbexpiry' => 'Ukončenie:',
 'ipbreason' => 'Dôvod:',
-'ipbreasonotherlist' => 'Iný dôvod',
 'ipbreason-dropdown' => '* Bežné dôvody blokovania
 ** Zámerné vkladanie chybných informácií
 ** Mazanie obsahu stránok
@@ -2707,8 +2673,6 @@ Nižšie uveďte konkrétny dôvod (napríklad uveďte konkrétne stránky, ktor
 'ipbsubmit' => 'Zablokovať tohto používateľa',
 'ipbother' => 'Iný čas',
 'ipboptions' => '2 hodiny:2 hours,1 deň:1 day,3 dni:3 days,1 týždeň:1 week,2 týždne:2 weeks,1 mesiac:1 month,3 mesiace:3 months,6 mesiacov:6 months,1 rok:1 year,na neurčito:infinite',
-'ipbotheroption' => 'iný čas',
-'ipbotherreason' => 'Iný/ďalší dôvod',
 'ipbhidename' => 'Skryť meno používateľa z úprav a zoznamov',
 'ipbwatchuser' => 'Sledovať používateľskú a diskusnú stránku tohto používateľa',
 'ipb-disableusertalk' => 'Zabrániť tomuto používateľovi upravovať vlastnú diskusnú stránku, kým je zablokovaný',
@@ -2797,7 +2761,6 @@ blokované IP adresy nie sú zahrnuté. Pozri zoznam
 'sorbsreason' => 'Vaša IP adresa je vedená ako nezabezpečený proxy server v DNSBL.',
 'sorbs_create_account_reason' => 'Vaša IP adresa je vedená ako nezabezpečený proxy server v databáze DNSBL, ktorú používa {{SITENAME}}. Nemôžete si vytvoriť účet.',
 'xffblockreason' => 'IP adresa prítomná v hlavičke X-Forwarded-For patriaca buď vám alebo proxy serveru, ktorý používate, je zablokovaná. Pôvodný dôvod zablokovania bol: $1',
-'cant-block-while-blocked' => 'Nemôžete blokovať iných používateľov, kým ste zablokovaný.',
 'cant-see-hidden-user' => 'Používateľ, ktorého sa pokúšate zablokovať už bol zablokovaný a skrytý. Pretože nemáte právo hideuser, nemôžete vidieť ani upravovať blokovanie používateľa.',
 'ipbblocked' => 'Nemôžete zablokovať ani odblokovať iných používateľov, pretože ste sami zablokovaní',
 'ipbnounblockself' => 'Nie je povolené, aby ste sa sami odblokovali',
@@ -2866,7 +2829,6 @@ ubezpečte sa preto, skôr ako budete pokračovať, že chápete dôsledky svojh
 V takých prípadoch budete musieť, ak si to želáte, premiestniť alebo zlúčiť stránku ručne.",
 'movearticle' => 'Presunúť stránku',
 'moveuserpage-warning' => "'''Upozornenie:''' Chystáte sa presunúť používateľskú stránku. Pamätajte, že týmto presuniete iba stránku a používateľ ''nebude'' premenovaný.",
-'movenologin' => 'Nie ste prihlásený',
 'movenologintext' => 'Musíte byť registrovaný používateľ a [[Special:UserLogin|prihlásený]], aby ste mohli presunúť stránku.',
 'movenotallowed' => 'Nemáte povolenie presúvať stránky.',
 'movenotallowedfile' => 'Nemáte oprávnenie presúvať súbory.',
@@ -2883,11 +2845,6 @@ V takých prípadoch budete musieť, ak si to želáte, premiestniť alebo zlú
 vami zadaný názov je neplatný.
 Prosím, vyberte si iný názov.',
 'cantmove-titleprotected' => 'Nemôžete sem presunúť stránku, pretože nový názov bol zamknutý proti vytvoreniu.',
-'talkexists' => "'''Samotná stránka bola úspešne premiestnená,
-ale diskusná stránka sa nedala premiestniť,
-pretože už jedna existuje pod zadaným novým názvom.
-Prosím, zlúčte ich ručne.'''",
-'movedto' => 'presunutá na',
 'movetalk' => 'Presunúť aj príslušnú diskusnú stránku, ak sa dá.',
 'move-subpages' => 'Presunúť podstránky (maximálne $1)',
 'move-talk-subpages' => 'Presunúť podstránky diskusnej stránky (maximálne $1)',
@@ -3735,15 +3692,10 @@ Ostatné budú predvolene skryté.
 'exif-urgency-high' => 'Vysoká ( $1 )',
 'exif-urgency-other' => 'Používateľom definovaná priorita ($1)',
 
-# External editor support
-'edit-externally' => 'Upraviť tento súbor pomocou externého programu',
-'edit-externally-help' => '(Viac informácií poskytnú inštrukcie pre nastavenie [https://www.mediawiki.org/wiki/Manual:External_editors externého editora])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'všetky',
 'namespacesall' => 'všetky',
 'monthsall' => 'všetky',
-'limitall' => 'všetky',
 
 # Email address confirmation
 'confirmemail' => 'Potvrdiť e-mailovú adresu',
@@ -3768,7 +3720,6 @@ Hlásenie programu, ktorý odosielal poštu: $1',
 'confirmemail_needlogin' => 'Musíte sa $1 na potvrdenie vašej emailovaj adresy.',
 'confirmemail_success' => 'Vaša e-mailová adresa bola potvrdená. Môžete sa prihlásiť a využívať wiki.',
 'confirmemail_loggedin' => 'Vaša e-mailová adresa bola potvrdená.',
-'confirmemail_error' => 'Niečo sa pokazilo pri ukladaní vášho potvrdenia.',
 'confirmemail_subject' => '{{SITENAME}} - potvrdenie e-mailovej adresy',
 'confirmemail_body' => 'Niekto, pravdepodobne vy z IP adresy $1, zaregistroval účet
 „$2“ s touto e-mailovou adresou na {{GRAMMAR:lokál|{{SITENAME}}}}.
@@ -3974,6 +3925,7 @@ Spolu s týmto programom by ste obdržať [{{SERVER}}{{SCRIPTPATH}}/COPYING kóp
 
 # Special:SpecialPages
 'specialpages' => 'Špeciálne stránky',
+'specialpages-note-top' => 'Legenda',
 'specialpages-note' => '* Bežné špeciálne stránky.
 * <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>
 * <span class="mw-specialpagecached">Špeciálne stránky vo vyrovnávacej pamäti (môže byť neaktuálne).</span>',
@@ -4023,7 +3975,6 @@ Spolu s týmto programom by ste obdržať [{{SERVER}}{{SCRIPTPATH}}/COPYING kóp
 
 # Special:ComparePages
 'comparepages' => 'Porovnať stránky',
-'compare-selector' => 'Porovnať revízie stránky',
 'compare-page1' => 'Stránka 1',
 'compare-page2' => 'Stránka 2',
 'compare-rev1' => 'Revízia 1',
index 2d2e45b..381b4c7 100644 (file)
@@ -48,7 +48,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'StarodavneStrani' ),
        'Blankpage'                 => array( 'PraznaStran' ),
        'Block'                     => array( 'Blokiraj', 'BlokirajIP', 'BlokirajUporabnika' ),
-       'Blockme'                   => array( 'BlokirajMe' ),
        'Booksources'               => array( 'ViriKnjig' ),
        'BrokenRedirects'           => array( 'PretrganePreusmeritve' ),
        'Categories'                => array( 'Kategorije' ),
@@ -56,7 +55,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Prispevki' ),
        'CreateAccount'             => array( 'Registracija' ),
        'DeletedContributions'      => array( 'IzbrisaniPrispevki' ),
-       'Disambiguations'           => array( 'Razločitve' ),
        'DoubleRedirects'           => array( 'DvojnePreusmeritve' ),
        'Export'                    => array( 'Izvozi' ),
        'Fewestrevisions'           => array( 'NajmanjRedakcij' ),
@@ -210,7 +208,6 @@ $messages = array(
 'tog-minordefault' => 'Vsa urejanja označi kot manjša',
 'tog-previewontop' => 'Prikaži predogled pred urejevalnim poljem',
 'tog-previewonfirst' => 'Ob začetku urejanja prikaži predogled',
-'tog-nocache' => 'Onemogoči predpomnenje strani v brskalniku',
 'tog-enotifwatchlistpages' => 'Ob spremembah strani ali datotek mi pošlji e-pošto',
 'tog-enotifusertalkpages' => 'Pošlji e-pošto ob spremembah moje pogovorne strani',
 'tog-enotifminoredits' => 'Pošlji e-pošto tudi za manjše spremembe strani in datotek',
@@ -345,7 +342,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Možnosti strani',
 'qbmyoptions' => 'Moje strani',
-'qbspecialpages' => 'Posebne strani',
 'faq' => 'Najpogostejša vprašanja',
 'faqpage' => 'Project:Najpogostejša vprašanja',
 
@@ -464,8 +460,8 @@ $1',
 'youhavenewmessages' => 'Imate $1 ($2)',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugega uporabnika|$3 uporabnikov}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od veliko uporabnikov ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novo sporočilo|nova sporočila}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|zadnja sprememba|zadnji spremembi|zadnje spremembe}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novo sporočilo|999=nova sporočila}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|zadnja sprememba|999=zadnje spremembe}}',
 'youhavenewmessagesmulti' => 'Na $1 imate novo sporočilo',
 'editsection' => 'uredi',
 'editold' => 'spremeni',
@@ -563,9 +559,6 @@ Morda vsebuje enega ali več nepodprtih znakov.',
 'perfcached' => 'Navedeni podatki so shranjeni v predpomnilniku in morda niso popolnoma posodobljeni. V predpomnilniku {{PLURAL:$1|je|sta|so|je}} na razpolago največ $1 {{PLURAL:$1|rezultat|rezultata|rezultate|rezultatov}}.',
 'perfcachedts' => 'Prikazani podatki so shranjeni v predpomnilniku in so bili zadnjič osveženi $1. V predpomnilniku {{PLURAL:$4|je|sta|so|je}} na razpolago največ $4 {{PLURAL:$4|rezultat|rezultata|rezultate|rezultatov}}.',
 'querypage-no-updates' => 'Posodobitve za to stran so trenutno onemogočene. Tukajšnji podatki se v kratkem ne bodo osvežili.',
-'wrong_wfQuery_params' => 'Nepravilni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Poizvedba: $2',
 'viewsource' => 'Izvorno besedilo',
 'viewsource-title' => 'Ogled vira $1',
 'actionthrottled' => 'Dejanje zaustavljeno',
@@ -598,7 +591,8 @@ Administrator, ki ga je zaklenil, je podal naslednje pojasnilo: »$3«.',
 'invalidtitle-knownnamespace' => 'Neveljaven naslov z imenskim prostorom »$2« in besedilom »$3«',
 'invalidtitle-unknownnamespace' => 'Neveljaven naslov z neznano številko imenskega prostora $1 in besedilom »$2«',
 'exception-nologin' => 'Niste prijavljeni',
-'exception-nologin-text' => 'Izbrana stran ali dejanje zahteva, da ste na tem wikiju prijavljeni.',
+'exception-nologin-text' => 'Prosimo, [[Special:Userlogin|prijavite se]], da lahko dostopate do strani ali dejanja.',
+'exception-nologin-text-manual' => 'Da lahko dostopate do strani ali dejanja, se morate $1.',
 
 # Virus scanner
 'virus-badscanner' => "Slaba konfiguracija: neznani virus skener: ''$1''",
@@ -698,7 +692,7 @@ Preverite črkovanje.',
 'passwordtooshort' => 'Geslo mora imeti najmanj $1 {{PLURAL:$1|znak|znaka|znake|znakov|znakov}}.',
 'password-name-match' => 'Vaše geslo se mora razlikovati od vašega uporabniškega imena.',
 'password-login-forbidden' => 'Uporaba tega uporabniškega imena in gesla je prepovedana.',
-'mailmypassword' => 'Pošlji mi novo geslo',
+'mailmypassword' => 'Ponastavitev gesla',
 'passwordremindertitle' => 'Novo začasno geslo za {{GRAMMAR:tožilnik|{{SITENAME}}}}',
 'passwordremindertext' => 'Nekdo (verjetno vi, z IP-naslova $1) je zahteval novo
 prijavno geslo za {{GRAMMAR:tožilnik|{{SITENAME}}}} ($4). Ustvarjeno je
@@ -754,7 +748,7 @@ Prosimo, počakajte $1, preden poskusite znova.',
 'user-mail-no-body' => 'Poskušali ste poslati e-pošto s prazno ali nerazumno kratko vsebino.',
 
 # Change password dialog
-'resetpass' => 'Spremeni geslo',
+'changepassword' => 'Zamenjava gesla',
 'resetpass_announce' => 'Trenutno ste prijavljeni z začasno e-poštno kodo.
 Za zaključitev prijave, morate tukaj nastaviti novo geslo:',
 'resetpass_text' => '<!-- Namesto te vrstice vstavite besedilo -->',
@@ -776,7 +770,7 @@ Morda ste že uspešno spremenili geslo ali pa ste zahtevali novo začasno geslo
 # Special:PasswordReset
 'passwordreset' => 'Ponastavitev gesla',
 'passwordreset-text-one' => 'Da ponastavite svoje geslo, izpolnite naslednji obrazec.',
-'passwordreset-text-many' => '{{PLURAL:$1|Da ponastavite svoje geslo, izpolnite eno od polj.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Da po e-pošti prejmete začasno geslo, izpolnite eno od polj.}}',
 'passwordreset-legend' => 'Ponastavitev gesla',
 'passwordreset-disabled' => 'Ponastavljanje gesla je na tem wikiju onemogočeno.',
 'passwordreset-emaildisabled' => 'Na tem wikiju so možnosti e-pošte onemogočene.',
@@ -861,7 +855,7 @@ To storite, če ste po nesreči žetone z nekom delili, ali če je bil vaš rač
 # Edit pages
 'summary' => 'Povzetek urejanja:',
 'subject' => 'Zadeva/naslov:',
-'minoredit' => 'Manjše urejanje',
+'minoredit' => 'manjše urejanje',
 'watchthis' => 'Opazuj članek',
 'savearticle' => 'Shrani stran',
 'preview' => 'Predogled',
@@ -1081,6 +1075,9 @@ Naslednji argumenti so bili izpuščeni.",
 'cantcreateaccount-text' => "Registracije z IP-naslova ('''$1''') je administrator(ka) [[User:$3|$3]] blokiral(a).
 
 Razlog, ki ga je $3 podal(a), je ''$2''.",
+'cantcreateaccount-range-text' => "Ustvarjanje računov z IP-naslovov v območju '''$1''', ki vključuje vaš IP-naslov ('''$4'''), je blokiral(-a) [[User:$3|$3]].
+
+Razlog, ki ga je podal(-a) $3, je ''$2''.",
 
 # History pages
 'viewpagelogs' => 'Poglej dnevniške zapise o strani',
@@ -1149,10 +1146,6 @@ To redakcijo si lahko ogledate; podrobnosti lahko najdete v [{{fullurl:{{#Specia
 'revisiondelete' => 'Izbriši/obnovi redakcije',
 'revdelete-nooldid-title' => 'Napačna ciljna redakcija',
 'revdelete-nooldid-text' => 'Bodisi niste navedli ciljne spremembe, navedena sprememba ne obstaja, ali pa poskušate skriti trenutno spremembo.',
-'revdelete-nologtype-title' => 'Tip dnevnik ni podan',
-'revdelete-nologtype-text' => 'Niste navedli vrste dnevnika za prikaz.',
-'revdelete-nologid-title' => 'Neveljaven dnevniški vnos',
-'revdelete-nologid-text' => 'Bodisi niste navedli ciljnega dnevniškega dogodka za izvedbo funkcije, ali pa naveden vnos ne obstaja.',
 'revdelete-no-file' => 'Navedena datoteka ne obstaja.',
 'revdelete-show-file-confirm' => 'Ali ste prepričani da si želite ogledati izbrisano verzijo datoteke "<nowiki>$1</nowiki>" od $2 ob $3?',
 'revdelete-show-file-submit' => 'Da',
@@ -1186,8 +1179,6 @@ $1",
 'logdelete-failure' => "'''Vidnost dnevnika ne more biti nastavljena!:'''
 $1",
 'revdel-restore' => 'Spremeni vidnost',
-'revdel-restore-deleted' => 'izbrisane redakcije',
-'revdel-restore-visible' => 'vidne redakcije',
 'pagehist' => 'Zgodovina strani',
 'deletedhist' => 'Zgodovina brisanja',
 'revdelete-hide-current' => 'Napaka pri skrivanju predmeta z dne $1, $2: gre za trenutno redakcijo.
@@ -1267,12 +1258,8 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 # Search results
 'searchresults' => 'Izid iskanja',
 'searchresults-title' => 'Zadetki za povpraševanje »$1«',
-'searchresulttext' => 'Za več informacij o iskanju v {{GRAMMAR:dajalnik|{{SITENAME}}}} si oglejte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Za povpraševanje »'''[[:$1]]'''« ([[Special:Prefixindex/$1|vse strani začenši z »$1«]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|vse strani, ki se povezujejo na »$1«]])",
-'searchsubtitleinvalid' => "Iskali ste '''$1'''",
 'toomanymatches' => 'Vrnjenih je bilo preveč zadetkov, poskusite z drugačno poizvedbo',
 'titlematches' => 'Ujemanje z naslovom članka',
-'notitlematches' => 'Iskanih besed ne vsebuje noben naslov članka',
 'textmatches' => 'Ujemanje z besedilom članka',
 'notextmatches' => 'Iskanih besed ne vsebuje nobeno besedilo članka',
 'prevn' => '{{PLURAL:$1|prejšnja|prejšnji|prejšnje|prejšnjih|prejšnjih}} $1',
@@ -1281,10 +1268,8 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'nextn-title' => '{{PLURAL:$1|Naslednji rezultat|Naslednja $1 rezultata|Naslednji $1 rezultati|Naslednjih $1 rezultatov}}',
 'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultate|rezultatov}} na stran',
 'viewprevnext' => 'Prikazujem ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Možnosti za iskanje',
 'searchmenu-exists' => "'''Na tem wikiju obstaja stran »[[:$1]]«'''",
 'searchmenu-new' => "'''Ustvari stran »[[:$1]]« na tem wikiju!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Iskanje strani s to predpono]]',
 'searchprofile-articles' => 'Članki',
 'searchprofile-project' => 'Pomoč in projektne strani',
 'searchprofile-images' => 'Večpredstavnost',
@@ -1305,20 +1290,16 @@ Podrobnosti lahko najdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
 'search-interwiki-default' => '$1 zadetkov:',
 'search-interwiki-more' => '(več)',
 'search-relatedarticle' => 'Podobno',
-'mwsuggest-disable' => 'Onemogoči iskalne predloge',
 'searcheverything-enable' => 'Iskanje po vseh imenskih prostorih',
 'searchrelated' => 'povezano',
 'searchall' => 'vse',
 'showingresults' => "Prikazujem do '''$1''' {{PLURAL:$1|zadetek|zadetka|zadetke|zadetkov}}, začenši s št. '''$2'''.",
 'showingresultsnum' => "Prikazujem '''$3''' {{PLURAL:$3|zadetek|zadetka|zadetke|zadetkov|zadetkov}}, začenši s št. '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Zadetek '''$1''' od '''$3'''|Zadetki '''$1 - $2''' od skupno '''$3'''}} za povpraševanje '''$4'''",
-'nonefound' => "'''Opomba''': neuspešna poizvedovanja so pogosta ob iskanju vsakdanjih besed, na primer ''imeti'' in ''iz'', ki jih ni na seznamu. Ker gre za zelo pogoste besede, boste skoraj zagotovo iskali uspešneje z zožitvijo tematskega področja. Poskusiti dodati predpono ''all:'' in tako iskati po celotni vsebini (vključno  z pogovornimi stranmi, predlogami, itd.) ali pa za predpono uporabite določen imenski prostor.",
 'search-nonefound' => 'Ni bilo zadetkov, ki ustrezajo poizvedbi.',
-'powersearch' => 'Napredno iskanje',
 'powersearch-legend' => 'Napredno iskanje',
 'powersearch-ns' => 'Iskanje v imenskih prostorih:',
 'powersearch-redir' => 'Seznam preusmeritev',
-'powersearch-field' => 'Išči',
 'powersearch-togglelabel' => 'Izberi:',
 'powersearch-toggleall' => 'Vse',
 'powersearch-togglenone' => 'Nič',
@@ -1332,7 +1313,7 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'preferences' => 'Nastavitve',
 'mypreferences' => 'Nastavitve',
 'prefs-edits' => 'Število urejanj:',
-'changepassword' => 'Zamenjava gesla',
+'prefsnologintext2' => 'Za nastavljanje uporabniških nastavitev se morate $1.',
 'prefs-skin' => 'Koža',
 'skin-preview' => 'Predogled',
 'datedefault' => 'Kakor koli',
@@ -1355,13 +1336,11 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'prefs-email' => 'Možnosti e-pošte',
 'prefs-rendering' => 'Videz',
 'saveprefs' => 'Shrani',
-'resetprefs' => 'Počisti neshranjene spremembe',
 'restoreprefs' => 'obnova vseh privzetih nastavitev (v vseh razdelkih)',
 'prefs-editing' => 'Urejanje',
 'rows' => 'Vrstic:',
 'columns' => 'Stolpcev:',
 'searchresultshead' => 'Nastavitve poizvedovanja',
-'resultsperpage' => 'Prikazanih zadetkov na stran:',
 'stub-threshold' => 'Prag označevanja <a href="#" class="stub">škrbin</a> (v bajtih):',
 'stub-threshold-disabled' => 'Onemogočeno',
 'recentchangesdays' => 'Število dni, prikazanih v zadnjih spremembah:',
@@ -1374,7 +1353,6 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
 'localtime' => 'Krajevni čas:',
 'timezoneuseserverdefault' => 'Uporabi privzeti wiki čas ($1)',
 'timezoneuseoffset' => 'Drugo (navedite izravnavo)',
-'timezoneoffset' => 'Izravnava¹:',
 'servertime' => 'Strežniški čas:',
 'guesstimezone' => 'Izpolni iz brskalnika',
 'timezoneregion-africa' => 'Afrika',
@@ -1446,6 +1424,7 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'prefs-tokenwatchlist' => 'Žeton',
 'prefs-diffs' => 'Primerjave',
 'prefs-help-prefershttps' => 'Nastavitev bo začela veljati ob vaši naslednji prijavi.',
+'prefs-tabs-navigation-hint' => 'Namig: Za krmarjenje med zavihki na seznamu zavihkov lahko uporabite levo in desno smerno tipko.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Izgleda veljaven',
@@ -1627,25 +1606,26 @@ Ko vas drugi uporabniki kontaktirajo, jim vašega e-poštnega naslova ne bomo ra
 'recentchanges-summary' => 'Na tej strani lahko spremljate najnovejše spremembe wikija.',
 'recentchanges-noresult' => 'V podanem obdobju nobena sprememba ne ustreza tem merilom.',
 'recentchanges-feed-description' => 'Spremljajte zadnje spremembe wikija prek tega vira.',
-'recentchanges-label-newpage' => 'S tem urejanjem je bila ustvarjena nova stran',
-'recentchanges-label-minor' => 'Manjše urejanje',
-'recentchanges-label-bot' => 'To urejanje je bilo izvedeno z botom',
+'recentchanges-label-newpage' => 's tem urejanjem je uporabnik ustvaril novo stran',
+'recentchanges-label-minor' => 'manjše urejanje',
+'recentchanges-label-bot' => 'urejanje je izvedel bot',
 'recentchanges-label-unpatrolled' => 'Urejanje še ni bilo pregledano',
-'recentchanges-legend-newpage' => '$1 - nova stran',
-'rcnote' => "Prikazujem {{PLURAL:$1|zadnjo spremembo|zadnji '''$1''' spremembi|zadnje '''$1''' spremembe|zadnjih '''$1''' sprememb|zadnjih '''$1''' sprememb}} v {{PLURAL:$2|zadnjem|zadnjih|zadnjih|zadnjih|zadnjih}} '''$2''' {{PLURAL:$2|dnevu|dneh|dneh|dneh|dneh}}, od $5, $4.",
+'recentchanges-label-plusminus' => 'uporabnik je velikost strani spremenil za tolikšno število bajtov',
+'recentchanges-legend-heading' => "'''Legenda:'''",
+'recentchanges-legend-newpage' => '(glej tudi [[Special:NewPages|seznam novih strani]])',
 'rcnotefrom' => "Navedene so spremembe od '''$2''' dalje (prikazujem jih do '''$1''').",
 'rclistfrom' => 'Prikaži spremembe od $1 naprej',
 'rcshowhideminor' => '$1 manjša urejanja',
 'rcshowhidebots' => '$1 bote',
-'rcshowhideliu' => '$1 prijavljene uporabnike',
+'rcshowhideliu' => '$1 registrirane uporabnike',
 'rcshowhideanons' => '$1 brezimne uporabnike',
 'rcshowhidepatr' => '$1 pregledana urejanja',
 'rcshowhidemine' => '$1 moja urejanja',
 'rclinks' => 'Prikaži zadnjih $1 sprememb v zadnjih $2 dneh<br />$3',
 'diff' => 'prim',
 'hist' => 'zgod',
-'hide' => 'Skrij',
-'show' => 'Prikaži',
+'hide' => 'skrij',
+'show' => 'prikaži',
 'minoreditletter' => 'm',
 'newpageletter' => 'N',
 'boteditletter' => 'b',
@@ -1758,6 +1738,8 @@ Prosimo, vrnite se in naložite svojo datoteko pod drugim imenom.
 'file-exists-duplicate' => 'Ta datoteka je dvojnik {{PLURAL:$1|naslednje datoteke|naslednjih datotek}}:',
 'file-deleted-duplicate' => 'Datoteka je identična tej ([[:$1]]), ki je bila predhodno izbrisana.
 Preverite zgodovino brisanja datoteke, preden jo ponovno naložite.',
+'file-deleted-duplicate-notitle' => 'Datoteka, identična tej datoteki, je bila v preteklosti izbrisana in naslov je bil zatrt.
+Poprosite koga, ki ima možnost ogleda podatkov zatrtih datotek, da preveri položaj, preden nadaljujete s ponovnim nalaganjem.',
 'uploadwarning' => 'Opozorilo!',
 'uploadwarning-text' => 'Prosimo, spremenite opis datoteke spodaj in poskusite ponovno.',
 'savefile' => 'Shrani datoteko',
@@ -1920,7 +1902,7 @@ Prosimo, ponovno preverite pravilnost URL-a in delovanje strani.',
 Prosimo, preverite delovanje strani, počakajte kratek čas in poskusite ponovno.
 Morda želite poskusiti ob času manjše zasedenosti.',
 
-'license' => 'Licenciranje:',
+'license' => 'Licenca:',
 'license-header' => 'Licenca',
 'nolicense' => 'Nobeno',
 'license-nopreview' => '(Predogled ni na voljo)',
@@ -2107,6 +2089,7 @@ Sedaj je preusmeritev na [[$2]].',
 'ninterwikis' => '$1 {{PLURAL:$1|medjezikovna povezava|medjezikovni povezavi|medjezikovne povezave|medjezikovnih povezav}}',
 'nlinks' => '$1 {{PLURAL:$1|povezava|povezavi|povezave|povezav|povezav}}',
 'nmembers' => '$1 {{PLURAL:$1|element|elementa|elementi|elementov|elementov}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|element|elementa|elementi|elementov}}',
 'nrevisions' => '$1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij|redakcij}}',
 'nviews' => '$1 {{PLURAL:$1|ogled|ogleda|ogledi|ogledov|ogledov}}',
 'nimagelinks' => 'Uporabljeno na $1 {{PLURAL:$1|strani|straneh}}',
@@ -2145,10 +2128,9 @@ Sedaj je preusmeritev na [[$2]].',
 'protectedpages' => 'Zaščitene strani',
 'protectedpages-indef' => 'Samo neomejene zaščite',
 'protectedpages-cascade' => 'Le kaskadne zaščite',
-'protectedpagestext' => 'Spodaj navedene strani so zaščitene pred urejanjem ali prestavljanjem.',
+'protectedpages-noredirect' => 'Skrij preusmeritve',
 'protectedpagesempty' => 'Nobena stran ni trenutno zaščitena s temi parametri.',
 'protectedtitles' => 'Zaščiteni naslovi',
-'protectedtitlestext' => 'Naslednji naslovi so zaščiteni pred ustvarjanjem',
 'protectedtitlesempty' => 'Noben naslov ni trenutno zaščiten s temi parametri.',
 'listusers' => 'Seznam uporabnikov',
 'listusers-editsonly' => 'Pokaži samo uporabnike z urejanji',
@@ -2199,9 +2181,6 @@ Prosimo, upoštevajte, da se lahko druge spletne strani povezujejo na datoteko z
 'allpagesto' => 'Prikaži strani, ki se končajo na:',
 'allarticles' => 'Vsi članki',
 'allinnamespace' => 'Vse strani (imenski prostor $1)',
-'allnotinnamespace' => 'Vse strani (brez imenskega prostora $1)',
-'allpagesprev' => 'Predhodna',
-'allpagesnext' => 'Naslednja',
 'allpagessubmit' => 'Pojdi',
 'allpagesprefix' => 'Prikaži strani z začetnimi črkami:',
 'allpagesbadtitle' => 'Podan naslov strani je neveljaven oz. ima predpono interjezik ali interwiki.
@@ -2372,9 +2351,9 @@ 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.
+Medtem ko ste prijavljeni, nadaljnjih obvestil ne boste prejemali. Na spisku nadzorov lahko tudi ponastavite zastavice obveščanj za vse spremljane strani.
 
-             Vaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}
+Vaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}
 
 --
 Za spremembo nastavitev e-poštnih obvestil obiščite
@@ -2426,6 +2405,7 @@ Izbris takšnih strani je bil omejen v izogib neželenim motnjam {{GRAMMAR:dativ
 'delete-warning-toobig' => 'Ta stran ima obsežno zgodovino urejanja, tj. čez $1 {{PLURAL:$1|redakcijo|redakciji|redakcije|redakcij}}.
 Njeno brisanje lahko zmoti obratovanje zbirke podatkov {{GRAMMAR:dative|{{SITENAME}}}};
 nadaljujte s previdnostjo.',
+'deleting-backlinks-warning' => "'''Opozorilo:''' Druge strani se povezujejo na stran, ki jo nameravate izbrisati.",
 
 # Rollback
 'rollback' => 'Vrni spremembe',
@@ -2543,7 +2523,6 @@ Morda imate napačno povezavo ali pa je bila redakcija obnovljena ali odstranjen
 'undeletebtn' => 'Obnovi',
 'undeletelink' => 'poglej/obnovi',
 'undeleteviewlink' => 'ogled',
-'undeletereset' => 'Ponastavi',
 'undeleteinvert' => 'Obrni izbor',
 'undeletecomment' => 'Razlog:',
 'undeletedrevisions' => '{{PLURAL:$1|obnovljena $1 redakcija|obnovljeni $1 redakciji|obnovljene $1 redakcije|obnovljenih $1 redakcij}}',
@@ -2575,9 +2554,9 @@ $1',
 
 # Namespace form on various pages
 'namespace' => 'Imenski prostor:',
-'invert' => 'Obrni izbor',
+'invert' => 'obrni izbor',
 'tooltip-invert' => 'Označite to polje, da skrijete spremembe v izbranem imenskem prostoru (in povezanih imenskih prostorih, če je označeno)',
-'namespace_association' => 'Povezan imenski prostor',
+'namespace_association' => 'povezan imenski prostor',
 'tooltip-namespace_association' => 'Označite to polje, da vključite tudi pogovor ali predmetni imenski prostor, povezan z izbranim imenskim prostorom',
 'blanknamespace' => '(Osnovno)',
 
@@ -2633,7 +2612,6 @@ Najnovejši vnos v dnevniku blokad je naveden spodaj:',
 'block' => 'Blokiraj uporabnika',
 'unblock' => 'Odblokiraj uporabnika',
 'blockip' => 'Blokiranje IP-naslova ali uporabniškega imena',
-'blockip-title' => 'Blokiraj uporabnika',
 'blockip-legend' => 'Blokiraj uporabnika',
 'blockiptext' => "Naslednji obrazec vam omogoča, da določenemu IP-naslovu ali uporabniškemu imenu preprečite urejanje.
 To storimo le zaradi zaščite pred nepotrebnim uničevanjem in po [[{{MediaWiki:Policy-url}}|pravilih]].
@@ -2641,7 +2619,6 @@ Vnesite tudi razlog (''na primer'' seznam strani, ki jih je uporabnik po nepotre
 'ipadressorusername' => 'IP-naslov ali uporabniško ime',
 'ipbexpiry' => 'Pretek',
 'ipbreason' => 'Razlog:',
-'ipbreasonotherlist' => 'Drug razlog',
 'ipbreason-dropdown' => '*Razlogi za blokado
 ** vandalizem
 ** dodajanje napačnih/lažnih podatkov
@@ -2657,8 +2634,6 @@ Vnesite tudi razlog (''na primer'' seznam strani, ki jih je uporabnik po nepotre
 'ipbsubmit' => 'Blokiraj naslov',
 'ipbother' => 'Drugačen čas',
 'ipboptions' => '2 uri:2 hours,1 dan:1 day,3 dni:3 days,1 teden:1 week,2 tedna:2 weeks,1 mesec:1 month,3 mesece:3 months,6 mesecev:6 months,1 leto:1 year,neomejeno dolgo:infinite',
-'ipbotheroption' => 'drugo',
-'ipbotherreason' => 'Drug/dodaten razlog:',
 'ipbhidename' => 'Skrij uporabniško ime iz urejanja in seznamov',
 'ipbwatchuser' => 'Nadzoruj uporabnikovo uporabniško in pogovorno stran',
 'ipb-disableusertalk' => 'Med blokado prepreči temu uporabniku urejati lastno pogovorno stran',
@@ -2750,7 +2725,6 @@ Gre za resno varnostno težavo, o kateri obvestite svojega internetnega ponudnik
 'sorbs_create_account_reason' => 'Vaš IP-naslov je v DNSBL, ki ga uporablja {{GRAMMAR:tožilnik|{{SITENAME}}}}, naveden kot odprti posredniški strežnik (proxy).
 Računa žal ne morete ustvariti.',
 'xffblockreason' => 'IP-naslov, prisoten v glavi X-Forwarded-For, ali vaš ali od strežnika proxy, ki ga uporabljate, je blokiran. Izvirni razlog za blokado: $1',
-'cant-block-while-blocked' => 'Ne morete blokirati drugih uporabnikove, medtem ko ste sami blokirani.',
 'cant-see-hidden-user' => 'Uporabnik, ki ga poskušate blokirate, je že blokiran in skrit.
 Ker nimate pravice hideuser, si ne morete ogledati ali urejati uporabnikove blokade.',
 'ipbblocked' => 'Ne morete blokirati ali deblokirati drugih uporabnikov, saj ste sami blokirani',
@@ -2810,7 +2784,6 @@ prosimo, pred nadaljevanjem se prepričajte, da razumete posledice tega dejanja.
 Če je tako, boste morali pogovorno stran, če želite, prestaviti ali povezati ročno.",
 'movearticle' => 'Prestavi stran:',
 'moveuserpage-warning' => "'''Opozorilo:''' Premikate uporabniško stran. To pomeni, da bo premaknjena samo stran in uporabnik ''ne'' bo preimenovan.",
-'movenologin' => 'Niste prijavljeni',
 'movenologintext' => 'Za prestavljanje strani morate biti registrirani in [[Special:UserLogin|prijavljeni]].',
 'movenotallowed' => 'Za prestavljanje strani nimate dovoljenja.',
 'movenotallowedfile' => 'Nimate dovoljenja, da premikate datoteke.',
@@ -2826,9 +2799,6 @@ prosimo, pred nadaljevanjem se prepričajte, da razumete posledice tega dejanja.
 'articleexists' => 'Izbrano ime je že zasedeno ali pa ni veljavno.
 Prosimo, izberite drugo ime.',
 'cantmove-titleprotected' => 'Strani ne morete premakniti na slednjo lokacijo, saj je nov naslov zaščiten pred ustvarjanjem',
-'talkexists' => "'''Sama stran je bila uspešno prestavljena, pripadajoča pogovorna stran pa ne, ker že obstaja na novem naslovu.
-Prosimo, združite ju ročno.'''",
-'movedto' => 'prestavljeno na',
 'movetalk' => 'Prestavi tudi pogovorno stran',
 'move-subpages' => 'Premakni podstrani (do $1)',
 'move-talk-subpages' => 'Premakni podstrani pogovorne strani (do $1)',
@@ -3472,8 +3442,8 @@ Druga bodo po privzetem skrita.
 'exif-planarconfiguration-1' => 'grudast format',
 'exif-planarconfiguration-2' => 'ravninski format',
 
-'exif-xyresolution-i' => '$1 dpi ({{plural:$1|točka/palec|točki/palec|točke/palec|točk/palec|točk/palec}})',
-'exif-xyresolution-c' => '$1 dpc ({{plural:$1|točka/centimeter|točki/centimeter|točke/centimeter|točk/centimeter|točk/centimeter}})',
+'exif-xyresolution-i' => '$1 dpi ({{PLURAL:$1|točka/palec|točki/palec|točke/palec|točk/palec|točk/palec}})',
+'exif-xyresolution-c' => '$1 dpc ({{PLURAL:$1|točka/centimeter|točki/centimeter|točke/centimeter|točk/centimeter|točk/centimeter}})',
 
 'exif-colorspace-65535' => 'Neumerjeno',
 
@@ -3663,15 +3633,10 @@ Druga bodo po privzetem skrita.
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Uporabniško določena prednost ($1)',
 
-# External editor support
-'edit-externally' => 'Uredite datoteko z uporabo zunanjega orodja',
-'edit-externally-help' => '(Za več informacij glejte [https://www.mediawiki.org/wiki/Manual:External_editors navodila za namestitev])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'vse',
 'namespacesall' => 'vse',
 'monthsall' => 'vse',
-'limitall' => 'vse',
 
 # Email address confirmation
 'confirmemail' => 'Potrditev naslova elektronske pošte',
@@ -3692,7 +3657,6 @@ Posrednik e-pošte je vrnil: $1',
 'confirmemail_needlogin' => 'Za potrditev svojega e-poštnega naslova se morate $1.',
 'confirmemail_success' => 'Vaš e-poštni naslov je potrjen. Zdaj se lahko prijavite in uporabljate wiki.',
 'confirmemail_loggedin' => 'Svoj elektronski naslov ste uspešno potrdili.',
-'confirmemail_error' => 'Vaša potrditev se žal ni shranila.',
 'confirmemail_subject' => 'Potrditev e-poštnega naslova',
 'confirmemail_body' => 'Nekdo, verjetno vi, z IP-naslovom $1,
 je v {{GRAMMAR:dajalnik|{{SITENAME}}}} ustvaril račun »$2« in zanj vpisal ta elektronski naslov.
@@ -3776,6 +3740,11 @@ Prosimo, potrdite, da jo resnično želite znova ustvariti.",
 'imgmultigo' => 'Pojdi!',
 'imgmultigoto' => 'Pojdi na stran $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(privzeti jezik)',
+'img-lang-info' => 'Upodobi sliko v $1. $2',
+'img-lang-go' => 'Pojdi',
+
 # Table pager
 'ascending_abbrev' => 'nar',
 'descending_abbrev' => 'pad',
@@ -3816,7 +3785,7 @@ Da odstranite stran, označite kvadratek poleg nje in kliknite »{{int:Watchlist
 Lahko tudi [[Special:EditWatchlist/raw|uredite gol spisek]].',
 'watchlistedit-normal-submit' => 'Odstrani strani',
 'watchlistedit-normal-done' => 'Z vašega spiska nadzorov {{PLURAL:$1|je bila odstranjena $1 stran|sta bili odstranjeni $1 strani|so bile odstranjene $1 strani|je bilo odstranjenih $1 strani}}:',
-'watchlistedit-raw-title' => 'Uredi gol spisek nadzorov',
+'watchlistedit-raw-title' => 'urejanje golega spiska nadzorov',
 'watchlistedit-raw-legend' => 'Uredi gol spisek nadzorov',
 'watchlistedit-raw-explain' => 'Strani na vašem spisku nadzorov so prikazane spodaj in jih lahko urejate z dodajanjem in odstranjevanjem s seznama; vsak naslov je v svoji vrstici.
 Ko končate, kliknite »{{int:Watchlistedit-raw-submit}}«.
@@ -3828,8 +3797,8 @@ Uporabite lahko tudi [[Special:EditWatchlist|standardni urejevalnik]].',
 'watchlistedit-raw-removed' => '{{PLURAL:$1|Odstranjena je bila $1 stran|Odstranjeni sta bili 2 strani|Odstranjene so bile $1 strani|Odstranjenih je bilo $1 strani}}:',
 
 # Watchlist editing tools
-'watchlisttools-view' => 'Oglej si ustrezne spremembe',
-'watchlisttools-edit' => 'Poglej in uredi spisek nadzorov',
+'watchlisttools-view' => 'oglej si ustrezne spremembe',
+'watchlisttools-edit' => 'prikaz in urejanje spiska nadzorov',
 'watchlisttools-raw' => 'Uredi gol spisek nadzorov',
 
 # Signatures
@@ -3855,7 +3824,17 @@ Uporabite lahko tudi [[Special:EditWatchlist|standardni urejevalnik]].',
 'version-hook-name' => 'Ime razširitve',
 'version-hook-subscribedby' => 'Naročen s strani',
 'version-version' => '(Različica $1)',
-'version-license' => 'Licenca',
+'version-license' => 'Dovoljenje MediaWiki',
+'version-ext-license' => 'Dovoljenje',
+'version-ext-colheader-name' => 'Razširitev',
+'version-ext-colheader-version' => 'Različica',
+'version-ext-colheader-license' => 'Dovoljenje',
+'version-ext-colheader-description' => 'Opis',
+'version-ext-colheader-credits' => 'Avtorji',
+'version-license-title' => 'Dovoljenje za $1',
+'version-license-not-found' => 'Za razširitev nismo našli podrobnih informacij o dovoljenju.',
+'version-credits-title' => 'Zasluge za $1',
+'version-credits-not-found' => 'Za razširitev nismo našli podrobnih informacij o zaslugah.',
 'version-poweredby-credits' => "Ta wiki poganja '''[https://www.mediawiki.org/ MediaWiki]''', vse pravice pridržave © 2001-$1 $2.",
 'version-poweredby-others' => 'drugi',
 'version-poweredby-translators' => 'Prevajalci translatewiki.net',
@@ -3875,13 +3854,14 @@ Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Pot skripta]',
 
 # Special:Redirect
-'redirect' => 'Preusmeri po datoteki, uporabniku ali ID-ju redakcije',
+'redirect' => 'Preusmeri po datoteki, uporabniku, strani ali ID-ju redakcije',
 'redirect-legend' => 'Preusmeritev na datoteko ali stran',
-'redirect-summary' => 'Posebna stran preusmeri na datoteko (če podate ime datoteke), stran (če podate ID redakcije) ali uporabniško stran (če podate številski ID uporabnika). Primer: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] ali [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Posebna stran preusmeri na datoteko (če podate ime datoteke), stran (če podate ID redakcije ali ID strani) ali uporabniško stran (če podate številski ID uporabnika). Uporaba: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] ali [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Pojdi',
 'redirect-lookup' => 'Iskanje:',
 'redirect-value' => 'Vrednost:',
 'redirect-user' => 'ID uporabnika',
+'redirect-page' => 'ID strani',
 'redirect-revision' => 'Redakcija strani',
 'redirect-file' => 'Ime datoteke',
 'redirect-not-exists' => 'Vrednosti ni mogoče najti',
@@ -3948,7 +3928,6 @@ Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo
 
 # Special:ComparePages
 'comparepages' => 'Primerjaj strani',
-'compare-selector' => 'Primerjaj redakcije strani',
 'compare-page1' => 'Stran 1',
 'compare-page2' => 'Stran 2',
 'compare-rev1' => 'Redakcija 1',
@@ -4076,6 +4055,7 @@ V nasprotnem primeru lahko uporabite preprost obrazec spodaj. Vašo pripombo bom
 'api-error-overwrite' => 'Prepisovanje obstoječe datoteke ni dovoljeno.',
 'api-error-stashfailed' => 'Notranja napaka: strežnik ni uspel shraniti začasne datoteke.',
 'api-error-publishfailed' => 'Notranja napaka: strežnik ni uspel objaviti začasne datoteke.',
+'api-error-stasherror' => 'Pri nalaganju datoteke v hrambo je prišlo do napake.',
 'api-error-timeout' => 'Strežnik se ni odzval v pričakovanem času.',
 'api-error-unclassified' => 'Prišlo je do neznane napake',
 'api-error-unknown-code' => 'Neznana napaka: »$1«',
@@ -4125,10 +4105,12 @@ Pravzaprav razširi skoraj vse v dvojnih zavitih oklepajih.',
 'expand_templates_input' => 'Vhodno besedilo:',
 'expand_templates_output' => 'Rezultat',
 'expand_templates_xml_output' => 'Izhod XML',
+'expand_templates_html_output' => 'Surovi izhod HTML',
 'expand_templates_ok' => 'V redu',
 'expand_templates_remove_comments' => 'Odstrani komentarje',
 'expand_templates_remove_nowiki' => 'V rezultatu odstrani oznake <nowiki>',
 'expand_templates_generate_xml' => 'Pokaži razčlenitveno drevo XML',
+'expand_templates_generate_rawhtml' => 'Prikaži surovi HTML',
 'expand_templates_preview' => 'Predogled',
 
 );
index 91e34a7..3df405e 100644 (file)
@@ -47,7 +47,6 @@ $messages = array(
 'tog-minordefault' => 'Eegene Änderunga standardmäßig als geringfiegich markiern',
 'tog-previewontop' => 'Vurschau uberhoalb voo dam Beoarbeetungsfanster oazäan',
 'tog-previewonfirst' => 'Beim erschta Bearbta emmer de Vurschau oazeiga',
-'tog-nocache' => 'Zwischaspeicharn derr Seite (eim cache) deaktiviern',
 'tog-enotifwatchlistpages' => 'Bei Änderunga voo beobachteta Seyta mer an E-mail schicka',
 'tog-enotifusertalkpages' => 'Bei Änderunga oa menner Benutzer-Dischkurseite E-mail oa mich schicka',
 'tog-enotifminoredits' => 'Au bei klenn Änderunga E-mail oa mich schicka',
@@ -159,7 +158,6 @@ $messages = array(
 'qbedit' => 'Ändern',
 'qbpageoptions' => 'Seytaoptiona',
 'qbmyoptions' => 'Menne Seyta',
-'qbspecialpages' => 'Spezialseyta',
 'faq' => 'FAQ',
 
 # Vector skin
@@ -320,9 +318,6 @@ Meeglicherweise wurde se bereits vu jemand anders entfernt.',
 'perfcached' => 'De folgenden Daten stomma oaus damm Cache und sein meegliecherweise nee aktuell. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Diese Daten stomma oaus damm Cache, letztes Update: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "'''De Aktualisierungsfunktion fier diese Seite ies zurzeit deaktiviert. De Daten waan bis uff Weiteres nee erneuert.'''",
-'wrong_wfQuery_params' => 'Foalsche Parameter fier wfQuery()<br />
-Funksjonn: $1<br />
-Abfroage: $2',
 'viewsource' => 'Quelltext oasahn',
 'actionthrottled' => 'Aksjonszoahl limmetiert',
 'actionthrottledtext' => 'Du host diese Aksjonn zu uffte innerholb annes korza Zeitraums ausgeführt. Bitte woarte a poar Minuta und probiere is doann erneut.',
@@ -426,7 +421,7 @@ Bitte warte, bevor du is erneut probierst.',
 'loginlanguagelabel' => 'Sproache: $1',
 
 # Change password dialog
-'resetpass' => 'Passwurt ändern',
+'changepassword' => 'Poaßwurt ändern',
 'resetpass_announce' => "Anmeldung mi'm per E-Mail zugesandten Code. Im de Anmeldung abzuschließa, mußt du jitz a neues Poaßwurt wähla.",
 'resetpass_header' => 'Passwurt ändern',
 'oldpassword' => 'Aales Passwurt:',
@@ -666,8 +661,6 @@ Administratorn kinna se eensahn; Details stiehn eim [{{fullurl:{{#Special:Log}}/
 'revisiondelete' => 'Versiona löscha/wiederherstella',
 'revdelete-nooldid-title' => 'Keene Version oangegeba',
 'revdelete-nooldid-text' => 'Du host entweder kenne Version oagegahn, uff de diese Aksjonn ausgefiehrt waan sull, de gewählte Version ies ne vorhanden oder du versichst, de aktuelle Version zu entferna.',
-'revdelete-nologtype-title' => 'Kee Logtyp oagegahn',
-'revdelete-nologid-title' => 'Ungiltiger Logeentrag',
 'revdelete-no-file' => 'De oagegeahne Datei existiert ne.',
 'revdelete-show-file-submit' => 'Ju',
 'revdelete-selected' => "'''{{PLURAL:$2|Ausgewählte Version|Ausgewählte Versionen}} vu [[:$1]]:'''",
@@ -692,8 +685,6 @@ $1",
 'logdelete-failure' => "'''Logbuchsichtbarkeit koan ne geändert waan:'''
 $1",
 'revdel-restore' => 'Sichtbarkeit ändern',
-'revdel-restore-deleted' => 'gelöschte Versionen',
-'revdel-restore-visible' => 'sichtbare Versionen',
 'deletedhist' => 'Geläschte Versiona',
 'revdelete-modify-missing' => "Fahler beim Bearbta vu ID $1: 'S fahlt ei der Datenbank!",
 'revdelete-no-change' => "'''Warnung:''' Dar Eentrag vum $1, $2 Seeger besitzt bereits de gewüischta Sichtbarkeitseenstallunga.",
@@ -743,12 +734,8 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 # Search results
 'searchresults' => 'Sichergebnisse',
 'searchresults-title' => 'Suchergebnisse fier "$1"',
-'searchresulttext' => 'Fier meh Informationen zur Suche siehe de [[{{MediaWiki:Helppage}}|Hilfeseite]].',
-'searchsubtitle' => 'Denne Sichoafroage: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|olle miet „$1“ beginnenda Seyta]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|olle Seyta, de noach „$1“ verlinka]])',
-'searchsubtitleinvalid' => 'Denne Sichoafroage: „$1“.',
 'toomanymatches' => 'De Oazoahl dar Sichergebnisse ies zu gruß, bitte versiche anne andere Obfroage.',
 'titlematches' => 'Iebereinstimmunga miet Seytatitteln',
-'notitlematches' => 'Kenne Iebereinstimmunga miet Seytatitteln',
 'textmatches' => 'Iebereinstimmunga miet Inhalta',
 'notextmatches' => 'Kenne Iebereinstimmunga miet Inhalta',
 'prevn' => 'vurherige {{PLURAL:$1|$1}}',
@@ -757,10 +744,8 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'nextn-title' => '{{PLURAL:$1|Folgendes Ergebnis|Folgende $1 Ergebnisse}}',
 'shown-title' => 'Zeige $1 {{PLURAL:$1|Ergebnis|Ergebnisse}} pro Seite',
 'viewprevnext' => 'Zeige ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Suchoptiona',
 'searchmenu-exists' => "'''Is gitt anne Seite, de den Noama „[[:$1]]“ hoot'''",
 'searchmenu-new' => "'''Erstalle de Seite „[[:$1|$1]]“ ei diesem Wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Zeige olle Seyta, de miet damm Sichbegriff oafanga]]',
 'searchprofile-articles' => 'Inhaltsseyta',
 'searchprofile-project' => 'Helfe on Projektseyta',
 'searchprofile-images' => 'Multimedia',
@@ -777,17 +762,14 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'search-section' => '(Obschnitt $1)',
 'search-suggest' => 'Meitest du „$1“?',
 'search-interwiki-caption' => 'Schwasterprujätte',
-'mwsuggest-disable' => 'Vurschläge per Ajax deaktiviern',
 'searchrelated' => 'verwandt',
 'searchall' => 'olle',
 'showingresults' => "Hier {{PLURAL:$1|ies '''1''' Ergebnis|sein '''$1''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
 'showingresultsnum' => "Hier {{PLURAL:$3|ies '''1''' Ergebnis|sein '''$3''' Ergebnisse}}, beginnend miet Nummer '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ergebnis '''$1''' vu '''$3'''|Ergebnisse '''$1–$2''' vu '''$3'''}} fier '''$4'''",
-'nonefound' => "'''Hinweis:''' Is waan standardmäßig ocke eenige Noamensräume dorchsucht. Setze ''all:'' vur denn Suchbegriff, im olle Seita (inkl. Diskussionsseiten, Vorlagen usw.) zu dorchsucha oder gezielt dan Noama des zu dorchsuchenden Noamensraumes.",
 'search-nonefound' => 'Fier denne Sichoafroage wurden kenne Ergebnisse gefunda.',
 'powersearch-ns' => 'Suche ei Noamasräuma:',
 'powersearch-redir' => 'Weiterleitunga oanzeega:',
-'powersearch-field' => 'Suche noach:',
 'powersearch-toggleall' => 'Olle',
 'powersearch-togglenone' => 'Kenne',
 'searchdisabled' => 'De {{SITENAME}}-Suche ies deaktiviert. Du koast underdessa miet Google sucha. Bitte bedenke, doaß der Suchindex fier {{SITENAME}} veraltet sei koan.',
@@ -796,7 +778,6 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'preferences' => 'Eenstellunga',
 'mypreferences' => 'Meene Eistellunga',
 'prefs-edits' => 'Oazoahl dar Beoarbeetunga:',
-'changepassword' => 'Poaßwurt ändern',
 'prefs-personal' => 'Nutzerdaten',
 'prefs-rc' => 'Letzte Änderunga',
 'prefs-watchlist-days' => 'Oazoahl dar Tage, de de Beobachtungsliste standardmäßig umfassa sull:',
@@ -816,7 +797,6 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'savedprefs' => 'Denne Einstallunga waan gespeichert.',
 'localtime' => 'Urtszeit:',
 'timezoneuseoffset' => 'Andere (Underschied oagahn)',
-'timezoneoffset' => 'Underschied¹:',
 'servertime' => "Aktuelle Zeit uff'm Server:",
 'guesstimezone' => 'Vum Browser iebernahma',
 'timezoneregion-africa' => 'Offreka',
@@ -986,7 +966,6 @@ Stelle sicher, doaß de Versionsgeschichte anner Seite historisch korrekt ies.',
 'recentchanges-label-bot' => "Änderung durch an'n Bot",
 'recentchanges-label-unpatrolled' => 'Nicht-kontrollierte Änderung',
 'recentchanges-legend-newpage' => '$1 - neue Seite',
-'rcnote' => "Oagezeegt {{PLURAL:$1|wird '''1''' Ännerong|waan de letzta '''$1''' Änneronga}} {{PLURAL:$2|des letzta Taages|dar letzta '''$2''' Taage}}. Stand: $4, $5. (<b><tt>N</tt></b>&nbsp;– neuer Eentrag; <b><tt>K</tt></b>&nbsp;– kleene Ännerong; <b><tt>B</tt></b>&nbsp;– Ännerong dorch eena Bot; ''(± Zoahl)''&nbsp;– Greeßaännerong ei Byte)",
 'rcnotefrom' => "Oagezeigt waan de Änderunga seit '''$2''' (max. '''$1''' Einträge).",
 'rclistfrom' => 'Oack Änneronga seit $1 zeiga.',
 'rcshowhideminor' => 'Klenne Änderunga $1',
@@ -1251,10 +1230,8 @@ Jede Zeile enthält Links zu dar erschta und zweeta Wetterleitung suwie doas Zie
 'protectedpages' => 'Geschitzte Seyta',
 'protectedpages-indef' => 'Ock unbeschränkt geschitzte Seyta zeiga',
 'protectedpages-cascade' => 'Ock Seyta miet Kaskadenschutz',
-'protectedpagestext' => "Diese Spezialseite zeigt olle vur 'm Verschieba oder Beorbta geschitzta Seita.",
 'protectedpagesempty' => 'Aktuell sein kenne Seyta miet diesen Parametern geschitzt.',
 'protectedtitles' => 'Gesperrte Tittel',
-'protectedtitlestext' => 'De folgenden Tittel wurden zur Neuerstellung gesperrt.',
 'protectedtitlesempty' => 'Zurzeit sein miet dann oagegebena Parametern kenne Seyta zur Neuerstellung gesperrt.',
 'listusers' => 'Nutzerverzeichnis',
 'listusers-editsonly' => 'Zeige ock Nutzer miet Beiträga',
@@ -1301,8 +1278,6 @@ De Ausgabe koan durch de Auswoahl des Logbuchtyps, des Nutzers oder des Seytatit
 'allpagesto' => 'Seita oazeega bis:',
 'allarticles' => 'Olle Seyta',
 'allinnamespace' => 'Olle Seyta (Noamasraum: $1)',
-'allnotinnamespace' => 'Olle Seyta (ne eim $1 Noamasraum)',
-'allpagesprev' => 'Vurherige',
 'allpagessubmit' => 'Oawenda',
 'allpagesprefix' => 'Seyta oazeiga mit Präfix:',
 'allpagesbadtitle' => 'Dar eingegebene Seytanoame ies ungiltig: Ar hoot entweder a vorangestelltes Sproach-, a Interwiki-Kürzel oder enthält a oder mehrere Zeichen, welche in Seytanoama ne verwendet waan dirfa.',
@@ -1624,7 +1599,6 @@ Dies sullte ock erfolga, im Vandalismus zu verhindern und ei Iebereinstimmung mi
 Bitte gib dann Grund fier de Sperre oa.",
 'ipadressorusername' => 'IP-Atresse oder Benutzernoame:',
 'ipbreason' => 'Begriendung:',
-'ipbreasonotherlist' => 'Andere Begrindung',
 'ipbreason-dropdown' => '* Allgemeene Sperrgrinde
 ** Eenfiega foalscher Informationen
 ** Laara vu Seita
@@ -1639,8 +1613,6 @@ Bitte gib dann Grund fier de Sperre oa.",
 'ipbsubmit' => 'IP-Atresse/Benutzer sperra',
 'ipbother' => 'Ondere Dauer (englsch):',
 'ipboptions' => '2 Stonda:2 hours,1 Taag:1 day,3 Taage:3 days,1 Wuche:1 week,2 Wucha:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joahr:1 year,Unbeschränkt:infinite',
-'ipbotheroption' => 'Oandere Dauer',
-'ipbotherreason' => 'Andere/ergänzende Begrindung:',
 'ipbhidename' => 'Nutzernoame ei Beoarbeetunga und Listen verstecka',
 'ipbwatchuser' => 'Nutzer(dischkur)seite beobachta',
 'ipb-change-block' => 'Sperre miet diesen Sperrparametern erneuern',
@@ -1694,7 +1666,6 @@ Siehe de [[Special:BlockList|Liste dar gesperrta IP-Atressa und Nutzernoama]] fi
 'proxyblockreason' => 'Denne IP-Atresse wurde gesperrt, do se a offener Proxy ies. Bitte kontaktiere denn Internet-Provider oder denne Systemadministratoren und informiere se ieber dieses meegliche Sicherheetsproblem.',
 'sorbsreason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet.',
 'sorbs_create_account_reason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet. Doas Oalega neuer Nutzer ies ne meeglich.',
-'cant-block-while-blocked' => 'Du koast kenne andern Nutzer sperra, während du selbst gesperrt best',
 
 # Developer tools
 'lockdb' => 'Datenbank sperra',
@@ -1734,7 +1705,6 @@ Ei diesa Fäll muußt du, foalls gewinscht, den Inhalt der Seite vu Hand verschi
 
 Bitte den '''neua''' Tittel under '''Ziel''' eintraga, darunder de Umbenennung bitte '''begrienda.'''",
 'movearticle' => 'Seite verschieba:',
-'movenologin' => 'Nä oangemeldet',
 'movenologintext' => 'Du muoßt a registrierter Nutzer und [[Special:UserLogin|oagemeldet]] sei, im anne Seite zu verschieba.',
 'movenotallowed' => 'Du host kenne Berechtigung, Seyta zu verschieba.',
 'cant-move-user-page' => 'Du host kenne Berechtigung, Nutzerhauptseyta zu verschieba.',
@@ -1744,8 +1714,6 @@ Bitte den '''neua''' Tittel under '''Ziel''' eintraga, darunder de Umbenennung b
 'movepage-moved' => "'''De Seite „$1“ wurde noach „$2“ verschoba.'''",
 'articleexists' => 'Under diesem Noama existiert bereits anne Seite. Bitte wähle anna andern Noama.',
 'cantmove-titleprotected' => 'De Verschiebung koan ne durchgefiehrt waan, do dar Zieltittel zur Erstellung gesperrt ies.',
-'talkexists' => "De Seite selbst wurde erfulgreich verschoba, oaber de zugeheerige Dischkursseite nee, doo bereits anne mit 'm neua Tittel existiert. Bitte gleiche de Inhalte vu Hand ob.",
-'movedto' => 'verschoba noach',
 'movetalk' => 'De Dischkurseite mitverschieba, wenn meegliech',
 'move-subpages' => 'Underseita verschieba (bis zu $1)',
 'move-talk-subpages' => 'Underseita dar Dischkurseite verschieba (bis zu $1)',
@@ -2135,15 +2103,10 @@ Weitere werden standardmäßig nicht angezeigt.
 
 'exif-gpsstatus-v' => 'Interoperabilität vu Messunga',
 
-# External editor support
-'edit-externally' => 'Diese Datei mit annem externen Programm bearbta',
-'edit-externally-help' => '(Siehe de [https://www.mediawiki.org/wiki/Manual:External_editors Installationsoaweisunga] fier weitere Informationen)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'olle',
 'namespacesall' => 'olle',
 'monthsall' => 'olle',
-'limitall' => 'olle',
 
 # Email address confirmation
 'confirmemail' => 'E-Mail-Atresse bestätiga (Authentifizierung)',
@@ -2161,7 +2124,6 @@ Rickmeldung des Mailservers: $1',
 'confirmemail_needlogin' => 'Du musst diech $1, im denne E-Mail-Atresse zu bestätiga.',
 'confirmemail_success' => 'Denne E-Mail-Atresse wurde erfolgreich bestätigt. Du koast diech jitz [[Special:UserLogin|oamelda]].',
 'confirmemail_loggedin' => 'Denne E-Mail-Atresse wurde erfolgreich bestätigt.',
-'confirmemail_error' => "Is gab an'n Fahler bei dar Bestätigung denner E-Mail-Atresse.",
 'confirmemail_subject' => '[{{SITENAME}}] - Bestätigung dar E-Mail-Atresse',
 'confirmemail_body' => 'Hallo,
 
index 137ffc4..38d3f51 100644 (file)
@@ -84,7 +84,7 @@ $messages = array(
 'jumptonavigation' => 'Ulifolau',
 'jumptosearch' => "Su'e",
 
-# 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).
+# 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).
 'currentevents' => 'Tala Fou',
 'currentevents-url' => 'Project:Tala Fou',
 'edithelp' => 'Fesoasoani e teuteu',
@@ -94,7 +94,6 @@ $messages = array(
 'portal-url' => 'Project:Vaega mo Tagata Lautele',
 
 'youhavenewmessages' => "'Ua iai lau $1 ($2).",
-'newmessageslink' => "Poloa'i fou",
 'youhavenewmessagesmulti' => "'Ua iai au fe'au fou i le $1",
 'editsection' => 'Teuteu',
 'editold' => 'Teuteu',
@@ -126,9 +125,6 @@ $messages = array(
 'showdiff' => "Fa'aali suiga",
 'loginreqlink' => "Fa'aola",
 
-# Search results
-'powersearch' => "Su'e",
-
 # Preferences page
 'mypreferences' => "Mea 'ou te fiafia i ai",
 'searchresultshead' => "Su'e",
@@ -167,7 +163,7 @@ $messages = array(
 # Special:AllPages
 'allpagessubmit' => 'Alu',
 
-# E-mail user
+# Email user
 'emailuser' => "'Imeli mai le tagata lenei",
 'emailmessage' => "Fe'au",
 
@@ -190,13 +186,9 @@ $messages = array(
 # What links here
 'whatlinkshere' => "Nofoaga e soso'o mai",
 
-# Block/unblock
-'proxyblocksuccess' => "Mae'a.",
-
 # Move page
 'move-page-legend' => "Si'i le itulau",
 'movearticle' => "Si'i le itulau",
-'movenologin' => "Le'i fa'aolaina",
 'newtitle' => "'I le ulutala fou",
 'move-watch' => 'Matau lenei itulau',
 'movepagebtn' => "Si'i le itulau",
index 42fa0c0..d017102 100644 (file)
@@ -97,7 +97,6 @@ $messages = array(
 'qbedit' => 'Värrhtoedimmie',
 'qbpageoptions' => 'Dïhte bielie',
 'qbmyoptions' => 'Mov bielieh',
-'qbspecialpages' => 'Joekoelaakan bielieh',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -143,7 +142,7 @@ $messages = array(
 'jumptonavigation' => 'navigasjovne',
 'jumptosearch' => 'ohtsedh',
 
-# 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).
+# 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).
 'aboutsite' => '{{SITENAME}}en bïjre',
 'aboutpage' => 'Project:Bïjre',
 'copyrightpage' => '{{ns:project}}:Bäjjesereaktah',
@@ -152,7 +151,6 @@ $messages = array(
 'disclaimers' => 'Friijavuohte vastideamis',
 'disclaimerpage' => 'Project:Bäjjesereaktah',
 'edithelp' => 'Sjiehtedimmie viehkie',
-'edithelppage' => 'Help:Sjiehtedimmie',
 'helppage' => 'Help:Sisvege',
 'mainpage' => 'Aalkoebielie',
 'mainpage-description' => 'Aalkoebielie',
@@ -163,8 +161,6 @@ $messages = array(
 
 'retrievedfrom' => 'Raejeste "$1" vïedtjeme',
 'youhavenewmessages' => 'Datne åtna $1 ($2).',
-'newmessageslink' => 'orre bïjre',
-'newmessagesdifflink' => 'minngemes värrhtoedimmie',
 'editsection' => 'sjïehtedh',
 'editold' => 'värrhtoedimmie',
 'editsectionhint' => 'Sektiovne sjiehtedh: $1',
@@ -236,6 +232,7 @@ Gïemhpes logge sïjse vihth männgan datne åtna låhka dïhte.',
 'loginlanguagelabel' => 'Gïele: $1',
 
 # Change password dialog
+'changepassword' => 'Värrhtoedimmie loevesbaakoe',
 'oldpassword' => 'Båeries loevesbaakoe:',
 'newpassword' => 'Orre loevesbaakoe:',
 'retypenew' => 'Odhasit orre loevesbaakoe:',
@@ -326,18 +323,13 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
 
 # Search results
 'searchresults' => 'Ohtsedh resultaateh',
-'searchresulttext' => 'Ihke jeenjebe bïevnesh bïjre ohtsedh {{SITENAME}}, vuejnedh [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Dov ohtsedh ihke '''[[:$1]]'''",
 'prevn' => 'övtebe {{PLURAL:$1|$1}}',
 'nextn' => 'minngeben {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Vuesehth ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:Sisvege',
-'powersearch' => 'Ohtsedh',
 
 # Preferences page
 'preferences' => 'Sïjsestäälningeh',
 'mypreferences' => 'Mov sïjsesäälningeh',
-'changepassword' => 'Värrhtoedimmie loevesbaakoe',
 'skin-preview' => 'Åvte-vuesiehtidh',
 'saveprefs' => 'Spååredh',
 'searchresultshead' => 'Ohtsedh',
@@ -395,7 +387,6 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
 'recentchangeslinked-feed' => 'Värrhtoedimmieh nille krïense bielieh',
 'recentchangeslinked-toolbox' => 'Värrhtoedimmieh nille krïense bielieh',
 'recentchangeslinked-title' => 'Värrhtoedimmie laktaseaddji gåajkoe "$1"',
-'recentchangeslinked-noresult' => 'Ijje kïrense bielieh värrhtoedimmie nuelesne dïhte veeljeme tïjje-boelhke.',
 'recentchangeslinked-summary' => "Dïhte joekoelaakan bielie lästoe dah minngemes värrhtoedimmieh nille bielieh goh lea lïenghke. Bielieh [[Special:Watchlist|nille dov]] sïektjedhlästoe lea '''buajtehks'''.",
 
 # Upload
@@ -459,8 +450,6 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
 'statistics' => 'Statistiike',
 'statistics-header-users' => 'Nuhtjien statistiike',
 
-'disambiguations' => 'Disambirgusjovne bielieh',
-
 'doubleredirects' => 'Guektien-gïerth bïjre-dirisjovneh',
 
 'brokenredirects' => 'Earjohks bïrje-dirisjovneh',
@@ -522,8 +511,6 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge s
 'prevpage' => 'Övtebe bielie ($1)',
 'allpagesfrom' => 'Vuesehte bielieh goh aelkedh meatan:',
 'allarticles' => 'Gaajhke bielieh',
-'allpagesprev' => 'Övtebe',
-'allpagesnext' => 'Minngebe',
 'allpagessubmit' => 'Vaadtsa',
 'allpagesprefix' => 'Vuesehte bielieh meatan prefihkse:',
 
@@ -671,7 +658,6 @@ Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
 'articleexists' => 'Bielie meatan dïhte nomme gååvnese joe, jallh
 nome dov åtna veeljeme lea ijje jiiltige.
 Gïemhpes veeljeme jeatjebh nomme.',
-'movedto' => 'jåhta gåajkoe',
 'movetalk' => 'Jåhta aaj dïerkestidhbielie, bïjre dïhte gååvnese.',
 'movelogpage' => 'Jåhta logge',
 'movereason' => 'Gaavhtan:',
@@ -823,10 +809,6 @@ Jeatjebh dajveh lea gaptjedh goh sïejhme, bine vuesehte gåessie taabelle stoer
 'exif-gpslongitude-e' => 'Lulnie låångdituude',
 'exif-gpslongitude-w' => 'Jillege låångdituude',
 
-# External editor support
-'edit-externally' => 'Värrhtoedimmie dïhte baalka meatan ehksteerne applikasjovne',
-'edit-externally-help' => 'Vuajna [//www.mediawiki.org/wiki/Manual:External_editors instalasjovne instruksjovne] ihke vielie bïevnesh.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'gaajhke',
 'namespacesall' => 'gaajhke',
index db4716b..fc319ad 100644 (file)
@@ -50,7 +50,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbedit' => 'Chinja',
-'qbspecialpages' => 'Mapeji akakosha',
 
 'help' => 'Rubatsiro',
 'search' => 'Tsvaga',
@@ -67,7 +66,7 @@ $messages = array(
 'toolbox' => 'Maturuzi',
 'otherlanguages' => 'Mimwe Mitauro',
 
-# 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).
+# 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).
 'currentevents' => 'Zvirikuitika',
 'currentevents-url' => 'Project:Zvirikuitika',
 'disclaimers' => 'Matandanyadzi',
@@ -76,7 +75,6 @@ $messages = array(
 'mainpage-description' => 'Peji Rekutanga',
 'portal' => 'Mukova wegutse',
 
-'newmessageslink' => 'mashoko matsva',
 'youhavenewmessagesmulti' => 'Une mashoko matsva pa$1',
 'editsection' => 'chinja',
 'editold' => 'chinja',
@@ -88,9 +86,6 @@ $messages = array(
 'viewsource' => 'Wona mabviro',
 
 # Login and logout pages
-'welcomecreation' => '== Tigashire, $1! ==
-Akaunzi yako yagadzirwa.
-Usakanganwe kuchinga [[Special:Preferences|mapreferences ako {{SITENAME}}]].',
 'yourname' => 'Zita:',
 'yourpassword' => 'Password:',
 'yourpasswordagain' => 'Nyorazve password:',
@@ -110,12 +105,8 @@ Usakanganwe kuchinga [[Special:Preferences|mapreferences ako {{SITENAME}}]].',
 'showpreview' => 'Ratidza chipandwa',
 'showdiff' => 'Ratidza zvasandurwa',
 
-# Search results
-'powersearch' => 'Tsvaga',
-
 # Preferences page
 'mypreferences' => 'Zvandinosarudza',
-'prefsnologin' => 'Hauna kugamuchirwa',
 'prefs-rc' => 'Zvaba Kuchinjwa',
 'searchresultshead' => 'Tsvaga',
 'youremail' => 'E-mail:',
@@ -170,7 +161,6 @@ Usakanganwe kuchinga [[Special:Preferences|mapreferences ako {{SITENAME}}]].',
 # Move page
 'move-page-legend' => 'Chichinura peji',
 'movepagebtn' => 'Chichinura peji',
-'movedto' => 'rachichinurwa ku',
 'movereason' => 'Chikonzero',
 
 # Namespace 8 related
index 10b0421..967b8d2 100644 (file)
@@ -36,7 +36,6 @@ $messages = array(
 'tog-minordefault' => 'Isbedelada yaryar marwalba calaamadey',
 'tog-previewontop' => 'Itus horfiirinta kahor sanduuqa wax ka bedelida',
 'tog-previewonfirst' => 'Horfiirinta itus marka ugu horeeyso oo aan wax ka bedelo',
-'tog-nocache' => 'Dami browsaha maqaalada duubo',
 'tog-enotifwatchlistpages' => 'E-mail  ii soo dir markii  wax laga badalo maqaalada ku jira liiskayga waardiyaha',
 'tog-enotifusertalkpages' => 'E-mail ii soo dir markii boggayga wadahadalka oo isbedelo',
 'tog-enotifminoredits' => 'E-mail Ii soo dir xataa markii bedelo yar lagu sameeyo bogyada',
@@ -154,7 +153,6 @@ $messages = array(
 'qbedit' => 'Wax ka bedel',
 'qbpageoptions' => 'Boggaan',
 'qbmyoptions' => 'Boggageyga',
-'qbspecialpages' => 'Bogaga qaaska ah',
 'faq' => 'SIL',
 'faqpage' => 'Project:SIL',
 
@@ -494,7 +492,6 @@ Fadlan waxyar sug intii aadan soo gelin.',
 'user-mail-no-addy' => "Isku dayday in aa dirto e-mail ayada oo ciwaan e-mail la'aan ah.",
 
 # Change password dialog
-'resetpass' => 'Bedel ereysirka',
 'resetpass_announce' => 'waxaa ku soo geshay eraysir ku meelgaar ah  oo e-mail laguugu soo diray.
 Hadii aad rabtid in aad dhameestirtid gudagelkaaga, waa in aad meeshaan ku qortaa eraysir oo cusub:',
 'resetpass_header' => 'bedel  ereyga sirta ee akoon-ka',
@@ -730,8 +727,6 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 'revdelete-radio-unset' => 'Maya',
 'revdelete-log' => 'Sababta:',
 'revdel-restore' => 'badal muuqaalka',
-'revdel-restore-deleted' => 'kuwii la tirtiray badalyadooda',
-'revdel-restore-visible' => 'bedelyadka la arki karo',
 'pagehist' => 'Taariikhda bogga',
 'revdelete-reasonotherlist' => 'sabababaha kale',
 
@@ -749,15 +744,12 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 # Search results
 'searchresults' => 'Natiijada raadinta (Baaris)',
 'searchresults-title' => 'Raadinta natiijooyinka "$1"',
-'searchsubtitle' => 'Waxaad raadisay \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|dhamaan bogaaga ka bilaawdo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|dhamaan bogagga la xiriiro "$1"]])',
-'searchsubtitleinvalid' => "Waxaa raadisay '''$1'''",
 'prevn' => 'Ka horeeya {{PLURAL:$1|$1}}',
 'nextn' => 'Ku xiga {{PLURAL:$1|$1}}',
 'prevn-title' => 'ka horeeyay  $1 {{PLURAL:$1|natiijo|natiijooyinka}}',
 'nextn-title' => 'Kan ku xiga $1 {{PLURAL:$1|natiijo|natiijooyinka}}',
 'shown-title' => 'Itusi $1 {{PLURAL:$1|natiijo|natiijooyinka}} halkii bog',
 'viewprevnext' => 'Fiiri ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Raadi doorashooyinka',
 'searchmenu-exists' => "'''Wikigaan wuu ku jiraa bog la dhoho  \"[[:\$1]]\" .'''",
 'searchmenu-new' => "'''Ku sameey bogga  \"[[:\$1]]\" wikigaan!'''",
 'searchprofile-articles' => 'Maqaalada kooban',
@@ -785,11 +777,9 @@ sababteeda neh waxaa laga heli kartaa  [{{fullurl:{{#Special:Log}}/delete|page={
 'showingresultsnum' => "Hoos waxaa laga helay {{PLURAL:$3|'''1''' Natiijo|'''$3''' Natiijooyin}} Ka billow #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Natiijada  '''$1''' ee '''$3'''|Natiijooyinka '''$1 - $2'''  oo ah  '''$3'''}} ee '''$4'''",
 'search-nonefound' => 'Wax natiijo oo ka soo baxay ma jirto wixii aad raadisay',
-'powersearch' => 'Sidii aad wax uugu raadin laheed',
 'powersearch-legend' => 'Sidii aad wax uugu raadin laheed',
 'powersearch-ns' => 'ka raadi xarun magaceedka:',
 'powersearch-redir' => 'liiska inta la sii toosiyay',
-'powersearch-field' => 'Raadi',
 'powersearch-togglelabel' => 'Fiiri',
 'powersearch-toggleall' => 'Dhamaan',
 'powersearch-togglenone' => 'Waxna',
@@ -894,7 +884,6 @@ E-mailkaada mala sheegaayo markii ee dadka kale kula soo xiriirayaan.',
 'recentchanges-label-minor' => 'Kan waa bedel yar',
 'recentchanges-label-bot' => 'Badalkaan waxaa sameeyay bot',
 'recentchanges-label-unpatrolled' => 'bedelkaan hadda wali lama waardiyeen',
-'rcnote' => "Hoostaan  {{PLURAL:$1|waa '''1''' badalkii| '''$1''' ee ugu danbeeyay}} oo dhacay wixii ka danbeeyay {{PLURAL:$2|maalin|'''$2''' maalmood}}, marka ee eheed $5, $4.",
 'rcnotefrom' => "Hoostaan waa isbedaladii dhacay  '''$2''' (waxaad arkoosaa ilaa '''$1''' ).",
 'rclistfrom' => 'Itusi isbedelada cusub oo ka bilaabaneyso $1',
 'rcshowhideminor' => '$1 bedelada yar',
@@ -1061,9 +1050,6 @@ Tafaasiishiisa waxee ku qorantahay [$2 bogga tafaasiisha faylka] oo ka arki kart
 'allpagesfrom' => 'Soosaar boggaga ka bilaawda:',
 'allarticles' => 'Dhamaan bogagga',
 'allinnamespace' => 'Dhamaan bogagga ($1 namespace)',
-'allnotinnamespace' => 'Dhamaan bogagga (aan ku jirin xarun magaceedka $1)',
-'allpagesprev' => 'ka hore',
-'allpagesnext' => 'Ku xiga',
 'allpagessubmit' => 'Soco',
 'allpagesprefix' => 'Soo saar boggaga leh horgalaha:',
 'allpagesbadtitle' => "Cinwaanka bogga xaq ma'aha ama waa ereyo u gaar ah isdhaafka-luqadaha ama isdhaafka-wiki. Waxaa ku jirikara xuruufo aanan loo isticmaalikarin cinwaan ahaan.",
@@ -1226,7 +1212,6 @@ eeg [[Special:ProtectedPages|Liiska bogagga dhowrsoon]] liiska bogagga howlaha d
 'undeletebtn' => 'Sooceli',
 'undeletelink' => 'fiiri/mar kale sameey',
 'undeleteviewlink' => 'itusi',
-'undeletereset' => 'Dib u habeey',
 'undeletedrevisions' => '$1 {{PLURAL:$1|revision|revisions}} restored',
 'undeletedrevisions-files' => '$1 {{PLURAL:$1|revision|revisions}} and $2 {{PLURAL:$2|file|files}} restored',
 'undeletedfiles' => '$1 {{PLURAL:$1|file|files}} restored',
@@ -1298,8 +1283,6 @@ Eeg [[Special:BlockList|Mamnuucyada]] si aad u aragto liiska mamnuucyada ee hadd
 'ipb-needreblock' => '$1 mar hore aa la mamnuucay. marabtaa in aad wax ka bedesho habka?',
 
 # Move page
-'movenologin' => 'Gudaha kuma jirtid',
-'movedto' => 'loo wareejiyey',
 'movetalk' => "Wareejiyey bogga wadahadalka la'xiriira",
 'movelogpage' => 'Wareejinta guda galaheeda',
 'revertmove' => 'celi',
@@ -1430,10 +1413,6 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
 # Exif tags
 'exif-iimcategory' => 'Qeybta',
 
-# External editor support
-'edit-externally' => 'wax ka bedel faylkaan adiga oo isticmaalaya brogram dheeraad ah',
-'edit-externally-help' => '(Ka fiiri wax war ah oo kale  [https://www.mediawiki.org/wiki/Manual:External_editors sidii oo wax ugu habeysmi lahaa] )',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'dhamaan',
 'namespacesall' => 'dhamaan',
index aedb4ff..13123a2 100644 (file)
@@ -70,7 +70,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'FaqetAntike' ),
        'Blankpage'                 => array( 'FaqeBosh' ),
        'Block'                     => array( 'BllokoIP' ),
-       'Blockme'                   => array( 'BllokomMua' ),
        'Booksources'               => array( 'BurimeteLibrave' ),
        'Categories'                => array( 'Kategori' ),
        'ChangeEmail'               => array( 'NdryshoEmail' ),
@@ -238,7 +237,6 @@ $messages = array(
 'tog-minordefault' => 'Shëno të gjitha redaktimet si të vogla automatikisht',
 'tog-previewontop' => 'Vendose kutinë e bocetit sipër kutisë së redaktimeve',
 'tog-previewonfirst' => 'Tregoje bocetin në redaktimin e parë',
-'tog-nocache' => "Ç'aktivizo ruajtjen e faqeve të vizituara",
 'tog-enotifwatchlistpages' => 'Më njofto me e-mail kur ndryshohet një faqe apo skedaë nga lista ime e faqeve nën mbikqyrje',
 'tog-enotifusertalkpages' => 'Më njofto me e-mail kur faqja ime e dikutimeve të përdoruesit ndryshohet',
 'tog-enotifminoredits' => 'Më njofto me e-mail edhe kur ka redaktime të vogla në faqe dhe skedave',
@@ -372,7 +370,6 @@ $messages = array(
 'qbedit' => 'Redaktoni',
 'qbpageoptions' => 'Kjo faqe',
 'qbmyoptions' => 'Faqet e mia',
-'qbspecialpages' => 'Faqet speciale',
 'faq' => 'Pyetje që bëhen shpesh',
 'faqpage' => 'Project: Pyetje që bëhen shpesh',
 
@@ -582,9 +579,6 @@ Mund të përmbajë një ose më shumë germa, të cilat nuk mund të përdoren
 'perfcachedts' => 'Informacioni i mëposhtëm është një kopje e rifreskuar më $1. E shumta  {{PLURAL:$4|një rezultat është|$4 rezultate janë}} ruajtur në kopje.',
 'querypage-no-updates' => "Përditësimet për këtë faqe për momentin janë të ç'aktivizuara.
 Këtu informacioni nuk do të jetë i përditësuar.",
-'wrong_wfQuery_params' => 'Parametrat gabim tek wfQuery()<br />
-Funksioni: $1<br />
-Query: $2',
 'viewsource' => 'Shiko tekstin',
 'viewsource-title' => 'Shiko tekstin për $1',
 'actionthrottled' => 'Veprim u ndalua',
@@ -729,7 +723,7 @@ Duhet të hyni brenda dhe të ndërroni fjalëkalimin tani nëse ky person jeni
 'user-mail-no-addy' => 'Provuat të dërgoni një korrespondencë pa adresë elektronike',
 
 # Change password dialog
-'resetpass' => 'Ndrysho fjalëkalimin',
+'changepassword' => 'Ndërroni fjalëkalimin',
 'resetpass_announce' => 'Ju keni hyrë me një kod të përkohshëm.
 Për të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:',
 'resetpass_header' => 'Ndrysho fjalëkalimin e llogarisë',
@@ -763,11 +757,11 @@ $2
 {{PLURAL:$3|Ky fjalëkalim i përkohshëm|Këto fjalëkalime të përkohshme}} do të përfundojë për {{PLURAL:$5|një ditë|$5 ditë}}.
 
 Ju duhet të kyçeni dhe të zgjidhni një fjalëkalim të ri tani. Nëse dikush tjetër e ka bërë këtë kërkesës, ose në qoftë se ju mbani mend fjalëkalimin tuaj origjinal, dhe ju nuk dëshirojni të ndryshoni atë, ju mund të injoroni këtë mesazh dhe do të vazhdoni përdorimin e fjalëkalimit tuaj të vjetër.',
-'passwordreset-emailtext-user' => 'Përdoruesi  $1 në {{SITENAME }} ka kërkuar një kujtesë për të dhënat e llogarisë suaj për {{SITENAME }} ($4). Përdoruesi në vijim {{PLURAL: $3 | llogaria është | llogaritë janë}} të lidhur me këtë postë elektronike: 
+'passwordreset-emailtext-user' => 'Përdoruesi  $1 në {{SITENAME }} ka kërkuar një kujtesë për të dhënat e llogarisë suaj për {{SITENAME }} ($4). Përdoruesi në vijim {{PLURAL:$3 | llogaria është | llogaritë janë}} të lidhur me këtë postë elektronike: 
 
 $2
 
-{{PLURAL: $3 | Ky fjalëkalim i përkohshëm | Këto fjalëkalime të përkohshme}} do të përfundojë në {{PLURAL: $5 | një ditë | $5 ditë}}.
+{{PLURAL:$3 | Ky fjalëkalim i përkohshëm | Këto fjalëkalime të përkohshme}} do të përfundojë në {{PLURAL:$5 | një ditë | $5 ditë}}.
 Ju duhet të kyçeni dhe të zgjidhni një fjalëkalim të ri tani. Nëse dikush tjetër e ka bërë këtë kërkesës, ose në qoftë se ju mbani mend fjalëkalimin tuaj origjinal, dhe ju nuk dëshirojni të ndryshoni atë, ju mund të injoroni këtë mesazh dhe do të vazhdoni përdorimin e fjalëkalimit tuaj të vjetër.',
 'passwordreset-emailelement' => 'Nofka: $1
 Fjalëkalimi i përkohshëm: $2',
@@ -1089,10 +1083,6 @@ Ju mund ta shikoni këtë ndryshim; detajet mund të gjenden te [{{fullurl:{{#Sp
 'revisiondelete' => 'Shlyj/Reparo versionet',
 'revdelete-nooldid-title' => 'Version i dëshiruar i pavfleshëm',
 'revdelete-nooldid-text' => 'Ose nuk keni përcaktuar një version(e) të dëshiruar për veprimin, ose versioni nuk ekziston, ose po mundoheni të fshihni versionin e tanishëm.',
-'revdelete-nologtype-title' => 'Nuk është dhënë asnjë lloj i të dhënave',
-'revdelete-nologtype-text' => 'Nuk keni caktuar llojin e të dhënave për të realizuar veprimin.',
-'revdelete-nologid-title' => 'Regjistër i pavlefshëm',
-'revdelete-nologid-text' => 'Ju ose nuk keni specifikuar një ngjarje target kyçje për të kryer këtë funksion ose hyrja e specifikuar nuk ekziston.',
 'revdelete-no-file' => 'Skeda e dhënë nuk ekziston.',
 'revdelete-show-file-confirm' => 'Jeni i/e sigurt se dëshironi të shikoni një version të grisur të skedës "<nowiki>$1</nowiki>" nga $2 tek $3?',
 'revdelete-show-file-submit' => 'Po',
@@ -1125,8 +1115,6 @@ Ju mund ta shikoni këtë ndryshim; detajet mund të gjenden te [{{fullurl:{{#Sp
 'logdelete-failure' => "'''Dukshmëria nuk u vendos:'''
 $1",
 'revdel-restore' => 'Ndrysho dukshmërinë',
-'revdel-restore-deleted' => 'fshij rivizonet',
-'revdel-restore-visible' => 'rivizionet e dukshme',
 'pagehist' => 'Historiku i faqes',
 'deletedhist' => 'Historiku i grisjeve',
 'revdelete-hide-current' => 'Gabim në fshehje të pikës me datë $2, $1: ky është rivizioni i tanishëm. 
@@ -1200,12 +1188,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 # Search results
 'searchresults' => 'Rezultatet e kërkimit',
 'searchresults-title' => 'Rezultatet e kërkimit për "$1"',
-'searchresulttext' => 'Për më shumë informacion rreth kërkimit në {{SITENAME}} shikoni [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Kërkuat për "[[$1]]" ([[Special:Prefixindex/$1|të gjitha faqet që fillojnë me "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|të gjitha faqet që lidhen me"$1"]])',
-'searchsubtitleinvalid' => 'Kërkim për "$1"',
 'toomanymatches' => 'Ky kërkim ka shumë përfundime, provoni një pyetje tjetër më përcaktuese',
 'titlematches' => 'Tituj faqesh që përputhen',
-'notitlematches' => 'Nuk ka asnjë titull faqeje që përputhet',
 'textmatches' => 'Tekst faqesh që përputhet',
 'notextmatches' => 'Nuk ka asnjë tekst faqeje që përputhet',
 'prevn' => '{{PLURAL:$1|$1}} më para',
@@ -1214,10 +1198,8 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'nextn-title' => '$1 në vazhdim {{PLURAL:$1|rezultat|rezultate}}',
 'shown-title' => 'Trego $1 {{PLURAL:$1|rezultat|rezultate}} për faqe',
 'viewprevnext' => 'Shikoni ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Parazgjedhjet e kërkimit',
 'searchmenu-exists' => "'''Në këtë wiki kjo faqe është emëruar \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Hapë faqen \"[[:\$1]]\" në këtë wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shfletoi faqet me këtë parashtesë]]',
 'searchprofile-articles' => 'Përmbajtja e faqeve',
 'searchprofile-project' => 'Ndihmë dhe faqet e Projektit',
 'searchprofile-images' => 'Multimedia',
@@ -1238,20 +1220,16 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'search-interwiki-default' => '$1 përfundime:',
 'search-interwiki-more' => '(më shumë)',
 'search-relatedarticle' => 'Të ngjashme',
-'mwsuggest-disable' => 'Çmundësoi sugjerimet AJAX',
 'searcheverything-enable' => 'Kërko në të gjitha hapësirat',
 'searchrelated' => 'të ngjashme',
 'searchall' => 'të gjitha',
 'showingresults' => "Më poshtë tregohen {{PLURAL:$1|'''1''' përfundim|'''$1''' përfundime}} duke filluar nga #'''$2'''.",
 'showingresultsnum' => "Më poshtë tregohen {{PLURAL:$3|'''1''' përfundim|'''$3''' përfundime}} duke filluar nga #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rezultati '''$1''' nga '''$3'''|Rezultatet '''$1 - $2''' nga '''$3'''}} për '''$4'''",
-'nonefound' => "'''Shënim''': Kërkimet pa rezultate ndodhin kur kërkoni për fjalë që rastisen shpesh si \"ke\" dhe \"nga\", të cilat nuk janë të futura në regjistër, ose duke dhënë më shumë se një fjalë (vetëm faqet që i kanë të gjitha ato fjalë do të tregohen si rezultate).",
 'search-nonefound' => 'Nuk ka rezultate që përputhen me kërkesën.',
-'powersearch' => 'Kërko',
 'powersearch-legend' => 'Kërkim i përparuar',
 'powersearch-ns' => 'Kërkim në hapësira:',
 'powersearch-redir' => 'Trego përcjellimet',
-'powersearch-field' => 'Kërko për',
 'powersearch-togglelabel' => 'Zgjedh:',
 'powersearch-toggleall' => 'Tâna',
 'powersearch-togglenone' => 'Asnji',
@@ -1262,7 +1240,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'preferences' => 'Parapëlqimet',
 'mypreferences' => 'Parapëlqimet',
 'prefs-edits' => 'Numri i redaktimeve:',
-'changepassword' => 'Ndërroni fjalëkalimin',
 'prefs-skin' => 'Pamja',
 'skin-preview' => 'Parapamje',
 'datedefault' => 'Parazgjedhje',
@@ -1285,13 +1262,11 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'prefs-email' => 'Opsionet E-mail',
 'prefs-rendering' => 'Dukja',
 'saveprefs' => 'Ruaj parapëlqimet',
-'resetprefs' => 'Rikthe parapëlqimet',
 'restoreprefs' => 'Rikthe të gjitha të dhënat e mëparshme',
 'prefs-editing' => 'Redaktimi',
 'rows' => 'Rreshta:',
 'columns' => 'Kollona:',
 'searchresultshead' => 'Kërkimi',
-'resultsperpage' => 'Sa përputhje të tregohen për faqe:',
 'stub-threshold' => 'Kufiri për formatin e <a href="#" class="stub">lidhjeve cung</a> (B):',
 'stub-threshold-disabled' => 'Çaktivizuar',
 'recentchangesdays' => 'Numri i ditëve të treguara në ndryshime së fundmi:',
@@ -1303,7 +1278,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
 'localtime' => 'Ora lokale:',
 'timezoneuseserverdefault' => 'wiki default Përdorimi ( $1 )',
 'timezoneuseoffset' => 'Tjera (zgjidh rajonin)',
-'timezoneoffset' => 'Ofset¹:',
 'servertime' => 'Ora e shërbyesit:',
 'guesstimezone' => 'Gjeje nga shfletuesi',
 'timezoneregion-africa' => 'Afrikë',
@@ -1536,7 +1510,6 @@ Kjo informatë është publike.',
 'recentchanges-label-bot' => 'Ky editim është kryer nga një bot',
 'recentchanges-label-unpatrolled' => 'Ky editim ende nuk është patrolluar',
 'recentchanges-legend-newpage' => '$1 - faqe të re',
-'rcnote' => "Më poshtë {{PLURAL:$1|është '''1''' ndryshim| janë '''$1''' ndryshime}} së fundmi gjatë <strong>$2</strong> ditëve sipas të dhënave nga $4, $5.",
 'rcnotefrom' => 'Më poshtë janë ndryshime së fundmi nga <b>$2</b> (treguar deri në <b>$1</b>).',
 'rclistfrom' => 'Tregon ndryshime së fundmi duke filluar nga $1',
 'rcshowhideminor' => '$1 redaktimet e vogla',
@@ -1997,10 +1970,8 @@ Secili rresht përmban lidhjet tek përcjellimi i parë dhe përcjellimi i dytë
 'protectedpages' => 'Faqe të mbrojtura',
 'protectedpages-indef' => 'Vetëm mbrojtjet pa afat',
 'protectedpages-cascade' => 'Vetëm mbrojtjet',
-'protectedpagestext' => 'Faqet e mëposhtme janë të mbrojtura nga zhvendosja apo redaktimi',
 'protectedpagesempty' => 'Nuk ka faqe të mbrojtura me të dhënat e kërkuara.',
 'protectedtitles' => 'Titujt e mbrojtur',
-'protectedtitlestext' => 'Krijimi i këtyre titujve është i mbrojtur',
 'protectedtitlesempty' => 'Asnjë titull i mbrojtur nuk u gjet në këtë hapësirë.',
 'listusers' => 'Lista e përdoruesve',
 'listusers-editsonly' => 'Trego vetëm përdoruesit me redaktime',
@@ -2051,9 +2022,6 @@ Ju mund të kufizoni pamje sipas tipit të regjistrit, emrit të përdoruesit (s
 'allpagesto' => 'Shfaq faqet që mbarojnë në:',
 'allarticles' => 'Të gjithë artikujt',
 'allinnamespace' => 'Të gjitha faqet (hapësira $1)',
-'allnotinnamespace' => 'Të gjitha faqet (jo në hapësirën $1)',
-'allpagesprev' => 'Më para',
-'allpagesnext' => 'Më pas',
 'allpagessubmit' => 'Shko',
 'allpagesprefix' => 'Trego faqet me parashtesë:',
 'allpagesbadtitle' => 'Titulli i dhënë ishte i pavlefshë ose kishte një parashtesë ndër-gjuhe ose ndër-wiki.
@@ -2397,7 +2365,6 @@ Ju mund të keni një lidhje të keqe, ose versioni mund të jetë restauruar os
 'undeletebtn' => 'Restauro!',
 'undeletelink' => 'shiko/rikthe',
 'undeleteviewlink' => 'Pamje',
-'undeletereset' => 'Boshatis',
 'undeleteinvert' => 'Selektim anasjelltas',
 'undeletecomment' => 'Arsyeja:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|version u restaurua|versione u restauruan}}',
@@ -2486,7 +2453,6 @@ Bllokimi i funditë është më poshtë për referencë:',
 'block' => 'Blloko përdoruesin',
 'unblock' => 'Zhblloko përdoruesin',
 'blockip' => 'Blloko përdorues',
-'blockip-title' => 'Përdorues i Bllokuar',
 'blockip-legend' => 'Blloko përdoruesin',
 'blockiptext' => 'Përdorni formularin e mëposhtëm për të hequr lejen e shkrimit për një përdorues ose IP specifike.
 Kjo duhet bërë vetëm në raste vandalizmi, dhe në përputhje me [[{{MediaWiki:Policy-url}}|rregullat e {{SITENAME}}-s]].
@@ -2494,7 +2460,6 @@ Plotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u va
 'ipadressorusername' => 'Adresë IP ose emër përdoruesi',
 'ipbexpiry' => 'Afati',
 'ipbreason' => 'Arsyeja:',
-'ipbreasonotherlist' => 'Arsye tjetër',
 'ipbreason-dropdown' => '*Arsyet më të shpeshta të bllokimit
 ** Postimi i informacioneve të rreme
 ** Largimi i përmbajtjes së faqes
@@ -2510,8 +2475,6 @@ Plotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u va
 'ipbsubmit' => 'Blloko këtë përdorues',
 'ipbother' => 'Kohë tjetër',
 'ipboptions' => '2 Orë:2 hours,1 Ditë:1 day,3 Ditë:3 days,1 Javë:1 week,2 Javë:2 weeks,1 Muaj:1 month,3 Muaj:3 months,6 Muaj:6 months,1 Vjet:1 year,Pa kufi:infinite',
-'ipbotheroption' => 'tjetër',
-'ipbotherreason' => 'Arsye tjetër/shtesë',
 'ipbhidename' => 'Fshih emrat e përdorueseve nga redaktimet dhe listat',
 'ipbwatchuser' => 'Shiko faqen e prezantimit dhe diskutimit të këtij përdoruesi',
 'ipb-disableusertalk' => 'Parandalo këtë përdorues për të redaktuar faqe-diskutimin e tyre përderisa janë të bllokkuar',
@@ -2602,7 +2565,6 @@ Ajo është, megjithatë, e bllokuar si pjesë e rangut $2, që nuk mund të zhb
 'proxyblockreason' => 'IP adresa juaj është bllokuar sepse është një ndërmjetëse e hapur. Ju lutem lidhuni me kompaninë e shërbimeve të Internetit që përdorni dhe i informoni për këtë problem sigurije.',
 'sorbsreason' => 'Adresa IP e juaj është radhitur si ndërmjetëse e hapur tek lista DNSBL.',
 'sorbs_create_account_reason' => 'Adresa IP e juaj është radhitur si ndërmjetëse e hapur tek lista DNSBL që përdoret nga {{SITENAME}}. Nuk ju lejohet të hapni një llogari.',
-'cant-block-while-blocked' => 'Ju nuk mund të bllokoni përdorues të tjerë ndërkohë që jeni i bllokuar.',
 'cant-see-hidden-user' => 'Përdoruesi që po përpiqeni të bllokoni është i bllokuar dhe i fshehur.
 Përderisa ju nuk keni të drejtën e fshehjes së përdoruesve, ju nuk mund të shikoni ose redaktoni bllokimet e përdoruesit.',
 'ipbblocked' => 'Ju nuk mund të bllokoni ose zhbllokoni përdoruesit e tjerë, sepse jeni për vete i bllokuar',
@@ -2663,7 +2625,6 @@ Ky mund të jetë një ndryshim i madh dhe gjëra të papritura mund të ndodhin
 Në ato raste, duhet ta zhvendosni ose përpuqni faqen vetë n.q.s. dëshironi.",
 'movearticle' => 'Zhvendose faqen',
 'moveuserpage-warning' => "'''Kujdes:''' Ju po zhvendosni një faqe përdoruesi. Ju lutemi, kujtoni se vetëm faqja do të zhvendoset dhe përdoruesi ''nuk'' do të ndryshojë emrin.",
-'movenologin' => 'Nuk keni hyrë brenda',
 'movenologintext' => 'Duhet të keni hapur një llogari dhe të keni [[Special:UserLogin|hyrë brenda]] për të zhvendosur një faqe.',
 'movenotallowed' => 'Nuk ju lejohet të zhvendosni faqe.',
 'movenotallowedfile' => 'Nuk keni leje për të lëvizur skeda.',
@@ -2678,8 +2639,6 @@ Në ato raste, duhet ta zhvendosni ose përpuqni faqen vetë n.q.s. dëshironi."
 'movepage-moved-noredirect' => 'Krijimi i një përcjellimi është prishur.',
 'articleexists' => 'Një faqe me atë titull ekziston, ose titulli që zgjodhët nuk është i saktë. Ju lutem zgjidhni një tjetër.',
 'cantmove-titleprotected' => 'Nuk mund të zhvendosni një faqe në këtë titull pasi ky titull është mbrojtur kundrejt krijimit',
-'talkexists' => 'Faqja për vete u zhvendos, ndërsa faqja e diskutimit nuk u zhvendos sepse një e tillë ekziston tek titulli i ri. Ju lutem, përpuqini vetë.',
-'movedto' => 'zhvendosur tek',
 'movetalk' => 'Zhvendos edhe faqen e diskutimeve, në qoftë se është e mundur.',
 'move-subpages' => 'Zhvendosni nën-faqet (deri në $1)',
 'move-talk-subpages' => 'Zhvendosni nën-faqet e faqes së diskutimit (deri në $1)',
@@ -3432,15 +3391,10 @@ Në qoftë se skeda është ndryshuar nga gjendja origjinale, disa hollësira mu
 'exif-urgency-high' => 'E Lartë ( $1 )',
 'exif-urgency-other' => 'Prioritet i përcaktuar nga përdoruesi ( $1 )',
 
-# External editor support
-'edit-externally' => 'Ndryshoni këtë skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shikoni [https://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për më shumë informacion)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'të gjitha',
 'namespacesall' => 'të gjitha',
 'monthsall' => 'të gjitha',
-'limitall' => 'Të gjitha',
 
 # Email address confirmation
 'confirmemail' => 'Vërtetoni adresën tuaj',
@@ -3459,7 +3413,6 @@ Postieri u kthye: $1',
 'confirmemail_needlogin' => 'Ju duhet të $1 për ta konfirmuar email-adresën',
 'confirmemail_success' => 'Adresa juaj është vërtetuar. Mund të hyni brënda dhe të përdorni wiki-n.',
 'confirmemail_loggedin' => 'Adresa juaj është vërtetuar.',
-'confirmemail_error' => 'Pati gabim gjatë ruajtjes së vërtetimit tuaj.',
 'confirmemail_subject' => 'Vërtetim adrese nga {{SITENAME}}',
 'confirmemail_body' => 'Dikush, me gjasë ju, nga IP adresa $1,
 ka regjistruar një llogari "$2" me këtë e-mail adresë në {{SITENAME}}.
@@ -3684,7 +3637,6 @@ Ju duhet të keni marrë [{{SERVER}}{{SCRIPTPATH}}/COPYING një kopje të GNU Ge
 
 # Special:ComparePages
 'comparepages' => 'Krahasoni faqet',
-'compare-selector' => 'Krahasoni versionet e faqeve',
 'compare-page1' => 'Faqe 1',
 'compare-page2' => 'Faqe 2',
 'compare-rev1' => 'Version 1',
index 4fd9136..c7bc020 100644 (file)
@@ -100,14 +100,12 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'НајстаријиЧланци' ),
        'Badtitle'                  => array( 'Лош_наслов' ),
        'Block'                     => array( 'Блокирај', 'БлокирајИП', 'БлокирајКорисника' ),
-       'Blockme'                   => array( 'БлокирајМе', 'Блокирај_ме' ),
        'BrokenRedirects'           => array( 'Покварена_преусмерења', 'Неисправна_преусмерења' ),
        'Categories'                => array( 'Категорије' ),
        'ComparePages'              => array( 'Упореди_странице' ),
        'Confirmemail'              => array( 'ПотврдиЕ-пошту', 'Потврда_е-поште' ),
        'Contributions'             => array( 'Доприноси', 'Прилози' ),
        'CreateAccount'             => array( 'ОтвориНалог', 'Отвори_налог' ),
-       'Disambiguations'           => array( 'Вишезначне_одреднице' ),
        'DoubleRedirects'           => array( 'Двострука_преусмерења' ),
        'Export'                    => array( 'Извези' ),
        'Fewestrevisions'           => array( 'ЧланциСаНајмањеРевизија' ),
@@ -136,7 +134,7 @@ $specialPageAliases = array(
        'Mypage'                    => array( 'МојаСтраница', 'Моја_страница' ),
        'Mytalk'                    => array( 'МојРазговор', 'Мој_разговор' ),
        'Myuploads'                 => array( 'Моја_слања' ),
-       'Newimages'                 => array( 'Ð\9dовиФаÑ\98лови', 'Ð\9dове_даÑ\82оÑ\82еке', 'НовеСлике' ),
+       'Newimages'                 => array( 'Ð\9dовеÐ\94аÑ\82оÑ\82еке', 'Ð\9dовиФаÑ\98лови', 'НовеСлике' ),
        'Newpages'                  => array( 'НовеСтране' ),
        'PermanentLink'             => array( 'Привремена_веза' ),
        'Popularpages'              => array( 'Популарне_странице' ),
@@ -151,13 +149,13 @@ $specialPageAliases = array(
        'Statistics'                => array( 'Статистике' ),
        'Tags'                      => array( 'Ознаке' ),
        'Uncategorizedcategories'   => array( 'КатегоријеБезКатегорија', 'Несврстане_категорије' ),
-       'Uncategorizedimages'       => array( 'СликеÐ\91езÐ\9aаÑ\82егоÑ\80иÑ\98а', 'ФаÑ\98ловиБезКатегорија' ),
+       'Uncategorizedimages'       => array( 'СликеÐ\91езÐ\9aаÑ\82егоÑ\80иÑ\98а', 'Ð\94аÑ\82оÑ\82екеБезКатегорија' ),
        'Uncategorizedpages'        => array( 'ЧланциБезКатегорија', 'Чланци_без_категорија' ),
        'Uncategorizedtemplates'    => array( 'ШаблониБезКатегорија' ),
        'Undelete'                  => array( 'Врати' ),
        'Unlockdb'                  => array( 'ОткључајБазу', 'Откључај_базу' ),
        'Unusedcategories'          => array( 'НеискоришћенеКатегорије' ),
-       'Unusedimages'              => array( 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bенеСлике', 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bениФаÑ\98лови' ),
+       'Unusedimages'              => array( 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bенеСлике', 'Ð\9dеиÑ\81коÑ\80иÑ\88Ñ\9bенеÐ\94аÑ\82оÑ\82еке' ),
        'Upload'                    => array( 'Пошаљи' ),
        'UploadStash'               => array( 'Складиште' ),
        'Userlogin'                 => array( 'Корисничка_пријава' ),
@@ -418,7 +416,6 @@ $messages = array(
 'tog-minordefault' => 'Означавај све измене као мање',
 'tog-previewontop' => 'Прикажи преглед пре оквира за уређивање',
 'tog-previewonfirst' => 'Прикажи преглед на првој измени',
-'tog-nocache' => 'Онемогући привремено меморисање страница',
 'tog-enotifwatchlistpages' => 'Пошаљи ми е-поруку када се промени страница или датотека коју надгледам',
 'tog-enotifusertalkpages' => 'Пошаљи ми е-поруку када се промени моја страница за разговор',
 'tog-enotifminoredits' => 'Пошаљи ми е-поруку и за мање измене у страницама и датотекама',
@@ -554,7 +551,6 @@ $messages = array(
 'qbedit' => 'Уреди',
 'qbpageoptions' => 'Поставке странице',
 'qbmyoptions' => 'Моје странице',
-'qbspecialpages' => 'Посебне странице',
 'faq' => 'НПП',
 'faqpage' => 'Project:НПП',
 
@@ -655,14 +651,14 @@ $1',
 'mainpage' => 'Главна страна',
 'mainpage-description' => 'Главна страна',
 'policy-url' => 'Project:Правила',
-'portal' => 'РадиониÑ\86а',
+'portal' => 'Ð\9fоÑ\80Ñ\82ал Ð·Ð°Ñ\98едниÑ\86е',
 'portal-url' => 'Project:Радионица',
 'privacy' => 'Политика приватности',
 'privacypage' => 'Project:Политика приватности',
 
 'badaccess' => 'Грешке у овлашћењима',
 'badaccess-group0' => 'Није вам дозвољено да извршите захтевану радњу.',
-'badaccess-groups' => 'Радња је доступна само корисницима у {{PLURAL:$2|следећој групи|следећим групама}}:  $1.',
+'badaccess-groups' => 'Радња коју сте захтевали је ограничена само корисницима у {{PLURAL:$2|следећој групи|следећим групама}}: $1.',
 
 'versionrequired' => 'Потребно је издање $1 Медијавикија',
 'versionrequiredtext' => 'Потребно је издање $1 Медијавикија да бисте користили ову страницу.
@@ -676,8 +672,8 @@ $1',
 'youhavenewmessages' => 'Имате $1 ($2).',
 'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|другог корисника|$3 корисника|$3 корисника}} ($2).',
 'youhavenewmessagesmanyusers' => 'Имате $1 од много корисника ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|нове поруке}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|последње измене}}',
+'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|999=нове поруке}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|999=последње измене}}',
 'youhavenewmessagesmulti' => 'Имате нових порука на $1',
 'editsection' => 'уреди',
 'editold' => 'уреди',
@@ -770,18 +766,15 @@ $1',
 'badtitletext' => 'Наслов странице је неисправан, празан или је међујезички или међувики наслов погрешно повезан.
 Можда садржи знакове који се не могу користити у насловима.',
 'perfcached' => 'Следећи подаци су кеширани и могу бити застарели. Кеш садржи највише {{PLURAL:$1|један резултат|$1 резултата|$1 резултата}}.',
-'perfcachedts' => 'Следећи подаци су кеширани, а последњи пут су ажурирани $2 у $3. Кеш садржи највише {{PLURAL:$4|један резултат|$4 резултата|$4 резултата}}.',
+'perfcachedts' => 'Следећи подаци су кеширани и последњи пут су ажурирани $2 у $3. У кешу {{PLURAL:$4|је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.',
 'querypage-no-updates' => 'Ажурирање ове странице је тренутно онемогућено.
 Подаци који се овде налазе могу бити застарели.',
-'wrong_wfQuery_params' => 'Неисправни параметри за wfQuery()<br />
-Функција: $1<br />
-Упит: $2',
 'viewsource' => 'Изворни код',
 'viewsource-title' => 'Приказ извора странице $1',
 'actionthrottled' => 'Радња је успорена',
 'actionthrottledtext' => 'У циљу борбе против непожељних порука, ограничене су вам измене у одређеном времену, а управо сте прешли то ограничење. Покушајте поново за неколико минута.',
 'protectedpagetext' => 'Ова страница је закључана за измене и друге радње.',
-'viewsourcetext' => 'Можете да погледате и копирате изворни текст ове странице:',
+'viewsourcetext' => 'Можете читати и копирати садржај ове странице:',
 'viewyourtext' => "Можете да погледате и копирате извор '''ваших измена''' на овој страници:",
 'protectedinterface' => 'Ова страница садржи текст корисничког окружења за софтвер на овом викију и заштићена је ради спречавања злоупотребе.
 Да бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/ Транслејтвики], пројекат за локализацију Медијавикија.',
@@ -805,7 +798,7 @@ $2',
 'invalidtitle-knownnamespace' => 'Неисправан наслов с именским простором „$2“ и текстом „$3“',
 'invalidtitle-unknownnamespace' => 'Неисправан наслов с именским простором бр. $1 и текстом „$2“',
 'exception-nologin' => 'Нисте пријављени',
-'exception-nologin-text' => 'Ова страница или радња захтева да будете пријављени на вики.',
+'exception-nologin-text' => '[[Special:Userlogin|Пријавите се]] да бисте приступили овој страници или радњи.',
 
 # Virus scanner
 'virus-badscanner' => "Неисправна поставка: непознати скенер за вирусе: ''$1''",
@@ -830,7 +823,7 @@ $2',
 'yourpasswordagain' => 'Потврда лозинке:',
 'createacct-yourpasswordagain' => 'Потврдите лозинку',
 'createacct-yourpasswordagain-ph' => 'Унесите лозинку још једном',
-'remembermypassword' => 'Ð\97апамÑ\82и Ð¼Ð¾Ñ\98Ñ\83 Ð»Ð¾Ð·Ð¸Ð½ÐºÑ\83 Ð½Ð° Ð¾Ð²Ð¾Ð¼ Ð¿Ñ\80егледаÑ\87Ñ\83 (наÑ\98дÑ\83же $1 {{PLURAL:$1|дан|дана}})',
+'remembermypassword' => 'Ð\97апамÑ\82и Ð¼Ðµ Ð½Ð° Ð¾Ð²Ð¾Ð¼ Ð¿Ñ\80егледаÑ\87Ñ\83 (наÑ\98дÑ\83же $1 {{PLURAL:$1|дан|дана|дана}})',
 'userlogin-remembermypassword' => 'Остави ме пријављеног/у',
 'userlogin-signwithsecure' => 'Користите сигурну конекцију',
 'yourdomainname' => 'Домен:',
@@ -905,7 +898,7 @@ $2',
 'passwordtooshort' => 'Лозинка мора имати најмање {{PLURAL:$1|један знак|$1 знака|$1 знакова}}.',
 'password-name-match' => 'Лозинка се мора разликовати од корисничког имена.',
 'password-login-forbidden' => 'Коришћење овог корисничког имена и лозинке је забрањено.',
-'mailmypassword' => 'Ð\9fоÑ\88аÑ\99и Ð½Ð¾Ð²Ñ\83 лозинку',
+'mailmypassword' => 'РеÑ\81еÑ\82Ñ\83Ñ\98 лозинку',
 'passwordremindertitle' => '{{SITENAME}} – подсетник за лозинку',
 'passwordremindertext' => 'Неко, вероватно ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
 Створена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.
@@ -920,14 +913,14 @@ $2',
 'blocked-mailpassword' => 'Вашој ИП адреси је онемогућено уређивање страница, као и могућност захтевања нове лозинке.',
 'eauthentsent' => 'На наведену е-адресу је послат потврдни код.
 Пре него што пошаљемо даљње поруке, пратите упутства с е-поште да бисте потврдили да сте ви отворили налог.',
-'throttled-mailpassword' => 'Подсетник за лозинку је послат {{PLURAL:$1|пре сат времена|у последња $1 сата|у последњих $1 сати}}.
\94а Ð±Ð¸Ñ\81мо Ñ\81пÑ\80еÑ\87или Ð·Ð»Ð¾Ñ\83поÑ\82Ñ\80ебÑ\83, Ð¿Ð¾Ð´Ñ\81еÑ\82ник Ñ\88аÑ\99емо Ñ\81амо Ñ\98едном Ñ\83 Ñ\80окÑ\83 Ð¾Ð´ {{PLURAL:$1|Ñ\98едног Ñ\81аÑ\82а|$1 сата|$1 сати}}.',
+'throttled-mailpassword' => 'Порука за промену лозинке је послата у {{PLURAL:$1|последњих сат времена|последња $1 сата|последњих $1 сати}}.
\94а Ð±Ð¸Ñ\81мо Ñ\81пÑ\80еÑ\87или Ð·Ð»Ð¾Ñ\83поÑ\82Ñ\80ебÑ\83, Ð¿Ð¾Ð´Ñ\81еÑ\82ник Ñ\88аÑ\99емо Ñ\81амо Ñ\98едном Ñ\83 Ñ\80окÑ\83 Ð¾Ð´ {{PLURAL:$1|Ñ\81аÑ\82 Ð²Ñ\80емена|$1 сата|$1 сати}}.',
 'mailerror' => 'Грешка при слању поруке: $1',
 'acct_creation_throttle_hit' => 'Посетиоци овог викија који користе вашу ИП адресу су већ отворили {{PLURAL:$1|један налог|$1 налога|$1 налога}} претходни дан, што је највећи дозвољени број у том временском периоду.
 Због тога посетиоци с ове ИП адресе тренутно не могу отворити више налога.',
 'emailauthenticated' => 'Ваша е-адреса је потврђена $2 у $3.',
 'emailnotauthenticated' => 'Ваша е-адреса још није потврђена.
-Поруке неће бити послате ни за једну од следећих могућности.',
+Поруке неће бити послате ни у једном од следећих случајева.',
 'noemailprefs' => 'Унесите е-адресу како би ове могућности радиле.',
 'emailconfirmlink' => 'Потврдите своју е-адресу',
 'invalidemailaddress' => 'Е-адреса не може бити прихваћена јер је неисправног облика.
@@ -956,7 +949,7 @@ $2',
 'user-mail-no-body' => 'Покушано слање електронске поруке с празним или неразумно кратким садржајем.',
 
 # Change password dialog
-'resetpass' => 'Промена лозинке',
+'changepassword' => 'Промени лозинку',
 'resetpass_announce' => 'Пријављени сте с привременом лозинком.
 Да бисте завршили пријаву, подесите нову лозинку овде:',
 'resetpass_text' => '<!-- Овде унесите текст -->',
@@ -988,18 +981,18 @@ $2',
 'passwordreset-email' => 'Е-адреса:',
 'passwordreset-emailtitle' => 'Детаљи налога на викију {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Неко, вероватно Ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
-Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
+Следећи {{PLURAL:$3|1=кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
 
-{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана}}.
+{{PLURAL:$3|1=Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|1=један дан|$5 дана}}.
 Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку и наставите користити стару лозинку.',
 'passwordreset-emailtext-user' => '{{GENDER:$1|Корисник|Корисница|Корисник}} је затражио подсетник о подацима за пријаву на викију {{SITENAME}} ($4).
-Следећи {{PLURAL:$3|кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
+Следећи {{PLURAL:$3|1=кориснички налог је повезан|кориснички налози су повезани}} с овом е-адресом:
 
 $2
 
-{{PLURAL:$3|Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
+{{PLURAL:$3|1=Привремена лозинка истиче|Привремене лозинке истичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
 Пријавите се и изаберите нову лозинку. Ако је неко други захтевао ову радњу или сте се сетили лозинке и не желите да је мењате, занемарите ову поруку.',
 'passwordreset-emailelement' => 'Корисничко име: $1
 Привремена лозинка: $2',
@@ -1036,7 +1029,7 @@ $2
 'image_tip' => 'Уграђена датотека',
 'media_sample' => 'Пример.ogg',
 'media_tip' => 'Веза',
-'sig_tip' => 'Ð\9fоÑ\82пиÑ\81 Ñ\81 тренутним временом',
+'sig_tip' => 'Ð\92аÑ\88 Ð¿Ð¾Ñ\82пиÑ\81 Ñ\81а тренутним временом',
 'hr_tip' => 'Водоравна линија (користити ретко)',
 
 # Edit pages
@@ -1062,7 +1055,7 @@ $2
 'blockedtitle' => 'Корисник је блокиран',
 'blockedtext' => "'''Ваше корисничко име или ИП адреса је блокирана.'''
 
-Блокирање је {{GENDER:$4|извршио|извршила|извршио}} $1.
+Блокирање је {{GENDER:$4|извршио|извршила}} $1.
 Разлог: ''$2''.
 
 * Датум блокирања: $8
@@ -1171,8 +1164,9 @@ $2
 'storedversion' => 'Ускладиштена измена',
 'nonunicodebrowser' => "'''Упозорење: ваш прегледач не подржава уникод.'''
 Промените га пре него што почнете с уређивањем.",
-'editingold' => "'''Упозорење: уређујете застарелу измену ове странице.
-Ако је сачувате, све новије измене ће бити изгубљене.'''",
+'editingold' => '<div style="background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;">Упозорење: Ви уређујете старију ревизију ове странице.<br />
+Ако је сачувате, све промене учињене од ове ревизије биће изгубљене.
+</div>',
 'yourdiff' => 'Разлике',
 'copyrightwarning' => "Имајте на уму да се сви доприноси на овом викију сматрају као објављени под лиценцом $2 (више на $1).
 Ако не желите да се ваши текстови мењају и размењују без ограничења, онда их не шаљите овде.<br />
@@ -1192,11 +1186,11 @@ $2
 Последња ставка у историји је приказана испод:",
 'semiprotectedpagewarning' => "'''Напомена:''' ова страница је заштићена, тако да само регистровани корисници могу да је уређују.
 Последњи запис у дневнику је приказан испод:",
-'cascadeprotectedwarning' => "'''Упозорење:''' ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:$1|следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:",
+'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Упозорење:''' Ова страница је заштићена тако да је могу уређивати само администратори, јер је она укључена у {{PLURAL:\$1|1=следећу страницу која је|следеће странице које су}} заштићене „преносивом“ заштитом:</div>",
 'titleprotectedwarning' => "'''Упозорење: ова страница је заштићена тако да је могу направити само корисници [[Special:ListGroupRights|с одређеним правима]].'''",
-'templatesused' => '{{PLURAL:$1|Шаблон|Шаблони}} на овој страници:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблони}} у овом прегледу:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон|Шаблони}} у овом одељку:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон|Шаблони}} на овој страници:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон|Шаблони}} у овом прегледу:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон|Шаблони}} у овом одељку:',
 'template-protected' => '(заштићен)',
 'template-semiprotected' => '(полузаштићен)',
 'hiddencategories' => 'Ова страница је члан {{PLURAL:$1|једне скривене категорије|$1 скривене категорије|$1 скривених категорија}}:',
@@ -1208,8 +1202,8 @@ $2
 'sectioneditnotsupported-title' => 'Уређивање одељка није подржано',
 'sectioneditnotsupported-text' => 'Уређивање одељка није подржано на овој страници.',
 'permissionserrors' => 'Грешка у дозволи',
-'permissionserrorstext' => 'Немате овлашћење за ту радњу из {{PLURAL:$1|следећег|следећих}} разлога:',
-'permissionserrorstext-withaction' => 'Немате дозволу за $2 из {{PLURAL:$1|следећег|следећих}} разлога:',
+'permissionserrorstext' => 'Немате овлашћење за ту радњу из {{PLURAL:$1|1=следећег|следећих}} разлога:',
+'permissionserrorstext-withaction' => 'Немате дозволу за $2 из {{PLURAL:$1|1=следећег|следећих}} разлога:',
 'recreate-moveddeleted-warn' => "'''Упозорење: поново правите страницу која је претходно обрисана.'''
 
 Размотрите да ли је прикладно да наставите с уређивањем ове странице.
@@ -1309,7 +1303,7 @@ $2
 Покушајте да [[Special:Search|претражите вики]] за сличне странице.',
 
 # Revision deletion
-'rev-deleted-comment' => '(опиÑ\81 Ð¸Ð·Ð¼ÐµÐ½Ðµ Ñ\98е Ñ\83клоÑ\9aен)',
+'rev-deleted-comment' => '(опис измене уклоњен)',
 'rev-deleted-user' => '(корисничко име је уклоњено)',
 'rev-deleted-event' => '(историја је уклоњена)',
 'rev-deleted-user-contribs' => '[корисничко име или ИП адреса је уклоњена – измена је сакривена са списка доприноса]',
@@ -1343,15 +1337,11 @@ $2
 'revisiondelete' => 'Обриши/врати измене',
 'revdelete-nooldid-title' => 'Нема тражене измене',
 'revdelete-nooldid-text' => 'Нисте навели жељену измену, она не постоји или покушавате да је сакријете.',
-'revdelete-nologtype-title' => 'Није наведена врста историје',
-'revdelete-nologtype-text' => 'Нисте навели врсту историје над којом желите да извршите ову радњу.',
-'revdelete-nologid-title' => 'Неисправан запис у дневнику',
-'revdelete-nologid-text' => 'Нисте одредили одредишну историју или наведени унос не постоји.',
 'revdelete-no-file' => 'Тражена датотека не постоји.',
 'revdelete-show-file-confirm' => 'Желите ли да видите обрисану измену датотеке „<nowiki>$1</nowiki>“ од $2; $3?',
 'revdelete-show-file-submit' => 'Да',
-'revdelete-selected' => "'''{{PLURAL:$2|Изабрана измена|Изабране измене}} странице '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Изабрана ставка у историји|Изабране ставке у историји}}:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Изабрана измена|Изабране измене}} странице '''[[:$1]]''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Изабрана ставка у историји|Изабране ставке у историји}}:'''",
 'revdelete-text' => "'''Обрисане измене ће и даље бити приказане у историји страница и записима, али делови њиховог садржаја неће бити доступни јавности.'''
 Други администратори на овом викију ће и даље имати приступ сакривеном садржају, а они ће тај садржај моћи да врате путем овог сучеља, осим ако нису постављена додатна ограничења.",
 'revdelete-confirm' => 'Потврдите да намеравате ово урадити, да разумете последице и да то чините у складу с [[{{MediaWiki:Policy-url}}|правилима]].',
@@ -1372,7 +1362,7 @@ $2
 'revdelete-suppress' => 'Сакриј податке од администратора и других корисника',
 'revdelete-unsuppress' => 'Уклони ограничења на враћеним изменама',
 'revdelete-log' => 'Разлог:',
-'revdelete-submit' => 'Примени на {{PLURAL:$1|изабрану измену|изабране измене}}',
+'revdelete-submit' => 'Примени на {{PLURAL:$1|1=изабрану измену|изабране измене}}',
 'revdelete-success' => "'''Видљивост измене је ажурирана.'''",
 'revdelete-failure' => "'''Не могу да ажурирам видљивост измене:'''
 $1",
@@ -1380,8 +1370,6 @@ $1",
 'logdelete-failure' => "'''Не могу да поставим видљивост историје:'''
 $1",
 'revdel-restore' => 'промени видљивост',
-'revdel-restore-deleted' => 'обрисане измене',
-'revdel-restore-visible' => 'видљиве измене',
 'pagehist' => 'Историја странице',
 'deletedhist' => 'Обрисана историја',
 'revdelete-hide-current' => 'Грешка при сакривању ставке од $1, $2: ово је тренутна измена.
@@ -1460,12 +1448,8 @@ $1",
 # 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}}',
@@ -1474,10 +1458,8 @@ $1",
 'nextn-title' => '$1 {{PLURAL:$1|следећи резултат|следећа резултата|следећих резултата}}',
 'shown-title' => 'Прикажи $1 {{PLURAL:$1|резултат|резултата|резултата}} по страници',
 'viewprevnext' => 'Погледај ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Поставке претраге',
 'searchmenu-exists' => "'''Постоји и чланак под називом „[[:$1]]“.'''",
 'searchmenu-new' => "'''Направите страницу „[[:$1]]“.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Прегледај странице с овим префиксом]]',
 'searchprofile-articles' => 'Чланци',
 'searchprofile-project' => 'Странице помоћи и пројеката',
 'searchprofile-images' => 'Датотеке',
@@ -1498,21 +1480,16 @@ $1",
 'search-interwiki-default' => '$1 резултати:',
 'search-interwiki-more' => '(више)',
 'search-relatedarticle' => 'Повезано',
-'mwsuggest-disable' => 'Онемогући предлоге при претраживању',
 'searcheverything-enable' => 'сви именски простори',
 'searchrelated' => 'повезано',
 'searchall' => 'све',
 'showingresults' => "Испод {{PLURAL:$1|је приказан '''1''' резултат|су приказана '''$1''' резултата|је приказано '''$1''' резултата}} почев од броја '''$2'''.",
 'showingresultsnum' => "Испод {{PLURAL:$3|је приказан '''1''' резултат|су приказана '''$3''' резултата|је приказано '''$3''' резултата}} почев од броја '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Резултат '''$1''' од '''$3'''|Резултата '''$1 – $2''' од '''$3'''}} за '''$4'''",
-'nonefound' => "'''Напомена''': само се неки именски простори претражују по подразумеваним поставкама.
-Ако желите све да претражите, додајте префикс '''all:''' испред траженог садржаја (ово укључује странице за разговор, шаблоне итд.) или користите префикс жељеног именског простора.",
+'showingresultsheader' => "{{PLURAL:$5|1=Резултат '''$1''' од '''$3'''|Резултата '''$1 – $2''' од '''$3'''}} за '''$4'''",
 'search-nonefound' => 'Нема поклапања.',
-'powersearch' => 'Претражи',
 'powersearch-legend' => 'Напредна претрага',
 'powersearch-ns' => 'Тражи у следећим именским просторима:',
 'powersearch-redir' => 'Списак преусмерења',
-'powersearch-field' => 'Тражи',
 'powersearch-togglelabel' => 'Изабери:',
 'powersearch-toggleall' => 'све',
 'powersearch-togglenone' => 'ништа',
@@ -1525,7 +1502,6 @@ $1",
 'preferences' => 'Подешавања',
 'mypreferences' => 'Подешавања',
 'prefs-edits' => 'Број измена:',
-'changepassword' => 'Промени лозинку',
 'prefs-skin' => 'Тема',
 'skin-preview' => 'Прегледај',
 'datedefault' => 'Свеједно',
@@ -1548,13 +1524,11 @@ $1",
 'prefs-email' => 'Поставке е-поште',
 'prefs-rendering' => 'Изглед',
 'saveprefs' => 'Сачувај',
-'resetprefs' => 'Очисти несачуване измене',
 'restoreprefs' => 'Врати све на подразумевано (у свим одељцима)',
 'prefs-editing' => 'Уређивање',
 'rows' => 'Редова:',
 'columns' => 'Колоне:',
 'searchresultshead' => 'Претрага',
-'resultsperpage' => 'Погодака по страници:',
 'stub-threshold' => 'Праг за обликовање <a href="#" class="stub">везе као клице</a> (у бајтовима):',
 'stub-threshold-disabled' => 'Онемогућено',
 'recentchangesdays' => 'Број дана у скорашњим изменама:',
@@ -1566,7 +1540,6 @@ $1",
 'localtime' => 'Локално време:',
 'timezoneuseserverdefault' => 'подразумеване вредности ($1)',
 'timezoneuseoffset' => 'друго (унесите одступање)',
-'timezoneoffset' => 'Одступање¹:',
 'servertime' => 'Време на серверу:',
 'guesstimezone' => 'попуни из прегледача',
 'timezoneregion-africa' => 'Африка',
@@ -1594,7 +1567,7 @@ $1",
 'youremail' => 'Е-адреса:',
 'username' => '{{GENDER:$1|Корисничко име}}:',
 'uid' => '{{GENDER:$1|Кориснички}} ID:',
-'prefs-memberingroups' => '{{GENDER:$2|Корисник|Корисница}} је члан {{PLURAL:$1|групе|група}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Корисник|Корисница}} је члан {{PLURAL:$1|1=групе|група}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Време уписа:',
 'prefs-registration-date-time' => '$1',
@@ -1659,7 +1632,7 @@ $1",
 'userrights-reason' => 'Разлог:',
 'userrights-no-interwiki' => 'Немате овлашћења да мењате корисничка права на другим викијима.',
 'userrights-nodatabase' => 'База података $1 не постоји или није локална.',
-'userrights-nologin' => 'Ð\9cоÑ\80аÑ\82е Ñ\81е [[Special:UserLogin|пÑ\80иÑ\98авиÑ\82и]] Ñ\81 Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\81ким Ð½Ð°Ð»Ð¾Ð³Ð¾Ð¼ Ð´Ð° Ð±Ð¸Ñ\81Ñ\82е Ð´Ð¾Ð´али корисничка права.',
+'userrights-nologin' => 'Ð\9cоÑ\80аÑ\82е Ñ\81е [[Special:UserLogin|пÑ\80иÑ\98авиÑ\82и]] Ñ\81 Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñ\81Ñ\82Ñ\80аÑ\82оÑ\80Ñ\81ким Ð½Ð°Ð»Ð¾Ð³Ð¾Ð¼ Ð´Ð° Ð±Ð¸Ñ\81Ñ\82е Ð¼ÐµÑ\9aали корисничка права.',
 'userrights-notallowed' => 'Немате овлашћења да додајете или уклањате корисничка права.',
 'userrights-changeable-col' => 'Групе које можете да промените',
 'userrights-unchangeable-col' => 'Групе које не можете да промените',
@@ -1673,14 +1646,14 @@ $1",
 'group-sysop' => 'Администратори',
 'group-bureaucrat' => 'Бирократе',
 'group-suppress' => 'Ревизори',
-'group-all' => '(Ñ\81ве)',
+'group-all' => '(Ñ\81ви)',
 
 '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|ревизор|ревизорка|ревизор}}',
+'group-suppress-member' => '{{GENDER:$1|ревизор|ревизорка}}',
 
 'grouppage-user' => '{{ns:project}}:Корисници',
 'grouppage-autoconfirmed' => '{{ns:project}}:Аутоматски потврђени корисници',
@@ -1714,7 +1687,7 @@ $1",
 'right-writeapi' => 'писање АПИ-ја',
 'right-delete' => 'брисање страница',
 'right-bigdelete' => 'брисање страница с великом историјом',
-'right-deletelogentry' => 'Ð\91рисање и враћање одређених ставки у дневнику',
+'right-deletelogentry' => 'брисање и враћање одређених ставки у дневнику',
 'right-deleterevision' => 'брисање и враћање одређених измена страница',
 'right-deletedhistory' => 'прегледање обрисаних ставки историје без повезаног текста',
 'right-deletedtext' => 'прегледање обрисаног текста и измена између обрисаних измена',
@@ -1727,17 +1700,17 @@ $1",
 'right-hideuser' => 'блокирање корисничког имена и његово сакривање од јавности',
 'right-ipblock-exempt' => 'заобилажење блокирања IP адресе, самоблокирања и блокирања опсега',
 'right-proxyunbannable' => 'заобилажење самоблокирања посредника',
-'right-unblockself' => 'Ð\9eдблокирај самог себе',
-'right-protect' => 'Ð\9fÑ\80омени Ð½Ð¸Ð²Ð¾Ðµ Ð·Ð°Ñ\88Ñ\82иÑ\82е Ð¸ Ñ\83Ñ\80еди ÐºÐ°Ñ\81кадно Ð·Ð°Ñ\88Ñ\82иÑ\9bене Ñ\81Ñ\82Ñ\80аниÑ\86е',
-'right-editprotected' => 'Уреди странице под заштитом „{{int:protect-level-sysop}}“',
-'right-editsemiprotected' => 'Уреди странице под заштитом „{{int:protect-level-autoconfirmed}}“',
+'right-unblockself' => 'одблокирај самог себе',
+'right-protect' => 'пÑ\80омени Ð½Ð¸Ð²Ð¾Ðµ Ð·Ð°Ñ\88Ñ\82иÑ\82е Ð¸ Ñ\83Ñ\80еди Ñ\81Ñ\82Ñ\80аниÑ\86е Ñ\81а Ð¿Ñ\80еноÑ\81ивом Ð·Ð°Ñ\88Ñ\82иÑ\82ом',
+'right-editprotected' => 'уреди странице под заштитом „{{int:protect-level-sysop}}“',
+'right-editsemiprotected' => 'уреди странице под заштитом „{{int:protect-level-autoconfirmed}}“',
 'right-editinterface' => 'уређивање корисничког окружења',
 'right-editusercssjs' => 'уређивање туђих CSS и јаваскрипт датотека',
 'right-editusercss' => 'уређивање туђих CSS датотека',
 'right-edituserjs' => 'уређивање туђих јаваскрипт датотека',
-'right-viewmyprivateinfo' => 'Ð\92идите своје личне податке (нпр. адресу е-поште, право име)',
-'right-editmyprivateinfo' => 'Уреди своје личне податке (нпр. адресу е-поште, право име)',
-'right-editmyoptions' => 'Уредите своја подешавања',
+'right-viewmyprivateinfo' => 'видите своје личне податке (нпр. адресу е-поште, право име)',
+'right-editmyprivateinfo' => 'уреди своје личне податке (нпр. адресу е-поште, право име)',
+'right-editmyoptions' => 'уредите своја подешавања',
 'right-rollback' => 'брзо враћање измена последњег корисника који је мењао одређену страницу',
 'right-markbotedits' => 'означавање враћених измена као измене бота',
 'right-noratelimit' => 'отпорност на ограничења',
@@ -1813,8 +1786,9 @@ $1",
 'recentchanges-label-minor' => 'Мања измена',
 'recentchanges-label-bot' => 'Ову измену је направио бот',
 'recentchanges-label-unpatrolled' => 'Ова измена још није прегледана',
-'recentchanges-legend-newpage' => '(такође погледајте [[Special:NewPages|списак нових страница]])',
-'rcnote' => "Испод {{PLURAL:$1|је '''1''' измена|су последње '''$1''' измене|су последњих '''$1''' измена}} {{PLURAL:$2|претходни дан|у последњa '''$2''' дана|у последњих '''$2''' дана}}, од $4; $5.",
+'recentchanges-label-plusminus' => 'Промена величине странице (у бајтовима)',
+'recentchanges-legend-heading' => "'''Легенда:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|списак нових страница]])',
 'rcnotefrom' => 'Испод су измене од <b>$3; $4</b> (до <b>$1</b> измена).',
 'rclistfrom' => 'Прикажи нове измене почев од $1',
 'rcshowhideminor' => '$1 мање измене',
@@ -1872,9 +1846,9 @@ $1",
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Слика.jpg]]</nowiki></code>''' за верзију слике у пуној величини
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Слика.png|200п|мини|лево|опис]]</nowiki></code>''' за верзију слике с величином од 200 пиксела која је приказана у засебном оквиру, заједно с описом.
 * '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Датотека.ogg]]</nowiki></code>''' за директно повезивање с датотеком без њеног приказивања",
-'upload-permitted' => 'Ð\94озвоÑ\99ене Ð²Ñ\80Ñ\81Ñ\82е датотека: $1.',
-'upload-preferred' => 'Пожељне врсте датотека: $1.',
-'upload-prohibited' => 'Ð\97абÑ\80аÑ\9aене Ð²Ñ\80Ñ\81Ñ\82е датотека: $1.',
+'upload-permitted' => 'Ð\94озвоÑ\99ени Ñ\82ипови датотека: $1.',
+'upload-preferred' => 'Препоручени типови датотека: $1.',
+'upload-prohibited' => 'Ð\97абÑ\80аÑ\9aени Ñ\82ипови датотека: $1.',
 'uploadlog' => 'дневник отпремања',
 'uploadlogpage' => 'Дневник отпремања',
 'uploadlogpagetext' => 'Испод је списак скорашњих слања.
@@ -1894,12 +1868,12 @@ $1",
 'filename-toolong' => 'Називи датотека могу имати највише 240 бајтова.',
 'badfilename' => 'Назив датотеке је промењен у „$1“.',
 'filetype-mime-mismatch' => 'Екстензија „.$1“ не одговара препознатој врсти MIME датотеке ($2).',
-'filetype-badmime' => 'Датотеке MIME врсте „$1“ није дозвољено слати.',
+'filetype-badmime' => 'Датотеке MIME типа „$1“ није дозвољено слати.',
 'filetype-bad-ie-mime' => 'Ова датотека се не може послати зато што би је Интернет експлорер уочио као „$1“, а то је забрањена и опасна врста датотеке.',
 'filetype-unwanted-type' => '„.$1“ је непожељна врста датотеке.
-{{PLURAL:$3|Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|је забрањена врста датотеке|су забрањене врсте датотека}}.
-{{PLURAL:$3|Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.',
+{{PLURAL:$3|1=Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|1=је забрањена врста датотеке|су забрањене врсте датотека}}.
+{{PLURAL:$3|1=Дозвољена врста датотеке је|Дозвољене врсте датотека су}} $2.',
 'filetype-missing' => 'Ова датотека нема екстензију.',
 'empty-file' => 'Послата датотека је празна.',
 'file-too-large' => 'Послата датотека је превелика.',
@@ -1941,7 +1915,7 @@ $1",
 'fileexists-shared-forbidden' => 'Датотека с овим називом већ постоји у заједничком складишту.
 Вратите се и пошаљите датотеку с другим називом.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|следеће датотеке|следећих датотека}}:',
+'file-exists-duplicate' => 'Ово је дупликат {{PLURAL:$1|1=следеће датотеке|следећих датотека}}:',
 'file-deleted-duplicate' => 'Датотека истоветна овој ([[:$1]]) је претходно обрисана.
 Погледајте историју брисања пре поновног слања.',
 'uploadwarning' => 'Упозорење при отпремању',
@@ -1964,7 +1938,7 @@ $1",
 'sourcefilename' => 'Назив изворне датотеке:',
 'sourceurl' => 'Адреса извора:',
 'destfilename' => 'Назив:',
-'upload-maxfilesize' => 'Ð\9dаÑ\98веÑ\9bа величина датотеке: $1',
+'upload-maxfilesize' => 'Ð\9cакÑ\81имална величина датотеке: $1',
 'upload-description' => 'Опис датотеке',
 'upload-options' => 'Поставке слања',
 'watchthisupload' => 'Надгледај ову датотеку',
@@ -2112,7 +2086,7 @@ $1',
 'nolicense' => 'није изабрано',
 'license-nopreview' => '(преглед није доступан)',
 'upload_source_url' => ' (исправна и јавно доступна адреса)',
-'upload_source_file' => ' (датотека на вашем рачунару)',
+'upload_source_file' => '(датотека на вашем рачунару)',
 
 # Special:ListFiles
 'listfiles-summary' => 'Ова посебна страница приказује све послате датотеке.',
@@ -2226,7 +2200,7 @@ $1',
 
 # Random page
 'randompage' => 'Случајна страница',
-'randompage-nopages' => 'Нема страница у {{PLURAL:$2|следећем именском простору|следећим именским просторима}}: $1.',
+'randompage-nopages' => 'Нема страница у {{PLURAL:$2|1=следећем именском простору|следећим именским просторима}}: $1.',
 
 # Random page in category
 'randomincategory' => 'Случајна страница у категорији',
@@ -2246,13 +2220,13 @@ $1',
 'statistics-articles' => 'Странице са садржајем',
 'statistics-pages' => 'Страница',
 'statistics-pages-desc' => 'Све странице на викију, укључујући странице за разговор, преусмерења итд.',
-'statistics-files' => 'Ð\9eÑ\82пÑ\80емÑ\99ено датотека',
+'statistics-files' => 'Ð\91Ñ\80оÑ\98 Ð¿Ð¾Ñ\81лаÑ\82иÑ\85 датотека',
 'statistics-edits' => 'Број измена страница откад постоји {{SITENAME}}',
 'statistics-edits-average' => 'Просечан број измена по страници',
 'statistics-views-total' => 'Укупно прегледа',
 'statistics-views-total-desc' => 'Прегледи непостојећих и посебних страница нису укључени',
 'statistics-views-peredit' => 'Прегледа по измени',
-'statistics-users' => 'УпиÑ\81ани ÐºÐ¾Ñ\80иÑ\81ниÑ\86и ([[Special:ListUsers|Ñ\81пиÑ\81ак Ñ\87ланова]])',
+'statistics-users' => 'РегиÑ\81Ñ\82Ñ\80овани [[Special:ListUsers|коÑ\80иÑ\81ниÑ\86и]]',
 'statistics-users-active' => 'Активни корисници',
 'statistics-users-active-desc' => 'Корисници који су извршили бар једну радњу {{PLURAL:$1|претходни дан|у последња $1 дана|у последњих $1 дана}}',
 'statistics-mostpopular' => 'Најпосећеније странице',
@@ -2298,7 +2272,7 @@ $1',
 'lonelypages' => 'Сирочићи',
 'lonelypagestext' => 'Следеће странице нису повезане с другим страницама, нити су укључене трансклузијом у друге странице.',
 'uncategorizedpages' => 'Некатегорисане странице',
-'uncategorizedcategories' => 'Некатегорисане странице',
+'uncategorizedcategories' => 'Некатегорисане категорије',
 'uncategorizedimages' => 'Датотеке без категорија',
 'uncategorizedtemplates' => 'Некатегорисани шаблони',
 'unusedcategories' => 'Некоришћене категорије',
@@ -2327,10 +2301,8 @@ $1',
 'protectedpages' => 'Заштићене странице',
 'protectedpages-indef' => 'само неограничене заштите',
 'protectedpages-cascade' => 'само преносиве заштите',
-'protectedpagestext' => 'Следеће странице су заштићене од премештања или уређивања',
 'protectedpagesempty' => 'Нема заштићених страница с овим параметрима.',
 'protectedtitles' => 'Заштићени наслови',
-'protectedtitlestext' => 'Следећи наслови су заштићени од стварања',
 'protectedtitlesempty' => 'Нема заштићених наслова с овим параметрима.',
 'listusers' => 'Списак корисника',
 'listusers-editsonly' => 'прикажи само кориснике који су уређивали',
@@ -2350,7 +2322,7 @@ $1',
 'nopagetitle' => 'Не постоји таква страница',
 'nopagetext' => 'Тражена страница не постоји.',
 'pager-newer-n' => '{{PLURAL:$1|новији 1|новија $1|новијих $1}}',
-'pager-older-n' => '{{PLURAL:$1|старији 1|старија $1|старијих $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=старији 1|старијих $1}}',
 'suppress' => 'Надзор',
 'querypage-disabled' => 'Ова посебна страница је онемогућена ради побољшања перформанси.',
 
@@ -2382,9 +2354,6 @@ $1',
 'allpagesto' => 'Прикажи странице завршно са:',
 'allarticles' => 'Све странице',
 'allinnamespace' => 'Све странице (именски простор $1)',
-'allnotinnamespace' => 'Све странице ван именског простора $1',
-'allpagesprev' => 'Претходна',
-'allpagesnext' => 'Следећа',
 'allpagessubmit' => 'Иди',
 'allpagesprefix' => 'Прикажи странице с префиксом:',
 'allpagesbadtitle' => 'Наведени назив странице није исправан или садржи међујезички или међувики префикс.
@@ -2399,7 +2368,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категоријe',
-'categoriespagetext' => '{{PLURAL:$1|Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.
+'categoriespagetext' => '{{PLURAL:$1|1=Следећа категорија садржи|Следеће категорије садрже}} странице или датотеке.
 [[Special:UnusedCategories|Некоришћене категорије]] нису приказане овде.
 Погледајте и [[Special:WantedCategories|тражене категорије]].',
 'categoriesfrom' => 'Прикажи категорије почев од:',
@@ -2418,7 +2387,7 @@ $1',
 'linksearch-ok' => 'Претражи',
 'linksearch-text' => 'Могу се користити џокери попут „*.wikipedia.org“.
 Потребан је највиши домен, као „*.org“.<br />
-{{PLURAL:$2|Подржан протокол|Подржани протоколи}}: <code>$1</code> (задаје http:// ако не наведете протокол).',
+{{PLURAL:$2|1=Подржан протокол|Подржани протоколи}}: <code>$1</code> (задаје http:// ако не наведете протокол).',
 'linksearch-line' => '$1 веза у $2',
 'linksearch-error' => 'Џокери се могу појавити само на почетку адресе.',
 
@@ -2450,12 +2419,12 @@ $1',
 'listgrouprights-members' => '(списак чланова)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'додаје {{PLURAL:$2|следећу групу|следеће групе}}: $1',
-'listgrouprights-removegroup' => 'брише {{PLURAL:$2|следећу групу|следеће групе}}: $1',
+'listgrouprights-addgroup' => 'додаје {{PLURAL:$2|1=следећу групу|следеће групе}}: $1',
+'listgrouprights-removegroup' => 'брише {{PLURAL:$2|1=следећу групу|следеће групе}}: $1',
 'listgrouprights-addgroup-all' => 'додавање свих група',
 'listgrouprights-removegroup-all' => 'брисање свих група',
-'listgrouprights-addgroup-self' => 'додавање {{PLURAL:$2|групе|група}} на свој налог: $1',
-'listgrouprights-removegroup-self' => 'уклањање {{PLURAL:$2|групе|група}} са свог налога: $1',
+'listgrouprights-addgroup-self' => 'додавање {{PLURAL:$2|1=групе|група}} на свој налог: $1',
+'listgrouprights-removegroup-self' => 'уклањање {{PLURAL:$2|1=групе|група}} са свог налога: $1',
 'listgrouprights-addgroup-self-all' => 'Додај све групе на сопствени налог',
 'listgrouprights-removegroup-self-all' => 'Уклони све групе са сопственог налога',
 
@@ -2507,7 +2476,7 @@ $1',
 'watchnologintext' => 'Морате бити [[Special:UserLogin|пријављени]] да бисте мењали списак надгледања.',
 'addwatch' => 'Додај на списак надгледања',
 'addedwatchtext' => 'Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|списак надгледања]].
-Будуће измене ове странице и њене странице за разговор биће наведене тамо.',
+Будуће измене ове странице и њене странице за разговор биће наведене овде.',
 'removewatch' => 'Уклони са списка надгледања',
 'removedwatchtext' => 'Страница „[[:$1]]“ је уклоњена с вашег [[Special:Watchlist|списка надгледања]].',
 'watch' => 'Надгледај',
@@ -2516,7 +2485,7 @@ $1',
 'unwatchthispage' => 'Прекини надгледање',
 'notanarticle' => 'Није страница са садржајем',
 'notvisiblerev' => 'Измена је обрисана',
-'watchlist-details' => '{{PLURAL:$1|$1 страница|$1 странице|$1 страница}} на вашем списку надгледања, не рачунајући странице за разговор.',
+'watchlist-details' => 'Имате {{PLURAL:$1|$1 страница|$1 странице|$1 страница}} на вашем списку надгледања, не рачунајући странице за разговор.',
 'wlheader-enotif' => 'Обавештење е-поруком је омогућено.',
 'wlheader-showupdated' => "Странице које су измењене откад сте их последњи пут посетили су '''подебљане'''.",
 'watchmethod-recent' => 'проверава се да ли има надгледаних страница у скорашњим изменама',
@@ -2630,8 +2599,8 @@ $UNWATCHURL
 'editcomment' => "Опис измене: \"''\$1''\".",
 'revertpage' => 'Враћене измене [[Special:Contributions/$2|$2]] ([[User talk:$2|разговор]]) на последњу измену корисника [[User:$1|$1]]',
 'revertpage-nouser' => 'Враћене су измене скривеног корисника на последњу измену {{GENDER:$1|корисника|кориснице}} [[User:$1|$1]]',
-'rollback-success' => 'Враћене су измене {{GENDER:$1|корисника|кориснице|корисника}} $1
-на последњу измену {{GENDER:$2|корисника|кориснице|корисника}} $2.',
+'rollback-success' => 'Враћене су измене {{GENDER:$1|корисника|кориснице}} $1
+на последњу измену {{GENDER:$2|корисника|кориснице}} $2.',
 
 # Edit tokens
 'sessionfailure-title' => 'Сесија је окончана',
@@ -2640,12 +2609,12 @@ $UNWATCHURL
 Вратите се на претходну страницу, поново је учитајте и покушајте поново.',
 
 # Protect
-'protectlogpage' => 'Дневник заштите',
+'protectlogpage' => 'Дневник закључавања',
 'protectlogtext' => 'Испод је списак измена у виду заштите страница.
 Погледајте [[Special:ProtectedPages|списак заштићених страница]] за више детаља.',
-'protectedarticle' => '{{GENDER:|је заштитио|је заштитила|је заштитио}} „[[$1]]“',
+'protectedarticle' => '{{GENDER:|је заштитио|је заштитила}} „[[$1]]“',
 'modifiedarticleprotection' => '{{GENDER:|је променио|је променила|је променио}} степен заштите за „[[$1]]“',
-'unprotectedarticle' => '{{GENDER:|је уклонио|је уклонила|је уклонио}} заштиту са странице „[[$1]]“',
+'unprotectedarticle' => 'уклоњена заштита са странице „[[$1]]“',
 'movedarticleprotection' => '{{GENDER:|је преместио|је преместила|је преместио}} поставке заштите са „[[$2]]“ на „[[$1]]“',
 'protect-title' => 'Степен заштите за „$1“',
 'protect-title-notallowed' => 'Преглед степена заштите за „$1“',
@@ -2666,7 +2635,7 @@ $UNWATCHURL
 Ово су поставке странице '''$1''':",
 'protect-locked-access' => "Немате овлашћења за мењање степена заштите странице.
 Ово су тренутне поставке странице '''$1''':",
-'protect-cascadeon' => 'Ова страница је тренутно заштићена јер се налази на {{PLURAL:$1|страници која има|страницама које имају}} преносиву заштиту.
+'protect-cascadeon' => 'Ова страница је тренутно заштићена јер се налази на {{PLURAL:$1|1=страници која има|страницама које имају}} преносиву заштиту.
 Можете да промените степен заштите, али то неће утицати на преносиву заштиту.',
 'protect-default' => 'Дозволи свим корисницима',
 'protect-fallback' => 'Дозвољено само корисницима са дозволом „$1“',
@@ -2732,7 +2701,6 @@ $UNWATCHURL
 'undeletebtn' => 'Врати',
 'undeletelink' => 'погледај/врати',
 'undeleteviewlink' => 'погледај',
-'undeletereset' => 'Поништи',
 'undeleteinvert' => 'Обрни избор',
 'undeletecomment' => 'Разлог:',
 'undeletedrevisions' => '{{PLURAL:$1|Измена је враћена|$1 измене су враћене|$1 измена је враћено}}',
@@ -2768,11 +2736,11 @@ $1',
 'tooltip-invert' => 'Означите ову кућицу да бисте сакрили измене на страницама у одабраном именском простору (и повезаним именским просторима, ако је означено)',
 'namespace_association' => 'Повезани именски простор',
 'tooltip-namespace_association' => 'Означите ову кућицу да бисте укључили и разговор или именски простор теме која је повезана с одабраним именским простором',
-'blanknamespace' => '(Ð\93лавно)',
+'blanknamespace' => '(главни)',
 
 # Contributions
 'contributions' => '{{GENDER:$1|Кориснички}} доприноси',
-'contributions-title' => 'Доприноси {{GENDER:$1|корисника|кориснице|корисника}} $1',
+'contributions-title' => 'Доприноси {{GENDER:$1|корисника|кориснице}} $1',
 'mycontris' => 'Доприноси',
 'contribsub2' => 'За {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Измене које одговарају овим условима нису пронађене.',
@@ -2807,8 +2775,8 @@ $1',
 'isredirect' => 'преусмерење',
 'istemplate' => 'укључивање',
 'isimage' => 'веза до датотеке',
-'whatlinkshere-prev' => '{{PLURAL:$1|претходни|претходних $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|следећи|следећих $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=претходни|претходних $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=следећи|следећих $1}}',
 'whatlinkshere-links' => '← везе',
 'whatlinkshere-hideredirs' => '$1 преусмерења',
 'whatlinkshere-hidetrans' => '$1 укључивања',
@@ -2817,11 +2785,10 @@ $1',
 'whatlinkshere-filters' => 'Филтери',
 
 # Block/unblock
-'autoblockid' => 'Самоблокирање #$1',
+'autoblockid' => 'Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ко блокирање #$1',
 'block' => 'Блокирај корисника',
 'unblock' => 'Деблокирај корисника',
 'blockip' => 'Блокирај корисника',
-'blockip-title' => 'Блокирање корисника',
 'blockip-legend' => 'Блокирај корисника',
 'blockiptext' => 'Користите доњи образац да бисте забранили приступ за писање с одређене ИП адресе или корисничког имена.
 Ово би требало да вршите само ради спречавања вандализма, у складу са [[{{MediaWiki:Policy-url}}|смерницама]].
@@ -2829,7 +2796,6 @@ $1',
 'ipadressorusername' => 'ИП адреса или корисничко име:',
 'ipbexpiry' => 'Истиче:',
 'ipbreason' => 'Разлог:',
-'ipbreasonotherlist' => 'Други разлог',
 'ipbreason-dropdown' => '*Најчешћи разлози за блокирање
 ** Уношење лажних информација
 ** Уклањање садржаја са страница
@@ -2845,8 +2811,6 @@ $1',
 'ipbsubmit' => 'Блокирај овог корисника',
 'ipbother' => 'Друго време:',
 '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',
-'ipbotheroption' => 'друго',
-'ipbotherreason' => 'Други/додатни разлог:',
 'ipbhidename' => 'Сакриј корисничко име са измена и спискова',
 'ipbwatchuser' => 'Надгледај корисничке странице и странице за разговор овог корисника',
 'ipb-disableusertalk' => 'Забрани овом кориснику да уређује своју страницу за разговор док је блокиран',
@@ -2884,8 +2848,8 @@ $1',
 'blocklist-reason' => 'Разлог',
 'ipblocklist-submit' => 'Претражи',
 'ipblocklist-localblock' => 'Локално блокирање',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Друго блокирање|Друга блокирања}}',
-'infiniteblock' => 'никада',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Друго блокирање|Друга блокирања}}',
+'infiniteblock' => 'трајно',
 'expiringblock' => 'истиче дана $1 у $2',
 'anononlyblock' => 'само анонимни',
 'noautoblockblock' => 'аутоматско блокирање је онемогућено',
@@ -2899,19 +2863,19 @@ $1',
 'change-blocklink' => 'промени блокирање',
 'contribslink' => 'доприноси',
 'emaillink' => 'пошаљи е-поруку',
-'autoblocker' => 'СамоблокиÑ\80ани Ñ\81Ñ\82е Ñ\98еÑ\80 Ð´ÐµÐ»Ð¸Ñ\82е Ð\98Ð\9f Ð°Ð´Ñ\80еÑ\81Ñ\83 Ñ\81 {{GENDER:$1|коÑ\80иÑ\81ником|коÑ\80иÑ\81ниÑ\86ом|коÑ\80иÑ\81ником}} [[User:$1|$1]].
-Разлог блокирања: "\'\'\'$2\'\'\'"',
+'autoblocker' => 'Ð\90Ñ\83Ñ\82омаÑ\82Ñ\81ки Ñ\81Ñ\82е Ð±Ð»Ð¾ÐºÐ¸Ñ\80ани Ñ\98еÑ\80 Ð´ÐµÐ»Ð¸Ñ\82е Ð\98Ð\9f Ð°Ð´Ñ\80еÑ\81Ñ\83 Ñ\81 {{GENDER:$1|коÑ\80иÑ\81ником|коÑ\80иÑ\81ниÑ\86ом}} [[User:$1|$1]].
+Разлог блокирања: „$2“',
 'blocklogpage' => 'Дневник блокирања',
 'blocklog-showlog' => '{{GENDER:$1|Овај корисник је раније блокиран|Ова корисница је раније блокирана|Овај корисник је раније блокиран}}.
 Историја блокирања се налази испод:',
 'blocklog-showsuppresslog' => '{{GENDER:|Овај корисник је раније блокиран и сакривен|Ова корисница је раније блокирана и сакривена|Овај корисник је раније блокиран и сакривен}}.
 Историја сакривања се налази испод:',
-'blocklogentry' => '{{GENDER:|је блокирао|је блокирала|је блокирао}} „[[$1]]” с роком истицања од $2 $3',
+'blocklogentry' => '{{GENDER:|је блокирао|је блокирала}} [[$1]] с роком истицања од $2 $3',
 'reblock-logentry' => '{{GENDER:|је променио|је променила|је променио}} подешавања за блокирање {{GENDER:$1|корисника|кориснице|корисника}} [[$1]] с роком истека од $2 ($3)',
 'blocklogtext' => 'Ово је дневник блокирања и деблокирања корисника.
 Аутоматски блокиране ИП адресе нису наведене.
 Текуће забране и блокирања можете наћи [[Special:BlockList|овде]].',
-'unblocklogentry' => '{{GENDER:|је деблокирао|је деблокирала|је деблокирао}} „$1“',
+'unblocklogentry' => '{{GENDER:|је деблокирао|је деблокирала}} $1',
 'block-log-flags-anononly' => 'само анонимни корисници',
 'block-log-flags-nocreate' => 'онемогућено отварање налога',
 'block-log-flags-noautoblock' => 'аутоматско блокирање је онемогућено',
@@ -2925,7 +2889,7 @@ $1',
 'ipb_hide_invalid' => 'Не могу да потиснем овај налог. Можда има превише измена.',
 'ipb_already_blocked' => '„$1“ је већ блокиран',
 'ipb-needreblock' => '$1 је већ блокиран. Желите ли да промените подешавања?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Друга блокада|Друге блокаде}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Друга блокада|Друге блокаде}}',
 'unblock-hideuser' => 'Не можете деблокирати овог корисника јер је његово корисничко име сакривено.',
 'ipb_cant_unblock' => 'Грешка: блокада $1 не постоји. Можда је корисник деблокиран.',
 'ipb_blocked_as_range' => 'Грешка: ИП адреса $1 није директно блокирана и не може да се деблокира.
@@ -2939,7 +2903,6 @@ $1',
 'sorbsreason' => 'Ваша ИП адреса је наведена као отворени посредник у DNSBL-у који користи {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Ваша ИП адреса је наведена као отворени посредник у DNSBL-у који користи {{SITENAME}}.
 Не можете да отворите налог.',
-'cant-block-while-blocked' => 'Не можете да блокирате друге кориснике док сте и сами блокирани.',
 'cant-see-hidden-user' => 'Члан коме желите да забраните приступ је већ блокиран и сакривен.
 С обзиром на то да немате права за сакривање корисника, не можете да видите нити измените забрану.',
 'ipbblocked' => 'Не можете забранити или вратити приступ другим корисницима јер сте и сами блокирани',
@@ -3000,7 +2963,6 @@ $1',
 У овом случају мора ручно да се премести или споји, ако има потребе за тим.',
 'movearticle' => 'Премести страницу:',
 'moveuserpage-warning' => "'''Упозорење:''' на путу сте да преместите корисничку страницу. Имајте у виду да ће само страница бити премештена, а сам корисник ''неће'' бити преименован.",
-'movenologin' => 'Нисте пријављени',
 'movenologintext' => 'Морате да будете регистровани и [[Special:UserLogin|пријављени]] да бисте премештали странице.',
 'movenotallowed' => 'Немате дозволу да премештате странице.',
 'movenotallowedfile' => 'Немате дозволу да премештате датотеке.',
@@ -3016,9 +2978,6 @@ $1',
 'articleexists' => 'Страница с тим именом већ постоји, или је име неисправно.
 Изаберите друго име.',
 'cantmove-titleprotected' => 'Не можете да преместите страницу на то место јер је жељени наслов заштићен од стварања',
-'talkexists' => "'''Сама страница је премештена, али страница за разговор није јер таква већ постоји на новом наслову.
-Ручно их спојите.'''",
-'movedto' => 'премештена на',
 'movetalk' => 'Премести и страницу за разговор',
 'move-subpages' => 'Премести и подстранице (до $1)',
 'move-talk-subpages' => 'Премести подстранице странице за разговор (до $1)',
@@ -3028,7 +2987,7 @@ $1',
 'movepage-max-pages' => 'Највише $1 {{PLURAL:$1|страница је премештена|странице су премештене|страница је премештено}}, и више не може да буде аутоматски премештено.',
 'movelogpage' => 'Дневник премештања',
 'movelogpagetext' => 'Испод се налази списак премештања страница.',
-'movesubpage' => '{{PLURAL:$1|Подстраница|Подстранице|Подстраница}}',
+'movesubpage' => '{{PLURAL:$1|1=Подстраница|Подстранице}}',
 'movesubpagetext' => 'Ова страница има $1 {{PLURAL:$1|подстраницу приказану|подстранице приказане|подстраница приказаних}} испод.',
 'movenosubpage' => 'Ова страница нема подстрана.',
 'movereason' => 'Разлог:',
@@ -3165,7 +3124,7 @@ $1',
 'import-error-special' => 'Не могу да увезем страницу „$1“ јер она припада посебном именском простору које не прихвата странице.',
 'import-error-invalid' => 'Не могу да увезем страницу „$1“ јер је њен назив неисправан.',
 'import-error-unserialize' => 'Верзија $2 странице $1 не може бити прочитана/увезена. Записано је да верзија користи $3 тип садржаја у $4 формату.',
-'import-options-wrong' => '{{PLURAL:$2|Погрешна опција|Погрешне опције}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Погрешна опција|Погрешне опције}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Наведена основна страница има неисправан наслов.',
 'import-rootpage-nosubpage' => 'Именски простор „$1“ основне странице не дозвољава подстранице.',
 
@@ -3229,7 +3188,7 @@ $1',
 'tooltip-t-emailuser' => 'Пошаљите е-поруку овом кориснику',
 'tooltip-t-upload' => 'Пошаљите датотеке',
 'tooltip-t-specialpages' => 'Списак свих посебних страница',
-'tooltip-t-print' => 'Ð\98здаÑ\9aе Ð·Ð° Ñ\88Ñ\82ампаÑ\9aе Ð¾Ð²Ðµ Ñ\81Ñ\82Ñ\80аниÑ\86е',
+'tooltip-t-print' => 'Ð\92еÑ\80зиÑ\98а Ð¾Ð²Ðµ Ñ\81Ñ\82Ñ\80аниÑ\86е Ð·Ð° Ñ\88Ñ\82ампаÑ\9aе',
 'tooltip-t-permalink' => 'Стална веза ка овој измени странице',
 'tooltip-ca-nstab-main' => 'Погледајте страницу са садржајем',
 'tooltip-ca-nstab-user' => 'Погледајте корисничку страницу',
@@ -3284,14 +3243,14 @@ $1',
 'notacceptable' => 'Сервер не може да направи податке у формату погодном за ваш клијент.',
 
 # Attribution
-'anonymous' => 'Анонимни {{PLURAL:$1|корисник|корисници}} на пројекту {{SITENAME}}',
+'anonymous' => 'Анонимни {{PLURAL:$1|1=корисник|корисници}} на пројекту {{SITENAME}}',
 'siteuser' => '{{SITENAME}} корисник $1',
 'anonuser' => '{{SITENAME}} анониман корисник $1',
 'lastmodifiedatby' => 'Ову страницу је последњи пут {{GENDER:$4|изменио|изменила|изменио}} $3, $1 у $2.',
 'othercontribs' => 'Засновано на раду корисникâ $1.',
 'others' => 'други',
-'siteusers' => '{{PLURAL:$2|корисник|корисници}} на пројекту {{SITENAME}} $1',
-'anonusers' => '{{PLURAL:$2|анониман корисник|анонимни корисници}} на пројекту {{SITENAME}} $1',
+'siteusers' => '{{PLURAL:$2|1=корисник|корисници}} на пројекту {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|1=анониман корисник|анонимни корисници}} на пројекту {{SITENAME}} $1',
 'creditspage' => 'Аутори странице',
 'nocredits' => 'Не постоје подаци о аутору ове странице.',
 
@@ -3323,7 +3282,7 @@ $1',
 'pageinfo-robot-noindex' => 'Није дозвољено',
 'pageinfo-views' => 'Број прегледа',
 'pageinfo-watchers' => 'Број надгледача страница',
-'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|пратиоца|пратилаца}}',
+'pageinfo-few-watchers' => 'Мање од $1 {{PLURAL:$1|1=пратиоца|пратилаца}}',
 'pageinfo-redirects-name' => 'Број преусмерења на ову страницу',
 'pageinfo-subpages-name' => 'Подстранице ове странице',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|преусмерење|преусмерења|преусмерења}}; $3 {{PLURAL:$3|непреусмерење|непреусмерења|непреусмерења}})',
@@ -3335,10 +3294,10 @@ $1',
 'pageinfo-authors' => 'Број засебних аутора',
 'pageinfo-recent-edits' => 'Број скорашњих измена (у последњих $1)',
 'pageinfo-recent-authors' => 'Број скорашњих засебних аутора',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магична реч|Магичне речи}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Сакривена категорија|Сакривене категорије}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Укључени шаблон|Укључени шаблони}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|Страница|Странице}} укључене у ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магична реч|Магичне речи}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Сакривена категорија|Сакривене категорије}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Укључени шаблон|Укључени шаблони}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|1=Страница|Странице}} укључене у ($1)',
 'pageinfo-toolboxlink' => 'Подаци о страници',
 'pageinfo-redirectsto' => 'Преусмерава на',
 'pageinfo-redirectsto-info' => 'подаци',
@@ -3407,7 +3366,7 @@ $1',
 'svg-long-error' => 'Неисправна SVG датотека: $1',
 'show-big-image' => 'Пуна величина',
 'show-big-image-preview' => 'Величина овог приказа: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Друга резолуција|Друге резолуције}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Друга резолуција|Друге резолуције}}: $1.',
 'show-big-image-size' => '$1 × $2 пиксела',
 'file-info-gif-looped' => 'петља',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадра|кадрова}}',
@@ -3440,15 +3399,15 @@ $1',
 'hours' => '{{PLURAL:$1|$1 сат|$1 сата|$1 сати}}',
 'days' => '{{PLURAL:$1|$1 дан|$1 дана|$1 дана}}',
 'weeks' => '{{PLURAL:$1|$1 седмица}}',
-'months' => '{{PLURAL:$1|$1 месец|$1 месеци}}',
-'years' => '{{PLURAL:$1|$1 година|$1 године}}',
+'months' => '{{PLURAL:$1|1=$1 месец|$1 месеци}}',
+'years' => '{{PLURAL:$1|1=$1 година|$1 године}}',
 'ago' => 'пре $1',
 'just-now' => 'управо сад',
 
 # Human-readable timestamps
-'hours-ago' => 'Пре $1 {{PLURAL:$1|сат|сати}}',
-'minutes-ago' => 'Пре $1 {{PLURAL:$1|минут|минута}}',
-'seconds-ago' => 'Пре $1 {{PLURAL:$1|секунда|секунди}}',
+'hours-ago' => 'Пре $1 {{PLURAL:$1|1=сат|сати}}',
+'minutes-ago' => 'Пре $1 {{PLURAL:$1|1=минут|минута}}',
+'seconds-ago' => 'Пре $1 {{PLURAL:$1|1=секунда|секунди}}',
 'monday-at' => 'Понедељак у $1',
 'tuesday-at' => 'Уторак у $1',
 'wednesday-at' => 'Среда у $1',
@@ -3704,7 +3663,7 @@ Variants for Chinese language
 'exif-copyrightowner' => 'Носилац ауторског права',
 'exif-usageterms' => 'Правила коришћења',
 'exif-webstatement' => 'Изјава о ауторском праву',
-'exif-originaldocumentid' => 'Јединствени ИБ изворног документа',
+'exif-originaldocumentid' => 'Јединствени ID изворног документа',
 'exif-licenseurl' => 'Адреса лиценце за ауторска права',
 'exif-morepermissionsurl' => 'Резервни подаци о лиценцирању',
 'exif-attributionurl' => 'При поновном коришћењу овог рада, користите везу до',
@@ -3971,15 +3930,10 @@ $8',
 'exif-urgency-high' => 'Високо ($1)',
 'exif-urgency-other' => 'Прилагођени приоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Измени ову датотеку користећи спољашњи програм',
-'edit-externally-help' => '(Погледајте [https://www.mediawiki.org/wiki/Manual:External_editors упутство за подешавање] за више информација)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'све',
-'namespacesall' => 'Ñ\81ве',
+'namespacesall' => 'Ñ\81ви',
 'monthsall' => 'све',
-'limitall' => 'све',
 
 # Email address confirmation
 'confirmemail' => 'Потврда е-адресе',
@@ -4002,7 +3956,6 @@ $8',
 'confirmemail_success' => 'Ваша е-адреса је потврђена.
 Сада можете да се [[Special:UserLogin|пријавите]]. Желимо вам пријатан боравак на викију.',
 'confirmemail_loggedin' => 'Ваша е-адреса је сада потврђена.',
-'confirmemail_error' => 'Нешто је кренуло наопако при чувању ваше потврде.',
 'confirmemail_subject' => '{{SITENAME}} – потврда е-адресе',
 'confirmemail_body' => 'Неко, вероватно ви, са ИП адресе $1 је отворио налог „$2“ на викију {{SITENAME}}, наводећи ову е-адресу.
 
@@ -4087,6 +4040,9 @@ $5
 'imgmultigo' => 'Иди!',
 'imgmultigoto' => 'Иди на страницу $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(подразумевани језик)',
+
 # Table pager
 'ascending_abbrev' => 'раст.',
 'descending_abbrev' => 'опад.',
@@ -4121,7 +4077,7 @@ $5
 
 # Friendlier slave lag warnings
 'lag-warn-normal' => 'Измене новије од $1 {{PLURAL:$1|секунде|секунде|секунди}} неће бити приказане.',
-'lag-warn-high' => 'Због преоптерећења базе података, измене новије од $1 {{PLURAL:$1|секунда|секунде}} неће бити приказане.',
+'lag-warn-high' => 'Због преоптерећења базе података, измене новије од $1 {{PLURAL:$1|1=секунда|секунде}} неће бити приказане.',
 
 # Watchlist editor
 'watchlistedit-numitems' => 'Ваш списак надгледања садржи {{PLURAL:$1|један наслов|$1 наслова|$1 наслова}}, без страница за разговор.',
@@ -4133,7 +4089,7 @@ $5
 Можете и да [[Special:EditWatchlist/raw|уредите сиров списак]].',
 'watchlistedit-normal-submit' => 'Уклони',
 'watchlistedit-normal-done' => '{{PLURAL:$1|Једна страница је уклоњена|$1 странице су уклоњене|$1 страница је уклоњено}} с вашег списка надгледања:',
-'watchlistedit-raw-title' => 'Ð\9dапÑ\80едно Ñ\83Ñ\80еÑ\92иваÑ\9aе Ñ\81пиÑ\81ка надгледања',
+'watchlistedit-raw-title' => 'Ð\98змени Ñ\81иÑ\80ов Ñ\81пиÑ\81ак надгледања',
 'watchlistedit-raw-legend' => 'Напредно уређивање списка надгледања',
 'watchlistedit-raw-explain' => 'Наслови са списка надгледања су приказани испод и могу се уређивати додавањем или уклањањем ставки са списка;
 један наслов по реду.
@@ -4255,6 +4211,7 @@ $5
 'redirect-legend' => 'Преусмери на датотеку или страницу',
 'redirect-submit' => 'Иди',
 'redirect-value' => 'Вредност:',
+'redirect-page' => 'ID странице',
 'redirect-file' => 'Назив датотеке',
 'redirect-not-exists' => 'Вредност није пронађена',
 
@@ -4264,7 +4221,7 @@ $5
 'fileduplicatesearch-legend' => 'Претрага дупликата',
 'fileduplicatesearch-filename' => 'Назив датотеке:',
 'fileduplicatesearch-submit' => 'Претражи',
-'fileduplicatesearch-info' => '$1 × $2 пиксела<br />Величина: $3<br />MIME врста: $4',
+'fileduplicatesearch-info' => '$1 × $2 пиксела<br />Величина датотеке: $3<br />MIME тип: $4',
 'fileduplicatesearch-result-1' => 'Датотека „$1“ нема истоветних дупликата.',
 'fileduplicatesearch-result-n' => 'Датотека „$1“ има {{PLURAL:$2|идентичан дупликат|$2 идентична дупликата|$2 идентичних дупликата}}.',
 'fileduplicatesearch-noresults' => 'Датотека под називом „$1“ није пронађена.',
@@ -4305,7 +4262,7 @@ $5
 'tags' => 'Важеће ознаке измена',
 'tag-filter' => 'Филтер за [[Special:Tags|ознаке]]:',
 'tag-filter-submit' => 'Филтрирај',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Ознака|Ознаке}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Ознака|Ознаке}}]]: $2)',
 'tags-title' => 'Ознаке',
 'tags-intro' => 'На овој страници је наведен списак ознака с којима програм може да означи измене и његово значење.',
 'tags-tag' => 'Назив ознаке',
@@ -4320,7 +4277,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'Упоређивање страница',
-'compare-selector' => 'Упоређивање измена странице',
 'compare-page1' => 'Страница 1',
 'compare-page2' => 'Страница 2',
 'compare-rev1' => 'Измена 1',
@@ -4361,13 +4317,13 @@ $5
 # New logging system
 'logentry-delete-delete' => '$1 је {{GENDER:|обрисао|обрисала}} страницу $3',
 'logentry-delete-restore' => '$1 је {{GENDER:$2|вратио|вратила}} страницу $3',
-'logentry-delete-event' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|догађаја|$5 догађаја}} у дневнику на $3: $4',
-'logentry-delete-revision' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|измене|$5 измена}} на страници $3: $4',
+'logentry-delete-event' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику на $3: $4',
+'logentry-delete-revision' => '$1 је {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=измене|$5 измена}} на страници $3: $4',
 'logentry-delete-event-legacy' => '$1 је {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3',
 'logentry-delete-revision-legacy' => '$1 је {{GENDER:$2|променио|променила}} видљивост измена на страници $3',
 'logentry-suppress-delete' => '$1 је {{GENDER:$2|потиснуо|потиснула}} страницу $3',
-'logentry-suppress-event' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|догађаја|$5 догађаја}} у дневнику на $3: $4',
-'logentry-suppress-revision' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|измене|$5 измена}} на страници $3: $4',
+'logentry-suppress-event' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=догађаја|$5 догађаја}} у дневнику на $3: $4',
+'logentry-suppress-revision' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост {{PLURAL:$5|1=измене|$5 измена}} на страници $3: $4',
 'logentry-suppress-event-legacy' => '$1 је потајно {{GENDER:$2|променио|променила}} видљивост догађаја у дневнику на $3',
 'logentry-suppress-revision-legacy' => '$1 је тајно {{GENDER:$2|променио|променила}} видљивост измена на страници $3',
 'revdelete-content-hid' => 'садржај је сакривен',
@@ -4418,10 +4374,10 @@ $5
 '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|Дуплирана датотека која је већ обрисана|Дуплиране датотеке које су већ обрисане}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|Дуплирана датотека|Дуплиране датотеке}}',
+'api-error-duplicate' => 'Већ {{PLURAL:$1|1=постоји [$2 друга датотека]|постоје [$2 друге датотеке]}} с истим садржајем.',
+'api-error-duplicate-archive' => '{{PLURAL:$1|1=Постојала је [$2 друга датотека]|Постојале су [$2 друге датотеке]}} с истим садржајем, али {{PLURAL:$1|1=је обрисана|су обрисане}}.',
+'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|1=Дуплирана датотека која је већ обрисана|Дуплиране датотеке које су већ обрисане}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Дуплирана датотека|Дуплиране датотеке}}',
 'api-error-empty-file' => 'Послата датотека је празна.',
 'api-error-emptypage' => 'Стварање нових празних страница није дозвољено.',
 'api-error-fetchfileerror' => 'Унутрашња грешка: дошло је до грешке при добављању датотеке.',
@@ -4430,7 +4386,7 @@ $5
 '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|1=је забрањена врста датотеке|су забрањене врсте датотека}}. {{PLURAL:$3|1=Дозвољена је|Дозвољене су}} $2.',
 'api-error-filetype-missing' => 'Датотеци недостаје наставак.',
 'api-error-hookaborted' => 'Измена је одбачена од куке за проширења.',
 'api-error-http' => 'Унутрашња грешка: не могу да се повежем са сервером.',
@@ -4471,7 +4427,7 @@ $5
 'rotate-comment' => 'Слика је ротирана у смеру казаљке на сату за {{PLURAL:$1|степени}}',
 
 # Limit report
-'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунда|секунди}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|1=секунда|секунди}}',
 'limitreport-postexpandincludesize-value' => '$1/$2 бајтова',
 'limitreport-templateargumentsize-value' => '$1/$2 бајтова',
 
index 8f2eef4..b6b2341 100644 (file)
@@ -319,7 +319,7 @@ $messages = array(
 'tog-editsection' => 'Veze za uređivanje pojedinačnih odeljaka',
 'tog-editsectiononrightclick' => 'Uređivanje odeljaka desnim klikom na njihove naslove',
 'tog-showtoc' => 'Prikaži sadržaj stranica koje imaju više od tri podnaslova',
-'tog-rememberpassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|dan|dana}})',
+'tog-rememberpassword' => 'Zapamti me na ovom pregledaču (najduže $1 {{PLURAL:$1|1=dan|dana}})',
 'tog-watchcreations' => 'Dodaj stranice koje napravim i datoteke koje pošaljem u spisak nadgledanja',
 'tog-watchdefault' => 'Dodaj stranice i datoteke koje izmenim u spisak nadgledanja',
 'tog-watchmoves' => 'Dodaj stranice i datoteke koje premestim u spisak nadgledanja',
@@ -327,7 +327,6 @@ $messages = array(
 'tog-minordefault' => 'Označavaj sve izmene kao manje',
 'tog-previewontop' => 'Prikaži pregled pre okvira za uređivanje',
 'tog-previewonfirst' => 'Prikaži pregled na prvoj izmeni',
-'tog-nocache' => 'Onemogući privremeno memorisanje stranica',
 'tog-enotifwatchlistpages' => 'Pošalji mi e-poruku kada se promeni stranica ili datoteka koju nadgledam',
 'tog-enotifusertalkpages' => 'Pošalji mi e-poruku kada se promeni moja stranica za razgovor',
 'tog-enotifminoredits' => 'Pošalji mi e-poruku i za manje izmene u stranicama i datotekama',
@@ -463,7 +462,6 @@ $messages = array(
 'qbedit' => 'Uredi',
 'qbpageoptions' => 'Postavke stranice',
 'qbmyoptions' => 'Moje stranice',
-'qbspecialpages' => 'Posebne stranice',
 'faq' => 'NPP',
 'faqpage' => 'Project:NPP',
 
@@ -562,14 +560,14 @@ $1',
 'mainpage' => 'Glavna strana',
 'mainpage-description' => 'Glavna strana',
 'policy-url' => 'Project:Pravila',
-'portal' => 'Radionica',
+'portal' => 'Portal zajednice',
 'portal-url' => 'Project:Radionica',
 'privacy' => 'Politika privatnosti',
 'privacypage' => 'Project:Politika privatnosti',
 
 'badaccess' => 'Greške u ovlašćenjima',
 'badaccess-group0' => 'Nije vam dozvoljeno da izvršite zahtevanu radnju.',
-'badaccess-groups' => 'Radnja je dostupna samo korisnicima u {{PLURAL:$2|sledećoj grupi|sledećim grupama}}:  $1.',
+'badaccess-groups' => 'Radnja koju ste zahtevali je ograničena samo korisnicima u {{PLURAL:$2|sledećoj grupi|sledećim grupama}}: $1.',
 
 'versionrequired' => 'Potrebno je izdanje $1 Medijavikija',
 'versionrequiredtext' => 'Potrebno je izdanje $1 Medijavikija da biste koristili ovu stranicu.
@@ -583,8 +581,8 @@ Pogledajte stranicu za [[Special:Version|izdanje]].',
 'youhavenewmessages' => 'Imate $1 ($2).',
 'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
 'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednju izmenu|poslednje izmene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednju izmenu|999=poslednje izmene}}',
 'youhavenewmessagesmulti' => 'Imate novih poruka na $1',
 'editsection' => 'uredi',
 'editold' => 'uredi',
@@ -675,18 +673,15 @@ Nije dato nikakvo obrazloženje.',
 'badtitletext' => 'Naslov stranice je neispravan, prazan ili je međujezički ili međuviki naslov pogrešno povezan.
 Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
 'perfcached' => 'Sledeći podaci su keširani i mogu biti zastareli. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata|$1 rezultata}}.',
-'perfcachedts' => 'Sledeći podaci su keširani, a poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|jedan rezultat|$4 rezultata|$4 rezultata}}.',
+'perfcachedts' => 'Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. U kešu {{PLURAL:$4|je dostupan najviše jedan rezultat|su dostupna najviše $4 rezultata|je dostupno najviše $4 rezultata}}.',
 'querypage-no-updates' => 'Ažuriranje ove stranice je trenutno onemogućeno.
 Podaci koji se ovde nalaze mogu biti zastareli.',
-'wrong_wfQuery_params' => 'Neispravni parametri za wfQuery()<br />
-Funkcija: $1<br />
-Upit: $2',
 'viewsource' => 'Izvorni kod',
 'viewsource-title' => 'Prikaz izvora stranice $1',
 'actionthrottled' => 'Radnja je usporena',
 'actionthrottledtext' => 'U cilju borbe protiv nepoželjnih poruka, ograničene su vam izmene u određenom vremenu, a upravo ste prešli to ograničenje. Pokušajte ponovo za nekoliko minuta.',
 'protectedpagetext' => 'Ova stranica je zaključana za izmene i druge radnje.',
-'viewsourcetext' => 'Možete da pogledate i umnožite izvorni tekst ove stranice:',
+'viewsourcetext' => 'Možete čitati i kopirati sadržaj ove stranice:',
 'viewyourtext' => "Možete da pogledate i umnožite izvor '''vaših izmena''' na ovoj stranici:",
 'protectedinterface' => 'Ova stranica sadrži tekst korisničkog okruženja za softver na ovom vikiju i zaštićena je radi sprečavanja zloupotrebe.
 Da biste dodali ili izmenili prevode svih vikija, posetite [//translatewiki.net/ Translejtviki], projekat za lokalizaciju Medijavikija.',
@@ -706,7 +701,7 @@ Administrator koji ju je zaključao ponudio je sledeće objašnjenje: „$3“.'
 'invalidtitle-knownnamespace' => 'Neispravan naslov s imenskim prostorom „$2“ i tekstom „$3“',
 'invalidtitle-unknownnamespace' => 'Neispravan naslov s imenskim prostorom br. $1 i tekstom „$2“',
 'exception-nologin' => 'Niste prijavljeni',
-'exception-nologin-text' => 'Ova stranica ili radnja zahteva da budete prijavljeni na viki.',
+'exception-nologin-text' => '[[Special:Userlogin|Prijavite se]] da biste pristupili ovoj stranici ili radnji.',
 
 # Virus scanner
 'virus-badscanner' => "Neispravna postavka: nepoznati skener za viruse: ''$1''",
@@ -795,7 +790,7 @@ Proverite da li ste pravilno napisali.',
 'passwordtooshort' => 'Lozinka mora imati najmanje {{PLURAL:$1|jedan znak|$1 znaka|$1 znakova}}.',
 'password-name-match' => 'Lozinka se mora razlikovati od korisničkog imena.',
 'password-login-forbidden' => 'Korišćenje ovog korisničkog imena i lozinke je zabranjeno.',
-'mailmypassword' => 'Pošalji novu lozinku',
+'mailmypassword' => 'Resetuj lozinku',
 'passwordremindertitle' => '{{SITENAME}} – podsetnik za lozinku',
 'passwordremindertext' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
 Stvorena je privremena lozinka za {{GENDER:$2|korisnika|korisnicu|korisnika}} $2 koja glasi $3.
@@ -810,14 +805,14 @@ Prijavite se pošto je primite.',
 'blocked-mailpassword' => 'Vašoj IP adresi je onemogućeno uređivanje stranica, kao i mogućnost zahtevanja nove lozinke.',
 'eauthentsent' => 'Na navedenu e-adresu je poslat potvrdni kod.
 Pre nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da ste vi otvorili nalog.',
-'throttled-mailpassword' => 'Podsetnik za lozinku je poslat {{PLURAL:$1|pre sat vremena|u poslednja $1 sata|u poslednjih $1 sati}}.
-Da bismo sprečili zloupotrebu, posednik šaljemo samo jednom u roku od {{PLURAL:$1|jednog sata|$1 sata|$1 sati}}.',
+'throttled-mailpassword' => 'Poruka za promenu lozinke je poslata u {{PLURAL:$1|poslednjih sat vremena|poslednja $1 sata|poslednjih $1 sati}}.
+Da bismo sprečili zloupotrebu, podsetnik šaljemo samo jednom u roku od {{PLURAL:$1|sat vremena|$1 sata|$1 sati}}.',
 'mailerror' => 'Greška pri slanju poruke: $1',
 'acct_creation_throttle_hit' => 'Posetioci ovog vikija koji koriste vašu IP adresu su već otvorili {{PLURAL:$1|jedan nalog|$1 naloga|$1 naloga}} prethodni dan, što je najveći dozvoljeni broj u tom vremenskom periodu.
 Zbog toga posetioci s ove IP adrese trenutno ne mogu otvoriti više naloga.',
 'emailauthenticated' => 'Vaša e-adresa je potvrđena $2 u $3.',
 'emailnotauthenticated' => 'Vaša e-adresa još nije potvrđena.
-Poruke neće biti poslate ni za jednu od sledećih mogućnosti.',
+Poruke neće biti poslate ni u jednom od sledećih slučajeva.',
 'noemailprefs' => 'Unesite e-adresu kako bi ove mogućnosti radile.',
 'emailconfirmlink' => 'Potvrdite svoju e-adresu',
 'invalidemailaddress' => 'E-adresa ne može biti prihvaćena jer je neispravnog oblika.
@@ -843,7 +838,7 @@ Molimo vas da sačekate $1 pre nego što pokušate ponovo.',
 'user-mail-no-addy' => 'Pokušali ste da pošaljete poruku bez e-adrese.',
 
 # Change password dialog
-'resetpass' => 'Promena lozinke',
+'changepassword' => 'Promeni lozinku',
 'resetpass_announce' => 'Prijavljeni ste s privremenom lozinkom.
 Da biste završili prijavu, podesite novu lozinku ovde:',
 'resetpass_text' => '<!-- Ovde unesite tekst -->',
@@ -873,18 +868,18 @@ Možda ste već promenili lozinku ili ste zatražili novu privremenu lozinku.',
 'passwordreset-email' => 'E-adresa:',
 'passwordreset-emailtitle' => 'Detalji naloga na vikiju {{SITENAME}}',
 'passwordreset-emailtext-ip' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
-Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
+Sledeći {{PLURAL:$3|1=korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
 
 $2
 
-{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+{{PLURAL:$3|1=Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
 Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
 'passwordreset-emailtext-user' => '{{GENDER:$1|Korisnik|Korisnica|Korisnik}} $1 je zatražio podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).
-Sledeći {{PLURAL:$3|korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
+Sledeći {{PLURAL:$3|1=korisnički nalog je povezan|korisnički nalozi su povezani}} s ovom e-adresom:
 
 $2
 
-{{PLURAL:$3|Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+{{PLURAL:$3|1=Privremena lozinka ističe|Privremene lozinke ističu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
 Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
 'passwordreset-emailelement' => 'Korisničko ime: $1
 Privremena lozinka: $2',
@@ -920,7 +915,7 @@ Privremena lozinka: $2',
 'image_tip' => 'Ugrađena datoteka',
 'media_sample' => 'Primer.ogg',
 'media_tip' => 'Veza',
-'sig_tip' => 'Potpis s trenutnim vremenom',
+'sig_tip' => 'Vaš potpis sa trenutnim vremenom',
 'hr_tip' => 'Vodoravna linija (koristiti retko)',
 
 # Edit pages
@@ -946,7 +941,7 @@ 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:$4|izvršio|izvršila|izvršio}} $1.
+Blokiranje je {{GENDER:$4|izvršio|izvršila}} $1.
 Razlog: ''$2''.
 
 * Datum blokiranja: $8
@@ -1055,8 +1050,9 @@ Moraćete da unesete svoje promene u postojeći tekst.
 'storedversion' => 'Uskladištena izmena',
 'nonunicodebrowser' => "'''Upozorenje: vaš pregledač ne podržava unikod.'''
 Promenite ga pre nego što počnete s uređivanjem.",
-'editingold' => "'''Upozorenje: uređujete zastarelu izmenu ove stranice.
-Ako je sačuvate, sve novije izmene će biti izgubljene.'''",
+'editingold' => '<div style="background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;">Upozorenje: Vi uređujete stariju reviziju ove stranice.<br />
+Ako je sačuvate, sve promene učinjene od ove revizije biće izgubljene.
+</div>',
 'yourdiff' => 'Razlike',
 'copyrightwarning' => "Imajte na umu da se svi doprinosi na ovom vikiju smatraju kao objavljeni pod licencom $2 (više na $1).
 Ako ne želite da se vaši tekstovi menjaju i razmenjuju bez ograničenja, onda ih ne šaljite ovde.<br />
@@ -1076,11 +1072,11 @@ Administrator koji je zaključao bazu podataka je naveo sledeće objašnjenje: $
 Poslednja stavka u istoriji je prikazana ispod:",
 'semiprotectedpagewarning' => "'''Napomena:''' ova stranica je zaštićena, tako da samo registrovani korisnici mogu da je uređuju.
 Poslednji zapis u dnevniku je prikazan ispod:",
-'cascadeprotectedwarning' => "'''Upozorenje:''' ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:$1|sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:",
+'cascadeprotectedwarning' => "<div style=\"background: #FFBDBD; border: 1px solid #BB7979; color: #000000; font-weight: bold; margin: 2em 0 1em; padding: .5em 1em; vertical-align: middle; clear: both;\">'''Upozorenje:''' Ova stranica je zaštićena tako da je mogu uređivati samo administratori, jer je ona uključena u {{PLURAL:\$1|1=sledeću stranicu koja je|sledeće stranice koje su}} zaštićene „prenosivom“ zaštitom:</div>",
 'titleprotectedwarning' => "'''Upozorenje: ova stranica je zaštićena tako da je mogu napraviti samo korisnici [[Special:ListGroupRights|s određenim pravima]].'''",
-'templatesused' => '{{PLURAL:$1|Šablon|Šabloni}} na ovoj stranici:',
-'templatesusedpreview' => '{{PLURAL:$1|Šablon|Šabloni}} u ovom pregledu:',
-'templatesusedsection' => '{{PLURAL:$1|Šablon|Šabloni}} u ovom odeljku:',
+'templatesused' => '{{PLURAL:$1|1=Šablon|Šabloni}} na ovoj stranici:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Šablon|Šabloni}} u ovom pregledu:',
+'templatesusedsection' => '{{PLURAL:$1|1=Šablon|Šabloni}} u ovom odeljku:',
 'template-protected' => '(zaštićen)',
 'template-semiprotected' => '(poluzaštićen)',
 'hiddencategories' => 'Ova stranica je član {{PLURAL:$1|jedne skrivene kategorije|$1 skrivene kategorije|$1 skrivenih kategorija}}:',
@@ -1092,8 +1088,8 @@ Možete se vratiti i urediti postojeću stranicu, ili se [[Special:UserLogin|pri
 'sectioneditnotsupported-title' => 'Uređivanje odeljka nije podržano',
 'sectioneditnotsupported-text' => 'Uređivanje odeljka nije podržano na ovoj stranici.',
 'permissionserrors' => 'Greška u dozvoli',
-'permissionserrorstext' => 'Nemate ovlašćenje za tu radnju iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
-'permissionserrorstext-withaction' => 'Nemate dozvolu za $2 iz {{PLURAL:$1|sledećeg|sledećih}} razloga:',
+'permissionserrorstext' => 'Nemate ovlašćenje za tu radnju iz {{PLURAL:$1|1=sledećeg|sledećih}} razloga:',
+'permissionserrorstext-withaction' => 'Nemate dozvolu za $2 iz {{PLURAL:$1|1=sledećeg|sledećih}} razloga:',
 'recreate-moveddeleted-warn' => "'''Upozorenje: ponovo pravite stranicu koja je prethodno obrisana.'''
 
 Razmotrite da li je prikladno da nastavite s uređivanjem ove stranice.
@@ -1192,7 +1188,7 @@ Moguće da je obrisana s vikija ili je preimenovana.
 Pokušajte da [[Special:Search|pretražite viki]] za slične stranice.',
 
 # Revision deletion
-'rev-deleted-comment' => '(opis izmene je uklonjen)',
+'rev-deleted-comment' => '(opis izmene uklonjen)',
 'rev-deleted-user' => '(korisničko ime je uklonjeno)',
 'rev-deleted-event' => '(istorija je uklonjena)',
 'rev-deleted-user-contribs' => '[korisničko ime ili IP adresa je uklonjena – izmena je sakrivena sa spiska doprinosa]',
@@ -1226,15 +1222,11 @@ Ipak možete da vidite ovu razliku; više detalja možete naći u [{{fullurl:{{#
 'revisiondelete' => 'Obriši/vrati izmene',
 'revdelete-nooldid-title' => 'Nema tražene izmene',
 'revdelete-nooldid-text' => 'Niste naveli željenu izmenu, ona ne postoji ili pokušavate da je sakrijete.',
-'revdelete-nologtype-title' => 'Nije navedena vrsta istorije',
-'revdelete-nologtype-text' => 'Niste naveli vrstu istorije nad kojom želite da izvršite ovu radnju.',
-'revdelete-nologid-title' => 'Neispravan zapis u dnevniku',
-'revdelete-nologid-text' => 'Niste odredili odredišnu istoriju ili navedeni unos ne postoji.',
 'revdelete-no-file' => 'Tražena datoteka ne postoji.',
 'revdelete-show-file-confirm' => 'Želite li da vidite obrisanu izmenu datoteke „<nowiki>$1</nowiki>“ od $2; $3?',
 'revdelete-show-file-submit' => 'Da',
-'revdelete-selected' => "'''{{PLURAL:$2|Izabrana izmena|Izabrane izmene}} stranice '''[[:$1]]''''''",
-'logdelete-selected' => "'''{{PLURAL:$1|Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Izabrana izmena|Izabrane izmene}} stranice '''[[:$1]]''''''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Izabrana stavka u istoriji|Izabrane stavke u istoriji}}:'''",
 'revdelete-text' => "'''Obrisane izmene će i dalje biti prikazane u istoriji stranica i zapisima, ali delovi njihovog sadržaja neće biti dostupni javnosti.'''
 Drugi administratori na ovom vikiju će i dalje imati pristup sakrivenom sadržaju, a oni će taj sadržaj moći da vrate putem ovog sučelja, osim ako nisu postavljena dodatna ograničenja.",
 'revdelete-confirm' => 'Potvrdite da nameravate ovo uraditi, da razumete posledice i da to činite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
@@ -1255,7 +1247,7 @@ Drugi administratori na ovom vikiju će i dalje imati pristup sakrivenom sadrža
 'revdelete-suppress' => 'Sakrij podatke od administratora i drugih korisnika',
 'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim izmenama',
 'revdelete-log' => 'Razlog:',
-'revdelete-submit' => 'Primeni na {{PLURAL:$1|izabranu izmenu|izabrane izmene}}',
+'revdelete-submit' => 'Primeni na {{PLURAL:$1|1=izabranu izmenu|izabrane izmene}}',
 'revdelete-success' => "'''Vidljivost izmene je ažurirana.'''",
 'revdelete-failure' => "'''Ne mogu da ažuriram vidljivost izmene:'''
 $1",
@@ -1263,8 +1255,6 @@ $1",
 'logdelete-failure' => "'''Ne mogu da postavim vidljivost istorije:'''
 $1",
 'revdel-restore' => 'promeni vidljivost',
-'revdel-restore-deleted' => 'obrisane izmene',
-'revdel-restore-visible' => 'vidljive izmene',
 'pagehist' => 'Istorija stranice',
 'deletedhist' => 'Obrisana istorija',
 'revdelete-hide-current' => 'Greška pri sakrivanju stavke od $1, $2: ovo je trenutna izmena.
@@ -1343,12 +1333,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 # Search results
 'searchresults' => 'Rezultati pretrage',
 'searchresults-title' => 'Rezultati pretrage za „$1“',
-'searchresulttext' => 'Za više informacija o pretraživanju projekta {{SITENAME}} pogledajte [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Tražili ste '''[[:$1]]''' ([[Special:Prefixindex/$1|sve stranice koje počinju sa „$1“]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sve stranice koje vode do „$1“]])",
-'searchsubtitleinvalid' => "Tražili ste '''$1'''",
 'toomanymatches' => 'Pronađeno je previše rezultata. Izmenite upit.',
 'titlematches' => 'Naslov stranice odgovara',
-'notitlematches' => 'Nijedan naslov stranice ne odgovara',
 'textmatches' => 'Tekst stranice odgovara',
 'notextmatches' => 'Nijedan tekst stranice ne odgovara',
 'prevn' => 'prethodnih {{PLURAL:$1|$1}}',
@@ -1357,10 +1343,8 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'nextn-title' => '$1 {{PLURAL:$1|sledeći rezultat|sledeća rezultata|sledećih rezultata}}',
 'shown-title' => 'Prikaži $1 {{PLURAL:$1|rezultat|rezultata|rezultata}} po stranici',
 'viewprevnext' => 'Pogledaj ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Postavke pretrage',
 'searchmenu-exists' => "'''Postoji i članak pod nazivom „[[:$1]]“.'''",
 'searchmenu-new' => "'''Napravite stranicu „[[:$1]]“.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Pregledaj stranice s ovim prefiksom]]',
 'searchprofile-articles' => 'Članci',
 'searchprofile-project' => 'Stranice pomoći i projekata',
 'searchprofile-images' => 'Datoteke',
@@ -1381,21 +1365,16 @@ Više informacija možete pronaći u [{{fullurl:{{#Special:Log}}/delete|page={{F
 'search-interwiki-default' => '$1 rezultati:',
 'search-interwiki-more' => '(više)',
 'search-relatedarticle' => 'Povezano',
-'mwsuggest-disable' => 'Onemogući predloge pri pretraživanju',
 'searcheverything-enable' => 'svi imenski prostori',
 'searchrelated' => 'povezano',
 'searchall' => 'sve',
 'showingresults' => "Ispod {{PLURAL:$1|je prikazan '''1''' rezultat|su prikazana '''$1''' rezultata|je prikazano '''$1''' rezultata}} počev od broja '''$2'''.",
 'showingresultsnum' => "Ispod {{PLURAL:$3|je prikazan '''1''' rezultat|su prikazana '''$3''' rezultata|je prikazano '''$3''' rezultata}} počev od broja '''$2'''.",
-'showingresultsheader' => "{{PLURAL:$5|Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
-'nonefound' => "'''Napomena''': samo se neki imenski prostori pretražuju po podrazumevanim postavkama.
-Ako želite sve da pretražite, dodajte prefiks '''all:''' ispred traženog sadržaja (ovo uključuje stranice za razgovor, šablone itd.) ili koristite prefiks željenog imenskog prostora.",
+'showingresultsheader' => "{{PLURAL:$5|1=Rezultat '''$1''' od '''$3'''|Rezultata '''$1 – $2''' od '''$3'''}} za '''$4'''",
 'search-nonefound' => 'Nema poklapanja.',
-'powersearch' => 'Pretraži',
 'powersearch-legend' => 'Napredna pretraga',
 'powersearch-ns' => 'Traži u sledećim imenskim prostorima:',
 'powersearch-redir' => 'Spisak preusmerenja',
-'powersearch-field' => 'Traži',
 'powersearch-togglelabel' => 'Izaberi:',
 'powersearch-toggleall' => 'sve',
 'powersearch-togglenone' => 'ništa',
@@ -1408,7 +1387,6 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 'preferences' => 'Podešavanja',
 'mypreferences' => 'Podešavanja',
 'prefs-edits' => 'Broj izmena:',
-'changepassword' => 'Promeni lozinku',
 'prefs-skin' => 'Tema',
 'skin-preview' => 'Pregledaj',
 'datedefault' => 'Svejedno',
@@ -1431,13 +1409,11 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 'prefs-email' => 'Postavke e-pošte',
 'prefs-rendering' => 'Izgled',
 'saveprefs' => 'Sačuvaj',
-'resetprefs' => 'Očisti nesačuvane izmene',
 'restoreprefs' => 'Vrati sve na podrazumevano (u svim odeljcima)',
 'prefs-editing' => 'Uređivanje',
 'rows' => 'Redova:',
 'columns' => 'Kolone:',
 'searchresultshead' => 'Pretraga',
-'resultsperpage' => 'Pogodaka po stranici:',
 'stub-threshold' => 'Prag za oblikovanje <a href="#" class="stub">veze kao klice</a> (u bajtovima):',
 'stub-threshold-disabled' => 'Onemogućeno',
 'recentchangesdays' => 'Broj dana u skorašnjim izmenama:',
@@ -1449,7 +1425,6 @@ Upamtite da njegovi popisi ovog vikija mogu biti zastareli.',
 'localtime' => 'Lokalno vreme:',
 'timezoneuseserverdefault' => 'podrazumevane vrednosti ($1)',
 'timezoneuseoffset' => 'drugo (unesite odstupanje)',
-'timezoneoffset' => 'Odstupanje¹:',
 'servertime' => 'Vreme na serveru:',
 'guesstimezone' => 'popuni iz pregledača',
 'timezoneregion-africa' => 'Afrika',
@@ -1477,7 +1452,7 @@ Ova radnja se ne može vratiti.',
 'youremail' => 'E-adresa:',
 'username' => '{{GENDER:$1|Korisničko ime}}:',
 'uid' => '{{GENDER:$1|Korisnički}} ID:',
-'prefs-memberingroups' => '{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|grupe|grupa}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Korisnik|Korisnica}} je član {{PLURAL:$1|1=grupe|grupa}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Vreme upisa:',
 'prefs-registration-date-time' => '$1',
@@ -1540,7 +1515,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'userrights-reason' => 'Razlog:',
 'userrights-no-interwiki' => 'Nemate ovlašćenja da menjate korisnička prava na drugim vikijima.',
 'userrights-nodatabase' => 'Baza podataka $1 ne postoji ili nije lokalna.',
-'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] s administratorskim nalogom da biste dodali korisnička prava.',
+'userrights-nologin' => 'Morate se [[Special:UserLogin|prijaviti]] s administratorskim nalogom da biste menjali korisnička prava.',
 'userrights-notallowed' => 'Nemate ovlašćenja da dodajete ili uklanjate korisnička prava.',
 'userrights-changeable-col' => 'Grupe koje možete da promenite',
 'userrights-unchangeable-col' => 'Grupe koje ne možete da promenite',
@@ -1554,14 +1529,14 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'group-sysop' => 'Administratori',
 'group-bureaucrat' => 'Birokrate',
 'group-suppress' => 'Revizori',
-'group-all' => '(sve)',
+'group-all' => '(svi)',
 
 'group-user-member' => '{{GENDER:$1|korisnik|korisnica|korisnik}}',
 'group-autoconfirmed-member' => '{{GENDER:$1|automatski potvrđen korisnik|automatski potvrđena korisnica|automatski potvrđen korisnik}}',
 'group-bot-member' => '{{GENDER:$1|bot}}',
 'group-sysop-member' => '{{GENDER:$1|administrator|administratorka}}',
 'group-bureaucrat-member' => '{{GENDER:$1|birokrata|birokratkinja}}',
-'group-suppress-member' => '{{GENDER:$1|revizor|revizorka|revizor}}',
+'group-suppress-member' => '{{GENDER:$1|revizor|revizorka}}',
 
 'grouppage-user' => '{{ns:project}}:Korisnici',
 'grouppage-autoconfirmed' => '{{ns:project}}:Automatski potvrđeni korisnici',
@@ -1595,7 +1570,7 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'right-writeapi' => 'pisanje API-ja',
 'right-delete' => 'brisanje stranica',
 'right-bigdelete' => 'brisanje stranica s velikom istorijom',
-'right-deletelogentry' => 'Brisanje i vraćanje određenih stavki u dnevniku',
+'right-deletelogentry' => 'brisanje i vraćanje određenih stavki u dnevniku',
 'right-deleterevision' => 'brisanje i vraćanje određenih izmena stranica',
 'right-deletedhistory' => 'pregledanje obrisanih stavki istorije bez povezanog teksta',
 'right-deletedtext' => 'pregledanje obrisanog teksta i izmena između obrisanih izmena',
@@ -1608,9 +1583,9 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'right-hideuser' => 'blokiranje korisničkog imena i njegovo sakrivanje od javnosti',
 'right-ipblock-exempt' => 'zaobilaženje blokiranja IP adrese, samoblokiranja i blokiranja opsega',
 'right-proxyunbannable' => 'zaobilaženje samoblokiranja posrednika',
-'right-unblockself' => 'Odblokiraj samog sebe',
-'right-protect' => 'Promeni nivoe zaštite i uredi kaskadno zaštićene stranice',
-'right-editprotected' => 'Uredi stranice pod zaštitom „{{int:protect-level-sysop}}“',
+'right-unblockself' => 'odblokiraj samog sebe',
+'right-protect' => 'promeni nivoe zaštite i uredi stranice sa prenosivom zaštitom',
+'right-editprotected' => 'uredi stranice pod zaštitom „{{int:protect-level-sysop}}“',
 'right-editinterface' => 'uređivanje korisničkog sučelja',
 'right-editusercssjs' => 'uređivanje tuđih CSS i javaskript datoteka',
 'right-editusercss' => 'uređivanje tuđih CSS datoteka',
@@ -1687,8 +1662,9 @@ Ako izaberete da ga unesete, ono će biti korišćeno za pripisivanje vašeg rad
 'recentchanges-label-minor' => 'Manja izmena',
 'recentchanges-label-bot' => 'Ovu izmenu je napravio bot',
 'recentchanges-label-unpatrolled' => 'Ova izmena još nije pregledana',
-'recentchanges-legend-newpage' => '$1 - nova stranica',
-'rcnote' => "Ispod {{PLURAL:$1|je '''1''' izmena|su poslednje '''$1''' izmene|su poslednjih '''$1''' izmena}} {{PLURAL:$2|prethodni dan|u poslednja '''$2''' dana|u poslednjih '''$2''' dana}}, od $4; $5.",
+'recentchanges-label-plusminus' => 'Promena veličine stranice (u bajtovima)',
+'recentchanges-legend-heading' => "'''Legenda:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|spisak novih stranica]])',
 'rcnotefrom' => 'Ispod su izmene od <b>$3; $4</b> (do <b>$1</b> izmena).',
 'rclistfrom' => 'Prikaži nove izmene počev od $1',
 'rcshowhideminor' => '$1 manje izmene',
@@ -1746,9 +1722,9 @@ Datoteku dodajete na željenu stranicu koristeći sledeće obrasce:
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Slika.jpg]]</nowiki></code>''' za verziju slike u punoj veličini
 * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Slika.png|200p|mini|levo|opis]]</nowiki></code>''' za verziju slike s veličinom od 200 piksela koja je prikazana u zasebnom okviru, zajedno s opisom.
 * '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Datoteka.ogg]]</nowiki></code>''' za direktno povezivanje s datotekom bez njenog prikazivanja",
-'upload-permitted' => 'Dozvoljene vrste datoteka: $1.',
-'upload-preferred' => 'Poželjne vrste datoteka: $1.',
-'upload-prohibited' => 'Zabranjene vrste datoteka: $1.',
+'upload-permitted' => 'Dozvoljeni tipovi datoteka: $1.',
+'upload-preferred' => 'Preporučeni tipovi datoteka: $1.',
+'upload-prohibited' => 'Zabranjeni tipovi datoteka: $1.',
 'uploadlog' => 'dnevnik otpremanja',
 'uploadlogpage' => 'Dnevnik otpremanja',
 'uploadlogpagetext' => 'Ispod je spisak skorašnjih slanja.
@@ -1768,12 +1744,12 @@ Promenite naziv datoteke i ponovo je pošaljite.',
 'filename-toolong' => 'Nazivi datoteka mogu imati najviše 240 bajtova.',
 'badfilename' => 'Naziv datoteke je promenjen u „$1“.',
 'filetype-mime-mismatch' => 'Ekstenzija „.$1“ ne odgovara prepoznatoj vrsti MIME datoteke ($2).',
-'filetype-badmime' => 'Datoteke MIME vrste „$1“ nije dozvoljeno slati.',
+'filetype-badmime' => 'Datoteke MIME tipa „$1“ nije dozvoljeno slati.',
 'filetype-bad-ie-mime' => 'Ova datoteka se ne može poslati zato što bi je Internet eksplorer uočio kao „$1“, a to je zabranjena i opasna vrsta datoteke.',
 'filetype-unwanted-type' => '„.$1“ je nepoželjna vrsta datoteke.
-{{PLURAL:$3|Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
-{{PLURAL:$3|Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.',
+{{PLURAL:$3|1=Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|1=je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
+{{PLURAL:$3|1=Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.',
 'filetype-missing' => 'Ova datoteka nema ekstenziju.',
 'empty-file' => 'Poslata datoteka je prazna.',
 'file-too-large' => 'Poslata datoteka je prevelika.',
@@ -1815,7 +1791,7 @@ Ako i dalje želite da pošaljete datoteku, vratite se i izaberite drugi naziv.
 'fileexists-shared-forbidden' => 'Datoteka s ovim nazivom već postoji u zajedničkom skladištu.
 Vratite se i pošaljite datoteku s drugim nazivom.
 [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|sledeće datoteke|sledećih datoteka}}:',
+'file-exists-duplicate' => 'Ovo je duplikat {{PLURAL:$1|1=sledeće datoteke|sledećih datoteka}}:',
 'file-deleted-duplicate' => 'Datoteka istovetna ovoj ([[:$1]]) je prethodno obrisana.
 Pogledajte istoriju brisanja pre ponovnog slanja.',
 'uploadwarning' => 'Upozorenje pri otpremanju',
@@ -1838,7 +1814,7 @@ Slanje java datoteka nije dozvoljeno jer one mogu izazvati zaobilaženje sigurno
 'sourcefilename' => 'Naziv izvorne datoteke:',
 'sourceurl' => 'Adresa izvora:',
 'destfilename' => 'Naziv:',
-'upload-maxfilesize' => 'Najveća veličina datoteke: $1',
+'upload-maxfilesize' => 'Maksimalna veličina datoteke: $1',
 'upload-description' => 'Opis datoteke',
 'upload-options' => 'Postavke slanja',
 'watchthisupload' => 'Nadgledaj ovu datoteku',
@@ -1986,7 +1962,7 @@ Probajte kasnije kada bude manje opterećenje.',
 'nolicense' => 'nije izabrano',
 'license-nopreview' => '(pregled nije dostupan)',
 'upload_source_url' => ' (ispravna i javno dostupna adresa)',
-'upload_source_file' => ' (datoteka na vašem računaru)',
+'upload_source_file' => '(datoteka na vašem računaru)',
 
 # Special:ListFiles
 'listfiles-summary' => 'Ova posebna stranica prikazuje sve poslate datoteke.',
@@ -2100,7 +2076,7 @@ Pre brisanja proverite da li druge stranice vode do tih šablona.',
 
 # Random page
 'randompage' => 'Slučajna stranica',
-'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|sledećem imenskom prostoru|sledećim imenskim prostorima}}: $1.',
+'randompage-nopages' => 'Nema stranica u {{PLURAL:$2|1=sledećem imenskom prostoru|sledećim imenskim prostorima}}: $1.',
 
 # Random redirect
 'randomredirect' => 'Slučajno preusmerenje',
@@ -2116,13 +2092,13 @@ Pre brisanja proverite da li druge stranice vode do tih šablona.',
 'statistics-articles' => 'Stranice sa sadržajem',
 'statistics-pages' => 'Stranica',
 'statistics-pages-desc' => 'Sve stranice na vikiju, uključujući stranice za razgovor, preusmerenja itd.',
-'statistics-files' => 'Otpremljeno datoteka',
+'statistics-files' => 'Broj poslatih datoteka',
 'statistics-edits' => 'Broj izmena stranica otkad postoji {{SITENAME}}',
 'statistics-edits-average' => 'Prosečan broj izmena po stranici',
 'statistics-views-total' => 'Ukupno pregleda',
 'statistics-views-total-desc' => 'Pregledi nepostojećih i posebnih stranica nisu uključeni',
 'statistics-views-peredit' => 'Pregleda po izmeni',
-'statistics-users' => 'Upisani korisnici ([[Special:ListUsers|spisak članova]])',
+'statistics-users' => 'Registrovani [[Special:ListUsers|korisnici]]',
 'statistics-users-active' => 'Aktivni korisnici',
 'statistics-users-active-desc' => 'Korisnici koji su izvršili bar jednu radnju {{PLURAL:$1|prethodni dan|u poslednja $1 dana|u poslednjih $1 dana}}',
 'statistics-mostpopular' => 'Najposećenije stranice',
@@ -2165,7 +2141,7 @@ Sada je preusmerenje na [[$2]].',
 'lonelypages' => 'Siročići',
 'lonelypagestext' => 'Sledeće stranice nisu povezane s drugim stranicama, niti su uključene transkluzijom u druge stranice.',
 'uncategorizedpages' => 'Nekategorisane stranice',
-'uncategorizedcategories' => 'Nekategorisane stranice',
+'uncategorizedcategories' => 'Nekategorisane kategorije',
 'uncategorizedimages' => 'Datoteke bez kategorija',
 'uncategorizedtemplates' => 'Nekategorisani šabloni',
 'unusedcategories' => 'Nekorišćene kategorije',
@@ -2194,10 +2170,8 @@ Sada je preusmerenje na [[$2]].',
 'protectedpages' => 'Zaštićene stranice',
 'protectedpages-indef' => 'samo neograničene zaštite',
 'protectedpages-cascade' => 'samo prenosive zaštite',
-'protectedpagestext' => 'Sledeće stranice su zaštićene od premeštanja ili uređivanja',
 'protectedpagesempty' => 'Nema zaštićenih stranica s ovim parametrima.',
 'protectedtitles' => 'Zaštićeni naslovi',
-'protectedtitlestext' => 'Sledeći naslovi su zaštićeni od stvaranja',
 'protectedtitlesempty' => 'Nema zaštićenih naslova s ovim parametrima.',
 'listusers' => 'Spisak korisnika',
 'listusers-editsonly' => 'prikaži samo korisnike koji su uređivali',
@@ -2217,7 +2191,7 @@ Druge veb stranice mogu koristiti sliku preko direktne adrese, tako da i pored t
 'nopagetitle' => 'Ne postoji takva stranica',
 'nopagetext' => 'Tražena stranica ne postoji.',
 'pager-newer-n' => '{{PLURAL:$1|noviji 1|novija $1|novijih $1}}',
-'pager-older-n' => '{{PLURAL:$1|stariji 1|starija $1|starijih $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=stariji 1|starijih $1}}',
 'suppress' => 'Nadzor',
 'querypage-disabled' => 'Ova posebna stranica je onemogućena radi poboljšanja performansi.',
 
@@ -2249,9 +2223,6 @@ Možete suziti prikaz odabirući vrstu istorije, korisničkog imena ili tražene
 'allpagesto' => 'Prikaži stranice završno sa:',
 'allarticles' => 'Sve stranice',
 'allinnamespace' => 'Sve stranice (imenski prostor $1)',
-'allnotinnamespace' => 'Sve stranice van imenskog prostora $1',
-'allpagesprev' => 'Prethodna',
-'allpagesnext' => 'Sledeća',
 'allpagessubmit' => 'Idi',
 'allpagesprefix' => 'Prikaži stranice s prefiksom:',
 'allpagesbadtitle' => 'Navedeni naziv stranice nije ispravan ili sadrži međujezički ili međuviki prefiks.
@@ -2266,7 +2237,7 @@ Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
 
 # Special:Categories
 'categories' => 'Kategorije',
-'categoriespagetext' => '{{PLURAL:$1|Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.
+'categoriespagetext' => '{{PLURAL:$1|1=Sledeća kategorija sadrži|Sledeće kategorije sadrže}} stranice ili datoteke.
 [[Special:UnusedCategories|Nekorišćene kategorije]] nisu prikazane ovde.
 Pogledajte i [[Special:WantedCategories|tražene kategorije]].',
 'categoriesfrom' => 'Prikaži kategorije počev od:',
@@ -2283,9 +2254,9 @@ Pogledajte i [[Special:WantedCategories|tražene kategorije]].',
 'linksearch-pat' => 'Obrazac pretrage:',
 'linksearch-ns' => 'Imenski prostor:',
 'linksearch-ok' => 'Pretraži',
-'linksearch-text' => 'Mogu se koristiti džokeri poput „*.wikipedia.org“.<br />
+'linksearch-text' => 'Mogu se koristiti džokeri poput „*.wikipedia.org“.
 Potreban je najviši domen, kao „*.org“.<br />
-{{PLURAL:$2|Podržan protokol|Podržani protokoli}}: <code>$1</code> (zadaje http:// ako ne navedete protokol).',
+{{PLURAL:$2|1=Podržan protokol|Podržani protokoli}}: <code>$1</code> (zadaje http:// ako ne navedete protokol).',
 'linksearch-line' => '$1 veza u $2',
 'linksearch-error' => 'Džokeri se mogu pojaviti samo na početku adrese.',
 
@@ -2317,12 +2288,12 @@ Pogledajte [[{{MediaWiki:Listgrouprights-helppage}}|više detalja]] o pojedinač
 'listgrouprights-members' => '(spisak članova)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'dodaje {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
-'listgrouprights-removegroup' => 'briše {{PLURAL:$2|sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-addgroup' => 'dodaje {{PLURAL:$2|1=sledeću grupu|sledeće grupe}}: $1',
+'listgrouprights-removegroup' => 'briše {{PLURAL:$2|1=sledeću grupu|sledeće grupe}}: $1',
 'listgrouprights-addgroup-all' => 'dodavanje svih grupa',
 'listgrouprights-removegroup-all' => 'brisanje svih grupa',
-'listgrouprights-addgroup-self' => 'dodavanje {{PLURAL:$2|grupe|grupa}} na svoj nalog: $1',
-'listgrouprights-removegroup-self' => 'uklanjanje {{PLURAL:$2|grupe|grupa}} sa svog naloga: $1',
+'listgrouprights-addgroup-self' => 'dodavanje {{PLURAL:$2|1=grupe|grupa}} na svoj nalog: $1',
+'listgrouprights-removegroup-self' => 'uklanjanje {{PLURAL:$2|1=grupe|grupa}} sa svog naloga: $1',
 'listgrouprights-addgroup-self-all' => 'Dodaj sve grupe na sopstveni nalog',
 'listgrouprights-removegroup-self-all' => 'Ukloni sve grupe sa sopstvenog naloga',
 
@@ -2374,7 +2345,7 @@ E-adresa koju ste uneli u vašim [[Special:Preferences|podešavanjima]] će se p
 'watchnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da biste menjali spisak nadgledanja.',
 'addwatch' => 'Dodaj na spisak nadgledanja',
 'addedwatchtext' => 'Stranica „[[:$1]]“ je dodata na vaš [[Special:Watchlist|spisak nadgledanja]].
-Buduće izmene ove stranice i njene stranice za razgovor biće navedene tamo.',
+Buduće izmene ove stranice i njene stranice za razgovor biće navedene ovde.',
 'removewatch' => 'Ukloni sa spiska nadgledanja',
 'removedwatchtext' => 'Stranica „[[:$1]]“ je uklonjena s vašeg [[Special:Watchlist|spiska nadgledanja]].',
 'watch' => 'Nadgledaj',
@@ -2383,7 +2354,7 @@ Buduće izmene ove stranice i njene stranice za razgovor biće navedene tamo.',
 'unwatchthispage' => 'Prekini nadgledanje',
 'notanarticle' => 'Nije stranica sa sadržajem',
 'notvisiblerev' => 'Izmena je obrisana',
-'watchlist-details' => '{{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na vašem spisku nadgledanja, ne računajući stranice za razgovor.',
+'watchlist-details' => 'Imate {{PLURAL:$1|$1 stranica|$1 stranice|$1 stranica}} na vašem spisku nadgledanja, ne računajući stranice za razgovor.',
 'wlheader-enotif' => 'Obaveštenje e-porukom je omogućeno.',
 'wlheader-showupdated' => "Stranice koje su izmenjene otkad ste ih poslednji put posetili su '''podebljane'''.",
 'watchmethod-recent' => 'proverava se da li ima nadgledanih stranica u skorašnjim izmenama',
@@ -2487,8 +2458,8 @@ Poslednju izmenu je {{GENDER:$3|napravio|napravila|napravio}} [[User:$3|$3]] ([[
 'editcomment' => "Opis izmene: \"''\$1''\".",
 'revertpage' => 'Vraćene izmene [[Special:Contributions/$2|$2]] ([[User talk:$2|razgovor]]) na poslednju izmenu korisnika [[User:$1|$1]]',
 'revertpage-nouser' => 'Vraćene su izmene skrivenog korisnika na poslednju izmenu {{GENDER:$1|korisnika|korisnice}} [[User:$1|$1]]',
-'rollback-success' => 'Vraćene su izmene {{GENDER:$1|korisnika|korisnice|korisnika}} $1
-na poslednju izmenu {{GENDER:$2|korisnika|korisnice|korisnika}} $2.',
+'rollback-success' => 'Vraćene su izmene {{GENDER:$1|korisnika|korisnice}} $1
+na poslednju izmenu {{GENDER:$2|korisnika|korisnice}} $2.',
 
 # Edit tokens
 'sessionfailure-title' => 'Sesija je okončana',
@@ -2497,12 +2468,12 @@ ova radnja je otkazana da bi se izbegla zloupotreba.
 Vratite se na prethodnu stranicu, ponovo je učitajte i pokušajte ponovo.',
 
 # Protect
-'protectlogpage' => 'Dnevnik zaštite',
+'protectlogpage' => 'Dnevnik zaključavanja',
 'protectlogtext' => 'Ispod je spisak izmena u vidu zaštite stranica.
 Pogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za više detalja.',
-'protectedarticle' => '{{GENDER:|je zaštitio|je zaštitila|je zaštitio}} „[[$1]]“',
+'protectedarticle' => '{{GENDER:|je zaštitio|je zaštitila}} „[[$1]]“',
 'modifiedarticleprotection' => '{{GENDER:|je promenio|je promenila|je promenio}} stepen zaštite za „[[$1]]“',
-'unprotectedarticle' => '{{GENDER:|je uklonio|je uklonila|je uklonio}} zaštitu sa stranice „[[$1]]“',
+'unprotectedarticle' => 'uklonjena zaštita sa stranice „[[$1]]“',
 'movedarticleprotection' => '{{GENDER:|je premestio|je premestila|je premestio}} postavke zaštite sa „[[$2]]“ na „[[$1]]“',
 'protect-title' => 'Stepen zaštite za „$1“',
 'protect-title-notallowed' => 'Pregled stepena zaštite za „$1“',
@@ -2523,7 +2494,7 @@ Ovo su trenutne postavke stranice '''$1''':",
 Ovo su postavke stranice '''$1''':",
 'protect-locked-access' => "Nemate ovlašćenja za menjanje stepena zaštite stranice.
 Ovo su trenutne postavke stranice '''$1''':",
-'protect-cascadeon' => 'Ova stranica je trenutno zaštićena jer se nalazi na {{PLURAL:$1|stranici koja ima|stranicama koje imaju}} prenosivu zaštitu.
+'protect-cascadeon' => 'Ova stranica je trenutno zaštićena jer se nalazi na {{PLURAL:$1|1=stranici koja ima|stranicama koje imaju}} prenosivu zaštitu.
 Možete da promenite stepen zaštite, ali to neće uticati na prenosivu zaštitu.',
 'protect-default' => 'Dozvoli svim korisnicima',
 'protect-fallback' => 'Dozvoljeno samo korisnicima sa dozvolom „$1“',
@@ -2589,7 +2560,6 @@ Možda ste uneli pogrešnu vezu, ili je izmena vraćena ili uklonjena iz arhive.
 'undeletebtn' => 'Vrati',
 'undeletelink' => 'pogledaj/vrati',
 'undeleteviewlink' => 'pogledaj',
-'undeletereset' => 'Poništi',
 'undeleteinvert' => 'Obrni izbor',
 'undeletecomment' => 'Razlog:',
 'undeletedrevisions' => '{{PLURAL:$1|Izmena je vraćena|$1 izmene su vraćene|$1 izmena je vraćeno}}',
@@ -2625,11 +2595,11 @@ $1',
 'tooltip-invert' => 'Označite ovu kućicu da biste sakrili izmene na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima, ako je označeno)',
 'namespace_association' => 'Povezani imenski prostor',
 'tooltip-namespace_association' => 'Označite ovu kućicu da biste uključili i razgovor ili imenski prostor teme koja je povezana s odabranim imenskim prostorom',
-'blanknamespace' => '(Glavno)',
+'blanknamespace' => '(glavni)',
 
 # Contributions
 'contributions' => '{{GENDER:$1|Korisnički}} doprinosi',
-'contributions-title' => 'Doprinosi {{GENDER:$1|korisnika|korisnice|korisnika}} $1',
+'contributions-title' => 'Doprinosi {{GENDER:$1|korisnika|korisnice}} $1',
 'mycontris' => 'Doprinosi',
 'contribsub2' => 'Za {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Izmene koje odgovaraju ovim uslovima nisu pronađene.',
@@ -2664,8 +2634,8 @@ Izveštaj o blokiranim korisnicima se nalazi ispod:',
 'isredirect' => 'preusmerenje',
 'istemplate' => 'uključivanje',
 'isimage' => 'veza ka datoteci',
-'whatlinkshere-prev' => '{{PLURAL:$1|prethodni|prethodnih $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|sledeći|sledećih $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=prethodni|prethodnih $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=sledeći|sledećih $1}}',
 'whatlinkshere-links' => '← veze',
 'whatlinkshere-hideredirs' => '$1 preusmerenja',
 'whatlinkshere-hidetrans' => '$1 uključivanja',
@@ -2674,11 +2644,10 @@ Izveštaj o blokiranim korisnicima se nalazi ispod:',
 'whatlinkshere-filters' => 'Filteri',
 
 # Block/unblock
-'autoblockid' => 'Samoblokiranje #$1',
+'autoblockid' => 'Automatsko blokiranje #$1',
 'block' => 'Blokiraj korisnika',
 'unblock' => 'Deblokiraj korisnika',
 'blockip' => 'Blokiraj korisnika',
-'blockip-title' => 'Blokiranje korisnika',
 'blockip-legend' => 'Blokiraj korisnika',
 'blockiptext' => 'Koristite donji obrazac da biste zabranili pristup za pisanje s određene IP adrese ili korisničkog imena.
 Ovo bi trebalo da vršite samo radi sprečavanja vandalizma, u skladu sa [[{{MediaWiki:Policy-url}}|smernicama]].
@@ -2686,7 +2655,6 @@ Izaberite konkretan razlog ispod (primer: navođenje konkretnih stranica koje su
 'ipadressorusername' => 'IP adresa ili korisničko ime:',
 'ipbexpiry' => 'Ističe:',
 'ipbreason' => 'Razlog:',
-'ipbreasonotherlist' => 'Drugi razlog',
 'ipbreason-dropdown' => '*Najčešći razlozi za blokiranje
 ** Unošenje lažnih informacija
 ** Uklanjanje sadržaja sa stranica
@@ -2702,8 +2670,6 @@ Izaberite konkretan razlog ispod (primer: navođenje konkretnih stranica koje su
 'ipbsubmit' => 'Blokiraj ovog korisnika',
 'ipbother' => 'Drugo vreme:',
 'ipboptions' => '2 sata:2 hours,1 dan:1 day,3 dana:3 days,1 nedelja:1 week,2 nedelje:2 weeks,1 mesec:1 month,3 meseca:3 months,6 meseci:6 months,1 godina:1 year,trajno:infinite',
-'ipbotheroption' => 'drugo',
-'ipbotherreason' => 'Drugi/dodatni razlog:',
 'ipbhidename' => 'Sakrij korisničko ime sa izmena i spiskova',
 'ipbwatchuser' => 'Nadgledaj korisničke stranice i stranice za razgovor ovog korisnika',
 'ipb-disableusertalk' => 'Zabrani ovom korisniku da uređuje svoju stranicu za razgovor dok je blokiran',
@@ -2741,8 +2707,8 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'blocklist-reason' => 'Razlog',
 'ipblocklist-submit' => 'Pretraži',
 'ipblocklist-localblock' => 'Lokalno blokiranje',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Drugo blokiranje|Druga blokiranja}}',
-'infiniteblock' => 'nikada',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Drugo blokiranje|Druga blokiranja}}',
+'infiniteblock' => 'trajno',
 'expiringblock' => 'ističe dana $1 u $2',
 'anononlyblock' => 'samo anonimni',
 'noautoblockblock' => 'automatsko blokiranje je onemogućeno',
@@ -2756,19 +2722,19 @@ Blokiranja možete da pogledate [[Special:BlockList|ovde]].',
 'change-blocklink' => 'promeni blokiranje',
 'contribslink' => 'doprinosi',
 'emaillink' => 'pošalji e-poruku',
-'autoblocker' => 'Samoblokirani ste jer delite IP adresu s {{GENDER:$1|korisnikom|korisnicom|korisnikom}} [[User:$1|$1]].
-Razlog blokiranja: "\'\'\'$2\'\'\'"',
+'autoblocker' => 'Automatski ste blokirani jer delite IP adresu s {{GENDER:$1|korisnikom|korisnicom}} [[User:$1|$1]].
+Razlog blokiranja: „$2“',
 'blocklogpage' => 'Dnevnik blokiranja',
 'blocklog-showlog' => '{{GENDER:$1|Ovaj korisnik je ranije blokiran|Ova korisnica je ranije blokirana|Ovaj korisnik je ranije blokiran}}.
 Istorija blokiranja se nalazi ispod:',
 'blocklog-showsuppresslog' => '{{GENDER:|Ovaj korisnik je ranije blokiran i sakriven|Ova korisnica je ranije blokirana i sakrivena|Ovaj korisnik je ranije blokiran i sakriven}}.
 Istorija sakrivanja se nalazi ispod:',
-'blocklogentry' => '{{GENDER:|je blokirao|je blokirala|je blokirao}} „[[$1]]” s rokom isticanja od $2 $3',
+'blocklogentry' => '{{GENDER:|je blokirao|je blokirala}} [[$1]] s rokom isticanja od $2 $3',
 'reblock-logentry' => '{{GENDER:|je promenio|je promenila|je promenio}} podešavanja za blokiranje {{GENDER:$1|korisnika|korisnice|korisnika}} [[$1]] s rokom isteka od $2 ($3)',
 'blocklogtext' => 'Ovo je dnevnik blokiranja i deblokiranja korisnika.
 Automatski blokirane IP adrese nisu navedene.
 Tekuće zabrane i blokiranja možete naći [[Special:BlockList|ovde]].',
-'unblocklogentry' => '{{GENDER:|je deblokirao|je deblokirala|je deblokirao}} „$1“',
+'unblocklogentry' => '{{GENDER:|je deblokirao|je deblokirala}} $1',
 'block-log-flags-anononly' => 'samo anonimni korisnici',
 'block-log-flags-nocreate' => 'onemogućeno otvaranje naloga',
 'block-log-flags-noautoblock' => 'automatsko blokiranje je onemogućeno',
@@ -2782,7 +2748,7 @@ Tekuće zabrane i blokiranja možete naći [[Special:BlockList|ovde]].',
 'ipb_hide_invalid' => 'Ne mogu da potisnem ovaj nalog. Možda ima previše izmena.',
 'ipb_already_blocked' => '„$1“ je već blokiran',
 'ipb-needreblock' => '$1 je već blokiran. Želite li da promenite podešavanja?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Druga blokada|Druge blokade}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Druga blokada|Druge blokade}}',
 'unblock-hideuser' => 'Ne možete deblokirati ovog korisnika jer je njegovo korisničko ime sakriveno.',
 'ipb_cant_unblock' => 'Greška: blokada $1 ne postoji. Možda je korisnik deblokiran.',
 'ipb_blocked_as_range' => 'Greška: IP adresa $1 nije direktno blokirana i ne može da se deblokira.
@@ -2796,7 +2762,6 @@ Obratite se vašem dobavljaču internet usluga ili tehničku podršku i obavesti
 'sorbsreason' => 'Vaša IP adresa je navedena kao otvoreni posrednik u DNSBL-u koji koristi {{SITENAME}}.',
 'sorbs_create_account_reason' => 'Vaša IP adresa je navedena kao otvoreni posrednik u DNSBL-u koji koristi {{SITENAME}}.
 Ne možete da otvorite nalog.',
-'cant-block-while-blocked' => 'Ne možete da blokirate druge korisnike dok ste i sami blokirani.',
 'cant-see-hidden-user' => 'Član kome želite da zabranite pristup je već blokiran i sakriven.
 S obzirom na to da nemate prava za sakrivanje korisnika, ne možete da vidite niti izmenite zabranu.',
 'ipbblocked' => 'Ne možete zabraniti ili vratiti pristup drugim korisnicima jer ste i sami blokirani',
@@ -2857,7 +2822,6 @@ dobro razmislite o posledicama pre nego što nastavite.",
 U ovom slučaju mora ručno da se premesti ili spoji, ako ima potrebe za tim.',
 'movearticle' => 'Premesti stranicu:',
 'moveuserpage-warning' => "'''Upozorenje:''' na putu ste da premestite korisničku stranicu. Imajte u vidu da će samo stranica biti premeštena, a sam korisnik ''neće'' biti preimenovan.",
-'movenologin' => 'Niste prijavljeni',
 'movenologintext' => 'Morate da budete registrovani i [[Special:UserLogin|prijavljeni]] da biste premeštali stranice.',
 'movenotallowed' => 'Nemate dozvolu da premeštate stranice.',
 'movenotallowedfile' => 'Nemate dozvolu da premeštate datoteke.',
@@ -2873,9 +2837,6 @@ U ovom slučaju mora ručno da se premesti ili spoji, ako ima potrebe za tim.',
 'articleexists' => 'Stranica s tim imenom već postoji, ili je ime neispravno.
 Izaberite drugo ime.',
 'cantmove-titleprotected' => 'Ne možete da premestite stranicu na to mesto jer je željeni naslov zaštićen od stvaranja',
-'talkexists' => "'''Sama stranica je premeštena, ali stranica za razgovor nije jer takva već postoji na novom naslovu.
-Ručno ih spojite.'''",
-'movedto' => 'premeštena na',
 'movetalk' => 'Premesti i stranicu za razgovor',
 'move-subpages' => 'Premesti i podstranice (do $1)',
 'move-talk-subpages' => 'Premesti podstranice stranice za razgovor (do $1)',
@@ -2885,7 +2846,7 @@ Ručno ih spojite.'''",
 'movepage-max-pages' => 'Najviše $1 {{PLURAL:$1|stranica je premeštena|stranice su premeštene|stranica je premešteno}}, i više ne može da bude automatski premešteno.',
 'movelogpage' => 'Dnevnik premeštanja',
 'movelogpagetext' => 'Ispod se nalazi spisak premeštanja stranica.',
-'movesubpage' => '{{PLURAL:$1|Podstranica|Podstranice|Podstranica}}',
+'movesubpage' => '{{PLURAL:$1|1=Podstranica|Podstranice}}',
 'movesubpagetext' => 'Ova stranica ima $1 {{PLURAL:$1|podstranicu prikazanu|podstranice prikazane|podstranica prikazanih}} ispod.',
 'movenosubpage' => 'Ova stranica nema podstrana.',
 'movereason' => 'Razlog:',
@@ -3021,7 +2982,7 @@ Pokušajte ponovo.',
 'import-error-interwiki' => 'Ne mogu da uvezem stranicu „$1“ jer je njen naziv rezervisan za spoljno povezivanje (međuviki).',
 'import-error-special' => 'Ne mogu da uvezem stranicu „$1“ jer ona pripada posebnom imenskom prostoru koje ne prihvata stranice.',
 'import-error-invalid' => 'Ne mogu da uvezem stranicu „$1“ jer je njen naziv neispravan.',
-'import-options-wrong' => '{{PLURAL:$2|Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Pogrešna opcija|Pogrešne opcije}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Navedena osnovna stranica ima neispravan naslov.',
 'import-rootpage-nosubpage' => 'Imenski prostor „$1“ osnovne stranice ne dozvoljava podstranice.',
 
@@ -3085,7 +3046,7 @@ Pokušajte ponovo.',
 'tooltip-t-emailuser' => 'Pošaljite e-poruku ovom korisniku',
 'tooltip-t-upload' => 'Pošaljite datoteke',
 'tooltip-t-specialpages' => 'Spisak svih posebnih stranica',
-'tooltip-t-print' => 'Izdanje za štampanje ove stranice',
+'tooltip-t-print' => 'Verzija ove stranice za štampanje',
 'tooltip-t-permalink' => 'Stalna veza ka ovoj izmeni stranice',
 'tooltip-ca-nstab-main' => 'Pogledajte stranicu sa sadržajem',
 'tooltip-ca-nstab-user' => 'Pogledajte korisničku stranicu',
@@ -3140,14 +3101,14 @@ Pokušajte ponovo.',
 'notacceptable' => 'Server ne može da napravi podatke u formatu pogodnom za vaš klijent.',
 
 # Attribution
-'anonymous' => 'Anonimni {{PLURAL:$1|korisnik|korisnici}} na projektu {{SITENAME}}',
+'anonymous' => 'Anonimni {{PLURAL:$1|1=korisnik|korisnici}} na projektu {{SITENAME}}',
 'siteuser' => '{{SITENAME}} korisnik $1',
 'anonuser' => '{{SITENAME}} anoniman korisnik $1',
 'lastmodifiedatby' => 'Ovu stranicu je poslednji put {{GENDER:$4|izmenio|izmenila|izmenio}} $3, $1 u $2.',
 'othercontribs' => 'Zasnovano na radu korisnikâ $1.',
 'others' => 'drugi',
-'siteusers' => '{{PLURAL:$2|korisnik|korisnici}} na projektu {{SITENAME}} $1',
-'anonusers' => '{{PLURAL:$2|anoniman korisnik|anonimni korisnici}} na projektu {{SITENAME}} $1',
+'siteusers' => '{{PLURAL:$2|1=korisnik|korisnici}} na projektu {{SITENAME}} $1',
+'anonusers' => '{{PLURAL:$2|1=anoniman korisnik|anonimni korisnici}} na projektu {{SITENAME}} $1',
 'creditspage' => 'Autori stranice',
 'nocredits' => 'Ne postoje podaci o autoru ove stranice.',
 
@@ -3179,7 +3140,7 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-robot-noindex' => 'Nije dozvoljeno',
 'pageinfo-views' => 'Broj pregleda',
 'pageinfo-watchers' => 'Broj nadgledača stranica',
-'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|pratioca|pratilaca}}',
+'pageinfo-few-watchers' => 'Manje od $1 {{PLURAL:$1|1=pratioca|pratilaca}}',
 'pageinfo-redirects-name' => 'Broj preusmerenja na ovu stranicu',
 'pageinfo-subpages-name' => 'Podstranice ove stranice',
 'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|preusmerenje|preusmerenja|preusmerenja}}; $3 {{PLURAL:$3|nepreusmerenje|nepreusmerenja|nepreusmerenja}})',
@@ -3191,10 +3152,10 @@ Ovo je verovatno izazvano vezom do spoljašnjeg sajta koji se nalazi na crnoj li
 'pageinfo-authors' => 'Broj zasebnih autora',
 'pageinfo-recent-edits' => 'Broj skorašnjih izmena (u poslednjih $1)',
 'pageinfo-recent-authors' => 'Broj skorašnjih zasebnih autora',
-'pageinfo-magic-words' => '{{PLURAL:$1|Magična reč|Magične reči}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}} ($1)',
-'pageinfo-templates' => '{{PLURAL:$1|Uključeni šablon|Uključeni šabloni}} ($1)',
-'pageinfo-transclusions' => '{{PLURAL:$1|Stranica|Stranice}} uključene u ($1)',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Magična reč|Magične reči}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Sakrivena kategorija|Sakrivene kategorije}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|1=Uključeni šablon|Uključeni šabloni}} ($1)',
+'pageinfo-transclusions' => '{{PLURAL:$1|1=Stranica|Stranice}} uključene u ($1)',
 'pageinfo-toolboxlink' => 'Podaci o stranici',
 'pageinfo-redirectsto' => 'Preusmerava na',
 'pageinfo-redirectsto-info' => 'podaci',
@@ -3263,7 +3224,7 @@ Ako ga pokrenete, vaš računar može biti ugrožen.",
 'svg-long-error' => 'Neispravna SVG datoteka: $1',
 'show-big-image' => 'Puna veličina',
 'show-big-image-preview' => 'Veličina ovog prikaza: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Druga rezolucija|Druge rezolucije}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Druga rezolucija|Druge rezolucije}}: $1.',
 'show-big-image-size' => '$1 × $2 piksela',
 'file-info-gif-looped' => 'petlja',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|kadar|kadra|kadrova}}',
@@ -3544,7 +3505,7 @@ Ako je prvobitno stanje datoteke promenjeno, moguće je da neki detalji ne opisu
 'exif-copyrightowner' => 'Nosilac autorskog prava',
 'exif-usageterms' => 'Pravila korišćenja',
 'exif-webstatement' => 'Izjava o autorskom pravu',
-'exif-originaldocumentid' => 'Jedinstveni IB izvornog dokumenta',
+'exif-originaldocumentid' => 'Jedinstveni ID izvornog dokumenta',
 'exif-licenseurl' => 'Adresa licence za autorska prava',
 'exif-morepermissionsurl' => 'Rezervni podaci o licenciranju',
 'exif-attributionurl' => 'Pri ponovnom korišćenju ovog rada, koristite vezu do',
@@ -3811,15 +3772,10 @@ $8',
 'exif-urgency-high' => 'Visoko ($1)',
 'exif-urgency-other' => 'Prilagođeni prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Izmeni ovu datoteku koristeći spoljašnji program',
-'edit-externally-help' => '(Pogledajte [https://www.mediawiki.org/wiki/Manual:External_editors uputstvo za podešavanje] za više informacija)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sve',
-'namespacesall' => 'sve',
+'namespacesall' => 'svi',
 'monthsall' => 'sve',
-'limitall' => 'sve',
 
 # Email address confirmation
 'confirmemail' => 'Potvrda e-adrese',
@@ -3842,7 +3798,6 @@ Greška: $1',
 'confirmemail_success' => 'Vaša e-adresa je potvrđena.
 Sada možete da se [[Special:UserLogin|prijavite]]. Želimo vam prijatan boravak na vikiju.',
 'confirmemail_loggedin' => 'Vaša e-adresa je sada potvrđena.',
-'confirmemail_error' => 'Nešto je krenulo naopako pri čuvanju vaše potvrde.',
 'confirmemail_subject' => '{{SITENAME}} – potvrda e-adrese',
 'confirmemail_body' => 'Neko, verovatno vi, sa IP adrese $1 je otvorio nalog „$2“ na vikiju {{SITENAME}}, navodeći ovu e-adresu.
 
@@ -3972,7 +3927,7 @@ Da biste uklonili naslov, označite kućicu do njega i kliknite na „{{int:Watc
 Možete i da [[Special:EditWatchlist/raw|uredite sirov spisak]].',
 'watchlistedit-normal-submit' => 'Ukloni',
 'watchlistedit-normal-done' => '{{PLURAL:$1|Jedna stranica je uklonjena|$1 stranice su uklonjene|$1 stranica je uklonjeno}} s vašeg spiska nadgledanja:',
-'watchlistedit-raw-title' => 'Napredno uređivanje spiska nadgledanja',
+'watchlistedit-raw-title' => 'Izmeni sirov spisak nadgledanja',
 'watchlistedit-raw-legend' => 'Napredno uređivanje spiska nadgledanja',
 'watchlistedit-raw-explain' => 'Naslovi sa spiska nadgledanja su prikazani ispod i mogu se uređivati dodavanjem ili uklanjanjem stavki sa spiska;
 jedan naslov po redu.
@@ -4102,7 +4057,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'fileduplicatesearch-legend' => 'Pretraga duplikata',
 'fileduplicatesearch-filename' => 'Naziv datoteke:',
 'fileduplicatesearch-submit' => 'Pretraži',
-'fileduplicatesearch-info' => '$1 × $2 piksela<br />Veličina: $3<br />MIME vrsta: $4',
+'fileduplicatesearch-info' => '$1 × $2 piksela<br />Veličina datoteke: $3<br />MIME tip: $4',
 'fileduplicatesearch-result-1' => 'Datoteka „$1“ nema istovetnih duplikata.',
 'fileduplicatesearch-result-n' => 'Datoteka „$1“ ima {{PLURAL:$2|identičan duplikat|$2 identična duplikata|$2 identičnih duplikata}}.',
 'fileduplicatesearch-noresults' => 'Datoteka pod nazivom „$1“ nije pronađena.',
@@ -4142,7 +4097,7 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 'tags' => 'Važeće oznake izmena',
 'tag-filter' => 'Filter za [[Special:Tags|oznake]]:',
 'tag-filter-submit' => 'Filtriraj',
-'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Oznaka|Oznake}}]]: $2)',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|1=Oznaka|Oznake}}]]: $2)',
 'tags-title' => 'Oznake',
 'tags-intro' => 'Na ovoj stranici je naveden spisak oznaka s kojima program može da označi izmene i njegovo značenje.',
 'tags-tag' => 'Naziv oznake',
@@ -4157,7 +4112,6 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 
 # Special:ComparePages
 'comparepages' => 'Upoređivanje stranica',
-'compare-selector' => 'Upoređivanje izmena stranice',
 'compare-page1' => 'Stranica 1',
 'compare-page2' => 'Stranica 2',
 'compare-rev1' => 'Izmena 1',
@@ -4198,13 +4152,13 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove op
 # New logging system
 'logentry-delete-delete' => '$1 je {{GENDER:$2|obrisao|obrisala}} stranicu $3',
 'logentry-delete-restore' => '$1 je {{GENDER:$2|vratio|vratila}} stranicu $3',
-'logentry-delete-event' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|događaja|$5 daogađaja}} u dnevniku na $3: $4',
-'logentry-delete-revision' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|izmene|$5 izmena}} na stranici $3: $4',
+'logentry-delete-event' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 daogađaja}} u dnevniku na $3: $4',
+'logentry-delete-revision' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=izmene|$5 izmena}} na stranici $3: $4',
 'logentry-delete-event-legacy' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost događaja u dnevniku na $3',
 'logentry-delete-revision-legacy' => '$1 je {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3',
 'logentry-suppress-delete' => '$1 je {{GENDER:$2|potisnuo|potisnula}} stranicu $3',
-'logentry-suppress-event' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|događaja|$5 događaja}} u dnevniku na $3: $4',
-'logentry-suppress-revision' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|izmene|$5 izmena}} na stranici $3: $4',
+'logentry-suppress-event' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=događaja|$5 događaja}} u dnevniku na $3: $4',
+'logentry-suppress-revision' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost {{PLURAL:$5|1=izmene|$5 izmena}} na stranici $3: $4',
 'logentry-suppress-event-legacy' => '$1 је tajno {{GENDER:$2|promenio|promenila}} vidljivost događaj u dnevniku na $3',
 'logentry-suppress-revision-legacy' => '$1 je tajno {{GENDER:$2|promenio|promenila}} vidljivost izmena na stranici $3',
 'revdelete-content-hid' => 'sadržaj je sakriven',
@@ -4255,10 +4209,10 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 'api-error-badaccess-groups' => 'Nije vam dozvoljeno da otpremate datoteke na ovaj viki.',
 'api-error-badtoken' => 'Unutrašnja greška: neispravan žeton.',
 'api-error-copyuploaddisabled' => 'Otpremanje putem adrese je onemogućeno na ovom serveru.',
-'api-error-duplicate' => 'Već {{PLURAL:$1|postoji [$2 druga datoteka]|postoje [$2 druge datoteke]}} s istim sadržajem.',
-'api-error-duplicate-archive' => '{{PLURAL:$1|Postojala je [$2 druga datoteka]|Postojale su [$2 druge datoteke]}} s istim sadržajem, ali {{PLURAL:$1|je obrisana|su obrisane}}.',
-'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|Duplirana datoteka koja je već obrisana|Duplirane datoteke koje su već obrisane}}',
-'api-error-duplicate-popup-title' => '{{PLURAL:$1|Duplirana datoteka|Duplirane datoteke}}',
+'api-error-duplicate' => 'Već {{PLURAL:$1|1=postoji [$2 druga datoteka]|postoje [$2 druge datoteke]}} s istim sadržajem.',
+'api-error-duplicate-archive' => '{{PLURAL:$1|1=Postojala je [$2 druga datoteka]|Postojale su [$2 druge datoteke]}} s istim sadržajem, ali {{PLURAL:$1|1=je obrisana|su obrisane}}.',
+'api-error-duplicate-archive-popup-title' => '{{PLURAL:$1|1=Duplirana datoteka koja je već obrisana|Duplirane datoteke koje su već obrisane}}',
+'api-error-duplicate-popup-title' => '{{PLURAL:$1|1=Duplirana datoteka|Duplirane datoteke}}',
 'api-error-empty-file' => 'Poslata datoteka je prazna.',
 'api-error-emptypage' => 'Stvaranje novih praznih stranica nije dozvoljeno.',
 'api-error-fetchfileerror' => 'Unutrašnja greška: došlo je do greške pri dobavljanju datoteke.',
@@ -4267,7 +4221,7 @@ U suprotnom, poslužite se jednostavnim obrascem ispod. Vaš komentar će stajat
 'api-error-file-too-large' => 'Poslata datoteka je prevelika.',
 'api-error-filename-tooshort' => 'Naziv datoteke je prekratak.',
 'api-error-filetype-banned' => 'Ova vrsta datoteke je zabranjena.',
-'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|Dozvoljena je|Dozvoljene su}} $2.',
+'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|1=je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}. {{PLURAL:$3|1=Dozvoljena je|Dozvoljene su}} $2.',
 'api-error-filetype-missing' => 'Datoteci nedostaje nastavak.',
 'api-error-hookaborted' => 'Izmena je odbačena od kuke za proširenja.',
 'api-error-http' => 'Unutrašnja greška: ne mogu da se povežem sa serverom.',
index 962a759..84f0a55 100644 (file)
@@ -55,12 +55,10 @@ $specialPageAliases = array(
        'Allmessages'               => array( 'Boskopu' ),
        'Allpages'                  => array( 'AlaPeprewoysi' ),
        'Ancientpages'              => array( 'PasaOwruPeprewoysi' ),
-       'Blockme'                   => array( 'SpikriMi' ),
        'BrokenRedirects'           => array( 'BrokoStirpeprewoysi' ),
        'Categories'                => array( 'Guru' ),
        'Contributions'             => array( 'Kenki' ),
        'Deadendpages'              => array( 'NoSkakiPeprewoysi' ),
-       'Disambiguations'           => array( 'PeprewoysiFuKumakriki' ),
        'DoubleRedirects'           => array( 'Tustirpeprewoysi' ),
        'Emailuser'                 => array( 'EmailMasyin' ),
        'Fewestrevisions'           => array( 'MenaKenki' ),
@@ -173,7 +171,6 @@ $messages = array(
 'tog-minordefault' => "Marki ala mi kenki leki 'pikin'",
 'tog-previewontop' => 'Fusi hey opo mi kenkibox libi si',
 'tog-previewonfirst' => 'Sori wan Si-na-fesi na a fosi kenki',
-'tog-nocache' => 'No kebroiki cache',
 'tog-enotifwatchlistpages' => 'Seni mi wan E-mail te papira ini mi "Tan luku" rey kenki',
 'tog-enotifusertalkpages' => 'Seni mi wan E-mail te mi Taki papira kenki',
 'tog-enotifminoredits' => 'E-mail mi fu pikin kenki fu peprewoysi opo mi sirey',
@@ -277,7 +274,6 @@ $messages = array(
 'qbedit' => 'Kenki',
 'qbpageoptions' => 'A papira disi',
 'qbmyoptions' => 'Mi papira',
-'qbspecialpages' => 'Spesrutu papira',
 'faq' => 'FAQ (Sani di ben aksi furu)',
 'faqpage' => 'Project:Sani di ben aksi furu',
 
@@ -494,7 +490,7 @@ Bifo tra e-mail kan seni go na a account, yu musu du san skrifi ini a e-mail fu
 'loginlanguagelabel' => 'Tongo: $1',
 
 # Change password dialog
-'resetpass' => 'Kenki yu waktiwortu',
+'changepassword' => 'Kenki yu waktiwortu',
 'resetpass_header' => 'Kenki yu waktiwortu',
 'oldpassword' => 'Owru waktiwortu:',
 'newpassword' => 'Nyun waktiwortu:',
@@ -626,19 +622,14 @@ A kan ben trowe efu dribi.
 
 # Search results
 'searchresults' => 'Sukuleysi',
-'searchresulttext' => 'Fu pasa infrumasi abra suku opo {{SITENAME}}, leysi [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Y ben o suku na '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Yu ben o suku na '''$1'''",
 'prevn' => '{{PLURAL:$1|$1}} di psa',
 'nextn' => '{{PLURAL:$1|$1}} trawan',
 'viewprevnext' => 'Luku ($1 {{int:pipe-separator}} $2) ($3).',
-'powersearch' => 'Suku moro dipi',
 
 # Preferences page
 'preferences' => 'Seti',
 'mypreferences' => 'Mi seti',
 'prefs-edits' => 'Nomru fu kenki:',
-'changepassword' => 'Kenki yu waktiwortu',
 'prefs-skin' => 'Buba',
 'skin-preview' => 'Si-na-fesi',
 'datedefault' => 'No wana',
@@ -650,7 +641,6 @@ A kan ben trowe efu dribi.
 'prefs-watchlist-edits' => 'Maximum teki fu dey ini mi granmeki sirey:',
 'prefs-misc' => 'Diversi',
 'saveprefs' => 'Oponaki',
-'resetprefs' => 'Bakadray na owru si',
 'prefs-editing' => 'Kenki',
 'rows' => 'Rei:',
 'columns' => 'Kolum:',
@@ -662,7 +652,6 @@ A kan ben trowe efu dribi.
 'savedprefs' => 'Yu masi ben oponaki.',
 'timezonelegend' => 'Gron fu ten',
 'localtime' => 'Lokali ten',
-'timezoneoffset' => 'Ski ini ten¹',
 'servertime' => 'Serverten',
 'guesstimezone' => 'Fu a browser presi',
 'allowemail' => 'E-mail fu trawan masyin adu',
@@ -716,7 +705,6 @@ A kan ben trowe efu dribi.
 'nchanges' => '$1 {{PLURAL:$1|kenki|kenki}}',
 'recentchanges' => 'Laste kenki',
 'recentchanges-feed-description' => 'Nanga a feed disi yu kan luku den moro nyun kenki fu a wiki disi.',
-'rcnote' => "Dya na ondrosey {{PLURAL:$1|'''1''' kenki|den '''$1''' laste kenki}} ini {{PLURAL:$2|a dei|den '''$2''' dei}} na fesi de fu si, tapu $4 na $5.",
 'rcnotefrom' => "Kenki fu '''$2''' (e sori te go miti '''$1''' kenki).",
 'rclistfrom' => 'Sori nyun kenki, bigin fu $1',
 'rcshowhideminor' => '$1 den pikin kenki',
@@ -877,7 +865,6 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
 'deadendpages' => 'Papira sondro miti',
 'deadendpagestext' => 'Den ondroben peprewoysi abi no skaki na trawan peprewoysi ini {{SITENAME}}.',
 'protectedpages' => 'Papira di sroto',
-'protectedpagestext' => 'Da ondroben peprewoysi ben tapu nanga kan no kenki abi efru e dribi ben',
 'listusers' => 'Réy fu kebroikiman',
 'newpages' => 'Nyun papira',
 'newpages-username' => 'Masyinnen:',
@@ -906,7 +893,6 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
 'allpagesfrom' => 'Sori papira, bigin na:',
 'allarticles' => 'Ala papira',
 'allinnamespace' => 'Ala peprewoysi (nenpreki $1)',
-'allnotinnamespace' => 'Ala peprewoysi (no ini nenpreki $1)',
 'allpagessubmit' => 'Go',
 'allpagesprefix' => 'Sori papira di e bigin nanga:',
 'allpages-bad-ns' => '{{SITENAME}} abi no nenpreki nanga a nen "$1".',
@@ -1055,15 +1041,12 @@ Ben suri taki den folo abrasi ben pre yu disi aksi du.",
 * A takipapira ondro a nyun nen da ala ben;
 * Yu a ondroben box odu.",
 'movearticle' => 'Dribi papira:',
-'movenologin' => 'No kon',
 'newtitle' => 'Na nyun papiranen:',
 'move-watch' => 'Disi papira si',
 'movepagebtn' => 'Dribi papira',
 'pagemovedsub' => 'Dribi fu a papira ben gu',
 'articleexists' => 'A papira ben ala da efu a papira nen ben fowtu.
 Gi wan trawan papiranen.',
-'talkexists' => "'''A papira ben dribi, ma a taki papira kan no dribi sey sins da ala wan papira nanga a nyun nen ben. Presi den takipeprewoysi yuse.'''",
-'movedto' => 'ben dribi na',
 'movetalk' => 'Taki papira nangadribi',
 'movelogpage' => 'Log buku fu froisi',
 'movereason' => 'Yesikrari:',
@@ -1183,10 +1166,6 @@ Trawan o kibri.
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'Kenki a file disi ini wan dorosey wrokosani.',
-'edit-externally-help' => 'Luku ini a [https://www.mediawiki.org/wiki/Manual:External_editors skorobuku fu den seti] gi moro yepi.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ala',
 'namespacesall' => 'ala',
index 9cd3dfe..63bedf6 100644 (file)
@@ -90,7 +90,6 @@ $messages = array(
 'qbedit' => 'Hlela',
 'qbpageoptions' => 'Lelikhasi',
 'qbmyoptions' => 'Makhasi ami',
-'qbspecialpages' => 'Emakhasi labalulekile',
 
 # Vector skin
 'vector-action-addsection' => 'Ngeta sihloko',
@@ -152,7 +151,7 @@ Sicela ume kancane ngaphambi lwekuphindze ubone lelikhasi.
 
 $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).
+# 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).
 'aboutsite' => 'Kabanti nge {{SITENAME}}',
 'aboutpage' => 'Project:Kabanti',
 'copyright' => 'Lokucuketfwe kungaphansi kwe $1.',
@@ -160,7 +159,6 @@ $1',
 'currentevents' => 'Tentakalo tanyalo',
 'currentevents-url' => 'Project:Tentakalo tanyalo',
 'edithelp' => 'Lusito ngekuhlela',
-'edithelppage' => 'Help:Kuhlela',
 'helppage' => 'Help:Lokucuketfwe',
 'mainpage' => 'Likhasi Lelikhulu',
 'mainpage-description' => 'Likhasi lelikhulu',
@@ -175,8 +173,6 @@ $1',
 'ok' => 'Kulungile',
 'retrievedfrom' => 'Kutsatfwe ku "$1"',
 'youhavenewmessages' => 'Una $1 ($2).',
-'newmessageslink' => 'milayeto lemisha',
-'newmessagesdifflink' => 'ingucuko yekugcina',
 'youhavenewmessagesmulti' => 'Unemilayeto lemisha nge $1',
 'editsection' => 'hlela',
 'editold' => 'hlela',
@@ -200,7 +196,6 @@ $1',
 
 # Search results
 'search-relatedarticle' => 'Lokuhlobene',
-'mwsuggest-disable' => 'Vala losito/mibono ye AJAX',
 'searcheverything-enable' => 'Sesha onke ma namespaces',
 'searchrelated' => 'lokuhlobene',
 'searchall' => 'konke',
@@ -208,11 +203,9 @@ $1',
 'showingresultsnum' => "Ngaphansi kukhonjiswa {{PLURAL:$3|'''1''' umphumela|'''$3''' miphumela}} kucalwa nga #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Umphumela '''$1''' of '''$3'''|Imiphumela '''$1 - $2''' ye '''$3'''}} ya '''$4'''",
 'search-nonefound' => 'Kute umphume lotfolwe/lofanele lesicelo sakho.',
-'powersearch' => 'Sesha ngalokuphakeme',
 'powersearch-legend' => 'Sesha ngalokuphakeme',
 'powersearch-ns' => 'Sesha ku namespaces:',
 'powersearch-redir' => 'Makhasi latfumelayo',
-'powersearch-field' => 'Sesha i',
 'powersearch-togglelabel' => 'Buka:',
 'powersearch-toggleall' => 'Konke',
 'powersearch-togglenone' => 'Kute',
@@ -221,9 +214,6 @@ $1',
 Ungasesha nge Google.
 Naka kutsi makhasi abo e {{SITENAME}} angaba sekadlulelwe sikhatsi.',
 
-# Quickbar
-'qbsettings-none' => 'Kute',
-
 # Preferences page
 'searchresultshead' => 'Sesha',
 'uid' => 'Matisi Wemuntfu:',
@@ -277,7 +267,6 @@ Naka kutsi makhasi abo e {{SITENAME}} angaba sekadlulelwe sikhatsi.',
 
 # Block/unblock
 'ipblocklist-submit' => 'Sesha',
-'proxyblocksuccess' => 'Kwentekile.',
 
 # Move page
 'movelogpage' => 'Khweshisa i-log',
index 65d5e96..a964a83 100644 (file)
@@ -68,14 +68,13 @@ $messages = array(
 'otherlanguages' => 'Ka maleme a mang',
 'jumptosearch' => 'phuputso',
 
-# 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).
+# 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).
 'mainpage' => 'Leqephe la pele',
 'mainpage-description' => 'Leqephe la pele',
 'portal' => 'Potjho e kopano',
 'portal-url' => 'Project:Potjho e kopano',
 
 'retrievedfrom' => 'E tswa ho "$1"',
-'newmessageslink' => 'melaetsa e metjha',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Sengolwa',
@@ -94,6 +93,7 @@ $messages = array(
 'mailmypassword' => 'Nthomele password ya ka ka email',
 
 # Change password dialog
+'changepassword' => 'Fetola lepetjo',
 'oldpassword' => 'Lepetjo la kgale:',
 'newpassword' => 'Lepetjo le letjha:',
 'retypenew' => 'Ngola lepetjo le letjha hape:',
@@ -106,11 +106,7 @@ $messages = array(
 'accmailtext' => 'Lepetjo la "$1" le se le rometswe ho $2.',
 'note' => "'''Ela hloko:'''",
 
-# Search results
-'powersearch' => 'Fuputsa',
-
 # Preferences page
-'changepassword' => 'Fetola lepetjo',
 'searchresultshead' => 'Phuputso',
 'allowemail' => 'Dumella batho ba bang hore ba nthomelle di-email',
 
@@ -138,7 +134,7 @@ $messages = array(
 [[Special:UnusedCategories|Unused categories]] are not shown here.
 Also see [[Special:WantedCategories|wanted categories]].',
 
-# E-mail user
+# Email user
 'emailuser' => 'Romela motho enwa email',
 'emailfrom' => 'E tswa ho:',
 'emailto' => 'Ho:',
index 1cddf44..9d664c9 100644 (file)
@@ -66,7 +66,6 @@ $messages = array(
 'tog-minordefault' => 'Alle Annerengen as littek markierje',
 'tog-previewontop' => 'Foarbekiek buppe dät Beoarbaidengsfinster anwiese',
 'tog-previewonfirst' => 'Bie dät eerste Beoarbaidjen altied dän Foarbekiek anwiese',
-'tog-nocache' => 'Siedencache fon dän Browser deaktivierje',
 'tog-enotifwatchlistpages' => 'Bie Annerengen an bekiekede Sieden E-Mails seende.',
 'tog-enotifusertalkpages' => 'Bie Annerengen an mien Benutser-Diskussionssiede E-Mails seende.',
 'tog-enotifminoredits' => 'Uk bie litje Annerengen an do Sieden E-Mails seende.',
@@ -186,7 +185,6 @@ $messages = array(
 'qbedit' => 'Annerje',
 'qbpageoptions' => 'Disse Siede',
 'qbmyoptions' => 'Mien Sieden',
-'qbspecialpages' => 'Spezialsieden',
 'faq' => 'Oafte stoalde Froagen',
 'faqpage' => 'Project:FAQ',
 
@@ -387,9 +385,6 @@ Fielicht is ju al fon uurswál läsked wuuden.',
 'perfcached' => 'Do foulgjende Doaten stamme uut dän Cache un sunt muugelkerwiese nit aktuäl. Maximoal {{PLURAL:$1|een Resultoat is|$1 Resultoate sunt}} ferföigboar in dän Cache.',
 'perfcachedts' => 'Disse Doaten stamme uut dän Cache, lääste Update: $2, $3 Uure. Maximoal {{PLURAL:$4|een Resultoat is|$4 Resultoate sunt}} ferfïgboar in dän Cache.',
 'querypage-no-updates' => "'''Ju Aktualisierengsfunktion foar disse Siede is apstuuns deaktivierd. Do Doaten wäide toueerst nit fernäierd.'''",
-'wrong_wfQuery_params' => 'Falske Parameter foar wfQuery()<br />
-Funktion: $1<br />
-Oufroage: $2',
 'viewsource' => 'Wältext betrachtje',
 'viewsource-title' => 'Wältext fon Siede $1 bekiekje',
 'actionthrottled' => 'Aktionsantaal limitierd',
@@ -515,7 +510,7 @@ Täif, eer du fon näien fersäkst.',
 'user-mail-no-addy' => 'Fersoachte ne E-Mail sunner Angoawe fon ne E-Mail-Adresse tou ferseenden',
 
 # Change password dialog
-'resetpass' => 'Paaswoud annerje',
+'changepassword' => 'Paaswoud annerje',
 'resetpass_announce' => 'Anmäldenge mäd dän uur E-Mail tousoande Code. Uum ju Anmäldenge outousluuten, moast du nu n näi Paaswoud wääle.',
 'resetpass_header' => 'Paaswoud annerje',
 'oldpassword' => 'Oold Paaswoud:',
@@ -836,10 +831,6 @@ Du koast dissen Versionsunnerskeed bekiekje, wan du wolt. Details fiende sik in
 'revisiondelete' => 'Versione läskje/wier häärstaale',
 'revdelete-nooldid-title' => 'Uunjäildige Siel-Beoarbaidenge',
 'revdelete-nooldid-text' => 'Du hääst neen Version ounroat, wierap disse Aktion uutfierd wäide skäl, ju wäälde Version is nit deer of du fersäkst, ju aktuelle Version wächtouhoaljen.',
-'revdelete-nologtype-title' => 'Naan Logtyp anroat',
-'revdelete-nologtype-text' => 'Der wuud naan Logtyp foar disse Aktion anroat.',
-'revdelete-nologid-title' => 'Uungultigen Logiendraach',
-'revdelete-nologid-text' => 'Der wuud naan Logtyp uutwääld of die wäälde Logtyp existiert nit.',
 'revdelete-no-file' => 'Ju anroate Doatäi bestoant nit.',
 'revdelete-show-file-confirm' => 'Bäst du sicher, dät du ju läskede Version fon ju Doatäi „<nowiki>$1</nowiki>“ fon dän $2 uum $3 Uure bekiekje wolt?',
 'revdelete-show-file-submit' => 'Jee',
@@ -872,8 +863,6 @@ $1",
 'logdelete-failure' => "'''Logbouksichtboarkaid kon nit annerd wäide:'''
 $1",
 'revdel-restore' => 'Sichtboarhaid annerje',
-'revdel-restore-deleted' => 'läskede Versione',
-'revdel-restore-visible' => 'sichtboare Revisione',
 'pagehist' => 'Siedegeskichte',
 'deletedhist' => 'Läskede Versione',
 'revdelete-hide-current' => 'Failer bie dät Fersteeten fon dän Iendraach fon $1, $2 Uure: Dit is ju aktuelle Version.
@@ -943,12 +932,8 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 # Search results
 'searchresults' => 'Säikresultoate',
 'searchresults-title' => 'Säikresultoate foar "$1"',
-'searchresulttext' => 'Foar moor Informatione tou ju Säike sjuch ju [[{{MediaWiki:Helppage}}|Hälpesiede]].',
-'searchsubtitle' => 'Dien Säikanfroage: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|aal mäd „$1“ ounfangende Sieden]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aal Sieden, do ätter „$1“ ferlinkje]])',
-'searchsubtitleinvalid' => 'Foar dien Säikanfroage „$1“.',
 'toomanymatches' => 'Ju Antaal fon Säikresultoate is tou groot, fersäik ne näie Oufroage.',
 'titlematches' => 'Uureenstämmengen mäd Uurskrifte',
-'notitlematches' => 'Neen Uureenstimmengen',
 'textmatches' => 'Uureenstämmengen mäd Texte',
 'notextmatches' => 'Neen Uureenstimmengen',
 'prevn' => 'foarige {{PLURAL:$1|$1}}',
@@ -957,10 +942,8 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'nextn-title' => '{{PLURAL:$1|Foulgjend Resultoat|Foulgjende $1 Resultoate}}',
 'shown-title' => 'Wies $1 {{PLURAL:$1|Resultoat|Resultoate}} pro Siede',
 'viewprevnext' => 'Wies ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Säikoptione',
 'searchmenu-exists' => "'''Dät rakt n Siede mäd Noome \"[[:\$1]]\" ap dissen Wiki'''",
 'searchmenu-new' => "'''Moak ju Siede „[[:$1]]“ in dissen Wiki.'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Wies aal Sieden, do mäd dän Säikbegriep ounfange]]',
 'searchprofile-articles' => 'Inhooldssieden',
 'searchprofile-project' => 'Hälpe un Projektsieden',
 'searchprofile-images' => 'Multimedia',
@@ -981,20 +964,16 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'search-interwiki-default' => '$1 Resultoate:',
 'search-interwiki-more' => '(wiedere)',
 'search-relatedarticle' => 'Früünde',
-'mwsuggest-disable' => 'Foarsleeke truch Ajax deaktivierje',
 'searcheverything-enable' => 'Säik in aal Noomensruume',
 'searchrelated' => 'früünd',
 'searchall' => 'aal',
 'showingresults' => "Hier {{PLURAL:$1|is '''1''' Resultoat|sunt '''$1''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
 'showingresultsnum' => "Hier {{PLURAL:$3|is '''1''' Resultoat|sunt '''$3''' Resultoate}}, ounfangend mäd Nuumer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultoat '''$1''' fon '''$3'''|Resultoate '''$1–$2''' fon '''$3'''}} foar '''$4'''",
-'nonefound' => "'''Waiwiesenge:''' Der wäide standoardmäitich man oankelde Noomensruume truchsoacht. Sät ''all:'' foar din Säikbegrip, uum aal Sieden (bietou Diskussionssieden, Foarloagen usw.) tou truchsäiken of sield dän Noome fon dän truchtousäikende Noomensruum.",
 'search-nonefound' => 'Foar dien Säikanfroage wuuden neen Resultoate fuunen.',
-'powersearch' => 'Fääre säike',
 'powersearch-legend' => 'Fääre säike',
 'powersearch-ns' => 'Säik in Noomensruume:',
 'powersearch-redir' => 'Fäärelaitengen anwiese',
-'powersearch-field' => 'Säik ätter:',
 'powersearch-togglelabel' => 'Wääl uut:',
 'powersearch-toggleall' => 'Aal',
 'powersearch-togglenone' => 'Neen',
@@ -1005,7 +984,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'preferences' => 'Ienstaalengen',
 'mypreferences' => 'Ienstaalengen',
 'prefs-edits' => 'Antaal Beoarbaidengen:',
-'changepassword' => 'Paaswoud annerje',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'Foarskau',
 'datedefault' => 'Neen Preferenz',
@@ -1025,13 +1003,11 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'prefs-email' => 'E-Mail-Optione',
 'prefs-rendering' => 'Wo dät uutsjucht',
 'saveprefs' => 'Ienstaalengen spiekerje',
-'resetprefs' => 'Nit spiekerde Annerengen fersmiete',
 'restoreprefs' => 'Aal Standoard-Ienstaalengen wier häärstaale',
 'prefs-editing' => 'Beoarbaidje',
 'rows' => 'Riegen',
 'columns' => 'Spalten',
 'searchresultshead' => 'Säike (010)',
-'resultsperpage' => 'Träffere pro Siede:',
 'stub-threshold' => '<a href="#" class="stub">Kuute Artikkele</a> markierje bi (in Byte):',
 'stub-threshold-disabled' => 'Deaktivierd',
 'recentchangesdays' => 'Antaal fon Deege, do ju Lieste fon „Lääste Annerengen“ standoardmäitich uumfoatje skäl:',
@@ -1043,7 +1019,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
 'localtime' => 'Tied bie Jou:',
 'timezoneuseserverdefault' => 'Standoardtied fon dän Server bruuke ($1)',
 'timezoneuseoffset' => 'Uur (Unnerskeed anreeke)',
-'timezoneoffset' => 'Unnerskeed¹:',
 'servertime' => 'Tied ap dän Server:',
 'guesstimezone' => 'Ienföigje uut dän Browser',
 'timezoneregion-africa' => 'Afrikoa',
@@ -1271,7 +1246,6 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
 'recentchanges-label-bot' => 'Annerenge truch n Bot',
 'recentchanges-label-unpatrolled' => 'Nit-kontrollierde Annerenge',
 'recentchanges-legend-newpage' => '$1 - näie Siede',
-'rcnote' => "Anwiesd {{PLURAL:$1|wäd '''1''' Annerenge|wäide do lääste '''$1''' Annerengen}} in {{PLURAL:$2|dän lääste Dai|do lääste '''$2''' Deege}} siet $5, $4.",
 'rcnotefrom' => "Anwiesd wäide do Annerengen siet '''$2''' (max. '''$1''' Iendraage).",
 'rclistfrom' => 'Bloot näie Annerengen siet $1 wiese.',
 'rcshowhideminor' => 'Litje Annerengen $1',
@@ -1685,10 +1659,8 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
 'protectedpages' => 'Skutsede Sieden',
 'protectedpages-indef' => 'Bloot uunbeskränkt bruukte Sieden wiese',
 'protectedpages-cascade' => 'Bloot Sieden mäd Kaskadenskuts',
-'protectedpagestext' => 'Do foulgjende Sieden sunt beskutsed juun Ferskuuwen of Beoarbaidjen',
 'protectedpagesempty' => 'Apstuuns sunt neen Sieden mäd disse Parametere skutsed.',
 'protectedtitles' => 'Speerde Tittele',
-'protectedtitlestext' => 'Do foulgjende Sieden sunt speerd uum näi tou moakjen',
 'protectedtitlesempty' => 'Apstuuns sunt mäd do ounroate Parametere neen Sieden speerd uum näi tou moakjen.',
 'listusers' => 'Benutser-Lieste',
 'listusers-editsonly' => 'Wies bloot Benutsere mäd Biedraage',
@@ -1739,9 +1711,6 @@ Ju Uutgoawe kon truch ju Uutwoal fon dän Logbouktyp, fon dän Benutser of dän
 'allpagesto' => 'Sieden anwiese bit:',
 'allarticles' => 'Aal do Artikkele',
 'allinnamespace' => 'Aal Sieden in $1 Noomenruum',
-'allnotinnamespace' => 'Aal Sieden, bute in dän $1 Noomenruum',
-'allpagesprev' => 'Foargungende',
-'allpagesnext' => 'Naiste',
 'allpagessubmit' => 'Anweende',
 'allpagesprefix' => 'Sieden anwiese mäd Präfix:',
 'allpagesbadtitle' => 'Die ienroate Siedennoome is ungultich: Hie häd äntweeder n foaranstoald Sproak-, n Interwiki-Oukuutenge of änthaalt een of moor Teekene, do der in Siedennoomen nit verwoand wäide duuren.',
@@ -2043,7 +2012,6 @@ Die aktuelle Text fon ju läskede Siede is bloot Administratore tougongelk.',
 'undeletebtn' => 'Wier häärstaale',
 'undeletelink' => 'bekiekje/wier häärstaale',
 'undeleteviewlink' => 'bekiekje',
-'undeletereset' => 'Oubreeke',
 'undeleteinvert' => 'Uutwoal uumekiere',
 'undeletecomment' => 'Gruund:',
 'undeletedrevisions' => '{{PLURAL:$1|1 Version wuude|$1 Versione wuuden}} wier häärstoald',
@@ -2128,7 +2096,6 @@ Foar Information foulget die aktuelle Iendraach uut dät Speer-Logbouk:',
 'block' => 'Benutser speere',
 'unblock' => 'Benutser fräireeke',
 'blockip' => 'Blokkierje Benutser',
-'blockip-title' => 'Benutser speere',
 'blockip-legend' => 'IP-Adresse/Benutser speere',
 'blockiptext' => 'Mäd dit Formular speerst du ne IP-Adresse of n Benutsernoome, so dät fon deer neen Annerengen moor foarnuumen wäide konnen.
 Dit skuul bloot geböäre, uum Vandalismus tou ferhinnerjen un in Uureenstimmenge mäd do [[{{MediaWiki:Policy-url}}|Gjuchtlienjen]].
@@ -2136,7 +2103,6 @@ Reek dän Gruund foar ju Speere oun.',
 'ipadressorusername' => 'IP-Adresse of Benutsernoome:',
 'ipbexpiry' => 'Oulooptied (Speerduur):',
 'ipbreason' => 'Begruundenge:',
-'ipbreasonotherlist' => 'Uur Begründenge',
 'ipbreason-dropdown' => '* Algemeene Speergruunde
 ** Ienföigjen fon falske Information
 ** Loosmoakjen fon Sieden
@@ -2152,8 +2118,6 @@ Reek dän Gruund foar ju Speere oun.',
 'ipbsubmit' => 'Adrässe blokkierje',
 'ipbother' => 'Uur Duur (ängelsk):',
 'ipboptions' => '2 Uuren:2 hours,1 Dai:1 day,3 Deege:3 days,1 Wiek:1 week,2 Wieke:2 weeks,1 Mound:1 month,3 Mounde:3 months,6 Mounde:6 months,1 Jier:1 year,Uunbestimd:infinite',
-'ipbotheroption' => 'Uur Duur',
-'ipbotherreason' => 'Uur/additionelle Begründenge:',
 'ipbhidename' => 'Benutsernoome in Beoarbaidengen un Liesten ferstopje.',
 'ipbwatchuser' => 'Benutser(diskussions)siede beooboachtje',
 'ipb-disableusertalk' => 'Dissen Benutser deeran hinderje sien oaine Diskussionssiede tou beoarbaidjen, soloange hie speerd is',
@@ -2238,7 +2202,6 @@ Sjuch ju [[Special:BlockList|Lieste fon de speerde IP-Adrässen un Benutsernoome
 'proxyblockreason' => 'Jou IP-Adrässe wuude speerd, deer ju n eepenen Proxy is. Kontaktierje jädden Jou Provider af Jou Systemtechnik un informierje Jou jou uur dit muugelke Sicherhaidsproblem.',
 'sorbsreason' => 'Dien IP-Adrässe is in ju DNSBL fon {{SITENAME}} as eepene PROXY liested.',
 'sorbs_create_account_reason' => 'Dien IP-Adrässe is in ju DNSBL fon {{SITENAME}} as eepene PROXY liested. Du koast neen Benutser-Account anlääse.',
-'cant-block-while-blocked' => 'Du duurst neen uur Benutsere speere, wan du sälwen speerd bäst.',
 'cant-see-hidden-user' => 'Die Benutser, dän du fersäkst tou speeren, wuud al speerd un ferstat. Deer du dät „hideuser“-Gjucht nit hääst, koast du ju Benutserspeere nit sjo un nit beoarbaidje.',
 'ipbblocked' => 'Du koast naan uur Benutser speere of äntspeere, deer du sälwen speerd bäst',
 'ipbnounblockself' => 'Du hääst nit ju Begjuchtigenge, die sälwen tou äntspeeren',
@@ -2294,7 +2257,6 @@ Du skuust deeruum do Konsequenze fersteen hääbe, eer du nu fääregungst.",
 In disse Falle moast du ju Siede, wan wonsked, fon Hounde ferskuuwe. Jädden dän '''näie''' Tittel unner '''Siel''' iendreege, deerunner ju Uumnaamenge jädden '''begründje'''.",
 'movearticle' => 'Siede ferskuuwe:',
 'moveuserpage-warning' => "'''Woarskauenge:''' Du bäst tougong, ne Benutserssiede tou ferskuuwen. Betoank, dät deertruch bloot ju Benutsersiede ferskäuwen, man '''nit''' die Benutser uumenaamd wäd.",
-'movenologin' => 'Du bäst nit anmälded',
 'movenologintext' => 'Du moast n registrierden Benutser un [[Special:UserLogin|anmälded]] weese, uum ne Siede ferskuuwe tou konnen.',
 'movenotallowed' => 'Du hääst neen Begjuchtigenge, Sieden tou ferskuuwen.',
 'movenotallowedfile' => 'Du hääst neen Begjuchtigenge, Doatäie tou ferskuuwen.',
@@ -2310,8 +2272,6 @@ In disse Falle moast du ju Siede, wan wonsked, fon Hounde ferskuuwe. Jädden dä
 'articleexists' => 'Dät rakt al n Siede mäd disse Noome, of uurs is die Noome dän du anroat hääst, nit toulät.
 Fersäik jädden n uur Noome.',
 'cantmove-titleprotected' => 'Ju Ferskuuwenge kon nit truchfierd wäide, deeruum dät die Sieltittel speerd is uum tou moakjen.',
-'talkexists' => 'Ju Siede sälwen wuude mäd Ärfoulch ferskäuwen, man ju Diskussionssiede nit, deer al een mäd dän näie Tittel bestoant. Glieke jädden do Inhoolde fon Hounde ou.',
-'movedto' => 'ferskäuwen ätter',
 'movetalk' => 'Ju Diskussionssiede mee ferskuuwe, wan muugelk.',
 'move-subpages' => 'Aal Unnersieden (bit tou $1) meeferskuuwe',
 'move-talk-subpages' => 'Aal Unnersieden fon Diskussionssieden (bit tou $1) meeferskuuwe',
@@ -2952,15 +2912,10 @@ Wiedere wäide standoardmäitich nit anwiesd.
 'exif-gpsdirection-t' => 'Wuddelke Gjuchte',
 'exif-gpsdirection-m' => 'Magnetiske Gjuchte',
 
-# External editor support
-'edit-externally' => 'Disse Doatäi mäd n extern Program beoarbaidje',
-'edit-externally-help' => '(Sjuch do [https://www.mediawiki.org/wiki/Manual:External_editors Installationsanwiesengen] foar wiedere Informatione)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aal',
 'namespacesall' => 'aal',
 'monthsall' => 'aal',
-'limitall' => 'aal',
 
 # Email address confirmation
 'confirmemail' => 'Email-Adrässe bestäätigje',
@@ -2978,7 +2933,6 @@ Touräächmäldenge fon dän Mailserver: $1',
 'confirmemail_needlogin' => 'Du moast die $1, uum dien E-Mail-Adresse tou bestäätigjen.',
 'confirmemail_success' => 'Dien E-Mail-Adresse wuude mäd Ärfoulch bestäätiged. Du koast die nu [[Special:UserLogin|ienlogje]].',
 'confirmemail_loggedin' => 'Dien E-Mail-Adresse wuude mäd Ärfoulch bestäätiged.',
-'confirmemail_error' => 'Et roat n Failer bie ju Bestäätigenge fon dien E-Mail-Adresse.',
 'confirmemail_subject' => '[{{SITENAME}}] - Bestäätigenge fon ju E-Mail-Adresse',
 'confirmemail_body' => 'Moin,
 
@@ -3196,7 +3150,6 @@ Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''
 
 # Special:ComparePages
 'comparepages' => 'Sieden ferglieke',
-'compare-selector' => 'Siedeversione ferglieke',
 'compare-page1' => 'Siede 1',
 'compare-page2' => 'Siede 2',
 'compare-rev1' => 'Version 1',
index 210b74b..70e614e 100644 (file)
@@ -49,7 +49,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'KacaKolot' ),
        'Blankpage'                 => array( 'KacaKosong' ),
        'Block'                     => array( 'PeungpeukIP' ),
-       'Blockme'                   => array( 'PeungpeukKuring' ),
        'Booksources'               => array( 'SumberPustaka' ),
        'BrokenRedirects'           => array( 'AlihanPegat' ),
        'Categories'                => array( 'Kategori' ),
@@ -58,7 +57,6 @@ $specialPageAliases = array(
        'Contributions'             => array( 'Kontribusi' ),
        'CreateAccount'             => array( 'NyieunRekening' ),
        'Deadendpages'              => array( 'KacaBuntu' ),
-       'Disambiguations'           => array( 'Disambiguasi' ),
        'DoubleRedirects'           => array( 'AlihanGanda' ),
        'Emailuser'                 => array( 'SurelekPamake' ),
        'Export'                    => array( 'Ekspor' ),
@@ -151,7 +149,6 @@ $messages = array(
 'tog-minordefault' => 'Tandaan sadaya éditan salaku minor luyu jeung ti dituna',
 'tog-previewontop' => 'Témbongkeun sawangan méméh kotak édit (lain sanggeusna)',
 'tog-previewonfirst' => 'Témbongkeun sawangan dina éditan munggaran',
-'tog-nocache' => "Tumpurkeun ''cache'' kaca dina pangaprak",
 'tog-enotifwatchlistpages' => 'Lamun aya kaca atawa berkas anu diawaskeun robah, béjaan ngaliwatan surélék',
 'tog-enotifusertalkpages' => 'Mun kaca obrolan kuring robah, béjaan ngaliwatan surélék',
 'tog-enotifminoredits' => 'Béjaan ogé (ngaliwatan surélék) lamun aya parobahan leutik dina kaca jeung berkasna',
@@ -273,7 +270,6 @@ $messages = array(
 'qbedit' => 'Édit',
 'qbpageoptions' => 'Kaca ieu',
 'qbmyoptions' => 'Kaca kuring',
-'qbspecialpages' => 'Kaca husus',
 'faq' => 'NLD',
 'faqpage' => 'Project:NLD',
 
@@ -473,7 +469,6 @@ Sigana geus dihapus ku nu séjén.',
 'perfcached' => "Data di handap ieu mangrupa 'cache' sahingga bisa jadi henteu mutahir. 'Cache' nyadiakeun paling loba {{PLURAL:$1|hiji hasil|$1 hasil}}.",
 'perfcachedts' => "Data di handap mangrupa 'cache' anu panungtungan diropéa $1. 'Cache' nyadiakeun paling loba {{PLURAL:$4|hiji hasil|$4 hasil}}.",
 'querypage-no-updates' => 'Pangrobahan ahir ti kaca ieu keur dipaéhkeun. Data anu aya di dieu ayeuna moal dimuat deui.',
-'wrong_wfQuery_params' => 'Parameter salah ka wfQuery()<br />Fungsi: $1<br />Pamenta: $2',
 'viewsource' => 'Témbongkeun sumber',
 'viewsource-title' => 'Témbongkeun sumber pikeun $1',
 'actionthrottled' => 'Peta diwates',
@@ -588,7 +583,7 @@ Tungguan heula sakeudeung, laju cobaan deui.',
 'user-mail-no-addy' => 'Nyobaan ngirim surélék tanpa alamat.',
 
 # Change password dialog
-'resetpass' => 'Ganti kecap sandi rekening',
+'changepassword' => 'Robah sandi',
 'resetpass_announce' => 'Anjeun asup log migunakeun sandi samentara. Salajengna, mangga gentos ku sandi anyar di dieu:',
 'resetpass_text' => '<!-- Tambahkeun téks di dieu -->',
 'resetpass_header' => 'Ganti sandi rekening',
@@ -908,8 +903,6 @@ Salaku kuncen, mun perlu, anjeun bisa kénéh [$1 nempo bédana].",
 'revisiondelete' => 'Hapus/bolay ngahapus révisi',
 'revdelete-nooldid-title' => 'Udagan révisi salah',
 'revdelete-nooldid-text' => 'Anjeun can nangtukeun atawa méré révisi pikeun ngajalankeun ieu fungsi, révisi nu di tangtukeun can aya, atawa anjeun nyoba nyumputkeun  révisi kiwari.',
-'revdelete-nologtype-text' => 'Anjeun can nangtukeun tipeu log pikeun ieu peta.',
-'revdelete-nologid-title' => 'Éntri log teu bener',
 'revdelete-no-file' => 'Berkas anu ditujul teu kapanggih.',
 'revdelete-show-file-confirm' => 'Anjeun yakin rék nempo révisi anu geus dihapus dina koropak "<nowiki>$1</nowiki>" ti $2 nepi ka $3?',
 'revdelete-show-file-submit' => 'Enya',
@@ -943,8 +936,6 @@ $1",
 'logdelete-failure' => "'''Visibilitas log teu bisa disét:'''
 $1",
 'revdel-restore' => 'robah panémbong',
-'revdel-restore-deleted' => 'révisi nu dihapus',
-'revdel-restore-visible' => 'révisi nu katémbong',
 'pagehist' => 'Sajarah kaca',
 'deletedhist' => 'Sajarah nu dihapus',
 'revdelete-hide-current' => 'Éror nyumputkeun anu titimangsana $2, $1: ieu téh révisi kiwari.
@@ -1009,12 +1000,8 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 # Search results
 'searchresults' => 'Hasil maluruh',
 'searchresults-title' => 'Hasil nyusud "$1"',
-'searchresulttext' => 'Pikeun iber nu leuwih lengkep ngeunaan nyaksrak di {{SITENAME}}, buka [[{{MediaWiki:Helppage}}|Nyaksrak {{SITENAME}}]].',
-'searchsubtitle' => 'Anjeun nyusud \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|sakabéh kaca nu dimimitian ku "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|sakabéh kaca nu numbu ka "$1"]])',
-'searchsubtitleinvalid' => 'Pikeun pamundut "$1"',
 'toomanymatches' => 'Loba teuing nu cocog, mangga cobi mundut nu sanésna',
 'titlematches' => 'Judul artikel nu cocog',
-'notitlematches' => 'Teu aya judul kaca nu cocog',
 'textmatches' => 'Téks kaca nu cocog',
 'notextmatches' => 'Teu aya téks kaca nu cocog',
 'prevn' => '{{PLURAL:$1|$1}} saméméhna',
@@ -1023,10 +1010,8 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 'nextn-title' => '$1 {{PLURAL:$1|hasil|hasil}} salajengna',
 'shown-title' => 'Témbongkeun $1 {{PLURAL:$1|hasil|hasil}} per kaca',
 'viewprevnext' => 'Témbongkeun ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Pilihan nyungsi',
 'searchmenu-exists' => "'''Dina wiki ieu geus aya kaca nu ngaranna \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Jieun kaca \"[[:\$1]]\" dina ieu wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Sungsi kaca-kaca nu dimimitian ku ieu awalan]]',
 'searchprofile-articles' => 'Kaca eusi',
 'searchprofile-project' => 'Kaca Pitulung jeung Proyék',
 'searchprofile-images' => 'Multimédia',
@@ -1047,21 +1032,16 @@ Pastikeun yén ieu parobahan bisa miara jujutan kaca sagemblengna.',
 'search-interwiki-default' => '$1 hasil:',
 'search-interwiki-more' => '(saterusna)',
 'search-relatedarticle' => 'Patula-patali',
-'mwsuggest-disable' => 'Tumpurkeun usulan AJAX',
 'searcheverything-enable' => 'Pilari di sakabéh rohangaran',
 'searchrelated' => 'patula-patali',
 'searchall' => 'sadayana',
 'showingresults' => "Di handap ieu némbongkeun {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimimitianku  #'''$2'''.",
 'showingresultsnum' => "Di handap ieu némbongkeun {{PLURAL:$3|'''1''' hasil|'''$3''' hasil}}, dimimitian #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Hasil '''$1''' ti '''$3'''|Hasil '''$1 - $2''' ti '''$3'''}} pikeun '''$4'''",
-'nonefound' => "'''Catetan''': Ti buhunna (default), panyusud téh ukur ngawengku sababaraha ngaran rohang.
-Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup kaca obrolan, citakan, jsb.) atawa pilih rohang ngaran dina awalanana luyu jeung nu dimaksud.",
 'search-nonefound' => 'Euweuh hasil nu cocog jeung kueri.',
-'powersearch' => 'Sungsi',
 'powersearch-legend' => 'Panéangan tuluy',
 'powersearch-ns' => 'Téangan di ngaranspasi:',
 'powersearch-redir' => 'Daptar alihan',
-'powersearch-field' => 'Téangan keur',
 'powersearch-togglelabel' => 'Pariksa:',
 'powersearch-toggleall' => 'Kabéh',
 'powersearch-togglenone' => 'Henteu aya',
@@ -1072,7 +1052,6 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
 'preferences' => 'Préferénsi',
 'mypreferences' => 'Préferéns',
 'prefs-edits' => 'Jumlah éditan:',
-'changepassword' => 'Robah sandi',
 'prefs-skin' => 'Kulit',
 'skin-preview' => 'Pramidang',
 'datedefault' => 'Tanpa préferénsi',
@@ -1093,13 +1072,11 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
 'prefs-email' => 'Pilihan surélék',
 'prefs-rendering' => 'Pidangan',
 'saveprefs' => 'Simpen préferénsi',
-'resetprefs' => 'Sét ulang préferénsi',
 'restoreprefs' => 'Larapkeun setélan buhun',
 'prefs-editing' => 'Ukuran kotak téks',
 'rows' => 'Baris',
 'columns' => 'Kolom',
 'searchresultshead' => 'Aturan hasil néang',
-'resultsperpage' => 'Hasil nu ditémbongkeun per kaca',
 'stub-threshold' => 'Wates ambang pikeun format <a href="#" class="stub">tumbu taratas</a> (bit):',
 'stub-threshold-disabled' => 'Tumpur',
 'recentchangesdays' => 'Jumlah poé nu dipidangkeun dina Nu anyar robah:',
@@ -1111,7 +1088,6 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
 'localtime' => 'Wanci satempat:',
 'timezoneuseserverdefault' => 'Paké bawaan wiki ($1)',
 'timezoneuseoffset' => 'Lianna (tangtukeun bédana)',
-'timezoneoffset' => 'Béda¹:',
 'servertime' => 'Wanci server:',
 'guesstimezone' => 'Eusian ti panyungsi',
 'timezoneregion-africa' => 'Afrika',
@@ -1330,7 +1306,6 @@ Mun geus anggeus teu bisa dibolaykeun.',
 'recentchanges-label-bot' => 'Ieu parobahan dijieun ku bot',
 'recentchanges-label-unpatrolled' => 'Ieu éditan can karoris',
 'recentchanges-legend-newpage' => '$1 - kaca anyar',
-'rcnote' => "Di handap ieu {{PLURAL:$1|'''1''' parobahan| '''$1''' parobahan anyar}} dina  {{PLURAL:$2|poé|'''$2''' poé}} ahir, nepi $5, $4.",
 'rcnotefrom' => 'Di handap ieu parobahan saprak <b>$2</b> (nu ditémbongkeun nepi ka <b>$1</b>).',
 'rclistfrom' => 'Témbongkeun nu anyar robah nepi ka $1',
 'rcshowhideminor' => '$1 éditan minor',
@@ -1677,10 +1652,8 @@ Saméméh ngahapus, pariksa heula bisi aya tumbu ka ieu citakan.',
 'deadendpagestext' => 'Kaca-kaca di handap ieu teu numbu ka kaca séjén di {{SITENAME}}:',
 'protectedpages' => 'Kaca-kaca nu dikonci',
 'protectedpages-indef' => 'Ngan pikeun panangtayungan kalawan waktu nuteu kawates',
-'protectedpagestext' => 'Kaca-kaca di handap ieu teu bisa dialihkeun atawa diédit',
 'protectedpagesempty' => 'Dina danget ieu, teu aya kaca nu dikonci dumasar kana ieu paraméter.',
 'protectedtitles' => 'Judul nu dikonci',
-'protectedtitlestext' => 'Judul-judul di handap ieu teu bisa dijieun:',
 'protectedtitlesempty' => 'Dina danget ieu, euweuh judul nu keur dikonci tina paraméter-paraméter éta.',
 'listusers' => 'Daptar pamaké',
 'listusers-editsonly' => 'Témbongkeun ukur kontributor anu ngédit',
@@ -1730,9 +1703,6 @@ Bisa dipondokkeun ku cara milih tipe log, ngaran pamaké, atawa kaca nu dimaksud
 'allpagesto' => 'Témbongkeun kaca-kaca nepi ka:',
 'allarticles' => 'Sadaya artikel',
 'allinnamespace' => 'Sadaya kaca (ngaranspasi $1)',
-'allnotinnamespace' => 'Sadaya kaca (teu na $1 ngaranspasi)',
-'allpagesprev' => 'Saméméhna',
-'allpagesnext' => 'Salajengna',
 'allpagessubmit' => 'Jung',
 'allpagesprefix' => 'Pintonkeun kaca dimimitian ku:',
 'allpagesbadtitle' => 'Judul kaca nu dibikeun teu bener atawa mibanda awalan antarbasa atawa antarwiki, nu ngandung karakter nu teu bisa dipaké dina judul.',
@@ -2079,21 +2049,17 @@ Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
 'block' => 'Peungpeuk kontributor',
 'unblock' => 'Buka peungpeuk kontributor',
 'blockip' => 'Peungpeuk pamaké',
-'blockip-title' => 'Peungpeuk pamaké',
 'blockip-legend' => 'Peungpeuk pamaké',
 'blockiptext' => 'Paké formulir di handap pikeun meungpeuk aksés nulis ti alamat IP atawa ngaran pamaké husus. Ieu sakuduna ditujukeun pikeun nyegah vandalisme, sarta saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan]]. Eusi alesan nu jéntré (misal, ngarujuk kaca tinangtu nu geus diruksak).',
 'ipadressorusername' => 'Alamat IP atawa ngaran pamaké',
 'ipbexpiry' => 'Kadaluarsa',
 'ipbreason' => 'Alesan:',
-'ipbreasonotherlist' => 'Alesan séjén',
 'ipbcreateaccount' => 'Tong bisa nyieun rekening',
 'ipbemailban' => 'Henteu kaci pamaké ngirimkeun surélék',
 'ipbenableautoblock' => 'Peungpeuk sacara otomatis alamat IP anu panungtungan dipaké ku pamaké sarta sakabéh alamat IP anu kungsi dipaké.',
 'ipbsubmit' => 'Peungpeuk pamaké ieu',
 'ipbother' => 'Waktu séjén',
 'ipboptions' => '2 jam:2 hours,sapoé:1 day,3 poé:3 days,saminggu:1 week,2 minggu:2 weeks,sabulan:1 month,3 bulan:3 months,6 bulan:6 months,sataun:1 year,tanpa wates:infinite',
-'ipbotheroption' => 'séjénna',
-'ipbotherreason' => 'Alesan séjén/tambahan',
 'ipbhidename' => 'Sumputkeun ngaran pamaké tina éditan jeung daptar pamaké',
 'ipbwatchuser' => 'Awaskeun kaca pamaké jeung kaca obrolan pamaké ieu',
 'badipaddress' => 'Alamat IP teu sah',
@@ -2158,7 +2124,6 @@ Pikeun rujukan, logna dipidangkeun di handap ieu:',
 'proxyblockreason' => "Alamat IP anjeun dipeungpeuk sabab mangrupa proxy muka. Mangga tepungan ''Internet service provider'' atanapi ''tech support'' anjeun, béjakeun masalah serius ieu.",
 'sorbsreason' => "Alamat IP anjeun kadaptar salaku ''open proxy'' dina DNSBL.",
 'sorbs_create_account_reason' => "Alamat IP anjeun kadaptar salaku ''open proxy'' dina DNSBL. Anjeun teu bisa nyieun rekening",
-'cant-block-while-blocked' => 'Lamun keur dipeungpeuk, anjeun teu bisa meungpeuk séjén kontributor.',
 'ipbblocked' => 'Anjeun teu bisa meungpeuk atawa muka peungpeuk séjén kontributor ku sabab anjeun sorangan keur dipeungpeuk',
 
 # Developer tools
@@ -2200,7 +2165,6 @@ anjeun kudu bener-bener ngarti kana hal ieu.",
 
 Dina kajadian kitu, mun hayang (jeung perlu) anjeun kudu mindahkeun atawa ngagabungkeun kacana sacara manual.",
 'movearticle' => 'Pindahkeun kaca',
-'movenologin' => 'Can asup log',
 'movenologintext' => 'Anjeun kudu jadi pamaké nu kadaptar tur [[Special:UserLogin|asup log]] pikeun mindahkeun kaca.',
 'movenotallowed' => 'Anjeung teu boga kawenangan mindahkeun kaca.',
 'movenotallowedfile' => 'Anjeung teu boga kawenangan mindahkeun kaca.',
@@ -2211,8 +2175,6 @@ Dina kajadian kitu, mun hayang (jeung perlu) anjeun kudu mindahkeun atawa ngagab
 'movepage-moved' => '\'\'\'"$1" geus dipindahkeun ka "$2"\'\'\'',
 'articleexists' => 'Kaca nu ngaranna kitu geus aya, atawa ngaran nu dipilih ku anjeun teu sah. Mangga pilih ngaran séjén.',
 'cantmove-titleprotected' => 'Anjeun teu bisa mindahkeun kaca ka dieu, sabab éta judul dikonci',
-'talkexists' => 'Kacana geus hasil dipindahkeun, ngan kaca obrolanana teu bisa dipindahkeun sabab geus aya nu anyar na judul anyar. Mangga gabungkeun sacara manual.',
-'movedto' => 'dipindahkeun ka',
 'movetalk' => 'Mun bisa, kaca "obrolan" ogé pindahkeun.',
 'move-subpages' => 'Pindahkeun kabéh sub-kaca (nepika $1)',
 'move-talk-subpages' => 'Pindahkeun kabéh sub-kaca obrolan (nepika $1)',
@@ -2787,15 +2749,10 @@ Nu séjénna bakal disumputkeun sakumaha asalna.
 
 'exif-urgency-normal' => 'Normal ($1)',
 
-# External editor support
-'edit-externally' => 'Édit koropak ieu migunakeun aplikasi éksternal',
-'edit-externally-help' => 'Baca [https://www.mediawiki.org/wiki/Manual:External_editors pituduh ngatur] pikeun émbaran leuwih jéntré.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'sadaya',
 'namespacesall' => 'kabéh',
 'monthsall' => 'kabéh',
-'limitall' => 'kabéh',
 
 # Email address confirmation
 'confirmemail' => 'Konfirmasi alamat surélék',
@@ -2810,7 +2767,6 @@ Nu séjénna bakal disumputkeun sakumaha asalna.
 'confirmemail_needlogin' => 'Sangkan bisa ngonfirmasi alamat surélék, anjeun kudu $1.',
 'confirmemail_success' => 'Alamat surélék anjeun geus dikonfirmasi, ayeuna anjeun geus bisa migunakeun wikina.',
 'confirmemail_loggedin' => 'Alamat surélék anjeun geus dikonfirmasi.',
-'confirmemail_error' => 'Aya nu salah nalika nyimpen konfirmasi anjeun.',
 'confirmemail_subject' => 'Konfirmasi alamat surélék {{SITENAME}}',
 'confirmemail_body' => 'Aya, sigana mah anjeun ti alamat IP $1, geus ngadaptarkeun rekening "$2" maké alamat surélék ieu na {{SITENAME}}.
 
index 4381b03..8aff5ab 100644 (file)
@@ -98,7 +98,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'Gamla_sidor' ),
        'Blankpage'                 => array( 'Tom_sida' ),
        'Block'                     => array( 'Blockera' ),
-       'Blockme'                   => array( 'Blockera_mig' ),
        'Booksources'               => array( 'Bokkällor' ),
        'BrokenRedirects'           => array( 'Trasiga_omdirigeringar', 'Dåliga_omdirigeringar' ),
        'Categories'                => array( 'Kategorier' ),
@@ -108,9 +107,9 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Skapa_konto' ),
        'Deadendpages'              => array( 'Sidor_utan_länkar', 'Sidor_utan_länkar_från' ),
        'DeletedContributions'      => array( 'Raderade_bidrag' ),
-       'Disambiguations'           => array( 'Förgreningssidor' ),
        'DoubleRedirects'           => array( 'Dubbla_omdirigeringar' ),
        'Emailuser'                 => array( 'E-mail' ),
+       'ExpandTemplates'           => array( 'Expandera_mallar', 'Utöka_mallar' ),
        'Export'                    => array( 'Exportera' ),
        'Fewestrevisions'           => array( 'Minst_versioner' ),
        'FileDuplicateSearch'       => array( 'Dublettfilsökning' ),
@@ -327,7 +326,7 @@ $dateFormats = array(
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Stryk under länkar',
+'tog-underline' => 'Stryk under länkar:',
 'tog-justify' => 'Marginaljustera stycken',
 'tog-hideminor' => 'Visa inte mindre redigeringar i senaste ändringar',
 'tog-hidepatrolled' => 'Dölj patrullerade redigeringar i senaste ändringar',
@@ -347,10 +346,9 @@ $messages = array(
 'tog-watchdeletion' => 'Lägg till sidor och filer jag raderar i min bevakningslista',
 'tog-minordefault' => 'Markera automatiskt ändringar som mindre',
 'tog-previewontop' => 'Visa förhandsgranskningen ovanför redigeringsrutan',
-'tog-previewonfirst' => 'Visa förhandsgranskning när redigering påbörjas',
-'tog-nocache' => 'Stäng av cachelagring för sidor',
-'tog-enotifwatchlistpages' => 'Skicka e-post till mig när en sida på min bevakningslista ändras',
-'tog-enotifusertalkpages' => 'Skicka e-post till mig när något händer på min diskussionssida',
+'tog-previewonfirst' => 'Visa förhandsgranskning vid första redigeringen',
+'tog-enotifwatchlistpages' => 'Skicka e-post till mig när en sida eller fil på min bevakningslista ändras',
+'tog-enotifusertalkpages' => 'Skicka e-post till mig när något ändras på min diskussionssida',
 'tog-enotifminoredits' => 'Skicka mig e-post även för mindre ändringar av sidor och filer',
 'tog-enotifrevealaddr' => 'Visa min e-postadress i e-postmeddelanden om ändringar som skickas till andra',
 'tog-shownumberswatching' => 'Visa antalet användare som bevakar',
@@ -410,18 +408,18 @@ $messages = array(
 'october' => 'oktober',
 'november' => 'november',
 'december' => 'december',
-'january-gen' => 'januaris',
-'february-gen' => 'februaris',
+'january-gen' => 'januari',
+'february-gen' => 'februari',
 'march-gen' => 'mars',
-'april-gen' => 'aprils',
-'may-gen' => 'majs',
-'june-gen' => 'junis',
-'july-gen' => 'julis',
-'august-gen' => 'augustis',
-'september-gen' => 'septembers',
-'october-gen' => 'oktobers',
-'november-gen' => 'novembers',
-'december-gen' => 'decembers',
+'april-gen' => 'april',
+'may-gen' => 'maj',
+'june-gen' => 'juni',
+'july-gen' => 'juli',
+'august-gen' => 'augusti',
+'september-gen' => 'september',
+'october-gen' => 'oktober',
+'november-gen' => 'november',
+'december-gen' => 'december',
 'jan' => 'jan',
 'feb' => 'feb',
 'mar' => 'mar',
@@ -483,8 +481,7 @@ $messages = array(
 'qbbrowse' => 'Bläddra igenom',
 'qbedit' => 'Redigera',
 'qbpageoptions' => 'Denna sida',
-'qbmyoptions' => 'Mina inställningar',
-'qbspecialpages' => 'Specialsidor',
+'qbmyoptions' => 'Mina sidor',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -574,7 +571,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).
 'aboutsite' => 'Om {{SITENAME}}',
 'aboutpage' => 'Project:Om',
-'copyright' => 'Innehållet är tillgängligt under $1.',
+'copyright' => 'Innehållet är tillgängligt under $1 om inte annat anges.',
 'copyrightpage' => '{{ns:project}}:Upphovsrätt',
 'currentevents' => 'Aktuella händelser',
 'currentevents-url' => 'Project:Aktuella händelser',
@@ -585,22 +582,22 @@ $1',
 'mainpage' => 'Huvudsida',
 'mainpage-description' => 'Huvudsida',
 'policy-url' => 'Project:Riktlinjer',
-'portal' => 'Deltagarportalen',
-'portal-url' => 'Project:Deltagarportalen',
+'portal' => 'Gemenskapens portal',
+'portal-url' => 'Project:Gemenskapens portal',
 'privacy' => 'Integritetspolicy',
 'privacypage' => 'Project:Integritetspolicy',
 
 'badaccess' => 'Behörighetsfel',
 'badaccess-group0' => 'Du har inte behörighet att utföra den handling du begärt.',
-'badaccess-groups' => 'Den handling du har begärt kan enbart utföras av användare i {{PLURAL:$2|gruppen|grupperna}} $1.',
+'badaccess-groups' => 'Den handling du har begärt kan enbart utföras av användare i {{PLURAL:$2|gruppen|en av grupperna}}: $1.',
 
 'versionrequired' => 'Version $1 av MediaWiki krävs',
 'versionrequiredtext' => 'Version $1 av MediaWiki är nödvändig för att använda denna sida. Se [[Special:Version|versionssidan]].',
 
 'ok' => 'OK',
 'retrievedfrom' => 'Hämtad från "$1"',
-'youhavenewmessages' => 'Du har $1 ($2).',
-'youhavenewmessagesfromusers' => 'Du har $1 från {{PLURAL:$3|en annan användare|$3 användare}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|Du har}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|Du har}} $1 från {{PLURAL:$3|en annan användare|$3 användare}} ($2).',
 'youhavenewmessagesmanyusers' => 'Du har $1 från många användare ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ett nytt meddelande|999=nya meddelanden}}',
 'newmessagesdifflinkplural' => 'senaste {{PLURAL:$1|ändring|999=ändringar}}',
@@ -614,7 +611,7 @@ $1',
 'toc' => 'Innehåll',
 'showtoc' => 'visa',
 'hidetoc' => 'göm',
-'collapsible-collapse' => 'Göm',
+'collapsible-collapse' => 'Kollapsa',
 'collapsible-expand' => 'Expandera',
 'thisisdeleted' => 'Visa eller återställ $1?',
 'viewdeleted' => 'Visa $1?',
@@ -633,7 +630,7 @@ $1',
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Sida',
 'nstab-user' => 'Användarsida',
-'nstab-media' => 'Media',
+'nstab-media' => 'Mediasida',
 'nstab-special' => 'Specialsida',
 'nstab-project' => 'Projektsida',
 'nstab-image' => 'Fil',
@@ -644,9 +641,9 @@ $1',
 
 # Main script and global functions
 'nosuchaction' => 'Funktionen finns inte',
-'nosuchactiontext' => 'Den handling som specificerats av URL:en är ogiltig.
-Du kan ha stavat URL:en fel, eller följt en felaktig länk.
-Det kan också bero på en bug i {{SITENAME}}.',
+'nosuchactiontext' => 'Den handling som specificerats av webbadressen är ogiltig.
+Du kan ha stavat webbadressen fel, eller följt en felaktig länk.
+Det kan även bero på en bugg i mjukvaran som används på {{SITENAME}}.',
 'nosuchspecialpage' => 'Någon sådan specialsida finns inte',
 'nospecialpagetext' => '<strong>Du har begärt en specialsida som inte finns.</strong>
 
@@ -662,8 +659,8 @@ Detta kan tyda på en bugg i mjukvaran.',
 'databaseerror-function' => 'Funktion: $1',
 'databaseerror-error' => 'Fel: $1',
 'laggedslavemode' => 'Varning: Sidan kan sakna de senaste uppdateringarna.',
-'readonly' => 'Databasen är skrivskyddad',
-'enterlockreason' => 'Ange varför sidan skrivskyddats, och ge en uppskattning av hur länge skrivskyddet bör behållas.',
+'readonly' => 'Databasen är låst',
+'enterlockreason' => 'Ange varför sidan låsts, och ge en uppskattning av hur länge skrivskyddet bör behållas.',
 'readonlytext' => 'Databasen är tillfälligt låst för nya inlägg och andra modifieringar, förmodligen på grund av rutinmässigt underhåll, efter vilket den kommer den att återgå till normalläge.
 
 Den administratör som låste den har angivit följande förklaring: $1',
@@ -673,8 +670,8 @@ Detta orsakas oftast av att man följer en inaktuell länk till en jämförelse
 
 Om inte så är fallet, kan du ha hittat en bugg i mjukvaran.
 Rapportera gärna problemet till någon [[Special:ListUsers/sysop|administratör]], ange då URL:en (webbadressen).',
-'missingarticle-rev' => '(version $1)',
-'missingarticle-diff' => '(jämförelse mellan version $1 och $2)',
+'missingarticle-rev' => '(versionsnummer: $1)',
+'missingarticle-diff' => '(Skillnad: $1, $2)',
 'readonly_lag' => 'Databasen har automatiskt skrivskyddats medan slavdatabasservrarna synkroniseras med huvudservern.',
 'internalerror' => 'Internt fel',
 'internalerror_info' => 'Internt fel: $1',
@@ -701,7 +698,6 @@ Den kan innehålla ett eller flera tecken som inte får användas i sidtitlar.',
 'perfcached' => 'Följande data är cachad och är möjligtvis inte helt uppdaterad. Maximalt {{PLURAL:$1|ett|$1}} resultat finns {{PLURAL:$1|tillgängligt|tillgängliga}} i cachen.',
 'perfcachedts' => 'Sidan är hämtad ur ett cacheminne och uppdaterades senast $1. Maximalt {{PLURAL:$4|ett|$4}} resultat finns {{PLURAL:$4|tillgängligt|tillgängliga}} i cachen.',
 'querypage-no-updates' => 'Uppdatering av den här sidan är inte aktiverad. Datan kommer i nuläget inte att uppdateras.',
-'wrong_wfQuery_params' => 'Felaktiga parametrar för wfQuery()<br /> Funktion: $1<br /> Förfrågan: $2',
 'viewsource' => 'Visa wikitext',
 'viewsource-title' => 'Visa källkod för $1',
 'actionthrottled' => 'Åtgärden stoppades',
@@ -717,18 +713,18 @@ För att lägga till eller ändra översättningar för alla wikis, var god anv
 'cascadeprotected' => 'Den här sidan har skyddats från redigering eftersom den inkluderas på följande {{PLURAL:$1|sida|sidor}} som skrivskyddats med "kaskaderande skydd":
 $2',
 'namespaceprotected' => "Du har inte behörighet att redigera sidor i namnrymden '''$1'''.",
-'customcssprotected' => 'Du har inte behörighet att redigera denna CSS-sidan eftersom den innehåller en annan användares personliga inställningar.',
-'customjsprotected' => 'Du har inte behörighet att redigera denna JavaScript-sidan eftersom den innehåller en annan användares personliga inställningar.',
+'customcssprotected' => 'Du har inte behörighet att redigera denna CSS-sida eftersom den innehåller en annan användares personliga inställningar.',
+'customjsprotected' => 'Du har inte behörighet att redigera denna JavaScript-sida eftersom den innehåller en annan användares personliga inställningar.',
 'mycustomcssprotected' => 'Du har inte rättigheten att redigera denna CSS-sida.',
 'mycustomjsprotected' => 'Du har inte rättigheten att redigera denna JavaScript-sida.',
 'myprivateinfoprotected' => 'Du har inte behörighet att redigera din privata information.',
 'mypreferencesprotected' => 'Du har inte behörighet att redigera dina inställningar.',
 'ns-specialprotected' => 'Specialsidor kan inte redigeras.',
 'titleprotected' => 'Denna sidtitel har skyddats från att skapas av [[User:$1|$1]].
-Den uppgivna anledningen är "\'\'$2\'\'".',
+Den angivna anledningen är "\'\'$2\'\'".',
 'filereadonlyerror' => 'Det går inte att ändra filen "$1", eftersom fildatabasen "$2" är i skrivskyddat läge.
 
-Den administratören som låste den gav denna anledning: "\'\'$3\'\'".',
+Den administratör som låste den angav följande anledning: "\'\'$3\'\'".',
 'invalidtitle-knownnamespace' => 'Ogiltig titel med namnrymden "$2" och texten "$3"',
 'invalidtitle-unknownnamespace' => 'Ogiltig titel med okänt namnrymdsnummer $1 och texten "$2"',
 'exception-nologin' => 'Inte inloggad',
@@ -758,7 +754,7 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'yourpasswordagain' => 'Upprepa lösenord',
 'createacct-yourpasswordagain' => 'Bekräfta lösenordet',
 'createacct-yourpasswordagain-ph' => 'Ange lösenordet igen',
-'remembermypassword' => 'Spara min inloggning på den här datorn (i max $1 {{PLURAL:$1|dygn|dygn}})',
+'remembermypassword' => 'Spara min inloggning på den här datorn (i max $1 {{PLURAL:$1|dygn}})',
 'userlogin-remembermypassword' => 'Håll mig inloggad',
 'userlogin-signwithsecure' => 'Använd säker anslutning',
 'yourdomainname' => 'Din domän',
@@ -774,10 +770,10 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
 'notloggedin' => 'Inte inloggad',
 'userlogin-noaccount' => 'Har du inget konto?',
 'userlogin-joinproject' => 'Gå med i {{SITENAME}}',
-'nologin' => 'Har du inget användarkonto? $1.',
-'nologinlink' => 'Skapa ett användarkonto',
+'nologin' => 'Har du inget konto? $1.',
+'nologinlink' => 'Skapa ett konto',
 'createaccount' => 'Skapa ett konto',
-'gotaccount' => "Har du redan ett användarkonto? '''$1'''.",
+'gotaccount' => "Har du redan ett konto? '''$1'''.",
 'gotaccountlink' => 'Logga in',
 'userlogin-resetlink' => 'Har du glömt dina inloggningsuppgifter?',
 'userlogin-resetpassword-link' => 'Glömt ditt lösenord?',
@@ -795,7 +791,7 @@ Använd formuläret nedan för att logga in som en annan användare.',
 'createaccountmail' => 'Använd ett tillfälligt slumpvis valt lösenord och skicka det till den angivna e-postadressen',
 'createacct-realname' => 'Riktigt namn (valfritt)',
 'createaccountreason' => 'Orsak:',
-'createacct-reason' => 'Anledning',
+'createacct-reason' => 'Orsak',
 'createacct-reason-ph' => 'Varför du skapar ett annat konto',
 'createacct-captcha' => 'Säkerhetskontroll',
 'createacct-imgcaptcha-ph' => 'Fyll i texten du ser ovan',
@@ -804,7 +800,7 @@ Använd formuläret nedan för att logga in som en annan användare.',
 'createacct-benefit-heading' => '{{SITENAME}} är skapad av människor som dig.',
 'createacct-benefit-body1' => '{{PLURAL:$1|redigering|redigeringar}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|sida|sidor}}',
-'createacct-benefit-body3' => 'senaste {{PLURAL:$1|bidragsgivare}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|nylig|nyliga}} bidragsgivare',
 'badretype' => 'De lösenord du uppgett överensstämmer inte med varandra.',
 'userexists' => 'Det valda användarnamnet används redan.
 Var god välj ett annat namn.',
@@ -832,12 +828,12 @@ Kontrollera din stavning, eller [[Special:UserLogin/signup|skapa ett nytt konto]
 'passwordtooshort' => 'Lösenord måste innehålla minst {{PLURAL:$1|$1 tecken}}.',
 'password-name-match' => 'Ditt lösenord måste vara olikt ditt användarnamn.',
 'password-login-forbidden' => 'Användningen av dessa användarnamn och lösenord har förbjudits.',
-'mailmypassword' => 'Skicka nytt lösenord',
+'mailmypassword' => 'Återställ lösenord',
 'passwordremindertitle' => 'Nytt temporärt lösenord från {{SITENAME}}',
 'passwordremindertext' => 'Någon (förmodligen du, från IP-adressen $1) har begärt ett nytt lösenord till {{SITENAME}} ($4). Ett tillfälligt lösenordet för användaren "$2" har skapats och det blev "$3". Om detta var vad du önskade, så behöver du nu logga in och välja ett nytt lösenord. Ditt tillfälliga lösenord går ut om {{PLURAL:$5|ett dygn|$5 dygn}}.
 
 Om denna begäran gjordes av någon annan, eller om du har kommit på ditt lösenord,
-och inte längre önskar ändra det, så kan du ignorera detta meddelande och
+och inte längre önskar ändra det, så kan du ignorera detta meddelande. Då kan du
 fortsätta använda ditt gamla lösenord.',
 'noemail' => 'Användaren "$1" har inte registrerat någon e-postadress.',
 'noemailcreate' => 'Du måste ange en giltig e-postadress',
@@ -858,8 +854,8 @@ Som ett resultat kan besökare som använder den här IP-adressen inte skapa nå
 Skriv in en adress med korrekt format eller töm fältet.',
 'cannotchangeemail' => 'E-post-adresser som är bundna till användarkonton kan inte ändras på denna wiki.',
 'emaildisabled' => 'Denna webbplats kan inte skicka e-post.',
-'accountcreated' => 'Användarkontot har skapats',
-'accountcreatedtext' => 'Användarkontot [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) har skapats.',
+'accountcreated' => 'Kontot har skapats',
+'accountcreatedtext' => 'Användarkontot [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|diskussion]]) har skapats.',
 'createaccount-title' => 'Konto skapat på {{SITENAME}}',
 'createaccount-text' => 'Någon har skapat ett konto åt din e-postadress på {{SITENAME}} ($4) med namnet "$2" och lösenordet "$3". Du bör nu logga in och ändra ditt lösenord.
 
@@ -874,19 +870,19 @@ Vänta $1 innan du försöker igen.',
 Om du väljer att ange det, kommer det användas för att tillskriva användaren för sitt arbete.',
 
 # Email sending
-'php-mail-error-unknown' => "Okänt fel i PHP's mail()-funktion",
+'php-mail-error-unknown' => 'Okänt fel i PHP:s mail()-funktion',
 'user-mail-no-addy' => 'Försökte skicka e-post utan en e-postadress',
 'user-mail-no-body' => 'Försökte skicka e-post med tomt eller orimligt kort innehåll.',
 
 # Change password dialog
-'resetpass' => 'Ändra lösenord',
+'changepassword' => 'Byt lösenord',
 'resetpass_announce' => 'Du loggade in med ett temporärt lösenord. För att slutföra inloggningen måste du välja ett nytt lösenord.',
 'resetpass_text' => '<!-- Lägg till text här -->',
 'resetpass_header' => 'Ändra lösenord för konto',
 'oldpassword' => 'Gammalt lösenord:',
 'newpassword' => 'Nytt lösenord:',
 'retypenew' => 'Upprepa det nya lösenordet:',
-'resetpass_submit' => 'Spara lösenord och logga in',
+'resetpass_submit' => 'Ange lösenord och logga in',
 'changepassword-success' => 'Ditt lösenord har ändrats!',
 'resetpass_forbidden' => 'Lösenord kan inte ändras',
 'resetpass-no-info' => 'Du måste vara inloggad för att komma åt den här sidan direkt.',
@@ -898,9 +894,9 @@ Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfä
 'resetpass-abort-generic' => 'Lösenordsändring av har avbrutits av ett tillägg.',
 
 # Special:PasswordReset
-'passwordreset' => 'Lösenordsåterställning',
+'passwordreset' => 'Återställ lösenord',
 'passwordreset-text-one' => 'Fyll i detta formulär för att återställa ditt lösenord.',
-'passwordreset-text-many' => '{{PLURAL:$1|Fyll i ett av fälten för att återställa ditt lösenord.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Fyll i ett av fälten för att få ett tillfälligt lösenord via e-post.}}',
 'passwordreset-legend' => 'Återställ lösenord',
 'passwordreset-disabled' => 'Lösenordsåterställning har inaktiverats på denna wiki.',
 'passwordreset-emaildisabled' => 'E-postfunktioner har inaktiverats på denna wiki.',
@@ -954,13 +950,13 @@ Du bör återställa om du av misstag delade dem med någon eller om ditt konto
 'resettokens-resetbutton' => 'Återställ valda nycklar',
 
 # Edit page toolbar
-'bold_sample' => 'Fet text',
-'bold_tip' => 'Fet stil',
-'italic_sample' => 'Kursiv text',
+'bold_sample' => 'Fetstil',
+'bold_tip' => 'Fetstil',
+'italic_sample' => 'Kursiv stil',
 'italic_tip' => 'Kursiv stil',
 'link_sample' => 'Länktitel',
 'link_tip' => 'Intern länk',
-'extlink_sample' => 'http://www.example.com länkens namn',
+'extlink_sample' => 'http://www.exempel.com länktitel',
 'extlink_tip' => 'Extern länk (kom ihåg prefixet http://)',
 'headline_sample' => 'Rubriktext',
 'headline_tip' => 'Rubrik i nivå 2',
@@ -978,7 +974,7 @@ Du bör återställa om du av misstag delade dem med någon eller om ditt konto
 'subject' => 'Ämne/rubrik:',
 'minoredit' => 'Mindre ändring (m)',
 'watchthis' => 'Bevaka denna sida',
-'savearticle' => 'Spara',
+'savearticle' => 'Spara sida',
 'preview' => 'Förhandsgranska',
 'showpreview' => 'Visa förhandsgranskning',
 'showlivepreview' => 'Automatiskt uppdaterad förhandsvisning',
@@ -1058,10 +1054,11 @@ Orsaken till senaste blockeringen kan ses nedan:',
 *'''Internet Explorer:'''  Håll ned ''Ctrl'' och klicka på ''Uppdatera'' eller tryck ''Ctrl-F5''
 *'''Opera:''' Rensa cachen i ''Verktyg → Inställningar''",
 'usercssyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya CSS innan du sparar.",
-'userjsyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa din nya JavaScript innan du sparar.",
-'usercsspreview' => "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.
-Den har inte sparats än!'''",
-'userjspreview' => "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript, det har inte sparats än!'''",
+'userjsyoucanpreview' => "'''Tips:''' Använd knappen \"{{int:showpreview}}\" för att testa ditt nya JavaScript innan du sparar.",
+'usercsspreview' => "'''Kom ihåg att du bara förhandsgranskar din användar-CSS.'''
+'''Den har inte sparats än!'''",
+'userjspreview' => "'''Kom ihåg att du bara testar/förhandsgranskar ditt JavaScript.'''
+'''Det har inte sparats än!'''",
 'sitecsspreview' => "'''Kom ihåg att du bara förhandsgranskar detta CSS.''' 
 '''Det har ännu inte sparats!'''",
 'sitejspreview' => "'''Kom ihåg att du bara förhandsgranskar denna JavaScript-kod.'''
@@ -1126,7 +1123,7 @@ Den senaste loggposten tillhandahålls nedan som referens:",
 'templatesusedsection' => '{{PLURAL:$1|Mall|Mallar}} som används i det här avsnittet:',
 'template-protected' => '(skyddad)',
 'template-semiprotected' => '(delvis skyddad)',
-'hiddencategories' => 'Denna sida är medlem i följande dolda {{PLURAL:$1|kategori|kategorier}}:',
+'hiddencategories' => 'Denna sida är medlem i följande {{PLURAL:$1|dold kategori|dolda kategorier}}:',
 'edittools' => '<!-- Denna text kommer att visas nedanför redigeringsrutor och uppladdningsformulär. -->',
 'nocreatetext' => '{{SITENAME}} har begränsat möjligheterna att skapa nya sidor.
 Du kan redigera existerande sidor, eller [[Special:UserLogin|logga in eller skapa ett användarkonto]].',
@@ -1158,6 +1155,8 @@ Den finns redan.',
 'content-not-allowed-here' => 'innehåll av "$1" är inte tillåtet på sidan [[$2]]',
 'editwarning-warning' => 'Om du lämnar den här sidan kommer du att förlora alla ändringar du har gjort.
 Om du är inloggad kan du slå av den här varningen under "Redigering" i dina inställningar.',
+'editpage-notsupportedcontentformat-title' => 'Innehållsformat som inte stöds',
+'editpage-notsupportedcontentformat-text' => 'Innehållsformatet $1 stöds inte av innehållsmodellen $2.',
 
 # Content models
 'content-model-wikitext' => 'wikitext',
@@ -1168,7 +1167,7 @@ Om du är inloggad kan du slå av den här varningen under "Redigering" i dina i
 # Parser/template warnings
 'expensive-parserfunction-warning' => 'Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.
 
-Antalet anrop får vara högst $2, nu görs {{PLURAL:$#|$1 anrop}}.',
+Antalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop}}',
 'expensive-parserfunction-category' => 'Sidor med för många resurskrävande parserfunktioner',
 'post-expand-template-inclusion-warning' => 'Varning: Den här sidan innehåller för mycket mallinklusioner.
 Några av mallarna kommer inte att inkluderas.',
@@ -1200,6 +1199,9 @@ Var god och kontrollera jämförelsen nedan för att bekräfta att detta är vad
 'cantcreateaccount-text' => '[[User:$3|$3]] har blockerat den här IP-adressen (\'\'\'$1\'\'\') från att registrera konton.
 
 Anledningen till blockeringen var "$2".',
+'cantcreateaccount-range-text' => "IP-adresserna mellan '''$1''', som inkluderar din IP-adress ('''$4'''), har blockerats från att registrera konton av [[User:$3|$3]].
+
+Anledningen enligt $3 var ''$2''",
 
 # History pages
 'viewpagelogs' => 'Visa loggar för denna sida',
@@ -1270,10 +1272,6 @@ Du kan se denna diff; detaljer kan finnas i [{{fullurl:{{#Special:Log}}/suppress
 'revdelete-nooldid-text' => 'Antingen har du inte angivit någon sidversion att utföra funktionen på,
 eller så finns inte den version du angav,
 eller så försöker du gömma den senaste versionen av sidan.',
-'revdelete-nologtype-title' => 'Ingen loggtyp specificerad',
-'revdelete-nologtype-text' => 'Du har inte specificerat en loggtyp att utföra denna handling på.',
-'revdelete-nologid-title' => 'Ogiltig logpost',
-'revdelete-nologid-text' => 'Du har antingen inte specificerat en loggpost att utföra denna funktion på eller så existerar inte den specificerade posten.',
 'revdelete-no-file' => 'Den specificerade filen finns inte.',
 'revdelete-show-file-confirm' => 'Är du säker på att du vill visa en raderad version av filen "<nowiki>$1</nowiki>" från den $2 klockan $3?',
 'revdelete-show-file-submit' => 'Ja',
@@ -1293,22 +1291,20 @@ Andra administratörer på {{SITENAME}} kommer fortfarande att kunna läsa det d
 'revdelete-hide-comment' => 'Redigeringssammanfattning',
 'revdelete-hide-user' => 'Redigerarens användarnamn/IP-adress',
 'revdelete-hide-restricted' => 'Undanhåll data från administratörer så väl som från övriga',
-'revdelete-radio-same' => '(låt vara)',
+'revdelete-radio-same' => '(ändra inte)',
 'revdelete-radio-set' => 'Dold',
 'revdelete-radio-unset' => 'Synlig',
-'revdelete-suppress' => 'Undanhåll data även från administratörer',
+'revdelete-suppress' => 'Undanhåll data även från administratörer så väl som från övriga',
 'revdelete-unsuppress' => 'Ta bort begränsningar på återställda versioner',
 'revdelete-log' => 'Anledning:',
 'revdelete-submit' => 'Tillämpa på {{PLURAL:$1|vald version|valda versioner}}',
 'revdelete-success' => "'''Sidversionssynlighet har uppdaterats.'''",
 'revdelete-failure' => "'''Sidversionssynlighet kunde inte uppdateras:'''
 $1",
-'logdelete-success' => "'''Loggåtgärdens synlighet har ändrats.'''",
+'logdelete-success' => "'''Loggens synlighet har ställts in.'''",
 'logdelete-failure' => "'''Loggens synlighet kunde inte ställas in:'''
 $1",
 'revdel-restore' => 'ändra synlighet',
-'revdel-restore-deleted' => 'borttagna versioner',
-'revdel-restore-visible' => 'synliga versioner',
 'pagehist' => 'Sidhistorik',
 'deletedhist' => 'Raderad historik',
 'revdelete-hide-current' => 'Fel vid döljande av objektet daterat $2, $1: detta är nuvarande version.
@@ -1321,15 +1317,15 @@ Du har inte behörighet till det.',
 'revdelete-no-change' => "'''Varning:''' objektet daterat $2, $1 hade redan de begärda synlighetsinställningarna.",
 'revdelete-concurrent-change' => 'Fel vid förändring av objektet daterat $2, $1: dess status verkar ha ändrats av någon annan medan du försökte förändra det.
 Vänligen kontrollera loggarna.',
-'revdelete-only-restricted' => 'Fel vid döljning av objekt daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja en av de övriga visningsalternativen.',
+'revdelete-only-restricted' => 'Fel vid döljandet av objektet daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja ett av de övriga visningsalternativen.',
 'revdelete-reason-dropdown' => '*Vanliga orsaker till radering
-** Brott mot copyright
+** Upphovsrättsbrott
 ** Opassande kommentar eller personupplysningar
 ** Opassande användarnamn
 ** Möjligt ärekränkande uppgifter',
 'revdelete-otherreason' => 'Annan/ytterligare anledning:',
 'revdelete-reasonotherlist' => 'Annan anledning',
-'revdelete-edit-reasonlist' => 'Redigera anledningar för radering',
+'revdelete-edit-reasonlist' => 'Redigera anledningar för raderingar',
 'revdelete-offender' => 'Versionens författare:',
 
 # Suppression log
@@ -1346,8 +1342,8 @@ Se till att sidhistorikens kontinuitet behålls när du sammanfogar historik.',
 'mergehistory-into' => 'Målsida:',
 'mergehistory-list' => 'Sidhistorik som kan sammanfogas',
 'mergehistory-merge' => 'Följande versioner av [[:$1]] kan infogas i [[:$2]]. Med hjälp av alternativknapparna för varje version kan du välja att endast infoga versioner fram till en viss tidpunkt. Notera att om du använder navigationslänkarna så avmarkeras alla alternativknappar.',
-'mergehistory-go' => 'Visa versioner som kan infogas',
-'mergehistory-submit' => 'Sammanfoga',
+'mergehistory-go' => 'Visa redigeringar som kan slås samman',
+'mergehistory-submit' => 'Sammanfoga sidversioner',
 'mergehistory-empty' => 'Inga versioner av sidorna kan sammanfogas.',
 'mergehistory-success' => '$3 {{PLURAL:$3|version|versioner}} av [[:$1]] har infogats i [[:$2]].',
 'mergehistory-fail' => 'Historikerna kunde inte sammanfogas, kontrollera de sidor och den sidversion som du valt.',
@@ -1387,24 +1383,18 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 # Search results
 'searchresults' => 'Sökresultat',
 'searchresults-title' => 'Sökresultat för "$1"',
-'searchresulttext' => 'Se [[{{MediaWiki:Helppage}}|hjälpsidan]] för mer information om sökning på {{SITENAME}}.',
-'searchsubtitle' => 'Du sökte efter \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|alla sidor som startar med "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|alla sidor som länkar till "$1"]])',
-'searchsubtitleinvalid' => 'För sökbegreppet $1',
 'toomanymatches' => 'Sökningen gav för många resultat, försök med en annan fråga',
 'titlematches' => 'Träffar i sidtitlar',
-'notitlematches' => 'Det finns ingen sida vars titel överensstämmer med sökordet.',
-'textmatches' => 'Sidor som innehåller sökordet:',
-'notextmatches' => 'Det finns inga sidor som innehåller sökordet',
+'textmatches' => 'Artikeltexter som matchar sökningen',
+'notextmatches' => 'Inga artikeltexter matchar sökningen',
 'prevn' => 'föregående {{PLURAL:$1|$1}}',
 'nextn' => 'nästa {{PLURAL:$1|$1}}',
 'prevn-title' => 'Föregående $1 {{PLURAL:$1|resultat|resultat}}',
 'nextn-title' => 'Nästa $1 {{PLURAL:$1|resultat|resultat}}',
 'shown-title' => 'Visa $1 {{PLURAL:$1|resultat|resultat}} per sida',
 'viewprevnext' => 'Visa ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Sökalternativ',
-'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.'''",
+'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.''' {{PLURAL:\$2|0=|Se även de andra sökresultaten som hittades.}}",
 'searchmenu-new' => "'''Skapa sidan \"[[:\$1]]\" på denna wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bläddra igenom sidor med detta prefix]]',
 'searchprofile-articles' => 'Innehållssidor',
 'searchprofile-project' => 'Hjälp- och projektsidor',
 'searchprofile-images' => 'Multimedia',
@@ -1425,20 +1415,16 @@ Detaljer kan hittas i [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}
 'search-interwiki-default' => 'Resultat i $1:',
 'search-interwiki-more' => '(mer)',
 'search-relatedarticle' => 'Relaterad',
-'mwsuggest-disable' => 'Inaktivera sökförslag',
 'searcheverything-enable' => 'Sök i alla namnrymder',
 'searchrelated' => 'relaterad',
 'searchall' => 'alla',
 'showingresults' => "Nedan visas upp till {{PLURAL:$1|'''1''' post|'''$1''' poster}} från och med nummer '''$2'''.",
 'showingresultsnum' => "Nedan visas {{PLURAL:$3|'''1''' post|'''$3''' poster}} från och med nummer '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultat '''$1''' av '''$3'''|Resultat '''$1 - $2''' av '''$3'''}} för '''$4'''",
-'nonefound' => "'''Observera:''' Som standard sker sökning endast i vissa namnrymder. Du kan pröva att skriva ''all:'' i början av din sökning om du vill söka i alla sidor (inklusive diskussionssidor, mallar, m.m.), eller så kan du att börja din sökning med namnet på den namnrymd du vill söka i.",
 'search-nonefound' => 'Inga resultat matchade frågan.',
-'powersearch' => 'Avancerad sökning',
 'powersearch-legend' => 'Avancerad sökning',
 'powersearch-ns' => 'Sök i namnrymderna:',
-'powersearch-redir' => 'Visa omdirigeringar',
-'powersearch-field' => 'Sök efter',
+'powersearch-redir' => 'Lista omdirigeringar',
 'powersearch-togglelabel' => 'Kryssa:',
 'powersearch-toggleall' => 'Alla',
 'powersearch-togglenone' => 'Ingen',
@@ -1453,9 +1439,8 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'mypreferences' => 'Inställningar',
 'prefs-edits' => 'Antal redigeringar:',
 'prefsnologintext2' => 'Var god $1 för att ändra användarinställningar.',
-'changepassword' => 'Byt lösenord',
 'prefs-skin' => 'Utseende',
-'skin-preview' => 'förhandsvisning',
+'skin-preview' => 'Förhandsvisning',
 'datedefault' => 'Ovidkommande',
 'prefs-beta' => 'Betafunktioner',
 'prefs-datetime' => 'Datum och tid',
@@ -1476,17 +1461,15 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
 'prefs-email' => 'Alternativ för e-post',
 'prefs-rendering' => 'Utseende',
 'saveprefs' => 'Spara',
-'resetprefs' => 'Återställ osparade ändringar',
 'restoreprefs' => 'Återgå till standardinställningar',
 'prefs-editing' => 'Redigering',
 'rows' => 'Rader:',
 'columns' => 'Kolumner:',
 'searchresultshead' => 'Sökning',
-'resultsperpage' => 'Träffar per sida:',
 'stub-threshold' => 'Gräns för <a href="#" class="stub">stubblänk</a>-formatering (byte):',
 'stub-threshold-disabled' => 'Avaktiverat',
 'recentchangesdays' => 'Antal dygn som skall visas i "senaste ändringarna":',
-'recentchangesdays-max' => '(maximalt $1 {{PLURAL:$1|dygn|dygn}})',
+'recentchangesdays-max' => 'Maximalt $1 {{PLURAL:$1|dygn}}',
 'recentchangescount' => 'Antal redigeringar som visas som standard:',
 'prefs-help-recentchangescount' => 'Detta inkluderar senaste ändringarna, sidhistorik och loggar.',
 'prefs-help-watchlist-token2' => 'Detta är den hemliga nyckeln till webbflödet i din bevakningslista.
@@ -1497,7 +1480,6 @@ Någon som vet den kommer att kunna läsa din bevakningslista, så dela inte ut
 'localtime' => 'Lokal tid:',
 'timezoneuseserverdefault' => 'Använd wikins standard ($1)',
 'timezoneuseoffset' => 'Annan (specificera skillnad)',
-'timezoneoffset' => 'Skillnad¹:',
 'servertime' => 'Serverns tid:',
 'guesstimezone' => 'Fyll i från webbläsare',
 'timezoneregion-africa' => 'Afrika',
@@ -1531,7 +1513,7 @@ Detta kan inte återställas.',
 'yourlanguage' => 'Språk:',
 'yourvariant' => 'Språkval för innehåll:',
 'prefs-help-variant' => 'Ditt önskade variant eller ortografi för att visa innehållssidor på denna wiki i.',
-'yournick' => 'Signatur:',
+'yournick' => 'Ny signatur:',
 'prefs-help-signature' => 'Kommentarer på diskussionssidor ska signeras med "<nowiki>~~~~</nowiki>", vilket konverteras till din signatur och tidpunkt.',
 'badsig' => 'Det är något fel med råsignaturen, kontrollera HTML-koden.',
 'badsiglength' => 'Din signatur är för lång.
@@ -1566,10 +1548,11 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'prefs-tokenwatchlist' => 'Nyckel',
 'prefs-diffs' => 'Skillnader',
 'prefs-help-prefershttps' => 'Ändringar av denna inställning börjar gälla nästa gång du loggar in',
+'prefs-tabs-navigation-hint' => 'Tips: Du kan använda vänster och höger piltangenterna för att navigera mellan flikarna i listan flikar.',
 
 # User preference: email validation using jQuery
-'email-address-validity-valid' => 'Ser giltig ut',
-'email-address-validity-invalid' => 'Giltig adress krävs!',
+'email-address-validity-valid' => 'E-postadress ser giltig ut',
+'email-address-validity-invalid' => 'Ange en giltig e-postadress',
 
 # User rights
 'userrights' => 'Hantering av användarrättigheter',
@@ -1593,7 +1576,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'userrights-changeable-col' => 'Grupper du kan ändra',
 'userrights-unchangeable-col' => 'Grupper du inte kan ändra',
 'userrights-conflict' => 'Konflikt vid ändringar av användarrättigheter! Var god granska och bekräfta dina ändringar.',
-'userrights-removed-self' => 'Du tog bort dina egna rättigheter. Som sådan, kan du inte längre komma åt denna sida.',
+'userrights-removed-self' => 'Du tog bort dina egna rättigheter. Du kan därför inte längre komma åt denna sida.',
 
 # Groups
 'group' => 'Grupp:',
@@ -1625,18 +1608,18 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-createpage' => 'Skapa sidor (som inte är diskussionssidor)',
 'right-createtalk' => 'Skapa diskussionssidor',
 'right-createaccount' => 'Skapa nya användarkonton',
-'right-minoredit' => 'Markera mindre ändringar',
+'right-minoredit' => 'Markera redigeringar som mindre',
 'right-move' => 'Flytta sidor',
 'right-move-subpages' => 'Flytta sidor med deras undersidor',
 'right-move-rootuserpages' => 'Flytta root-användarsidor',
 'right-movefile' => 'Flytta filer',
-'right-suppressredirect' => 'Behöver inte skapa omdirigeringar vid sidflyttning',
+'right-suppressredirect' => 'Skapa inte omdirigeringar från ursprungssidan vid sidflyttning',
 'right-upload' => 'Ladda upp filer',
-'right-reupload' => 'Skriva över existerande filer',
-'right-reupload-own' => 'Skriva över egna filer',
-'right-reupload-shared' => 'Skriva över delade filer lokalt',
-'right-upload_by_url' => 'Ladda upp en fil genom en URL',
-'right-purge' => 'Rensa cachen för sidor utan att behöva bekräfta',
+'right-reupload' => 'Skriv över existerande filer',
+'right-reupload-own' => 'Skriv över egna filer',
+'right-reupload-shared' => 'Skriv över delade filer lokalt',
+'right-upload_by_url' => 'Ladda upp en fil genom en webbadress',
+'right-purge' => 'Rensa cachen för en sida utan att bekräfta',
 'right-autoconfirmed' => 'Påverkas inte av IP-baserade hastighetsgränser',
 'right-bot' => 'Behandlas som en automatisk process',
 'right-nominornewtalk' => 'Mindre ändringar på diskussionssidor ger inte besked om nya meddelanden',
@@ -1648,8 +1631,8 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-deleterevision' => 'Radera och återställa enskilda sidversioner',
 'right-deletedhistory' => 'Se raderad historik utan tillhörande sidtext',
 'right-deletedtext' => 'Visa raderad text och ändringar mellan raderade versioner',
-'right-browsearchive' => 'Söka efter raderade sidor',
-'right-undelete' => 'Återställa raderade sidor',
+'right-browsearchive' => 'Sök efter raderade sidor',
+'right-undelete' => 'Återställ raderade sidor',
 'right-suppressrevision' => 'Se och återställa sidversioner som dolts för administratörer',
 'right-suppressionlog' => 'Se privata loggar',
 'right-block' => 'Blockera andra användare från att redigera',
@@ -1664,7 +1647,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'right-editinterface' => 'Redigera användargränssnittet',
 'right-editusercssjs' => 'Redigera andra användares CSS- och JS-filer',
 'right-editusercss' => 'Redigera andra användares CSS-filer',
-'right-edituserjs' => 'Redigera andra användares JS-filer',
+'right-edituserjs' => 'Redigera andra användares JavaScript-filer',
 'right-editmyusercss' => 'Redigera din egen användares CSS-filer',
 'right-editmyuserjs' => 'Redigera din egen användares JavaScript-filer',
 'right-viewmywatchlist' => 'Visa din egen bevakningslista',
@@ -1750,16 +1733,18 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'recentchanges-label-newpage' => 'Denna redigering skapade en ny sida',
 'recentchanges-label-minor' => 'Detta är en mindre ändring',
 'recentchanges-label-bot' => 'Denna redigering gjordes av en bot',
-'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit kontrollerad ännu',
+'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit patrullerad ännu',
+'recentchanges-label-plusminus' => 'Sidans storlek ändrades med detta antal byte',
+'recentchanges-legend-heading' => "'''Teckenförklaring:'''",
 'recentchanges-legend-newpage' => '(se även [[Special:NewPages|listan över nya sidor]])',
-'rcnote' => "Nedan visas {{PLURAL:$1|'''1''' ändring|de senaste '''$1''' ändringarna}} från {{PLURAL:$2|det senaste dygnet|de senaste '''$2''' dygnen}}, per $4, kl. $5.",
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' visas).",
-'rclistfrom' => 'Visa ändringar efter $1',
+'rclistfrom' => 'Visa ändringar från och med $1',
 'rcshowhideminor' => '$1 mindre ändringar',
 'rcshowhidebots' => '$1 robotar',
-'rcshowhideliu' => '$1 inloggade användare',
+'rcshowhideliu' => '$1 registrerade användare',
 'rcshowhideanons' => '$1 oinloggade användare',
-'rcshowhidepatr' => '$1 kontrollerade redigeringar',
+'rcshowhidepatr' => '$1 patrullerade redigeringar',
 'rcshowhidemine' => '$1 mina ändringar',
 'rclinks' => 'Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3',
 'diff' => 'skillnad',
@@ -1772,7 +1757,7 @@ Om du väljer att ange ditt riktiga namn, kommer det att användas för att till
 'number_of_watching_users_pageview' => '[$1 bevakande {{PLURAL:$1|användare|användare}}]',
 'rc_categories' => 'Begränsa till följande kategorier (separera med "|")',
 'rc_categories_any' => 'Vilken som helst',
-'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} efter ändring',
+'rc-change-size-new' => '$1 {{PLURAL:$1|byte}} efter ändring',
 'newsectionsummary' => '/* $1 */ nytt avsnitt',
 'rc-enhanced-expand' => 'Visa detaljer',
 'rc-enhanced-hide' => 'Göm detaljer',
@@ -1811,7 +1796,7 @@ Använd en länk på något av följande format för att infoga en fil på en si
 'upload-permitted' => 'Tillåtna filtyper: $1.',
 'upload-preferred' => 'Föredragna filtyper: $1.',
 'upload-prohibited' => 'Förbjudna filtyper: $1.',
-'uploadlog' => 'Uppladdningar',
+'uploadlog' => 'uppladdningslogg',
 'uploadlogpage' => 'Uppladdningslogg',
 'uploadlogpagetext' => 'Det här är en logg över de senast uppladdade filerna.
 Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.',
@@ -1829,7 +1814,7 @@ Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.
 'filename-toolong' => 'Filnamn får inte vara längre än 240 bytes.',
 'badfilename' => 'Filens namn har blivit ändrat till "$1".',
 'filetype-mime-mismatch' => 'Filtillägget ".$1" matchar inte med den identifierade MIME-typen för filen ($2).',
-'filetype-badmime' => 'Uppladdning av filer med MIME-typen "$1" är inte tillåten.',
+'filetype-badmime' => 'Uppladdning av filer av MIME-typ "$1" är inte tillåtet.',
 'filetype-bad-ie-mime' => 'Kan inte ladda upp denna fil på grund av att Internet Explorer skulle upptäcka att den är "$1", vilket är en otillåten och möjligtvis farlig filtyp.',
 'filetype-unwanted-type' => "'''\".\$1\"''' är en oönskad filtyp.
 {{PLURAL:\$3|Föredragen filtyp|Föredragna filtyper}} är \$2.",
@@ -2215,6 +2200,7 @@ Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt
 'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
 'nlinks' => '$1 {{PLURAL:$1|länk|länkar}}',
 'nmembers' => '$1 {{PLURAL:$1|medlem|medlemmar}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|medlem|medlemmar}}',
 'nrevisions' => '$1 {{PLURAL:$1|version|versioner}}',
 'nviews' => '$1 {{PLURAL:$1|visning|visningar}}',
 'nimagelinks' => 'Använd på $1 {{PLURAL:$1|sida|sidor}}',
@@ -2253,10 +2239,9 @@ Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt
 'protectedpages' => 'Skyddade sidor',
 'protectedpages-indef' => 'Endast skydd på obestämd tid',
 'protectedpages-cascade' => 'Endast kaskaderande skydd',
-'protectedpagestext' => 'Följande sidor är skyddade mot redigering eller flyttning.',
+'protectedpages-noredirect' => 'Dölj omdirigeringar',
 'protectedpagesempty' => 'Inga sidor är skyddade under de villkoren.',
 'protectedtitles' => 'Skyddade titlar',
-'protectedtitlestext' => 'Följande sidtitlar är skyddade från att skapas',
 'protectedtitlesempty' => 'Just nu finns inga skyddade sidtitlar med de parametrarna.',
 'listusers' => 'Användarlista',
 'listusers-editsonly' => 'Visa endast användare som redigerat',
@@ -2308,9 +2293,6 @@ Du kan avgränsa sökningen och få färre träffar genom att ange typ av logg,
 'allpagesto' => 'Visa sidor till och med:',
 'allarticles' => 'Alla sidor',
 'allinnamespace' => 'Alla sidor (i namnrymden $1)',
-'allnotinnamespace' => 'Alla sidor (inte i namnrymden $1)',
-'allpagesprev' => 'Föregående',
-'allpagesnext' => 'Nästa',
 'allpagessubmit' => 'Visa',
 'allpagesprefix' => 'Visa sidor med prefixet:',
 'allpagesbadtitle' => 'Den sökta sidtiteln var ogiltig eller så innehöll den ett prefix för annan språkversion eller interwiki-prefix. Titeln kan innehålla bokstäver som inte är tillåtna i sidtitlar.',
@@ -2531,6 +2513,7 @@ Se $2 för noteringar om de senaste raderingarna.',
 'delete-edit-reasonlist' => 'Redigera anledningar för radering',
 'delete-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Borttagning av sådana sidor har begränsats för att förhindra oavsiktliga driftstörningar på {{SITENAME}}.',
 'delete-warning-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Att radera sidan kan skapa problem med hanteringen av databasen på {{SITENAME}}; var försiktig.',
+'deleting-backlinks-warning' => "'''Varning:''' Andra sidor länkar till sidan som du är på väg att radera.",
 
 # Rollback
 'rollback' => 'Rulla tillbaka ändringar',
@@ -2644,7 +2627,6 @@ I sådana fall måste du se till att den senaste raderade versionen inte är ikr
 'undeletebtn' => 'Återställ',
 'undeletelink' => 'visa/återställ',
 'undeleteviewlink' => 'visa',
-'undeletereset' => 'Rensa',
 'undeleteinvert' => 'Invertera urval',
 'undeletecomment' => 'Anledning:',
 'undeletedrevisions' => '{{PLURAL:$1|en version återställd|$1 versioner återställda}}',
@@ -2733,7 +2715,6 @@ Den senaste posten i blockeringsloggen visas nedan som referens:',
 'block' => 'Blockera användare',
 'unblock' => 'Upphäv blockering av användare',
 'blockip' => 'Blockera användare',
-'blockip-title' => 'Blockera användare',
 'blockip-legend' => 'Blockera användare',
 'blockiptext' => 'Använd formuläret nedan för att blockera möjligheten att redigera sidor från en specifik IP-adress eller ett användarnamn.
 Detta bör endast göras för att förhindra vandalisering, och i överensstämmelse med gällande [[{{MediaWiki:Policy-url}}|policy]].
@@ -2741,7 +2722,6 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
 'ipadressorusername' => 'IP-adress eller användarnamn:',
 'ipbexpiry' => 'Varaktighet:',
 'ipbreason' => 'Anledning:',
-'ipbreasonotherlist' => 'Annan anledning',
 'ipbreason-dropdown' => '*Vanliga motiv till blockering
 ** Infogar falsk information
 ** Tar bort sidinnehåll
@@ -2757,8 +2737,6 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
 'ipbsubmit' => 'Blockera användaren',
 'ipbother' => 'Annan tidsperiod:',
 'ipboptions' => '2 timmar:2 hours,1 dygn:1 day,3 dygn:3 days,1 vecka:1 week,2 veckor:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,oändlig:infinite',
-'ipbotheroption' => 'annan tidsperiod',
-'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 användaren från att redigera sina egna diskussionssida under blockeringen',
@@ -2770,6 +2748,7 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
 För att se alla aktuella blockeringar, gå till [[Special:BlockList|listan över blockeringar]].',
 'ipb-blockingself' => 'Du håller på att blockera dig själv! Är du säker på att du vill göra det?',
 'ipb-confirmhideuser' => 'Du är på väg att blockera en användare med "göm användare" aktiverat. Detta kommer upphäva användarens namn i alla listor och loggar. Är du säker på att du vill göra det?',
+'ipb-confirmaction' => 'Markera fältet "{{int:ipb-confirm}}" längst ned om du är säker på att du verkligen vill göra det.',
 'ipb-edit-dropdown' => 'Redigera blockeringsanledningar',
 'ipb-unblock-addr' => 'Ta bort blockering av $1',
 'ipb-unblock' => 'Ta bort blockering av en användare eller IP-adress',
@@ -2849,7 +2828,6 @@ Se [[Special:BlockList|blockeringslistan]] för en översikt av gällande blocke
 'sorbs_create_account_reason' => 'Din IP-adress är listad som en öppen proxy i den DNSBL som används av {{SITENAME}}.
 Du får inte skapa ett användarkonto',
 'xffblockreason' => 'En IP-adress i sidhuvudet X-Forwarded-For, antingen din adress eller en proxyserver som du använder, har blockerats. Den ursprungliga anledningen till blockeringen var: $1',
-'cant-block-while-blocked' => 'Du kan inte blockera andra användare medan du är blockerad.',
 'cant-see-hidden-user' => 'Användaren du försöker blockera är redan blockerad och gömd. Eftersom du inte har hideuser-rättigheter, kan du inte se eller redigera användarens blockering.',
 'ipbblocked' => 'Du kan inte blockera eller avblockera andra användare, eftersom du själv är blockerad',
 'ipbnounblockself' => 'Du har inte tillåtelse att avblockera dig själv',
@@ -2907,7 +2885,6 @@ se till att du förstår konsekvenserna av detta innan du fortsätter.",
 I de fallen måste du flytta eller sammanfoga sidan manuellt, om det önskas.",
 'movearticle' => 'Flytta sidan:',
 'moveuserpage-warning' => "'''Varning:''' Du håller på att flytta en användarsida. Observera att endast sidan kommer att flyttas och att användaren ''inte'' kommer att byta namn.",
-'movenologin' => 'Inte inloggad',
 'movenologintext' => 'För att flytta en sida måste du vara registrerad användare och [[Special:UserLogin|inloggad]].',
 'movenotallowed' => 'Du har inte behörighet att flytta sidor på den här wikin.',
 'movenotallowedfile' => 'Du har inte tillåtelse att flytta filer.',
@@ -2923,9 +2900,6 @@ I de fallen måste du flytta eller sammanfoga sidan manuellt, om det önskas.",
 'articleexists' => 'Antingen existerar redan en sida med det namnet, eller så har du valt ett namn som inte är tillåtet.
 Välj något annat namn istället.',
 'cantmove-titleprotected' => 'Du kan inte flytta sidan till den titeln, eftersom den nya titeln har skyddats från att skapas.',
-'talkexists' => "'''Sidan flyttades, men diskussionssidan kunde inte flyttas eftersom det redan fanns en diskussionssida med det nya namnet.
-Försök att sammanfoga dem manuellt.'''",
-'movedto' => 'flyttad till',
 'movetalk' => 'Flytta tillhörande diskussionssida',
 'move-subpages' => 'Flytta undersidor (upp till $1)',
 'move-talk-subpages' => 'Flytta undersidor av diskussionssidan (upp till $1)',
@@ -3042,7 +3016,7 @@ Spara den på din dator och ladda upp den här.',
 'importstart' => 'Importerar sidor....',
 'import-revision-count' => '$1 {{PLURAL:$1|version|versioner}}',
 'importnopages' => 'Det finns inga sidor att importera.',
-'imported-log-entries' => 'Importerade $1 {{PLURAL: $1 |loggpost|loggposter}}.',
+'imported-log-entries' => 'Importerade $1 {{PLURAL:$1 |loggpost|loggposter}}.',
 'importfailed' => 'Importen misslyckades: <nowiki>$1</nowiki>',
 'importunknownsource' => 'Okänd typ av importkälla',
 'importcantopen' => 'Misslyckades med att öppna importfilen.',
@@ -3225,6 +3199,7 @@ Fyll '''INTE''' i den här!",
 'pageinfo-length' => 'Sidlängd (i byte)',
 'pageinfo-article-id' => 'Sid-ID',
 'pageinfo-language' => 'Språk för sidinnehåll',
+'pageinfo-content-model' => 'Sidinnehållsmodell',
 'pageinfo-robot-policy' => 'Indexering av robotar',
 'pageinfo-robot-index' => 'Tillåten',
 'pageinfo-robot-noindex' => 'Inte tillåten',
@@ -3340,7 +3315,7 @@ Om du kör den kan din dator skadas.",
 'seconds' => '{{PLURAL:$1|$1 sekund|$1 sekunder}}',
 'minutes' => '{{PLURAL:$1|$1 minut|$1 minuter}}',
 'hours' => '{{PLURAL:$1|$1 timme|$1 timmar}}',
-'days' => '{{PLURAL:$1|$1 dag|$1 dagar}}',
+'days' => '{{PLURAL:$1|$1 dygn}}',
 'weeks' => '{{PLURAL:$1|$1 vecka|$1 veckor}}',
 'months' => '{{PLURAL:$1|$1 månad|$1 månader}}',
 'years' => '{{PLURAL:$1|$1 år}}',
@@ -3778,15 +3753,10 @@ Andra kommer att gömmas som standard
 'exif-urgency-high' => 'Hög ($1)',
 'exif-urgency-other' => 'Användardefinierad prioritet ($1)',
 
-# External editor support
-'edit-externally' => 'Redigera denna fil med hjälp av extern programvara',
-'edit-externally-help' => '(Se [https://www.mediawiki.org/wiki/Manual:External_editors installationsinstruktionerna] för mer information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'alla',
 'namespacesall' => 'alla',
 'monthsall' => 'alla',
-'limitall' => 'alla',
 
 # Email address confirmation
 'confirmemail' => 'Bekräfta e-postadress',
@@ -3805,7 +3775,6 @@ Mailservern svarade: $1',
 'confirmemail_success' => 'Din e-postadress har bekräftats.
 Du kan nu [[Special:UserLogin|logga in]] och använda wikin.',
 'confirmemail_loggedin' => 'Din e-postadress är nu bekräftad.',
-'confirmemail_error' => 'Någonting gick fel när din bekräftelse skulle sparas.',
 'confirmemail_subject' => 'Bekräftelse av e-postadress på {{SITENAME}}',
 'confirmemail_body' => 'Någon, troligen du, har från IP-adressen $1 registrerat användarkontot "$2" med denna e-postadress på {{SITENAME}}.
 
@@ -3872,12 +3841,20 @@ Bekräfta att du verkligen vill återskapa sidan.",
 'confirm-unwatch-button' => 'OK',
 'confirm-unwatch-top' => 'Ta bort denna sida från din bevakningslista?',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← föregående sida',
 'imgmultipagenext' => 'nästa sida →',
 'imgmultigo' => 'Gå',
 'imgmultigoto' => 'Gå till sida $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(standardspråk)',
+'img-lang-info' => 'Rendera denna bild i $1. $2',
+'img-lang-go' => 'Gå',
+
 # Table pager
 'ascending_abbrev' => 'stigande',
 'descending_abbrev' => 'fallande',
@@ -3964,7 +3941,17 @@ Du kan också [[Special:EditWatchlist|använda standardeditorn]].',
 'version-hook-name' => 'Namn',
 'version-hook-subscribedby' => 'Används av',
 'version-version' => '(Version $1)',
-'version-license' => 'Licens',
+'version-license' => 'MediaWiki-licens',
+'version-ext-license' => 'Licens',
+'version-ext-colheader-name' => 'Tillägg',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licens',
+'version-ext-colheader-description' => 'Beskrivning',
+'version-ext-colheader-credits' => 'Författare',
+'version-license-title' => 'Licens för $1',
+'version-license-not-found' => 'Ingen detaljerad licensinformation hittades för detta tillägg.',
+'version-credits-title' => 'Erkännande för $1',
+'version-credits-not-found' => 'Ingen detaljerad erkännandeinformation hittades för detta tillägg.',
 'version-poweredby-credits' => "Den här wikin drivs av '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'andra',
 'version-poweredby-translators' => 'översättare från translatewiki.net',
@@ -3982,13 +3969,14 @@ Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Publi
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Omdirigering efter filnamn, användar-ID eller versions-ID',
+'redirect' => 'Omdirigering efter filnamn, användar-ID, sida eller versions-ID',
 'redirect-legend' => 'Omdirigera till en fil eller sida',
-'redirect-summary' => 'Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter versions-id) eller en användarsida (efter användar-id). Användning: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], eller [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Den här specialsidan omdirigerar till en fil (efter filnamn), en sida (efter en versions eller sidas ID) eller en användarsida (efter användar-ID). Användning: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], eller [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Kör',
 'redirect-lookup' => 'Slå upp:',
 'redirect-value' => 'Värde:',
 'redirect-user' => 'Användar-ID',
+'redirect-page' => 'Sidans ID',
 'redirect-revision' => 'Sidversion',
 'redirect-file' => 'Filnamn',
 'redirect-not-exists' => 'Värdet hittades inte',
@@ -4055,7 +4043,6 @@ Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Publi
 
 # Special:ComparePages
 'comparepages' => 'Jämför sidor',
-'compare-selector' => 'Jämför sidversioner',
 'compare-page1' => 'Sida 1',
 'compare-page2' => 'Sida 2',
 'compare-rev1' => 'Version 1',
@@ -4219,7 +4206,7 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'limitreport-templateargumentsize' => 'Storlek på mallargument',
 'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte}}',
 'limitreport-expansiondepth' => 'Största expansionsdjup',
-'limitreport-expensivefunctioncount' => 'Antal dyra parser-funktioner',
+'limitreport-expensivefunctioncount' => 'Antal resurskrävande parserfunktioner',
 
 # Special:ExpandTemplates
 'expandtemplates' => 'Expandera mallar',
@@ -4228,10 +4215,12 @@ Annars kan du använda det enkla formuläret nedan. Din kommentar kommer att lä
 'expand_templates_input' => 'Text som ska expanderas:',
 'expand_templates_output' => 'Expanderad kod',
 'expand_templates_xml_output' => 'XML-kod',
+'expand_templates_html_output' => 'Rå HTML-utdata',
 'expand_templates_ok' => 'Expandera',
 'expand_templates_remove_comments' => 'Ta bort kommentarer',
 'expand_templates_remove_nowiki' => 'Undertryck <nowiki> taggar i resultatet',
 'expand_templates_generate_xml' => 'Visa parseträd som XML',
+'expand_templates_generate_rawhtml' => 'Visa rå HTML',
 'expand_templates_preview' => 'Förhandsvisning',
 
 );
index 7520e59..79ce472 100644 (file)
@@ -53,7 +53,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'KurasazaZamani' ),
        'Blankpage'                 => array( 'KurasaTupu' ),
        'Block'                     => array( 'Zui', 'ZuiaIP', 'ZuiaMtumiaji' ),
-       'Blockme'                   => array( 'Nizuiye' ),
        'Booksources'               => array( 'ZuiaChanzo' ),
        'BrokenRedirects'           => array( 'ElekezoIliovunjika' ),
        'Categories'                => array( 'Jamii' ),
@@ -62,7 +61,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'SajiliAkaunti' ),
        'Deadendpages'              => array( 'KurasaZilizoondoshwa' ),
        'DeletedContributions'      => array( 'MichangoIliyofutwa' ),
-       'Disambiguations'           => array( 'Maana' ),
        'DoubleRedirects'           => array( 'ElekezoMbili' ),
        'Emailuser'                 => array( 'BaruapepeyaMtumiaji' ),
        'Export'                    => array( 'Toa' ),
@@ -134,7 +132,7 @@ $messages = array(
 'tog-extendwatchlist' => 'Tanua orodha ya maangalizi ili kuonyesha mabadiliko yote yaliyofanyika, si hilo la mwisho tu.',
 'tog-usenewrc' => 'Mabadiliko ya kundi kwa kurasa kwenye mabadiliko ya karibuni na maangalizi (JavaScript inahitajika)',
 'tog-numberheadings' => 'Vichwa vya habari vijipange namba-vyenyewe',
-'tog-showtoolbar' => 'Onyesha mwambaa wa zana za kuhariria (JavaScript)',
+'tog-showtoolbar' => 'Onyesha mwambaa wa zana za kuhariria',
 'tog-editondblclick' => 'Hariri ukurasa kwa kubonyeza mara mbili',
 'tog-editsection' => 'Wezesha sehemu ya kuandikia kwa kutumia viungo vya [hariri]',
 'tog-editsectiononrightclick' => 'Wezesha sehemu ya kuandikia kwa kubonyeza kitufe cha kulia cha puku yako juu ya sehemu ya majina husika (JavaScript)',
@@ -147,7 +145,6 @@ $messages = array(
 'tog-minordefault' => 'Weka alama zote za mabadiliko madogo kama matumizi mbadala',
 'tog-previewontop' => 'Onyesha mandhari kabla ya sanduku la kuhariria',
 'tog-previewonfirst' => 'Onyesha mandhari unapoanza kuhariri',
-'tog-nocache' => 'Kurasa zisiwekwe katika kache (akiba ya muda) ya kivinjari',
 'tog-enotifwatchlistpages' => 'Nitumie barua pepe pale kurasa zilizopo katika maangalizi yangu zinabadilishwa',
 'tog-enotifusertalkpages' => 'Nitumie barua pepe pale ukurasa wangu wa majadiliano ukiwa na mabadiliko',
 'tog-enotifminoredits' => 'Pia nitumie barua pale mabadiliko ya ukurasa yanapokuwa madogo tu.',
@@ -281,7 +278,6 @@ $messages = array(
 'qbedit' => 'Hariri',
 'qbpageoptions' => 'Ukurasa huu',
 'qbmyoptions' => 'Kurasa zangu',
-'qbspecialpages' => 'Kurasa za pekee',
 'faq' => 'Maswali ya kawaida',
 'faqpage' => 'Project:Maswali Yaulizwayo Marakwamara',
 
@@ -354,7 +350,7 @@ $messages = array(
 'redirectpagesub' => 'Ukurasa wa kuelekeza',
 'lastmodifiedat' => 'Ukurasa huu umebadilishwa kwa mara ya mwisho tarehe $1, saa $2.',
 'viewcount' => 'Ukurasa huu umetembelewa mara {{PLURAL:$1|moja tu|$1}}.',
-'protectedpage' => 'Kurasa iliyolindwa',
+'protectedpage' => 'Ukurasa uliolindwa',
 'jumpto' => 'Rukia:',
 'jumptonavigation' => 'urambazaji',
 'jumptosearch' => 'tafuta',
@@ -399,8 +395,8 @@ Tazama [[Special:Version|ukurasa wa toleo]].',
 'youhavenewmessages' => 'Una $1 ($2).',
 'youhavenewmessagesfromusers' => 'Una $1 kutoka {{PLURAL:$3|another user|$3 users}} ($2)',
 'youhavenewmessagesmanyusers' => 'Una $1 kutoka kwa watumiaji wengi $2',
-'newmessageslinkplural' => '{{PLURAL:$1|a new message|ujumbe mpya}}',
-'newmessagesdifflinkplural' => 'last {{PLURAL:$1|change|mabadiliko}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ujumbe mpya|999=jumbe mpya}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|badiliko la|999=mabadiliko ya}} mwisho',
 'youhavenewmessagesmulti' => 'Umepokea jumbe mpya kule $1',
 'editsection' => 'hariri',
 'editold' => 'hariri',
@@ -490,9 +486,6 @@ Huenda likawa tayari lishafutwa na mtu mwingine.',
 'perfcachedts' => 'Data zifuatazo zimetoka kwenye kache iliobadilishwa mara ya mwisho saa $3, tarehe $2. Mwisho wa {{PLURAL:$4|jibu moja linapatikana|majibu $4 yanapatikana}} katika kache.',
 'querypage-no-updates' => 'Mabadiliko kwa ajili ya ukurasa huu yamesimamishwa.
 Data za hapa haziwezi kunawirishwa kwa sasa.',
-'wrong_wfQuery_params' => 'Parameta za ulizio zilizoingizwa wfQuery() na zisizo sahihi ni<br />
-Kitenda: $1<br />
-Ulizio: $2',
 'viewsource' => 'Tazama msimbo',
 'viewsource-title' => 'Tazama chanzo cha $1',
 'actionthrottled' => 'Tendo limesimamishwa',
@@ -557,11 +550,17 @@ Unaweza kuendelea kutumia {{SITENAME}} bila kutaja jina lako, au unaweza <span c
 'gotaccountlink' => 'Ingia',
 'userlogin-resetlink' => 'Umesahau maelezo yako ya kuingia?',
 'createacct-emailrequired' => 'Anwani ya barua pepe',
+'createacct-emailoptional' => 'Anwani ya barua pepe (si lazima)',
 'createacct-email-ph' => 'Weka anwani yako ya barua pepe',
 'createacct-another-email-ph' => 'Weka anwani ya barua pepe',
 'createaccountmail' => 'Kwa barua pepe',
+'createacct-realname' => 'Jina la kweli (si lazima)',
 'createaccountreason' => 'Sababu:',
 'createacct-reason' => 'Sababu',
+'createacct-benefit-heading' => '{{SITENAME}} inatengenezwa na watu kama wewe.',
+'createacct-benefit-body1' => '{{PLURAL:$1|haririo|maharirio}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|ukurasa|kurasa}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|mhariri|wahariri}} wa hivi karibuni',
 'badretype' => 'Maneno uliyoyaandika ni tofauti.',
 'userexists' => 'Jina la mtumiaji uliloingiza tayari linatumika.
 Tafadhali chagua jina lingine.',
@@ -588,7 +587,7 @@ Jaribu tena.',
 'passwordtooshort' => 'Ni lazima neno la siri liwe na {{PLURAL:$1|herufi}} $1 au zaidi.',
 'password-name-match' => 'Neno lako la siri lazima liwe tofauti na jina lako la mtumiaji.',
 'password-login-forbidden' => 'Utumiaji wa jina hili na neno lake siri imekatazwa.',
-'mailmypassword' => 'Nitume neno la siri jipya kwa barua-pepe',
+'mailmypassword' => 'Nitumie neno la siri jipya kwa barua-pepe',
 'passwordremindertitle' => 'Neno la siri jipya la muda kwa ajili ya {{SITENAME}}',
 'passwordremindertext' => 'Mtu mmoja (yamkini wewe, kutoka anwani ya IP $1)
 ameulizia neno jipya la siri kwa {{SITENAME}} ($4).
@@ -639,7 +638,7 @@ Tafadhali subiri kwanza kabla ya kujaribu tena.',
 'user-mail-no-addy' => 'Umejaribu kutuma barua pepe bila anwani ya barua pepe.',
 
 # Change password dialog
-'resetpass' => 'Kubadilisha neno la siri',
+'changepassword' => 'Badilisha neno la siri',
 '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',
@@ -666,17 +665,17 @@ Inawezekana ikawa tayari umefaulu kubadilisha neno lako la siri au neno la siri
 'passwordreset-capture-help' => 'Iwapo utatia alama kisanduku hiki, barua-pepe (pamoja na nenosiri la muda) litaoneshwa kwako na vilevile litatumwa kwa mtumiaji.',
 'passwordreset-email' => 'Anwani ya barua pepe:',
 'passwordreset-emailtitle' => 'Maelezo ya akaunti kwenye {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Kuna mtu (huenda ikawa ni wewe, kutoka anwani ya IP $1) aliyeomba kukumbushwa kuhusu maelezo ya akaunti yako katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
+'passwordreset-emailtext-ip' => 'Kuna mtu (huenda ikawa ni wewe, kutoka anwani ya IP $1) aliyeomba neno la siri la akaunti yako liwekwe upya katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
 
 $2
 
 {{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5|$5}}.
 Tafadhali ingia sasa na uchague neno jipya la siri. Kama mtu mwingine ameomba hili, au ikiwa umekumbuka neno lako la siri na hutaki kulibadilisha tena, basi usijali ujumbe huu, na uendelee kutumia neno la siri lako la zamani.',
-'passwordreset-emailtext-user' => 'Mtumiaji $1 kwenye {{SITENAME}} ameomba akumbushwe maelezo ya akaunti yako katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
+'passwordreset-emailtext-user' => 'Mtumiaji $1 kwenye {{SITENAME}} ameomba neno la siri la akaunti yako liwekwe upya katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
 
 $2
 
-{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5|$5}}.
+{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5}}.
 Tafadhali ingia sasa na uchague neno jipya la siri. Kama mtu mwingine ameomba hili, au ikiwa umekumbuka neno lako la siri na hutaki kulibadilisha tena, basi usijali ujumbe huu, na uendelee kutumia neno la siri lako la zamani.',
 'passwordreset-emailelement' => 'Jina la mtumiaji: $1
 Neno la siri la muda: $2',
@@ -692,6 +691,7 @@ Neno la siri la muda: $2',
 'changeemail-oldemail' => 'Anwani ya barua pepe ya sasa:',
 'changeemail-newemail' => 'Anwani mpya ya barua pepe:',
 'changeemail-none' => '(hakuna)',
+'changeemail-password' => 'Neno lako la siri kuingia {{SITENAME}}:',
 'changeemail-submit' => 'Badilisha anwani ya barua pepe',
 'changeemail-cancel' => 'Batilisha',
 
@@ -908,7 +908,7 @@ Baadhi ya vigezo havitaweza kuingizwa.",
 'undo-success' => 'Sahihisho linaweza kutenguliwa.
 Tafadhali tazama linganisho lililopo chini ili kuthibitisha kwamba kutengua ndiyo inayotakiwa, na kisha uhifadhi mabadiliko ili kukamilisha kutengua sahihisho.',
 'undo-failure' => 'Haririo halikuweza kutenguliwa kwa kufuatia mgongano wa maharirio katikati.',
-'undo-norev' => 'Sahihisho halikuweza kutenguliwa kwa sababu halipo au limeshafutwa.',
+'undo-norev' => 'Haririo halikuweza kutenguliwa kwa sababu halipo au limeshafutwa.',
 'undo-summary' => 'Tengua pitio $1 lililoandikwa na [[Special:Contributions/$2|$2]] ([[User talk:$2|Majadiliano]])',
 
 # Account creation failure
@@ -936,8 +936,8 @@ Sababu iliyotolewa na $3 ni ''$2''",
 Ufunguo: '''({{int:cur}})''' = tofauti na toleo la sasa, '''({{int:last}})''' = tofauti na pitio lililotangulia, '''({{int:minoreditletter}})''' = badiliko dogo.",
 'history-fieldset-title' => 'Fungua historia',
 'history-show-deleted' => 'Zilizofutwa tu',
-'histfirst' => 'Mwanzoni',
-'histlast' => 'Mwishoni',
+'histfirst' => 'zamani',
+'histlast' => 'mpya',
 'historysize' => '({{PLURAL:$1|baiti}}) $1',
 'historyempty' => '(tupu)',
 
@@ -977,8 +977,6 @@ Unaweza masasisho; maelezo mengine yapo kwenye [{{fullurl:{{#Special:Log}}/delet
 'rev-delundel' => 'onyesha/ficha',
 'rev-showdeleted' => 'onyesha',
 'revisiondelete' => 'Kufuta/kurudisha mapitio',
-'revdelete-nologtype-title' => 'Aina ya kumbukumbu haikutajwa',
-'revdelete-nologid-title' => 'Kumbukumbu batili',
 'revdelete-no-file' => 'Faili ulilotaja halipatikani.',
 'revdelete-show-file-confirm' => 'Ni kweli kwamba unataka kulitazama pitio lililofutwa la faili linaloitwa "<nowiki>$1</nowiki>" la tarehe $2 na saa $3?',
 'revdelete-show-file-submit' => 'Ndiyo',
@@ -1012,8 +1010,6 @@ $1",
 'logdelete-failure' => "'''Kubadilisha uwezo wa kuona kumbukumbu ulifaulu:'''
 $1",
 'revdel-restore' => 'badilisha mwonekano',
-'revdel-restore-deleted' => 'mapitio yaliyofutwa',
-'revdel-restore-visible' => 'mapitio yanayoonekana',
 'pagehist' => 'Historia ya ukurasa',
 'deletedhist' => 'Historia iliyofutwa',
 'revdelete-hide-current' => 'Hitilafu ya kuficha pitio lililotengenezwa saa $2, tarehe $1: hilo ndilo pitio la sasa hivi.
@@ -1069,12 +1065,8 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 # Search results
 'searchresults' => 'Matokeo ya utafutaji',
 'searchresults-title' => 'Matokeo ya utafutaji kwa ajili ya "$1"',
-'searchresulttext' => 'Kwa maelezo zaidi kuhusu kutafuta {{SITENAME}}, tazama [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ulitafuta \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kurasa zote zinazoanza "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kurasa zote zinazoungwa na "$1"]])',
-'searchsubtitleinvalid' => "Ulitafuta '''$1'''",
 'toomanymatches' => 'Yalipatikana majibu mengi mno, kwa hiyo tafadhali jaribu ulizo mwingine',
 'titlematches' => 'Kurasa zinazo majina yenye maneno ya ulizo',
-'notitlematches' => 'Jina hili la ukurasa halikupatikana',
 'textmatches' => 'Kurasa zinazo maandishi yenye maneno ya ulizo',
 'notextmatches' => 'Maandishi yaliyotafutwa hayakupatikana kwenye kurasa zo zote',
 'prevn' => '{{PLURAL:$1|uliotangulia|$1 zilizotangulia}}',
@@ -1083,10 +1075,8 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 'nextn-title' => '{{PLURAL:$1|Tokeo $1 lijalo|Matokeo $1 yajayo}}',
 'shown-title' => '{{PLURAL:$1|Lionyewshwe tokeo|Yaonyeshwe matokeo}} $1 kwa kila ukurasa',
 'viewprevnext' => 'Tazama ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Hitiari za kutafuta',
 'searchmenu-exists' => "'''Ukurasa wa \"[[:\$1]]\" upo kwenye wiki hii'''",
 'searchmenu-new' => "'''Anzisha ukurasa wa \"[[:\$1]]\" katika wiki hii!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tafuta kurasa kwenye eneo hili la wiki]]',
 'searchprofile-articles' => 'Kurasa kwa kusudi ya wiki',
 'searchprofile-project' => 'Kurasa za msaada na za mradi',
 'searchprofile-images' => 'Picha na kadhalika',
@@ -1107,21 +1097,16 @@ Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio
 'search-interwiki-default' => 'Matokeo toka $1:',
 'search-interwiki-more' => '(zaidi)',
 'search-relatedarticle' => 'Zingine zinazofanana',
-'mwsuggest-disable' => 'Kutoonyesha mapendekezo ya kutafuta',
 'searcheverything-enable' => 'Tafuta katika maeneo yote ya wiki',
 'searchrelated' => 'zingine zinazofanana',
 'searchall' => 'zote',
 'showingresults' => "{{PLURAL:$1|Tokeo '''1''' linaonyeshwa|matokeo '''$1''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
 'showingresultsnum' => "{{PLURAL:$3|Tokeo '''1''' linaonyeshwa|Matokeo '''$3''' yanaonyeshwa}} chini, kuanzia na namba '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Tokeo '''$1''' kati ya jumla ya '''$3'''|Matokeo '''$1 - $2''' kati ya jumla ya '''$3'''}} kutokana na kuitafuta '''$4'''",
-'nonefound' => "'''Zingatia''': Utafutaji wa msingi unatafuta kwenye maeneo machache ya wiki tu.
-Ukitaka kutafuta kwenye maeneo yote (pamoja na kurasa za majadiliano, vigezo, nk) andika ''all:'' mwanzoni mwa kisanduku. Ukitaka kutafuta kwenye eneo linaloitwa ''fulani'' andika ''fulani:'' mwanzoni mwa kisanduku.",
 'search-nonefound' => 'Hakuna matokeo ya kutafuta ulizio ule.',
-'powersearch' => 'Tafuta kwa hali ya juu',
 'powersearch-legend' => 'Tafuta kwa hali ya juu',
 'powersearch-ns' => 'Tafuta kwenye maeneo ya wiki yafuatayo:',
 'powersearch-redir' => 'Orodhesha kurasa za kuelekeza',
-'powersearch-field' => 'Tafuta huu:',
 'powersearch-togglelabel' => 'Chagua:',
 'powersearch-toggleall' => 'Chagua yote',
 'powersearch-togglenone' => 'Usichague',
@@ -1134,7 +1119,6 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'preferences' => 'Mapendekezo',
 'mypreferences' => 'Mapendekezo',
 'prefs-edits' => 'Idadi ya marekebisho:',
-'changepassword' => 'Badilisha neno la siri',
 'prefs-skin' => 'Umbo',
 'skin-preview' => 'Hakiki',
 'datedefault' => 'Chaguo-msingi',
@@ -1157,13 +1141,11 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'prefs-email' => 'Hitiari za barua pepe',
 'prefs-rendering' => 'Umbo',
 'saveprefs' => 'Hifadhi',
-'resetprefs' => 'Utupe mabadiliko yasijahifadhika',
 'restoreprefs' => 'Rudisha mapendekezo ya msingi',
 'prefs-editing' => 'Kuhariri',
 'rows' => 'Mistari:',
 'columns' => 'Safu:',
 'searchresultshead' => 'Kutafuta',
-'resultsperpage' => 'Matokeo yanayoorodheshwa katika ukurasa mmoja:',
 'stub-threshold' => 'Kiwango cha juu cha kuonyesha kiungo kama <a href="#" class="stub">kiungo kinachoelekea mbegu</a> (baiti):',
 'stub-threshold-disabled' => 'Imelemazwa',
 'recentchangesdays' => 'Ionyeshwe siku ngapi kwenye orodha ya mabadiliko ya karibuni?',
@@ -1175,7 +1157,6 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
 'localtime' => 'Saa ya kwetu:',
 'timezoneuseserverdefault' => 'Tumia saa inayokubali na wiki yenyewe ($1)',
 'timezoneuseoffset' => 'Nyingine (weka tofauti ya saa)',
-'timezoneoffset' => 'Tofauti ya saa¹:',
 'servertime' => 'Saa ya seva:',
 'guesstimezone' => 'kivinjari kiweke saa',
 'timezoneregion-africa' => 'Afrika',
@@ -1393,12 +1374,11 @@ Taarifa hii itakuwa wazi.',
 'recentchanges-label-bot' => 'Sahihisho hili lilitekelezwa na bot',
 'recentchanges-label-unpatrolled' => 'Haririo hili bado halijafanyiwa doria',
 'recentchanges-legend-newpage' => '$1 - ukurasa mpya',
-'rcnote' => "{{PLURAL:$1|Linalofuata ni badiliko '''1'''|Yanayofuata ni mabadiliko '''$1''' ya mwisho}} kutoka katika {{PLURAL:$2|siku iliyopita|siku '''$2''' zilizopita}}, hadi saa $5, tarehe $4.",
 'rcnotefrom' => "Hapo chini yaonekana mabadiliko tangu '''$2''' (tunaonyesha hadi '''$1''').",
 'rclistfrom' => 'Onyesha mabadiliko mapya kuanzia $1',
 'rcshowhideminor' => '$1 mabadiliko madogo',
 'rcshowhidebots' => 'roboti $1',
-'rcshowhideliu' => '$1 watumiaji sasa',
+'rcshowhideliu' => 'watumiaji $1 waliojisajili',
 'rcshowhideanons' => '$1 watumiaji bila majina',
 'rcshowhidepatr' => '$1 masahihisho yanayofanywa doria',
 'rcshowhidemine' => '$1 masahihisho yangu',
@@ -1818,10 +1798,8 @@ Sasa unaelekeza kwa [[$2]].',
 'protectedpages' => 'Kurasa zinazolindwa',
 'protectedpages-indef' => 'Ulinzi kwa muda usiojulikana tu',
 'protectedpages-cascade' => 'Mpangilio wa ulindaji tu',
-'protectedpagestext' => 'Kurasa zifuatazo zinalindwa zisisogezwe wala kuhaririwa',
 'protectedpagesempty' => 'Hakuna kurasa zinazolindwa kwa sasa kwa vigezo hivi.',
 'protectedtitles' => 'Majina yanayozuluiwa',
-'protectedtitlestext' => 'Yafuatayo ni majina ya kurasa yanayozuluiwa kuyatumia',
 'protectedtitlesempty' => 'Hakuna vichwa vinavyolindwa kwa vigezo hivi kwa sasa.',
 'listusers' => 'Orodha ya Watumiaji',
 'listusers-editsonly' => 'Onyesha watumiaji wenye kuhariri tu',
@@ -1864,9 +1842,6 @@ Unaweza kuona baadhi yao tu kwa kuchagua aina fulani ya kumbukumbu, jina la mtum
 'allpagesto' => 'Onyesha kurasa zinazoishia na:',
 'allarticles' => 'Kurasa zote',
 'allinnamespace' => 'Kurasa zote (eneo la wiki $1)',
-'allnotinnamespace' => 'Kurasa zote (zisizo katika eneo la wiki ya $1)',
-'allpagesprev' => 'Iliyotangulia',
-'allpagesnext' => 'Ijayo',
 'allpagessubmit' => 'Nenda',
 'allpagesprefix' => 'Onyesha kurasa zenye kiambishi awali:',
 'allpagesbadtitle' => 'Jina la ukurasa ni batili au linatumia kiambishi awali cha mradi mwingine.
@@ -1982,12 +1957,8 @@ Anwani yako ya barua pepe ulioitaja katika [[Special:Preferences|mapendekezo yak
 'watchnologin' => 'Hujaingia',
 'watchnologintext' => 'Lazima uwe [[Special:UserLogin|umeshaingia]] ili uweze kuhariri orodha ya maangalizi yako.',
 'addwatch' => 'Ongeza kwenye orodha ya maangalizi',
-'addedwatchtext' => "Ukurasa \"[[:\$1]]\" umewekwa kwenye [[Special:Watchlist|maangalizi]] yako.
-Mabadiliko katika ukurasa huo na ukurasa wake wa majadiliano utaonekana hapo,
-na ukurasa utaonyeshwa wenye '''koze''' kwenye [[Special:RecentChanges|orodha ya mabadiliko ya karibuni]]
-ili kukusaidia kutambua.
-
-Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuatilia\" katika mwamba pembeni.",
+'addedwatchtext' => 'Ukurasa "[[:$1]]" umewekwa kwenye [[Special:Watchlist|maangalizi]] yako.
+Mabadiliko katika ukurasa huo na ukurasa wake wa majadiliano utaonekana hapo.',
 'removewatch' => 'Ondoa kutoka orodha ya maangalizi',
 'removedwatchtext' => 'Ukurasa "[[:$1]]" umeondoshwa kutoka katika [[Special:Watchlist|maangalizi yako]].',
 'watch' => 'Fuatilia',
@@ -2015,15 +1986,22 @@ 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_impersonal_salutation' => 'Kwa mtumiaji wa {{SITENAME}}',
+'enotif_subject_deleted' => '$2 {{GENDER:$2|alifuta}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_created' => '$2 {{GENDER:$2|alianzisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_moved' => '$2 {{GENDER:$2|alihamisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_restored' => '$2 {{GENDER:$2|alirudisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_subject_changed' => '$2 {{GENDER:$2|alibadilisha}} ukurasa wa $1 katika {{SITENAME}}',
+'enotif_body_intro_deleted' => '$2 {{GENDER:$2|alifuta}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3.',
+'enotif_body_intro_created' => '$2 {{GENDER:$2|alianzisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
+'enotif_body_intro_moved' => '$2 {{GENDER:$2|alihamisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
+'enotif_body_intro_restored' => '$2 {{GENDER:$2|alirudisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
+'enotif_body_intro_changed' => '$2 {{GENDER:$2|alibadilisha}} ukurasa wa $1 katika {{SITENAME}} tarehe $PAGEEDITDATE. Tazama $3 kuona ukurasa ulivyo sasa hivi.',
 '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',
 'enotif_body' => 'Mpendwa $WATCHINGUSERNAME,
 
-
-$PAGEEDITOR $CHANGEDORCREATED ukurasa wa $PAGETITLE kwenye {{SITENAME}} saa $PAGEEDITDATE. Tazama $PAGETITLE_URL kuona ukurasa ulivyo sasa hivi.
-
-$NEWPAGE
+$PAGEINTRO $NEWPAGE
 
 Muhtasari wa mhariri: $PAGESUMMARY $PAGEMINOREDIT
 
@@ -2031,12 +2009,15 @@ Uwasiliane na mhariri kwa njia hizi:
 barua pepe: $PAGEEDITOR_EMAIL
 wiki: $PAGEEDITOR_WIKI
 
-Hutapata taarifa za mabadiliko mengine yatakayotokea kwenye ukurasa huu hadi utakapotazama ukurasa.
+Hutapata taarifa za mabadiliko mengine yatakayotokea kwenye ukurasa huu hadi utakapotazama ukurasa wakati umeingia akaunti yako.
 Au unaweza kuweka upya maombi ya kupewa taarifa kwa ajili ya kurasa zote zilizopo kwenye orodha yako ya maangalizi.
 
-             Kutoka kwa {{SITENAME}}
+             Kutoka kwa mashine ya kutoa taarifa ya {{SITENAME}}
 
 --
+Ukitaka kubadilisha mapendekezo yako kuhusu kutolewa taarifa, nenda
+{{canonicalurl:{{#special:Preferences}}}}
+
 Ukitaka kubadilisha mapendekezo yako yanayohusika orodha ya maangalizi yako, nenda
 {{canonicalurl:{{#special:EditWatchlist}}}}
 
@@ -2167,7 +2148,6 @@ Hivi ni vipimo kwa ukurasa '''$1''':",
 'undeletebtn' => 'Rudisha',
 'undeletelink' => 'onyesha/rejesha',
 'undeleteviewlink' => 'tazama',
-'undeletereset' => 'Panga upya',
 'undeleteinvert' => 'Geuza uteuzi',
 'undeletecomment' => 'Sababu:',
 'undeletedrevisions' => '{{PLURAL:$1|pitio 1 lilirudishwa|mapitio $1 yalirudishwa}}',
@@ -2242,7 +2222,6 @@ Rejea kumbukumbu ya uzuio ya mwisho inayoandikwa chini:',
 'block' => 'Kumzuia mtumiaji',
 'unblock' => 'Kuacha kumzuia mtumiaji',
 'blockip' => 'Zuia mtumiaji',
-'blockip-title' => 'Kumzuia mtumiaji',
 'blockip-legend' => 'Kumzuia mtumiaji',
 'blockiptext' => 'Tumia fomu iliyopo chini kumzuia mtu asihariri kwa kupitia anwani fulani wa IP au kwa kutumia jina fulani la mtumiaji.
 Nia ya kumzuia mtu inatakiwa kuwa kuzuia uharibifu tu, na ifanikiwe kutokana na masharti ya [[{{MediaWiki:Policy-url}}|sera]].
@@ -2250,7 +2229,6 @@ Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizohari
 'ipadressorusername' => 'Anwani ya IP au jina la mtumiaji:',
 'ipbexpiry' => 'Itakwisha:',
 'ipbreason' => 'Sababu:',
-'ipbreasonotherlist' => 'Sababu nyingine',
 'ipbreason-dropdown' => '*Sababu za kawaida za kuzuia
 ** Kuingiza habari za uongo
 ** Kuondosha yaliyomo katika kurasa
@@ -2266,8 +2244,6 @@ Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizohari
 'ipbsubmit' => 'Zuia mtumiaji huyu',
 'ipbother' => 'Muda mwingine:',
 'ipboptions' => 'Masaa 2:2 hours,siku 1:1 day,siku 3:3 days,wiki 1:1 week,wiki 2:2 weeks,mwezi 1:1 month,miezi 3:3 months,miezi 6:6 months,mwaka 1:1 year,milele:infinite',
-'ipbotheroption' => 'engine',
-'ipbotherreason' => 'Engine/sababu ya ziada:',
 'ipbhidename' => 'Ficha jina la mtumiaji katika orodha na kuhariri',
 'ipbwatchuser' => 'Fuatilia kurasa za mtumiaji na majadiliano ya mtumiaji huyu.',
 'ipb-disableusertalk' => 'Kuzuia mtumiaji huu asihariri ukurasa wake mwenyewe wa majadiliano wakati amezuluiwa',
@@ -2350,7 +2326,6 @@ Kama tayari kuna ukurasa au ukifuta tiki, itabidi usogeze au uunganishe ukurasa
 
 Kama tayari kuna ukurasa au ukifuta tiki, itabidi usogeze au uunganishe ukurasa kwa mkono ukitaka.",
 'moveuserpage-warning' => "'''Ilani:''' Unatarajia kuhamisha ukurasa wa mtumiaji. Tafadhali kumbuka kwamba ni ukurasa tu utakaohamishwa; jina la mtumiaji ''haitabadilishwa''.",
-'movenologin' => 'Hujaingia',
 'movenologintext' => 'Lazima uwe mtumiaji uliyesajiliwa na [[Special:UserLogin|uliyeingizwa]] ili uhamishe ukurasa.',
 'movenotallowed' => 'Huna ruhusa ya kuhamisha kurasa.',
 'movenotallowedfile' => 'Huna ruhusa ya kuhamisha mafaili.',
@@ -2365,8 +2340,6 @@ Kama tayari kuna ukurasa au ukifuta tiki, itabidi usogeze au uunganishe ukurasa
 'articleexists' => 'Tayari kuna ukurasa wenye jina hilo, au
 jina ulilochagua ni batilifu.
 Chagua jina lengine.',
-'talkexists' => "'''Ukurasa wenyewe ulisogezwa salama, lakini ukurasa wake wa majadiliano haujasogezwa kwa sababu tayari kuna ukurasa wenye jina lake.  Tafadhali ziunganishe kwa mkono.'''",
-'movedto' => 'imesogezwa hadi',
 'movetalk' => 'Hamisha ukurasa wake wa majadiliano',
 'move-subpages' => 'Hamisha kurasa ndogo (hadi $1)',
 'move-talk-subpages' => 'Hamisha kurasa ndogo za ukurasa wa majadiliano (hadi $1)',
@@ -2603,7 +2576,7 @@ Ukilitekeleza faili, mashine yako huenda ikawa matatani.',
 'file-info-size-pages' => 'Piseli $1 × $2, ukubwa wa faili: $3, aina ya MIME: $4, {{PLURAL:$5|ukurasa|kurasa}} $5',
 'file-nohires' => 'Hakuna saizi kubwa zaidi.',
 'svg-long-desc' => 'faili la SVG, husemwa kuwa piseli $1 × $2, saizi ya faili: $3',
-'show-big-image' => 'Faili lenyewe',
+'show-big-image' => 'Faili halisi',
 'show-big-image-preview' => 'Ukubwa wa hakikisho: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Ukubwa mwingine|Ukubwa zingine}}: $1.',
 'show-big-image-size' => 'piseli $1 × $2',
@@ -2850,15 +2823,10 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
 'exif-urgency-high' => 'Juu ($1)',
 'exif-urgency-other' => 'Upaumbele uliotajwa na mtumiaji ($1)',
 
-# External editor support
-'edit-externally' => 'Tumia programu ya nje kuhariri faili hii',
-'edit-externally-help' => '(Ona [https://www.mediawiki.org/wiki/Manual:External_editors maelezo (kwa Kiingereza)] kwa maarifa mengine.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'zote',
 'namespacesall' => 'zote',
 'monthsall' => 'yote',
-'limitall' => 'zote',
 
 # Email address confirmation
 'confirmemail' => 'Kuyakinisha anwani ya barua pepe',
@@ -2883,7 +2851,6 @@ Huenda zimepitwa na wakati.',
 'confirmemail_success' => 'Barua pepe yako imethibitishwa.
 Sasa unaweza [[Special:UserLogin|kuingia]] na kuifurahia {{SITENAME}}.',
 'confirmemail_loggedin' => 'Anwani ya barua pepe yako imethibishwa sasa.',
-'confirmemail_error' => 'Kuna mambo yameenda kombo hifadhi ukamilisho wako.',
 'confirmemail_subject' => 'Barua pepe ya uthibitisho ya {{SITENAME}}',
 'confirmemail_body' => 'Kuna mtu, huenda ikawa wewe, kutoka anwani ya IP $1, amesajili akaunti "$2" na anwani ya barua pepe hii kwenye {{SITENAME}}.
 
@@ -3020,6 +2987,7 @@ Pia unaweza [[Special:EditWatchlist|kutumia kihariri cha kawaida]].',
 'version-other' => 'Zingine',
 'version-version' => '(Toleo $1)',
 'version-license' => 'Ruhusa',
+'version-ext-colheader-description' => 'Ufafanuzi',
 'version-poweredby-credits' => "Wiki hii inaendeshwa na bidhaa pepe ya '''[https://www.mediawiki.org/ MediaWiki]''', hakimiliki © 2001-$1 $2.",
 'version-poweredby-others' => 'wengine',
 'version-license-info' => 'MediaWiki ni bidhaa pepe huru; unaweza kuisambaza pamoja na kuitumia na kuibadilisha kutokana na masharti ya leseni ya GNU General Public License inayotolewa na Free Software Foundation (Shirika la Bidhaa Pepe Huru); ama toleo 2 la hakimiliki, ama (ukitaka) toleo lolote linalofuata.
@@ -3032,6 +3000,9 @@ Huwa unapokea [{{SERVER}}{{SCRIPTPATH}}/COPYING nakala ya GNU General Public Lic
 'version-software-version' => 'Toleo',
 'version-entrypoints-header-url' => 'KISARA Kioneshi Sanifu Raslimali',
 
+# Special:Redirect
+'redirect-submit' => 'Nenda',
+
 # Special:FileDuplicateSearch
 'fileduplicatesearch' => 'Tafuta mafaili ya nakili',
 'fileduplicatesearch-summary' => 'Kutafuta mafaili ya nakili kwa kuzingatia thamani za reli.',
@@ -3084,7 +3055,6 @@ Huwa unapokea [{{SERVER}}{{SCRIPTPATH}}/COPYING nakala ya GNU General Public Lic
 
 # Special:ComparePages
 'comparepages' => 'Linganisha kurasa',
-'compare-selector' => 'Kulinganisha mapitio',
 'compare-page1' => 'Ukurasa wa kwanza',
 'compare-page2' => 'Ukurasa wa pili',
 'compare-rev1' => 'Pitio la kwanza',
index e5c7f79..15b7ec0 100644 (file)
@@ -87,7 +87,6 @@ $messages = array(
 'tog-minordefault' => 'Kożde moje sprowjańy je ńywjelge',
 'tog-previewontop' => 'Uobźyrej przed placym sprowjańo',
 'tog-previewonfirst' => 'Obźyrej zajta przi pjyrszym sprowjańu',
-'tog-nocache' => 'Wypńij podrynczno pamjyńć',
 'tog-enotifwatchlistpages' => 'Wyślij e-brifa, kej ftoś zmjyńi zajta, na kero dowom pozůr',
 'tog-enotifusertalkpages' => 'Wyślij e-brifa, kej zajta mojij godki bydźe půmjyńono',
 'tog-enotifminoredits' => 'Wyślij e-brifa tyż, kej by szło uo drobne pomjyńańa',
@@ -174,6 +173,7 @@ $messages = array(
 'dec' => 'gru',
 'january-date' => '$1 styczńa',
 'february-date' => '$1 lutygo',
+'march-date' => '$1 marca',
 'april-date' => '$1 kwjytńa',
 'may-date' => '$1 moja',
 'june-date' => '$1 czyrwca',
@@ -219,7 +219,6 @@ $messages = array(
 'qbedit' => 'Sprowjej',
 'qbpageoptions' => 'Ta zajta',
 'qbmyoptions' => 'Moje zajty',
-'qbspecialpages' => 'Szpecyjolne zajty',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -422,14 +421,12 @@ Eli tak ńy je, możno śe trefił feler we softwaru MediaWiki. Kej ja, pedz uo
 'cannotdelete' => 'Ńy idźe wyćepać podanyj zajty abo grafiki $1.',
 'cannotdelete-title' => 'Ńy idźie wyćepać zajty "$1".',
 'delete-hook-aborted' => 'Wyćepywańe sztopńynte bez hak. Przyczyna ńyuokreślůno.',
+'no-null-revision' => 'Ńy je mogebne stworzyńe zerowyj wersyji zajty "$1"',
 'badtitle' => 'Felerny titel',
 'badtitletext' => 'Podano felerny titel zajty. Prawdopodańy sům w ńim znoki, kerych ńy wolno używać we titlach abo je pusty.',
 'perfcached' => 'To co sam je naszkryflane, to ino kopja ze pamjyńći podryncznyj a może ńy być aktualne. Nojwjyncyj {{PLURAL:$1|jydyn wynik je|$1 wyniki sům}} we tyj pamjyńći.',
 'perfcachedts' => 'To co sam je naszkryflane, to ino kopja s pamjyńći podryncznyj a bůło uaktualńůne $1. Nojwjyncyj {{PLURAL:$4|jeden wynik je|$4 wyniki sům}} dostympne.',
 'querypage-no-updates' => 'Uaktualńyńo lo tyj zajty sům terozki zawarte. Dane, kere sam sům, ńy zostouy uodśwjyżůne.',
-'wrong_wfQuery_params' => 'Felerne parametry przekozane do wfQuery()<br />
-Funkcyjo: $1<br />
-Zapytańy: $2',
 'viewsource' => 'Zdrzůdłowy tekst',
 'viewsource-title' => 'Uobocz zdrzůdło lo $1',
 'actionthrottled' => 'Akcyjo wstrzimano',
@@ -446,6 +443,8 @@ $2',
 'customjsprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty, bo na ńij sům uosobiste sztalowańo inkszego użytkowńika.',
 'mycustomcssprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty CSS.',
 'mycustomjsprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty JavaScript.',
+'myprivateinfoprotected' => 'Ńy mosz uprowńyń coby sprowjić swoje prywatne dane.',
+'mypreferencesprotected' => 'Ńy mosz uprowńyń coby sprowjić swoje sztalowańo.',
 'ns-specialprotected' => 'Ńy idźe sprowjać zajtůw we przestrzyni mjan {{ns:special}}.',
 'titleprotected' => "Wćepańy sam zajty uo takim mjańe zawar [[User:$1|$1]].
 Powůd zawarćo: ''$2''.",
@@ -453,6 +452,7 @@ Powůd zawarćo: ''$2''.",
 
 Administrator kery zawarł wćepał kůmyntorz: "$3".',
 'invalidtitle-knownnamespace' => 'Felerne mjano "$3" w przestrzeńy "$2".',
+'invalidtitle-unknownnamespace' => 'Felerne mjano ze ńyznomům nůmerům raumu mjan $1: "$2"',
 'exception-nologin' => 'Ńy jest żeś zalogůwany',
 'exception-nologin-text' => 'Prosza [[Special:Userlogin|zaloguj śe]] coby mjeć mogebność przejśćo do tyj zajty abo akcyji.',
 
@@ -546,7 +546,7 @@ Sprowdź szrajbůng, abo [[Special:UserLogin/signup|utwůrz nowe kůnto]].',
 Hasło muśi mjeć przinojmńij {{PLURAL:$1|1 buchsztaba|$1 buchsztabůw}} a być inksze uod mjana użytkowńika.',
 'password-name-match' => 'Hasło mo być inksze atoli mjano używocza.',
 'password-login-forbidden' => 'Mogebność wyboru tygo mjana używocza abo hasła je zawarte.',
-'mailmypassword' => 'Wyślij mi nowe hasło bez e-brif',
+'mailmypassword' => 'Wyczyść hasło',
 'passwordremindertitle' => 'Nowe tymczasowe hasło lo {{SITENAME}}',
 'passwordremindertext' => 'Ftoś (cheba Ty, ze IP $1)
 pado, aże chce nowe hasło do {{SITENAME}} ($4).
@@ -588,9 +588,10 @@ Kej bydźesz chćoł je podoć, bydům użyte, coby dokůmyntowoć Twoje autorst
 # Email sending
 'php-mail-error-unknown' => 'Ńyznany feler we funkcyji mail()',
 'user-mail-no-addy' => 'Průba posłańo e‐brifa bez adresu uodbjorcy',
+'user-mail-no-body' => 'Bůła průba posłańo e-brifa uo blank abo krůtkim tekśće.',
 
 # Change password dialog
-'resetpass' => 'Pomjyńaj hasło',
+'changepassword' => 'Zmjana hasua',
 'resetpass_announce' => 'Zalůgowołżeś śe ze tymczasowym kodym uotrzimanym bez e-brif. Coby zakůńczyć proces logůwańo muśisz nasztalować nowe hasło:',
 'resetpass_header' => 'Zmjyń hasło lů swojygo kůnta',
 'oldpassword' => 'Stare hasło',
@@ -605,6 +606,7 @@ Kej bydźesz chćoł je podoć, bydům użyte, coby dokůmyntowoć Twoje autorst
 'resetpass-wrong-oldpass' => 'Felerne tymczasowe abo aktualne hasło.
 Możliwe co właśńy zmjyńiłżeś swoje hasło abo poprosiłżeś uo nowe tymczasowe hasło.',
 'resetpass-temp-password' => 'Tymczasowe hasło:',
+'resetpass-abort-generic' => 'Půmjyńańe hasła uostoła zatrzimane bez rozszyrzyńe.',
 
 # Special:PasswordReset
 'passwordreset' => 'Wyczyść hasło',
@@ -643,6 +645,9 @@ Tymczasowe hasło: $2',
 'changeemail-submit' => 'Spamjyntej nowy',
 'changeemail-cancel' => 'Uodćepej',
 
+# Special:ResetTokens
+'resettokens' => 'Resetuj tokeny',
+
 # Edit page toolbar
 'bold_sample' => 'Ruby tekst',
 'bold_tip' => 'Ruby tekst',
@@ -714,7 +719,7 @@ Możesz to zrobić we [[Special:Preferences|swojich sztalowańach]].',
 'newarticletext' => 'Ńy mo sam jeszcze artikla uo takijj titli. Eli chcesz go sprowjać, naszkryflej niżyj jego tekst (wjyncy informacyj nojdźesz [[{{MediaWiki:Helppage}}|na zajće půmocy]]). Eli żeś chćoł zrobić cośik inksze, naćiś ino knefel "Nazod".',
 'anontalkpagetext' => "---- ''To je zajta godki lo anůnimowych używoczy  - takich, kerzi ńy majům jeszcze swojigo kůnta abo ńy chcům go terozki używać.
 By jejich idyntyfikować, używomy numerůw IP.
-Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin|utwůrz prosza kůnto]] abo [[Special:UserLogin|zalůguj śe]] - beztůż uńikńesz potym podobnych ńyporozumjyń.''",
+Eli jeżeś anůnimowym używoczym a wydowo Ći śe, aże zamjyszczůne sam kůmyntorze ńy sům skjyrowane do Ćebje, [[Special:UserLogin/signup|utwůrz kůnto]] abo [[Special:UserLogin|zaloguj śe]] - beztůż uńikńesz potym podobnych ńyporozumjyń.''",
 'noarticletext' => 'Ńy můmy zajta uo takij titli. Mogesz [{{fullurl:{{FULLPAGENAME}}|action=edit}} wćepać artikel {{FULLPAGENAME}}] abo [[Special:Search/{{PAGENAME}}|sznupać {{PAGENAME}} we inkszych]].',
 'noarticletext-nopermission' => 'Ta zajta terozki je pusto.
 Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśćach inkszych zajtůw, abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przesznupać powjůnzane rejery]</span>, nale ńy mosz uprowńyń coby ta zajta wćepać',
@@ -804,6 +809,7 @@ Rejer wyćepań tyj zajty je podany půńiżej, cobyś mioł wygoda:",
 Zdowo śe, co zostoła wyćepano.',
 'edit-conflict' => 'Kůnflikt sprowjyń.',
 'edit-no-change' => 'Twoje sprowjyńe uostouo zignorowane pů takymu, co ńic žeś we tekśće ńy zmjyńiu.',
+'postedit-confirmation' => 'Spamjyntano twoje sprowjyńe.',
 'edit-already-exists' => 'Ńy idźe utwořić nowyj zajty.
 Tako zajta juž sam je.',
 'defaultmessagetext' => 'Tekst důmyślny',
@@ -841,7 +847,7 @@ Skuli: ''$2''",
 'revisionasof' => 'Wersyjo ze dńa $1',
 'revision-info' => 'Wersyjo s dńa $1; $2',
 'previousrevision' => '← starszo wersyjo',
-'nextrevision' => 'Nastympno wersyjo→',
+'nextrevision' => 'Nostympno wersyjo→',
 'currentrevisionlink' => 'Aktualno wersyjo',
 'cur' => 'akt.',
 'next' => 'nastympno',
@@ -907,8 +913,6 @@ $1',
 'logdelete-failure' => 'Feler przi zmjyńe widoczości rejera.
 $1',
 'revdel-restore' => 'půmjyń widoczność',
-'revdel-restore-deleted' => 'wyćepane wersyje',
-'revdel-restore-visible' => 'widoczne wersyje',
 'pagehist' => 'Historyjo sprowjyń zajty',
 'deletedhist' => 'Wyćepano historyjo sprowjyń',
 'revdelete-hide-current' => 'Feler przi wyćepywańu wersyji $2, $1.',
@@ -972,12 +976,8 @@ $1',
 # Search results
 'searchresults' => 'Wyńiki sznupańo',
 'searchresults-title' => 'Wyniki sznupańo za „$1”',
-'searchresulttext' => 'Coby dowjydźeć śe wjyncyj uo šnupańu w {{GRAMMAR:D.lp|{{SITENAME}}}}, uobezdřij [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Wyńiki šnupańo za "[[:$1]]" ([[Special:Prefixindex/$1|zajty kere začynajům śe uod „$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|zajty kere sům adresowane do „$1”]])',
-'searchsubtitleinvalid' => 'Lo zapytańo "$1"',
 'toomanymatches' => 'Za dužo elymyntůw kere pasujům do wzorca, wćep inkše zapytańy',
 'titlematches' => 'Znejdźono we titlach:',
-'notitlematches' => 'Ńy znejdźono we titlach',
 'textmatches' => 'Znejdźono na zajtach:',
 'notextmatches' => 'Ńy znejdźono we tekście zajtůw',
 'prevn' => 'poprzedńe {{PLURAL:$1|$1}}',
@@ -986,10 +986,8 @@ $1',
 'nextn-title' => '{{PLURAL:$1|Dolszy|Dolsze|Dolszych}} $1 {{PLURAL:$1|wyńik|wyńiki|wyńikůw}}',
 'shown-title' => 'Ukoż $1 {{PLURAL:$1|wynik|wyniki|wynikůw}} lo zajta',
 'viewprevnext' => 'Uobźyrej ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Uopcyje sznupańo',
 'searchmenu-exists' => "'''Ńy ma zajty uo mjańy \"[[:\$1]]\" na tyj wiki'''",
 'searchmenu-new' => "'''Stwůrz zajta „[[:$1|$1]]” na tyj wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Przeglůndej zajty kere s anfanga majům tyn przedrostek]]',
 'searchprofile-articles' => 'Zajty',
 'searchprofile-project' => 'Zajty půmocy a projektu',
 'searchprofile-images' => 'Multimedyja',
@@ -1010,20 +1008,16 @@ $1',
 'search-interwiki-default' => '$1 wyńiki:',
 'search-interwiki-more' => '(wjyncyj)',
 'search-relatedarticle' => 'Podane',
-'mwsuggest-disable' => 'Wyłůncz sůgestyje AJAX',
 'searcheverything-enable' => 'Sznupej we wszech mjan',
 'searchrelated' => 'podane',
 'searchall' => 'wszyjske',
 'showingresults' => "To lista na keryj je {{PLURAL:$1|'''1''' wyńik|'''$1''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
 'showingresultsnum' => "To lista na keryj je {{PLURAL:$3|'''1''' wyńik|'''$3''' wyńikůw}}, počynojůnc uod nůmeru '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Wyńik '''$1''' z '''$3'''|Wyńiki '''$1 – $2''' z '''$3'''}} lo '''$4'''",
-'nonefound' => "'''Dej pozůr''': Důmyślńy přešukiwane sům ino ńykere přestřyńy mjan. Poprůbuj popředźić wyšukiwano fraza předrostkym ''all:'', co spowoduje přešukańy coukij zawartośći {{GRAMMAR:D.lp|{{SITENAME}}}} (wůunčńy ze zajtami godki, šablůnůma atp.), abo poprůbuj užyć kej předrostka wybranyj, jydnyj přestřyńi mjan.",
 'search-nonefound' => 'Ńy mo wynikůw, kere uodpadajům kryterjům zapytańo.',
-'powersearch' => 'Sznupańy zaawansowane',
 'powersearch-legend' => 'Sznupańy zaawansowane',
 'powersearch-ns' => 'Sznupej we przestrzyńach mjan:',
 'powersearch-redir' => 'Pokož překerowańa',
-'powersearch-field' => 'Sznupej',
 'powersearch-togglelabel' => 'Zaznocz:',
 'powersearch-toggleall' => 'Wszyjsko',
 'powersearch-togglenone' => 'żodno',
@@ -1035,7 +1029,6 @@ $1',
 'preferences' => 'Preferyncyje',
 'mypreferences' => 'Preferyncyje',
 'prefs-edits' => 'Liczba sprowjyń:',
-'changepassword' => 'Zmjana hasua',
 'prefs-skin' => 'Skůrka',
 'skin-preview' => 'podglůnd',
 'datedefault' => 'Důmyślny',
@@ -1058,13 +1051,11 @@ $1',
 'prefs-email' => 'E-brif',
 'prefs-rendering' => 'Wyglůnd',
 'saveprefs' => 'Spamjyntej',
-'resetprefs' => 'Preferencyje důmyślne',
 'restoreprefs' => 'Wćep wszyjskie důmyślne preferencyje',
 'prefs-editing' => 'Sprowjańy',
 'rows' => 'Wjerše:',
 'columns' => 'Kůlumny:',
 'searchresultshead' => 'Šnupańy',
-'resultsperpage' => 'Ličba wyńikůw na zajće',
 'stub-threshold' => 'Maksymalny rozmjar artikla uoznačanygo kej <a href="#" class="stub">stub (kůnsek)</a>',
 'stub-threshold-disabled' => 'Uodymkńynte',
 'recentchangesdays' => 'Ličba dńi do pokazańo we půmjyńanych na uostatku:',
@@ -1076,7 +1067,6 @@ $1',
 'localtime' => 'Lokalny czas:',
 'timezoneuseserverdefault' => 'Użyj domyślnygo czasu serwera ($1)',
 'timezoneuseoffset' => 'Inkszo (uokryśl różnica czasu)',
-'timezoneoffset' => 'Dyferencyjo ¹:',
 'servertime' => 'Czas serwera:',
 'guesstimezone' => 'Pobjer z přeglůndarki',
 'timezoneregion-africa' => 'Afrika',
@@ -1270,12 +1260,11 @@ $1',
 'recentchanges-label-minor' => 'To je ńywjelge sprowjyńy',
 'recentchanges-label-bot' => 'To sprowjyńy bůło zrobjůne uod bota',
 'recentchanges-label-unpatrolled' => 'To sprowjyńy ńy bůło jeszcze uowjerzůne',
-'rcnote' => "Půńižej {{PLURAL:$1|pokozano uostatńo zmjano dokůnano|pokazano uostatńy '''$1''' zmjany naškryflane|pokozano uostatńich '''$1''' škryflań zrobjůnych}} bez {{PLURAL:$2|uostatńi dźyń|uostatńich '''$2''' dńi}}, začynojůnc uod $5 dńa $4.",
-'rcnotefrom' => 'Půńižej pokazano půmjyńańo zrobjůne pů <b>$2</b> (ńy wjyncyj jak <b>$1</b> pozycji).',
+'rcnotefrom' => 'Půńiżej pokazano půmjyńańo zrobjůne pů <b>$2</b> (ńy wjyncyj kej <b>$1</b> pozycji).',
 'rclistfrom' => 'Ukoż půmjyńańa uod $1',
 'rcshowhideminor' => '$1 drobne půmjyńańa',
 'rcshowhidebots' => '$1 boty',
-'rcshowhideliu' => '$1 nalogowanych używoczůw',
+'rcshowhideliu' => '$1 zaregisztrowanych',
 'rcshowhideanons' => '$1 anůńimowych',
 'rcshowhidepatr' => '$1 uowjerzůne',
 'rcshowhidemine' => '$1 uody mje sprowjůne',
@@ -1498,7 +1487,7 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 'randomredirect-nopages' => 'We przestrzyńi mjan "$1" ńy ma przekerowań.',
 
 # Statistics
-'statistics' => 'Statystyka',
+'statistics' => 'Sztatystyka',
 'statistics-header-pages' => 'Statystyka zajtůw',
 'statistics-header-edits' => 'Statystyka sprowjyń',
 'statistics-header-views' => 'Statystyka bezuchůw',
@@ -1568,10 +1557,8 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 'protectedpages' => 'Zawarte zajty',
 'protectedpages-indef' => 'Ino zabezpjeczyńo ńyuokreślůne',
 'protectedpages-cascade' => 'Yno zajty zabezpjeczůne rekursywńy',
-'protectedpagestext' => 'Zajty wymjyńůne půńiżyj sům zawarte uod przećepywańo i sprowjańo.',
 'protectedpagesempty' => 'Żodno zajta ńy je terozki zawarto ze podanymi parametrami.',
 'protectedtitles' => 'Zawarte mjana artikli',
-'protectedtitlestext' => 'Ůtwořyńy artikli uo nastympujůncych mjanach je zawarte',
 'protectedtitlesempty' => 'Do tych štalowań utwořyńy artikla uo dowolnym mjańy ńy je zawarte',
 'listusers' => 'Lista užytkowńikůw',
 'listusers-editsonly' => 'Pokoż yno użytkowńikůw kere majům sprowjyńa',
@@ -1594,8 +1581,8 @@ Niżyj sům informacyje ze [$2 zajty popisu] tygo pliku.',
 
 # Book sources
 'booksources' => 'Kśůnžki',
-'booksources-search-legend' => 'Šnupej za zdřůduůma kśiůnžkowymi',
-'booksources-go' => 'Pokož',
+'booksources-search-legend' => 'Sznupej za zdrzůdłůma kśůnżkowymi',
+'booksources-go' => 'Pokoż',
 'booksources-text' => 'Půńiżyj je lista uodnośńikůw do inkszych witryn, kere pośredńiczům we sprzedaży nowych a używanych buchůw, a tyż můgům mjeć dolsze informacyje uo poszukiwanym bez ćebje buchu.',
 'booksources-invalid-isbn' => 'Podany numer ISBN zostoł rozpoznany kej felerny. Sprowdź aże podany numer je zgodny s numerym kery je we zdrzůdle.',
 
@@ -1618,9 +1605,6 @@ Możesz zawyńźić liczba wyńikůw wybjerajůnc typ rejeru, mjano użytkowńik
 'allpagesto' => 'Zajty uo titlach kere na zadku majům:',
 'allarticles' => 'Wszyske zajty',
 'allinnamespace' => 'Wszyjstke zajty (we przestrzyńi mjan $1)',
-'allnotinnamespace' => 'Wszyjstke zajty (ino bes przestrzyńi mjan $1)',
-'allpagesprev' => 'Poprzedńo',
-'allpagesnext' => 'Nastympno',
 'allpagessubmit' => 'Ukoż',
 'allpagesprefix' => 'Ukoż artikle s prefiksym:',
 'allpagesbadtitle' => 'Podane mjano je felerne, zawjera prefiks mjyndzyprojektowy abo mjyndzyjynzykowy. Może uůne tyż zawjerać jako buchsztaba abo inksze znaki, kerych ńy wolno używać we mjanach.',
@@ -1904,7 +1888,6 @@ Możesz mjeć felerny link abo wersyjo můgła zostać wćepano nazod, abo wyće
 'undeletebtn' => 'Uodtwůrz',
 'undeletelink' => 'ukoż abo uodtwůrz',
 'undeleteviewlink' => 'ukoż',
-'undeletereset' => 'Wyčyść',
 'undeleteinvert' => 'Zaznocz na uopy',
 'undeletecomment' => 'Powůd wćepańo nazod:',
 'undeletedrevisions' => 'Wćepano nazod {{PLURAL:$1|1 wersyja|$1 wersyje|$1 wersyji}}',
@@ -1947,7 +1930,7 @@ $1',
 'month' => 'Uod mjeśůnca (i downiyjše):',
 'year' => 'Uod roku (i dowńijše):',
 
-'sp-contributions-newbies' => 'Pokož wkuod ino uod nowych užytkowńikůw',
+'sp-contributions-newbies' => 'Pokoż ajnzac ino uod nowych użytkowńikůw',
 'sp-contributions-newbies-sub' => 'Dlo nowych užytkowńikůw',
 'sp-contributions-newbies-title' => 'Wkłod nowych użytkowńików',
 'sp-contributions-blocklog' => 'zawarća',
@@ -1956,17 +1939,17 @@ $1',
 'sp-contributions-logs' => 'rejer dźołońo',
 'sp-contributions-talk' => '↓ dyskusyjo',
 'sp-contributions-userrights' => 'Zařůndzańy prowami užytkowńikůw',
-'sp-contributions-search' => 'Šnupej za wkuodym',
+'sp-contributions-search' => 'Sznupej za wkłodym',
 'sp-contributions-username' => 'Adres IP abo mjano użytkowńika',
 'sp-contributions-toponly' => 'Ukoż jyno ůostanie wersyje',
-'sp-contributions-submit' => 'Šnupej',
+'sp-contributions-submit' => 'Sznupej',
 
 # What links here
 'whatlinkshere' => 'Co sam linkuje',
 'whatlinkshere-title' => 'Zajty, kere linkujům na "$1"',
 'whatlinkshere-page' => 'Zajta:',
 'linkshere' => "Nastympůjůnce zajty sóm adrésůwane do '''[[:$1]]''':",
-'nolinkshere' => "Žodno zajta ńy je adrésowana do '''[[:$1]]'''.",
+'nolinkshere' => "Å»odno zajta ńy je adrésowana do '''[[:$1]]'''.",
 'nolinkshere-ns' => "Žodno zajta ńy je adresowano do '''[[:$1]]''' we wybrany přestřyni mjan.",
 'isredirect' => 'překerowujůnca zajta',
 'istemplate' => 'dołůnczony muster',
@@ -1989,7 +1972,6 @@ Podej powůd (np. umjeszczajůnc mjana zajtůw, na kerych dopuszczůno śe wanda
 'ipadressorusername' => 'Adres IP abo mjano użytkowńika',
 'ipbexpiry' => 'Wygaso:',
 'ipbreason' => 'Čymu:',
-'ipbreasonotherlist' => 'Inkszy powůd',
 'ipbreason-dropdown' => '*Nojczynstsze powody zawjerańo uod sprawjyń
 ** Ataki na inkszych użytkowńikůw
 ** Naruszyńy praw autorskych
@@ -2006,8 +1988,6 @@ Podej powůd (np. umjeszczajůnc mjana zajtůw, na kerych dopuszczůno śe wanda
 'ipbsubmit' => 'Zawřij uod sprowjyń tygo užytkowńika',
 'ipbother' => 'Ikszy czas',
 'ipboptions' => '2 godźiny:2 hours,1 dźyń:1 day,3 dńi:3 days,1 tydźyń:1 week,2 tydńe:2 weeks,1 mjeśůnc:1 month,3 mjeśůnce:3 months,6 mjeśůncůw:6 months,1 rok:1 year,nawdy:infinite',
-'ipbotheroption' => 'inkšy',
-'ipbotherreason' => 'Inkšy powůd:',
 'ipbhidename' => 'Schrůń mjano użytkowńika/adres IP w rejerze zawarć, na liśće aktywnych zawarć i liśće użytkowńikůw',
 'ipbwatchuser' => 'Dowej pozůr na zajta uosobisto i zajta godki tygo užytkowńika',
 'ipb-change-block' => 'Zmjyń sztalowańa zawarća uod sprowjyń',
@@ -2071,7 +2051,6 @@ Sprawa noležy wyjaśńić s dostawcům Internetu abo půmocům techńičnům in
 'sorbsreason' => 'Twůj adres IP znojdowo śe na liśće serwerůw open proxy w DNSBL, užywanej bez {{GRAMMAR:B.lp|{{SITENAME}}}}.',
 'sorbs_create_account_reason' => 'Twůj adres IP znojdowo śe na liśće serwerůw open proxy w DNSBL, užywanej bez {{GRAMMAR:B.lp|{{SITENAME}}}}.
 Ńy možeš utwořić kůnta',
-'cant-block-while-blocked' => 'Ńy możesz zawjyrać uod sprowjyń inkszych użytkowńikůw, jak sam jeżeś uod ńich zawarty.',
 
 # Developer tools
 'lockdb' => 'Zawryj baza danych',
@@ -2113,7 +2092,6 @@ To może być drastyczno abo ńyprzewidywalno zmjano, jak przećepńysz jako pop
 *ńy ma sam zajty godki o takiym mjańe
 W takiych razach tekst godki třa přećepać, a jak třeba to i pouůnčyć z tym co juž sam jest, rynčńe. Abo možeš sie namyślić i nie přećepywać wcale ("checkbox" půnižyi).',
 'movearticle' => 'Przećiś artikel:',
-'movenologin' => 'Ńy jeżeś zalůgowany',
 'movenologintext' => 'Muśyš być zarejerowanym i [[Special:UserLogin|zalůgowanym]] užytkowńikym coby můc přećepnůńć zajta.',
 'movenotallowed' => 'Ńy moš uprownień do přećepywańo zajtůw.',
 'cant-move-user-page' => 'Ńy mosz uprowńyń do przekludzańo zajtůw użytkowńikůw (wyjůntkym sům jejich podstrony).',
@@ -2126,8 +2104,6 @@ W takiych razach tekst godki třa přećepać, a jak třeba to i pouůnčyć z t
 'articleexists' => 'Artikel ze takym mjanym już je, abo mjano je złe.
 Wybjer inksze mjano.',
 'cantmove-titleprotected' => 'Ńy możesz przećepnůńć zajty, beztuż co jeij nowe mjano je ńydozwolůne skuli zabezpjeczyńo przed utworzyńym',
-'talkexists' => 'Zajta artikla zostoła przećepano, nale zajta godki ńy - zajta godki uo nowym mjańe już sam jest. Połuncz, prosza, teksty uobydwůch godek rynczńe.',
-'movedto' => 'przećiśńjynto ku',
 'movetalk' => 'Przećiś godke, jak możno.',
 'move-subpages' => 'Přećepńij podzajty',
 'move-talk-subpages' => 'Jeli je to możliwe przekludź wszyjstke zajty godki podzajtůw',
@@ -2275,7 +2251,7 @@ Wšyjstke uoperacyje importu transwiki sům uodnotowywane w [[Special:Log/import
 'tooltip-feed-rss' => 'Kanau RSS do tyj zajty',
 'tooltip-feed-atom' => 'Kanoł Atom lo tyj zajty',
 'tooltip-t-contributions' => 'Ukoż ajnzace tygo używocza',
-'tooltip-t-emailuser' => 'WyÅ\9blij e-brif do tygo užytkowńika',
+'tooltip-t-emailuser' => 'WyÅ\9blij e-brif do tygo użytkowńika',
 'tooltip-t-upload' => 'Wćepej plik na serwer',
 'tooltip-t-specialpages' => 'Lista wszyjskich ekstra zajtůw',
 'tooltip-t-print' => 'Wersyjo do durku',
@@ -2664,10 +2640,6 @@ Eli plik był modyfikowany, dane mogům w tajli ńy być we zgodźe ze parametr
 'exif-gpsdirection-t' => 'kerůnek geůgrafičny',
 'exif-gpsdirection-m' => 'kerůnek magnetyčny',
 
-# External editor support
-'edit-externally' => 'Sprowjej tyn plik bez eksterno aplikacyjo',
-'edit-externally-help' => '(Zobocz [https://www.mediawiki.org/wiki/Manual:External_editors instrukcyje sztalowańo eksternych edytorůw], kaj je uo tym wjyncy naszkryflůne)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'do kupy',
 'namespacesall' => 'wszyjske',
@@ -2695,7 +2667,6 @@ Kod može być předawńůny',
 'confirmemail_success' => 'Adres e-brif zostou potwjerdzůny.
 Možeš śe zalůgować i kořistać s šeršygo wachlařa fůnkcjůnalnośći wiki.',
 'confirmemail_loggedin' => 'Twůj adres e-brif zostou zweryfikowany.',
-'confirmemail_error' => 'Wystůmpiuy felery při škryflańu potwjerdzyńo.',
 'confirmemail_subject' => '{{SITENAME}} - weryfikacyjo adresa e-brif',
 'confirmemail_body' => 'Ktoś, uůnčůnc śe s kůmputra uo adreśe IP $1,
 zarejerowoú we {{GRAMMAR:MS.lp|{{SITENAME}}}} kůnto „$2” i podou ńińijšy adres e-mail.
index c2d9245..05c0b60 100644 (file)
@@ -23,6 +23,7 @@
  * @author Planemad
  * @author Sank
  * @author Shanmugamp7
+ * @author Shirayuki
  * @author Sodabottle
  * @author Sundar
  * @author Surya Prakash.S.A.
@@ -107,7 +108,6 @@ $messages = array(
 'tog-minordefault' => 'இயல்பிருப்பாக அனைத்து தொகுப்புகளையும் சிறியது எனக் குறித்துக்கொள்.',
 'tog-previewontop' => 'தொகுப்புப் பெட்டிக்கு முன்பு முன்தோற்றத்தைக் காட்டு',
 'tog-previewonfirst' => 'முதல் தொகுப்பில் முன்தோற்றத்தைக் காட்டு',
-'tog-nocache' => 'உலாவி பக்க இடைமாற்றை முடக்கு',
 'tog-enotifwatchlistpages' => 'நான் கவனிக்கும் பக்கம் அல்லது கோப்பு மாற்றப்பட்டால் எனக்கு மின்னஞ்சல் செய்க',
 'tog-enotifusertalkpages' => 'என் பயனர் பேச்சுப் பக்கம் மாற்றப்பட்டால் எனக்கு மின்னஞ்சல் செய்',
 'tog-enotifminoredits' => 'பக்கம் மற்றும் கோப்புகளுக்கான சிறு தொகுப்புக்கள் குறித்தும் எனக்கு மின்னஞ்சல் செய்யவும்',
@@ -242,7 +242,6 @@ $messages = array(
 'qbedit' => 'தொகு',
 'qbpageoptions' => 'பக்க விருப்பத் தேர்வுகள்',
 'qbmyoptions' => 'என் விருப்பத்தேர்வுகள்',
-'qbspecialpages' => 'சிறப்புப் பக்கங்கள்',
 'faq' => 'அடிக்கடி கேட்கப்படும் கேள்விகள்',
 'faqpage' => 'Project:அடிக்கடி கேட்கப்படும் கேள்விகள்',
 
@@ -362,7 +361,7 @@ $1',
 'youhavenewmessages' => 'உங்களுக்குப் $1 உள்ளன ($2).',
 'youhavenewmessagesfromusers' => 'உங்களுக்கு $1 {{PLURAL:$3|வேறொரு பயனரிடம்|$3 பயனர்களிடம்}} இருந்து உள்ளது ($2).',
 'youhavenewmessagesmanyusers' => 'உங்களுக்கு பல பயனர்களிடமிருந்து $1 பதிய செய்திகள்  உள்ளன ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ஒரு புதிய செய்தி|புதிய செய்திகள்}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ஒரு புதிய செய்தி|999=புதிய செய்திகள்}}',
 'newmessagesdifflinkplural' => 'கடைசி {{PLURAL:$1|மாற்றம்|மாற்றங்கள்}}',
 'youhavenewmessagesmulti' => '$1 இல் உங்களுக்கு புதிய செய்திகள் காத்திருக்கின்றன',
 'editsection' => 'தொகு',
@@ -451,9 +450,6 @@ $1',
 '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' => 'செயற்பாடு கட்டுப்படுத்தப்பட்டது',
@@ -572,7 +568,7 @@ $1',
 'passwordtooshort' => 'கடவுச்சொற்களில் குறைந்தது {{PLURAL:$1|1 எழுத்து முதல் |$1 எழுத்துக்களாவது}} இருக்க வேண்டும்.',
 'password-name-match' => 'உங்கள் பயனர் பெயரிலிருந்து உங்கள் கடவுச்சொல் முற்றிலும் மாறுபட்டிருக்க வேண்டும்.',
 'password-login-forbidden' => 'இந்த பயனர்பெயர் மற்றும் கடவுச்சொல்லை உபயோகிப்பது தடைசெய்யப்பட்டுள்ளது.',
-'mailmypassword' => 'பà¯\81திய à®\95à®\9fவà¯\81à®\9aà¯\8d à®\9aà¯\8aலà¯\8dலà¯\8aனà¯\8dà®±à¯\88 à®®à®¿à®©à¯\8dனà®\9eà¯\8dà®\9aலà¯\8d à®\9aà¯\86யà¯\8dயவà¯\81à®®à¯\8d',
+'mailmypassword' => 'à®\95à®\9fவà¯\81à®\9aà¯\8dà®\9aà¯\8aலà¯\8dலà¯\88 à®®à¯\80à®\9fà¯\8dà®\9fà®®à¯\88',
 'passwordremindertitle' => '{{SITENAME}} தளத்திலிருந்தான கடவுச்சொல் நினைவூட்டல்',
 'passwordremindertext' => 'யாரோ ஒருவர் (நீங்களாக இருக்கலாம், IP முகவரி $1 இலிருந்து)
 {{SITENAME}} ($4) தளத்திற்கு புதிய கடவுச்சொல் ஒன்று அனுப்பும்படி கோரியுள்ளார். பயனர் "$2" க்கான தற்காலிக கடவுச்சொல் உருவாக்கப்பட்டுள்ளது. "$3" இதுவே அந்த கடவுச்சொல்லாகும். இந்த நடவடிக்கையே தாங்கள் எண்ணியதாக இருந்தால், தாங்கள் இப்பொழுது புகுபதிகை செய்து கடவுச்சொல்லை மாற்றிக்கொள்ளவும்.
@@ -620,7 +616,7 @@ $1',
 'user-mail-no-body' => 'வெற்று அல்லது மிகவும் சிறிய அளவுள்ள மின்னஞ்சலை அனுப்ப முயற்சித்துள்ளீர்.',
 
 # Change password dialog
-'resetpass' => 'கடவுச்சொல்லை மாற்றியமை',
+'changepassword' => 'கடவுச்சொல்லை மாற்று',
 'resetpass_announce' => 'நீங்கள் தற்காலிக மின்னஞ்சல் குறியீட்டுடன் புகுபதிகை செய்துள்ளீர்கள். புகுபதிகையை நிறைவுச் செய்ய புதியக் கடவுச் சொல்லொன்றை இங்கே தட்டசிடுக:',
 'resetpass_header' => 'கணக்கிற்கான கடவுச்சொல்லை மாற்றியமை',
 'oldpassword' => 'பழைய கடவுச்சொல்:',
@@ -656,7 +652,7 @@ $2
 {{PLURAL:$3|This temporary password|These temporary passwords}} காலாவதி ஆக உள்ள நாட்கள் {{PLURAL:$5|one day|$5 days}}.
 நீங்கள் புதிய கடவுச்சொல்லை இப்போதே தேர்வு செய்து வேண்டும், அல்லது வேறு யாராவது இந்த கோரிக்கையை அனுப்பியிருந்தாலோ
 அல்லது உங்கள் மூல கடவுச்சொல் நினைவில் இருந்தாலோ இதை மாற்ற வேண்டிய அவசியம் இல்லை,நீங்கள் இந்த தகவலை புறக்கணித்துவிட்டுஉங்கள் பழைய கடவுச்சொல்லையே பயன்படுத்திக்கொள்ளலாம்.',
-'passwordreset-emailtext-user' => 'பயனரà¯\8d $1 {{SITENAME}} à®²à®¿à®°à¯\81நà¯\8dதà¯\81 à®¨à®¿à®©à¯\88வà¯\81பà®\9fà¯\81தà¯\8dதி à®\92னà¯\8dà®±à¯\88 à®\95à¯\80à®´à¯\8dவரà¯\81à®®à¯\8d à®\89à®\99à¯\8dà®\95ளà¯\8d à®\95ணà®\95à¯\8dà®\95à¯\81 à®µà®¿à®µà®°à®\99à¯\8dà®\95ளை {{SITENAME}}
+'passwordreset-emailtext-user' => 'பயனரà¯\8d $1 {{SITENAME}} à®²à®¿à®°à¯\81நà¯\8dதà¯\81 à®\95à®\9fவà¯\81à®\9aà¯\8dà®\9aà¯\8aலà¯\8d à®®à¯\80à®\9fà¯\8dà®\9fà®®à¯\88யினை {{SITENAME}}
 ($4) க்கு கோரியுள்ளார்.பின்வரும் பயனர்  {{PLURAL:$3|account is|accounts are}}
  இந்த மின்னஞ்சல் முகவரியுடன் இணைக்கப்பட்டுள்ளது.
 $2
@@ -975,10 +971,6 @@ $1 எனும் பயனரையோ வேறு [[{{MediaWiki:Grouppage-sy
 'revisiondelete' => 'திருத்தங்களை நீக்கு/மீட்டெடு',
 'revdelete-nooldid-title' => 'செல்லுபடியற்ற இலக்குத் திருத்தம்',
 'revdelete-nooldid-text' => 'நீங்கள் இச்செயற்பாட்டை மேற்கொள்ள வேண்டிய இலக்குத் திருத்தம் ஒன்றையாவது குறிப்பிடவில்லை அல்லது குறித்தவாரான திருத்தமொன்று இல்லை அல்லது நடைமுறையிலுள்ள திருத்தமொன்ற மறைக்க எத்தனிக்கிறீர்கள்.',
-'revdelete-nologtype-title' => 'பதிகை வகை தரப்படவில்லை',
-'revdelete-nologtype-text' => 'இந்தச்செயலைச் செய்வதற்குத் தாங்கள் எந்த குறிப்புப் பக்கத்தில் குறித்து வைக்கவேண்டும் என்று தெரிவிக்கவில்லை.',
-'revdelete-nologid-title' => 'செல்லுபடியற்ற பதிகைப் பதிவு',
-'revdelete-nologid-text' => 'நீங்கள் இந்த  செயல்பாட்டிற்கு  இலக்கு குறிப்பேடு ஒன்றை குறிப்பிட வில்லை  அல்லது குறிப்பிட்ட நிகழ்வு இல்லை',
 'revdelete-no-file' => 'தாங்கள் குறிப்பிட்ட கோப்புக்கள் இங்கில்லை.',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" கோப்பின் $2-தேதி,  $3-நேரத்தில் நீக்கப்பட்ட திருத்தத்தை தாங்கள் காணவேண்டுமா ?',
 'revdelete-show-file-submit' => 'ஆம்',
@@ -996,12 +988,12 @@ $1 எனும் பயனரையோ வேறு [[{{MediaWiki:Grouppage-sy
 'revdelete-hide-text' => 'திருத்த உரையை மறை',
 'revdelete-hide-image' => 'கோப்பின் உள்ளடக்கங்களை மறை',
 'revdelete-hide-name' => 'செயற்பாட்டையும் இலக்கையும் மறை',
-'revdelete-hide-comment' => 'தà¯\8aà®\95à¯\81பà¯\8dபà¯\81à®\9aà¯\8d à®\9aà¯\81à®°à¯\81à®\95à¯\8dà®\95தà¯\8dதà¯\88 à®®à®±à¯\88',
-'revdelete-hide-user' => 'தà¯\8aà®\95à¯\81பà¯\8dபவரினà¯\8d à®\90.பி./பயனரà¯\8dபà¯\86யரà¯\88 à®®à®±à¯\88',
+'revdelete-hide-comment' => 'தà¯\8aà®\95à¯\81பà¯\8dபà¯\81à®\9aà¯\8d à®\9aà¯\81à®°à¯\81à®\95à¯\8dà®\95à®®à¯\8d',
+'revdelete-hide-user' => 'தà¯\8aà®\95à¯\81பà¯\8dபவரினà¯\8d à®\90.பி./பயனரà¯\8dபà¯\86யரà¯\8d',
 'revdelete-hide-restricted' => 'குறிப்புக்களை அதிகாரிகள் உட்பட எல்லோரிடமிருந்தும் மறைத்துவிடு (காட்டத்தேவையில்லை).',
 'revdelete-radio-same' => '(தயவுசெய்து மாற்ற வேண்டாம்)',
-'revdelete-radio-set' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
-'revdelete-radio-unset' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-set' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-unset' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
 'revdelete-suppress' => 'நிர்வாகிகள் உட்பட இனவரிடமிருந்தாக தரவுகளை அடக்கு',
 'revdelete-unsuppress' => 'மீட்கப்பட்ட திருத்தங்கள் மீதான கட்டுப்பாடுகளை நீக்கு',
 'revdelete-log' => 'காரணம்:',
@@ -1013,8 +1005,6 @@ $1",
 'logdelete-failure' => "''' குறிப்பேடு பார்க்கூடிய நிலையை அமைக்க இயலவில்லை:'' '
 $1",
 'revdel-restore' => 'பார்வையியலுமையை மாற்றுக',
-'revdel-restore-deleted' => 'நீக்கப்பட்ட மாற்றங்கள்',
-'revdel-restore-visible' => 'வெளிப்படையாகத்தெரியும் மாற்றங்கள்',
 'pagehist' => 'பக்க வரலாறு',
 'deletedhist' => 'நீக்கப்பட்ட வரலாறு',
 'revdelete-hide-current' => '$2, $1: தேதியிடப்பட்ட உருப்படியை மறைப்பதில் பிழை ஏற்பட்டுள்ளது.இது நடப்பு பரிசீலனை.
@@ -1085,12 +1075,8 @@ $1",
 # 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}}',
@@ -1099,10 +1085,8 @@ $1",
 'nextn-title' => 'அடுத்த $1 {{PLURAL:$1|முடிவு|முடிவுகள்}}',
 'shown-title' => 'ஒரு பக்கத்திற்கு $1 {{PLURAL:$1|முடிவு|முடிவுகள்}} காட்டவும்',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) பக்கங்களைப் பார்.',
-'searchmenu-legend' => 'தேடல் விருப்பு',
 'searchmenu-exists' => "'''\"[[:\$1]]\" என்னும் பெயருடைய பக்கம் இந்த விக்கியில் உள்ளது'''",
 'searchmenu-new' => "'''\"[[:\$1]]\" பக்கத்தை இந்த விக்கியில் உருவாக்கவும்!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|இந்த முன்னொட்டுடன் உலவித்தேடு]]',
 'searchprofile-articles' => 'உள்ளடக்கப் பக்கங்களின் பட்டியல்',
 'searchprofile-project' => 'உதவி மற்றும் திட்டப் பக்கங்கள்',
 'searchprofile-images' => 'பல்லூடகம்',
@@ -1125,22 +1109,16 @@ $1",
 'search-interwiki-default' => '$1 தளத்தின் முடிவுகள்:',
 'search-interwiki-more' => '(மேலும்)',
 'search-relatedarticle' => 'தொடர்புடையவை',
-'mwsuggest-disable' => 'தேடல் பரிந்துரைகளை முடக்கு',
 'searcheverything-enable' => 'அனைத்துப் பெயர்வெளிகளிலும் தேடவும்',
 'searchrelated' => 'தொடர்புடையவை',
 'searchall' => 'அனைத்தும்',
 'showingresults' => "'''$2''' இலிருந்து தொடங்கும்  {{PLURAL:$1|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$1''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
 'showingresultsnum' => "'''$2''' இலிருந்து தொடங்கும்  {{PLURAL:$3|'''1''' முடிவு கீழே காட்டப்பட்டுள்ளது|'''$3''' முடிவுகள் கீழே காட்டப்பட்டுள்ளன}}.",
 'showingresultsheader' => "'''$4''' இற்கான {{PLURAL:$5|முடிவு  '''$3''' இல் '''$1'''|முடிவுகள்'''$3''' இல்  '''$1 - $2''' }}",
-'nonefound' => "<strong>குறிப்பு</strong>:சில பெயர்வெளிகள் மட்டுமே இயல்பிருப்பாக தேடப்படும்.
-
-அனைத்து உள்ளடக்கங்களையும் (பேச்சு பக்கங்கள், வார்புருகள் மற்றும் பல) காண ''all:''  என்பதை உங்கள் கேள்விக்கு முன்னொட்டி முயற்சிக்கவும் அல்லது விரும்பப்படும் பெயர்வெளியை முன்னொட்டியாக உபயோகிக்கவும்.",
 'search-nonefound' => 'உங்கள் வினவலுக்கான முடிவுகள் எதுவும் இல்லை.',
-'powersearch' => 'மேம்படுத்தப்பட்ட தேடல்',
 'powersearch-legend' => 'மேம்பட்ட தேடல்',
 'powersearch-ns' => 'பெயர்வெளிகளில் தேடவும்',
 'powersearch-redir' => 'வழிமாற்றுகளைப் பட்டியலிடவும்',
-'powersearch-field' => 'தேடு',
 'powersearch-togglelabel' => 'சரிபார்க்கவும்:',
 'powersearch-toggleall' => 'அனைத்தும்',
 'powersearch-togglenone' => 'ஏதுமில்லை',
@@ -1152,7 +1130,6 @@ $1",
 'preferences' => 'விருப்பங்கள்',
 'mypreferences' => 'விருப்பத்தேர்வுகள்',
 'prefs-edits' => 'தொகுப்புகளின் எண்ணிக்கை:',
-'changepassword' => 'கடவுச்சொல்லை மாற்று',
 'prefs-skin' => 'முகப்புறை',
 'skin-preview' => 'முன்தோற்றம்',
 'datedefault' => 'விருப்பத்தேர்வுகள் இல்லை',
@@ -1175,13 +1152,11 @@ $1",
 'prefs-email' => 'மின்னஞ்சல் விருப்பத்தேர்வுகள்',
 'prefs-rendering' => 'தோற்றம்',
 'saveprefs' => 'சேமி',
-'resetprefs' => 'சேமிக்காத மாற்றங்கள் நீக்குக',
 'restoreprefs' => 'எல்லோருக்கும் பொதுவான வடிவமைப்பைத் திரும்பக்கொண்டுவரவும் (எல்லா பிரிவுகளிலும்).',
 'prefs-editing' => 'தொகுத்தல்',
 'rows' => 'நிரைகள் (கிடை வரிசைகள்):',
 'columns' => 'நிரல்கள்',
 'searchresultshead' => 'தேடுக',
-'resultsperpage' => 'ஒரு பக்கத்துக்குக் காட்டப்படவேண்டிய அடிகள்',
 'stub-threshold' => '<a href="#" class="stub">stub link</a> சீர்படுத்தலுக்கான எல்லை (பைட்டுகள்):',
 'stub-threshold-disabled' => 'செயலிழக்கம் செய்யப்பட்டுள்ளது',
 'recentchangesdays' => 'அண்மைய மாற்றங்களில் காட்ட வேண்டிய நாட்களின் எண்ணிக்கை:',
@@ -1193,7 +1168,6 @@ $1",
 'localtime' => 'உள்ளூர் நேரம்:',
 'timezoneuseserverdefault' => 'விக்கி இயல்புநிலையை உபயோகிக்கவும் ($1)',
 'timezoneuseoffset' => 'மற்றவை (வித்தியாசத்தைக் குறிப்பிடவும்)',
-'timezoneoffset' => 'நேர இடைவெளி¹:',
 'servertime' => 'வழங்கி நேரம்:',
 'guesstimezone' => 'உலாவியிலிருந்து நிரப்பு',
 'timezoneregion-africa' => 'ஆப்ரிக்கா',
@@ -1237,7 +1211,9 @@ $1",
 'gender-unknown' => 'நான் குறிப்பிட விரும்பவில்லை',
 'gender-male' => 'ஆண்',
 'gender-female' => 'பெண்',
-'prefs-help-gender' => 'விருப்பத் தேர்வுதான்: ஒருவரைக் குறிப்பிடும்பொழுது, அவருடைய பால் சரியானதாக இருக்க மென்கலம் பயன்படுத்தும் தகவல். இத்தகவல் பொதுவில் கிடைக்கும்படி இனி இருக்கும்.',
+'prefs-help-gender' => 'விருப்பத்தேர்வை அமைப்பது இங்கள் விருப்பம்.
+ஒருவரைக் குறிப்பிடும்பொழுது, அவருடைய பால் சரியானதாக இருக்க மென்கலம் பயன்படுத்தும் தகவல்.
+இத்தகவல் பொதுவில் கிடைக்கும்படி இனி இருக்கும்.',
 'email' => 'மின்னஞ்சல்',
 'prefs-help-realname' => 'உண்மையான பெயர் கட்டாயமற்றது. நீங்கள் இதை கொடுத்தால் உங்கள் ஆக்கங்களுக்கான உரிமையளிப்புகளின் போது இது பயன்படும்.',
 'prefs-help-email' => 'மின்னஞ்சல் விருப்பத் தேர்வு,  ஆனால் உங்கள் கடவுச்சொல் உங்களுக்கு நினைவில்லையென்றால், புதிய கடவுச்சொல்லை மீட்டமைக்க தேவைப்படும்.',
@@ -1354,7 +1330,7 @@ $1",
 'right-ipblock-exempt' => 'ஐ.பி (IP) தடுப்புகளையும், தானியங்கியான தடுப்புகளையும், வரம்புவரையான தடுப்புகளையும் மீறிச் செயல்படுக.',
 'right-proxyunbannable' => 'தானாக தடுப்புகப்பட்ட  Proxies ஐ மீறு.',
 'right-unblockself' => 'தங்களே தடுப்பு நீக்கு',
-'right-protect' => 'பாதுகாப்பு மட்டங்களை மாற்று மற்றும் பாதுகாக்கப்பட்ட பக்கங்களை திருத்து',
+'right-protect' => 'பாதà¯\81à®\95ாபà¯\8dபà¯\81 à®®à®\9fà¯\8dà®\9fà®\99à¯\8dà®\95ளà¯\88 à®®à®¾à®±à¯\8dà®±à¯\81 à®®à®±à¯\8dà®±à¯\81à®®à¯\8d à®¤à¯\8aà®\9fà®°à¯\8d-பாதà¯\81à®\95ாà®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9f à®ªà®\95à¯\8dà®\95à®\99à¯\8dà®\95ளà¯\88 à®¤à®¿à®°à¯\81தà¯\8dதà¯\81',
 'right-editprotected' => '( வடிவமான பாதுகாப்பு இல்லாமல்) பாதுகாக்கப்பட்ட பக்கங்களை திருத்து',
 'right-editinterface' => 'பயனர் இடைமுகப்பை தொகுக்கவும்',
 'right-editusercssjs' => 'மற்ற பயனர்களின் CSS மற்றும் JavaScript கோப்புகளை திருத்து',
@@ -1435,7 +1411,6 @@ $1",
 'recentchanges-label-bot' => 'இந்த தொகுப்பானது ஒரு தானியங்கியால் செய்யப்பட்டதாகும்',
 'recentchanges-label-unpatrolled' => 'இந்த  தொகுப்பு  இன்னும் ரோந்திடப்படவில்லை',
 'recentchanges-legend-newpage' => '$1 - புதிய பக்கம்',
-'rcnote' => "கீழே காணப்படுவது $4 ஆம் தேதி $5 மணிக்கு் உள்ளபடி கடைசி {{PLURAL:$2|24 மணிகளில்|'''$2''' நாட்களில்}} செய்யப்பட்ட {{PLURAL:$1|'''ஒரு''' மாற்றம்|'''$1''' கடைசி மாற்றங்கள்}} ஆகும்.",
 'rcnotefrom' => "கீழே காணப்படுவது '''$2''' இலிருந்து செய்யப்பட்ட மாற்றங்களாகும் ('''$1''' வரைக் காட்டப்பட்டுள்ளது).",
 'rclistfrom' => '$1 தொடக்கம் செய்யப்பட்ட புதிய மாற்றங்களைக் காட்டவும்',
 'rcshowhideminor' => 'சிறிய தொகுப்புகளை $1',
@@ -1699,6 +1674,7 @@ $1',
 'listfiles_size' => 'அளவு',
 'listfiles_description' => 'விளக்கம்',
 'listfiles_count' => 'பதிப்புக்கள்',
+'listfiles-latestversion' => 'தற்போதய பதிப்பு',
 'listfiles-latestversion-yes' => 'ஆம்',
 'listfiles-latestversion-no' => 'இல்லை',
 
@@ -1877,10 +1853,8 @@ $1',
 'protectedpages' => 'காக்கப்பட்ட பக்கங்கள்',
 'protectedpages-indef' => 'காலவரையற்ற காப்பு (protections) மட்டும்',
 'protectedpages-cascade' => 'வடிவமான காப்புகள் (protections) மட்டும்',
-'protectedpagestext' => 'பின்வரும் பக்கங்கள் தொகுக்கப்படுவதிலிந்தும் நகர்த்தப்படுவதிலிருந்தும் காக்கப்பட்டுள்ளது',
 'protectedpagesempty' => 'இக்காரணிகளுடன் காக்கப்பட்டப் பக்கங்கள் கிடையாது.',
 'protectedtitles' => 'காக்கப்பட்ட தலைப்புகள்',
-'protectedtitlestext' => 'பின்வரும் தலைப்புகள் உருவாக்கப்படுவதிலிருந்து காக்கப்பட்டுள்ளது',
 'protectedtitlesempty' => 'இக்காரணிகளுடன் காக்கப்பட்டப் தலைப்புகள் எதுவும் கிடையாது.',
 'listusers' => 'பயனர் அட்டவணை',
 'listusers-editsonly' => 'தொகுத்த பயனர்களை மட்டும் காட்டு',
@@ -1930,9 +1904,6 @@ $1',
 'allpagesto' => 'இவ்வெழுத்துக்களில் முடிவடையும் பக்கங்களைக் காட்டு',
 'allarticles' => 'அனைத்துக் கட்டுரைகள்',
 'allinnamespace' => 'அனைத்து பக்கங்கள் ($1 பெயர்வெளியில்)',
-'allnotinnamespace' => 'அனைத்து பக்கங்கள் ($1 பெயர்வெளி தவிர்த்து)',
-'allpagesprev' => 'முந்திய',
-'allpagesnext' => 'அடுத்தது',
 'allpagessubmit' => 'செல்',
 'allpagesprefix' => 'பின்வரும் முன்னொட்டு உடைய பக்கங்களை காட்டு:',
 'allpagesbadtitle' => 'கொடுக்கப்பட்ட தலைப்பு செல்லுபடியற்றது அல்லது பிழையான விக்கியிடை அல்லது மொழி முன்னொட்டைக் கொண்டுள்ளது. இது தலைப்புக்களில் பயன்படுத்த முடியாத எழுத்துக்களையும் கொண்டிருக்கலாம்.',
@@ -2160,7 +2131,7 @@ $NEWPAGE
 
 # Protect
 'protectlogpage' => 'காப்புப் பதிகை',
-'protectlogtext' => '!!FUzZY!!பின்வருவது பக்க திறப்புக்களதும் பூட்டுக்களதும் பட்டியலாகும். தற்போது நடைமுறையிலுள்ள காக்கப்பட்டப் பக்கங்களைக் காண [[Special:ProtectedPages|காக்கப்பட்ட பக்கங்களின் பட்டியலைப்]] பார்க்கவும்.',
+'protectlogtext' => 'பின்வருவது பக்க திறப்புக்களதும் பூட்டுக்களதும் பட்டியலாகும். தற்போது நடைமுறையிலுள்ள காக்கப்பட்டப் பக்கங்களைக் காண [[Special:ProtectedPages|காக்கப்பட்ட பக்கங்களின் பட்டியலைப்]] பார்க்கவும்.',
 'protectedarticle' => '"[[$1]]" காக்கப்பட்டது',
 'modifiedarticleprotection' => '"[[$1]]" பக்கத்திற்கான காப்பின் அளவு மாற்றப்பட்டது',
 'unprotectedarticle' => '"[[$1]]" பக்கத்தின் காப்பு நீக்கப்பட்டது',
@@ -2246,7 +2217,6 @@ $NEWPAGE
 'undeletebtn' => 'மீட்டெடு',
 'undeletelink' => 'பார்க்க/மீட்டெடு',
 'undeleteviewlink' => 'பார்வையிடு',
-'undeletereset' => 'மீட்டமைக்க',
 'undeleteinvert' => 'தேர்வு செய்ததை ரத்து  செய்',
 'undeletecomment' => 'காரணம்:',
 'undeletedrevisions' => '{{PLURAL:$1|1 திருத்தம் மீட்கப்பட்டது|$1 திருத்தங்கள் மீட்கப்பட்டன}}',
@@ -2334,14 +2304,12 @@ $1',
 'block' => 'பயனரைத் தடைசெய்',
 'unblock' => 'பயனர் தடையை நீக்கு',
 'blockip' => 'பயனரைத் தடு',
-'blockip-title' => 'பயனரைத் தடு',
 'blockip-legend' => 'பயனரைத் தடு',
 'blockiptext' => 'ஒரு குறிப்பிட்ட ஐபி முகவரி அல்லது பயனரிடமிருந்து எழுத்து அணுக்கத்தைத் தடுப்பதற்குக் கீழேயுள்ள படிவத்தை உபயோகிக்கவும். இது விசமத்தனத்தைத் தடுப்பதற்கும் [[{{MediaWiki:Policy-url}}|{{SITENAME}} கொள்கை]]க்கு எற்புடைய வகையிலும் மட்டுமே பயன்படுத்தப்பட வேண்டும்.
 குறிப்பிட்ட காரணமொன்றைக் கீழே நிரப்புக (எடுத்துக்காட்டாக, விசமத்தனம் செய்யப்பட்ட பக்கங்களை எடுத்துக் காட்டவும்).',
 'ipadressorusername' => 'ஐ.பி. அல்லது பயனர் பெயர்:',
 'ipbexpiry' => 'காலாவதி:',
 'ipbreason' => 'காரணம்:',
-'ipbreasonotherlist' => 'வேறு காரணம்',
 'ipbreason-dropdown' => '*பொதுவான தடைக் காரணங்கள்
 ** பொய்யான தகவல்களை இடல்
 ** பக்கங்களிலிருந்து உள்ளடக்கங்களை நீக்கல்
@@ -2357,8 +2325,6 @@ $1',
 'ipbsubmit' => 'இப் பயனரைத் தடு',
 'ipbother' => 'வேறு நேரம்:',
 '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',
-'ipbotheroption' => 'மற்றவை',
-'ipbotherreason' => 'வேறு மேலதிக காரணம்:',
 'ipbhidename' => 'தொகுப்புக்கள் மற்றும் பட்டியல்களிலிருந்து பயனர் பெயரை மறைக்கவும்',
 'ipbwatchuser' => 'இந்த பயனர்களின் பயனர் மற்றும் உரையாடல் பங்கங்களை கவனி.',
 'ipb-disableusertalk' => 'இந்த பயனர்கள் தடைசெய்யப்பட்டுள்ள போது தங்களுடைய உரையாடல் பக்கத்தைத் தொகுப்பதைத் தடுக்கவும்.',
@@ -2444,7 +2410,6 @@ $1',
 'sorbsreason' => 'உங்கள் IP முகவரி ஒரு திறந்த பதிலியாக  DNSBL  பயன்படுத்தப்படுவதாக  {{SITENAME}} ல் பட்டியலிடப்பட்டுள்ளது.',
 'sorbs_create_account_reason' => 'உங்கள் IP முகவரி ஒரு திறந்த பதிலியாக  DNSBL  பயன்படுத்தப்படுவதாக  {{SITENAME}} ல் பட்டியலிடப்பட்டுள்ளது.
 உங்களால் கணக்கை உருவாக்க இயலாது.',
-'cant-block-while-blocked' => 'நீங்கள் தடுக்கப்பட்டுள்ள போது உங்களால் மற்ற பயனர்களை தடுக்க இயலாது.',
 'cant-see-hidden-user' => 'நீங்கள் தடுக்க முயலும் பயனர் ஏற்கனவே தடுக்கப்பட்டு,மறைக்கப்பட்டுள்ளார்.
 உங்களுக்கு பயனரை மறைக்கும் அதிகாரம் இல்லாததால் உங்களால் இந்த பயனர் தடுப்பை பார்க்கவோ திருத்தவோ இயலாது.',
 'ipbblocked' => 'நீங்கள் பயனர்களை தடுக்கவோ தடுத்தல் நீக்கவோ முடியாது,ஏனெனில் நீங்கள் உங்களால் தடுக்கப்பட்டுள்ளீர்கள்.',
@@ -2497,7 +2462,6 @@ $1',
 இப்படியான சந்தர்ப்பங்களில், விரும்பினால், நகர்த்தலையோ அல்லது ஒன்றிணைத்தலையோ நீங்கள் கைவினையாகச் செய்யவேண்டியிருக்கும்.",
 'movearticle' => 'பக்கத்தை நகர்த்து',
 'moveuserpage-warning' => "'''எச்சரிக்கை:''' நீங்கள் ஒரு பயனர் பக்கத்தை நகர்த்த முயல்கிறீர்கள். தயவுகூர்ந்து குறித்துக் கொள்ளுங்கள் பக்கம் மட்டுமே நகர்த்தப்படும் மற்றும் பயனரின் பெயர் மாற்றப்படாது.",
-'movenologin' => 'புகுபதிகை செய்யப்படவில்லை',
 'movenologintext' => 'இப் பக்கத்தை நகர்த்துவதற்கு, நீங்கள் ஒரு பதிவு செய்யப்பட்ட பயனராயும் [[Special:UserLogin|புகுபதிகை செய்தும்]] இருக்க வேண்டும்.',
 'movenotallowed' => 'உங்களுக்கு பக்கங்களை நகர்த்த அனுமதி கிடையாது.',
 'movenotallowedfile' => 'உங்களுக்கு கோப்புக்களை நகர்த்த அனுமதி கிடையாது.',
@@ -2512,8 +2476,6 @@ $1',
 'movepage-moved-noredirect' => 'வழிமாற்று உருவாக்கம் தடுக்கப்பட்டது.',
 'articleexists' => 'அந்தப் பெயரையுடைய பக்கம் ஏற்கெனவே உள்ளது அல்லது நீங்கள் தெரிவு செய்த பெயர் செல்லுபடியாகாது. தயவுசெய்து வேறு பெயரைத் தெரியவும்.',
 'cantmove-titleprotected' => 'நீர் பக்கத்க்தை நகர்த்த எத்தனித்த தலைப்பு உருவாக்கப்படுவது தடை செய்யப்பட்டுமையால் அத்தலைப்புக்கு நகர்த்த முடியாது',
-'talkexists' => 'பக்கம் வெற்றிகரமாக நகர்த்தப்பட்டது, ஆனால் பேச்சுப் பக்கத்தை நகர்த்த முடியவில்லை ஏனெனில் புதிய தலைப்பில் இன்னொன்று உள்ளது. தயவுசெய்து கையால் ஒன்றுகலக்கவும்.',
-'movedto' => 'நகர்த்தப்பட்ட இடம்',
 'movetalk' => 'தக்கதாயின் "பேச்சுப்" பக்கத்தையும் நகர்த்தவும்.',
 'move-subpages' => 'துணைப்பக்கங்களை நகர்த்து ( $1 வரை  )',
 'move-talk-subpages' => 'உரையாடல் பக்கத்தின் துணைப்பக்கங்களை நகரத்து ( $1 வரை)',
@@ -3298,15 +3260,10 @@ $1',
 'exif-urgency-high' => 'அதிகம் ($1)',
 'exif-urgency-other' => 'பயனர் அறுதியிட்ட முன்னுரிமை ( $1 )',
 
-# External editor support
-'edit-externally' => 'இக்கோப்பை வெளி மென்பொருள் கொண்டு தொகுக்க',
-'edit-externally-help' => 'மேலும் தகவல்களுக்கு [https://www.mediawiki.org/wiki/Manual:External_editors அமைப்பு அறிவுறுத்தல்கள்] பக்கத்தைப் பார்க்கவும்.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'அனைத்து',
 'namespacesall' => 'அனைத்து',
 'monthsall' => 'அனைத்து மாதங்களும்',
-'limitall' => 'அனைத்து',
 
 # Email address confirmation
 'confirmemail' => 'மின்னஞ்சல் முகவரியை உறுதிப்படுத்துக',
@@ -3324,7 +3281,6 @@ $1',
 'confirmemail_needlogin' => 'மின்னஞ்சல் முகவரியை உறுதிப்படுத்த நீங்கள் $1 வேண்டும்.',
 'confirmemail_success' => 'உங்கள் மின்னஞ்சல் முகவரி உறுதிப்படுத்தப்பட்டது. நீங்கள் இப்போது புகுபதிகை செய்யலாம்.',
 'confirmemail_loggedin' => 'உங்கள் மின்னஞ்சல் முகவரி உறுதிப்படுத்தப்பட்டது.',
-'confirmemail_error' => 'உங்கள் உறுத்திபடுத்தல் செயற்பாட்டில் ஏதோ தவறு நடைபெற்றிருக்கிறது.',
 'confirmemail_subject' => '{{SITENAME}} தளத்தின் மின்னஞ்சல் உறுதிப்படுத்தல்',
 'confirmemail_body' => '$1 என்ற ஐ.பி. முகவரியிலிருந்து ஒருவர், பெரும்பாலும் நீங்களாகவும் இருக்கலாம், {{SITENAME}} தளத்தில் "$2" என்றக் கணக்கை இந்த மின்னஞ்சல் முகவரியுடன் பதிவுச் செய்துள்ளார்.
 
@@ -3472,7 +3428,7 @@ $5
 'version-hook-name' => 'கொக்கியின் பெயர்',
 'version-hook-subscribedby' => 'பயன்பாடு',
 'version-version' => '(பதிப்பு $1)',
-'version-license' => 'à®\85னà¯\81மதி',
+'version-license' => 'à®®à¯\80à®\9fியாவிà®\95à¯\8dà®\95ி à®\89ரிமமà¯\8d',
 'version-poweredby-credits' => "இந்த் விக்கி '''[https://www.mediawiki.org/ MediaWiki]''' இதன் மூலம் வழங்கப்படுகிறது, காப்புரிமை © 2001-$1 $2.",
 'version-poweredby-others' => 'பிறர்',
 'version-license-info' => 'மீடியாவிக்கியானது இலவச மென்பொருள்.இதை நீங்கள் மற்றவர்களுக்கு கொடுப்பது அல்லது திருத்தம் செய்வது இலவச மென்பொருள் அறக்கட்டளை வழங்கிய   GNUவின் பொது உரிம விதிகளுக்குட்பட்டது;உரிமத்தின் இரண்டாவது பதிப்பு அல்லது அதற்கு மேற்பட்ட பதிப்பு (உங்கள் விருப்பத்திற்க்கேற்றவாறு).
@@ -3550,7 +3506,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'பக்கங்களை ஒப்பிடு',
-'compare-selector' => 'பக்க பரிசீலனைகளை ஒப்பிடு',
 'compare-page1' => 'பக்கம் 1',
 'compare-page2' => 'பக்கம் 2',
 'compare-rev1' => 'திருத்தம் 1',
@@ -3683,11 +3638,11 @@ $5
 
 # Durations
 'duration-seconds' => '$1 {{PLURAL:$1|நொடி|நொடிகள்}}',
-'duration-minutes' => '{{PLURAL: $1|நிமிடம்|நிமிடங்கள்}}',
+'duration-minutes' => '{{PLURAL:$1|நிமிடம்|நிமிடங்கள்}}',
 'duration-hours' => '$1 {{PLURAL:$1|மணி|மணிகள்}} முன்பு',
 'duration-days' => '$1 {{PLURAL:$1|நாள்|நாட்கள்}}',
-'duration-weeks' => '{{PLURAL: $1|வாரம்|வாரங்கள்}}',
-'duration-years' => '{{PLURAL: $1|வருடம்|வருடங்கள்}}',
+'duration-weeks' => '{{PLURAL:$1|வாரம்|வாரங்கள்}}',
+'duration-years' => '{{PLURAL:$1|வருடம்|வருடங்கள்}}',
 'duration-decades' => '$1 {{PLURAL:$1|பத்தாண்டு|பத்தாண்டுகள்}}',
 'duration-centuries' => '$1 {{PLURAL:$1|நூற்றாண்டு|நூற்றாண்டுகள்}}',
 'duration-millennia' => '$1 {{PLURAL:$1|ஆயிரம் ஆண்டு|ஆயிரம் ஆண்டுகள்}}',
index 5232b6e..8009328 100644 (file)
@@ -35,7 +35,6 @@ $messages = array(
 'tog-minordefault' => 'ಪೂರಾ ಸಂಪಾದನೆನ್ಲಾ ಎಲ್ಯ ಪಂಡ್’ದ್ ಗುರ್ತ ಮಲ್ಪುಲೆ',
 'tog-previewontop' => 'ಮುನ್ನೋಟನ್ ಸಂಪಾದನೆ ಅಂಕಣದ ಮಿತ್ತ್ ತೊಜ್ಪಾಲೆ',
 'tog-previewonfirst' => 'ಶುರುತ ಬದಲಾವಣೆದ ಬೊಕ್ಕ ಮನ್ನೋಟನ್ ತೊಜ್ಪಾಲೆ',
-'tog-nocache' => 'ಪುಟೊತ caching ನ್ ಉಂತಾಲೆ',
 'tog-enotifwatchlistpages' => 'ಎನ್ನ ವೀಕ್ಷಣಾಪಟ್ಟಿಡ್ ಉಪ್ಪುನಂಚಿನ ಒವಾಂಡಲ ಪುಟ ಬದಲಾಂಡ ಎಂಕ್ ಇ-ಮೇಲ್ ಮಲ್ಪುಲೆ',
 'tog-enotifusertalkpages' => 'ಎನ್ನ ಚರ್ಚೆ ಪುಟ ಬದಲಾಂಡ ಎಂಕ್ ಇ-ಮೇಲ್ ಕಡಪುಡ್ಲೆ',
 'tog-enotifminoredits' => 'ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆ ಆಂಡಲ ಎಂಕ್ ಇ-ಮೇಲ್ ಮಲ್ಪುಲೆ',
@@ -153,7 +152,6 @@ $messages = array(
 'qbedit' => 'ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
 'qbpageoptions' => 'ಈ ಪುಟ',
 'qbmyoptions' => 'ಎನ್ನ ಪುಟೊಲು',
-'qbspecialpages' => 'ವಿಶೇಷ ಪುಟೊಲು',
 'faq' => 'ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
 'faqpage' => 'Project:ಸಾಮಾನ್ಯವಾದ್ ಕೇನುನ ಪ್ರಶ್ನೆಲು',
 
@@ -409,7 +407,7 @@ $messages = array(
 'loginlanguagelabel' => 'ಭಾಷೆ: $1',
 
 # Change password dialog
-'resetpass' => 'ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ',
+'changepassword' => 'ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ',
 'resetpass_header' => 'ಈ ಖಾತೆದ ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ',
 'oldpassword' => 'ಪರ ಪ್ರವೇಶಪದ',
 'newpassword' => 'ಪೊಸ ಪ್ರವೇಶಪದ',
@@ -550,15 +548,10 @@ $messages = array(
 # 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''' ನ್ ಈರ್ ನಾಡಿಯರ್.",
-'notitlematches' => 'ವಾ ಪುಟೊತ ಶಿರ್ಷಿಕೆಲಾ ಹೊಂದಿಕೆ ಆವೊಂದಿಜ್ಜಿ',
 'notextmatches' => 'ವಾ ಪುಟೊತ ಪಠ್ಯೊಡುಲಾ ಹೋಲಿಕೆ ಇಜ್ಜಿ',
 'prevn' => 'ದುಂಬುದ {{PLURAL:$1|$1}}',
 'nextn' => 'ಬೊಕ್ಕದ {{PLURAL:$1|$1}}',
 'viewprevnext' => 'ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ನಾಡಾಟದ ಆಯ್ಕೆಲು',
 'searchprofile-articles' => 'ಲೇಖನ ಪುಟೊ',
 'searchprofile-images' => 'ಬಹುಮಾಧ್ಯಮ',
 'searchprofile-everything' => 'ಪ್ರತಿಯೊಂಜಿ',
@@ -575,16 +568,13 @@ $messages = array(
 'search-interwiki-more' => '(ಮಸ್ತ್)',
 'searchrelated' => 'ಸ೦ಬ೦ಧ ಇತ್ತಿನ',
 'searchall' => 'ಮಾತಾ',
-'powersearch' => 'ನಾಡ್’ಲೆ',
 'powersearch-legend' => 'ಅಡ್ವಾನ್ಸ್’ಡ್ ಸರ್ಚ್',
 'powersearch-ns' => 'ನೇಮ್-ಸ್ಪೇಸ್’ಲೆಡ್ ನಾಡ್ಲೆ',
-'powersearch-field' => 'ನಾಡ್ಲೆ:',
 'powersearch-toggleall' => 'ಮಾತಾ',
 
 # Preferences page
 'preferences' => 'ಪ್ರಾಶಸ್ತ್ಯೊಲು',
 'mypreferences' => 'ಎನ್ನ ಪ್ರಾಶಸ್ತ್ಯಲು',
-'changepassword' => 'ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ',
 'prefs-datetime' => 'ದಿನ ಬೊಕ್ಕ ಸಮಯ',
 'prefs-rc' => 'ಇಂಚಿಪದ ಬದಲಾವಣೆಲು',
 'prefs-resetpass' => 'ಪ್ರವೇಶಪದೊನ್ ಬದಲಾವಣೆ ಮಲ್ಪುಲೆ',
@@ -656,7 +646,6 @@ $messages = array(
 'recentchanges-feed-description' => 'ಈ ಫೀಡ್’ಡ್ ವಿಕಿಕ್ ಇಂಚಿಪ್ಪ ಆತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನ್ ಟ್ರ್ಯಾಕ್ ಮಲ್ಪುಲೆ.',
 'recentchanges-label-newpage' => 'ಇರ್ನ ಈ ಬದಲಾವಣೆ ಪೊಸ ಪುಟೊನು ಸುರು ಮಲ್ಪುಂಡು',
 'recentchanges-label-minor' => 'ಉಂದು ಎಲ್ಯ ಬದಲಾವಣೆ',
-'rcnote' => "$4, $5 ಮುಟ್ಟ ದುಂಬುದ {{PLURAL:$2|ದಿನೊಟು|'''$2''' ದಿನೊಲೆಡ್}} ಮಲ್ತ್’ದಿನ {{PLURAL:$1|'''1''' ಬದಲಾವಣೆ|'''$1''' ಬದಲಾವಣೆಲು}} ತಿರ್ತುಂಡು.",
 'rclistfrom' => '$1 ರ್ದ್ ಶುರುವಾತಿನ ಪೊಸ ಬದಲಾವಣೆಲೆನ್ ತೊಜ್ಪಾವು',
 'rcshowhideminor' => '$1 ಎಲ್ಯೆಲ್ಯ ಬದಲಾವಣೆಲು',
 'rcshowhidebots' => '$1 ಬಾಟ್',
@@ -961,10 +950,6 @@ $messages = array(
 * gpslongitude
 * gpsaltitude',
 
-# External editor support
-'edit-externally' => 'ಬಾಹ್ಯ(ಪಿದಯಿದ) ತಂತ್ರಾಶೊನು ಉಪಯೋಗ ಮಲ್ತ್’ದ್ ಇಂದೆನ್ ಸಂಪಾದನೆ ಮಲ್ಪುಲೆ',
-'edit-externally-help' => 'ನನಲ ಮಾಹಿತಿಗ್ [https://www.mediawiki.org/wiki/Manual:External_editors ಸೆಟ್-ಅಪ್ ನಿರ್ದೇಶನೊಲೆನ್] ತೂಲೆ.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ಪೂರ',
 'namespacesall' => 'ಪೂರಾ',
index 38f11cf..844d677 100644 (file)
@@ -66,7 +66,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'పురాతనపేజీలు' ),
        'Blankpage'                 => array( 'ఖాళీపేజి' ),
        'Block'                     => array( 'అడ్డగించు', 'ఐపినిఅడ్డగించు', 'వాడుకరినిఅడ్డగించు' ),
-       'Blockme'                   => array( 'నన్నుఅడ్డగించు' ),
        'Booksources'               => array( 'పుస్తకమూలాలు' ),
        'BrokenRedirects'           => array( 'తెగిపోయినదారిమార్పులు' ),
        'Categories'                => array( 'వర్గాలు' ),
@@ -74,7 +73,6 @@ $specialPageAliases = array(
        'Confirmemail'              => array( 'ఈమెయిలుధ్రువపరచు' ),
        'CreateAccount'             => array( 'ఖాతాసృష్టించు' ),
        'Deadendpages'              => array( 'అగాధపేజీలు' ),
-       'Disambiguations'           => array( 'అయోమయనివృత్తి' ),
        'DoubleRedirects'           => array( 'రెండుసార్లుదారిమార్పు' ),
        'Emailuser'                 => array( 'వాడుకరికిఈమెయిలుచెయ్యి' ),
        'Export'                    => array( 'ఎగుమతి' ),
@@ -151,12 +149,12 @@ $messages = array(
 'tog-hidepatrolled' => 'ఇటీవలి మార్పులలో నిఘా ఉన్న మార్పులను దాచు',
 'tog-newpageshidepatrolled' => 'కొత్త పేజీల జాబితా నుంచి నిఘా ఉన్న పేజీలను దాచు',
 'tog-extendwatchlist' => 'కేవలం ఇటీవలి మార్పులే కాక, మార్పులన్నీ చూపించటానికి నా వీక్షణా జాబితాను పెద్దది చేయి',
-'tog-usenewrc' => 'à°\87à°\9fà±\80వలి à°®à°¾à°°à±\8dà°ªà±\81à°²à±\81 à°®à°°à°¿à°¯à±\81 à°µà°¿à°\95à±\8dà°·à°£ à°\9cాబితాలలà±\8b à°®à°¾à°°à±\8dà°ªà±\81లనà±\81 à°ªà±\87à°\9cà±\80 à°µà°¾à°°à°¿à°\97à°¾ à°\9aà±\82పిà°\82à°\9aà±\81 (à°\9cావాసà±\8dà°\95à±\8dà°°à°¿à°ªà±\8dà°\9fà±\81 à°\85వసరà°\82)',
+'tog-usenewrc' => 'à°\87à°\9fà±\80వలి à°®à°¾à°°à±\8dà°ªà±\81à°²à±\81 à°®à°°à°¿à°¯à±\81 à°µà±\80à°\95à±\8dà°·à°£ à°\9cాబితాలలà±\8b à°®à°¾à°°à±\8dà°ªà±\81లనà±\81 à°ªà±\87à°\9cà±\80 à°µà°¾à°°à°¿à°\97à°¾ à°\9aà±\82పిà°\82à°\9aà±\81',
 'tog-numberheadings' => 'శీర్షికలకు అప్రమేయంగా వరుస సంఖ్యలు చేర్చు',
-'tog-showtoolbar' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\8dà°²à±\81 à°\9aà±\87à°¸à±\87à°\9fà°ªà±\8dà°ªà±\81à°¡à±\81, à°\85à°\82à°¦à±\81à°\95à±\81 à°¸à°¹à°¾à°¯à°ªà°¡à±\87 à°ªà°°à°¿à°\95రాలపà±\86à°\9fà±\8dà°\9fà±\86à°¨à±\81 à°\9aà±\82పిà°\82à°\9aà±\81 (à°\9cావాసà±\8dà°\95à±\8dà°°à°¿à°ªà±\8dà°\9fà±\81)',
-'tog-editondblclick' => 'డబుల్‌ క్లిక్కు చేసినప్పుడు పేజీని మార్చు (జావాస్క్రిప్టు)',
+'tog-showtoolbar' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°ªà°¨à°¿à°®à±\81à°\9fà±\8dà°² à°ªà°\9fà±\8dà°\9fà±\80ని à°\9aà±\82పిà°\82à°\9aà±\81',
+'tog-editondblclick' => 'డబుల్‌ క్లిక్కు చేసినప్పుడు పేజీని మార్చు',
 'tog-editsection' => '[మార్చు] లింకు ద్వారా విభాగం మార్పు చేతనం',
-'tog-editsectiononrightclick' => 'విభాà°\97à°\82 à°ªà±\87à°°à±\81 à°®à±\80à°¦ à°\95à±\81à°¡à°¿ à°\95à±\8dలిà°\95à±\8dà°\95à±\81à°¤à±\8b à°µà°¿à°­à°¾à°\97à°\82 à°®à°¾à°°à±\8dà°ªà±\81 à°\95ావాలి (à°\9cావాసà±\8dà°\95à±\8dà°°à°¿à°ªà±\8dà°\9fà±\81)',
+'tog-editsectiononrightclick' => 'విభాà°\97ాల à°¶à±\80à°°à±\8dà°·à°¿à°\95à°² à°®à±\80à°¦ à°\95à±\81à°¡à°¿à°¨à±\8aà°\95à±\8dà°\95à±\81à°¤à±\8b à°µà°¿à°­à°¾à°\97à°ªà±\81 à°¦à°¿à°¦à±\8dà°¦à±\81బాà°\9fà±\81à°¨à±\81 à°\9aà±\87తనà°\82à°\9aà±\87యి',
 'tog-showtoc' => 'విషయసూచిక చూపించు (3 కంటే ఎక్కువ శీర్షికలున్న పేజీలకు)',
 'tog-rememberpassword' => 'ఈ విహారిణిలో నా ప్రవేశాన్ని గుర్తుంచుకో (గరిష్ఠంగా $1 {{PLURAL:$1|రోజు|రోజుల}}కి)',
 'tog-watchcreations' => 'నేను సృష్టించే పేజీలను మరియు దస్త్రాలను నా వీక్షణ జాబితాకు చేర్చు',
@@ -166,7 +164,6 @@ $messages = array(
 'tog-minordefault' => 'ప్రత్యేకంగా తెలుపనంతవరకూ నా మార్పులను చిన్న మార్పులుగా గుర్తించు',
 'tog-previewontop' => 'వ్యాసం మార్పుల మునుచూపు సవరించు పెట్టె పైన చూపు',
 'tog-previewonfirst' => 'మొదటి  దిద్దుబాటు చేసినపుడు వ్యాసపు మునుచూపు చూపించు',
-'tog-nocache' => 'విహారిణిలో పుటల  స్థానికనకలును(కాషింగు) అచేతనం చేయి',
 'tog-enotifwatchlistpages' => 'నా వీక్షణాజాబితా లోని పేజీ లేదా దస్త్రం మారినపుడు నాకు ఈ-మెయిలు పంపు',
 'tog-enotifusertalkpages' => 'నా చర్చా పేజీలో మార్పులు జరిగినపుడు నాకు ఈ-మెయిలు పంపు',
 'tog-enotifminoredits' => 'పేజీలు మరియు దస్త్రాలకు జరిగే చిన్న మార్పులకు కూడా నాకు ఈ-మెయిలును పంపు',
@@ -174,7 +171,7 @@ $messages = array(
 'tog-shownumberswatching' => 'వీక్షకుల సంఖ్యను చూపు',
 'tog-oldsig' => 'ప్రస్తుత సంతకం:',
 'tog-fancysig' => 'సంతకాన్ని వికీపాఠ్యంగా తీసుకో (ఆటోమెటిక్‌ లింకు లేకుండా)',
-'tog-uselivepreview' => 'రాసà±\8dà°¤à±\81à°¨à±\8dనదానిని à°\8eà°ªà±\8dà°ªà°\9fà°¿à°\95à°ªà±\8dà°ªà±\81à°¡à±\81 à°¸à°°à°¿à°\9aà±\82à°¡à°\82à°¡à°¿ (à°\9cావాసà±\8dà°\95à±\8dà°°à°¿à°ªà±\8dà°\9fà±\81) (పరà±\80à°\95à±\8dషాదశలà±\8b à°\89à°\82ది)',
+'tog-uselivepreview' => 'à°µà±\86à°¨à±\81à°µà±\86à°\82à°\9f à°®à±\81à°¨à±\81à°\9cà±\82à°ªà±\81à°¨à±\81 à°µà°¾à°¡à±\81 (à°ªà±\8dà°°à°¯à±\8bà°\97ాతà±\8dà°®à°\95à°\82)',
 'tog-forceeditsummary' => 'దిద్దుబాటు సారాంశం ఖాళీగా ఉంటే ఆ విషయాన్ని నాకు సూచించు',
 'tog-watchlisthideown' => 'నా మార్పులను వీక్షణా జాబితాలో చూపించొద్దు',
 'tog-watchlisthidebots' => 'బాట్లు చేసిన మార్పులను నా వీక్షణా జాబితాలో చూపించొద్దు',
@@ -187,6 +184,7 @@ $messages = array(
 'tog-showhiddencats' => 'దాచిన వర్గాలను చూపించు',
 'tog-norollbackdiff' => 'రద్దు చేసాక తేడాలు చూపించవద్దు',
 'tog-useeditwarning' => 'ఏదైనా పేజీని నేను వదిలివెళ్తున్నప్పుడు దానిలో భద్రపరచని మార్పులు ఉంటే నన్ను హెచ్చరించు',
+'tog-prefershttps' => 'లాగిన్ అయి ఉన్నప్పుడెల్లా భద్ర కనెక్షనునే వాడు',
 
 'underline-always' => 'ఎల్లప్పుడూ',
 'underline-never' => 'ఎప్పటికీ వద్దు',
@@ -300,7 +298,6 @@ $messages = array(
 'qbedit' => 'సవరించు',
 'qbpageoptions' => 'ఈ పేజీ',
 'qbmyoptions' => 'నా పేజీలు',
-'qbspecialpages' => 'ప్రత్యేక పేజీలు',
 'faq' => 'తరచూ అడిగే ప్రశ్నలు',
 'faqpage' => 'Project:తరచూ అడిగే ప్రశ్నలు',
 
@@ -321,6 +318,7 @@ $messages = array(
 'namespaces' => 'పేరుబరులు',
 'variants' => 'రకరకాలు',
 
+'navigation-heading' => 'మార్గదర్శకపు మెనూ',
 'errorpagetitle' => 'పొరపాటు',
 'returnto' => 'తిరిగి $1కి.',
 'tagline' => '{{SITENAME}} నుండి',
@@ -416,8 +414,8 @@ $1',
 'youhavenewmessages' => 'మీకు $1 ఉన్నాయి ($2).',
 'youhavenewmessagesfromusers' => 'మీకు {{PLURAL:$3|మరో వాడుకరి|$3 వాడుకరుల}} నుండి $1 ($2).',
 'youhavenewmessagesmanyusers' => 'మీకు చాలా వాడుకరుల నుండి $1 ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ఒక కొత్త సందేశం వచ్చింది|కొత్త సందేశాలు ఉన్నాయి}}',
-'newmessagesdifflinkplural' => 'చివరి {{PLURAL:$1|మార్పు|మార్పులు}}',
+'newmessageslinkplural' => '{{PLURAL:$1|ఒక కొత్త సందేశం వచ్చింది|999=కొత్త సందేశాలు ఉన్నాయి}}',
+'newmessagesdifflinkplural' => 'చివరి {{PLURAL:$1|మార్పు|999=మార్పులు}}',
 'youhavenewmessagesmulti' => '$1లో మీకో సందేశం ఉంది',
 'editsection' => 'మార్చు',
 'editold' => 'సవరించు',
@@ -440,6 +438,7 @@ $1',
 'site-atom-feed' => '$1 ఆటమ్ ఫీడు',
 'page-rss-feed' => '"$1" ఆరెసెస్సు(RSS) ఫీడు',
 'page-atom-feed' => '"$1" ఆటమ్ ఫీడు',
+'feed-atom' => 'యాటమ్',
 'red-link-title' => '$1 (పుట లేదు)',
 'sort-descending' => 'అవరోహణ క్రమంలో అమర్చు',
 'sort-ascending' => 'ఆరోహణ క్రమంలో అమర్చు',
@@ -469,6 +468,12 @@ $1',
 # General errors
 'error' => 'లోపం',
 'databaseerror' => 'డేటాబేసు లోపం',
+'databaseerror-text' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.
+సాఫ్టువేరులోని ఉన్న దోషానికి ఇది సూచిక కావచ్చు.',
+'databaseerror-textcl' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.',
+'databaseerror-query' => 'క్వెరీ: $1',
+'databaseerror-function' => 'ఫంక్షన్: $1',
+'databaseerror-error' => 'లోపం: $1',
 'laggedslavemode' => 'హెచ్చరిక: పేజీలో ఇటీవల జరిగిన మార్పులు ఉండకపోవచ్చు.',
 'readonly' => 'డేటాబేసు లాక్‌చెయ్యబడింది',
 'enterlockreason' => 'డేటాబేసుకు వేయబోతున్న లాకుకు కారణం తెలుపండి, దానితోపాటే ఎంతసమయం తరువాత ఆ లాకు తీసేస్తారో కూడా తెలుపండి',
@@ -500,6 +505,8 @@ $1',
 'cannotdelete' => '"$1" అనే పేజీ లేదా ఫైలుని తొలగించలేకపోయాం.
 దాన్ని ఇప్పటికే ఎవరైనా తొలగించి ఉండవచ్చు.',
 'cannotdelete-title' => '"$1" పుటను తొలగించలేరు',
+'delete-hook-aborted' => 'తొలగింపును హుక్ ఆపేసింది.
+వివరణ ఏమీ ఇవ్వలేదు.',
 'badtitle' => 'తప్పు శీర్షిక',
 'badtitletext' => 'మీరు కోరిన పుట యొక్క పేరు చెల్లనిది, ఖాళీగా ఉంది, లేదా తప్పుగా ఇచ్చిన అంతర్వికీ లేదా అంతర-భాషా శీర్షిక అయివుండాలి.
 శీర్షికలలో ఉపయోగించకూడని అక్షరాలు దానిలో ఉండివుండొచ్చు.',
@@ -507,9 +514,6 @@ $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 />
-ఫంక్షను: $1<br />
-క్వీరీ: $2',
 'viewsource' => 'మూలాన్ని చూపించు',
 'viewsource-title' => '$1 యొక్క సోర్సు చూడండి',
 'actionthrottled' => 'కార్యాన్ని ఆపేసారు',
@@ -524,9 +528,18 @@ $1',
 'cascadeprotected' => 'కింది {{PLURAL:$1|పేజీని|పేజీలను}} కాస్కేడింగు ఆప్షనుతో చేసి సంరక్షించారు. ప్రస్తుత పేజీ, ఈ పేజీల్లో ఇంక్లూడు అయి ఉంది కాబట్టి, దిద్దుబాటు చేసే వీలు లేకుండా ఇది కూడా రక్షణలో ఉంది.
 $2',
 'namespaceprotected' => "'''$1''' నేంస్పేసులో మార్పులు చేయటానికి మీకు అనుమతి లేదు.",
+'customcssprotected' => 'ఈ CSS పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
+'customjsprotected' => 'ఈ JavaScript పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
+'mycustomcssprotected' => 'ఈ CSS పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
+'mycustomjsprotected' => 'ఈ జావాస్క్రిప్టు పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
+'myprivateinfoprotected' => 'మీ అంతరంగిక సమాచారాన్ని సవరించేందుకు మీకు అనుమతి లేదు.',
+'mypreferencesprotected' => 'మీ అభీష్టాలను సవరించేందుకు మీకు అనుమతి లేదు.',
 'ns-specialprotected' => 'ప్రత్యేక పేజీలపై దిద్దుబాట్లు చేయలేరు.',
 'titleprotected' => "సభ్యులు [[User:$1|$1]] ఈ పేజీని సృష్టించనివ్వకుండా నిరోదిస్తున్నారు.
 అందుకు ఇచ్చిన కారణం: ''$2''.",
+'filereadonlyerror' => 'ఫైలు ఖజానా "$2" రీడ్-ఓన్లీ స్థితిలో ఉండటం చేత "$1" ఫైలులో మార్పులు చెయ్యలేకపోయాం.
+
+దానికి తాళం వేసిన అధికారి ఇచ్చిన వివరణ ఇది: "$3".',
 'exception-nologin' => 'లోనికి ప్రవేశించిలేరు',
 'exception-nologin-text' => 'ఈ పేజీని చూడడానికి లేదా ఈ చర్యను చెయ్యడానికి దయచేసి [[Special:Userlogin|ప్రవేశించండి]].',
 
@@ -582,11 +595,16 @@ $2',
 'userlogin-resetpassword-link' => 'మీ సంకేతపదాన్ని మర్చిపోయారా?',
 'helplogin-url' => 'Help:ప్రవేశించడం',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ప్రవేశించడానికి సహాయం]]',
+'userlogin-loggedin' => 'మీరు ఈసరికే {{GENDER:$1|$1}} గా లాగిన్ అయి ఉన్నారు.
+వేరే వాడుకరిగా లాగినయేందుకు కింది ఫారమును వాడండి.',
+'userlogin-createanother' => 'మరొక ఖాతాను సృష్టించండి',
 'createacct-join' => 'మీ సమాచారాన్ని క్రింద ఇవ్వండి.',
+'createacct-another-join' => 'కొత్త ఖాతా యొక్క సమాచారాన్ని క్రింద ఇవ్వండి.',
 'createacct-emailrequired' => 'ఈమెయిలు చిరునామా',
 'createacct-emailoptional' => 'ఈమెయిలు చిరునామా (ఐచ్చికం)',
 'createacct-email-ph' => 'మీ ఈమెయిలు చిరునామాను ఇవ్వండి',
-'createaccountmail' => 'తాత్కాలిక యాదృచ్చిక సంకేతపదాన్ని వాడి దాన్ని ఈ క్రింద ఇచ్చిన ఈమెయిలు చిరునామాకు పంపించు',
+'createacct-another-email-ph' => 'ఈమెయిలు చిరునామాను ఇవ్వండి',
+'createaccountmail' => 'ఏదో ఒక తాత్కాలిక సంకేతపదాన్ని వాడి దాన్ని పేర్కొన్న ఈమెయిలు చిరునామాకు పంపించు',
 'createacct-realname' => 'అసలు పేరు (ఐచ్చికం)',
 'createaccountreason' => 'కారణం:',
 'createacct-reason' => 'కారణం',
@@ -594,9 +612,11 @@ $2',
 'createacct-captcha' => 'భద్రతా తనిఖీ',
 'createacct-imgcaptcha-ph' => 'పైన కనబడే మాటలను ఇక్కడ ఇవ్వండి',
 'createacct-submit' => 'మీ ఖాతాను సృష్టించుకోండి',
+'createacct-another-submit' => 'మరొక ఖాతాను సృష్టించు',
 'createacct-benefit-heading' => '{{SITENAME}}ను తయారుచేసేది మీలాంటి ప్రజలే.',
 'createacct-benefit-body1' => '{{PLURAL:$1|మార్పు|మార్పులు}}',
 'createacct-benefit-body2' => '{{PLURAL:$1|పేజీ|పేజీలు}}',
+'createacct-benefit-body3' => 'ఇటీవలి {{PLURAL:$1|సమర్పకుడు|సమర్పకులు}}',
 'badretype' => 'మీరు ఇచ్చిన రెండు సంకేతపదాలు ఒకదానితో మరొకటి సరిపోలడం లేదు.',
 'userexists' => 'ఇచ్చిన వాడుకరిపేరు ఇప్పటికే వాడుకలో ఉంది.
 వేరే పేరును ఎంచుకోండి.',
@@ -626,7 +646,7 @@ $2',
 'passwordtooshort' => 'మీ సంకేతపదం కనీసం {{PLURAL:$1|1 అక్షరం|$1 అక్షరాల}} పొడవు ఉండాలి.',
 'password-name-match' => 'మీ సంకేతపదం మీ వాడుకరిపేరుకి భిన్నంగా ఉండాలి.',
 'password-login-forbidden' => 'ఈ వాడుకరిపేరు మరియు సంకేతపదాలను ఉపయోగించడం నిషిద్ధం.',
-'mailmypassword' => 'à°\95à±\8aà°¤à±\8dà°¤ à°¸à°\82à°\95à±\87తపదానà±\8dని à°\88-à°®à±\86యిలà±\8dà°²à±\8b à°ªà°\82పిà°\82చు',
+'mailmypassword' => 'à°¸à°\82à°\95à±\87తపదానà±\8dని à°®à°¾à°°à±\8dచు',
 'passwordremindertitle' => '{{SITENAME}} కోసం కొత్త తాత్కాలిక సంకేతపదం',
 'passwordremindertext' => '{{SITENAME}} ($4) లో కొత్త సంకేతపదం పంపించమని ఎవరో (బహుశ మీరే, ఐ.పీ. చిరునామా $1 నుండి) అడిగారు. వాడుకరి "$2" కొరకు "$3" అనే తాత్కాలిక సంకేతపదం సిద్ధంచేసి ఉంచాం. మీ ఉద్దేశం అదే అయితే, ఇప్పుడు మీరు సైటులోనికి ప్రవేశించి కొత్త సంకేతపదాన్ని ఎంచుకోవచ్చు. మీ తాత్కాలిక సంకేతపదం {{PLURAL:$5|ఒక రోజు|$5 రోజుల}}లో కాలంచెల్లుతుంది.
 
@@ -664,13 +684,16 @@ $2',
 'login-abort-generic' => 'మీ లాగిన్ ప్రయత్నం విఫలమైంది - ఆగిపోయింది',
 'loginlanguagelabel' => 'భాష: $1',
 'suspicious-userlogout' => 'సరిగా పనిచేయని విహారిణి లేదా కాషింగ్ ప్రాక్సీ వల్ల పంపబడడం చేత, నిష్క్రమించాలనే మీ అభ్యర్థనని నిరాకరించారు.',
+'createacct-another-realname-tip' => 'అసలు పేరు ఐచ్ఛికం.
+మీరు దాన్ని ఇస్తే, వాడుకరి పనుల శ్రేయస్సు ఆ పేరుకు ఆపాదించబడుతుంది.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP యొక్క mail() ఫంక్షన్‍లో ఏదో తెలియని లోపం దొర్లింది',
 'user-mail-no-addy' => 'ఈ-మెయిలు చిరునామాని ఇవ్వకుండానే ఈ-మెయిలు పంపడానికి ప్రయత్నించారు.',
+'user-mail-no-body' => 'ఈమెయిలును ఖాళీగానో, మరీ తక్కువ విషయంతోనో పంపేందుకు ప్రయత్నించారు.',
 
 # Change password dialog
-'resetpass' => 'సంకేతపదాన్ని మార్చండి',
+'changepassword' => 'సంకేతపదాన్ని మార్చండి',
 'resetpass_announce' => 'మీకు పంపిన తాత్కాలిక సంకేతంతో ప్రవేశించివున్నారు.
 ప్రవేశాన్ని పూర్తిచేసేందుకు, మీరు తప్పనిసరిగా ఇక్కడ కొత్త సంకేతపదాన్ని అమర్చుకోవాలి:',
 'resetpass_header' => 'ఖాతా సంకేతపదం మార్పు',
@@ -678,7 +701,7 @@ $2',
 'newpassword' => 'కొత్త సంకేతపదం:',
 'retypenew' => 'సంకేతపదం, మళ్ళీ',
 'resetpass_submit' => 'సంకేతపదాన్ని మార్చి లోనికి ప్రవేశించండి',
-'changepassword-success' => 'à°®à±\80 à°¸à°\82à°\95à±\87తపదానà±\8dని à°\9cయపà±\8dà°°à°¦à°\82à°\97à°¾ à°®à°¾à°°à±\8dà°\9aà°¾à°\82! à°\87à°\95 à°®à°¿à°®à±\8dమలà±\8dని à°²à±\8bనిà°\95à°¿ à°ªà±\8dà°°à°µà±\87శిà°\82à°ªà°\9aà±\87à°¸à±\8dà°¤à±\81à°¨à±\8dనాà°\82...',
+'changepassword-success' => 'à°®à±\80 à°¸à°\82à°\95à±\87తపదà°\82 à°µà°¿à°\9cయవà°\82à°¤à°\82à°\97à°¾ à°®à°¾à°°à±\8dà°\9aబడిà°\82ది.',
 'resetpass_forbidden' => 'సంకేతపదాలను మార్చటం కుదరదు',
 'resetpass-no-info' => 'ఈ పేజీని నేరుగా చూడటానికి మీరు లోనికి ప్రవేశించివుండాలి.',
 'resetpass-submit-loggedin' => 'సంకేతపదాన్ని మార్చు',
@@ -686,13 +709,19 @@ $2',
 'resetpass-wrong-oldpass' => 'తప్పుడు తాత్కాలిక లేదా ప్రస్తుత సంకేతపదం.
 మీరు మీ సంకేతపదాన్ని ఇప్పటికే విజయవంతంగా మార్చుకొనివుండవచ్చు లేదా కొత్త తాత్కాలిక సంకేతపదం కోసం అభ్యర్థించారు.',
 'resetpass-temp-password' => 'తాత్కాలిక సంకేతపదం:',
+'resetpass-abort-generic' => 'ఓ పొడిగింత (ఎక్స్టెన్‍షన్) సంకేతపదం మార్పిడిని ఆపేసింది.',
 
 # Special:PasswordReset
 'passwordreset' => 'సంకేతపదాన్ని మార్చుకోండి',
+'passwordreset-text-one' => 'ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఈ ఫారమును నింపండి.',
+'passwordreset-text-many' => '{{PLURAL:$1|ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఏదో ఒక ఫీల్డును నింపండి.Fill in one of the fields to receive a temporary password via email.}}',
 'passwordreset-legend' => 'సంకేతపదాన్ని మార్చుకోండి',
 'passwordreset-disabled' => 'ఈ వికీలో సంకేతపదాల మార్పును అచేతనం చేసాం.',
+'passwordreset-emaildisabled' => 'ఈ వికీలో ఈమెయిలు విశేషాలను అశక్తం చేసాం.',
 'passwordreset-username' => 'వాడుకరి పేరు:',
 'passwordreset-domain' => 'డొమైన్:',
+'passwordreset-capture' => 'ఈమెయిలు ఎలా ఉంటుందో చూస్తారా?',
+'passwordreset-capture-help' => 'ఈ పెట్టెను చెక్ చేస్తే, ఈమెయిలును (తాత్కాలిక సంకేతపదంతో) వాడుకరికి పంపిస్తూనే, మీకూ చూపిస్తాం.',
 'passwordreset-email' => 'ఈ-మెయిలు చిరునామా:',
 'passwordreset-emailtitle' => '{{SITENAME}}లో ఖాతా వివరాలు',
 'passwordreset-emailtext-ip' => 'ఎవరో (బహుశా మీరే, ఐపీ అడ్రసు $1 నుంచి)  {{SITENAME}} ($4) లో మీ ఖాతా వివరాలను చెప్పమంటూ అడిగారు. కింది వాడుకరి {{PLURAL:$3|ఖాతా|ఖాతాలు}}
@@ -726,6 +755,9 @@ $2
 'changeemail-submit' => 'ఈ-మెయిల్ మార్చు',
 'changeemail-cancel' => 'రద్దుచేయి',
 
+# Special:ResetTokens
+'resettokens-token-label' => '$1 (ప్రస్తుత విలువ: $2)',
+
 # Edit page toolbar
 'bold_sample' => 'బొద్దు అక్షరాలు',
 'bold_tip' => 'బొద్దు అక్షరాలు',
@@ -799,7 +831,7 @@ $2
 'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
 మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
 'loginreqtitle' => 'ప్రవేశము తప్పనిసరి',
-'loginreqlink' => 'à°²à±\8bనిà°\95à°¿ à°°ండి',
+'loginreqlink' => 'లాà°\97ినవండి',
 'loginreqpagetext' => 'ఇతర పుటలను చూడడానికి మీరు $1 ఉండాలి.',
 'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
 'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్చిక సంకేతపదాన్ని $2కి పంపించాం.
@@ -945,6 +977,9 @@ $2
 'cantcreateaccount-text' => "ఈ ఐపీ అడ్రసు ('''$1''') నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిరోధించారు.
 
 $3 చెప్పిన కారణం: ''$2''",
+'cantcreateaccount-range-text' => "'''$1''' శ్రేణిలోని IP చిరునామాల నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిషేధించారు. మీ IP చిరునామా ('''$4''') ఈ శ్రేణిలోనే ఉంది.
+
+$3 ఇచ్చిన కారణం: ''$2''",
 
 # History pages
 'viewpagelogs' => 'ఈ పేజీకి సంబంధించిన లాగ్‌లను చూడండి',
@@ -985,12 +1020,12 @@ $3 చెప్పిన కారణం: ''$2''",
 'rev-deleted-user-contribs' => '[వాడుకరిపేరు లేదా ఐపీ చిరునామాని తొలగించారు  - మార్పుచేర్పుల నుండి మార్పుని దాచారు]',
 'rev-deleted-text-permission' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో పూర్తి వివరాలు ఉండవచ్చు.",
-'rev-deleted-text-unhide' => "à°\88 à°ªà±\87à°\9cà±\80 à°\95à±\82à°°à±\8dà°ªà±\81ని '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81'''.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
-మీరు కావాలనుకుంటే, నిర్వాహకులుగా [$1 ఈ కూర్పుని చూడవచ్చు].",
+'rev-deleted-text-unhide' => "à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°¨à±\81 '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°¾à°\82'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
+మీరు కావాలనుకుంటే, [$1 ఈ కూర్పుని చూడవచ్చు].",
 'rev-suppressed-text-unhide' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\89à°\82à°¡à±\8aచ్చు.
-ముందుకు సాగాలనుకుంటే ఒక నిర్వాహకుడిగా మీరీ [$1 కూర్పును చూడవచ్చు].",
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b à°µà°¿à°µà°°à°¾à°²à±\81 à°\9aà±\82à°¡à°µచ్చు.
+ముందుకు సాగాలనుకుంటే [$1 కూర్పును చూడవచ్చు].",
 'rev-deleted-text-view' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
 ఒక నిర్వాహకుడిగా మీరు దాన్ని చూడవచ్చు; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
 'rev-suppressed-text-view' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
@@ -1013,10 +1048,6 @@ $3 చెప్పిన కారణం: ''$2''",
 'revisiondelete' => 'కూర్పులను తొలగించు/తొలగింపును రద్దుచెయ్యి',
 'revdelete-nooldid-title' => 'తప్పుడు లక్ష్యపు కూర్పు',
 'revdelete-nooldid-text' => 'ఈ పని ఏ కూర్పు లేదా కూర్పుల మీద చెయ్యాలో మీరు సూచించలేదు, లేదా మీరు సూచించిన కూర్పు లేదు, లేదా ప్రస్తుత కూర్పునే దాచాలని ప్రయత్నిస్తున్నారు.',
-'revdelete-nologtype-title' => 'చిట్టా రకం ఇవ్వలేదు',
-'revdelete-nologtype-text' => 'ఈ చర్య జరపాల్సిన చిట్టా రకాన్ని మీరు పేర్కొననేలేదు.',
-'revdelete-nologid-title' => 'తప్పుడు చిట్టా పద్దు',
-'revdelete-nologid-text' => 'ఈ పని చేయడానికి మీరు లక్ష్యిత చిట్టా పద్దుని ఇవ్వలేదు లేదా మీరు చెప్పిన పద్దు ఉనికిలో లేదు.',
 'revdelete-no-file' => 'ఆ పేర్కొన్న ఫైలు ఉనికిలో లేదు.',
 'revdelete-show-file-confirm' => 'మీరు నిజంగానే "<nowiki>$1</nowiki>"  ఫైలు యొక్క $2 $3 నాటి తొలగించిన కూర్పుని చూడాలనుకుంటున్నారా?',
 'revdelete-show-file-submit' => 'అవును',
@@ -1033,8 +1064,8 @@ $3 చెప్పిన కారణం: ''$2''",
 'revdelete-hide-text' => 'పునఃపరిశీలన పాఠ్యం',
 'revdelete-hide-image' => 'ఫైలులోని విషయాన్ని దాచు',
 'revdelete-hide-name' => 'చర్యను, లక్ష్యాన్నీ దాచు',
-'revdelete-hide-comment' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°µà±\8dయాà°\96à±\8dయనà±\81 à°¦à°¾à°\9aà±\81',
-'revdelete-hide-user' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°\9aà±\87సినవారి à°¸à°­à±\8dయనామానà±\8dని/à°\90à°ªà±\80ని à°¦à°¾à°\9aà±\81',
+'revdelete-hide-comment' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°¸à°¾à°°à°¾à°\82à°¶à°\82',
+'revdelete-hide-user' => 'దిదà±\8dà°¦à±\81బాà°\9fà±\81 à°\9aà±\87సినవారి à°µà°¾à°¡à±\81à°\95à°°à°¿ à°ªà±\87à°°à±\81/à°\90à°ªà±\80 à°\9aà°¿à°°à±\81నామా',
 'revdelete-hide-restricted' => 'డేటాను అందరిలాగే నిర్వాహకులకు కూడా కనబడనివ్వకు',
 'revdelete-radio-same' => '(మార్చకు)',
 'revdelete-radio-set' => 'అవును',
@@ -1050,8 +1081,6 @@ $1",
 'logdelete-failure' => "'''చిట్టా కనబడే పద్ధతిని అమర్చలేకపోయాం:'''
 $1",
 'revdel-restore' => 'దృశ్యతని మార్చు',
-'revdel-restore-deleted' => 'తొలగించిన కూర్పులు',
-'revdel-restore-visible' => 'కనిపిస్తున్న కూర్పులు',
 'pagehist' => 'పేజీ చరిత్ర',
 'deletedhist' => 'తొలగించిన చరిత్ర',
 'revdelete-hide-current' => '$2, $1 నాటి అంశాన్ని దాచడంలో లోపం దొర్లింది: ఇది ప్రస్తుత కూర్పు.
@@ -1117,18 +1146,19 @@ $1",
 'compareselectedversions' => 'ఎంచుకున్న సంచికలను పోల్చిచూడు',
 'showhideselectedversions' => 'ఎంచుకున్న కూర్పులను చూపించు/దాచు',
 'editundo' => 'మార్పుని రద్దుచెయ్యి',
+'diff-empty' => '(తేడా లేదు)',
 'diff-multi' => '({{PLURAL:$2|ఒక వాడుకరి|$2 వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
 'diff-multi-manyusers' => '$2 మంది పైన ({{PLURAL:$2|ఒక వాడుకరి|వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
+'difference-missing-revision' => 'ఈ తేడా ($1) యొక్క {{PLURAL:$2|ఒక కూర్పు|$2 కూర్పులు}} of this difference {{PLURAL:$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}}',
@@ -1137,10 +1167,8 @@ $1",
 'nextn-title' => 'తదుపరి $1 {{PLURAL:$1|ఫలితం|ఫలితాలు}}',
 'shown-title' => 'పేజీకి $1 {{PLURAL:$1|ఫలితాన్ని|ఫలితాలను}} చూపించు',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) చూపించు.',
-'searchmenu-legend' => 'అన్వేషణ ఎంపికలు',
 'searchmenu-exists' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేజీ ఉంది'''",
 'searchmenu-new' => "'''ఈ వికీలో \"[[:\$1]]\" అనే పేరుతో పేజీని సృష్టించు!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ఈ ఉపసర్గ ఉన్న పేజీలను చూడండి]]',
 'searchprofile-articles' => 'విషయపు పేజీలు',
 'searchprofile-project' => 'సహాయం మరియు ప్రాజెక్టు పేజీలు',
 'searchprofile-images' => 'బహుళమాధ్యమాలు',
@@ -1161,31 +1189,28 @@ $1",
 'search-interwiki-default' => '$1 ఫలితాలు:',
 'search-interwiki-more' => '(మరిన్ని)',
 'search-relatedarticle' => 'సంబంధించినవి',
-'mwsuggest-disable' => 'AJAX సూచనలను అచేతనంచేయి',
 'searcheverything-enable' => 'అన్ని పేరుబరుల్లో వెతుకు',
 'searchrelated' => 'సంబంధించినవి',
 'searchall' => 'అన్నీ',
 'showingresults' => "కింద ఉన్న {{PLURAL:$1|'''ఒక్క''' ఫలితం|'''$1''' ఫలితాలు}}, #'''$2''' నుండి మొదలుకొని చూపిస్తున్నాం.",
 'showingresultsnum' => "కింద ఉన్న {{PLURAL:$3|'''ఒక్క''' ఫలితం|'''$3''' ఫలితాలు}}, #'''$2''' నుండి మొదలుకొని చూపిస్తున్నాం.",
 '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}} అన్వేషణ తాత్కాలికంగా పని చెయ్యడం లేదు. ఈలోగా మీరు గూగుల్‌ ఉపయోగించి అన్వేషించవచ్చు. ఒక గమనిక: గూగుల్‌ ద్వారా కాలదోషం పట్టిన ఫలితాలు రావడానికి అవకాశం ఉంది.',
+'search-error' => '$1 కోసం వెతికేటపుడు లోపమేదో దొర్లింది.',
 
 # Preferences page
 'preferences' => 'అభిరుచులు',
 'mypreferences' => 'అభిరుచులు',
 'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
-'changepassword' => 'సంకేతపదాన్ని మార్చండి',
+'prefsnologintext2' => 'మీ అభిరుచులను మార్చుకునేందుకు $1.',
 'prefs-skin' => 'అలంకారం',
 'skin-preview' => 'మునుజూపు/సరిచూడు',
 'datedefault' => 'ఏదైనా పరవాలేదు',
@@ -1208,25 +1233,25 @@ $1",
 'prefs-email' => 'ఈ-మెయిల్ ఎంపికలు',
 'prefs-rendering' => 'రూపురేఖలు',
 'saveprefs' => 'భద్రపరచు',
-'resetprefs' => 'మునుపటి వలె',
-'restoreprefs' => 'సృష్టించబడినప్పటి అభిరుచులు తిరిగి తీసుకురా',
+'restoreprefs' => 'అప్రమేయ అమరికలను పునఃస్థాపించు (అన్ని విభాగాల్లోనూ)',
 'prefs-editing' => 'మార్పులు',
 'rows' => 'వరుసలు',
 'columns' => 'వరుసలు:',
 'searchresultshead' => 'అన్వేషణ',
-'resultsperpage' => 'పేజీకి ఫలితాలు:',
 'stub-threshold' => '<a href="#" class="stub">మొలక లింకు</a> ఫార్మాటింగు కొరకు హద్దు (బైట్లు):',
 'stub-threshold-disabled' => 'అచేతనం',
 'recentchangesdays' => 'ఇటీవలి మార్పులు లో చూపించవలసిన రోజులు:',
 'recentchangesdays-max' => '($1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం)',
 'recentchangescount' => 'అప్రమేయంగా చూపించాల్సిన దిద్దుబాట్ల సంఖ్య:',
 'prefs-help-recentchangescount' => 'ఇది ఇటీవలి మార్పులు, పేజీ చరిత్రలు, మరియు చిట్టాలకు వర్తిస్తుంది.',
+'prefs-help-watchlist-token2' => 'మీ వీక్షణజాబితా యొక్క జాలవడ్డింపుకు చెందిన రహస్య తాళమిది.
+ఈ తాళం తెలిసిన ఎవరైనా మీ వీక్షణజాబితాను చదవగలుగుతారు. అందుచేత దీన్ని ఎవరికీ ఇవ్వకండి.
+[[Special:ResetTokens|దాన్ని మార్చాలంటే ఇక్కడ నొక్కండి]].',
 'savedprefs' => 'మీ అభిరుచులను భద్రపరిచాం.',
 'timezonelegend' => 'కాల మండలం:',
 'localtime' => 'స్థానిక సమయం:',
 'timezoneuseserverdefault' => 'వికీ అప్రమేయాన్ని ఉపయోగించు ($1)',
 'timezoneuseoffset' => 'ఇతర (భేదాన్ని ఇవ్వండి)',
-'timezoneoffset' => 'తేడా¹:',
 'servertime' => 'సర్వరు సమయం:',
 'guesstimezone' => 'విహారిణి నుండి తీసుకో',
 'timezoneregion-africa' => 'ఆఫ్రికా',
@@ -1264,11 +1289,13 @@ $1",
 'badsig' => 'సంతకాన్ని సరిగ్గా ఇవ్వలేదు; HTML ట్యాగులను ఒకసారి పరిశీలించండి.',
 'badsiglength' => 'మీ సంతకం చాలా పెద్దగా ఉంది.
 ఇది తప్పనిసరిగా $1 {{PLURAL:$1|అక్షరం|అక్షరాల}} లోపులోనే ఉండాలి.',
-'yourgender' => 'లింగం:',
-'gender-unknown' => 'వెల్లడించకండి',
-'gender-male' => 'పురుషుడు',
-'gender-female' => 'స్త్రీ',
-'prefs-help-gender' => 'ఐచ్ఛికం: లింగ-సమంజసమైన సంబోధనలకు ఈ మృదుఉపకరణం వాడుకుంటుంది. ఈ సమాచారం బహిర్గతమౌతుంది.',
+'yourgender' => 'మిమ్మల్ని ఎలా సంబోధించడానికి ఇష్టపడతారు?',
+'gender-unknown' => 'వెల్లడించడానికి నేను ఇష్టపడట్లేదు',
+'gender-male' => 'అతను వికీ పేజీలను సరిదిద్దుతాడు',
+'gender-female' => 'ఆమె వికీ పేజీలను సరిదిద్దుతుంది',
+'prefs-help-gender' => 'ఈ అభిరుచిని అమర్చుకోవడం ఐచ్చికం.
+మిమ్మల్ని సంబోధించేప్పుడూ మిమ్మల్ని పేర్కొనేప్పుడూ వ్యాకరణపరంగా సరైన లింగాన్ని  వాడటానికి ఈ విలువ ఉపయోగపడుతుంది.
+ఈ సమాచారం బహిరంగం.',
 'email' => 'ఈ-మెయిలు',
 'prefs-help-realname' => 'అసలు పేరు (తప్పనిసరి కాదు), మీ అసలు పేరు ఇస్తేగనక, మీ రచనలన్నీ మీ అసలు పేరుతోనే గుర్తిస్తూ ఉంటారు.',
 'prefs-help-email' => 'ఈ-మెయిలు చిరునామా ఐచ్చికం, కానీ మీరు సంకేతపదాన్ని మర్చిపోతే కొత్త సంకేతపదాన్ని మీకు పంపించడానికి అవసరమవుతుంది.',
@@ -1280,7 +1307,9 @@ $1",
 'prefs-signature' => 'సంతకం',
 'prefs-dateformat' => 'తేదీ ఆకృతి',
 'prefs-timeoffset' => 'సమయ సవరణ',
-'prefs-advancedediting' => 'ఉన్నత ఎంపికలు',
+'prefs-advancedediting' => 'సాధారణ ఎంపికలు',
+'prefs-editor' => 'కూర్పరి',
+'prefs-preview' => 'మునుజూపు',
 'prefs-advancedrc' => 'ఉన్నత ఎంపికలు',
 'prefs-advancedrendering' => 'ఉన్నత ఎంపికలు',
 'prefs-advancedsearchoptions' => 'ఉన్నత ఎంపికలు',
@@ -1288,7 +1317,10 @@ $1",
 'prefs-displayrc' => 'ప్రదర్శన ఎంపికలు',
 'prefs-displaysearchoptions' => 'ప్రదర్శన ఎంపికలు',
 'prefs-displaywatchlist' => 'ప్రదర్శన ఎంపికలు',
+'prefs-tokenwatchlist' => 'టోకెన్',
 'prefs-diffs' => 'తేడాలు',
+'prefs-help-prefershttps' => 'ఈ అభిరుచి మీరు పైసారి లాగినైనపుడు అమలౌతుంది.',
+'prefs-tabs-navigation-hint' => 'చిట్కా: ట్యాబుల జాబితాలో ఓ ట్యాబు నుండి మరోదానికి వెళ్ళేందుకు కుడి ఎడమ బాణాల కీలను వాడవచ్చు.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'ఈ-మెయిలు చిరునామా సరిగానే ఉన్నట్టుంది',
@@ -1312,9 +1344,11 @@ $1",
 'userrights-no-interwiki' => 'ఇతర వికీలలో వాడుకరి హక్కులను మార్చడానికి మీకు అనుమతి లేదు.',
 'userrights-nodatabase' => '$1 అనే డేటాబేసు లేదు లేదా అది స్థానికం కాదు.',
 'userrights-nologin' => 'వాడుకరి హక్కులను ఇవ్వడానికి మీరు తప్పనిసరిగా ఓ నిర్వాహక ఖాతాతో [[Special:UserLogin|లోనికి ప్రవేశించాలి]].',
-'userrights-notallowed' => 'వాడుకరి హక్కులను చేర్చే మరియు తొలగించే అనుమతి మీ ఖాతాకు లేదు.',
+'userrights-notallowed' => 'వాడుకరి హక్కులను చేర్చే మరియు తొలగించే అనుమతి మీకు లేదు.',
 'userrights-changeable-col' => 'మీరు మార్చదగిన గుంపులు',
 'userrights-unchangeable-col' => 'మీరు మార్చలేని గుంపులు',
+'userrights-conflict' => 'వాడుకరి హక్కుల మార్పులలో ఘర్షణ! మీ మార్పులను సమీక్షించి, నిర్ధారించండి.',
+'userrights-removed-self' => 'మీ హక్కులను మీరు విజయవంతంగా తొలగించుకున్నారు. తద్వారా, ఈ పేజీని చూడడానికి మీకు ఇక అనుమతి లేదు.',
 
 # Groups
 'group' => 'గుంపు:',
@@ -1380,10 +1414,17 @@ $1",
 'right-unblockself' => 'వారినే అనిరోధించుకోవడం',
 'right-protect' => 'సంరక్షణ స్థాయిలను మార్చు, సంరక్షిత పేజీలలో దిద్దుబాటు చెయ్యి',
 'right-editprotected' => 'సంరక్షిత పేజీలలో దిద్దుబటు చెయ్యి (కాస్కేడింగు సంరక్షణ లేనివి)',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" గా సంరక్షించబడ్డ పేజీలను మార్చు',
 'right-editinterface' => 'యూజరు ఇంటరుఫేసులో దిద్దుబాటు చెయ్యి',
 'right-editusercssjs' => 'ఇతర వాడుకరుల CSS, JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
 'right-editusercss' => 'ఇతర వాడుకరుల CSS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
 'right-edituserjs' => 'ఇతర వాడుకరుల JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
+'right-editmyuserjs' => 'మీ స్వంత JavaScript దస్త్రాలను మార్చండి',
+'right-viewmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను చూడండి',
+'right-editmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను మార్చుకోండి. ఈ హక్కు లేకపోయినా, కొన్ని చర్యల ద్వారా పేజీలు జాబితాకు చేరుతాయని గమనించండి.',
+'right-viewmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను చూడండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను మార్చుకోండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyoptions' => 'మీ స్వంత అభిరుచులను మార్చుకోండి',
 'right-rollback' => 'ఒకానొక పేజీలో చివరి దిద్దుబాటు చేసిన వాడుకరి చేసిన దిద్దుబాట్లను రద్దుచేయి',
 'right-markbotedits' => 'వెనక్కి తెచ్చిన దిద్దుబాట్లను బాట్ దిద్దుబాట్లుగా గుర్తించు',
 'right-noratelimit' => 'రేటు పరిమితులు ప్రభావం చూపవు',
@@ -1434,6 +1475,7 @@ $1",
 'action-suppressionlog' => 'ఈ అంతరంగిక చిట్టాను చూసే',
 'action-block' => 'ఈ వాడుకరిని మార్పులు చేయడం నుండి నిరోధించే',
 'action-protect' => 'ఈ పేజీకి సంరక్షణా స్థాయిని మార్చే',
+'action-rollback' => 'ఏదైనా పేజీలో మార్పులు చేసిన చివరి వాడుకరి యొక్క మార్పులను త్వరితంగా వెనక్కి తీసుకెళ్ళు',
 'action-import' => 'మరో వికీ నుండి ఈ పేజీని దిగుమతి చేసే',
 'action-importupload' => 'ఎగుమతి చేసిన ఫైలు నుండి ఈ పేజీలోనికి దిగుమతి చేసే',
 'action-patrol' => 'ఇతరుల మార్పులను పర్యవేక్షించినవిగా గుర్తించే',
@@ -1447,6 +1489,7 @@ $1",
 
 # Recent changes
 'nchanges' => '{{PLURAL:$1|ఒక మార్పు|$1 మార్పులు}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|చివరి దర్శనం నుండి}}',
 'enhancedrc-history' => 'చరితం',
 'recentchanges' => 'ఇటీవలి మార్పులు',
 'recentchanges-legend' => 'ఇటీవలి మార్పుల ఎంపికలు',
@@ -1456,8 +1499,9 @@ $1",
 'recentchanges-label-minor' => 'ఇది ఒక చిన్న మార్పు',
 'recentchanges-label-bot' => 'ఈ మార్పును ఒక బాటు చేసింది',
 'recentchanges-label-unpatrolled' => 'ఈ దిద్దుబాటు మీద నిఘా లేదు',
-'recentchanges-legend-newpage' => '$1 - కొత్త పేజీ',
-'rcnote' => "$4 నాడు $5 సమయానికి, గత {{PLURAL:$2|ఒక్క రోజులో|'''$2''' రోజులలో}} చేసిన చివరి {{PLURAL:$1|ఒక్క మార్పు కింద ఉంది|'''$1''' మార్పులు కింద ఉన్నాయి}}.",
+'recentchanges-label-plusminus' => 'ఈ పేజి పరిమాణంలో  జరిగిన మార్పుల  బైట్ల సంఖ్య',
+'recentchanges-legend-heading' => "'''సూచిక :'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|కొత్త పేజీల జాబితా]]ను కూడా చూడండి)',
 'rcnotefrom' => '<b>$2</b> నుండి జరిగిన మార్పులు (<b>$1</b> వరకు చూపబడ్డాయి).',
 'rclistfrom' => '$1 నుండి జరిగిన మార్పులను చూపించు',
 'rcshowhideminor' => 'చిన్న మార్పులను $1',
@@ -1498,7 +1542,7 @@ $1",
 'reuploaddesc' => 'మళ్ళీ అప్‌లోడు ఫారంకు వెళ్ళు.',
 'upload-tryagain' => 'మార్చిన ఫైలు వివరణని దాఖలుచేయండి',
 'uploadnologin' => 'లాగిన్‌ అయిలేరు',
-'uploadnologintext' => 'à°«à±\88à°²à±\81 à°\85à°ªà±\8dâ\80\8cà°²à±\8bà°¡à±\81 à°\9aà±\86à°¯à±\8dయాలà°\82à°\9fà±\87, à°®à±\80à°°à±\81 [[Special:UserLogin|లాà°\97à°¿à°¨à±\8dâ\80\8c]] à°\95ావాలి',
+'uploadnologintext' => 'దసà±\8dà°¤à±\8dరాలనà±\81 à°\8eà°\95à±\8dà°\95à°¿à°\82à°\9aడానిà°\95à°¿ à°®à±\80à°°à±\81 $1 à°\89à°\82డాలి.',
 'upload_directory_missing' => 'ఎగుమతి డైరెక్టరీ ($1) తప్పింది మరియు వెబ్ సర్వర్ దాన్ని సృష్టించలేకున్నది.',
 'upload_directory_read_only' => 'అప్‌లోడు డైరెక్టరీ ($1), వెబ్‌సర్వరు రాసేందుకు అనుకూలంగా లేదు.',
 'uploaderror' => 'ఎక్కింపు పొరపాటు',
@@ -1697,6 +1741,9 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'listfiles_size' => 'పరిమాణం',
 'listfiles_description' => 'వివరణ',
 'listfiles_count' => 'కూర్పులు',
+'listfiles-latestversion' => 'ప్రస్తుత కూర్పు',
+'listfiles-latestversion-yes' => 'అవును',
+'listfiles-latestversion-no' => 'కాదు',
 
 # File description page
 'file-anchor-link' => 'దస్త్రం',
@@ -1789,6 +1836,11 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'randompage' => 'యాదృచ్ఛిక పేజీ',
 'randompage-nopages' => 'ఈ క్రింది {{PLURAL:$2|పెరుబరిలో|పెరుబరులలో}} పేజీలు ఏమి లేవు:$1',
 
+# Random page in category
+'randomincategory-invalidcategory' => '"$1" అనేది సరైన పర్గం పేరు కాదు.',
+'randomincategory-nopages' => '[[:Category:$1|$1]] వర్గంలో పేజీలేమీ లేవు.',
+'randomincategory-selectcategory-submit' => 'వెళ్ళు',
+
 # Random redirect
 'randomredirect' => 'యాదృచ్చిక దారిమార్పు',
 'randomredirect-nopages' => '"$1" పేరుబరిలో దారిమార్పులేమీ లేవు.',
@@ -1876,10 +1928,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'protectedpages' => 'సంరక్షిత పేజీలు',
 'protectedpages-indef' => 'అనంత సంరక్షణ మాత్రమే',
 'protectedpages-cascade' => 'కాస్కేడింగు రక్షణలు మాత్రమే',
-'protectedpagestext' => 'కింది పేజీలను తరలించకుండా, దిద్దుబాటు చెయ్యకుండా సంరక్షించాము',
 'protectedpagesempty' => 'ఈ పరామితులతో ప్రస్తుతం ఏ పేజీలు కూడా సంరక్షించబడి లేవు.',
 'protectedtitles' => 'సంరక్షిత శీర్షికలు',
-'protectedtitlestext' => 'కింది శీర్షికలతో పేజీలు సృష్టించకుండా సంరక్షించబడ్డాయి',
 'protectedtitlesempty' => 'ఈ పరామితులతో ప్రస్తుతం శీర్షికలేమీ సరక్షించబడి లేవు.',
 'listusers' => 'వాడుకరుల జాబితా',
 'listusers-editsonly' => 'మార్పులు చేసిన వాడుకరులను మాత్రమే చూపించు',
@@ -1930,9 +1980,6 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'allpagesto' => 'ఇక్కడవరకు ఉన్న పేజీలు చూపించు:',
 'allarticles' => 'అన్ని పేజీలు',
 'allinnamespace' => 'అన్ని పేజీలు ($1 namespace)',
-'allnotinnamespace' => 'అన్ని పేజీలు ($1 నేంస్పేస్ లేనివి)',
-'allpagesprev' => 'పూర్వపు',
-'allpagesnext' => 'తర్వాతి',
 'allpagessubmit' => 'వెళ్లు',
 'allpagesprefix' => 'ఈ ఆదిపదం కలిగిన పేజీలను చూపించు:',
 'allpagesbadtitle' => 'మీరిచ్చిన పేజీ పేరు సరైనది కాకపోయి ఉండాలి లేదా దానికి భాషాంతర లేదా అంతర్వికీ ఆదిపదమైనా ఉండి ఉండాలి. పేర్లలో వాడకూడని కారెక్టర్లు ఆ పేరులో ఉండి ఉండవచ్చు.',
@@ -1940,6 +1987,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'allpages-hide-redirects' => 'దారిమార్పులను దాచు',
 
 # SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది $1 దాకా పాతదై ఉండవచ్చు.',
+'cachedspecial-viewing-cached-ts' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది పూర్తిగా వాస్తవమైన కూర్పు కాకపోవచ్చు.',
 'cachedspecial-refresh-now' => 'సరికొత్త కూర్పును చూడండి.',
 
 # Special:Categories
@@ -1974,7 +2023,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 # Special:ActiveUsers
 'activeusers' => 'క్రియాశీల వాడుకరుల జాబితా',
 'activeusers-intro' => 'ఇది గత $1 {{PLURAL:$1|రోజులో|రోజులలో}} ఏదైనా కార్యకలాపం చేసిన వాడుకరుల జాబితా.',
-'activeusers-count' => 'à°\97à°¡à°\9aà°¿à°¨ {{PLURAL:$3|à°\92à°\95 à°°à±\8bà°\9cà±\81|$3 à°°à±\8bà°\9cà±\81à°²}}à°²à±\8b $1 {{PLURAL:$1|మారà±\8dà°ªà±\81|మారà±\8dà°ªà±\81లు}}',
+'activeusers-count' => 'à°\97à°¡à°\9aà°¿à°¨ {{PLURAL:$3|à°\92à°\95 à°°à±\8bà°\9cà±\81|$3 à°°à±\8bà°\9cà±\81à°²}}à°²à±\8b $1 {{PLURAL:$1|à°\9aà°°à±\8dà°¯|à°\9aà°°à±\8dà°¯లు}}',
 'activeusers-from' => 'వాడుకరులను ఇక్కడ నుండి చూపించు:',
 'activeusers-hidebots' => 'బాట్లను దాచు',
 'activeusers-hidesysops' => 'నిర్వాహకులను దాచు',
@@ -1984,7 +2033,8 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
 'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
 విడివిడిగా హక్కులకు సంబంధించిన మరింత సమాచారం [[{{MediaWiki:Listgrouprights-helppage}}]] వద్ద లభించవచ్చు.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">ప్రసాదించిన హక్కు</span>
+'listgrouprights-key' => 'సూచిక:
+* <span class="listgrouprights-granted">ప్రసాదించిన హక్కు</span>
 * <span class="listgrouprights-revoked">వెనక్కి తీసుకున్న హక్కు</span>',
 'listgrouprights-group' => 'గుంపు',
 'listgrouprights-rights' => 'హక్కులు',
@@ -2015,6 +2065,7 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 'noemailtext' => 'ఈ వాడుకరి సరైన ఈ-మెయిలు చిరునామాని ఇవ్వలేదు.',
 'nowikiemailtitle' => 'ఈ-మెయిళ్ళను అనుమతించరు',
 'nowikiemailtext' => 'ఇతర వాడుకరుల నుండి ఈ-మెయిళ్ళను అందుకోడానికి ఈ వాడుకరి సుముఖంగా లేరు.',
+'emailnotarget' => 'గ్రహీతగా ఇచ్చిన వాడుకరిపేరు తప్పైనా కావచ్చు, లేదా అసలే ఉండి ఉండకపోవచ్చు',
 'emailtarget' => 'అందుకొనేవారి వాడుకరిపేరు ఇవ్వండి',
 'emailusername' => 'వాడుకరి పేరు:',
 'emailusernamesubmit' => 'దాఖలుచెయ్యి',
@@ -2067,10 +2118,21 @@ https://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
 # Displayed when you click the "watch" button and it is in the process of watching
 'watching' => 'గమనిస్తున్నాం...',
 'unwatching' => 'వీక్షణ నుండి తొలగిస్తున్నా...',
+'watcherrortext' => '"$1" కు మీ సెట్టింగులను మార్చేటపుడు ఏదో లోపం దొర్లింది.',
 
 'enotif_mailer' => '{{SITENAME}} ప్రకటన మెయిలు పంపునది',
 'enotif_reset' => 'అన్ని పేజీలను చూసినట్లుగా గుర్తించు',
 'enotif_impersonal_salutation' => '{{SITENAME}} వాడుకరి',
+'enotif_subject_deleted' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తొలగించారు}}',
+'enotif_subject_created' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|సృష్టించారు}}',
+'enotif_subject_moved' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తరలించారు}}',
+'enotif_subject_restored' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|పునస్థాపించారు}}',
+'enotif_subject_changed' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|మార్చారు}}',
+'enotif_body_intro_deleted' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తొలగించారు}}, $3 చూడండి.',
+'enotif_body_intro_created' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|సృష్టించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_moved' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తరలించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_restored' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|పునస్థాపించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_changed' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|మార్చారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
 'enotif_lastvisited' => 'మీ గత సందర్శన తరువాత జరిగిన మార్పుల కొరకు $1 చూడండి.',
 'enotif_lastdiff' => 'ఈ మార్పు చూసేందుకు  $1 కు వెళ్ళండి.',
 'enotif_anon_editor' => 'అజ్ఞాత వాడుకరి $1',
@@ -2125,12 +2187,15 @@ $UNWATCHURL కి వెళ్ళండి.
 'deleteotherreason' => 'ఇతర/అదనపు కారణం:',
 'deletereasonotherlist' => 'ఇతర కారణం',
 'deletereason-dropdown' => '* తొలగింపుకి సాధారణ కారణాలు
-** రచయిత అభ్యర్థన
+** స్పాము
+** దుశ్చర్య
 ** కాపీహక్కుల ఉల్లంఘన
-** దుశ్చర్య',
+** రచయిత అభ్యర్థన
+** తెగిపోయిన దారిమార్పు',
 'delete-edit-reasonlist' => 'తొలగింపు కారణాలని మార్చండి',
 'delete-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. {{SITENAME}}కు అడ్డంకులు కలగడాన్ని నివారించేందుకు గాను, అలాంటి పెద్ద పేజీల తొలగింపును నియంత్రించాం.',
 'delete-warning-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. దాన్ని తొలగిస్తే {{SITENAME}}కి చెందిన డేటాబేసు కార్యాలకు ఆటంకం కలగొచ్చు; అప్రమత్తతో ముందుకుసాగండి.',
+'deleting-backlinks-warning' => "'''హెచ్చరిక:''' మీరు తొలగించబోతున్న పేజీకి ఇతర పేజీల నుండి లింకులు ఉన్నాయి.",
 
 # Rollback
 'rollback' => 'దిద్దుబాట్లను రద్దుచేయి',
@@ -2166,7 +2231,9 @@ $UNWATCHURL కి వెళ్ళండి.
 'protect-title' => '"$1" యొక్క సంరక్షణ స్థాయి అమర్పు',
 'protect-title-notallowed' => '"$1" యొక్క సంరక్షణ స్థాయి',
 'prot_1movedto2' => '$1, $2కు తరలించబడింది',
+'protect-badnamespace-title' => 'సంరక్షించజాలని పేరుబరి',
 'protect-badnamespace-text' => 'ఈ పేరుబరిలో ఉన్న పేజీలను సంరక్షించలేరు.',
+'protect-norestrictiontypes-title' => 'సంరక్షించజాలని పేజీ',
 'protect-legend' => 'సంరక్షణను నిర్ధారించు',
 'protectcomment' => 'కారణం:',
 'protectexpiry' => 'గడువు:',
@@ -2181,7 +2248,7 @@ $UNWATCHURL కి వెళ్ళండి.
 'protect-cascadeon' => 'ఈ పేజీ కాస్కేడింగు రక్షణలో ఉన్న ఈ కింది {{PLURAL:$1|పేజీకి|పేజీలకు}} జతచేయటం వలన, ప్రస్తుతం రక్షణలో ఉంది.  మీరు ఈ పేజీ యొక్క రక్షణ స్థాయిన మార్చవచ్చు, దాని వలన కాస్కేడింగు రక్షణకు ఎటువంటి సమస్య ఉండదు.',
 'protect-default' => 'అందరు వాడుకరులను అనుమతించు',
 'protect-fallback' => '"$1" అనుమతి ఉన్న వాడుకరులను మాత్రమే అనుమతించు',
-'protect-level-autoconfirmed' => 'à°\95à±\8aà°¤à±\8dà°¤ à°®à°°à°¿à°¯à±\81 à°¨à°®à±\8bà°¦à±\81à°\95ాని à°µà°¾à°¡à±\81à°\95à°°à±\81లనà±\81 à°¨à°¿à°°à±\8bà°§ించు',
+'protect-level-autoconfirmed' => 'à°¸à±\8dవయనà±\8dనిరà±\8dధారిత à°µà°¾à°¡à±\81à°\95à°°à±\81లనà±\81 à°®à°¾à°¤à±\8dà°°à°®à±\87 à°\85à°¨à±\81మతించు',
 'protect-level-sysop' => 'నిర్వాహకులను మాత్రమే అనుమతించు',
 'protect-summary-cascade' => 'కాస్కేడింగు',
 'protect-expiring' => '$1 (UTC)న కాలంచెల్లుతుంది',
@@ -2241,7 +2308,6 @@ $UNWATCHURL కి వెళ్ళండి.
 'undeletebtn' => 'పునఃస్థాపించు',
 'undeletelink' => 'చూడండి/పునస్థాపించండి',
 'undeleteviewlink' => 'చూడండి',
-'undeletereset' => 'మునుపటి వలె',
 'undeleteinvert' => 'ఎంపికని తిరగవెయ్యి',
 'undeletecomment' => 'కారణం:',
 'undeletedrevisions' => '{{PLURAL:$1|ఒక సంచిక|$1 సంచికల}} పునఃస్థాపన జరిగింది',
@@ -2270,6 +2336,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'పేరుబరి:',
 'invert' => 'ఎంపికను తిరగవెయ్యి',
+'tooltip-invert' => 'ఎంచుకున్న పేరుబరి (చెక్ చేసి ఉంటే అనుబంధ పేరుబరి కూడా) లోని పేజీల్లో జరిగిన మార్పులను దాచేందుకు ఈ పెట్టెను చెక్ చెయ్యండి',
 'namespace_association' => 'సంబంధిత పేరుబరి',
 'blanknamespace' => '(మొదటి)',
 
@@ -2325,7 +2392,6 @@ $1',
 'block' => 'వాడుకరి నిరోధం',
 'unblock' => 'వాడుకరిపై నిరోధాన్ని తీసెయ్యండి',
 'blockip' => 'వాడుకరి నిరోధం',
-'blockip-title' => 'వాడుకరిని నిరోధించు',
 'blockip-legend' => 'వాడుకరి నిరోధం',
 'blockiptext' => 'ఏదైనా ప్రత్యేక ఐపీ చిరునామానో లేదా వాడుకరిపేరునో రచనలు చెయ్యకుండా నిరోధించాలంటే కింది ఫారాన్ని వాడండి.
 కేవలం దుశ్చర్యల నివారణ కోసం మాత్రమే దీన్ని వాడాలి, అదికూడా [[{{MediaWiki:Policy-url}}|విధానాన్ని]] అనుసరించి మాత్రమే.
@@ -2333,7 +2399,6 @@ $1',
 'ipadressorusername' => 'ఐపీ చిరునామా లేదా వాడుకరిపేరు:',
 'ipbexpiry' => 'అంతమయ్యే గడువు',
 'ipbreason' => 'కారణం:',
-'ipbreasonotherlist' => 'ఇతర కారణం',
 'ipbreason-dropdown' => '*సాధారణ నిరోధ కారణాలు
 ** తప్పు సమాచారాన్ని చొప్పించడం
 ** పేజీల్లోని సమాచారాన్ని తీసెయ్యడం
@@ -2350,8 +2415,6 @@ $1',
 'ipbsubmit' => 'ఈ సభ్యుని నిరోధించు',
 'ipbother' => 'వేరే గడువు',
 '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',
-'ipbotheroption' => 'వేరే',
-'ipbotherreason' => 'ఇతర/అదనపు కారణం',
 'ipbhidename' => 'మార్పులు మరియు జాబితాల నుండి ఈ వాడుకరిపేరుని దాచు',
 'ipbwatchuser' => 'ఈ సభ్యుని సభ్యుని పేజీ, చర్చాపేజీలను వీక్షణలో ఉంచు',
 'ipb-disableusertalk' => 'నిరోధంలో ఉండగా ఈ వాడుకరి తన స్వంత చర్చ పేజీలో మార్పుచేర్పులు చెయ్యకుండా నిరోధించు',
@@ -2435,7 +2498,6 @@ $1',
 'proxyblockreason' => 'మీ ఐపీ అడ్రసు ఒక ఓపెన్ ప్రాక్సీ కాబట్టి దాన్ని నిరోధించాం. మీ ఇంటర్నెట్ సేవాదారుని గానీ, సాంకేతిక సహాయకుని గానీ సంప్రదించి తీవ్రమైన ఈ భద్రతా వైఫల్యాన్ని గురించి తెలపండి.',
 'sorbsreason' => '{{SITENAME}} వాడే DNSBLలో మీ ఐపీ అడ్రసు ఒక ఓపెన్ ప్రాక్సీగా నమోదై ఉంది.',
 'sorbs_create_account_reason' => 'మీ ఐపీ అడ్రసు DNSBL లో ఓపెను ప్రాక్సీగా నమోదయి ఉంది. మీరు ఎకౌంటును సృష్టించజాలరు.',
-'cant-block-while-blocked' => 'నిరోధంలో ఉన్న మీరు ఇతర వాడుకరులపై నిరోధం అమలుచేయలేరు.',
 'cant-see-hidden-user' => 'మీరు నిరోధించదలచిన వాడుకరి ఇప్పటికే నిరోధించబడి, దాచబడి ఉన్నారు. మీకు హక్కు లేదు కాబట్టి, ఆ వాడుకరి నిరోధాన్ని చూడటంగానీ, దాన్ని మార్చడంగానీ చెయ్యలేరు.',
 'ipbblocked' => 'మీరు ఇతర వాడుకరులని నిరోధించలేరు లేదా అనిరోధించలేరు, ఎందుకంటే మిమ్మల్ని మీరే నిరోధించుకున్నారు',
 'ipbnounblockself' => 'మిమ్మల్ని మీరే అనిరోధించుకునే అనుమతి మీకు లేదు',
@@ -2459,6 +2521,7 @@ $1',
 'unlockdbsuccesstext' => 'డాటాబేసుకి తాళం తీసాం.',
 'lockfilenotwritable' => 'డేటాబేసుకు తాళంవేయగల ఫైలులో రాయలేకపోతున్నాను.  డేటాబేసుకు తాళంవేయటానికిగానీ లేదా తీసేయటానికిగానీ, వెబ్‌సర్వరులో ఉన్న ఈ ఫైలులో రాయగలగాలి.',
 'databasenotlocked' => 'డేటాబేసు లాకవలేదు.',
+'lockedbyandtime' => '($2 న $3 వద్ద {{GENDER:$1|$1}} ద్వారా)',
 
 # Move page
 'move-page' => '$1 తరలింపు',
@@ -2494,7 +2557,6 @@ $1',
 ఆ సందర్భాలలో, మీరు చర్చా పేజీని కూడా పనిగట్టుకుని తరలించవలసి ఉంటుంది, లేదా ఏకీకృత పరచవలసి ఉంటుంది.",
 'movearticle' => 'పేజీని తరలించు',
 'moveuserpage-warning' => "'''హెచ్చరిక:''' మీరు ఒక వాడుకరి పేజీని తరలించబోతున్నారు. పేజీ మాత్రమే తరలించబడుతుందనీ, వాడుకరి పేరుమార్పు జరగదనీ గమనించండి.",
-'movenologin' => 'లాగిన్‌ అయిలేరు',
 'movenologintext' => 'పేజీని తరలించడానికి మీరు [[Special:UserLogin|లాగిన్‌]] అయిఉండాలి.',
 'movenotallowed' => 'పేజీలను తరలించడానికి మీకు అనుమతి లేదు.',
 'movenotallowedfile' => 'మీకు ఫైళ్ళను తరలించే అనుమతి లేదు.',
@@ -2509,8 +2571,6 @@ $1',
 'movepage-moved-noredirect' => 'దారిమార్పుని సృష్టించలేదు.',
 'articleexists' => 'ఆ పేరుతో ఇప్పటికే ఒక పేజీ ఉంది, లేదా మీరు ఎంచుకున్న పేరు సరైనది కాదు. వేరే పేరు ఎంచుకోండి.',
 'cantmove-titleprotected' => 'ఈ పేరుతోఉన్న పేజీని సృష్టించనివ్వకుండా సంరక్షిస్తున్నారు, అందుకని ఈ ప్రదేశంలోకి పేజీని తరలించలేను',
-'talkexists' => "'''పేజీని జయప్రదంగా తరలించాము, కానీ చర్చా పేజీని తరలించలేక పోయాము. కొత్త పేరుతో చర్చ పేజీ ఇప్పటికే ఉంది, ఆ రెంటినీ మీరే ఏకీకృతం చెయ్యండి.'''",
-'movedto' => 'తరలింపు',
 'movetalk' => 'కూడా వున్న చర్చ పేజీని తరలించు',
 'move-subpages' => 'ఉపపేజీలను ($1 వరకు) తరలించు',
 'move-talk-subpages' => 'చర్చా పేజీ యొక్క ఉపపేజీలను ($1 వరకు) తరలించు',
@@ -2809,7 +2869,7 @@ $1',
 'file-info-size-pages' => '$1 × $2 పిక్సెళ్ళు, దస్త్రపు పరిమాణం: $3, MIME రకం: $4, $5 {{PLURAL:$5|పేజీ|పేజీలు}}',
 'file-nohires' => 'మరింత స్పష్టమైన బొమ్మ లేదు.',
 'svg-long-desc' => 'SVG ఫైలు, నామమాత్రంగా $1 × $2 పిక్సెళ్ళు, ఫైలు పరిమాణం: $3',
-'show-big-image' => 'à°\85సలà±\81 à°ªà°°à°¿à°®à°¾à°£ం',
+'show-big-image' => 'à°\85సలà±\81 à°¦à°¸à±\8dà°¤à±\8dà°°ం',
 'show-big-image-preview' => 'ఈ మునుజూపు పరిమాణం: $1.',
 'show-big-image-other' => 'ఇతర {{PLURAL:$2|వైశాల్యం|వైశాల్యాలు}}: $1.',
 'show-big-image-size' => '$1 × $2 పిక్సెళ్ళు',
@@ -3245,15 +3305,10 @@ $1',
 'exif-urgency-high' => 'ఎక్కువ ($1)',
 'exif-urgency-other' => 'వాడుకరి-నిర్వచిత ప్రాథాన్యత ($1)',
 
-# External editor support
-'edit-externally' => 'బయటి అప్లికేషను వాడి ఈ ఫైలును మార్చు',
-'edit-externally-help' => '(మరింత సమాచారం కొరకు [https://www.mediawiki.org/wiki/Manual:External_editors సెటప్‌ సూచనల]ని చూడండి)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'అన్నీ',
 'namespacesall' => 'అన్నీ',
 'monthsall' => 'అన్నీ',
-'limitall' => 'అన్నీ',
 
 # Email address confirmation
 'confirmemail' => 'ఈ-మెయిలు చిరునామా ధృవీకరించండి',
@@ -3274,7 +3329,6 @@ $1',
 'confirmemail_success' => 'మీ ఈ-మెయిలు చిరునామా ధృవీకరించబడింది.
 ఇక [[Special:UserLogin|లోనికి ప్రవేశించి]] వికీని అస్వాదించండి.',
 'confirmemail_loggedin' => 'మీ ఈ-మెయిలు చిరునామా ఇప్పుడు రూఢి అయింది.',
-'confirmemail_error' => 'మీ ధృవీకరణను భద్రపరచడంలో ఏదో లోపం జరిగింది.',
 'confirmemail_subject' => '{{SITENAME}} ఈ-మెయిలు చిరునామా ధృవీకరణ',
 'confirmemail_body' => '$1 ఐపీ చిరునామా నుండి ఎవరో, బహుశా మీరే,
 {{SITENAME}}లో "$2" అనే ఖాతాని ఈ ఈ-మెయిలు చిరునామాతో నమోదుచేసుకున్నారు.
@@ -3335,6 +3389,10 @@ $5
 'imgmultigo' => 'వెళ్ళు!',
 'imgmultigoto' => '$1వ పేజీకి వెళ్ళు',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(అప్రమేయ భాష)',
+'img-lang-go' => 'వెళ్ళు',
+
 # Table pager
 'ascending_abbrev' => 'ఆరోహణ',
 'descending_abbrev' => 'అవరోహణ',
@@ -3415,6 +3473,7 @@ $5
 'version-license' => 'లైసెన్సు',
 'version-poweredby-credits' => "ఈ వికీ  '''[https://www.mediawiki.org/ మీడియావికీ]'''చే శక్తిమంతం, కాపీహక్కులు  © 2001-$1 $2.",
 'version-poweredby-others' => 'ఇతరులు',
+'version-poweredby-translators' => 'translatewiki.net అనువాదకులు',
 'version-license-info' => 'మీడియావికీ అన్నది స్వేచ్ఛా మృదూపకరణం; మీరు దీన్ని పునఃపంపిణీ చేయవచ్చు మరియు/లేదా ఫ్రీ సాఫ్ట్&zwnj;వేర్ ఫౌండేషన్ ప్రచురించిన గ్నూ జనరల్ పబ్లిక్ లైసెస్సు వెర్షను 2 లేదా (మీ ఎంపిక ప్రకారం) అంతకంటే కొత్త వెర్షను యొక్క నియమాలకు లోబడి మార్చుకోవచ్చు.
 
 మీడియావికీ ప్రజోపయోగ ఆకాంక్షతో పంపిణీ చేయబడుతుంది, కానీ ఎటువంటి వారంటీ లేకుండా; కనీసం ఏదైనా ప్రత్యేక ఉద్దేశానికి సరిపడుతుందని గానీ లేదా వస్తుత్వం యొక్క అంతర్నిహిత వారంటీ లేకుండా. మరిన్ని వివరాలకు గ్నూ జనరల్ పబ్లిక్ లైసెన్సుని చూడండి.
@@ -3448,6 +3507,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'ప్రత్యేక పేజీలు',
+'specialpages-note-top' => 'సూచిక',
 'specialpages-note' => '* మామూలు ప్రత్యేక పుటలు.
 * <strong class="mw-specialpagerestricted">నియంత్రిత ప్రత్యేక పుటలు.</strong>
 * <span class="mw-specialpagecached">Cached ప్రత్యేక పుటలు (పాతబడి ఉండొచ్చు).</span>',
@@ -3488,12 +3548,13 @@ $5
 'tags-display-header' => 'మార్పుల జాబితాలో కనపించు రీతి',
 'tags-description-header' => 'అర్థం యొక్క పూర్తి వివరణ',
 'tags-hitcount-header' => 'ట్యాగులున్న మార్పులు',
+'tags-active-yes' => 'అవును',
+'tags-active-no' => 'కాదు',
 'tags-edit' => 'మార్చు',
 'tags-hitcount' => '$1 {{PLURAL:$1|మార్పు|మార్పులు}}',
 
 # Special:ComparePages
 'comparepages' => 'పుటల పోలిక',
-'compare-selector' => 'పుట కూర్పుల పోలిక',
 'compare-page1' => 'పుట 1',
 'compare-page2' => 'పుట 2',
 'compare-rev1' => 'కూర్పు 1',
@@ -3591,12 +3652,17 @@ $5
 'duration-minutes' => '$1 {{PLURAL:$1|నిమిషం|నిమిషాలు}}',
 'duration-hours' => '$1 {{PLURAL:$1|గంట|గంటలు}}',
 'duration-days' => '$1 {{PLURAL:$1|రోజు|రోజులు}}',
-'duration-weeks' => '$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|సహస్రాబ్దం|సహస్రాబ్దాలు}}',
 
+# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|క్షణం|క్షణాలు}}',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|క్షణం|క్షణాలు}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|బైటు|బైట్లు}}',
+
 # Special:ExpandTemplates
 'expandtemplates' => 'మూసలను విస్తరించు',
 'expand_templates_intro' => 'ఈ ప్రత్యేక పేజీ మీరిచ్చిన మూసలను పూర్తిగా విస్తరించి, చూపిస్తుంది. ఇది <nowiki>{{</nowiki>#language:...}} వంటి పార్సరు ఫంక్షన్లను, <nowiki>{{</nowiki>CURRENTDAY}} వంటి చరరాశులను(వేరియబుల్) కూడా విస్తరిస్తుంది &mdash; నిజానికి జమిలి(మీసాల) బ్రాకెట్లలో ఉన్న ప్రతీదాన్నీ ఇది విస్తరిస్తుంది. మీడియావికీ నుండి సంబంధిత పార్సరు స్టేజిని పిలిచి ఇది ఈ పనిని సాధిస్తుంది.',
index 2df3f10..1c55f47 100644 (file)
@@ -170,7 +170,6 @@ $messages = array(
 'qbedit' => 'Edita',
 'qbpageoptions' => "Pájina ne'e",
 'qbmyoptions' => "Ha'u-nia pájina sira",
-'qbspecialpages' => 'Pájina espesiál sira',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -399,7 +398,6 @@ Ita-nia mudansa la armazenadu seidauk!",
 # Search results
 'searchresults' => 'Rezultadu sira',
 'searchresults-title' => 'Rezultadu sira ba buka "$1"',
-'searchsubtitleinvalid' => "Ita buka tiha ona '''$1'''",
 'prevn' => 'molok {{PLURAL:$1|$1}}',
 'nextn' => 'oinmai {{PLURAL:$1|$1}}',
 'shown-title' => 'Hatudu {{PLURAL:$1|rezultadu|rezultadu}} $1 kada pájina',
@@ -414,8 +412,6 @@ Ita-nia mudansa la armazenadu seidauk!",
 'search-suggest' => 'Parese Ita buka: $1',
 'search-interwiki-caption' => 'Projetu seluseluk sira',
 'searchall' => 'hotu',
-'powersearch' => 'Buka',
-'powersearch-field' => 'Buka',
 'powersearch-toggleall' => 'Hotu',
 
 # Preferences page
@@ -613,9 +609,6 @@ Ita-nia mudansa la armazenadu seidauk!",
 'allpagesto' => 'Hatudu pájina sira; para iha:',
 'allarticles' => 'Pájina hotu',
 'allinnamespace' => 'Pájina hotu (iha espasu $1)',
-'allnotinnamespace' => 'Pájina hotu (la iha espasu $1)',
-'allpagesprev' => 'Molok',
-'allpagesnext' => 'Oinmai',
 'allpagessubmit' => 'Bá',
 'allpagesprefix' => 'Hatudu pájina sira ho prefiksu:',
 
@@ -750,13 +743,11 @@ Ita-nia mudansa la armazenadu seidauk!",
 'ipadressorusername' => "Diresaun IP ka naran uza-na'in:",
 'ipbexpiry' => 'Tempu:',
 'ipbreason' => 'Motivu:',
-'ipbreasonotherlist' => 'Motivu seluk',
 'ipbcreateaccount' => 'La bele kria konta foun',
 'ipbemailban' => 'La bele haruka korreiu eletróniku',
 'ipbsubmit' => "Blokeiu uza-na'in ne'e",
 'ipbother' => 'Tempu seluk:',
 'ipboptions' => '2 hours:2 hours,1 loron:1 day,3 Loron:3 days,1 semana:1 week,2 semana:2 weeks,1 fulan:1 month,3 fulan:3 months,6 fulan:6 months,1 tinan:1 year,infinite:infinite',
-'ipbotheroption' => 'seluk',
 'ipbhidename' => "Subar naran uza-na'in (iha kontribuisaun no lista seluk)",
 'ipbwatchuser' => "Hateke pájina uza-na'in nian (hamutuk ho pájina diskusaun)",
 'ipb-disableusertalk' => 'La bele edita ninia pájina diskusaun',
@@ -781,7 +772,6 @@ Ita-nia mudansa la armazenadu seidauk!",
 'newtitle' => 'Naran foun:',
 'move-watch' => "Hateke pájina ne'e",
 'movepagebtn' => 'Book pájina',
-'movedto' => 'book tiha ba',
 'movetalk' => 'Book pájina diskusaun mós',
 'movelogpage' => 'Lista book',
 'movereason' => 'Motivu:',
@@ -912,14 +902,10 @@ Ligasaun seluk iha liña - ne'e pájina sira iha ne'ebé bele inklui imajen aat.
 'exif-urgency-low' => 'Kraik ($1)',
 'exif-urgency-high' => 'Aas ($1)',
 
-# External editor support
-'edit-externally-help' => "(Haree [https://www.mediawiki.org/wiki/Manual:External_editors iha ne'e] ba informasaun barak liu)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hotu',
 'namespacesall' => 'hotu',
 'monthsall' => 'hotu',
-'limitall' => 'hotu',
 
 # action=purge
 'confirm_purge_button' => 'OK',
index ee1eefa..d525fbf 100644 (file)
@@ -92,7 +92,6 @@ $messages = array(
 'tog-minordefault' => 'Пешфарзи ҳамаи вироишҳоро ҷузъи ишора кунед',
 'tog-previewontop' => 'Намоиши пешнамоиши қаблӣ пеш аз қуттии вироиш ва на пас аз он',
 'tog-previewonfirst' => 'Нишон додани пешнамоиш дар нахустин вироиш',
-'tog-nocache' => 'Ҳофизаи ниҳонии саҳифа дар мурургар ғайрифаъол шавад',
 'tog-enotifwatchlistpages' => 'Агар сафҳа ё парвандае аз феҳристи пайгириҳоям вироиш шуд ба ман номае фиристода шавад',
 'tog-enotifusertalkpages' => 'Ҳангоме ки дар саҳифаи корбариам тағйир дода мешавад ба ман тариқи почтаи электронӣ пайём бифиристед.',
 'tog-enotifminoredits' => 'Барои тағийроти ҷузъӣ дар сафҳаҳо ва парвандаҳо ҳам ба ман номае фиристода шавад',
@@ -212,7 +211,6 @@ $messages = array(
 'qbedit' => 'Вироиш',
 'qbpageoptions' => 'Ин саҳифа',
 'qbmyoptions' => 'Саҳифаҳои ман',
-'qbspecialpages' => 'Саҳифаҳои вижа',
 'faq' => 'Саволҳои тез-тез пурсидашуда',
 'faqpage' => 'Project:Саволҳои тез-тез пурсидашуда',
 
@@ -402,9 +400,6 @@ $1',
 'perfcached' => 'Додаҳои зерин аз ҳофизаи муваққатӣ фарохонӣ шудаанд ва мумкин аст, комилан ба рӯз нашудаанд. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 '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 />
-Амал: $1<br />
-Пурсуҷӯ: $2',
 'viewsource' => 'Намоиши матни вики',
 'actionthrottled' => 'Ҷилави амали шумо гирифта шуд',
 'actionthrottledtext' => 'Ба манзури ҷилавгирӣ аз спам, шумо иҷоза надоред, ки чунин амалеро беш аз чанд бор дар як муддати замони кӯтоҳ анҷом бидиҳед. Лутфан пас аз чанд дақиқа дубора талош кунед.',
@@ -502,7 +497,7 @@ $1',
 'loginlanguagelabel' => 'Забон: $1',
 
 # Change password dialog
-'resetpass' => 'Сифр кардани калимаи убурӣ ҳисоби корбарӣ',
+'changepassword' => 'Иваз намудани калимаи убур',
 'resetpass_announce' => 'Шумо бо коди мувақатӣ ба систем вуруд шудаед. Барои анҷом додани вурудшавӣ, шумо бояд калимаи убурӣ ҷадидро инҷо ворид кунед:',
 'resetpass_header' => 'Тағйири гузарвожаи ҳисоб',
 'oldpassword' => 'Калимаи кӯҳнаи убур:',
@@ -749,8 +744,6 @@ $1',
 'revdelete-success' => "'''Тағйири намоёнии нусха бо муваффақият анҷом шуд.'''",
 'logdelete-success' => "'''Тағйири намоёнии маврид бо муваффақият анҷом шуд.'''",
 'revdel-restore' => 'Тағйири падидорӣ',
-'revdel-restore-deleted' => 'нусхаҳои ҳазфшуда',
-'revdel-restore-visible' => 'нусхаҳои намоён',
 'pagehist' => 'Таърихи саҳифа',
 'deletedhist' => 'Таърихи ҳазфшуда',
 'revdelete-edit-reasonlist' => 'Вироиш ҳазф далелҳо',
@@ -797,18 +790,13 @@ $1',
 # 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}}',
 'viewprevnext' => 'Намоиш ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Гузинаҳои ҷустуҷӯ',
 'searchmenu-exists' => "'''Саҳифае бо номи \"[[:\$1]]\" дар ин вики вуҷуд дорад.'''",
 'searchmenu-new' => "'''Эҷоди саҳифаи \"[[:\$1]]\" дар ин вики!'''",
 'searchprofile-articles' => 'Саҳифаҳои мӯҳтаво',
@@ -834,14 +822,10 @@ $1',
 'searchall' => 'ҳама',
 'showingresults' => "Намоиши {{PLURAL:$1|'''1''' натиҷа|'''$1''' натоиҷ}} дар зер оғоз аз #'''$2'''.",
 'showingresultsnum' => "Намоиши {{PLURAL:$3|'''1''' натиҷа|'''$3''' натоиҷ}} оғоз аз #'''$2'''.",
-'nonefound' => "'''Эзоҳ''': Танҳо чанд фазоиномҳо аз рӯи пешфарш ҷустуҷӯ мешаванд.
-Ҷустуҷӯи худро бо пешванди ''ҳама:'' барои ҷустуҷӯи мӯҳтавои пурра (саҳифаҳои баҳс, шаблонҳо ва ғайраҳо) такрор кунед, ё фазои номи дилхоҳро чун пешванд истифода баред.",
 'search-nonefound' => 'Натиҷаи муносиб бо дархост пайдо нашуд.',
-'powersearch' => 'Ҷустуҷӯ',
 'powersearch-legend' => 'Ҷустуҷӯи пешрафта',
 'powersearch-ns' => 'Ҷустуҷӯ дар фазоҳои ном:',
 'powersearch-redir' => 'Феҳрист кардани масирҳо',
-'powersearch-field' => 'Ҷустуҷӯ барои',
 'search-external' => 'Ҷустуҷӯи хориҷӣ',
 'searchdisabled' => 'Ҷустуҷу дар {{SITENAME}} ғайрифаъол карда шудааст. Шумо метавонед тариқи Google дар ҳол ҷустуҷӯ кунед. Таваҷҷӯҳ кунед, ки натоиҷи ҷустуҷӯ {{SITENAME}} метавонад барӯз набошад.',
 
@@ -849,7 +833,6 @@ $1',
 'preferences' => 'Тарҷиҳот',
 'mypreferences' => 'Танзимот',
 'prefs-edits' => 'Шумораи вироишҳо:',
-'changepassword' => 'Иваз намудани калимаи убур',
 'prefs-skin' => 'Пӯст',
 'skin-preview' => 'Пешнамоиш',
 'datedefault' => 'Бе тарҷиҳ',
@@ -862,19 +845,16 @@ $1',
 'prefs-misc' => 'Танзимоти ҳархела',
 'prefs-resetpass' => 'Тағйири гузарвожа',
 'saveprefs' => 'Захираи тарҷиҳот',
-'resetprefs' => 'Тозакунии тағйироти захиранашуда',
 'prefs-editing' => 'Дар ҳоли вироиш',
 'rows' => 'Теъдоди сатрҳо:',
 'columns' => 'Теъдоди сутунҳо:',
 'searchresultshead' => 'Ҷустуҷӯ',
-'resultsperpage' => 'Теъдоди натоиҷ дар ҳар саҳифа:',
 'stub-threshold' => 'Остонаи вироиши пайвандҳои <a href="#" class="stub">ноқис</a>:',
 'recentchangesdays' => 'Теъдоди рӯзҳои намоиш додашуда дар тағйироти охир:',
 'recentchangescount' => 'Теъдоди вироишҳо барои намоиш дар тағйироти охир:',
 'savedprefs' => 'Тарҷиҳоти шумо захира шуд.',
 'timezonelegend' => 'Минтақаи вақт:',
 'localtime' => 'Вақти маҳаллӣ:',
-'timezoneoffset' => 'Ихтилоф¹:',
 'servertime' => 'Вақти коргузор:',
 'guesstimezone' => 'Аз мурургар гирифта шавад',
 'timezoneregion-africa' => 'Африқо',
@@ -1014,7 +994,6 @@ $1',
 'recentchanges-label-minor' => 'Ин вироиши ҷузъи аст',
 'recentchanges-label-bot' => 'Ин вироишро робот анҷом додааст',
 'recentchanges-label-unpatrolled' => 'Ин вироиш ҳанӯз гаштзанӣ нашудааст',
-'rcnote' => "Дар поён  {{PLURAL:$1|'''1''' тағйире аст|'''$1''' тағйирот мебошанд}}, ки дар давоми {{PLURAL:$2|рӯҳ|'''$2''' рӯзҳои}} охир, сар карда аз $5, $4.",
 'rcnotefrom' => 'Дар зер тағйиротҳои охирин аз <b>$2</b> (то <b>$1</b> нишон дода шудааст).',
 'rclistfrom' => 'Нишон додани тағйиротҳои нав сар карда аз $1',
 'rcshowhideminor' => '$1 вироишҳои хурд',
@@ -1287,10 +1266,8 @@ $1',
 'deadendpagestext' => 'Саҳифаҳои зерин ба ҳеҷ дигар саҳифае дар {{SITENAME}} пайванд нестанд.',
 'protectedpages' => 'Саҳифаҳои ҳифзшуда',
 'protectedpages-indef' => 'Фақат ҳифзшудаҳои номуайян',
-'protectedpagestext' => 'Саҳифаи зерин аз вироиш ё кӯчонидани ҳифз шудаанд',
 'protectedpagesempty' => 'Дар ҳоли ҳозир ҳеҷ саҳифае муҳофизат нашудааст.',
 'protectedtitles' => 'Унвонҳои муҳофизатшуда',
-'protectedtitlestext' => 'Унвонҳои зерин аз эҷод муҳофизат шудаанд',
 'protectedtitlesempty' => 'Дар ҳоли ҳозир ҳеҷ унвоне бо ин параметрҳо муҳофизат нащудааст',
 'listusers' => 'Рӯйхати корбарон',
 'usercreated' => '{{GENDER:$3|Эҷодшуда}} дар таърихи $1 дар соати $2',
@@ -1332,9 +1309,6 @@ $1',
 'allpagesto' => 'Намоиши саҳифаҳо бо поёни дар:',
 'allarticles' => 'Ҳамаи мақолаҳо',
 'allinnamespace' => 'Ҳамаи саҳифаҳо ($1 namespace)',
-'allnotinnamespace' => 'Ҳамаи саҳифаҳо (ки дар фазоином $1 аст)',
-'allpagesprev' => 'Пешина',
-'allpagesnext' => 'Баъдина',
 'allpagessubmit' => 'Рав',
 'allpagesprefix' => 'Намоиши саҳифаҳои дорои пешванд:',
 'allpagesbadtitle' => 'Унвони саҳифаи дода шуда номӯътабар аст, ё инки дорои пешванди байнизабонӣ ё байнивикиӣ аст. Мумкин аст аломатҳоеро дорад, ки наметавон онҳоро дар унвонҳо истифода бурд.',
@@ -1575,7 +1549,6 @@ $NEWPAGE
 'undeletebtn' => 'Барқарор кардан',
 'undeletelink' => 'дидан/барқарор кардан',
 'undeleteviewlink' => 'намоиш',
-'undeletereset' => 'Аз нав',
 'undeletecomment' => 'Тавзеҳ:',
 'undeletedrevisions' => '$1 нусха бақарор {{PLURAL:$1|шуд|шуданд}}',
 'undeletedrevisions-files' => '$1 нусха ва $2 парванда барқарор {{PLURAL:$1|шуд|шуданд}}',
@@ -1653,7 +1626,6 @@ $1',
 'ipadressorusername' => 'IP нишона ё номи корбар:',
 'ipbexpiry' => 'Хотима:',
 'ipbreason' => 'Сабаб:',
-'ipbreasonotherlist' => 'Дигар далел',
 'ipbreason-dropdown' => '*Сабабҳои умумии бастан
 ** Ворид кардани иттилооти нодуруст
 ** Пок кардани иттилооти муфид аз саҳифаҳо
@@ -1668,8 +1640,6 @@ $1',
 'ipbsubmit' => 'Бастани ин корбар',
 'ipbother' => 'Дигар вақт:',
 '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',
-'ipbotheroption' => 'дигар',
-'ipbotherreason' => 'Далелҳои дигар/изофӣ:',
 'ipbhidename' => 'Пинҳони номи корбарӣ аз вироишҳо ва феҳристҳо',
 'badipaddress' => 'IP нишонаи номӯътабар',
 'blockipsuccesssub' => 'Бастан муваффақ щуд',
@@ -1762,7 +1732,6 @@ $1',
 
 Дар он ҳолатҳо, саҳифаро бояд ба таври дастӣ кӯчонид ва ё ду саҳифаро бо вироиш як кунед.",
 'movearticle' => 'Кӯчонидани саҳифа:',
-'movenologin' => 'Вуруд нашудаед',
 'movenologintext' => 'Барои кӯчонидани саҳифа шумо бояд корбари сабтшуда ва [[Special:UserLogin|ба систем вурудшуда]] бошед.',
 'movenotallowed' => 'Шумо иҷозати кӯчонидани саҳифаҳоро дар Википедиа надоред.',
 'movenotallowedfile' => 'Шумо иҷозати интиқоли парвандаҳоро надоред.',
@@ -1778,8 +1747,6 @@ $1',
 'articleexists' => 'Саҳифае бо ин ном вуҷуд надорад, ё номе, ки интихоб кардаед мӯътабар нест.
 Лутфан номи дигареро интихоб намоед.',
 'cantmove-titleprotected' => 'Шумо наметавонед ин саҳифаро ба ин нишона кӯчонед, барои он, ки унвони ҷадид аз эҷод кардан муҳофизат шудааст',
-'talkexists' => "'''Саҳифа бо мувафаққият худаш кӯчонида шуд, вале саҳифаи баҳсро, ба ин далел ки саҳифаи баҳсе дар унвони ҷадид вуҷуд дорад, кӯчонида намешавад. Лутфан онҳоро дастӣ таркиб кунед.'''",
-'movedto' => 'кӯчонидашуда ба',
 'movetalk' => 'Саҳифаи баҳси алоқаманд ҳам кӯчонида шавад',
 'move-subpages' => 'Интиқоли зерсаҳифаҳои (то як $1 адад)',
 'move-talk-subpages' => 'Зерсаҳифаҳоро ба саҳифаи баҳс интиқол диҳед (то $1 адад)',
@@ -2298,15 +2265,10 @@ $1',
 'exif-gpsdirection-t' => 'Раванди дуруст',
 'exif-gpsdirection-m' => 'Раванди магнетикӣ',
 
-# External editor support
-'edit-externally' => 'Ин файлро бо барномаи беруна таҳрир кунед',
-'edit-externally-help' => '(Барои иттилооти бештар [https://www.mediawiki.org/wiki/Manual:External_editors роҳнамои танзимотро оиди вироишгарони беруна] нигаред)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ҳама',
 'namespacesall' => 'ҳама',
 'monthsall' => 'ҳама',
-'limitall' => 'ҳама',
 
 # Email address confirmation
 'confirmemail' => 'Тасдиқи нишонаи почтаи электронӣ',
@@ -2324,7 +2286,6 @@ $1',
 'confirmemail_needlogin' => 'Барои тасдиқи почтаи электрониатон ниёз ба $1 доред.',
 'confirmemail_success' => 'Нишонаи почтаи электронии шумо тасдиқ шуд. Ҳамакнун метавонед ба систем вуруд карда аз вики лаззат бубаред.',
 'confirmemail_loggedin' => 'Нишонаи почтаи электронии шумо тасдиқ шуд.',
-'confirmemail_error' => 'Ҳангоми захираи таъйиди шумо ба мушкилие бархӯрда шуд.',
 'confirmemail_subject' => '{{SITENAME}} тасдиқи нишонаи почтаи электронӣ',
 'confirmemail_body' => 'Someone, probably you, from IP address $1,
 has registered an account "$2" with this e-mail address on {{SITENAME}}.
index 389bf17..6b3af02 100644 (file)
@@ -34,7 +34,6 @@ $messages = array(
 'tog-minordefault' => "Peşfarzi hamai viroişhoro çuz'i işora kuned",
 'tog-previewontop' => 'Namoişi peşnamoişi qablī peş az quttiji viroiş va na pas az on',
 'tog-previewonfirst' => 'Nişon dodani peşnamoiş dar naxustin viroiş',
-'tog-nocache' => "Hofizai nihoniji sahifa dar mururgar ƣajrifa'ol şavad",
 'tog-enotifwatchlistpages' => 'Agar sahifae mavridi pajgiriji man taƣjir karda şavad ba man tariqi poctai elektronī pajjom bifiristed.',
 'tog-enotifusertalkpages' => 'Hangome ki dar sahifai korbariam taƣjir doda meşavad ba man tariqi poctai elektronī pajjom bifiristed.',
 'tog-enotifminoredits' => "Baroi taƣjiroti çuz'i ba man tariqi poctai elektronī pajjom bifiristed.",
@@ -153,7 +152,6 @@ $messages = array(
 'qbedit' => 'Viroiş',
 'qbpageoptions' => 'In sahifa',
 'qbmyoptions' => 'Sahifahoi man',
-'qbspecialpages' => 'Sahifahoi viƶa',
 'faq' => 'Savolhoi tez-tez pursidaşuda',
 'faqpage' => 'Project:Savolhoi tez-tez pursidaşuda',
 
@@ -342,9 +340,6 @@ Lutfan inro ba [[Special:ListUsers/sysop|mudir]] bo işora kardani nişonai URL
 'perfcached' => 'Dodahoi zerin az hofizai muvaqqatī faroxonī şudaand va mumkin ast, komilan ba rūz naşudaand. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Dodahoi zerin az hofizai muvaqqatī faroxonī şudaand va mumkin ast, oxirin ba rūzrasonī $1 ast. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => "Imkoni ba rūzrasoniji in sahifa fe'lan ƣajrifa'ol şudaast.",
-'wrong_wfQuery_params' => 'Parametrhoi nodurust ba wfQuery()<br />
-Amal: $1<br />
-Pursuçū: $2',
 'viewsource' => 'Namoişi matni viki',
 'actionthrottled' => 'Çilavi amali şumo girifta şud',
 'actionthrottledtext' => 'Ba manzuri çilavgirī az spam, şumo içoza nadored, ki cunin amalero beş az cand bor dar jak muddati zamoni kūtoh ançom bidihed. Lutfan pas az cand daqiqa dubora taloş kuned.',
@@ -431,6 +426,7 @@ Lutfan peş az on, ki dubora taloş kuned, sabr kuned.',
 'loginlanguagelabel' => 'Zabon: $1',
 
 # Change password dialog
+'changepassword' => 'Ivaz namudani kalimai ubur',
 'resetpass_announce' => 'Şumo bo kodi muvaqatī ba sistem vurud şudaed. Baroi ançom dodani vurudşavī, şumo bojad kalimai uburī çadidro inço vorid kuned:',
 'resetpass_header' => 'Taƣjiri guzarvoƶai hisob',
 'oldpassword' => 'Kalimai kūhnai ubur:',
@@ -678,18 +674,13 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 # Search results
 'searchresults' => 'Natiçahoi çustuçū',
 'searchresults-title' => 'Natoiçi çustuçū baroi "$1"',
-'searchresulttext' => 'Baroi ittilooti beştar dar borai çustuçū dar {{SITENAME}}, nigared ba [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Şumo \'\'\'[[:$1]]\'\'\'ro çustuçū karded ([[Special:Prefixindex/$1|hamai sahifaho şurū\' bo "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|hamai sahifahoe, ki ba "$1" pajvastaand]])',
-'searchsubtitleinvalid' => "'''$1''' baroi pursuçū",
 'toomanymatches' => "Te'dodi mavoridi mutobiq xele zijod bud, lutfan darxosti digarero imtihon kuned",
 'titlematches' => 'Unvoni sahifa tatbiq mekunad',
-'notitlematches' => 'Unvonhoi heç maqolae rost nameojad',
 'textmatches' => 'Matni maqola tatbiq mekunad',
 'notextmatches' => 'Matni heç maqolae rost nameojad',
 'prevn' => 'qablī {{PLURAL:$1|$1}}',
 'nextn' => "ba'dī {{PLURAL:$1|$1}}",
 'viewprevnext' => 'Namoiş ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Guzinahoi çustuçū',
 'searchmenu-new' => "'''Eçodi sahifai \"[[:\$1]]\" dar in viki!'''",
 'searchprofile-advanced' => 'Peşrafta',
 'searchprofile-articles-tooltip' => 'Çustuçū dar $1',
@@ -709,13 +700,9 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'searchall' => 'hama',
 'showingresults' => "Namoişi {{PLURAL:$1|'''1''' natiça|'''$1''' natoiç}} dar zer oƣoz az #'''$2'''.",
 'showingresultsnum' => "Namoişi {{PLURAL:$3|'''1''' natiça|'''$3''' natoiç}} oƣoz az #'''$2'''.",
-'nonefound' => "'''Ezoh''': Tanho cand fazoinomho az rūi peşfarş çustuçū meşavand.
-Çustuçūi xudro bo peşvandi ''hama:'' baroi çustuçūi mūhtavoi purra (sahifahoi bahs, şablonho va ƣajraho) takror kuned, jo fazoi nomi dilxohro cun peşvand istifoda bared.",
-'powersearch' => 'Çustuçū',
 'powersearch-legend' => 'Çustuçūi peşrafta',
 'powersearch-ns' => 'Çustuçū dar fazohoi nom:',
 'powersearch-redir' => 'Fehrist kardani masirho',
-'powersearch-field' => 'Çustuçū baroi',
 'search-external' => 'Çustuçūi xoriçī',
 'searchdisabled' => "Çustuçu dar {{SITENAME}} ƣajrifa'ol karda şudaast. Şumo metavoned tariqi Google dar hol çustuçū kuned. Tavaççūh kuned, ki natoiçi çustuçū {{SITENAME}} metavonad barūz naboşad.",
 
@@ -723,7 +710,6 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'preferences' => 'Tarçihot',
 'mypreferences' => 'Tarçihoti man',
 'prefs-edits' => 'Şumorai viroişho:',
-'changepassword' => 'Ivaz namudani kalimai ubur',
 'prefs-skin' => 'Pūst',
 'skin-preview' => 'Peşnamoiş',
 'datedefault' => 'Be tarçih',
@@ -736,18 +722,15 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
 'prefs-misc' => 'Tanzimoti harxela',
 'prefs-resetpass' => 'Taƣjiri guzarvoƶa',
 'saveprefs' => 'Zaxirai tarçihot',
-'resetprefs' => 'Tozakuniji taƣjiroti zaxiranaşuda',
 'prefs-editing' => 'Dar holi viroiş',
 'rows' => "Te'dodi satrho:",
 'columns' => "Te'dodi sutunho:",
 'searchresultshead' => 'Çustuçū',
-'resultsperpage' => "Te'dodi natoiç dar har sahifa:",
 'stub-threshold' => 'Ostonai viroişi pajvandhoi <a href="#" class="stub">noqis</a>:',
 'recentchangesdays' => "Te'dodi rūzhoi namoiş dodaşuda dar taƣjiroti oxir:",
 'savedprefs' => 'Tarçihoti şumo zaxira şud.',
 'timezonelegend' => 'Mintaqai vaqt:',
 'localtime' => 'Vaqti mahallī:',
-'timezoneoffset' => 'Ixtilof¹:',
 'servertime' => 'Vaqti korguzor:',
 'guesstimezone' => 'Az mururgar girifta şavad',
 'timezoneregion-africa' => 'Afriqo',
@@ -880,7 +863,6 @@ On bojad kamtar az $1 {{PLURAL:$1|alomat|alomatho}} boşad.',
 'recentchanges-legend' => 'Ixtijoroti taƣjiroti oxirin',
 'recentchanges-summary' => 'Nazorati taƣjirothoi navtarin dar Vikipedia dar hamin sahifa ast.',
 'recentchanges-feed-description' => 'Radjobiji oxirin taƣjiroti in viki dar in xurd.',
-'rcnote' => "Dar pojon  {{PLURAL:$1|'''1''' taƣjire ast|'''$1''' taƣjirot meboşand}}, ki dar davomi {{PLURAL:$2|rūh|'''$2''' rūzhoi}} oxir, sar karda az $5, $4.",
 'rcnotefrom' => 'Dar zer taƣjirothoi oxirin az <b>$2</b> (to <b>$1</b> nişon doda şudaast).',
 'rclistfrom' => 'Nişon dodani taƣjirothoi nav sar karda az $1',
 'rcshowhideminor' => '$1 viroişhoi xurd',
@@ -1126,10 +1108,8 @@ Jak klik kardani rūi unvoni sutunho boisi taƣjiri tartibi namoişi parvandaho
 'deadendpagestext' => 'Sahifahoi zerin ba heç digar sahifae dar {{SITENAME}} pajvand nestand.',
 'protectedpages' => 'Sahifahoi hifzşuda',
 'protectedpages-indef' => 'Faqat hifzşudahoi nomuajjan',
-'protectedpagestext' => 'Sahifai zerin az viroiş jo kūconidani hifz şudaand',
 'protectedpagesempty' => 'Dar holi hozir heç sahifae muhofizat naşudaast.',
 'protectedtitles' => 'Unvonhoi muhofizatşuda',
-'protectedtitlestext' => 'Unvonhoi zerin az eçod muhofizat şudaand',
 'protectedtitlesempty' => 'Dar holi hozir heç unvone bo in parametrho muhofizat naщudaast',
 'listusers' => 'Rūjxati korbaron',
 'newpages' => 'Sahifahoi nav',
@@ -1168,9 +1148,6 @@ Jak klik kardani rūi unvoni sutunho boisi taƣjiri tartibi namoişi parvandaho
 'allpagesto' => 'Namoişi sahifaho bo pojoni dar:',
 'allarticles' => 'Hamai maqolaho',
 'allinnamespace' => 'Hamai sahifaho ($1 namespace)',
-'allnotinnamespace' => 'Hamai sahifaho (ki dar fazoinom $1 ast)',
-'allpagesprev' => 'Peşina',
-'allpagesnext' => "Ba'dina",
 'allpagessubmit' => 'Rav',
 'allpagesprefix' => 'Namoişi sahifahoi doroi peşvand:',
 'allpagesbadtitle' => "Unvoni sahifai doda şuda nomū'tabar ast, jo inki doroi peşvandi bajnizabonī jo bajnivikiī ast. Mumkin ast alomathoero dorad, ki nametavon onhoro dar unvonho istifoda burd.",
@@ -1370,7 +1347,6 @@ Dar in holatho, şumo bojad cand nusxai oxirin sahifaro niz ehjo kuned.',
 'undeletebtn' => 'Barqaror kardan',
 'undeletelink' => 'didan/barqaror kardan',
 'undeleteviewlink' => 'namoiş',
-'undeletereset' => 'Az nav',
 'undeletecomment' => 'Tavzeh:',
 'undeletedrevisions' => '$1 nusxa baqaror {{PLURAL:$1|şud|şudand}}',
 'undeletedrevisions-files' => '$1 nusxa va $2 parvanda barqaror {{PLURAL:$1|şud|şudand}}',
@@ -1442,7 +1418,6 @@ Daleli muşaxxas baroi in korro dar zer zikr kuned (baroi misol, zikri sahifahoe
 'ipadressorusername' => 'IP nişona jo nomi korbar:',
 'ipbexpiry' => 'Xotima:',
 'ipbreason' => 'Sabab:',
-'ipbreasonotherlist' => 'Digar dalel',
 'ipbreason-dropdown' => "*Sababhoi umumiji bastan
 ** Vorid kardani ittilooti nodurust
 ** Pok kardani ittilooti mufid az sahifaho
@@ -1457,8 +1432,6 @@ Daleli muşaxxas baroi in korro dar zer zikr kuned (baroi misol, zikri sahifahoe
 'ipbsubmit' => 'Bastani in korbar',
 'ipbother' => 'Digar vaqt:',
 'ipboptions' => '2 soat:2 hours,1 rūz:1 day,3 rūz:3 days,1 hafta:1 week,2 hafta:2 weeks,1 moh:1 month,3 moh:3 months,6 moh:6 months,1 sol:1 year,beoxir:infinite',
-'ipbotheroption' => 'digar',
-'ipbotherreason' => 'Dalelhoi digar/izofī:',
 'ipbhidename' => 'Pinhoni nomi korbarī az viroişho va fehristho',
 'badipaddress' => "IP nişonai nomū'tabar",
 'blockipsuccesssub' => 'Bastan muvaffaq щud',
@@ -1550,7 +1523,6 @@ lutfan mutmain şaved ki peş az kūconidani sahifa, oqibati in korro dark mekun
 
 Dar on holatho, sahifaro bojad ba tavri dastī kūconid va jo du sahifaro bo viroiş jak kuned.",
 'movearticle' => 'Kūconidani sahifa:',
-'movenologin' => 'Vurud naşudaed',
 'movenologintext' => 'Baroi kūconidani sahifa şumo bojad korbari sabtşuda va [[Special:UserLogin|ba sistem vurudşuda]] boşed.',
 'movenotallowedfile' => 'Şumo içozati intiqoli parvandahoro nadored.',
 'cant-move-user-page' => 'Şumo içozat nadored sahifahoi korbariji sarşoxaro intiqol dihed.',
@@ -1565,8 +1537,6 @@ Dar on holatho, sahifaro bojad ba tavri dastī kūconid va jo du sahifaro bo vir
 'articleexists' => "Sahifae bo in nom vuçud nadorad, jo nome, ki intixob kardaed mū'tabar nest.
 Lutfan nomi digarero intixob namoed.",
 'cantmove-titleprotected' => 'Şumo nametavoned in sahifaro ba in nişona kūconed, baroi on, ki unvoni çadid az eçod kardan muhofizat şudaast',
-'talkexists' => "'''Sahifa bo muvafaqqijat xudaş kūconida şud, vale sahifai bahsro, ba in dalel ki sahifai bahse dar unvoni çadid vuçud dorad, kūconida nameşavad. Lutfan onhoro dastī tarkib kuned.'''",
-'movedto' => 'kūconidaşuda ba',
 'movetalk' => 'Sahifai bahsi aloqamand ham kūconida şavad',
 'move-subpages' => 'Intiqoli zersahifahoi (to jak $1 adad)',
 'move-talk-subpages' => 'Zersahifahoro ba sahifai bahs intiqol dihed (to $1 adad)',
@@ -2083,15 +2053,10 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
 'exif-gpsdirection-t' => 'Ravandi durust',
 'exif-gpsdirection-m' => 'Ravandi magnetikī',
 
-# External editor support
-'edit-externally' => 'In fajlro bo barnomai beruna tahrir kuned',
-'edit-externally-help' => '(Baroi ittilooti beştar [https://www.mediawiki.org/wiki/Manual:External_editors rohnamoi tanzimotro oidi viroişgaroni beruna] nigared)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'hama',
 'namespacesall' => 'hama',
 'monthsall' => 'hama',
-'limitall' => 'hama',
 
 # Email address confirmation
 'confirmemail' => 'Tasdiqi nişonai poctai elektronī',
@@ -2109,7 +2074,6 @@ Firistanda bargardond: $1",
 'confirmemail_needlogin' => 'Baroi tasdiqi poctai elektroniaton nijoz ba $1 dored.',
 'confirmemail_success' => 'Nişonai poctai elektroniji şumo tasdiq şud. Hamaknun metavoned ba sistem vurud karda az viki lazzat bubared.',
 'confirmemail_loggedin' => 'Nişonai poctai elektroniji şumo tasdiq şud.',
-'confirmemail_error' => "Hangomi zaxirai ta'jidi şumo ba muşkilie barxūrda şud.",
 'confirmemail_subject' => '{{SITENAME}} tasdiqi nişonai poctai elektronī',
 'confirmemail_body' => 'Someone, probably you, from IP address $1,
 has registered an account "$2" with this e-mail address on {{SITENAME}}.
index 07fba52..25ed1cc 100644 (file)
@@ -60,7 +60,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'ชื่อเรื่องไม่เหมาะสม' ),
        'Blankpage'                 => array( 'หน้าว่าง' ),
        'Block'                     => array( 'บล็อกไอพี' ),
-       'Blockme'                   => array( 'บล็อกฉัน' ),
        'Booksources'               => array( 'แหล่งหนังสือ' ),
        'BrokenRedirects'           => array( 'เปลี่ยนทางเสีย' ),
        'Categories'                => array( 'หมวดหมู่' ),
@@ -72,7 +71,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'สร้างบัญชีผู้ใช้ใหม่' ),
        'Deadendpages'              => array( 'หน้าสุดทาง' ),
        'DeletedContributions'      => array( 'การแก้ไขที่ถูกลบ' ),
-       'Disambiguations'           => array( 'แก้ความกำกวม' ),
        'DoubleRedirects'           => array( 'เปลี่ยนทางซ้ำซ้อน' ),
        'EditWatchlist'             => array( 'แก้ไขรายการเฝ้าดู' ),
        'Emailuser'                 => array( 'อีเมลผู้ใช้' ),
@@ -219,7 +217,6 @@ $messages = array(
 'tog-minordefault' => 'กำหนดให้การแก้ไขทุกครั้งเป็นการแก้ไขเล็กน้อยโดยปริยาย',
 'tog-previewontop' => 'แสดงตัวอย่างการแก้ไขก่อนกล่องแก้ไข',
 'tog-previewonfirst' => 'แสดงตัวอย่างการแก้ไขสำหรับการแก้ไขครั้งแรก',
-'tog-nocache' => 'ปิดใช้งานแคช',
 'tog-enotifwatchlistpages' => 'อีเมลหาเมื่อหน้าหรือไฟล์ในรายการเฝ้าดูมีการเปลี่ยนแปลง',
 'tog-enotifusertalkpages' => 'อีเมลหาเมื่อหน้าคุยกับผู้ใช้ของฉันมีการเปลี่ยนแปลง',
 'tog-enotifminoredits' => 'อีเมลหาเช่นกันสำหรับการแก้ไขหน้าและไฟล์เล็กน้อย',
@@ -355,7 +352,6 @@ $messages = array(
 'qbedit' => 'แก้ไข',
 'qbpageoptions' => 'หน้านี้',
 'qbmyoptions' => 'หน้าของฉัน',
-'qbspecialpages' => 'หน้าพิเศษ',
 'faq' => 'คำถามถามบ่อย',
 'faqpage' => 'Project:คำถามถามบ่อย',
 
@@ -415,7 +411,7 @@ $messages = array(
 'articlepage' => 'ดูหน้าเนื้อหา',
 'talk' => 'อภิปราย',
 'views' => 'ดู',
-'toolbox' => 'à¸\81ลà¹\88อà¸\87à¹\80à¸\84รืà¹\88อà¸\87มือ',
+'toolbox' => 'เครื่องมือ',
 'userpage' => 'ดูหน้าผู้ใช้',
 'projectpage' => 'ดูหน้าโครงการ',
 'imagepage' => 'ดูหน้าไฟล์',
@@ -564,9 +560,6 @@ $1',
 'perfcached' => 'ข้อมูลต่อไปนี้ถูกเก็บในแคช และอาจล้าสมัย มีผลการค้นหาสูงสุด $1 รายการในแคช',
 'perfcachedts' => 'ข้อมูลต่อไปนี้ถูกเก็บในแคช และได้รับการปรับล่าสุดเมื่อ $1 ผลลัพธ์สูงสุด $4 รายการสามารถเก็บในแคชได้',
 'querypage-no-updates' => 'ขณะนี้การปรับปรุงหน้านี้ถูกระงับ ข้อมูลในที่นี้จะไม่รีเฟรชเป็นปัจจุบัน',
-'wrong_wfQuery_params' => 'พารามิเตอร์ที่ส่งไป wfQuery() ไม่ถูกต้อง<br />
-ฟังก์ชั่น: $1<br />
-คำค้น: $2',
 'viewsource' => 'ดูโค้ด',
 'viewsource-title' => 'ดูโค้ดสำหรับ $1',
 'actionthrottled' => 'การกระทำนี้ถูกระงับไว้ชั่วคราว',
@@ -595,7 +588,8 @@ $1',
 'invalidtitle-knownnamespace' => 'ชื่อเรื่องที่มีเนมสเปซ "$2" กับข้อความ "$3" ไม่ถูกต้อง',
 'invalidtitle-unknownnamespace' => 'ชื่อเรื่องที่ไม่ทราบเนมสเปซหมายเลข $1 กับข้อความ "$2" ไม่ถูกต้อง',
 'exception-nologin' => 'ไม่ได้ล็อกอิน',
-'exception-nologin-text' => 'หน้าหรือปฏิบัติการนี้กำหนดให้คุณต้องล็อกอินเข้าสู่วิกินี้ก่อน',
+'exception-nologin-text' => 'โปรด[[Special:Userlogin|ล็อกอิน]]เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
+'exception-nologin-text-manual' => 'โปรด$1เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
 
 # Virus scanner
 'virus-badscanner' => "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: ''$1''",
@@ -642,7 +636,7 @@ $1',
 'gotaccount' => "มีบัญชีแล้วใช่ไหม '''$1'''",
 'gotaccountlink' => 'ล็อกอิน',
 'userlogin-resetlink' => 'ลืมรายละเอียดล็อกอินของคุณหรือ',
-'userlogin-resetpassword-link' => 'à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88',
+'userlogin-resetpassword-link' => 'ลืมรหัสà¸\9cà¹\88าà¸\99หรือ',
 'helplogin-url' => 'Help:การล็อกอิน',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|คำอธิบายเรื่องการล็อกอิน]]',
 'userlogin-loggedin' => 'คุณล็อกอินในชื่อ {{GENDER:$1|$1}} แล้ว
@@ -690,7 +684,7 @@ $1',
 'passwordtooshort' => 'รหัสผ่านต้องมีความยาวอย่างน้อย $1 อักขระ',
 'password-name-match' => 'รหัสผ่านต้องต่างจากชื่อผู้ใช้',
 'password-login-forbidden' => 'ห้ามใช้ชื่อผู้ใช้และรหัสผ่านนี้',
-'mailmypassword' => 'อีà¹\80มลรหัสผ่านใหม่',
+'mailmypassword' => 'à¸\95ัà¹\89à¸\87รหัสผ่านใหม่',
 'passwordremindertitle' => 'รหัสผ่านชั่วคราวใหม่สำหรับ {{SITENAME}}',
 'passwordremindertext' => 'ผู้ใดผู้หนึ่ง (ซึ่งอาจเป็นคุณ ที่ใช้เลขที่อยู่ไอพี $1) ขอให้ส่งรหัสผ่านใหม่ของ {{SITENAME}} ($4) รหัสผ่านชั่วคราวสำหรับชื่อผู้ใช้ "$2" ถูกสร้างขึ้น และกำหนดเป็น "$3" หากการขอรหัสผ่านใหม่นี้เป็นเจตนาของคุณ คุณจำต้องล็อกอินและเลือกรหัสผ่านใหม่ ณ ขณะนี้ รหัสผ่านชั่วคราวของคุณจะหมดอายุใน $5 วัน
 
@@ -708,7 +702,7 @@ $1',
 จึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้',
 'emailauthenticated' => 'ที่อยู่อีเมลของคุณได้รับการยืนยันเมื่อวันที่ $2 เวลา $3',
 'emailnotauthenticated' => 'ที่อยู่อีเมลของคุณยังไม่ได้รับการยืนยัน 
-ไม่มีการส่งอีเมลสำหรับคุณลักษณะใด ๆ ต่อไปนี้',
¸\88ะà¹\84มà¹\88มีà¸\81ารสà¹\88à¸\87อีà¹\80มลสำหรัà¸\9aà¸\84ุà¸\93ลัà¸\81ษà¸\93ะà¹\83à¸\94 à¹\86 à¸\95à¹\88อà¹\84à¸\9bà¸\99ีà¹\89',
 'noemailprefs' => 'ระบุที่อยู่อีเมลในการตั้งค่าของคุณเพื่อให้คุณลักษณะเหล่านี้ทำงานได้',
 'emailconfirmlink' => 'ยืนยันที่อยู่อีเมลของคุณ',
 'invalidemailaddress' => 'ไม่สามารถรับที่อยู่อีเมลได้ เพราะดูมีรูปแบบไม่ถูกต้อง
@@ -736,7 +730,7 @@ $1',
 'user-mail-no-body' => 'พยายามส่งอีเมลที่มีเนื้อหาว่างหรือสั้นอย่างไร้เหตุผล',
 
 # Change password dialog
-'resetpass' => 'เปลี่ยนรหัสผ่าน',
+'changepassword' => 'เปลี่ยนรหัสผ่าน',
 'resetpass_announce' => 'คุณใช้รหัสอีเมลชั่วคราวล็อกอิน คุณต้องกำหนดรหัสผ่านใหม่ตรงนี้ จึงจะเสร็จสิ้นขั้นตอนการล็อกอิน:',
 'resetpass_text' => '<!-- เพิ่มข้อความที่นี่ -->',
 'resetpass_header' => 'เปลี่ยนรหัสผ่าน',
@@ -757,7 +751,7 @@ $1',
 # Special:PasswordReset
 'passwordreset' => 'ตั้งรหัสผ่านใหม่',
 'passwordreset-text-one' => 'กรอกแบบนี้เพื่อตั้งรหัสผ่านใหม่',
-'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รอà¸\81à¹\80à¸\82à¸\95à¸\82à¹\89อมูลหà¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88อà¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รอà¸\81à¹\80à¸\82à¸\95à¸\82à¹\89อมูลหà¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88อรัà¸\9aรหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\97าà¸\87อีà¹\80มล}}',
 'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
 'passwordreset-disabled' => 'การตั้งรหัสผ่านใหม่ปิดใช้งานบนวิกินี้',
 'passwordreset-emaildisabled' => 'คุณลักษณะอีเมลถูกปิดใช้งานบนวิกินี้',
@@ -1042,6 +1036,9 @@ $2
 'cantcreateaccount-text' => "การสร้างบัญชีใหม่จากที่อยู่ไอพีนี้ ('''$1''') ถูกระงับโดย [[User:$3|$3]]
 
 เหตุผลที่ $3 ให้ไว้ คือ ''$2''",
+'cantcreateaccount-range-text' => "การสร้างบัญชีจากเลขที่อยู่ไอพีในช่วง '''$1''' ซึ่งรวมเลขที่อยู่ไอพีของคุณ ('''$4''') ถูกบล็อกโดย [[User:$3|$3]] 
+
+เหตุผลที่ $3 ชี้แจง คือ ''$2''",
 
 # History pages
 'viewpagelogs' => 'ดูปูมของหน้านี้',
@@ -1110,10 +1107,6 @@ $2
 'revisiondelete' => 'ลบ/กู้คืนรุ่น',
 'revdelete-nooldid-title' => 'ไม่มีรุ่นที่ต้องการ',
 'revdelete-nooldid-text' => 'คุณมิได้เจาะจงรุ่นเป้าหมายเพื่อดำเนินการฟังก์ชันนี้ หรือไม่มีรุ่นที่เจาะจง หรือคุณกำลังพยายามซ่อนรุ่นปัจจุบันอย่างใดอย่างหนึ่ง',
-'revdelete-nologtype-title' => 'ไม่ได้ระบุประเภทของปูม',
-'revdelete-nologtype-text' => 'คุณไม่ได้เจาะจงประเภทของปูมที่จะดำเนินปฏิบัติการนี้',
-'revdelete-nologid-title' => 'หน่วยปูมไม่ถูกต้อง',
-'revdelete-nologid-text' => 'คุณมิได้เจาะจงรายการปูมเป้าหมายเพื่อดำเนินการฟังก์ชันนี้ หรือไม่มีหน่วยที่เจาะจงอย่างใดอย่างหนึ่ง',
 'revdelete-no-file' => 'ไม่มีไฟล์ที่ระบุ',
 'revdelete-show-file-confirm' => 'คุณแน่ใจที่จะดูรุ่นที่ถูกลบของไฟล์ "<nowiki>$1</nowiki>" เมื่อวันที่ $2 เวลา $3 หรือไม่',
 'revdelete-show-file-submit' => 'ใช่',
@@ -1122,20 +1115,20 @@ $2
 'revdelete-text' => "'''รุ่นการปรับปรุงและเหตุการณ์ที่ถูกลบยังปรากฏในประวัติและปูมของหน้า แต่สาธารณะไม่สามารถเข้าถึงเนื้อหาบางส่วนได้'''
 ผู้ดูแลระบบคนอื่นบน {{SITENAME}} ยังสามารถเข้าถึงเนื้อหาที่ถูกซ่อน และสามารถกู้คืนอีกครั้งในลักษณะเดิมเช่นนี้ เว้นแต่จะมีการกำหนดการจำกัดเพิ่มเติม",
 'revdelete-confirm' => 'กรุณายืนยันว่าคุณมีเจตนาลบจริง และเข้าใจผลลัพธ์ และกระทำภายใต้[[{{MediaWiki:Policy-url}}|นโยบาย]]',
-'revdelete-suppress-text' => "การระงับควรใช้ '''เฉพาะ''' กรณีต่อไปนี้:
+'revdelete-suppress-text' => "การระงับควรใช้'''เฉพาะ'''กรณีต่อไปนี้:
 * ข้อมูลที่อาจหมิ่นประมาท
 * ข้อมูลส่วนบุคคลที่ไม่เหมาะสม
 *: ''ที่อยู่บ้านและหมายเลขโทรศัพท์บ้าน, หมายเลขประกันสังคม, ฯลฯ''",
 'revdelete-legend' => 'ตั้งการจำกัดทัศนวิสัย:',
-'revdelete-hide-text' => 'à¸\8bà¹\88อà¸\99à¸\82à¹\89อà¸\84วามรุà¹\88à¸\99',
+'revdelete-hide-text' => 'ข้อความรุ่น',
 'revdelete-hide-image' => 'ซ่อนเนื้อหาไฟล์',
 'revdelete-hide-name' => 'ซ่อนปฏิบัติการและเป้าหมาย',
-'revdelete-hide-comment' => 'à¸\8bà¹\88อà¸\99à¸\84ำอà¸\98ิà¸\9aายอยà¹\88าà¸\87ยà¹\88อ',
-'revdelete-hide-user' => 'à¸\8bà¹\88อà¸\99à¸\8aืà¹\88อà¸\9cูà¹\89à¹\83à¸\8aà¹\89/à¹\80ลà¸\82à¸\97ีà¹\88อยูà¹\88à¹\84อà¸\9eีà¸\9cูà¹\89à¹\80à¸\82ียà¸\99',
+'revdelete-hide-comment' => 'คำอธิบายอย่างย่อ',
+'revdelete-hide-user' => 'ชื่อผู้ใช้/เลขที่อยู่ไอพีผู้เขียน',
 'revdelete-hide-restricted' => 'ระงับข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
 'revdelete-radio-same' => '(ไม่เปลี่ยนแปลง)',
-'revdelete-radio-set' => 'à¹\83à¸\8aà¹\88',
-'revdelete-radio-unset' => 'à¹\84มà¹\88',
+'revdelete-radio-set' => 'à¸\8bà¹\88อà¸\99',
+'revdelete-radio-unset' => 'à¹\80à¸\9bิà¸\94à¹\80à¸\9cย',
 'revdelete-suppress' => 'ซ่อนข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
 'revdelete-unsuppress' => 'ลบการจำกัดสำหรับรุ่นที่กู้คืน',
 'revdelete-log' => 'เหตุผล:',
@@ -1147,8 +1140,6 @@ $1",
 'logdelete-failure' => "'''ไม่สามารถตั้งทัศนวิสัยของปุมได้:'''
 $1",
 'revdel-restore' => 'เปลี่ยนทัศนวิสัย',
-'revdel-restore-deleted' => 'รุ่นที่ถูกลบ',
-'revdel-restore-visible' => 'รุ่นที่มองเห็นได้',
 'pagehist' => 'ประวัติหน้า',
 'deletedhist' => 'ประวัติที่ถูกลบ',
 'revdelete-hide-current' => 'เกิดความผิดพลาดในการซ่อนรุ่นเมื่อวันที่ $2 เวลา $1: นี่คือรุ่นการแก้ไขปัจจุบัน
@@ -1226,12 +1217,8 @@ $1",
 # 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' => 'ก่อนหน้า $1',
@@ -1240,10 +1227,8 @@ $1",
 'nextn-title' => '$1 ผลลัพธ์ถัดไป',
 'shown-title' => 'แสดง $1 ผลลัพธ์ต่อหน้า',
 'viewprevnext' => 'ดู ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ตัวเลือกการค้นหา',
 'searchmenu-exists' => "'''มีหน้าชื่อ \"[[:\$1]]\" บนวิกินี้'''",
 'searchmenu-new' => "'''สร้างหน้า \"[[:\$1]]\" บนวิกินี้'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|ค้นดูหน้าที่มีคำขึ้นต้นนี้]]',
 'searchprofile-articles' => 'หน้าเนื้อหา',
 'searchprofile-project' => 'คำอธิบายและหน้าโครงการ',
 'searchprofile-images' => 'มัลติมีเดีย',
@@ -1264,21 +1249,16 @@ $1",
 'search-interwiki-default' => '$1 ผลลัพธ์:',
 'search-interwiki-more' => '(เพิ่มเติม)',
 'search-relatedarticle' => 'สัมพันธ์',
-'mwsuggest-disable' => 'ปิดใช้งานการเสนอแนะการค้นหา',
 'searcheverything-enable' => 'ค้นหาในทุกเนมสเปซ',
 'searchrelated' => 'สัมพันธ์',
 'searchall' => 'ทั้งหมด',
 'showingresults' => "แสดง $1 รายการ เริ่มตั้งแต่รายการที่ '''$2'''",
 'showingresultsnum' => "แสดง $3 รายการ เริ่มตั้งแต่รายการที่  '''$2'''",
 'showingresultsheader' => "{{PLURAL:$5|ผลการค้นหา '''$1''' จาก '''$3'''|ผลการค้นหา '''$1 - $2''' จาก '''$3'''}} สำหรับ '''$4'''",
-'nonefound' => "'''คำเตือน''': มีเพียงบางเนมสเปซเท่านั้นที่จะถูกค้นหาโดยปริยาย
-ลองขึ้นต้นการค้นหาด้วย ''all:'' เพื่อค้นหาเนื้อหาทั้งหมด (รวมหน้าอภิปราย แม่แบบ ฯลฯ) หรือใช้คำขึ้นต้นเป็นเนมสเปซที่ต้องการ",
 'search-nonefound' => 'ไม่มีผลลัพธ์ตรงกับคำค้น',
-'powersearch' => 'ค้นหาระดับสูง',
 'powersearch-legend' => 'ค้นหาระดับสูง',
 'powersearch-ns' => 'ค้นหาในเนมสเปซ:',
 'powersearch-redir' => 'รายการหน้าเปลี่ยนทาง',
-'powersearch-field' => 'ค้นหา',
 'powersearch-togglelabel' => 'เลือก:',
 'powersearch-toggleall' => 'ทั้งหมด',
 'powersearch-togglenone' => 'ไม่เลือก',
@@ -1290,7 +1270,7 @@ $1",
 'preferences' => 'ตั้งค่าส่วนตัว',
 'mypreferences' => 'การตั้งค่า',
 'prefs-edits' => 'จำนวนการแก้ไข:',
-'changepassword' => 'เปลี่ยนรหัสผ่าน',
+'prefsnologintext2' => 'โปรด$1เพื่อเปลี่ยนการตั้งค่าของคุณ',
 'prefs-skin' => 'หน้าตา',
 'skin-preview' => 'แสดงตัวอย่าง',
 'datedefault' => 'ค่าตั้งต้น',
@@ -1313,13 +1293,11 @@ $1",
 'prefs-email' => 'ตัวเลือกอีเมล',
 'prefs-rendering' => 'รูปลักษณ์',
 'saveprefs' => 'บันทึก',
-'resetprefs' => 'ล้างการเปลี่ยนแปลงที่ยังไม่บันทึก',
 'restoreprefs' => 'คืนการตั้งค่าโดยปริยายทั้งหมด (ในทุกส่วน)',
 'prefs-editing' => 'การแก้ไข',
 'rows' => 'แถว:',
 'columns' => 'คอลัมน์:',
 'searchresultshead' => 'ค้นหา',
-'resultsperpage' => 'การเปิดดูต่อหน้า:',
 'stub-threshold' => 'ขีดแบ่งสำหรับ <a href="#" class="stub">ลิงก์โครง</a> (ไบต์):',
 'stub-threshold-disabled' => 'ปิดใช้งาน',
 'recentchangesdays' => 'จำนวนวันที่แสดงในปรับปรุงล่าสุด:',
@@ -1334,7 +1312,6 @@ $1",
 'localtime' => 'เวลาท้องถิ่น',
 'timezoneuseserverdefault' => 'ใช้ค่าโดยปริยายของวิกิ ($1)',
 'timezoneuseoffset' => 'อื่น ๆ (ระบุส่วนต่างเวลา)',
-'timezoneoffset' => 'เวลาต่าง¹:',
 'servertime' => 'เวลาเซิร์ฟเวอร์:',
 'guesstimezone' => 'เรียกค่าจากเว็บเบราว์เซอร์',
 'timezoneregion-africa' => 'แอฟริกา',
@@ -1586,13 +1563,14 @@ $1",
 'recentchanges-label-minor' => 'เป็นการแก้ไขเล็กน้อย',
 'recentchanges-label-bot' => 'การแก้ไขนี้กระทำโดยบอต',
 'recentchanges-label-unpatrolled' => 'การแก้ไขนี้ยังไม่ได้ตรวจสอบ',
-'recentchanges-legend-newpage' => '$1 - หน้าใหม่',
-'rcnote' => "รายการด้านล่างคือการแก้ไข {{PLURAL:$1|'''1''' รายการ|ล่าสุด '''$1''' รายการ}} ในช่วง '''$2''' วันที่ผ่านมา จนถึง $5, $4",
+'recentchanges-label-plusminus' => 'ขนาดของหน้าเปลี่ยนไปด้วยจำนวนไบต์เท่านี้',
+'recentchanges-legend-heading' => "'''คำอธิบายสัญลักษณ์:'''",
+'recentchanges-legend-newpage' => '(ดูเพิ่มที่[[Special:NewPages|รายชื่อหน้าใหม่]])',
 'rcnotefrom' => "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ '''$2''' (มากสุด '''$1''' รายการ)",
 'rclistfrom' => 'แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $1',
 'rcshowhideminor' => '$1การแก้ไขเล็กน้อย',
 'rcshowhidebots' => '$1บอต',
-'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¹\87อà¸\81อิน',
+'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¸\87à¸\97ะà¹\80à¸\9aียน',
 'rcshowhideanons' => '$1ผู้ใช้นิรนาม',
 'rcshowhidepatr' => '$1การแก้ไขที่ตรวจสอบแล้ว',
 'rcshowhidemine' => '$1การแก้ไขของฉัน',
@@ -1667,7 +1645,7 @@ $1",
 'filetype-badmime' => 'ไม่อนุญาตให้อัปโหลดไฟล์ที่เป็นไมม์ชนิด "$1"',
 'filetype-bad-ie-mime' => 'ไม่สามารถอัปโหลดไฟล์นี้เนื่องจากอินเทอร์เน็ตเอกซ์พลอเรอร์จะตรวจจับว่าเป็น "$1" ซึ่งเป็นชนิดไฟล์ที่ไม่อนุญาตและอาจเป็นอันตราย',
 'filetype-unwanted-type' => "{{PLURAL:\$3|ไฟล์|ไฟล์}}ชนิด '''\".\$1\"''' เป็นไฟล์ที่ไม่สามารถอัปโหลดได้ ไฟล์ที่สามารถใช้ได้ ได้แก่ \$2",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL: $4|เป็นชนิดไฟล์ที่ไม่อนุญาต|เป็นชนิดไฟล์ที่ไม่อนุญาต}}
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|เป็นชนิดไฟล์ที่ไม่อนุญาต|เป็นชนิดไฟล์ที่ไม่อนุญาต}}
 {{PLURAL:$3|ชนิดไฟล์|ชนิดไฟล์}}ที่อนุญาตคือ $2',
 'filetype-missing' => 'นามสกุลไฟล์หายไป (เช่น ".jpg")',
 'empty-file' => 'ไฟล์ที่คุณส่งมานั้นว่าง',
@@ -2008,8 +1986,8 @@ $1',
 'nmembers' => '$1 หน้า',
 'nrevisions' => '$1 รุ่น',
 'nviews' => '$1 ครั้ง',
-'nimagelinks' => 'ใช้ใน $1 {{PLURAL: $1|หน้า|หน้า}}',
-'ntransclusions' => 'ใช้ใน $1 {{PLURAL: $1|หน้า|หน้า}}',
+'nimagelinks' => 'ใช้ใน $1 {{PLURAL:$1|หน้า|หน้า}}',
+'ntransclusions' => 'ใช้ใน $1 {{PLURAL:$1|หน้า|หน้า}}',
 'specialpage-empty' => 'ไม่มีผลลัพธ์รายงานนี้',
 'lonelypages' => 'หน้าสุดทาง',
 'lonelypagestext' => 'หน้าต่อไปนี้ไม่มีการเชื่อมโยงหรือถูกรวมไว้ในหน้าอื่นใน {{SITENAME}}',
@@ -2044,10 +2022,8 @@ $1',
 'protectedpages' => 'หน้าที่ถูกล็อก',
 'protectedpages-indef' => 'การล็อกแบบไม่มีกำหนดเท่านั้น',
 'protectedpages-cascade' => 'การล็อกแบบสืบทอดเท่านั้น',
-'protectedpagestext' => 'หน้าต่อไปนี้ถูกล็อกมิให้ย้ายหรือแก้ไข',
 'protectedpagesempty' => 'ขณะนี้ไม่มีหน้าใดถูกล็อกตามพารามิเตอร์เหล่านี้',
 'protectedtitles' => 'ชื่อเรื่องที่ถูกป้องกัน',
-'protectedtitlestext' => 'ชื่อเรื่องต่อไปนี้ถูกป้องกันมิให้สร้าง',
 'protectedtitlesempty' => 'ปัจจุบันไม่มีหัวเรื่องที่ได้รับการป้องกันด้วยพารามิเตอร์เหล่านี้',
 'listusers' => 'รายนามผู้ใช้',
 'listusers-editsonly' => 'แสดงเฉพาะผู้ใช้ที่มีการแก้ไข',
@@ -2098,9 +2074,6 @@ $1',
 'allpagesto' => 'แสดงหน้าจบที่:',
 'allarticles' => 'ทุกหน้า',
 'allinnamespace' => 'หน้าทุกหน้า (เนมสเปซ $1)',
-'allnotinnamespace' => 'หน้าทุกหน้า (ไม่อยู่ในเนมสเปซ $1)',
-'allpagesprev' => 'ก่อนหน้า',
-'allpagesnext' => 'ถัดไป',
 'allpagessubmit' => 'ดู',
 'allpagesprefix' => 'แสดงหน้าที่ขึ้นต้นด้วย:',
 'allpagesbadtitle' => 'ชื่อเรื่องนี้ไม่ถูกต้อง อาจสะกดผิด ลิงก์มาจากภาษาอื่นหรือวิกิอื่น หรือมีตัวอักษรที่ไม่สามารถใช้เป็นชื่อเรื่องได้',
@@ -2434,7 +2407,6 @@ $UNWATCHURL
 'undeletebtn' => 'กู้คืน',
 'undeletelink' => 'ดู/กู้คืน',
 'undeleteviewlink' => 'ดู',
-'undeletereset' => 'ตั้งใหม่',
 'undeleteinvert' => 'กลับการเลือก',
 'undeletecomment' => 'เหตุผล:',
 'undeletedrevisions' => '$1 รุ่นการแก้ไขถูกกู้คืน',
@@ -2524,14 +2496,12 @@ $1',
 'block' => 'บล็อกผู้ใช้',
 'unblock' => 'ปลดบล็อกผู้ใช้',
 'blockip' => 'บล็อกผู้ใช้',
-'blockip-title' => 'ระงับผู้ใช้',
 'blockip-legend' => 'บล็อกผู้ใช้',
 'blockiptext' => 'ใช้แบบด้านล่างเพื่อบล็อกสิทธิเข้าถึงการเขียนของเลขที่อยู่ไอพีหรือชื่อผู้ใช้โดยเจาะจง การบล็อกนี้ควรดำเนินการเพื่อป้องกันการก่อกวนเท่านั้น และให้สอดคล้องกับ[[{{MediaWiki:Policy-url}}|นโยบาย]]
 กรอกเหตุผลโดยเจาะจงด้านล่าง (เช่น อ้างถึงหน้าที่ถูกก่อกวน)',
 'ipadressorusername' => 'เลขที่อยู่ไอพีหรือชื่อผู้ใช้',
 'ipbexpiry' => 'หมดอายุ',
 'ipbreason' => 'เหตุผล:',
-'ipbreasonotherlist' => 'เลือกสาเหตุ',
 'ipbreason-dropdown' => '*สาเหตุการบล็อกทั่วไป
 ** ใส่ข้อมูลเท็จ
 ** ลบเนื้อหาในหน้าออก
@@ -2547,8 +2517,6 @@ $1',
 'ipbsubmit' => 'บล็อกผู้ใช้นี้',
 'ipbother' => 'เวลาอื่น',
 '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',
-'ipbotheroption' => 'เลือกเวลา',
-'ipbotherreason' => 'เหตุผลอื่น',
 'ipbhidename' => 'ซ่อนชื่อผู้ใช้จากปูมและรายการต่าง ๆ',
 'ipbwatchuser' => 'เฝ้าดูหน้าผู้ใช้และหน้าคุยกับผู้ใช้ของผู้ใช้รายนี้',
 'ipb-disableusertalk' => 'ป้องกันไม่ให้ผู้ใช้นี้แก้ไขหน้าคุยกับผู้ใช้ของตัวเองขณะถูกบล็อก',
@@ -2639,7 +2607,6 @@ $1',
 'sorbsreason' => 'เลขที่อยู่ไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ {{SITENAME}} ใช้',
 'sorbs_create_account_reason' => 'เลขที่อยู่ไอพีของคุณอยู่ในพร็อกซีเปิดในส่วน DNSBL ที่ {{SITENAME}} ใช้ 
 คุณไม่สามารถสร้างบัญชีได้',
-'cant-block-while-blocked' => 'คุณไม่สามารถบล็อกผู้ใช้อื่นในขณะที่คุณกำลังถูกบล็อก',
 'cant-see-hidden-user' => 'ผู้ใช้ที่คุณกำลังพยายามระงับนั้นได้ถูกระงับหรือซ่อนเดิมอยู่แล้ว เนื่องจากคุณไม่มีสิทธิซ่อนผู้ใช้ คุณจึงไม่สามารถดูหรือแก้ไขการระงับผู้ใช้ได้',
 'ipbblocked' => 'คุณไม่สามารถบล็อกหรือปลดบล็อกผู้ใช้คนอื่น เนื่องจากคุณกำลังถูกบล็อก',
 'ipbnounblockself' => 'คุณไม่ได้รับอนุญาตให้ปลดบล็อกตนเอง',
@@ -2696,7 +2663,6 @@ $1',
 หากเกิดกรณีเหล่านี้ คุณจะต้องย้ายหรือรวมหน้าเองหากต้องการเปลี่ยนชื่อตามในภายหลัง",
 'movearticle' => 'เปลี่ยนชื่อ',
 'moveuserpage-warning' => "'''คำเตือน''' คุณกำลังย้ายหน้าผู้ใช้ โปรดทราบว่าหน้าผู้ใช้เท่านั้นที่จะถูกเปลี่ยนชื่อ แต่ผู้ใช้จะ'''ไม่'''ถูกเปลี่ยนชื่อ",
-'movenologin' => 'ไม่ได้ล็อกอิน',
 'movenologintext' => 'ถ้าต้องการเปลี่ยนชื่อหน้านี้ ต้องเป็นผู้ใช้ลงทะเบียนและ[[Special:UserLogin|ล็อกอิน]]',
 'movenotallowed' => 'คุณไม่มีสิทธิเปลี่ยนชื่อหน้า',
 'movenotallowedfile' => 'คุณไม่มีสิทธิย้ายไฟล์',
@@ -2711,8 +2677,6 @@ $1',
 'movepage-moved-noredirect' => 'การสร้างหน้าเปลี่ยนทางถูกระงับ',
 'articleexists' => 'หน้าที่ต้องการมีอยู่แล้ว หรือชื่อที่เลือกไม่ถูกต้อง กรุณาเลือกชื่อใหม่',
 'cantmove-titleprotected' => 'คุณไม่สามารถเปลี่ยนชื่อหน้าเป็นชื่อนี้ได้ เนื่องจากชื่อเรื่องใหม่ถูกป้องกันมิให้สร้าง',
-'talkexists' => "'''เปลี่ยนชื่อหน้าสำเร็จ แต่หน้าพูดคุยไม่สามารถถูกเปลี่ยนชื่อได้ เนื่องจากมีหน้าพูดคุยในชื่อเรื่องใหม่แล้ว โปรดรวมหน้าเหล่านั้นเอง'''",
-'movedto' => 'เปลี่ยนชื่อเป็น',
 'movetalk' => 'เปลี่ยนชื่อหน้าพูดคุยพร้อมกัน',
 'move-subpages' => 'ย้ายหน้าย่อยทั้งหมด (มากถึง $1 หน้า)',
 'move-talk-subpages' => 'ย้ายหน้าย่อยทั้งหมดของหน้าอภิปราย (มากถึง $1 หน้า)',
@@ -3075,7 +3039,7 @@ $1',
 'file-nohires' => 'ไม่มีความละเอียดสูงกว่านี้',
 'svg-long-desc' => 'ไฟล์ SVG, $1 × $2 พิกเซล พอเป็นพิธี, ขนาดไฟล์: $3',
 'svg-long-error' => 'ไฟล์ SVG ไม่ถูกต้อง: $1',
-'show-big-image' => 'à¸\84วามละà¹\80อียà¸\94สูà¸\87สุà¸\94',
+'show-big-image' => 'à¹\84à¸\9fลà¹\8cà¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9a',
 'show-big-image-other' => 'อื่นๆ {{PLURAL:$2|resolution|resolutions}}: $1.',
 'show-big-image-size' => '$1 × $2 พิกเซล',
 'file-info-gif-looped' => 'วนซ้ำ',
@@ -3437,15 +3401,10 @@ $1',
 'exif-iimcategory-spo' => 'กีฬา',
 'exif-iimcategory-wea' => 'ภูมิอากาศ',
 
-# External editor support
-'edit-externally' => 'แก้ไขไฟล์นี้โดยใช้ซอฟต์แวร์ตัวอื่น',
-'edit-externally-help' => '(ดู[https://www.mediawiki.org/wiki/Manual:External_editors วิธีการตั้งค่า]สำหรับข้อมูลเพิ่มเติม)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ทั้งหมด',
 'namespacesall' => 'ทั้งหมด',
 'monthsall' => 'ทั้งหมด',
-'limitall' => 'ทั้งหมด',
 
 # Email address confirmation
 'confirmemail' => 'ยืนยันอีเมล',
@@ -3470,7 +3429,6 @@ $1',
 'confirmemail_success' => 'อีเมลคุณได้รับการยืนยันแล้ว
 คุณอาจ[[Special:UserLogin|ล็อกอิน]]ตอนนี้และสนุกกับการแก้ไขวิกิ',
 'confirmemail_loggedin' => 'อีเมลคุณได้รับการยืนยันแล้ว',
-'confirmemail_error' => 'เกิดปัญหาขณะบันทึกการยืนยันของคุณ',
 'confirmemail_subject' => 'การยืนยันที่อยู่อีเมลของ{{SITENAME}}',
 'confirmemail_body' => 'ใครบางคน ซึ่งอาจจะเป็นคุณ จากหมายเลขไอพี $1 ได้ลงทะเบียนในชื่อ "$2" โดยใช้อีเมลนี้ที่ {{SITENAME}}
 
@@ -3536,6 +3494,9 @@ $5
 'confirm-unwatch-button' => 'ตกลง',
 'confirm-unwatch-top' => 'ลบหน้านี้ออกจากรายการเฝ้าดูของคุณ',
 
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
 # Multipage image navigation
 'imgmultipageprev' => '← หน้าก่อนหน้า',
 'imgmultipagenext' => 'หน้าถัดไป →',
@@ -3657,13 +3618,14 @@ $5
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath เส้นทางสคริปต์]',
 
 # Special:Redirect
-'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้หรือรุ่น',
+'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้ หน้าหรือรุ่น',
 'redirect-legend' => 'การเปลี่ยนทางไปยังไฟล์หรือหน้า',
 'redirect-summary' => 'หน้าพิเศษนี้เปลี่ยนทางไปยังไฟล์ (ระบุเป็นชื่อไฟล์) หน้า (ระบุเป็นรหัสรุ่น) หรือหน้าผู้ใช้ (ระบุเป็นรหัสผู้ใช้)',
 'redirect-submit' => 'ไป',
 'redirect-lookup' => 'ค้นดู:',
 'redirect-value' => 'ค่า:',
 'redirect-user' => 'รหัสผู้ใช้',
+'redirect-page' => 'รหัสประจำหน้า',
 'redirect-revision' => 'รุ่นหน้า',
 'redirect-file' => 'ชื่อไฟล์',
 'redirect-not-exists' => 'ไม่พบค่า',
@@ -3681,6 +3643,7 @@ $5
 
 # Special:SpecialPages
 'specialpages' => 'หน้าพิเศษ',
+'specialpages-note-top' => 'คำอธิบายสัญลักษณ์',
 'specialpages-note' => '* หน้าพิเศษปกติ
 * <span class="mw-specialpagerestricted">หน้าพิเศษที่ถูกจำกัด</span>',
 'specialpages-group-maintenance' => 'รายงานการเก็บกวาด',
@@ -3720,13 +3683,15 @@ $5
 'tags-tag' => 'ชื่อป้ายกำกับ',
 'tags-display-header' => 'สิ่งที่แสดงในรายการการเปลี่ยนแปลง',
 'tags-description-header' => 'คำอธิบายความหมายโดยละเอียด',
+'tags-active-header' => 'เปิดใช้งานหรือไม่',
 'tags-hitcount-header' => 'การเปลี่ยนแปลงที่มีป้ายนี้กำกับ',
+'tags-active-yes' => 'ใช่',
+'tags-active-no' => 'ไม่',
 'tags-edit' => 'แก้ไข',
 'tags-hitcount' => '$1 การเปลี่ยนแปลง',
 
 # Special:ComparePages
 'comparepages' => 'เปรียบเทียบหน้า',
-'compare-selector' => 'เปรียบเทียบรุ่นของหน้า',
 'compare-page1' => 'หน้า 1',
 'compare-page2' => 'หน้า 2',
 'compare-rev1' => 'รุ่น 1',
@@ -3741,6 +3706,7 @@ $5
 'dberr-problems' => 'ขออภัย เว็บไซต์นี้กำลังพบกับข้อผิดพลาดทางเทคนิค',
 'dberr-again' => 'กรุณารอสักครู่แล้วจึงโหลดใหม่',
 'dberr-info' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูลได้: $1)',
+'dberr-info-hidden' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูล)',
 'dberr-usegoogle' => 'คุณสามารถลองสืบค้นผ่านกูเกิลในระหว่างนี้',
 'dberr-outofdate' => 'โปรดทราบว่าดัชนีเนื้อหาของเราในกูเกิลอาจล้าสมัยแล้ว',
 'dberr-cachederror' => 'นี่คือข้อมูลคัดลอกชั่วคราวของหน้าที่ร้องขอ และอาจไม่เป็นปัจจุบัน',
@@ -3758,6 +3724,7 @@ $5
 'htmlform-selectorother-other' => 'อื่น ๆ',
 'htmlform-no' => 'ไม่',
 'htmlform-yes' => 'ใช่',
+'htmlform-chosen-placeholder' => 'เลือกตัวเลือก',
 
 # SQLite database support
 'sqlite-has-fts' => 'รุ่น $1 พร้อมการสนับสนุนการค้นหาข้อความแบบเต็ม',
index a03f817..53638a2 100644 (file)
@@ -65,7 +65,7 @@ $messages = array(
 'newpage' => 'ሓዳስ ፅሑፍ',
 'jumptosearch' => 'ድሉይ',
 
-# 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).
+# 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).
 'aboutsite' => 'ብዛዕባ ዊኪፒዲያ ብጠቅላላ',
 'mainpage' => 'መበገሲ ገጽ',
 'mainpage-description' => 'መበገሲ ገጽ',
@@ -91,7 +91,6 @@ $messages = array(
 # Search results
 'prevn' => 'ናይ ቀደም {{PLURAL:$1|$1}}',
 'nextn' => 'ዝቕጽል {{PLURAL:$1|$1}}',
-'powersearch' => 'ድሉይ',
 
 # Preferences page
 'preferences' => 'ኣማረጽቲ',
@@ -144,8 +143,6 @@ $messages = array(
 'nextpage' => 'ዝቕጽል ፅሑፍ ($1)',
 'prevpage' => 'ናይ ቀደም ፅሑፍ ($1)',
 'allarticles' => 'ኵሎም ፅሑፋት',
-'allpagesprev' => 'ናይ ቀደም',
-'allpagesnext' => 'ዝቕጽል',
 'allpagessubmit' => 'ኪድ',
 
 # Protect
index a7a22fd..24a11aa 100644 (file)
@@ -60,7 +60,6 @@ $messages = array(
 'tog-minordefault' => 'Ähli özgerdişleri "ujypsyzja" diýip belle',
 'tog-previewontop' => 'Deslapky syny redaktirleme gutusynyň üstünde görkez',
 'tog-previewonfirst' => 'Özgerdişde deslapky syny görkez',
-'tog-nocache' => 'Brauzerde sahypa keşirlemegi ýap',
 'tog-enotifwatchlistpages' => 'Gözegçilik sanawymdaky sahypa redaktirlenen mahaly maňa e-poçta iber',
 'tog-enotifusertalkpages' => 'Ulanyjy sahypamda üýtgeşme bolan mahaly maňa e-poçta iber',
 'tog-enotifminoredits' => 'Sahypalardaky ujypsyzja özgerdişlerde-de maňa e-poçta iber',
@@ -180,7 +179,6 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
 'qbedit' => 'Redaktirle',
 'qbpageoptions' => 'Bu sahypa',
 'qbmyoptions' => 'Meniň sahypalarym',
-'qbspecialpages' => 'Ýörite sahypalar',
 'faq' => 'KSS',
 'faqpage' => 'Project:KSS',
 
@@ -381,9 +379,6 @@ Başga biri tarapyndan eýýäm öçürilen bolmagy mümkin.',
 'perfcached' => 'Aşakdaky maglumatlar keşirlenen bolup, könelişen bolmaklary mümkin! A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Aşakdaky maglumat keşirlenen bolup, iň soňky täzelenen wagty: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Häzirlikçe bu sahypanyň täzelenmegi togtadyldy. Bu ýerdäki maglumatlar häzirlikçe täzelenmeýär.',
-'wrong_wfQuery_params' => 'wfQuery() funksiýasyna nädogry parametrler<br />
-Funksiýa: $1<br />
-Talap: $2',
 'viewsource' => 'Çeşmäni gör',
 'actionthrottled' => 'Hereket çäklendirildi',
 'actionthrottledtext' => 'Anti-spam çäresi hökmünde, bu işi az salymyň içinde köp gezek amala aşyrmagyňyz çäklendirildi, we siz bu çäklendirmeden öte geçdiňiz.
@@ -495,7 +490,7 @@ Gaýtadan synanyşmankaňyz garaşmagyňyzy haýyş edýäris.',
 'suspicious-userlogout' => 'Sessiýa ýapmak boýunça talabyňyz ret edildi, sebäbi ol nädogry brauzer ýa-da keşleýji proksi tarapyndan iberilen ýaly-la.',
 
 # Change password dialog
-'resetpass' => 'Paroly üýtget',
+'changepassword' => 'Paroly üýtget',
 'resetpass_announce' => 'Size iberilen wagtlaýyn parol bilen sessiýa açdyňyz.
 Sessiýa açmaklygy tamamlamak üçin, bu ýere täze parol ýazyň:',
 'resetpass_header' => 'Hasap parolyny üýtget',
@@ -824,10 +819,6 @@ Administrator hökmünde bu aratapawudy görüp bilersiňiz; [{{fullurl:{{#Speci
 'revisiondelete' => 'Wersiýalary öçür/yzyna dikelt',
 'revdelete-nooldid-title' => 'Nädogry niýetlenilýän wersiýa',
 'revdelete-nooldid-text' => 'Bu funksiýany ýerine ýetirmek üçin kesgitli bir niýetlenilýän wersiýa görkezmänsiňiz. Görkezen wersiýaňyz ýok ýa-da bar bolan wersiýany gizlemäge synanyşýarsyňyz.',
-'revdelete-nologtype-title' => 'Gündeligiň görnüşi görkezlimändir',
-'revdelete-nologtype-text' => 'Bu iş amala aşyryljak gündeligiň görnüşini görkezmänsiňiz.',
-'revdelete-nologid-title' => 'Nädogry gündelik ýazgysy',
-'revdelete-nologid-text' => 'Bu funksiýany ýerine ýetirmek üçin ýa-ha niýetlenilýän gündelik wakasyny gürkezmänsiňiz ýa-da görkezen ýazgyňyz ýok.',
 'revdelete-no-file' => 'Görkezilen faýl ýok.',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" faýlynyň $3, $2 seneli öçürilen wersiýasyny görmek isleýäniňiz çynyňyzmy?',
 'revdelete-show-file-submit' => 'Hawa',
@@ -861,8 +852,6 @@ $1",
 'logdelete-failure' => "'''Gündelik görünme derejesini sazlap bolmaýar:'''
 $1",
 'revdel-restore' => 'Görnüşi üýtget',
-'revdel-restore-deleted' => 'öçürilen wersiýalar',
-'revdel-restore-visible' => 'görünýän wersiýalar',
 'pagehist' => 'Sahypanyň geçmişi',
 'deletedhist' => 'Öçürilen geçmiş',
 'revdelete-hide-current' => '$2, $1 seneli ýazgyda gizleme säwligi: bu häzirki wersiýa.
@@ -933,12 +922,8 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 # Search results
 'searchresults' => 'Gözleg netijeleri',
 'searchresults-title' => '"$1" üçin gözleg netijeleri',
-'searchresulttext' => '{{SITENAME}} boýunça gözleg geçirmek barada jikme-jik maglumat almak üçin [[{{MediaWiki:Helppage}}|{{int:help}}]] sahypasyna göz aýlap bilersiňiz.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' üçin gözleg geçirdiňiz. ([[Special:Prefixindex/$1|"$1" bilen başlaýan ähli sahypalar]] {{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"\' sahypasyna çykgydy bar bolan ähli sahypalar]])',
-'searchsubtitleinvalid' => "Gözlenen: '''$1'''",
 'toomanymatches' => 'Çakdanaşa köp gabat gelme tapyldy, başgaçarak talap ýazyp görüň',
 'titlematches' => 'Sahypa ady gabat gelýär',
-'notitlematches' => 'Şeýle atly sahypa gabat gelmedi',
 'textmatches' => 'Sahypa teksti gabat gelýär',
 'notextmatches' => 'Hiç bir sahypada tapylmady',
 'prevn' => 'öňki {{PLURAL:$1|$1}}',
@@ -947,10 +932,8 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'nextn-title' => 'Indiki $1 {{PLURAL:$1|netije|netije}}',
 'shown-title' => 'Sahypa başyna $1 {{PLURAL:$1|netije|netije}} görkez',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Gözleg opsiýalary',
 'searchmenu-exists' => "'''Bu wikide \"[[:\$1]]\" atly sahypa bar'''",
 'searchmenu-new' => "'''Bu wikide \"[[:\$1]]\" sahypasyny döret!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Şu prefiksli sahypalara göz aýla]]',
 'searchprofile-articles' => 'Mazmunly sahypalar',
 'searchprofile-project' => 'Ýardam we Taslama sahypalary',
 'searchprofile-images' => 'Multimedia',
@@ -971,21 +954,16 @@ Nawigasiýa çykgytlaryny ulanmaklygyň bu sütüni başky ýagdaýyna getirjekd
 'search-interwiki-default' => '$1 netijeler:',
 'search-interwiki-more' => '(has-da köp)',
 'search-relatedarticle' => 'Baglanyşykly',
-'mwsuggest-disable' => 'AJAX tekliplerini ýap',
 'searcheverything-enable' => 'Ähli at giňişliklerinde gözle',
 'searchrelated' => 'baglanyşykly',
 'searchall' => 'ählisi',
 'showingresults' => "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$1|'''1''' netije|'''$1''' netije}} görkezilýär.",
 'showingresultsnum' => "Aşakda №'''$2''' netijeden başlap, {{PLURAL:$3|'''1''' netije|'''$3''' netije}} görkezilýär.",
 'showingresultsheader' => "'''$4''' üçin {{PLURAL:$5|'''$3''' netijeden '''$1''' sanysy|'''$3''' netijeden '''$1 - $2''' aralygy}}",
-'nonefound' => "'''Bellik''': Diňe käbir at giňişlikleri gaýybana tertipde gözlenilýär.
-Gözlegiňiziň başyna '''all:''' pristawkasyny goşup tutuş mazmuny (şol sanda pikir alyşma sahypalaryny, şablonlary we şm.) gözlemäge synanyşyň ýa-da pristawka hökmünde gerekleýän at giňişligiňizi ulanyň.",
 'search-nonefound' => 'Talaba gabat gelýän hiç hili netije ýok.',
-'powersearch' => 'Giňişleýin gözleg',
 'powersearch-legend' => 'Giňişleýin gözleg',
 'powersearch-ns' => 'At giňişliklerinde gözleg:',
 'powersearch-redir' => 'Gönükdirmeleri sanawla',
-'powersearch-field' => 'Gözle',
 'powersearch-togglelabel' => 'Belle:',
 'powersearch-toggleall' => 'Ählisi',
 'powersearch-togglenone' => 'Hiç biri',
@@ -998,7 +976,6 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 'preferences' => 'Ileri tutmalar',
 'mypreferences' => 'Ileri tutmalar',
 'prefs-edits' => 'Özgerdiş sany:',
-'changepassword' => 'Paroly üýtget',
 'prefs-skin' => 'Bezeg',
 'skin-preview' => 'Deslapky syn',
 'datedefault' => 'Gaýybana',
@@ -1019,13 +996,11 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 'prefs-email' => 'E-poçta opsiýalary',
 'prefs-rendering' => 'Daşky görnüş',
 'saveprefs' => 'Ýazdyr',
-'resetprefs' => 'Ýazdyrylmadyk üýtgeşmeleri aýyr',
 'restoreprefs' => 'Ähli gaýybana sazlamalary dikelt',
 'prefs-editing' => 'Redaktirleme',
 'rows' => 'Hatarlar:',
 'columns' => 'Sütünler:',
 'searchresultshead' => 'Gözleg',
-'resultsperpage' => 'Sahypa başyna netije sany:',
 'stub-threshold' => '<a href="#" class="stub">Ownuk makala çykgydynyň</a> formaty üçin bosaga (baýt):',
 'stub-threshold-disabled' => 'Ýapyk',
 'recentchangesdays' => 'Soňky üýtgeşmelerde görkeziljek gün sany:',
@@ -1037,7 +1012,6 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
 'localtime' => 'Ýerli wagt:',
 'timezoneuseserverdefault' => 'Serweriň gaýybanasyny ulan',
 'timezoneuseoffset' => 'Başga (süýşmäni görkez)',
-'timezoneoffset' => 'Süýşme¹:',
 'servertime' => 'Serwer wagty:',
 'guesstimezone' => 'Brauzerden doldur',
 'timezoneregion-africa' => 'Afrika',
@@ -1258,7 +1232,6 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
 'recentchanges-label-bot' => 'Bu özgerdiş bir bot tarapyndan amala aşyryldy',
 'recentchanges-label-unpatrolled' => 'Bu özgerdişe heniz patrullyk edilmändir',
 'recentchanges-legend-newpage' => '$1 - täze sahypa',
-'rcnote' => "Aşakda $5, $4 senesinden başlap, soňky {{PLURAL:$2|1 günde|'''$2''' günde}} edilen {{PLURAL:$1|'''1''' üýtgeşme|'''$1''' üýtgeşme}} görkezilýär.",
 'rcnotefrom' => '<b>$2</b> senesinden bäri edilen özgerdişler aşakda görkezilýär (<b>$1</b> sanysyna çenli).',
 'rclistfrom' => '$1 senesinden bäri edilen özgerdişleri görkez',
 'rcshowhideminor' => 'ujypsyzja özgerdişleri $1',
@@ -1650,10 +1623,8 @@ Ol indi [[$2]] sahypasyna gönükdirýär.',
 'protectedpages' => 'Goragly sahypalar',
 'protectedpages-indef' => 'Diňe möhletsiz goraglar',
 'protectedpages-cascade' => 'Diňe kaskadly goraglar',
-'protectedpagestext' => 'Aşakdaky sahypalar atlary üýtgedilmez hem-de redaktirlenmez ýaly goraglydyr',
 'protectedpagesempty' => 'Häzirki wagtda bu parametrler bilen goralýan hiç hili sahypa ýok.',
 'protectedtitles' => 'Goragly atlar',
-'protectedtitlestext' => 'Aşakdaky atlar döredilmege garşy goraglydyr',
 'protectedtitlesempty' => 'Häzirki wagtda bu parametrler bilen goralýan hiç hili at ýok.',
 'listusers' => 'Ulanyjy sanawy',
 'listusers-editsonly' => 'Diňe özgerdiş eden ulanyjylary görkez',
@@ -1702,9 +1673,6 @@ Gündeligiň görnüşini, ulanyjy adyny (baş-setir harpa duýgur), ýa-da täs
 'allpagesto' => 'Şu harp bilen gutarýan sahypalary görkez:',
 'allarticles' => 'Ähli sahypalar',
 'allinnamespace' => 'Ähli sahypalar ($1 at giňişligi)',
-'allnotinnamespace' => 'Ähli sahypalar ($1 at giňişliginde däller)',
-'allpagesprev' => 'Öňki',
-'allpagesnext' => 'Indiki',
 'allpagessubmit' => 'Git',
 'allpagesprefix' => 'Pristawka bilen sahypalary görkez:',
 'allpagesbadtitle' => 'Bu sahypa ady nädogrydy ýa-da dilara ýa-da wikiara prefiksi bardy. Atlarda ulanylmagyna rugsat berilmeýän bir ýa-da has köp simwoly öz içine alýan bolmagy ahmal.',
@@ -2015,7 +1983,6 @@ Ulanan çykgydyňyz nädogry bolmagy ýa-da onuň arhiwden dikeldilen ýa-da aý
 'undeletebtn' => 'Dikelt',
 'undeletelink' => 'görkez/dikelt',
 'undeleteviewlink' => 'görkez',
-'undeletereset' => 'Başky ýagdaýa getir',
 'undeleteinvert' => 'Saýlanmadyklar',
 'undeletecomment' => 'Sebäp:',
 'undeletedrevisions' => '{{PLURAL:$1|1 wersiýa|$1 wersiýa}} dikeldildi',
@@ -2097,7 +2064,6 @@ Salgylanmak üçin iň soňky blokirleme gündeligi ýazgysy aşakda berilýär:
 
 # Block/unblock
 'blockip' => 'Ulanyjyny blokirle',
-'blockip-title' => 'Ulanyjyny blokirle',
 'blockip-legend' => 'Ulanyjyny blokirle',
 'blockiptext' => 'Aşakdaky formdan peýdalanyp, belli bir IP-niň ýa-da ulanyjy adynyň ýazmak hukugyny blokirläp bilersiňiz.
 Bu diňe wandalizmiň öňüni almak üçin hem-de [[{{MediaWiki:Policy-url}}|kadalara]] laýyklykda edilmelidir.
@@ -2105,7 +2071,6 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
 'ipadressorusername' => 'IP adresi ýa-da ulanyjy ady:',
 'ipbexpiry' => 'Gutarýan wagty:',
 'ipbreason' => 'Sebäp:',
-'ipbreasonotherlist' => 'Başga sebäp',
 'ipbreason-dropdown' => '*Adaty blokirleme sebäpleri
 ** Ýalan maglumat girizmek
 ** Sahypalaryň mazmunyny aýyrmak
@@ -2120,8 +2085,6 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
 'ipbsubmit' => 'Bu ulanyjyny blokirle',
 'ipbother' => 'Başga wagt:',
 'ipboptions' => '2 sagat:2 hours,1 gün:1 day,3 gün:3 days,1 hepde:1 week,2 hepde:2 weeks,1 aý:1 month,3 aý:3 months,6 aý:6 months,1 ýyl:1 year,möhletsiz:infinite',
-'ipbotheroption' => 'başga',
-'ipbotherreason' => 'Başga/goşmaça sebäp:',
 'ipbhidename' => 'Ulanyjynyň adyny özgerdişlerde we sanawlarda gizle',
 'ipbwatchuser' => 'Bu ulanyjynyň ulanyjy we çekişme sahypalaryny gözegçilikde sakla',
 'ipb-change-block' => 'Bu sazlamalar bilen ulanyjyny gaýtadan blokirle',
@@ -2195,7 +2158,6 @@ Internet üpjün edijiňiz ýa-da goldaw gullugy bilen habarlaşyp, olary bu çy
 'sorbsreason' => 'IP adresiňiz {{SITENAME}} tarapyndan ulanylýan DNSBL-de açyk proksi hökmünde sanawa goşulypdyr.',
 'sorbs_create_account_reason' => 'IP adresiňiz {{SITENAME}} tarapyndan ulanylýan DNSBL-de açyk proksi hökmünde sanawa goşulypdyr.
 Hasap açyp bilmeýärsiňiz.',
-'cant-block-while-blocked' => 'Özüňiz blokirlengikäňiz başga ulanyjylary blokirläp bilmeýärsiňiz.',
 'cant-see-hidden-user' => 'Blokirlejek bolýan ulanyjyňyz eýýäm blokirlenipdir hem-de gizlenilipdir. Ulanyjy gizlemek hukugyňyz ýokdugy sebäpli, ulanyjynyň blokirlemesini görüp ýa-da redaktirläp bilmeýärsiňiz.',
 'ipbblocked' => 'Beýleki ulanyjylary blokirläp ýa-da olaryň blokirlemesini aýryp bilmeýärsiňiz, sebäbi özüňiz blokirlenipsiňiz',
 'ipbnounblockself' => 'Öz blokirlemäňizi aýyrmagyňyza rugsat berilmeýär',
@@ -2239,7 +2201,6 @@ Bu üýtgeşiklik giňden tanalýan bir sahypa üçin garaşylmaýan netijelere
 Şeýle ýagdaýda sahypany özüňiz ell bilen geçirmeli bolýarsyňyz.",
 'movearticle' => 'Köne at',
 'moveuserpage-warning' => "'''Üns beriň:''' Bir ulanyjy sahypasyny geçirjek bolup dursuňyz. Diňe sahypanyň geçiriljekdigine, emma ulanyjynyň ''adynyň üýtgedilmejekdigine'' üns beriň.",
-'movenologin' => 'Sessiýa açmansyňyz',
 'movenologintext' => 'Sahypanyň adyny üýtgetmek üçin hasap açan bolmagyňyz hem-de [[Special:UserLogin|sessiýaňyzyň açyk]] bolmagy zerurdyr.',
 'movenotallowed' => 'Sahypalaryň adyny üýtgetmäge rugsadyňyz ýok.',
 'movenotallowedfile' => 'Faýllaryň adyny üýtgetmäge rugsadyňyz ýok.',
@@ -2255,8 +2216,6 @@ Bu üýtgeşiklik giňden tanalýan bir sahypa üçin garaşylmaýan netijelere
 'articleexists' => 'Şu atda eýýämden bir sahypa bar ýa-da saýlap alan adyňyz nädogry.
 Başga bir ady synap görmegiňizi haýyş edýäris.',
 'cantmove-titleprotected' => 'Bu ada sahypa adyny üýtgedip bilmeýärsiňiz, sebäbi bu at döredilmezligi üçin gorag astyna alnypdyr',
-'talkexists' => "'''Sahypanyň özi şowlulyk bilen geçirildi, ýöne çekişme sahypasyny geçirip bolmady sebäbi geçirilmeli adynda öňdenem bir sahypa bar. Çekişme sahypasynyň içindäkileri özüňiziň geçirmegiňizi haýyş edýäris.'''",
-'movedto' => 'geçirildi',
 'movetalk' => 'Degişli "çekişme" sahypasyny hem geçir',
 'move-subpages' => 'Kiçi sahypalaryň adyny üýtget ($1 sahypasyna çenli)',
 'move-talk-subpages' => 'Çekişme sahypasynyň kiçi sahypalarynyň adyny üýtget ($1 sahypasyna çenli)',
@@ -2833,15 +2792,10 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
 'exif-gpsdirection-t' => 'Hakyky ugur',
 'exif-gpsdirection-m' => 'Magnit ugur',
 
-# External editor support
-'edit-externally' => 'Bu faýly daşarky programmalary ulanyp redaktirläň',
-'edit-externally-help' => '(Has köp maglumat üçin metadaky [https://www.mediawiki.org/wiki/Manual:External_editors gurmak boýunça gollanma] sahypasyna göz aýlaň)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Ählisini görkez',
 'namespacesall' => 'ählisi',
 'monthsall' => 'ählisi',
-'limitall' => 'ählisi',
 
 # Email address confirmation
 'confirmemail' => 'E-poçta adresini tassykla',
@@ -2863,7 +2817,6 @@ Serwer yzyna gaýtardy:$1',
 'confirmemail_needlogin' => 'E-poçta adresiňizi tassyklamak üçin $1.',
 'confirmemail_success' => 'E-poçta adresiňiz tassyklandy. [[Special:UserLogin|Sessiýa açyň-da]] wikini ulanyberiň.',
 'confirmemail_loggedin' => 'E-poçta adresiňiz tassyklandy.',
-'confirmemail_error' => 'Tassyklamaňyz ýazdyrylanda bir ýalňyşlyk boldy.',
 'confirmemail_subject' => '{{SITENAME}} e-poçta adres tassyklamasy.',
 'confirmemail_body' => 'Kimdir biri, ähtimal özüňiz, $1 IP adresinden,
 {{SITENAME}} saýtynda bu e-poçta adresi bilen $2 hasabyny açdy.
@@ -3064,7 +3017,6 @@ Bu programmanyň ýany bilen siz [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General P
 
 # Special:ComparePages
 'comparepages' => 'Sahypalary deňeşdir',
-'compare-selector' => 'Sahypa wersiýalaryny deňeşdir',
 'compare-page1' => 'Sahypa 1',
 'compare-page2' => 'Sahypa 2',
 'compare-rev1' => 'Wersiýa 1',
index 02f4511..83e19da 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author AnakngAraw
+ * @author Aze
  * @author Dosmiin Barsbold
  * @author Felipe Aira
  * @author Jojit fb
@@ -52,7 +53,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Masamang_pamagat' ),
        'Blankpage'                 => array( 'Tanggalin_ang_nilalaman_ng_pahina' ),
        'Block'                     => array( 'Hadlangan', 'Hadlangan_ang_IP', 'Hadlangan_ang_tagagamit' ),
-       'Blockme'                   => array( 'Hadlangang_ako' ),
        'Booksources'               => array( 'Mga_pinagmulang_aklat' ),
        'BrokenRedirects'           => array( 'Naputol_na_mga_panturo_papunta_sa_ibang_pahina', 'NaputulangPanturo' ),
        'Categories'                => array( 'Mga_kategorya' ),
@@ -64,10 +64,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Likhain_ang_kuwenta', 'LikhaKuwenta' ),
        'Deadendpages'              => array( 'Mga_pahinang_sukol', 'Mga_pahinang_walang_lagusan' ),
        'DeletedContributions'      => array( 'Naburang_mga_ambag' ),
-       'Disambiguations'           => array( 'Mga_paglilinaw', 'Paglilinaw' ),
        'DoubleRedirects'           => array( 'Nagkadalawang_mga_panturo_papunta_sa_ibang_pahina', 'DoblengPanturo' ),
        'EditWatchlist'             => array( 'Baguhin_ang_Bantayan' ),
        'Emailuser'                 => array( 'Tagagamit_ng_e-liham' ),
+       'ExpandTemplates'           => array( 'Palawakin_ang_mga_suleras' ),
        'Export'                    => array( 'Pagluluwas' ),
        'Fewestrevisions'           => array( 'Pinakakaunting_mga_pagbabago' ),
        'FileDuplicateSearch'       => array( 'Paghahanap_ng_kamukhang_talaksan' ),
@@ -110,6 +110,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Mga_pahinang_nakasanggalang' ),
        'Protectedtitles'           => array( 'Mga_pamagat_na_nakasanggalang' ),
        'Randompage'                => array( 'Alin_man', 'Alin_mang_pahina' ),
+       'RandomInCategory'          => array( 'Alinmang_kaurian' ),
        'Randomredirect'            => array( 'Pagtuturo_papunta_sa_alin_mang_pahina' ),
        'Recentchanges'             => array( 'Mga_huling_binago', 'HulingBinago' ),
        'Recentchangeslinked'       => array( 'Nakakawing_ng_kamakailang_pagbabago', 'Kaugnay_na_mga_pagbabago' ),
@@ -168,7 +169,6 @@ $messages = array(
 'tog-minordefault' => 'Markahan ang lahat ng pagbabago bilang maliit nang nakatakda',
 'tog-previewontop' => 'Ipakita ang paunang tingin bago ang kahon ng pagbabago',
 'tog-previewonfirst' => 'Ipakita ang paunang tingin sa unang pagbabago',
-'tog-nocache' => 'Huwag paganahin ang pagtatago ng pahinang pantingintingin',
 'tog-enotifwatchlistpages' => 'Padalhan ako ng e-liham kapag nabago ang isa sa pahina o talaksang binabantayan ko',
 'tog-enotifusertalkpages' => 'Padalhan ako ng e-liham kapag binago ang aking pahina ng usapan',
 'tog-enotifminoredits' => 'Padalhan din ako ng e-liham para sa mga maliliit na mga pagbabago ng mga pahina at mga talaksan',
@@ -303,7 +303,6 @@ $messages = array(
 'qbedit' => 'Baguhin',
 'qbpageoptions' => 'Itong pahina',
 'qbmyoptions' => 'Mga pahina ko',
-'qbspecialpages' => 'Mga natatanging pahina',
 'faq' => "Mga karaniwang itinatanong (''FAQ'')",
 'faqpage' => "Project:Mga karaniwang itinatanong (''FAQ'')",
 
@@ -519,9 +518,6 @@ Maaaring naglalaman ito ng isa o higit pang mga panitik (karakter) na hindi maaa
 'perfcachedts' => 'Ang sumusunod na mga dato ay nakaligpit, at dating isinapanahon noong $1. Isang pinakamataas na {{PLURAL:$4|isang resulta ang|$4 mga resulta ang}} makukuha mula sa taguan.',
 'querypage-no-updates' => 'Kasulukuyang hindi gumagana ang mga pagbabago para sa pahinang ito.
 Ang mga dato dito ay hindi pa masasariwa sa kasalukuyan.',
-'wrong_wfQuery_params' => 'Maling mga parametro sa wfQuery()<br />
-Tungkulin: $1<br />
-Tanong: $2',
 'viewsource' => 'Tingnan ang batayan',
 'viewsource-title' => 'Tingnan ang pinagmulan para sa $1',
 'actionthrottled' => 'Hinadlangan ang gawain',
@@ -566,13 +562,19 @@ Tandaan na may ilang pahinang maaaring magpatuloy na nagpapakitang parang nakala
 'welcomecreation-msg' => 'Nilikha na ang iyong kuwenta.
 Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SITENAME}}]].',
 'yourname' => 'Bansag:',
+'userlogin-yourname' => 'Pangngalan',
+'userlogin-yourname-ph' => 'Ilagay ang iyong Pangngalan',
+'createacct-another-username-ph' => 'Ilagay ang Pangngalan',
 'yourpassword' => 'Hudyat:',
 'userlogin-yourpassword' => 'Hudyat',
 'userlogin-yourpassword-ph' => 'Ipasok ang iyong hudyat',
+'createacct-yourpassword-ph' => 'Ilagay ang hudyat',
 'yourpasswordagain' => 'Hudyat mo uli:',
 'createacct-yourpasswordagain' => 'Tiyakin ang hudyat',
+'createacct-yourpasswordagain-ph' => 'Muling ilagay ang hudyat',
 'remembermypassword' => 'Tandaan ang paglagda ko sa kompyuter na ito (pinakamarami na ang $1 {{PLURAL:$1|araw|mga araw}})',
 'userlogin-remembermypassword' => 'Panatilihin akong nakalagda',
+'userlogin-signwithsecure' => 'Gumamit ng wastong koneksyon',
 'yourdomainname' => 'Dominyo mo:',
 'password-change-forbidden' => 'Hindi mo maaaring palitan ang mga hudyat sa wiking ito.',
 'externaldberror' => 'Maaaring may kamalian sa pagpapatotoo ng kalipunan ng mga dato o kaya hindi ka pinahintulutang isapanahon ng iyong panlabas na kuwenta o patnugutan.',
@@ -592,15 +594,23 @@ Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SIT
 'gotaccount' => 'May kuwenta ka na ba? $1.',
 'gotaccountlink' => 'Lumagda',
 'userlogin-resetlink' => 'Nakalimutan mo ang iyong mga detalyeng panglagda?',
+'userlogin-resetpassword-link' => 'Nakalimutan ang hudyat?',
+'userlogin-createanother' => 'Lumikha ng isang akawnt',
+'createacct-join' => 'Ilagay ang iyong impormasyon sa baba.',
+'createacct-another-join' => 'Ilagay ang impormasyon ng bagong akawnt sa baba.',
 'createacct-emailrequired' => 'Direksiyong e-liham:',
 'createaccountmail' => 'Gumamit ng pansamantalang walang-piling hudyat at ipadala ito sa direksiyong e-liham na nakasaad sa ibaba',
 'createacct-realname' => 'Tunay na pangalan (maaaring wala)',
 'createaccountreason' => 'Dahilan:',
 'createacct-reason' => 'Dahilan',
+'createacct-reason-ph' => 'Bakit ka gagawa ng isa pang akawnt?',
+'createacct-imgcaptcha-ph' => 'Ilagay ang tekstong makikita sa taas.',
+'createacct-benefit-heading' => '{{SITENAME}} ay linikha ng mga taong tulad mo.',
 'badretype' => 'Hindi magkatugma ang ipinasok mong mga hudyat.',
 'userexists' => 'May gumagamit na ng ipinasok na bansag.
 Pumili po ng ibang pangalan.',
 'loginerror' => 'Kamalian sa paglagda',
+'createacct-error' => 'May pagkakamali sa paglikha ng akawnt',
 'createaccounterror' => 'Hindi mailikha ang kuwenta: $1',
 'nocookiesnew' => "Nalikha ang kuwenta ng tagagamit, ngunit hindi ka nakalagda.
 Gumagamit ang {{SITENAME}} ng mga kuki (''cookies'') upang makalagda ang mga tagagamit.
@@ -629,7 +639,7 @@ Pakisubok muli.',
 'passwordtooshort' => 'Ang mga hudyat ay dapat mayroong {{PLURAL:$1|1 panitik|$1 panitik}} (karakter).',
 'password-name-match' => 'Dapat magkaiba ang hudyat mo sa bansag mo.',
 'password-login-forbidden' => 'Ipinagbabawal ang paggamit ng ganitong pangalan ng tagagamit at hudyat.',
-'mailmypassword' => 'Ipadala sa pamamagitan ng e-liham ang bagong hudyat',
+'mailmypassword' => 'Muling itakda ang hudyat',
 'passwordremindertitle' => 'Bagong pansamantalang hudyat para sa {{SITENAME}}',
 'passwordremindertext' => 'Mayroong (na maaaring ikaw, mula sa adres ng IP na $1) humiling ng isang bagong
 hudyat para sa {{SITENAME}} ($4). Isang pansamantalang hudyat ang nilikha
@@ -680,7 +690,7 @@ Maghintay po muna bago subukan uli.',
 'user-mail-no-addy' => 'Sinubukang magpadala ng e-liham na walang tirahan na para sa e-liham.',
 
 # Change password dialog
-'resetpass' => 'Palitan ang hudyat',
+'changepassword' => 'Baguhin ang hudyat',
 'resetpass_announce' => 'Lumagda ka sa pamamagitan ng isang pansamantalang ini-e-liham na kodigo.
 Para tapusin ang paglagda, dapat kang magtakda ng isang bagong hudyat dito:',
 'resetpass_text' => '<!-- Magdagdag ng teksto rito -->',
@@ -1057,10 +1067,6 @@ Makikita mo ang pagkakaibang ito; matatagpuan ang mga detalye sa [{{fullurl:{{#S
 'revisiondelete' => 'Burahin/ibalik ang mga pagbabago',
 'revdelete-nooldid-title' => 'Hindi tanggap na puntiryang pagbabago',
 'revdelete-nooldid-text' => 'Hindi ka nagbigay ng pupuntahang pagbabago o mga pagbabago para magampanan ang paraan na ito.',
-'revdelete-nologtype-title' => 'Walang uri ng tala/pagtatalang ibinigay',
-'revdelete-nologtype-text' => 'Hindi ka tumukoy ng isang uri ng talang pagsasagawaan ng kilos na ito.',
-'revdelete-nologid-title' => 'Hindi tanggap na entrada/ipinasok sa tala.',
-'revdelete-nologid-text' => 'Hindi ka tumukoy ng isang pinupuntiryang kaganapang pangtala upang maisagawa ang tungkuling ito o hindi umiiral ang tinukoy na entrada/ipinasok.',
 'revdelete-no-file' => 'Hindi umiiral ang tinutukoy na talaksan.',
 'revdelete-show-file-confirm' => 'Nakatitiyak ka bang nais mong tanawin ang isang binurang pagbabago ng talaksang "<nowiki>$1</nowiki>" mula $2 noong $3?',
 'revdelete-show-file-submit' => 'Oo',
@@ -1093,8 +1099,6 @@ $1",
 'logdelete-failure' => "'''Hindi maitakda ang kaantasan ng pagpapakita ng kalap:'''
 $1",
 'revdel-restore' => 'Baguhin ang kaantasan ng pagpapakita',
-'revdel-restore-deleted' => 'naburang mga binago',
-'revdel-restore-visible' => 'makikitang mga binago',
 'pagehist' => 'Kasaysayan ng pahina',
 'deletedhist' => 'Naburang kasaysayan',
 'revdelete-hide-current' => 'May kamalian sa pagtatago ng bagay na may petsang $2, $1: ito ang kasalukuyang pagbabago.
@@ -1172,12 +1176,8 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 # Search results
 'searchresults' => 'Kinalabasan/Resulta ng paghahanap',
 'searchresults-title' => 'Resulta ng paghahanap para sa "$1"',
-'searchresulttext' => 'Para sa mas maraming kabatiran hinggil sa paghahanap sa {{SITENAME}}, tingnan ang [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Hinanap mo ang \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|lahat ng mga pahinang nagsisimula sa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|lahat ng mga pahinang nakakawing sa "$1"]])',
-'searchsubtitleinvalid' => "Hinanap mo ang '''$1'''",
 'toomanymatches' => 'Napakaraming mga tumutugmang ibinalik, pakisubok ang isang ibang tanong',
 'titlematches' => 'Tumutugma ang pamagat ng pahina',
-'notitlematches' => 'Walang tumutugmang pamagat ng pahina',
 'textmatches' => 'Tumutugma ang teksto ng pahina',
 'notextmatches' => 'Walang katugmang pahina ng teksto',
 'prevn' => 'nauna {{PLURAL:$1|$1}}',
@@ -1186,10 +1186,8 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 'nextn-title' => 'Susunod na $1 {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Ipakita ang $1 {{PLURAL:$1|resulta|mga resulta}} na para sa bawat isang pahina',
 'viewprevnext' => 'Tingnan ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Mga pagpipilian para sa paghahanap',
 'searchmenu-exists' => "'''Mayroong pahinang may pangalang \"[[:\$1]]\" dito sa wiking ito'''",
 'searchmenu-new' => "'''Likhain ang pahinang \"[[:\$1]]\" sa wiking ito!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Tingnan-tingnan ang mga pahinang may ganitong unahan/unlapi]]',
 'searchprofile-articles' => 'Mga pahina ng nilalaman',
 'searchprofile-project' => 'Mga pahina ng Tulong at Proyekto',
 'searchprofile-images' => 'Multimidya',
@@ -1210,21 +1208,16 @@ Matatagpuan ang mga detalye sa loob ng [{{fullurl:{{#Special:Log}}/delete|page={
 'search-interwiki-default' => '$1 mga resulta:',
 'search-interwiki-more' => '(mas marami pa)',
 'search-relatedarticle' => 'Kaugnay',
-'mwsuggest-disable' => 'Huwag paganahin ang mga mungkahi sa paghahanap',
 'searcheverything-enable' => 'Maghanap sa lahat ng ngalan-espasyo:',
 'searchrelated' => 'kaugnay',
 'searchall' => 'lahat',
 'showingresults' => "Ipinapakita sa ibaba ang magpahanggang sa {{PLURAL:$1|'''1''' resultang|'''$1''' mga resultang}} nagsisimula sa #'''$2'''.",
 'showingresultsnum' => "Ipinapakita sa ibaba ang {{PLURAL:$3|'''1''' resultang|'''$3''' mga resultang}} nagsisimula sa #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultang '''$1''' ng '''$3'''|Mga resultang '''$1 - $2''' ng '''$3'''}} para sa '''$4'''",
-'nonefound' => "'''Paunawa''': Ilang mga ngalan-espasyo lamang ang hinahanap ayon sa likas na pagkakatakda.
-Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialalaman (kabilang ang mga pahina ng usapan, mga suleras, atbp), o gamitin ang ninanais na espasyo ng pangalan bilang unlapi.",
 'search-nonefound' => 'Walang mga resultang tumutugma sa katanungan/pagtatanong.',
-'powersearch' => 'Paghahanap na may mas mataas na antas',
 'powersearch-legend' => 'Paghahanap na may mas mataas na antas',
 'powersearch-ns' => 'Maghanap sa mga espasyo ng pangalan:',
 'powersearch-redir' => 'Itala ang mga panuto',
-'powersearch-field' => 'Hanapin ang',
 'powersearch-togglelabel' => 'Suriin:',
 'powersearch-toggleall' => 'Lahat',
 'powersearch-togglenone' => 'Wala',
@@ -1235,7 +1228,6 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'preferences' => 'Mga kagustuhan',
 'mypreferences' => 'Mga nais',
 'prefs-edits' => 'Bilang ng mga pagbabago:',
-'changepassword' => 'Baguhin ang hudyat',
 'prefs-skin' => 'Pabalat',
 'skin-preview' => 'Unang tingin',
 'datedefault' => 'Walang kagustuhan',
@@ -1258,13 +1250,11 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'prefs-email' => 'Mga pagpipilian para sa e-liham',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Sagipin',
-'resetprefs' => 'Hawanin ang hindi nasagip na mga pagbabago',
 'restoreprefs' => 'Ibalik ang lahat ng likas na mga pagtatakda',
 'prefs-editing' => 'May binabago',
 'rows' => 'Mga pahalang na hanay:',
 'columns' => 'Mga pahabang hanay:',
 'searchresultshead' => 'Hanapin',
-'resultsperpage' => 'Bilang ng pagtama sa bawat pahina:',
 'stub-threshold' => 'Kakayanan para sa pagpopormat ng <a href="#" class="usbong">kawing ng usbong</a> (mga \'\'byte\'\'):',
 'stub-threshold-disabled' => 'Hindi pinagagana',
 'recentchangesdays' => 'Mga araw na ipapakita sa kamakailan lamang na mga pagbabago:',
@@ -1276,7 +1266,6 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
 'localtime' => 'Lokal na oras:',
 'timezoneuseserverdefault' => 'Gamitin ang katakdaan ng wiki ($1)',
 'timezoneuseoffset' => "Iba pa (tukuyin ang pambawi o ''offset'')",
-'timezoneoffset' => "Pambawi/pambalanse (''offset'')¹:",
 'servertime' => 'Oras sa serbidor',
 'guesstimezone' => "Punuin ng mula sa pantingin-tingin (''browser'')",
 'timezoneregion-africa' => 'Aprika',
@@ -1515,7 +1504,6 @@ Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para
 'recentchanges-label-bot' => 'Gawa ng isang bot ang pagbabagong ito',
 'recentchanges-label-unpatrolled' => 'Hindi pa napapatrulyahan ang pagbabagong ito',
 'recentchanges-legend-newpage' => '$1 - bagong pahina',
-'rcnote' => "Nasa ibaba {{PLURAL:$1|ang '''1''' pagbabago|ang pinakahuling '''$1''' mga pagbabago}} sa huling {{PLURAL:$2|araw|'''$2''' mga araw}}, mula noong $5, $4.",
 'rcnotefrom' => "Nasa ibaba ang mga pagbabago mula pa noong '''$2''' (ipinapakita ang magpahanggang sa '''$1''').",
 'rclistfrom' => 'Ipakita ang bagong mga pagbabago simula sa $1',
 'rcshowhideminor' => '$1 maliliit na mga pagbabago',
@@ -1965,7 +1953,7 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'nrevisions' => '$1 {{PLURAL:$1|pagbabago|mga pagbabago}}',
 'nviews' => '$1 {{PLURAL:$1|pagtingin|mga pagtingin}}',
 'nimagelinks' => 'Ginamit sa $1 {{PLURAL:$1|pahina|mga pahina}}',
-'ntransclusions' => 'ginamit sa $1 {{plural:$1|pahina|mga pahina}}',
+'ntransclusions' => 'ginamit sa $1 {{PLURAL:$1|pahina|mga pahina}}',
 'specialpage-empty' => 'Walang resulta para sa ulat na ito.',
 'lonelypages' => 'Mga inulilang pahina',
 'lonelypagestext' => 'Ang mga sumusunod ng mga pahina ay hindi nakaturo mula sa ibang mga pahina sa wiking ito.',
@@ -1999,10 +1987,8 @@ Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
 'protectedpages' => 'Mga nakaprotektang pahina',
 'protectedpages-indef' => 'Mga walang katiyakang proteksyon lamang',
 'protectedpages-cascade' => 'Baita-baitang na mga panananggalang lamang',
-'protectedpagestext' => 'Nakasanggalang ang sumusunod na mga pahina laban sa paglipat o pagbabago',
 'protectedpagesempty' => 'Sa kasalukuyan, walang mga pahinang nakasanggalang na may ganitong mga parametro.',
 'protectedtitles' => 'Nakasanggalang na mga pamagat',
-'protectedtitlestext' => 'Ang sumusunod ay mga pamagat na nakaprotekta mula sa pagkalikha.',
 'protectedtitlesempty' => 'Walang pamagat ang kasalukuyang nakaprotekta sa binigay na parametro.',
 'listusers' => 'Tala ng tagagamit',
 'listusers-editsonly' => 'Ipakita lamang ang mga tagagamit na gumawa/nakagawa na ng mga pagbabago',
@@ -2054,9 +2040,6 @@ Maaari mong pakitirin/pakiputin ang ipinapakita sa pamamagitan ng pagpili ng uri
 'allpagesto' => 'Ipakita ang mga pahinang nagtatapos sa:',
 'allarticles' => 'Lahat ng mga pahina',
 'allinnamespace' => 'Lahat ng mga pahina ($1 espasyo ng pangalan)',
-'allnotinnamespace' => 'Lahat ng mga pahina (wala sa $1 espasyo ng pangalan)',
-'allpagesprev' => 'Nakaraan',
-'allpagesnext' => 'Susunod',
 'allpagessubmit' => 'Ipatupad/Sumige',
 'allpagesprefix' => 'Ipakita ang mga pahinang may unlaping:',
 'allpagesbadtitle' => 'Ang binagay na pamagat ng pahina ay hindi tinatanggap o may unlapi na tumuturo sa ibang wika o wiki.  Maaaring naglalaman ito ng isa o higit pa na mga karakter na hindi ginagamit bilang pamagat.',
@@ -2386,7 +2369,6 @@ Sa ganitong mga pagkakataon, dapat mong tanggalin ang tsek o huwag itago ang pin
 'undeletebtn' => 'Ibalik',
 'undeletelink' => 'tingnan/ibalik muli',
 'undeleteviewlink' => 'tingnan',
-'undeletereset' => 'I-reset',
 'undeleteinvert' => 'Baligtarin ang pagpili/pilian',
 'undeletecomment' => 'Dahilan:',
 'undeletedrevisions' => '{{PLURAL:$1|1 pagbabago|$1 mga pagbabagong}} naibalik na',
@@ -2413,7 +2395,6 @@ Tingnan ang [[Special:Log/delete|talaan ng pagbubura]] para sa isang talaan ng m
 $1',
 'undelete-show-file-confirm' => 'Nakatitiyak ka bang ibig mong tanawin ang isang nabura nang pagbabago ng talaksang "<nowiki>$1</nowiki>" mula $2 noong $3?',
 'undelete-show-file-submit' => 'Oo',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Ngalan-espasyo:',
@@ -2476,7 +2457,6 @@ Ang pinakahuling entrada sa talaan  ng pagharang ay ibinigay sa ibaba para sa pa
 'block' => 'Harangin ang tagagamit',
 'unblock' => 'Huwag harangin ang tagagamit',
 'blockip' => 'Harangin/hadlangan ang tagagamit',
-'blockip-title' => 'Harangin ang tagagamit',
 'blockip-legend' => 'Iharang ang tagagamit',
 'blockiptext' => 'Gamitin ang mga lahok sa ibaba upang maharang ang akses sa pagsulat mula sa isang espesipikong IP address o bansag.
 Gawin lamang ito para maiwasan ang bandalismo, at napapaloob sa [[{{MediaWiki:Policy-url}}|patakaran]].
@@ -2484,7 +2464,6 @@ Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na
 'ipadressorusername' => 'Direksyong IP o bansag:',
 'ipbexpiry' => 'Pagkawalang-bisa:',
 'ipbreason' => 'Dahilan:',
-'ipbreasonotherlist' => 'Ibang dahilan',
 'ipbreason-dropdown' => '*Mga karaniwang dahilan sa paghaharang
 ** Pagpasok ng hindi totoong impormasyon
 ** Pag-alis ng nilalaman mula sa mga pahina
@@ -2500,8 +2479,6 @@ Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na
 'ipbsubmit' => 'Harangin/hadlangan ang tagagamit na ito',
 'ipbother' => 'Ibang oras:',
 'ipboptions' => '2 oras:2 hours,1 araw:1 day,3 araw:3 days,1 linggo:1 week,2 linggo:2 weeks,1 buwan:1 month,3 buwan:3 months,6 buwan:6 months,1 taon:1 year,walang hanggan:infinite',
-'ipbotheroption' => 'iba',
-'ipbotherreason' => 'Iba/karagdagang dahilan:',
 'ipbhidename' => 'Itago ang pangalan ng tagagamit mula sa pagbabago at mga talaan',
 'ipbwatchuser' => 'Bantayan ang pahinang pantagagamit at pahina ng usapan ng tagagamit na ito',
 'ipb-disableusertalk' => 'Pigilan ang tagagamit na ito mula sa pamamatnugot ng kanilang pansariling pahina ng usapan habang hinahadlangan',
@@ -2592,7 +2569,6 @@ Tingnan ang [[Special:BlockList|talaan ng pagharang]] para sa lista ng kasalukuy
 'sorbsreason' => 'Nakalista ang IP address mo bilang isang bukas na proxy sa DNSBL na ginagamit ng sayt na ito.',
 'sorbs_create_account_reason' => 'Nakatala ang iyong IP address bilang open proxy sa DNSBL na ginagamit ng {{SITENAME}}.
 Hindi ka makakalikha ng account',
-'cant-block-while-blocked' => 'Hindi mo mahahadlangan/mahaharang ang ibang mga tagagamit habang hinahadlangan ka.',
 'cant-see-hidden-user' => 'Ang tagagamit na sinusubukan mong hadlangan ay naharang at naikubli na.
 Dahil wala kang karapatang magkubli ng tagagamit, hindi mo makikita o mababago ang paghadlang sa tagagamit.',
 'ipbblocked' => 'Hindi mo mahahadlangan o tanggalin ang hadlang ng ibang mga tagagamit, dahil hinadlangan ka rin',
@@ -2653,7 +2629,6 @@ mangyaring tiyakin na nauunawaan mo ang mga kahihinatnan nito bago magpatuloy.",
 Sa mga kasong ganoon, kailangan mong ilipat o pagsamahin/pagsanibin ang pahina sa manwal o kinakamay na paraan kung nanaisin.",
 'movearticle' => 'Ilipat ang pahina:',
 'moveuserpage-warning' => "'''Babala:''' Ililipat mo ang isang pahina ng tagagamit. Pakitandaan na tanging ang pahina lamang ang malilipat at ''hindi'' babaguhin ang pangalan ng tagagamit.",
-'movenologin' => 'Hindi nakalagda',
 'movenologintext' => 'Dapat na isa kang nagpatalang tagagamit at [[Special:UserLogin|nakalagdang papasok]] upang makapaglipat ng isang pahina.',
 'movenotallowed' => 'Wala kang permisong maglipat ng pahina.',
 'movenotallowedfile' => 'Wala kang pahintulot upang makapaglipat ng mga talaksan.',
@@ -2670,8 +2645,6 @@ Sa mga kasong ganoon, kailangan mong ilipat o pagsamahin/pagsanibin ang pahina s
 pangalang pinili mo ay hindi tanggap.
 Pumili muli ng ibang pangalan.',
 'cantmove-titleprotected' => 'Hindi mo malilipatan ang isang pahina sa lokasyong ito, dahil nakasanggalang sa paglikha ang baong pamagat',
-'talkexists' => "'''Matagumpay na nailipat ang pahina mismo, ngunit hindi mailipat ang pahinang usapan dahil may ganito na sa bagong pamagat.  Mangyaring isanib ito nang manwal.'''",
-'movedto' => 'inilipat sa',
 'movetalk' => 'Ilipat ang kaugnay na pahinang usapan',
 'move-subpages' => 'Ilipat ang kabahaging mga pahina (hanggang sa $1)',
 'move-talk-subpages' => 'Ilipat ang kabahaging mga pahina ng usapan (hanggang sa $1)',
@@ -3584,15 +3557,10 @@ $8',
 'exif-urgency-high' => 'Mataas ($1)',
 'exif-urgency-other' => 'Pagkakauna-unang tinukoy ng tagagamit ($1)',
 
-# External editor support
-'edit-externally' => 'Baguhin ang talaksang ito sa pamamagitan ng isang panlabas na aplikasyon',
-'edit-externally-help' => 'Tingnan ang [//meta.wikimedia.org/wiki/Help:External_editors mga kaalaman/paraan sa paghahanda at pagaayos] para sa mas marami pang kabatiran.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'lahat',
 'namespacesall' => 'lahat',
 'monthsall' => 'lahat',
-'limitall' => 'lahat',
 
 # Email address confirmation
 'confirmemail' => 'Patotohanan ang adres ng e-liham',
@@ -3612,7 +3580,6 @@ Ibinalik ng tagapagpadala ang: $1',
 'confirmemail_needlogin' => 'Kailangan mong $1 upang kumpirmahin/mapatotohanan ang iyong adres ng e-liham.',
 'confirmemail_success' => 'Nakumpirma/napatotohanan na ang adres ng e-liham mo. Maaari ka ng [[Special:UserLogin|lumagda]] at maglibang sa wiki.',
 'confirmemail_loggedin' => 'Natiyak na ngayon ang tirahan ng e-liham mo.',
-'confirmemail_error' => 'May nangyaring kamalian sa pagsasagip ng iyong kumpirmasyon.',
 'confirmemail_subject' => 'Kumpirmasyon/pagpapatotoong pang-adres ng e-liham ng {{SITENAME}}',
 'confirmemail_body' => 'May isa, maaaring ikaw, na mula sa direksiyong IP na $1,
 ang nagtala ng isang kuwentang "$2" na mayroong ganitong direksiyong e-liham sa {{SITENAME}}.
@@ -3934,7 +3901,6 @@ Dapat na nakatanggap ka ng [{{SERVER}}{{SCRIPTPATH}}/COPYING isang sipi ng Pangk
 
 # Special:ComparePages
 'comparepages' => 'Paghambingin ang mga pahina',
-'compare-selector' => 'Paghambingin ang mga pahina ng rebisyon',
 'compare-page1' => 'Pahina 1',
 'compare-page2' => 'Pahina 2',
 'compare-rev1' => 'Rebisyon 1',
index 2fabc68..e1ff662 100644 (file)
@@ -264,7 +264,6 @@ $messages = array(
 'qbedit' => 'Сәрост кардеј',
 'qbpageoptions' => 'Ым сәһифә',
 'qbmyoptions' => 'Чымы сәһифон',
-'qbspecialpages' => 'Хысусијә сәһифон',
 'faq' => 'РАП',
 'faqpage' => 'Project:РАП',
 
@@ -438,7 +437,7 @@ $messages = array(
 'loginlanguagelabel' => 'Зывон: $1',
 
 # Change password dialog
-'resetpass' => 'Пароли дәгиш карде',
+'changepassword' => 'Пароли дәгиш кардеј',
 'resetpass_header' => 'Иштирокәкә пароли дәгиш карде',
 'oldpassword' => 'Канә парол:',
 'newpassword' => 'Нујә парол:',
@@ -558,8 +557,6 @@ $messages = array(
 'revdelete-radio-unset' => 'Не',
 'revdelete-log' => 'Сәбәб:',
 'revdel-restore' => 'Винде дәрәҹә дәгиш карде',
-'revdel-restore-deleted' => 'Рәдд кардә быә рәвојәтон',
-'revdel-restore-visible' => 'Чијә рәвојәтон',
 'pagehist' => 'Сәһифә тарых',
 'revdelete-reasonotherlist' => 'Ҹо сәбәб',
 
@@ -585,7 +582,6 @@ $messages = array(
 'nextn-title' => 'Думотоно шә $1 {{PLURAL:$1|нывыштәј|нывыштәјон}}',
 'shown-title' => 'Нишо дој $1 {{PLURAL:$1|нывыштәј|нывыштәјон}} сәһифәдә',
 'viewprevnext' => 'Дијә кардеј ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Бо нәве кукон',
 'searchmenu-exists' => "'''Бы вики-нәхшәдә һесте сәһифә «[[:$1]]»'''",
 'searchmenu-new' => "'''Сәһифә офәјеј «[[:$1]]» бә ым вики-нахшәдә!'''",
 'searchprofile-articles' => 'Әсосә сәһифон',
@@ -608,13 +604,11 @@ $messages = array(
 'searchall' => 'Һәммәј',
 'showingresultsheader' => "{{PLURAL:$5|Нәтиҹә'''$1''' из '''$3'''|Нәтиҹон '''$1 — $2''' че '''$3'''}} бо '''$4'''",
 'search-nonefound' => 'Бә шымә хәбәсә ујғун омә сәкыштә пәјдо ныбе.',
-'powersearch-field' => 'Нәве',
 'powersearch-toggleall' => 'Һәммәј',
 
 # Preferences page
 'preferences' => 'Кукон',
 'mypreferences' => 'Кукон',
-'changepassword' => 'Пароли дәгиш кардеј',
 'skin-preview' => 'Сыфтәнә нишо дој',
 'prefs-user-pages' => 'Иштирокәкә сәһифон',
 'prefs-rc' => 'Ән нујә дәгишон',
@@ -659,7 +653,6 @@ $messages = array(
 'recentchanges-label-minor' => 'Ым гадә дәгишије',
 'recentchanges-label-bot' => 'Ым дәгиши бот кардәше',
 'recentchanges-label-unpatrolled' => 'Im redaktə hələ nəzərədə dəvardəni',
-'rcnote' => "Бә жиј нишо доә быә {{PLURAL:$1|'''1''' дәгиши|'''$1''' дәгиши}}, бә охонә {{PLURAL:$2|ружәдә|'''$2''' ружәдә}}, саат $5, $4.",
 'rcnotefrom' => "Бә жиј доә быән дәгишон че вахтику '''$2''' (тосә '''$1''').",
 'rclistfrom' => '$1 вахтику дәгишон нишо быдә',
 'rcshowhideminor' => '$1 гәдәлијә дәгишон',
@@ -850,7 +843,6 @@ $messages = array(
 # Block/unblock
 'ipbreason' => 'Сәбәб:',
 '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',
-'ipbotheroption' => 'ҹо',
 'ipblocklist' => 'Бастә быә иштирокәкон',
 'blocklist-reason' => 'Сәбәб',
 'ipblocklist-submit' => 'Нәве',
@@ -996,10 +988,6 @@ $messages = array(
 
 'exif-dc-publisher' => 'Нәшрәкә',
 
-# External editor support
-'edit-externally' => 'Редактә кардеј ым фајли де заһири програм',
-'edit-externally-help' => '(Bo mıffəssələ məlumoton bə [https://www.mediawiki.org/wiki/Manual:External_editors dərsəvon bo soxtəy] diyə bıkən)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'һәммәј',
 'namespacesall' => 'һәммәј',
index cebf739..da95927 100644 (file)
@@ -64,7 +64,7 @@ $messages = array(
 'toolbox' => 'Lebokoso la dithulusu',
 'otherlanguages' => 'Ka dipuo di sele',
 
-# 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).
+# 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).
 'currentevents' => 'Ditiragalo tsa sešeng',
 'disclaimers' => 'Tlhapa diatla',
 'edithelp' => 'Thuso ya go fetola',
@@ -75,7 +75,6 @@ $messages = array(
 'privacy' => 'Melawana ya sephiri',
 
 'youhavenewmessages' => 'O na le $1 ($2).',
-'newmessageslink' => 'molaetsa o moša',
 'youhavenewmessagesmulti' => 'O na le molaetsa o moša mo $1',
 'editsection' => 'baakanya',
 'editold' => 'baakanya',
@@ -88,9 +87,6 @@ $messages = array(
 'viewsource' => 'Lebelela motswedi',
 
 # Login and logout pages
-'welcomecreation' => '== Amogelesega, $1! ==
-
-O ipuletse akhaonte. O seka wa lebala go fetola tse o di dikgatlhegelo tsa gago tsa {{SITENAME}}.',
 'yourname' => 'Leina la modirisi:',
 'yourpassword' => 'Selotlolo sa sephiri:',
 'yourpasswordagain' => 'Kwala selotlolo sa gago sa sephiri gape:',
@@ -160,9 +156,7 @@ O ipuletse akhaonte. O seka wa lebala go fetola tse o di dikgatlhegelo tsa gago
 # Move page
 'move-page-legend' => 'Sutisa tsebe',
 'movearticle' => 'Sutisa tsebe:',
-'movenologin' => 'Ga o a ikwadisa',
 'movepagebtn' => 'Sutisa tsebe',
-'movedto' => 'sutela kwa',
 'movereason' => 'Lebaka:',
 
 # Namespace 8 related
index e8c207a..85c69e9 100644 (file)
@@ -115,7 +115,6 @@ $messages = array(
 'qbedit' => 'Fatu',
 'qbpageoptions' => 'Peesi koʻeni',
 'qbmyoptions' => 'Peesi ʻaʻaku',
-'qbspecialpages' => 'Ngaahi peesi makehe',
 'faq' => 'Fehuʻi faʻa eke',
 'faqpage' => 'Project:Fehuʻi faʻa eke',
 
@@ -245,9 +244,6 @@ Ko e pule, naʻe lokaʻi ia, ʻoku pehē: $1',
 'badtitletext' => "Naʻe taʻeʻaonga ʻa e hingoa ʻo e peesi naʻa ke fili, pe naʻe ʻi ai ha fehokotaki māhehei fakalea kehe pe fehokotaki māhehei faka''wiki'' kehe. Mahalo pe ʻoku ʻi loto ha ʻū mataʻitohi ʻoku ʻikai lava ngāueʻaki ʻi ha hingoa.",
 'perfcached' => 'ʻOku fafaʻo ʻa e meʻaʻilo ʻi lalo, pea mahalo pē ʻoku ʻikai fakafoʻoua. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'ʻOku fafaʻo ʻa e meʻaʻilo ʻi lalo, naʻe fakaonopooni fakamuimui ia $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
-'wrong_wfQuery_params' => "Ngaahi mahuʻinga ʻikai totonu ki he ''wfQuery()''<br />
-Lakanga: $1<br />
-Eke: $2",
 'viewsource' => 'Vakai ki he tupunga',
 'protectedinterface' => 'Ko e peesi ʻeni ʻoku fakaai ia ʻa e potutohi maʻa e founga fakakomipiuta, ʻoku maluʻi ia ʻo taʻofi leakovi.',
 'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
@@ -311,6 +307,7 @@ Kapau naʻe kole ia ʻe he tokotaha kehe, pea ʻosi hoʻo manatuʻi ʻo e leatap
 'loginlanguagelabel' => 'Lea: $1',
 
 # Change password dialog
+'changepassword' => 'Liliu hoʻo leatapu',
 'oldpassword' => 'Ko e leatapu motuʻa:',
 'newpassword' => 'Ko e leatapu foʻou:',
 'retypenew' => 'Toe ʻai leatapu foʻou:',
@@ -434,15 +431,12 @@ Ko e ʻuhinga loka ko e $1 ia.",
 'search-interwiki-more' => '(lahi ange)',
 'showingresults' => "ʻOku ʻasi ʻi lalo ʻa e ngaahi fua ʻoku kamata mo e #'''$2''' (aʻu ki he '''$1''').",
 'showingresultsnum' => "ʻOku ʻasi ʻi lalo ha fua ʻe '''$3''', ʻoku kamata mo e #'''$2'''.",
-'nonefound' => "Ko e ngaahi kumi naʻe ʻikai ke siaʻa. Mahalo pē te ke fiefeinga kumi ʻi he ngaahi vā hingoa kotoa (kupu, alea, sīpinga, mo e hā fua). Tānaki ''all:'' ʻi muʻa ʻo hoʻo fehuʻi.",
-'powersearch' => 'Kumi',
 'powersearch-legend' => 'Kumi lakasi',
 'powersearch-redir' => 'Hokohoko ʻo e ngaahi leʻei',
 
 # Preferences page
 'preferences' => 'Faʻiteliha',
 'mypreferences' => 'faʻiteliha ʻaʻaku',
-'changepassword' => 'Liliu hoʻo leatapu',
 'prefs-skin' => 'Kili',
 'skin-preview' => 'Vakai pē',
 'datedefault' => 'ʻIkai ha faʻiteliha',
@@ -454,7 +448,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
 'prefs-watchlist-edits' => 'Ngaahi fatu hono lahi ʻoku ʻasi ʻi he hokohoko leʻo fano:',
 'prefs-misc' => 'Kehekehe',
 'saveprefs' => 'Haofaki',
-'resetprefs' => 'Fakafoki',
 'prefs-editing' => 'ʻOku fatu',
 'rows' => 'Ngaahi ʻotu:',
 'columns' => 'Vahaʻa laini:',
@@ -463,7 +456,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
 'savedprefs' => 'Kuo haofaki hoʻo faʻiteliha.',
 'timezonelegend' => 'Feituʻu taimi',
 'localtime' => 'Taimi fakafeituʻu:',
-'timezoneoffset' => 'Ngaahi houa ʻo e faikehekehe:',
 'servertime' => 'Taimi ʻo e tauhia:',
 'timezoneregion-africa' => 'ʻAfelika',
 'allowemail' => 'Fakamafeiaʻi ʻa e tohila mei he kau ʻetita ʻe taha',
@@ -503,7 +495,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
 # Recent changes
 'recentchanges' => 'Ngaahi toki liliu',
 'recentchanges-summary' => 'Fakatotolo ʻa e ngaahi toki liliu ki he wiki ʻi he pēsí ni.',
-'rcnote' => 'ʻOku ʻasi ʻi lalo ʻa e liliu fakamuimui ʻe <strong>$1</strong> lolotonga ʻa e ʻaho fakamuimui ʻe <strong>$2</strong> mei he taimi: $4, $5',
 'rcnotefrom' => "ʻOku ʻasi ʻi lalo ʻa e liliu talu mei '''$2''' (aʻu ki he '''$1''').",
 'rclistfrom' => 'ʻAsi mai ha ngaahi liliu foʻou ʻo kamata mei he $1',
 'rcshowhideminor' => '$1 fatu siʻi',
@@ -697,9 +688,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
 'allpagesfrom' => 'ʻAsi mai ngaahi peesi ʻoku kamata he:',
 'allarticles' => 'Ngaahi kupu kātoa',
 'allinnamespace' => 'Peesi kotoa ($1 vā hingoa)',
-'allnotinnamespace' => 'Ngaahi peesi kotoa, ʻoku ʻikai ʻi vā hingoa $1',
-'allpagesprev' => 'Ki muʻa',
-'allpagesnext' => 'Hoko',
 'allpagessubmit' => 'Fai ā',
 'allpagesprefix' => 'ʻAsi mai ngaahi peesi mo ʻenau fakapipikimuʻa:',
 'allpagesbadtitle' => "Naʻe taʻeʻaonga ʻa e hingoa ʻo e peesi naʻa ke fili, pe naʻe ʻi ai ha fakapipikimuʻa  fakalea kehe pe ha fakapipikimuʻa faka''wiki'' kehe. Mahalo pe ʻoku ʻi loto ha ʻū mataʻitohi ʻoku ʻikai lava ngāueʻaki ʻi ha hingoa.",
@@ -822,7 +810,6 @@ Ko e fatu fakamuimui naʻe fatu ʻe [[User:$3|$3]] ([[User talk:$3|Alea]]).',
 'undeleterevisions' => 'Ngaahi paaki ʻe $1 kuo ʻave ki he tauhiʻanga',
 'undeletebtn' => 'Fakafoki',
 'undeletelink' => 'fakafoki',
-'undeletereset' => 'Fakafoki',
 'undeletecomment' => 'Fakamatala:',
 'undeletedrevisions' => 'Kuo fakafoki ʻa e paaki ʻe $1',
 'undeletedfiles' => 'Kuo fakafoki ʻa e faile ʻe $1',
@@ -861,7 +848,6 @@ Vakai ki he [[Special:Log/delete|hokohoko tāmateʻi]] ki he lekooti ʻo e ngaah
 'ipbcreateaccount' => 'Taʻofia ʻa e fakatupu ʻo ha tohi kau-ki-ai',
 'ipbsubmit' => 'Taʻofia ʻa e ʻetitá ni',
 'ipbother' => 'Fuoloa kehe',
-'ipbotheroption' => 'kehe',
 'badipaddress' => 'Tuʻasila IP taʻeʻaongaʻi',
 'blockipsuccesssub' => 'Ola ʻo e taʻofi',
 'blockipsuccesstext' => 'Kuo taʻofia ʻa [[Special:Contributions/$1|$1]]
@@ -920,15 +906,12 @@ Vakai ki he [[Special:Log/delete|hokohoko tāmateʻi]] ki he lekooti ʻo e ngaah
 *te ke tiki ʻa e puha ʻi lalo.
 ʻI he meʻa ko ia, ʻe ʻunuʻi pe fakatahaʻi ʻa e peesi alea faiʻaki ʻa e nima.",
 'movearticle' => 'ʻUnu ʻa e kupu',
-'movenologin' => 'ʻOku ʻikai ke kau-ki-ai',
 'movenologintext' => 'Kuo pau ko e ʻetita lēsisita koe pea [[Special:UserLogin|kau-ki-ai]] kapau te ke fieʻunu ha peesi.',
 'newtitle' => 'Ki he hingoa foʻou',
 'move-watch' => 'Leʻo he pēsí ni',
 'movepagebtn' => 'Peesi ʻunu',
 'pagemovedsub' => 'Kuo ola ʻa e ʻunu',
 'articleexists' => 'ʻOku toka ʻi ai ha peesi mo e hingoa ē, pe ʻoku ʻikai sai ʻa e hingoa ʻoku ke fiemaʻu. Kātaki fili ha hingoa kehe.',
-'talkexists' => "'''Kuo ola ʻa e ʻunu ʻo e peesi ia, kā naʻe ʻikai ʻunu he peesi alea koeʻuhi ʻoku toe tuʻu ha peesi pehē mo e hingoa foʻou. Kātaki fakataha kinaua faiʻaki ʻa e nima.'''",
-'movedto' => 'kuo ʻunu ki he',
 'movetalk' => 'ʻUnu he peesi alea fekauʻaki',
 'movelogpage' => 'Tohinoa ʻo e ʻunu',
 'movelogpagetext' => 'Ko e hokohoko ʻo e ngaahi peesi kuo ʻunu',
@@ -1140,10 +1123,6 @@ Pea hoko ai pē hoʻo lava tānaki ha ʻuhinga ʻi he fakanounou',
 'exif-gpsdirection-t' => 'Tūkufua moʻoni',
 'exif-gpsdirection-m' => 'Tūkufua fakamakineti',
 
-# External editor support
-'edit-externally' => 'Fatuʻi ʻa e failé ni ngāueʻaki mo e polokalama ʻi tuʻa',
-'edit-externally-help' => 'Vakai ki he [https://www.mediawiki.org/wiki/Manual:External_editors fakahinohino ki he fokotuʻu] maʻa toe fakamatala.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kātoa',
 'namespacesall' => 'vā kotoa',
@@ -1161,7 +1140,6 @@ Mailer returned: $1',
 'confirmemail_needlogin' => 'ʻOku pau te ke $1, koeʻuhi ʻe fakamoʻoniʻi ho tuʻasila tohila.',
 'confirmemail_success' => 'Kuo fakamoʻoniʻi ho tuʻasila tohila. ʻOku lava ke ke kau-ki-ai pea huaʻia ʻa e wiki.',
 'confirmemail_loggedin' => 'He taimí ni kuo fakamoʻoniʻi ho tuʻasila tohila.',
-'confirmemail_error' => 'Ko e meʻa hala ʻi he haofaki ʻo e hoʻo fakamoʻoniʻi tohila.',
 'confirmemail_subject' => 'Ko e fakamoʻoniʻi ʻo e tuʻasila tohila ʻo e {{SITENAME}}',
 'confirmemail_body' => 'Ko e tokotaha, mahalo pē ko koe mei he tuʻasila IP $1, naʻe lēsisita ia ha tohi kau-ki-ai "$2" mo e tuʻasila tohilá ni ʻi {{SITENAME}}.
 
index 2982ae2..58a4855 100644 (file)
@@ -58,7 +58,7 @@ $messages = array(
 'otherlanguages' => 'toki ante',
 'redirectedfrom' => '(tan $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).
+# 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).
 'aboutsite' => 'lipu sona pi toki pona li seme?',
 'aboutpage' => 'Project:lipu sona pi toki pona li seme?',
 'copyright' => 'lipu ken $1 li lawa e lipu ni.',
@@ -154,7 +154,6 @@ kin la sina toki e ni: toki sina ni li tan sina taso anu lipu pi ken ali.
 'watch' => 'o sona e ante',
 'watchthispage' => 'mi wile sona e ante ale pi lipu ni lon tenpo kama',
 'unwatchthispage' => 'mi wile ala sona e ante ale pi lipu ni lon tenpo kama',
-'watchnochange' => 'None of your watched items was edited in the time period displayed.',
 
 # Contributions
 'mycontris' => 'mi ante e lipu seme',
index 3906b88..7f47b88 100644 (file)
@@ -72,7 +72,6 @@ $messages = array(
 'tog-minordefault' => 'Makim ol senis mi wokim olsem ol i liklik, sapos mi no makim',
 'tog-previewontop' => 'Soim pes mi senisim (pastaim long raitim) antap long bokis bilong wokim senis',
 'tog-previewonfirst' => 'Soim pes mi senisim pastaim long raitim',
-'tog-nocache' => ' Nogat stoa pes long browser',
 'tog-enotifwatchlistpages' => 'Salim imel long mi taim wanpela pes mi lukautim i senis',
 'tog-enotifusertalkpages' => 'Salim imel long mi wanem taim toktok bilong mi i senis',
 'tog-enotifminoredits' => 'Salim imel long mi tasol long liklik senis long pes na fail',
@@ -175,7 +174,6 @@ $messages = array(
 'qbedit' => 'Senisim',
 'qbpageoptions' => 'Dispela pes',
 'qbmyoptions' => 'Ol pes bilong mi',
-'qbspecialpages' => 'Ol sipesol pes',
 
 # Vector skin
 'vector-action-delete' => 'Rausim',
@@ -254,7 +252,6 @@ $messages = array(
 'ok' => 'OK',
 'retrievedfrom' => 'Ikam long "$1"',
 'youhavenewmessages' => '$1 i kam ($2).',
-'newmessageslink' => 'Ol nupela toksave',
 'editsection' => 'senisim',
 'editold' => 'senisim',
 'viewsourceold' => 'lukim as tok',
@@ -303,6 +300,9 @@ $messages = array(
 'mailmypassword' => 'E-mel nupela paswot',
 'loginlanguagelabel' => 'Tokples: $1',
 
+# Change password dialog
+'changepassword' => 'Senis paswot',
+
 # Edit page toolbar
 'link_sample' => 'Link taitel',
 'extlink_sample' => 'http://www.example.com link taitel',
@@ -371,8 +371,6 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
 # Search results
 'searchresults' => 'Ol painim',
 'searchresults-title' => 'Ol painim long "$1"',
-'searchresulttext' => 'Long moa infomesen bilong painim {{SITENAME}}, lukim [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitleinvalid' => "Yu painim '''$1'''",
 'viewprevnext' => 'Lukim ($1 {{int:pipe-separator}} $2) ($3)',
 'searchprofile-images' => 'Media',
 'searchprofile-everything' => 'Olgeta',
@@ -385,11 +383,9 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
 'search-interwiki-default' => '$1 ol painim:',
 'search-interwiki-more' => '(moa)',
 'searchall' => 'olgeta',
-'powersearch' => 'Mobeta Painim',
 'powersearch-legend' => 'Mobeta Painim',
 'powersearch-ns' => 'Painim long ol nem',
 'powersearch-redir' => 'Soim ol nupela rot',
-'powersearch-field' => 'Painim long',
 'powersearch-toggleall' => 'Olgeta',
 'powersearch-togglenone' => 'I nogat wanpela',
 
@@ -397,7 +393,6 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
 'preferences' => 'Ol laik',
 'mypreferences' => 'Ol laik bilong mi',
 'prefs-edits' => 'Hamas senis:',
-'changepassword' => 'Senis paswot',
 'prefs-skin' => 'Skin',
 'skin-preview' => 'pes mi senisim, pastaim long raitim',
 'datedefault' => 'Nogat laik',
@@ -477,7 +472,6 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
 'nchanges' => '$1 senis',
 'recentchanges' => 'Nupela senis',
 'recentchanges-label-minor' => 'Dispela emi liklik senis',
-'rcnote' => "Ananit yu lukim '''$1 senis''' long '''$2 de''' igo pinis, na i olsem long $3.",
 'rcshowhideminor' => '$1 ol liklik senis',
 'rcshowhidebots' => '$1 ol bot',
 'rcshowhideliu' => '$1 ol yusa',
@@ -710,7 +704,6 @@ Sapos yu laik rausim dispela pes long lukautbuk bilong yu bihain, paitim \"Pinis
 # Block/unblock
 'blockip' => 'Pasim yusa (Block user)',
 'ipboptions' => '2 awa:2 hours,1 de:1 day,3 de:3 days,1 wik:1 week,2 wik:2 weeks,1 mun:1 month,3 mun:3 months,6 mun:6 months,1 yia:1 year,oltaim:infinite',
-'ipbotheroption' => 'narapela',
 'ipblocklist' => 'Ol IP adres na yusanem i pas',
 'ipblocklist-submit' => 'Painim',
 'blocklink' => 'pasim',
@@ -729,8 +722,6 @@ Sapos yu laik rausim dispela pes long lukautbuk bilong yu bihain, paitim \"Pinis
 'movepage-moved' => '\'\'\'"$1" i surikim pinis long "$2"\'\'\'',
 'articleexists' => 'Wanpela pes wantaim dispela nem i stap pinis, o dispela nem i no stret.
 Yu mas painim narapela nem.',
-'talkexists' => "'''Pes bilong buk i surik pinis, tasol pes bilong toktok i no inap surik, bilong wanem wanpela pes bilong toktok istap pinis wantaim dispela nam.  Yu mas pasim wantaim tupela pes bilong toktok yu yet.'''",
-'movedto' => 'i surik i go long',
 'movetalk' => 'Surikim pes bilong toktok wantaim',
 'movelogpage' => 'Buk bilong ol surik',
 'movelogpagetext' => 'Hia yumi lukim ol pes i surik pinis.',
@@ -807,7 +798,6 @@ Yu inap lukim as tok bilong em',
 'watchlistall2' => 'olgeta',
 'namespacesall' => 'ol',
 'monthsall' => 'olgeta',
-'limitall' => 'olgeta',
 
 # Scary transclusion
 'scarytranscludetoolong' => '[URL i longpela tumas]',
@@ -877,4 +867,7 @@ Yu inap lukim as tok bilong em',
 # Search suggestions
 'searchsuggest-search' => 'Painim',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'OK',
+
 );
index b83a325..e45ef40 100644 (file)
@@ -12,6 +12,7 @@
  * @author BetelgeuSeginus
  * @author Bilalokms
  * @author Bombola
+ * @author Cagrix
  * @author Cekli829
  * @author Coolland
  * @author Dbl2010
@@ -96,7 +97,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'KötüBaşlık', 'BozukBaşlık' ),
        'Blankpage'                 => array( 'BoşSayfa' ),
        'Block'                     => array( 'Engelle', 'IPEngelle' ),
-       'Blockme'                   => array( 'BeniEngelle' ),
        'Booksources'               => array( 'KitapKaynakları' ),
        'BrokenRedirects'           => array( 'BozukYönlendirmeler' ),
        'Categories'                => array( 'Kategoriler', 'Ulamlar' ),
@@ -108,10 +108,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'HesapOluştur' ),
        'Deadendpages'              => array( 'BağlantısızSayfalar' ),
        'DeletedContributions'      => array( 'SilinenKatkılar' ),
-       'Disambiguations'           => array( 'AnlamAyrımı', 'AnlamAyrım' ),
        'DoubleRedirects'           => array( 'ÇiftYönlendirmeler' ),
        'EditWatchlist'             => array( 'İzlemeListesiDüzenle' ),
        'Emailuser'                 => array( 'E-postaGönder' ),
+       'ExpandTemplates'           => array( 'ŞablonlarıGenişlet' ),
        'Export'                    => array( 'DışaAktar', 'DışarıAktar' ),
        'Fewestrevisions'           => array( 'EnAzRevizyon' ),
        'FileDuplicateSearch'       => array( 'KopyaDosyaArama', 'ÇiftDosyaArama' ),
@@ -155,6 +155,7 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'KorunanSayfalar' ),
        'Protectedtitles'           => array( 'KorunanBaşlıklar' ),
        'Randompage'                => array( 'Rastgele', 'RastgeleSayfa' ),
+       'RandomInCategory'          => array( 'RastgeleKategori', 'RastgeleUlam' ),
        'Randomredirect'            => array( 'RastgeleYönlendirme' ),
        'Recentchanges'             => array( 'SonDeğişiklikler' ),
        'Recentchangeslinked'       => array( 'İlgiliDeğişiklikler' ),
@@ -375,7 +376,6 @@ $messages = array(
 'tog-minordefault' => 'Varsayılan olarak bütün düzenlemeleri küçük olarak işaretle',
 'tog-previewontop' => 'Ön izlemeyi düzenleme kutusunun üstünde göster',
 'tog-previewonfirst' => 'İlk düzenlemede ön izlemeyi göster',
-'tog-nocache' => 'Tarayıcı sayfalarını önbelleğe almayı devre dışı bırak',
 'tog-enotifwatchlistpages' => 'İzleme listemdeki bir sayfanın ya da dosyanın değiştirilmesi durumunda bana e-posta gönder',
 'tog-enotifusertalkpages' => 'Kullanıcı mesaj sayfamda değişiklik olduğunda bana e-posta gönder',
 'tog-enotifminoredits' => 'Sayfalardaki ve dosyalardaki küçük değişikliklerde bana e-posta gönder',
@@ -484,17 +484,17 @@ $messages = array(
 'hidden-category-category' => 'Gizli kategoriler',
 'category-subcat-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki alt kategoriyi içermektedir.|Bu kategoride aşağıdaki {{PLURAL:$1|alt kategori|$1 alt kategorisi}} dahil $2 alt kategorisi vardır.}}',
 'category-subcat-count-limited' => 'Bu kategori aşağıdaki {{PLURAL:$1|alt kategoriye|$1 alt kategoriye}} sahiptir.',
-'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} bu kategoridedir.}}',
-'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfa}} bulunmaktadır.',
-'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} bu kategoridedir.}}',
-'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} mevcut kategoridedir.',
+'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfalar}} bu kategoridedir.}}',
+'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfalar}} bulunmaktadır.',
+'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} bu kategoridedir.}}',
+'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} mevcut kategoridedir.',
 'listingcontinuesabbrev' => '(devam)',
 'index-category' => 'Dizinli sayfalar',
 'noindex-category' => 'Dizinli olmayan sayfalar',
 'broken-file-category' => 'Bozuk dosya bağlantıları içeren sayfalar',
 
 'about' => 'Hakkında',
-'article' => 'Madde',
+'article' => 'İçerik sayfası',
 'newwindow' => '(yeni bir pencerede açılır)',
 'cancel' => 'İptal',
 'moredotdotdot' => 'Daha...',
@@ -511,7 +511,6 @@ $messages = array(
 'qbedit' => 'Değiştir',
 'qbpageoptions' => 'Bu sayfa',
 'qbmyoptions' => 'Sayfalarım',
-'qbspecialpages' => 'Özel sayfalar',
 'faq' => 'SSS',
 'faqpage' => 'Project:SSS',
 
@@ -611,9 +610,9 @@ $1',
 'helppage' => 'Help:İçindekiler',
 'mainpage' => 'Ana Sayfa',
 'mainpage-description' => 'Ana sayfa',
-'policy-url' => 'Project:Politika',
+'policy-url' => 'Project:İlkeler',
 'portal' => 'Topluluk portalı',
-'portal-url' => 'Project:Topluluk portalı',
+'portal-url' => 'Project:Topluluk portali',
 'privacy' => 'Gizlilik ilkesi',
 'privacypage' => 'Project:Gizlilik ilkesi',
 
@@ -627,7 +626,7 @@ $1',
 'ok' => 'Tamam',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => '"$1" adresinden alındı.',
-'youhavenewmessages' => 'Yeni $1 var ($2).',
+'youhavenewmessages' => '$1 {{PLURAL:$3|var}} ($2).',
 'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} $1 var ($2).',
 'youhavenewmessagesmanyusers' => 'Birçok kullanıcıdan $1 var ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
@@ -728,9 +727,6 @@ Hiçbir açıklama yapılmadı.',
 'perfcached' => 'Aşağıdaki veriler önbellekten alınmıştır ve güncel olmayabilir. Önbellekte en fazla {{PLURAL:$1|bir sonuç|$1 sonuç}} mevcut.',
 'perfcachedts' => 'Aşağıdaki veri önbelleklenmiştir, son güncelleme tarihi: $1. Önbellekte en fazla {{PLURAL:$1|bir sonuç|$4 sonuç}} mevcut.',
 'querypage-no-updates' => 'Şu an için güncellemeler devre dışı bırakıldı. Buradaki veri hemen yenilenmeyecektir.',
-'wrong_wfQuery_params' => 'wfQuery() ye yanlış parametre<br />
-Fonksiyon: $1<br />
-Sorgu: $2',
 'viewsource' => 'Kaynağı gör',
 'viewsource-title' => '$1 sayfasının kaynağını görüntüle',
 'actionthrottled' => 'Eylem kısılmışdır',
@@ -760,6 +756,7 @@ Kilitleyen hizmetlinin bu konudaki nedeni: "$3".',
 'invalidtitle-unknownnamespace' => 'Bilinmeyen $1 ad alanı sayısı ve geçersiz "$2" başlık',
 'exception-nologin' => 'Giriş yapılmamış',
 'exception-nologin-text' => 'Bu sayfaya ya da eyleme erişmek için lütfen [[Special:Userlogin|oturum açın]].',
+'exception-nologin-text-manual' => 'Bu sayfaya ya da eyleme erişebilmek için lütfen $1ın.',
 
 # Virus scanner
 'virus-badscanner' => "Yanlış ayarlama: bilinmeyen virüs tarayıcı: ''$1''",
@@ -858,7 +855,7 @@ Yazılışı kontrol edin veya [[Special:UserLogin/signup|yeni bir hesap açın]
 'passwordtooshort' => 'Parolalar en az {{PLURAL:$1|1 karakter|$1 karakter}} uzunluğunda olmalı.',
 'password-name-match' => 'Şifreniz kullanıcı adınızdan farklı olmalıdır.',
 'password-login-forbidden' => 'Bu kullanıcı adı ve şifre kullanımı yasaklanmıştır',
-'mailmypassword' => 'Bana e-posta ile yeni parola gönder',
+'mailmypassword' => 'Parolayı sıfırla',
 'passwordremindertitle' => '{{SITENAME}} için yeni geçici şifre',
 'passwordremindertext' => 'Birisi (muhtemelen siz, $1 IP adresinden) {{SITENAME}} ($4) için yeni bir parola gönderilmesi istedi. "$2" kullanıcısına geçici olarak "$3" parolası oluşturuldu. Eğer bu sizin isteğiniz ise, oturum açıp yeni bir parola oluşturmanız gerekmektedir. Geçici parolanızın süresi {{PLURAL:$5|1 gün|$5 gün}} içinde dolacaktır.
 
@@ -905,7 +902,7 @@ Eğer gerçek adınızı belirtirseniz, çalışmalarınıza atıfta bulunulmas
 'user-mail-no-body' => 'Boş veya geçerli olmayan bir şekilde e-posta gönderilmeye çalışıldı.',
 
 # Change password dialog
-'resetpass' => 'Parolayı değiştir',
+'changepassword' => 'Parolayı değiştir',
 'resetpass_announce' => 'Size gönderilen muvakkat bir parola ile oturum açtınız.
 Girişi bitirmek için, burada yeni bir parola yazın:',
 'resetpass_text' => '<!-- Metini buraya ekleyin -->',
@@ -927,7 +924,7 @@ Girişi bitirmek için, burada yeni bir parola yazın:',
 # Special:PasswordReset
 'passwordreset' => 'Parola sıfırlama',
 'passwordreset-text-one' => 'Parolanızı sıfırlamak için bu formu doldurun.',
-'passwordreset-text-many' => '{{PLURAL:$1|Parolanızı sıfırlamak için alanlardan birini doldurun.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|E-posta ile geçici bir parola almak için alanlardan birini doldurun.}}',
 'passwordreset-legend' => 'Şifreyi sıfırla',
 'passwordreset-disabled' => 'Parola sıfırlamaları bu wiki üzerinde devre dışı bırakıldı.',
 'passwordreset-emaildisabled' => "Bu wiki'deki e-posta özellikleri devre dışı bırakıldı.",
@@ -1183,6 +1180,8 @@ Sayfa zaten mevcut.',
 'content-not-allowed-here' => '"$1" içeriğine, [[$2]] sayfasında izin verilmemekte.',
 'editwarning-warning' => 'Bu sayfadan ayrılmak yaptığınız herhangi bir değişikliği kaybetmenize sebep olabilir.
 Eğer giriş yaptıysanız, bu uyarıyı, tercihlerinizin "Sayfa yazma alanı" bölümünde devre dışı bırakabilirsiniz.',
+'editpage-notsupportedcontentformat-title' => 'İçerik biçimi desteklenmiyor',
+'editpage-notsupportedcontentformat-text' => '$1 içerik biçimi $2 içerik modeli tarafından desteklenmiyor.',
 
 # Content models
 'content-model-wikitext' => 'vikimetin',
@@ -1224,6 +1223,9 @@ Bu değişkenler atlandı.",
 'cantcreateaccount-text' => "Bu IP adresinden ('''$1''') kullanıcı hesabı oluşturulması [[User:$3|$3]] tarafından engellenmiştir.
 
 $3 tarafından verilen sebep ''$2''",
+'cantcreateaccount-range-text' => "'''$1''' aralığındaki IP'ler için hesap oluşturma [[User:$3|$3]] tarafından engellendi, bu sizin IP adresinizi de ('''$4''') içeriyor.
+
+$3 tarafından verilen gerekçe ''$2''",
 
 # History pages
 'viewpagelogs' => 'Bu sayfa ile ilgili kayıtları göster',
@@ -1292,10 +1294,6 @@ Bir hizmetli olarak bu değişikliği görebilirsiniz; [{{fullurl:{{#Special:Log
 'revisiondelete' => 'Sürümleri sil/geri getir',
 'revdelete-nooldid-title' => 'Hedef sürüm geçersiz',
 'revdelete-nooldid-text' => 'Bu fonksiyonu uygulamak için belirli hedef değişiklik veya değişikileriniz yok. Sunulmuş olan revizyon mevcut değil, veya mevcut revizyonu gizlemeye çalışıyorsunuz.',
-'revdelete-nologtype-title' => 'Hiçbir kayıt tipi verilmedi',
-'revdelete-nologtype-text' => 'Bu işlemi devreye sokmak için bir kayıt tipi belirtmediniz.',
-'revdelete-nologid-title' => 'Geçersiz günlük girdisi',
-'revdelete-nologid-text' => 'Bu fonksiyonu uygulamak için hiçbir kayıt tipi belirtilmedi veya belirtilen kayıt tipi mevcut değil.',
 'revdelete-no-file' => 'Belirtilen dosya mevcut değil.',
 'revdelete-show-file-confirm' => '"<nowiki>$1</nowiki>" dosyasının $2 $3 tarihli silinmiş bir revizyonunu görmek istediğinize emin misiniz?',
 'revdelete-show-file-submit' => 'Evet',
@@ -1329,8 +1327,6 @@ $1",
 'logdelete-failure' => "'''Günlük görünürlüğü ayarlanamadı:'''
 $1",
 'revdel-restore' => 'görünürlüğü değiştir',
-'revdel-restore-deleted' => 'silinmiş revizyonlar',
-'revdel-restore-visible' => 'görünür revizyonlar',
 'pagehist' => 'Sayfa geçmişi',
 'deletedhist' => 'Silinmiş geçmiş',
 'revdelete-hide-current' => '$2 $1 tarihli öğe gizlenirken hata: bu güncel revizyon.
@@ -1402,16 +1398,16 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'diff-empty' => '(Fark yok)',
 'diff-multi' => '({{PLURAL:$2|Bir kullanıcı|$2 kullanıcı}} tarafından yapılan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
 'diff-multi-manyusers' => '($2 kullancıdan fazla {{PLURAL:$2|kullanıcı|kullanıcı}} tarafından yapılan {{PLURAL:$1|bir ara revizyon|$1 ara revizyon}} gösterilmiyor)',
+'difference-missing-revision' => 'Bu farkın {{PLURAL:$2|bir revizyonu|$2 revizyonu}} ($1) {{PLURAL:$2|bulunamadı|bulunamadı}}.
+
+Bu genellikle, silinen bir sayfaya olan eski tarihli bir fark sayfasına bağlantılardan dolayı olur.
+Ayrıntılar [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silme günlüğünde] bulunabilir.',
 
 # Search results
 'searchresults' => 'Arama sonuçları',
 'searchresults-title' => '"$1" için arama sonuçları',
-'searchresulttext' => '{{SITENAME}} içinde arama yapmak konusunda bilgi almak için [[{{MediaWiki:Helppage}}|{{int:help}}]] sayfasına bakabilirsiniz.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' için aradınız. ([[Special:Prefixindex/$1|"$1" ile başlayan tüm sayfalar]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"\' sayfasına bağlantısı olan tüm sayfalar]])',
-'searchsubtitleinvalid' => 'Aranan: "$1"',
 'toomanymatches' => 'Çok fazla eşleşme döndü, lütfen başka bir sorgu seçin',
 'titlematches' => 'Madde adı eşleşiyor',
-'notitlematches' => 'Hiçbir başlıkta bulunamadı',
 'textmatches' => 'Sayfa metni eşleşiyor',
 'notextmatches' => 'Hiçbir sayfada bulunamadı',
 'prevn' => 'önceki {{PLURAL:$1|$1}}',
@@ -1420,10 +1416,8 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'nextn-title' => 'Sonraki $1 {{PLURAL:$1|sonuç|sonuç}}',
 'shown-title' => 'Sayfa başına $1 {{PLURAL:$1|sonuç|sonuç}} göster',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) gör',
-'searchmenu-legend' => 'Arama seçenekleri',
 'searchmenu-exists' => "'''Bu vikide \"[[:\$1]]\" adında bir sayfa mevcut'''",
 'searchmenu-new' => "'''Bu vikide \"[[:\$1]]\" sayfasını oluştur!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu ön ekle sayfalara göz at]]',
 'searchprofile-articles' => 'İçerik sayfaları',
 'searchprofile-project' => 'Yardım ve proje sayfaları',
 'searchprofile-images' => 'Çokluortam',
@@ -1444,21 +1438,16 @@ Gezinti bağlantılarının bu sütunu sıfırlayacağını unutmayın.',
 'search-interwiki-default' => '$1 sonuçlar:',
 'search-interwiki-more' => '(daha çok)',
 'search-relatedarticle' => 'ilgili',
-'mwsuggest-disable' => 'Arama önerilerini devre dışı bırak',
 'searcheverything-enable' => 'Tüm ad alanlarında ara',
 'searchrelated' => 'ilgili',
 'searchall' => 'hepsi',
 'showingresults' => "$2. sonuçtan başlayarak {{PLURAL:$1|'''1''' sonuç |'''$1''' sonuç }} aşağıdadır:",
 'showingresultsnum' => "'''$2''' sonuçtan başlayarak {{PLURAL:$3|'''1''' sonuç|'''$3''' sonuç}} aşağıdadır:",
 'showingresultsheader' => "'''$4''' için {{PLURAL:$5|'''$3''' sonuçtan '''$1'''i|'''$1 - $2''' arası '''$3''' sonuç}}",
-'nonefound' => "'''Not''': Sadece bazı alan adları varsayılan olarak aranır.
-Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tartışma sayfalarını, şablonları vb. kapsayacak şekilde) deneyin veya önek olarak istenilen alan adını kullanın.",
 'search-nonefound' => 'Sorguyla eşleşen bir sonuç yok.',
-'powersearch' => 'Gelişmiş arama',
 'powersearch-legend' => 'Gelişmiş arama',
 'powersearch-ns' => 'Ad alanlarında ara:',
 'powersearch-redir' => 'Yönlendirmeleri listele',
-'powersearch-field' => 'Ara:',
 'powersearch-togglelabel' => 'Seç:',
 'powersearch-toggleall' => 'Hepsi',
 'powersearch-togglenone' => 'Hiçbiri',
@@ -1470,7 +1459,7 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'preferences' => 'Tercihler',
 'mypreferences' => 'Tercihler',
 'prefs-edits' => 'Değişiklik sayısı:',
-'changepassword' => 'Parolayı değiştir',
+'prefsnologintext2' => 'Kullanıcı tercihlerini ayarlamak için lütfen $1ın.',
 'prefs-skin' => 'Görünüm',
 'skin-preview' => 'Önizleme',
 'datedefault' => 'Tercih yok',
@@ -1493,13 +1482,11 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'prefs-email' => 'E-posta seçenekleri',
 'prefs-rendering' => 'Görünüm',
 'saveprefs' => 'Kaydet',
-'resetprefs' => 'Ayarları ilk durumuna getir',
 'restoreprefs' => 'Tüm varsayılan ayarları geri yükle (tüm bölümlerde)',
 'prefs-editing' => 'Sayfa yazma alanı',
 'rows' => 'Satır',
 'columns' => 'Sütun',
 'searchresultshead' => 'Arama',
-'resultsperpage' => 'Sayfada gösterilecek bulunan madde sayısı',
 'stub-threshold' => '<a href="#" class="stub">Taslak bağlantısı</a> formatı için baraj (bayt):',
 'stub-threshold-disabled' => 'Devre dışı',
 'recentchangesdays' => 'Son değişikliklerde gösterilecek günler:',
@@ -1512,7 +1499,6 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
 'localtime' => 'Yerel saat:',
 'timezoneuseserverdefault' => 'Viki varsayılanını kullanın ($1)',
 'timezoneuseoffset' => 'Diğer (ofset belirtin)',
-'timezoneoffset' => 'Ofset¹:',
 'servertime' => 'Sunucu saati:',
 'guesstimezone' => 'Tarayıcınız sizin yerinize doldursun',
 'timezoneregion-africa' => 'Afrika',
@@ -1581,6 +1567,7 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'prefs-tokenwatchlist' => 'Anahtar',
 'prefs-diffs' => 'Farklar',
 'prefs-help-prefershttps' => 'Bu tercih bir sonraki girişinizde etkili olacaktır.',
+'prefs-tabs-navigation-hint' => 'İpucu: Sekmeler listesindeki sekmeler arasında gezinmek için sağ ve sol ok tuşlarını kullanabilirsiniz.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'E-posta adresi geçerli görünüyor',
@@ -1762,12 +1749,13 @@ Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz
 'recentchanges-summary' => 'Yapılan en son değişiklikleri bu sayfadan izleyin.',
 'recentchanges-noresult' => 'Belirtilen kriterlere uyan herhangi bir değişiklik bulunamadı.',
 'recentchanges-feed-description' => "Bu beslemede, viki'de yapılan en son değişiklikleri takip edin.",
-'recentchanges-label-newpage' => 'Bu değişiklik yeni bir sayfa oluşturdu',
-'recentchanges-label-minor' => 'Bu küçük bir değişiklik',
-'recentchanges-label-bot' => 'Bu değişiklik bir bot tarafından yapıldı',
+'recentchanges-label-newpage' => 'Bu değişiklikle yeni bir sayfa oluşturuldu',
+'recentchanges-label-minor' => 'Küçük değişiklik',
+'recentchanges-label-bot' => 'Bir bot tarafından yapılan değişiklik',
 'recentchanges-label-unpatrolled' => 'Bu değişiklik henüz gözlenmemiş',
+'recentchanges-label-plusminus' => 'Sayfa boyutundaki değişikliğin bayt bazında değeri',
+'recentchanges-legend-heading' => "'''Gösterge:'''",
 'recentchanges-legend-newpage' => '(ayrıca bakınız [[Special:NewPages|yeni sayfalar listesi]])',
-'rcnote' => "$4 tarihi ve saat $5 itibarı ile, son {{PLURAL:$2|1 günde|'''$2''' günde}} yapılan, {{PLURAL:$1|'''1''' değişiklik|'''$1''' değişiklik}}, aşağıdadır.",
 'rcnotefrom' => "'''$2''' tarihinden itibaren yapılan değişiklikler aşağıdadır (en fazla <b>$1</b> tanesi gösterilmektedir).",
 'rclistfrom' => '$1 tarihinden itibaren yeni değişiklikleri göster',
 'rcshowhideminor' => 'Küçük değişiklikleri $1',
@@ -1887,6 +1875,8 @@ Dosyanızı yinede yüklemek istiyorsanız, lütfen geri dönüp yeni bir isim k
 Dosyanızı yinede yüklemek istiyorsanız, lütfen geri gidip yeni bir isim kullanın. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Bu dosya aşağıdaki {{PLURAL:$1|dosyanın|dosyaların}} kopyasıdır:',
 'file-deleted-duplicate' => 'Bu dosyanın özdeşi olan başka bir dosya ([[:$1]]) daha önceden silindi. Bu dosyayı yeniden yüklemeden önce diğer dosyanın silme kayıtlarını kontrol etmelisiniz.',
+'file-deleted-duplicate-notitle' => 'Bu dosyaya eş bir dosya daha önceden silinmiş, ve başlık bastırılmış.
+Dosyayı tekrar yüklemeye devam etmeden önce, bastırılmış dosya verisini görme yetkisine sahip birisine durumu gözden geçirmesini istemelisiniz.',
 'uploadwarning' => 'Yükleme uyarısı',
 'uploadwarning-text' => 'Lütfen aşağıdaki dosya açıklamasını değiştirin ve tekrar deneyin.',
 'savefile' => 'Dosyayı kaydet',
@@ -1969,9 +1959,11 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
 'backend-fail-create' => '$1 dosyası yazılamadı.',
 'backend-fail-maxsize' => 'Dosya {{PLURAL:$2|bir bayt|$2 bayt}} daha büyük olduğu için "$1" dosyasına yazılamadı.',
 'backend-fail-readonly' => 'Depolama arkaplan uygulaması "$1" şu anda salt okunur. Verilen gerekçe: "\'\'$2\'\'"',
+'backend-fail-synced' => '"$1" dosyası dahili depolama arkaplan uygulamaları içinde tutarsız bir durumda',
 'backend-fail-connect' => '"$1" depolama arkaplan uygulamasına bağlanılamıyor.',
 'backend-fail-internal' => '"$1" depolama arkaplan uygulamasında bilinmeyen bir hata oluştu.',
 'backend-fail-contenttype' => '"$1" konumunda saklanan dosyanın içerik türü belirlenemiyor.',
+'backend-fail-batchsize' => 'Depolama arkaplan uygulamasına $1 dosya {{PLURAL:$1|işlemi|işlemi}} yığını verildi; sınır $2 {{PLURAL:$1|işlem|işlem}}.',
 'backend-fail-usable' => 'Yetersiz izinlerden ya da eksik dizin/konteynerlerden dolayı "$1" dosyası okunup yazılamıyor.',
 
 # File journal errors
@@ -1985,6 +1977,7 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
 'lockmanager-fail-acquirelock' => '"$1" için kilit alınamıyor.',
 'lockmanager-fail-openlock' => '"$1" için kilit dosyası açılamıyor.',
 'lockmanager-fail-releaselock' => '"$1" için kilit serbest bırakılamıyor.',
+'lockmanager-fail-db-bucket' => '$1 kovasında yeterli kilit veri tabanına iletişim sağlanamadı.',
 'lockmanager-fail-db-release' => '$1 veritabanında kilitler serbest bırakılamıyor.',
 'lockmanager-fail-svr-acquire' => '$1 sunucusunda kilitler alınamıyor.',
 'lockmanager-fail-svr-release' => '$1 sunucusunda kilitler serbest bırakılamıyor.',
@@ -2226,6 +2219,7 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'ninterwikis' => '$1 {{PLURAL:$1|interviki|interviki}}',
 'nlinks' => '$1 {{PLURAL:$1|bağlantı|bağlantılar}}',
 'nmembers' => '{{PLURAL:$1|üye|üye}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|üye|üye}}',
 'nrevisions' => '{{PLURAL:$1|değişiklik|değişiklikler}}',
 'nviews' => '$1 {{PLURAL:$1|görünüm|görünüm}}',
 'nimagelinks' => '$1 {{PLURAL:$1|sayfada|sayfada}} kullanılıyor',
@@ -2244,6 +2238,8 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'wantedpages' => 'İstenen sayfalar',
 'wantedpages-badtitle' => 'Sonuç kümesinde geçersiz başlık: $1',
 'wantedfiles' => 'İstenen dosyalar',
+'wantedfiletext-cat' => 'Aşağıdaki dosyalar kullanılıyor ama mevcut değil. Yabancı depolardaki dosyalar, varolsalar bile gösterilebilir. Böyle yanlış pozitiflerin <del>üstü çizilecektir</del>. Ek olarak, varolmayan dosyaları gömen sayfalar [[:$1]] sayfasında listelenmiştir.',
+'wantedfiletext-nocat' => 'Aşağıdaki dosyalar kullanılıyor ama mevcut değil. Yabancı depolardaki dosyalar, varolsalar bile gösterilebilir. Böyle yanlış pozitiflerin <del>üstü çizilecektir</del>.',
 'wantedtemplates' => 'İstenen şablonlar',
 'mostlinked' => 'Kendisine en fazla bağlantı verilmiş sayfalar',
 'mostlinkedcategories' => 'En çok maddeye sahip kategoriler',
@@ -2262,10 +2258,9 @@ Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca
 'protectedpages' => 'Koruma altındaki sayfalar',
 'protectedpages-indef' => 'Sadece süresiz korumalar',
 'protectedpages-cascade' => 'Sadece ardışık korumalar',
-'protectedpagestext' => 'Aşağıdaki sayfalar koruma altına alınmıştır',
+'protectedpages-noredirect' => 'Yönlendirmeleri gizle',
 'protectedpagesempty' => 'Şu anda, bu parametrelerle korunan hiç bir sayfa yok.',
 'protectedtitles' => 'Korunan başlıklar',
-'protectedtitlestext' => 'Aşağıdaki başlıklar oluşturulmaya karşı korumalıdır',
 'protectedtitlesempty' => 'Şu anda, bu parametrelerle korunan hiç bir başlık yok.',
 'listusers' => 'Kullanıcı listesi',
 'listusers-editsonly' => 'Sadece değişiklik yapan kullanıcıları göster',
@@ -2317,9 +2312,6 @@ Günlük tipini, kullanıcı adını (büyük-küçük harf duyarlı), ya da etk
 'allpagesto' => 'Şununla biten sayfaları görüntüle:',
 'allarticles' => 'Tüm maddeler',
 'allinnamespace' => 'Tüm sayfalar ($1 sayfaları)',
-'allnotinnamespace' => 'Tüm sayfalar ($1 alanında olmayanlar)',
-'allpagesprev' => 'Önceki',
-'allpagesnext' => 'Sonraki sayfa',
 'allpagessubmit' => 'Getir',
 'allpagesprefix' => 'Buraya yazdığınız harflerle başlayan sayfaları listeleyin:',
 'allpagesbadtitle' => 'Girilen sayfa ismi diller arası bağlantı ya da vikiler arası bağlantı içerdiğinden geçerli değil. Başlıklarda kullanılması yasak olan bir ya da daha çok karakter içeriyor olabilir.',
@@ -2543,6 +2535,7 @@ Böyle sayfaların silinmesi, {{SITENAME}} sitesini bozmamak için sınırlanmak
 'delete-warning-toobig' => 'Bu sayfanın büyük bir değişiklik geçmişi var, $1 {{PLURAL:$1|revizyonun|revizyonun}} üzerinde.
 Bunu silmek {{SITENAME}} işlemlerini aksatabilir;
 dikkatle devam edin.',
+'deleting-backlinks-warning' => "'''Uyarı:''' Silmek üzere olduğunuz sayfaya başka sayfalardan bağlantılar var.",
 
 # Rollback
 'rollback' => 'değişiklikleri geri al',
@@ -2660,7 +2653,6 @@ Revizyon onarılmış veya arşivden silinmiş olabilir ya da sahip olduğunuz b
 'undeletebtn' => 'Geri getir!',
 'undeletelink' => 'görüntüle/geri getir',
 'undeleteviewlink' => 'görüntüle',
-'undeletereset' => 'Vazgeç',
 'undeleteinvert' => 'Seçimi ters çevir',
 'undeletecomment' => 'Neden:',
 'undeletedrevisions' => 'Toplam {{PLURAL:$1|1 kayıt|$1 kayıt}} geri getirildi.',
@@ -2693,7 +2685,9 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Ad alanı:',
 'invert' => 'Seçili haricindekileri göster',
+'tooltip-invert' => 'Seçili ad alanındaki sayfalara olan değişiklikleri gizlemek için bu kutucuğu işaretleyin (ve ilgili ad alanı, eğer seçiliyse)',
 'namespace_association' => 'İlişkili ad alanı',
+'tooltip-namespace_association' => 'Seçili ad alanıyla ilgili tartışma ya da madde ad alanlarını da eklemek için bu kutucuğu işaretleyin',
 'blanknamespace' => '(Ana)',
 
 # Contributions
@@ -2747,13 +2741,11 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
 'block' => 'Kullanıcıyı engelle',
 'unblock' => 'Kullanıcının engelini kaldır',
 'blockip' => 'Kullanıcıyı engelle',
-'blockip-title' => 'Kullanıcıyı engelle',
 'blockip-legend' => 'Kullanıcıyı engelle',
 'blockiptext' => "Aşağıdaki formu kullanarak belli bir IP'nin veya kayıtlı kullanıcının değişiklik yapmasını engelleyebilirsiniz. Bu sadece vandalizmi engellemek için ve [[{{MediaWiki:Policy-url}}|kurallara]] uygun olarak yapılmalı. Aşağıya mutlaka engelleme ile ilgili bir açıklama yazınız. (örnek: -Şu- sayfalarda vandalizm yapmıştır).",
 'ipadressorusername' => 'IP adresi veya kullanıcı adı',
 'ipbexpiry' => 'Bitiş süresi',
 'ipbreason' => 'Neden:',
-'ipbreasonotherlist' => 'Başka neden',
 'ipbreason-dropdown' => '*Genel engelleme nedenleri
 ** Yanlış bilgi eklemek
 ** Sayfalardan içeriği çıkarmak
@@ -2769,8 +2761,6 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
 'ipbsubmit' => 'Bu kullanıcıyı engelle',
 'ipbother' => 'Farklı zaman',
 'ipboptions' => '2 saat:2 hours,1 gün:1 day,3 gün:3 days,1 hafta:1 week,2 hafta:2 weeks,1 ay:1 month,3 ay:3 months,6 ay:6 months,1 yıl:1 year,süresiz:infinite',
-'ipbotheroption' => 'farklı',
-'ipbotherreason' => 'Başka/ek sebepler:',
 'ipbhidename' => 'Kullanıcı adını katkılarda ve listelerde gizle',
 'ipbwatchuser' => 'Bu kullanıcının kullanıcı ve tartışma sayfalarını izle',
 'ipb-disableusertalk' => 'Bu kullanıcının engelliyken kendi mesaj sayfasında değişiklik yapmasını önle',
@@ -2782,6 +2772,7 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
 Engellemeleri gözden geçirmek için [[Special:BlockList|engel listesine]] bakınız.',
 'ipb-blockingself' => 'Kendinizi engellemek üzeresiniz! Bunu yapmak istediğinizden emin misiniz?',
 'ipb-confirmhideuser' => '"Kullanıcıyı gizle" seçiliyken bir kullanıcı engellemek üzeresiniz. Bu, kullanıcının adını tüm listeler ile günlük girişlerinde bastıracaktır. Bunu yapmak istediğinizden emin misiniz?',
+'ipb-confirmaction' => 'Bunu gerçekten yapmak istediğinize eminseniz, lütfen en alttaki "{{int:ipb-confirm}}" alanını işaretleyin.',
 'ipb-edit-dropdown' => 'Engelleme nedenleri düzenle',
 'ipb-unblock-addr' => '$1 için engellemeyi kaldır',
 'ipb-unblock' => 'Engellemeyi kaldır',
@@ -2799,6 +2790,7 @@ Engellemeleri gözden geçirmek için [[Special:BlockList|engel listesine]] bak
 'blocklist-userblocks' => 'Hesap engellemelerini gizle',
 'blocklist-tempblocks' => 'Geçici engellemeleri gizle',
 'blocklist-addressblocks' => 'Tek IP engellemelerini gizle',
+'blocklist-rangeblocks' => 'Dizi bloklarını gizle',
 'blocklist-timestamp' => 'Tarih damgası',
 'blocklist-target' => 'Hedef',
 'blocklist-expiry' => 'Bitiş tarihi',
@@ -2859,7 +2851,7 @@ Lütfen İnternet sevis sağlayınız ile ya da teknik destek ile irtibat kurun
 'sorbsreason' => "IP adresiniz, {{SITENAME}} sitesi tarafından kullanılan DNSBL'de açık proxy olarak listelenmiş.",
 'sorbs_create_account_reason' => "IP adresiniz {{SITENAME}} sitesi tarafından kullanılan DNSBL'de açık proxy olarak listelenmiş.
 Hesap oluşturamazsınız",
-'cant-block-while-blocked' => 'Siz engelliyken başka kullanıcıları engelleyemezsiniz.',
+'xffblockreason' => 'Sizin ya da kullandığınız vekil sunucuya ait bir IP adresi X-Forwarded-For başlığında bulunuyor, ve engellendi. Orjinal engelleme nedeni: $1',
 'cant-see-hidden-user' => 'Engellemek istediğiniz kullanıcı zaten engellenmiş ve gizlenmiş. Kullanıcıgizle yetkiniz olmadığı için, kullanıcının engellenmesini göremez ya da değiştiremezsiniz.',
 'ipbblocked' => 'Diğer kullanıcıları engelleyemez ya da engellemesini kaldıramazsınız, çünkü kendiniz engellenmişsiz',
 'ipbnounblockself' => 'Kendi engellemenizi kaldırmanıza izniniz yok',
@@ -2919,7 +2911,6 @@ Lütfen onaylamadan önce bunun sonuçlarını anladığınızdan emin olun.",
 Bu durumlarda sayfayı kendiniz aktarmalısınız.",
 'movearticle' => 'Eski isim',
 'moveuserpage-warning' => "'''Uyarı:''' Bir kullanıcı sayfasını taşımak üzeresiniz. Lütfen sadece sayfanın taşınacağına, ancak kullanıcının yeniden ''adlandırılmayacağına'' dikkat edin.",
-'movenologin' => 'Sistemde değilsiniz.',
 'movenologintext' => 'Sayfanın adını değiştirebilmek için kayıtlı ve [[Special:UserLogin|sisteme]] giriş yapmış olmanız gerekmektedir.',
 'movenotallowed' => 'Sayfaları taşımaya izniniz yok.',
 'movenotallowedfile' => 'Sayfaları taşımaya izniniz yok.',
@@ -2935,8 +2926,6 @@ Bu durumlarda sayfayı kendiniz aktarmalısınız.",
 'articleexists' => 'Bu isimde bir sayfa bulunmakta veya seçmiş olduğunuz isim geçersizdir.
 Lütfen başka bir isim deneyiniz.',
 'cantmove-titleprotected' => 'Bir sayfayı bu konuma taşıyamazsınız, çünkü yeni başlığın oluşturulması korunuyor',
-'talkexists' => "'''Sayfanın kendisi başarıyla taşındı, ancak tartışma sayfası taşınamadı çünkü taşınacağı isimde zaten bir sayfa vardı. Lütfen sayfanın içeriğini diğer sayfaya kendiniz taşıyın.'''",
-'movedto' => 'taşındı:',
 'movetalk' => 'Varsa "tartışma" sayfasını da aktar.',
 'move-subpages' => 'Altsayfaları taşı ($1 sayfaya kadar)',
 'move-talk-subpages' => 'Tartışma sayfasının altsayfalarını taşı ($1 sayfaya kadar)',
@@ -2963,6 +2952,7 @@ Lütfen başka bir isim deneyiniz.',
 'immobile-target-namespace-iw' => 'Vikilerarası bağlantı, sayfa taşıması için geçerli bir hedef değil.',
 'immobile-source-page' => 'Bu sayfanın adı değiştirilemez.',
 'immobile-target-page' => 'Bu hedef başlığına taşınamaz.',
+'bad-target-model' => 'İstenen hedef farklı bir içerik modeli kullanıyor. $1 modelinden $2 modeline çevrilemiyor.',
 'imagenocrossnamespace' => 'Dosya, dosyalar için olmayan ad alanına taşınamaz',
 'nonfile-cannot-move-to-file' => 'Dosya olmayanlar, dosya ad alanına taşınamaz',
 'imagetypemismatch' => 'Yeni dosya eklentisi tipiyle eşleşmiyor',
@@ -2990,6 +2980,7 @@ Sonuncu durumda, bir link de kullanabilirsiniz, ör: "[[{{MediaWiki:Mainpage}}]]
 'exportcuronly' => 'Geçmiş sürümleri almadan sadece son sürümü al',
 'exportnohistory' => "----
 '''Not:''' Sayfaların tüm geçmişini bu formla dışa aktarmak, performans nedenlerinden ötürü devre dışı bırakılmıştır.",
+'exportlistauthors' => 'Her sayfa için katkıda bulunanların tam listesi içer',
 'export-submit' => 'Aktar',
 'export-addcattext' => 'Aşağıdaki kategoriden maddeler ekle:',
 'export-addcat' => 'Ekle',
@@ -3079,6 +3070,7 @@ Geçici dosya kayıp.',
 'import-error-interwiki' => '"$1" sayfası içe aktarılamadı çünkü sayfanın adı dış bağlantı için ayrılmış (vikilerarası).',
 'import-error-special' => '"$1" sayfası içe aktarılamadı çünkü sayfalara izin vermeyen özel bir ad alanına ait.',
 'import-error-invalid' => '"$1" sayfası içe aktarılamadı çünkü sayfa adı geçersiz.',
+'import-error-unserialize' => '"$1" sayfasının $2 revizyonu serileştirilmesi geri alınamıyor. Revizyonun $4 olarak serileştirilmiş $3 içerik modelini kullandığı raporlandı.',
 'import-options-wrong' => 'Yanlış {{PLURAL:$2|seçenek|seçenek}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Verilen kök sayfa geçersiz bir başlık.',
 'import-rootpage-nosubpage' => 'Kök sayfanın "$1" ad alanı alt sayfalara izin vermiyor.',
@@ -3215,6 +3207,7 @@ Bunu '''doldurMAyın'''!",
 'pageinfo-length' => 'Sayfa uzunluğu (bayt cinsinden)',
 'pageinfo-article-id' => 'Sayfa ID',
 'pageinfo-language' => 'Sayfa içeriğinin dili',
+'pageinfo-content-model' => 'Sayfa içerik modeli',
 'pageinfo-robot-policy' => 'Robotlar tarafından endeksleniyor',
 'pageinfo-robot-index' => 'İzin verilmiş',
 'pageinfo-robot-noindex' => 'İzin verilmedi',
@@ -3236,11 +3229,13 @@ Bunu '''doldurMAyın'''!",
 'pageinfo-magic-words' => 'Sihirli {{PLURAL:$1|kelimeler|kelimeler}} ($1)',
 'pageinfo-hidden-categories' => 'Gizli {{PLURAL:$1|kategori|kategoriler}} ($1)',
 'pageinfo-templates' => 'Görüntülenen {{PLURAL:$1|şablon|şablonlar}} ($1)',
+'pageinfo-transclusions' => 'Çapraz eklenen {{PLURAL:$1|sayfa|sayfalar}} ($1)',
 'pageinfo-toolboxlink' => 'Sayfa bilgisi',
 'pageinfo-redirectsto' => 'Yönlendirilen',
 'pageinfo-redirectsto-info' => 'bilgi',
 'pageinfo-contentpage' => 'Bir içerik sayfası sayılır',
 'pageinfo-contentpage-yes' => 'Evet',
+'pageinfo-protect-cascading' => 'korumalar buradan kademelendiriliyor',
 'pageinfo-protect-cascading-yes' => 'Evet',
 'pageinfo-protect-cascading-from' => 'Korumalar üzerinden geçiş',
 'pageinfo-category-info' => 'Kategori bilgileri',
@@ -3330,7 +3325,7 @@ Bunu çalıştırmak, sisteminizi tehlikeye atabilir.",
 'minutes' => '{{PLURAL:$1|$1 dakika|$1 dakika}}',
 'hours' => '{{PLURAL:$1|$1 saat|$1 saat}}',
 'days' => '{{PLURAL:$1|$1 gün|$1 gün}}',
-'weeks' => '{{PLURAL: $1|$1 hafta|$1 hafta}}',
+'weeks' => '{{PLURAL:$1|$1 hafta|$1 hafta}}',
 'months' => '{{PLURAL:$1|$1 ay|$1 ay}}',
 'years' => '{{PLURAL:$1|$1 yıl|$1 yıl}}',
 'ago' => '$1 önce',
@@ -3562,6 +3557,7 @@ Diğerleri varsayılan olarak gizlenecektir.
 
 # Exif attributes
 'exif-compression-1' => 'Sıkıştırılmamış',
+'exif-compression-2' => 'CCITT Grup 3 1-Boyutlu Değiştirilmiş Huffman koşu uzunluğu kodlaması',
 'exif-compression-3' => 'CCITT Grup 3 faks kodlaması',
 'exif-compression-4' => 'CCITT Grup 4 faks kodlaması',
 'exif-compression-6' => 'JPEG',
@@ -3750,6 +3746,7 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-gpsdirection-m' => 'Manyetik yönü',
 
 'exif-ycbcrpositioning-1' => 'Ortalanmış',
+'exif-ycbcrpositioning-2' => 'Eş-yerleştirilmiş',
 
 'exif-dc-contributor' => 'Katkıda bulunanlar',
 'exif-dc-coverage' => 'Medyanın konumsal ya da zamansal kapsamı',
@@ -3787,15 +3784,10 @@ Diğerleri varsayılan olarak gizlenecektir.
 'exif-urgency-high' => 'Yüksek ( $1 )',
 'exif-urgency-other' => 'Kullanıcı tanımlı öncelik ($1)',
 
-# External editor support
-'edit-externally' => 'Dosyayı harici bir uygulamayla değiştirin.',
-'edit-externally-help' => '(Daha fazla bilgi için metadaki [https://www.mediawiki.org/wiki/Manual:External_editors dış uygulama ayarları] (İngilizce) sayfasına bakabilirsiniz)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Hepsini göster',
 'namespacesall' => 'hepsi',
 'monthsall' => 'hepsi',
-'limitall' => 'tümü',
 
 # Email address confirmation
 'confirmemail' => 'E-posta adresini onayla',
@@ -3817,7 +3809,6 @@ Mail yazılımı iade etti:$1',
 'confirmemail_needlogin' => 'E-posta adresinizi onaylamak için önce $1 yapmalısınız.',
 'confirmemail_success' => "E-posta adresiniz doğrulandı. [[Special:UserLogin|Oturum açıp]] Viki'nin keyfini çıkarabilirsiniz.",
 'confirmemail_loggedin' => 'E-posta adresiniz onaylandı.',
-'confirmemail_error' => 'Onayınız bilinmeyen bir hata nedeniyle kaydedilemedi.',
 'confirmemail_subject' => '{{SITENAME}} e-posta adres onayı.',
 'confirmemail_body' => 'Birisi, muhtemelen siz, $1 IP adresinden,
 {{SITENAME}} sitesinde bu e-posta adresi ile $2 hesabını açtı.
@@ -3864,6 +3855,7 @@ Bu onay kodu $4 tarihine kadar geçerlidir.',
 # Scary transclusion
 'scarytranscludedisabled' => '[Vikilerarası çapraz ekleme devre dışı]',
 'scarytranscludefailed' => '[$1 için şablon alımı başarısız oldu]',
+'scarytranscludefailed-httpstatus' => '[$1 için şablon alımı başarısız oldu: HTTP $2]',
 'scarytranscludetoolong' => '[URL çok uzun]',
 
 # Delete conflict
@@ -3896,6 +3888,11 @@ Sayfayı baştan açmak isityorsanız, lütfen onaylayın.",
 'imgmultigo' => 'Git!',
 'imgmultigoto' => '$1 sayfasına git',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(varsayılan dil)',
+'img-lang-info' => 'Bu resmi $1 ile işle. $2',
+'img-lang-go' => 'Gönder',
+
 # Table pager
 'ascending_abbrev' => 'küçükten büyüğe',
 'descending_abbrev' => 'azalan',
@@ -3980,10 +3977,21 @@ Ayrıca [[Special:EditWatchlist|standart düzenleme sayfasını]] da kullanabili
 'version-hook-name' => 'Çengel adı',
 'version-hook-subscribedby' => 'Abone olan',
 'version-version' => '(Sürüm $1)',
-'version-license' => 'Lisans',
+'version-license' => 'MediaWiki Lisansı',
+'version-ext-license' => 'Lisans',
+'version-ext-colheader-name' => 'Uzantı',
+'version-ext-colheader-version' => 'Sürüm',
+'version-ext-colheader-license' => 'Lisans',
+'version-ext-colheader-description' => 'Açıklama',
+'version-ext-colheader-credits' => 'Yazarlar',
+'version-license-title' => '$1 için Lisans',
+'version-license-not-found' => 'Bu uzantı için detaylı lisans bilgisi bulunamadı.',
+'version-credits-title' => '$1 için Krediler',
+'version-credits-not-found' => 'Bu eklenti için detaylı kredi bilgisi bulunamadı.',
 'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
 'version-poweredby-others' => 'diğerleri',
 'version-poweredby-translators' => 'translatewiki.net çevirmenleri',
+'version-credits-summary' => "Aşağıdaki kişileri [[Special:Version|MediaWiki]]'ye katkılarından dolayı takdir ediyoruz.",
 'version-license-info' => "MediaWiki özgür bir yazılımdır; MediaWiki'yi, Özgür Yazılım Vakfı tarafından yayımlanmış olan GNU Genel Kamu Lisansının 2. veya (seçeceğiniz) daha sonraki bir sürümünün koşulları altında yeniden dağıtabilir ve/veya değiştirebilirsiniz.
 
 MediaWiki yazılımı faydalı olacağı ümidiyle dağıtılmaktadır; ancak kastedilen SATILABİLİRLİK veya BELİRLİ BİR AMACA UYGUNLUK garantisi hariç HİÇBİR GARANTİSİ YOKTUR. Daha fazla ayrıntı için GNU Genel Kamu Lisansı'na bakınız.
@@ -3997,13 +4005,14 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'version-entrypoints-header-url' => 'URL',
 
 # Special:Redirect
-'redirect' => 'Dosya, kullanıcı veya sayfa ID yönlendirme',
+'redirect' => 'Dosya, kullanıcı, sayfa ya da revizyon kimliği ile yönlendirme',
 'redirect-legend' => 'Bir dosya veya sayfaya yönlendirme',
-'redirect-summary' => "Bu özel sayfa sizi bir dosya (dosya adı verilen), bir sayfa (bir revizyon ID'si verilen) veya bir kullanıcı sayfasının (sayısal kullanıcı kimliği verilen) adresine yönlendirir. Kullanım: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ya da  [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => "Bu özel sayfa sizi bir dosya (dosya adı verilen), bir sayfa (bir revizyon ya da sayfa ID'si verilen) veya bir kullanıcı sayfasının (sayısal kullanıcı kimliği verilen) adresine yönlendirir. Kullanım: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya da  [[{{#Special:Redirect}}/user/101]].",
 'redirect-submit' => 'Git',
 'redirect-lookup' => 'Ara:',
 'redirect-value' => 'Değer:',
 'redirect-user' => 'Kullanıcı kimliği',
+'redirect-page' => 'Sayfa kimliği',
 'redirect-revision' => 'Sayfa revizyonu',
 'redirect-file' => 'Dosya adı',
 'redirect-not-exists' => 'Değer bulunamadı',
@@ -4021,6 +4030,7 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 
 # Special:SpecialPages
 'specialpages' => 'Özel sayfalar',
+'specialpages-note-top' => 'Gösterge',
 'specialpages-note' => '* Normal özel sayfalar.
 * <span class="mw-specialpagerestricted">Kısıtlı özel sayfalar.</span>',
 'specialpages-group-maintenance' => 'Bakım raporları',
@@ -4069,7 +4079,6 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 
 # Special:ComparePages
 'comparepages' => 'Sayfaları karşılaştır',
-'compare-selector' => 'Sayfa sürümlerini karşılaştır',
 'compare-page1' => 'Sayfa 1',
 'compare-page2' => 'Sayfa 2',
 'compare-rev1' => 'Sürüm 1',
@@ -4111,9 +4120,14 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 # New logging system
 'logentry-delete-delete' => '$1 $3 sayfasını {{GENDER:$2|sildi}}',
 'logentry-delete-restore' => '$1 $3 sayfasını {{GENDER:$2|geri getirdi}}',
+'logentry-delete-event' => '$1, $3 sayfasında {{PLURAL:$5|bir günlük girdisinin |$5 günlük girdisinin}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4',
 'logentry-delete-revision' => '$1, $3 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü {{GENDER:$2|değiştirdi}}: $4',
+'logentry-delete-event-legacy' => '$1, $3 sayfasında günlük girdilerinin görünürlüğünü  {{GENDER:$2|değiştirdi}}',
 'logentry-delete-revision-legacy' => '$1 $3 sayfasındaki sürümlerin görünürlüğünü {{GENDER:$2|değiştirdi}}',
+'logentry-suppress-delete' => '$1, $3 sayfasını {{GENDER:$2|bastırdı}}',
+'logentry-suppress-event' => '$1, $3 sayfasında {{PLURAL:$5|bir günlük girdisinin |$5 günlük girdisinin}} görünürlüğünü gizlice {{GENDER:$2|değiştirdi}}: $4',
 'logentry-suppress-revision' => '$1, $3 sayfasında {{PLURAL:$5|bir sürümün|$5 sürümün}} görünürlüğünü gizlice {{GENDER:$2|değiştirdi}}: $4',
+'logentry-suppress-event-legacy' => '$1, $3 sayfasında günlük girdilerinin görünürlüğünü gizlice {{GENDER:$2|değiştirdi}}',
 'logentry-suppress-revision-legacy' => '$1, $3 sayfasındaki sürümlerin görünürlüğünü {{GENDER:$2|değiştirdi}}',
 'revdelete-content-hid' => 'Gizli içerik',
 'revdelete-summary-hid' => 'değişiklik özeti gizlenmiş',
@@ -4126,14 +4140,21 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'logentry-move-move' => '$1, $3 sayfasını $4 sayfasına {{GENDER:$2|taşıdı}}',
 'logentry-move-move-noredirect' => '$1, $3 sayfasını $4 sayfasına yönlendirme olmaksızın {{GENDER:$2|taşıdı}}',
 'logentry-move-move_redir' => '$1, $3 sayfasını $4 sayfasına yönlendirme üzerinden {{GENDER:$2|taşıdı}}',
+'logentry-move-move_redir-noredirect' => '$1, $3 sayfasını bir yönlendirme üzerine yönlendirme bırakmadan $4 olarak {{GENDER:$2|taşıdı}}',
+'logentry-patrol-patrol' => '$1, $3 sayfasının $4 revizyonunu kontrol edildi olarak {{GENDER:$2|işaretledi}}',
 'logentry-patrol-patrol-auto' => '$1, $3 sayfasının $4 sürümümü otomatik olarak {{GENDER:$2|kontrol etti}}',
 'logentry-newusers-newusers' => 'Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}',
 'logentry-newusers-create' => 'Kullanıcı hesabı $1 {{GENDER:$2|oluşturuldu}}',
 'logentry-newusers-create2' => '$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}}',
+'logentry-newusers-byemail' => '$3 kullanıcı hesabı $1 tarafından {{GENDER:$2|oluşturuldu}} ve şifre e-posta ile gönderildi',
 'logentry-newusers-autocreate' => '$1 kullanıcı hesabı otomatik olarak {{GENDER:$2|oluşturuldu}}',
+'logentry-rights-rights' => '$1, $3 için grup üyeliğini $4 iken $5 olarak {{GENDER:$2|değiştirdi}}',
+'logentry-rights-rights-legacy' => '$1, $3 için grup üyeliğini {{GENDER:$2|değiştirdi}}',
+'logentry-rights-autopromote' => '$1, $4 iken $5 olarak otomatik {{GENDER:$2|terfi edildi}}',
 'rightsnone' => '(hiçbiri)',
 
 # Feedback
+'feedback-bugornote' => 'Eğer teknik bir problemi detaylarıyla açıklamaya hazırsanız lütfen [$1 bir hata raporlayın]. Diğer taraftan, aşağıdaki kolay formu kullanabilirsiniz. Yorumunuz, kullanıcı adınızla beraber "[$3 $2]" sayfasına eklenecektir.',
 'feedback-subject' => 'Konu:',
 'feedback-message' => 'Mesaj:',
 'feedback-cancel' => 'İptal',
@@ -4154,11 +4175,16 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 # API errors
 'api-error-badaccess-groups' => 'Bu wiki için dosya yüklemenize izin verilmiyor.',
 'api-error-badtoken' => 'İç hata: Bozuk anahtar.',
+'api-error-copyuploaddisabled' => 'URL ile yükleme bu sunucuda devre dışı bırakılmıştır.',
+'api-error-duplicate' => 'Sitede zaten aynı içerikte başka {{PLURAL:$1|bir [$2 dosya]|[$2 dosyalar]}} var.',
+'api-error-duplicate-archive' => 'Sitede zaten aynı içerikte başka {{PLURAL:$1|bir [$2 dosya]|[$2 dosyalar]}} vardı, ama {{PLURAL:$1|silindi|silindiler}}.',
+'api-error-duplicate-archive-popup-title' => 'Zaten silinmiş çift {{PLURAL:$1|sayfa|sayfalar}}.',
 'api-error-duplicate-popup-title' => 'Çift {{PLURAL:$1|dosya|dosya}}',
 'api-error-empty-file' => 'Gönderdiğiniz dosya boş.',
 'api-error-emptypage' => 'Yeni, boş bir sayfa oluşturmaya izin verilmez.',
 'api-error-fetchfileerror' => 'İç hata: Dosya alınırken bir hata oluştu.',
 'api-error-fileexists-forbidden' => '"$1" adıyla bir dosya zaten mevcut dolayısıyla üzerine yazamazsınız.',
+'api-error-fileexists-shared-forbidden' => '"$1" adında bir dosya ortak havuzda zaten var, ve üzerine yazılamaz.',
 'api-error-file-too-large' => 'Gönderdiğiniz dosya çok büyük.',
 'api-error-filename-tooshort' => 'Dosya adı çok kısa.',
 'api-error-filetype-banned' => 'Bu dosya biçimi yasaklanmıştır.',
@@ -4179,6 +4205,7 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 'api-error-overwrite' => 'Varolan dosyanın üzerine yazmaya izin verilmiyor.',
 'api-error-stashfailed' => 'İç hata: Sunucu, geçici dosyaları kaybetti.',
 'api-error-publishfailed' => 'İç hata: Sunucu geçici dosyayı yayınlarken başarısız oldu.',
+'api-error-stasherror' => 'Dosya zulaya yüklenirken hata oluştu.',
 'api-error-timeout' => 'Sunucu beklenen süre içinde yanıt vermedi.',
 'api-error-unclassified' => 'Bilinmeyen bir hata oluştu.',
 'api-error-unknown-code' => 'Bilinmeyen hata: "$1"',
@@ -4220,18 +4247,20 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
 # Special:ExpandTemplates
 'expandtemplates' => 'Şablonları genişlet',
 'expand_templates_intro' => 'Bu özel sayfa biraz metni alır ve içindeki tüm şablonları yinelemeli olarak genişletir.
-Ayrıca şu gibi derleyici fonksiyonlarını da genişletir
-<nowiki>{{</nowiki>#language:…}}, ve şu gibi değişkenleri
-<nowiki>{{</nowiki>CURRENTDAY}}&mdash;aslında çift-bağlı hemen her şey.
-Bunu, ilgili derleyici aşamasını MedyaVikinin kendisinden çağırarak yapar.',
+Ayrıca <code><nowiki>{{</nowiki>#language:…}}</code> gibi desteklenen derleyici fonksiyonlarını ve <code><nowiki>{{</nowiki>CURRENTDAY}}</code> gibi değişkenleri de genişletir.
+Aslında, çift ayraçlı hemen hemen her şeyi genişletir.',
 'expand_templates_title' => 'Durum başlığı, ör {{FULLPAGENAME}} için.:',
 'expand_templates_input' => 'Giriş metni:',
 'expand_templates_output' => 'Sonuç',
 'expand_templates_xml_output' => 'XML üretim',
+'expand_templates_html_output' => 'Ham HTML çıktısı',
 'expand_templates_ok' => 'Tamam',
 'expand_templates_remove_comments' => 'Yorumları sil',
 'expand_templates_remove_nowiki' => 'Sonuçlarda <nowiki> etiketlerini bastır',
 'expand_templates_generate_xml' => 'XML derleyici ağacını göster',
+'expand_templates_generate_rawhtml' => 'Ham HTML göster',
 'expand_templates_preview' => 'Önizleme',
 
+# Unknown messages
+'uploadinvalidxml' => 'Yüklenen dosyadaki XML işlenemedi.',
 );
index 1430a55..233145d 100644 (file)
@@ -8,6 +8,7 @@
  * @file
  *
  * @author Ariyo
+ * @author Arjunaraoc
  */
 
 $messages = array(
@@ -97,7 +98,6 @@ $messages = array(
 'qbedit' => 'Mşaḥlaf',
 'qbpageoptions' => 'iFaṭaṭe',
 'qbmyoptions' => 'aFaṭoṭayḍi',
-'qbspecialpages' => 'Faṭoṭe dilonoye',
 'faq' => 'Şuwole',
 'faqpage' => 'Project:FAQ',
 
@@ -257,7 +257,6 @@ Mjarab Naqla ḥreto.',
 'loginlanguagelabel' => 'Leşono: $1',
 
 # Change password dialog
-'resetpass' => 'Mşaḥlaf uQliḍo.',
 'oldpassword' => 'Qliḍo 3atiqo:',
 'newpassword' => 'Qliḍo ḥaṭo:',
 'retypenew' => 'Qliḍo ḥaṭo (disa):',
@@ -370,8 +369,6 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
 'revdelete-radio-set' => 'Eh',
 'revdelete-radio-unset' => 'Lo',
 'revdel-restore' => 'change visibility',
-'revdel-restore-deleted' => 'deleted revisions',
-'revdel-restore-visible' => 'visible revisions',
 'pagehist' => 'Maktabzabno diFaṭo',
 
 # Merge log
@@ -387,14 +384,12 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
 # Search results
 'searchresults' => 'Nafqe duKruxyayḍux',
 'searchresults-title' => 'Nafqe duKruxyo l"$1"',
-'searchsubtitleinvalid' => "Karixat '''$1'''",
 'prevn' => '{{PLURAL:$1|$1}} meqımtır',
 'nextn' => '{{PLURAL:$1 ḥaṭtır| $1 ḥaṭtır }}',
 'prevn-title' => '{{PLURAL:$1 Nafqo meqımtır|$1 Nafqe meqımtır}}',
 'nextn-title' => '{{PLURAL:$1|Nafqo ḥreno|$1 Nafqe ḥrene}}',
 'shown-title' => 'maḥway $1 {{PLURAL:$1|Nafqo|Nafqe}} bḥḍo Faṭo',
 'viewprevnext' => 'Maḥway ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => '3ayar duKruxyo',
 'searchmenu-exists' => "'''Kito Faṭo herke Işma \"[[:\$1]]\"yo'''",
 'searchmenu-new' => 'Kṭaw iFaṭaṭe "[[:$1]]" buWiki.',
 'searchprofile-articles' => 'Faṭoṭe daḤbişoṭo',
@@ -417,7 +412,6 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
 'searchall' => 'kulle',
 'showingresultsheader' => "{{PLURAL:$5|Nafqo '''$1''' of '''$3'''|Nafqe '''$1 - $2''' men '''$3'''}} l'''$4'''",
 'search-nonefound' => 'Für deine Suchanfrage wurden keine Ergebnisse gefunden.',
-'powersearch-field' => 'Krax',
 'powersearch-togglelabel' => 'Sım Qontrol:',
 'powersearch-toggleall' => 'Kulle',
 
@@ -476,7 +470,6 @@ Legend: '''({{int:cur}})''' = difference with latest revision, '''({{int:last}})
 'recentchanges-label-minor' => 'This is a minor edit',
 'recentchanges-label-bot' => 'uŞuḥlofano sim muBot.',
 'recentchanges-label-unpatrolled' => 'This edit has not yet been patrolled',
-'rcnote' => "Below {{PLURAL:$1|is '''1''' change|are the last '''$1''' changes}} in the last {{PLURAL:$2|day|'''$2''' days}}, as of $5, $4.",
 'rcnotefrom' => 'Herke komaḥwın aŞuḥlofe ḥaroye men ""$2"" (hul buSowudo ""$1"").',
 'rclistfrom' => 'Maḥway li Şuḥlofe ḥaṭe men $1',
 'rcshowhideminor' => '$1 minor edits',
@@ -563,7 +556,6 @@ The description on its [$2 file description page] there is shown below.',
 'allpages' => 'aFaṭaṭe kulle',
 'alphaindexline' => '$1  l$2',
 'allarticles' => 'aFaṭaṭe kulle',
-'allpagesnext' => 'Ḥreto',
 'allpagessubmit' => 'Zux',
 
 # Special:Categories
@@ -800,10 +792,6 @@ Others will be hidden by default.
 'exif-languagecode' => 'Leşono',
 'exif-cameraownername' => 'uMoro diQamera',
 
-# External editor support
-'edit-externally' => 'Edit this file using an external application',
-'edit-externally-help' => '(See the [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kulle',
 'namespacesall' => 'kulle',
index a8e6c4e..2496f50 100644 (file)
@@ -137,7 +137,6 @@ $messages = array(
 'qbedit' => 'Lulamisa',
 'qbpageoptions' => 'Tluka leri',
 'qbmyoptions' => 'Matluka ya mina',
-'qbspecialpages' => 'Matluka yohlawuleka',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -331,9 +330,6 @@ It may have already been deleted by someone else.',
 It may contain one or more characters which cannot be used in titles.',
 'querypage-no-updates' => 'Updates for this page are currently disabled.
 Data here will not presently be refreshed.',
-'wrong_wfQuery_params' => 'Incorrect parameters to wfQuery()<br />
-Function: $1<br />
-Query: $2',
 'viewsource' => 'Vona tsalwa-tumbuluxa',
 'viewsource-title' => 'vona xihlovo xa $1',
 'protectedpagetext' => 'Tluka leri riserheleriwile kusivele ndzulamiso.',
@@ -472,8 +468,6 @@ Swihlamuseri: '''({{int:sweswi}})''' = kuhambana na ndzulamiso wa sweswinyana, '
 # Revision deletion
 'rev-delundel' => 'Komba/Tumbeta',
 'revdel-restore' => 'Cinca kuvoniwa',
-'revdel-restore-deleted' => 'Mindzulamiso leyi suriweke',
-'revdel-restore-visible' => 'mindzulamiso leyi voniwaka himani na mani',
 'pagehist' => 'Matimu ya tluka',
 'deletedhist' => 'Matimu lamasuriweke',
 
@@ -520,7 +514,6 @@ Swihlamuseri: '''({{int:sweswi}})''' = kuhambana na ndzulamiso wa sweswinyana, '
 'showingresults' => "Kombisa e hansi kufika eka {{PLURAL:$1|'''1''' mbuyelo|'''$1''' mimbuyelo}} Kusungula hi#'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|nkutlunya '''$1''' wa '''$3''' lowu|minkutlunya '''$1 - $2''' ya '''$3''' leyi}} yelanaka na '''$4'''",
 'search-nonefound' => 'Kuhava mimbuyelo leyi yelanaka xikombelo lexi.',
-'powersearch' => 'Ndzavisiso',
 
 # Preferences page
 'mypreferences' => 'Minhlawulo ya mina',
@@ -529,7 +522,6 @@ Swihlamuseri: '''({{int:sweswi}})''' = kuhambana na ndzulamiso wa sweswinyana, '
 'prefs-datetime' => 'Siku na nkarhi',
 'prefs-watchlist' => 'Nxaxamelo wa Leswivoniwaka',
 'saveprefs' => 'Hlayisa',
-'resetprefs' => 'sula kucinca lokungahlayisiwangiki',
 'prefs-editing' => 'Kululamisa',
 'youremail' => 'E-mail:',
 'yourrealname' => 'Vito ra ntiyiso:',
@@ -570,7 +562,6 @@ Adiresi ya wena ya e-mail yitunberile loko van'wana va bula na wena.",
 'recentchanges-label-minor' => 'Lowu i ndzulamiso wu tsongo',
 'recentchanges-label-bot' => 'Ndzulamiso lowu wu endliwe hi rhobhoto',
 'recentchanges-label-unpatrolled' => 'Ndzulamiso lowu awusi languteriwa',
-'rcnote' => "Lha hansi ku kombiwa {{PLURAL:$1|ku cinca|''$1''' wa mindzulamiso}} endzeni ka  {{PLURAL:$2|siku|'''$2''' wa masiku}} lamahundzeke, hi $5, $4.",
 'rcnotefrom' => "Laha hansi kuxaxametiwe ku cinca kusukela hi '''$2''' (kuya ka '''$1''').",
 'rclistfrom' => 'Komba mindzilamiso leyintswa kusukela eka $1',
 'rcshowhideminor' => '$1 wa mindzulamiso leyi ntsanana',
@@ -873,10 +864,6 @@ Lebyi n'wana vuxokoxoko bya finiso byitumbetiwile.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => 'Lulamisa fayili leyi utirhisa xilulamisi xale handle ka wiki leyi',
-'edit-externally-help' => '(Vona [https://www.mediawiki.org/wiki/Manual:External_editors swiletelo swo sungurisa] leswaku ukuma vuxokoxoko lebyi engetelekeke)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'Hinkwawo',
 'namespacesall' => 'Hinkwawo',
index e8f53f2..6247a2a 100644 (file)
@@ -23,6 +23,7 @@
  * @author Ерней
  * @author Ильнар
  * @author Рашат Якупов
+ * @author Умар
  */
 
 $fallback = 'ru';
@@ -232,7 +233,6 @@ $messages = array(
 'tog-minordefault' => 'Барлык үзгәртүләрне килешү буенча кече дип билгеләнсен',
 'tog-previewontop' => 'Үзгәртү тәрәзәсеннән өстәрәк битне алдан карау өлкәсен күрсәтелсен',
 'tog-previewonfirst' => 'Үзгәртү битенә күчкәндә башта алдан карау бите күрсәтелсен',
-'tog-nocache' => 'Битләр кэшлауны тыелсын',
 'tog-enotifwatchlistpages' => 'Күзәтү исемлегемдәге бит яки файл үзгәртелү турында электрон почтага хәбәр җибәрелсен',
 'tog-enotifusertalkpages' => 'Бәхәс битем үзгәртелү турында электрон почтага хәбәр җибәрелсен',
 'tog-enotifminoredits' => 'Кече үзгәртүләр турында да электрон почтага хәбәр җибәрелсен',
@@ -330,12 +330,12 @@ $messages = array(
 'december-date' => '$1 Декабрь',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Төркем|Төркемнәр}}',
+'pagecategories' => '{{PLURAL:$1|1=Төркем|Төркемнәр}}',
 'category_header' => '«$1» төркемендәге битләр',
 'subcategories' => 'Төркемчәләр',
 'category-media-header' => '«$1» төркемендәге файллар',
 'category-empty' => "''Бу төркем әлегә буш.''",
-'hidden-categories' => '{{PLURAL:$1|Яшерен төркем|Яшерен төркемнәр}}',
+'hidden-categories' => '{{PLURAL:$1|1=Яшерен төркем|Яшерен төркемнәр}}',
 'hidden-category-category' => 'Яшерен төркемнәр',
 'category-subcat-count' => '{{PLURAL:$2|Бу төркемдә түбәндәге төркемчә генә бар.|$2 төркемчәдән {{PLURAL:$1|$1 төркемчә күрсәтелгән}}.}}',
 'category-subcat-count-limited' => 'Бу төркемдә {{PLURAL:$1|$1 төркемчә}} бар.',
@@ -366,7 +366,6 @@ $messages = array(
 'qbedit' => 'Үзгәртү',
 'qbpageoptions' => 'Бу бит',
 'qbmyoptions' => 'Битләрем',
-'qbspecialpages' => 'Махсус битләр',
 'faq' => 'ЕБС',
 'faqpage' => 'Project:ЕБС',
 
@@ -410,7 +409,7 @@ $messages = array(
 'deletethispage' => 'Бу битне бетерү',
 'undeletethispage' => 'Бу битне кайтарырга',
 'undelete_short' => '$1 {{PLURAL:$1|үзгәртмәне}} торгызу',
-'viewdeleted_short' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
+'viewdeleted_short' => '{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
 'protect' => 'Яклау',
 'protect_change' => 'үзгәртү',
 'protectthispage' => 'Бу битне яклау',
@@ -473,7 +472,7 @@ $1',
 
 'badaccess' => 'Керү хатасы',
 'badaccess-group0' => 'Сез сораган гамәлне башкара алмыйсыз.',
-'badaccess-groups' => 'Соралган гамәлне $1 {{PLURAL:$2|төркеменең|төркеменең}} кулланучылары гына башкара ала.',
+'badaccess-groups' => 'Соралган гамәлне $1 {{PLURAL:$2|1=төркеменең|төркеменең}} кулланучылары гына башкара ала.',
 
 'versionrequired' => 'MediaWikiның $1 версиясе таләп ителә',
 'versionrequiredtext' => 'Бу бит белән эшләү өчен MediaWikiның $1 версиясе кирәк. [[Special:Version|Кулланылучы программа версиясе турында мәгълүмат битен]] кара.',
@@ -486,7 +485,7 @@ $1',
 'youhavenewmessagesfromusers' => 'Сезгә {{PLURAL:$3|$3 кулланучыдан}} $1 килде ($2).',
 'youhavenewmessagesmanyusers' => 'Сез бик күп кулланучыдан $1 алдыгыз ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|яңа хәбәр}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|соңгы үзгәртү|соңгы үзгәртүләр}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=соңгы үзгәртү|соңгы үзгәртүләр}}',
 'youhavenewmessagesmulti' => 'Сезгә монда яңа хәбәрләр бар: $1',
 'editsection' => 'үзгәртү',
 'editold' => 'үзгәртү',
@@ -501,7 +500,7 @@ $1',
 'collapsible-expand' => 'Ачу',
 'thisisdeleted' => '$1 карарга яки торгызырга телисезме?',
 'viewdeleted' => '$1 карарга телисезме?',
-'restorelink' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}}',
+'restorelink' => '{{PLURAL:$1|1=1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}}',
 'feedlinks' => 'Шушылай:',
 'feed-invalid' => 'Язылу каналы тибы ялгыш',
 'feed-unavailable' => 'Синдикация тасмасы ябык',
@@ -577,9 +576,6 @@ $1',
 'perfcached' => 'Бу мәгълүматлар кэштан алынган, аларда соңгы үзгәртүләр булмаска мөмкин. Кэшта иң күбе {{PLURAL:$1|язма}} саклана.',
 'perfcachedts' => 'Бу мәгълүматлар кэштан алынган, ул соңгы тапкыр $1 яңартылды. Кэшта иң күбе  {{PLURAL:$4|язма}} саклана',
 'querypage-no-updates' => 'Хәзер бу битне яңартып булмый. Монда күрсәтелгән мәгълүматлар кабул ителмәячәк.',
-'wrong_wfQuery_params' => 'wfQuery() функция өчен ярамаган параметрлар<br />
-Функция: $1<br />
-Сорау: $2',
 'viewsource' => 'Карау',
 'viewsource-title' => '$1 битенең яхма текстын карау',
 'actionthrottled' => 'Тизлек киметелгән',
@@ -589,7 +585,7 @@ $1',
 'viewyourtext' => "Сез '''үз төзәтмәләрегезне''' бу сәхифәдә карый һәм чыгарылма текстны күчермәли аласыз:",
 'protectedinterface' => 'Бу биттә программа тәэминатының интерфейс хәбәрләре бар. Вандализмга каршы көрәш сәбәпле, бу битне үзгәртү тыела. Әлеге хәбәрнең тәрҗемәсен өстәү яки үзгәртү өчен, зинһар өчен, MediaWiki [//translatewiki.net/ translatewiki.net] тәрҗемәләү сайтын кулланыгыз.',
 'editinginterface' => "'''Игътибар:''' Сез программа тәэминатының интерфейс тексты булган битне үзгәртәсез. Бу башка кулланучыларга да тәэсир итәчәк. Тәрҗемә өчен [//translatewiki.net/wiki/Main_Page?setlang=tt-cyrl translatewiki.net] локализацияләү проектын кулланыгыз.",
-'cascadeprotected' => 'Бу бит үзгәртүләрдән сакланган, чөнки ул каскадлы саклау кабул ителгән {{PLURAL:$1|биткә|битләргә}} өстәлгән:
+'cascadeprotected' => 'Бу бит үзгәртүләрдән сакланган, чөнки ул каскадлы саклау кабул ителгән {{PLURAL:$1|1=биткә|битләргә}} өстәлгән:
 $2',
 'namespaceprotected' => "'''$1''' исем киңлегендәге битләрне үзгәртү өчен сезнең рөхсәтегез юк.",
 'customcssprotected' => 'Сез бу CSS-сәхифәне үзгәртә алмыйсыз, чөнки монда башка кулланучының шәхси көйләнмәләре саклана',
@@ -680,7 +676,7 @@ $2',
 Зинһар, серсүзне алгач, системага яңадан керегез.',
 'blocked-mailpassword' => 'Сезнең IP адресыгыз белән битләр үзгәртеп һәм серсүзне яңартып булмый.',
 'eauthentsent' => 'Адрес үзгәртүне дәлилләү өчен аңа махсус хат җибәрелде. Хатта язылганнарны үтәвегез сорала.',
-'throttled-mailpassword' => 'Серсүзне электрон почтага җибәрү гамәлен сез {{PLURAL:$1|соңгы $1 сәгать}} эчендә кулландыгыз инде. Бу гамәлне явызларча куллануны кисәтү максатыннан аны $1 {{PLURAL:$1|сәгать}} аралыгында бер генә тапкыр башкарып була.',
+'throttled-mailpassword' => 'Серсүзне электрон почтага җибәрү гамәлен сез {{PLURAL:$1|1=соңгы $1 сәгать}} эчендә кулландыгыз инде. Бу гамәлне явызларча куллануны кисәтү максатыннан аны $1 {{PLURAL:$1|сәгать}} аралыгында бер генә тапкыр башкарып була.',
 'mailerror' => 'Хат җибәрү хатасы: $1',
 'acct_creation_throttle_hit' => 'Сезнең IP адресыннан бу тәүлек эчендә {{PLURAL:$1|$1 хисап язмасы}} төзелде инде. Шунлыктан бу гамәл сезнең өчен вакытлыча ябык.',
 'emailauthenticated' => 'Электрон почта адресыгыз расланды: $3, $2.',
@@ -707,7 +703,7 @@ $2',
 'user-mail-no-addy' => 'Электрон почта адресыннан башка электрон хат җибәрмәкче булды',
 
 # Change password dialog
-'resetpass' => 'Серсүзне үзгәртү',
+'changepassword' => 'Серсүзне үзгәртү',
 'resetpass_announce' => 'Сез электрон почта аша вакытлыча бирелгән серсүз ярдәмендә кердегез. Системага керүне төгәлләү өчен яңа серсүз төзегез.',
 'resetpass_text' => '<!-- Монда текст өстәгез -->',
 'resetpass_header' => 'Хисап язмасы серсүзен үзгәртү',
@@ -735,21 +731,21 @@ $2',
 'passwordreset-email' => 'E-mail адресы:',
 'passwordreset-emailtitle' => '{{SITENAME}} хисап язмасы турында мәгълүматлар',
 'passwordreset-emailtext-ip' => 'Кемдер (бәлки, сездер, $1 IP-адресыннан) {{SITENAME}} ($4) проектында сезнең серсүзне искә төшерүне сорады.
-{{PLURAL:$3|Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
+{{PLURAL:$3|1=Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
 
 $2
 
-{{PLURAL:$3|Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
+{{PLURAL:$3|1=Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
 Сез системага керергә һәм яңа серсүз сайларга тиешсез.
 Әгәр сез серсүз сорамаган булсагыз яки элеккеге серсүзегезне искә төшерсәгез 
 һәм аны үзгәртергә теләмәсәгез, бу хатка җавап бирмәгез
 һәм элеккеге серсүзегезне кулланыгыз.',
 'passwordreset-emailtext-user' => '{{SITENAME}} проектыннан $1 кулланучысы {{SITENAME}} ($4) проектында сезнең серсүзне искә төшерүне сорады.
-{{PLURAL:$3|Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
+{{PLURAL:$3|1=Түбәндәге хисап язмасы|Түбәндәге хисап язмалары}} бу электрон әрҗә адресы белән бәйле:
 
 $2
 
-{{PLURAL:$3|Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
+{{PLURAL:$3|1=Бу вакытлы серсүз|Бу вакытлы серсүзләр}} {{PLURAL:$5|$5 көн}} дәвамында эшлиячәкләр.
 Сез системага керергә һәм яңа серсүз сайларга тиешсез.
 Әгәр сез серсүз сорамаган булсагыз яки элеккеге серсүзегезне искә төшерсәгез 
 һәм аны үзгәртергә теләмәсәгез, бу хатка җавап бирмәгез
@@ -936,9 +932,9 @@ $2
 'cascadeprotectedwarning' => "'''Кисәтү:''' Бу битне идарәчеләр гына үзгәртә ала. Сәбәбе: ул {{PLURAL:$1|каскадлы яклау исемлегенә кертелгән}}:",
 'titleprotectedwarning' => "'''Кисәтү: Мондый исемле бит якланган, аны үзгәртү өчен [[Special:ListGroupRights|тиешле хокукка]] ия булу зарур.'''
 Аста күзәтү көндәлегендәге соңгы язма бирелгән:",
-'templatesused' => 'Бу биттә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
-'templatesusedpreview' => 'Алдан каралучы биттә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
-'templatesusedsection' => 'Бу бүлектә кулланылган {{PLURAL:$1|үрнәк|үрнәкләр}}:',
+'templatesused' => 'Бу биттә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
+'templatesusedpreview' => 'Алдан каралучы биттә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
+'templatesusedsection' => 'Бу бүлектә кулланылган {{PLURAL:$1|1=үрнәк|үрнәкләр}}:',
 'template-protected' => '(якланган)',
 'template-semiprotected' => '(өлешчә якланган)',
 'hiddencategories' => 'Бу бит $1 {{PLURAL:$1|яшерен төркемгә}} керә:',
@@ -948,8 +944,8 @@ $2
 'sectioneditnotsupported-title' => 'Бүлекләрне үзгәртү рөхсәт ителми.',
 'sectioneditnotsupported-text' => 'Бу биттә бүлекләрне үзгәртү рөхсәт ителми.',
 'permissionserrors' => 'Керү хокукы хаталары',
-'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:',
-'permissionserrorstext-withaction' => '$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|Сәбәбе|Сәбәпләре}}:',
+'permissionserrorstext' => 'Түбәндәге {{PLURAL:$1|1=сәбәп|сәбәпләр}} аркасында сез бу гамәлне башкара алмыйсыз:',
+'permissionserrorstext-withaction' => '$2 гамәлен башкара алмыйсыз. {{PLURAL:$1|1=Сәбәбе|Сәбәпләре}}:',
 'recreate-moveddeleted-warn' => "'''Игътибар: Сез бетерелгән бит урынына яңа бит ясамакчы буласыз.'''
 
 Сезгә чыннан да бу битне яңадан ясау кирәкме?
@@ -971,7 +967,7 @@ $2
 # Parser/template warnings
 'expensive-parserfunction-warning' => "'''Игътибар:''' бу биттә хәтерне еш кулланучы функцияләр артык күп.
 
-Чикләү: $2 {{PLURAL:$2|куллану}}, бу очракта {{PLURAL:$1|$1 тапкыр}} башкарырга рөхсәт ителә.",
+Чикләү: $2 {{PLURAL:$2|1=куллану}}, бу очракта {{PLURAL:$1|$1 тапкыр}} башкарырга рөхсәт ителә.",
 'expensive-parserfunction-category' => 'Хәтерне еш кулланучы функцияләр күп булган битләр',
 'post-expand-template-inclusion-warning' => "'''Игътибар:''' Кулланылучы үрнәкләр артык зур.
 Кайберләре кабызылмаячак.",
@@ -1065,15 +1061,11 @@ $3 күрсәткән сәбәп: ''$2''",
 'revisiondelete' => 'Битнең юрамасын бетерү / кайтару',
 'revdelete-nooldid-title' => 'Ахыргы юрама билгеләнмәгән',
 'revdelete-nooldid-text' => 'Бу функцияне башкару өчен сез ахыргы юраманы (яки юрамаларны) билгеләмәдегез.',
-'revdelete-nologtype-title' => 'Көндәлек тибы билгеләнмәгән',
-'revdelete-nologtype-text' => 'Гамәл башкарылырга тиешле көндәлек төрен билгеләргә оныттыгыз.',
-'revdelete-nologid-title' => 'Көндәлектәге язма хаталы',
-'revdelete-nologid-text' => 'Сез гамәлне башкару өчен журналның максатчан язмасын күрсәтмәдегез яки күрсәтелмәгән язма юк.',
 'revdelete-no-file' => 'Бу файл юк.',
 'revdelete-show-file-confirm' => 'Сез чыннан да «<nowiki>$1</nowiki>» файлының бетерелгән  $2, $3 версиясен карарга телисезме??',
 'revdelete-show-file-submit' => 'Әйе',
-'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|Сайланган юрама|сайланган юрамалары}}:'''",
-'logdelete-selected' => "'''Журналның {{PLURAL:$1|Сайланган язма|сайланган язмалары}} :'''",
+'revdelete-selected' => "'''[[:$1]] битенең {{PLURAL:$2|1=Сайланган юрама|сайланган юрамалары}}:'''",
+'logdelete-selected' => "'''Журналның {{PLURAL:$1|1=Сайланган язма|сайланган язмалары}} :'''",
 'revdelete-legend' => 'Чикләүләр урнаштыр:',
 'revdelete-hide-text' => 'Битнең бу юрамасы текстын яшер',
 'revdelete-hide-image' => 'Файл эчендәгеләрне качыр',
@@ -1094,8 +1086,6 @@ $1",
 'logdelete-failure' => "'''Көндәлекнең күренүчәнлеге  куелмады:'''
 $1",
 'revdel-restore' => 'күренүчәнлекне үзгәртү',
-'revdel-restore-deleted' => 'бетерелгән юрамалар',
-'revdel-restore-visible' => 'күрсәтелгән юрамалар',
 'pagehist' => 'битнең тарихы',
 'deletedhist' => 'Бетерүләр тарихы',
 'revdelete-otherreason' => 'Башка/өстәмә сәбәп:',
@@ -1123,26 +1113,20 @@ $1",
 'compareselectedversions' => 'Сайланган юрамаларны чагыштыру',
 'showhideselectedversions' => 'Сайланган юрамаларны күрсәтү/яшерү',
 'editundo' => 'үткәрмәү',
-'diff-multi' => '({{PLURAL:$2|бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
+'diff-multi' => '({{PLURAL:$2|1=бер кулланучының|$2 кулланучының}} {{PLURAL:$1|арадагы $1 версиясе күрсәтелмәгән}})',
 
 # Search results
 'searchresults' => 'Эзләү нәтиҗәләре',
 'searchresults-title' => '«$1» өчен эзләү нәтиҗәләре',
-'searchresulttext' => 'Проектның сәхифәләрендә эзләү турында тулырак мәгълумат алыр өчен [[{{MediaWiki:Helppage}}|өстәмә мәгълумат]] битенә керегез.',
-'searchsubtitle' => '«[[:$1]]» өчен эзләү ([[Special:Prefixindex/$1|«$1» дан башлый барлык битләр]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|«$1» га сылтый барлык битләр]])',
-'searchsubtitleinvalid' => '"$1" таләбе буенча',
-'notitlematches' => 'Битнең исемнәрендә туры килүләр юк',
 'notextmatches' => 'Тиңдәш текстлы битләр юк',
 'prevn' => 'алдагы {{PLURAL:$1|$1}}',
 'nextn' => 'чираттагы {{PLURAL:$1|$1}}',
 'prevn-title' => 'Алдагы $1  {{PLURAL:$1|язма}}',
 'nextn-title' => 'Киләсе $1  {{PLURAL:$1|язма}}',
-'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|язма|язма}} күрсәтелсен',
+'shown-title' => 'Сәхифәдә $1 {{PLURAL:$1|1=язма|язма}} күрсәтелсен',
 'viewprevnext' => 'Күрсәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Эзләү көйләнмәләре',
 'searchmenu-exists' => "'''Бу вики-проекта «[[:$1]]» исемле бит бар инде'''",
 'searchmenu-new' => "'''«[[:$1]]»  исемле яңа бит ясау'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикслы битләрне күрсәтү]]',
 'searchprofile-articles' => 'Төп битләр',
 'searchprofile-project' => 'Ярдәм һәм проектлар бите',
 'searchprofile-images' => 'Мультимедиа',
@@ -1154,7 +1138,7 @@ $1",
 '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-category-size' => '{{PLURAL:$1|1=1 әгъза|$1 әгъза}} ({{PLURAL:$2|1=1 асттөркем|$2 асттөркем}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
 'search-result-score' => 'Релевантлыгы: $1 %',
 'search-redirect' => '(юнәлтү $1)',
 'search-section' => '($1 бүлеге)',
@@ -1163,21 +1147,16 @@ $1",
 'search-interwiki-default' => '$1 нәтиҗә:',
 'search-interwiki-more' => '(тагын)',
 'search-relatedarticle' => 'Бәйләнгән',
-'mwsuggest-disable' => 'AJAX-ярдәмне ябу',
 'searcheverything-enable' => 'Барлык исемнәр мәйданында эзләү',
 'searchrelated' => 'бәйләнгән',
 'searchall' => 'барлык',
 'showingresults' => "Аста № '''$2''' {{PLURAL:$1|башлап}} '''$1''' {{PLURAL:$1|результат}} күрсәтелгән.",
-'showingresultsnum' => "Аста № '''$2''' {{PLURAL:$3| башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
-'showingresultsheader' => "'''$4''' өчен {{PLURAL:$5|Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән  '''$3'''}}",
-'nonefound' => "'''Искәрмә'''. Килешү буенча эзләү кайбер исем аланнарында гына эшли.
-Барлык аланнарда (бәхәс битләре, үрнәкләр, һ.б.) эзләү өчен ''all'' сүзен сайлагыз, яисә кирәкле исем аланын сайлагыз.",
+'showingresultsnum' => "Аста № '''$2''' {{PLURAL:$3|башлап}} '''$3''' {{PLURAL:$3|результат}} күрсәтелгән.",
+'showingresultsheader' => "'''$4''' өчен {{PLURAL:$5|1=Результат '''$1''' сеннән '''$3'''|Результатлар '''$1 — $2''' сеннән  '''$3'''}}",
 'search-nonefound' => 'Сорауга туры килгән җаваплар табылмады.',
-'powersearch' => 'Өстәмә эзләү',
 'powersearch-legend' => 'Өстәмә эзләү',
 'powersearch-ns' => 'исемнәрендә эзләү',
 'powersearch-redir' => 'Юнәлтүләр күрсәтелсен',
-'powersearch-field' => 'Эзләү',
 'powersearch-togglelabel' => 'Кире кагыу:',
 'powersearch-toggleall' => 'Барысы',
 'powersearch-togglenone' => 'Бирни дә юк',
@@ -1187,7 +1166,6 @@ $1",
 'preferences' => 'Көйләнмәләр',
 'mypreferences' => 'Көйләнмәләр',
 'prefs-edits' => 'Үзгәртүләр исәбе:',
-'changepassword' => 'Серсүзне үзгәртү',
 'prefs-skin' => 'Күренеш',
 'skin-preview' => 'Алдан карау',
 'datedefault' => 'Баштагы көйләнмәләр',
@@ -1198,7 +1176,7 @@ $1",
 'prefs-rc' => 'Соңгы үзгәртүләр',
 'prefs-watchlist' => 'Күзәтү исемлеге',
 'prefs-watchlist-days' => 'Күзәтү исемлегендә күрсәтелгән көн саны:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|1=day|days}}',
 'prefs-watchlist-edits' => 'Киңәйтелгән күзәтү исемлегендә үзгәртүләрнең иң югары исәбе:',
 'prefs-watchlist-edits-max' => 'Максимум сан: 1000',
 'prefs-watchlist-token' => 'Күзәтү исемлеге токены:',
@@ -1207,13 +1185,11 @@ $1",
 'prefs-email' => 'E-mail көйләүләре',
 'prefs-rendering' => 'Күренеш',
 'saveprefs' => 'Саклау',
-'resetprefs' => 'Сакланмаган үзгәртүләрне бетерү',
 'restoreprefs' => 'Баштагы көйләнмәләрне кире кайтару',
 'prefs-editing' => 'Үзгәртү',
 'rows' => 'Юллар:',
 'columns' => 'Баганалар:',
 'searchresultshead' => 'Эзләү',
-'resultsperpage' => 'Бер биткә туры килгән табылдыклар:',
 'stub-threshold' => '<a href="#" class="stub">Ясалма сылтамаларның</a> бизәлеше буенча чикләүләр (байтларда):',
 'stub-threshold-disabled' => 'Ябылган',
 'recentchangesdays' => 'Соңгы үзгәртүләрне күрсәтүче көннәр саны:',
@@ -1225,7 +1201,6 @@ $1",
 'localtime' => 'Җирле вакыт',
 'timezoneuseserverdefault' => 'Сервернең көйләнмәләре кулланылсын ($1)',
 'timezoneuseoffset' => 'Башка (күчерелүне күрсәтегез)',
-'timezoneoffset' => 'Күчерелү¹:',
 'servertime' => 'Серверның вакыты:',
 'guesstimezone' => 'Браузердан тутыру',
 'timezoneregion-africa' => 'Африка',
@@ -1362,7 +1337,7 @@ $1",
 'action-move' => 'бу битне күчерерге',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|үзгәртү|үзгәртү}}',
+'nchanges' => '$1 {{PLURAL:$1|1=үзгәртү|үзгәртү}}',
 'recentchanges' => 'Соңгы үзгәртүләр',
 'recentchanges-legend' => 'Соңгы үзгәртүләр көйләүләре',
 'recentchanges-summary' => 'Бу биттә {{grammar:genitive|{{SITENAME}}}} проектының соңгы үзгәртүләре күрсәтелә.',
@@ -1371,13 +1346,12 @@ $1",
 'recentchanges-label-minor' => 'Бу кече үзгәртү',
 'recentchanges-label-bot' => 'Бу үзгәртү бот белән эшләнгән иде',
 'recentchanges-label-unpatrolled' => 'Үзгәртүне әлегә тикшермәгәннәр',
-'recentchanges-legend-newpage' => '$1 — яңа бит',
-'rcnote' => 'Аста $4 $5 вакытынна соңгы {{PLURAL:$2|1|$2}} көн эчендә булган соңгы {{PLURAL:$1|1|$1}} үзгәртмә күрсәтелә:',
+'recentchanges-legend-newpage' => '([[Special:NewPages|яңа бит]])',
 'rcnotefrom' => "Астарак '''$2''' башлап ('''$1''' кадәр) үзгәртүләр күрсәтелгән.",
 'rclistfrom' => '$1 башлап яңа үзгәртүләрне күрсәт',
 'rcshowhideminor' => 'кече үзгәртүләрне $1',
 'rcshowhidebots' => 'ботларны $1',
-'rcshowhideliu' => 'кергән кулланучыларны $1',
+'rcshowhideliu' => '$1 кергән кулланучылар',
 'rcshowhideanons' => 'кермәгән кулланучыларны $1',
 'rcshowhidepatr' => 'тикшерелгән үзгәртүләрне $1',
 'rcshowhidemine' => 'минем үзгәртүләремне $1',
@@ -1393,7 +1367,7 @@ $1",
 'rc_categories' => 'Төркемнәрдә генә тора («|» бүлүче)',
 'rc_categories_any' => 'Һәрбер',
 'newsectionsummary' => '/* $1 */ яңа бүлек',
-'rc-enhanced-expand' => 'Ваклыкларны күрсәтү (JavaScript кирәк)',
+'rc-enhanced-expand' => 'Ваклыкларны күрсәтү',
 'rc-enhanced-hide' => 'Ваклыкларны яшерү',
 
 # Recent changes linked
@@ -1446,9 +1420,9 @@ $1",
 'filetype-badmime' => 'MIME-төре «$1» булган файллар, йөкләнмәячәк.',
 'filetype-bad-ie-mime' => 'Файлны йөкләргә мөмкин түгел, чөнки Internet Explorer аны «$1» дип кабул итәчәк.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — тыелган файл төре.
-{{PLURAL:\$3|Мөмкин булган файл төре булып|Мөмкин булган файл төре:}} \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|тыелган файл төре|тыелган файллар төре}}.
-{{PLURAL:$3|Киңәйтелгән файл төре булып|Киңәйтелгән  файл төрләре:}} $2.',
+{{PLURAL:\$3|1=Мөмкин булган файл төре булып|Мөмкин булган файл төре:}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=тыелган файл төре|тыелган файллар төре}}.
+{{PLURAL:$3|1=Киңәйтелгән файл төре булып|Киңәйтелгән  файл төрләре:}} $2.',
 'filetype-missing' => "Файлның киңәйтелмәсе юк ''(мәсәлән,«.jpg»)''.",
 'empty-file' => 'Сезнең тарафтан җибәрелгән файл буш.',
 'file-too-large' => 'Сезнең тарафтан җибәрелгән файл артык зур.',
@@ -1527,7 +1501,7 @@ PICT # төрле
 'filehist-comment' => 'Искәрмә',
 'filehist-missing' => 'Файл табылмады',
 'imagelinks' => 'Файлны куллану',
-'linkstoimage' => 'Бу файлга әлеге {{PLURAL:$1|бит|$1 бит}} сылтый:',
+'linkstoimage' => 'Бу файлга әлеге {{PLURAL:$1|1=бит|$1 бит}} сылтый:',
 'nolinkstoimage' => 'Бу файлга сылтаган битләр юк.',
 'duplicatesoffile' => '{{PLURAL:$1|Әлеге $1 файл }} астагы файлның күчерелмәсе булып тора ([[Special:FileDuplicateSearch/$2|тулырак]]):',
 'sharedupload' => "Бу файл $1'дан һәм башка проектларда кулланырга мөмкин.",
@@ -1642,8 +1616,8 @@ PICT # төрле
 'movethispage' => 'Бу битне күчерү',
 'nopagetitle' => 'Мондый бит юк',
 'nopagetext' => 'Күрсәтелгән бит юк.',
-'pager-newer-n' => '{{PLURAL:$1|1 яңарак|$1 яңарак}}',
-'pager-older-n' => '{{PLURAL:$1|1 искерәк|$1 искерәк}}',
+'pager-newer-n' => '{{PLURAL:$1|1=1 яңарак|$1 яңарак}}',
+'pager-older-n' => '{{PLURAL:$1|1=1 искерәк|$1 искерәк}}',
 'suppress' => 'Яшерү',
 
 # Book sources
@@ -1671,16 +1645,13 @@ PICT # төрле
 'allpagesto' => 'Монда чыгаруны туктату:',
 'allarticles' => 'Барлык битләр',
 'allinnamespace' => '«$1» исемнәр мәйданындагы барлык битләр',
-'allnotinnamespace' => 'Барлык битләр («$1» исемнәр мәйданы исәпкә алынмады)',
-'allpagesprev' => 'Алдагы',
-'allpagesnext' => 'Киләсе',
 'allpagessubmit' => 'Башкару',
 'allpagesprefix' => 'Алкушымчалы битләрне күрсәтү:',
 'allpages-hide-redirects' => 'Юнәлтүләрне яшер',
 
 # Special:Categories
 'categories' => 'Төркемнәр',
-'categoriespagetext' => '{{PLURAL:$1|Әлеге төркем үз өченә|Әлеге төркемнәр  үз өченә}}   битләрне һәм медиа-файлларны ала.
+'categoriespagetext' => '{{PLURAL:$1|1=Әлеге төркем үз өченә|Әлеге төркемнәр  үз өченә}}   битләрне һәм медиа-файлларны ала.
 Аста [[Special:UnusedCategories|кулланылмаган төркемнәр]] кәрсәтелгән.
 Шулай ук  [[Special:WantedCategories|кирәкле төркемнәр исемлегендә]] карагыз.',
 'special-categories-sort-count' => 'исәп буенча тәртипләү',
@@ -1754,7 +1725,7 @@ PICT # төрле
 'unwatch' => 'Күзәтмәү',
 'unwatchthispage' => 'Күзәтүне туктат',
 'notanarticle' => 'Мәкалә түгел',
-'watchlist-details' => 'Күзәтү исемлегегездә, бәхәс битләрен санамыйча, {{PLURAL:$1|$1 бит|$1 бит}} бар.',
+'watchlist-details' => 'Күзәтү исемлегегездә, бәхәс битләрен санамыйча, {{PLURAL:$1|1=$1 бит|$1 бит}} бар.',
 'wlshowlast' => 'Баягы $1 сәгать $2 көн эчендә яки $3ны күрсәт',
 'watchlist-options' => 'Күзәтү исемлеге көйләүләре',
 
@@ -1844,7 +1815,7 @@ $UNWATCHURL
 'protect-unchain-permissions' => 'Өстәмә яклау чараларын ачу',
 'protect-text' => "Биредә сез '''$1''' бите өчен яклау дәрәҗәсене карый һәм үзгәрә аласыз.",
 'protect-locked-access' => "Хисап язмагызга битләрнең яклау дәрәҗәсен үзгәртү өчен хак җитми. '''$1''' битенең хәзерге көйләүләре:",
-'protect-cascadeon' => 'Бу бит якланган, чөнки ул әлеге каскадлы яклаулы {{PLURAL:$1|биткә|битләргә}} керә. Сез бу битнең яклау дәрәҗәсен үзгәртә аласыз, әмма каскадлы яклау үзгәрмәячәк.',
+'protect-cascadeon' => 'Бу бит якланган, чөнки ул әлеге каскадлы яклаулы {{PLURAL:$1|1=биткә|битләргә}} керә. Сез бу битнең яклау дәрәҗәсен үзгәртә аласыз, әмма каскадлы яклау үзгәрмәячәк.',
 'protect-default' => 'Яклаусыз',
 'protect-fallback' => '«$1»нең рөхсәте кирәк',
 'protect-level-autoconfirmed' => 'Яңа һәм теркәлмәгән кулланучыларны кысу',
@@ -1891,10 +1862,9 @@ $UNWATCHURL
 'undeletebtn' => 'Торгызу',
 'undeletelink' => 'карау/торгызу',
 'undeleteviewlink' => 'карау',
-'undeletereset' => 'Ташлату',
 'undeleteinvert' => 'Киресен сайлау',
 'undeletecomment' => 'Сәбәп:',
-'undeletedrevisions' => '{{PLURAL:$1|1 үзгәртү|$1 үзгәртү}} торгызылды',
+'undeletedrevisions' => '{{PLURAL:$1|1=1 үзгәртү|$1 үзгәртү}} торгызылды',
 'undelete-search-submit' => 'Эзләү',
 'undelete-error-long' => 'Файлны торгызу вакытында хаталар чыкты:
 
@@ -1937,8 +1907,8 @@ $1',
 'isredirect' => 'юнәлтү бите',
 'istemplate' => 'кертүләр',
 'isimage' => 'файл сылтамасы',
-'whatlinkshere-prev' => '{{PLURAL:$1|алдагы|алдагы $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|чираттагы|чираттагы $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=алдагы|алдагы $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=чираттагы|чираттагы $1}}',
 'whatlinkshere-links' => '← сылтамалар',
 'whatlinkshere-hideredirs' => 'юнәлтүләрне $1',
 'whatlinkshere-hidetrans' => 'кертүләрне $1',
@@ -1948,12 +1918,10 @@ $1',
 
 # Block/unblock
 'blockip' => 'Кулланучыны тыю',
-'blockip-title' => 'Кулланучыны тыю',
 'blockip-legend' => 'Кулланучыны тыю',
 'ipadressorusername' => 'IP адресы яки кулланучы исеме:',
 'ipbexpiry' => 'Бетә:',
 'ipbreason' => 'Сәбәп:',
-'ipbreasonotherlist' => 'Башка сәбәп',
 'ipbreason-dropdown' => '* Кысуның гадәттәге сәбәпләре
 ** Ялган мәгълүмат кертү
 ** Битләрнең эчтәлеген сөртү
@@ -1966,7 +1934,6 @@ $1',
 'ipbsubmit' => 'Бу кулланучыны тыю',
 'ipbother' => 'Башка вакыт:',
 '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',
-'ipbotheroption' => 'башка',
 'badipaddress' => 'Ялгыш IP адресы',
 'blockipsuccesssub' => 'Тыю башкарылган',
 'ipb-unblock-addr' => '$1 кулланучысын тыюдан азат итү',
@@ -2013,7 +1980,6 @@ $1',
 
 Бу очракларда сезгә битләрне үз кулыгыз белән күчерергә яки кушарга туры килер.",
 'movearticle' => 'Битне күчерү:',
-'movenologin' => 'Кермәдегез',
 'movenotallowed' => 'Сездә мәкаләләрне күчерү хокуклары юк.',
 'newtitle' => 'Яңа башлам:',
 'move-watch' => 'Бу битне күзәтү',
@@ -2024,8 +1990,6 @@ $1',
 'movepage-moved-noredirect' => 'Юнәлтүне ясау тыелды',
 'articleexists' => 'Мондый исемле бит бар инде, яисә мондый исем рөхсәт ителми.
 Зинһар башка исем сайлагыз.',
-'talkexists' => "'''Битнең үзе күчерелде, әмма бәхәс бите күчерелми калды, чөнки шундый исемле бит бар инде. Зинһар, аларны үзегез кушыгыз.'''",
-'movedto' => 'күчерелгән:',
 'movetalk' => 'Бәйләнешле бәхәс битен күчерү',
 'movelogpage' => 'Күчерү көндәлеге',
 'movereason' => 'Сәбәп:',
@@ -2149,10 +2113,10 @@ $1',
 'common.css' => '/*  Монда урнаштырылган CSS башкаларында да урнашачак */',
 
 # Attribution
-'anonymous' => '{{SITENAME}} сайтының аноним {{PLURAL:$1|кулланучысы|кулланучылары}}',
+'anonymous' => '{{SITENAME}} сайтының аноним {{PLURAL:$1|1=кулланучысы|кулланучылары}}',
 'siteuser' => '{{SITENAME}} кулланучысы $1',
 'othercontribs' => '«$1» эшенә нигезләнә.',
-'siteusers' => '{{SITENAME}} {{PLURAL:$2|кулланучысы|кулланучылары}} $1',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|1=кулланучысы|кулланучылары}} $1',
 'creditspage' => 'Рәхмәтләр',
 
 # Spam protection
@@ -2193,7 +2157,7 @@ $1',
 'imagemaxsize' => "Рәсемнең зурлыгына чикләүләр:<br />''(тасвирлау бите өчен)''",
 'thumbsize' => 'Рәсемнең кечерәйтелгән юрамасы өчен:',
 'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|бит|битләр}}',
+'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|1=бит|битләр}}',
 'file-info' => 'файл зурлыгы: $1, MIME-тип: $2',
 'file-info-size' => '$1 × $2 нокта, файлның зурлыгы: $3, MIME тибы: $4',
 'file-nohires' => 'Югары ачыклык белән юрама юк.',
@@ -2371,15 +2335,10 @@ $1',
 'exif-gpsspeed-k' => 'км/сәг',
 'exif-gpsspeed-m' => 'миля/сәг',
 
-# External editor support
-'edit-externally' => 'Бу файлны тышкы кушымтаны кулланып үзгәртү',
-'edit-externally-help' => '(тулырак мәгълүмат өчен [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] битен карагыз)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'барлык',
 'namespacesall' => 'барлык',
 'monthsall' => 'барлык',
-'limitall' => 'барлык',
 
 # Delete conflict
 'recreate' => 'Яңадан ясау',
@@ -2490,7 +2449,6 @@ $1',
 
 # Special:ComparePages
 'comparepages' => 'Битләрне чагыштыру',
-'compare-selector' => 'Битләрнең юрамаларын чагыштыру',
 'compare-page1' => 'Беренче сәхифә',
 'compare-page2' => 'Икенче сәхифә',
 'compare-rev1' => 'Беренче юрама',
@@ -2553,8 +2511,8 @@ $1',
 'api-error-badtoken' => 'Эчке хата: дөрес булмаган токен.',
 'api-error-copyuploaddisabled' => 'URL-адрес буенча йөкләү бу серверда сүндерелгән.',
 'api-error-duplicate' => 'Мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} да бар.',
-'api-error-duplicate-archive' => 'Элек сайтта мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} бар иде инде, ләкин {{PLURAL:$1|аны бетерделәр|аларны бетерделәр}}.',
-'api-error-duplicate-archive-popup-title' => 'Кайчандыр бетерелгән {{PLURAL:$1|файлның|файлларның}} дубликатлары.',
+'api-error-duplicate-archive' => 'Элек сайтта мондый эчтәлекле {{PLURAL:$1|[$2 башка файл]}} бар иде инде, ләкин {{PLURAL:$1|1=аны бетерделәр|аларны бетерделәр}}.',
+'api-error-duplicate-archive-popup-title' => 'Кайчандыр бетерелгән {{PLURAL:$1|1=файлның|файлларның}} дубликатлары.',
 'api-error-duplicate-popup-title' => '{{PLURAL:$1|файлның}} дубликаты',
 'api-error-empty-file' => 'Сезнең тарафтан җибәрелгән файл буш.',
 'api-error-emptypage' => 'Яңа буш сәхифәләр төзү рөхсәт ителми',
index 69f9af2..88cecfd 100644 (file)
@@ -114,7 +114,6 @@ $messages = array(
 'tog-minordefault' => 'Barlıq üzgärtülärne kileşü buyınça keçe dip bilgelänsen',
 'tog-previewontop' => 'Üzgärtü täräzäsennän östäräk bitne aldan qaraw ölkäsen kürsätelsen',
 'tog-previewonfirst' => 'Üzgärtü bitenä küçkändä başta aldan qaraw bite kürsätelsen',
-'tog-nocache' => 'Bitlär keşlawnı tıyılsın',
 'tog-enotifwatchlistpages' => 'Küzätü isemlegemdäge bit üzgärtelü turında elektron poçtağa xäbär cibärelsen',
 'tog-enotifusertalkpages' => 'Bäxäs bitem üzgärtelü turında elektron poçtağa xäbär cibärelsen',
 'tog-enotifminoredits' => 'Keçe üzgärtülär turında da elektron poçtağa xäbär cibärelsen',
@@ -233,7 +232,6 @@ $messages = array(
 'qbedit' => 'Üzgärtü',
 'qbpageoptions' => 'Bu bit',
 'qbmyoptions' => 'Bitlärem',
-'qbspecialpages' => 'Maxsus bitlär',
 'faq' => 'YBS',
 'faqpage' => 'Project:YBS',
 
@@ -430,9 +428,6 @@ Zinhar öçen, URLnı kürsätep, bu turıda [[Special:ListUsers/sysop|idaräçe
 'perfcached' => 'Bu mäğlümatlar keştan alınğan, alarda soñğı üzgärtülär bulmasqa mömkin. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Bu mäğlümatlar keştan alınğan, ul soñğı tapqır $1 yañartıldı. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Xäzer bu bitne yañartıp bulmıy. Monda kürsätelgän mäğlümatlar qabul itelmäyäçäk.',
-'wrong_wfQuery_params' => 'wfQuery() funksiä öçen yaramağan parametrlar<br />
-Funksiä: $1<br />
-Soraw: $2',
 'viewsource' => 'Qaraw',
 'actionthrottled' => 'Tizlek kimetelgän',
 'actionthrottledtext' => 'Spamğa qarşı köräş öçen az waqıt eçendä bu ğämälne yış qullanu tıyılğan. Zinhar, soñaraq qabatlağız.',
@@ -531,7 +526,7 @@ Yañadan qabatlağançı beraz kötüegez sorala.',
 'suspicious-userlogout' => 'Sezneñ eşçänlekne beterü sorawığız kire qağıldı, çönki ul yalğış brauzer yäisä keşlawçı proksi aşa cibärelerge mömkin.',
 
 # Change password dialog
-'resetpass' => 'Sersüzne üzgärtü',
+'changepassword' => 'Sersüzne üzgärtü',
 'resetpass_announce' => 'Sez elektron poçta aşa waqıtlıça birelgän sersüz yärdämendä kerdegez. Sistemağa kerüne tögälläw öçen yaña sersüz tözegez.',
 'resetpass_text' => '<!-- Monda tekst östägez -->',
 'resetpass_header' => 'Xisap yazması sersüzen üzgärtü',
@@ -823,9 +818,6 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 'revisiondelete' => 'Bitneñ yuramasın beterü / qaytaru',
 'revdelete-nooldid-title' => 'Axırğı yurama bilgelänmägän',
 'revdelete-nooldid-text' => 'Bu funksiäne başqaru öçen sez axırğı yuramanı (yäki yuramalarnı) bilgelämädegez.',
-'revdelete-nologtype-title' => 'Köndälek tibı bilgelänmägän',
-'revdelete-nologtype-text' => 'Ğämäl başqarılırğa tieşle köndälek tören bilgelärgä onıttığız.',
-'revdelete-nologid-title' => 'Köndälektäge yazma xatalı',
 'revdelete-show-file-submit' => 'Äye',
 'revdelete-legend' => 'Çikläwlär urnaştır:',
 'revdelete-hide-text' => 'Bitneñ bu yuraması tekstın yäşer',
@@ -834,8 +826,6 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 'revdelete-radio-set' => 'Äye',
 'revdelete-radio-unset' => 'Yuq',
 'revdel-restore' => 'kürenüçänlekne üzgärtü',
-'revdel-restore-deleted' => 'beterelgän yuramalar',
-'revdel-restore-visible' => 'kürsätelgän yuramalar',
 'pagehist' => 'bitneñ tarixı',
 'deletedhist' => 'Beterülär tarixı',
 'revdelete-reasonotherlist' => 'Başqa säbäp',
@@ -866,18 +856,12 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 # Search results
 'searchresults' => 'Ezläw näticäläre',
 'searchresults-title' => '«$1» öçen ezläw näticäläre',
-'searchresulttext' => 'Proyektnıñ säxifälärendä ezläw turında tulıraq mäğlumat alır öçen [[{{MediaWiki:Helppage}}|östämä mäğlumat]] bitenä keregez.',
-'searchsubtitle' => '«[[:$1]]» öçen ezläw ([[Special:Prefixindex/$1|«$1» dan başlıy barlıq bitlär]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|«$1» ğa sıltıy barlıq bitlär]])',
-'searchsubtitleinvalid' => '"$1" taläbe buyınça',
 'titlematches' => 'Mäqälä başlığı kileşä',
-'notitlematches' => 'Bitneñ isemnärendä turı kilülär yuq',
 'notextmatches' => 'Tiñdäş tekstlı bitlär yuq',
 'prevn' => 'aldağı {{PLURAL:$1|$1}}',
 'nextn' => 'çirattağı {{PLURAL:$1|$1}}',
 'viewprevnext' => 'Kürsätelüe: ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ezläw köylänmäläre',
 'searchmenu-new' => "'''«[[:$1]]»  isemle yaña bit yasaw'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu prefikslı bitlärne kürsätü]]',
 'searchprofile-articles' => 'Töp bitlär',
 'searchprofile-project' => 'Yärdäm häm proyektlar bite',
 'searchprofile-images' => 'Multimedia',
@@ -897,21 +881,16 @@ Sez idaräçe bulu säbäple, [$1 yäşerelgän yuramanı qarıy alasız]",
 'search-interwiki-default' => '$1 näticä:',
 'search-interwiki-more' => '(tağın)',
 'search-relatedarticle' => 'Bäylängän',
-'mwsuggest-disable' => 'AJAX-yärdämne yabu',
 'searcheverything-enable' => 'Barlıq isemnär mäydanında ezläw',
 'searchrelated' => 'bäylängän',
 'searchall' => 'barlıq',
 'showingresults' => "Asta № '''$2''' {{PLURAL:$1|başlap}} '''$1''' {{PLURAL:$1|rezultat}} kürsätelgän.",
 'showingresultsnum' => "Asta № '''$2''' {{PLURAL:$3| başlap}} '''$3''' {{PLURAL:$3|rezultat}} kürsätelgän.",
 'showingresultsheader' => "'''$4''' öçen {{PLURAL:$5|Rezultat '''$1''' sennän '''$3'''|Rezultatlar '''$1 — $2''' sennän  '''$3'''}}",
-'nonefound' => "'''İskärmä'''. Kileşü buyınça ezläw qayber isem alannarında ğına eşli.
-Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' süzen saylağız, yäisä kiräkle isem alanın saylağız.",
 'search-nonefound' => 'Sorawğa turı kilgän cawaplar tabılmadı.',
-'powersearch' => 'Östämä ezläw',
 'powersearch-legend' => 'Östämä ezläw',
 'powersearch-ns' => 'isemnärendä ezläw',
 'powersearch-redir' => 'Yünältülär kürsätelsen',
-'powersearch-field' => 'Ezläw',
 'powersearch-togglelabel' => 'Kire qağıw:',
 'powersearch-toggleall' => 'Barısı',
 'powersearch-togglenone' => 'Birni dä yuq',
@@ -921,7 +900,6 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' s
 'preferences' => 'Köylänmälär',
 'mypreferences' => 'Köylänmälärem',
 'prefs-edits' => 'Üzgärtülär isäbe:',
-'changepassword' => 'Sersüzne üzgärtü',
 'prefs-skin' => 'Küreneş',
 'skin-preview' => 'Aldan qaraw',
 'datedefault' => 'Baştağı köylänmälär',
@@ -939,13 +917,11 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' s
 'prefs-email' => 'E-mail köyläwläre',
 'prefs-rendering' => 'Küreneş',
 'saveprefs' => 'Saqlaw',
-'resetprefs' => 'Saqlanmağan üzgärtülärne beterü',
 'restoreprefs' => 'Baştağı köylänmälärne kire qaytaru',
 'prefs-editing' => 'Üzgärtü',
 'rows' => 'Yullar:',
 'columns' => 'Bağanalar:',
 'searchresultshead' => 'Ezläw',
-'resultsperpage' => 'Ber bitkä turı kilgän tabıldıqlar:',
 'stub-threshold' => '<a href="#" class="stub">Yasalma sıltamalarnıñ</a> bizäleşe buyınça çikläwlär (baytlarda):',
 'stub-threshold-disabled' => 'Yabılğan',
 'recentchangesdays' => 'Soñğı üzgärtülärne kürsätüçe könnär sanı:',
@@ -957,7 +933,6 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' s
 'localtime' => 'Cirle waqıt',
 'timezoneuseserverdefault' => 'Serverneñ köylänmäläre qullanılsın',
 'timezoneuseoffset' => 'Başqa (küçerelüne kürsätegez)',
-'timezoneoffset' => 'Küçerelü¹:',
 'servertime' => 'Servernıñ waqıtı:',
 'guesstimezone' => 'Brauzerdan tutıru',
 'timezoneregion-africa' => 'Afrika',
@@ -1098,7 +1073,6 @@ Ul $1 {{PLURAL:$1|xäreftän}} kübräk bulırğa tieş tügel.',
 'recentchanges-feed-description' => 'Bu ağımda soñğı üzgärtülärne küzätü.',
 'recentchanges-label-newpage' => 'Bu üzgärtü belän yaña bit tözelde',
 'recentchanges-label-minor' => 'Bu keçe üzgärtü',
-'rcnote' => 'Asta $4 $5 waqıtınna soñğı {{PLURAL:$2|1|$2}} kön eçendä bulğan soñğı {{PLURAL:$1|1|$1}} üzgärtmä kürsätelä:',
 'rcnotefrom' => "Astaraq '''$2''' başlap ('''$1''' qädär) üzgärtülär kürsätelgän.",
 'rclistfrom' => '$1 başlap yaña üzgärtülärne kürsät',
 'rcshowhideminor' => 'keçe üzgärtülärne $1',
@@ -1393,8 +1367,6 @@ Sez näticälärne köndälek töre, qullanuçı iseme (xäref zurlığın istä
 'allpagesfrom' => 'Moña başlanuçı bitlärne çığaru:',
 'allpagesto' => 'Monda çığarunı tuqtatu:',
 'allarticles' => 'Barlıq bitlär',
-'allpagesprev' => 'Elekke',
-'allpagesnext' => 'Kiläse',
 'allpagessubmit' => 'Başqaru',
 'allpagesprefix' => 'Alquşımçalı bitlärne kürsätü:',
 
@@ -1588,7 +1560,6 @@ Beterelüdän soñ şundıy uq isemle bit tözelgän bulsa, torğızılğan üzg
 'undeletebtn' => 'Torğızu',
 'undeletelink' => 'qaraw/torğızu',
 'undeleteviewlink' => 'qaraw',
-'undeletereset' => 'Taşlatu',
 'undeleteinvert' => 'Kiresen saylaw',
 'undeletecomment' => 'Säbäp:',
 'undelete-search-submit' => 'Ezläw',
@@ -1640,12 +1611,10 @@ $1',
 
 # Block/unblock
 'blockip' => 'Qullanuçını tıyu',
-'blockip-title' => 'Qullanuçını tıyu',
 'blockip-legend' => 'Qullanuçını tıyu',
 'ipadressorusername' => 'IP adresı yäki qullanuçı iseme:',
 'ipbexpiry' => 'Betä:',
 'ipbreason' => 'Säbäp:',
-'ipbreasonotherlist' => 'Başqa säbäp',
 'ipbreason-dropdown' => '* Qısunıñ ğädättäge säbäpläre
 ** Yalğan mäğlümat kertü
 ** Bitlärneñ eçtälegen sörtü
@@ -1658,7 +1627,6 @@ $1',
 'ipbsubmit' => 'Bu qullanuçını tıyu',
 'ipbother' => 'Başqa waqıt:',
 'ipboptions' => '2 säğät:2 hours,1 kön:1 day,3 kön:3 days,1 atna:1 week,2 atna:2 weeks,1 ay:1 month,3ay:3 months,6 ay:6 months,1 yıl:1 year,çiklänmägän:infinite',
-'ipbotheroption' => 'başqa',
 'badipaddress' => 'Yalğış IP adresı',
 'blockipsuccesssub' => 'Tıyu başqarılğan',
 'ipb-unblock-addr' => '$1 qullanuçısın tıyudan azat itü',
@@ -1714,7 +1682,6 @@ Däwam itkänçe, barlıq näticälärne añlawığıznı tağın ber qat uylağ
 
 Bu oçraqlarda sezgä bitlärne üz qulığız belän küçerergä yäki quşarğa turı kiler.",
 'movearticle' => 'Bitne küçerü:',
-'movenologin' => 'Kermädegez',
 'movenotallowed' => 'Sezdä mäqälälärne küçerü xoquqları yuq.',
 'newtitle' => 'Yaña başlam:',
 'move-watch' => 'Bu bitne küzätü',
@@ -1725,8 +1692,6 @@ Bu oçraqlarda sezgä bitlärne üz qulığız belän küçerergä yäki quşar
 'movepage-moved-noredirect' => 'Yünältüne yasaw tıyıldı',
 'articleexists' => 'Mondıy isemle bit bar inde, yäisä mondıy isem röxsät itelmi.
 Zinhar başqa isem saylağız.',
-'talkexists' => "'''Bitneñ üze küçerelde, ämma bäxäs bite küçerelmi qaldı, çönki şundıy isemle bit bar inde. Zinhar, alarnı üzegez quşığız.'''",
-'movedto' => 'küçerelgän:',
 'movetalk' => 'Bäyläneşle bäxäs biten küçerü',
 'movelogpage' => 'Küçerü köndälege',
 'movereason' => 'Säbäp:',
@@ -2032,15 +1997,10 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
 'exif-gpsspeed-k' => 'km/säğ',
 'exif-gpsspeed-m' => 'milya/säğ',
 
-# External editor support
-'edit-externally' => 'Bu faylnı tışqı quşımtanı qullanıp üzgärtü',
-'edit-externally-help' => '(tulıraq mäğlümat öçen [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] biten qarağız)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'barlıq',
 'namespacesall' => 'barlıq',
 'monthsall' => 'barlıq',
-'limitall' => 'barlıq',
 
 # Delete conflict
 'recreate' => 'Yañadan yasaw',
index e12c76d..32d79bd 100644 (file)
@@ -14,6 +14,9 @@
 
 $fallback = 'fr';
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $messages = array(
 # Dates
 'sunday' => 'tāpati',
@@ -74,7 +77,6 @@ $messages = array(
 # Cologne Blue skin
 'qbedit' => 'Fa’ahuru ’ē',
 'qbmyoptions' => 'ta’u ’api',
-'qbspecialpages' => 'Te mau ’api ta’a ’ē',
 
 'help' => 'Tauturu',
 'search' => 'Roromā’imi',
@@ -89,7 +91,7 @@ $messages = array(
 'jumptonavigation' => 'arata’i',
 'jumptosearch' => 'haere',
 
-# 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).
+# 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).
 'aboutsite' => 'Nō {{SITENAME}}',
 'aboutpage' => 'Project:Nō',
 'edithelp' => 'Tauturu',
@@ -97,8 +99,6 @@ $messages = array(
 'mainpage-description' => 'Fa’ari’ira’a',
 'portal' => 'Fare auhoa',
 
-'newmessageslink' => 'Te mau poro’i ’āpī',
-'newmessagesdifflink' => 'fa’ahuru-’ē-ra’a hope’a',
 'editsection' => 'fa’ahuru ’ē',
 'editold' => 'fa’ahuru ’ē',
 
@@ -115,9 +115,6 @@ $messages = array(
 # Revision feed
 'history-feed-title' => 'Parau tuatāpapa',
 
-# Search results
-'powersearch' => 'Roromā’imi',
-
 # Preferences page
 'prefs-rc' => 'Te mau fa’ahuru-’ē-ra’a ’āpī',
 'prefs-files' => 'Te mau putu’ite',
@@ -163,9 +160,6 @@ $messages = array(
 # Tooltip help for the actions
 'tooltip-search' => 'Roromā’imi {{SITENAME}}',
 
-# Special:FilePath
-'filepath-page' => 'Putu’ite:',
-
 # Special:SpecialPages
 'specialpages' => 'Te mau ’api ta’a ’ē',
 
index a708c9d..bc08686 100644 (file)
@@ -73,7 +73,7 @@ $magicWords = array(
        'pagename'                  => array( '1', 'АРЫННЫҢАДЫ', 'НАЗВАНИЕ_СТРАНИЦЫ', 'PAGENAME' ),
        'namespace'                 => array( '1', 'АТТАРДЕЛГЕМИ', 'ПРОСТРАНСТВО_ИМЁН', 'NAMESPACE' ),
        'namespacee'                => array( '1', 'АТТАРДЕЛГЕМИ2', 'ПРОСТРАНСТВО_ИМЁН_2', 'NAMESPACEE' ),
-       'namespacenumber'           => array( '1', 'АТТАРДЕЛГЕМИНИҢСАНЫ', 'NAMESPACENUMBER' ),
+       'namespacenumber'           => array( '1', 'АТТАРДЕЛГЕМИНИҢСАНЫ', 'НОМЕР_ПРОСТРАНСТВА_ИМЁН', 'NAMESPACENUMBER' ),
        'talkspace'                 => array( '1', 'ЧУГААДЕЛГЕМИ', 'ПРОСТРАНСТВО_ОБСУЖДЕНИЙ', 'TALKSPACE' ),
        'talkspacee'                => array( '1', 'ЧУГААДЕЛГЕМИ2', 'ПРОСТРАНСТВО_ОБСУЖДЕНИЙ_2', 'TALKSPACEE' ),
        'img_right'                 => array( '1', 'оң', 'справа', 'right' ),
@@ -90,9 +90,9 @@ $magicWords = array(
        'tag'                       => array( '0', 'демдек', 'метка', 'тег', 'тэг', 'tag' ),
        'hiddencat'                 => array( '1', '__ЧАЖЫТ_АҢГЫЛАЛ__', '__СКРЫТАЯ_КАТЕГОРИЯ__', '__HIDDENCAT__' ),
        'pagesincategory'           => array( '1', '__АҢГЫЛАЛ_АРЫННАРЫ__', 'СТРАНИЦ_В_КАТЕГОРИИ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesincategory_all'       => array( '0', 'шупту', 'all' ),
-       'pagesincategory_pages'     => array( '0', 'арыннар', 'pages' ),
-       'pagesincategory_files'     => array( '0', 'файлдар', 'files' ),
+       'pagesincategory_all'       => array( '0', 'шупту', 'все', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'арыннар', 'страницы', 'pages' ),
+       'pagesincategory_files'     => array( '0', 'файлдар', 'файлы', 'files' ),
 );
 
 $bookstoreList = array(
@@ -117,7 +117,7 @@ $messages = array(
 'tog-showtoolbar' => 'Өскертир херекселдерни көргүзер (JavaScript)',
 'tog-editondblclick' => 'Арынны өскертирде ийи катап базар (JavaScript)',
 'tog-editsection' => '[өскертири] деп холбаалар-биле section editing enable.',
-'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|хүн|хүн}} ишти)',
+'tog-rememberpassword' => 'Мени бо компьютерге сактыры ($1 {{PLURAL:$1|1=хүн|хүн}} ишти)',
 'tog-watchcreations' => 'Мээң чаяан арыннарымны хайгаарал даңзымче немээри.',
 'tog-watchdefault' => 'Мээң өскерткен арыннарымны хайгаарал даңзымче немээри.',
 'tog-watchmoves' => 'Мээң катап адаан арыннарымны хайгаарал даңзымче немээри.',
@@ -194,12 +194,12 @@ $messages = array(
 'subcategories' => 'Адаккы бөлүктер',
 'category-media-header' => '«$1» деп бөлүкте файлдар',
 'category-empty' => "''Амгы бо бөлүкте медиа база арыннар чок.''",
-'hidden-categories' => '{{PLURAL:$1|Чажыт аңгылал|Чажыт аңгылалдар}}',
+'hidden-categories' => '{{PLURAL:$1|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 файлын көргүскен.}}',
+'category-subcat-count' => '{{PLURAL:$2|1=Бо аңгылал чүгле дараазында аңгыламныг.|Бо аңгылалдың шупту $2 аңгыламнарның аразындан дараазында $1 аңгыламны көргүскен.}}',
+'category-subcat-count-limited' => 'Бо аңгылал {{PLURAL:$1|1=бир|$1}} аңгыламныг.',
+'category-article-count' => '{{PLURAL:$2|1=Бо аңгылал чүгле дараазында арыннарлыг.|Бо аңгылалдың шупту $2 арыннарының аразындан дараазында $1 арынын көргүскен.}}',
+'category-file-count' => '{{PLURAL:$2|1=Бо бөлүк чүгле чаңгыс файлдыг.|Бо бөлүктүң ниити $2 файлының $1 файлын көргүскен.}}',
 'listingcontinuesabbrev' => '(уланчы)',
 'noindex-category' => 'Индекстелбес арынар',
 'broken-file-category' => 'Ажылдавайн турар файл-шөлүлгелиг арыннар',
@@ -221,7 +221,6 @@ $messages = array(
 'qbedit' => 'Өскертири',
 'qbpageoptions' => 'Бо арын',
 'qbmyoptions' => 'Мээң арыннарым',
-'qbspecialpages' => 'Тускай арыннар',
 'faq' => 'Бо-ла салыр айтырыглар (БлСА)',
 'faqpage' => 'Project:БлСА',
 
@@ -261,8 +260,8 @@ $messages = array(
 'create-this-page' => 'Бо арынны чогаадыры',
 'delete' => 'Ыраары',
 'deletethispage' => 'Бо арынны ырадыры',
-'undelete_short' => '$1 {{PLURAL:$1|эдигни|эдиглерни}} катап үндүрери',
-'viewdeleted_short' => '{{PLURAL:$1|Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
+'undelete_short' => '$1 {{PLURAL:$1|1=эдигни|эдиглерни}} катап үндүрери',
+'viewdeleted_short' => '{{PLURAL:$1|1=Бир ыраткан өскерлиишкинни|$1 ыраткан өскерлиишкиннерни}} көөрү',
 'protect' => 'Камгалаары',
 'protect_change' => 'өскертири',
 'protectthispage' => 'Бо арынны камгалаар',
@@ -386,7 +385,7 @@ $messages = array(
 'yourname' => 'Aжыглакчының ады',
 'yourpassword' => 'Чажыт сөс',
 'yourpasswordagain' => 'Чажыт сөзүңерни катап бижиңер:',
-'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|хүн|хүн}}ге чедир)',
+'remembermypassword' => 'Мени бо компьютерде сактып алыры ($1 {{PLURAL:$1|1=хүн|хүн}}ге чедир)',
 'login' => 'Кирери',
 'nav-login-createaccount' => 'Кирери / бүрүткел бижикти чогаадыры',
 'loginprompt' => '{{SITENAME}} сайтче кирерде, баштай «cookies»-ти чөшпээрээр ужурлуг Силер.',
@@ -420,7 +419,7 @@ $messages = array(
 'php-mail-error-unknown' => 'PHP-ниң mail() ажыл-чорудулгазында билбес алдаг бар.',
 
 # Change password dialog
-'resetpass' => 'Чажыт сөстү өскертири',
+'changepassword' => 'Чажыт сөстү өскертири',
 'resetpass_text' => '<!-- Маңаа сөзүглелди немерелээри -->',
 'resetpass_header' => 'Чажыт сөстү катап чогаадып кылыры',
 'oldpassword' => 'Эгри чажыт сөзүңер:',
@@ -512,11 +511,11 @@ Please check if you want to create/edit this page.',
 'editingcomment' => '«$1» деп арынны өскертип турар (чаа салбыр)',
 'yourtext' => 'Силерниң сөзүглелиңер',
 'yourdiff' => 'Ылгалдар',
-'templatesused' => 'Бо арында ажыглаан {{PLURAL:$1|Майык|Майыктар}}:',
+'templatesused' => 'Бо арында ажыглаан {{PLURAL:$1|1=Майык|Майыктар}}:',
 'template-protected' => '(камгалаан)',
 'template-semiprotected' => '(четпес камгалаан)',
 'hiddencategories' => 'Бо арын {{PLURAL:$1|$1 чажыт бөлүкке}} хамааржыр:',
-'permissionserrorstext-withaction' => "Мында «'''$2'''» силерниң эргеңер чок, {{PLURAL:$1|чылдагааны|чылдагааннары}}:",
+'permissionserrorstext-withaction' => "Мында «'''$2'''» силерниң эргеңер чок, {{PLURAL:$1|1=чылдагааны|чылдагааннары}}:",
 'recreate-moveddeleted-warn' => "'''Кичээңейлиг. Ооң мурнунда казыттынган арынны катап тургузар деп тур Силер.'''
 
 Ол арынны катап тургузары шынап-ла чугула бе, боданыңар.
@@ -574,8 +573,6 @@ Please check if you want to create/edit this page.',
 'revdelete-radio-unset' => 'Чок',
 'revdelete-log' => 'Чылдагаан:',
 'revdel-restore' => 'көскүзүн өскертири',
-'revdel-restore-deleted' => 'ыраткан үндүрерилер',
-'revdel-restore-visible' => 'көскү үндүрерилер',
 'pagehist' => 'Арынның төөгүзү',
 'revdelete-otherreason' => 'Өске/немелде чылдагаан:',
 'revdelete-reasonotherlist' => 'Өске чылдагаан',
@@ -598,8 +595,8 @@ Please check if you want to create/edit this page.',
 'searchresults-title' => '«$1» деп диле',
 'prevn' => 'эрткен {{PLURAL:$1|$1}}',
 'nextn' => 'дараазында {{PLURAL:$1|$1}}',
-'prevn-title' => 'Эрткен $1 {{PLURAL:$1|бижик|бижик}}',
-'nextn-title' => 'Дараазында $1 {{PLURAL:$1|бижик|бижик}}',
+'prevn-title' => 'Эрткен $1 {{PLURAL:$1|1=бижик|бижик}}',
+'nextn-title' => 'Дараазында $1 {{PLURAL:$1|1=бижик|бижик}}',
 'shown-title' => 'Арынга $1 {{PLURAL:$1|түңнел}} көргүзер',
 'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) көөрү',
 'searchmenu-exists' => "'''Бо викиде \"[[:\$1]]\" деп арын бар.'''",
@@ -615,7 +612,7 @@ Please check if you want to create/edit this page.',
 '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-category-size' => '{{PLURAL:$1|1=1 кежигүүн|$1 кежигүүн}} ({{PLURAL:$2|1=1 аңгылам|$2 аңгылам}}, {{PLURAL:$3|1=1 файл|$3 файл}})',
 'search-redirect' => '($1-н шиглелге)',
 'search-section' => '(«$1» деп салбыр)',
 'search-suggest' => 'Силер «$1» деп бодадыңар чадавас',
@@ -623,9 +620,8 @@ Please check if you want to create/edit this page.',
 'searcheverything-enable' => 'Шупту аттар делгемнеринден дилээри',
 'searchrelated' => 'холбаалыг',
 'searchall' => 'шупту',
-'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|'''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
+'showingresultsheader' => "«'''$4'''» дилээниниң {{PLURAL:$5|1='''$3''' одуругдан '''$1''' түңнели|'''$3''' одуругдан '''$1—$2''' түңнелдери}}",
 'search-nonefound' => 'Айыткан негелдениң түңнели чок',
-'powersearch' => 'Advanced search',
 'powersearch-ns' => 'Аттар делгемнеринден дилээри:',
 'powersearch-toggleall' => 'Шупту',
 
@@ -633,7 +629,6 @@ Please check if you want to create/edit this page.',
 'preferences' => 'Шилилгелер',
 'mypreferences' => 'Шилилгелер',
 'prefs-edits' => 'Өскерлиишкиннериңерниң саны:',
-'changepassword' => 'Чажыт сөстү өскертири',
 'prefs-skin' => 'Кеш',
 'skin-preview' => 'Чижеглей көөрү',
 'prefs-datetime' => 'Ай, хүн болгаш шак',
@@ -668,13 +663,13 @@ Please check if you want to create/edit this page.',
 'youremail' => 'Э-чагааңар:',
 'username' => 'Aжыглакчының ады:',
 'uid' => 'Ажыглакчынын саны (ID):',
-'prefs-memberingroups' => 'Силерниң {{PLURAL:$1|бөлүү|бөлүктери}}:',
+'prefs-memberingroups' => 'Силерниң {{PLURAL:$1|1=бөлүү|бөлүктери}}:',
 'prefs-registration' => 'Кажан даңзылатканыл:',
 'yourrealname' => 'Шын адыңар:',
 'yourlanguage' => 'Дылыңар:',
 'yournick' => 'Шола ат:',
 'badsiglength' => 'Хол үжүүңер эмин узун.
-It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
+It must not be more than $1 {{PLURAL:$1|1=character|characters}} long.',
 'yourgender' => 'Эр-кызы:',
 'gender-male' => 'Эр',
 'gender-female' => 'Кыс',
@@ -750,7 +745,6 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'recentchanges-label-bot' => 'Бо эдилгени робот күүсеткен.',
 'recentchanges-label-unpatrolled' => 'Бо өскертилге истетинмээн (патрульдаттынмаан)',
 'recentchanges-legend-newpage' => '$1 — чаа арын',
-'rcnote' => "$4 $5 өйде соңгу '''$2''' {{PLURAL:$2|хонуктуң}} {{PLURAL:$1|сөөлгү '''$1''' '''өскерилгелери'''}} .",
 'rcnotefrom' => 'Адаанда <strong>$2</strong> тура (<strong>$1</strong> чедир) өскертилгелерни санаан.',
 'rclistfrom' => '$1 тура чаа өскерилгелерни көргүзер',
 'rcshowhideminor' => 'Бичии өскерлиишкиннерни $1',
@@ -831,7 +825,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'filehist-filesize' => 'Файл хемчээли',
 'filehist-comment' => 'Тайылбыр',
 'imagelinks' => 'Файлдың ажыглаашкыны',
-'linkstoimage' => 'Бердинген файлче дараазында {{PLURAL:$1|арын шөлүдүп тур|$1 арын шөлүдүп тур}}:',
+'linkstoimage' => 'Бердинген файлче дараазында {{PLURAL:$1|1=арын шөлүдүп тур|$1 арын шөлүдүп тур}}:',
 'nolinkstoimage' => 'Бердинген файлче шөлүп турар арыннар чок.',
 'sharedupload-desc-here' => 'Моон $1 алган файл өске төлевилелдерге ажыглаттынып болур.
 Ооң [$2 допчу тайылбыр арынындан] медеглели адаанда бердинген.',
@@ -930,8 +924,6 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'nextpage' => 'Дараазында арын ($1)',
 'prevpage' => 'Эрткен арын ($1)',
 'allarticles' => 'Шупту арыннар',
-'allpagesprev' => 'Пертинде',
-'allpagesnext' => 'Дараазында',
 'allpagessubmit' => 'Күүcедири',
 
 # Special:Categories
@@ -1061,8 +1053,8 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'isredirect' => 'шиглидер арын',
 'istemplate' => 'киирткен арыннар',
 'isimage' => 'файлдың холбаазы',
-'whatlinkshere-prev' => '{{PLURAL:$1|эрткен|эрткен $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|дараазында|дараазында $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=эрткен|эрткен $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|1=дараазында|дараазында $1}}',
 'whatlinkshere-links' => '← холбаалар',
 'whatlinkshere-hideredirs' => '$1-че шиглиглер',
 'whatlinkshere-hidetrans' => '$1 даңзылааннар',
@@ -1073,16 +1065,12 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 # Block/unblock
 'block' => 'Ажыглакчыны кызыгаарлаары',
 'blockip' => 'Ажыглакчыны кызыгаарлаары',
-'blockip-title' => 'Ажыглакчыны кызыгаарлаары',
 'blockip-legend' => 'Ажыглакчыны кызыгаарлаары',
 'ipadressorusername' => 'ИП-адрес азы aжыглaкчының aды',
 'ipbreason' => 'Чылдагаан:',
-'ipbreasonotherlist' => 'Өске чылдагаан',
 'ipbsubmit' => 'Бо ажыглакчыны кызыгаарлаары',
 'ipbother' => 'Өске шак:',
 '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',
-'ipbotheroption' => 'өске',
-'ipbotherreason' => 'Өске/немелде чылдагаан:',
 'badipaddress' => 'Багай ИП-адрес',
 'ipblocklist' => 'Kызыгаарлаттынган ажыглакчылар',
 'blocklist-reason' => 'Чылдагаан',
@@ -1218,7 +1206,7 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'widthheightpage' => '$1x$2, $3 {{PLURAL:$3|арын}}',
 'file-info' => 'файлдың хемчээли: $1, MIME хевири: $2',
 'file-info-size' => '$1 × $2 пиксел, Файл хемчээли: $3, MIME хевири: $4',
-'file-info-size-pages' => '$1 × $2 пикcелдер, файл хемчээли: $3, MIME хевири: $4, $5 {{PLURAL:$5|арын|арын}}',
+'file-info-size-pages' => '$1 × $2 пикcелдер, файл хемчээли: $3, MIME хевири: $4, $5 {{PLURAL:$5|1=арын|арын}}',
 'file-nohires' => 'Оон улуг хевири чок',
 'svg-long-desc' => 'SVG файл, $1 x $2 пиксел, файл хемчээли: $3',
 'show-big-image' => 'Улуг чурумал',
@@ -1231,10 +1219,10 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'ilsubmit' => 'Дилээр',
 
 # Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'seconds' => '{{PLURAL: $1|$1 секунда|$1 секунда}}',
-'minutes' => '{{PLURAL: $1|$1 минут|$1 минут}}',
-'hours' => '{{PLURAL:$1|$1 шак|$1 шак}}',
-'days' => '{{PLURAL:$1|$1 хүн|$1 хүн}}',
+'seconds' => '{{PLURAL:$1|$1 секунда|$1 секунда}}',
+'minutes' => '{{PLURAL:$1|$1 минут|$1 минут}}',
+'hours' => '{{PLURAL:$1|1=$1 шак|$1 шак}}',
+'days' => '{{PLURAL:$1|1=$1 хүн|$1 хүн}}',
 'ago' => '$1 бурунгаар',
 
 # Bad image list
@@ -1284,15 +1272,10 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'exif-iimcategory-spo' => 'Спорт',
 'exif-iimcategory-wea' => 'Агаар',
 
-# External editor support
-'edit-externally' => 'Бо файлды даштыкы капсырылга-биле эдер',
-'edit-externally-help' => '(Улаштыр тодарадырда бо [https://www.mediawiki.org/wiki/Manual:External_editors кыстып алыр саавырны] көрүңер)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'шупту',
 'namespacesall' => 'шупту',
 'monthsall' => 'шупту',
-'limitall' => 'шупту',
 
 # Delete conflict
 'recreate' => 'Катап чогаадыры',
@@ -1374,7 +1357,6 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 
 # Special:ComparePages
 'comparepages' => 'Арыннарны дөмейлеп көөрү',
-'compare-selector' => 'Арынның ылгалдарын дөмейлеп көөрү',
 'compare-page1' => 'Арын 1',
 'compare-page2' => 'Арын 2',
 'compare-submit' => 'Дөмейлээри',
@@ -1392,13 +1374,13 @@ It must not be more than $1 {{PLURAL:$1|character|characters}} long.',
 'feedback-cancel' => 'Соксаары',
 
 # 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-seconds' => '$1 {{PLURAL:$1|секунда|секунда}}',
+'duration-minutes' => '$1 {{PLURAL:$1|минут|минут}}',
+'duration-hours' => '$1 {{PLURAL:$1|шак|шак}}',
+'duration-days' => '$1 {{PLURAL:$1|1=хүн|хүн}}',
+'duration-weeks' => '$1 {{PLURAL:$1|чеди-хонук|чеди-хонук}}',
+'duration-years' => '$1 {{PLURAL:$1|чыл|чыл}}',
+'duration-decades' => '$1 {{PLURAL:$1|1=он хонук|он хонук}}',
+'duration-centuries' => '$1 {{PLURAL:$1|1=чүс чыл|чүс чыл}}',
 
 );
index 9900e24..46c76dc 100644 (file)
@@ -63,7 +63,7 @@ $messages = array(
 'tog-editsectiononrightclick' => 'Cекциосты шырлэн бур кнопкаез заголовок вылын зӥбиськыкуз тупатыны (JavaScript кулэ)',
 'tog-showtoc' => 'Пуштросэз возьматоно (2-лэсь трос заголовокъем бамъёс понна)',
 'tog-rememberpassword' => 'Мынам пыроннимме та браузерлэн тодаз возьыны ($1 яке $1-лэсь ӧжытгес нунал ӵоже гинэ)',
-'tog-watchcreations' => 'Ð\91амÑ\8aÑ\91Ñ\81Ñ\82Ñ\8b, ÐºÑ\83дÑ\8aÑ\91Ñ\81Ñ\82Ñ\8dÑ\81 Ð¼Ð¾Ð½ ÐºÑ\8bлдÑ\8bÑ\82Ó¥Ñ\81Ñ\8cко, Ð¼Ñ\8bнам Ñ\87аклкан списокам пыртыны',
+'tog-watchcreations' => 'Ð\9cÑ\8bнÑ\8dÑ\81Ñ\8cÑ\82Ñ\8bм ÐºÑ\8bлдÑ\8bÑ\82Ñ\8dм Ð±Ð°Ð¼Ñ\8aÑ\91Ñ\81ме Ð½Ð¾ Ó\9dÑ\83Ñ\82кам Ñ\84айлÑ\8aÑ\91Ñ\81ме Ñ\87аклан списокам пыртыны',
 'tog-watchdefault' => 'Бамъёсты, кудъёстэс мон тупатӥсько, мынам чаклкан списокам пыртыны',
 'tog-watchmoves' => 'Бамъёсты, кудъёстэс мон мукет интые выжтӥсько, мынам чаклкан списокам пыртыны',
 'tog-watchdeletion' => 'Бамъёсты, кудъёстэс мон ӵушисько, мынам чаклкан списоке пыртыны',
@@ -135,7 +135,7 @@ $messages = array(
 'dec' => 'тст',
 
 # Categories related messages
-'pagecategories' => '$1 категория',
+'pagecategories' => '{{PLURAL:$1|Категория|Категориос}}',
 'category_header' => '«$1» категориысь бамъёс',
 'subcategories' => 'Подкатегориос',
 'category-media-header' => '«$1» категориысь файлъёс',
@@ -161,7 +161,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbpageoptions' => 'Бамлэн настройкаосыз',
-'qbspecialpages' => 'Ваньмыз панельёс',
 'faq' => 'Юан-веран',
 'faqpage' => 'Project:Юан-веран',
 
@@ -196,7 +195,7 @@ $messages = array(
 'jumptonavigation' => 'навигация',
 'jumptosearch' => 'утчан',
 
-# 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).
+# 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).
 'currentevents' => 'Выль иворъёс',
 'currentevents-url' => 'Project:Выль иворъёс',
 'helppage' => 'Help:Валэктон',
@@ -208,6 +207,8 @@ $messages = array(
 'retrievedfrom' => '«$1»-лэсь басьтэмын',
 'editsection' => 'тупатыны',
 'editsectionhint' => '$1 секциез тупатоно',
+'showtoc' => 'возьматоно',
+'hidetoc' => 'ватоно',
 'site-rss-feed' => '$1 — RSS-лента',
 'site-atom-feed' => '$1 — Atom-лента',
 'red-link-title' => '$1 (со бам ӧвӧл на)',
@@ -220,9 +221,10 @@ $messages = array(
 'viewsource' => 'Кодзэ учкыны',
 
 # Login and logout pages
-'login' => 'Ð\92икипедие Ð¿ырон',
+'login' => 'Ð\9fырон',
 'nav-login-createaccount' => 'Нимдэс вераны / Регистрациез ортчытыны',
 'userlogin' => 'Регистрациез ортчытыны яке Википедие пырыны',
+'userloginnocreate' => 'Пырон',
 'logout' => 'Кошкыны',
 'userlogout' => 'Кошкыны',
 'createaccount' => 'выль вики-авторлэн регистрациез',
@@ -241,8 +243,6 @@ $messages = array(
 
 # Search results
 'searchresults' => 'Шедьтэмын',
-'searchresulttext' => 'Проектлэн бамъёстӥз утчан сярысь тыро-быдогес тодэмды потӥз ке, учке [[{{MediaWiki:Helppage}}|«Юан-веран» люкетэз]].',
-'searchhelp-url' => 'Help:Валэктон',
 'search-result-size' => '$1 кыл({{PLURAL:$2|1 word|$2 words}})',
 
 # Preferences page
@@ -272,7 +272,7 @@ $messages = array(
 'nbytes' => '$1 байт',
 'move' => 'Мукет интые выжтыны',
 
-# E-mail user
+# Email user
 'emailmessage' => 'Ивортон:',
 
 # Watchlist
@@ -306,6 +306,9 @@ $messages = array(
 'tooltip-t-whatlinkshere' => 'Ваньмыз бамъёс, кудъёсаз та бамлы линксы вань',
 'tooltip-t-specialpages' => 'Специальной бамъёслэн списоксы',
 
+# Info page
+'pageinfo-toolboxlink' => 'Бам сярысь тодэтъёс',
+
 # Special:SpecialPages
 'specialpages' => 'Ваньмыз панельёс',
 
index 96f14b9..1a2e627 100644 (file)
@@ -54,7 +54,7 @@ $messages = array(
 'tog-hidepatrolled' => 'يېقىنقى ئۆزگەرتىشتە كۆزەتكەن تەھرىرنى يوشۇر',
 'tog-newpageshidepatrolled' => 'يېڭى بەت تىزىملىكىدە كۆزەتكەن تەھرىرنى يوشۇر',
 'tog-extendwatchlist' => 'كۈچەيتىلگەن كۆزەت تىزىملىكىدە يېقىنقى ئۆزگەرتىشنىلا كۆرسەتمەي بەلكى ھەممە ئۆزگەرتىشنى كۆرسەت',
-'tog-usenewrc' => 'بەت گۇرۇپپىلىنىشىغا ئاساسەن يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىمى (JavaScript زۆرۈر)',
+'tog-usenewrc' => 'يېقىنقى ئۆزگەرتىش ۋە كۆزەت تىزىملىلىگىدىكى بەتلەر ئۆزگىرىشىگە ئاساسەن گۇرۇپپىلا',
 'tog-numberheadings' => 'ماۋزۇغا ئۆزلۈكىدىن تەرتىپ نومۇرى قوش',
 'tog-showtoolbar' => 'تەھرىر قورال بالداقنى كۆرسەت',
 'tog-editondblclick' => 'قوش چەككەندە بەت تەھرىرلە',
@@ -69,7 +69,6 @@ $messages = array(
 'tog-minordefault' => 'ھەممە تەھرىرلەشنى ئازراقلا تەھرىرگە تەڭشە',
 'tog-previewontop' => 'تەھرىر رامكىسىنىڭ ئۈستىدە ئالدىن كۆزىتىشنى كۆرسەت',
 'tog-previewonfirst' => 'تۇنجى قېتىم تەھرىرلىگەندە ئالدىن كۆزىتىشنى كۆرسەت',
-'tog-nocache' => 'توركۆرگۈ بەت غەملەشنى چەكلە',
 'tog-enotifwatchlistpages' => 'كۆزەت تىزىملىكىمدىكى بەت ۋە ھۆججەت ئۆزگەرگەندە ئېلخەت يوللا',
 'tog-enotifusertalkpages' => 'مۇنازىرە بېتىم ئۆزگەرگەندە ئېلخەت يوللا',
 'tog-enotifminoredits' => 'بەت ۋە ھۆججەت ئازراقلا تەھرىرلەنگەندىمۇ ئېلخەت يوللا',
@@ -90,14 +89,16 @@ $messages = array(
 'tog-showhiddencats' => 'يوشۇرۇن تۈرلەرنى كۆرسەت',
 'tog-noconvertlink' => 'ئۇلانما ماۋزۇ ئالماشتۇرۇشنى چەكلە',
 'tog-norollbackdiff' => 'قايتۇرۇشنى ئىجرا قىلغاندىن كېيىن پەرقنى كۆرسەتمە',
+'tog-useeditwarning' => 'بىر تەھرىرلىگەن بەتنى ساقلىماي چېكىنگەندە مېنى ئەسكەرت',
+'tog-prefershttps' => 'تىزىمغا كىرگەندە دائىم بىخەتەر ئۇلىنىشنى ئىشلەت',
 
 'underline-always' => 'دائىم',
 'underline-never' => 'ھەرگىز',
-'underline-default' => 'تېرە ياكى توركۆرگۈ كۆڭۈلدىكى',
+'underline-default' => 'تېرە ياكى توركۆرگۈ كۆڭۈلدىكىسى',
 
 # Font style option in Special:Preferences
 'editfont-style' => 'تەھرىرلەش رايونىنىڭ خەت نۇسخا ئۇسلۇبى:',
-'editfont-default' => 'توركۆرگۈ كۆڭۈلدىكى',
+'editfont-default' => 'توركۆرگۈ كۆڭۈلدىكىسى',
 'editfont-monospace' => 'تەڭ كەڭلىكتىكى خەت نۇسخا',
 'editfont-sansserif' => 'Sans-serif خەت نۇسخا',
 'editfont-serif' => 'Serif خەت نۇسخا',
@@ -192,7 +193,7 @@ $messages = array(
 'cancel' => 'ۋاز كەچ',
 'moredotdotdot' => 'تەپسىلىي…',
 'morenotlisted' => 'بۇ تىزىملىك تولۇق ئەمەس.',
-'mypage' => 'بەتىم',
+'mypage' => 'بەت',
 'mytalk' => 'مۇنازىرە بېتىم',
 'anontalk' => 'بۇ IP نىڭ مۇنازىرە بېتى',
 'navigation' => 'يولباشچى',
@@ -204,12 +205,11 @@ $messages = array(
 'qbedit' => 'تەھرىر',
 'qbpageoptions' => 'بۇ بەت',
 'qbmyoptions' => 'بەتلەرىم',
-'qbspecialpages' => 'ئالاھىدە بەتلەر',
 'faq' => 'كۆپ كۆرۈلىدىغان مەسىلىلەر',
 'faqpage' => 'Project:كۆپ كۆرۈلىدىغان مەسىلىلەر',
 
 # Vector skin
-'vector-action-addsection' => 'Ù\8aÛ\90Ú­Ù\89 Ø¨Ø§Ø´ ØªÛ\90Ù\85ا Ù\82Ù\88Ø´',
+'vector-action-addsection' => 'يېڭى تېما قوش',
 'vector-action-delete' => 'ئۆچۈر',
 'vector-action-move' => 'يۆتكە',
 'vector-action-protect' => 'قوغدا',
@@ -294,19 +294,19 @@ $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).
 'aboutsite' => '{{SITENAME}} ھەققىدە',
 'aboutpage' => 'Project:ھەققىدە',
-'copyright' => 'بÛ\87 Ø¨Û\90Ù\83Û\95تتÙ\89Ù\83Ù\89 Ø¨Ø§Ø±Ù\84Ù\89Ù\82 تېكست مەزمۇنى $1 ماددىسىغا ئاساسەن تەمىنلىنىدۇ.',
-'copyrightpage' => '{{ns:project}}:نەشر ئۇچۇرى',
+'copyright' => 'خاتÙ\89رÙ\89Ù\84Û\95Ù\86Ú¯Û\95Ù\86دÙ\89Ù\86 Ø¨Ø§Ø´Ù\82ا تېكست مەزمۇنى $1 ماددىسىغا ئاساسەن تەمىنلىنىدۇ.',
+'copyrightpage' => '{{ns:project}}:نەشر ھوقۇقى',
 'currentevents' => 'نۆۋەتتىكى ھادىسە',
 'currentevents-url' => 'Project:نۆۋەتتىكى ھادىسە',
-'disclaimers' => 'جاÛ\8bابÙ\83ارÙ\84Ù\89Ù\82Ù\86Ù\89 Ù\83Û\95Ú\86Û\88رÛ\88Ù\85 Ù\82Ù\89Ù\84Ù\89Ø´ Ø¨Ø§Ù\8aاÙ\86اتÙ\89',
-'disclaimerpage' => 'Project:ئادەتتىكى جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
+'disclaimers' => 'ئاگاھÙ\84اÙ\86دÛ\87رÛ\87Ø´Ù\84ار',
+'disclaimerpage' => 'Project:ئومۇمىي ئاگاھلاندۇرۇش',
 'edithelp' => 'تەھرىرلەش ياردىمى',
 'helppage' => 'Help:مەزمۇنلار',
 'mainpage' => 'باش بەت',
 'mainpage-description' => 'باش بەت',
 'policy-url' => 'Project:تاكتىكا',
-'portal' => 'ئىجتىمائى رايون باش بېتى',
-'portal-url' => 'Project:ئىجتىمائى رايون باش بېتى',
+'portal' => 'ئىجتىمائىي رايون',
+'portal-url' => 'Project:ئىجتىمائى رايون',
 'privacy' => 'شەخسىيەت تاكتىكىسى',
 'privacypage' => 'Project:شەخسىيەت تاكتىكىسى',
 
@@ -327,9 +327,9 @@ $1',
 'youhavenewmessages' => 'سىزدە $1 ($2) بار.',
 'youhavenewmessagesfromusers' => 'سىزنىڭ {{PLURAL:$3|باشقا ئىشلەتكۈچى|$3 ئىشلەتكۈچى}} $1  ($2)ڭىز بار.',
 'youhavenewmessagesmanyusers' => 'سىزنىڭ نۇرغۇن ئىشلەتكۈچىدىن كەلگەن $1  ($2) بار.',
-'newmessageslinkplural' => '{{PLURAL:$1|بىر يېڭى |يېڭى ئۇچۇر}}ئۇچۇر',
-'newmessagesdifflinkplural' => 'ئاخىرقى $1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}',
-'youhavenewmessagesmulti' => '$1 يېڭى ئۇچۇرىڭىز بار',
+'newmessageslinkplural' => '{{PLURAL:$1|بىر يېڭى ئۇچۇر|999=يېڭى ئۇچۇرلار}}',
+'newmessagesdifflinkplural' => 'ئاخىرقى {{PLURAL:$1|ئۆزگەرتىش|999=ئۆزگەرتىشلەر}}',
+'youhavenewmessagesmulti' => '$1 دە يېڭى ئۇچۇرىڭىز بار',
 'editsection' => 'تەھرىر',
 'editold' => 'تەھرىر',
 'viewsourceold' => 'مەنبەنى كۆرسەت',
@@ -385,6 +385,10 @@ URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلان
 # General errors
 'error' => 'خاتالىق',
 'databaseerror' => 'ساندان خاتالىقى',
+'databaseerror-text' => 'بىر سانداق ئوقۇش خاتالىقى يۈز بەردى.
+بۇ بەلكىم يۇمشاق دېتال ئىچىدىكى خاتالىق بولۇشى مۇمكىن.',
+'databaseerror-textcl' => 'بىر سانداق ئوقۇش خاتالىقى يۈز بەردى.',
+'databaseerror-query' => 'سوراق: $1',
 'databaseerror-function' => 'فۇنكىسىيە: $1',
 'databaseerror-error' => 'خاتا: $1',
 'laggedslavemode' => 'ئاگاھلاندۇرۇش: بەت يېقىنقى يېڭىلاشنى ئۆز ئىچىگە ئالمىغان بولۇشى مۇمكىن.',
@@ -422,6 +426,7 @@ URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلان
 'cannotdelete-title' => '"$1" بەتنى ئۆچۈرەلمەيدۇ',
 'delete-hook-aborted' => 'ئۆچۈرۈش ئىلمەك تەرىپىدىن چېكىندۈرۈلدى
 ئۇ سەۋەبىنى تەمىنلىمىدى.',
+'no-null-revision' => '"$1" بېتى ئۈچۈن يېڭىدىن قۇرۇق ئۆزگەرتىش قىلالمىدى',
 'badtitle' => 'خاتا ماۋزۇ',
 'badtitletext' => 'ئىلتىماس قىلىنغان بەتنىڭ ماۋزۇسى ئىناۋەتسىز، مەۋجۇد ئەمەس، تىل ھالقىغان ياكى wiki ئۇلانمىسىدىن ھالقىغان ماۋزۇ خاتالىقى.
 ئۇ بىر ياكى بىر قانچە ماۋزۇغا ئىشلەتكىلى بولمايدىغان ھەرپنى ئۆز ئىچىگە ئالغان.',
@@ -430,11 +435,6 @@ URL نى خاتا كىرگۈزۈپ قالدىڭىز ياكى خاتا ئۇلان
 'querypage-no-updates' => 'نۆۋەتتە مەزكۇر بەتنى يېڭىلاش چەكلەندى.
 
 بۇ جايدىكى سانلىق مەلۇماتنى دەرھال يېڭىلىغىلى بولمايدۇ.',
-'wrong_wfQuery_params' => 'خاتا پارامېتىر  wfQuery()<br />غا يوللاندى
-
-فونكسىيە: $1<br />
-
-سۈرۈشتۈرۈش: $2',
 'viewsource' => 'مەنبەنى كۆرسەت',
 'viewsource-title' => '$1 نىڭ ئەسلى كودىنى كۆرسەت',
 'actionthrottled' => 'مەشغۇلات چەكلەندى',
@@ -457,6 +457,10 @@ $2',
 'namespaceprotected' => "سىزنىڭ '''$1''' ئات بوشلۇقىدىكى بەتنى تەھرىرلەش ھوقۇقىڭىز يوق.",
 'customcssprotected' => 'بۇ CSS بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
 'customjsprotected' => 'بۇ JavaScript بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
+'mycustomcssprotected' => 'بۇ CSS بېتىنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
+'mycustomjsprotected' => 'بۇ JavaScript بېتىنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
+'myprivateinfoprotected' => 'شەخسىي ئۇچۇرىڭىزنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
+'mypreferencesprotected' => 'مايىللىقىڭىزنى تەھرىرلەيدىغان ھوقۇقىڭىز يوق.',
 'ns-specialprotected' => 'ئالاھىدە بەتنى تەھرىرلىگىلى بولمايدۇ.',
 'titleprotected' => 'بۇ ماۋزۇ قايتا قۇرۇشتىن ساقلىنىش ئۈچۈن [[User:$1|$1]] تەرىپىدىن قوغدالغان.
 
@@ -467,7 +471,8 @@ $2',
 'invalidtitle-knownnamespace' => 'ئات بوشلۇقى "$2" ۋە تېكىست "$3" نى ئىشلەتكەن ئىناۋەتسىز ماۋزۇ',
 'invalidtitle-unknownnamespace' => 'يوچۇن ئات بوشلۇقى نومۇرى $1 ۋە تېكىست "$2" نى ئىشلەتكەن ئىناۋەتسىز ماۋزۇ',
 'exception-nologin' => 'تىزىمغا كىرمىدى',
-'exception-nologin-text' => 'بۇ بەت ياكى مەشغۇلات مەزكۇر ۋىكىغا تىزىمغا كىرىشىڭىزنى تەلەپ قىلىدۇ.',
+'exception-nologin-text' => 'بۇ بەت ياكى مەشغۇلاتقا ئېرىشىش ئۈچۈن [[Special:Userlogin|تىزىمغا كىرىڭ]]',
+'exception-nologin-text-manual' => 'بۇ بەت ياكى مەشغۇلاتقا ئېرىشىش ئۈچۈن $1.',
 
 # Virus scanner
 'virus-badscanner' => "بۇزۇلغان سەپلىمە: نامەلۇم ۋىرۇسخور: ''$1''",
@@ -477,13 +482,12 @@ $2',
 # Login and logout pages
 'logouttext' => "'''ھازىر تىزىمدىن چىقتىڭىز.'''
 
-سىز نامسىز ھالەتتە {{SITENAME}} نى ئىشلىتەلەيسىز ياكى ئوخشاش ۋە ياكى ئوخشاش بولمىغان ئىشلەتكۈچى سالاھىيىتىدە <span class='plainlinks'>[$1 تىزىمغا كىر]</span>ەلەيسىز.
 دىققەت، بەزى بەتلەر توركۆرگۈنىڭ غەملىكى تازىلانمىغۇچە يەنىلا سىزنى تىزىمغا كىرگەن ھالەتتە كۆرسىتىشى مۇمكىن.",
 'welcomeuser' => '$1، خۇش كەپسىز!',
 'welcomecreation-msg' => 'ھېساباتىڭىز قۇرۇلدى.
 
 [[Special:Preferences|{{SITENAME}} تەڭشىكىڭىزنى تەڭشەشنى ئۇنتۇپ قالماڭ]].',
-'yourname' => 'ئىشلەتكۈچى ئاتى:',
+'yourname' => 'ئىشلەتكۈچى نامى:',
 'userlogin-yourname' => 'ئىشلەتكۈچى نامى',
 'userlogin-yourname-ph' => 'ئىشلەتكۈچى نامىڭىزنى كىرگۈزۈڭ',
 'createacct-another-username-ph' => 'ئىشلەتكۈچى نامىنى كىرگۈزۈڭ',
@@ -491,14 +495,14 @@ $2',
 'userlogin-yourpassword' => 'پارول',
 'userlogin-yourpassword-ph' => 'پارولىڭىزنى كىرگۈزۈڭ',
 'createacct-yourpassword-ph' => 'پارول كىرگۈزۈڭ',
-'yourpasswordagain' => 'ئاچقۇچنى قايتا بەسىڭ:',
+'yourpasswordagain' => 'پارولنى قايتا كىرگۈزۈڭ:',
 'createacct-yourpasswordagain' => 'پارولنى مۇقىملاشتۇرۇڭ',
 'createacct-yourpasswordagain-ph' => 'پارولنى قايتا كىرگۈزۈڭ',
 'remembermypassword' => 'بۇ كومپيۇتېردا كىرگىنىمنى ئەستە ساقلا(ئەڭ ئۇزۇن بولغاندا $1 {{PLURAL:$1|كۈن|كۈن}})',
 'userlogin-remembermypassword' => 'مېنى ئەستە ساقلا',
 'userlogin-signwithsecure' => 'بىخەتەر ئۇلىنىشنى ئىشلەت',
-'yourdomainname' => 'دائىرە ئاتىڭىز:',
-'password-change-forbidden' => 'بۇ ۋىكىدىكى ئىمنى ئۆزگەرتەلمەيسىز.',
+'yourdomainname' => 'دائىرە نامىڭىز:',
+'password-change-forbidden' => 'بۇ ۋىكىدىكى پارولنى ئۆزگەرتەلمەيسىز.',
 'externaldberror' => 'بۇ سانداننى دەلىللەش خاتالىقى ياكى سىرتقى ھېساباتىڭىزنى يېڭىلاشنى چەكلىگەنلىكتىن بولغان بولۇشى مۇمكىن.',
 'login' => 'تىزىمغا كىر',
 'nav-login-createaccount' => 'تىزىمغا كىر/ھېسابات قۇر',
@@ -509,7 +513,7 @@ $2',
 'userlogout' => 'تىزىمدىن چىق',
 'notloggedin' => 'تىزىمغا كىرمىدى',
 'userlogin-noaccount' => 'ھېساباتىڭىز يوقمۇ؟',
-'userlogin-joinproject' => '{{SITENAME}} قا ئەزا بولۇش',
+'userlogin-joinproject' => '{{SITENAME}} قا ئەزا بولۇڭ',
 'nologin' => "ھېساباتىڭىز يوقمۇ؟ '''$1'''.",
 'nologinlink' => 'ھېساباتتىن بىرنى قۇر',
 'createaccount' => 'ھېسابات قۇر',
@@ -527,7 +531,7 @@ $2',
 'createacct-emailoptional' => 'ئېلخەت ئادرېسى (ئىختىيارى)',
 'createacct-email-ph' => 'ئېلخەت ئادرېسىڭىزنى كىرگۈزۈڭ',
 'createacct-another-email-ph' => 'ئېلخەت ئادرېسى كىرگۈزۈڭ',
-'createaccountmail' => 'ۋاقىتلىق ئىختىيارىي بىر ئېمنى ئىشلىتىدۇ ھەمدە تۆۋەندىكى بەلگىلەنگەن تورخەت ئادرېسىغا ئەۋەتىدۇ',
+'createaccountmail' => 'ۋاقىتلىق ئىختىيارىي پارولنى ئىشلەت ھەمدە بەلگىلەنگەن ئېلېكتىرونلۇق خەت ئادرېسىغا ئەۋەت',
 'createacct-realname' => 'ھەقىقى ئىسمىڭىز (ئىختىيارى)',
 'createaccountreason' => 'سەۋەب:',
 'createacct-reason' => 'سەۋەبى',
@@ -539,6 +543,7 @@ $2',
 'createacct-benefit-heading' => '{{SITENAME}} سىزگە ئوخشاش كىشىلەر تەرىپىدىن قۇرۇلغان.',
 'createacct-benefit-body1' => '{{PLURAL:$1|قېتىم}} تەھرىرلەنگەن',
 'createacct-benefit-body2' => '{{PLURAL:$1|بەت}}',
+'createacct-benefit-body3' => 'يېقىنقى {{PLURAL:$1|تۆھپىكار|تۆھپىكارلار}}',
 'badretype' => 'سىز كىرگۈزگەن پارول ماس كەلمىدى.',
 'userexists' => 'كىرگۈزگەن ئىشلەتكۈچى ئاتى ئىشلىتىلىۋاتىدۇ.
 باشقا ئاتنى تاللاڭ.',
@@ -560,15 +565,15 @@ $2',
 'nocookiesfornew' => 'ئىشلەتكۈچى ھېساباتى قۇرۇلمىدى، ئۇنىڭ مەنبەسىنى جەزملىيەلمەيمىز.
 cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتنى قايتا يۈكلەپ ئاندىن قايتا سىناڭ.',
 'nocookiesforlogin' => '{{int:nocookieslogin}}',
-'noname' => 'سىز تېخى ئىناۋەتلىك ئىشلەتكۈچى ئاتىنى بەلگىلىمىدىڭىز.',
+'noname' => 'سىز تېخى ئىناۋەتلىك ئىشلەتكۈچى نامىنى بەلگىلىمىدىڭىز.',
 'loginsuccesstitle' => 'تىزىمغا كىرىش مۇۋەپپەقىيەتلىك',
 'loginsuccess' => "'''سىز {{SITENAME}} غا \"\$1\" سالاھىيىتىدە كىردىڭىز.'''",
-'nosuchuser' => '"$1" ئاتلىق ئىشلەتكۈچىنى تاپالمىدى.
-ئىشلەتكۈچى ئاتىنى تەكشۈرۈڭ.
+'nosuchuser' => '"$1" ناملىق ئىشلەتكۈچىنى تاپالمىدى.
+ئىشلەتكۈچى نامىنى تەكشۈرۈڭ.
 ياكى [[Special:UserLogin/signup|يېڭى ھېسابات قۇرۇڭ]].',
-'nosuchusershort' => '"$1" ئاتلىق ئىشلەتكۈچى يوق.
+'nosuchusershort' => '"$1" ناملىق ئىشلەتكۈچى يوق.
 كىرگۈزگىنىڭىزنى تەكشۈرۈڭ.',
-'nouserspecified' => 'ئىشلەتكۈچى ئاتىدىن بىرنى بەلگىلەڭ.',
+'nouserspecified' => 'ئىشلەتكۈچى نامىدىن بىرنى بەلگىلەڭ.',
 'login-userblocked' => 'بۇ ئىشلەتكۈچى چەكلەنگەن. تىزىمغا كىرىشكە يول قويۇلمايدۇ.',
 'wrongpassword' => 'كىرگۈزگەن پارول خاتا.
 قايتا سىناڭ.',
@@ -577,51 +582,53 @@ cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتن
 'passwordtooshort' => 'ئىم ئاز دېگەندە {{PLURAL:$1|1 ھەرپ|$1 ھەرپ}} بولۇشى لازىم.',
 'password-name-match' => 'پارولىڭىز ئىشلەتكۈچى نامىڭىزدىن پەرقلىنىشى لازىم.',
 'password-login-forbidden' => 'بۇ ئىشلەتكۈچى نامى ۋە پارول چەكلەنگەن.',
-'mailmypassword' => 'Ù\8aÛ\90Ú­Ù\89 Ø¦Ù\89Ù\85Ù\86Ù\89 Ø¦Û\90Ø®Û\95تÙ\83Û\95 Ø¦Û\95Û\8bÛ\95ت',
+'mailmypassword' => 'پارÙ\88Ù\84Ù\86Ù\89 Ø¦Û\95سÙ\84Ù\89Ú¯Û\95 Ù\82اÙ\8aتÛ\87رÙ\85اÙ\82',
 'passwordremindertitle' => '{{SITENAME}} ئۈچۈن يېڭى ۋاقىتلىق پارول',
 'passwordremindertext' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1)
-{{SITENAME}} بېكەتنىڭ يېڭى ئىم ($4) نى ئىلتىماس قىلدى .
"$2" ئىشلەتكۈچىنىڭ يېڭى ۋاقىتلىق ئىمنى "$3" غا تەڭشىدى.
-ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى ئىمدىن بىرنى تاللاڭ.
-سىز بەلگىلىگەن يېڭى ئىم  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ.
+{{SITENAME}} ($4) بېكەت ئۈچۈن يېڭى پارول ئىلتىماس قىلدى .
ئىشلەتكۈچى "$2" نىڭ يېڭى ۋاقىتلىق پارولى "$3" غا تەڭشەلدى.
+ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.
+سىز بەلگىلىگەن يېڭى پارولنىڭ {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ.
 
-ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن ئىم ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز،
+ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز،
 
-بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا ئىمنى ئىشلىتىۋېرىڭ.',
+بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.',
 'noemail' => '"$1" ئىشلەتكۈچىنىڭ ئېلخەت ئادرېسى خاتىرىلەنمەپتۇ.',
 'noemailcreate' => 'ئىناۋەتلىك ئېلخەت ئادرېسىدىن بىرنى تەمىنلىشىڭىز لازىم.',
-'passwordsent' => 'يېڭى ئىم "$1" ئىشلەتكۈچى تىزىملاتقاندا قالدۇرغان ئېلخەتكە يوللاندى..
+'passwordsent' => 'يېڭى پارول "$1" ئىشلەتكۈچى تىزىملاتقاندا قالدۇرغان ئېلخەتكە يوللاندى..
 ئېلخەتنى كۆرۈپ ئاندىن تىزىمغا كىرىڭ.',
-'blocked-mailpassword' => 'IP ئادرېسىڭىز تەھرىرلەشتىن چەكلەنگەن ھالەتتە، بىخەتەرلىك سەۋەبىدىن ئىم ئەسلىگە كەلتۈرۈش ئىقتىدارى چەكلەندى.',
-'eauthentsent' => 'جەزملەش ئېلخىتى تەۋسىيە قىلىنغان ئادرېسقا ئەۋەتىلدى .
+'blocked-mailpassword' => 'IP ئادرېسىڭىز تەھرىرلەشتىن چەكلەنگەن ھالەتتە، بىخەتەرلىك سەۋەبىدىن پارول ئەسلىگە كەلتۈرۈش ئىقتىدارى چەكلەندى.',
+'eauthentsent' => 'جەزملەش ئېلخېتى بېكىتىلگەن ئېلخەت ئادرېسىغا ئەۋەتىلدى .
 بۇ ھېساباتقا باشقا ئېلخەت ئەۋەتىشتىن ئىلگىرى، سىز ئالدى بىلەن بۇ خەتتىكى يېتەكچىگە ئاساسەن ئېلخەت ئادرېسىنىڭ ھەقىقىي ئىكەنلىكىنى جەزملىشىڭىز لازىم.',
-'throttled-mailpassword' => 'ئىم ئەسكەرتىش {{PLURAL:$1|سائەت|$1 سائەت}} ئىچىدە يوللىنىدۇ.
+'throttled-mailpassword' => 'پارول يېڭىلاش ئېلخېتى {{PLURAL:$1|سائەت|$1 سائەت}} ئىچىدە يوللىنىدۇ.
 بىخەتەرلىك يۈزىسىدىن ھەر {{PLURAL:$1|سائەت|$1 سائەت}}تە پەقەت بىرلا ئېلخەت ئەسكەرتىشى ئەۋەتىدۇ.',
 'mailerror' => 'ئېلخەت يوللىغاندا خاتالىق كۆرۈلدى:$1',
 'acct_creation_throttle_hit' => 'Wiki ئىشلىتىدىغان زىيارەتچى IP ئادرېسىڭىزنى ئىشلىتىپ {{PLURAL:$1|1 ھېسابات|$1 ھېسابات}} قۇردى.
 مۇشۇ پەيتتە يەنە ھېسابات قۇرالمايسىز.',
 'emailauthenticated' => 'ئېلخەت ئادرېسىڭىز $2 سائەت $3 دە دەلىللەندى.',
 'emailnotauthenticated' => 'ئېلخەت ئادرېسىڭىز تېخى دەلىللەنمىدى.
ªÛ\86Û\8bÛ\95Ù\86دÙ\89Ù\83Ù\89 Ø¦Ù\89Ù\82تÙ\89دارÙ\89 ھېچقانداق ئېلخەت ئەۋەتمەيدۇ.',
¨Û\87Ù\86داÙ\82 Ø¦Û\95Ú¾Û\8bاÙ\84دا ھېچقانداق ئېلخەت ئەۋەتمەيدۇ.',
 'noemailprefs' => 'بۇ ئىقتىدارنى ئىشلىتىش ئۈچۈن مايىللىق تەڭشىكىڭىزدە ئېلخەت ئادرېسى بەلگىلەڭ.',
 'emailconfirmlink' => 'ئېلخەت مەنزىلىڭىزنى جەزملەڭ',
 'invalidemailaddress' => 'ئېلخەت ئادرېس فورماتى خاتا.
 توغرا ئېلخەت ئادرېسى كىرگۈزۈڭ ياكى بۇ جاينى بوش قالدۇرۇڭ.',
 'cannotchangeemail' => 'بۇ wiki ھېساباتى تورخەت ئادرېسىنى ئۆزگەرتىشكە يول قويمايدۇ.',
-'emaildisabled' => 'بÛ\87 ØªÙ\88رتÛ\87را ئېلخەت يوللىيالمايدۇ.',
+'emaildisabled' => 'بÛ\87 Ø¨Û\90Ù\83Û\95ت ئېلخەت يوللىيالمايدۇ.',
 'accountcreated' => 'ھېسابات قۇرۇلدى',
-'accountcreatedtext' => '$1 نىڭ ھېساباتى قۇرۇلدى.',
+'accountcreatedtext' => '[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|مۇنازىرە]]) ئۈچۈن ئىشلەتكۈچى ھېساباتى قۇرۇلدى.',
 'createaccount-title' => '{{SITENAME}} دا يېڭى ھېسابات قۇر',
-'createaccount-text' => 'بەزىلەر {{SITENAME}} دا ئېلخەت ئادرېسىڭىزنى ئىشلىتىپ، "$2" ئاتلىق ($4) يېڭى ھېسابات قۇردى، ئىم "$3".
-سىز تىزىمغا كىرىپ ئىم ئۆزگەرتىڭ.
+'createaccount-text' => 'بەزىلەر {{SITENAME}} دا ئېلخەت ئادرېسىڭىزنى ئىشلىتىپ، "$2" نامىدىكى ($4) يېڭى ھېسابات قۇردى، پارول "$3".
+سىز تىزىمغا كىرىپ پارولنى ئۆزگەرتىڭ.
 
 ئەگەر بۇ ھېسابات خاتا قۇرۇلغان بولسا بۇ ئۇچۇرغا پەرۋا قىلماڭ.',
-'usernamehasherror' => 'ئىشلەتكۈچى ئاتىدا مۇكەممەللىك كود ھەرپلىرى بولماسلىقى لازىم',
-'login-throttled' => 'سىز بۇ ھېساباتنىڭ ئىمنى كۆپ قېتىم سىنىدىڭىز.
-سەل تەخىر قىلىپ، ئاندىن قايتا سىناڭ.',
+'usernamehasherror' => 'ئىشلەتكۈچى نامىدا چاچما كود ھەرپلىرى بولماسلىقى لازىم',
+'login-throttled' => 'سىز بۇ ھېساباتتا تىزىمغا كىرىشنى كۆپ قېتىم سىنىدىڭىز.
+$1 ساقلاپ، ئاندىن قايتا سىناڭ.',
 'login-abort-generic' => 'تىزىمغا كىرەلمىدىڭىز - چېكىندى',
 'loginlanguagelabel' => 'تىل: $1',
 'suspicious-userlogout' => 'تىزىمدىن چىقىش ئىلتىماسىڭىز رەت قىلىندى، چۈنكى ئۇ بەلكىم بۇزۇلغان توركۆرگۈ ياكى غەملەك ۋاكالەتچىسى يوللىغان بولۇشى مۇمكىن.',
+'createacct-another-realname-tip' => 'ھەقىقىي ئىسمىڭىز ئىختىيارى.
+ئەگەر تەمىنلەشنى تاللىسىڭىز، ئۇ سىزنىڭ تۆھپىڭىزنىڭ ئىمزاسى بولىدۇ.',
 
 # Email sending
 'php-mail-error-unknown' => 'PHP نىڭ mail() فونكسىيەسىدىكى يوچۇن خاتالىق',
@@ -629,7 +636,7 @@ cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتن
 'user-mail-no-body' => 'بوش ياكى مەزمۇنى قىسقا مۇۋاپىق بولمىغان تورخەت ئەۋەتىشنى سىنىدى.',
 
 # Change password dialog
-'resetpass' => 'پارولنى ئۆزگەرتىش',
+'changepassword' => 'پارولنى ئۆزگەرتىش',
 'resetpass_announce' => 'سىز ۋاقىتلىق ئېلخەت جەزملەش كودىدا تىزىمغا كىرگەن.
 تىزىمغا كىرىشنى تاماملاشتا، بۇ جايدا يېڭى ئىم بەلگىلىشىڭىز لازىم:',
 'resetpass_text' => '<!-- بۇ يەرگە تېكست قوشۇڭ -->',
@@ -638,49 +645,50 @@ cookies نى قوزغاتقانلىقىڭىزنى جەزملەڭ، بۇ بەتن
 'newpassword' => 'يېڭى پارول:',
 'retypenew' => 'يېڭى پارولنى قايتا كىرگۈزۈڭ:',
 'resetpass_submit' => 'پارول بەلگىلەپ تىزىمغا كىرىڭ',
-'changepassword-success' => 'سىز ئىمنى مۇۋەپپەقىيەتلىك ئۆزگەرتتىڭىز!
- تىزىمغا كىرىۋاتىسىز…',
-'resetpass_forbidden' => 'ئىمنى ئۆزگەرتەلمىدى',
+'changepassword-success' => 'پارولىڭىز ئوڭۇشلۇق ئۆزگەرتىلدى!',
+'resetpass_forbidden' => 'پارولنى ئۆزگەرتەلمىدى',
 'resetpass-no-info' => 'سىز تىزىمغا كىرگەندىن كېيىن بىۋاسىتە بۇ بەتكە كىرىشىڭىز لازىم.',
 'resetpass-submit-loggedin' => 'پارولنى ئۆزگەرتىش',
 'resetpass-submit-cancel' => 'ۋاز كەچ',
-'resetpass-wrong-oldpass' => 'ۋاقىتلىق ياكى نۆۋەتتىكى ئىم ئىناۋەتسىز.
+'resetpass-wrong-oldpass' => 'ۋاقىتلىق ياكى نۆۋەتتىكى پارول ئىناۋەتسىز.
 
-ئىمنى ئاللىبۇرۇن ئۆزگەرتىپ بولدىڭىز ياكى يېڭى ۋاقىتلىق ئىم ئىلتىماس قىلدىڭىز.',
+پارولنى ئاللىبۇرۇن ئۆزگەرتىپ بولدىڭىز ياكى يېڭى ۋاقىتلىق پارول ئىلتىماس قىلدىڭىز.',
 'resetpass-temp-password' => 'ۋاقىتلىق پارول:',
+'resetpass-abort-generic' => 'پارول ئۆزگەرتىش بىر كېڭەيمە تەرىپىدىن بىكار قىلىندى.',
 
 # Special:PasswordReset
-'passwordreset' => 'ئىمنى ئەسلىگە قايتۇرماق',
-'passwordreset-legend' => 'ئىمنى ئەسلىگە قايتۇرماق',
-'passwordreset-disabled' => 'بۇ ۋىكىدا ئىمنى ئەسلىگە قايتۇرۇش چەكلەنگەن.',
-'passwordreset-username' => 'ئىشلەتكۈچى ئاتى:',
+'passwordreset' => 'پارولنى ئەسلىگە قايتۇرماق',
+'passwordreset-text-one' => 'ۋاقىتلىق پارولنى ئېلخەت ئارقىلىق قوبۇل قىلىش ئۈچۈن بۇ رامكىنى تولدۇرۇڭ.',
+'passwordreset-text-many' => '{{PLURAL:$1|ئېلخەت ئارقىلىق ۋاقىتلىق پارول قوبۇل قىلىش ئۈچۈن بۆلەكتىن بىرنى تولدۇرۇڭ.}}',
+'passwordreset-legend' => 'پارولنى ئەسلىگە قايتۇر',
+'passwordreset-disabled' => 'بۇ ۋىكىدا پارولنى ئەسلىگە قايتۇرۇش چەكلەنگەن.',
+'passwordreset-emaildisabled' => 'بۇ ۋىكىدا ئېلخەت ئىقتىدار چەكلەنگەن.',
+'passwordreset-username' => 'ئىشلەتكۈچى نامى:',
 'passwordreset-domain' => 'دائىرە:',
 'passwordreset-capture' => 'ھاسىل قىلىنغان ئېلخەتنى كۆرسىتەمدۇ؟',
-'passwordreset-capture-help' => 'ئەگەر بۇ رامكا تاللانسا، ئېلخەت (ۋاقىتلىق ئىمنى ئۆز ئىچىگە ئالىدۇ) كۆرسىتىپ ئىشلەتكۈچىگە يوللايدۇ.',
+'passwordreset-capture-help' => 'ئەگەر بۇ رامكا تاللانسا، ئېلخەت (ۋاقىتلىق پارولنى ئۆز ئىچىگە ئالىدۇ) كۆرسىتىپ ئىشلەتكۈچىگە يوللايدۇ.',
 'passwordreset-email' => 'ئېلخەت ئادرېس',
 'passwordreset-emailtitle' => '{{SITENAME}} دىكى ھېسابات تەپسىلاتى',
-'passwordreset-emailtext-ip' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1)
-{{SITENAME}} ($4) دىكى ھېسابات تەپسىلات ئەسكەرتىشىنى ئىلتىماس قىلدى .
-تۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}ى مۇشۇ ئېلخەتكە باغلانغان:
+'passwordreset-emailtext-ip' => 'باشقىلار (بەلكىم سىز، IP ئادرېسى $1) {{SITENAME}} ($4) دىكى پارولنى قايتا بېكىتىشنى ئىلتىماس قىلدى. تۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}ى مۇشۇ ئېلخەتكە باغلانغان:
 
 $2
 
-{{PLURAL:$3|بۇ ۋاقىتلىق ئىم|بۇ ۋاقىتلىق ئىم}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى ئىمدىن بىرنى تاللاڭ.
-سىز بەلگىلىگەن يېڭى ئىم  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن ئىم ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
-بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا ئىمنى ئىشلىتىۋېرىڭ.',
-'passwordreset-emailtext-user' => '{{SITENAME}} دىكى $1 ئىشلەتكۈچى ھېسابات تەپسىلات ئەسكەرتىشىنى ئىلتىماس قىلدى .
+{{PLURAL:$3|بۇ ۋاقىتلىق پارول|بۇ ۋاقىتلىق پارول}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.
+سىز بەلگىلىگەن يېڭى پارول  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
+بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.',
+'passwordreset-emailtext-user' => '{{SITENAME}} دىكى ئىشلەتكۈچى $1 بېكەت {{SITENAME}} ($4) دىكى پارولىڭىزنى قايتا بېكىتىشنى ئىلتىماس قىلدى .
 تۆۋەندىكى ئىشلەتكۈچىنىڭ {{PLURAL:$3|ھېسابات|ھېسابات}}($4)ى مۇشۇ ئېلخەتكە باغلانغان:
 
 $2
 
-{{PLURAL:$3|بۇ ۋاقىتلىق ئىم|بۇ ۋاقىتلىق ئىم}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى ئىمدىن بىرنى تاللاڭ.
-سىز بەلگىلىگەن يېڭى ئىم  {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن ئىم ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
-بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا ئىمنى ئىشلىتىۋېرىڭ.',
-'passwordreset-emailelement' => 'ئىشلەتكۈچى ئاتى: $1
-ۋاقىتلىق ئىم: $2',
-'passwordreset-emailsent' => 'ئەسكەرتىش ئېلخەت يوللاندى.',
-'passwordreset-emailsent-capture' => 'ئەسكەرتىش ئېلخەت يوللاندى، تۆۋەندە كۆرسىتىلىدۇ.',
-'passwordreset-emailerror-capture' => 'ھاسىل قىلىنغان ئەسكەرتىش ئېلخەت تۆۋەندە كۆرسىتىلگەندەك ئەمما يوللىيالمىدى: $1',
+{{PLURAL:$3|بۇ ۋاقىتلىق پارول|بۇ ۋاقىتلىق پارول}} {{PLURAL:$5|بىر كۈن|$5 كۈن}}دە ۋاقتى ئۆتىدۇ. ئەگەر بۇ مەشغۇلاتنى سىز ئىلتىماس قىلغان بولسىڭىز، دەرھال تىزىمغا كىرىپ يېڭى پارولدىن بىرنى تاللاڭ.
+سىز بەلگىلىگەن يېڭى پارول {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ. ئەگەر باشقىلار ئىلتىماس قىلغان بولسا ياكى ئۆزىڭىز بەلگىلىگەن پارول ئېسىڭىزگە كېلىپ ئۇنى ئۆزگەرتمىسىڭىز، 
+بۇ ئۇچۇرغا پەرۋا قىلماي ئۆزىڭىزنىڭ كونا پارولىنى ئىشلىتىۋېرىڭ.',
+'passwordreset-emailelement' => 'ئىشلەتكۈچى نامى: $1
+ۋاقىتلىق پارول: $2',
+'passwordreset-emailsent' => 'پارولنى قايتا بېكىتىش ئېلخېتى يوللاندى.',
+'passwordreset-emailsent-capture' => 'پارولنى قايتا بېكىتىش ئېلخېتى يوللاندى، تۆۋەندە كۆرسىتىلىدۇ.',
+'passwordreset-emailerror-capture' => 'ھاسىل قىلىنغان پارولنى قايتا بېكىتىش ئېلخېتى تۆۋەندە كۆرسىتىلگەندەك ئەمما ئۇنى {{GENDER:$2|ئىشلەتكۈچى}}گە يوللىيالمىدى: $1',
 
 # Special:ChangeEmail
 'changeemail' => 'ئېلخەت ئادرېس ئۆزگەرت',
@@ -694,6 +702,16 @@ $2
 'changeemail-submit' => 'ئېلخەت ئۆزگەرت',
 'changeemail-cancel' => 'ۋاز كەچ',
 
+# Special:ResetTokens
+'resettokens' => 'ئاچقۇچلۇق بەلگىلەرنى قايتا بېكىتمەك',
+'resettokens-no-tokens' => 'قايتا بېكىتىدىغان ھېچقانداق ئاچقۇچلۇق بەلگە يوق.',
+'resettokens-legend' => 'ئاچقۇچلۇق بەلگىلەرنى قايتا بېكىتمەك',
+'resettokens-tokens' => 'ئاچقۇچلۇق بەلگىلەر:',
+'resettokens-token-label' => '$1 (نۆۋەتتىكى قىممىتى: $2)',
+'resettokens-watchlist-token' => '[[Special:Watchlist|كۆزىتىش تىزىملىكىڭىزدىكى بەتلەر ئۆزگىرىشى]] (Atom/RSS) تور مەنبەسىنىڭ ئاچقۇچلۇق بەلگىسى',
+'resettokens-done' => 'ئاچقۇچلۇق بەلگىلەر قايتا بېكىتىلدى.',
+'resettokens-resetbutton' => 'تاللانغان ئاچقۇچلۇق بەلگىلەرنى قايتا بېكىت',
+
 # Edit page toolbar
 'bold_sample' => 'توم خەت',
 'bold_tip' => 'توم خەت',
@@ -769,7 +787,7 @@ $2
 'nosuchsectiontext' => 'سىز تەھرىرلىمەكچى بولغان ئابزاس مەۋجۇد ئەمەس.
 سىز ئۇ بەتنى كۆرۈۋاتقاندا يۆتكەلگەن ياكى ئوچۈرۈلگەن بولۇشى مۇمكىن.',
 'loginreqtitle' => 'تىزىمغا كىرىڭ',
-'loginreqlink' => 'تىزىمغا كىر',
+'loginreqlink' => 'تىزىمغا كىرىڭ',
 'loginreqpagetext' => '$1 بولغاندىلا ئاندىن باشقا بەتلەرنى كۆرەلەيسىز.',
 'accmailtitle' => 'پارول يوللاندى.',
 'accmailtext' => "[[User talk:$1|$1]] ئىختىيارىي قۇرۇلغان ئىم  $2 غا يوللاندى.
@@ -870,7 +888,7 @@ $2
 'cascadeprotectedwarning' => "'''ئاگاھلاندۇرۇش:''' بۇ بەت قۇلۇپلانغان، پەقەت باشقۇرغۇچى ھوقۇقى بار ئىشلەتكۈچىلەرلا تەھرىرلىيەلەيدۇ، چۈنكى بۇ بەت تۆۋەندىكى زەنجىرسىمان قۇلۇپلانغان {{PLURAL:$1| بىر| بىر قانچە}} بەتنى ئۆز ئىچىگە ئالىدۇ:",
 'titleprotectedwarning' => "'''ئاگاھلاندۇرۇش: بۇ بەت قۇلۇپلانغان شۇڭلاشقا [[Special:ListGroupRights|بەلگىلەنگەن ھوقۇق]] بولغاندىلا قۇرغىلى بولىدۇ.'''
 پايدىلىنىش ئۈچۈن تۆۋەندە يېقىنقى خاتىرە تەمىنلەندى:",
-'templatesused' => 'بۇ بەتتە ئىشلىتىلگەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
+'templatesused' => 'بۇ بەتتە ئىشلىتىلگەن {{PLURAL:$1| قېلىپ| قېلىپلار}}:',
 'templatesusedpreview' => 'بۇ قېتىملىق ئالدىن كۆزىتىشكە ئىشلەتكەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
 'templatesusedsection' => 'بۇ ئابزاستا ئىشلەتكەن {{PLURAL:$1| قېلىپ| قېلىپ}}:',
 'template-protected' => '(قوغدالغان)',
@@ -883,7 +901,7 @@ $2
 'nocreate-loggedin' => 'يېڭى بەت قۇرۇش ھوقۇقىڭىز يوق.',
 'sectioneditnotsupported-title' => 'ئابزاس تەھرىرلەشنى قوللىمايدۇ',
 'sectioneditnotsupported-text' => 'بۇ بەت ئابزاس تەھرىرلەشنى قوللىمايدۇ.',
-'permissionserrors' => 'ھوقۇق چېكى خاتالىقى',
+'permissionserrors' => 'ئىجازەت خاتالىقى',
 'permissionserrorstext' => 'تۆۋەندىكى {{PLURAL:$1|سەۋەپ|سەۋەپ}}: تۈپەيلىدىن تۆۋەندىكى مەشغۇلاتنى ئېلىپ بېرىش ھوقۇقىڭىز يوق.',
 'permissionserrorstext-withaction' => '{{PLURAL:$1|سەۋەب|سەۋەبلەر}} تۈپەيلىدىن $2 مەشغۇلاتى ئېلىپ بېرىش ھوقۇقىڭىز يوق:',
 'recreate-moveddeleted-warn' => "'''ئاگاھلاندۇرۇش: ئىلگىرى ئۆچۈرگەن ھۆججەتتىن بىرنى قۇرۇۋاتىسىز.'''
@@ -899,15 +917,18 @@ $2
 ئۇ بايىلا ئۆچۈرۈلگەن بولۇشى مۇمكىن.',
 'edit-conflict' => 'تەھرىر توقۇنۇشى.',
 'edit-no-change' => 'تەھرىرلىگىنىڭىزگە پەرۋا قىلىنمىدى، چۈنكى تېكستتە ئۆزگىرىش بولمىدى.',
-'edit-already-exists' => 'يېڭى بەت قۇرالمىدى
-ئۇ مەۋجۇد.',
+'postedit-confirmation' => 'تەھرىرلىگىنىڭىز ساقلاندى.',
+'edit-already-exists' => 'يېڭى بەت قۇرالمىدى.
+بەت بۇرۇندىن مەۋجۇد.',
 'defaultmessagetext' => 'كۆڭۈلدىكى ئۇچۇر تېكستى',
 'content-failed-to-parse' => '$2 نى $1 گە ئانالىز قلش مەغلۇپ بولدى: $3',
 'invalid-content-data' => 'مەزمۇن سانلىق مەلۇماتى ئىناۋەتسىز',
 'content-not-allowed-here' => '[[$2]] بەتتە "$1" مەزمۇنغا يول قويۇلمايدۇ',
+'editwarning-warning' => 'بەتتىن ئايرىلغاندا بەلكىم بارلىق تەھرىرلىگىنىڭىز بېكار بولۇپ كېتىشى مۇمكىن.
+ئ‍ەگەر تىزىمغا كىرسىڭىز، مايىللىق بېتىڭىزنىڭ «تەھرىر» بۆلىكىدە، بۇ ئەسكەرتمىنى ئىناۋەتسىز قىلالايسىز.',
 
 # Content models
-'content-model-wikitext' => 'wiki تېكىستى',
+'content-model-wikitext' => 'ۋىكىتېكىست',
 'content-model-text' => 'ساپ تېكىست',
 'content-model-javascript' => 'JavaScript',
 'content-model-css' => 'CSS',
@@ -940,6 +961,7 @@ $2
 'undo-failure' => 'ئوتتۇرىلىقتا بىردەك بولماسلىق سەۋەبىدىن بۇ تەھرىردىن يېنىۋالغىلى بولمايدۇ.',
 'undo-norev' => 'تۈزىتىلگەن نەشرى مەۋجۇد ئەمەس ياكى ئۆچۈرۈلگەنلىكتىن، بۇ تەھرىردىن يېنىۋالغىلى بولمايدۇ.',
 'undo-summary' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|مۇنازىرە]]) ئېلىپ بارغان تۈزىتىش $1',
+'undo-summary-username-hidden' => 'بىر يوشۇرۇن ئىشلەتكۈچى تەرىپىدىن يېنىۋېلىندى $1.',
 
 # Account creation failure
 'cantcreateaccounttitle' => 'ھېسابات قۇرالمىدى',
@@ -954,8 +976,8 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 'currentrev-asof' => '$1 نىڭ نۆۋەتتىكى تۈزىتىلگەن نەشرى',
 'revisionasof' => '$1 تۈزەتكەن نەشرى',
 'revision-info' => '$1 دىكى $2 ئۆزگەرتكەن نەشرى',
-'previousrevision' => 'â\86\90 كونا نەشرى',
-'nextrevision' => 'Ù\8aÛ\90Ú­Ù\89راÙ\82 ØªÛ\88زÙ\89تÙ\89Ø´ â\86\92',
+'previousrevision' => 'â\86\92 كونا نەشرى',
+'nextrevision' => 'Ù\83Û\90Ù\8aÙ\89Ù\86Ù\83Ù\89 Ù\86Û\95شرÙ\89 â\86\90',
 'currentrevisionlink' => 'نۆۋەتتىكى تۈزىتىش',
 'cur' => 'نۆۋەتتىكى',
 'next' => 'كەينى',
@@ -966,8 +988,8 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 چۈشەندۈرۈش: '''({{int:cur}})'' نۆۋەتتىكى نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.
  '''({{int:last}})''' ئالدىنقى ئۆزگەرتىلگەن نەشرى بىلەن سېلىشتۇرۇشنى كۆرسىتىدۇ.
  '''{{int:minoreditletter}}''' ئازراقلا ئۆزگەرتىش.",
-'history-fieldset-title' => 'كۆز يۈگۈرتۈش تارىخى',
-'history-show-deleted' => 'ئۆچۈرۈلگەنلا',
+'history-fieldset-title' => 'تارىخىنى كۆرسەت',
+'history-show-deleted' => 'ئÛ\86Ú\86Û\88رÛ\88Ù\84Ú¯Û\95Ù\86Ù\86Ù\89Ù\84ا',
 'histfirst' => 'ئەڭ كونا',
 'histlast' => 'ئەڭ يېڭى',
 'historysize' => '$1 {{PLURAL:$1|بايت|بايت}}',
@@ -983,9 +1005,9 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 
 # Revision deletion
 'rev-deleted-comment' => '(تەھرىرلەش ئۈزۈندىسى چىقىرىۋېتىلدى)',
-'rev-deleted-user' => '(ئىشلەتكۈچى ئاتى چىقىرىۋېتىلدى)',
+'rev-deleted-user' => '(ئىشلەتكۈچى نامى چىقىرىۋېتىلدى)',
 'rev-deleted-event' => '(خاتىرە مەشغۇلاتى چىقىرىۋېتىلدى)',
-'rev-deleted-user-contribs' => '[ئىشلەتكۈچى ئاتى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىدىن تەھرىرنى يوشۇر]',
+'rev-deleted-user-contribs' => '[ئىشلەتكۈچى نامى ياكى IP ئادرېس چىقىرىۋېتىلدى - تۆھپىدىن تەھرىرنى يوشۇر]',
 'rev-deleted-text-permission' => "'''ئاگاھلاندۇرۇش: بۇ بەتنىڭ تۈزىتىلگەن نەشرى'''ئۆچۈرۈلگەن'''
 [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} ئۆچۈرۈش خاتىرىسى]دىن تەپسىلىي ئۇچۇرنى تاپقىلى بولىدۇ.",
 'rev-deleted-text-unhide' => "بۇ بەتنىڭ تۈزىتىلگەن نەشرى '''ئۆچۈرۈلگەن'''.
@@ -1015,10 +1037,6 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 'revdelete-nooldid-title' => 'ئىناۋەتسىز نىشان تۈزىتىش نەشرى',
 'revdelete-nooldid-text' => 'سىز تېخى نىشان تۈزىتىش نەشرىدىن بىرنى بەلگىلىمىدىڭىز،
 بەلگىلەنگەن تۈزىتىش نەشرى مەۋجۇد ئەمەس ياكى نۆۋەتتىكى تۈزىتىش نەشرىنى يوشۇرۇشقا ئۇرۇنغان.',
-'revdelete-nologtype-title' => 'خاتىرە تىپى بېرىلمىگەن',
-'revdelete-nologtype-text' => 'سىز تېخى خاتىرە تىپىدىن بىرنى بەلگىلەپ بۇ مەشغۇلاتنى ئىجرا قىلىشنى بېكىتمىدىڭىز.',
-'revdelete-nologid-title' => 'ئىناۋەتسىز خاتىرە تۈرى',
-'revdelete-nologid-text' => 'سىز بۇ مەشغۇلات بىجىرىشكە تېخى نىشان خاتىرە تۈرىدىن بىرنى بەلگىلىمىدىڭىز ياكى بەلگىلەنگەن تۈر مەۋجۇد ئەمەس.',
 'revdelete-no-file' => 'ھۆججەت بەلگىلىمىسى مەۋجۇد ئەمەس.',
 'revdelete-show-file-confirm' => '$2 $3 دىكى "<nowiki>$1</nowiki>" نىڭ ئۆچۈرۈلگەن تۈزىتىلگەن نەشرىنى راستىنلا كۆرەمسىز؟',
 'revdelete-show-file-submit' => 'ھەئە',
@@ -1031,15 +1049,15 @@ $3 تەمىنلىگەن چەكلەش سەۋەبى ''$2''",
 * نامۇۋاپىق شەخسىي ئۇچۇر
 *: ''home ئولتۇرۇشلۇق ئادرېس، تېلېفون نومۇر، كىملىك نومۇرى قاتارلىق.''",
 'revdelete-legend' => 'كۆرۈنۈشچانلىق چەكلىمە تەڭشىكى',
-'revdelete-hide-text' => 'تۈزىتىش نەشرىنىڭ تېكستىنى يوشۇر',
+'revdelete-hide-text' => 'تۈزىتىلگەن تېكىست',
 'revdelete-hide-image' => 'ھۆججەت مەزمۇنىنى يوشۇر',
 'revdelete-hide-name' => 'مەشغۇلات ۋە نىشاننى يوشۇر',
 'revdelete-hide-comment' => 'تەھرىر ئىزاھاتىنى يوشۇر',
 'revdelete-hide-user' => 'تەھرىرلىگۈچىنىڭ نامى/IP ئادرېسىنى يوشۇر',
 'revdelete-hide-restricted' => 'مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە',
 'revdelete-radio-same' => '(ئۆزگەرتمە)',
-'revdelete-radio-set' => 'ھەئە',
-'revdelete-radio-unset' => 'Ù\8aاÙ\82',
+'revdelete-radio-set' => 'يوشۇرۇن',
+'revdelete-radio-unset' => 'Ù\83Û\86رÛ\88Ù\86Ù\89دÙ\89غاÙ\86',
 'revdelete-suppress' => 'مەشغۇلاتچى ۋە باشقا ئىشلەتكۈچىنىڭ سانلىق مەلۇمات كۆرۈشىنىمۇ چەكلە',
 'revdelete-unsuppress' => 'ئەسلىگە كەلتۈرۈلگەن تۈزىتىلگەن نەشرىدىن چەكلىمىنى چىقىرىۋەت',
 'revdelete-log' => 'سەۋەب:',
@@ -1051,8 +1069,6 @@ $1",
 'logdelete-failure' => "'''خاتىرىنىڭ كۆرۈنۈشچانلىقىنى تەڭشىيەلمىدى:'''
 $1",
 'revdel-restore' => 'كۆرۈنۈشچانلىقنى ئۆزگەرت',
-'revdel-restore-deleted' => 'ئۆچۈرۈلگەن تۈزىتىلگەن نەشرى',
-'revdel-restore-visible' => 'كۆرۈنىدىغان تۈزىتىلگەن نەشرى',
 'pagehist' => 'بەتنىڭ تارىخى',
 'deletedhist' => 'ئۆچۈرۈلگەن تارىخ',
 'revdelete-hide-current' => '$2 $1 ۋاقىتتىكى تۈرلەر خاتالىقىنى يوشۇرۇۋاتىدۇ: بۇ نۆۋەتتىكى تۈزىتىلگەن نەشرى.
@@ -1130,12 +1146,8 @@ $1",
 # 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}}',
@@ -1144,14 +1156,12 @@ $1",
 'nextn-title' => 'كېيىكى $1 {{PLURAL:$1|نەتىجە|نەتىجە}}',
 'shown-title' => 'ھەر بىر بەتتە $1 {{PLURAL:$1|نەتىجە |نەتىجە }} كۆرسەت',
 'viewprevnext' => 'كۆرسەت ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'ئىزدەش تاللانما',
 'searchmenu-exists' => "'''بۇ wiki دا  \"[[:\$1]]\" ئاتلىق بەت بار '''",
 'searchmenu-new' => "'''بۇ wiki دا  \"[[:\$1]]\" ئاتلىق بەت قۇر!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1| بۇنى ئالدى قوشۇلغۇچى قىلغان بەتكە كۆز يۈگۈرت ]]',
 'searchprofile-articles' => 'مەزمۇن بېتى',
 'searchprofile-project' => 'ياردەم ۋە قۇرۇلۇش بەتلەر',
 'searchprofile-images' => 'كۆپ ۋاسىتە',
-'searchprofile-everything' => 'Ú¾Û\95Ù\85Ù\85Û\95 Ø¦Ù\89Ø´',
+'searchprofile-everything' => 'Ú¾Û\95Ù\85Ù\85Û\95 Ø¨Û\95ت',
 'searchprofile-advanced' => 'ئالىي',
 'searchprofile-articles-tooltip' => '$1 دىن ئىزدە',
 'searchprofile-project-tooltip' => '$1 دىن ئىزدە',
@@ -1168,33 +1178,29 @@ $1",
 'search-interwiki-default' => '$1 نەتىجە:',
 'search-interwiki-more' => '(تېخىمۇ كۆپ)',
 'search-relatedarticle' => 'ئالاقىدار',
-'mwsuggest-disable' => 'ئىزدەش تەكلىپىنى چەكلە',
 'searcheverything-enable' => 'ھەممە ئات بوشلۇقىدىن ئىزدە',
 'searchrelated' => 'ئالاقىدار',
 'searchall' => 'ھەممىسى',
 'showingresults' => "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$1|'''1''' نەتىجە|'''$1''' نەتىجە}} كۆرسىتىدۇ:",
 'showingresultsnum' => "تۆۋەندە '''$2''' - نەتىجىدىن باشلانغان {{PLURAL:$3|'''1''' نەتىجە |'''$3''' نەتىجە }} كۆرسىتىدۇ:",
 'showingresultsheader' => "'''$4''' نىڭ {{PLURAL:$5|'''$1''' دىن '''$3'''غىچە نەتىجە | '''$1 - $2''' غىچە جەمئى '''$3''' نەتىجە}}",
-'nonefound' => "'''دىققەت''': كۆڭۈلدىكى ئەھۋالدا بىر قىسىم ئات بوشلۇقى بەتلىرىلا ئىزدىلىدۇ.
-ئىزدەش جۈملىڭىزنىڭ ئالدىغا ''all:'' ئالدى قوشۇلغۇچىسى قوشۇپ سىناڭ، بۇنداق بولغاندا ھەممە بەت (مۇنازىرە بېتى، قېلىپ قاتارلىقلارنى ئۆز ئىچىگە ئالىدۇ)تىن ئىزدەيدۇ، ياكى لازىملىق ئات بوشلۇقى ئالدى قوشۇلغۇچى قىلىنسىمۇ بولىدۇ.",
 'search-nonefound' => 'سۈرۈشتۈرۈشكە ماس نەتىجە تېپىلمىدى.',
-'powersearch' => 'ئالىي ئىزدەش',
 'powersearch-legend' => 'ئالىي ئىزدەش',
 'powersearch-ns' => 'ئات بوشلۇقىدىن ئىزدە:',
 'powersearch-redir' => 'قايتا نىشانلانغان بەت تىزىملىكى',
-'powersearch-field' => 'ئىزدە',
 'powersearch-togglelabel' => 'تاللا:',
 'powersearch-toggleall' => 'ھەممىسى',
 'powersearch-togglenone' => 'يوق',
 'search-external' => 'ئالىي ئىزدەش',
 'searchdisabled' => '{{SITENAME}} نىڭ ئىزدىشى چەكلەنگەن. سىز ھازىرچە Google ئىشلىتىپ ئىزدەپ تۇرۇڭ،.
 دىققەت ئۇلار ئىندېكسلىغان {{SITENAME}} مەزمۇنىنىڭ ۋاقتى ئۆتكەن بولۇشى مۇمكىن.',
+'search-error' => 'ئىزدەش جەريانىدا بىر خاتالىق يۈز بەردى: $1',
 
 # Preferences page
 'preferences' => 'مايىللىق',
 'mypreferences' => 'مايىللىق',
 'prefs-edits' => 'تەھرىر سانى:',
-'changepassword' => 'پارولنى ئۆزگەرتىش',
+'prefsnologintext2' => 'مايىللىقىڭىزنى ئۆزگەرتىش ئۈچۈن $1.',
 'prefs-skin' => 'تېرە',
 'skin-preview' => 'ئالدىن كۆزەت',
 'datedefault' => 'مايىللىق يوق',
@@ -1217,13 +1223,11 @@ $1",
 'prefs-email' => 'ئېلخەت تاللانما',
 'prefs-rendering' => 'كۆرۈنۈش',
 'saveprefs' => 'ساقلا',
-'resetprefs' => 'ساقلىمىغان ئۆزگەرتىشلەرنى تازىلا',
-'restoreprefs' => 'بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر',
-'prefs-editing' => 'تەھرىرلەۋاتىدۇ',
+'restoreprefs' => 'بارلىق كۆڭۈلدىكى تەڭشەكنى ئەسلىگە كەلتۈر (بارلىق بۆلەكلەردە)',
+'prefs-editing' => 'تەھرىر',
 'rows' => 'قۇر:',
 'columns' => 'ستون:',
 'searchresultshead' => 'ئىزدە',
-'resultsperpage' => 'ھەر بەتتىكى ئۇلانما سانى:',
 'stub-threshold' => '<a href="#" class="stub">قىسقا بەت ئۇلانمىسى</a> فورمات چەك قىممىتى (بايت) :',
 'stub-threshold-disabled' => 'چەكلەنگەن',
 'recentchangesdays' => 'يېقىنقى ئۆزگەرتىشنىڭ كۆرۈنىدىغان كۈن سانى:',
@@ -1235,7 +1239,6 @@ $1",
 'localtime' => 'يەرلىك ۋاقىت:',
 'timezoneuseserverdefault' => 'ۋىكىنىڭ كۆڭۈلدىكى قىممىتى($1)نى ئىشلەت',
 'timezoneuseoffset' => 'باشقا (بەلگىلەنگەن  چەتنەش)',
-'timezoneoffset' => '¹ۋاقىت پەرقى:',
 'servertime' => 'مۇلازىمىتىر ۋاقتى:',
 'guesstimezone' => 'توركۆرگۈدىن تولدۇر',
 'timezoneregion-africa' => 'ئافرىقا',
@@ -1267,7 +1270,7 @@ $1",
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'خەتلەتكەن ۋاقىت:',
 'prefs-registration-date-time' => '$1',
-'yourrealname' => 'ﺗﻮﻟﯘﻕ ئىسىم:',
+'yourrealname' => 'ھەقىقىي ئىسىم:',
 'yourlanguage' => 'تىل:',
 'yourvariant' => 'مەزمۇن تىل شالغۇتى:',
 'prefs-help-variant' => 'بۇ ۋىكىدا كۆرسىتىشكە ئىشلىتىدىغان تىل تۈرى ياكى ئىملا تەكشۈرۈش',
@@ -1279,10 +1282,10 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'badsiglength' => 'ئىمزايىڭىز بەك ئۇزۇن.
 
 ئىمزانىڭ ئۇزۇنلۇقى {{PLURAL:$1| ھەرپ| ھەرپ}}تىن ئاشسا بولمايدۇ.',
-'yourgender' => 'جىنسى:',
-'gender-unknown' => 'بÛ\95Ù\84Ú¯Ù\89Ù\84Û\95Ù\86Ù\85Ù\89Ú¯ەن',
-'gender-male' => 'ئÛ\95ر',
-'gender-female' => 'ئايال',
+'yourgender' => 'قانداق تەسۋىرلەشنى ياخشى كۆرىسىز؟',
+'gender-unknown' => 'سÛ\86زÙ\84Ù\89Ù\85Û\95سÙ\84Ù\89Ù\83Ù\86Ù\89 Ù\8aاخشÙ\89 Ù\83Û\86رÙ\89Ù\85ەن',
+'gender-male' => 'ئÛ\87 (ئÛ\95ر) Û\8bÙ\89Ù\83Ù\89 Ø¨Û\95تÙ\84Ù\89رÙ\89Ù\86Ù\89 ØªÛ\95ھرÙ\89رÙ\84Û\95Ù\8aدÛ\87.',
+'gender-female' => 'ئۇ (ئايال) ۋىكى بەتلىرىنى تەھرىرلەيدۇ.',
 'prefs-help-gender' => 'تاللاشچان: يۇمشاق دېتالنىڭ خاراكتىرى تەرىپىدىن بەلگىلىنىدۇ
 
 بۇ ئۇچۇر كۆپچىلىككە ئاشكارىلىنىدۇ.',
@@ -1298,7 +1301,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'prefs-signature' => 'ئىمزا',
 'prefs-dateformat' => 'چېسلا فورماتى',
 'prefs-timeoffset' => 'ۋاقىت پەرقى',
-'prefs-advancedediting' => 'ئاÙ\84ىي تاللانما',
+'prefs-advancedediting' => 'دائÙ\89Ù\85ىي تاللانما',
 'prefs-editor' => 'تەھرىرلىگۈچ',
 'prefs-preview' => 'ئالدىن كۆزەت',
 'prefs-advancedrc' => 'ئالىي تاللانما',
@@ -1471,6 +1474,8 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'action-userrights-interwiki' => 'باشقا wiki دىكى ئىشلەتكۈچى ھوقۇقىنى تەھرىرلە',
 'action-siteadmin' => 'ساندان قۇلۇپلا ۋە قۇلۇپ ئاچ',
 'action-sendemail' => 'ئېلخەت يوللا',
+'action-editmywatchlist' => 'كۈزىتىش تىزىملىكىڭىزنى تەھرىرلەڭ',
+'action-viewmywatchlist' => 'كۈزىتىش تىزىملىكىڭىزنى كۆرۈڭ',
 
 # Recent changes
 'nchanges' => '$1 {{PLURAL:$1|ئۆزگەرتىش|ئۆزگەرتىش}}',
@@ -1483,13 +1488,12 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'recentchanges-label-minor' => 'بۇ ئازراقلا تەھرىرلەش',
 'recentchanges-label-bot' => 'بۇ تەھرىرنى ماشىنا ئادەم ئېلىپ بارغان',
 'recentchanges-label-unpatrolled' => 'بۇ تەھرىر تېخى كۆزىتىلمىگەن',
-'recentchanges-legend-newpage' => '$1 - يېڭى بەت',
-'rcnote' => "تۆۋەندىكى $4 $5 يېقىنقى {{PLURAL:$2|كۈن|'''$2''' كۈن}}  ئىچىدىكى {{PLURAL:$1| '''1''' ئۆزگەرتىش| '''$1''' ئۆزگەرتىش}}  خاتىرىسى",
+'recentchanges-legend-newpage' => '(بۇنىڭغىمۇ قاراڭ [[Special:NewPages|يېڭى بەتلەر تىزىملىگى]])',
 'rcnotefrom' => "تۆۋەندىكىسى '''$2''' نىڭ ئۆزگەرتىشى (ئەڭ كۆپ بولغاندا '''$1''' كۆرسىتىدۇ )",
 'rclistfrom' => '$1 دىن باشلانغان يېڭى ئۆزگەرتىشنى كۆرسەت',
 'rcshowhideminor' => '$1 ئازراقلا تەھرىر',
 'rcshowhidebots' => '$1 ماشىنا ئادەمنىڭ تەھرىرى',
-'rcshowhideliu' => '$1 ØªÙ\89زÙ\89Ù\85غا Ù\83Ù\89رگÛ\95Ù\86 Ø¦Ù\89Ø´Ù\84Û\95تÙ\83Û\88Ú\86Ù\89Ù\86Ù\89Ú­ ØªÛ\95ھرÙ\89رى',
+'rcshowhideliu' => '$1 Ø®Û\95تÙ\84Û\95Ù\86Ú¯Û\95Ù\86 Ø¦Ù\89Ø´Ù\84Û\95تÙ\83Û\88Ú\86ى',
 'rcshowhideanons' => '$1 ئىمزاسىز ئىشلەتكۈچى تەھرىرى',
 'rcshowhidepatr' => '$1 كۆزىتىلگەن تەھرىر',
 'rcshowhidemine' => '$1 مېنىڭ تەھرىرىم',
@@ -1519,7 +1523,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'recentchangeslinked-title' => '"$1" مۇناسىۋەتلىك ئۇلانما ئۆزگەردى',
 'recentchangeslinked-summary' => "بۇ ئالاھىدە بەت يۈزى كۆرسەتكەن بەتتىن ئۇلىنىپ چىققان يېقىنقى ئۆزگەرتىش تىزىملىكى (ياكى ئالاھىدە تۈرنىڭ ئەزاسى).
  [[Special:Watchlist|كۆزەت تىزىملىكىڭىز]] دىكى بەت يۈزى '''توم''' كۆرسىتىلىدۇ.",
-'recentchangeslinked-page' => 'بەت ئاتى:',
+'recentchangeslinked-page' => 'بەت نامى:',
 'recentchangeslinked-to' => 'بېرىلگەن بەتكە ئۇلانغان ئۆزگەرتىشنى كۆرسەت',
 
 # Upload
@@ -1528,7 +1532,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
 'reuploaddesc' => 'يۈكلەشتىن ۋاز كېچىپ، يۈكلەش كۆزنىكىگە قايت',
 'upload-tryagain' => 'ئۆزگەرتىلگەن ھۆججەت چۈشەندۈرۈشى يوللا',
 'uploadnologin' => 'تىزىمغا كىرمىدى',
-'uploadnologintext' => ' سىز [[Special:UserLogin|تىزىمغا كىر]]سىڭىز ئاندىن ھۆججەت يوللىيالايسىز.',
+'uploadnologintext' => 'ھۆججەتنى تورغا يوللاش ئۈچۈن $1.',
 'upload_directory_missing' => 'يۈكلەش مۇندەرىجىسى ($1) يوقالغان، تور بەت مۇلازىمىتىرى قۇرالمايدۇ.',
 'upload_directory_read_only' => 'تور مۇلازىمىتىرىنىڭ يۈكلەش مۇندەرىجىسى ($1) گە يېزىش  ھوقۇقى يوق.',
 'uploaderror' => 'يۈكلەش خاتالىقى',
@@ -1974,10 +1978,8 @@ URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلى
 'protectedpages' => 'قوغدالغان بەتلەر',
 'protectedpages-indef' => 'پەقەت قەرەلسىز قوغدالغان بەت',
 'protectedpages-cascade' => 'پەقەت زەنجىرسىمان قوغدالغان بەت',
-'protectedpagestext' => 'تۆۋەندىكى بەتلەر يۆتكەش ياكى تەھرىرلەشنىڭ ئالدىنى ئېلىش ئۈچۈن قوغدالغان',
 'protectedpagesempty' => 'بۇ پارامېتىرلاردا قوغدالغان بەت يوق.',
 'protectedtitles' => 'قوغدالغان ماۋزۇلار',
-'protectedtitlestext' => 'تۆۋەندىكى بەتلەر قۇرۇشتىن ساقلىنىش ئۈچۈن قوغدالغان',
 'protectedtitlesempty' => 'بۇ پارامېتىرلاردا قوغدالغان ماۋزۇ يوق',
 'listusers' => 'ئىشلەتكۈچى تىزىملىكى',
 'listusers-editsonly' => 'تەھرىرلەنگەن ئىشلەتكۈچىلەرنىلا كۆرسەت',
@@ -2028,9 +2030,6 @@ URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلى
 'allpagesto' => 'بۇ جايدىن ئاياغلاشقان بەتنى كۆرسەت:',
 'allarticles' => 'ھەممە بەت',
 'allinnamespace' => 'ئالدى بەت ($1)',
-'allnotinnamespace' => 'ھەممە بەت ( $1 ئات بوشلۇقىغا تەۋە ئەمەس)',
-'allpagesprev' => 'ئالدى',
-'allpagesnext' => 'كەينى',
 'allpagessubmit' => 'يۆتكەل',
 'allpagesprefix' => 'ئالدى قوشۇلغۇچىسى بار بەتنى كۆرسەت:',
 'allpagesbadtitle' => 'بېرىلگەن بەت ماۋزۇسى قانۇنسىز ياكى ئىچكى تىلغا ئىگە ياكى ئىچكى wiki نىڭ ئالدى قوشۇلغۇچىسى.
@@ -2044,7 +2043,7 @@ URL نىڭ توغرىلىقى ۋە تور بېكەتنى زىيارەت قىلى
 'cachedspecial-refresh-now' => 'يېقىنقىنى كۈرىشى.',
 
 # Special:Categories
-'categories' => 'كاتېگورىيە',
+'categories' => 'تۈرلەر',
 'categoriespagetext' => 'تۆۋەندىكى {{PLURAL:$1|كاتېگورىيە|كاتېگورىيە}}دە بەت ياكى ۋاسىتە بار.
 [[Special:UnusedCategories|ئىشلىتىلمىگەن كاتېگورىيە]] بۇ جايدا كۆرسىتىلمەيدۇ.
 شۇنىڭ بىلەن بىللە [[Special:WantedCategories|لازىملىق كاتېگورىيە]] نى كۆرۈڭ.',
@@ -2372,8 +2371,7 @@ $2 نىڭ ئاخىرقى تۈزىتىلگەن نەشرىگە ئۆزگەرتىل
 'undelete-nodiff' => 'ئالدىنقى تۈزىتىلگەن نەشرى تېپىلمىدى.',
 'undeletebtn' => 'ئەسلىگە كەلتۈر',
 'undeletelink' => 'كۆرسەت/ئەسلىگە كەلتۈر',
-'undeleteviewlink' => 'كۆرۈنۈش',
-'undeletereset' => 'ئەسلىگە قايتۇر',
+'undeleteviewlink' => 'كۆرسەت',
 'undeleteinvert' => 'ئەكسىچە تاللا',
 'undeletecomment' => 'سەۋەب:',
 'undeletedrevisions' => '{{PLURAL:$1|1 تۈزىتىش|$1 تۈزىتىش}} ئەسلىگە كەلتۈرۈلدى',
@@ -2402,7 +2400,6 @@ $1',
 $1',
 'undelete-show-file-confirm' => '$2 $3 دىكى \\"<nowiki>$1</nowiki>\\" نىڭ ئۆچۈرۈلگەن تۈزىتىلگەن نەشرىنى راستىنلا كۆرەمسىز؟',
 'undelete-show-file-submit' => 'ھەئە',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'ئات بوشلۇقى',
@@ -2413,7 +2410,7 @@ $1',
 'blanknamespace' => '(ئاساسىي)',
 
 # Contributions
-'contributions' => '{{$1:GENDER|ئىشلەتكۈچى}} تۆھپىسى',
+'contributions' => '{{GENDER:$1|ئىشلەتكۈچى}} تۆھپىسى',
 'contributions-title' => '$1 نىڭ ئىشلەتكۈچى تۆھپىسى',
 'mycontris' => 'تۆھپە',
 'contribsub2' => '{{GENDER:$3|$1}} ($2) ئۈچۈن',
@@ -2436,13 +2433,13 @@ $1',
 'sp-contributions-blocked-notice-anon' => 'بۇ IP ئادرېس نۆۋەتتە چەكلەنگەن.
 پايدىلىنىش ئۈچۈن  تۆۋەندە يېقىنقى چەكلەش خاتىرە تۈرلىرى تەمىنلەندى:',
 'sp-contributions-search' => 'تۆھپە ئىزدە',
-'sp-contributions-username' => 'IP ئادرېس ياكى ئىشلەتكۈچى ئاتى:',
+'sp-contributions-username' => 'IP ئادرېس ياكى ئىشلەتكۈچى نامى:',
 'sp-contributions-toponly' => 'ئەڭ يېڭى تۈزىتىلگەن نەشرىنىلا كۆرسەت',
 'sp-contributions-submit' => 'ئىزدە',
 
 # What links here
 'whatlinkshere' => 'بۇ جايدىكى ئۇلانما',
-'whatlinkshere-title' => '"$1" بەتكە ئۇلانغان',
+'whatlinkshere-title' => '"$1" بەتكە ئۇلانغان بەتلەر',
 'whatlinkshere-page' => 'بەت:',
 'linkshere' => "تۆۋەندىكى بەتلەر '''[[:$1]]'''غا ئۇلانغان:",
 'nolinkshere' => "'''[[:$1]]'''غا ئۇلانغان بەت يوق.",
@@ -2452,7 +2449,7 @@ $1',
 'isimage' => 'ھۆججەت ئۇلانما',
 'whatlinkshere-prev' => '{{PLURAL:$1|ئالدى|ئالدى $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|كەينى|كەينى $1}}',
-'whatlinkshere-links' => 'â\86\90 ئۇلانما',
+'whatlinkshere-links' => 'â\86\92 ئۇلانما',
 'whatlinkshere-hideredirs' => '$1 قايتا نىشان بەلگىلە',
 'whatlinkshere-hidetrans' => '$1 ئۆز ئىچىگە ئالغان',
 'whatlinkshere-hidelinks' => '$1 ئۇلانما',
@@ -2464,7 +2461,6 @@ $1',
 'block' => 'ئىشلەتكۈچىنى چەكلە',
 'unblock' => 'ئىشلەتكۈچىنى چەكلىمە',
 'blockip' => 'چەكلەنگەن ئىشلەتكۈچى',
-'blockip-title' => 'ئىشلەتكۈچى چەكلە',
 'blockip-legend' => 'چەكلەنگەن ئىشلەتكۈچى',
 'blockiptext' => 'تۆۋەندىكى جەدۋەلنى ئىشلىتىپ بەلگىلىك IP ئادرېس ياكى ئىشلەتكۈچى ئاتىدىن كەلگەن يېزىش زىيارىتىنى چەكلەشكە بولىدۇ.
 پەقەت بۇزغۇنچىلىكنىڭ ئالدىنى ئېلىش ھەمدە [[{{MediaWiki:Policy-url}}|تاكتىكا]].
@@ -2472,7 +2468,6 @@ $1',
 'ipadressorusername' => 'IP ئادرېس ياكى ئىشلەتكۈچى ئاتى:',
 'ipbexpiry' => 'مۇددىتى:',
 'ipbreason' => 'سەۋەب:',
-'ipbreasonotherlist' => 'باشقا سەۋەب',
 'ipbreason-dropdown' => '*ئادەتتىكى چەكلەش سەۋەبى
 ** ساختا ئۇچۇر قوشۇش
 ** بەت مەزمۇنىنى چىقىرىۋېتىش
@@ -2488,8 +2483,6 @@ $1',
 'ipbsubmit' => 'بۇ ئىشلەتكۈچىنى چەكلە',
 'ipbother' => 'باشقا ۋاقىت:',
 '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',
-'ipbotheroption' => 'باشقا',
-'ipbotherreason' => 'باشقا/قوشۇمچە سەۋەب:',
 'ipbhidename' => 'تەھرىر ۋە تىزىملىكتىن ئىشلەتكۈچى ئاتىنى يوشۇر',
 'ipbwatchuser' => 'بۇ ئىشلەتكۈچىنىڭ ئىشلەتكۈچى بېتى ۋە مۇنازىرە بېتىنى كۆزەت',
 'ipb-disableusertalk' => 'چەكلەنگەن ئىشلەتكۈچىنىڭ ئۆزىنىڭ سۆزلىشىش بېتىنى تەھرىرلىشى چەكلىنىدۇ',
@@ -2540,7 +2533,7 @@ $1',
 'blocklink' => 'چەكلە',
 'unblocklink' => 'چەكلەشنى توختات',
 'change-blocklink' => 'ئۆزگەرتىش چەكلەنگەن',
-'contribslink' => 'تۆھپىكارلار',
+'contribslink' => 'تۆھپە',
 'emaillink' => 'ئېلخەت يوللا',
 'autoblocker' => 'سىز "[[User:$1|$1]]" بىلەن بىر IP ئادرېسنى ئورتاق ئىشلەتكەچكە ئۆزلۈكىدىن چەكلىدى.
  $1 نىڭ چەكلەنگەنلىك سەۋەبى:  "$2"',
@@ -2584,7 +2577,6 @@ $1',
 'sorbsreason' => 'IP ئادرېسىڭىز {{SITENAME}} دا DNSBL تەرىپىدىن ئوچۇق ۋاكالەتچى تىزىملىكىگە قوشۇلغان.',
 'sorbs_create_account_reason' => 'IP ئادرېسىڭىز {{SITENAME}} دا DNSBL تەرىپىدىن ئوچۇق ۋاكالەتچى تىزىملىكىگە قوشۇلغان.
 شۇڭا سىز يېڭى ھېسابات قۇرالمايسىز.',
-'cant-block-while-blocked' => 'ئەگەر سىز چەكلەنسىڭىز باشقىلارنى چەكلىيەلمەيسىز.',
 'cant-see-hidden-user' => 'سىز چەكلىمەكچى بولغان ئىشلەتكۈچى ئاللىبۇرۇن چەكلىنىپ يوشۇرۇلغان.
 ھازىر سىزنىڭ ئىشلەتكۈچى يوشۇرۇش ھوقۇقىڭىز يوق، سىز بۇ چەكلەنگەن ئىشلەتكۈچىنى كۆرسىتىپ ياكى تەھرىرلىيەلمەيسىز.',
 'ipbblocked' => 'سىز بااشقا ئىشلەتكۈچىنى چەكلەپ ياكى چەكلەشنى بىكار قىلالمايسىز چۈنكى ئۆزىڭىز چەكلەندىڭىز.',
@@ -2649,7 +2641,6 @@ $1',
 بۇ خىل ئەھۋاللاردا، زۆرۈر تېپىلغاندا ئۆزىڭىز بەتنى يۆتكىشىڭىز ياكى بىرلەشتۈرۈشىڭىز لازىم.",
 'movearticle' => 'بەت يۆتكە:',
 'moveuserpage-warning' => "'''ئاگاھلاندۇرۇش:''' سىز ئىشلەتكۈچى بېتىنى يۆتكىمەكچى. بۇ بەت يۆتكەلگەندىن كېيىن شۇ ئىشلەتكۈچىنىڭ ئاتى ئۆزگەرمەيدىغانلىقىغا دىققەت قىلىڭ.",
-'movenologin' => 'تىزىمغا كىرمىدى',
 'movenologintext' => 'سىز چوقۇم تىزىمغا كىرگەن ئىشلەتكۈچى ھەمدە [[Special:UserLogin|تىزىمغا كىر]]گەندىن كېيىن ئاندىن بەتنى يۆتكىيەلەيسىز.',
 'movenotallowed' => 'سىزنىڭ بەت يۆتكەش ھوقۇقىڭىز يوق.',
 'movenotallowedfile' => 'سىزنىڭ ھۆججەت يۆتكەش ھوقۇقىڭىز يوق.',
@@ -2665,9 +2656,6 @@ $1',
 'articleexists' => 'مۇشۇ ئاتلىق بەت مەۋجۇد ياكى سىز تاللىغان بەت ئاتى ئىناۋەتسىز.
 باشقا ئات تاللاڭ.',
 'cantmove-titleprotected' => 'بۇ بەتنى مەزكۇر ئورۇنغا يۆتكىيەلمەيسىز، چۈنكى بۇ يېڭى ماۋزۇ قۇرۇشتىن ساقلىنىش ئۈچۈن قوغدالدى.',
-'talkexists' => "'''بەتنىڭ ئۆزىنى يۆتكەش مۇۋەپپەقىيەتلىك، ئەمما مۇنازىرە بېتىنى يۆتكىيەلمىدى،چۈنكى يېڭى ماۋزۇلۇق مۇنازىرە بېتى مەۋجۇد.
-ئۇلارنى ئۆزىڭىز قولدا بىرلەشتۈرۈڭ.'''",
-'movedto' => 'يۆتكەلگەن ئورنى',
 'movetalk' => 'يۆتكەش ئۇلانغان مۇنازىرە بېتى',
 'move-subpages' => 'تارماق بەتنى يۆتكە (ئۈستىگە $1 بەت)',
 'move-talk-subpages' => 'تارماق مۇنازىرە بېتىنى يۆتكە (ئۈستىگە $1 بەت)',
@@ -2838,8 +2826,8 @@ $1',
 'tooltip-pt-anonuserpage' => 'بۇ بېكەتنى تەھرىرلىگەندە ئىشلەتكەن IP ماس كەلگەن ئىشلەتكۈچى بېتى',
 'tooltip-pt-mytalk' => 'مۇنازىرە بېتىڭىز',
 'tooltip-pt-anontalk' => 'مەزكۇر IP ئادرېستىن كەلگەن تەھرىرنىڭ مۇنازىرىسى',
-'tooltip-pt-preferences' => 'مايىللىق تەڭشىىڭىز',
-'tooltip-pt-watchlist' => 'ئÛ\86زگÙ\89رÙ\89Ø´Ù\86Ù\89 Ù\83Û\86زÛ\95ت Ù\82Ù\89Ù\84Ù\89Û\8bاتÙ\82اÙ\86 Ø¨Û\95ت ØªÙ\89زÙ\89Ù\85Ù\84Ù\89Ù\83Ù\89Ú­Ù\89ز',
+'tooltip-pt-preferences' => 'مايىللىق تەڭشىگىڭىز',
+'tooltip-pt-watchlist' => 'سÙ\89ز Ù\83Û\86زÙ\89تÙ\89Û\8bاتÙ\82اÙ\86 Ø¨Û\95تÙ\84Û\95ر ØªÙ\89زÙ\89Ù\85Ù\84Ù\89Ú¯Ù\89',
 'tooltip-pt-mycontris' => 'تۆھپە تىزىملىكىڭىز',
 'tooltip-pt-login' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
 'tooltip-pt-anonlogin' => 'تىزىمغا كىرىشىڭىزنى تەۋسىيە قىلىمىز ئەمما مەجبۇرىي ئەمەس',
@@ -2847,7 +2835,7 @@ $1',
 'tooltip-ca-talk' => 'بەت مەزمۇنى ھەققىدىكى مۇنازىرە',
 'tooltip-ca-edit' => 'بۇ بەتنى تەھرىرلىيەلەيسىز.
 ساقلاشتىن ئىلگىرى ئالدىن كۆزەت كۇنۇپكىسىنى ئىشلىتىڭ',
-'tooltip-ca-addsection' => 'يېڭى بىر سۆزلىشىش باشلا',
+'tooltip-ca-addsection' => 'يېڭى بىر مۇنازىرە باشلاڭ',
 'tooltip-ca-viewsource' => 'بۇ بەت قوغدالغان.
 مەنبە ھۆججىتىنى كۆرەلەيسىز',
 'tooltip-ca-history' => 'بۇ بەتنىڭ بۇرۇنقى نەشرى',
@@ -2869,7 +2857,7 @@ $1',
 'tooltip-n-recentchanges' => 'wiki بېتىدىكى يېقىنقى ئۆزگىرىش تىزىملىكى',
 'tooltip-n-randompage' => 'خالىغان بەتنى يۈكلە',
 'tooltip-n-help' => 'ياردەم ئىزدەيدىغان ئورۇن',
-'tooltip-t-whatlinkshere' => 'بۇ جايغا ئۇلانغان ھەممە wiki بېتىنى كۆرسەت',
+'tooltip-t-whatlinkshere' => 'بۇ جايغا ئۇلانغان ھەممە ۋىكى بېتىنى كۆرسەت',
 'tooltip-t-recentchangeslinked' => 'بۇ بەتكە ئۇلانغان بەتنىڭ يېقىنقى ئۆزگىرىشى',
 'tooltip-feed-rss' => 'بۇ بەتنىڭ RSS قانىلى',
 'tooltip-feed-atom' => 'بۇ بەتنىڭ Atom قانىلى',
@@ -2884,7 +2872,7 @@ $1',
 'tooltip-ca-nstab-media' => 'ۋاسىتە بېتىنى كۆرسەت',
 'tooltip-ca-nstab-special' => 'بۇ ئالاھىدە بەت، بۇ بەتنى تەھرىرلىيەلمەيسىز.',
 'tooltip-ca-nstab-project' => 'قۇرۇلۇش بېتىنى كۆرسەت',
-'tooltip-ca-nstab-image' => 'ھۆججەت بېتى كۆرسەت',
+'tooltip-ca-nstab-image' => 'ھۆججەت بېتىنى كۆرسەت',
 'tooltip-ca-nstab-mediawiki' => 'سىستېما ئۇچۇرىنى كۆرسەت',
 'tooltip-ca-nstab-template' => 'قېلىپ كۆرسەت',
 'tooltip-ca-nstab-help' => 'ياردەم بېتىنى كۆرسەت',
@@ -3036,8 +3024,8 @@ $1',
 'filedelete-archive-read-only' => 'تور بەت مۇلازىمىتىرىدىكى ئارخىپ مۇندەرىجىسى "$1"  گە يازغىلى بولمايدۇ.',
 
 # Browsing diffs
-'previousdiff' => 'â\86\90 Ø¦Ø§Ù\84دÙ\89Ù\86Ù\82Ù\89 Ù\86Û\95شرÙ\89',
-'nextdiff' => 'Ù\8aÛ\90Ú­Ù\89 Ù\86Û\95شرÙ\89 â\86\92',
+'previousdiff' => 'â\86\92 Ø¦Ø§Ù\84دÙ\89Ù\86Ù\82Ù\89 ØªÛ\95ھرÙ\89ر',
+'nextdiff' => 'Ù\83Û\90Ù\8aÙ\89Ù\86Ù\83Ù\89 ØªÛ\95ھرÙ\89ر â\86\90',
 
 # Media information
 'mediawarning' => "'''ئاگاھلاندۇرۇش''': بۇ ھۆججەتتە زەھەرخەندە كود بولۇشى مۇمكىن، ئۇنى ئىجرا قىلسىڭىز سىستېمىڭىزغا خەۋپ ئېلىپ كېلىشى مۇمكىن.",
@@ -3052,7 +3040,7 @@ $1',
 'svg-long-desc' => 'SVG ھۆججىتى، ئاتاقتىكى چوڭلۇقى $1 × $2 نۇقتا، ھۆججەت چوڭلۇقى: $3',
 'svg-long-desc-animated' => 'جانلاندۇرۇم SVG ھۆججەت، سۈرەت چوڭلۇقى $1×$2 پىكسېل، ھۆججەت چوڭلۇقى: $3',
 'svg-long-error' => 'ئۈنۈمسىز SVG ھۈججەت:$1',
-'show-big-image' => 'تÙ\88Ù\84Û\87Ù\82 Ø¦Û\90Ù\86Ù\89Ù\82Ù\84Ù\89Ù\82 Ø¯Û\95رÙ\89جÙ\89سÙ\89',
+'show-big-image' => 'ئÛ\95سÙ\84Ù\89 Ú¾Û\86ججÛ\95ت',
 'show-big-image-preview' => 'بۇ ئالدىن كۆزىتىشنىڭ چوڭلۇقى: $1.',
 'show-big-image-other' => 'باشقا {{PLURAL:$2|چوڭلۇقى}}: $1.',
 'show-big-image-size' => '$1 × $2 پىكسېل',
@@ -3082,8 +3070,8 @@ $1',
 'minutes-abbrev' => '$1m',
 'hours-abbrev' => '$1h',
 'days-abbrev' => '$1d',
-'seconds' => '{{PLURAL: $1|$1سېكۇنت}}',
-'minutes' => '{{PLURAL: $1|$1مىنۇت}}',
+'seconds' => '{{PLURAL:$1|$1سېكۇنت}}',
+'minutes' => '{{PLURAL:$1|$1مىنۇت}}',
 'hours' => '{{PLURAL:$1|$1سائەت}}',
 'days' => '{{PLURAL:$1|$1 كۈن}}',
 'months' => '{{PLURAL:$1|$1 ئاي}}',
@@ -3142,7 +3130,7 @@ Variants for Chinese language
 'variantname-kk' => 'kk',
 
 # Metadata
-'metadata' => 'مېتا سانلىق مەلۇماتى',
+'metadata' => 'مېتامەلۇمات',
 'metadata-help' => 'بۇ ھۆججەت كېڭەيتىلگەن تەپسىلاتنى ئۆز ئىچىگە ئالغان. بۇ ئۇچۇرلارنى رەقەملىك ئاپپارات ياكى سكاننېر قۇرغان ياكى رەقەملەشتۈرۈش جەريانىدا قوشۇلغان بولۇشى مۇمكىن.
 ئەگەر بۇ ھۆججەتنىڭ ئەسلى ھۆججىتى ئۆزگەرتىلسە، بىر قىسىم ئۇچۇرلار ئۆزگەرتىلگەندىن كېيىنكى ھۆججەتتە تولۇق ئەكس ئەتمەيدۇ.',
 'metadata-expand' => 'كېڭەيتىلگەن تەپسىلاتنى كۆرسەت',
@@ -3552,15 +3540,10 @@ Variants for Chinese language
 'exif-urgency-high' => 'يۇقىرى ($1)',
 'exif-urgency-other' => 'ئىشلەتكۈچى بەلگىلىگەن ئالدىنلىق ($1)',
 
-# External editor support
-'edit-externally' => 'بۇ ھۆججەتنى سىرتقى قوللىنىشچان پروگراممىدا تەھرىرلە',
-'edit-externally-help' => '( [https://www.mediawiki.org/wiki/Manual:External_editors تەڭشەك قەدىمى] نى كۆرۈپ تەپسىلاتىنى چۈشىنىڭ)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ھەممىسى',
 'namespacesall' => 'ھەممىسى',
 'monthsall' => 'ھەممىسى',
-'limitall' => 'ھەممىسى',
 
 # Email address confirmation
 'confirmemail' => 'جەزملەش ئېلخەت ئادرېسى',
@@ -3585,7 +3568,6 @@ Variants for Chinese language
 'confirmemail_success' => 'ئېلخەت ئادرېسىڭىز جەزملەندى.
 سىز ھازىر [[Special:UserLogin|تىزىمغا كىر]]ىپ، wiki بېكەتنى ئىشلىتەلەيسىز.',
 'confirmemail_loggedin' => 'ئېلخەت ئادرېسىڭىز ھازىر جەزملەندى.',
-'confirmemail_error' => 'جەزملەش جەريانىدا خاتالىق كۆرۈلدى.',
 'confirmemail_subject' => '{{SITENAME}} ئېلخەت ئادرېس جەزملەش',
 'confirmemail_body' => 'IP ئادرېس $1 دىن كەلگەن ئىشلەتكۈچى (بەلكىم سىز بولۇشىڭىز مۇمكىن) {{SITENAME}} دا “$2” ھېسابات قۇردى ھەمدە بۇ ئېلخەت ئادرېسىنى تاپشۇردى.
 
@@ -3820,7 +3802,6 @@ MediaWiki ئىشلىتىش مەقسىتىنى ئاساس قىلىپ ئېلان 
 
 # Special:ComparePages
 'comparepages' => 'بەت سېلىشتۇر',
-'compare-selector' => 'بەتنىڭ تۈزىتىلگەن نەشرىنى سېلىشتۇر',
 'compare-page1' => '1- بەت',
 'compare-page2' => '2- بەت',
 'compare-rev1' => 'تۈزىتىلگەن نەشرى 1',
@@ -3958,11 +3939,11 @@ MediaWiki ئىشلىتىش مەقسىتىنى ئاساس قىلىپ ئېلان 
 
 # 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-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 1653977..d5d554e 100644 (file)
@@ -56,7 +56,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbedit' => 'Uzgartish',
-'qbspecialpages' => 'Alahida tor batleri',
 
 'help' => 'Yardem',
 'search' => 'Izdash',
@@ -75,7 +74,7 @@ $messages = array(
 'otherlanguages' => 'Bashqa tillarda',
 'jumptosearch' => 'izdash',
 
-# 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).
+# 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).
 'currentevents' => 'Hazirqi weqeler',
 'edithelp' => 'Uzgartish yardemi',
 'mainpage' => 'Bash Bet',
@@ -119,7 +118,6 @@ $messages = array(
 # Search results
 'prevn' => 'aldinqi {{PLURAL:$1|$1}}',
 'nextn' => 'kéyinki {{PLURAL:$1|$1}}',
-'powersearch' => 'Izdash',
 
 # Preferences page
 'prefs-rc' => 'Yengi uzgurush',
@@ -232,4 +230,7 @@ $messages = array(
 # Special:SpecialPages
 'specialpages' => 'Alahide tor betleri',
 
+# Special:ExpandTemplates
+'expand_templates_ok' => 'Maqul',
+
 );
index 4f06b5d..22e6674 100644 (file)
@@ -120,7 +120,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'Помилковий_заголовок' ),
        'Blankpage'                 => array( 'Порожня_сторінка' ),
        'Block'                     => array( 'Заблокувати' ),
-       'Blockme'                   => array( 'Заблокуйте_мене' ),
        'Booksources'               => array( 'Джерела_книг' ),
        'BrokenRedirects'           => array( 'Розірвані_перенаправлення' ),
        'Categories'                => array( 'Категорії' ),
@@ -132,10 +131,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Створити_обліковий_запис' ),
        'Deadendpages'              => array( 'Сторінки_без_посилань' ),
        'DeletedContributions'      => array( 'Вилучений_внесок' ),
-       'Disambiguations'           => array( 'Неоднозначні_посилання' ),
        'DoubleRedirects'           => array( 'Подвійні_перенаправлення' ),
        'EditWatchlist'             => array( 'Редагувати_список_спостереження' ),
        'Emailuser'                 => array( 'Лист_користувачеві' ),
+       'ExpandTemplates'           => array( 'Розгортання_шаблонів' ),
        'Export'                    => array( 'Експорт' ),
        'Fewestrevisions'           => array( 'Найменшредаговані' ),
        'FileDuplicateSearch'       => array( 'Пошук_дублікатів_файлів' ),
@@ -158,6 +157,8 @@ $specialPageAliases = array(
        'MIMEsearch'                => array( 'Пошук_за_MIME' ),
        'Mostcategories'            => array( 'Найбільш_категоризовані' ),
        'Mostimages'                => array( 'Найуживаніші_файли' ),
+       'Mostinterwikis'            => array( 'Найбільше_інтервікі' ),
+       'Mostlinked'                => array( 'Найуживаніші_сторінки', 'Найбільше_посилань' ),
        'Mostlinkedcategories'      => array( 'Найуживаніші_категорії' ),
        'Mostlinkedtemplates'       => array( 'Найуживаніші_шаблони' ),
        'Mostrevisions'             => array( 'Найбільш_редаговані' ),
@@ -278,8 +279,8 @@ $magicWords = array(
        'img_center'                => array( '1', 'центр', 'center', 'centre' ),
        'img_framed'                => array( '1', 'обрамити', 'рамка', 'обрамить', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', 'безрамки', 'frameless' ),
-       'img_page'                  => array( '1', 'сторінка=$1', 'сторінка $1', 'страница=$1', 'страница $1', 'страница $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'зверхуправоруч', 'зверхуправоруч=$1', 'зверхуправоруч $1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'сторінка=$1', 'сторінка_$1', 'страница=$1', 'страница_$1', 'страница $1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'зверхуправоруч', 'зверхуправоруч=$1', 'зверхуправоруч_$1', 'сверхусправа', 'сверхусправа=$1', 'сверхусправа_$1', 'сверхусправа $1', 'upright', 'upright=$1', 'upright $1' ),
        'img_border'                => array( '1', 'межа', 'граница', 'border' ),
        'img_baseline'              => array( '1', 'основа', 'основание', 'baseline' ),
        'img_sub'                   => array( '1', 'під', 'под', 'sub' ),
@@ -365,7 +366,8 @@ $linkPrefixCharset = '„«';
 
 $messages = array(
 # User preference toggles
-'tog-underline' => 'Підкреслювати посилання:',
+'tog-underline' => 'Підкреслювати посилання:
+Підкреслювання посилань:',
 'tog-justify' => 'Вирівнювати текст по ширині сторінки',
 'tog-hideminor' => 'Приховати незначні редагування у списку останніх змін',
 'tog-hidepatrolled' => 'Приховувати патрульовані редагування у списку нових редагувань',
@@ -378,7 +380,7 @@ $messages = array(
 'tog-editsection' => 'Показувати посилання [ред.] для кожного розділу',
 'tog-editsectiononrightclick' => 'Редагувати розділи при клацанні правою кнопкою мишки на заголовку',
 'tog-showtoc' => 'Показувати зміст (для сторінок з більш ніж трьома заголовками)',
-'tog-rememberpassword' => "Запам'ятати мій обліковий запис для цього браузера (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
+'tog-rememberpassword' => "Запам'ятати мій обліковий запис для цього браузера (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
 'tog-watchcreations' => 'Додавати створені мною сторінки і завантажені мною файли до мого списку спостереження',
 'tog-watchdefault' => 'Додавати змінені мною сторінки та файли до мого списку спостереження',
 'tog-watchmoves' => 'Додавати перейменовані мною сторінки та файли до мого списку спостереження',
@@ -386,7 +388,6 @@ $messages = array(
 'tog-minordefault' => 'Спочатку позначати всі зміни незначними',
 'tog-previewontop' => 'Показувати попередній перегляд перед вікном редагування, а не після',
 'tog-previewonfirst' => 'Показувати попередній перегляд під час першого редагування',
-'tog-nocache' => 'Відключити кешування сторінок браузером',
 'tog-enotifwatchlistpages' => 'Повідомляти електронною поштою про зміну сторінки або файлу з мого списку спостереження',
 'tog-enotifusertalkpages' => 'Повідомляти електронною поштою про зміну моєї сторінки обговорення',
 'tog-enotifminoredits' => 'Надсилати мені електронного листа навіть при незначних редагуваннях сторінок та файлів',
@@ -486,12 +487,12 @@ $messages = array(
 'december-date' => '$1 грудня',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Категорія|Категорії}}',
+'pagecategories' => '{{PLURAL:$1|1=Категорія|Категорії|Категорій}}',
 'category_header' => 'Сторінки в категорії «$1»',
 'subcategories' => 'Підкатегорії',
 'category-media-header' => 'Файли в категорії «$1»',
 'category-empty' => "''Ця категорія зараз порожня.''",
-'hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}}',
+'hidden-categories' => '{{PLURAL:$1|1=Прихована категорія|Приховані категорії|Прихованих категорій}}',
 'hidden-category-category' => 'Приховані категорії',
 'category-subcat-count' => 'Показано $1 {{PLURAL:$1|підкатегорію з|підкатегорії з|підкатегорій із}} $2.',
 'category-subcat-count-limited' => 'У цій категорії {{PLURAL:$1|$1 підкатегорія|$1 підкатегорії|$1 підкатегорій}}.',
@@ -523,7 +524,6 @@ $messages = array(
 'qbedit' => 'Редагувати',
 'qbpageoptions' => 'Налаштування сторінки',
 'qbmyoptions' => 'Мої налаштування',
-'qbspecialpages' => 'Спеціальні сторінки',
 'faq' => 'Часті питання',
 'faqpage' => 'Project:Часті питання',
 
@@ -631,7 +631,7 @@ $1',
 
 'badaccess' => 'Помилка доступу',
 'badaccess-group0' => 'Вам не дозволено виконувати цю дію.',
-'badaccess-groups' => 'Дія, яку Ви хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|групи|груп}}: $1.',
+'badaccess-groups' => 'Дія, яку Ви хотіли зробити, дозволена лише користувачам із {{PLURAL:$2|1=групи|груп}}: $1.',
 
 'versionrequired' => 'Потрібна MediaWiki версії $1',
 'versionrequiredtext' => 'Для роботи з цією сторінкою потрібна MediaWiki версії $1. Див. [[Special:Version|інформацію про версії програмного забезпечення, яке використовується]].',
@@ -641,10 +641,10 @@ $1',
 'pagetitle-view-mainpage' => '{{SITENAME}}',
 'retrievedfrom' => 'Отримано з $1',
 'youhavenewmessages' => 'Ви отримали $1 ($2).',
-'youhavenewmessagesfromusers' => 'Ви отримали $1 від {{PLURAL:$3|іншого дописувача|$3 інших дописувачів}} ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|1=Ви отримали|Ви отримали}} $1 від {{PLURAL:$3|1=іншого дописувача|$3 інших дописувачів}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ви отримали $1 від багатьох дописувачів ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нове повідомлення|999=нові повідомлення}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|остання зміна|999=останні зміни}}',
+'newmessageslinkplural' => '{{PLURAL:$1|1=нове повідомлення|999=нові повідомлення}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|1=остання зміна|999=останні зміни}}',
 'youhavenewmessagesmulti' => 'Ви отримали нові повідомлення на $1',
 'editsection' => 'ред.',
 'editold' => 'ред.',
@@ -741,12 +741,9 @@ $1',
 'badtitle' => 'Неприпустима назва',
 'badtitletext' => 'Запитана назва сторінки неправильна, порожня, або неправильно зазначена міжмовна чи міжвікі назва.
 Можливо, в назві використовуються недопустимі символи.',
-'perfcached' => 'Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше  {{PLURAL:$1| запису| записів}}.',
-'perfcachedts' => 'Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|запису|записів}}.',
+'perfcached' => 'Наступні дані взяті з кешу і можуть бути застарілими. В кеші зберігається не більше {{PLURAL:$1|1=одного запису|$1 записів}}.',
+'perfcachedts' => 'Наступні дані взяті з кешу, востаннє він оновлювався о $1. У кеші зберігається не більше $4 {{PLURAL:$4|1=запису|записів}}.',
 'querypage-no-updates' => 'Зміни цієї сторінки зараз заборонені. Дані тут не можуть бути оновлені зараз.',
-'wrong_wfQuery_params' => 'Неприпустима параметри функцій wfQuery()<br />
-Функція: $1<br />
-Запит: $2',
 'viewsource' => 'Перегляд',
 'viewsource-title' => 'Перегляд вихідного коду сторінки $1',
 'actionthrottled' => 'Обмеження за швидкістю',
@@ -756,7 +753,7 @@ $1',
 'viewyourtext' => "Ви можете переглянути та скопіювати текст '''ваших редагувань''' на цій сторінці:",
 'protectedinterface' => 'Ця сторінка є частиною інтерфейсу програмного забезпечення цієї вікі і її можуть редагувати лише адміністратори проекту. Щоб додати або змінити переклади для усіх вікі, відвідайте [//translatewiki.net/ translatewiki.net], проект локалізації MediaWiki.',
 'editinginterface' => "'''Увага:''' Ви редагуєте сторінку, що є частиною текстового інтерфейсу. Зміни цієї сторінки спричинять зміну інтерфейсу для інших користувачів. Для перекладу повідомлення використовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займається локалізацією MediaWiki.",
-'cascadeprotected' => 'Сторінка захищена від змін, оскільки її включено до {{PLURAL:$1|сторінки, для якої|наступних сторінок, для яких}} установлено каскадний захист: $2',
+'cascadeprotected' => 'Сторінка захищена від змін, оскільки її включено до {{PLURAL:$1|1=сторінки, для якої|наступних сторінок, для яких}} установлено каскадний захист: $2',
 'namespaceprotected' => 'У вас нема дозволу редагувати сторінки в просторі назв «$1».',
 'customcssprotected' => 'У вас немає прав на редагування цієї CSS-сторінки, так як вона містить особисті налаштування іншого користувача.',
 'customjsprotected' => 'У вас немає дозволу на редагування цієї JavaScript-сторінки, так як вона містить особисті налаштування іншого користувача.',
@@ -798,7 +795,7 @@ $1',
 'yourpasswordagain' => 'Повторний набір пароля:',
 'createacct-yourpasswordagain' => 'Підтвердіть пароль',
 'createacct-yourpasswordagain-ph' => 'Введіть пароль знову',
-'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|дня|днів}})",
+'remembermypassword' => "Запам'ятати мій обліковий запис на цьому комп'ютері (на строк не більше $1 {{PLURAL:$1|1=дня|днів}})",
 'userlogin-remembermypassword' => "Запам'ятати мене",
 'userlogin-signwithsecure' => "Захищене з'єднання",
 'yourdomainname' => 'Ваш домен:',
@@ -876,7 +873,7 @@ $1',
 'passwordtooshort' => 'Ваш пароль закороткий, він має містити принаймні $1 {{PLURAL:$1|символ|символи|символів}}.',
 'password-name-match' => 'Уведений пароль має відрізнятися від імені користувача.',
 'password-login-forbidden' => 'Використання цього імені користувача і пароля заборонено.',
-'mailmypassword' => 'Ð\9dадÑ\96Ñ\81лаÑ\82и Ð½Ð¾Ð²Ð¸Ð¹ пароль',
+'mailmypassword' => 'Ð\9fеÑ\80евÑ\81Ñ\82ановиÑ\82и пароль',
 'passwordremindertitle' => "Пам'ятка пароля користувача {{grammar:genitive|{{SITENAME}}}}",
 'passwordremindertext' => 'Хтось (можливо, ви, з IP-адреси $1) зробив запит
 на надсилання вам нового пароля користувача {{grammar:genitive|{{SITENAME}}}} ($4). Для користувача
@@ -894,7 +891,7 @@ $1',
 'blocked-mailpassword' => 'Редагування з вашої IP-адреси заборонено, заблокована також функція відновлення пароля.',
 'eauthentsent' => 'На вказану адресу електронної пошти відправлено лист.
 Щоб отримувати листи надалі, дотримуйтесь викладених там інструкцій для підтвердження того, що ця адреса належить вам.',
-'throttled-mailpassword' => 'Інструкція по відновленню паролю вже була вислана електронною поштою протягом {{PLURAL:$1|останньої години|останніх $1 годин}}.
+'throttled-mailpassword' => 'Інструкція по відновленню паролю вже була вислана електронною поштою протягом {{PLURAL:$1|1=останньої години|останніх $1 годин}}.
 Для попередження зловживань дозволено надсилати тільки одну інструкцію за {{PLURAL:$1|годину|$1 години|$1 годин}}.',
 'mailerror' => 'Помилка при відправці пошти: $1',
 'acct_creation_throttle_hit' => 'Відвідувачі з вашої IP-адреси вже створили $1 {{PLURAL:$1|обліковий запис|облікових записи|облікових записів}} за останню добу, що є максимумом для цього відрізка часу.
@@ -928,7 +925,7 @@ $1',
 'user-mail-no-body' => 'Спроба надіслати електронного листа з порожнім або надто коротким вмістом.',
 
 # Change password dialog
-'resetpass' => 'Змінити пароль',
+'changepassword' => 'Змінити пароль',
 'resetpass_announce' => 'Ви ввійшли, використовуючи тимчасовий пароль, який отримали електронною поштою. Для завершення входу до системи, ви повинні вказати новий пароль тут:',
 'resetpass_text' => '<!-- Додавайте текст сюди -->',
 'resetpass_header' => 'Змінити пароль облікового запису',
@@ -949,7 +946,7 @@ $1',
 # Special:PasswordReset
 'passwordreset' => 'Скинути пароль',
 'passwordreset-text-one' => 'Заповніть цю форму для відновлення пароля.',
-'passwordreset-text-many' => '{{PLURAL:$1|Заповніть одне з полів для скидання пароля.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Заповніть одне з полів для отримання тимчасового паролю через електронну пошту.}}',
 'passwordreset-legend' => 'Перевстановити пароль',
 'passwordreset-disabled' => 'У цій вікі вимкнена можливість скидання пароля.',
 'passwordreset-emaildisabled' => 'Функції електронної пошти вимкнуто в цій вікі.',
@@ -959,17 +956,17 @@ $1',
 'passwordreset-capture-help' => 'Якщо Ви встановите відмітку, Вам буде показаний електронний лист (із тимчасовим паролем), який буде відправлений користувачеві.',
 'passwordreset-email' => 'Адреса електронної пошти:',
 'passwordreset-emailtitle' => 'Деталі облікового запису на {{SITENAME}}',
-'passwordreset-emailtext-ip' => "Хтось (імовірно Ви, з IP-адреси $1) попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|ий такий запис|і такі записи}}:
+'passwordreset-emailtext-ip' => "Хтось (імовірно Ви, з IP-адреси $1) попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|1=ий такий запис|і такі записи}}:
 
 $2
 
-{{PLURAL:$3|Цей тимчасовий пароль|Ці тимчасові паролі}} стануть недійсні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+{{PLURAL:$3|1=Цей тимчасовий пароль стане недійсним|Ці тимчасові паролі стануть недійсними}} через $5 {{PLURAL:$5|день|дні|днів}}.
 Ви маєте ввійти в систему і вибрати новий пароль. Якщо ж цей запит зробив хтось інший, або Ви пам'ятаєте свій старий пароль і не бажаєте його змінювати, можете просто проігнорувати це повідомлення та продовжувати використовувати старий пароль.",
-'passwordreset-emailtext-user' => "Користувач $1 з {{SITENAME}} попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|ий такий запис|і такі записи}}:
+'passwordreset-emailtext-user' => "Користувач $1 з {{SITENAME}} попросив нагадати деталі Вашого облікового запису для {{SITENAME}} ($4). З Вашою електронною скринькою пов'язан{{PLURAL:$3|1=ий такий запис|і такі записи}}:
 
 $2
 
-{{PLURAL:$3|Цей тимчасовий пароль|Ці тимчасові паролі}} стануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+{{PLURAL:$3|1=Цей тимчасовий пароль|Ці тимчасові паролі}} стануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
 Ви маєте ввійти в систему і вибрати новий пароль. Якщо ж цей запит зробив хтось інший, або Ви пам'ятаєте свій старий пароль і не бажаєте його змінювати, можете просто проігнорувати це повідомлення та продовжувати використовувати старий пароль.",
 'passwordreset-emailelement' => "Ім'я користувача: $1
 Тимчасовий пароль: $2",
@@ -1173,12 +1170,12 @@ $2
 Останній запис журналу наведений нижче для довідки:",
 'semiprotectedpagewarning' => "'''Зауваження:''' Ця сторінка захищена так, що її можуть редагувати тільки зареєстровані користувачі.
 Останній запис журналу наведений нижче для довідки:",
-'cascadeprotectedwarning' => "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
+'cascadeprotectedwarning' => "'''Попередження:''' Цю сторінку можуть редагувати лише користувачі з групи «Адміністратори», оскільки вона включена {{PLURAL:$1|1=до сторінки, для якої|до наступних сторінок, для яких}} активовано каскадний захист:",
 'titleprotectedwarning' => "'''Попередження. Ця сторінка була захищена так, що для її створення потрібні [[Special:ListGroupRights|особливі права]].'''
 Останній запис журналу наведений нижче для довідки:",
-'templatesused' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} на цій сторінці:',
-'templatesusedpreview' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:',
-'templatesusedsection' => '{{PLURAL:$1|Шаблон, використаний|Шаблони, використані}} у цій секції:',
+'templatesused' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} на цій сторінці:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цьому попередньому перегляді:',
+'templatesusedsection' => '{{PLURAL:$1|1=Шаблон, використаний|Шаблони, використані}} у цій секції:',
 'template-protected' => '(захищено)',
 'template-semiprotected' => '(частково захищено)',
 'hiddencategories' => 'Ця сторінка належить до $1 {{PLURAL:$1|прихованої категорії|прихованих категорій|прихованих категорій}}:',
@@ -1190,8 +1187,8 @@ $2
 'sectioneditnotsupported-title' => 'Редагування окремих розділів не підтримується',
 'sectioneditnotsupported-text' => 'На цій сторінці не підтримується редагування окремих розділів',
 'permissionserrors' => 'Помилка доступу',
-'permissionserrorstext' => 'У вас нема прав на виконання цієї операції з {{PLURAL:$1|наступної причини|наступних причин}}:',
-'permissionserrorstext-withaction' => 'У вас нема дозволу на $2 з {{PLURAL:$1|такої причини|таких причин}}:',
+'permissionserrorstext' => 'У вас нема прав на виконання цієї операції з {{PLURAL:$1|1=наступної причини|наступних причин}}:',
+'permissionserrorstext-withaction' => 'У вас нема дозволу на $2 з {{PLURAL:$1|1=такої причини|таких причин}}:',
 'recreate-moveddeleted-warn' => "'''Попередження: ви намагаєтеся створити сторінку, яка раніше вже була вилучена.'''
 
 Перевірте, чи справді вам потрібно знову створювати цю сторінку.
@@ -1214,6 +1211,8 @@ $2
 'content-not-allowed-here' => 'Вміст «$1» недопустимий на сторінці [[$2]]',
 'editwarning-warning' => 'Перехід на іншу сторінку призведе до втрати ваших змін.
 Якщо ви ввійшли до системи, то ви можете відключити це попередження в розділі «Редагування» ваших налаштувань.',
+'editpage-notsupportedcontentformat-title' => 'Непідтримуваний формат вмісту',
+'editpage-notsupportedcontentformat-text' => 'Формат вмісту $1 не підтримується моделлю вмісту $2.',
 
 # Content models
 'content-model-wikitext' => 'вікітекст',
@@ -1256,6 +1255,9 @@ $2
 'cantcreateaccount-text' => "Створення облікових записів із цієї IP-адреси ('''$1''') було заблоковане [[User:$3|користувачем $3]].
 
 $3 зазначив таку причину: ''$2''",
+'cantcreateaccount-range-text' => "Створення облікового запису із IP-адрес у діапазоні  '''$1''', який включає вашу IP-адресу ('''$4'''), вже заблоковано користувачем [[User:$3|$3]].
+
+Користувач $3 вказав як причину ''$2''",
 
 # History pages
 'viewpagelogs' => 'Показати журнали для цієї сторінки',
@@ -1324,15 +1326,11 @@ $3 зазначив таку причину: ''$2''",
 'revisiondelete' => 'Вилучити / відновити версії сторінки',
 'revdelete-nooldid-title' => 'Не вказана цільова версія',
 'revdelete-nooldid-text' => 'Ви не вказали цільову версію (чи версії) для виконання цієї функції.',
-'revdelete-nologtype-title' => 'Не зазначений тип журналу',
-'revdelete-nologtype-text' => 'Ви не зазначили тип журналу, в якому слід виконати дію.',
-'revdelete-nologid-title' => 'Помилковий запис журналу',
-'revdelete-nologid-text' => 'Ви не зазначили цільовий запис журналу для виконання дії або зазначений запис не існує.',
 'revdelete-no-file' => 'Зазначений файл не існує.',
 'revdelete-show-file-confirm' => 'Ви впевнені, що хочете переглянути вилучену версію файлу «<nowiki>$1</nowiki>» від $3 $2?',
 'revdelete-show-file-submit' => 'Так',
-'revdelete-selected' => "'''{{PLURAL:$2|Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
-'logdelete-selected' => "'''{{PLURAL:$1|Обраний запис|Обрані записи}} журналу:'''",
+'revdelete-selected' => "'''{{PLURAL:$2|1=Обрана версія|Обрані версії}} сторінки [[:$1]]:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|1=Обраний запис|Обрані записи}} журналу:'''",
 'revdelete-text' => "'''Вилучені версії сторінок і подій будуть відображатися в історії сторінки та журналах, але частина їх вмісту не буде доступною звичайним користувачам.'''
 Доступ до прихованого змісту матимуть адміністратори проекту {{SITENAME}}, які зможуть відновити його за допомогою цього ж інтерфейсу,
 крім випадків, коли були встановлені додаткові обмеження власниками сайту.",
@@ -1349,12 +1347,12 @@ $3 зазначив таку причину: ''$2''",
 'revdelete-hide-user' => "Ім'я автора/IP адреса",
 'revdelete-hide-restricted' => 'Приховати дані також і від адміністраторів',
 'revdelete-radio-same' => '(не змінювати)',
-'revdelete-radio-set' => 'Ð\92идимо',
-'revdelete-radio-unset' => 'Ð\9fÑ\80иÑ\85овано',
+'revdelete-radio-set' => 'Ð\9fÑ\80иÑ\85овано',
+'revdelete-radio-unset' => 'Ð\92идимо',
 'revdelete-suppress' => 'Приховувати дані також і від адміністраторів',
 'revdelete-unsuppress' => 'Зняти обмеження з відновлених версій',
 'revdelete-log' => 'Причина:',
-'revdelete-submit' => 'Застосувати до {{PLURAL:$1|обраної версії|обраних версій}}',
+'revdelete-submit' => 'Застосувати до {{PLURAL:$1|1=обраної версії|обраних версій}}',
 'revdelete-success' => "'''Видимість версії успішно змінена.'''",
 'revdelete-failure' => "'''Видимість версії неможливо змінити:'''
 $1",
@@ -1362,8 +1360,6 @@ $1",
 'logdelete-failure' => "'''Не вдалося встановити видимість журналу:'''
 $1",
 'revdel-restore' => 'Змінити видимість',
-'revdel-restore-deleted' => 'вилучені версії',
-'revdel-restore-visible' => 'видимі версії',
 'pagehist' => 'Історія сторінки',
 'deletedhist' => 'Історія вилучень',
 'revdelete-hide-current' => 'Помилка приховування запису від $2, $1: це поточна версія.
@@ -1431,9 +1427,9 @@ $1",
 'showhideselectedversions' => 'Показати/приховати обрані версії',
 'editundo' => 'скасувати',
 'diff-empty' => '(Немає відмінностей)',
-'diff-multi' => '({{PLURAL:$1|Одна проміжна версія одного користувача не показана|$1 проміжні версії {{PLURAL:$2|одного користувача|$2 користувачів}} не показані|$1 проміжних версій {{PLURAL:$2|одного користувача|$2 користувачів}} не показані}})',
-'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 проміжна я версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|$1 користувачем|$2 користувачами}})',
-'difference-missing-revision' => '{{PLURAL:$2|$2 версія|$2 версії|$2 версій}} для цього порівняння ($1) не {{PLURAL:$2|знайдена|знайдені}}.
+'diff-multi' => '({{PLURAL:$1|Одна проміжна версія одного користувача не показана|$1 проміжні версії {{PLURAL:$2|1=одного користувача|$2 користувачів}} не показані|$1 проміжних версій {{PLURAL:$2|1=одного користувача|$2 користувачів}} не показано}})',
+'diff-multi-manyusers' => '({{PLURAL:$1|не показана $1 проміжна версія|не показані $1 проміжні версії|не показано $1 проміжних версій}}, зроблених більш, ніж {{PLURAL:$2|1=$1 користувачем|$2 користувачами}})',
+'difference-missing-revision' => '{{PLURAL:$2|$2 версія|$2 версії|$2 версій}} для цього порівняння ($1) не {{PLURAL:$2|1=знайдена|знайдені}}.
 
 Імовірно, ви перейшли за застарілим посиланням на порівняння версій вилученої сторінки.
 Подробиці можна дізнатися з [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} журналу вилучень].',
@@ -1441,12 +1437,8 @@ $1",
 # Search results
 'searchresults' => 'Результати пошуку',
 'searchresults-title' => 'Результати пошуку для «$1»',
-'searchresulttext' => 'Для отримання детальнішої інформації про пошук у проекті, див. [[{{MediaWiki:Helppage}}|розділ допомоги]].',
-'searchsubtitle' => 'Ви шукали «[[:$1]]» ([[Special:Prefixindex/$1|усі сторінки, що починаються на «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|усі сторінки, що мають посилання на «$1»]])',
-'searchsubtitleinvalid' => 'На запит «$1»',
 'toomanymatches' => 'Знайдено дуже багато відповідностей, будь ласка, спробуйте інший запит',
 'titlematches' => 'Збіги в назвах сторінок',
-'notitlematches' => 'Нема збігів у назвах сторінок',
 'textmatches' => 'Збіги в текстах сторінок',
 'notextmatches' => 'Немає збігів у текстах сторінок',
 'prevn' => '{{PLURAL:$1|попередня $1|попередні $1|попередні $1}}',
@@ -1455,10 +1447,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|Наступний $1 запис|Наступні $1 записи|Наступні $1 записів}}',
 'shown-title' => 'Показувати $1 {{PLURAL:$1|запис|записи|записів}} на сторінці',
 'viewprevnext' => 'Переглянути ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Параметри пошуку',
 'searchmenu-exists' => "'''У цій вікі є сторінка з назвою «[[:$1]]»'''",
 'searchmenu-new' => "'''Створити сторінку «[[:$1]]» у цій вікі!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Показати сторінки з цим префіксом]]',
 'searchprofile-articles' => 'Статті',
 'searchprofile-project' => 'Сторінки довідки і проекту',
 'searchprofile-images' => 'Мультимедіа',
@@ -1479,20 +1469,16 @@ $1",
 'search-interwiki-default' => '$1 результати:',
 'search-interwiki-more' => '(більше)',
 'search-relatedarticle' => "Пов'язаний",
-'mwsuggest-disable' => 'Вимкнути пошукові підказки',
 'searcheverything-enable' => 'Пошук у всіх просторах назв',
 'searchrelated' => "пов'язаний",
 'searchall' => 'усі',
 'showingresults' => "Нижче {{PLURAL:$1|показане|показані|показані}} '''$1''' {{PLURAL:$1|результат|результати|результатів}}, починаючи з №&nbsp;'''$2'''",
 'showingresultsnum' => 'Нижче показано <strong>$3</strong> {{PLURAL:$3|результат|результати|результатів}}, починаючи з №&nbsp;<strong>$2</strong>.',
-'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
-'nonefound' => "'''Зауваження:''' За умовчанням пошук відбувається не в усіх просторах назв. Використовуйте префікс ''all:'', щоб шукати у всіх просторах назв (у т.ч. сторінки обговорень, шаблони тощо), або зазначте потрібний простір назв.",
+'showingresultsheader' => "{{PLURAL:$5|1=Результат '''$1''' з '''$3'''|Результати '''$1 — $2''' з '''$3'''}} для '''$4'''",
 'search-nonefound' => 'Не знайдено результатів, що відповідають запиту.',
-'powersearch' => 'Розширений пошук',
 'powersearch-legend' => 'Розширений пошук',
 'powersearch-ns' => 'Пошук у просторах назв:',
 'powersearch-redir' => 'Показувати перенаправлення',
-'powersearch-field' => 'Шукати',
 'powersearch-togglelabel' => 'Позначити:',
 'powersearch-toggleall' => 'Усі',
 'powersearch-togglenone' => 'Жодний',
@@ -1505,7 +1491,6 @@ $1",
 'mypreferences' => 'Налаштування',
 'prefs-edits' => 'Кількість редагувань:',
 'prefsnologintext2' => 'Потрібно $1 для налаштування параметрів користувача.',
-'changepassword' => 'Змінити пароль',
 'prefs-skin' => 'Оформлення',
 'skin-preview' => 'Попередній перегляд',
 'datedefault' => 'Стандартний',
@@ -1528,13 +1513,11 @@ $1",
 'prefs-email' => 'Параметри електронної пошти',
 'prefs-rendering' => 'Зовнішній вигляд',
 'saveprefs' => 'Зберегти',
-'resetprefs' => 'Скасувати незбережені зміни',
 'restoreprefs' => 'Відновити всі стандартні налаштування (у всіх розділах)',
 'prefs-editing' => 'Редагування',
 'rows' => 'Рядків:',
 'columns' => 'Колонок:',
 'searchresultshead' => 'Пошук',
-'resultsperpage' => 'Кількість результатів на сторінку:',
 'stub-threshold' => 'Поріг для визначення оформлення <a href="#" class="stub">посилань на стаби</a> (у байтах):',
 'stub-threshold-disabled' => 'Вимкнений',
 'recentchangesdays' => 'За скільки днів показувати нові редагування:',
@@ -1549,7 +1532,6 @@ $1",
 'localtime' => 'Місцевий час:',
 'timezoneuseserverdefault' => 'Використовувати стандартне налаштування вікі ($1)',
 'timezoneuseoffset' => 'Інше (зазначте зміщення)',
-'timezoneoffset' => 'Зміщення¹:',
 'servertime' => 'Час сервера:',
 'guesstimezone' => 'Заповнити з браузера',
 'timezoneregion-africa' => 'Африка',
@@ -1577,7 +1559,7 @@ $1",
 'youremail' => 'Адреса електронної пошти:',
 'username' => "{{GENDER:$1|Ім'я користувача|Ім'я користувачки}}:",
 'uid' => 'Ідентифікатор {{GENDER:$1|користувача}}:',
-'prefs-memberingroups' => '{{GENDER:$2|Член}} {{PLURAL:$1|групи|груп}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Член}} {{PLURAL:$1|1=групи|груп}}:',
 'prefs-memberingroups-type' => '$1',
 'prefs-registration' => 'Час реєстрації:',
 'prefs-registration-date-time' => '$1',
@@ -1591,7 +1573,7 @@ $1",
 Перевірте коректність HTML-тегів.',
 'badsiglength' => 'Ваш підпис дуже довгий.
 Повинно бути не більше $1 {{PLURAL:$1|символу|символів|символів}}.',
-'yourgender' => 'Як Ð²Ð¸ Ð²Ð¾Ð»Ñ\96Ñ\94Ñ\82е Ð±Ñ\83Ñ\82и Ð¾Ð¿Ð¸Ñ\81аним?',
+'yourgender' => 'СÑ\82аÑ\82Ñ\8c:',
 'gender-unknown' => 'Не визначена',
 'gender-male' => 'Чоловіча',
 'gender-female' => 'Жіноча',
@@ -1621,14 +1603,15 @@ $1",
 'prefs-tokenwatchlist' => 'Жетон',
 'prefs-diffs' => 'Різниці версій',
 'prefs-help-prefershttps' => 'Цей параметр набуде чинності при вашому наступному вході у систему.',
+'prefs-tabs-navigation-hint' => 'Порада: Ви можете використовувати клавіші стрілок вліво і вправо для переходу між вкладками в списку вкладок.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Адреса електронної пошти є чинною',
 'email-address-validity-invalid' => 'Введіть чинну адресу електронної пошти',
 
 # User rights
-'userrights' => 'УпÑ\80авлÑ\96ння правами користувачів',
-'userrights-lookup-user' => 'УпÑ\80авлÑ\96ння групами користувача',
+'userrights' => 'Ð\9aеÑ\80Ñ\83вання правами користувачів',
+'userrights-lookup-user' => 'Ð\9aеÑ\80Ñ\83вання групами користувача',
 'userrights-user-editname' => "Введіть ім'я користувача:",
 'editusergroup' => 'Редагувати групи користувача',
 'editinguser' => "Зміна прав користувача '''[[User:$1|$1]]''' $2",
@@ -1808,14 +1791,14 @@ $1",
 'recentchanges-label-bot' => 'Це редагування зроблене ботом',
 'recentchanges-label-unpatrolled' => 'Це редагування ще не було відпатрульоване',
 'recentchanges-label-plusminus' => 'Розмір сторінки змінився на таке число байтів',
+'recentchanges-legend-heading' => "'''Легенда:'''",
 'recentchanges-legend-newpage' => '(див. також [[Special:NewPages|список нових сторінок]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "{{PLURAL:$1|Остання '''$1''' зміна|Останні '''$1''' зміни|Останні '''$1''' змін}} за '''$2''' {{PLURAL:$2|день|дні|днів}}, на час $5, $4.",
 'rcnotefrom' => 'Нижче відображені редагування з <strong>$2</strong> (до <strong>$1</strong>).',
 'rclistfrom' => 'Показати редагування починаючи з $1.',
 'rcshowhideminor' => '$1 незначні редагування',
 'rcshowhidebots' => '$1 ботів',
-'rcshowhideliu' => '$1 зареєстрованих',
+'rcshowhideliu' => '$1 зареєстрованих користувачів',
 'rcshowhideanons' => '$1 анонімів',
 'rcshowhidepatr' => '$1 перевірені',
 'rcshowhidemine' => '$1 мої редагування',
@@ -1901,9 +1884,9 @@ $1",
 'filetype-badmime' => 'Файли, що мають MIME-тип «$1», не можуть бути завантажені.',
 'filetype-bad-ie-mime' => 'Неможливо завантажити цей файл, оскільки Internet Explorer визначатиме його як «$1», тобто недозволеним і потенційно небезпечним типом файлу.',
 'filetype-unwanted-type' => "'''\".\$1\"''' — небажаний тип файлу.
-{{PLURAL:\$3|Бажаний тип файлів|Бажані типи файлів}}: \$2.",
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|недозволений тип файлів|недозволені типи файлів}}.
-{{PLURAL:$3|Дозволений тип файлів|Дозволені типи файлів}}: $2.',
+{{PLURAL:\$3|1=Бажаний тип файлів|Бажані типи файлів}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|1=недозволений тип файлів|недозволені типи файлів}}.
+{{PLURAL:$3|1=Дозволений тип файлів|Дозволені типи файлів}}: $2.',
 'filetype-missing' => 'Відсутнє розширення файлу (наприклад, «.jpg»).',
 'empty-file' => 'Надісланий вами файл порожній.',
 'file-too-large' => 'Файл, який ви надіслали, завеликий.',
@@ -1939,8 +1922,10 @@ $1",
 [[File:$1|thumb|center|$1]]',
 'fileexists-shared-forbidden' => 'Файл із такою назвою вже існує у спільному сховищі файлів.
 Якщо ви все ж хочете завантажити цей файл, будь ласка, поверніться назад і змініть назву файлу. [[File:$1|thumb|center|$1]]',
-'file-exists-duplicate' => 'Цей файл є дублікатом {{PLURAL:$1|файлу|таких файлів}}:',
+'file-exists-duplicate' => 'Цей файл є дублікатом {{PLURAL:$1|1=файлу|таких файлів}}:',
 'file-deleted-duplicate' => 'Такий самий файл ([[:$1]]) уже вилучався раніше. Будь ласка, ознайомтеся з історією вилучень файлу перед тим, як завантажити його знову.',
+'file-deleted-duplicate-notitle' => 'Файл, ідентичний до цього файлу, був раніше видалений, і назву було усунено.
+Вам слід попросити кого-небудь з можливістю перегляду усуненого файлу даних, щоб проаналізувати ситуацію, перш ніж приступити до повторного завантаження.',
 'uploadwarning' => 'Попередження',
 'uploadwarning-text' => 'Будь ласка, змініть наданий нижче опис файлу і спробуйте ще раз.',
 'savefile' => 'Зберегти файл',
@@ -2024,7 +2009,7 @@ $1',
 'backend-fail-connect' => 'Неможливо підключитися до сховища рушія "$1".',
 'backend-fail-internal' => 'Сталася невідома помилка у сховищі рушія "$1".',
 'backend-fail-contenttype' => 'Не вдалося визначити тип вмісту файла, щоб зберегти його в "$1".',
-'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
+'backend-fail-batchsize' => 'Серверна частина отримала блок із $1 {{PLURAL:$1|1=файлової операції|файлових операцій}}; обмеження складає $2 {{PLURAL:$2|файлову операцію|файлові операції|файлових операцій}}.',
 'backend-fail-usable' => 'Файл «$1» не може бути прочитано чи записано через недостатні повноваження або відсутність каталогів (контейнерів).',
 
 # File journal errors
@@ -2139,8 +2124,8 @@ $1',
 'filehist-comment' => 'Коментар',
 'filehist-missing' => 'Файл відсутній',
 'imagelinks' => 'Використання файлу',
-'linkstoimage' => '{{PLURAL:$1|Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
-'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|сторінки|сторінок}} посилаються на цей файл.
+'linkstoimage' => '{{PLURAL:$1|1=Наступна сторінка посилається|Наступні сторінки посилаються}} на цей файл:',
+'linkstoimage-more' => 'Більше $1 {{PLURAL:$1|1=сторінки|сторінок}} посилаються на цей файл.
 У цьому списку {{PLURAL:$1|показане тільки $1 посилання|показані тільки $1 посилання|показані тільки $1 посилань}} на цей файл.
 Також доступний [[Special:WhatLinksHere/$2|повний список]].',
 'nolinkstoimage' => 'Нема сторінок, що посилаються на цей файл.',
@@ -2215,7 +2200,7 @@ $1',
 
 # Random page
 'randompage' => 'Випадкова стаття',
-'randompage-nopages' => 'Нема сторінок в {{PLURAL:$2|просторі назв|просторах назв}} $1.',
+'randompage-nopages' => 'Нема сторінок в {{PLURAL:$2|1=просторі назв|просторах назв}} $1.',
 
 # Random page in category
 'randomincategory' => 'Випадкова сторінка у категорії',
@@ -2246,7 +2231,7 @@ $1',
 'statistics-views-peredit' => 'Переглядів на редагування',
 'statistics-users' => 'Зареєстрованих [[Special:ListUsers|користувачів]]',
 'statistics-users-active' => 'Активні користувачі',
-'statistics-users-active-desc' => 'Користувачі, які здійснили якусь дію протягом {{PLURAL:$1|минулого дня|минулих $1 днів}}',
+'statistics-users-active-desc' => 'Користувачі, які здійснили якусь дію протягом {{PLURAL:$1|1=минулого дня|$1 минулих днів}}',
 'statistics-mostpopular' => 'Сторінки, які найчастіше переглядають',
 
 'pageswithprop' => 'Сторінки з перевизначеними властивостями',
@@ -2283,10 +2268,11 @@ $1',
 'ninterwikis' => '$1 {{PLURAL:$1|інтервікі-посилання|інтервікі-посилання|інтервікі-посилань}}',
 'nlinks' => '$1 {{PLURAL:$1|посилання|посилання|посилань}}',
 'nmembers' => "$1 {{PLURAL:$1|об'єкт|об'єкти|об'єктів}}",
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|член|члени|членів}}',
 'nrevisions' => '$1 {{PLURAL:$1|версія|версії|версій}}',
 'nviews' => '$1 {{PLURAL:$1|перегляд|перегляди|переглядів}}',
-'nimagelinks' => 'Використовується на $1 {{PLURAL:$1|сторінці|сторінках}}',
-'ntransclusions' => 'використовується на $1 {{PLURAL:$1|сторінці|сторінках}}',
+'nimagelinks' => 'Використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}',
+'ntransclusions' => 'використовується на $1 {{PLURAL:$1|1=сторінці|сторінках}}',
 'specialpage-empty' => 'Запит не дав результатів.',
 'lonelypages' => 'Статті-сироти',
 'lonelypagestext' => 'На такі сторінки нема посилань з інших сторінок і вони не включаються до інших сторінок {{grammar:genitive|{{SITENAME}}}}.',
@@ -2321,10 +2307,9 @@ $1',
 'protectedpages' => 'Захищені сторінки',
 'protectedpages-indef' => 'Тільки безстроково захищені',
 'protectedpages-cascade' => 'Тільки каскадний захист',
-'protectedpagestext' => 'Такі сторінки захищені від перейменування або зміни.',
+'protectedpages-noredirect' => 'Сховати перенаправлення',
 'protectedpagesempty' => 'Зараз нема захищених сторінок із зазначеними параметрами',
 'protectedtitles' => 'Заборонені назви',
-'protectedtitlestext' => 'Наступні назви не дозволено використовувати',
 'protectedtitlesempty' => 'Зараз нема захищених назв із зазначеними параметрами.',
 'listusers' => 'Список користувачів',
 'listusers-editsonly' => 'Показати лише користувачів, які зробили принаймні одне редагування',
@@ -2377,9 +2362,6 @@ $1',
 'allpagesto' => 'Зупинити вивід на:',
 'allarticles' => 'Усі сторінки',
 'allinnamespace' => 'Усі сторінки (простір назв $1)',
-'allnotinnamespace' => 'Усі сторінки (крім простору назв $1)',
-'allpagesprev' => 'Попередні',
-'allpagesnext' => 'Наступні',
 'allpagessubmit' => 'Виконати',
 'allpagesprefix' => 'Знайти сторінки, що починаються з:',
 'allpagesbadtitle' => 'Неприпустима назва сторінки: можливо, заголовок містить міжмовний або міжпроектний префікс чи заборонені символи.',
@@ -2393,7 +2375,7 @@ $1',
 
 # Special:Categories
 'categories' => 'Категорії',
-'categoriespagetext' => '{{PLURAL:$1|Наступна категорія|Наступні категорії}} містять сторінки або медіа-файли.
+'categoriespagetext' => '{{PLURAL:$1|1=Наступна категорія містить|Наступні категорії містять}} сторінки або медіа-файли.
 Тут не показані [[Special:UnusedCategories|категорії, що не використовуються]].
 Див. також [[Special:WantedCategories|список необхідних категорій]].',
 'categoriesfrom' => 'Показати категорії, що починаються з:',
@@ -2412,7 +2394,7 @@ $1',
 'linksearch-ok' => 'Знайти',
 'linksearch-text' => 'Можна вживати підстановочні символи, наприклад, «*.wikipedia.org».
 Необхідно зазначити домен, принаймні верхнього рівня, наприклад «*.org».<br />
-{{PLURAL:$2|Підтримується протокол|Підтримуються протоколи}}: <code>$1</code> (за замовчуванням http:// , якщо жоден протокол не зазначено).',
+{{PLURAL:$2|1=Підтримується протокол|Підтримуються протоколи}}: <code>$1</code> (за замовчуванням http:// , якщо жоден протокол не зазначено).',
 'linksearch-line' => 'Посилання на $1 із $2',
 'linksearch-error' => 'Підстановочні знаки можуть використовуватися лише на початку адрес.',
 
@@ -2444,12 +2426,12 @@ $1',
 'listgrouprights-members' => '(список членів)',
 'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <code>($2)</code></span>',
 'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <code>($2)</code></span>',
-'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|групу|групи}}: $1',
-'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|групи|груп}}: $1',
+'listgrouprights-addgroup' => 'може додавати в {{PLURAL:$2|1=групу|групи}}: $1',
+'listgrouprights-removegroup' => 'може виключати з {{PLURAL:$2|1=групи|груп}}: $1',
 'listgrouprights-addgroup-all' => 'може додавати до всіх груп',
 'listgrouprights-removegroup-all' => 'може виключати зі всіх груп',
-'listgrouprights-addgroup-self' => 'може додавати {{PLURAL:$2|групу|групи}} до свого облікового запису: $1',
-'listgrouprights-removegroup-self' => 'може вилучати {{PLURAL:$2|групу|групи}} зі свого облікового запису: $1',
+'listgrouprights-addgroup-self' => 'може додавати {{PLURAL:$2|1=групу|групи}} до свого облікового запису: $1',
+'listgrouprights-removegroup-self' => 'може вилучати {{PLURAL:$2|1=групу|групи}} зі свого облікового запису: $1',
 'listgrouprights-addgroup-self-all' => 'Може додавати всі групи до свого облікового запису',
 'listgrouprights-removegroup-self-all' => 'може вилучати всі групи зі свого облікового запису',
 
@@ -2580,7 +2562,7 @@ $UNWATCHURL
 'exblank' => 'стаття була порожньою',
 'delete-confirm' => 'Вилучення «$1»',
 'delete-legend' => 'Вилучення',
-'historywarning' => "'''Попередження:''' Сторінка, яку ви збираєтеся вилучити, має історію редагувань з приблизно $1 {{PLURAL:$1|версії|версій}}:",
+'historywarning' => "'''Попередження:''' Сторінка, яку ви збираєтеся вилучити, має історію редагувань з приблизно $1 {{PLURAL:$1|1=версії|версій}}:",
 'confirmdeletetext' => 'Ви збираєтесь вилучити сторінку і всі її журнали редагувань з бази даних.
 Будь ласка, підтвердіть, що ви бажаєте зробити це, повністю розумієте наслідки і що робите це у відповідності з [[{{MediaWiki:Policy-url}}|правилами]].',
 'actioncomplete' => 'Дію виконано',
@@ -2606,6 +2588,7 @@ $UNWATCHURL
 'delete-warning-toobig' => 'У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.
 Її вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};
 дійте обережно.',
+'deleting-backlinks-warning' => "'''Попередження:''' інші сторінки посилаються на сторінку, яку ви маєте намір видалити.",
 
 # Rollback
 'rollback' => 'Відкинути редагування',
@@ -2657,7 +2640,7 @@ $UNWATCHURL
 Поточні установки для сторінки '''$1''':",
 'protect-locked-access' => "У вашого облікового запису недостатньо прав для зміни рівня захисту сторінки.
 Поточні установки для сторінки: '''$1''':",
-'protect-cascadeon' => 'Ця сторінка захищена, бо вона включена {{PLURAL:$1|до зазначеної нижче сторінки, на яку|до нижчезазначених сторінок, на які}} встановлено каскадний захист. Ви можете змінити рівень захисту цієї сторінки, але це не вплине на каскадний захист.',
+'protect-cascadeon' => 'Ця сторінка захищена, бо вона включена {{PLURAL:$1|1=до зазначеної нижче сторінки, на яку|до нижчезазначених сторінок, на які}} встановлено каскадний захист. Ви можете змінити рівень захисту цієї сторінки, але це не вплине на каскадний захист.',
 'protect-default' => 'Дозволити всім користувачам',
 'protect-fallback' => 'Дозволено тільки користувачам із дозволом «$1»',
 'protect-level-autoconfirmed' => 'Дозволено тільки автопідтвердженим користувачам',
@@ -2702,7 +2685,7 @@ $UNWATCHURL
 'undeletepage' => 'Перегляд і відновлення вилучених сторінок',
 'undeletepagetitle' => "'''Нижче наведені вилучені версії [[:$1|$1]]'''.",
 'viewdeletedpage' => 'Переглянути видалені сторінки',
-'undeletepagetext' => '{{PLURAL:$1|Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
+'undeletepagetext' => '{{PLURAL:$1|1=Сторінка була вилучена, однак вона все ще знаходиться в архіві, тому може бути відновлена|Такі сторінки були вилучені, але вони все ще знаходяться в архіві і тому можуть бути відновлені}}. Архів періодично очищається.',
 'undelete-fieldset-title' => 'Відновити версії',
 'undeleteextrahelp' => "Для повного відновлення історії сторінки залиште всі поля порожніми й натисніть '''''«{{int:undeletebtn}}»'''''. 
 Для виконання часткового відновлення помітьте відповідні змінені поля, а потім натисніть '''''«{{int:undeletebtn}}»'''''.",
@@ -2717,7 +2700,6 @@ $UNWATCHURL
 'undeletebtn' => 'Відновити',
 'undeletelink' => 'переглянути/відновити',
 'undeleteviewlink' => 'переглянути',
-'undeletereset' => 'Очистити',
 'undeleteinvert' => 'Інвертувати виділення',
 'undeletecomment' => 'Причина:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|редагування|редагування|редагувань}} відновлено',
@@ -2805,7 +2787,6 @@ $1',
 'block' => 'Заблокувати користувача',
 'unblock' => 'Розблокувати користувача',
 'blockip' => 'Блокування',
-'blockip-title' => 'Блокування користувача',
 'blockip-legend' => 'Блокування користувача',
 'blockiptext' => "Використовуйте форму нижче, щоб заблокувати можливість редагування зазначеній IP-адресі або користувачу.
 Це слід робити лише для запобігання порушенням і у відповідності до [[{{MediaWiki:Policy-url}}|правил]].
@@ -2815,7 +2796,6 @@ $1',
 'ipadressorusername' => "IP-адреса або ім'я користувача:",
 'ipbexpiry' => 'Термін:',
 'ipbreason' => 'Причина:',
-'ipbreasonotherlist' => 'Інша причина',
 'ipbreason-dropdown' => "* Типові причини блокування
 ** Вставка неправильної інформації
 ** Видалення змісту сторінок
@@ -2831,8 +2811,6 @@ $1',
 'ipbsubmit' => 'Заблокувати доступ цьому користувачу',
 'ipbother' => 'Інший термін',
 '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',
-'ipbotheroption' => 'інший термін',
-'ipbotherreason' => 'Інша/додаткова причина:',
 'ipbhidename' => "Приховати ім'я користувача у редагуваннях та списках",
 'ipbwatchuser' => 'Додати до списку спостереження сторінку користувача і його обговорення',
 'ipb-disableusertalk' => 'Заборонити користувачу редагувати свою сторінку обговорення під час блокування',
@@ -2844,6 +2822,7 @@ $1',
 Див. [[Special:BlockList|список заблокованих IP-адрес]] для перегляду блокувань.',
 'ipb-blockingself' => 'Ви збираєтеся заблокувати себе!  Ви дійсно бажаєте це зробити?',
 'ipb-confirmhideuser' => "Ви збираєтеся заблокувати користувача з опцією приховання імені. Це вилучить його ім'я з усіх списків та журналів. Ви точно хочете це зробити?",
+'ipb-confirmaction' => 'Якщо ви дійсно хочете зробити це, встановіть нижче прапорець у полі "{{int:ipb-confirm}}".',
 'ipb-edit-dropdown' => 'Редагувати причини блокувань',
 'ipb-unblock-addr' => 'Розблокувати $1',
 'ipb-unblock' => 'Розблокувати користувача або IP-адресу',
@@ -2870,7 +2849,7 @@ $1',
 'blocklist-reason' => 'Причина',
 'ipblocklist-submit' => 'Пошук',
 'ipblocklist-localblock' => 'Локальне блокування',
-'ipblocklist-otherblocks' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|1=Інше блокування|Інші блокування}}',
 'infiniteblock' => 'блокування на невизначений термін',
 'expiringblock' => 'закінчиться $1 $2',
 'anononlyblock' => 'тільки анонімів',
@@ -2908,7 +2887,7 @@ $1',
 'ipb_hide_invalid' => 'Неможливо приховати обліковий запис; з нього зроблено дуже багато редагувань.',
 'ipb_already_blocked' => '«$1» уже заблоковано. Для того, щоб призначити новий термін блокування, спочатку розблокуйте його.',
 'ipb-needreblock' => 'Користувач $1 вже заблокований. Хочете змінити параметри блокування?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|Інше блокування|Інші блокування}}',
+'ipb-otherblocks-header' => '{{PLURAL:$1|1=Інше блокування|Інші блокування}}',
 'unblock-hideuser' => "Ви не можете розблокувати цього користувача, оскільки його ім'я було приховано.",
 'ipb_cant_unblock' => 'Помилка: блокування з ID $1 не знайдене.
 Можливо, користувач уже розблокований.',
@@ -2922,7 +2901,6 @@ $1',
 'sorbsreason' => 'Ваша IP-адреса числиться як відкритий проксі в DNSBL.',
 'sorbs_create_account_reason' => 'Ваша IP-адреса числиться як відкритий проксі в DNSBL. Ви не можете створити обліковий запис.',
 'xffblockreason' => 'IP-адреса в X-Forwarded-For полі заголовка, або ваша, або проксі сервера, що використовується вами, заблокована. Початкова причина блокування була:$1',
-'cant-block-while-blocked' => 'Ви не можете блокувати інших користувачів, поки ви самі заблоковані.',
 'cant-see-hidden-user' => 'Користувача, якого ви хочете заблокувати, вже заблоковано та приховано. Оскільки у вас немає прав щодо приховання користувачів, ви не можете переглянути або змінити дане блокування.',
 'ipbblocked' => 'Ви не можете блокувати чи розблоковувати інших користувачів, оскільки самі заблоковані',
 'ipbnounblockself' => 'Ви не можете розблокувати себе',
@@ -2981,7 +2959,6 @@ $1',
 У цих випадках ви будете змушені перейменувати чи об'єднати сторінки вручну в разі необхідності",
 'movearticle' => 'Перейменувати сторінку',
 'moveuserpage-warning' => "'''Увага:''' Ви збираєтеся перейменувати сторінку користувача. Будь ласка, зверніть увагу, що  буде перейменовано тільки сторінку, але користувача '''не''' буде перейменовано.",
-'movenologin' => 'Ви не ввійшли в систему',
 'movenologintext' => 'Ви повинні [[Special:UserLogin|ввійти до системи]], щоб перейменувати сторінку.',
 'movenotallowed' => 'У вас нема дозволу перейменовувати сторінки.',
 'movenotallowedfile' => 'У вас немає прав перейменовувати файли.',
@@ -2997,8 +2974,6 @@ $1',
 'articleexists' => 'Сторінка з такою назвою вже існує або зазначена вами назва недопустима.
 Будь ласка, оберіть іншу назву.',
 'cantmove-titleprotected' => 'Неможливо перейменувати сторінку, оскільки нова назва входить до списку заборонених.',
-'talkexists' => "'''Сторінку перейменовано, але її сторінка обговорення не може бути перейменована, бо сторінка з такою назвою вже існує. Будь ласка, об'єднайте їх вручну.'''",
-'movedto' => 'тепер називається',
 'movetalk' => 'Перейменувати відповідну сторінку обговорення',
 'move-subpages' => 'Перейменувати підсторінки (до $1)',
 'move-talk-subpages' => 'Перейменувати підсторінки сторінки обговорення (до $1)',
@@ -3008,7 +2983,7 @@ $1',
 'movepage-max-pages' => '$1 {{PLURAL:$1|сторінка була перейменована|сторінки були перейменовані|сторінок були перейменовані}} — це максимум, більше сторінок не можна перейменувати автоматично.',
 'movelogpage' => 'Журнал перейменувань',
 'movelogpagetext' => 'Далі подано список перейменованих сторінок.',
-'movesubpage' => '{{PLURAL:$1|Підсторінка|Підсторінки}}',
+'movesubpage' => '{{PLURAL:$1|1=Підсторінка|Підсторінки}}',
 'movesubpagetext' => 'Ця сторінка має $1 {{PLURAL:$1|підсторінку|підсторінки|підсторінок}}.',
 'movenosubpage' => 'Ця сторінка не має підсторінок.',
 'movereason' => 'Причина:',
@@ -3139,7 +3114,7 @@ $2',
 'import-error-special' => 'Сторінку "$1" не імпортовано, оскільки вона належить до особливого простору імен, що не дозволяє створення сторінок.',
 'import-error-invalid' => 'Сторінку "$1" не імпортовано, оскільки його ім\'я неприпустиме.',
 'import-error-unserialize' => 'Версія $2 сторінки «$1» не може бути деструктурованою (десеріалізованою). Отримано повідомлення, що у цій версії використано модель $3 сериалізована як $4.',
-'import-options-wrong' => '{{PLURAL:$2|Неправильна опція|Неправильні опції}}: <nowiki>$1</nowiki>',
+'import-options-wrong' => '{{PLURAL:$2|1=Неправильна опція|Неправильні опції}}: <nowiki>$1</nowiki>',
 'import-rootpage-invalid' => 'Вказана некоректна назва кореневої сторінки',
 'import-rootpage-nosubpage' => 'В просторі назв вказаної кореневої сторінки «$1» заборонені підсторінки',
 
@@ -3260,14 +3235,14 @@ $2',
 The wiki server can't provide data in a format your client can read.",
 
 # Attribution
-'anonymous' => '{{PLURAL:$1|Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}',
+'anonymous' => '{{PLURAL:$1|1=Анонімний користувач|Анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}}',
 'siteuser' => 'Користувач {{grammar:genitive|{{SITENAME}}}} $1',
 'anonuser' => 'анонімний користувач {{grammar:genitive|{{SITENAME}}}} $1',
 'lastmodifiedatby' => 'Остання зміна $2, $1 користувачем $3.',
 'othercontribs' => 'Базується на праці $1.',
 'others' => 'інші',
-'siteusers' => '{{PLURAL:$2|Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
-'anonusers' => '{{PLURAL:$2|анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
+'siteusers' => '{{PLURAL:$2|1=Користувач|Користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
+'anonusers' => '{{PLURAL:$2|1=анонімний користувач|анонімні користувачі}} {{grammar:genitive|{{SITENAME}}}} $1',
 'creditspage' => 'Подяки',
 'nocredits' => 'Відсутній список користувачів для цієї статті',
 
@@ -3313,10 +3288,10 @@ The wiki server can't provide data in a format your client can read.",
 'pageinfo-authors' => 'Загальна кількість унікальних авторів',
 'pageinfo-recent-edits' => 'Кількість поточних редагувань в історії (протягом $1)',
 'pageinfo-recent-authors' => 'Кількість авторів за останній час',
-'pageinfo-magic-words' => '{{PLURAL:$1|Магічне слово|Магічні слова}} ($1)',
-'pageinfo-hidden-categories' => '{{PLURAL:$1|Прихована категорія|Приховані категорії}} ($1)',
-'pageinfo-templates' => 'Включено {{PLURAL:$1|шаблон|шаблонів}} ($1)',
-'pageinfo-transclusions' => 'Включено до ($1) {{PLURAL:$1|сторінки|сторінок}}',
+'pageinfo-magic-words' => '{{PLURAL:$1|1=Магічне слово|Магічні слова}} ($1)',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|1=Прихована категорія|Приховані категорії}} ($1)',
+'pageinfo-templates' => 'Включено {{PLURAL:$1|1=шаблон|шаблонів}} ($1)',
+'pageinfo-transclusions' => 'Включено до ($1) {{PLURAL:$1|1=сторінки|сторінок}}',
 'pageinfo-toolboxlink' => 'Інформація про сторінку',
 'pageinfo-redirectsto' => 'Перенаправляє на',
 'pageinfo-redirectsto-info' => 'інформація',
@@ -3384,7 +3359,7 @@ $1',
 'svg-long-error' => 'неправильний SVG-файл: $1',
 'show-big-image' => 'Повна роздільність',
 'show-big-image-preview' => 'Розмір при попередньому перегляді: $1.',
-'show-big-image-other' => '{{PLURAL:$2|Інша роздільність|Інші роздільності}}: $1.',
+'show-big-image-other' => '{{PLURAL:$2|1=Інша роздільність|Інші роздільності}}: $1.',
 'show-big-image-size' => '$1 × $2 пікселів',
 'file-info-gif-looped' => 'кільцеве',
 'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
@@ -3670,7 +3645,7 @@ Variants for Chinese language
 'exif-datetimemetadata' => 'Остання дата зміни метаданих',
 'exif-nickname' => 'Неофіційна назва зображення',
 'exif-rating' => 'Рейтинг (від 0 до 5)',
-'exif-rightscertificate' => 'Сертифікат управління правами',
+'exif-rightscertificate' => 'Сертифікат керування правами',
 'exif-copyrighted' => 'Статус авторських прав',
 'exif-copyrightowner' => 'Власник авторських прав',
 'exif-usageterms' => 'Умови користування',
@@ -3942,15 +3917,10 @@ $8',
 'exif-urgency-high' => 'Висока ($1)',
 'exif-urgency-other' => 'Визначений користувачем пріоритет ($1)',
 
-# External editor support
-'edit-externally' => 'Редагувати цей файл, використовуючи зовнішню програму',
-'edit-externally-help' => '(Подробиці див. на сторінці [https://www.mediawiki.org/wiki/Manual:External_editors Інструкції з установки зовнішніх редакторів])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'всі',
 'namespacesall' => 'всі',
 'monthsall' => 'всі',
-'limitall' => 'усі',
 
 # Email address confirmation
 'confirmemail' => 'Підтвердження адреси ел. пошти',
@@ -3969,7 +3939,6 @@ $8',
 'confirmemail_needlogin' => 'Для підтвердження вашої адреси електронної пошти вам необхідно $1.',
 'confirmemail_success' => 'Вашу адресу електронної пошти підтверджено.',
 'confirmemail_loggedin' => 'Вашу адресу електронної пошти підтверджено.',
-'confirmemail_error' => 'Під час процедури підтвердження адреси електронної пошти сталася помилка.',
 'confirmemail_subject' => '{{SITENAME}}:Запит на підтвердження адреси ел. пошти',
 'confirmemail_body' => 'Хтось з IP-адресою $1 зареєстрував на сервері проекту {{SITENAME}} обліковий запис
 «$2», вказавши вашу адресу електронної пошти.
@@ -4059,6 +4028,11 @@ $5
 'imgmultigo' => 'Перейти!',
 'imgmultigoto' => 'Перейти на сторінку $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(типова мова)',
+'img-lang-info' => 'Візуалізувати це зображення у $1. $2',
+'img-lang-go' => 'Перейти',
+
 # Table pager
 'ascending_abbrev' => 'зрост',
 'descending_abbrev' => 'спад',
@@ -4200,10 +4174,20 @@ $5
 'version-parser-function-hooks' => 'Перехоплювачі функцій синтаксичного аналізатора',
 'version-hook-name' => "Ім'я перехоплювача",
 'version-hook-subscribedby' => 'Підписаний на',
-'version-version' => '(Версія $1)',
+'version-version' => '($1)',
 'version-svn-revision' => '(r$2)',
-'version-license' => 'Ліцензія',
-'version-poweredby-credits' => "Ця Вікі працює на системі управління вмістом '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-license' => 'Ліцензія MediaWik',
+'version-ext-license' => 'Ліцензія',
+'version-ext-colheader-name' => 'Розширення',
+'version-ext-colheader-version' => 'Версія',
+'version-ext-colheader-license' => 'Ліцензія',
+'version-ext-colheader-description' => 'Опис',
+'version-ext-colheader-credits' => 'Автори',
+'version-license-title' => 'Ліцензія для $1',
+'version-license-not-found' => 'Не знайдено докладних відомостей про ліцензію для цього розширення.',
+'version-credits-title' => 'Кредити для $1',
+'version-credits-not-found' => 'Детальної інформації про авторів не знайдено для цього розширення.',
+'version-poweredby-credits' => "Ця Вікі працює на системі керування вмістом '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'інші',
 'version-poweredby-translators' => 'перекладачі translatewiki.net',
 'version-credits-summary' => 'Нам хотілося б відзначити наступних осіб, що зробили внесок у [[Special:Version|MediaWiki]].',
@@ -4222,13 +4206,14 @@ MediaWiki поширюється в надії, що вона буде кори
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Шлях до скриптів]',
 
 # Special:Redirect
-'redirect' => 'Перенаправлення за файлом, користувачем або ID версії',
+'redirect' => 'Перенаправлення за файлом, користувачем, сторінкою або ID версії',
 'redirect-legend' => 'Перенаправити на файл чи сторінку',
-'redirect-summary' => 'Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії) або сторінку користувача (за поданим числовим ID користувача). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Ця спеціальна сторінка перенаправляє на файл (за поданою назвою файлу), сторінку (за поданим ID версії або сторінки) або сторінку користувача (за поданим числовим ID користувача). Використання: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]],[[{{#Special:Redirect}}/revision/328429]] або [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Перейти',
 'redirect-lookup' => 'Шукати:',
 'redirect-value' => 'Значення:',
 'redirect-user' => 'ID користувача',
+'redirect-page' => 'ID сторінки',
 'redirect-revision' => 'Версія сторінки',
 'redirect-file' => 'Назва файлу',
 'redirect-not-exists' => 'Значення не знайдено',
@@ -4241,7 +4226,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'fileduplicatesearch-submit' => 'Знайти',
 'fileduplicatesearch-info' => '$1 × $2 пікселів<br />Розмір файлу: $3<br />MIME-тип: $4',
 'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичних.',
-'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичний дублікат|$2 ідентичних дублікатів}}.',
+'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1=1 ідентичний дублікат|$2 ідентичні дублікати|$2 ідентичних дублікатів}}.',
 'fileduplicatesearch-noresults' => 'Файл з назвою «$1» не знайдено.',
 
 # Special:SpecialPages
@@ -4295,7 +4280,6 @@ MediaWiki поширюється в надії, що вона буде кори
 
 # Special:ComparePages
 'comparepages' => 'Порівняння сторінок',
-'compare-selector' => 'Порівняння версій сторінок',
 'compare-page1' => 'Сторінка 1',
 'compare-page2' => 'Сторінка 2',
 'compare-rev1' => 'Версія 1',
@@ -4342,7 +4326,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'logentry-delete-event-legacy' => '$1 {{GENDER:$2|змінив|змінила}} видимість записів журналу подій $3',
 'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
 'logentry-suppress-delete' => '$1 {{GENDER:$2|подавив|подавила}} сторінку $3',
-'logentry-suppress-event' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5|$5 запису|$5 записів}} журналу на $3: $4',
+'logentry-suppress-event' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5|1=$5 запису|$5 записів}} журналу на $3: $4',
 'logentry-suppress-revision' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість для {{PLURAL:$5 версії|$5 версій}} на сторінці $3: $4',
 'logentry-suppress-event-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість записів журналу $3',
 'logentry-suppress-revision-legacy' => '$1 приховано {{GENDER:$2|змінив|змінила}} видимість версій на сторінці $3',
@@ -4394,10 +4378,10 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-badaccess-groups' => 'Вам не дозволено завантажувати файли до цього вікіпроекту.',
 'api-error-badtoken' => 'Внутрішня помилка: некоректний токен.',
 'api-error-copyuploaddisabled' => 'На цьому сервері вимкнене завантаження за URL-адресою.',
-'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|файла|файлів}}, які вже були вилучені',
-'api-error-duplicate-popup-title' => 'Дублікат {{PLURAL:$1| файлу|файлів}}',
+'api-error-duplicate' => 'Вже {{PLURAL:$1|1=існує  [$2 інший файл]|існують [$2 інші файли]}} з таким самим вмістом.',
+'api-error-duplicate-archive' => 'Раніше на сайті вже {{PLURAL:$1|1=був [$2 файл]|були [$2 файли]}} з ідентичним вмістом, але {{PLURAL:$1|1=його|їх}} вилучили.',
+'api-error-duplicate-archive-popup-title' => 'Дублікати {{PLURAL:$1|1=файла|файлів}}, які вже були вилучені',
+'api-error-duplicate-popup-title' => 'Дублікат {{PLURAL:$1|1=файлу|файлів}}',
 'api-error-empty-file' => 'Файл, який ви надіслали, порожній.',
 'api-error-emptypage' => 'Створення нової порожньої сторінки неприпустиме.',
 'api-error-fetchfileerror' => 'Внутрішня помилка: щось пішло не так під час отримання файлу.',
@@ -4406,7 +4390,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|1=недозволений тип файлів|недозволені типи файлів}}. {{PLURAL:$3|1=Дозволений тип файлів|Дозволені типи файлів}}: $2.',
 'api-error-filetype-missing' => 'У цього файла відсутнє розширення.',
 'api-error-hookaborted' => 'Зміну, що Ви намагалися зробити, відкинуто обробником.',
 'api-error-http' => 'Внутрішня помилка: Не вдається підключитися до сервера.',
@@ -4423,6 +4407,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'api-error-overwrite' => 'Заміну існуючого файлу не дозволено.',
 'api-error-stashfailed' => 'Внутрішня помилка: сервер не зміг зберегти тимчасовий файл.',
 'api-error-publishfailed' => 'Внутрішня помилка: сервер не зміг опублікувати тимчасовий файл.',
+'api-error-stasherror' => 'Сталася помилка при завантаженні файлу у сховище.',
 'api-error-timeout' => 'Сервер не відповідає протягом очікуваного часу.',
 'api-error-unclassified' => 'Сталася невідома помилка.',
 'api-error-unknown-code' => 'Невідома помилка: «$1»',
@@ -4444,7 +4429,7 @@ MediaWiki поширюється в надії, що вона буде кори
 'duration-millennia' => '$1 {{PLURAL:$1|тисячоліття|тисячоліття|тисячоліть}}',
 
 # Image rotation
-'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|градус|градусів}} за годинниковою стрілкою',
+'rotate-comment' => 'Зображення повернуте на $1 {{PLURAL:$1|1=градус|градуси|градусів}} за годинниковою стрілкою',
 
 # Limit report
 'limitreport-title' => 'Аналізатор профілювання даних:',
@@ -4472,10 +4457,14 @@ MediaWiki поширюється в надії, що вона буде кори
 'expand_templates_input' => 'Вхідний текст:',
 'expand_templates_output' => 'Результат',
 'expand_templates_xml_output' => 'XML-вивід',
+'expand_templates_html_output' => 'Сирий вивід HTML',
 'expand_templates_ok' => 'Гаразд',
 'expand_templates_remove_comments' => 'Вилучити коментарі',
 'expand_templates_remove_nowiki' => 'Ігнорувати теги <nowiki> в результаті',
 'expand_templates_generate_xml' => 'Показати дерево аналізу XML',
+'expand_templates_generate_rawhtml' => 'Показати сирий HTML',
 'expand_templates_preview' => 'Попередній перегляд',
 
+# Unknown messages
+'uploadinvalidxml' => 'Не вдалося проаналізувати XML у завантаженому файлі.',
 );
index 7f82cec..0a5161c 100644 (file)
@@ -64,7 +64,6 @@ $specialPageAliases = array(
        'Badtitle'                  => array( 'خراب_عنوان' ),
        'Blankpage'                 => array( 'خالی_صفحہ' ),
        'Block'                     => array( 'پابندی', 'دستور_شبکی_پابندی', 'پابندی_بر_صارف' ),
-       'Blockme'                   => array( 'میری_پابندی' ),
        'Booksources'               => array( 'کتابی_وسائل' ),
        'BrokenRedirects'           => array( 'شکستہ_رجوع_مکررات' ),
        'Categories'                => array( 'زمرہ_جات' ),
@@ -76,7 +75,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'تخلیق_کھاتہ' ),
        'Deadendpages'              => array( 'مردہ_صفحات' ),
        'DeletedContributions'      => array( 'حذف_شدہ_شراکتیں' ),
-       'Disambiguations'           => array( 'ضد_ابہام_صفحات' ),
        'DoubleRedirects'           => array( 'دوہرے_رجوع_مکررات' ),
        'EditWatchlist'             => array( 'ترمیم_زیر_نظر' ),
        'Emailuser'                 => array( 'صارف_ڈاک' ),
@@ -190,7 +188,6 @@ $messages = array(
 'tog-minordefault' => 'تمام ترمیمات کو ہمیشہ بطورِ معمولی ترمیم نشانزد کیا کرو',
 'tog-previewontop' => 'تدوینی خانہ سے پہلے نمائش دکھاؤ',
 'tog-previewonfirst' => 'پہلی ترمیم پر نمائش دکھاؤ',
-'tog-nocache' => 'متصفح کا صفحی ابطن سازی غیرفعال',
 'tog-enotifwatchlistpages' => 'جب میری زیرِنظرفہرست پر کوئی صفحہ میں تبدیلی واقع ہو تو مجھے برقی ڈاک بھیجو',
 'tog-enotifusertalkpages' => 'جب میرا تبادلۂ خیال صفحہ میں تبدیلی واقع ہو تو مجھے برقی ڈاک بھیجو',
 'tog-enotifminoredits' => 'صفحات میں معمولی ترمیمات کے بارے میں بھی مجھے برقی ڈاک بھیجو',
@@ -304,7 +301,6 @@ $messages = array(
 'qbedit' => 'ترمیم',
 'qbpageoptions' => 'صفحۂ ہٰذا',
 'qbmyoptions' => 'میرے صفحات',
-'qbspecialpages' => 'خاص صفحات',
 'faq' => 'معلوماتِ عامہ',
 'faqpage' => 'Project:معلوماتِ عامہ',
 
@@ -641,7 +637,7 @@ Warning: Page may not contain recent updates.',
 'user-mail-no-addy' => 'برقی ڈاک بھیجنے کی کوشش بغیر برقی ڈاک پتہ',
 
 # Change password dialog
-'resetpass' => 'پارلفظ تبدیل کریں',
+'changepassword' => 'کلمۂ شناخت تبدیل کریں',
 'resetpass_announce' => 'آپ ایک برقی ارسال کردہ عارضی رمز کے ساتھ داخل ہوئے ہیں.
 داخلِ نوشتہ کے عمل کو مکمل کرنے کیلئے آپ کو یہاں نیا پارلفظ متعین کرنا ہوگا:',
 'resetpass_header' => 'کھاتہ کا پارلفظ تبدیل کریں',
@@ -839,8 +835,6 @@ $1 نے پابندی لگائی تھی.
 'rev-showdeleted' => 'دکھاؤ',
 'revisiondelete' => 'نظرثانی حذف کریں/واپس لائیں',
 'revdelete-nooldid-title' => 'ناقص مقصود نظرثانی',
-'revdelete-nologtype-title' => 'کوئی نوشتی قِسم مہیّا نہیں کی گئی',
-'revdelete-nologid-title' => 'ناقص اندراجِ نوشتہ',
 'revdelete-show-file-submit' => 'ہاں',
 'revdelete-selected' => "'''[[:$1]] کی {{PLURAL:$2|منتخب نظرثانی|منتخب نظرثانیاں}}:'''",
 'logdelete-selected' => "'''{{PLURAL:$1|منتخب واقعۂ نوشتہ|منتخب واقعاتِ نوشتہ}}:'''",
@@ -862,8 +856,6 @@ $1 نے پابندی لگائی تھی.
 
 $1",
 'revdel-restore' => 'ظاہریت تبدیل کرو',
-'revdel-restore-deleted' => 'حذف شدہ نظرثانیاں',
-'revdel-restore-visible' => 'نظر آنے والی نظرثانیاں',
 'pagehist' => 'تاریخچۂ صفحہ',
 'deletedhist' => 'حذف شدہ تاریخچہ',
 'revdelete-otherreason' => 'دوسری/اضافی وجہ:',
@@ -900,10 +892,6 @@ $1",
 # Search results
 'searchresults' => 'تلاش کا نتیجہ',
 'searchresults-title' => 'نتائجِ تلاش برائے "$1"',
-'searchresulttext' => 'ویکیپیڈیا میں تلاش کے بارے میں مزید معلومات کے لیۓ، ویکیپیڈیا میں تلاش کا صفحہ دیکھیۓ۔',
-'searchsubtitle' => 'آپ کی تلاش برائے \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" سے شروع ہونے والے تمام صفحات]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" سے مربوط تمام صفحات]])',
-'searchsubtitleinvalid' => "آپ کی تلاش براۓ '''$1'''",
-'notitlematches' => 'کوئی بھی مماثل عنوان صفحہ نہیں ملا',
 'notextmatches' => 'کوئی بھی مماثل متن موجود نہیں',
 'prevn' => 'پچھلے {{PLURAL:$1|$1}}',
 'nextn' => 'اگلے {{PLURAL:$1|$1}}',
@@ -911,7 +899,6 @@ $1",
 'nextn-title' => 'آگے $1 {{PLURAL:$1|نتیجہ|نتائج}}',
 'shown-title' => 'فی صفحہ $1 {{PLURAL:$1|نتیجہ|نتائج}} دِکھاؤ',
 'viewprevnext' => 'دیکھیں($1 {{int:pipe-separator}} $2) ($3)۔',
-'searchmenu-legend' => 'اختیاراتِ تلاش',
 'searchmenu-exists' => "'''اِس ویکی پر \"[[:\$1]]\" نامی ایک صفحہ موجود ہے'''",
 'searchmenu-new' => "'''اِس ویکی پر صفحہ \"[[:\$1]]\" تخلیق کیجئے!'''",
 'searchprofile-articles' => 'مشمولاتی صفحات',
@@ -934,17 +921,12 @@ $1",
 'search-interwiki-default' => '$1 نتائج:',
 'search-interwiki-more' => '(مزید)',
 'search-relatedarticle' => 'متعلقہ',
-'mwsuggest-disable' => 'AJAX تجاویز غیرفعال',
 'searchrelated' => 'متعلقہ',
 'searchall' => 'تمام',
-'nonefound' => "'''یاددہانی''': عموماً صرف چند جائے نام تلاش کئے جاتے ہیں۔
-تمام مواد (بشمول تبادلۂ خیال صحات، سانچہ جات وغیرہ) میں تلاش کیلئے اپنے استفسار سے پہلے ''all:'' لگائیے، یا اپنی پسند کا جائے نام بطور سابقہ استعمال کیجئے۔",
 'search-nonefound' => 'استفسار کے مطابق نتائج نہیں ملے.',
-'powersearch' => 'پیشرفتہ تلاش',
 'powersearch-legend' => 'پیشرفتہ تلاش',
 'powersearch-ns' => 'جائے نام میں تلاش:',
 'powersearch-redir' => 'فہرستِ رجوع مکرر',
-'powersearch-field' => 'تلاش برائے',
 'powersearch-togglelabel' => 'جانچ',
 'powersearch-toggleall' => 'تمام',
 'powersearch-togglenone' => 'کوئی نہیں',
@@ -957,7 +939,6 @@ $1",
 'preferences' => 'ترجیحات',
 'mypreferences' => 'میری ترجیہات',
 'prefs-edits' => 'تدوینات کی تعداد:',
-'changepassword' => 'کلمۂ شناخت تبدیل کریں',
 'prefs-skin' => 'جِلد',
 'skin-preview' => 'پیش منظر',
 'datedefault' => 'کوئی ترجیحات نہیں',
@@ -975,7 +956,6 @@ $1",
 'prefs-email' => 'اختیاراتِ برقی ڈاک',
 'prefs-rendering' => 'ظاہریت',
 'saveprefs' => 'محفوظ',
-'resetprefs' => 'نامحفوظ تبدیلیاں صاف کرو',
 'restoreprefs' => 'تمام بےنقص ترتیبات بحال کیجئے',
 'prefs-editing' => 'تدوین',
 'rows' => 'صفیں:',
@@ -1110,7 +1090,6 @@ HTML tags جانچئے.',
 'recentchanges-label-minor' => 'یہ ایک معمولی ترمیم ہے',
 'recentchanges-label-bot' => 'یہ ایک روبالہ سے سرانجام شدہ ترمیم ہے',
 'recentchanges-label-unpatrolled' => 'اس ترمیم کی اب تک مراجعت نہیں کی گئی',
-'rcnote' => "درج ذیل گزشتہ {{PLURAL:$2|دِن|'''$2''' ایام}} میں ہونے والی {{PLURAL:$1|'''ایک''' تبدیلی ہے|آخری '''$1''' تبدیلیاں ہیں}}، $5، $4.",
 'rcnotefrom' => "ذیل میں '''$2''' سے کی گئی تبدیلیاں ہیں ('''$1''' تبدیلیاں دکھائی جارہی ہیں)۔",
 'rclistfrom' => '$1 سےنئی تبدیلیاں دکھانا شروع کریں',
 'rcshowhideminor' => 'معمولی ترامیم $1',
@@ -1277,8 +1256,6 @@ HTML tags جانچئے.',
 'prevpage' => 'پچھلا صفحہ ($1)',
 'allpagesfrom' => 'مطلوبہ حرف شروع ہونے والے صفحات کی نمائش:',
 'allarticles' => 'تمام مقالات',
-'allpagesprev' => 'پچھلا',
-'allpagesnext' => 'اگلا',
 'allpagessubmit' => 'چلو',
 'allpagesprefix' => 'مطلوبہ سابقہ سے شروع ہونے والے صفحات کی نمائش:',
 
index 608d502..d24d5d9 100644 (file)
@@ -132,7 +132,6 @@ $messages = array(
 'tog-minordefault' => 'Sukut boʻyicha barcha tahrirlarimni «kichik tahrir» etib belgilash',
 'tog-previewontop' => 'Tahrir oynasi tepasida koʻrib chiqish',
 'tog-previewonfirst' => 'Tahrirlashga oʻtiboq koʻrib chiqishni boshlash',
-'tog-nocache' => 'Brauzer sahifalarni kesh xotirasida saqlamasin',
 'tog-enotifwatchlistpages' => 'Kuzatuv roʻyxatimdagi sahifa yoki fayllar oʻzgartirilsa, menga bu haqda xat yuborilsin',
 'tog-enotifusertalkpages' => 'Munozara sahifam oʻzgartirilsa, menga bu haqda xat yuborilsin',
 'tog-enotifminoredits' => 'Kichik tahrir qilinsa ham e-pochtamga bu haqda xat yuborilsin',
@@ -255,7 +254,6 @@ $messages = array(
 'qbedit' => 'Tahrirlash',
 'qbpageoptions' => 'Ushbu sahifa moslamalari',
 'qbmyoptions' => 'Moslamalarim',
-'qbspecialpages' => 'Maxsus sahifalar',
 'faq' => 'TSS',
 'faqpage' => 'Project:TSS',
 
@@ -307,7 +305,7 @@ $messages = array(
 'unprotectthispage' => 'Ushbu sahifaning himoyasini oʻzgaritish',
 'newpage' => 'Yangi sahifa',
 'talkpage' => 'Bu sahifa haqida munozara',
-'talkpagelinktext' => 'Munozara',
+'talkpagelinktext' => 'munozara',
 'specialpage' => 'Maxsus sahifa',
 'personaltools' => 'Shaxsiy uskunalar',
 'postcomment' => 'Yangi boʻlim',
@@ -455,13 +453,14 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
 'userlogin-yourname' => 'Foydalanuvchi nomi',
 'userlogin-yourname-ph' => 'Foydalanuvchi nomingizni kiriting',
 'yourpassword' => 'Maxfiy soʻz:',
+'userlogin-yourpassword' => 'Maxfiy soʻz',
 'userlogin-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
 'createacct-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
 'yourpasswordagain' => 'Maxfiy so‘zni qayta kiriting:',
 'createacct-yourpasswordagain' => 'Maxfiy soʻzni tasdiqlang',
 'createacct-yourpasswordagain-ph' => 'Maxfiy soʻzni yana bir bor kiriting',
 'remembermypassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
-'userlogin-remembermypassword' => 'Esda saqla',
+'userlogin-remembermypassword' => 'Kirgan deb esda saqla',
 'userlogin-signwithsecure' => 'Himoyalangan holda kirish',
 'yourdomainname' => 'Sizning domeningiz:',
 'password-change-forbidden' => 'Siz bu vikida maxfiy soʻzni oʻzgartira olmaysiz.',
@@ -481,12 +480,12 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
 'gotaccount' => "Hisobingiz bormi? '''$1'''.",
 'gotaccountlink' => 'Kirish',
 'userlogin-resetlink' => 'Kirish maʻlumotlaringiz esdan chiqdimi?',
-'userlogin-resetpassword-link' => 'Maxfiy soʻzni yangilash',
+'userlogin-resetpassword-link' => 'Unutib qoʻydingizmi?',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Kirish uchun yordam]]',
 'createacct-join' => 'Maʼlumotlaringizni quyiga yozing',
 'createacct-emailoptional' => 'Elektron pochta manzili (majburiy emas)',
 'createacct-email-ph' => 'Elektron pochtangiz manzilini kiriting',
-'createaccountmail' => "E-mail orqali maxfiy so'zni jo'natish",
+'createaccountmail' => 'Vaqtinchalik maxfiy soʻzni koʻrsatilgan elektron pochta manzilimga joʻnatish',
 'createaccountreason' => 'Sabab:',
 'createacct-captcha' => 'Xavfsizlik tekshiruvi',
 'createacct-imgcaptcha-ph' => 'Yuqoridagi yozuvni bu yerga kiriting',
@@ -516,12 +515,13 @@ Ism yozilishini tekshirib koʻring.',
 'loginlanguagelabel' => 'Til: $1',
 
 # Change password dialog
-'resetpass' => 'Maxfiy soʻzni oʻzgartirish',
+'changepassword' => 'Maxfiy soʻzni oʻzgartirish',
 'resetpass_header' => "Hisob mahfiy so'zini o'zgartirish",
 'oldpassword' => "Eski mahfiy so'z:",
 'newpassword' => "Yangi mahfiy so'z:",
 'retypenew' => 'Yangi mahfiy soʻzni qayta tering:',
 'resetpass_submit' => "Maxfiy so'zni o'rnatish va kirish",
+'changepassword-success' => 'Maxfiy soʻzni oʻzgartirish muvaffaqiyatli oʻtdi!',
 'resetpass_forbidden' => "Maxfiy so'z o'zgartirilishi mumkin emas",
 'resetpass-submit-loggedin' => 'Maxfiy soʻzni oʻzgartirish',
 'resetpass-submit-cancel' => 'Bekor',
@@ -676,11 +676,10 @@ Ayrim andozalar qo'shilmaydi.",
 'last' => 'oxirgi',
 'page_first' => 'birinchi',
 'page_last' => 'oxirgi',
-'histlegend' => 'Farqlar: solishtirish uchun kerakli radiobokslarni belgilang va pastdagi tugmani yoki Enterni bosing.<br />
-Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
-(oxirgi) = avvalgi koʻrinish bilan farq, k = kichkina tahrir.',
+'histlegend' => "Farqlarni tanlash: solishtirish uchun kerakli radiobokslarni belgilang va '''{{int:compare-submit}}''' tugmasini bosing.<br />
+Bu yerda: '''({{int:cur}})''' = hozirgi koʻrinish bilan farqi, '''({{int:last}})''' = avvalgi koʻrinish bilan farqi, '''{{int:minoreditletter}}''' = kichkina tahrir.",
 'history-fieldset-title' => 'Tarixni koʻrish',
-'history-show-deleted' => 'Faqat o‘chirilganlari',
+'history-show-deleted' => 'Faqat yoʻqotilganlari',
 'histfirst' => 'Eng avvalgi',
 'histlast' => 'Eng soʻnggi',
 'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
@@ -704,8 +703,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'revdelete-radio-unset' => 'Yoʻq',
 'revdelete-log' => 'Sabab:',
 'revdel-restore' => "Ko'rinuvchanlikni o'zgartirish",
-'revdel-restore-deleted' => "o'chirilgan versiyalar",
-'revdel-restore-visible' => "ko'rinuvchan versiyalar",
 'revdelete-otherreason' => 'Boshqa/qoʻshimcha sabab:',
 'revdelete-reasonotherlist' => 'Boshqa sabab',
 
@@ -738,12 +735,8 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 # Search results
 'searchresults' => 'Qidiruv natijalari',
 'searchresults-title' => '"$1" uchun qidiruv natijalari',
-'searchresulttext' => '{{SITENAME}}da qidirish haqida qoʻshimcha maʼlumot olish uchun [[{{MediaWiki:Helppage}}|yordam]] sahifasiga qarang.',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\'ni qidirdingiz ([[Special:Prefixindex/$1|"$1" bilan boshlanadigan sahifalar]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1"ga bogʻlangan sahifalar]])',
-'searchsubtitleinvalid' => "'''$1'''ni qidirdingiz",
 'toomanymatches' => "Juda ko'p o'xshashliklar topildi, iltimos, boshqa so'rov bilan urinib ko'ring",
 'titlematches' => 'Sahifalar nomlaridagi mos kelishlar',
-'notitlematches' => 'Bunday sarlavha topilmadi',
 'textmatches' => 'Sahifalar matnlaridagi mos kelishlar',
 'notextmatches' => 'Bunday matn topilmadi',
 'prevn' => 'oldingi {{PLURAL:$1|$1}}',
@@ -752,18 +745,16 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'nextn-title' => 'Keyingi $1 {{PLURAL:$1|natija|natijalar}}',
 'shown-title' => 'Sahifada $1 ta natija koʻrsatish',
 'viewprevnext' => 'Koʻrish ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Qidiruv shartlari',
 'searchmenu-exists' => "'''Ushbu vikida \"[[:\$1]]\" nomli sahifa mavjud.'''",
 'searchmenu-new' => "'''Ushbu vikida \"[[:\$1]]\" sahifasini yarat!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Shu prefiksli sahifalarni koʻrsatish]]',
-'searchprofile-articles' => 'Asosiy sahifalar',
+'searchprofile-articles' => 'Maqolalar',
 'searchprofile-project' => 'Yordam va loyiha sahifalari',
 'searchprofile-images' => 'Multimedia',
-'searchprofile-everything' => 'Har yerda',
-'searchprofile-advanced' => 'Kengaytirilgan',
+'searchprofile-everything' => 'Hamma joyda',
+'searchprofile-advanced' => 'Tanlangan joyda',
 'searchprofile-articles-tooltip' => '$1da qidirish',
 'searchprofile-project-tooltip' => '$1da qidirish',
-'searchprofile-images-tooltip' => 'Fayllarni qidir',
+'searchprofile-images-tooltip' => 'Fayllarni qidirish',
 'searchprofile-everything-tooltip' => 'Barcha sahifalardan qidirish (munozara sahifalarinidan ham)',
 'searchprofile-advanced-tooltip' => 'Belgilangan nomfazolardan qidirish',
 'search-result-size' => '$1 ({{PLURAL:$2|1 ta soʻz|$2 ta soʻz}})',
@@ -776,7 +767,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'search-interwiki-default' => '$1 natijalar:',
 'search-interwiki-more' => '(yana)',
 'search-relatedarticle' => "Bog'liq",
-'mwsuggest-disable' => 'Qidiruv takliflarini oʻchirib qoʻyish',
 'searcheverything-enable' => 'Barcha nomfazolarda qidir',
 'searchrelated' => 'bogʻlangan',
 'searchall' => 'barchasi',
@@ -784,11 +774,9 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'showingresultsnum' => "Quyida №'''$2'''dan boshlab '''$1''' ta {{PLURAL:$1|natija}} ko'rsatildi.",
 'showingresultsheader' => "$4 uchun {{PLURAL:$5|'''$3'''dan '''$1''' natija|'''$3'''dan '''$1 - $2''' natijalar}}",
 'search-nonefound' => 'Talabga javob beradigan natija topilmadi.',
-'powersearch' => 'Qidiruv',
 'powersearch-legend' => 'Kengaytirilgan qidiruv',
-'powersearch-ns' => 'Bu nom-fazolarda izla:',
+'powersearch-ns' => 'Quyidagi nomfazolardan qidir:',
 'powersearch-redir' => 'Qayta yoʻnaltirishlarni koʻrsatish',
-'powersearch-field' => 'Qidiruv',
 'powersearch-togglelabel' => 'Belgilash:',
 'powersearch-toggleall' => 'Hammasini',
 'powersearch-togglenone' => 'Hech qaysini',
@@ -798,7 +786,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'preferences' => 'Moslamalar',
 'mypreferences' => 'Moslamalarim',
 'prefs-edits' => 'Tahrirlar soni:',
-'changepassword' => 'Maxfiy soʻzni oʻzgartirish',
 'prefs-skin' => 'Tashqi ko‘rinishi',
 'skin-preview' => 'Ko‘rib chiqish',
 'datedefault' => 'Farqi yoʻq',
@@ -818,13 +805,11 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'prefs-email' => 'Elektron pochta moslamalari',
 'prefs-rendering' => 'Tashqi ko‘rinishi',
 'saveprefs' => 'Saqlash',
-'resetprefs' => 'Bekor qilish',
 'restoreprefs' => 'Barcha moslamalarni dastlabki holatiga qaytarish',
 'prefs-editing' => 'Tahrirlash',
 'rows' => 'Qatorlar soni:',
 'columns' => 'Ustunlar soni:',
 'searchresultshead' => 'Qidiruv',
-'resultsperpage' => 'Sahifaga topilgan yozuvlar miqdori',
 'stub-threshold' => '<a href="#" class="stub">Chala maqolalarga ishorat</a> keltirish uchun pastki chegara (baytlarda):',
 'stub-threshold-disabled' => 'Oʻchirib qoʻyilgan',
 'recentchangesdays' => 'Necha kunlik tahrirlar koʻrsatiladi:',
@@ -836,7 +821,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
 'localtime' => 'Mahalliy vaqt:',
 'timezoneuseserverdefault' => 'Server moslamalaridan foydalanish ($1)',
 'timezoneuseoffset' => "Boshqa (siljishni ko'rsating)",
-'timezoneoffset' => 'Siljish¹:',
 'servertime' => 'Server vaqti:',
 'guesstimezone' => "Brauzerdan to'ldirish",
 'timezoneregion-africa' => 'Afrika',
@@ -940,6 +924,7 @@ Agar keltirsangiz, undan sahifa kim tomonidan tahrirlanganini koʻrsatish uchun
 
 # User rights log
 'rightslog' => 'Foydalanuvchi huquqlari koʻrsatilgan qaydlar',
+'rightslogtext' => 'Foydalanuvchi huquqlarini oʻzgartirish qaydlari.',
 
 # Associated actions - in the sentence "You do not have permission to X"
 'action-edit' => 'ushbu sahifani tahrirlash',
@@ -951,13 +936,16 @@ Agar keltirsangiz, undan sahifa kim tomonidan tahrirlanganini koʻrsatish uchun
 'nchanges' => '$1 {{PLURAL:$1|oʻzgarish|oʻzgarishlar}}',
 'recentchanges' => 'Yangi oʻzgarishlar',
 'recentchanges-legend' => 'Yangi oʻzgarishlar moslamalari',
-'recentchanges-summary' => 'Bu sahifada siz oxirgi oʻzgarishlarni koʻrishingiz mumkin',
+'recentchanges-summary' => 'Bu sahifada siz {{SITENAME}}da sodir boʻlgan soʻnggi oʻzgarishlarni koʻrishingiz mumkin.',
+'recentchanges-noresult' => 'Koʻrsatilgan muddatga va shartlarga oid oʻzgarishlar topilmadi.',
 'recentchanges-feed-description' => 'Vikida mazkur oqimdagi oxirgi oʻzgarishlarni kuzatish',
-'recentchanges-label-newpage' => 'Bu tahrir orqali yangi sahifa yaratildi',
-'recentchanges-label-minor' => 'Bu kichik tahrir',
-'recentchanges-label-bot' => 'Bu tahrirni bot bajardi',
+'recentchanges-label-newpage' => 'Bu tahrir orqali yangi sahifa yaratilgan',
+'recentchanges-label-minor' => 'Bu tahrir kichik deb belgilangan',
+'recentchanges-label-bot' => 'Bu tahrirni bot bajargan',
 'recentchanges-label-unpatrolled' => 'Bu tahrir hali tekshirilmagan',
-'rcnote' => "Quyida $4, $5 koʻra oxirgi '''$2''' kun ichida sodir boʻlgan {{PLURAL:$1|'''bitta''' oʻzgarish|'''$1''' ta oʻzgarish}} koʻrsatilgan.",
+'recentchanges-label-plusminus' => 'vazni qanchaga oʻzgargani (bayt)',
+'recentchanges-legend-heading' => "'''Izoh:'''",
+'recentchanges-legend-newpage' => '([[Special:NewPages|alohida roʻyxat]])',
 'rcnotefrom' => "Quyida <strong>$2</strong> dan (<strong>$1</strong> gacha) bo'lgan o'zgarishlar keltirilgan.",
 'rclistfrom' => '$1 dan boshlab yangi oʻzgarishlarni koʻrsat.',
 'rcshowhideminor' => 'Kichik tahrirlarni $1',
@@ -970,7 +958,7 @@ Agar keltirsangiz, undan sahifa kim tomonidan tahrirlanganini koʻrsatish uchun
 'diff' => 'farq',
 'hist' => 'tarix',
 'hide' => 'yashir',
-'show' => 'Koʻrsat',
+'show' => 'koʻrsat',
 'minoreditletter' => 'k',
 'newpageletter' => 'Y',
 'boteditletter' => 'b',
@@ -1007,6 +995,7 @@ Agar keltirsangiz, undan sahifa kim tomonidan tahrirlanganini koʻrsatish uchun
 'license-header' => 'Litsenziyalash',
 
 # Special:ListFiles
+'listfiles-summary' => 'Ushbu maxsus sahifada barcha yuklangan fayllar koʻrsatilgan.',
 'imgfile' => 'fayl',
 'listfiles' => 'Fayllar roʻyxati',
 'listfiles_thumb' => 'Miniatura',
@@ -1105,10 +1094,14 @@ Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
 
 # Special:Log
 'specialloguserlabel' => 'Ijrochi:',
-'speciallogtitlelabel' => 'Moʻljal (nom yoki foydalanuvchi):',
+'speciallogtitlelabel' => 'Moʻljal (foydalanuvchi yoki sahifa nomi):',
 'log' => 'Qaydlar',
 'all-logs-page' => 'Barcha ochiq qaydlar',
-'logempty' => 'Qaydnomada mos keladigan yozuvlar mavjud emas.',
+'alllogstext' => "{{SITENAME}}dagi barcha jurnallar roʻyxati.
+Natijalarni jurnal nomi, foydalanuvchi nomi (harflar katta-kichikligi inobatga olinadi) yoki sahifa nomi boʻyicha saralashingiz mumkin.
+* Biror foydalanuvchi ''amalga oshirgan qaydni'', uning foydalanuvchi nomini \"Ijrochi\" oynasiga kiritib qidirish mumkin.
+* Biror foydalanuvchi yoki sahifaga ''nisbatan'' amalga oshirilgan qaydni, ularning nomini \"Moʻljal\" oynasiga kiritib qidirish mumkin.",
+'logempty' => 'Talabga mos yozuvlar mavjud emas.',
 'log-title-wildcard' => 'Shu matndan boshlanuvchi sarlavhalarni izlash',
 
 # Special:AllPages
@@ -1118,9 +1111,6 @@ Uning [$2 fayl tavsifi sahifasidan] olingan tavsifi quyida keltirilgan.',
 'prevpage' => 'Avvalgi sahifa ($1)',
 'allpagesfrom' => 'Quyidagidan boshlanuvchi sahifalarni koʻrsatish:',
 'allarticles' => 'Barcha sahifalar',
-'allnotinnamespace' => 'Barcha sahifalar ("$1" nomfazolaridan tashqari)',
-'allpagesprev' => 'Oldingi',
-'allpagesnext' => 'Keyingi',
 'allpagessubmit' => 'Oʻtish',
 'allpagesprefix' => 'Shunday prefiksli sahifalarni koʻrsatish:',
 'allpages-hide-redirects' => 'Yoʻnaltirishlarni yashirish',
@@ -1163,7 +1153,11 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'activeusers-noresult' => 'Foydalanuvchilar topilmadi.',
 
 # Special:ListGroupRights
-'listgrouprights' => 'Foydalanuvchilar guruhi huquqlari',
+'listgrouprights' => 'Foydalanuvchilar guruhlari roʻyxati',
+'listgrouprights-summary' => 'Har bir viki-loyihada boʻlgani kabi, Oʻzbekcha Vikipediyada ham foydalanuvchilar bir nechta guruhlarga boʻlingan boʻlib, quyida ularning roʻyxati va tegishli huquqlari keltirilgan. Alohida huquqlar haqida [[{{MediaWiki:Listgrouprights-helppage}}|qoʻshimcha maʼlumotlar]] boʻlishi mumkin.',
+'listgrouprights-key' => 'Izohlar:
+* <span class="listgrouprights-granted">Amaldagi huquqlar</span>
+* <span class="listgrouprights-revoked">Bekor qilingan huquqlar</span>',
 'listgrouprights-group' => 'Guruh',
 'listgrouprights-rights' => 'Huquqlar',
 'listgrouprights-helppage' => 'Help:Guruhlar huquqlari',
@@ -1214,8 +1208,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'unwatchthispage' => "Kuzatuvni to'xtatish",
 'notanarticle' => 'Maqola emas',
 'watchlist-details' => 'Sizning kuzatuv roʻyxatingizda hozirda {{PLURAL:$1|bitta sahifa|$1ta sahifa}} mavjud (munozara sahifalarini hisobga olmaganda).',
+'wlheader-showupdated' => "Siz oxirgi marta kirganingizdan keyin oʻzgartirilgan sahifalar '''qalin''' yozuv bilan ajratib koʻrsatilgan.",
 'wlnote' => "Below {{PLURAL:$1|is the last change|are the last '''$1''' changes}} in the last {{PLURAL:$2|hour|'''$2''' hours}}, as of $3, $4.",
-'wlshowlast' => 'Oxirgi $1 soatdagi $2 kundagi tahrirlarni ko‘rsatish. $3 tahrirlarni ko‘rsatish',
+'wlshowlast' => 'Oxirgi $1 soatdagi $2 kundagi tahrirlarni koʻrsat $3',
 'watchlist-options' => 'Kuzatuv roʻyxati moslamalari',
 
 # Displayed when you click the "watch" button and it is in the process of watching
@@ -1223,7 +1218,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 'unwatching' => "Kuzatuv ro'yxatidan o'chirish...",
 
 'enotif_mailer' => "{{SITENAME}} Pochta orqali e'lon qilish xizmati",
-'enotif_reset' => 'Hamma sahifalarni koʻrib chiqilgan deb belgilash',
+'enotif_reset' => 'Hammasini koʻrib chiqilgan deb belgilash',
 'enotif_impersonal_salutation' => '{{SITENAME}} ishtirokchisi',
 'enotif_subject_deleted' => '{{SITENAME}} loyihasining $1 nomli sahifasi foydalanuvchi {{gender:$2|$2}} tomonidan o‘chirildi',
 'enotif_subject_created' => '{{SITENAME}} loyihasining $1 nomli sahifasi foydalanuvchi {{gender:$2|$2}} tomonidan yaratildi',
@@ -1279,7 +1274,7 @@ Qayta aloqa va yordam
 'deletedtext' => '"$1" yoʻqotildi.
 Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'dellogpage' => 'Yoʻqotish qaydlari',
-'dellogpagetext' => 'Quyida oxirgi oʻchirish qaydlari keltirilgan',
+'dellogpagetext' => 'Quyida oxirgi yoʻqotish qaydlari keltirilgan',
 'deletionlog' => 'yoʻqotish qaydlari',
 'reverted' => 'Eski holiga keltirildi',
 'deletecomment' => 'Sabab:',
@@ -1343,7 +1338,6 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'undeletebtn' => 'Tiklash',
 'undeletelink' => 'ko‘rib chiqish/tiklash',
 'undeleteviewlink' => 'koʻrib chiqish',
-'undeletereset' => 'Tozalash',
 'undeleteinvert' => 'Tanlash tartibini almashtirish',
 'undeletecomment' => 'Sabab:',
 'undelete-search-title' => "O'chirilgan sahifalarni qidirish",
@@ -1363,7 +1357,7 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'contributions-title' => '{{GENDER:$1|Foydalanuvchi}} $1 hissasi',
 'mycontris' => 'Hissam',
 'contribsub2' => '$1 uchun ($2)',
-'nocontribs' => 'Belgilangan shartlarga muvofiq oʻzgarishlar topilmadi',
+'nocontribs' => 'Belgilangan shartlarga muvofiq oʻzgarishlar topilmadi.',
 'uctop' => '(joriy)',
 'month' => 'Oydan (va avvalroq)',
 'year' => 'Yildan (va avvalroq)',
@@ -1372,11 +1366,12 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'sp-contributions-newbies-sub' => 'Yangi hisob yozuvlaridan',
 'sp-contributions-newbies-title' => 'Yangi hisob yozuvlarining hissalari',
 'sp-contributions-blocklog' => 'chetlatishlar',
-'sp-contributions-deleted' => "o'chirilgan tahrirlar",
+'sp-contributions-deleted' => 'yoʻqotilgan tahrirlar',
 'sp-contributions-uploads' => 'yuklamalar',
 'sp-contributions-logs' => 'qaydlar',
 'sp-contributions-talk' => 'munozara',
 'sp-contributions-userrights' => 'foydalanuvchining huquqlarini boshqarish',
+'sp-contributions-blocked-notice' => 'Ushbu foydalanuvchi hozirda tahrirlashdan chetlatilgan. Quyida chetlatish qaydlaridan soʻnggi yozuv keltirilgan:',
 'sp-contributions-search' => 'Hissalarni qidirish',
 'sp-contributions-username' => 'IP-manzil yoki foydalanuvchi nomi:',
 'sp-contributions-toponly' => 'Faqat oxirgi deb hisoblangan tahrirlarni koʻrsat',
@@ -1406,25 +1401,21 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'block' => 'Foydalanuvchini muhosara qilish',
 'unblock' => "Foydalanuvchiga yo'l ochish",
 'blockip' => 'Foydalanuvchini chetlashtir',
-'blockip-title' => 'Foydalanuvchini muhosara qilish',
 'blockip-legend' => 'Foydalanuvchini muhosara qilish',
 'ipadressorusername' => 'IP-manzil yoki foydalanuvchi nomi:',
 'ipbexpiry' => 'Tugaydi:',
 'ipbreason' => 'Sabab:',
-'ipbreasonotherlist' => 'Boshqa sabab',
-'ipbreason-dropdown' => "* Chetlashtirishning andazaviy sabablari
-** Yolg'on axborot kiritish
-** Sahifa matnini o'chirish
-** Tashqi saytlarga spam-yo'llanmalar
-** Ma'nosiz matn/axlat qo'shish
-** Tahdid, ishtirokchilarni ta'qib qilish
-** Bir necha hisob yozuvlaridan o'z manfaatlarida foydalanish
-** Ishtirokchining nomaqbul ismi",
+'ipbreason-dropdown' => '* Chetlashtirishning odatiy sabablari
+** Yolgʻon maʼlumot kiritish
+** Sahifa matnini toʻliq oʻchirish
+** Tashqi saytlarga spam-havolalar
+** Maʼnosiz matn/axlat qoʻshish
+** Foydalanuvchilarga tahdid qilish, ularni taʼqib qilish
+** Bir nechta hisob yozuvlaridan oʻz manfaatlarida foydalanish
+** Nomaqbul foydalanuvchi nomi',
 'ipbsubmit' => 'Ushbu foydalanuvchini chetlashtirish',
 'ipbother' => 'Boshqa vaqt:',
 'ipboptions' => '2 soat:2 hours,1 kun:1 day,3 kun:3 days,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
-'ipbotheroption' => 'boshqa',
-'ipbotherreason' => 'Boshqa/qo‘shimcha sabab',
 'ipb-edit-dropdown' => 'Sabablar ro‘yxatini tahrirlash',
 'ipb-unblock-addr' => '$1dan toʻsiqni olish',
 'unblockip' => 'Foydalanuvchidan to‘siqni olib tashlash',
@@ -1464,14 +1455,12 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
 'move-page' => '$1 — qayta nomlash',
 'move-page-legend' => 'Sahifani qayta nomlash',
 'movearticle' => 'Sahifani qayta nomlash',
-'movenologin' => 'Siz tizimga kirmagansiz',
 'newtitle' => 'Yangi nom:',
 'move-watch' => 'Ushbu sahifani kuzatuv roʻyxatingizga qoʻshish',
 'movepagebtn' => 'Sahifani koʻchirish',
 'pagemovedsub' => 'Sahifa qayta nomlandi',
 'movepage-moved' => '\'\'\'"$1" nomli sahifa "$2" nomli sahifaga koʻchirildi\'\'\'',
 'movepage-moved-redirect' => 'Qayta yo‘naltirish yaratildi.',
-'movedto' => 'quyidagiga qayta nomlandi',
 'movetalk' => 'Mos munozara sahifasini qayta nomlash',
 'movelogpage' => 'Koʻchirish qaydlari',
 'movesubpage' => '{{PLURAL:$1|Ostsahifa|Ostsahifalar}}',
@@ -1652,12 +1641,8 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'exif-iimcategory-spo' => 'Sport',
 'exif-iimcategory-wea' => 'Ob-havo',
 
-# External editor support
-'edit-externally' => 'Bu faylni tashqi dasturiy ilovalar yordamida tahrirla',
-'edit-externally-help' => "(Batafsil ma'lumotlar uchun [https://www.mediawiki.org/wiki/Manual:External_editors bu yerga] qarang)",
-
 # 'all' in various places, this might be different for inflected languages
-'watchlistall2' => 'Barcha',
+'watchlistall2' => 'hammasi',
 'namespacesall' => 'Barchasi',
 'monthsall' => 'barchasi',
 
@@ -1673,8 +1658,10 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'table_pager_prev' => 'Oldingi sahifa',
 'table_pager_first' => 'Birinchi sahifa',
 'table_pager_last' => 'Oxirgi sahifa',
+'table_pager_limit_label' => 'Bir sahifadagi yozuvlar soni:',
 
 # Auto-summaries
+'autosumm-blank' => 'Sahifa tozalandi',
 'autoredircomment' => '[[$1]]ga yoʻnaltirildi',
 'autosumm-new' => '"$1" yozuvi orqali yangi sahifa yaratildi',
 
@@ -1701,6 +1688,9 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 # Special:Tags
 'tag-filter' => '[[Special:Tags|Nishonlar]] filtri:',
 
+# Special:ComparePages
+'compare-submit' => 'Solishtirish',
+
 # HTML forms
 'htmlform-reset' => 'Oʻzgarishlarni bekor qilish',
 'htmlform-selectorother-other' => 'Boshqa',
@@ -1712,12 +1702,16 @@ Umumiy omborda [[:$1]] mavjud. Faylning bu nomga qayta nomlanishi faylning umumi
 'logentry-patrol-patrol-auto' => '$1 $3 sahifasining $4 versiyasini avtomatik patrulladi',
 'logentry-newusers-newusers' => '$1 hisob yozuvi yaratildi',
 'logentry-newusers-create' => '$1 hisob yozuvi yaratildi',
+'logentry-newusers-autocreate' => '$1 hisob yozuvi avtomatik ravishda {{GENDER:$2|yaratilgan}}',
+'logentry-rights-rights' => '$1 $3ning guruhlardagi aʼzoligini $4dan $5ga {{GENDER:$2|oʻzgartirdi}}',
+'logentry-rights-rights-legacy' => '$1 $3ning guruhlardagi aʼzoligini oʻzgartirdi',
 
 # Feedback
 'feedback-close' => 'Bajarildi',
 
 # Search suggestions
 'searchsuggest-search' => 'Qidiruv',
+'searchsuggest-containing' => 'ichida bu boʻlgan...',
 
 # API errors
 'api-error-unknown-code' => 'Noaniq xato: "$1".',
index 4732fb6..3ede948 100644 (file)
  */
 
 $messages = array(
-'search'       => 'Ṱolani',
+'search' => 'Ṱolani',
 'searchbutton' => 'Ṱolani',
-'talk'         => 'Ambani',
+'talk' => 'Ambani',
 
-# 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).
-'mainpage'             => 'Hayani',
+# 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).
+'mainpage' => 'Hayani',
 'mainpage-description' => 'Hayani',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
@@ -27,12 +27,14 @@ $messages = array(
 'error' => 'Vhukhakhi',
 
 # Login and logout pages
-'yourname'     => 'Dzina ḽa mushumisi:',
+'yourname' => 'Dzina ḽa mushumisi:',
 'yourpassword' => 'Phasiwede:',
 
-# Preferences page
+# Change password dialog
 'changepassword' => 'Shandukisani phasiwede',
-'username'       => 'Dzina ḽa mushumisi:',
+
+# Preferences page
+'username' => 'Dzina ḽa mushumisi:',
 
 # Miscellaneous special pages
 'newpages-username' => 'Dzina ḽa mushumisi:',
index fe5ae64..7e42482 100644 (file)
@@ -61,12 +61,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'UtentiAtivi' ),
        'Allmessages'               => array( 'Messagi' ),
+       'AllMyUploads'              => array( 'TutiIMeCaricamenti' ),
        'Allpages'                  => array( 'TuteLePagine' ),
        'Ancientpages'              => array( 'PagineMancoNove' ),
        'Badtitle'                  => array( 'TitoloSbalià' ),
        'Blankpage'                 => array( 'PaginaVoda' ),
        'Block'                     => array( 'Bloca' ),
-       'Blockme'                   => array( 'BlocaProxy' ),
        'Booksources'               => array( 'SercaISBN' ),
        'BrokenRedirects'           => array( 'RimandiSbalià' ),
        'Categories'                => array( 'Categorie' ),
@@ -78,10 +78,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'CreaUtente' ),
        'Deadendpages'              => array( 'PagineSensaUscita' ),
        'DeletedContributions'      => array( 'ContributiScancelà' ),
-       'Disambiguations'           => array( 'Disanbiguassion' ),
        'DoubleRedirects'           => array( 'DópiRimandi' ),
        'EditWatchlist'             => array( 'CanbiaTegnuiDeOcio' ),
        'Emailuser'                 => array( 'MandaEMail' ),
+       'ExpandTemplates'           => array( 'EspandiModèi' ),
        'Export'                    => array( 'Esporta' ),
        'Fewestrevisions'           => array( 'PagineConMancoRevision' ),
        'FileDuplicateSearch'       => array( 'SercaDopioniDeiFile' ),
@@ -181,7 +181,6 @@ $messages = array(
 'tog-minordefault' => 'Segna ogni canbiamento come picenin (solo come predefinìo)',
 'tog-previewontop' => "Mostra l'anteprima sora ła caseła de modifega e no soto",
 'tog-previewonfirst' => "Mostra l'anteprima par ła prima modifega",
-'tog-nocache' => 'Disativa ła cache par łe pajine del browser',
 'tog-enotifwatchlistpages' => "Segnałame via e-mail có vien canbià na pàjina o un file prexente inte ła lista de łe tegnùe d'ocio",
 'tog-enotifusertalkpages' => 'Avìseme par e-mail se i scrive su la me pagina de discussion',
 'tog-enotifminoredits' => "Avìxeme par e-mail anca pa' i canbiamenti picenini de pàjine e file",
@@ -315,7 +314,6 @@ $messages = array(
 'qbedit' => 'Canbia',
 'qbpageoptions' => 'Opsion pajina',
 'qbmyoptions' => 'Łe me pajine',
-'qbspecialpages' => 'Pagine speciali',
 'faq' => 'Domande frequenti',
 'faqpage' => 'Project:Domande frequenti',
 
@@ -433,8 +431,8 @@ $1',
 'youhavenewmessages' => 'Te ghè $1 ($2).',
 'youhavenewmessagesfromusers' => "Te ghè $1 da {{PLURAL:$3|n'altro utente|$3 utenti}} ($2).",
 'youhavenewmessagesmanyusers' => 'Te ghè $1 da vari utenti ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|un messagio novo|dei messagi novi}}',
-'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|ultimo canbiamento|ultimi canbiamenti}}',
+'newmessageslinkplural' => '{{PLURAL:$1|un messagio novo|999=dei messagi novi}}',
+'newmessagesdifflinkplural' => '$1 {{PLURAL:$1|ultimo canbiamento|999=ultimi canbiamenti}}',
 'youhavenewmessagesmulti' => 'Te ghè messagi novi su $1',
 'editsection' => 'canbia',
 'editold' => 'canbia',
@@ -486,6 +484,8 @@ L'elenco de le pagine speciali te lo cati su [[Special:SpecialPages|{{int:specia
 # General errors
 'error' => 'Erore',
 'databaseerror' => 'Erore del database',
+'databaseerror-function' => 'Funsion: $1',
+'databaseerror-error' => 'Eror: $1',
 'laggedslavemode' => "'''Atension:''' ła pajina podaria no riportare i azornamenti pì resenti.",
 'readonly' => 'Database blocà',
 'enterlockreason' => 'Indicare el motivo del bloco, spesifegando el momento in cui xè presumibiłe che el venga rimoso',
@@ -525,9 +525,6 @@ No xe stà dà nisuna spiegasion in merito.',
 'perfcachedts' => "Sti dati cua xe stà ajornadi l'ultima volta el $1. Inte ła cache xe disponibiłe al masimo {{PLURAL:$4|on rexultado|$4 rexultadi}}.",
 'querypage-no-updates' => "L'azornamento periodico de sta pagina el xe sospeso. 
 I dati che ghè qua drento no i xe azornà.",
-'wrong_wfQuery_params' => 'Erore ne i parametri invià a ła funsion wfQuery()<br />
-Funsion: $1<br />
-Query: $2',
 'viewsource' => 'Varda el testo',
 'viewsource-title' => 'Varda el testo de $1',
 'actionthrottled' => 'Asion ritardà',
@@ -601,13 +598,14 @@ Nó desmentegarte de personałixare łe [[Special:Preferences|prefarense de {{SI
 'gotaccount' => "Sito zà iscrito? '''$1'''.",
 'gotaccountlink' => 'Entra',
 'userlogin-resetlink' => "Desmentegà i to dati d'aceso?",
-'userlogin-resetpassword-link' => 'Reinposta la to password',
+'userlogin-resetpassword-link' => "Te gheto desmentegà ła paroła d'ordine?",
 'helplogin-url' => 'Help:Login',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ajuto col login]]',
 'createacct-join' => 'Meti le to informassion qua soto.',
 'createacct-emailrequired' => 'Indirisso e-mail',
 'createacct-emailoptional' => 'Indiriso e-mail (opsionałe)',
 'createacct-email-ph' => 'Inserissi el to indirizo de e-mail',
+'createacct-another-email-ph' => "Inserissi l'indirizo de e-mail",
 'createaccountmail' => 'Dopara na password caxuałe tenporanea e inviała al indiriso e-mail spesifegà cuà soto',
 'createacct-realname' => 'Nome reale (opsionale)',
 'createaccountreason' => 'Motivassion:',
@@ -643,7 +641,7 @@ Asicurate de 'ver ativà i cookie, ricarica sta pajina e riprova.",
 'passwordtooshort' => 'Łe password e ga da contegnere almanco {{PLURAL:$1|1 caratere|$1 carateri}}.',
 'password-name-match' => 'Ła password a ga da esare difarente dal nome utente.',
 'password-login-forbidden' => 'Sto nome utente e/o password i xè stai proibìi',
-'mailmypassword' => 'Màndeme na password nova al me indirisso e-mail',
+'mailmypassword' => 'Rinposta ła password',
 'passwordremindertitle' => 'Servisio Password Reminder de {{SITENAME}}',
 'passwordremindertext' => 'Qualcheduni (probabilmente ti, da l\'indirizo IP $1) el gà domandà che ghe vegna mandà na nova password par {{SITENAME}} ($4).
 Na password tenporànea par l\'utente "$2" la xe stà creà e inpostà a "$3".
@@ -690,7 +688,7 @@ Spèta $1 prima de proàr da novo.',
 'user-mail-no-body' => 'Tentà de inviar na e-mail có un testo vodo o masa curto.',
 
 # Change password dialog
-'resetpass' => 'Cànbia la password',
+'changepassword' => 'Cànbia ła password',
 'resetpass_announce' => "L'acesso el xe stà efetuà con un codice tenporaneo, mandà par e-mail. Par conpletar l'acesso bisogna inpostar na password nova:",
 'resetpass_text' => '<!-- Zonta el testo qua -->',
 'resetpass_header' => 'Cànbia la password de la to utensa',
@@ -828,7 +826,7 @@ Se prega de specificar el to indirizo IP atuale ($3) e el nùmaro del bloco (ID
 'nosuchsectiontext' => 'Te ghè sercà de modificar na sezion che no esiste.
 Forse la xe stà spostà o scancelà fin che te sèri drio vardar la pagina.',
 'loginreqtitle' => "Par modificar sta pagina bisogna prima eseguir l'acesso al sito.",
-'loginreqlink' => 'login',
+'loginreqlink' => 'far el login',
 'loginreqpagetext' => 'Par védar altre pagine bisogna $1.',
 'accmailtitle' => 'Password spedia.',
 'accmailtext' => "Na password xenerà casualmente par [[User talk:$1|$1]] la xe stà mandà a $2.
@@ -941,6 +939,7 @@ No xe stà dà nissuna spiegazion in merito.",
 Pararìa che la sìpia stà scancelà.',
 'edit-conflict' => 'Conflito de modifica.',
 'edit-no-change' => 'La to modifica la xe stà ignorà, parché no ti gà canbià gnente nel testo.',
+'postedit-confirmation' => 'La modifica la xe stà salvà.',
 'edit-already-exists' => 'No se pol crear na pagina nova.
 La esiste de zà.',
 'defaultmessagetext' => 'Testo predefinìo',
@@ -1010,8 +1009,8 @@ La motivazion del bloco fornìa da $3 la xe sta qua: ''$2''",
 Legenda: '''({{int:cur}})''' = difarense co l'ultima version, '''({{int:last}})''' = difarense co la version subito prima, '''{{int:minoreditletter}}''' = canbiamento picenin",
 'history-fieldset-title' => 'Ruma in te la storia',
 'history-show-deleted' => 'Solo quei scancelà',
-'histfirst' => 'Prima',
-'histlast' => 'Ultema',
+'histfirst' => 'pi vecia',
+'histlast' => 'pi nova',
 'historysize' => '({{PLURAL:$1|1 byte|$1 byte}})',
 'historyempty' => '(voda)',
 
@@ -1056,10 +1055,6 @@ Te połi uncora vixuałixare sto confronto; controłare el [{{fullurl:{{#Special
 'revisiondelete' => 'Scanceła o ripristina version',
 'revdelete-nooldid-title' => 'Version mìa specificà',
 'revdelete-nooldid-text' => 'No xe stà specificà alcuna version de la pagina su cui eseguir sta funzion.',
-'revdelete-nologtype-title' => 'Nissun tipo de registro specificà',
-'revdelete-nologtype-text' => "No ti gà indicà nissun tipo de registro su cui eseguir l'azion.",
-'revdelete-nologid-title' => 'Eròr de indicazion dei registri',
-'revdelete-nologid-text' => "Par eseguir sta funsion no te ghè indicà na destinassion par el registro opure el registro no l'esiste.",
 'revdelete-no-file' => "El file indicà no l'esiste mia.",
 'revdelete-show-file-confirm' => 'Vuto dal bon vardar la version scancelà del file "<nowiki>$1</nowiki>" del $2 a le $3?',
 'revdelete-show-file-submit' => 'Sì',
@@ -1073,15 +1068,15 @@ I altri aministradori de {{SITENAME}} i podarà vardar istesso i contenuti scont
 * Informassion personali mia apropriate
 *: ''indirissi de casa e nùmari de telefono, nùmari de previdensa sociale, etc.''",
 'revdelete-legend' => 'Inposta le seguenti limitazion su le versioni scancelàe:',
-'revdelete-hide-text' => 'Scondi el testo de ła version',
+'revdelete-hide-text' => 'El testo de ła version',
 'revdelete-hide-image' => 'Scondi i contenuti del file',
 'revdelete-hide-name' => 'Scondi azion e ogeto de la stessa',
-'revdelete-hide-comment' => "Scondi l'oggetto de ła modifega",
-'revdelete-hide-user' => "Scondi el nome o l'indirisso IP dell'autore",
+'revdelete-hide-comment' => "L'ogeto de ła modifega",
+'revdelete-hide-user' => "El nome o l'indirisso IP de l'autor",
 'revdelete-hide-restricted' => 'Scóndighe le informassion indicà anca ai aministradori',
 'revdelete-radio-same' => '(no stà canbiar)',
-'revdelete-radio-set' => 'Sì',
-'revdelete-radio-unset' => 'No',
+'revdelete-radio-set' => 'Sconto',
+'revdelete-radio-unset' => 'Visibile',
 'revdelete-suppress' => 'Scondi le informazion anca ai aministradori',
 'revdelete-unsuppress' => 'Elimina le limitazion su le revision ripristinà',
 'revdelete-log' => 'Motivassion:',
@@ -1093,8 +1088,6 @@ $1",
 'logdelete-failure' => "'''No se riesse a inpostar la visibilità 'ntel registro:'''
 $1",
 'revdel-restore' => 'Canbia la vixibilità',
-'revdel-restore-deleted' => 'revision scancelà',
-'revdel-restore-visible' => 'revision visibili',
 'pagehist' => 'Cronologia de la pagina',
 'deletedhist' => 'Cronologia scancelà',
 'revdelete-hide-current' => 'No se pol scondar la version datà $1 a le $2, parché la xe la version corente.',
@@ -1169,12 +1162,8 @@ I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 # Search results
 'searchresults' => 'Risultati de la riserca',
 'searchresults-title' => 'Risultati de la riserca de "$1"',
-'searchresulttext' => 'Par informassion su la riserca drento de {{SITENAME}}, varda [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Te ghè sercà \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|tute le pagine che taca con "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tute le pagine che ponta a "$1"]])',
-'searchsubtitleinvalid' => "Riserca de '''$1'''",
 'toomanymatches' => 'Xe stà catà massa corispondense, par piaser próa a modificar la richiesta.',
 'titlematches' => 'In tei titoli de le pagine',
-'notitlematches' => 'Nei titoli de pagina no gò catà gnente',
 'textmatches' => 'Corispondense nel testo de le pagine',
 'notextmatches' => 'Nei testi de le pagine no gò catà gnente',
 'prevn' => '{{PLURAL:quela prima|le $1 prima}} de ste qua',
@@ -1183,10 +1172,8 @@ I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'nextn-title' => '{{PLURAL:$1|el risultato dopo|i $1 risultati dopo}}',
 'shown-title' => 'Fà védar {{PLURAL:$1|un risultato|$1 risultati}} par pagina',
 'viewprevnext' => 'Varda ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Opzion de riserca',
 'searchmenu-exists' => 'Su sto sito ghe xe na pagina che se ciama "[[:$1]]"',
 'searchmenu-new' => "'''Crèa la pagina \"[[:\$1]]\" su sta wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Varda tute le pagine che taca co ste létere]]',
 'searchprofile-articles' => 'Pagine de contenuti',
 'searchprofile-project' => 'Pagine de progeto e de ajuto',
 'searchprofile-images' => 'File',
@@ -1207,21 +1194,16 @@ I detaji i pol esar catai inte'l [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'search-interwiki-default' => 'Risultati da $1:',
 'search-interwiki-more' => '(altro)',
 'search-relatedarticle' => 'Ligà',
-'mwsuggest-disable' => 'Disabilita sugerimenti de riserca',
 'searcheverything-enable' => 'Serca in tuti quanti i namespace',
 'searchrelated' => 'ligà',
 'searchall' => 'tuti',
 'showingresults' => "Qua de soto vien mostrà al massimo {{PLURAL:$1|'''1''' risultato|'''$1''' risultati}} a partir dal nùmaro '''$2'''.",
 'showingresultsnum' => "Qua soto ghe xe {{PLURAL:$3|'''1''' risultato|'''$3''' risultati}} a partir da #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Risultato '''$1''' de '''$3'''|Risultati '''$1 - $2''' de '''$3'''}} par '''$4'''",
-'nonefound' => "'''Ocio''': par default se serca solo in certi namespace. 
-Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i namespace (conpresi pagine de discussion, modèi, ecc.) o se nò métighe davanti el namespace che te voli.",
 'search-nonefound' => 'La riserca no la gà catà gnente.',
-'powersearch' => 'Riserca',
 'powersearch-legend' => 'Riserca avansà',
 'powersearch-ns' => 'Serca ne i namespace:',
 'powersearch-redir' => 'Elenca redirect',
-'powersearch-field' => 'Serca',
 'powersearch-togglelabel' => 'Selessiona:',
 'powersearch-toggleall' => 'Tuti quanti',
 'powersearch-togglenone' => 'Nissun',
@@ -1233,7 +1215,6 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'preferences' => 'Prefarense',
 'mypreferences' => 'Prefarense',
 'prefs-edits' => 'Nùmaro de modifiche:',
-'changepassword' => 'Cànbia ła password',
 'prefs-skin' => 'Aspeto grafico',
 'skin-preview' => 'Anteprima',
 'datedefault' => 'Nissuna preferensa',
@@ -1256,13 +1237,11 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'prefs-email' => 'Preferense e-mail',
 'prefs-rendering' => 'Aspeto grafico',
 'saveprefs' => 'Salva le preferense',
-'resetprefs' => 'Reinposta le preferense',
 'restoreprefs' => 'Ripristina le inpostassion predefinìe',
 'prefs-editing' => 'Canbiamento',
 'rows' => 'Righe:',
 'columns' => 'Cołone:',
 'searchresultshead' => 'Riserca',
-'resultsperpage' => 'Nùmaro de risultati par pagina:',
 'stub-threshold' => 'Valor minimo par i <a href="#" class="stub">colegamenti ai stub</a>:',
 'stub-threshold-disabled' => 'Disativà',
 'recentchangesdays' => 'Nùmaro de giòrni da mostrar ne le ultime modifiche:',
@@ -1274,7 +1253,6 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
 'localtime' => 'Ora locale:',
 'timezoneuseserverdefault' => 'Dopara el orario predefinìo de wiki ($1)',
 'timezoneuseoffset' => 'Altro (spesifica difarensa)',
-'timezoneoffset' => 'Difarensa¹:',
 'servertime' => 'Ora del server:',
 'guesstimezone' => "Dòpara l'ora del to browser",
 'timezoneregion-africa' => 'Africa',
@@ -1330,6 +1308,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'prefs-dateformat' => 'Formato de la data',
 'prefs-timeoffset' => 'Ore de difarensa',
 'prefs-advancedediting' => 'Preferense avansade',
+'prefs-editor' => 'Contributor',
 'prefs-advancedrc' => 'Preferense avansade',
 'prefs-advancedrendering' => 'Preferense avansade',
 'prefs-advancedsearchoptions' => 'Preferense avansade',
@@ -1509,13 +1488,13 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'recentchanges-label-minor' => 'Sto qua el xe un canbiamento picenin',
 'recentchanges-label-bot' => 'Sta modifica el la ga fata un bot',
 'recentchanges-label-unpatrolled' => 'Sta modifica no la xe stà gnancora verificà',
-'recentchanges-legend-newpage' => '$1 - pagina nova',
-'rcnote' => "Qua soto se vede {{PLURAL:$1|l'ultimo canbiamento|i ultimi '''$1''' canbiamenti}} {{PLURAL:$2|in te l'ultimo zorno|in tei ultimi '''$2''' zorni}}, fin a le $5 del $4.",
+'recentchanges-label-plusminus' => 'La dimension de la pagina la xe canbià de sto nùmaro de byte',
+'recentchanges-legend-newpage' => "(varda anca [[Special:NewPages|l'elenco de le pagine nove]])",
 'rcnotefrom' => "Qui di seguito sono elencate le modifiche da '''$2''' (fino a '''$1''').",
 'rclistfrom' => 'Fà védar i canbiamenti fati dal $1',
 'rcshowhideminor' => '$1 i canbiamenti picenini',
 'rcshowhidebots' => '$1 i bot',
-'rcshowhideliu' => '$1 i utenti registrai',
+'rcshowhideliu' => '$1 i utenti registrài',
 'rcshowhideanons' => '$1 i utenti anonimi',
 'rcshowhidepatr' => '$1 łe modifeghe controłae',
 'rcshowhidemine' => '$1 i me canbiamenti',
@@ -1532,7 +1511,7 @@ Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
 'rc_categories_any' => 'Qualsiasi',
 'rc-change-size-new' => '$1 {{PLURAL:$1|byte}} dopo ła modifega',
 'newsectionsummary' => '/* $1 */ sezion nova',
-'rc-enhanced-expand' => 'Mostra detaji (richiede JavaScript)',
+'rc-enhanced-expand' => 'Mostra detaji',
 'rc-enhanced-hide' => 'Scondi detaji',
 'rc-old-title' => 'creà in orijine come "$1"',
 
@@ -1552,8 +1531,7 @@ Le pagine [[Special:Watchlist|tegnùe d'ocio]] le xe in '''grosso'''.",
 'reuploaddesc' => 'Lassa pèrdar el caricamento e torna al modulo de caricamento',
 'upload-tryagain' => 'Invia la descrission del file modificà',
 'uploadnologin' => 'Te devi far el login par exeguire sta operassion.',
-'uploadnologintext' => 'Te ghè da far [[Special:UserLogin|el login]]
-par poder cargar dei file.',
+'uploadnologintext' => 'Te ghè da $1 par cargar dei file.',
 'upload_directory_missing' => 'La cartèla de caricamento ($1) no la esiste mìa e no la pode vegner creàda dal browser web.',
 'upload_directory_read_only' => "El server web no l'è bon de scrìvar ne la directory de caricamento ($1).",
 'uploaderror' => 'Eror nel caricamento',
@@ -1890,7 +1868,9 @@ Probabilmente te vui modifegar ła descrision prexente inte ła [$2 pàjina de d
 
 # Random page in category
 'randomincategory' => 'Pagina a ocio in te na categoria',
+'randomincategory-invalidcategory' => '"$1" no\'l và mia ben come nome de categoria.',
 'randomincategory-nopages' => 'No ghe xe mia pagine in [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Ciapa na pagina a ocio da la categoria: $1 $2.',
 'randomincategory-selectcategory-submit' => 'Và',
 
 # Random redirect
@@ -1987,14 +1967,14 @@ Le righe <del>sbarà</del> le xe xà stà sistemà.',
 'protectedpages' => 'Pagine protete',
 'protectedpages-indef' => 'Solo le protezion infinìe',
 'protectedpages-cascade' => 'Solo protezion ricorsive',
-'protectedpagestext' => 'De seguito vien presentà un elenco de pagine protete, che no se pol modificar o spostar',
+'protectedpages-noredirect' => 'Scondi rimandi',
 'protectedpagesempty' => 'Al momento no ghe xe pagine protete',
 'protectedtitles' => 'Titoli proteti',
-'protectedtitlestext' => 'No se pol crear pagine coi titoli elencà de seguito',
 'protectedtitlesempty' => 'Al momento no ghe xe titoli proteti coi parametri specificà.',
 'listusers' => 'Elenco dei utenti',
 'listusers-editsonly' => 'Fà védar sol che i utenti che gà fato dei contributi',
 'listusers-creationsort' => 'Òrdena par data de creassion',
+'listusers-desc' => 'Ordina in senso decresente',
 'usereditcount' => '$1 {{PLURAL:$1|contributo|contributi}}',
 'usercreated' => '{{GENDER:$3|Creà|Creà}} el $1 a le $2',
 'newpages' => 'Pagine nove',
@@ -2041,9 +2021,6 @@ Te podi restrénzar i criteri de riçerca selezionando el tipo de registro, el n
 'allpagesto' => 'Mostra le pagine fin a:',
 'allarticles' => 'Tute le pagine',
 'allinnamespace' => 'Tute le pagine del namespace $1',
-'allnotinnamespace' => 'Tute le pagine (via de quele nel namespace $1)',
-'allpagesprev' => 'Quele prima',
-'allpagesnext' => 'Quele dopo',
 'allpagessubmit' => 'Va',
 'allpagesprefix' => 'Mostra le pagine che taca con:',
 'allpagesbadtitle' => "El titolo indicà par la pagina no'l xe mìa valido o el contien prefissi interlengua o interwiki. El podarìa inoltre contegner uno o più caràteri che no se pole doparar nei titoli.",
@@ -2370,7 +2347,6 @@ Se dopo ła scancełazion xè stà creà na nova pàxena col stesso titoło, łe
 'undeletebtn' => 'RIPRISTINA!',
 'undeletelink' => 'varda/ripristina',
 'undeleteviewlink' => 'varda',
-'undeletereset' => 'Reinposta',
 'undeleteinvert' => 'Inverti selession',
 'undeletecomment' => 'Motivassion:',
 'undeletedrevisions' => '{{PLURAL:$1|Una revision recuperà|$1 revision recuperà}}',
@@ -2411,9 +2387,9 @@ $1',
 'contributions' => 'Contributi {{GENDER:$1|utente}}',
 'contributions-title' => 'Contributi de $1',
 'mycontris' => 'Contributi',
-'contribsub2' => 'Par $1 ($2)',
+'contribsub2' => 'Par {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'No xe stà catà nissuna modifica che vaga ben par sti critèri.',
-'uctop' => '(ultima)',
+'uctop' => '(de dèsso)',
 'month' => 'Dal mese (e quei prima):',
 'year' => "Da l'ano (e quei prima):",
 
@@ -2457,13 +2433,11 @@ $1',
 'block' => 'Bloca utente',
 'unblock' => 'Sbloca utente',
 'blockip' => 'Bloco utente',
-'blockip-title' => "Bloca l'utente",
 'blockip-legend' => "Bloca l'utente",
 'blockiptext' => "Dòpara el moduło qua soto par blocar l'accesso in scritura a un speçifico utente o indirizo IP. El bloco el gà de èssar operà par prevegner ati de vandalismo e in streta osservansa de ła [[{{MediaWiki:Policy-url}}|policy de {{SITENAME}}]]. Speçifica in detałio el motivo del bloco nel canpo seguente (ad es. indicando i titołi de łe pàxene ogeto de vandalismo).",
 'ipadressorusername' => 'Indirizo IP o nome utente',
 'ipbexpiry' => 'Scadensa',
 'ipbreason' => 'Motivassion:',
-'ipbreasonotherlist' => 'Altra motivazion',
 'ipbreason-dropdown' => '*Motivazion piassè comuni par i blocchi
 ** Inserimento de informazion false
 ** Rimozion de contenuti da le pagine
@@ -2479,8 +2453,6 @@ $1',
 'ipbsubmit' => 'Bloca sto indirisso IP',
 'ipbother' => 'Altra durata:',
 'ipboptions' => '2 ore:2 hours,1 zorno:1 day,3 zorni:3 days,1 setimana:1 week,2 setimane:2 weeks,1 mese:1 month,3 mesi:3 months,6 mesi:6 months,1 ano:1 year,infinìo:infinite',
-'ipbotheroption' => 'altro',
-'ipbotherreason' => 'Altri motivi/detagli:',
 'ipbhidename' => 'Scondi el nome utente da le modìfeghe e da i elenchi.',
 'ipbwatchuser' => "Tien d'ocio la pagina utente e la pagina de discussion de sto utente",
 'ipb-disableusertalk' => "Inpedissi a sto utente de modifegar la propia pajina de discussion mentre l'è blocà",
@@ -2569,7 +2541,6 @@ Qua soto ghe xe el registro de le sopression:',
 'sorbsreason' => 'Sto indirizo IP el xe elencà come proxy verto ne la lista nera DNSBL doparà da {{SITENAME}}.',
 'sorbs_create_account_reason' => 'No se pol crear acessi novi da sto indirizo IP parché el xe elencà come proxy verto ne la lista nera DNSBL doparà da {{SITENAME}}.',
 'xffblockreason' => "Un indiriso IP presente ne l'intestasion X-Forwarded-For, tuo o del server proxy che te sì drio doparar, el xe stà blocà. La motivasion originale del bloco la xe: $1",
-'cant-block-while-blocked' => 'No se pode blocar altri utenti finché se xe blocài.',
 'cant-see-hidden-user' => "L'utente che te vol blocar el xe zà stà blocà e sconto. Sicome a no te ghè mia i diriti de hideuser, no te pol mia védar o canbiar el bloco de l'utente.",
 'ipbblocked' => 'No te pui blocare o sblocare altri utenti, parché ti steso te si blocà',
 'ipbnounblockself' => 'No te pui sblocare ti steso',
@@ -2626,7 +2597,6 @@ Stà ben tento a le conseguense del spostamento, prima de farlo.",
 * La casèla qua soto la xe stà deselezionà.",
 'movearticle' => 'Sposta la pagina:',
 'moveuserpage-warning' => "'''Ocio:''' Te sì drio spostar na pagina utente. Par piaser tien conto che vegnarà spostà solo la pagina e l'utente no'l vegnarà ''mia'' rinominà.",
-'movenologin' => 'No te ghè efetuà el login',
 'movenologintext' => 'Te ghè da èssar un utente registrà ed aver efetuà el [[Special:UserLogin|login]] par poder spostar na pàxena.',
 'movenotallowed' => 'No te ghè i parmessi necessari al spostamento de le pagine.',
 'movenotallowedfile' => 'No ti gà i parmessi necessari par spostar file.',
@@ -2642,8 +2612,6 @@ Stà ben tento a le conseguense del spostamento, prima de farlo.",
 'articleexists' => "Na pagina con sto nome la ghe xe de zà, opure el titolo che te ghè messo no'l và mia ben.
 Par piaser, métighe un titolo difarente.",
 'cantmove-titleprotected' => 'No se pol mìa spostar la pagina, in quanto el novo titolo el xe stà proteto par inpedirghene la creazion',
-'talkexists' => "'''La pagina la xe stà spostà coretamente, ma no s'à mìa podesto spostar la pagina de discussion parché ghe ne xe xà n'altra col stesso nome. Par piaser meti insieme i contenuti de le do pagine a man.'''",
-'movedto' => 'spostà a',
 'movetalk' => 'Sposta anca la so pagina de discussion',
 'move-subpages' => 'Sposta tute le sotopagine (fin a $1)',
 'move-talk-subpages' => 'Sposta tute le sotopagine de la pagina de discussion (fin a $1)',
@@ -2994,7 +2962,7 @@ La so esecuzion la podarìa danegiar el to computer.",
 'svg-long-desc' => 'file en formato SVG, dimension nominałi $1 × $2 pixel, dimension del file: $3',
 'svg-long-desc-animated' => 'file in formato SVG animà, dimension nominałi $1 × $2 pixel, dimension del file: $3',
 'svg-long-error' => 'File SVG mìa valido: $1',
-'show-big-image' => 'Version ad alta risołusion',
+'show-big-image' => 'File original',
 'show-big-image-preview' => 'Dimension de sta anteprima: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Altra risołusion|Altre risołusion}}: $1.',
 'show-big-image-size' => '$1 × $2 pixel',
@@ -3465,15 +3433,10 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
 'exif-urgency-high' => 'Alta ($1)',
 'exif-urgency-other' => 'Priorità definie dal utente ($1)',
 
-# External editor support
-'edit-externally' => 'Modifega sto file usando on programa foresto',
-'edit-externally-help' => '(Par saverghene de pì consultare łe [https://www.mediawiki.org/wiki/Manual:External_editors istrusion])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tute',
 'namespacesall' => 'Tuti',
 'monthsall' => 'tuti',
-'limitall' => 'tuti quanti',
 
 # Email address confirmation
 'confirmemail' => 'Conferma indirisso e-mail',
@@ -3497,7 +3460,6 @@ El messagio de eror el xe: $1",
 'confirmemail_needlogin' => 'Xè necessario $1 par confermare el proprio indirisso e-mail.',
 'confirmemail_success' => "El to indirisso email l'è stado confermà. Ora te podi loggarte e gòderte la wiki.",
 'confirmemail_loggedin' => 'El to indirisso email el xè stà confermà.',
-'confirmemail_error' => "Qualcossa l'è andà storto nel salvar la to conferma.",
 'confirmemail_subject' => "{{SITENAME}}: e-mail par la conferma de l'indirisso",
 'confirmemail_body' => 'Qualcheduni, probabilmente ti stesso da l\'indirizo IP $1, el ga registrà n\'account "$2" con sto indirizo e-mail su {{SITENAME}}.
 
@@ -3562,6 +3524,9 @@ Par piaser, conferma che te vołi dal bon ricrear sta voxe.',
 'imgmultigo' => 'Và',
 'imgmultigoto' => 'Và a la pagina $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(lengua predefinìa)',
+
 # Table pager
 'ascending_abbrev' => 'cresc',
 'descending_abbrev' => 'decresc',
@@ -3642,7 +3607,13 @@ Nota che te pol anca [[Special:EditWatchlist|modificar la lista con l'interfacia
 'version-hook-name' => "Nome de l'hook",
 'version-hook-subscribedby' => 'Sotoscrizioni',
 'version-version' => '(Version $1)',
-'version-license' => 'Licensa',
+'version-license' => 'Licensa MediaWiki',
+'version-ext-license' => 'Licensa',
+'version-ext-colheader-name' => 'Estension',
+'version-ext-colheader-version' => 'Version',
+'version-ext-colheader-license' => 'Licensa',
+'version-ext-colheader-description' => 'Descrission',
+'version-license-title' => 'Licensa par $1',
 'version-poweredby-credits' => "Sta wiki la va con '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
 'version-poweredby-others' => 'altri',
 'version-poweredby-translators' => 'tradutori de translatewiki.net',
@@ -3723,13 +3694,13 @@ Insieme co sto programa te dovaressi 'ver ricevùo na copia de la Licensa Public
 'tags-tag' => 'Nome del tag',
 'tags-display-header' => 'Aspetto ne la lista de le modifiche',
 'tags-description-header' => 'Descrission conpleta del significado',
+'tags-active-header' => 'Ativo?',
 'tags-hitcount-header' => 'Modifiche che gà dei tag',
 'tags-edit' => 'modìfega',
 'tags-hitcount' => '$1 {{PLURAL:$1|modìfega|modìfeghe}}',
 
 # Special:ComparePages
 'comparepages' => 'Confronta le pagine',
-'compare-selector' => 'Confronta le revision de na pagina',
 'compare-page1' => 'Pagina 1',
 'compare-page2' => 'Pagina 2',
 'compare-rev1' => 'Revisión 1',
index 45a1497..21c3e90 100644 (file)
@@ -97,28 +97,27 @@ $messages = array(
 'tog-extendwatchlist' => 'Levitagat kaclendnimikirjutez, miše nähta kaik toižetused.',
 'tog-usenewrc' => 'Kävutagat paremboitud tantoižed toižetused (pidab otta radho JavaScript)',
 'tog-numberheadings' => 'Nomeruida avtomatižikš pälkirjutesed',
-'tog-showtoolbar' => "Ozutada azegiden üläpanel' redaktiruindan aigan (JavaScript)",
+'tog-showtoolbar' => "Ozutada redaktiruindan panel'",
 'tog-editondblclick' => 'Redaktiruida lehtpoled kaksitadud plokul',
 'tog-editsection' => 'Ozutada "Redaktiruida"-kosketuz kaikuččen sekcijan täht',
 'tog-editsectiononrightclick' => 'Redaktiruida sekcijad hiren oiktal plokul pälkirjutesele',
 'tog-showtoc' => 'Ozutada südäiolend (lehtpoled, kudambil om enamba, mi 3 pälkirjutest)',
 'tog-rememberpassword' => 'Muštta minun kävutajan nimi neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
-'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled minun kaclendkirjuteshe',
-'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled minun kaclendkirjuteshe',
-'tog-watchmoves' => 'Ližata kaik minai udesnimitadud lehtpoled minun kaclendkirjuteshe',
-'tog-watchdeletion' => 'Ližata kaik minai čutud lehtpoled minun kaclendkirjuteshe',
+'tog-watchcreations' => 'Ližata kaik minai sätud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchdefault' => 'Ližata kaik minai toižetadud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchmoves' => 'Ližata kaik minai udesnimitadud lehtpoled da failad minun kaclendkirjuteshe',
+'tog-watchdeletion' => 'Ližata kaik minai čutud lehtpoled da failad minun kaclendkirjuteshe',
 'tog-minordefault' => 'Znamoita äugotižjärgendusen mödhe kaik toižetused penikš',
 'tog-previewontop' => 'Panda ezikacund redaktiruindan iknan edehe',
 'tog-previewonfirst' => 'Ozutada ezikacund redaktiruindan augotades',
-'tog-nocache' => "Kel'ta lehtpoliden keširuind",
-'tog-enotifwatchlistpages' => 'Oigekat minei e-počt, konz lehtpoled minun kaclendnimikirjutesespäi toižetase',
+'tog-enotifwatchlistpages' => 'Oigekat minei e-počt, konz lehtpoled vai failad minun kaclendnimikirjutesespäi toižetasoiš',
 'tog-enotifusertalkpages' => "Oigeta minei e-počt, konz minun lodulehtpol' toižetase",
-'tog-enotifminoredits' => 'Oigeta minei e-počt eskai siloi, konz toižetused oma minimaližed',
+'tog-enotifminoredits' => 'Oigeta minei e-počt eskai siloi, konz toižetused lehtpolil vai failoiš oma minimaližed',
 'tog-enotifrevealaddr' => 'Ozutada minun počtadres tedotuzkirjeižiš',
 'tog-shownumberswatching' => 'Ozutada niiden kävutajiden lugu, kudambad oma mülütanuded lehtpolen ičeze kaclendnimikirjutesihe',
 'tog-oldsig' => 'Nügüdläine allekirjutez',
 'tog-fancysig' => 'Ičeze allekirjutesen wiki-znamišt (avtomatižeta kosketuseta)',
-'tog-uselivepreview' => 'Kävutada hered ezikacund (JavaScript) (Eksperimentaline)',
+'tog-uselivepreview' => 'Kävutada hered ezikacund (Eksperimentaline)',
 'tog-forceeditsummary' => 'Varutada, kunz toižetusen ümbrikirjutandan pöud ei ole täuttud',
 'tog-watchlisthideown' => 'Peitta minun redakcijad kaclendnimikirjutesespäi',
 'tog-watchlisthidebots' => 'Peitta botoiden redakcijad kaclendnimikirjutesespäi',
@@ -230,6 +229,7 @@ $messages = array(
 'newwindow' => '(avaidase udes iknas)',
 'cancel' => 'Heitta pätand',
 'moredotdotdot' => 'Edeleze...',
+'morenotlisted' => 'Nece nimikirjutez ei ole vaumiž.',
 'mypage' => "Lehtpol'",
 'mytalk' => 'Lodud',
 'anontalk' => 'Lodud neciš IP-adresas',
@@ -242,7 +242,6 @@ $messages = array(
 'qbedit' => 'Redaktiruida',
 'qbpageoptions' => 'Necen lehtpolen järgendused',
 'qbmyoptions' => 'Minun järgendused',
-'qbspecialpages' => 'Specialižed lehtpoled',
 'faq' => 'PPK',
 'faqpage' => 'Project:PPK',
 
@@ -332,7 +331,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).
 'aboutsite' => 'Informacii saitas {{SITENAME}}',
 'aboutpage' => 'Project:Informacii',
-'copyright' => 'südäiolend kävutadas $1-licenzijan mödhe.',
+'copyright' => 'südäiolend kävutadas $1-licenzijan mödhe, ku ei ole ozutadud toižin.',
 'copyrightpage' => '{{ns:project}}:tegijan oiktused',
 'currentevents' => 'Nügüdläižed tegod',
 'currentevents-url' => 'Project:Nügüdläižed tegod',
@@ -359,6 +358,10 @@ Kacu [[Special:Version|informacii kävutadud versijoiš]].',
 'ok' => 'Ka',
 'retrievedfrom' => 'Purde - "$1"',
 'youhavenewmessages' => 'Tö sat $1 ($2).',
+'youhavenewmessagesfromusers' => 'Teil om $1 {{PLURAL:$3|toižel kävutajalpäi|$3 kävutajilpäi}} ($2).',
+'youhavenewmessagesmanyusers' => 'Teil om $1 äjil kävutajilpäi ($2).',
+'newmessageslinkplural' => "{{PLURAL:$1|uz' kirjeine|ut kirješt}}",
+'newmessagesdifflinkplural' => "{{PLURAL:$1|jäl'gmäine toižetuz|jäl'gmäšt toižetust}}",
 'youhavenewmessagesmulti' => 'Teil om uzid tedotusid $1-lehtpolel',
 'editsection' => 'redaktiruida',
 'editold' => 'redaktiruida',
@@ -410,6 +413,8 @@ Kc. [[Special:SpecialPages|specialižiden lehtpoliden nimikirj]].",
 # General errors
 'error' => 'Petuz',
 'databaseerror' => 'Andmusiden bazan petuz',
+'databaseerror-query' => 'Ecmine: $1',
+'databaseerror-function' => 'Funkcii:$1',
 'databaseerror-error' => 'Petuz: $1',
 'laggedslavemode' => "Varutuz: voib olda, lehtpolen versijal ei ole jäl'gmäižid ližadusid.",
 'readonly' => 'Andmusiden baz om luklostadud',
@@ -439,6 +444,7 @@ Ližakat URL.',
 'cannotdelete' => 'Ei voi čuta poiš necidä lehtpol\'t vai "$1"-failad.
 Sen om jo čutnu ken-se toine.',
 'cannotdelete-title' => "Ei voi heitta «$1»-lehtpol't",
+'no-null-revision' => 'Ei voi säta ut 0-revizijad "$1"-lehtpolen täht',
 'badtitle' => 'Hond nimi',
 'badtitletext' => 'Ectud lehtpolen nimi om vär, vai mugošt nimed ei ole, vai kelidenkeskeline (interwiki) nimi om kirjutadud värin.
 Siš voib olda simvoloid, kudambid ei sa panda nimihe.',
@@ -446,13 +452,10 @@ Siš voib olda simvoloid, kudambid ei sa panda nimihe.',
 'perfcachedts' => "Nened andmused oma kešespäi, ned oma uzištadud jäl'gmäižel kerdal siloi: $1. Kešas ei ole enambad mi {{PLURAL:$1|rezul'tat|$1 rezul'tatad}}.",
 'querypage-no-updates' => "Necen lehtpolen udištand ei ole nügüd' kävutamas.
 Anttud naku andmused ei udištugoi.",
-'wrong_wfQuery_params' => 'Värad parametrad necen funkcijan täht: wfQuery()<br />
-Funkcii: $1<br />
-Ecind: $2',
 'viewsource' => 'Kc. purde',
 'viewsource-title' => 'Ozutada $1-lehtpolen lähtmižtekst',
 'actionthrottled' => 'Tegendan piguz om kaidetud',
-'protectedpagetext' => "Nece lehtpol' om luklostadud, miše kaita se redaktiruindaspäi.",
+'protectedpagetext' => "Nece lehtpol' om luklostadud, miše kaita se redaktiruindaspäi da toižis tegendoišpäi.",
 'viewsourcetext' => 'Sab lugeda da kopiruida necen lehtpolen augotižtekst:',
 'protectedinterface' => 'Necil lehtpolel om programman interfeistedotuz. Se om luklostadud, miše kaita se vandalizmaspäi.',
 'editinginterface' => "'''Homaikat:''' Tö ladit redaktiruida lehtpol't, kudambal om programman interfeistekst.
@@ -461,9 +464,13 @@ Kändmižen täht om paremb kävutada [//translatewiki.net/wiki/Main_Page?setlan
 'namespaceprotected' => "Teil ei ole oiktust redaktiruida lehtpolid '''$1'''-nimiavaruses.",
 'customcssprotected' => 'Teil ei ole oiktust redaktiruida nece CSS-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
 'customjsprotected' => 'Teil ei ole oiktust redaktiruida nece JavaScript-lehtpol’, sikš sil oma toižen ühtnijan personaližed järgendused.',
+'mycustomcssprotected' => 'Teile ei sa redaktiruida necidä CSS-lehtpol’t.',
+'mycustomjsprotected' => "Teile ei sa redaktiruida necidä JavaScript-lehtpol't.",
+'myprivateinfoprotected' => 'Teile ei sa redaktiruida ičetoi personališt informacijad.',
 'ns-specialprotected' => 'Ei sa redaktiruida specialižid lehtpolid.',
 'titleprotected' => '[[User:$1|$1]]-kävutai om kel\'nu mugoižen lehtpolen pälkirjutesen kävutamižen.
 Sü om "\'\'$2\'\'".',
+'exception-nologin' => 'Ei ole kirjutadud sistemha',
 
 # Virus scanner
 'virus-badscanner' => "Järgendusen petuz: tundmatoi virusoiden skaner: ''$1''",
@@ -481,6 +488,7 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'createacct-another-username-ph' => 'Kirjutagat kävutajannimi',
 'yourpassword' => 'Peitsana:',
 'userlogin-yourpassword' => 'Peitsana',
+'userlogin-yourpassword-ph' => 'Kirjutagat teiden peitsana',
 'createacct-yourpassword-ph' => 'Kirjutagat peitsana',
 'yourpasswordagain' => 'Kirjutagat peitsana udes:',
 'createacct-yourpasswordagain' => 'Peitsanan vahvištoituz',
@@ -488,6 +496,7 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'remembermypassword' => 'Panda muštho minun tulendandmused neciš kompjuteras (enintään $1 {{PLURAL:$1|päivä|päivää}})',
 'userlogin-remembermypassword' => 'Jäda sistemha',
 'yourdomainname' => 'Teiden domen:',
+'password-change-forbidden' => 'Teile ei sa vajehtada peitsanad neciš vikiš.',
 'externaldberror' => 'Ozaižihe petuz autentifikacijan, kudamb tehtihe andmusiden irdbazan turbiš, aigan, vai teile ei ulotu oiktusid toižetada ičetoi irdregistracijad.',
 'login' => 'Kirjutadas sistemha',
 'nav-login-createaccount' => 'Kirjutadas / Sada registracii',
@@ -497,13 +506,18 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'logout' => 'Lähtta',
 'userlogout' => 'Lähtta',
 'notloggedin' => 'Tö et olgoi kirjutanus sistemha',
+'userlogin-joinproject' => 'Ühtne {{SITENAME}}-saiha',
 'nologin' => "Ku tö et völ olgoi sanuded registracijad, '''$1'''.",
 'nologinlink' => 'Sada registracii',
 'createaccount' => 'Sada registracii',
 'gotaccount' => "Ku teil om jo registracii, '''$1'''.",
 'gotaccountlink' => 'Kirjutagatoiš sistemha',
 'userlogin-resetlink' => 'Unohtid-ik andmused tulendan täht?',
-'createaccountmail' => 'e-počtaiči',
+'createacct-emailrequired' => 'E-počtal adres',
+'createacct-email-ph' => 'Kirjutagat teiden e-počtan adres',
+'createacct-another-email-ph' => 'Kirjutagat e-počtan adres',
+'createaccountmail' => 'Kävutagat aigaline statjaline peitsana i oigekat ozutadud e-počtan adresale',
+'createacct-realname' => 'Todesine nimi (opcionaline)',
 'createaccountreason' => 'Sü:',
 'createacct-reason' => 'Sü',
 'createacct-reason-ph' => 'Mikš sädad kävutajanprofilid?',
@@ -511,6 +525,10 @@ Otkat sil'mnägubale, miše erasid lehtpolid ozutaškatas mugažo, kut i edel te
 'createacct-imgcaptcha-ph' => 'Kirjutagat tekst pälpäi',
 'createacct-submit' => "Säta kävutajanprofil'",
 'createacct-another-submit' => "Säta toine kävutajanprofil'",
+'createacct-benefit-heading' => '{{SITENAME}}-saitad tehtas teiden pojavad ristitud.',
+'createacct-benefit-body1' => '{{PLURAL:$1|redakcii|redakcijad}}',
+'createacct-benefit-body2' => "{{PLURAL:$1|lehtpol'|lehtpol't}}",
+'createacct-benefit-body3' => '{{PLURAL:$1|tantoine kirjutai|tantošt kirjutajad}}',
 'badretype' => 'Teil kirjutadud peitsanad ei kožugoi toine toižhe.',
 'userexists' => 'Kirjutadud kävutajan nimi om jo kävutamižes.
 Olgat hüväd, valikat toine kävutajan nimi.',
@@ -536,7 +554,7 @@ Kirjutagat toine peitsana.",
 'passwordtooshort' => 'Peitsanha pidab mülütada {{PLURAL:$1|1 znam|$1 znamad}}.',
 'password-name-match' => 'Teiden peitsanale pidab erineda kävutajan nimespäi.',
 'password-login-forbidden' => "Necen kävutajannimen da peitsanan kävutamine om kel'tud.",
-'mailmypassword' => "Oigeta minei uz' peitsana e-počtadme",
+'mailmypassword' => 'Udestada peitsana',
 'passwordremindertitle' => "Uz' pordaigaline peitsana {{SITENAME}}-saitan täht",
 'noemail' => '"$1"-kävutai ei ole andnu ičeze e-počtan adresad.',
 'noemailcreate' => 'Bidab kirjutada todesine e-počtan adres',
@@ -547,25 +565,26 @@ Olgat hüväd, kirjutagatoiš sistemha, konz sat sen.",
 'mailerror' => 'E-počtan oigendamižen petuz: $1',
 'emailauthenticated' => 'Teiden e-počtan adres vahvištoittihe datal $2 aigal $3.',
 'emailnotauthenticated' => 'Teiden e-počtan adres ei ole völ vahvištoittud.
-Wiki-likutimen počtfunkcijad ei olgoi kävutamas.',
+Kirjeižid ei oigekoi ni-ühten funkcijan täht.',
 'noemailprefs' => 'Kirjutagat e-počtan adres teiden järgendusihe, miše se oliži kävutamas.',
 'emailconfirmlink' => 'Vahvištoitkat teiden e-počtan adres',
 'invalidemailaddress' => 'Ningomal e-počtan adresal om vär format. Olgat hüväd, kirjutagat e-počtan adres oiktas formatas vai puhtastagat e-počtan pöud.',
 'emaildisabled' => 'Nece sait ei voi oigeta e-počtad.',
 'accountcreated' => 'Registracii om OK',
-'accountcreatedtext' => 'Registracii $1-kävutajan täht om sätud.',
+'accountcreatedtext' => 'Registracii [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]])-kävutajan täht om sätud.',
 'createaccount-title' => '{{SITENAME}}: registracijan sädand.',
 'usernamehasherror' => 'Kävutajan nimes ei voi olda mugošt znamad.',
 'login-throttled' => 'Tö olet tehnu äjahkon naprindoid kirjutadas sistemha.
-Olgat hüväd, varastagat pordon aigad edel ut naprindad.',
+Olgat hüväd, varastagat $1 aigad edel ut naprindad.',
 'login-abort-generic' => 'Teiden naprind tulda sistemha om satusetoi - Azotadud',
 'loginlanguagelabel' => 'Kel’: $1',
 
 # Email sending
 'php-mail-error-unknown' => 'Tundmatoi petuz PHP:n mail()-funkcijas',
+'user-mail-no-addy' => 'Tö ladit oigeta kirjeine e-počtan adresata.',
 
 # Change password dialog
-'resetpass' => 'Vajehtada peitsana',
+'changepassword' => 'Peitsanan toižetuz',
 'resetpass_announce' => "Tö olet kirjutanus sistemha sen pordaigaližen peitsanan abul, kudamb oli oigetud teile e-počtadme.
 Miše tulda sistemha lopuližikš, teile pidab säta uz' peitsana naku:",
 'resetpass_text' => '<!-- Ližagat tekstad nakhu -->',
@@ -574,7 +593,7 @@ Miše tulda sistemha lopuližikš, teile pidab säta uz' peitsana naku:",
 'newpassword' => "Uz' peitsana:",
 'retypenew' => "Toštkat uz' peitsana:",
 'resetpass_submit' => 'Säta peitsana da kirjutadas sistemha',
-'changepassword-success' => 'Teiden peisana om vajehtadud jügedusita! Tulend sistemha...',
+'changepassword-success' => 'Teiden peisana om vajehtadud jügedusita!',
 'resetpass_forbidden' => 'Ei voi vajehtada peitsanad',
 'resetpass-no-info' => 'Miše kirjutada necil lehtpolel, teile pidab kirjutadas sistemha.',
 'resetpass-submit-loggedin' => 'Vajehtada peitsana',
@@ -592,11 +611,12 @@ Voib olda, tö olet jo toižetanuded peitsanan vai pakinuded uden peitsanan.',
 'passwordreset-email' => 'E-počtan adres:',
 'passwordreset-emailelement' => 'Kävutajannimi: $1
 Aigaline peitsana: $2',
-'passwordreset-emailsent' => 'Muštatai kirjeine oigetihe e-počtadme',
+'passwordreset-emailsent' => 'Muštatai kirjeine uden peitsananke oigetihe e-počtadme.',
 
 # Special:ChangeEmail
 'changeemail' => 'Toižetada e-počtan adres',
 'changeemail-no-info' => 'Miše kirjutada necil lehtpolel, teile pidab kirjutadas sistemha.',
+'changeemail-oldemail' => 'Nügüdläine e-počtan adres:',
 'changeemail-newemail' => "Uz' e-počtan adres",
 'changeemail-none' => '(ei ole)',
 'changeemail-submit' => 'Toižetada e-počtan adres',
@@ -691,7 +711,7 @@ Tö voit [[Special:Search/{{PAGENAME}}|ectä nece nimi]] toižil lehtpolil,
 vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktiruida nece lehtpol\']</span>.',
 'noarticletext-nopermission' => 'Necil lehtpolel ei ole nügüd\' tekstad.
 Tö voit [[Special:Search/{{PAGENAME}}|ectä necen lehtpolen nimi]] toižil lehtpolil,
-<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid]</span>.',
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid]</span>, no teile ei sa säta necidä lehtpol\'t.',
 'userpage-userdoesnotexist' => "Kävutajan nimed «<nowiki>$1</nowiki>» ei ole. Todeks-ik tahtoit säta vai toižetada nece lehtpol'?",
 'userpage-userdoesnotexist-view' => '"$1"-kävutai ei ole registriruidud.',
 'blocked-notice-logextract' => "Nece kävutai om nügüd' blokiruidud.
@@ -708,6 +728,7 @@ Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
 'note' => "'''Homaičend:'''",
 'previewnote' => "'''Muštkat, miše nece om vaiše ezikacund.''' 
 Teiden toižetused ei olgoi völ kirjutadud!",
+'continue-editing' => 'Mända redaktiruindtarhaze',
 'previewconflict' => "Tekst redaktiruindan üläiknas kuvazub neche ezikacundha muga, kut se nägub lopkirjutamižen jäl'ghe.",
 'editing' => '$1-lehtpolen redaktiruind',
 'creating' => 'Sätas $1',
@@ -754,7 +775,7 @@ Tö voit pörttas tagaze i redaktiruida toine lehtpol', vai [[Special:UserLogin|
 'nocreate-loggedin' => 'Teile ei sa säta uzid lehtpolid.',
 'sectioneditnotsupported-title' => "Jagadusiden redaktiruind ei ole pid'oiteldud.",
 'sectioneditnotsupported-text' => "Necil lehtpolel jagadusiden redaktiruind ei ole pid'oiteldud.",
-'permissionserrors' => 'Oiktusiden petused',
+'permissionserrors' => 'Oiktusiden petuz',
 'permissionserrorstext' => 'Teile ei sa tehta muga {{PLURAL:$1|necen sün|neniden süiden}} tagut:',
 'permissionserrorstext-withaction' => 'Teile ei sa $2 {{PLURAL:$1|necen sün|neciden süiden}} tagut:',
 'recreate-moveddeleted-warn' => "Homaikat!
@@ -770,10 +791,14 @@ Ei ole ližasüid.',
 Voib olda, se om jo čutud.",
 'edit-conflict' => 'Redakcijoiden konflikt.',
 'edit-no-change' => 'Teiden redakcii ignoriruidihe, sikš miše tekst ei ole toižetadud.',
+'postedit-confirmation' => 'Teiden redakcii om kirjutadud muštho.',
 'edit-already-exists' => "Ei voi säta uz' lehtpol'.
 Wikiš om jo mugoi lehtpol'.",
 'defaultmessagetext' => 'Tekst augotižjärgendusen mödhe',
 
+# Content models
+'content-model-text' => 'koveritoi tekst',
+
 # Parser/template warnings
 'expensive-parserfunction-category' => 'Lehtpoled, kudambil kävutadas äjahko resursokahid funkcijoid',
 'post-expand-template-inclusion-warning' => 'Varutuz: lehtpolele pandud šablonoiden suruz om surehk.
@@ -841,10 +866,6 @@ Detalid voidas olda [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'revisiondelete' => 'Čuta poiš/endištada lehtpolen versijad',
 'revdelete-nooldid-title' => 'Vär metversii',
 'revdelete-nooldid-text' => 'Tö et olgoi valinuded metversijad (metversijoid) necen funkcijan oigetes.',
-'revdelete-nologtype-title' => 'Tö et olgoi andnuded aigkirjan tipad',
-'revdelete-nologtype-text' => 'Tö et olgoi andnuded aigkirjan tipad, kudambas pidab tehta se tegend.',
-'revdelete-nologid-title' => 'Vär kirjutez aigkirjas',
-'revdelete-nologid-text' => 'Tö et olgoi andnuded aigkirjan metkirjutest tegendan tehtes vai anttud kirjutest ei ole.',
 'revdelete-no-file' => 'Mugošt failad ei ole.',
 'revdelete-show-file-submit' => 'Ka',
 'revdelete-selected' => "'''{{PLURAL:$2|Valitud versii|Valitud versijad}} lehtpolišpäi [[:$1]]:'''",
@@ -852,15 +873,15 @@ Detalid voidas olda [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'revdelete-text' => "'''Čutud versijad ozutadas lehtpolen istorijas da aigkirjoiš, no järgeližed lugijad ei voiškakoi nähta niiden südäimišton erasid paloid.'''
 Administratorad voiškatas lugeda peittud südäimištod da endištada sidä necen interfeisan kal't siloi, konz ei ole ližakaidendusid.",
 'revdelete-legend' => 'Säta kaidendused',
-'revdelete-hide-text' => 'Peitta necen lehtpolen versijan tekst',
+'revdelete-hide-text' => 'Redakcijan tekst',
 'revdelete-hide-image' => 'Peitta failan südäiolend',
 'revdelete-hide-name' => 'Peitta tegend da sen objekt',
 'revdelete-hide-comment' => 'Peitta toižetusiden kirjutez',
-'revdelete-hide-user' => 'Peitta avtoran nimi/IP',
+'revdelete-hide-user' => 'Redaktoran nimi/IP-adres',
 'revdelete-hide-restricted' => 'Peitta andmusid eskai administratorilpäi-ki',
 'revdelete-radio-same' => '(ala toižeta)',
-'revdelete-radio-set' => 'Ka',
-'revdelete-radio-unset' => 'Ei',
+'revdelete-radio-set' => 'Peittud',
+'revdelete-radio-unset' => 'Nägub',
 'revdelete-suppress' => 'Peitta administratorilpäi-ki sadud andmused',
 'revdelete-unsuppress' => 'Heitta kaidendused endištadud versijoilpäi',
 'revdelete-log' => 'Sü:',
@@ -872,8 +893,6 @@ $1",
 'logdelete-failure' => "'''Ei voi toižetada aigkirjutesen näguladud:'''
 $1",
 'revdel-restore' => 'Toižetada nägubuz',
-'revdel-restore-deleted' => 'čutud poiš versijad',
-'revdel-restore-visible' => 'versijad, kudambad voib nähta',
 'pagehist' => 'Lehtpolen istorii',
 'deletedhist' => 'Čudandoiden istorii',
 'revdelete-hide-current' => '$2, $1-kirjutesen peitmižen petuz: nece versii om nügüdläine.
@@ -929,13 +948,8 @@ Tö ei voigoi kävutada sidä.',
 # Search results
 'searchresults' => "Ectä rezul'tatad",
 'searchresults-title' => 'Ecindan rezul\'tatad sanale "$1"',
-'searchresulttext' => 'Ližainformacijad ecmižes sab sada [[{{MediaWiki:Helppage}}|Abu]]-lehtpolespäi.',
-'searchsubtitle' => 'Tö ecit \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kaik lehtpoled, kudambad augotase nimespäi "$1"]]{{int:pipe-separator}}
-[[Special:WhatLinksHere/$1|Kaik lehtpoled, kudambad kosketadas necidä nimed]])',
-'searchsubtitleinvalid' => "Tö ecit '''$1'''",
 'toomanymatches' => "Om löutud äjahko rezul'tatoid, olgat hüväd, eckat toine sana",
 'titlematches' => 'Löutud lehtpoliden nimed',
-'notitlematches' => 'Ei ole ningomid lehtpoliden nimid',
 'textmatches' => 'Löutud tekstanpalad lehtpolil',
 'notextmatches' => 'Lehtpoliden tekstoiš ei ole ectud sanad',
 'prevn' => 'vene (ru){{PLURAL:$1|edeline $1|edeližed $1}}',
@@ -944,10 +958,8 @@ Tö ei voigoi kävutada sidä.',
 'nextn-title' => "$1 {{PLURAL:$1|jäl'ghine rezul'tat|jäl'ghišt rezul'tatad}}",
 'shown-title' => "Ozutada $1 {{PLURAL:$1|rezul'tat|rezul'tatad}} lehtpoleks",
 'viewprevnext' => 'Kacta ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Ecindan järgendused',
 'searchmenu-exists' => "'''Neciš Wikiš om jo lehtpol' ningoižen nimenke: \"[[:\$1]]\"'''",
 'searchmenu-new' => "'''Säta lehtpol' \"[[:\$1]]\" neciš Wikiš!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ozutada kaik lehtpoled necen prefiksanke]]',
 'searchprofile-articles' => 'Südäimištlehtpoled',
 'searchprofile-project' => 'Abun da projektoiden lehtpoled',
 'searchprofile-images' => "Mul'timedii",
@@ -968,21 +980,16 @@ Tö ei voigoi kävutada sidä.',
 'search-interwiki-default' => "$1 rezul'tatad:",
 'search-interwiki-more' => '(völ)',
 'search-relatedarticle' => 'Sidotud lehtpoled',
-'mwsuggest-disable' => 'Ala ozuta AJAX-taričendoid',
 'searcheverything-enable' => 'Ectä kaikiš nimiavarusiš',
 'searchrelated' => 'sidotud',
 'searchall' => 'kaik',
 'showingresults' => "Alemba ozutadas {{PLURAL:$1|'''1''' rezul'tat|'''$1''' rezul'tatad}} nomeraspäi #'''$2''' augotaden.",
 'showingresultsnum' => "Alemba ozutadas {{PLURAL:$3|'''1''' rezul'tat|'''$3''' rezul'tatad}} nomeraspäi '''$2''' augotaden.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-š rezul'tatoišpäi|Rezul'tatad '''$1–$2''' '''$3'''-špäi}} '''$4'''-n täht",
-'nonefound' => "'''Note''': Ectäs tobjimalaz kaidetud nimiavaruzišpäi.
-Kävutagat prefiks ''all:'', miše ectä kaikes südäimištospäi (lodulehtpolid, šablonoid i m. e. mülütaden), vai kävutagat tarbhaine nimiavaruz.",
 'search-nonefound' => "Ecmižhe ei löudnus rezul'tatoid.",
-'powersearch' => 'Levitoittud ecind',
 'powersearch-legend' => 'Levitoittud ecind',
 'powersearch-ns' => 'Ecind nimiavaruziš:',
 'powersearch-redir' => 'Ozutada oigendused',
-'powersearch-field' => 'Eci',
 'powersearch-togglelabel' => 'Kodvda:',
 'powersearch-toggleall' => 'Kaik',
 'powersearch-togglenone' => 'Ei ole nimidä',
@@ -995,13 +1002,13 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'preferences' => 'Järgendused',
 'mypreferences' => 'Järgendused',
 'prefs-edits' => 'Redaktiruindoiden lugu:',
-'changepassword' => 'Peitsanan toižetuz',
 'prefs-skin' => 'Irdnägu',
 'skin-preview' => 'Ezikaclend',
 'datedefault' => 'Augotižjärgendused',
 'prefs-beta' => 'Beta-voindad',
 'prefs-datetime' => 'Dat da aig',
 'prefs-labs' => 'Eksperimentaližed voindad',
+'prefs-user-pages' => 'Kävutajan lehtpoled',
 'prefs-personal' => "Kävutajan profil'",
 'prefs-rc' => 'Tantoižed toižetused',
 'prefs-watchlist' => 'Kaclendnimikirjutez',
@@ -1017,13 +1024,11 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'prefs-email' => 'E-počtan opcijad',
 'prefs-rendering' => 'Nägu',
 'saveprefs' => 'Kirjutada',
-'resetprefs' => 'Čuta kaičematomad toižetused',
-'restoreprefs' => 'Endištada kaik augotižjärgendused',
+'restoreprefs' => 'Endištada kaik augotižjärgendused (kaikiš sekcijoiš)',
 'prefs-editing' => 'Redaktiruind',
 'rows' => 'Rivid:',
 'columns' => 'Pachid:',
 'searchresultshead' => 'Ecind',
-'resultsperpage' => 'Kirjutesiden lugu lehtpolel:',
 'stub-threshold' => 'Nägutesen märitamižen künduz <a href="#" class="stub">kosketust otetile</a> (baitoiš)',
 'stub-threshold-disabled' => 'Ei ole kävutamas',
 'recentchangesdays' => 'Päiväd veresiden toižetusidenke, lugumär:',
@@ -1035,7 +1040,6 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'localtime' => 'Tahonaig:',
 'timezoneuseserverdefault' => 'Kävutada serveran järgendused ($1)',
 'timezoneuseoffset' => 'Toine (kirjutagat sirdandmär)',
-'timezoneoffset' => 'Aigan sirdandmär¹:',
 'servertime' => 'Serveran aig:',
 'guesstimezone' => 'Täutta kaclimespäi',
 'timezoneregion-africa' => 'Afrik',
@@ -1049,7 +1053,7 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 'timezoneregion-indian' => 'Indijan valdmeri',
 'timezoneregion-pacific' => "Tün' valdmeri",
 'allowemail' => 'Laskkat toižile kävutajile oigeta teile e-počtad',
-'prefs-searchoptions' => 'Ecindan järgendused',
+'prefs-searchoptions' => 'Ec',
 'prefs-namespaces' => 'Nimiavarused',
 'defaultns' => 'Toižiš statjoiš ectä neniš nimiavarusiš:',
 'default' => 'augotižjärgendusen mödhe',
@@ -1061,9 +1065,9 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
 Necidä tegendad ei sa toižetada.",
 'prefs-emailconfirm-label' => 'E-počtan vahvištand:',
 'youremail' => 'E-počt:',
-'username' => 'Kävutajan nimi:',
-'uid' => 'Kävutajan nomer:',
-'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} ühtnii:',
+'username' => '{{GENDER:$1|Kävutajan nimi}}:',
+'uid' => '{{GENDER:$1|Kävutajan nomer}} ID:',
+'prefs-memberingroups' => '{{PLURAL:$1|Gruppan|Gruppiden}} {{GENDER:$2|ühtnii}}:',
 'prefs-registration' => 'Registracijan aig:',
 'yourrealname' => 'Todesine nimi:',
 'yourlanguage' => "Kel':",
@@ -1089,7 +1093,7 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'prefs-signature' => 'Allekirjutez',
 'prefs-dateformat' => 'Datan format',
 'prefs-timeoffset' => 'Aigan sirdand',
-'prefs-advancedediting' => 'Ližaopcijad',
+'prefs-advancedediting' => 'opcijad',
 'prefs-preview' => 'Ezikacund',
 'prefs-advancedrc' => 'Ližaopcijad',
 'prefs-advancedrendering' => 'Ližaopcijad',
@@ -1259,7 +1263,6 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
 'recentchanges-label-bot' => 'Necen redakcijan tegi bot',
 'recentchanges-label-unpatrolled' => 'Necidä redakcijad ei völ patruliruinugoi',
 'recentchanges-legend-newpage' => "$1 - uz' lehtpol'",
-'rcnote' => "Alahan om ozutadud {{PLURAL:$1| '''1''' toižetuz|'''$1''' toižetust}} {{PLURAL:$2|jäl'gmäižes päiväs|jäl'gmäižiš '''$2''' päiviš}}, aigal $5, $4.",
 'rcnotefrom' => "Alemba oma anttud toižetused '''$2'''-späi ( '''$1'''-hesai).",
 'rclistfrom' => 'Ozutada uded toižetused dataspäi $1 augotaden',
 'rcshowhideminor' => '$1 pened redakcijad',
@@ -1385,6 +1388,7 @@ Ku problem jäb jäl'ghepäi-ki, säkat pagin [[Special:ListUsers/sysop|sistemad
 # File backend
 'backend-fail-backup' => 'Ei voi tehta $1-failan rezervkopijad.',
 'backend-fail-notexists' => 'Ei ole mugošt failad: "$1".',
+'backend-fail-delete' => 'Ei voi čuta poiš "$1"-failad.',
 'backend-fail-alreadyexists' => '$1-fail om jo olmas.',
 'backend-fail-copy' => 'Ei voi kopiruida "$1"-failad "$2"-tahoze.',
 'backend-fail-move' => 'Ei voi sirta "$1"-failad "$2"-tahoze.',
@@ -1444,6 +1448,7 @@ Ku valitas vaiše ühten kävutajan failad, ka ozutadas vaiše necen kävutajan
 'listfiles_size' => 'Suruz’',
 'listfiles_description' => 'Ümbrikirjutand',
 'listfiles_count' => 'Versijad',
+'listfiles-latestversion' => 'Nügüdläine versii',
 'listfiles-latestversion-yes' => 'Ka',
 
 # File description page
@@ -1477,6 +1482,7 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'uploadnewversion-linktext' => "Jügutoitta necen failan uz' versii",
 'shared-repo-from' => '$1-projektaspäi',
 'shared-repo' => 'ühthine mediavaraait',
+'upload-disallowed-here' => 'Teile ei sa toižetada necidä failad.',
 
 # File reversion
 'filerevert' => '$1n endištand vanhemban versijannoks',
@@ -1551,6 +1557,8 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'statistics-users-active-desc' => "Kävutajad, kudambad ozutiba aktivižut {{PLURAL:$1|jäl’gmäižen päivän|$1 jäl'gmäižil päivil}}",
 'statistics-mostpopular' => 'Kaikiš populärižembad lehtpoled',
 
+'pageswithprop-submit' => 'Tege',
+
 'doubleredirects' => 'Kaksitadud läbikosketused',
 'double-redirect-fixed-move' => "[[$1]]-lehtpol' om udesnimitadud. Se läbikosketab nügüd' [[$2]]-lehtpolele.",
 'double-redirect-fixer' => 'Läbikosketusiden kohendai',
@@ -1604,10 +1612,8 @@ Informacijad sen [$2 andmusiden lehtpolelpäi] om anttud alemba.',
 'protectedpages' => 'Kaitud lehtpoled',
 'protectedpages-indef' => 'Vaiše strokutomad kaičendad',
 'protectedpages-cascade' => 'Vaiše kaskadkaičendad',
-'protectedpagestext' => 'Nened lehtpoled oma kaitud redaktiruindaspäi da sirdandaspäi',
 'protectedpagesempty' => "Nügüd' ei ole neniden parametriden mödhe kaitud lehtpolid.",
 'protectedtitles' => 'Kaitud lehtpoliden nimed',
-'protectedtitlestext' => 'Nenid lehtpoliden nimid ei sa kävutada.',
 'protectedtitlesempty' => "Nügüd' ei ole neniden parametriden mödhe kaitud lehtpoliden nimid.",
 'listusers' => 'Kävutajiden nimikirjutez',
 'listusers-editsonly' => 'Ozutada vaiše kävutajid, kudambil om redakcijoid',
@@ -1655,14 +1661,14 @@ Olgat hüväd, otkat sil'mnägubale, miše toižed-ki saitad voidas kosketada fa
 'allpagesto' => 'Ozutada lehtpoled lopuidenke:',
 'allarticles' => 'Kaiked lehtpoled',
 'allinnamespace' => 'Kaik lehtpoled ($1-nimiavaruz)',
-'allnotinnamespace' => 'Kaik lehtpoled (päiči $1-nimiavarust)',
-'allpagesprev' => 'Edeližed',
-'allpagesnext' => "Jäl'ghižed",
 'allpagessubmit' => 'Tehta',
 'allpagesprefix' => 'Ozutada lehtpoled prefiksoidenke:',
 'allpages-bad-ns' => '{{SITENAME}}-saital ei ole "$1"-nimiavarust.',
 'allpages-hide-redirects' => 'Peitta läbikosketused',
 
+# SpecialCachedPage
+'cachedspecial-refresh-now' => 'Ozutada möhembad.',
+
 # Special:Categories
 'categories' => 'Kategorijad',
 'categoriespagetext' => '{{PLURAL:$1|Neciš kategorijas|Neniš kategorijoiš }} om lehtpolid vai mediafailoid.
@@ -1749,6 +1755,7 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
 'watchnologin' => 'Pidab kirjutadas sistemha',
 'addwatch' => 'Ližata kaclendnimikirjuteshe',
 'addedwatchtext' => '"[[:$1]]"-lehtpol\' om ližadud teiden [[Special:Watchlist|kaclendnimikirjuteshe]]. Necen lehtpolen (i sidotud lehtpoliden) tulebiš toižetusiš voiškandeb tedištada neciš nimikirjutesespäi; necen polhe kirjutaškatas mugažo [[Special:RecentChanges|uziden toižetusiden lehtpolel]] lihavoitud kirjamil, miše oliži kebnemb homaita.',
+'removewatch' => 'Čuta poiš kaclendnimikirjutesespäi',
 'removedwatchtext' => '"[[:$1]]"-lehtpol\' om heittud [[Special:Watchlist|teiden kaclendnimikirjutesespäi]].',
 'watch' => 'Pida sil’miš',
 'watchthispage' => "Kacelta necidä lehtpol't",
@@ -1938,14 +1945,13 @@ Sab toižetada necen lehtpolen kaičendpind, no se ei voi toižetada kaskadkaič
 'undeletebtn' => 'Endištada',
 'undeletelink' => 'endištada',
 'undeleteviewlink' => 'nähta',
-'undeletereset' => 'Puhtastada',
 'undeleteinvert' => 'Käta erigoittud sanad vastkarin',
 'undeletecomment' => 'Kommentarii:',
 'undeletedrevisions' => '{{PLURAL:$1|1 toižetuz|$1 toižetust}} om endištadud',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 toižetuz|$1 toižetust}} da {{PLURAL:$2|1 fail|$2 failad}} oma endištadud',
 'undeletedfiles' => '{{PLURAL:$1|1 fail om|$1 failad oma}} endištadud',
-'cannotundelete' => 'Endištandan petuz;
-Voib olda, ken-se om jo endištanu necen lehtpolen ende.',
+'cannotundelete' => 'Endištandan petuz:
+$1',
 'undeletedpage' => "'''$1-lehtpol' om endištadud'''
 
 Kc. [[Special:Log/delete|čudandoiden aigkirj]], miše tedištada tantoižiš čudandoiš da endištandoiš.",
@@ -1965,6 +1971,7 @@ $1',
 # Namespace form on various pages
 'namespace' => 'Nimiavaruz:',
 'invert' => 'Käta erigoittud sanad vastkarin',
+'namespace_association' => 'Sidotud nimiavaruz',
 'blanknamespace' => '(Pälehtpoled)',
 
 # Contributions
@@ -2015,7 +2022,6 @@ Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
 'block' => 'Kävutajan blokiruind',
 'unblock' => 'Heitta blokiruind ühtnijalpäi',
 'blockip' => 'Blokiruida kävutajad',
-'blockip-title' => 'Blokiruida kävutajad',
 'blockip-legend' => 'Blokiruida kävutajad',
 'blockiptext' => 'Kävutagat alemba anttud form, miše blokiruida kirjutandan voimuz märitud IP-adresaspäi.
 Nece sab tehta vaiše sen täht, miše borcuidas vandalizmanke, kut om kirjutadud [[{{MediaWiki:Policy-url}}|ohjandimiš]].
@@ -2023,7 +2029,6 @@ Kirjutagat sü alemba (ozutesikš, citiruigat vandaliziruidud lehtpoled).',
 'ipadressorusername' => 'IP-adres vai kävutajan nimi:',
 'ipbexpiry' => 'Lopindan strok:',
 'ipbreason' => 'Sü:',
-'ipbreasonotherlist' => 'Toine sü',
 'ipbreason-dropdown' => "*Blokiruindan päsüd
 ** Väran informacijan andand
 ** Lehtpoliden südäimišton čudand
@@ -2038,8 +2043,6 @@ Kirjutagat sü alemba (ozutesikš, citiruigat vandaliziruidud lehtpoled).',
 'ipbsubmit' => 'Blokiruida nece kävutai',
 'ipbother' => 'Toine aig:',
 'ipboptions' => "2 časud:2 hours,1 päiv:1 day,3 päiväd:3 days,1 nedal':1 week,2 nedalid:2 weeks,1 ku:1 month,3 kud:3 months,6 kud:6 months,1 voz':1 year,strokuta:infinite",
-'ipbotheroption' => 'toine',
-'ipbotherreason' => 'Toine sü/Ližasü:',
 'ipbhidename' => 'Peitta kävutajan nimi redakcijoišpäi da nimikirjutesišpäi',
 'ipbwatchuser' => "Kacelta necen kävutajan personališt lehtpol't da lodulehtpol't",
 'ipb-change-block' => 'Blokirujda kävutajad udes neniden järgendusidenke',
@@ -2114,7 +2117,6 @@ Voib olda, se om jo heittud.',
 'proxyblockreason' => 'Teiden IP-adres om blokiruidud, sikš miše se om avoin proksi.
 Olgat hüväd, säkat pagin teiden Internet-provaideranke i kirjutagat hänele necen varuitomuden problemas.',
 'sorbsreason' => 'Teiden IP-adres om ozutadud kut avaitud proksi {{SITENAME}}-saitan DNSBL-an mustas nimikirjuteses.',
-'cant-block-while-blocked' => 'Teile ei sa blokiruida toižid kävutajid, sikš miše tö iče olet blokiruidud.',
 
 # Developer tools
 'lockdb' => 'Luklostada andmusiden baz',
@@ -2152,7 +2154,6 @@ Olgat hüväd, vahvištoitkatoiš, miše tö el'gendat kaik jäl'gused.",
 
 Nenil statjoil tegese sirta vai ühtenzoitta lehtpoled ičeksaz.",
 'movearticle' => "Udesnimitada lehtpol':",
-'movenologin' => 'Tö et olgoi kirjutanus sistemha',
 'movenologintext' => "Teile pidab olda [[Special:UserLogin|registriruidud kävutajan]], miše udesnimitada lehtpol'.",
 'movenotallowed' => 'Teile ei sa udesnimitada lehtpolid.',
 'movenotallowedfile' => 'Teile ei sa udesnimitada failoid.',
@@ -2166,8 +2167,6 @@ Nenil statjoil tegese sirta vai ühtenzoitta lehtpoled ičeksaz.",
 'movepage-moved-noredirect' => "Läbikosketusen sämine om kel'tud.",
 'articleexists' => "Lehtpol' mugoižen nimenke om jo wikiš, vai valitud nimi ei sättu. Olgat hüväd, valikat toine nimi.",
 'cantmove-titleprotected' => "Ei sa udesnimitada lehtpol't, sikš miše uz' nimi om kel'tud nimiden nimikirjuteses.",
-'talkexists' => "'''Iče lehtpol' om nimitadud udes jügedusita, no lodulehtpol't ei voi udesnimitada, sikš miše wikiš om jo lodulehtpol' mugoižen nimenke. Pidab erigoitta niid ičeksaz.'''",
-'movedto' => 'Sirtud udhe tahoze',
 'movetalk' => "Udesnimitada sidotud lodulehtpol'",
 'move-subpages' => 'Udesnimitada alalehtpoled ($1-hesai)',
 'move-talk-subpages' => 'Udesnimitada lodulehtpolen alalehtpoled ($1-hasai)',
@@ -2376,6 +2375,9 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
 'pageinfo-authors' => 'Erazvuiččiden avtoroiden lugu',
 'pageinfo-contentpage-yes' => 'Ka',
 'pageinfo-protect-cascading-yes' => 'Ka',
+'pageinfo-category-pages' => 'Lehtpoliden lugumär',
+'pageinfo-category-subcats' => 'Alakategorijoiden lugumär',
+'pageinfo-category-files' => 'Failoiden lugumär',
 
 # Skin names
 'skinname-cologneblue' => "Köl'nan sinine",
@@ -2609,6 +2611,7 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-languagecode' => 'Kel’',
 'exif-iimcategory' => 'Kategorii',
 'exif-datetimeexpires' => "Algat kävutagoi necen datan jäl'ghe",
+'exif-identifier' => 'Identifikator',
 'exif-label' => 'Arbaine',
 'exif-pngfilecomment' => 'Kommentarii PNG-failha',
 
@@ -2800,15 +2803,10 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdl
 'exif-urgency-low' => 'Madal ($1)',
 'exif-urgency-high' => 'Korged ($1)',
 
-# External editor support
-'edit-externally' => 'Redaktiruida nece fail irdprogrammal',
-'edit-externally-help' => '(Kc. [https://www.mediawiki.org/wiki/Manual:External_editors seižutamižinstrukcijoid])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'kaik',
 'namespacesall' => 'kaik',
 'monthsall' => 'kaik',
-'limitall' => 'kaik',
 
 # Email address confirmation
 'confirmemail' => 'Vahvištoitta e-počtan adres',
@@ -2824,7 +2822,6 @@ Kod voiži vanhtuda.',
 'confirmemail_success' => "Teiden e-počtan adres om vahvištoittud.
 Nügüd' tö voit [[Special:UserLogin|kirjutadas sistemha]] da rata wikiš.",
 'confirmemail_loggedin' => 'Teiden e-počtan adres om vahvištoittud.',
-'confirmemail_error' => 'Teiden e-počtan adresan vahvištoitandan aigan ozaižihe petuz.',
 'confirmemail_subject' => '{{SITENAME}}-sait paikičeb teid vahvištoitta teiden e-počtan adres',
 'confirmemail_body' => 'Ken-se, voib olda, tö, om sänu "$2"-registracijan {{SITENAME}}-saital. Se ristit om kävutanu IP-adresan "$1" da necen e-počtan adresan.
 
@@ -3023,7 +3020,6 @@ Kävutagat normaline ezikacund.',
 
 # Special:ComparePages
 'comparepages' => 'Lehtpoliden rindatuz',
-'compare-selector' => 'Lehtpoliden versijoiden rindatuz',
 'compare-page1' => "Ezmäine lehtpol'",
 'compare-page2' => "Toine lehtpol'",
 'compare-rev1' => 'Ezmäine versii',
@@ -3075,6 +3071,7 @@ Kävutagat normaline ezikacund.',
 
 # API errors
 'api-error-empty-file' => "Teil oigetud fail om pall'az.",
+'api-error-fetchfileerror' => 'Südäipetuz: mi-se läksi värin failad sades.',
 'api-error-filename-tooshort' => 'Lühudahk failannimi.',
 'api-error-filetype-banned' => "Nece failtip om kel'tud.",
 'api-error-filetype-banned-type' => '$1 {{PLURAL:$4|om laskmatoi failantip|oma laskmatomad failantipad}}. Lasktud {{PLURAL:$3|failantip om|failantipad oma}} $2.',
index e61ec10..cfc2fe7 100644 (file)
@@ -59,12 +59,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( 'Người_dùng_tích_cực' ),
        'Allmessages'               => array( 'Mọi_thông_điệp', 'Mọi_thông_báo' ),
+       'AllMyUploads'              => array( 'Mọi_tập_tin_của_tôi', 'Mọi_tập_tin_tôi_tải_lên' ),
        'Allpages'                  => array( 'Mọi_bài' ),
        'Ancientpages'              => array( 'Trang_cũ' ),
        'Badtitle'                  => array( 'Tựa_đề_hỏng' ),
        'Blankpage'                 => array( 'Trang_trắng' ),
        'Block'                     => array( 'Cấm', 'Cấm_IP', 'Cấm_thành_viên', 'Cấm_người_dùng' ),
-       'Blockme'                   => array( 'Khóa_tôi', 'Khoá_tôi' ),
        'Booksources'               => array( 'Nguồn_sách' ),
        'BrokenRedirects'           => array( 'Đổi_hướng_sai' ),
        'Categories'                => array( 'Thể_loại' ),
@@ -76,10 +76,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'Mở_tài_khoản', 'Đăng_ký', 'Đăng_kí' ),
        'Deadendpages'              => array( 'Trang_đường_cùng' ),
        'DeletedContributions'      => array( 'Đóng_góp_bị_xóa', 'Đóng_góp_bị_xoá' ),
-       'Disambiguations'           => array( 'Trang_định_hướng' ),
        'DoubleRedirects'           => array( 'Đổi_hướng_kép' ),
        'EditWatchlist'             => array( 'Sửa_danh_sách_theo_dõi' ),
        'Emailuser'                 => array( 'Gửi_thư', 'Gửi_thư_điện_tử' ),
+       'ExpandTemplates'           => array( 'Bung_bản_mẫu', 'Bung_tiêu_bản' ),
        'Export'                    => array( 'Xuất' ),
        'Fewestrevisions'           => array( 'Ít_phiên_bản_nhất' ),
        'FileDuplicateSearch'       => array( 'Tìm_tập_tin_trùng' ),
@@ -124,9 +124,12 @@ $specialPageAliases = array(
        'Protectedpages'            => array( 'Trang_khóa', 'Trang_khoá' ),
        'Protectedtitles'           => array( 'Tựa_đề_bị_khóa', 'Tựa_đề_bị_khoá' ),
        'Randompage'                => array( 'Ngẫu_nhiên' ),
+       'RandomInCategory'          => array( 'Ngẫu_nhiên_trong_thể_loại' ),
        'Randomredirect'            => array( 'Đổi_hướng_ngẫu_nhiên' ),
        'Recentchanges'             => array( 'Thay_đổi_gần_đây' ),
        'Recentchangeslinked'       => array( 'Thay_đổi_liên_quan' ),
+       'Redirect'                  => array( 'Đổi_hướng' ),
+       'ResetTokens'               => array( 'Đặt_lại_dấu_hiệu' ),
        'Revisiondelete'            => array( 'Xóa_phiên_bản', 'Xoá_phiên_bản' ),
        'Search'                    => array( 'Tìm_kiếm' ),
        'Shortpages'                => array( 'Trang_ngắn' ),
@@ -161,51 +164,53 @@ $specialPageAliases = array(
 
 $magicWords = array(
        'redirect'                  => array( '0', '#đổi', '#REDIRECT' ),
-       'notoc'                     => array( '0', '__KHÔNGMỤCLỤC__', '__NOTOC__' ),
-       'nogallery'                 => array( '0', '__KHÔNGALBUM__', '__NOGALLERY__' ),
-       'forcetoc'                  => array( '0', '__LUÔNMỤCLỤC__', '__FORCETOC__' ),
-       'toc'                       => array( '0', '__MỤCLỤC__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__KHÔNGSỬAMỤC__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', 'THÁNGNÀY', 'THÁNGNÀY2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
-       'currentmonth1'             => array( '1', 'THÁNGNÀY1', 'CURRENTMONTH1' ),
-       'currentmonthname'          => array( '1', 'TÊNTHÁNGNÀY', 'CURRENTMONTHNAME' ),
-       'currentmonthnamegen'       => array( '1', 'TÊNDÀITHÁNGNÀY', 'CURRENTMONTHNAMEGEN' ),
-       'currentmonthabbrev'        => array( '1', 'TÊNNGẮNTHÁNGNÀY', 'CURRENTMONTHABBREV' ),
-       'currentday'                => array( '1', 'NGÀYNÀY', 'CURRENTDAY' ),
-       'currentday2'               => array( '1', 'NGÀYNÀY2', 'CURRENTDAY2' ),
-       'currentdayname'            => array( '1', 'TÊNNGÀYNÀY', 'CURRENTDAYNAME' ),
-       'currentyear'               => array( '1', 'NĂMNÀY', 'CURRENTYEAR' ),
-       'currenttime'               => array( '1', 'GIỜNÀY', 'CURRENTTIME' ),
-       'localmonth'                => array( '1', 'THÁNGĐỊAPHƯƠNG', 'LOCALMONTH', 'LOCALMONTH2' ),
-       'localmonth1'               => array( '1', 'THÁNGĐỊAPHƯƠNG1', 'LOCALMONTH1' ),
-       'localmonthname'            => array( '1', 'TÊNTHÁNGĐỊAPHƯƠNG', 'LOCALMONTHNAME' ),
-       'localmonthabbrev'          => array( '1', 'THÁNGĐỊAPHƯƠNGTẮT', 'LOCALMONTHABBREV' ),
-       'localday'                  => array( '1', 'NGÀYĐỊAPHƯƠNG', 'LOCALDAY' ),
-       'localday2'                 => array( '1', 'NGÀYĐỊAPHƯƠNG2', 'LOCALDAY2' ),
-       'localdayname'              => array( '1', 'TÊNNGÀYĐỊAPHƯƠNG', 'LOCALDAYNAME' ),
-       'localyear'                 => array( '1', 'NĂMĐỊAPHƯƠNG', 'LOCALYEAR' ),
-       'localtime'                 => array( '1', 'GIỜĐỊAPHƯƠNG', 'LOCALTIME' ),
-       'numberofpages'             => array( '1', 'SỐTRANG', 'NUMBEROFPAGES' ),
-       'numberofarticles'          => array( '1', 'SỐBÀI', 'NUMBEROFARTICLES' ),
-       'numberoffiles'             => array( '1', 'SỐTẬPTIN', 'NUMBEROFFILES' ),
-       'numberofusers'             => array( '1', 'SỐTHÀNHVIÊN', 'NUMBEROFUSERS' ),
-       'numberofactiveusers'       => array( '1', 'SỐTHÀNHVIÊNTÍCHCỰC', 'NUMBEROFACTIVEUSERS' ),
-       'numberofedits'             => array( '1', 'SỐSỬAĐỔI', 'NUMBEROFEDITS' ),
-       'numberofviews'             => array( '1', 'SỐLẦNXEM', 'NUMBEROFVIEWS' ),
-       'pagename'                  => array( '1', 'TÊNTRANG', 'PAGENAME' ),
-       'pagenamee'                 => array( '1', 'TÊNTRANG2', 'PAGENAMEE' ),
-       'namespace'                 => array( '1', 'KHÔNGGIANTÊN', 'NAMESPACE' ),
-       'namespacenumber'           => array( '1', 'SỐKHÔNGGIANTÊN', 'NAMESPACENUMBER' ),
-       'talkspace'                 => array( '1', 'KGTTHẢOLUẬN', 'TALKSPACE' ),
-       'subjectspace'              => array( '1', 'KGTNỘIDUNG', 'SUBJECTSPACE', 'ARTICLESPACE' ),
-       'fullpagename'              => array( '1', 'TÊNTRANGĐỦ', 'FULLPAGENAME' ),
-       'subpagename'               => array( '1', 'TÊNTRANGPHỤ', 'SUBPAGENAME' ),
-       'basepagename'              => array( '1', 'TÊNTRANGGỐC', 'BASEPAGENAME' ),
-       'talkpagename'              => array( '1', 'TÊNTRANGTHẢOLUẬN', 'TALKPAGENAME' ),
-       'subjectpagename'           => array( '1', 'TÊNTRANGNỘIDUNG', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+       'notoc'                     => array( '0', '__KHÔNG_MỤC_LỤC__', '__KHÔNGMỤCLỤC__', '__NOTOC__' ),
+       'nogallery'                 => array( '0', '__KHÔNG_ALBUM__', '__KHÔNGALBUM__', '__NOGALLERY__' ),
+       'forcetoc'                  => array( '0', '__LUÔN_MỤC_LỤC__', '__LUÔNMỤCLỤC__', '__FORCETOC__' ),
+       'toc'                       => array( '0', '__MỤC_LỤC__', '__MỤCLỤC__', '__TOC__' ),
+       'noeditsection'             => array( '0', '__KHÔNG_NÚT_SỬA_MỤC__', '__KHÔNGNÚTSỬAMỤC__', '__NOEDITSECTION__' ),
+       'currentmonth'              => array( '1', 'THÁNG_NÀY', 'THÁNGNÀY', 'THÁNG_NÀY_2', 'THÁNGNÀY2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'currentmonth1'             => array( '1', 'THÁNG_NÀY_1', 'THÁNGNÀY1', 'CURRENTMONTH1' ),
+       'currentmonthname'          => array( '1', 'TÊN_THÁNG_NÀY', 'TÊNTHÁNGNÀY', 'CURRENTMONTHNAME' ),
+       'currentmonthnamegen'       => array( '1', 'TÊN_DÀI_THÁNG_NÀY', 'TÊNDÀITHÁNGNÀY', 'CURRENTMONTHNAMEGEN' ),
+       'currentmonthabbrev'        => array( '1', 'TÊN_NGẮN_THÁNG_NÀY', 'TÊNNGẮNTHÁNGNÀY', 'CURRENTMONTHABBREV' ),
+       'currentday'                => array( '1', 'NGÀY_NÀY', 'NGÀYNÀY', 'CURRENTDAY' ),
+       'currentday2'               => array( '1', 'NGÀY_NÀY_2', 'NGÀYNÀY2', 'CURRENTDAY2' ),
+       'currentdayname'            => array( '1', 'TÊN_NGÀY_NÀY', 'TÊNNGÀYNÀY', 'CURRENTDAYNAME' ),
+       'currentyear'               => array( '1', 'NĂM_NÀY', 'NĂMNÀY', 'CURRENTYEAR' ),
+       'currenttime'               => array( '1', 'GIỜ_NÀY', 'GIỜNÀY', 'CURRENTTIME' ),
+       'currenthour'               => array( '1', 'GIỜ_HIỆN_TẠI', 'GIỜHIỆNTẠI', 'CURRENTHOUR' ),
+       'localmonth'                => array( '1', 'THÁNG_ĐỊA_PHƯƠNG', 'THÁNGĐỊAPHƯƠNG', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonth1'               => array( '1', 'THÁNG_ĐỊA_PHƯƠNG_1', 'THÁNGĐỊAPHƯƠNG1', 'LOCALMONTH1' ),
+       'localmonthname'            => array( '1', 'TÊN_THÁNG_ĐỊA_PHƯƠNG', 'TÊNTHÁNGĐỊAPHƯƠNG', 'LOCALMONTHNAME' ),
+       'localmonthabbrev'          => array( '1', 'THÁNG_ĐỊA_PHƯƠNG_TẮT', 'THÁNGĐỊAPHƯƠNGTẮT', 'LOCALMONTHABBREV' ),
+       'localday'                  => array( '1', 'NGÀY_ĐỊA_PHƯƠNG', 'NGÀYĐỊAPHƯƠNG', 'LOCALDAY' ),
+       'localday2'                 => array( '1', 'NGÀY_ĐỊA_PHƯƠNG_2', 'NGÀYĐỊAPHƯƠNG2', 'LOCALDAY2' ),
+       'localdayname'              => array( '1', 'TÊN_NGÀY_ĐỊA_PHƯƠNG', 'TÊNNGÀYĐỊAPHƯƠNG', 'LOCALDAYNAME' ),
+       'localyear'                 => array( '1', 'NĂM_ĐỊA_PHƯƠNG', 'NĂMĐỊAPHƯƠNG', 'LOCALYEAR' ),
+       'localtime'                 => array( '1', 'THỜI_GIAN_ĐỊA_PHƯƠNG', 'THỜIGIANĐỊAPHƯƠNG', 'LOCALTIME' ),
+       'localhour'                 => array( '1', 'GIỜ_ĐỊA_PHƯƠNG', 'GIỜĐỊAPHƯƠNG', 'LOCALHOUR' ),
+       'numberofpages'             => array( '1', 'SỐ_TRANG', 'SỐTRANG', 'NUMBEROFPAGES' ),
+       'numberofarticles'          => array( '1', 'SỐ_BÀI', 'SỐBÀI', 'NUMBEROFARTICLES' ),
+       'numberoffiles'             => array( '1', 'SỐ_TẬP_TIN', 'SỐTẬPTIN', 'NUMBEROFFILES' ),
+       'numberofusers'             => array( '1', 'SỐ_THÀNH_VIÊN', 'SỐTHÀNHVIÊN', 'NUMBEROFUSERS' ),
+       'numberofactiveusers'       => array( '1', 'SỐ_THÀNH_VIÊN_TÍCH_CỰC', 'SỐTHÀNHVIÊNTÍCHCỰC', 'NUMBEROFACTIVEUSERS' ),
+       'numberofedits'             => array( '1', 'SỐ_SỬA_ĐỔI', 'SỐSỬAĐỔI', 'NUMBEROFEDITS' ),
+       'numberofviews'             => array( '1', 'SỐ_LẦN_XEM', 'SỐLẦNXEM', 'NUMBEROFVIEWS' ),
+       'pagename'                  => array( '1', 'TÊN_TRANG', 'TÊNTRANG', 'PAGENAME' ),
+       'pagenamee'                 => array( '1', 'TÊN_TRANG_2', 'TÊNTRANG2', 'PAGENAMEE' ),
+       'namespace'                 => array( '1', 'KHÔNG_GIAN_TÊN', 'KHÔNGGIANTÊN', 'NAMESPACE' ),
+       'namespacenumber'           => array( '1', 'SỐ_KHÔNG_GIAN_TÊN', 'SỐKHÔNGGIANTÊN', 'NAMESPACENUMBER' ),
+       'talkspace'                 => array( '1', 'KGT_THẢO_LUẬN', 'KGTTHẢOLUẬN', 'TALKSPACE' ),
+       'subjectspace'              => array( '1', 'KGT_NỘI_DUNG', 'KGTNỘIDUNG', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+       'fullpagename'              => array( '1', 'TÊN_TRANG_ĐỦ', 'TÊNTRANGĐỦ', 'FULLPAGENAME' ),
+       'subpagename'               => array( '1', 'TÊN_TRANG_PHỤ', 'TÊNTRANGPHỤ', 'SUBPAGENAME' ),
+       'basepagename'              => array( '1', 'TÊN_TRANG_GỐC', 'TÊNTRANGGỐC', 'BASEPAGENAME' ),
+       'talkpagename'              => array( '1', 'TÊN_TRANG_THẢO_LUẬN', 'TÊNTRANGTHẢOLUẬN', 'TALKPAGENAME' ),
+       'subjectpagename'           => array( '1', 'TÊN_TRANG_NỘI_DUNG', 'TÊNTRANGNỘIDUNG', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
        'msg'                       => array( '0', 'NHẮN:', 'MSG:' ),
        'subst'                     => array( '0', 'THẾ:', 'SUBST:' ),
-       'msgnw'                     => array( '0', 'NHẮNMỚI:', 'MSGNW:' ),
+       'msgnw'                     => array( '0', 'NHẮN_MỚI:', 'NHẮNMỚI:', 'MSGNW:' ),
        'img_thumbnail'             => array( '1', 'nhỏ', 'thumbnail', 'thumb' ),
        'img_manualthumb'           => array( '1', 'nhỏ=$1', 'thumbnail=$1', 'thumb=$1' ),
        'img_right'                 => array( '1', 'phải', 'right' ),
@@ -213,8 +218,9 @@ $magicWords = array(
        'img_none'                  => array( '1', 'không', 'none' ),
        'img_center'                => array( '1', 'giữa', 'center', 'centre' ),
        'img_framed'                => array( '1', 'khung', 'framed', 'enframed', 'frame' ),
-       'img_page'                  => array( '1', 'trang=$1', 'trang $1', 'page=$1', 'page $1' ),
-       'img_upright'               => array( '1', 'đứng', 'đứng=$1', 'đứng $1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_page'                  => array( '1', 'trang=$1', 'trang_$1', 'page=$1', 'page $1' ),
+       'img_upright'               => array( '1', 'đứng', 'đứng=$1', 'đứng_$1', 'upright', 'upright=$1', 'upright $1' ),
+       'img_border'                => array( '1', 'viền', 'border' ),
        'img_baseline'              => array( '1', 'chân-chữ', 'baseline' ),
        'img_sub'                   => array( '1', 'chỉ-số-dưới', 'sub' ),
        'img_super'                 => array( '1', 'chỉ-số-trên', 'super', 'sup' ),
@@ -225,62 +231,68 @@ $magicWords = array(
        'img_link'                  => array( '1', 'liên_kết=$1', 'link=$1' ),
        'img_class'                 => array( '1', 'lớp=$1', 'class=$1' ),
        'int'                       => array( '0', 'NỘI:', 'INT:' ),
-       'sitename'                  => array( '1', 'TÊNMẠNG', 'SITENAME' ),
+       'sitename'                  => array( '1', 'TÊN_MẠNG', 'TÊNMẠNG', 'SITENAME' ),
        'ns'                        => array( '0', 'KGT:', 'NS:' ),
-       'localurl'                  => array( '0', 'URLĐỊAPHƯƠNG:', 'LOCALURL:' ),
-       'articlepath'               => array( '0', 'ĐƯỜNGDẪNBÀI', 'LỐIBÀI', 'ARTICLEPATH' ),
-       'pageid'                    => array( '0', 'IDTRANG', 'PAGEID' ),
-       'server'                    => array( '0', 'MÁYCHỦ', 'SERVER' ),
-       'servername'                => array( '0', 'TÊNMÁYCHỦ', 'SERVERNAME' ),
-       'scriptpath'                => array( '0', 'ĐƯỜNGDẪNKỊCHBẢN', 'ĐƯỜNGDẪNSCRIPT', 'SCRIPTPATH' ),
-       'stylepath'                 => array( '0', 'ĐƯỜNGDẪNKIỂU', 'STYLEPATH' ),
-       'grammar'                   => array( '0', 'NGỮPHÁP:', 'GRAMMAR:' ),
+       'localurl'                  => array( '0', 'URL_ĐỊA_PHƯƠNG:', 'URLĐỊAPHƯƠNG:', 'LOCALURL:' ),
+       'articlepath'               => array( '0', 'ĐƯỜNG_DẪN_BÀI', 'ĐƯỜNGDẪNBÀI', 'LỐI_BÀI', 'LỐIBÀI', 'ARTICLEPATH' ),
+       'pageid'                    => array( '0', 'ID_TRANG', 'IDTRANG', 'PAGEID' ),
+       'server'                    => array( '0', 'MÁY_CHỦ', 'MÁYCHỦ', 'SERVER' ),
+       'servername'                => array( '0', 'TÊN_MÁY_CHỦ', 'TÊNMÁYCHỦ', 'SERVERNAME' ),
+       'scriptpath'                => array( '0', 'ĐƯỜNG_DẪN_KỊCH_BẢN', 'ĐƯỜNGDẪNKỊCHBẢN', 'ĐƯỜNG_DẪN_SCRIPT', 'ĐƯỜNGDẪNSCRIPT', 'SCRIPTPATH' ),
+       'stylepath'                 => array( '0', 'ĐƯỜNG_DẪN_KIỂU', 'ĐƯỜNGDẪNKIỂU', 'STYLEPATH' ),
+       'grammar'                   => array( '0', 'NGỮ_PHÁP:', 'NGỮPHÁP:', 'GRAMMAR:' ),
        'gender'                    => array( '0', 'GIỐNG:', 'GENDER:' ),
-       'notitleconvert'            => array( '0', '__KHÔNGCHUYỂNTÊN__', '__NOTITLECONVERT__', '__NOTC__' ),
-       'nocontentconvert'          => array( '0', '__KHÔNGCHUYỂNNỘIDUNG__', '__NOCONTENTCONVERT__', '__NOCC__' ),
-       'currentweek'               => array( '1', 'TUẦNNÀY', 'CURRENTWEEK' ),
-       'localweek'                 => array( '1', 'TUẦNĐỊAPHƯƠNG', 'LOCALWEEK' ),
-       'revisionid'                => array( '1', 'SỐBẢN', 'REVISIONID' ),
-       'revisionday'               => array( '1', 'NGÀYBẢN', 'REVISIONDAY' ),
-       'revisionday2'              => array( '1', 'NGÀYBẢN2', 'REVISIONDAY2' ),
-       'revisionmonth'             => array( '1', 'THÁNGBẢN', 'REVISIONMONTH' ),
-       'revisionmonth1'            => array( '1', 'THÁNGBẢN1', 'REVISIONMONTH1' ),
-       'revisionyear'              => array( '1', 'NĂMBẢN', 'REVISIONYEAR' ),
-       'revisiontimestamp'         => array( '1', 'MỐCTHỜIGIANBẢN', 'DẤUTHỜIGIANBẢN', 'REVISIONTIMESTAMP' ),
-       'revisionuser'              => array( '1', 'NGƯỜIDÙNGBẢN', 'REVISIONUSER' ),
-       'plural'                    => array( '0', 'SỐNHIỀU:', 'PLURAL:' ),
-       'fullurl'                   => array( '0', 'URLĐỦ:', 'FULLURL:' ),
-       'canonicalurl'              => array( '0', 'URLCHUẨN:', 'CANONICALURL:' ),
-       'lcfirst'                   => array( '0', 'CHỮĐẦUHOA:', 'LCFIRST:' ),
-       'ucfirst'                   => array( '0', 'CHỮĐẦUTHƯỜNG:', 'UCFIRST:' ),
-       'lc'                        => array( '0', 'CHỮHOA:', 'LC:' ),
-       'uc'                        => array( '0', 'CHỮTHƯỜNG:', 'UC:' ),
-       'displaytitle'              => array( '1', 'TÊNHIỂNTHỊ', 'DISPLAYTITLE' ),
-       'newsectionlink'            => array( '1', '__LIÊNKẾTMỤCMỚI__', '__NEWSECTIONLINK__' ),
-       'nonewsectionlink'          => array( '1', '__KHÔNGLIÊNKẾTMỤCMỚI__', '__NONEWSECTIONLINK__' ),
-       'currentversion'            => array( '1', 'BẢNNÀY', 'CURRENTVERSION' ),
-       'urlencode'                 => array( '0', 'MÃHÓAURL:', 'URLENCODE:' ),
-       'anchorencode'              => array( '0', 'MÃHÓANEO', 'ANCHORENCODE' ),
-       'currenttimestamp'          => array( '1', 'MỐCTHỜIGIANNÀY', 'DẤUTHỜIGIANNÀY', 'CURRENTTIMESTAMP' ),
-       'localtimestamp'            => array( '1', 'MỐCTHỜIGIANĐỊAPHƯƠNG', 'DẤUTHỜIGIANĐỊAPHƯƠNG', 'LOCALTIMESTAMP' ),
-       'language'                  => array( '0', '#NGÔNNGỮ:', '#LANGUAGE:' ),
-       'contentlanguage'           => array( '1', 'NGÔNNGỮNỘIDUNG', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
-       'pagesinnamespace'          => array( '1', 'CỠKHÔNGGIANTÊN:', 'CỠKGT:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
-       'numberofadmins'            => array( '1', 'SỐQUẢNLÝ', 'NUMBEROFADMINS' ),
-       'formatnum'                 => array( '0', 'PHÂNCHIASỐ', 'FORMATNUM' ),
-       'defaultsort'               => array( '1', 'XẾPMẶCĐỊNH:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
-       'filepath'                  => array( '0', 'ĐƯỜNGDẪNTẬPTIN', 'FILEPATH:' ),
+       'notitleconvert'            => array( '0', '__KHÔNG_CHUYỂN_TÊN__', '__KHÔNGCHUYỂNTÊN__', '__NOTITLECONVERT__', '__NOTC__' ),
+       'nocontentconvert'          => array( '0', '__KHÔNG_CHUYỂN_NỘI_DUNG__', '__KHÔNGCHUYỂNNỘIDUNG__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'currentweek'               => array( '1', 'TUẦN_NÀY', 'TUẦNNÀY', 'CURRENTWEEK' ),
+       'localweek'                 => array( '1', 'TUẦN_ĐỊA_PHƯƠNG', 'TUẦNĐỊAPHƯƠNG', 'LOCALWEEK' ),
+       'revisionid'                => array( '1', 'SỐ_BẢN', 'SỐBẢN', 'REVISIONID' ),
+       'revisionday'               => array( '1', 'NGÀY_BẢN', 'NGÀYBẢN', 'REVISIONDAY' ),
+       'revisionday2'              => array( '1', 'NGÀY_BẢN_2', 'NGÀYBẢN2', 'REVISIONDAY2' ),
+       'revisionmonth'             => array( '1', 'THÁNG_BẢN', 'THÁNGBẢN', 'REVISIONMONTH' ),
+       'revisionmonth1'            => array( '1', 'THÁNG_BẢN_1', 'THÁNGBẢN1', 'REVISIONMONTH1' ),
+       'revisionyear'              => array( '1', 'NĂM_BẢN', 'NĂMBẢN', 'REVISIONYEAR' ),
+       'revisiontimestamp'         => array( '1', 'MỐC_THỜI_GIAN_BẢN', 'MỐCTHỜIGIANBẢN', 'DẤU_THỜI_GIAN_BẢN', 'DẤUTHỜIGIANBẢN', 'REVISIONTIMESTAMP' ),
+       'revisionuser'              => array( '1', 'NGƯỜI_DÙNG_BẢN', 'NGƯỜIDÙNGBẢN', 'REVISIONUSER' ),
+       'plural'                    => array( '0', 'SỐ_NHIỀU:', 'SỐNHIỀU:', 'PLURAL:' ),
+       'fullurl'                   => array( '0', 'URL_ĐỦ:', 'URLĐỦ:', 'FULLURL:' ),
+       'canonicalurl'              => array( '0', 'URL_CHUẨN:', 'URLCHUẨN:', 'CANONICALURL:' ),
+       'lcfirst'                   => array( '0', 'CHỮ_ĐẦU_HOA:', 'CHỮĐẦUHOA:', 'LCFIRST:' ),
+       'ucfirst'                   => array( '0', 'CHỮ_ĐẦU_THƯỜNG:', 'CHỮĐẦUTHƯỜNG:', 'UCFIRST:' ),
+       'lc'                        => array( '0', 'CHỮ_HOA:', 'CHỮHOA:', 'LC:' ),
+       'uc'                        => array( '0', 'CHỮ_THƯỜNG:', 'CHỮTHƯỜNG:', 'UC:' ),
+       'displaytitle'              => array( '1', 'TÊN_HIỂN_THỊ', 'TÊNHIỂNTHỊ', 'DISPLAYTITLE' ),
+       'newsectionlink'            => array( '1', '__LIÊN_KẾT_MỤC_MỚI__', '__LIÊNKẾTMỤCMỚI__', '__NEWSECTIONLINK__' ),
+       'nonewsectionlink'          => array( '1', '__KHÔNG_LIÊN_KẾT_MỤC_MỚI__', '__KHÔNGLIÊNKẾTMỤCMỚI__', '__NONEWSECTIONLINK__' ),
+       'currentversion'            => array( '1', 'BẢN_NÀY', 'BẢNNÀY', 'CURRENTVERSION' ),
+       'urlencode'                 => array( '0', 'MÃ_HÓA_URL:', 'MÃHÓAURL:', 'MÃ_HOÁ_URL:', 'MÃHOÁURL:', 'URLENCODE:' ),
+       'anchorencode'              => array( '0', 'MÃ_HÓA_NEO', 'MÃHÓANEO', 'MÃ_HOÁ_NEO', 'MÃHOÁNEO', 'ANCHORENCODE' ),
+       'currenttimestamp'          => array( '1', 'MỐC_THỜI_GIAN_NÀY', 'MỐCTHỜIGIANNÀY', 'DẤU_THỜI_GIAN_NÀY', 'DẤUTHỜIGIANNÀY', 'CURRENTTIMESTAMP' ),
+       'localtimestamp'            => array( '1', 'MỐC_THỜI_GIAN_ĐỊA_PHƯƠNG', 'MỐCTHỜIGIANĐỊAPHƯƠNG', 'DẤU_THỜI_GIAN_ĐỊA_PHƯƠNG', 'DẤUTHỜIGIANĐỊAPHƯƠNG', 'LOCALTIMESTAMP' ),
+       'language'                  => array( '0', '#NGÔN_NGỮ:', '#NGÔNNGỮ:', '#LANGUAGE:' ),
+       'contentlanguage'           => array( '1', 'NGÔN_NGỮ_NỘI_DUNG', 'NGÔNNGỮNỘIDUNG', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+       'pagesinnamespace'          => array( '1', 'CỠ_KHÔNG_GIAN_TÊN:', 'CỠKHÔNGGIANTÊN:', 'CỠ_KGT:', 'CỠKGT:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+       'numberofadmins'            => array( '1', 'SỐ_BẢO_QUẢN_VIÊN', 'SỐBẢOQUẢNVIÊN', 'SỐ_QUẢN_LÝ', 'SỐQUẢNLÝ', 'SỐ_QUẢN_LÍ', 'SỐQUẢNLÍ', 'NUMBEROFADMINS' ),
+       'formatnum'                 => array( '0', 'PHÂN_CHIA_SỐ', 'PHÂNCHIASỐ', 'FORMATNUM' ),
+       'defaultsort'               => array( '1', 'XẾP_MẶC_ĐỊNH:', 'XẾPMẶCĐỊNH:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+       'filepath'                  => array( '0', 'ĐƯỜNG_DẪN_TẬP_TIN', 'ĐƯỜNGDẪNTẬPTIN', 'FILEPATH:' ),
        'tag'                       => array( '0', 'thẻ', 'tag' ),
-       'hiddencat'                 => array( '1', '__THỂLOẠIẨN__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', 'CỠTHỂLOẠI', 'PAGESINCATEGORY', 'PAGESINCAT' ),
-       'pagesize'                  => array( '1', 'CỠTRANG', 'PAGESIZE' ),
-       'index'                     => array( '1', '__CHỈMỤC__', '__INDEX__' ),
-       'noindex'                   => array( '1', '__KHÔNGCHỈMỤC__', '__NOINDEX__' ),
-       'numberingroup'             => array( '1', 'CỠNHÓM', 'NUMBERINGROUP', 'NUMINGROUP' ),
-       'staticredirect'            => array( '1', '__ĐỔIHƯỚNGNHẤTĐỊNH__', '__STATICREDIRECT__' ),
-       'protectionlevel'           => array( '1', 'MỨCKHÓA', 'MỨCKHOÁ', 'PROTECTIONLEVEL' ),
-       'url_path'                  => array( '0', 'ĐƯỜNGDẪN', 'PATH' ),
-       'url_query'                 => array( '0', 'TRUYVẤN', 'QUERY' ),
+       'hiddencat'                 => array( '1', '__THỂ_LOẠI_ẨN__', '__THỂLOẠIẨN__', '__HIDDENCAT__' ),
+       'pagesincategory'           => array( '1', 'CỠ_THỂ_LOẠI', 'CỠTHỂLOẠI', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesize'                  => array( '1', 'CỠ_TRANG', 'CỠTRANG', 'PAGESIZE' ),
+       'index'                     => array( '1', '__CHỈ_MỤC__', '__CHỈMỤC__', '__INDEX__' ),
+       'noindex'                   => array( '1', '__KHÔNG_CHỈ_MỤC__', '__KHÔNGCHỈMỤC__', '__NOINDEX__' ),
+       'numberingroup'             => array( '1', 'CỠ_NHÓM', 'CỠNHÓM', 'NUMBERINGROUP', 'NUMINGROUP' ),
+       'staticredirect'            => array( '1', '__ĐỔI_HƯỚNG_NHẤT_ĐỊNH__', '__ĐỔIHƯỚNGNHẤTĐỊNH__', '__STATICREDIRECT__' ),
+       'protectionlevel'           => array( '1', 'MỨC_KHÓA', 'MỨCKHÓA', 'MỨC_KHOÁ', 'MỨCKHOÁ', 'PROTECTIONLEVEL' ),
+       'url_path'                  => array( '0', 'ĐƯỜNG_DẪN', 'ĐƯỜNGDẪN', 'PATH' ),
+       'url_query'                 => array( '0', 'TRUY_VẤN', 'TRUYVẤN', 'QUERY' ),
+       'defaultsort_noerror'       => array( '0', 'không_lỗi', 'noerror' ),
+       'defaultsort_noreplace'     => array( '0', 'không_thay_thế', 'noreplace' ),
+       'pagesincategory_all'       => array( '0', 'tất_cả', 'all' ),
+       'pagesincategory_pages'     => array( '0', 'trang', 'pages' ),
+       'pagesincategory_subcats'   => array( '0', 'thể_loại_con', 'subcats' ),
+       'pagesincategory_files'     => array( '0', 'tập_tin', 'files' ),
 );
 
 $datePreferences = array(
@@ -346,7 +358,6 @@ $messages = array(
 'tog-minordefault' => 'Mặc định đánh dấu tất cả sửa đổi của tôi là sửa đổi nhỏ',
 'tog-previewontop' => 'Hiển thị phần xem trước nằm trên hộp sửa đổi',
 'tog-previewonfirst' => 'Hiện xem trước tại lần sửa đầu tiên',
-'tog-nocache' => 'Không lưu trang trong bộ nhớ đệm trình duyệt',
 'tog-enotifwatchlistpages' => 'Gửi thư cho tôi khi có thay đổi tại trang hoặc tập tin tôi theo dõi',
 'tog-enotifusertalkpages' => 'Gửi thư cho tôi khi có thay đổi tại trang thảo luận của tôi',
 'tog-enotifminoredits' => 'Gửi thư cho tôi cả những thay đổi nhỏ trong trang và tập tin',
@@ -482,7 +493,6 @@ $messages = array(
 'qbedit' => 'Sửa đổi',
 'qbpageoptions' => 'Trang này',
 'qbmyoptions' => 'Trang cá nhân',
-'qbspecialpages' => 'Trang đặc biệt',
 'faq' => 'Câu hỏi thường gặp',
 'faqpage' => 'Project:Các câu hỏi thường gặp',
 
@@ -602,7 +612,7 @@ $1',
 'youhavenewmessagesfromusers' => 'Bạn có $1 từ {{PLURAL:$3|người dùng khác|$3 người dùng}} ($2).',
 'youhavenewmessagesmanyusers' => 'Bạn có $1 từ nhiều người dùng ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1}}tin nhắn mới',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|thay đổi|các thay đổi}} gần đây',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|thay đổi|999=các thay đổi}} gần đây',
 'youhavenewmessagesmulti' => 'Bạn có tin nhắn mới ở $1',
 'editsection' => 'sửa',
 'editold' => 'sửa',
@@ -698,9 +708,6 @@ Không có lý do nào được đưa ra.',
 'perfcached' => 'Dữ liệu sau được lấy từ bộ nhớ đệm và có thể đã lỗi thời. Tối đa có sẵn {{PLURAL:$1|một kết quả|$1 kết quả}} trong bộ nhớ đệm.',
 'perfcachedts' => 'Dữ liệu dưới đây được đưa vào vùng nhớ đệm và được cập nhật lần cuối lúc $1. Tối đa có sẵn {{PLURAL:$4|một kết quả|$4 kết quả}} trong vùng nhớ đệm.',
 'querypage-no-updates' => 'Việc cập nhật trang này hiện đã bị tắt. Dữ liệu ở đây có thể bị lỗi thời.',
-'wrong_wfQuery_params' => 'Tham số sai trong wfQuery()<br />
-Hàm: $1<br />
-Truy vấn: $2',
 'viewsource' => 'Xem mã nguồn',
 'viewsource-title' => 'Xem mã nguồn của $1',
 'actionthrottled' => 'Thao tác bị giới hạn',
@@ -728,7 +735,8 @@ Bảo quản viên khóa nó đưa lý do là: “$3”.',
 'invalidtitle-knownnamespace' => 'Tựa trang không hợp lệ có không gian tên “$2” và văn bản “$3”',
 'invalidtitle-unknownnamespace' => 'Tựa trang không hợp lệ có không gian tên số $1 không rõ và văn bản “$2”',
 'exception-nologin' => 'Chưa đăng nhập',
-'exception-nologin-text' => 'Bạn cần phải đăng nhập để truy cập trang hoặc thực hiện tác vụ này tại wiki này.',
+'exception-nologin-text' => 'Xin vui lòng [[Special:Userlogin|đăng nhập]] để truy cập trang hoặc tác vụ này.',
+'exception-nologin-text-manual' => 'Xin vui lòng $1 để truy cập trang hoặc tác vụ này.',
 
 # Virus scanner
 'virus-badscanner' => "Cấu hình sau: không nhận ra bộ quét virus: ''$1''",
@@ -824,7 +832,7 @@ Hãy kiểm tra lại chính tả, hoặc [[Special:UserLogin/signup|mở tài k
 'passwordtooshort' => 'Mật khẩu phải có ít nhất {{PLURAL:$1|1 ký tự|$1 ký tự}}.',
 'password-name-match' => 'Mật khẩu của bạn phải khác với tên người dùng của bạn.',
 'password-login-forbidden' => 'Tên đăng nhập và mật khẩu này đã bị cấm không được sử dụng.',
-'mailmypassword' => 'Gửi mật khẩu mới qua thư điện tử',
+'mailmypassword' => 'Tái tạo mật khẩu',
 'passwordremindertitle' => 'Mật khẩu tạm thời cho {{SITENAME}}',
 'passwordremindertext' => 'Ai đó (có thể là bạn, có địa chỉ IP $1) đã yêu cầu chúng tôi gửi mật khẩu mới của {{SITENAME}} ($4). Chúng tôi đã tạo một mật khẩu tạm “$3” cho thành viên “$2”. Nếu bạn chính là người đã yêu cầu mật khẩu, bạn cần phải đăng nhập và thay đổi mật khẩu ngay bây giờ. Mật khẩu tạm sẽ hết hạn trong vòng {{PLURAL:$5|một ngày|$5 ngày}}.
 
@@ -866,7 +874,7 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'user-mail-no-body' => 'Không thể gửi thư điện tử rỗng hoặc có nội dung ngắn một cách vô lý.',
 
 # Change password dialog
-'resetpass' => 'Đổi mật khẩu',
+'changepassword' => 'Đổi mật khẩu',
 'resetpass_announce' => 'Bạn đã đăng nhập bằng mật khẩu tạm gửi qua thư điện tử. Để hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu mới tại đây:',
 'resetpass_text' => '<!-- Nhập văn bản vào đây -->',
 'resetpass_header' => 'Đổi mật khẩu cho tài khoản',
@@ -887,7 +895,7 @@ Có thể bạn đã thay đổi thành công mật khẩu của mình hoặc đ
 # Special:PasswordReset
 'passwordreset' => 'Tái tạo mật khẩu',
 'passwordreset-text-one' => 'Hãy điền mẫu đơn này để tái tạo mật khẩu.',
-'passwordreset-text-many' => '{{PLURAL:$1|Điền vào một hộp sau để tái tạo mật khẩu.}}',
+'passwordreset-text-many' => 'Điền vào {{PLURAL:$1}}một hộp sau để nhận một mật khẩu tạm thời qua thư điện tử.',
 'passwordreset-legend' => 'Tái tạo mật khẩu',
 'passwordreset-disabled' => 'Chức năng tái tạo mật khẩu đã bị tắt trên wiki này.',
 'passwordreset-emaildisabled' => 'Tính năng gửi thư điện tử không được kích hoạt trên wiki này.',
@@ -1149,6 +1157,8 @@ Nó đã tồn tại.',
 'content-not-allowed-here' => 'Không cho phép đưa nội dung “$1” vào trang [[$2]]',
 'editwarning-warning' => 'Rời khỏi trang này sẽ khiến bạn mất các sửa đổi đã thực hiện.
 Nếu đã đăng nhập, bạn có thể tắt cảnh báo này tại mục “Sửa đổi” trong tùy chọn cá nhân.',
+'editpage-notsupportedcontentformat-title' => 'Không hỗ trợ định dạng nội dung',
+'editpage-notsupportedcontentformat-text' => 'Mô hình nội dung $2 không hỗ trợ định dạng nội dung $1.',
 
 # Content models
 'content-model-wikitext' => 'mã wiki',
@@ -1190,6 +1200,9 @@ Những tham số này sẽ bị bỏ đi.',
 'cantcreateaccount-text' => "Chức năng tài tạo khoản từ địa chỉ IP này ('''$1''') đã bị [[User:$3|$3]] cấm.
 
 Lý do được $3 đưa ra là ''$2''",
+'cantcreateaccount-range-text' => "[[User:$3|$3]] đã cấm các địa chỉ IP trong dãy '''$1''', bao gồm địa chỉ IP của bạn ('''$4'''), không được mở tài khoản.
+
+Lý do được đưa ra bởi $3 là ''$2''",
 
 # History pages
 'viewpagelogs' => 'Xem nhật trình của trang này',
@@ -1251,17 +1264,13 @@ Bạn vẫn có thể [$1 so sánh khác biệt] nếu bạn muốn.",
 Bạn vẫn có thể xem khác biệt này; có thể xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} nhật trình xóa].",
 'rev-suppressed-diff-view' => "Trong trong những phiên bản trong khác biệt này đã bị '''ẩn giấu'''.
 Bạn vẫn có thể xem khác biệt này; có thể xem chi tiết trong [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} nhật trình ẩn giấu].",
-'rev-delundel' => 'hiện/ẩn',
+'rev-delundel' => 'đổi mức khả kiến',
 'rev-showdeleted' => 'hiện',
 'revisiondelete' => 'Xóa hay phục hồi phiên bản',
 'revdelete-nooldid-title' => 'Chưa chọn phiên bản',
 'revdelete-nooldid-text' => 'Có thể bạn chưa xác định (các) phiên bản đích để thực hiện tác vụ,
 hoặc phiên bản đích không tồn tại,
 hoặc bạn đang tìm cách ẩn phiên bản hiện tại.',
-'revdelete-nologtype-title' => 'Chưa cung cấp kiểu nhật trình',
-'revdelete-nologtype-text' => 'Bạn chưa chỉ định một kiểu nhật trình mà tác vụ này sẽ ghi vào.',
-'revdelete-nologid-title' => 'Mục nhật trình không hợp lệ',
-'revdelete-nologid-text' => 'Bạn chưa chỉ định sự kiện nhật trình mục tiêu mà chức năng này ghi vào hoặc mục nhật trình chỉ định không tồn tại.',
 'revdelete-no-file' => 'Tập tin chỉ định không tồn tại.',
 'revdelete-show-file-confirm' => 'Bạn có chắc muốn xem phiên bản đã bị xóa của tập tin “<nowiki>$1</nowiki>” từ ngày $2 vào lúc $3?',
 'revdelete-show-file-submit' => 'Có',
@@ -1294,9 +1303,7 @@ $1",
 'logdelete-success' => "'''Khả năng nhìn thấy của sự kiện đã được thiết lập thành công.'''",
 'logdelete-failure' => "'''Không thể thiết lập khả năng hiện thị của nhật trình:'''
 $1",
-'revdel-restore' => 'Thay đổi mức khả kiến',
-'revdel-restore-deleted' => 'các phiên bản xóa',
-'revdel-restore-visible' => 'các phiên bản được hiện',
+'revdel-restore' => 'đổi mức khả kiến',
 'pagehist' => 'Lịch sử trang',
 'deletedhist' => 'Lịch sử đã xóa',
 'revdelete-hide-current' => 'Xảy ra lỗi khi ẩn mục ghi lúc $2, $1: đây là phiên bản hiện tại.
@@ -1361,7 +1368,7 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
 'difference-multipage' => '(Khác biệt giữa các trang)',
 'lineno' => 'Dòng $1:',
 'compareselectedversions' => 'So sánh các bản đã chọn',
-'showhideselectedversions' => 'Hiện/ẩn các phiên bản được chọn',
+'showhideselectedversions' => 'Thay đổi mức khả kiến của các phiên bản được chọn',
 'editundo' => 'lùi sửa',
 'diff-empty' => '(Không có sự khác biệt)',
 'diff-multi' => '(Không hiển thị {{PLURAL:$1||$1}} phiên bản {{PLURAL:$2||của $2 thành viên}} ở giữa)',
@@ -1374,12 +1381,8 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 # Search results
 'searchresults' => 'Kết quả tìm kiếm',
 'searchresults-title' => 'Kết quả tìm kiếm “$1”',
-'searchresulttext' => 'Để biết thêm chi tiết về tìm kiếm tại {{SITENAME}}, xem [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Bạn đã tìm '''[[:$1]]''' ([[Special:Prefixindex/$1|tất cả các trang bắt đầu bằng “$1”]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tất cả các trang liên kết đến “$1”]])",
-'searchsubtitleinvalid' => "Tìm '''$1'''",
 'toomanymatches' => 'Có quá nhiều kết quả được trả về, xin hãy thử câu tìm kiếm khác',
 'titlematches' => 'Đề mục tương tự',
-'notitlematches' => 'Không có tên trang nào có nội dung tương tự',
 'textmatches' => 'Câu chữ tương tự',
 'notextmatches' => 'Không tìm thấy nội dung trang',
 'prevn' => '{{PLURAL:$1|$1}} mục trước',
@@ -1388,10 +1391,8 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'nextn-title' => '$1 {{PLURAL:$1|kết quả|kết quả}} sau',
 'shown-title' => 'Hiển thị $1 {{PLURAL:$1|kết quả|kết quả}} mỗi trang',
 'viewprevnext' => 'Xem ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tùy chọn tìm kiếm',
 'searchmenu-exists' => "* Trang '''[[$1]]'''",
 'searchmenu-new' => "'''Tạo trang “[[:$1]]” trên wiki này!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Duyệt các trang với tiền tố này]]',
 'searchprofile-articles' => 'Trang nội dung',
 'searchprofile-project' => 'Trang trợ giúp và trang dự án',
 'searchprofile-images' => 'Đa phương tiện',
@@ -1412,20 +1413,16 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'search-interwiki-default' => '$1 kết quả:',
 'search-interwiki-more' => '(thêm)',
 'search-relatedarticle' => 'Liên quan',
-'mwsuggest-disable' => 'Tắt gợi ý tìm kiếm',
 'searcheverything-enable' => 'Tìm trong tất cả không gian tên',
 'searchrelated' => 'có liên quan',
 'searchall' => 'tất cả',
 'showingresults' => "Dưới đây là {{PLURAL:$1|'''1'''|'''$1'''}} kết quả bắt đầu từ #'''$2'''.",
 'showingresultsnum' => "Dưới đây là {{PLURAL:$3|'''1'''|'''$3'''}} kết quả bắt đầu từ #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Kết quả thứ '''$1''' trong tổng số '''$3''' kết quả|Kết quả từ '''$1 - $2''' trong tổng số '''$3''' kết quả}} cho '''$4'''",
-'nonefound' => "'''Chú ý''': Theo mặc định chỉ tìm kiếm một số không gian tên. Hãy thử bắt đầu từ khóa bằng ''all:'' để tìm mọi nội dung (kể cả trang thảo luận, bản mẫu, v.v.), hoặc bắt đầu bằng không gian tên mong muốn (ví dụ ''Thảo luận:'', ''Bản mẫu:'', ''Thể loại:''…).",
 'search-nonefound' => 'Không có kết quả nào khớp với câu truy vấn.',
-'powersearch' => 'Tìm kiếm nâng cao',
 'powersearch-legend' => 'Tìm kiếm nâng cao',
 'powersearch-ns' => 'Tìm trong không gian tên:',
 'powersearch-redir' => 'Liệt kê cả trang đổi hướng',
-'powersearch-field' => 'Tìm',
 'powersearch-togglelabel' => 'Chọn:',
 'powersearch-toggleall' => 'Tất cả',
 'powersearch-togglenone' => 'Không',
@@ -1437,7 +1434,7 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'preferences' => 'Tùy chọn',
 'mypreferences' => 'Tùy chọn',
 'prefs-edits' => 'Số lần sửa đổi:',
-'changepassword' => 'Đổi mật khẩu',
+'prefsnologintext2' => 'Xin vui lòng $1 để thay đổi tùy chọn.',
 'prefs-skin' => 'Hình dạng',
 'skin-preview' => 'Xem trước',
 'datedefault' => 'Không quan tâm',
@@ -1460,13 +1457,11 @@ Xem chi tiết trong [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}}
 'prefs-email' => 'Tùy chọn thư điện tử',
 'prefs-rendering' => 'Bề ngoài',
 'saveprefs' => 'Lưu tùy chọn',
-'resetprefs' => 'Mặc định lại lựa chọn',
 'restoreprefs' => 'Mặc định lại toàn bộ tùy chọn (trong tất cả các phần)',
 'prefs-editing' => 'Sửa đổi',
 'rows' => 'Số hàng:',
 'columns' => 'Số cột:',
 'searchresultshead' => 'Tìm kiếm',
-'resultsperpage' => 'Số kết quả mỗi trang:',
 'stub-threshold' => 'Định dạng <a href="#" class="stub">liên kết đến sơ khai</a> cho các trang ngắn hơn (byte):',
 'stub-threshold-disabled' => 'Tắt',
 'recentchangesdays' => 'Số ngày hiển thị trong thay đổi gần đây:',
@@ -1481,7 +1476,6 @@ Bất cứ ai biết nó sẽ có thể để đọc danh sách theo dõi của
 'localtime' => 'Giờ hiện tại:',
 'timezoneuseserverdefault' => 'Sử dụng giờ mặc định của wiki ($1)',
 'timezoneuseoffset' => 'Khác (cần ghi số giờ chênh lệch)',
-'timezoneoffset' => 'Chênh giờ¹:',
 'servertime' => 'Giờ máy chủ:',
 'guesstimezone' => 'Dùng giờ của trình duyệt',
 'timezoneregion-africa' => 'Châu Phi',
@@ -1551,6 +1545,7 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'prefs-tokenwatchlist' => 'Dấu hiệu',
 'prefs-diffs' => 'Khác biệt',
 'prefs-help-prefershttps' => 'Đăng xuất và đăng nhập lại để áp dụng tùy chọn này.',
+'prefs-tabs-navigation-hint' => 'Mẹo: Bạn có thể bấm các phím mũi tên trái phải để luân chuyển qua các thẻ trong danh sách thẻ.',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => 'Có vẻ hợp lệ',
@@ -1736,13 +1731,15 @@ Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao c
 'recentchanges-label-minor' => 'Đây là một sửa đổi nhỏ',
 'recentchanges-label-bot' => 'Sửa đổi này do bot thực hiện',
 'recentchanges-label-unpatrolled' => 'Sửa đổi này chưa được tuần tra',
-'recentchanges-legend-newpage' => '$1 - trang mới',
-'rcnote' => "Dưới đây là {{PLURAL:$1|thay đổi '''duy nhất'''|'''$1''' thay đổi gần nhất}} trong {{PLURAL:$2|ngày qua|'''$2''' ngày qua}}, tính tới $5 lúc $4.",
+'recentchanges-label-plusminus' => 'Kích cỡ trang đã thay đổi bằng số byte này',
+'recentchanges-legend-heading' => "'''Chú giải:'''",
+'recentchanges-legend-newpage' => '(xem thêm [[Special:NewPages|danh sách các trang mới]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "Thay đổi từ '''$2''' (hiển thị tối đa '''$1''' thay đổi).",
 'rclistfrom' => 'Hiển thị các thay đổi từ $1.',
 'rcshowhideminor' => '$1 sửa đổi nhỏ',
 'rcshowhidebots' => '$1 sửa đổi bot',
-'rcshowhideliu' => '$1 sửa đổi thành viên',
+'rcshowhideliu' => '$1 thành viên đăng ký',
 'rcshowhideanons' => '$1 sửa đổi vô danh',
 'rcshowhidepatr' => '$1 sửa đổi đã tuần tra',
 'rcshowhidemine' => '$1 sửa đổi của tôi',
@@ -1859,6 +1856,8 @@ Nếu bạn vẫn muốn tải tập tin của bạn lên, xin hãy quay lại v
 Nếu bạn vẫn muốn tải tập tin của bạn lên, xin hãy quay lại và dùng một tên khác. [[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => 'Tập tin này có vẻ là bản sao của {{PLURAL:$1|tập tin|các  tập tin}} sau:',
 'file-deleted-duplicate' => 'Một tập tin giống hệt như tập tin này ([[:$1]]) đã từng bị xóa trước đây. Bạn nên xem lại lịch sử xóa tập tin trước khi tiếp tục tải nó lên lại.',
+'file-deleted-duplicate-notitle' => 'Một tập tin giống hệt như tập tin này đã từng bị xóa và tên bị đàn áp trước đây.
+Bạn nên xin một người có quyền xem dữ liệu tập tin bị đàn áp xem lại trường hợp này trước khi tiếp tục tải nó lên lại.',
 'uploadwarning' => 'Cảnh báo!',
 'uploadwarning-text' => 'Xin hãy chỉnh sửa miêu tả tập tin ở dưới và thử lại.',
 'savefile' => 'Lưu tập tin',
@@ -2200,7 +2199,8 @@ Các mục <del>bị gạch bỏ</del> là các trang đã được sửa.',
 'ncategories' => '$1 {{PLURAL:$1|thể loại|thể loại}}',
 'ninterwikis' => '$1 liên kết liên wiki',
 'nlinks' => '$1 {{PLURAL:$1|liên kết|liên kết}}',
-'nmembers' => '$1 {{PLURAL:$1|trang|trang}}',
+'nmembers' => '$1 trang',
+'nmemberschanged' => '$1 → $2 trang',
 'nrevisions' => '$1 {{PLURAL:$1|phiên bản|phiên bản}}',
 'nviews' => '$1 {{PLURAL:$1|lượt truy cập|lượt truy cập}}',
 'nimagelinks' => 'Được sử dụng trong $1 trang',
@@ -2239,10 +2239,9 @@ Các mục <del>bị gạch bỏ</del> là các trang đã được sửa.',
 'protectedpages' => 'Trang bị khóa',
 'protectedpages-indef' => 'Chỉ hiển thị khóa vô hạn',
 'protectedpages-cascade' => 'Chỉ hiển thị khóa theo tầng',
-'protectedpagestext' => 'Các trang này bị khóa không cho sửa đổi hay di chuyển',
+'protectedpages-noredirect' => 'Ẩn trang đổi hướng',
 'protectedpagesempty' => 'Hiện không có trang nào bị khóa với các thông số này.',
 'protectedtitles' => 'Tên trang bị khóa',
-'protectedtitlestext' => 'Các tựa trang sau đây đã bị khóa không cho tạo mới',
 'protectedtitlesempty' => 'Không có tựa trang nào bị khóa với các thông số như vậy.',
 'listusers' => 'Danh sách thành viên',
 'listusers-editsonly' => 'Chỉ hiện thành viên có tham gia sửa đổi',
@@ -2283,7 +2282,7 @@ Xin lưu ý là các trang Web bên ngoài có thể liên kết đến một t
 Bạn có thể thu hẹp kết quả bằng cách chọn loại nhật trình, tên thành viên (phân biệt chữ hoa-chữ thường), hoặc các trang bị ảnh hưởng (cũng phân biệt chữ hoa-chữ thường).',
 'logempty' => 'Không có mục nào khớp với từ khóa.',
 'log-title-wildcard' => 'Tìm các tựa trang bắt đầu bằng các chữ này',
-'showhideselectedlogentries' => 'Hiện/ẩn các mục nhật trình đã chọn',
+'showhideselectedlogentries' => 'Thay đổi mức khả kiến của các mục nhật trình đã chọn',
 
 # Special:AllPages
 'allpages' => 'Mọi trang',
@@ -2294,9 +2293,6 @@ Bạn có thể thu hẹp kết quả bằng cách chọn loại nhật trình,
 'allpagesto' => 'Xem đến trang:',
 'allarticles' => 'Mọi trang',
 'allinnamespace' => 'Mọi trang (không gian $1)',
-'allnotinnamespace' => 'Mọi trang (không trong không gian $1)',
-'allpagesprev' => 'Trước',
-'allpagesnext' => 'Sau',
 'allpagessubmit' => 'Hiển thị',
 'allpagesprefix' => 'Hiển thị trang có tiền tố:',
 'allpagesbadtitle' => 'Tựa trang không hợp lệ hay chứa tiền tố liên kết ngôn ngữ hoặc liên kết wiki. Nó có thể chứa một hoặc nhiều ký tự không dùng được ở tựa trang.',
@@ -2464,9 +2460,9 @@ 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 đó lúc khi đăng nhập. 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
+Hệ thống báo tin {{SITENAME}} thân thiện của bạn
 
 --
 Để thay đổi các thiết lập thư điện tử thông báo, mời xem:
@@ -2517,6 +2513,7 @@ Việc xóa các trang như vậy bị hạn chế để ngăn ngừa phá hoạ
 'delete-warning-toobig' => 'Trang này có lịch sử sửa đổi lớn, đến hơn {{PLURAL:$1|lần|lần}} sửa đổi.
 Việc xóa các trang có thể làm tổn hại đến hoạt động của cơ sở dữ liệu {{SITENAME}};
 hãy cẩn trọng khi thực hiện.',
+'deleting-backlinks-warning' => "'''Cảnh báo:''' Có trang khác liên kết đến trang mà bạn sắp xóa.",
 
 # Rollback
 'rollback' => 'Lùi tất cả sửa đổi',
@@ -2631,7 +2628,6 @@ Chỉ có bảo quản viên mới xem được văn bản đầy đủ của nh
 'undeletebtn' => 'Phục hồi',
 'undeletelink' => 'xem lại/phục hồi',
 'undeleteviewlink' => 'xem',
-'undeletereset' => 'Tẩy trống',
 'undeleteinvert' => 'Đảo sự lựa chọn',
 'undeletecomment' => 'Lý do:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|bản|bản}} được phục hồi',
@@ -2718,7 +2714,6 @@ $1',
 'block' => 'Cấm người dùng',
 'unblock' => 'Bỏ cấm người dùng',
 'blockip' => 'Cấm người dùng',
-'blockip-title' => 'Cấm người dùng',
 'blockip-legend' => 'Cấm người dùng',
 'blockiptext' => 'Dùng mẫu dưới để cấm một địa chỉ IP hoặc thành viên không được viết trang.
 Điều này chỉ nên làm để tránh phá hoại, và phải theo [[{{MediaWiki:Policy-url}}|quy định]].
@@ -2726,7 +2721,6 @@ $1',
 'ipadressorusername' => 'Địa chỉ IP hay tên thành viên:',
 'ipbexpiry' => 'Thời hạn:',
 'ipbreason' => 'Lý do:',
-'ipbreasonotherlist' => 'Lý do khác',
 'ipbreason-dropdown' => '*Một số lý do cấm thường gặp
 ** Phá hoại
 ** Thêm thông tin sai lệch
@@ -2743,8 +2737,6 @@ $1',
 'ipbsubmit' => 'Cấm',
 'ipbother' => 'Thời hạn khác:',
 'ipboptions' => '2 giờ:2 hours,1 ngày:1 day,3 ngày:3 days,1 tuần:1 week,2 tuần:2 weeks,1 tháng:1 month,3 tháng:3 months,6 tháng:6 months,1 năm:1 year,vô hạn:infinite',
-'ipbotheroption' => 'khác',
-'ipbotherreason' => 'Lý do khác',
 'ipbhidename' => 'Ẩn tên người dùng ra khỏi các sửa đổi và danh sách',
 'ipbwatchuser' => 'Theo dõi trang thành viên và thảo luận thành viên của thành viên này',
 'ipb-disableusertalk' => 'Không cho người dùng này sửa trang thảo luận thành viên của họ khi bị cấm',
@@ -2756,6 +2748,7 @@ $1',
 Xem lại những lần cấm tại [[Special:BlockList|danh sách cấm]].',
 'ipb-blockingself' => 'Bạn sẽ tự bỏ cấm cho mình! Bạn có chắc chắn muốn làm vậy không?',
 'ipb-confirmhideuser' => 'Bạn sẽ cấm người dùng với tùy chọn “ẩn người dùng”. Bạn có chắc chắn muốn dời tên người dùng khỏi tất cả mọi danh sách và nhật trình?',
+'ipb-confirmaction' => 'Nếu bạn chắc chắn muốn thực hiện tác vụ này, xin hãy bấm “{{int:ipb-confirm}}” bên dưới.',
 'ipb-edit-dropdown' => 'Sửa đổi lý do cấm',
 'ipb-unblock-addr' => 'Bỏ cấm $1',
 'ipb-unblock' => 'Bỏ cấm thành viên hay địa chỉ IP',
@@ -2829,7 +2822,6 @@ Xem lại những lần cấm tại [[Special:BlockList|danh sách cấm]].',
 'sorbsreason' => 'Địa chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sử dụng.',
 'sorbs_create_account_reason' => 'Địa chỉ chỉ IP của bạn bị liệt kê là một proxy mở trong DNSBL mà {{SITENAME}} đang sử dụng. Bạn không thể mở tài khoản.',
 'xffblockreason' => 'Đầu đề X-Forwarded-For chứa một địa chỉ IP đã bị cấm, địa chỉ này hoặc của bạn hoặc của một máy chủ proxy bạn đang sử dụng. Lý do cấm ban đầu là: $1',
-'cant-block-while-blocked' => 'Bạn không thể cấm thành viên khác trong khi bạn đang bị cấm.',
 'cant-see-hidden-user' => 'Thành viên bạn muốn cấm đã bị cấm trước đây hoặc đã bị ẩn đi. Vì bạn không có quyền hideuser, bạn không thể xem hoặc thay đổi mức cấm của thành viên.',
 'ipbblocked' => 'Bạn không thể cấm hay bỏ cấm người dùng khác vì chính bạn đang bị cấm.',
 'ipbnounblockself' => 'Bạn không được bỏ cấm chính mình.',
@@ -2889,7 +2881,6 @@ xin hãy chắc chắn rằng bạn đã nhận thức được những hệ l
 Trong những trường hợp đó, bạn phải di chuyển hoặc hợp nhất trang theo kiểu thủ công nếu muốn.",
 'movearticle' => 'Di chuyển trang:',
 'moveuserpage-warning' => "'''Cảnh báo:''' Bạn sắp di chuyển trang cá nhân của người dùng. Xin lưu ý rằng chỉ có trang này sẽ được di chuyển, còn người dùng sẽ ''không'' đổi tên.",
-'movenologin' => 'Chưa đăng nhập',
 'movenologintext' => 'Bạn phải là thành viên đã mở tài khoản và [[Special:UserLogin|đăng nhập]] mới di chuyển trang được.',
 'movenotallowed' => 'Bạn không có quyền di chuyển trang.',
 'movenotallowedfile' => 'Bạn không có đủ quyền để di chuyển tập tin.',
@@ -2905,8 +2896,6 @@ Trong những trường hợp đó, bạn phải di chuyển hoặc hợp nhất
 'articleexists' => 'Đã có một trang với tên đó, hoặc tên bạn chọn không hợp lệ.
 Xin hãy chọn tên khác.',
 'cantmove-titleprotected' => 'Bạn không thể đổi tên trang, vì tên trang mới đã bị khóa không cho tạo mới',
-'talkexists' => "'''Trang được di chuyển thành công, nhưng trang thảo luận không thể di chuyển được vì đã tồn tại một trang thảo luận ở tên mới. Xin hãy hợp nhất chúng lại một cách thủ công.'''",
-'movedto' => 'đổi thành',
 'movetalk' => 'Di chuyển trang thảo luận đi kèm',
 'move-subpages' => 'Di chuyển các trang con (tối đa là $1 trang)',
 'move-talk-subpages' => 'Di chuyển các trang con của trang thảo luận (tối đa $1 trang)',
@@ -3807,15 +3796,10 @@ Những thông tin khác mặc định sẽ được ẩn đi.
 'exif-urgency-high' => 'Cao ($1)',
 'exif-urgency-other' => 'Ưu tiên người dùng định nghĩa ($1)',
 
-# External editor support
-'edit-externally' => 'Sửa bằng phần mềm bên ngoài',
-'edit-externally-help' => '(Xem [https://www.mediawiki.org/wiki/Manual:External_editors hướng dẫn cài đặt bằng tiếng Anh] để biết thêm thông tin)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'tất cả',
 'namespacesall' => 'tất cả',
 'monthsall' => 'tất cả',
-'limitall' => 'tất cả',
 
 # Email address confirmation
 'confirmemail' => 'Xác nhận thư điện tử',
@@ -3839,7 +3823,6 @@ Chương trình thư báo rằng: $1',
 'confirmemail_needlogin' => 'Bạn cần phải $1 để xác nhận địa chỉ thư điện tử.',
 'confirmemail_success' => 'Thư điện tử của bạn đã được xác nhận. Bạn đã có thể đăng nhập và bắt đầu sử dụng wiki.',
 'confirmemail_loggedin' => 'Địa chỉ thư điện tử của bạn đã được xác nhận.',
-'confirmemail_error' => 'Có trục trặc khi lưu xác nhận của bạn.',
 'confirmemail_subject' => 'Xác nhận thư điện tử tại {{SITENAME}}',
 'confirmemail_body' => 'Ai đó, có thể là bạn, từ địa chỉ IP $1,
 đã mở tài khoản có tên "$2" với địa chỉ thư điện tử này tại {{SITENAME}}.
@@ -3920,6 +3903,11 @@ Xin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
 'imgmultigo' => 'Xem',
 'imgmultigoto' => 'Đi đến trang $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(ngôn ngữ mặc định)',
+'img-lang-info' => 'Kết xuất hình này trong $1. $2',
+'img-lang-go' => 'Xem',
+
 # Table pager
 'ascending_abbrev' => 'tăng',
 'descending_abbrev' => 'giảm',
@@ -4053,7 +4041,17 @@ Bạn cũng có thể [[Special:EditWatchlist|dùng trang sửa đổi bình th
 'version-hook-name' => 'Tên hook',
 'version-hook-subscribedby' => 'Được theo dõi bởi',
 'version-version' => '(Phiên bản $1)',
-'version-license' => 'Giấy phép bản quyền',
+'version-license' => 'Giấy phép MediaWiki',
+'version-ext-license' => 'Giấy phép',
+'version-ext-colheader-name' => 'Phần mở rộng',
+'version-ext-colheader-version' => 'Phiên bản',
+'version-ext-colheader-license' => 'Giấy phép',
+'version-ext-colheader-description' => 'Miêu tả',
+'version-ext-colheader-credits' => 'Tác giả',
+'version-license-title' => 'Giấy phép $1',
+'version-license-not-found' => 'Không tìm thấy chi tiết giấy phép của phần mở rộng này.',
+'version-credits-title' => 'Ghi công $1',
+'version-credits-not-found' => 'Không tìm thấy chi tiết ghi công của phần mở rộng này.',
 'version-poweredby-credits' => "Wiki này chạy trên '''[https://www.mediawiki.org/ MediaWiki]''', bản quyền © 2001–$1 $2.",
 'version-poweredby-others' => 'những người khác',
 'version-poweredby-translators' => 'các biên dịch viên translatewiki.net',
@@ -4078,14 +4076,15 @@ hoặc [//www.gnu.org/licenses/old-licenses/gpl-2.0.html đọc nó trực tuy
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath?uselang=vi Đường dẫn kịch bản]',
 
 # Special:Redirect
-'redirect' => 'Đổi hướng đến tập tin, người dùng, hoặc số phiên bản',
+'redirect' => 'Đổi hướng đến tập tin, người dùng, trang, hoặc số phiên bản',
 'redirect-legend' => 'Đổi hướng đến tập tin hoặc trang',
-'redirect-summary' => 'Trang đặc biệt này đổi hướng đến một tập tin (theo tên tập tin được cho vào), trang (theo số phiên bản được cho vào), hoặc trang cá nhân (theo số thành viên). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], hoặc [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Trang đặc biệt này đổi hướng đến một tập tin (theo tên tập tin được cho vào), trang (theo số phiên bản hoặc số trang được cho vào), hoặc trang cá nhân (theo số thành viên). Cách sử dụng: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], hoặc [[{{#Special:Redirect}}/user/101]].',
 'redirect-submit' => 'Đi',
 'redirect-lookup' => 'Tra cứu:',
 'redirect-value' => 'Giá trị:',
 'redirect-user' => 'Số thành viên',
-'redirect-revision' => 'Phiên bản trang',
+'redirect-page' => 'Số trang',
+'redirect-revision' => 'Số phiên bản trang',
 'redirect-file' => 'Tên tập tin',
 'redirect-not-exists' => 'Không tìm thấy giá trị',
 
@@ -4102,9 +4101,9 @@ hoặc [//www.gnu.org/licenses/old-licenses/gpl-2.0.html đọc nó trực tuy
 
 # Special:SpecialPages
 'specialpages' => 'Các trang đặc biệt',
+'specialpages-note-top' => 'Chú giải',
 'specialpages-note' => '* Trang đặc biệt thông thường.
-* <strong class="mw-specialpagerestricted">Trang đặc biệt được hạn chế.</strong>
-* <span class="mw-specialpagecached">Trang đặc biệt được lấy từ vùng nhớ đệm (có thể lỗi thời).</span>',
+* <strong class="mw-specialpagerestricted">Trang đặc biệt được hạn chế.</strong>',
 'specialpages-group-maintenance' => 'Báo cáo bảo quản',
 'specialpages-group-other' => 'Trang đặc biệt khác',
 'specialpages-group-login' => 'Đăng nhập / Mở tài khoản',
@@ -4151,7 +4150,6 @@ hoặc [//www.gnu.org/licenses/old-licenses/gpl-2.0.html đọc nó trực tuy
 
 # Special:ComparePages
 'comparepages' => 'So sánh trang',
-'compare-selector' => 'So sánh phiên bản trang',
 'compare-page1' => 'Trang 1',
 'compare-page2' => 'Trang 2',
 'compare-rev1' => 'Phiên bản 1',
@@ -4279,6 +4277,7 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'api-error-overwrite' => 'Không được ghi đè một tập tin đã tồn tại.',
 'api-error-stashfailed' => 'Lỗi nội bộ: Máy chủ bị thất bại trong việc lưu giữ tập tin tạm.',
 'api-error-publishfailed' => 'Lỗi nội bộ: Máy chủ bị thất bại trong việc xuất bản tập tin tạm.',
+'api-error-stasherror' => 'Đã xuất hiện lỗi khi tải tập tin lên hàng đợi.',
 'api-error-timeout' => 'Máy chủ không đáp ứng trong thời gian dự kiến.',
 'api-error-unclassified' => 'Gặp lỗi không ngờ',
 'api-error-unknown-code' => 'Lỗi không rõ: “$1”',
@@ -4324,10 +4323,14 @@ Nếu không thì bạn có thể điền biểu mẫu đơn giản ở dưới.
 'expand_templates_input' => 'Mã nguồn để bung:',
 'expand_templates_output' => 'Kết quả',
 'expand_templates_xml_output' => 'Xuất XML',
+'expand_templates_html_output' => 'Mã nguồn HTML thô',
 'expand_templates_ok' => 'Bung',
 'expand_templates_remove_comments' => 'Bỏ các chú thích',
 'expand_templates_remove_nowiki' => 'Bỏ qua thẻ <nowiki> trong kết quả',
 'expand_templates_generate_xml' => 'Xem cây phân tích XML',
+'expand_templates_generate_rawhtml' => 'Hiển thị HTML thô',
 'expand_templates_preview' => 'Xem trước',
 
+# Unknown messages
+'uploadinvalidxml' => 'Không thể phân tích mã XML trong tập tin tải lên.',
 );
index 44efa56..7870018 100644 (file)
@@ -107,7 +107,6 @@ $messages = array(
 
 # Cologne Blue skin
 'qbedit' => 'Bewerkn',
-'qbspecialpages' => 'Specioale bloadn',
 
 # Vector skin
 'vector-action-delete' => 'Wegdoen',
@@ -144,7 +143,7 @@ $messages = array(
 'talk' => 'Discuusje',
 'toolbox' => 'Ulpmiddeln',
 
-# 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).
+# 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).
 'aboutsite' => 'Over {{SITENAME}}',
 'aboutpage' => 'Project:Info',
 'disclaimers' => 'Aansprakelekeid',
@@ -169,6 +168,9 @@ $messages = array(
 # Search results
 'search-result-size' => '$1 ({{PLURAL:$2|1 woord|$2 woordn}})',
 
+# Special:Log/newusers
+'newuserlogpage' => 'Logboek nieuwe gebrukers',
+
 # Recent changes
 'recentchanges' => 'Juste veranderd',
 
@@ -189,9 +191,6 @@ $messages = array(
 'newpages' => 'Nieuwe bloadn',
 'newpages-username' => 'Gebrukersnoame:',
 
-# Special:Log/newusers
-'newuserlogpage' => 'Logboek nieuwe gebrukers',
-
 # Watchlist
 'mywatchlist' => 'Myn volglyste',
 'watch' => 'Volgn',
index c7e9ed0..483fb20 100644 (file)
@@ -75,7 +75,6 @@ $messages = array(
 'tog-minordefault' => 'Ale maj ändrungn soln als glaane geldn',
 'tog-previewontop' => 'Foorschau owârhalb un ned undârhalb fom arbajds-fenschdâr',
 'tog-previewonfirst' => 'Baj dr ärschdn ändrung imâr ärschd â foorschau ôôdsajchn',
-'tog-nocache' => 'Sajdn-cache ausschaldn',
 'tog-enotifwatchlistpages' => 'Ii wil â iimejl griign, wen sich was beoobachdeds ändârd',
 'tog-enotifusertalkpages' => 'Ii wil â iimejl griign, wen sich uf majnâr disghusjoons-sajdn was duud',
 'tog-enotifminoredits' => 'I wil aa baj bloos glaanân ädrungn â iimejl griign',
@@ -173,7 +172,6 @@ $messages = array(
 'qbedit' => 'Ändrn',
 'qbpageoptions' => 'Sajdn-âjschdelungn',
 'qbmyoptions' => 'Mâj sajdn',
-'qbspecialpages' => 'Sondâr-sajdn',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -358,6 +356,9 @@ Wen's des ned is, bisd womeeglich iwa ân feela in dr sofdwäâr gschdolbäd. In
 'mailmypassword' => ' najs passwôrd iwâr iimejl dsuschign lasn',
 'loginlanguagelabel' => 'Sproch: $1',
 
+# Change password dialog
+'changepassword' => "S'bhaswôrd ändârn",
+
 # Edit page toolbar
 'bold_sample' => 'Dägsd in fäd',
 'bold_tip' => 'Fädâr dhägschd',
@@ -465,8 +466,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 # Revision deletion
 'rev-delundel' => 'ôôdsajng/fârbärng',
 'revdel-restore' => 'Ändârn, was oodsajchd wäd',
-'revdel-restore-deleted' => 'glöschde Versiona',
-'revdel-restore-visible' => 'sichdbore Versiona',
 
 # Merge log
 'revertmerge' => 'Dsrig fôr dii fârajnichung',
@@ -481,10 +480,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 # Search results
 'searchresults' => 'Bam suchng gfundne sachng',
 'searchresults-title' => 'Gfundn bam suchng nach „$1“',
-'searchresulttext' => 'Wenn´sd wisn wilsd, wii genau mä´ alles af {{SITENAME}} suchng ghôô, dan gug af dâr [[{{MediaWiki:Helppage}}|Hilfssajdn]] nôôch.',
-'searchsubtitle' => 'Gsuchd wä´n soll nach: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|aln sajdn, dii wo mid „$1“ ôôfangn]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aln sajdn, dii wo af „$1“ fârwajsn]])',
-'searchsubtitleinvalid' => 'Daj Suchanfraache: „$1“.',
-'notitlematches' => 'Gha sajdn gfundn, däärn nôômâ basn dääd',
 'notextmatches' => 'Närchnds gfundn.',
 'prevn' => '{{PLURAL:$1|foorichâr|fooriche $1}}',
 'nextn' => '{{PLURAL:$1|nägschdâr|nägschde $1}}',
@@ -514,20 +509,16 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'search-interwiki-default' => 'Af $1 gfundn:',
 'search-interwiki-more' => '(noch mäa´)',
 'search-relatedarticle' => 'Fârwande',
-'mwsuggest-disable' => 'Foorschlääch iwâr AJAX abschdelâ',
 'searcheverything-enable' => 'In aln naamsrajm suuchn',
 'searchrelated' => 'fârwand',
 'searchall' => 'ale',
 'showingresults' => "Hiâr {{PLURAL:$1|is '''1'''|sin '''$1'''}} Ärgääbnis , ôôgfangn baj numâr '''$2.'''",
 'showingresultsnum' => "Hiâr {{PLURAL:$3|is '''1''' |sin '''$3''' }} Ärgääbnis, oogfangn baj numâr '''$2.'''",
 'showingresultsheader' => "{{PLURAL:$5|Ärgääbnis '''$1''' don '''$3'''|Ärgääbnis '''$1–$2''' fon '''$3'''}} fir '''$4'''",
-'nonefound' => "'''Oobachd:''' Oone wajdas wäd bloos in ajniche Nôômârajm gsuuchd. Wen'd iwarôôl (aa in disghusjoon'n, foorlaachn usw.) suchng wilsd, musd ''all:'' foorschrajm, oda aa den nôôma (midâm dobl-bhungd) fo genau dem nôômaraum, fon dem de waasd, dass´es nur in däm drin saj ko.",
 'search-nonefound' => 'Dsu dajna suuchfrôôchn is nigs gfundn wôrn.',
-'powersearch' => 'Suuche mid mäa oogaabm',
 'powersearch-legend' => 'Suuche mid mäa oogaam',
 'powersearch-ns' => 'In dena Nôômâsrajm suchng:',
 'powersearch-redir' => 'Wajdälajdunga oodsajng',
-'powersearch-field' => 'Suuch nôôch:',
 'powersearch-togglelabel' => 'Wääl aus:',
 'powersearch-toggleall' => 'Ale dsam',
 'powersearch-togglenone' => 'Gôôr ghane',
@@ -538,7 +529,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'preferences' => 'ajschdelunga',
 'mypreferences' => 'Ajschdelunga',
 'prefs-edits' => 'So ofd umgmoodld:',
-'changepassword' => "S'bhaswôrd ändârn",
 'prefs-skin' => 'Schaale',
 'skin-preview' => 'Môôl schbign',
 'datedefault' => 'Nôrmaal',
@@ -556,7 +546,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'prefs-email' => 'Iimejl-ajschdelungn',
 'prefs-rendering' => 'Ufbuds',
 'saveprefs' => 'Aâjschdelungn schbajchrn',
-'resetprefs' => 'Nigs iwârneemn',
 'restoreprefs' => 'Uf dii uur-ajschdelungn dsrig',
 'prefs-editing' => 'Bearbajdungs-fenschdâr',
 'rows' => 'Soofiil dsajln:',
@@ -569,7 +558,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'localtime' => 'Hiisiche Uurdsajd:',
 'timezoneuseserverdefault' => 'Dsajd-dsoon fom server neem',
 'timezoneuseoffset' => 'Andre dsajd-dsoon (fârschiiwung undn ajndraachn)',
-'timezoneoffset' => 'Fârschiiwung¹:',
 'servertime' => 'Uurdsaj ufm Server',
 'guesstimezone' => 'Fom brausa iwârneem',
 'timezoneregion-africa' => 'Afrighaa',
@@ -611,7 +599,6 @@ Zu deiner Informadion folchd des Lösch- un Verschäibungs-Logbuch miid der Begr
 'recentchanges-label-minor' => 'Blos a weng wôs is gändârd wôrn',
 'recentchanges-label-bot' => 'Ändrung durch an Bot',
 'recentchanges-label-unpatrolled' => 'Net-kondrollierde Ändrung',
-'rcnote' => "Des {{Plural:$1|is dii aane ändrung|sin dii '''$1''' ändrunga}}, dii in di {{Plural:$2|ledsdn 24 schdundn|ledsdn '''$2''' doochn}} gmachd wôrn {{Plural:$1|is|sin}}. Schdand is fom $4, $5 uur.",
 'rcnotefrom' => "Oozeichd werrn däi Ändrunga seid '''$2''' (max. '''$1''' Eidrääch).",
 'rclistfrom' => 'Bloos di ändrunga dsajchn sajd $1',
 'rcshowhideminor' => 'Glenâre Ändrungn $1',
@@ -839,7 +826,6 @@ Wenns'd dii sajdn irchendwan amôl nimä fârfolchn wilsd, musd bloos af „{{in
 
 # Block/unblock
 'blockip' => 'IP-Adressn odr ôôgmeldn aus-schbärn',
-'blockip-title' => 'Bearbajdâr aus-schbärn',
 'blockip-legend' => 'IP-Adresn odr Bearbajdâr aus-schbärn',
 'ipboptions' => '2 schdund:2 hours,1 dooch:1 day,3 dooch:3 days,1 wochng:1 week,2 wochng:2 weeks,1 moonad:1 month,3 moonad:3 months,6 moonad:6 months,1 jôôr:1 year,oone dsajdschrangng:infinite',
 'ipblocklist' => 'Gschberrder Nutzer',
@@ -874,8 +860,6 @@ Schrajb bide den '''naja'' nôômâ fo dâr sajdn undârals '''Dsiil'' nâj un '
 'pagemovedsub' => 'Eds is fârschoom.',
 'movepage-moved' => "'''Dii sajdn „$1“ is edsad nach  „$2“ verschoom wôrn.'''",
 'articleexists' => "Es umdaafn gäd ned, wal's dii sajdn scho gibd, soo wise naj häd haasn soln. Dengg dä´ hald an andârn nôômâ aus.",
-'talkexists' => 'Dii sajdn is fârschoom wôrn, awa baj iira disghusjoonssajdn is ned gangâ, wals dii scho mim naja nôôma gibd. Jeds musd des fo hand dsamwôrschdln.',
-'movedto' => 'fârschoom nach',
 'movetalk' => "Dii disghusjoons-sajdn aa mid fârschiim, wen's gäd",
 'movelogpage' => 'Umdaaf-Logbuch',
 'movereason' => 'Grund:',
@@ -1004,10 +988,6 @@ Bloos  dsajln, dii mi´m dsajchn * ôôfanga, wärn berigsichdichd. Un dä ärsc
 'exif-imagewidth' => 'brajdn',
 'exif-imagelength' => 'Heen',
 
-# External editor support
-'edit-externally' => 'Dii dadaj mid an ägsdärna brogram ändârn',
-'edit-externally-help' => '(Määr un genauârs dâdsuu baj den [https://www.mediawiki.org/wiki/Manual:External_editors Inschdaladsjoonsanwajsungn])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ale',
 'namespacesall' => 'ale',
index e2b2f0e..cab261a 100644 (file)
@@ -68,7 +68,6 @@ $specialPageAliases = array(
        'Categories'                => array( 'Klads' ),
        'Confirmemail'              => array( 'Fümedönladeti' ),
        'Contributions'             => array( 'Keblünots' ),
-       'Disambiguations'           => array( 'Telplänovs', 'Telplänovapads' ),
        'DoubleRedirects'           => array( 'Lüodükömstelik', 'Lüodüköms telik' ),
        'Listfiles'                 => array( 'Ragivalised', 'Magodalised' ),
        'Listusers'                 => array( 'Gebanalised' ),
@@ -135,7 +134,6 @@ $messages = array(
 'tog-minordefault' => 'Bepenön redakamis no pebepenölis valikis asä pülikis',
 'tog-previewontop' => 'Jonön büologedi bü redakaspad',
 'tog-previewonfirst' => 'Jonön büologedi pö redakam balid',
-'tog-nocache' => 'Nejäfidükön el "cache" padas in bevüresodatävöm',
 'tog-enotifwatchlistpages' => 'Sedön obe penedi leäktronik ven ek votükon padi u ragivi se galädalised obik',
 'tog-enotifusertalkpages' => 'Sedön obe penedi leäktronik ven gebanapad obik pavotükon',
 'tog-enotifminoredits' => 'Sedön obe penedi leäktronik igo pö votükams pülik padas e ragivas',
@@ -263,7 +261,6 @@ $messages = array(
 'qbedit' => 'Redakön',
 'qbpageoptions' => 'Pad at',
 'qbmyoptions' => 'Pads obik',
-'qbspecialpages' => 'Pads patik',
 'faq' => 'Säks suvo pasäköls',
 'faqpage' => 'Project:FAQ',
 
@@ -454,9 +451,6 @@ Ba ya pemoükon fa geban votik.',
 'perfcached' => 'Nüns sököl ekömons se el caché e ba no binons anuik. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Nüns sököl kömons se mem nelaidüpik e päbevobons lätiküno ün: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Atimükam pada at penemögükon. Nünods isik no poflifedükons suno.',
-'wrong_wfQuery_params' => 'Paramets neverätik lü wfQuery()<br />
-Dun: $1<br />
-Beg: $2',
 'viewsource' => 'Logön fonäti',
 'viewsource-title' => 'Logön fonäti pada: "$1"',
 'actionthrottled' => 'Dun pemiedükon',
@@ -582,7 +576,7 @@ Stebedolös büä osteifülol nogna.',
 'loginlanguagelabel' => 'Pük: $1',
 
 # Change password dialog
-'resetpass' => 'Votükön letavödi',
+'changepassword' => 'Votükön letavödi',
 'resetpass_announce' => 'Enunädol oli me kot nelaidüpik pisedöl ole. Ad finükön nunädami, mutol välön letavödi nulik is:',
 'resetpass_header' => 'Votükön kalaletavödi',
 'oldpassword' => 'Letavöd büik:',
@@ -888,8 +882,6 @@ Ninäd peklänedöl at binon ye nog lügolovik guvanes votik vüka: {{SITENAME}}
 'revdelete-success' => "'''Logov padafomama pelonon benosekiko.'''",
 'logdelete-success' => 'Logov jenotaliseda pelonon benosekiko.',
 'revdel-restore' => 'Votükön logovi',
-'revdel-restore-deleted' => 'revids pemoüköl',
-'revdel-restore-visible' => 'revids logädik',
 'pagehist' => 'Padajenotem',
 'deletedhist' => 'Jenotem pemoüköl',
 'revdelete-otherreason' => 'Kod votik/zuik:',
@@ -942,12 +934,8 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 # Search results
 'searchresults' => 'Sukaseks',
 'searchresults-title' => 'Sukaseks pro: "$1"',
-'searchresulttext' => 'Ad lärnön mödikumosi dö suks in {{SITENAME}}, logolös [[{{MediaWiki:Helppage}}|Suks in {{SITENAME}}]].',
-'searchsubtitle' => 'Esukol padi: \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|pads me "$1" primöls valiks]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pads lü "$1" yumöls valiks]])',
-'searchsubtitleinvalid' => "Esukol padi: '''$1'''",
 'toomanymatches' => 'Pads tu mödiks labü vöd(s) pesuköl petuvons. Sukolös vödi(s) votik.',
 'titlematches' => 'Leigon ko padatiäd',
-'notitlematches' => 'Leigon ko padatiäds nonik',
 'textmatches' => 'Leigon ko dil padavödema',
 'notextmatches' => 'Leigon ko nos in padavödem',
 'prevn' => 'büik {{PLURAL:$1|$1}}',
@@ -956,10 +944,8 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'nextn-title' => '{{PLURAL:$1|Sukasek|Sukaseks}} fovik $1',
 'shown-title' => 'Jonön {{PLURAL:$1|sukaseki|sukasekis}} $1 a pad',
 'viewprevnext' => 'Logön padis ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Sukaparamets',
 'searchmenu-exists' => "'''Dabinon pad labü nem: \"[[:\$1]]\" su vük at'''",
 'searchmenu-new' => "'''Jafolös padi: \"[[:\$1]]\" su vük at!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Logön padis labü foyümot at]]',
 'searchprofile-articles' => 'Ninädapads',
 'searchprofile-project' => 'Yufa e Proyegapads',
 'searchprofile-images' => 'Mödamedäd',
@@ -980,20 +966,16 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'search-interwiki-default' => 'Seks se $1:',
 'search-interwiki-more' => '(pluikos)',
 'search-relatedarticle' => 'Tefik',
-'mwsuggest-disable' => 'Nemögükön sukamobis',
 'searcheverything-enable' => 'Sukolöd in nemaspads valik',
 'searchrelated' => 'tefik',
 'searchall' => 'valik',
 'showingresults' => "Pajonons dono jü {{PLURAL:$1|sukasek '''1'''|sukaseks '''$1'''}}, primölo me nüm #'''$2'''.",
 'showingresultsnum' => "Dono pajonons {{PLURAL:$3:|sek '''1'''|seks '''$3'''}}, primölo me nüm: '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Sek: '''$1''' se '''$3'''|Seks: '''$1 - $2''' se '''$3'''}} pro '''$4'''",
-'nonefound' => "'''Noet''': Suks jenons nomiko in nemaspads te aniks. Ad demön nemaspadis valik (keninükamü bespikapads, samafomots e r.), gebolös foyümoti: ''all:'', u nemaspadi pevilöl as foyümot.",
 'search-nonefound' => 'Sukaseks nonik dabinons.',
-'powersearch' => 'Suk',
 'powersearch-legend' => 'Suk komplitikum',
 'powersearch-ns' => 'Sukön in nemaspads:',
 'powersearch-redir' => 'Lisedön lüodükömis',
-'powersearch-field' => 'Sukön',
 'powersearch-togglelabel' => 'Välön:',
 'powersearch-toggleall' => 'Valik',
 'powersearch-togglenone' => 'Nonik',
@@ -1004,7 +986,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'preferences' => 'Buükams',
 'mypreferences' => 'Buükams',
 'prefs-edits' => 'Num redakamas:',
-'changepassword' => 'Votükön letavödi',
 'prefs-skin' => 'Fomät',
 'skin-preview' => 'Büologed',
 'datedefault' => 'Buükam nonik',
@@ -1021,13 +1002,11 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'prefs-resetpass' => 'Votükön letavödi',
 'prefs-rendering' => 'Selogam',
 'saveprefs' => 'Dakipolöd',
-'resetprefs' => 'Buükams rigik',
 'restoreprefs' => 'Geikön lü paramets kösömik valik',
 'prefs-editing' => 'Redakam',
 'rows' => 'Kedets:',
 'columns' => 'Padüls:',
 'searchresultshead' => 'Suk',
-'resultsperpage' => 'Tiäds petuvöl a pad:',
 'stub-threshold' => 'Soliad pro fomätam <a href="#" class="stub">sidayümas</a> (jöläts):',
 'recentchangesdays' => 'Dels ad pajonön in votükams nulik:',
 'recentchangesdays-max' => '(maxum: {{PLURAL:$1|del|dels}} $1)',
@@ -1037,7 +1016,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
 'localtime' => 'Tim topik:',
 'timezoneuseserverdefault' => 'Gebön parametemi kösömik vüka ($1)',
 'timezoneuseoffset' => 'Votik (nunolös difi)',
-'timezoneoffset' => 'Näedot¹:',
 'servertime' => 'Tim dünanünöma:',
 'guesstimezone' => 'Benüpenolös yufü befüresodatävöm',
 'timezoneregion-africa' => 'Frikop',
@@ -1236,7 +1214,6 @@ Muton labön {{PLURAL:$1|malati|malatis}} läs $1.',
 'recentchanges-label-bot' => 'Redakam at pädunon fa el bot',
 'recentchanges-label-unpatrolled' => 'Redakam at no nog pekontrolon',
 'recentchanges-legend-newpage' => '$1 - pad nulik',
-'rcnote' => "Dono {{PLURAL:$1|binon votükam '''1'''|binons votükams '''$1'''}} lätikün {{PLURAL:$2|dela|delas '''$2'''}} lätikün, pänumädöls tü $5, $4.",
 'rcnotefrom' => "Is palisedons votükams sis '''$2''' (jü '''$1''').",
 'rclistfrom' => 'Jonön votükamis nulik, primölo tü düp $1',
 'rcshowhideminor' => '$1 votükamis pülik',
@@ -1421,7 +1398,7 @@ Lised dono jonon {{PLURAL:$1|padayümi balid|padayümis balid $1}} te lü ragiv
 'nolinkstoimage' => 'Pads nonik peyümons ad ragiv at.',
 'morelinkstoimage' => 'Logolös [[Special:WhatLinksHere/$1|yümis pluik]] ad ragiv at.',
 'linkstoimage-redirect' => '$1 (lüodükam ragiva) $2',
-'duplicatesoffile' => '{{Plural:$1|Ragiv fovik leigon|Ragivs fovik $1 leigons}} ko ragiv at ([[Special:FileDuplicateSearch/$2|nüns pluik]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Ragiv fovik leigon|Ragivs fovik $1 leigons}} ko ragiv at ([[Special:FileDuplicateSearch/$2|nüns pluik]]):',
 'sharedupload' => 'Ragiv at binon se $1 e kanon pagebön fa proyegs votik.',
 'sharedupload-desc-here' => 'Ragiv at kömon de $1 e kanon pagebön fa proyegs votik.
 Bepenot su [$2 pad bepenota ragiva] onik pajonon dono.',
@@ -1558,10 +1535,8 @@ Primanünods: ninädasot/donasot, a.s. <code>image/jpeg</code>.',
 'protectedpages' => 'Pads pejelöl',
 'protectedpages-indef' => 'Te jels nefümik',
 'protectedpages-cascade' => 'Te vatafalajels',
-'protectedpagestext' => 'Pads fovik pejelons e no kanons patöpätükön u paredakön',
 'protectedpagesempty' => 'Pads nonik pejelons',
 'protectedtitles' => 'Tiäds pejelöl',
-'protectedtitlestext' => 'Tiäds sököl no dalons pajafön:',
 'protectedtitlesempty' => 'Tiäds nonik pejelons me paramets at.',
 'listusers' => 'Gebanalised',
 'listusers-editsonly' => 'Jonön te gebanis keblünöl',
@@ -1608,9 +1583,6 @@ Ad brefükam lisedi, kanol välön lisedasoti, gebananemi, u padi tefik.',
 'allpagesto' => 'Jonön padis jü:',
 'allarticles' => 'Yegeds valik',
 'allinnamespace' => 'Pads valik ($1 nemaspad)',
-'allnotinnamespace' => 'Pads valik ($1 nemaspad)',
-'allpagesprev' => 'Büik',
-'allpagesnext' => 'Sököl',
 'allpagessubmit' => 'Jonolöd',
 'allpagesprefix' => 'Jonolöd padis labü foyümot:',
 'allpagesbadtitle' => 'Tiäd pegivöl no lonöfon, u ba labon foyümoti vüpükik u vü-vükik. Mögos i, das labon tonatis u malülis no pedälölis ad penön tiädis.',
@@ -1895,7 +1867,6 @@ Ba labol yümi dädik, u ba fomam pegepübon u pemoükon se registar.',
 'undeletebtn' => 'Sädunön moükami',
 'undeletelink' => 'logön/sädunön',
 'undeleteviewlink' => 'logön',
-'undeletereset' => 'Vagükolöd vali',
 'undeleteinvert' => 'Väli güükön',
 'undeletecomment' => 'Kod:',
 'undeletedrevisions' => 'Moükam {{PLURAL:$1|revida 1 pesädunon|revidas $1 pesädunons}}',
@@ -1974,13 +1945,11 @@ $1',
 'block' => 'Blokön gebani',
 'unblock' => 'Säblokön gebani',
 'blockip' => 'Blokön gebani',
-'blockip-title' => 'Blokön gebani',
 'blockip-legend' => 'Blokön gebani',
 'blockiptext' => 'Gebolös padi at ad blokön redakamagitäti gebananema u ladeta-IP semikas. Atos söton padunön teiko ad vitön vandalimi, e bai [[{{MediaWiki:Policy-url}}|dunalesets {{SITENAME}}]]. Penolös dono kodi patik pro blokam (a. s., mäniotolös padis pedobüköl).',
 'ipadressorusername' => 'Ladet-IP u gebananem',
 'ipbexpiry' => 'Dü',
 'ipbreason' => 'Kod:',
-'ipbreasonotherlist' => 'Kod votik',
 'ipbreason-dropdown' => '*Blokamakods suvik:
 ** Läükam nünas neverätik
 ** Moükam ninäda se pads
@@ -1995,8 +1964,6 @@ $1',
 'ipbsubmit' => 'Blokön gebani at',
 'ipbother' => 'Dul votik',
 'ipboptions' => 'düps 2:2 hours,del 1:1 day,dels 3:3 days,vig 1:1 week,vigs 2:2 weeks,mul 1:1 month,muls 3:3 months,muls 6:6 months,yel 1:1 year,laidüp:infinite',
-'ipbotheroption' => 'dul votik',
-'ipbotherreason' => 'Kod(s) votik',
 'ipbhidename' => 'Klänedön gebananemi se redakams e liseds',
 'ipbwatchuser' => 'Galädon gebana- e bespikapadis gebana at',
 'ipb-change-block' => 'Dönublokön gebani me paramets at',
@@ -2066,7 +2033,6 @@ Kosikolös ko dünigevan bevüresodik u kaenastütans olik e nunolös ones sefas
 'sorbsreason' => 'Ladet-IP olik palisedon as pladulöm maifik pö el DNSBL fa {{SITENAME}} pageböl.',
 'sorbs_create_account_reason' => 'Ladet-IP olik palisedon as pladulöm maifik pö el DNSBL fa {{SITENAME}} pageböl.
 No dalol jafön kali.',
-'cant-block-while-blocked' => 'No dalol blokön gebanis votik bi peblokol it.',
 
 # Developer tools
 'lockdb' => 'Lökofärmükön nünodemi',
@@ -2106,7 +2072,6 @@ suemolös, begö! gudiko sekis duna at büä ofövol oni.",
 
 Ön jenets at, if vilol topätükön bespikapadi u balön oni e padi ya dabinöl, ol it omutol dunön osi.",
 'movearticle' => 'Topätükolöd padi',
-'movenologin' => 'No enunädon oki',
 'movenologintext' => 'Mutol binön geban peregistaröl e [[Special:UserLogin|nunädön oli]] ad topätükön padi.',
 'movenotallowed' => 'No dalol topätükön padis.',
 'movenotallowedfile' => 'No dalol topätükön ragivis.',
@@ -2122,8 +2087,6 @@ suemolös, begö! gudiko sekis duna at büä ofövol oni.",
 'articleexists' => 'Pad labü nem at ya dabinon, u nem fa ol pevälöl no lonöfon.
 Välolös nemi votik.',
 'cantmove-titleprotected' => 'No kanol topätükön padi bi jafam tiäda nulik at penemögükon.',
-'talkexists' => "'''Pad it petopätükon benosekiko, ab bespikapad onik no petopätükon bi ya dabinon pad labü tiäd ona. Ol it balolös onis.'''",
-'movedto' => 'petöpätükon lü',
 'movetalk' => 'Topätükolöd bespikapadi tefik',
 'move-subpages' => 'Topätükön donapadis (jü $1)',
 'move-talk-subpages' => 'Topätükön donapadis (jü $1) bespikapada',
@@ -2690,15 +2653,10 @@ Nünabinets votik poklänedons.
 'exif-iimcategory-spo' => 'Spots',
 'exif-iimcategory-wea' => 'Stom',
 
-# External editor support
-'edit-externally' => 'Votükön ragivi at me nünömaprogram plödik',
-'edit-externally-help' => '(Reidolös eli [https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] [in Linglänapük] ad tuvön nünis pluik)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'valikis',
 'namespacesall' => 'valik',
 'monthsall' => 'valik',
-'limitall' => 'valikis',
 
 # Email address confirmation
 'confirmemail' => 'Fümedolös ladeti leäktronik',
@@ -2716,7 +2674,6 @@ Potanünöm egesedon: $1',
 'confirmemail_needlogin' => 'Nedol $1 ad fümedön ladeti leäktronik ola.',
 'confirmemail_success' => 'Ladet leäktronik ola pefümedon. Nu kanol nunädön oli e juitön vüki at.',
 'confirmemail_loggedin' => 'Ladeti leäktronik ola nu pefümedon.',
-'confirmemail_error' => 'Bos no eplöpon pö registaram fümedama olik.',
 'confirmemail_subject' => 'Fümedam ladeta leäktronik pro: {{SITENAME}}',
 'confirmemail_body' => 'Ek, bo ol, se ladet-IP: $1, ejafon kali: „$2‟ me ladeti leäktronik at lä {{SITENAME}}.
 
index c03d958..b5e5fa4 100644 (file)
@@ -102,7 +102,6 @@ $messages = array(
 'qbfind' => 'Etsi',
 'qbedit' => 'Muuttaa',
 'qbpageoptions' => 'Kase cülci',
-'qbspecialpages' => 'Osoobenoid cüľľed',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -337,8 +336,6 @@ Mõnõd šabloonad eväd lee lizettü.",
 'revdelete-radio-unset' => 'Eb',
 'revdelete-log' => 'Süü:',
 'revdel-restore' => 'muutu näcüvüss',
-'revdel-restore-deleted' => 'poizõttu verssijad',
-'revdel-restore-visible' => 'nähtäväd verssijad',
 'pagehist' => 'Cüľľee istori',
 'revdelete-reasonotherlist' => 'Muu süü',
 
@@ -358,10 +355,6 @@ Mõnõd šabloonad eväd lee lizettü.",
 # Search results
 'searchresults' => 'Etsüü tulõmuhsõd',
 'searchresults-title' => 'Etsü tulõmuhsõd ettsüsõnalõõ "$1"',
-'searchresulttext' => 'Lisäsoobšeńńad ettsimizessä on [[{{MediaWiki:Helppage}}|praavilacüľľellä]].',
-'searchsubtitle' => 'Etsizid fraaza \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|kõikõd cüľľed, kummad alkõa fraazaakaa "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõikõd cüľľed näütteväd cüľľelee "$1"]])',
-'searchsubtitleinvalid' => "Ettsizittä: '''$1'''",
-'notitlematches' => 'Eb löütännü miltäiss cülciä sene ettsüsõnaaka',
 'notextmatches' => 'Ettsisõnaa eb löütünnü cüľľee tekstiissä',
 'prevn' => '{{PLURAL:$1|edellinen|$1 entiiss}}',
 'nextn' => '{{PLURAL:$1|$1}} vahtiaava →',
@@ -392,14 +385,10 @@ Mõnõd šabloonad eväd lee lizettü.",
 'searchrelated' => 'sittu',
 'searchall' => 'kõik',
 'showingresultsheader' => "{{PLURAL:$5|Tuloz '''$1''' '''$3'''-ss|Tulohsõd '''$1-$2''' '''$3'''-ss}} «$4» vart",
-'nonefound' => "'''Zametšańńa''': Ettsü etsib anult osiss nimiruumii.
-Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taas juttucüľľeekaa, sablooniikaa, jne.), vai tarvittõga nimiruumi niku prefiksi.",
 'search-nonefound' => 'Cüsümühse mukaizõssi eb õõ mitäid löütettü.',
-'powersearch' => 'Etenennü ettsü',
 'powersearch-legend' => 'Etenennü ettsü',
 'powersearch-ns' => 'Etsi nimiruumõssa:',
 'powersearch-redir' => 'Spiiska mešaitussijõ',
-'powersearch-field' => 'Etsi',
 
 # Preferences page
 'preferences' => 'Koozid',
@@ -457,7 +446,6 @@ Proovvi lizät etsün alkuu ''all:'', nii ettsü etsib kõikkõõ sisältoo (taa
 'recentchanges-label-minor' => 'Kase on peeni muutuz',
 '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',
@@ -671,7 +659,6 @@ Cüľľellä $2 on spiiska viimeiziss pühcimühsiiss.',
 'undeletecomment' => 'Süü:',
 'undelete-search-submit' => 'Etsi',
 'undelete-show-file-submit' => 'Daa',
-'undelete-revisionrow' => '$1 $2 ($3) $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'Nimiruumi:',
@@ -719,7 +706,6 @@ Cüľľellä $2 on spiiska viimeiziss pühcimühsiiss.',
 'blockip' => 'Piättee cäüttijää',
 'ipbreason' => 'Süü:',
 'ipboptions' => '2 tunnia:2 hours,1 päivä:1 day,3 päivää:3 days,1 näteľi:1 week,2 näteľiä:2 weeks,1 kuu:1 month,3 kuut:3 months,6 kuut:6 months,1 voosi:1 year,iciin:infinite',
-'ipbotheroption' => 'muu',
 'ipblocklist' => 'Piäteltüd IP-adressid ja cäüttijänimed',
 'blocklist-reason' => 'Süü',
 'ipblocklist-submit' => 'Etsi',
@@ -756,8 +742,6 @@ Neill kõhtoill piättä liikuttaa vai ühissää cüľľee cäzi.",
 'pagemovedsub' => 'Liikka tuli valmessi',
 'movepage-moved' => '\'\'\'"$1" on liikuttu nimelee "$2"\'\'\'',
 'articleexists' => 'Tseeľicülci on jo eloz, vai võõbornoi nimi eb kõlpa. Õlka nii üvä ja valittsõga uusi nimi.',
-'talkexists' => "'''Cüľľee liikka tuli valmessi, a jutticülciä eb õli liikutõttu, ku uuvvõ zagolofkaa all on jo juttucülci. Juttucülcije sisälto piättä ühinessä cäzi.'''",
-'movedto' => 'liikutõttu',
 'movetalk' => 'Liikut toož juttucülci',
 'movelogpage' => 'Liikkalogi',
 'movereason' => 'Süü',
@@ -894,15 +878,10 @@ Kui faili on muutõttu, siiz detaaľid võivad õlla kahõllaizõd muutõtull fa
 'exif-iimcategory-pol' => 'Politiikka',
 'exif-iimcategory-wea' => 'Ilma',
 
-# External editor support
-'edit-externally' => 'Muuttaa sitä failia ulkopoolizõõ prograammiikaa.',
-'edit-externally-help' => '(Kattsoga [https://www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'koko istori',
 'namespacesall' => 'kõik',
 'monthsall' => 'kõik',
-'limitall' => 'kõik',
 
 # action=purge
 'confirm_purge_button' => 'OK',
index 9282da1..13a30b2 100644 (file)
@@ -49,22 +49,21 @@ $messages = array(
 'tog-hidepatrolled' => 'Käkiq perämäidsi muutmiisi nimekirän ärq muutmisõq, miä ommaq perräkaemisnimekirän',
 'tog-newpageshidepatrolled' => 'Käkiq vahtsidõ lehti nimekirän ärq ülekaeduq leheq',
 'tog-extendwatchlist' => 'Laendaq perräkaemisnimekirjä, et nätäq kõiki muutmiisi, mitte õnnõ kõgõ perämäidsi',
-'tog-usenewrc' => 'Laendõduq perämädseq muutmisõq (vaia JavaScripti)',
+'tog-usenewrc' => 'Sordiq viimädseq muutmisõq ja muutmisnimekirän leheküle perrä',
 'tog-numberheadings' => 'Päälkirjo automaatnummõrdus',
-'tog-showtoolbar' => 'Näütäq toimõndusõ riistakasti',
-'tog-editondblclick' => 'Artiklidõ toimõndaminõ topõltklõpsu pääle (JavaScript)',
+'tog-showtoolbar' => 'Näütäq toimõndusõ tüüriistaripa',
+'tog-editondblclick' => 'Toimõndaq artikliid topõltklõpsu pääle',
 'tog-editsection' => 'Lupaq lõikõ toimõndaq [toimõndaq]-linkõga',
-'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga <br /> lõigu päälkirä pääl (JavaScript)',
+'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga lõigu päälkirä pääl',
 'tog-showtoc' => 'Näütäq sisukõrda (rohkõmb ku kolmõ vaihõpäälkiräga lehile)',
 'tog-rememberpassword' => 'Salasõna miildejätmine tulõvaidsis kõrros (kõgõ inämb $1 {{PLURAL:$1|pääväs|pääväs}})',
-'tog-watchcreations' => 'Panõq mu luuduq leheq mu perräkaemisnimekirjä',
-'tog-watchdefault' => 'Kaeq vahtsidõ ja muudõtuidõ artiklidõ perrä',
-'tog-watchmoves' => 'Panõq mu ümbrenõstõduq leheküleq mu perräkaemisnimekirjä',
+'tog-watchcreations' => 'Panõq muq luuduq leheq ja üleslaadiduq teedüstüq muq perräkaemisnimekirjä',
+'tog-watchdefault' => 'Panõq perräkaemisnimekirjä muq muudõduq leheq ja teedüstüq',
+'tog-watchmoves' => 'Panõq muq ümbrenõstõduq leheq ja teedüstüq muq perräkaemisnimekirjä',
 'tog-watchdeletion' => 'Panõq mu kistutõduq leheküleq mu perräkaemisnimekirjä',
 'tog-minordefault' => 'Märgiq kõik parandusõq vaikimiisi väikeisis paranduisis',
 'tog-previewontop' => 'Näütäq proovikaehust inne, mitte perän toimõnduskasti',
 'tog-previewonfirst' => 'Näütäq edimädse toimõndusõ aigo proovikaehust',
-'tog-nocache' => 'Pästku-i lehekülgi võrgokaeja vaihõmällo',
 'tog-enotifwatchlistpages' => 'Saadaq mullõ e-kiri, ku muq perräkaetavat lehte vai teedüstüt muudõtas',
 'tog-enotifusertalkpages' => 'Saadaq mullõ e-kiri, ku mu arotuslehte muudõtas',
 'tog-enotifminoredits' => 'Saadaq mullõ e-kiri ka lehti ja failõ väikeisi muutmiisi kotsilõ',
@@ -72,7 +71,7 @@ $messages = array(
 'tog-shownumberswatching' => "Näütäq, ku pall'o pruukjit taa lehe perrä kaes",
 'tog-oldsig' => 'Parhillanõ alakirotus:',
 'tog-fancysig' => 'Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)',
-'tog-uselivepreview' => 'Pruugiq kipõkaehust (JavaScript) (proomi)',
+'tog-uselivepreview' => 'Pruugiq õkvakipõkaehust (proomivõimalus)',
 'tog-forceeditsummary' => 'Annaq teedäq, ku olõ-i kirotõt kokkovõtõt',
 'tog-watchlisthideown' => 'Näüdäku-i perräkaemisnimekirän mu hindä toimõnduisi',
 'tog-watchlisthidebots' => 'Näüdäku-i perräkaemisnimekirän robotidõ toimõnduisi',
@@ -84,6 +83,8 @@ $messages = array(
 'tog-diffonly' => 'Näüdäku-i lahkominekide lehe all lehe täüt sissu',
 'tog-showhiddencats' => 'Näütäq käkitüid katõgoorijit',
 'tog-norollbackdiff' => 'Päält tagasivõtmist näüdäku-i lahkominekiid',
+'tog-useeditwarning' => 'Hoiadaq minno, ku ma lääq lehe päält ärq ilma ummi muutmiisi ärq pästmäldä',
+'tog-prefershttps' => 'Pruugiq nimega sisseminemises kõgõ kaidsõtut ütistüst',
 
 'underline-always' => 'Kõgõ',
 'underline-never' => 'Ei kunagi',
@@ -147,6 +148,18 @@ $messages = array(
 'oct' => 'rehek',
 'nov' => 'märtek',
 'dec' => 'jouluk',
+'january-date' => '$1. vahtsõaastakuu päiv',
+'february-date' => '$1. radokuu päiv',
+'march-date' => '$1. urbõkuu päiv',
+'april-date' => '$1. mahlakuu päiv',
+'may-date' => '$1. lehekuu päiv',
+'june-date' => '$1. piimäkuu päiv',
+'july-date' => '$1. hainakuu päiv',
+'august-date' => '$1. põimukuu päiv',
+'september-date' => '$1. süküskuu päiv',
+'october-date' => '$1. rehekuu päiv',
+'november-date' => '$1. märtekuu päiv',
+'december-date' => '$1. joulukuu päiv',
 
 # Categories related messages
 'pagecategories' => '{{PLURAL:$1|Katõgooria|Katõgooriaq}}',
@@ -172,6 +185,7 @@ $messages = array(
 'newwindow' => '(tulõ vallalõ vahtsõn aknõn)',
 'cancel' => 'Jätäq katski',
 'moredotdotdot' => 'Viil...',
+'morenotlisted' => 'Seo nimekiri olõ-õi tävveline.',
 'mypage' => 'Muq lehekülg',
 'mytalk' => 'Arotus',
 'anontalk' => 'Seo puutri võrgoaadrõsi arotus',
@@ -184,7 +198,6 @@ $messages = array(
 'qbedit' => 'Toimõndaq',
 'qbpageoptions' => 'Leheküle säädmine',
 'qbmyoptions' => 'Mu säädmiseq',
-'qbspecialpages' => 'Tallitusleheküleq',
 'faq' => 'Sagõhõhe küsüdüq küsümiseq',
 'faqpage' => 'Project:KKK',
 
@@ -195,7 +208,7 @@ $messages = array(
 'vector-action-protect' => 'Kaidsaq',
 'vector-action-undelete' => 'Tiiq tagasi',
 'vector-action-unprotect' => 'Muudaq kaidsõt',
-'vector-simplesearch-preference' => 'Lupaq tävvendedüid otsmispakmiisi (õnnõ Vektori-kujundusõn)',
+'vector-simplesearch-preference' => 'Lupaq lihtsüstedüt otsmisripa (õnnõ Vektor-kujondusõn)',
 'vector-view-create' => 'Luuq',
 'vector-view-edit' => 'Toimõndaq',
 'vector-view-history' => 'Näütäq aoluku',
@@ -205,6 +218,7 @@ $messages = array(
 'namespaces' => 'Nimeruumiq',
 'variants' => 'Tõõsõndiq',
 
+'navigation-heading' => 'Juhtmisvaliguq',
 'errorpagetitle' => 'Viga',
 'returnto' => 'Tagasi lehe manoq $1.',
 'tagline' => 'Läteq: {{SITENAME}}',
@@ -226,6 +240,7 @@ $messages = array(
 'create-this-page' => 'Luuq seo leht',
 'delete' => 'Kistudaq ärq',
 'deletethispage' => 'Kistudaq seo artikli ärq',
+'undeletethispage' => 'Tiiq seo leht tagasi',
 'undelete_short' => 'Võtaq tagasi {{PLURAL:$1|üts muutminõ|$1 muutmist}}',
 'viewdeleted_short' => 'Kaeq {{PLURAL:$1|ütte|$1}} kistutõdut redaktsiooni',
 'protect' => 'Kaidsaq',
@@ -242,7 +257,7 @@ $messages = array(
 'articlepage' => 'Artiklilehekülg',
 'talk' => 'Arotus',
 'views' => 'Kaemisõq',
-'toolbox' => 'Tüüriistakast',
+'toolbox' => 'Tüüriistaq',
 'userpage' => 'Pruukjalehekülg',
 'projectpage' => 'Tallituslehekülg',
 'imagepage' => 'Näütäq teedüstülehte',
@@ -272,14 +287,14 @@ $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).
 'aboutsite' => '{{SITENAME}} tutvustus',
 'aboutpage' => 'Project:Pääteedüs',
-'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä.',
+'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä, ku olõ-õi tõisildõ üteld.',
 'copyrightpage' => '{{ns:project}}:Tegijäõigusõq',
 'currentevents' => 'Miä sünnüs',
 'currentevents-url' => 'Project:Miä sünnüs',
 'disclaimers' => 'Hoiatuisi',
 'disclaimerpage' => 'Project:Üledseq hoiatusõq',
 'edithelp' => 'Toimõndamisoppus',
-'helppage' => 'Help:Oppus',
+'helppage' => 'Help:Sisukõrd',
 'mainpage' => 'Pääleht',
 'mainpage-description' => 'Pääleht',
 'policy-url' => 'Project:Säädüseq',
@@ -298,6 +313,10 @@ $1",
 'ok' => 'Hää külh',
 'retrievedfrom' => 'Vällä otsit teedüskogost "$1"',
 'youhavenewmessages' => 'Sul om $1 ($2).',
+'youhavenewmessagesfromusers' => 'Sullõ om $1 {{PLURAL:$3|ütelt|$3}} pruukjalt ($2).',
+'youhavenewmessagesmanyusers' => "Sullõ om $1 pall'odõlt pruukjilt ($2).",
+'newmessageslinkplural' => '{{PLURAL:$1|vahtsõnõ sõnnom|999=vahtsit sõnomit}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|viimäne muutminõ|999=viimädseq muutmisõq}}',
 'youhavenewmessagesmulti' => 'Sullõ om vahtsit sõnomit lehe pääl $1',
 'editsection' => 'toimõndaq',
 'editold' => 'toimõndaq',
@@ -321,6 +340,8 @@ $1",
 'page-rss-feed' => '$1 (RSS-söödüs)',
 'page-atom-feed' => '$1 (Atom-söödüs)',
 'red-link-title' => '$1 (säänest lehte olõ-i)',
+'sort-descending' => 'Panõq alanõvahe järekõrda',
+'sort-ascending' => 'Panõq nõsõvahe järekõrda',
 
 # Short words for each namespace, by default used in the namespace tab in monobook
 'nstab-main' => 'Artikli',
@@ -347,6 +368,12 @@ Olõmanolõvaq tallitusleheküleq ommaq löüdäq leheküle päält [[Special:Sp
 # General errors
 'error' => 'Viga',
 'databaseerror' => 'Teedüskogo viga',
+'databaseerror-text' => "Teedüskogost perräküsümise man oll' viga.
+Viga või ollaq tarkvaran.",
+'databaseerror-textcl' => "Teedüskogost perräküsümise man oll' viga.",
+'databaseerror-query' => 'Perräküsümine: $1',
+'databaseerror-function' => 'Ülesannõq: $1',
+'databaseerror-error' => 'Viga: $1',
 'laggedslavemode' => 'Hoiatus: Taa lehe pääl pruugi-i ollaq perämäidsi muutmiisi.',
 'readonly' => 'Teedüskogo kirotuskaitsõ all',
 'enterlockreason' => 'Kirodaq lukkupandmisõ põhjus ja ligikaudnõ vallalõvõtmisõ aig',
@@ -364,6 +391,8 @@ Annaq taa lehe aadrõs viki [[Special:ListUsers/sysop|ülevänpidäjäle]].',
 'readonly_lag' => 'Teedüskogo panti automaatsõhe kinniq, et kõik teedüskogoserveriq saasiq kätte kõik värskiq muutmisõq',
 'internalerror' => 'Sisemäne viga',
 'internalerror_info' => 'Viga: $1',
+'fileappenderrorread' => 'Teedüstüt "$1" saa-as manopandmisõ aol lukõq.',
+'fileappenderror' => 'Teedüstüt "$1" saa-as manoq pandaq teedüstüle "$2".',
 'filecopyerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" kopidaq.',
 'filerenameerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" ümbre nimetäq.',
 'filedeleteerror' => 'Teedüstüt nimega "$1" saa-i ärq kistutaq.',
@@ -375,22 +404,24 @@ Annaq taa lehe aadrõs viki [[Special:ListUsers/sysop|ülevänpidäjäle]].',
 'badarticleerror' => 'Taad tallitust saa ei seo leheküle pääl tetäq.',
 'cannotdelete' => 'Lehekülge vai pilti "$1" saa ei ärq kistutaq. 
 Või-ollaq kiäki tõõnõ jo kistut\' taa ärq.',
+'cannotdelete-title' => 'Lehekülge "$1" saa-ai ärq kistutaq',
 'badtitle' => 'Viganõ päälkiri',
 'badtitletext' => "Küsüt artiklipäälkiri oll' kas viganõ, tühi vai sis
 võlssi näüdät kiili- vai wikidevaihõlinõ päälkiri.",
-'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Järgmäne teedüs om puhvõrdõt ja om viimäte muudõt $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb. 
+Puhvrin om {{PLURAL:$1|üts tullõm|$1 tulõmit}}.',
+'perfcachedts' => 'Järgmõne teedüs om vaihõmälon. Viimäne vahtsõndamisaig: $2, kell $3. Puhvrin om kooniq {{PLURAL:$4|üts tullõm|$4 tulõmit}}.',
 'querypage-no-updates' => 'Taad lehe teedüst parhilla värskis ei tetäq.',
-'wrong_wfQuery_params' => 'Võlss suurusõq tallitusõlõ wfQuery()<br />
-Tallitus: $1<br />
-Perräküsümine: $2',
 'viewsource' => 'Kaeq lätteteksti',
+'viewsource-title' => 'Lehe $1 lätteteksti kaeminõ',
 'actionthrottled' => 'Tallitusõ kibõhus piirõt',
 'actionthrottledtext' => "Taa tallitusõ mitmit kõrdo tegemine om prahipandjidõ peräst ärq keelet. Olõt taad lühkü ao seen pall'o hulga tennüq. Prooviq veidükese ao peräst vahtsõst.",
-'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt.',
+'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt, taad saa-ai muutaq.',
 'viewsourcetext' => 'Võit kaiaq ja kopidaq taa lehe lättekoodi:',
-'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq.",
-'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüüriista [//translatewiki.net/wiki/Main_Page?setlang=fiu-vro translatewiki.net].",
+'viewyourtext' => "Saat kaiaq ja kopidaq noidõ muutmiisi lätteteksti, miä sa seo lehe pääle '''esiq''' tennüq olõt:",
+'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq. 
+Ku tahat tetäq ümbrepandmiisi (midä pruukvaq kõik vikiq) pruugiq tuus MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
+'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
 'cascadeprotected' => 'Taa leht om kirotuskaidsõt, selle et taa {{PLURAL:$1|kuulus alanolõvidõ kaidsõtuidõ lehti hulka|kuulus alanolõvidõ kaidsõtuidõ lehti hulka}}:
 $2',
 'namespaceprotected' => "Sul olõ-i lubat toimõndaq nimeruumi '''$1''' lehti.",
@@ -426,6 +457,7 @@ Tähelepandmisõs: niikavva, ku sa olõ-i tühäs tennüq uma võrgokaeja vaihõ
 'createaccount' => 'Tiiq pruukjanimi ärq',
 'gotaccount' => "Ku sul jo om uma pruukjanimi, sis '''$1'''.",
 'gotaccountlink' => 'võit nimega sisse minnäq',
+'userlogin-resetlink' => 'Kas olõt uma salasõna ärq unõhtanuq?',
 'createaccountmail' => 'e-postiga',
 'createaccountreason' => 'Põhjus:',
 'badretype' => 'Kirotõduq salasõnaq ei klapiq kokko.',
@@ -445,7 +477,7 @@ Kaeq kiräpilt üle vai [[Special:UserLogin/signup|luuq vahtsõnõ pruukjanimi]]
 'wrongpassword' => 'Kirotõt võlss salasõna. Prooviq vahtsõst.',
 'wrongpasswordempty' => 'Salasõna tohe-i tühi ollaq.',
 'passwordtooshort' => "Salasõna om viganõ vai pall'o lühkü. Taan piät olõma vähämbält {{PLURAL:$1|1 märk|$1 märki}} ja taa tohe-i ollaq sama, miä su pruukjanimi.",
-'mailmypassword' => 'Saadaq mullõ e-postiga vahtsõnõ salasõna',
+'mailmypassword' => 'Vahtsõndaq umma salasõnna',
 'passwordremindertitle' => '{{SITENAME}} salasõna miildetulõtus',
 'passwordremindertext' => 'Kiäki (arvadaq saq esiq, puutri võrgonummõr $1),
 pallõl\' vahtsõt sisseminegi salasõnna {{SITENAME}} ($4) jaos.
@@ -480,7 +512,7 @@ Oodaq vähä inne ku proovit vahtsõst.",
 'loginlanguagelabel' => 'Kiil: $1',
 
 # Change password dialog
-'resetpass' => 'Muudaq salasõnna',
+'changepassword' => 'Muudaq salasõnna',
 'resetpass_announce' => 'Sa lätsit sisse e-postiga saadõdu aotlidsõ koodiga. Kõrdapiten sisseminekis tulõ sul siin tetäq hindäle  vahtsõnõ salasõna:',
 'resetpass_text' => '<!-- Kirodaq siiäq -->',
 'resetpass_header' => 'Muudaq pruukjanime salasõnna',
@@ -502,7 +534,7 @@ Või-ollaq olõt jo uma salasõna ärq muutnuq vai küsünüq vahtsõ aotlidsõ
 'bold_tip' => 'Paks kiri',
 'italic_sample' => 'Liuhkakiri',
 'italic_tip' => 'Liuhkakiri',
-'link_sample' => 'Lingitäv päälkiri',
+'link_sample' => 'Lingi päälkiri',
 'link_tip' => 'Siselink',
 'extlink_sample' => 'http://www.example.com Lingi nimi',
 'extlink_tip' => 'Välislink (unõhtagu-i ette pandaq http://)',
@@ -583,6 +615,9 @@ Ku sa johtuq siiäq kogõmaldaq, sis klõpsaq võrgokaeja '''Tagasi'''-nuppi.",
 'noarticletext' => 'Seo leht om parlaq tühi.
 Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]]  tõisi lehti päält vai
 <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo] vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduolõva leheküle esiq luvvaq]</span>.',
+'noarticletext-nopermission' => 'Seo lehe pääl olõ-õi parlaq teksti.
+Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo]</span>, a sul olõ-õi õigust seod lehte alostaq.',
 'userpage-userdoesnotexist' => 'Pruukjanimme "<nowiki>$1</nowiki>" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.',
 'userpage-userdoesnotexist-view' => 'Pruukjanimme "$1" olõ-õi kirjä pant.',
 'clearyourcache' => "'''Panõq tähele:''' perän pästmist piät muutmiisi nägemises uma võrgokaeja vaihõmälo tühäs tegemä. '''Mozillal / Firofoxil / Safaril''' hoiaq all nõstmisnuppi ''Shift'' ja vaodaq ''Reload'' vai ''Ctrl-R'' (Macil ''Command-R''); Konqueroril vaodaq ''Reload'' vai ''F5''. Operal puhastaq vaihõmälo ja võtaq valikust ''Tools → Preferences''. Internet Exploreril hoiaq ''Ctrl'' ja vaodaq ''Refresh'' vai vaodaq  ''ctrl-f5''.",
@@ -593,7 +628,8 @@ Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]]  tõisi lehti päält
 'userinvalidcssjstitle' => "'''Miildetulõtus:''' Olõ-i stiili nimega \"\$1\". Piäq meelen, et pruukja säedüq .css- and .js-leheq piät nakkama väiku algustähega.",
 'updated' => '(Värskis tett)',
 'note' => "'''Miildetulõtus:'''",
-'previewnote' => "'''Taa om õnnõ proovikaehus; muutmisõq olõ-i pästedüq!'''",
+'previewnote' => "'''Seo om õnnõ proovikaehus!''' 
+Suq tettüq muutmisõq olõ-õi viil pästedüq!",
 'previewconflict' => "Taa proovikaehus näütäs, kuis ülembädsen toimõtuskastin ollõv tekst' päält pästmist vällä nägemä nakkas.",
 'session_fail_preview' => "'''Annaq andis! Su toimõndust saa-s pästäq, selle et su tüükõrra teedüs om kaoma lännüq. Olõq hää, proomiq viilkõrd. Ku tuust olõ-i kassu, proomiq nii, et läät nime alt vällä ja sis jälq tagasi sisse.'''",
 'session_fail_preview_html' => "'''Annaq andis, mi saa-i tallitaq su toimõndust, selle et toimõnduskõrra teedüs om kaoma lännüq.'''
@@ -637,13 +673,19 @@ Võit toimõndaq olõmanolõvit lehti vai [[Special:UserLogin|minnäq nimega sis
 'permissionserrorstext-withaction' => 'Sul olõ-õi lubat {{lcfirst:$2}} {{PLURAL:$1|järgmädsel põhjusõl|järgmäidsil põhjuisil}}:',
 'recreate-moveddeleted-warn' => "'''Hoiatus: Sa proovit vahtsõst luvvaq lehte, miä om ärq kistutõt.'''
 
-Kas tahat taad lehte tõtõstõ toimõndaq? Kaeq ka sissekirotust seo lehe ärqkistutamisõ kotsilõ:",
+Märgiq perrä, kas tahat taad lehte tõtõstõ luvvaq. 
+Tan ommaq nätäq seo lehe innembädseq ärqkistutamisõq ja tõistõ paika pandmisõq:",
+'moveddeleted-notice' => 'Seo leht om ärq kistutõt.
+Tan om lehe kistutamiisi ja tõistõ paika pandmiisi nimekiri.',
 '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',
+'post-expand-template-argument-warning' => "'''Hoiatus:''' Seo lehe pääl om näüdüs, mil vähämbält üts muutuja om määrät pall'o suurõs.
+Sääntseq muutujaq ommaq vaihõlõ jätedüq.",
+'post-expand-template-argument-category' => 'Leheq, kon om näüdüsside seen vaihõlõjätetüisi muutujit',
 
 # "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.",
@@ -676,8 +718,8 @@ Seletüs: (viim) = lahkominegiq viimätsest kujost,
 (minev) = lahkominegiq minevädsest kujost, ts = väiku (tsill'okõnõ) muutminõ",
 'history-fieldset-title' => 'Kaeq muutmiisi aoluku',
 'history-show-deleted' => 'Õnnõ kistutõduq',
-'histfirst' => 'Edimädseq',
-'histlast' => 'Viimädseq',
+'histfirst' => 'Kõgõ vanõmbaq',
+'histlast' => 'Kõgõ vahtsõmbaq',
 'historysize' => '({{PLURAL:$1|1 bait|$1 baiti}})',
 'historyempty' => '(tühi)',
 
@@ -719,8 +761,6 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'revdelete-success' => "'''Kujo nättävüs paika säet.'''",
 'logdelete-success' => "'''Muutmiisi nättävüs paika säet.'''",
 'revdel-restore' => 'Muudaq nägemist',
-'revdel-restore-deleted' => 'ärqkistutõduq muutusõq',
-'revdel-restore-visible' => 'nätäq muutusõq',
 'pagehist' => 'Leheküle aolugu',
 
 # History merging
@@ -736,20 +776,16 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'revertmerge' => 'Lüüq jälki lahko',
 
 # Diffs
-'history-title' => '"$1" muutmiisi nimekiri',
+'history-title' => 'Lehekülje "$1" muutmiisi aolugu',
 'lineno' => 'Rida $1:',
 'compareselectedversions' => 'Võrdõlõq valituid kujjõ',
 'editundo' => 'võtaq tagasi',
-'diff-multi' => '(Kujjõ vaihõl {{PLURAL:$1|üts näütämäldä muutminõ|$1 näütämäldä muutmist}}.)',
+'diff-multi' => '(Naidõ kujjõ vaihõl om {{PLURAL:$1|üts toimõndus|$1 kujjo, miä ommaq {{PLURAL:$2|üte pruukja tettüq|$2 esiq pruukja tettüq}}}}.)',
 
 # Search results
-'searchresults' => 'Otsmisõ tulõmusõq',
+'searchresults' => 'Otsmisõ tulõmiq',
 'searchresults-title' => 'Otsmisõ "$1" tulõmiq',
-'searchresulttext' => 'Lisateedüst otsmisõ kotsilõ kaeq [[{{MediaWiki:Helppage}}|{{SITENAME}} otsmisoppusõst]].',
-'searchsubtitle' => 'Sa otsõt fraasi "[[:$1]]" ([[Special:Prefixindex/$1|kõik kiräkotussõga "$1" päälenakkajaq leheq]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|kõik leheq, kon om linke artiklilõ "$1"]])',
-'searchsubtitleinvalid' => 'Otsminõ "$1"',
 'titlematches' => "Artiklipäälkir'ost löüt",
-'notitlematches' => "Artiklipäälkir'ost es lövväq",
 'textmatches' => 'Artiklitekstest löüt',
 'notextmatches' => 'Artiklitekstest es lövväq',
 'prevn' => '← {{PLURAL:$1|mineväne|$1 mineväst}}',
@@ -758,6 +794,7 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'nextn-title' => '{{PLURAL:$1|Järgmäne tulõmus|Järgmädseq $1 tulõmust}}',
 'shown-title' => 'Näütäq lehe kotsilõ $1 {{PLURAL:$1|tulõmus|tulõmust}}',
 'viewprevnext' => 'Näütäq ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Lehekülg päälkiräga \"[[:\$1]]\" om olõman.''' {{PLURAL:\$2|0=|Kaeq ka tõisi otsmistulõmit.}}",
 'searchmenu-new' => "'''Luuq leht päälkiräga \"[[:\$1]]\".'''",
 'searchprofile-articles' => 'Sisuleheq',
 'searchprofile-project' => 'Abi- ja projektileheq',
@@ -778,21 +815,15 @@ Lisateedüst või ollaq [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAME
 'search-interwiki-default' => '$1 tulõmiq:',
 'search-interwiki-more' => '(viil)',
 'search-relatedarticle' => 'Otsiq samasugutsit lehti',
-'mwsuggest-disable' => 'Näüdäku-i AJAX-i soovituisi',
 'searchrelated' => 'samasugunõ',
 'searchall' => 'kõik',
 'showingresults' => "{{PLURAL:$1|'''Üts''' tulõmus|'''$1''' tulõmust}} (tulõmusõst '''$2''' pääle).",
 'showingresultsnum' => "Näüdätäs {{PLURAL:$3|'''1''' tulõmus|'''$3''' tulõmust}} tulõmusõst #'''$2''' pääle.",
 'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st vastussõst|Vastusõq '''$1–$2''' '''$3'''-st}} perräküsümisele '''$4'''",
-'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:',
 'powersearch-redir' => 'Loeq üles ümbresaatmisõq',
-'powersearch-field' => 'Otsiq',
 'search-external' => 'Väline otsminõ',
 'searchdisabled' => "{{SITENAME}} otsminõ parhillaq ei tüütäq. Niikavva, ku otsminõ jälq tüüle saa, võit pruukiq otsmisõs alanolõvat Google'i otsikasti, a näide teedüs {{SITENAME}} sisust pruugi-i ollaq alasi kõgõ värskimb.",
 
@@ -800,7 +831,6 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
 'preferences' => 'Säädmine',
 'mypreferences' => 'Säädmiseq',
 'prefs-edits' => 'Tõimõndamiisi arv:',
-'changepassword' => 'Muudaq salasõnna',
 'prefs-skin' => 'Vällänägemine',
 'skin-preview' => 'Kaeminõ',
 'datedefault' => 'Ütskõik',
@@ -812,19 +842,16 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
 'prefs-watchlist-edits' => 'Perräkaemisnimekirän näüdätävide muutuisi hulk:',
 'prefs-misc' => 'Muuq säädmiseq',
 'saveprefs' => 'Pästäq säädmiseq ärq',
-'resetprefs' => 'Võtaq säädmiseq tagasi',
 'prefs-editing' => 'Toimõnduskasti suurus',
 'rows' => 'Rito',
 'columns' => 'Tulpõ',
 'searchresultshead' => 'Otsminõ',
-'resultsperpage' => 'Tulõmuisi leheküle kotsilõ',
 'stub-threshold' => '<a href="#" class="stub">Kehväkese lehe</a> näütämispiir (baidõn):',
 'recentchangesdays' => 'Päivi, midä näüdädäq viimätsin muutmiisin',
 'recentchangescount' => 'Päälkirjo hulk viimätsin muutmiisin',
 'savedprefs' => 'Su muutmisõq ommaq pästedüq.',
 'timezonelegend' => 'Aovüü',
 'localtime' => 'Paiklik aig',
-'timezoneoffset' => 'Aovaheq',
 'servertime' => 'Serveri aig',
 'guesstimezone' => 'Võtaq aig võrgokaejast',
 'allowemail' => 'Lupaq tõisil pruukjil mullõ e-posti saataq',
@@ -844,7 +871,9 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
 Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
 'email' => 'e-posti aadrõs',
 'prefs-help-realname' => "* <strong>Peris nimi</strong> (piä-i kirotama): ku taa teedäq annat, sis pruugitas taad pruukjanime asõmõl lehekülgi tegijide nimekir'on.",
-'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa tõisil pruukjil sullõ kirotaq ilma su aadrõssit nägemäldäq. Taast om sis kah kassu, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa sul telliq vahtsõ salasõna, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email-others' => 'Nii saavaq ka tõõsõq pruukjaq sullõ kirotaq lingi kaudu su arotuslehe pääl
+ilma, et nä näesiq suq e-posti-aadrõssit.',
 'prefs-help-email-required' => 'E-postiaadrõs piät olõma.',
 
 # User rights
@@ -940,12 +969,11 @@ Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
 'recentchanges-label-minor' => 'Taa om väiku parandus',
 'recentchanges-label-bot' => "Seo muutmisõ tekk' robot",
 'recentchanges-label-unpatrolled' => 'Seod muutmist olõ-õi viil üle kaet',
-'rcnote' => 'Tan ommaq {{PLURAL:$1|üts muutus|$1 viimäst muutmist}}, miä ommaq tettüq {{PLURAL:$2|üte viimädse päävä|$2 viimädse päävä}} seen (kuupääväst $5, $4 lugõma naatõn).',
 'rcnotefrom' => "Tan ommaq muutmisõq kuupääväst '''$2''' pääle (näüdätäs kooniq '''$1''' muutmist).",
 'rclistfrom' => 'Näütäq muutmiisi kuupääväst $1 pääle',
 'rcshowhideminor' => '$1 väikuq parandusõq',
 'rcshowhidebots' => '$1 robodiq',
-'rcshowhideliu' => '$1 nimega pruukjaq',
+'rcshowhideliu' => '$1 nimega pruukjat',
 'rcshowhideanons' => '$1 nimeldä pruukjaq',
 'rcshowhidepatr' => '$1 kontrolliduq muutmisõq',
 'rcshowhidemine' => '$1 mu toimõndusõq.',
@@ -960,7 +988,7 @@ Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
 'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 perräkaejat|üts perräkaeja}}]',
 'rc_categories' => 'Õnnõ katõgoorijist (eräldedäs märgiga "|")',
 'rc_categories_any' => 'Miä taht',
-'rc-enhanced-expand' => 'Näütäq ütsikasjo (nõud JavaScripti)',
+'rc-enhanced-expand' => 'Näütäq ütsikasjo',
 'rc-enhanced-hide' => "Käkiq ütsikas'aq ärq",
 
 # Recent changes linked
@@ -1067,7 +1095,7 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'listfiles_description' => 'Seletüs',
 
 # File description page
-'file-anchor-link' => 'Pilt',
+'file-anchor-link' => 'Teedüstü',
 'filehist' => 'Teedüstü aolugu',
 'filehist-help' => "Klõpsaq kuupäävä/kelläao pääl, et nätäq määne taa teedüstü sis oll'.",
 'filehist-deleteall' => 'kistudaq kõik ärq',
@@ -1190,9 +1218,9 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'deadendpages' => 'Leheq, kon olõ-i linke',
 'deadendpagestext' => 'Nail lehil olõ-i linke tõisi viki lehti pääle.',
 'protectedpages' => 'Kaidsõduq leheq',
-'protectedpagestext' => 'Naaq leheq kaidsõtasõq ärq tõistõ paika panõkist ja muutmisõst.',
 'protectedpagesempty' => 'Olõ-i kaidsõtuid lehti.',
 'listusers' => 'Pruukjaq',
+'usercreated' => '{{GENDER:$3|Luud}} $1 kell $2',
 'newpages' => 'Vahtsõq leheküleq',
 'newpages-username' => 'Pruukjanimi:',
 'ancientpages' => 'Kõgõ vanõmbaq leheküleq',
@@ -1230,9 +1258,6 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
 'allpagesto' => 'Näütäq lehti kooni päälkiräni',
 'allarticles' => 'Kõik artikliq',
 'allinnamespace' => 'Kõik nimeruumi $1 leheq',
-'allnotinnamespace' => 'Kõik leheq, midä olõ-i nimeruumin $1',
-'allpagesprev' => 'Mineväne',
-'allpagesnext' => 'Järgmäne',
 'allpagessubmit' => 'Näütäq',
 'allpagesprefix' => 'Näütäq lehti, mink alostusõn om:',
 'allpagesbadtitle' => "Taa päälkiri oll' viganõ vai vikidevaihõlidsõ edejakuga. Tan või ollaq märke, midä tohe-i päälkir'on pruukiq.",
@@ -1247,6 +1272,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
 # Special:LinkSearch
 'linksearch' => 'Välislingiq',
 'linksearch-ok' => 'Otsminõ',
+'linksearch-line' => '$1 on lingit lehekülelt $2',
 
 # Special:ListUsers
 'listusersfrom' => 'Näütäq pruukjit alostõn:',
@@ -1347,6 +1373,7 @@ As\'a kotsilõ mano kaiaq ja küssü saat lehe päält: {{canonicalurl:{{MediaWi
 'confirmdeletetext' => 'Sa kistutat teedüskogost periselt ärq lehe vai pildi üten kõgõ timä aoluuga.
 Kinnüdäq, et sa tahat tuud tõtõstõ tetäq, et sa saat arvo, miä tuust tullaq või ja et tuu, miä sa tiit, klapis [[{{MediaWiki:Policy-url}}|sisekõrraga]].',
 'actioncomplete' => 'Tallitus valmis',
+'actionfailed' => 'Tallitus lää-äs kõrda',
 'deletedtext' => '"$1" om ärq kistutõt.
 Perämäidsi kistutuisi nimekirjä näet siist: $2.',
 'dellogpage' => 'Kistutõduq leheküleq',
@@ -1433,7 +1460,6 @@ viil olõman, naid saa tagasi tetäq niikavva ku naid olõ-i viil arhiivist ärq
 'undeletebtn' => 'Tiiq tagasi',
 'undeletelink' => 'kaeq/tiiq tagasi',
 'undeleteviewlink' => 'näütäq',
-'undeletereset' => 'Tiiq tühäs',
 'undeletecomment' => 'Kommõntaar:',
 'undeletedrevisions' => '$1 {{PLURAL:$1|kujo|kujjo}} tagasi tett',
 'undeletedrevisions-files' => '$1 {{PLURAL:$1|kujo|kujjo}} ja $2 {{PLURAL:$2|teedüstü|teedüstüt}} tagasi tett',
@@ -1451,25 +1477,28 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 # Namespace form on various pages
 'namespace' => 'Nimeruum:',
 'invert' => 'Näütäq kõiki päält validu nimeruumi',
-'blanknamespace' => '(Artikliq)',
+'blanknamespace' => '(artikliq)',
 
 # Contributions
-'contributions' => 'Pruukja kirotusõq',
+'contributions' => '{{GENDER:$1|Pruukja}} toimõndusõq',
 'contributions-title' => 'Pruukja $1 toimõndusõq',
 'mycontris' => 'Hindä kirotusõq',
-'contribsub2' => 'Pruukja "$1 ($2)" kirotusõq',
+'contribsub2' => 'Pruukja {{GENDER:$3|$1}} ($2) toimõndusõq',
 'nocontribs' => 'Sääntsit muutmiisi es lövväq.',
-'uctop' => '(kõgõ vahtsõmb)',
+'uctop' => '(parhillanõ)',
 'month' => 'Alostõn kuust (ja varrampa):',
 'year' => 'Alostõn aastagast (ja varrampa):',
 
 'sp-contributions-newbies' => 'Näütäq õnnõ vahtsidõ pruukjidõ toimõnduisi',
 'sp-contributions-newbies-sub' => 'Vahtsidõ pruukjidõ toimõndusõq',
 'sp-contributions-blocklog' => 'Kinniqpidämisnimekiri',
+'sp-contributions-uploads' => 'üleslaatmisõq',
+'sp-contributions-logs' => 'muutmisnimekiräq',
 'sp-contributions-talk' => 'arotus',
 'sp-contributions-userrights' => 'Pruukja õiguisi muutminõ',
 'sp-contributions-search' => 'Otsiq muutmiisi',
 'sp-contributions-username' => 'Puutri võrgoaadrõs vai pruukjanimi:',
+'sp-contributions-toponly' => 'Näütäq õnnõ kõgõ vahtsõmbit toimõnduisi',
 'sp-contributions-submit' => 'Otsiq',
 
 # What links here
@@ -1481,13 +1510,14 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 'nolinkshere-ns' => "Valitun nimeruumin näütä-i ütegi lehe päält linke lehe '''[[:$1]]''' pääle.",
 'isredirect' => 'ümbresaatmislehekülg',
 'istemplate' => 'pruugit näüdüssen',
-'isimage' => 'pildilink',
+'isimage' => 'teedüstülink',
 'whatlinkshere-prev' => '← {{PLURAL:$1|mineväne leht|$1 mineväst lehte}}',
 'whatlinkshere-next' => '{{PLURAL:$1|mineväne leht|$1 mineväst lehte}} →',
 'whatlinkshere-links' => '← lingiq',
 'whatlinkshere-hideredirs' => '$1 ümbresaatmisõq',
 'whatlinkshere-hidetrans' => '$1 näüdüsses pruukmisõq',
 'whatlinkshere-hidelinks' => '$1 lingiq',
+'whatlinkshere-hideimages' => 'Teedüstülingiq ($1)',
 'whatlinkshere-filters' => 'Sõglaq',
 
 # Block/unblock
@@ -1496,7 +1526,6 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 'ipadressorusername' => 'Puutri võrgoaadrõs vai pruukjanimi',
 'ipbexpiry' => 'Tähtaig',
 'ipbreason' => 'Põhjus:',
-'ipbreasonotherlist' => 'Muu põhjus',
 'ipbreason-dropdown' => "*Hariliguq kinniqpidämise põhjusõq
 ** Võlss teedüse kirotaminõ
 ** Lehti sisu ärqkistutaminõ
@@ -1511,8 +1540,6 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 'ipbsubmit' => 'Piäq taa aadrõs kinniq',
 'ipbother' => 'Muu tähtaig',
 'ipboptions' => '2 tunni:2 hours,1 päiv:1 day,3 päivä:3 days,1 nätäl:1 week,2 nädälälit:2 weeks,1 kuu:1 month,3 kuud:3 months,6 kuud:6 months,1 aastak:1 year,igävene:infinite',
-'ipbotheroption' => 'Muu tähtaig',
-'ipbotherreason' => 'Muu põhjus',
 'ipbhidename' => 'Käkiq pruukjanimi vai puutri võrgoaadrõs ärq kinniqpidämis-, toimõndus-, ja pruukjanimekiräst',
 'badipaddress' => 'Puutri võrgoaadrõs om võlssi kirotõt.',
 'blockipsuccesssub' => 'Kinniqpidämine läts kõrda',
@@ -1541,7 +1568,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
 'blocklink' => 'piäq kinniq',
 'unblocklink' => 'võtaq kinniqpidämine maaha',
 'change-blocklink' => 'muudaq kinniqpidämist',
-'contribslink' => 'kirotusõq',
+'contribslink' => 'toimõndusõq',
 'autoblocker' => 'Olõt automaatsõhe kinniq peet, selle et jaat puutri võrgoaadrõssit pruukjaga $1. Kinniqpidämise põhjus: $2.',
 'blocklogpage' => 'Kinniqpidämiisi nimekiri',
 'blocklogentry' => 'pidi kinniq pruukja vai puutri võrgoaadrõsi "[[$1]]". Kinniqpidämise tähtaig $2 $3',
@@ -1601,7 +1628,6 @@ inne, ku midä muudat, märgiq perrä, miä tuust tullaq või.",
 
 Kui om nii, sis panõq vana arotuskülg eräle vai panõq taa kokko vahtsõ arotuskülega.",
 'movearticle' => 'Panõq artiklilehekülg tõistõ paika',
-'movenologin' => 'Sa olõ-i nimega sisse lännüq',
 'movenologintext' => 'Et lehekülge tõistõ paika pandaq, piät hindä pruukjas kirjä pandma ja [[Special:UserLogin|nimega sisse minemä]]',
 'movenotallowed' => 'Sul olõ-i lupa {{SITENAME}} lehti tõistõ paika nõstaq.',
 'newtitle' => 'Vahtsõ päälkirä ala',
@@ -1610,8 +1636,6 @@ Kui om nii, sis panõq vana arotuskülg eräle vai panõq taa kokko vahtsõ arot
 'pagemovedsub' => 'Artikli om tõistõ paika pant',
 'movepage-moved' => "'''$1 om pant nime ala $2'''",
 'articleexists' => 'Sääntse nimega artikli om jo olõman vai olõ-i lubat säänest nimme valliq. Valiq vahtsõnõ nimi.',
-'talkexists' => 'Artikli om tõistõ paika pant, a arotuslehekülge saa-s pandaq, selle et vahtsõ nime all om jo arotuskülg. Panõq arotusküleq esiq kokko.',
-'movedto' => 'Pant päälkirä ala:',
 'movetalk' => 'Panõq ka "arotus", ku saa.',
 'movelogpage' => 'Tõistõ paika pandmiisi nimekiri',
 'movelogpagetext' => 'Taa om lehti tõistõ paika pandmiisi nimekiri.',
@@ -1818,7 +1842,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 'file-info-size' => '$1 × $2 pikslit, $3, MIME-tüüp: $4',
 'file-nohires' => 'Taast terävämpä pilti olõ-i saiaq.',
 'svg-long-desc' => 'SVG-teedüstü, põhisuurus $1 × $2 pikslit, teedüstü suurus $3',
-'show-big-image' => 'Täüsterräv kujo',
+'show-big-image' => 'Algteedüstü',
 
 # Special:NewFiles
 'newimages' => 'Vahtsõq pildiq',
@@ -1839,7 +1863,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 'metadata-help' => 'Seon teedüstün om lisateedüst, miä om arvadaq peri pildinudsijast, digikaamõrast vai pilditoimõndusprogrammist. Ku teedüstüt om peräst timä tegemist muudõt, sis pruugi-i taa teedüs inämb õigõ ollaq.',
 'metadata-expand' => 'Näütäq kõiki sisuseletüisi',
 'metadata-collapse' => 'Näütäq õnnõ tähtsämbit sisuseletüisi',
-'metadata-fields' => 'Naaq riaq ommaq nätäq pildilehe pääl, ku sisuseletüse tapõl om tühi.
+'metadata-fields' => 'Naid pildi metateedüse väljo näüdätäs pildi seletüslehe vähändedün kahusõn. Ülejäänüq teedüs om vaikimiisi käkit.
 * make
 * model
 * datetimeoriginal
@@ -1852,6 +1876,12 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 * imagedescription
 * gpslatitude
 * gpslongitude
+* gpsaltitude
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
 * gpsaltitude',
 
 # Exif tags
@@ -2099,10 +2129,6 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 'exif-gpsdirection-t' => 'Peris tsiht',
 'exif-gpsdirection-m' => 'Magnõttsiht',
 
-# External editor support
-'edit-externally' => 'Toimõndaq taad teedüstüt välidse programmiga',
-'edit-externally-help' => '(Lisateedüst loeq [https://www.mediawiki.org/wiki/Manual:External_editors pruukmisoppusõ lehe päält])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => ', terveq aolugu',
 'namespacesall' => 'kõik',
@@ -2121,7 +2147,6 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
 'confirmemail_needlogin' => 'Uma e-postiaadrõsi kinnütämises $1.',
 'confirmemail_success' => 'Su e-postiaadrõs om no ärq kinnütet. Võit nimega sisse minnäq.',
 'confirmemail_loggedin' => 'Su e-postiaadrõs om no ärq kinnütet.',
-'confirmemail_error' => "Su e-postiaadrõsi kinnütämisega läts' midägi võlssi.",
 'confirmemail_subject' => '{{SITENAME}} e-postiaadrõsi kinnütämine',
 'confirmemail_body' => 'Kiäki, arvadaq saq esiq, lõi puutri võrgoaadrõsi $1 päält {{SITENAME}} pruukjanime $2. Ku taa om tõtõstõ suq pruukjanimi, tiiq vallalõ link: $3. Ku taa *olõ-i* suq luud pruukjanimi, sis teku-i midägi. Kinnütüskuud lätt vanas $4.',
 
@@ -2192,6 +2217,9 @@ Prooviq harilikku kaehust.',
 'watchlisttools-edit' => 'Kaeq ja toimõndaq perräkaemisnimekirjä',
 'watchlisttools-raw' => 'Toimõndaq lätteteedüstüt',
 
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Hoiatus:\'\'\' Sortmisvõti "$2" tühistäs ärq innembädse sortmisvõtmõ "$1".',
+
 # Special:Version
 'version' => 'Kujo',
 'version-version' => '(Kujo $1)',
@@ -2217,6 +2245,19 @@ Prooviq harilikku kaehust.',
 'specialpages-group-wiki' => 'Vikiteedüseq ja tüüriistaq',
 'specialpages-group-redirects' => 'Ümbrenäütämistallitusleheq',
 
+# External image whitelist
+'external_image_whitelist' => '  #Jätäq seo rida muutmalda kujo pääle<pre>
+#Panõq regulaaravaldusõ osaq (õnnõ //-märke vaihõl ollõv jago) allapoolõ
+#Naaq pandasõq vastama vikivälitside pilte internetiaadrõssidõga
+#Nuuq, miä vastasõq, näüdätäseq ku pildiq, muido näüdätäs õnnõ pildi link
+#Märgiga # päälenakkajaq riaq ommaq kommõntaariq
+#Seo tii-i vaiht suuril ja väikeisil tähil
+
+#Panõq kõik regulaaravaldusq osaq seo joonõ kotsilõ. Jätäq seo rida muutmalda</pre>',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Märkmisfiltri]]:',
+
 # New logging system
 'rightsnone' => '(olõ-i õiguisi)',
 
index ae871a3..02a29df 100644 (file)
@@ -55,6 +55,9 @@ $namespaceNames = array(
        NS_CATEGORY_TALK    => 'Categoreye_copene',
 );
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'Allpages'                  => array( 'Totes_les_pådjes' ),
        'Block'                     => array( 'Bloker', 'Blocaedje' ),
@@ -105,7 +108,6 @@ $messages = array(
 'tog-minordefault' => 'Prémete mes candjmints come mineurs',
 'tog-previewontop' => "Prévey l' årtike å dzeu del boesse d' aspougnaedje",
 'tog-previewonfirst' => "Prévey l' årtike å prumî candjmint",
-'tog-nocache' => "Èn nén eployî d' muchete pol håynaedje des pådjes",
 'tog-enotifwatchlistpages' => "M' emiler cwand ene pådje shuvowe candje",
 'tog-enotifusertalkpages' => "M' emiler cwand l' pådje di copene da minne candje",
 'tog-enotifminoredits' => "M' emiler eto po les ptits candjmints",
@@ -219,7 +221,6 @@ $messages = array(
 'qbedit' => 'Candjî',
 'qbpageoptions' => 'Cisse pådje ci',
 'qbmyoptions' => 'Mes pådjes',
-'qbspecialpages' => 'Pådjes sipeciåles',
 
 # Vector skin
 'vector-action-addsection' => 'Radjouter on sudjet',
@@ -390,9 +391,6 @@ Adon dijhoz l' a on [[Special:ListUsers/sysop|manaedjeu]], sins rovyî d' mete l
 'badtitletext' => "Li tite del pådje dimandêye n' esteut nén valide, il estet vude, oudonbén c' esteut on cron loyén eterlingaedje ou eterwiki. Ça s' pout k' il åye onk ou sacwants caracteres ki n' polèt nén esse eployîs dins les tites.",
 'perfcached' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, et ça s' pout ki ça n' soeye nén ttafwaitmint a djoû. Li muchete a-st on macsimom {{PLURAL:$1|d' on rzultat|di $1 rizultats}}.",
 'perfcachedts' => "Les dnêyes ki shuvèt c' est ene copeye e muchete, ey elle ont stî metowes a djoû pol dierin côp li $1. Li muchete a-st on macsimom {{PLURAL:$4|d' on rzultat|di $4 rizultats}}.",
-'wrong_wfQuery_params' => 'Parametes incoreks po wfQuery()<br />
-Fonccion: $1<br />
-Cweraedje: $2',
 'viewsource' => 'Vey côde sourdant',
 'viewsource-title' => 'Côde sourdant di «$1»',
 'viewsourcetext' => "Loukîz li contnou d' l’ årtike, et s’ li rcopyî si vos vloz, por vos bouter dsu foû des fyis:",
@@ -478,7 +476,7 @@ Tapez ene adresse emile sicrîte comifåt oudobén vudîz l' tchamp, s' i vs pla
 'loginlanguagelabel' => 'Lingaedje: $1',
 
 # Change password dialog
-'resetpass' => "Candjî l' sicret",
+'changepassword' => "Candjî l' sicret",
 'resetpass_announce' => "Vos vs avoz elodjî avou on scret timporaire ki vos a stî emilé.
 Por vos fini l' elodjaedje, vos dvoz defini on novea scret:",
 'resetpass_header' => "Candjî l' sicret do conte",
@@ -763,8 +761,6 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'revdelete-log' => 'Råjhon:',
 'revdelete-submit' => 'Apliker {{PLURAL:$1|al modêye tchoezeye|åzès modêyes tchoezeyes}}',
 'revdel-restore' => "candjî l' veyåvisté",
-'revdel-restore-deleted' => 'disfacêyès modêyes',
-'revdel-restore-visible' => 'veyåvès modêyes',
 'deletedhist' => 'Istwere disfacêye',
 
 # History merging
@@ -785,11 +781,7 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 # Search results
 'searchresults' => 'Rizultats do cweraedje',
 'searchresults-title' => 'Rizultats des rcwerances po « $1 »',
-'searchresulttext' => 'Po pus di racsegnes sol manire di fé des cweraedjes so {{SITENAME}}, loukîz [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Vos avoz cwerou après «'''[[:$1]]'''» ([[Special:Prefixindex/$1|totes les pådjes ki cmincèt avou «$1»]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|totes les pådjes ki loynut viè «$1»]])",
-'searchsubtitleinvalid' => 'Pol cweraedje «$1»',
 'titlematches' => 'Årtikes avou on tite ki corespond',
-'notitlematches' => 'Nol årtike avou on tite ki corespond',
 'textmatches' => 'Årtikes avou do tecse ki corespond',
 'notextmatches' => 'Nol årtike avou do tecse ki corespond',
 'prevn' => '{{PLURAL:$1|di dvant|$1 di dvant}}',
@@ -798,7 +790,6 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'nextn-title' => '{{PLURAL:$1|rizultat shuvant|$1 rizultats shuvants}}',
 'shown-title' => 'Mostrer $1 rizultat{{PLURAL:$1||s}} par pådje',
 'viewprevnext' => 'Vey ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tchuzes di cweraedje',
 'searchmenu-exists' => "'''Gn a ddja ene pådje lomêye « [[:$1]] » so ç' wiki ci'''",
 'searchmenu-new' => "'''Ahiver l' pådje \"[[:\$1]]\" so ç' wiki ci!'''",
 'searchprofile-articles' => 'Pådjes di contnou',
@@ -824,14 +815,10 @@ Les ôtes manaedjeus so {{SITENAME}} pôront todi vey li contnou catchî eyet l'
 'showingresults' => "Chal pa dzo {{PLURAL:$1|'''1''' rizultat|'''$1''' rizultats}} a pårti do limero '''$2'''.",
 'showingresultsnum' => "Chal pa dzo {{PLURAL:$3|'''1''' rizultat|'''$3''' rizultats}} a pårti do limero '''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Rizultat '''$1'''|Rizultats '''$1 - $2'''}} foû di '''$3'' po '''$4'''",
-'nonefound' => "'''Note''': li prémetowe dujhance c' est d' cweri seulmint e sacwants espåces di lomaedje.
-Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' contnou do wiki (dj' ô bén, ezès pådjes di copene, les modeles, evnd.), oudobén vos ploz mete li no d' l' espåce di lomaedje come betchete.",
 'search-nonefound' => "N' a rén di çou ki vs cweroz après",
-'powersearch' => 'Cweri',
 'powersearch-legend' => 'Pus spepieus rcweraedjes',
 'powersearch-ns' => 'Cweri ezès espåces di lomaedje:',
 'powersearch-redir' => 'Håyner les rdjiblaedjes',
-'powersearch-field' => 'Cweri',
 'powersearch-togglelabel' => 'Tchoezi:',
 'powersearch-toggleall' => 'Totafwait',
 'powersearch-togglenone' => 'Disclitchî tot',
@@ -842,7 +829,6 @@ Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' c
 'preferences' => 'Preferinces',
 'mypreferences' => 'Mes preferinces',
 'prefs-edits' => 'Nombe di candjmints:',
-'changepassword' => "Candjî l' sicret",
 'prefs-skin' => 'Pea',
 'skin-preview' => 'vey divant',
 'datedefault' => 'Nole preferince',
@@ -861,13 +847,11 @@ Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' c
 'prefs-email' => "Tchuzes d' emilaedje",
 'prefs-rendering' => 'Rivnance',
 'saveprefs' => 'Schaper les preferinces',
-'resetprefs' => 'Rimete les prémetowès valixhances',
 'restoreprefs' => 'Rimete totes les prémetowès valixhances',
 'prefs-editing' => 'Boesse di tecse',
 'rows' => 'Royes',
 'columns' => 'Colones',
 'searchresultshead' => 'Håynaedje des rzultats di cweraedje',
-'resultsperpage' => 'Nombe di responses a håyner so ene pådje',
 'recentchangesdays' => 'Nombe di djoûs po les dierins candjmints:',
 'recentchangesdays-max' => 'Macsimom $1 djoû{{PLURAL:$1||s}}',
 'recentchangescount' => 'Prémetou nombe di candjmintstites a håyner:',
@@ -876,7 +860,6 @@ Vos ploz sayî di mete «all:» pa dvant l' tecse a cweri po cweri dins tot l' c
 'localtime' => "L' eure locåle",
 'timezoneuseserverdefault' => "Epoyî l' prémetowe valixhance ($1)",
 'timezoneuseoffset' => "Ôte (dinez l' diferince d' eures)",
-'timezoneoffset' => "Diferince d' eures¹:",
 'servertime' => "L' eure sol sierveu:",
 'guesstimezone' => "Prinde d' après l' betchteu",
 'timezoneregion-africa' => 'Afrike',
@@ -1075,7 +1058,6 @@ Ciste infôrmacion serè publike po tertos.",
 'recentchanges-label-minor' => "Ci n' est k' on ptit candjmint",
 'recentchanges-label-bot' => 'Ci candjmint la a stî fwait pa on robot',
 'recentchanges-label-unpatrolled' => "Ci candjmint la n' a nén co stî patrouyî",
-'rcnote' => "Chal pa dzo {{PLURAL:$1|li dierin candjmint|les '''$1''' dierins candjmints}} {{PLURAL:$2|do dierin djoû|des '''$2''' dierins djoûs}}, disk' å $4 a $5.",
 'rcnotefrom' => "Chal pa dzo les candjmints dispoy li '''$2''' (disk' a '''$1''' di mostrés).",
 'rclistfrom' => "Mostrer les candjmints k' i gn a yeu a pårti do $1",
 'rcshowhideminor' => '$1 candjmints mineurs',
@@ -1309,10 +1291,8 @@ Asteure c' est on redjiblaedje viè [[$2]].",
 'protectedpages' => 'Pådjes protedjeyes',
 'protectedpages-indef' => "Seulmint les protedjaedje disk' a todi",
 'protectedpages-cascade' => 'Seulmint les protedjaedjes e cascåde',
-'protectedpagestext' => "Les pådjes shuvantes sont protedjeyes siconte li displaeçaedje ou l' candjmint do tecse",
 'protectedpagesempty' => 'I gn a pol moumint nole pådje sifwaitmint protedjeye.',
 'protectedtitles' => 'Tites protedjîs',
-'protectedtitlestext' => "Les tites shuvants sont protedjîs, ça fwait k' on n' pout nén ahiver ene pådje lomêye inla.",
 'protectedtitlesempty' => 'I gn a pol moumint nou tite sifwaitmint protedjî.',
 'listusers' => 'Djivêye des uzeus',
 'usereditcount' => '$1 candjmint{{PLURAL:$1||s}}',
@@ -1351,9 +1331,6 @@ Vos ploz defini l' håynaedje tot tchoezixhant ene sôre di djournå, on no d' u
 'allpagesto' => "Håyner les pådjes disk' a:",
 'allarticles' => 'Tos les årtikes',
 'allinnamespace' => 'Totes les pådjes (espåce di lomaedje $1)',
-'allnotinnamespace' => "Totes les pådjes (foû d' l' espåce di lomaedje $1)",
-'allpagesprev' => 'Di dvant',
-'allpagesnext' => 'Shuvant',
 'allpagessubmit' => 'I va',
 'allpagesprefix' => "Håyner les pådjes avou l' betchete:",
 'allpagesbadtitle' => "Li tite di pådje diné n' est nén valide oudonbén il a-st ene betchete di loyén eterlingaedje ou eterwiki. Ça s' pout k' il åye onk ou d' pus d' caracteres ki n' si polèt nén eployî dins les tites.",
@@ -1598,7 +1575,6 @@ ni pout esse veyou ki des manaedjeus.",
 'undeletebtn' => 'Rapexhî',
 'undeletelink' => 'vey/rapexhî',
 'undeleteviewlink' => 'vey',
-'undeletereset' => 'Netyî',
 'undeletecomment' => 'Råjhon:',
 'undeletedrevisions' => '{{PLURAL:$1|1 modêye|$1 modêyes}} di rapexheyes',
 'undeletedrevisions-files' => '{{PLURAL:$1|1 modêye|$1 modêyes}} et {{PLURAL:$2|1 fitchî|$2 fitchîs}} di rapexhîs',
@@ -1677,7 +1653,6 @@ stî vandalijheyes).",
 'ipbsubmit' => 'Bloker cist uzeu',
 'ipbother' => 'Ôte termene',
 'ipboptions' => '2 eures:2 hours,1 djoû:1 day,3 djoûs:3 days,1 samwinne:1 week,2 samwinnes:2 weeks,1 moes:1 month,3 moes:3 months,6 moes:6 months,1 anêye:1 year,po todi:infinite',
-'ipbotheroption' => 'ôte',
 'badipaddress' => "Nol uzeu avou ç' no la, ou adresse IP nén valide",
 'blockipsuccesssub' => 'Li blocaedje a stî comifåt',
 'blockipsuccesstext' => '«[[Special:Contributions/$1|$1]]» a stî {{GENDER:$1|bloké|blokêye}}.<br />
@@ -1755,7 +1730,6 @@ Dins ces cas la, vos dvroz displaecî l' pådje di copene al mwin, ou rcopyî
 si contnou, si vos l' vloz mete adlé l' novea no
 d' l' årtike.",
 'movearticle' => 'Displaecî di',
-'movenologin' => 'Nén elodjî',
 'movenologintext' => 'I vs fåt esse èn uzeu eredjîstré eyet esse [[Special:UserLogin|elodjî]] por vos pleur displaecî ene pådje.',
 'newtitle' => "Viè l' novea tite",
 'move-watch' => 'Shuve cisse pådje cial',
@@ -1764,8 +1738,6 @@ d' l' årtike.",
 'articleexists' => "Ene pådje egzistêye dedja avou ç' no la, oudonbén
 li no k' vos avoz tchoezi n' est nén valide.
 Tchoezixhoz è èn ôte s' i vs plait.",
-'talkexists' => "'''Li pådje leye minme a stî displaeceye comifåt, mins nén li pådje di copene, ca i gn aveut ddja ene pådje di copene k' egzistéve al novele plaece. I vs fårè copyî l' tecse del pådje di copene al mwin.'''",
-'movedto' => 'displaecî viè',
 'movetalk' => 'Displaecî li pådje di copene avou, si ça astchait.',
 'movelogpage' => 'Djournå des displaeçaedjes',
 'movelogpagetext' => "Chal pa dzo c' est ene djivêye des pådjes k' on stî displaceyes.",
@@ -2122,10 +2094,6 @@ est raptiti. Les ôtes seront catchîs.
 'exif-gpsspeed-m' => 'miles/h',
 'exif-gpsspeed-n' => 'nuks',
 
-# External editor support
-'edit-externally' => "Candjî ç' fitchî ci avou on dfoûtrin programe",
-'edit-externally-help' => "(Loukîz les [https://www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes)",
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'totafwait',
 'namespacesall' => 'tos',
@@ -2262,7 +2230,6 @@ Acertinez s' i vs plait ki vos vloz vormint rifé cisse pådje ci.",
 
 # Special:ComparePages
 'comparepages' => 'Comparer des pådjes',
-'compare-selector' => 'Comparer des modêyes di pådjes',
 'compare-page1' => 'Pådje 1',
 'compare-page2' => 'Pådje 2',
 'compare-rev1' => 'Modêye 1',
index dc3d167..0db027e 100644 (file)
@@ -44,7 +44,6 @@ $specialPageAliases = array(
        'Allpages'                  => array( 'NgatananngaPakli' ),
        'Categories'                => array( 'Mga_kaarangay' ),
        'Contributions'             => array( 'Mga_ámot' ),
-       'Disambiguations'           => array( 'Mga_pansayod' ),
        'Longpages'                 => array( 'HaglabangamgaPakli' ),
        'Mostlinked'                => array( 'Gidamo-iHinSumpay' ),
        'Movepage'                  => array( 'BalhinaAnPakli' ),
@@ -86,7 +85,6 @@ $messages = array(
 'tog-minordefault' => 'Tigamni an ngatanan nga mga pagliwat nga gudti hin default',
 'tog-previewontop' => 'Igpakita in prevista o pan-ugsa-nga-lantaw ugsa hiton pagliwat nga kahon',
 'tog-previewonfirst' => 'Igpakita in prevista o pan-ugsa-nga-lantaw ha syahan nga pagliwat',
-'tog-nocache' => 'Ayaw patiroka an mga pakli nga pamiling',
 'tog-enotifwatchlistpages' => 'Ig-e-mail ako kun may pakli o paypay ha akon gintitiman-an nga gin-iba',
 'tog-enotifusertalkpages' => 'Ig-e-mail ako kun may nagbag-o han akon pakli-himangrawon',
 'tog-enotifminoredits' => 'Ig-e-mail liwat ako hin mga gudti nga mga pagliwat hin mga pakli ngan mga paypay',
@@ -221,7 +219,6 @@ $messages = array(
 'qbedit' => 'Igliwat',
 'qbpageoptions' => 'Ini nga pakli',
 'qbmyoptions' => 'Akon mga pakli',
-'qbspecialpages' => 'Mga pinaurog nga pakli',
 'faq' => 'AGG',
 'faqpage' => 'Project:AGG',
 
@@ -441,9 +438,6 @@ Bangin mayda usa o damo nga mga agi nga diri puyde magamit ha mga titulo.',
 'perfcachedts' => 'An nasunod nga data gin-cache, ngan kataposan ginbag-o dida han $1. In maximum hin {{PLURAL:$4|usa ka resulta|$4 ka resulta}} aada hit cache.',
 'querypage-no-updates' => 'An mga kabag-ohan para hini nga pakli ha yana diri mahihimo.
 An data dini diri mahihimo nga bag-o.',
-'wrong_wfQuery_params' => 'Sayop nga mga parameter ha wfQuery()<br />
-Funsyon: $1<br />
-Kweri: $2',
 'viewsource' => 'Kitaa an ginkuhaan',
 'viewsource-title' => 'Kitaa an tinikangan para han $1',
 'actionthrottled' => 'Ginpahinay an ginbuhat',
@@ -629,7 +623,7 @@ Kun pinili mo ito ighatag, gagamiton ini paghatag hin atribusyon ha gumaramit pa
 'user-mail-no-body' => 'Nagsend hin email bisan waray o diri resonably kahalipot kaduro nga sulod.',
 
 # Change password dialog
-'resetpass' => 'Igliwat an tigaman-pagsulod',
+'changepassword' => 'Igliwan an tigaman-pagsulod',
 'resetpass_announce' => 'Nakalog-in ka hit temporaryo nga ginemail nga kodigo.
 Para mahuman paglalog-on, kinahanglan mo magbutang hin bag-o nga tigaman-panakob dinhi:',
 'resetpass_header' => 'Igliwan an akawnt nga tigaman-pagsulod',
@@ -896,8 +890,6 @@ An mga detalye in mabibilngan ha [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'rev-delundel' => 'igpakita/igtago',
 'rev-showdeleted' => 'igpakita',
 'revisiondelete' => 'Pagpara/pagtanggal han pagpara nga mga rebisyon',
-'revdelete-nologtype-title' => 'Waray ginhatag nga klase hit talaan',
-'revdelete-nologid-title' => 'Sayop nga log entry',
 'revdelete-show-file-confirm' => 'Sigurado ka nga gusto mo makita an ginpara nga pagliwat han file "<nowiki>$1</nowiki>" tikang $2 ha $3?',
 'revdelete-show-file-submit' => 'Oo',
 'revdelete-hide-text' => 'Tagoon an rebisyon han teksto',
@@ -909,8 +901,6 @@ An mga detalye in mabibilngan ha [{{fullurl:{{#Special:Log}}/delete|page={{FULLP
 'revdelete-radio-unset' => 'Ayaw',
 'revdelete-log' => 'Rason:',
 'revdel-restore' => 'igliwat an nakikit-an',
-'revdel-restore-deleted' => 'napara nga mga pagbag-o',
-'revdel-restore-visible' => 'Mga nakikit-an nga pagbabag-o',
 'pagehist' => 'Kaagi han pakli',
 'deletedhist' => 'Ginpara nga kaagi',
 'revdelete-hide-current' => 'Sayop in natago ha butang nga may petsa $2, $1: Ini an yana nga rebisyon.
@@ -952,11 +942,8 @@ Diri mo ini malalabtan.',
 # Search results
 'searchresults' => 'Mga nabilingan han pagbiling',
 'searchresults-title' => 'Mga nabilngan han pagbiling para han "$1"',
-'searchresulttext' => 'Para ha kadugangan nga impormasyon bahin han pagbiling hin {{SITENAME}}, kitaa an [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitleinvalid' => "Imo ginpamiling an '''$1'''",
 'toomanymatches' => 'Sobra kadamo nga mga igo an ginbalik, alayon pagbuhat hin iba nga pakiana',
 'titlematches' => 'Parehas an titulo han pakli',
-'notitlematches' => 'Waray titulo nga pakli an parehas',
 'textmatches' => 'Parehas an teksto han pakli',
 'notextmatches' => 'Waray teksto han pakli an parehas',
 'prevn' => 'naha-una nga {{PLURAL:$1|$1}}',
@@ -965,10 +952,8 @@ Diri mo ini malalabtan.',
 'nextn-title' => 'Sunod nga $1 {{PLURAL:$1|resulta|mga resulta}}',
 'shown-title' => 'Kitaa $1 {{PLURAL:$1|resulta|mga resulta}} kada pakli',
 'viewprevnext' => 'Kitaa an ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Mga pagpipilian han pamiling',
 'searchmenu-exists' => "'''May-ada pakli nga nakangaran hin \"[[:\$1]]\" hini nga wiki.'''",
 'searchmenu-new' => "'''Himoa an pakli \"[[:\$1]]\" hini nga wiki!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ig-browse an mga pakli gamit hini nga prefix]]',
 'searchprofile-articles' => 'Mga unod nga pakli',
 'searchprofile-project' => 'Mga Bulig ngan Proyekto nga pakli',
 'searchprofile-images' => 'Multimedia',
@@ -989,17 +974,14 @@ Diri mo ini malalabtan.',
 'search-interwiki-default' => '$1 nga resulta:',
 'search-interwiki-more' => '(damo pa)',
 'search-relatedarticle' => 'kasumapy',
-'mwsuggest-disable' => 'Ayaw paandari an mga suhistiyon han pamiling',
 'searcheverything-enable' => "Pamilnga ha ngatanan nga ngaran-lat'ang",
 'searchrelated' => 'kadugtong',
 'searchall' => 'ngatanan',
 'showingresultsheader' => "{{PLURAL:$5|Resulta '''$1''' han '''$3'''|Mga resulta '''$1 - $2''' han '''$3'''}} para ha '''$4'''",
 'search-nonefound' => 'Waray resulta an nakakabaton han pakiana.',
-'powersearch' => 'Abansado nga pagbiling',
 'powersearch-legend' => 'Abansado nga pagbiling',
 'powersearch-ns' => "Pamiling ha mga ngaran-lat'ang:",
 'powersearch-redir' => 'Talaan hin mga redirect',
-'powersearch-field' => 'Bilnga an',
 'powersearch-togglelabel' => 'Panginano-a:',
 'powersearch-toggleall' => 'Ngatanan',
 'powersearch-togglenone' => 'Waray',
@@ -1013,7 +995,6 @@ Ginpapasabot nga an sulod han mga panudlok han {{SITENAME}} in bangin daan an.',
 'preferences' => 'Mga karuyag',
 'mypreferences' => 'Mga akon karuyag',
 'prefs-edits' => 'Ihap han mga pagliwat:',
-'changepassword' => 'Igliwan an tigaman-pagsulod',
 'prefs-skin' => 'Panit',
 'skin-preview' => 'Pahiuna nga pagawas',
 'datedefault' => 'Waray pinaurog nga karuyag',
@@ -1036,13 +1017,11 @@ Ginpapasabot nga an sulod han mga panudlok han {{SITENAME}} in bangin daan an.',
 'prefs-email' => 'Mga pagpipilian han e-mail',
 'prefs-rendering' => 'Hitsura',
 'saveprefs' => 'Igtipig',
-'resetprefs' => 'Pabay-i an diri nakatipig nga mga pagbabag-o',
 'restoreprefs' => 'Igbalik an ngatanan ngada nga aada-nga-daan nga settings (ha ngatanan nga mga bahin)',
 'prefs-editing' => 'Ginliliwat',
 'rows' => 'Mga rumbay pahigda:',
 'columns' => 'Mga rumbay patindog:',
 'searchresultshead' => 'Bilnga',
-'resultsperpage' => 'Mga igo kada pakli:',
 'stub-threshold-disabled' => 'Waray ginpagana',
 'recentchangesdays' => 'Kadamo hin adlaw nga igpapakita an mga kabag-ohan:',
 'recentchangesdays-max' => 'Pinakadamo $1 {{PLURAL:$1|ka adlaw|ka mga adlaw}}',
@@ -1056,7 +1035,6 @@ Kun hin-o man it maaram hini in puyde bumasa han imo talaan han binabantayan, tu
 'localtime' => 'Oras nga lokal',
 'timezoneuseserverdefault' => 'Gamita an aada-nga-daan han wiki ($1)',
 'timezoneuseoffset' => 'Iba (igbutang an offset)',
-'timezoneoffset' => 'Offset¹:',
 'servertime' => 'Oras han serbidor:',
 'guesstimezone' => 'Butanga tikang han panngaykay(browser)',
 'timezoneregion-africa' => 'Aprika',
@@ -1249,7 +1227,6 @@ Diri ka gintutugotan pagliwat han mga katungod han gumaramit ha iba nga mga wiki
 'recentchanges-label-minor' => 'Gutiay ini nga pagliwat',
 'recentchanges-label-bot' => 'Ini nga pagliwat in ginbuhat han bot',
 'recentchanges-label-unpatrolled' => 'Ini nga pagliwat in diri pa nakapatrol',
-'rcnote' => "An ha ubos {{PLURAL:$1|in '''1''' nga pagbag-o|in kaurhian nga mga '''$1''' nga pagbag-o}} ha kaurhian nga {{PLURAL:$2|ka adlaw|'''$2''' ka mga adlaw}}, han $5, $4.",
 'rcnotefrom' => "An ha ubos in mga pagbabag-o tikanng '''\$''' (kutob ngadto ha '''\$1''' nga ginpakita).",
 'rclistfrom' => 'Pakit-a an mga ginbag-ohan tikang han $1',
 'rcshowhideminor' => '$1 gudti nga mga pagliwat',
@@ -1596,9 +1573,6 @@ An paglaladawan han iya [$2 fayl han paglaladawan nga pakli] didto in ginpapakit
 'allpagesto' => 'Igpakita an mga pakli nga nahuhuman ha:',
 'allarticles' => 'Ngatanan nga mga artikulo',
 'allinnamespace' => "Ngatanan nga mga pakli ($1 ngaran-lat'ang)",
-'allnotinnamespace' => "Ngatanan nga mga pakli (waray ha $1 ngaran-lat'ang)",
-'allpagesprev' => 'Naha-una',
-'allpagesnext' => 'Sunod',
 'allpagessubmit' => 'Kadto-a',
 'allpages-bad-ns' => '{{SITENAME}} in waray ngaran-lat\'ang nga "$1".',
 'allpages-hide-redirects' => 'Igtago an mga redirekta',
@@ -1830,12 +1804,10 @@ $1',
 # Block/unblock
 'block' => 'Pugngi an gumaramit',
 'blockip' => 'Pugngi an gumaramit',
-'blockip-title' => 'Pugngi an gumaramit',
 'blockip-legend' => 'Pugngi an gumaramit',
 'ipadressorusername' => 'IP address o agnay-hit-gumaramit:',
 'ipbexpiry' => 'Matitima an dulot:',
 'ipbreason' => 'Katadungan:',
-'ipbreasonotherlist' => 'Lain nga katadungan',
 'ipbreason-dropdown' => '*Agsob nga mga rason hit pagpugong
 ** Pagsusuksok hin sayop nga pananabutan
 ** Pagtatangtang hin sulod tikang ha mga pakli
@@ -1850,8 +1822,6 @@ $1',
 'ipbsubmit' => 'Pugngi ini nga gumaramit',
 'ipbother' => 'Iba nga oras:',
 'ipboptions' => '2 ka oras:2 hours,1 ka adlaw:1 day,3 ka adlaw:3 days,1 ka semana:1 week,2 ka semana:2 weeks,1 ka bulan:1 month,3 ka bulan:3 months,6 ka bulan:6 months,1 ka tuig:1 year,waray katapusan:infinite',
-'ipbotheroption' => 'iba',
-'ipbotherreason' => 'Lain/dugang nga katadungan:',
 'ipbhidename' => 'Tagoa an agnay-han-gumaramit tikang ha mga pagliwat ngan mga talaan',
 'ipb-disableusertalk' => 'Ayaw tugota ini nga gumaramit ha pagliwat han iya kalugaringon nga hiruhimangraw nga pakli samtang nakapugong hiya',
 'ipb-change-block' => 'Ig-utro pagpugong an gumaramit upod ini nga mga kahimtang',
@@ -1914,7 +1884,6 @@ Para pagtrangka o pagtanggal han trangka han database, ini in kinahanglanon magi
 'move-page-legend' => 'Balhina an pakli:',
 'movearticle' => 'Balhina an pakli:',
 'moveuserpage-warning' => "'''Pahimatngon:''' Tibalhin ka hin pakli hin gumaramit. Alayon pagtigaman nga an pakli là an mababalhin ngan an gumaramit in ''diri'' mababalyoan hin ngaran.",
-'movenologin' => 'Diri nakalog-in',
 'movenotallowed' => 'Waray ka pagtugot para makabalhin hin mga pakli.',
 'movenotallowedfile' => 'Waray ka pagtugot para makabalhin hin mga paypay.',
 'cant-move-user-page' => 'Diri ka gintutugotan pagbalhin hin mga pakli nga gumaramit (labot la tikang ha mga bahin-pakli).',
@@ -1925,7 +1894,6 @@ Para pagtrangka o pagtanggal han trangka han database, ini in kinahanglanon magi
 'pagemovedsub' => 'Malinamposon an pagbalhin',
 'movepage-moved' => '\'\'\'"$1" in ginbalhin ngadto ha "$2"\'\'\'',
 'movepage-moved-redirect' => 'Nahimo an uska redirect.',
-'movedto' => 'ginbalhin ngadto',
 'move-subpages' => 'Balhina an mga bahin-pakli (tubtob ngadto ha $1)',
 'move-talk-subpages' => 'Balhina an mga bahin-pakli han pakli han hiruhimangraw (tubtob ngadto ha $1)',
 'movepage-page-exists' => 'An pakli nga $1 in aada na ngan diri ini lugaring nga masasapawan pagsurat.',
@@ -2336,22 +2304,16 @@ An iba in daan nakatago.
 'exif-urgency-low' => 'Hamubo ($1)',
 'exif-urgency-high' => 'Hataas ($1)',
 
-# External editor support
-'edit-externally' => 'Igliwat ini nga fayl gamit han gawas nga aplikasyon',
-'edit-externally-help' => '(Kitaa an [https://www.mediawiki.org/wiki/Manual:External_editors mga pagtutdo hin pag-ayad] para han dugang nga pananabutan)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'ngatanan',
 'namespacesall' => 'ngatanan',
 'monthsall' => 'ngatanan',
-'limitall' => 'ngatanan',
 
 # Email address confirmation
 'confirmemail' => 'Igkompirma an e-mail address',
 'confirmemail_sent' => 'Ginpadara an kompirmasyon han e-mail.',
 'confirmemail_needlogin' => 'Kinahanglanon mo hin $1 para makakompirma han imo e-mail address.',
 'confirmemail_loggedin' => 'Ginkompirma na yana an imo e-mail address',
-'confirmemail_error' => 'Mayda diri asya nga nahitabo ha pagtipig ha imo kompirmasyon.',
 'confirmemail_subject' => '{{SITENAME}} kompirmasyon han e-mail address',
 
 # Scary transclusion
@@ -2491,7 +2453,6 @@ An iba in daan nakatago.
 
 # Special:ComparePages
 'comparepages' => 'Igkumpara an mga pakli',
-'compare-selector' => 'Igkumpara an mga pagliwat han pakli',
 'compare-page1' => 'Pakli 1',
 'compare-page2' => 'Pakli 2',
 'compare-rev1' => 'Pagliwat 1',
index 1f7fc2e..48e7bee 100644 (file)
@@ -51,6 +51,9 @@ $namespaceAliases = array(
        'Discussion_Catégorie' => NS_CATEGORY_TALK,
 );
 
+// Remove French aliases
+$namespaceGenderAliases = array();
+
 $specialPageAliases = array(
        'CreateAccount'             => array( 'Sos am sàq' ),
        'Listfiles'                 => array( 'Limu nataal yi' ),
@@ -102,7 +105,6 @@ $messages = array(
 'tog-minordefault' => 'jàppe samay coppite ni yu néewal saa su ne',
 'tog-previewontop' => 'Tegal wonendi gi ci kaw balaa boyotu coppite bi',
 'tog-previewonfirst' => 'wone wonendi gi su dee soppi gu njëkk la',
-'tog-nocache' => 'Doxadil ndenciti xët yi',
 'tog-enotifwatchlistpages' => 'Yónne ma ab bataaxal su aw xët wu ne ci sama limu toppte soppikoo',
 'tog-enotifusertalkpages' => 'Yónne ma ab bataaxal su ay coppite amee ci sama xëtu waxtaanuwaay',
 'tog-enotifminoredits' => 'Yónne ma ab bataaxal donte coppite yu néew lañu',
@@ -219,7 +221,6 @@ $messages = array(
 'qbedit' => 'Soppi',
 'qbpageoptions' => 'Xëtuw tànneef',
 'qbmyoptions' => 'Samay tànneef',
-'qbspecialpages' => 'Xëti jagleel',
 'faq' => 'Laaj yi ëpp',
 'faqpage' => 'Project:FAQ',
 
@@ -407,9 +408,6 @@ Di la sakku nga yegge ko ab [[Special:ListUsers/sysop|yorkat]] , jox ko màkkaan
 'perfcached' => 'Lii ab duppitu ndencitu sumb mi la, kon xéj-na beesul. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 'perfcachedts' => 'Njoxe yii di toftal ab duppitu nëbbitu dàttub njoxe bi la, te yeesalam gu mujj mi ngi am ci: $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => 'Yeesal yu xët wii dañ leen a doxadil fi mu ne nii. Xibaar yi ne fii ci suuf beesuñu.',
-'wrong_wfQuery_params' => 'Njuumte ci xibaar yi ci wfQuery()<br />
-Solo : $1<br />
-Laaj : $2',
 'viewsource' => 'Xool gongikuwaayam',
 'actionthrottled' => 'Jëf jees digal',
 'actionthrottledtext' => 'Ngir xeex spam yi, jëf ji nga namm a def dañ kaa digal ci yoon yoo ko man ci benn diir bu gatt. Te mel na ne romb nga boobu dig. Jéemaatal fii aki simili.',
@@ -503,7 +501,7 @@ Ngalla néggandikul ab diir door a jéemaat.',
 'loginlanguagelabel' => 'Làkk : $1',
 
 # Change password dialog
-'resetpass' => 'Soppi baatujàll bi',
+'changepassword' => 'Coppiteg baatujàll bi',
 'resetpass_announce' => 'Danga dugg ak ab baatujàll bu saxul-dakk, buñ la yónne cib bataaxal. Ngir matal mbindu mi, faaw nga roof ab baatujàll bu bees fii:',
 'resetpass_text' => '<!-- Bindal fii -->',
 'resetpass_header' => 'Soppi baatujàllu sàq mi',
@@ -757,9 +755,6 @@ Li nga doon yorkat tax na ba-tay nga man a [$1 gis gii wuute] su la neexee.",
 'revisiondelete' => 'Far/Deloosiwaati sumb',
 'revdelete-nooldid-title' => 'Waxoo ban sumb',
 'revdelete-nooldid-text' => 'Waxoo ci ban sumb bu xët wii ngay amal solo sii.',
-'revdelete-nologtype-title' => 'Joxewoo benn xeetu yéenekaay',
-'revdelete-nologtype-text' => 'Waxoo ci ban xeetu yéenekaay ngay amal jëf jii.',
-'revdelete-nologid-title' => 'Duggiitu yéenekaay bi baaxul',
 'revdelete-no-file' => 'Dencukaay bi amul',
 'revdelete-show-file-confirm' => 'Ndax wóor na ne bëgg ngaa wone sumb bees far bu bii dencukaay "<nowiki>$1</nowiki>" bu $2 ci $3?',
 'revdelete-show-file-submit' => 'Waaw',
@@ -846,13 +841,8 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 # Search results
 'searchresults' => 'Ngértey ceet gi',
 'searchresults-title' => 'Ngértey ceet gu "$1"',
-'searchresulttext' => 'Ngir yeneeni xibaar ci ceet gi ci {{SITENAME}}, xoolal [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Yaa ngi seet « \'\'\'[[:$1]]\'\'\' » ([[Special:Prefixindex/$1|wépp xët wu tambalee "$1"]]{{int:pipe-separator}}
-[[Special:WhatLinksHere/$1|wépp xët wu lëkkalook "$1"]])',
-'searchsubtitleinvalid' => 'Yaa ngi seet « $1 »',
 'toomanymatches' => 'Dafa bari ay yem-yem. Soppil laaj bi.',
 'titlematches' => 'Koju xët yi ñoo yam',
-'notitlematches' => 'Amul benn koju xët wu yam ak ceet gi',
 'textmatches' => 'Mbindu jukki yi ñoo yam.',
 'notextmatches' => 'Amul benn mbindu jukki bu yam ak ceet gi.',
 'prevn' => '{{PLURAL:$1|wi jiitu|$1 yi jiitu}}',
@@ -861,10 +851,8 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 'nextn-title' => '$1 {{PLURAL:$1|ngérte bi toftal|ngérte yi toftal}}',
 'shown-title' => 'Wone $1 {{PLURAL:$1|ngérte|ngérte}} ciw xët',
 'viewprevnext' => 'Xool ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-legend' => 'Tànneefi ceet',
 'searchmenu-exists' => "'''wenn xët wu tudd « [[:$1]] » moo am ci bii wiki'''",
 'searchmenu-new' => "'''Sosal xët wii di « [[:$1|$1]] » ci bii wiki !'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Xoolal xët wi tambalee nii]]',
 'searchprofile-articles' => 'Xëti ëmbiit',
 'searchprofile-project' => 'Xëti Ndimbal ak Sémb',
 'searchprofile-images' => 'Barixibaarukaay',
@@ -884,21 +872,16 @@ Soo jëfandikoo lëkkalekaayu joow yi day neenal boyot yi nga jotoon a fal.',
 'search-interwiki-default' => '$1 ngérte :',
 'search-interwiki-more' => '(yeneen)',
 'search-relatedarticle' => 'Yeneeni ngérte',
-'mwsuggest-disable' => 'Doxadil xelal yu AJAX',
 'searcheverything-enable' => 'Seet ci barabi tur yépp',
 'searchrelated' => 'yeneeni ngérte',
 'searchall' => 'yépp',
 'showingresults' => 'Woneg <b>$1</b> {{PLURAL:$1|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.',
 'showingresultsnum' => 'Woneg <b>$3</b> {{PLURAL:$3|ngérte|ciy ngérte}} doore ko ci #<b>$2</b>.',
 'showingresultsheader' => "{{PLURAL:$5|Ngérte '''$1''' bu '''$3'''|Ngértey '''$1 - $2'''}}  ngir '''$4'''",
-'nonefound' => "<strong>Karmat</strong> : ci yenn barabi tur yi rekk lañuy seet cig tëralnjëkk.
-Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti waxtaanuwaay yi, royuwaay yi, añs), walla nga jëfandikoo barabu tur bi la neek",
 'search-nonefound' => 'Ceet gi jurul dara.',
-'powersearch' => 'Seet',
 'powersearch-legend' => 'Ceet gu xóot',
 'powersearch-ns' => 'Seet ci barabi tur yi :',
 'powersearch-redir' => 'Limu jubluwaat yi',
-'powersearch-field' => 'Seet',
 'powersearch-togglelabel' => 'Fal:',
 'powersearch-toggleall' => 'Yépp',
 'powersearch-togglenone' => 'Dara',
@@ -909,7 +892,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'preferences' => 'Tànneef',
 'mypreferences' => 'Samay tànneef',
 'prefs-edits' => 'Limu coppite yi:',
-'changepassword' => 'Coppiteg baatujàll bi',
 'prefs-skin' => 'Melokaan',
 'skin-preview' => 'Wonendil',
 'datedefault' => 'Benn tànneef',
@@ -924,7 +906,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'prefs-resetpass' => 'Soppi baatujàll',
 'prefs-email' => 'Tànneefi m-bataaxal',
 'saveprefs' => 'Wattu',
-'resetprefs' => 'Loppanti tànneef yi',
 'restoreprefs' => 'Delloo say tànneef nañu meloon ca sag mbindu',
 'prefs-editing' => 'Boyotu coppite',
 'rows' => 'Rëdd:',
@@ -940,7 +921,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'localtime' => 'Waxtuw barab:',
 'timezoneuseserverdefault' => 'Jëfandikoo waxtuw joxekaay bi',
 'timezoneuseoffset' => 'Yeneen (waxaaleel wuute gi)',
-'timezoneoffset' => 'Wuute¹ :',
 'servertime' => 'Waxtu joxekaay bi :',
 'guesstimezone' => 'Jëfandikoo waxtuw sa joowukaay',
 'timezoneregion-africa' => 'Afrig',
@@ -1146,7 +1126,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
 'recentchanges-label-bot' => 'Coppite bu ab bot def',
 'recentchanges-label-unpatrolled' => 'Coppite bii kenn fugloogu ko',
 'recentchanges-legend-newpage' => '$1 - xët wu bees',
-'rcnote' => '{{PLURAL:$1|Lii mooy coppite bu mujj bees def|Yii ñooy coppite yu mujj yees def}} ci {{PLURAL:$2|bés bu mujj bi|<b>$2</b> bés yu mujj yi}}; njoxe yi ñoo ngi leen yeesal $5 ci $4.',
 'rcnotefrom' => "Yii ñooy coppite yi dalee '''$2''' (ba '''$1''').",
 'rclistfrom' => 'Wone coppite yi mujj yi dooree $1.',
 'rcshowhideminor' => '$1 Coppite yu néewal',
@@ -1418,10 +1397,8 @@ Léegi mi ngi jublu [[$2]].',
 'deadendpagestext' => 'Xët yii di toftal lëkkaloowuñu ak wenn xët ci bii wiki',
 'protectedpages' => 'Xët yi ñu aar',
 'protectedpages-indef' => 'Yi ñu aarandi rekk',
-'protectedpagestext' => 'Xët yii di toftal dañu leen aar, maneesu leen soppi walla tuddewaat',
 'protectedpagesempty' => 'Nii-nii amul wenn xët wu ñu aar ci gii anam',
 'protectedtitles' => 'Koj yi ñu aar',
-'protectedtitlestext' => 'Maneesul a sos ay xët ak koj yi ñu lim fii',
 'protectedtitlesempty' => 'Nii-nii amul benn koj bu ñu aar ci gii anam.',
 'listusers' => 'Limu jëfandikukat yi',
 'listusers-editsonly' => 'Wone jëfandikukat yi am ay cëru',
@@ -1468,9 +1445,6 @@ Man ngaa wàññi wone gi soo tànnee ab yéenekaay, turu jëfandikukat, walla x
 'allpagesto' => 'Wone xët yi ba :',
 'allarticles' => 'Xët yépp',
 'allinnamespace' => 'Xët yépp(turu barab bu $1)',
-'allnotinnamespace' => 'Xët yépp (génne ci barabu tur bu $1)',
-'allpagesprev' => 'Jiitu',
-'allpagesnext' => 'Toftal',
 'allpagessubmit' => 'Ayca',
 'allpagesprefix' => 'Wone xët yi tambalee :',
 'allpagesbadtitle' => 'Koj bi nga bindal xët wii baaxul. xéj-na dafa am ay araf yu ñu manula jëfandikoo cib koj.',
@@ -1695,7 +1669,6 @@ Nii-nii kocc-koccalu xët wii ñooy '''$1''':",
 'undeletebtn' => 'Delloowaat',
 'undeletelink' => 'Wone/delloowaat',
 'undeleteviewlink' => 'wone',
-'undeletereset' => 'Neenal',
 'undeleteinvert' => 'Jallarbi fal gi',
 'undeletecomment' => 'Tënk :',
 'undeletedrevisions' => '$1 {{PLURAL:$1|delloowaat nañ ab sumb|delloowaat nañ $1 sumb}}',
@@ -1774,7 +1747,6 @@ $1',
 'ipadressorusername' => 'Màkkaanu IP walla turu jëfandikukat:',
 'ipbexpiry' => 'Diiru téye gi',
 'ipbreason' => 'Ngirte :',
-'ipbreasonotherlist' => 'Yeneeni ngirte',
 'ipbreason-dropdown' => '* Ngirtey téye yi ëpp
 ** Ag caay-caay
 ** Dugalub xibaar yu dëgguwul
@@ -1790,8 +1762,6 @@ $1',
 'ipbsubmit' => 'Téye bii jëfandikukat',
 'ipbother' => 'Beneen diir:',
 'ipboptions' => '2 waxtu:2 hours,1 fan:1 day,3 fan:3 days,1 ayubés:1 week,2 ayubés:2 weeks,1 weer:1 month,3 weer:3 months,6 weer:6 months,1 at:1 year,ba-faaw:infinite',
-'ipbotheroption' => 'beneen',
-'ipbotherreason' => 'Yeneeni ngirte/faramfacce:',
 'ipbhidename' => 'Nëbb turu jëfandikukat bi ci coppite yeek lim yi',
 'ipbwatchuser' => 'Topp xëtu jëfandikukat ak bu waxtaanuwaay bu bii jëfandikukat',
 'ipb-change-block' => 'Téyewaat bii jëfandikukat ak yii anam',
@@ -1851,7 +1821,6 @@ Dangaa bëgg a soppi anam yi?',
 'proxyblockreason' => 'Dañ téye sa IP ndax dadi ab yóbbantekat bu ubbeeku. Di la ñaan nga jublu ci sa ki la jox internet yegge ko jafe-jafeb kaaraange bi.',
 'sorbsreason' => 'Sa màkkaanu IP dañ ko limaale niki ab yóbbantekat bu ubbeeku ci DNSBL bi {{SITENAME}} di jëfandikoo.',
 'sorbs_create_account_reason' => 'Sa màkkaanu IP dañ ko limaale niki ab yóbbantekat bu ubbeeku ci DNSBL bi {{SITENAME}} di jëfandikoo. Kon sag mbindu du mana nekk.',
-'cant-block-while-blocked' => 'Manoo di téye yeneen jëfandikukat ci diir bi ñu la téye.',
 
 # Developer tools
 'lockdb' => 'Caabi dàttub njoxe bi',
@@ -1907,8 +1876,6 @@ Ci yii anam, faww nga tuddewaat walla yokk wii xëtu waxtaanuwaay ak sa loxo, su
 'movepage-moved-noredirect' => 'Sosug ab jubluwaat far nañu ko.',
 'articleexists' => 'Am na ba noppi ab jukki bu am bii koj, walla koj bi nga tànn baaxul. tànnal bennen.',
 'cantmove-titleprotected' => 'Toppale xët wi du man a nekk ndax tur wu bees wi dañu koo aar njëkk ngir bañ ag sosoom.',
-'talkexists' => "'''Toppaleb xët wi antu na, waaye xëtu waxtaanuwaay wi mu andaloon toppalewu ko, ndax nekk na fi ak weneen koj wu bees. Faaw nga boole leen ak sa loxo'''",
-'movedto' => 'Turam bu bees',
 'movetalk' => 'Tuddewaat tamit xëtu waxtaanukaay wi mu andal',
 'move-subpages' => 'Tuddewaat ron-xët yi (ba $1)',
 'move-talk-subpages' => 'Tuddewaat ron-xëti xëti waxtaanuwaay yi (ba $1)',
@@ -2092,10 +2059,6 @@ Lëkkalekaay yiy toftal, ci wenn rëdd wi, dees leen di jàppee nikiy sette, maa
 
 'exif-componentsconfiguration-0' => 'Amul',
 
-# External editor support
-'edit-externally' => 'Soppi xët wii ak ab tëriin bu biti',
-'edit-externally-help' => 'Xoolal [https://www.mediawiki.org/wiki/Manual:External_editors tegtali camp gi] ngir yeneeni xamle',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'yépp',
 'namespacesall' => 'Yépp',
index 7959ce9..fd5eb15 100644 (file)
@@ -43,7 +43,6 @@ $messages = array(
 'tog-minordefault' => '默認記全部編都是細個',
 'tog-previewontop' => '編寫框頭前顯示先望',
 'tog-previewonfirst' => '頭垡編寫顯示先望',
-'tog-nocache' => '弗用流览器页面慢存',
 'tog-enotifwatchlistpages' => '我關注表裏個頁要弗文件變脫到用電子信通知我',
 'tog-enotifusertalkpages' => '我用戶討論頁變脫到用電子信通知我',
 'tog-enotifminoredits' => '頁搭文件細編也用電子信通知我',
@@ -142,7 +141,7 @@ $messages = array(
 'december-date' => '12月 $1',
 
 # Categories related messages
-'pagecategories' => '$1个分类',
+'pagecategories' => '{{PLURAL:$1|分类}}',
 'category_header' => '“$1”分類裏個頁',
 'subcategories' => '兒分類',
 'category-media-header' => '"$1"分类里个媒体',
@@ -178,7 +177,6 @@ $messages = array(
 'qbedit' => '編',
 'qbpageoptions' => '箇頁',
 'qbmyoptions' => '我頁',
-'qbspecialpages' => '特殊頁',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -385,9 +383,6 @@ $1',
 'perfcached' => '下向是缓存数据,呒数弗是最新个。 A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 '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 />
-函数:$1<br />
-查询:$2',
 'viewsource' => '望源码',
 'actionthrottled' => '动作已压制',
 'actionthrottledtext' => '基于反垃圾链接个考量,限制垃拉短时间内多趟重复箇只操作。请过脱几分钟再试试看。',
@@ -540,7 +535,7 @@ $2',
 'suspicious-userlogout' => '侬登出个要求已经拨回头脱,因为渠可能是由已损坏个浏览器或者缓存代理传送个。',
 
 # Change password dialog
-'resetpass' => '更改密码',
+'changepassword' => '改密码',
 'resetpass_announce' => '侬是通过一只临时发送到e-mail里向个代码登录的。要完成登录,侬必须垃此地设定一只新密码:',
 'resetpass_header' => '更改密码',
 'oldpassword' => '旧密码:',
@@ -830,10 +825,6 @@ $3封禁个原因是''$2''",
 'revdelete-nooldid-title' => '无效个目标修订',
 'revdelete-nooldid-text' => '侬还弗曾指定一个目标修订去进行箇只功能、
 所指定个修订弗存在,或者侬尝试去隐藏现时个修订。',
-'revdelete-nologtype-title' => '呒没指定日志类型',
-'revdelete-nologtype-text' => '侬还弗曾指定一种日志类型来进行箇只动作。',
-'revdelete-nologid-title' => '无效日志记录',
-'revdelete-nologid-text' => '侬还弗曾指定一只目标日志事件去进行箇只功能,或者指定个记录弗存在。',
 'revdelete-no-file' => '指定文件弗存在。',
 'revdelete-show-file-confirm' => '侬阿是真个要查看文件“<nowiki>$1</nowiki>”垃拉$2 $3已经删除个修订?',
 'revdelete-show-file-submit' => '是',
@@ -866,8 +857,6 @@ $1",
 'logdelete-failure' => "'''事件个可见性无法设置:'''
 $1",
 'revdel-restore' => '改变可见性',
-'revdel-restore-deleted' => '已删除个修订版本',
-'revdel-restore-visible' => '可见个修订版本',
 'pagehist' => '页面历史',
 'deletedhist' => '已删除之历史',
 'revdelete-hide-current' => '隐藏于$1 $2之项目错误:箇个是当前个修订,弗可以隐藏。',
@@ -930,12 +919,8 @@ $1",
 # Search results
 'searchresults' => '搜寻结果',
 'searchresults-title' => '搜寻“$1”个结果',
-'searchresulttext' => '更加全面个关于拉{{SITENAME}}里向搜索个信息,请倷看[[{{MediaWiki:Helppage}}:搜索|搜索{{SITENAME}}]]。',
-'searchsubtitle' => '搜索\'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|所有以 "$1" 打头个页面]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有链接到“$1”个页面]])',
-'searchsubtitleinvalid' => "倷搜寻 '''$1'''",
 'toomanymatches' => '匹配结果忒多哉,请尝试弗同个查询关键词',
 'titlematches' => '页面标题匹配',
-'notitlematches' => '寻弗着匹配个页面标题',
 'textmatches' => '页面内容匹配',
 'notextmatches' => '呒没匹配个页面文本',
 'prevn' => '上个 $1',
@@ -944,10 +929,8 @@ $1",
 'nextn-title' => '后$1个结果',
 'shown-title' => '一页显示$1个结果',
 'viewprevnext' => '查看($1 {{int:pipe-separator}} $2)($3)',
-'searchmenu-legend' => '搜索选项',
 'searchmenu-exists' => "'''箇wiki里有一页名字“[[:$1]]”哉'''",
 'searchmenu-new' => "'''徕箇wiki里建“[[:$1]]”页!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|浏览带箇只前缀个页面]]',
 'searchprofile-articles' => '内容页',
 'searchprofile-project' => '帮助搭项目页',
 'searchprofile-images' => '多媒体',
@@ -968,20 +951,16 @@ $1",
 'search-interwiki-default' => '$1项结果:',
 'search-interwiki-more' => '(更多)',
 'search-relatedarticle' => '相关',
-'mwsuggest-disable' => '禁用AJAX建议',
 'searcheverything-enable' => '垃拉所有名字空间里向搜索',
 'searchrelated' => '相关',
 'searchall' => '全部',
 'showingresults' => '下头显示从第<b>$2</b>条开始个<b>$1</b>条结果:',
 'showingresultsnum' => '下头显示从第<b>$2</b>条开始个<b>$3</b>条结果:',
 'showingresultsheader' => "对'''$4'''个{{PLURAL:$5|第'''$1'''至第'''$3'''项结果|第'''$1-$2'''项,共'''$3'''个结果}}",
-'nonefound' => "'''注意''':只默认搜索部分名字空间个页面。尝试垃拉侬个搜索语句前头添加“all:”前缀,箇能介好搜索全部页面(包括讨论页、模板咾啥),或者亦可使用所需名字空间作为前缀。",
 'search-nonefound' => '查询呒有结果。',
-'powersearch' => '高级搜索',
 'powersearch-legend' => '高级搜索',
 'powersearch-ns' => '垃拉箇眼名字空间里向搜索:',
 'powersearch-redir' => '重定向列表',
-'powersearch-field' => '搜索',
 'powersearch-togglelabel' => '选择:',
 'powersearch-toggleall' => '全选',
 'powersearch-togglenone' => '侪弗选',
@@ -992,7 +971,6 @@ $1",
 'preferences' => '偏好',
 'mypreferences' => '偏好设定',
 'prefs-edits' => '编辑数量:',
-'changepassword' => '改密码',
 'prefs-skin' => '皮肤',
 'skin-preview' => '预览',
 'datedefault' => '呒拨偏好',
@@ -1010,13 +988,11 @@ $1",
 'prefs-email' => '邮箱选项',
 'prefs-rendering' => '外观',
 'saveprefs' => '保存',
-'resetprefs' => '清除弗曾保存个更改',
 'restoreprefs' => '复原全部默认设定',
 'prefs-editing' => '编辑',
-'rows' => '行:',
-'columns' => '列:',
+'rows' => '行:',
+'columns' => '列:',
 'searchresultshead' => '搜索',
-'resultsperpage' => '每页显示链接数:',
 'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式门槛值(字节):',
 'recentchangesdays' => '最近更改里向个显示日数:',
 'recentchangesdays-max' => '最长 $1 日',
@@ -1027,7 +1003,6 @@ $1",
 'localtime' => '当地辰光:',
 'timezoneuseserverdefault' => '使用服务器默认值',
 'timezoneuseoffset' => '其它(指定时差)',
-'timezoneoffset' => '时差¹:',
 'servertime' => '服务器辰光:',
 'guesstimezone' => '从浏览器填写',
 'timezoneregion-africa' => '非洲',
@@ -1132,7 +1107,6 @@ $1",
 'recentchanges-feed-description' => '跟踪此订阅垃拉 wiki 高头个最近更改。',
 'recentchanges-label-newpage' => '建新页来编',
 'recentchanges-label-minor' => '箇是小编写',
-'rcnote' => "下底是垃拉$4 $5,最近'''$2'''日天里向个'''$1'''趟最近更改记录:",
 'rclistfrom' => '显示 $1 以来个新改动',
 'rcshowhideminor' => '$1小编写',
 'rcshowhidebots' => '$1机器人',
@@ -1357,9 +1331,6 @@ $1",
 'allpagesto' => '显示从此地结束个页面:',
 'allarticles' => '全部页面',
 'allinnamespace' => '所有页面 ($1 名字空间)',
-'allnotinnamespace' => '全部页面 (弗勒 $1 名字空间里向)',
-'allpagesprev' => '前头',
-'allpagesnext' => '下底',
 'allpagessubmit' => '提交',
 'allpagesprefix' => '显示个页面有下底个前缀:',
 'allpages-bad-ns' => '{{SITENAME}}没有叫做"$1"个名字空间.',
@@ -1481,7 +1452,6 @@ $1",
 'viewdeletedpage' => '望望相删脱个页面',
 'undeletelink' => '查看/恢复',
 'undeleteviewlink' => '望',
-'undeletereset' => '轉設',
 'undeletecomment' => '理由:',
 'undelete-search-submit' => '搜尋',
 
@@ -1527,7 +1497,6 @@ $1",
 'blockip' => '查封用户',
 'ipadressorusername' => 'IP地址或用户名:',
 'ipbreason' => '理由:',
-'ipbreasonotherlist' => '其它原因',
 'ipbsubmit' => '封杀该个用户',
 'ipbother' => '其它时间:',
 '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',
@@ -1569,7 +1538,6 @@ $1",
 
 垃拉箇星情况下头,侬必须手工移动或合并页面。",
 'movearticle' => '页面移动:',
-'movenologin' => '朆登录',
 'movenologintext' => '倷板定要是已登记用户且勒拉[[Special:UserLogin|登录]]状态下头再好拿页面捅荡。',
 'newtitle' => '新标题:',
 'move-watch' => '监控来源以及目标页',
@@ -1578,9 +1546,6 @@ $1",
 'movepage-moved' => "'''“$1”已经移动到“$2”'''",
 'articleexists' => '叫箇只名字个页面已经有垃许哉,要么侬拣个名字是无效个。请重新拣只名字。',
 'cantmove-titleprotected' => '侬弗可以移动迭个页面到个个位置,因为迭个新标题已经拨保护拉许以防止创建。',
-'talkexists' => '页面本身移动成功,
-但是由于新标题下已经有对话页存在,所以对话页无法移动。请手工合并两只页面。',
-'movedto' => '移动到',
 'movetalk' => '移动相关讨论页',
 'movelogpage' => '移个记录',
 'movelogpagetext' => '下底是拨拉捅荡个页面列表。',
@@ -1735,10 +1700,6 @@ Variants for Chinese language
 'exif-gpsspeed-k' => '公里每小时',
 'exif-gpsspeed-m' => '英里每小时',
 
-# External editor support
-'edit-externally' => '用外部应用程序来编辑该只文件',
-'edit-externally-help' => '(请参见[https://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信息)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
index 81275b9..efac44d 100644 (file)
@@ -70,7 +70,7 @@ $messages = array(
 'tog-editsection' => '«Чиклх» заавр болвчн хүвд үзүлх',
 'tog-editsectiononrightclick' => 'Һарчига барун индстлһар хүвиг чиклх (JavaScript кергтә)',
 'tog-showtoc' => 'Һарг үзүлх (3 икәр толһата халхсд)',
-'tog-rememberpassword' => 'Намаг эн тоолдврт тодлх ($1 {{PLURAL:$1|өдрт|өдрмүдт}} икәр биш)',
+'tog-rememberpassword' => 'Намаг эн тоолдврт тодлх ($1 {{PLURAL:$1|1=өдрт|өдрмүдт}} икәр биш)',
 'tog-watchcreations' => 'Би эврәннь немгдсн халхс шинҗллһнә сеткүлд немх',
 'tog-watchdefault' => 'Би эврәннь чиклсн халхс шинҗллһнә сеткүлд немх',
 'tog-watchmoves' => 'Би эврәннь көндсн халхс шинҗллһнә сеткүлд немх',
@@ -78,7 +78,6 @@ $messages = array(
 'tog-minordefault' => 'Цуг сольлһн баһ чинртә таасн болулх',
 'tog-previewontop' => 'Сольлһна теегин өмн хәләвр үзүлх',
 'tog-previewonfirst' => 'Сольхла, хәләвр үзүлх.',
-'tog-nocache' => 'Халхин кешлһн браузерт унтрах',
 'tog-enotifwatchlistpages' => 'Шинҗлсн халх сольхла, нанд e-mail бичг йовулх',
 'tog-enotifusertalkpages' => 'Мини ухалвр халх сольхла, нанд e-mail бичг йовулх',
 'tog-enotifminoredits' => 'Баһ сольлһн болв чигн болхла, нанд e-mail бичг йовулх',
@@ -163,19 +162,19 @@ $messages = array(
 'dec' => 'Бар',
 
 # Categories related messages
-'pagecategories' => '{{PLURAL:$1|Әәшл|Әәшлүд}}',
+'pagecategories' => '{{PLURAL:$1|1=Әәшл|Әәшлүд}}',
 'category_header' => '«$1» әәшлд бәәдг халхс',
 'subcategories' => 'Баһар әәшлүд',
 'category-media-header' => '«$1» әәшлд бәәдг боомгуд',
 'category-empty' => "''Тер әәшл хоосн болҗана.''",
-'hidden-categories' => '{{PLURAL:$1|Бултулсн әәшл|Бултулсн әәшлүд}}',
+'hidden-categories' => '{{PLURAL:$1|1=Бултулсн әәшл|Бултулсн әәшлүд}}',
 'hidden-category-category' => 'Бултулсн әәшлүд',
-'category-subcat-count' => '{{PLURAL:$2|Тер әәшл эн һанцхн баһар әәшлтә.|{{PLURAL:$1|$1 баһар әәшл үзүлв|$1 баһар әәшлүд үзүлв|$1 баһар әәшлүд}} $2 ут туршдан үзүлв.}}',
-'category-subcat-count-limited' => 'Тер әәшлд {{PLURAL:$1|нег баһар әәшл|$1 баһар әәшлүд}} болҗана.',
-'category-article-count' => '{{PLURAL:$2|Тер әәшл һанцхн халхта.|{{PLURAL:$1|$1 халхиг үзүлв|$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 боомгуд}} тер әәшлд болҗана.',
+'category-subcat-count' => '{{PLURAL:$2|Тер әәшл эн һанцхн баһар әәшлтә.|{{PLURAL:$1|$1 баһар әәшл үзүлв|$1 баһар әәшлүд|$1 баһар әәшлүд үзүлв}} $2 ут туршдан үзүлв.}}',
+'category-subcat-count-limited' => 'Тер әәшлд {{PLURAL:$1|1=нег баһар әәшл|$1 баһар әәшлүд}} болҗана.',
+'category-article-count' => '{{PLURAL:$2|Тер әәшл һанцхн халхта.|{{PLURAL:$1|$1 халхсиг үзүлв|$1 халхиг үзүлв|$1 халхсиг үзүлв}}, $2 ут туршдан.}}',
+'category-article-count-limited' => 'Тер әәшлд {{PLURAL:$1|1=нег халх|$1 халхс}} болҗана.',
+'category-file-count' => '{{PLURAL:$2|Тер әәшлд һанцхн халх болҗана.|Терүнәс {{PLURAL:$1|1=нег боомг үзүлсн|$1 боомгуд үзүлсн}} $2 ут туршдан.}}',
+'category-file-count-limited' => 'Эн {{PLURAL:$1|1=боомг|$1 боомгуд}} тер әәшлд болҗана.',
 'listingcontinuesabbrev' => '(цааранднь)',
 'index-category' => 'Индекссн халхс',
 'noindex-category' => 'Индекссн биш халхс',
@@ -197,7 +196,6 @@ $messages = array(
 'qbedit' => 'Чиклх',
 'qbpageoptions' => 'Тер халх',
 'qbmyoptions' => 'Тана халхс',
-'qbspecialpages' => 'Көдлхнә халхс',
 'faq' => 'Юм би',
 'faqpage' => 'Project:Юм би',
 
@@ -297,7 +295,7 @@ $1',
 
 'badaccess' => 'Зөвәнә эндү',
 'badaccess-group0' => 'Та сурсн үүл кеҗ болшго.',
-'badaccess-groups' => 'Эн үүл һанцхн {{PLURAL:$2|багас|багудас}} $1 кеҗ чадна.',
+'badaccess-groups' => 'Эн үүл һанцхн {{PLURAL:$2|1=багас|багудас}} $1 кеҗ чадна.',
 
 'versionrequired' => "MediaWiki'н $1 һарц кергтә",
 'versionrequiredtext' => "Тер халх олзхар, MediaWiki'н $1 һарц кергтә.
@@ -318,7 +316,7 @@ $1',
 'hidetoc' => 'бултулх',
 'thisisdeleted' => '$1 гүүһәд хәләхү аль хәрүлхү?',
 'viewdeleted' => '$1 үзүлхү?',
-'restorelink' => '{{PLURAL:$1|$1 һарһсн сольлһн|$1 һарһсн сольлһн}}',
+'restorelink' => '{{PLURAL:$1|1=$1 һарһсн сольлһн|$1 һарһсн сольлһн}}',
 'feedlinks' => 'Тер бәәдлтә',
 'feed-invalid' => 'Буру бичгдлһнә төлә сүвин янз.',
 'feed-unavailable' => 'Синдикацин сүв орлһта биш',
@@ -383,7 +381,7 @@ $1',
 'yourname' => 'Демнчна нернь:',
 'yourpassword' => 'Нууц үг:',
 'yourpasswordagain' => 'Нууц үгиг давтн:',
-'remembermypassword' => 'Намаг эн тоолдврд тодлх ($1 {{PLURAL:$1|өдрт|өдрмүдт}} икәр биш)',
+'remembermypassword' => 'Намаг эн тоолдврд тодлх ($1 {{PLURAL:$1|1=өдрт|өдрмүдт}} икәр биш)',
 'yourdomainname' => 'Тана домен:',
 'login' => 'Орлһн',
 'nav-login-createaccount' => 'Харһх / бичгдлһн кех',
@@ -426,7 +424,7 @@ $1',
 'loginlanguagelabel' => 'Келн: $1',
 
 # Change password dialog
-'resetpass' => 'Нууц үгиг сольх',
+'changepassword' => 'Нууц үгиг сольҗ',
 'resetpass_header' => 'Бичгдллһнә нууц үгиг сольх',
 'oldpassword' => 'Көгшн нууц үг:',
 'newpassword' => 'Шин нууц үг:',
@@ -497,12 +495,12 @@ $1',
 'copyrightwarning2' => "Буйн болтха, цуг өгүллһн {{SITENAME}} төлә чиклсн аль һарһсн бәәдг чадта тускар тодлтн.  Та тана бичсн чилклсн аль делгрңсн бәәҗ седхлә биш, эн ормд бичә бичтн.<br /> Дәкәд та маднд эн эврәнь бичсн, күмн әмтнә хазас аль цацу сул медснәс бәәдг үгән өгнәт ($1 хәләтн). '''Зөвән авхла уга, харссн бичсн күүнә көдлмш бичә тәвтн!'''",
 'semiprotectedpagewarning' => "'''Оньган өгтн:''' тер халх харссн болҗана, тер учрар эниг бичгдлһтә демнчнр һанцхн чиклҗ чадна.
 Нөкд төлә, эн шидрә сеткүлин бичвр:",
-'templatesused' => 'Эн халхд олзлсн {{PLURAL:$1|зурас|зурас}}:',
-'templatesusedpreview' => '{{PLURAL:$1|Кевләр|Кевләрмүд}} эн хәләврт олзлсн:',
+'templatesused' => 'Эн халхд олзлсн {{PLURAL:$1|1=зурас|зурас}}:',
+'templatesusedpreview' => '{{PLURAL:$1|1=Кевләр|Кевләрмүд}} эн хәләврт олзлсн:',
 'template-protected' => '(харссн)',
 'template-semiprotected' => '(зәрм харссн)',
 'hiddencategories' => 'Эн халх тер $1 {{PLURAL:$1|бултулсн әәшләс|бултулсн әәшлүдәс|бултулсн әәшлүдәс}}:',
-'permissionserrorstext-withaction' => 'Та $2 кеҗ болшго. Юнгад гихлә, эн {{PLURAL:$1|учрар|учрар}}:',
+'permissionserrorstext-withaction' => 'Та $2 кеҗ болшго. Юнгад гихлә, эн {{PLURAL:$1|1=учрар|учрар}}:',
 'edit-conflict' => 'Чикллһнә керүл.',
 
 # Parser/template warnings
@@ -551,10 +549,6 @@ $1',
 # Search results
 'searchresults' => 'Хәәлһнә ашуд',
 'searchresults-title' => 'Хәәлһнә ашуд "$1" төлә',
-'searchresulttext' => 'Дәкәд өггцна төлә,  [[{{MediaWiki:Helppage}}|дөң өггдг һазрт]] хәләтн.',
-'searchsubtitle' => '«[[:$1]]» сурвра ([[Special:Prefixindex/$1|эн нертә эклсн халхс]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|эн нерт заадг]])',
-'searchsubtitleinvalid' => "Тадн '''$1''' төлә хәәләт",
-'notitlematches' => 'Нернә ирлцлһн уга',
 'notextmatches' => 'Әдл бичг халхд уга',
 'prevn' => 'урдк {{PLURAL:$1|$1}}',
 'nextn' => 'дарук {{PLURAL:$1|$1}}',
@@ -574,23 +568,17 @@ $1',
 'search-interwiki-caption' => 'Садта проектмуд',
 'search-interwiki-default' => '$1 ашуд:',
 'search-interwiki-more' => '(дәкәд)',
-'mwsuggest-disable' => 'AJAX селвг унтрах',
 'searcheverything-enable' => 'Цуг нернә ууд хәәх',
 'searchall' => 'цуг',
-'nonefound' => "'''Нүдлтн''': Мел зәрм нернә у талд урдаснь хәәсмн.
-''all:'' гидг эклц немтн та һазр болһнд хәәх.",
-'powersearch' => 'Күчн хәәлһн',
 'powersearch-legend' => 'Күчн хәәлһн',
 'powersearch-ns' => 'Эн нернә у дотран хәәх:',
 'powersearch-redir' => 'Авч одлһуд үзүлх',
-'powersearch-field' => 'Хәәх',
 'powersearch-togglenone' => 'Уга',
 
 # Preferences page
 'preferences' => 'Дурллһн',
 'mypreferences' => 'Көгүд',
 'prefs-edits' => 'Чикллһнә то:',
-'changepassword' => 'Нууц үгиг сольҗ',
 'prefs-skin' => 'Хувцнь',
 'skin-preview' => 'Хәләвр',
 'datedefault' => 'Келхлә уга',
@@ -599,7 +587,7 @@ $1',
 'prefs-rc' => 'Шидрә сольлһн',
 'prefs-watchlist' => 'Шинҗллһнә сеткүл',
 'prefs-watchlist-days' => 'Шинҗллһнә седкүлд үзүлсн ик гисн өдрин то:',
-'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|day|days}}',
+'prefs-watchlist-days-max' => 'Maximum $1 {{PLURAL:$1|1=day|days}}',
 'prefs-misc' => 'Талдан',
 'prefs-resetpass' => 'Нууц угиг сольҗ',
 'prefs-email' => "E-mail'ын көгүд",
@@ -609,13 +597,11 @@ $1',
 'prefs-editing' => 'Чикллһн',
 'rows' => 'Мөрд:',
 'columns' => 'Бахд:',
-'resultsperpage' => 'Халхд бәәдг олсн бичврин то:',
 'savedprefs' => 'Тана көгүдиг хадһлв.',
 'timezonelegend' => 'Часин бүс:',
 'localtime' => 'Бәәрн һазра цаг:',
 'timezoneuseserverdefault' => 'Серверинь олзлх',
 'timezoneuseoffset' => 'Талдан (көндллһн заатн)',
-'timezoneoffset' => 'Көндллһн¹:',
 'servertime' => 'Серверин цаг:',
 'guesstimezone' => 'Хәләлгчәс авх',
 'timezoneregion-africa' => 'Априк',
@@ -637,7 +623,7 @@ $1',
 'youremail' => 'E-mail хайг:',
 'username' => 'Демнчна нер:',
 'uid' => 'Демнчна тойг (ID):',
-'prefs-memberingroups' => '{{PLURAL:$1|Багин|Багдудин}} хүв:',
+'prefs-memberingroups' => '{{PLURAL:$1|1=Багин|Багдудин}} хүв:',
 'prefs-registration' => 'Темдглҗ  бүртклһнә цаг:',
 'yourrealname' => 'Үнн нерн:',
 'yourlanguage' => 'Бәәдлин келн:',
@@ -695,7 +681,7 @@ $1',
 'action-edit' => 'эн халхиг чиклх',
 
 # Recent changes
-'nchanges' => '$1 {{PLURAL:$1|сольлһн|сольлһн}}',
+'nchanges' => '$1 {{PLURAL:$1|1=сольлһн|сольлһн}}',
 'recentchanges' => 'Шидрә сольлһн',
 'recentchanges-legend' => 'Шидрә сольлһна көгүд',
 'recentchanges-summary' => 'Эн цагин дараһар бичсн шидрә сольлһн',
@@ -704,7 +690,6 @@ $1',
 'recentchanges-label-minor' => 'Эн баһ чинртә сольлһн',
 'recentchanges-label-bot' => 'Эн сольлһн көдлвр (робот) кехв',
 'recentchanges-legend-newpage' => '$1 — шин халх',
-'rcnote' => "{{PLURAL:$1|'''$1''' шидрә сольлһн|'''$1''' шидрә сольлһн|'''$1''' шидрә сольлһн}}, '''$2''' өдрә,  $5 $4 цагин.",
 'rclistfrom' => 'Тер цагас авн сольлһн үзүлх: $1.',
 'rcshowhideminor' => 'баһ чикллһиг $1',
 'rcshowhidebots' => 'көдлврүдиг $1',
@@ -804,13 +789,13 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1 {{PLURAL:$1|байд|байдуд|байдуд}}',
-'nmembers' => '$1 {{PLURAL:$1|мөч|мөчин|мөчүд}}',
+'nmembers' => '$1 {{PLURAL:$1|мөч|мөчүд|мөчин}}',
 'prefixindex' => 'Цуг халхс эн эклцтә',
 'newpages' => 'Шин халхс',
 'move' => 'Көндәх',
 'movethispage' => 'Эн халхд шин нер аль шин орм өгх',
-'pager-newer-n' => '{{PLURAL:$1|шинәр 1|шинәр $1}}',
-'pager-older-n' => '{{PLURAL:$1|көгшәр 1|көгшәр $1}}',
+'pager-newer-n' => '{{PLURAL:$1|1=шинәр 1|шинәр $1}}',
+'pager-older-n' => '{{PLURAL:$1|1=көгшәр 1|көгшәр $1}}',
 
 # Book sources
 'booksources' => 'Дегтрин делгүрс',
@@ -914,7 +899,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'protect-text' => "Энд та '''$1''' халхин харсллһна кемҗән хәләҗ,  хүврлҗ чаднат.",
 'protect-locked-access' => "Эн халхна харсллһна кемҗән сольҗ, тана бичгдлһна зөв тату.
 Ода болсн '''$1''' халхна көгүд:",
-'protect-cascadeon' => 'Эн халх харссн. Юнгад гихлә, тер халх {{PLURAL:$1|эн халхд|тенд халхсд}} каскад харсллһта. Тадн эн халхна харсллһна кемҗән сольх чаднат, болв тер үүл каскад харлсһиг цокҗ чадшго.',
+'protect-cascadeon' => 'Эн халх харссн. Юнгад гихлә, тер халх {{PLURAL:$1|1=эн халхд|тенд халхсд}} каскад харсллһта. Тадн эн халхна харсллһна кемҗән сольх чаднат, болв тер үүл каскад харлсһиг цокҗ чадшго.',
 'protect-default' => 'Цуг демнчнрд зөвән өгҗ',
 'protect-fallback' => '$1 зөв кергтә',
 'protect-level-autoconfirmed' => 'Шин болн нер уга демнчнрас харсх',
@@ -964,7 +949,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'isredirect' => 'авч оддг халх',
 'istemplate' => 'оруллһн',
 'isimage' => 'зургин  заалһ',
-'whatlinkshere-prev' => '{{PLURAL:$1|урдк|урдк $1}}',
+'whatlinkshere-prev' => '{{PLURAL:$1|1=урдк|урдк $1}}',
 'whatlinkshere-next' => '{{PLURAL:$1|дарук|дарук|дарук}} $1',
 'whatlinkshere-links' => '← заалһуд',
 'whatlinkshere-hideredirs' => '$1 авч одлһн',
@@ -976,7 +961,6 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'blockip' => 'Демнчиг бүслх',
 'ipadressorusername' => 'IP хайг аль демнчна нернь:',
 'ipbreason' => 'Учр:',
-'ipbreasonotherlist' => 'Талдан учр',
 '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' => 'бүслх',
@@ -1014,8 +998,6 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'movepage-moved' => "'''«$1» халх шин нернь («$2»)  өгв'''",
 'articleexists' => 'Тер нерәдлһтә халх бәәнә, аль та буру нернь суңһвт.
 Буйн болтха, талдан нернь өгтн.',
-'talkexists' => "'''Халхин йовудта көндллһн. Болв, ухалвр халх көндәх болшго. Юнгад гихлә, эн нерәдлһтә халх бәәнә. Буйн болтха, териг һарар неҗәлтн.'''",
-'movedto' => 'көндсн:',
 'movetalk' => 'Өөр ухалвр халхиг көндәх.',
 'movelogpage' => 'Нернә сольлһна сеткүл',
 'movereason' => 'Учр:',
@@ -1161,15 +1143,10 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'exif-orientation-1' => 'Кирин',
 'exif-orientation-2' => 'Теңгрин хормаһар туссн',
 
-# External editor support
-'edit-externally' => 'Эн боомгиг һаза заклһар чиклх',
-'edit-externally-help' => '([https://www.mediawiki.org/wiki/Manual:External_editors Тәвллһнә заалт]  икәр өггцнә төлә хәләтн)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'цуг',
 'namespacesall' => 'цуг',
 'monthsall' => 'цуг',
-'limitall' => 'цуг',
 
 # action=purge
 'confirm_purge_button' => 'Тиим',
@@ -1197,7 +1174,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
 'livepreview-ready' => 'Белднә... Болһсн!',
 
 # Watchlist editor
-'watchlistedit-numitems' => 'Тана шинҗллһнә сеткүл {{PLURAL:$1|1 гешүтә|$1 гешүдтә}}, меткән халхста.',
+'watchlistedit-numitems' => 'Тана шинҗллһнә сеткүл {{PLURAL:$1|1=1 гешүтә|$1 гешүдтә}}, меткән халхста.',
 'watchlistedit-noitems' => 'Тана шинҗллһнә сеткүл хоосн бәәнә.',
 'watchlistedit-normal-title' => 'Шинҗллһнә сеткүлиг чиклх',
 
index 0fb07c3..28f5de3 100644 (file)
@@ -49,9 +49,6 @@ $messages = array(
 'mypage' => 'Inqaku yam',
 'mytalk' => 'Inthetho yam',
 
-# Cologne Blue skin
-'qbspecialpages' => 'Amaphepha Abalulekileyo',
-
 # Vector skin
 'vector-view-edit' => 'Tshintsha',
 
@@ -67,13 +64,12 @@ $messages = array(
 'talk' => 'Ingxoxo',
 'otherlanguages' => 'Kwezinye Ilwimi',
 
-# 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).
+# 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).
 'currentevents' => 'Imisebenzi Eyenzekayo',
 'edithelp' => 'Uncedo ngoTshintsho',
 'mainpage' => 'Iphepha Elingundoqo',
 'mainpage-description' => 'Iphepha Elingundoqo',
 
-'newmessageslink' => 'imiyalezo emitsha',
 'youhavenewmessagesmulti' => 'Unemiyalezo emitsha ku $1',
 'editsection' => 'tshintsha',
 'editold' => 'tshintsha',
@@ -86,9 +82,6 @@ $messages = array(
 'viewsource' => 'Jonga i Source',
 
 # Login and logout pages
-'welcomecreation' => '== Wamkelekile, $1! ==
-
-I Account yakhgo ivuliwe, ungalibali ukutshitsha izinto ozithandayo ngo {{SITENAME}}.',
 'yourname' => 'Igama lelungu:',
 'yourpassword' => 'Igama elifihlakeleyo lelungu:',
 'yourpasswordagain' => 'Faka kwakhona igama elifihlakeleyo:',
@@ -104,9 +97,6 @@ I Account yakhgo ivuliwe, ungalibali ukutshitsha izinto ozithandayo ngo {{SITENA
 'showpreview' => 'Bonisa Utshintsho',
 'showdiff' => 'Gcina Utshitshi',
 
-# Search results
-'powersearch' => 'Khangela',
-
 # Preferences page
 'mypreferences' => 'Ezithandwa ndim',
 'searchresultshead' => 'Khangela',
@@ -156,7 +146,6 @@ I Account yakhgo ivuliwe, ungalibali ukutshitsha izinto ozithandayo ngo {{SITENA
 # Move page
 'move-page-legend' => 'Dlulisa eliphepha',
 'movepagebtn' => 'DLulisa eliphepha',
-'movedto' => 'Lidluliselwe',
 'movereason' => 'Isizathu',
 
 # Special:NewFiles
index 97ce03f..072e95a 100644 (file)
@@ -127,7 +127,6 @@ $messages = array(
 'qbedit' => 'რედაქტირება',
 'qbpageoptions' => 'თე ხასჷლა',
 'qbmyoptions' => 'ჩქიმი ხასჷლეფი',
-'qbspecialpages' => 'გჷშაკერძაფილი ხასჷლეფი',
 'faq' => 'ბხშირი კითხვეფი',
 
 # Vector skin
@@ -379,8 +378,6 @@ $messages = array(
 # Revision deletion
 'rev-delundel' => 'ძირაფა/ტყობინაფა',
 'revdel-restore' => 'ორწყენჯობაშ თირუა',
-'revdel-restore-deleted' => 'ლასირი რევიზიეფი',
-'revdel-restore-visible' => 'ძირაფადი რევიზიეფი',
 
 # Merge log
 'revertmerge' => 'ეკორტყუალაშ მოლასუა',
@@ -395,10 +392,6 @@ $messages = array(
 # 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'''",
-'notitlematches' => 'ვა უხუჯანს ნამუთინი ხასილაშ ჯოხო',
 'notextmatches' => 'ნამთინ ხასილაშ ტექსტი ვა უხუჯანს',
 'prevn' => 'წოხლენ $1',
 'nextn' => 'უკულიან {{PLURAL:$1|$1}}',
@@ -429,14 +422,10 @@ $messages = array(
 'searchrelated' => 'მათანგეფ',
 'searchall' => 'არძო',
 'showingresultsheader' => "{{PLURAL:$5|მოღალუ '''$1''' '''$3'''-შე|მოღალუეფ '''$1 - $2''' '''$3'''-შე}} '''$4'''-შო",
-'nonefound' => "'''გეთოლწონით''': სტანდარტულო ხვალე ნამთინე ჯოხოთ ოფირჩას მეურს გორუა.
-ოგორალი ზიტყვას ვარა ზიტყვეფიშ ბუნას წოხოლე ქეწუყ’უნეთ ''all:'' ირდიხას იგორასინ თიშენ (სხუნუაშ ხასილეფიშ, თანგეფიშ დო ა.უ. მეკოროცხუათ,), ვარ-და პრეფიქსო გიმირინეთ კორნებულ ჯოხოთ ოფირჩა.",
 'search-nonefound' => 'თქვანი მოგორაფილიშ მუთუნნერ მანგი მოღალუქ ვეძირჷ.',
-'powersearch' => 'გოძინელ გორუა',
 'powersearch-legend' => 'გოძინელ გორუა',
 'powersearch-ns' => 'დოგორ ჯოხოეფიშ ოფირჩას:',
 'powersearch-redir' => 'გინოწურაფეფიშ ერკებულიშ ძირაფა',
-'powersearch-field' => 'დოგორი ათენა',
 
 # Preferences page
 'preferences' => 'კონფიგურაცია',
@@ -473,7 +462,6 @@ $messages = array(
 'recentchanges-label-minor' => 'თენა რე ციქა რედაქტირაფა',
 'recentchanges-label-bot' => 'თე რედაქტირაფა ბოტიშ ნაღოლემი რე',
 'recentchanges-label-unpatrolled' => 'თე რედაქტირაფა დიო ხოლო ვა რე პატრულირაფირი',
-'rcnote' => "თუდოლე ძირით ეკონია {{PLURAL:$1|'''1''' თირაფა|$1 თირაფა}} ეკონია {{PLURAL:$2|დღაშ|'''$2''' დღაშ}}, $5, $4 რენჯობათ.",
 'rcnotefrom' => 'თუდო მოჸუნაფილიე თირაფეფ, ”’$2””-შე (ძირაფილიე ”’$1”’)',
 'rclistfrom' => 'ახალ თირაფეფიშ ძირაფა დოჭყაფილ $1-შე',
 'rcshowhideminor' => '$1 ჭიჭე რედაქტირაფეფ',
@@ -714,7 +702,6 @@ $messages = array(
 # 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',
-'ipbotheroption' => 'შხვა',
 'ipblocklist' => 'ბლოკირელ მახვარებუეფჷ',
 'ipblocklist-submit' => 'გორუა',
 'blocklink' => 'ბლოკირაფა',
@@ -754,9 +741,6 @@ $messages = array(
 'movepage-moved' => '\'\'\'\\"$1\\" გინოღალირ რე ათაქ: \\"$2\\"\'\'\'',
 'articleexists' => 'ხასილა თე ჯოხოთ უკვე რსებენს, ვარდა თქვან გიშაგორილ ჯოხო ვა რე თინ. 
 ქორთხინთ, შხვა ჯოხო გეგშეგორათინ',
-'talkexists' => "'''ხასილაქ გინოღალირქ იყ’უ, მარა სხუნუაშ ხასილაქ ვეგნიღინუ, თიშენ ნამდა თინა უკვე არსებენს ახალ ჯოხოთ. 
-ქორთხინთ, აკორტყუათ თინეფ მანუალურო.'''",
-'movedto' => 'გინაღალულ რე',
 'movetalk' => 'ასოცირებულ სხუნუაშ ხასილაშ გინოღალა',
 'movelogpage' => 'ორეგისტრაციე ჟურნალიშ გინოღალა',
 'movereason' => 'სამანჯელი:',
@@ -879,10 +863,6 @@ $messages = array(
 'exif-imagewidth' => 'სიგანე',
 'exif-imagelength' => 'სიმაღალე',
 
-# External editor support
-'edit-externally' => 'თე ფაილიშ ორედაქტირაფალო გიმირინეთ გალენ პროგრამა',
-'edit-externally-help' => '(უმოს ინფორმაციაშო ქოძირით [https://www.mediawiki.org/wiki/Manual:External_editors])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'არძა',
 'namespacesall' => 'არძა',
index 2581136..81a1a63 100644 (file)
@@ -71,7 +71,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( 'אוראלטע_בלעטער' ),
        'Blankpage'                 => array( 'ליידיגער_בלאט' ),
        'Block'                     => array( 'בלאקירן' ),
-       'Blockme'                   => array( 'בלאקירט_מיך' ),
        'BrokenRedirects'           => array( 'צעבראכענע_ווייטערפירונגען' ),
        'Categories'                => array( 'קאטעגאריעס' ),
        'ChangePassword'            => array( 'ענדערן_פאסווארט' ),
@@ -81,7 +80,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( 'שאפֿן_קאנטע' ),
        'Deadendpages'              => array( 'בלעטער_אן_פארבינדונגען' ),
        'DeletedContributions'      => array( 'אויסגעמעקעטע_בײַשטײַערונגען' ),
-       'Disambiguations'           => array( 'באדייטן' ),
        'DoubleRedirects'           => array( 'פארטאפלטע_ווייטערפירונגען' ),
        'Emailuser'                 => array( 'שיקן_אן_ע-פאסט_צום_באניצער' ),
        'Export'                    => array( 'עקספארט' ),
@@ -162,6 +160,7 @@ $magicWords = array(
        'numberofarticles'          => array( '1', 'צאל_ארטיקלען', 'מספר ערכים', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', 'צאל_טעקעס', 'מספר קבצים', 'NUMBEROFFILES' ),
        'numberofusers'             => array( '1', 'צאל_באניצער', 'מספר משתמשים', 'NUMBEROFUSERS' ),
+       'numberofedits'             => array( '1', 'צאל_רעדאקטירונגען', 'מספר עריכות', 'NUMBEROFEDITS' ),
        'pagename'                  => array( '1', 'בלאטנאמען', 'שם הדף', 'PAGENAME' ),
        'namespace'                 => array( '1', 'נאמענטייל', 'מרחב השם', 'NAMESPACE' ),
        'fullpagename'              => array( '1', 'פולבלאטנאמען', 'שם הדף המלא', 'FULLPAGENAME' ),
@@ -178,6 +177,7 @@ $magicWords = array(
        'img_sub'                   => array( '1', 'אונטער', 'תחתי', 'sub' ),
        'img_super'                 => array( '1', 'איבער', 'עילי', 'super', 'sup' ),
        'img_top'                   => array( '1', 'אויבן', 'למעלה', 'top' ),
+       'img_middle'                => array( '1', 'אינמיטן', 'באמצע', 'middle' ),
        'img_bottom'                => array( '1', 'אונטן', 'למטה', 'bottom' ),
        'img_link'                  => array( '1', 'לינק=$1', 'קישור=$1', 'link=$1' ),
        'img_alt'                   => array( '1', 'טעקסט=$1', 'טקסט=$1', 'alt=$1' ),
@@ -192,6 +192,7 @@ $magicWords = array(
        'hiddencat'                 => array( '1', '__באהאלטענע_קאטעגאריע__', '__באהאלטענע_קאט__', '__קטגוריה_מוסתרת__', '__HIDDENCAT__' ),
        'pagesize'                  => array( '1', 'בלאטגרייס', 'גודל דף', 'PAGESIZE' ),
        'url_wiki'                  => array( '0', 'וויקי', 'ויקי', 'WIKI' ),
+       'pagesincategory_pages'     => array( '0', 'בלעטער', 'דפים', 'pages' ),
 );
 
 $messages = array(
@@ -217,7 +218,6 @@ $messages = array(
 'tog-minordefault' => 'באגרענעצן אלע רעדאַקטירונגען גרונטלעך אלס מינערדיק',
 'tog-previewontop' => 'צײַג די "פֿאָרויסיגע װײַזונג" גלײַך בײַ דער ערשטער באַאַרבעטונג',
 'tog-previewonfirst' => 'ווייזן פֿאראויסדיגע ווייזונג בײַ דער ערשטער רעדאקטירונג',
-'tog-nocache' => 'מבטל זײַן האַלטן בלעטער אין זאַפאַס',
 'tog-enotifwatchlistpages' => 'שיקט מיר א בליצבריוו ווען א בלאט וואס איך פאס אויף ווערט געענדערט',
 'tog-enotifusertalkpages' => 'שיקט מיר ע-פאסט ווען עס ווערט געענדערט מיין באניצער רעדן בלאט',
 'tog-enotifminoredits' => 'שיקט מיר ע-פאסט אויך פֿאַר מינערדיקע רעדאַקטירונגען פֿון בלעטער',
@@ -353,7 +353,6 @@ $messages = array(
 'qbedit' => 'ענדערן',
 'qbpageoptions' => 'דער בלאט',
 'qbmyoptions' => 'מיינע בלעטער',
-'qbspecialpages' => 'ספעציעלע בלעטער',
 'faq' => 'מערסטע געפרעגטע פראגעס',
 'faqpage' => 'Project:מערסטע געפרעגט פראגעס',
 
@@ -574,9 +573,6 @@ $1',
 'perfcachedts' => 'די פאלגנדע דאטן זענען פונעם זאַפאַס, וואס איז לעצט געווארן דערהײַנטיגט $1. מאקסימום {{PLURAL:$4|איין רעזולטאט איז|$4 רעזולטאטן זענען}} פאראן אין זאפאס',
 'querypage-no-updates' => 'דערהיינטיגן דעם בלאט איז איצט אומערמעגלעכט.
 דאטן דא וועט נישט דערווייל ווערן באנייט.',
-'wrong_wfQuery_params' => 'די פארעמעטערס אריינגפיטערט צו wfQuery() זענען נישט ריכטיג:<br />
-פֿונקיציע: $1<br />
-פֿארלאנג: $2',
 'viewsource' => 'ווײַזן מקור',
 'viewsource-title' => 'באקוקן מקור פֿון $1',
 'actionthrottled' => 'די אַקציע איז באַגרענעצט',
@@ -711,7 +707,7 @@ $2',
 'passwordtooshort' => 'פאַסווערטער מוזן זײַן כאטש {{PLURAL:$1|איין כאַראַקטער|$1 כאַראַקטערס}}.',
 'password-name-match' => 'אײַער פאַסווארט מוז זײַן אנדערש פון אײַער באַניצער נאָמען.',
 'password-login-forbidden' => 'באַניצן דעם נאָמען און שפּריכוואָרט איז פאַרבאָטן.',
-'mailmypassword' => 'ש×\99ק×\98 ×\9e×\99×\99×\9f × ×\99×\99×¢ ×¤×\90סווארט',
+'mailmypassword' => 'צ×\95ר×\99קש×\98×¢×\9c×\9f ×¤×\90Ö·סווארט',
 'passwordremindertitle' => 'ניי צייטווייליג פאסווארט פאר {{SITENAME}}',
 'passwordremindertext' => 'עמעצער (מסתמא איר, פֿון IP אדרעס $1)
 האט געבעטן א ניי פאַסווארט פֿאר {{SITENAME}} ($4).
@@ -762,7 +758,7 @@ $2',
 'user-mail-no-body' => 'האט פרובירט צו שיקן א בליצבריוו וואס זיין אינהאלט איז ליידיק אדער גאר קורץ.',
 
 # Change password dialog
-'resetpass' => 'ענדערן קאנטע פאסווארט',
+'changepassword' => 'טוישן פאַסווארט',
 'resetpass_announce' => 'איר האט אריינלאגירט מיט א פראוויזארישן קאד געשיקט דורכן ע-פאסט. צו פארענדיגן אריינלאגירן, ברויכט איר אנשטעלן א ניי פאסווארט דא:',
 'resetpass_text' => '<!-- לייגט צו טעקסט דא -->',
 'resetpass_header' => 'ענדערן קאנטע פאסווארט',
@@ -783,7 +779,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => 'צוריקשטעלן פאַסווארט',
 'passwordreset-text-one' => 'דערגאַנצט די פאָרעם צוריקצושטעלן אײַער פאַסווארט.',
-'passwordreset-text-many' => '{{PLURAL:$1|×\93ער×\92×\90ַנצ×\98 ×\90×\99×\99× ×¢ ×¤Ö¿×\95×\9f ×\93×\99 ×¤Ö¿×¢×\9c×\93ער ×¦×\95ר×\99קצ×\95ש×\98×¢×\9c×\9f ×\90ײַער ×¤×\90ַס×\95×\95×\90רט.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|×\93ער×\92×\90ַנצ×\98 ×\90×\99×\99× ×¢ ×¤Ö¿×\95×\9f ×\93×\99 ×¤Ö¿×¢×\9c×\93ער ×\9b×\93×\99 ×¦×\95 ×\91×\90ק×\95×\9e×¢×\9f ×\90 ×¤×¨×\90×\95×\95×\99×\96×\90ר×\99ש ×¤×\90ַס×\95×\95×\90ר×\98 ×\93×\95ר ×\9b×\9f ×¤×\90סט.}}',
 'passwordreset-legend' => 'צוריקשטעלן פאַסווארט',
 'passwordreset-disabled' => 'מען האט אומאַקטיוויטר צוריקשטעלן פאַסווערטער אויף דער וויקי.',
 'passwordreset-emaildisabled' => 'ע-פאסט דינסטן זענען געווארן אומאקטיווירט אויף דער דאזיקער וויקי.',
@@ -1049,6 +1045,8 @@ $2
 'content-not-allowed-here' => '"$1" אינהאלט נישט דערלויבט אויף בלאט [[$2]]',
 'editwarning-warning' => 'איבערלאזן דעם בלאט קען גורם זײַן פֿארלירן אײַערע ענדערונגען.
 אויב איר זענט ארײַנלאגירט, קענט איר מבטל זײַן די דאזיגע ווארענונג אין דער "באארבעטן" אפטיילונג פון אײַערע פרעפערענצן.',
+'editpage-notsupportedcontentformat-title' => 'אינהאלט־פארמאט נישט געשטיצט',
+'editpage-notsupportedcontentformat-text' => 'דער אינהאלט־פארמאט $1 ווערט ניט געשטיצט דורכן אינהאלט־מאדעל $2.',
 
 # Content models
 'content-model-wikitext' => 'וויקיטעקסט',
@@ -1158,10 +1156,6 @@ $2
 'revisiondelete' => 'אויסמעקן\\צוריקשטעלן רעוויזיעס',
 'revdelete-nooldid-title' => 'ציל ווערסיע נישט גילטיג',
 'revdelete-nooldid-text' => 'איר האט נישט ספעציפירט קיין ציל ווערסיע דורצוכפירן די פונקציע.',
-'revdelete-nologtype-title' => 'קיין לאג טיפ נישט געקליבן',
-'revdelete-nologtype-text' => 'איר האט נישט ספעציפֿירט קיין לאג טיפ דורצוכפֿירן די פֿונקציע.',
-'revdelete-nologid-title' => 'אומגילטיגער לאג־פֿאַרשרײַב',
-'revdelete-nologid-text' => 'אדער האט איר נישט ספעציפֿיצירט א ציל לאגטיפ אדער איז נישט פֿאַרהאַן דער ספעציפֿיצירטער לאגטיפ.',
 'revdelete-no-file' => 'די ספעציפֿירטע טעקע עקזיסטירט נישט.',
 'revdelete-show-file-confirm' => 'צי זענט איר זעכער איר ווילט באַקוקן אַן אויסגעמעקטע רעוויזיע פון דער טעקע "<nowiki>$1</nowiki>" פון $2 בשעה $3?',
 'revdelete-show-file-submit' => 'יא',
@@ -1195,8 +1189,6 @@ $1",
 'logdelete-failure' => "'''נישט מעגלעך צו שטעלן לאג זעבאַרקייט:'''
 $1",
 'revdel-restore' => 'טויש די זעבארקייט',
-'revdel-restore-deleted' => 'אויסגעמעקטע ווערסיעס',
-'revdel-restore-visible' => 'זעבאַרע ווערסיעס',
 'pagehist' => 'בלאט היסטאריע',
 'deletedhist' => 'אויסגעמעקטע ווערסיעס',
 'revdelete-hide-current' => 'פֿעלער בײַם באַהאַלטן דעם איינהייט פֿון $2, $1: דאָס איז די לויפֿיגע ווערסיע.
@@ -1275,12 +1267,8 @@ $1",
 # 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 פֿריערדיקע}}',
@@ -1289,10 +1277,8 @@ $1",
 'nextn-title' => '{{PLURAL:$1|קומענדיקער רעזולטאַט|קומענדיקע $1 רעזולטאַטן}}',
 'shown-title' => 'ווײַזן $1  {{PLURAL:$1|רעזולטאַט| רעזולטאַטן}} אויף א בלאַט',
 'viewprevnext' => 'קוקט אויף ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'זוכן ברירות',
 'searchmenu-exists' => "'''ס'איז פֿאַראַן א בלאַט מיטן נאמען \"[[:\$1]]\" אין דער וויקי'''",
 'searchmenu-new' => "'''באַשאַפֿן דעם בלאַט \"[[:\$1]]\" אויף דער וויקי'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|בלעטערן בלעטער מיט דעם פרעפֿיקס]]',
 'searchprofile-articles' => 'אינהאלט בלעטער',
 'searchprofile-project' => 'הילף און פראיעקט בלעטער',
 'searchprofile-images' => 'מולטימעדיע',
@@ -1313,21 +1299,16 @@ $1",
 'search-interwiki-default' => '$1 רעזולטאטן:',
 'search-interwiki-more' => '(נאך)',
 'search-relatedarticle' => 'פארבינדן',
-'mwsuggest-disable' => 'בטל מאכן זוך פארשלאגן',
 'searcheverything-enable' => 'זוכן אין אלע נאמענטיילן',
 'searchrelated' => 'פארבינדן',
 'searchall' => 'אלץ',
 'showingresults' => "ווייזן ביז {{PLURAL:$1|רעזולטאט '''איינס'''|'''$1''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
 'showingresultsnum' => "ווייזן {{PLURAL:$3|רעזולטאט '''איינס'''|'''$3''' רעזולטאטן}} אנגעפאנגן פון נומער #'''$2''':",
 'showingresultsheader' => "{{PLURAL:$5|רעזולטאַט '''$1''' פֿון '''$3'''| רעזולטאַטן '''$1 - $2''' פֿון '''$3'''}} פֿאַר '''$4'''",
-'nonefound' => "'''  אכטונג''': בלויז אין טייל נאמענטיילן ווערט געזוכט גרונטלעך.
-איר קענט שרייבן'''all:''' בעפאר דער זוך טערמין כדי צו זוכן אין אלע בלעטער (אריינגערעכנט שמועס בלעטער, מוסטערן, א.א.וו.), אדער שרייבן בעפארן זוך-טערמין דעם נאמענטייל וואס איר זענט אינטערסירט דערין.",
 'search-nonefound' => 'נישטא קיין רעזולטאטן פֿאַר דער שאלה.',
-'powersearch' => 'זוכן',
 'powersearch-legend' => 'ווײַטהאלטן זוכן',
 'powersearch-ns' => 'זוכן אין נאמענטיילן:',
 'powersearch-redir' => 'ווײַז ווײַטערפֿירונג בלעטער',
-'powersearch-field' => 'זוך',
 'powersearch-togglelabel' => 'קאנטראלירן:',
 'powersearch-toggleall' => 'אלע',
 'powersearch-togglenone' => 'קיין',
@@ -1342,7 +1323,6 @@ $1",
 'mypreferences' => 'פּרעפֿערענצן',
 'prefs-edits' => 'צאָל ענדערונגען:',
 'prefsnologintext2' => 'זייט אזוי גוט $1 כדי צו שטעלן באניצער פרעפערענצן.',
-'changepassword' => 'טוישן פאַסווארט',
 'prefs-skin' => 'סקין',
 'skin-preview' => 'פארויסדיגע ווייזונג',
 'datedefault' => 'נישטא קיין פרעפערענץ',
@@ -1365,13 +1345,11 @@ $1",
 'prefs-email' => 'ע־פאסט אפציעס',
 'prefs-rendering' => 'אויסזען',
 'saveprefs' => 'אויפֿהיטן',
-'resetprefs' => 'אוועקנעמען נישט-אויפגעהיטענע ענדערונגען',
 'restoreprefs' => 'צוריקשטעלן אלע גרונטלעכע שטעלונגען (אין אלע אפטיילן)',
 'prefs-editing' => 'באַאַרבעטן',
 'rows' => 'שורות:',
 'columns' => 'עמודים:',
 'searchresultshead' => 'זוכן',
-'resultsperpage' => 'צאל טרעפֿן אין א בלאַט:',
 'stub-threshold' => 'שוועל פֿאַר <a href="#" class="stub">שטומף לינק</a> פֿאָרמאַטירונג (בייטן):',
 'stub-threshold-disabled' => 'אַנולירט',
 'recentchangesdays' => 'צאל פון טעג צו ווייזן אין די לעצטע ענדערונגן:',
@@ -1386,7 +1364,6 @@ $1",
 'localtime' => 'לאקאלע צייט:',
 'timezoneuseserverdefault' => 'ניצן סערווירער גרונט ($1)',
 'timezoneuseoffset' => 'אַנדער (ספעציפֿירט אונטערשייד)',
-'timezoneoffset' => 'אונטערשייד¹:',
 'servertime' => 'סארווער צײַט:',
 'guesstimezone' => 'אנפֿילן פֿון בלעטערער',
 'timezoneregion-africa' => 'אפריקע',
@@ -1640,13 +1617,15 @@ $1",
 'recentchanges-label-minor' => 'דאָס איז אַ מינערדיקע רעדאַקטירונג',
 'recentchanges-label-bot' => ' די רעדאַקטירונג האט אויסגעפירט א באט',
 'recentchanges-label-unpatrolled' => 'די רעדאקטירונג איז נאך נישט נאכגעקוקט',
-'recentchanges-legend-newpage' => '$1 - נײַער בלאַט',
-'rcnote' => "אונטן {{PLURAL:$1|איז '''1''' ענדערונג|זײַנען די לעצטע '''$1''' ענדערונגען}} אין {{PLURAL:$2|דעם לעצטן טאג|די לעצטע $2 טעג}}, ביז $5, $4.",
+'recentchanges-label-plusminus' => 'בלאט גרייס געענדערט מיט דער צאל בייטן',
+'recentchanges-legend-heading' => "'''לעגענדע:'''",
+'recentchanges-legend-newpage' => '(זעט אויך [[Special:NewPages|די רשימה פון נייע בלעטער]])',
+'recentchanges-legend-plusminus' => "(''±123'')",
 'rcnotefrom' => "פֿאלגנד זענען די ענדערונגען זײַט '''$2''' (ביז '''$1''')",
 'rclistfrom' => 'װײַזן נײַע ענדערונגען פֿון $1',
 'rcshowhideminor' => '$1 מינערדיגע ענדערונגען',
 'rcshowhidebots' => '$1 ראבאטן',
-'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצערס',
+'rcshowhideliu' => '$1 אײַנגעשריבענע באַניצער',
 'rcshowhideanons' => '$1 אַנאָנימע באַניצער',
 'rcshowhidepatr' => '$1 פאַטראלירטע ענדערונגען',
 'rcshowhidemine' => '$1 מײַנע רעדאַקטירוננגען',
@@ -2059,6 +2038,7 @@ $1",
 'ninterwikis' => '$1 {{PLURAL:$1|אינטערוויקי|אינטערוויקיס}}',
 'nlinks' => '$1 {{PLURAL:$1|לינק|לינקען}}',
 'nmembers' => '$1 {{PLURAL:$1|בלאט|בלעטער}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|מיטגליד|מיטגלידער}}',
 'nrevisions' => '{{PLURAL:$1|איין רעוויזיע|$1 רעוויזיעס}}',
 'nviews' => '{{PLURAL:$1|איין קוק|$1 קוקן}}',
 'nimagelinks' => 'געניצט אויף $1 {{PLURAL:$1|בלאַט|בלעטער}}',
@@ -2088,6 +2068,7 @@ $1",
 'mostrevisions' => 'אַרטיקלען מיט די מערסטע באַאַרבעטונגען',
 'prefixindex' => 'פּרעפֿיקס אינדעקס',
 'prefixindex-namespace' => 'אלע בלעטער מיט פרעפֿיקס ($1 נאמענטייל)',
+'prefixindex-strip' => 'אפשניידן פרעפיקס אין ליסטע',
 'shortpages' => 'קורצע בלעטער',
 'longpages' => 'לאנגע בלעטער',
 'deadendpages' => 'בלינדע בלעטער',
@@ -2095,10 +2076,9 @@ $1",
 'protectedpages' => 'געשיצטע בלעטער',
 'protectedpages-indef' => 'בלויז אומבאַשרענקטע באַשוצינגען',
 'protectedpages-cascade' => 'בלויז קאַסקאַדירנדיקע באַשיצונגען',
-'protectedpagestext' => 'די פֿאלגנדע בלעטער זענען געשיצט פון רעדאַקטירן און באוועגן:',
+'protectedpages-noredirect' => 'פֿארהיילן ווייטערפֿירונגען',
 'protectedpagesempty' => 'אצינד זענען קיין בלעטער נישט געשיצט מיט די דאזיגע פאַראַמעטערס.',
 'protectedtitles' => 'געשיצטע קעפלעך',
-'protectedtitlestext' => 'די פֿאלגנדע קעפלעך זענען געשיצט פון באשאפֿן:',
 'protectedtitlesempty' => 'אצינד זענען קיין קעפלעך נישט באַשיצט מיט די דאזיגע פאַראַמעטערס.',
 'listusers' => 'באַניצער ליסטע',
 'listusers-editsonly' => 'ווייזן נאר באניצערס מיט רעדאקטירונגען',
@@ -2150,9 +2130,6 @@ $1",
 'allpagesto' => 'ווייזן בלעטער ביז:',
 'allarticles' => 'אַלע בלעטער',
 'allinnamespace' => 'אַלע בלעטער ($1 נאָמענטייל )',
-'allnotinnamespace' => 'אַלע בלעטער (נישט אין $1 נאָמענטייל)',
-'allpagesprev' => 'פריערדיגע',
-'allpagesnext' => 'נעקסט',
 'allpagessubmit' => 'גיי',
 'allpagesprefix' => 'בלעטער וואס זייער נאמען הייבט זיך אן מיט…:',
 'allpagesbadtitle' => 'דער אײַנגעגעבענער נאָמען איז אומגילטיק: לײדיק, אַנטהאַלט אינטערװיקי. עס איז מעגליך אז ער אנטהאלט אותיות וואס מען קען נישט ניצן אין קעפלעך.',
@@ -2373,6 +2350,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => 'רעדאַקטירן די אויסמעקן סיבות',
 'delete-toobig' => 'דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אזעלכע בלעטער איז באַגרענעצט געווארן בכדי צו פֿאַרמײַדן א צופֿעליגע פֿאַרשטערונג פֿון  {{SITENAME}}.',
 'delete-warning-toobig' => 'דער בלאַט האט א גרויסע רעדאקטירונג היסטאריע, מער ווי $1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}}. אויסמעקן אים קען פֿאַרשטערן דאַטנבאַזע אפעראַציעס פֿון {{SITENAME}}; זײַט פֿארזיכטיג איידער איר מעקט אויס.',
+'deleting-backlinks-warning' => "'''ווארענוג:''' אנדערע בלעטער פארבינדן צום בלאט איר האלט ביי אויסמעקן.",
 
 # Rollback
 'rollback' => 'צוריקדרייען רעדאַקטירונגען',
@@ -2484,7 +2462,6 @@ $UNWATCHURL
 'undeletebtn' => 'צוריקשטעלן',
 'undeletelink' => 'קוקן/צוריקשטעלן',
 'undeleteviewlink' => 'באַקוקן',
-'undeletereset' => 'צוריקשטעלן',
 'undeleteinvert' => 'איבערקערן דעם אויסקלויב',
 'undeletecomment' => 'אורזאַך:',
 'undeletedrevisions' => '{{PLURAL:$1|1 רעוויזיע|$1 רעוויזיעס}} צוריקגעשטעלט',
@@ -2508,7 +2485,6 @@ $UNWATCHURL
 $1',
 'undelete-show-file-confirm' => 'צי זענט איר זעכער איר ווילט באַקוקן די אויסגעמעקטע רעוויזיע פון דער טעקע "<nowiki>$1</nowiki>" פון $2 בשעה $3?',
 'undelete-show-file-submit' => 'יא',
-'undelete-revisionrow' => '$1 $2 $3 $4 . . $5 $6 $7',
 
 # Namespace form on various pages
 'namespace' => 'נאמענטייל:',
@@ -2568,7 +2544,6 @@ $1',
 'block' => 'בלאקירן באַניצער',
 'unblock' => 'אויפֿבלאקירן באניצער',
 'blockip' => 'בלאקירן באַניצער',
-'blockip-title' => 'בלאקירן באַניצער',
 'blockip-legend' => 'בלאקירן באַניצער',
 'blockiptext' => "באניצט די פארעם דא אונטן כדי צו בלאקירן שרײַבן רעכטן פֿון איינגעשריבענע באניצער אדער סתם ספעציפישע איי פי אדרעסן.
 
@@ -2578,7 +2553,6 @@ $1',
 'ipadressorusername' => 'IP אדרעס אדער באַניצער נאמען:',
 'ipbexpiry' => 'אויסגיין:',
 'ipbreason' => 'אורזאַך:',
-'ipbreasonotherlist' => 'אנדער סיבה',
 'ipbreason-dropdown' => '* פֿארשפרייטע בלאקירן סיבות
 ** ארײַנלייגן פֿאלשע אינפֿארמאציע
 ** אויסמעקן אינהאַלט פֿון בלעטער
@@ -2603,8 +2577,6 @@ $1',
 6 מאָנאַטן:6 months,
 1 יאָר:1 year,
 אויף אייביק:infinite',
-'ipbotheroption' => 'אַנדער',
-'ipbotherreason' => 'אנדער/נאך א סיבה:',
 'ipbhidename' => 'באַהאַלטן באַניצער נאָמען פֿון רעדאַקטירונגען און רשימות',
 'ipbwatchuser' => 'אויפֿפאַסן דעם באַניצערס באַניצער און רעדן בלעטער',
 'ipb-confirm' => 'באַשטעטיקן בלאָק',
@@ -2689,7 +2661,7 @@ $1',
 'ip_range_toolarge' => 'אָפשטאַנדן גרעסער ווי /$1 קען מען נישט בלאקירן.',
 'proxyblocker' => 'פראקסי בלאקער',
 'proxyblockreason' => 'אייער איי.פי. אדרעס איז געווארן געבלאקט צוליב דעם ווייל דאס איז א אפענער פראקסי. ביטע פארבינדט זיך מיט אייער אינטערנעט סערוויס פראוויידער אדער טעקס סאפארט צו אינפארמירן זיי איבער דעם ערענסטן זיכערהייט פראבלעם.',
-'cant-block-while-blocked' => 'איר קען נישט בלאקירן קיין אנדערע באניצער ווען איר זענט אליין בלאקירט.',
+'sorbsreason' => 'אייער IP־אדרעס געפינט זיך אין דער ליסטע פון אפענע פראקסיס אינעם DNSBL געניצט אין {{SITENAME}}.',
 'ipbblocked' => 'איר קען נישט בלאקירן אדער אויפבלאקירן אנדערע באניצער, ווייל איר זענט אליין בלאקירט.',
 'ipbnounblockself' => 'איר זענט נישט ערלויבט זיך אליין אויסבלאקירן',
 
@@ -2746,7 +2718,6 @@ $1',
 אין די פֿעלער, וועט איר דארפֿן באַוועגן אדער צונויפֿגיסן דעם בלאט האַנטלעך, ווען איר ווילט.",
 'movearticle' => 'באוועג בלאט:',
 'moveuserpage-warning' => "'''ווארענונג:''' איר האלט ביי באוועגן א באניצער בלאט. ביטע באמערקט אז נאר דער בלאט ווערט באוועגט אבער דער באניצער נאמען ווערט ''נישט'' געענדערט.",
-'movenologin' => 'איר זענט נישט אַריינלאָגירט',
 'movenologintext' => 'איר דארפֿט זיך אײַנשרײַבן און זײַן  [[Special:UserLogin|אַרײַנלאגירט]] צו באַוועגן א בלאַט.',
 'movenotallowed' => 'איר זענט נישט דערלויבט צו באוועגן בלעטער.',
 'movenotallowedfile' => 'איר האט נישט קיין רשות צו באוועגן טעקעס.',
@@ -2762,8 +2733,6 @@ $1',
 'articleexists' => 'א בלאט מיט דעם נאָמען עקזיסטירט שוין, אדער דעם נאָמען וואס איר האט אויסדערוויילט איז נישט גילטיק.
 ביטע קלייבט אויס אן אנדער נאָמען.',
 'cantmove-titleprotected' => 'איר קענט נישט באַוועגן א בלאַט צו דעם נאמען, ווייל דאס נייע קעפל איז געשיצט פֿון ווערן געשאַפֿן',
-'talkexists' => "דער בלאט אליין איז באוועגט מיט דערפֿאלג, אבער דער רעדן בלאט האט מען נישט באוועגט ווײַל ס'איז שוין דא א בלאט מיט דעם זעלבן נאמען. זײַט אזוי גוט פֿאראייניגט זיי האנטלעך.",
-'movedto' => 'באַוועגט צו',
 'movetalk' => 'באוועגט אסאסיצירטע רעדן בלאט',
 'move-subpages' => 'באוועגן אונטערבלעטער (ביז $1)',
 'move-talk-subpages' => 'באַוועגן אונטערבלעטער פֿון רעדן בלאַט (ביז $1)',
@@ -3531,15 +3500,10 @@ $1',
 'exif-urgency-high' => 'הויך ($1)',
 'exif-urgency-other' => 'באניצער־דעפינירטע פריאריטעט ($1)',
 
-# External editor support
-'edit-externally' => 'רעדאַקטירט די טעקע מיט א דרויסנדיגער אַפליקאַציע',
-'edit-externally-help' => 'זעט די [https://www.mediawiki.org/wiki/Manual:External_editors אויפֿשטעל אנווייזונגען] פאר מער אינפארמאציע.',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'אַלע',
 'namespacesall' => 'אַלע',
 'monthsall' => 'אלע',
-'limitall' => 'אַלע',
 
 # Email address confirmation
 'confirmemail' => 'באַשטעטיקט בליצפּאָסט אַדרעס',
@@ -3559,7 +3523,6 @@ $1',
 'confirmemail_success' => 'אײַער בליצפּאָסט אַדרעס איז באַשטעטיקט געװאָרן.
 איר קענט איצט [[Special:UserLogin|אַרײַנלאגירן]] און הנאה האָבן פֿון דער וויקי.',
 'confirmemail_loggedin' => 'אייער ע־פאסט אדרעס איז איצט געווארן באשטעטיגט.',
-'confirmemail_error' => 'עפעס איז געגאנגען שלעכט מיט אָפּהיטן אײַער באַשטעטיקונג.',
 'confirmemail_subject' => '{{SITENAME}} בליצבריװ אדרעס באַשטעטיקונג',
 'confirmemail_body' => 'עמעצער, ווארשיינליך איר (פון איי פי אדרעס: $1), האט איינגעשריבן די קונטע: "$2" מיט אט דעם בליצפאסט אדרעס אויף {{SITENAME}}.
 
@@ -3741,7 +3704,7 @@ $5
 'version-parser-extensiontags' => 'פארזער פארברייטערן טאַגן',
 'version-hook-name' => 'נאמען פון hook',
 'version-version' => '(ווערסיע $1)',
-'version-license' => 'ליצענץ',
+'version-license' => '×\9e×¢×\93×\99×¢×\95×\95×\99ק×\99 ×\9c×\99צענץ',
 'version-poweredby-others' => 'אַנדערע',
 'version-poweredby-translators' => 'translatewiki.net איבערזעצער',
 'version-credits-summary' => 'מיר ווילן אנערקענען די פֿאלגנדע מענטשן פֿאר זייער בײַשטײַערוג צו [[Special:Version|מעדיעוויקי]].',
@@ -3817,7 +3780,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'פאַרגלייַכן בלעטער',
-'compare-selector' => 'פאַרגלייַכן בלאַט רעוויזיעס',
 'compare-page1' => 'עמוד 1',
 'compare-page2' => 'עמוד 2',
 'compare-rev1' => 'רעוויזיע 1',
index f52dff9..3f0e17d 100644 (file)
@@ -75,7 +75,6 @@ $messages = array(
 'tog-minordefault' => "Se àmì sí gbogbo àtúnse gẹ́gẹ́ bi kékeré lát'ìbẹ̀rẹ̀.",
 'tog-previewontop' => "Se àyẹ̀wò kí ẹ tó s'àtúnṣe",
 'tog-previewonfirst' => "S'àfihàn àgbéwò fún àtúnse àkọ́kọ́",
-'tog-nocache' => 'Ìdínà fífi ojúewé pamọ́ sínú cache',
 'tog-enotifwatchlistpages' => 'Fi e-mail ránṣẹ́ sí mi tí ojúewé tàbí fáìlì tí mò ún mójútó bá yípadà',
 'tog-enotifusertalkpages' => 'Fi e-mail ránṣẹ́ sími tí ojúewé oníṣe mi bá yípadà',
 'tog-enotifminoredits' => 'Fi e-mail ránṣẹ́ sí mi bákannà fún àtúnṣe kékékèé sí àwọn ojúewé àti fáìlì',
@@ -209,7 +208,6 @@ $messages = array(
 'qbedit' => 'Àtúnṣe',
 'qbpageoptions' => 'Ojúewé yi',
 'qbmyoptions' => 'Àwọn ojúewé mi',
-'qbspecialpages' => 'Àwọn ojúewé pàtàkì',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -329,7 +327,7 @@ $1',
 'youhavenewmessagesfromusers' => 'Ẹ ní $1 láti ọ̀dọ̀ {{PLURAL:$3|oníṣe míràn|àwọn oníṣe $3}} ($2).',
 'youhavenewmessagesmanyusers' => 'Ẹ ní $1 láti ọ̀dọ̀ àwọn oníṣe púpọ̀ ($2).',
 'newmessageslinkplural' => '{{PLURAL:$1|ìránṣẹ́ tuntun kan|àwọn ìránṣẹ́ tuntun}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|àtúnṣe|àwọn àtúnṣe}} tógbẹ̀yìn',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|àtúnṣe tuntun|àwọn àtúnṣe tuntun}} tógbẹ̀yìn',
 'youhavenewmessagesmulti' => 'Ẹ ní ìránsẹ́ tuntun ni $1',
 'editsection' => 'àtúnṣe',
 'editold' => 'àtúnṣe',
@@ -381,6 +379,12 @@ $1',
 # General errors
 'error' => 'Àsìṣe',
 'databaseerror' => 'Àsìṣe ibùdó dátà',
+'databaseerror-text' => 'Àṣìṣe ìtọrọ ibùdó dátà ti ṣẹlẹ̀.
+Kòkòrò le wà nínú atòlànà kọ̀mpútà.',
+'databaseerror-textcl' => 'Àṣìṣe ìtọrọ ibùdó dátà ti ṣẹlẹ̀.',
+'databaseerror-query' => 'Ìtọrọ: $1',
+'databaseerror-function' => 'Olùdíye: $1',
+'databaseerror-error' => 'Àṣìṣe: $1',
 'laggedslavemode' => "'''Ìkìlọ̀:''' Ojúewé náà le mọ́ nìí àwọn àtúnṣe tuntun.",
 'readonly' => 'Títìpa ibùdó dátà',
 'enterlockreason' => 'Ẹ ṣàlàyé ìtìpa náà, àti ìgbàtí ẹ rò pé ìtìpa náà yíò kúrò.',
@@ -421,9 +425,6 @@ Kò ṣe àlàyé kankan.',
 'perfcachedts' => 'Ìwònyí jẹ́ dátà láti inú cache, ọjọ́ tí a ṣe àtúnṣe rẹ̀ gbẹ̀yìn ni $1. Ó pọ̀jùlọ {{PLURAL:$4|èsì kan|èsì $4}} wà nínú cache.',
 'querypage-no-updates' => 'Àtúnṣe sí ojúewé yìí kò ṣe é ṣe lọ́wọ́lọ́wọ́.
 Àwọn ìpèsè tuntun kò ní hàn báyìí ná.',
-'wrong_wfQuery_params' => 'Àwọn pàrámítà àìtọ́ sí wfQuery()<br />
-Ìlò: $1<br />
-Ìtọrọ: $2',
 'viewsource' => 'Wo àmìọ̀rọ̀',
 'viewsource-title' => 'Ẹ wo ìsun fún $1',
 'actionthrottled' => 'Ìgbése bíntín',
@@ -442,6 +443,8 @@ Láti ṣ'àfikún tàbí ṣ'àyípadà àwọn ìyédèpadà fún gbogbo àw
 'customjsprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé JavaScript yìí nítorípé ó ní àwọn ìtòjọ oníṣe ẹlòmíràn.',
 'mycustomcssprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé CSS yìí.',
 'mycustomjsprotected' => 'Ẹ kò ní ìyọ̀nda láti ṣàtúnṣe ojúewé JavaScript yìí.',
+'myprivateinfoprotected' => "Ẹ kò ní àṣẹ láti ṣ'àtúnṣe ọ̀rọ̀ nípa yín.",
+'mypreferencesprotected' => "Ẹ kò ní àṣẹ láti ṣ'àtúnṣe àwọn ìfẹ́ràn yín.",
 'ns-specialprotected' => 'Àtúnṣe kò ṣe é ṣe sí àwọn ojúewé pàtàkì.',
 'titleprotected' => "[[User:$1|$1]] ti dínà sí dídá àkọlé yìí. Ìdí rẹ̀ ni pé ''$2''.",
 'filereadonlyerror' => 'Àtúnṣe kò ṣe é ṣe sí fáìlì "$1" nítorípé ibi-àkójọ fáìlì "$2" jẹ́ fún wíwò nìkàn.
@@ -450,7 +453,7 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'invalidtitle-knownnamespace' => 'Àkọlé àìyẹ tó ní orúkọààyè "$2" àti ìkọ̀rọ̀ "$3"',
 'invalidtitle-unknownnamespace' => 'Àkọlé àìyẹ tó ní nọ́mbà orúkọààyè àìmọ̀ "$1" àti ìkọ̀rọ̀ "$2"',
 'exception-nologin' => 'Kò tí ì wọlé',
-'exception-nologin-text' => 'Ojúewé tàbí ìgbéṣe yìí pọndandan kí ẹ wọlé sórí wiki yìí.',
+'exception-nologin-text' => 'Ẹ jọ̀wọ́ ẹ [[Special:Userlogin|jáwọlé]] láti le bọ́ sí ojúewé tàbí ìgbéṣe yìí.',
 
 # Virus scanner
 'virus-badscanner' => "Ìtorapọ̀ búburú: awáìpasẹ̀ èràn aláìmọ̀n : ''$1''",
@@ -467,6 +470,7 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'yourname' => 'Orúkọ oníṣe:',
 'userlogin-yourname' => 'Orúkọ olùṣe',
 'userlogin-yourname-ph' => 'Ẹ kọ orúkọ olùṣe yín',
+'createacct-another-username-ph' => 'Ẹ tẹ orúkọ oníṣe',
 'yourpassword' => 'Ọ̀rọ̀ìpamọ́:',
 'userlogin-yourpassword' => 'Ọ̀rọ̀ìpamọ́',
 'userlogin-yourpassword-ph' => 'Ẹ kọ ọ̀rọ̀ìpamọ́ yín',
@@ -480,11 +484,11 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'yourdomainname' => 'Domain yín:',
 'password-change-forbidden' => 'Ẹ kò le ṣe ìyípadà ọ̀rọ̀ìpamọ́ lórí wiki yìí.',
 'externaldberror' => 'Bóyá àsìṣe ìfidájú ibùdó dátà ló ṣẹlẹ̀ tàbí ẹ kò jẹ́ gbígbà ní ààyè láti sọ àpamọ́ òde yín di ọ̀tun.',
-'login' => 'Ìwọlé',
+'login' => 'Ìwọlé',
 'nav-login-createaccount' => 'Ìwọlé / Ìforúkọ sílẹ̀',
 'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
 'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
-'userloginnocreate' => 'Ìwọlé',
+'userloginnocreate' => 'Ìwọlé',
 'logout' => 'Ìjáde',
 'userlogout' => 'Ìjáde',
 'notloggedin' => "Ẹ kò tí w'ọlé",
@@ -499,6 +503,9 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'userlogin-resetpassword-link' => 'Ṣé ẹ ti gbàgbé ọ̀rọ̀ìpamọ́ yín?',
 'helplogin-url' => 'Help:Ìwolé',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Ìrànlọ́wọ́ láti ìwọlé]]',
+'userlogin-loggedin' => 'Ẹ pilẹ̀ ti jáwọlé bíi {{GENDER:$1|$1}}.
+Ẹ lo fọ́ọ̀mù ìsàlẹ̀ látí jáwọlé gẹ́gẹ́ bíi oníṣe míràn.',
+'userlogin-createanother' => 'Ìdá àkópamọ́ míràn',
 'createacct-join' => 'Ẹ kọ ìsọ̀rọ̀nípa yín sísàlẹ̀',
 'createacct-emailrequired' => 'Àdírẹ̀sì email',
 'createacct-emailoptional' => 'Àdírẹ̀sì email (kò pọndandan)',
@@ -547,7 +554,7 @@ Olùṣeàmójútó tó típa ṣe àlàyé yìí: "$3".',
 'passwordtooshort' => 'Ọ̀rọ̀ìpamọ́ kò gbọ́dọ̀ dín ju {{PLURAL:$1|àmìlẹ́tà kan|àmìlẹ́tà $1}} lọ.',
 'password-name-match' => 'Ọ̀rọ̀ìpamọ́ yín gbọ́dọ̀ yàtọ̀ sí orúkọ oníṣe yín.',
 'password-login-forbidden' => 'Lílo orúkọ oníṣe àti ọ̀rọ̀ìpamọ́ yìí ti jẹ́ dídálẹ́kun.',
-'mailmypassword' => 'Ìfiránṣẹ́ ọ̀rọ̀ìpamọ́ tuntun',
+'mailmypassword' => 'Ìtúntò ọ̀rọ̀ìpamọ́',
 'passwordremindertitle' => 'Ọ̀rọ̀ìpamọ́ tuntun fún ìgbà díẹ̀ fún {{SITENAME}}',
 'passwordremindertext' => 'Ẹnìkan (ó ṣe é ṣe kó jẹ́ ẹ̀yin gan, láti àdírẹ́ẹ̀sì IP $1) bèrè fún
 ọ̀rọ̀ìpamọ́ tuntun fùn {{SITENAME}} ($4). A ti ṣ\'èdá ọ̀rọ̀ìpamọ́ ìgbádíẹ̀ fún
@@ -597,7 +604,7 @@ E-mail kankan kò ní jẹ́ fífiránṣẹ́ fún ìkankan nínú àwọn ojú
 'user-mail-no-body' => 'Ò fẹ́ fi email tí kò ní ọ̀rọ̀ kankan nínú ránsẹ́.',
 
 # Change password dialog
-'resetpass' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
+'changepassword' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
 'resetpass_announce' => 'Ẹ ti wọlé pẹ̀lú àmìọ̀rọ̀ e-mail ìgbàdíẹ̀.
 Láti parí ìmúwọlẹ́, ẹ gbọ́dọ̀ ṣètò ọ̀rọ̀ìpamọ́ tuntun níbí:',
 'resetpass_header' => "Ẹ ṣ'àyípadà ọ̀rọ̀ìpamọ́",
@@ -732,7 +739,7 @@ $1 ni ó ṣe ìdínà.
 'nosuchsectiontext' => 'Ẹ ti gbìyànjú láti ṣàtúnṣe abala tí kòsí.
 Ó ti le jẹ́ yíyípò tàbí píparẹ́ nígbà tí ẹ ún bojúwo ojúewé náà.',
 'loginreqtitle' => "Ẹ gbọ́dọ̀ kọ́kọ́ w'ọlé ná",
-'loginreqlink' => 'wọlé',
+'loginreqlink' => 'wọlé',
 'loginreqpagetext' => 'Ẹ gbọ́dọ̀ $1 láti wo àwọn ojúewé míràn.',
 'accmailtitle' => 'Ti fi ọ̀rọ̀ìpamọ́ ránṣẹ́.',
 'accmailtext' => "A ti fi ọ̀rọ̀ìpamọ́ àrìnàkò tí a pèsè fún [[User talk:$1|$1]] ránṣẹ́ sí $2. Ẹ le ṣe àyípadà ọ̀rọ̀ìpamọ́ fún àpamọ́ tuntun yìí ní ibi ''[[Special:ChangePassword|àyípadà ọ̀rọ̀ìpamọ́]]'' lẹ́yìn tí ẹ bá ti jáwọlé.",
@@ -979,10 +986,6 @@ Tó bá jẹ́ pé ẹ ti wọlé, ẹ lè dẹ́kun ìkìlọ̀ yìí nínù ab
 'revisiondelete' => 'Ṣe ìparẹ́/àìparẹ́ àwọn àtúnyẹ̀wò',
 'revdelete-nooldid-title' => 'Wíwá àtúnyẹ̀wò tíkòtọ́',
 'revdelete-nooldid-text' => 'Ó ṣe é ṣe pé ẹ kò tọ́ka (àwọn) àtúnyẹ̀wò àfojúsùn kankan láti ṣe ìmúṣe yìí, àtúnyẹ̀wò tí ẹ tọ́ka sí kò sí, tàbí ẹ̀ úngbìyànjú láti bọ àtúnyẹ̀wò yìí mọ́lẹ̀.',
-'revdelete-nologtype-title' => 'Kò sí irú àkọọ́lẹ̀ tó jẹ́ títọ́kasí',
-'revdelete-nologtype-text' => 'Ẹ kò tíì tọ́kasí irú àkọọ́lẹ̀ tí ìgbéṣe yìí yíò ṣẹlẹ̀ lórí.',
-'revdelete-nologid-title' => 'Àkọọ́lẹ̀ ìṣẹ̀lẹ̀ tíkòtọ́',
-'revdelete-nologid-text' => 'Ó ṣe é ṣe pé ẹ kò tọ́ka àkọọ́lẹ̀ àfojúsùn kankan láti ṣe ìmúṣe yìí, tàbí ìtìbọ̀ tí ẹ tọ́ka sí kò sí.',
 'revdelete-no-file' => 'Fáìlì tójẹ́ títọ́kasí kò sí.',
 'revdelete-show-file-confirm' => 'Ṣé ẹ ní ìdálójú pé ẹ fẹ́ wo àtúnyẹ̀wó píparẹ́ ti fáìlì "<nowiki>$1</nowiki>" látọjọ́ $2 ní ago $3?',
 'revdelete-show-file-submit' => 'Bẹ́ẹ̀ni',
@@ -1003,8 +1006,8 @@ Tó bá jẹ́ pé ẹ ti wọlé, ẹ lè dẹ́kun ìkìlọ̀ yìí nínù ab
 'revdelete-hide-user' => 'Orúkọ oníṣe/àdírẹ́ẹ̀sì IP olùtúnṣe',
 'revdelete-hide-restricted' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
 'revdelete-radio-same' => '(láì yípadà)',
-'revdelete-radio-set' => 'Híhàn',
-'revdelete-radio-unset' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-set' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-unset' => 'Híhàn',
 'revdelete-suppress' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
 'revdelete-unsuppress' => 'Ìyọkúrò àlà sí àwọn àtúnyẹ̀wò àdápadà',
 'revdelete-log' => 'Ìdíẹ̀:',
@@ -1016,8 +1019,6 @@ $1",
 'logdelete-failure' => "'''Ìtò ìhàn àkọọ́lẹ̀ kò ṣe é ṣe:'''
 $1",
 'revdel-restore' => 'ìyípadà ìríran',
-'revdel-restore-deleted' => 'àwọn àtúnyẹ̀wò píparẹ́',
-'revdel-restore-visible' => 'àwọn àtúnyẹ̀wò aṣeéfojúrí',
 'pagehist' => 'Ìtàn ojúewé',
 'deletedhist' => 'Ìtàn ìparẹ́',
 'revdelete-hide-current' => 'Àsìṣe ìbòmọ́lẹ̀ ohun ọjọ́ọdún $2, $1: Àtúnyẹ̀wò ìgbàyí nìyí.
@@ -1086,6 +1087,7 @@ Kò ṣe é bòmọ́lẹ̀.',
 'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
 'showhideselectedversions' => 'Ìfihàn/ìbòmọ́lẹ̀ àwọn àtúnyẹ̀wò ṣíṣàyàn',
 'editundo' => 'dápadà',
+'diff-empty' => '(Kò ní yàtọ̀)',
 'diff-multi' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe kan|àwọn oníṣe $2}} kò jẹ́ fífihàn)',
 'diff-multi-manyusers' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe|àwọn oníṣe}} tó pọ̀ju $2 lọ kò jẹ́ fífihàn)',
 'difference-missing-revision' => '{{PLURAL:$2|Àtúnyẹ̀wò kan|Àwọn àtúnyẹ̀wò $2}} ìyàtọ̀ yìí ($1) kò {{PLURAL:$2|sí|sí}}.
@@ -1096,12 +1098,8 @@ Kò ṣe é bòmọ́lẹ̀.',
 # Search results
 'searchresults' => 'Àwọn èsì àwárí',
 'searchresults-title' => 'Àwọn èsì àwárí fún "$1"',
-'searchresulttext' => 'Fún ẹ̀kúnrẹ́rẹ́ nípa ṣíṣe ìwárí {{SITENAME}}, ẹ̀ wo [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Ẹ ṣ\'àwáàrí fun \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|gbogbo ojúewé tó bẹ̀rẹ̀ pẹ̀lu "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|gbogbo ojúewé tó jápọ̀ mọ́ "$1"]])',
-'searchsubtitleinvalid' => "Ẹ ti ṣ'àwáàrí fun '''$1'''",
 'toomanymatches' => 'Àwọn ìbáramu ti pọ̀jù, ẹ jọ̀wọ́ ẹ gbìyànjú lọ́nà mìíràn',
 'titlematches' => 'Àkọlé ojúewé báramu',
-'notitlematches' => 'Kò sí àkọlé ojúewé tóbáramu',
 'textmatches' => 'Ọ̀rọ̀ ojúewé tóbáramu:',
 'notextmatches' => 'Kò sí ọ̀rọ̀ ojúewé tóbáramu',
 'prevn' => '{{PLURAL:$1|$1}} tókọjá',
@@ -1110,10 +1108,8 @@ Kò ṣe é bòmọ́lẹ̀.',
 'nextn-title' => '{{PLURAL:$1|Èsì $1 tóúnbọ̀|Àwọn èsì $1 tóúnbọ̀}}',
 'shown-title' => '{{PLURAL:$1|Ìfihàn èsì $1|Ìfihàn àwọn èsì $1}} nínú ojúewé kọ̀ọ̀kan',
 'viewprevnext' => 'Ẹ wo ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'Àwọn àṣàyàn àwáàrí',
 'searchmenu-exists' => "'''Ojúewé tó ún jẹ́ \"[[:\$1]]\" wà lórí wiki yìí'''",
 'searchmenu-new' => "'''Dá ojúewé \"[[:\$1]]\" sí orí wiki yìí!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Ẹ lọ sí àwọn ojúewé tí wọ́n ní àsopọ̀ yìí]]',
 'searchprofile-articles' => 'Àwọn ojúewé Àkóónú',
 'searchprofile-project' => 'Àwọn ojúewé Ìrànwọ́ àti Iṣẹ́-ọwọ́',
 'searchprofile-images' => 'Amóhùnmáwòrán',
@@ -1134,21 +1130,16 @@ Kò ṣe é bòmọ́lẹ̀.',
 'search-interwiki-default' => 'èsì $1',
 'search-interwiki-more' => '(tókù)',
 'search-relatedarticle' => 'Tóbáramu',
-'mwsuggest-disable' => 'Ìdálẹ́kun àwọn àbá ìṣàwárí',
 'searcheverything-enable' => 'Àwárí nínú gbogbo orúkọàyè:',
 'searchrelated' => 'tóbáramu',
 'searchall' => 'gbogbo',
 'showingresults' => "Ìfihàn nísàlẹ̀ títí dé {{PLURAL:$1|èsì '''1'''|àwọn èsì '''$1'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
 'showingresultsnum' => "Ìfihàn nísàlẹ̀ {{PLURAL:$3|èsì '''1'''|àwọn èsì '''$3'''}} láti ìbẹ̀rẹ̀ ní #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Èsì '''$1''' nínú ''''$3'''|Àwọn èsì '''$1 - $2''' nínú '''$3'''}} fún '''$4'''",
-'nonefound' => "'''Àkíyèsí''': Àwọn orúkọàyè mélòó níkan ni wọ́n jẹ́ wíwárí látìbẹ̀rẹ̀.
-Ẹ ṣàlẹ̀mọ́wájú ìtọrọ yín pẹ̀lú ''gbogbo'' láti ṣàwárí gbogbo àkóónú (nínú àwọn ojúewé ọ̀rọ̀, àwọn àdàkọ, a.bẹ.bẹ.lọ), tàbí kí ẹ lo orúkọàyè tóyẹ gẹ́gẹ́ bíi àlẹ̀mọ́wájú.",
 'search-nonefound' => 'Kò sí àwọn èsì kankan tóbáramu mọ́ ìtọrọ.',
-'powersearch' => 'Ṣe àwárí',
 'powersearch-legend' => 'Àwárí kíkúnrẹ́rẹ́',
 'powersearch-ns' => 'Àwárí nínú orúkọàyè:',
 'powersearch-redir' => 'Àkójọ àwọn àtúnjúwe',
-'powersearch-field' => 'Àwáàrí fún',
 'powersearch-togglelabel' => 'Ìyẹ̀wò:',
 'powersearch-toggleall' => 'Gbogbo wọn',
 'powersearch-togglenone' => 'Ìkankan',
@@ -1156,12 +1147,13 @@ Kò ṣe é bòmọ́lẹ̀.',
 'searchdisabled' => 'Ṣíṣàwárí nínú {{SITENAME}} wà ní dídálẹ́kun.
 Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 Àkíyèsí pé àwọn atọ́ka wọn fún àkóónú {{SITENAME}} le mọ́ jẹ́ tuntun.',
+'search-error' => 'Àṣìṣe ṣẹlẹ̀ fún ìwárí: $1',
 
 # Preferences page
 'preferences' => 'Àwọn ìfẹ́ràn',
 'mypreferences' => 'Àwọn ìfẹ́ràn',
 'prefs-edits' => 'Iye àwọn àtúnṣe:',
-'changepassword' => 'Ìyípadà ọ̀rọ̀ìpamọ́',
+'prefsnologintext2' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìyípadà àwọn ìfẹ́ràn yín.',
 'prefs-skin' => 'Skin (Àwọ̀)',
 'skin-preview' => 'Àkọ́yẹ̀wò',
 'datedefault' => 'Kò sí ìfẹ́ràn',
@@ -1184,13 +1176,11 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'prefs-email' => 'Àwọn àṣàyàn e-mail',
 'prefs-rendering' => 'Wíwò',
 'saveprefs' => 'Ìmúpamọ́',
-'resetprefs' => 'Ìpalẹ̀mọ́ àwọn àyípadà àìmúpamọ́',
 'restoreprefs' => 'Ìdápadà gbogbo áwọn ìtò àtìbẹ̀rẹ̀ (nínú gbogbo àwọn abala)',
 'prefs-editing' => 'Àtúnṣe ṣíṣẹ',
 'rows' => 'Àwọn ìtẹ̀lé gbọlọjọ:',
 'columns' => 'Àwọn ìtẹ̀lé gogoro:',
 'searchresultshead' => 'Àwárí',
-'resultsperpage' => 'Àwọn èsì ní ojúewé kọ̀ọ̀kan:',
 'stub-threshold' => 'Àlà fún idárú <a href="#" class="stub">àjàpọ̀ ẹ̀kúnrẹ́rẹ́</a> (bytes):',
 'stub-threshold-disabled' => 'Dídálẹ́kun',
 'recentchangesdays' => 'Iye ọjọ́ láti fihàn nínú àwọn àtúnṣe tuntun:',
@@ -1202,7 +1192,6 @@ Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
 'localtime' => 'Àkókò ìbílẹ̀:',
 'timezoneuseserverdefault' => 'Lo ti wiki ($1)',
 'timezoneuseoffset' => 'Òmíràn (ẹ tọ́ka ìyàtọ̀)',
-'timezoneoffset' => 'Ìyàtọ̀¹:',
 'servertime' => 'Àsìkò ẹ̀rọ-ìwọ̀fà:',
 'guesstimezone' => 'Parí látí inú awòtakùn',
 'timezoneregion-africa' => 'Áfríkà',
@@ -1261,6 +1250,8 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'prefs-dateformat' => 'Irú ọjọ́ọdún',
 'prefs-timeoffset' => 'Ìyàtọ̀ àsìkò',
 'prefs-advancedediting' => 'Àwọn àṣàyàn gíga',
+'prefs-editor' => 'Olùṣàtúnṣe',
+'prefs-preview' => 'Àkọ́yẹ̀wò',
 'prefs-advancedrc' => 'Àwọn àṣàyàn onígíga',
 'prefs-advancedrendering' => 'Àwọn àṣàyàn onígíga',
 'prefs-advancedsearchoptions' => 'Àwọn àṣàyàn onígíga',
@@ -1429,6 +1420,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 
 # Recent changes
 'nchanges' => '{{PLURAL:$1|àtúnṣe|àwọn àtúnṣe}} $1',
+'enhancedrc-history' => 'ìtàn',
 'recentchanges' => 'Àwọn àtúnṣe tuntun',
 'recentchanges-legend' => 'Àwọn àṣàyàn fún àtúnṣe tuntun',
 'recentchanges-summary' => 'Ẹ tẹ̀ lé àwọn àtúnṣe tuntun sí wiki lórí ojúewé yìí.',
@@ -1437,13 +1429,14 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'recentchanges-label-minor' => 'Àtùnṣe kékeré nìyí',
 'recentchanges-label-bot' => 'Rọ́bọ́ọ̀tì ni ó ṣe àtúnṣe yìí',
 'recentchanges-label-unpatrolled' => 'Àtúnṣe yìí kò tí ì jẹ́ onísíṣọ́',
-'recentchanges-legend-newpage' => '$1 - ojúewé tuntun',
-'rcnote' => "Lábẹ́ ni {{PLURAL:$1|àtúnṣe '''kan'''|àwọn àtúnṣe '''$1''' tí wọn gbẹ̀yìn}} láàrin {{PLURAL:$2|ọjọ́ kan|ọjọ́ '''$2'''}} sẹ́yìn ní ago $5, lọ́jọ́ $4.",
+'recentchanges-label-plusminus' => 'Iye bytes àtúnṣe sí ìtóbi ojúewé',
+'recentchanges-legend-heading' => "'''Ìtumọ̀:'''",
+'recentchanges-legend-newpage' => '(ẹ tún wo [[Special:NewPages|àtòjọ àwọn ojúewé tuntun]])',
 'rcnotefrom' => "Àwọn àtúnṣe láti ''''$2''' (títí dé '''$1''' hàn) lábẹ́.",
 'rclistfrom' => 'Àfihàn àwọn àtúnṣe tuntun nípa bíbẹ̀rẹ̀ láti $1',
 'rcshowhideminor' => '$1 àwọn àtúnṣe kékéèké',
 'rcshowhidebots' => '$1 àwọn bot',
-'rcshowhideliu' => '$1 àwọn oníṣe tótiwọlé',
+'rcshowhideliu' => '$1 àwọn oníṣe aforúkọsílẹ̀',
 'rcshowhideanons' => '$1 àwọn oníṣe aláìlórúkọ',
 'rcshowhidepatr' => '$1 àwọn àtúnṣe ọlùṣọ́',
 'rcshowhidemine' => '$1 àwọn àtúnṣe mi',
@@ -1460,7 +1453,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'rc_categories_any' => 'Èyíkéyìí',
 'rc-change-size-new' => '$1 {{PLURAL:$1|byte|bytes}} lẹ́yìn àtúnṣe',
 'newsectionsummary' => '/* $1 */ abala tuntun',
-'rc-enhanced-expand' => 'Ìfihàn ẹ̀kúnrẹ́rẹ́ (JavaScript pọndandan)',
+'rc-enhanced-expand' => 'Ìfihàn ẹ̀kúnrẹ́rẹ́',
 'rc-enhanced-hide' => 'Ìfipamọ́ ẹ̀kúnrẹ́rẹ́',
 'rc-old-title' => 'dídá tẹ́lẹ̀tẹ́lẹ̀ bíi "$1"',
 
@@ -1480,7 +1473,7 @@ Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iṣẹ́ yín fún yín.',
 'reuploaddesc' => 'Fagilé ìrùsókè kí ó tó padà sí fọ́ọ̀mù ìrùsókè',
 'upload-tryagain' => 'Ìkóólẹ̀ fáìlì ìjúwe aláàtúnṣe',
 'uploadnologin' => 'Ẹ kò tíì wọlé',
-'uploadnologintext' => 'Ẹ gbọ́dọ̀ [[Special:UserLogin|wọlè]] láti ṣe ìrùsókè faili.',
+'uploadnologintext' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìrùsókè fáìlì.',
 'upload_directory_missing' => 'Àpò ìrùsókè ($1) kòsí bẹ́ẹ̀sìni kò le jẹ́ dídá látọwọ́ ẹ̀rọ-ìwọ̀fà.',
 'upload_directory_read_only' => 'Àpò ìrùsókè ($1) kò ṣeékọ sí nínú látọwọ́ ẹ̀rọ-ìwọ̀fà.',
 'uploaderror' => 'Àsìse ìrùsókè',
@@ -1735,6 +1728,8 @@ Tó bá jẹ́ jíjọ̀ gẹ́gẹ́bí oníṣe, àwọn fáìlì tí oníṣe
 'listfiles_size' => 'Ìtóbi',
 'listfiles_description' => 'Ìjúwe',
 'listfiles_count' => 'Àwọn àtẹ̀jáde',
+'listfiles-latestversion-yes' => 'Bẹ́ẹ̀ni',
+'listfiles-latestversion-no' => 'Bẹ́ẹ̀kọ́',
 
 # File description page
 'file-anchor-link' => 'Fáìlì',
@@ -1926,10 +1921,8 @@ Oríìlà kọ̀ọ̀kan ní àjápọ̀ sí àtúnjúwe àkọ́kọ́ àti èk
 'protectedpages' => 'Àwọn ojúewé aláàbò',
 'protectedpages-indef' => 'Àwọn àbò aláìlópin',
 'protectedpages-cascade' => 'Àwọn àbò atẹ̀léra nìkan',
-'protectedpagestext' => 'Àwọn ojúewé ìsàlẹ̀ yìí jẹ́ dídáàbòbò láti yínìpòdà tàbí síṣàtúnṣe',
 'protectedpagesempty' => 'Kò sí àwọn ojúewé kankan tó ní àbò pẹ̀lú àwọn pàrámítà wọ̀nyí.',
 'protectedtitles' => 'Àwọn àkọlé ajẹ́dídáàbòbò',
-'protectedtitlestext' => 'Àwọn àkọlé ìsàlẹ̀ yìí jẹ́ dídáàbòbò láti dá',
 'protectedtitlesempty' => 'Kò sí àwọn àkolé kankan tó ní àbò pẹ̀lú àwọn pàrámítà wọ̀nyí.',
 'listusers' => 'Àkójọ àwọn oníṣe',
 'listusers-editsonly' => 'Ìfihàn àwọn oníṣe tí wọ́n ní àtúnṣe níkan',
@@ -1980,9 +1973,6 @@ Oríìlà kọ̀ọ̀kan ní àjápọ̀ sí àtúnjúwe àkọ́kọ́ àti èk
 'allpagesto' => 'Ìfihàn àwọn ojúewé tó parí pẹ̀lú:',
 'allarticles' => 'Gbogbo ojúewé',
 'allinnamespace' => 'Gbogbo ojúewé ($1 namespace)',
-'allnotinnamespace' => 'Gbogbo ojúewé (tí kòsí ní $1 namespace)',
-'allpagesprev' => 'Tókọjá',
-'allpagesnext' => 'Tóúnbọ̀',
 'allpagessubmit' => 'Lọ',
 'allpagesprefix' => 'Ìgbéhàn àwọn ojúewé tóbẹ̀rẹ̀ pẹ̀lú:',
 'allpagesbadtitle' => 'Àkọlé ojúewé náà kò ní ìbáramu, tàbí ó ní àlẹ̀mọ́wájú aláàrin èdè tàbí aláàrin wiki.
@@ -2323,7 +2313,6 @@ Tó bá jẹ́ báyìí, ẹ gbọ́dọ̀ yọ àmì ihò-àpótí tàbí kí 
 'undeletebtn' => 'Dápadà',
 'undeletelink' => 'wò/dápadà',
 'undeleteviewlink' => 'wo',
-'undeletereset' => 'Ìtúnṣètò',
 'undeleteinvert' => 'Pàṣípààrọ̀ àsàyàn',
 'undeletecomment' => 'Ìdíẹ̀:',
 'undeletedrevisions' => '{{PLURAL:$1|Àtúnyẹ̀wò 1|Àwọn àtúnyẹ̀wò $1}} ti jẹ́ dídápadà',
@@ -2365,7 +2354,7 @@ $1',
 'contributions' => 'Àwọn àfikún {{GENDER:$1|oníṣe}}',
 'contributions-title' => 'Àwọn àfikún oníṣe fún $1',
 'mycontris' => 'Àwọn àfikún',
-'contribsub2' => 'Fún $1 ($2)',
+'contribsub2' => 'Fún {{GENDER:$3|$1}} ($2)',
 'nocontribs' => 'Kò sí àtúnṣe tuntun tó bá àwárí mu.',
 'uctop' => '(lówọ́)',
 'month' => 'Láti osù (àti sẹ́yìn):',
@@ -2413,7 +2402,6 @@ $1',
 'block' => 'Dínà oníṣe',
 'unblock' => 'Ìmúkúrò ìdínà oníṣe',
 'blockip' => 'Dínà oníṣe',
-'blockip-title' => 'Ìdínà oníṣẹ',
 'blockip-legend' => 'Ìdínà oníṣẹ',
 'blockiptext' => 'Ẹ lo fọ́ọ̀mù ìsàlẹ̀ láti dínà ìle kọ láti ọ̀dọ̀ àdírẹ́ẹ̀sì IP pàtó kan tàbí orúkọ oníṣe.
 Ẹyí gbọ́dọ̀ jẹ́ síṣe láti dínà ìṣèbàjẹ́ nìkan, àtí gẹ́gẹ́bí [[{{MediaWiki:Policy-url}}|ètò ìsiṣẹ́]].
@@ -2421,7 +2409,6 @@ $1',
 'ipadressorusername' => 'Àdírẹ́ẹ̀sì IP tàbí orúkọ oníṣe:',
 'ipbexpiry' => 'Ìwásópin:',
 'ipbreason' => 'Ìdíẹ̀:',
-'ipbreasonotherlist' => 'Ìdí mìíràn',
 'ipbreason-dropdown' => '*Àwọn ìdí fún ìdínà
 ** Àròyé tí kò jẹ́ òtítọ́
 ** Yíyọ àkóónú kúrò nínú ojúewé
@@ -2437,8 +2424,6 @@ $1',
 'ipbsubmit' => 'Dínà oníṣe yìí',
 'ipbother' => 'Àkókò míràn:',
 'ipboptions' => '2 wákàtí:2 hours,1 ọjọ́:1 day,3 ọjọ́:3 days,1 ọ̀ṣẹ̀:1 week,2 ọ̀ṣẹ̀:2 weeks,1 osù:1 month,3 osù:3 months,6 osù:6 months,1 ọdún:1 year,àílópin:infinite',
-'ipbotheroption' => 'òmíràn',
-'ipbotherreason' => 'Ìdí míràn/àfikún:',
 'ipbhidename' => 'Ìbómọ́lẹ̀ orúkọ oníṣe nínú àwọn àtúnṣe àti àwọn àkójọ',
 'ipbwatchuser' => 'Ìmójútó àwọn ojúewé oníṣe àti ọ̀rọ̀ oníṣe yìí',
 'ipb-disableusertalk' => 'Ìdínà oníṣe yìí láti ṣàtúnṣe ojúewé ọ̀rọ̀ wọn lásìkò kannáà tí wọ́n jẹ́ dídílọ́nà',
@@ -2529,7 +2514,6 @@ Sùgbọ́n ó jẹ́ dídílọ́nà gẹ́gẹ́bí ìkan nínú ìgbàjá $2,
 'sorbsreason' => 'Àdírẹ́ẹ̀sì IP yín jẹ́ títòjọ bíi ẹ̀rọ-ìwọ̀fà ẹlòmíràn àsíílẹ̀ nínú DNSBL tí {{SITENAME}} lò.',
 'sorbs_create_account_reason' => 'Àdírẹ́ẹ̀sì IP yín jẹ́ títòjọ bíi ẹ̀rọ-ìwọ̀fà ẹlòmíràn àsíílẹ̀ nínú DNSBL tí {{SITENAME}} lò.
 Ẹ kò le dá àpamọ́.',
-'cant-block-while-blocked' => 'Ẹ kò le dínà àwọn oníṣe míràn lásìkò kannáà tí ẹ jẹ́ dídílọ́nà.',
 'cant-see-hidden-user' => 'Oníṣe tí ẹ fẹ́ dínà tilẹ̀ ti jẹ́ dídílọ́nà, ó sì jẹ́ bíbòmọ́lẹ̀.
 Nítorípé ẹ kò ní ẹ̀tọ́ ìbòmọ́lẹ̀ oníṣe, ẹ kò le rí tàbí ṣàtúnṣe ìdínà oníṣe náà.',
 'ipbblocked' => 'Ẹ kò le dínà tàbí ṣe àìdínà àwọn oníṣe míràn nítorípé ẹ̀yin gangan jẹ́ dídínà.',
@@ -2589,7 +2573,6 @@ Ojúṣe yín ni láti rí pé àwọn àjápọ̀ únnawọ́ sí ibi tó yẹ
 Tí ó bá jẹ́ báhun, ẹ gbúdọ̀ ṣe ìyípò rẹ̀ fúnra yín.",
 'movearticle' => 'Yípò ojúewé:',
 'moveuserpage-warning' => "'''Ìkìlọ̀:''' Ẹ ti fẹ́ yí ipò ojúewé oníṣe kan padà. Ẹ kíyèsi pé ojúewé ọ̀hún nìkan ni yíò jẹ́ yíyípòpadà, oníṣe ọ̀hún ''kò'' ní jẹ́ títúnsọlọ́rúkọ.",
-'movenologin' => 'Ẹ kò tíì wọlé',
 'movenologintext' => 'Ẹ gbọ́dọ̀ jẹ́ oníṣe ajẹ́fíforúkọsílẹ̀ kí ẹ sì [[Special:UserLogin|wọlẹ́]] láti yípò ojúewé kan.',
 'movenotallowed' => 'Ẹ kò ní ìyọ̀nda láti yípò ojúewé.',
 'movenotallowedfile' => 'Ẹ kò ní ìyọ̀nda láti yípò fáìlì.',
@@ -2605,9 +2588,6 @@ Tí ó bá jẹ́ báhun, ẹ gbúdọ̀ ṣe ìyípò rẹ̀ fúnra yín.",
 'articleexists' => 'Ojúewé pẹ̀lú orúkọ un wà tẹ́lẹ̀, tàbí kójẹ́pé orúkọ tí ẹ yàn kò ní ìbámu.
 Ẹ jọ̀wọ́ ẹ yan orúkọ mìíràn.',
 'cantmove-titleprotected' => 'Ẹ kò le yí ojúewé kan padà sí ibí yìí, nítorípé àkọlé tuntun tí ẹ kọ ti jẹ́ dídílọ́nà láti jẹ́ dídá.',
-'talkexists' => "'''Bótilẹ̀jẹ́pé ìyípò ojúewé ọ̀hún jásí rere, ojúewé ọ̀rọ̀ kò se é yípọ̀ nítorípé ìkan tiwà ní àkọlé tuntun.
-Ẹ jọ̀wọ́ ẹ ti fún ra yín dà wọ́n pọ̀.'''",
-'movedto' => 'tiyípò sí',
 'movetalk' => 'Yípò ojúewé ọ̀rọ̀ rẹ̀',
 'move-subpages' => 'Yípò àwọn ọmọ ojúewé (títí dé $1)',
 'move-talk-subpages' => 'Ìyípòdà àwọn ojúewé abẹ́ ojúewé ọ̀rọ̀ (títí dé $1)',
@@ -2960,7 +2940,7 @@ Tí ẹ bá jẹ́ ó ṣiṣẹ́, ẹ̀rọ sístẹ́mù yín le kó sí ewu.
 'svg-long-desc' => 'faili SVG, pẹ̀lú $1 × $2 pixels, ìtòbi faili: $3',
 'svg-long-desc-animated' => 'Fáìlì SVG alámùúrìn, tó jẹ́ $1 × $2 pixels, ìtóbi fáìlì: $3',
 'svg-long-error' => 'Fáìlì SVG àìyẹ: $1',
-'show-big-image' => 'Pẹ̀lú ìgbéhàn gíga',
+'show-big-image' => 'Fáìlì àtìbẹ̀rẹ̀',
 'show-big-image-preview' => 'Ìtóbi ìkọ́yẹ̀wò yìí: $1.',
 'show-big-image-other' => '{{PLURAL:$2|Ìgbéhàn|Àwọn ìgbéhàn}} míràn: $1.',
 'show-big-image-size' => '$1 × $2 pixels',
@@ -3276,15 +3256,10 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'exif-urgency-low' => 'Kúkúrú ($1)',
 'exif-urgency-high' => 'Gíga ($1)',
 
-# External editor support
-'edit-externally' => "Ẹ lo ìmúlò òde láti ṣ'àtúnṣe fáìlì yìí",
-'edit-externally-help' => '(Ẹ wo [https://www.mediawiki.org/wiki/Manual:External_editors ìlànà ìṣètò] fún ẹ̀kúnrẹ́rẹ́)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'gbogbo',
 'namespacesall' => 'gbogbo',
 'monthsall' => 'gbogbo',
-'limitall' => 'gbogbo',
 
 # Email address confirmation
 'confirmemail' => "Ṣè'múdájú àdírẹ́ẹ̀sì e-mail",
@@ -3303,7 +3278,6 @@ Tóbájẹ́pé fáìlì ọ̀hún ti jẹ́ títúnṣe sí bóṣewà ní bẹ
 'confirmemail_success' => 'Àdírẹ́ẹ́sì e-mail yín ti jẹ́ mímúdájú.
 Ẹ le [[Special:UserLogin|wọlé]] nísìnhin láti gbádùn wiki yìí.',
 'confirmemail_loggedin' => 'Àdírẹ́ẹ̀sì e-mail yín ti dájú.',
-'confirmemail_error' => 'Àsìṣe ṣẹlẹ̀ láti fi ìmójútó yín pamọ́.',
 'confirmemail_subject' => 'Ìmúdájú àdírẹ́ẹ̀sì e-mail fún {{SITENAME}}',
 'confirmemail_body' => 'Ẹnìkan, bóyá ẹ̀yin sì ni, láti àdírẹ́ẹ̀sì IP $1,
 ti ṣe ìforúkọsílẹ̀ àpamọ́ kan "$2" pẹ̀lú àdírẹ́ẹ̀sì e-mail yìí lórí {{SITENAME}}.
@@ -3374,6 +3348,9 @@ $5
 'imgmultigo' => 'Lọ!',
 'imgmultigoto' => 'Lọ sí ojúewé $1',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(èdè látìbẹ̀rẹ̀)',
+
 # Table pager
 'ascending_abbrev' => 'ròkè',
 'descending_abbrev' => 'relẹ̀',
@@ -3508,7 +3485,6 @@ $5
 
 # Special:ComparePages
 'comparepages' => 'Ìfiwéra àwọn ojúewé',
-'compare-selector' => 'Ìfiwéra àwọn àtúnyẹ̀wò ojúewé',
 'compare-page1' => 'Ojúewé 1',
 'compare-page2' => 'Ojúewé 2',
 'compare-rev1' => 'Àtúnyẹ̀wò 1',
@@ -3654,4 +3630,7 @@ Bíbẹ̀ẹ̀kọ́, ẹ le lo fọ́ọ̀mù ìsàlẹ̀. Ẹjọ́ yín yíò
 # Image rotation
 'rotate-comment' => 'Àwòrán jẹ́ mímúyípo ní {{PLURAL:$1|degree|ìyí}} $1 bíi ọwọ́ ago',
 
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Àkọ́yẹ̀wò',
+
 );
index 5e72144..2e3b9c1 100644 (file)
@@ -18,6 +18,7 @@
  * @author Waihorace
  * @author William915
  * @author Wong128hk
+ * @author Xiaomingyan
  * @author Yfdyh000
  */
 
@@ -101,7 +102,6 @@ $specialPageAliases = array(
        'Ancientpages'              => array( '舊版' ),
        'Blankpage'                 => array( '空版' ),
        'Block'                     => array( '封' ),
-       'Blockme'                   => array( '封我' ),
        'Booksources'               => array( '書本來源' ),
        'BrokenRedirects'           => array( '斷鏈' ),
        'Categories'                => array( '分類' ),
@@ -112,7 +112,6 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '開戶' ),
        'Deadendpages'              => array( '掘頭頁' ),
        'DeletedContributions'      => array( '刪咗嘅貢獻' ),
-       'Disambiguations'           => array( '搞清楚頁' ),
        'DoubleRedirects'           => array( '雙重跳轉' ),
        'EditWatchlist'             => array( '改監視清單' ),
        'Emailuser'                 => array( '電郵用戶' ),
@@ -163,7 +162,7 @@ $specialPageAliases = array(
        'Revisiondelete'            => array( '修訂版本刪除' ),
        'Search'                    => array( '搜索' ),
        'Shortpages'                => array( '短版' ),
-       'Specialpages'              => array( '特別頁' ),
+       'Specialpages'              => array( '專門版' ),
        'Statistics'                => array( '統計' ),
        'Tags'                      => array( '標籤' ),
        'Unblock'                   => array( '解封' ),
@@ -256,7 +255,6 @@ $messages = array(
 'tog-minordefault' => '預設全部編輯做小修改',
 'tog-previewontop' => '喺修改欄上方顯示預覽',
 'tog-previewonfirst' => '第一次修改時顯示預覽',
-'tog-nocache' => '停用瀏覽器頁面快取',
 'tog-enotifwatchlistpages' => '當響我張監視清單度嘅頁面有修改時電郵通知我',
 'tog-enotifusertalkpages' => '個人留言版有修改時電郵通知我',
 'tog-enotifminoredits' => '小修改都要電郵通知我',
@@ -378,7 +376,6 @@ $messages = array(
 'qbedit' => '編輯',
 'qbpageoptions' => '呢一頁',
 'qbmyoptions' => '我嘅選項',
-'qbspecialpages' => '特別頁',
 'faq' => 'FAQ',
 'faqpage' => 'Project:FAQ',
 
@@ -576,9 +573,6 @@ $1',
 'perfcached' => '以下嘅資料係嚟自快取,可能唔係最新嘅。 A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
 '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 />
-函數: $1<br />
-查詢: $2',
 'viewsource' => '睇吓原始碼',
 'actionthrottled' => '動作已壓制',
 'actionthrottledtext' => '基於反垃圾嘢嘅考量,你而家響呢段短時間之內限制咗去做呢一個動作,而你已經超過咗個上限。請響幾分鐘之後再試過。',
@@ -685,7 +679,7 @@ $1',
 'php-mail-error-unknown' => '響 PHP 嘅 mail() 參數度出現咗未知嘅錯誤',
 
 # Change password dialog
-'resetpass' => '改密碼',
+'changepassword' => '改密碼',
 'resetpass_announce' => '你已經用咗一個臨時電郵碼登入。要完成登入,你一定要響呢度定一個新嘅密碼:',
 'resetpass_text' => '<!-- 響呢度加入文字 -->',
 'resetpass_header' => '改戶口密碼',
@@ -989,10 +983,6 @@ $1',
 'revdelete-nooldid-title' => '無效嘅目標修訂',
 'revdelete-nooldid-text' => '講清用邊個修訂去做呢樣嘢、
 所指定嘅修訂唔存在,或者你試緊去隱藏現時嘅修訂。',
-'revdelete-nologtype-title' => '無畀到紀錄類型',
-'revdelete-nologtype-text' => '你未指定一種紀錄類型去做呢個動作。',
-'revdelete-nologid-title' => '無效嘅日誌項目',
-'revdelete-nologid-text' => '你未指定一個目標日誌項目去進行呢個動作或者指定嘅項目唔存在。',
 'revdelete-no-file' => '指定嘅檔案未存在。',
 'revdelete-show-file-confirm' => '你係咪真係想去睇響$2 $3刪咗 "$1" 嘅檔案修訂?',
 'revdelete-show-file-submit' => '係',
@@ -1025,8 +1015,6 @@ $1",
 'logdelete-failure' => "'''事件可見性唔能夠更新:'''
 $1",
 'revdel-restore' => '改可見性',
-'revdel-restore-deleted' => '刪除咗嘅修訂',
-'revdel-restore-visible' => '睇到嘅修訂',
 'pagehist' => '頁面歷史',
 'deletedhist' => '刪除咗嘅歷史',
 'revdelete-hide-current' => '隱藏緊響$1 $2嘅項目錯誤:呢個係現時嘅修訂,唔可以隱藏。',
@@ -1091,12 +1079,8 @@ $1",
 # 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' => '前$1',
@@ -1105,10 +1089,8 @@ $1",
 'nextn-title' => '後$1項結果',
 'shown-title' => '每版顯示$1項結果',
 'viewprevnext' => '去睇 ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => '搵嘢選項',
 'searchmenu-exists' => "'''響呢個wiki度有一版叫做\"[[:\$1]]\"。'''",
 'searchmenu-new' => "'''響呢個wiki度開呢版\"[[:\$1]]\"!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去睇以呢個做開頭嘅版]]',
 'searchprofile-articles' => '內容頁',
 'searchprofile-project' => '幫手同計劃頁',
 'searchprofile-images' => '多媒體',
@@ -1129,20 +1111,16 @@ $1",
 'search-interwiki-default' => '$1項結果:',
 'search-interwiki-more' => '(更多)',
 'search-relatedarticle' => '有關',
-'mwsuggest-disable' => '停用AJAX建議',
 'searcheverything-enable' => '搵全部空間名',
 'searchrelated' => '有關',
 'searchall' => '全部',
 'showingresults' => "'自#'''$2'''起顯示最多'''$1'''個結果。",
 'showingresultsnum' => "自#'''$2'''起顯示'''$3'''個結果。",
 'showingresultsheader' => "對'''$4'''嘅{{PLURAL:$5|第'''$1'''到第'''$3'''項結果|第'''$1 - $2'''項,共'''$3'''項結果}}",
-'nonefound' => "'''注意''': 只有一啲空間名係會作預設搵嘢。試吓''all:''去搵全部嘅嘢(包埋討論版、模等),或用需要嘅空間名做前綴。",
 'search-nonefound' => '響個查詢度無結果配合。',
-'powersearch' => '進階搵嘢',
 'powersearch-legend' => '進階搵嘢',
 'powersearch-ns' => '喺以下嘅空間名度搵:',
 'powersearch-redir' => '彈去清單',
-'powersearch-field' => '搵',
 'powersearch-togglelabel' => '查:',
 'powersearch-toggleall' => '全部',
 'powersearch-togglenone' => '無',
@@ -1153,7 +1131,6 @@ $1",
 'preferences' => '喜好設定',
 'mypreferences' => '自訂喜好',
 'prefs-edits' => '編輯數:',
-'changepassword' => '改密碼',
 'prefs-skin' => '畫面',
 'skin-preview' => '預覽',
 'datedefault' => '冇喜好',
@@ -1173,13 +1150,11 @@ $1",
 'prefs-email' => '電郵選項',
 'prefs-rendering' => '外觀',
 'saveprefs' => '儲存',
-'resetprefs' => '清除未保存嘅更改',
 'restoreprefs' => '恢復全部預設設定',
 'prefs-editing' => '編輯中',
-'rows' => ':',
-'columns' => ':',
+'rows' => '行數:',
+'columns' => '列數:',
 'searchresultshead' => '搵嘢',
-'resultsperpage' => '每頁顯示嘅擊中數:',
 'stub-threshold' => '<a href="#" class="stub">楔位連結</a>格式門檻 (bytes):',
 'stub-threshold-disabled' => '閂咗',
 'recentchangesdays' => '最近更改中嘅顯示日數:',
@@ -1191,7 +1166,6 @@ $1",
 'localtime' => '本地時間:',
 'timezoneuseserverdefault' => '用伺服器預設值',
 'timezoneuseoffset' => '其他 (指定偏移)',
-'timezoneoffset' => '偏移¹:',
 'servertime' => '伺機器時間:',
 'guesstimezone' => '由瀏覽器填上',
 'timezoneregion-africa' => '非洲',
@@ -1418,7 +1392,6 @@ $1",
 'recentchanges-label-bot' => '呢次編輯係由機械人進行',
 'recentchanges-label-unpatrolled' => '呢次編輯重未巡查過',
 'recentchanges-legend-newpage' => '$1 - 新版',
-'rcnote' => "以下係響$4 $5,近'''$2'''日嘅最後'''$1'''次修改。",
 'rcnotefrom' => "以下係自'''$2'''嘅更改(顯示到'''$1''')。",
 'rclistfrom' => '顯示由$1嘅新更改',
 'rcshowhideminor' => '$1小編輯',
@@ -1815,10 +1788,8 @@ $1',
 'protectedpages' => '保護頁',
 'protectedpages-indef' => '只有無期保謢頁',
 'protectedpages-cascade' => '只有連串保護頁',
-'protectedpagestext' => '以下嘅頁面係受保頁面,唔能夠移動或編輯',
 'protectedpagesempty' => '響呢啲參數度,現時無頁面響度保護緊。',
 'protectedtitles' => '保護咗嘅標題',
-'protectedtitlestext' => '下面係一個保護咗唔䦒得嘅標題',
 'protectedtitlesempty' => '響呢啲參數之下並無標題保護住。',
 'listusers' => '用戶一覽',
 'listusers-editsonly' => '只顯示有編輯嘅用戶',
@@ -1867,9 +1838,6 @@ $1',
 'allpagesto' => '顯示以下位置結束嘅頁面:',
 'allarticles' => '所有頁面',
 'allinnamespace' => '所有頁面(喺$1空間名入面)',
-'allnotinnamespace' => '所有頁面(唔喺$1空間名入面)',
-'allpagesprev' => '上一頁',
-'allpagesnext' => '下一頁',
 'allpagessubmit' => '去搵',
 'allpagesprefix' => '用以下開頭嘅頁面:',
 'allpagesbadtitle' => '提供嘅頁面名無效,又或者有一個跨語言或跨wiki嘅字頭。佢可能包括一個或多個字係唔可以用響標題度嘅。',
@@ -2159,7 +2127,6 @@ wiki: $PAGEEDITOR_WIKI
 'undeletebtn' => '救返',
 'undeletelink' => '睇/救',
 'undeleteviewlink' => '睇',
-'undeletereset' => '重設',
 'undeleteinvert' => '反選',
 'undeletecomment' => '原因:',
 'undeletedrevisions' => '$1個修訂已經救返',
@@ -2239,7 +2206,6 @@ $1',
 
 # Block/unblock
 'blockip' => '封鎖用戶',
-'blockip-title' => '封鎖用戶',
 'blockip-legend' => '封鎖用戶',
 'blockiptext' => '使用以下嘅表格嚟去阻止指定嘅IP地址或用戶名嘅寫權限。
 僅當僅當為咗避免有版畀人惡意破壞嘅時候先可以使用,而且唔可以違反[[{{MediaWiki:Policy-url}}|政策]]。
@@ -2247,7 +2213,6 @@ $1',
 'ipadressorusername' => 'IP地址或用戶名:',
 'ipbexpiry' => '期限:',
 'ipbreason' => '原因:',
-'ipbreasonotherlist' => '其它原因',
 'ipbreason-dropdown' => '*共用封鎖原因
 ** 插入錯嘅資料
 ** 響頁面度拎走
@@ -2262,8 +2227,6 @@ $1',
 'ipbsubmit' => '封鎖呢位用戶',
 'ipbother' => '其它時間:',
 'ipboptions' => '兩個鐘頭:2 hours,一日:1 day,三日:3 days,一個禮拜:1 week,兩個禮拜:2 weeks,一個月:1 month,三個月:3 months,六個月:6 months,一年:1 year,終身:infinite',
-'ipbotheroption' => '其他',
-'ipbotherreason' => '其它/附加嘅原因:',
 'ipbhidename' => '響編輯同名單度隱藏用戶名',
 'ipbwatchuser' => '監視呢位用戶嘅用戶頁同埋佢嘅討論頁',
 'ipb-change-block' => '用呢啲設定重新封鎖用戶',
@@ -2329,7 +2292,6 @@ $1',
 'proxyblockreason' => '你嘅IP係一個公開(指任何人都可以用,無須身份認證?)嘅代理地址,因此被封鎖。請聯絡你嘅Internet服務提供商或技術支援,向佢哋報告呢個嚴重嘅安全問題。',
 'sorbsreason' => '你嘅IP地址已經畀響{{SITENAME}}度用嘅DNSBL列咗做公開代理。',
 'sorbs_create_account_reason' => '你嘅IP地址已經畀響{{SITENAME}}度用嘅DNSBL列咗做公開代理。你唔可以開新戶口。',
-'cant-block-while-blocked' => '當你被封鎖嗰陣唔可以封鎖其他用戶。',
 'cant-see-hidden-user' => '你試緊封鎖嘅用戶已經封鎖咗或者隱藏咗。
 你而家冇隱藏用戶嘅權限,你唔可以睇或者改呢位用戶嘅封鎖。',
 'ipbblocked' => '你唔可以封鎖或者解封其他用戶,因為你自己已經俾人封鎖咗。',
@@ -2384,7 +2346,6 @@ $1',
 喺呢啲情況下,需要嘅話你唯有手動搬同合併個頁。",
 'movearticle' => '搬頁:',
 'moveuserpage-warning' => "'''警告:'''你將會搬一個用戶版。請留意嗰版搬咗之後個用戶係''唔會''改名。",
-'movenologin' => '未登入',
 'movenologintext' => '你要係註冊用戶而且要[[Special:UserLogin|登入]]咗先可以搬頁',
 'movenotallowed' => '你並無權限去搬版。',
 'movenotallowedfile' => '你並無權限去搬檔。',
@@ -2399,8 +2360,6 @@ $1',
 'movepage-moved-noredirect' => '已經壓制開個跳轉。',
 'articleexists' => '已經有頁面叫嗰個名,或者你揀嘅名唔合法。請揀過第二個名。',
 'cantmove-titleprotected' => '你唔可以搬呢版去呢個位置,因為個新標題已經保護咗,唔畀開版。',
-'talkexists' => "'''頁面本身已經成功搬咗,但係個討論頁搬唔到,因為已經有一個同名嘅討論頁。請手工合併佢哋。'''",
-'movedto' => '搬去',
 'movetalk' => '搬相應嘅討論頁',
 'move-subpages' => '搬細頁(上到去$1版)',
 'move-talk-subpages' => '搬細討論頁(上到去$1版)',
@@ -3034,15 +2993,10 @@ Variants for Chinese language
 'exif-gpsdirection-t' => '真實方向',
 'exif-gpsdirection-m' => '地磁方向',
 
-# External editor support
-'edit-externally' => '用外面程式來改呢個檔案',
-'edit-externally-help' => '(去[https://www.mediawiki.org/wiki/Manual:External_editors setup instructions] 睇多啲資料)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
 'monthsall' => '全部',
-'limitall' => '全部',
 
 # Email address confirmation
 'confirmemail' => '確認電郵地址',
@@ -3060,7 +3014,6 @@ Variants for Chinese language
 'confirmemail_needlogin' => '你需要先$1去確認你嘅電郵地址。',
 'confirmemail_success' => '你嘅電郵地址已經得到確認。你而家可以[[Special:UserLogin|登入]]同盡情享受wiki啦。',
 'confirmemail_loggedin' => '你嘅電郵地址現已得到確認。',
-'confirmemail_error' => '儲存你嘅確認資料嘅時候有小小嘢發生咗意外。',
 'confirmemail_subject' => '{{SITENAME}}電郵地址確認',
 'confirmemail_body' => '有人(好有可能係嚟自你嘅IP地址 $1)已經用呢個電郵地址喺{{SITENAME}}度註冊咗帳戶"$2"。
 
@@ -3270,7 +3223,6 @@ MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅
 
 # Special:ComparePages
 'comparepages' => '比較版',
-'compare-selector' => '比較版修訂',
 'compare-page1' => '第1版',
 'compare-page2' => '第2版',
 'compare-rev1' => '修訂1',
index bf2e700..4614841 100644 (file)
@@ -82,7 +82,6 @@ $messages = array(
 'qbfind' => 'Ra',
 'qbedit' => 'Gaij',
 'qbmyoptions' => 'Yieb gou',
-'qbspecialpages' => 'Doenghmae daegxsei',
 'faq' => 'Cam caeuq dap',
 'faqpage' => 'Project:Cam caeuq dap',
 
@@ -121,14 +120,13 @@ $messages = array(
 'jumptonavigation' => 'Dazzaeuh',
 'jumptosearch' => 'Ra',
 
-# 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).
+# 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).
 'aboutsite' => 'Gvanhyih {{SITENAME}}',
 'aboutpage' => 'Project:gvanhyih',
 'currentevents' => 'Saehgienh seizneix',
 'disclaimers' => 'gangjmingz mienxcwz',
 'disclaimerpage' => 'Project:Itbuen mienxcwz',
 'edithelp' => 'Caeuq mungz san-zonz',
-'edithelppage' => 'Help:gaij',
 'helppage' => 'Help:moegloeg',
 'mainpage' => 'Yiebdaeuz',
 'mainpage-description' => 'Yiebdeauz',
@@ -193,13 +191,11 @@ $messages = array(
 'searchresults' => 'gietgoj ra',
 'searchresults-title' => 'doiq "$1" gij gietgoj ra',
 'search-interwiki-more' => '(more)',
-'powersearch' => 'Cwmh goeggiz',
 'powersearch-legend' => 'Gauhgiz saeu',
 'powersearch-redir' => 'Cungzdinghyiengq liedbiuj',
 
 # Preferences page
 'mypreferences' => 'Doenghgaeq gou hae',
-'prefsnologin' => 'Maengx laezhaej',
 'searchresultshead' => 'Cwmh',
 'username' => 'Ciu bouxdeiz:',
 
@@ -300,10 +296,8 @@ $messages = array(
 # Move page
 'move-page-legend' => 'Caen doengh mae',
 'movearticle' => 'Caen doengh mae:',
-'movenologin' => 'Maengx laezhaej',
 'move-watch' => 'Demq mae-nej',
 'movepagebtn' => 'Caen doengh mae',
-'movedto' => 'Caen bei',
 'movereason' => 'Haujgaemj',
 'revertmove' => 'siu',
 
index 682aa6c..3bd06b0 100644 (file)
@@ -65,7 +65,6 @@ $messages = array(
 'tog-minordefault' => "Al mien bewerkiengen as 'kleine' markeern",
 'tog-previewontop' => 'Voevertoônienge boven bewerkiengsveld weerheven',
 'tog-previewonfirst' => 'Voevertoônienge bie eêste bewerkieng weerheven',
-'tog-nocache' => "Cach'n van pagina's deur de browser uutzett'n",
 'tog-enotifwatchlistpages' => "E-mail me bie bewerkiengen van pagina's op men volglieste",
 'tog-enotifusertalkpages' => 'E-mail me wunnir a iemand men overlegpagina wiezig',
 'tog-enotifminoredits' => "E-mail me bie kleine bewerkiengen van pahina's op men volglieste",
@@ -185,7 +184,6 @@ $messages = array(
 'qbedit' => 'Bewerk',
 'qbpageoptions' => 'Paginaopties',
 'qbmyoptions' => 'Mien opties',
-'qbspecialpages' => 'Speciaole pahina’s',
 'faq' => 'FAQ (veehestelde vraehen)',
 'faqpage' => 'Project:Veehestelde vraehen',
 
@@ -228,7 +226,7 @@ $messages = array(
 'delete' => 'Wissen',
 'deletethispage' => 'Wis deêze bladzie',
 'undelete_short' => '$1 {{PLURAL:$1|bewerkieng|bewerkiengen}} terugzetten',
-'viewdeleted_short' => '{{PLURAL: $1|Eên geschrapte bewarkienge|$1 geschrapte bewarkiengen}} bekieken',
+'viewdeleted_short' => '{{PLURAL:$1|Eên geschrapte bewarkienge|$1 geschrapte bewarkiengen}} bekieken',
 'protect' => 'Bescherm',
 'protect_change' => 'wiezigen',
 'protectthispage' => 'Bescherm deêze bladzie',
@@ -375,9 +373,6 @@ Maek hiervon maldienge bie 'n [[Special:ListUsers/sysop|beheêrder]] von {{SITEN
 'perfcached' => "De hehevens komm'n uut een cache en zien meuhlijk nie actueel. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.",
 'perfcachedts' => "De hehevens komm'n uut een cache en zien voe 't lèst biehewerkt op $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.",
 'querypage-no-updates' => 'Deêze pagina kan nie biehewerkt worn. Deêze hehevens worn nie ververst.',
-'wrong_wfQuery_params' => 'Foute parameters voe wfQuery()<br />
-Functie: $1<br />
-Zoekopdracht: $2',
 'viewsource' => 'brontekst bekieken',
 'actionthrottled' => 'Handelienge tehenehouwen',
 'actionthrottledtext' => "As maetrehel tehen spam is 't antal keern per tiedseêneid da je deêze handelienge kan verrichen beperkt.
@@ -470,7 +465,7 @@ Neheer dit bericht as deêze gebruker zonder joe medeweten is anemikt.',
 'loginlanguagelabel' => 'Taele: $1',
 
 # Change password dialog
-'resetpass' => "Wachtwoôrd herinstell'n",
+'changepassword' => 'Wachtwoôrd wiezigen',
 'resetpass_announce' => "Je bin anemeld mie een tiedelijke code die a je per e-mail is toe-ezon'n. Voer een nieuw wachtwoôrd in om 't anmelden te voltooien:",
 'resetpass_header' => "Wachtwoôrd herinstell'n",
 'oldpassword' => 'Udihe wachtwoôrd:',
@@ -731,8 +726,6 @@ Aore opzichters van {{SITENAME}} kunn'n de verborhen inoud benadern en de verwie
 'revdelete-success' => "'''Zichbaereid van de wiezigieng succesvol inesteld.'''",
 'logdelete-success' => "'''Zichbaereid van de hebeurtenisse succesvol inesteld.'''",
 'revdel-restore' => 'Zichbaereid wiezigen',
-'revdel-restore-deleted' => 'gewiste versies',
-'revdel-restore-visible' => 'zichtbaere versies',
 'pagehist' => 'Paginaheschiedenisse',
 'deletedhist' => 'Verwiederde heschiedenisse',
 
@@ -777,12 +770,8 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
 # Search results
 'searchresults' => 'Zoekresultaoten',
 'searchresults-title' => 'Zuikresultaot\'n vò "$1"',
-'searchresulttext' => 'Voe meêr informaotie over zoeken op {{SITENAME}}, zie [[{{MediaWiki:Helppage}}|{{int:ulpe}}]].',
-'searchsubtitle' => "Je zoch ni '''[[:$1]]'''",
-'searchsubtitleinvalid' => 'Voe zoekopdracht "$1"',
 'toomanymatches' => 'Der waeren te vee resultaoten. Probeer asjeblieft een aore zoekopdracht.',
 'titlematches' => 'Overeênkomst mie onderwerp',
-'notitlematches' => "Hin resultaoten evon'n",
 'textmatches' => 'Overeênkomst mie inoud',
 'notextmatches' => "Hin pagina's evon'n",
 'prevn' => 'vorrege {{PLURAL:$1|$1}}',
@@ -814,9 +803,7 @@ Zurg da je bie deêze wiezigieng de heschiedenisdeurloôpendeid van de pagina be
 'showingresults' => "Ieronder {{PLURAL:$1|sti '''1''' resultaot|staen '''$1''' resultaoten}} vanof #'''$2'''.",
 'showingresultsnum' => "Ieronder {{PLURAL:$3|sti '''1''' resultaot|staen '''$3''' resultaoten}} vanof #'''$2'''.",
 'showingresultsheader' => "{{PLURAL:$5|Resultaot '''$1''' von '''$3'''|Resultaot'n '''$1 - $2''' von '''$3'''}} vò '''$4'''",
-'nonefound' => "'''Opmerkieng''': mislukte zoekopdrachten worn vaok veroôrzaekt deur zoekn ni vee voekomm'nde woôrn as \"van\" en \"de\", die an nie in de indexen worn openoom'n, of deur meêr dan eên zoekterm op te heven. Allin pagina's die an aolle zoektermen bevatt'n worn openoom'n in de resultaoten.",
 'search-nonefound' => "Er zin geen resultaot'n vò je zoekopdracht.",
-'powersearch' => 'Uutebreid zoeken',
 'powersearch-legend' => 'Uutebreid zoeken',
 'search-external' => 'Extern zoeken',
 'searchdisabled' => "Zoeken in {{SITENAME}} is nie meuhlijk.
@@ -827,7 +814,6 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
 'preferences' => 'Vòkeuren',
 'mypreferences' => 'Mien vòkeuren',
 'prefs-edits' => 'Antal bewerkiengen:',
-'changepassword' => 'Wachtwoôrd wiezigen',
 'prefs-skin' => 'Vurmhevieng',
 'skin-preview' => 'Voevertoônienge',
 'datedefault' => 'Hin vòkeur',
@@ -839,19 +825,16 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
 'prefs-watchlist-edits' => 'Maximaol antal bewerkiengen in de uutebreide volglieste:',
 'prefs-misc' => 'Rest',
 'saveprefs' => 'Opslaene',
-'resetprefs' => 'Nie opeslogen wiezigiengen herstellen',
 'prefs-editing' => 'Bewerken',
 'rows' => 'Rehels:',
 'columns' => "Kolomm'n:",
 'searchresultshead' => 'Zoek',
-'resultsperpage' => "Resultaot'n per pagina:",
 'stub-threshold' => 'Drempel voe markerieng <a href="#" class="stub">stompje</a>:',
 'recentchangesdays' => 'Antal daehen weer te heven in Juust angepast:',
 'recentchangescount' => "Antal pagina's in Juust angepast:",
 'savedprefs' => 'Je vòkeuren zien opeslogen.',
 'timezonelegend' => 'Tiedzône',
 'localtime' => 'Lokaole tied',
-'timezoneoffset' => 'Tiedsverschil¹',
 'servertime' => 'Servertied',
 'guesstimezone' => 'Vanuut de browser toevoehen',
 'allowemail' => 'Laet e-mail van aore gebrukers toe.',
@@ -933,7 +916,6 @@ Een nie anekruusd vienkvakje beteêken da de gebruker hin lid is van de hroep.",
 'recentchanges-label-minor' => 'Dit is een kleine wieziging',
 'recentchanges-label-bot' => "Deêze bewarkienge is uutgevoerd deur 'n bot",
 'recentchanges-label-unpatrolled' => 'Deêze bewarkienge is nog nie gecontroleerd',
-'rcnote' => "Ieronder {{PLURAL:$1|sti de lèste bewerkieng|staen de lèste '''$1''' bewerkiengen}} in de lèste {{PLURAL:$2|dag|'''$2''' daegen}}, op $4 om $5.",
 'rcnotefrom' => "Wiezigiengen sins '''$2''' (mie een maximum van '''$1''' wiezigiengen).",
 'rclistfrom' => 'Bekiek de wiezigingen sins $1',
 'rcshowhideminor' => '$1 kleine bewerkiengen',
@@ -1067,8 +1049,6 @@ Je kan 't overzicht bepaelen deu 'n soôrte logboek, 'n gebrukersnaem of eên bl
 'allpagesfrom' => 'Laet bladzies zieë vanaf:',
 'allarticles' => 'Aolle artikels',
 'allinnamespace' => 'Aolle bladzies uut de $1-naemruumte',
-'allnotinnamespace' => 'Aolle bladzies (nie in de $1-naemruumte)',
-'allpagesprev' => 'Vorrege',
 'allpagessubmit' => 'OK',
 'allpagesprefix' => "Laet bladzies zieë mee 't vovoegsel:",
 'allpagesbadtitle' => "D'n ingegeven bladzie-titel was ongeldeg of ao 'n interwiki-vòvoegsel. Meschien stae d'r eên of meer teêkens in die-an nie in titels gebruukt ore kunne.",
@@ -1313,10 +1293,6 @@ Aorre veld'n worr'n verborr'n.
 * gpslongitude
 * gpsaltitude",
 
-# External editor support
-'edit-externally' => "Dit bestand in 'n extern programma bewark'n",
-'edit-externally-help' => '(zieë de [https://www.mediawiki.org/wiki/Manual:External_editors handleidienge vò instelliengen] vò meê informaosie)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => 'aol',
 'namespacesall' => 'aol',
index 953e2ae..ac674e4 100644 (file)
@@ -64,6 +64,7 @@
  * @author Stevenliuyi
  * @author Supaiku
  * @author Tommyang
+ * @author User670839245
  * @author Waihorace
  * @author Wilsonmess
  * @author Wmr89502270
@@ -130,29 +131,29 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( '活跃用户' ),
        'Allmessages'               => array( '所有信息' ),
+       'AllMyUploads'              => array( '我上传的所有文件', '我的所有文件' ),
        'Allpages'                  => array( '所有页面' ),
        'Ancientpages'              => array( '最老页面' ),
-       'Badtitle'                  => array( '无效标题' ),
+       'Badtitle'                  => array( '错误标题', '无效标题' ),
        'Blankpage'                 => array( '空白页面' ),
        'Block'                     => array( '封禁用户' ),
-       'Blockme'                   => array( '自我封禁' ),
        'Booksources'               => array( '网络书源' ),
-       'BrokenRedirects'           => array( '受损重定向' ),
+       'BrokenRedirects'           => array( '受损重定向' ),
        'Categories'                => array( '页面分类' ),
        'ChangeEmail'               => array( '修改邮箱' ),
        'ChangePassword'            => array( '修改密码' ),
-       'ComparePages'              => array( '比较页面' ),
+       'ComparePages'              => array( '对比页面', '比较页面' ),
        'Confirmemail'              => array( '确认电子邮件' ),
        'Contributions'             => array( '用户贡献' ),
        'CreateAccount'             => array( '创建账户' ),
        'Deadendpages'              => array( '断链页面' ),
        'DeletedContributions'      => array( '已删除的用户贡献' ),
-       'Disambiguations'           => array( '消歧义页' ),
-       'DoubleRedirects'           => array( '双重重定向页', '两次重定向页' ),
+       'DoubleRedirects'           => array( '双重重定向', '两次重定向' ),
        'EditWatchlist'             => array( '编辑监视列表' ),
-       'Emailuser'                 => array( '电子邮件用户' ),
+       'Emailuser'                 => array( '电邮联系' ),
+       'ExpandTemplates'           => array( '展开模板' ),
        'Export'                    => array( '导出页面' ),
-       'Fewestrevisions'           => array( '最少修订页面' ),
+       'Fewestrevisions'           => array( '版本最少页面', '最少修订页面' ),
        'FileDuplicateSearch'       => array( '搜索重复文件' ),
        'Filepath'                  => array( '文件路径' ),
        'Import'                    => array( '导入页面' ),
@@ -186,17 +187,21 @@ $specialPageAliases = array(
        'Myuploads'                 => array( '我上传的文件' ),
        'Newimages'                 => array( '新建文件' ),
        'Newpages'                  => array( '新建页面' ),
+       'PagesWithProp'             => array( '带属性的页面' ),
        'PasswordReset'             => array( '重设密码' ),
        'PermanentLink'             => array( '永久链接' ),
        'Popularpages'              => array( '热点页面' ),
-       'Preferences'               => array( '参数设置', '系统设置' ),
+       'Preferences'               => array( '参数设置', '设置' ),
        'Prefixindex'               => array( '前缀索引' ),
        'Protectedpages'            => array( '已保护页面' ),
        'Protectedtitles'           => array( '已保护标题' ),
        'Randompage'                => array( '随机页面' ),
-       'Randomredirect'            => array( '随机重定向页' ),
+       'RandomInCategory'          => array( '分类内随机' ),
+       'Randomredirect'            => array( '随机重定向', '随机重定向页' ),
        'Recentchanges'             => array( '最近更改' ),
-       'Recentchangeslinked'       => array( '链出更改' ),
+       'Recentchangeslinked'       => array( '相关更改', '链出更改' ),
+       'Redirect'                  => array( '重定向' ),
+       'ResetTokens'               => array( '重置权标' ),
        'Revisiondelete'            => array( '删除或恢复修订' ),
        'Search'                    => array( '搜索' ),
        'Shortpages'                => array( '短页面' ),
@@ -216,17 +221,17 @@ $specialPageAliases = array(
        'Unwatchedpages'            => array( '未受监视页面' ),
        'Upload'                    => array( '上传文件' ),
        'UploadStash'               => array( '上传藏匿' ),
-       'Userlogin'                 => array( '用户登录', '用户登入' ),
-       'Userlogout'                => array( '用户退出', '用户登出' ),
+       'Userlogin'                 => array( '用户登录' ),
+       'Userlogout'                => array( '用户退出' ),
        'Userrights'                => array( '用户权限' ),
-       'Version'                   => array( '版本信息' ),
-       'Wantedcategories'          => array( '待撰分类' ),
+       'Version'                   => array( '版本', '版本信息' ),
+       'Wantedcategories'          => array( '需要的分类', '待撰分类' ),
        'Wantedfiles'               => array( '需要的文件' ),
-       'Wantedpages'               => array( '待撰页面' ),
+       'Wantedpages'               => array( '需要的页面', '待撰页面', '受损链接' ),
        'Wantedtemplates'           => array( '需要的模板' ),
        'Watchlist'                 => array( '监视列表' ),
        'Whatlinkshere'             => array( '链入页面' ),
-       'Withoutinterwiki'          => array( '无跨维基链接页面' ),
+       'Withoutinterwiki'          => array( '无跨维基', '无跨维基链接页面' ),
 );
 
 $magicWords = array(
@@ -235,15 +240,26 @@ $magicWords = array(
        'nogallery'                 => array( '0', '__无图库__', '__NOGALLERY__' ),
        'forcetoc'                  => array( '0', '__强显目录__', '__FORCETOC__' ),
        'toc'                       => array( '0', '__目录__', '__TOC__' ),
-       'noeditsection'             => array( '0', '__无段落编辑__', '__NOEDITSECTION__' ),
-       'currentmonth'              => array( '1', '本月', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+       'noeditsection'             => array( '0', '__无编辑段落__', '__无段落编辑__', '__NOEDITSECTION__' ),
+       'currentmonth'              => array( '1', '本月', '本月2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
        'currentmonth1'             => array( '1', '本月1', 'CURRENTMONTH1' ),
-       'currentmonthname'          => array( '1', '本月名称', 'CURRENTMONTHNAME' ),
+       'currentmonthname'          => array( '1', '本月名', '本月名称', 'CURRENTMONTHNAME' ),
+       'currentmonthnamegen'       => array( '1', '本月名属格', '本月名称属格', 'CURRENTMONTHNAMEGEN' ),
        'currentmonthabbrev'        => array( '1', '本月简称', 'CURRENTMONTHABBREV' ),
        'currentday'                => array( '1', '今天', 'CURRENTDAY' ),
        'currentday2'               => array( '1', '今天2', 'CURRENTDAY2' ),
+       'currentdayname'            => array( '1', '星期', '今天名', '今天名称', 'CURRENTDAYNAME' ),
        'currentyear'               => array( '1', '今年', 'CURRENTYEAR' ),
-       'currenttime'               => array( '1', '此时', '当前时间', 'CURRENTTIME' ),
+       'currenttime'               => array( '1', '当前时间', '此时', 'CURRENTTIME' ),
+       'currenthour'               => array( '1', '当前小时', 'CURRENTHOUR' ),
+       'localmonth'                => array( '1', '本地月', 'LOCALMONTH', 'LOCALMONTH2' ),
+       'localmonthname'            => array( '1', '本地月份名', 'LOCALMONTHNAME' ),
+       'localmonthnamegen'         => array( '1', '本地月历', 'LOCALMONTHNAMEGEN' ),
+       'localday'                  => array( '1', '本地日', 'LOCALDAY' ),
+       'localdayname'              => array( '1', '本地日名', 'LOCALDAYNAME' ),
+       'localyear'                 => array( '1', '本地年', 'LOCALYEAR' ),
+       'localtime'                 => array( '1', '本地时间', 'LOCALTIME' ),
+       'localhour'                 => array( '1', '本地小时', 'LOCALHOUR' ),
        'numberofpages'             => array( '1', '页面数', 'NUMBEROFPAGES' ),
        'numberofarticles'          => array( '1', '条目数', 'NUMBEROFARTICLES' ),
        'numberoffiles'             => array( '1', '文件数', 'NUMBEROFFILES' ),
@@ -251,19 +267,19 @@ $magicWords = array(
        'numberofactiveusers'       => array( '1', '活跃用户数', 'NUMBEROFACTIVEUSERS' ),
        'numberofedits'             => array( '1', '编辑数', 'NUMBEROFEDITS' ),
        'numberofviews'             => array( '1', '访问数', 'NUMBEROFVIEWS' ),
-       'pagename'                  => array( '1', '页面名', 'PAGENAME' ),
-       'pagenamee'                 => array( '1', '页面名E', 'PAGENAMEE' ),
+       'pagename'                  => array( '1', '页名', '页面名', '页面名称', 'PAGENAME' ),
+       'pagenamee'                 => array( '1', '页名等同', '页面名等同', '页面名E', 'PAGENAMEE' ),
        'namespace'                 => array( '1', '名字空间', 'NAMESPACE' ),
-       'namespacee'                => array( '1', '名字空间E', 'NAMESPACEE' ),
+       'namespacee'                => array( '1', '名字空间等同', '名字空间E', 'NAMESPACEE' ),
        'namespacenumber'           => array( '1', '名字空间编号', 'NAMESPACENUMBER' ),
-       'talkspace'                 => array( '1', '讨论名字空间', 'TALKSPACE' ),
-       'talkspacee'                => array( '1', '讨论名字空间E', 'TALKSPACEE' ),
-       'fullpagename'              => array( '1', '完整页面名', 'FULLPAGENAME' ),
+       'talkspace'                 => array( '1', '讨论空间', '讨论名字空间', 'TALKSPACE' ),
+       'talkspacee'                => array( '1', '讨论空间等同', '讨论名字空间E', 'TALKSPACEE' ),
+       'fullpagename'              => array( '1', '页面全名', '完整页面名', 'FULLPAGENAME' ),
        'fullpagenamee'             => array( '1', '完整页面名E', 'FULLPAGENAMEE' ),
        'subpagename'               => array( '1', '子页面名', 'SUBPAGENAME' ),
-       'subpagenamee'              => array( '1', '子页面名E', 'SUBPAGENAMEE' ),
+       'subpagenamee'              => array( '1', '子页面名等同', '子页面名E', 'SUBPAGENAMEE' ),
        'talkpagename'              => array( '1', '讨论页面名', 'TALKPAGENAME' ),
-       'talkpagenamee'             => array( '1', '讨论页面名E', 'TALKPAGENAMEE' ),
+       'talkpagenamee'             => array( '1', '讨论页面名等同', '讨论页面名E', 'TALKPAGENAMEE' ),
        'subst'                     => array( '0', '替代:', 'SUBST:' ),
        'safesubst'                 => array( '0', '安全替代:', 'SAFESUBST:' ),
        'img_thumbnail'             => array( '1', '缩略图', 'thumbnail', 'thumb' ),
@@ -276,9 +292,9 @@ $magicWords = array(
        'img_framed'                => array( '1', '有框', 'framed', 'enframed', 'frame' ),
        'img_frameless'             => array( '1', '无框', 'frameless' ),
        'img_page'                  => array( '1', '页数=$1', '$1页', 'page=$1', 'page $1' ),
-       'img_border'                => array( '1', '有边', 'border' ),
+       'img_border'                => array( '1', '边框', 'border' ),
        'img_link'                  => array( '1', '链接=$1', 'link=$1' ),
-       'img_alt'                   => array( '1', '替代文本=$1', 'alt=$1' ),
+       'img_alt'                   => array( '1', '替代=$1', '替代文本=$1', 'alt=$1' ),
        'img_class'                 => array( '1', '类=$1', 'class=$1' ),
        'int'                       => array( '0', '界面:', 'INT:' ),
        'sitename'                  => array( '1', '站点名称', 'SITENAME' ),
@@ -293,9 +309,13 @@ $magicWords = array(
        'scriptpath'                => array( '0', '脚本路径', 'SCRIPTPATH' ),
        'stylepath'                 => array( '0', '样式路径', 'STYLEPATH' ),
        'grammar'                   => array( '0', '语法:', 'GRAMMAR:' ),
-       'gender'                    => array( '0', '性别:', 'GENDER:' ),
+       'gender'                    => array( '0', '性:', '性别:', 'GENDER:' ),
        'notitleconvert'            => array( '0', '__不转换标题__', '__NOTITLECONVERT__', '__NOTC__' ),
        'nocontentconvert'          => array( '0', '__不转换内容__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+       'currentweek'               => array( '1', '本周', 'CURRENTWEEK' ),
+       'plural'                    => array( '0', '复数:', 'PLURAL:' ),
+       'fullurl'                   => array( '0', '完整URL:', 'FULLURL:' ),
+       'fullurle'                  => array( '0', '完整URL等同:', '完整URLE:', 'FULLURLE:' ),
        'lcfirst'                   => array( '0', '小写首字:', 'LCFIRST:' ),
        'ucfirst'                   => array( '0', '大写首字:', 'UCFIRST:' ),
        'lc'                        => array( '0', '小写:', 'LC:' ),
@@ -317,12 +337,12 @@ $magicWords = array(
        'padleft'                   => array( '0', '左填充', 'PADLEFT' ),
        'padright'                  => array( '0', '右填充', 'PADRIGHT' ),
        'special'                   => array( '0', '特殊', 'special' ),
-       'speciale'                  => array( '0', '特殊e', 'speciale' ),
+       'speciale'                  => array( '0', '特殊等同', '特殊e', 'speciale' ),
        'defaultsort'               => array( '1', '默认排序:', '默认排序关键字:', '默认分类排序:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
        'filepath'                  => array( '0', '文件路径:', 'FILEPATH:' ),
        'tag'                       => array( '0', '标记', 'tag' ),
        'hiddencat'                 => array( '1', '__隐藏分类__', '__HIDDENCAT__' ),
-       'pagesincategory'           => array( '1', '分类中页面数', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+       'pagesincategory'           => array( '1', '分类中页数', '分类中页面数', 'PAGESINCATEGORY', 'PAGESINCAT' ),
        'pagesize'                  => array( '1', '页面大小', 'PAGESIZE' ),
        'index'                     => array( '1', '__索引__', '__INDEX__' ),
        'noindex'                   => array( '1', '__不索引__', '__NOINDEX__' ),
@@ -381,9 +401,8 @@ $messages = array(
 'tog-watchmoves' => '添加我移动的页面和文件至我的监视列表',
 'tog-watchdeletion' => '添加我删除的页面和文件至我的监视列表',
 'tog-minordefault' => '默认标记所有编辑为小编辑',
-'tog-previewontop' => 'å\9c¨ç¼\96è¾\91æ¡\86ä¸\8aæ\96¹æ\98¾ç¤ºé¢\84è§\88',
+'tog-previewontop' => 'å°\86é¢\84è§\88æ\98¾ç¤ºå\9c¨ç¼\96è¾\91æ¡\86ä¸\8aæ\96¹',
 'tog-previewonfirst' => '首次编辑时显示预览',
-'tog-nocache' => '停用浏览器页面缓存',
 'tog-enotifwatchlistpages' => '当我的监视列表中的页面或文件更改时发送电子邮件通知我',
 'tog-enotifusertalkpages' => '当我的用户讨论页面更改时发送电子邮件通知我',
 'tog-enotifminoredits' => '当我的监视列表中的页面和文件有小编辑时也发送电子邮件通知我',
@@ -391,7 +410,7 @@ $messages = array(
 'tog-shownumberswatching' => '显示监视用户数',
 'tog-oldsig' => '当前签名:',
 'tog-fancysig' => '将签名视为维基文本(不自动生成链接)',
-'tog-uselivepreview' => '使用实时预览(实验)',
+'tog-uselivepreview' => '使用实时预览(实验)',
 'tog-forceeditsummary' => '未输入编辑摘要时提醒我',
 'tog-watchlisthideown' => '隐藏监视列表中的我的编辑',
 'tog-watchlisthidebots' => '隐藏监视列表中的机器人编辑',
@@ -483,12 +502,12 @@ $messages = array(
 'december-date' => '12月$1日',
 
 # Categories related messages
-'pagecategories' => '$1个分类',
+'pagecategories' => '{{PLURAL:$1|分类}}',
 'category_header' => '分类“$1”中的页面',
 'subcategories' => '子分类',
 'category-media-header' => '分类“$1”中的媒体文件',
 'category-empty' => "''本分类目前未包含页面或媒体文件。''",
-'hidden-categories' => '$1个隐藏分类',
+'hidden-categories' => '{{PLURAL:$1|隐藏分类}}',
 'hidden-category-category' => '隐藏分类',
 'category-subcat-count' => '{{PLURAL:$2|本分类只有以下子分类。|本分类有以下$1个子分类,共有$2个子分类。}}',
 'category-subcat-count-limited' => '本分类有以下{{PLURAL:$1|子分类|$1个子分类}}。',
@@ -512,7 +531,7 @@ $messages = array(
 'mytalk' => '讨论',
 'anontalk' => '该IP地址的讨论',
 'navigation' => '导航',
-'and' => '&#32;和',
+'and' => '和',
 
 # Cologne Blue skin
 'qbfind' => '查找',
@@ -520,7 +539,6 @@ $messages = array(
 'qbedit' => '编辑',
 'qbpageoptions' => '该页面',
 'qbmyoptions' => '我的页面',
-'qbspecialpages' => '特殊页面',
 'faq' => '常见问题',
 'faqpage' => 'Project:常见问题',
 
@@ -552,7 +570,7 @@ $messages = array(
 'searcharticle' => '前往',
 'history' => '页面历史',
 'history_short' => '历史',
-'updatedmarker' => 'æ\9b´æ\96°äº\8eæ\88\91ä¸\8a次访é\97®å\90\8e',
+'updatedmarker' => 'æ\88\91ä¸\8a次访é\97®å\90\8eç\9a\84ä¿®æ\94¹',
 'printableversion' => '打印版本',
 'permalink' => '永久链接',
 'print' => '打印',
@@ -565,7 +583,7 @@ $messages = array(
 'deletethispage' => '删除本页',
 'undeletethispage' => '还原本页',
 'undelete_short' => '还原{{PLURAL:$1|$1个编辑}}',
-'viewdeleted_short' => '查看$1个被删除的编辑',
+'viewdeleted_short' => '查看$1个被删除的编辑',
 'protect' => '保护',
 'protect_change' => '更改',
 'protectthispage' => '保护本页',
@@ -653,7 +671,7 @@ $1',
 'collapsible-expand' => '展开',
 'thisisdeleted' => '查看或恢复$1?',
 'viewdeleted' => '查看$1?',
-'restorelink' => '$1个被删除的编辑',
+'restorelink' => '$1个被删除的编辑',
 'feedlinks' => 'Feed:',
 'feed-invalid' => '无效的订阅feed类型。',
 'feed-unavailable' => '不提供联合feed',
@@ -730,9 +748,6 @@ $1',
 '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' => '操作被限制',
@@ -809,7 +824,7 @@ $2',
 'gotaccount' => '已经拥有账户?请$1。',
 'gotaccountlink' => '登录',
 'userlogin-resetlink' => '忘记你的登录信息?',
-'userlogin-resetpassword-link' => '忘记您的密码?',
+'userlogin-resetpassword-link' => '忘记密码?',
 'helplogin-url' => 'Help:登录',
 'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|登录帮助]]',
 'userlogin-loggedin' => '你已经以{{GENDER:$1|$1}}的身份登录。使用下面的表格以其他用户的身份登录。',
@@ -853,7 +868,7 @@ $2',
 'passwordtooshort' => '您的密码至少需要$1个字符。',
 'password-name-match' => '您的密码必须和您的用户名不相同。',
 'password-login-forbidden' => '这个用户名称及密码的使用是被禁止的。',
-'mailmypassword' => '电子邮件发送新密码',
+'mailmypassword' => '重置密码',
 'passwordremindertitle' => '{{SITENAME}}的新临时密码',
 'passwordremindertext' => '有人(可能是您,来自IP地址$1)已请求{{SITENAME}}的新密码($4)。
 用户“$2”的一个新临时密码现在已被设置好为“$3”。
@@ -872,7 +887,7 @@ $2',
 'throttled-mailpassword' => '密码提醒已在最近$1小时内发送。为了安全起见,在每$1小时内只能发送一个密码提醒。',
 'mailerror' => '发送邮件错误:$1',
 'acct_creation_throttle_hit' => '使用你的IP地址访问本wiki的访客在过去24小时中创建了{{PLURAL:$1|$1个账户}},达到了这段时间所允许的最大值。因此,使用该IP地址的访客现在不能再创建账户。',
-'emailauthenticated' => '您的邮箱地址已经于$3在$2确认。',
+'emailauthenticated' => '你的电子邮件地址已于$2 $3确认。',
 'emailnotauthenticated' => '您的邮件地址尚未确认。
 您将不会收到以下任何功能的邮件。',
 'noemailprefs' => '指定一个电子邮箱地址以使用此功能。',
@@ -900,7 +915,7 @@ $2',
 'user-mail-no-body' => '试图发送空的或者主体短得不合理的电子邮件。',
 
 # Change password dialog
-'resetpass' => '更改密码',
+'changepassword' => '更改密码',
 'resetpass_announce' => '您是通过发送到电子邮箱的临时密码登录的。要完成登录,请设定一个新的密码:',
 'resetpass_text' => '<!-- 在这里添加文字 -->',
 'resetpass_header' => '更改账户密码',
@@ -920,7 +935,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => '重置密码',
 'passwordreset-text-one' => '请输入你要重置的用户名。',
-'passwordreset-text-many' => '{{PLURAL:$1|å¡«å\85\85é\83¨å\88\86å­\97段以é\87\8dç½®æ\82¨ç\9a\84å¯\86ç \81。}}',
+'passwordreset-text-many' => '{{PLURAL:$1|å\9c¨æ­¤é\94®å\85¥æ\82¨å¸\8cæ\9c\9bæ\8e¥æ\94¶ä¸´æ\97¶å¯\86ç \81ç\9a\84é\82®ä»¶å\9c°å\9d\80。}}',
 'passwordreset-legend' => '重置密码',
 'passwordreset-disabled' => '此Wiki已经禁用密码重置。',
 'passwordreset-emaildisabled' => '此Wiki上无法使用邮件功能。',
@@ -1083,7 +1098,7 @@ $2
 这种情况通常在您使用含有故障的网页式匿名代理服务的时候出现。",
 'edit_form_incomplete' => "'''编辑表格的某些部分没有到达服务器,请检查你的编辑是否完整并重试。'''",
 'editing' => '编辑“$1”',
-'creating' => '创建 $1',
+'creating' => '创建“$1”',
 'editingsection' => '编辑“$1(段落)”',
 'editingcomment' => '编辑“$1”(新段落)',
 'editconflict' => '编辑冲突:$1',
@@ -1144,6 +1159,8 @@ $2
 'invalid-content-data' => '无效的内容数据',
 'content-not-allowed-here' => '[[$2]]页面上不允许“$1”内容',
 'editwarning-warning' => '离开本页面可能导致你失去任何你已经作出的更改。如果你处于登录状态,你可以在你的设置的“编辑”部分停用该警告。',
+'editpage-notsupportedcontentformat-title' => '内容格式尚不支持',
+'editpage-notsupportedcontentformat-text' => '内容模型$2尚不支持内容格式$1。',
 
 # Content models
 'content-model-wikitext' => 'wiki文本',
@@ -1184,6 +1201,8 @@ $2
 'cantcreateaccount-text' => "从该IP地址('''$1''')创建账户已被[[User:$3|$3]]禁止。
 
 $3的理由是''$2''",
+'cantcreateaccount-range-text' => "从该IP地址段'''$1'''的账户创建已被[[User:$3|$3]]禁止,而这也包括了您的IP地址('''$4''')。
+$3给出的原因是“$2”。",
 
 # History pages
 'viewpagelogs' => '查看本页面的日志',
@@ -1203,7 +1222,7 @@ $3的理由是''$2''",
 'histlegend' => "差异选择:选出需要对比的版本,按“回车键”或下方的按钮进行对比。<br />
 说明:'''({{int:cur}})'''=与最后版本之间的差异,'''({{int:last}})'''=与上一版本之间的差异,'''{{int:minoreditletter}}'''=小编辑。",
 'history-fieldset-title' => '浏览历史',
-'history-show-deleted' => '仅被删除的',
+'history-show-deleted' => '仅已被删除',
 'histfirst' => '最早',
 'histlast' => '最新',
 'historysize' => '($1字节)',
@@ -1239,10 +1258,6 @@ $3的理由是''$2''",
 'revdelete-nooldid-title' => '无效目标版本',
 'revdelete-nooldid-text' => '您尚未指定一个目标修订去进行这个功能、
 所指定的修订不存在,或者您尝试去隐藏现时的修订。',
-'revdelete-nologtype-title' => '没有给出日志类型',
-'revdelete-nologtype-text' => '您尚未指定一种日志类型去做这个动作。',
-'revdelete-nologid-title' => '无效的日志项目',
-'revdelete-nologid-text' => '您尚未指定一个目标日志项目去进行这个动作或指定的项目不存在。',
 'revdelete-no-file' => '指定的文件不存在。',
 'revdelete-show-file-confirm' => '确定要查看文件“<nowiki>$1</nowiki>”于$2$3被删除的版本吗?',
 'revdelete-show-file-submit' => '是',
@@ -1260,11 +1275,11 @@ $3的理由是''$2''",
 'revdelete-hide-image' => '隐藏文件内容',
 'revdelete-hide-name' => '隐藏动作和目标',
 'revdelete-hide-comment' => '编辑摘要',
-'revdelete-hide-user' => 'ç¼\96è¾\91è\80\85ç\9a\84用户名/IP地址',
+'revdelete-hide-user' => 'ç¼\96è\80\85用户名/IP地址',
 'revdelete-hide-restricted' => '同时阻止管理员与其他用户查看数据',
 'revdelete-radio-same' => '(不更改)',
-'revdelete-radio-set' => '可见',
-'revdelete-radio-unset' => '隐藏',
+'revdelete-radio-set' => '隐藏',
+'revdelete-radio-unset' => '可见',
 'revdelete-suppress' => '同时阻止管理员与其他用户查看数据',
 'revdelete-unsuppress' => '在已恢复的修订中移除限制',
 'revdelete-log' => '原因:',
@@ -1276,8 +1291,6 @@ $1",
 'logdelete-failure' => "'''事件的可见性无法设置:'''
 $1",
 'revdel-restore' => '更改可见性',
-'revdel-restore-deleted' => '已删除的版本',
-'revdel-restore-visible' => '可见的版本',
 'pagehist' => '页面历史',
 'deletedhist' => '已删除历史',
 'revdelete-hide-current' => '正在隐藏于$1 $2之项目错误:这个是现时的修订,不可以隐藏。',
@@ -1293,7 +1306,7 @@ $1",
 ** 潜在毁谤性信息',
 'revdelete-otherreason' => '其他/附加原因:',
 'revdelete-reasonotherlist' => '其他原因',
-'revdelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\9f\8bç\94±',
+'revdelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\8e\9få\9b ',
 'revdelete-offender' => '版本作者:',
 
 # Suppression log
@@ -1331,7 +1344,7 @@ $1",
 
 # Diffs
 'history-title' => '“$1”的版本历史',
-'difference-title' => 'â\80\9c$1â\80\9dç\9a\84ç\89\88æ\9c¬é\97´ç\9a\84å·®å¼\82',
+'difference-title' => '“$1”版本间的差异',
 'difference-title-multipage' => '页面“$1”与“$2”之间的差异',
 'difference-multipage' => '(页面间的差异)',
 'lineno' => '第$1行:',
@@ -1349,12 +1362,8 @@ $1",
 # 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' => '前$1个',
@@ -1363,10 +1372,8 @@ $1",
 'nextn-title' => '后$1个结果',
 'shown-title' => '每页显示$1项结果',
 'viewprevnext' => '查看($1{{int:pipe-separator}}$2)($3)',
-'searchmenu-legend' => '搜索选项',
 'searchmenu-exists' => "'''本wiki上有名为“[[:$1]]”的页面。'''",
 'searchmenu-new' => "'''在本wiki上新建名为“[[:$1]]”的页面!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去浏览以此为首的页面]]',
 'searchprofile-articles' => '内容页面',
 'searchprofile-project' => '帮助和项目页面',
 'searchprofile-images' => '多媒体',
@@ -1387,20 +1394,16 @@ $1",
 'search-interwiki-default' => '$1项结果:',
 'search-interwiki-more' => '(更多)',
 'search-relatedarticle' => '相关',
-'mwsuggest-disable' => '禁用AJAX建议',
 'searcheverything-enable' => '在所有名字空间中搜索',
 'searchrelated' => '相关',
 'searchall' => '所有',
 'showingresults' => "下面显示从第'''$2'''条结果开始的'''$1'''条结果。",
 'showingresultsnum' => "下面显示从第'''$2'''条结果开始的'''$3'''条结果。",
 'showingresultsheader' => "关于'''$4'''的{{PLURAL:$5|第'''$1'''条结果,共'''$3'''条结果|第'''$1~$2'''条结果,共'''$3'''条结果}}",
-'nonefound' => "'''注意''':只有某些名字空间被默认搜索。请尝试给你的搜索内容添加前缀“all:”以搜索全部内容(包括讨论页面、模板等)或使用期望的名字空间作为前缀。",
 'search-nonefound' => '找不到和查询相匹配的结果。',
-'powersearch' => '高级搜索',
 'powersearch-legend' => '高级搜索',
 'powersearch-ns' => '在以下的名字空间中搜索:',
 'powersearch-redir' => '列出重定向',
-'powersearch-field' => '搜索',
 'powersearch-togglelabel' => '选择:',
 'powersearch-toggleall' => '全选',
 'powersearch-togglenone' => '全不选',
@@ -1413,7 +1416,6 @@ $1",
 'mypreferences' => '设置',
 'prefs-edits' => '编辑数:',
 'prefsnologintext2' => '进行用户设置需要您$1。',
-'changepassword' => '更改密码',
 'prefs-skin' => '皮肤',
 'skin-preview' => '预览',
 'datedefault' => '默认格式',
@@ -1436,26 +1438,23 @@ $1",
 'prefs-email' => '电子邮件',
 'prefs-rendering' => '显示',
 'saveprefs' => '保存',
-'resetprefs' => '清除未保存的更改',
-'restoreprefs' => '恢复所有默认设置(所有部分)',
+'restoreprefs' => '还原所有默认设置(所有分项)',
 'prefs-editing' => '编辑',
-'rows' => '行:',
-'columns' => '列:',
+'rows' => '行:',
+'columns' => '列:',
 'searchresultshead' => '搜索',
-'resultsperpage' => '每页显示链接数:',
 'stub-threshold' => '<a href="#" class="stub">短页面链接</a>格式阈值(字节):',
-'stub-threshold-disabled' => 'å·²å\81\9cç\94¨',
+'stub-threshold-disabled' => '停用',
 'recentchangesdays' => '最近更改中显示的天数:',
 'recentchangesdays-max' => '最多$1天',
 'recentchangescount' => '默认显示的编辑数:',
-'prefs-help-recentchangescount' => '这包括近更改、页面历史和日志。',
+'prefs-help-recentchangescount' => '这包括近更改、页面历史和日志。',
 'prefs-help-watchlist-token2' => '这是你的监视列表网页feed的密钥。任何知道它的人均可以阅读你的监视列表,因此不要分享它。[[Special:ResetTokens|如果需要重置它,请点击这里]]。',
 'savedprefs' => '你的系统设置已保存。',
 'timezonelegend' => '时区:',
 'localtime' => '当地时间:',
 'timezoneuseserverdefault' => '使用wiki默认值($1)',
 'timezoneuseoffset' => '其它(指定时差)',
-'timezoneoffset' => '时差¹:',
 'servertime' => '服务器时间:',
 'guesstimezone' => '使用浏览器设置',
 'timezoneregion-africa' => '非洲',
@@ -1468,7 +1467,7 @@ $1",
 'timezoneregion-europe' => '欧洲',
 'timezoneregion-indian' => '印度洋',
 'timezoneregion-pacific' => '太平洋',
-'allowemail' => '接受来自其他用户的电子邮件',
+'allowemail' => '启用来自其他用户的电子邮件',
 'prefs-searchoptions' => '搜索',
 'prefs-namespaces' => '名字空间',
 'defaultns' => '否则在这些名字空间中搜索:',
@@ -1507,7 +1506,7 @@ $1",
 'prefs-signature' => '签名',
 'prefs-dateformat' => '日期格式',
 'prefs-timeoffset' => '时差',
-'prefs-advancedediting' => '一般选项',
+'prefs-advancedediting' => '常规选项',
 'prefs-editor' => '编辑',
 'prefs-preview' => '预览',
 'prefs-advancedrc' => '高级选项',
@@ -1520,6 +1519,7 @@ $1",
 'prefs-tokenwatchlist' => '密钥',
 'prefs-diffs' => '差异对比',
 'prefs-help-prefershttps' => '该设置将在你下次登录时生效。',
+'prefs-tabs-navigation-hint' => '提示:您可以通过左、右箭头键在选项卡之间切换。',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => '电子邮件地址有效',
@@ -1576,15 +1576,15 @@ $1",
 # Rights
 'right-read' => '阅读页面',
 'right-edit' => '编辑页面',
-'right-createpage' => 'å\88\9b建页é\9d¢ï¼\88é\9d\9e讨论页é\9d¢ï¼\89',
+'right-createpage' => 'å\88\9b建é\9d\9e讨论页é\9d¢',
 'right-createtalk' => '创建讨论页面',
-'right-createaccount' => '创建新用户账户',
-'right-minoredit' => '标记小编辑',
+'right-createaccount' => '创建账户',
+'right-minoredit' => '标记编辑为小编辑',
 'right-move' => '移动页面',
 'right-move-subpages' => '移动页面及其子页面',
 'right-move-rootuserpages' => '移动根用户页面',
 'right-movefile' => '移动文件',
-'right-suppressredirect' => '移动页面时不创建来自来源页面的重定向',
+'right-suppressredirect' => '移动页面时不创建来源页面的重定向',
 'right-upload' => '上传文件',
 'right-reupload' => '覆盖现存文件',
 'right-reupload-own' => '覆盖自己上传的文件',
@@ -1592,55 +1592,55 @@ $1",
 'right-upload_by_url' => '从URL上传文件',
 'right-purge' => '无确认清除页面缓存',
 'right-autoconfirmed' => '不受基于IP的速率限制',
-'right-bot' => '被视为自动过程',
+'right-bot' => '被视为自动程序',
 'right-nominornewtalk' => '不使小编辑在讨论页面引发新信息提示',
-'right-apihighlimits' => '在API查询中使用更高的限制',
+'right-apihighlimits' => '在API查询中使用更高的上限',
 'right-writeapi' => '使用写入API',
 'right-delete' => '删除页面',
 'right-bigdelete' => '删除有大型历史的页面',
 'right-deletelogentry' => '删除和恢复特定的日志项目',
 'right-deleterevision' => '删除和恢复页面的特定版本',
-'right-deletedhistory' => '查看被删除的历史条目,无其相关文字',
-'right-deletedtext' => '查看被删除的版本间的被删除的文字和更改',
-'right-browsearchive' => '搜索被删除的页面',
+'right-deletedhistory' => '查看被删除的历史项目,不含相关文本',
+'right-deletedtext' => '查看已被删除的文本及已删除版本间的差异',
+'right-browsearchive' => '搜索被删除的页面',
 'right-undelete' => '还原页面',
-'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
+'right-suppressrevision' => '审查和恢复管理员隐藏的版本',
 'right-suppressionlog' => '查看非公开日志',
 'right-block' => '阻止其他用户编辑',
-'right-blockemail' => '阻止用户电邮联系',
+'right-blockemail' => '阻止用户发送电子邮件',
 'right-hideuser' => '封禁并隐藏用户名',
-'right-ipblock-exempt' => '避开IP封禁、自动封禁和IP段封禁',
+'right-ipblock-exempt' => '绕过IP封禁、自动封禁和段封禁',
 'right-proxyunbannable' => '避开代理服务器的自动封禁',
 'right-unblockself' => '自我解封',
 'right-protect' => '更改保护级别和编辑受连锁保护的页面',
-'right-editprotected' => '编辑页面保护需要“{{int:protect-level-sysop}}”',
-'right-editsemiprotected' => '编辑页面保护需要“{{int:protect-level-autoconfirmed}}”',
+'right-editprotected' => '编辑保护级别为“{{int:protect-level-sysop}}”的页面',
+'right-editsemiprotected' => '编辑保护级别为“{{int:protect-level-autoconfirmed}}”的页面',
 'right-editinterface' => '编辑用户界面',
 'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
 'right-editusercss' => '编辑其他用户的CSS文件',
 'right-edituserjs' => '编辑其他用户的JavaScript文件',
-'right-editmyusercss' => '编辑你自己的用户CSS文件',
-'right-editmyuserjs' => '编辑你自己的用户JavaScript文件',
-'right-viewmywatchlist' => '查看的监视列表',
-'right-editmywatchlist' => '编辑您的监视列表。请注意即使没有这种权利,某些操作仍将添加页面。',
-'right-viewmyprivateinfo' => '查看你自己的私人数据(如电子邮件地址、真实姓名)',
-'right-editmyprivateinfo' => '编辑你自己的私人数据(如电子邮件地址、真实姓名)',
+'right-editmyusercss' => '编辑的用户CSS文件',
+'right-editmyuserjs' => '编辑的用户JavaScript文件',
+'right-viewmywatchlist' => '查看的监视列表',
+'right-editmywatchlist' => '编辑您的监视列表。请留意即使缺少此权限,某些操作仍将添加页面至监视列表。',
+'right-viewmyprivateinfo' => '查看的私人数据(如电子邮件地址、真实姓名)',
+'right-editmyprivateinfo' => '编辑的私人数据(如电子邮件地址、真实姓名)',
 'right-editmyoptions' => '编辑您的个人设置',
-'right-rollback' => '快速回退最后编辑特定页面的用户的编辑',
+'right-rollback' => '快速回退最后一名用户对特定页面的编辑',
 'right-markbotedits' => '标记回退编辑为机器人编辑',
 'right-noratelimit' => '不受速率限制影响',
 'right-import' => '从其他wiki导入页面',
-'right-importupload' => '从文件上传导入页面',
+'right-importupload' => '通过上传文件导入页面',
 'right-patrol' => '标记他人的编辑为已巡查',
 'right-autopatrol' => '使自己的编辑自动标记为已巡查',
 'right-patrolmarks' => '查看最近更改的巡查标记',
 'right-unwatchedpages' => '查看未受监视页面的列表',
 'right-mergehistory' => '合并页面历史',
-'right-userrights' => '编辑所有用户权限',
-'right-userrights-interwiki' => '编辑其它wiki用户的用户权限',
+'right-userrights' => '编辑所有用户权限',
+'right-userrights-interwiki' => '编辑其它wiki用户的用户权限',
 'right-siteadmin' => '锁定和解锁数据库',
-'right-override-export-depth' => '导出含有链接页面深度为5的页面',
-'right-sendemail' => '电邮联系其他用户',
+'right-override-export-depth' => '导出页面,包括最多5层链接',
+'right-sendemail' => '发送电子邮件给其他用户',
 'right-passwordreset' => '查看密码重置电子邮件',
 
 # Special:Log/newusers
@@ -1670,7 +1670,7 @@ $1",
 'action-delete' => '删除本页',
 'action-deleterevision' => '删除本版本',
 'action-deletedhistory' => '查看本页面被删除的历史',
-'action-browsearchive' => '搜索被删除的页面',
+'action-browsearchive' => '搜索被删除的页面',
 'action-undelete' => '还原本页',
 'action-suppressrevision' => '审查和恢复本隐藏版本',
 'action-suppressionlog' => '查看本非公开日志',
@@ -1694,7 +1694,7 @@ $1",
 
 # Recent changes
 'nchanges' => '$1个更改',
-'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|自上次访问}}',
+'enhancedrc-since-last-visit' => '{{PLURAL:$1|上次访问后}}$1个',
 'enhancedrc-history' => '历史',
 'recentchanges' => '最近更改',
 'recentchanges-legend' => '最近更改选项',
@@ -1702,19 +1702,19 @@ $1",
 'recentchanges-noresult' => '在此期间没有符合这些条件的编辑',
 'recentchanges-feed-description' => '用这个源跟踪本wiki的最近更改。',
 'recentchanges-label-newpage' => '该编辑创建了新页面',
-'recentchanges-label-minor' => 'è¿\99æ\98¯ä¸\80个小编辑',
-'recentchanges-label-bot' => '该编辑由机器人行',
+'recentchanges-label-minor' => '该ç¼\96è¾\91为小编辑',
+'recentchanges-label-bot' => '该编辑由机器人行',
 'recentchanges-label-unpatrolled' => '该编辑尚未巡查',
-'recentchanges-label-plusminus' => '页面大小通过该字节数更改',
+'recentchanges-label-plusminus' => '该页面字节数的前后变化',
+'recentchanges-legend-heading' => "'''说明:'''",
 'recentchanges-legend-newpage' => '(另见[[Special:NewPages|新页面列表]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "下面是过去'''$2'''天的最后'''$1'''个更改,截至$4 $5。",
 'rcnotefrom' => "下面是'''$2'''之后的更改(最多显示'''$1'''个)。",
 'rclistfrom' => '显示$1之后的新更改',
 'rcshowhideminor' => '$1小编辑',
-'rcshowhidebots' => '$1机器人的编辑',
-'rcshowhideliu' => '$1登录用户的编辑',
-'rcshowhideanons' => '$1匿名用户的编辑',
+'rcshowhidebots' => '$1机器人',
+'rcshowhideliu' => '$1注册用户',
+'rcshowhideanons' => '$1匿名用户',
 'rcshowhidepatr' => '$1已巡查的编辑',
 'rcshowhidemine' => '$1我的编辑',
 'rclinks' => '显示最后$2天的最后$1个更改<br />$3',
@@ -1794,7 +1794,7 @@ $1",
 'filename-tooshort' => '文件名过短。',
 'filetype-banned' => '此类文件被禁止。',
 'verification-error' => '文件未通过验证。',
-'hookaborted' => '您所尝试的修改被插件钩子舍弃。',
+'hookaborted' => '您所尝试的修改被一个扩展程序终止。',
 'illegal-filename' => '文件名非法。',
 'overwrite' => '不允许覆盖现有文件。',
 'unknown-error' => '发生未知错误。',
@@ -1821,6 +1821,7 @@ $1",
 'fileexists-shared-forbidden' => '共享文件库中存在该名称的文件。如果你仍想上传你的文件,请返回使用其他名称。[[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => '本文件是以下{{PLURAL:$1|文件}}的副本:',
 'file-deleted-duplicate' => '一个相同名称的文件 ([[:$1]]) 在先前删除过。您应该在重新上传之前检查一下该文件之删除纪录。',
+'file-deleted-duplicate-notitle' => '之前有与此相同的文件被删除和取消标题。您应该询问查看过改文件数据的任何人以复查重新上传时的诸多问题。',
 'uploadwarning' => '上传警告',
 'uploadwarning-text' => '请修改下面的文件说明并重试。',
 'savefile' => '保存文件',
@@ -2000,9 +2001,9 @@ $1',
 'filehist-missing' => '文件遗失',
 'imagelinks' => '文件用途',
 'linkstoimage' => '以下{{PLURAL:$1|页面|$1个页面}}链接至本文件:',
-'linkstoimage-more' => '多于$1个页面连接到这个文件。
-下面的列表只列示了连去这个文件的最首$1个页面。
-一个[[Special:WhatLinksHere/$2|完整的列表]]可以提供。',
+'linkstoimage-more' => '超过$1个页面连接到这个文件。
+此处只列出首$1个链接到该文件的页面。
+您也可以查看[[Special:WhatLinksHere/$2|完整的列表]]。',
 'nolinkstoimage' => '没有页面链接到本文件。',
 'morelinkstoimage' => '查看连接到这个文件的[[Special:WhatLinksHere/$1|更多链接]]。',
 'linkstoimage-redirect' => '$1(文件重定向)$2',
@@ -2047,7 +2048,7 @@ $1',
 *常用删除理由
 ** 侵犯版权
 ** 重复文件',
-'filedelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\9f\8bç\94±',
+'filedelete-edit-reasonlist' => 'ç¼\96è¾\91å\88 é\99¤å\8e\9få\9b ',
 'filedelete-maintenance' => '维护期间文件删除和恢复暂时停用。',
 'filedelete-maintenance-title' => '无法删除文件',
 
@@ -2132,15 +2133,16 @@ $1',
 
 # Miscellaneous special pages
 'nbytes' => '$1字节',
-'ncategories' => '$1个分类',
+'ncategories' => '$1个{{PLURAL:$1|分类}}',
 'ninterwikis' => '$1个跨语言链接',
 'nlinks' => '$1个链接',
 'nmembers' => '$1个成员',
+'nmemberschanged' => '$1 → $2个成员',
 'nrevisions' => '$1个版本',
 'nviews' => '$1次浏览',
 'nimagelinks' => '用于$1个页面中',
 'ntransclusions' => '用于$1个页面中',
-'specialpage-empty' => 'æ\97 è¯¥æ\8a¥å\91\8aç\9a\84结果。',
+'specialpage-empty' => 'æ­¤æ\8a¥å\91\8aæ\97 结果。',
 'lonelypages' => '孤立页面',
 'lonelypagestext' => '以下页面没有被{{SITENAME}}的其它页面链接或包含。',
 'uncategorizedpages' => '未归类页面',
@@ -2174,10 +2176,9 @@ $1',
 'protectedpages' => '受保护页面',
 'protectedpages-indef' => '仅无限期保护',
 'protectedpages-cascade' => '仅连锁保护',
-'protectedpagestext' => '以ä¸\8b页é\9d¢å\8f\97å\88°ä¿\9dæ\8a¤ï¼\8cä¸\8dè\83½ç§»ç§»æ\88\96ç¼\96è¾\91',
+'protectedpages-noredirect' => 'é\9a\90è\97\8fé\87\8då®\9aå\90\91',
 'protectedpagesempty' => '在这些参数下没有页面正在保护。',
 'protectedtitles' => '受保护标题',
-'protectedtitlestext' => '以下标题受到保护,不能创建',
 'protectedtitlesempty' => '在这些参数之下并无标题正在保护。',
 'listusers' => '用户列表',
 'listusers-editsonly' => '只显示有编辑的用户',
@@ -2228,9 +2229,6 @@ $1',
 'allpagesto' => '显示页面结束于:',
 'allarticles' => '所有页面',
 'allinnamespace' => '所有页面($1名字空间)',
-'allnotinnamespace' => '所有页面(非$1名字空间)',
-'allpagesprev' => '前',
-'allpagesnext' => '后',
 'allpagessubmit' => '提交',
 'allpagesprefix' => '显示有该前缀的页面:',
 'allpagesbadtitle' => '给定的页面标题是非法的,或者具有一个内部语言或内部 wiki 的前缀。它可能包含一个或更多的不能用于标题的字符。',
@@ -2250,8 +2248,8 @@ $1',
 'special-categories-sort-abc' => '按字母排列',
 
 # Special:DeletedContributions
-'deletedcontributions' => '被删除的用户贡献',
-'deletedcontributions-title' => '被删除的用户贡献',
+'deletedcontributions' => '被删除的用户贡献',
+'deletedcontributions-title' => '被删除的用户贡献',
 'sp-deletedcontributions-contribs' => '贡献',
 
 # Special:LinkSearch
@@ -2313,7 +2311,7 @@ $1',
 'noemailtitle' => '无电子邮件地址',
 'noemailtext' => '该用户还没有指定一个有效的电子邮件地址。',
 'nowikiemailtitle' => '禁止电子邮件',
-'nowikiemailtext' => 'è¿\99ä½\8dç\94¨æ\88·é\80\89æ\8b©ä¸\8dæ\8e¥æ\94其他用户的电子邮件。',
+'nowikiemailtext' => '该ç\94¨æ\88·å·²ç»\8fé\80\89æ\8b©ä¸\8dæ\8e¥æ\94¶æ\9d¥è\87ª其他用户的电子邮件。',
 'emailnotarget' => '收件人不存在或无效的用户名。',
 'emailtarget' => '输入收件人的用户名',
 'emailusername' => '用户名:',
@@ -2359,8 +2357,8 @@ $1',
 'watchmethod-list' => '查看监视页中的最新修改',
 'watchlistcontains' => '您的监视列表包含$1个页面。',
 'iteminvalidname' => "页面'$1'错误,无效命名...",
-'wlnote' => "下面是最后'''$2'''小时的最后'''$1'''个更改,截至$3 $4。",
-'wlshowlast' => '显示过去$1小时 $2天 $3',
+'wlnote' => "下面是{{PLURAL:$2|上|过去'''$2'''}}小时的{{PLURAL:$1|最后更改|最后'''$1'''个更改}},截至$3 $4。",
+'wlshowlast' => '显示过去$1小时或$2天内的$3',
 'watchlist-options' => '监视列表选项',
 
 # Displayed when you click the "watch" button and it is in the process of watching
@@ -2381,7 +2379,7 @@ $1',
 'enotif_body_intro_moved' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|移动}},请浏览<$3>查看当前版本。',
 'enotif_body_intro_restored' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|恢复}},请浏览<$3>查看当前版本。',
 'enotif_body_intro_changed' => '{{SITENAME}}页面$1已于$PAGEEDITDATE被$2{{GENDER:$2|更改}},请浏览 $3 查看当前版本。',
-'enotif_lastvisited' => '请浏览 $1 查看你上次访问后的所有更改。',
+'enotif_lastvisited' => '请浏览 $1 查看你上次访问后的所有更改。',
 'enotif_lastdiff' => '请浏览 $1 查看该更改。',
 'enotif_anon_editor' => '匿名用户$1',
 'enotif_body' => '亲爱的$WATCHINGUSERNAME:
@@ -2425,23 +2423,24 @@ $UNWATCHURL
 请确定您要进行此项操作,并且了解其后果,同时您的行为符合[[{{MediaWiki:Policy-url}}]]。',
 'actioncomplete' => '操作完成',
 'actionfailed' => '操作失败',
-'deletedtext' => '“$1”已经被删除。最近删除的记录请参见$2。',
+'deletedtext' => '“$1”已被删除。最近的删除日志请见$2。',
 'dellogpage' => '删除日志',
 'dellogpagetext' => '下面是最近的删除的列表。',
-'deletionlog' => '删除记录',
+'deletionlog' => '删除日志',
 'reverted' => '恢复到较早的版本',
 'deletecomment' => '原因:',
 'deleteotherreason' => '其他/附加原因:',
 'deletereasonotherlist' => '其他原因',
 'deletereason-dropdown' => '*常见删除原因
-** 广告
-** 破坏行为
-** 侵犯著作权
-** 作者申请
-** 损坏的重定向',
+**广告
+**破坏行为
+**侵犯著作权
+**作者申请
+**受损重定向',
 'delete-edit-reasonlist' => '编辑删除原因',
 'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
 'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
+'deleting-backlinks-warning' => "'''警告:'''有其他页面链接到你要删除的页面。",
 
 # Rollback
 'rollback' => '回退编辑',
@@ -2456,7 +2455,7 @@ $UNWATCHURL
 本页最后的编辑者是[[User:$3|$3]]([[User talk:$3|讨论]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]])。',
 'editcomment' => '编辑摘要:"<i>$1</i>"。',
 'revertpage' => '恢复[[Special:Contributions/$2|$2]]([[User talk:$2|讨论]])的编辑至[[User:$1|$1]]的最后版本',
-'revertpage-nouser' => '恢复由隐藏用户的编辑到{{GENDER:$1|[[User:$1|$1]]}}的最后一个修订版本',
+'revertpage-nouser' => '恢复隐藏用户的编辑至{{GENDER:$1|[[User:$1|$1]]}}的最后版本',
 'rollback-success' => '已恢复$1的编辑,更改回$2的最后版本。',
 
 # Edit tokens
@@ -2549,7 +2548,6 @@ $UNWATCHURL
 'undeletebtn' => '还原',
 'undeletelink' => '查看/还原',
 'undeleteviewlink' => '查看',
-'undeletereset' => '重设',
 'undeleteinvert' => '反向选择',
 'undeletecomment' => '原因:',
 'undeletedrevisions' => '{{PLURAL:$1|$1个版本}}被还原',
@@ -2565,7 +2563,7 @@ $1',
 'undelete-search-box' => '搜索已删除页面',
 'undelete-search-prefix' => '显示页面自:',
 'undelete-search-submit' => '搜索',
-'undelete-no-results' => '删除记录里没有符合的结果。',
+'undelete-no-results' => '删除日志中没有匹配的结果。',
 'undelete-filename-mismatch' => '不能删除带有时间戳的文件修订$1:文件不匹配',
 'undelete-bad-store-key' => '不能删除带有时间戳的文件修订$1:文件在删除前遗失。',
 'undelete-cleanup-error' => '删除无用的存档文件“$1”时发生错误。',
@@ -2582,9 +2580,9 @@ $1',
 'namespace' => '名字空间:',
 'invert' => '反选',
 'tooltip-invert' => '请选择该框以隐藏指定名字空间(及相关名字空间,若被选择)的页面更改',
-'namespace_association' => '相关名字空间',
+'namespace_association' => '关联的名字空间',
 'tooltip-namespace_association' => '选中此复选框可包括与选定名字空间相关的讨论页或子页面',
-'blanknamespace' => '(主)',
+'blanknamespace' => '(主)',
 
 # Contributions
 'contributions' => '{{GENDER:$1|用户}}贡献',
@@ -2600,7 +2598,7 @@ $1',
 'sp-contributions-newbies-sub' => '新手',
 'sp-contributions-newbies-title' => '新手的用户贡献',
 'sp-contributions-blocklog' => '封禁日志',
-'sp-contributions-deleted' => '被删除的用户贡献',
+'sp-contributions-deleted' => '被删除的用户贡献',
 'sp-contributions-uploads' => '上传',
 'sp-contributions-logs' => '日志',
 'sp-contributions-talk' => '讨论',
@@ -2638,7 +2636,6 @@ $1',
 'block' => '封禁用户',
 'unblock' => '解封用户',
 'blockip' => '封禁用户',
-'blockip-title' => '封禁用户',
 'blockip-legend' => '封禁用户',
 'blockiptext' => '使用下方的表单来禁止来自特定IP地址或用户名的写访问。
 只有在为了防止破坏,并符合[[{{MediaWiki:Policy-url}}|方针]]的情况下才可采取此行动。
@@ -2646,7 +2643,6 @@ $1',
 'ipadressorusername' => 'IP地址或用户名:',
 'ipbexpiry' => '期限:',
 'ipbreason' => '原因:',
-'ipbreasonotherlist' => '其他原因',
 'ipbreason-dropdown' => '*常见封禁原因
 ** 插入虚假信息
 ** 删除页面内容
@@ -2662,8 +2658,6 @@ $1',
 'ipbsubmit' => '封禁该用户',
 'ipbother' => '其它时间:',
 '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',
-'ipbotheroption' => '其他',
-'ipbotherreason' => '其他/附加原因:',
 'ipbhidename' => '在编辑及列表中隐藏用户名',
 'ipbwatchuser' => '监视该用户的用户页面和讨论页面',
 'ipb-disableusertalk' => '阻止用户在封禁期间编辑自己的讨论页面',
@@ -2675,6 +2669,7 @@ $1',
 参见[[Special:BlockList|封禁列表]]以复核封禁。',
 'ipb-blockingself' => '您将要封禁自己!确实要这样做吗?',
 'ipb-confirmhideuser' => '您即将在封禁用户的同时启用“隐藏账户”功能。这将从所有列表和日志记录中隐藏这个用户名。您确认这样做吗?',
+'ipb-confirmaction' => '如果您确信要这样做,请检查底部的“{{int:ipb-confirm}}”部分。',
 'ipb-edit-dropdown' => '编辑封禁原因',
 'ipb-unblock-addr' => '解封$1',
 'ipb-unblock' => '解封用户名或IP地址',
@@ -2749,7 +2744,6 @@ $1被封禁的理由是:“$2”',
 'sorbsreason' => '在{{SITENAME}}使用的DNSBL中,您的IP地址被列为公开代理。',
 'sorbs_create_account_reason' => '在{{SITENAME}}使用的DNSBL中,您的IP地址被列为公开代理,因此您不能创建新账户。',
 'xffblockreason' => '您或您正在使用的代理服务器呈现在X-Forwarded-For数据包头的一个IP地址已被封禁。封禁原因为:$1',
-'cant-block-while-blocked' => '您无法在封禁期内封禁其他用户。',
 'cant-see-hidden-user' => '您尝试封禁的用户已被封禁并隐藏。
 由于您尚无隐藏用户的权限,您无法查看或编辑此用户的封禁。',
 'ipbblocked' => '您无法封禁或解封其他用户,因为您自己已被封禁',
@@ -2808,7 +2802,6 @@ $1被封禁的理由是:“$2”',
 在这些情况下,您在必要时必须手工移动或合并页面。",
 'movearticle' => '移动页面:',
 'moveuserpage-warning' => "'''警告:'''你将移动一个用户页面。请注意,只有该页面会被移动,该用户''不''会被更名。",
-'movenologin' => '未登录',
 'movenologintext' => '您必须是一名登记用户并且[[Special:UserLogin|登录]]
 后才可移动一个页面。',
 'movenotallowed' => '你没有权限移动页面。',
@@ -2824,8 +2817,6 @@ $1被封禁的理由是:“$2”',
 'movepage-moved-noredirect' => '重定向的创建已被禁用。',
 'articleexists' => '该名称的页面已存在,或者您使用的名称无效。请另选一名。',
 'cantmove-titleprotected' => '您无法将页面移动到该位置,因为新标题已被保护以防止创建。',
-'talkexists' => "'''页面本身移动成功,但由于新标题下已有讨论页存在,故讨论页无法移动。请手工合并这两个页面。'''",
-'movedto' => '移动到',
 'movetalk' => '移动关联的讨论页',
 'move-subpages' => '移动子页面(上至$1页)',
 'move-talk-subpages' => '如果可能,移动子对话页面(上至$1页)',
@@ -3164,7 +3155,7 @@ $2',
 'markedaspatrolled' => '标记为已检查',
 'markedaspatrolledtext' => '[[:$1]]的已选中修订版本已被标识为已巡查。',
 'rcpatroldisabled' => '最新更改检查被关闭',
-'rcpatroldisabledtext' => '最新更改检查的功能目前已关闭。',
+'rcpatroldisabledtext' => '最近更改巡查功能目前已关闭。',
 'markedaspatrollederror' => '不能标志为已检查',
 'markedaspatrollederrortext' => '你需要指定一个版本以标记为已巡查。',
 'markedaspatrollederror-noautopatrol' => '你不能把自己的更改标记为已检查。',
@@ -3282,7 +3273,7 @@ Variants for Chinese language
 'variantname-kk-cyrl' => 'kk-cyrl',
 
 # Metadata
-'metadata' => 'å\8e\9få§\8b数据',
+'metadata' => 'å\85\83数据',
 'metadata-help' => '此文件中包含有扩展的信息。这些信息可能是由数码相机或扫描仪在创建或数字化过程中所添加的。
 
 如果此文件的源文件已经被修改,一些信息在修改后的文件中将不能完全反映出来。',
@@ -3694,15 +3685,10 @@ Variants for Chinese language
 'exif-urgency-high' => '高($1)',
 'exif-urgency-other' => '用户定义的优先级($1)',
 
-# External editor support
-'edit-externally' => '用外部应用程序编辑本文件',
-'edit-externally-help' => '(更多信息请见[https://www.mediawiki.org/wiki/Manual:External_editors 安装说明])',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '所有',
 'namespacesall' => '全部',
 'monthsall' => '全部',
-'limitall' => '全部',
 
 # Email address confirmation
 'confirmemail' => '确认邮箱地址',
@@ -3720,8 +3706,7 @@ Variants for Chinese language
 'confirmemail_invalid' => '无效的确认码,该代码可能已经过期。',
 'confirmemail_needlogin' => '您需要$1以确认您的邮箱地址。',
 'confirmemail_success' => '您的邮箱已经被确认。您现在可以[[Special:UserLogin|登录]]并使用此网站了。',
-'confirmemail_loggedin' => '您的邮箱地址现在已被确认。',
-'confirmemail_error' => '保存你的确认时出错。',
+'confirmemail_loggedin' => '你的电子邮件地址现在已经确认。',
 'confirmemail_subject' => '{{SITENAME}}电子邮件地址确认',
 'confirmemail_body' => '来自IP地址$1的用户(可能是您)在{{SITENAME}}上创建了账户“$2”,并提交了您
 的电子邮箱地址。
@@ -3800,6 +3785,11 @@ $5
 'imgmultigo' => '提交!',
 'imgmultigoto' => '到第$1页',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(默认语言)',
+'img-lang-info' => '在$1找到此图像。$2',
+'img-lang-go' => '去',
+
 # Table pager
 'ascending_abbrev' => '升',
 'descending_abbrev' => '降',
@@ -3851,7 +3841,7 @@ $5
 'watchlistedit-raw-removed' => '$1个标题被删除:',
 
 # Watchlist editing tools
-'watchlisttools-view' => '查看关更改',
+'watchlisttools-view' => '查看关更改',
 'watchlisttools-edit' => '查看并编辑监视列表',
 'watchlisttools-raw' => '编辑原始监视列表',
 
@@ -3877,8 +3867,18 @@ $5
 'version-parser-function-hooks' => '解析器函数钩',
 'version-hook-name' => '钩名',
 'version-hook-subscribedby' => '署名',
-'version-version' => '(版本$1)',
-'version-license' => '授权协议',
+'version-version' => '(版本 $1)',
+'version-license' => 'MediaWiki协议',
+'version-ext-license' => '授权',
+'version-ext-colheader-name' => '扩展',
+'version-ext-colheader-version' => '版本',
+'version-ext-colheader-license' => '协议',
+'version-ext-colheader-description' => '说明',
+'version-ext-colheader-credits' => '作者',
+'version-license-title' => '用于$1的授权',
+'version-license-not-found' => '没有找到与此拓展相关的授权信息。',
+'version-credits-title' => '用于$1的信用',
+'version-credits-not-found' => '没有找到与此拓展相关的信用信息。',
 'version-poweredby-credits' => "本Wiki由'''[https://www.mediawiki.org/ MediaWiki]'''驱动,版权所有 © 2001-$1 $2。",
 'version-poweredby-others' => '其他',
 'version-poweredby-translators' => 'translatewiki.net上的翻译者',
@@ -3898,13 +3898,14 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath 脚本路径]',
 
 # Special:Redirect
-'redirect' => '重定向(按文件、用户或版本ID)',
+'redirect' => '重定向(按文件、用户、页面或版本ID)',
 'redirect-legend' => '重定向至文件或页面',
-'redirect-summary' => '本特殊页面可以跳转至一个文件(提供文件名)、页面(提供版本ID)或用户页面(提供数字用户ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
+'redirect-summary' => '本特殊页面可以跳转至一个文件(提供文件名)、页面(提供版本ID或页面ID)或用户页面(提供数字用户ID)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
 'redirect-submit' => '提交',
 'redirect-lookup' => '基于:',
 'redirect-value' => '值:',
 'redirect-user' => '用户ID',
+'redirect-page' => '页面ID',
 'redirect-revision' => '页面版本ID',
 'redirect-file' => '文件名',
 'redirect-not-exists' => '没找到相应值',
@@ -3971,7 +3972,6 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 
 # Special:ComparePages
 'comparepages' => '对比页面',
-'compare-selector' => '对比页面版本',
 'compare-page1' => '页面1',
 'compare-page2' => '页面2',
 'compare-rev1' => '版本1',
@@ -4098,6 +4098,7 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'api-error-overwrite' => '不允许覆盖现有文件。',
 'api-error-stashfailed' => '内部错误:服务器保存临时文件失败。',
 'api-error-publishfailed' => '内部错误:服务器发布临时文件失败。',
+'api-error-stasherror' => '上传文件存档时出现错误。',
 'api-error-timeout' => '服务器没有在预期内响应。',
 'api-error-unclassified' => '出现未知错误。',
 'api-error-unknown-code' => '未知错误:$1',
@@ -4145,10 +4146,14 @@ MediaWiki发表时预期有用,但对此'''无任何保证''',亦无隐含
 'expand_templates_input' => '输入文本:',
 'expand_templates_output' => '结果:',
 'expand_templates_xml_output' => 'XML输出',
+'expand_templates_html_output' => '原始HTML输出',
 'expand_templates_ok' => '确定',
 'expand_templates_remove_comments' => '移除注释',
 'expand_templates_remove_nowiki' => '在结果中隐藏<nowiki>标签',
 'expand_templates_generate_xml' => '显示XML语法树',
+'expand_templates_generate_rawhtml' => '显示原始HTML',
 'expand_templates_preview' => '预览',
 
+# Unknown messages
+'uploadinvalidxml' => '上传文件中的XML无法解析。',
 );
index db13cd8..5e6f7d3 100644 (file)
@@ -118,12 +118,12 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Activeusers'               => array( '活躍用戶' ),
        'Allmessages'               => array( '所有信息' ),
+       'AllMyUploads'              => array( '所有本人上載', '所有本人文件' ),
        'Allpages'                  => array( '所有頁面' ),
        'Ancientpages'              => array( '最早頁面' ),
        'Badtitle'                  => array( '無效標題' ),
        'Blankpage'                 => array( '空白頁面' ),
        'Block'                     => array( '查封用戶' ),
-       'Blockme'                   => array( '封禁我' ),
        'Booksources'               => array( '網絡書源' ),
        'BrokenRedirects'           => array( '損壞的重定向頁' ),
        'Categories'                => array( '頁面分類' ),
@@ -135,10 +135,10 @@ $specialPageAliases = array(
        'CreateAccount'             => array( '創建賬戶' ),
        'Deadendpages'              => array( '斷鏈頁面' ),
        'DeletedContributions'      => array( '已刪除的用戶貢獻' ),
-       'Disambiguations'           => array( '消歧義頁' ),
        'DoubleRedirects'           => array( '雙重重定向頁面' ),
        'EditWatchlist'             => array( '編輯監視列表' ),
        'Emailuser'                 => array( '電郵用戶' ),
+       'ExpandTemplates'           => array( '展開模板' ),
        'Export'                    => array( '導出頁面' ),
        'Fewestrevisions'           => array( '最少修訂頁面' ),
        'FileDuplicateSearch'       => array( '搜索重複文件' ),
@@ -174,6 +174,7 @@ $specialPageAliases = array(
        'Myuploads'                 => array( '我的上傳' ),
        'Newimages'                 => array( '新建文件' ),
        'Newpages'                  => array( '新頁面' ),
+       'PagesWithProp'             => array( '帶屬性頁面' ),
        'PasswordReset'             => array( '重設密碼' ),
        'PermanentLink'             => array( '永久連結' ),
        'Popularpages'              => array( '熱點頁面' ),
@@ -186,6 +187,7 @@ $specialPageAliases = array(
        'Recentchanges'             => array( '最近更改' ),
        'Recentchangeslinked'       => array( '鏈出更改' ),
        'Redirect'                  => array( '重定向' ),
+       'ResetTokens'               => array( '覆寫令牌' ),
        'Revisiondelete'            => array( '刪除或恢復版本' ),
        'Search'                    => array( '搜索' ),
        'Shortpages'                => array( '短頁面' ),
@@ -288,7 +290,6 @@ $messages = array(
 'tog-minordefault' => '預設將所有編輯標記為小修改',
 'tog-previewontop' => '在編輯框上方顯示預覽',
 'tog-previewonfirst' => '第一次編輯時顯示預覽',
-'tog-nocache' => '停用瀏覽器的頁面快取',
 'tog-enotifwatchlistpages' => '當我監視列表中的頁面或檔案有變更時,發送電子郵件通知我',
 'tog-enotifusertalkpages' => '我的對話頁有變更時,發送電子郵件通知我',
 'tog-enotifminoredits' => '頁面和檔案的小修改也發電子郵件給我',
@@ -388,12 +389,12 @@ $messages = array(
 'december-date' => '12月$1日',
 
 # Categories related messages
-'pagecategories' => '$1 個分類',
+'pagecategories' => '{{PLURAL:$1|分類}}',
 'category_header' => '「$1」分類中的頁面',
 'subcategories' => '子分類',
 'category-media-header' => '「$1」分類中的媒體',
 'category-empty' => "''此分類目前未包含頁面或媒體。''",
-'hidden-categories' => '$1 個隱藏分類',
+'hidden-categories' => '{{PLURAL:$1|隱藏分類}}',
 'hidden-category-category' => '隱藏分類',
 'category-subcat-count' => '{{PLURAL:$2|此分類有以下一個子分類。|此分類有 $2 個子分類,以下列出了 $1 個。}}',
 'category-subcat-count-limited' => '此分類有以下 $1 個子分類。',
@@ -424,7 +425,6 @@ $messages = array(
 'qbedit' => '編輯',
 'qbpageoptions' => '頁面選項',
 'qbmyoptions' => '我的選項',
-'qbspecialpages' => '特殊頁面',
 'faq' => '常見問題解答',
 'faqpage' => 'Project:常見問題解答',
 
@@ -641,9 +641,6 @@ $1',
 'perfcachedts' => '下列是快取資料,其最後更新時間是$1。只有{{PLURAL:$4|一個結果|$4個結果}}會被顯示。 A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
 'querypage-no-updates' => '目前禁止對此頁面進行更新。
 此處的資料將不能被立即重新整理。',
-'wrong_wfQuery_params' => '錯誤的參數被傳遞到 wfQuery()<br />
-函數:$1<br />
-查詢:$2',
 'viewsource' => '檢視原始碼',
 'viewsource-title' => '檢視 $1 的原始碼',
 'actionthrottled' => '動作已壓制',
@@ -769,7 +766,7 @@ $2',
 'passwordtooshort' => '您的密碼不能少於$1個字元。',
 'password-name-match' => '您的密碼必須跟您的用戶名不相同。',
 'password-login-forbidden' => '這個用戶名稱及密碼的使用是被禁止的。',
-'mailmypassword' => '將新密碼寄給我',
+'mailmypassword' => '重設密碼',
 'passwordremindertitle' => '{{SITENAME}}的新臨時密碼',
 'passwordremindertext' => '有人(可能是您,來自IP位址$1)已請求{{SITENAME}}的新密碼 ($4)。
 用戶"$2"的一個新臨時密碼現在已被設定好為"$3"。
@@ -819,7 +816,7 @@ $2',
 'user-mail-no-body' => '試圖發送空的或主體不合理短的電子郵件。',
 
 # Change password dialog
-'resetpass' => '變更密碼',
+'changepassword' => '變更密碼',
 'resetpass_announce' => '您是透過一個臨時的發送到郵件中的代碼登入的。要完成登入,您必須在這裡設定一個新密碼:',
 'resetpass_text' => '<!-- 在此處加入文字 -->',
 'resetpass_header' => '變更帳號密碼',
@@ -840,7 +837,7 @@ $2',
 # Special:PasswordReset
 'passwordreset' => '重新設定密碼',
 'passwordreset-text-one' => '完成此表格以重新設定您的密碼。',
-'passwordreset-text-many' => '{{PLURAL:$1|輸入其中一項以重新設定您的密碼。}}',
+'passwordreset-text-many' => '{{PLURAL:$1|鍵入一個電郵位址以便遞送新密碼。}}',
 'passwordreset-legend' => '重設密碼',
 'passwordreset-disabled' => '此圍記(Wiki)已禁用重設密碼。',
 'passwordreset-emaildisabled' => '此圍記(Wiki)已禁用電子郵件功能。',
@@ -1092,6 +1089,8 @@ $2
 'invalid-content-data' => '內容資料無效',
 'content-not-allowed-here' => '[[$2]]頁面上不允許「$1」內容',
 'editwarning-warning' => '離開這個頁面可能會令您失去之前作出的所有更改。若您已經登入,您可在偏好設定的「編輯」部份裡關閉此警告。',
+'editpage-notsupportedcontentformat-title' => '內容格式尚無法支援',
+'editpage-notsupportedcontentformat-text' => '內容模型$2尚無法支援內容格式$1。',
 
 # Content models
 'content-model-wikitext' => '圍記文字(Wikitext)',
@@ -1133,6 +1132,8 @@ $2
 'cantcreateaccount-text' => "從這個 IP 位址 (<b>$1</b>) 建立帳號已經被 [[User:$3|$3]] 禁止。
 
 當中被 $3 封禁的原因是 ''$2''",
+'cantcreateaccount-range-text' => "於此IP位址段'''$1'''之賬戶註冊被[[User:$3|$3]]禁止,其亦包括您所使用之IP位址('''$4''')。
+$3所述禁止原因為“$2”。",
 
 # History pages
 'viewpagelogs' => '查詢這個頁面的日誌',
@@ -1189,10 +1190,6 @@ $2
 'revdelete-nooldid-title' => '無效的目標修訂',
 'revdelete-nooldid-text' => '您尚未指定一個目標修訂去進行這個功能、
 所指定的修訂不存在,或者您嘗試去隱藏現時的修訂。',
-'revdelete-nologtype-title' => '沒有給出日誌類型',
-'revdelete-nologtype-text' => '您尚未指定一種日誌類型去做這個動作。',
-'revdelete-nologid-title' => '無效的日誌項目',
-'revdelete-nologid-text' => '您尚未指定一個目標日誌項目去進行這個動作或指定的項目不存在。',
 'revdelete-no-file' => '指定的檔案不存在。',
 'revdelete-show-file-confirm' => '{{GENDER:|你|妳|你}}是否真的是想去檢視於$2 $3刪除「<nowiki>$1</nowiki>」的檔案修訂?',
 'revdelete-show-file-submit' => '是',
@@ -1226,8 +1223,6 @@ $1",
 'logdelete-failure' => "'''事件的可見性無法設定:'''
 $1",
 'revdel-restore' => '變更可見性',
-'revdel-restore-deleted' => '已刪除的修訂版本',
-'revdel-restore-visible' => '可見的修訂版本',
 'pagehist' => '頁面歷史',
 'deletedhist' => '已刪除之歷史',
 'revdelete-hide-current' => '正在隱藏於$1 $2之項目錯誤:這個是現時的修訂,不可以隱藏。',
@@ -1300,12 +1295,8 @@ $1",
 # 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' => '前 $1 個',
@@ -1314,10 +1305,8 @@ $1",
 'nextn-title' => '後 $1 項結果',
 'shown-title' => '每頁顯示 $1 項結果',
 'viewprevnext' => '檢視($1 {{int:pipe-separator}} $2)($3)',
-'searchmenu-legend' => '搜尋選項',
 'searchmenu-exists' => "'''在這個 wiki 上已有一頁面叫做「[[:$1]]」。'''",
 'searchmenu-new' => "'''在這個 wiki 上建立這個頁面「[[:$1]]」!'''",
-'searchmenu-prefix' => '[[Special:PrefixIndex/$1|去瀏覽以此為首的頁面]]',
 'searchprofile-articles' => '內容頁面',
 'searchprofile-project' => '幫助和計劃頁面',
 'searchprofile-images' => '多媒體',
@@ -1338,20 +1327,16 @@ $1",
 'search-interwiki-default' => '$1 項結果:',
 'search-interwiki-more' => '(更多)',
 'search-relatedarticle' => '相關',
-'mwsuggest-disable' => '停用搜尋建議',
 'searcheverything-enable' => '在所有名字空間中搜尋',
 'searchrelated' => '相關',
 'searchall' => '所有',
 'showingresults' => '下面顯示從第 <b>$2</b> 條開始的 <b>$1</b> 條結果:',
 'showingresultsnum' => "下面顯示從第 '''$2''' 條開始的 '''{{PLURAL:$3|1|$3}}''' 條結果。",
 'showingresultsheader' => "對'''$4'''的{{PLURAL:$5|第 '''$1''' 至第 '''$3''' 項結果|第 '''$1 - $2''' 項,共 '''$3''' 項結果}}",
-'nonefound' => "'''注意:'''只有一些名字空間是會作為預設搜尋。嘗試''all:''去搜尋全部的頁面(包埋討論頁面、模板等),或可用需要的名字空間作為前綴。",
 'search-nonefound' => '在查詢中無結果相符。',
-'powersearch' => '進階搜尋',
 'powersearch-legend' => '進階搜尋',
 'powersearch-ns' => '在以下的名字空間中搜尋:',
 'powersearch-redir' => '重定向清單',
-'powersearch-field' => '搜尋',
 'powersearch-togglelabel' => '核取:',
 'powersearch-toggleall' => '所有',
 'powersearch-togglenone' => '無',
@@ -1364,7 +1349,6 @@ $1",
 'mypreferences' => '偏好設定',
 'prefs-edits' => '編輯次數:',
 'prefsnologintext2' => '請$1以進入用戶設定。',
-'changepassword' => '變更密碼',
 'prefs-skin' => '外觀',
 'skin-preview' => '預覽',
 'datedefault' => '預設值',
@@ -1387,13 +1371,11 @@ $1",
 'prefs-email' => '電子郵件選項',
 'prefs-rendering' => '外觀',
 'saveprefs' => '儲存',
-'resetprefs' => '清除未儲存的變更',
 'restoreprefs' => '還原所有預設設定(所有部分)',
 'prefs-editing' => '編輯',
-'rows' => '行:',
-'columns' => '列:',
+'rows' => '行:',
+'columns' => '列:',
 'searchresultshead' => '搜尋',
-'resultsperpage' => '每頁顯示連結數:',
 'stub-threshold' => '<a href="#" class="stub">短頁面連結</a>格式門檻值 (位元組):',
 'stub-threshold-disabled' => '已停用',
 'recentchangesdays' => '近期變更的顯示日數:',
@@ -1407,7 +1389,6 @@ $1",
 'localtime' => '當地時間:',
 'timezoneuseserverdefault' => '使用預設($1)',
 'timezoneuseoffset' => '其他 (指定偏移)',
-'timezoneoffset' => '時差¹:',
 'servertime' => '伺服器時間:',
 'guesstimezone' => '從瀏覽器填寫',
 'timezoneregion-africa' => '非洲',
@@ -1476,6 +1457,7 @@ $1",
 'prefs-tokenwatchlist' => '密鑰',
 'prefs-diffs' => '差異',
 'prefs-help-prefershttps' => '此選項將於您下次登入時生效。',
+'prefs-tabs-navigation-hint' => '提示:您可通過左、右鍵於選項卡之間切換。',
 
 # User preference: email validation using jQuery
 'email-address-validity-valid' => '電子郵件位址有效',
@@ -1527,7 +1509,7 @@ $1",
 'grouppage-bot' => '{{ns:project}}:機器人',
 'grouppage-sysop' => '{{ns:project}}:管理員',
 'grouppage-bureaucrat' => '{{ns:project}}:行政員',
-'grouppage-suppress' => '{{ns:project}}:監督',
+'grouppage-suppress' => '{{ns:project}}:監督',
 
 # Rights
 'right-read' => '閱讀頁面',
@@ -1661,15 +1643,15 @@ $1",
 'recentchanges-label-minor' => '這是一個小編輯',
 'recentchanges-label-bot' => '這次編輯是由機器人進行',
 'recentchanges-label-unpatrolled' => '這次編輯尚未巡查過',
-'recentchanges-label-plusminus' => '通過此處位元組的數位以更改頁面大小',
+'recentchanges-label-plusminus' => '更改前後頁面位元組大小的變化',
+'recentchanges-legend-heading' => "'''說明:'''",
 'recentchanges-legend-newpage' => '(另見[[Special:NewPages|新頁面列表]])',
 'recentchanges-legend-plusminus' => "(''±123'')",
-'rcnote' => "以下是在$4 $5,最近 '''$2''' 天內的 '''$1''' 次最近更改記錄。",
 'rcnotefrom' => "下面是自'''$2'''(最多顯示'''$1'''):",
 'rclistfrom' => '顯示自 $1 以來的新變更',
 'rcshowhideminor' => '$1小編輯',
 'rcshowhidebots' => '$1機器人的編輯',
-'rcshowhideliu' => '$1已登入用戶的編輯',
+'rcshowhideliu' => '$1已註冊用戶',
 'rcshowhideanons' => '$1匿名用戶的編輯',
 'rcshowhidepatr' => '$1巡查過的編輯',
 'rcshowhidemine' => '$1我的編輯',
@@ -1780,6 +1762,7 @@ $1",
 如果{{GENDER:|你|妳|你}}仍然想去上載它的話,請返回並用一個新的名稱來上傳此檔案。[[File:$1|thumb|center|$1]]',
 'file-exists-duplicate' => '這個檔案是跟以下的{{PLURAL:$1|一|多}}個檔案重覆:',
 'file-deleted-duplicate' => '一個相同名稱的檔案 ([[:$1]]) 在先前刪除過。您應該在重新上傳之前檢查一下該檔案之刪除紀錄。',
+'file-deleted-duplicate-notitle' => '此前同內容檔案已刪除並將之取消標題。您應詢問與既有檔案之相關用戶以複查再度上載之相關問題。',
 'uploadwarning' => '上載警告',
 'uploadwarning-text' => '請修改以下的檔案描述並重試。',
 'savefile' => '儲存檔案',
@@ -1963,9 +1946,9 @@ $1',
 'filehist-missing' => '檔案遺失',
 'imagelinks' => '檔案使用情況',
 'linkstoimage' => '以下的$1個頁面連接到本檔案:',
-'linkstoimage-more' => '多於$1個頁面連接到這個檔案。
-下面的清單只列示了連去這個檔案的最首$1個頁面。
-一個[[Special:WhatLinksHere/$2|完整的清單]]可以提供。',
+'linkstoimage-more' => '超過$1個頁面連接到這個檔案。
+此處只列出首$1個連接到此檔案的頁面。
+您也可以查看[[Special:WhatLinksHere/$2|完整的清單]]。',
 'nolinkstoimage' => '沒有頁面連接到本檔案。',
 'morelinkstoimage' => '檢視連接到這個檔案的[[Special:WhatLinksHere/$1|更多連結]]。',
 'linkstoimage-redirect' => '$1 (檔案重定向) $2',
@@ -2104,6 +2087,7 @@ $1',
 'ninterwikis' => '$1 個跨維基',
 'nlinks' => '$1個連結',
 'nmembers' => '$1個成員',
+'nmemberschanged' => '$1 → $2個成員',
 'nrevisions' => '$1個修訂',
 'nviews' => '$1次瀏覽',
 'nimagelinks' => '用於$1個頁面中',
@@ -2142,10 +2126,9 @@ $1',
 'protectedpages' => '受保護頁面',
 'protectedpages-indef' => '只有無期之保護頁面',
 'protectedpages-cascade' => '只有連鎖之保護頁面',
-'protectedpagestext' => '以下頁面已經被保護以防止移動或編輯',
+'protectedpages-noredirect' => '隱藏重定向',
 'protectedpagesempty' => '在這些參數下沒有頁面正在保護。',
 'protectedtitles' => '受保護標題',
-'protectedtitlestext' => '以下的頁面已經被保護以防止建立',
 'protectedtitlesempty' => '在這些參數之下並無標題正在保護。',
 'listusers' => '用戶列表',
 'listusers-editsonly' => '只顯示有編輯的用戶',
@@ -2197,9 +2180,6 @@ $1',
 'allpagesto' => '顯示從此處結束的頁面:',
 'allarticles' => '所有頁面',
 'allinnamespace' => '所有頁面(屬於$1名字空間)',
-'allnotinnamespace' => '所有頁面(不屬於$1名字空間)',
-'allpagesprev' => '前',
-'allpagesnext' => '後',
 'allpagessubmit' => '提交',
 'allpagesprefix' => '顯示有此前綴的頁面:',
 'allpagesbadtitle' => '給定的頁面標題是非法的,或者具有一個內部語言或內部 wiki 的前綴。它可能包含一個或更多的不能用於標題的字元。',
@@ -2419,6 +2399,7 @@ $UNWATCHURL
 'delete-edit-reasonlist' => '編輯刪除理由',
 'delete-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。',
 'delete-warning-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。',
+'deleting-backlinks-warning' => "'''警告:'''您要刪除的頁面有其他頁面連接至此。",
 
 # Rollback
 'rollback' => '回退編輯',
@@ -2534,7 +2515,6 @@ $UNWATCHURL
 'undeletebtn' => '還原',
 'undeletelink' => '檢視/還原',
 'undeleteviewlink' => '檢視',
-'undeletereset' => '重設',
 'undeleteinvert' => '反向選擇',
 'undeletecomment' => '理由:',
 'undeletedrevisions' => '$1個修訂版本已經恢復',
@@ -2620,7 +2600,6 @@ $1',
 'block' => '封禁使用者',
 'unblock' => '解封使用者',
 'blockip' => '封禁使用者',
-'blockip-title' => '封禁使用者',
 'blockip-legend' => '封禁使用者',
 'blockiptext' => '用下面的表單來禁止來自某一特定IP地址的修改許可權。
 只有在為防止破壞,及符合[[{{MediaWiki:Policy-url}}|守則]]的情況下才可採取此行動。
@@ -2628,7 +2607,6 @@ $1',
 'ipadressorusername' => 'IP地址或用戶名:',
 'ipbexpiry' => '期限:',
 'ipbreason' => '原因:',
-'ipbreasonotherlist' => '其它原因',
 'ipbreason-dropdown' => '*一般的封禁理由
 ** 屢次增加不實資料
 ** 刪除頁面內容
@@ -2644,8 +2622,6 @@ $1',
 'ipbsubmit' => '查封該地址',
 'ipbother' => '其它時間:',
 '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',
-'ipbotheroption' => '其他',
-'ipbotherreason' => '其它/附帶原因:',
 'ipbhidename' => '在編輯及列表中隱藏用戶名',
 'ipbwatchuser' => '監視這位用戶的用戶頁面以及其對話頁面',
 'ipb-disableusertalk' => '禁止被封禁用戶編輯自己的討論頁',
@@ -2657,6 +2633,7 @@ $1',
 參看[[Special:BlockList|被封IP地址列表]]以覆審查封。',
 'ipb-blockingself' => '你要封禁自己!確認要這樣做嗎?',
 'ipb-confirmhideuser' => '你要封禁用戶並隱藏其用戶名,這會隱藏在所有列表及日誌中涉及此用戶之用戶名。你確定要這樣做嗎?',
+'ipb-confirmaction' => '如果您確信這樣做,請檢查底部的「{{int:ipb-confirm}}」部分。',
 'ipb-edit-dropdown' => '編輯查封原因',
 'ipb-unblock-addr' => '解封$1',
 'ipb-unblock' => '解除禁封用戶名或IP地址',
@@ -2731,7 +2708,6 @@ $1被封禁的理由是“$2”',
 'sorbsreason' => '您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器。',
 'sorbs_create_account_reason' => '由於您的IP位址在{{SITENAME}}中被 DNSBL列為屬於開放代理服務器,所以您無法建立賬號。',
 'xffblockreason' => '您或您使用的代理伺服器X-Forwarded-For字段所包含的一個IP地址已被封禁。原始封禁理由:$1',
-'cant-block-while-blocked' => '當您被封鎖時不可以封鎖其他用戶。',
 'cant-see-hidden-user' => '您現正嘗試封鎖的用戶已經被封鎖或隱藏。
 您現在沒有隱藏用戶的權限,您不可以檢視或者編輯這位用戶的封鎖。',
 'ipbblocked' => '您無法封禁或解封其他用戶,因為您自己已被封禁',
@@ -2794,7 +2770,6 @@ $1被封禁的理由是“$2”',
 在這些情況下,您在必要時必須手工移動或合併頁面。",
 'movearticle' => '移動頁面:',
 'moveuserpage-warning' => "'''警告:'''您將會移動一個用戶頁面。請留意該頁面在移動後該用戶的名字是''不會''變更的。",
-'movenologin' => '未登入',
 'movenologintext' => '您必須是一名登記用戶並且[[Special:UserLogin|登入]]
 後才可移動一個頁面。',
 'movenotallowed' => '您並沒有許可權去移動頁面。',
@@ -2810,9 +2785,6 @@ $1被封禁的理由是“$2”',
 'movepage-moved-noredirect' => '已經壓制創建重新定向。',
 'articleexists' => '該名字的頁面已經存在,或者您選擇的名字無效。請再選一個名字。',
 'cantmove-titleprotected' => '您不可以移動這個頁面到這個位置,因為該新標題已經被保護以防止建立。',
-'talkexists' => '頁面本身移動成功,
-但是由於新標題下已經有對話頁存在,所以對話頁無法移動。請手工合併兩個頁面。',
-'movedto' => '移動到',
 'movetalk' => '移動關聯的對話頁',
 'move-subpages' => '移動子頁面(上至$1頁)',
 'move-talk-subpages' => '移動子對話頁面(上至$1頁)',
@@ -3676,15 +3648,10 @@ Variants for Chinese language
 'exif-urgency-high' => '高( $1 )',
 'exif-urgency-other' => '用戶定義( $1 )',
 
-# External editor support
-'edit-externally' => '用外部程式編輯此檔案',
-'edit-externally-help' => '(請參見[https://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
-
 # 'all' in various places, this might be different for inflected languages
 'watchlistall2' => '全部',
 'namespacesall' => '全部',
 'monthsall' => '全部',
-'limitall' => '全部',
 
 # Email address confirmation
 'confirmemail' => '確認郵箱位址',
@@ -3704,7 +3671,6 @@ Variants for Chinese language
 'confirmemail_needlogin' => '您需要$1以確認您的郵箱位址。',
 'confirmemail_success' => '您的郵箱已經被確認。您現在可以[[Special:UserLogin|登錄]]並使用此網站了。',
 'confirmemail_loggedin' => '您的郵箱位址現下已被確認。',
-'confirmemail_error' => '{{GENDER:|你|妳|你}}的確認過程發生錯誤。',
 'confirmemail_subject' => '{{SITENAME}}郵箱位址確認',
 'confirmemail_body' => '擁有IP位址$1的用戶(可能是您)在{{SITENAME}}創建了賬戶"$2",並提交了您的電子郵箱位址。
 
@@ -3784,6 +3750,11 @@ $5
 'imgmultigo' => '確定!',
 'imgmultigoto' => '到第$1頁',
 
+# Language selector for translatable SVGs
+'img-lang-default' => '(預設語言)',
+'img-lang-info' => '於$1呈現此圖像。$2',
+'img-lang-go' => '走',
+
 # Table pager
 'ascending_abbrev' => '升',
 'descending_abbrev' => '遞減',
@@ -3862,7 +3833,17 @@ $5
 'version-hook-name' => '鈎名',
 'version-hook-subscribedby' => '利用於',
 'version-version' => '(版本 $1)',
-'version-license' => '授權',
+'version-license' => 'MediaWiki許可證',
+'version-ext-license' => '授權',
+'version-ext-colheader-name' => '擴展',
+'version-ext-colheader-version' => '版本',
+'version-ext-colheader-license' => '許可證',
+'version-ext-colheader-description' => '說明',
+'version-ext-colheader-credits' => '作者',
+'version-license-title' => '用於$1之許可證',
+'version-license-not-found' => '並無與此拓展相關之許可證資訊。',
+'version-credits-title' => '用於$1之信用',
+'version-credits-not-found' => '並無與此拓展相關之信用資訊。',
 'version-poweredby-credits' => "此維基由'''[https://www.mediawiki.org/ MediaWiki]'''驅動,版權所有 © 2001-$1 $2。",
 'version-poweredby-others' => '其他',
 'version-poweredby-translators' => 'translatewiki.net 上的翻譯者',
@@ -3881,13 +3862,14 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'version-entrypoints-articlepath' => '[https://www.mediawiki.org/wiki/Manual:$wgArticlePath 條目路徑]',
 
 # Special:Redirect
-'redirect' => '重定向檔案、用戶ID或頁面修訂ID',
+'redirect' => '重定向檔案、用戶、頁面或修訂ID',
 'redirect-legend' => '重定向到檔案或頁面',
-'redirect-summary' => '此特殊頁面重定向到檔案(指定的檔案名稱)、頁面 (指定的頁面修訂ID) 或用戶頁面(指定的用戶ID數值)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
+'redirect-summary' => '此特殊頁面重定向到檔案(請指定檔案名)、頁面(請指定修訂ID或頁面ID)或用戶頁(請指定用戶ID數值)。用法:[[{{#Special:Redirect}}/file/Example.jpg]]、[[{{#Special:Redirect}}/page/64308]]、[[{{#Special:Redirect}}/revision/328429]]或[[{{#Special:Redirect}}/user/101]]。',
 'redirect-submit' => '提交',
 'redirect-lookup' => '尋找:',
 'redirect-value' => '值:',
 'redirect-user' => '用戶ID:',
+'redirect-page' => '頁面ID',
 'redirect-revision' => '頁面修訂ID',
 'redirect-file' => '檔案名稱',
 'redirect-not-exists' => '找不到',
@@ -3954,7 +3936,6 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 
 # Special:ComparePages
 'comparepages' => '比較頁面',
-'compare-selector' => '比較頁面的修訂',
 'compare-page1' => '第1頁',
 'compare-page2' => '第2頁',
 'compare-rev1' => '修訂版本1',
@@ -4081,6 +4062,7 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'api-error-overwrite' => '不允許覆蓋現有檔案。',
 'api-error-stashfailed' => '內部錯誤:伺服器保存臨時檔案失敗。',
 'api-error-publishfailed' => '內部錯誤:伺服器發佈臨時檔案失敗。',
+'api-error-stasherror' => '上載檔案存檔時出錯。',
 'api-error-timeout' => '伺服器沒有在預期的時間內回應。',
 'api-error-unclassified' => '發生未知錯誤。',
 'api-error-unknown-code' => '未知錯誤:$1',
@@ -4126,10 +4108,14 @@ MediaWiki是基於使用目的而加以發佈,然而不負任何擔保責任
 'expand_templates_input' => '輸入文字:',
 'expand_templates_output' => '結果:',
 'expand_templates_xml_output' => 'XML輸出',
+'expand_templates_html_output' => '原始HTML輸出',
 'expand_templates_ok' => '確定',
 'expand_templates_remove_comments' => '移除注釋',
 'expand_templates_remove_nowiki' => '在結果中隱藏<nowiki>標記',
 'expand_templates_generate_xml' => '顯示XML語法樹',
+'expand_templates_generate_rawhtml' => '顯示原始HTML',
 'expand_templates_preview' => '預覽',
 
+# Unknown messages
+'uploadinvalidxml' => '上載檔案中的XML無法解析。',
 );
index 2d9b818..d28642e 100644 (file)
@@ -42,8 +42,6 @@ $namespaceAliases = array(
 $specialPageAliases = array(
        'Ancientpages'              => array( '最舊頁面' ),
        'Block'                     => array( '查封用戶' ),
-       'Blockme'                   => array( '封禁我' ),
-       'Disambiguations'           => array( '消歧義頁' ),
        'FileDuplicateSearch'       => array( '搜索重復文件' ),
        'Invalidateemail'           => array( '無法識別的電郵地址' ),
        'LinkSearch'                => array( '搜索網頁鏈接' ),
index 5efa16a..9effa8b 100644 (file)
@@ -9,6 +9,8 @@
  *
  * @author Jose77 (on zu.wikipedia.org)
  * @author Joziboy (on zu.wikipedia.org)
+ * @author Rosinah3
+ * @author Vogone
  * @author לערי ריינהארט
  */
 
@@ -23,18 +25,18 @@ $messages = array(
 'thursday' => 'uLwesine',
 'friday' => 'uLwesihlanu',
 'saturday' => 'uMgqibelo',
-'january' => 'uJanuwali',
-'february' => 'uFebruwari',
-'march' => 'uMashi',
-'april' => 'u-Apreli',
-'may_long' => 'uMeyi',
-'june' => 'uJuni',
-'july' => 'uJulayi',
-'august' => 'u-Agasti',
-'september' => 'uSepthemba',
-'october' => 'u-Okthoba',
-'november' => 'uNovemba',
-'december' => 'uDisemba',
+'january' => 'Umasingana',
+'february' => 'uNhlolanja',
+'march' => 'uMbasa',
+'april' => 'uNdasa',
+'may_long' => 'uNhlaba',
+'june' => 'uNhlangulana',
+'july' => 'uNtulikazi',
+'august' => 'uNcwaba',
+'september' => 'uMandulo',
+'october' => 'uMfumfu',
+'november' => 'uLwezi',
+'december' => 'uZibandlela',
 'january-gen' => 'uJanuwali',
 'february-gen' => 'uFebruwari',
 'march-gen' => 'uMashi',
@@ -89,7 +91,7 @@ $messages = array(
 'jumptonavigation' => 'Ukuqondiswa kwemikhumbi',
 'jumptosearch' => 'Sesha',
 
-# 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).
+# 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).
 'currentevents' => 'Izehlakalo ezimanje',
 'currentevents-url' => 'Project:Izehlakalo ezimanje',
 'edithelp' => 'Usizo ngokuhlela',
@@ -99,7 +101,7 @@ $messages = array(
 'portal' => 'Umnyango wamgwamanda',
 'portal-url' => 'Project:Umnyango wamgwamanda',
 
-'newmessageslink' => 'Imilayezo emisha',
+'ok' => 'Kulungile',
 'youhavenewmessagesmulti' => 'Uyanemilayezo emisha e $1',
 'editsection' => 'hlela',
 'toc' => 'Isiqikili',
@@ -121,9 +123,8 @@ $messages = array(
 'internalerror' => 'Icala lingaphakathi',
 
 # Login and logout pages
-'welcomecreation' => '== Umbingelelo, $1! ==
-
-ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}} wakho.',
+'welcomeuser' => 'Umbingelelo, $1!',
+'welcomecreation-msg' => 'Ikhawundi lakho liyadalwa. Musa ukukhohlwa ukuguqula [[Special:Preferences|amakhethelo]] a-Wikipedia wakho.',
 'yourname' => 'Isiga',
 'yourpassword' => 'Izwi elingenangozi',
 'yourpasswordagain' => 'Bhala izwi elingenangozi lakho kabusha',
@@ -145,6 +146,7 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 'loginlanguagelabel' => 'Ulimi: $1',
 
 # Change password dialog
+'changepassword' => 'Guqula izwi elingenangozi',
 'newpassword' => 'Izwi elingenangozi elisha:',
 
 # Edit page toolbar
@@ -178,18 +180,11 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 
 # Search results
 'searchresults' => 'Umphumela wokusesha',
-'searchhelp-url' => 'Help:Isiqikili',
-'powersearch' => 'Sesha',
-
-# Quickbar
-'qbsettings' => 'Imeniyu',
 
 # Preferences page
 'preferences' => 'Amakhethelo',
 'mypreferences' => 'Amakhethelo ami',
-'prefsnologin' => 'Awungenile',
-'changepassword' => 'Guqula izwi elingenangozi',
-'saveprefs' => 'Saveprefs',
+'saveprefs' => 'Ukonga',
 'searchresultshead' => 'Sesha',
 'timezonelegend' => 'Isifunda sasikhathi',
 'localtime' => 'Isikhathi siyalapha',
@@ -242,7 +237,7 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 'allinnamespace' => 'Onke amakhasi ($1 namespace)',
 'allpagessubmit' => 'Hamba',
 
-# E-mail user
+# Email user
 'emailuser' => 'Thumela umlayezo lo msebenzisi',
 'noemailtitle' => 'Akukho ikheli likaposi',
 'emailsubject' => 'Indaba',
@@ -256,8 +251,6 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 'unwatch' => "Mus'ukubukela",
 'notanarticle' => 'Akulona ikhasi elinakho okuqukethwe',
 
-'enotif_newpagetext' => 'Lelikhasi liyasha.',
-
 # Delete
 'deletepage' => 'Sula ikhasi',
 'confirm' => 'Qinisekisa',
@@ -278,6 +271,7 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 'mycontris' => 'Amanikelo ami',
 
 # What links here
+'nolinkshere' => "Akukho amakhasi ukuthi balayela lapha '''[[:$1]]'''.",
 'isredirect' => 'Ikhasi silayela',
 
 # Block/unblock
@@ -287,7 +281,6 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 'ipbsubmit' => 'Vimbela lo msebenzisi',
 'ipusubmit' => 'Qeda isivimbelo lo msebenzisi',
 'createaccountblock' => 'Ukudala kwekhawundi kuvimbelwa',
-'proxyblocksuccess' => 'Kuphelile.',
 
 # Developer tools
 'databasenotlocked' => 'Idatabheyisi alikhiyiwi.',
@@ -295,9 +288,7 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 # Move page
 'move-page-legend' => 'Thuthisa ikhasi',
 'movearticle' => 'Thuthisa ikhasi',
-'movenologin' => 'Awungenile',
 'movepagebtn' => 'Thuthisa ikhasi',
-'movedto' => 'Lithuthiselwe e',
 'movereason' => 'Isizathu',
 'delete_and_move' => 'Sula futhi sunduza',
 'delete_and_move_confirm' => 'Yebo, sula ikhasi',
@@ -315,6 +306,12 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 # Special:Import
 'import-interwiki-submit' => 'Ngenisa',
 
+# Tooltip help for the actions
+'tooltip-search' => 'Phenya',
+'tooltip-search-fulltext' => '
+Phenya amakhasi ukuze uthole lombhalo',
+'tooltip-p-logo' => 'vakashela ikhasi elikhulu',
+
 # Attribution
 'others' => 'Abanye',
 
@@ -332,7 +329,7 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 'metadata-expand' => 'Bukisa imininingwane yonke',
 'metadata-collapse' => 'Fihla imininingwane yonke',
 
-# EXIF tags
+# Exif tags
 'exif-orientation' => 'Ukuma okumaqondana nempumalanga',
 'exif-artist' => 'Umbhali',
 'exif-sharpness' => 'Ububukhali',
@@ -361,7 +358,7 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 'exif-sharpness-1' => 'Kuntofontofo',
 'exif-sharpness-2' => 'Kulukhuni',
 
-# E-mail address confirmation
+# Email address confirmation
 'confirmemail' => 'Qinisekisa ikheli likagesi',
 'confirmemail_loggedin' => 'Ikheli likagesi lakho liqinisekiswa.',
 
@@ -371,7 +368,4 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
 # action=purge
 'confirm_purge_button' => 'Kulungile',
 
-# Special:FilePath
-'filepath-submit' => 'Hamba',
-
 );
index 68ac48c..4e2e869 100644 (file)
@@ -2,7 +2,8 @@
 /**
  * Parse and evaluate a plural rule.
  *
- * http://unicode.org/reports/tr35/#Language_Plural_Rules
+ * UTS #35 Revision 33
+ * http://www.unicode.org/reports/tr35/tr35-33/tr35-numbers.html#Language_Plural_Rules
  *
  * @author Niklas Laxstrom, Tim Starling
  *
@@ -34,8 +35,8 @@ class CLDRPluralRuleEvaluator {
         * Evaluate a number against a set of plural rules. If a rule passes,
         * return the index of plural rule.
         *
-        * @param int The number to be evaluated against the rules
-        * @param array The associative array of plural rules in pluralform => rule format.
+        * @param int $number The number to be evaluated against the rules
+        * @param array $rules The associative array of plural rules in pluralform => rule format.
         * @return int The index of the plural form which passed the evaluation
         */
        public static function evaluate( $number, array $rules ) {
@@ -63,11 +64,41 @@ class CLDRPluralRuleEvaluator {
         * Evaluate a compiled set of rules returned by compile(). Do not allow
         * the user to edit the compiled form, or else PHP errors may result.
         *
-        * @param int The number to be evaluated against the rules
-        * @param array The associative array of plural rules in pluralform => rule format.
+        * @param string $number The number to be evaluated against the rules, in English, or it
+        *   may be a type convertible to string.
+        * @param array $rules The associative array of plural rules in pluralform => rule format.
         * @return int The index of the plural form which passed the evaluation
         */
        public static function evaluateCompiled( $number, array $rules ) {
+               // Calculate the values of the operand symbols
+               $number = strval( $number );
+               if ( !preg_match( '/^ -? ( ([0-9]+) (?: \. ([0-9]+) )? )$/x', $number,  $m ) ) {
+                       wfDebug( __METHOD__.': invalid number input, returning "other"' );
+                       return count( $rules );
+               }
+               if ( !isset( $m[3] ) ) {
+                       $operandSymbols = array(
+                               'n' => intval( $m[1] ),
+                               'i' => intval( $m[1] ),
+                               'v' => 0,
+                               'w' => 0,
+                               'f' => 0,
+                               't' => 0
+                       );
+               } else {
+                       $absValStr = $m[1];
+                       $intStr = $m[2];
+                       $fracStr = $m[3];
+                       $operandSymbols = array(
+                               'n' => floatval( $absValStr ),
+                               'i' => intval( $intStr ),
+                               'v' => strlen( $fracStr ),
+                               'w' => strlen( rtrim( $fracStr, '0' ) ),
+                               'f' => intval( $fracStr ),
+                               't' => intval( rtrim( $fracStr, '0' ) ),
+                       );
+               }
+
                // The compiled form is RPN, with tokens strictly delimited by
                // spaces, so this is a simple RPN evaluator.
                foreach ( $rules as $i => $rule ) {
@@ -76,8 +107,8 @@ class CLDRPluralRuleEvaluator {
                        $nine = ord( '9' );
                        foreach ( StringUtils::explode( ' ', $rule ) as $token ) {
                                $ord = ord( $token );
-                               if ( $token === 'n' ) {
-                                       $stack[] = $number;
+                               if ( isset( $operandSymbols[$token] ) ) {
+                                       $stack[] = $operandSymbols[$token];
                                } elseif ( $ord >= $zero && $ord <= $nine ) {
                                        $stack[] = intval( $token );
                                } else {
@@ -91,8 +122,8 @@ class CLDRPluralRuleEvaluator {
                                return $i;
                        }
                }
-               // None of the provided rules match. The number belongs to caregory
-               // 'other' which comes last.
+               // None of the provided rules match. The number belongs to category
+               // 'other', which comes last.
                return count( $rules );
        }
 
@@ -185,8 +216,8 @@ class CLDRPluralRuleEvaluator_Range {
                foreach ( $this->parts as $part ) {
                        if ( is_array( $part ) ) {
                                if ( ( !$integerConstraint || floor( $number ) === (float)$number )
-                                       && $number >= $part[0] && $number <= $part[1] )
-                               {
+                                       && $number >= $part[0] && $number <= $part[1]
+                               {
                                        return true;
                                }
                        } else {
@@ -212,7 +243,8 @@ class CLDRPluralRuleEvaluator_Range {
        /**
         * Add another part to this range.
         *
-        * @param mixed The part to add, either a range object itself or a single number.
+        * @param CLDRPluralRuleEvaluator_Range|int $other The part to add, either
+        *   a range object itself or a single number.
         */
        function add( $other ) {
                if ( $other instanceof self ) {
@@ -251,35 +283,35 @@ class CLDRPluralRuleEvaluator_Range {
  */
 class CLDRPluralRuleConverter {
        /**
-        * The rule
+        * The input string
         *
         * @var string
         */
        public $rule;
 
        /**
-        * The position
+        * The current position
         *
         * @var int
         */
        public $pos;
 
        /**
-        * The last position possible
+        * The past-the-end position
         *
         * @var int
         */
        public $end;
 
        /**
-        * The operators
+        * The operator stack
         *
         * @var array
         */
        public $operators = array();
 
        /**
-        * The operands
+        * The operand stack
         *
         * @var array
         */
@@ -311,19 +343,24 @@ class CLDRPluralRuleConverter {
 
        /**
         * Same for digits. Note that the grammar given in UTS #35 doesn't allow
-        * negative numbers or decimals.
+        * negative numbers or decimal separators.
         */
        const NUMBER_CLASS = '0123456789';
 
+       /**
+        * A character list of symbolic operands.
+        */
+       const OPERAND_SYMBOLS = 'nivwft';
+
        /**
         * An anchored regular expression which matches a word at the current offset.
         */
-       const WORD_REGEX = '/[a-zA-Z]+/A';
+       const WORD_REGEX = '/[a-zA-Z@]+/A';
 
        /**
         * Convert a rule to RPN. This is the only public entry point.
         *
-        * @param $rule The rule to convert
+        * @param string $rule The rule to convert
         * @return string The RPN representation of the rule
         */
        public static function convert( $rule ) {
@@ -350,6 +387,7 @@ class CLDRPluralRuleConverter {
 
                // Iterate through all tokens, saving the operators and operands to a
                // stack per Dijkstra's shunting yard algorithm.
+               /** @var CLDRPluralRuleConverter_Operator $token */
                while ( false !== ( $token = $this->nextToken() ) ) {
                        // In this grammar, there are only binary operators, so every valid
                        // rule string will alternate between operator and operand tokens.
@@ -425,17 +463,19 @@ class CLDRPluralRuleConverter {
                        return $token;
                }
 
-               // Comma
-               if ( $this->rule[$this->pos] === ',' ) {
-                       $token = $this->newOperator( ',', $this->pos, 1 );
-                       $this->pos ++;
+               // Two-character operators
+               $op2 = substr( $this->rule, $this->pos, 2 );
+               if ( $op2 === '..' || $op2 === '!=' ) {
+                       $token = $this->newOperator( $op2, $this->pos, 2 );
+                       $this->pos += 2;
                        return $token;
                }
 
-               // Dot dot
-               if ( substr( $this->rule, $this->pos, 2 ) === '..' ) {
-                       $token = $this->newOperator( '..', $this->pos, 2 );
-                       $this->pos += 2;
+               // Single-character operators
+               $op1 = $this->rule[$this->pos];
+               if ( $op1 === ',' || $op1 === '=' || $op1 === '%' ) {
+                       $token = $this->newOperator( $op1, $this->pos, 1 );
+                       $this->pos ++;
                        return $token;
                }
 
@@ -450,8 +490,8 @@ class CLDRPluralRuleConverter {
                        // Look ahead one word
                        $nextTokenPos += strspn( $this->rule, self::WHITESPACE_CLASS, $nextTokenPos );
                        if ( $nextTokenPos < $this->end
-                                       && preg_match( self::WORD_REGEX, $this->rule, $m, 0, $nextTokenPos ) )
-                       {
+                               && preg_match( self::WORD_REGEX, $this->rule, $m, 0, $nextTokenPos )
+                       {
                                $word2 = strtolower( $m[0] );
                                $nextTokenPos += strlen( $word2 );
                        }
@@ -474,13 +514,21 @@ class CLDRPluralRuleConverter {
                        return $token;
                }
 
-               // The special numerical keyword "n"
-               if ( $word1 === 'n' ) {
-                       $token = $this->newNumber( 'n', $this->pos );
+               // The single-character operand symbols
+               if ( strpos( self::OPERAND_SYMBOLS, $word1 ) !== false ) {
+                       $token = $this->newNumber( $word1, $this->pos );
                        $this->pos ++;
                        return $token;
                }
 
+               // Samples
+               if ( $word1 === '@integer' || $word1 === '@decimal' ) {
+                       // Samples are like comments, they have no effect on rule evaluation.
+                       // They run from the first sample indicator to the end of the string.
+                       $this->pos = $this->end;
+                       return false;
+               }
+
                $this->error( 'unrecognised word' );
        }
 
@@ -488,6 +536,8 @@ class CLDRPluralRuleConverter {
         * For the binary operator $op, pop its operands off the stack and push
         * a fragment with rpn and type members describing the result of that
         * operation.
+        *
+        * @param CLDRPluralRuleConverter_Operator $op
         */
        protected function doOperation( $op ) {
                if ( count( $this->operands ) < 2 ) {
@@ -502,6 +552,8 @@ class CLDRPluralRuleConverter {
        /**
         * Create a numerical expression object
         *
+        * @param string $text
+        * @param int $pos
         * @return CLDRPluralRuleConverter_Expression The numerical expression
         */
        protected function newNumber( $text, $pos ) {
@@ -511,6 +563,9 @@ class CLDRPluralRuleConverter {
        /**
         * Create a binary operator
         *
+        * @param string $type
+        * @param int $pos
+        * @param int $length
         * @return CLDRPluralRuleConverter_Operator The operator
         */
        protected function newOperator( $type, $pos, $length ) {
@@ -556,7 +611,11 @@ class CLDRPluralRuleConverter_Fragment {
  * validation.
  */
 class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragment {
-       public $type, $rpn;
+       /** @var string */
+       public $type;
+
+       /** @var string */
+       public $rpn;
 
        function __construct( $parser, $type, $rpn, $pos, $length ) {
                parent::__construct( $parser, $pos, $length );
@@ -581,11 +640,7 @@ class CLDRPluralRuleConverter_Expression extends CLDRPluralRuleConverter_Fragmen
  * messages), and the binary operator at that location.
  */
 class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment {
-       /**
-        * The name
-        *
-        * @var string
-        */
+       /** @var string The name */
        public $name;
 
        /**
@@ -624,16 +679,28 @@ class CLDRPluralRuleConverter_Operator extends CLDRPluralRuleConverter_Fragment
                'r' => 'range',
        );
 
+       /**
+        * Map for converting the new operators introduced in Rev 33 to the old forms
+        */
+       static $aliasMap = array(
+               '%' => 'mod',
+               '!=' => 'not-in',
+               '=' => 'in'
+       );
+
        /**
         * Initialize a new instance of a CLDRPluralRuleConverter_Operator object
         *
         * @param CLDRPluralRuleConverter $parser The parser
         * @param string $name The operator name
-        * @param int $pos The position
         * @param int $pos The length
+        * @param int $length
         */
        function __construct( $parser, $name, $pos, $length ) {
                parent::__construct( $parser, $pos, $length );
+               if ( isset( self::$aliasMap[$name] ) ) {
+                       $name = self::$aliasMap[$name];
+               }
                $this->name = $name;
        }
 
index 91a027e..fb2cd8c 100644 (file)
@@ -1273,9 +1273,9 @@ abstract class LoggedUpdateMaintenance extends Maintenance {
                $db = $this->getDB( DB_MASTER );
                $key = $this->getUpdateKey();
 
-               if ( !$this->hasOption( 'force' ) &&
-                       $db->selectRow( 'updatelog', '1', array( 'ul_key' => $key ), __METHOD__ ) )
-               {
+               if ( !$this->hasOption( 'force' )
+                       && $db->selectRow( 'updatelog', '1', array( 'ul_key' => $key ), __METHOD__ )
+               {
                        $this->output( "..." . $this->updateSkippedMessage() . "\n" );
                        return true;
                }
@@ -1284,9 +1284,7 @@ abstract class LoggedUpdateMaintenance extends Maintenance {
                        return false;
                }
 
-               if (
-                       $db->insert( 'updatelog', array( 'ul_key' => $key ), __METHOD__, 'IGNORE' ) )
-               {
+               if ( $db->insert( 'updatelog', array( 'ul_key' => $key ), __METHOD__, 'IGNORE' ) ) {
                        return true;
                } else {
                        $this->output( $this->updatelogFailedMessage() . "\n" );
diff --git a/maintenance/archives/patch-logging_user_text_time_index.sql b/maintenance/archives/patch-logging_user_text_time_index.sql
new file mode 100644 (file)
index 0000000..06f2986
--- /dev/null
@@ -0,0 +1 @@
+CREATE INDEX /*i*/log_user_text_time ON /*_*/logging (log_user_text, log_timestamp);
diff --git a/maintenance/archives/patch-logging_user_text_type_time_index.sql b/maintenance/archives/patch-logging_user_text_type_time_index.sql
new file mode 100644 (file)
index 0000000..2801bc8
--- /dev/null
@@ -0,0 +1 @@
+CREATE INDEX /*i*/log_user_text_type_time ON /*_*/logging (log_user_text, log_type, log_timestamp);
diff --git a/maintenance/archives/patch-page_links_updated.sql b/maintenance/archives/patch-page_links_updated.sql
new file mode 100644 (file)
index 0000000..18d9e2d
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE /*$wgDBprefix*/page
+  ADD page_links_updated varbinary(14) NULL default NULL;
index a51e6ee..f16772c 100644 (file)
@@ -417,8 +417,8 @@ class TextPassDumper extends BackupDumper {
                $text = false; // The candidate for a good text. false if no proper value.
                $failures = 0; // The number of times, this invocation of getText already failed.
 
-               static $consecutiveFailedTextRetrievals = 0; // The number of times getText failed without
-                                                            // yielding a good text in between.
+               // The number of times getText failed without yielding a good text in between.
+               static $consecutiveFailedTextRetrievals = 0;
 
                $this->fetchCount++;
 
index 1772b5f..4590611 100644 (file)
@@ -77,7 +77,7 @@ do {
                        print "Loading cdb file $file...";
                        try {
                                $fileHandle = CdbReader::open( $file );
-                       } catch( CdbException $e ) {}
+                       } catch ( CdbException $e ) {}
 
                        if ( !$fileHandle ) {
                                print "not a cdb file or unable to read it\n";
index 17b9111..6e6df24 100644 (file)
@@ -209,7 +209,6 @@ This gives a huge speed improvement for very large links tables which are MyISAM
                        $dbw->query( "RENAME TABLE links TO $links_backup, $links_temp TO $links", __METHOD__ );
                        $this->output( " done.\n\n" );
 
-                       $dbw->close();
                        $this->output( "Conversion complete. The old table remains at $links_backup;\n" );
                        $this->output( "delete at your leisure.\n" );
                } else {
index 49af0b8..8bacb26 100644 (file)
@@ -239,8 +239,8 @@ class CopyFileBackend extends Maintenance {
                                $this->error( "$wikiId: Detected illegal (non-UTF8) path for $srcPath." );
                                continue;
                        } elseif ( !$this->hasOption( 'missingonly' )
-                               && $this->filesAreSame( $src, $dst, $srcPath, $dstPath ) )
-                       {
+                               && $this->filesAreSame( $src, $dst, $srcPath, $dstPath )
+                       {
                                $this->output( "\tAlready have $srcPathRel.\n" );
                                continue; // assume already copied...
                        }
@@ -347,15 +347,33 @@ class CopyFileBackend extends Maintenance {
                } else {
                        $dstStat = $dst->getFileStat( array( 'src' => $dPath ) );
                }
-               return (
+               // Initial fast checks to see if files are obviously different
+               $sameFast = (
                        is_array( $srcStat ) // sanity check that source exists
                        && is_array( $dstStat ) // dest exists
                        && $srcStat['size'] === $dstStat['size']
-                       && ( !$skipHash || $srcStat['mtime'] <= $dstStat['mtime'] )
-                       && ( $skipHash || $src->getFileSha1Base36( array( 'src' => $sPath, 'latest' => 1 ) )
-                               === $dst->getFileSha1Base36( array( 'src' => $dPath, 'latest' => 1 ) )
-                       )
                );
+               // More thorough checks against files
+               if ( !$sameFast ) {
+                       $same = false; // no need to look farther
+               } elseif ( isset( $srcStat['md5'] ) && isset( $dstStat['md5'] ) ) {
+                       // If MD5 was already in the stat info, just use it.
+                       // This is useful as many objects stores can return this in object listing,
+                       // so we can use it to avoid slow per-file HEADs.
+                       $same = ( $srcStat['md5'] === $dstStat['md5'] );
+               } elseif ( $skipHash ) {
+                       // This mode is good for copying to a backup location or resyncing clone
+                       // backends in FileBackendMultiWrite (since they get writes second, they have
+                       // higher timestamps). However, when copying the other way, this hits loads of
+                       // false positives (possibly 100%) and wastes a bunch of time on GETs/PUTs.
+                       $same = ( $srcStat['mtime'] <= $dstStat['mtime'] );
+               } else {
+                       // This is the slowest method which does many per-file HEADs (unless an object
+                       // store tracks SHA-1 in listings).
+                       $same = ( $src->getFileSha1Base36( array( 'src' => $sPath, 'latest' => 1 ) )
+                               === $dst->getFileSha1Base36( array( 'src' => $dPath, 'latest' => 1 ) ) );
+               }
+               return $same;
        }
 }
 
index d35efae..ebbc22c 100644 (file)
@@ -90,7 +90,6 @@ Edit
 Editor
 Education
 Egrave
-Ehcache
 Elig
 Email
 Empty
@@ -1197,7 +1196,6 @@ disabled
 disabledtranscode
 disablemail
 disablepp
-disablesuggest
 disclaimerpage
 diskussion
 displayname
@@ -1314,7 +1312,6 @@ editusercssjs
 edituserjs
 edoe
 egrave
-ehcache
 ei
 eich
 eiinvalidparammix
index 3157318..3dcf12c 100644 (file)
@@ -90,9 +90,9 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
        require $maintenance->loadSettings();
 }
 
-if ( $maintenance->getDbType() === Maintenance::DB_ADMIN &&
-       is_readable( "$IP/AdminSettings.php" ) )
-{
+if ( $maintenance->getDbType() === Maintenance::DB_ADMIN
+       && is_readable( "$IP/AdminSettings.php" )
+{
        require "$IP/AdminSettings.php";
 }
 
index 7c24f0f..6bdb15d 100644 (file)
@@ -38,11 +38,13 @@ class EditCLI extends Maintenance {
                $this->addOption( 'bot', 'Bot edit', false, false, 'b' );
                $this->addOption( 'autosummary', 'Enable autosummary', false, false, 'a' );
                $this->addOption( 'no-rc', 'Do not show the change in recent changes', false, false, 'r' );
+               $this->addOption( 'nocreate', 'Don\'t create new pages', false, false );
+               $this->addOption( 'createonly', 'Only create new pages', false, false );
                $this->addArg( 'title', 'Title of article to edit' );
        }
 
        public function execute() {
-               global $wgUser, $wgTitle;
+               global $wgUser;
 
                $userName = $this->getOption( 'user', 'Maintenance script' );
                $summary = $this->getOption( 'summary', '' );
@@ -61,17 +63,23 @@ class EditCLI extends Maintenance {
                        $wgUser->addToDatabase();
                }
 
-               $wgTitle = Title::newFromText( $this->getArg() );
-               if ( !$wgTitle ) {
+               $title = Title::newFromText( $this->getArg() );
+               if ( !$title ) {
                        $this->error( "Invalid title", true );
                }
-               $context->setTitle( $wgTitle );
+               $context->setTitle( $title );
 
-               $page = WikiPage::factory( $wgTitle );
+               if ( $this->hasOption( 'nocreate' ) && !$title->exists() ) {
+                       $this->error( "Page does not exist", true );
+               } elseif ( $this->hasOption( 'createonly' ) && $title->exists() ) {
+                       $this->error( "Page already exists", true );
+               }
+
+               $page = WikiPage::factory( $title );
 
                # Read the text
                $text = $this->getStdin( Maintenance::STDIN_ALL );
-               $content = ContentHandler::makeContent( $text, $wgTitle );
+               $content = ContentHandler::makeContent( $text, $title );
 
                # Do the edit
                $this->output( "Saving... " );
index e03763f..f56e91f 100644 (file)
@@ -1,6 +1,5 @@
 <?php
 /**
- * PHP lacks an interactive mode, but this can be very helpful when debugging.
  * This script lets a command-line user start up the wiki engine and then poke
  * about by issuing PHP commands directly.
  *
index 373170f..ee8c48f 100644 (file)
@@ -64,24 +64,39 @@ class FindHooks extends Maintenance {
                        $IP . '/includes/actions/',
                        $IP . '/includes/api/',
                        $IP . '/includes/cache/',
+                       $IP . '/includes/changes/',
+                       $IP . '/includes/clientpool/',
                        $IP . '/includes/content/',
                        $IP . '/includes/context/',
+                       $IP . '/includes/dao/',
                        $IP . '/includes/db/',
+                       $IP . '/includes/debug/',
+                       $IP . '/includes/deferred/',
                        $IP . '/includes/diff/',
+                       $IP . '/includes/externalstore/',
+                       $IP . '/includes/filebackend/',
                        $IP . '/includes/filerepo/',
                        $IP . '/includes/filerepo/file/',
+                       $IP . '/includes/gallery/',
+                       $IP . '/includes/htmlform/',
                        $IP . '/includes/installer/',
                        $IP . '/includes/interwiki/',
+                       $IP . '/includes/job/',
+                       $IP . '/includes/json/',
                        $IP . '/includes/logging/',
                        $IP . '/includes/media/',
                        $IP . '/includes/parser/',
+                       $IP . '/includes/rcfeed/',
                        $IP . '/includes/resourceloader/',
                        $IP . '/includes/revisiondelete/',
                        $IP . '/includes/search/',
+                       $IP . '/includes/site/',
+                       $IP . '/includes/specialpage/',
                        $IP . '/includes/specials/',
                        $IP . '/includes/upload/',
                        $IP . '/languages/',
                        $IP . '/maintenance/',
+                       $IP . '/maintenance/language/',
                        $IP . '/tests/',
                        $IP . '/tests/parser/',
                        $IP . '/tests/phpunit/suites/',
@@ -103,8 +118,7 @@ class FindHooks extends Maintenance {
                $this->printArray( 'Documented and not found', $deprecated );
                $this->printArray( 'Unclear hook calls', $bad );
 
-               if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 )
-               {
+               if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 ) {
                        $this->output( "Looks good!\n" );
                }
        }
@@ -129,7 +143,7 @@ class FindHooks extends Maintenance {
        private function getHooksFromLocalDoc( $doc ) {
                        $m = array();
                        $content = file_get_contents( $doc );
-                       preg_match_all( "/\n'(.*?)'/", $content, $m );
+                       preg_match_all( "/\n'(.*?)':/", $content, $m );
                        return array_unique( $m[1] );
        }
 
index 523be7e..8ae5a5a 100644 (file)
@@ -71,7 +71,7 @@ class FixDoubleRedirects extends Maintenance {
                        'rd_from = pa.page_id',
                        'rd_namespace = pb.page_namespace',
                        'rd_title = pb.page_title',
-                       '(rd_interwiki IS NULL OR rd_interwiki = "")', // bug 40352
+                       'rd_interwiki IS NULL OR rd_interwiki = ' . $dbr->addQuotes( '' ), // bug 40352
                        'pb.page_is_redirect' => 1,
                );
 
index 55fbd9a..02d65ed 100644 (file)
@@ -66,11 +66,13 @@ class FixExtLinksProtocolRelative extends LoggedUpdateMaintenance {
                        $db->insert( 'externallinks',
                                array(
                                        array(
+                                               'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ),
                                                'el_from' => $row->el_from,
                                                'el_to' => $row->el_to,
                                                'el_index' => "http:{$row->el_index}",
                                        ),
                                        array(
+                                               'el_id' => $db->nextSequenceValue( 'externallinks_el_id_seq' ),
                                                'el_from' => $row->el_from,
                                                'el_to' => $row->el_to,
                                                'el_index' => "https:{$row->el_index}",
diff --git a/maintenance/generateJsonI18n.php b/maintenance/generateJsonI18n.php
new file mode 100644 (file)
index 0000000..9c8354c
--- /dev/null
@@ -0,0 +1,167 @@
+<?php
+
+/**
+ * Convert a PHP messages file to a set of JSON messages files.
+ *
+ * Usage:
+ *    php generateJsonI18n.php ExtensionName.i18n.php i18n/
+ *
+ * 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 Maintenance
+ */
+
+require_once __DIR__ . '/Maintenance.php';
+
+/**
+ * Maintenance script to generate JSON i18n files from a PHP i18n file.
+ *
+ * @ingroup Maintenance
+ */
+class GenerateJsonI18n extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = "Build JSON messages files from a PHP messages file";
+               $this->addArg( 'phpfile', 'PHP file defining a $messages array', true );
+               $this->addArg( 'jsondir', 'Directory to write JSON files to', true );
+               $this->addOption( 'langcode', 'Language code; only needed for converting core i18n files',
+                       false, true );
+       }
+
+       public function execute() {
+               $phpfile = $this->getArg( 0 );
+               $jsondir = $this->getArg( 1 );
+
+               if ( !is_readable( $phpfile ) ) {
+                       $this->error( "Error reading $phpfile\n", 1 );
+               }
+               include $phpfile;
+               $phpfileContents = file_get_contents( $phpfile );
+
+               if ( !isset( $messages ) ) {
+                       $this->error( "PHP file $phpfile does not define \$messages array\n", 1 );
+               }
+
+               $extensionStyle = true;
+               if ( !isset( $messages['en'] ) || !is_array( $messages['en'] ) ) {
+                       if ( !$this->hasOption( 'langcode' ) ) {
+                               $this->error( "PHP file $phpfile does not set language codes, --langcode " .
+                                       "is required.\n", 1 );
+                       }
+                       $extensionStyle = false;
+                       $langcode = $this->getOption( 'langcode' );
+                       $messages = array( $langcode => $messages );
+               } else if ( $this->hasOption( 'langcode' ) ) {
+                       $this->output( "Warning: --langcode option set but will not be used.\n" );
+               }
+
+               foreach ( $messages as $langcode => $langmsgs ) {
+                       $authors = $this->getAuthorsFromComment( $this->findCommentBefore(
+                               $extensionStyle ? "\$messages['$langcode'] =" : '$messages =',
+                               $phpfileContents
+                       ) );
+                       // Make sure the @metadata key is the first key in the output
+                       $langmsgs = array_merge(
+                               array( '@metadata' => array( 'authors' => $authors ) ),
+                               $langmsgs
+                       );
+
+                       $jsonfile = "$jsondir/$langcode.json";
+                       $success = file_put_contents(
+                               $jsonfile,
+                               FormatJson::encode( $langmsgs, true, FormatJson::ALL_OK )
+                       );
+                       if ( $success === false ) {
+                               $this->error( "FAILED to write $jsonfile", 1 );
+                       }
+                       $this->output( "$jsonfile\n" );
+               }
+
+               if ( !$this->hasOption( 'langcode' ) ) {
+                       $shim = $this->doShim( $jsondir );
+                       file_put_contents( $phpfile, $shim );
+               }
+
+               $this->output( "All done.\n" );
+               $this->output( "Also add \$wgMessagesDirs['YourExtension'] = __DIR__ . '/i18n';\n" );
+       }
+
+       protected function doShim( $jsondir ) {
+               $shim = <<<'PHP'
+<?php
+$messages = array();
+$GLOBALS['wgHooks']['LocalisationCacheRecache'][] = function ( $cache, $code, &$cachedData ) {
+       $codeSequence = array_merge( array( $code ), $cachedData['fallbackSequence'] );
+       foreach ( $codeSequence as $csCode ) {
+               $fileName = __DIR__ . "/{{OUT}}/$csCode.json";
+               if ( is_readable( $fileName ) ) {
+                       $data = FormatJson::decode( file_get_contents( $fileName ), true );
+                       foreach ( array_keys( $data ) as $key ) {
+                               if ( $key === '' || $key[0] === '@' ) {
+                                       unset( $data[$key] );
+                               }
+                       }
+                       $cachedData['messages'] = array_merge( $data, $cachedData['messages'] );
+               }
+
+               $cachedData['deps'][] = new FileDependency( $fileName );
+       }
+       return true;
+};
+
+PHP;
+
+               $jsondir = str_replace('\\', '/', $jsondir );
+               $shim = str_replace( '{{OUT}}', $jsondir, $shim );
+               return $shim;
+       }
+
+       /**
+        * Find the documentation comment immediately before a given search string
+        * @param string $needle String to search for
+        * @param string $haystack String to search in
+        * @return string Substring of $haystack starting at '/**' ending right before $needle, or empty
+        */
+       protected function findCommentBefore( $needle, $haystack ) {
+               $needlePos = strpos( $haystack, $needle );
+               if ( $needlePos === false ) {
+                       return '';
+               }
+               // Need to pass a negative offset to strrpos() so it'll search backwards from the
+               // offset
+               $startPos = strrpos( $haystack, '/**', $needlePos - strlen( $haystack ) );
+               if ( $startPos === false ) {
+                       return '';
+               }
+
+               return substr( $haystack, $startPos, $needlePos - $startPos );
+       }
+
+       /**
+        * Get an array of author names from a documentation comment containing @author declarations.
+        * @param string $comment Documentation comment
+        * @return Array of author names (strings)
+        */
+       protected function getAuthorsFromComment( $comment ) {
+               $matches = null;
+               preg_match_all( '/@author (.*?)$/m', $comment, $matches );
+               return $matches && $matches[1] ? $matches[1] : array();
+       }
+}
+
+$maintClass = "GenerateJsonI18n";
+require_once RUN_MAINTENANCE_IF_MAIN;
index 5a5eb58..52cb209 100644 (file)
@@ -87,7 +87,7 @@ class GetConfiguration extends Maintenance {
        public function finalSetup() {
                parent::finalSetup();
 
-               $this->regex = $this->getOption( 'regex' ) ? : $this->getOption( 'iregex' );
+               $this->regex = $this->getOption( 'regex' ) ?: $this->getOption( 'iregex' );
                if ( $this->regex ) {
                        $this->regex = '/' . $this->regex . '/';
                        if ( $this->hasOption( 'iregex' ) ) {
index 4b04683..7c6e7d4 100644 (file)
@@ -47,7 +47,7 @@ in the load balancer, usually indicating a replication environment.' );
 
                // Autodetect mode...
                $backgroundMode = wfGetLB()->getServerCount() > 1 ||
-                       ( $dbw instanceof DatabaseMysql && version_compare( $dbver, '4.1' ) < 0 );
+                       ( $dbw instanceof DatabaseMysql );
 
                if ( $this->hasOption( 'background' ) ) {
                        $backgroundMode = true;
index 83cc088..cde7d3b 100644 (file)
@@ -1,6 +1,8 @@
+# Custom tags for JSDuck 4.x
 # See also:
 # - https://github.com/senchalabs/jsduck/wiki/Tags
 # - https://github.com/senchalabs/jsduck/wiki/Custom-tags
+# - https://github.com/senchalabs/jsduck/wiki/Custom-tags/7f5c32e568eab9edc8e3365e935bcb836cb11f1d
 require 'jsduck/meta_tag'
 
 class SourceTag < JsDuck::MetaTag
@@ -67,3 +69,35 @@ class SeeTag < JsDuck::MetaTag
     end
   end
 end
+
+# As of JSDuck 5 this is in core
+class FiresTag < JsDuck::MetaTag
+  def initialize
+    @name = 'fires'
+    @multiline = true
+  end
+
+  # @param tags All matches of this tag on one class.
+  def to_html(tags)
+    doc = []
+    doc << '<h3 class="pa">Fires</h3>'
+    doc << [
+        '<ul>',
+        tags.map {|tag| render_long_event(tag) },
+        '</ul>',
+      ]
+    doc
+  end
+
+  def render_long_event(tag)
+    if tag =~ /\A(\w+)( .*)?\Z/m
+      name = $1
+      doc = $2 ? ': ' + $2 : ''
+      return [
+        '<li>',
+        format("{@link #event-#{name}} #{doc}"),
+        '</li>'
+      ]
+    end
+  end
+end
index c595980..bbe1860 100644 (file)
@@ -21,6 +21,7 @@
                                "name": "General",
                                "classes": [
                                        "mw.Title",
+                                       "mw.Uri",
                                        "mw.inspect",
                                        "mw.inspect.reports",
                                        "mw.notification",
                        {
                                "name": "API",
                                "classes": ["mw.Api*"]
+                       },
+                       {
+                               "name": "Language",
+                               "classes": [
+                                       "mw.language*",
+                                       "mw.cldr"
+                               ]
                        }
                ]
        },
        {
                "name": "Upstream",
                "groups": [
+                       {
+                               "name": "OOJS",
+                               "classes": ["OO", "OO.*"]
+                       },
                        {
                                "name": "jQuery",
                                "classes": ["jQuery", "jQuery.Event", "jQuery.Callbacks", "jQuery.Promise", "jQuery.Deferred", "jQuery.jqXHR", "QUnit"]
index e6e0f65..d0e2628 100644 (file)
@@ -13,6 +13,7 @@
                "../../resources/mediawiki/mediawiki.log.js",
                "../../resources/mediawiki/mediawiki.util.js",
                "../../resources/mediawiki/mediawiki.Title.js",
+               "../../resources/mediawiki/mediawiki.Uri.js",
                "../../resources/mediawiki/mediawiki.inspect.js",
                "../../resources/mediawiki/mediawiki.notify.js",
                "../../resources/mediawiki/mediawiki.notification.js",
@@ -21,7 +22,9 @@
                "../../resources/mediawiki.action/mediawiki.action.view.postEdit.js",
                "../../resources/mediawiki.page/mediawiki.page.startup.js",
                "../../resources/mediawiki.api",
+               "../../resources/mediawiki.language",
                "../../resources/jquery/jquery.localize.js",
-               "../../resources/jquery/jquery.spinner.js"
+               "../../resources/jquery/jquery.spinner.js",
+               "../../resources/oojs"
        ]
 }
diff --git a/maintenance/language/generateNormalizerData.php b/maintenance/language/generateNormalizerData.php
deleted file mode 100644 (file)
index b638b63..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-<?php
-/**
- * Generates normalizer data files for Arabic and Malayalam.
- *
- * 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 MaintenanceLanguage
- */
-
-require_once __DIR__ . '/../../includes/normal/UtfNormalUtil.php';
-
-require_once __DIR__ . '/../Maintenance.php';
-
-/**
- * Generates normalizer data files for Arabic and Malayalam.
- * For NFC see includes/normal.
- *
- * @ingroup MaintenanceLanguage
- */
-class GenerateNormalizerData extends Maintenance {
-       public $dataFile;
-
-       public function __construct() {
-               parent::__construct();
-               $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
-                       'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
-       }
-
-       public function execute() {
-               if ( !$this->hasOption( 'unicode-data-file' ) ) {
-                       $this->dataFile = 'UnicodeData.txt';
-                       if ( !file_exists( $this->dataFile ) ) {
-                               $this->error( "Unable to find UnicodeData.txt. Please specify " .
-                                       "its location with --unicode-data-file=<FILE>" );
-                               exit( 1 );
-                       }
-               } else {
-                       $this->dataFile = $this->getOption( 'unicode-data-file' );
-                       if ( !file_exists( $this->dataFile ) ) {
-                               $this->error( 'Unable to find the specified data file.' );
-                               exit( 1 );
-                       }
-               }
-
-               $this->generateArabic();
-               $this->generateMalayalam();
-       }
-
-       function generateArabic() {
-               $file = fopen( $this->dataFile, 'r' );
-               if ( !$file ) {
-                       $this->error( 'Unable to open the data file.' );
-                       exit( 1 );
-               }
-
-               // For the file format, see http://www.unicode.org/reports/tr44/
-               $fieldNames = array(
-                       'Code',
-                       'Name',
-                       'General_Category',
-                       'Canonical_Combining_Class',
-                       'Bidi_Class',
-                       'Decomposition_Type_Mapping',
-                       'Numeric_Type_Value',
-                       'Bidi_Mirrored',
-                       'Unicode_1_Name',
-                       'ISO_Comment',
-                       'Simple_Uppercase_Mapping',
-                       'Simple_Lowercase_Mapping',
-                       'Simple_Titlecase_Mapping'
-               );
-
-               $pairs = array();
-
-               $lineNum = 0;
-               while ( false !== ( $line = fgets( $file ) ) ) {
-                       ++$lineNum;
-
-                       # Strip comments
-                       $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
-                       if ( $line === '' ) {
-                               continue;
-                       }
-
-                       # Split fields
-                       $numberedData = explode( ';', $line );
-                       $data = array();
-                       foreach ( $fieldNames as $number => $name ) {
-                               $data[$name] = $numberedData[$number];
-                       }
-
-                       $code = base_convert( $data['Code'], 16, 10 );
-                       if ( ( $code >= 0xFB50 && $code <= 0xFDFF ) # Arabic presentation forms A
-                               || ( $code >= 0xFE70 && $code <= 0xFEFF ) # Arabic presentation forms B
-                       ) {
-                               if ( $data['Decomposition_Type_Mapping'] === '' ) {
-                                       // No decomposition
-                                       continue;
-                               }
-                               if ( !preg_match( '/^ *(<\w*>) +([0-9A-F ]*)$/',
-                                       $data['Decomposition_Type_Mapping'], $m )
-                               ) {
-                                       $this->error( "Can't parse Decomposition_Type/Mapping on line $lineNum" );
-                                       $this->error( $line );
-                                       continue;
-                               }
-
-                               $source = hexSequenceToUtf8( $data['Code'] );
-                               $dest = hexSequenceToUtf8( $m[2] );
-                               $pairs[$source] = $dest;
-                       }
-               }
-
-               global $IP;
-               file_put_contents( "$IP/serialized/normalize-ar.ser", serialize( $pairs ) );
-               echo "ar: " . count( $pairs ) . " pairs written.\n";
-       }
-
-       function generateMalayalam() {
-               $hexPairs = array(
-                       # From http://unicode.org/versions/Unicode5.1.0/#Malayalam_Chillu_Characters
-                       '0D23 0D4D 200D' => '0D7A',
-                       '0D28 0D4D 200D' => '0D7B',
-                       '0D30 0D4D 200D' => '0D7C',
-                       '0D32 0D4D 200D' => '0D7D',
-                       '0D33 0D4D 200D' => '0D7E',
-
-                       # From http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46413
-                       '0D15 0D4D 200D' => '0D7F',
-               );
-
-               $pairs = array();
-               foreach ( $hexPairs as $hexSource => $hexDest ) {
-                       $source = hexSequenceToUtf8( $hexSource );
-                       $dest = hexSequenceToUtf8( $hexDest );
-                       $pairs[$source] = $dest;
-               }
-
-               global $IP;
-               file_put_contents( "$IP/serialized/normalize-ml.ser", serialize( $pairs ) );
-               echo "ml: " . count( $pairs ) . " pairs written.\n";
-       }
-}
-
-$maintClass = 'GenerateNormalizerData';
-require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/language/generateNormalizerDataAr.php b/maintenance/language/generateNormalizerDataAr.php
new file mode 100644 (file)
index 0000000..ece0450
--- /dev/null
@@ -0,0 +1,133 @@
+<?php
+/**
+ * Generates the normalizer data file for Arabic.
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates the normalizer data file for Arabic.
+ * For NFC see includes/normal.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateNormalizerDataAr extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = 'Generate the normalizer data file for Arabic';
+               $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
+                       'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
+       }
+
+       public function getDbType() {
+               return Maintenance::DB_NONE;
+       }
+
+       public function execute() {
+               if ( !$this->hasOption( 'unicode-data-file' ) ) {
+                       $dataFile = 'UnicodeData.txt';
+                       if ( !file_exists( $dataFile ) ) {
+                               $this->error( "Unable to find UnicodeData.txt. Please specify " .
+                                       "its location with --unicode-data-file=<FILE>" );
+                               exit( 1 );
+                       }
+               } else {
+                       $dataFile = $this->getOption( 'unicode-data-file' );
+                       if ( !file_exists( $dataFile ) ) {
+                               $this->error( 'Unable to find the specified data file.' );
+                               exit( 1 );
+                       }
+               }
+
+               $file = fopen( $dataFile, 'r' );
+               if ( !$file ) {
+                       $this->error( 'Unable to open the data file.' );
+                       exit( 1 );
+               }
+
+               // For the file format, see http://www.unicode.org/reports/tr44/
+               $fieldNames = array(
+                       'Code',
+                       'Name',
+                       'General_Category',
+                       'Canonical_Combining_Class',
+                       'Bidi_Class',
+                       'Decomposition_Type_Mapping',
+                       'Numeric_Type_Value_6',
+                       'Numeric_Type_Value_7',
+                       'Numeric_Type_Value_8',
+                       'Bidi_Mirrored',
+                       'Unicode_1_Name',
+                       'ISO_Comment',
+                       'Simple_Uppercase_Mapping',
+                       'Simple_Lowercase_Mapping',
+                       'Simple_Titlecase_Mapping'
+               );
+
+               $pairs = array();
+
+               $lineNum = 0;
+               while ( false !== ( $line = fgets( $file ) ) ) {
+                       ++$lineNum;
+
+                       # Strip comments
+                       $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
+                       if ( $line === '' ) {
+                               continue;
+                       }
+
+                       # Split fields
+                       $numberedData = explode( ';', $line );
+                       $data = array();
+                       foreach ( $fieldNames as $number => $name ) {
+                               $data[$name] = $numberedData[$number];
+                       }
+
+                       $code = base_convert( $data['Code'], 16, 10 );
+                       if ( ( $code >= 0xFB50 && $code <= 0xFDFF ) # Arabic presentation forms A
+                               || ( $code >= 0xFE70 && $code <= 0xFEFF ) # Arabic presentation forms B
+                       ) {
+                               if ( $data['Decomposition_Type_Mapping'] === '' ) {
+                                       // No decomposition
+                                       continue;
+                               }
+                               if ( !preg_match( '/^ *(<\w*>) +([0-9A-F ]*)$/',
+                                       $data['Decomposition_Type_Mapping'], $m )
+                               ) {
+                                       $this->error( "Can't parse Decomposition_Type/Mapping on line $lineNum" );
+                                       $this->error( $line );
+                                       continue;
+                               }
+
+                               $source = hexSequenceToUtf8( $data['Code'] );
+                               $dest = hexSequenceToUtf8( $m[2] );
+                               $pairs[$source] = $dest;
+                       }
+               }
+
+               global $IP;
+               file_put_contents( "$IP/serialized/normalize-ar.ser", serialize( $pairs ) );
+               echo "ar: " . count( $pairs ) . " pairs written.\n";
+       }
+}
+
+$maintClass = 'GenerateNormalizerDataAr';
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/language/generateNormalizerDataMl.php b/maintenance/language/generateNormalizerDataMl.php
new file mode 100644 (file)
index 0000000..c7237cf
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Generates the normalizer data file for Malayalam.
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates the normalizer data file for Malayalam.
+ * For NFC see includes/normal.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateNormalizerDataMl extends Maintenance {
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = 'Generate the normalizer data file for Malayalam';
+       }
+
+       public function getDbType() {
+               return Maintenance::DB_NONE;
+       }
+
+       public function execute() {
+               $hexPairs = array(
+                       # From http://unicode.org/versions/Unicode5.1.0/#Malayalam_Chillu_Characters
+                       '0D23 0D4D 200D' => '0D7A',
+                       '0D28 0D4D 200D' => '0D7B',
+                       '0D30 0D4D 200D' => '0D7C',
+                       '0D32 0D4D 200D' => '0D7D',
+                       '0D33 0D4D 200D' => '0D7E',
+
+                       # From http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46413
+                       '0D15 0D4D 200D' => '0D7F',
+               );
+
+               $pairs = array();
+               foreach ( $hexPairs as $hexSource => $hexDest ) {
+                       $source = hexSequenceToUtf8( $hexSource );
+                       $dest = hexSequenceToUtf8( $hexDest );
+                       $pairs[$source] = $dest;
+               }
+
+               global $IP;
+               file_put_contents( "$IP/serialized/normalize-ml.ser", serialize( $pairs ) );
+               echo "ml: " . count( $pairs ) . " pairs written.\n";
+       }
+}
+
+$maintClass = 'GenerateNormalizerDataMl';
+require_once RUN_MAINTENANCE_IF_MAIN;
diff --git a/maintenance/language/generateUtf8Case.php b/maintenance/language/generateUtf8Case.php
new file mode 100644 (file)
index 0000000..dbb70c1
--- /dev/null
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Generates Utf8Case.ser from the Unicode Character Database and
+ * supplementary files.
+ *
+ * Copyright © 2004, 2008 Brion Vibber <brion@pobox.com>
+ * 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
+ * @ingroup MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates Utf8Case.ser from the Unicode Character Database and
+ * supplementary files.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateUtf8Case extends Maintenance {
+
+       public function __construct() {
+               parent::__construct();
+               $this->mDescription = 'Generate Utf8Case.ser from the Unicode Character Database ' .
+                       'and supplementary files';
+               $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
+                       'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
+       }
+
+       public function getDbType() {
+               return Maintenance::DB_NONE;
+       }
+
+       public function execute() {
+               if ( !$this->hasOption( 'unicode-data-file' ) ) {
+                       $dataFile = 'UnicodeData.txt';
+                       if ( !file_exists( $dataFile ) ) {
+                               $this->error( "Unable to find UnicodeData.txt. Please specify " .
+                                       "its location with --unicode-data-file=<FILE>" );
+                               exit( 1 );
+                       }
+               } else {
+                       $dataFile = $this->getOption( 'unicode-data-file' );
+                       if ( !file_exists( $dataFile ) ) {
+                               $this->error( 'Unable to find the specified data file.' );
+                               exit( 1 );
+                       }
+               }
+
+               $file = fopen( $dataFile, 'r' );
+               if ( !$file ) {
+                       $this->error( 'Unable to open the data file.' );
+                       exit( 1 );
+               }
+
+               // For the file format, see http://www.unicode.org/reports/tr44/
+               $fieldNames = array(
+                       'Code',
+                       'Name',
+                       'General_Category',
+                       'Canonical_Combining_Class',
+                       'Bidi_Class',
+                       'Decomposition_Type_Mapping',
+                       'Numeric_Type_Value_6',
+                       'Numeric_Type_Value_7',
+                       'Numeric_Type_Value_8',
+                       'Bidi_Mirrored',
+                       'Unicode_1_Name',
+                       'ISO_Comment',
+                       'Simple_Uppercase_Mapping',
+                       'Simple_Lowercase_Mapping',
+                       'Simple_Titlecase_Mapping'
+               );
+
+               $upper = array();
+               $lower = array();
+
+               $lineNum = 0;
+               while ( false !== ( $line = fgets( $file ) ) ) {
+                       ++$lineNum;
+
+                       # Strip comments
+                       $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
+                       if ( $line === '' ) {
+                               continue;
+                       }
+
+                       # Split fields
+                       $numberedData = explode( ';', $line );
+                       $data = array();
+                       foreach ( $fieldNames as $number => $name ) {
+                               $data[$name] = $numberedData[$number];
+                       }
+
+                       $source = hexSequenceToUtf8( $data['Code'] );
+                       if ( $data['Simple_Uppercase_Mapping'] ) {
+                               $upper[$source] = hexSequenceToUtf8( $data['Simple_Uppercase_Mapping'] );
+                       }
+                       if ( $data['Simple_Lowercase_Mapping'] ) {
+                               $lower[$source] = hexSequenceToUtf8( $data['Simple_Lowercase_Mapping'] );
+                       }
+               }
+
+               global $IP;
+               file_put_contents( "$IP/serialized/Utf8Case.ser", serialize( array(
+                       'wikiUpperChars' => $upper,
+                       'wikiLowerChars' => $lower,
+               ) ) );
+       }
+}
+
+$maintClass = 'GenerateUtf8Case';
+require_once RUN_MAINTENANCE_IF_MAIN;
index 7a10b66..a7d1ceb 100644 (file)
@@ -131,6 +131,7 @@ $wgIgnoredMessages = array(
        'signupstart',
        'signupend',
        'signupend-https',
+       'emailsender',
        'sitenotice',
        'sitesubtitle',
        'sitetitle',
@@ -245,6 +246,13 @@ $wgIgnoredMessages = array(
        'tags-summary',
        'comparepages-summary',
        'resettokens-summary',
+       'version-db-mysql-url',
+       'version-db-mariadb-url',
+       'version-db-percona-url',
+       'version-db-postgres-url',
+       'version-db-oracle-url',
+       'version-db-sqlite-url',
+       'version-db-mssql-url',
        'version-entrypoints-index-php',
        'version-entrypoints-api-php',
        'version-entrypoints-load-php',
@@ -322,6 +330,7 @@ $wgOptionalMessages = array(
        'print.css',
        'noscript.css',
        'group-autoconfirmed.css',
+       'group-user.css',
        'group-bot.css',
        'group-sysop.css',
        'group-bureaucrat.css',
@@ -331,6 +340,7 @@ $wgOptionalMessages = array(
        'modern.js',
        'vector.js',
        'group-autoconfirmed.js',
+       'group-user.js',
        'group-bot.js',
        'group-sysop.js',
        'group-bureaucrat.js',
@@ -447,6 +457,7 @@ $wgOptionalMessages = array(
        'hebrew-calendar-m11-gen',
        'hebrew-calendar-m12-gen',
        'version-api',
+       'version-version',
        'version-svn-revision',
        'semicolon-separator',
        'comma-separator',
@@ -477,7 +488,7 @@ $wgOptionalMessages = array(
        'version-entrypoints-scriptpath',
        'mergehistory-revisionrow',
        'categoryviewer-pagedlinks',
-       'undelete-revisionrow',
+       'undelete-revision-row',
        'pageinfo-redirects-value',
        'created', // @deprecated. Remove in MediaWiki 1.23.
        'changed', // @deprecated. Remove in MediaWiki 1.23.
@@ -486,6 +497,7 @@ $wgOptionalMessages = array(
        'limitreport-expansiondepth-value',
        'limitreport-expensivefunctioncount-value',
        'interlanguage-link-title',
+       'img-lang-opt',
 );
 
 /** Exif messages, which may be set as optional in several checks, but are generally mandatory */
index 0451263..3534810 100644 (file)
@@ -48,7 +48,6 @@ $wgMessageStructure = array(
                'tog-minordefault',
                'tog-previewontop',
                'tog-previewonfirst',
-               'tog-nocache',
                'tog-enotifwatchlistpages',
                'tog-enotifusertalkpages',
                'tog-enotifminoredits',
@@ -188,7 +187,6 @@ $wgMessageStructure = array(
                'qbedit',
                'qbpageoptions',
                'qbmyoptions',
-               'qbspecialpages',
                'faq',
                'faqpage',
                'sitetitle',
@@ -406,7 +404,6 @@ $wgMessageStructure = array(
                'perfcached',
                'perfcachedts',
                'querypage-no-updates',
-               'wrong_wfQuery_params',
                'viewsource',
                'viewsource-title',
                'actionthrottled',
@@ -553,6 +550,7 @@ $wgMessageStructure = array(
                'invalidemailaddress',
                'cannotchangeemail',
                'emaildisabled',
+               'emailsender',
                'accountcreated',
                'accountcreatedtext',
                'createaccount-title',
@@ -573,7 +571,8 @@ $wgMessageStructure = array(
                'user-mail-no-body',
        ),
        'resetpass' => array(
-               'resetpass',
+               'changepassword',
+               'changepassword-summary',
                'resetpass_announce',
                'resetpass_text',
                'resetpass_header',
@@ -767,6 +766,8 @@ $wgMessageStructure = array(
                'invalid-content-data',
                'content-not-allowed-here',
                'editwarning-warning',
+               'editpage-notsupportedcontentformat-title',
+               'editpage-notsupportedcontentformat-text',
        ),
        'contentmodels' => array(
                'content-model-wikitext',
@@ -802,6 +803,7 @@ $wgMessageStructure = array(
        'cantcreateaccount' => array(
                'cantcreateaccounttitle',
                'cantcreateaccount-text',
+               'cantcreateaccount-range-text',
        ),
        'history' => array(
                'viewpagelogs',
@@ -856,10 +858,6 @@ $wgMessageStructure = array(
                'revisiondelete',
                'revdelete-nooldid-title',
                'revdelete-nooldid-text',
-               'revdelete-nologtype-title',
-               'revdelete-nologtype-text',
-               'revdelete-nologid-title',
-               'revdelete-nologid-text',
                'revdelete-no-file',
                'revdelete-show-file-confirm',
                'revdelete-show-file-submit',
@@ -887,8 +885,6 @@ $wgMessageStructure = array(
                'logdelete-success',
                'logdelete-failure',
                'revdel-restore',
-               'revdel-restore-deleted',
-               'revdel-restore-visible',
                'pagehist',
                'deletedhist',
                'revdelete-hide-current',
@@ -955,12 +951,8 @@ $wgMessageStructure = array(
                'search-summary',
                'searchresults',
                'searchresults-title',
-               'searchresulttext',
-               'searchsubtitle',
-               'searchsubtitleinvalid',
                'toomanymatches',
                'titlematches',
-               'notitlematches',
                'textmatches',
                'notextmatches',
                'prevn',
@@ -969,11 +961,9 @@ $wgMessageStructure = array(
                'nextn-title',
                'shown-title',
                'viewprevnext',
-               'searchmenu-legend',
                'searchmenu-exists',
                'searchmenu-new',
                'searchmenu-new-nocreate',
-               'searchmenu-prefix',
                'searchprofile-articles',
                'searchprofile-project',
                'searchprofile-images',
@@ -995,20 +985,16 @@ $wgMessageStructure = array(
                'search-interwiki-custom',
                'search-interwiki-more',
                'search-relatedarticle',
-               'mwsuggest-disable',
                'searcheverything-enable',
                'searchrelated',
                'searchall',
                'showingresults',
                'showingresultsnum',
                'showingresultsheader',
-               'nonefound',
                'search-nonefound',
-               'powersearch',
                'powersearch-legend',
                'powersearch-ns',
                'powersearch-redir',
-               'powersearch-field',
                'powersearch-togglelabel',
                'powersearch-toggleall',
                'powersearch-togglenone',
@@ -1026,8 +1012,6 @@ $wgMessageStructure = array(
                'mypreferences',
                'prefs-edits',
                'prefsnologintext2',
-               'changepassword',
-               'changepassword-summary',
                'prefs-skin',
                'skin-preview',
                'datedefault',
@@ -1050,13 +1034,11 @@ $wgMessageStructure = array(
                'prefs-email',
                'prefs-rendering',
                'saveprefs',
-               'resetprefs',
                'restoreprefs',
                'prefs-editing',
                'rows',
                'columns',
                'searchresultshead',
-               'resultsperpage',
                'stub-threshold',
                'stub-threshold-disabled',
                'recentchangesdays',
@@ -1069,7 +1051,6 @@ $wgMessageStructure = array(
                'localtime',
                'timezoneuseserverdefault',
                'timezoneuseoffset',
-               'timezoneoffset',
                'servertime',
                'guesstimezone',
                'timezoneregion-africa',
@@ -1139,6 +1120,7 @@ $wgMessageStructure = array(
                'prefs-tokenwatchlist',
                'prefs-diffs',
                'prefs-help-prefershttps',
+               'prefs-tabs-navigation-hint',
        ),
        'preferences-email' => array(
                'email-address-validity-valid',
@@ -1329,9 +1311,9 @@ $wgMessageStructure = array(
                'recentchanges-label-bot',
                'recentchanges-label-unpatrolled',
                'recentchanges-label-plusminus',
+               'recentchanges-legend-heading',
                'recentchanges-legend-newpage',
                'recentchanges-legend-plusminus',
-               'rcnote',
                'rcnotefrom',
                'rclistfrom',
                'rcshowhideminor',
@@ -1433,6 +1415,7 @@ $wgMessageStructure = array(
                'fileexists-shared-forbidden',
                'file-exists-duplicate',
                'file-deleted-duplicate',
+               'file-deleted-duplicate-notitle',
                'uploadwarning',
                'uploadwarning-text',
                'savefile',
@@ -1765,6 +1748,7 @@ $wgMessageStructure = array(
                'ninterwikis',
                'nlinks',
                'nmembers',
+               'nmemberschanged',
                'nrevisions',
                'nviews',
                'nimagelinks',
@@ -1827,11 +1811,10 @@ $wgMessageStructure = array(
                'protectedpages-indef',
                'protectedpages-summary',
                'protectedpages-cascade',
-               'protectedpagestext',
+               'protectedpages-noredirect',
                'protectedpagesempty',
                'protectedtitles',
                'protectedtitles-summary',
-               'protectedtitlestext',
                'protectedtitlesempty',
                'listusers',
                'listusers-summary',
@@ -1891,9 +1874,6 @@ $wgMessageStructure = array(
                'allpagesto',
                'allarticles',
                'allinnamespace',
-               'allnotinnamespace',
-               'allpagesprev',
-               'allpagesnext',
                'allpagessubmit',
                'allpagesprefix',
                'allpagesbadtitle',
@@ -2085,6 +2065,7 @@ $wgMessageStructure = array(
                'delete-edit-reasonlist',
                'delete-toobig',
                'delete-warning-toobig',
+               'deleting-backlinks-warning',
        ),
        'rollback' => array(
                'rollback',
@@ -2184,7 +2165,6 @@ $wgMessageStructure = array(
                'undeletebtn',
                'undeletelink',
                'undeleteviewlink',
-               'undeletereset',
                'undeleteinvert',
                'undeletecomment',
                'undeletedrevisions',
@@ -2207,7 +2187,7 @@ $wgMessageStructure = array(
                'undelete-error-long',
                'undelete-show-file-confirm',
                'undelete-show-file-submit',
-               'undelete-revisionrow',
+               'undelete-revision-row',
        ),
        'nsform' => array(
                'namespace',
@@ -2275,13 +2255,11 @@ $wgMessageStructure = array(
                'unblock',
                'unblock-summary',
                'blockip',
-               'blockip-title',
                'blockip-legend',
                'blockiptext',
                'ipadressorusername',
                'ipbexpiry',
                'ipbreason',
-               'ipbreasonotherlist',
                'ipbreason-dropdown',
                'ipb-hardblock',
                'ipbcreateaccount',
@@ -2290,8 +2268,6 @@ $wgMessageStructure = array(
                'ipbsubmit',
                'ipbother',
                'ipboptions',
-               'ipbotheroption',
-               'ipbotherreason',
                'ipbhidename',
                'ipbwatchuser',
                'ipb-disableusertalk',
@@ -2302,6 +2278,7 @@ $wgMessageStructure = array(
                'blockipsuccesstext',
                'ipb-blockingself',
                'ipb-confirmhideuser',
+               'ipb-confirmaction',
                'ipb-edit-dropdown',
                'ipb-unblock-addr',
                'ipb-unblock',
@@ -2378,7 +2355,6 @@ $wgMessageStructure = array(
                'sorbsreason',
                'sorbs_create_account_reason',
                'xffblockreason',
-               'cant-block-while-blocked',
                'cant-see-hidden-user',
                'ipbblocked',
                'ipbnounblockself',
@@ -2411,7 +2387,6 @@ $wgMessageStructure = array(
                'movepagetalktext',
                'movearticle',
                'moveuserpage-warning',
-               'movenologin',
                'movenologintext',
                'movenotallowed',
                'movenotallowedfile',
@@ -2426,8 +2401,6 @@ $wgMessageStructure = array(
                'movepage-moved-noredirect',
                'articleexists',
                'cantmove-titleprotected',
-               'talkexists',
-               'movedto',
                'movetalk',
                'move-subpages',
                'move-talk-subpages',
@@ -2733,6 +2706,7 @@ $wgMessageStructure = array(
                'print.css',
                'noscript.css',
                'group-autoconfirmed.css',
+               'group-user.css',
                'group-bot.css',
                'group-sysop.css',
                'group-bureaucrat.css',
@@ -2744,6 +2718,7 @@ $wgMessageStructure = array(
                'modern.js',
                'vector.js',
                'group-autoconfirmed.js',
+               'group-user.js',
                'group-bot.js',
                'group-sysop.js',
                'group-bureaucrat.js',
@@ -3453,15 +3428,10 @@ $wgMessageStructure = array(
                'exif-urgency-high',
                'exif-urgency-other',
        ),
-       'edit-externally' => array(
-               'edit-externally',
-               'edit-externally-help',
-       ),
        'all' => array(
                'watchlistall2',
                'namespacesall',
                'monthsall',
-               'limitall',
        ),
        'confirmemail' => array(
                'confirmemail',
@@ -3476,7 +3446,6 @@ $wgMessageStructure = array(
                'confirmemail_needlogin',
                'confirmemail_success',
                'confirmemail_loggedin',
-               'confirmemail_error',
                'confirmemail_subject',
                'confirmemail_body',
                'confirmemail_body_changed',
@@ -3529,6 +3498,12 @@ $wgMessageStructure = array(
                'imgmultigo',
                'imgmultigoto',
        ),
+       'img-lang' => array(
+               'img-lang-opt',
+               'img-lang-default',
+               'img-lang-info',
+               'img-lang-go',
+       ),
        'tablepager' => array(
                'ascending_abbrev',
                'descending_abbrev',
@@ -3692,6 +3667,16 @@ $wgMessageStructure = array(
                'version-version',
                'version-svn-revision',
                'version-license',
+               'version-ext-license',
+               'version-ext-colheader-name',
+               'version-ext-colheader-version',
+               'version-ext-colheader-license',
+               'version-ext-colheader-description',
+               'version-ext-colheader-credits',
+               'version-license-title',
+               'version-license-not-found',
+               'version-credits-title',
+               'version-credits-not-found',
                'version-poweredby-credits',
                'version-poweredby-others',
                'version-poweredby-translators',
@@ -3700,6 +3685,13 @@ $wgMessageStructure = array(
                'version-software',
                'version-software-product',
                'version-software-version',
+               'version-db-mysql-url',
+               'version-db-mariadb-url',
+               'version-db-percona-url',
+               'version-db-postgres-url',
+               'version-db-oracle-url',
+               'version-db-sqlite-url',
+               'version-db-mssql-url',
                'version-entrypoints',
                'version-entrypoints-header-entrypoint',
                'version-entrypoints-header-url',
@@ -3718,6 +3710,7 @@ $wgMessageStructure = array(
                'redirect-lookup',
                'redirect-value',
                'redirect-user',
+               'redirect-page',
                'redirect-revision',
                'redirect-file',
                'redirect-not-exists',
@@ -3779,7 +3772,6 @@ $wgMessageStructure = array(
        'comparepages' => array(
                'comparepages',
                'comparepages-summary',
-               'compare-selector',
                'compare-page1',
                'compare-page2',
                'compare-rev1',
@@ -3933,6 +3925,7 @@ $wgMessageStructure = array(
                'api-error-overwrite',
                'api-error-stashfailed',
                'api-error-publishfailed',
+               'api-error-stasherror',
                'api-error-timeout',
                'api-error-unclassified',
                'api-error-unknown-code',
@@ -3982,10 +3975,12 @@ $wgMessageStructure = array(
                'expand_templates_input',
                'expand_templates_output',
                'expand_templates_xml_output',
+               'expand_templates_html_output',
                'expand_templates_ok',
                'expand_templates_remove_comments',
                'expand_templates_remove_nowiki',
                'expand_templates_generate_xml',
+               'expand_templates_generate_rawhtml',
                'expand_templates_preview',
        ),
 );
@@ -4191,7 +4186,6 @@ Variants for Chinese language",
        'exif-maxaperturevalue' => '',
        'exif-iimcategory' => '',
        'exif-urgency' => '',
-       'edit-externally' => 'External editor support',
        'all' => "'all' in various places, this might be different for inflected languages",
        'confirmemail' => 'Email address confirmation',
        'scarytransclusion' => 'Scary transclusion',
@@ -4201,6 +4195,7 @@ Variants for Chinese language",
        'watch-unwatch' => 'action=watch/unwatch',
        'separators' => 'Separators for various lists, etc.',
        'imgmulti' => 'Multipage image navigation',
+       'img-lang' => 'Language selector for translatable SVGs',
        'tablepager' => 'Table pager',
        'autosumm' => 'Auto-summaries',
        'autoblock_whitelist' => 'Autoblock whitelist',
index 7e19794..ac09246 100755 (executable)
@@ -352,7 +352,7 @@ def main():
 /**
  * Simplified / Traditional Chinese conversion tables
  *
- * Automatically generated using code and data in includes/zhtable/
+ * Automatically generated using code and data in maintenance/language/zhtable/
  * Do not modify directly!
  *
  * @file
index 5bf04c6..a63c45b 100644 (file)
@@ -46,8 +46,8 @@ class MergeMessageFileList extends Maintenance {
                $this->addOption( 'list-file', 'A file containing a list of extension setup files, one per line.', false, true );
                $this->addOption( 'extensions-dir', 'Path where extensions can be found.', false, true );
                $this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true );
-               $this->mDescription = 'Merge $wgExtensionMessagesFiles from various extensions to produce a ' .
-                       'single array containing all message files.';
+               $this->mDescription = 'Merge $wgExtensionMessagesFiles and $wgMessagesDirs from ' .
+                       ' various extensions to produce a single file listing all message files and dirs.';
        }
 
        public function execute() {
@@ -158,7 +158,8 @@ $s =
        "<" . "?php\n" .
        "## This file is generated by mergeMessageFileList.php. Do not edit it directly.\n\n" .
        "if ( defined( 'MW_NO_EXTENSION_MESSAGES' ) ) return;\n\n" .
-       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n";
+       '$wgExtensionMessagesFiles = ' . var_export( $wgExtensionMessagesFiles, true ) . ";\n\n" .
+       '$wgMessagesDirs = ' . var_export( $wgMessagesDirs, true ) . ";\n\n";
 
 $dirs = array(
        $IP,
index 8a565d5..71fdd61 100644 (file)
@@ -619,6 +619,8 @@ CREATE INDEX /*$wgDBprefix*/page_time ON /*$wgDBprefix*/logging (log_namespace,
 CREATE INDEX /*$wgDBprefix*/times ON /*$wgDBprefix*/logging (log_timestamp);
 CREATE INDEX /*$wgDBprefix*/log_user_type_time ON /*$wgDBprefix*/logging (log_user, log_type, log_timestamp);
 CREATE INDEX /*$wgDBprefix*/log_page_id_time ON /*$wgDBprefix*/logging (log_page,log_timestamp);
+CREATE INDEX /*$wgDBprefix*/log_user_text_type_time ON /*$wgDBprefix*/logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX /*$wgDBprefix*/log_user_text_time ON /*$wgDBprefix*/logging (log_user_text, log_timestamp);
 
 CREATE TABLE /*$wgDBprefix*/log_search (
        -- The type of ID (rev ID, log ID, rev timestamp, username)
index 06ccccb..9b4d194 100644 (file)
@@ -78,10 +78,6 @@ class NextJobDB extends Maintenance {
                        }
 
                        list( $type, $db ) = $candidates[mt_rand( 0, count( $candidates ) - 1 )];
-                       if ( JobQueueGroup::singleton( $db )->isQueueDeprioritized( $type ) ) {
-                               $pendingDBs[$type] = array_diff( $pendingDBs[$type], array( $db ) );
-                               $again = true;
-                       }
                } while ( $again );
 
                if ( $this->hasOption( 'types' ) ) {
diff --git a/maintenance/oracle/archives/patch-logging_user_text_time_index.sql b/maintenance/oracle/archives/patch-logging_user_text_time_index.sql
new file mode 100644 (file)
index 0000000..e04abf5
--- /dev/null
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE INDEX &mw_prefix.logging_i07 ON &mw_prefix.logging (log_user_text, log_timestamp);
+
diff --git a/maintenance/oracle/archives/patch-logging_user_text_type_time_index.sql b/maintenance/oracle/archives/patch-logging_user_text_type_time_index.sql
new file mode 100644 (file)
index 0000000..c1c0d4f
--- /dev/null
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE INDEX &mw_prefix.logging_i06 ON &mw_prefix.logging (log_user_text, log_type, log_timestamp);
+
index 2395bc5..a6b5350 100644 (file)
@@ -509,6 +509,8 @@ CREATE INDEX &mw_prefix.logging_i02 ON &mw_prefix.logging (log_user, log_timesta
 CREATE INDEX &mw_prefix.logging_i03 ON &mw_prefix.logging (log_namespace, log_title, log_timestamp);
 CREATE INDEX &mw_prefix.logging_i04 ON &mw_prefix.logging (log_timestamp);
 CREATE INDEX &mw_prefix.logging_i05 ON &mw_prefix.logging (log_type, log_action, log_timestamp);
+CREATE INDEX &mw_prefix.logging_i06 ON &mw_prefix.logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX &mw_prefix.logging_i07 ON &mw_prefix.logging (log_user_text, log_timestamp);
 
 CREATE TABLE &mw_prefix.log_search (
   ls_field VARCHAR2(32) NOT NULL,
index 3ac7a28..7765784 100644 (file)
@@ -123,9 +123,9 @@ class CLIParser extends Maintenance {
         */
        protected function parse( $wikitext ) {
                return $this->parser->parse(
-                       $wikitext
-                       , $this->getTitle()
-                       new ParserOptions()
+                       $wikitext,
+                       $this->getTitle(),
+                       new ParserOptions()
                );
        }
 }
index d0d1e92..3940ba2 100644 (file)
@@ -80,6 +80,7 @@ CREATE TABLE page (
   page_is_new        SMALLINT       NOT NULL  DEFAULT 0,
   page_random        NUMERIC(15,14) NOT NULL  DEFAULT RANDOM(),
   page_touched       TIMESTAMPTZ,
+  page_links_updated TIMESTAMPTZ    NULL,
   page_latest        INTEGER        NOT NULL, -- FK?
   page_len           INTEGER        NOT NULL,
   page_content_model TEXT
@@ -510,6 +511,8 @@ CREATE INDEX logging_page_time ON logging (log_namespace, log_title, log_timesta
 CREATE INDEX logging_times ON logging (log_timestamp);
 CREATE INDEX logging_user_type_time ON logging (log_user, log_type, log_timestamp);
 CREATE INDEX logging_page_id_time ON logging (log_page, log_timestamp);
+CREATE INDEX logging_user_text_type_time ON logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX logging_user_text_time ON logging (log_user_text, log_timestamp);
 
 CREATE TABLE log_search (
   ls_field   TEXT     NOT NULL,
index 48d3897..01bd09a 100644 (file)
@@ -95,8 +95,8 @@ class PruneFileCache extends Maintenance {
                                        // Sanity check the file extension against known cache types
                                        if ( $mts < $this->minSurviveTimestamp
                                                && preg_match( '/\.(?:html|cache)(?:\.gz)?$/', $file )
-                                               && unlink( $path ) )
-                                       {
+                                               && unlink( $path )
+                                       {
                                                $daysOld = round( ( $tsNow - $mts ) / 86400, 2 );
                                                $this->output( "Deleted `$path` [days=$daysOld]\n" );
                                        }
index 53bf823..ed67ccd 100644 (file)
@@ -205,9 +205,16 @@ class ImageBuilder extends Maintenance {
                }
                if ( !$this->dryrun ) {
                        $file = wfLocalFile( $filename );
-                       if ( !$file->recordUpload( '', '(recovered file, missing upload log entry)', '', '', '',
-                               false, $timestamp ) )
-                       {
+                       if ( !$file->recordUpload(
+                                       '',
+                                       '(recovered file, missing upload log entry)',
+                                       '',
+                                       '',
+                                       '',
+                                       false,
+                                       $timestamp
+                               )
+                       ) {
                                $this->output( "Error uploading file $fullpath\n" );
                                return;
                        }
index b9eb809..2a9bb4f 100644 (file)
@@ -144,6 +144,7 @@ class RebuildRecentchanges extends Maintenance {
                                                'rc_last_oldid' => $lastOldId,
                                                'rc_new' => $new,
                                                'rc_type' => $new,
+                                               'rc_source' => $new === 1 ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT,
                                                'rc_old_len' => $lastSize,
                                                'rc_new_len' => $size,
                                        ), array(
@@ -196,6 +197,7 @@ class RebuildRecentchanges extends Maintenance {
                                'rc_this_oldid' => 0,
                                'rc_last_oldid' => 0,
                                'rc_type'       => RC_LOG,
+                               'rc_source'     => $dbw->addQuotes( RecentChange::SRC_LOG ),
                                'rc_cur_id'     => $dbw->cascadingDeletes() ? 'page_id' : 'COALESCE(page_id, 0)',
                                'rc_log_type'   => 'log_type',
                                'rc_log_action' => 'log_action',
index 429edf4..7c896d2 100644 (file)
@@ -2,10 +2,6 @@
 /**
  * Run pending jobs.
  *
- * Options:
- *  --maxjobs <num> (default 10000)
- *  --type <job_cmd>
- *
  * 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
@@ -68,12 +64,12 @@ class RunJobs extends Maintenance {
                                }
                        }
                }
+
+               $type = $this->getOption( 'type', false );
                $maxJobs = $this->getOption( 'maxjobs', false );
                $maxTime = $this->getOption( 'maxtime', false );
                $startTime = time();
-               $type = $this->getOption( 'type', false );
                $wgTitle = Title::newFromText( 'RunJobs.php' );
-               $jobsRun = 0; // counter
 
                $group = JobQueueGroup::singleton();
                // Handle any required periodic queue maintenance
@@ -82,12 +78,21 @@ class RunJobs extends Maintenance {
                        $this->runJobsLog( "Executed $count periodic queue task(s)." );
                }
 
-               $flags = JobQueueGroup::USE_CACHE | JobQueueGroup::USE_PRIORITY;
+               $backoffs = $this->loadBackoffs(); // map of (type => UNIX expiry)
+               $startingBackoffs = $backoffs; // avoid unnecessary writes
+               $backoffExpireFunc = function( $t ) { return $t > time(); };
+
+               $jobsRun = 0; // counter
+               $flags = JobQueueGroup::USE_CACHE;
                $lastTime = time(); // time since last slave check
                do {
-                       $job = ( $type === false )
-                               ? $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags )
-                               : $group->pop( $type ); // job from a single queue
+                       if ( $type === false ) {
+                               $backoffs = array_filter( $backoffs, $backoffExpireFunc );
+                               $blacklist = array_keys( $backoffs );
+                               $job = $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags, $blacklist );
+                       } else {
+                               $job = $group->pop( $type ); // job from a single queue
+                       }
                        if ( $job ) { // found a job
                                ++$jobsRun;
                                $this->runJobsLog( $job->toString() . " STARTING" );
@@ -121,6 +126,14 @@ class RunJobs extends Maintenance {
                                        $this->runJobsLog( $job->toString() . " t=$timeMs good" );
                                }
 
+                               // Back off of certain jobs for a while
+                               $ttw = $this->getBackoffTimeToWait( $job );
+                               if ( $ttw > 0 ) {
+                                       $jType = $job->getType();
+                                       $backoffs[$jType] = isset( $backoffs[$jType] ) ? $backoffs[$jType] : 0;
+                                       $backoffs[$jType] = max( $backoffs[$jType], time() + $ttw );
+                               }
+
                                // Break out if we hit the job count or wall time limits...
                                if ( $maxJobs && $jobsRun >= $maxJobs ) {
                                        break;
@@ -143,10 +156,87 @@ class RunJobs extends Maintenance {
                                $this->assertMemoryOK();
                        }
                } while ( $job ); // stop when there are no jobs
+               // Sync the persistent backoffs for the next runJobs.php pass
+               $backoffs = array_filter( $backoffs, $backoffExpireFunc );
+               if ( $backoffs !== $startingBackoffs ) {
+                       $this->syncBackoffs( $backoffs );
+               }
+       }
+
+       /**
+        * @param Job $job
+        * @return integer Seconds for this runner to avoid doing more jobs of this type
+        * @see $wgJobBackoffThrottling
+        */
+       private function getBackoffTimeToWait( Job $job ) {
+               global $wgJobBackoffThrottling;
+
+               if ( !isset( $wgJobBackoffThrottling[$job->getType()] ) ) {
+                       return 0; // not throttled
+               }
+               $itemsPerSecond = $wgJobBackoffThrottling[$job->getType()];
+               if ( $itemsPerSecond <= 0 ) {
+                       return 0; // not throttled
+               }
+
+               $seconds = 0;
+               if ( $job->workItemCount() > 0 ) {
+                       $seconds = floor( $job->workItemCount() / $itemsPerSecond );
+                       $remainder = $job->workItemCount() % $itemsPerSecond;
+                       $seconds += ( mt_rand( 1, $itemsPerSecond ) <= $remainder ) ? 1 : 0;
+               }
+
+               return (int)$seconds;
+       }
+
+       /**
+        * Get the previous backoff expiries from persistent storage
+        *
+        * @return array Map of (job type => backoff expiry timestamp)
+        */
+       private function loadBackoffs() {
+               $section = new ProfileSection( __METHOD__ );
+
+               $backoffs = array();
+               $file = wfTempDir() . '/mw-runJobs-backoffs.json';
+               if ( is_file( $file ) ) {
+                       $handle = fopen( $file, 'rb' );
+                       flock( $handle, LOCK_SH );
+                       $content = stream_get_contents( $handle );
+                       flock( $handle, LOCK_UN );
+                       fclose( $handle );
+                       $backoffs = json_decode( $content, true ) ?: array();
+               }
+
+               return $backoffs;
+       }
+
+       /**
+        * Merge the current backoff expiries from persistent storage
+        *
+        * @param array $backoffs Map of (job type => backoff expiry timestamp)
+        */
+       private function syncBackoffs( array $backoffs ) {
+               $section = new ProfileSection( __METHOD__ );
+
+               $file = wfTempDir() . '/mw-runJobs-backoffs.json';
+               $handle = fopen( $file, 'wb+' );
+               flock( $handle, LOCK_EX );
+               $content = stream_get_contents( $handle );
+               $cBackoffs = json_decode( $content, true ) ?: array();
+               foreach ( $backoffs as $type => $timestamp ) {
+                       $cBackoffs[$type] = isset( $cBackoffs[$type] ) ? $cBackoffs[$type] : 0;
+                       $cBackoffs[$type] = max( $cBackoffs[$type], $backoffs[$type] );
+               }
+               ftruncate( $handle, 0 );
+               fwrite( $handle, json_encode( $backoffs ) );
+               flock( $handle, LOCK_UN );
+               fclose( $handle );
        }
 
        /**
-        * Make sure that this script is not too close to the memory usage limit
+        * Make sure that this script is not too close to the memory usage limit.
+        * It is better to die in between jobs than OOM right in the middle of one.
         * @throws MWException
         */
        private function assertMemoryOK() {
@@ -155,7 +245,7 @@ class RunJobs extends Maintenance {
                        $m = array();
                        if ( preg_match( '!^(\d+)(k|m|g|)$!i', ini_get( 'memory_limit' ), $m ) ) {
                                list( , $num, $unit ) = $m;
-                               $conv = array( 'g' => 1024 * 1024 * 1024, 'm' => 1024 * 1024, 'k' => 1024, '' => 1 );
+                               $conv = array( 'g' => 1073741824, 'm' => 1048576, 'k' => 1024, '' => 1 );
                                $maxBytes = $num * $conv[strtolower( $unit )];
                        } else {
                                $maxBytes = 0;
index afd7c74..5e21130 100644 (file)
@@ -56,14 +56,16 @@ class ShowJobs extends Maintenance {
                } elseif ( $this->hasOption( 'group' ) ) {
                        foreach ( $group->getQueueTypes() as $type ) {
                                $queue = $group->get( $type );
+                               $delayed = $queue->getDelayedCount();
                                $pending = $queue->getSize();
                                $claimed = $queue->getAcquiredCount();
                                $abandoned = $queue->getAbandonedCount();
                                $active = max( 0, $claimed - $abandoned );
-                               if ( ( $pending + $claimed ) > 0 ) {
+                               if ( ( $pending + $claimed + $delayed ) > 0 ) {
                                        $this->output(
                                                "{$type}: $pending queued; " .
-                                               "$claimed claimed ($active active, $abandoned abandoned)\n"
+                                               "$claimed claimed ($active active, $abandoned abandoned); " .
+                                               "$delayed delayed\n"
                                        );
                                }
                        }
index a628b0b..5cad5a7 100644 (file)
@@ -34,15 +34,17 @@ class MwSql extends Maintenance {
                parent::__construct();
                $this->mDescription = "Send SQL queries to a MediaWiki database";
                $this->addOption( 'cluster', 'Use an external cluster by name', false, true );
+               $this->addOption( 'wikidb', 'The database wiki ID to use if not the current one', false, true );
                $this->addOption( 'slave', 'Use a slave server (either "any" or by name)', false, true );
        }
 
        public function execute() {
+               $wiki = $this->getOption( 'wikidb' ) ?: false;
                // Get the appropriate load balancer (for this wiki)
                if ( $this->hasOption( 'cluster' ) ) {
-                       $lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ) );
+                       $lb = wfGetLBFactory()->getExternalLB( $this->getOption( 'cluster' ), $wiki );
                } else {
-                       $lb = wfGetLB();
+                       $lb = wfGetLB( $wiki );
                }
                // Figure out which server to use
                if ( $this->hasOption( 'slave' ) ) {
@@ -65,9 +67,9 @@ class MwSql extends Maintenance {
                        $index = DB_MASTER;
                }
                // Get a DB handle (with this wiki's DB selected) from the appropriate load balancer
-               $dbw = $lb->getConnection( $index );
-               if ( $this->hasOption( 'slave' ) && $dbw->getLBInfo( 'master' ) !== null ) {
-                       $this->error( "The server selected ({$dbw->getServer()}) is not a slave.", 1 );
+               $db = $lb->getConnection( $index, array(), $wiki );
+               if ( $this->hasOption( 'slave' ) && $db->getLBInfo( 'master' ) !== null ) {
+                       $this->error( "The server selected ({$db->getServer()}) is not a slave.", 1 );
                }
 
                if ( $this->hasArg( 0 ) ) {
@@ -76,7 +78,7 @@ class MwSql extends Maintenance {
                                $this->error( "Unable to open input file", true );
                        }
 
-                       $error = $dbw->sourceStream( $file, false, array( $this, 'sqlPrintResult' ) );
+                       $error = $db->sourceStream( $file, false, array( $this, 'sqlPrintResult' ) );
                        if ( $error !== true ) {
                                $this->error( $error, true );
                        } else {
@@ -102,7 +104,7 @@ class MwSql extends Maintenance {
                                # User simply pressed return key
                                continue;
                        }
-                       $done = $dbw->streamStatementEnd( $wholeLine, $line );
+                       $done = $db->streamStatementEnd( $wholeLine, $line );
 
                        $wholeLine .= $line;
 
@@ -114,12 +116,12 @@ class MwSql extends Maintenance {
                        if ( $useReadline ) {
                                # Delimiter is eated by streamStatementEnd, we add it
                                # up in the history (bug 37020)
-                               readline_add_history( $wholeLine . $dbw->getDelimiter() );
+                               readline_add_history( $wholeLine . $db->getDelimiter() );
                                readline_write_history( $historyFile );
                        }
                        try {
-                               $res = $dbw->query( $wholeLine );
-                               $this->sqlPrintResult( $res, $dbw );
+                               $res = $db->query( $wholeLine );
+                               $this->sqlPrintResult( $res, $db );
                                $prompt = $newPrompt;
                                $wholeLine = '';
                        } catch ( DBQueryError $e ) {
index 8cb5548..3b59f1d 100644 (file)
@@ -177,8 +177,8 @@ class CompressOld extends Maintenance {
         * @return bool
         */
        private function compressWithConcat( $startId, $maxChunkSize, $beginDate,
-               $endDate, $extdb = "", $maxPageId = false )
-       {
+               $endDate, $extdb = "", $maxPageId = false
+       {
                $loadStyle = self::LS_CHUNKED;
 
                $dbr = wfGetDB( DB_SLAVE );
index 101aa06..dd86619 100644 (file)
@@ -57,14 +57,9 @@ class FixBug20757 extends Maintenance {
 
                $totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ );
 
-               if ( $dbr->getType() == 'mysql'
-                       && version_compare( $dbr->getServerVersion(), '4.1.0', '>=' ) )
-               {
+               if ( $dbr->getType() == 'mysql' ) {
                        // In MySQL 4.1+, the binary field old_text has a non-working LOWER() function
                        $lowerLeft = 'LOWER(CONVERT(LEFT(old_text,22) USING latin1))';
-               } else {
-                       // No CONVERT() in MySQL 4.0
-                       $lowerLeft = 'LOWER(LEFT(old_text,22))';
                }
 
                while ( true ) {
index 18139b2..fb2f0e1 100644 (file)
@@ -256,6 +256,11 @@ CREATE TABLE /*_*/page (
   -- of contained templates.
   page_touched binary(14) NOT NULL default '',
 
+  -- This timestamp is updated whenever a page is re-parsed and
+  -- it has all the link tracking tables updated for it. This is
+  -- useful for de-duplicating expensive backlink update jobs.
+  page_links_updated varbinary(14) NULL default NULL,
+
   -- Handy key to revision.rev_id of the current revision.
   -- This may be 0 during page creation, but that shouldn't
   -- happen outside of a transaction... hopefully.
@@ -1263,6 +1268,8 @@ CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
 CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
 CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
 CREATE INDEX /*i*/type_action ON /*_*/logging (log_type, log_action, log_timestamp);
+CREATE INDEX /*i*/log_user_text_type_time ON /*_*/logging (log_user_text, log_type, log_timestamp);
+CREATE INDEX /*i*/log_user_text_time ON /*_*/logging (log_user_text, log_timestamp);
 
 
 CREATE TABLE /*_*/log_search (
index 6b08480..beed720 100644 (file)
@@ -106,6 +106,8 @@ class UpdateMediaWiki extends Maintenance {
                $wgLang = Language::factory( 'en' );
                $wgTitle = Title::newFromText( "MediaWiki database updater" );
 
+               define( 'MW_UPDATER', true );
+
                $this->output( "MediaWiki {$wgVersion} Updater\n\n" );
 
                wfWaitForSlaves( 5 ); // let's not kill databases, shall we? ;) --tor
@@ -168,8 +170,8 @@ class UpdateMediaWiki extends Maintenance {
                }
                $time2 = new MWTimestamp();
 
-               $this->output( "\nDone.\n" );
-               $this->output( "\nThe job took " . $time2->diff( $time1 )->format( "%i:%S" ) . "\n" );
+               $timeDiff = $time2->diff( $time1 );
+               $this->output( "\nDone in " . $timeDiff->format( "%i:%S" ) . ".\n" );
        }
 
        function afterFinalSetup() {
index 3432cb2..40c6951 100644 (file)
@@ -112,9 +112,6 @@ class UpdateSpecialPages extends Maintenance {
                                                        sleep( 10 );
                                                } while ( !wfGetLB()->pingAll() );
                                                $this->output( "Reconnected\n\n" );
-                                       } else {
-                                               # Commit the results
-                                               $dbw->commit( __METHOD__ );
                                        }
                                        # Wait for the slave to catch up
                                        wfWaitForSlaves();
index 8bd80c9..44a1aab 100644 (file)
@@ -184,7 +184,7 @@ class UserDupes {
        function getDupes() {
                $user = $this->db->tableName( 'user' );
                $result = $this->db->query(
-                        "SELECT user_name,COUNT(*) AS n
+                       "SELECT user_name,COUNT(*) AS n
                                FROM $user
                        GROUP BY user_name
                          HAVING n > 1", __METHOD__ );
diff --git a/resources/Makefile b/resources/Makefile
new file mode 100644 (file)
index 0000000..4de5c2f
--- /dev/null
@@ -0,0 +1,9 @@
+kss: nodecheck
+# FIXME: Use more up-to-date Ruby version
+       @node_modules/.bin/kss-node mediawiki.ui mediawiki.ui/docs -l mediawiki.ui/vector.less -t styleguide-template
+       @echo Opening the generated style guide...
+       @command -v xdg-open >/dev/null 2>&1 || { open ${PWD}/mediawiki.ui/docs/index.html; exit 1; }
+       @xdg-open ${PWD}/mediawiki.ui/docs/index.html
+
+nodecheck:
+       @scripts/nodecheck.sh
diff --git a/resources/README.txt b/resources/README.txt
new file mode 100644 (file)
index 0000000..d91bf2a
--- /dev/null
@@ -0,0 +1,4 @@
+The Makefile, package.json, scripts, styleguide-template, and
+mediawiki.ui/styleguide.md files and directories in here support the automatic
+generation of CSS documentation from the source LESS files using kss for
+node.js, https://github.com/kneath/kss
index a022c6d..01d4a3f 100644 (file)
@@ -50,6 +50,59 @@ return array(
        // Scripts for the dynamic language specific data, like grammar forms.
        'mediawiki.language.data' => array( 'class' => 'ResourceLoaderLanguageDataModule' ),
 
+       /**
+        * Common skin styles, grouped into three graded levels.
+        *
+        * Level 1 "elements":
+        *     The base level that only contains the most basic of common skin styles.
+        *     Only styles for single elements are included, no styling for complex structures like the TOC
+        *     is present. This level is for skins that want to implement the entire style of even content area
+        *     structures like the TOC themselves.
+        *
+        * Level 2 "content":
+        *     The most commonly used level for skins implemented from scratch. This level includes all the single
+        *     element styles from "elements" as well as styles for complex structures such as the TOC that are output
+        *     in the content area by MediaWiki rather than the skin. Essentially this is the common level that lets
+        *     skins leave the style of the content area as it is normally styled, while leaving the rest of the skin
+        *     up to the skin implementation.
+        *
+        * Level 3 "interface":
+        *     The highest level, this stylesheet contains extra common styles for classes like .firstHeading, #contentSub,
+        *     et cetera which are not outputted by MediaWiki but are common to skins like MonoBook, Vector, etc...
+        *     Essentially this level is for styles that are common to MonoBook clones. And since practically every skin
+        *     that currently exists within core is a MonoBook clone, all our core skins currently use this level.
+        *
+        * These modules are typically loaded by addModuleStyles which has absolutely no concept of dependency
+        * management. As a result the skins.common.* modules contain duplicate stylesheet references instead of
+        * setting 'dependencies' to the lower level the module is based on. For this reason avoid including multiple
+        * skins.common.* modules into your skin as this will result in duplicate css.
+        */
+       'skins.common.elements' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.common.content' => array(
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.common.interface' => array(
+               // Used in the web installer. Test it after modifying this definition!
+               'styles' => array(
+                       'common/commonElements.css' => array( 'media' => 'screen' ),
+                       'common/commonContent.css' => array( 'media' => 'screen' ),
+                       'common/commonInterface.css' => array( 'media' => 'screen' ),
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+
        /**
         * Skins
         * Be careful not to add 'scripts' to these modules,
@@ -76,6 +129,7 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
+       // FIXME: Remove in favour of skins.monobook.styles when cache expires
        'skins.monobook' => array(
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
@@ -86,8 +140,8 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
+       // FIXME: Remove in favour of skins.vector.styles when cache expires
        'skins.vector' => array(
-               // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
                        'common/commonElements.css' => array( 'media' => 'screen' ),
                        'common/commonContent.css' => array( 'media' => 'screen' ),
@@ -97,13 +151,17 @@ return array(
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
        ),
-       'skins.vector.beta' => array(
-               // Keep in sync with skins.vector
+       'skins.vector.styles' => array(
+               // Used in the web installer. Test it after modifying this definition!
                'styles' => array(
-                       'common/commonElements.css' => array( 'media' => 'screen' ),
-                       'common/commonContent.css' => array( 'media' => 'screen' ),
-                       'common/commonInterface.css' => array( 'media' => 'screen' ),
-                       'vector/styles-beta.less',
+                       'vector/styles.less',
+               ),
+               'remoteBasePath' => $GLOBALS['wgStylePath'],
+               'localBasePath' => $GLOBALS['wgStyleDirectory'],
+       ),
+       'skins.monobook.styles' => array(
+               'styles' => array(
+                       'monobook/main.css' => array( 'media' => 'screen' ),
                ),
                'remoteBasePath' => $GLOBALS['wgStylePath'],
                'localBasePath' => $GLOBALS['wgStyleDirectory'],
@@ -698,7 +756,7 @@ return array(
                'messages' => array( 'htmlform-chosen-placeholder' ),
        ),
        'mediawiki.icon' => array(
-               'styles' => 'resources/mediawiki/mediawiki.icon.css',
+               'styles' => 'resources/mediawiki/mediawiki.icon.less',
        ),
        'mediawiki.inspect' => array(
                'scripts' => 'resources/mediawiki/mediawiki.inspect.js',
@@ -790,6 +848,7 @@ return array(
                'styles' => 'resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css',
                'dependencies' => array(
                        'jquery.makeCollapsible',
+                       'jquery.cookie',
                        'mediawiki.icon',
                ),
        ),
@@ -835,6 +894,13 @@ return array(
                        'postedit-confirmation',
                ),
        ),
+       'mediawiki.action.view.redirectToFragment' => array(
+               'scripts' => 'resources/mediawiki.action/mediawiki.action.view.redirectToFragment.js',
+               'dependencies' => array(
+                       'jquery.client',
+               ),
+               'position' => 'top',
+       ),
        'mediawiki.action.view.rightClickEdit' => array(
                'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
        ),
@@ -995,6 +1061,7 @@ return array(
        ),
        'mediawiki.special.block' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.block.js',
+               'styles' => 'resources/mediawiki.special/mediawiki.special.block.css',
                'dependencies' => array(
                        'mediawiki.util',
                ),
@@ -1013,6 +1080,13 @@ return array(
        'mediawiki.special.changeslist' => array(
                'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css',
        ),
+       'mediawiki.special.changeslist.js' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.changeslist.js',
+               'dependencies' => array(
+                       'jquery.makeCollapsible',
+                       'jquery.cookie',
+               ),
+       ),
        'mediawiki.special.changeslist.enhanced' => array(
                'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.enhanced.css',
        ),
@@ -1030,6 +1104,9 @@ return array(
                'skinStyles' => array(
                        'vector' => 'skins/vector/special.preferences.less',
                ),
+               'messages' => array(
+                       'prefs-tabs-navigation-hint',
+               ),
        ),
        'mediawiki.special.recentchanges' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js',
@@ -1064,28 +1141,39 @@ return array(
                        'mediawiki.util',
                ),
        ),
-       'mediawiki.special.userlogin' => array(
+       'mediawiki.special.userlogin.common.styles' => array(
+               'styles' => array(
+                       'resources/mediawiki.special/mediawiki.special.userlogin.common.css',
+               ),
+               'position' => 'top',
+       ),
+       'mediawiki.special.userlogin.signup.styles' => array(
                'styles' => array(
-                       'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.userLogin.css',
+                       'resources/mediawiki.special/mediawiki.special.userlogin.signup.css',
                ),
                'position' => 'top',
        ),
-       'mediawiki.special.createaccount' => array(
+       'mediawiki.special.userlogin.login.styles' => array(
                'styles' => array(
-                       'resources/mediawiki.special/mediawiki.special.vforms.css',
-                       'resources/mediawiki.special/mediawiki.special.createAccount.css',
+                       'resources/mediawiki.special/mediawiki.special.userlogin.login.css',
                ),
+               'position' => 'top',
        ),
-       'mediawiki.special.createaccount.js' => array(
-               'scripts' => 'resources/mediawiki.special/mediawiki.special.createAccount.js',
+       'mediawiki.special.userlogin.common.js' => array(
+               'scripts' => array(
+                       'resources/mediawiki.special/mediawiki.special.userlogin.common.js',
+               ),
                'messages' => array(
                        'createacct-captcha',
+                       'createacct-imgcaptcha-ph',
+               ),
+       ),
+       'mediawiki.special.userlogin.signup.js' => array(
+               'scripts' => 'resources/mediawiki.special/mediawiki.special.userlogin.signup.js',
+               'messages' => array(
                        'createacct-emailrequired',
-                       'createacct-imgcaptcha-ph'
                ),
                'dependencies' => 'mediawiki.jqueryMsg',
-               'position' => 'top',
        ),
        'mediawiki.special.javaScriptTest' => array(
                'scripts' => 'resources/mediawiki.special/mediawiki.special.javaScriptTest.js',
@@ -1097,6 +1185,9 @@ return array(
                'position' => 'top',
                'targets' => array( 'desktop', 'mobile' ),
        ),
+       'mediawiki.special.version' => array(
+               'styles' => 'resources/mediawiki.special/mediawiki.special.version.css',
+       ),
 
        /* MediaWiki Tests */
 
@@ -1184,5 +1275,25 @@ return array(
                        'vector' => 'resources/mediawiki.ui/vector.less',
                ),
                'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+       // Lightweight module for button styles
+       'mediawiki.ui.button' => array(
+               'skinStyles' => array(
+                       'default' => 'resources/mediawiki.ui/components/default/buttons.less',
+                       'vector' => 'resources/mediawiki.ui/components/vector/buttons.less',
+               ),
+               'position' => 'top',
+               'targets' => array( 'desktop', 'mobile' ),
+       ),
+
+       /* OOJS */
+       // WARNING: oojs is NOT COMPATIBLE with older browsers and
+       // WILL BREAK if loaded in browsers that don't support ES5
+       'oojs' => array(
+               'scripts' => array(
+                       'resources/oojs/oojs.js',
+               ),
+               'targets' => array( 'desktop', 'mobile' ),
        ),
 );
index 5a95dc5..f35782b 100644 (file)
                /**
                 * Checks the current browser against a support map object.
                 *
+                * Version numbers passed as numeric values will be compared like numbers (1.2 > 1.11).
+                * Version numbers passed as string values will be compared using a simple component-wise
+                * algorithm, similar to PHP's version_compare ('1.2' < '1.11').
+                *
                 * A browser map is in the following format:
                 * {
                 *   // Multiple rules with configurable operators
                test: function ( map, profile, exactMatchOnly ) {
                        /*jshint evil: true */
 
-                       var conditions, dir, i, op, val;
+                       var conditions, dir, i, op, val, j, pieceVersion, pieceVal, compare;
                        profile = $.isPlainObject( profile ) ? profile : $.client.profile();
                        if ( map.ltr && map.rtl ) {
                                dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
                                op = conditions[i][0];
                                val = conditions[i][1];
                                if ( typeof val === 'string' ) {
-                                       if ( !( eval( 'profile.version' + op + '"' + val + '"' ) ) ) {
+                                       // Perform a component-wise comparison of versions, similar to PHP's version_compare
+                                       // but simpler. '1.11' is larger than '1.2'.
+                                       pieceVersion = profile.version.toString().split( '.' );
+                                       pieceVal = val.split( '.' );
+                                       // Extend with zeroes to equal length
+                                       while ( pieceVersion.length < pieceVal.length ) {
+                                               pieceVersion.push( '0' );
+                                       }
+                                       while ( pieceVal.length < pieceVersion.length ) {
+                                               pieceVal.push( '0' );
+                                       }
+                                       // Compare components
+                                       compare = 0;
+                                       for ( j = 0; j < pieceVersion.length; j++ ) {
+                                               if ( Number( pieceVersion[j] ) < Number( pieceVal[j] ) ) {
+                                                       compare = -1;
+                                                       break;
+                                               } else if ( Number( pieceVersion[j] ) > Number( pieceVal[j] ) ) {
+                                                       compare = 1;
+                                                       break;
+                                               }
+                                       }
+                                       // compare will be -1, 0 or 1, depending on comparison result
+                                       if ( !( eval( '' + compare + op + '0' ) ) ) {
                                                return false;
                                        }
                                } else if ( typeof val === 'number' ) {
index 38938ab..55ea7c9 100644 (file)
@@ -1,6 +1,10 @@
 /* See also jquery.makeCollapsible.js */
 .mw-collapsible-toggle {
        float: right;
+       -moz-user-select: none;
+       -webkit-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
 }
 
 /* collapse links in captions should be inline */
index 30be2bd..60c0afc 100644 (file)
@@ -15,8 +15,6 @@
  * @license GPL2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
  */
 ( function ( $, mw ) {
-       var lpx = 'jquery.makeCollapsible> ';
-
        /**
         * Handler for a click on a collapsible toggler.
         *
                        } else {
                                collapsibleId = $collapsible.attr( 'id' ) || '';
                                if ( collapsibleId.indexOf( 'mw-customcollapsible-' ) === 0 ) {
-                                       mw.log( lpx + 'Found custom collapsible: #' + collapsibleId );
                                        $customTogglers = $( '.' + collapsibleId.replace( 'mw-customcollapsible', 'mw-customtoggle' ) );
-
-                                       // Double check that there is actually a customtoggle link
-                                       if ( !$customTogglers.length ) {
-                                               mw.log( lpx + '#' + collapsibleId + ': Missing toggler!' );
-                                       }
                                }
                        }
 
-                       // Bind the togglers
+                       // Add event handlers to custom togglers or create our own ones
                        if ( $customTogglers && $customTogglers.length ) {
                                actionHandler = function ( e, opts ) {
                                        var defaultOpts = {};
index abada19..5020b37 100644 (file)
  *
  * This will automatically use the HTML5 placeholder attribute if supported, or emulate this behavior if not.
  *
+ * This is a fork from Mathias Bynens' jquery.placeholder as of this commit
+ * https://github.com/mathiasbynens/jquery-placeholder/blob/47f05d400e2dd16b59d144141a2cf54a9a77c502/jquery.placeholder.js
+ *
+ * @author Mathias Bynens <http://mathiasbynens.be/>
  * @author Trevor Parscal <tparscal@wikimedia.org>, 2012
  * @author Krinkle <krinklemail@gmail.com>, 2012
- * @version 0.2.0
+ * @author Alex Ivanov <alexivanov97@gmail.com>, 2013
+ * @version 2.1.0
  * @license MIT
  */
-( function ( $ ) {
+(function($) {
 
-       $.fn.placeholder = function ( text ) {
-               var hasArg = arguments.length;
+       var isInputSupported = 'placeholder' in document.createElement('input'),
+               isTextareaSupported = 'placeholder' in document.createElement('textarea'),
+               prototype = $.fn,
+               valHooks = $.valHooks,
+               propHooks = $.propHooks,
+               hooks,
+               placeholder;
 
-               return this.each( function () {
-                       var placeholder, $input;
+       if (isInputSupported && isTextareaSupported) {
 
-                       if ( hasArg ) {
-                               this.setAttribute( 'placeholder', text );
-                       }
+               placeholder = prototype.placeholder = function(text) {
+                       var hasArgs = arguments.length;
 
-                       // If the HTML5 placeholder attribute is supported, use it
-                       if ( this.placeholder && 'placeholder' in document.createElement( this.tagName ) ) {
-                               return;
+                       if( hasArgs ) {
+                               changePlaceholder.call(this, text);
                        }
 
-                       placeholder = hasArg ? text : this.getAttribute( 'placeholder' );
-                       $input = $(this);
+                       return this;
+               };
+
+               placeholder.input = placeholder.textarea = true;
+
+       } else {
 
-                       // Show initially, if empty
-                       if ( this.value === '' || this.value === placeholder ) {
-                               $input.addClass( 'placeholder' ).val( placeholder );
+               placeholder = prototype.placeholder = function(text) {
+                       var $this = this,
+                               hasArgs = arguments.length;
+
+                       if(hasArgs) {
+                               changePlaceholder.call(this, text);
                        }
 
-                       $input
-                               // Show on blur if empty
-                               .blur( function () {
-                                       if ( this.value === '' ) {
-                                               this.value = placeholder;
-                                               $input.addClass( 'placeholder' );
-                                       }
-                               } )
-
-                               // Hide on focus
-                               // Also listen for other events in case $input was
-                               // already focused when the events were bound
-                               .on( 'focus drop keydown paste', function ( e ) {
-                                       if ( $input.hasClass( 'placeholder' ) ) {
-                                               if ( e.type === 'drop' && e.originalEvent.dataTransfer ) {
-                                                       // Support for drag&drop. Instead of inserting the dropped
-                                                       // text somewhere in the middle of the placeholder string,
-                                                       // we want to set the contents of the search box to the
-                                                       // dropped text.
-
-                                                       // IE wants getData( 'text' ) but Firefox wants getData( 'text/plain' )
-                                                       // Firefox fails gracefully with an empty string, IE barfs with an error
-                                                       try {
-                                                               // Try the Firefox way
-                                                               this.value = e.originalEvent.dataTransfer.getData( 'text/plain' );
-                                                       } catch ( exception ) {
-                                                               // Got an exception, so use the IE way
-                                                               this.value = e.originalEvent.dataTransfer.getData( 'text' );
-                                                       }
-
-                                                       // On Firefox, drop fires after the dropped text has been inserted,
-                                                       // but on IE it fires before. If we don't prevent the default action,
-                                                       // IE will insert the dropped text twice.
-                                                       e.preventDefault();
-                                               } else {
-                                                       this.value = '';
-                                               }
-                                               $input.removeClass( 'placeholder' );
+
+                       $this
+                               .filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
+                               .filter(function() {
+                                       return !$(this).data('placeholder-enabled');
+                               })
+                               .bind({
+                                       'focus.placeholder drop.placeholder': clearPlaceholder,
+                                       'blur.placeholder': setPlaceholder
+                               })
+                               .data('placeholder-enabled', true)
+                               .trigger('blur.placeholder');
+                       return $this;
+               };
+
+               placeholder.input = isInputSupported;
+               placeholder.textarea = isTextareaSupported;
+
+               hooks = {
+                       'get': function(element) {
+                               var $element = $(element),
+                                       $passwordInput = $element.data('placeholder-password');
+                               if ($passwordInput) {
+                                       return $passwordInput[0].value;
+                               }
+
+                               return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
+                       },
+                       'set': function(element, value) {
+                               var $element = $(element),
+                                       $passwordInput = $element.data('placeholder-password');
+                               if ($passwordInput) {
+                                       $passwordInput[0].value = value;
+                                       return value;
+                               }
+
+                               if (!$element.data('placeholder-enabled')) {
+                                       element.value = value;
+                                       return value;
+                               }
+                               if (!value) {
+                                       element.value = value;
+                                       // Issue #56: Setting the placeholder causes problems if the element continues to have focus.
+                                       if (element !== safeActiveElement()) {
+                                               // We can't use `triggerHandler` here because of dummy text/password inputs :(
+                                               setPlaceholder.call(element);
                                        }
-                               } );
-
-                       // Blank on submit -- prevents submitting with unintended value
-                       if ( this.form ) {
-                               $( this.form ).submit( function () {
-                                       // $input.trigger( 'focus' ); would be problematic
-                                       // because it actually focuses $input, leading
-                                       // to nasty behavior in mobile browsers
-                                       if ( $input.hasClass( 'placeholder' ) ) {
-                                               $input
-                                                       .val( '' )
-                                                       .removeClass( 'placeholder' );
+                               } else if ($element.hasClass('placeholder')) {
+                                       if(!clearPlaceholder.call(element, true, value)) {
+                                               element.value = value;
                                        }
-                               });
+                               } else {
+                                       element.value = value;
+                               }
+                               // `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
+                               return $element;
                        }
+               };
+
+               if (!isInputSupported) {
+                       valHooks.input = hooks;
+                       propHooks.value = hooks;
+               }
+               if (!isTextareaSupported) {
+                       valHooks.textarea = hooks;
+                       propHooks.value = hooks;
+               }
+
+               $(function() {
+                       // Look for forms
+                       $(document).delegate('form', 'submit.placeholder', function() {
+                               // Clear the placeholder values so they don't get submitted
+                               var $inputs = $('.placeholder', this).each(clearPlaceholder);
+                               setTimeout(function() {
+                                       $inputs.each(setPlaceholder);
+                               }, 10);
+                       });
+               });
 
+               // Clear placeholder values upon page reload
+               $(window).bind('beforeunload.placeholder', function() {
+                       $('.placeholder').each(function() {
+                               this.value = '';
+                       });
                });
-       };
 
-}( jQuery ) );
+       }
+
+       function args(elem) {
+               // Return an object of element attributes
+               var newAttrs = {},
+                       rinlinejQuery = /^jQuery\d+$/;
+               $.each(elem.attributes, function(i, attr) {
+                       if (attr.specified && !rinlinejQuery.test(attr.name)) {
+                               newAttrs[attr.name] = attr.value;
+                       }
+               });
+               return newAttrs;
+       }
+
+       function clearPlaceholder(event, value) {
+               var input = this,
+                       $input = $(input);
+               if (input.value === $input.attr('placeholder') && $input.hasClass('placeholder')) {
+                       if ($input.data('placeholder-password')) {
+                               $input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
+                               // If `clearPlaceholder` was called from `$.valHooks.input.set`
+                               if (event === true) {
+                                       $input[0].value = value;
+                                       return value;
+                               }
+                               $input.focus();
+                       } else {
+                               input.value = '';
+                               $input.removeClass('placeholder');
+                               if(input === safeActiveElement()) {
+                                       input.select();
+                               }
+                       }
+               }
+       }
+
+       function setPlaceholder() {
+               var $replacement,
+                       input = this,
+                       $input = $(input),
+                       id = this.id;
+               if (!input.value) {
+                       if (input.type === 'password') {
+                               if (!$input.data('placeholder-textinput')) {
+                                       try {
+                                               $replacement = $input.clone().attr({ 'type': 'text' });
+                                       } catch(e) {
+                                               $replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
+                                       }
+                                       $replacement
+                                               .removeAttr('name')
+                                               .data({
+                                                       'placeholder-password': $input,
+                                                       'placeholder-id': id
+                                               })
+                                               .bind('focus.placeholder drop.placeholder', clearPlaceholder);
+                                       $input
+                                               .data({
+                                                       'placeholder-textinput': $replacement,
+                                                       'placeholder-id': id
+                                               })
+                                               .before($replacement);
+                               }
+                               $input = $input.removeAttr('id').hide().prev().attr('id', id).show();
+                               // Note: `$input[0] != input` now!
+                       }
+                       $input.addClass('placeholder');
+                       $input[0].value = $input.attr('placeholder');
+               } else {
+                       $input.removeClass('placeholder');
+               }
+       }
+
+       function safeActiveElement() {
+               // Avoid IE9 `document.activeElement` of death
+               // https://github.com/mathiasbynens/jquery-placeholder/pull/99
+               try {
+                       return document.activeElement;
+               } catch (err) {}
+       }
+
+       function changePlaceholder(text) {
+               var hasArgs = arguments.length,
+                       $input = this;
+               if(hasArgs) {
+                       if($input.attr('placeholder') !== text) {
+                               $input.prop('placeholder', text);
+                               if($input.hasClass('placeholder')) {
+                                       $input[0].value = text;
+                               }
+                       }
+               }
+       }
+
+}(jQuery));
index 1cd6ff0..073fb3d 100644 (file)
                 *
                 * @static
                 * @inheritable
-                * @param {Object|string} [opts] Options. An object with the following keys:
-                *
-                * - id: If given, spinner will be given an id of "mw-spinner-{id}"
-                * - size: 'small' (default) or 'large' for a 20-pixel or 32-pixel spinner
-                * - type: 'inline' (default) or 'block'. Inline creates an inline-block with width and
-                *   height equal to spinner size. Block is a block-level element with width 100%, height
-                *   equal to spinner size.
-                *
-                * If a string is given, it will be treated as the value of the 'id' option.
-                *
+                * @param {Object|string} [opts] Options. If a string is given, it will be treated as the value
+                *   of the `id` option. If an object is given, the possible option keys are:
+                * @param {string} [opts.id] If given, spinner will be given an id of "mw-spinner-{id}".
+                * @param {string} [opts.size='small'] 'small' or 'large' for a 20-pixel or 32-pixel spinner.
+                * @param {string} [opts.type='inline'] 'inline' or 'block'. Inline creates an inline-block with
+                *   width and height equal to spinner size. Block is a block-level element with width 100%,
+                *   height equal to spinner size.
                 * @return {jQuery}
                 */
                createSpinner: function ( opts ) {
index 28e2afc..3774d0c 100644 (file)
@@ -61,6 +61,16 @@ $.suggestions = {
                }
        },
 
+       /**
+        * Hide the element with suggestions and clean up some state.
+        */
+       hide: function ( context ) {
+               // Remove any highlights, including on "special" items
+               context.data.$container.find( '.suggestions-result-current' ).removeClass( 'suggestions-result-current' );
+               // Hide the container
+               context.data.$container.hide();
+       },
+
        /**
         * Restore the text the user originally typed in the textbox, before it
         * was overwritten by highlight(). This restores the value the currently
@@ -83,7 +93,7 @@ $.suggestions = {
                // if the textbox is empty then clear the result div, but leave other settings intouched
                function maybeFetch() {
                        if ( context.data.$textbox.val().length === 0 ) {
-                               context.data.$container.hide();
+                               $.suggestions.hide( context );
                                context.data.prevText = '';
                        } else if (
                                context.data.$textbox.val() !== context.data.prevText ||
@@ -147,7 +157,7 @@ $.suggestions = {
                                if ( context.data !== undefined ) {
                                        if ( context.data.$textbox.val().length === 0 ) {
                                                // Hide the div when no suggestion exist
-                                               context.data.$container.hide();
+                                               $.suggestions.hide( context );
                                        } else {
                                                // Rebuild the suggestions list
                                                context.data.$container.show();
@@ -399,7 +409,7 @@ $.suggestions = {
                                break;
                        // Escape
                        case 27:
-                               context.data.$container.hide();
+                               $.suggestions.hide( context );
                                $.suggestions.restore( context );
                                $.suggestions.cancel( context );
                                context.data.$textbox.trigger( 'change' );
@@ -407,9 +417,9 @@ $.suggestions = {
                                break;
                        // Enter
                        case 13:
-                               context.data.$container.hide();
                                preventDefault = wasVisible;
                                selected = context.data.$container.find( '.suggestions-result-current' );
+                               $.suggestions.hide( context );
                                if ( selected.length === 0 || context.data.selectedWithMouse ) {
                                        // if nothing is selected OR if something was selected with the mouse,
                                        // cancel any current requests and submit the form
@@ -530,7 +540,7 @@ $.fn.suggestions = function () {
                                                        // do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click)
                                                        if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) {
                                                                $.suggestions.highlight( context, $result, true );
-                                                               context.data.$container.hide();
+                                                               $.suggestions.hide( context );
                                                                if ( typeof context.config.result.select === 'function' ) {
                                                                        context.config.result.select.call( $result, context.data.$textbox );
                                                                }
@@ -557,7 +567,7 @@ $.fn.suggestions = function () {
                                                        }
                                                        // do not interfere with non-left clicks or if modifier keys are pressed (e.g. ctrl-click)
                                                        if ( !( e.which !== 1 || e.altKey || e.ctrlKey || e.shiftKey || e.metaKey ) ) {
-                                                               context.data.$container.hide();
+                                                               $.suggestions.hide( context );
                                                                if ( typeof context.config.special.select === 'function' ) {
                                                                        context.config.special.select.call( $special, context.data.$textbox );
                                                                }
@@ -617,7 +627,7 @@ $.fn.suggestions = function () {
                                        if ( context.data.mouseDownOn.length > 0 ) {
                                                return;
                                        }
-                                       context.data.$container.hide();
+                                       $.suggestions.hide( context );
                                        $.suggestions.cancel( context );
                                } );
                }
index c5cd61e..43642d0 100644 (file)
@@ -29,6 +29,7 @@
                // update from from the ajax-loaded preview page.
                copySelectors = [
                        // Main
+                       '#firstHeading',
                        '#wikiPreview',
                        '#wikiDiff',
                        '#catlinks',
@@ -47,7 +48,7 @@
                $spinner = $.createSpinner( {
                        size: 'large',
                        type: 'block'
-               });
+               } );
                $wikiPreview.before( $spinner );
                $spinner.css( {
                        marginTop: $spinner.height()
                // TODO: This should use the action=parse API instead of loading the entire page,
                // although that requires figuring out how to convert that raw data into proper HTML.
                $previewDataHolder.load( targetUrl + ' ' + copySelectors.join( ',' ), postData, function () {
-                       var i, $from;
+                       var i, $from, $next, $parent;
 
                        // Copy the contents of the specified elements from the loaded page to the real page.
                        // Also copy their class attributes.
                        for ( i = 0; i < copySelectors.length; i++ ) {
                                $from = $previewDataHolder.find( copySelectors[i] );
 
-                               $( copySelectors[i] )
-                                       .empty()
-                                       .append( $from.contents() )
-                                       .attr( 'class', $from.attr( 'class' ) );
+                               if ( copySelectors[i] === '#wikiPreview' ) {
+                                       $next = $wikiPreview.next();
+                                       // If there is no next node, use parent instead.
+                                       // Only query parent if needed, false otherwise.
+                                       $parent = !$next.length && $wikiPreview.parent();
+
+                                       $wikiPreview
+                                               .detach()
+                                               .empty()
+                                               .append( $from.contents() )
+                                               .attr( 'class', $from.attr( 'class' ) );
+
+                                       mw.hook( 'wikipage.content' ).fire( $wikiPreview );
+
+                                       // Reattach
+                                       if ( $parent ) {
+                                               $parent.append( $wikiPreview );
+                                       } else {
+                                               $next.before( $wikiPreview );
+                                       }
+
+                               } else {
+                                       $( copySelectors[i] )
+                                               .empty()
+                                               .append( $from.contents() )
+                                               .attr( 'class', $from.attr( 'class' ) );
+                               }
                        }
 
                        // Deprecated: Use mw.hook instead
                        $( mw ).trigger( 'LivePreviewDone', [copySelectors] );
 
-                       mw.hook( 'wikipage.content' ).fire( $wikiPreview );
-
                        $spinner.remove();
                        $copyElements.animate( {
                                opacity: 1
index ce3c674..9b27e24 100644 (file)
@@ -3,6 +3,10 @@
  *
  * Add an expand/collapse link and collapse by default if set to
  * (with JS disabled, user will see all items)
+ *
+ * See also:
+ * - ImagePage.php#makeMetadataTable (creates the HTML)
+ * - skins/common/shared.css (hides tr.collapsable inside table.collapsed)
  */
 ( function ( mw, $ ) {
        $( function () {
@@ -12,7 +16,7 @@
                        $table = $( '#mw_metadata' ),
                        $tbody = $table.find( 'tbody' );
 
-               if ( !$tbody.length ) {
+               if ( !$tbody.length || !$tbody.find( '.collapsable' ).length ) {
                        return;
                }
 
diff --git a/resources/mediawiki.action/mediawiki.action.view.redirectToFragment.js b/resources/mediawiki.action/mediawiki.action.view.redirectToFragment.js
new file mode 100644 (file)
index 0000000..1e2d624
--- /dev/null
@@ -0,0 +1,35 @@
+/**
+ * JavaScript to scroll the page to an id, when a redirect with fragment is viewed.
+ */
+( function ( mw, $ ) {
+       var profile = $.client.profile(),
+               fragment = mw.config.get( 'wgRedirectToFragment' );
+
+       if ( fragment === null ) {
+               // nothing to do
+               return;
+       }
+
+       if ( profile.layout === 'webkit' && profile.layoutVersion < 420 ) {
+               // Released Safari w/ WebKit 418.9.1 messes up horribly
+               // Nightlies of 420+ are ok
+               return;
+       }
+       if ( !window.location.hash ) {
+               window.location.hash = fragment;
+
+               // Mozilla needs to wait until after load, otherwise the window doesn't
+               // scroll.  See <https://bugzilla.mozilla.org/show_bug.cgi?id=516293>.
+               // There's no obvious way to detect this programmatically, so we use
+               // version-testing.  If Firefox fixes the bug, they'll jump twice, but
+               // better twice than not at all, so make the fix hit future versions as
+               // well.
+               if ( profile.layout === 'gecko' ) {
+                       $( function () {
+                               if ( window.location.hash === fragment ) {
+                                       window.location.hash = fragment;
+                               }
+                       } );
+               }
+       }
+}( mediaWiki, jQuery ) );
index b2c9c08..69c36cc 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*!
  * Lower Sorbian (Dolnoserbski) language functions
  */
 
index 61c6c10..2410091 100644 (file)
@@ -1,6 +1,6 @@
-/**
- *  Finnish (Suomi) language functions
- *  @author Santhosh Thottingal
+/*!
+ * Finnish (Suomi) language functions
+ * @author Santhosh Thottingal
  */
 
 mediaWiki.language.convertGrammar = function ( word, form ) {
index 77dca75..2d6b733 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*!
  * Upper Sorbian (Hornjoserbsce) language functions
  */
 
index 23b0c12..d72a1c0 100644 (file)
@@ -1,6 +1,6 @@
-/**
- *  Hungarian language functions
- *  @author Santhosh Thottingal
+/*!
+ * Hungarian language functions
+ * @author Santhosh Thottingal
  */
 
 mediaWiki.language.convertGrammar = function ( word, form ) {
index 2711024..7fc171d 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*!
  * Latin (lingua Latina) language functions
  * @author Santhosh Thottingal
  */
index 682b390..4b50834 100644 (file)
@@ -1,9 +1,8 @@
-/**
+/*!
  * Ossetian (Ирон) language functions
  * @author Santhosh Thottingal
  */
 
-
 mediaWiki.language.convertGrammar = function ( word, form ) {
        var grammarForms = mediaWiki.language.getData( 'os', 'grammarForms' ),
                // Ending for allative case
index 5e56b66..9b63382 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*!
  * Ukrainian (Українська) language functions
  */
 
index c3023cd..f6fb8f1 100644 (file)
@@ -1,15 +1,20 @@
-/**
- *  CLDR related utility methods.
- */
 ( function ( mw ) {
        'use strict';
 
-       var cldr = {
+       /**
+        * Namespace for CLDR-related utility methods.
+        *
+        * @class
+        * @singleton
+        */
+       mw.cldr = {
                /**
-                * For the number, get the plural for index
-                * In case none of the rules passed, we return pluralRules.length
-                * That means it is the "other" form.
-                * @param number
+                * Get the plural form index for the number.
+                *
+                * In case none of the rules passed, we return `pluralRules.length` -
+                * that means it is the "other" form.
+                *
+                * @param {number} number
                 * @param {Array} pluralRules
                 * @return {number} plural form index
                 */
@@ -24,6 +29,4 @@
                }
        };
 
-       mw.cldr = cldr;
-
 }( mediaWiki ) );
index 937b89b..fd77025 100644 (file)
@@ -1,38 +1,57 @@
-/**
- * Base language object with methods for storing and getting
- * language data.
- */
 ( function ( mw ) {
-
-       var language = {
+       /**
+        * Base language object with methods related to language support, attempting to mirror some of the
+        * functionality of the Language class in MediaWiki:
+        *
+        *   - storing and retrieving language data
+        *   - transforming message syntax (`{{PLURAL:}}`, `{{GRAMMAR:}}`, `{{GENDER:}}`)
+        *   - formatting numbers
+        *
+        * @class
+        * @singleton
+        */
+       mw.language = {
                /**
-                * @var data {Object} Language related data (keyed by language,
-                * contains instances of mw.Map).
-                * @example Set data
-                * <code>
+                * Language-related data (keyed by language, contains instances of mw.Map). Loaded dynamically
+                * (see ResourceLoaderLanguageDataModule in PHP docs, aka mediawiki.language.data module).
+                *
+                * To set data:
+                *
                 *     // Override, extend or create the language data object of 'nl'
                 *     mw.language.setData( 'nl', 'myKey', 'My value' );
                 *
                 *     // Set multiple values at once
-                *     mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } );
-                * </code>
-                * @example Get GrammarForms data for language 'nl':
-                * <code>
+                *     mw.language.setData( 'nl', { foo: 'X', bar: 'Y' } );
+                *
+                * To get GrammarForms data for language 'nl':
+                *
                 *     var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
-                * </code>
+                *
+                * Possible data keys:
+                *
+                *  - `digitTransformTable`
+                *  - `separatorTransformTable`
+                *  - `grammarForms`
+                *  - `pluralRules`
+                *  - `digitGroupingPattern`
+                *
+                * @property
                 */
                data: {},
 
                /**
-                * Convenience method for retreiving language data by language code and data key,
-                * covering for the potential inexistance of a data object for this langiage.
-                * @param langCode {String}
-                * @param dataKey {String}
-                * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
-                  the specified langCode).
+                * Convenience method for retrieving language data.
+                *
+                * Structured by language code and data key, covering for the potential inexistence of a
+                * data object for this language.
+                *
+                * @param {string} langCode
+                * @param {string} dataKey
+                * @return {Mixed} Value stored in the mw.Map (or `undefined` if there is no map for the specified
+                *  langCode).
                 */
                getData: function ( langCode, dataKey ) {
-                       var langData = language.data;
+                       var langData = mw.language.data;
                        if ( langData && langData[langCode] instanceof mw.Map ) {
                                return langData[langCode].get( dataKey );
                        }
                },
 
                /**
-                * Convenience method for setting language data by language code and data key.
+                * Convenience method for setting language data.
+                *
                 * Creates the data mw.Map if there isn't one for the specified language already.
                 *
-                * @param langCode {String}
-                * @param dataKey {String|Object} Key or object of key/values.
-                * @param value {mixed} Value for dataKey, ignored if dataKey is an object.
+                * @param {string} langCode
+                * @param {string|Object} dataKey Key or object of key/values.
+                * @param {Mixed} value Value for dataKey, ignored if dataKey is an object.
                 */
                setData: function ( langCode, dataKey, value ) {
-                       var langData = language.data;
+                       var langData = mw.language.data;
                        if ( !( langData[langCode] instanceof mw.Map ) ) {
                                langData[langCode] = new mw.Map();
                        }
@@ -56,6 +76,4 @@
                }
        };
 
-       mw.language = language;
-
 }( mediaWiki ) );
index 631d13d..87018f6 100644 (file)
@@ -1,22 +1,21 @@
-/**
- * Localized Language support attempts to mirror some of the functionality of
- * Language.php in MediaWiki.
- * This adds methods for transforming message text.
+/*
+ * Methods for transforming message syntax.
  */
 ( function ( mw, $ ) {
 
-var language = {
+/**
+ * @class mw.language
+ */
+$.extend( mw.language, {
 
        /**
         * Process the PLURAL template substitution
         *
-        * @param {object} template Template object
-        * @format template
-        *  {
-        *      'title': [title of template],
-        *      'parameters': [template parameters]
-        *  }
-        * @example {{Template:title|params}}
+        * @private
+        * @param {Object} template Template object
+        * @param {string} template.title
+        * @param {Array} template.parameters
+        * @return {string}
         */
        procPLURAL: function ( template ) {
                if ( template.title && template.parameters && mw.language.convertPlural ) {
@@ -39,9 +38,9 @@ var language = {
        /**
         * Plural form transformations, needed for some languages.
         *
-        * @param count integer Non-localized quantifier
-        * @param forms array List of plural forms
-        * @return string Correct form for quantifier in this language
+        * @param {number} count Non-localized quantifier
+        * @param {Array} forms List of plural forms
+        * @return {string} Correct form for quantifier in this language
         */
        convertPlural: function ( count, forms ) {
                var pluralRules,
@@ -73,6 +72,10 @@ var language = {
                        return form;
                } );
 
+               if ( forms.length === 0 ) {
+                       return '';
+               }
+
                pluralRules = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'pluralRules' );
                if ( !pluralRules ) {
                        // default fallback.
@@ -86,9 +89,10 @@ var language = {
        /**
         * Pads an array to a specific length by copying the last one element.
         *
-        * @param forms array Number of forms given to convertPlural
-        * @param count integer Number of forms required
-        * @return array Padded array of forms
+        * @private
+        * @param {Array} forms Number of forms given to convertPlural
+        * @param {number} count Number of forms required
+        * @return {Array} Padded array of forms
         */
        preConvertPlural: function ( forms, count ) {
                while ( forms.length < count ) {
@@ -99,14 +103,14 @@ var language = {
 
        /**
         * Provides an alternative text depending on specified gender.
-        * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}.
+        *
+        * Usage in message text: `{{gender:[gender|user object]|masculine|feminine|neutral}}`.
         * If second or third parameter are not specified, masculine is used.
         *
         * These details may be overriden per language.
         *
-        * @param gender string male, female, or anything else for neutral.
-        * @param forms array List of gender forms
-        *
+        * @param {string} gender 'male', 'female', or anything else for neutral.
+        * @param {Array} forms List of gender forms
         * @return string
         */
        gender: function ( gender, forms ) {
@@ -125,13 +129,14 @@ var language = {
 
        /**
         * Grammatical transformations, needed for inflected languages.
-        * Invoked by putting {{grammar:form|word}} in a message.
-        * The rules can be defined in $wgGrammarForms global or grammar
-        * forms can be computed dynamically by overriding this method per language
+        * Invoked by putting `{{grammar:form|word}}` in a message.
         *
-        * @param word {String}
-        * @param form {String}
-        * @return {String}
+        * The rules can be defined in $wgGrammarForms global or computed
+        * dynamically by overriding this method per language.
+        *
+        * @param {string} word
+        * @param {string} form
+        * @return {string}
         */
        convertGrammar: function ( word, form ) {
                var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' );
@@ -141,8 +146,6 @@ var language = {
                return word;
        }
 
-};
-
-$.extend( mw.language, language );
+} );
 
 }( mediaWiki, jQuery ) );
index 3d4b7ee..5a1a5cb 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * Transfer of month names from messages into mw.language.
  *
  * Loading this module also ensures the availability of appropriate messages via mw.msg.
@@ -31,6 +31,7 @@
         * Information about month names in current UI language.
         *
         * Object keys:
+        *
         * - `names`: array of month names (in nominative case in languages which have the distinction),
         *   zero-indexed
         * - `genitive`: array of month names in genitive case, zero-indexed
@@ -39,6 +40,7 @@
         *   for appropriate messages which can be passed to mw.msg.
         *
         * @property
+        * @member mw.language
         */
        mw.language.months = {
                keys: {
index fada6ce..4282a3d 100644 (file)
@@ -1,23 +1,28 @@
 /*
- * Number related utilities for mediawiki.language
+ * Number-related utilities for mediawiki.language.
  */
 ( function ( mw, $ ) {
+       /**
+        * @class mw.language
+        */
 
        /**
         * Pad a string to guarantee that it is at least `size` length by
         * filling with the character `ch` at either the start or end of the
         * string. Pads at the start, by default.
-        * example:
-        * Fill the string to length 10 with '+' characters on the right. Yields 'blah++++++'.
-        *  pad('blah', 10, '+', true);
         *
+        * Example: Fill the string to length 10 with '+' characters on the right.
+        *
+        *     pad('blah', 10, '+', true); // => 'blah++++++'
+        *
+        * @private
         * @param {string} text The string to pad
-        * @param {Number} size To provide padding
-        * @param {string} ch Character to pad, defaults to '0'
-        * @param {Boolean} end Adds padding at the end if true, otherwise pads at start
+        * @param {number} size The length to pad to
+        * @param {string} [ch='0'] Character to pad with
+        * @param {boolean} [end=false] Adds padding at the end if true, otherwise pads at start
         * @return {string}
         */
-       function pad ( text, size, ch, end ) {
+       function pad( text, size, ch, end ) {
                if ( !ch ) {
                        ch = '0';
                }
        }
 
        /**
-        * Efficiently replicate a string n times.
+        * Efficiently replicate a string `n` times.
         *
+        * @private
         * @param {string} str The string to replicate
-        * @param {Number} num Number of times to replicate the string
+        * @param {number} num Number of times to replicate the string
         * @return {string}
         */
-       function replicate ( str, num ) {
+       function replicate( str, num ) {
                if ( num <= 0 || !str ) {
                        return '';
                }
         * Adapted from dojo/number library with thanks
         * http://dojotoolkit.org/reference-guide/1.8/dojo/number.html
         *
-        * @param {Number} value the number to be formatted, ignores sign
+        * @private
+        * @param {number} value the number to be formatted, ignores sign
         * @param {string} pattern the number portion of a pattern (e.g. `#,##0.00`)
-        * @param {string} options.decimalThe decimal separator
-        * @param {string} options.group The group separator
-        *
+        * @param {Object} [options] If provided, both option keys must be present:
+        * @param {string} options.decimal The decimal separator. Defaults to: `'.'`.
+        * @param {string} options.group The group separator. Defaults to: `','`.
         * @return {string}
         */
        function commafyNumber( value, pattern, options ) {
        $.extend( mw.language, {
 
                /**
-                * Converts a number using digitTransformTable.
+                * Converts a number using #getDigitTransformTable.
                 *
-                * @param {Number} num Value to be converted
-                * @param {boolean} integer Convert the return value to an integer
-                * @return {Number|string} Formatted number
+                * @param {number} num Value to be converted
+                * @param {boolean} [integer=false] Whether to convert the return value to an integer
+                * @return {number|string} Formatted number
                 */
                convertNumber: function ( num, integer ) {
                        var i, tmp, transformTable, numberString, convertedNumber, pattern;
                        return integer ? parseInt( convertedNumber, 10 ) : convertedNumber;
                },
 
+               /**
+                * Get the  digit transform table for current UI language.
+                * @return {Object|Array}
+                */
                getDigitTransformTable: function () {
                        return mw.language.getData( mw.config.get( 'wgUserLanguage' ),
                                'digitTransformTable' ) || [];
                },
 
+               /**
+                * Get the  separator transform table for current UI language.
+                * @return {Object|Array}
+                */
                getSeparatorTransformTable: function () {
                        return mw.language.getData( mw.config.get( 'wgUserLanguage' ),
                                'separatorTransformTable' ) || [];
                },
 
                /**
-                * Apply pattern to format value as a string using as per
-                * unicode.org TR35 - http://www.unicode.org/reports/tr35/#Number_Format_Patterns.
+                * Apply pattern to format value as a string.
+                *
+                * Using patterns from [Unicode TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns).
                 *
-                * @param {Number} value
+                * @param {number} value
                 * @param {string} pattern Pattern string as described by Unicode TR35
-                * @throws Error
-                * @returns {String}
+                * @throws {Error} If unable to find a number expression in `pattern`.
+                * @return {string}
                 */
                commafy: function ( value, pattern ) {
                        var numberPattern,
index 19a715b..c55c25c 100644 (file)
@@ -40,7 +40,5 @@
 
 .transition(@string) {
        -webkit-transition: @string;
-       -moz-transition: @string;
-       -o-transition: @string;
        transition: @string;
 }
index 441bc91..3def37c 100644 (file)
@@ -1,7 +1,7 @@
-/* This is cldrpluralparser 1.0, ported to MediaWiki ResourceLoader */
+/* This is CLDRPluralRuleParser v1.1, ported to MediaWiki ResourceLoader */
 
 /**
-* cldrpluralparser.js
+* CLDRPluralRuleParser.js
 * A parser engine for CLDR plural rules.
 *
 * Copyright 2012 GPLV3+, Santhosh Thottingal
 * @author Amir Aharoni
 */
 
+( function ( mw ) {
 /**
  * Evaluates a plural rule in CLDR syntax for a number
- * @param rule
- * @param number
- * @return true|false|null
+ * @param {string} rule
+ * @param {integer} number
+ * @return {boolean} true if evaluation passed, false if evaluation failed.
  */
-( function( mw ) {
 
 function pluralRuleParser(rule, number) {
        /*
        Syntax: see http://unicode.org/reports/tr35/#Language_Plural_Rules
        -----------------------------------------------------------------
-
        condition     = and_condition ('or' and_condition)*
+               ('@integer' samples)?
+               ('@decimal' samples)?
        and_condition = relation ('and' relation)*
-       relation      = is_relation | in_relation | within_relation | 'n' <EOL>
+       relation      = is_relation | in_relation | within_relation
        is_relation   = expr 'is' ('not')? value
-       in_relation   = expr ('not')? 'in' range_list
+       in_relation   = expr (('not')? 'in' | '=' | '!=') range_list
        within_relation = expr ('not')? 'within' range_list
-       expr          = 'n' ('mod' value)?
+       expr          = operand (('mod' | '%') value)?
+       operand       = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
        range_list    = (range | value) (',' range_list)*
        value         = digit+
        digit         = 0|1|2|3|4|5|6|7|8|9
        range         = value'..'value
-
+       samples       = sampleRange (',' sampleRange)* (',' ('…'|'...'))?
+       sampleRange   = decimalValue '~' decimalValue
+       decimalValue  = value ('.' value)?
        */
+
+       // we don't evaluate the samples section of the rule. Ignore it.
+       rule = rule.split('@')[0].trim();
+
+       if (!rule.length) {
+               // empty rule or 'other' rule.
+               return true;
+       }
        // Indicates current position in the rule as we parse through it.
        // Shared among all parsing functions below.
-       var pos = 0;
-
-       var whitespace = makeRegexParser(/^\s+/);
-       var digits = makeRegexParser(/^\d+/);
-
-       var _n_ = makeStringParser('n');
-       var _is_ = makeStringParser('is');
-       var _mod_ = makeStringParser('mod');
-       var _not_ = makeStringParser('not');
-       var _in_ = makeStringParser('in');
-       var _within_ = makeStringParser('within');
-       var _range_ = makeStringParser('..');
-       var _comma_ = makeStringParser(',');
-       var _or_ = makeStringParser('or');
-       var _and_ = makeStringParser('and');
+       var pos = 0,
+               operand,
+               expression,
+               relation,
+               result,
+               whitespace = makeRegexParser(/^\s+/),
+               value = makeRegexParser(/^\d+/),
+               _n_ = makeStringParser('n'),
+               _i_ = makeStringParser('i'),
+               _f_ = makeStringParser('f'),
+               _t_ = makeStringParser('t'),
+               _v_ = makeStringParser('v'),
+               _w_ = makeStringParser('w'),
+               _is_ = makeStringParser('is'),
+               _isnot_ = makeStringParser('is not'),
+               _isnot_sign_ = makeStringParser('!='),
+               _equal_ = makeStringParser('='),
+               _mod_ = makeStringParser('mod'),
+               _percent_ = makeStringParser('%'),
+               _not_ = makeStringParser('not'),
+               _in_ = makeStringParser('in'),
+               _within_ = makeStringParser('within'),
+               _range_ = makeStringParser('..'),
+               _comma_ = makeStringParser(','),
+               _or_ = makeStringParser('or'),
+               _and_ = makeStringParser('and');
 
        function debug() {
-               /* console.log.apply(console, arguments);*/
+               // console.log.apply(console, arguments);
        }
 
        debug('pluralRuleParser', rule, number);
 
        // Try parsers until one works, if none work return null
+
        function choice(parserSyntax) {
-               return function () {
+               return function() {
                        for (var i = 0; i < parserSyntax.length; i++) {
                                var result = parserSyntax[i]();
                                if (result !== null) {
@@ -79,6 +103,7 @@ function pluralRuleParser(rule, number) {
        // Try several parserSyntax-es in a row.
        // All must succeed; otherwise, return null.
        // This is the only eager one.
+
        function sequence(parserSyntax) {
                var originalPos = pos;
                var result = [];
@@ -95,8 +120,9 @@ function pluralRuleParser(rule, number) {
 
        // Run the same parser over and over until it fails.
        // Must succeed a minimum of n times; otherwise, return null.
+
        function nOrMore(n, p) {
-               return function () {
+               return function() {
                        var originalPos = pos;
                        var result = [];
                        var parsed = p();
@@ -113,21 +139,21 @@ function pluralRuleParser(rule, number) {
        }
 
        // Helpers -- just make parserSyntax out of simpler JS builtin types
-
        function makeStringParser(s) {
                var len = s.length;
-               return function () {
+               return function() {
                        var result = null;
                        if (rule.substr(pos, len) === s) {
                                result = s;
                                pos += len;
                        }
+
                        return result;
                };
        }
 
        function makeRegexParser(regex) {
-               return function () {
+               return function() {
                        var matches = rule.substr(pos).match(regex);
                        if (matches === null) {
                                return null;
@@ -137,62 +163,166 @@ function pluralRuleParser(rule, number) {
                };
        }
 
+       /*
+        * integer digits of n.
+        */
+       function i() {
+               var result = _i_();
+               if (result === null) {
+                       debug(' -- failed i', parseInt(number, 10));
+                       return result;
+               }
+               result = parseInt(number, 10);
+               debug(' -- passed i ', result);
+               return result;
+       }
+
+       /*
+        * absolute value of the source number (integer and decimals).
+        */
        function n() {
                var result = _n_();
                if (result === null) {
-                       debug(" -- failed n");
+                       debug(' -- failed n ', number);
                        return result;
                }
-               result = parseInt(number, 10);
-               debug(" -- passed n ", result);
+               result = parseFloat(number, 10);
+               debug(' -- passed n ', result);
+               return result;
+       }
+
+       /*
+        * visible fractional digits in n, with trailing zeros.
+        */
+       function f() {
+               var result = _f_();
+               if (result === null) {
+                       debug(' -- failed f ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1] || 0;
+               debug(' -- passed f ', result);
+               return result;
+       }
+
+       /*
+        * visible fractional digits in n, without trailing zeros.
+        */
+       function t() {
+               var result = _t_();
+               if (result === null) {
+                       debug(' -- failed t ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1].replace(/0$/, '') || 0;
+               debug(' -- passed t ', result);
+               return result;
+       }
+
+       /*
+        * number of visible fraction digits in n, with trailing zeros.
+        */
+       function v() {
+               var result = _v_();
+               if (result === null) {
+                       debug(' -- failed v ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1].length || 0;
+               debug(' -- passed v ', result);
+               return result;
+       }
+
+       /*
+        * number of visible fraction digits in n, without trailing zeros.
+        */
+       function w() {
+               var result = _w_();
+               if (result === null) {
+                       debug(' -- failed w ', number);
+                       return result;
+               }
+               result = (number + '.').split('.')[1].replace(/0$/, '').length || 0;
+               debug(' -- passed w ', result);
                return result;
        }
 
-       var expression = choice([mod, n]);
+       // operand       = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
+       operand = choice([n, i, f, t, v, w]);
+
+       // expr          = operand (('mod' | '%') value)?
+       expression = choice([mod, operand]);
 
        function mod() {
-               var result = sequence([n, whitespace, _mod_, whitespace, digits]);
+               var result = sequence([operand, whitespace, choice([_mod_, _percent_]), whitespace, value]);
                if (result === null) {
-                       debug(" -- failed mod");
+                       debug(' -- failed mod');
                        return null;
                }
-               debug(" -- passed mod");
+               debug(' -- passed ' + parseInt(result[0], 10) + ' ' + result[2] + ' ' + parseInt(result[4], 10));
                return parseInt(result[0], 10) % parseInt(result[4], 10);
        }
 
        function not() {
                var result = sequence([whitespace, _not_]);
                if (result === null) {
-                       debug(" -- failed not");
+                       debug(' -- failed not');
                        return null;
-               } else {
-                       return result[1];
                }
+
+               return result[1];
        }
 
+       // is_relation   = expr 'is' ('not')? value
        function is() {
-               var result = sequence([expression, whitespace, _is_, nOrMore(0, not), whitespace, digits]);
+               var result = sequence([expression, whitespace, choice([_is_]), whitespace, value]);
                if (result !== null) {
-                       debug(" -- passed is");
-                       if (result[3][0] === 'not') {
-                               return result[0] !== parseInt(result[5], 10);
-                       } else {
-                               return result[0] === parseInt(result[5], 10);
+                       debug(' -- passed is : ' + result[0] + ' == ' + parseInt(result[4], 10));
+                       return result[0] === parseInt(result[4], 10);
+               }
+               debug(' -- failed is');
+               return null;
+       }
+
+       // is_relation   = expr 'is' ('not')? value
+       function isnot() {
+               var result = sequence([expression, whitespace, choice([_isnot_, _isnot_sign_]), whitespace, value]);
+               if (result !== null) {
+                       debug(' -- passed isnot: ' + result[0] + ' != ' + parseInt(result[4], 10));
+                       return result[0] !== parseInt(result[4], 10);
+               }
+               debug(' -- failed isnot');
+               return null;
+       }
+
+       function not_in() {
+               var result = sequence([expression, whitespace, _isnot_sign_, whitespace, rangeList]);
+               if (result !== null) {
+                       debug(' -- passed not_in: ' + result[0] + ' != ' + result[4]);
+                       var range_list = result[4];
+                       for (var i = 0; i < range_list.length; i++) {
+                               if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
+                                       return false;
+                               }
                        }
+                       return true;
                }
-               debug(" -- failed is");
+               debug(' -- failed not_in');
                return null;
        }
 
+       // range_list    = (range | value) (',' range_list)*
        function rangeList() {
-               // range_list    = (range | value) (',' range_list)*
-               var result = sequence([choice([range, digits]), nOrMore(0, rangeTail)]);
+               var result = sequence([choice([range, value]), nOrMore(0, rangeTail)]);
                var resultList = [];
                if (result !== null) {
-                       resultList = resultList.concat(result[0], result[1][0]);
+                       resultList = resultList.concat(result[0]);
+                       if (result[1][0]) {
+                               resultList = resultList.concat(result[1][0]);
+                       }
                        return resultList;
                }
-               debug(" -- failed rangeList");
+               debug(' -- failed rangeList');
                return null;
        }
 
@@ -202,111 +332,141 @@ function pluralRuleParser(rule, number) {
                if (result !== null) {
                        return result[1];
                }
-               debug(" -- failed rangeTail");
+               debug(' -- failed rangeTail');
                return null;
        }
 
+       // range         = value'..'value
+
        function range() {
                var i;
-               var result = sequence([digits, _range_, digits]);
+               var result = sequence([value, _range_, value]);
                if (result !== null) {
-                       debug(" -- passed range");
+                       debug(' -- passed range');
                        var array = [];
                        var left = parseInt(result[0], 10);
                        var right = parseInt(result[2], 10);
-                       for ( i = left; i <= right; i++) {
+                       for (i = left; i <= right; i++) {
                                array.push(i);
                        }
                        return array;
                }
-               debug(" -- failed range");
+               debug(' -- failed range');
                return null;
        }
 
        function _in() {
                // in_relation   = expr ('not')? 'in' range_list
-               var result = sequence([expression, nOrMore(0, not), whitespace, _in_, whitespace, rangeList]);
+               var result = sequence([expression, nOrMore(0, not), whitespace, choice([_in_, _equal_]), whitespace, rangeList]);
                if (result !== null) {
-                       debug(" -- passed _in");
+                       debug(' -- passed _in:' + result);
                        var range_list = result[5];
                        for (var i = 0; i < range_list.length; i++) {
-                               if (parseInt(range_list[i], 10) === result[0]) {
+                               if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
                                        return (result[1][0] !== 'not');
                                }
                        }
                        return (result[1][0] === 'not');
                }
-               debug(" -- failed _in ");
+               debug(' -- failed _in ');
                return null;
        }
 
+       /*
+        * The difference between in and within is that in only includes integers in the specified range,
+        * while within includes all values.
+        */
+
        function within() {
-               var result = sequence([expression, whitespace, _within_, whitespace, rangeList]);
+               // within_relation = expr ('not')? 'within' range_list
+               var result = sequence([expression, nOrMore(0, not), whitespace, _within_, whitespace, rangeList]);
                if (result !== null) {
-                       debug(" -- passed within ");
-                       var range_list = result[4];
-                       return (parseInt( range_list[0],10 )<= result[0] && result[0] <= parseInt( range_list[1], 10));
+                       debug(' -- passed within');
+                       var range_list = result[5];
+                       if ((result[0] >= parseInt(range_list[0], 10)) &&
+                               (result[0] < parseInt(range_list[range_list.length - 1], 10))) {
+                               return (result[1][0] !== 'not');
+                       }
+                       return (result[1][0] === 'not');
                }
-               debug(" -- failed within ");
+               debug(' -- failed within ');
                return null;
        }
 
+       // relation      = is_relation | in_relation | within_relation
+       relation = choice([is, not_in, isnot, _in, within]);
 
-       var relation = choice([is, _in, within]);
-
+       // and_condition = relation ('and' relation)*
        function and() {
-               var result = sequence([relation, whitespace, _and_, whitespace, condition]);
+               var result = sequence([relation, nOrMore(0, andTail)]);
                if (result) {
-                       debug(" -- passed and");
-                       return result[0] && result[4];
+                       if (!result[0]) {
+                               return false;
+                       }
+                       for (var i = 0; i < result[1].length; i++) {
+                               if (!result[1][i]) {
+                                       return false;
+                               }
+                       }
+                       return true;
                }
-               debug(" -- failed and");
+               debug(' -- failed and');
                return null;
        }
 
-       function or() {
-               var result = sequence([relation, whitespace, _or_, whitespace, condition]);
-               if (result) {
-                       debug(" -- passed or");
-                       return result[0] || result[4];
+       // ('and' relation)*
+       function andTail() {
+               var result = sequence([whitespace, _and_, whitespace, relation]);
+               if (result !== null) {
+                       debug(' -- passed andTail' + result);
+                       return result[3];
                }
-               debug(" -- failed or");
+               debug(' -- failed andTail');
                return null;
-       }
 
-       var condition = choice([and, or, relation]);
+       }
+       //  ('or' and_condition)*
+       function orTail() {
+               var result = sequence([whitespace, _or_, whitespace, and]);
+               if (result !== null) {
+                       debug(' -- passed orTail: ' + result[3]);
+                       return result[3];
+               }
+               debug(' -- failed orTail');
+               return null;
 
-       function isInt(n) {
-               return parseFloat(n) % 1 === 0;
        }
 
+       // condition     = and_condition ('or' and_condition)*
+       function condition() {
+               var result = sequence([and, nOrMore(0, orTail)]);
+               if (result) {
+                       for (var i = 0; i < result[1].length; i++) {
+                               if (result[1][i]) {
+                                       return true;
+                               }
+                       }
+                       return result[0];
 
-       function start() {
-               if (!isInt(number)) {
-                       return false;
                }
-               var result = condition();
-               return result;
+               return false;
        }
 
-
-       var result = start();
-
+       result = condition();
        /*
         * For success, the pos must have gotten to the end of the rule
         * and returned a non-null.
         * n.b. This is part of language infrastructure, so we do not throw an internationalizable message.
         */
-       if (result === null || pos !== rule.length) {
-               // throw new Error("Parse error at position " + pos.toString() + " in input: " + rule + " result is " + result);
+       if (result === null) {
+               throw new Error('Parse error at position ' + pos.toString() + ' for rule: ' + rule);
        }
 
-       return result;
-}
+       if (pos !== rule.length) {
+               debug('Warning: Rule not parsed completely. Parser stopped at ' + rule.substr(0, pos) + ' for rule: ' + rule);
+       }
 
-/* For module loaders, e.g. NodeJS, NPM */
-if (typeof module !== 'undefined' && module.exports) {
-       module.exports = pluralRuleParser;
+       return result;
 }
 
 /* pluralRuleParser ends here */
index 2242924..b3ed88c 100644 (file)
@@ -1,10 +1,16 @@
-/* This is JsJpegMeta 1.0, ported to MediaWiki ResourceLoader by Bryan Tong Minh */
-/* The following lines where changed with respect to the original: 54, 625-627 */
+/**
+ * This is JsJpegMeta v1.0
+ * From: https://code.google.com/p/jsjpegmeta/downloads/list
+ * From: https://github.com/bennoleslie/jsjpegmeta/blob/v1.0.0/jpegmeta.js
+ *
+ * Ported to MediaWiki ResourceLoader by Bryan Tong Minh
+ * Changes:
+ * - Add closure.
+ * - Add this.JpegMeta assignment to expose it as global.
+ * - Add mw.libs.jpegmeta wrapper.
+ */
 
-(function( $ ) {
-
-       /* JsJpegMeta starts here */
-       
+( function () {
        /*
        Copyright (c) 2009 Ben Leslie
        
@@ -52,7 +58,8 @@
        */
 
        var JpegMeta = {};
-       this.JpegMeta = JpegMeta; // I have no clue why I need this magic... -- Bryan
+       // MediaWiki: Expose as global
+       this.JpegMeta = JpegMeta;
        
        /* 
           parse an unsigned number of size bytes at offset in some binary string data.
                }
            }
        };
-       
-       /* JsJpegMeta ends here */
 
+       // MediaWiki: Add mw.libs wrapper
        mw.libs.jpegmeta = function( fileReaderResult, fileName ) {
                return new JpegMeta.JpegFile( fileReaderResult, fileName );
        };
 
-} )( jQuery );
+}() );
index ee416d6..ccddb3e 100644 (file)
@@ -1,4 +1,4 @@
-( function ( mw , $ ) {
+( function ( mw, $ ) {
        var supportsPlaceholder = 'placeholder' in document.createElement( 'input' );
 
        mw.hook( 'wikipage.content' ).add( function ( $content ) {
index 3846681..e354106 100644 (file)
                mw.util.init();
 
                /**
+                * Fired when wiki content is being added to the DOM
+                *
+                * It is encouraged to fire it before the main DOM is changed (when $content
+                * is still detatched).  However, this order is not defined either way, so you
+                * should only rely on $content itself.
+                *
+                * This includes the ready event on a page load (including post-edit loads)
+                * and when content has been previewed with LivePreview.
+                *
                 * @event wikipage_content
                 * @member mw.hook
-                * @param {jQuery} $content
+                * @param {jQuery} $content The most appropriate element containing the content,
+                *   such as #mw-content-text (regular content root) or #wikiPreview (live preview
+                *   root)
                 */
                mw.hook( 'wikipage.content' ).fire( $( '#mw-content-text' ) );
        } );
index e9afa4a..ef287c4 100644 (file)
                        .attr( 'title', mw.msg( 'tooltip-ca-' + action ) +
                                ( accesskeyTip ? ' ' + accesskeyTip[0] : '' )
                        )
-                       .attr( 'href', mw.util.wikiScript() + '?' + $.param({
+                       .attr( 'href', mw.util.wikiScript() + '?' + $.param( {
                                        title: title,
                                        action: action
-                               })
+                               } )
                        );
 
                // Most common ID style
                        updateWatchLink( $link, action, 'loading' );
 
                        api = new mw.Api();
-                       api[action](
-                               title,
-                               // Success
-                               function ( watchResponse ) {
-                                       var $li, otherAction;
-
-                                       otherAction = action === 'watch' ? 'unwatch' : 'watch';
-                                       $li = $link.closest( 'li' );
-
-                                       mw.notify( $.parseHTML( watchResponse.message ), {
-                                               tag: 'watch-self'
-                                       } );
-
-                                       // Set link to opposite
-                                       updateWatchLink( $link, otherAction );
-
-                                       // Bug 12395 - update the watch checkbox on edit pages when the
-                                       // page is watched or unwatched via the tab.
-                                       if ( watchResponse.watched !== undefined ) {
-                                               $( '#wpWatchthis' ).prop( 'checked', true );
-                                       } else {
-                                               $( '#wpWatchthis' ).prop( 'checked', false );
-                                       }
-                               },
-                               // Error
-                               function () {
-                                       var cleanTitle, msg, link;
-
-                                       // Reset link to non-loading mode
-                                       updateWatchLink( $link, action );
-
-                                       // Format error message
-                                       cleanTitle = title.replace( /_/g, ' ' );
-                                       link = mw.html.element(
-                                               'a', {
-                                                       href: mw.util.getUrl( title ),
-                                                       title: cleanTitle
-                                               }, cleanTitle
-                                       );
-                                       msg = mw.message( 'watcherrortext', link );
-
-                                       // Report to user about the error
-                                       mw.notify( msg, { tag: 'watch-self' } );
+                       api[action]( title )
+                       .done( function ( watchResponse ) {
+                               var otherAction;
 
+                               otherAction = action === 'watch' ? 'unwatch' : 'watch';
+
+                               mw.notify( $.parseHTML( watchResponse.message ), {
+                                       tag: 'watch-self'
+                               } );
+
+                               // Set link to opposite
+                               updateWatchLink( $link, otherAction );
+
+                               // Bug 12395 - update the watch checkbox on edit pages when the
+                               // page is watched or unwatched via the tab.
+                               if ( watchResponse.watched !== undefined ) {
+                                       $( '#wpWatchthis' ).prop( 'checked', true );
+                               } else {
+                                       $( '#wpWatchthis' ).prop( 'checked', false );
                                }
-                       );
+                       } )
+                       .fail( function () {
+                               var cleanTitle, msg, link;
+
+                               // Reset link to non-loading mode
+                               updateWatchLink( $link, action );
+
+                               // Format error message
+                               cleanTitle = title.replace( /_/g, ' ' );
+                               link = mw.html.element(
+                                       'a', {
+                                               href: mw.util.getUrl( title ),
+                                               title: cleanTitle
+                                       }, cleanTitle
+                               );
+                               msg = mw.message( 'watcherrortext', link );
+
+                               // Report to user about the error
+                               mw.notify( msg, { tag: 'watch-self' } );
+                       } );
                } );
        } );
 
diff --git a/resources/mediawiki.special/mediawiki.special.block.css b/resources/mediawiki.special/mediawiki.special.block.css
new file mode 100644 (file)
index 0000000..899a9f3
--- /dev/null
@@ -0,0 +1,7 @@
+/**
+ * Styling for Special:Block
+ */
+
+label[for="mw-input-wpConfirm"] {
+       font-weight: bold;
+}
index b96a26e..6cb94e7 100644 (file)
        border: 1px solid #ddd;
 }
 
+.mw-changeslist-legend dl {
+       /* Parent element defines sufficient padding */
+       margin-bottom: 0;
+}
+
 .mw-changeslist-legend dt {
        float: left;
+       margin-right: 0.5em;
 }
 
 .mw-changeslist-legend dd {
        margin-left: 1.5em;
        line-height: 1.3em;
 }
-
-.mw-changeslist-legend dd.mw-changeslist-legend-plusminus {
-       margin-left: 3.5em;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.changeslist.js b/resources/mediawiki.special/mediawiki.special.changeslist.js
new file mode 100644 (file)
index 0000000..df606f5
--- /dev/null
@@ -0,0 +1,21 @@
+/* Remember the collapse state of the legend on recent changes and watchlist pages. */
+jQuery( document ).ready( function ( $ ) {
+       var
+               cookieName = 'changeslist-state',
+               cookieOptions = {
+                       expires: 30,
+                       path: '/'
+               },
+               isCollapsed = $.cookie( cookieName ) === 'collapsed';
+
+       $( '.mw-changeslist-legend' )
+               .makeCollapsible( {
+                       collapsed: isCollapsed
+               } )
+               .on( 'beforeExpand.mw-collapsible', function () {
+                       $.cookie( cookieName, 'expanded', cookieOptions );
+               } )
+               .on( 'beforeCollapse.mw-collapsible', function () {
+                       $.cookie( cookieName, 'collapsed', cookieOptions );
+               } );
+} );
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.css b/resources/mediawiki.special/mediawiki.special.createAccount.css
deleted file mode 100644 (file)
index 11d00e7..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/* Disable the underline that Vector puts on h2 headings, and bold them. */
-.mw-ui-container h2 {
-       border: 0;
-       font-weight: bold;
-}
-
-/**** shuffled CAPTCHA ****/
-#wpCaptchaWord {
-       margin-top: 6px;
-}
-
-.mw-createacct-captcha-container {
-       background-color: #f8f8f8;
-       border: 1px solid #c9c9c9;
-       padding: 10px;
-       text-align: center;
-}
-
-.mw-createacct-captcha-assisted {
-       display: block;
-       margin-top: 0.5em;
-}
-
-/* Put a border around the fancycaptcha-image-container. */
-.mw-createacct-captcha-and-reload {
-       border: 1px solid #c9c9c9;
-       display: table-cell; /* Other display formats end up too wide */
-       width: 270px;
-       background-color: #FFF;
-}
-
-/* Make the fancycaptcha-image-container full-width within its parent.  */
-.fancycaptcha-image-container
-{
-       width: 100%;
-}
-
-/**** Benefits column CSS to the right (if it fits) of the form. ****/
-.mw-ui-container #userloginForm {
-       float: left;
-}
-
-div.mw-createacct-benefits-container {
-       /* Keeps this column compact and close to the form, but tends to squish contents. */
-       float: left;
-}
-
-div.mw-createacct-benefits-container h2 {
-       margin-bottom: 30px;
-}
-
-.mw-number-text.icon-edits {
-       /* @embed */
-       background: url(images/icon-edits.png) no-repeat left center;
-}
-
-.mw-number-text.icon-pages {
-       /* @embed */
-       background: url(images/icon-pages.png) no-repeat left center;
-}
-
-.mw-number-text.icon-contributors {
-       /* @embed */
-       background: url(images/icon-contributors.png) no-repeat left center;
-}
-
-/* Special font for numbers in benefits*/
-div.mw-number-text h3 {
-       top: 0;
-       margin: 0;
-       padding: 0;
-       color: #252525;
-       font-family: 'Georgia', serif;
-       font-weight: normal;
-       font-size: 2.2em;
-       line-height: 1.2;
-       text-align: center;
-}
-
-/* Contains a number and explanatory text, with space for an icon */
-div.mw-number-text {
-       display: block;
-       font-size: 1.2em;
-       color: #444;
-       margin-top: 1em;
-       padding: 0 0 0 95px; /* 80px wide icon plus "margin" */
-       min-height: 75px; /* matches max icon height, ensures icon emblem is visible */
-       text-align: center;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.createAccount.js b/resources/mediawiki.special/mediawiki.special.createAccount.js
deleted file mode 100644 (file)
index 5cbb1ee..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * JavaScript for Create account form (Special:UserLogin?type=signup).
- */
-( function ( mw, $ ) {
-
-       // When sending password by email, hide the password input fields.
-       // This function doesn't need to be loaded early by ResourceLoader, but is tiny.
-       function hidePasswordOnEmail() {
-               // Always required if checked, otherwise it depends, so we use the original
-               var $emailLabel = $( 'label[for="wpEmail"]' ),
-                       originalText = $emailLabel.text(),
-                       requiredText = mw.message( 'createacct-emailrequired' ).text(),
-                       $createByMailCheckbox = $( '#wpCreateaccountMail' ),
-                       $beforePwds = $( '.mw-row-password:first' ).prev(),
-                       $pwds;
-
-               function updateForCheckbox() {
-                       var checked = $createByMailCheckbox.prop( 'checked' );
-                       if ( checked ) {
-                               $pwds = $( '.mw-row-password' ).detach();
-                               $emailLabel.text( requiredText );
-                       } else {
-                               if ( $pwds ) {
-                                       $beforePwds.after( $pwds );
-                                       $pwds = null;
-                               }
-                               $emailLabel.text( originalText );
-                       }
-               }
-
-               $createByMailCheckbox.on( 'change', updateForCheckbox );
-               updateForCheckbox();
-       }
-
-       // Move the FancyCaptcha image into a more attractive container.
-       // This function does need to be run early by ResourceLoader.
-       function adjustFancyCaptcha() {
-               var $content = $( '#mw-content-text' ),
-                       $submit = $content.find( '#wpCreateaccount' ),
-                       tabIndex,
-                       $captchaStuff,
-                       $captchaImageContainer,
-                       // JavaScript can't yet parse the message createacct-imgcaptcha-help when it
-                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
-                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
-                       helpHtml = '';
-
-               /*
-                * CAPTCHA
-                * The CAPTCHA is in a div style="captcha" at the top of the form.
-                * If it's a FancyCaptcha, then we remove it and insert it lower down,
-                * in a customized div with just what we need (e.g. no
-                * fancycaptcha-createaccount message).
-                */
-               if ( !$submit.length) {
-                       return;
-               }
-               tabIndex = $submit.prop( 'tabindex' ) - 1;
-               $captchaStuff = $content.find ( '.captcha' );
-
-               if ( $captchaStuff.length ) {
-
-                       // The FancyCaptcha has this class in the ConfirmEdit extension
-                       // after 2013-04-18.
-                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
-                       if ( $captchaImageContainer.length !== 1 ) {
-                               return;
-                       }
-
-                       $captchaStuff.remove();
-
-                       if ( helpMsg) {
-                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
-                       }
-
-                       // Insert another div before the submit button that will include the
-                       // repositioned FancyCaptcha div, an input field, and possible help.
-                       $submit.closest( 'div' )
-                               .before( [
-                       '<div>',
-                               '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
-                               '<div class="mw-createacct-captcha-container">',
-                                       '<div class="mw-createacct-captcha-and-reload" />',
-                                       '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
-                                               mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
-                                               '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
-                                               helpHtml,
-                               '</div>',
-                       '</div>'
-                                       ].join( '' )
-                               );
-
-                       // Stick the FancyCaptcha container inside our bordered and framed parents.
-                       $captchaImageContainer
-                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
-
-                       // Find the input field, add the text (if any) of the existing CAPTCHA
-                       // field (although usually it's blanked out on every redisplay),
-                       // and after it move over the hidden field that tells the CAPTCHA
-                       // what to do.
-                       $content.find( '#wpCaptchaWord' )
-                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
-                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
-               }
-       }
-
-       $( function () {
-               adjustFancyCaptcha();
-               hidePasswordOnEmail();
-       } );
-
-}( mediaWiki, jQuery ) );
index 3cd9739..7b1d416 100644 (file)
@@ -38,7 +38,7 @@ tr.mw-block-hideuser {
 
 /**** Special:BlockList ****/
 table.mw-blocklist span.mw-usertoollinks,
-span.mw-blocklist-actions{
+span.mw-blocklist-actions {
        white-space: nowrap;
        font-size: 90%;
 }
index 161efde..75ae5ca 100644 (file)
@@ -9,3 +9,13 @@
 /*
 .mw-email-authenticated .mw-input { }
 */
+
+/**
+ * Hide, but keep accessible for screen-readers.
+ * Like .mw-jump, #jump-to-nav from skins/common/shared.css
+ */
+.mw-navigation-hint {
+       overflow: hidden;
+       height: 0;
+       zoom: 1;
+}
index 03d93d0..3302ec6 100644 (file)
@@ -3,22 +3,45 @@
  */
 jQuery( function ( $ ) {
        var $preftoc, $preferences, $fieldsets, $legends,
-               hash,
+               hash, labelFunc,
                $tzSelect, $tzTextbox, $localtimeHolder, servertime;
 
-       $( '#prefsubmit' ).attr( 'id', 'prefcontrol' );
+       labelFunc = function () {
+               return this.id.replace( /^mw-prefsection/g, 'preftab' );
+       };
 
-       $preftoc = $('<ul id="preftoc"></ul>');
+       $( '#prefsubmit' ).attr( 'id', 'prefcontrol' );
+       $preftoc = $('<ul id="preftoc"></ul>')
+               .attr( 'role', 'tablist' );
        $preferences = $( '#preferences' )
                .addClass( 'jsprefs' )
                .before( $preftoc );
        $fieldsets = $preferences.children( 'fieldset' )
                .hide()
+               .attr( {
+                       role: 'tabpanel',
+                       'aria-hidden': 'true',
+                       'aria-labelledby': labelFunc
+               } )
                .addClass( 'prefsection' );
        $legends = $fieldsets
                .children( 'legend' )
                .addClass( 'mainLegend' );
 
+       // Make sure the accessibility tip is selectable so that screen reader users take notice,
+       // but hide it per default to reduce interface clutter. Also make sure it becomes visible
+       // when selected. Similar to jquery.mw-jump
+       $( '<div>' ).addClass( 'mw-navigation-hint' )
+               .text( mediaWiki.msg( 'prefs-tabs-navigation-hint' ) )
+               .attr( 'tabIndex', 0 )
+               .on( 'focus blur', function( e ) {
+                       if ( e.type === 'blur' || e.type === 'focusout' ) {
+                               $( this ).css( 'height', '0' );
+                       } else {
+                               $( this ).css( 'height', 'auto' );
+                       }
+       } ).insertBefore( $preftoc );
+
        /**
         * It uses document.getElementById for security reasons (HTML injections in $()).
         *
@@ -36,12 +59,23 @@ jQuery( function ( $ ) {
                }
                $( window ).scrollTop( scrollTop );
 
-               $preftoc.find( 'li' ).removeClass( 'selected' );
+               $preftoc.find( 'li' ).removeClass( 'selected' )
+                       .find( 'a' ).attr( {
+                               tabIndex: -1,
+                               'aria-selected': 'false'
+                       } );
+
                $tab = $( document.getElementById( 'preftab-' + name ) );
                if ( $tab.length ) {
-                       $tab.parent().addClass( 'selected' );
-                       $preferences.children( 'fieldset' ).hide();
-                       $( document.getElementById( 'mw-prefsection-' + name ) ).show();
+                       $tab.attr( {
+                               tabIndex: 0,
+                               'aria-selected': 'true'
+                       } )
+                       .focus()
+                               .parent().addClass( 'selected' );
+
+                       $preferences.children( 'fieldset' ).hide().attr( 'aria-hidden', 'true' );
+                       $( document.getElementById( 'mw-prefsection-' + name ) ).show().attr( 'aria-hidden', 'false' );
                }
        }
 
@@ -55,17 +89,40 @@ jQuery( function ( $ ) {
                ident = $legend.parent().attr( 'id' );
 
                $li = $( '<li>' )
+                       .attr( 'role', 'presentation' )
                        .addClass( i === 0 ? 'selected' : '' );
                $a = $( '<a>' )
                        .attr( {
                                id: ident.replace( 'mw-prefsection', 'preftab' ),
-                               href: '#' + ident
+                               href: '#' + ident,
+                               role: 'tab',
+                               tabIndex: i === 0 ? 0 : -1,
+                               'aria-selected': i === 0 ? 'true' : 'false',
+                               'aria-controls': ident
                        } )
                        .text( $legend.text() );
                $li.append( $a );
                $preftoc.append( $li );
        } );
 
+       // Enable keyboard users to use left and right keys to switch tabs
+       $preftoc.on( 'keydown', function( event ) {
+               var keyLeft = 37,
+                       keyRight = 39,
+                       $el;
+
+               if( event.keyCode === keyLeft ) {
+                       $el = $( '#preftoc li.selected' ).prev().find( 'a' );
+               } else if ( event.keyCode === keyRight ) {
+                       $el = $( '#preftoc li.selected' ).next().find( 'a' );
+               } else {
+                       return;
+               }
+               if ( $el.length > 0 ) {
+                       switchPrefTab( $el.attr( 'href' ).replace( '#mw-prefsection-', '' ) );
+               }
+       } );
+
        // If we've reloaded the page or followed an open-in-new-window,
        // make the selected tab visible.
        hash = window.location.hash;
diff --git a/resources/mediawiki.special/mediawiki.special.userLogin.css b/resources/mediawiki.special/mediawiki.special.userLogin.css
deleted file mode 100644 (file)
index 24c8d77..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Styles just for VForm user login */
-#mw-userlogin-help {
-       text-align: center;
-}
-
-.mw-ui-vform .mw-secure {
-       /* @embed */
-       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
-       margin: 0 0 0 1px;
-       padding: 0 0 0 11px;
-}
-
-/* The login form invites users to create an account */
-#mw-createaccount-cta {
-       width: 20em;
-       height: 10em;
-       /* @embed */
-       background: url(images/glyph-people-large.png) no-repeat 50%;
-       margin: 0 auto;
-}
-
-#mw-createaccount-cta h3,
-#mw-createaccount-another h3 {
-       font-size: 0.9em;
-       font-weight: normal;
-       text-align: center;
-}
-
-#mw-createaccount-cta h3 {
-       padding-top: 4em;
-}
-
-#mw-createaccount-join {
-       margin-left: 0.75em;
-       /* Separate from background image */
-       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
-       width: auto;
-       display: inline-block;
-}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.common.css b/resources/mediawiki.special/mediawiki.special.userlogin.common.css
new file mode 100644 (file)
index 0000000..d5fd2b8
--- /dev/null
@@ -0,0 +1,65 @@
+/* Styles for user login and signup forms */
+#mw-userlogin-help {
+       text-align: center;
+}
+
+.mw-ui-vform .mw-secure {
+       /* @embed */
+       background: url(images/icon-lock.png) no-repeat scroll left center transparent;
+       margin: 0 0 0 1px;
+       padding: 0 0 0 11px;
+}
+
+/*
+ * When inside the VForm style, disable the border that Vector and other skins
+ * put on the div surrounding the login/create account form.
+ * Also disable the margin and padding that Vector puts around the form.
+ */
+.mw-ui-container #userloginForm,
+.mw-ui-container #userlogin {
+       border: 0;
+       margin: 0;
+       padding: 0;
+}
+
+/* Reposition and resize language links, which appear on a per-wiki basis */
+.mw-ui-container #languagelinks {
+       margin-bottom: 2em;
+       font-size: 0.8em;
+}
+
+/* Put some space under template's header, which may contain CAPTCHA HTML.*/
+section.mw-form-header {
+       margin-bottom: 10px;
+}
+
+/**** shuffled CAPTCHA ****/
+#wpCaptchaWord {
+       margin-top: 6px;
+}
+
+.mw-createacct-captcha-container {
+       background-color: #f8f8f8;
+       border: 1px solid #c9c9c9;
+       padding: 10px;
+       text-align: center;
+}
+
+.mw-createacct-captcha-assisted {
+       display: block;
+       margin-top: 0.5em;
+}
+
+/* Put a border around the fancycaptcha-image-container. */
+.mw-createacct-captcha-and-reload {
+       border: 1px solid #c9c9c9;
+       /* Other display formats end up too wide */
+       display: table-cell;
+       width: 270px;
+       background-color: #FFF;
+}
+
+/* Make the fancycaptcha-image-container full-width within its parent. */
+.fancycaptcha-image-container {
+       width: 100%;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.common.js b/resources/mediawiki.special/mediawiki.special.userlogin.common.js
new file mode 100644 (file)
index 0000000..a899ae7
--- /dev/null
@@ -0,0 +1,72 @@
+/**
+ * JavaScript for login and signup forms.
+ */
+( function ( mw, $ ) {
+       // Move the FancyCaptcha image into a more attractive container.
+       // The CAPTCHA is in a <div class="captcha"> at the top of the form. If it's a FancyCaptcha,
+       // then we remove it and insert it lower down, in a customized div with just what we need (e.g.
+       // no 'fancycaptcha-createaccount' message).
+       function adjustFancyCaptcha( $content, buttonSubmit ) {
+               var $submit = $content.find( buttonSubmit ),
+                       tabIndex,
+                       $captchaStuff,
+                       $captchaImageContainer,
+                       // JavaScript can't yet parse the message 'createacct-imgcaptcha-help' when it
+                       // contains a MediaWiki transclusion, so PHP parses it and sends the HTML.
+                       // This is only set for the signup form (and undefined for login).
+                       helpMsg = mw.config.get( 'wgCreateacctImgcaptchaHelp' ),
+                       helpHtml = '';
+
+               if ( !$submit.length ) {
+                       return;
+               }
+               tabIndex = $submit.prop( 'tabindex' ) - 1;
+               $captchaStuff = $content.find( '.captcha' );
+
+               if ( $captchaStuff.length ) {
+                       // The FancyCaptcha has this class in the ConfirmEdit extension since 2013-04-18.
+                       $captchaImageContainer = $captchaStuff.find( '.fancycaptcha-image-container' );
+                       if ( $captchaImageContainer.length !== 1 ) {
+                               return;
+                       }
+
+                       $captchaStuff.remove();
+
+                       if ( helpMsg ) {
+                               helpHtml = '<small class="mw-createacct-captcha-assisted">' + helpMsg + '</small>';
+                       }
+
+                       // Insert another div before the submit button that will include the
+                       // repositioned FancyCaptcha div, an input field, and possible help.
+                       $submit.closest( 'div' ).before( [
+                               '<div>',
+                                       '<label for="wpCaptchaWord">' + mw.message( 'createacct-captcha' ).escaped() + '</label>',
+                                       '<div class="mw-createacct-captcha-container">',
+                                               '<div class="mw-createacct-captcha-and-reload" />',
+                                               '<input id="wpCaptchaWord" name="wpCaptchaWord" type="text" placeholder="' +
+                                                       mw.message( 'createacct-imgcaptcha-ph' ).escaped() +
+                                                       '" tabindex="' + tabIndex + '" autocapitalize="off" autocorrect="off">',
+                                                       helpHtml,
+                                       '</div>',
+                               '</div>'
+                       ].join( '' ) );
+
+                       // Stick the FancyCaptcha container inside our bordered and framed parents.
+                       $captchaImageContainer
+                               .prependTo( $content.find( '.mw-createacct-captcha-and-reload' ) );
+
+                       // Find the input field, add the text (if any) of the existing CAPTCHA
+                       // field (although usually it's blanked out on every redisplay),
+                       // and after it move over the hidden field that tells the CAPTCHA
+                       // what to do.
+                       $content.find( '#wpCaptchaWord' )
+                               .val( $captchaStuff.find( '#wpCaptchaWord' ).val() )
+                               .after( $captchaStuff.find( '#wpCaptchaId' ) );
+               }
+       }
+
+       $( function () {
+               // Work with both login and signup form
+               adjustFancyCaptcha( $( '#mw-content-text' ), '#wpCreateaccount, #wpLoginAttempt' );
+       } );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.login.css b/resources/mediawiki.special/mediawiki.special.userlogin.login.css
new file mode 100644 (file)
index 0000000..85730f5
--- /dev/null
@@ -0,0 +1,27 @@
+/* The login form invites users to create an account */
+#mw-createaccount-cta {
+       width: 20em;
+       height: 10em;
+       /* @embed */
+       background: url(images/glyph-people-large.png) no-repeat 50%;
+       margin: 0 auto;
+}
+
+#mw-createaccount-cta h3,
+#mw-createaccount-another h3 {
+       font-size: 0.9em;
+       font-weight: normal;
+       text-align: center;
+}
+
+#mw-createaccount-cta h3 {
+       padding-top: 4em;
+}
+
+#mw-createaccount-join {
+       margin-left: 0.75em;
+       /* Separate from background image */
+       box-shadow: 4px 4px 4px 4px rgba(255, 255, 255, 1);
+       width: auto;
+       display: inline-block;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.signup.css b/resources/mediawiki.special/mediawiki.special.userlogin.signup.css
new file mode 100644 (file)
index 0000000..1564712
--- /dev/null
@@ -0,0 +1,63 @@
+/* Disable the underline that Vector puts on h2 headings, and bold them. */
+.mw-ui-container h2 {
+       border: 0;
+       font-weight: bold;
+}
+
+/* Benefits column CSS to the right (if it fits) of the form. */
+.mw-ui-container #userloginForm {
+       float: left;
+       /* Override the right margin of the form to give space in case a benefits
+        * column appears to the side. */
+       margin-right: 100px;
+}
+
+div.mw-createacct-benefits-container {
+       /* Keeps this column compact and close to the form, but tends to squish contents. */
+       float: left;
+}
+
+div.mw-createacct-benefits-container h2 {
+       margin-bottom: 30px;
+}
+
+.mw-number-text.icon-edits {
+       /* @embed */
+       background: url(images/icon-edits.png) no-repeat left center;
+}
+
+.mw-number-text.icon-pages {
+       /* @embed */
+       background: url(images/icon-pages.png) no-repeat left center;
+}
+
+.mw-number-text.icon-contributors {
+       /* @embed */
+       background: url(images/icon-contributors.png) no-repeat left center;
+}
+
+/* Special font for numbers in benefits*/
+div.mw-number-text h3 {
+       top: 0;
+       margin: 0;
+       padding: 0;
+       color: #252525;
+       font-family: 'Georgia', serif;
+       font-weight: normal;
+       font-size: 2.2em;
+       line-height: 1.2;
+       text-align: center;
+}
+
+/* Contains a number and explanatory text, with space for an icon */
+div.mw-number-text {
+       display: block;
+       font-size: 1.2em;
+       color: #444;
+       margin-top: 1em;
+       /* 80px wide icon plus "margin" */
+       padding: 0 0 0 95px;
+       /* Matches max icon height, ensures icon emblem is visible */
+       min-height: 75px;
+       text-align: center;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.userlogin.signup.js b/resources/mediawiki.special/mediawiki.special.userlogin.signup.js
new file mode 100644 (file)
index 0000000..c293f65
--- /dev/null
@@ -0,0 +1,34 @@
+/**
+ * JavaScript for signup form.
+ */
+( function ( mw, $ ) {
+       // When sending password by email, hide the password input fields.
+       function hidePasswordOnEmail() {
+               // Always required if checked, otherwise it depends, so we use the original
+               var $emailLabel = $( 'label[for="wpEmail"]' ),
+                       originalText = $emailLabel.text(),
+                       requiredText = mw.message( 'createacct-emailrequired' ).text(),
+                       $createByMailCheckbox = $( '#wpCreateaccountMail' ),
+                       $beforePwds = $( '.mw-row-password:first' ).prev(),
+                       $pwds;
+
+               function updateForCheckbox() {
+                       var checked = $createByMailCheckbox.prop( 'checked' );
+                       if ( checked ) {
+                               $pwds = $( '.mw-row-password' ).detach();
+                               $emailLabel.text( requiredText );
+                       } else {
+                               if ( $pwds ) {
+                                       $beforePwds.after( $pwds );
+                                       $pwds = null;
+                               }
+                               $emailLabel.text( originalText );
+                       }
+               }
+
+               $createByMailCheckbox.on( 'change', updateForCheckbox );
+               updateForCheckbox();
+       }
+
+       $( hidePasswordOnEmail );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki.special/mediawiki.special.version.css b/resources/mediawiki.special/mediawiki.special.version.css
new file mode 100644 (file)
index 0000000..917426a
--- /dev/null
@@ -0,0 +1,14 @@
+/**
+ * Adds additional styling to the extension title/version list
+**/
+.mw-version-ext-name {
+       font-weight: bold;
+}
+
+.mw-version-ext-vcs-timestamp {
+       white-space: nowrap;
+}
+
+th.mw-version-ext-col-label {
+       font-size: 0.9em;
+}
\ No newline at end of file
diff --git a/resources/mediawiki.special/mediawiki.special.vforms.css b/resources/mediawiki.special/mediawiki.special.vforms.css
deleted file mode 100644 (file)
index 768a9c6..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * When inside the VForm style, disable the border that Vector and other skins
- * put on the div surrounding the login/create account form.
- * Also disable the margin and padding that Vector puts around the form.
- */
-.mw-ui-container #userloginForm,
-.mw-ui-container #userlogin {
-       border: 0;
-       margin: 0;
-       padding: 0;
-}
-
-/* Reposition and resize language links, which appear on a per-wiki basis */
-.mw-ui-container #languagelinks {
-       margin-bottom: 2em;
-       font-size: 0.8em;
-}
-
-/* Put some space under template's header, which may contain CAPTCHA HTML.*/
-section.mw-form-header {
-       margin-bottom: 10px;
-}
-
-/*
- * Styles for information boxes.
- */
-.mw-ui-vform .errorbox,
-.mw-ui-vform .warningbox,
-.mw-ui-vform .successbox {
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing: border-box;
-       box-sizing: border-box;
-       font-size: 0.9em;
-       margin: 0 0 1em 0;
-       padding: 0.5em;
-       word-wrap: break-word;
-}
-
-/*
- * Override the right margin of the form to give space in case a benefits
- * column appears to the side.
- *
- */
-.mw-ui-container #userloginForm {
-       margin-right: 100px;
-}
index a931756..8276b1c 100644 (file)
@@ -1,9 +1,21 @@
 @import "../../settings/typography";
 @import "../../mixins/effects";
 
+// Buttons
+//
+// Styleguide 2.
+
 @buttonBorderRadius: 3px;
 
 // Button styling
+//
+// Basic button styling to be used on desktop skins. Can be any element.
+// Due to a lack of a CSS reset, the exact styling of the button depends on what type of element is used.
+//
+// Markup:
+// <div class="mw-ui-button">button.mw-ui-button</div>
+//
+// Styleguide 2.1.
 .mw-ui-button {
        // Container layout
        display: inline-block;
                cursor: default;
        }
 
-       // Button sizes and displays
+       // Styling for specific button types
        // -----------------------------------------
        &.mw-ui-big {
                font-size: @baseFontSize * 1.3;
        }
+
        &.mw-ui-block {
                display: block;
                width: 100%;
        }
+
+       // Primary buttons
+       //
+       // Do not use the mw-ui-primary class use mw-ui-constructive instead. For blue buttons
+       // use mw-ui-progressive (coming soon)
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-primary">mw-ui-primary</button>
+       //
+       // Styleguide 2.1.1.
+       &.mw-ui-primary {
+               .buttonColors(@agoraBlue);
+       }
+
+       // Constructive buttons
+       //
+       // Use constructive buttons for actions which result in a final action in the process that results
+       // in a change of state.
+       // e.g. save changes button
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-constructive">mw-ui-constructive</button>
+       //
+       // Styleguide 2.1.2.
+       &.mw-ui-constructive {
+               .buttonColors(@agoraGreen);
+       }
+
+       // Destructive buttons
+       //
+       // Use destructive buttons for actions which result in the destruction of data.
+       // e.g. deleting a page.
+       // This should not be used for cancel buttons.
+       //
+       // Markup:
+       // <button class="mw-ui-button mw-ui-destructive">mw-ui-destructive</button>
+       //
+       // Styleguide 2.1.3.
+       &.mw-ui-destructive {
+               .buttonColors(@agoraRed);
+       }
 }
 
 // This overrides an underline declaration on a:hover and a:focus in commonElements.css, which the
@@ -54,6 +108,18 @@ a.mw-ui-button {
 }
 
 // Button groups
+//
+// Group of buttons. Make sure you clear the floating after using a mw-ui-button-group.
+//
+// Markup:
+// <div class="mw-ui-button-group">
+//   <div class="mw-ui-button">A</div>
+//   <div class="mw-ui-button">B</div>
+//   <div class="mw-ui-button">C</div>
+//   <div class="mw-ui-button">D</div>
+// </div><div style="clear:both"></div>
+//
+// Styleguide 2.2.
 .mw-ui-button-group > * {
        border-radius: 0;
        float: left;
index d2554c6..66f4487 100644 (file)
 @captchaContainerWidth: 290px;
 @defaultFormWidth: @captchaContainerWidth;
 
+// Forms
+//
+// Styleguide 3.
+
+// VForm
+//
 // Style a compact vertical stacked form ("VForm") and the elements in divs
-// within it.
+// within it. See button section on guidance of how and when to use mw-ui-constructive.
+//
+// Markup:
+// <form class="mw-ui-vform">
+//   <div class="mw-ui-vform-div">This is a form example.</div>
+//   <div>
+//     <label>Username </label>
+//     <input value="input">
+//   </div>
+//   <div>
+//     <button class="mw-ui-button mw-ui-constructive">Button in vform</button>
+//   </div>
+// </form>
+//
+// Styleguide 3.1.
 .mw-ui-vform {
        .box-sizing(border-box);
 
 
        }
 
-       // HTMLForm uses error, SpecialUserlogin (login and create account) uses
-       // errorbox.
-       // TODO move errorbox from mediawiki.special.vforms.css into here.
+       // Styles for information boxes
+       //
+       // Regular HTMLForm uses .error class, some special pages like
+       // SpecialUserlogin (login and create account) use .errorbox.
+       //
+       // Markup:
+       // <form class="mw-ui-vform">
+       //   <div class="errorbox">An error occurred</div>
+       //   <div class="warningbox">A warning to be noted</div>
+       //   <div class="successbox">Action successful!</div>
+       //   <div class="error">A different kind of error</div>
+       //   <div>
+       //     <input type="text" value="input" class="mw-ui-input">
+       //   <div>
+       //   </div>
+       //     <button class="mw-ui-button">Button in vform</button>
+       //   </div>
+       // </form>
+       //
+       // Styleguide 3.1.
        .error {
                .box-sizing(border-box);
                font-size: 0.9em;
                text-shadow: 0 1px #fae3e3;
                word-wrap: break-word;
        }
+
+       .errorbox,
+       .warningbox,
+       .successbox {
+               .box-sizing(border-box);
+               font-size: 0.9em;
+               margin: 0 0 1em 0;
+               padding: 0.5em;
+               word-wrap: break-word;
+       }
+
 }
 
 // --------------------------------------------------------------------------
index a49721d..1536338 100644 (file)
@@ -2,19 +2,5 @@
 @import "../../mixins/type";
 
 .mw-ui-button {
-       // Button colors determined by function.
-       // -----------------------------------------
-       &.mw-ui-primary {
-               .buttonColors(@agoraBlue);
-       }
-
-       &.mw-ui-constructive {
-               .buttonColors(@agoraGreen);
-       }
-
-       &.mw-ui-destructive {
-               .buttonColors(@agoraRed);
-       }
-
        .vector-type();
 }
index 036db5f..05045d5 100644 (file)
@@ -3,6 +3,8 @@
  * Vector.
  */
 
+// FIXME: remove import for button styles as soon as extensions using mediawiki.ui are
+// updated to use mediawiki.ui.button as well.
 @import "components/utilities";
 @import "components/default/buttons";
 @import "components/default/forms";
diff --git a/resources/mediawiki.ui/styleguide.md b/resources/mediawiki.ui/styleguide.md
new file mode 100644 (file)
index 0000000..b7eea54
--- /dev/null
@@ -0,0 +1,26 @@
+#Wikimedia projects
+
+This is the living style guide for MediaWiki UI used in Wikimedia Projects. It is generated from existing CSS programmatically. Please use it as a reference when developing code for MediaWiki to ensure your design is consistent with others across the site. Note this document is a work in progress and subject to change.
+
+##Brand
+
+Imagine a world in which every single human being can freely share in the sum of all knowledge.
+
+Sharing knowledge is the heart of our movement. Specifically, we care about sharing the “… highest possible quality to every single person on the planet in their own language” (Jimmy Wales). The focus of our identity is being credible and is moving toward being more inviting. We want our contributors to keep contributing while our assuring our readers that the information on any of the Wikimedia projects is reliable and accurate. Our personality should embody both of those traits with a slight sense of rebellion. We are unlike traditional projects (for instance, Encyclopedias that are only created by a few select individuals). We are a global movement, and as Jimmy Wales puts it: “Wikipedia is like rock’n’roll; it’s a cultural shift."
+
+##Design Philosophy
+
+The Wikimedia movement is a global volunteer community that aims to collect and develop the world's knowledge and to make it available to everyone for free, for any purpose. “Imagine a world in which every single human being can freely share in the sum of all knowledge.” 
+
+###Credible
+We strive for the most accurate, high quality and neutral information on all Wikimedia projects. We are fact-based and honest. We do not take sides. We are fair and impartial. 
+
+###Inviting
+We are geeky about collecting and developing knowledge. We invite and welcome every single human being to share their knowledge with us and the rest of the world. We are open-minded and have a strong sense of community. Our aesthetics should be clean and encourage interaction. 
+
+###Worldly
+We are thoughtful and are aware of cultural differences. We are careful about words, color usage, and images that might offend. We are also aware of limited connectivity in some areas of the world and are thoughtful of image sizes and loading speed. 
+
+###Humble
+We are respectful of contributors’ effort and knowledge. We have a wealth of knowledge on all projects and many people to thank for that. We are humble. We are helpful and welcome help to expand the sum of all knowledge. 
+
index a347562..d084731 100644 (file)
@@ -2,6 +2,27 @@
  * Provide Agora appearance for mw-ui-* classes when using the Vector skin.
  */
 
+// FIXME: remove import for button styles as soon as extensions using mediawiki.ui are
+// updated to use mediawiki.ui.button as well.
+
+// Typography
+//
+// We prefer the usage of Georgia Bold for all headings. Georgia Regular is used to place emphasis on pull-out or short quotations. This latter usage should be used sparingly. 
+//
+// We prefer the use of Helvetica Neue Regular for body copy. Helvetiva Neue Bold for sub-headers. Pull-out quotes within the body copy should use Helvetica Neue Bold. Helvetica Neue is an not open-source font. Hence, below is a list of preferred alternate choices.
+//
+// Second choice: Helvetica
+//
+// Third choice: Arial
+//
+// Our content is predominantly text, hence visual hierarchy must be clear. Use these recommended type sizes to inform and establish information hierarchy and organization. 
+//
+// Unless if you plan to put extra attention and manually adjust spacing, avoid justifying texts and paragraphs as they are harder to read and create unnecessary visual distractions. Along with centered text, they convey a formal and less friendly environment. 
+//
+// It will be important to talk about other languages, scripts and writing direction - with the same level as importance, not as an afterthought.
+//
+// Styleguide 1.
+
 @import "components/utilities";
 @import "components/vector/buttons";
 @import "components/vector/forms";
diff --git a/resources/mediawiki/images/arrow-collapsed-ltr.svg b/resources/mediawiki/images/arrow-collapsed-ltr.svg
new file mode 100644 (file)
index 0000000..15992f8
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="12"
+   height="12"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="arrow-collapsed-ltr.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="27.812867"
+     inkscape:cx="7.833847"
+     inkscape:cy="7.3054094"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="matrix(1.0559311,0,0,1.0825058,-404.86649,-609.71107)"
+     id="layer1">
+    <path
+       d="m 387.20944,564.65683 0,8.93354 4.49986,-4.49987 z"
+       id="arrow"
+       style="fill:#797979;fill-opacity:1;stroke:none"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/resources/mediawiki/images/arrow-collapsed-rtl.svg b/resources/mediawiki/images/arrow-collapsed-rtl.svg
new file mode 100644 (file)
index 0000000..a643689
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="12"
+   height="12"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="arrow-collapsed-ltr.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="27.812867"
+     inkscape:cx="14.764482"
+     inkscape:cy="6.45175"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="matrix(-1.0559311,0,0,1.0825058,416.86649,-609.71107)"
+     id="layer1">
+    <path
+       d="m 387.20944,564.65683 0,8.93354 4.49986,-4.49987 z"
+       id="arrow"
+       style="fill:#797979;fill-opacity:1;stroke:none"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/resources/mediawiki/images/arrow-expanded.svg b/resources/mediawiki/images/arrow-expanded.svg
new file mode 100644 (file)
index 0000000..4012bb5
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.1"
+   width="12"
+   height="12"
+   id="svg2"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="arrow-collapsed-rtl.svg">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     id="namedview7"
+     showgrid="false"
+     inkscape:zoom="27.812867"
+     inkscape:cx="9.7488178"
+     inkscape:cy="6.45175"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="svg2" />
+  <defs
+     id="defs4" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="matrix(0,1.0559311,1.0825058,0,-610.0796,-405.24226)"
+     id="layer1">
+    <path
+       d="m 387.20944,564.65683 0,8.93354 4.49986,-4.49987 z"
+       id="arrow"
+       style="fill:#797979;fill-opacity:1;stroke:none"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
index e1031c6..51770fd 100644 (file)
                        // Trim underscores
                        .replace( rUnderscoreTrim, '' );
 
-               if ( title === '' ) {
-                       return false;
-               }
-
                // Process initial colon
-               if ( title.charAt( 0 ) === ':' ) {
+               if ( title !== '' && title.charAt( 0 ) === ':' ) {
                        // Initial colon means main namespace instead of specified default
                        namespace = NS_MAIN;
                        title = title
                                .replace( rUnderscoreTrim, '' );
                }
 
+               if ( title === '' ) {
+                       return false;
+               }
+
                // Process namespace prefix (if any)
                m = title.match( rSplit );
                if ( m ) {
                                title.indexOf( '../' ) === 0 ||
                                title.indexOf( '/./' ) !== -1 ||
                                title.indexOf( '/../' ) !== -1 ||
-                               title.substr( -2 ) === '/.' ||
-                               title.substr( -3 ) === '/..'
+                               title.substr( title.length - 2 ) === '/.' ||
+                               title.substr( title.length - 3 ) === '/..'
                        )
                ) {
                        return false;
index a2d4d6c..a1eed48 100644 (file)
@@ -1,71 +1,68 @@
 /**
- * Library for simple URI parsing and manipulation.  Requires jQuery.
+ * Library for simple URI parsing and manipulation. Dependencies: mw, jQuery.
  *
- * Do not expect full RFC 3986 compliance. Intended to be minimal, but featureful.
- * The use cases we have in mind are constructing 'next page' or 'previous page' URLs,
- * detecting whether we need to use cross-domain proxies for an API, constructing
- * simple URL-based API calls, etc.
+ * Intended to be minimal, but featureful; do not expect full RFC 3986 compliance. The use cases we
+ * have in mind are constructing 'next page' or 'previous page' URLs, detecting whether we need to
+ * use cross-domain proxies for an API, constructing simple URL-based API calls, etc. Parsing here
+ * is regex-based, so may not work on all URIs, but is good enough for most.
  *
- * Intended to compress very well if you use a JS-parsing minifier.
+ * You can modify the properties directly, then use the #toString method to extract the full URI
+ * string again. Example:
  *
- * Dependencies: mw, jQuery
+ *     var uri = new mw.Uri( 'http://example.com/mysite/mypage.php?quux=2' );
  *
- * Example:
- *
- *     var uri = new mw.Uri( 'http://foo.com/mysite/mypage.php?quux=2' );
- *
- *     if ( uri.host == 'foo.com' ) {
- *         uri.host = 'www.foo.com';
+ *     if ( uri.host == 'example.com' ) {
+ *         uri.host = 'foo.example.com';
  *         uri.extend( { bar: 1 } );
  *
  *         $( 'a#id1' ).attr( 'href', uri );
- *         // anchor with id 'id1' now links to http://foo.com/mysite/mypage.php?bar=1&quux=2
+ *         // anchor with id 'id1' now links to http://foo.example.com/mysite/mypage.php?bar=1&quux=2
  *
  *         $( 'a#id2' ).attr( 'href', uri.clone().extend( { bar: 3, pif: 'paf' } ) );
- *         // anchor with id 'id2' now links to http://foo.com/mysite/mypage.php?bar=3&quux=2&pif=paf
+ *         // anchor with id 'id2' now links to http://foo.example.com/mysite/mypage.php?bar=3&quux=2&pif=paf
  *     }
  *
- * Parsing here is regex based, so may not work on all URIs, but is good enough for most.
- *
  * Given a URI like
- * 'http://usr:pwd@www.test.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top':
- * The returned object will have the following properties:
+ * `http://usr:pwd@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top`
+ * the returned object will have the following properties:
  *
- *    protocol  'http'
- *    user      'usr'
- *    password  'pwd'
- *    host      'www.test.com'
- *    port      '81'
- *    path      '/dir/dir.2/index.htm'
- *    query     {
- *                  q1: 0,
- *                  test1: null,
- *                  test2: '',
- *                  test3: 'value (escaped)'
- *                  r: [1, 2]
- *              }
- *    fragment  'top'
+ *     protocol  'http'
+ *     user      'usr'
+ *     password  'pwd'
+ *     host      'www.example.com'
+ *     port      '81'
+ *     path      '/dir/dir.2/index.htm'
+ *     query     {
+ *                   q1: '0',
+ *                   test1: null,
+ *                   test2: '',
+ *                   test3: 'value (escaped)'
+ *                   r: ['1', '2']
+ *               }
+ *     fragment  'top'
  *
- * n.b. 'password' is not technically allowed for HTTP URIs, but it is possible with other
- * sorts of URIs.
- * You can modify the properties directly. Then use the toString() method to extract the
- * full URI string again.
+ * (N.b., 'password' is technically not allowed for HTTP URIs, but it is possible with other kinds
+ * of URIs.)
  *
- * Parsing based on parseUri 1.2.2 (c) Steven Levithan <stevenlevithan.com> MIT License
+ * Parsing based on parseUri 1.2.2 (c) Steven Levithan <stevenlevithan.com>, MIT License.
  * http://stevenlevithan.com/demo/parseuri/js/
  *
+ * @class mw.Uri
  */
 
 ( function ( mw, $ ) {
-
        /**
-        * Function that's useful when constructing the URI string -- we frequently encounter the pattern of
-        * having to add something to the URI as we go, but only if it's present, and to include a character before or after if so.
-        * @param {string|undefined} pre To prepend.
-        * @param {string} val To include.
-        * @param {string} post To append.
-        * @param {boolean} raw If true, val will not be encoded.
-        * @return {string} Result.
+        * Function that's useful when constructing the URI string -- we frequently encounter the pattern
+        * of having to add something to the URI as we go, but only if it's present, and to include a
+        * character before or after if so.
+        *
+        * @private
+        * @static
+        * @param {string|undefined} pre To prepend
+        * @param {string} val To include
+        * @param {string} post To append
+        * @param {boolean} raw If true, val will not be encoded
+        * @return {string} Result
         */
        function cat( pre, val, post, raw ) {
                if ( val === undefined || val === null || val === '' ) {
                return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
        }
 
-       // Regular expressions to parse many common URIs.
+       /**
+        * Regular expressions to parse many common URIs.
+        *
+        * @private
+        * @static
+        * @property {Object} parser
+        */
        var parser = {
                strict: /^(?:([^:\/?#]+):)?(?:\/\/(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?)?((?:[^?#\/]*\/)*[^?#]*)(?:\?([^#]*))?(?:#(.*))?/,
                loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?((?:\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?[^?#\/]*)(?:\?([^#]*))?(?:#(.*))?/
        },
 
-       // The order here matches the order of captured matches in the above parser regexes.
+       /**
+        * The order here matches the order of captured matches in the `parser` property regexes.
+        *
+        * @private
+        * @static
+        * @property {Array} properties
+        */
        properties = [
-               'protocol',  // http
-               'user',      // usr
-               'password',  // pwd
-               'host',      // www.test.com
-               'port',      // 81
-               'path',      // /dir/dir.2/index.htm
-               'query',     // q1=0&&test1&test2=value (will become { q1: '0', test1: '', test2: 'value' } )
-               'fragment'   // top
+               'protocol',
+               'user',
+               'password',
+               'host',
+               'port',
+               'path',
+               'query',
+               'fragment'
        ];
 
+       /**
+        * @property {string} protocol For example `http` (always present)
+        */
+       /**
+        * @property {string|undefined} user For example `usr`
+        */
+       /**
+        * @property {string|undefined} password For example `pwd`
+        */
+       /**
+        * @property {string} host For example `www.example.com` (always present)
+        */
+       /**
+        * @property {string|undefined} port For example `81`
+        */
+       /**
+        * @property {string} path For example `/dir/dir.2/index.htm` (always present)
+        */
+       /**
+        * @property {Object} query For example `{ a: '0', b: '', c: 'value' }` (always present)
+        */
+       /**
+        * @property {string|undefined} fragment For example `top`
+        */
 
        /**
-        * We use a factory to inject a document location, for relative URLs, including protocol-relative URLs.
-        * so the library is still testable & purely functional.
+        * A factory method to create a variation of mw.Uri with a different default location (for
+        * relative URLs, including protocol-relative URLs). Used so the library is still testable &
+        * purely functional.
+        *
+        * @method
+        * @member mw
         */
        mw.UriRelative = function ( documentLocation ) {
                var defaultUri;
 
                /**
-                * Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
+                * @class mw.Uri
                 * @constructor
-                * @param {Object|string} uri URI string, or an Object with appropriate properties (especially another URI object to clone).
-                * Object must have non-blank 'protocol', 'host', and 'path' properties.
-                *  This parameter is optional. If omitted (or set to undefined, null or empty string), then an object will be created
-                *  for the default uri of this constructor (e.g. document.location for mw.Uri in MediaWiki core).
-                * @param {Object|boolean} Object with options, or (backwards compatibility) a boolean for strictMode
-                *  - {boolean} strictMode Trigger strict mode parsing of the url. Default: false
-                *  - {boolean} overrideKeys Wether to let duplicate query parameters override eachother (true) or automagically
-                *     convert to an array (false, default).
+                *
+                * Construct a new URI object. Throws error if arguments are illegal/impossible, or
+                * otherwise don't parse.
+                *
+                * @param {Object|string} [uri] URI string, or an Object with appropriate properties (especially
+                *  another URI object to clone). Object must have non-blank `protocol`, `host`, and `path`
+                *  properties. If omitted (or set to `undefined`, `null` or empty string), then an object
+                *  will be created for the default `uri` of this constructor (`document.location` for
+                *  mw.Uri, other values for other instances -- see mw.UriRelative for details).
+                * @param {Object|boolean} [options] Object with options, or (backwards compatibility) a boolean
+                *  for strictMode
+                * @param {boolean} [options.strictMode=false] Trigger strict mode parsing of the url.
+                * @param {boolean} [options.overrideKeys=false] Whether to let duplicate query parameters
+                *  override each other (`true`) or automagically convert them to an array (`false`).
                 */
                function Uri( uri, options ) {
                        options = typeof options === 'object' ? options : { strictMode: !!options };
                }
 
                /**
-                * Standard encodeURIComponent, with extra stuff to make all browsers work similarly and more compliant with RFC 3986
-                * Similar to rawurlencode from PHP and our JS library mw.util.rawurlencode, but we also replace space with a +
-                * @param {string} s String to encode.
-                * @return {string} Encoded string for URI.
+                * Encode a value for inclusion in a url.
+                *
+                * Standard encodeURIComponent, with extra stuff to make all browsers work similarly and more
+                * compliant with RFC 3986. Similar to rawurlencode from PHP and our JS library
+                * mw.util.rawurlencode, except this also replaces spaces with `+`.
+                *
+                * @static
+                * @param {string} s String to encode
+                * @return {string} Encoded string for URI
                 */
                Uri.encode = function ( s ) {
                        return encodeURIComponent( s )
                };
 
                /**
-                * Standard decodeURIComponent, with '+' to space.
-                * @param {string} s String encoded for URI.
-                * @return {string} Decoded string.
+                * Decode a url encoded value.
+                *
+                * Reversed #encode. Standard decodeURIComponent, with addition of replacing
+                * `+` with a space.
+                *
+                * @static
+                * @param {string} s String to decode
+                * @return {string} Decoded string
                 */
                Uri.decode = function ( s ) {
                        return decodeURIComponent( s.replace( /\+/g, '%20' ) );
 
                        /**
                         * Parse a string and set our properties accordingly.
-                        * @param {string} str URI
-                        * @param {Object} options
-                        * @return {boolean} Success.
+                        *
+                        * @private
+                        * @param {string} str URI, see constructor.
+                        * @param {Object} options See constructor.
                         */
                        parse: function ( str, options ) {
-                               var q,
-                                       uri = this,
-                                       matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
+                               var q, matches,
+                                       uri = this;
+
+                               // Apply parser regex and set all properties based on the result
+                               matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
                                $.each( properties, function ( i, property ) {
                                        uri[ property ] = matches[ i + 1 ];
                                } );
                                                }
                                        } );
                                }
-                               this.query = q;
+                               uri.query = q;
                        },
 
                        /**
-                        * Returns user and password portion of a URI.
+                        * Get user and password section of a URI.
+                        *
                         * @return {string}
                         */
                        getUserInfo: function () {
                        },
 
                        /**
-                        * Gets host and port portion of a URI.
+                        * Get host and port section of a URI.
+                        *
                         * @return {string}
                         */
                        getHostPort: function () {
                        },
 
                        /**
-                        * Returns the userInfo and host and port portion of the URI.
-                        * In most real-world URLs, this is simply the hostname, but it is more general.
+                        * Get the userInfo, host and port section of the URI.
+                        *
+                        * In most real-world URLs this is simply the hostname, but the definition of 'authority' section is more general.
+                        *
                         * @return {string}
                         */
                        getAuthority: function () {
                        },
 
                        /**
-                        * Returns the query arguments of the URL, encoded into a string
-                        * Does not preserve the order of arguments passed into the URI. Does handle escaping.
+                        * Get the query arguments of the URL, encoded into a string.
+                        *
+                        * Does not preserve the original order of arguments passed in the URI. Does handle escaping.
+                        *
                         * @return {string}
                         */
                        getQueryString: function () {
                        },
 
                        /**
-                        * Returns everything after the authority section of the URI
+                        * Get everything after the authority section of the URI.
+                        *
                         * @return {string}
                         */
                        getRelativePath: function () {
                        },
 
                        /**
-                        * Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
-                        * @return {string} The URI string.
+                        * Get the entire URI string.
+                        *
+                        * May not be precisely the same as input due to order of query arguments.
+                        *
+                        * @return {string} The URI string
                         */
                        toString: function () {
                                return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
 
                        /**
                         * Clone this URI
-                        * @return {Object} new URI object with same properties
+                        *
+                        * @return {Object} New URI object with same properties
                         */
                        clone: function () {
                                return new Uri( this );
                        },
 
                        /**
-                        * Extend the query -- supply query parameters to override or add to ours
-                        * @param {Object} query parameters in key-val form to override or add
-                        * @return {Object} this URI object
+                        * Extend the query section of the URI with new parameters.
+                        *
+                        * @param {Object} parameters Query parameters to add to ours (or to override ours with) as an
+                        *  object
+                        * @return {Object} This URI object
                         */
                        extend: function ( parameters ) {
                                $.extend( this.query, parameters );
                return Uri;
        };
 
-       // if we are running in a browser, inject the current document location, for relative URLs
+       // If we are running in a browser, inject the current document location (for relative URLs).
        if ( document && document.location && document.location.href ) {
                mw.Uri = mw.UriRelative( document.location.href );
        }
index 0bd86fe..c21dfec 100644 (file)
@@ -2,11 +2,6 @@
        Stylesheet for mediawiki.hlist module
        @author [[User:Edokter]]
  */
-.skin-monobook .hlist dl,
-.skin-modern .hlist dl,
-.skin-vector .hlist dl {
-       line-height: 1.5em;
-}
 .hlist dl,
 .hlist ol,
 .hlist ul {
index ef98136..77d8fdc 100644 (file)
@@ -1,24 +1,31 @@
 /**
-       IE 8: Add pseudo-selector class to last-child list items
+       .hlist fallbacks for IE 6, 7 and 8.
        @author [[User:Edokter]]
 */
-jQuery( function( $ ) {
-       if ( $.client.profile().name === 'msie' ) {
-               if ( $.client.profile().versionNumber === 8 ) {
-                       $( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
-                               .addClass( 'hlist-last-child' );
+( function ( mw, $ ) {
+       var profile = $.client.profile();
+
+       if ( profile.name === 'msie' ) {
+               if ( profile.versionNumber === 8 ) {
+                       /* IE 8: Add pseudo-selector class to last-child list items */
+                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
+                               $content.find( '.hlist' ).find( 'dd:last-child, dt:last-child, li:last-child' )
+                                       .addClass( 'hlist-last-child' );
+                       } );
                }
+               else if ( profile.versionNumber <= 7 ) {
                        /* IE 7 and below: Generate interpuncts and parentheses */
-               if ( $.client.profile().versionNumber <= 7 ) {
-                       var $hlists = $( '.hlist' );
-                       $hlists.find( 'dt:not(:last-child)' )
-                               .append( ': ' );
-                       $hlists.find( 'dd:not(:last-child)' )
-                               .append( '<b>·</b> ' );
-                       $hlists.find( 'li:not(:last-child)' )
-                               .append( '<b>·</b> ' );
-                       $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
-                               .prepend( '( ' ).append( ') ' );
+                       mw.hook( 'wikipage.content' ).add( function ( $content ) {
+                               var $hlists = $content.find( '.hlist' );
+                               $hlists.find( 'dt:not(:last-child)' )
+                                       .append( ': ' );
+                               $hlists.find( 'dd:not(:last-child)' )
+                                       .append( '<b>·</b> ' );
+                               $hlists.find( 'li:not(:last-child)' )
+                                       .append( '<b>·</b> ' );
+                               $hlists.find( 'dl dl, dl ol, dl ul, ol dl, ol ol, ol ul, ul dl, ul ol, ul ul' )
+                                       .prepend( '( ' ).append( ') ' );
+                       } );
                }
        }
-} );
+}( mediaWiki, jQuery ) );
diff --git a/resources/mediawiki/mediawiki.icon.css b/resources/mediawiki/mediawiki.icon.css
deleted file mode 100644 (file)
index f61b725..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
-
-/* For the collapsed and expanded arrows, we also provide selectors to make it
- * easy to use them with jquery.makeCollapsible. */
-.mw-icon-arrow-collapsed,
-.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
-       /* @embed */
-       background: url(images/arrow-collapsed-ltr.png) no-repeat left bottom;
-}
-
-.mw-icon-arrow-expanded,
-.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
-       /* @embed */
-       background: url(images/arrow-expanded.png) no-repeat left bottom;
-}
diff --git a/resources/mediawiki/mediawiki.icon.less b/resources/mediawiki/mediawiki.icon.less
new file mode 100644 (file)
index 0000000..49f0f70
--- /dev/null
@@ -0,0 +1,19 @@
+/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
+
+@import "mediawiki.mixins";
+
+/* For the collapsed and expanded arrows, we also provide selectors to make it
+ * easy to use them with jquery.makeCollapsible. */
+.mw-icon-arrow-collapsed,
+.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
+       .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
+       background-repeat: no-repeat;
+       background-position: left bottom;
+}
+
+.mw-icon-arrow-expanded,
+.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
+       .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
+       background-repeat: no-repeat;
+       background-position: left bottom;
+}
index 724ca5e..f6b5bf3 100644 (file)
@@ -1,6 +1,8 @@
 /**
  * Base library for MediaWiki.
  *
+ * Exposed as globally as `mediaWiki` with `mw` as shortcut.
+ *
  * @class mw
  * @alternateClassName mediaWiki
  * @singleton
@@ -12,7 +14,9 @@ var mw = ( function ( $, undefined ) {
        /* Private Members */
 
        var hasOwn = Object.prototype.hasOwnProperty,
-               slice = Array.prototype.slice;
+               slice = Array.prototype.slice,
+               trackCallbacks = $.Callbacks( 'memory' ),
+               trackQueue = [];
 
        /**
         * Log a message to window.console, if possible. Useful to force logging of some
@@ -178,6 +182,51 @@ var mw = ( function ( $, undefined ) {
         *
         * Format defaults to 'text'.
         *
+        *     @example
+        *
+        *     var obj, str;
+        *     mw.messages.set( {
+        *         'hello': 'Hello world',
+        *         'hello-user': 'Hello, $1!',
+        *         'welcome-user': 'Welcome back to $2, $1! Last visit by $1: $3'
+        *     } );
+        *
+        *     obj = new mw.Message( mw.messages, 'hello' );
+        *     mw.log( obj.text() );
+        *     // Hello world
+        *
+        *     obj = new mw.Message( mw.messages, 'hello-user', [ 'John Doe' ] );
+        *     mw.log( obj.text() );
+        *     // Hello, John Doe!
+        *
+        *     obj = new mw.Message( mw.messages, 'welcome-user', [ 'John Doe', 'Wikipedia', '2 hours ago' ] );
+        *     mw.log( obj.text() );
+        *     // Welcome back to Wikipedia, John Doe! Last visit by John Doe: 2 hours ago
+        *
+        *     // Using mw.message shortcut
+        *     obj = mw.message( 'hello-user', 'John Doe' );
+        *     mw.log( obj.text() );
+        *     // Hello, John Doe!
+        *
+        *     // Using mw.msg shortcut
+        *     str = mw.msg( 'hello-user', 'John Doe' );
+        *     mw.log( str );
+        *     // Hello, John Doe!
+        *
+        *     // Different formats
+        *     obj = new mw.Message( mw.messages, 'hello-user', [ 'John "Wiki" <3 Doe' ] );
+        *
+        *     obj.format = 'text';
+        *     str = obj.toString();
+        *     // Same as:
+        *     str = obj.text();
+        *
+        *     mw.log( str );
+        *     // Hello, John "Wiki" <3 Doe!
+        *
+        *     mw.log( obj.escaped() );
+        *     // Hello, John &quot;Wiki&quot; &lt;3 Doe!
+        *
         * @class mw.Message
         *
         * @constructor
@@ -325,6 +374,70 @@ var mw = ( function ( $, undefined ) {
        return {
                /* Public Members */
 
+               /**
+                * Get the current time, measured in milliseconds since January 1, 1970 (UTC).
+                *
+                * On browsers that implement the Navigation Timing API, this function will produce floating-point
+                * values with microsecond precision that are guaranteed to be monotonic. On all other browsers,
+                * it will fall back to using `Date`.
+                *
+                * @returns {number} Current time
+                */
+               now: ( function () {
+                       var perf = window.performance,
+                               navStart = perf && perf.timing && perf.timing.navigationStart;
+                       return navStart && typeof perf.now === 'function' ?
+                               function () { return navStart + perf.now(); } :
+                               function () { return +new Date(); };
+               }() ),
+
+               /**
+                * Track an analytic event.
+                *
+                * This method provides a generic means for MediaWiki JavaScript code to capture state
+                * information for analysis. Each logged event specifies a string topic name that describes
+                * the kind of event that it is. Topic names consist of dot-separated path components,
+                * arranged from most general to most specific. Each path component should have a clear and
+                * well-defined purpose.
+                *
+                * Data handlers are registered via `mw.trackSubscribe`, and receive the full set of
+                * events that match their subcription, including those that fired before the handler was
+                * bound.
+                *
+                * @param {string} topic Topic name
+                * @param {Object} [data] Data describing the event, encoded as an object
+                */
+               track: function ( topic, data ) {
+                       trackQueue.push( { topic: topic, timeStamp: mw.now(), data: data } );
+                       trackCallbacks.fire( trackQueue );
+               },
+
+               /**
+                * Register a handler for subset of analytic events, specified by topic
+                *
+                * Handlers will be called once for each tracked event, including any events that fired before the
+                * handler was registered; 'this' is set to a plain object with a 'timeStamp' property indicating
+                * the exact time at which the event fired, a string 'topic' property naming the event, and a
+                * 'data' property which is an object of event-specific data. The event topic and event data are
+                * also passed to the callback as the first and second arguments, respectively.
+                *
+                * @param {string} topic Handle events whose name starts with this string prefix
+                * @param {Function} callback Handler to call for each matching tracked event
+                */
+               trackSubscribe: function ( topic, callback ) {
+                       var seen = 0;
+
+                       trackCallbacks.add( function ( trackQueue ) {
+                               var event;
+                               for ( ; seen < trackQueue.length; seen++ ) {
+                                       event = trackQueue[ seen ];
+                                       if ( event.topic.indexOf( topic ) === 0 ) {
+                                               callback.call( event, event.topic, event.data );
+                                       }
+                               }
+                       } );
+               },
+
                /**
                 * Dummy placeholder for {@link mw.log}
                 * @method
@@ -348,14 +461,14 @@ var mw = ( function ( $, undefined ) {
                 * Map of configuration values
                 *
                 * Check out [the complete list of configuration values](https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config)
-                * on MediaWiki.org.
+                * on mediawiki.org.
                 *
-                * If `$wgLegacyJavaScriptGlobals` is true, this Map will put its values in the
-                * global window object.
+                * If `$wgLegacyJavaScriptGlobals` is true, this Map will add its values to the
+                * global `window` object.
                 *
                 * @property {mw.Map} config
                 */
-               // Dummy placeholder. Re-assigned in ResourceLoaderStartupModule with an instance of `mw.Map`.
+               // Dummy placeholder. Re-assigned in ResourceLoaderStartupModule to an instance of `mw.Map`.
                config: null,
 
                /**
@@ -372,7 +485,7 @@ var mw = ( function ( $, undefined ) {
                 * This was reserved for future use but never ended up being used.
                 *
                 * @deprecated since 1.22: Let deprecated identifiers keep their original name
-                * and use mw.log#deprecate to create an access container for tracking.
+                *  and use mw.log#deprecate to create an access container for tracking.
                 * @property
                 */
                legacy: {},
@@ -388,8 +501,9 @@ var mw = ( function ( $, undefined ) {
                /**
                 * Get a message object.
                 *
-                * Similar to wfMessage() in MediaWiki PHP.
+                * Shorcut for `new mw.Message( mw.messages, key, parameters )`.
                 *
+                * @see mw.Message
                 * @param {string} key Key of message to get
                 * @param {Mixed...} parameters Parameters for the $N replacements in messages.
                 * @return {mw.Message}
@@ -401,9 +515,9 @@ var mw = ( function ( $, undefined ) {
                },
 
                /**
-                * Get a message string using 'text' format.
+                * Get a message string using the (default) 'text' format.
                 *
-                * Similar to wfMsg() in MediaWiki PHP.
+                * Shortcut for `mw.message( key, parameters... ).text()`.
                 *
                 * @see mw.Message
                 * @param {string} key Key of message to get
@@ -1379,9 +1493,14 @@ var mw = ( function ( $, undefined ) {
                                /**
                                 * Register a source.
                                 *
-                                * @param {string} id Short lowercase a-Z string representing a source, only used internally.
-                                * @param {Object} props Object containing only the loadScript property which is a url to
-                                *  the load.php location of the source.
+                                * The #work method will use this information to split up requests by source.
+                                *
+                                *     mw.loader.addSource( 'mediawikiwiki', { loadScript: '//www.mediawiki.org/w/load.php' } );
+                                *
+                                * @param {string} id Short string representing a source wiki, used internally for
+                                *  registered modules to indicate where they should be loaded from (usually lowercase a-z).
+                                * @param {Object} props
+                                * @param {string} props.loadScript Url to the load.php entry point of the source wiki.
                                 * @return {boolean}
                                 */
                                addSource: function ( id, props ) {
@@ -1518,6 +1637,12 @@ var mw = ( function ( $, undefined ) {
                                /**
                                 * Execute a function as soon as one or more required modules are ready.
                                 *
+                                * Example of inline dependency on OOjs:
+                                *
+                                *     mw.loader.using( 'oojs', function () {
+                                *         OO.compare( [ 1 ], [ 1 ] );
+                                *     } );
+                                *
                                 * @param {string|Array} dependencies Module name or array of modules names the callback
                                 *  dependends on to be ready before executing
                                 * @param {Function} [ready] callback to execute when all dependencies are ready
@@ -1635,8 +1760,8 @@ var mw = ( function ( $, undefined ) {
                                /**
                                 * Change the state of one or more modules.
                                 *
-                                * @param {string|Object} module module name or object of module name/state pairs
-                                * @param {string} state state name
+                                * @param {string|Object} module Module name or object of module name/state pairs
+                                * @param {string} state State name
                                 */
                                state: function ( module, state ) {
                                        var m;
@@ -1665,6 +1790,8 @@ var mw = ( function ( $, undefined ) {
                                 * Get the version of a module.
                                 *
                                 * @param {string} module Name of module to get version for
+                                * @return {string|null} The version, or null if the module (or its version) is not
+                                *  in the registry.
                                 */
                                getVersion: function ( module ) {
                                        if ( registry[module] !== undefined && registry[module].version !== undefined ) {
@@ -1684,7 +1811,7 @@ var mw = ( function ( $, undefined ) {
                                /**
                                 * Get the state of a module.
                                 *
-                                * @param {string} module name of module to get state for
+                                * @param {string} module Name of module to get state for
                                 */
                                getState: function ( module ) {
                                        if ( registry[module] !== undefined && registry[module].state !== undefined ) {
@@ -1694,7 +1821,7 @@ var mw = ( function ( $, undefined ) {
                                },
 
                                /**
-                                * Get names of all registered modules.
+                                * Get the names of all registered modules.
                                 *
                                 * @return {Array}
                                 */
@@ -1749,6 +1876,38 @@ var mw = ( function ( $, undefined ) {
                                        // Cache hit stats
                                        stats: { hits: 0, misses: 0, expired: 0 },
 
+                                       // Experiment data
+                                       experiment: ( function () {
+                                               var start = ( new Date() ).getTime(), id = 0, seed = 0;
+
+                                               try {
+                                                       id = JSON.parse( localStorage.getItem( 'moduleStorageExperiment2' ) );
+                                                       if ( typeof id !== 'number' ) {
+                                                               id = Math.floor( Math.random() * Math.random() * 1e16 );
+                                                               localStorage.setItem( 'moduleStorageExperiment2', id );
+                                                       }
+                                                       seed = id % 2000;
+                                               } catch ( e ) {}
+
+                                               return {
+                                                       // Unique identifier for this browser. This allows us to group all
+                                                       // datapoints generated by a particular browser, which in turn allows us
+                                                       // to see how the initial load compares to subsequent page loads.
+                                                       id: id,
+
+                                                       // Group assignment may be 0 (not in experiment), 1 (control group), or 2
+                                                       // (experimental group). Browsers that don't implement all the prerequisite APIs
+                                                       // (JSON and Web Storage) are ineligible. Eligible browsers have a 0.1% chance
+                                                       // of being included in the experiment, in which case they are equally likely to
+                                                       // be assigned to either the experimental or control group.
+                                                       group: seed === 1 ? 1 : ( seed === 2 ? 2 : 0 ),
+
+                                                       // Assess module storage performance by measuring the time between this
+                                                       // reference point and the window load event.
+                                                       start: start
+                                               };
+                                       }() ),
+
                                        /**
                                         * Construct a JSON-serializable object representing the content of the store.
                                         * @return {Object} Module store contents.
@@ -1791,30 +1950,34 @@ var mw = ( function ( $, undefined ) {
                                        },
 
                                        /**
-                                        * Initialize the store by retrieving it from localStorage and (if successfully
-                                        * retrieved) decoding the stored JSON value to a plain object.
+                                        * Initialize the store.
+                                        *
+                                        * Retrieves store from localStorage and (if successfully retrieved) decoding
+                                        * the stored JSON value to a plain object.
                                         *
                                         * The try / catch block is used for JSON & localStorage feature detection.
                                         * See the in-line documentation for Modernizr's localStorage feature detection
-                                        * code for a full account of why we need a try / catch: <http://git.io/4NEwKg>.
+                                        * code for a full account of why we need a try / catch:
+                                        * https://github.com/Modernizr/Modernizr/blob/v2.7.1/modernizr.js#L771-L796
                                         */
                                        init: function () {
                                                var raw, data;
 
                                                if ( mw.loader.store.enabled !== null ) {
-                                                       // #init already ran.
+                                                       // Init already ran
                                                        return;
                                                }
 
-                                               if ( !mw.config.get( 'wgResourceLoaderStorageEnabled' ) || mw.config.get( 'debug' ) ) {
-                                                       // Disabled by configuration, or because debug mode is set.
+                                               if ( ( !mw.config.get( 'wgResourceLoaderStorageEnabled' ) && mw.loader.store.experiment.group !== 2 )
+                                                       || mw.config.get( 'debug' ) ) {
+                                                       // Disabled by configuration, or because debug mode is set
                                                        mw.loader.store.enabled = false;
                                                        return;
                                                }
 
                                                try {
                                                        raw = localStorage.getItem( mw.loader.store.getStoreKey() );
-                                                       // If we get here, localStorage is available; mark enabled.
+                                                       // If we get here, localStorage is available; mark enabled
                                                        mw.loader.store.enabled = true;
                                                        data = JSON.parse( raw );
                                                        if ( data && typeof data.items === 'object' && data.vary === mw.loader.store.getVary() ) {
@@ -1824,7 +1987,8 @@ var mw = ( function ( $, undefined ) {
                                                } catch (e) {}
 
                                                if ( raw === undefined ) {
-                                                       mw.loader.store.enabled = false;  // localStorage failed; disable store.
+                                                       // localStorage failed; disable store
+                                                       mw.loader.store.enabled = false;
                                                } else {
                                                        mw.loader.store.update();
                                                }
@@ -1839,7 +2003,7 @@ var mw = ( function ( $, undefined ) {
                                        get: function ( module ) {
                                                var key;
 
-                                               if ( mw.loader.store.enabled !== true ) {
+                                               if ( !mw.loader.store.enabled ) {
                                                        return false;
                                                }
 
@@ -1861,29 +2025,23 @@ var mw = ( function ( $, undefined ) {
                                        set: function ( module, descriptor ) {
                                                var args, key;
 
-                                               if ( mw.loader.store.enabled !== true ) {
+                                               if ( !mw.loader.store.enabled ) {
                                                        return false;
                                                }
 
                                                key = mw.loader.store.getModuleKey( module );
 
-                                               if ( key in mw.loader.store.items ) {
-                                                       // Already set; decline to store.
-                                                       return false;
-                                               }
-
-                                               if ( descriptor.state !== 'ready' ) {
-                                                       // Module failed to load; decline to store.
-                                                       return false;
-                                               }
-
-                                               if ( !descriptor.version || $.inArray( descriptor.group, [ 'private', 'user', 'site' ] ) !== -1 ) {
-                                                       // Unversioned, private, or site-/user-specific; decline to store.
-                                                       return false;
-                                               }
-
-                                               if ( $.inArray( undefined, [ descriptor.script, descriptor.style, descriptor.messages ] ) !== -1 ) {
-                                                       // Partial descriptor; decline to store.
+                                               if (
+                                                       // Already stored a copy of this exact version
+                                                       key in mw.loader.store.items ||
+                                                       // Module failed to load
+                                                       descriptor.state !== 'ready' ||
+                                                       // Unversioned, private, or site-/user-specific
+                                                       ( !descriptor.version || $.inArray( descriptor.group, [ 'private', 'user', 'site' ] ) !== -1 ) ||
+                                                       // Partial descriptor
+                                                       $.inArray( undefined, [ descriptor.script, descriptor.style, descriptor.messages ] ) !== -1
+                                               ) {
+                                                       // Decline to store
                                                        return false;
                                                }
 
@@ -1891,13 +2049,21 @@ var mw = ( function ( $, undefined ) {
                                                        args = [
                                                                JSON.stringify( module ),
                                                                typeof descriptor.script === 'function' ?
-                                                                       String( descriptor.script ) : JSON.stringify( descriptor.script ),
+                                                                       String( descriptor.script ) :
+                                                                       JSON.stringify( descriptor.script ),
                                                                JSON.stringify( descriptor.style ),
                                                                JSON.stringify( descriptor.messages )
                                                        ];
-                                               } catch (e) {
+                                                       // Attempted workaround for a possible Opera bug (bug 57567).
+                                                       // This regex should never match under sane conditions.
+                                                       if ( /^\s*\(/.test( args[1] ) ) {
+                                                               args[1] = 'function' + args[1];
+                                                               log( 'Detected malformed function stringification (bug 57567)' );
+                                                       }
+                                               } catch ( e ) {
                                                        return;
                                                }
+
                                                mw.loader.store.items[key] = 'mw.loader.implement(' + args.join(',') + ');';
                                                mw.loader.store.update();
                                        },
@@ -1909,7 +2075,7 @@ var mw = ( function ( $, undefined ) {
                                        prune: function () {
                                                var key, module;
 
-                                               if ( mw.loader.store.enabled !== true ) {
+                                               if ( !mw.loader.store.enabled ) {
                                                        return false;
                                                }
 
@@ -1935,13 +2101,17 @@ var mw = ( function ( $, undefined ) {
                                         * pages are loaded with different module sets, the possibility exists that
                                         * modules saved by one page will be clobbered by another. But the impact would
                                         * be minor and the problem would be corrected by subsequent page views.
+                                        *
+                                        * @method
                                         */
                                        update: ( function () {
                                                var timer;
 
                                                function flush() {
-                                                       var data, key = mw.loader.store.getStoreKey();
-                                                       if ( mw.loader.store.enabled !== true ) {
+                                                       var data,
+                                                               key = mw.loader.store.getStoreKey();
+
+                                                       if ( !mw.loader.store.enabled ) {
                                                                return false;
                                                        }
                                                        mw.loader.store.prune();
@@ -1953,7 +2123,7 @@ var mw = ( function ( $, undefined ) {
                                                                localStorage.removeItem( key );
                                                                data = JSON.stringify( mw.loader.store );
                                                                localStorage.setItem( key, data );
-                                                       } catch (e) {}
+                                                       } catch ( e ) {}
                                                }
 
                                                return function () {
@@ -2000,6 +2170,10 @@ var mw = ( function ( $, undefined ) {
                        return {
                                /**
                                 * Escape a string for HTML. Converts special characters to HTML entities.
+                                *
+                                *     mw.html.escape( '< > \' & "' );
+                                *     // Returns &lt; &gt; &#039; &amp; &quot;
+                                *
                                 * @param {string} s The string to escape
                                 */
                                escape: function ( s ) {
index 7f07862..0713541 100644 (file)
 
                // Compatibility map
                map = {
-                       browsers: {
-                               // Left-to-right languages
-                               ltr: {
-                                       // SimpleSearch is broken in Opera < 9.6
-                                       opera: [['>=', 9.6]],
-                                       docomo: false,
-                                       blackberry: false,
-                                       ipod: false,
-                                       iphone: false
-                               },
-                               // Right-to-left languages
-                               rtl: {
-                                       opera: [['>=', 9.6]],
-                                       docomo: false,
-                                       blackberry: false,
-                                       ipod: false,
-                                       iphone: false
-                               }
-                       }
+                       // SimpleSearch is broken in Opera < 9.6
+                       opera: [['>=', 9.6]],
+                       // Older Konquerors are unable to position the suggestions correctly (bug 50805)
+                       konqueror: [['>=', '4.11']],
+                       docomo: false,
+                       blackberry: false,
+                       ipod: false,
+                       iphone: false
                };
 
                if ( !$.client.test( map ) ) {
diff --git a/resources/oojs/oojs.js b/resources/oojs/oojs.js
new file mode 100644 (file)
index 0000000..706f589
--- /dev/null
@@ -0,0 +1,847 @@
+/*!
+ * OOjs v1.0.6
+ * https://www.mediawiki.org/wiki/OOjs
+ *
+ * Copyright 2011-2013 OOjs Team and other contributors.
+ * Released under the MIT license
+ * http://oojs.mit-license.org
+ *
+ * Date: Tue Dec 10 2013 22:43:42 GMT+0100 (CET)
+ */
+( function ( global ) {
+
+'use strict';
+var
+       /**
+        * Namespace for all classes, static methods and static properties.
+        * @class OO
+        * @singleton
+        */
+       oo = {},
+       hasOwn = oo.hasOwnProperty,
+       toString = oo.toString;
+
+/* Class Methods */
+
+
+/**
+ * Assert whether a value is a plain object or not.
+ *
+ * @method
+ * @param {Mixed} obj
+ * @return {boolean}
+ */
+oo.isPlainObject = function ( obj ) {
+       // Any object or value whose internal [[Class]] property is not "[object Object]"
+       if ( toString.call( obj ) !== '[object Object]' ) {
+               return false;
+       }
+
+       // The try/catch suppresses exceptions thrown when attempting to access
+       // the "constructor" property of certain host objects suich as window.location
+       // in Firefox < 20 (https://bugzilla.mozilla.org/814622)
+       try {
+               if ( obj.constructor &&
+                               !hasOwn.call( obj.constructor.prototype, 'isPrototypeOf' ) ) {
+                       return false;
+               }
+       } catch ( e ) {
+               return false;
+       }
+
+       return true;
+};
+
+/**
+ * Utility for common usage of Object#create for inheriting from one
+ * prototype to another.
+ *
+ * Beware: This redefines the prototype, call before setting your prototypes.
+ * Beware: This redefines the prototype, can only be called once on a function.
+ *  If called multiple times on the same function, the previous prototype is lost.
+ *  This is how prototypal inheritance works, it can only be one straight chain
+ *  (just like classical inheritance in PHP for example). If you need to work with
+ *  multiple constructors consider storing an instance of the other constructor in a
+ *  property instead, or perhaps use a mixin (see oo.mixinClass).
+ *
+ *     function Foo() {}
+ *     Foo.prototype.jump = function () {};
+ *
+ *     function FooBar() {}
+ *     oo.inheritClass( FooBar, Foo );
+ *     FooBar.prop.feet = 2;
+ *     FooBar.prototype.walk = function () {};
+ *
+ *     function FooBarQuux() {}
+ *     OO.inheritClass( FooBarQuux, FooBar );
+ *     FooBarQuux.prototype.jump = function () {};
+ *
+ *     FooBarQuux.prop.feet === 2;
+ *     var fb = new FooBar();
+ *     fb.jump();
+ *     fb.walk();
+ *     fb instanceof Foo && fb instanceof FooBar && fb instanceof FooBarQuux;
+ *
+ * @method
+ * @param {Function} targetFn
+ * @param {Function} originFn
+ * @throws {Error} If target already inherits from origin
+ */
+oo.inheritClass = function ( targetFn, originFn ) {
+       if ( targetFn.prototype instanceof originFn ) {
+               throw new Error( 'Target already inherits from origin' );
+       }
+
+       var targetConstructor = targetFn.prototype.constructor;
+
+       targetFn.prototype = Object.create( originFn.prototype, {
+               // Restore constructor property of targetFn
+               constructor: {
+                       value: targetConstructor,
+                       enumerable: false,
+                       writable: true,
+                       configurable: true
+               }
+       } );
+
+       // Extend static properties - always initialize both sides
+       originFn.static = originFn.static || {};
+       targetFn.static = Object.create( originFn.static );
+};
+
+/**
+ * Utility to copy over *own* prototype properties of a mixin.
+ * The 'constructor' (whether implicit or explicit) is not copied over.
+ *
+ * This does not create inheritance to the origin. If inheritance is needed
+ * use oo.inheritClass instead.
+ *
+ * Beware: This can redefine a prototype property, call before setting your prototypes.
+ * Beware: Don't call before oo.inheritClass.
+ *
+ *     function Foo() {}
+ *     function Context() {}
+ *
+ *     // Avoid repeating this code
+ *     function ContextLazyLoad() {}
+ *     ContextLazyLoad.prototype.getContext = function () {
+ *         if ( !this.context ) {
+ *             this.context = new Context();
+ *         }
+ *         return this.context;
+ *     };
+ *
+ *     function FooBar() {}
+ *     OO.inheritClass( FooBar, Foo );
+ *     OO.mixinClass( FooBar, ContextLazyLoad );
+ *
+ * @method
+ * @param {Function} targetFn
+ * @param {Function} originFn
+ */
+oo.mixinClass = function ( targetFn, originFn ) {
+       var key;
+
+       // Copy prototype properties
+       for ( key in originFn.prototype ) {
+               if ( key !== 'constructor' && hasOwn.call( originFn.prototype, key ) ) {
+                       targetFn.prototype[key] = originFn.prototype[key];
+               }
+       }
+
+       // Copy static properties - always initialize both sides
+       targetFn.static = targetFn.static || {};
+       if ( originFn.static ) {
+               for ( key in originFn.static ) {
+                       if ( hasOwn.call( originFn.static, key ) ) {
+                               targetFn.static[key] = originFn.static[key];
+                       }
+               }
+       } else {
+               originFn.static = {};
+       }
+};
+
+/* Object Methods */
+
+/**
+ * Create a new object that is an instance of the same
+ * constructor as the input, inherits from the same object
+ * and contains the same own properties.
+ *
+ * This makes a shallow non-recursive copy of own properties.
+ * To create a recursive copy of plain objects, use #copy.
+ *
+ *     var foo = new Person( mom, dad );
+ *     foo.setAge( 21 );
+ *     var foo2 = OO.cloneObject( foo );
+ *     foo.setAge( 22 );
+ *
+ *     // Then
+ *     foo2 !== foo; // true
+ *     foo2 instanceof Person; // true
+ *     foo2.getAge(); // 21
+ *     foo.getAge(); // 22
+ *
+ * @method
+ * @param {Object} origin
+ * @return {Object} Clone of origin
+ */
+oo.cloneObject = function ( origin ) {
+       var key, r;
+
+       r = Object.create( origin.constructor.prototype );
+
+       for ( key in origin ) {
+               if ( hasOwn.call( origin, key ) ) {
+                       r[key] = origin[key];
+               }
+       }
+
+       return r;
+};
+
+/**
+ * Gets an array of all property values in an object.
+ *
+ * @method
+ * @param {Object} Object to get values from
+ * @returns {Array} List of object values
+ */
+oo.getObjectValues = function ( obj ) {
+       var key, values;
+
+       if ( obj !== Object( obj ) ) {
+               throw new TypeError( 'Called on non-object' );
+       }
+
+       values = [];
+       for ( key in obj ) {
+               if ( hasOwn.call( obj, key ) ) {
+                       values[values.length] = obj[key];
+               }
+       }
+
+       return values;
+};
+
+/**
+ * Recursively compares properties between two objects.
+ *
+ * A false result may be caused by property inequality or by properties in one object missing from
+ * the other. An asymmetrical test may also be performed, which checks only that properties in the
+ * first object are present in the second object, but not the inverse.
+ *
+ * @method
+ * @param {Object} a First object to compare
+ * @param {Object} b Second object to compare
+ * @param {boolean} [asymmetrical] Whether to check only that b contains values from a
+ * @returns {boolean} If the objects contain the same values as each other
+ */
+oo.compare = function ( a, b, asymmetrical ) {
+       var aValue, bValue, aType, bType, k;
+
+       if ( a === b ) {
+               return true;
+       }
+
+       for ( k in a ) {
+               aValue = a[k];
+               bValue = b[k];
+               aType = typeof aValue;
+               bType = typeof bValue;
+               if ( aType !== bType ||
+                       ( ( aType === 'string' || aType === 'number' ) && aValue !== bValue ) ||
+                       ( aValue === Object( aValue ) && !oo.compare( aValue, bValue, asymmetrical ) ) ) {
+                       return false;
+               }
+       }
+       // If the check is not asymmetrical, recursing with the arguments swapped will verify our result
+       return asymmetrical ? true : oo.compare( b, a, true );
+};
+
+/**
+ * Create a plain deep copy of any kind of object.
+ *
+ * Copies are deep, and will either be an object or an array depending on `source`.
+ *
+ * @method
+ * @param {Object} source Object to copy
+ * @param {Function} [callback] Applied to leaf values before they added to the clone
+ * @returns {Object} Copy of source object
+ */
+oo.copy = function ( source, callback ) {
+       var key, sourceValue, sourceType, destination;
+
+       if ( typeof source.clone === 'function' ) {
+               return source.clone();
+       }
+
+       destination = Array.isArray( source ) ? new Array( source.length ) : {};
+
+       for ( key in source ) {
+               sourceValue = source[key];
+               sourceType = typeof sourceValue;
+               if ( Array.isArray( sourceValue ) ) {
+                       // Array
+                       destination[key] = oo.copy( sourceValue, callback );
+               } else if ( sourceValue && typeof sourceValue.clone === 'function' ) {
+                       // Duck type object with custom clone method
+                       destination[key] = callback ?
+                               callback( sourceValue.clone() ) : sourceValue.clone();
+               } else if ( sourceValue && typeof sourceValue.cloneNode === 'function' ) {
+                       // DOM Node
+                       destination[key] = callback ?
+                               callback( sourceValue.cloneNode( true ) ) : sourceValue.cloneNode( true );
+               } else if ( oo.isPlainObject( sourceValue ) ) {
+                       // Plain objects
+                       destination[key] = oo.copy( sourceValue, callback );
+               } else {
+                       // Non-plain objects (incl. functions) and primitive values
+                       destination[key] = callback ? callback( sourceValue ) : sourceValue;
+               }
+       }
+
+       return destination;
+};
+
+/**
+ * Generates a hash of an object based on its name and data.
+ * Performance optimization: http://jsperf.com/ve-gethash-201208#/toJson_fnReplacerIfAoForElse
+ *
+ * To avoid two objects with the same values generating different hashes, we utilize the replacer
+ * argument of JSON.stringify and sort the object by key as it's being serialized. This may or may
+ * not be the fastest way to do this; we should investigate this further.
+ *
+ * Objects and arrays are hashed recursively. When hashing an object that has a .getHash()
+ * function, we call that function and use its return value rather than hashing the object
+ * ourselves. This allows classes to define custom hashing.
+ *
+ * @param {Object} val Object to generate hash for
+ * @returns {string} Hash of object
+ */
+oo.getHash = function ( val ) {
+       return JSON.stringify( val, oo.getHash.keySortReplacer );
+};
+
+/**
+ * Helper function for oo.getHash which sorts objects by key.
+ *
+ * This is a callback passed into JSON.stringify.
+ *
+ * @param {string} key Property name of value being replaced
+ * @param {Mixed} val Property value to replace
+ * @returns {Mixed} Replacement value
+ */
+oo.getHash.keySortReplacer = function ( key, val ) {
+       var normalized, keys, i, len;
+       if ( val && typeof val.getHashObject === 'function' ) {
+               // This object has its own custom hash function, use it
+               val = val.getHashObject();
+       }
+       if ( !Array.isArray( val ) && Object( val ) === val ) {
+               // Only normalize objects when the key-order is ambiguous
+               // (e.g. any object not an array).
+               normalized = {};
+               keys = Object.keys( val ).sort();
+               i = 0;
+               len = keys.length;
+               for ( ; i < len; i += 1 ) {
+                       normalized[keys[i]] = val[keys[i]];
+               }
+               return normalized;
+
+       // Primitive values and arrays get stable hashes
+       // by default. Lets those be stringified as-is.
+       } else {
+               return val;
+       }
+};
+
+/**
+ * Compute the union (duplicate-free merge) of a set of arrays.
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * By building an object (with the values for keys) in parallel with
+ * the array, a new item's existence in the union can be computed faster
+ *
+ * @param {Array...} arrays Arrays to union
+ * @returns {Array} Union of the arrays
+ */
+oo.simpleArrayUnion = function () {
+       var i, ilen, arr, j, jlen,
+               obj = {},
+               result = [];
+
+       for ( i = 0, ilen = arguments.length; i < ilen; i++ ) {
+               arr = arguments[i];
+               for ( j = 0, jlen = arr.length; j < jlen; j++ ) {
+                       if ( !obj[ arr[j] ] ) {
+                               obj[ arr[j] ] = true;
+                               result.push( arr[j] );
+                       }
+               }
+       }
+
+       return result;
+};
+
+/**
+ * Combine arrays (intersection or difference).
+ *
+ * An intersection checks the item exists in 'b' while difference checks it doesn't.
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * By building an object (with the values for keys) of 'b' we can
+ * compute the result faster
+ *
+ * @private
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @param {boolean} includeB Whether to items in 'b'
+ * @returns {Array} Combination (intersection or difference) of arrays
+ */
+function simpleArrayCombine( a, b, includeB ) {
+       var i, ilen, isInB,
+               bObj = {},
+               result = [];
+
+       for ( i = 0, ilen = b.length; i < ilen; i++ ) {
+               bObj[ b[i] ] = true;
+       }
+
+       for ( i = 0, ilen = a.length; i < ilen; i++ ) {
+               isInB = !!bObj[ a[i] ];
+               if ( isInB === includeB ) {
+                       result.push( a[i] );
+               }
+       }
+
+       return result;
+}
+
+/**
+ * Compute the intersection of two arrays (items in both arrays).
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @returns {Array} Intersection of arrays
+ */
+oo.simpleArrayIntersection = function ( a, b ) {
+       return simpleArrayCombine( a, b, true );
+};
+
+/**
+ * Compute the difference of two arrays (items in 'a' but not 'b').
+ *
+ * Arrays values must be convertable to object keys (strings)
+ *
+ * @param {Array} a First array
+ * @param {Array} b Second array
+ * @returns {Array} Intersection of arrays
+ */
+oo.simpleArrayDifference = function ( a, b ) {
+       return simpleArrayCombine( a, b, false );
+};
+/**
+ * Event emitter.
+ *
+ * @class OO.EventEmitter
+ *
+ * @constructor
+ * @property {Object} bindings
+ */
+oo.EventEmitter = function OoEventEmitter() {
+       // Properties
+       this.bindings = {};
+};
+
+/* Methods */
+
+/**
+ * Add a listener to events of a specific event.
+ *
+ * If the callback/context are already bound to the event, they will not be bound again.
+ *
+ * @method
+ * @param {string} event Type of event to listen to
+ * @param {Function} callback Function to call when event occurs
+ * @param {Array} [args] Arguments to pass to listener, will be prepended to emitted arguments
+ * @param {Object} [context=null] Object to use as context for callback function or call method on
+ * @throws {Error} Listener argument is not a function or method name
+ * @chainable
+ */
+oo.EventEmitter.prototype.on = function ( event, callback, args, context ) {
+       var i, bindings, binding;
+
+       // Validate callback
+       if ( typeof callback !== 'function' ) {
+               throw new Error( 'Invalid callback. Function or method name expected.' );
+       }
+       // Fallback to null context
+       if ( arguments.length < 4 ) {
+               context = null;
+       }
+       if ( this.bindings.hasOwnProperty( event ) ) {
+               // Check for duplicate callback and context for this event
+               bindings = this.bindings[event];
+               i = bindings.length;
+               while ( i-- ) {
+                       binding = bindings[i];
+                       if ( bindings.callback === callback && bindings.context === context ) {
+                               return this;
+                       }
+               }
+       } else {
+               // Auto-initialize bindings list
+               bindings = this.bindings[event] = [];
+       }
+       // Add binding
+       bindings.push( {
+               'callback': callback,
+               'args': args,
+               'context': context
+       } );
+       return this;
+};
+
+/**
+ * Adds a one-time listener to a specific event.
+ *
+ * @method
+ * @param {string} event Type of event to listen to
+ * @param {Function} listener Listener to call when event occurs
+ * @chainable
+ */
+oo.EventEmitter.prototype.once = function ( event, listener ) {
+       var eventEmitter = this;
+       return this.on( event, function listenerWrapper() {
+               eventEmitter.off( event, listenerWrapper );
+               listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
+       } );
+};
+
+/**
+ * Remove a specific listener from a specific event.
+ *
+ * @method
+ * @param {string} event Type of event to remove listener from
+ * @param {Function} [callback] Listener to remove, omit to remove all
+ * @param {Object} [context=null] Object used context for callback function or method
+ * @chainable
+ * @throws {Error} Listener argument is not a function
+ */
+oo.EventEmitter.prototype.off = function ( event, callback, context ) {
+       var i, bindings;
+
+       if ( arguments.length === 1 ) {
+               // Remove all bindings for event
+               if ( event in this.bindings ) {
+                       delete this.bindings[event];
+               }
+       } else {
+               if ( typeof callback !== 'function' ) {
+                       throw new Error( 'Invalid callback. Function expected.' );
+               }
+               if ( !( event in this.bindings ) || !this.bindings[event].length ) {
+                       // No matching bindings
+                       return this;
+               }
+               // Fallback to null context
+               if ( arguments.length < 3 ) {
+                       context = null;
+               }
+               // Remove matching handlers
+               bindings = this.bindings[event];
+               i = bindings.length;
+               while ( i-- ) {
+                       if ( bindings[i].callback === callback && bindings[i].context === context ) {
+                               bindings.splice( i, 1 );
+                       }
+               }
+               // Cleanup if now empty
+               if ( bindings.length === 0 ) {
+                       delete this.bindings[event];
+               }
+       }
+       return this;
+};
+
+/**
+ * Emit an event.
+ * TODO: Should this be chainable? What is the usefulness of the boolean
+ * return value here?
+ *
+ * @method
+ * @param {string} event Type of event
+ * @param {Mixed} args First in a list of variadic arguments passed to event handler (optional)
+ * @returns {boolean} If event was handled by at least one listener
+ */
+oo.EventEmitter.prototype.emit = function ( event ) {
+       var i, len, binding, bindings, args;
+
+       if ( event in this.bindings ) {
+               // Slicing ensures that we don't get tripped up by event handlers that add/remove bindings
+               bindings = this.bindings[event].slice();
+               args = Array.prototype.slice.call( arguments, 1 );
+               for ( i = 0, len = bindings.length; i < len; i++ ) {
+                       binding = bindings[i];
+                       binding.callback.apply(
+                               binding.context,
+                               binding.args ? binding.args.concat( args ) : args
+                       );
+               }
+               return true;
+       }
+       return false;
+};
+
+/**
+ * Connect event handlers to an object.
+ *
+ * @method
+ * @param {Object} context Object to call methods on when events occur
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} methods List of
+ * event bindings keyed by event name containing either method names, functions or arrays containing
+ * method name or function followed by a list of arguments to be passed to callback before emitted
+ * arguments
+ * @chainable
+ */
+oo.EventEmitter.prototype.connect = function ( context, methods ) {
+       var method, callback, args, event;
+
+       for ( event in methods ) {
+               method = methods[event];
+               // Allow providing additional args
+               if ( Array.isArray( method ) ) {
+                       args = method.slice( 1 );
+                       method = method[0];
+               } else {
+                       args = [];
+               }
+               // Allow callback to be a method name
+               if ( typeof method === 'string' ) {
+                       // Validate method
+                       if ( !context[method] || typeof context[method] !== 'function' ) {
+                               throw new Error( 'Method not found: ' + method );
+                       }
+                       // Resolve to function
+                       callback = context[method];
+               } else {
+                       callback = method;
+               }
+               // Add binding
+               this.on.apply( this, [ event, callback, args, context ] );
+       }
+       return this;
+};
+
+/**
+ * Disconnect event handlers from an object.
+ *
+ * @method
+ * @param {Object} context Object to disconnect methods from
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of
+ * event bindings keyed by event name containing either method names or functions
+ * @chainable
+ */
+oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
+       var i, method, callback, event, bindings;
+
+       if ( methods ) {
+               // Remove specific connections to the context
+               for ( event in methods ) {
+                       method = methods[event];
+                       if ( typeof method === 'string' ) {
+                               // Validate method
+                               if ( !context[method] || typeof context[method] !== 'function' ) {
+                                       throw new Error( 'Method not found: ' + method );
+                               }
+                               // Resolve to function
+                               callback = context[method];
+                       } else {
+                               callback = method;
+                       }
+                       this.off( event, callback, context );
+               }
+       } else {
+               // Remove all connections to the context
+               for ( event in this.bindings ) {
+                       bindings = this.bindings[event];
+                       i = bindings.length;
+                       while ( i-- ) {
+                               if ( bindings[i].context === context ) {
+                                       this.off( event, bindings[i].callback, context );
+                               }
+                       }
+               }
+       }
+
+       return this;
+};
+/**
+ * Data registry.
+ *
+ * @class OO.Registry
+ * @mixins OO.EventEmitter
+ *
+ * @constructor
+ */
+oo.Registry = function OoRegistry() {
+       // Mixin constructors
+       oo.EventEmitter.call( this );
+
+       // Properties
+       this.registry = {};
+};
+
+/* Inheritance */
+
+oo.mixinClass( oo.Registry, oo.EventEmitter );
+
+/* Events */
+
+/**
+ * @event register
+ * @param {string} name
+ * @param {Mixed} data
+ */
+
+/* Methods */
+
+/**
+ * Associate one or more symbolic names with some data.
+ *
+ * Only the base name will be registered, overriding any existing entry with the same base name.
+ *
+ * @method
+ * @param {string|string[]} name Symbolic name or list of symbolic names
+ * @param {Mixed} data Data to associate with symbolic name
+ * @fires register
+ * @throws {Error} Name argument must be a string or array
+ */
+oo.Registry.prototype.register = function ( name, data ) {
+       if ( typeof name !== 'string' && !Array.isArray( name ) ) {
+               throw new Error( 'Name argument must be a string or array, cannot be a ' + typeof name );
+       }
+       var i, len;
+       if ( Array.isArray( name ) ) {
+               for ( i = 0, len = name.length; i < len; i++ ) {
+                       this.register( name[i], data );
+               }
+       } else if ( typeof name === 'string' ) {
+               this.registry[name] = data;
+               this.emit( 'register', name, data );
+       } else {
+               throw new Error( 'Name must be a string or array of strings, cannot be a ' + typeof name );
+       }
+};
+
+/**
+ * Gets data for a given symbolic name.
+ *
+ * Lookups are done using the base name.
+ *
+ * @method
+ * @param {string} name Symbolic name
+ * @returns {Mixed|undefined} Data associated with symbolic name
+ */
+oo.Registry.prototype.lookup = function ( name ) {
+       return this.registry[name];
+};
+/**
+ * Object factory.
+ *
+ * @class OO.Factory
+ * @extends OO.Registry
+ *
+ * @constructor
+ */
+oo.Factory = function OoFactory() {
+       // Parent constructor
+       oo.Registry.call( this );
+
+       // Properties
+       this.entries = [];
+};
+
+/* Inheritance */
+
+oo.inheritClass( oo.Factory, oo.Registry );
+
+/* Methods */
+
+/**
+ * Register a constructor with the factory.
+ *
+ * Classes must have a static `name` property to be registered.
+ *
+ *     @example
+ *     function MyClass() {};
+ *     // Adds a static property to the class defining a symbolic name
+ *     MyClass.static = { 'name': 'mine' };
+ *     // Registers class with factory, available via symbolic name 'mine'
+ *     factory.register( MyClass );
+ *
+ * @method
+ * @param {Function} constructor Constructor to use when creating object
+ * @throws {Error} Name must be a string and must not be empty
+ * @throws {Error} Constructor must be a function
+ */
+oo.Factory.prototype.register = function ( constructor ) {
+       var name;
+
+       if ( typeof constructor !== 'function' ) {
+               throw new Error( 'constructor must be a function, cannot be a ' + typeof constructor );
+       }
+       name = constructor.static && constructor.static.name;
+       if ( typeof name !== 'string' || name === '' ) {
+               throw new Error( 'Name must be a string and must not be empty' );
+       }
+       this.entries.push( name );
+       oo.Registry.prototype.register.call( this, name, constructor );
+};
+
+/**
+ * Create an object based on a name.
+ *
+ * Name is used to look up the constructor to use, while all additional arguments are passed to the
+ * constructor directly, so leaving one out will pass an undefined to the constructor.
+ *
+ * @method
+ * @param {string} name Object name
+ * @param {Mixed...} [args] Arguments to pass to the constructor
+ * @returns {Object} The new object
+ * @throws {Error} Unknown object name
+ */
+oo.Factory.prototype.create = function ( name ) {
+       var args, obj, constructor;
+
+       if ( !this.registry.hasOwnProperty( name ) ) {
+               throw new Error( 'No class registered by that name: ' + name );
+       }
+       constructor = this.registry[name];
+
+       // Convert arguments to array and shift the first argument (name) off
+       args = Array.prototype.slice.call( arguments, 1 );
+
+       // We can't use the "new" operator with .apply directly because apply needs a
+       // context. So instead just do what "new" does: create an object that inherits from
+       // the constructor's prototype (which also makes it an "instanceof" the constructor),
+       // then invoke the constructor with the object as context, and return it (ignoring
+       // the constructor's return value).
+       obj = Object.create( constructor.prototype );
+       constructor.apply( obj, args );
+       return obj;
+};
+/*jshint node:true */
+if ( typeof module !== 'undefined' && module.exports ) {
+       module.exports = oo;
+} else {
+       global.OO = oo;
+}
+}( this ) );
diff --git a/resources/package.json b/resources/package.json
new file mode 100644 (file)
index 0000000..a1722b5
--- /dev/null
@@ -0,0 +1,13 @@
+{
+       "name": "mediawiki-ui-dependencies",
+       "description": "Node.js dependencies used for KSS generation",
+       "version": "0.0.1",
+       "dependencies": {
+               "kss": ">=0.3.6"
+       },
+       "repository" : {
+               "type" : "git",
+               "url" : "https://gerrit.wikimedia.org/r/p/mediawiki/core.git"
+       }
+
+}
diff --git a/resources/scripts/nodecheck.sh b/resources/scripts/nodecheck.sh
new file mode 100755 (executable)
index 0000000..3ee0f83
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env bash
+if command -v npm > /dev/null ; then
+  npm install
+else
+  echo "You need to install Node.JS!"
+  echo "See http://nodejs.org/"
+  exit 1
+fi
index b6a27d2..cd21ecc 100644 (file)
@@ -1,9 +1,11 @@
 /**
  * This script provides a function which is run to evaluate whether or not to
- * continue loading the jquery and mediawiki modules. This code should work on
+ * continue loading jQuery and the MediaWiki modules. This code should work on
  * even the most ancient of browsers, so be very careful when editing.
  */
 
+var mediaWikiLoadStart = ( new Date() ).getTime();
+
 /**
  * Returns false when run in a black-listed browser
  *
@@ -41,7 +43,9 @@ function isCompatible( ua ) {
                // Opera Mini, all versions
                ua.match( /Opera Mini/ ) ||
                // Nokia's Ovi Browser
-               ua.match( /S40OviBrowser/ )
+               ua.match( /S40OviBrowser/ ) ||
+               // Google Glass browser groks JS but UI is too limited
+               ( ua.match( /Glass/ ) && ua.match( /Android/ ) )
        );
 }
 
diff --git a/resources/styleguide-template/index.html b/resources/styleguide-template/index.html
new file mode 100644 (file)
index 0000000..99f3e4f
--- /dev/null
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html class="no-js" lang="en">
+<head>
+       <meta charset="utf-8">
+       <title>MediaWiki Living Styleguide</title>
+       <meta name="description" content="">
+       <meta name="generator" content="kss-node" />
+       <meta name="viewport" content="width=device-width">
+       <link rel="stylesheet" href="public/kss.css">
+       <link rel="stylesheet" href="public/style.css">
+</head>
+<body><div id="kss-wrapper">
+       <header id="kss-header">
+               <hgroup><h1>MediaWiki Living Styleguide</h1></hgroup>
+       </header>
+       <nav class="content">
+               <ul>
+               <li><a href="index.html">0.0: Overview</a></li>
+               {{#eachRoot}}
+               <li>
+                       <a href="section-{{reference}}.html">{{reference}}.0: {{header}}</a>
+               </li>
+               {{/eachRoot}}
+               </ul>
+       </nav>
+       <article>
+               {{#if overview}}
+                       {{html overview}}
+               {{else}}
+                       {{#eachSection rootNumber}}
+                               {{#whenDepth 1}}
+                                       <h1>{{ reference }}.0 - {{ header }}</h1>
+                               {{else}}
+                                       {{#whenDepth 2}}
+                                       <h2>{{ reference }} - {{ header }}</h2>
+                                       {{/whenDepth}}
+                                       {{#whenDepth 3}}
+                                       <h3>{{ reference }} - {{ header }}</h3>
+                                       {{/whenDepth}}
+                               {{/whenDepth}}
+                               {{#ifAny markup modifiers}}
+                                               <div>{{html description}}</div>
+                                               <strong>Default styling</strong><br>
+                                               {{modifierMarkup}}
+                                               {{#eachModifier}}
+                                               {{html description}}<br>
+                                               <p>{{name}}</p>
+                                               {{modifierMarkup}}
+                                               {{/eachModifier}}
+                                               <pre class="prettyprint lang-html">{{markup}}</pre>
+                               {{else}}
+                                               {{#if description}}
+                                                       {{html description}}
+                                               {{/if}}
+                               {{/ifAny}}
+                       {{/eachSection}}
+               {{/if}}
+       </article>
+</div></body>
+</html>
diff --git a/resources/styleguide-template/public/kss.less b/resources/styleguide-template/public/kss.less
new file mode 100644 (file)
index 0000000..431303d
--- /dev/null
@@ -0,0 +1,24 @@
+header {
+       padding: .8em 16px 0;
+}
+
+nav {
+       float: left;
+       width: 200px;
+}
+
+article {
+       margin-left: 250px;
+}
+
+.content.kss-no-margin {
+       margin: 0;
+}
+
+// FIXME: Remove when typography module in mediawiki-ui
+body {
+       font-family: "Nimbus Sans L", "Liberation Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+}
+h1,h2,h3,h4,h5 {
+       font-family: "DejaVu Serif", Georgia, serif;
+}
diff --git a/resources/styleguide-template/public/less.js b/resources/styleguide-template/public/less.js
new file mode 100644 (file)
index 0000000..89b7637
--- /dev/null
@@ -0,0 +1,9 @@
+//
+// LESS - Leaner CSS v1.2.1
+// http://lesscss.org
+// 
+// Copyright (c) 2009-2011, Alexis Sellier
+// Licensed under the Apache 2.0 License.
+//
+(function(a,b){function c(b){return a.less[b.split("/")[1]]}function m(){var a=document.getElementsByTagName("style");for(var b=0;b<a.length;b++)a[b].type.match(k)&&(new d.Parser).parse(a[b].innerHTML||"",function(c,d){var e=d.toCSS(),f=a[b];f.type="text/css",f.styleSheet?f.styleSheet.cssText=e:f.innerHTML=e})}function n(a,b){for(var c=0;c<d.sheets.length;c++)o(d.sheets[c],a,b,d.sheets.length-(c+1))}function o(b,c,e,f){var g=a.location.href.replace(/[#?].*$/,""),i=b.href.replace(/\?.*$/,""),j=h&&h.getItem(i),k=h&&h.getItem(i+":timestamp"),l={css:j,timestamp:k};/^(https?|file):/.test(i)||(i.charAt(0)=="/"?i=a.location.protocol+"//"+a.location.host+i:i=g.slice(0,g.lastIndexOf("/")+1)+i);var m=i.match(/([^\/]+)$/)[1];s(b.href,b.type,function(a,g){if(!e&&l&&g&&(new Date(g)).valueOf()===(new Date(l.timestamp)).valueOf())r(l.css,b),c(null,b,{local:!0,remaining:f});else try{(new d.Parser({optimization:d.optimization,paths:[i.replace(/[\w\.-]+$/,"")],mime:b.type,filename:m})).parse(a,function(d,e){if(d)return w(d,i);try{c(d,e,a,b,{local:!1,lastModified:g,remaining:f}),u(document.getElementById("less-error-message:"+q(i)))}catch(d){w(d,i)}})}catch(h){w(h,i)}},function(a,b){throw new Error("Couldn't load "+b+" ("+a+")")})}function q(a){return a.replace(/^[a-z]+:\/\/?[^\/]+/,"").replace(/^\//,"").replace(/\?.*$/,"").replace(/\.[^\.\/]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function r(a,b,c){var d,e=b.href?b.href.replace(/\?.*$/,""):"",f="less:"+(b.title||q(e));(d=document.getElementById(f))===null&&(d=document.createElement("style"),d.type="text/css",d.media=b.media||"screen",d.id=f,document.getElementsByTagName("head")[0].appendChild(d));if(d.styleSheet)try{d.styleSheet.cssText=a}catch(g){throw new Error("Couldn't reassign styleSheet.cssText.")}else(function(a){d.childNodes.length>0?d.firstChild.nodeValue!==a.nodeValue&&d.replaceChild(a,d.firstChild):d.appendChild(a)})(document.createTextNode(a));c&&h&&(v("saving "+e+" to cache."),h.setItem(e,a),h.setItem(e+":timestamp",c))}function s(a,b,c,e){function i(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):typeof d=="function"&&d(b.status,a)}var f=t(),h=g?!1:d.async;typeof f.overrideMimeType=="function"&&f.overrideMimeType("text/css"),f.open("GET",a,h),f.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),f.send(null),g?f.status===0||f.status>=200&&f.status<300?c(f.responseText):e(f.status,a):h?f.onreadystatechange=function(){f.readyState==4&&i(f,c,e)}:i(f,c,e)}function t(){if(a.XMLHttpRequest)return new XMLHttpRequest;try{return new ActiveXObject("MSXML2.XMLHTTP.3.0")}catch(b){return v("browser doesn't support AJAX."),null}}function u(a){return a&&a.parentNode.removeChild(a)}function v(a){d.env=="development"&&typeof console!="undefined"&&console.log("less: "+a)}function w(a,b){var c="less-error-message:"+q(b),e='<li><label>{line}</label><pre class="{class}">{content}</pre></li>',f=document.createElement("div"),g,h,i=[],j=a.filename||b;f.id=c,f.className="less-error-message",h="<h3>"+(a.message||"There is an error in your .less file")+"</h3>"+'<p>in <a href="'+j+'">'+j+"</a> ";var k=function(a,b,c){a.extract[b]&&i.push(e.replace(/\{line\}/,parseInt(a.line)+(b-1)).replace(/\{class\}/,c).replace(/\{content\}/,a.extract[b]))};a.stack?h+="<br/>"+a.stack.split("\n").slice(1).join("<br/>"):a.extract&&(k(a,0,""),k(a,1,"line"),k(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":</p>"+"<ul>"+i.join("")+"</ul>"),f.innerHTML=h,r([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),f.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),d.env=="development"&&(g=setInterval(function(){document.body&&(document.getElementById(c)?document.body.replaceChild(f,document.getElementById(c)):document.body.insertBefore(f,document.body.firstChild),clearInterval(g))},10))}Array.isArray||(Array.isArray=function(a){return Object.prototype.toString.call(a)==="[object Array]"||a instanceof Array}),Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c=this.length>>>0;for(var d=0;d<c;d++)d in this&&a.call(b,this[d],d,this)}),Array.prototype.map||(Array.prototype.map=function(a){var b=this.length>>>0,c=new Array(b),d=arguments[1];for(var e=0;e<b;e++)e in this&&(c[e]=a.call(d,this[e],e,this));return c}),Array.prototype.filter||(Array.prototype.filter=function(a){var b=[],c=arguments[1];for(var d=0;d<this.length;d++)a.call(c,this[d])&&b.push(this[d]);return b}),Array.prototype.reduce||(Array.prototype.reduce=function(a){var b=this.length>>>0,c=0;if(b===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var d=arguments[1];else do{if(c in this){d=this[c++];break}if(++c>=b)throw new TypeError}while(!0);for(;c<b;c++)c in this&&(d=a.call(null,d,this[c],c,this));return d}),Array.prototype.indexOf||(Array.prototype.indexOf=function(a){var b=this.length,c=arguments[1]||0;if(!b)return-1;if(c>=b)return-1;c<0&&(c+=b);for(;c<b;c++){if(!Object.prototype.hasOwnProperty.call(this,c))continue;if(a===this[c])return c}return-1}),Object.keys||(Object.keys=function(a){var b=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&b.push(c);return b}),String.prototype.trim||(String.prototype.trim=function(){return String(this).replace(/^\s\s*/,"").replace(/\s\s*$/,"")});var d,f;typeof environment=="object"&&{}.toString.call(environment)==="[object Environment]"?(typeof a=="undefined"?d={}:d=a.less={},f=d.tree={},d.mode="rhino"):typeof a=="undefined"?(d=exports,f=c("./tree"),d.mode="node"):(typeof a.less=="undefined"&&(a.less={}),d=a.less,f=a.less.tree={},d.mode="browser"),d.Parser=function(b){function t(){j=m[i],k=h,n=h}function u(){m[i]=j,h=k,n=h}function v(){h>n&&(m[i]=m[i].slice(h-n),n=h)}function w(a){var b,c,d,e,f,j,k,l;if(a instanceof Function)return a.call(o.parsers);if(typeof a=="string")b=g.charAt(h)===a?a:null,d=1,v();else{v();if(!(b=a.exec(m[i])))return null;d=b[0].length}if(b){l=h+=d,j=h+m[i].length-d;while(h<j){e=g.charCodeAt(h);if(e!==32&&e!==10&&e!==9)break;h++}return m[i]=m[i].slice(d+(h-l)),n=h,m[i].length===0&&i<m.length-1&&i++,typeof b=="string"?b:b.length===1?b[0]:b}}function x(a,b){var c=w(a);if(!!c)return c;y(b||(typeof a=="string"?"expected '"+a+"' got '"+g.charAt(h)+"'":"unexpected token"))}function y(a,b){throw{index:h,type:b||"Syntax",message:a}}function z(a){return typeof a=="string"?g.charAt(h)===a:a.test(m[i])?!0:!1}function A(a,b){return a.filename&&b.filename&&a.filename!==b.filename?o.imports.contents[a.filename]:g}function B(a,b){for(var c=a,d=-1;c>=0&&b.charAt(c)!=="\n";c--)d++;return{line:typeof a=="number"?(b.slice(0,a).match(/\n/g)||"").length:null,column:d}}function C(a,b){var c=A(a,b),d=B(a.index,c),e=d.line,f=d.column,g=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.filename,this.index=a.index,this.line=typeof e=="number"?e+1:null,this.callLine=a.call&&B(a.call,c)+1,this.callExtract=g[B(a.call,c)],this.stack=a.stack,this.column=f,this.extract=[g[e-1],g[e],g[e+1]]}var g,h,i,j,k,l,m,n,o,q=this,r=function(){},s=this.imports={paths:b&&b.paths||[],queue:[],files:{},contents:{},mime:b&&b.mime,error:null,push:function(a,c){var e=this;this.queue.push(a),d.Parser.importer(a,this.paths,function(b,d,f){e.queue.splice(e.queue.indexOf(a),1),e.files[a]=d,e.contents[a]=f,b&&!e.error&&(e.error=b),c(b,d),e.queue.length===0&&r()},b)}};return this.env=b=b||{},this.optimization="optimization"in this.env?this.env.optimization:1,this.env.filename=this.env.filename||null,o={imports:s,parse:function(a,e){var j,k,p,q,s,t,u=[],v,x=null;h=i=n=l=0,m=[],g=a.replace(/\r\n/g,"\n"),m=function(a){var c=0,d=/[^"'`\{\}\/\(\)]+/g,e=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,f=0,h,i=a[0],j,k;for(var l=0,m,n;l<g.length;l++){d.lastIndex=l,(h=d.exec(g))&&h.index===l&&(l+=h[0].length,i.push(h[0])),m=g.charAt(l),e.lastIndex=l,!k&&!j&&m==="/"&&(n=g.charAt(l+1),(n==="/"||n==="*")&&(h=e.exec(g))&&h.index===l&&(l+=h[0].length,i.push(h[0]),m=g.charAt(l)));if(m==="{"&&!k&&!j)f++,i.push(m);else if(m==="}"&&!k&&!j)f--,i.push(m),a[++c]=i=[];else if(m==="("&&!k&&!j)i.push(m),j=!0;else if(m===")"&&!k&&j)i.push(m),j=!1;else{if(m==='"'||m==="'"||m==="`")k?k=k===m?!1:k:k=m;i.push(m)}}if(f>0)throw{type:"Syntax",message:"Missing closing `}`",filename:b.filename};return a.map(function(a){return a.join("")})}([[]]);try{j=new f.Ruleset([],w(this.parsers.primary)),j.root=!0}catch(y){return e(new C(y,b))}j.toCSS=function(a){var e,g,h;return function(e,g){var h=[],i;e=e||{},typeof g=="object"&&!Array.isArray(g)&&(g=Object.keys(g).map(function(a){var b=g[a];return b instanceof f.Value||(b instanceof f.Expression||(b=new f.Expression([b])),b=new f.Value([b])),new f.Rule("@"+a,b,!1,0)}),h=[new f.Ruleset(null,g)]);try{var j=a.call(this,{frames:h}).toCSS([],{compress:e.compress||!1})}catch(k){throw new C(k,b)}if(i=o.imports.error)throw i instanceof C?i:new C(i,b);return e.yuicompress&&d.mode==="node"?c("./cssmin").compressor.cssmin(j):e.compress?j.replace(/(\s)+/g,"$1"):j}}(j.eval);if(h<g.length-1){h=l,t=g.split("\n"),s=(g.slice(0,h).match(/\n/g)||"").length+1;for(var z=h,A=-1;z>=0&&g.charAt(z)!=="\n";z--)A++;x={type:"Parse",message:"Syntax Error on line "+s,index:h,filename:b.filename,line:s,column:A,extract:[t[s-2],t[s-1],t[s]]}}this.imports.queue.length>0?r=function(){e(x,j)}:e(x,j)},parsers:{primary:function(){var a,b=[];while((a=w(this.mixin.definition)||w(this.rule)||w(this.ruleset)||w(this.mixin.call)||w(this.comment)||w(this.directive))||w(/^[\s\n]+/))a&&b.push(a);return b},comment:function(){var a;if(g.charAt(h)!=="/")return;if(g.charAt(h+1)==="/")return new f.Comment(w(/^\/\/.*/),!0);if(a=w(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new f.Comment(a)},entities:{quoted:function(){var a,b=h,c;g.charAt(b)==="~"&&(b++,c=!0);if(g.charAt(b)!=='"'&&g.charAt(b)!=="'")return;c&&w("~");if(a=w(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new f.Quoted(a[0],a[1]||a[2],c)},keyword:function(){var a;if(a=w(/^[_A-Za-z-][_A-Za-z0-9-]*/))return f.colors.hasOwnProperty(a)?new f.Color(f.colors[a].slice(1)):new f.Keyword(a)},call:function(){var a,c,d=h;if(!(a=/^([\w-]+|%|progid:[\w\.]+)\(/.exec(m[i])))return;a=a[1].toLowerCase();if(a==="url")return null;h+=a.length;if(a==="alpha")return w(this.alpha);w("("),c=w(this.entities.arguments);if(!w(")"))return;if(a)return new f.Call(a,c,d,b.filename)},arguments:function(){var a=[],b;while(b=w(this.entities.assignment)||w(this.expression)){a.push(b);if(!w(","))break}return a},literal:function(){return w(this.entities.dimension)||w(this.entities.color)||w(this.entities.quoted)},assignment:function(){var a,b;if((a=w(/^\w+(?=\s?=)/i))&&w("=")&&(b=w(this.entity)))return new f.Assignment(a,b)},url:function(){var a;if(g.charAt(h)!=="u"||!w(/^url\(/))return;return a=w(this.entities.quoted)||w(this.entities.variable)||w(this.entities.dataURI)||w(/^[-\w%@$\/.&=:;#+?~]+/)||"",x(")"),new f.URL(a.value||a.data||a instanceof f.Variable?a:new f.Anonymous(a),s.paths)},dataURI:function(){var a;if(w(/^data:/)){a={},a.mime=w(/^[^\/]+\/[^,;)]+/)||"",a.charset=w(/^;\s*charset=[^,;)]+/)||"",a.base64=w(/^;\s*base64/)||"",a.data=w(/^,\s*[^)]+/);if(a.data)return a}},variable:function(){var a,c=h;if(g.charAt(h)==="@"&&(a=w(/^@@?[\w-]+/)))return new f.Variable(a,c,b.filename)},color:function(){var a;if(g.charAt(h)==="#"&&(a=w(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/)))return new f.Color(a[1])},dimension:function(){var a,b=g.charCodeAt(h);if(b>57||b<45||b===47)return;if(a=w(/^(-?\d*\.?\d+)(px|%|em|rem|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/))return new f.Dimension(a[1],a[2])},javascript:function(){var a,b=h,c;g.charAt(b)==="~"&&(b++,c=!0);if(g.charAt(b)!=="`")return;c&&w("~");if(a=w(/^`([^`]*)`/))return new f.JavaScript(a[1],h,c)}},variable:function(){var a;if(g.charAt(h)==="@"&&(a=w(/^(@[\w-]+)\s*:/)))return a[1]},shorthand:function(){var a,b;if(!z(/^[@\w.%-]+\/[@\w.-]+/))return;if((a=w(this.entity))&&w("/")&&(b=w(this.entity)))return new f.Shorthand(a,b)},mixin:{call:function(){var a=[],c,d,e,i=h,j=g.charAt(h),k=!1;if(j!=="."&&j!=="#")return;while(c=w(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/))a.push(new f.Element(d,c,h)),d=w(">");w("(")&&(e=w(this.entities.arguments))&&w(")"),w(this.important)&&(k=!0);if(a.length>0&&(w(";")||z("}")))return new f.mixin.Call(a,e,i,b.filename,k)},definition:function(){var a,b=[],c,d,e,i,j;if(g.charAt(h)!=="."&&g.charAt(h)!=="#"||z(/^[^{]*(;|})/))return;t();if(c=w(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)){a=c[1];while(e=w(this.entities.variable)||w(this.entities.literal)||w(this.entities.keyword)){e instanceof f.Variable?w(":")?(i=x(this.expression,"expected expression"),b.push({name:e.name,value:i})):b.push({name:e.name}):b.push({value:e});if(!w(","))break}x(")"),w(/^when/)&&(j=x(this.conditions,"expected condition")),d=w(this.block);if(d)return new f.mixin.Definition(a,b,d,j);u()}}},entity:function(){return w(this.entities.literal)||w(this.entities.variable)||w(this.entities.url)||w(this.entities.call)||w(this.entities.keyword)||w(this.entities.javascript)||w(this.comment)},end:function(){return w(";")||z("}")},alpha:function(){var a;if(!w(/^\(opacity=/i))return;if(a=w(/^\d+/)||w(this.entities.variable))return x(")"),new f.Alpha(a)},element:function(){var a,b,c,d;c=w(this.combinator),a=w(/^(?:\d+\.\d+|\d+)%/)||w(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)||w("*")||w(this.attribute)||w(/^\([^)@]+\)/),a||w("(")&&(d=w(this.entities.variable))&&w(")")&&(a=new f.Paren(d));if(a)return new f.Element(c,a,h);if(c.value&&c.value.charAt(0)==="&")return new f.Element(c,null,h)},combinator:function(){var a,b=g.charAt(h);if(b===">"||b==="+"||b==="~"){h++;while(g.charAt(h)===" ")h++;return new f.Combinator(b)}if(b==="&"){a="&",h++,g.charAt(h)===" "&&(a="& ");while(g.charAt(h)===" ")h++;return new f.Combinator(a)}if(b===":"&&g.charAt(h+1)===":"){h+=2;while(g.charAt(h)===" ")h++;return new f.Combinator("::")}return g.charAt(h-1)===" "?new f.Combinator(" "):new f.Combinator(null)},selector:function(){var a,b,c=[],d,e;while(b=w(this.element)){d=g.charAt(h),c.push(b);if(d==="{"||d==="}"||d===";"||d===",")break}if(c.length>0)return new f.Selector(c)},tag:function(){return w(/^[a-zA-Z][a-zA-Z-]*[0-9]?/)||w("*")},attribute:function(){var a="",b,c,d;if(!w("["))return;if(b=w(/^[a-zA-Z-]+/)||w(this.entities.quoted))(d=w(/^[|~*$^]?=/))&&(c=w(this.entities.quoted)||w(/^[\w-]+/))?a=[b,d,c.toCSS?c.toCSS():c].join(""):a=b;if(!w("]"))return;if(a)return"["+a+"]"},block:function(){var a;if(w("{")&&(a=w(this.primary))&&w("}"))return a},ruleset:function(){var a=[],b,c,d;t();while(b=w(this.selector)){a.push(b),w(this.comment);if(!w(","))break;w(this.comment)}if(a.length>0&&(c=w(this.block)))return new f.Ruleset(a,c);l=h,u()},rule:function(){var a,b,c=g.charAt(h),d,e;t();if(c==="."||c==="#"||c==="&")return;if(a=w(this.variable)||w(this.property)){a.charAt(0)!="@"&&(e=/^([^@+\/'"*`(;{}-]*);/.exec(m[i]))?(h+=e[0].length-1,b=new f.Anonymous(e[1])):a==="font"?b=w(this.font):b=w(this.value),d=w(this.important);if(b&&w(this.end))return new f.Rule(a,b,d,k);l=h,u()}},"import":function(){var a,b,c=h;if(w(/^@import\s+/)&&(a=w(this.entities.quoted)||w(this.entities.url))){b=w(this.mediaFeatures);if(w(";"))return new f.Import(a,s,b,c)}},mediaFeature:function(){var a=[];do if(e=w(this.entities.keyword))a.push(e);else if(w("(")){p=w(this.property),e=w(this.entity);if(!w(")"))return null;if(p&&e)a.push(new f.Paren(new f.Rule(p,e,null,h,!0)));else{if(!e)return null;a.push(new f.Paren(e))}}while(e);if(a.length>0)return new f.Expression(a)},mediaFeatures:function(){var a,b=[];while(a=w(this.mediaFeature)){b.push(a);if(!w(","))break}return b.length>0?b:null},media:function(){var a;if(w(/^@media/)){a=w(this.mediaFeatures);if(rules=w(this.block))return new f.Directive("@media",rules,a)}},directive:function(){var a,b,c,d,e,i;if(g.charAt(h)!=="@")return;if(b=w(this["import"])||w(this.media))return b;if(a=w(/^@page|@keyframes/)||w(/^@(?:-webkit-|-moz-|-o-|-ms-)[a-z0-9-]+/)){d=(w(/^[^{]+/)||"").trim();if(c=w(this.block))return new f.Directive(a+" "+d,c)}else if(a=w(/^@[-a-z]+/))if(a==="@font-face"){if(c=w(this.block))return new f.Directive(a,c)}else if((b=w(this.entity))&&w(";"))return new f.Directive(a,b)},font:function(){var a=[],b=[],c,d,e,g;while(g=w(this.shorthand)||w(this.entity))b.push(g);a.push(new f.Expression(b));if(w(","))while(g=w(this.expression)){a.push(g);if(!w(","))break}return new f.Value(a)},value:function(){var a,b=[],c;while(a=w(this.expression)){b.push(a);if(!w(","))break}if(b.length>0)return new f.Value(b)},important:function(){if(g.charAt(h)==="!")return w(/^! *important/)},sub:function(){var a;if(w("(")&&(a=w(this.expression))&&w(")"))return a},multiplication:function(){var a,b,c,d;if(a=w(this.operand)){while(!z(/^\/\*/)&&(c=w("/")||w("*"))&&(b=w(this.operand)))d=new f.Operation(c,[d||a,b]);return d||a}},addition:function(){var a,b,c,d;if(a=w(this.multiplication)){while((c=w(/^[-+]\s+/)||g.charAt(h-1)!=" "&&(w("+")||w("-")))&&(b=w(this.multiplication)))d=new f.Operation(c,[d||a,b]);return d||a}},conditions:function(){var a,b,c=h,d;if(a=w(this.condition)){while(w(",")&&(b=w(this.condition)))d=new f.Condition("or",d||a,b,c);return d||a}},condition:function(){var a,b,c,d,e=h,g=!1;w(/^not/)&&(g=!0),x("(");if(a=w(this.addition)||w(this.entities.keyword)||w(this.entities.quoted))return(d=w(/^(?:>=|=<|[<=>])/))?(b=w(this.addition)||w(this.entities.keyword)||w(this.entities.quoted))?c=new f.Condition(d,a,b,e,g):y("expected expression"):c=new f.Condition("=",a,new f.Keyword("true"),e,g),x(")"),w(/^and/)?new f.Condition("and",c,w(this.condition)):c},operand:function(){var a,b=g.charAt(h+1);g.charAt(h)==="-"&&(b==="@"||b==="(")&&(a=w("-"));var c=w(this.sub)||w(this.entities.dimension)||w(this.entities.color)||w(this.entities.variable)||w(this.entities.call);return a?new f.Operation("*",[new f.Dimension(-1),c]):c},expression:function(){var a,b,c=[],d;while(a=w(this.addition)||w(this.entity))c.push(a);if(c.length>0)return new f.Expression(c)},property:function(){var a;if(a=w(/^(\*?-?[-a-z_0-9]+)\s*:/))return a[1]}}}};if(d.mode==="browser"||d.mode==="rhino")d.Parser.importer=function(a,b,c,d){a.charAt(0)!=="/"&&b.length>0&&(a=b[0]+a),o({href:a,title:a,type:d.mime},c,!0)};(function(a){function b(b){return a.functions.hsla(b.h,b.s,b.l,b.a)}function c(b){if(b instanceof a.Dimension)return parseFloat(b.unit=="%"?b.value/100:b.value);if(typeof b=="number")return b;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function d(a){return Math.min(1,Math.max(0,a))}a.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(b,d,e,f){var g=[b,d,e].map(function(a){return c(a)}),f=c(f);return new a.Color(g,f)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,d,e){function h(a){return a=a<0?a+1:a>1?a-1:a,a*6<1?g+(f-g)*a*6:a*2<1?f:a*3<2?g+(f-g)*(2/3-a)*6:g}a=c(a)%360/360,b=c(b),d=c(d),e=c(e);var f=d<=.5?d*(b+1):d+b-d*b,g=d*2-f;return this.rgba(h(a+1/3)*255,h(a)*255,h(a-1/3)*255,e)},hue:function(b){return new a.Dimension(Math.round(b.toHSL().h))},saturation:function(b){return new a.Dimension(Math.round(b.toHSL().s*100),"%")},lightness:function(b){return new a.Dimension(Math.round(b.toHSL().l*100),"%")},alpha:function(b){return new a.Dimension(b.toHSL().a)},saturate:function(a,c){var e=a.toHSL();return e.s+=c.value/100,e.s=d(e.s),b(e)},desaturate:function(a,c){var e=a.toHSL();return e.s-=c.value/100,e.s=d(e.s),b(e)},lighten:function(a,c){var e=a.toHSL();return e.l+=c.value/100,e.l=d(e.l),b(e)},darken:function(a,c){var e=a.toHSL();return e.l-=c.value/100,e.l=d(e.l),b(e)},fadein:function(a,c){var e=a.toHSL();return e.a+=c.value/100,e.a=d(e.a),b(e)},fadeout:function(a,c){var e=a.toHSL();return e.a-=c.value/100,e.a=d(e.a),b(e)},fade:function(a,c){var e=a.toHSL();return e.a=c.value/100,e.a=d(e.a),b(e)},spin:function(a,c){var d=a.toHSL(),e=(d.h+c.value)%360;return d.h=e<0?360+e:e,b(d)},mix:function(b,c,d){var e=d.value/100,f=e*2-1,g=b.toHSL().a-c.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[b.rgb[0]*h+c.rgb[0]*i,b.rgb[1]*h+c.rgb[1]*i,b.rgb[2]*h+c.rgb[2]*i],k=b.alpha*e+c.alpha*(1-e);return new a.Color(j,k)},greyscale:function(b){return this.desaturate(b,new a.Dimension(100))},e:function(b){return new a.Anonymous(b instanceof a.JavaScript?b.evaluated:b)},escape:function(b){return new a.Anonymous(encodeURI(b.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))},"%":function(b){var c=Array.prototype.slice.call(arguments,1),d=b.value;for(var e=0;e<c.length;e++)d=d.replace(/%[sda]/i,function(a){var b=a.match(/s/i)?c[e].value:c[e].toCSS();return a.match(/[A-Z]$/)?encodeURIComponent(b):b});return d=d.replace(/%%/g,"%"),new a.Quoted('"'+d+'"',d)},round:function(a){return this._math("round",a)},ceil:function(a){return this._math("ceil",a)},floor:function(a){return this._math("floor",a)},_math:function(b,d){if(d instanceof a.Dimension)return new a.Dimension(Math[b](c(d)),d.unit);if(typeof d=="number")return Math[b](d);throw{type:"Argument",message:"argument must be a number"}},argb:function(b){return new a.Anonymous(b.toARGB())},percentage:function(b){return new a.Dimension(b.value*100,"%")},color:function(b){if(b instanceof a.Quoted)return new a.Color(b.value.slice(1));throw{type:"Argument",message:"argument must be a string"}},iscolor:function(b){return this._isa(b,a.Color)},isnumber:function(b){return this._isa(b,a.Dimension)},isstring:function(b){return this._isa(b,a.Quoted)},iskeyword:function(b){return this._isa(b,a.Keyword)},isurl:function(b){return this._isa(b,a.URL)},ispixel:function(b){return b instanceof a.Dimension&&b.unit==="px"?a.True:a.False},ispercentage:function(b){return b instanceof a.Dimension&&b.unit==="%"?a.True:a.False},isem:function(b){return b instanceof a.Dimension&&b.unit==="em"?a.True:a.False},_isa:function(b,c){return b instanceof c?a.True:a.False}}})(c("./tree")),function(a){a.colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}(c("./tree")),function(a){a.Alpha=function(a){this.value=a},a.Alpha.prototype={toCSS:function(){return"alpha(opacity="+(this.value.toCSS?this.value.toCSS():this.value)+")"},eval:function(a){return this.value.eval&&(this.value=this.value.eval(a)),this}}}(c("../tree")),function(a){a.Anonymous=function(a){this.value=a.value||a},a.Anonymous.prototype={toCSS:function(){return this.value},eval:function(){return this}}}(c("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={toCSS:function(){return this.key+"="+(this.value.toCSS?this.value.toCSS():this.value)},eval:function(a){return this.value.eval&&(this.value=this.value.eval(a)),this}}}(c("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.filename=d},a.Call.prototype={eval:function(b){var c=this.args.map(function(a){return a.eval(b)});if(!(this.name in a.functions))return new a.Anonymous(this.name+"("+c.map(function(a){return a.toCSS()}).join(", ")+")");try{return a.functions[this.name].apply(a.functions,c)}catch(d){throw{type:d.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(d.message?": "+d.message:""),index:this.index,filename:this.filename}}},toCSS:function(a){return this.eval(a).toCSS()}}}(c("../tree")),function(a){a.Color=function(a,b){Array.isArray(a)?this.rgb=a:a.length==6?this.rgb=a.match(/.{2}/g).map(function(a){return parseInt(a,16)}):this.rgb=a.split("").map(function(a){return parseInt(a+a,16)}),this.alpha=typeof b=="number"?b:1},a.Color.prototype={eval:function(){return this},toCSS:function(){return this.alpha<1?"rgba("+this.rgb.map(function(a){return Math.round(a)}).concat(this.alpha).join(", ")+")":"#"+this.rgb.map(function(a){return a=Math.round(a),a=(a>255?255:a<0?0:a).toString(16),a.length===1?"0"+a:a}).join("")},operate:function(b,c){var d=[];c instanceof a.Color||(c=c.toColor());for(var e=0;e<3;e++)d[e]=a.operate(b,this.rgb[e],c.rgb[e]);return new a.Color(d,this.alpha+c.alpha)},toHSL:function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255,d=this.alpha,e=Math.max(a,b,c),f=Math.min(a,b,c),g,h,i=(e+f)/2,j=e-f;if(e===f)g=h=0;else{h=i>.5?j/(2-e-f):j/(e+f);switch(e){case a:g=(b-c)/j+(b<c?6:0);break;case b:g=(c-a)/j+2;break;case c:g=(a-b)/j+4}g/=6}return{h:g*360,s:h,l:i,a:d}},toARGB:function(){var a=[Math.round(this.alpha*255)].concat(this.rgb);return"#"+a.map(function(a){return a=Math.round(a),a=(a>255?255:a<0?0:a).toString(16),a.length===1?"0"+a:a}).join("")}}}(c("../tree")),function(a){a.Comment=function(a,b){this.value=a,this.silent=!!b},a.Comment.prototype={toCSS:function(a){return a.compress?"":this.value},eval:function(){return this}}}(c("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype.eval=function(a){var b=this.lvalue.eval(a),c=this.rvalue.eval(a),d=this.index,e,e=function(a){switch(a){case"and":return b&&c;case"or":return b||c;default:if(b.compare)e=b.compare(c);else{if(!c.compare)throw{type:"Type",message:"Unable to perform comparison",index:d};e=c.compare(b)}switch(e){case-1:return a==="<"||a==="=<";case 0:return a==="="||a===">="||a==="=<";case 1:return a===">"||a===">="}}}(this.op);return this.negate?!e:e}}(c("../tree")),function(a){a.Dimension=function(a,b){this.value=parseFloat(a),this.unit=b||null},a.Dimension.prototype={eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},toCSS:function(){var a=this.value+this.unit;return a},operate:function(b,c){return new a.Dimension(a.operate(b,this.value,c.value),this.unit||c.unit)},compare:function(b){return b instanceof a.Dimension?b.value>this.value?-1:b.value<this.value?1:0:-1}}}(c("../tree")),function(a){a.Directive=function(b,c,d){this.name=b,this.features=d&&new a.Value(d),Array.isArray(c)?(this.ruleset=new a.Ruleset([],c),this.ruleset.allowImports=!0):this.value=c},a.Directive.prototype={toCSS:function(a,b){var c=this.features?" "+this.features.toCSS(b):"";return this.ruleset?(this.ruleset.root=!0,this.name+c+(b.compress?"{":" {\n  ")+this.ruleset.toCSS(a,b).trim().replace(/\n/g,"\n  ")+(b.compress?"}":"\n}\n")):this.name+" "+this.value.toCSS()+";\n"},eval:function(a){return this.features=this.features&&this.features.eval(a),a.frames.unshift(this),this.ruleset=this.ruleset&&this.ruleset.eval(a),a.frames.shift(),this},variable:function(b){return a.Ruleset.prototype.variable.call(this.ruleset,b)},find:function(){return a.Ruleset.prototype.find.apply(this.ruleset,arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.ruleset)}}}(c("../tree")),function(a){a.Element=function(b,c,d){this.combinator=b instanceof a.Combinator?b:new a.Combinator(b),typeof c=="string"?this.value=c.trim():c?this.value=c:this.value="",this.index=d},a.Element.prototype.eval=function(b){return new a.Element(this.combinator,this.value.eval?this.value.eval(b):this.value,this.index)},a.Element.prototype.toCSS=function(a){return this.combinator.toCSS(a||{})+(this.value.toCSS?this.value.toCSS(a):this.value)},a.Combinator=function(a){a===" "?this.value=" ":a==="& "?this.value="& ":this.value=a?a.trim():""},a.Combinator.prototype.toCSS=function(a){return{"":""," ":" ","&":"","& ":" ",":":" :","::":"::","+":a.compress?"+":" + ","~":a.compress?"~":" ~ ",">":a.compress?">":" > "}[this.value]}}(c("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={eval:function(b){return this.value.length>1?new a.Expression(this.value.map(function(a){return a.eval(b)})):this.value.length===1?this.value[0].eval(b):this},toCSS:function(a){return this.value.map(function(b){return b.toCSS?b.toCSS(a):""}).join(" ")}}}(c("../tree")),function(a){a.Import=function(b,c,d,e){var f=this;this.index=e,this._path=b,this.features=d&&new a.Value(d),b instanceof a.Quoted?this.path=/\.(le?|c)ss(\?.*)?$/.test(b.value)?b.value:b.value+".less":this.path=b.value.value||b.value,this.css=/css(\?.*)?$/.test(this.path),this.css||c.push(this.path,function(b,c){b&&(b.index=e),f.root=c||new a.Ruleset([],[])})},a.Import.prototype={toCSS:function(a){var b=this.features?" "+this.features.toCSS(a):"";return this.css?"@import "+this._path.toCSS()+b+";\n":""},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.css)return this;c=new a.Ruleset([],this.root.rules.slice(0));for(var e=0;e<c.rules.length;e++)c.rules[e]instanceof a.Import&&Array.prototype.splice.apply(c.rules,[e,1].concat(c.rules[e].eval(b)));return this.features?new a.Directive("@media",c.rules,this.features.value):c.rules}}}(c("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify((new a.Variable("@"+e,d.index)).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: `"+
+f+"`",index:this.index}}for(var h in b.frames[0].variables())e[h.slice(1)]={value:b.frames[0].variables()[h].value,toJS:function(){return this.value.eval(b).toCSS()}};try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message+"'",index:this.index}}return typeof c=="string"?new a.Quoted('"'+c+'"',c,this.escaped,this.index):Array.isArray(c)?new a.Anonymous(c.join(", ")):new a.Anonymous(c)}}}(c("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={eval:function(){return this},toCSS:function(){return this.value},compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(c("../tree")),function(a){a.mixin={},a.mixin.Call=function(b,c,d,e,f){this.selector=new a.Selector(b),this.arguments=c,this.index=d,this.filename=e,this.important=f},a.mixin.Call.prototype={eval:function(a){var b,c,d=[],e=!1;for(var f=0;f<a.frames.length;f++)if((b=a.frames[f].find(this.selector)).length>0){c=this.arguments&&this.arguments.map(function(b){return b.eval(a)});for(var g=0;g<b.length;g++)if(b[g].match(c,a))try{Array.prototype.push.apply(d,b[g].eval(a,this.arguments,this.important).rules),e=!0}catch(h){throw{message:h.message,index:h.index,filename:this.filename,stack:h.stack,call:this.index}}if(e)return d;throw{type:"Runtime",message:"No matching definition was found for `"+this.selector.toCSS().trim()+"("+this.arguments.map(function(a){return a.toCSS()}).join(", ")+")`",index:this.index,filename:this.filename}}throw{type:"Name",message:this.selector.toCSS().trim()+" is undefined",index:this.index,filename:this.filename}}},a.mixin.Definition=function(b,c,d,e){this.name=b,this.selectors=[new a.Selector([new a.Element(null,b)])],this.params=c,this.condition=e,this.arity=c.length,this.rules=d,this._lookups={},this.required=c.reduce(function(a,b){return!b.name||b.name&&!b.value?a+1:a},0),this.parent=a.Ruleset.prototype,this.frames=[]},a.mixin.Definition.prototype={toCSS:function(){return""},variable:function(a){return this.parent.variable.call(this,a)},variables:function(){return this.parent.variables.call(this)},find:function(){return this.parent.find.apply(this,arguments)},rulesets:function(){return this.parent.rulesets.apply(this)},evalParams:function(b,c){var d=new a.Ruleset(null,[]);for(var e=0,f;e<this.params.length;e++)if(this.params[e].name){if(!(f=c&&c[e]||this.params[e].value))throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+c.length+" for "+this.arity+")"};d.rules.unshift(new a.Rule(this.params[e].name,f.eval(b)))}return d},eval:function(b,c,d){var e=this.evalParams(b,c),f,g=[],h;for(var i=0;i<Math.max(this.params.length,c&&c.length);i++)g.push(c[i]||this.params[i].value);return e.rules.unshift(new a.Rule("@arguments",(new a.Expression(g)).eval(b))),h=d?this.rules.map(function(b){return new a.Rule(b.name,b.value,"!important",b.index)}):this.rules.slice(0),(new a.Ruleset(null,h)).eval({frames:[this,e].concat(this.frames,b.frames)})},match:function(a,b){var c=a&&a.length||0,d,e;if(c<this.required)return!1;if(this.required>0&&c>this.params.length)return!1;if(this.condition&&!this.condition.eval({frames:[this.evalParams(b,a)].concat(b.frames)}))return!1;d=Math.min(c,this.arity);for(var f=0;f<d;f++)if(!this.params[f].name&&a[f].eval(b).toCSS()!=this.params[f].value.eval(b).toCSS())return!1;return!0}}}(c("../tree")),function(a){a.Operation=function(a,b){this.op=a.trim(),this.operands=b},a.Operation.prototype.eval=function(b){var c=this.operands[0].eval(b),d=this.operands[1].eval(b),e;if(c instanceof a.Dimension&&d instanceof a.Color){if(this.op!=="*"&&this.op!=="+")throw{name:"OperationError",message:"Can't substract or divide a color from a number"};e=d,d=c,c=e}return c.operate(this.op,d)},a.operate=function(a,b,c){switch(a){case"+":return b+c;case"-":return b-c;case"*":return b*c;case"/":return b/c}}}(c("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={toCSS:function(a){return"("+this.value.toCSS(a)+")"},eval:function(b){return new a.Paren(this.value.eval(b))}}}(c("../tree")),function(a){a.Quoted=function(a,b,c,d){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d},a.Quoted.prototype={toCSS:function(){return this.escaped?this.value:this.quote+this.value+this.quote},eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return(new a.JavaScript(e,c.index,!0)).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=(new a.Variable("@"+e,c.index)).eval(b);return"value"in f?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index)}}}(c("../tree")),function(a){a.Rule=function(b,c,d,e,f){this.name=b,this.value=c instanceof a.Value?c:new a.Value([c]),this.important=d?" "+d.trim():"",this.index=e,this.inline=f||!1,b.charAt(0)==="@"?this.variable=!0:this.variable=!1},a.Rule.prototype.toCSS=function(a){return this.variable?"":this.name+(a.compress?":":": ")+this.value.toCSS(a)+this.important+(this.inline?"":";")},a.Rule.prototype.eval=function(b){return new a.Rule(this.name,this.value.eval(b),this.important,this.index,this.inline)},a.Shorthand=function(a,b){this.a=a,this.b=b},a.Shorthand.prototype={toCSS:function(a){return this.a.toCSS(a)+"/"+this.b.toCSS(a)},eval:function(){return this}}}(c("../tree")),function(a){a.Ruleset=function(a,b){this.selectors=a,this.rules=b,this._lookups={}},a.Ruleset.prototype={eval:function(b){var c=this.selectors&&this.selectors.map(function(a){return a.eval(b)}),d=new a.Ruleset(c,this.rules.slice(0));d.root=this.root,d.allowImports=this.allowImports,b.frames.unshift(d);if(d.root||d.allowImports)for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.Import&&Array.prototype.splice.apply(d.rules,[e,1].concat(d.rules[e].eval(b)));for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.mixin.Definition&&(d.rules[e].frames=b.frames.slice(0));for(var e=0;e<d.rules.length;e++)d.rules[e]instanceof a.mixin.Call&&Array.prototype.splice.apply(d.rules,[e,1].concat(d.rules[e].eval(b)));for(var e=0,f;e<d.rules.length;e++)f=d.rules[e],f instanceof a.mixin.Definition||(d.rules[e]=f.eval?f.eval(b):f);return b.frames.shift(),d},match:function(a){return!a||a.length===0},variables:function(){return this._variables?this._variables:this._variables=this.rules.reduce(function(b,c){return c instanceof a.Rule&&c.variable===!0&&(b[c.name]=c),b},{})},variable:function(a){return this.variables()[a]},rulesets:function(){return this._rulesets?this._rulesets:this._rulesets=this.rules.filter(function(b){return b instanceof a.Ruleset||b instanceof a.mixin.Definition})},find:function(b,c){c=c||this;var d=[],e,f,g=b.toCSS();return g in this._lookups?this._lookups[g]:(this.rulesets().forEach(function(e){if(e!==c)for(var g=0;g<e.selectors.length;g++)if(f=b.match(e.selectors[g])){b.elements.length>e.selectors[g].elements.length?Array.prototype.push.apply(d,e.find(new a.Selector(b.elements.slice(1)),c)):d.push(e);break}}),this._lookups[g]=d)},toCSS:function(b,c){var d=[],e=[],f=[],g=[],h,i;this.root||(b.length===0?g=this.selectors.map(function(a){return[a]}):this.joinSelectors(g,b,this.selectors));for(var j=0;j<this.rules.length;j++)i=this.rules[j],i.rules||i instanceof a.Directive?f.push(i.toCSS(g,c)):i instanceof a.Comment?i.silent||(this.root?f.push(i.toCSS(c)):e.push(i.toCSS(c))):i.toCSS&&!i.variable?e.push(i.toCSS(c)):i.value&&!i.variable&&e.push(i.value.toString());return f=f.join(""),this.root?d.push(e.join(c.compress?"":"\n")):e.length>0&&(h=g.map(function(a){return a.map(function(a){return a.toCSS(c)}).join("").trim()}).join(c.compress?",":g.length>3?",\n":", "),d.push(h,(c.compress?"{":" {\n  ")+e.join(c.compress?"":"\n  ")+(c.compress?"}":"\n}\n"))),d.push(f),d.join("")+(c.compress?"\n":"")},joinSelectors:function(a,b,c){for(var d=0;d<c.length;d++)this.joinSelector(a,b,c[d])},joinSelector:function(b,c,d){var e=[],f=[],g=[],h=[],i=!1,j;for(var k=0;k<d.elements.length;k++)j=d.elements[k],j.combinator.value.charAt(0)==="&"&&(i=!0),i?h.push(j):g.push(j);i||(h=g,g=[]),g.length>0&&e.push(new a.Selector(g)),h.length>0&&f.push(new a.Selector(h));for(var l=0;l<c.length;l++)b.push(e.concat(c[l]).concat(f))}}}(c("../tree")),function(a){a.Selector=function(a){this.elements=a,this.elements[0].combinator.value===""&&(this.elements[0].combinator.value=" ")},a.Selector.prototype.match=function(a){var b=this.elements.length,c=a.elements.length,d=Math.min(b,c);if(b<c)return!1;for(var e=0;e<d;e++)if(this.elements[e].value!==a.elements[e].value)return!1;return!0},a.Selector.prototype.eval=function(b){return new a.Selector(this.elements.map(function(a){return a.eval(b)}))},a.Selector.prototype.toCSS=function(a){return this._css?this._css:this._css=this.elements.map(function(b){return typeof b=="string"?" "+b.trim():b.toCSS(a)}).join("")}}(c("../tree")),function(b){b.URL=function(b,c){b.data?this.attrs=b:(typeof a!="undefined"&&!/^(?:https?:\/\/|file:\/\/|data:|\/)/.test(b.value)&&c.length>0&&(b.value=c[0]+(b.value.charAt(0)==="/"?b.value.slice(1):b.value)),this.value=b,this.paths=c)},b.URL.prototype={toCSS:function(){return"url("+(this.attrs?"data:"+this.attrs.mime+this.attrs.charset+this.attrs.base64+this.attrs.data:this.value.toCSS())+")"},eval:function(a){return this.attrs?this:new b.URL(this.value.eval(a),this.paths)}}}(c("../tree")),function(a){a.Value=function(a){this.value=a,this.is="value"},a.Value.prototype={eval:function(b){return this.value.length===1?this.value[0].eval(b):new a.Value(this.value.map(function(a){return a.eval(b)}))},toCSS:function(a){return this.value.map(function(b){return b.toCSS(a)}).join(a.compress?",":", ")}}}(c("../tree")),function(a){a.Variable=function(a,b,c){this.name=a,this.index=b,this.file=c},a.Variable.prototype={eval:function(b){var c,d,e=this.name;e.indexOf("@@")==0&&(e="@"+(new a.Variable(e.slice(1))).eval(b).value);if(c=a.find(b.frames,function(a){if(d=a.variable(e))return d.value.eval(b)}))return c;throw{type:"Name",message:"variable "+e+" is undefined",filename:this.file,index:this.index}}}}(c("../tree")),function(a){a.find=function(a,b){for(var c=0,d;c<a.length;c++)if(d=b.call(a,a[c]))return d;return null},a.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS(!1)}).join(", ")+"]":a.toCSS(!1)}}(c("./tree"));var g=location.protocol==="file:"||location.protocol==="chrome:"||location.protocol==="chrome-extension:"||location.protocol==="resource:";d.env=d.env||(location.hostname=="127.0.0.1"||location.hostname=="0.0.0.0"||location.hostname=="localhost"||location.port.length>0||g?"development":"production"),d.async=!1,d.poll=d.poll||(g?1e3:1500),d.watch=function(){return this.watchMode=!0},d.unwatch=function(){return this.watchMode=!1},d.env==="development"?(d.optimization=0,/!watch/.test(location.hash)&&d.watch(),d.watchTimer=setInterval(function(){d.watchMode&&n(function(a,b,c,d,e){b&&r(b.toCSS(),d,e.lastModified)})},d.poll)):d.optimization=3;var h;try{h=typeof a.localStorage=="undefined"?null:a.localStorage}catch(i){h=null}var j=document.getElementsByTagName("link"),k=/^text\/(x-)?less$/;d.sheets=[];for(var l=0;l<j.length;l++)(j[l].rel==="stylesheet/less"||j[l].rel.match(/stylesheet/)&&j[l].type.match(k))&&d.sheets.push(j[l]);d.refresh=function(a){var b,c;b=c=new Date,n(function(a,d,e,f,g){g.local?v("loading "+f.href+" from cache."):(v("parsed "+f.href+" successfully."),r(d.toCSS(),f,g.lastModified)),v("css for "+f.href+" generated in "+(new Date-c)+"ms"),g.remaining===0&&v("css generated in "+(new Date-b)+"ms"),c=new Date},a),m()},d.refreshStyles=m,d.refresh(d.env==="development")})(window);
\ No newline at end of file
diff --git a/serialized/.gitignore b/serialized/.gitignore
new file mode 100644 (file)
index 0000000..d9d58dd
--- /dev/null
@@ -0,0 +1,4 @@
+/UnicodeData.txt
+/allkeys.txt
+/ucd.all.grouped.xml
+/ucd.all.grouped.zip
index 062155b..c7e7506 100644 (file)
@@ -1,7 +1,7 @@
-
-SPECIAL_TARGETS=Utf8Case.ser
+SPECIAL_TARGETS=Utf8Case.ser normalize-ar.ser normalize-ml.ser first-letters-root.ser
 ALL_TARGETS=$(SPECIAL_TARGETS)
 DIST_TARGETS=$(SPECIAL_TARGETS)
+UNICODE_VERSION=6.0.0
 
 .PHONY: all dist clean
 
@@ -13,6 +13,26 @@ dist: $(DIST_TARGETS)
 clean:
        rm -f $(ALL_TARGETS)
 
-Utf8Case.ser : ../includes/normal/Utf8Case.php
-       php serialize.php -o $@ $<
+Utf8Case.ser: UnicodeData.txt
+       php ../maintenance/language/generateUtf8Case.php
+
+normalize-ar.ser: UnicodeData.txt
+       php ../maintenance/language/generateNormalizerDataAr.php
+
+normalize-ml.ser:
+       php ../maintenance/language/generateNormalizerDataMl.php
+
+first-letters-root.ser: allkeys.txt ucd.all.grouped.xml
+       php ../maintenance/language/generateCollationData.php
+
+UnicodeData.txt:
+       wget http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/UnicodeData.txt
+
+allkeys.txt:
+       wget http://www.unicode.org/Public/UCA/$(UNICODE_VERSION)/allkeys.txt
+
+ucd.all.grouped.xml: ucd.all.grouped.zip
+       unzip ucd.all.grouped.zip ucd.all.grouped.xml
 
+ucd.all.grouped.zip:
+       wget http://www.unicode.org/Public/$(UNICODE_VERSION)/ucdxml/ucd.all.grouped.zip
diff --git a/serialized/serialize.php b/serialized/serialize.php
deleted file mode 100644 (file)
index 766c1a5..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-<?php
-/**
- * Serialize variables found in input file and store the result in the
- * specified file.
- *
- * 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
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
-       $wgNoDBParam = true;
-       $optionsWithArgs = array( 'o' );
-       require_once __DIR__ .'/../maintenance/commandLine.inc';
-
-       $stderr = fopen( 'php://stderr', 'w' );
-       if ( !isset( $args[0] ) ) {
-               fwrite( $stderr, "No input file specified\n" );
-               exit( 1 );
-       }
-       if ( wfIsWindows() ) {
-               $files = array();
-               foreach ( $args as $arg ) {
-                       $files = array_merge( $files, glob( $arg ) );
-               }
-               if ( !$files ) {
-                       fwrite( $stderr, "No files found\n" );
-               }
-       } else {
-               $files = $args;
-       }
-
-       if ( isset( $options['o'] ) ) {
-               $out = fopen( $options['o'], 'wb' );
-               if ( !$out ) {
-                       fwrite( $stderr, "Unable to open file \"{$options['o']}\" for output\n" );
-                       exit( 1 );
-               }
-       } else {
-               $out = fopen( 'php://stdout', 'wb' );
-       }
-
-       $vars = array();
-       foreach ( $files as $inputFile ) {
-               $vars = array_merge( $vars, getVars( $inputFile ) );
-       }
-       fwrite( $out, serialize( $vars ) );
-       fclose( $out );
-       exit( 0 );
-}
-
-//----------------------------------------------------------------------------
-
-function getVars( $_gv_filename ) {
-       require $_gv_filename;
-       $vars = get_defined_vars();
-       unset( $vars['_gv_filename'] );
-
-       # Clean up line endings
-       if ( wfIsWindows() ) {
-               $vars = unixLineEndings( $vars );
-       }
-       return $vars;
-}
-
-function unixLineEndings( $var ) {
-       static $recursionLevel = 0;
-       if ( $recursionLevel > 50 ) {
-               global $stderr;
-               fwrite( $stderr, "Error: Recursion limit exceeded. Possible circular reference in array variable.\n" );
-               exit( 2 );
-       }
-
-       if ( is_array( $var ) ) {
-               ++$recursionLevel;
-               $var = array_map( 'unixLineEndings', $var );
-               --$recursionLevel;
-       } elseif ( is_string( $var ) ) {
-               $var = str_replace( "\r\n", "\n", $var );
-       }
-       return $var;
-}
index f7fb0d8..bd914ce 100644 (file)
@@ -45,7 +45,7 @@ class SkinMonoBook extends SkinTemplate {
        function setupSkinUserCss( OutputPage $out ) {
                parent::setupSkinUserCss( $out );
 
-               $out->addModuleStyles( 'skins.monobook' );
+               $out->addModuleStyles( array( 'skins.common.interface', 'skins.monobook.styles' ) );
 
                // TODO: Migrate all of these
                $out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
index 288b5fd..00b920a 100644 (file)
@@ -67,7 +67,7 @@ class SkinVector extends SkinTemplate {
        function setupSkinUserCss( OutputPage $out ) {
                parent::setupSkinUserCss( $out );
 
-               $styles = array( 'skins.vector' );
+               $styles = array( 'skins.common.interface', 'skins.vector.styles' );
                wfRunHooks( 'SkinVectorStyleModules', array( &$this, &$styles ) );
                $out->addModuleStyles( $styles );
        }
index 14d39b9..35071a4 100644 (file)
@@ -163,12 +163,6 @@ img.thumbborder {
 /**
  * Basic styles for the user login and create account forms
  */
-#userlogin, #userloginForm {
-       border: solid 1px #cccccc;
-       padding: 1.2em;
-       margin: 0.5em;
-}
-
 #loginend {
        margin: 0.5em;
 }
index af6665e..7eca070 100644 (file)
@@ -59,7 +59,7 @@
        font-size: 84%;
        line-height: 1.2em;
        margin: 0 0 1.4em 1em;
-       color: #7d7d7d;
+       color: #545454;
        width: auto;
 }
 span.subpages {
index c7804a0..65f3fbe 100644 (file)
@@ -17,6 +17,12 @@ a.new {
        border: 1px solid #aaaaaa;
        background-color: #f9f9f9;
        padding: 5px;
+       display: -moz-inline-block;
+       display: inline-block;
+       display: table;
+       /* IE7 and earlier */
+       zoom: 1;
+       *display: inline;
 }
 
 /* images */
@@ -157,6 +163,10 @@ h1, h2, h3, h4, h5, h6 {
        font-weight: bold;
 }
 
+dt {
+       font-weight: bold;
+}
+
 p {
        margin: 1em 0;
        line-height: 1.2em;
index 2e61f63..1657d97 100644 (file)
@@ -533,7 +533,11 @@ table.wikitable > caption {
        font-weight: bold;
 }
 
-/* hide initially collapsed collapsable tables */
+/**
+ * Hide collapsable rows in a collapsed table.
+ *
+ * Used by ImagePage and the mediawiki.action.view.metadata module.
+ */
 table.collapsed tr.collapsable {
        display: none;
 }
@@ -624,12 +628,6 @@ table.collapsed tr.collapsable {
        clear: both;
 }
 
-#mw_trackbacks {
-       border: solid 1px #bbbbff;
-       background-color: #eeeeff;
-       padding: 0.2em;
-}
-
 /**
  * Data table style
  *
@@ -1172,14 +1170,15 @@ table.floatleft {
        display: none;
 }
 
-/* For developpers */
+/* For developers */
 .xdebug-error {
        position: absolute;
        z-index: 99;
 }
 
 .mw-editsection,
-.toctoggle {
+.toctoggle,
+#jump-to-nav {
        -moz-user-select: none;
        -webkit-user-select: none;
        -ms-user-select: none;
index d28ca0a..f0aa943 100644 (file)
@@ -18,7 +18,14 @@ if ( mw.config.get( 'wgBreakFrames' ) ) {
        }
 }
 
-win.redirectToFragment = function ( fragment ) {
+/**
+ * Legacy function to scroll to an id while viewing the page over a redirect.
+ * Superseeded by module 'mediawiki.action.view.redirectToFragment' in version 1.23.
+ * Kepted because cache can contain still inline script calls to this function.
+ * Should be removed in version 1.24.
+ * @deprecated since 1.23 Use mediawiki.action.view.redirectToFragment instead
+ */
+mw.log.deprecate( win, 'redirectToFragment', function ( fragment ) {
        var webKitVersion,
                match = navigator.userAgent.match( /AppleWebKit\/(\d+)/ );
        if ( match ) {
@@ -46,7 +53,7 @@ win.redirectToFragment = function ( fragment ) {
                        } );
                }
        }
-};
+}, 'Use the module mediawiki.action.view.redirectToFragment instead.' );
 
 /**
  * User-agent sniffing.
@@ -226,8 +233,11 @@ win.importScriptURI = function ( url ) {
        return s;
 };
 
-win.importStylesheet = function( page ) {
-       return win.importStylesheetURI( mw.config.get( 'wgScript' ) + '?action=raw&ctype=text/css&title=' + mw.util.wikiUrlencode( page ) );
+win.importStylesheet = function ( page ) {
+       var uri = mw.config.get( 'wgScript' ) + '?title=' +
+               mw.util.wikiUrlencode( page ) +
+               '&action=raw&ctype=text/css';
+       return win.importStylesheetURI( uri );
 };
 
 win.importStylesheetURI = function( url, media ) {
index 40fbfd7..5da7d5b 100644 (file)
@@ -303,7 +303,7 @@ hr {
 }
 
 #contentSub {
-       color: #888;
+       color: #545454;
        font-size: small;
        padding-left: 2em;
 }
index d8f25eb..145b375 100644 (file)
@@ -636,33 +636,6 @@ td.htmlform-tip {
        margin-top: 2em;
 }
 
-div#userloginForm,
-div#userlogin {
-       margin: 0 3em 1em 0;
-       border: 1px solid #aaa;
-       clear: both;
-       padding: 1.5em 2em;
-       background-color: #f9f9f9;
-       float: left;
-}
-
-div#userloginForm table,
-div#userlogin table {
-       background-color: #f9f9f9;
-}
-
-div#userloginForm h2,
-div#userlogin h2 {
-       padding-top: 0;
-}
-
-div#userlogin .captcha,
-div#userloginForm .captcha {
-       border: 1px solid #bbb;
-       padding: 1.5em 2em;
-       background-color: white;
-}
-
 #loginend, #signupend {
        clear: both;
 }
@@ -677,10 +650,6 @@ div#userloginForm .captcha {
        padding-top: 2em;
 }
 
-#userlogin .loginText, #userlogin .loginPassword {
-       width: 12em;
-}
-
 #userloginlink a, #wpLoginattempt, #wpCreateaccount {
        font-weight: bold;
 }
diff --git a/skins/vector/beta/screen.less b/skins/vector/beta/screen.less
deleted file mode 100644 (file)
index 6d56cd5..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Content */
-#content {
-       line-height: 1.5em;
-       .mw-editsection {
-               font-family: @content-font-family;
-       }
-
-       h1,
-       #firstHeading {
-               font-family: @content-heading-font-family;
-               font-size: 1.833em;
-               line-height: 22pt;
-               padding: 0;
-               margin-bottom: 4pt;
-       }
-
-       h2 {
-               font-size: 1.5em;
-               line-height: 22pt;
-       }
-
-       h2,
-       h3,
-       h4,
-       h5,
-       h6 {
-               font-family: @content-heading-font-family;
-               padding: 0;
-               margin-bottom: 4pt;
-               margin-top: 14pt;
-       }
-
-       h3 {
-               font-size: 1.17em;
-               line-height: 22pt;
-       }
-
-       h3,
-       h4 {
-               font-weight: bold;
-       }
-
-       h4,
-       h5,
-       h6 {
-               font-size: 100%; /* (reset) */
-       }
-
-       h6 {
-               font-style: italic;
-       }
-
-       p {
-               margin-bottom: 8pt;
-       }
-
-       // FIXME: this is hacky
-       #toc h2 {
-               font-size: 100%;
-       }
-}
-
-/* Personal menu */
-#p-personal a {
-       color: #555;
-}
-
-/* Main menu */
-div#mw-panel div.portal {
-       margin-left: 1.25em;
-       h3 {
-               margin: 0;
-               line-height: 1;
-       }
-}
diff --git a/skins/vector/beta/variables.less b/skins/vector/beta/variables.less
deleted file mode 100644 (file)
index 08e662d..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-@html-font-size: 90%;
-
-@body-font-size: inherit;
-
-// Page content
-@content-font-family: "Helvetica Neue", "Helvetica", "Nimbus Sans L", "Arial", "Liberation Sans", sans-serif;
-@content-font-color: #252525;
-@content-font-size: 0.9em;
-@content-line-height: inherit;
-@content-padding: 1em;
-@content-heading-font-size: 1.6em;
-@content-heading-font-family: Georgia, "DejaVu Serif", serif;
-
-// Common menu
-@menu-link-color: #555;
-
-// Main menu
-@menu-main-font-size: 0.82em;
-@menu-main-heading-font-size: 100%;
-@menu-main-heading-padding: 5px 0;
-
-@menu-main-body-font-size: inherit;
-@menu-main-body-link-color: inherit;
-@menu-main-body-link-visited-color: inherit;
-@menu-main-body-margin: 0;
-@menu-main-body-padding: 0 0 10px;
-@menu-main-logo-left: 1.6em;
-
-// Personal menu
-@menu-personal-font-size: 0.75em;
-
-// Collapsible nav
-@collapsible-nav-heading-color: #555;
-@collapsible-nav-heading-collapsed-color: inherit;
-
-@collapsible-nav-heading-padding: 4px 0 3px 1.5em;
-@collapsible-nav-body-margin: 0 0 0 1.25em;
diff --git a/skins/vector/collapsibleNav.less b/skins/vector/collapsibleNav.less
deleted file mode 100644 (file)
index e6f5c9a..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * LESS Stylesheet for collapsible nav
- */
-@import "mediawiki.mixins.less";
-
-#mw-panel.collapsible-nav {
-       .portal {
-               background-position: left top;
-               background-repeat: no-repeat;
-               .background-image('images/portal-break.png');
-               padding: 0.25em 0 !important;
-               margin: -11px 9px 10px 11px;
-
-               h3 {
-                       font-size: @menu-main-heading-font-size;
-                       color: @collapsible-nav-heading-color;
-                       font-weight: normal;
-                       background-position: left center;
-                       background-repeat: no-repeat;
-                       .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
-                       padding: @collapsible-nav-heading-padding;
-                       margin-bottom: 0;
-
-                       &:hover {
-                               cursor: pointer;
-                               text-decoration: none;
-                       }
-
-                       a {
-                               color: @collapsible-nav-heading-color;
-                               text-decoration: none;
-                       }
-               }
-
-               .body {
-                       margin: @collapsible-nav-body-margin;
-                       background-image: none !important;
-                       padding-top: 0;
-                       display: none;
-
-                       ul {
-                               li {
-                                       padding: 0.25em 0;
-                               }
-                       }
-               }
-
-
-               /* First */
-               &.first {
-                       background-image: none;
-                       margin-top: 0;
-                       h3 {
-                               display: none;
-                       }
-               }
-
-               /* Persistent */
-               &.persistent {
-                       .body {
-                               display: block;
-                               margin-left: 0.5em;
-                       }
-
-                       h3 {
-                               background-image: none !important;
-                               padding-left: 0.7em;
-                               cursor: default;
-                       }
-               }
-
-               /* Collapsed */
-               &.collapsed {
-                       h3 {
-                               color: @collapsible-nav-heading-collapsed-color;
-                               background-position: left center;
-                               background-repeat: no-repeat;
-                               .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
-                               margin-bottom: 0;
-
-                               &:hover {
-                                       text-decoration: underline;
-                               }
-
-                               a {
-                                       color: @collapsible-nav-heading-collapsed-color;
-                               }
-                       }
-               }
-       }
-}
index 83d043e..e33cfc9 100644 (file)
                        collapsible: 'li.collapsible',
                        shifting: false,
                        expandCondition: function ( eleWidth ) {
-                               // If there's at least eleWidth pixels free space, expand.
-                               return calculateTabDistance() >= eleWidth;
+                               // If there are at least eleWidth + 1 pixels of free space, expand.
+                               // We add 1 because .width() will truncate fractional values
+                               // but .offset() will not.
+                               return calculateTabDistance() >= (eleWidth + 1);
                        },
                        collapseCondition: function () {
                                // If there's an overlap, collapse.
diff --git a/skins/vector/components/collapsibleNav.less b/skins/vector/components/collapsibleNav.less
new file mode 100644 (file)
index 0000000..e6f5c9a
--- /dev/null
@@ -0,0 +1,91 @@
+/**
+ * LESS Stylesheet for collapsible nav
+ */
+@import "mediawiki.mixins.less";
+
+#mw-panel.collapsible-nav {
+       .portal {
+               background-position: left top;
+               background-repeat: no-repeat;
+               .background-image('images/portal-break.png');
+               padding: 0.25em 0 !important;
+               margin: -11px 9px 10px 11px;
+
+               h3 {
+                       font-size: @menu-main-heading-font-size;
+                       color: @collapsible-nav-heading-color;
+                       font-weight: normal;
+                       background-position: left center;
+                       background-repeat: no-repeat;
+                       .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
+                       padding: @collapsible-nav-heading-padding;
+                       margin-bottom: 0;
+
+                       &:hover {
+                               cursor: pointer;
+                               text-decoration: none;
+                       }
+
+                       a {
+                               color: @collapsible-nav-heading-color;
+                               text-decoration: none;
+                       }
+               }
+
+               .body {
+                       margin: @collapsible-nav-body-margin;
+                       background-image: none !important;
+                       padding-top: 0;
+                       display: none;
+
+                       ul {
+                               li {
+                                       padding: 0.25em 0;
+                               }
+                       }
+               }
+
+
+               /* First */
+               &.first {
+                       background-image: none;
+                       margin-top: 0;
+                       h3 {
+                               display: none;
+                       }
+               }
+
+               /* Persistent */
+               &.persistent {
+                       .body {
+                               display: block;
+                               margin-left: 0.5em;
+                       }
+
+                       h3 {
+                               background-image: none !important;
+                               padding-left: 0.7em;
+                               cursor: default;
+                       }
+               }
+
+               /* Collapsed */
+               &.collapsed {
+                       h3 {
+                               color: @collapsible-nav-heading-collapsed-color;
+                               background-position: left center;
+                               background-repeat: no-repeat;
+                               .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
+                               margin-bottom: 0;
+
+                               &:hover {
+                                       text-decoration: underline;
+                               }
+
+                               a {
+                                       color: @collapsible-nav-heading-collapsed-color;
+                               }
+                       }
+               }
+       }
+}
diff --git a/skins/vector/components/common.less b/skins/vector/components/common.less
new file mode 100644 (file)
index 0000000..b70066a
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Any rules which should not be flipped automatically in right-to-left situations should be
+ * prepended with @noflip in a comment block.
+ *
+ * This stylesheet employs a few CSS trick to accomplish compatibility with a wide range of web
+ * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using
+ * a rule that makes things work in IE6, and then following it with a rule that begins with
+ * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support
+ * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and
+ * "IGNORED BY IE6" comments.
+ */
+@import "mediawiki.mixins";
+
+/* Framework */
+html {
+       font-size: @html-font-size;
+}
+html,
+body {
+       height: 100%;
+       margin: 0;
+       padding: 0;
+       font-family: @content-font-family;
+}
+body {
+       background-color: #f6f6f6;
+       font-size: @body-font-size;
+}
+
+/* Content */
+div#content {
+       line-height: @content-line-height;
+       margin-left: 10em;
+       padding: @content-padding;
+       /* Border on top, left, and bottom side */
+       border: 1px solid #a7d7f9;
+       border-right-width: 0;
+       /* Merge the border with tabs' one (in their background image) */
+       margin-top: -1px;
+       background-color: white;
+       color: @content-font-color;
+       direction: ltr;
+}
+
+/* Hide empty portlets */
+div.emptyPortlet {
+               display: none;
+}
+
+ul {
+       list-style-type: disc;
+       .list-style-image('images/bullet-icon.png');
+}
+
+pre, .mw-code {
+       line-height: 1.3em;
+}
+
+/* Site Notice (includes notices from CentralNotice extension) */
+#siteNotice {
+       font-size: 0.8em;
+}
+
+#firstHeading {
+       padding-top: 0;
+       margin-top: 0;
+       font-size: @content-heading-font-size;
+}
+
+.redirectText {
+       font-size: 140%;
+}
+
+.redirectMsg img {
+       vertical-align: text-bottom;
+}
+
+#bodyContent {
+       position: relative;
+       width: 100%;
+       line-height: 1.5em;
+       font-size: @content-font-size;
+}
+
+/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
+// FIXME: Should be part of jquery.tipsy.css
+.tipsy {
+       font-size: 0.8em;
+}
+
+/* Animate between standard and high definition layouts */
+body.vector-animateLayout {
+       div#content,
+       div#footer,
+       #left-navigation {
+               .transition(margin-left 250ms, padding 250ms;);
+       }
+
+       #p-logo {
+               .transition(left 250ms);
+       }
+
+       #mw-panel {
+               .transition(padding-right 250ms);
+       }
+
+       #p-search {
+               .transition(margin-right 250ms);
+       }
+
+       #p-personal {
+               .transition(right 250ms);
+       }
+
+       #mw-head-base {
+               .transition(margin-left 250ms);
+       }
+}
diff --git a/skins/vector/components/externalLinks.less b/skins/vector/components/externalLinks.less
new file mode 100644 (file)
index 0000000..3e26a22
--- /dev/null
@@ -0,0 +1,75 @@
+// FIXME: This size of this CSS is ridiculous. Please refactor (see bug 54604)
+@import "mediawiki.mixins.less";
+
+div#content a.external {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/external-link-ltr-icon.svg', 'images/external-link-ltr-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href ^="https://"],
+.link-https {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/lock-icon.svg', 'images/lock-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href ^="mailto:"],
+.link-mailto {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/mail-icon.svg', 'images/mail-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href ^="news:"] {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/news-icon.svg', 'images/news-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href ^="ftp://"],
+.link-ftp {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/file-icon.svg', 'images/file-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href ^="irc://"],
+div#content a.external[href ^="ircs://"],
+.link-irc {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/talk-icon.svg', 'images/talk-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
+div#content a.external[href $=".mid"], div#content a.external[href $=".MID"],
+div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"],
+div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"],
+div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"],
+div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
+.link-audio {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/audio-icon.svg', 'images/audio-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
+div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"],
+div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"],
+div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
+.link-video {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/video-icon.svg', 'images/video-icon.png');
+       padding-right: 13px;
+}
+div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
+div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"],
+div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
+.link-document {
+       background-position: center right;
+       background-repeat: no-repeat;
+       .background-image-svg('images/document-icon.svg', 'images/document-icon.png');
+       padding-right: 13px;
+}
diff --git a/skins/vector/components/footer.less b/skins/vector/components/footer.less
new file mode 100644 (file)
index 0000000..3d61b66
--- /dev/null
@@ -0,0 +1,57 @@
+/* Footer */
+div#footer {
+       margin-left: 10em;
+       margin-top: 0;
+       padding: 0.75em;
+       direction: ltr;
+
+       ul {
+               list-style-type: none;
+               list-style-image: none;
+               margin: 0;
+               padding: 0;
+
+               li {
+                       margin: 0;
+                       padding: 0;
+                       padding-top: 0.5em;
+                       padding-bottom: 0.5em;
+                       color: #333;
+                       font-size: 0.7em;
+               }
+       }
+
+       #footer-icons {
+               float: right;
+
+               li {
+                       float: left;
+                       margin-left: 0.5em;
+                       line-height: 2em;
+                       text-align: right;
+               }
+       }
+
+       #footer-info {
+               li {
+                       line-height: 1.4em;
+               }
+       }
+
+       #footer-places {
+               li {
+                       float: left;
+                       margin-right: 1em;
+                       line-height: 2em;
+               }
+       }
+}
+
+body.ltr {
+       div#footer {
+               #footer-places {
+                       /* @noflip */
+                       float: left;
+               }
+       }
+}
diff --git a/skins/vector/components/navigation.less b/skins/vector/components/navigation.less
new file mode 100644 (file)
index 0000000..4512efa
--- /dev/null
@@ -0,0 +1,132 @@
+@import "mediawiki.mixins";
+@import "personalMenu";
+@import "collapsibleNav";
+@import "search";
+@import "tabs";
+
+/* Hide, but keep accessible for screen-readers */
+#mw-navigation h2 {
+       position: absolute;
+       top: -9999px;
+}
+
+/* Head */
+#mw-page-base {
+       height: 5em;
+       background-color: white;
+       .background-image('images/page-fade.png');
+       background-position: bottom left;
+       background-repeat: repeat-x;
+}
+
+#mw-head-base {
+       margin-top: -5em;
+       margin-left: 10em;
+       height: 5em;
+}
+
+div#mw-head {
+       position: absolute;
+       top: 0;
+       right: 0;
+       width: 100%;
+
+       h3 {
+               margin: 0;
+               padding: 0;
+       }
+}
+
+/* Navigation Containers */
+#left-navigation {
+       float: left;
+       margin-left: 10em;
+       margin-top: 2.5em;
+       /* When right nav would overlap left nav, it's placed below it
+          (normal CSS floats behavior). This rule ensures that no empty space
+          is shown between them due to right nav's margin-top. Page layout
+          is still broken, but at least the nav overlaps only the page title
+          instead of half the content. */
+       margin-bottom: -2.5em;
+       /* IE 6 double-margin bug fix */
+       display: inline;
+}
+
+#right-navigation {
+       float: right;
+       margin-top: 2.5em;
+}
+
+/* Logo */
+#p-logo {
+       position: absolute;
+       top: -160px;
+       left: 0;
+       width: 10em;
+       height: 160px;
+
+       a {
+               display: block;
+               width: 10em;
+               height: 160px;
+               background-repeat: no-repeat;
+               background-position: center center;
+               text-decoration: none;
+       }
+}
+
+/* Panel */
+div#mw-panel {
+       font-size: @menu-main-font-size;
+       position: absolute;
+       top: 160px;
+       padding-top: 1em;
+       width: 10em;
+       left: 0;
+
+       div.portal {
+               padding-bottom: 1.5em;
+               direction: ltr;
+
+               h3 {
+                       font-weight: normal;
+                       color: #444;
+                       padding: @menu-main-heading-padding;
+                       cursor: default;
+                       border: none;
+                       font-size: @menu-main-heading-font-size;
+               }
+
+               div.body {
+                       padding-top: 0.5em;
+                       margin: @menu-main-body-margin;
+
+                       .background-image('images/portal-break.png');
+                       background-repeat: no-repeat;
+                       background-position: top left;
+
+                       ul {
+                               list-style-type: none;
+                               list-style-image: none;
+                               padding: @menu-main-body-padding;
+                               margin: 0;
+
+                               li {
+                                       line-height: 1.125em;
+                                       padding: 0;
+                                       padding-bottom: 0.5em;
+                                       margin: 0;
+                                       font-size: @menu-main-body-font-size;
+                                       word-wrap: break-word;
+
+                                       a {
+                                               color: @menu-main-body-link-color;
+                                               &:visited {
+                                                       color: @menu-main-body-link-visited-color;
+                                               }
+                                       }
+                               }
+                       }
+               }
+       }
+}
diff --git a/skins/vector/components/notifications.less b/skins/vector/components/notifications.less
new file mode 100644 (file)
index 0000000..43b9882
--- /dev/null
@@ -0,0 +1,20 @@
+/* mediawiki.notification */
+.skin-vector {
+       .mw-notification-area {
+               font-size: 0.8em;
+       }
+
+       .mw-notification-area-layout {
+               top: 7em;
+       }
+
+       .mw-notification {
+               background-color: #fff;
+               background-color: rgba(255, 255, 255, 0.93);
+               padding: 0.75em 1.5em;
+               border: solid 1px #a7d7f9;
+               border-radius: 0.75em;
+               -webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
+               box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
+       }
+}
diff --git a/skins/vector/components/personalMenu.less b/skins/vector/components/personalMenu.less
new file mode 100644 (file)
index 0000000..7256929
--- /dev/null
@@ -0,0 +1,41 @@
+/* Personal */
+#p-personal {
+       position: absolute;
+       top: 0.33em;
+       right: 0.75em;
+       /* Display on top of page tabs - bugs 37158, 48078 */
+       z-index: 100;
+
+       h3 {
+               display: none;
+       }
+
+       ul {
+               list-style-type: none;
+               list-style-image: none;
+               margin: 0;
+               padding-left: 10em; /* Keep from overlapping logo */
+       }
+
+       li {
+               line-height: 1.125em;
+               /* @noflip */
+               float: left;
+               margin-left: 0.75em;
+               margin-top: 0.5em;
+               font-size: @menu-personal-font-size;
+               white-space: nowrap;
+       }
+}
+
+/* Icon for Usernames */
+#pt-userpage,
+#pt-anonuserpage,
+#pt-login {
+       background-position: left top;
+       background-repeat: no-repeat;
+       /* SVG support using a transparent gradient to guarantee cross-browser
+        * compatibility (browsers able to understand gradient syntax support also SVG) */
+       .background-image-svg('images/user-icon.svg', 'images/user-icon.png');
+       padding-left: 15px !important;
+}
diff --git a/skins/vector/components/search.less b/skins/vector/components/search.less
new file mode 100644 (file)
index 0000000..5d716b6
--- /dev/null
@@ -0,0 +1,98 @@
+/* Search */
+#p-search {
+       /* @noflip */
+       float: left;
+       margin-right: 0.5em;
+       margin-left: 0.5em;
+
+       h3 {
+               display: none;
+       }
+
+       form,
+       input {
+               margin: 0;
+               margin-top: 0.4em;
+       }
+}
+
+div#simpleSearch {
+       display: block;
+       width: 14em;
+       height: 1.4em;
+       margin-top: 0.65em;
+       position: relative;
+       min-height: 1px; /* Gotta trigger hasLayout for IE7 */
+       border: solid 1px #aaa;
+       color: black;
+       background-color: white;
+       .background-image('images/search-fade.png');
+       background-position: top left;
+       background-repeat: repeat-x;
+
+       input {
+               color: black;
+               &:focus {
+                       outline: none;
+               }
+
+               &.placeholder {
+                       color: #999;
+               }
+
+               &:-ms-input-placeholder,
+               &:-moz-placeholder,
+               &::-webkit-input-placeholder {
+                       color: #999;
+               }
+
+               &#searchInput {
+                       position: absolute;
+                       top: 0;
+                       left: 0;
+                       width: 90%;
+                       margin: 0;
+                       padding: 0;
+                       padding-left: 0.2em;
+                       padding-top: 0.2em;
+                       padding-bottom: 0.2em;
+                       outline: none;
+                       border: none;
+                       /*
+                        * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent
+                        * this from ever being shown anyways.
+                       */
+                       font-size: 13px;
+                       background-color: transparent;
+                       direction: ltr;
+               }
+       }
+
+       button#searchButton {
+               position: absolute;
+               width: 10%;
+               right: 0;
+               top: 0;
+               padding: 0;
+               padding-top: 0.3em;
+               padding-bottom: 0.2em;
+               padding-right: 0.4em;
+               margin: 0;
+               border: none;
+               cursor: pointer;
+               background-color: transparent;
+               background-image: none;
+
+               /* OVERRIDDEN BY COMPLIANT BROWSERS */
+               img {
+                       border: none;
+                       margin: 0;
+                       margin-top: -3px;
+                       padding: 0;
+               }
+               /* IGNORED BY IE6 */
+               > img {
+                       margin: 0;
+               }
+       }
+}
diff --git a/skins/vector/components/tabs.less b/skins/vector/components/tabs.less
new file mode 100644 (file)
index 0000000..43e77cd
--- /dev/null
@@ -0,0 +1,273 @@
+/*
+Styling for namespace tabs (page, discussion) and views (read, edit, view history, watch and other actions)
+*/
+
+/* Navigation Labels */
+div.vectorTabs h3,
+div.vectorMenu h3 span {
+       display: none;
+}
+
+/* Namespaces and Views */
+div.vectorTabs {
+       /* @noflip */
+       float: left;
+       height: 2.5em;
+       .background-image('images/tab-break.png');
+       background-position: bottom left;
+       background-repeat: no-repeat;
+       padding-left: 1px;
+
+       ul {
+               /* @noflip */
+               float: left;
+               height: 100%;
+               list-style-type: none;
+               list-style-image: none;
+               margin: 0;
+               padding: 0;
+               .background-image('images/tab-break.png');
+               background-position: right bottom;
+               background-repeat: no-repeat;
+
+               li {
+                       /* @noflip */
+                       float: left;
+                       line-height: 1.125em;
+                       /* For IE6, overridden later to display:block by modern browsers */
+                       display: inline-block;
+                       height: 100%;
+                       margin: 0;
+                       padding: 0;
+                       background-color: #f3f3f3;
+                       .background-image('images/tab-normal-fade.png');
+                       background-position: bottom left;
+                       background-repeat: repeat-x;
+                       white-space: nowrap;
+               }
+
+               /* IGNORED BY IE6 which doesn't support child selector */
+               > li {
+                       display: block;
+               }
+       }
+
+       li {
+               &.new {
+                       a,
+                       a:visited{
+                               color: #a55858;
+                       }
+               }
+
+               &.selected {
+                       .background-image('images/tab-current-fade.png');
+                       a,
+                       a:visited{
+                               color: #333;
+                               text-decoration: none;
+                       }
+               }
+
+               &.icon {
+                       a {
+                               background-position: bottom right;
+                               background-repeat: no-repeat;
+                       }
+               }
+
+               a {
+                       /* For IE6, overridden later to display:block by modern browsers */
+                       display: inline-block;
+                       height: 1.9em;
+                       padding-left: 0.5em;
+                       padding-right: 0.5em;
+                       color: @menu-link-color;
+                       cursor: pointer;
+                       font-size: 0.8em;
+               }
+
+               /* Ignored by IE6 which doesn't support child selector */
+               > a {
+                       display: block;
+               }
+       }
+
+       span {
+               display: inline-block;
+               .background-image('images/tab-break.png');
+               background-position: bottom right;
+               background-repeat: no-repeat;
+
+               a  {
+                       /* For IE6, overridden later to display:block by modern browsers */
+                       display: inline-block;
+                       padding-top: 1.25em;
+               }
+
+               /* Ignored by IE6 which doesn't support child selector */
+               > a {
+                       /* @noflip */
+                       float: left;
+                       display: block;
+               }
+       }
+}
+
+/* Variants and Actions */
+div.vectorMenu {
+       /* @noflip */
+       direction: ltr;
+       /* @noflip */
+       float: left;
+       /* SVG support using a transparent gradient to guarantee cross-browser
+        * compatibility (browsers able to understand gradient syntax support also SVG) */
+       .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png');
+       /* @noflip */
+       background-position: 100% 60%;
+       background-repeat: no-repeat;
+       cursor: pointer;
+}
+
+div.vectorMenuFocus {
+       /* SVG support using a transparent gradient to guarantee cross-browser
+        * compatibility (browsers able to understand gradient syntax support also SVG) */
+       .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png');
+       background-position: 100% 60%;
+}
+
+body.rtl div.vectorMenu {
+       /* @noflip */
+       direction: rtl;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+div#mw-head div.vectorMenu h3 {
+       /* @noflip */
+       float: left;
+       .background-image('images/tab-break.png');
+       background-repeat: no-repeat;
+       background-position: bottom left;
+       margin-left: -1px;
+}
+
+/* IGNORED BY IE6 */
+div#mw-head div.vectorMenu > h3 {
+       background-image: none;
+}
+
+div#mw-head div.vectorMenu h4,
+div.vectorMenu#p-variants #mw-vector-current-variant {
+       display: inline-block;
+       float: left;
+       font-size: 0.8em;
+       padding-left: 0.5em;
+       padding-top: 1.375em;
+       font-weight: normal;
+       border: none;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+div.vectorMenu h3 a {
+       display: inline-block;
+       width: 24px;
+       height: 1.9em;
+       text-decoration: none;
+       .background-image('images/tab-break.png');
+       background-repeat: no-repeat;
+       background-position: bottom right;
+}
+
+/* IGNORED BY IE6 */
+div.vectorMenu h3 > a {
+       display: block;
+}
+
+div.vectorMenu div.menu {
+       position: relative;
+       display: none;
+       clear: both;
+       text-align: left;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+body.rtl div.vectorMenu div.menu {
+       /* @noflip */
+       margin-left: 24px;
+}
+
+/* IGNORED BY IE6 */
+body.rtl div.vectorMenu > div.menu {
+       /* @noflip */
+       margin-left: auto;
+}
+
+/* IGNORED BY IE6 */
+/* Also fixes old versions of FireFox */
+body.rtl div.vectorMenu > div.menu,
+x:-moz-any-link {
+       /* @noflip */
+       margin-left: 23px;
+}
+
+/* Enable forcing showing of the menu for accessibility */
+div.vectorMenu:hover div.menu,
+div.vectorMenu div.menuForceShow {
+       display: block;
+}
+
+div.vectorMenu ul {
+       position: absolute;
+       background-color: white;
+       border: solid 1px silver;
+       border-top-width: 0;
+       list-style-type: none;
+       list-style-image: none;
+       padding: 0;
+       margin: 0;
+       margin-left: -1px;
+       text-align: left;
+}
+
+/* Fixes old versions of FireFox */
+div.vectorMenu ul,
+x:-moz-any-link {
+       min-width: 5em;
+}
+
+/* Returns things back to normal in modern versions of FireFox */
+div.vectorMenu ul,
+x:-moz-any-link,
+x:default {
+       min-width: 0;
+}
+
+div.vectorMenu li {
+       padding: 0;
+       margin: 0;
+       text-align: left;
+       line-height: 1em;
+}
+
+/* OVERRIDDEN BY COMPLIANT BROWSERS */
+div.vectorMenu li a {
+       display: inline-block;
+       padding: 0.5em;
+       white-space: nowrap;
+       color: @menu-link-color;
+       cursor: pointer;
+       font-size: 0.8em;
+}
+
+/* IGNORED BY IE6 */
+div.vectorMenu li > a {
+       display: block;
+}
+
+div.vectorMenu li.selected a,
+div.vectorMenu li.selected a:visited {
+       color: #333;
+       text-decoration: none;
+}
+
+@import 'watchstar.less';
diff --git a/skins/vector/components/watchstar.less b/skins/vector/components/watchstar.less
new file mode 100644 (file)
index 0000000..6f93215
--- /dev/null
@@ -0,0 +1,40 @@
+/* Watch/Unwatch Icon Styling */
+#ca-unwatch.icon a,
+#ca-watch.icon a {
+       margin: 0;
+       padding: 0;
+       outline: none;
+       display: block;
+       width: 26px;
+       /* This hides the text but shows the background image */
+       padding-top: 3.1em;
+       margin-top: 0;
+       /* Only applied in IE6 */
+       margin-top: -0.8em !ie;
+       height: 0;
+       overflow: hidden;
+       .background-image('images/watch-icons.png');
+}
+#ca-unwatch.icon a {
+       background-position: -43px 60%;
+}
+#ca-watch.icon a {
+       background-position: 5px 60%;
+}
+#ca-unwatch.icon a:hover,
+#ca-unwatch.icon a:focus {
+       background-position: -67px 60%;
+}
+#ca-watch.icon a:hover,
+#ca-watch.icon a:focus {
+       background-position: -19px 60%;
+}
+#ca-unwatch.icon a.loading,
+#ca-watch.icon a.loading {
+       .background-image('images/watch-icon-loading.gif');
+       background-position: 5px 60%;
+}
+#ca-unwatch.icon a span,
+#ca-watch.icon a span {
+       display: none;
+}
diff --git a/skins/vector/externalLinks.less b/skins/vector/externalLinks.less
deleted file mode 100644 (file)
index 5b02abb..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-// FIXME: This size of this CSS is ridiculous. Please refactor (see bug 54604)
-@import "mediawiki.mixins.less";
-
-div#content a.external {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/external-link-ltr-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href ^="https://"],
-.link-https {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/lock-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href ^="mailto:"],
-.link-mailto {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/mail-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href ^="news:"] {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/news-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href ^="ftp://"],
-.link-ftp {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/file-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href ^="irc://"],
-div#content a.external[href ^="ircs://"],
-.link-irc {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/talk-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href $=".ogg"], div#content a.external[href $=".OGG"],
-div#content a.external[href $=".mid"], div#content a.external[href $=".MID"],
-div#content a.external[href $=".midi"], div#content a.external[href $=".MIDI"],
-div#content a.external[href $=".mp3"], div#content a.external[href $=".MP3"],
-div#content a.external[href $=".wav"], div#content a.external[href $=".WAV"],
-div#content a.external[href $=".wma"], div#content a.external[href $=".WMA"],
-.link-audio {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/audio-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href $=".ogm"], div#content a.external[href $=".OGM"],
-div#content a.external[href $=".avi"], div#content a.external[href $=".AVI"],
-div#content a.external[href $=".mpeg"], div#content a.external[href $=".MPEG"],
-div#content a.external[href $=".mpg"], div#content a.external[href $=".MPG"],
-.link-video {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/video-icon.png');
-       padding-right: 13px;
-}
-div#content a.external[href $=".pdf"], div#content a.external[href $=".PDF"],
-div#content a.external[href *=".pdf#"], div#content a.external[href *=".PDF#"],
-div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
-.link-document {
-       background-position: center right;
-       background-repeat: no-repeat;
-       .background-image('images/document-icon.png');
-       padding-right: 13px;
-}
diff --git a/skins/vector/images/audio-icon.svg b/skins/vector/images/audio-icon.svg
new file mode 100644 (file)
index 0000000..d88b57f
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg6167"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Nowy dokument 22">
+  <defs
+     id="defs6169">
+    <linearGradient
+       id="linearGradient6707">
+      <stop
+         style="stop-color:#b2bf46;stop-opacity:1;"
+         offset="0"
+         id="stop6709" />
+      <stop
+         style="stop-color:#c8d17b;stop-opacity:1;"
+         offset="1"
+         id="stop6711" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6707"
+       id="linearGradient6713"
+       x1="22.262903"
+       y1="9.1418257"
+       x2="22.262903"
+       y2="5.3889236"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.96979296,0,0,0.96979296,858.75554,710.2631)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="7.6304965"
+     inkscape:cy="5.5914204"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata6172">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-877.85712,-710.2193)">
+    <path
+       style="fill:url(#linearGradient6713);fill-opacity:1;stroke:#757f2a;stroke-width:0.96979296px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 880.63649,710.74799 0,5.78845 c -0.30291,0.0337 -0.60613,0.10534 -0.90918,0.24245 -1.08747,0.49204 -1.62536,1.48002 -1.21224,2.21234 0.41311,0.73233 1.60977,0.91632 2.69723,0.42429 0.87694,-0.39677 1.37959,-1.10894 1.33347,-1.75775 l 0,-0.15153 0,-3.81856 2.93968,0 0,2.84876 c -0.30894,0.0309 -0.62965,0.10227 -0.93948,0.24245 -1.07493,0.48636 -1.6206,1.48846 -1.21225,2.21234 0.40836,0.72389 1.59201,0.91065 2.66694,0.42429 0.87404,-0.39547 1.38893,-1.11233 1.33346,-1.75775 l 0,-0.15153 0,-6.75825 -6.69763,0 z"
+       id="path6186"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/skins/vector/images/document-icon.svg b/skins/vector/images/document-icon.svg
new file mode 100644 (file)
index 0000000..1055769
--- /dev/null
@@ -0,0 +1,213 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg7339"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="document-icon.svg">
+  <defs
+     id="defs7341">
+    <linearGradient
+       id="linearGradient7918">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7920" />
+      <stop
+         style="stop-color:#f8f8f8;stop-opacity:1;"
+         offset="1"
+         id="stop7922" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7902">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7904" />
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="1"
+         id="stop7906" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7931"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7968"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,810.35359,682.73485)"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32"
+     inkscape:cx="3.7383502"
+     inkscape:cy="5.7078811"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7344">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-783.57141,-687.36218)">
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:1;stroke:#878787;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 785.05579,687.85437 0,9.09375 7.03125,0 0,-6.84375 -2.25,-2.25 -4.78125,0 z"
+       id="rect7358" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:url(#radialGradient7968);fill-opacity:1;stroke:none"
+       d="m 786.52454,689.44812 0,6.09375 4,0 0,-5.28125 -0.84375,0 0,-0.8125 -3.15625,0 z"
+       id="rect7896" />
+    <g
+       style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text7952">
+      <path
+         d="m 786.54126,689.4494 0.0986,0 0,0.646 0.35498,0 0,0.083 -0.45361,0 0,-0.72901"
+         style=""
+         id="path2999" />
+      <path
+         d="m 787.28833,689.69452 c -0.0482,0 -0.0863,0.0189 -0.11426,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 0,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11475,0.0562 0.0479,0 0.0858,-0.0189 0.11377,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11377,-0.0571 m 0,-0.0762 c 0.0781,0 0.13949,0.0254 0.18408,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18408,0.0762 -0.0784,0 -0.13997,-0.0254 -0.18457,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18457,-0.0762"
+         style=""
+         id="path3001" />
+      <path
+         d="m 788.00464,689.71552 c -0.0101,-0.006 -0.0212,-0.0101 -0.0332,-0.0127 -0.0117,-0.003 -0.0247,-0.004 -0.0391,-0.004 -0.0508,0 -0.0898,0.0166 -0.11718,0.0498 -0.027,0.0329 -0.0405,0.0802 -0.0405,0.14209 l 0,0.28809 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0189,-0.0332 0.0435,-0.0578 0.0737,-0.0737 0.0303,-0.0163 0.0671,-0.0244 0.11035,-0.0244 0.006,0 0.013,4.9e-4 0.0205,0.001 0.007,6.5e-4 0.0158,0.002 0.0249,0.003 l 4.9e-4,0.0923"
+         style=""
+         id="path3003" />
+      <path
+         d="m 788.54614,689.88251 0,0.0439 -0.41308,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.1001,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10303,0.0108 -0.0872,0 -0.15641,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13168,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0517,0.11963 l 0.32031,-4.9e-4"
+         style=""
+         id="path3005" />
+      <path
+         d="m 789.11938,689.73651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0466,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10205,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
+         style=""
+         id="path3007" />
+      <path
+         d="m 786.53735,690.88153 0.0899,0 0,0.54688 -0.0899,0 0,-0.54688 m 0,-0.21289 0.0899,0 0,0.11377 -0.0899,0 0,-0.11377"
+         style=""
+         id="path3009" />
+      <path
+         d="m 786.90161,691.34637 0,0.29004 -0.0903,0 0,-0.75488 0.0903,0 0,0.083 c 0.0189,-0.0326 0.0426,-0.0566 0.0713,-0.0723 0.029,-0.016 0.0635,-0.0239 0.10352,-0.0239 0.0664,0 0.12028,0.0264 0.16162,0.0791 0.0417,0.0527 0.0625,0.12207 0.0625,0.20801 0,0.0859 -0.0208,0.15527 -0.0625,0.208 -0.0413,0.0527 -0.0952,0.0791 -0.16162,0.0791 -0.04,0 -0.0745,-0.008 -0.10352,-0.0234 -0.0286,-0.0159 -0.0524,-0.0402 -0.0713,-0.0728 m 0.30567,-0.19091 c -10e-6,-0.0661 -0.0137,-0.11784 -0.041,-0.15528 -0.027,-0.0378 -0.0643,-0.0566 -0.11182,-0.0566 -0.0475,0 -0.085,0.0189 -0.1123,0.0566 -0.027,0.0374 -0.0405,0.0892 -0.0405,0.15528 0,0.0661 0.0135,0.118 0.0405,0.15576 0.0273,0.0374 0.0648,0.0562 0.1123,0.0562 0.0475,0 0.0848,-0.0187 0.11182,-0.0562 0.0273,-0.0378 0.041,-0.0897 0.041,-0.15576"
+         style=""
+         id="path3011" />
+      <path
+         d="m 787.7981,690.89764 0,0.085 c -0.0254,-0.013 -0.0518,-0.0228 -0.0791,-0.0293 -0.0273,-0.007 -0.0557,-0.01 -0.085,-0.01 -0.0446,0 -0.0781,0.007 -0.10058,0.0205 -0.0221,0.0137 -0.0332,0.0342 -0.0332,0.0615 0,0.0208 0.008,0.0373 0.0239,0.0493 0.0159,0.0117 0.048,0.023 0.0962,0.0337 l 0.0308,0.007 c 0.0638,0.0137 0.10905,0.033 0.13575,0.0581 0.027,0.0247 0.0405,0.0594 0.0405,0.10401 0,0.0508 -0.0202,0.091 -0.0605,0.1206 -0.04,0.0296 -0.0952,0.0444 -0.16553,0.0444 -0.0293,0 -0.0599,-0.003 -0.0918,-0.009 -0.0316,-0.006 -0.0649,-0.014 -0.1001,-0.0254 l 0,-0.0928 c 0.0332,0.0173 0.0659,0.0303 0.0982,0.0391 0.0322,0.008 0.0641,0.0127 0.0957,0.0127 0.0423,0 0.0749,-0.007 0.0977,-0.0215 0.0228,-0.0147 0.0342,-0.0352 0.0342,-0.0615 0,-0.0244 -0.008,-0.0431 -0.0249,-0.0562 -0.0163,-0.013 -0.0522,-0.0255 -0.10792,-0.0376 l -0.0312,-0.007 c -0.0557,-0.0117 -0.0959,-0.0296 -0.1206,-0.0537 -0.0247,-0.0244 -0.0371,-0.0578 -0.0371,-0.1001 0,-0.0514 0.0182,-0.0912 0.0547,-0.11914 0.0365,-0.028 0.0882,-0.042 0.15527,-0.042 0.0332,0 0.0644,0.002 0.0937,0.007 0.0293,0.005 0.0563,0.0122 0.0811,0.022"
+         style=""
+         id="path3013" />
+      <path
+         d="m 787.96167,691.21259 0,-0.33106 0.0898,0 0,0.32764 c 0,0.0518 0.0101,0.0907 0.0303,0.1167 0.0202,0.0257 0.0505,0.0386 0.0908,0.0386 0.0485,0 0.0868,-0.0155 0.11474,-0.0464 0.0283,-0.0309 0.0425,-0.0731 0.0425,-0.12646 l 0,-0.31006 0.0898,0 0,0.54688 -0.0898,0 0,-0.084 c -0.0218,0.0332 -0.0472,0.0579 -0.0762,0.0742 -0.0286,0.0159 -0.062,0.0239 -0.1001,0.0239 -0.0628,0 -0.11051,-0.0195 -0.14306,-0.0586 -0.0326,-0.0391 -0.0488,-0.0962 -0.0488,-0.17138 m 0.22607,-0.34424 0,0"
+         style=""
+         id="path3015" />
+      <path
+         d="m 789.03149,690.98651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0465,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10205,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
+         style=""
+         id="path3017" />
+      <path
+         d="m 786.89722,692.21454 0,-0.2959 0.0898,0 0,0.75977 -0.0898,0 0,-0.082 c -0.0189,0.0326 -0.0428,0.0568 -0.0718,0.0728 -0.0286,0.0156 -0.0631,0.0234 -0.10352,0.0234 -0.0661,0 -0.11995,-0.0264 -0.16162,-0.0791 -0.0413,-0.0527 -0.062,-0.12207 -0.062,-0.208 0,-0.0859 0.0207,-0.15528 0.062,-0.20801 0.0417,-0.0527 0.0955,-0.0791 0.16162,-0.0791 0.0404,0 0.0749,0.008 0.10352,0.0239 0.029,0.0156 0.0529,0.0397 0.0718,0.0723 m -0.30616,0.19092 c 0,0.0661 0.0135,0.118 0.0405,0.15576 0.0274,0.0374 0.0648,0.0562 0.11231,0.0562 0.0475,0 0.085,-0.0187 0.1123,-0.0562 0.0273,-0.0378 0.041,-0.0897 0.041,-0.15576 0,-0.0661 -0.0137,-0.11784 -0.041,-0.15528 -0.0273,-0.0378 -0.0648,-0.0566 -0.1123,-0.0566 -0.0475,0 -0.085,0.0189 -0.11231,0.0566 -0.027,0.0374 -0.0405,0.0892 -0.0405,0.15528"
+         style=""
+         id="path3019" />
+      <path
+         d="m 787.38403,692.19452 c -0.0482,0 -0.0863,0.0189 -0.11425,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 0,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11474,0.0562 0.0478,0 0.0858,-0.0189 0.11377,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11377,-0.0571 m 0,-0.0762 c 0.0781,0 0.13949,0.0254 0.18409,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18409,0.0762 -0.0785,0 -0.13997,-0.0254 -0.18457,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18457,-0.0762"
+         style=""
+         id="path3021" />
+      <path
+         d="m 787.78345,691.91864 0.0898,0 0,0.75977 -0.0898,0 0,-0.75977"
+         style=""
+         id="path3023" />
+      <path
+         d="m 788.27271,692.19452 c -0.0482,0 -0.0863,0.0189 -0.11426,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 -10e-6,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11475,0.0562 0.0479,0 0.0858,-0.0189 0.11376,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11376,-0.0571 m 0,-0.0762 c 0.0781,0 0.13948,0.0254 0.18408,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18408,0.0762 -0.0785,0 -0.13998,-0.0254 -0.18458,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18458,-0.0762"
+         style=""
+         id="path3025" />
+      <path
+         d="m 788.98901,692.21552 c -0.0101,-0.006 -0.0212,-0.0101 -0.0332,-0.0127 -0.0117,-0.003 -0.0247,-0.004 -0.0391,-0.004 -0.0508,0 -0.0898,0.0166 -0.11719,0.0498 -0.027,0.0329 -0.0405,0.0802 -0.0405,0.14209 l 0,0.28809 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0189,-0.0332 0.0435,-0.0578 0.0737,-0.0737 0.0303,-0.0163 0.0671,-0.0244 0.11036,-0.0244 0.006,0 0.013,4.9e-4 0.0205,0.001 0.007,6.5e-4 0.0158,0.002 0.0249,0.003 l 4.8e-4,0.0923"
+         style=""
+         id="path3027" />
+      <path
+         d="m 786.88599,693.39764 0,0.085 c -0.0254,-0.013 -0.0518,-0.0228 -0.0791,-0.0293 -0.0273,-0.007 -0.0557,-0.01 -0.085,-0.01 -0.0446,0 -0.0781,0.007 -0.10058,0.0205 -0.0221,0.0137 -0.0332,0.0342 -0.0332,0.0615 0,0.0208 0.008,0.0373 0.0239,0.0493 0.0159,0.0117 0.048,0.023 0.0962,0.0337 l 0.0308,0.007 c 0.0638,0.0137 0.10905,0.033 0.13575,0.0581 0.027,0.0247 0.0405,0.0594 0.0405,0.10401 0,0.0508 -0.0202,0.091 -0.0605,0.1206 -0.04,0.0296 -0.0952,0.0444 -0.16553,0.0444 -0.0293,0 -0.0599,-0.003 -0.0918,-0.009 -0.0316,-0.006 -0.0649,-0.014 -0.1001,-0.0254 l 0,-0.0928 c 0.0332,0.0173 0.0659,0.0303 0.0982,0.0391 0.0322,0.008 0.0641,0.0127 0.0957,0.0127 0.0423,0 0.0749,-0.007 0.0977,-0.0215 0.0228,-0.0147 0.0342,-0.0352 0.0342,-0.0615 0,-0.0244 -0.008,-0.0431 -0.0249,-0.0562 -0.0163,-0.013 -0.0522,-0.0255 -0.10791,-0.0376 l -0.0312,-0.007 c -0.0557,-0.0117 -0.0959,-0.0296 -0.12061,-0.0537 -0.0247,-0.0244 -0.0371,-0.0578 -0.0371,-0.1001 0,-0.0514 0.0182,-0.0912 0.0547,-0.11914 0.0365,-0.028 0.0882,-0.042 0.15527,-0.042 0.0332,0 0.0644,0.002 0.0937,0.007 0.0293,0.005 0.0563,0.0122 0.0811,0.022"
+         style=""
+         id="path3029" />
+      <path
+         d="m 787.05884,693.38153 0.0898,0 0,0.54688 -0.0898,0 0,-0.54688 m 0,-0.21289 0.0898,0 0,0.11377 -0.0898,0 0,-0.11377"
+         style=""
+         id="path3031" />
+      <path
+         d="m 787.42505,693.22626 0,0.15527 0.18506,0 0,0.0698 -0.18506,0 0,0.29688 c 0,0.0446 0.006,0.0732 0.0181,0.0859 0.0124,0.0127 0.0373,0.019 0.0747,0.019 l 0.0923,0 0,0.0752 -0.0923,0 c -0.0693,0 -0.11719,-0.0129 -0.14355,-0.0386 -0.0264,-0.026 -0.0396,-0.0732 -0.0396,-0.1416 l 0,-0.29688 -0.0659,0 0,-0.0698 0.0659,0 0,-0.15527 0.0903,0"
+         style=""
+         id="path3033" />
+      <path
+         d="m 788.29565,693.6535 c -0.0726,0 -0.12288,0.008 -0.15087,0.0249 -0.028,0.0166 -0.042,0.0449 -0.042,0.085 0,0.0319 0.0104,0.0573 0.0312,0.0762 0.0212,0.0185 0.0498,0.0278 0.0859,0.0278 0.0498,0 0.0897,-0.0176 0.11963,-0.0527 0.0303,-0.0355 0.0454,-0.0825 0.0454,-0.14112 l 0,-0.02 -0.0894,0 m 0.1792,-0.0371 0,0.31202 -0.0898,0 0,-0.083 c -0.0205,0.0332 -0.0461,0.0578 -0.0767,0.0737 -0.0306,0.0156 -0.068,0.0234 -0.11231,0.0234 -0.056,0 -0.10058,-0.0156 -0.13378,-0.0469 -0.0329,-0.0316 -0.0493,-0.0737 -0.0493,-0.12646 0,-0.0615 0.0205,-0.10791 0.0615,-0.13916 0.0413,-0.0312 0.10287,-0.0469 0.18457,-0.0469 l 0.12598,0 0,-0.009 c 0,-0.0413 -0.0137,-0.0732 -0.041,-0.0957 -0.027,-0.0228 -0.0651,-0.0342 -0.11425,-0.0342 -0.0312,0 -0.0617,0.004 -0.0913,0.0112 -0.0296,0.007 -0.0581,0.0187 -0.0854,0.0337 l 0,-0.083 c 0.0329,-0.0127 0.0648,-0.0221 0.0957,-0.0283 0.0309,-0.007 0.061,-0.01 0.0903,-0.01 0.0791,0 0.13819,0.0205 0.17725,0.0615 0.0391,0.041 0.0586,0.10319 0.0586,0.18652"
+         style=""
+         id="path3035" />
+      <path
+         d="m 789.08618,693.48651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0466,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10206,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
+         style=""
+         id="path3037" />
+      <path
+         d="m 790.10278,693.63251 0,0.0439 -0.41308,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.1001,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10303,0.0108 -0.0872,0 -0.15641,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13168,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10645,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0517,0.11963 l 0.32031,-4.9e-4"
+         style=""
+         id="path3039" />
+      <path
+         d="m 790.33911,693.22626 0,0.15527 0.18506,0 0,0.0698 -0.18506,0 0,0.29688 c 0,0.0446 0.006,0.0732 0.0181,0.0859 0.0124,0.0127 0.0373,0.019 0.0747,0.019 l 0.0923,0 0,0.0752 -0.0923,0 c -0.0693,0 -0.11718,-0.0129 -0.14355,-0.0386 -0.0264,-0.026 -0.0395,-0.0732 -0.0395,-0.1416 l 0,-0.29688 -0.0659,0 0,-0.0698 0.0659,0 0,-0.15527 0.0903,0"
+         style=""
+         id="path3041" />
+    </g>
+    <path
+       style="fill:none;stroke:#878787;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 789.74329,687.77624 0,2.35938 2.34375,0"
+       id="path7894"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/skins/vector/images/external-link-ltr-icon.svg b/skins/vector/images/external-link-ltr-icon.svg
new file mode 100644 (file)
index 0000000..d77b879
--- /dev/null
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="external-link-ltr-icon.svg"
+   inkscape:export-filename="/run/user/1000/gvfs/sftp:host=users.v-lo.krakow.pl,user=m4tx/home/WWW/m4tx/WWW/Wikimedia/skins/vector/images/external-link-ltr-icon.png"
+   inkscape:export-xdpi="144.13724"
+   inkscape:export-ydpi="144.13724">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Club"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Club"
+       style="overflow:visible">
+      <path
+         id="path3996"
+         d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.74587913pt"
+         transform="scale(0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="DiamondM"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DiamondM"
+       style="overflow:visible">
+      <path
+         id="path3849"
+         d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3767"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="11.725312"
+     inkscape:cy="5.6780159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-826.42859,-698.79077)">
+    <rect
+       style="fill:#ffffff;stroke:#0066cc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       id="rect2996"
+       width="5.9821429"
+       height="5.9821429"
+       x="826.92859"
+       y="702.30865"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777" />
+    <g
+       id="g4815"
+       transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,762.87,-359.88339)"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777">
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         inkscape:connector-curvature="0"
+         id="path4777"
+         d="m 796.90819,700.28317 3.70127,-3.70126 3.81174,3.81175 -0.0189,2.20336 -1.85234,0 0,3.8543 -3.80233,0 0,-3.97108 -1.8536,0 z"
+         style="fill:#0066ff;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path4779"
+         d="m 800.60946,698.00244 3.46986,3.43865 -2.5702,0 0,4.07436 -1.7362,0 0,-4.07436 -2.61754,-3.6e-4 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/external-link-rtl-icon.svg b/skins/vector/images/external-link-rtl-icon.svg
new file mode 100644 (file)
index 0000000..7ddf89e
--- /dev/null
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="external-link-ltr-icon.svg"
+   inkscape:export-filename="/run/user/1000/gvfs/sftp:host=users.v-lo.krakow.pl,user=m4tx/home/WWW/m4tx/WWW/Wikimedia/skins/vector/images/external-link-ltr-icon.png"
+   inkscape:export-xdpi="144.13724"
+   inkscape:export-ydpi="144.13724">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Club"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Club"
+       style="overflow:visible">
+      <path
+         id="path3996"
+         d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:0.74587913pt"
+         transform="scale(0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="DiamondM"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DiamondM"
+       style="overflow:visible">
+      <path
+         id="path3849"
+         d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.4)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3767"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="11.725312"
+     inkscape:cy="5.6780159"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-826.42859,-698.79077)">
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#0066cc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       id="rect2996"
+       width="5.9821429"
+       height="5.9821429"
+       x="-835.92859"
+       y="702.30865"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777"
+       transform="scale(-1,1)" />
+    <g
+       id="g4815"
+       transform="matrix(-0.70710678,0.70710678,0.70710678,0.70710678,899.98717,-359.88339)"
+       inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
+       inkscape:export-xdpi="90.085777"
+       inkscape:export-ydpi="90.085777">
+      <path
+         sodipodi:nodetypes="cccccccccc"
+         inkscape:connector-curvature="0"
+         id="path4777"
+         d="m 796.90819,700.28317 3.70127,-3.70126 3.81174,3.81175 -0.0189,2.20336 -1.85234,0 0,3.8543 -3.80233,0 0,-3.97108 -1.8536,0 z"
+         style="fill:#0066ff;fill-opacity:1;stroke:none" />
+      <path
+         sodipodi:nodetypes="cccccccc"
+         inkscape:connector-curvature="0"
+         id="path4779"
+         d="m 800.60946,698.00244 3.46986,3.43865 -2.5702,0 0,4.07436 -1.7362,0 0,-4.07436 -2.61754,-3.6e-4 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/file-icon.svg b/skins/vector/images/file-icon.svg
new file mode 100644 (file)
index 0000000..cd2106d
--- /dev/null
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg7339"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Nowy dokument 30">
+  <defs
+     id="defs7341">
+    <linearGradient
+       id="linearGradient7918">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7920" />
+      <stop
+         style="stop-color:#f8f8f8;stop-opacity:1;"
+         offset="1"
+         id="stop7922" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient7902">
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="0"
+         id="stop7904" />
+      <stop
+         style="stop-color:#e2e2e2;stop-opacity:1;"
+         offset="1"
+         id="stop7906" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7924"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7918"
+       id="radialGradient7931"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
+       cx="-16.71875"
+       cy="3.344311"
+       fx="-16.71875"
+       fy="3.344311"
+       r="2" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="1.5361037"
+     inkscape:cy="9.1135498"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7344">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-783.57141,-687.36218)">
+    <g
+       id="g7926"
+       transform="translate(19.984375,0.08593751)">
+      <path
+         transform="translate(783.57141,687.36218)"
+         id="rect7358"
+         d="m -18.5,0.40625 0,9.09375 7.03125,0 0,-6.84375 -2.25,-2.25 -4.78125,0 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:#878787;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:connector-curvature="0" />
+      <path
+         id="rect7896"
+         transform="translate(783.57141,687.36218)"
+         d="m -17.03125,2 0,6.09375 4,0 0,-5.28125 -0.84375,0 0,-0.8125 -3.15625,0 z"
+         style="fill:url(#radialGradient7931);fill-opacity:1;stroke:none"
+         inkscape:connector-curvature="0" />
+      <path
+         transform="translate(783.57141,687.36218)"
+         inkscape:connector-curvature="0"
+         id="path7894"
+         d="m -13.8125,0.32812497 0,2.35937503 2.34375,0"
+         style="fill:none;stroke:#878787;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/lock-icon.svg b/skins/vector/images/lock-icon.svg
new file mode 100644 (file)
index 0000000..1c40d4a
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg3813"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="lock-icon.svg">
+  <defs
+     id="defs3815">
+    <linearGradient
+       id="linearGradient4348">
+      <stop
+         style="stop-color:#fff8bb;stop-opacity:1;"
+         offset="0"
+         id="stop4350" />
+      <stop
+         style="stop-color:#e9d84d;stop-opacity:1;"
+         offset="1"
+         id="stop4352" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4348"
+       id="radialGradient4354"
+       cx="806.97711"
+       cy="720.04266"
+       fx="806.97711"
+       fy="720.04266"
+       r="4.5721774"
+       gradientTransform="matrix(0.66177697,-3.2424834e-7,5.5632116e-7,1.1354276,273.09596,-96.976308)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4348"
+       id="radialGradient4394"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.66177697,-3.2424834e-7,5.5632116e-7,1.1354276,273.09596,-96.976308)"
+       cx="806.97711"
+       cy="720.04266"
+       fx="806.97711"
+       fy="720.04266"
+       r="4.5721774" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-65.758796"
+     inkscape:cy="-20.849434"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata3818">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-817.85712,-715.93359)">
+    <g
+       id="g4389"
+       transform="translate(14.984745,-0.12063576)">
+      <rect
+         y="719.4939"
+         x="803.37238"
+         height="6.0609155"
+         width="8.1443548"
+         id="rect3832"
+         style="fill:url(#radialGradient4394);fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         sodipodi:end="6.2831853"
+         sodipodi:start="3.1415927"
+         transform="matrix(0.98668274,0,0,2.0515802,802.05109,715.32099)"
+         d="m 2.4622467,2.0134813 c 0,-0.7845354 1.3285159,-1.42052694 2.9673232,-1.4205269 1.6388072,3e-8 2.9673229,0.6359916 2.9673229,1.420527 l -2.9673231,0 z"
+         sodipodi:ry="1.420527"
+         sodipodi:rx="2.9673231"
+         sodipodi:cy="2.0134814"
+         sodipodi:cx="5.4295697"
+         id="path4346"
+         style="fill:none;stroke:#888a85;stroke-width:0.68014622;stroke-linejoin:miter;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
+         sodipodi:type="arc" />
+      <path
+         style="fill:none;stroke:#ac5f08;stroke-width:1.04513526px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.69072164"
+         d="m 807.32587,723.57494 0,-1.12645"
+         id="path4368"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/mail-icon.svg b/skins/vector/images/mail-icon.svg
new file mode 100644 (file)
index 0000000..43b4ce8
--- /dev/null
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg4396"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="Nowy dokument 10">
+  <defs
+     id="defs4398">
+    <linearGradient
+       id="linearGradient4947">
+      <stop
+         style="stop-color:#d2d2d2;stop-opacity:1;"
+         offset="0"
+         id="stop4949" />
+      <stop
+         style="stop-color:#f6f6f6;stop-opacity:0;"
+         offset="1"
+         id="stop4951" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4927">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop4929" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop4931" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4927"
+       id="linearGradient4933"
+       x1="847.07153"
+       y1="696.06909"
+       x2="847.07153"
+       y2="699.29285"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(14,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4947"
+       id="radialGradient4953"
+       cx="861.14233"
+       cy="699.01233"
+       fx="861.14233"
+       fy="699.01233"
+       r="4.987131"
+       gradientTransform="matrix(1.1817158,0,0,1.1856764,-156.48316,-109.77743)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4947"
+       id="radialGradient4962"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.1817158,0,0,1.1856764,-156.48316,-109.77743)"
+       cx="861.14233"
+       cy="699.01233"
+       fx="861.14233"
+       fy="699.01233"
+       r="4.987131" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="8"
+     inkscape:cx="17.964337"
+     inkscape:cy="-3.5009398"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4401">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-832.14288,-690.2193)">
+    <g
+       id="g4957"
+       transform="translate(-23.99948,-20.005085)">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4415"
+         d="m 856.64003,714.98211 4.51344,-4.27677 4.49122,4.2557 0,4.78239 -8.96019,0 z"
+         style="fill:url(#radialGradient4962);fill-opacity:1;stroke:#888a85;stroke-width:0.96960205px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
+      <path
+         sodipodi:nodetypes="ccc"
+         style="fill:#a8a7a3;fill-opacity:1;stroke:none"
+         d="m 858.18557,715.14414 2.96409,-2.80866 2.94949,2.79482"
+         id="path4937"
+         inkscape:connector-curvature="0" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         inkscape:connector-curvature="0"
+         id="path4955"
+         d="m 857.89337,719.26617 3.26025,-3.14859 3.23877,3.11734 -3.24112,-1.90625 z"
+         style="fill:#888a85;fill-opacity:1;stroke:none" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/news-icon.svg b/skins/vector/images/news-icon.svg
new file mode 100644 (file)
index 0000000..b8f2102
--- /dev/null
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg4983"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="news-icon.svg">
+  <defs
+     id="defs4985">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5528">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop5530" />
+      <stop
+         style="stop-color:#cccccc;stop-opacity:0;"
+         offset="1"
+         id="stop5532" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient5534"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient5566"
+       gradientUnits="userSpaceOnUse"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3048"
+       gradientUnits="userSpaceOnUse"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303"
+       gradientTransform="translate(-19.98763,0.00341)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3799"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-29.98763,0.00341)"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3821"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-907.84475,-687.35877)"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5528"
+       id="linearGradient3824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-19.98763,0.00341)"
+       x1="902.61218"
+       y1="696.32751"
+       x2="902.61218"
+       y2="694.04303" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="0.50343757"
+     inkscape:cy="4.9811997"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4988">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-877.85712,-687.36218)">
+    <g
+       style="font-size:41.13991928px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5536">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 879.87841,689.39933 0.19335,0 0,0.60364 0.33948,0 0,0.14614 -0.53283,0 0,-0.74978"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3051" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 880.52524,689.58665 0.17978,0 0,0.56246 -0.17978,0 0,-0.56246 m 0,-0.21896 0.17978,0 0,0.14664 -0.17978,0 0,-0.14664"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3053" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 881.05857,690.06775 0,0.29529 -0.17979,0 0,-0.77639 0.17979,0 0,0.0824 c 0.0248,-0.0328 0.0522,-0.0569 0.0824,-0.0723 0.0301,-0.0157 0.0648,-0.0236 0.10396,-0.0236 0.0693,0 0.12621,0.0276 0.17074,0.0829 0.0445,0.0549 0.0668,0.12572 0.0668,0.21243 0,0.0867 -0.0223,0.15769 -0.0668,0.21293 -0.0445,0.0549 -0.10144,0.0824 -0.17074,0.0824 -0.0392,0 -0.0738,-0.008 -0.10396,-0.0231 -0.0301,-0.0157 -0.0576,-0.04 -0.0824,-0.0728 m 0.11952,-0.36409 c -0.0385,0 -0.0681,0.0142 -0.0889,0.0427 -0.0204,0.0281 -0.0306,0.0688 -0.0306,0.12203 0,0.0532 0.0102,0.0941 0.0306,0.12254 0.0208,0.0281 0.0504,0.0422 0.0889,0.0422 0.0385,0 0.0678,-0.0141 0.0879,-0.0422 0.0204,-0.0281 0.0306,-0.069 0.0306,-0.12254 0,-0.0536 -0.0102,-0.0944 -0.0306,-0.12253 -0.0201,-0.0281 -0.0494,-0.0422 -0.0879,-0.0422"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3055" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 882.05543,689.60423 0,0.13659 c -0.0385,-0.0161 -0.0757,-0.0281 -0.11149,-0.0362 -0.0358,-0.008 -0.0696,-0.0121 -0.10144,-0.0121 -0.0341,0 -0.0596,0.004 -0.0763,0.0131 -0.0164,0.008 -0.0246,0.0214 -0.0246,0.0392 0,0.0144 0.006,0.0255 0.0186,0.0332 0.0127,0.008 0.0353,0.0134 0.0678,0.0171 l 0.0316,0.005 c 0.0921,0.0117 0.15401,0.031 0.18582,0.0578 0.0318,0.0268 0.0477,0.0688 0.0477,0.12605 -10e-6,0.0599 -0.0221,0.10496 -0.0663,0.13509 -0.0442,0.0301 -0.11015,0.0452 -0.19787,0.0452 -0.0372,0 -0.0757,-0.003 -0.11551,-0.009 -0.0395,-0.006 -0.0802,-0.0144 -0.12203,-0.0261 l 0,-0.1366 c 0.0358,0.0174 0.0725,0.0305 0.10998,0.0392 0.0378,0.009 0.0762,0.0131 0.115,0.0131 0.0352,0 0.0616,-0.005 0.0793,-0.0146 0.0178,-0.01 0.0266,-0.0241 0.0266,-0.0432 0,-0.0161 -0.006,-0.028 -0.0186,-0.0357 -0.0121,-0.008 -0.0363,-0.0142 -0.0728,-0.0186 l -0.0316,-0.004 c -0.08,-0.01 -0.1361,-0.0286 -0.16824,-0.0557 -0.0321,-0.0271 -0.0482,-0.0683 -0.0482,-0.12354 0,-0.0596 0.0204,-0.10379 0.0613,-0.13258 0.0408,-0.0288 0.10345,-0.0432 0.18782,-0.0432 0.0331,0 0.068,0.003 0.10446,0.008 0.0365,0.005 0.0762,0.0129 0.11902,0.0236"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3057" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 882.22266,689.93015 0,-0.3435 0.18079,0 0,0.0563 c 0,0.0305 -1.7e-4,0.0688 -5e-4,0.115 -3.3e-4,0.0459 -5e-4,0.0765 -5e-4,0.0919 0,0.0452 10e-4,0.0778 0.004,0.0979 0.002,0.0198 0.006,0.0342 0.0121,0.0432 0.007,0.0117 0.0169,0.0208 0.0286,0.0271 0.0121,0.006 0.0258,0.01 0.0412,0.01 0.0375,0 0.067,-0.0144 0.0884,-0.0432 0.0214,-0.0288 0.0321,-0.0688 0.0321,-0.12003 l 0,-0.27771 0.17978,0 0,0.56246 -0.17978,0 0,-0.0814 c -0.0271,0.0328 -0.0559,0.0571 -0.0864,0.0728 -0.0301,0.0154 -0.0634,0.0231 -0.0999,0.0231 -0.0649,0 -0.1145,-0.0199 -0.14865,-0.0598 -0.0338,-0.0398 -0.0507,-0.0978 -0.0507,-0.17376"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3059" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 883.48317,689.68006 c 0.0228,-0.0348 0.0497,-0.0613 0.0809,-0.0793 0.0315,-0.0184 0.066,-0.0276 0.10345,-0.0276 0.0646,0 0.11383,0.0199 0.14765,0.0598 0.0338,0.0398 0.0507,0.0978 0.0507,0.17376 l 0,0.3425 -0.18079,0 0,-0.29328 c 3.3e-4,-0.004 5e-4,-0.009 5e-4,-0.0136 3.3e-4,-0.005 5e-4,-0.0114 5e-4,-0.0201 0,-0.0398 -0.006,-0.0686 -0.0176,-0.0864 -0.0117,-0.0181 -0.0306,-0.0271 -0.0567,-0.0271 -0.0342,0 -0.0606,0.0141 -0.0794,0.0422 -0.0184,0.0281 -0.028,0.0688 -0.0286,0.12203 l 0,0.27621 -0.18079,0 0,-0.29328 c 0,-0.0623 -0.005,-0.10228 -0.0161,-0.12003 -0.0107,-0.0181 -0.0298,-0.0271 -0.0573,-0.0271 -0.0345,0 -0.0611,0.0142 -0.0798,0.0427 -0.0187,0.0281 -0.0281,0.0685 -0.0281,0.12103 l 0,0.27671 -0.18079,0 0,-0.56246 0.18079,0 0,0.0824 c 0.0221,-0.0318 0.0474,-0.0557 0.0758,-0.0718 0.0288,-0.0161 0.0604,-0.0241 0.0949,-0.0241 0.0388,0 0.0732,0.009 0.10295,0.0281 0.0298,0.0187 0.0524,0.045 0.0678,0.0788"
+         style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
+         id="path3061" />
+    </g>
+    <g
+       transform="scale(1.0447384,0.95717741)"
+       style="font-size:48.46436691px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5540">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 847.3858,720.32852 -0.1621,0.43956 0.3248,0 -0.1627,-0.43956 m -0.0674,-0.11773 0.13548,0 0.33662,0.88327 -0.12423,0 -0.0805,-0.22659 -0.39815,0 -0.0805,0.22659 -0.12601,0 0.33721,-0.88327"
+         style="font-size:1.21160913px;-inkscape-font-specification:Sans"
+         id="path3064" />
+    </g>
+    <g
+       style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5544">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 883.88953,691.50378 0.13281,0 0.32324,0.60987 0,-0.60987 0.0957,0 0,0.72901 -0.13281,0 -0.32324,-0.60987 0,0.60987 -0.0957,0 0,-0.72901"
+         id="path3067" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.10144,691.93689 0,0.0439 -0.41309,0 c 0.004,0.0619 0.0225,0.10905 0.0557,0.14161 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.10009,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0107 -0.10302,0.0107 -0.0872,0 -0.15642,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11947 -0.0762,-0.20606 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13167,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0492 -0.0145,-0.0884 -0.0415,-0.11767 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0518,0.11963 l 0.32032,-4.9e-4"
+         id="path3069" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.19666,691.68591 0.0898,0 0.1123,0.42676 0.11182,-0.42676 0.10596,0 0.1123,0.42676 0.11182,-0.42676 0.0898,0 -0.14306,0.54688 -0.10596,0 -0.11768,-0.44824 -0.11816,0.44824 -0.10596,0 -0.14306,-0.54688"
+         id="path3071" />
+    </g>
+    <g
+       style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       id="text5548">
+      <path
+         inkscape:connector-curvature="0"
+         d="m 883.88953,693.52722 0.13281,0 0.32324,0.60986 0,-0.60986 0.0957,0 0,0.72901 -0.13281,0 -0.32324,-0.60987 0,0.60987 -0.0957,0 0,-0.72901"
+         id="path3074" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.10144,693.96033 0,0.0439 -0.41309,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.10009,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10302,0.0108 -0.0872,0 -0.15642,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13167,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0518,0.11963 l 0.32032,-4.9e-4"
+         id="path3076" />
+      <path
+         inkscape:connector-curvature="0"
+         d="m 885.19666,693.70935 0.0898,0 0.1123,0.42676 0.11182,-0.42676 0.10596,0 0.1123,0.42676 0.11182,-0.42676 0.0898,0 -0.14306,0.54688 -0.10596,0 -0.11768,-0.44825 -0.11816,0.44825 -0.10596,0 -0.14306,-0.54688"
+         id="path3078" />
+    </g>
+    <rect
+       style="fill:#c0c1be;fill-opacity:1;stroke:#000000;stroke-width:0.10008001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
+       id="rect5552"
+       width="2.8749001"
+       height="2.8749392"
+       x="879.96875"
+       y="691.46332" />
+    <path
+       style="fill:url(#linearGradient3824);fill-opacity:1;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 878.38837,687.89343 0,7.40625 c -2.1e-4,0.0102 0,0.021 0,0.0312 0,0.8311 0.6689,1.5 1.5,1.5 l 5.90625,0 c 0.0102,2.1e-4 0.021,0 0.0312,0 0.8311,0 1.5,-0.6689 1.5,-1.5 0,-0.0206 8.2e-4,-0.0421 0,-0.0625 l 0,-7.375 -8.9375,0 z"
+       id="path3797"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/skins/vector/images/talk-icon.svg b/skins/vector/images/talk-icon.svg
new file mode 100644 (file)
index 0000000..f37517d
--- /dev/null
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg5587"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="talk-icon.svg">
+  <defs
+     id="defs5589">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6134">
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:1;"
+         offset="0"
+         id="stop6136" />
+      <stop
+         style="stop-color:#e9e9e9;stop-opacity:0;"
+         offset="1"
+         id="stop6138" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6134"
+       id="radialGradient6140"
+       cx="755.80591"
+       cy="683.84875"
+       fx="755.80591"
+       fy="683.84875"
+       r="2.656485"
+       gradientTransform="matrix(2.4898047,0,0,2.5230165,-1126.0032,-1041.5417)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6134"
+       id="radialGradient6146"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.4898047,0,0,2.5230165,-1126.0032,-1041.5417)"
+       cx="755.80591"
+       cy="683.84875"
+       fx="755.80591"
+       fy="683.84875"
+       r="2.656485" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="45.254834"
+     inkscape:cx="8.6391885"
+     inkscape:cy="3.9760181"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1041"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata5592">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-763.57141,-681.64789)">
+    <g
+       id="g6142"
+       transform="matrix(1.0212411,0,0,0.97119998,-5.0201418,19.699049)">
+      <path
+         sodipodi:nodetypes="sssscccsssss"
+         inkscape:connector-curvature="0"
+         id="rect5606"
+         transform="translate(763.57141,681.64789)"
+         d="m -8.625,0.4375 c -0.4851513,0 -0.875,0.38984873 -0.875,0.875 l 0,4.375 c 0,0.4851513 0.3898487,0.875 0.875,0.875 l 0.125,0 0,2.6739053 3.4513641,-2.6739053 2.5173859,0 c 0.4851513,0 0.875,-0.3898487 0.875,-0.875 l 0,-4.375 c 0,-0.48515127 -0.3898487,-0.875 -0.875,-0.875 z"
+         style="fill:#ffffff;fill-opacity:1;stroke:#888a85;stroke-width:0.98900002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:9.80000019;stroke-opacity:1;stroke-dasharray:none" />
+      <path
+         style="fill:url(#radialGradient6146);fill-opacity:1;stroke:none"
+         d="m 755.96029,683.3154 c -0.32861,0 -0.59267,0.23853 -0.59267,0.53539 l 0,2.67695 c 0,0.29685 0.26406,0.53539 0.59267,0.53539 l 0.0847,0 0,1.63611 2.33776,-1.63611 1.70516,0 c 0.32862,0 0.59268,-0.23854 0.59268,-0.53539 l 0,-2.67695 c 0,-0.29686 -0.26406,-0.53539 -0.59268,-0.53539 z"
+         id="path6124"
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="sssscccsssss" />
+    </g>
+  </g>
+</svg>
diff --git a/skins/vector/images/video-icon.svg b/skins/vector/images/video-icon.svg
new file mode 100644 (file)
index 0000000..d5e44b6
--- /dev/null
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="10"
+   height="10"
+   id="svg6734"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="video-icon.svg">
+  <defs
+     id="defs6736">
+    <linearGradient
+       id="linearGradient7265">
+      <stop
+         style="stop-color:#cccccc;stop-opacity:1;"
+         offset="0"
+         id="stop7267" />
+      <stop
+         style="stop-color:#dfdfdf;stop-opacity:1;"
+         offset="1"
+         id="stop7269" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7265"
+       id="radialGradient7271"
+       cx="5.0034118"
+       cy="4.9650207"
+       fx="5.0034118"
+       fy="4.9650207"
+       r="4.9996192"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient7265"
+       id="radialGradient7327"
+       gradientUnits="userSpaceOnUse"
+       cx="5.0034118"
+       cy="4.9650207"
+       fx="5.0034118"
+       fy="4.9650207"
+       r="4.9996192" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.627417"
+     inkscape:cx="4.0209944"
+     inkscape:cy="7.104383"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1014"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata6739">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-903.57141,-715.93359)">
+    <path
+       style="fill:none;stroke:#5f6060;stroke-width:0.89999998000000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 911.68723,725.33709 -0.61872,-0.92808 c 0,0 0.17677,0.92808 0.92808,1.01647 0.7513,0.0884 1.19324,0.0884 1.19324,0.0884"
+       id="path7292"
+       inkscape:connector-curvature="0" />
+    <path
+       sodipodi:type="arc"
+       style="fill:url(#radialGradient7327);fill-opacity:1;stroke:#848484;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:9.80000019;stroke-opacity:1;stroke-dasharray:none"
+       id="path6755"
+       sodipodi:cx="5.0034118"
+       sodipodi:cy="4.9650207"
+       sodipodi:rx="4.5141191"
+       sodipodi:ry="4.5141191"
+       d="m 9.5175309,4.9650207 a 4.5141191,4.5141191 0 1 1 -9.02823828,0 4.5141191,4.5141191 0 1 1 9.02823828,0 z"
+       transform="translate(903.4637,715.9024)" />
+    <g
+       id="g7310"
+       transform="matrix(0.897287,0,0,0.897287,111.13225,74.055304)">
+      <path
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,880.61345,716.13137)"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         sodipodi:ry="0.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:cy="2.59375"
+         sodipodi:cx="4.4375"
+         id="path7300"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         id="path7302"
+         sodipodi:cx="4.4375"
+         sodipodi:cy="2.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:ry="0.59375"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,878.85062,718.47146)" />
+      <path
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,883.48161,716.7296)"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         sodipodi:ry="0.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:cy="2.59375"
+         sodipodi:cx="4.4375"
+         id="path7304"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         id="path7306"
+         sodipodi:cx="4.4375"
+         sodipodi:cy="2.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:ry="0.59375"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,880.77974,720.67629)" />
+      <path
+         transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,883.52712,719.65906)"
+         d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
+         sodipodi:ry="0.59375"
+         sodipodi:rx="0.59375"
+         sodipodi:cy="2.59375"
+         sodipodi:cx="4.4375"
+         id="path7308"
+         style="fill:#818181;fill-opacity:1;stroke:none"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
index 5a1fc05..2683a21 100644 (file)
@@ -2,7 +2,7 @@
 
 div#content {
        margin-left: 11em;
-       padding: 1.25em 1.5em 1.5em 1.5em;
+       padding: 1.5em 1.5em 1.5em 1.75em;
 }
 #p-logo {
        left: @menu-main-logo-left;
diff --git a/skins/vector/screen.less b/skins/vector/screen.less
deleted file mode 100644 (file)
index 4651b48..0000000
+++ /dev/null
@@ -1,693 +0,0 @@
-/*
- * Any rules which should not be flipped automatically in right-to-left situations should be
- * prepended with @noflip in a comment block.
- *
- * This stylesheet employs a few CSS trick to accomplish compatibility with a wide range of web
- * browsers. The most common trick is to use some styles in IE6 only. This is accomplished by using
- * a rule that makes things work in IE6, and then following it with a rule that begins with
- * "html > body" or use a child selector ">", which is ignored by IE6 because it does not support
- * the child selector. You can spot this by looking for the "OVERRIDDEN BY COMPLIANT BROWSERS" and
- * "IGNORED BY IE6" comments.
- */
-@import "mediawiki.mixins";
-
-/* Framework */
-html {
-       font-size: @html-font-size;
-}
-html,
-body {
-       height: 100%;
-       margin: 0;
-       padding: 0;
-       font-family: @content-font-family;
-}
-body {
-       background-color: #f6f6f6;
-       font-size: @body-font-size;
-}
-/* Content */
-div#content {
-       line-height: @content-line-height;
-       margin-left: 10em;
-       padding: @content-padding;
-       /* Border on top, left, and bottom side */
-       border: 1px solid #a7d7f9;
-       border-right-width: 0;
-       /* Merge the border with tabs' one (in their background image) */
-       margin-top: -1px;
-       background-color: white;
-       color: @content-font-color;
-       direction: ltr;
-}
-/* Hide, but keep accessible for screen-readers */
-#mw-navigation h2 {
-       position: absolute;
-       top: -9999px;
-}
-/* Head */
-#mw-page-base {
-       height: 5em;
-       background-color: white;
-       .background-image('images/page-fade.png');
-       background-position: bottom left;
-       background-repeat: repeat-x;
-}
-#mw-head-base {
-       margin-top: -5em;
-       margin-left: 10em;
-       height: 5em;
-}
-div#mw-head {
-       position: absolute;
-       top: 0;
-       right: 0;
-       width: 100%;
-}
-div#mw-head h3 {
-       margin: 0;
-       padding: 0;
-}
-/* Hide empty portlets */
-div.emptyPortlet {
-               display: none;
-}
-/* Personal */
-#p-personal {
-       position: absolute;
-       top: 0.33em;
-       right: 0.75em;
-       /* Display on top of page tabs - bugs 37158, 48078 */
-       z-index: 100;
-}
-#p-personal h3 {
-       display: none;
-}
-#p-personal ul {
-       list-style-type: none;
-       list-style-image: none;
-       margin: 0;
-       padding-left: 10em; /* Keep from overlapping logo */
-}
-#p-personal li {
-       line-height: 1.125em;
-       /* @noflip */
-       float: left;
-       margin-left: 0.75em;
-       margin-top: 0.5em;
-       font-size: @menu-personal-font-size;
-       white-space: nowrap;
-}
-/* Navigation Containers */
-#left-navigation {
-       float: left;
-       margin-left: 10em;
-       margin-top: 2.5em;
-       /* When right nav would overlap left nav, it's placed below it
-          (normal CSS floats behavior). This rule ensures that no empty space
-          is shown between them due to right nav's margin-top. Page layout
-          is still broken, but at least the nav overlaps only the page title
-          instead of half the content. */
-       margin-bottom: -2.5em;
-       /* IE 6 double-margin bug fix */
-       display: inline;
-}
-#right-navigation {
-       float: right;
-       margin-top: 2.5em;
-}
-/* Navigation Labels */
-div.vectorTabs h3,
-div.vectorMenu h3 span {
-       display: none;
-}
-/* Namespaces and Views */
-div.vectorTabs {
-       /* @noflip */
-       float: left;
-       height: 2.5em;
-}
-div.vectorTabs {
-       .background-image('images/tab-break.png');
-       background-position: bottom left;
-       background-repeat: no-repeat;
-       padding-left: 1px;
-}
-div.vectorTabs ul {
-       /* @noflip */
-       float: left;
-       height: 100%;
-       list-style-type: none;
-       list-style-image: none;
-       margin: 0;
-       padding: 0;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorTabs ul li {
-       /* @noflip */
-       float: left;
-       line-height: 1.125em;
-       display: inline-block;
-       height: 100%;
-       margin: 0;
-       padding: 0;
-       background-color: #f3f3f3;
-       .background-image('images/tab-normal-fade.png');
-       background-position: bottom left;
-       background-repeat: repeat-x;
-       white-space: nowrap;
-}
-/* IGNORED BY IE6 */
-div.vectorTabs ul > li {
-       display: block;
-}
-div.vectorTabs li.selected {
-       .background-image('images/tab-current-fade.png');
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorTabs li a {
-       display: inline-block;
-       height: 1.9em;
-       padding-left: 0.5em;
-       padding-right: 0.5em;
-       color: @menu-link-color;
-       cursor: pointer;
-       font-size: 0.8em;
-}
-/* IGNORED BY IE6 */
-div.vectorTabs li > a {
-       display: block;
-}
-div.vectorTabs li.icon a {
-       background-position: bottom right;
-       background-repeat: no-repeat;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorTabs span a {
-       display: inline-block;
-       padding-top: 1.25em;
-}
-/* IGNORED BY IE6 */
-div.vectorTabs span > a {
-       /* @noflip */
-       float: left;
-       display: block;
-}
-div.vectorTabs span {
-       display: inline-block;
-       .background-image('images/tab-break.png');
-       background-position: bottom right;
-       background-repeat: no-repeat;
-}
-div.vectorTabs li.selected a,
-div.vectorTabs li.selected a:visited{
-       color: #333;
-       text-decoration: none;
-}
-div.vectorTabs li.new a,
-div.vectorTabs li.new a:visited{
-       color: #a55858;
-}
-/* Variants and Actions */
-div.vectorMenu {
-       /* @noflip */
-       direction: ltr;
-       /* @noflip */
-       float: left;
-       /* SVG support using a transparent gradient to guarantee cross-browser
-        * compatibility (browsers able to understand gradient syntax support also SVG) */
-       .background-image-svg('images/arrow-down-icon.svg', 'images/arrow-down-icon.png');
-       /* @noflip */
-       background-position: 100% 60%;
-       background-repeat: no-repeat;
-       cursor: pointer;
-}
-div.vectorMenuFocus {
-       /* SVG support using a transparent gradient to guarantee cross-browser
-        * compatibility (browsers able to understand gradient syntax support also SVG) */
-       .background-image-svg('images/arrow-down-focus-icon.svg', 'images/arrow-down-focus-icon.png');
-       background-position: 100% 60%;
-}
-body.rtl div.vectorMenu {
-       /* @noflip */
-       direction: rtl;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div#mw-head div.vectorMenu h3 {
-       /* @noflip */
-       float: left;
-       .background-image('images/tab-break.png');
-       background-repeat: no-repeat;
-       background-position: bottom left;
-       margin-left: -1px;
-}
-/* IGNORED BY IE6 */
-div#mw-head div.vectorMenu > h3 {
-       background-image: none;
-}
-div#mw-head div.vectorMenu h4,
-div.vectorMenu#p-variants #mw-vector-current-variant {
-       display: inline-block;
-       float: left;
-       font-size: 0.8em;
-       padding-left: 0.5em;
-       padding-top: 1.375em;
-       font-weight: normal;
-       border: none;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorMenu h3 a {
-       display: inline-block;
-       width: 24px;
-       height: 1.9em;
-       text-decoration: none;
-       .background-image('images/tab-break.png');
-       background-repeat: no-repeat;
-       background-position: bottom right;
-}
-/* IGNORED BY IE6 */
-div.vectorMenu h3 > a {
-       display: block;
-}
-div.vectorMenu div.menu {
-       position: relative;
-       display: none;
-       clear: both;
-       text-align: left;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-body.rtl div.vectorMenu div.menu {
-       /* @noflip */
-       margin-left: 24px;
-}
-/* IGNORED BY IE6 */
-body.rtl div.vectorMenu > div.menu {
-       /* @noflip */
-       margin-left: auto;
-}
-/* IGNORED BY IE6 */
-/* Also fixes old versions of FireFox */
-body.rtl div.vectorMenu > div.menu,
-x:-moz-any-link {
-       /* @noflip */
-       margin-left: 23px;
-}
-/* Enable forcing showing of the menu for accessibility */
-div.vectorMenu:hover div.menu,
-div.vectorMenu div.menuForceShow {
-       display: block;
-}
-div.vectorMenu ul {
-       position: absolute;
-       background-color: white;
-       border: solid 1px silver;
-       border-top-width: 0;
-       list-style-type: none;
-       list-style-image: none;
-       padding: 0;
-       margin: 0;
-       margin-left: -1px;
-       text-align: left;
-}
-/* Fixes old versions of FireFox */
-div.vectorMenu ul,
-x:-moz-any-link {
-       min-width: 5em;
-}
-/* Returns things back to normal in modern versions of FireFox */
-div.vectorMenu ul,
-x:-moz-any-link,
-x:default {
-       min-width: 0;
-}
-div.vectorMenu li {
-       padding: 0;
-       margin: 0;
-       text-align: left;
-       line-height: 1em;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div.vectorMenu li a {
-       display: inline-block;
-       padding: 0.5em;
-       white-space: nowrap;
-       color: @menu-link-color;
-       cursor: pointer;
-       font-size: 0.8em;
-}
-/* IGNORED BY IE6 */
-div.vectorMenu li > a {
-       display: block;
-}
-div.vectorMenu li.selected a,
-div.vectorMenu li.selected a:visited {
-       color: #333;
-       text-decoration: none;
-}
-/* Search */
-#p-search h3 {
-       display: none;
-}
-#p-search {
-       /* @noflip */
-       float: left;
-}
-#p-search {
-       margin-right: 0.5em;
-       margin-left: 0.5em;
-}
-#p-search form,
-#p-search input {
-       margin: 0;
-       margin-top: 0.4em;
-}
-div#simpleSearch {
-       display: block;
-       width: 14em;
-       height: 1.4em;
-       margin-top: 0.65em;
-       position: relative;
-       min-height: 1px; /* Gotta trigger hasLayout for IE7 */
-       border: solid 1px #aaa;
-       color: black;
-       background-color: white;
-       .background-image('images/search-fade.png');
-       background-position: top left;
-       background-repeat: repeat-x;
-}
-div#simpleSearch input:focus {
-       outline: none;
-}
-div#simpleSearch input {
-       color: black;
-}
-div#simpleSearch input.placeholder {
-       color: #999;
-}
-div#simpleSearch input::-webkit-input-placeholder {
-       color: #999;
-}
-div#simpleSearch input:-moz-placeholder {
-       color: #999;
-}
-div#simpleSearch input:-ms-input-placeholder {
-       color: #999;
-}
-div#simpleSearch input#searchInput {
-       position: absolute;
-       top: 0;
-       left: 0;
-       width: 90%;
-       margin: 0;
-       padding: 0;
-       padding-left: 0.2em;
-       padding-top: 0.2em;
-       padding-bottom: 0.2em;
-       outline: none;
-       border: none;
-       /*
-        * DON'T PANIC! Browsers that won't scale this properly are the same browsers that have JS issues that prevent
-        * this from ever being shown anyways.
-       */
-       font-size: 13px;
-       background-color: transparent;
-       direction: ltr;
-}
-div#simpleSearch button#searchButton {
-       position: absolute;
-       width: 10%;
-       right: 0;
-       top: 0;
-       padding: 0;
-       padding-top: 0.3em;
-       padding-bottom: 0.2em;
-       padding-right: 0.4em;
-       margin: 0;
-       border: none;
-       cursor: pointer;
-       background-color: transparent;
-       background-image: none;
-}
-/* OVERRIDDEN BY COMPLIANT BROWSERS */
-div#simpleSearch button#searchButton img {
-       border: none;
-       margin: 0;
-       margin-top: -3px;
-       padding: 0;
-}
-/* IGNORED BY IE6 */
-div#simpleSearch button#searchButton > img {
-       margin: 0;
-}
-/* Panel */
-div#mw-panel {
-       font-size: @menu-main-font-size;
-       position: absolute;
-       top: 160px;
-       padding-top: 1em;
-       width: 10em;
-       left: 0;
-}
-div#mw-panel div.portal {
-       padding-bottom: 1.5em;
-       direction: ltr;
-}
-div#mw-panel div.portal h3 {
-       font-weight: normal;
-       color: #444;
-       padding: @menu-main-heading-padding;
-       cursor: default;
-       border: none;
-       font-size: @menu-main-heading-font-size;
-}
-div#mw-panel div.portal div.body {
-       padding-top: 0.5em;
-       margin: @menu-main-body-margin;
-
-       .background-image('images/portal-break.png');
-       background-repeat: no-repeat;
-       background-position: top left;
-}
-div#mw-panel div.portal div.body ul {
-       list-style-type: none;
-       list-style-image: none;
-       padding: @menu-main-body-padding;
-       margin: 0;
-}
-div#mw-panel div.portal div.body ul li {
-       line-height: 1.125em;
-       padding: 0;
-       padding-bottom: 0.5em;
-       margin: 0;
-       font-size: @menu-main-body-font-size;
-       word-wrap: break-word;
-}
-div#mw-panel div.portal div.body ul li a {
-       color: @menu-main-body-link-color;
-       &:visited {
-               color: @menu-main-body-link-visited-color;
-       }
-}
-
-/* Footer */
-div#footer {
-       margin-left: 10em;
-       margin-top: 0;
-       padding: 0.75em;
-       direction: ltr;
-}
-div#footer ul {
-       list-style-type: none;
-       list-style-image: none;
-       margin: 0;
-       padding: 0;
-}
-div#footer ul li {
-       margin: 0;
-       padding: 0;
-       padding-top: 0.5em;
-       padding-bottom: 0.5em;
-       color: #333;
-       font-size: 0.7em;
-}
-div#footer #footer-icons {
-       float: right;
-}
-
-body.ltr div#footer #footer-places {
-       /* @noflip */
-       float: left;
-}
-div#footer #footer-info li {
-       line-height: 1.4em;
-}
-div#footer #footer-icons li {
-       float: left;
-       margin-left: 0.5em;
-       line-height: 2em;
-       text-align: right;
-}
-div#footer #footer-places li {
-       float: left;
-       margin-right: 1em;
-       line-height: 2em;
-}
-/* Logo */
-#p-logo {
-       position: absolute;
-       top: -160px;
-       left: 0;
-       width: 10em;
-       height: 160px;
-}
-#p-logo a {
-       display: block;
-       width: 10em;
-       height: 160px;
-       background-repeat: no-repeat;
-       background-position: center center;
-       text-decoration: none;
-}
-
-ul {
-       list-style-type: disc;
-       .list-style-image('images/bullet-icon.png');
-}
-
-pre, .mw-code {
-       line-height: 1.3em;
-}
-
-/* Site Notice (includes notices from CentralNotice extension) */
-#siteNotice {
-       font-size: 0.8em;
-}
-#firstHeading {
-       padding-top: 0;
-       margin-top: 0;
-       font-size: @content-heading-font-size;
-}
-
-/* Icon for Usernames */
-#pt-userpage,
-#pt-anonuserpage,
-#pt-login {
-       background-position: left top;
-       background-repeat: no-repeat;
-       /* SVG support using a transparent gradient to guarantee cross-browser
-        * compatibility (browsers able to understand gradient syntax support also SVG) */
-       .background-image-svg('images/user-icon.svg', 'images/user-icon.png');
-       padding-left: 15px !important;
-}
-
-.redirectText {
-       font-size: 140%;
-}
-
-.redirectMsg img {
-       vertical-align: text-bottom;
-}
-
-#bodyContent {
-       position: relative;
-       width: 100%;
-       line-height: 1.5em;
-       font-size: @content-font-size;
-}
-
-/* mediawiki.notification */
-.skin-vector .mw-notification-area {
-       font-size: 0.8em;
-}
-.skin-vector .mw-notification-area-layout {
-       top: 7em;
-}
-.skin-vector .mw-notification {
-       background-color: #fff;
-       background-color: rgba(255, 255, 255, 0.93);
-       padding: 0.75em 1.5em;
-       border: solid 1px #a7d7f9;
-       border-radius: 0.75em;
-       -webkit-box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
-       box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.125);
-}
-
-/* Watch/Unwatch Icon Styling */
-#ca-unwatch.icon a,
-#ca-watch.icon a {
-       margin: 0;
-       padding: 0;
-       outline: none;
-       display: block;
-       width: 26px;
-       /* This hides the text but shows the background image */
-       padding-top: 3.1em;
-       margin-top: 0;
-       /* Only applied in IE6 */
-       margin-top: -0.8em !ie;
-       height: 0;
-       overflow: hidden;
-       .background-image('images/watch-icons.png');
-}
-#ca-unwatch.icon a {
-       background-position: -43px 60%;
-}
-#ca-watch.icon a {
-       background-position: 5px 60%;
-}
-#ca-unwatch.icon a:hover,
-#ca-unwatch.icon a:focus {
-       background-position: -67px 60%;
-}
-#ca-watch.icon a:hover,
-#ca-watch.icon a:focus {
-       background-position: -19px 60%;
-}
-#ca-unwatch.icon a.loading,
-#ca-watch.icon a.loading {
-       .background-image('images/watch-icon-loading.gif');
-       background-position: 5px 60%;
-}
-#ca-unwatch.icon a span,
-#ca-watch.icon a span {
-       display: none;
-}
-div.vectorTabs ul {
-       .background-image('images/tab-break.png');
-       background-position: right bottom;
-       background-repeat: no-repeat;
-}
-
-/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
-.tipsy {
-       font-size: 0.8em;
-}
-
-/* Animate between standard and high definition layouts */
-body.vector-animateLayout {
-       div#content,
-       div#footer,
-       #left-navigation {
-               .transition(margin-left 250ms, padding 250ms;);
-       }
-
-       #p-logo {
-               .transition(left 250ms);
-       }
-
-       #mw-panel {
-               .transition(padding-right 250ms);
-       }
-
-       #p-search {
-               .transition(margin-right 250ms);
-       }
-
-       #p-personal {
-               .transition(right 250ms);
-       }
-
-       #mw-head-base {
-               .transition(margin-left 250ms);
-       }
-}
diff --git a/skins/vector/styles-beta.less b/skins/vector/styles-beta.less
deleted file mode 100644 (file)
index a76b639..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-@import "variables.less";
-@import "beta/variables.less";
-
-@media screen {
-       @import "screen.less";
-       @import "beta/screen.less";
-       @import "externalLinks.less";
-       @import "collapsibleNav.less";
-}
-
-@media screen and (min-width: 982px) {
-       @import "screen-hd.less";
-}
index bd45851..8d5423a 100644 (file)
@@ -1,9 +1,11 @@
 @import "variables.less";
 
 @media screen {
-       @import "screen.less";
-       @import "externalLinks.less";
-       @import "collapsibleNav.less";
+       @import "components/common.less";
+       @import "components/navigation.less";
+       @import "components/footer.less";
+       @import 'components/notifications.less';
+       @import "components/externalLinks.less";
 }
 
 @media screen and (min-width: 982px) {
index 691e0fd..f818401 100644 (file)
@@ -7,7 +7,7 @@
 @content-font-color: black;
 @content-font-size: 0.8em;
 @content-line-height: 1.5em;
-@content-padding: 1.5em 1.5em 1.5em 1.75em;
+@content-padding: 1.25em 1.5em 1.5em 1.5em;
 @content-heading-font-size: 1.6em;
 @content-heading-font-family: sans-serif;
 
index 46a894c..58df552 100644 (file)
@@ -57,6 +57,7 @@ $wgAutoloadClasses += array(
        'ApiTestCase' => "$testDir/phpunit/includes/api/ApiTestCase.php",
        'ApiTestContext' => "$testDir/phpunit/includes/api/ApiTestContext.php",
        'MockApi' => "$testDir/phpunit/includes/api/MockApi.php",
+       'MockApiQueryBase' => "$testDir/phpunit/includes/api/MockApiQueryBase.php",
        'UserWrapper' => "$testDir/phpunit/includes/api/UserWrapper.php",
        'RandomImageGenerator' => "$testDir/phpunit/includes/api/RandomImageGenerator.php",
 
index 58ea1ed..39fa09e 100644 (file)
@@ -170,7 +170,7 @@ class ParserTest {
                        'transformVia404' => false,
                        'backend' => new FSFileBackend( array(
                                'name' => 'local-backend',
-                               'lockManager' => 'fsLockManager',
+                               'wikiId' => wfWikiId(),
                                'containerPaths' => array(
                                        'local-public' => wfTempDir() . '/test-repo/public',
                                        'local-thumb' => wfTempDir() . '/test-repo/thumb',
@@ -738,7 +738,7 @@ class ParserTest {
                                'transformVia404' => false,
                                'backend' => new FSFileBackend( array(
                                        'name' => 'local-backend',
-                                       'lockManager' => 'fsLockManager',
+                                       'wikiId' => wfWikiId(),
                                        'containerPaths' => array(
                                                'local-public' => $this->uploadDir,
                                                'local-thumb' => $this->uploadDir . '/thumb',
index cc935da..a868214 100644 (file)
@@ -146,6 +146,12 @@ Template:Bullet
 * Bar
 !!endarticle
 
+!!article
+Template:OpenTable
+!!text
+{|
+!!endarticle
+
 ###
 ### Basic tests
 ###
@@ -916,27 +922,36 @@ Non-html5 tags should be accepted
 !! test
 Non-word characters don't terminate tag names (bug 17663, 40670, 52022)
 !! input
-<b→> doesn't work! </b>
-
-<bä> doesn't work! </b>
+<b→> doesn't work! </b→>
 
-<boo> works fine </b>
+<bä> doesn't work! </bä>
 
-<s.foo>foo</s>
+<boo> works fine </boo>
 
 <s.foo>s.foo</s.foo>
 
 <sub-ID#1>
 !! result
-<p>&lt;b→&gt; doesn't work! &lt;/b&gt;
-</p><p>&lt;bä&gt; doesn't work! &lt;/b&gt;
-</p><p>&lt;boo&gt; works fine &lt;/b&gt;
-</p><p>&lt;s.foo&gt;foo&lt;/s&gt;
+<p>&lt;b→&gt; doesn't work! &lt;/b→&gt;
+</p><p>&lt;bä&gt; doesn't work! &lt;/bä&gt;
+</p><p>&lt;boo&gt; works fine &lt;/boo&gt;
 </p><p>&lt;s.foo&gt;s.foo&lt;/s.foo&gt;
 </p><p>&lt;sub-ID#1&gt;
 </p>
 !! end
 
+!! test
+Isolated close tags should be treated as literal text (bug 52760)
+!! input
+</b>
+
+<s.foo>s</s>
+!! result
+<p>&lt;/b&gt;
+</p><p>&lt;s.foo&gt;s&lt;/s&gt;
+</p>
+!! end
+
 ###
 ### Special characters
 ###
@@ -1336,6 +1351,22 @@ b
 
 !! end
 
+## PHP parser emits output which is broken
+!! test
+Unclosed HTML p-tags should be handled properly
+!! options
+parsoid
+!! input
+<div><p>foo</div>
+a
+
+b
+!! result
+<div data-parsoid='{"stx":"html"}'><p data-parsoid='{"stx":"html", "autoInsertedEnd":true}'>foo</p></div>
+<p>a</p>
+<p>b</p>
+!! end
+
 ###
 ### Preformatted text
 ###
@@ -1589,6 +1620,46 @@ Entities inside <pre>
 </p>
 !! end
 
+!! test
+Empty pre; pre inside other HTML tags (bug 54946)
+!! input
+a
+
+<div><pre>
+foo
+</pre></div>
+<pre></pre>
+!! result
+<p>a
+</p>
+<div><pre>
+foo
+</pre></div>
+<pre></pre>
+
+!! end
+
+!! test
+HTML pre followed by indent-pre
+!! input
+<pre>foo</pre>
+ bar
+!! result
+<pre>foo</pre>
+<pre>bar
+</pre>
+!! end
+
+!!test
+Block tag pre
+!!options
+parsoid
+!!input
+<p><pre>foo</pre></p>
+!!result
+<p data-parsoid='{"stx":"html","autoInsertedEnd":true,"dsr":[0,3,3,0]}'></p><pre data-parsoid='{"stx":"html","dsr":[3,17,5,6]}'>foo</pre><p data-parsoid='{"autoInsertedStart":true,"stx":"html","dsr":[17,21,0,null]}'></p>
+!!end
+
 !!test
 Templates: Indent-Pre: 1a. Templates that break a line should suppress <pre>
 !!input
@@ -1708,6 +1779,25 @@ Templates: Indent-Pre: 1f: Wrapping should be based on expanded content
 </pre>
 !!end
 
+!! test
+Things that look like <pre> tags aren't treated as such
+!! input
+Barack Obama <President> of the United States
+!! result
+<p>Barack Obama &lt;President&gt; of the United States
+</p>
+!! end
+
+!! test
+Parsoid: handle pre with space after attribute
+!! options
+parsoid=wt2html
+!! input
+<pre style="width:50%;" >{{echo|foo}}</pre>
+!! result
+<pre style="width:50%;">{{echo|foo}}</pre>
+!! end
+
 # TODO / maybe: fix wt2wt for this
 !! test
 Parsoid: Don't paragraph-wrap fosterable content
@@ -1928,6 +2018,17 @@ parsoid=html2wt,wt2wt
 <p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"{{echo|1=bar}}"}},"i":0}}]}'>bar</p>
 !! end
 
+## Bug 56733
+!! test
+Templates parameters with special tokenizing behavior dont get modified because of arg escaping
+!! options
+parsoid
+!! input
+{{echo|a : b}}
+!! result
+<p about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"a : b"}},"i":0}}]}'>a<span typeof="mw:Placeholder" data-parsoid='{"isDisplayHack":true}'> </span>: b</p>
+!! end
+
 ###
 ### Parsoid-centric tests for testing RT edge cases for pre
 ###
 !!test
 3a. Indent-Pre and block tags (single-line html)
 !!input
- <p> foo </p>
- <div> foo </div>
- <blockquote> foo </blockquote>
<p> foo </p>
<div> foo </div>
<blockquote> foo </blockquote>
  <span> foo </span>
 !!result
- <p> foo </p>
- <div> foo </div>
- <blockquote> foo </blockquote>
<p> foo </p>
<div> foo </div>
<blockquote> foo </blockquote>
 <pre><span> foo </span>
 </pre>
 !!end
 
+!!test
+3c. Indent-Pre and block tags (multi-line html)
+!!input
+ a <span>foo</span>
+ b <div> foo </div>
+!!result
+<pre>a <span>foo</span>
+</pre>
+ b <div> foo </div>
+
+!!end
+
 !!test
 3b. Indent-Pre and block tags (pre-content on separate line)
 !!input
@@ -2137,11 +2250,11 @@ foo
 
 !!end
 
+## NOTE: the leading white-space chars on empty line are significant
 !! test
-5. White-space in indent-pre
-NOTE: the white-space char on 2nd line is significant
+5a. White-space in indent-pre
 !! input
- a<br/>
+ a<br />
  
  b
 !! result
@@ -2151,6 +2264,39 @@ b
 </pre>
 !! end
 
+## NOTE: the leading white-space chars on empty line are significant
+!! test
+5b. White-space in indent-pre
+!! input
+ a
+ b
+ c
+!! result
+<pre>a
+
+b
+
+
+c
+</pre>
+!! end
+
+!! test
+5c. White-space in indent-pre
+!! input
+ ''a''
+  ''b''
+   ''c''
+!! result
+<pre><i>a</i>
+ <i>b</i>
+  <i>c</i>
+</pre>
+!! end
+
 !! test
 6. Pre-blocks should extend across lines with leading WS even when there is no wrappable content
 !! input
@@ -3935,6 +4081,83 @@ http://example.com
 <p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a></p>
 !! end
 
+!! test
+Parenthesis in external links, especially URL links
+!! options
+php
+!! input 
+http://example.com)
+
+http://example.com/test)
+
+http://example.com/(test)
+
+http://example.com/((test)
+
+(http://example.com/(test))
+
+(http://example.com/(test)))))
+
+http://example.com/a)b
+
+[http://example.com) foo]
+!! result
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>)
+</p><p><a rel="nofollow" class="external free" href="http://example.com/test">http://example.com/test</a>)
+</p><p><a rel="nofollow" class="external free" href="http://example.com/(test)">http://example.com/(test)</a>
+</p><p><a rel="nofollow" class="external free" href="http://example.com/((test)">http://example.com/((test)</a>
+</p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test))">http://example.com/(test))</a>
+</p><p>(<a rel="nofollow" class="external free" href="http://example.com/(test)))))">http://example.com/(test)))))</a>
+</p><p><a rel="nofollow" class="external free" href="http://example.com/a)b">http://example.com/a)b</a>
+</p><p><a rel="nofollow" class="external text" href="http://example.com)">foo</a>
+</p>
+!! end
+
+!! test
+Parenthesis in external links, especially URL links (Parsoid)
+!! options
+parsoid
+!! input 
+http://example.com)
+
+http://example.com/test)
+
+http://example.com/(test)
+
+http://example.com/((test)
+
+(http://example.com/(test))
+
+(http://example.com/(test)))))
+
+http://example.com/a)b
+
+[http://example.com) foo]
+!! result
+<p><a rel="mw:ExtLink" href="http://example.com">http://example.com</a>)</p>
+<p><a rel="mw:ExtLink" href="http://example.com/test">http://example.com/test</a>)</p>
+<p><a rel="mw:ExtLink" href="http://example.com/(test)">http://example.com/(test)</a></p>
+<p><a rel="mw:ExtLink" href="http://example.com/((test)">http://example.com/((test)</a></p>
+<p>(<a rel="mw:ExtLink" href="http://example.com/(test))">http://example.com/(test))</a></p>
+<p>(<a rel="mw:ExtLink" href="http://example.com/(test)))))">http://example.com/(test)))))</a></p>
+<p><a rel="mw:ExtLink" href="http://example.com/a)b">http://example.com/a)b</a></p>
+<p><a rel="mw:ExtLink" href="http://example.com)">foo</a></p>
+!! end
+
+!! test
+Parenthesis in external links, w/ transclusion or comment
+!! options
+parsoid
+!! input
+(http://example.com/{{echo|hi}})
+
+(http://example.com<!-- hi -->)
+!! result
+<p>(<a data-mw='{"attribs":[[{"txt":"href"},{"html":"http://example.com/&lt;span about=\"#mwt1\" typeof=\"mw:Transclusion\" data-mw=\"{&amp;quot;parts&amp;quot;:[{&amp;quot;template&amp;quot;:{&amp;quot;target&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;echo&amp;quot;,&amp;quot;href&amp;quot;:&amp;quot;./Template:Echo&amp;quot;},&amp;quot;params&amp;quot;:{&amp;quot;1&amp;quot;:{&amp;quot;wt&amp;quot;:&amp;quot;hi&amp;quot;}},&amp;quot;i&amp;quot;:0}}]}\" data-parsoid=\"{&amp;quot;dsr&amp;quot;:[20,31,null,null],&amp;quot;pi&amp;quot;:[[{&amp;quot;k&amp;quot;:&amp;quot;1&amp;quot;,&amp;quot;spc&amp;quot;:[&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;,&amp;quot;&amp;quot;]}]]}\">hi&lt;/span>"}]]}' typeof="mw:ExpandedAttrs" about="#mwt2" rel="mw:ExtLink" href="http://example.com/hi" data-parsoid='{"stx":"url","a":{"href":"http://example.com/hi"},"sa":{"href":"http://example.com/{{echo|hi}}"},"dsr":[1,31,0,0]}'>http://example.com/hi</a>)</p>
+
+<p>(<a rel="mw:ExtLink" href="http://example.com" data-parsoid='{"stx":"url","a":{"href":"http://example.com"},"sa":{"href":"http://example.com&lt;!-- hi -->"},"dsr":[35,64,0,0]}'>http://example.com</a>)</p>
+!! end
+
 ###
 ### Quotes
 ###
@@ -4048,16 +4271,71 @@ php
 !! input
 {||}
 !! result
+
 !! end
+
 # Parsoid team replies: empty table tags are legal in HTML5
 !! test
 A table with no data. (parsoid)
 !! options
-parsoid
+parsoid=wt2html
 !! input
 {||}
 !! result
 <table></table>
+
+!! end
+
+!! test
+A table with stray table end tags on start tag line (wt2html)
+!! options
+parsoid=wt2html
+!! input
+{|style="color: red;"|}
+
+{|style="color: red;" |}
+|foo
+|}
+
+{|style="color: red;"|} id="foo"
+|foo
+|}
+
+{|style="color: red;" |} id="foo"
+|foo
+|}
+!! result
+<table style="color: red;"></table>
+
+<table style="color: red;">
+<tbody><tr>
+<td>foo</td>
+</tr></tbody>
+</table>
+
+<table style="color: red;" id="foo">
+<tbody><tr>
+<td>foo</td>
+</tr></tbody>
+</table>
+
+<table style="color: red;" id="foo">
+<tbody><tr>
+<td>foo</td>
+</tr></tbody>
+</table>
+
+!! end
+
+!! test
+A table with no data (take 2) (parsoid)
+!! options
+parsoid
+!! input
+{|
+|}
+!! result
+<table></table>
 !! end
 
 # A table with nothing but a caption is invalid XHTML, we might want to render
@@ -4757,6 +5035,18 @@ parsoid=html2wt
 <tr><td>baz</td></tr></tbody></table><b>quux</b>
 !! end
 
+!! test
+Parsoid: newline inducing block nodes don't suppress <nowiki>
+!! options
+parsoid=html2wt
+!! input
+<nowiki> </nowiki>a
+
+= foo =
+!! result
+ a<h1>foo</h1>
+!! end
+
 ###
 ### Internal links
 ###
@@ -4899,6 +5189,17 @@ Piped link with 3 brackets
 </p>
 !! end
 
+!! test
+Piped link with extlink-like text
+!! input
+[[Main Page|[bar]]]
+[[Main Page|This is a [bar]]]
+!! result
+<p><a href="/wiki/Main_Page" title="Main Page">[bar]</a>
+<a href="/wiki/Main_Page" title="Main Page">This is a [bar]</a>
+</p>
+!! end
+
 !! test
 Link with multiple pipes
 !! input
@@ -5451,6 +5752,25 @@ parsoid
 <p data-parsoid='{"dsr":[19,30,0,0]}'><a rel="mw:ExtLink" href="//en.wikipedia.org/wiki/Foo" data-parsoid='{"stx":"simple","a":{"href":"//en.wikipedia.org/wiki/Foo"},"sa":{"href":":en:Foo"},"isIW":true,"dsr":[19,30,null,1]}'>en:Foo</a></p>
 !! end
 
+!! test
+Interwiki links that cannot be represented in wiki syntax
+!! options
+parsoid
+!! input
+[[meatball:ok]]
+[[meatball:ok#foo|ok with fragment]]
+[[meatball:ok_as_well?|ok ending with ? mark]]
+[http://de.wikipedia.org/wiki/Foo?action=history has query]
+[http://de.wikipedia.org/wiki/#foo is just fragment]
+
+!! result
+<p><a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok">meatball:ok</a>
+<a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok#foo">ok with fragment</a>
+<a rel="mw:ExtLink" href="http://www.usemod.com/cgi-bin/mb.pl?ok_as_well%3F">ok ending with ? mark</a>
+<a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/Foo?action=history">has query</a>
+<a rel="mw:ExtLink" href="http://de.wikipedia.org/wiki/#foo">is just fragment</a></p>
+!! end
+
 
 ###
 ### Interlanguage links
@@ -7972,6 +8292,30 @@ parsoid
 </p>
 !!end
 
+!!test
+4. includeonly in table attributes
+!!input
+{|
+|- <noinclude>
+|-
+|a
+</noinclude>
+|- <includeonly>
+|-
+|b
+</includeonly>
+|}
+!!result
+<table>
+
+
+<tr>
+<td>a
+</td></tr>
+</table>
+
+!!end
+
 ###
 ### Testing parsing of templates where a template arg
 ### has the same name as the template itself.
@@ -9393,6 +9737,36 @@ parsoid
 <figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption text</figcaption></figure>
 !! end
 
+!! test
+Image with caption, bug 53312 #1 (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption page stuff]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page stuff</figcaption></figure>
+!! end
+
+!! test
+Image with caption, bug 53312 #2 (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption page=]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page=</figcaption></figure>
+!! end
+
+!! test
+Image with caption, bug 53312 #3 (parsoid)
+!! options
+parsoid
+!! input
+[[File:Foobar.jpg|right|Caption page=stuff]]
+!! result
+<figure class="mw-default-size mw-halign-right" typeof="mw:Image"><a href="File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/3/3a/Foobar.jpg" height="220" width="1941"></a><figcaption>Caption page=stuff</figcaption></figure>
+!! end
+
 !! test
 Image with empty attribute (php)
 !! options
@@ -9840,9 +10214,9 @@ Thumbnail image caption with a free URL and explicit alt
 SVG thumbnails with no language set
 !! options
 !! input
-[[File:Foobar.svg|thumb|width=200]]
+[[File:Foobar.svg|thumb|caption]]
 !! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>width=200</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
 
 !! end
 
@@ -9850,9 +10224,9 @@ SVG thumbnails with no language set
 SVG thumbnails with language de
 !! options
 !! input
-[[File:Foobar.svg|thumb|width=200|lang=de]]
+[[File:Foobar.svg|thumb|caption|lang=de]]
 !! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>width=200</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/index.php?title=File:Foobar.svg&amp;lang=de" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/langde-180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/langde-270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/langde-360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>caption</div></div></div>
 
 !! end
 
@@ -9860,7 +10234,7 @@ SVG thumbnails with language de
 SVG thumbnails with invalid language code
 !! options
 !! input
-[[File:Foobar.svg|thumb|width=200|lang=invalid.language.code]]
+[[File:Foobar.svg|thumb|caption|lang=invalid.language.code]]
 !! result
 <div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.svg" class="image"><img alt="" src="http://example.com/images/thumb/f/ff/Foobar.svg/180px-Foobar.svg.png" width="180" height="180" class="thumbimage" srcset="http://example.com/images/thumb/f/ff/Foobar.svg/270px-Foobar.svg.png 1.5x, http://example.com/images/thumb/f/ff/Foobar.svg/360px-Foobar.svg.png 2x" /></a>  <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.svg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>lang=invalid.language.code</div></div></div>
 
@@ -10208,22 +10582,22 @@ parsoid
 #</p>
 
 !! test
-Caption with a template in it
+Parsoid-specific image handling - caption with a template in it
 !! options
 parsoid
 !! input
-[[Image:Foobar.jpg|thumb|200px|This caption has a {{echo|transclusion}} in it.]]
+[[File:Foobar.jpg|thumb|200x200px|This caption has a {{echo|transclusion}} in it.]]
 !! result
 <figure typeof="mw:Image/Thumb"><a href="./File:Foobar.jpg"><img resource="./File:Foobar.jpg" src="//example.com/images/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg" height="23" width="200"></a><figcaption>This caption has a <span about="#mwt1" typeof="mw:Transclusion" data-mw="{&quot;parts&quot;:[{&quot;template&quot;:{&quot;target&quot;:{&quot;wt&quot;:&quot;echo&quot;,&quot;href&quot;:&quot;./Template:Echo&quot;},&quot;params&quot;:{&quot;1&quot;:{&quot;wt&quot;:&quot;transclusion&quot;}},&quot;i&quot;:0}}]}">transclusion</span> in it.</figcaption></figure>
 !! end
 
 !! test
-Caption with unbalanced tags in it
+Parsoid-specific image handling - caption with unbalanced tags in it
 !! options
-parsoid
+parsoid=wt2html,wt2wt,html2html
 !! input
 foo
-[[Image:Foobar.jpg|thumb|200px|This caption has a <center>unbalanced tag in it.]]
+[[File:Foobar.jpg|thumb|200x200px|This caption has a <center>unbalanced tag in it.]]
 bar
 !! result
 <p>foo</p>
@@ -10531,6 +10905,16 @@ parsoid
 <link rel="mw:PageProp/Category" href="Category:Foo#Bar">
 !! end
 
+!! test
+Parsoid: Defaultsort
+!! options
+parsoid
+!! input
+{{DEFAULTSORT:Foo}}
+!! result
+<meta property="mw:PageProp/categorydefaultsort" content="Foo"/>
+!! end
+
 ###
 ### Inter-language links
 ###
@@ -11241,6 +11625,29 @@ I always thought &xacute; was a cute letter.
 </p>
 !! end
 
+# TODO: generalize to PHP parser?
+!! test
+HTML5 tags
+!! options
+parsoid
+!! input
+<data value="5">five</data>
+<time datetime="2000-01-01T00:00Z">The new millenium started</time>
+<mark>This highlighted text</mark>
+!! result
+<p><data value="5">five</data>
+<time datetime="2000-01-01T00:00Z">The new millenium started</time>
+<mark>This highlighted text</mark></p>
+!! end
+
+!! test
+HTML tag with leading space is parsed as text
+!! input
+< div>foo< /div>
+!! result
+<p>&lt; div&gt;foo&lt; /div&gt;
+</p>
+!! end
 
 ###
 ### Nesting tests (see bug 41545, 50604, 51081)
@@ -11710,7 +12117,7 @@ MSIE CSS safety test: comment in expression
 !! end
 
 !! test
-CSS safety test: vertical tab
+CSS safety test (all browsers): vertical tab (bug 55332 / CVE-2013-4567)
 !! input
 <p style="font-size: 100px; background-image:url\b(https://www.google.com/images/srpr/logo6w.png)">A</p>
 !! result
@@ -11719,7 +12126,7 @@ CSS safety test: vertical tab
 !! end
 
 !! test
-MSIE CSS safety test: Fullwidth
+MSIE 6 CSS safety test: Fullwidth (bug 55332)
 !! input
 <p style="font-size: 100px; color: expression((title='XSSed'),'red')">A</p>
 <div style="top:EXPRESSION(alert())">B</div>
@@ -11730,7 +12137,7 @@ MSIE CSS safety test: Fullwidth
 !! end
 
 !! test
-MSIE CSS safety test: IPA extensions
+MSIE 6 CSS safety test: IPA extensions (bug 55332)
 !! input
 <div style="background-image:uʀʟ(javascript:alert())">A</div>
 <p style="font-size: 100px; color: expʀessɪoɴ((title='XSSed'),'red')">B</p>
@@ -11741,7 +12148,7 @@ MSIE CSS safety test: IPA extensions
 !! end
 
 !! test
-MSIE CSS safety test: sup/sub script
+MSIE 6 CSS safety test: sup/sub script (bug 55332)
 !! input
 <div style="background-image:url⁽javascript:alert())">A</div>
 <div style="background-image:url₍javascript:alert())">B</div>
@@ -11754,7 +12161,18 @@ MSIE CSS safety test: sup/sub script
 !! end
 
 !! test
-MSIE CSS safety test: Repetition markers
+Opera -o-link CSS
+!! input
+<div
+title="&#100;&#97;&#116;&#97;&#58;&#116;&#101;&#120;&#116;&#47;&#104;&#116;&#109;&#108;&#44;&#60;&#105;&#109;&#103;&#32;&#115;&#114;&#99;&#61;&#49;&#32;&#111;&#110;&#101;&#114;&#114;&#111;&#114;&#61;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;&#62;"
+style="-o-link:attr(title);-o-link-source:current">X</div>
+!! result
+<div title="data:text/html,&lt;img src=1 onerror=alert(1)&gt;" style="/* insecure input */">X</div>
+
+!! end
+
+!! test
+MSIE 6 CSS safety test: Repetition markers (bug 55332)
 !! input
 <p style="font-size: 100px; color: expres〱ion((title='XSSed'),'red')">A</p>
 <p style="font-size: 100px; color: expresゝion((title='XSSed'),'red')">B</p>
@@ -16280,6 +16698,19 @@ language=be-tarask
 </p>
 !! end
 
+!! test
+Wrong option for formatNum (bug 56199)
+!! input
+{{formatnum:1,234.56|Random}}
+{{formatnum:1,234.56|EVERYTHING}}
+{{formatnum:1234.56|any argument that has the string 'NOSEP'}}
+!! result
+<p>1,234.56
+1,234.56
+1,234.56
+</p>
+!! end
+
 !! test
 Strip marker in grammar
 !! options
@@ -16799,6 +17230,22 @@ B1 <span about="#mwt7" class="reference" data-mw='{"name":"ref","attrs":{"name":
 </ol>
 !!end
 
+## We don't bother wt2wt-ing non-standard whitespace
+!!test
+Ref: 16. Tokenizer should accept non-standard whitespace in <ref> and </ref> tags
+!!options
+parsoid=wt2html
+!!input
+A <ref >foo</ref >
+
+<references />
+!!result
+<p>A <span class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span></p>
+
+<ol class="references" typeof="mw:Extension/references" data-mw='{"name":"references","attrs":{}}'>
+<li id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> foo</li></ol>
+!!end
+
 !!test
 References: 1. references tag without any refs should be handled properly
 !!options
@@ -16817,7 +17264,7 @@ parsoid
 A <ref group="a">foo</ref>
 B <ref group="b">bar</ref>
 
-<references group='a' />
+<references group="a" />
 !!result
 <p>A <span about="#mwt2" class="reference" data-mw='{"name":"ref","body":{"html":"foo"},"attrs":{"group":"a"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[a 1]</a></span>
 B <span about="#mwt4" class="reference" data-mw='{"name":"ref","body":{"html":"bar"},"attrs":{"group":"b"}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[b 1]</a></span></p>
@@ -16858,7 +17305,7 @@ parsoid
 A <ref group="a">afoo</ref>
 B <ref>bfoo</ref>
 
-<references group="a"/>
+<references group="a" />
 
 C <ref>cfoo</ref>
 
@@ -16904,9 +17351,9 @@ References: 6. <references /> from a transclusion
 !!options
 parsoid
 !!input
-{{echo|<references />}}
+<ref>Foo</ref> {{echo|<references />}}
 !!result
-<ol class="references" about="#mwt2" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"<references />"}},"i":0}}]}'></ol>
+<span about="#mwt3" class="reference" data-mw='{"name":"ref","body":{"html":"Foo"},"attrs":{}}' id="cite_ref-1-0" rel="dc:references" typeof="mw:Extension/ref"><a href="#cite_note-1">[1]</a></span> <ol class="references" typeof="mw:Extension/references mw:Transclusion" about="#mwt4" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"&lt;references />"}},"i":0}}]}'><li about="#cite_note-1" id="cite_note-1"><span rel="mw:referencedBy"><a href="#cite_ref-1-0">↑</a></span> Foo</li></ol>
 !!end
 
 !! test
@@ -16983,41 +17430,48 @@ parsoid
 
 !! test
 Headings: 1. Nested inside html
+(New headings and existing headings are handled differently)
 !! options
-parsoid
+parsoid=html2wt
 !! input
-=<nowiki>=foo=</nowiki>=
+= =foo= =
 
-==<nowiki>=foo=</nowiki>==
+== =foo= ==
 
-===<nowiki>=foo=</nowiki>===
+=== =foo= ===
 
+=<nowiki>=foo=</nowiki>=
+==<nowiki>=foo=</nowiki>==
+===<nowiki>=foo=</nowiki>===
 ====<nowiki>=foo=</nowiki>====
-
 =====<nowiki>=foo=</nowiki>=====
-
 ======<nowiki>=foo=</nowiki>======
+
 !! result
-<h1><span typeof="mw:Nowiki">=foo=</span></h1>
-<h2><span typeof="mw:Nowiki">=foo=</span></h2>
-<h3><span typeof="mw:Nowiki">=foo=</span></h3>
-<h4><span typeof="mw:Nowiki">=foo=</span></h4>
-<h5><span typeof="mw:Nowiki">=foo=</span></h5>
-<h6><span typeof="mw:Nowiki">=foo=</span></h6>
+<h1>=foo=</h1>
+<h2>=foo=</h2>
+<h3>=foo=</h3>
+
+<h1 data-parsoid='{}'>=foo=</h1>
+<h2 data-parsoid='{}'>=foo=</h2>
+<h3 data-parsoid='{}'>=foo=</h3>
+<h4 data-parsoid='{}'>=foo=</h4>
+<h5 data-parsoid='{}'>=foo=</h5>
+<h6 data-parsoid='{}'>=foo=</h6>
 !!end
 
 !! test
 Headings: 2. Outside heading nest on a single line <h1>foo</h1>*bar
 !! options
-parsoid
+parsoid=html2wt
 !! input
-=foo=
+= foo =
 <nowiki>*</nowiki>bar
 
-=foo=
+= foo =
 =bar
 
-=foo=
+= foo =
 <nowiki>=bar=</nowiki>
 !! result
 <h1>foo</h1>*bar
@@ -17028,9 +17482,9 @@ parsoid
 !! test
 Headings: 3. Nested inside html with wikitext split by html tags
 !! options
-parsoid
+parsoid=html2wt
 !! input
-=='''bold'''<nowiki>foo=</nowiki>=
+= ='''bold'''<nowiki>foo=</nowiki> =
 !! result
 <h1>=<b>bold</b><span typeof="mw:Nowiki">foo=</span></h1>
 !!end
@@ -17038,23 +17492,23 @@ parsoid
 !! test
 Headings: 4a. No escaping needed (testing just h1 and h2)
 !! options
-parsoid
+parsoid=html2wt
 !! input
-==foo=
+= =foo =
 
-=foo==
+= foo= =
 
 = =foo= =
 
-==foo= bar=
+= =foo= bar =
 
-===foo==
+== =foo ==
 
-==foo===
+== foo= ==
 
-=''=''foo==
+= ''=''foo= =
 
-=<nowiki>=</nowiki>=
+= <nowiki>=</nowiki> =
 !! result
 <h1>=foo</h1>
 <h1>foo=</h1>
@@ -17069,7 +17523,7 @@ parsoid
 !! test
 Headings: 4b. No escaping needed (inside p-tags)
 !! options
-parsoid
+parsoid=html2wt
 !! input
 ===
 =foo= x
@@ -17171,8 +17625,8 @@ Headings: 6d. Heading chars in SOL context (with interspersed comments)
 parsoid
 !! input
 <!--c0--><nowiki>=a=</nowiki>
-<!--c1-->
-<nowiki>=a=</nowiki> <!--c2-->  <!--c3-->
+
+<!--c1--><nowiki>=a=</nowiki> <!--c2-->         <!--c3-->
 !! result
 <p><!--c0-->=a=</p>
 <p><!--c1-->=a= <!--c2-->       <!--c3--></p>
@@ -17326,6 +17780,8 @@ parsoid
 *''foo''*bar
 
 *[[Foo]]: bar
+
+*[[Foo]]*bar
 !! result
 <ul>
 <li>foo*bar
@@ -17339,6 +17795,10 @@ parsoid
 <li><a rel="mw:WikiLink" href="Foo">Foo</a>: bar
 </li>
 </ul>
+<ul>
+<li><a rel="mw:WikiLink" href="Foo">Foo</a>*bar
+</li>
+</ul>
 !!end
 
 !! test
@@ -17482,14 +17942,18 @@ Tables: 1d. No escaping needed
 !! test
 Tables: 2a. Nested in td
 !! options
-parsoid
+parsoid=html2wt
 !! input
 {|
 |<nowiki>foo|bar</nowiki>
+|-
+|x<div><nowiki>a|b</nowiki></div>
 |}
 !! result
 <table><tbody><tr>
-<td><span typeof="mw:Nowiki">foo|bar</span></td></tr></tbody></table>
+<td>foo|bar</td></tr>
+<tr><td>x<div>a|b</div></td>
+</tbody></table>
 !! end
 
 !! test
@@ -17612,6 +18076,9 @@ parsoid
 bar|baz
 +bar
 -bar
+|-
+|x
+<div>a|b</div>
 |}
 !! result
 <table><tbody>
@@ -17621,32 +18088,27 @@ bar|baz
 <p>bar|baz
 +bar
 -bar</p></td></tr>
+<tr><td>x
+<div>a|b</div></td>
 </tbody></table>
 !! end
 
-### SSS FIXME: Disabled right now because accurate html2wt
-### on this snippet requires data-parsoid flags that we've
-### stripped out of these tests.  We should scheme how we
-### we want to handle these kind of tests that require
-### data-parsoid flags for accurate html2wt serialization
-
 !! test
 Tables: 4d. No escaping needed
 !! options
-disabled
+parsoid
 !! input
 {|
+|[[Foo]]-bar
 ||+1
 ||-2
 |}
 !! result
 <table>
-<tr>
-<td>+1
-</td>
-<td>-2
-</td></tr></table>
-
+<tbody><tr><td><a rel="mw:WikiLink" href="./Foo">Foo</a>-bar</td>
+<td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>+1</td>
+<td data-parsoid='{"startTagSrc":"|","attrSepSrc":"|"}'>-2</td></tr>
+</tbody></table>
 !! end
 
 #### --------------- Links ----------------
@@ -17713,9 +18175,16 @@ parsoid
 !! input
 [http://google.com <nowiki>[google]</nowiki>]
 [http://google.com <nowiki>google]</nowiki>]
+
+<nowiki>[http://google.com]</nowiki>
+
+<nowiki>[http://google.com google]</nowiki>
+
 !! result
-<a href="http://google.com" rel="mw:ExtLink">[google]</a>
-<a href="http://google.com" rel="mw:ExtLink">google]</a>
+<p><a href="http://google.com" rel="mw:ExtLink">[google]</a>
+<a href="http://google.com" rel="mw:ExtLink">google]</a></p>
+<p>[http://google.com]</p>
+<p>[http://google.com google]</p>
 !! end
 
 !! test
@@ -17754,6 +18223,8 @@ parsoid=html2wt,wt2wt
 ''''foo'''
 '''foo'''<nowiki/>'
 '<nowiki/>'''foo'''<nowiki/>'
+''fools'<span> errand</span>''
+''<span>fool</span>'s errand''
 !! result
 <p><i>'foo'</i>
 <i>''foo''</i>
@@ -17770,6 +18241,8 @@ parsoid=html2wt,wt2wt
 '<b>foo</b>
 <b>foo</b>'
 '<b>foo</b>'</p>
+<i>fools'<span> errand</span></i>
+<i><span>fool</span>'s errand</i>
 !! end
 
 !! test
@@ -17901,6 +18374,7 @@ __|__
 #### 1. a tags
 #### 2. other tags
 #### 3. multi-line html tag
+#### 4. extension tags
 #### -----------------------------------------
 !! test
 1. a tags
@@ -17940,8 +18414,14 @@ parsoid
 4. extension tags
 !! input
 <nowiki><ref>foo</ref></nowiki>
+
+<nowiki><ref>bar</nowiki>
+
+baz<nowiki></ref></nowiki>
 !! result
 <p>&lt;ref&gt;foo&lt;/ref&gt;
+</p><p>&lt;ref&gt;bar
+</p><p>baz&lt;/ref&gt;
 </p>
 !! end
 
@@ -18531,6 +19011,26 @@ parsoid=wt2wt,wt2html
 <td>b</td></tr></tbody></table>
 !!end
 
+!!test
+Table in fosterable position
+!!options
+parsoid=wt2html,wt2wt
+!!input
+{{OpenTable}}
+<div>
+{|
+|}
+</div>
+|}
+!!result
+<div about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"OpenTable","href":"./Template:OpenTable"},"params":{},"i":0}},"\n&lt;div>"]}' data-parsoid='{"stx":"html","autoInsertedEnd":true,"dsr":[0,19,null,null],"src":"{{OpenTable}}\n&lt;div>","pi":[[]]}'></div><span about="#mwt1" data-parsoid="{}">
+</span>
+<table about="#mwt1" data-parsoid='{"autoInsertedEnd":true,"dsr":[null,19,2,0]}'></table>
+
+<table data-parsoid='{"dsr":[20,25,2,2]}'>
+</table>
+!!end
+
 # -----------------------------------------------------------------
 # The following section of tests are primarily to spec requirements
 # around serialization of new/edited content.
@@ -18560,16 +19060,11 @@ parsoid=html2wt
 <p>123</p><figure typeof="mw:Image/Thumb" class="mw-halign-right"><a href="./File:Wiki.png"><img src="http://192.168.142.128/mw/images/thumb/b/bc/Wiki.png/131px-Wiki.png" width="131" height="150" resource="./File:Wiki.png"></a></figure><p>456</p>
 !!end
 
-# Wacky -- the leading newline in input is required because
-# that is what the serializer emits. To be fixed. Not fixing
-# the test because this test is required to test serialization of
-# new content and preferred whitespace style.
 !! test
 Lists: Serialize correctly even when list content is wrapped in p-tags (like VE does)
 !! options
 parsoid=html2wt
 !! input
-
 * foo
 !! result
 <ul>
@@ -18577,6 +19072,16 @@ parsoid=html2wt
 </ul>
 !! end
 
+!! test
+Lists: Serialize correctly even when list tags has unneeded whitespace between tags
+!! options
+parsoid=html2wt
+!! input
+* foo
+!! result
+<ul> <li>foo</li></ul>
+!! end
+
 !! test
 Don't strip leading whitespace when handling indent-pre suppressing tags
 !! options
@@ -18623,6 +19128,10 @@ foo
 
 <div>foo</div>
 <span>bar</span>
+
+<div>
+<span>foo</span>
+</div>
 !! result
 <p>foo</p>
  <span>bar</span>
@@ -18632,18 +19141,17 @@ foo
 
 <div>foo</div>
  <span>bar</span>
+
+<div>
+ <span>foo</span>
+</div>
 !! end
 
-# Wacky -- the leading newline in input is required because
-# that is what the serializer emits. To be fixed. Not fixing
-# the test because this test is required to test serialization of
-# new content and preferred whitespace style.
 !! test
 Lists: Add space after bullets
 !! options
 parsoid=html2wt
 !! input
-
 * foo
 * bar
 * <span> baz</span>
@@ -18655,6 +19163,25 @@ parsoid=html2wt
 </ul>
 !! end
 
+!! test
+Headings: Add space before/after == (Bug 51744)
+!! options
+parsoid=html2wt
+!! input
+== foo ==
+
+== bar ==
+
+== baz ==
+
+== <span> baz</span> ==
+!! result
+<h2>foo</h2>
+<h2> bar</h2>
+<h2>baz </h2>
+<h2><span> baz</span></h2>
+!! end
+
 !! test
 Parsoid: Serialize positional parameters with = in them as named parameter
 !! options
@@ -18781,8 +19308,12 @@ parsoid=html2wt
 <p><i>A</i><b data-parsoid='{}'><i data-parsoid='{}'>B</i></b></p>
 !! end
 
+#------------------------------------
+# End of I/B quote minimization tests
+#------------------------------------
+
 !!test
-5. Bug 54262: New entities
+Bug 54262: New entities
 !! options
 parsoid=html2wt
 !! input
@@ -18791,6 +19322,98 @@ foo
 <span typeof="mw:Entity">foo</span>
 !! end
 
+## Note that there is no wikitext output for 'unknownproperty' ##
+## Unknown magic words are silently dropped ##
+
+!! test
+Magic words
+!! options
+parsoid=html2wt
+!! input
+__TOC__
+__NOTOC__
+__FORCETOC__
+__INDEX__
+__NOINDEX__
+__NOGALLERY__
+__NOEDITSECTION__
+__NOTITLECONVERT__
+__NOCONTENTCONVERT__
+!! result
+<meta property='mw:PageProp/toc' />
+<meta property='mw:PageProp/notoc' />
+<meta property='mw:PageProp/forcetoc' />
+<meta property='mw:PageProp/index' />
+<meta property='mw:PageProp/noindex' />
+<meta property='mw:PageProp/nogallery' />
+<meta property='mw:PageProp/noeditsection' />
+<meta property='mw:PageProp/notitleconvert' />
+<meta property='mw:PageProp/nocontentconvert' />
+<meta property='mw:PageProp/unknownproperty' />
+!! end
+
+!! test
+Consecutive <pre>s should not get merged
+!! options
+parsoid=html2wt,html2html
+!! input
+ a
+
+ b
+
+ c
+
+ d
+
+ e
+
+ f
+!! result
+<pre>a</pre><pre>b</pre>
+
+<pre>c
+</pre><pre>
+d</pre>
+
+<pre>e
+
+</pre><pre>
+
+f</pre>
+!! end
+
+!! test
+Edited ISBN links not serializable as ISBN links should serialize as wikilinks
+!! options
+parsoid=html2wt
+!! input
+[[Special:BookSources/1234567890|ISBN 1234567895]]
+!! result
+<a rel="mw:ExtLink" href="./Special:BookSources/1234567890">ISBN 1234567895</a>
+!! end
+
+!! test
+Edited RFC links not serializable as RFC links should serialize as extlinks
+!! options
+parsoid=html2wt
+!! input
+[//tools.ietf.org/html/rfc123 New RFC]
+!! result
+<a href="//tools.ietf.org/html/rfc123" rel="mw:ExtLink">New RFC</a>
+!! end
+
+!! test
+Edited PMID links not serializable as PMID links should serialize as extlinks
+!! options
+parsoid=html2wt
+!! input
+[//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract New PMID]
+!! result
+<a href="//www.ncbi.nlm.nih.gov/pubmed/123?dopt=Abstract" rel="mw:ExtLink">New PMID</a>
+!! end
+
 # -----------------------------------------------------------------
 # End of section for Parsoid-only html2wt tests for serialization
 # of new content
index 1210845..95b5047 100644 (file)
@@ -53,7 +53,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
        /**
         * Holds original values of MediaWiki configuration settings
         * to be restored in tearDown().
-        * See also setMwGlobal().
+        * See also setMwGlobals().
         * @var array
         */
        private $mwGlobals = array();
diff --git a/tests/phpunit/data/cssmin/green.gif b/tests/phpunit/data/cssmin/green.gif
new file mode 100644 (file)
index 0000000..f9e7531
Binary files /dev/null and b/tests/phpunit/data/cssmin/green.gif differ
diff --git a/tests/phpunit/data/cssmin/large.png b/tests/phpunit/data/cssmin/large.png
new file mode 100644 (file)
index 0000000..64bf48a
Binary files /dev/null and b/tests/phpunit/data/cssmin/large.png differ
diff --git a/tests/phpunit/data/cssmin/red.gif b/tests/phpunit/data/cssmin/red.gif
new file mode 100644 (file)
index 0000000..13c43e9
Binary files /dev/null and b/tests/phpunit/data/cssmin/red.gif differ
diff --git a/tests/phpunit/data/media/LoremIpsum.djvu b/tests/phpunit/data/media/LoremIpsum.djvu
new file mode 100644 (file)
index 0000000..42f47cd
Binary files /dev/null and b/tests/phpunit/data/media/LoremIpsum.djvu differ
index 4b489a9..4fcd5fc 100644 (file)
@@ -41,3 +41,8 @@ https://commons.wikimedia.org/wiki/File:Tux.svg
 Larry Ewing, Simon Budig, Anja Gerwinski
 "The copyright holder of this file allows anyone to use it for any purpose, provided that the copyright holder is properly attributed. Redistribution, derivative work, commercial use, and all other use is permitted."
 
+Speech_bubbles.svg (Modified slightly)
+https://commons.wikimedia.org/wiki/File:Speech_bubbles.svg
+CC-BY-SA 3.0
+Jarry1250
+
diff --git a/tests/phpunit/data/media/Speech_bubbles.svg b/tests/phpunit/data/media/Speech_bubbles.svg
new file mode 100644 (file)
index 0000000..6b1ef7a
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="17.7cm" height="13cm" id="svg2" version="1.1" inkscape:version="0.48.2 r9819" sodipodi:docname="New document 1">
+  <defs id="defs4"/>
+  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.7" inkscape:cx="296.43458" inkscape:cy="130.17435" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1366" inkscape:window-height="706" inkscape:window-x="-8" inkscape:window-y="-8" inkscape:window-maximized="1"/>
+  <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(-0.28125,-1.21875)">
+    <switch style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><text xml:space="preserve" x="90" y="108.07646" id="text2985-de" sodipodi:linespacing="125%" systemLanguage="de"><tspan text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2987-de">Hallo!</tspan></text><text xml:space="preserve" x="90" y="108.07646" id="text2985-fr" sodipodi:linespacing="125%" systemLanguage="fr"><tspan x="80" y="108.07646" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2987-fr">Bonjour</tspan></text><text xml:space="preserve" x="90" y="108.07646" id="text2985-nl" sodipodi:linespacing="125%" systemLanguage="nl, tlh-ca"><tspan x="90" y="108.07646" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2987-nl">Hallo!</tspan></text><text xml:space="preserve" x="90" y="108.07646" id="text2985" sodipodi:linespacing="125%"><tspan x="90" y="108.07646" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2987" sodipodi:role="line">Hello!</tspan></text></switch>
+    <switch style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><text xml:space="preserve" x="330" y="188.07648" id="text2989-de" sodipodi:linespacing="125%" systemLanguage="de"><tspan x="323" y="188.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2991-de">Hallo! Wie</tspan><tspan x="350" y="238.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2993-de" sodipodi:role="line">geht's?</tspan></text><text xml:space="preserve" x="330" y="188.07648" id="text2989-fr" sodipodi:linespacing="125%" systemLanguage="fr"><tspan x="335" y="188.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2991-fr">Bonjour,</tspan><tspan x="350" y="238.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2993-fr">ça va?</tspan></text><text xml:space="preserve" x="330" y="188.07648" id="text2989-nl" sodipodi:linespacing="125%" systemLanguage="nl, tlh-ca"><tspan x="310" y="188.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2991-nl">Hallo! Hoe</tspan><tspan x="330" y="238.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2993-nl">gaat het?</tspan></text><text xml:space="preserve" x="330" y="188.07648" id="text2989" sodipodi:linespacing="125%"><tspan x="330" y="188.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2991" sodipodi:role="line">Hello! How</tspan><tspan x="330" y="238.07648" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2993" sodipodi:role="line">are you?</tspan></text></switch>
+    <switch style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"><text xml:space="preserve" x="101.42857" y="318.64789" id="text2995-fr" sodipodi:linespacing="125%" systemLanguage="fr"><tspan x="82" y="323" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2997-fr">Ça va bien,</tspan><tspan x="117.42857" y="368.64789" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2999-fr">et toi?</tspan></text><text xml:space="preserve" x="101.42857" y="318.64789" id="text2995-nl" sodipodi:linespacing="125%" systemLanguage="nl, tlh-ca"><tspan x="101.42857" y="318.64789" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2997-nl">Goed,</tspan><tspan x="101.42857" y="368.64789" font-size="90%" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2999-nl">met jou?</tspan></text><text xml:space="preserve" x="101.42857" y="318.64789" id="text2995" sodipodi:linespacing="125%"><tspan x="101.42857" y="318.64789" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2997" sodipodi:role="line">I'm well,</tspan><tspan x="101.42857" y="368.64789" text-decoration="normal" font-style="normal" font-weight="normal" id="tspan2999" sodipodi:role="line">   you?</tspan></text></switch>
+    <path style="color:#000000;fill:none;stroke:#808080;stroke-width:8.19999980999999960;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" d="m 145.41518,24.660714 c -54.439497,0 -98.562501,30.043022 -98.562501,67.125 0,9.936246 3.188468,19.358966 8.875,27.843746 -3.477405,24.25473 -24,58.71875 -24,58.71875 0,0 55.316401,-29.49598 68.544641,-28.55804 2.17169,0.15398 -0.660951,4.01645 -2.044641,0.93304 14.019951,5.22007 30.083661,8.21875 47.187501,8.21875 54.4395,0 98.59375,-30.07427 98.59375,-67.156246 0,-37.081978 -44.15425,-67.125 -98.59375,-67.125 z" id="path3769" inkscape:connector-curvature="0" sodipodi:nodetypes="ssccscsss"/>
+    <path style="color:#000000;fill:none;stroke:#808080;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" d="m 416.54255,99.214524 c 73.5252,0 133.11712,43.566276 133.11712,97.339926 0,14.40884 -4.3063,28.073 -11.98645,40.37703 4.69653,35.1725 32.41406,85.14978 32.41406,85.14978 0,0 -74.70955,-42.77297 -92.57542,-41.41284 -2.93306,0.22328 0.89266,5.82436 2.76145,1.35303 -18.93514,7.56977 -40.63057,11.91824 -63.73076,11.91824 -73.52523,0 -133.15935,-43.61157 -133.15935,-97.38524 0,-53.77365 59.63412,-97.339926 133.15935,-97.339926 z" id="path3769-1" inkscape:connector-curvature="0" sodipodi:nodetypes="ssccscsss"/>
+    <path style="color:#000000;fill:none;stroke:#808080;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" d="m 173.1621,250.34923 c -64.02996,0 -115.926026,34.29807 -115.926026,76.63201 0,11.34353 3.750173,22.1008 10.438488,31.7873 -4.090007,27.68997 -28.228023,67.03517 -28.228023,67.03517 0,0 65.061361,-33.67353 80.619991,-32.60275 2.55427,0.17578 -0.77738,4.5853 -2.40483,1.06519 16.4898,5.95939 35.38343,9.38278 55.5004,9.38278 64.02999,0 115.96279,-34.33373 115.96279,-76.66769 0,-42.33394 -51.9328,-76.63201 -115.96279,-76.63201 z" id="path3769-1-7" inkscape:connector-curvature="0" sodipodi:nodetypes="ssccscsss"/>
+  </g>
+</svg>
index 8ea9c68..bf7fb21 100644 (file)
@@ -7,5 +7,5 @@ $result = array( 'xmp-exif' =>
                'GPSLatitude' => 88.51805555,
                'GPSLongitude' => -21.12356945,
                'GPSVersionID' => '2.2.0.0'
-        )
+       )
 );
index e2a3711..eaef1f7 100644 (file)
@@ -72,13 +72,13 @@ class ExceptionTest extends MediaWikiTestCase {
                $testCases = array();
                foreach ( array( 'Exception', 'MWException' ) as $exClass ) {
                        $exTests = array(
-                               array( 'string',  $exClass,  'id' ),
-                               array( 'string',  $exClass,  'file' ),
-                               array( 'integer', $exClass,  'line' ),
-                               array( 'string',  $exClass,  'message' ),
-                               array( 'null',    $exClass,  'url' ),
+                               array( 'string', $exClass, 'id' ),
+                               array( 'string', $exClass, 'file' ),
+                               array( 'integer', $exClass, 'line' ),
+                               array( 'string', $exClass, 'message' ),
+                               array( 'null', $exClass, 'url' ),
                                # Backtrace only enabled with wgLogExceptionBacktrace = true
-                               array( 'array',   $exClass,  'backtrace' ),
+                               array( 'array', $exClass, 'backtrace' ),
                        );
                        $testCases = array_merge( $testCases, $exTests );
                }
diff --git a/tests/phpunit/includes/HTMLCheckMatrixTest.php b/tests/phpunit/includes/HTMLCheckMatrixTest.php
deleted file mode 100644 (file)
index 39c3959..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<?php
-
-/**
- * Unit tests for the HTMLCheckMatrix + HTMLFormField
- * @todo the tests for the two classes could be split up
- */
-class HtmlCheckMatrixTest extends MediaWikiTestCase {
-       static private $defaultOptions = array(
-               'rows' => array( 'r1', 'r2' ),
-               'columns' => array( 'c1', 'c2' ),
-               'fieldname' => 'test',
-       );
-
-       /**
-        * @covers HTMLCheckMatrix::__construct
-        */
-       public function testPlainInstantiation() {
-               try {
-                       $form = new HTMLCheckMatrix( array() );
-               } catch ( MWException $e ) {
-                       $this->assertInstanceOf( 'HTMLFormFieldRequiredOptionsException', $e );
-                       return;
-               }
-
-               $this->fail( 'Expected MWException indicating missing parameters but none was thrown.' );
-       }
-
-       /**
-        * @covers HTMLCheckMatrix::__construct
-        */
-       public function testInstantiationWithMinimumRequiredParameters() {
-               $form = new HTMLCheckMatrix( self::$defaultOptions );
-               $this->assertTrue( true ); // form instantiation must throw exception on failure
-       }
-
-       /**
-        * @covers HTMLFormField::validate
-        */
-       public function testValidateCallsUserDefinedValidationCallback() {
-               $called = false;
-               $field = new HTMLCheckMatrix( self::$defaultOptions + array(
-                       'validation-callback' => function() use ( &$called ) {
-                               $called = true;
-                               return false;
-                       },
-               ) );
-               $this->assertEquals( false, $this->validate( $field, array() ) );
-               $this->assertTrue( $called );
-       }
-
-       /**
-        * @covers HTMLFormField::validate
-        */
-       public function testValidateRequiresArrayInput() {
-               $field = new HTMLCheckMatrix( self::$defaultOptions );
-               $this->assertEquals( false, $this->validate( $field, null ) );
-               $this->assertEquals( false, $this->validate( $field, true ) );
-               $this->assertEquals( false, $this->validate( $field, 'abc' ) );
-               $this->assertEquals( false, $this->validate( $field, new stdClass ) );
-               $this->assertEquals( true, $this->validate( $field, array() ) );
-       }
-
-       /**
-        * @covers HTMLFormField::validate
-        */
-       public function testValidateAllowsOnlyKnownTags() {
-               $field = new HTMLCheckMatrix( self::$defaultOptions );
-               $this->assertInternalType( 'string', $this->validate( $field, array( 'foo' ) ) );
-       }
-
-       /**
-        * @covers HTMLFormField::validate
-        */
-       public function testValidateAcceptsPartialTagList() {
-               $field = new HTMLCheckMatrix( self::$defaultOptions );
-               $this->assertTrue( $this->validate( $field, array() ) );
-               $this->assertTrue( $this->validate( $field, array( 'c1-r1' ) ) );
-               $this->assertTrue( $this->validate( $field, array( 'c1-r1', 'c1-r2', 'c2-r1', 'c2-r2' ) ) );
-       }
-
-       /**
-        * This form object actually has no visibility into what happens later on, but essentially
-        * if the data submitted by the user passes validate the following is run:
-        * foreach ( $field->filterDataForSubmit( $data ) as $k => $v ) {
-        *     $user->setOption( $k, $v );
-        * }
-        * @covers HTMLFormField::filterDataForSubmit
-        */
-       public function testValuesForcedOnRemainOn() {
-               $field = new HTMLCheckMatrix( self::$defaultOptions + array(
-                       'force-options-on' => array( 'c2-r1' ),
-               ) );
-               $expected = array(
-                       'c1-r1' => false,
-                       'c1-r2' => false,
-                       'c2-r1' => true,
-                       'c2-r2' => false,
-               );
-               $this->assertEquals( $expected, $field->filterDataForSubmit( array() ) );
-       }
-
-       /**
-        * @covers HTMLFormField::filterDataForSubmit
-        */
-       public function testValuesForcedOffRemainOff() {
-               $field = new HTMLCheckMatrix( self::$defaultOptions + array(
-                       'force-options-off' => array( 'c1-r2', 'c2-r2' ),
-               ) );
-               $expected = array(
-                       'c1-r1' => true,
-                       'c1-r2' => false,
-                       'c2-r1' => true,
-                       'c2-r2' => false,
-               );
-               // array_keys on the result simulates submitting all fields checked
-               $this->assertEquals( $expected, $field->filterDataForSubmit( array_keys( $expected ) ) );
-       }
-
-       protected function validate( HTMLFormField $field, $submitted ) {
-               return $field->validate(
-                       $submitted,
-                       array( self::$defaultOptions['fieldname'] => $submitted )
-               );
-       }
-}
diff --git a/tests/phpunit/includes/LinkFilterTest.php b/tests/phpunit/includes/LinkFilterTest.php
new file mode 100644 (file)
index 0000000..41207b7
--- /dev/null
@@ -0,0 +1,274 @@
+<?php
+
+/**
+ * @group Database
+ */
+class LinkFilterTest extends MediaWikiLangTestCase {
+
+       protected function setUp() {
+
+               parent::setUp();
+
+               $this->setMwGlobals( 'wgUrlProtocols', array(
+                       'http://',
+                       'https://',
+                       'ftp://',
+                       'irc://',
+                       'ircs://',
+                       'gopher://',
+                       'telnet://',
+                       'nntp://',
+                       'worldwind://',
+                       'mailto:',
+                       'news:',
+                       'svn://',
+                       'git://',
+                       'mms://',
+                       '//',
+               ) );
+
+       }
+
+       /**
+        * createRegexFromLike($like)
+        *
+        * Takes an array as created by LinkFilter::makeLikeArray() and creates a regex from it
+        *
+        * @param Array $like Array as created by LinkFilter::makeLikeArray()
+        * @return string Regex
+        */
+       function createRegexFromLIKE( $like ) {
+
+               $regex = '!^';
+
+               foreach ( $like as $item ) {
+
+                       if ( $item instanceof LikeMatch ) {
+                               if ( $item->toString() == '%' ) {
+                                       $regex .= '.*';
+                               } elseif ( $item->toString() == '_' ) {
+                                       $regex .= '.';
+                               }
+                       } else {
+                               $regex .= preg_quote( $item, '!' );
+                       }
+
+               }
+
+               $regex .= '$!';
+
+               return $regex;
+
+       }
+
+       /**
+        * provideValidPatterns()
+        *
+        * @return array
+        */
+       public static function provideValidPatterns() {
+
+               return array(
+                       // Protocol, Search pattern, URL which matches the pattern
+                       array( 'http://', '*.test.com', 'http://www.test.com' ),
+                       array( 'http://', 'test.com:8080/dir/file', 'http://name:pass@test.com:8080/dir/file' ),
+                       array( 'https://', '*.com', 'https://s.s.test..com:88/dir/file?a=1&b=2' ),
+                       array( 'https://', '*.com', 'https://name:pass@secure.com/index.html' ),
+                       array( 'http://', 'name:pass@test.com', 'http://test.com' ),
+                       array( 'http://', 'test.com', 'http://name:pass@test.com' ),
+                       array( 'http://', '*.test.com', 'http://a.b.c.test.com/dir/dir/file?a=6'),
+                       array( null, 'http://*.test.com', 'http://www.test.com' ),
+                       array( 'mailto:', 'name@mail.test123.com', 'mailto:name@mail.test123.com' ),
+                       array( '',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg'
+                       ),
+                       array( '', 'http://name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( '', 'http://name:wrongpass@*.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( 'http://', 'name:pass@*.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( '', 'http://name:pass@www.test.com:12345',
+                               'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg' ),
+                       array( 'ftp://', 'user:pass@ftp.test.com:1233/home/user/file;type=efw',
+                               'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
+                       array( null, 'ftp://otheruser:otherpass@ftp.test.com:1233/home/user/file;type=',
+                               'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
+                       array( null, 'ftp://@ftp.test.com:1233/home/user/file;type=',
+                               'ftp://user:pass@ftp.test.com:1233/home/user/file;type=efw' ),
+                       array( null, 'ftp://ftp.test.com/',
+                               'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ),
+                       array( null, 'ftp://ftp.test.com/',
+                               'ftp://user:pass@ftp.test.com/home/user/file;type=efw' ),
+                       array( null, 'ftp://*.test.com:222/',
+                               'ftp://user:pass@ftp.test.com:222/home' ),
+                       array( 'irc://', '*.myserver:6667/', 'irc://test.myserver:6667/' ),
+                       array( 'irc://', 'name:pass@*.myserver/', 'irc://test.myserver:6667/' ),
+                       array( 'irc://', 'name:pass@*.myserver/', 'irc://other:@test.myserver:6667/' ),
+                       array( '', 'irc://test/name,string,abc?msg=t', 'irc://test/name,string,abc?msg=test' ),
+                       array( '', 'https://gerrit.wikimedia.org/r/#/q/status:open,n,z',
+                               'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ),
+                       array( '', 'https://gerrit.wikimedia.org',
+                               'https://gerrit.wikimedia.org/r/#/q/status:open,n,z' ),
+                       array( 'mailto:', '*.test.com', 'mailto:name@pop3.test.com' ),
+                       array( 'mailto:', 'test.com', 'mailto:name@test.com' ),
+                       array( 'news:', 'test.1234afc@news.test.com', 'news:test.1234afc@news.test.com' ),
+                       array( 'news:', '*.test.com', 'news:test.1234afc@news.test.com' ),
+                       array( '', 'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com',
+                               'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ),
+                       array( '', 'news:*.aol.com',
+                               'news:4df8kh$iagfewewf(at)newsbf02aaa.news.aol.com' ),
+                       array( '', 'git://github.com/prwef/abc-def.git', 'git://github.com/prwef/abc-def.git' ),
+                       array( 'git://', 'github.com/', 'git://github.com/prwef/abc-def.git' ),
+                       array( 'git://', '*.github.com/', 'git://a.b.c.d.e.f.github.com/prwef/abc-def.git' ),
+                       array( '', 'gopher://*.test.com/', 'gopher://gopher.test.com/0/v2/vstat'),
+                       array( 'telnet://', '*.test.com', 'telnet://shell.test.com/~home/'),
+
+                       //
+                       // The following only work in PHP >= 5.3.7, due to a bug in parse_url which eats
+                       // the path from the url (https://bugs.php.net/bug.php?id=54180)
+                       //
+                       // array( '', 'http://test.com', 'http://test.com/index?arg=1' ),
+                       // array( 'http://', '*.test.com', 'http://www.test.com/index?arg=1' ),
+                       // array( '' ,
+                       //    'http://xx23124:__ffdfdef__@www.test.com:12345/dir' ,
+                       //    'http://name:pass@www.test.com:12345/dir/dir/file.xyz.php#__se__?arg1=_&arg2[]=4rtg'
+                       // ),
+                       //
+
+                       //
+                       // Tests for false positives
+                       //
+                       array( 'http://', 'test.com', 'http://www.test.com', false ),
+                       array( 'http://', 'www1.test.com', 'http://www.test.com', false ),
+                       array( 'http://', '*.test.com', 'http://www.test.t.com', false ),
+                       array( '', 'http://test.com:8080', 'http://www.test.com:8080', false ),
+                       array( '', 'https://test.com', 'http://test.com', false ),
+                       array( '', 'http://test.com', 'https://test.com', false ),
+                       array( 'http://', 'http://test.com', 'http://test.com', false ),
+                       array( null, 'http://www.test.com', 'http://www.test.com:80', false ),
+                       array( null, 'http://www.test.com:80', 'http://www.test.com', false ),
+                       array( null, 'http://*.test.com:80', 'http://www.test.com', false ),
+                       array( '', 'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z',
+                               'https://gerrit.wikimedia.org/r/#/q/status:open,n,z', false ),
+                       array( '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
+                               'https://gerrit.wikimedia.org/r/#/XXX/status:open,n,z', false ),
+                       array( 'mailto:', '@test.com', '@abc.test.com', false ),
+                       array( 'mailto:', 'mail@test.com', 'mail2@test.com', false ),
+                       array( '', 'mailto:mail@test.com', 'mail2@test.com', false ),
+                       array( '', 'mailto:@test.com', '@abc.test.com', false ),
+                       array( 'ftp://', '*.co', 'ftp://www.co.uk', false ),
+                       array( 'ftp://', '*.co', 'ftp://www.co.m', false ),
+                       array( 'ftp://', '*.co/dir/', 'ftp://www.co/dir2/', false ),
+                       array( 'ftp://', 'www.co/dir/', 'ftp://www.co/dir2/', false ),
+                       array( 'ftp://', 'test.com/dir/', 'ftp://test.com/', false ),
+                       array( '', 'http://test.com:8080/dir/', 'http://test.com:808/dir/', false ),
+                       array( '', 'http://test.com/dir/index.html', 'http://test.com/dir/index.php', false ),
+
+                       //
+                       // These are false positives too and ideally shouldn't match, but that
+                       // would require using regexes and RLIKE instead of LIKE
+                       //
+                       // array( null, 'http://*.test.com', 'http://www.test.com:80', false ),
+                       // array( '', 'https://*.wikimedia.org/r/#/q/status:open,n,z',
+                       //      'https://gerrit.wikimedia.org/XXX/r/#/q/status:open,n,z', false ),
+               );
+
+       }
+
+       /**
+        * testMakeLikeArrayWithValidPatterns()
+        *
+        * Tests whether the LIKE clause produced by LinkFilter::makeLikeArray($pattern, $protocol)
+        * will find one of the URL indexes produced by wfMakeUrlIndexes($url)
+        *
+        * @dataProvider provideValidPatterns
+        *
+        * @param String $protocol Protocol, e.g. 'http://' or 'mailto:'
+        * @param String $pattern Search pattern to feed to LinkFilter::makeLikeArray
+        * @param String $url URL to feed to wfMakeUrlIndexes
+        * @param bool $shouldBeFound Should the URL be found? (defaults true)
+        */
+       function testMakeLikeArrayWithValidPatterns( $protocol, $pattern, $url, $shouldBeFound = true ) {
+
+               $indexes = wfMakeUrlIndexes( $url );
+               $likeArray = LinkFilter::makeLikeArray( $pattern, $protocol );
+
+               $this->assertTrue( $likeArray !== false,
+                       "LinkFilter::makeLikeArray('$pattern', '$protocol') returned false on a valid pattern"
+               );
+
+               $regex = $this->createRegexFromLIKE( $likeArray );
+               $debugmsg = "Regex: '" . $regex . "'\n";
+               $debugmsg .= count( $indexes ) . " index(es) created by wfMakeUrlIndexes():\n";
+
+               $matches = 0;
+
+               foreach ( $indexes as $index ) {
+                       $matches += preg_match( $regex, $index );
+                       $debugmsg .= "\t'$index'\n";
+               }
+
+               if ( $shouldBeFound ) {
+                       $this->assertTrue(
+                               $matches > 0,
+                               "Search pattern '$protocol$pattern' does not find url '$url' \n$debugmsg"
+                       );
+               } else {
+                       $this->assertFalse(
+                               $matches > 0,
+                               "Search pattern '$protocol$pattern' should not find url '$url' \n$debugmsg"
+                       );
+               }
+
+       }
+
+       /**
+        * provideInvalidPatterns()
+        *
+        * @return array
+        */
+       public static function provideInvalidPatterns() {
+
+               return array(
+                       array( '' ),
+                       array( '*' ),
+                       array( 'http://*' ),
+                       array( 'http://*/' ),
+                       array( 'http://*/dir/file' ),
+                       array( 'test.*.com' ),
+                       array( 'http://test.*.com' ),
+                       array( 'test.*.com' ),
+                       array( 'http://*.test.*' ),
+                       array( 'http://*test.com' ),
+                       array( 'https://*' ),
+                       array( '*://test.com'),
+                       array( 'mailto:name:pass@t*est.com' ),
+                       array( 'http://*:888/'),
+                       array( '*http://'),
+                       array( 'test.com/*/index' ),
+                       array( 'test.com/dir/index?arg=*' ),
+               );
+
+       }
+
+       /**
+        * testMakeLikeArrayWithInvalidPatterns()
+        *
+        * Tests whether LinkFilter::makeLikeArray($pattern) will reject invalid search patterns
+        *
+        * @dataProvider provideInvalidPatterns
+        *
+        * @param $pattern string: Invalid search pattern
+        */
+       function testMakeLikeArrayWithInvalidPatterns( $pattern ) {
+
+               $this->assertFalse(
+                       LinkFilter::makeLikeArray( $pattern ),
+                       "'$pattern' is not a valid pattern and should be rejected"
+               );
+
+       }
+
+}
index 694f4ae..d210ce5 100644 (file)
@@ -21,7 +21,7 @@ class LocalFileTest extends MediaWikiTestCase {
                        'transformVia404' => false,
                        'backend' => new FSFileBackend( array(
                                'name' => 'local-backend',
-                               'lockManager' => 'fsLockManager',
+                               'wikiId' => wfWikiId(),
                                'containerPaths' => array(
                                        'cont1' => "/testdir/local-backend/tempimages/cont1",
                                        'cont2' => "/testdir/local-backend/tempimages/cont2"
index 3dec2da..5841bb6 100644 (file)
@@ -81,9 +81,9 @@ class PreferencesTest extends MediaWikiTestCase {
        protected function prefsFor( $user_key ) {
                $preferences = array();
                Preferences::profilePreferences(
-                       $this->prefUsers[$user_key]
-                       , $this->context
-                       $preferences
+                       $this->prefUsers[$user_key],
+                       $this->context,
+                       $preferences
                );
 
                return $preferences;
diff --git a/tests/phpunit/includes/ResourceLoaderModuleTest.php b/tests/phpunit/includes/ResourceLoaderModuleTest.php
new file mode 100644 (file)
index 0000000..4643319
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+
+class ResourceLoaderModuleTest extends MediaWikiTestCase {
+
+       protected static function getResourceLoaderContext() {
+               $resourceLoader = new ResourceLoader();
+               $request = new FauxRequest( array(
+                               'debug' => 'false',
+                               'lang' => 'en',
+                               'modules' => 'startup',
+                               'only' => 'scripts',
+                               'skin' => 'vector',
+               ) );
+               return new ResourceLoaderContext( $resourceLoader, $request );
+       }
+
+       /**
+        * @covers ResourceLoaderModule::getDefinitionSummary
+        * @covers ResourceLoaderFileModule::getDefinitionSummary
+        */
+       public function testDefinitionSummary() {
+               $context = self::getResourceLoaderContext();
+
+               $baseParams = array(
+                       'scripts' => array( 'foo.js', 'bar.js' ),
+                       'dependencies' => array( 'jquery', 'mediawiki' ),
+                       'messages' => array( 'hello', 'world' ),
+               );
+
+               $module = new ResourceLoaderFileModule( $baseParams );
+
+               $jsonSummary = json_encode( $module->getDefinitionSummary( $context ) );
+
+               // Exactly the same
+               $module = new ResourceLoaderFileModule( $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Instance is insignificant'
+               );
+
+               // Re-order dependencies
+               $module = new ResourceLoaderFileModule( array(
+                       'dependencies' => array( 'mediawiki', 'jquery' ),
+               ) + $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of dependencies is insignificant'
+               );
+
+               // Re-order messages
+               $module = new ResourceLoaderFileModule( array(
+                       'messages' => array( 'world', 'hello' ),
+               ) + $baseParams );
+
+               $this->assertEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of messages is insignificant'
+               );
+
+               // Re-order scripts
+               $module = new ResourceLoaderFileModule( array(
+                       'scripts' => array( 'bar.js', 'foo.js' ),
+               ) + $baseParams );
+
+               $this->assertNotEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Order of scripts is significant'
+               );
+
+               // Subclass
+               $module = new ResourceLoaderFileModuleTestModule( $baseParams );
+
+               $this->assertNotEquals(
+                       $jsonSummary,
+                       json_encode( $module->getDefinitionSummary( $context ) ),
+                       'Class is significant'
+               );
+       }
+}
+
+class ResourceLoaderFileModuleTestModule extends ResourceLoaderFileModule {}
index 7e275a5..f69fad4 100644 (file)
@@ -297,17 +297,6 @@ class RevisionStorageTest extends MediaWikiTestCase {
                $this->assertEquals( 'hello hello.', $rev->getContent()->getNativeData() );
        }
 
-       /**
-        * @covers Revision::revText
-        */
-       public function testRevText() {
-               $this->hideDeprecated( 'Revision::revText' );
-               $orig = $this->makeRevision( array( 'text' => 'hello hello rev.' ) );
-               $rev = Revision::newFromId( $orig->getId() );
-
-               $this->assertEquals( 'hello hello rev.', $rev->revText() );
-       }
-
        /**
         * @covers Revision::getRawText
         */
@@ -474,6 +463,7 @@ class RevisionStorageTest extends MediaWikiTestCase {
                // create revisions -----------------------------
                $page = WikiPage::factory( Title::newFromText(
                        'RevisionStorageTest_testUserWasLastToEdit', $ns ) );
+               $page->insertOn( $dbw );
 
                # zero
                $revisions[0] = new Revision( array(
index 65057a5..0ee335a 100644 (file)
@@ -102,8 +102,7 @@ class SpecialPageTest extends MediaWikiTestCase {
        public function testRequireLoginNotAnon() {
                $specialPage = new SpecialPage( 'Watchlist', 'viewmywatchlist' );
 
-               $user = User::newFromId( 0 );
-               $user->setId( 1 );
+               $user = User::newFromName( "UTSysop" );
                $specialPage->getContext()->setUser( $user );
 
                $specialPage->requireLogin();
index 8ed2189..a3d68b6 100644 (file)
@@ -253,8 +253,8 @@ class StatusTest extends MediaWikiLangTestCase {
         *       this can not really be done now due to use of wfMessage()->plain()
         *       It is possible to mock such methods but only if namespaces are used
         */
-       public function testGetWikiText( Status $status, $expected ) {
-               $this->assertEquals( $expected, $status->getWikiText() );
+       public function testGetWikiText( Status $status, $wikitext, $html ) {
+               $this->assertEquals( $wikitext, $status->getWikiText() );
        }
 
        /**
@@ -264,8 +264,8 @@ class StatusTest extends MediaWikiLangTestCase {
         *       this can not really be done now due to use of $this->getWikiText using wfMessage()->plain()
         *       It is possible to mock such methods but only if namespaces are used
         */
-       public function testGetHtml( Status $status, $expected ) {
-               $this->assertEquals( $expected, $status->getHTML() );
+       public function testGetHtml( Status $status, $wikitext, $html ) {
+               $this->assertEquals( $html, $status->getHTML() );
        }
 
        /**
@@ -279,6 +279,7 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases[ 'GoodStatus' ] = array(
                        new Status(),
                        "Internal error: Status::getWikiText called for a good result, this is incorrect\n",
+                       "<p>Internal error: Status::getWikiText called for a good result, this is incorrect\n</p>",
                );
 
                $status = new Status();
@@ -286,6 +287,7 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases[ 'GoodButNoError' ] = array(
                        $status,
                        "Internal error: Status::getWikiText: Invalid result object: no error text but not OK\n",
+                       "<p>Internal error: Status::getWikiText: Invalid result object: no error text but not OK\n</p>",
                );
 
                $status = new Status();
@@ -293,6 +295,7 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases[ '1StringWarning' ] = array(
                        $status,
                        "<fooBar!>",
+                       "<p>&lt;fooBar!&gt;\n</p>",
                );
 
                $status = new Status();
@@ -301,6 +304,7 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases[ '2StringWarnings' ] = array(
                        $status,
                        "* <fooBar!>\n* <fooBar2!>\n",
+                       "<ul>\n<li> &lt;fooBar!&gt;\n</li>\n<li> &lt;fooBar2!&gt;\n</li>\n</ul>\n",
                );
 
                $status = new Status();
@@ -308,6 +312,7 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases[ '1MessageWarning' ] = array(
                        $status,
                        "<fooBar!>",
+                       "<p>&lt;fooBar!&gt;\n</p>",
                );
 
                $status = new Status();
@@ -316,6 +321,7 @@ class StatusTest extends MediaWikiLangTestCase {
                $testCases[ '2MessageWarnings' ] = array(
                        $status,
                        "* <fooBar!>\n* <fooBar2!>\n",
+                       "<ul>\n<li> &lt;fooBar!&gt;\n</li>\n<li> &lt;fooBar2!&gt;\n</li>\n</ul>\n",
                );
 
                return $testCases;
@@ -413,7 +419,7 @@ class StatusTest extends MediaWikiLangTestCase {
         */
        public function testGetErrorMessage() {
                $method = new ReflectionMethod( 'Status', 'getErrorMessage' );
-               $method->setAccessible(true);
+               $method->setAccessible( true );
                $status = new Status();
                $key = 'foo';
                $params = array( 'bar' );
@@ -430,7 +436,7 @@ class StatusTest extends MediaWikiLangTestCase {
         */
        public function testGetErrorMessageArray() {
                $method = new ReflectionMethod( 'Status', 'getErrorMessageArray' );
-               $method->setAccessible(true);
+               $method->setAccessible( true );
                $status = new Status();
                $key = 'foo';
                $params = array( 'bar' );
@@ -446,7 +452,7 @@ class StatusTest extends MediaWikiLangTestCase {
 
                $this->assertInternalType( 'array', $messageArray );
                $this->assertCount( 2, $messageArray );
-               foreach( $messageArray as $message ) {
+               foreach ( $messageArray as $message ) {
                        $this->assertInstanceOf( 'Message', $message );
                        $this->assertEquals( $key, $message->getKey() );
                        $this->assertEquals( $params, $message->getParams() );
index 23e6503..7d18206 100644 (file)
@@ -45,14 +45,14 @@ class TestUser {
                $this->user->setPassword( $this->password );
                $this->user->setEmail( $this->email );
                $this->user->setRealName( $this->realname );
-               // remove all groups, replace with any groups specified
-               foreach ( $this->user->getGroups() as $group ) {
-                       $this->user->removeGroup( $group );
+
+               // Adjust groups by adding any missing ones and removing any extras
+               $currentGroups = $this->user->getGroups();
+               foreach ( array_diff( $this->groups, $currentGroups ) as $group ) {
+                       $this->user->addGroup( $group );
                }
-               if ( count( $this->groups ) ) {
-                       foreach ( $this->groups as $group ) {
-                               $this->user->addGroup( $group );
-                       }
+               foreach ( array_diff( $currentGroups, $this->groups ) as $group ) {
+                       $this->user->removeGroup( $group );
                }
                $this->user->saveSettings();
        }
index 6bfe545..54e6199 100644 (file)
@@ -66,6 +66,7 @@ class TitleTest extends MediaWikiTestCase {
                // Invalid
                foreach ( array(
                        '',
+                       ':',
                        '__  __',
                        '  __  ',
                        // Bad characters forbidden regardless of wgLegalTitleChars
@@ -103,7 +104,6 @@ class TitleTest extends MediaWikiTestCase {
                        'A ~~~~~ Timestamp',
                        str_repeat( 'x', 256 ),
                        // Namespace prefix without actual title
-                       // ':', // bug 54044
                        'Talk:',
                        'Category: ',
                        'Category: #bar'
index bfb75ef..a05c4fa 100644 (file)
@@ -26,7 +26,7 @@ class ApiBaseTest extends ApiTestCase {
        public function testRequireOnlyOneParameterZero() {
                $mock = new MockApi();
                $mock->requireOnlyOneParameter(
-                       array( "filename" => "foo.txt","enablechunks" => 0 ),
+                       array( "filename" => "foo.txt", "enablechunks" => 0 ),
                        "filename", "enablechunks"
                );
        }
diff --git a/tests/phpunit/includes/api/ApiQueryAllPagesTest.php b/tests/phpunit/includes/api/ApiQueryAllPagesTest.php
new file mode 100644 (file)
index 0000000..bc08afe
--- /dev/null
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ * @group medium
+ */
+class ApiQueryAllPagesTest extends ApiTestCase {
+       protected function setUp() {
+               parent::setUp();
+               $this->doLogin();
+       }
+
+       function testBug25702() {
+               $title = Title::newFromText( 'Category:Template:xyz' );
+               $page = WikiPage::factory( $title );
+               $page->doEdit( 'Some text', 'inserting content' );
+
+               $result = $this->doApiRequest( array(
+                       'action' => 'query',
+                       'list' => 'allpages',
+                       'apnamespace' => NS_CATEGORY,
+                       'apprefix' => 'Template:x' ) );
+
+               $this->assertArrayHasKey( 'query', $result[0] );
+               $this->assertArrayHasKey( 'allpages', $result[0]['query'] );
+               $this->assertNotEquals( 0, count( $result[0]['query']['allpages'] ),
+                       'allpages list does not contain page Category:Template:xyz' );
+       }
+}
index 028ea9f..e49c6c0 100644 (file)
@@ -42,6 +42,7 @@ class ApiWatchTest extends ApiTestCase {
 
                $data = $this->doApiRequest( array(
                        'action' => 'query',
+                       'wllimit' => 'max',
                        'list' => 'watchlist' ) );
 
                if ( isset( $data[0]['query']['watchlist'] ) ) {
@@ -60,6 +61,14 @@ class ApiWatchTest extends ApiTestCase {
                        'list' => 'watchlist' ), $data );
                $this->assertArrayHasKey( 'query', $data[0] );
                $this->assertArrayHasKey( 'watchlist', $data[0]['query'] );
+               foreach ( $data[0]['query']['watchlist'] as $index => $item ) {
+                       // Previous tests may insert an invalid title
+                       // like ":ApiEditPageTest testNonTextEdit", which
+                       // can't be cleared.
+                       if ( strpos( $item['title'], ':' ) === 0 ) {
+                               unset( $data[0]['query']['watchlist'][$index] );
+                       }
+               }
                $this->assertEquals( 0, count( $data[0]['query']['watchlist'] ) );
 
                return $data;
diff --git a/tests/phpunit/includes/api/MockApiQueryBase.php b/tests/phpunit/includes/api/MockApiQueryBase.php
new file mode 100644 (file)
index 0000000..4bede51
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+class MockApiQueryBase extends ApiQueryBase {
+       public function execute() {
+       }
+
+       public function getVersion() {
+       }
+
+       public function __construct() {
+       }
+}
index 9c5b3ca..e486c4f 100644 (file)
@@ -350,52 +350,4 @@ class ApiQueryBasicTest extends ApiQueryTestBase {
                        )
                ) );
        }
-
-       /**
-        * Recursively merges the expected values in the $item into the $all
-        */
-       private function mergeExpected( &$all, $item ) {
-               foreach ( $item as $k => $v ) {
-                       if ( array_key_exists( $k, $all ) ) {
-                               if ( is_array( $all[$k] ) ) {
-                                       $this->mergeExpected( $all[$k], $v );
-                               } else {
-                                       $this->assertEquals( $all[$k], $v );
-                               }
-                       } else {
-                               $all[$k] = $v;
-                       }
-               }
-       }
-
-       /**
-        * Recursively compare arrays, ignoring mismatches in numeric key and pageids.
-        *
-        * @param $expectedArray array expected values
-        * @param $resultArray array returned values
-        */
-       private function assertQueryResults( $expectedArray, $resultArray ) {
-               reset( $expectedArray );
-               reset( $resultArray );
-               while ( true ) {
-                       $expectedValue = each( $expectedArray );
-                       $resultValue = each( $resultArray );
-                       // If either of the arrays is shorter, abort. If both are done, success.
-                       $this->assertEquals( (bool)$expectedValue, (bool)$resultValue );
-                       if ( !$expectedValue ) {
-                               break; // done
-                       }
-                       // continue only if keys are identical or both keys are numeric
-                       $this->assertTrue( $expectedValue['key'] === $resultValue['key'] || ( is_numeric( $expectedValue['key'] ) && is_numeric( $resultValue['key'] ) ) );
-                       // don't compare pageids
-                       if ( $expectedValue['key'] !== 'pageid' ) {
-                               // If values are arrays, compare recursively, otherwise compare with ===
-                               if ( is_array( $expectedValue['value'] ) && is_array( $resultValue['value'] ) ) {
-                                       $this->assertQueryResults( $expectedValue['value'], $resultValue['value'] );
-                               } else {
-                                       $this->assertEquals( $expectedValue['value'], $resultValue['value'] );
-                               }
-                       }
-               }
-       }
 }
index 54f3598..1b5a05e 100644 (file)
@@ -152,7 +152,8 @@ abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
        private static function GetItems( $q, $moduleName, $name, &$print ) {
                if ( isset( $q[$moduleName] ) ) {
                        $print[] = "*$name/[" . implode( ',',
-                               array_map( function ( $v ) {
+                               array_map(
+                                       function ( $v ) {
                                                return $v['title'];
                                        },
                                        $q[$moduleName] ) ) . ']';
@@ -203,7 +204,7 @@ abstract class ApiQueryContinueTestBase extends ApiQueryTestBase {
                        if ( $numericIds ) {
                                ksort( $results, SORT_NUMERIC );
                        } elseif ( $sort !== null && $sort !== false ) {
-                               uasort( $results, $sort );
+                               usort( $results, $sort );
                        }
                }
        }
index 2ec5fe3..ea0b323 100644 (file)
@@ -7,10 +7,32 @@
  * @covers ApiQuery
  */
 class ApiQueryTest extends ApiTestCase {
+       /**
+        * @var array Storage for $wgHooks
+        */
+       protected $hooks;
 
        protected function setUp() {
+               global $wgHooks;
+
                parent::setUp();
                $this->doLogin();
+
+               // Setup en: as interwiki prefix
+               $this->hooks = $wgHooks;
+               $wgHooks['InterwikiLoadPrefix'][] = function ( $prefix, &$data ) {
+                       if ( $prefix == 'apiquerytestiw' ) {
+                               $data = array( 'iw_url' => 'wikipedia' );
+                       }
+                       return false;
+               };
+       }
+
+       protected function tearDown() {
+               global $wgHooks;
+               $wgHooks = $this->hooks;
+
+               parent::tearDown();
        }
 
        public function testTitlesGetNormalized() {
@@ -64,4 +86,38 @@ class ApiQueryTest extends ApiTestCase {
                $this->assertArrayHasKey( 'missing', $data[0]['query']['pages'][-2] );
                $this->assertArrayHasKey( 'invalid', $data[0]['query']['pages'][-1] );
        }
+
+       /**
+        * Test the ApiBase::titlePartToKey function
+        *
+        * @param string $titlePart
+        * @param int $namespace
+        * @param string $expected
+        * @param string $description
+        * @dataProvider provideTestTitlePartToKey
+        */
+       function testTitlePartToKey( $titlePart, $namespace, $expected, $expectException ) {
+               $api = new MockApiQueryBase();
+               $exceptionCaught = false;
+               try {
+                       $this->assertEquals( $expected, $api->titlePartToKey( $titlePart, $namespace ) );
+               } catch ( UsageException $e ) {
+                       $exceptionCaught = true;
+               }
+               $this->assertEquals( $expectException, $exceptionCaught,
+                       'UsageException thrown by titlePartToKey' );
+       }
+
+       function provideTestTitlePartToKey() {
+               return array(
+                       array( 'a  b  c', NS_MAIN, 'A_b_c', false ),
+                       array( 'x', NS_MAIN, 'X', false ),
+                       array( 'y ', NS_MAIN, 'Y_', false ),
+                       array( 'template:foo', NS_CATEGORY, 'Template:foo', false ),
+                       array( 'apiquerytestiw:foo', NS_CATEGORY, 'Apiquerytestiw:foo', false ),
+                       array( "\xF7", NS_MAIN, null, true ),
+                       array( 'template:foo', NS_MAIN, null, true ),
+                       array( 'apiquerytestiw:foo', NS_MAIN, null, true ),
+               );
+       }
 }
index 9cfab41..a657459 100644 (file)
@@ -102,47 +102,43 @@ STR;
 
        protected function assertResult( $exp, $result, $message = '' ) {
                try {
-                       $this->assertResultRecursive( $exp, $result );
-               } catch ( Exception $e ) {
+                       $exp = self::sanitizeResultArray( $exp );
+                       $result = self::sanitizeResultArray( $result );
+                       $this->assertEquals( $exp, $result );
+               } catch ( PHPUnit_Framework_ExpectationFailedException $e ) {
                        if ( is_array( $message ) ) {
                                $message = http_build_query( $message );
                        }
-                       print "\nRequest: $message\n";
-                       print "\nExpected:\n";
-                       print_r( $exp );
-                       print "\nResult:\n";
-                       print_r( $result );
-                       throw $e; // rethrow it
+                       throw new PHPUnit_Framework_ExpectationFailedException(
+                               $e->getMessage() . "\nRequest: $message",
+                               new PHPUnit_Framework_ComparisonFailure(
+                                       $exp,
+                                       $result,
+                                       print_r( $exp, true ),
+                                       print_r( $result, true ),
+                                       false,
+                                       $e->getComparisonFailure()->getMessage() . "\nRequest: $message"
+                               )
+                       );
                }
        }
 
        /**
-        * Recursively compare arrays, ignoring mismatches in numeric key and pageids.
-        * @param $expected array expected values
-        * @param $result array returned values
+        * Recursively ksorts a result array and removes any 'pageid' keys.
+        * @param array $result
+        * @return array
         */
-       private function assertResultRecursive( $expected, $result ) {
-               reset( $expected );
-               reset( $result );
-               while ( true ) {
-                       $e = each( $expected );
-                       $r = each( $result );
-                       // If either of the arrays is shorter, abort. If both are done, success.
-                       $this->assertEquals( (bool)$e, (bool)$r );
-                       if ( !$e ) {
-                               break; // done
-                       }
-                       // continue only if keys are identical or both keys are numeric
-                       $this->assertTrue( $e['key'] === $r['key'] || ( is_numeric( $e['key'] ) && is_numeric( $r['key'] ) ) );
-                       // don't compare pageids
-                       if ( $e['key'] !== 'pageid' ) {
-                               // If values are arrays, compare recursively, otherwise compare with ===
-                               if ( is_array( $e['value'] ) && is_array( $r['value'] ) ) {
-                                       $this->assertResultRecursive( $e['value'], $r['value'] );
-                               } else {
-                                       $this->assertEquals( $e['value'], $r['value'] );
-                               }
+       private static function sanitizeResultArray( $result ) {
+               unset( $result['pageid'] );
+               foreach ( $result as $key => $value ) {
+                       if ( is_array( $value ) ) {
+                               $result[$key] = self::sanitizeResultArray( $value );
                        }
                }
+
+               // Sort the result by keys, then take advantage of how array_merge will
+               // renumber numeric keys while leaving others alone.
+               ksort( $result );
+               return array_merge( $result );
        }
 }
index 16dac94..516ce3a 100644 (file)
@@ -44,6 +44,7 @@ class FakeDatabaseMysqlBase extends DatabaseMysqlBase {
        protected function mysqlNumRows( $res ) {}
        protected function mysqlNumFields( $res ) {}
        protected function mysqlFieldName( $res, $n ) {}
+       protected function mysqlFieldType( $res, $n ) {}
        protected function mysqlDataSeek( $res, $row ) {}
        protected function mysqlError( $conn = null ) {}
        protected function mysqlFetchField( $res, $n ) {}
diff --git a/tests/phpunit/includes/db/LBFactoryTest.php b/tests/phpunit/includes/db/LBFactoryTest.php
new file mode 100644 (file)
index 0000000..4c59f47
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Holds tests for LBFactory abstract MediaWiki class.
+ *
+ * @section LICENSE
+ * 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
+ *
+ * @group Database
+ * @file
+ * @author Antoine Musso
+ * @copyright © 2013 Antoine Musso
+ * @copyright © 2013 Wikimedia Foundation Inc.
+ */
+class LBFactoryTest extends MediaWikiTestCase {
+
+       /**
+        * @dataProvider getLBFactoryClassProvider
+        */
+       public function testGetLBFactoryClass( $expected, $deprecated ) {
+               $mockDB = $this->getMockBuilder( 'DatabaseMysql' )
+                       ->disableOriginalConstructor()
+                       ->getMock();
+
+               $config = array(
+                       'class'          => $deprecated,
+                       'connection'     => $mockDB,
+                       # Various other parameters required:
+                       'sectionsByDB'   => array(),
+                       'sectionLoads'   => array(),
+                       'serverTemplate' => array(),
+               );
+
+               $this->hideDeprecated( '$wgLBFactoryConf must be updated. See RELEASE-NOTES for details' );
+               $result = LBFactory::getLBFactoryClass( $config );
+
+               $this->assertEquals( $expected, $result );
+       }
+
+       public function getLBFactoryClassProvider() {
+               return array(
+                       # Format: new class, old class
+                       array( 'LBFactorySimple', 'LBFactory_Simple' ),
+                       array( 'LBFactorySingle', 'LBFactory_Single' ),
+                       array( 'LBFactoryMulti', 'LBFactory_Multi' ),
+                       array( 'LBFactoryFake', 'LBFactory_Fake' ),
+               );
+       }
+}
index fcfa724..cee2da2 100644 (file)
@@ -37,6 +37,10 @@ class FileBackendTest extends MediaWikiTestCase {
                                $useConfig['shardViaHashLevels'] = array( // test sharding
                                        'unittest-cont1' => array( 'levels' => 1, 'base' => 16, 'repeat' => 1 )
                                );
+                               if ( isset( $useConfig['fileJournal'] ) ) {
+                                       $useConfig['fileJournal'] = FileJournal::factory( $useConfig['fileJournal'], $name );
+                               }
+                               $useConfig['lockManager'] = LockManagerGroup::singleton()->get( $useConfig['lockManager'] );
                                $class = $useConfig['class'];
                                self::$backendToUse = new $class( $useConfig );
                                $this->singleBackend = self::$backendToUse;
@@ -44,9 +48,8 @@ class FileBackendTest extends MediaWikiTestCase {
                } else {
                        $this->singleBackend = new FSFileBackend( array(
                                'name' => 'localtesting',
-                               'lockManager' => 'fsLockManager',
-                               #'parallelize' => 'implicit',
-                               'wikiId' => wfWikiID() . $uniqueId,
+                               'lockManager' => LockManagerGroup::singleton()->get( 'fsLockManager' ),
+                               'wikiId' => wfWikiID(),
                                'containerPaths' => array(
                                        'unittest-cont1' => "{$tmpPrefix}-localtesting-cont1",
                                        'unittest-cont2' => "{$tmpPrefix}-localtesting-cont2" )
@@ -54,14 +57,13 @@ class FileBackendTest extends MediaWikiTestCase {
                }
                $this->multiBackend = new FileBackendMultiWrite( array(
                        'name' => 'localtesting',
-                       'lockManager' => 'fsLockManager',
+                       'lockManager' => LockManagerGroup::singleton()->get( 'fsLockManager' ),
                        'parallelize' => 'implicit',
                        'wikiId' => wfWikiId() . $uniqueId,
                        'backends' => array(
                                array(
                                        'name' => 'localmultitesting1',
                                        'class' => 'FSFileBackend',
-                                       'lockManager' => 'nullLockManager',
                                        'containerPaths' => array(
                                                'unittest-cont1' => "{$tmpPrefix}-localtestingmulti1-cont1",
                                                'unittest-cont2' => "{$tmpPrefix}-localtestingmulti1-cont2" ),
@@ -70,7 +72,6 @@ class FileBackendTest extends MediaWikiTestCase {
                                array(
                                        'name' => 'localmultitesting2',
                                        'class' => 'FSFileBackend',
-                                       'lockManager' => 'nullLockManager',
                                        'containerPaths' => array(
                                                'unittest-cont1' => "{$tmpPrefix}-localtestingmulti2-cont1",
                                                'unittest-cont2' => "{$tmpPrefix}-localtestingmulti2-cont2" ),
@@ -655,9 +656,25 @@ class FileBackendTest extends MediaWikiTestCase {
 
                if ( $withSource ) {
                        $status = $this->backend->doOperation(
-                               array( 'op' => 'create', 'content' => 'blahblah', 'dst' => $source ) );
+                               array( 'op' => 'create', 'content' => 'blahblah', 'dst' => $source,
+                                       'headers' => array( 'Content-Disposition' => 'xxx' ) ) );
                        $this->assertGoodStatus( $status,
                                "Creation of file at $source succeeded ($backendName)." );
+                       if ( $this->backend->hasFeatures( FileBackend::ATTR_HEADERS ) ) {
+                               $attr = $this->backend->getFileXAttributes( array( 'src' => $source ) );
+                               $this->assertHasHeaders( array( 'Content-Disposition' => 'xxx' ), $attr );
+                       }
+
+                       $status = $this->backend->describe( array( 'src' => $source,
+                               'headers' => array( 'Content-Disposition' => '' ) ) ); // remove
+                       $this->assertGoodStatus( $status,
+                               "Removal of header for $source succeeded ($backendName)." );
+
+                       if ( $this->backend->hasFeatures( FileBackend::ATTR_HEADERS ) ) {
+                               $attr = $this->backend->getFileXAttributes( array( 'src' => $source ) );
+                               $this->assertFalse( isset( $attr['headers']['content-disposition'] ),
+                                       "File 'Content-Disposition' header removed." );
+                       }
                }
 
                $status = $this->backend->doOperation( $op );
@@ -668,6 +685,9 @@ class FileBackendTest extends MediaWikiTestCase {
                                "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)." );
+                       if ( $this->backend->hasFeatures( FileBackend::ATTR_HEADERS ) ) {
+                               $this->assertHasHeaders( $op['headers'], $attr );
+                       }
                } else {
                        $this->assertEquals( false, $status->isOK(),
                                "Describe of file at $source failed ($backendName)." );
@@ -676,14 +696,27 @@ class FileBackendTest extends MediaWikiTestCase {
                $this->assertBackendPathsConsistent( array( $source ) );
        }
 
+       private function assertHasHeaders( array $headers, array $attr ) {
+               foreach ( $headers as $n => $v ) {
+                       if ( $n !== '' ) {
+                               $this->assertTrue( isset( $attr['headers'][strtolower( $n )] ),
+                                       "File has '$n' header." );
+                               $this->assertEquals( $v, $attr['headers'][strtolower( $n )],
+                                       "File has '$n' header value." );
+                       } else {
+                               $this->assertFalse( isset( $attr['headers'][strtolower( $n )] ),
+                                       "File does not have '$n' header." );
+                       }
+               }
+       }
+
        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' );
+                       'headers' => array( 'Content-Disposition' => 'inline' ), );
                $cases[] = array(
                        $op, // operation
                        true, // with source
@@ -1115,6 +1148,57 @@ class FileBackendTest extends MediaWikiTestCase {
                return $cases;
        }
 
+       /**
+        * @dataProvider provider_testGetFileStat
+        * @covers FileBackend::streamFile
+        */
+       public function testStreamFile( $path, $content, $alreadyExists ) {
+               $this->backend = $this->singleBackend;
+               $this->tearDownFiles();
+               $this->doTestStreamFile( $path, $content, $alreadyExists );
+               $this->tearDownFiles();
+       }
+
+       private function doTestStreamFile( $path, $content ) {
+               $backendName = $this->backendClass();
+
+               // Test doStreamFile() directly to avoid header madness
+               $class = new ReflectionClass( $this->backend );
+               $method = $class->getMethod( 'doStreamFile' );
+               $method->setAccessible( true );
+
+               if ( $content !== null ) {
+                       $this->prepare( array( 'dir' => dirname( $path ) ) );
+                       $status = $this->create( array( 'dst' => $path, 'content' => $content ) );
+                       $this->assertGoodStatus( $status,
+                               "Creation of file at $path succeeded ($backendName)." );
+
+                       ob_start();
+                       $method->invokeArgs( $this->backend, array( array( 'src' => $path ) ) );
+                       $data = ob_get_contents();
+                       ob_end_clean();
+
+                       $this->assertEquals( $content, $data, "Correct content streamed from '$path'" );
+               } else { // 404 case
+                       ob_start();
+                       $method->invokeArgs( $this->backend, array( array( 'src' => $path ) ) );
+                       $data = ob_get_contents();
+                       ob_end_clean();
+
+                       $this->assertEquals( '', $data, "Correct content streamed from '$path' ($backendName)" );
+               }
+       }
+
+       public static function provider_testStreamFile() {
+               $cases = array();
+
+               $base = self::baseStorePath();
+               $cases[] = array( "$base/unittest-cont1/e/b/z/some_file.txt", "some file contents" );
+               $cases[] = array( "$base/unittest-cont1/e/b/some-other_file.txt", null );
+
+               return $cases;
+       }
+
        /**
         * @dataProvider provider_testGetFileContents
         * @covers FileBackend::getFileContents
@@ -1240,7 +1324,7 @@ class FileBackendTest extends MediaWikiTestCase {
                $cases[] = array(
                        array( "$base/unittest-cont1/e/a/x.txt", "$base/unittest-cont1/e/a/y.txt",
                                "$base/unittest-cont1/e/a/z.txt" ),
-                       array( "contents xx", "contents xy", "contents xz" )
+                       array( "contents xx $", "contents xy 111", "contents xz" )
                );
 
                return $cases;
@@ -1307,7 +1391,7 @@ class FileBackendTest extends MediaWikiTestCase {
                $cases[] = array(
                        array( "$base/unittest-cont1/e/a/x.txt", "$base/unittest-cont1/e/a/y.txt",
                                "$base/unittest-cont1/e/a/z.txt" ),
-                       array( "contents xx", "contents xy", "contents xz" )
+                       array( "contents xx 1111", "contents xy %", "contents xz $" )
                );
 
                return $cases;
@@ -1428,6 +1512,28 @@ class FileBackendTest extends MediaWikiTestCase {
                                "Preparing dir $path failed ($backendName)." );
                }
 
+               $status = $this->backend->secure( array( 'dir' => dirname( $path ) ) );
+               if ( $isOK ) {
+                       $this->assertGoodStatus( $status,
+                               "Securing dir $path succeeded without warnings ($backendName)." );
+                       $this->assertEquals( true, $status->isOK(),
+                               "Securing dir $path succeeded ($backendName)." );
+               } else {
+                       $this->assertEquals( false, $status->isOK(),
+                               "Securing dir $path failed ($backendName)." );
+               }
+
+               $status = $this->backend->publish( array( 'dir' => dirname( $path ) ) );
+               if ( $isOK ) {
+                       $this->assertGoodStatus( $status,
+                               "Publishing dir $path succeeded without warnings ($backendName)." );
+                       $this->assertEquals( true, $status->isOK(),
+                               "Publishing dir $path succeeded ($backendName)." );
+               } else {
+                       $this->assertEquals( false, $status->isOK(),
+                               "Publishing dir $path failed ($backendName)." );
+               }
+
                $status = $this->backend->clean( array( 'dir' => dirname( $path ) ) );
                if ( $isOK ) {
                        $this->assertGoodStatus( $status,
@@ -1497,8 +1603,6 @@ class FileBackendTest extends MediaWikiTestCase {
                }
        }
 
-       // @todo testSecure
-
        /**
         * @covers FileBackend::doOperations
         */
@@ -2273,7 +2377,7 @@ class FileBackendTest extends MediaWikiTestCase {
                                unlink( $file );
                        }
                }
-               $containers = array( 'unittest-cont1', 'unittest-cont2' );
+               $containers = array( 'unittest-cont1', 'unittest-cont2', 'unittest-cont-bad' );
                foreach ( $containers as $container ) {
                        $this->deleteFiles( $container );
                }
index e3a7556..a196dca 100644 (file)
@@ -46,7 +46,7 @@ class FileRepoTest extends MediaWikiTestCase {
                        'name' => 'FileRepoTestRepository',
                        'backend' => new FSFileBackend( array(
                                'name' => 'local-testing',
-                               'lockManager' => 'nullLockManager',
+                               'wikiId' => 'test_wiki',
                                'containerPaths' => array()
                        ) )
                ) );
index b33c1bb..8fb85b6 100644 (file)
@@ -25,13 +25,15 @@ class StoreBatchTest extends MediaWikiTestCase {
                                        $useConfig = $conf;
                                }
                        }
+                       $useConfig['lockManager'] = LockManagerGroup::singleton()->get( $useConfig['lockManager'] );
+                       unset( $useConfig['fileJournal'] );
                        $useConfig['name'] = 'local-testing'; // swap name
                        $class = $useConfig['class'];
                        $backend = new $class( $useConfig );
                } else {
                        $backend = new FSFileBackend( array(
                                'name' => 'local-testing',
-                               'lockManager' => 'nullLockManager',
+                               'wikiId' => wfWikiID(),
                                'containerPaths' => array(
                                        'unittests-public' => "{$tmpPrefix}-public",
                                        'unittests-thumb' => "{$tmpPrefix}-thumb",
diff --git a/tests/phpunit/includes/htmlform/HTMLCheckMatrixTest.php b/tests/phpunit/includes/htmlform/HTMLCheckMatrixTest.php
new file mode 100644 (file)
index 0000000..c41acef
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+
+/**
+ * Unit tests for the HTMLCheckMatrix
+ * @covers HTMLCheckMatrix
+ */
+class HtmlCheckMatrixTest extends MediaWikiTestCase {
+       static private $defaultOptions = array(
+               'rows' => array( 'r1', 'r2' ),
+               'columns' => array( 'c1', 'c2' ),
+               'fieldname' => 'test',
+       );
+
+       public function testPlainInstantiation() {
+               try {
+                       new HTMLCheckMatrix( array() );
+               } catch ( MWException $e ) {
+                       $this->assertInstanceOf( 'HTMLFormFieldRequiredOptionsException', $e );
+                       return;
+               }
+
+               $this->fail( 'Expected MWException indicating missing parameters but none was thrown.' );
+       }
+
+       public function testInstantiationWithMinimumRequiredParameters() {
+               new HTMLCheckMatrix( self::$defaultOptions );
+               $this->assertTrue( true ); // form instantiation must throw exception on failure
+       }
+
+       public function testValidateCallsUserDefinedValidationCallback() {
+               $called = false;
+               $field = new HTMLCheckMatrix( self::$defaultOptions + array(
+                               'validation-callback' => function() use ( &$called ) {
+                                               $called = true;
+                                               return false;
+                                       },
+                       ) );
+               $this->assertEquals( false, $this->validate( $field, array() ) );
+               $this->assertTrue( $called );
+       }
+
+       public function testValidateRequiresArrayInput() {
+               $field = new HTMLCheckMatrix( self::$defaultOptions );
+               $this->assertEquals( false, $this->validate( $field, null ) );
+               $this->assertEquals( false, $this->validate( $field, true ) );
+               $this->assertEquals( false, $this->validate( $field, 'abc' ) );
+               $this->assertEquals( false, $this->validate( $field, new stdClass ) );
+               $this->assertEquals( true, $this->validate( $field, array() ) );
+       }
+
+       public function testValidateAllowsOnlyKnownTags() {
+               $field = new HTMLCheckMatrix( self::$defaultOptions );
+               $this->assertInternalType( 'string', $this->validate( $field, array( 'foo' ) ) );
+       }
+
+       public function testValidateAcceptsPartialTagList() {
+               $field = new HTMLCheckMatrix( self::$defaultOptions );
+               $this->assertTrue( $this->validate( $field, array() ) );
+               $this->assertTrue( $this->validate( $field, array( 'c1-r1' ) ) );
+               $this->assertTrue( $this->validate( $field, array( 'c1-r1', 'c1-r2', 'c2-r1', 'c2-r2' ) ) );
+       }
+
+       /**
+        * This form object actually has no visibility into what happens later on, but essentially
+        * if the data submitted by the user passes validate the following is run:
+        * foreach ( $field->filterDataForSubmit( $data ) as $k => $v ) {
+        *     $user->setOption( $k, $v );
+        * }
+        */
+       public function testValuesForcedOnRemainOn() {
+               $field = new HTMLCheckMatrix( self::$defaultOptions + array(
+                               'force-options-on' => array( 'c2-r1' ),
+                       ) );
+               $expected = array(
+                       'c1-r1' => false,
+                       'c1-r2' => false,
+                       'c2-r1' => true,
+                       'c2-r2' => false,
+               );
+               $this->assertEquals( $expected, $field->filterDataForSubmit( array() ) );
+       }
+
+       public function testValuesForcedOffRemainOff() {
+               $field = new HTMLCheckMatrix( self::$defaultOptions + array(
+                               'force-options-off' => array( 'c1-r2', 'c2-r2' ),
+                       ) );
+               $expected = array(
+                       'c1-r1' => true,
+                       'c1-r2' => false,
+                       'c2-r1' => true,
+                       'c2-r2' => false,
+               );
+               // array_keys on the result simulates submitting all fields checked
+               $this->assertEquals( $expected, $field->filterDataForSubmit( array_keys( $expected ) ) );
+       }
+
+       protected function validate( HTMLFormField $field, $submitted ) {
+               return $field->validate(
+                       $submitted,
+                       array( self::$defaultOptions['fieldname'] => $submitted )
+               );
+       }
+
+}
index 398c5a2..531a954 100644 (file)
@@ -33,13 +33,13 @@ class RefreshLinksPartitionTest extends MediaWikiTestCase {
                $title->getBacklinkCache()->clear();
                $this->assertEquals( 20, $title->getBacklinkCache()->getNumLinks( 'pagelinks' ), 'Correct number of backlinks' );
 
-               $job = new RefreshLinksJob( $title, array( 'recursive' => true, 'table' => 'pagelinks' ) 
+               $job = new RefreshLinksJob( $title, array( 'recursive' => true, 'table' => 'pagelinks' )
                        + Job::newRootJobParams( "refreshlinks:pagelinks:{$title->getPrefixedText()}" ) );
                $extraParams = $job->getRootJobParams();
                $jobs = BacklinkJobUtils::partitionBacklinkJob( $job, 9, 1, array( 'params' => $extraParams ) );
 
                $this->assertEquals( 10, count( $jobs ), 'Correct number of sub-jobs' );
-               $this->assertEquals( $pages[0], current( $jobs[0]->params['pages'] ), 
+               $this->assertEquals( $pages[0], current( $jobs[0]->params['pages'] ),
                        'First job is leaf job with proper title' );
                $this->assertEquals( $pages[8], current( $jobs[8]->params['pages'] ),
                        'Last leaf job is leaf job with proper title' );
@@ -49,19 +49,19 @@ class RefreshLinksPartitionTest extends MediaWikiTestCase {
                        'Last job is recursive sub-job' );
                $this->assertEquals( true, is_array( $jobs[9]->params['range'] ),
                        'Last job is recursive sub-job' );
-               $this->assertEquals( $title->getPrefixedText(), $jobs[0]->getTitle()->getPrefixedText(), 
+               $this->assertEquals( $title->getPrefixedText(), $jobs[0]->getTitle()->getPrefixedText(),
                        'Base job title retainend in leaf job' );
-               $this->assertEquals( $title->getPrefixedText(), $jobs[9]->getTitle()->getPrefixedText(), 
+               $this->assertEquals( $title->getPrefixedText(), $jobs[9]->getTitle()->getPrefixedText(),
                        'Base job title retainend recursive sub-job' );
                $this->assertEquals( $extraParams['rootJobSignature'], $jobs[0]->params['rootJobSignature'],
                        'Leaf job has root params' );
-               $this->assertEquals( $extraParams['rootJobSignature'], $jobs[9]->params['rootJobSignature'], 
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs[9]->params['rootJobSignature'],
                        'Recursive sub-job has root params' );
 
                $jobs2 = BacklinkJobUtils::partitionBacklinkJob( $jobs[9], 9, 1, array( 'params' => $extraParams ) );
 
                $this->assertEquals( 10, count( $jobs2 ), 'Correct number of sub-jobs' );
-               $this->assertEquals( $pages[9], current( $jobs2[0]->params['pages'] ), 
+               $this->assertEquals( $pages[9], current( $jobs2[0]->params['pages'] ),
                        'First job is leaf job with proper title' );
                $this->assertEquals( $pages[17], current( $jobs2[8]->params['pages'] ),
                        'Last leaf job is leaf job with proper title' );
@@ -73,17 +73,17 @@ class RefreshLinksPartitionTest extends MediaWikiTestCase {
                        'Last job is recursive sub-job' );
                $this->assertEquals( $extraParams['rootJobSignature'], $jobs2[0]->params['rootJobSignature'],
                        'Leaf job has root params' );
-               $this->assertEquals( $extraParams['rootJobSignature'], $jobs2[9]->params['rootJobSignature'], 
+               $this->assertEquals( $extraParams['rootJobSignature'], $jobs2[9]->params['rootJobSignature'],
                        'Recursive sub-job has root params' );
 
                $jobs3 = BacklinkJobUtils::partitionBacklinkJob( $jobs2[9], 9, 1, array( 'params' => $extraParams ) );
 
                $this->assertEquals( 2, count( $jobs3 ), 'Correct number of sub-jobs' );
-               $this->assertEquals( $pages[18], current( $jobs3[0]->params['pages'] ), 
+               $this->assertEquals( $pages[18], current( $jobs3[0]->params['pages'] ),
                        'First job is leaf job with proper title' );
                $this->assertEquals( $extraParams['rootJobSignature'], $jobs3[0]->params['rootJobSignature'],
                        'Leaf job has root params' );
-               $this->assertEquals( $pages[19], current( $jobs3[1]->params['pages'] ), 
+               $this->assertEquals( $pages[19], current( $jobs3[1]->params['pages'] ),
                        'Last job is leaf job with proper title' );
                $this->assertEquals( $extraParams['rootJobSignature'], $jobs3[1]->params['rootJobSignature'],
                        'Last leaf job has root params' );
@@ -91,7 +91,7 @@ class RefreshLinksPartitionTest extends MediaWikiTestCase {
 
        public static function provider_backlinks() {
                $pages = array();
-               for ( $i=0; $i<20; ++$i ) {
+               for ( $i = 0; $i < 20; ++$i ) {
                        $pages[] = array( 0, "Page-$i" );
                }
                return array(
index 43df5eb..5c0487b 100644 (file)
@@ -69,6 +69,8 @@ class CSSMinTest extends MediaWikiTestCase {
        }
 
        /**
+        * This tests funky parameters to CSSMin::remap. testRemapRemapping tests the basic functionality.
+        *
         * @dataProvider provideRemapCases
         * @covers CSSMin::remap
         */
@@ -111,6 +113,198 @@ class CSSMinTest extends MediaWikiTestCase {
                );
        }
 
+       /**
+        * This tests basic functionality of CSSMin::remap. testRemapRemapping tests funky parameters.
+        *
+        * @dataProvider provideRemapRemappingCases
+        * @covers CSSMin::remap
+        */
+       public function testRemapRemapping( $message, $input, $expectedOutput ) {
+               $localPath = __DIR__ . '/../../data/cssmin/';
+               $remotePath = 'http://localhost/w/';
+
+               $realOutput = CSSMin::remap( $input, $localPath, $remotePath );
+
+               $this->assertEquals(
+                       $expectedOutput,
+                       preg_replace( '/\d+-\d+-\d+T\d+:\d+:\d+Z/', 'timestamp', $realOutput ),
+                       "CSSMin::remap: $message"
+               );
+       }
+
+       public static function provideRemapRemappingCases() {
+               // red.gif and green.gif are one-pixel 35-byte GIFs.
+               // large.png is a 35K PNG that should be non-embeddable.
+               // Full paths start with http://localhost/w/.
+               // Timestamps in output are replaced with 'timestamp'.
+
+               // data: URIs for red.gif and green.gif
+               $red   = 'data:image/gif;base64,R0lGODlhAQABAIAAAP8AADAAACwAAAAAAQABAAACAkQBADs=';
+               $green = 'data:image/gif;base64,R0lGODlhAQABAIAAAACAADAAACwAAAAAAQABAAACAkQBADs=';
+
+               return array(
+                       array(
+                               'Regular file',
+                               'foo { background: url(red.gif); }',
+                               'foo { background: url(http://localhost/w/red.gif?timestamp); }',
+                       ),
+                       array(
+                               'Regular file (missing)',
+                               'foo { background: url(theColorOfHerHair.gif); }',
+                               'foo { background: url(http://localhost/w/theColorOfHerHair.gif); }',
+                       ),
+                       array(
+                               'Remote URL',
+                               'foo { background: url(http://example.org/w/foo.png); }',
+                               'foo { background: url(http://example.org/w/foo.png); }',
+                       ),
+                       array(
+                               'Protocol-relative remote URL',
+                               'foo { background: url(//example.org/w/foo.png); }',
+                               'foo { background: url(//example.org/w/foo.png); }',
+                       ),
+                       array(
+                               'Remote URL with query',
+                               'foo { background: url(http://example.org/w/foo.png?query=yes); }',
+                               'foo { background: url(http://example.org/w/foo.png?query=yes); }',
+                       ),
+                       array(
+                               'Protocol-relative remote URL with query',
+                               'foo { background: url(//example.org/w/foo.png?query=yes); }',
+                               'foo { background: url(//example.org/w/foo.png?query=yes); }',
+                       ),
+                       array(
+                               'Domain-relative URL',
+                               'foo { background: url(/static/foo.png); }',
+                               'foo { background: url(http://doc.example.org/static/foo.png); }',
+                       ),
+                       array(
+                               'Domain-relative URL with query',
+                               'foo { background: url(/static/foo.png?query=yes); }',
+                               'foo { background: url(http://doc.example.org/static/foo.png?query=yes); }',
+                       ),
+                       array(
+                               'Remote URL (unnecessary quotes not preserved)',
+                               'foo { background: url("http://example.org/w/foo.png"); }',
+                               'foo { background: url(http://example.org/w/foo.png); }',
+                       ),
+                       array(
+                               'Embedded file',
+                               'foo { /* @embed */ background: url(red.gif); }',
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Can not embed remote URLs',
+                               'foo { /* @embed */ background: url(http://example.org/w/foo.png); }',
+                               'foo { background: url(http://example.org/w/foo.png); }',
+                       ),
+                       array(
+                               'Embedded file (inline @embed)',
+                               'foo { background: /* @embed */ url(red.gif); }',
+                               "foo { background: url($red); background: url(http://localhost/w/red.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Can not embed large files',
+                               'foo { /* @embed */ background: url(large.png); }',
+                               "foo { background: url(http://localhost/w/large.png?timestamp); }",
+                       ),
+                       array(
+                               'Two regular files in one rule',
+                               'foo { background: url(red.gif), url(green.gif); }',
+                               'foo { background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp); }',
+                       ),
+                       array(
+                               'Two embedded files in one rule',
+                               'foo { /* @embed */ background: url(red.gif), url(green.gif); }',
+                               "foo { background: url($red), url($green); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Two embedded files in one rule (inline @embed)',
+                               'foo { background: /* @embed */ url(red.gif), /* @embed */ url(green.gif); }',
+                               "foo { background: url($red), url($green); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/green.gif?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Two embedded files in one rule (inline @embed), one too large',
+                               'foo { background: /* @embed */ url(red.gif), /* @embed */ url(large.png); }',
+                               "foo { background: url($red), url(http://localhost/w/large.png?timestamp); background: url(http://localhost/w/red.gif?timestamp), url(http://localhost/w/large.png?timestamp)!ie; }",
+                       ),
+                       array(
+                               'Practical example with some noise',
+                               'foo { /* @embed */ background: #f9f9f9 url(red.gif) 0 0 no-repeat; }',
+                               "foo { background: #f9f9f9 url($red) 0 0 no-repeat; background: #f9f9f9 url(http://localhost/w/red.gif?timestamp) 0 0 no-repeat!ie; }",
+                       ),
+                       array(
+                               'Does not mess with other properties',
+                               'foo { color: red; background: url(red.gif); font-size: small; }',
+                               'foo { color: red; background: url(http://localhost/w/red.gif?timestamp); font-size: small; }',
+                       ),
+                       array(
+                               'Spacing and miscellanea not changed (1)',
+                               'foo {   background:    url(red.gif);  }',
+                               'foo {   background:    url(http://localhost/w/red.gif?timestamp);  }',
+                       ),
+                       array(
+                               'Spacing and miscellanea not changed (2)',
+                               'foo {background:url(red.gif)}',
+                               'foo {background:url(http://localhost/w/red.gif?timestamp)}',
+                       ),
+                       array(
+                               'Spaces within url() parentheses are ignored',
+                               'foo { background: url( red.gif ); }',
+                               'foo { background: url(http://localhost/w/red.gif?timestamp); }',
+                       ),
+                       array(
+                               '@import rule to local file (should we remap this?)',
+                               '@import url(/styles.css)',
+                               '@import url(http://doc.example.org/styles.css)',
+                       ),
+                       array(
+                               '@import rule to URL (should we remap this?)',
+                               '@import url(//localhost/styles.css?query=yes)',
+                               '@import url(//localhost/styles.css?query=yes)',
+                       ),
+               );
+       }
+
+       /**
+        * This tests basic functionality of CSSMin::buildUrlValue.
+        *
+        * @dataProvider provideBuildUrlValueCases
+        * @covers CSSMin::buildUrlValue
+        */
+       public function testBuildUrlValue( $message, $input, $expectedOutput ) {
+               $this->assertEquals(
+                       $expectedOutput,
+                       CSSMin::buildUrlValue( $input ),
+                       "CSSMin::buildUrlValue: $message"
+               );
+       }
+
+       public static function provideBuildUrlValueCases() {
+               return array(
+                       array(
+                               'Full URL',
+                               'scheme://user@domain:port/~user/fi%20le.png?query=yes&really=y+s',
+                               'url(scheme://user@domain:port/~user/fi%20le.png?query=yes&really=y+s)',
+                       ),
+                       array(
+                               'data: URI',
+                               'data:image/png;base64,R0lGODlh/+==',
+                               'url(data:image/png;base64,R0lGODlh/+==)',
+                       ),
+                       array(
+                               'URL with quotes',
+                               "https://en.wikipedia.org/wiki/Wendy's",
+                               "url(\"https://en.wikipedia.org/wiki/Wendy's\")",
+                       ),
+                       array(
+                               'URL with parentheses',
+                               'https://en.wikipedia.org/wiki/Boston_(band)',
+                               'url("https://en.wikipedia.org/wiki/Boston_(band)")',
+                       ),
+               );
+       }
+
        /**
         * Seperated because they are currently broken (bug 35492)
         *
diff --git a/tests/phpunit/includes/libs/HashRingTest.php b/tests/phpunit/includes/libs/HashRingTest.php
new file mode 100644 (file)
index 0000000..68dfea1
--- /dev/null
@@ -0,0 +1,56 @@
+<?php
+
+/**
+ * @group HashRing
+ */
+class HashRingTest extends MediaWikiTestCase {
+       /**
+        * @covers HashRing
+        */
+       public function testHashRing() {
+               $ring = new HashRing( array( 's1' => 1, 's2' => 1, 's3' => 2, 's4' => 2, 's5' => 2, 's6' => 3 ) );
+
+               $locations = array();
+               for ( $i = 0; $i < 20; $i++ ) {
+                       $locations[ "hello$i"] = $ring->getLocation( "hello$i" );
+               }
+               $expectedLocations = array(
+                       "hello0" => "s5",
+                       "hello1" => "s6",
+                       "hello2" => "s2",
+                       "hello3" => "s5",
+                       "hello4" => "s6",
+                       "hello5" => "s4",
+                       "hello6" => "s5",
+                       "hello7" => "s4",
+                       "hello8" => "s5",
+                       "hello9" => "s5",
+                       "hello10" => "s3",
+                       "hello11" => "s6",
+                       "hello12" => "s1",
+                       "hello13" => "s3",
+                       "hello14" => "s3",
+                       "hello15" => "s5",
+                       "hello16" => "s4",
+                       "hello17" => "s6",
+                       "hello18" => "s6",
+                       "hello19" => "s3"
+               );
+
+               $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
+
+               $locations = array();
+               for ( $i = 0; $i < 5; $i++ ) {
+                       $locations[ "hello$i"] = $ring->getLocations( "hello$i", 2 );
+               }
+
+               $expectedLocations = array(
+                       "hello0" => array( "s5", "s6" ),
+                       "hello1" => array( "s6", "s4" ),
+                       "hello2" => array( "s2", "s1" ),
+                       "hello3" => array( "s5", "s6" ),
+                       "hello4" => array( "s6", "s4" ),
+               );
+               $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
+       }
+}
diff --git a/tests/phpunit/includes/libs/MWMessagePackTest.php b/tests/phpunit/includes/libs/MWMessagePackTest.php
new file mode 100644 (file)
index 0000000..b99ef86
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * PHP Unit tests for MWMessagePack
+ * @covers MWMessagePack
+ */
+class MWMessagePackTest extends MediaWikiTestCase {
+
+       /**
+        * Provides test cases for MWMessagePackTest::testMessagePack
+        *
+        * Returns an array of test cases. Each case is an array of (type, value,
+        * expected encoding as hex string). The expected values were generated
+        * using <https://github.com/msgpack/msgpack-php>, which includes a
+        * serialization function.
+        */
+       public function provider() {
+               return array(
+                       array( 'nil', null, 'c0' ),
+                       array( 'bool', true, 'c3' ),
+                       array( 'bool', false, 'c2' ),
+                       array( 'positive fixnum', 0, '00' ),
+                       array( 'positive fixnum', 1, '01' ),
+                       array( 'positive fixnum', 5, '05' ),
+                       array( 'positive fixnum', 35, '23' ),
+                       array( 'uint 8', 128, 'cc80' ),
+                       array( 'uint 16', 1000, 'cd03e8' ),
+                       array( 'uint 32', 100000, 'ce000186a0' ),
+                       array( 'uint 64', 10000000000, 'cf00000002540be400' ),
+                       array( 'negative fixnum', -1, 'ff' ),
+                       array( 'negative fixnum', -2, 'fe' ),
+                       array( 'int 8', -128, 'd080' ),
+                       array( 'int 8', -35, 'd0dd' ),
+                       array( 'int 16', -1000, 'd1fc18' ),
+                       array( 'int 32', -100000, 'd2fffe7960' ),
+                       array( 'int 64', -10000000000, 'd3fffffffdabf41c00' ),
+                       array( 'int 64', -223372036854775807, 'd3fce66c50e2840001' ),
+                       array( 'int 64', -9223372036854775807, 'd38000000000000001' ),
+                       array( 'double', 0.1, 'cb3fb999999999999a' ),
+                       array( 'double', 1.1, 'cb3ff199999999999a' ),
+                       array( 'double', 123.456, 'cb405edd2f1a9fbe77' ),
+                       array( 'fix raw', '', 'a0' ),
+                       array( 'fix raw', 'foobar', 'a6666f6f626172' ),
+                       array(
+                               'raw 16',
+                               'Lorem ipsum dolor sit amet amet.',
+                               'da00204c6f72656d20697073756d20646f6c6f722073697420616d657420616d65742e'
+                       ),
+                       array(
+                               'fix array',
+                               array( 'abc', 'def', 'ghi' ),
+                               '93a3616263a3646566a3676869'
+                       ),
+                       array(
+                               'fix map',
+                               array( 'one' => 1, 'two' => 2 ),
+                               '82a36f6e6501a374776f02'
+                       ),
+               );
+       }
+
+       /**
+        * Verify that values are serialized correctly.
+        * @covers MWMessagePack::pack
+        * @dataProvider provider
+        */
+       public function testPack( $type, $value, $expected ) {
+               $actual = bin2hex( MWMessagePack::pack( $value ) );
+               $this->assertEquals( $actual, $expected, $type );
+       }
+}
diff --git a/tests/phpunit/includes/libs/RunningStatTest.php b/tests/phpunit/includes/libs/RunningStatTest.php
new file mode 100644 (file)
index 0000000..e24c088
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+/**
+ * PHP Unit tests for RunningStat class.
+ * @covers RunningStat
+ */
+class RunningStatTest extends MediaWikiTestCase {
+
+       public $points = array(
+               49.7168, 74.3804,  7.0115, 96.5769, 34.9458,
+               36.9947, 33.8926, 89.0774, 23.7745, 73.5154,
+               86.1322, 53.2124, 16.2046, 73.5130, 10.4209,
+               42.7299, 49.3330, 47.0215, 34.9950, 18.2914,
+       );
+
+       /**
+        * Verify that the statistical moments and extrema computed by RunningStat
+        * match expected values.
+        * @covers RunningStat::push
+        * @covers RunningStat::count
+        * @covers RunningStat::getMean
+        * @covers RunningStat::getVariance
+        * @covers RunningStat::getStdDev
+        */
+       public function testRunningStatAccuracy() {
+               $rstat = new RunningStat();
+               foreach( $this->points as $point ) {
+                       $rstat->push( $point );
+               }
+
+               $mean = array_sum( $this->points ) / count( $this->points );
+               $variance = array_sum( array_map( function ( $x ) use ( $mean ) {
+                       return pow( $mean - $x, 2 );
+               }, $this->points ) ) / ( count( $rstat ) - 1 );
+               $stddev = sqrt( $variance );
+               $min = min( $this->points );
+               $max = max( $this->points );
+
+               $this->assertEquals( count( $rstat ), count( $this->points ) );
+               $this->assertEquals( $rstat->min, min( $this->points ) );
+               $this->assertEquals( $rstat->max, max( $this->points ) );
+               $this->assertEquals( $rstat->getMean(), $mean );
+               $this->assertEquals( $rstat->getVariance(), $variance );
+               $this->assertEquals( $rstat->getStdDev(), $stddev );
+       }
+
+       /**
+        * When one RunningStat instance is merged into another, the state of the
+        * target RunningInstance should have the state that it would have had if
+        * all the data had been accumulated by it alone.
+        * @covers RunningStat::merge
+        * @covers RunningStat::count
+        */
+       public function testRunningStatMerge() {
+               $expected = new RunningStat();
+
+               foreach( $this->points as $point ) {
+                       $expected->push( $point );
+               }
+
+               // Split the data into two sets
+               $sets = array_chunk( $this->points, floor( count( $this->points ) / 2 ) );
+
+               // Accumulate the first half into one RunningStat object
+               $first = new RunningStat();
+               foreach( $sets[0] as $point ) {
+                       $first->push( $point );
+               }
+
+               // Accumulate the second half into another RunningStat object
+               $second = new RunningStat();
+               foreach( $sets[1] as $point ) {
+                       $second->push( $point );
+               }
+
+               // Merge the second RunningStat object into the first
+               $first->merge( $second );
+
+               $this->assertEquals( count( $first ), count( $this->points ) );
+               $this->assertEquals( $first, $expected );
+       }
+}
index 9650fb1..6210d09 100644 (file)
@@ -32,7 +32,7 @@ class LogFormatterTest extends MediaWikiLangTestCase {
                        'wgExtensionMessagesFiles' => array( 'LogTests' => __DIR__ . '/LogTests.i18n.php' ),
                ) );
 
-               $wgLang->getLocalisationCache()->recache( $wgLang->getCode() );
+               Language::getLocalisationCache()->recache( $wgLang->getCode() );
 
                $this->user = User::newFromName( 'Testuser' );
                $this->title = Title::newMainPage();
@@ -47,7 +47,7 @@ class LogFormatterTest extends MediaWikiLangTestCase {
                parent::tearDown();
 
                global $wgLang;
-               $wgLang->getLocalisationCache()->recache( $wgLang->getCode() );
+               Language::getLocalisationCache()->recache( $wgLang->getCode() );
        }
 
        public function newLogEntry( $action, $params ) {
diff --git a/tests/phpunit/includes/media/DjVuTest.php b/tests/phpunit/includes/media/DjVuTest.php
new file mode 100644 (file)
index 0000000..e568eaf
--- /dev/null
@@ -0,0 +1,118 @@
+<?php
+/**
+ * @covers DjVuHandler
+ */
+class DjVuTest extends MediaWikiTestCase {
+
+       /**
+        * @var string the directory where test files are
+        */
+       protected $filePath;
+
+       /**
+        * @var FSRepo the repository to use
+        */
+       protected $repo;
+
+       /**
+        * @var DjVuHandler
+        */
+       protected $handler;
+
+       protected function setUp() {
+               global $wgDjvuRenderer, $wgDjvuDump, $wgDjvuToXML;
+               parent::setUp();
+
+               //cli tool setup
+               $wgDjvuRenderer = $wgDjvuRenderer ? $wgDjvuRenderer : '/usr/local/bin/ddjvu';
+               $wgDjvuDump = $wgDjvuDump ? $wgDjvuDump : '/usr/local/bin/djvudump';
+               $wgDjvuToXML = $wgDjvuToXML ? $wgDjvuToXML : '/usr/local/bin/djvutoxml';
+               if (
+                       !$this->checkIfToolExists( $wgDjvuRenderer ) ||
+                       !$this->checkIfToolExists( $wgDjvuDump ) ||
+                       !$this->checkIfToolExists( $wgDjvuToXML )
+               ) {
+                       $this->markTestSkipped( 'This test needs the installation of the ddjvu, djvutoxml and djvudump tools' );
+               }
+
+               //file repo setup
+               $this->filePath = __DIR__ . '/../../data/media/';
+               $backend = new FSFileBackend( array(
+                       'name' => 'localtesting',
+                       'wikiId' => wfWikiId(),
+                       'lockManager' => new NullLockManager( array() ),
+                       'containerPaths' => array( 'data' => $this->filePath )
+               ) );
+               $this->repo = new FSRepo( array(
+                       'name' => 'temp',
+                       'url' => 'http://localhost/thumbtest',
+                       'backend' => $backend
+               ) );
+
+               $this->handler = new DjVuHandler();
+       }
+
+       /**
+        * Check if a tool exist
+        *
+        * @param string $path path to the tool
+        * @return bool
+        */
+       protected function checkIfToolExists( $path ) {
+               wfSuppressWarnings();
+               $result = file_exists( $path );
+               wfRestoreWarnings();
+               return $result;
+       }
+
+       protected function dataFile( $name, $type ) {
+               return new UnregisteredLocalFile(
+                       false,
+                       $this->repo,
+                       'mwstore://localtesting/data/' . $name,
+                       $type
+               );
+       }
+
+       public function testGetImageSize() {
+               $this->assertArrayEquals(
+                       array( 2480, 3508, 'DjVu', 'width="2480" height="3508"' ),
+                       $this->handler->getImageSize( null, $this->filePath . '/LoremIpsum.djvu' ),
+                       'Test file LoremIpsum.djvu should have a size of 2480 * 3508'
+               );
+       }
+
+       public function testInvalidFile() {
+               $this->assertFalse(
+                       $this->handler->getMetadata( null, $this->filePath . '/README' ),
+                       'Getting Metadata for an inexistent file should returns false'
+               );
+       }
+
+       public function testPageCount() {
+               $file = $this->dataFile( 'LoremIpsum.djvu', 'image/x.djvu' );
+               $this->assertEquals(
+                       5,
+                       $this->handler->pageCount( $file ),
+                       'Test file LoremIpsum.djvu should be detected as containing 5 pages'
+               );
+       }
+
+       public function testGetPageDimensions() {
+               $file = $this->dataFile( 'LoremIpsum.djvu', 'image/x.djvu' );
+               $this->assertArrayEquals(
+                       array( 2480, 3508 ),
+                       $this->handler->getPageDimensions( $file, 1 ),
+                       'Page 1 of test file LoremIpsum.djvu should have a size of 2480 * 3508'
+               );
+       }
+
+       public function testGetPageText() {
+               $file = $this->dataFile( 'LoremIpsum.djvu', 'image/x.djvu' );
+               $this->assertEquals(
+                       "Lorem ipsum \n1 \n",
+                       (string) $this->handler->getPageText( $file, 1 ),
+                       "Text layer of page 1 of file LoremIpsum.djvu should be 'Lorem ipsum \n1 \n'"
+               );
+       }
+}
index f4f4154..118dc85 100644 (file)
@@ -24,7 +24,7 @@ class ExifRotationTest extends MediaWikiTestCase {
                        'url' => 'http://localhost/thumbtest',
                        'backend' => new FSFileBackend( array(
                                'name' => 'localtesting',
-                               'lockManager' => 'nullLockManager',
+                               'wikiId' => wfWikiId(),
                                'containerPaths' => array( 'temp-thumb' => $tmpDir, 'data' => $filePath )
                        ) )
                ) );
index a4f71db..44d8f00 100644 (file)
@@ -16,7 +16,7 @@ class FormatMetadataTest extends MediaWikiTestCase {
                $filePath = __DIR__ . '/../../data/media';
                $this->backend = new FSFileBackend( array(
                        'name' => 'localtesting',
-                       'lockManager' => 'nullLockManager',
+                       'wikiId' => wfWikiId(),
                        'containerPaths' => array( 'data' => $filePath )
                ) );
                $this->repo = new FSRepo( array(
index 4350cbb..7bd04b7 100644 (file)
@@ -16,7 +16,7 @@ class GIFHandlerTest extends MediaWikiTestCase {
                $this->filePath = __DIR__ . '/../../data/media';
                $this->backend = new FSFileBackend( array(
                        'name' => 'localtesting',
-                       'lockManager' => 'nullLockManager',
+                       'wikiId' => wfWikiId(),
                        'containerPaths' => array( 'data' => $this->filePath )
                ) );
                $this->repo = new FSRepo( array(
index bff64bb..a5bf1dc 100644 (file)
@@ -18,7 +18,7 @@ class JpegTest extends MediaWikiTestCase {
 
                $this->backend = new FSFileBackend( array(
                        'name' => 'localtesting',
-                       'lockManager' => 'nullLockManager',
+                       'wikiId' => wfWikiId(),
                        'containerPaths' => array( 'data' => $this->filePath )
                ) );
                $this->repo = new FSRepo( array(
index 2cb7426..a47dc4a 100644 (file)
@@ -16,7 +16,7 @@ class PNGHandlerTest extends MediaWikiTestCase {
                $this->filePath = __DIR__ . '/../../data/media';
                $this->backend = new FSFileBackend( array(
                        'name' => 'localtesting',
-                       'lockManager' => 'nullLockManager',
+                       'wikiId' => wfWikiId(),
                        'containerPaths' => array( 'data' => $this->filePath )
                ) );
                $this->repo = new FSRepo( array(
index d00a33d..ec7b0c9 100644 (file)
@@ -54,6 +54,7 @@ class SVGMetadataExtractorTest extends MediaWikiTestCase {
                                        'height' => 1024,
                                        'originalWidth' => '1024',
                                        'originalHeight' => '1024',
+                                       'translations' => array(),
                                )
                        ),
                        array(
@@ -63,6 +64,7 @@ class SVGMetadataExtractorTest extends MediaWikiTestCase {
                                        'height' => 60,
                                        'originalWidth' => '60',
                                        'originalHeight' => '60',
+                                       'translations' => array(),
                                )
                        ),
                        array(
@@ -72,6 +74,7 @@ class SVGMetadataExtractorTest extends MediaWikiTestCase {
                                        'height' => 60,
                                        'originalWidth' => '60.0000000',
                                        'originalHeight' => '60.0000000',
+                                       'translations' => array(),
                                )
                        ),
                        array(
@@ -82,6 +85,7 @@ class SVGMetadataExtractorTest extends MediaWikiTestCase {
                                        'height' => 385,
                                        'originalWidth' => '385',
                                        'originalHeight' => '385.0004883',
+                                       'translations' => array(),
                                )
                        ),
                        array(
@@ -92,9 +96,26 @@ class SVGMetadataExtractorTest extends MediaWikiTestCase {
                                        'originalWidth' => '100%',
                                        'originalHeight' => '100%',
                                        'title' => 'Tux',
+                                       'translations' => array(),
                                        'description' => 'For more information see: http://commons.wikimedia.org/wiki/Image:Tux.svg',
                                )
-                       )
+                       ),
+                       array(
+                               "$base/Speech_bubbles.svg",
+                               array(
+                                       'width' => 627,
+                                       'height' => 461,
+                                       'originalWidth' => '17.7cm',
+                                       'originalHeight' => '13cm',
+                                       'translations' => array(
+                                               'de' => SVGReader::LANG_FULL_MATCH,
+                                               'fr' => SVGReader::LANG_FULL_MATCH,
+                                               'nl' => SVGReader::LANG_FULL_MATCH,
+                                               'tlh-ca' => SVGReader::LANG_FULL_MATCH,
+                                               'tlh' => SVGReader::LANG_PREFIX_MATCH
+                                       ),
+                               )
+                       ),
                );
        }
 
@@ -116,6 +137,7 @@ class SVGMetadataExtractorTest extends MediaWikiTestCase {
                                        'width' => 959,
                                        'originalWidth' => '958.69',
                                        'originalHeight' => '592.78998',
+                                       'translations' => array(),
                                )
                        ),
                );
index b28ee56..dafcae7 100644 (file)
@@ -1,5 +1,6 @@
 <?php
-class SVGTest extends MediaWikiTestCase {
+
+class SvgTest extends MediaWikiTestCase {
 
        protected function setUp() {
                parent::setUp();
@@ -10,7 +11,7 @@ class SVGTest extends MediaWikiTestCase {
 
                $this->backend = new FSFileBackend( array(
                        'name' => 'localtesting',
-                       'lockManager' => 'nullLockManager',
+                       'wikiId' => wfWikiId(),
                        'containerPaths' => array( 'data' => $this->filePath )
                ) );
                $this->repo = new FSRepo( array(
@@ -19,7 +20,7 @@ class SVGTest extends MediaWikiTestCase {
                        'backend' => $this->backend
                ) );
 
-               $this->handler = new SVGHandler;
+               $this->handler = new SvgHandler;
        }
 
        /**
index eac4de5..c742444 100644 (file)
@@ -306,7 +306,9 @@ class NewParserTest extends MediaWikiTestCase {
                                        }
                                }
                                $useConfig['name'] = 'local-backend'; // swap name
-                               $class = $conf['class'];
+                               unset( $useConfig['lockManager'] );
+                               unset( $useConfig['fileJournal'] );
+                               $class = $useConfig['class'];
                                self::$backendToUse = new $class( $useConfig );
                                $backend = self::$backendToUse;
                        }
@@ -316,11 +318,7 @@ class NewParserTest extends MediaWikiTestCase {
                        # informations.
                        $backend = new MockFileBackend( array(
                                'name' => 'local-backend',
-                               'lockManager' => 'nullLockManager',
-                               'containerPaths' => array(
-                                       'local-public' => "$uploadDir",
-                                       'local-thumb' => "$uploadDir/thumb",
-                               )
+                               'wikiId' => wfWikiId()
                        ) );
                }
 
@@ -446,16 +444,12 @@ class NewParserTest extends MediaWikiTestCase {
                ) );
 
                // No helpful SVG file to copy, so make one ourselves
-               $tmpDir = wfTempDir();
-               $tempFsFile = new TempFSFile( "$tmpDir/Foobar.svg" );
-               $tempFsFile->autocollect(); // destroy file when $tempFsFile leaves scope
-               file_put_contents( "$tmpDir/Foobar.svg",
-                       '<?xml version="1.0" encoding="utf-8"?>' .
-                       '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><text>Foo</text></svg>' );
+               $data = '<?xml version="1.0" encoding="utf-8"?>' .
+                       '<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200"><text>Foo</text></svg>';
 
                $backend->prepare( array( 'dir' => "$base/local-public/f/ff" ) );
-               $backend->quickStore( array(
-                       'src' => "$tmpDir/Foobar.svg", 'dst' => "$base/local-public/f/ff/Foobar.svg"
+               $backend->quickCreate( array(
+                       'content' => $data, 'dst' => "$base/local-public/f/ff/Foobar.svg"
                ) );
        }
 
index e460591..ff360e9 100644 (file)
@@ -8,10 +8,12 @@
  * @note Coverage will only ever show one of on of the Search* classes
  */
 class SearchEngineTest extends MediaWikiLangTestCase {
+
        /**
         * @var SearchEngine
         */
        protected $search;
+
        protected $pageList;
 
        /**
@@ -22,17 +24,23 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                parent::setUp();
 
                // Search tests require MySQL or SQLite with FTS
-               # Get database type and version
                $dbType = $this->db->getType();
-               $dbSupported =
-                       ( $dbType === 'mysql' )
-                               || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
+               $dbSupported = ( $dbType === 'mysql' )
+                       || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
 
                if ( !$dbSupported ) {
                        $this->markTestSkipped( "MySQL or SQLite with FTS3 only" );
                }
 
                $searchType = $this->db->getSearchEngine();
+               $this->setMwGlobals( array(
+                       'wgSearchType' => $searchType
+               ) );
+
+               if ( !isset( self::$pageList ) ) {
+                       $this->addPages();
+               }
+
                $this->search = new $searchType( $this->db );
        }
 
@@ -42,15 +50,7 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                parent::tearDown();
        }
 
-       function pageExists( $title ) {
-               return false;
-       }
-
-       function addDBData() {
-               if ( $this->pageExists( 'Not_Main_Page' ) ) {
-                       return;
-               }
-
+       protected function addPages() {
                if ( !$this->isWikitextNS( NS_MAIN ) ) {
                        // @todo cover the case of non-wikitext content in the main namespace
                        return;
@@ -75,12 +75,11 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                $this->insertPage( 'DomainName', 'example.com', 0 );
        }
 
-       function fetchIds( $results ) {
+       protected function fetchIds( $results ) {
                if ( !$this->isWikitextNS( NS_MAIN ) ) {
                        $this->markTestIncomplete( __CLASS__ . " does no yet support non-wikitext content "
                                . "in the main namespace" );
                }
-
                $this->assertTrue( is_object( $results ) );
 
                $matches = array();
@@ -105,7 +104,7 @@ class SearchEngineTest extends MediaWikiLangTestCase {
         * @param $text String: page's content
         * @param $n Integer: unused
         */
-       function insertPage( $pageName, $text, $ns ) {
+       protected function insertPage( $pageName, $text, $ns ) {
                $title = Title::newFromText( $pageName, $ns );
 
                $user = User::newFromName( 'WikiSysop' );
@@ -180,4 +179,5 @@ class SearchEngineTest extends MediaWikiLangTestCase {
                        $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
                        "Title power search failed" );
        }
+
 }
diff --git a/tests/phpunit/includes/specials/SpecialListFilesTest.php b/tests/phpunit/includes/specials/SpecialListFilesTest.php
new file mode 100644 (file)
index 0000000..2689236
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+/**
+ * Test class for SpecialListFiles class.
+ *
+ * Copyright © 2013, Antoine Musso
+ * Copyright © 2013, Siebrand Mazeland
+ * Copyright © 2013, Wikimedia Foundation Inc.
+ *
+ */
+
+class SpecialListFilesTest extends MediaWikiTestCase {
+       /**
+        * @expectedException MWException
+        * @expectedExceptionMesage invalid_field
+        * @covers ImageListPager::formatValue
+        */
+       public function testFormatValuesThrowException() {
+               $page = new ImageListPager( RequestContext::getMain() );
+               $page->formatValue( 'invalid_field', 'invalid_value' );
+       }
+}
index 17e883f..4ccf5d7 100644 (file)
@@ -46,12 +46,12 @@ class SpecialSearchTest extends MediaWikiTestCase {
                        array( /** Expected: */
                                'ProfileName' => $expectedProfile,
                                'Namespaces' => $expectedNS,
-                       )
-                       array( /** Actual: */
+                       ),
+                       array( /** Actual: */
                                'ProfileName' => $search->getProfile(),
                                'Namespaces' => $search->getNamespaces(),
-                       )
-                       $message
+                       ),
+                       $message
                );
        }
 
diff --git a/tests/phpunit/includes/utils/HashRingTest.php b/tests/phpunit/includes/utils/HashRingTest.php
deleted file mode 100644 (file)
index 68dfea1..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-<?php
-
-/**
- * @group HashRing
- */
-class HashRingTest extends MediaWikiTestCase {
-       /**
-        * @covers HashRing
-        */
-       public function testHashRing() {
-               $ring = new HashRing( array( 's1' => 1, 's2' => 1, 's3' => 2, 's4' => 2, 's5' => 2, 's6' => 3 ) );
-
-               $locations = array();
-               for ( $i = 0; $i < 20; $i++ ) {
-                       $locations[ "hello$i"] = $ring->getLocation( "hello$i" );
-               }
-               $expectedLocations = array(
-                       "hello0" => "s5",
-                       "hello1" => "s6",
-                       "hello2" => "s2",
-                       "hello3" => "s5",
-                       "hello4" => "s6",
-                       "hello5" => "s4",
-                       "hello6" => "s5",
-                       "hello7" => "s4",
-                       "hello8" => "s5",
-                       "hello9" => "s5",
-                       "hello10" => "s3",
-                       "hello11" => "s6",
-                       "hello12" => "s1",
-                       "hello13" => "s3",
-                       "hello14" => "s3",
-                       "hello15" => "s5",
-                       "hello16" => "s4",
-                       "hello17" => "s6",
-                       "hello18" => "s6",
-                       "hello19" => "s3"
-               );
-
-               $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
-
-               $locations = array();
-               for ( $i = 0; $i < 5; $i++ ) {
-                       $locations[ "hello$i"] = $ring->getLocations( "hello$i", 2 );
-               }
-
-               $expectedLocations = array(
-                       "hello0" => array( "s5", "s6" ),
-                       "hello1" => array( "s6", "s4" ),
-                       "hello2" => array( "s2", "s1" ),
-                       "hello3" => array( "s5", "s6" ),
-                       "hello4" => array( "s6", "s4" ),
-               );
-               $this->assertEquals( $expectedLocations, $locations, 'Items placed at proper locations' );
-       }
-}
index 24b077a..1267268 100644 (file)
@@ -297,6 +297,8 @@ class IPTest extends MediaWikiTestCase {
                        array( 16909060, '1.2.3.4' ),
                        array( 2130706433, '127.0.0.1' ),
                        array( '2147483648', '128.0.0.0' ),
+                       array( 2130706440, '127.0.0.08' ),
+                       array( 2130706441, '127.0.0.09' ),
                        array( '3735931646', '222.173.202.254' ),
                        array( pow( 2, 32 ) - 1, '255.255.255.255' ),
                        array( false, 'IN.VA.LI.D' ),
index 8f78ae5..1a1bbaf 100644 (file)
@@ -95,4 +95,32 @@ class UIDGeneratorTest extends MediaWikiTestCase {
                }
        }
 
+       /**
+        * @covers UIDGenerator::newSequentialPerNodeID
+        */
+       public function testNewSequentialID() {
+               $id1 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+               $id2 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+
+               $this->assertType( 'float', $id1, "ID returned as float" );
+               $this->assertType( 'float', $id2, "ID returned as float" );
+               $this->assertGreaterThan( 0, $id1, "ID greater than 1" );
+               $this->assertGreaterThan( $id1, $id2, "IDs increasing in value" );
+       }
+
+       /**
+        * @covers UIDGenerator::newSequentialPerNodeIDs
+        */
+       public function testNewSequentialIDs() {
+               $ids = UIDGenerator::newSequentialPerNodeIDs( 'test', 32, 5 );
+               $lastId = null;
+               foreach ( $ids as $id ) {
+                       $this->assertType( 'float', $id, "ID returned as float" );
+                       $this->assertGreaterThan( 0, $id, "ID greater than 1" );
+                       if ( $lastId ) {
+                               $this->assertGreaterThan( $lastId, $id, "IDs increasing in value" );
+                       }
+                       $lastId = $id;
+               }
+       }
 }
index d5822f4..dbdb588 100644 (file)
@@ -79,12 +79,13 @@ class LanguageBe_taraskTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other' );
+               $forms = array( '1=one', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
        public static function providePluralTwoForms() {
                return array(
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'other', 11 ),
                        array( 'other', 91 ),
index fb965b8..7aca2ab 100644 (file)
@@ -5,14 +5,14 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/LanguageBs.php */
+/** Tests for Croatian (hrvatski) */
 class LanguageBsTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -26,17 +26,17 @@ class LanguageBsTest extends LanguageClassesTestCase {
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 11 ),
-                       array( 'many', 20 ),
+                       array( 'other', 5 ),
+                       array( 'other', 11 ),
+                       array( 'other', 20 ),
                        array( 'one', 21 ),
                        array( 'few', 24 ),
-                       array( 'many', 25 ),
-                       array( 'many', 200 ),
+                       array( 'other', 25 ),
+                       array( 'other', 200 ),
                );
        }
 }
index a0def62..fc58022 100644 (file)
@@ -1,20 +1,19 @@
 <?php
 /**
+ * Test for Manx (Gaelg) language
+ *
  * @author Santhosh Thottingal
- * @copyright Copyright © 2012, Santhosh Thottingal
+ * @copyright Copyright © 2013, Santhosh Thottingal
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageGv.php */
 class LanguageGvTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               // This is not compatible with CLDR plural rules http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#gv
-               // What does this mean? Is there a hard-coded override for gv somewhere? -Ryan Kaldari 2013-01-28
-               $forms = array( 'Form 1', 'Form 2', 'Form 3', 'Form 4' );
+               $forms = array( 'one', 'two', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -23,21 +22,23 @@ class LanguageGvTest extends LanguageClassesTestCase {
         * @covers Language::getPluralRuleType
         */
        public function testGetPluralRuleType( $result, $value ) {
-               $this->markTestSkipped( "This test won't work since convertPlural for gv doesn't seem to actually follow our plural rules." );
                $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
        }
 
        public static function providePlural() {
                return array(
-                       array( 'Form 4', 0 ),
-                       array( 'Form 2', 1 ),
-                       array( 'Form 3', 2 ),
-                       array( 'Form 4', 3 ),
-                       array( 'Form 1', 20 ),
-                       array( 'Form 2', 21 ),
-                       array( 'Form 3', 22 ),
-                       array( 'Form 4', 23 ),
-                       array( 'Form 4', 50 ),
+                       array( 'few', 0 ),
+                       array( 'one', 1 ),
+                       array( 'two', 2 ),
+                       array( 'other', 3 ),
+                       array( 'few', 20 ),
+                       array( 'one', 21 ),
+                       array( 'two', 22 ),
+                       array( 'other', 23 ),
+                       array( 'other', 50 ),
+                       array( 'few', 60 ),
+                       array( 'other', 80 ),
+                       array( 'few', 100 )
                );
        }
 }
index 6ce4aff..644c525 100644 (file)
@@ -12,7 +12,7 @@ class LanguageHrTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -26,17 +26,17 @@ class LanguageHrTest extends LanguageClassesTestCase {
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 11 ),
-                       array( 'many', 20 ),
+                       array( 'other', 5 ),
+                       array( 'other', 11 ),
+                       array( 'other', 20 ),
                        array( 'one', 21 ),
                        array( 'few', 24 ),
-                       array( 'many', 25 ),
-                       array( 'many', 200 ),
+                       array( 'other', 25 ),
+                       array( 'other', 200 ),
                );
        }
 }
index 896522b..92e0ef9 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/LanguageHy.php */
+/** Tests for Armenian (Հայերեն) */
 class LanguageHyTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -21,13 +21,12 @@ class LanguageHyTest extends LanguageClassesTestCase {
         * @covers Language::getPluralRuleType
         */
        public function testGetPluralRuleType( $result, $value ) {
-               // This fails for 0, but I'm not sure why. Some voodoo going on here.
                $this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
        }
 
        public static function providePlural() {
                return array(
-                       array( 'other', 0 ),
+                       array( 'one', 0 ),
                        array( 'one', 1 ),
                        array( 'other', 2 ),
                        array( 'other', 200 ),
index c4d8a6f..7120cfe 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageLv.php */
+/** Tests for Latvian */
 class LanguageLvTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -28,13 +28,17 @@ class LanguageLvTest extends LanguageClassesTestCase {
                return array(
                        array( 'zero', 0 ),
                        array( 'one', 1 ),
-                       array( 'other', 11 ),
+                       array( 'zero', 11 ),
                        array( 'one', 21 ),
-                       array( 'other', 411 ),
+                       array( 'zero', 411 ),
+                       array( 'other', 2 ),
+                       array( 'other', 9 ),
+                       array( 'zero', 12 ),
                        array( 'other', 12.345 ),
-                       array( 'other', 20 ),
+                       array( 'zero', 20 ),
+                       array( 'other', 22 ),
                        array( 'one', 31 ),
-                       array( 'other', 200 ),
+                       array( 'zero', 200 ),
                );
        }
 }
index 7d47b37..ed15526 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageMk.php */
+/** Tests for македонски/Macedonian */
 class LanguageMkTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -28,7 +28,7 @@ class LanguageMkTest extends LanguageClassesTestCase {
                return array(
                        array( 'other', 0 ),
                        array( 'one', 1 ),
-                       array( 'other', 11 ),
+                       array( 'one', 11 ),
                        array( 'one', 21 ),
                        array( 'one', 411 ),
                        array( 'other', 12.345 ),
index e938be7..e17c708 100644 (file)
@@ -13,10 +13,21 @@ class LanguageRuTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'many', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
+       /**
+        * Test explicit plural forms - n=FormN forms
+        * @covers Language::convertPlural
+        */
+       public function testExplicitPlural() {
+               $forms = array( 'one','many', 'other', '12=dozen' );
+               $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
+               $forms = array( 'one', 'many', '100=hundred', 'other', '12=dozen' );
+               $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
+       }
+
        /**
         * @dataProvider providePlural
         * @covers Language::getPluralRuleType
@@ -31,10 +42,10 @@ class LanguageRuTest extends LanguageClassesTestCase {
                        array( 'many', 11 ),
                        array( 'one', 91 ),
                        array( 'one', 121 ),
-                       array( 'few', 2 ),
-                       array( 'few', 3 ),
-                       array( 'few', 4 ),
-                       array( 'few', 334 ),
+                       array( 'other', 2 ),
+                       array( 'other', 3 ),
+                       array( 'other', 4 ),
+                       array( 'other', 334 ),
                        array( 'many', 5 ),
                        array( 'many', 15 ),
                        array( 'many', 120 ),
@@ -46,7 +57,7 @@ class LanguageRuTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other' );
+               $forms = array( '1=one', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
index bf6a14b..fa49a4d 100644 (file)
@@ -5,7 +5,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageSgs.php */
+/** Tests for Samogitian */
 class LanguageSgsTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePluralAllForms
index 6d2e25a..1b39087 100644 (file)
@@ -5,14 +5,14 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageSh.php */
+/** Tests for  srpskohrvatski / српскохрватски / Serbocroatian */
 class LanguageShTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -26,17 +26,17 @@ class LanguageShTest extends LanguageClassesTestCase {
 
        public static function providePlural() {
                return array(
-                       array( 'many', 0 ),
+                       array( 'other', 0 ),
                        array( 'one', 1 ),
                        array( 'few', 2 ),
                        array( 'few', 4 ),
-                       array( 'many', 5 ),
-                       array( 'many', 10 ),
-                       array( 'many', 11 ),
-                       array( 'many', 12 ),
+                       array( 'other', 5 ),
+                       array( 'other', 10 ),
+                       array( 'other', 11 ),
+                       array( 'other', 12 ),
                        array( 'one', 101 ),
                        array( 'few', 102 ),
-                       array( 'many', 111 ),
+                       array( 'other', 111 ),
                );
        }
 }
index f551248..8d35f36 100644 (file)
@@ -130,7 +130,7 @@ class LanguageSrTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPlural( $result, $value ) {
-               $forms = array( 'one', 'few', 'many', 'other' );
+               $forms = array( 'one', 'few', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
@@ -145,16 +145,16 @@ class LanguageSrTest extends LanguageClassesTestCase {
        public static function providePlural() {
                return array(
                        array( 'one', 1 ),
-                       array( 'many', 11 ),
+                       array( 'other', 11 ),
                        array( 'one', 91 ),
                        array( 'one', 121 ),
                        array( 'few', 2 ),
                        array( 'few', 3 ),
                        array( 'few', 4 ),
                        array( 'few', 334 ),
-                       array( 'many', 5 ),
-                       array( 'many', 15 ),
-                       array( 'many', 120 ),
+                       array( 'other', 5 ),
+                       array( 'other', 15 ),
+                       array( 'other', 120 ),
                );
        }
 
@@ -171,8 +171,9 @@ class LanguageSrTest extends LanguageClassesTestCase {
                return array(
                        array( 'one', 1 ),
                        array( 'other', 11 ),
-                       array( 'other', 91 ),
-                       array( 'other', 121 ),
+                       array( 'other', 4 ),
+                       array( 'one', 91 ),
+                       array( 'one', 121 ),
                );
        }
 
index 0783fcf..9051bcf 100644 (file)
@@ -6,7 +6,7 @@
  * @file
  */
 
-/** Tests for MediaWiki languages/classes/LanguageUk.php */
+/** Tests for Ukrainian */
 class LanguageUkTest extends LanguageClassesTestCase {
        /**
         * @dataProvider providePlural
@@ -17,6 +17,17 @@ class LanguageUkTest extends LanguageClassesTestCase {
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
+       /**
+        * Test explicit plural forms - n=FormN forms
+        * @covers Language::convertPlural
+        */
+       public function testExplicitPlural() {
+               $forms = array( 'one', 'few', 'many', 'other', '12=dozen' );
+               $this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
+               $forms = array( 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' );
+               $this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
+       }
+
        /**
         * @dataProvider providePlural
         * @covers Language::getPluralRuleType
@@ -46,7 +57,7 @@ class LanguageUkTest extends LanguageClassesTestCase {
         * @covers Language::convertPlural
         */
        public function testPluralTwoForms( $result, $value ) {
-               $forms = array( 'one', 'other' );
+               $forms = array( '1=one', 'other' );
                $this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
        }
 
index 6abd09f..71d32c3 100644 (file)
@@ -81,6 +81,56 @@ class CLDRPluralRuleEvaluatorTest extends MediaWikiTestCase {
                        array( 0, 'n in 3..10,13..19', 13, 'scottish rule - ranges with comma' ),
 
                        array( 0, '5 mod 3 is n', 2, 'n as result of mod - no need to pass' ),
+
+                       # Revision 33 new operand examples
+                       # expected, rule, number, comment
+                       array( 0, 'i is 1', '1.00', 'new operand i' ),
+                       array( 0, 'v is 2', '1.00', 'new operand v' ),
+                       array( 0, 'w is 0', '1.00', 'new operand w' ),
+                       array( 0, 'f is 0', '1.00', 'new operand f' ),
+                       array( 0, 't is 0', '1.00', 'new operand t' ),
+
+                       array( 0, 'i is 1', '1.30', 'new operand i' ),
+                       array( 0, 'v is 2', '1.30', 'new operand v' ),
+                       array( 0, 'w is 1', '1.30', 'new operand w' ),
+                       array( 0, 'f is 30', '1.30', 'new operand f' ),
+                       array( 0, 't is 3', '1.30', 'new operand t' ),
+
+                       array( 0, 'i is 1', '1.03', 'new operand i' ),
+                       array( 0, 'v is 2', '1.03', 'new operand v' ),
+                       array( 0, 'w is 2', '1.03', 'new operand w' ),
+                       array( 0, 'f is 3', '1.03', 'new operand f' ),
+                       array( 0, 't is 3', '1.03', 'new operand t' ),
+
+                       # Revision 33 new operator aliases
+                       # expected, rule, number, comment
+                       array( 0, 'n % 3 is 1', 7, 'new % operator' ),
+                       array( 0, 'n = 1,3,5', 3, 'new = operator' ),
+                       array( 1, 'n != 1,3,5', 5, 'new != operator' ),
+
+                       # Revision 33 samples
+                       # expected, rule, number, comment
+                       array( 0, 'n in 1,3,5@integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …', 3, 'samples' ),
+
+                       # Revision 33 some test cases from CLDR
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.1', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.01', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.10', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.010', 'pt one' ),
+                       array( 0, 'i = 1 and v = 0 or i = 0 and t = 1', '0.100', 'pt one' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.0', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '0.2', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '10.0', 'pt other' ),
+                       array( 1, 'i = 1 and v = 0 or i = 0 and t = 1', '100.0', 'pt other' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '2', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '4', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '22', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '102', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.2', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '0.4', 'bs few' ),
+                       array( 0, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.2', 'bs few' ),
+                       array( 1, 'v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14', '10.0', 'bs other' ),
+
                );
 
                return $tests;
index 49aefbd..de8590e 100644 (file)
  * @ingroup FileBackend
  * @since 1.22
  */
-class MockFileBackend extends FileBackendStore {
-
-       protected $mocked = array();
-
-       /** Poor man debugging */
-       protected function debug( $msg = '' ) {
-               wfDebug( wfGetCaller() . "$msg\n" );
-       }
-
-       public function isPathUsableInternal( $storagePath ) {
-               return true;
-       }
-
-       protected function doCreateInternal( array $params ) {
-               if ( isset( $params['content'] ) ) {
-                       $content = $params['content'];
-               } else {
-                       $content = 'Default mocked file content';
-               }
-               $this->debug( serialize( $params ) );
-               $dst = $params['dst'];
-               $this->mocked[$dst] = $content;
-               return Status::newGood();
-       }
-
-       protected function doStoreInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               return $this->doCreateInternal( $params );
-       }
-
-       protected function doCopyInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               $src = $params['src'];
-               $dst = $params['dst'];
-               $this->mocked[$dst] = $this->mocked[$src];
-               return Status::newGood();
-       }
-
-       protected function doDeleteInternal( array $params ) {
-               $this->debug( serialize( $params ) );
-               $src = $params['src'];
-               unset( $this->mocked[$src] );
-               return Status::newGood();
-       }
-
-       protected function doGetFileStat( array $params ) {
-               $src = $params['src'];
-               if ( array_key_exists( $src, $this->mocked ) ) {
-                       $this->debug( "('$src') found" );
-                       return array(
-                               'mtime' => wfTimestamp( TS_MW ),
-                               'size' => strlen( $this->mocked[$src] ),
-                               # No sha1, stat does not need it.
-                       );
-               } else {
-                       $this->debug( "('$src') not found" );
-                       return false;
-               }
-       }
-
+class MockFileBackend extends MemoryFileBackend {
        protected function doGetLocalCopyMulti( array $params ) {
                $tmpFiles = array(); // (path => MockFSFile)
-
-               $this->debug( '(' . serialize( $params ) . ')' );
                foreach ( $params['srcs'] as $src ) {
-                       $tmpFiles[$src] = new MockFSFile(
-                               wfTempDir() . '/' . wfRandomString( 32 )
-                       );
+                       $tmpFiles[$src] = new MockFSFile( wfTempDir() . '/' . wfRandomString( 32 ) );
                }
                return $tmpFiles;
        }
-
-       protected function doDirectoryExists( $container, $dir, array $params ) {
-               $this->debug();
-               return true;
-       }
-
-       public function getDirectoryListInternal( $container, $dir, array $params ) {
-               $this->debug();
-               return array();
-       }
-
-       public function getFileListInternal( $container, $dir, array $params ) {
-               $this->debug();
-               return array();
-       }
-
-       protected function directoriesAreVirtual() {
-               $this->debug();
-               return true;
-       }
 }
index 401b8a8..039cabb 100755 (executable)
@@ -108,9 +108,9 @@ if ( !class_exists( 'PHPUnit_Runner_Version' ) ) {
 }
 
 if ( PHPUnit_Runner_Version::id() !== '@package_version@'
-       && version_compare( PHPUnit_Runner_Version::id(), '3.6.7', '<' )
+       && version_compare( PHPUnit_Runner_Version::id(), '3.7.0', '<' )
 ) {
-       die( 'PHPUnit 3.6.7 or later required, you have ' . PHPUnit_Runner_Version::id() . ".\n" );
+       die( 'PHPUnit 3.7.0 or later required, you have ' . PHPUnit_Runner_Version::id() . ".\n" );
 }
 
 if ( !class_exists( 'PHPUnit_TextUI_Command' ) ) {
index fc06ee4..7d33a59 100644 (file)
@@ -90,6 +90,11 @@ class SideBarTest extends MediaWikiLangTestCase {
         * @covers SkinTemplate::addToSidebarPlain
         */
        public function testExternalUrlsRequireADescription() {
+               $this->setMwGlobals( array(
+                       'wgNoFollowLinks' => true,
+                       'wgNoFollowDomainExceptions' => array(),
+                       'wgNoFollowNsExceptions' => array(),
+               ) );
                $this->assertSidebar(
                        array( 'Title' => array(
                                # ** http://www.mediawiki.org/| Home
@@ -162,6 +167,8 @@ class SideBarTest extends MediaWikiLangTestCase {
        public function testTestAttributesAssertionHelper() {
                $this->setMwGlobals( array(
                        'wgNoFollowLinks' => true,
+                       'wgNoFollowDomainExceptions' => array(),
+                       'wgNoFollowNsExceptions' => array(),
                        'wgExternalLinkTarget' => false,
                ) );
                $attribs = $this->getAttribs();
index 7eb599e..fb7780d 100644 (file)
@@ -36,7 +36,7 @@ class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
                        'transformVia404' => false,
                        'backend' => new FSFileBackend( array(
                                'name' => 'local-backend',
-                               'lockManager' => 'fsLockManager',
+                               'wikiId' => wfWikiId(),
                                'containerPaths' => array(
                                        'local-public' => wfTempDir() . '/test-repo/public',
                                        'local-thumb' => wfTempDir() . '/test-repo/thumb',
index c874375..01fedc8 100644 (file)
@@ -19,6 +19,7 @@ return array(
                        'tests/qunit/suites/resources/jquery/jquery.localize.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.mwExtension.test.js',
+                       'tests/qunit/suites/resources/jquery/jquery.placeholder.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.tabIndex.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js',
                        'tests/qunit/suites/resources/jquery/jquery.textSelection.test.js',
@@ -49,6 +50,7 @@ return array(
                        'jquery.localize',
                        'jquery.makeCollapsible',
                        'jquery.mwExtension',
+                       'jquery.placeholder',
                        'jquery.tabIndex',
                        'jquery.tablesorter',
                        'jquery.textSelection',
index 4c7c302..6030206 100644 (file)
                                        rtl: true
                                }
                        },
-                       // Bug #34924
+                       // Rekonq (bug 34924)
                        'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34': {
                                title: 'Rekonq',
                                platform: 'Linux i686',
                                        ltr: true,
                                        rtl: true
                                }
+                       },
+                       // Konqueror
+                       'Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9': {
+                               title: 'Konqueror',
+                               platform: 'Linux i686',
+                               profile: {
+                                       name: 'konqueror',
+                                       layout: 'khtml',
+                                       layoutVersion: 'unknown',
+                                       platform: 'linux',
+                                       version: '4.9.1',
+                                       versionBase: '4',
+                                       versionNumber: 4.9
+                               },
+                               wikiEditor: {
+                                       // '4.9' is less than '4.11'.
+                                       ltr: false,
+                                       rtl: false
+                               },
+                               wikiEditorLegacy: {
+                                       // The check is missing in legacyTestMap
+                                       ltr: true,
+                                       rtl: true
+                               }
                        }
                },
                testMap = {
-                       // Example from WikiEditor
-                       // Make sure to use raw numbers, a string like "7.0" would fail on a
-                       // version 10 browser since in string comparaison "10" is before "7.0" :)
+                       // Example from WikiEditor, modified to provide version identifiers as strings and with
+                       // Konqueror 4.11 check added.
+                       'ltr': {
+                               'msie': [['>=', '7.0']],
+                               'firefox': [['>=', '2']],
+                               'opera': [['>=', '9.6']],
+                               'safari': [['>=', '3']],
+                               'chrome': [['>=', '3']],
+                               'netscape': [['>=', '9']],
+                               'konqueror': [['>=', '4.11']],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       },
+                       'rtl': {
+                               'msie': [['>=', '8']],
+                               'firefox': [['>=', '2']],
+                               'opera': [['>=', '9.6']],
+                               'safari': [['>=', '3']],
+                               'chrome': [['>=', '3']],
+                               'netscape': [['>=', '9']],
+                               'konqueror': [['>=', '4.11']],
+                               'blackberry': false,
+                               'ipod': false,
+                               'iphone': false
+                       }
+               },
+               legacyTestMap = {
+                       // Original example from WikiEditor.
+                       // This is using the old, but still supported way of providing version identifiers as numbers
+                       // instead of strings; with this method, 4.9 would be considered larger than 4.11.
                        'ltr': {
                                'msie': [['>=', 7.0]],
                                'firefox': [['>=', 2]],
                }, ie7Profile, true ), false, 'returns false if browser not found and exactMatchOnly is set' );
        } );
 
-       QUnit.test( 'test( testMap) - WikiEditor sample', uacount * 2, function ( assert ) {
+       QUnit.test( 'test( testMap ), test( legacyTestMap ) - WikiEditor sample', uacount * 2 * 2, function ( assert ) {
                var $body = $( 'body' ),
                        bodyClasses = $body.attr( 'class' );
 
                // Loop through and run tests
                $.each( uas, function ( agent, data ) {
                        $.each( ['ltr', 'rtl'], function ( i, dir ) {
-                               var profile, testMatch;
+                               var profile, testMatch, legacyTestMatch;
                                $body.removeClass( 'ltr rtl' ).addClass( dir );
                                profile = $.client.profile( {
                                        userAgent: agent,
                                        platform: data.platform
                                } );
                                testMatch = $.client.test( testMap, profile );
+                               legacyTestMatch = $.client.test( legacyTestMap, profile );
                                $body.removeClass( dir );
 
-                               assert.equal( testMatch, data.wikiEditor[dir], 'testing comparison based on ' + dir + ', ' + agent );
+                               assert.equal(
+                                       testMatch,
+                                       data.wikiEditor[dir],
+                                       'testing comparison based on ' + dir + ', ' + agent
+                               );
+                               assert.equal(
+                                       legacyTestMatch,
+                                       data.wikiEditorLegacy ? data.wikiEditorLegacy[dir] : data.wikiEditor[dir],
+                                       'testing comparison based on ' + dir + ', ' + agent + ' (legacyTestMap)'
+                               );
                        } );
                } );
 
diff --git a/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js b/tests/qunit/suites/resources/jquery/jquery.placeholder.test.js
new file mode 100644 (file)
index 0000000..ca0ea67
--- /dev/null
@@ -0,0 +1,145 @@
+(function($) {
+
+       QUnit.module('jquery.placeholder', QUnit.newMwEnvironment());
+
+       QUnit.test('caches results of feature tests', 2, function(assert) {
+               assert.strictEqual(typeof $.fn.placeholder.input, 'boolean', '$.fn.placeholder.input');
+               assert.strictEqual(typeof $.fn.placeholder.textarea, 'boolean', '$.fn.placeholder.textarea');
+       });
+
+       if ($.fn.placeholder.input && $.fn.placeholder.textarea) {
+               return;
+       }
+
+       var html = '<form>' +
+                       '<input id="input-type-search" type="search" placeholder="Search this site...">' +
+                       '<input id="input-type-text" type="text" placeholder="e.g. John Doe">' +
+                       '<input id="input-type-email" type="email" placeholder="e.g. address@example.ext">' +
+                       '<input id="input-type-url" type="url" placeholder="e.g. http://mathiasbynens.be/">' +
+                       '<input id="input-type-tel" type="tel" placeholder="e.g. +32 472 77 69 88">' +
+                       '<input id="input-type-password" type="password" placeholder="e.g. hunter2">' +
+                       '<textarea id="textarea" name="message" placeholder="Your message goes here"></textarea>' +
+               '</form>',
+       testElement = function($el, assert) {
+
+               var el = $el[0],
+                       placeholder = el.getAttribute('placeholder');
+
+               assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+               // test on focus
+               $el.focus();
+               assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+
+               // and unfocus (blur) again
+               $el.blur();
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+               // change the value
+               $el.val('lorem ipsum');
+               assert.strictEqual($el.prop('value'), 'lorem ipsum', '`$el.val(string)` should change the `value` property');
+               assert.strictEqual(el.value, 'lorem ipsum', '`$el.val(string)` should change the `value` attribute');
+               assert.ok(!$el.hasClass('placeholder'), '`$el.val(string)` should remove `placeholder` class');
+
+               // and clear it again
+               $el.val('');
+               assert.strictEqual($el.prop('value'), '', '`$el.val("")` should change the `value` property');
+               assert.strictEqual(el.value, placeholder, '`$el.val("")` should change the `value` attribute');
+               assert.ok($el.hasClass('placeholder'), '`$el.val("")` should re-enable `placeholder` class');
+
+               // make sure the placeholder property works as expected.
+               assert.strictEqual($el.prop('placeholder'), placeholder, '$el.prop(`placeholder`) should return the placeholder value');
+               $el.placeholder('new placeholder');
+               assert.strictEqual(el.getAttribute('placeholder'), 'new placeholder', '$el.placeholder(<string>) should set the placeholder value');
+               assert.strictEqual(el.value, 'new placeholder', '$el.placeholder(<string>) should update the displayed placeholder value');
+               $el.placeholder(placeholder);
+       };
+
+       QUnit.test('emulates placeholder for <input type=text>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-text'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=search>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-search'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=email>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-email'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=url>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-url'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=tel>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#input-type-tel'), assert);
+       });
+
+       QUnit.test('emulates placeholder for <input type=password>', 13, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+
+               var selector = '#input-type-password',
+                       $el = $(selector),
+                       el = $el[0],
+                       placeholder = el.getAttribute('placeholder');
+
+               assert.strictEqual($el.placeholder(), $el, 'should be chainable');
+
+               // Re-select the element, as it gets replaced by another one in some browsers
+               $el = $(selector);
+               el = $el[0];
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+               // test on focus
+               $el.focus();
+
+               // Re-select the element, as it gets replaced by another one in some browsers
+               $el = $(selector);
+               el = $el[0];
+
+               assert.strictEqual(el.value, '', '`value` should be the empty string on focus');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok(!$el.hasClass('placeholder'), 'should not have `placeholder` class on focus');
+
+               // and unfocus (blur) again
+               $el.blur();
+
+               // Re-select the element, as it gets replaced by another one in some browsers
+               $el = $(selector);
+               el = $el[0];
+
+               assert.strictEqual(el.value, placeholder, 'should set `placeholder` text as `value`');
+               assert.strictEqual($el.prop('value'), '', 'propHooks works properly');
+               assert.strictEqual($el.val(), '', 'valHooks works properly');
+               assert.ok($el.hasClass('placeholder'), 'should have `placeholder` class');
+
+       });
+
+       QUnit.test('emulates placeholder for <textarea></textarea>', 22, function(assert) {
+               $('<div>').html(html).appendTo($('#qunit-fixture'));
+               testElement($('#textarea'), assert);
+       });
+
+}(jQuery));
index cb0bf69..aeefd64 100644 (file)
@@ -80,6 +80,7 @@
                ],
                invalid: [
                        '',
+                       ':',
                        '__  __',
                        '  __  ',
                        // Bad characters forbidden regardless of wgLegalTitleChars
                        // purposes it is part of the title
                        repeat( 'x', 252 ) + '.json',
                        // Namespace prefix without actual title
-                       // ':', // bug 54044
                        'Talk:',
                        'Category: ',
                        'Category: #bar'
index 9913f5e..b6a8a46 100644 (file)
 
                assert.throws(
                        function () {
-                               return new mw.Uri( 'foo.com/bar/baz', {
+                               return new mw.Uri( 'example.com/bar/baz', {
                                        strictMode: true
                                } );
                        },
                        'throw error on URI without protocol or // or leading / in strict mode'
                );
 
-               uri = new mw.Uri( 'foo.com/bar/baz', {
+               uri = new mw.Uri( 'example.com/bar/baz', {
                        strictMode: false
                } );
-               assert.equal( uri.toString(), 'http://foo.com/bar/baz', 'normalize URI without protocol or // in loose mode' );
+               assert.equal( uri.toString(), 'http://example.com/bar/baz', 'normalize URI without protocol or // in loose mode' );
        } );
 
        QUnit.test( 'Constructor( Object )', 3, function ( assert ) {
        } );
 
        QUnit.test( '.getQueryString()', 2, function ( assert ) {
-               var uri = new mw.Uri( 'http://www.google.com/?q=uri' );
+               var uri = new mw.Uri( 'http://search.example.com/?q=uri' );
 
                assert.deepEqual(
                        {
                        },
                        {
                                protocol: 'http',
-                               host: 'www.google.com',
+                               host: 'search.example.com',
                                port: undefined,
                                path: '/',
                                query: { q: 'uri' },
                        'basic object properties'
                );
 
-               uri = new mw.Uri( 'https://example.org/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' );
+               uri = new mw.Uri( 'https://example.com/mw/index.php?title=Sandbox/7&other=Sandbox/7&foo' );
                assert.equal(
                        uri.getQueryString(),
                        'title=Sandbox/7&other=Sandbox%2F7&foo',
index 90cd546..6e13e13 100644 (file)
@@ -10,8 +10,7 @@
 
        QUnit.module( 'mediawiki.jqueryMsg', QUnit.newMwEnvironment( {
                setup: function () {
-                       this.orgMwLangauge = mw.language;
-                       mw.language = $.extend( true, {}, this.orgMwLangauge );
+                       this.originalMwLanguage = mw.language;
 
                        // Messages that are reused in multiple tests
                        mw.messages.set( {
@@ -55,7 +54,7 @@
                        } );
                },
                teardown: function () {
-                       mw.language = this.orgMwLangauge;
+                       mw.language = this.originalMwLanguage;
                }
        } ) );
 
index 76f32f7..8fd789a 100644 (file)
@@ -71,7 +71,9 @@
                        'Opera/9.80 (Android; Opera Mini/7.29530/27.1407; U; en) Presto/2.8.119 Version/11.10',
                        // Ovi Browser
                        'Mozilla/5.0 (Series40; NokiaX3-02/05.60; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.2.0.0.6',
-                       'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11'
+                       'Mozilla/5.0 (Series40; Nokia305/05.92; Profile/MIDP-2.1 Configuration/CLDC-1.1) Gecko/20100401 S40OviBrowser/3.7.0.0.11',
+                       // Google Glass
+                       'Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Glass 1 Build/IMM76L; XE11) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30',
                ],
                // No explicit support for or against these browsers, they're
                // given a shot at Grade A at their own risk.